/* global React, ReactDOM, useTweaks, TweaksPanel, TweakSection, TweakRadio, TweakToggle, TweakColor */
/* =====================================================================
Tweaks island for Empire Entertainment.
Drives the vanilla page via document attributes + CSS variables so the
on-page controls and the Tweaks panel stay in sync.
===================================================================== */
const _ls = (k, d) => { try { return localStorage.getItem(k) ?? d; } catch (e) { return d; } };
// gold-tone presets → {gold, lite, deep}
const GOLD_PRESETS = {
"#BF9744": { gold: "#BF9744", lite: "#E7CE8F", deep: "#9C7A2E" }, // champagne
"#D4A93A": { gold: "#D4A93A", lite: "#F1D778", deep: "#A9831F" }, // classic gold
"#C28B6B": { gold: "#C28B6B", lite: "#E7C2A8", deep: "#9C6A4D" }, // rosé gold
"#9CA1A6": { gold: "#9CA1A6", lite: "#D9DCDF", deep: "#73787D" }, // silver-forward
};
const ANIM = { "Ruhig": 1.35, "Standard": 1, "Lebhaft": 0.6 };
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"heroVariant": "Standbild",
"dark": false,
"gold": "#BF9744",
"anim": "Standard"
}/*EDITMODE-END*/;
function initFromPage() {
const o = { ...TWEAK_DEFAULTS };
const hv = _ls("ee_hero", "standbild");
o.heroVariant = hv.charAt(0).toUpperCase() + hv.slice(1);
o.dark = _ls("ee_theme", "light") === "dark";
return o;
}
function TweaksApp() {
const [t, setTweak] = useTweaks(initFromPage());
const root = document.documentElement;
React.useEffect(() => {
// theme
const theme = t.dark ? "dark" : "light";
root.setAttribute("data-theme", theme);
try { localStorage.setItem("ee_theme", theme); } catch (e) {}
}, [t.dark]);
React.useEffect(() => {
// hero variant
const v = (t.heroVariant || "Standbild").toLowerCase();
if (window.EE_setHeroVariant) window.EE_setHeroVariant(v);
else { const h = document.querySelector("#hero"); if (h) h.setAttribute("data-variant", v); }
}, [t.heroVariant]);
React.useEffect(() => {
// gold tone
const p = GOLD_PRESETS[t.gold] || GOLD_PRESETS["#BF9744"];
root.style.setProperty("--gold", p.gold);
root.style.setProperty("--gold-lite", p.lite);
root.style.setProperty("--gold-deep", p.deep);
root.style.setProperty("--metal-gold",
`linear-gradient(135deg, ${p.lite} 0%, ${p.gold} 45%, ${p.deep} 55%, ${p.lite} 100%)`);
}, [t.gold]);
React.useEffect(() => {
root.style.setProperty("--anim", String(ANIM[t.anim] ?? 1));
}, [t.anim]);
return (
setTweak("dark", v)} />
setTweak("gold", v)} />
setTweak("heroVariant", v)} />
setTweak("anim", v)} />
);
}
ReactDOM.createRoot(document.getElementById("tweaks-root")).render();