'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}
/>
);
}