import * as React from 'react'; import { Table, TableBody, TableCell, TableHead, TableHeaderCell, TableRow, } from 'react-magma-dom'; export interface ChartDataTableColumn { /** Header text for this column */ header: string; /** Key to read from each row object */ key: string; } export interface ChartDataTableProps { /** Column definitions (header + key). If omitted, columns are auto-derived from the dataset object keys with the first character capitalized (e.g. "group" → "Group"). */ columns?: ChartDataTableColumn[]; /** Array of data objects. Each object should have keys matching the column `key` values. */ dataSet: Array>; /** * If true, the table uses inverse (dark) styling. * @default false */ isInverse?: boolean; } function deriveColumns( dataSet: Array> ): ChartDataTableColumn[] { if (!dataSet.length) return []; return Object.keys(dataSet[0]).map(key => ({ header: key.charAt(0).toUpperCase() + key.slice(1), key, })); } export function ChartDataTable({ columns, dataSet, isInverse, }: ChartDataTableProps) { const resolvedColumns = columns || deriveColumns(dataSet); return ( {resolvedColumns.map(col => ( {col.header} ))} {dataSet.map((row, index) => { const rowKey = resolvedColumns .map(col => String(row[col.key] ?? '')) .join('-'); return ( {resolvedColumns.map(col => ( {row[col.key]} ))} ); })}
); }