/// import type { Column, ColumnDef, Table, VisibilityState } from '@tanstack/table-core'; import type { DataTableFilterOperatorTypes, FilterOperatorTypes, FilterSelectOption, FilterTypes, FilterValueType } from '~/types/filters'; import type { FilterChipCalendarProps } from '../filter-chip'; import type { BaseSelectProps } from '../select/select-root'; export type DataTableMode = 'client' | 'server'; export declare const SortOrders: { readonly ASC: "asc"; readonly DESC: "desc"; }; export interface DataTableFilterValues { value: unknown; boolValue?: boolean; stringValue?: string; numberValue?: number; } export interface InternalFilter extends DataTableFilterValues { _type?: FilterTypes; _dataType?: FilterValueType; name: string; operator: FilterOperatorTypes; } export interface DataTableFilter extends DataTableFilterValues { name: string; operator: DataTableFilterOperatorTypes; } type SortOrdersKeys = keyof typeof SortOrders; export type SortOrdersValues = (typeof SortOrders)[SortOrdersKeys]; export interface DataTableSort { name: string; order: SortOrdersValues; } export interface InternalQuery { filters?: InternalFilter[]; sort?: DataTableSort[]; group_by?: string[]; offset?: number; limit?: number; search?: string; } export interface DataTableQuery extends Omit { filters?: DataTableFilter[]; } export type DataTableColumn = Omit, 'columnDef'> & { columnDef: DataTableColumnDef; }; export type DataTableColumnDef = ColumnDef & { accessorKey: string; header: string; filterType?: FilterTypes; dataType?: FilterValueType; enableColumnFilter?: boolean; enableSorting?: boolean; enableHiding?: boolean; defaultHidden?: boolean; filterOptions?: FilterSelectOption[]; defaultFilterValue?: unknown; filterProps?: { select?: BaseSelectProps; calendar?: FilterChipCalendarProps; }; classNames?: { cell?: string; header?: string; }; styles?: { cell?: React.CSSProperties; header?: React.CSSProperties; }; enableGrouping?: boolean; showGroupCount?: boolean; groupCountMap?: Record; groupLabelsMap?: Record; icon?: React.ReactNode; }; export interface DataTableProps { columns: DataTableColumnDef[]; data: TData[]; query?: DataTableQuery; mode?: DataTableMode; isLoading?: boolean; totalRowCount?: number; loadingRowCount?: number; onTableQueryChange?: (query: DataTableQuery) => void; defaultSort?: DataTableSort; onLoadMore?: () => Promise; onRowClick?: (row: TData) => void; onColumnVisibilityChange?: (columnVisibility: VisibilityState) => void; /** When true, group headers stick under the table header while scrolling. Default is false. */ stickyGroupHeader?: boolean; /** Return a stable unique id for each row (used as React key). Use for sortable/filterable tables. */ getRowId?: (row: TData, index: number) => string; } export type DataTableContentClassNames = { root?: string; table?: string; header?: string; body?: string; row?: string; }; export type DataTableContentBaseProps = { emptyState?: React.ReactNode; zeroState?: React.ReactNode; classNames?: DataTableContentClassNames; }; export type DataTableContentProps = DataTableContentBaseProps; export type VirtualizedContentProps = DataTableContentBaseProps & { /** Height of each row in pixels. */ rowHeight?: number; /** Height of group header rows in pixels. Defaults to 40 (matches the non-virtualized section header height). */ groupHeaderHeight?: number; /** Number of rows to render outside visible area. */ overscan?: number; /** Distance in pixels from bottom to trigger load more. */ loadMoreOffset?: number; }; export type TableQueryUpdateFn = (query: InternalQuery) => InternalQuery; export type TableContextType = { table: Table; columns: DataTableColumnDef[]; isLoading?: boolean; loadMoreData: () => void; mode: DataTableMode; defaultSort?: DataTableSort; tableQuery?: InternalQuery; totalRowCount?: number; loadingRowCount?: number; onDisplaySettingsReset: () => void; updateTableQuery: (fn: TableQueryUpdateFn) => void; onRowClick?: (row: TData) => void; shouldShowFilters?: boolean; stickyGroupHeader?: boolean; }; export interface ColumnData { label: string; id: string; isVisible?: boolean; } interface SubRows<_T> { } export interface GroupedData extends SubRows { label: string; group_key: string; subRows: T[]; count?: number; showGroupCount?: boolean; } export declare const defaultGroupOption: { id: string; label: string; }; export {}; //# sourceMappingURL=data-table.types.d.ts.map