import { ListActionProps } from './action' type ListPresentation = 'default' | 'minimal' type ListDataType = | 'text' | 'number' | 'date' | 'action' | 'checkbox' | 'icon' | 'email' | 'datetime' | 'time' interface ListAction { id: string label?: string icon?: string color?: string href?: string onClick?: (item: any) => void onActionClick?: (item: any, action: any) => void } interface ConditionalClassList { [key: string]: (value: any) => boolean } interface ListColumn { key: string label: string type?: ListDataType align?: 'left' | 'center' | 'right' sortable?: boolean filterable?: boolean width?: string minWidth?: string maxWidth?: string cellClasses?: ConditionalClassList headerTooltip?: string cellTooltip?: boolean } interface ListFilter { placeholder?: string debounce?: number } interface ListProps { columns: ListColumn[] data: ListRowData[] actions?: ListActionProps[] CSVDownload?: string XLSXDownload?: string filter?: { placeholder?: string } loading?: boolean emptyMessage?: string presentation?: 'default' | 'minimal' width?: string } interface ListDownloadPayload { type: 'csv' | 'xlsx' fileName: string } interface ListEmits { (e: 'update:filter', value: string): void (e: 'row-click', row: any, index: number): void (e: 'row-dblclick', row: any, index: number): void (e: 'download', payload: ListDownloadPayload): void } interface ListComponent { focus: () => void blur: () => void clearFilter: () => void } interface ListIconProps { icon: string color?: string } interface ListRowData { excludeFromSort?: boolean excludeFromFilter?: boolean fixed?: 'top' | 'bottom' selected?: boolean class?: string [key: string]: any } export type { ListPresentation, ListProps, ListAction, ListEmits, ListComponent, ListIconProps, ListColumn, ListFilter, ListRowData, ListDownloadPayload, }