/* global React, ReactDOM, useScrollReveal, useCursorBlob, Navbar, Footer, Home, Services, About, Vision, Team, Careers, Contact, FAQ, Partners, Opportunity, useTweaks, TweaksPanel, TweakSection, TweakRadio, TweakColor, TweakToggle */ const { useState: useStateApp, useEffect: useEffectApp } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "theme": "modern", "accent": "indigo", "motion": true, "cursor": false }/*EDITMODE-END*/; function App() { const initialRoute = typeof window !== "undefined" && window.location.hash === "#opportunity" ? "opportunity" : "home"; const [route, setRoute] = useStateApp(initialRoute); const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); // Listen for hash changes (so #opportunity works mid-session) useEffectApp(() => { const onHash = () => { if (window.location.hash === "#opportunity") setRoute("opportunity"); }; window.addEventListener("hashchange", onHash); return () => window.removeEventListener("hashchange", onHash); }, []); // Apply theme/accent/motion to useEffectApp(() => { document.documentElement.dataset.theme = t.theme; document.documentElement.dataset.accent = t.accent; document.documentElement.dataset.motion = t.motion ? "on" : "off"; }, [t.theme, t.accent, t.motion]); useScrollReveal(); useCursorBlob(); let Page; switch (route) { case "services": Page = Services; break; case "vision": Page = Vision; break; case "about": Page = About; break; case "team": Page = Team; break; case "careers": Page = Careers; break; case "contact": Page = Contact; break; case "faq": Page = FAQ; break; case "partners": Page = Partners; break; case "opportunity": Page = Opportunity; break; default: Page = Home; } return ( <>