import type { ReactNode } from 'react' import { Card } from '../desktop/Card' export interface DataTableColumn { key: string label: string sortable?: boolean render: (row: T) => ReactNode } interface DataTableProps { columns: DataTableColumn[] rows: T[] rowKey: (row: T) => string sort?: string direction?: 'asc' | 'desc' onSortChange?: (key: string) => void page: number lastPage: number onPageChange: (page: number) => void isLoading?: boolean } export function DataTable({ columns, rows, rowKey, sort, direction, onSortChange, page, lastPage, onPageChange, isLoading, }: DataTableProps) { const pages = Array.from({ length: lastPage }, (_, i) => i + 1) return (
{columns.map((col) => ( ))} {isLoading ? ( ) : rows.length === 0 ? ( ) : ( rows.map((row) => ( {columns.map((col) => ( ))} )) )}
{col.sortable ? ( ) : ( col.label )}
Loading…
No results.
{col.render(row)}
{lastPage > 1 && ( )}
) }