import { posterUrl } from "@/lib/image-url"; /** * Streamingdienste als Badges. * * Farbe und Logo kommen aus dem Katalog; Dienste ohne hinterlegte Akzentfarbe * bekommen einen neutralen Ton, damit die Reihe trotzdem ruhig aussieht. */ export type ProviderBadgeData = { id: string; name: string; logoPath: string | null; color: string | null; }; const KIND_LABEL = { FLATRATE: "Im Abo", FREE: "Kostenlos", ADS: "Mit Werbung", RENT: "Leihen", BUY: "Kaufen", } as const; export type ProviderKindKey = keyof typeof KIND_LABEL; export function ProviderBadge({ provider }: { provider: ProviderBadgeData }) { const logo = posterUrl(provider.logoPath, "w92"); const accent = provider.color ?? "var(--fl-border-strong)"; return ( {/* Farbpunkt liegt darunter; ein Logo, das nicht lädt, fällt in sich zusammen und gibt ihn wieder frei. */} {logo && ( // eslint-disable-next-line @next/next/no-img-element )} {provider.name} ); } /** Alle Verfügbarkeiten eines Titels, nach Art gruppiert. */ export function ProviderList({ groups, region, }: { groups: Partial>; region: string; }) { const order: ProviderKindKey[] = ["FLATRATE", "FREE", "ADS", "RENT", "BUY"]; const present = order.filter((kind) => (groups[kind]?.length ?? 0) > 0); if (present.length === 0) { return ( Für die Region {region} meldet TMDB derzeit keinen Streamingdienst. ); } return ( {present.map((kind) => ( {KIND_LABEL[kind]} {groups[kind]?.map((provider) => ( ))} ))} ); }
Für die Region {region} meldet TMDB derzeit keinen Streamingdienst.