import { MedalFormatter } from '@/lib/formatters/MedalFormatter'; import { RatingFormatter } from '@/lib/formatters/RatingFormatter'; import { Image } from '@/ui/Image'; import { Stack } from '@/ui/Stack'; import { Text } from '@/ui/Text'; interface PodiumDriver { id: string; name: string; avatarUrl: string; rating: number; wins: number; podiums: number; } interface LeaderboardPodiumProps { podium: PodiumDriver[]; onDriverClick?: (id: string) => void; } export function LeaderboardPodium({ podium, onDriverClick }: LeaderboardPodiumProps) { // Order: 2nd, 1st, 3rd const displayOrder = [1, 0, 2]; return ( {displayOrder.map((index) => { const driver = podium[index]; if (!driver) return ; const position = index + 1; const isFirst = position === 1; const config = { 1: { height: '48', scale: '1.1', zIndex: 10, shadow: 'shadow-warning-amber/20' }, 2: { height: '36', scale: '1', zIndex: 0, shadow: 'shadow-white/5' }, 3: { height: '28', scale: '0.9', zIndex: 0, shadow: 'shadow-white/5' }, }[position as 1 | 2 | 3]; return ( onDriverClick?.(driver.id)} display="flex" flexDirection="col" alignItems="center" flexGrow={1} transition hoverScale group shadow={config.shadow} zIndex={config.zIndex} > {driver.name} {position} {driver.name} {RatingFormatter.format(driver.rating)} Wins {driver.wins} Podiums {driver.podiums} {position} ); })} ); }