Skip to content

♻️ Redesign member forms, dev portfolios, and coffee chat bingo - #1229

Open
clementroze wants to merge 12 commits into
clement-idol-redesign-1from
clement-idol-redesign-2
Open

clementroze wants to merge 12 commits into
clement-idol-redesign-1from
clement-idol-redesign-2

Conversation

@clementroze

@clementroze clementroze commented Nov 7, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Stacked on #1228. This PR targets clement-idol-redesign-1 and contains the next layer of the IDOL redesign.

  • Redesign the member-facing Team Event Credits, Shoutouts, Coffee Chats, and Dev Portfolio flows, including submission forms, history, detail views, and relevant modals. ADMIN side is not touched (yet)!!
  • Add the interactive 3D coffee chat bingo board alongside the standard board.
  • Add a reusable design-system table with sorting, horizontal scrolling, and loading/error/empty states.
  • Improve route-aware breadcrumbs (ie: Forms > Dev Porfolio > Portfolio implemented new login sequence with backend auth and sessioning #5), show the member’s profile photo in the sidebar, fix the blank combobox row, and refine shared modal behavior.
  • NOTE: there are a few API file changes, but it primarily is for reusing the existing backend endpoints and submission models, with frontend error handling for failed requests.

Pics

X Pic
Shoutouts Screenshot 2026-11-07 at 12 11 32 AM
TEC Screenshot 2026-11-07 at 12 11 32 AM
Dev portfolio Screenshot 2026-11-07 at 12 11 46 AM
Coffee chat normal Screenshot 2026-11-07 at 12 11 52 AM
3d coffee chat board Screenshot 2026-11-07 at 12 11 57 AM

Notion/Figma Link

IDOL redesign — Dev Portfolio reference

Notes

@clementroze
clementroze requested a review from a team as a code owner November 7, 2026 05:08
@coderabbitai

coderabbitai Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: QUIET
  • Plan: Advanced
  • Run ID: a1bde74c-2399-4ca6-9530-d8dfa7e918bb

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@dti-github-bot

Copy link
Copy Markdown
Member

[diff-counting] Significant lines: 5591. This diff might be too big! Developer leads are invited to review the code.

return;
}
await APIWrapper.delete(`${backendURL}/coffee-chat/${uuid}`);
const res = await APIWrapper.delete(`${backendURL}/coffee-chat/${uuid}`);

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is for checking the delete response so a failed request shows an error instead of removing the coffee chat from the UI

Comment on lines +38 to +40
if (options?.throwOnError && (!val || val.error)) {
throw new Error(val?.error || 'Could not load shoutouts.');
}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

optional error throwing so that new UI can show retry state instead of empty result

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these files (and the next few after) are just to update the breadcrumbs path in the header correctly, cuz sometimes they're a bit wack (wrong parent, wrong child, etc.)

Comment on lines +72 to +73
<BaseCombobox.Empty>
<span className={inputStyles.emptyMessage}>No matches found.</span>

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is to fix the black space at the top bug like this:

Image

Comment on lines +54 to +59
<Dialog.Popup
{...popupProps}
id={id}
className={styles.modal}
style={width ? { width } : undefined}
>

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for dynamically sized modals

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shoutout card!
Image

Comment on lines +414 to +428
<aside className={styles.periods} aria-label="Credit periods">
{tecDeadlines.map((deadline, index) => (
<Card
key={deadline.toISOString()}
header={index === period ? 'Current' : ['Past', 'Upcoming'][Number(index > period)]}
>
<h2 className={styles.periodTitle}>Period {index + 1}</h2>
<p>
Ends:{' '}
{deadline.toLocaleDateString('en-US', {
weekday: 'short',
month: 'short',
day: 'numeric',
timeZone: 'UTC'
})}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moved these cards from above the form (like in the figma originally) to the side on the right after feedback from design crit that it was taking up too much space

Image

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks like this -

Image


type Route = { label: string; parent?: string };

/** Navigation hierarchy is explicit because several detail URLs are siblings of their list. */

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

honestly this is just hardcoding the paths but i think if we have a better sidebar hierarchy/organization, eventually will become more intuitive

const { enabled, setEnabled } = usePreviewToggle();
const [minimized, setMinimized] = useState(false);
const [hasInstance, setHasInstance] = useState(false);
const [profilePhoto, setProfilePhoto] = useState<string>();

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

now sidebar can show the pfp! yay

Image

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants