| import { useReactTable, flexRender, getCoreRowModel } from '@tanstack/react-table'; |
| import type { ColumnDef } from '@tanstack/react-table'; |
|
|
| interface DataTableProps<TData, TValue> { |
| columns: ColumnDef<TData, TValue>[]; |
| data: TData[]; |
| } |
|
|
| export default function DataTable<TData, TValue>({ columns, data }: DataTableProps<TData, TValue>) { |
| const table = useReactTable({ |
| columns, |
| data, |
| getCoreRowModel: getCoreRowModel(), |
| }); |
|
|
| return ( |
| <table className="w-full text-sm"> |
| <thead> |
| {table.getHeaderGroups().map((headerGroup, i) => ( |
| <tr |
| key={i} |
| className="border-token-border-light text-token-text-tertiary border-b text-left text-xs" |
| > |
| {headerGroup.headers.map((header, j) => ( |
| <th key={j} className="py-1 font-normal text-text-secondary-alt"> |
| {header.isPlaceholder |
| ? null |
| : flexRender(header.column.columnDef.header, header.getContext())} |
| </th> |
| ))} |
| </tr> |
| ))} |
| </thead> |
| <tbody> |
| {table.getRowModel().rows.map((row, i) => ( |
| <tr key={i} className="border-token-border-light border-b"> |
| {row.getVisibleCells().map((cell, j) => ( |
| <td key={j} className="py-2"> |
| {flexRender(cell.column.columnDef.cell, cell.getContext())} |
| </td> |
| ))} |
| </tr> |
| ))} |
| </tbody> |
| </table> |
| ); |
| } |
|
|