/* ===== Tweaks island — applies live tweaks to the page ===== */
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"accent": "#F89041",
"fontStyle": "bungee",
"visual": "full",
"motion": true,
"parallax": 1
}/*EDITMODE-END*/;
const ACCENT_2 = {
"#F89041": "#4896F3",
"#4896F3": "#F89041",
"#F4A1C2": "#4896F3",
"#95502B": "#F89041",
"#B79BD4": "#F89041"
};
function TweaksApp() {
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
React.useEffect(() => {
const root = document.documentElement;
root.style.setProperty("--accent", t.accent);
root.style.setProperty("--accent-2", ACCENT_2[t.accent] || "#4896F3");
}, [t.accent]);
React.useEffect(() => {
document.body.setAttribute("data-font", t.fontStyle);
}, [t.fontStyle]);
React.useEffect(() => {
// hide floating decor in minimal mode
document.querySelectorAll(".decor").forEach((d) => {
d.style.display = t.visual === "minimal" ? "none" : "";
});
}, [t.visual]);
React.useEffect(() => {
document.documentElement.setAttribute("data-reduce", t.motion ? "0" : "1");
}, [t.motion]);
React.useEffect(() => {
document.documentElement.style.setProperty("--float-speed", t.motion ? t.parallax : 0.0001);
}, [t.parallax, t.motion]);
return (
setTweak("accent", v)}
/>
setTweak("fontStyle", v)}
/>
setTweak("visual", v)}
/>
setTweak("motion", v)}
/>
setTweak("parallax", v)}
/>
);
}
ReactDOM.createRoot(document.getElementById("tweaks-root")).render();