import { Suspense } from 'react'; import { Routes, Route } from 'react-router-dom'; import { GlassShowcase } from '@/components/GlassShowcase'; import { AppLayout } from '@/components/layout/AppLayout'; import { PublicLayout } from '@/components/layout/PublicLayout'; import { NardoGreyShowcase } from '@/components/NardoGreyShowcase'; import ProtectedRoute from '@/components/routing/ProtectedRoute'; import { ThemeDocumentation } from '@/components/ThemeDocumentation'; import { BrandingSettings } from '@/features/org/BrandingSettings'; import { DomainSettings } from '@/features/org/DomainSettings'; import { AdminPage } from '@/pages/AdminPage'; import { TerritoryManagers } from '@/pages/admin/TerritoryManagers'; import SuperAdminRoute from '@/components/routing/SuperAdminRoute'; import { AnalyticsPage } from '@/pages/AnalyticsPage'; import { CheckoutCancelPage } from '@/pages/CheckoutCancelPage'; import { CheckoutSuccessPage } from '@/pages/CheckoutSuccessPage'; import { CustomersPage } from '@/pages/CustomersPage'; import { DashboardPage } from '@/pages/DashboardPage'; import { OrdersPage } from '@/pages/OrdersPage'; import { ErrorPage, NotFoundPage, UnauthorizedPage, ServerErrorPage, NetworkErrorPage } from '@/pages/ErrorPage'; import { EventCreatePage } from '@/pages/events/EventCreatePage'; import { EventsIndexPage } from '@/pages/events/EventsIndexPage'; import { HomePage } from '@/pages/HomePage'; import LoginPage from '@/pages/LoginPage'; import { SettingsPage } from '@/pages/SettingsPage'; import { TicketsPage } from '@/pages/TicketsPage'; import { TicketConfigDemo } from '@/pages/TicketConfigDemo'; // Static pages import { AboutPage } from '@/pages/AboutPage'; import { ContactPage } from '@/pages/ContactPage'; import { TermsPage } from '@/pages/TermsPage'; import { PrivacyPage } from '@/pages/PrivacyPage'; import { CalendarPage } from '@/pages/CalendarPage'; import { BrandingSettings as AdminBrandingSettings } from '../pages/admin/BrandingSettings'; // Lazy-loaded components with their skeleton fallbacks import { EventDetailPage, GateOpsPage, PaymentSettings, ScannerPage, SeatMapDemo, TicketPurchaseDemo, EventDetailPageSkeleton, GateOpsPageSkeleton, PaymentSettingsPageSkeleton, ScannerPageSkeleton } from './lazy-routes'; /** * Comprehensive routing configuration for Black Canyon Tickets * Implements role-based access control with protected routes * * Role hierarchy: * - superadmin: Full platform access * - orgAdmin: Organization-level administration * - territoryManager: Territory-specific management * - staff: Basic event and ticket access */ export function AppRoutes(): JSX.Element { return ( {/* Public routes - no authentication required */} } /> } /> } /> } /> } /> } /> Loading seat map demo...}> } /> Loading ticket purchase demo...}> } /> {/* Static content pages */} } /> } /> } /> } /> } /> {/* Public checkout routes */} } /> } /> {/* Main public route - no authentication required */} } /> {/* Protected dashboard routes */} } /> {/* Events management routes */} } /> {/* Event creation route */} } /> {/* Event detail page - requires staff+ roles */} }> } /> {/* Gate operations - staff+ roles only */} }> } /> {/* Organization payment settings - orgAdmin+ only */} }> } /> {/* Additional organization routes */} } /> {/* Admin branding settings - simplified route */} } /> } /> {/* Scanner route - staff+ roles only */} }> } /> {/* Order management */} } /> {/* Ticket management */} } /> {/* Customer management */} } /> {/* Analytics */} } /> {/* User settings */} } /> {/* Territory Managers - superadmin only */} } /> {/* Admin routes - admin role required */} } /> {/* Error routes */} } /> } /> } /> } /> } /> {/* 404 catch-all route - must be last */} } /> ); } export default AppRoutes;