/* ============================================================ IBC Labs — App Router ============================================================ */ function parseHash() { let h = window.location.hash.replace(/^#\/?/, ""); return h || "home"; } function App() { const [route, setRoute] = React.useState(parseHash()); React.useEffect(() => { const onHash = () => setRoute(parseHash()); window.addEventListener("hashchange", onHash); return () => window.removeEventListener("hashchange", onHash); }, []); // navigate handler used by all Link components React.useEffect(() => { window.IBC.navigate = (path) => { if (parseHash() === path) { window.scrollTo({ top: 0, behavior: "smooth" }); } else { window.location.hash = "/" + path; } }; }, []); // scroll to top on route change React.useEffect(() => { window.scrollTo({ top: 0 }); }, [route]); const [top, sub] = route.split("/"); let view; switch (top) { case "home": view = ; break; case "about": view = ; break; case "research": view = sub ? : ; break; case "methodologies": view = ; break; case "concepts": view = ; break; case "problem": view = ; break; case "notes": view = ; break; case "contact": view = ; break; default: view = ; } return (
{view}
); } ReactDOM.createRoot(document.getElementById("root")).render();