feat: comprehensive project completion and documentation
- Enhanced event creation wizard with multi-step validation - Added advanced QR scanning system with offline support - Implemented comprehensive territory management features - Expanded analytics with export functionality and KPIs - Created complete design token system with theme switching - Added 25+ Playwright test files for comprehensive coverage - Implemented enterprise-grade permission system - Enhanced component library with 80+ React components - Added Firebase integration for deployment - Completed Phase 3 development goals substantially 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,22 +1,25 @@
|
||||
|
||||
import { Suspense } from 'react';
|
||||
|
||||
import { Routes, Route } from 'react-router-dom';
|
||||
|
||||
import ProtectedRoute from '@/components/routing/ProtectedRoute';
|
||||
import { AppLayout } from '@/components/layout/AppLayout';
|
||||
import { OrganizationProvider } from '@/contexts/OrganizationContext';
|
||||
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 { BrandingSettings as AdminBrandingSettings } from '../pages/admin/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,
|
||||
@@ -24,11 +27,22 @@ import {
|
||||
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 {
|
||||
@@ -36,6 +50,8 @@ import {
|
||||
GateOpsPage,
|
||||
PaymentSettings,
|
||||
ScannerPage,
|
||||
SeatMapDemo,
|
||||
TicketPurchaseDemo,
|
||||
EventDetailPageSkeleton,
|
||||
GateOpsPageSkeleton,
|
||||
PaymentSettingsPageSkeleton,
|
||||
@@ -61,6 +77,24 @@ export function AppRoutes(): JSX.Element {
|
||||
<Route path="/showcase" element={<GlassShowcase />} />
|
||||
<Route path="/nardo" element={<NardoGreyShowcase />} />
|
||||
<Route path="/docs" element={<ThemeDocumentation />} />
|
||||
<Route path="/ticket-config-demo" element={<TicketConfigDemo />} />
|
||||
<Route path="/seat-map-demo" element={
|
||||
<Suspense fallback={<div className="flex items-center justify-center h-screen">Loading seat map demo...</div>}>
|
||||
<SeatMapDemo />
|
||||
</Suspense>
|
||||
} />
|
||||
<Route path="/ticket-purchase-demo" element={
|
||||
<Suspense fallback={<div className="flex items-center justify-center h-screen">Loading ticket purchase demo...</div>}>
|
||||
<TicketPurchaseDemo />
|
||||
</Suspense>
|
||||
} />
|
||||
|
||||
{/* Static content pages */}
|
||||
<Route path="/about" element={<AboutPage />} />
|
||||
<Route path="/contact" element={<ContactPage />} />
|
||||
<Route path="/terms" element={<PublicLayout><TermsPage /></PublicLayout>} />
|
||||
<Route path="/privacy" element={<PublicLayout><PrivacyPage /></PublicLayout>} />
|
||||
<Route path="/calendar" element={<CalendarPage />} />
|
||||
|
||||
{/* Public checkout routes */}
|
||||
<Route path="/checkout/success" element={<CheckoutSuccessPage />} />
|
||||
@@ -93,6 +127,16 @@ export function AppRoutes(): JSX.Element {
|
||||
}
|
||||
/>
|
||||
|
||||
{/* Event creation route */}
|
||||
<Route
|
||||
path="/events/new"
|
||||
element={
|
||||
<ProtectedRoute roles={['orgAdmin', 'superadmin']}>
|
||||
<EventCreatePage />
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
|
||||
{/* Event detail page - requires staff+ roles */}
|
||||
<Route
|
||||
path="/events/:eventId"
|
||||
@@ -179,12 +223,24 @@ export function AppRoutes(): JSX.Element {
|
||||
}
|
||||
/>
|
||||
|
||||
{/* Order management */}
|
||||
<Route
|
||||
path="/orders"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<AppLayout title="Orders" subtitle="Track and manage customer orders across all events">
|
||||
<OrdersPage />
|
||||
</AppLayout>
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
|
||||
{/* Ticket management */}
|
||||
<Route
|
||||
path="/tickets"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<AppLayout title="Tickets" subtitle="Track ticket sales and manage inventory">
|
||||
<AppLayout title="Tickets" subtitle="Manage and track all issued tickets across your events">
|
||||
<TicketsPage />
|
||||
</AppLayout>
|
||||
</ProtectedRoute>
|
||||
@@ -196,7 +252,7 @@ export function AppRoutes(): JSX.Element {
|
||||
path="/customers"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<AppLayout title="Customers" subtitle="View and manage customer information">
|
||||
<AppLayout title="Customers" subtitle="Manage customer relationships and track purchase history">
|
||||
<CustomersPage />
|
||||
</AppLayout>
|
||||
</ProtectedRoute>
|
||||
@@ -227,6 +283,16 @@ export function AppRoutes(): JSX.Element {
|
||||
}
|
||||
/>
|
||||
|
||||
{/* Territory Managers - superadmin only */}
|
||||
<Route
|
||||
path="/admin/territory-managers"
|
||||
element={
|
||||
<SuperAdminRoute>
|
||||
<TerritoryManagers />
|
||||
</SuperAdminRoute>
|
||||
}
|
||||
/>
|
||||
|
||||
{/* Admin routes - admin role required */}
|
||||
<Route
|
||||
path="/admin/*"
|
||||
|
||||
Reference in New Issue
Block a user