chore(web): people tab as ws-table + drop dead string-built sidebar nav - #801
Conversation
PR #800 replaced AccountLayout/AdminLayout's string-built nav with the ShellSidebar island, leaving initWorkspacesNav, renderSwitcherMenuHtml, renderWorkspaceSectionNavHtml, renderSettingsSubnavHtml, switcherLabel, and shouldShowTriggerBadge with no callers outside their own tests. Delete them plus the DOM glue and tests that existed only for them; the tab definitions, pathname parsing, and membership caches that shell-sidebar-data.ts still consumes stay put.
|
|
Important Review skippedAuto reviews are limited based on label configuration. 🏷️ Required labels (at least one) (2)
🚫 Excluded labels (none allowed) (1)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
uploads-web | 90a248e | Commit Preview URL Branch Preview URL |
Aug 23 2026, 05:12 PM |
The people list was ad-hoc flex rows; every other list on the workspace shell (galleries, admin) is a real table. Rework renderMembersHtml/renderInvitesHtml to emit <tr> rows and add renderPeopleTableHtml — the same .ws-table chrome the galleries tab uses — with Name / Email / Role columns. Members and pending invites share one table; the SSR placeholder mirrors the same chrome so the swap repaints without rearranging. Role cell keeps the existing manage controls (role select + remove, revoke) and their hook classes.
|
Maintained by uploads.sh · add media: |

Summary
Two related cleanups on the workspace shell's people surface after PR #800.
Drop the dead string-built sidebar nav
PR #800 replaced the string-built nav in
AccountLayout/AdminLayoutwith theShellSidebarisland, leaving six exports inapps/web/src/lib/workspaces-nav.tswith no callers outside their own tests:initWorkspacesNavrenderSwitcherMenuHtmlrenderWorkspaceSectionNavHtmlrenderSettingsSubnavHtmlswitcherLabelshouldShowTriggerBadgeVerified via grep that nothing in
apps/web/srcreferences them (the two remaining hits were doc comments, updated here). Deleted them plus the DOM glue that existed only for them (paint,bindSwitcher,paintTriggerBadge,closeMenu,displayName,WorkspacesNavOptions) and their test cases. Kept everythingshell-sidebar-data.tsstill consumes: tab definitions, pathname parsing, path builders, membership/quota caches, andloadWorkspaces.Render the people tab as a real table
The people list was ad-hoc flex rows while every other list on the shell is a table.
renderMembersHtml/renderInvitesHtmlnow emit<tr>rows and a newrenderPeopleTableHtmlwraps them in the same.ws-tablechrome the galleries tab uses, with Name / Email / Role columns. Members and pending invites share one table, the SSR placeholder mirrors the same chrome (no layout jump on hydrate), and the role cell keeps the existing manage controls and hook classes (member-row__role-select,member-row__remove,invite-row__revoke), so the page script is unchanged apart from wrapping rows in the shell.Verification
pnpm --filter @uploads/web exec tsc --noEmitclean