/* ============================================================ ROOT — router, role guards, boot skeleton ============================================================ */ window.LOGO='assets/bhf-logomark.png'; const {useState:useStateR,useEffect:useEffectR}=React; const ALLOWED={ partner:['dashboard','submit','success','requests','detail'], reviewer:['queue','detail'], admin:['dashboard','requests','queue','detail','partners','users','reports','audit'], founder:['dashboard','requests','detail','partners','users','reports','audit','settings'], }; function Router(){ const {me,route,go}=window.useStore(); const [booting,setBooting]=useStateR(true); useEffectR(()=>{ const t=setTimeout(()=>setBooting(false),550); return ()=>clearTimeout(t); },[]); if(!me) return ; let screen=route.screen; if(screen==='dashboard'&&me.role==='reviewer') screen='queue'; const title = screen==='detail' ? (route.id||'Request') : screen==='requests' ? (me.role==='partner'?'My Requests':'All Requests') : window.SHELL_TITLES[screen]||'BHF Hub'; let Body; if(!ALLOWED[me.role].includes(screen)) Body=()=>; else switch(screen){ case 'dashboard': Body=(me.role==='partner')?window.PartnerDashboard:window.AdminDashboard; break; case 'submit': Body=window.SubmitPatient; break; case 'success': Body=window.SubmitSuccess; break; case 'requests': Body=()=> ; break; case 'detail': Body=window.RequestDetail; break; case 'queue': Body=window.ReviewerQueue; break; case 'partners': Body=window.PartnerMgmt; break; case 'users': Body=window.UserMgmt; break; case 'reports': Body=window.Reports; break; case 'audit': Body=window.AuditLog; break; case 'settings': Body=window.Settings; break; default: Body=()=>; } return {booting ?
{[0,1,2,3].map(i=>
)}
: } ; } function App(){ return ; } ReactDOM.createRoot(document.getElementById('root')).render();