'use client'; import React from 'react'; import { Card } from '@/ui/Card'; import { Button } from '@/ui/Button'; import { Heading } from '@/ui/Heading'; import { Breadcrumbs } from '@/ui/Breadcrumbs'; import { Flag, SlidersHorizontal, Calendar, } from 'lucide-react'; import { RaceFilterModal } from '@/ui/RaceFilterModal'; import { Pagination } from '@/ui/Pagination'; import { Box } from '@/ui/Box'; import { Stack } from '@/ui/Stack'; import { Text } from '@/ui/Text'; import { Container } from '@/ui/Container'; import { Icon } from '@/ui/Icon'; import { Surface } from '@/ui/Surface'; import { Skeleton } from '@/ui/Skeleton'; import { RaceListItem } from '@/ui/RaceListItemWrapper'; import type { RacesViewData } from '@/lib/view-data/RacesViewData'; export type StatusFilter = 'scheduled' | 'running' | 'completed' | 'cancelled' | 'all'; interface RacesAllTemplateProps { viewData: RacesViewData; races: RacesViewData['races']; totalFilteredCount: number; isLoading: boolean; // Pagination currentPage: number; totalPages: number; itemsPerPage: number; onPageChange: (page: number) => void; // Filters statusFilter: StatusFilter; setStatusFilter: (filter: StatusFilter) => void; leagueFilter: string; setLeagueFilter: (filter: string) => void; searchQuery: string; setSearchQuery: (query: string) => void; // UI State showFilters: boolean; setShowFilters: (show: boolean) => void; showFilterModal: boolean; setShowFilterModal: (show: boolean) => void; // Actions onRaceClick: (raceId: string) => void; onLeagueClick: (leagueId: string) => void; } export function RacesAllTemplate({ viewData, races, totalFilteredCount, isLoading, currentPage, totalPages, itemsPerPage, onPageChange, statusFilter, setStatusFilter, leagueFilter, setLeagueFilter, searchQuery, setSearchQuery, showFilters, setShowFilters, showFilterModal, setShowFilterModal, onRaceClick, }: RacesAllTemplateProps) { const breadcrumbItems = [ { label: 'Races', href: '/races' }, { label: 'All Races' }, ]; if (isLoading) { return ( {[1, 2, 3, 4, 5].map(i => ( ))} ); } return ( {/* Breadcrumbs */} {/* Header */} }> All Races {totalFilteredCount} race{totalFilteredCount !== 1 ? 's' : ''} found {/* Search & Filters (Simplified for template) */} {showFilters && ( Use the filter button to open advanced search and filtering options. )} {/* Race List */} {races.length === 0 ? ( No races found {viewData.races.length === 0 ? 'No races have been scheduled yet' : 'Try adjusting your search or filters'} ) : ( {races.map(race => ( ))} )} {/* Pagination */} {/* Filter Modal */} setShowFilterModal(false)} statusFilter={statusFilter} setStatusFilter={setStatusFilter} leagueFilter={leagueFilter} setLeagueFilter={setLeagueFilter} timeFilter="all" setTimeFilter={() => {}} searchQuery={searchQuery} setSearchQuery={setSearchQuery} leagues={viewData.leagues} showSearch={true} showTimeFilter={false} /> ); }