"use client" import { ReactNode } from "react" import { cn } from "@/lib/utils" export interface Column { key: string header: string render: (item: T, index: number) => ReactNode align?: "left" | "center" | "right" width?: string headerClassName?: string cellClassName?: string } interface DataTableProps { columns: Column[] data: T[] onRowClick?: (item: T) => void emptyMessage?: string loading?: boolean getRowKey?: (item: T, index: number) => string | number connectToFilterBar?: boolean } export function DataTable({ columns, data, onRowClick, emptyMessage = "No data found", loading = false, getRowKey, connectToFilterBar = true, }: DataTableProps) { if (loading) { return (

Loading...

) } if (data.length === 0) { return (

{emptyMessage}

) } return (
{columns.map((col) => ( ))} {data.map((item, idx) => ( onRowClick?.(item)} > {columns.map((col) => ( ))} ))}
{col.header}
{col.render(item, idx)}
) }