'use client'; import { useState } from 'react'; import { useReactTable, getCoreRowModel, getSortedRowModel, ColumnDef, SortingState, flexRender, } from '@tanstack/react-table'; import { ArrowLeft, ArrowRight, 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())}
); } export const Pagination = ({ page, totalPages, setPage, }: { page: number; totalPages: number; setPage: (page: number) => void; }) => { if (totalPages === 0) return null; return (
); };