import { Loader2 } from 'lucide-react' import { ReactNode } from 'react' import { cn, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from 'ui' import NoDataPlaceholder from '@/components/ui/Charts/NoDataPlaceholder' 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) { const hasData = !isLoading && data.length > 0 return ( {hasData && ( {columns.map((col) => ( {col.header} ))} )} {isLoading ? (
) : data.length === 0 ? (
) : ( (data as unknown as T[]).map((row, idx) => ( {columns.map((col) => ( {col.render ? col.render(row) : (row as any)[col.key as string]} ))} )) )}
) }