// app.jsx — Root App with cart state + Tweaks integration
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/ {
palette: 'Emerald & Gold',
displayFont: 'Cormorant Garamond',
uiFont: 'Inter',
density: 'regular',
marquee: true,
spinSeal: true,
}; /*EDITMODE-END*/
const PALETTES = {
'Emerald & Gold': {
emerald: '#0E3D2E',
emeraldDeep: '#082A1F',
gold: '#C9A47A',
goldDeep: '#A8855A',
goldSoft: '#E3CDAE',
ivory: '#FBF8F3',
pearl: '#F4EEE4',
paper: '#EFE7D8',
},
'Pearl & Champagne': {
emerald: '#5A4A3A',
emeraldDeep: '#2E2620',
gold: '#C9A461',
goldDeep: '#A8855A',
goldSoft: '#EBDABE',
ivory: '#FBF7F2',
pearl: '#F2E9DC',
paper: '#E8DCC8',
},
'Rose & Nude': {
emerald: '#7A4E5A',
emeraldDeep: '#3F2630',
gold: '#C99488',
goldDeep: '#A8746A',
goldSoft: '#E8C7BE',
ivory: '#FCF6F3',
pearl: '#F4E4DD',
paper: '#E8D2C8',
},
'Onyx & Gold': {
emerald: '#1B1B18',
emeraldDeep: '#0C0C0A',
gold: '#C9A47A',
goldDeep: '#A8855A',
goldSoft: '#E3CDAE',
ivory: '#F8F4EC',
pearl: '#EAE2D2',
paper: '#DDD2BE',
},
};
function App() {
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
// Apply palette + fonts as CSS vars
React.useEffect(() => {
const p = PALETTES[t.palette] || PALETTES['Emerald & Gold'];
const r = document.documentElement;
r.style.setProperty('--emerald', p.emerald);
r.style.setProperty('--emerald-deep', p.emeraldDeep);
r.style.setProperty('--gold', p.gold);
r.style.setProperty('--gold-deep', p.goldDeep);
r.style.setProperty('--gold-soft', p.goldSoft);
r.style.setProperty('--ivory', p.ivory);
r.style.setProperty('--pearl', p.pearl);
r.style.setProperty('--paper', p.paper);
r.style.setProperty('--f-display', `"${t.displayFont}", Georgia, serif`);
r.style.setProperty('--f-sans', `"${t.uiFont}", ui-sans-serif, system-ui, sans-serif`);
const dens = t.density === 'compact' ? 92 : t.density === 'comfy' ? 108 : 100;
r.style.setProperty('--section-scale', dens + '%');
}, [t.palette, t.displayFont, t.uiFont, t.density]);
// Marquee + seal animation toggles
React.useEffect(() => {
document.querySelectorAll('.marquee-track').forEach((el) => {
el.style.animationPlayState = t.marquee ? 'running' : 'paused';
});
document.querySelectorAll('.badge-spin svg').forEach((el) => {
el.style.animationPlayState = t.spinSeal ? 'running' : 'paused';
});
}, [t.marquee, t.spinSeal]);
return (
<>
{/* */}
{/* */}
setTweak('palette', v)}
/>
setTweak('displayFont', v)}
/>
setTweak('uiFont', v)}
/>
setTweak('marquee', v)} />
setTweak('spinSeal', v)} />
>
);
}
ReactDOM.createRoot(document.getElementById('root')).render();