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,
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,
WorkflowTaskDetailPage,
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));