/* ============================================================
Main app — Router
============================================================ */
function App() {
const { path } = useHashRoute();
// apply tweak defaults on first mount so SSR-less page picks up data attrs
useEffect(() => {
try {
applyTweaksToDocument(IBD_TWEAK_DEFAULTS);
} catch (e) {}
window.scrollTo(0, 0);
}, [path]);
let page;
if (path === '/' || path === '') page = ;
else if (path === '/sobre') page = ;
else if (path === '/biblioteca') page = ;
else if (path.startsWith('/post/')) page = ;
else if (path.startsWith('/aula/')) page = ;
else if (path === '/cadastro') page = ;
else if (path === '/login') page = ;
else if (path === '/dashboard') page = ;
else if (path === '/ferramentas/black-scholes') page = ;
else if (path === '/ferramentas/payoff') page = ;
else if (path === '/ferramentas/futuros') page = ;
// Placeholders — ferramentas e conteúdos em desenvolvimento (alguns exclusivos a membros)
else if (path === '/ferramentas/backtest') page = (
);
else if (path === '/ferramentas/var') page = (
);
else if (path === '/membros/cursos') page = (
);
else if (path === '/conceitos/glossario') page = (
);
else if (path === '/conceitos/quizzes') page = (
);
else page = ;
return (
{page}
);
}
function NotFoundPage() {
return (
Erro 404
Página não encontrada
O endereço solicitado não existe no acervo do Instituto.
Voltar ao início
);
}
// Wait for ALL component files to load before mounting
function mount() {
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render();
}
window.__ibdMount = mount;