AR register
The AR register is the spine of the supervision regime. It renders at /demo/principal/register and shows every AR the principal firm supervises — fixture-set ARs plus any draft appointments still inside their PS22/11 thirty-day notification window. Filter, search, sort, drill in. Multi-select for bulk actions. Export the result to CSV when an auditor asks. Primary CTA in the header lands you in the appointment wizard.
Live: lending-agent-oversight.vercel.app/demo/principal/register.
What’s on the screen
Section titled “What’s on the screen”A header strip with primary CTA, a filter bar, the table, an empty-state surface when filters return nothing, and a sticky bulk-action bar that appears when one or more rows are selected.
Header
Section titled “Header”- Page title
AR register. - Skin name and rubric code (
Heritage Mortgage Network · MCOB rubric) in muted small caps. - One-line subtitle: “Filter, sort, and drill into any AR. The register the FCA expects you to keep, in a shape that doesn’t go stale.”
- Right-side primary CTA:
+ Appoint a new AR or IARatsize="lg", brand-coloured. Routes to/demo/principal/register/new.
Filter bar
Section titled “Filter bar”A horizontal row of inputs above the table.
- Search. Free-text input (
Search trading name, FRN, city…). Matches trading name, legal name, FRN, and city. Client-side filter applied on every keystroke. - Status. Single-select dropdown: All statuses, Pending appointment, Active, Suspended, Under investigation, Terminated.
- Risk band. Single-select dropdown: All risk bands, Critical, High, Elevated, Moderate, Low.
- Export CSV. Button on the right of the filter bar. Downloads the current filtered set with trading name, FRN, type, status, risk score, last review date, primary contact (production: REP025-staging schema).
A counter line below shows Showing N of M ARs.
Table columns
Section titled “Table columns”| Column | Notes |
|---|---|
| Select | Per-row checkbox. Header carries select-all-visible. Stops row navigation on click. |
| Trading name | Bold; primary-contact name in muted text below. |
| FRN | Tabular-nums monospace, hidden < 640px. “Via principal” for IARs. |
| Type | AR / IAR in uppercase tracked-out. |
| Score | Right-aligned, bold tabular-nums (rounded). |
| Band | RiskBandBadge (severity-coloured chip). |
| Status | Status badge, hidden < 768px. |
| City | Hidden < 1024px. |
| — | Trailing ArrowUpRight icon to signal drill-in affordance. |
Row tinting
Section titled “Row tinting”Rows that need attention carry a 3px left-edge inset box-shadow rail in a semantic colour:
| Status | Rail colour |
|---|---|
pending-appointment | var(--brand-primary) (skin’s brand colour) — makes the freshly-appointed AR unmistakable while in the 30-day window |
under-investigation | var(--destructive) |
suspended, terminated | var(--muted-foreground) |
active | no rail |
The pattern scales to any future status without re-styling the row body. Selection state adds a bg-foreground/[0.04] tint via data-selected="true".
Sort behaviour
Section titled “Sort behaviour”Default sort is two-tier:
pending-appointmentrows float to the top so the freshly-appointed AR is immediately visible.- The rest sort by
riskScoredescending.
Clicking a column header re-sorts on that field (planned). Sort state is not yet URL-encoded; that’s flagged for v2.
Bulk actions
Section titled “Bulk actions”Selecting any rows reveals a sticky black-pill bar centred at the bottom of the viewport, animated in over 220ms (y: 24 → 0, opacity fade). The bar carries:
N selectedcounterSchedule review— opens a modal explaining that a file-review task will be added to the principal-compliance queue for each selected AR, honouring the firm’s review programme rules.Send reminder— opens a modal explaining that a required-action notification will land on each AR’s home surface (in-product action + email in production).Export CSV— opens a modal naming the REP025-staging schema and the columns it produces.×— clear selection.
Each confirmation is a standard Dialog. The action commits, the selection clears, and the bar slides back out. In production each bulk action writes one AuditEvent per AR plus one parent BulkAction event so the trail is reproducible.
Empty states
Section titled “Empty states”The register has two distinct empty states, both anchored in the empty-state component pattern (icon, headline, body copy, CTA):
Filter-empty
Section titled “Filter-empty”Headline: “No ARs match these filters”. Body: “Try clearing the filter or broaden the risk band.” CTA: Clear all filters (secondary). Icon: Search.
Network-empty
Section titled “Network-empty”Reached when no ARs are on the register at all (not possible in shipped fixtures; the production state for a fresh tenant). Headline: “No ARs on the register yet”. Body: “Appoint your first AR or IAR. Companies House, CreditSafe, and the FCA Register will populate the record automatically.” CTA: + Appoint a new AR or IAR (primary). Icon: Plus.
The network-empty state is sales-friendly: it points the reader at the appointment flow and reinforces the auto-enrichment promise.
Responsive behaviour
Section titled “Responsive behaviour”- Mobile (< 640px). Filter bar collapses; FRN, Status, City columns hide. Bulk-action bar centres on the bottom edge with
max-w-[calc(100vw-2rem)]. - Tablet (640-1024px). FRN and Status visible; City hidden.
- Desktop (> 1024px). Full table; max content width 1280px.
Components
Section titled “Components”app/demo/principal/register/page.tsx(page shell with the appointment CTA)components/principal/ar-register-table.tsx(table, filters, bulk action bar, empty states, all in one file)components/principal/risk-band-badge.tsx
How this connects to the rest of the demo
Section titled “How this connects to the rest of the demo”- Click any row to land on AR detail.
- The Critical band filter is one click to reach the highest-risk ARs.
- The KPI tiles on the principal home deep-link into pre-filtered views (e.g. the headline
Open the critical-band cohortlink routes here with?band=critical). - The
+ Appoint a new AR or IARbutton routes into the appointment wizard, which appends apending-appointmentAR to the top of this list on submission. - The Manage AR menu on the AR detail can suspend or terminate the AR, transitioning the row into the destructive or muted rail style.