import { AlertCircle } from "lucide-react"; import { useCardHover } from "@/components/HoverCardPreview"; import { ManaCost } from "@/components/ManaCost"; import { getPrimaryFace } from "@/lib/card-faces"; import type { Card, ScryfallId } from "@/lib/scryfall-types"; export type PreviewLine = | { type: "empty"; lineKey: string } | { type: "pending"; lineKey: string; name: string } | { type: "resolved"; lineKey: string; scryfallId: ScryfallId; quantity: number; cardData: Card; isNew?: boolean; isImperfect?: boolean; } | { type: "error"; lineKey: string; message: string }; interface BulkEditPreviewProps { lines: PreviewLine[]; } export function BulkEditPreview({ lines }: BulkEditPreviewProps) { return (
{lines.map((line) => ( ))}
); } const ROW_CLASS = "font-mono text-sm leading-[1.5] whitespace-nowrap [font-variant-ligatures:none]"; function PreviewRow({ line }: { line: PreviewLine }) { switch (line.type) { case "empty": return
 
; case "pending": return (
{line.name}...
); case "error": return (
{line.message}
); case "resolved": return ; } } function ResolvedCardRow({ line, }: { line: Extract; }) { const hoverProps = useCardHover(line.scryfallId); const primaryFace = getPrimaryFace(line.cardData); const bgClass = line.isImperfect ? "bg-amber-50 dark:bg-amber-900/40 hover:bg-amber-100 dark:hover:bg-amber-900/50" : line.isNew ? "bg-green-50 dark:bg-green-900/40 hover:bg-green-100 dark:hover:bg-green-900/50" : "hover:bg-gray-100 dark:hover:bg-zinc-800"; return (
{line.quantity} {primaryFace?.name ?? "Unknown"}
{primaryFace?.mana_cost && ( )}
); }