// Tweaks for Landing A — mounts a React panel that drives the static page imperatively. const { useEffect } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "headerAuth": "Register only", "accent": "#2A5B8C", "aiWidget": "Open" }/*EDITMODE-END*/; const ACCENT_OPTIONS = ["#9D2E2C", "#1F6F6B", "#2A5B8C", "#B7791F"]; function applyTweaks(t) { // --- Header auth buttons --- const login = document.querySelector('[data-auth="login"]'); const register = document.querySelector('[data-auth="register"]'); if (login) login.style.display = (t.headerAuth === "Login + Register") ? "" : "none"; if (register) register.style.display = (t.headerAuth === "None") ? "none" : ""; // --- Accent color --- const a = t.accent; document.documentElement.style.setProperty("--accent", a); document.documentElement.style.setProperty("--accent-ink", a); // Elements that hardcode the accent inline: if (register) { register.style.backgroundColor = a; register.style.borderColor = a; } document.querySelectorAll('.nav .links a.active').forEach(el => el.style.color = a); document.querySelectorAll('.featured').forEach(el => el.style.background = a); document.querySelectorAll('.ai-win .head .av, .bubble.me, .ai-fab').forEach(el => el.style.backgroundColor = a); document.querySelectorAll('.ai-win .input .send').forEach(el => el.style.color = a); // --- AI assistant widget --- const win = document.getElementById('ai-win'); const fab = document.getElementById('ai-fab'); if (win && fab) { if (t.aiWidget === "Open") { win.style.display = "flex"; fab.style.display = "none"; } else if (t.aiWidget === "Collapsed") { win.style.display = "none"; fab.style.display = "grid"; } else { win.style.display = "none"; fab.style.display = "none"; } } } function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); useEffect(() => { applyTweaks(t); }, [t]); return ( setTweak('headerAuth', v)} /> setTweak('accent', v)} /> setTweak('aiWidget', v)} /> ); } ReactDOM.createRoot(document.getElementById('tweaks-root')).render();