@caffeinebounce/ui 0.62.2 → 0.63.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 (122) hide show
  1. package/README.md +1 -1
  2. package/dist/blog.js +8 -6
  3. package/dist/blog.mjs +3 -1
  4. package/dist/charts.d.cts +1 -1
  5. package/dist/charts.d.ts +1 -1
  6. package/dist/{chunk-6DVWMJ3H.mjs → chunk-2EFVMX6V.mjs} +4 -3
  7. package/dist/chunk-33JR5SYE.js +1 -0
  8. package/dist/{chunk-OZZWDIOY.js → chunk-375DECW4.js} +32 -31
  9. package/dist/chunk-3NDB4YPC.js +1 -0
  10. package/dist/{chunk-PZRI43EZ.js → chunk-46JYKBRX.js} +0 -43
  11. package/dist/chunk-5D55OVD5.js +75 -0
  12. package/dist/chunk-5RW4PYZ6.js +1 -0
  13. package/dist/chunk-5THF4YP6.mjs +1 -0
  14. package/dist/{chunk-JORVSG52.js → chunk-663CFAHS.js} +212 -269
  15. package/dist/chunk-6BUBNZPG.mjs +1 -0
  16. package/dist/chunk-6HKJDV43.mjs +48 -0
  17. package/dist/chunk-6NCRGHV3.mjs +64 -0
  18. package/dist/{chunk-OLAAXLXY.mjs → chunk-6QAKQG57.mjs} +5 -4
  19. package/dist/chunk-72JGQ7IJ.mjs +1 -0
  20. package/dist/{chunk-N6AFNFZR.mjs → chunk-7ERVZXIN.mjs} +215 -270
  21. package/dist/chunk-7IKHZKAC.js +1 -0
  22. package/dist/chunk-APFEP5B7.mjs +100 -0
  23. package/dist/chunk-C3OADNSG.js +348 -0
  24. package/dist/{chunk-RVEFPVZF.mjs → chunk-C57MX3BG.mjs} +1 -0
  25. package/dist/{chunk-CC4KUIKC.js → chunk-DH5Z3ETN.js} +67 -45
  26. package/dist/chunk-DYWZ23QT.mjs +90 -0
  27. package/dist/{chunk-KRRIRS6A.mjs → chunk-E67IR6HU.mjs} +31 -9
  28. package/dist/{chunk-D3QXPL47.mjs → chunk-EXQSWHLD.mjs} +7 -6
  29. package/dist/{chunk-ZOA7B32D.js → chunk-F35KL6TX.js} +10 -9
  30. package/dist/{chunk-YSLD2HLP.mjs → chunk-FFJC66KO.mjs} +2 -1
  31. package/dist/chunk-FRRS2YZH.mjs +1 -0
  32. package/dist/chunk-G5TQWWQA.mjs +1 -0
  33. package/dist/{chunk-MPZFPU4X.js → chunk-GMBLPQ3I.js} +4 -3
  34. package/dist/chunk-IJFPPLQW.js +50 -0
  35. package/dist/chunk-J6OLBSZR.js +1 -0
  36. package/dist/chunk-KGGQ5NZV.js +1 -0
  37. package/dist/chunk-KHCC5UKW.mjs +1 -0
  38. package/dist/{chunk-BMFQG6RA.mjs → chunk-KJIX6V32.mjs} +108 -1885
  39. package/dist/chunk-LABHD4PU.js +109 -0
  40. package/dist/chunk-LQCVRWVF.js +1 -0
  41. package/dist/{chunk-GAIQJCAZ.js → chunk-LT5VD4KR.js} +150 -1953
  42. package/dist/{chunk-7DHKQODW.mjs → chunk-LTLCIRZY.mjs} +257 -474
  43. package/dist/chunk-N5BHXWR3.mjs +34 -0
  44. package/dist/chunk-OCO3Z5YA.js +37 -0
  45. package/dist/chunk-OFQLWSUR.mjs +1 -0
  46. package/dist/chunk-OIJ7XMDV.mjs +71 -0
  47. package/dist/chunk-ORBH4IBC.mjs +316 -0
  48. package/dist/{chunk-C4UT5V3P.js → chunk-OWHI5VGJ.js} +1 -0
  49. package/dist/chunk-OWWOAYIY.js +2652 -0
  50. package/dist/chunk-PFHOXDSW.mjs +10 -0
  51. package/dist/chunk-Q52ZEL62.mjs +1 -0
  52. package/dist/chunk-QRS7DJGS.js +103 -0
  53. package/dist/chunk-R26Y7LGJ.js +1 -0
  54. package/dist/{chunk-BFWX5GJZ.mjs → chunk-R3X4B4JJ.mjs} +56 -8
  55. package/dist/chunk-RBUYW6QQ.js +1 -0
  56. package/dist/chunk-RM7ACPTM.mjs +2601 -0
  57. package/dist/chunk-RODSGPBB.mjs +75 -0
  58. package/dist/chunk-SORWLKOK.js +1 -0
  59. package/dist/{chunk-T6ZBA6VJ.js → chunk-UHAV34YX.js} +9 -8
  60. package/dist/{chunk-GUSTCU2W.mjs → chunk-ULANYJ7Y.mjs} +1 -59
  61. package/dist/chunk-ULDE7QSN.js +70 -0
  62. package/dist/chunk-UT36VNVZ.mjs +47 -0
  63. package/dist/chunk-UY3H4PKB.js +71 -0
  64. package/dist/{chunk-KB7UXIQZ.mjs → chunk-VIVWFQG5.mjs} +3 -1
  65. package/dist/{chunk-ESZ7CBA2.js → chunk-VKBJ3SGT.js} +7 -5
  66. package/dist/{chunk-UM7WMXIU.js → chunk-W3YOQ5ZD.js} +265 -505
  67. package/dist/chunk-WOITB4JL.js +1 -0
  68. package/dist/{chunk-E42B4GSB.js → chunk-XGJL6DLV.js} +58 -7
  69. package/dist/chunk-YKZEKJMZ.mjs +1 -0
  70. package/dist/chunk-YRIBFIQ5.js +116 -0
  71. package/dist/chunk-ZFLZA7UP.mjs +1 -0
  72. package/dist/chunk-ZKUIUE7W.mjs +1 -0
  73. package/dist/chunk-ZWWJ3RRA.js +15 -0
  74. package/dist/data-grid.d.cts +241 -0
  75. package/dist/data-grid.d.ts +241 -0
  76. package/dist/data-grid.js +6486 -0
  77. package/dist/data-grid.mjs +6459 -0
  78. package/dist/data-table-CDQBo-Ve.d.ts +818 -0
  79. package/dist/data-table-jLzt6plY.d.cts +818 -0
  80. package/dist/data-table.d.cts +8 -42
  81. package/dist/data-table.d.ts +8 -42
  82. package/dist/data-table.js +61 -187
  83. package/dist/data-table.mjs +11 -5
  84. package/dist/finance.d.cts +534 -0
  85. package/dist/finance.d.ts +534 -0
  86. package/dist/finance.js +188 -0
  87. package/dist/finance.mjs +15 -0
  88. package/dist/forms.js +9 -6
  89. package/dist/forms.mjs +7 -4
  90. package/dist/{hooks-B2jU1GVT.d.ts → hooks-A55E0fgf.d.ts} +3 -2
  91. package/dist/{hooks-8ORd7T1A.d.cts → hooks-Bys_AZPI.d.cts} +3 -2
  92. package/dist/hooks.d.cts +1 -1
  93. package/dist/hooks.d.ts +1 -1
  94. package/dist/hooks.js +26 -23
  95. package/dist/hooks.mjs +6 -3
  96. package/dist/index.d.cts +536 -665
  97. package/dist/index.d.ts +536 -665
  98. package/dist/index.js +3830 -3408
  99. package/dist/index.mjs +2068 -1767
  100. package/dist/layouts.js +26 -25
  101. package/dist/layouts.mjs +5 -4
  102. package/dist/marketing-3d.js +1 -0
  103. package/dist/marketing-3d.mjs +1 -0
  104. package/dist/marketing.js +75 -74
  105. package/dist/marketing.mjs +5 -4
  106. package/dist/media.js +1 -0
  107. package/dist/media.mjs +1 -0
  108. package/dist/navigation.js +29 -28
  109. package/dist/navigation.mjs +7 -6
  110. package/dist/primitives.d.cts +72 -109
  111. package/dist/primitives.d.ts +72 -109
  112. package/dist/primitives.js +78 -72
  113. package/dist/primitives.mjs +8 -6
  114. package/dist/settings.js +9 -9
  115. package/dist/settings.mjs +4 -4
  116. package/package.json +21 -4
  117. package/dist/UnifiedTableControls-CG299y9h.d.ts +0 -1233
  118. package/dist/UnifiedTableControls-CIjRpNhy.d.cts +0 -1233
  119. package/dist/chunk-GMBGWOCR.mjs +0 -48
  120. package/dist/chunk-HBLKVQIQ.mjs +0 -23
  121. package/dist/chunk-HMAMMC72.js +0 -26
  122. package/dist/chunk-MVYRNJA6.js +0 -74
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  'use strict';
2
3
 
