import { Table, Text, Card, Stack, Group, Box } from '@pikku/mantine/core' import { useMediaQuery } from '@mantine/hooks' import { type ReactNode } from 'react' import { asI18n, type I18nNode } from '@pikku/react' export interface Column { key: string label: I18nNode render: (row: T) => ReactNode } interface DataTableProps { data: T[] columns: Column[] emptyMessage?: string rowKey: (row: T) => string } export function DataTable({ data, columns, emptyMessage = 'No data found.', rowKey, }: DataTableProps) { const isMobile = useMediaQuery('(max-width: 768px)') if (data.length === 0) { return ( {asI18n(emptyMessage)} ) } if (isMobile) { return ( {data.map((row) => ( {columns.map((col) => ( {col.label} {col.render(row)} ))} ))} ) } return ( {columns.map((col) => ( {col.label} ))} {data.map((row) => ( {columns.map((col) => ( {col.render(row)} ))} ))}
) }