// Root app — routing state + page mounting const { useState: useStateApp, useEffect: useEffectApp } = React; const App = () => { // Route: { name: "home" | "curriculum" | ... | "branch", branchId?: string } const [route, setRoute] = useStateApp({ name: "home" }); const [locale, setLocale] = useStateApp("EN"); const [tour, setTour] = useStateApp({ open: false, branch: "" }); // Scroll to top on route change useEffectApp(() => { window.scrollTo({ top: 0, behavior: "instant" }); }, [route]); const navigate = (name, branchId) => { if (name === "branch") setRoute({ name: "branch", branchId: branchId }); else setRoute({ name }); }; const onBookTour = (presetBranch) => { setTour({ open: true, branch: typeof presetBranch === "string" ? presetBranch : "" }); }; const closeTour = () => setTour({ open: false, branch: "" }); let page = null; switch (route.name) { case "home": page = ; break; case "curriculum": page = ; break; case "programmes": page = ; break; case "facilities": page = ; break; case "branches": page = ; break; case "branch": page = ; break; case "admissions": page = ; break; case "about": page = ; break; case "contact": page = ; break; default: page = ; } const navName = route.name === "branch" ? "branches" : route.name; return ( <>