import "./Table.css"; interface TableColumn { key: string; header: string; render?: (value: unknown, row: Record) => React.ReactNode; } interface TableProps { columns: TableColumn[]; rows: Record[]; rowKey?: string; caption?: string; className?: string; } const Table = ({ columns, rows, rowKey = "id", caption, className, }: TableProps) => { const classNames = `table${className ? ` ${className}` : ""}`; return (
{caption && } {columns.map(({ key, header }) => ( ))} {rows.map((row) => ( {columns.map(({ key, render }) => ( ))} ))}
{caption}
{header}
{render ? render(row[key], row) : (row[key] as React.ReactNode)}
); }; export default Table;