Members tab marks PRAMAAN staff as staff, not as a warning
The Members panel still uses the standardized DataTable
with Member, Role, Status, and Joined columns. Internal-domain
detection remains in place, but the presentation now matches the
design: a compact gold StatusBadge reading Staff next to
the member name.
Before
A PRAMAAN-domain firm member rendered like an incident: a header
chip said Internal-domain row present, the member name
carried an Internal domain warning label, and the row
received an amber warning tint.
After
The row keeps the same member data and same internal-domain
predicate, but only renders a small amber/gold Staff pill next to
the name. Header chip and row tint are gone.
Design reference
HR-19: no Claude Design URL was provided in this turn, so the
version-controlled design/v1/ fallback was used with the
local attached export at
/Users/am/Downloads/PRAMAAN Firm Record.html. The attached
Members tab shows only the Staff row badge for PRAMAAN staff rows.
Members panel before and after
Before: warning chip, warning label, and amber row tint.
After: only the Staff badge remains on the PRAMAAN-domain row.
Panel states
The Members panel still renders its loading, error, and empty states
through the same component path.
Loading skeleton.
Error alert with table frame preserved.
Empty first-run table state.
Sibling tabs unchanged
The masthead and tab bar still render in Storybook, and the sibling
Overview, Support access, and Billing tab bodies are outside this
change.
Overview tab: masthead, tab bar, stats, timeline, and activity.
Support access tab: roster, active grants, and grant history.
Billing tab: subscription, provisioning, and danger zone.
Implementation notes
FirmMembersRosterPanel keeps using the generated members hook and DataTable.
The internal-domain predicate still calls isEmailOnInternalDomains with DEFAULT_INTERNAL_EMAIL_DOMAINS.
The Staff marker uses the existing StatusBadge with the amber tone and the existing text-[11px] size path.
No backend contracts, generated files, codegen, or tab switcher files changed.
pramaan-docs ADR-124 note: this is presentational rendering of already-fetched data. It adds no route, handler, mutation workflow, external call, queue, job, or state-changing boundary requiring a new manual span.
Verification
pnpm exec tsc --noEmit passed.
pnpm run lint passed with the existing TanStack/React Compiler warnings.
pnpm run test passed: 93 files, 591 tests.
pnpm run test:storybook passed: 111 files, 393 tests.
Focused checks passed for tests/unit/firm-members-roster-panel.test.tsx and Firms/FirmMembersRosterPanel.
Visual evidence was captured from Storybook on http://localhost:6006/; the before image was captured from a temporary pre-change worktree at commit 870479a on port 6007.