'use client'; import React from 'react'; import { Calendar, Clock, Car, Trophy, Zap, ChevronRight, PlayCircle, CheckCircle2, XCircle } from 'lucide-react'; import { Box } from '@/ui/Box'; import { Stack } from '@/ui/Stack'; import { Text } from '@/ui/Text'; import { Link } from '@/ui/Link'; import { Icon } from '@/ui/Icon'; import { Surface } from '@/ui/Surface'; interface Race { id: string; track: string; car: string; scheduledAt: string; status: 'scheduled' | 'running' | 'completed' | 'cancelled'; sessionType: string; leagueId?: string; leagueName?: string; strengthOfField?: number | null; } interface RaceListItemProps { race: Race; onClick: (id: string) => void; } export function RaceListItem({ race, onClick }: RaceListItemProps) { const statusConfig = { scheduled: { icon: Clock, color: '#3b82f6', bg: 'rgba(59, 130, 246, 0.1)', border: 'rgba(59, 130, 246, 0.3)', label: 'Scheduled', }, running: { icon: PlayCircle, color: '#10b981', bg: 'rgba(16, 185, 129, 0.1)', border: 'rgba(16, 185, 129, 0.3)', label: 'LIVE', }, completed: { icon: CheckCircle2, color: '#9ca3af', bg: 'rgba(156, 163, 175, 0.1)', border: 'rgba(156, 163, 175, 0.3)', label: 'Completed', }, cancelled: { icon: XCircle, color: '#ef4444', bg: 'rgba(239, 68, 68, 0.1)', border: 'rgba(239, 68, 68, 0.3)', label: 'Cancelled', }, }; const config = statusConfig[race.status]; const StatusIcon = config.icon; const formatTime = (date: string) => { return new Date(date).toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', }); }; return ( onClick(race.id)} > {race.status === 'running' && ( )} {/* Date Column */} {new Date(race.scheduledAt).toLocaleDateString('en-US', { month: 'short' })} {new Date(race.scheduledAt).getDate()} {formatTime(race.scheduledAt)} {/* Divider */} {/* Main Content */} {race.track} {race.car} {race.strengthOfField && ( SOF {race.strengthOfField} )} {race.leagueName && ( e.stopPropagation()}> {race.leagueName} )} {/* Status Badge */} {config.label} ); }