import React from 'react'; export interface BaseTableColumn { key: string; title: string; align?: 'left' | 'center' | 'right'; width?: string; sortable?: boolean; render?: (value: any, row: TData, index: number) => React.ReactNode; colspan?: number; rowspan?: number; fixed?: 'left' | 'right'; groupTitle?: string; children?: BaseTableColumn[]; } export interface BaseTableProps { columns: BaseTableColumn[]; data: TData[]; striped?: boolean; hoverable?: boolean; bordered?: boolean; compact?: boolean; density?: 'comfortable' | 'standard' | 'compact' | 'spacious'; caption?: string; captionPosition?: 'top' | 'bottom'; emptyText?: string; emptyState?: React.ReactNode; className?: string; stickyHeader?: boolean; virtualized?: boolean; virtualizedRowHeight?: number; height?: string | number; sortable?: boolean; onSort?: (key: string, direction: 'asc' | 'desc') => void; pagination?: { enabled: boolean; pageSize?: number; component?: React.ReactNode; currentPage?: number; onPageChange?: (page: number) => void; }; loading?: React.ReactNode; rowGroups?: Array<{ title?: string; startIndex: number; endIndex: number; renderTitle?: (group: { title?: string; startIndex: number; endIndex: number; }) => React.ReactNode; }>; headerRenderer?: () => React.ReactNode; footerRenderer?: () => React.ReactNode; footer?: Array<{ key: string; label?: string; render: (columns: BaseTableColumn[]) => React.ReactNode; }>; ariaLabel?: string; ariaLabelledBy?: string; ariaDescribedBy?: string; [key: string]: any; }