import { Fragment, useState } from 'react'; import { formatNumber, formatRelativeDate } from '../../lib/formatters'; import { CollapsibleSection } from './CollapsibleSection'; import { EpisodeDetail } from './EpisodeDetail'; import type { AnimeEpisode } from '../../types/stats'; interface AnimeCardsListProps { episodes: AnimeEpisode[]; totalCards: number; } export function AnimeCardsList({ episodes, totalCards }: AnimeCardsListProps) { const [expandedVideoId, setExpandedVideoId] = useState(null); if (totalCards === 0) { return (

No cards mined from this anime yet.

); } const withCards = episodes.filter((ep) => ep.totalCards > 0); return ( {withCards.map((ep) => ( setExpandedVideoId(expandedVideoId === ep.videoId ? null : ep.videoId) } className="border-b border-ctp-surface1 last:border-0 cursor-pointer hover:bg-ctp-surface1/50 transition-colors" > {expandedVideoId === ep.videoId && ( )} ))}
Episode Cards Last Watched
{expandedVideoId === ep.videoId ? '▼' : '▶'} {ep.episode != null ? `#${ep.episode}` : ''} {ep.canonicalTitle} {formatNumber(ep.totalCards)} {ep.lastWatchedMs > 0 ? formatRelativeDate(ep.lastWatchedMs) : '\u2014'}
); }