// app.jsx — root + tweaks
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"fonts": "instrument",
"hero": "title-card",
"accent": "gold"
}/*EDITMODE-END*/;
function App() {
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
React.useEffect(() => {
document.body.dataset.fonts = t.fonts;
document.body.dataset.accent = t.accent;
}, [t.fonts, t.accent]);
// intersection-reveal
React.useEffect(() => {
const els = document.querySelectorAll('.reveal');
const io = new IntersectionObserver((entries) => {
entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('in'); });
}, { threshold: 0.12, rootMargin: '0px 0px -60px 0px' });
els.forEach(el => io.observe(el));
return () => io.disconnect();
}, [t.hero, t.fonts]);
return (
<>
setTweak('fonts', v)}
/>
>
);
}
ReactDOM.createRoot(document.getElementById('root')).render();