import { Badge } from '@/ui/Badge'; import { Button } from '@/ui/Button'; import { Card } from '@/ui/Card'; import { Heading } from '@/ui/Heading'; import { Icon } from '@/ui/Icon'; import { Link } from '@/ui/Link'; import { Stack } from '@/ui/Stack'; import { Grid } from '@/ui/Grid'; import { Text } from '@/ui/Text'; import { CheckCircle2, Clock, Star } from 'lucide-react'; interface AvailableLeague { id: string; name: string; game: string; drivers: number; avgViewsPerRace: number; mainSponsorSlot: { available: boolean; price: number }; secondarySlots: { available: number; total: number; price: number }; rating: number; tier: 'premium' | 'standard' | 'starter'; nextRace?: string; seasonStatus: 'active' | 'upcoming' | 'completed'; description: string; formattedAvgViews: string; formattedCpm: string; } interface AvailableLeagueCardProps { league: AvailableLeague; } export function AvailableLeagueCard({ league }: AvailableLeagueCardProps) { const tierConfig = { premium: { icon: '⭐', label: 'Premium' }, standard: { icon: '🏆', label: 'Standard' }, starter: { icon: '🚀', label: 'Starter' }, }; const statusConfig = { active: { intent: 'success' as const, label: 'Active Season' }, upcoming: { intent: 'warning' as const, label: 'Starting Soon' }, completed: { intent: 'default' as const, label: 'Season Ended' }, }; const config = tierConfig[league.tier]; const status = statusConfig[league.seasonStatus]; return ( {/* Header */} {config.icon} {config.label} {status.label} {league.name} {league.game} {league.rating} {/* Description */} {league.description} {/* Stats Grid */} {/* Next Race */} {league.nextRace && ( Next: {league.nextRace} )} {/* Sponsorship Slots */} 0} price={`${league.secondarySlots.available}/${league.secondarySlots.total} @ $${league.secondarySlots.price}`} /> {/* Actions */} {(league.mainSponsorSlot.available || league.secondarySlots.available > 0) && ( )} ); } function StatItem({ label, value, intent = 'high' }: { label: string, value: string | number, intent?: 'high' | 'success' }) { return ( {value} {label} ); } function SlotRow({ label, available, price }: { label: string, available: boolean, price: string }) { return ( {label} {available ? ( {price} ) : ( Filled )} ); }