List View
July 6, 2026 · View on GitHub
Canonical "X members / X projects / X orders" page. Stress-tests the full data-table chain — TableToolbar + FilterBar + Table + Pagination — under one shell.
Anatomy
A 1440×900 frame on color/gray/50. Same Header + Sidebar shell as Dashboard / Settings; the main column carries:
- PageHeader (
md) — title "Team members" + description (member count) + actions row (Export ghost + Invite primary). - Table card — single bordered surface (1px gray-200, 12px corner radius) wrapping every table-related block so the toolbar / chips / rows / footer all share one outline:
- TableToolbar — Search (
Search members…), Filters button with badge2, Create button labeled "Invite". - FilterBar — two active chips (
Role: Adminprimary,Status: Activesuccess) + Add filter + Clear all. - Table (
md, selectable) with 4 columns:- Name — Avatar (initials) + name + email stacked.
- Role — plain text.
- Status —
Badgepill with colour mapped to status (Active → success, Pending → warning, Inactive → neutral). - Actions — kebab
⋯icon-only button.
- Pagination footer (
md) — current page 1 of 3, items infoShowing 1–8 of 24.
- TableToolbar — Search (
Composition principles
- Single container, multiple bands. Toolbar / chips / rows / pagination all share a single bordered card so the page reads as one data surface, not four detached strips.
- Status semantics through colour. Pending stays warning yellow; Inactive falls back to neutral; Active is the only "happy" green. Don't overload colour — three states is the cap on a status badge.
- Real Avatar in cells. Even at
xs/smsizes the Avatar component carries the same affordances (initials → image fallback, ring/status options) that the rest of the app uses. - Don't open a modal from a row. Use a kebab to keep row destinations consistent — clicking the row navigates to detail; the kebab is for secondary actions (resend invite, change role, remove).
Where it lives
- Figma:
List Viewframe on the 🖼️ Example Pages page (right ofSettings). - Storybook:
Examples/List View. - Source:
packages/examples/list-view/stories/list-view.stories.ts.