// SEEbalance · Main app

function App() {
  const [lang, setLang] = React.useState(window.SEE_DEFAULT_LANG || "de");
  const [scrolled, setScrolled] = React.useState(false);

  // Scroll detection for sticky nav style change
  React.useEffect(() => {
    const onScroll = () => setScrolled(window.scrollY > 24);
    onScroll();
    window.addEventListener("scroll", onScroll, { passive: true });
    return () => window.removeEventListener("scroll", onScroll);
  }, []);

  // Smooth-scroll for all hash links
  React.useEffect(() => {
    const onClick = (e) => {
      const a = e.target.closest('a[href^="#"]');
      if (!a) return;
      const href = a.getAttribute("href");
      if (!href || href === "#" || href.length < 2) return;
      const el = document.getElementById(href.slice(1));
      if (!el) return;
      e.preventDefault();
      const top = el.getBoundingClientRect().top + window.scrollY - 72;
      window.scrollTo({ top, behavior: "smooth" });
      history.replaceState(null, "", href);
    };
    document.addEventListener("click", onClick);
    return () => document.removeEventListener("click", onClick);
  }, []);

  // Sync lang attribute on <html>
  React.useEffect(() => {
    document.documentElement.lang = lang;
  }, [lang]);

  return (
    <>
      <Nav lang={lang} setLang={setLang} scrolled={scrolled} />
      <main>
        <Hero lang={lang} />
        <About lang={lang} />
        <Gallery lang={lang} />
        <Amenities lang={lang} />
        <Location lang={lang} />
        <Booking lang={lang} />
        <Reviews lang={lang} />
        <FAQ lang={lang} />
        <Guides lang={lang} />
      </main>
      <Footer lang={lang} />
    </>
  );
}

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