2026-03-19 13:58:42 +01:00
import { A , useNavigate } from '@solidjs/router' ;
2026-03-23 21:13:42 +01:00
import { createMemo , createSignal , onMount } from 'solid-js' ;
2026-03-16 23:20:54 +01:00
import AdminShell from '~/components/AdminShell' ;
2026-03-19 15:29:22 +01:00
import OnboardingManagementTabs from '~/components/admin/OnboardingManagementTabs' ;
2026-03-19 21:05:06 +01:00
import OnboardingFlowBuilder , {
buildStepsFromFields ,
createDefaultFields ,
type OnboardingField ,
} from '~/components/admin/OnboardingFlowBuilder' ;
2026-03-16 23:37:26 +01:00
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
const API = '/api/gateway' ;
2026-03-23 21:13:42 +01:00
const FRONTEND_PREVIEW_BASE = String ( import . meta . env . VITE_FRONTEND_PREVIEW_URL || 'http://localhost:3001' ) . replace ( /\/+$/ , '' ) ;
function normalizeRoleKey ( value : string ) : string {
return String ( value || '' ) . trim ( ) . toUpperCase ( ) . replace ( /[-\s]+/g , '_' ) ;
}
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
2026-03-19 21:05:06 +01:00
export default function NewOnboardingSchemaPage() {
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
const navigate = useNavigate ( ) ;
2026-03-23 21:13:42 +01:00
const [ roleMap , setRoleMap ] = createSignal < Record < string , string > > ( { } ) ;
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
const [ title , setTitle ] = createSignal ( '' ) ;
const [ roleKey , setRoleKey ] = createSignal ( 'company' ) ;
const [ description , setDescription ] = createSignal ( '' ) ;
2026-03-19 21:05:06 +01:00
const [ finalSubmissionMessage , setFinalSubmissionMessage ] = createSignal ( 'Your onboarding has been submitted for review. We will notify you once it is approved.' ) ;
const [ stepCount , setStepCount ] = createSignal ( 2 ) ;
const [ selectedFields , setSelectedFields ] = createSignal < OnboardingField [ ] > ( createDefaultFields ( 'company' ) ) ;
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
const [ saving , setSaving ] = createSignal ( false ) ;
const [ error , setError ] = createSignal ( '' ) ;
2026-03-16 23:20:54 +01:00
2026-03-23 21:13:42 +01:00
onMount ( async ( ) = > {
try {
const res = await fetch ( ` ${ API } /api/admin/roles?audience=EXTERNAL ` ) ;
if ( ! res . ok ) return ;
const payload = await res . json ( ) ;
const rows = Array . isArray ( payload ) ? payload : ( payload . roles || [ ] ) ;
const map : Record < string , string > = { } ;
rows
. filter ( ( item : any ) = > String ( item ? . audience || '' ) . toUpperCase ( ) === 'EXTERNAL' )
. forEach ( ( item : any ) = > {
const key = String ( item ? . key || '' ) . trim ( ) . toUpperCase ( ) ;
if ( ! key ) return ;
map [ key ] = String ( item ? . id || '' ) ;
} ) ;
setRoleMap ( map ) ;
} catch {
setRoleMap ( { } ) ;
}
} ) ;
2026-03-19 21:05:06 +01:00
const payload = createMemo ( ( ) = > ( {
title : title ( ) ,
roleKey : roleKey ( ) ,
description : description ( ) ,
finalSubmissionMessage : finalSubmissionMessage ( ) ,
steps : buildStepsFromFields ( selectedFields ( ) , stepCount ( ) ) ,
} ) ) ;
2026-03-23 21:13:42 +01:00
const livePreviewUrl = createMemo ( ( ) = > {
const role = normalizeRoleKey ( roleKey ( ) ) ;
if ( ! role ) return '' ;
return ` ${ FRONTEND_PREVIEW_BASE } /onboarding? ${ new URLSearchParams ( { roleKey : role } ).toString()} ` ;
} ) ;
2026-03-19 21:05:06 +01:00
const handleChange = ( next : {
title? : string ;
roleKey? : string ;
description? : string ;
finalSubmissionMessage? : string ;
stepCount? : number ;
selectedFields? : OnboardingField [ ] ;
} ) = > {
if ( typeof next . title === 'string' ) setTitle ( next . title ) ;
if ( typeof next . description === 'string' ) setDescription ( next . description ) ;
if ( typeof next . finalSubmissionMessage === 'string' ) setFinalSubmissionMessage ( next . finalSubmissionMessage ) ;
if ( typeof next . stepCount === 'number' ) setStepCount ( next . stepCount ) ;
if ( Array . isArray ( next . selectedFields ) ) setSelectedFields ( next . selectedFields ) ;
if ( typeof next . roleKey === 'string' ) {
setRoleKey ( next . roleKey ) ;
setSelectedFields ( createDefaultFields ( next . roleKey ) ) ;
}
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
} ;
2026-03-19 21:05:06 +01:00
const handleSubmit = async ( ) = > {
2026-03-17 20:48:27 +01:00
try {
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
setSaving ( true ) ;
setError ( '' ) ;
2026-03-23 21:13:42 +01:00
const normalizedRole = normalizeRoleKey ( roleKey ( ) ) ;
const roleId = roleMap ( ) [ normalizedRole ] ;
if ( ! roleId ) {
throw new Error ( 'Please choose a valid role before creating this flow.' ) ;
}
2026-03-19 21:05:06 +01:00
const response = await fetch ( ` ${ API } /api/admin/onboarding-config ` , {
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
method : 'POST' ,
headers : { 'Content-Type' : 'application/json' } ,
2026-03-23 21:13:42 +01:00
body : JSON.stringify ( { role_id : roleId , schema_json : payload ( ) } ) ,
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
} ) ;
2026-03-19 21:05:06 +01:00
const body = await response . json ( ) ;
if ( ! response . ok ) throw new Error ( body ? . message || 'Failed to create onboarding flow' ) ;
2026-03-23 21:13:42 +01:00
navigate ( ` /admin/onboarding-schemas/ ${ body . role_id || roleId } ` ) ;
2026-03-19 21:05:06 +01:00
} catch ( nextError : any ) {
setError ( nextError ? . message || 'Failed to create onboarding flow' ) ;
2026-03-17 20:48:27 +01:00
} finally {
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
setSaving ( false ) ;
2026-03-17 20:48:27 +01:00
}
2026-03-16 23:20:54 +01:00
} ;
return (
< AdminShell >
2026-03-19 15:29:22 +01:00
< OnboardingManagementTabs / >
2026-03-19 13:58:42 +01:00
feat(admin): Phase 0 — Tailwind v4 foundation, shell rewrite, modern dashboard
- Install Tailwind CSS v4 via @tailwindcss/vite; configure vite.config.ts
- Rewrite app.css: Tailwind base, Exo 2 font, brand tokens (orange #fd6216, navy #050026), scrollbar utility; fix @import order
- Rewrite AdminShell.tsx: fixed header, fixed inset body grid (sidebar + main), session check, sub-tab system, logout, admin avatar/name/role
- Rewrite AdminSidebar.tsx: collapsible w-64/w-20, orange active rail + badge/dot, CSS filter for SVG icon tinting, min-h-0 flex fix
- Replace 84 route stub CSS classes (page-title, card, btn, table-wrap, etc.) with Tailwind equivalents via safe class-attr-only regex script
- Rewrite admin dashboard: Lucide icons in colored chip backgrounds, 4-col KPI grid, Control Plane 6-module grid, hover lift animations
- Disable SSR (ssr: false) to fix Vinxi dev manifest error; clear stale .vinxi cache
- Add lucide-solid icon library
- Add scripts/cleanup-css.mjs for class migration
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 23:00:21 +01:00
< div class = "mb-6 flex items-start justify-between gap-4" >
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
< div >
feat(admin): Phase 0 — Tailwind v4 foundation, shell rewrite, modern dashboard
- Install Tailwind CSS v4 via @tailwindcss/vite; configure vite.config.ts
- Rewrite app.css: Tailwind base, Exo 2 font, brand tokens (orange #fd6216, navy #050026), scrollbar utility; fix @import order
- Rewrite AdminShell.tsx: fixed header, fixed inset body grid (sidebar + main), session check, sub-tab system, logout, admin avatar/name/role
- Rewrite AdminSidebar.tsx: collapsible w-64/w-20, orange active rail + badge/dot, CSS filter for SVG icon tinting, min-h-0 flex fix
- Replace 84 route stub CSS classes (page-title, card, btn, table-wrap, etc.) with Tailwind equivalents via safe class-attr-only regex script
- Rewrite admin dashboard: Lucide icons in colored chip backgrounds, 4-col KPI grid, Control Plane 6-module grid, hover lift animations
- Disable SSR (ssr: false) to fix Vinxi dev manifest error; clear stale .vinxi cache
- Add lucide-solid icon library
- Add scripts/cleanup-css.mjs for class migration
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 23:00:21 +01:00
< h1 class = "text-2xl font-bold text-gray-900" > Create Onboarding Flow < / h1 >
< p class = "mt-1 text-sm text-gray-500" > Create one onboarding form at a time . Pick the role , choose the questions , set the steps , and write the final success message . < / p >
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
< / div >
feat(admin): Phase 0 — Tailwind v4 foundation, shell rewrite, modern dashboard
- Install Tailwind CSS v4 via @tailwindcss/vite; configure vite.config.ts
- Rewrite app.css: Tailwind base, Exo 2 font, brand tokens (orange #fd6216, navy #050026), scrollbar utility; fix @import order
- Rewrite AdminShell.tsx: fixed header, fixed inset body grid (sidebar + main), session check, sub-tab system, logout, admin avatar/name/role
- Rewrite AdminSidebar.tsx: collapsible w-64/w-20, orange active rail + badge/dot, CSS filter for SVG icon tinting, min-h-0 flex fix
- Replace 84 route stub CSS classes (page-title, card, btn, table-wrap, etc.) with Tailwind equivalents via safe class-attr-only regex script
- Rewrite admin dashboard: Lucide icons in colored chip backgrounds, 4-col KPI grid, Control Plane 6-module grid, hover lift animations
- Disable SSR (ssr: false) to fix Vinxi dev manifest error; clear stale .vinxi cache
- Add lucide-solid icon library
- Add scripts/cleanup-css.mjs for class migration
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 23:00:21 +01:00
< A class = "inline-flex items-center rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 transition-colors" href = "/admin/onboarding-schemas" > Back to Onboarding Management < / A >
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
< / div >
2026-03-20 15:37:56 +01:00
< div style = "display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:16px" >
feat(admin): Phase 0 — Tailwind v4 foundation, shell rewrite, modern dashboard
- Install Tailwind CSS v4 via @tailwindcss/vite; configure vite.config.ts
- Rewrite app.css: Tailwind base, Exo 2 font, brand tokens (orange #fd6216, navy #050026), scrollbar utility; fix @import order
- Rewrite AdminShell.tsx: fixed header, fixed inset body grid (sidebar + main), session check, sub-tab system, logout, admin avatar/name/role
- Rewrite AdminSidebar.tsx: collapsible w-64/w-20, orange active rail + badge/dot, CSS filter for SVG icon tinting, min-h-0 flex fix
- Replace 84 route stub CSS classes (page-title, card, btn, table-wrap, etc.) with Tailwind equivalents via safe class-attr-only regex script
- Rewrite admin dashboard: Lucide icons in colored chip backgrounds, 4-col KPI grid, Control Plane 6-module grid, hover lift animations
- Disable SSR (ssr: false) to fix Vinxi dev manifest error; clear stale .vinxi cache
- Add lucide-solid icon library
- Add scripts/cleanup-css.mjs for class migration
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 23:00:21 +01:00
< div class = "rounded-xl border border-gray-200 bg-white shadow-sm" > < p class = "kv-label" > Role < / p > < p class = "kv-value" > { roleKey ( ) . replace ( /_/g , ' ' ) . toUpperCase ( ) } < / p > < / div >
< div class = "rounded-xl border border-gray-200 bg-white shadow-sm" > < p class = "kv-label" > Steps < / p > < p class = "kv-value" > { stepCount ( ) } < / p > < / div >
< div class = "rounded-xl border border-gray-200 bg-white shadow-sm" > < p class = "kv-label" > Questions < / p > < p class = "kv-value" > { selectedFields ( ) . length } < / p > < / div >
feat(admin): build complete admin panel with UI parity and search/filter
- Implement all admin management pages (employees, users, jobs, leads, orders, companies, customers, candidates, approval, invoices, reviews, support, KB, pricing, coupons, credits, discounts, tax, reports, ledger)
- Implement 9 professional vertical pages (developers, designers, tutors, video editors, photographers, makeup artists, graphic designers, social media managers, fitness trainers)
- Implement internal/external dashboard and role management with builder UI
- Fix tab styling: replace inline border-bottom styles with admin-tab CSS class across 8+ pages
- Add search/filter functionality to invoice and review pages
- Add toggle status (activate/deactivate) to employees page with PATCH /api/admin/employees/{id}
- Align UI styling with NextJS admin panel for visual parity
- Add stat cards to approval page showing counts by status
- Implement graceful empty states for all list views
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-19 13:04:10 +01:00
< / div >
2026-03-19 21:05:06 +01:00
< OnboardingFlowBuilder
title = { title ( ) }
roleKey = { roleKey ( ) }
description = { description ( ) }
finalSubmissionMessage = { finalSubmissionMessage ( ) }
stepCount = { stepCount ( ) }
selectedFields = { selectedFields ( ) }
saving = { saving ( ) }
error = { error ( ) }
2026-03-23 21:13:42 +01:00
livePreviewUrl = { livePreviewUrl ( ) }
livePreviewHint = "Create page preview uses the role-level runtime onboarding flow. Save the flow first to preview the exact saved flow by schema id."
2026-03-19 21:05:06 +01:00
primaryLabel = "Create Onboarding Flow"
onChange = { handleChange }
onSubmit = { handleSubmit }
/ >
2026-03-16 23:20:54 +01:00
< / AdminShell >
) ;
}