/* ============================================================ 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;