import { flexRender, getCoreRowModel, getSortedRowModel, SortingState, useReactTable, } from '@tanstack/react-table' import classNames from 'classnames/bind' import { Card, SVG } from 'components/common' import { useAvailableVaultsColumns } from 'components/fields' import { useRouter } from 'next/router' import React from 'react' import { Trans, useTranslation } from 'react-i18next' import useStore from 'store' import styles from './AvailableVaultsTable.module.scss' export const AvailableVaultsTable = () => { const router = useRouter() const { t } = useTranslation() const { defaultAvailableVaultsColumns } = useAvailableVaultsColumns() const availableVaults = useStore((s) => s.availableVaults) const [sorting, setSorting] = React.useState([ { id: 'apy', desc: true, }, ]) const table = useReactTable({ data: availableVaults || [], columns: defaultAvailableVaultsColumns, state: { sorting, }, autoResetExpanded: false, onSortingChange: setSorting, getSortedRowModel: getSortedRowModel(), getCoreRowModel: getCoreRowModel(), }) const classes = classNames.bind(styles) if (!availableVaults.length) return null const handleRowClick = (address: string) => { router.push(`/farm/vault/${address}/create`) } return ( } > {table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => { const thClasses = classes({ th: true, canSort: header.column.getCanSort(), disabled: false, }) const wrapperClasses = classes({ wrapper: true, left: header.id === 'name' || header.id === 'description', center: header.id === 'provider', }) return ( ) })} ))} {table.getRowModel().rows.map((row) => { return ( handleRowClick(row.original.address)} > {row.getVisibleCells().map((cell) => { const tdClasses = classes({ td: true, left: cell.column.id === 'name', }) return ( ) })} ) })}
<>
{header.column.getCanSort() ? { asc: , desc: , false: , }[header.column.getIsSorted() as string] ?? null : null} {flexRender(header.column.columnDef.header, header.getContext())}
{flexRender(cell.column.columnDef.cell, cell.getContext())}
) }