@datum-cloud/datum-ui 1.8.0 → 2.1.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 (91) hide show
  1. package/dist/autocomplete/index.mjs +1 -1
  2. package/dist/{autocomplete-DM6JYV4W.mjs → autocomplete-DZ_HSBak.mjs} +1 -1
  3. package/dist/autosearch/index.mjs +1 -1
  4. package/dist/{calendar-date-picker-AzvSqjeS.mjs → calendar-date-picker-ynSGADfR.mjs} +1 -1
  5. package/dist/components/base/sheet/sheet.d.ts +2 -1
  6. package/dist/components/features/data-table/columns/selection-column.d.ts +5 -4
  7. package/dist/components/features/data-table/components/bulk-actions.d.ts +2 -1
  8. package/dist/components/features/data-table/components/column-header.d.ts +2 -1
  9. package/dist/components/features/data-table/components/inline-content.d.ts +2 -1
  10. package/dist/components/features/data-table/components/row-actions.d.ts +2 -1
  11. package/dist/components/features/data-table/core/client-provider.d.ts +3 -2
  12. package/dist/components/features/data-table/core/data-table-context.d.ts +46 -6
  13. package/dist/components/features/data-table/core/features.d.ts +59 -0
  14. package/dist/components/features/data-table/core/filter-engine.d.ts +4 -3
  15. package/dist/components/features/data-table/core/server-provider.d.ts +3 -2
  16. package/dist/components/features/data-table/core/store.d.ts +2 -1
  17. package/dist/components/features/data-table/hooks/use-data-table-client.d.ts +86 -7
  18. package/dist/components/features/data-table/hooks/use-data-table-server.d.ts +86 -7
  19. package/dist/components/features/data-table/hooks/use-selectors.d.ts +7 -6
  20. package/dist/components/features/data-table/index.d.ts +2 -0
  21. package/dist/components/features/data-table/types.d.ts +30 -29
  22. package/dist/components/features/date-time/date-time.d.ts +6 -0
  23. package/dist/components/features/date-time/formatters.d.ts +13 -0
  24. package/dist/components/features/date-time/index.d.ts +3 -0
  25. package/dist/components/features/date-time/types.d.ts +47 -0
  26. package/dist/components/features/grouped-table/grouped-table.d.ts +2 -1
  27. package/dist/components/features/grouped-table/lib/bucket-rows.d.ts +3 -2
  28. package/dist/components/features/grouped-table/lib/compose-columns.d.ts +4 -3
  29. package/dist/components/features/grouped-table/lib/sort-rows.d.ts +3 -2
  30. package/dist/components/features/grouped-table/types.d.ts +7 -6
  31. package/dist/components/features/grouped-table/use-grouped-expansion.d.ts +2 -1
  32. package/dist/components/features/index.d.ts +1 -0
  33. package/dist/components/features/logs/components/detail.d.ts +3 -0
  34. package/dist/components/features/logs/components/explorer.d.ts +3 -0
  35. package/dist/components/features/logs/components/filters.d.ts +11 -0
  36. package/dist/components/features/logs/components/root.d.ts +2 -0
  37. package/dist/components/features/logs/components/status-badge.d.ts +7 -0
  38. package/dist/components/features/logs/components/table.d.ts +3 -0
  39. package/dist/components/features/logs/components/toolbar.d.ts +12 -0
  40. package/dist/components/features/logs/fixtures/index.d.ts +2 -0
  41. package/dist/components/features/logs/hooks/use-controllable-state.d.ts +5 -0
  42. package/dist/components/features/logs/hooks/use-logs.d.ts +3 -0
  43. package/dist/components/features/logs/index.d.ts +4 -0
  44. package/dist/components/features/logs/logs.d.ts +18 -0
  45. package/dist/components/features/logs/types.d.ts +105 -0
  46. package/dist/components/features/logs/utils/build-logql.d.ts +2 -0
  47. package/dist/components/features/logs/utils/constants.d.ts +6 -0
  48. package/dist/components/features/logs/utils/facets.d.ts +3 -0
  49. package/dist/components/features/logs/utils/flatten-loki.d.ts +3 -0
  50. package/dist/components/features/logs/utils/format-timestamp.d.ts +4 -0
  51. package/dist/components/features/logs/utils/index.d.ts +8 -0
  52. package/dist/components/features/logs/utils/parse-log-line.d.ts +7 -0
  53. package/dist/components/features/logs/utils/severity.d.ts +5 -0
  54. package/dist/components/features/logs/utils/time-range.d.ts +3 -0
  55. package/dist/data-table/index.mjs +2 -2
  56. package/dist/{data-table-mByk373T.mjs → data-table-Du7_FLBi.mjs} +44 -12
  57. package/dist/date-picker/index.mjs +3 -3
  58. package/dist/date-time/index.mjs +2 -0
  59. package/dist/date-time-CA-09lnw.mjs +134 -0
  60. package/dist/date-time-picker/index.mjs +1 -1
  61. package/dist/{date-time-picker-D3-DeNo8.mjs → date-time-picker-BzcHrf-A.mjs} +1 -1
  62. package/dist/{picker-b5-x-EHs.mjs → date-time-range-picker-Dog33Ry0.mjs} +22 -456
  63. package/dist/form/index.mjs +1 -1
  64. package/dist/{form-BUUNQfC9.mjs → form-BhBsoMFA.mjs} +4 -4
  65. package/dist/grouped-table/index.mjs +1 -1
  66. package/dist/{grouped-table-b2jDEPR6.mjs → grouped-table--jejU1Jy.mjs} +5 -6
  67. package/dist/index.mjs +19 -18
  68. package/dist/logs/fixtures/index.mjs +231 -0
  69. package/dist/logs/index.mjs +980 -0
  70. package/dist/mobile-sheet/index.mjs +1 -1
  71. package/dist/{mobile-sheet-D9L-JOee.mjs → mobile-sheet-BYp-QQmn.mjs} +1 -1
  72. package/dist/more-actions/index.mjs +1 -1
  73. package/dist/{more-actions-Bx443Ccx.mjs → more-actions-B1FUf2rm.mjs} +1 -1
  74. package/dist/multi-select/index.mjs +1 -1
  75. package/dist/{multi-select-PHaMEbY-.mjs → multi-select-PtdMChPF.mjs} +1 -1
  76. package/dist/picker/index.mjs +2 -1
  77. package/dist/picker-raVuDxsh.mjs +453 -0
  78. package/dist/responsive-dropdown/index.mjs +1 -1
  79. package/dist/{responsive-dropdown-fCmduKaz.mjs → responsive-dropdown-n0Txkax5.mjs} +1 -1
  80. package/dist/responsive-popover/index.mjs +1 -1
  81. package/dist/{responsive-popover-DJZgXWIE.mjs → responsive-popover-C_1nzIvm.mjs} +1 -1
  82. package/dist/rich-text-editor/index.mjs +1 -1
  83. package/dist/{rich-text-editor-CGuSn8xi.mjs → rich-text-editor-Dohp-pbf.mjs} +1 -1
  84. package/dist/sheet/index.mjs +1 -1
  85. package/dist/{sheet-BZViad2U.mjs → sheet-C2i2k5i2.mjs} +2 -2
  86. package/dist/task-queue/index.mjs +1 -1
  87. package/dist/{task-queue-dropdown-pqFd4rSf.mjs → task-queue-dropdown-ClLLTMxU.mjs} +1 -1
  88. package/dist/time-picker/index.mjs +1 -1
  89. package/dist/{time-picker-B_fN5vhO.mjs → time-picker-CFhaHTtI.mjs} +1 -1
  90. package/dist/{to-api-format-43Boq7OR.mjs → to-api-format-WC7b9Mcv.mjs} +2 -2
  91. package/package.json +20 -5
