import { routes } from '@/lib/routing/RouteConfig'; import type { RaceViewData } from '@/lib/view-data/RacesViewData'; import { Box } from '@/ui/Box'; import { Card } from '@/ui/Card'; import { DateHeader } from '@/ui/DateHeader'; import { Icon } from '@/ui/Icon'; import { RaceListItem } from '@/ui/RaceListItem'; import { Stack } from '@/ui/Stack'; import { Text } from '@/ui/Text'; import { Calendar, CheckCircle2, Clock, PlayCircle, XCircle } from 'lucide-react'; interface RaceListProps { racesByDate: Array<{ dateKey: string; dateLabel: string; races: RaceViewData[]; }>; totalCount: number; onRaceClick: (raceId: string) => void; } export function RaceList({ racesByDate, totalCount, onRaceClick }: RaceListProps) { const statusConfig = { scheduled: { icon: Clock, variant: 'primary' as const, label: 'Scheduled', }, running: { icon: PlayCircle, variant: 'success' as const, label: 'LIVE', }, completed: { icon: CheckCircle2, variant: 'default' as const, label: 'Completed', }, cancelled: { icon: XCircle, variant: 'warning' as const, label: 'Cancelled', }, }; if (racesByDate.length === 0) { return ( No races found {totalCount === 0 ? 'No races have been scheduled yet' : 'Try adjusting your filters'} ); } return ( {racesByDate.map((group) => ( {group.races.map((race) => { const config = statusConfig[race.status as keyof typeof statusConfig] || statusConfig.scheduled; return ( onRaceClick(race.id)} statusConfig={config} /> ); })} ))} ); }