Files
box-box/frontend/src/router.tsx

61 lines
1.6 KiB
TypeScript
Raw Normal View History

2026-05-25 10:29:31 -04:00
import { createRootRoute, createRoute, createRouter, Outlet } from '@tanstack/react-router'
2026-05-25 01:10:44 -04:00
import { Nav } from './components/Nav'
2026-05-25 10:29:31 -04:00
import { CommandCenterPage } from './pages/CommandCenterPage'
2026-05-25 01:10:44 -04:00
import { RaceHubPage } from './pages/RaceHubPage'
2026-05-25 02:45:02 -04:00
import { DataLibraryPage } from './pages/DataLibraryPage'
2026-05-25 02:56:06 -04:00
import { LiveTimingPage } from './pages/LiveTimingPage'
2026-05-25 01:10:44 -04:00
type RaceHubSearch = {
session_key?: number
}
const rootRoute = createRootRoute({
component: () => (
<>
<Nav />
<Outlet />
</>
),
})
2026-05-25 10:29:31 -04:00
export const commandCenterRoute = createRoute({
2026-05-25 01:10:44 -04:00
getParentRoute: () => rootRoute,
path: '/',
2026-05-25 10:29:31 -04:00
component: CommandCenterPage,
2026-05-25 01:10:44 -04:00
})
export const raceHubRoute = createRoute({
getParentRoute: () => rootRoute,
path: '/race-hub',
validateSearch: (search: Record<string, unknown>): RaceHubSearch => {
const sessionKey = Number(search.session_key)
return Number.isFinite(sessionKey) && sessionKey > 0 ? { session_key: sessionKey } : {}
},
component: function RaceHubRoute() {
const { session_key } = raceHubRoute.useSearch()
return <RaceHubPage sessionKey={session_key ?? 0} />
},
})
2026-05-25 02:45:02 -04:00
export const dataLibraryRoute = createRoute({
getParentRoute: () => rootRoute,
path: '/data-library',
component: DataLibraryPage,
})
2026-05-25 02:56:06 -04:00
export const liveTimingRoute = createRoute({
getParentRoute: () => rootRoute,
path: '/live',
component: LiveTimingPage,
})
2026-05-25 10:29:31 -04:00
const routeTree = rootRoute.addChildren([commandCenterRoute, raceHubRoute, dataLibraryRoute, liveTimingRoute])
2026-05-25 01:10:44 -04:00
export const router = createRouter({ routeTree })
declare module '@tanstack/react-router' {
interface Register {
router: typeof router
}
}