import Image from 'next/image'; import { Trophy, Crown, Users } from 'lucide-react'; import type { TeamSummaryViewModel } from '@/lib/view-models/TeamSummaryViewModel'; import { getMediaUrl } from '@/lib/utilities/media'; const SKILL_LEVELS: { id: string; icon: React.ElementType; color: string; bgColor: string; borderColor: string; }[] = [ { id: 'pro', icon: () => null, color: 'text-yellow-400', bgColor: 'bg-yellow-400/10', borderColor: 'border-yellow-400/30', }, { id: 'advanced', icon: () => null, color: 'text-purple-400', bgColor: 'bg-purple-400/10', borderColor: 'border-purple-400/30', }, { id: 'intermediate', icon: () => null, color: 'text-primary-blue', bgColor: 'bg-primary-blue/10', borderColor: 'border-primary-blue/30', }, { id: 'beginner', icon: () => null, color: 'text-green-400', bgColor: 'bg-green-400/10', borderColor: 'border-green-400/30', }, ]; interface TopThreePodiumProps { teams: TeamSummaryViewModel[]; onClick: (id: string) => void; } export default function TopThreePodium({ teams, onClick }: TopThreePodiumProps) { const top3 = teams.slice(0, 3) as [TeamSummaryViewModel, TeamSummaryViewModel, TeamSummaryViewModel]; if (teams.length < 3) return null; // Display order: 2nd, 1st, 3rd const podiumOrder: [TeamSummaryViewModel, TeamSummaryViewModel, TeamSummaryViewModel] = [ top3[1], top3[0], top3[2], ]; const podiumHeights = ['h-28', 'h-36', 'h-20']; const podiumPositions = [2, 1, 3]; const getPositionColor = (position: number) => { switch (position) { case 1: return 'text-yellow-400'; case 2: return 'text-gray-300'; case 3: return 'text-amber-600'; default: return 'text-gray-500'; } }; const getGradient = (position: number) => { switch (position) { case 1: return 'from-yellow-400/30 via-yellow-500/20 to-yellow-600/10'; case 2: return 'from-gray-300/30 via-gray-400/20 to-gray-500/10'; case 3: return 'from-amber-500/30 via-amber-600/20 to-amber-700/10'; default: return 'from-gray-600/30 to-gray-700/10'; } }; const getBorderColor = (position: number) => { switch (position) { case 1: return 'border-yellow-400/50'; case 2: return 'border-gray-300/50'; case 3: return 'border-amber-600/50'; default: return 'border-charcoal-outline'; } }; return (