# Black Canyon Tickets - React Rebuild A production-ready React rebuild of the Black Canyon Tickets platform featuring a complete design token system, comprehensive component library, and WCAG AA compliant accessibility. ## Phase 2 Complete ✅ **Delivered Features:** - ✅ Complete design token system with light/dark themes - ✅ Production-ready UI primitive library - ✅ Responsive layout system with navigation - ✅ Mock authentication with role-based permissions - ✅ Error boundaries and loading states - ✅ Business domain components (EventCard, TicketTypeRow, OrderSummary) - ✅ WCAG AA accessibility compliance (4.5:1+ contrast ratios) - ✅ Strict TypeScript and ESLint configuration - ✅ Comprehensive Playwright test suite with visual regression ## Quick Start ```bash # Install dependencies npm install # Start development server npm run dev # Open http://localhost:5173 ``` ### Demo Accounts **Regular User:** - Username: `demo@blackcanyontickets.com` - Password: `demo123` - Access: Events and ticket purchasing **Admin User:** - Username: `admin@blackcanyontickets.com` - Password: `admin123` - Access: Full platform administration **Super Admin:** - Username: `superadmin@blackcanyontickets.com` - Password: `super123` - Access: All administrative features ## Tech Stack ### Core Technologies - **React 18** with TypeScript for type safety - **Vite** for lightning-fast development and builds - **Tailwind CSS** with custom design token system - **React Router v6** for client-side routing ### Development Tools - **ESLint** with strict React/TypeScript rules - **Playwright** for end-to-end testing with screenshots - **TypeScript** with strict configuration - **Prettier** for consistent code formatting ### Architecture Patterns - **Design Token System** - CSS custom properties for consistent theming - **Component Composition** - Reusable primitives with flexible APIs - **Error Boundaries** - Graceful error handling at component level - **Mock Authentication** - Role-based access control simulation - **Accessibility First** - WCAG AA compliance built into components ## Design System ### Theme System The application supports automatic light/dark theme switching with: - **Light Theme**: Clean, modern aesthetic with high contrast - **Dark Theme**: Sophisticated, muted palette for professional environments - **Color Tokens**: Semantic color system (primary, secondary, success, warning, error) - **Typography Scale**: Consistent text sizes from xs to 4xl - **Spacing System**: 8px grid-based spacing tokens ### Design Tokens Usage ```css /* Colors */ color: var(--color-text-primary); background: var(--color-surface-primary); border-color: var(--color-border-primary); /* Typography */ font-size: var(--font-size-lg); line-height: var(--line-height-relaxed); /* Spacing */ padding: var(--spacing-4); margin: var(--spacing-2); ``` ## Component Library ### UI Primitives **Button Component** ```tsx import { Button } from '@/components/ui/Button'; ``` **Input Component** ```tsx import { Input } from '@/components/ui/Input'; ``` **Card Component** ```tsx import { Card } from '@/components/ui/Card';

Card Title

Card content goes here
``` ### Business Components **EventCard** ```tsx import { EventCard } from '@/components/events/EventCard'; ``` **TicketTypeRow** ```tsx import { TicketTypeRow } from '@/components/tickets/TicketTypeRow'; ``` ## Development Commands ```bash # Development npm run dev # Start development server at localhost:5173 npm run build # Type check and build for production npm run preview # Preview production build locally # Code Quality npm run lint # Run ESLint on codebase npm run lint:fix # Run ESLint with auto-fix npm run typecheck # Run TypeScript type checking # Testing npm run test # Run Playwright end-to-end tests npm run test:headed # Run tests with visible browser npm run test:ui # Run tests with Playwright UI ``` ## Project Structure ``` src/ ├── components/ │ ├── ui/ # Reusable UI primitives │ │ ├── Button.tsx # Button with variants and sizes │ │ ├── Input.tsx # Form input with validation │ │ ├── Card.tsx # Container component │ │ ├── Alert.tsx # Status messages │ │ ├── Badge.tsx # Small status indicators │ │ └── Select.tsx # Dropdown selection │ ├── layout/ # Layout and navigation │ │ ├── AppLayout.tsx # Main application layout │ │ ├── Header.tsx # Top navigation bar │ │ ├── Sidebar.tsx # Collapsible sidebar │ │ └── MainContainer.tsx # Content area wrapper │ ├── auth/ # Authentication components │ ├── loading/ # Loading states and skeletons │ ├── errors/ # Error boundaries and fallbacks │ ├── events/ # Event-related components │ ├── tickets/ # Ticketing components │ ├── checkout/ # Purchase flow components │ ├── billing/ # Payment and fee components │ └── scanning/ # QR scanning components ├── pages/ # Route components ├── contexts/ # React Context providers ├── hooks/ # Custom React hooks ├── types/ # TypeScript type definitions ├── design-tokens/ # Design system tokens └── styles/ # CSS files and utilities ``` ## Authentication System Mock authentication supports three user roles: - **User**: Basic event browsing and ticket purchasing - **Admin**: Event management and analytics - **Super Admin**: Platform administration and user management ```tsx import { useAuth } from '@/hooks/useAuth'; function ProtectedComponent() { const { user, hasPermission } = useAuth(); if (!hasPermission('admin')) { return ; } return ; } ``` ## Error Handling Comprehensive error boundaries catch and handle errors gracefully: ```tsx import { AppErrorBoundary } from '@/components/errors/AppErrorBoundary'; }> ``` ## Accessibility Features - **WCAG AA Compliance**: All color combinations meet 4.5:1 contrast ratios - **Keyboard Navigation**: Full keyboard support for all interactive elements - **Screen Reader Support**: Proper ARIA labels and semantic HTML - **Focus Management**: Visible focus indicators and logical tab order - **Responsive Design**: Mobile-first approach with touch-friendly targets ## Testing ### Playwright Test Suite Comprehensive end-to-end tests covering: - **Authentication flows** with all user roles - **Navigation** and routing functionality - **Component interactions** and form submissions - **Responsive design** across viewport sizes - **Theme switching** between light and dark modes - **Visual regression** with automated screenshots ```bash # Run all tests npm run test # Run specific test file npx playwright test auth.spec.ts # Run tests with browser visible npm run test:headed # Generate test report npx playwright show-report ``` ## Performance Considerations - **Tree Shaking**: Components import only what they need - **Code Splitting**: Route-based code splitting with React.lazy - **Optimized Builds**: Vite's production optimizations enabled - **CSS Optimization**: Design tokens reduce CSS bundle size ## CrispyGoat Quality Standards This project exemplifies CrispyGoat's commitment to: - **Premium Polish**: Every component feels finished and professional - **Developer Experience**: Clear APIs, excellent TypeScript support - **Accessibility**: Universal design principles throughout - **Performance**: Optimized for production deployments - **Maintainability**: Clean architecture and comprehensive documentation ## Browser Support - **Chrome/Edge**: Full support for latest 2 versions - **Firefox**: Full support for latest 2 versions - **Safari**: Full support for latest 2 versions - **Mobile**: iOS Safari 14+, Chrome Android 90+ ## Contributing 1. Fork the repository 2. Create a feature branch: `git checkout -b feat/new-feature` 3. Make changes following our code standards 4. Run tests: `npm run test` 5. Run linting: `npm run lint:fix` 6. Submit a pull request ## License This project is for learning and demonstration purposes. --- **Built with CrispyGoat quality standards - premium polish, developer-first experience.**