import { ChevronRight, Users, Clock } from 'lucide-react'; import { ReactNode } from 'react'; import { Box } from './Box'; import { Card } from './Card'; import { Icon } from './Icon'; import { Image } from './Image'; import { Text } from './Text'; import { Stack } from './Stack'; import { Group } from './Group'; import { Heading } from './Heading'; export interface LeagueCardProps { name: string; description?: string; coverUrl: string; logoUrl?: string; slotLabel: string; usedSlots: number; maxSlots: number | string; fillPercentage: number; hasOpenSlots: boolean; openSlotsCount: number; isTeamLeague: boolean; usedDriverSlots?: number; maxDrivers?: number; timingSummary?: string; onClick?: () => void; badges?: ReactNode; championshipBadge?: ReactNode; } export const LeagueCard = ({ name, description, coverUrl, logoUrl, slotLabel, usedSlots, maxSlots, fillPercentage, hasOpenSlots, openSlotsCount, isTeamLeague, usedDriverSlots, maxDrivers, timingSummary, onClick, badges, championshipBadge }: LeagueCardProps) => { return ( {name} {badges} {logoUrl ? ( {name} ) : ( )} {name} {championshipBadge} {description && ( {description} )} {slotLabel} {usedSlots} / {maxSlots} {timingSummary || 'Schedule TBD'} ); }; export interface LeagueCardStatsProps { label: string; value: string; percentage: number; intent?: 'primary' | 'success' | 'warning' | 'telemetry'; } export const LeagueCardStats = ({ label, value, percentage, intent = 'primary' }: LeagueCardStatsProps) => { const intentColors = { primary: 'var(--ui-color-intent-primary)', success: 'var(--ui-color-intent-success)', warning: 'var(--ui-color-intent-warning)', telemetry: 'var(--ui-color-intent-telemetry)', }; return ( {label} {value} ); }; export interface LeagueCardFooterProps { children: ReactNode; } export const LeagueCardFooter = ({ children }: LeagueCardFooterProps) => ( {children} ACCESS );