/* global React, ReactDOM */
/* global VolHeader, Hero, Showreel, Gallery, StudioTrack, CreatorTrack, WhyVolograms, FinalCTA, VolFooter */
/* global useTweaks, TweaksPanel, TweakSection, TweakRadio, TweakToggle, TweakSlider */

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "heroVariant": "split",
  "gradient": "rhythmic",
  "motion": "subtle",
  "accent": "grad",
  "font": "montserrat",
  "gallery": "bento"
}/*EDITMODE-END*/;

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

  // Reflect tweaks onto <body> data-attrs so CSS can react
  React.useEffect(() => {
    const body = document.body;
    body.dataset.motion   = t.motion;
    body.dataset.grad     = t.gradient;
    body.dataset.accent   = t.accent;
    body.dataset.font     = t.font;
    body.dataset.gallery  = t.gallery;
    body.dataset.hero     = t.heroVariant;
  }, [t.motion, t.gradient, t.accent, t.font, t.gallery, t.heroVariant]);

  return (
    <div data-screen-label="01 Home">
      <VolHeader/>
      <main>
        <Hero accent={t.accent} motion={t.motion} variant={t.heroVariant}/>
        <Showreel/>
        <Gallery layout={t.gallery}/>
        <StudioTrack/>
        <CreatorTrack/>
        <WhyVolograms/>
        <FinalCTA/>
      </main>
      <VolFooter/>

      <TweaksPanel title="Tweaks">
        <TweakSection label="Hero"/>
        <TweakRadio label="Variant"
          value={t.heroVariant}
          options={["split", "centered", "overlay"]}
          onChange={(v) => setTweak("heroVariant", v)}/>

        <TweakSection label="Visuals"/>
        <TweakRadio label="Gradient"
          value={t.gradient}
          options={["restrained", "rhythmic", "bold"]}
          onChange={(v) => setTweak("gradient", v)}/>
        <TweakRadio label="Accent style"
          value={t.accent}
          options={["grad", "pink", "off"]}
          onChange={(v) => setTweak("accent", v)}/>

        <TweakSection label="Motion"/>
        <TweakRadio label="Level"
          value={t.motion}
          options={["off", "subtle", "lively"]}
          onChange={(v) => setTweak("motion", v)}/>

        <TweakSection label="Typography"/>
        <TweakRadio label="Display face"
          value={t.font}
          options={["montserrat", "sora", "space-grotesk", "general-sans"]}
          onChange={(v) => setTweak("font", v)}/>

        <TweakSection label="Gallery"/>
        <TweakRadio label="Layout"
          value={t.gallery}
          options={["bento", "grid", "scroll"]}
          onChange={(v) => setTweak("gallery", v)}/>
      </TweaksPanel>
    </div>
  );
}

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