Files
gridpilot.gg/apps/website/components/leaderboards/RankingListItem.tsx
2026-01-18 23:24:30 +01:00

69 lines
1.8 KiB
TypeScript

import { Stack } from '@/ui/Stack';
import { Text } from '@/ui/Text';
interface RankingListItemProps {
name: string;
type: 'overall' | 'league';
rank: number;
totalDrivers: number;
percentile: number;
rating: number;
}
export function RankingListItem({
name,
type,
rank,
totalDrivers,
percentile,
rating,
}: RankingListItemProps) {
return (
<Stack
display="flex"
alignItems="center"
justifyContent="between"
py={2}
px={3}
rounded="lg"
bg="bg-deep-graphite/60"
>
<Stack gap={0}>
<Text size="sm" weight="medium" color="text-white">
{name}
</Text>
<Text size="xs" color="text-gray-400">
{type === 'overall' ? 'Overall' : 'League'} ranking
</Text>
</Stack>
<Stack display="flex" alignItems="center" gap={6} textAlign="right">
<Stack>
<Text color="text-primary-blue" size="base" weight="semibold" block>
#{rank}
</Text>
<Text color="text-gray-500" size="xs" block>Position</Text>
</Stack>
<Stack>
<Text color="text-white" size="sm" weight="semibold" block>
{totalDrivers}
</Text>
<Text color="text-gray-500" size="xs" block>Drivers</Text>
</Stack>
<Stack>
<Text color="text-green-400" size="sm" weight="semibold" block>
{percentile.toFixed(1)}%
</Text>
<Text color="text-gray-500" size="xs" block>Percentile</Text>
</Stack>
<Stack>
<Text color="text-warning-amber" size="sm" weight="semibold" block>
{rating}
</Text>
<Text color="text-gray-500" size="xs" block>Rating</Text>
</Stack>
</Stack>
</Stack>
);
}