import React from 'react'; import { useRouter } from 'next/navigation'; import Image from 'next/image'; import { Users, Crown, Shield, ChevronRight } from 'lucide-react'; import Button from '@/components/ui/Button'; import type { TeamSummaryViewModel } from '@/lib/view-models/TeamSummaryViewModel'; import { getMediaUrl } from '@/lib/utilities/media'; interface TeamLeaderboardPreviewProps { teams: TeamSummaryViewModel[]; onTeamClick: (id: string) => void; } const SKILL_LEVELS = [ { id: 'pro', label: 'Pro', icon: Crown, color: 'text-yellow-400', bgColor: 'bg-yellow-400/10', borderColor: 'border-yellow-400/30' }, { id: 'advanced', label: 'Advanced', icon: Crown, color: 'text-purple-400', bgColor: 'bg-purple-400/10', borderColor: 'border-purple-400/30' }, { id: 'intermediate', label: 'Intermediate', icon: Crown, color: 'text-primary-blue', bgColor: 'bg-primary-blue/10', borderColor: 'border-primary-blue/30' }, { id: 'beginner', label: 'Beginner', icon: Shield, color: 'text-green-400', bgColor: 'bg-green-400/10', borderColor: 'border-green-400/30' }, ]; export default function TeamLeaderboardPreview({ teams, onTeamClick }: TeamLeaderboardPreviewProps) { const router = useRouter(); const top5 = [...teams] .sort((a, b) => b.memberCount - a.memberCount) .slice(0, 5); const getMedalColor = (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 getMedalBg = (position: number) => { switch (position) { case 1: return 'bg-yellow-400/10 border-yellow-400/30'; case 2: return 'bg-gray-300/10 border-gray-300/30'; case 3: return 'bg-amber-600/10 border-amber-600/30'; default: return 'bg-iron-gray/50 border-charcoal-outline'; } }; return (
Top performing racing teams