"use client"; import { useMemo, useState } from "react"; import type { Match, Stadium } from "../../types/passport"; import EmptyState from "../shared/EmptyState"; import ProgressBar from "../shared/ProgressBar"; import StatusPill from "../shared/StatusPill"; interface StadiumCollectionScreenProps { stadiums: Stadium[]; matches: Match[]; onToggleStadium: (stadiumId: string) => void; } export default function StadiumCollectionScreen({ stadiums, matches, onToggleStadium, }: StadiumCollectionScreenProps) { const [countryFilter, setCountryFilter] = useState("all"); const countries = useMemo( () => ["all", ...Array.from(new Set(stadiums.map((stadium) => stadium.country)))], [stadiums], ); const filteredStadiums = countryFilter === "all" ? stadiums : stadiums.filter((stadium) => stadium.country === countryFilter); const collectedCount = stadiums.filter((stadium) => stadium.collected).length; return (

Stadium collection

Unlock the host-city map.

Stadium pages connect fixtures to travel dreams, venue facts, city memories, and future football rewards after the World Cup.

{countries.map((country) => ( ))}
{filteredStadiums.length === 0 ? ( ) : (
{filteredStadiums.map((stadium) => { const hostedMatches = matches.filter((match) => match.venueId === stadium.id).length; return (
{stadium.collected ? "Collected" : "Locked"}

{stadium.name}

{stadium.city}, {stadium.country}

{stadium.story}

{stadium.capacity.toLocaleString("en-GB")} capacity {hostedMatches || stadium.matchesHosted} matches
    {stadium.features.map((feature) => (
  • Feature {feature}
  • ))}
); })}
)}
); }