import { createRootRoute, createRoute, createRouter, Outlet, redirect, } from '@tanstack/react-router' import { useSessionStore } from '@/entities/session' import { BondPage } from '@/pages/bond' import { BrokerAccountOverviewPage } from '@/pages/broker-account' import { BrokerAccountsPage } from '@/pages/broker-accounts' import { BrokerAnalyticsPage } from '@/pages/broker-analytics' import { BrokerEventsPage } from '@/pages/broker-events' import { BrokerOperationsPage } from '@/pages/broker-operations' import { BrokerPositionsPage } from '@/pages/broker-positions' import { HomePage } from '@/pages/home' import { LoginPage } from '@/pages/login' import { PortfolioDetailPage, PortfoliosListPage } from '@/pages/portfolios' import { ProfilePage } from '@/pages/profile' import { RegisterPage } from '@/pages/register' import { ScreenerPage } from '@/pages/screener' import { StockPage } from '@/pages/stock' import { BrokerAccountLayout } from '@/widgets/broker-account-layout' import { AppLayout } from '../layouts/AppLayout' function requireAuth() { if (!useSessionStore.getState().isAuthenticated) { throw redirect({ to: '/login' }) } } const rootRoute = createRootRoute({ component: () => , }) const indexRoute = createRoute({ getParentRoute: () => rootRoute, path: '/', component: HomePage, }) const stockRoute = createRoute({ getParentRoute: () => rootRoute, path: '/stocks/$secid', component: StockPage, }) const bondRoute = createRoute({ getParentRoute: () => rootRoute, path: '/bonds/$secid', component: BondPage, }) const screenerRoute = createRoute({ getParentRoute: () => rootRoute, path: '/screener', component: ScreenerPage, }) const loginRoute = createRoute({ getParentRoute: () => rootRoute, path: '/login', component: LoginPage, }) const registerRoute = createRoute({ getParentRoute: () => rootRoute, path: '/register', component: RegisterPage, }) const profileRoute = createRoute({ getParentRoute: () => rootRoute, path: '/profile', beforeLoad: requireAuth, component: ProfilePage, }) const portfoliosRoute = createRoute({ getParentRoute: () => rootRoute, path: '/portfolios', beforeLoad: requireAuth, component: PortfoliosListPage, }) const portfolioDetailRoute = createRoute({ getParentRoute: () => rootRoute, path: '/portfolios/$id', beforeLoad: requireAuth, component: PortfolioDetailPage, }) const brokerRoute = createRoute({ getParentRoute: () => rootRoute, path: '/broker', beforeLoad: requireAuth, component: BrokerAccountsPage, }) const brokerAccountRoot = createRoute({ getParentRoute: () => rootRoute, path: '/broker/$accountId', beforeLoad: requireAuth, component: () => ( ), }) const brokerAccountIndexRoute = createRoute({ getParentRoute: () => brokerAccountRoot, path: '/', component: BrokerAccountOverviewPage, }) const brokerSharesRoute = createRoute({ getParentRoute: () => brokerAccountRoot, path: '/shares', component: () => , }) const brokerBondsRoute = createRoute({ getParentRoute: () => brokerAccountRoot, path: '/bonds', component: () => , }) const brokerOperationsRoute = createRoute({ getParentRoute: () => brokerAccountRoot, path: '/operations', component: BrokerOperationsPage, }) const brokerEventsRoute = createRoute({ getParentRoute: () => brokerAccountRoot, path: '/events', component: BrokerEventsPage, }) const brokerAnalyticsRoute = createRoute({ getParentRoute: () => brokerAccountRoot, path: '/analytics', component: BrokerAnalyticsPage, }) const routeTree = rootRoute.addChildren([ indexRoute, stockRoute, bondRoute, screenerRoute, loginRoute, registerRoute, profileRoute, portfoliosRoute, portfolioDetailRoute, brokerRoute, brokerAccountRoot.addChildren([ brokerAccountIndexRoute, brokerSharesRoute, brokerBondsRoute, brokerOperationsRoute, brokerEventsRoute, brokerAnalyticsRoute, ]), ]) export const router = createRouter({ routeTree, defaultPreload: 'intent', }) declare module '@tanstack/react-router' { interface Register { router: typeof router } }