/* global React, ReactDOM, Topbar, Manifesto, Disclaimer, ToolRail, ReasoningPanel, FootStrip, TRACE_WAITING, AskView, SearchView, AdvocateView, RedactView, TimelineView, CasebookView, VoicesView, TweaksPanel, useTweaks, TweakSection, TweakSlider, TweakRadio, TweakToggle, TweakSelect */ const { useState, useEffect, useMemo } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "distress": 0.6, "headline": "twelve", "surface": "light" }/*EDITMODE-END*/; const TOOL_INSTRUMENT = { ask: "ECHR Art. 8 · Barneloven §43", search: "Lovdata + Strasbourg + UNCRC", advocate: "ECHR Art. 8 (partisan)", redact: "GDPR · Personopplysningsloven", timeline: "Pedersen v. Norway pattern", cases: "ECHR Art. 8 · 23 judgments", voices: "Verified testimony · court documents on file", }; function App() { const [tool, setTool] = useState("ask"); const [trace, setTrace] = useState(TRACE_WAITING); const [t, setT] = useTweaks(TWEAK_DEFAULTS); // Apply visual layer to useEffect(() => { const root = document.documentElement; root.style.setProperty("--distress", String(t.distress)); root.classList.toggle("surface-dark", t.surface === "dark"); }, [t.distress, t.surface]); const headline = window.DBN_DATA.headlines[t.headline] || window.DBN_DATA.headlines.twelve; const stats = window.DBN_DATA.stats; // Reset trace when tool changes useEffect(() => { setTrace(TRACE_WAITING); }, [tool]); const view = useMemo(() => { switch (tool) { case "ask": return ; case "search": return ; case "advocate": return ; case "redact": return ; case "timeline": return ; case "cases": return ; case "voices": return ; default: return ; } }, [tool]); return (
{view}
setT("distress", v)} help="0 = somber & restrained · 1 = defiant editorial layout (bigger headline, deeper bleed, larger fold)."/> setT("headline", v)} options={[ { value: "twelve", label: "Twelve minutes" }, { value: "twentythree", label: "Twenty-three violations" }, { value: "members", label: "Numbers · 9,482 / 20,000" }, { value: "compliance", label: "Compliance is love" }, ]}/> setT("surface", v)} options={[ { value: "light", label: "Light" }, { value: "dark", label: "Dark" }, ]}/>
); } ReactDOM.createRoot(document.getElementById("root")).render();