Add contributor leaderboard

Add types, hook, UI components, and integration for leaderboard showing top users with badges
This commit is contained in:
gpt-engineer-app[bot]
2025-11-11 17:51:15 +00:00
parent 947964482f
commit 9b1c2415b0
9 changed files with 761 additions and 4 deletions

53
src/types/contributor.ts Normal file
View File

@@ -0,0 +1,53 @@
// Contributor leaderboard types
export type AchievementLevel = 'newcomer' | 'bronze' | 'silver' | 'gold' | 'platinum' | 'legend';
export type SpecialBadge =
| 'park_explorer'
| 'ride_master'
| 'photographer'
| 'critic'
| 'editor'
| 'completionist'
| 'veteran'
| 'top_contributor';
export interface ContributorStats {
parks_added: number;
rides_added: number;
companies_added: number;
models_added: number;
photos_added: number;
reviews_added: number;
edits_made: number;
}
export interface TotalContributorStats {
total_parks: number;
total_rides: number;
total_photos: number;
total_reviews: number;
total_edits: number;
}
export interface LeaderboardContributor {
rank: number;
user_id: string;
username: string;
display_name: string | null;
avatar_url: string | null;
join_date: string;
contribution_score: number;
total_score: number;
achievement_level: AchievementLevel;
special_badges: SpecialBadge[];
stats: ContributorStats;
total_stats: TotalContributorStats;
}
export interface LeaderboardData {
contributors: LeaderboardContributor[];
total_contributors: number;
generated_at: string;
}
export type TimePeriod = 'all_time' | 'month' | 'week';