website refactor

This commit is contained in:
2026-01-18 16:43:32 +01:00
parent 13567d51af
commit b263de3a35
418 changed files with 1986 additions and 2161 deletions

View File

@@ -1,18 +1,7 @@
import React from 'react';
import { Image } from '@/ui/Image';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import { Card } from '@/ui/Card';
import { Stack } from '@/ui/Stack';
interface ActiveDriverCardProps {
name: string;
avatarUrl?: string;
categoryLabel?: string;
categoryColor?: string;
skillLevelLabel?: string;
skillLevelColor?: string;
onClick: () => void;
}
export function ActiveDriverCard({
name,

View File

@@ -1,10 +1,10 @@
import { Box } from '@/ui/Box';
import { Card } from '@/ui/Card';
import { Grid } from '@/ui/Grid';
import { Heading } from '@/ui/Heading';
import { Icon } from '@/ui/Icon';
import { Box } from '@/ui/primitives/Box';
import { Grid } from '@/ui/primitives/Grid';
import { StatGridItem } from '@/ui/StatGridItem';
import { TrendingUp } from 'lucide-react';

View File

@@ -1,13 +1,13 @@
'use client';
import React, { useState, FormEvent } from 'react';
import { Input } from '@/ui/Input';
import { Button } from '@/ui/Button';
import { Stack } from '@/ui/Stack';
import { InfoBox } from '@/ui/InfoBox';
import { Input } from '@/ui/Input';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import { TextArea } from '@/ui/TextArea';
import { InfoBox } from '@/ui/InfoBox';
import { AlertCircle } from 'lucide-react';
import React, { FormEvent, useState } from 'react';
interface FormErrors {
name?: string;

View File

@@ -1,11 +1,10 @@
import React from 'react';
import { Card } from '@/ui/Card';
import { RankBadge } from '@/components/leaderboards/RankBadge';
import { DriverIdentity } from '@/components/drivers/DriverIdentity';
import { DriverViewModel } from '@/lib/view-models/DriverViewModel';
import { Stack } from '@/ui/Stack';
import { DriverStats } from '@/components/drivers/DriverStats';
import { RankBadge } from '@/components/leaderboards/RankBadge';
import { routes } from '@/lib/routing/RouteConfig';
import { DriverViewModel } from '@/lib/view-models/DriverViewModel';
import { Card } from '@/ui/Card';
import { Stack } from '@/ui/primitives/Stack';
export interface DriverCardProps {
id: string;

View File

@@ -1,12 +1,12 @@
import { CountryFlagDisplay } from '@/lib/display-objects/CountryFlagDisplay';
import { Zap } from 'lucide-react';
import { Badge } from '@/ui/Badge';
import { Stack } from '@/ui/Stack';
import { Icon } from '@/ui/Icon';
import { Image } from '@/ui/Image';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import { Zap } from 'lucide-react';
interface DriverEntryRowProps {
index: number;

View File

@@ -1,8 +1,8 @@
import React from 'react';
import { Stack } from '@/ui/Stack';
import { Text } from '@/ui/Text';
import { Image } from '@/ui/Image';
import { RatingBadge } from '@/components/drivers/RatingBadge';
import { Image } from '@/ui/Image';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import React from 'react';
interface DriverHeaderPanelProps {
name: string;

View File

@@ -1,9 +1,9 @@
import { Link } from '@/ui/Link';
import { PlaceholderImage } from '@/ui/PlaceholderImage';
import { Box } from '@/ui/Box';
import { Text } from '@/ui/Text';
import { Badge } from '@/ui/Badge';
import { Image } from '@/ui/Image';
import { Link } from '@/ui/Link';
import { PlaceholderImage } from '@/ui/PlaceholderImage';
import { Box } from '@/ui/primitives/Box';
import { Text } from '@/ui/Text';
export interface DriverIdentityProps {
driver: {

View File

@@ -1,9 +1,8 @@
'use client';
import React from 'react';
import { Heading } from '@/ui/Heading';
import { Text } from '@/ui/Text';
import { Box } from '@/ui/Box';
import { Box } from '@/ui/primitives/Box';
interface DriverPerformanceOverviewProps {
stats: {

View File

@@ -1,17 +1,17 @@
'use client';
import type { DriverViewModel } from '@/lib/view-models/DriverViewModel';
import { Card } from '@/ui/Card';
import { Stack } from '@/ui/Stack';
import { Text } from '@/ui/Text';
import { Heading } from '@/ui/Heading';
import { StatCard } from '@/ui/StatCard';
import { ProfileHeader } from '@/components/drivers/ProfileHeader';
import { ProfileStats } from './ProfileStats';
import { CareerHighlights } from '@/components/drivers/CareerHighlights';
import { DriverRankings } from '@/components/drivers/DriverRankings';
import { PerformanceMetrics } from '@/components/drivers/PerformanceMetrics';
import { ProfileHeader } from '@/components/drivers/ProfileHeader';
import { useDriverProfile } from "@/hooks/driver/useDriverProfile";
import type { DriverViewModel } from '@/lib/view-models/DriverViewModel';
import { Card } from '@/ui/Card';
import { Heading } from '@/ui/Heading';
import { Stack } from '@/ui/primitives/Stack';
import { StatCard } from '@/ui/StatCard';
import { Text } from '@/ui/Text';
import { ProfileStats } from './ProfileStats';
interface DriverProfileProps {
driver: DriverViewModel;

View File

@@ -1,13 +1,12 @@
'use client';
import React from 'react';
import { Globe, Trophy, UserPlus, Check } from 'lucide-react';
import { Heading } from '@/ui/Heading';
import { Text } from '@/ui/Text';
import { Button } from '@/ui/Button';
import { RatingBadge } from '@/components/drivers/RatingBadge';
import { Stack } from '@/ui/Stack';
import { Button } from '@/ui/Button';
import { Heading } from '@/ui/Heading';
import { Image } from '@/ui/Image';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import { Check, Globe, Trophy, UserPlus } from 'lucide-react';
import { SafetyRatingBadge } from './SafetyRatingBadge';
interface DriverProfileHeaderProps {

View File

@@ -1,9 +1,8 @@
'use client';
import React from 'react';
import { LayoutDashboard, BarChart3, ShieldCheck } from 'lucide-react';
import { Text } from '@/ui/Text';
import { Box } from '@/ui/Box';
import { Box } from '@/ui/primitives/Box';
import { BarChart3, LayoutDashboard, ShieldCheck } from 'lucide-react';
export type ProfileTab = 'overview' | 'stats' | 'ratings';

View File

@@ -1,10 +1,9 @@
'use client';
import React from 'react';
import { Heading } from '@/ui/Heading';
import { Text } from '@/ui/Text';
import { Stack } from '@/ui/Stack';
import { MapPin, Car, Clock, Users2, MailCheck } from 'lucide-react';
import { Stack } from '@/ui/primitives/Stack';
import { Car, Clock, MailCheck, MapPin, Users2 } from 'lucide-react';
interface DriverRacingProfileProps {
racingStyle?: string | null;

View File

@@ -1,7 +1,7 @@
import { Box } from '@/ui/Box';
import { Icon } from '@/ui/Icon';
import { Box } from '@/ui/primitives/Box';
import { Text } from '@/ui/Text';
import { Star, Trophy } from 'lucide-react';

View File

@@ -1,9 +1,8 @@
'use client';
import React from 'react';
import { Search } from 'lucide-react';
import { Box } from '@/ui/Box';
import { Input } from '@/ui/Input';
import { Box } from '@/ui/primitives/Box';
import { Search } from 'lucide-react';
interface DriverSearchBarProps {
query: string;

View File

@@ -1,5 +1,4 @@
import React from 'react';
import { Stack } from '@/ui/Stack';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
interface DriverStatsProps {

View File

@@ -1,8 +1,7 @@
'use client';
import React from 'react';
import { Text } from '@/ui/Text';
import { Box } from '@/ui/Box';
import { Box } from '@/ui/primitives/Box';
interface StatItem {
label: string;

View File

@@ -1,11 +1,11 @@
import React from 'react';
import { Stack } from '@/ui/Stack';
import { Image } from '@/ui/Image';
import { Link } from '@/ui/Link';
import { PlaceholderImage } from '@/ui/PlaceholderImage';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import React from 'react';
interface DriverSummaryPillProps {
name: string;

View File

@@ -1,10 +1,10 @@
'use client';
import React from 'react';
import { TrendingUp } from 'lucide-react';
import { Heading } from '@/ui/Heading';
import { Text } from '@/ui/Text';
import { Stack } from '@/ui/Stack';
import { Stack } from '@/ui/primitives/Stack';
import { TrendingUp } from 'lucide-react';
import React from 'react';
interface DriverTableProps {
children: React.ReactNode;

View File

@@ -1,10 +1,9 @@
'use client';
import React from 'react';
import { RatingBadge } from '@/components/drivers/RatingBadge';
import { Text } from '@/ui/Text';
import { Stack } from '@/ui/Stack';
import { Image } from '@/ui/Image';
import { Text } from '@/ui/Text';
import { Stack } from '@/ui/primitives/Stack';
interface DriverTableRowProps {
rank: number;

View File

@@ -1,11 +1,10 @@
'use client';
import React from 'react';
import { Users, Trophy } from 'lucide-react';
import { Heading } from '@/ui/Heading';
import { Text } from '@/ui/Text';
import { Button } from '@/ui/Button';
import { Stack } from '@/ui/Stack';
import { Heading } from '@/ui/Heading';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import { Trophy, Users } from 'lucide-react';
interface DriverStat {
label: string;

View File

@@ -1,8 +1,8 @@
import { Box } from '@/ui/Box';
import { Icon } from '@/ui/Icon';
import { Input } from '@/ui/Input';
import { Box } from '@/ui/primitives/Box';
import { Search } from 'lucide-react';
interface DriversSearchProps {

View File

@@ -1,13 +1,13 @@
import { MedalBadge } from '@/components/leaderboards/MedalBadge';
import { mediaConfig } from '@/lib/config/mediaConfig';
import { Badge } from '@/ui/Badge';
import { Box } from '@/ui/Box';
import { Heading } from '@/ui/Heading';
import { Icon } from '@/ui/Icon';
import { Image } from '@/ui/Image';
import { MedalBadge } from '@/components/leaderboards/MedalBadge';
import { MiniStat } from '@/ui/MiniStat';
import { Box } from '@/ui/primitives/Box';
import { Text } from '@/ui/Text';
import { Flag, Shield, Star, TrendingUp } from 'lucide-react';

View File

@@ -1,11 +1,11 @@
import { Card } from '@/ui/Card';
import { Button } from '@/ui/Button';
import { Car, Download, Trash2, Edit } from 'lucide-react';
import { Stack } from '@/ui/Stack';
import { Text } from '@/ui/Text';
import { Heading } from '@/ui/Heading';
import { Badge } from '@/ui/Badge';
import { Button } from '@/ui/Button';
import { Card } from '@/ui/Card';
import { Heading } from '@/ui/Heading';
import { Icon } from '@/ui/Icon';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import { Car, Download, Edit, Trash2 } from 'lucide-react';
interface DriverLiveryItem {
id: string;

View File

@@ -1,7 +1,7 @@
import { Box } from '@/ui/Box';
import { Card } from '@/ui/Card';
import { Box } from '@/ui/primitives/Box';
import { Text } from '@/ui/Text';
interface PerformanceMetricsProps {

View File

@@ -1,13 +1,13 @@
import { Stack } from '@/ui/Stack';
import { Card } from '@/ui/Card';
import { CircularProgress } from '@/ui/CircularProgress';
import { Grid } from '@/ui/Grid';
import { GridItem } from '@/ui/GridItem';
import { Heading } from '@/ui/Heading';
import { HorizontalBarChart } from '@/ui/HorizontalBarChart';
import { Icon } from '@/ui/Icon';
import { Grid } from '@/ui/primitives/Grid';
import { GridItem } from '@/ui/primitives/GridItem';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import { Activity, BarChart3, Target, TrendingUp } from 'lucide-react';

View File

@@ -1,14 +1,14 @@
import { DriverRatingPill } from '@/components/drivers/DriverRatingPill';
import type { DriverViewModel } from '@/lib/view-models/DriverViewModel';
import { Badge } from '@/ui/Badge';
import { Stack } from '@/ui/Stack';
import { Button } from '@/ui/Button';
import { CountryFlag } from '@/ui/CountryFlag';
import { DriverRatingPill } from '@/components/drivers/DriverRatingPill';
import { Heading } from '@/ui/Heading';
import { Image } from '@/ui/Image';
import { PlaceholderImage } from '@/ui/PlaceholderImage';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
interface ProfileHeaderProps {

View File

@@ -2,12 +2,12 @@
import { mediaConfig } from '@/lib/config/mediaConfig';
import { CountryFlagDisplay } from '@/lib/display-objects/CountryFlagDisplay';
import { Stack } from '@/ui/Stack';
import { Button } from '@/ui/Button';
import { Heading } from '@/ui/Heading';
import { Image } from '@/ui/Image';
import { Link } from '@/ui/Link';
import { Surface } from '@/ui/Surface';
import { Stack } from '@/ui/primitives/Stack';
import { Surface } from '@/ui/primitives/Surface';
import { Text } from '@/ui/Text';
import { Calendar, Clock, ExternalLink, Globe, Star, Trophy, UserPlus } from 'lucide-react';

View File

@@ -1,14 +1,14 @@
'use client';
import { useState, useEffect } from 'react';
import { Card } from '@/ui/Card';
import { Button } from '@/ui/Button';
import { Stack } from '@/ui/Stack';
import { Text } from '@/ui/Text';
import { LoadingWrapper } from '@/components/shared/state/LoadingWrapper';
import { EmptyState } from '@/components/shared/state/EmptyState';
import { LoadingWrapper } from '@/components/shared/state/LoadingWrapper';
import { Button } from '@/ui/Button';
import { Card } from '@/ui/Card';
import { Pagination } from '@/ui/Pagination';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import { Trophy } from 'lucide-react';
import { useEffect, useState } from 'react';
interface RaceHistoryProps {
driverId: string;

View File

@@ -1,16 +1,16 @@
'use client';
import { useState } from 'react';
import type { DriverProfileDriverSummaryViewModel } from '@/lib/view-models/DriverProfileViewModel';
import { Card } from '@/ui/Card';
import { Button } from '@/ui/Button';
import { Input } from '@/ui/Input';
import { Stack } from '@/ui/Stack';
import { Heading } from '@/ui/Heading';
import { Select } from '@/ui/Select';
import { Toggle } from '@/ui/Toggle';
import { TextArea } from '@/ui/TextArea';
import { Card } from '@/ui/Card';
import { Checkbox } from '@/ui/Checkbox';
import { Heading } from '@/ui/Heading';
import { Input } from '@/ui/Input';
import { Stack } from '@/ui/primitives/Stack';
import { Select } from '@/ui/Select';
import { TextArea } from '@/ui/TextArea';
import { Toggle } from '@/ui/Toggle';
import { useState } from 'react';
interface ProfileSettingsProps {
driver: DriverProfileDriverSummaryViewModel;

View File

@@ -1,13 +1,13 @@
'use client';
import { useDriverProfile } from "@/hooks/driver/useDriverProfile";
import { useMemo } from 'react';
import { Card } from '@/ui/Card';
import { Stack } from '@/ui/Stack';
import { Text } from '@/ui/Text';
import { Heading } from '@/ui/Heading';
import { StatCard } from '@/ui/StatCard';
import { RankBadge } from '@/components/leaderboards/RankBadge';
import { useDriverProfile } from "@/hooks/driver/useDriverProfile";
import { Card } from '@/ui/Card';
import { Heading } from '@/ui/Heading';
import { Stack } from '@/ui/primitives/Stack';
import { StatCard } from '@/ui/StatCard';
import { Text } from '@/ui/Text';
import { useMemo } from 'react';
interface ProfileStatsProps {
driverId?: string;

View File

@@ -1,9 +1,9 @@
import { Stack } from '@/ui/Stack';
import { Card , Card as Surface } from '@/ui/Card';
import { Card, Card as Surface } from '@/ui/Card';
import { Heading } from '@/ui/Heading';
import { Icon } from '@/ui/Icon';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import { Flag, UserPlus, Users } from 'lucide-react';

View File

@@ -1,10 +1,10 @@
import { Stack } from '@/ui/Stack';
import { Card } from '@/ui/Card';
import { Heading } from '@/ui/Heading';
import { RatingComponent } from '@/components/drivers/RatingComponent';
import { RatingHistoryItem } from '@/components/drivers/RatingHistoryItem';
import { Card } from '@/ui/Card';
import { Heading } from '@/ui/Heading';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
interface RatingBreakdownProps {

View File

@@ -1,6 +1,6 @@
import { Stack } from '@/ui/Stack';
import { Stack } from '@/ui/primitives/Stack';
import { ProgressBar } from '@/ui/ProgressBar';
import { Text } from '@/ui/Text';

View File

@@ -1,6 +1,6 @@
import { Box } from '@/ui/Box';
import { Box } from '@/ui/primitives/Box';
import { Text } from '@/ui/Text';
interface RatingHistoryItemProps {

View File

@@ -1,9 +1,8 @@
'use client';
import React from 'react';
import { Shield } from 'lucide-react';
import { Text } from '@/ui/Text';
import { Box } from '@/ui/Box';
import { Box } from '@/ui/primitives/Box';
import { Shield } from 'lucide-react';
interface SafetyRatingBadgeProps {
rating: number;

View File

@@ -1,8 +1,8 @@
import { Box } from '@/ui/Box';
import { Heading } from '@/ui/Heading';
import { Icon } from '@/ui/Icon';
import { Box } from '@/ui/primitives/Box';
import { Text } from '@/ui/Text';
import { BarChart3 } from 'lucide-react';

View File

@@ -1,9 +1,8 @@
import React from 'react';
import { LucideIcon } from 'lucide-react';
import { Button } from '@/ui/Button';
import { Stack } from '@/ui/Stack';
import { Text } from '@/ui/Text';
import { Icon } from '@/ui/Icon';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import { LucideIcon } from 'lucide-react';
interface SkillLevelButtonProps {
label: string;

View File

@@ -1,10 +1,9 @@
import React from 'react';
import { LucideIcon, ChevronRight, UserPlus } from 'lucide-react';
import { Stack } from '@/ui/Stack';
import { Text } from '@/ui/Text';
import { Badge } from '@/ui/Badge';
import { Heading } from '@/ui/Heading';
import { Icon } from '@/ui/Icon';
import { Badge } from '@/ui/Badge';
import { Stack } from '@/ui/primitives/Stack';
import { Text } from '@/ui/Text';
import { ChevronRight, LucideIcon, UserPlus } from 'lucide-react';
interface SkillLevelHeaderProps {
label: string;