'use client'; import { type ColumnDef, flexRender, getCoreRowModel, useReactTable, } from '@tanstack/react-table'; import { Loader } from 'lucide-react'; import { useTranslations } from 'next-intl'; import { Card } from '../common/Card'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '../common/Table'; type DataTableProps = { columns: ColumnDef[]; data: TData[]; }; export const DataTable = ({ columns, data, }: DataTableProps) => { const t = useTranslations('components.dataTable'); const table = useReactTable({ data, columns, getCoreRowModel: getCoreRowModel(), }); return (
{table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => ( {header.isPlaceholder ? null : flexRender( header.column.columnDef .header, header.getContext(), )} ))} ))} {table.getRowModel().rows?.length ? table.getRowModel().rows.map((row) => ( {row.getVisibleCells().map((cell) => ( {flexRender( cell.column.columnDef.cell, cell.getContext(), )} ))} )) : ( {t('notFound')} )}
); }; export const DataTableSkeleton = () => (
);