/* Tweaks island — applies look-and-feel via CSS variables + <html> data-attrs.
   The OS itself is vanilla JS; this React panel only writes settings. */
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "accent": ["#e0588f", "#f4a3c8", "#3f61a1"],
  "wallpaper": ["#4f74bd", "#29407e"],
  "font": "標準ゴシック",
  "soft": false,
  "boot": true,
  "sfx": true
}/*EDITMODE-END*/;

const FONT_MAP = { "標準ゴシック": "", "ドット風": "dot", "システム": "system" };

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

  React.useEffect(() => {
    const r = document.documentElement;
    const a = t.accent || TWEAK_DEFAULTS.accent;
    r.style.setProperty("--accent-1", a[0]);
    r.style.setProperty("--accent-2", a[1]);
    r.style.setProperty("--accent-solid", a[2]);
    const w = t.wallpaper || TWEAK_DEFAULTS.wallpaper;
    r.style.setProperty("--wall-a", w[0]);
    r.style.setProperty("--wall-b", w[1]);
    r.style.setProperty("--win-radius", t.soft ? "7px" : "0px");
    r.dataset.font = FONT_MAP[t.font] != null ? FONT_MAP[t.font] : "";
    r.dataset.anim = t.boot ? "on" : "off";
    localStorage.setItem("os-sfx", t.sfx ? "on" : "off");
  }, [t]);

  return (
    <TweaksPanel title="Tweaks">
      <TweakSection label="テーマ" />
      <TweakColor label="アクセント配色" value={t.accent}
        options={[
          ["#e0588f", "#f4a3c8", "#3f61a1"],
          ["#1d5fc0", "#4f93e8", "#1d5fc0"],
          ["#7a5cc0", "#a98fe0", "#3f61a1"],
          ["#c05a2a", "#e8924f", "#2f5e9c"],
        ]}
        onChange={(v) => setTweak("accent", v)} />
      <TweakColor label="壁紙の色" value={t.wallpaper}
        options={[
          ["#4f74bd", "#29407e"],
          ["#6fa8b0", "#3f6e74"],
          ["#8fc1e8", "#4f7fb0"],
          ["#6b6f9a", "#3a3c63"],
        ]}
        onChange={(v) => setTweak("wallpaper", v)} />

      <TweakSection label="表示" />
      <TweakRadio label="フォント" value={t.font}
        options={["標準ゴシック", "ドット風", "システム"]}
        onChange={(v) => setTweak("font", v)} />
      <TweakToggle label="ウィンドウの角丸" value={t.soft} onChange={(v) => setTweak("soft", v)} />

      <TweakSection label="サウンド・起動" />
      <TweakToggle label="効果音" value={t.sfx} onChange={(v) => setTweak("sfx", v)} />
      <TweakToggle label="起動アニメーション" value={t.boot} onChange={(v) => setTweak("boot", v)} />
      <TweakButton label="もう一度起動する" onClick={() => window.OS && window.OS.reboot()} />

      <TweakSection label="アイコン" />
      <div style={{ fontSize: 12, lineHeight: 1.6, opacity: 0.75, margin: "0 0 8px" }}>
        各アイコンや起動マークは画像をドロップで差し替えできます。
      </div>
      <TweakButton label="アイコンを初期設定に戻す" onClick={() => window.IconStore && window.IconStore.clearAll()} />
    </TweaksPanel>
  );
}

ReactDOM.createRoot(document.getElementById("tweaks-root")).render(<TweaksApp />);
