96 lines
3.1 KiB
TypeScript
96 lines
3.1 KiB
TypeScript
|
|
|
|
import { AchievementCard } from '@/components/achievements/AchievementCard';
|
|
import { Box } from '@/ui/Box';
|
|
import { Card } from '@/ui/Card';
|
|
import { GoalCard } from '@/ui/GoalCard';
|
|
import { Heading } from '@/ui/Heading';
|
|
import { MilestoneItem } from '@/components/achievements/MilestoneItem';
|
|
import { Stack } from '@/ui/Stack';
|
|
|
|
interface Achievement {
|
|
id: string;
|
|
title: string;
|
|
description: string;
|
|
icon: string;
|
|
unlockedAt: string;
|
|
rarity: 'common' | 'rare' | 'epic' | 'legendary';
|
|
}
|
|
|
|
const mockAchievements: Achievement[] = [
|
|
{ id: '1', title: 'First Victory', description: 'Won your first race', icon: '🏆', unlockedAt: '2024-03-15', rarity: 'common' },
|
|
{ id: '2', title: '10 Podiums', description: 'Achieved 10 podium finishes', icon: '🥈', unlockedAt: '2024-05-22', rarity: 'rare' },
|
|
{ id: '3', title: 'Clean Racer', description: 'Completed 25 races with 0 incidents', icon: '✨', unlockedAt: '2024-08-10', rarity: 'epic' },
|
|
{ id: '4', title: 'Comeback King', description: 'Won a race after starting P10 or lower', icon: '⚡', unlockedAt: '2024-09-03', rarity: 'rare' },
|
|
{ id: '5', title: 'Perfect Weekend', description: 'Pole, fastest lap, and win in same race', icon: '💎', unlockedAt: '2024-10-17', rarity: 'legendary' },
|
|
{ id: '6', title: 'Century Club', description: 'Completed 100 races', icon: '💯', unlockedAt: '2024-11-01', rarity: 'epic' },
|
|
];
|
|
|
|
export function CareerHighlights() {
|
|
return (
|
|
<Stack gap={6}>
|
|
<Card>
|
|
<Heading level={3} mb={4}>Key Milestones</Heading>
|
|
|
|
<Stack gap={3}>
|
|
<MilestoneItem
|
|
label="First Race"
|
|
value="March 15, 2024"
|
|
icon="🏁"
|
|
/>
|
|
<MilestoneItem
|
|
label="First Win"
|
|
value="March 15, 2024 (Imola)"
|
|
icon="🏆"
|
|
/>
|
|
<MilestoneItem
|
|
label="Highest Rating"
|
|
value="1487 (Nov 2024)"
|
|
icon="📈"
|
|
/>
|
|
<MilestoneItem
|
|
label="Longest Win Streak"
|
|
value="4 races (Oct 2024)"
|
|
icon="🔥"
|
|
/>
|
|
<MilestoneItem
|
|
label="Most Wins (Track)"
|
|
value="Spa-Francorchamps (7)"
|
|
icon="🗺️"
|
|
/>
|
|
<MilestoneItem
|
|
label="Favorite Car"
|
|
value="Porsche 911 GT3 R (45 races)"
|
|
icon="🏎️"
|
|
/>
|
|
</Stack>
|
|
</Card>
|
|
|
|
<Card>
|
|
<Heading level={3} mb={4}>Achievements</Heading>
|
|
|
|
<Box display="grid" gridCols={{ base: 1, sm: 2 }} gap={3}>
|
|
{mockAchievements.map((achievement) => (
|
|
<AchievementCard
|
|
key={achievement.id}
|
|
title={achievement.title}
|
|
description={achievement.description}
|
|
icon={achievement.icon}
|
|
unlockedAt={achievement.unlockedAt}
|
|
rarity={achievement.rarity}
|
|
/>
|
|
))}
|
|
</Box>
|
|
</Card>
|
|
|
|
<GoalCard
|
|
title="Next Goals"
|
|
icon="🎯"
|
|
goalLabel="Win 25 races"
|
|
currentValue={23}
|
|
maxValue={25}
|
|
/>
|
|
</Stack>
|
|
);
|
|
}
|