import { createBrowserRouter, Navigate } from 'react-router'; import { ProtectedRoute } from './auth/ProtectedRoute'; import { LoginPage } from './auth/LoginPage'; import { OidcCallback } from './auth/OidcCallback'; import { LayoutShell } from './components/LayoutShell'; import { lazy, Suspense } from 'react'; import { Spinner } from '@cameleer/design-system'; const Dashboard = lazy(() => import('./pages/Dashboard/Dashboard')); const ExchangeDetail = lazy(() => import('./pages/ExchangeDetail/ExchangeDetail')); const RoutesMetrics = lazy(() => import('./pages/Routes/RoutesMetrics')); const RouteDetail = lazy(() => import('./pages/Routes/RouteDetail')); const AgentHealth = lazy(() => import('./pages/AgentHealth/AgentHealth')); const AgentInstance = lazy(() => import('./pages/AgentInstance/AgentInstance')); const AdminLayout = lazy(() => import('./pages/Admin/AdminLayout')); const RbacPage = lazy(() => import('./pages/Admin/RbacPage')); const AuditLogPage = lazy(() => import('./pages/Admin/AuditLogPage')); const OidcConfigPage = lazy(() => import('./pages/Admin/OidcConfigPage')); const DatabaseAdminPage = lazy(() => import('./pages/Admin/DatabaseAdminPage')); const OpenSearchAdminPage = lazy(() => import('./pages/Admin/OpenSearchAdminPage')); const SwaggerPage = lazy(() => import('./pages/Swagger/SwaggerPage')); function SuspenseWrapper({ children }: { children: React.ReactNode }) { return ( }> {children} ); } export const router = createBrowserRouter([ { path: '/login', element: }, { path: '/oidc/callback', element: }, { element: , children: [ { element: , children: [ { index: true, element: }, { path: 'apps', element: }, { path: 'apps/:appId', element: }, { path: 'apps/:appId/:routeId', element: }, { path: 'exchanges/:id', element: }, { path: 'routes', element: }, { path: 'routes/:appId', element: }, { path: 'routes/:appId/:routeId', element: }, { path: 'agents', element: }, { path: 'agents/:appId', element: }, { path: 'agents/:appId/:instanceId', element: }, { path: 'admin', element: , children: [ { index: true, element: }, { path: 'rbac', element: }, { path: 'audit', element: }, { path: 'oidc', element: }, { path: 'database', element: }, { path: 'opensearch', element: }, ], }, { path: 'api-docs', element: }, ], }, ], }, ]);