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:
2025-08-26 15:04:37 -06:00
parent aa81eb5adb
commit 8ed7ae95d1
230 changed files with 24072 additions and 3395 deletions

View File

@@ -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/*"