@datum-cloud/datum-ui 1.8.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/components/features/data-table/columns/selection-column.d.ts +5 -4
  2. package/dist/components/features/data-table/components/bulk-actions.d.ts +2 -1
  3. package/dist/components/features/data-table/components/column-header.d.ts +2 -1
  4. package/dist/components/features/data-table/components/inline-content.d.ts +2 -1
  5. package/dist/components/features/data-table/components/row-actions.d.ts +2 -1
  6. package/dist/components/features/data-table/core/client-provider.d.ts +3 -2
  7. package/dist/components/features/data-table/core/data-table-context.d.ts +46 -6
  8. package/dist/components/features/data-table/core/features.d.ts +59 -0
  9. package/dist/components/features/data-table/core/filter-engine.d.ts +4 -3
  10. package/dist/components/features/data-table/core/server-provider.d.ts +3 -2
  11. package/dist/components/features/data-table/core/store.d.ts +2 -1
  12. package/dist/components/features/data-table/hooks/use-data-table-client.d.ts +86 -7
  13. package/dist/components/features/data-table/hooks/use-data-table-server.d.ts +86 -7
  14. package/dist/components/features/data-table/hooks/use-selectors.d.ts +7 -6
  15. package/dist/components/features/data-table/index.d.ts +2 -0
  16. package/dist/components/features/data-table/types.d.ts +30 -29
  17. package/dist/components/features/grouped-table/grouped-table.d.ts +2 -1
  18. package/dist/components/features/grouped-table/lib/bucket-rows.d.ts +3 -2
  19. package/dist/components/features/grouped-table/lib/compose-columns.d.ts +4 -3
  20. package/dist/components/features/grouped-table/lib/sort-rows.d.ts +3 -2
  21. package/dist/components/features/grouped-table/types.d.ts +7 -6
  22. package/dist/components/features/grouped-table/use-grouped-expansion.d.ts +2 -1
  23. package/dist/data-table/index.mjs +2 -2
  24. package/dist/{data-table-mByk373T.mjs → data-table-DjGvAdO_.mjs} +40 -8
  25. package/dist/grouped-table/index.mjs +1 -1
  26. package/dist/{grouped-table-b2jDEPR6.mjs → grouped-table-D4J3ioHb.mjs} +5 -6
  27. package/dist/index.mjs +3 -3
  28. package/package.json +5 -5
@@ -1,5 +1,6 @@
1
- import type { ColumnDef } from '@tanstack/react-table';
1
+ import type { ColumnDef, RowData } from '@tanstack/react-table';
2
+ import type { DataTableFeatures } from '../core/features';
2
3
  import type { SelectionColumnOptions } from '../types';
3
- export declare function createSelectionColumn<TData>(options?: SelectionColumnOptions<TData>): ColumnDef<TData>;
4
- export declare function hasSelectionColumn<TData>(columns: ColumnDef<TData, any>[]): boolean;
5
- export declare function withSelectionColumn<TData>(columns: ColumnDef<TData, any>[], options?: SelectionColumnOptions<TData>): ColumnDef<TData, any>[];
4
+ export declare function createSelectionColumn<TData extends RowData>(options?: SelectionColumnOptions<TData>): ColumnDef<DataTableFeatures, TData>;
5
+ export declare function hasSelectionColumn<TData extends RowData>(columns: ColumnDef<DataTableFeatures, TData, any>[]): boolean;
6
+ export declare function withSelectionColumn<TData extends RowData>(columns: ColumnDef<DataTableFeatures, TData, any>[], options?: SelectionColumnOptions<TData>): ColumnDef<DataTableFeatures, TData, any>[];
@@ -1,2 +1,3 @@
1
+ import type { RowData } from '@tanstack/react-table';
1
2
  import type { BulkActionsProps } from '../types';
2
- export declare function DataTableBulkActions<TData>({ children, className, }: BulkActionsProps<TData>): import("react").JSX.Element | null;
3
+ export declare function DataTableBulkActions<TData extends RowData>({ children, className, }: BulkActionsProps<TData>): import("react").JSX.Element | null;
@@ -1,2 +1,3 @@
1
+ import type { RowData } from '@tanstack/react-table';
1
2
  import type { ColumnHeaderProps } from '../types';
2
- export declare function DataTableColumnHeader<TData, TValue>({ column, title, className, }: ColumnHeaderProps<TData, TValue>): import("react").JSX.Element;
3
+ export declare function DataTableColumnHeader<TData extends RowData, TValue>({ column, title, className, }: ColumnHeaderProps<TData, TValue>): import("react").JSX.Element;
@@ -1,2 +1,3 @@
1
+ import type { RowData } from '@tanstack/react-table';
1
2
  import type { InlineContentProps } from '../types';
2
- export declare function DataTableInlineContent<TData>({ position, rowId, open, onClose, className, children, }: InlineContentProps<TData>): null;
3
+ export declare function DataTableInlineContent<TData extends RowData>({ position, rowId, open, onClose, className, children, }: InlineContentProps<TData>): null;
@@ -1,2 +1,3 @@
1
+ import type { RowData } from '@tanstack/react-table';
1
2
  import type { RowActionsProps } from '../types';
2
- export declare function DataTableRowActions<TData>({ row, actions, isLoading, className, responsive, sheetTitle, }: RowActionsProps<TData>): import("react").JSX.Element | null;
3
+ export declare function DataTableRowActions<TData extends RowData>({ row, actions, isLoading, className, responsive, sheetTitle, }: RowActionsProps<TData>): import("react").JSX.Element | null;
@@ -1,8 +1,9 @@
1
+ import type { RowData } from '@tanstack/react-table';
1
2
  import type { ReactNode } from 'react';
2
3
  import type { UseDataTableClientOptions } from '../types';
