import { NJC_CHIP_TYPES } from '../chip/chip.ts'; import { Placement } from '@floating-ui/dom'; export interface RowData { [key: string]: any; } export interface TableCellConfigBase { align?: 'left' | 'center' | 'right'; tooltipText?: string | ((row: RowData) => string); } export type TableTextFormat = 'text' | 'number' | 'currency' | 'date' | 'time' | 'datetime'; export interface TableTextCellConfig extends TableCellConfigBase { textFormat?: TableTextFormat; currencyCode?: string; locale?: string; decimalPlaces?: number; } export interface TableChipCellConfig extends TableCellConfigBase { type?: NJC_CHIP_TYPES | ((row: RowData) => NJC_CHIP_TYPES); } export interface TableAvatarCellConfig extends TableCellConfigBase { avatarSrcField?: string; avatarInitialsField?: string; } export interface TableCheckboxCellConfig extends TableCellConfigBase { } export interface TableTextLinkCellConfig extends TableCellConfigBase { href?: string | ((row: RowData) => string); target?: '_blank' | '_self'; } export interface TableButtonCellConfig extends TableCellConfigBase { buttonVariant?: 'primary' | 'secondary' | 'base' | 'destructive'; } export type TableIconButtonMenuItem = { label: string; value?: string; startIcon?: string; endIcon?: string; }; export interface TableIconButtonCellConfig extends TableCellConfigBase { iconName: string; iconAriaLabel?: string | ((row: RowData) => string); menuItems?: TableIconButtonMenuItem[] | ((row: RowData) => TableIconButtonMenuItem[]); menuPlacement?: Placement; menuAriaLabel?: string; } export type TableDropdownOption = { label: string; value: string | number; }; export interface TableInputDropdownCellConfig extends TableCellConfigBase { options?: TableDropdownOption[]; placeholder?: string; multiselect?: boolean; } export interface TableInputTextCellConfig extends TableCellConfigBase { placeholder?: string; } export type TableCellConfig = TableTextCellConfig | TableChipCellConfig | TableAvatarCellConfig | TableCheckboxCellConfig | TableTextLinkCellConfig | TableButtonCellConfig | TableIconButtonCellConfig | TableInputDropdownCellConfig | TableInputTextCellConfig;