[Story-738] Clerk-direct invitations and unified members list

Story 738Epic 683๐ŸŽฏ Multi-Front OperationsFirm Operations21 files ยท +1327/โˆ’278

PR #165 ยท pramaan-io/pramaan-app ยท merged 2026-05-20

How it flows

sequenceDiagram
  autonumber
  participant admin as Firm Admin
  participant clerk as Clerk (invitations)
  participant bridge as Bridge (members)
  admin->>clerk: list pending invites
  clerk->>admin: pending rows
  admin->>clerk: resend / revoke
  admin->>bridge: reactivate member
  bridge->>admin: member restored

What changed, file by file

Mock firm-members data with a current-time field added so invitation rows render believable timestamps in Storybook stories and unit tests.

New fields: now : Date

What does NOT happen

Admins get resend + revoke
Members see read-only row
Reactivation stays on bridge
Stale invites need an explicit click
Old reactivate endpoint is gone

Files changed (21)

Fileยฑ
src/app/[locale]/(app)/settings/firm/members/actions.ts โ˜…+298 โˆ’61
src/app/[locale]/(app)/settings/firm/members/page.tsx+29 โˆ’11
src/components/settings/members-roles/change-role-dialog.tsx+8 โˆ’16
src/components/settings/members-roles/deactivate-dialog.tsx+7 โˆ’13
src/components/settings/members-roles/invitation-row.stories.tsx+36
src/components/settings/members-roles/invitation-row.tsx โ˜…+122
src/components/settings/members-roles/member-row.tsx+48 โˆ’51
src/components/settings/members-roles/members-roles-content.tsx+75 โˆ’67
src/components/settings/members-roles/members-roles-page.stories.tsx+19 โˆ’8
src/components/settings/members-roles/members-table.stories.tsx+16 โˆ’7
src/components/settings/members-roles/members-table.tsx+51 โˆ’29
src/components/settings/members-roles/presentation.ts โ˜…+85
src/lib/firm-members/format.ts+7 โˆ’10
src/lib/firm-members/gateway.ts+22
src/lib/firm-members/mocks.ts+32 โˆ’1
src/lib/firm-members/unified.ts+26
src/types/firm-invitation.ts+21
tests/unit/firm-members-contract.test.ts+19 โˆ’4
tests/unit/firm-members-unified.test.ts+63
tests/unit/members-actions.test.ts+242
tests/unit/members-roles-content.test.tsx+101