// app.jsx — root component, tweaks wiring, theme application

const ACCENT_OPTIONS = ["#ffb914", "#ff9f0a", "#0071e3", "#5e5ce6", "#30d158", "#ff375f"];

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

  // Apply theme to <html> + CSS vars
  useEffect(() => {
    const root = document.documentElement;
    root.dataset.mode = t.dark ? "dark" : "light";
    root.dataset.density = t.density || "regular";
    root.style.setProperty("--accent", t.accent);
    // re-derive accent-soft (rgba @ .18) from hex
    root.style.setProperty("--accent-soft", hexToRgba(t.accent, .18));
  }, [t.accent, t.dark, t.density]);

  return (
    <>
      <Nav/>
      <main>
        <Hero variant={t.heroVariant} accent={t.accent}/>
        <Services layout={t.servicesLayout}/>
        <Process/>
        <Work/>
        <About/>
        <Contact/>
      </main>
      <Footer/>

      <TweaksPanel title="Tweaks">
        <TweakSection label="Theme"/>
        <TweakColor label="Accent" value={t.accent}
          options={ACCENT_OPTIONS}
          onChange={(v)=>setTweak("accent", v)}/>
        <TweakToggle label="Dark mode" value={t.dark}
          onChange={(v)=>setTweak("dark", v)}/>

        <TweakSection label="Hero"/>
        <TweakRadio label="Variant" value={t.heroVariant}
          options={["typography","aurora","reel"]}
          onChange={(v)=>setTweak("heroVariant", v)}/>

        <TweakSection label="Services layout"/>
        <TweakRadio label="Layout" value={t.servicesLayout}
          options={["snap","bento","sticky"]}
          onChange={(v)=>setTweak("servicesLayout", v)}/>

        <TweakSection label="Layout"/>
        <TweakRadio label="Density" value={t.density}
          options={["compact","regular","comfy"]}
          onChange={(v)=>setTweak("density", v)}/>
      </TweaksPanel>
    </>
  );
}

function hexToRgba(hex, a) {
  const m = /^#?([0-9a-f]{6})$/i.exec(hex || "");
  if (!m) return `rgba(255,159,10,${a})`;
  const n = parseInt(m[1], 16);
  return `rgba(${(n>>16)&255}, ${(n>>8)&255}, ${n&255}, ${a})`;
}

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