import { RowData, TableAvatarCellConfig, TableButtonCellConfig, TableCheckboxCellConfig, TableChipCellConfig, TableInputDropdownCellConfig, TableInputTextCellConfig, TableIconButtonCellConfig, TableTextCellConfig, TableTextLinkCellConfig } from './table-cell-config.ts'; export type TableColumnFilterOption = { label: string; value: string | number; }; interface BaseColumnDefinition { id?: string; field: string; name: string; cellRenderer?: (rowData: RowData) => string; includedInTotals?: boolean; decimalPlaces?: number; sortable?: boolean; filterable?: boolean; filterOptions?: TableColumnFilterOption[]; filterMultiselect?: boolean; } export interface TextColumnDefinition extends BaseColumnDefinition { cellType?: 'text'; cellConfig?: TableTextCellConfig; } export interface ChipColumnDefinition extends BaseColumnDefinition { cellType: 'chip'; cellConfig?: TableChipCellConfig; } export interface AvatarColumnDefinition extends BaseColumnDefinition { cellType: 'avatar'; cellConfig?: TableAvatarCellConfig; } export interface CheckboxColumnDefinition extends BaseColumnDefinition { cellType: 'checkbox'; cellConfig?: TableCheckboxCellConfig; } export interface TextLinkColumnDefinition extends BaseColumnDefinition { cellType: 'text-link'; cellConfig?: TableTextLinkCellConfig; } export interface ButtonColumnDefinition extends BaseColumnDefinition { cellType: 'button'; cellConfig?: TableButtonCellConfig; } export interface IconButtonColumnDefinition extends BaseColumnDefinition { cellType: 'icon-button'; cellConfig?: TableIconButtonCellConfig; } export interface InputDropdownColumnDefinition extends BaseColumnDefinition { cellType: 'input-dropdown'; cellConfig?: TableInputDropdownCellConfig; } export interface InputTextColumnDefinition extends BaseColumnDefinition { cellType: 'input-text'; cellConfig?: TableInputTextCellConfig; } /** Discriminated union of column definitions. Omit cellType for text (default). */ export type ColumnDefinition = TextColumnDefinition | ChipColumnDefinition | AvatarColumnDefinition | CheckboxColumnDefinition | TextLinkColumnDefinition | ButtonColumnDefinition | IconButtonColumnDefinition | InputDropdownColumnDefinition | InputTextColumnDefinition; export {};