// Eu Faço Parte — Sections part 3: Como fazemos / Como garantimos / CTA / Footer const AbrigoEducacao = () => (
03 · {t('abrigo.eyebrow')}

{ const ph = document.createElement('div'); ph.className = 'ph cf-ph-1'; e.currentTarget.replaceWith(ph); }} />
{t('abrigo.cap')}

{t('abrigo.p1')}

{t('abrigo.p2')}

{ const ph = document.createElement('div'); ph.className = 'ph cf-ph-2'; e.currentTarget.replaceWith(ph); }} />
{t('abrigo.cap')}
); // ---- Animated list ---- const ProtList = () => { const [visible, setVisible] = React.useState(false); const ref = React.useRef(null); const items = [t('protecao.list1'), t('protecao.list2'), t('protecao.list3')]; React.useEffect(() => { const obs = new IntersectionObserver( ([e]) => { if (e.isIntersecting) { setVisible(true); obs.disconnect(); } }, { threshold: 0.4 } ); if (ref.current) obs.observe(ref.current); return () => obs.disconnect(); }, []); return ( ); }; // ---- Proteção e Ressocialização ---- const Protecao = () => (
03.2 · {t('protecao.eyebrow')}

{ const ph = document.createElement('div'); ph.className = 'ph prot-ph'; e.currentTarget.replaceWith(ph); }} />
{t('protecao.cap')}
); // ---- Como garantimos ---- const Conexao = () => (
04 · {t('conexao.eyebrow')}

{ const ph = document.createElement('div'); ph.className = 'ph conex-ph'; e.currentTarget.replaceWith(ph); }} />
{t('conexao.cap')}

{t('conexao.p1')}

{t('newsletter.eyebrow')}

{t('newsletter.body')}

); // ---- Newsletter form ---- const NewsletterForm = () => { const [email, setEmail] = React.useState(''); const [status, setStatus] = React.useState('idle'); const [showModal, setShowModal] = React.useState(false); const handleSubmit = async (e) => { e.preventDefault(); setStatus('sending'); try { const res = await fetch('https://formsubmit.co/ajax/lucas.nadler@eufacoparte.org', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ email, _subject: 'Nova inscrição na Newsletter, Eu Faço Parte', message: `Nova inscrição na newsletter: ${email} (idioma: ${window.LANG})`, _captcha: 'false', }), }); if (res.ok) { setStatus('idle'); setEmail(''); setShowModal(true); } else { setStatus('error'); } } catch { setStatus('error'); } }; return ( <>
setEmail(e.target.value)} required />
{status === 'error' && (

{t('newsletter.error')}

)} {showModal && (
setShowModal(false)} style={{ display: 'flex', zIndex: 1000 }}>
e.stopPropagation()} style={{ maxWidth: '480px', textAlign: 'center', display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '20px' }}> {t('newsletter.ok_eyebrow')}

)} ); }; // ---- Manifesto / CTA strip ---- const Manifesto = () => (
{t('manifesto.eyebrow')}

{t('manifesto.lede')}

{t('manifesto.cta_partner')}

); // ---- Footer ---- const Footer = () => { const [encomenda, setEncomenda] = React.useState(null); const [nome, setNome] = React.useState(''); const [email, setEmail] = React.useState(''); const [mensagem, setMensagem] = React.useState(''); const [status, setStatus] = React.useState('idle'); const [showOk, setShowOk] = React.useState(false); React.useEffect(() => { window.setLojaEncomenda = (name) => setEncomenda(name); return () => { delete window.setLojaEncomenda; }; }, []); const handleSubmit = async (e) => { e.preventDefault(); setStatus('sending'); try { const res = await fetch('https://formsubmit.co/ajax/lucas.nadler@eufacoparte.org', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ nome, email, _subject: encomenda ? `Encomenda: ${encomenda}, Eu Faço Parte` : `Contato (${window.LANG}), Eu Faço Parte`, mensagem: encomenda ? `Produto de interesse: ${encomenda}\n\n${mensagem}` : mensagem, _captcha: 'false', }), }); if (res.ok) { setNome(''); setEmail(''); setMensagem(''); setEncomenda(null); setStatus('idle'); setShowOk(true); } else { setStatus('error'); } } catch { setStatus('error'); } }; // Footer projects list — usa o array já traduzido de sections-2 const projLinks = (window.initiatives && window.initiatives.slice) ? window.initiatives.slice(0, 6) : null; return (