import { useQueries } from "@tanstack/react-query"; import { ManaCost } from "@/components/ManaCost"; import { getCastableFaces } from "@/lib/card-faces"; import type { FacedCard } from "@/lib/deck-stats"; import type { DeckCard } from "@/lib/deck-types"; import { combineCardQueries, getCardByIdQueryOptions } from "@/lib/queries"; import type { ScryfallId } from "@/lib/scryfall-types"; interface StatsCardListProps { title: string; cards: FacedCard[]; onCardHover: (cardId: ScryfallId | null) => void; onCardClick?: (card: DeckCard) => void; } export function StatsCardList({ title, cards, onCardHover, onCardClick, }: StatsCardListProps) { // Deduplicate cards (same card+face may appear multiple times for quantity) // Use card id + face index as unique key const uniqueCards = cards.reduce((acc, facedCard) => { const key = `${facedCard.card.scryfallId}-${facedCard.faceIdx}`; if (!acc.some((c) => `${c.card.scryfallId}-${c.faceIdx}` === key)) { acc.push(facedCard); } return acc; }, []); // Fetch card data for display const cardMap = useQueries({ queries: uniqueCards.map((fc) => getCardByIdQueryOptions(fc.card.scryfallId), ), combine: combineCardQueries, }); return (

{title}

{uniqueCards.length === 0 ? (

No cards

) : ( )}
); }