import { useReactTable, getCoreRowModel, flexRender, } from '@tanstack/react-table'; import { MoreHorizontal } from 'lucide-react'; export interface TableProps { data: T[]; columns: any[]; getRowId?: (row: T, index?: number) => string; emptyMessage?: string; } export const Table = ({ data, columns, getRowId, emptyMessage = 'No data available' }: TableProps) => { const table = useReactTable({ data, columns, getCoreRowModel: getCoreRowModel(), getRowId: (row: any, index: number) => { let customId = getRowId ? getRowId(row) : null; if (customId !== undefined && customId !== null && customId !== '') { return `${customId}_${index}`; } return row.id || row.batch_no || row.product_id || row.dispensing_id || `row-${index}`; }, }); return (
{table.getHeaderGroups().map(headerGroup => ( {headerGroup.headers.map(header => ( ))} ))} {table.getRowModel().rows.length === 0 ? ( ) : ( table.getRowModel().rows.map(row => ( {row.getVisibleCells().map(cell => ( ))} )) )}
{header.isPlaceholder ? null : flexRender( header.column.columnDef.header, header.getContext() )}

{emptyMessage}

{flexRender(cell.column.columnDef.cell, cell.getContext())}
); };