// site-app.jsx — Composes the page + wires Tweaks panel.

function App() {
  const [t, setTweak] = useTweaks(window.__TWEAK_DEFAULTS__);

  // Reflect every tweak onto <html data-*> so CSS does the work.
  React.useEffect(() => {
    const html = document.documentElement;
    html.setAttribute('data-theme',    t.theme);
    html.setAttribute('data-display',  t.display);
    html.setAttribute('data-hero',     t.hero);
    html.setAttribute('data-accent',   t.accent);
    html.setAttribute('data-gradient', t.gradient);
  }, [t.theme, t.display, t.hero, t.accent, t.gradient]);

  // Accent color → CSS variable swap (brand-derived options)
  React.useEffect(() => {
    const root = document.documentElement;
    const map = {
      graphite: { warm: '#3F4348', cool: '#3F4348' }, // brand charcoal
      orange:   { warm: '#EE6A3C', cool: '#EE6A3C' }, // evening orange
      blue:     { warm: '#1A4DC9', cool: '#1A4DC9' }, // earth blue
      magenta:  { warm: '#B83ACA', cool: '#B83ACA' }, // evening magenta
      prism:    { warm: '#EE6A3C', cool: '#1A4DC9' }, // brand bookends
    };
    const pick = map[t.accent] || map.prism;
    root.style.setProperty('--accent-warm', pick.warm);
    root.style.setProperty('--accent-cool', pick.cool);
  }, [t.accent]);

  return (
    <React.Fragment>
      <Nav />
      <main>
        <Hero />
        <Platform />
        <Problem />
        <ValueGrid />
        <Workflows />
        <WhyStrata />
        <CTAClose />
      </main>
      <Footer />

      <TweaksPanel title="Tweaks">
        <TweakSection label="Direction" />
        <TweakRadio
          label="Theme"
          value={t.theme}
          options={[
            { value: 'light', label: 'Light' },
            { value: 'dark',  label: 'Dark' },
          ]}
          onChange={(v) => setTweak('theme', v)}
        />

        <TweakSection label="Typography" />
        <TweakRadio
          label="Display"
          value={t.display}
          options={[
            { value: 'sans',  label: 'Sans' },
            { value: 'serif', label: 'Serif' },
          ]}
          onChange={(v) => setTweak('display', v)}
        />

        <TweakSection label="Hero" />
        <TweakSelect
          label="Above-the-fold"
          value={t.hero}
          options={[
            { value: 'text',    label: 'Text-first (restrained)' },
            { value: 'metric',  label: 'Metric tile (Nexus)' },
            { value: 'product', label: 'Product screenshot' },
          ]}
          onChange={(v) => setTweak('hero', v)}
        />

        <TweakSection label="Accent" />
        <TweakColor
          label="Color"
          value={t.accent === 'graphite' ? '#3F4348'
               : t.accent === 'orange'   ? '#EE6A3C'
               : t.accent === 'blue'     ? '#1A4DC9'
               : t.accent === 'magenta'  ? '#B83ACA'
               :                           '#EE6A3C'}
          options={['#3F4348', '#EE6A3C', '#1A4DC9', '#B83ACA']}
          onChange={(v) => {
            const name = v === '#3F4348' ? 'graphite'
                       : v === '#EE6A3C' ? 'orange'
                       : v === '#1A4DC9' ? 'blue'
                       : v === '#B83ACA' ? 'magenta'
                       :                   'prism';
            setTweak('accent', name);
          }}
        />

        <TweakSection label="Gradient" />
        <TweakRadio
          label="Headline accent"
          value={t.gradient}
          options={[
            { value: 'none',    label: 'Off' },
            { value: 'earth',   label: 'Earth' },
            { value: 'evening', label: 'Evening' },
          ]}
          onChange={(v) => setTweak('gradient', v)}
        />
      </TweaksPanel>
    </React.Fragment>
  );
}

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