// App — top-level router + tweaks panel const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "red", "density": "editorial", "heroMode": "slider", "showDisclosure": true }/*EDITMODE-END*/; function App() { const [route, setRoute] = useState("home"); const [tweaks, setTweak] = window.useTweaks ? window.useTweaks(TWEAK_DEFAULTS) : [TWEAK_DEFAULTS, () => {}]; // Apply tweaks to body data attrs useEffect(() => { document.body.setAttribute("data-accent", tweaks.accent); document.body.setAttribute("data-density", tweaks.density); }, [tweaks.accent, tweaks.density]); // Scroll to top on route change useEffect(() => { window.scrollTo({ top: 0, behavior: "auto" }); }, [route]); const go = useCallback((r) => setRoute(r), []); window.DI_NAV = { go }; let current = "home"; if (route.startsWith("project:")) current = "projects"; else current = route; const T = window; return ( <> {tweaks.showDisclosure && (
Prototype · additive redesign demo · photography rights and named-client trademarks pending confirmation per research/media-manifest.md
)}