import type { ReactNode } from 'react' import { Navigate, Route, Routes } from 'react-router-dom' import { AppLayout } from '@/layouts/AppLayout' import { LoginPage } from '@/pages/auth/LoginPage' import { DashboardPage } from '@/pages/dashboard/DashboardPage' import { OrdersPage } from '@/pages/orders/OrdersPage' import { CreateOrderPage } from '@/pages/orders/CreateOrderPage' import { OrderDetailPage } from '@/pages/orders/OrderDetailPage' import { PrescriptionsPage } from '@/pages/prescriptions/PrescriptionsPage' import { CreatePrescriptionPage } from '@/pages/prescriptions/CreatePrescriptionPage' import { PrescriptionDetailPage } from '@/pages/prescriptions/PrescriptionDetailPage' import { StockPage } from '@/pages/stock/StockPage' import { CreateStockPage } from '@/pages/stock/CreateStockPage' import { StockDetailPage } from '@/pages/stock/StockDetailPage' import { ProcurementPage } from '@/pages/procurement/ProcurementPage' import { CreateProcurementRequestPage } from '@/pages/procurement/CreateProcurementRequestPage' import { ProcurementDetailPage } from '@/pages/procurement/ProcurementDetailPage' import { FinancePage } from '@/pages/finance/FinancePage' import { PaymentGatewaysPage } from '@/pages/finance/PaymentGatewaysPage' import { SettlementDetailPage } from '@/pages/finance/SettlementDetailPage' import { OrganisationsPage } from '@/pages/organisations/OrganisationsPage' import { CreateOrganisationPage } from '@/pages/organisations/CreateOrganisationPage' import { OrganisationDetailPage } from '@/pages/organisations/OrganisationDetailPage' import { DoctorsPage } from '@/pages/doctors/DoctorsPage' import { CreateDoctorPage } from '@/pages/doctors/CreateDoctorPage' import { DoctorDetailPage } from '@/pages/doctors/DoctorDetailPage' import { MarketingPage } from '@/pages/marketing/MarketingPage' import { CrmPage } from '@/pages/marketing/CrmPage' import { CustomerDetailPage } from '@/pages/marketing/CustomerDetailPage' import { LoyaltyPage } from '@/pages/marketing/LoyaltyPage' import { CampaignsPage } from '@/pages/marketing/CampaignsPage' import { CampaignDetailPage } from '@/pages/marketing/CampaignDetailPage' import { SegmentDetailPage } from '@/pages/marketing/SegmentDetailPage' import { DispatchPage } from '@/pages/dispatch/DispatchPage' import { RiderDetailPage } from '@/pages/dispatch/RiderDetailPage' import { TeamPage } from '@/pages/team/TeamPage' import { CreateTeamMemberPage } from '@/pages/team/CreateTeamMemberPage' import { TeamMemberDetailPage } from '@/pages/team/TeamMemberDetailPage' import { AuditPage } from '@/pages/audit/AuditPage' import { AuditEventDetailPage } from '@/pages/audit/AuditEventDetailPage' import { FaqPage } from '@/pages/faq/FaqPage' import { FaqDetailPage } from '@/pages/faq/FaqDetailPage' import { SettingsPage } from '@/pages/settings/SettingsPage' import { BranchDetailPage } from '@/pages/settings/BranchDetailPage' import { MigrationsPage } from '@/pages/migrations/MigrationsPage' import { MigrationJobDetailPage } from '@/pages/migrations/MigrationJobDetailPage' import { AnalyticsPage } from '@/pages/analytics/AnalyticsPage' import { ProfilePage } from '@/pages/profile/ProfilePage' import { PosPage } from '@/pages/pos/PosPage' import { ItemsPage } from '@/pages/items/ItemsPage' import { CreateItemPage } from '@/pages/items/CreateItemPage' import { ItemDetailPage } from '@/pages/items/ItemDetailPage' import { useAuthStore } from '@/zustand/authStore' import { canAccess } from '@/config/permissions' import type { ModuleKey } from '@/types' function Guard({ module, children }: { module: ModuleKey; children: ReactNode }) { const user = useAuthStore((s) => s.user) if (!user) return if (!canAccess(user.role, module)) return return children } export function AppRoutes() { return ( } /> }> } /> {/* Available to every signed-in role — not a permission-gated module. */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ) }