import { Button } from '@/ui/Button'; import { ButtonGroup } from '@/ui/ButtonGroup'; import { Icon } from '@/ui/Icon'; import { InfoBanner } from '@/ui/InfoBanner'; import { PlayCircle, UserMinus, UserPlus, XCircle, CheckCircle2 } from 'lucide-react'; interface RaceJoinButtonProps { raceStatus: 'scheduled' | 'running' | 'completed' | 'cancelled'; isUserRegistered: boolean; canRegister: boolean; onRegister: () => void; onWithdraw: () => void; onCancel: () => void; onReopen?: () => void; onEndRace?: () => void; canReopenRace?: boolean; isOwnerOrAdmin?: boolean; isLoading?: { register?: boolean; withdraw?: boolean; cancel?: boolean; reopen?: boolean; }; } export function RaceJoinButton({ raceStatus, isUserRegistered, canRegister, onRegister, onWithdraw, onCancel, onReopen, onEndRace, canReopenRace = false, isOwnerOrAdmin = false, isLoading = {}, }: RaceJoinButtonProps) { // Show registration button for scheduled races if (raceStatus === 'scheduled') { if (canRegister && !isUserRegistered) { return ( ); } if (isUserRegistered) { return ( You're Registered ); } // Show cancel button for owners/admins if (isOwnerOrAdmin) { return ( ); } return null; } // Show end race button for running races (owners/admins only) if (raceStatus === 'running' && isOwnerOrAdmin && onEndRace) { return ( ); } // Show reopen button for completed/cancelled races (owners/admins only) if ((raceStatus === 'completed' || raceStatus === 'cancelled') && canReopenRace && isOwnerOrAdmin && onReopen) { return ( ); } return null; }