import { ColumnDefinition, RowActionsConfig, RowAnimationConfig, } from '../types' import { MobileDataTableConfig } from '../hooks/useMobileDataTable' import type { SkeletonVariant } from '../../Skeleton/skeleton.tokens' export type TableBodyProps> = { currentData: T[] dataVersion?: number | string visibleColumns: ColumnDefinition[] idField: string tableTitle?: string selectedRows: Record editingRows: Record editValues: Record expandedRows: Record enableInlineEdit?: boolean showActionsColumn?: boolean enableColumnManager?: boolean enableRowExpansion?: boolean enableRowSelection?: boolean rowSelectionConfig?: { isDisabled?: (row: T, index: number) => boolean disabledText?: (row: T, index: number) => string } rowActions?: RowActionsConfig columnFreeze?: number /** Freeze last N columns on the right side (sticky right). */ columnFreezeRight?: number /** Measured pixel widths of frozen columns (from header ResizeObserver). Used for sticky left offset. */ measuredFrozenWidths?: number[] mobileConfig?: MobileDataTableConfig mobileOverflowColumns?: ColumnDefinition[] onMobileOverflowClick?: (row: T) => void renderExpandedRow?: (expandedData: { row: T index: number isExpanded: boolean toggleExpansion: () => void }) => React.ReactNode isRowExpandable?: (row: T, index: number) => boolean onRowSelect: (rowId: unknown, rowIndex?: number) => void onEditRow: (rowId: unknown) => void onSaveRow: (rowId: unknown) => void onCancelEdit: (rowId: unknown) => void onRowExpand: (rowId: unknown) => void onFieldChange: (rowId: unknown, field: keyof T, value: unknown) => void onRowClick?: (row: T, index: number) => void getColumnWidth: ( column: ColumnDefinition, index: number ) => React.CSSProperties getRowStyle?: (row: T, index: number) => React.CSSProperties getDisplayValue?: (value: unknown, column: ColumnDefinition) => unknown dateLabel?: string isLoading?: boolean showSkeleton?: boolean skeletonVariant?: SkeletonVariant isRowLoading?: (row: T, index: number) => boolean focusedCell?: { rowIndex: number; colIndex: number } | null onCellFocus?: (rowIndex: number, colIndex: number) => void enableRowAnimation?: boolean rowAnimationConfig?: RowAnimationConfig }