diff --git a/components/CardItem.js b/components/CardItem.js index 909cb7a..209fbd1 100644 --- a/components/CardItem.js +++ b/components/CardItem.js @@ -9,9 +9,7 @@ export default function CardItem({ onAddToCollection, onAddToDeck, onToggleFavorite, - isFavorited = false, - cardIndex = 0, - cardsPerRow = 4 + isFavorited = false }) { const [imageError, setImageError] = useState(false); const router = useRouter(); @@ -77,9 +75,7 @@ export default function CardItem({ const rarityEffects = getRarityEffects(card.rarity); - // Determine panel position based on card position in row - const isRightSide = (cardIndex % cardsPerRow) >= Math.floor(cardsPerRow / 2); - const panelPosition = isRightSide ? 'right' : 'left'; + // Panel positioning no longer needed - using simple hover buttons if (viewMode === 'list') { return ( @@ -190,16 +186,19 @@ export default function CardItem({ // Grid view return ( -
+
{/* Main Card Container */}
@@ -207,34 +206,8 @@ export default function CardItem({ {rarityEffects.particles && (
)} - {/* Selection Checkbox */} -
- -
- {/* Favorite Button */} -
- -
+ {/* Card Image */}
@@ -242,7 +215,7 @@ export default function CardItem({ {card.name} ) : ( @@ -258,245 +231,80 @@ export default function CardItem({
- {/* 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} - -
- )} -
- )} + {/* Hover Action Buttons */} + {/* Top Right - Checkbox and Favorite */} +
+ {/* Selection Checkbox */} + - {card.game === 'Pokemon' && card.power && ( -
-
- HP: - - {card.power} - -
-
- )} + {/* Favorite Button */} + +
- {card.game === 'Lorcana' && card.cmc && ( -
-
- Cost: - - {card.cmc} - -
- {card.power && card.toughness && ( -
- Str/Will: - - {card.power}/{card.toughness} - -
- )} -
- )} - -
- - {card.game} - - {card.set_name} - {rarityEffects.glow && ( -
-
-
- )} -
-
- - {/* 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 */} -
- - - - - - - -
-
-
+ {/* Bottom Left - Ownership Status & Add Button */} +
+ {/* Ownership Indicator - Always visible */} +
+ {/* This would be connected to actual ownership data */} +
+ + {/* Add/Own Button - Appears on hover */} +
); diff --git a/pages/cards.js b/pages/cards.js index bf5dae3..6da875d 100644 --- a/pages/cards.js +++ b/pages/cards.js @@ -816,34 +816,20 @@ export default function Cards() {
) : ( <> -
- {cards.map((card, index) => { - // Calculate cards per row based on current breakpoint - const getCardsPerRow = () => { - if (window.innerWidth >= 1536) return 5; // 2xl - if (window.innerWidth >= 1280) return 4; // xl - if (window.innerWidth >= 1024) return 3; // lg - if (window.innerWidth >= 768) return 4; // md - if (window.innerWidth >= 640) return 3; // sm - return 2; // base - }; - - return ( - c.id === card.id)} - onToggleSelect={handleToggleSelect} - onAddToCollection={(card) => handleBulkAddToCollection([card])} - onAddToDeck={handleBulkAddToDeck} - onToggleFavorite={handleToggleFavorite} - isFavorited={favoritedCards.has(card.id)} - cardIndex={index} - cardsPerRow={getCardsPerRow()} - /> - ); - })} +
+ {cards.map((card) => ( + c.id === card.id)} + onToggleSelect={handleToggleSelect} + onAddToCollection={(card) => handleBulkAddToCollection([card])} + onAddToDeck={handleBulkAddToDeck} + onToggleFavorite={handleToggleFavorite} + isFavorited={favoritedCards.has(card.id)} + /> + ))}
{/* Infinite Scroll Loading Indicator */}