/* HQWS App — router + state */ const APP_TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "lang": "en", "accent": "magenta-amber", "navStyle": "dark" }/*EDITMODE-END*/; function App() { const [tweaks, setTweak] = useTweaks(APP_TWEAK_DEFAULTS); const [route, setRoute] = useState("home"); // "home" | "work" | "capabilities" | "about" | "clients" | "contact" | "case:" const [routeParams, setRouteParams] = useState({}); const [briefOpen, setBriefOpen] = useState(false); const [briefCategory, setBriefCategory] = useState(null); const lang = tweaks.lang || "en"; const setLang = (v) => setTweak("lang", v); // sync direction on lang change useEffect(() => { document.documentElement.lang = lang; document.documentElement.dir = lang === "ar" ? "rtl" : "ltr"; }, [lang]); // sync accent palette useEffect(() => { const r = document.documentElement; if (tweaks.accent === "cyan-amber") { r.style.setProperty("--brand-gradient", "linear-gradient(90deg, #00A4D7 0%, #62B439 40%, #FED200 100%)"); } else if (tweaks.accent === "monotone-amber") { r.style.setProperty("--brand-gradient", "linear-gradient(90deg, #FED200 0%, #ED7408 100%)"); } else { r.style.setProperty("--brand-gradient", "linear-gradient(90deg, #E50284 0%, #E94140 28%, #ED7408 55%, #FED200 100%)"); } }, [tweaks.accent]); function navigate(r, params = {}) { setRoute(r); setRouteParams(params); window.scrollTo({ top: 0, behavior: "instant" }); } function openBrief(category = null) { setBriefCategory(category); setBriefOpen(true); } // page resolution let page; if (route === "home") page = openBrief()} />; else if (route === "work") page = ; else if (route.startsWith("case:")) page = openBrief(cat)} />; else if (route === "capabilities") page = openBrief()} />; else if (route === "about") page = openBrief()} />; else if (route === "clients") page = ; else if (route === "contact") page = openBrief(cat)} />; // home & case-study have dark hero, so nav stays dark const navLight = false; return (
openBrief()} light={navLight} />
{page}
openBrief()} /> openBrief()} lang={lang} /> setBriefOpen(false)} lang={lang} initialCategory={briefCategory} /> setLang(v)} options={[{ label: "EN", value: "en" }, { label: "عربي", value: "ar" }]} /> setTweak("accent", v)} options={[ { label: "Magenta → Amber", value: "magenta-amber", color: ["#E50284", "#ED7408", "#FED200"] }, { label: "Cyan → Amber", value: "cyan-amber", color: ["#00A4D7", "#62B439", "#FED200"] }, { label: "Amber monotone", value: "monotone-amber", color: ["#FED200", "#ED7408"] }, ]} /> navigate("home")} /> navigate("work")} secondary /> navigate("case:dubai-world-cup")} secondary /> navigate("case:queen-elizabeth-state-visit")} secondary /> navigate("capabilities")} secondary /> navigate("about")} secondary /> navigate("clients")} secondary /> navigate("contact")} secondary /> openBrief()} />
); } ReactDOM.createRoot(document.getElementById("root")).render();