import { LiveRacesBanner } from '@/components/races/LiveRacesBanner'; import { RaceFilterBar } from '@/components/races/RaceFilterBar'; import { RaceFilterModal } from '@/components/races/RaceFilterModal'; import { RacePageHeader } from '@/components/races/RacePageHeader'; import { RaceScheduleTable } from '@/components/races/RaceScheduleTable'; import { RaceSidebar } from '@/components/races/RaceSidebar'; import type { SessionStatus } from '@/components/races/SessionStatusBadge'; import type { RacesViewData } from '@/lib/view-data/RacesViewData'; import { Container } from '@/ui/Container'; import { Grid } from '@/ui/Grid'; import { GridItem } from '@/ui/GridItem'; import { Stack } from '@/ui/Stack'; export type TimeFilter = 'all' | 'upcoming' | 'live' | 'past'; export type RaceStatusFilter = 'scheduled' | 'running' | 'completed' | 'cancelled' | 'all'; export interface RacesTemplateProps { viewData: RacesViewData; // Filters statusFilter: RaceStatusFilter; setStatusFilter: (filter: RaceStatusFilter) => void; leagueFilter: string; setLeagueFilter: (filter: string) => void; timeFilter: TimeFilter; setTimeFilter: (filter: TimeFilter) => void; // Actions onRaceClick: (raceId: string) => void; onLeagueClick: (leagueId: string) => void; onWithdraw: (raceId: string) => void; onCancel: (raceId: string) => void; // UI State showFilterModal: boolean; setShowFilterModal: (show: boolean) => void; } export function RacesTemplate({ viewData, statusFilter, setStatusFilter, leagueFilter, setLeagueFilter, timeFilter, setTimeFilter, onRaceClick, showFilterModal, setShowFilterModal, }: RacesTemplateProps) { return ( setShowFilterModal(true)} /> ({ id: race.id, track: race.track, car: race.car, leagueName: race.leagueName, time: race.timeLabel, status: race.status as SessionStatus }))} onRaceClick={onRaceClick} /> setShowFilterModal(false)} statusFilter={statusFilter as any} setStatusFilter={setStatusFilter as any} leagueFilter={leagueFilter} setLeagueFilter={setLeagueFilter} timeFilter={timeFilter as any} setTimeFilter={setTimeFilter as any} searchQuery="" setSearchQuery={() => {}} leagues={viewData.leagues} showSearch={false} showTimeFilter={false} /> ); }