import type { ColumnDef, Row, DataGridSortState, DataGridCellEditPayload, DataGridPageChangePayload, DataGridFilterState, DataGridSearchPayload } from "./LuDataGrid.types"; /** * Complex data table with sorting, filtering, selection, and pagination capabilities. * * ⛔ Do NOT add a `class` prop with Tailwind utilities. */ interface LuDataGridProps { /** Array of column definitions. */ columns: ColumnDef[]; /** Array of data row objects. */ data: Row[]; /** Shows a loading spinner and overlay when true. @default false */ loading?: boolean; /** Total number of rows for server-side pagination. */ total?: number; /** Current page number (1-indexed). @default 1 */ page?: number; /** Number of rows per page. @default 20 */ pageSize?: number; /** Enables column sorting. @default false */ sortable?: boolean; /** Performs sorting client-side when true. @default true */ localSort?: boolean; /** Column key to group rows by. */ groupBy?: string; /** Shows a checkbox column for row selection. @default false */ selectable?: boolean; /** Number of columns from the left to sticky-freeze. @default 0 */ freezeColumns?: number; /** Enables inline cell editing on columns where `editable` is true. @default false */ inlineEdit?: boolean; /** Key field to use for row identity. @default "id" */ idKey?: string; /** Text to show when data is empty. @default "No data" */ emptyText?: string; /** Shows a search input in the toolbar. @default false */ searchable?: boolean; /** 'local' filters data client-side; 'remote' emits a search event. @default 'local' */ searchMode?: "local" | "remote"; /** Debounce delay in ms for remote search emission. @default 300 */ searchDebounce?: number; /** Placeholder text for the search input. @default "Search…" */ searchPlaceholder?: string; } declare var __VLS_1: {}, __VLS_3: {}, __VLS_37: { label: string; }, __VLS_50: `cell-${string}`, __VLS_51: { row: Row; value: unknown; }, __VLS_56: {}; type __VLS_Slots = {} & { [K in NonNullable]?: (props: typeof __VLS_51) => any; } & { 'toolbar-start'?: (props: typeof __VLS_1) => any; } & { 'toolbar-end'?: (props: typeof __VLS_3) => any; } & { 'group-row'?: (props: typeof __VLS_37) => any; } & { empty?: (props: typeof __VLS_56) => any; }; declare const __VLS_component: import("vue").DefineComponent any; search: (payload: DataGridSearchPayload) => any; "page-change": (payload: DataGridPageChangePayload) => any; "selection-change": (selectedIds: string[]) => any; "cell-edit": (payload: DataGridCellEditPayload) => any; export: (payload: { format: "csv" | "excel"; }) => any; "filter-change": (payload: DataGridFilterState) => any; }, string, import("vue").PublicProps, Readonly & Readonly<{ onSort?: ((state: DataGridSortState | null) => any) | undefined; onSearch?: ((payload: DataGridSearchPayload) => any) | undefined; "onPage-change"?: ((payload: DataGridPageChangePayload) => any) | undefined; "onSelection-change"?: ((selectedIds: string[]) => any) | undefined; "onCell-edit"?: ((payload: DataGridCellEditPayload) => any) | undefined; onExport?: ((payload: { format: "csv" | "excel"; }) => any) | undefined; "onFilter-change"?: ((payload: DataGridFilterState) => any) | undefined; }>, { loading: boolean; searchable: boolean; page: number; pageSize: number; sortable: boolean; localSort: boolean; selectable: boolean; freezeColumns: number; inlineEdit: boolean; idKey: string; emptyText: string; searchMode: "local" | "remote"; searchDebounce: number; searchPlaceholder: string; }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>; declare const _default: __VLS_WithSlots; export default _default; type __VLS_WithSlots = T & { new (): { $slots: S; }; };