import { ReactNode } from 'react'; import './DataTable.css'; interface Column { key: string; header: string; render: (item: T) => ReactNode; className?: string; sortable?: boolean; } interface DataTableProps { data: T[]; columns: Column[]; keyExtractor: (item: T) => string; emptyMessage?: string; className?: string; onSort?: (key: string) => void; sortKey?: string; sortOrder?: 'asc' | 'desc'; } export function DataTable({ data, columns, keyExtractor, emptyMessage = 'No data available', className = '', onSort, sortKey, sortOrder, }: DataTableProps) { if (data.length === 0) { return (

{emptyMessage}

); } return (
{columns.map((column) => ( ))} {data.map((item) => ( {columns.map((column) => ( ))} ))}
column.sortable && onSort?.(column.key)} > {column.header} {column.sortable && sortKey === column.key && ( )}
{column.render(item)}
); }