// CAEF — App principal
const PALETTE = {
'--ink': '#14123A',
'--ink-2': '#233269',
'--ink-3': '#3B378B',
'--aqua': '#73CBD5',
'--orange': '#F39215',
'--paper': '#FFFFFF',
'--paper-2': '#F6F7FA',
};
function applyPalette() {
for (const [k, v] of Object.entries(PALETTE))
document.documentElement.style.setProperty(k, v);
}
function SplashScreen() {
const [gone, setGone] = React.useState(false);
React.useEffect(() => {
const t = setTimeout(() => setGone(true), 1300);
return () => clearTimeout(t);
}, []);
if (gone) return null;
return (
);
}
function App() {
const [page, setPage] = React.useState('home');
// Item selecionado pra página de detalhe + de onde veio
const [detalheItem, setDetalheItem] = React.useState(null);
const [voltarPara, setVoltarPara] = React.useState('home');
const abrirDetalhe = React.useCallback((item) => {
setDetalheItem(item);
setVoltarPara(page);
setPage('detalhe');
}, [page]);
// Re-render quando os dados do Supabase chegam
const [dataVer, setDataVer] = React.useState(0);
React.useEffect(() => {
const onReady = () => setDataVer(v => v + 1);
window.addEventListener('caef:data-ready', onReady);
return () => window.removeEventListener('caef:data-ready', onReady);
}, []);
React.useEffect(() => { applyPalette(); }, []);
React.useEffect(() => {
const io = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) { e.target.classList.add('visible'); io.unobserve(e.target); }
});
}, { threshold: 0.12, rootMargin: '0px 0px -40px 0px' });
document.querySelectorAll('.fadein:not(.visible)').forEach(el => io.observe(el));
return () => io.disconnect();
}, [page, dataVer]);
React.useEffect(() => { window.scrollTo({ top: 0, behavior: 'auto' }); }, [page]);
const pages = {
home: ,
producoes: ,
noticias: , // NOVA
indicadores: ,
newsletter: ,
eventos: ,
sobre: ,
contato: ,
detalhe: ,
};
return (
<>
{pages[page]}
>
);
}
ReactDOM.createRoot(document.getElementById('root')).render();