// Main app — wires the router, tweaks, and pages

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "language": "en",
  "palette": "pastel",
  "aesthetic": "crayon"
}/*EDITMODE-END*/;

function App() {
  const [tweaks, setTweak] = useTweaks(TWEAK_DEFAULTS);

  // Apply theme to <html>
  useEffect(() => {
    document.documentElement.setAttribute("data-palette", tweaks.palette);
    document.documentElement.setAttribute("data-aesthetic", tweaks.aesthetic);
  }, [tweaks.palette, tweaks.aesthetic]);

  // Listen for header LanguageToggle events
  useEffect(() => {
    const onSet = (e) => setTweak(e.detail.key, e.detail.value);
    window.addEventListener("pixelcraft:setTweak", onSet);
    return () => window.removeEventListener("pixelcraft:setTweak", onSet);
  }, [setTweak]);

  return (
    <TweaksCtx.Provider value={{ lang: tweaks.language, palette: tweaks.palette, aesthetic: tweaks.aesthetic }}>
      <RouterProvider>
        <DoodleDefs />
        <SiteHeader />
        <Main />
        <SiteFooter />
        <TweaksPanel title="Tweaks">
          <TweakSection label={tweaks.language === "th" ? "ภาษา" : "Language"} />
          <TweakRadio
            label={tweaks.language === "th" ? "ภาษา" : "Language"}
            value={tweaks.language}
            options={["en", "th"]}
            optionLabels={["EN", "ไทย"]}
            onChange={(v) => setTweak("language", v)}
          />
          <TweakSection label={tweaks.language === "th" ? "ธีมสี" : "Color theme"} />
          <TweakRadio
            label={tweaks.language === "th" ? "พาเล็ตต์" : "Palette"}
            value={tweaks.palette}
            options={["sunshine", "pastel", "arcade"]}
            optionLabels={["Sunshine", "Pastel", "Arcade"]}
            onChange={(v) => setTweak("palette", v)}
          />
          <TweakSection label={tweaks.language === "th" ? "ลุค" : "Aesthetic"} />
          <TweakRadio
            label={tweaks.language === "th" ? "สไตล์" : "Style"}
            value={tweaks.aesthetic}
            options={["crayon", "pixel", "flat"]}
            optionLabels={["Crayon", "Pixel", "Flat"]}
            onChange={(v) => setTweak("aesthetic", v)}
          />
        </TweaksPanel>
      </RouterProvider>
    </TweaksCtx.Provider>
  );
}

function Main() {
  const { path } = useRouter();
  const pages = {
    home: window.HomePage,
    about: window.AboutPage,
    games: window.GamesPage,
    cafe: window.CafePage,
    pricing: window.PricingPage,
    faq: window.FAQPage,
    contact: window.ContactPage,
    booking: window.BookingPage,
  };
  const Page = pages[path] || window.HomePage;
  return <main key={path}><Page /></main>;
}

// ============ Boot ============
const rootEl = document.getElementById("root");
ReactDOM.createRoot(rootEl).render(<App />);
