import { useEffect, useState } from 'react'; export const CONDITION_OPTIONS = ['NM', 'LP', 'MP', 'HP', 'DMG']; export default function ScannedCardItem({ card, collections, decks, selected, onToggleSelect, onIncrement, onDecrement, onUpdateMetadata, onMarkOwned, onAddToCollection, onAddToDeck, onRemove, isAdding = false, }) { const [ownedQuantity, setOwnedQuantity] = useState(null); useEffect(() => { if (!card.databaseId) { setOwnedQuantity(null); return; } let cancelled = false; (async () => { try { const response = await fetch(`/api/cards/${card.databaseId}/ownership`, { headers: { Authorization: `Bearer ${localStorage.getItem('auth_token')}`, }, }); if (!response.ok) return; const data = await response.json(); if (!cancelled) { setOwnedQuantity(typeof data.quantity === 'number' ? data.quantity : 0); } } catch { if (!cancelled) setOwnedQuantity(null); } })(); return () => { cancelled = true; }; }, [card.databaseId]); return (
{card.image_url ? ( {card.name} ) : (
πŸƒ
No Image
)}
{!card.processed && (
)}
{card.confidence && (
= 90 ? 'var(--accent-gold)' : card.confidence >= 70 ? 'var(--accent-ember)' : 'var(--text-secondary)', color: 'white', }} > {Math.round(card.confidence)}% confidence
)}

{card.name}

{card.isExisting && (
Found in database
)} {ownedQuantity !== null && ownedQuantity > 0 && (
You own {ownedQuantity}
)}
{!card.processed && (
{card.quantity || 1}
)}
{!card.processed && (
)}
{card.set && (
Set: {card.set} {card.setCode && ({card.setCode})}
)} {card.cardNumber && (
Number: {card.cardNumber}
)} {!card.processed && (card.condition || card.isFoil) && (
Adding as:{' '} {card.condition || 'NM'} {card.isFoil ? ' Β· Foil' : ''}
)}
{!card.processed ? (
{collections.length > 0 && ( )} {decks.length > 0 && ( )}
) : (
Added to {card.processedAction}
)}
); }