EntityRow now owns the avatar card-list row shape
This story extracts one shared EntityRow primitive and
migrates the firm/staff support grant, support roster, grant history,
and activity card-lists onto the table-family chrome from Story-2198.
The lists remain cards, not columnar tables.
What Changed
| Surface | Change |
|---|---|
src/components/shared/entity-row/ |
Added the shared presentational primitive: initials avatar, title, optional subtitle/reason, optional metadata, and trailing action slot. Its stories cover default, action, firm-target, and long content states. |
src/components/support-access/grant-entity-row-list.tsx |
Added one presentational row-list adapter so firm and staff active grant/history panels share the same row implementation while keeping per-surface labels, links, ids, and action slots as config. |
| Firm panels |
firm-active-grants-panel,
firm-grant-history-panel,
firm-csm-roster-panel, and
firm-activity-panel now use
EntityRow with table-family border, header, divider,
hover, and radius tokens.
|
| Staff panels |
active-grants-panel and
recent-grant-history-panel now share the same support
grant row renderer used by the firm panels.
|
Guardrails
Firm grant revoke still uses the existing generated mutation, invalidate/refetch path, typed server field errors, persistent revoke dialog result contract, and success toast. Staff revoke remains the same disabled pending-endpoint button with tooltip. Roster remove still waits for the provided callback and leaves the dialog open on failure.
Visual Evidence
Before screenshots were captured from detached base commit
8804806. After screenshots were captured from this branch
in Storybook on http://127.0.0.1:6006.
Firm active grants
Before
After
Staff active grants
Before
After
Firm grant history
Before
After
Staff recent grant history
Before
After
Firm support roster
Before
After
Firm activity
Before
After
Verification
| Check | Result |
|---|---|
pnpm exec tsc --noEmit |
Passed |
pnpm run lint |
Passed with three existing TanStack Table React Compiler warnings. |
pnpm run test |
Passed: 93 files, 590 tests. |
pnpm run test:storybook |
Passed: 108 files, 384 tests. |