import { Suspense, type ReactNode } from "react"; import { createBrowserRouter, createRoutesFromElements, Navigate, Outlet, Route } from "react-router-dom"; import { AuthProvider } from "../auth/AuthContext"; import { getManagementRoutePermissions } from "../features/navigation/managementRoutes"; import { RoutePageFallback } from "../components/common/RoutePageFallback"; import { UnsavedChangesProvider } from "../components/common/UnsavedChangesGuard"; import { AppShellLayout } from "../layouts/AppShellLayout"; import { AuthLayout } from "../layouts/AuthLayout"; import { BudgetsPage } from "../pages/BudgetsPage"; import { ChangePasswordPage } from "../pages/ChangePasswordPage"; import { DashboardPage } from "../pages/DashboardPage"; import { ForbiddenPage } from "../pages/ForbiddenPage"; import { ForgotPasswordPage } from "../pages/ForgotPasswordPage"; import { LoginPage } from "../pages/LoginPage"; import { NotFoundPage } from "../pages/NotFoundPage"; import { ProfilePage } from "../pages/ProfilePage"; import { ApOperationsPage, ApprovalRulesPage, AnnouncementsPage, AttendancePage, AssetCreatePage, AssetDetailPage, AssetRegistryPage, AuditLogsPage, CutoverConsolePage, EmployeeProfilePage, DelegationsPage, DepartmentsPage, ExpenseStandardsPage, FeatureFlagsPage, InventoryChecksPage, InvoicePoolPage, LeaveRequestPage, MasterDataPage, MobileApprovalsPage, MobileWorkflowTaskRoutePage, MobileAssetScanPage, MobileCapturePage, MobileLeavePage, MobileMePage, MobileNotificationsPage, MobilePortalPage, MobileProfilePage, MobilePurchaseRequestDetailPage, MobilePurchaseRequestsPage, MobileReimbursementDetailPage, MobileReimbursementsPage, NotificationChannelsPage, NotificationsPage, OrganizationPage, PayrollPage, PerformancePage, PaymentBatchesPage, PaymentAccountsPage, PeoplePage, PeopleStatsPage, PortalAnnouncementsPage, PortalHomePage, ProjectsPage, ProjectDetailPage, ContractsRegistryPage, ContractRegistryCreatePage, ContractRegistryDetailPage, SystemSettingsPage, TeamPresencePage, TodosPage, PurchaseRequestsPage, PurchaseRequestDetailPage, ReimbursementDetailPage, ReimbursementDashboardPage, ReimbursementPrintPage, ReimbursementTemplatesPage, ReimbursementsPage, TravelRequestsPage, UserManagementPage, WecomApprovalArchivePage, WeeklyReportsPage, WorkspaceSetupPage, WorkflowDefinitionsPage, WorkflowTaskRoutePage, WorkflowTasksPage, } from "./lazy"; import { GuestOnly, RequireAuth, RequireBusinessApprover, RequirePermission } from "./guards"; function withRouteFallback(node: ReactNode) { return }>{node}; } function RouterRoot() { return ( ); } const routeElements = ( }> } > } /> } > } /> } > } /> } > } /> )} /> )} /> )} /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> )} /> )} /> } /> } /> )} /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> )} /> {withRouteFallback()} } /> )} /> )} /> )} /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> )} /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> {withRouteFallback()} } /> } /> } /> } /> ); export const appRouter = createBrowserRouter(createRoutesFromElements(routeElements));