@@ -1,2 +1,2 @@
1
- import { t as Autocomplete } from "../autocomplete-DM6JYV4W.mjs";
1
+ import { t as Autocomplete } from "../autocomplete-DZ_HSBak.mjs";
2
2
  export { Autocomplete };
@@ -1,5 +1,5 @@
1
1
  import { t as cn } from "./utils-Bu32wN-x.mjs";
2
- import { t as ResponsivePopover } from "./responsive-popover-DJZgXWIE.mjs";
2
+ import { t as ResponsivePopover } from "./responsive-popover-C_1nzIvm.mjs";
3
3
  import { t as LoaderOverlay } from "./loader-overlay-DD94azZX.mjs";
4
4
  import { n as OptionList, t as useOptionPicker } from "./use-option-picker-s2bUYwXC.mjs";
5
5
  import { ChevronDown } from "lucide-react";
@@ -1,7 +1,7 @@
1
1
  import { t as cn } from "../utils-Bu32wN-x.mjs";
2
2
  import { t as Button } from "../button-A1qTjZ8U.mjs";
3
3
  import { t as Input } from "../input-j4tbmYYz.mjs";
4
- import { t as ResponsivePopover } from "../responsive-popover-DJZgXWIE.mjs";
4
+ import { t as ResponsivePopover } from "../responsive-popover-C_1nzIvm.mjs";
5
5
  import { t as Tooltip } from "../tooltip-C_SL1imw.mjs";
6
6
  import { n as OptionList, t as useOptionPicker } from "../use-option-picker-s2bUYwXC.mjs";
7
7
  import { AlertCircle, Loader2, X } from "lucide-react";
@@ -1,5 +1,5 @@
1
- import { o as DateRangePicker } from "./picker-b5-x-EHs.mjs";
2
1
  import { t as useDeprecationWarning } from "./use-deprecation-warning-DXrGc0jX.mjs";
2
+ import { a as DateRangePicker } from "./picker-raVuDxsh.mjs";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/components/features/calendar-date-picker/calendar-date-picker.tsx
5
5
  /**
@@ -7,8 +7,9 @@ interface SheetOverlayProps extends React.ComponentProps<typeof SheetPrimitive.O
7
7
  declare function SheetOverlay({ className, ...props }: SheetOverlayProps): React.JSX.Element;
8
8
  interface SheetContentProps extends React.ComponentProps<typeof SheetPrimitive.Content> {
9
9
  side?: 'top' | 'right' | 'bottom' | 'left';
10
+ showCloseButton?: boolean;
10
11
  }
11
- declare function SheetContent({ className, children, side, ...props }: SheetContentProps): React.JSX.Element;
12
+ declare function SheetContent({ className, children, side, showCloseButton, ...props }: SheetContentProps): React.JSX.Element;
12
13
  interface SheetComponent extends React.FC<React.ComponentProps<typeof ShadcnSheet>> {
13
14
  Trigger: typeof SheetTrigger;
14
15
  Content: typeof SheetContent;
@@ -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';