// Blink Experience — main app const { useState: useS, useEffect: useE, useCallback: useCB } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "#faed21", "density": "regular", "scrollMarquee": true }/*EDITMODE-END*/; function App() { const [route, setRoute] = useS({ page: "home" }); const [locale, setLocale] = useS("en"); const [briefOpen, setBriefOpen] = useS(false); const [briefCategory, setBriefCategory] = useS(null); const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); // expose go() globally so deep links from inline content work useE(() => { window.go = (r) => { setRoute(r); window.scrollTo({ top: 0, behavior: "instant" }); }; window.openBrief = (cat) => { setBriefCategory(cat || null); setBriefOpen(true); }; }, []); // RTL toggle useE(() => { const html = document.documentElement; if (locale === "ar") { html.setAttribute("dir", "rtl"); html.setAttribute("lang", "ar"); } else { html.setAttribute("dir", "ltr"); html.setAttribute("lang", "en"); } }, [locale]); // Apply tweaks to CSS vars useE(() => { document.documentElement.style.setProperty("--accent", t.accent); // pick contrast — light accents get black text, dark accents get white const dark = ["#0a0a0c", "#16161a"].includes((t.accent || "").toLowerCase()); document.documentElement.style.setProperty("--accent-ink", dark ? "#f6f5ef" : "#0a0a0c"); document.documentElement.style.setProperty("--focus", t.accent); if (t.density === "compact") document.documentElement.style.setProperty("--pad", "clamp(16px, 3vw, 36px)"); else if (t.density === "comfy") document.documentElement.style.setProperty("--pad", "clamp(24px, 5vw, 72px)"); else document.documentElement.style.setProperty("--pad", "clamp(20px, 4vw, 56px)"); }, [t.accent, t.density]); const go = useCB((r) => { setRoute(r); window.scrollTo({ top: 0, behavior: "instant" }); }, []); const page = (() => { switch (route.page) { case "home": return ; case "work": return ; case "case": return ; case "services": return ; case "about": return ; case "contact": return ; default: return ; } })(); return (
); } const root = ReactDOM.createRoot(document.getElementById("root")); root.render();