@@ -2,18 +2,9 @@ import type { Card } from '@/types'
22import { type Row , createColumnHelper , getCoreRowModel , getGroupedRowModel , useReactTable } from '@tanstack/react-table'
33import { useVirtualizer } from '@tanstack/react-virtual'
44import { useMemo , useRef } from 'react'
5- import type { Card as CardType } from '../types'
6- import FancyCard from './FancyCard'
5+ import type { Card as CardType } from '../../types'
76
8- const tradeableRaritiesDictionary : { [ id : string ] : number } = {
9- '◊' : 0 ,
10- '◊◊' : 0 ,
11- '◊◊◊' : 120 ,
12- '◊◊◊◊' : 500 ,
13- '☆' : 500 ,
14- }
15-
16- export function LookingForTrade ( { cards } : { cards : CardType [ ] } ) {
7+ export function CardTable < T extends Card > ( { cards, cardElement } : { cards : T [ ] ; cardElement : ( card : T ) => JSX . Element } ) {
178 const columnHelper = createColumnHelper < CardType > ( )
189 const parentRef = useRef < HTMLDivElement > ( null )
1910
@@ -37,7 +28,7 @@ export function LookingForTrade({ cards }: { cards: CardType[] }) {
3728 // Columns and data are defined in a stable reference, will not cause infinite loop!
3829 const table = useReactTable ( {
3930 columns,
40- data : cards . filter ( ( c ) => Object . keys ( tradeableRaritiesDictionary ) . includes ( c . rarity ) ) ,
31+ data : cards ,
4132 enableGrouping : true ,
4233 getCoreRowModel : getCoreRowModel ( ) ,
4334 getGroupedRowModel : getGroupedRowModel ( ) ,
@@ -82,7 +73,6 @@ export function LookingForTrade({ cards }: { cards: CardType[] }) {
8273 >
8374 { rowVirtualizer . getVirtualItems ( ) . map ( ( virtualRow ) => {
8475 const row = flattenedRows [ virtualRow . index ]
85- console . log ( 'Row' , row )
8676 return (
8777 < div
8878 key = { virtualRow . key }
@@ -97,26 +87,13 @@ export function LookingForTrade({ cards }: { cards: CardType[] }) {
9787 >
9888 { row . type === 'header' ? (
9989 < h2 className = "mt-10 w-[900px] mx-auto scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0" >
100- { ( row . data as { type : string ; row : Row < Card > } ) . row . getValue ( 'pack' ) }
90+ { ( row . data as { type : string ; row : Row < T > } ) . row . getValue ( 'pack' ) }
10191 </ h2 >
10292 ) : (
10393 < div className = "flex justify-center gap-5" >
104- { ( row . data as { type : string ; row : Row < Card > } [ ] ) . map ( ( { row : subRow } ) => {
94+ { ( row . data as { type : string ; row : Row < T > } [ ] ) . map ( ( { row : subRow } ) => {
10595 const card = subRow . original
106- return (
107- < div
108- key = { `div_${ subRow . original . card_id } ` }
109- className = "flex flex-col items-center gap-y-2 w-fit border border-gray-700 p-4 rounded-lg shadow-md hover:shadow-lg transition duration-200 group"
110- >
111- < FancyCard key = { `card_${ card . card_id } ` } card = { card } selected = { true } setIsSelected = { ( ) => { } } />
112- < p className = "text-[12px] font-semibold whitespace-nowrap overflow-hidden text-ellipsis max-w-[130px]" >
113- { card . card_id } - { card . name }
114- </ p >
115- < div className = "bg-gray-600 rounded-xl" >
116- < span className = "text-lg font-semibold m-3" > { tradeableRaritiesDictionary [ card . rarity ] } </ span >
117- </ div >
118- </ div >
119- )
96+ return cardElement ( card )
12097 } ) }
12198 </ div >
12299 ) }
0 commit comments