import { LeaderboardFiltersBar } from '@/components/leaderboards/LeaderboardFiltersBar'; import type { LeaderboardTeamItem } from '@/lib/view-data/LeaderboardTeamItem'; import type { TeamRankingsViewData } from '@/lib/view-data/TeamRankingsViewData'; import { Button } from '@/ui/Button'; import { Heading } from '@/ui/Heading'; import { Icon } from '@/ui/Icon'; import { Panel } from '@/ui/Panel'; import { Section } from '@/ui/Section'; import { Select } from '@/ui/Select'; import { Table, TableBody, TableCell, TableHead, TableRow } from '@/ui/Table'; import { Group } from '@/ui/Group'; import { Text } from '@/ui/Text'; import { Box } from '@/ui/Box'; import { Award, ChevronLeft, Users, ChevronRight } from 'lucide-react'; import React from 'react'; type SkillLevel = 'all' | 'pro' | 'advanced' | 'intermediate' | 'beginner'; type SortBy = 'rank' | 'rating' | 'wins' | 'memberCount'; interface TeamRankingsTemplateProps { viewData: TeamRankingsViewData; onSearchChange: (query: string) => void; onSkillChange: (level: SkillLevel) => void; onSortChange: (sort: SortBy) => void; onPageChange: (page: number) => void; currentPage: number; totalPages: number; totalTeams: number; onTeamClick: (id: string) => void; onBackToLeaderboards: () => void; } export function TeamRankingsTemplate({ viewData, onSearchChange, onSkillChange, onSortChange, onPageChange, currentPage, totalPages, totalTeams, onTeamClick, onBackToLeaderboards, }: TeamRankingsTemplateProps) { const { searchQuery, selectedSkill, sortBy, teams } = viewData; const levelOptions = [ { value: 'all', label: 'All Levels' }, { value: 'pro', label: 'Professional' }, { value: 'advanced', label: 'Advanced' }, { value: 'intermediate', label: 'Intermediate' }, { value: 'beginner', label: 'Beginner' }, ]; const sortOptions = [ { value: 'rank', label: 'Rank' }, { value: 'rating', label: 'Rating' }, { value: 'wins', label: 'Wins' }, { value: 'memberCount', label: 'Members' }, ]; return (
{/* Header */} Team Leaderboard Global Performance Index onSortChange(e.target.value as SortBy)} data-testid="sort-filter" /> Showing {totalTeams} teams Rank Team Personnel Races Wins Rating {teams.length > 0 ? ( teams.map((team) => ( onTeamClick(team.id)} clickable data-testid={`standing-team-${team.id}`} > #{team.position} {team.name} {team.performanceLevel} {team.memberCount} {team.totalRaces} {team.totalWins} {team.rating?.toFixed(0) || '1000'} )) ) : ( No teams found matching criteria )}
{totalPages > 1 && ( Page {currentPage} of {totalPages} )}
); }