/* ZM Edits — Tweaks panel
Three expressive controls that reshape the page feel.
Applies changes via CSS custom properties + body classes. */
const {
useTweaks, TweaksPanel, TweakSection, TweakColor, TweakRadio
} = window;
/* Accent palette map — primary, dim, glow rgb */
const ACCENTS = {
"#00E5FF": { dim: "#00B8CC", glow: "0,229,255" }, /* cyan */
"#FF6B35": { dim: "#D44E1C", glow: "255,107,53" }, /* orange */
"#84CC16": { dim: "#5F9A0D", glow: "132,204,22" }, /* lime */
"#C084FC": { dim: "#9333EA", glow: "192,132,252" }, /* violet */
};
function applyAccent(color) {
const p = ACCENTS[color] || ACCENTS["#00E5FF"];
const r = document.documentElement;
r.style.setProperty("--c-accent", color);
r.style.setProperty("--c-accent-2", p.dim);
r.style.setProperty("--accent-data", color);
r.style.setProperty("--accent-data-dim", p.dim);
r.style.setProperty("--glow", `0 0 40px rgba(${p.glow},.28)`);
r.style.setProperty("--glow-soft", `0 0 80px rgba(${p.glow},.14)`);
r.style.setProperty("--glow-cyan", `0 0 16px rgba(${p.glow},.35)`);
}
function applySurface(val) {
document.body.classList.remove("zm-flat", "zm-glass");
if (val === "Épuré") document.body.classList.add("zm-flat");
if (val === "Verre") document.body.classList.add("zm-glass");
}
function applyMotion(val) {
document.body.classList.remove("zm-calm", "zm-intense");
if (val === "Calme") document.body.classList.add("zm-calm");
if (val === "Intense") document.body.classList.add("zm-intense");
}
const DEFAULTS = /*EDITMODE-BEGIN*/{
"accent": "#00E5FF",
"surface": "Studio",
"motion": "Dynamique"
}/*EDITMODE-END*/;
function ZMTweaks() {
const [t, setTweak] = useTweaks(DEFAULTS);
React.useEffect(() => { applyAccent(t.accent); }, [t.accent]);
React.useEffect(() => { applySurface(t.surface); }, [t.surface]);
React.useEffect(() => { applyMotion(t.motion); }, [t.motion]);
return (
setTweak("accent", v)}
/>
setTweak("surface", v)}
/>
setTweak("motion", v)}
/>
);
}
const _root = ReactDOM.createRoot(document.getElementById("zm-tweaks-root"));
_root.render();