import React from 'react'; import { Clock, Trophy, Users, ChevronRight, CheckCircle2 } from 'lucide-react'; import { Box } from '@/ui/Box'; import { Heading } from '@/ui/Heading'; import { Text } from '@/ui/Text'; import { Link } from '@/ui/Link'; import { Card } from '@/ui/Card'; import { Stack } from '@/ui/Stack'; import type { RaceViewData } from '@/lib/view-data/RacesViewData'; import { routes } from '@/lib/routing/RouteConfig'; interface RaceSidebarProps { upcomingRaces: RaceViewData[]; recentResults: RaceViewData[]; onRaceClick: (raceId: string) => void; } export function RaceSidebar({ upcomingRaces, recentResults, onRaceClick }: RaceSidebarProps) { return ( {/* Upcoming This Week */} Next Up This week {upcomingRaces.length === 0 ? ( No races scheduled this week ) : ( {upcomingRaces.map((race) => ( onRaceClick(race.id)} style={{ display: 'flex', alignItems: 'center', gap: '0.75rem', padding: '0.5rem', borderRadius: '0.5rem', cursor: 'pointer', transition: 'background-color 0.2s' }} > {new Date(race.scheduledAt).getDate()} {race.track} {race.timeLabel} ))} )} {/* Recent Results */} Recent Results {recentResults.length === 0 ? ( No completed races yet ) : ( {recentResults.map((race) => ( onRaceClick(race.id)} style={{ display: 'flex', alignItems: 'center', gap: '0.75rem', padding: '0.5rem', borderRadius: '0.5rem', cursor: 'pointer', transition: 'background-color 0.2s' }} > {race.track} {race.scheduledAtLabel} ))} )} {/* Quick Actions */} Quick Actions Browse Leagues View Leaderboards ); }