/* Mobile app entry — routing, menu state, founder-prompt timer */

const ROUTES = {
  home: HomePage,
  program: ProgramPage,
  divisions: DivisionsPage,
  camp: CampPage,
  scholarship: ScholarshipPage,
  merch: MerchPage,
  sponsors: SponsorsPage,
  about: AboutPage,
  faq: FaqPage,
  register: RegisterPage,
};

function App() {
  // route from URL hash
  const initial = (typeof window !== "undefined" && window.location.hash || "#home").replace("#", "");
  const [route, setRoute] = React.useState(ROUTES[initial] ? initial : "home");
  const [menuOpen, setMenuOpen] = React.useState(false);
  const [promptOpen, setPromptOpen] = React.useState(false);

  // hash sync
  React.useEffect(() => {
    function onHash() {
      const r = (window.location.hash || "#home").replace("#", "");
      setRoute(ROUTES[r] ? r : "home");
      // scroll to top on route change
      window.scrollTo({ top: 0, behavior: "instant" in window ? "instant" : "auto" });
    }
    window.addEventListener("hashchange", onHash);
    return () => window.removeEventListener("hashchange", onHash);
  }, []);

  const go = React.useCallback((id) => {
    setMenuOpen(false);
    if (window.location.hash !== `#${id}`) {
      window.location.hash = id;
    } else {
      window.scrollTo({ top: 0, behavior: "smooth" });
    }
  }, []);

  // first-visit founder prompt — delay ~3.5s, only once per session
  React.useEffect(() => {
    let seen = false;
    try { seen = sessionStorage.getItem("ll_prompt_seen") === "1"; } catch (_) {}
    if (seen) return;
    const t = setTimeout(() => {
      setPromptOpen(true);
      try { sessionStorage.setItem("ll_prompt_seen", "1"); } catch (_) {}
    }, 3500);
    return () => clearTimeout(t);
  }, []);

  // lock body scroll when menu / prompt open
  React.useEffect(() => {
    const locked = menuOpen;
    document.body.style.overflow = locked ? "hidden" : "";
    return () => { document.body.style.overflow = ""; };
  }, [menuOpen]);

  const Page = ROUTES[route] || HomePage;

  return (
    <React.Fragment>
      <TopBar onMenu={() => setMenuOpen(true)} route={route} />

      <div key={route}>
        <Page onGo={go} onOpenPrompt={() => setPromptOpen(true)} />
      </div>

      <BottomCta route={route} onGo={go} />

      <MenuOverlay
        open={menuOpen}
        route={route}
        onGo={go}
        onClose={() => setMenuOpen(false)}
      />

      <FounderPrompt
        open={promptOpen}
        onClose={() => setPromptOpen(false)}
      />
    </React.Fragment>
  );
}

ReactDOM.createRoot(document.getElementById("app")).render(<App />);
