UnifiedBreakdownTable

A generic typed DataGridPro wrapper for breakdown data tables. Supports sortable columns, column filtering, pagination, and type-safe row definitions via the generic <TRow> parameter.

Live DataGridPro Table

Dataset Toggle

The same UnifiedBreakdownTable component handles different data shapes via its generic <TRow> type parameter. Toggle between orders and items to see different column definitions and row structures.

Usage

JSX
import { UnifiedBreakdownTable } from '@so.boss/gloss-ui';
import type { ColumnDef } from '@so.boss/gloss-ui';

interface ProductRow {
  id: string;
  name: string;
  quantity: number;
  revenue: number;
}

const columns: ColumnDef<ProductRow>[] = [
  { field: 'name', headerName: 'Product', flex: 1, minWidth: 200 },
  { field: 'quantity', headerName: 'Qty', width: 100, align: 'right', headerAlign: 'right' },
  { field: 'revenue', headerName: 'Revenue', width: 150, align: 'right', headerAlign: 'right',
    renderCell: ({ row }) => `$${row.revenue.toLocaleString()}` },
];

<UnifiedBreakdownTable<ProductRow>
  columns={columns}
  data={productData}
  pagination={{
    page: 0,
    pageSize: 10,
    total: productData.length,
    onPageChange: (page, pageSize) => { /* handle */ },
  }}
/>

Props Reference

UnifiedBreakdownTable<TRow>

PropTypeDefaultDescription
dataTRow[]—Array of row data. TRow must have an id field.
columnsColumnDef<TRow>[]—Column definitions with type-safe field references
isLoadingbooleanfalseShow loading overlay on the grid
paginationPaginationConfigundefinedServer-side pagination config (page, pageSize, total, onPageChange)
sortModelSortModel[]undefinedControlled sort state
onSort(model: SortModel[]) => voidundefinedSort change callback
onCellClick(row, field, event) => voidundefinedCell click handler with typed row and field
activeFiltersFilterChipData[]undefinedActive filter chips displayed above the grid

ColumnDef<TRow>

FieldTypeDescription
fieldkeyof TRow & stringType-safe key of the row object
headerNamestringDisplay name in the column header
widthnumberFixed column width in pixels
flexnumberFlex grow factor for responsive column sizing
renderCell(params) => ReactNodeCustom cell renderer with typed row and value
valueGetter(params) => unknownComputed value getter for sorting and filtering