/* ============================================================
   app.jsx — Top-level App + Tweaks wiring
   ============================================================ */

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "variant": "safe",
  "theme": "light",
  "density": "cozy",
  "lang": "en"
}/*EDITMODE-END*/;

function App() {
  const [tweaks, setTweak] = useTweaks(TWEAK_DEFAULTS);
  const [route, setRoute] = React.useState("home");

  // Apply tweaks to <html> data-attrs so CSS variables flip
  React.useEffect(() => {
    document.documentElement.setAttribute("data-variant", tweaks.variant);
    document.documentElement.setAttribute("data-theme", tweaks.theme);
    document.documentElement.setAttribute("data-density", tweaks.density);
  }, [tweaks.variant, tweaks.theme, tweaks.density]);

  // Re-run lucide whenever something changes
  React.useEffect(() => {
    if (window.lucide) window.lucide.createIcons();
  }, [route, tweaks.lang, tweaks.variant]);

  // Scroll-to-top on route change
  React.useEffect(() => {
    window.scrollTo({ top: 0, behavior: "auto" });
  }, [route]);

  return (
    <>
      <Nav route={route} setRoute={setRoute} lang={tweaks.lang} setLang={(l) => setTweak("lang", l)} />
      {route === "home"      && <Home variant={tweaks.variant} lang={tweaks.lang} setRoute={setRoute} />}
      {route === "expertise" && <ExpertisePage lang={tweaks.lang} setRoute={setRoute} />}
      {route === "contact"   && <ContactPage   lang={tweaks.lang} />}
      {(route === "about" || route === "turquality") && <PlaceholderPage lang={tweaks.lang} route={route} />}
      <Footer lang={tweaks.lang} setRoute={setRoute} />

      <TweaksPanel title="Tweaks">
        <TweakSection label="Direction" />
        <TweakRadio
          label="Variant"
          value={tweaks.variant}
          onChange={(v) => setTweak("variant", v)}
          options={[
            { value: "safe", label: "Safe" },
            { value: "bold", label: "Bold" },
          ]}
        />
        <TweakSelect
          label="Theme"
          value={tweaks.theme}
          onChange={(v) => setTweak("theme", v)}
          options={[
            { value: "light", label: "Light · paper" },
            { value: "navy",  label: "Navy · dark bands" },
            { value: "dark",  label: "Dark · throughout" },
          ]}
        />
        <TweakRadio
          label="Density"
          value={tweaks.density}
          onChange={(v) => setTweak("density", v)}
          options={[
            { value: "compact",  label: "Tight" },
            { value: "cozy",     label: "Cozy" },
            { value: "spacious", label: "Roomy" },
          ]}
        />
        <TweakRadio
          label="Language"
          value={tweaks.lang}
          onChange={(v) => setTweak("lang", v)}
          options={[
            { value: "en", label: "EN" },
            { value: "tr", label: "TR" },
          ]}
        />

        <TweakSection label="Jump to page" />
        <TweakRadio
          label="Route"
          value={route}
          onChange={setRoute}
          options={[
            { value: "home",      label: "Home" },
            { value: "expertise", label: "Work" },
            { value: "contact",   label: "Contact" },
          ]}
        />
      </TweaksPanel>
    </>
  );
}

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