import { AnimeCoverImage } from './AnimeCoverImage'; import type { AnimeDetailData, AnilistEntry } from '../../types/stats'; interface AnimeHeaderProps { detail: AnimeDetailData['detail']; anilistEntries: AnilistEntry[]; onChangeAnilist?: () => void; } function AnilistButton({ entry }: { entry: AnilistEntry }) { const label = entry.season != null ? `Season ${entry.season}` : (entry.titleEnglish ?? entry.titleRomaji ?? 'AniList'); return ( {label} {'\u2197'} ); } export function AnimeHeader({ detail, anilistEntries, onChangeAnilist }: AnimeHeaderProps) { const altTitles = [detail.titleRomaji, detail.titleEnglish, detail.titleNative].filter( (t): t is string => t != null && t !== detail.canonicalTitle, ); const uniqueAltTitles = [...new Set(altTitles)]; const hasMultipleEntries = anilistEntries.length > 1; return (

{detail.canonicalTitle}

{uniqueAltTitles.length > 0 && (
{uniqueAltTitles.join(' ยท ')}
)}
{detail.episodeCount} episode{detail.episodeCount !== 1 ? 's' : ''}
{anilistEntries.length > 0 ? ( hasMultipleEntries ? ( anilistEntries.map((entry) => ) ) : ( View on AniList {'\u2197'} ) ) : detail.anilistId ? ( View on AniList {'\u2197'} ) : null} {onChangeAnilist && ( )}
{detail.description && (

{detail.description}

)}
); }