- Add RoleWizard inline to SwitchServicesPage after successful role
registration — same wizard flow as ProfilePage, no separate step
- Pre-fill identity documents (Aadhaar, PAN, selfie, etc.) from the
user's active role profile so they don't re-upload on second role
- Add identity_shared flag to RuntimeOnboardingField for admin-
configurable per-field opt-in; CONVENTION_IDENTITY_FIELD_IDS covers
common IDs without schema changes
- Extract roleKeyToPrefix() into src/lib/role-utils.ts (shared util)
- Fix solid/reactivity: snapshot portfolioForm()/form()/docUrls()
synchronously before the first await in handleSubmit
- Reuse badge (♻ purple) distinguishes pre-filled docs from new uploads;
Change link clears the pre-fill and lets user re-upload
- Pending roles now show 'Under Review' status badge instead of Switch
- ArrowLeft back-button in header exits wizard without full page reload
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The verification review page was rendering hardcoded mock documents and
mock profile data instead of the real API response, so admins never saw
what customers actually submitted. Wires it to the real documents/payload
fields. Also replaces raw UUID displays with the new human-readable
reference_number across verification, support, orders, and users.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- users: wire suspend/block buttons to PATCH /api/admin/users/:id/status
(previously only mutated local state, reverted on refresh); add
load/action error banners instead of silently emptying the table
- [...module]: stop rendering a dead localhost:9201 iframe for legacy
modules when VITE_LEGACY_ADMIN_ORIGIN isn't configured (it never is
in production); show a clear "not available" message instead
- dashboard: surface a banner when /api/admin/dashboard/metrics fails
instead of silently showing "No Data" on every widget
- credit: fix stray extra closing </Show> tag that broke the whole
file's JSX parse; restore missing API/authHeaders module helpers
dropped in a previous refactor (AI Credits handlers referenced them
but they were undefined); replace a dead, broken exportLedgerCsv/
filteredLedger implementation with one matching actual call sites;
fix activeTab type/tab keys so the Balance & Ledger and Platform
Ledger tabs were actually reachable (they compared against 'balance'
/'platform' but the tab buttons only ever set 'ledger')
- roles: surface errors when fetching a role's permissions for edit
fails, instead of silently swallowing them
- runtime-roles: surface fetch/delete errors instead of silently
swallowing them or presenting fallback sample data as if real
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Replace all /api/gateway/* with /api/* to match gateway routing
- Fix AdminShell.tsx: update UGC route to singular and fix logout URL
- Remove Applications and Responses from sidebar (unused)
- Move conflicting route files into folders (company, approval, verification, users, jobs, kb, leads, photographer) as index.tsx to avoid catch-all interference
- Upgrade ProfessionAdminListPage to match Department Management UI:
• Dark headers with white text
• Icons on Sort/Filters/Export buttons
• Pagination UI
• Improved empty state with Create button
• Hover effects and consistent spacing
- Update all pages using ProfessionAdminListPage to benefit from new UI
- Fix jobs admin endpoint to use /api/admin/companies/jobs with auth
- Add authentication headers to jobs and leads fetch calls
These changes unify the API architecture and bring a consistent, professional look to all management tables.
Replace per-page AdminShell wrapping with a single SolidStart layout file
(src/routes/admin.tsx) so the shell mounts once and persists across all
/admin/* navigation — eliminating the sidebar bounce and session re-check
flash that occurred on every page transition.
- Create src/routes/admin.tsx as layout with <Outlet /> for child routes
- Remove <AdminShell> import/wrapper from all 66 route files and 2 shared
components (RoleUserManagementTablePage, UserListPage)
- Fix company.tsx: wrong fetch URL /api/admin/companies → /api/gateway/api/admin/companies
- Add missing auth headers (Authorization Bearer) to company.tsx and users.tsx
- Fix admin/index.tsx API constant from hardcoded localhost:8000 → /api/gateway
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaced 37 files worth of inconsistent inline Tailwind button classes
(mixed font-medium/semibold, px-4/px-6, with/without shadow-sm, inline-flex
variants) with the shared .btn-primary CSS class. Added :disabled state to
.btn-primary in app.css so disabled buttons visually dim consistently.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>