'use client'; import MembershipStatus from '@/components/leagues/MembershipStatus'; import Image from 'next/image'; import { useEffect, useState } from 'react'; import type { DriverDTO } from '@core/racing/application/dto/DriverDTO'; import { EntityMappers } from '@core/racing/application/mappers/EntityMappers'; // TODO EntityMapper is legacy. Must use ´useServices` hook. // Main sponsor info for "by XYZ" display interface MainSponsorInfo { name: string; logoUrl?: string; websiteUrl?: string; } export interface LeagueHeaderProps { leagueId: string; leagueName: string; description?: string | null; ownerId: string; ownerName: string; mainSponsor?: MainSponsorInfo | null; } export default function LeagueHeader({ leagueId, leagueName, description, ownerId, mainSponsor, }: LeagueHeaderProps) { const imageService = getImageService(); const logoUrl = imageService.getLeagueLogo(leagueId); const [ownerDriver, setOwnerDriver] = useState(null); useEffect(() => { let isMounted = true; async function loadOwner() { try { const driverRepo = getDriverRepository(); const entity = await driverRepo.findById(ownerId); if (!entity || !isMounted) return; setOwnerDriver(EntityMappers.toDriverDTO(entity)); } catch (err) { console.error('Failed to load league owner for header:', err); } } loadOwner(); return () => { isMounted = false; }; }, [ownerId]); return (
{/* League header with logo - no cover image */}
{`${leagueName}

{leagueName} {mainSponsor && ( by{' '} {mainSponsor.websiteUrl ? ( {mainSponsor.name} ) : ( {mainSponsor.name} )} )}

{description && (

{description}

)}
); }