/* eslint-disable no-undef */ /* ────────────────────────────────────────────────────────────────────── App — routing + Tweaks panel wiring. ────────────────────────────────────────────────────────────────────── */ const { useState: uSA, useEffect: uEA } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "red-orange", "showWhatsApp": true, "heroLayout": "split", "density": "comfortable" }/*EDITMODE-END*/; function App() { const [route, setRoute] = uSA("home"); const [locale, setLocale] = uSA("en"); const [consultOpen, setConsultOpen] = uSA(false); const [consultPrefill, setConsultPrefill] = uSA({}); const [t, setTweak] = window.useTweaks ? window.useTweaks(TWEAK_DEFAULTS) : [TWEAK_DEFAULTS, () => {}]; /* RTL switch */ uEA(() => { const dir = locale === "ar" ? "rtl" : "ltr"; document.documentElement.setAttribute("dir", dir); document.documentElement.setAttribute("lang", locale); }, [locale]); /* Scroll to top on route change */ uEA(() => { window.scrollTo({ top: 0, behavior: "auto" }); }, [route]); /* Inject brand accent override */ uEA(() => { const palettes = { "red-orange": { red: "#FE294D", orange: "#FD6611" }, "indigo": { red: "#4F46E5", orange: "#7C3AED" }, "emerald": { red: "#0F8B66", orange: "#10B981" }, }; const p = palettes[t.accent] || palettes["red-orange"]; document.documentElement.style.setProperty("--vz-red", p.red); document.documentElement.style.setProperty("--vz-orange", p.orange); document.documentElement.style.setProperty("--vz-grad", `linear-gradient(110deg, ${p.red} 0%, ${p.orange} 100%)`); }, [t.accent]); /* Expose nav globally so footer/logo/breadcrumbs can use it */ window.__vzNav = setRoute; const nav = (r) => setRoute(r); const openConsult = (prefill = {}) => { setConsultPrefill(prefill); setConsultOpen(true); }; const isDarkNav = false; // route === "home" let page; if (route === "home") page = ; else if (route === "services") page = ; else if (route.startsWith("service:")) page = ; else if (route === "jurisdictions") page = ; else if (route === "calculator") page = ; else if (route === "golden-visa") page = ; else if (route === "resources") page = ; else if (route === "about") page = ; else if (route === "contact") page = ; else page = ; return (
openConsult({})} dark={isDarkNav} />
{page}
{t.showWhatsApp && } openConsult({})} /> setConsultOpen(false)} prefill={consultPrefill} /> {/* Tweaks panel */} {window.TweaksPanel && ( setTweak("accent", v)} /> setTweak("density", v)} /> setTweak("showWhatsApp", v)} /> {[["home","Home"],["services","Services hub"],["jurisdictions","Jurisdictions"],["calculator","Cost estimator"],["golden-visa","Golden Visa"],["resources","Resources"],["about","About"],["contact","Contact"]].map(([r, lab]) => ( nav(r)} label={lab} /> ))} )}
); } ReactDOM.createRoot(document.getElementById("root")).render();