// app.jsx — Root: router, layout, tweaks
const { useState: useStateApp, useEffect: useEffectApp } = React;
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"role": "manager",
"persona": "jihye",
"phase": "1",
"density": "regular"
}/*EDITMODE-END*/;
function App() {
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
const [route, setRoute] = useStateApp("intake");
const [aboutOpen, setAboutOpen] = useStateApp(false);
const persona = PERSONAS[t.persona] || PERSONAS.jihye;
const role = t.role || "manager";
// Reset route if role doesn't include current screen
useEffectApp(() => {
const allowedGroup = window.NAV_GROUPS.filter(g => g.role.includes(role));
const allowed = allowedGroup.flatMap(g => g.items.map(i => i.id));
if (!allowed.includes(route)) setRoute(allowed[0] || "intake");
}, [role]);
// Esc to close modal
useEffectApp(() => {
if (!aboutOpen) return;
const onKey = (e) => { if (e.key === "Escape") setAboutOpen(false); };
window.addEventListener("keydown", onKey);
return () => window.removeEventListener("keydown", onKey);
}, [aboutOpen]);
const Screen = ({}) => {
switch (route) {
case "intake": return