/* global React, ReactDOM, useTweaks, TweaksPanel, TweakSection, TweakRadio, TweakColor */ const { useEffect } = React; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "theme": "cream", "accent": "#E2502B" }/*EDITMODE-END*/; function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); // Apply theme + accent to :root useEffect(() => { document.documentElement.setAttribute("data-theme", t.theme === "cream" ? "" : t.theme); document.documentElement.style.setProperty("--accent", t.accent); // Pick a sensible accent-ink (light for dark accents, dark for light) const lightAccents = ["#F2C94C"]; document.documentElement.style.setProperty( "--accent-ink", lightAccents.includes(t.accent) ? "#16140F" : (t.theme === "ink" ? "#0E0D0B" : "#16140F") ); }, [t.theme, t.accent]); // Scroll reveal useEffect(() => { const io = new IntersectionObserver((entries) => { entries.forEach((e) => e.isIntersecting && e.target.classList.add("in")); }, { threshold: 0.08 }); document.querySelectorAll(".reveal").forEach((el) => io.observe(el)); return () => io.disconnect(); }, []); return ( <>