3
- export type DataTableClientProviderProps<TData> = UseDataTableClientOptions<TData> & {
4
+ export type DataTableClientProviderProps<TData extends RowData> = UseDataTableClientOptions<TData> & {
4
5
  readonly loading?: boolean;
5
6
  readonly className?: string;
6
7
  readonly children: ReactNode;
7
8
  };
8
- export declare function ClientProvider<TData>(props: DataTableClientProviderProps<TData>): import("react").JSX.Element;
9
+ export declare function ClientProvider<TData extends RowData>(props: DataTableClientProviderProps<TData>): import("react").JSX.Element;
@@ -1,7 +1,47 @@
1
- import type { Table } from '@tanstack/react-table';
1
+ import type { ReactTable, RowData } from '@tanstack/react-table';
2
2
  import type { DataTableContextValue, DataTableStore } from '../types';
3
+ import type { DataTableFeatures } from './features';
3
4
  export declare const DataTableStoreContext: import("react").Context<DataTableStore<any> | null>;
4
- export declare const TableInstanceContext: import("react").Context<Table<any> | null>;
5
+ export declare const TableInstanceContext: import("react").Context<ReactTable<{
6
+ columnFilteringFeature: import("@tanstack/react-table").TableFeature;
7
+ columnSizingFeature: import("@tanstack/react-table").TableFeature;
8
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
9
+ globalFilteringFeature: import("@tanstack/react-table").TableFeature;
10
+ rowPaginationFeature: import("@tanstack/react-table").TableFeature;
11
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
12
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
13
+ filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
14
+ paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
15
+ sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
16
+ filterFns: {
17
+ arrIncludes: import("@tanstack/react-table").CreatedFilterFn<any, any>;
18
+ arrIncludesAll: import("@tanstack/react-table").CreatedFilterFn<any, any>;
19
+ arrHas: import("@tanstack/react-table").CreatedFilterFn<any, any>;
20
+ arrIncludesSome: import("@tanstack/react-table").CreatedFilterFn<any, any>;
21
+ between: import("@tanstack/react-table").CreatedFilterFn<any, any>;
22
+ betweenInclusive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
23
+ empty: import("@tanstack/react-table").CreatedFilterFn<any, any>;
24
+ endsWith: import("@tanstack/react-table").CreatedFilterFn<any, any>;
25
+ equals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
26
+ equalsString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
27
+ equalsStringSensitive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
28
+ inDateRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
29
+ inNumberRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
30
+ includesString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
31
+ includesStringSensitive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
32
+ notEmpty: import("@tanstack/react-table").CreatedFilterFn<any, any>;
33
+ startsWith: import("@tanstack/react-table").CreatedFilterFn<any, any>;
34
+ weakEquals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
35
+ };
36
+ sortFns: {
37
+ alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
38
+ alphanumericCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
39
+ basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
40
+ datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
41
+ text: import("@tanstack/react-table").CreatedSortFn<any, any>;
42
+ textCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
43
+ };
44
+ }, any> | null>;
5
45
  /**
6
46
  * Monotonic counter that increments on every store mutation.
7
47
  * Table-dependent hooks consume this context to force re-renders
@@ -18,15 +58,15 @@ export declare const DataTableRenderKeyContext: import("react").Context<number>;
18
58
  export declare function useRenderKey(): number;
19
59
  export declare const DataTableContext: import("react").Context<DataTableContextValue<any> | null>;
20
60
  /** @deprecated Use selector hooks from hooks/use-selectors instead */
21
- export declare function useDataTableContext<TData>(): DataTableContextValue<TData>;
22
- export declare function useDataTableStore<TData>(): DataTableStore<TData>;
61
+ export declare function useDataTableContext<TData extends RowData>(): DataTableContextValue<TData>;
62
+ export declare function useDataTableStore<TData extends RowData>(): DataTableStore<TData>;
23
63
  /**
24
64
  * @deprecated Use `useTableInstanceOrNull` instead — this throws during the
25
65
  * SSR/hydration window when the table instance is not yet mounted.
26
66
  */
27
- export declare function useTableInstance<TData>(): Table<TData>;
67
+ export declare function useTableInstance<TData extends RowData>(): ReactTable<DataTableFeatures, TData>;
28
68
  /**
29
69
  * Returns the table instance or null if not yet available.
30
70
  * Used by hooks that need to handle the null-table window during SSR.
31
71
  */
32
- export declare function useTableInstanceOrNull<TData>(): Table<TData> | null;
72
+ export declare function useTableInstanceOrNull<TData extends RowData>(): ReactTable<DataTableFeatures, TData> | null;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * The single TanStack Table v9 feature set used by every table in this package.
3
+ *
4
+ * v9 made features opt-in and threaded a `TFeatures` generic through every
5
+ * public type (`ColumnDef<TFeatures, TData, TValue>`, `Row<TFeatures, TData>`,
6
+ * ...). Leaving that generic open would push the parameter into every exported
7
+ * type in this library and force consumers to thread it through their own code.
8
+ *
9
+ * Declaring one concrete feature set and referencing `DataTableFeatures`
10
+ * internally keeps our public types parameterised on `TData` alone, which is
11
+ * what they were in v8.
12
+ *
13
+ * `data-table` needs sorting, pagination and row selection; `grouped-table`
14
+ * additionally needs global filtering for its search box. Both need column
15
+ * sizing (`columnDef.size` drives the shared grid template) and column
16
+ * visibility (`enableHiding` on the injected selection column). The set is the
17
+ * union rather than `stockFeatures` so unused features stay out of the bundle.
18
+ */
19
+ export declare const dataTableFeatures: {
20
+ columnFilteringFeature: import("@tanstack/react-table").TableFeature;
21
+ columnSizingFeature: import("@tanstack/react-table").TableFeature;
22
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
23
+ globalFilteringFeature: import("@tanstack/react-table").TableFeature;
24
+ rowPaginationFeature: import("@tanstack/react-table").TableFeature;
25
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
26
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
27
+ filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
28
+ paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
29
+ sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
30
+ filterFns: {
31
+ arrIncludes: import("@tanstack/react-table").CreatedFilterFn<any, any>;
32
+ arrIncludesAll: import("@tanstack/react-table").CreatedFilterFn<any, any>;
33
+ arrHas: import("@tanstack/react-table").CreatedFilterFn<any, any>;
34
+ arrIncludesSome: import("@tanstack/react-table").CreatedFilterFn<any, any>;
35
+ between: import("@tanstack/react-table").CreatedFilterFn<any, any>;
36
+ betweenInclusive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
37
+ empty: import("@tanstack/react-table").CreatedFilterFn<any, any>;
38
+ endsWith: import("@tanstack/react-table").CreatedFilterFn<any, any>;
39
+ equals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
40
+ equalsString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
41
+ equalsStringSensitive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
42
+ inDateRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
43
+ inNumberRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
44
+ includesString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
45
+ includesStringSensitive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
46
+ notEmpty: import("@tanstack/react-table").CreatedFilterFn<any, any>;
47
+ startsWith: import("@tanstack/react-table").CreatedFilterFn<any, any>;
48
+ weakEquals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
49
+ };
50
+ sortFns: {
51
+ alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
52
+ alphanumericCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
53
+ basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
54
+ datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
55
+ text: import("@tanstack/react-table").CreatedSortFn<any, any>;
56
+ textCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
57
+ };
58
+ };
59
+ export type DataTableFeatures = typeof dataTableFeatures;
@@ -1,3 +1,4 @@
1
+ import type { RowData } from '@tanstack/react-table';
1
2
  import type { FilterFn, FilterStrategy } from '../types';
2
3
  /**
3
4
  * Resolve a dot-path on an object (e.g. "status.registrationApproval").
@@ -12,11 +13,11 @@ interface FilterStrategies {
12
13
  [key: string]: FilterFn;
13
14
  }
14
15
  export declare const FILTER_STRATEGIES: FilterStrategies;
15
- export interface SearchConfig<TData> {
16
+ export interface SearchConfig<TData extends RowData> {
16
17
  searchFn?: (row: TData, query: string) => boolean;
17
18
  searchableColumns?: string[];
18
19
  }
19
20
  /** True when a row matches a free-text query (custom fn → columns → all values). */
20
- export declare function rowMatchesSearch<TData>(row: TData, search: string, config: SearchConfig<TData>): boolean;
21
- export declare function applyFilters<TData>(data: TData[], filters: Record<string, unknown>, search: string, registeredFilters: Map<string, FilterStrategy>, customFilterFns: Record<string, FilterFn>, searchConfig: SearchConfig<TData>): TData[];
21
+ export declare function rowMatchesSearch<TData extends RowData>(row: TData, search: string, config: SearchConfig<TData>): boolean;
22
+ export declare function applyFilters<TData extends RowData>(data: TData[], filters: Record<string, unknown>, search: string, registeredFilters: Map<string, FilterStrategy>, customFilterFns: Record<string, FilterFn>, searchConfig: SearchConfig<TData>): TData[];
22
23
  export {};
@@ -1,7 +1,8 @@
1
+ import type { RowData } from '@tanstack/react-table';
1
2
  import type { ReactNode } from 'react';
2
3
  import type { UseDataTableServerOptions } from '../types';
3
- export type DataTableServerProviderProps<TResponse, TData> = UseDataTableServerOptions<TResponse, TData> & {
4
+ export type DataTableServerProviderProps<TResponse, TData extends RowData> = UseDataTableServerOptions<TResponse, TData> & {
4
5
  readonly className?: string;
5
6
  readonly children: ReactNode;
6
7
  };
7
- export declare function ServerProvider<TResponse, TData>(props: DataTableServerProviderProps<TResponse, TData>): import("react").JSX.Element;
8
+ export declare function ServerProvider<TResponse, TData extends RowData>(props: DataTableServerProviderProps<TResponse, TData>): import("react").JSX.Element;
@@ -1,2 +1,3 @@
1
+ import type { RowData } from '@tanstack/react-table';
1
2
  import type { CreateStoreOptions, DataTableStore } from '../types';
2
- export declare function createDataTableStore<TData>(options: CreateStoreOptions<TData>): DataTableStore<TData>;
3
+ export declare function createDataTableStore<TData extends RowData>(options: CreateStoreOptions<TData>): DataTableStore<TData>;
@@ -1,8 +1,9 @@
1
- import type { ColumnDef } from '@tanstack/react-table';
1
+ import type { ColumnDef, RowData } from '@tanstack/react-table';
2
+ import type { DataTableFeatures } from '../core/features';
2
3
  import type { DataTableStore, SelectionColumnOptions, StateAdapter, UseDataTableClientOptions } from '../types';
3
4
  export type { UseDataTableClientOptions };
4
- export interface UseClientTableOptions<TData> {
5
- readonly columns: ColumnDef<TData, unknown>[];
5
+ export interface UseClientTableOptions<TData extends RowData> {
6
+ readonly columns: ColumnDef<DataTableFeatures, TData, unknown>[];
6
7
  readonly getRowId?: (row: TData) => string;
7
8
  readonly enableRowSelection?: boolean | SelectionColumnOptions<TData>;
8
9
  readonly stateAdapter?: StateAdapter;
@@ -11,10 +12,88 @@ export interface UseClientTableOptions<TData> {
11
12
  * Creates a TanStack Table instance from an existing store.
12
13
  * Does NOT create the store or sync data — the caller is responsible for that.
13
14
  */
14
- export declare function useClientTable<TData>(store: DataTableStore<TData>, options: UseClientTableOptions<TData>): {
15
- table: import("@tanstack/react-table").Table<TData>;
15
+ export declare function useClientTable<TData extends RowData>(store: DataTableStore<TData>, options: UseClientTableOptions<TData>): {
16
+ table: import("@tanstack/react-table").ReactTable<{
17
+ columnFilteringFeature: import("@tanstack/react-table").TableFeature;
18
+ columnSizingFeature: import("@tanstack/react-table").TableFeature;
19
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
20
+ globalFilteringFeature: import("@tanstack/react-table").TableFeature;
21
+ rowPaginationFeature: import("@tanstack/react-table").TableFeature;
22
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
23
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
24
+ filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
25
+ paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
26
+ sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
27
+ filterFns: {
28
+ arrIncludes: import("@tanstack/react-table").CreatedFilterFn<any, any>;
29
+ arrIncludesAll: import("@tanstack/react-table").CreatedFilterFn<any, any>;
30
+ arrHas: import("@tanstack/react-table").CreatedFilterFn<any, any>;
31
+ arrIncludesSome: import("@tanstack/react-table").CreatedFilterFn<any, any>;
32
+ between: import("@tanstack/react-table").CreatedFilterFn<any, any>;
33
+ betweenInclusive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
34
+ empty: import("@tanstack/react-table").CreatedFilterFn<any, any>;
35
+ endsWith: import("@tanstack/react-table").CreatedFilterFn<any, any>;
36
+ equals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
37
+ equalsString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
38
+ equalsStringSensitive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
39
+ inDateRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
40
+ inNumberRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
41
+ includesString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
42
+ includesStringSensitive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
43
+ notEmpty: import("@tanstack/react-table").CreatedFilterFn<any, any>;
44
+ startsWith: import("@tanstack/react-table").CreatedFilterFn<any, any>;
45
+ weakEquals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
46
+ };
47
+ sortFns: {
48
+ alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
49
+ alphanumericCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
50
+ basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
51
+ datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
52
+ text: import("@tanstack/react-table").CreatedSortFn<any, any>;
53
+ textCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
54
+ };
55
+ }, TData, import("@tanstack/react-table").TableState_ColumnFiltering & import("@tanstack/react-table").TableState_ColumnSizing & import("@tanstack/react-table").TableState_ColumnVisibility & import("@tanstack/react-table").TableState_GlobalFiltering & import("@tanstack/react-table").TableState_RowPagination & import("@tanstack/react-table").TableState_RowSelection & import("@tanstack/react-table").TableState_RowSorting>;
16
56
  };
17
- export declare function useDataTableClient<TData>(options: UseDataTableClientOptions<TData>): {
57
+ export declare function useDataTableClient<TData extends RowData>(options: UseDataTableClientOptions<TData>): {
18
58
  store: DataTableStore<TData>;
19
- table: import("@tanstack/react-table").Table<TData>;
59
+ table: import("@tanstack/react-table").ReactTable<{
60
+ columnFilteringFeature: import("@tanstack/react-table").TableFeature;
61
+ columnSizingFeature: import("@tanstack/react-table").TableFeature;
62
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
63
+ globalFilteringFeature: import("@tanstack/react-table").TableFeature;
64
+ rowPaginationFeature: import("@tanstack/react-table").TableFeature;
65
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
66
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
67
+ filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
68
+ paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
69
+ sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
70
+ filterFns: {
71
+ arrIncludes: import("@tanstack/react-table").CreatedFilterFn<any, any>;
72
+ arrIncludesAll: import("@tanstack/react-table").CreatedFilterFn<any, any>;
73
+ arrHas: import("@tanstack/react-table").CreatedFilterFn<any, any>;
74
+ arrIncludesSome: import("@tanstack/react-table").CreatedFilterFn<any, any>;
75
+ between: import("@tanstack/react-table").CreatedFilterFn<any, any>;
76
+ betweenInclusive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
77
+ empty: import("@tanstack/react-table").CreatedFilterFn<any, any>;
78
+ endsWith: import("@tanstack/react-table").CreatedFilterFn<any, any>;
79
+ equals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
80
+ equalsString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
81
+ equalsStringSensitive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
82
+ inDateRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
83
+ inNumberRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
84
+ includesString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
85
+ includesStringSensitive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
86
+ notEmpty: import("@tanstack/react-table").CreatedFilterFn<any, any>;
87
+ startsWith: import("@tanstack/react-table").CreatedFilterFn<any, any>;
88
+ weakEquals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
89
+ };
90
+ sortFns: {
91
+ alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
92
+ alphanumericCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
93
+ basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
94
+ datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
95
+ text: import("@tanstack/react-table").CreatedSortFn<any, any>;
96
+ textCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
97
+ };
98
+ }, TData, import("@tanstack/react-table").TableState_ColumnFiltering & import("@tanstack/react-table").TableState_ColumnSizing & import("@tanstack/react-table").TableState_ColumnVisibility & import("@tanstack/react-table").TableState_GlobalFiltering & import("@tanstack/react-table").TableState_RowPagination & import("@tanstack/react-table").TableState_RowSelection & import("@tanstack/react-table").TableState_RowSorting>;
20
99
  };
@@ -1,8 +1,9 @@
1
- import type { ColumnDef } from '@tanstack/react-table';
1
+ import type { ColumnDef, RowData } from '@tanstack/react-table';
2
+ import type { DataTableFeatures } from '../core/features';
2
3
  import type { DataTableStore, SelectionColumnOptions, ServerFetchArgs, ServerTransformResult, StateAdapter, UseDataTableServerOptions } from '../types';
3
4
  export type { UseDataTableServerOptions };
4
- export interface UseServerTableOptions<TResponse, TData> {
5
- readonly columns: ColumnDef<TData, unknown>[];
5
+ export interface UseServerTableOptions<TResponse, TData extends RowData> {
6
+ readonly columns: ColumnDef<DataTableFeatures, TData, unknown>[];
6
7
  readonly fetchFn: (args: ServerFetchArgs) => Promise<TResponse>;
7
8
  readonly transform: (response: TResponse) => ServerTransformResult<TData>;
8
9
  readonly limit?: number;
@@ -15,10 +16,88 @@ export interface UseServerTableOptions<TResponse, TData> {
15
16
  * Handles fetch-on-query-change, cursor pagination, and state adapter sync.
16
17
  * Does NOT create the store — the caller is responsible for that.
17
18
  */
18
- export declare function useServerTable<TResponse, TData>(store: DataTableStore<TData>, options: UseServerTableOptions<TResponse, TData>): {
19
- table: import("@tanstack/react-table").Table<TData>;
19
+ export declare function useServerTable<TResponse, TData extends RowData>(store: DataTableStore<TData>, options: UseServerTableOptions<TResponse, TData>): {
20
+ table: import("@tanstack/react-table").ReactTable<{
21
+ columnFilteringFeature: import("@tanstack/react-table").TableFeature;
22
+ columnSizingFeature: import("@tanstack/react-table").TableFeature;
23
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
24
+ globalFilteringFeature: import("@tanstack/react-table").TableFeature;
25
+ rowPaginationFeature: import("@tanstack/react-table").TableFeature;
26
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
27
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
28
+ filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
29
+ paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
30
+ sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
31
+ filterFns: {
32
+ arrIncludes: import("@tanstack/react-table").CreatedFilterFn<any, any>;
33
+ arrIncludesAll: import("@tanstack/react-table").CreatedFilterFn<any, any>;
34
+ arrHas: import("@tanstack/react-table").CreatedFilterFn<any, any>;
35
+ arrIncludesSome: import("@tanstack/react-table").CreatedFilterFn<any, any>;
36
+ between: import("@tanstack/react-table").CreatedFilterFn<any, any>;
37
+ betweenInclusive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
38
+ empty: import("@tanstack/react-table").CreatedFilterFn<any, any>;
39
+ endsWith: import("@tanstack/react-table").CreatedFilterFn<any, any>;
40
+ equals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
41
+ equalsString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
42
+ equalsStringSensitive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
43
+ inDateRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
44
+ inNumberRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
45
+ includesString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
46
+ includesStringSensitive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
47
+ notEmpty: import("@tanstack/react-table").CreatedFilterFn<any, any>;
48
+ startsWith: import("@tanstack/react-table").CreatedFilterFn<any, any>;
49
+ weakEquals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
50
+ };
51
+ sortFns: {
52
+ alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
53
+ alphanumericCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
54
+ basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
55
+ datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
56
+ text: import("@tanstack/react-table").CreatedSortFn<any, any>;
57
+ textCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
58
+ };
59
+ }, TData, import("@tanstack/react-table").TableState_ColumnFiltering & import("@tanstack/react-table").TableState_ColumnSizing & import("@tanstack/react-table").TableState_ColumnVisibility & import("@tanstack/react-table").TableState_GlobalFiltering & import("@tanstack/react-table").TableState_RowPagination & import("@tanstack/react-table").TableState_RowSelection & import("@tanstack/react-table").TableState_RowSorting>;
20
60
  };
21
- export declare function useDataTableServer<TResponse, TData>(options: UseDataTableServerOptions<TResponse, TData>): {
61
+ export declare function useDataTableServer<TResponse, TData extends RowData>(options: UseDataTableServerOptions<TResponse, TData>): {
22
62
  store: DataTableStore<TData>;
23
- table: import("@tanstack/react-table").Table<TData>;
63
+ table: import("@tanstack/react-table").ReactTable<{
64
+ columnFilteringFeature: import("@tanstack/react-table").TableFeature;
65
+ columnSizingFeature: import("@tanstack/react-table").TableFeature;
66
+ columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
67
+ globalFilteringFeature: import("@tanstack/react-table").TableFeature;
68
+ rowPaginationFeature: import("@tanstack/react-table").TableFeature;
69
+ rowSelectionFeature: import("@tanstack/react-table").TableFeature;
70
+ rowSortingFeature: import("@tanstack/react-table").TableFeature;
71
+ filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
72
+ paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
73
+ sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
74
+ filterFns: {
75
+ arrIncludes: import("@tanstack/react-table").CreatedFilterFn<any, any>;
76
+ arrIncludesAll: import("@tanstack/react-table").CreatedFilterFn<any, any>;
77
+ arrHas: import("@tanstack/react-table").CreatedFilterFn<any, any>;
78
+ arrIncludesSome: import("@tanstack/react-table").CreatedFilterFn<any, any>;
79
+ between: import("@tanstack/react-table").CreatedFilterFn<any, any>;
80
+ betweenInclusive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
81
+ empty: import("@tanstack/react-table").CreatedFilterFn<any, any>;
82
+ endsWith: import("@tanstack/react-table").CreatedFilterFn<any, any>;
83
+ equals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
84
+ equalsString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
85
+ equalsStringSensitive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
86
+ inDateRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
87
+ inNumberRange: import("@tanstack/react-table").CreatedFilterFn<any, any>;
88
+ includesString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
89
+ includesStringSensitive: import("@tanstack/react-table").CreatedFilterFn<any, any>;
90
+ notEmpty: import("@tanstack/react-table").CreatedFilterFn<any, any>;
91
+ startsWith: import("@tanstack/react-table").CreatedFilterFn<any, any>;
92
+ weakEquals: import("@tanstack/react-table").CreatedFilterFn<any, any>;
93
+ };
94
+ sortFns: {
95
+ alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
96
+ alphanumericCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
97
+ basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
98
+ datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
99
+ text: import("@tanstack/react-table").CreatedSortFn<any, any>;
100
+ textCaseSensitive: import("@tanstack/react-table").CreatedSortFn<any, any>;
101
+ };
102
+ }, TData, import("@tanstack/react-table").TableState_ColumnFiltering & import("@tanstack/react-table").TableState_ColumnSizing & import("@tanstack/react-table").TableState_ColumnVisibility & import("@tanstack/react-table").TableState_GlobalFiltering & import("@tanstack/react-table").TableState_RowPagination & import("@tanstack/react-table").TableState_RowSelection & import("@tanstack/react-table").TableState_RowSorting>;
24
103
  };
@@ -1,4 +1,5 @@
1
- import type { HeaderGroup, Row } from '@tanstack/react-table';
1
+ import type { HeaderGroup, Row, RowData } from '@tanstack/react-table';
2
+ import type { DataTableFeatures } from '../core/features';
2
3
  import type { InlineContentEntry } from '../types';
3
4
  export declare function useDataTableFilters(): {
4
5
  filters: import("..").FilterValue;
@@ -17,7 +18,7 @@ export declare function useDataTableSorting(): {
17
18
  sorting: import("@tanstack/react-table").SortingState;
18
19
  setSorting: (sorting: import("@tanstack/react-table").SortingState) => void;
19
20
  };
20
- export declare function useDataTableSelection<TData>(): {
21
+ export declare function useDataTableSelection<TData extends RowData>(): {
21
22
  rowSelection: import("@tanstack/react-table").RowSelectionState;
22
23
  setRowSelection: (selection: import("@tanstack/react-table").RowSelectionState) => void;
23
24
  selectedRows: TData[];
@@ -35,9 +36,9 @@ export declare function useDataTablePagination(): {
35
36
  setPageSize: (size: number) => void;
36
37
  totalRows: number;
37
38
  };
38
- export declare function useDataTableRows<TData>(): {
39
- rows: Row<TData>[];
40
- headerGroups: HeaderGroup<TData>[];
39
+ export declare function useDataTableRows<TData extends RowData>(): {
40
+ rows: Row<DataTableFeatures, TData>[];
41
+ headerGroups: HeaderGroup<DataTableFeatures, TData>[];
41
42
  totalColumns: number;
42
43
  };
43
44
  export declare function useDataTableLoading(): {
@@ -45,7 +46,7 @@ export declare function useDataTableLoading(): {
45
46
  error: Error | null;
46
47
  columnCount: number;
47
48
  };
48
- export declare function useDataTableInlineContents<TData>(): {
49
+ export declare function useDataTableInlineContents<TData extends RowData>(): {
49
50
  inlineContents: readonly InlineContentEntry<TData>[];
50
51
  registerInlineContent: (entry: InlineContentEntry<TData>) => void;
51
52
  unregisterInlineContent: (id: string) => void;
@@ -4,6 +4,8 @@ export { createSelectionColumn } from './columns/selection-column';
4
4
  export { DataTableColumnHeader } from './components/column-header';
5
5
  export { DataTableRowActions } from './components/row-actions';
6
6
  export { DEFAULT_DEBOUNCE_MS, DEFAULT_LOADING_ROWS, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZES, } from './constants';
7
+ export { dataTableFeatures } from './core/features';
8
+ export type { DataTableFeatures } from './core/features';
7
9
  export { resolvePath, rowMatchesSearch } from './core/filter-engine';
8
10
  export type { SearchConfig } from './core/filter-engine';
9
11
  export { createDataTableStore } from './core/store';
@@ -1,6 +1,7 @@
1
- import type { Cell, Column, ColumnDef, Row, RowSelectionState, SortingState, Table } from '@tanstack/react-table';
1
+ import type { Cell, Column, ColumnDef, ReactTable, Row, RowData, RowSelectionState, SortingState, Table } from '@tanstack/react-table';
2
2
  import type { ReactNode } from 'react';
3
3
  import type { ActionItem } from '../more-actions';
4
+ import type { DataTableFeatures } from './core/features';
4
5
  export type { ActionItem } from '../more-actions';
5
6
  export interface FilterOption {
6
7
  readonly label: string;
@@ -71,16 +72,16 @@ export interface ServerFetchArgs {
71
72
  readonly filters: FilterValue;
72
73
  readonly search: string;
73
74
  }
74
- export interface ServerTransformResult<TData> {
75
+ export interface ServerTransformResult<TData extends RowData> {
75
76
  readonly data: TData[];
76
77
  readonly cursor?: string;
77
78
  readonly hasNextPage: boolean;
78
79
  }
79
- export interface InlineContentRenderParams<TData> {
80
+ export interface InlineContentRenderParams<TData extends RowData> {
80
81
  readonly onClose: () => void;
81
82
  readonly rowData: TData | null;
82
83
  }
83
- export interface InlineContentEntry<TData> {
84
+ export interface InlineContentEntry<TData extends RowData> {
84
85
  readonly id: string;
85
86
  readonly position: 'top' | 'row';
86
87
  readonly rowId?: string;
@@ -89,7 +90,7 @@ export interface InlineContentEntry<TData> {
89
90
  readonly className?: string;
90
91
  readonly render: (params: InlineContentRenderParams<TData>) => ReactNode;
91
92
  }
92
- export interface InlineContentProps<TData> {
93
+ export interface InlineContentProps<TData extends RowData> {
93
94
  readonly position: 'top' | 'row';
94
95
  readonly rowId?: string;
95
96
  readonly open: boolean;
@@ -97,22 +98,22 @@ export interface InlineContentProps<TData> {
97
98
  readonly className?: string;
98
99
  readonly children: (params: InlineContentRenderParams<TData>) => ReactNode;
99
100
  }
100
- export interface SelectionColumnOptions<TData = unknown> {
101
+ export interface SelectionColumnOptions<TData extends RowData = Record<string, any>> {
101
102
  /** CSS class for cell checkboxes */
102
103
  readonly className?: string;
103
104
  /** CSS class for header checkbox */
104
105
  readonly headerClassName?: string;
105
106
  /** Custom header render (replaces default "select all" checkbox) */
106
107
  readonly renderHeader?: (props: {
107
- table: Table<TData>;
108
+ table: Table<DataTableFeatures, TData>;
108
109
  }) => ReactNode;
109
110
  /** Custom cell render (replaces default row checkbox) */
110
111
  readonly renderCell?: (props: {
111
- row: Row<TData>;
112
+ row: Row<DataTableFeatures, TData>;
112
113
  }) => ReactNode;
113
114
  }
114
- export interface DataTableContextValue<TData> {
115
- readonly table: Table<TData>;
115
+ export interface DataTableContextValue<TData extends RowData> {
116
+ readonly table: ReactTable<DataTableFeatures, TData>;
116
117
  readonly mode: 'client' | 'server';
117
118
  readonly sorting: SortingState;
118
119
  readonly filters: FilterValue;
@@ -131,9 +132,9 @@ export interface DataTableContextValue<TData> {
131
132
  readonly registerInlineContent: (entry: InlineContentEntry<TData>) => void;
132
133
  readonly unregisterInlineContent: (id: string) => void;
133
134
  }
134
- export interface UseDataTableClientOptions<TData> {
135
+ export interface UseDataTableClientOptions<TData extends RowData> {
135
136
  readonly data: TData[];
136
- readonly columns: ColumnDef<TData, unknown>[];
137
+ readonly columns: ColumnDef<DataTableFeatures, TData, unknown>[];
137
138
  readonly pageSize?: number;
138
139
  readonly getRowId?: (row: TData) => string;
139
140
  readonly enableRowSelection?: boolean | SelectionColumnOptions<TData>;
@@ -144,8 +145,8 @@ export interface UseDataTableClientOptions<TData> {
144
145
  readonly filterFns?: FilterFnMap;
145
146
  readonly stateAdapter?: StateAdapter;
146
147
  }
147
- export interface UseDataTableServerOptions<TResponse, TData> {
148
- readonly columns: ColumnDef<TData, unknown>[];
148
+ export interface UseDataTableServerOptions<TResponse, TData extends RowData> {
149
+ readonly columns: ColumnDef<DataTableFeatures, TData, unknown>[];
149
150
  readonly fetchFn: (args: ServerFetchArgs) => Promise<TResponse>;
150
151
  readonly transform: (response: TResponse) => ServerTransformResult<TData>;
151
152
  readonly limit?: number;
@@ -155,9 +156,9 @@ export interface UseDataTableServerOptions<TResponse, TData> {
155
156
  readonly defaultFilters?: FilterValue;
156
157
  readonly stateAdapter?: StateAdapter;
157
158
  }
158
- interface DataTableBaseProps<TData> {
159
+ interface DataTableBaseProps<TData extends RowData> {
159
160
  readonly data: TData[];
160
- readonly columns: ColumnDef<TData, unknown>[];
161
+ readonly columns: ColumnDef<DataTableFeatures, TData, unknown>[];
161
162
  readonly sorting: SortingState;
162
163
  readonly setSorting: (sorting: SortingState) => void;
163
164
  readonly filters: FilterValue;
@@ -174,12 +175,12 @@ interface DataTableBaseProps<TData> {
174
175
  readonly className?: string;
175
176
  readonly children: ReactNode;
176
177
  }
177
- export interface DataTableClientProps<TData> extends DataTableBaseProps<TData> {
178
+ export interface DataTableClientProps<TData extends RowData> extends DataTableBaseProps<TData> {
178
179
  readonly pagination: ClientPaginationState;
179
180
  readonly searchableColumns?: string[];
180
181
  readonly searchFn?: (row: TData, search: string) => boolean;
181
182
  }
182
- export interface DataTableServerProps<TData> extends DataTableBaseProps<TData> {
183
+ export interface DataTableServerProps<TData extends RowData> extends DataTableBaseProps<TData> {
183
184
  readonly isLoading: boolean;
184
185
  readonly pagination: ServerPaginationState;
185
186
  }
@@ -224,24 +225,24 @@ export interface FilterCheckboxProps {
224
225
  readonly sheetTitle?: string;
225
226
  readonly modal?: boolean;
226
227
  }
227
- export interface ColumnHeaderProps<TData, TValue> {
228
- readonly column: Column<TData, TValue>;
228
+ export interface ColumnHeaderProps<TData extends RowData, TValue> {
229
+ readonly column: Column<DataTableFeatures, TData, TValue>;
229
230
  readonly title: string;
230
231
  readonly className?: string;
231
232
  }
232
- export interface RowActionsProps<TData> {
233
- readonly row: Row<TData>;
233
+ export interface RowActionsProps<TData extends RowData> {
234
+ readonly row: Row<DataTableFeatures, TData>;
234
235
  readonly actions: readonly ActionItem<TData>[];
235
236
  readonly isLoading?: boolean;
236
237
  readonly className?: string;
237
238
  readonly responsive?: boolean;
238
239
  readonly sheetTitle?: string;
239
240
  }
240
- export interface BulkActionsProps<TData> {
241
+ export interface BulkActionsProps<TData extends RowData> {
241
242
  readonly children: (selectedRows: TData[]) => ReactNode;
242
243
  readonly className?: string;
243
244
  }
244
- export interface ContentProps<TData = unknown> {
245
+ export interface ContentProps<TData extends RowData = Record<string, any>> {
245
246
  readonly emptyMessage?: ReactNode;
246
247
  readonly className?: string;
247
248
  readonly tableClassName?: string;
@@ -249,8 +250,8 @@ export interface ContentProps<TData = unknown> {
249
250
  readonly headerRowClassName?: string;
250
251
  readonly headerCellClassName?: string;
251
252
  readonly bodyClassName?: string;
252
- readonly rowClassName?: string | ((row: Row<TData>) => string);
253
- readonly cellClassName?: string | ((cell: Cell<TData, unknown>) => string);
253
+ readonly rowClassName?: string | ((row: Row<DataTableFeatures, TData>) => string);
254
+ readonly cellClassName?: string | ((cell: Cell<DataTableFeatures, TData, unknown>) => string);
254
255
  }
255
256
  export interface PaginationProps {
256
257
  readonly pageSizes?: readonly number[];
@@ -282,7 +283,7 @@ export interface LoadingProps {
282
283
  readonly className?: string;
283
284
  }
284
285
  export type FilterStrategy = 'checkbox' | 'select' | 'date-gte' | 'date-lte' | FilterFn;
285
- export interface DataTableStoreState<TData> {
286
+ export interface DataTableStoreState<TData extends RowData> {
286
287
  readonly data: TData[];
287
288
  readonly filteredData: TData[];
288
289
  readonly sorting: SortingState;
@@ -299,7 +300,7 @@ export interface DataTableStoreState<TData> {
299
300
  /** Monotonic counter incremented on every state change. Used by table-dependent selectors to detect updates. */
300
301
  readonly _version: number;
301
302
  }
302
- export interface DataTableStore<TData> {
303
+ export interface DataTableStore<TData extends RowData> {
303
304
  readonly getSnapshot: () => DataTableStoreState<TData>;
304
305
  readonly subscribe: (listener: () => void) => () => void;
305
306
  readonly setData: (data: TData[]) => void;
@@ -321,7 +322,7 @@ export interface DataTableStore<TData> {
321
322
  readonly registerInlineContent: (entry: InlineContentEntry<TData>) => void;
322
323
  readonly unregisterInlineContent: (id: string) => void;
323
324
  }
324
- export interface CreateStoreOptions<TData> {
325
+ export interface CreateStoreOptions<TData extends RowData> {
325
326
  readonly data: TData[];
326
327
  readonly mode: 'client' | 'server';
327
328
  readonly defaultSort?: SortingState;
@@ -1,2 +1,3 @@
1
+ import type { RowData } from '@tanstack/react-table';
1
2
  import type { GroupedTableProps } from './types';
2
- export declare function GroupedTable<TData>(props: GroupedTableProps<TData>): import("react").JSX.Element;
3
+ export declare function GroupedTable<TData extends RowData>(props: GroupedTableProps<TData>): import("react").JSX.Element;
@@ -1,4 +1,5 @@
1
- import type { Row } from '@tanstack/react-table';
1
+ import type { Row, RowData } from '@tanstack/react-table';
2
+ import type { DataTableFeatures } from '../../data-table/core/features';
2
3
  interface GroupLike {
3
4
  id: string;
4
5
  rows: unknown[];
@@ -9,5 +10,5 @@ interface GroupLike {
9
10
  * positions to learn which row id belongs to which group, so bucketing is correct
10
11
  * regardless of a custom getRowId.
11
12
  */
12
- export declare function bucketRows<TData>(groups: GroupLike[], coreRows: Row<TData>[], filteredRows: Row<TData>[]): Map<string, Row<TData>[]>;
13
+ export declare function bucketRows<TData extends RowData>(groups: GroupLike[], coreRows: Row<DataTableFeatures, TData>[], filteredRows: Row<DataTableFeatures, TData>[]): Map<string, Row<DataTableFeatures, TData>[]>;
13
14
  export {};
@@ -1,10 +1,11 @@
1
- import type { ColumnDef } from '@tanstack/react-table';
1
+ import type { ColumnDef, RowData } from '@tanstack/react-table';
2
2
  import type { SelectionColumnOptions } from '../../data-table';
3
+ import type { DataTableFeatures } from '../../data-table/core/features';
3
4
  import type { ActionItem } from '../../more-actions';
4
- export interface ComposeOptions<TData> {
5
+ export interface ComposeOptions<TData extends RowData> {
5
6
  enableRowSelection?: boolean | SelectionColumnOptions<TData>;
6
7
  enableSorting?: boolean;
7
8
  rowActions?: (row: TData) => ActionItem<TData>[];
8
9
  rowActionsSheetTitle?: string;
9
10
  }
10
- export declare function composeColumns<TData>(columns: ColumnDef<TData, unknown>[], options: ComposeOptions<TData>): ColumnDef<TData, unknown>[];
11
+ export declare function composeColumns<TData extends RowData>(columns: ColumnDef<DataTableFeatures, TData, unknown>[], options: ComposeOptions<TData>): ColumnDef<DataTableFeatures, TData, unknown>[];
@@ -1,6 +1,7 @@
1
- import type { Row, SortingState } from '@tanstack/react-table';
1
+ import type { Row, RowData, SortingState } from '@tanstack/react-table';
2
+ import type { DataTableFeatures } from '../../data-table/core/features';
2
3
  /**
3
4
  * Sort a single group's rows by the active sort (first entry; v1 is single-sort).
4
5
  * Returns the same reference when there is no sort, so React can skip re-renders.
5
6
  */
6
- export declare function sortRows<TData>(rows: Row<TData>[], sorting: SortingState): Row<TData>[];
7
+ export declare function sortRows<TData extends RowData>(rows: Row<DataTableFeatures, TData>[], sorting: SortingState): Row<DataTableFeatures, TData>[];
@@ -1,9 +1,10 @@
1
- import type { Cell, ColumnDef, Row, RowSelectionState, SortingState } from '@tanstack/react-table';
1
+ import type { Cell, ColumnDef, Row, RowData, RowSelectionState, SortingState } from '@tanstack/react-table';
2
2
  import type { ReactNode } from 'react';
3
3
  import type { SelectionColumnOptions } from '../data-table';
4
+ import type { DataTableFeatures } from '../data-table/core/features';
4
5
  import type { ActionItem } from '../more-actions';
5
6
  export type DefaultExpanded = 'all' | 'none' | string[];
6
- export interface GroupedTableGroup<TData> {
7
+ export interface GroupedTableGroup<TData extends RowData> {
7
8
  /** Stable key used for expand state. */
8
9
  id: string;
9
10
  /** Group header label. */
@@ -14,9 +15,9 @@ export interface GroupedTableGroup<TData> {
14
15
  /** Per-group override of the table-level default. */
15
16
  defaultOpen?: boolean;
16
17
  }
17
- export interface GroupedTableProps<TData> {
18
+ export interface GroupedTableProps<TData extends RowData> {
18
19
  /** TanStack column defs. `size` (px) drives the shared grid template; unsized columns flex. */
19
- columns: ColumnDef<TData, unknown>[];
20
+ columns: ColumnDef<DataTableFeatures, TData, unknown>[];
20
21
  groups: GroupedTableGroup<TData>[];
21
22
  /** Uncontrolled initial state. Default `'all'`. A string[] opens exactly those ids. */
22
23
  defaultExpanded?: DefaultExpanded;
@@ -67,7 +68,7 @@ export interface GroupedTableProps<TData> {
67
68
  /** Each group's `<tbody>`. */
68
69
  bodyClassName?: string;
69
70
  /** Each data `<tr>`; receives the row for per-row styling. */
70
- rowClassName?: string | ((row: Row<TData>) => string);
71
+ rowClassName?: string | ((row: Row<DataTableFeatures, TData>) => string);
71
72
  /** Each data `<td>`; receives the cell for per-cell styling. */
72
- cellClassName?: string | ((cell: Cell<TData, unknown>) => string);
73
+ cellClassName?: string | ((cell: Cell<DataTableFeatures, TData, unknown>) => string);
73
74
  }
@@ -1,5 +1,6 @@
1
+ import type { RowData } from '@tanstack/react-table';
1
2
  import type { DefaultExpanded, GroupedTableGroup } from './types';
2
- export declare function useGroupedExpansion<TData>(groups: GroupedTableGroup<TData>[], opts: {
3
+ export declare function useGroupedExpansion<TData extends RowData>(groups: GroupedTableGroup<TData>[], opts: {
3
4
  defaultExpanded?: DefaultExpanded;
4
5
  expanded?: string[];
5
6
  onExpandedChange?: (ids: string[]) => void;
@@ -1,2 +1,2 @@
1
- import { _ as DEFAULT_DEBOUNCE_MS, a as useDataTablePagination, b as DEFAULT_PAGE_SIZES, c as useDataTableSelection, d as resolvePath, f as rowMatchesSearch, g as useNuqsAdapter, h as createSelectionColumn, i as useDataTableLoading, l as useDataTableSorting, m as DataTableColumnHeader, n as useDataTableFilters, o as useDataTableRows, p as DataTableRowActions, r as useDataTableInlineContents, s as useDataTableSearch, t as DataTable, u as createDataTableStore, v as DEFAULT_LOADING_ROWS, y as DEFAULT_PAGE_SIZE } from "../data-table-mByk373T.mjs";
2
- export { DEFAULT_DEBOUNCE_MS, DEFAULT_LOADING_ROWS, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZES, DataTable, DataTableColumnHeader, DataTableRowActions, createDataTableStore, createSelectionColumn, resolvePath, rowMatchesSearch, useDataTableFilters, useDataTableInlineContents, useDataTableLoading, useDataTablePagination, useDataTableRows, useDataTableSearch, useDataTableSelection, useDataTableSorting, useNuqsAdapter };
1
+ import { _ as useNuqsAdapter, a as useDataTablePagination, b as DEFAULT_PAGE_SIZE, c as useDataTableSelection, d as resolvePath, f as rowMatchesSearch, g as createSelectionColumn, h as DataTableColumnHeader, i as useDataTableLoading, l as useDataTableSorting, m as DataTableRowActions, n as useDataTableFilters, o as useDataTableRows, p as dataTableFeatures, r as useDataTableInlineContents, s as useDataTableSearch, t as DataTable, u as createDataTableStore, v as DEFAULT_DEBOUNCE_MS, x as DEFAULT_PAGE_SIZES, y as DEFAULT_LOADING_ROWS } from "../data-table-DjGvAdO_.mjs";
2
+ export { DEFAULT_DEBOUNCE_MS, DEFAULT_LOADING_ROWS, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZES, DataTable, DataTableColumnHeader, DataTableRowActions, createDataTableStore, createSelectionColumn, dataTableFeatures, resolvePath, rowMatchesSearch, useDataTableFilters, useDataTableInlineContents, useDataTableLoading, useDataTablePagination, useDataTableRows, useDataTableSearch, useDataTableSelection, useDataTableSorting, useNuqsAdapter };
@@ -16,7 +16,7 @@ import { ArrowDown, ArrowUp, ArrowUpDown, ChevronLeft, ChevronRight, MoreHorizon
16
16
  import { createContext, memo, use, useCallback, useContext, useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } from "react";
17
17
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
18
18
  import { parseAsInteger, parseAsString, useQueryStates } from "nuqs";
19
- import { flexRender, getCoreRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from "@tanstack/react-table";
19
+ import { columnFilteringFeature, columnSizingFeature, columnVisibilityFeature, createFilteredRowModel, createPaginatedRowModel, createSortedRowModel, filterFns, flexRender, globalFilteringFeature, rowPaginationFeature, rowSelectionFeature, rowSortingFeature, sortFns, tableFeatures, useTable } from "@tanstack/react-table";
20
20
  //#region src/components/features/data-table/constants.ts
21
21
  const DEFAULT_PAGE_SIZE = 20;
22
22
  const DEFAULT_PAGE_SIZES = [
@@ -206,6 +206,40 @@ function DataTableRowActions({ row, actions, isLoading = false, className, respo
206
206
  });
207
207
  }
208
208
  //#endregion
209
+ //#region src/components/features/data-table/core/features.ts
210
+ /**
211
+ * The single TanStack Table v9 feature set used by every table in this package.
212
+ *
213
+ * v9 made features opt-in and threaded a `TFeatures` generic through every
214
+ * public type (`ColumnDef<TFeatures, TData, TValue>`, `Row<TFeatures, TData>`,
215
+ * ...). Leaving that generic open would push the parameter into every exported
216
+ * type in this library and force consumers to thread it through their own code.
217
+ *
218
+ * Declaring one concrete feature set and referencing `DataTableFeatures`
219
+ * internally keeps our public types parameterised on `TData` alone, which is
220
+ * what they were in v8.
221
+ *
222
+ * `data-table` needs sorting, pagination and row selection; `grouped-table`
223
+ * additionally needs global filtering for its search box. Both need column
224
+ * sizing (`columnDef.size` drives the shared grid template) and column
225
+ * visibility (`enableHiding` on the injected selection column). The set is the
226
+ * union rather than `stockFeatures` so unused features stay out of the bundle.
227
+ */
228
+ const dataTableFeatures = tableFeatures({
229
+ columnFilteringFeature,
230
+ columnSizingFeature,
231
+ columnVisibilityFeature,
232
+ globalFilteringFeature,
233
+ rowPaginationFeature,
234
+ rowSelectionFeature,
235
+ rowSortingFeature,
236
+ filteredRowModel: createFilteredRowModel(),
237
+ paginatedRowModel: createPaginatedRowModel(),
238
+ sortedRowModel: createSortedRowModel(),
239
+ filterFns,
240
+ sortFns
241
+ });
242
+ //#endregion
209
243
  //#region src/components/features/data-table/core/filter-engine.ts
210
244
  /**
211
245
  * Resolve a dot-path on an object (e.g. "status.registrationApproval").
@@ -1107,7 +1141,8 @@ function useClientTable(store, options) {
1107
1141
  const { columns, getRowId, enableRowSelection = false, stateAdapter } = options;
1108
1142
  const resolvedColumns = useMemo(() => enableRowSelection ? withSelectionColumn(columns, typeof enableRowSelection === "object" ? enableRowSelection : {}) : columns, [columns, enableRowSelection]);
1109
1143
  const { filteredData, sorting, rowSelection, pageIndex, pageSize: storePageSize, filters, search } = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);
1110
- const table = useReactTable({
1144
+ const table = useTable({
1145
+ features: dataTableFeatures,
1111
1146
  data: filteredData,
1112
1147
  columns: resolvedColumns,
1113
1148
  state: {
@@ -1133,9 +1168,6 @@ function useClientTable(store, options) {
1133
1168
  }) : updater;
1134
1169
  store.setPagination(next.pageIndex, next.pageSize);
1135
1170
  },
1136
- getCoreRowModel: getCoreRowModel(),
1137
- getSortedRowModel: getSortedRowModel(),
1138
- getPaginationRowModel: getPaginationRowModel(),
1139
1171
  getRowId,
1140
1172
  enableRowSelection: !!enableRowSelection
1141
1173
  });
@@ -1345,7 +1377,8 @@ function useServerTable(store, options) {
1345
1377
  store
1346
1378
  ]);
1347
1379
  const resolvedColumns = useMemo(() => enableRowSelection ? withSelectionColumn(columns, typeof enableRowSelection === "object" ? enableRowSelection : {}) : columns, [columns, enableRowSelection]);
1348
- const table = useReactTable({
1380
+ const table = useTable({
1381
+ features: dataTableFeatures,
1349
1382
  data: store.getSnapshot().data,
1350
1383
  columns: resolvedColumns,
1351
1384
  state: {
@@ -1360,7 +1393,6 @@ function useServerTable(store, options) {
1360
1393
  manualSorting: true,
1361
1394
  manualFiltering: true,
1362
1395
  pageCount: hasNextPageRef.current ? pageIndex + 2 : pageIndex + 1,
1363
- getCoreRowModel: getCoreRowModel(),
1364
1396
  getRowId,
1365
1397
  enableRowSelection: !!enableRowSelection,
1366
1398
  onSortingChange: (updater) => {
@@ -1579,4 +1611,4 @@ const DataTable = {
1579
1611
  DatePickerFilter
1580
1612
  };
1581
1613
  //#endregion
1582
- export { DEFAULT_DEBOUNCE_MS as _, useDataTablePagination as a, DEFAULT_PAGE_SIZES as b, useDataTableSelection as c, resolvePath as d, rowMatchesSearch as f, useNuqsAdapter as g, createSelectionColumn as h, useDataTableLoading as i, useDataTableSorting as l, DataTableColumnHeader as m, useDataTableFilters as n, useDataTableRows as o, DataTableRowActions as p, useDataTableInlineContents as r, useDataTableSearch as s, DataTable as t, createDataTableStore as u, DEFAULT_LOADING_ROWS as v, DEFAULT_PAGE_SIZE as y };
1614
+ export { useNuqsAdapter as _, useDataTablePagination as a, DEFAULT_PAGE_SIZE as b, useDataTableSelection as c, resolvePath as d, rowMatchesSearch as f, createSelectionColumn as g, DataTableColumnHeader as h, useDataTableLoading as i, useDataTableSorting as l, DataTableRowActions as m, useDataTableFilters as n, useDataTableRows as o, dataTableFeatures as p, useDataTableInlineContents as r, useDataTableSearch as s, DataTable as t, createDataTableStore as u, DEFAULT_DEBOUNCE_MS as v, DEFAULT_PAGE_SIZES as x, DEFAULT_LOADING_ROWS as y };
@@ -1,2 +1,2 @@
1
- import { t as GroupedTable } from "../grouped-table-b2jDEPR6.mjs";
1
+ import { t as GroupedTable } from "../grouped-table-D4J3ioHb.mjs";
2
2
  export { GroupedTable };
@@ -5,12 +5,12 @@ import { t as useControllableState } from "./use-controllable-state-Dna7u3r9.mjs
5
5
  import { t as Input } from "./input-j4tbmYYz.mjs";
6
6
  import { Skeleton } from "./skeleton/index.mjs";
7
7
  import { TableBody, TableCell, TableHead, TableHeader, TableRow } from "./table/index.mjs";
8
- import { f as rowMatchesSearch, h as createSelectionColumn, m as DataTableColumnHeader, p as DataTableRowActions } from "./data-table-mByk373T.mjs";
8
+ import { f as rowMatchesSearch, g as createSelectionColumn, h as DataTableColumnHeader, m as DataTableRowActions, p as dataTableFeatures } from "./data-table-DjGvAdO_.mjs";
9
9
  import { n as useDebouncedSearchInput } from "./use-debounced-search-input-yu_F0QBt.mjs";
10
10
  import { ChevronRight } from "lucide-react";
11
11
  import { useCallback, useMemo, useState } from "react";
12
12
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
13
- import { flexRender, getCoreRowModel, getFilteredRowModel, useReactTable } from "@tanstack/react-table";
13
+ import { flexRender, useTable } from "@tanstack/react-table";
14
14
  //#region src/components/features/grouped-table/components/grouped-skeleton.tsx
15
15
  function GroupedSkeleton({ columns = 4, groups = 2, rowsPerGroup = 3 }) {
16
16
  return /* @__PURE__ */ jsx("div", {
@@ -216,7 +216,8 @@ function GroupedTable(props) {
216
216
  ]);
217
217
  const minWidth = useMemo(() => trackMinWidth(resolvedColumns), [resolvedColumns]);
218
218
  const flatData = useMemo(() => groups.flatMap((g) => g.rows), [groups]);
219
- const table = useReactTable({
219
+ const table = useTable({
220
+ features: dataTableFeatures,
220
221
  data: flatData,
221
222
  columns: resolvedColumns,
222
223
  state: {
@@ -234,9 +235,7 @@ function GroupedTable(props) {
234
235
  searchFn,
235
236
  searchableColumns
236
237
  }),
237
- getRowId,
238
- getCoreRowModel: getCoreRowModel(),
239
- getFilteredRowModel: getFilteredRowModel()
238
+ getRowId
240
239
  });
241
240
  const headerGroups = table.getHeaderGroups();
242
241
  const coreRows = table.getCoreRowModel().rows;
package/dist/index.mjs CHANGED
@@ -53,7 +53,7 @@ import { i as ClientOnly, n as useTheme, r as ThemeScript, t as ThemeProvider }
53
53
  import { a as formatJson, c as isValidYaml, d as CodeEditor, i as CodeEditorTabs, l as jsonToYaml, n as jsonSchema, o as formatYaml, r as yamlSchema, s as isValidJson, t as createCodeEditorSchema, u as yamlToJson } from "./types-agDpVXBG.mjs";
54
54
  import { t as toast } from "./toast-BUPlDkN3.mjs";
55
55
  import { n as Toaster, t as useToast } from "./use-toast-Bpq0yJIT.mjs";
56
- import { _ as DEFAULT_DEBOUNCE_MS, a as useDataTablePagination, b as DEFAULT_PAGE_SIZES, c as useDataTableSelection, d as resolvePath, f as rowMatchesSearch, g as useNuqsAdapter, h as createSelectionColumn, i as useDataTableLoading, l as useDataTableSorting, m as DataTableColumnHeader, n as useDataTableFilters, o as useDataTableRows, p as DataTableRowActions, r as useDataTableInlineContents, s as useDataTableSearch, t as DataTable, u as createDataTableStore, v as DEFAULT_LOADING_ROWS, y as DEFAULT_PAGE_SIZE } from "./data-table-mByk373T.mjs";
56
+ import { _ as useNuqsAdapter, a as useDataTablePagination, b as DEFAULT_PAGE_SIZE, c as useDataTableSelection, d as resolvePath, f as rowMatchesSearch, g as createSelectionColumn, h as DataTableColumnHeader, i as useDataTableLoading, l as useDataTableSorting, m as DataTableRowActions, n as useDataTableFilters, o as useDataTableRows, p as dataTableFeatures, r as useDataTableInlineContents, s as useDataTableSearch, t as DataTable, u as createDataTableStore, v as DEFAULT_DEBOUNCE_MS, x as DEFAULT_PAGE_SIZES, y as DEFAULT_LOADING_ROWS } from "./data-table-DjGvAdO_.mjs";
57
57
  import { t as ActionRow } from "./action-row-DTvs91_3.mjs";
58
58
  import { n as useDebouncedSearchInput, t as DEFAULT_SEARCH_DEBOUNCE_MS } from "./use-debounced-search-input-yu_F0QBt.mjs";
59
59
  import { t as MultiSelect } from "./multi-select-PHaMEbY-.mjs";
@@ -68,7 +68,7 @@ import { InputWithAddons } from "./input-with-addons/index.mjs";
68
68
  import { t as TimePicker } from "./time-picker-B_fN5vhO.mjs";
69
69
  import { t as Transfer } from "./transfer-CEq9AhL7.mjs";
70
70
  import { a as getResponsiveValue, c as GRID_COLUMNS, d as RESPONSIVE_MAP, i as getGutter, l as GRID_PREFIX, n as Row, o as registerMediaQuery, r as RowContext, s as GRID_BREAKPOINTS, t as Col, u as RESPONSIVE_ARRAY } from "./col-BYGWTB4j.mjs";
71
- import { t as GroupedTable } from "./grouped-table-b2jDEPR6.mjs";
71
+ import { t as GroupedTable } from "./grouped-table-D4J3ioHb.mjs";
72
72
  import { t as InputNumber } from "./input-number-TXmW-X9o.mjs";
73
73
  import { a as logoStyles, i as LogoFlat, n as LogoStacked, r as LogoIcon, t as LogoText } from "./logo-text-Dpm5O6Kg.mjs";
74
74
  import { t as Logo } from "./logo-C3FxD7jb.mjs";
@@ -82,4 +82,4 @@ import { _ as RedisTaskStorage, a as TaskPanelItem, b as createProjectMetadata,
82
82
  import { _ as getShortTimezoneDisplay, a as TimeRangePicker, b as utcToLocalInputString, c as getPresetByKey, d as TimezoneSelector, f as QuickRangesPanel, g as getDefaultTimezoneOptions, h as formatUtcForDisplay, i as formatTimeRangeDisplay, l as getPresetByShortcut, m as createTimezoneOption, n as formatDateForInput, o as DEFAULT_PRESETS, p as CustomRangePanel, r as formatSingleTimeDisplay, s as getDefaultPreset, t as toApiTimeRange, u as getPresetRange, v as localInputStringToUtc, x as zonedDateToUtcString, y as utcStringToZonedDate } from "./to-api-format-43Boq7OR.mjs";
83
83
  import { t as useDebounce } from "./hooks-CwZ6hyI1.mjs";
84
84
  import { n as toUTCTimestampStartOfDay, t as toUTCTimestampEndOfDay } from "./utils-CA4QEIJ8.mjs";
85
- export { CustomRangePanel as AbsoluteRangePanel, CustomRangePanel, ActionRow, Alert, AlertDescription, AlertTitle, AppNavigation, Autocomplete, Autosearch, Avatar, AvatarFallback, AvatarImage, AvatarStack, Badge, Blockquote, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDatePicker, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, ClientOnly, CloseIcon, Code, CodeEditor, CodeEditorTabs, Col, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DEFAULT_DEBOUNCE_MS, DEFAULT_LOADING_ROWS, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZES, DEFAULT_PRESETS, DEFAULT_SEARCH_DEBOUNCE_MS, DataTable, DataTableColumnHeader, DataTableRowActions, DateTimePicker, Dialog, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, DropzoneContent, DropzoneEmptyState, EmptyContent, FileInputButton, Form, FormAdapterProvider, FormAutocomplete, FormAutosearch, FormButton, FormCheckbox, FormCombobox, FormCopyBox, FormCustom, FormDatePicker, FormDateTimePicker, FormDescription, FormDialog, FormError, FormField, FormFieldArray, FormInput, FormRadioGroup, FormRadioItem, FormRoot, FormSelect, FormSelectItem, FormSubmit, FormSwitch, FormTextarea, FormTimePicker, FormTransfer, FormWhen, GRID_BREAKPOINTS, GRID_COLUMNS, GRID_PREFIX, GroupedTable, HoverCard, HoverCardContent, HoverCardTrigger, Icon, InSheetContext, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumber, InputWithAddons, Label, Link, LinkButton, List, ListItem, LoaderOverlay, LocalTaskStorage, Logo, LogoFlat, LogoIcon, LogoStacked, LogoText, Map, MapCircle, MapCircleMarker, MapControlContainer, MapDrawCircle, MapDrawControl, MapDrawDelete, MapDrawEdit, MapDrawMarker, MapDrawPolygon, MapDrawPolyline, MapDrawRectangle, MapDrawUndo, MapFeatureGroup, MapFullscreenControl, MapLayerGroup, MapLayers, MapLayersControl, MapLocateControl, MapMarker, MapMarkerClusterGroup, MapPolygon, MapPolyline, MapPopup, MapRectangle, MapSearchControl, MapTileLayer, MapTooltip, MapZoomControl, MobileSheet, MoreActions, MultiSelect, NavMenu, NavMenuItem, PageTitle, Paragraph, PlaceAutocomplete, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, QuickRangesPanel, RESPONSIVE_ARRAY, RESPONSIVE_MAP, RadioGroup, RadioGroupItem, RedisTaskStorage, ResponsiveDropdown, ResponsivePopover, ResponsiveSheetTrigger, RichTextContent, RichTextEditor, Row, RowContext, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Spinner, SpinnerIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsLinkTrigger, TabsList, TabsTrigger, TagsInput, TaskPanel, TaskPanelActions, TaskPanelCounter, TaskPanelHeader, TaskPanelItem, TaskQueue, TaskQueueDropdown, TaskQueueProvider, TaskQueueTrigger, TaskSummaryDialog, Text, Textarea, ThemeProvider, ThemeScript, TimePicker, TimeRangePicker, TimezoneSelector, Title, Toaster, Tooltip, Transfer, VisuallyHidden, avatarStackVariants, badgeVariants, buttonGroupVariants, buttonVariants, cn, configureProgress, createCodeEditorSchema, createDataTableStore, createOrgMetadata, createProjectMetadata, createSelectionColumn, createTimezoneOption, createUserMetadata, defaultAutosearchValue, defineStepper, detectStorage, findItemByHref, formatDateForInput, formatJson, formatSingleTimeDisplay, formatTimeRangeDisplay, formatTimezoneLabel, formatUtcForDisplay, formatYaml, getBrowserTimezone, getContextLabel, getDefaultPreset, getDefaultTimezoneOptions, getGutter, getPresetByKey, getPresetByShortcut, getPresetRange, getResponsiveValue, getShortTimezoneDisplay, getTimezoneOffset, hasActiveDescendant, isNavItemActive, isValidJson, isValidYaml, jsonSchema, jsonToYaml, localInputStringToUtc, logoStyles, matchesCurrentScope, normalizePath, paragraphVariants, registerMediaQuery, resolvePath, rowMatchesSearch, startProgress, stopProgress, textVariants, titleVariants, toApiTimeRange, toUTCTimestampEndOfDay, toUTCTimestampStartOfDay, toast, useAdapter, useBreakpoint, useControllableState, useCopyToClipboard, useCurrentScope, useDataTableFilters, useDataTableInlineContents, useDataTableLoading, useDataTablePagination, useDataTableRows, useDataTableSearch, useDataTableSelection, useDataTableSorting, useDebounce, useDebouncedSearchInput, useField, useFieldContext, useFormContext, useFormState, useInSheet, useLeaflet, useNuqsAdapter, useRichTextEditor, useSidebar, useTaskQueue, useTasksWithLabels, useTheme, useToast, useWatch, useWatchAll, utcStringToZonedDate, utcToLocalInputString, yamlSchema, yamlToJson, zonedDateToUtcString };
85
+ export { CustomRangePanel as AbsoluteRangePanel, CustomRangePanel, ActionRow, Alert, AlertDescription, AlertTitle, AppNavigation, Autocomplete, Autosearch, Avatar, AvatarFallback, AvatarImage, AvatarStack, Badge, Blockquote, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDatePicker, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, ClientOnly, CloseIcon, Code, CodeEditor, CodeEditorTabs, Col, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DEFAULT_DEBOUNCE_MS, DEFAULT_LOADING_ROWS, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZES, DEFAULT_PRESETS, DEFAULT_SEARCH_DEBOUNCE_MS, DataTable, DataTableColumnHeader, DataTableRowActions, DateTimePicker, Dialog, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, DropzoneContent, DropzoneEmptyState, EmptyContent, FileInputButton, Form, FormAdapterProvider, FormAutocomplete, FormAutosearch, FormButton, FormCheckbox, FormCombobox, FormCopyBox, FormCustom, FormDatePicker, FormDateTimePicker, FormDescription, FormDialog, FormError, FormField, FormFieldArray, FormInput, FormRadioGroup, FormRadioItem, FormRoot, FormSelect, FormSelectItem, FormSubmit, FormSwitch, FormTextarea, FormTimePicker, FormTransfer, FormWhen, GRID_BREAKPOINTS, GRID_COLUMNS, GRID_PREFIX, GroupedTable, HoverCard, HoverCardContent, HoverCardTrigger, Icon, InSheetContext, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputNumber, InputWithAddons, Label, Link, LinkButton, List, ListItem, LoaderOverlay, LocalTaskStorage, Logo, LogoFlat, LogoIcon, LogoStacked, LogoText, Map, MapCircle, MapCircleMarker, MapControlContainer, MapDrawCircle, MapDrawControl, MapDrawDelete, MapDrawEdit, MapDrawMarker, MapDrawPolygon, MapDrawPolyline, MapDrawRectangle, MapDrawUndo, MapFeatureGroup, MapFullscreenControl, MapLayerGroup, MapLayers, MapLayersControl, MapLocateControl, MapMarker, MapMarkerClusterGroup, MapPolygon, MapPolyline, MapPopup, MapRectangle, MapSearchControl, MapTileLayer, MapTooltip, MapZoomControl, MobileSheet, MoreActions, MultiSelect, NavMenu, NavMenuItem, PageTitle, Paragraph, PlaceAutocomplete, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, QuickRangesPanel, RESPONSIVE_ARRAY, RESPONSIVE_MAP, RadioGroup, RadioGroupItem, RedisTaskStorage, ResponsiveDropdown, ResponsivePopover, ResponsiveSheetTrigger, RichTextContent, RichTextEditor, Row, RowContext, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Spinner, SpinnerIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsLinkTrigger, TabsList, TabsTrigger, TagsInput, TaskPanel, TaskPanelActions, TaskPanelCounter, TaskPanelHeader, TaskPanelItem, TaskQueue, TaskQueueDropdown, TaskQueueProvider, TaskQueueTrigger, TaskSummaryDialog, Text, Textarea, ThemeProvider, ThemeScript, TimePicker, TimeRangePicker, TimezoneSelector, Title, Toaster, Tooltip, Transfer, VisuallyHidden, avatarStackVariants, badgeVariants, buttonGroupVariants, buttonVariants, cn, configureProgress, createCodeEditorSchema, createDataTableStore, createOrgMetadata, createProjectMetadata, createSelectionColumn, createTimezoneOption, createUserMetadata, dataTableFeatures, defaultAutosearchValue, defineStepper, detectStorage, findItemByHref, formatDateForInput, formatJson, formatSingleTimeDisplay, formatTimeRangeDisplay, formatTimezoneLabel, formatUtcForDisplay, formatYaml, getBrowserTimezone, getContextLabel, getDefaultPreset, getDefaultTimezoneOptions, getGutter, getPresetByKey, getPresetByShortcut, getPresetRange, getResponsiveValue, getShortTimezoneDisplay, getTimezoneOffset, hasActiveDescendant, isNavItemActive, isValidJson, isValidYaml, jsonSchema, jsonToYaml, localInputStringToUtc, logoStyles, matchesCurrentScope, normalizePath, paragraphVariants, registerMediaQuery, resolvePath, rowMatchesSearch, startProgress, stopProgress, textVariants, titleVariants, toApiTimeRange, toUTCTimestampEndOfDay, toUTCTimestampStartOfDay, toast, useAdapter, useBreakpoint, useControllableState, useCopyToClipboard, useCurrentScope, useDataTableFilters, useDataTableInlineContents, useDataTableLoading, useDataTablePagination, useDataTableRows, useDataTableSearch, useDataTableSelection, useDataTableSorting, useDebounce, useDebouncedSearchInput, useField, useFieldContext, useFormContext, useFormState, useInSheet, useLeaflet, useNuqsAdapter, useRichTextEditor, useSidebar, useTaskQueue, useTasksWithLabels, useTheme, useToast, useWatch, useWatchAll, utcStringToZonedDate, utcToLocalInputString, yamlSchema, yamlToJson, zonedDateToUtcString };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@datum-cloud/datum-ui",
3
3
  "type": "module",
4
- "version": "1.8.0",
4
+ "version": "2.0.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "url": "https://github.com/datum-cloud/datum-ui"
@@ -418,7 +418,7 @@
418
418
  "@monaco-editor/react": ">=4.7.0 <5",
419
419
  "@stepperize/react": ">=7 <8",
420
420
  "@streamdown/code": ">=1 <2",
421
- "@tanstack/react-table": ">=8.21.3 <9",
421
+ "@tanstack/react-table": ">=9 <10",
422
422
  "@tanstack/react-virtual": ">=3.14.3 <4",
423
423
  "@tiptap/extension-character-count": ">=3.27.1 <4",
424
424
  "@tiptap/extension-link": ">=3.27.1 <4",
@@ -436,7 +436,7 @@
436
436
  "leaflet.markercluster": ">=1.5.3 <2",
437
437
  "lucide-react": ">=1 <2",
438
438
  "monaco-editor": ">=0.44.0 <1",
439
- "motion": ">=12 <13",
439
+ "motion": ">=13 <14",
440
440
  "nprogress": ">=0.2 <1",
441
441
  "nuqs": ">=2 <3",
442
442
  "react": ">=19.2.7 <20",
@@ -604,7 +604,7 @@
604
604
  "@monaco-editor/react": "^4.7.0",
605
605
  "@stepperize/react": "^7.0.0",
606
606
  "@streamdown/code": "^1.1.1",
607
- "@tanstack/react-table": "^8.21.3",
607
+ "@tanstack/react-table": "^9.1.2",
608
608
  "@tanstack/react-virtual": "^3.14.9",
609
609
  "@testing-library/jest-dom": "^7.0.1",
610
610
  "@testing-library/react": "^16.3.2",
@@ -635,7 +635,7 @@
635
635
  "leaflet.markercluster": "^1.5.3",
636
636
  "lucide-react": "^1.31.0",
637
637
  "monaco-editor": "^0.56.0",
638
- "motion": "^12.43.0",
638
+ "motion": "^13.1.0",
639
639
  "nprogress": "^0.2.0",
640
640
  "nuqs": "^2.9.6",
641
641
  "react": "^19.2.8",