/* global React, ReactDOM, HV */
/* eslint-disable */

const { useState, useEffect } = React;

const DEFAULTS = /*EDITMODE-BEGIN*/{
  "layout": "B",
  "theme": "light",
  "density": "comfortable"
}/*EDITMODE-END*/;

function App() {
  const [tweaks, setTweak] = window.useTweaks(DEFAULTS);

  // sync theme to <html> for CSS variables
  useEffect(() => {
    document.documentElement.dataset.theme = tweaks.theme;
  }, [tweaks.theme]);

  const onThemeToggle = () => setTweak('theme', tweaks.theme === 'dark' ? 'light' : 'dark');

  const Layout = tweaks.layout === 'B' ? window.HV.LayoutB
                : tweaks.layout === 'C' ? window.HV.LayoutC
                : window.HV.LayoutA;

  return (
    <>
      <Layout
        theme={tweaks.theme}
        onThemeToggle={onThemeToggle}
        density={tweaks.density}
      />
      <window.TweaksPanel title="Tweaks">
        <window.TweakSection label="レイアウト" />
        <window.TweakRadio
          label="サイド配置"
          value={tweaks.layout}
          options={[
            { value: 'B', label: 'B ドック ★' },
            { value: 'A', label: 'A 平面図' },
            { value: 'C', label: 'C 没入' },
          ]}
          onChange={v => setTweak('layout', v)}
        />
        <window.TweakSection label="テーマ" />
        <window.TweakRadio
          label="モード"
          value={tweaks.theme}
          options={[
            { value: 'light', label: 'ライト' },
            { value: 'dark',  label: 'ダーク' },
          ]}
          onChange={v => setTweak('theme', v)}
        />
        <window.TweakRadio
          label="密度"
          value={tweaks.density}
          options={[
            { value: 'comfortable', label: 'ゆったり' },
            { value: 'compact',     label: '高密度' },
          ]}
          onChange={v => setTweak('density', v)}
        />
      </window.TweaksPanel>
    </>
  );
}

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