/* global React, ReactDOM, AppShell, FraudConsole, ScaConsole, OrchConsole, SettleConsole, DisputeFlow, CommandPalette, SignerOverlay, AuditorWatermark */
function App() {
const [active, setActive] = React.useState(() => localStorage.getItem("ak.surface") || "fraud");
const [tier, setTier] = React.useState("enterprise");
const [role, setRole] = React.useState("operator");
const [cmdOpen, setCmdOpen] = React.useState(false);
const [signerOpen, setSignerOpen] = React.useState(false);
React.useEffect(() => { localStorage.setItem("ak.surface", active); }, [active]);
// expose signer overlay opener for command palette
React.useEffect(() => { window.__openSignerOverlay = () => setSignerOpen(true); }, []);
// keyboard nav + ⌘K
React.useEffect(() => {
const onKey = e => {
if (e.target.matches("input,textarea,select")) {
if (e.key === "Escape") { e.target.blur(); setCmdOpen(false); }
return;
}
// ⌘K or Ctrl+K
if ((e.metaKey || e.ctrlKey) && e.key === "k") { e.preventDefault(); setCmdOpen(o => !o); return; }
if (e.key === "Escape") { setCmdOpen(false); setSignerOpen(false); return; }
const map = { "1": "fraud", "2": "sca", "3": "orch", "4": "settle", "5": "flow" };
if (map[e.key] && !cmdOpen) setActive(map[e.key]);
};
window.addEventListener("keydown", onKey);
return () => window.removeEventListener("keydown", onKey);
}, [cmdOpen]);
const navAndClose = id => { setActive(id); setCmdOpen(false); };
return (
setCmdOpen(true)}
onSignerClick={() => setSignerOpen(true)}
>
{active === "fraud" && }
{active === "sca" && }
{active === "orch" && }
{active === "settle" && }
{active === "flow" && }
{/* overlays */}
setCmdOpen(false)} onNav={navAndClose}/>
setSignerOpen(false)}/>
{role === "auditor" && }
);
}
ReactDOM.createRoot(document.getElementById("root")).render();