Admin presentation types now live beside their owning features
This second convergence slice moves frontend-only firm-detail and staff-detail projection shapes out of the global src/types hub and into feature-local homes beside the code that assembles or consumes them.
Firm detail ownership
src/lib/firm-detail/view-models/firm-detail.ts now owns the projection rows consumed by FirmDetailViewModel:
FirmSupportRosterMember, flattened from generatedSupportRosterMember.FirmSupportGrantSummary, projected from generatedGrantListItem.FirmActivityEvent, projected from generatedActivityFeedItem.
The existing FirmDetailViewModel and FirmProvisioningSummaryViewModel names remain unchanged.
Staff detail ownership
src/components/staff/staff-detail-types.ts now owns the staff-detail view-model and projection shapes already consumed by that feature:
StaffDetailResponse,StaffDetailStats,StaffActiveGrant, andStaffGrantHistoryItem.StaffGrantEligibleFirm,StaffGrantRelationship,StaffFirmAssignment, andStaffActivityEvent.- The
supportRosterpresentation casing is preserved exactly; generatedsupport_rosterremains a wire-contract concern.
Compatibility
Direct consumers of the moved symbols now import from the feature-local homes. The temporary @/types barrel still re-exports those moved symbols from their new owners so this slice does not dismantle the hub ahead of Story-1695.
Generated backend contract types remain imported from @/gen/types/*. No generated files, OpenAPI snapshot, pramaan-functions code, pramaan-app code, i18n, or table dependencies changed.
Scope guardrails
No new presentation or generated contract file was created. The staff correction adds one dedicated feature-local type file, src/components/staff/staff-detail-types.ts, so staff-detail-presentation.ts remains a function-only presentation helper.
pramaan-docs ADR-124: instrumentation-exempt. This is type ownership cleanup and adds no executable workflow, route, handler, job, external call, or product-state mutation.
Verification proof
Required local verification: pnpm lint, pnpm exec tsc --noEmit, pnpm test, NEXT_PUBLIC_ENV=local pnpm build, pnpm build-storybook, and git diff --check.
Reference checks: the moved firm projection declarations no longer exist in src/types/firm.ts, and the moved staff-detail declarations no longer exist in src/types/staff.ts. They now resolve from their feature-local homes.