import { useState } from 'react'; export default function CardItem({ card, viewMode = 'grid', isSelected = false, onToggleSelect, onAddToCollection, onAddToDeck, onToggleFavorite, isFavorited = false }) { const [imageError, setImageError] = useState(false); const handleSelectChange = (e) => { e.stopPropagation(); onToggleSelect(card); }; const handleImageError = () => { setImageError(true); }; if (viewMode === 'list') { return (
{/* Selection Checkbox */}
{/* Card Image */}
{!imageError ? ( {card.name} ) : (
No Image
)}
{/* Card Info */}

{card.name}

{card.set_name} • {card.rarity}

{card.card_type}

{/* Game Badge */}
{card.game}
{/* Price */}
${card.market_price}
{/* Actions */}
); } // Grid view return (
{/* Main Card Container */}
{/* Selection Checkbox */}
{/* Favorite Button */}
{/* Card Image */}
{!imageError ? ( {card.name} ) : (

No Image

)}
{/* Side Hover Panel */}
{/* Panel Header */}

{card.name}

${card.market_price}
{/* TCG-Specific Info */} {card.game === 'MTG' && (
{card.mana_cost && (
Cost: {card.mana_cost}
)} {card.power && card.toughness && (
P/T: {card.power}/{card.toughness}
)}
)} {card.game === 'Pokemon' && card.power && (
HP: {card.power}
)} {card.game === 'Lorcana' && card.cmc && (
Cost: {card.cmc}
{card.power && card.toughness && (
Str/Will: {card.power}/{card.toughness}
)}
)}
{card.game} {card.set_name}
{/* Panel Body */}
{/* Card Details */}
Rarity

{card.rarity}

Type

{card.card_type}

{/* Oracle Text */} {card.oracle_text && (
Description

{card.oracle_text}

)} {/* Colors for MTG */} {card.game === 'MTG' && card.colors && card.colors.length > 0 && (
Colors
{card.colors.map((color, index) => ( {color} ))}
)}
{/* Panel Footer - Actions */}
{/* Primary Actions */}
{/* Secondary Actions */}
); }