import { ReactNode } from 'react' import clsx from 'clsx' interface Column { header: string accessor: (row: T) => ReactNode className?: string } interface TableProps { columns: Column[] data: T[] className?: string emptyMessage?: string /** Stable key for each row (e.g. row => row.id or row => row.hash). Falls back to index if not provided. */ keyExtractor?: (row: T) => string | number } export function Table({ columns, data, className, emptyMessage = 'No data available right now.', keyExtractor, }: TableProps) { if (data.length === 0) { return (
{emptyMessage}
) } return (
{data.map((row, rowIndex) => (
{columns.map((column, colIndex) => (
{column.header}
{column.accessor(row)}
))}
))}
{columns.map((column, index) => ( ))} {data.map((row, rowIndex) => ( {columns.map((column, colIndex) => ( ))} ))}
{column.header}
{column.accessor(row)}
) }