This commit is contained in:
2025-12-18 14:30:19 +01:00
parent bf1f09c774
commit b476bb7e99
29 changed files with 273 additions and 307 deletions

View File

@@ -1,42 +1,41 @@
'use client';
import { useState, useEffect } from 'react';
import { useRouter, useParams } from 'next/navigation';
import Link from 'next/link';
import Breadcrumbs from '@/components/layout/Breadcrumbs';
import EndRaceModal from '@/components/leagues/EndRaceModal';
import FileProtestModal from '@/components/races/FileProtestModal';
import SponsorInsightsCard, { MetricBuilders, SlotTemplates, useSponsorMode } from '@/components/sponsors/SponsorInsightsCard';
import Button from '@/components/ui/Button';
import Card from '@/components/ui/Card';
import Heading from '@/components/ui/Heading';
import Breadcrumbs from '@/components/layout/Breadcrumbs';
import FileProtestModal from '@/components/races/FileProtestModal';
import EndRaceModal from '@/components/leagues/EndRaceModal';
import SponsorInsightsCard, { useSponsorMode, MetricBuilders, SlotTemplates } from '@/components/sponsors/SponsorInsightsCard';
import { useEffectiveDriverId } from '@/hooks/useEffectiveDriverId';
import { apiClient } from '@/lib/apiClient';
import { useEffectiveDriverId } from '@/lib/currentDriver';
import { getMembership, isOwnerOrAdmin } from '@/lib/leagueMembership';
import type {
RaceDetailViewModel,
RaceDetailEntryViewModel,
RaceDetailUserResultViewModel,
RaceDetailViewModel,
} from '@core/racing/application/presenters/IRaceDetailPresenter';
import {
Calendar,
Clock,
Car,
Trophy,
Users,
Zap,
PlayCircle,
CheckCircle2,
XCircle,
Flag,
UserPlus,
UserMinus,
AlertTriangle,
ArrowRight,
ArrowLeft,
ArrowRight,
Calendar,
Car,
CheckCircle2,
Clock,
Flag,
PlayCircle,
Scale,
Trophy,
UserMinus,
UserPlus,
Users,
XCircle,
Zap,
} from 'lucide-react';
import { RaceDetailPresenter } from '@/lib/presenters/RaceDetailPresenter';
import Link from 'next/link';
import { useParams, useRouter } from 'next/navigation';
import { useEffect, useState } from 'react';
export default function RaceDetailPage() {
const router = useRouter();

View File

@@ -1,18 +1,17 @@
'use client';
import { useState, useEffect } from 'react';
import { useRouter, useParams } from 'next/navigation';
import { ArrowLeft, Zap, Trophy, Users, Clock, Calendar } from 'lucide-react';
import Breadcrumbs from '@/components/layout/Breadcrumbs';
import QuickPenaltyModal from '@/components/leagues/QuickPenaltyModal';
import ImportResultsForm from '@/components/races/ImportResultsForm';
import ResultsTable from '@/components/races/ResultsTable';
import Button from '@/components/ui/Button';
import Card from '@/components/ui/Card';
import Breadcrumbs from '@/components/layout/Breadcrumbs';
import ResultsTable from '@/components/races/ResultsTable';
import ImportResultsForm from '@/components/races/ImportResultsForm';
import QuickPenaltyModal from '@/components/leagues/QuickPenaltyModal';
import { useEffectiveDriverId } from '@/hooks/useEffectiveDriverId';
import { raceResultsService } from '@/lib/services/races/RaceResultsService';
import { useEffectiveDriverId } from '@/lib/currentDriver';
import { isLeagueAdminOrHigherRole } from '@/lib/leagueRoles';
import type { RaceResultsDetailViewModel } from '@/lib/view-models';
import { ArrowLeft, Calendar, Trophy, Users, Zap } from 'lucide-react';
import { useParams, useRouter } from 'next/navigation';
import { useEffect, useState } from 'react';
export default function RaceResultsPage() {
const router = useRouter();

View File

@@ -1,31 +1,25 @@
'use client';
import { useState, useEffect } from 'react';
import { useParams, useRouter } from 'next/navigation';
import Link from 'next/link';
import {
AlertTriangle,
Clock,
CheckCircle,
Flag,
Calendar,
MapPin,
AlertCircle,
Video,
Gavel,
ArrowLeft,
Scale,
ChevronRight,
Users,
Trophy,
} from 'lucide-react';
import Card from '@/components/ui/Card';
import Button from '@/components/ui/Button';
import Breadcrumbs from '@/components/layout/Breadcrumbs';
import Button from '@/components/ui/Button';
import Card from '@/components/ui/Card';
import { useEffectiveDriverId } from '@/hooks/useEffectiveDriverId';
import type { RacePenaltiesViewModel, RaceProtestsViewModel } from '@/lib/apiClient';
import { apiClient } from '@/lib/apiClient';
import { useEffectiveDriverId } from '@/lib/currentDriver';
import { isLeagueAdminOrHigherRole } from '@/lib/leagueRoles';
import type { RaceProtestsViewModel, RacePenaltiesViewModel } from '@/lib/apiClient';
import {
AlertCircle,
AlertTriangle,
ArrowLeft,
CheckCircle,
Clock,
Flag,
Gavel,
Scale,
Video
} from 'lucide-react';
import Link from 'next/link';
import { useParams, useRouter } from 'next/navigation';
import { useEffect, useState } from 'react';
export default function RaceStewardingPage() {
const params = useParams();