Skip to content

Give Users a directory page and rebuild the admin lists around the table - #767

Merged
InfinityBowman merged 1 commit into
mainfrom
feat/admin-users-directory
Sep 12, 2026
Merged

Give Users a directory page and rebuild the admin lists around the table#767
InfinityBowman merged 1 commit into
mainfrom
feat/admin-users-directory

Conversation

@InfinityBowman

Copy link
Copy Markdown
Owner

What

The admin dashboard was carrying the user directory as a panel beneath the stat cards, so the one table people actually work in was the hardest to reach and the smallest thing on screen. Users now has its own page alongside Organizations and Projects, and all three are rebuilt as list views rather than tables dropped onto a page.

Changes

  • New /admin/users route. The dashboard keeps only the stat row and analytics; the sidebar's Directory group is now Users / Organizations / Projects, and the special case that kept Dashboard lit on user routes is gone.
  • AdminListPage. Title, total row count and filters in one header bar, rows scrolling beneath a pinned table header, paging pinned at the bottom. The document no longer scrolls - only the rows do.
  • AdminDataTable gains a page variant and per-column meta for width and alignment, so the short columns stop handing all their slack to Email and counts line up on their digits.
  • Projects renders the creator it was already fetching and never displaying, linking through to the user page. Removed OrgRow.plan, which the server never returned.
  • Table primitive takes containerClassName. Its internal overflow-x-auto wrapper computes overflow-y: auto, which makes it the sticky ancestor, so the scroll area has to be set there or the sticky header silently does nothing.
  • Two [&:has([role=checkbox])]:pr-0 rewritten canonically as has-[[role=checkbox]]:pr-0.

Verification

Typecheck, lint, format, 308 web tests and the build all pass. The layout was checked in the browser against 100 seeded users, 12 orgs and 22 projects rather than assumed: the document does not scroll, the rows do, and 20 rows are visible at once.

admin-flow.spec.ts follows the route move - back links now assert Back to Users, and the dashboard stat assertions navigate to /admin explicitly.

Not in this PR

Making the org detail page useful (members and projects rows, demoting the billing reconciliation panel out of the landing view) is the follow-up.

https://claude.ai/code/session_01LqxkXwhjRDsJ1N9cBYpU1n

The admin dashboard was carrying the user directory as a panel beneath the
stats, so the one table people actually work in was the hardest to reach and
the smallest thing on screen. Users now has its own page alongside
Organizations and Projects, and all three are built as list views rather than
tables dropped onto a page.

- New /admin/users route; the dashboard keeps only stats and analytics.
- AdminListPage: title, row count and filters in one header bar, rows scrolling
  beneath a pinned table header, paging pinned at the bottom. The document no
  longer scrolls - only the rows do.
- AdminDataTable gains a 'page' variant and column meta for width and
  alignment, so short columns stop giving their slack to Email.
- Projects surfaces the creator it was already fetching and never rendering.
- Table primitive takes containerClassName; its internal overflow-x wrapper is
  the sticky ancestor, so the scroll area has to be set there.

Claude-Session: https://claude.ai/code/session_01LqxkXwhjRDsJ1N9cBYpU1n
@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 36 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: d2acaa6d-80f4-4bdf-914c-6cd60d5431fe

📥 Commits

Reviewing files that changed from the base of the PR and between 491a14f and 0cdc27f.

📒 Files selected for processing (14)
  • packages/web/e2e/admin-flow.spec.ts
  • packages/web/src/components/admin/UserTable.tsx
  • packages/web/src/components/admin/ui/AdminDataTable.tsx
  • packages/web/src/components/admin/ui/AdminListPage.tsx
  • packages/web/src/components/admin/ui/index.ts
  • packages/web/src/components/layout/sidebar/AdminSidebar.tsx
  • packages/web/src/components/ui/table.tsx
  • packages/web/src/routeTree.gen.ts
  • packages/web/src/routes/_app/_protected/admin/billing.ledger.tsx
  • packages/web/src/routes/_app/_protected/admin/index.tsx
  • packages/web/src/routes/_app/_protected/admin/orgs.index.tsx
  • packages/web/src/routes/_app/_protected/admin/projects.index.tsx
  • packages/web/src/routes/_app/_protected/admin/users.$userId.tsx
  • packages/web/src/routes/_app/_protected/admin/users.index.tsx

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

Comment @coderabbitai help to get the list of available commands.

@InfinityBowman
InfinityBowman merged commit 88e6e58 into main Sep 12, 2026
10 checks passed
@InfinityBowman
InfinityBowman deleted the feat/admin-users-directory branch September 12, 2026 20:21
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.

1 participant