// 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 (
<>