/* Tweaks — aplica variações ao site inteiro via CSS variables + classes */ const { useState, useEffect } = React; const PALETTES = { 'Rosé': { '--accent':'#B8857D','--accent-deep':'#9E6255','--accent-soft':'#D4A5A0','--accent-pale':'#EDE0DA', '--ink':'#3D2A27','--text':'#6B4A45','--text-soft':'#8A6A65','--cream':'#FAF5F2','--alt':'#F5EDE8', '--warm-1':'#F0DED4','--warm-2':'#E8D5C8','--warm-3':'#DEC8BA','--dark-1':'#7A5550','--dark-2':'#6B4A45','--dark-3':'#5C3D38' }, 'Terracota': { '--accent':'#C0846A','--accent-deep':'#A65D3E','--accent-soft':'#D9A98D','--accent-pale':'#EEDDCF', '--ink':'#3A271D','--text':'#6B4A38','--text-soft':'#8A6A55','--cream':'#FBF5EF','--alt':'#F5ECE3', '--warm-1':'#F2E1D2','--warm-2':'#EAD2C0','--warm-3':'#E0C2AC','--dark-1':'#7A4F3C','--dark-2':'#6B4332','--dark-3':'#5C3829' }, 'Malva': { '--accent':'#B083A0','--accent-deep':'#8E5C7C','--accent-soft':'#CBA6BD','--accent-pale':'#E8DCE4', '--ink':'#2F2330','--text':'#5C4655','--text-soft':'#82697A','--cream':'#FAF5F8','--alt':'#F2EAEF', '--warm-1':'#EEDDE6','--warm-2':'#E4CFDA','--warm-3':'#D8BECD','--dark-1':'#6E4F63','--dark-2':'#5F4256','--dark-3':'#503749' }, 'Bordô': { '--accent':'#A56A6A','--accent-deep':'#8A3F45','--accent-soft':'#C99595','--accent-pale':'#E9D8D8', '--ink':'#321E1F','--text':'#5E4040','--text-soft':'#846161','--cream':'#FBF4F3','--alt':'#F3E8E7', '--warm-1':'#EDD8D5','--warm-2':'#E2C5C2','--warm-3':'#D5AEAB','--dark-1':'#6E3F42','--dark-2':'#5E3438','--dark-3':'#4E2A2E' } }; const TYPE_SCALE = { 'Compacto': 0.92, 'Equilibrado': 1, 'Amplo': 1.1 }; const ANIM = { 'Sutil': { dist: '14px', time: '0.7s' }, 'Padrão': { dist: '26px', time: '0.9s' }, 'Expressivo': { dist: '44px', time: '1.15s' } }; const RADIUS = { 'Reto': '0px', 'Suave': '14px' }; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "palette": "Rosé", "sections": "Plano", "typeScale": "Equilibrado", "anim": "Padrão", "corners": "Suave" }/*EDITMODE-END*/; function TweaksApp() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); useEffect(() => { const root = document.documentElement; const pal = PALETTES[t.palette] || PALETTES['Rosé']; Object.entries(pal).forEach(([k, v]) => root.style.setProperty(k, v)); root.style.setProperty('--type-scale', String(TYPE_SCALE[t.typeScale] ?? 1)); const a = ANIM[t.anim] || ANIM['Padrão']; root.style.setProperty('--reveal-dist', a.dist); root.style.setProperty('--reveal-time', a.time); root.style.setProperty('--radius', RADIUS[t.corners] || '0px'); document.body.classList.toggle('flat', t.sections === 'Plano'); }, [t]); return ( [PALETTES[k]['--accent-deep'], PALETTES[k]['--accent'], PALETTES[k]['--accent-pale']])} onChange={(arr) => { const name = Object.keys(PALETTES).find(k => PALETTES[k]['--accent-deep'] === arr[0]); if (name) setTweak('palette', name); }} /> setTweak('palette', v)} /> setTweak('sections', v)} /> setTweak('corners', v)} /> setTweak('typeScale', v)} /> setTweak('anim', v)} /> ); } ReactDOM.createRoot(document.getElementById('tweaks-root')).render();