// Tweaks island for Faro landing — mutates data attributes + CSS vars on <body>.

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "theme": "light",
  "accent": "blue",
  "heroLayout": "phone-right"
}/*EDITMODE-END*/;

const ACCENT_HEX = {
  blue:   "#3A6385",
  amber:  "#C8A030",
  warm:   "#81553B",
  violet: "#5C5B85",
};
const ACCENT_HEX_DARK = {
  blue:   "#85B9FF",
  amber:  "#FFD567",
  warm:   "#FFB3B1",
  violet: "#C9C7F8",
};

function applyTweaks(t) {
  const body = document.body;
  body.setAttribute('data-theme', t.theme);
  body.setAttribute('data-accent', t.accent);
  body.setAttribute('data-hero-layout', t.heroLayout);
  const root = document.documentElement;
  const map = t.theme === 'dark' ? ACCENT_HEX_DARK : ACCENT_HEX;
  root.style.setProperty('--accent', map[t.accent] || map.blue);
}

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

  React.useEffect(() => { applyTweaks(t); }, [t.theme, t.accent, t.heroLayout]);

  return (
    <TweaksPanel title="Tweaks">
      <TweakSection label="Theme" />
      <TweakRadio
        label="Mode"
        value={t.theme}
        options={['light', 'dark']}
        onChange={(v) => setTweak('theme', v)}
      />
      <TweakColor
        label="Accent"
        value={t.accent}
        options={[
          { value: 'blue',   color: '#3A6385' },
          { value: 'warm',   color: '#81553B' },
          { value: 'amber',  color: '#C8A030' },
          { value: 'violet', color: '#5C5B85' },
        ].map(o => o.color)}
        onChange={(hex) => {
          const name = Object.entries(ACCENT_HEX).find(([k,v]) => v === hex)?.[0] || 'blue';
          setTweak('accent', name);
        }}
      />

      <TweakSection label="Layout" />
      <TweakRadio
        label="Phone"
        value={t.heroLayout}
        options={['phone-right', 'phone-left']}
        onChange={(v) => setTweak('heroLayout', v)}
      />
    </TweaksPanel>
  );
}

const root = ReactDOM.createRoot(document.getElementById('tweaks-root'));
root.render(<FaroTweaks />);
