import { ReactNode } from 'react' import { cn, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from 'ui' import { Loader2 } from 'lucide-react' export type OverviewTableColumn = { key: keyof T | string header: string render?: (row: T) => ReactNode className?: string } export interface OverviewTable { columns: OverviewTableColumn[] data: T[] isLoading?: boolean emptyMessage?: string } export function OverviewTable({ columns, data, isLoading, emptyMessage }: OverviewTable) { return ( {columns.map((col) => ( {col.header} ))} {isLoading ? (
Loading…
) : data.length === 0 ? ( {emptyMessage || 'No data available'} ) : ( (data as unknown as T[]).map((row, idx) => ( {columns.map((col) => ( {col.render ? col.render(row) : (row as any)[col.key as string]} ))} )) )}
) }