import { Badge } from '@/ui/Badge'; import { Button } from '@/ui/Button'; import { Card } from '@/ui/Card'; import { Icon } from '@/ui/Icon'; import { Link } from '@/ui/Link'; import { Stack } from '@/ui/Stack'; import { Text } from '@/ui/Text'; import { AlertCircle, AlertTriangle, Video } from 'lucide-react'; interface ProtestListItemProps { protesterName: string; protesterHref: string; accusedName: string; accusedHref: string; status: string; isUrgent: boolean; daysOld: number; lap: number; filedAtLabel: string; description: string; proofVideoUrl?: string; decisionNotes?: string; isAdmin: boolean; onReview?: () => void; } export function ProtestListItem({ protesterName, protesterHref, accusedName, accusedHref, status, isUrgent, daysOld, lap, filedAtLabel, description, proofVideoUrl, decisionNotes, isAdmin, onReview, }: ProtestListItemProps) { const getStatusVariant = (s: string): any => { switch (s) { case 'pending': case 'under_review': return 'warning'; case 'upheld': return 'danger'; case 'dismissed': return 'default'; case 'withdrawn': return 'primary'; default: return 'warning'; } }; return ( {protesterName} vs {accusedName} {status.replace('_', ' ')} {isUrgent && ( {daysOld}d old )} Lap {lap} Filed {filedAtLabel} {proofVideoUrl && ( <> Video Evidence )} {description} {decisionNotes && ( Steward Decision {decisionNotes} )} {isAdmin && status === 'pending' && onReview && ( )} ); }