import type { ReactNode } from 'react'; import { t } from '@/i18n'; import { cn } from '@/lib/cn'; export interface DataTableColumn { key: string; header: ReactNode; cell: (row: T) => ReactNode; numeric?: boolean; /** Hide on the definition-list (mobile) layout. */ hideOnMobile?: boolean; className?: string; } /** * Data table that becomes a definition list on < sm (no horizontal overflow). Numeric columns are * right-aligned and tabular. Pass `rowKey` for stable keys and `caption` for AT. */ export function DataTable({ rows, columns, rowKey, caption, className, dense }: { rows: T[]; columns: DataTableColumn[]; rowKey: (row: T) => string; caption?: string; className?: string; dense?: boolean }) { return (
{caption ? : null} {columns.map((c) => ( ))} {rows.map((r) => ( {columns.map((c) => ( ))} ))}
{caption}
{c.header}
{c.cell(r)}
    {rows.map((r) => (
  • {columns .filter((c) => !c.hideOnMobile) .map((c, i) => (
    {c.header}
    {c.cell(r)}
    ))}
  • ))}
); }