import { DataFrameColumn, SortState, PaginationState } from '../types';
/**
* DataFrame - Data table with sorting, searching, pagination, and row selection.
*
* @example
* ```vue
*
* ```
*/
interface Props {
/** Array of data objects */
data: Record[];
/** Column definitions */
columns: DataFrameColumn[];
/** Unique key for each row (property name or function) */
rowKey?: string | ((row: Record) => string | number);
/** Alternate row background colors */
striped?: boolean;
/** Show table borders */
bordered?: boolean;
/**
* Table size. Left unset, it follows the platform's `tableDensity` setting
* (compact → `sm`, normal → `md`, comfortable → `lg`) and falls back to
* `md` when no settings store is installed.
*/
size?: 'sm' | 'md' | 'lg';
/** Make header sticky on scroll */
stickyHeader?: boolean;
/** Maximum table height (enables vertical scroll) */
maxHeight?: string | number;
/** Show loading overlay */
loading?: boolean;
/**
* Error message. When set, the table body is replaced by an error state
* instead of the empty state. `null`/`undefined` renders normally.
*/
error?: string | null;
/** Empty state message */
emptyText?: string;
/** Enable column sorting */
sortable?: boolean;
/** Current sort state (controlled mode) */
sort?: SortState | null;
/** Pagination state or false to disable */
pagination?: PaginationState | false;
/** Enable search input */
searchable?: boolean;
/** Search input placeholder */
searchPlaceholder?: string;
/** Column keys to search (defaults to all) */
searchKeys?: string[];
/** Enable row selection with checkboxes */
selectable?: boolean;
/** Currently selected row keys */
selectedKeys?: (string | number)[];
/** Make each body row act as a click/keyboard target. */
clickableRows?: boolean;
/** Show a trailing action column with a per-row delete button. */
deletable?: boolean;
/** Tooltip / aria-label for the row delete button. */
deleteLabel?: string;
/** Allow dragging a column's right edge to resize it. */
resizable?: boolean;
/** Controlled column widths in px, keyed by column key (omit for uncontrolled). */
columnWidths?: Record;
}
declare var __VLS_18: `header-${string}`, __VLS_19: {
column: DataFrameColumn>;
}, __VLS_30: `cell-${string}`, __VLS_31: {
value: unknown;
row: Record;
column: DataFrameColumn>;
index: number;
}, __VLS_33: {
error: string;
}, __VLS_40: {}, __VLS_47: {}, __VLS_54: {};
type __VLS_Slots = {} & {
[K in NonNullable]?: (props: typeof __VLS_19) => any;
} & {
[K in NonNullable]?: (props: typeof __VLS_31) => any;
} & {
error?: (props: typeof __VLS_33) => any;
} & {
empty?: (props: typeof __VLS_40) => any;
} & {
loading?: (props: typeof __VLS_47) => any;
} & {
footer?: (props: typeof __VLS_54) => any;
};
declare const __VLS_base: import('vue').DefineComponent any;
"update:pagination": (pagination: PaginationState) => any;
"update:selectedKeys": (keys: (string | number)[]) => any;
"update:columnWidths": (widths: Record) => any;
"row-click": (row: Record, index: number) => any;
"cell-click": (value: unknown, column: DataFrameColumn>, row: Record) => any;
"delete-row": (row: Record, index: number) => any;
}, string, import('vue').PublicProps, Readonly & Readonly<{
"onUpdate:sort"?: ((sort: SortState | null) => any) | undefined;
"onUpdate:pagination"?: ((pagination: PaginationState) => any) | undefined;
"onUpdate:selectedKeys"?: ((keys: (string | number)[]) => any) | undefined;
"onUpdate:columnWidths"?: ((widths: Record) => any) | undefined;
"onRow-click"?: ((row: Record, index: number) => any) | undefined;
"onCell-click"?: ((value: unknown, column: DataFrameColumn>, row: Record) => any) | undefined;
"onDelete-row"?: ((row: Record, index: number) => any) | undefined;
}>, {
error: string | null;
loading: boolean;
selectable: boolean;
searchPlaceholder: string;
striped: boolean;
bordered: boolean;
stickyHeader: boolean;
emptyText: string;
sortable: boolean;
pagination: PaginationState | false;
searchable: boolean;
selectedKeys: (string | number)[];
clickableRows: boolean;
deletable: boolean;
deleteLabel: string;
resizable: boolean;
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
declare const __VLS_export: __VLS_WithSlots;
declare const _default: typeof __VLS_export;
export default _default;
type __VLS_WithSlots = T & {
new (): {
$slots: S;
};
};