// App principal const { useState, useEffect } = React; const { Nav, Hero, Metrics, NewsTicker, Projects } = window.SC_UI; const { Founder, Books, DonateStrip, Team, Testimonials, JoinForm, Footer, DonateModal } = window.SC_UI_2; const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "lang": "en", "accent": "#8E3544", "paperTone": "white", "showTicker": true, "showDonateStrip": true, "density": "normal" }/*EDITMODE-END*/; function App() { const [tweaks, setTweak] = window.useTweaks(TWEAK_DEFAULTS); const [donateOpen, setDonateOpen] = useState(false); const [donateAmount, setDonateAmount] = useState(null); const lang = tweaks.lang; const setLang = (l) => { const next = l === 'en' ? 'en' : 'pt'; setTweak('lang', next); try { localStorage.setItem('sc-lang', next); } catch (_) {} }; useEffect(() => { try { const saved = localStorage.getItem('sc-lang'); if (saved === 'en' || saved === 'pt') setTweak('lang', saved); } catch (_) {} // eslint-disable-next-line react-hooks/exhaustive-deps }, []); useEffect(() => { document.documentElement.lang = lang === 'en' ? 'en' : 'pt-BR'; if (window.SC_applySeo) window.SC_applySeo('home', lang); }, [lang]); const openDonate = (amount) => { if (amount === 0) { setDonateAmount(0); } else if (amount === 50 || amount === 100 || amount === 150) { setDonateAmount(amount); } else { setDonateAmount(null); } setDonateOpen(true); }; useEffect(() => { const p = new URLSearchParams(window.location.search); const d = p.get('donate'); if (d === 'free' || d === '0') openDonate(0); else if (d && [50, 100, 150].includes(Number(d))) openDonate(Number(d)); }, []); useEffect(() => { document.documentElement.style.setProperty('--accent', tweaks.accent); const tones = { white: { paper: '#ffffff', warm: '#f7f1f2', line: '#ecdfe1', line2: '#d9c5c8' }, warm: { paper: '#fbf6f0', warm: '#f3eadc', line: '#e6dccb', line2: '#d4c5ad' }, cream: { paper: '#fdf8f1', warm: '#f5ecdc', line: '#ead9c0', line2: '#d8c5a5' }, }[tweaks.paperTone] || {}; if (tones.paper) { document.documentElement.style.setProperty('--paper', tones.paper); document.documentElement.style.setProperty('--paper-warm', tones.warm); document.documentElement.style.setProperty('--line', tones.line); document.documentElement.style.setProperty('--line-2', tones.line2); } document.documentElement.style.setProperty('--section-y', tweaks.density === 'tight' ? '64px' : '96px'); }, [tweaks]); // reveal-on-scroll useEffect(() => { const io = new IntersectionObserver(es => { es.forEach(e => { if (e.isIntersecting) e.target.classList.add('in'); }); }, { threshold: 0.12 }); document.querySelectorAll('.reveal').forEach(el => io.observe(el)); return () => io.disconnect(); }, [lang]); return ( <>