Files
gridpilot.gg/apps/website/lib/view-data/DriverRankingsViewData.ts
2026-01-12 16:12:01 +01:00

46 lines
1.2 KiB
TypeScript

/**
* DriverRankingsViewData - Pure ViewData for DriverRankingsTemplate
* Contains only raw serializable data, no methods or computed properties
*/
export interface DriverRankingItem {
id: string;
name: string;
rating: number;
skillLevel: string;
nationality: string;
racesCompleted: number;
wins: number;
podiums: number;
rank: number;
avatarUrl: string;
winRate: string;
medalBg: string;
medalColor: string;
}
export interface PodiumDriver {
id: string;
name: string;
rating: number;
wins: number;
podiums: number;
avatarUrl: string;
position: 1 | 2 | 3;
}
export interface DriverRankingsViewData {
drivers: DriverRankingItem[];
podium: PodiumDriver[];
searchQuery: string;
selectedSkill: 'all' | 'pro' | 'advanced' | 'intermediate' | 'beginner';
sortBy: 'rank' | 'rating' | 'wins' | 'podiums' | 'winRate';
showFilters: boolean;
onSearchChange: (query: string) => void;
onSkillChange: (skill: 'all' | 'pro' | 'advanced' | 'intermediate' | 'beginner') => void;
onSortChange: (sort: 'rank' | 'rating' | 'wins' | 'podiums' | 'winRate') => void;
onToggleFilters: () => void;
onDriverClick: (id: string) => void;
onBackToLeaderboards: () => void;
onClearFilters: () => void;
}