// 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 (
{items.map((item, i) => (
-
→ {item}
))}
);
};
// ---- 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 (
<>
{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')}
);
// ---- 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 (
);
};
window.AbrigoEducacao = AbrigoEducacao;
window.Protecao = Protecao;
window.Conexao = Conexao;
window.Manifesto = Manifesto;
window.Footer = Footer;