/* global React, ReactDOM */ const { useState, useEffect } = React; // ─────────── Applicant Sidebar ─────────── const ApplicantSidebar = ({ view, setView }) => { const items = [ { k:'dashboard', label:'My application', icon:'grid' }, { k:'intake', label:'Smart intake', icon:'chat', badge:'100%' }, { k:'contradiction', label:'Resolve conflicts', icon:'warn', tone:'warn' }, { k:'checklist', label:'Documents', icon:'folder', badge:'5/7' }, { k:'messages', label:'Messages', icon:'mail', count:1 }, { k:'draft', label:'Draft preview', icon:'doc' }, { k:'final', label:'Final review', icon:'check' }, { k:'delivery', label:'Filing & delivery', icon:'send' }, { k:'audit', label:'My audit log', icon:'clock' }, { k:'retention', label:'Retention & data', icon:'shield' }, ]; return ( ); }; // ─────────── Applicant shell router ─────────── const ApplicantApp = ({ homeNonce }) => { const [view, setView] = useState(() => localStorage.getItem('govease_av') || 'landing'); useEffect(() => { localStorage.setItem('govease_av', view); }, [view]); useEffect(() => { setView('landing'); }, [homeNonce]); // Pre-auth flow if (view === 'landing') return setView(next === 'signup' ? 'lang-signup' : 'lang-signin')}/>; if (view === 'lang-signin') return setView('signin')}/>; if (view === 'lang-signup') return setView('signup')}/>; if (view === 'signin') return setView('mfa')} onForgot={()=>setView('forgot')} onSwitch={(next)=>setView(next)}/>; if (view === 'signup') return setView('mfa')} onSwitch={(next)=>setView(next)}/>; if (view === 'mfa') return setView('consent')}/>; if (view === 'forgot') return setView('signin')} onBack={()=>setView('signin')}/>; if (view === 'consent') return setView('casetype')}/>; if (view === 'casetype') return setView('preflight')}/>; if (view === 'preflight') return setView('intake')}/>; // Authed navigable app return (
{view === 'intake' && setView('contradiction')} onMessages={()=>setView('messages')}/>} {view === 'contradiction' && setView('checklist')} onBack={()=>setView('intake')}/>} {view === 'checklist' && setView('upload')} onDone={()=>setView('dashboard')}/>} {view === 'upload' && setView('review')} onBack={()=>setView('checklist')}/>} {view === 'docupload' && setView('review')} onBack={()=>setView('dashboard')}/>} {view === 'review' && setView('dashboard')} onBack={()=>setView('upload')}/>} {view === 'dashboard' && } {view === 'messages' && setView('dashboard')}/>} {view === 'draft' && setView('final')} onBack={()=>setView('dashboard')}/>} {view === 'final' && setView('delivery')} onBack={()=>setView('draft')}/>} {view === 'delivery' && setView('dashboard')}/>} {view === 'audit' && setView('dashboard')}/>} {view === 'retention' && setView('dashboard')}/>}
); }; // ─────────── Reviewer shell router ─────────── const ReviewerApp = () => { const [view, setView] = useState(() => localStorage.getItem('govease_rv') || 'login'); const [modal, setModal] = useState(null); useEffect(() => { localStorage.setItem('govease_rv', view); }, [view]); if (view === 'login') return setView('queue')}/>; return (
{view === 'queue' && setView('workspace')}/>} {view === 'unassigned' && setView('workspace')}/>} {view === 'waiting' && setView('workspace')}/>} {view === 'escalated' && setView('workspace')}/>} {view === 'workspace' && setView('diff')} onDocReview={()=>setView('docreview')} onAudit={()=>setView('audit')} onRequestInfo={()=>setModal('info')} onApprove={()=>setModal('approve')} onEscalate={()=>setModal('escalate')} />} {view === 'diff' && setView('workspace')}/>} {view === 'docreview' && setView('workspace')}/>} {view === 'audit' && setView('workspace')}/>} {view === 'analytics' && } {modal === 'info' && setModal(null)}/>} {modal === 'approve' && setModal(null)} onDone={()=>{ setModal(null); setView('queue'); }}/>} {modal === 'escalate' && setModal(null)}/>}
); }; // ─────────── Admin shell router ─────────── const AdminApp = () => { const [view, setView] = useState(() => localStorage.getItem('govease_ad') || 'dashboard'); useEffect(() => { localStorage.setItem('govease_ad', view); }, [view]); return (
{view === 'dashboard' && } {view === 'monitoring' && } {view === 'cases' && } {view === 'users' && } {view === 'retention' && } {view === 'consent' && } {view === 'templates' && } {view === 'audit' && } {view === 'ai' && } {view === 'security' && }
); }; // ─────────── Root ─────────── const App = () => { const [tweaks, setTweaksState] = useTweakState(); const [persona, setPersona] = useState(() => localStorage.getItem('govease_persona') || 'applicant'); const [homeNonce, setHomeNonce] = useState(0); const [tweaksOpen, setTweaksOpen] = useState(false); const [editMode, setEditMode] = useState(false); useEffect(() => { localStorage.setItem('govease_persona', persona); }, [persona]); // Tweaks host integration useEffect(() => { const handler = (e) => { if (!e.data || typeof e.data !== 'object') return; if (e.data.type === '__activate_edit_mode') setEditMode(true); if (e.data.type === '__deactivate_edit_mode') setEditMode(false); }; window.addEventListener('message', handler); try { window.parent.postMessage({type: '__edit_mode_available'}, '*'); } catch {} return () => window.removeEventListener('message', handler); }, []); const setTweaks = (patch) => setTweaksState(patch); const goHome = () => { setPersona('applicant'); setHomeNonce(n => n + 1); }; return (
{persona === 'applicant' && } {persona === 'reviewer' && } {persona === 'admin' && } {editMode && ( <>
setTweaksOpen(false)}/> setEditMode(false)}/> )}
); }; ReactDOM.createRoot(document.getElementById('root')).render();