/* global React */
/* PRIME — Tweaks
   Three expressive axes that reshape the whole site:
   • Mood    — palette + ambient washes (Acid / Concrete / Inferno)
   • Voice   — type pairing personality (Display / Editorial / Brutal)
   • Density — spacing scale + tracking  (Tight / Studio / Roomy)

   Values are written to data-* attributes on <html>; the heavy
   lifting lives in tweaks.css so every component re-themes without
   touching its own JSX.
*/

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "mood": "acid",
  "voice": "display",
  "density": "studio"
}/*EDITMODE-END*/;

function PrimeTweaks() {
  const [t, setTweak] = window.useTweaks(TWEAK_DEFAULTS);

  React.useEffect(() => {
    const root = document.documentElement;
    root.setAttribute('data-mood', t.mood);
    root.setAttribute('data-voice', t.voice);
    root.setAttribute('data-density', t.density);
  }, [t.mood, t.voice, t.density]);

  const { TweaksPanel, TweakSection, TweakRadio } = window;

  return (
    <TweaksPanel title="Tweaks">
      <TweakSection label="Mood" />
      <TweakRadio
        label="Palette"
        value={t.mood}
        options={[
          { value: 'acid',     label: 'Acid' },
          { value: 'concrete', label: 'Concrete' },
          { value: 'inferno',  label: 'Inferno' },
        ]}
        onChange={(v) => setTweak('mood', v)}
      />

      <TweakSection label="Voice" />
      <TweakRadio
        label="Type"
        value={t.voice}
        options={[
          { value: 'display',   label: 'Display' },
          { value: 'editorial', label: 'Editorial' },
          { value: 'brutal',    label: 'Brutal' },
        ]}
        onChange={(v) => setTweak('voice', v)}
      />

      <TweakSection label="Density" />
      <TweakRadio
        label="Spacing"
        value={t.density}
        options={[
          { value: 'tight',  label: 'Tight' },
          { value: 'studio', label: 'Studio' },
          { value: 'roomy',  label: 'Roomy' },
        ]}
        onChange={(v) => setTweak('density', v)}
      />
    </TweaksPanel>
  );
}

window.PrimeTweaks = PrimeTweaks;
