'use client'; import Link from 'next/link'; import { useMemo } from 'react'; import { MangaReadRecord, MangaSearchItem, MangaShelfItem } from '@/lib/manga.types'; import ProxyImage from './ProxyImage'; interface MangaCardProps { item: MangaSearchItem | MangaShelfItem | MangaReadRecord; href: string; subtitle?: string; badge?: string; updateCount?: number; } export default function MangaCard({ item, href, subtitle, badge, updateCount }: MangaCardProps) { const sourceName = useMemo(() => { if ('sourceName' in item) return item.sourceName; return ''; }, [item]); return (
{item.cover ? ( ) : (
暂无封面
)} {badge && ( {badge} )} {updateCount && updateCount > 0 && (
+{updateCount}
)}
{item.title}
{sourceName &&
{sourceName}
} {subtitle &&
{subtitle}
}
); }