'use client'; import * as React from 'react'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; import { Button } from '@/components/ui/button'; import { cn } from '@/lib/utils'; export interface DataTableColumn { id: string; header: string; accessorKey?: keyof T; cell?: (item: T) => React.ReactNode; className?: string; headerClassName?: string; width?: string; } export interface DataTableProps { columns: DataTableColumn[]; data: T[]; className?: string; emptyMessage?: string; onRowClick?: (item: T) => void; } export function DataTable({ columns, data, className, emptyMessage = 'No data available', onRowClick, }: DataTableProps) { return (
{columns.map((column) => ( {column.header} ))} {data.length === 0 ? ( {emptyMessage} ) : ( data.map((item, index) => ( onRowClick?.(item)} > {columns.map((column) => ( {column.cell ? column.cell(item) : column.accessorKey ? String(item[column.accessorKey] || '') : '' } ))} )) )}
); }