import { Link } from "react-router-dom"; import { DotList } from "@/components/text/DotList"; import { MWMediaMeta } from "@/backend/metadata/types"; import { JWMediaToId } from "@/backend/metadata/justwatch"; import { Icons } from "../Icon"; import { IconPatch } from "../buttons/IconPatch"; export interface MediaCardProps { media: MWMediaMeta; linkable?: boolean; series?: { episode: number; season: number; episodeId: string; seasonId: string; }; percentage?: number; closable?: boolean; onClose?: () => void; } function MediaCardContent({ media, linkable, series, percentage, closable, onClose, }: MediaCardProps) { const percentageString = `${Math.round(percentage ?? 0).toFixed(0)}%`; const canLink = linkable && !closable; return (
{series ? (

S{series.season} E{series.episode}

) : null} {percentage !== undefined ? ( <>
) : null}
closable && onClose?.()} icon={Icons.X} />

{media.title}

); } export function MediaCard(props: MediaCardProps) { const content = ; const canLink = props.linkable && !props.closable; let link = canLink ? `/media/${encodeURIComponent(JWMediaToId(props.media))}` : "#"; if (canLink && props.series) link += `/${encodeURIComponent(props.series.seasonId)}/${encodeURIComponent( props.series.episodeId )}`; if (!props.linkable) return {content}; return {content}; }