3
4
  var chunkADIDI7AJ_js = require('./chunk-ADIDI7AJ.js');
@@ -1,8 +1,9 @@
1
+ "use client";
1
2
  'use strict';
2
3
 
3
4
  var chunkLQCVRWVF_js = require('./chunk-LQCVRWVF.js');
5
+ var chunkOCO3Z5YA_js = require('./chunk-OCO3Z5YA.js');
4
6
  var chunk7IKHZKAC_js = require('./chunk-7IKHZKAC.js');
5
- var chunkHMAMMC72_js = require('./chunk-HMAMMC72.js');
6
7
  var chunkJ6OLBSZR_js = require('./chunk-J6OLBSZR.js');
7
8
  var chunkDQWHYBV2_js = require('./chunk-DQWHYBV2.js');
8
9
  var chunkQ256HRYD_js = require('./chunk-Q256HRYD.js');
@@ -150,10 +151,10 @@ var SidebarProvider = React__namespace.forwardRef(
150
151
  ...props
151
152
  }, ref) => {
152
153
  const [machine, dispatch] = React__namespace.useReducer(sidebarReducer, {
153
- viewportWidth: typeof window === "undefined" ? 1024 : window.innerWidth,
154
+ viewportWidth: 1024,
154
155
  desktopPref: toDesktopPreference(defaultOpen),
155
156
  openMobile: false,
156
- hydrated: typeof window === "undefined"
157
+ hydrated: false
157
158
  });
158
159
  React__namespace.useLayoutEffect(() => {
159
160
  const syncViewport = () => {
@@ -781,14 +782,16 @@ var SidebarMenuSubButton = React__namespace.forwardRef(({ asChild = false, size
781
782
  SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
782
783
  function Avatar({
783
784
  className,
785
+ size = "default",
784
786
  ...props
785
787
  }) {
786
788
  return /* @__PURE__ */ jsxRuntime.jsx(
787
789
  AvatarPrimitive__namespace.Root,
788
790
  {
789
791
  "data-slot": "avatar",
792
+ "data-size": size,
790
793
  className: chunkADIDI7AJ_js.cn(
791
- "relative flex size-10 shrink-0 overflow-hidden rounded-full",
794
+ "group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6",
792
795
  className
793
796
  ),
794
797
  ...props
@@ -803,7 +806,7 @@ function AvatarImage({
803
806
  AvatarPrimitive__namespace.Image,
804
807
  {
805
808
  "data-slot": "avatar-image",
806
- className: chunkADIDI7AJ_js.cn("aspect-square size-full object-cover", className),
809
+ className: chunkADIDI7AJ_js.cn("aspect-square size-full", className),
807
810
  ...props
808
811
  }
809
812
  );
@@ -817,7 +820,52 @@ function AvatarFallback({
817
820
  {
818
821
  "data-slot": "avatar-fallback",
819
822
  className: chunkADIDI7AJ_js.cn(
820
- "bg-muted flex size-full items-center justify-center rounded-full",
823
+ "flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",
824
+ className
825
+ ),
826
+ ...props
827
+ }
828
+ );
829
+ }
830
+ function AvatarBadge({ className, ...props }) {
831
+ return /* @__PURE__ */ jsxRuntime.jsx(
832
+ "span",
833
+ {
834
+ "data-slot": "avatar-badge",
835
+ className: chunkADIDI7AJ_js.cn(
836
+ "absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none",
837
+ "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden",
838
+ "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2",
839
+ "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2",
840
+ className
841
+ ),
842
+ ...props
843
+ }
844
+ );
845
+ }
846
+ function AvatarGroup({ className, ...props }) {
847
+ return /* @__PURE__ */ jsxRuntime.jsx(
848
+ "div",
849
+ {
850
+ "data-slot": "avatar-group",
851
+ className: chunkADIDI7AJ_js.cn(
852
+ "group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background",
853
+ className
854
+ ),
855
+ ...props
856
+ }
857
+ );
858
+ }
859
+ function AvatarGroupCount({
860
+ className,
861
+ ...props
862
+ }) {
863
+ return /* @__PURE__ */ jsxRuntime.jsx(
864
+ "div",
865
+ {
866
+ "data-slot": "avatar-group-count",
867
+ className: chunkADIDI7AJ_js.cn(
868
+ "relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3",
821
869
  className
822
870
  ),
823
871
  ...props
@@ -863,7 +911,7 @@ function UserAvatarMenu({
863
911
  "div",
864
912
  {
865
913
  className: `inline-flex items-center justify-center rounded-md ${sizeClass} ${className}`,
866
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkHMAMMC72_js.Spinner, { size: "sm" })
914
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkOCO3Z5YA_js.SizedSpinner, { size: "sm" })
867
915
  }
868
916
  );
869
917
  }
@@ -961,7 +1009,10 @@ function UserAvatarMenu({
961
1009
  }
962
1010
 
963
1011
  exports.Avatar = Avatar;
1012
+ exports.AvatarBadge = AvatarBadge;
964
1013
  exports.AvatarFallback = AvatarFallback;
1014
+ exports.AvatarGroup = AvatarGroup;
1015
+ exports.AvatarGroupCount = AvatarGroupCount;
965
1016
  exports.AvatarImage = AvatarImage;
966
1017
  exports.Kbd = Kbd;
967
1018
  exports.KbdGroup = KbdGroup;
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { cn } from './chunk-IMKLN273.mjs';
2
3
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
3
4
  import { jsx } from 'react/jsx-runtime';
@@ -0,0 +1,116 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunkADIDI7AJ_js = require('./chunk-ADIDI7AJ.js');
5
+ var TabsPrimitive = require('@radix-ui/react-tabs');
6
+ var classVarianceAuthority = require('class-variance-authority');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
28
+
29
+ function Tabs({
30
+ className,
31
+ orientation = "horizontal",
32
+ ...props
33
+ }) {
34
+ return /* @__PURE__ */ jsxRuntime.jsx(
35
+ TabsPrimitive__namespace.Root,
36
+ {
37
+ "data-slot": "tabs",
38
+ "data-orientation": orientation,
39
+ orientation,
40
+ className: chunkADIDI7AJ_js.cn(
41
+ "group/tabs flex gap-2 data-[orientation=horizontal]:flex-col",
42
+ className
43
+ ),
44
+ ...props
45
+ }
46
+ );
47
+ }
48
+ var tabsListVariants = classVarianceAuthority.cva(
49
+ "group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-[orientation=horizontal]/tabs:h-9 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none",
50
+ {
51
+ variants: {
52
+ variant: {
53
+ default: "bg-muted",
54
+ line: "gap-1 bg-transparent"
55
+ }
56
+ },
57
+ defaultVariants: {
58
+ variant: "default"
59
+ }
60
+ }
61
+ );
62
+ function TabsList({
63
+ className,
64
+ // Local change over shadcn: consumers were built on the underline look, so
65
+ // "line" stays the default; pass variant="default" for the upstream pill.
66
+ variant = "line",
67
+ ...props
68
+ }) {
69
+ return /* @__PURE__ */ jsxRuntime.jsx(
70
+ TabsPrimitive__namespace.List,
71
+ {
72
+ "data-slot": "tabs-list",
73
+ "data-variant": variant,
74
+ className: chunkADIDI7AJ_js.cn(tabsListVariants({ variant }), className),
75
+ ...props
76
+ }
77
+ );
78
+ }
79
+ function TabsTrigger({
80
+ className,
81
+ ...props
82
+ }) {
83
+ return /* @__PURE__ */ jsxRuntime.jsx(
84
+ TabsPrimitive__namespace.Trigger,
85
+ {
86
+ "data-slot": "tabs-trigger",
87
+ className: chunkADIDI7AJ_js.cn(
88
+ "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
89
+ "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent",
90
+ "data-[state=active]:bg-background data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground",
91
+ "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100",
92
+ className
93
+ ),
94
+ ...props
95
+ }
96
+ );
97
+ }
98
+ function TabsContent({
99
+ className,
100
+ ...props
101
+ }) {
102
+ return /* @__PURE__ */ jsxRuntime.jsx(
103
+ TabsPrimitive__namespace.Content,
104
+ {
105
+ "data-slot": "tabs-content",
106
+ className: chunkADIDI7AJ_js.cn("flex-1 outline-none", className),
107
+ ...props
108
+ }
109
+ );
110
+ }
111
+
112
+ exports.Tabs = Tabs;
113
+ exports.TabsContent = TabsContent;
114
+ exports.TabsList = TabsList;
115
+ exports.TabsTrigger = TabsTrigger;
116
+ exports.tabsListVariants = tabsListVariants;
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { cx } from './chunk-T5R6HUDG.mjs';
2
3
  import { Button } from './chunk-VBD4Q5LL.mjs';
3
4
  import { Input } from './chunk-STEP6C4C.mjs';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { cn } from './chunk-IMKLN273.mjs';
2
3
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
3
4
  import { jsx } from 'react/jsx-runtime';
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ // src/blocks/table/addons/data-table-styles.ts
4
+ var dataTableTopperButtonProps = {
5
+ variant: "ghost-icon",
6
+ size: "icon-sm"
7
+ };
8
+ var dataTableTopperResponsiveClasses = "w-8 @min-[450px]:w-auto @min-[450px]:px-2";
9
+ var dataTableTopperOpenStateClasses = "data-[state=open]:text-foreground";
10
+ var dataTableTopperIconClasses = "text-icon hover:text-icon-hover [&_svg]:transition-transform [&_svg]:duration-200 hover:[&_svg]:scale-110";
11
+
12
+ exports.dataTableTopperButtonProps = dataTableTopperButtonProps;
13
+ exports.dataTableTopperIconClasses = dataTableTopperIconClasses;
14
+ exports.dataTableTopperOpenStateClasses = dataTableTopperOpenStateClasses;
15
+ exports.dataTableTopperResponsiveClasses = dataTableTopperResponsiveClasses;
@@ -0,0 +1,241 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React$1 from 'react';
3
+ import { RowData, Cell, TableMeta, TableOptions, ColumnDef, Column } from '@tanstack/react-table';
4
+ import * as _tanstack_virtual_core from '@tanstack/virtual-core';
5
+ import * as _tanstack_table_core from '@tanstack/table-core';
6
+
7
+ type Direction = "ltr" | "rtl";
8
+ type RowHeightValue = "short" | "medium" | "tall" | "extra-tall";
9
+ interface CellSelectOption {
10
+ label: string;
11
+ value: string;
12
+ icon?: React.ComponentType<React.ComponentProps<"svg">>;
13
+ count?: number;
14
+ }
15
+ type CellOpts = {
16
+ variant: "short-text";
17
+ } | {
18
+ variant: "long-text";
19
+ } | {
20
+ variant: "number";
21
+ min?: number;
22
+ max?: number;
23
+ step?: number;
24
+ } | {
25
+ variant: "select";
26
+ options: CellSelectOption[];
27
+ } | {
28
+ variant: "multi-select";
29
+ options: CellSelectOption[];
30
+ } | {
31
+ variant: "checkbox";
32
+ } | {
33
+ variant: "date";
34
+ } | {
35
+ variant: "url";
36
+ } | {
37
+ variant: "file";
38
+ maxFileSize?: number;
39
+ maxFiles?: number;
40
+ accept?: string;
41
+ multiple?: boolean;
42
+ };
43
+ interface CellUpdate {
44
+ rowIndex: number;
45
+ columnId: string;
46
+ value: unknown;
47
+ }
48
+ declare module "@tanstack/react-table" {
49
+ interface ColumnMeta<TData extends RowData, TValue> {
50
+ label?: string;
51
+ cell?: CellOpts;
52
+ }
53
+ interface TableMeta<TData extends RowData> {
54
+ dataGridRef?: React.RefObject<HTMLElement | null>;
55
+ cellMapRef?: React.RefObject<Map<string, HTMLDivElement>>;
56
+ focusedCell?: CellPosition | null;
57
+ editingCell?: CellPosition | null;
58
+ selectionState?: SelectionState;
59
+ searchOpen?: boolean;
60
+ getIsCellSelected?: (rowIndex: number, columnId: string) => boolean;
61
+ getIsSearchMatch?: (rowIndex: number, columnId: string) => boolean;
62
+ getIsActiveSearchMatch?: (rowIndex: number, columnId: string) => boolean;
63
+ getVisualRowIndex?: (rowId: string) => number | undefined;
64
+ scrollToCell?: (rowIndex: number, columnId: string, align?: "auto" | "start" | "center" | "end") => void;
65
+ rowHeight?: RowHeightValue;
66
+ onRowHeightChange?: (value: RowHeightValue) => void;
67
+ onRowSelect?: (rowId: string, checked: boolean, shiftKey: boolean) => void;
68
+ onDataUpdate?: (params: CellUpdate | Array<CellUpdate>) => void;
69
+ onRowsDelete?: (rowIndices: number[]) => void | Promise<void>;
70
+ onColumnClick?: (columnId: string) => void;
71
+ onCellClick?: (rowIndex: number, columnId: string, event?: React.MouseEvent) => void;
72
+ onCellDoubleClick?: (rowIndex: number, columnId: string) => void;
73
+ onCellMouseDown?: (rowIndex: number, columnId: string, event: React.MouseEvent) => void;
74
+ onCellMouseEnter?: (rowIndex: number, columnId: string) => void;
75
+ onCellMouseUp?: () => void;
76
+ onCellContextMenu?: (rowIndex: number, columnId: string, event: React.MouseEvent) => void;
77
+ onCellEditingStart?: (rowIndex: number, columnId: string) => void;
78
+ onCellEditingStop?: (opts?: {
79
+ direction?: NavigationDirection;
80
+ moveToNextRow?: boolean;
81
+ }) => void;
82
+ onCellsCopy?: () => void;
83
+ onCellsCut?: () => void;
84
+ onCellsPaste?: (expand?: boolean) => void;
85
+ onSelectionClear?: () => void;
86
+ onFilesUpload?: (params: {
87
+ files: File[];
88
+ rowIndex: number;
89
+ columnId: string;
90
+ }) => Promise<FileCellData[]>;
91
+ onFilesDelete?: (params: {
92
+ fileIds: string[];
93
+ rowIndex: number;
94
+ columnId: string;
95
+ }) => void | Promise<void>;
96
+ contextMenu?: ContextMenuState;
97
+ onContextMenuOpenChange?: (open: boolean) => void;
98
+ pasteDialog?: PasteDialogState;
99
+ onPasteDialogOpenChange?: (open: boolean) => void;
100
+ readOnly?: boolean;
101
+ }
102
+ }
103
+ interface CellPosition {
104
+ rowIndex: number;
105
+ columnId: string;
106
+ }
107
+ interface CellRange {
108
+ start: CellPosition;
109
+ end: CellPosition;
110
+ }
111
+ interface SelectionState {
112
+ selectedCells: Set<string>;
113
+ selectionRange: CellRange | null;
114
+ isSelecting: boolean;
115
+ }
116
+ interface ContextMenuState {
117
+ open: boolean;
118
+ x: number;
119
+ y: number;
120
+ }
121
+ interface PasteDialogState {
122
+ open: boolean;
123
+ rowsNeeded: number;
124
+ clipboardText: string;
125
+ }
126
+ type NavigationDirection = "up" | "down" | "left" | "right" | "home" | "end" | "ctrl+up" | "ctrl+down" | "ctrl+home" | "ctrl+end" | "pageup" | "pagedown" | "pageleft" | "pageright";
127
+ interface SearchState {
128
+ searchMatches: CellPosition[];
129
+ matchIndex: number;
130
+ searchOpen: boolean;
131
+ onSearchOpenChange: (open: boolean) => void;
132
+ searchQuery: string;
133
+ onSearchQueryChange: (query: string) => void;
134
+ onSearch: (query: string) => void;
135
+ onNavigateToNextMatch: () => void;
136
+ onNavigateToPrevMatch: () => void;
137
+ }
138
+ interface DataGridCellProps<TData> {
139
+ cell: Cell<TData, unknown>;
140
+ tableMeta: TableMeta<TData>;
141
+ rowIndex: number;
142
+ columnId: string;
143
+ rowHeight: RowHeightValue;
144
+ isEditing: boolean;
145
+ isFocused: boolean;
146
+ isSelected: boolean;
147
+ isSearchMatch: boolean;
148
+ isActiveSearchMatch: boolean;
149
+ readOnly: boolean;
150
+ }
151
+ interface FileCellData {
152
+ id: string;
153
+ name: string;
154
+ size: number;
155
+ type: string;
156
+ url?: string;
157
+ }
158
+ type TextFilterOperator = "contains" | "notContains" | "equals" | "notEquals" | "startsWith" | "endsWith" | "isEmpty" | "isNotEmpty";
159
+ type NumberFilterOperator = "equals" | "notEquals" | "lessThan" | "lessThanOrEqual" | "greaterThan" | "greaterThanOrEqual" | "isBetween" | "isEmpty" | "isNotEmpty";
160
+ type DateFilterOperator = "equals" | "notEquals" | "before" | "after" | "onOrBefore" | "onOrAfter" | "isBetween" | "isEmpty" | "isNotEmpty";
161
+ type SelectFilterOperator = "is" | "isNot" | "isAnyOf" | "isNoneOf" | "isEmpty" | "isNotEmpty";
162
+ type BooleanFilterOperator = "isTrue" | "isFalse";
163
+ type FilterOperator = TextFilterOperator | NumberFilterOperator | DateFilterOperator | SelectFilterOperator | BooleanFilterOperator;
164
+ interface FilterValue {
165
+ operator: FilterOperator;
166
+ value?: string | number | string[];
167
+ endValue?: string | number;
168
+ }
169
+
170
+ interface UseDataGridProps<TData> extends Omit<TableOptions<TData>, "pageCount" | "getCoreRowModel"> {
171
+ onDataChange?: (data: TData[]) => void;
172
+ onRowAdd?: (event?: React$1.MouseEvent<HTMLDivElement>) => Partial<CellPosition> | Promise<Partial<CellPosition> | null> | null;
173
+ onRowsAdd?: (count: number) => void | Promise<void>;
174
+ onRowsDelete?: (rows: TData[], rowIndices: number[]) => void | Promise<void>;
175
+ onPaste?: (updates: Array<CellUpdate>) => void | Promise<void>;
176
+ onFilesUpload?: (params: {
177
+ files: File[];
178
+ rowIndex: number;
179
+ columnId: string;
180
+ }) => Promise<FileCellData[]>;
181
+ onFilesDelete?: (params: {
182
+ fileIds: string[];
183
+ rowIndex: number;
184
+ columnId: string;
185
+ }) => void | Promise<void>;
186
+ rowHeight?: RowHeightValue;
187
+ onRowHeightChange?: (rowHeight: RowHeightValue) => void;
188
+ overscan?: number;
189
+ dir?: Direction;
190
+ autoFocus?: boolean | Partial<CellPosition>;
191
+ enableSingleCellSelection?: boolean;
192
+ enableColumnSelection?: boolean;
193
+ enableSearch?: boolean;
194
+ enablePaste?: boolean;
195
+ readOnly?: boolean;
196
+ }
197
+ declare function useDataGrid<TData>({ data, columns, rowHeight: rowHeightProp, overscan, dir: dirProp, initialState, ...props }: UseDataGridProps<TData>): {
198
+ dataGridRef: React$1.RefObject<HTMLDivElement | null>;
199
+ headerRef: React$1.RefObject<HTMLDivElement | null>;
200
+ rowMapRef: React$1.RefObject<Map<number, HTMLDivElement>>;
201
+ footerRef: React$1.RefObject<HTMLDivElement | null>;
202
+ dir: "ltr" | "rtl";
203
+ table: _tanstack_table_core.Table<TData>;
204
+ tableMeta: TableMeta<TData>;
205
+ virtualTotalSize: number;
206
+ virtualItems: _tanstack_virtual_core.VirtualItem[];
207
+ measureElement: (node: Element | null) => void;
208
+ columns: ColumnDef<TData, any>[];
209
+ columnSizeVars: {
210
+ [key: string]: number;
211
+ };
212
+ searchState: SearchState | undefined;
213
+ searchMatchesByRow: Map<number, Set<string>> | null;
214
+ activeSearchMatch: CellPosition | null;
215
+ cellSelectionMap: Map<number, Set<string>> | null;
216
+ focusedCell: CellPosition | null;
217
+ editingCell: CellPosition | null;
218
+ rowHeight: RowHeightValue;
219
+ contextMenu: ContextMenuState;
220
+ pasteDialog: PasteDialogState;
221
+ onRowAdd: ((event?: React$1.MouseEvent<HTMLDivElement>) => Promise<void>) | undefined;
222
+ adjustLayout: boolean;
223
+ };
224
+
225
+ interface DataGridProps<TData> extends Omit<ReturnType<typeof useDataGrid<TData>>, "dir">, Omit<React$1.ComponentProps<"div">, "contextMenu"> {
226
+ dir?: Direction;
227
+ height?: number;
228
+ stretchColumns?: boolean;
229
+ }
230
+ declare function DataGrid<TData>({ dataGridRef, headerRef, rowMapRef, footerRef, dir, table, tableMeta, virtualTotalSize, virtualItems, measureElement, columns, columnSizeVars, searchState, searchMatchesByRow, activeSearchMatch, cellSelectionMap, focusedCell, editingCell, rowHeight, contextMenu, pasteDialog, onRowAdd: onRowAddProp, height, stretchColumns, adjustLayout, className, ...props }: DataGridProps<TData>): react_jsx_runtime.JSX.Element;
231
+
232
+ declare function getCellKey(rowIndex: number, columnId: string): string;
233
+ declare function parseCellKey(cellKey: string): Required<CellPosition>;
234
+ declare function getRowHeightValue(rowHeight: RowHeightValue): number;
235
+ declare function getColumnPinningStyle<TData>(params: {
236
+ column: Column<TData>;
237
+ withBorder?: boolean;
238
+ dir?: Direction;
239
+ }): React$1.CSSProperties;
240
+
241
+ export { type BooleanFilterOperator, type CellOpts, type CellPosition, type CellRange, type CellSelectOption, type CellUpdate, type ContextMenuState, DataGrid, type DataGridCellProps, type DateFilterOperator, type Direction, type FileCellData, type FilterOperator, type FilterValue, type NavigationDirection, type NumberFilterOperator, type PasteDialogState, type RowHeightValue, type SearchState, type SelectFilterOperator, type SelectionState, type TextFilterOperator, type UseDataGridProps, getCellKey, getColumnPinningStyle as getGridColumnPinningStyle, getRowHeightValue, parseCellKey, useDataGrid };