'use client'; import { useState } from 'react'; import { useReactTable, getCoreRowModel, getSortedRowModel, ColumnDef, SortingState, flexRender, } from '@tanstack/react-table'; import { ChevronDown, ChevronUp } from 'lucide-react'; // Icons for sorting export interface SortableTableProps { data: TData[]; columns: ColumnDef[]; } export default function SortableTable({ data, columns, }: SortableTableProps) { const [sorting, setSorting] = useState([]); const table = useReactTable({ data, columns, getCoreRowModel: getCoreRowModel(), getSortedRowModel: getSortedRowModel(), onSortingChange: setSorting, state: { sorting }, }); return (
{table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => ( ))} ))} {table.getRowModel().rows.map((row) => ( {row.getVisibleCells().map((cell) => ( ))} ))}
{flexRender( header.column.columnDef.header, header.getContext() )} {header.column.getIsSorted() === 'asc' && ( )} {header.column.getIsSorted() === 'desc' && ( )}
{flexRender(cell.column.columnDef.cell, cell.getContext())}
); }