// XBD Collective — main app const { useState: useStateA, useEffect: useEffectA, useMemo: useMemoA } = React; function Nav({ route, onNavigate, t, lang, onLang, ar }) { const F = window.XBD.firm; const [time, setTime] = useStateA(""); useEffectA(() => { const fmt = () => { const now = new Date(); // Dubai = UTC+4 const utc = now.getTime() + now.getTimezoneOffset() * 60000; const dxb = new Date(utc + 4 * 3600 * 1000); const hh = String(dxb.getHours()).padStart(2, "0"); const mm = String(dxb.getMinutes()).padStart(2, "0"); setTime(`${hh}:${mm} GST`); }; fmt(); const id = setInterval(fmt, 30000); return () => clearInterval(id); }, []); const langs = [ { id: "en", label: "EN" }, { id: "ar", label: "ع" }, { id: "ru", label: "RU" }, { id: "zh", label: "中" } ]; const links = [ { id: "projects", label: t.nav.projects, num: "01" }, { id: "services", label: t.nav.services || "Services", num: "02" }, { id: "studio", label: t.nav.studio, num: "03" }, { id: "contact", label: t.nav.contact, num: "04" } ]; return ( ); } function App() { const defaults = window.__TWEAK_DEFAULTS; const [tw, setTweak] = useTweaks(defaults); const [route, setRoute] = useStateA("home"); const [project, setProject] = useStateA(null); const [routeMeta, setRouteMeta] = useStateA(null); const lang = tw.lang || "en"; const t = window.XBD.i18n[lang] || window.XBD.i18n.en; const ar = lang === "ar"; // Apply dir + surface globally useEffectA(() => { document.documentElement.setAttribute("dir", t.dir); document.documentElement.setAttribute("lang", lang); document.body.setAttribute("data-surface", tw.surface || "noir"); // Accent color const accents = { brass: "#B08D57", clay: "#B5613A", sage: "#6F8268" }; document.documentElement.style.setProperty("--accent", accents[tw.accent || "brass"]); }, [lang, tw.surface, tw.accent, t.dir]); // Scroll to top on route change useEffectA(() => { window.scrollTo({ top: 0, behavior: "instant" }); }, [route, project?.slug]); function navigate(to, meta) { if (to === "home") { setRoute("home"); setProject(null); setRouteMeta(null); return; } if (to === "projects") { setRoute("projects"); setProject(null); setRouteMeta(meta || null); return; } if (to === "case-study") { setRoute("case-study"); return; } setRoute(to); setProject(null); setRouteMeta(meta || null); } function openProject(p) { setProject(p); setRoute("case-study"); } const navProps = { route, onNavigate: navigate, t, lang, onLang: (l) => setTweak("lang", l), ar }; return (
); } // Mount const root = ReactDOM.createRoot(document.getElementById("root")); root.render();