import CardItem from './CardItem';
import BulkSelectionToolbar from './BulkSelectionToolbar';
import CollectionSelectionModal from './CollectionSelectionModal';
export default function CardsPageView(props) {
const {
cards,
loadingMore,
searchQuery,
selectedTCG,
setSelectedTCG,
selectedRarity,
setSelectedRarity,
selectedSet,
setSelectedSet,
selectedValueRange,
setSelectedValueRange,
viewMode,
setViewMode,
hasMore,
selectedCards,
favoritedCards,
showCollectionModal,
setShowCollectionModal,
cardsToAdd,
handleSearchChange,
fetchCards,
loadMoreCards,
hasMoreRef,
setPagination,
setCards,
setHasMore,
tcgOptions,
rarityOptions,
setOptions,
valueRangeOptions,
handleToggleSelect,
handleClearSelection,
handleToggleFavorite,
handleBulkAddToCollection,
handleBulkAddToDeck,
handleBulkMarkAsOwned,
handleBulkRemoveFromOwned,
handleBulkFavorite,
handleBulkDelete,
handleAddToCollections,
} = props;
return (
<>
{/* Header */}
Cards
Browse and manage your card collection
{/* Quick Filters */}
Quick Filters
{tcgOptions.map(option => (
))}
{/* Advanced Filters */}
{/* Active Filters Display */}
{(selectedTCG !== 'all' || selectedRarity !== 'all' || selectedSet !== 'all' || selectedValueRange !== 'all') && (
{selectedTCG !== 'all' && (
{tcgOptions.find(opt => opt.value === selectedTCG)?.label}
)}
{selectedRarity !== 'all' && (
{rarityOptions.find(opt => opt.value === selectedRarity)?.label}
)}
{selectedSet !== 'all' && (
{setOptions.find(opt => opt.value === selectedSet)?.label}
)}
{selectedValueRange !== 'all' && (
{valueRangeOptions.find(opt => opt.value === selectedValueRange)?.label}
)}
)}
{/* Cards Display */}
{cards.length === 0 ? (
🃏
No cards found
Try adjusting your search or filters
) : (
<>
{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 */}
{loadingMore && (
)}
{/* Infinite Scroll Sentinel */}
{/* Load More Button */}
{hasMore && !loadingMore && (
)}
{/* End of results indicator */}
{!hasMore && cards.length > 0 && (
No more cards to load
)}
>
)}
{/* Bulk Selection Toolbar */}
{/* Collection Selection Modal */}
setShowCollectionModal(false)}
cards={cardsToAdd}
onAddToCollections={handleAddToCollections}
/>
>
);
}