import type { ReactNode } from "react"; export interface Column { key: string; header: string; render?: (row: T) => ReactNode; className?: string; } interface DataTableProps { columns: Column[]; data: T[]; keyField: string; loading?: boolean; onRowClick?: (row: T) => void; emptyMessage?: string; } export default function DataTable>({ columns, data, keyField, loading, onRowClick, emptyMessage = "No data found", }: DataTableProps) { if (loading) { return (
); } return (
{columns.map((col) => ( ))} {data.length === 0 ? ( ) : ( data.map((row) => ( onRowClick?.(row)} > {columns.map((col) => ( ))} )) )}
{col.header}
{emptyMessage}
{col.render ? col.render(row) : String(row[col.key] ?? "")}
); }