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,9 +1,9 @@
'use client';
import { useEffectiveDriverId } from '@/hooks/useEffectiveDriverId';
import { getMembership } from '@/lib/leagueMembership';
import { useState } from 'react';
import Button from '../ui/Button';
import { getMembership, type MembershipStatus } from '@/lib/leagueMembership';
import { useEffectiveDriverId } from '@/lib/currentDriver';
interface JoinLeagueButtonProps {
leagueId: string;

View File

@@ -1,41 +1,41 @@
'use client';
import { useState, useEffect, useCallback } from 'react';
import { useRouter, useSearchParams, usePathname } from 'next/navigation';
import Button from '../ui/Button';
import Card from '../ui/Card';
import LeagueMembers from './LeagueMembers';
import ScheduleRaceForm from './ScheduleRaceForm';
import DriverIdentity from '@/components/drivers/DriverIdentity';
import DriverSummaryPill from '@/components/profile/DriverSummaryPill';
import Modal from '@/components/ui/Modal';
import { useEffectiveDriverId } from '@/hooks/useEffectiveDriverId';
import type { MembershipRole } from '@/lib/leagueMembership';
import type { LeagueSummaryViewModel } from '@/lib/presenters/LeagueAdminPresenter';
import {
loadLeagueJoinRequests,
approveLeagueJoinRequest,
rejectLeagueJoinRequest,
loadLeagueOwnerSummary,
loadLeagueConfig,
loadLeagueJoinRequests,
loadLeagueOwnerSummary,
loadLeagueProtests,
loadLeagueSeasons,
rejectLeagueJoinRequest,
removeLeagueMember as removeLeagueMemberCommand,
updateLeagueMemberRole as updateLeagueMemberRoleCommand,
loadLeagueSeasons,
type LeagueAdminProtestsViewModel,
type LeagueJoinRequestViewModel,
type LeagueOwnerSummaryViewModel,
type LeagueAdminProtestsViewModel,
type LeagueSeasonSummaryViewModel,
} from '@/lib/presenters/LeagueAdminPresenter';
import type { LeagueConfigFormModel } from '@core/racing/application';
import type { LeagueSummaryViewModel } from '@/lib/presenters/LeagueAdminPresenter';
import { AlertTriangle, Calendar, Car, CheckCircle, Clock, DollarSign, Download, Flag, Paintbrush, Trophy, Upload, User, Wallet, XCircle } from 'lucide-react';
import { usePathname, useRouter, useSearchParams } from 'next/navigation';
import { useCallback, useEffect, useState } from 'react';
import Button from '../ui/Button';
import Card from '../ui/Card';
import { LeagueBasicsSection } from './LeagueBasicsSection';
import { LeagueStructureSection } from './LeagueStructureSection';
import { LeagueScoringSection } from './LeagueScoringSection';
import { LeagueDropSection } from './LeagueDropSection';
import { LeagueTimingsSection } from './LeagueTimingsSection';
import { LeagueSponsorshipsSection } from './LeagueSponsorshipsSection';
import LeagueMembers from './LeagueMembers';
import { LeagueMembershipFeesSection } from './LeagueMembershipFeesSection';
import { useEffectiveDriverId } from '@/lib/currentDriver';
import type { MembershipRole } from '@/lib/leagueMembership';
import DriverSummaryPill from '@/components/profile/DriverSummaryPill';
import DriverIdentity from '@/components/drivers/DriverIdentity';
import Modal from '@/components/ui/Modal';
import { AlertTriangle, CheckCircle, Clock, XCircle, Flag, Calendar, User, DollarSign, Wallet, Paintbrush, Trophy, Download, Car, Upload } from 'lucide-react';
import { LeagueScoringSection } from './LeagueScoringSection';
import { LeagueSponsorshipsSection } from './LeagueSponsorshipsSection';
import { LeagueStructureSection } from './LeagueStructureSection';
import { LeagueTimingsSection } from './LeagueTimingsSection';
import ScheduleRaceForm from './ScheduleRaceForm';
type JoinRequest = LeagueJoinRequestViewModel;

View File

@@ -1,15 +1,15 @@
'use client';
import { useState, useEffect, useCallback } from 'react';
import DriverIdentity from '@/components/drivers/DriverIdentity';
import type { DriverDTO } from '@core/racing/application/dto/DriverDTO';
import { EntityMappers } from '@core/racing/application/mappers/EntityMappers';
import { useEffectiveDriverId } from '@/hooks/useEffectiveDriverId';
import {
getLeagueMembers,
type LeagueMembership,
type MembershipRole,
} from '@/lib/leagueMembership';
import { useEffectiveDriverId } from '@/lib/currentDriver';
import type { DriverDTO } from '@core/racing/application/dto/DriverDTO';
import { EntityMappers } from '@core/racing/application/mappers/EntityMappers';
import { useCallback, useEffect, useState } from 'react';
interface LeagueMembersProps {
leagueId: string;

View File

@@ -1,10 +1,9 @@
'use client';
import { useState, useEffect, useCallback } from 'react';
import { useRouter } from 'next/navigation';
import { useEffectiveDriverId } from '@/lib/currentDriver';
import { createLeagueSchedulePresenter } from '@/lib/presenters/factories';
import { useEffectiveDriverId } from '@/hooks/useEffectiveDriverId';
import type { LeagueScheduleRaceItemViewModel } from '@/lib/presenters/LeagueSchedulePresenter';
import { useRouter } from 'next/navigation';
import { useCallback, useEffect, useState } from 'react';
interface LeagueScheduleProps {
leagueId: string;

View File

@@ -1,13 +1,13 @@
'use client';
import { useState, useEffect, useCallback } from 'react';
import { Award, DollarSign, Star, X } from 'lucide-react';
import { useCallback, useEffect, useState } from 'react';
import PendingSponsorshipRequests, { type PendingRequestDTO } from '../sponsors/PendingSponsorshipRequests';
import Button from '../ui/Button';
import Input from '../ui/Input';
import { DollarSign, Star, Award, Plus, X, Bell } from 'lucide-react';
import PendingSponsorshipRequests, { type PendingRequestDTO } from '../sponsors/PendingSponsorshipRequests';
import { useEffectiveDriverId } from '@/hooks/useEffectiveDriverId';
import { PendingSponsorshipRequestsPresenter } from '@/lib/presenters/PendingSponsorshipRequestsPresenter';
import { useEffectiveDriverId } from '@/lib/currentDriver';
interface SponsorshipSlot {
tier: 'main' | 'secondary';

View File

@@ -1,7 +1,7 @@
'use client';
import { useEffectiveDriverId } from '@/hooks/useEffectiveDriverId';
import { getMembership, type MembershipRole } from '@/lib/leagueMembership';
import { useEffectiveDriverId } from '@/lib/currentDriver';
interface MembershipStatusProps {
leagueId: string;