import Loading from './Loading'; import classNames from 'classnames'; export interface TableColumn { title: string; key: string; render?: (row: any) => React.ReactNode; className?: string; } interface TableRow { [key: string]: any; } interface TableProps { columns: TableColumn[]; rows: TableRow[]; isLoading: boolean; onRefresh: () => void; } export default function UniversalTable({ columns, rows, isLoading, onRefresh = () => {} }: TableProps) { return (
{isLoading ? (
) : rows.length === 0 ? (

Empty

) : (
{columns.map(column => ( ))} {rows?.map((row, index) => { // Style for alternating rows const rowClass = index % 2 === 0 ? 'bg-gray-900' : 'bg-gray-800'; return ( {columns.map(column => ( ))} ); })}
{column.title}
{column.render ? column.render(row) : row[column.key]}
)}
); }