import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { LoginPage } from '@/pages/LoginPage' import { AuthBridgePage } from '@/pages/AuthBridgePage' import { DashboardPage } from '@/pages/DashboardPage' import { OnboardingPage } from '@/pages/OnboardingPage' import { SuperAdminDashboardPage } from '@/pages/SuperAdminDashboardPage' import { SuperAdminOrganizationsPage } from '@/pages/SuperAdminOrganizationsPage' import { SuperAdminOrgCreatePage } from '@/pages/SuperAdminOrgCreatePage' import { SuperAdminAuditLogPage } from '@/pages/SuperAdminAuditLogPage' import { SuperAdminSetupPage } from '@/pages/SuperAdminSetupPage' import { SuperAdminSettingsPage } from '@/pages/SuperAdminSettingsPage' import { CountriesPage } from '@/pages/CountriesPage' import { UnitsOfMeasurePage } from '@/pages/UnitsOfMeasurePage' import { SuperAdminUnitsOfMeasurePage } from '@/pages/SuperAdminUnitsOfMeasurePage' import { PriceTypesPage } from '@/pages/PriceTypesPage' import { StoresPage } from '@/pages/StoresPage' import { RetailPointsPage } from '@/pages/RetailPointsPage' import { ProductGroupsPage } from '@/pages/ProductGroupsPage' import { CounterpartiesPage } from '@/pages/CounterpartiesPage' import { ProductsPage } from '@/pages/ProductsPage' import { ProductEditPage } from '@/pages/ProductEditPage' import { MoySkladImportPage } from '@/pages/MoySkladImportPage' import { OrganizationSettingsPage } from '@/pages/OrganizationSettingsPage' import { EmployeesPage } from '@/pages/EmployeesPage' import { EmployeeRolesPage } from '@/pages/EmployeeRolesPage' import { StockPage } from '@/pages/StockPage' import { StockMovementsPage } from '@/pages/StockMovementsPage' import { SuppliesPage } from '@/pages/SuppliesPage' import { SupplyEditPage } from '@/pages/SupplyEditPage' import { EntersPage } from '@/pages/EntersPage' import { EnterEditPage } from '@/pages/EnterEditPage' import { LossesPage } from '@/pages/LossesPage' import { LossEditPage } from '@/pages/LossEditPage' import { TransfersPage } from '@/pages/TransfersPage' import { TransferEditPage } from '@/pages/TransferEditPage' import { InventoriesPage } from '@/pages/InventoriesPage' import { InventoryEditPage } from '@/pages/InventoryEditPage' import { SupplierReturnsPage } from '@/pages/SupplierReturnsPage' import { SupplierReturnEditPage } from '@/pages/SupplierReturnEditPage' import { DemandsPage } from '@/pages/DemandsPage' import { DemandEditPage } from '@/pages/DemandEditPage' import { SalesReportPage } from '@/pages/SalesReportPage' import { StockReportPage } from '@/pages/StockReportPage' import { ProfitReportPage } from '@/pages/ProfitReportPage' import { AbcReportPage } from '@/pages/AbcReportPage' import { RetailSalesPage } from '@/pages/RetailSalesPage' import { RetailSaleEditPage } from '@/pages/RetailSaleEditPage' import { AppLayout } from '@/components/AppLayout' import { SuperAdminLayout } from '@/components/SuperAdminLayout' import { TenantRouteGuard } from '@/components/TenantRouteGuard' import { ProtectedRoute } from '@/components/ProtectedRoute' import { NoOrganizationPage } from '@/pages/NoOrganizationPage' import { SuperAdminOrgEmployeesPage } from '@/pages/SuperAdminOrgEmployeesPage' import { SuperAdminPlatformSettingsPage } from '@/pages/SuperAdminPlatformSettingsPage' import { ForgotPasswordPage } from '@/pages/ForgotPasswordPage' import { ResetPasswordPage } from '@/pages/ResetPasswordPage' import { RoleGuard } from '@/components/RoleGuard' const queryClient = new QueryClient({ defaultOptions: { queries: { refetchOnWindowFocus: false, retry: 1, }, }, }) export default function App() { return ( } /> } /> } /> } /> }> {/* Fallback для orphan AppUser без активной org / Employee. * Без layout'а — full-screen, оттуда CTA на /signup или mailto. */} } /> {/* SuperAdmin консоль — отдельный layout c индиго-сайдбаром, * системными разделами и быстрым «Открыть организацию» в topbar. * Setup wizard вне layout'а — full-screen onboarding. */} } /> }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* Tenant-роуты — обычный AppLayout, но с TenantRouteGuard: * SuperAdmin без активного override → редирект на /super-admin/organizations. */} }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ) }