'use client'; import { Race } from '../../domain/entities/Race'; interface RaceCardProps { race: Race; leagueName?: string; onClick?: () => void; } export default function RaceCard({ race, leagueName, onClick }: RaceCardProps) { const statusColors = { scheduled: 'bg-primary-blue/20 text-primary-blue border-primary-blue/30', completed: 'bg-green-500/20 text-green-400 border-green-500/30', cancelled: 'bg-gray-500/20 text-gray-400 border-gray-500/30', }; const formatDate = (date: Date) => { return new Date(date).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric', }); }; const formatTime = (date: Date) => { return new Date(date).toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', timeZoneName: 'short', }); }; const getRelativeTime = (date: Date) => { const now = new Date(); const targetDate = new Date(date); const diffMs = targetDate.getTime() - now.getTime(); const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24)); if (diffDays < 0) return null; if (diffDays === 0) return 'Today'; if (diffDays === 1) return 'Tomorrow'; if (diffDays < 7) return `in ${diffDays} days`; return null; }; const relativeTime = race.status === 'scheduled' ? getRelativeTime(race.scheduledAt) : null; return (
{race.car}
{leagueName && ({leagueName}
)}{formatDate(race.scheduledAt)}
{formatTime(race.scheduledAt)}
{relativeTime && ({relativeTime}
)}