import { ProtestCard } from '@/components/leagues/ProtestCardWrapper';
import { StewardingTabs } from '@/components/leagues/StewardingTabs';
import { RaceDetailsHeader } from '@/components/races/RaceDetailsHeader';
import { RacePenaltyRow } from '@/components/races/RacePenaltyRowWrapper';
import { RaceStewardingStats } from '@/components/races/RaceStewardingStats';
import type { RaceStewardingViewData } from '@/lib/view-data/RaceStewardingViewData';
import { Box } from '@/ui/Box';
import { Container } from '@/ui/Container';
import { Grid } from '@/ui/Grid';
import { GridItem } from '@/ui/GridItem';
import { Icon } from '@/ui/Icon';
import { Stack } from '@/ui/Stack';
import { Text } from '@/ui/Text';
import { CheckCircle, Flag, Gavel, Info } from 'lucide-react';
export type StewardingTab = 'pending' | 'resolved' | 'penalties';
interface RaceStewardingTemplateProps {
viewData: RaceStewardingViewData;
isLoading: boolean;
error?: Error | null;
// Actions
onBack: () => void;
onReviewProtest: (protestId: string) => void;
// User state
isAdmin: boolean;
// UI State
activeTab: StewardingTab;
setActiveTab: (tab: StewardingTab) => void;
}
export function RaceStewardingTemplate({
viewData,
isLoading,
onBack,
onReviewProtest,
isAdmin,
activeTab,
setActiveTab,
}: RaceStewardingTemplateProps) {
const formatDate = (date: string) => {
return date; // Simplified for template
};
if (isLoading) {
return (
Loading stewarding data...
);
}
if (!viewData?.race) {
return (
Race Not Found
{`The race you're looking for doesn't exist.`}
Back to Schedule
);
}
return (
{activeTab === 'pending' && (
{viewData.pendingProtests.length === 0 ? (
All Clear!
No pending protests to review
) : (
viewData.pendingProtests.map((protest) => (
))
)}
)}
{activeTab === 'resolved' && (
{viewData.resolvedProtests.length === 0 ? (
No Resolved Protests
Resolved protests will appear here
) : (
viewData.resolvedProtests.map((protest) => (
))
)}
)}
{activeTab === 'penalties' && (
{viewData.penalties.length === 0 ? (
No Penalties
Penalties issued for this race will appear here
) : (
viewData.penalties.map((penalty) => (
))
)}
)}
Stewarding Stats
);
}