// Daoob AI — top-level app const App = () => { // Read initial page from hash const initialPage = () => { const h = window.location.hash.replace("#", ""); const valid = ["home","map","services","pricing","report","about","dashboard","contact","auth","request","admin"]; return valid.includes(h) ? h : "home"; }; const [page, setPageRaw] = React.useState(initialPage()); const [lang, setLangRaw] = React.useState(() => { // 1) user's last choice 2) WP Customizer default 3) Arabic const themeDefault = (window.DAOOB_THEME && window.DAOOB_THEME.defaultLang) || "ar"; return localStorage.getItem("daoob_lang") || themeDefault; }); const [selectedParcel, setSelectedParcel] = React.useState("RYD-4421-OL"); const [preselectedServices, setPreselectedServices] = React.useState(null); const setPage = (p) => { setPageRaw(p); window.location.hash = p; window.scrollTo({ top: 0, behavior: "instant" }); }; const setLang = (l) => { setLangRaw(l); localStorage.setItem("daoob_lang", l); }; // Sync hash <-> state React.useEffect(() => { const onHash = () => setPageRaw(initialPage()); window.addEventListener("hashchange", onHash); return () => window.removeEventListener("hashchange", onHash); }, []); // Apply lang to html React.useEffect(() => { document.documentElement.lang = lang; document.documentElement.dir = lang === "ar" ? "rtl" : "ltr"; }, [lang]); const t = window.I18N[lang]; let view; switch (page) { case "map": view = ; break; case "services": view = ; break; case "pricing": view = ; break; case "report": view = ; break; case "about": view = ; break; case "dashboard": view = ; break; case "contact": view = ; break; case "auth": view = ; break; case "request": view = ; break; case "admin": view = ; break; case "home": default: view = ; } // Pages that should not have site footer (admin/dashboard/map/auth) const hideFooter = ["map","dashboard","admin","auth","report"].includes(page); // Auth page hides nav const hideNav = page === "auth"; return (
{!hideNav &&
); }; ReactDOM.createRoot(document.getElementById("root")).render();