/* App + Tweaks */

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "heroLayout": "split",
  "displayCase": "uppercase",
  "ctaColor": "red",
  "showHeroArt": true
}/*EDITMODE-END*/;

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

  // Apply tweaks as data attributes on <body> so CSS can react.
  React.useEffect(() => {
    document.body.dataset.heroLayout = t.heroLayout;
    document.body.dataset.displayCase = t.displayCase;
    document.body.dataset.ctaColor = t.ctaColor;
  }, [t]);

  return (
    <>
      <Header activeHref="#top" />
      <Hero variant={t.heroLayout} showArt={t.showHeroArt} />
      <Proof />
      <StorageOptionsPreview />
      <HowItWorks />
      <WhoItsFor />
      <Comparison />
      <Location />
      <FAQ />
      <FinalCTA color={t.ctaColor} />
      <TrustStrip />
      <Footer />

      <TweaksPanel title="Tweaks">
        <TweakSection label="Hero" />
        <TweakRadio
          label="Layout"
          value={t.heroLayout}
          onChange={(v) => setTweak("heroLayout", v)}
          options={[
            { value: "split", label: "Split" },
            { value: "centered", label: "Centered" },
          ]}
        />
        <TweakToggle
          label="Hero illustration"
          value={t.showHeroArt}
          onChange={(v) => setTweak("showHeroArt", v)}
        />
        <TweakSection label="Type" />
        <TweakRadio
          label="Headline case"
          value={t.displayCase}
          onChange={(v) => setTweak("displayCase", v)}
          options={[
            { value: "uppercase", label: "UPPER" },
            { value: "sentence", label: "Sentence" },
          ]}
        />
        <TweakSection label="Final CTA" />
        <TweakRadio
          label="Band colour"
          value={t.ctaColor}
          onChange={(v) => setTweak("ctaColor", v)}
          options={[
            { value: "red", label: "Cartel Red" },
            { value: "navy", label: "Cartel Navy" },
          ]}
        />
      </TweaksPanel>
    </>
  );
}

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