import type { ReactElement } from 'react'; import { createBrowserRouter, Navigate, Outlet, type RouteObject } from 'react-router-dom'; import { LoginPage } from '@/spa/pages/login'; import { RegisterPage } from '@/spa/pages/register'; import { SsoCallbackPage } from '@/spa/pages/sso-callback'; import { ChatPage } from '@/spa/pages/chat'; import { ChatRouteErrorBoundary } from '@/spa/pages/chat-error-boundary'; import { ProjectDetailPage } from '@/spa/pages/project-detail'; import { ProjectsPage } from '@/spa/pages/projects'; import { ProjectDetailRouteErrorBoundary, ProjectsRouteErrorBoundary, TasksRouteErrorBoundary, } from '@/spa/pages/resource-route-error-boundaries'; import { TasksPage } from '@/spa/pages/tasks'; import { AuthGuard, GuestGuard } from '@/spa/guards'; import { Placeholder } from '@/spa/placeholder'; function GuestLayout(): ReactElement { return (
); } export const routes: RouteObject[] = [ { element: , children: [ { element: , children: [ { path: '/login', element: }, { path: '/register', element: }, { path: '/auth/provider/:provider', element: }, ], }, ], }, { element: , children: [ { path: '/', element: }, { path: '/chat', element: , errorElement: }, { path: '/projects', element: , errorElement: , }, { path: '/projects/:id', element: , errorElement: , }, { path: '/tasks', element: , errorElement: }, { path: '/settings', element: }, { path: '/admin', element: }, ], }, ]; export function createAppRouter(): ReturnType { return createBrowserRouter(routes); }