@crispy-seed/data-table 0.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 (56) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +30 -0
  3. package/README.md +103 -0
  4. package/dist/DataTable-12s-8LMBtS2u.cjs +1532 -0
  5. package/dist/DataTable-12s-Bd20OuMs.js +1482 -0
  6. package/dist/DataTable-12s-Zml1x9Kr-12s-CTRzgvMT.cjs +161 -0
  7. package/dist/DataTable-12s-Zml1x9Kr-12s-Coi-3lUa.js +153 -0
  8. package/dist/Menu-12s-Db_zr1AP.cjs +104 -0
  9. package/dist/Menu-12s-Di5JADW4.js +78 -0
  10. package/dist/Select-12s-1Uh7XbkG.js +219 -0
  11. package/dist/Select-12s-D8DdKT-U.cjs +250 -0
  12. package/dist/body-cells-12s-BnOVUTKN.js +453 -0
  13. package/dist/body-cells-12s-BoOTcg-l.cjs +462 -0
  14. package/dist/column-calc-12s-C6IPSOaF.js +129 -0
  15. package/dist/column-calc-12s-CKuSpe-l.cjs +149 -0
  16. package/dist/column-layout-12s-CTu5yT_D.cjs +120 -0
  17. package/dist/column-layout-12s-s7wnxkMN.js +99 -0
  18. package/dist/column-menu-12s-BPE9N1gs.cjs +427 -0
  19. package/dist/column-menu-12s-mRBk-4oa.js +407 -0
  20. package/dist/data-table-recipe.css +442 -0
  21. package/dist/data-table-recipe.layered.css +505 -0
  22. package/dist/editors-12s-BO9Mp034.js +525 -0
  23. package/dist/editors-12s-DO8TZkYV.cjs +555 -0
  24. package/dist/index.cjs +14 -0
  25. package/dist/index.d.ts +323 -0
  26. package/dist/index.js +10 -0
  27. package/dist/resize-12s-jQY-PX67.cjs +58 -0
  28. package/dist/resize-12s-nsMvrmLt.js +58 -0
  29. package/dist/states-12s-CLO_uVue.cjs +125 -0
  30. package/dist/states-12s-DEFSxJCO.js +122 -0
  31. package/dist/styles.css +14660 -0
  32. package/dist/toolbar-12s-AVU-sbDW.js +69 -0
  33. package/dist/toolbar-12s-CaLgJrDo.cjs +71 -0
  34. package/dist/useDataTable-12s-BHiDUubw-12s-CBeCwTe7.js +61 -0
  35. package/dist/useDataTable-12s-BHiDUubw-12s-Dgvt7XDk.cjs +61 -0
  36. package/dist/useDataTableColumnCalc-12s-DTQQTtEJ-12s-CvD14JYo.cjs +207 -0
  37. package/dist/useDataTableColumnCalc-12s-DTQQTtEJ-12s-DsEse3uq.js +183 -0
  38. package/dist/useDataTableColumns-12s-Cn2ZAzFL-12s-CD6goR59.js +289 -0
  39. package/dist/useDataTableColumns-12s-Cn2ZAzFL-12s-CUk_CpYT.cjs +292 -0
  40. package/dist/useDataTableEdit-12s-9Wb_UCrN-12s-BoOHq3GB.js +98 -0
  41. package/dist/useDataTableEdit-12s-9Wb_UCrN-12s-De6YHBba.cjs +98 -0
  42. package/dist/useDataTableFilter-12s-ZzbmWMin-12s-CWyBeFna.js +74 -0
  43. package/dist/useDataTableFilter-12s-ZzbmWMin-12s-lpjzZY3_.cjs +74 -0
  44. package/dist/useDataTableInfiniteScroll-12s-8ZG31URd-12s-BexjP6iO.js +104 -0
  45. package/dist/useDataTableInfiniteScroll-12s-8ZG31URd-12s-Bt8gojr9.cjs +104 -0
  46. package/dist/useDataTableRow-12s-CPYaDa1p-12s-BmUSAnPe.js +30 -0
  47. package/dist/useDataTableRow-12s-CPYaDa1p-12s-D-DRjwAe.cjs +30 -0
  48. package/dist/useDataTableScroll-12s-BKDCr0en-12s-C7f2vHeG.js +61 -0
  49. package/dist/useDataTableScroll-12s-BKDCr0en-12s-CUvUYMtt.cjs +61 -0
  50. package/dist/useDataTableSearch-12s-Ck3iWcpX-12s-B-65V6gH.js +37 -0
  51. package/dist/useDataTableSearch-12s-Ck3iWcpX-12s-DhVfN2Hq.cjs +37 -0
  52. package/dist/useDataTableSelection-12s-BIDtiRQq-12s-IS__VAnU.cjs +71 -0
  53. package/dist/useDataTableSelection-12s-BIDtiRQq-12s-O6M_BhrH.js +71 -0
  54. package/dist/useDataTableSort-12s-DvJYtmeS-12s-C5VGnsq4.cjs +78 -0
  55. package/dist/useDataTableSort-12s-DvJYtmeS-12s-DABSNt6U.js +78 -0
  56. package/package.json +78 -0
@@ -0,0 +1,1532 @@
1
+ 'use client';
2
+ function __insertCSS(code) {
3
+ if (!code || typeof document == 'undefined') return
4
+ let head = document.head || document.getElementsByTagName('head')[0]
5
+ let style = document.createElement('style')
6
+ style.type = 'text/css'
7
+ head.appendChild(style)
8
+ ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))
9
+ }
10
+
11
+ var React = require('react');
12
+ var jsxRuntime = require('react/jsx-runtime');
13
+ var DataTable12sZml1x9Kr12s = require('./DataTable-12s-Zml1x9Kr-12s-CTRzgvMT.cjs');
14
+ var domUtils = require('@seed-design/dom-utils');
15
+ var reactPrimitive = require('@seed-design/react-primitive');
16
+ var checkbox = require('@seed-design/css/recipes/checkbox');
17
+ var checkmark = require('@seed-design/css/recipes/checkmark');
18
+ var reactCheckbox = require('@seed-design/react-checkbox');
19
+ var reactScaleFeedback = require('@seed-design/react-scale-feedback');
20
+ var checkboxGroup = require('@seed-design/css/recipes/checkbox-group');
21
+ var bodyCells12s = require('./body-cells-12s-BoOTcg-l.cjs');
22
+ var columnCalc12s = require('./column-calc-12s-CKuSpe-l.cjs');
23
+ var columnLayout12s = require('./column-layout-12s-CTu5yT_D.cjs');
24
+ var columnMenu12s = require('./column-menu-12s-BPE9N1gs.cjs');
25
+ var states12s = require('./states-12s-CLO_uVue.cjs');
26
+ var toolbar12s = require('./toolbar-12s-CaLgJrDo.cjs');
27
+
28
+ function _interopNamespace(e) {
29
+ if (e && e.__esModule) return e;
30
+ var n = Object.create(null);
31
+ if (e) {
32
+ Object.keys(e).forEach(function (k) {
33
+ if (k !== 'default') {
34
+ var d = Object.getOwnPropertyDescriptor(e, k);
35
+ Object.defineProperty(n, k, d.get ? d : {
36
+ enumerable: true,
37
+ get: function () { return e[k]; }
38
+ });
39
+ }
40
+ });
41
+ }
42
+ n.default = e;
43
+ return n;
44
+ }
45
+
46
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
47
+
48
+ // src/IconChevronDownLine.tsx
49
+ var Icon$a = ({ size = 24, ...props }, ref)=>/* @__PURE__ */ jsxRuntime.jsx("svg", {
50
+ viewBox: "0 0 24 24",
51
+ fill: "none",
52
+ xmlns: "http://www.w3.org/2000/svg",
53
+ "data-seed-icon": "true",
54
+ width: size,
55
+ height: size,
56
+ ref,
57
+ ...props,
58
+ children: /* @__PURE__ */ jsxRuntime.jsx("g", {
59
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", {
60
+ fillRule: "evenodd",
61
+ clipRule: "evenodd",
62
+ d: "M21.2612 7.27589C20.8613 6.89499 20.2283 6.9104 19.8474 7.31032L11.9996 15.55L4.15284 7.31037C3.77196 6.91043 3.13899 6.89497 2.73904 7.27584C2.3391 7.65671 2.32364 8.28969 2.70451 8.68963L11.2754 17.6896C11.4641 17.8878 11.7258 18 11.9995 18C12.2732 18 12.5349 17.8879 12.7236 17.6897L21.2956 8.68968C21.6765 8.28976 21.6611 7.65679 21.2612 7.27589Z",
63
+ fill: "currentColor"
64
+ })
65
+ })
66
+ });
67
+ var IconChevronDownLine = /*#__PURE__*/ React.forwardRef(Icon$a);
68
+ var IconChevronDownLine_default = IconChevronDownLine;
69
+
70
+ // src/IconChevronUpLine.tsx
71
+ var Icon$9 = ({ size = 24, ...props }, ref)=>/* @__PURE__ */ jsxRuntime.jsx("svg", {
72
+ viewBox: "0 0 24 24",
73
+ fill: "none",
74
+ xmlns: "http://www.w3.org/2000/svg",
75
+ "data-seed-icon": "true",
76
+ width: size,
77
+ height: size,
78
+ ref,
79
+ ...props,
80
+ children: /* @__PURE__ */ jsxRuntime.jsx("g", {
81
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", {
82
+ fillRule: "evenodd",
83
+ clipRule: "evenodd",
84
+ d: "M21.2612 16.7241C20.8613 17.105 20.2283 17.0896 19.8474 16.6897L11.9996 8.45L4.15284 16.6896C3.77196 17.0896 3.13899 17.105 2.73904 16.7242C2.3391 16.3433 2.32364 15.7103 2.70451 15.3104L11.2754 6.31037C11.4641 6.11218 11.7258 6.00001 11.9995 6C12.2732 5.99999 12.5349 6.11215 12.7236 6.31032L21.2956 15.3103C21.6765 15.7102 21.6611 16.3432 21.2612 16.7241Z",
85
+ fill: "currentColor"
86
+ })
87
+ })
88
+ });
89
+ var IconChevronUpLine = /*#__PURE__*/ React.forwardRef(Icon$9);
90
+ var IconChevronUpLine_default = IconChevronUpLine;
91
+
92
+ // src/IconDot3HorizontalLine.tsx
93
+ var Icon$8 = ({ size = 24, ...props }, ref)=>/* @__PURE__ */ jsxRuntime.jsx("svg", {
94
+ viewBox: "0 0 24 24",
95
+ fill: "none",
96
+ xmlns: "http://www.w3.org/2000/svg",
97
+ "data-seed-icon": "true",
98
+ width: size,
99
+ height: size,
100
+ ref,
101
+ ...props,
102
+ children: /* @__PURE__ */ jsxRuntime.jsx("g", {
103
+ children: /* @__PURE__ */ jsxRuntime.jsxs("g", {
104
+ children: [
105
+ /* @__PURE__ */ jsxRuntime.jsx("path", {
106
+ d: "M4.625 10.375C3.72754 10.375 3 11.1025 3 12C3 12.8975 3.72754 13.625 4.625 13.625C5.52246 13.625 6.25 12.8975 6.25 12C6.25 11.1025 5.52246 10.375 4.625 10.375Z",
107
+ fill: "currentColor"
108
+ }),
109
+ /* @__PURE__ */ jsxRuntime.jsx("path", {
110
+ d: "M12.075 10.375C11.1775 10.375 10.45 11.1025 10.45 12C10.45 12.8975 11.1775 13.625 12.075 13.625C12.9724 13.625 13.7 12.8975 13.7 12C13.7 11.1025 12.9724 10.375 12.075 10.375Z",
111
+ fill: "currentColor"
112
+ }),
113
+ /* @__PURE__ */ jsxRuntime.jsx("path", {
114
+ d: "M19.375 10.375C18.4775 10.375 17.75 11.1025 17.75 12C17.75 12.8975 18.4775 13.625 19.375 13.625C20.2725 13.625 21 12.8975 21 12C21 11.1025 20.2725 10.375 19.375 10.375Z",
115
+ fill: "currentColor"
116
+ })
117
+ ]
118
+ })
119
+ })
120
+ });
121
+ var IconDot3HorizontalLine = /*#__PURE__*/ React.forwardRef(Icon$8);
122
+ var IconDot3HorizontalLine_default = IconDot3HorizontalLine;
123
+
124
+ // src/IconMagnifyingglassLine.tsx
125
+ var Icon$7 = ({ size = 24, ...props }, ref)=>/* @__PURE__ */ jsxRuntime.jsx("svg", {
126
+ viewBox: "0 0 24 24",
127
+ fill: "none",
128
+ xmlns: "http://www.w3.org/2000/svg",
129
+ "data-seed-icon": "true",
130
+ width: size,
131
+ height: size,
132
+ ref,
133
+ ...props,
134
+ children: /* @__PURE__ */ jsxRuntime.jsx("g", {
135
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", {
136
+ fillRule: "evenodd",
137
+ clipRule: "evenodd",
138
+ d: "M11.3111 1.2002C6.00313 1.2002 1.69995 5.49902 1.69995 10.8048V10.8178C1.69995 16.1236 6.00313 20.4224 11.3111 20.4224C13.5994 20.4224 15.711 19.6233 17.3631 18.2785L21.493 22.4083C21.8835 22.7988 22.5167 22.7988 22.9072 22.4083C23.2977 22.0177 23.2977 21.3846 22.9072 20.9941L18.777 16.864C20.1196 15.2095 20.9222 13.0996 20.9222 10.8048C20.9222 5.49902 16.619 1.2002 11.3111 1.2002ZM3.69995 10.8048C3.69995 6.60502 7.10627 3.2002 11.3111 3.2002C15.5159 3.2002 18.9222 6.60502 18.9222 10.8048C18.9222 13.0794 17.9298 15.1209 16.3465 16.5182L16.3446 16.52C15.0067 17.707 13.2419 18.4224 11.3111 18.4224C7.10627 18.4224 3.69995 15.0176 3.69995 10.8178V10.8048Z",
139
+ fill: "currentColor"
140
+ })
141
+ })
142
+ });
143
+ var IconMagnifyingglassLine = /*#__PURE__*/ React.forwardRef(Icon$7);
144
+ var IconMagnifyingglassLine_default = IconMagnifyingglassLine;
145
+
146
+ // src/IconSlider2HorizontalLine.tsx
147
+ var Icon$6 = ({ size = 24, ...props }, ref)=>/* @__PURE__ */ jsxRuntime.jsx("svg", {
148
+ viewBox: "0 0 24 24",
149
+ fill: "none",
150
+ xmlns: "http://www.w3.org/2000/svg",
151
+ "data-seed-icon": "true",
152
+ width: size,
153
+ height: size,
154
+ ref,
155
+ ...props,
156
+ children: /* @__PURE__ */ jsxRuntime.jsx("g", {
157
+ children: /* @__PURE__ */ jsxRuntime.jsxs("g", {
158
+ children: [
159
+ /* @__PURE__ */ jsxRuntime.jsx("path", {
160
+ fillRule: "evenodd",
161
+ clipRule: "evenodd",
162
+ d: "M9.99331 7.24609H3C2.44772 7.24609 2 6.79838 2 6.24609C2 5.69381 2.44772 5.24609 3 5.24609H9.99331C10.443 3.38141 12.1222 1.99609 14.125 1.99609C16.1278 1.99609 17.807 3.38141 18.2567 5.24609H21C21.5523 5.24609 22 5.69381 22 6.24609C22 6.79838 21.5523 7.24609 21 7.24609H18.2567C17.807 9.11078 16.1278 10.4961 14.125 10.4961C12.1222 10.4961 10.443 9.11078 9.99331 7.24609ZM11.875 6.24609C11.875 5.00345 12.8824 3.99609 14.125 3.99609C15.3676 3.99609 16.375 5.00345 16.375 6.24609C16.375 7.48873 15.3676 8.49609 14.125 8.49609C12.8824 8.49609 11.875 7.48873 11.875 6.24609Z",
163
+ fill: "currentColor"
164
+ }),
165
+ /* @__PURE__ */ jsxRuntime.jsx("path", {
166
+ fillRule: "evenodd",
167
+ clipRule: "evenodd",
168
+ d: "M6.25 13.4956C3.90279 13.4956 2 15.3984 2 17.7456C2 20.0928 3.90279 21.9956 6.25 21.9956C8.25016 21.9956 9.92761 20.6139 10.3799 18.7529L20.9996 18.7456C21.5518 18.7452 21.9993 18.2972 21.9989 17.7449C21.9985 17.1926 21.5505 16.7452 20.9982 16.7456L10.3834 16.7529C9.93635 14.8845 8.25537 13.4956 6.25 13.4956ZM4 17.7456C4 16.503 5.00736 15.4956 6.25 15.4956C7.49264 15.4956 8.5 16.503 8.5 17.7456C8.5 18.9882 7.49264 19.9956 6.25 19.9956C5.00736 19.9956 4 18.9882 4 17.7456Z",
169
+ fill: "currentColor"
170
+ })
171
+ ]
172
+ })
173
+ })
174
+ });
175
+ var IconSlider2HorizontalLine = /*#__PURE__*/ React.forwardRef(Icon$6);
176
+ var IconSlider2HorizontalLine_default = IconSlider2HorizontalLine;
177
+
178
+ // src/IconPersonCircleLine.tsx
179
+ var Icon$5 = ({ size = 24, ...props }, ref)=>/* @__PURE__ */ jsxRuntime.jsx("svg", {
180
+ viewBox: "0 0 24 24",
181
+ fill: "none",
182
+ xmlns: "http://www.w3.org/2000/svg",
183
+ "data-seed-icon": "true",
184
+ width: size,
185
+ height: size,
186
+ ref,
187
+ ...props,
188
+ children: /* @__PURE__ */ jsxRuntime.jsx("g", {
189
+ children: /* @__PURE__ */ jsxRuntime.jsxs("g", {
190
+ children: [
191
+ /* @__PURE__ */ jsxRuntime.jsx("path", {
192
+ fillRule: "evenodd",
193
+ clipRule: "evenodd",
194
+ d: "M12 5.5C9.79172 5.5 8 7.29172 8 9.5C8 11.7083 9.79172 13.5 12 13.5C14.2083 13.5 16 11.7083 16 9.5C16 7.29172 14.2083 5.5 12 5.5ZM10 9.5C10 8.39628 10.8963 7.5 12 7.5C13.1037 7.5 14 8.39628 14 9.5C14 10.6037 13.1037 11.5 12 11.5C10.8963 11.5 10 10.6037 10 9.5Z",
195
+ fill: "currentColor"
196
+ }),
197
+ /* @__PURE__ */ jsxRuntime.jsx("path", {
198
+ fillRule: "evenodd",
199
+ clipRule: "evenodd",
200
+ d: "M1 12C1 5.92772 5.92772 1 12 1C18.0723 1 23 5.92772 23 12C23 18.0723 18.0723 23 12 23C5.92772 23 1 18.0723 1 12ZM12 3C7.03229 3 3 7.03229 3 12C3 14.3609 3.91073 16.5105 5.39977 18.1164C5.87422 17.4277 6.5536 16.8564 7.3236 16.4211C8.60413 15.6971 10.2434 15.2793 12.0002 15.2793C13.757 15.2793 15.3962 15.6971 16.6768 16.4211C17.4467 16.8564 18.126 17.4276 18.6004 18.1162C20.0894 16.5103 21 14.3608 21 12C21 7.03229 16.9677 3 12 3ZM12 21C10.1211 21 8.3761 20.4232 6.93241 19.4372C7.17777 18.9952 7.62665 18.5473 8.30791 18.1621C9.25286 17.6279 10.5454 17.2793 12.0002 17.2793C13.455 17.2793 14.7475 17.6279 15.6925 18.1621C16.3736 18.5472 16.8225 18.9951 17.0679 19.437C15.6241 20.4231 13.879 21 12 21Z",
201
+ fill: "currentColor"
202
+ })
203
+ ]
204
+ })
205
+ })
206
+ });
207
+ var IconPersonCircleLine = /*#__PURE__*/ React.forwardRef(Icon$5);
208
+ var IconPersonCircleLine_default = IconPersonCircleLine;
209
+
210
+ // src/IconPlusLine.tsx
211
+ var Icon$4 = ({ size = 24, ...props }, ref)=>/* @__PURE__ */ jsxRuntime.jsx("svg", {
212
+ viewBox: "0 0 24 24",
213
+ fill: "none",
214
+ xmlns: "http://www.w3.org/2000/svg",
215
+ "data-seed-icon": "true",
216
+ width: size,
217
+ height: size,
218
+ ref,
219
+ ...props,
220
+ children: /* @__PURE__ */ jsxRuntime.jsx("g", {
221
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", {
222
+ d: "M4 13H11V20C11 20.55 11.45 21 12 21C12.55 21 13 20.55 13 20V13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H13V4C13 3.45 12.55 3 12 3C11.45 3 11 3.45 11 4V11H4C3.45 11 3 11.45 3 12C3 12.55 3.45 13 4 13Z",
223
+ fill: "currentColor"
224
+ })
225
+ })
226
+ });
227
+ var IconPlusLine = /*#__PURE__*/ React.forwardRef(Icon$4);
228
+ var IconPlusLine_default = IconPlusLine;
229
+
230
+ // src/IconMinusLine.tsx
231
+ var Icon$3 = ({ size = 24, ...props }, ref)=>/* @__PURE__ */ jsxRuntime.jsx("svg", {
232
+ viewBox: "0 0 24 24",
233
+ fill: "none",
234
+ xmlns: "http://www.w3.org/2000/svg",
235
+ "data-seed-icon": "true",
236
+ width: size,
237
+ height: size,
238
+ ref,
239
+ ...props,
240
+ children: /* @__PURE__ */ jsxRuntime.jsx("g", {
241
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", {
242
+ d: "M4 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H4C3.45 11 3 11.45 3 12C3 12.55 3.45 13 4 13Z",
243
+ fill: "currentColor"
244
+ })
245
+ })
246
+ });
247
+ var IconMinusLine = /*#__PURE__*/ React.forwardRef(Icon$3);
248
+ var IconMinusLine_default = IconMinusLine;
249
+
250
+ // src/IconCheckmarkLine.tsx
251
+ var Icon$2 = ({ size = 24, ...props }, ref)=>/* @__PURE__ */ jsxRuntime.jsx("svg", {
252
+ viewBox: "0 0 24 24",
253
+ fill: "none",
254
+ xmlns: "http://www.w3.org/2000/svg",
255
+ "data-seed-icon": "true",
256
+ width: size,
257
+ height: size,
258
+ ref,
259
+ ...props,
260
+ children: /* @__PURE__ */ jsxRuntime.jsx("g", {
261
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", {
262
+ fillRule: "evenodd",
263
+ clipRule: "evenodd",
264
+ d: "M22.1186 3.71436C22.5526 4.05602 22.6273 4.68476 22.2857 5.11868L10.4749 20.1187C10.2958 20.3461 10.0269 20.4848 9.73779 20.4989C9.44865 20.5129 9.1676 20.401 8.96728 20.192L1.77809 12.692C1.39592 12.2933 1.40931 11.6603 1.80801 11.2781C2.20671 10.896 2.83973 10.9094 3.22191 11.3081L9.61511 17.9777L20.7143 3.88141C21.056 3.44749 21.6847 3.3727 22.1186 3.71436Z",
265
+ fill: "currentColor"
266
+ })
267
+ })
268
+ });
269
+ var IconCheckmarkLine = /*#__PURE__*/ React.forwardRef(Icon$2);
270
+ var IconCheckmarkLine_default = IconCheckmarkLine;
271
+
272
+ // src/IconChevronDownSmallLine.tsx
273
+ var Icon$1 = ({ size = 24, ...props }, ref)=>/* @__PURE__ */ jsxRuntime.jsx("svg", {
274
+ viewBox: "0 0 24 24",
275
+ fill: "none",
276
+ xmlns: "http://www.w3.org/2000/svg",
277
+ "data-seed-icon": "true",
278
+ width: size,
279
+ height: size,
280
+ ref,
281
+ ...props,
282
+ children: /* @__PURE__ */ jsxRuntime.jsx("g", {
283
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", {
284
+ fillRule: "evenodd",
285
+ clipRule: "evenodd",
286
+ d: "M6.29436 9.29143C6.68569 8.90171 7.31886 8.90303 7.70857 9.29436L11.9848 13.5884L16.297 9.3256C16.6897 8.93733 17.3229 8.94097 17.7112 9.33374C18.0994 9.7265 18.0958 10.3597 17.703 10.7479L12.6823 15.7112C12.2906 16.0984 11.6594 16.096 11.2707 15.7056L6.29143 10.7056C5.90171 10.3143 5.90303 9.68114 6.29436 9.29143Z",
287
+ fill: "currentColor"
288
+ })
289
+ })
290
+ });
291
+ var IconChevronDownSmallLine = /*#__PURE__*/ React.forwardRef(Icon$1);
292
+ var IconChevronDownSmallLine_default = IconChevronDownSmallLine;
293
+
294
+ // src/IconCheckmarkFatFill.tsx
295
+ var Icon = ({ size = 24, ...props }, ref)=>/* @__PURE__ */ jsxRuntime.jsx("svg", {
296
+ viewBox: "0 0 24 24",
297
+ fill: "none",
298
+ xmlns: "http://www.w3.org/2000/svg",
299
+ "data-seed-icon": "true",
300
+ width: size,
301
+ height: size,
302
+ ref,
303
+ ...props,
304
+ children: /* @__PURE__ */ jsxRuntime.jsx("g", {
305
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", {
306
+ d: "M22.5517 3.16422C21.8141 2.5834 20.7452 2.71054 20.1644 3.4482L9.56331 16.9118L3.72729 10.8235C3.07759 10.1457 2.00145 10.1229 1.32367 10.7726C0.645881 11.4223 0.623111 12.4985 1.27281 13.1763L8.462 20.6763C8.80254 21.0315 9.28032 21.2218 9.77186 21.1979C10.2634 21.174 10.7205 20.9382 11.0249 20.5516L22.8357 5.55155C23.4165 4.81389 23.2894 3.74505 22.5517 3.16422Z",
307
+ fill: "currentColor"
308
+ })
309
+ })
310
+ });
311
+ var IconCheckmarkFatFill = /*#__PURE__*/ React.forwardRef(Icon);
312
+ var IconCheckmarkFatFill_default = IconCheckmarkFatFill;
313
+
314
+ function r(e) {
315
+ var t, f, n = "";
316
+ if ("string" == typeof e || "number" == typeof e) n += e;
317
+ else if ("object" == typeof e) if (Array.isArray(e)) {
318
+ var o = e.length;
319
+ for(t = 0; t < o; t++)e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
320
+ } else for(f in e)e[f] && (n && (n += " "), n += f);
321
+ return n;
322
+ }
323
+ function clsx() {
324
+ for(var e, t, f = 0, n = "", o = arguments.length; f < o; f++)(e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
325
+ return n;
326
+ }
327
+
328
+ function splitMultipleVariantsProps(props, recipesMap) {
329
+ const multipleVariantsProps = {};
330
+ const extractedKeys = new Set();
331
+ for(const recipeKey in recipesMap){
332
+ const recipe = recipesMap[recipeKey];
333
+ const [variantProps] = recipe.splitVariantProps(props);
334
+ multipleVariantsProps[recipeKey] = variantProps;
335
+ for(const variantPropKey in variantProps){
336
+ extractedKeys.add(variantPropKey);
337
+ }
338
+ }
339
+ const remainingProps = {};
340
+ for(const propKey in props){
341
+ if (extractedKeys.has(propKey)) continue;
342
+ remainingProps[propKey] = props[propKey];
343
+ }
344
+ return [
345
+ multipleVariantsProps,
346
+ remainingProps
347
+ ];
348
+ }
349
+
350
+ /** Restores defaults overwritten by explicitly passed undefined values. */ function restoreDefaultProps(props, defaultProps) {
351
+ if (!defaultProps) return;
352
+ for (const key of Object.keys(defaultProps)){
353
+ if (props[key] === undefined) {
354
+ props[key] = defaultProps[key];
355
+ }
356
+ }
357
+ }
358
+
359
+ function createSlotRecipeContext(recipe) {
360
+ const ClassNamesContext = /*#__PURE__*/ React.createContext(null);
361
+ const PropsContext = /*#__PURE__*/ React.createContext(null);
362
+ const ClassNamesProvider = ({ children, value })=>{
363
+ return /*#__PURE__*/ jsxRuntime.jsx(ClassNamesContext.Provider, {
364
+ value: value,
365
+ children: children
366
+ });
367
+ };
368
+ const PropsProvider = ({ children, value })=>{
369
+ return /*#__PURE__*/ jsxRuntime.jsx(PropsContext.Provider, {
370
+ value: value,
371
+ children: children
372
+ });
373
+ };
374
+ function useClassNames() {
375
+ const context = React.useContext(ClassNamesContext);
376
+ if (context === null) {
377
+ throw new Error("useClassNames must be used within a ClassNamesProvider. Did you forget to wrap your component in a ClassNamesProvider?");
378
+ }
379
+ return context;
380
+ }
381
+ function useProps() {
382
+ return React.useContext(PropsContext);
383
+ }
384
+ const withRootProvider = (Component, options)=>{
385
+ const { defaultProps } = options ?? {};
386
+ const StyledComponent = (innerProps)=>{
387
+ const props = {
388
+ ...defaultProps ?? {},
389
+ ...useProps(),
390
+ ...innerProps
391
+ };
392
+ restoreDefaultProps(props, defaultProps);
393
+ const [variantProps, otherProps] = recipe.splitVariantProps(props);
394
+ const classNames = recipe(variantProps); // TODO: should we memoize this?
395
+ return /*#__PURE__*/ jsxRuntime.jsx(ClassNamesProvider, {
396
+ value: classNames,
397
+ children: /*#__PURE__*/ jsxRuntime.jsx(Component, {
398
+ ...otherProps
399
+ })
400
+ });
401
+ };
402
+ // @ts-ignore
403
+ StyledComponent.displayName = Component.displayName || Component.name;
404
+ return StyledComponent;
405
+ };
406
+ const withProvider = (Component, slot, options)=>{
407
+ const { defaultProps } = options ?? {};
408
+ const StyledComponent = /*#__PURE__*/ React.forwardRef((innerProps, ref)=>{
409
+ const props = {
410
+ ...defaultProps ?? {},
411
+ ...useProps(),
412
+ ...innerProps
413
+ };
414
+ restoreDefaultProps(props, defaultProps);
415
+ const [variantProps, otherProps] = recipe.splitVariantProps(props);
416
+ const classNames = recipe(variantProps); // TODO: should we memoize this?
417
+ const className = classNames[slot];
418
+ return /*#__PURE__*/ jsxRuntime.jsx(ClassNamesProvider, {
419
+ value: classNames,
420
+ children: /*#__PURE__*/ jsxRuntime.jsx(Component, {
421
+ ref: ref,
422
+ ...otherProps,
423
+ className: clsx(className, props.className)
424
+ })
425
+ });
426
+ });
427
+ // @ts-ignore
428
+ StyledComponent.displayName = Component.displayName || Component.name;
429
+ return StyledComponent;
430
+ };
431
+ const withContext = (Component, slot)=>{
432
+ const StyledComponent = /*#__PURE__*/ React.forwardRef((props, ref)=>{
433
+ const classNames = useClassNames();
434
+ const className = classNames?.[slot];
435
+ return /*#__PURE__*/ jsxRuntime.jsx(Component, {
436
+ ref: ref,
437
+ ...props,
438
+ className: clsx(className, props.className)
439
+ });
440
+ });
441
+ // @ts-ignore
442
+ StyledComponent.displayName = Component.displayName || Component.name;
443
+ return StyledComponent;
444
+ };
445
+ return {
446
+ ClassNamesProvider,
447
+ PropsProvider,
448
+ useClassNames,
449
+ useProps,
450
+ withRootProvider,
451
+ withProvider,
452
+ withContext
453
+ };
454
+ }
455
+
456
+ function createWithStateProps(useContexts) {
457
+ return function withStateProps(Component) {
458
+ const Node = /*#__PURE__*/ React.forwardRef((props, ref)=>{
459
+ const stateProps = {};
460
+ for (const contextConfig of useContexts){
461
+ if (typeof contextConfig === "function") {
462
+ Object.assign(stateProps, contextConfig({
463
+ strict: true
464
+ })?.stateProps);
465
+ } else {
466
+ const { useContext, strict = false } = contextConfig;
467
+ Object.assign(stateProps, useContext({
468
+ strict
469
+ })?.stateProps);
470
+ }
471
+ }
472
+ // @ts-ignore
473
+ return /*#__PURE__*/ jsxRuntime.jsx(Component, {
474
+ ref: ref,
475
+ ...stateProps,
476
+ ...props
477
+ });
478
+ });
479
+ Node.displayName = Component.displayName || Component.name;
480
+ return Node;
481
+ };
482
+ }
483
+
484
+ var __defProp$1 = Object.defineProperty;
485
+ var __name$1 = (target, value)=>__defProp$1(target, "name", {
486
+ value,
487
+ configurable: true
488
+ });
489
+ function setRef(ref, value) {
490
+ if (typeof ref === "function") {
491
+ return ref(value);
492
+ } else if (ref !== null && ref !== void 0) {
493
+ ref.current = value;
494
+ }
495
+ }
496
+ __name$1(setRef, "setRef");
497
+ function composeRefs(...refs) {
498
+ return (node)=>{
499
+ let hasCleanup = false;
500
+ const cleanups = refs.map((ref)=>{
501
+ const cleanup = setRef(ref, node);
502
+ if (!hasCleanup && typeof cleanup == "function") {
503
+ hasCleanup = true;
504
+ }
505
+ return cleanup;
506
+ });
507
+ if (hasCleanup) {
508
+ return ()=>{
509
+ for(let i = 0; i < cleanups.length; i++){
510
+ const cleanup = cleanups[i];
511
+ if (typeof cleanup == "function") {
512
+ cleanup();
513
+ } else {
514
+ setRef(refs[i], null);
515
+ }
516
+ }
517
+ };
518
+ }
519
+ };
520
+ }
521
+ __name$1(composeRefs, "composeRefs");
522
+ function useComposedRefs(...refs) {
523
+ return React__namespace.useCallback(composeRefs(...refs), refs);
524
+ }
525
+ __name$1(useComposedRefs, "useComposedRefs");
526
+
527
+ function withScaleFeedback(Component) {
528
+ const Pressable = /*#__PURE__*/ React__namespace.forwardRef((props, ref)=>{
529
+ const { scaleFeedbackRef, scaleFeedbackClassName } = reactScaleFeedback.useScaleFeedback();
530
+ const composedRef = useComposedRefs(scaleFeedbackRef, ref);
531
+ return /*#__PURE__*/ jsxRuntime.jsx(Component, {
532
+ ...props,
533
+ ref: composedRef,
534
+ className: clsx(scaleFeedbackClassName, props.className)
535
+ });
536
+ });
537
+ Pressable.displayName = Component.displayName;
538
+ return Pressable;
539
+ }
540
+
541
+ var __defProp = Object.defineProperty;
542
+ var __name = (target, value)=>__defProp(target, "name", {
543
+ value,
544
+ configurable: true
545
+ });
546
+ // @__NO_SIDE_EFFECTS__
547
+ function createSlot(ownerName) {
548
+ const Slot2 = /*#__PURE__*/ React__namespace.forwardRef((props, forwardedRef)=>{
549
+ let { children, ...slotProps } = props;
550
+ let slottableElement = null;
551
+ let hasSlottable = false;
552
+ const newChildren = [];
553
+ if (isLazyComponent(children) && typeof use === "function") {
554
+ children = use(children._payload);
555
+ }
556
+ React__namespace.Children.forEach(children, (maybeSlottable)=>{
557
+ if (isSlottable(maybeSlottable)) {
558
+ hasSlottable = true;
559
+ const slottable = maybeSlottable;
560
+ let child = "child" in slottable.props ? slottable.props.child : slottable.props.children;
561
+ if (isLazyComponent(child) && typeof use === "function") {
562
+ child = use(child._payload);
563
+ }
564
+ slottableElement = getSlottableElementFromSlottable(slottable, child);
565
+ newChildren.push(slottableElement?.props?.children);
566
+ } else {
567
+ newChildren.push(maybeSlottable);
568
+ }
569
+ });
570
+ if (slottableElement) {
571
+ slottableElement = /*#__PURE__*/ React__namespace.cloneElement(slottableElement, void 0, newChildren);
572
+ } else if (// A `Slottable` was found but it didn't resolve to a single element (e.g.
573
+ // it wrapped multiple elements, text, or a render-prop `child` that
574
+ // wasn't an element). Don't fall back to treating the `Slottable` wrapper
575
+ // itself as the slot target — throw a descriptive error below instead.
576
+ !hasSlottable && React__namespace.Children.count(children) === 1 && /*#__PURE__*/ React__namespace.isValidElement(children)) {
577
+ slottableElement = children;
578
+ }
579
+ const slottableElementRef = slottableElement ? getElementRef(slottableElement) : void 0;
580
+ const composedRef = useComposedRefs(forwardedRef, slottableElementRef);
581
+ if (!slottableElement) {
582
+ if (children || children === 0) {
583
+ throw new Error(hasSlottable ? createSlottableError(ownerName) : createSlotError(ownerName));
584
+ }
585
+ return children;
586
+ }
587
+ const mergedProps = mergeProps(slotProps, slottableElement.props ?? {});
588
+ if (slottableElement.type !== React__namespace.Fragment) {
589
+ mergedProps.ref = forwardedRef ? composedRef : slottableElementRef;
590
+ }
591
+ return /*#__PURE__*/ React__namespace.cloneElement(slottableElement, mergedProps);
592
+ });
593
+ Slot2.displayName = `${ownerName}.Slot`;
594
+ return Slot2;
595
+ }
596
+ __name(createSlot, "createSlot");
597
+ var Slot = /* @__PURE__ */ createSlot("Slot");
598
+ var SLOTTABLE_IDENTIFIER = Symbol.for("radix.slottable");
599
+ // @__NO_SIDE_EFFECTS__
600
+ function createSlottable(ownerName) {
601
+ const Slottable2 = /* @__PURE__ */ __name((props)=>"child" in props ? props.children(props.child) : props.children, "Slottable");
602
+ Slottable2.displayName = `${ownerName}.Slottable`;
603
+ Slottable2.__radixId = SLOTTABLE_IDENTIFIER;
604
+ return Slottable2;
605
+ }
606
+ __name(createSlottable, "createSlottable");
607
+ var getSlottableElementFromSlottable = /* @__PURE__ */ __name((slottable, child)=>{
608
+ if ("child" in slottable.props) {
609
+ const child2 = slottable.props.child;
610
+ if (!/*#__PURE__*/ React__namespace.isValidElement(child2)) return null;
611
+ return /*#__PURE__*/ React__namespace.cloneElement(child2, void 0, slottable.props.children(child2.props.children));
612
+ }
613
+ return /*#__PURE__*/ React__namespace.isValidElement(child) ? child : null;
614
+ }, "getSlottableElementFromSlottable");
615
+ function mergeProps(slotProps, childProps) {
616
+ const overrideProps = {
617
+ ...childProps
618
+ };
619
+ for(const propName in childProps){
620
+ const slotPropValue = slotProps[propName];
621
+ const childPropValue = childProps[propName];
622
+ const isHandler = /^on[A-Z]/.test(propName);
623
+ if (isHandler) {
624
+ if (slotPropValue && childPropValue) {
625
+ overrideProps[propName] = (...args)=>{
626
+ const result = childPropValue(...args);
627
+ slotPropValue(...args);
628
+ return result;
629
+ };
630
+ } else if (slotPropValue) {
631
+ overrideProps[propName] = slotPropValue;
632
+ }
633
+ } else if (propName === "style") {
634
+ overrideProps[propName] = {
635
+ ...slotPropValue,
636
+ ...childPropValue
637
+ };
638
+ } else if (propName === "className") {
639
+ overrideProps[propName] = [
640
+ slotPropValue,
641
+ childPropValue
642
+ ].filter(Boolean).join(" ");
643
+ }
644
+ }
645
+ return {
646
+ ...slotProps,
647
+ ...overrideProps
648
+ };
649
+ }
650
+ __name(mergeProps, "mergeProps");
651
+ function getElementRef(element) {
652
+ let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
653
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
654
+ if (mayWarn) {
655
+ return element.ref;
656
+ }
657
+ getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
658
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
659
+ if (mayWarn) {
660
+ return element.props.ref;
661
+ }
662
+ return element.props.ref || element.ref;
663
+ }
664
+ __name(getElementRef, "getElementRef");
665
+ function isSlottable(child) {
666
+ return /*#__PURE__*/ React__namespace.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
667
+ }
668
+ __name(isSlottable, "isSlottable");
669
+ var REACT_LAZY_TYPE = Symbol.for("react.lazy");
670
+ function isLazyComponent(element) {
671
+ return element != null && typeof element === "object" && "$$typeof" in element && element.$$typeof === REACT_LAZY_TYPE && "_payload" in element && isPromiseLike(element._payload);
672
+ }
673
+ __name(isLazyComponent, "isLazyComponent");
674
+ function isPromiseLike(value) {
675
+ return typeof value === "object" && value !== null && "then" in value;
676
+ }
677
+ __name(isPromiseLike, "isPromiseLike");
678
+ var createSlotError = /* @__PURE__ */ __name((ownerName)=>{
679
+ return `${ownerName} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`;
680
+ }, "createSlotError");
681
+ var createSlottableError = /* @__PURE__ */ __name((ownerName)=>{
682
+ return `${ownerName} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`;
683
+ }, "createSlottableError");
684
+ var use = React__namespace[" use ".trim().toString()];
685
+
686
+ const InternalIcon = /*#__PURE__*/ React.forwardRef(({ svg, ...otherProps }, ref)=>{
687
+ return /*#__PURE__*/ jsxRuntime.jsx(Slot, {
688
+ ref: ref,
689
+ "aria-hidden": true,
690
+ ...otherProps,
691
+ children: svg
692
+ });
693
+ });
694
+
695
+ function createRecipeContext(recipe) {
696
+ const PropsContext = /*#__PURE__*/ React.createContext(null);
697
+ const PropsProvider = ({ children, value })=>{
698
+ return /*#__PURE__*/ jsxRuntime.jsx(PropsContext.Provider, {
699
+ value: value,
700
+ children: children
701
+ });
702
+ };
703
+ function useProps() {
704
+ return React.useContext(PropsContext);
705
+ }
706
+ const withContext = (Component, options)=>{
707
+ const { defaultProps } = options ?? {};
708
+ const StyledComponent = /*#__PURE__*/ React.forwardRef((innerProps, ref)=>{
709
+ const props = {
710
+ ...defaultProps ?? {},
711
+ ...useProps(),
712
+ ...innerProps
713
+ };
714
+ restoreDefaultProps(props, defaultProps);
715
+ const [variantProps, otherProps] = recipe.splitVariantProps(props);
716
+ const className = recipe(variantProps); // TODO: should we memoize this?
717
+ return /*#__PURE__*/ jsxRuntime.jsx(Component, {
718
+ ref: ref,
719
+ ...otherProps,
720
+ className: clsx(className, props.className)
721
+ });
722
+ });
723
+ StyledComponent.displayName = Component.displayName || Component.name;
724
+ return StyledComponent;
725
+ };
726
+ function withPropsProvider() {
727
+ return PropsProvider;
728
+ }
729
+ return {
730
+ PropsProvider,
731
+ useProps,
732
+ withContext,
733
+ withPropsProvider
734
+ };
735
+ }
736
+
737
+ const { withContext: withGroupContext } = createRecipeContext(checkboxGroup.checkboxGroup);
738
+ const { ClassNamesProvider: ClassNamesProvider$1, withContext: withContext$1 } = createSlotRecipeContext(checkbox.checkbox);
739
+ const { withProvider: withCheckmarkProvider, useClassNames: useCheckmarkClassNames, PropsProvider: CheckmarkPropsProvider } = createSlotRecipeContext(checkmark.checkmark);
740
+ const withStateProps = createWithStateProps([
741
+ reactCheckbox.useCheckboxContext
742
+ ]);
743
+ withGroupContext(reactPrimitive.Primitive.div);
744
+ const CheckboxRoot = Object.assign(/*#__PURE__*/ React.forwardRef(({ className, ...props }, ref)=>{
745
+ const [{ checkbox: checkboxVariantProps, checkmark: checkmarkVariantProps }, otherProps] = splitMultipleVariantsProps(props, {
746
+ checkbox: checkbox.checkbox,
747
+ checkmark: checkmark.checkmark
748
+ });
749
+ const classNames = checkbox.checkbox(checkboxVariantProps);
750
+ return /*#__PURE__*/ jsxRuntime.jsx(CheckmarkPropsProvider, {
751
+ value: checkmarkVariantProps,
752
+ children: /*#__PURE__*/ jsxRuntime.jsx(ClassNamesProvider$1, {
753
+ value: classNames,
754
+ children: /*#__PURE__*/ jsxRuntime.jsx(reactCheckbox.Checkbox.Root, {
755
+ ref: ref,
756
+ className: clsx(classNames.root, className),
757
+ ...otherProps
758
+ })
759
+ })
760
+ });
761
+ }), {
762
+ Primitive: reactCheckbox.Checkbox.Root
763
+ });
764
+ const CheckboxControl = withScaleFeedback(withCheckmarkProvider(reactCheckbox.Checkbox.Control, "root"));
765
+ const CheckboxIndicator = /*#__PURE__*/ React.forwardRef(({ unchecked: uncheckedSvg, checked: checkedSvg, indeterminate: indeterminateSvg, ...otherProps }, ref)=>{
766
+ const { stateProps, checked, indeterminate } = reactCheckbox.useCheckboxContext();
767
+ const classNames = useCheckmarkClassNames();
768
+ const mergedProps = domUtils.mergeProps(stateProps, {
769
+ className: classNames.icon
770
+ }, otherProps);
771
+ if (indeterminate && !indeterminateSvg) {
772
+ console.warn("CheckboxIndicator: the `indeterminate` prop must be provided when the checkbox is in an indeterminate state.");
773
+ }
774
+ if (indeterminate) return /*#__PURE__*/ jsxRuntime.jsx(InternalIcon, {
775
+ ref: ref,
776
+ svg: indeterminateSvg,
777
+ ...mergedProps
778
+ });
779
+ if (checked) return /*#__PURE__*/ jsxRuntime.jsx(InternalIcon, {
780
+ ref: ref,
781
+ svg: checkedSvg,
782
+ ...mergedProps
783
+ });
784
+ if (uncheckedSvg) return /*#__PURE__*/ jsxRuntime.jsx(InternalIcon, {
785
+ ref: ref,
786
+ svg: uncheckedSvg,
787
+ ...mergedProps
788
+ });
789
+ return null;
790
+ });
791
+ CheckboxIndicator.displayName = "CheckboxIndicator";
792
+ const CheckboxLabel = withContext$1(withStateProps(reactPrimitive.Primitive.span), "label");
793
+ const CheckboxHiddenInput = reactCheckbox.Checkbox.HiddenInput;
794
+
795
+ // Row-narrowing for the toolbar's search box and each column's filter picker -- split
796
+ // out of DataTable.tsx the way cells.tsx splits out cell-type rendering: both are a
797
+ // self-contained, independently testable concern DataTable.tsx just calls, rather than
798
+ // inline `.filter()`/`.sort()` calls piling up in the same component that also owns
799
+ // markup.
800
+ /**
801
+ * A column's `value(row)` if it supplies one, else the raw field at `column.key` --
802
+ * the single accessor sort/search/filter/export all read through
803
+ * (DATATABLE-ATTIO-SPEC.md's Column API), so a consumer only teaches the table how to
804
+ * read a value ONCE rather than once per feature.
805
+ */ function getColumnValue(column, row) {
806
+ return column.value ? column.value(row) : row[column.key];
807
+ }
808
+ /**
809
+ * Case-insensitive substring match against a row's stringified value -- crisp's own
810
+ * `applyFilters` "contains" semantics (`tabletoolbar.tsx`), reused here for the
811
+ * toolbar's single free-text query rather than a per-column condition. `null`/
812
+ * `undefined` never match a non-empty query -- there is no text to search.
813
+ */ function matchesSearch(value, query) {
814
+ if (!query) return true;
815
+ if (value == null) return false;
816
+ return String(value).toLowerCase().includes(query.toLowerCase());
817
+ }
818
+ /**
819
+ * A column's own filter predicate -- "is"/"is not" against a SET of checked values.
820
+ * One checked value reads as "is X", several as crisp's "is any of X, Y": the exact
821
+ * same predicate, just more values in the set (crisp's own `applyFilters`,
822
+ * `tabletoolbar.tsx`: `isanyof` is membership-in-`values`, `is`/`isnot` is equality --
823
+ * both compare the stringified value, case-insensitively, never a substring). An empty
824
+ * `values` (the picker is open, nothing checked yet) matches every row -- crisp's own
825
+ * `applyFilters` drops an operator with nothing to compare against from its "active"
826
+ * set the same way, rather than treating "nothing checked" as "match nothing".
827
+ */ function matchesFilter(value, filter) {
828
+ if (filter.values.length === 0) return true;
829
+ const text = value == null ? "" : String(value).toLowerCase();
830
+ const isIncluded = filter.values.some((candidate)=>candidate.toLowerCase() === text);
831
+ return filter.mode === "isnot" ? !isIncluded : isIncluded;
832
+ }
833
+ /**
834
+ * The toolbar's search query (an OR across `searchable` columns, matching GRC's own
835
+ * `useFilteredRows`) THEN every column's own filter (an AND across active filters,
836
+ * matching crisp's `applyFilters`) -- in that order, since a filter chip narrows what
837
+ * the search box already found, not the other way round. A column with no active
838
+ * filter (absent from `filters`, or present with an empty `values`) is skipped
839
+ * entirely rather than treated as "filter out everything".
840
+ */ function getVisibleRows(data, columns, query, filters) {
841
+ const searchableColumns = columns.filter((column)=>column.searchable);
842
+ const activeFilters = Object.entries(filters).filter(([, filter])=>filter.values.length > 0);
843
+ if (!query && activeFilters.length === 0) return data;
844
+ return data.filter((row)=>{
845
+ if (query) {
846
+ const matchesQuery = searchableColumns.some((column)=>matchesSearch(getColumnValue(column, row), query));
847
+ if (!matchesQuery) return false;
848
+ }
849
+ return activeFilters.every(([columnKey, filter])=>{
850
+ const column = columns.find((candidate)=>candidate.key === columnKey);
851
+ if (!column) return true;
852
+ return matchesFilter(getColumnValue(column, row), filter);
853
+ });
854
+ });
855
+ }
856
+
857
+ __insertCSS(".seed-data-table__root{box-sizing:border-box;display:flex;flex-direction:column;width:100%;border-width:1px;border-style:solid;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif}.seed-data-table__table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.seed-data-table__headerCell{box-sizing:border-box;position:sticky;top:0;z-index:2;vertical-align:middle;text-align:start;padding:0;height:var(--seed-dimension-x10);background-color:var(--seed-color-bg-layer-default);border-top:1px solid var(--seed-color-stroke-neutral-muted);border-bottom:1px solid var(--seed-color-stroke-neutral-muted);border-inline-end:1px solid var(--seed-color-stroke-neutral-muted);border-inline-start:none;color:var(--seed-color-fg-neutral);font-size:var(--seed-font-size-t4);line-height:var(--seed-line-height-t4);font-weight:var(--seed-font-weight-medium);letter-spacing:-.14px}.seed-data-table__headerCell:last-child{border-inline-end:none}.seed-data-table__headerCell[data-sortable]{cursor:pointer;user-select:none}.seed-data-table__headerCell [data-chevron]{opacity:0;transition:opacity .12s}.seed-data-table__headerCell[data-sortable]:hover [data-chevron]{opacity:.6}.seed-data-table__headerCell[data-sorted] [data-chevron]{opacity:1;color:var(--seed-color-fg-neutral)}.seed-data-table__headerCell:hover [data-column-menu]{opacity:1}.seed-data-table__headerCell [data-column-menu]:focus-visible,.seed-data-table__headerCell [data-column-menu][data-open]{opacity:1}.seed-data-table__headerCell[data-dragging]{opacity:.5}.seed-data-table__headerCell[data-sticky]{position:sticky;z-index:3;background-color:var(--seed-color-bg-layer-default)}.seed-data-table__headerCell{outline:var(--seed-dimension-x0_5) solid transparent;outline-offset:calc(var(--seed-dimension-x0_5) * -1)}.seed-data-table__headerCell:is(:focus-visible,[data-focus-visible]){outline:var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);outline-offset:calc(var(--seed-dimension-x0_5) * -1)}.seed-data-table__headerCell .seed-data-table-resize-handle{position:absolute;top:0;inset-inline-end:calc(7px / -2);width:7px;height:100%;z-index:4;display:flex;align-items:center;justify-content:center;cursor:col-resize;touch-action:none}.seed-data-table__headerCell .seed-data-table-resize-handle-inner{width:3px;height:100%;border-radius:3px;background-color:#0298d9;opacity:0;transition:opacity .1s}.seed-data-table__headerCell .seed-data-table-resize-handle:hover .seed-data-table-resize-handle-inner,.seed-data-table__headerCell .seed-data-table-resize-handle[data-resizing] .seed-data-table-resize-handle-inner{opacity:1}.seed-data-table__headerCellInner{box-sizing:border-box;display:flex;align-items:center;width:100%;height:100%;min-width:0;gap:var(--seed-dimension-x1_5);padding-inline:var(--seed-dimension-x3)}.seed-data-table__headerCellLabel{min-width:0;flex:1 1 0%;overflow:clip;text-overflow:ellipsis;white-space:nowrap}.seed-data-table__headerCellIcon{flex-shrink:0;margin-inline-start:auto;display:inline-flex;align-items:center;justify-content:center;width:var(--seed-dimension-x4);height:var(--seed-dimension-x4);color:var(--seed-color-fg-neutral-subtle);border:none;background:0 0;padding:0;font:inherit;cursor:pointer}.seed-data-table__headerCellIcon[data-active]{color:var(--seed-color-fg-neutral)}.seed-data-table__headerCellIcon[data-column-menu]{opacity:0;transition:opacity .12s}.seed-data-table__row{position:relative;background-color:var(--seed-color-bg-layer-default);--seed-data-table-row-bg:var(--seed-color-bg-layer-default)}.seed-data-table__row[data-clickable]{cursor:pointer}.seed-data-table__row:is([aria-selected=true],[data-selected]){background-color:color-mix(in srgb,#0298d9 10%,var(--seed-color-bg-layer-default));--seed-data-table-row-bg:color-mix(in srgb, #0298d9 10%, var(--seed-color-bg-layer-default))}.seed-data-table__row:is([aria-selected=true],[data-selected]):is(:hover,[data-hover]){background-color:color-mix(in srgb,var(--seed-color-fg-neutral) 3%,color-mix(in srgb,#0298d9 10%,var(--seed-color-bg-layer-default)));--seed-data-table-row-bg:color-mix(in srgb, var(--seed-color-fg-neutral) 3%, color-mix(in srgb, #0298d9 10%, var(--seed-color-bg-layer-default)))}.seed-data-table__cell{box-sizing:border-box;position:relative;vertical-align:middle;text-align:start;height:var(--seed-dimension-x9);border-bottom:1px solid var(--seed-color-stroke-neutral-muted);border-inline-end:1px solid var(--seed-color-stroke-neutral-muted);border-top:none;border-inline-start:none;padding-block:0;padding-inline:var(--seed-dimension-x3);color:var(--seed-color-fg-neutral);font-size:var(--seed-font-size-t4);line-height:var(--seed-line-height-t4);font-weight:var(--seed-font-weight-regular);letter-spacing:-.14px;overflow:clip;text-overflow:ellipsis;white-space:nowrap}.seed-data-table__cell:last-child{border-inline-end:none}tbody tr:last-child .seed-data-table__cell{border-bottom:none}.seed-data-table__cell[data-numeric]{text-align:end;font-variant-numeric:tabular-nums}.seed-data-table__cell[data-sticky]{position:sticky;z-index:1;background-color:var(--seed-data-table-row-bg)}.seed-data-table__cell[data-editable]{cursor:default}.seed-data-table__cell .seed-data-table-edit-picker{display:flex;align-items:center;gap:var(--seed-dimension-x1_5);min-width:0}.seed-data-table__cell .seed-data-table-edit-pending{flex-shrink:0;color:var(--seed-color-fg-neutral-subtle);animation:rotate .6s linear infinite}.seed-data-table__cell .seed-data-table-edit-error{position:absolute;top:100%;inset-inline-start:var(--seed-dimension-x3);inset-inline-end:var(--seed-dimension-x3);z-index:2;padding-top:2px;font-size:12px;line-height:1.3;color:var(--seed-color-fg-critical);overflow:clip;text-overflow:ellipsis;white-space:nowrap}.seed-data-table__entity{display:flex;align-items:center;min-width:0;gap:var(--seed-dimension-x1_5)}.seed-data-table__entityName{min-width:0;font-weight:var(--seed-font-weight-medium);overflow:clip;text-overflow:ellipsis;white-space:nowrap}.seed-data-table__tagList{display:flex;align-items:center;gap:var(--seed-dimension-x1_5);overflow:hidden;min-width:0}.seed-data-table__link{color:var(--seed-color-fg-neutral);text-decoration:none;min-width:0;overflow:clip;text-overflow:ellipsis;white-space:nowrap}.seed-data-table__link:is(:hover,[data-hover]){text-decoration:underline}.seed-data-table__toolbar{box-sizing:border-box;display:flex;align-items:center;width:100%;flex-shrink:0;min-height:49px;gap:var(--seed-dimension-x2);padding-inline:var(--seed-dimension-x3);border-top:1px solid var(--seed-color-stroke-neutral-muted)}.seed-data-table__search{flex:1 1 0%;max-width:280px}.seed-data-table__count{flex-shrink:0;margin-inline-start:auto;color:var(--seed-color-fg-neutral-subtle);font-size:var(--seed-font-size-t3);font-variant-numeric:tabular-nums}.seed-data-table__scrollArea{position:relative;display:flex;flex-direction:column;width:100%;min-width:0;flex:1 1 auto;min-height:0;overflow-x:auto;overflow-y:auto}.seed-data-table__scrollArea[data-scrolled-start] [data-sticky-edge]{clip-path:inset(0 -38px 0 0);box-shadow:6px 0 16px 4px rgba(0,0,0,.12)}.seed-data-table__scrollArea[data-scrolled-end] [data-sticky-edge-end]{clip-path:inset(0 0 0 -38px);box-shadow:-6px 0 16px 4px rgba(0,0,0,.12)}.seed-data-table__footerCell{box-sizing:border-box;position:sticky;bottom:0;z-index:2;vertical-align:middle;padding:0;height:var(--seed-dimension-x9);background-color:var(--seed-color-bg-layer-default);border-top:1px solid var(--seed-color-stroke-neutral-muted);border-inline-end:1px solid var(--seed-color-stroke-neutral-muted);border-inline-start:none}.seed-data-table__footerCell:last-child{border-inline-end:none}.seed-data-table__footerCell .seed-data-table-column-calc-trigger{display:flex;align-items:center;gap:var(--seed-dimension-x1_5);width:100%;height:100%;min-width:0;margin:0;padding:0 var(--seed-dimension-x3);border:none;background:0 0;color:var(--seed-color-fg-neutral-subtle);font-family:inherit;font-size:var(--seed-font-size-t4);font-weight:var(--seed-font-weight-medium);white-space:nowrap;overflow:clip;cursor:pointer;transition:background-color .12s,color .12s}.seed-data-table__footerCell .seed-data-table-column-calc-trigger:hover{background-color:color-mix(in srgb,var(--seed-color-fg-neutral) 4%,transparent);color:var(--seed-color-fg-neutral)}.seed-data-table__footerCell .seed-data-table-column-calc-trigger[data-align=right]{justify-content:flex-end}.seed-data-table__footerCell .seed-data-table-column-calc-trigger svg{flex-shrink:0;opacity:.7}.seed-data-table__footerCell .seed-data-table-column-calc-placeholder{overflow:clip;text-overflow:ellipsis;white-space:nowrap}.seed-data-table__footerCell .seed-data-table-column-calc-value{min-width:0;flex-shrink:1;color:var(--seed-color-fg-neutral);font-variant-numeric:tabular-nums;overflow:clip;text-overflow:ellipsis;white-space:nowrap}.seed-data-table__footerCell .seed-data-table-column-calc-op{min-width:0;flex-shrink:1;color:color-mix(in srgb,var(--seed-color-fg-neutral) 63%,transparent);overflow:clip;text-overflow:ellipsis;white-space:nowrap}.seed-data-table__emptyState{box-sizing:border-box;text-align:center;padding-block:var(--seed-dimension-x8);padding-inline:var(--seed-dimension-x3);color:var(--seed-color-fg-neutral-subtle);font-size:var(--seed-font-size-t4)}.seed-data-table__loadingState{box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:10px;padding-block:var(--seed-dimension-x8);padding-inline:var(--seed-dimension-x3);color:color-mix(in srgb,var(--seed-color-fg-neutral) 63%,transparent);font-size:var(--seed-font-size-t4);line-height:var(--seed-line-height-t4);font-weight:var(--seed-font-weight-medium)}.seed-data-table__loadingState[data-inline]{padding-block:0;padding-inline:0;height:var(--seed-dimension-x9)}.seed-data-table__loadingState .seed-data-table-loading-spinner{flex-shrink:0;color:color-mix(in srgb,var(--seed-color-fg-neutral) 63%,transparent);animation:rotate .6s linear infinite}.seed-data-table__addRowCell{box-sizing:border-box;padding:0;border-top:none}.seed-data-table__addRow{box-sizing:border-box;display:flex;align-items:center;width:100%;margin:0;border:none;border-top:1px solid var(--seed-color-stroke-neutral-muted);background-color:var(--seed-color-bg-layer-default);height:var(--seed-dimension-x9);gap:var(--seed-dimension-x2);padding-inline:var(--seed-dimension-x2);color:var(--seed-color-fg-neutral-subtle);font-family:inherit;font-size:var(--seed-font-size-t4);cursor:pointer;transition:background-color .12s,color .12s}.seed-data-table__addRow:hover{background-color:color-mix(in srgb,var(--seed-color-fg-neutral) 4%,var(--seed-color-bg-layer-default));color:var(--seed-color-fg-neutral)}.seed-data-table__addRow svg{flex-shrink:0}.seed-data-table__selectionCell{text-align:center;padding:0}.seed-data-table__root--surface_card{border-color:var(--seed-color-stroke-neutral-muted);background-color:var(--seed-color-bg-layer-default);border-radius:var(--seed-radius-r3)}.seed-data-table__root--surface_bleed{border-color:var(--seed-color-bg-transparent);background-color:var(--seed-color-bg-transparent)}.seed-data-table__row--interactive_true{transition:background-color .12s}.seed-data-table__row--interactive_true:is(:hover,[data-hover]){background-color:color-mix(in srgb,var(--seed-color-fg-neutral) 3%,transparent);--seed-data-table-row-bg:color-mix(in srgb, var(--seed-color-fg-neutral) 3%, var(--seed-color-bg-layer-default))}");
858
+
859
+ const createClassName = (className, variants, compoundVariants = [])=>{
860
+ const variantKeys = Object.keys(variants);
861
+ const variantValues = variantKeys.map((key)=>variants[key]);
862
+ const variantClassName = variantKeys.map((key, index)=>`${className}--${key}_${variantValues[index]}`).join(" ");
863
+ const compountVariantClassName = compoundVariants.filter((compoundVariant)=>Object.keys(compoundVariant).every((key)=>compoundVariant[key] === variants[key])).map((compoundVariant)=>`${className}--${Object.keys(compoundVariant).map((key)=>{
864
+ return `${key}_${compoundVariant[key]}`;
865
+ }).join("-")}`).join(" ");
866
+ return [
867
+ className,
868
+ variantClassName,
869
+ compountVariantClassName
870
+ ].filter(Boolean).join(" ");
871
+ };
872
+ function mergeVariants(a, b) {
873
+ const result = {
874
+ ...a
875
+ };
876
+ for(const k in b){
877
+ if (b[k] != null) {
878
+ result[k] = b[k];
879
+ }
880
+ }
881
+ return result;
882
+ }
883
+ function splitVariantProps(props, variantMap) {
884
+ const variantProps = {};
885
+ const otherProps = {};
886
+ for(const key in props){
887
+ if (variantMap[key] != null) {
888
+ variantProps[key] = props[key];
889
+ } else {
890
+ otherProps[key] = props[key];
891
+ }
892
+ }
893
+ return [
894
+ variantProps,
895
+ otherProps
896
+ ];
897
+ }
898
+
899
+ const dataTableSlotNames = [
900
+ [
901
+ "root",
902
+ "seed-data-table__root"
903
+ ],
904
+ [
905
+ "table",
906
+ "seed-data-table__table"
907
+ ],
908
+ [
909
+ "header",
910
+ "seed-data-table__header"
911
+ ],
912
+ [
913
+ "headerCell",
914
+ "seed-data-table__headerCell"
915
+ ],
916
+ [
917
+ "headerCellInner",
918
+ "seed-data-table__headerCellInner"
919
+ ],
920
+ [
921
+ "headerCellLabel",
922
+ "seed-data-table__headerCellLabel"
923
+ ],
924
+ [
925
+ "headerCellIcon",
926
+ "seed-data-table__headerCellIcon"
927
+ ],
928
+ [
929
+ "row",
930
+ "seed-data-table__row"
931
+ ],
932
+ [
933
+ "cell",
934
+ "seed-data-table__cell"
935
+ ],
936
+ [
937
+ "entity",
938
+ "seed-data-table__entity"
939
+ ],
940
+ [
941
+ "entityName",
942
+ "seed-data-table__entityName"
943
+ ],
944
+ [
945
+ "tagList",
946
+ "seed-data-table__tagList"
947
+ ],
948
+ [
949
+ "link",
950
+ "seed-data-table__link"
951
+ ],
952
+ [
953
+ "toolbar",
954
+ "seed-data-table__toolbar"
955
+ ],
956
+ [
957
+ "search",
958
+ "seed-data-table__search"
959
+ ],
960
+ [
961
+ "count",
962
+ "seed-data-table__count"
963
+ ],
964
+ [
965
+ "scrollArea",
966
+ "seed-data-table__scrollArea"
967
+ ],
968
+ [
969
+ "footer",
970
+ "seed-data-table__footer"
971
+ ],
972
+ [
973
+ "footerCell",
974
+ "seed-data-table__footerCell"
975
+ ],
976
+ [
977
+ "emptyState",
978
+ "seed-data-table__emptyState"
979
+ ],
980
+ [
981
+ "loadingState",
982
+ "seed-data-table__loadingState"
983
+ ],
984
+ [
985
+ "addRow",
986
+ "seed-data-table__addRow"
987
+ ],
988
+ [
989
+ "addRowCell",
990
+ "seed-data-table__addRowCell"
991
+ ],
992
+ [
993
+ "selectionCell",
994
+ "seed-data-table__selectionCell"
995
+ ]
996
+ ];
997
+ const defaultVariant = {
998
+ "surface": "card",
999
+ "interactive": false
1000
+ };
1001
+ const compoundVariants = [];
1002
+ const dataTableVariantMap = {
1003
+ "surface": [
1004
+ "card",
1005
+ "bleed"
1006
+ ],
1007
+ "interactive": [
1008
+ true,
1009
+ false
1010
+ ]
1011
+ };
1012
+ function dataTable(props) {
1013
+ return Object.fromEntries(dataTableSlotNames.map(([slot, className])=>{
1014
+ return [
1015
+ slot,
1016
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants)
1017
+ ];
1018
+ }));
1019
+ }
1020
+ Object.assign(dataTable, {
1021
+ splitVariantProps: (props)=>splitVariantProps(props, dataTableVariantMap)
1022
+ }); // @recipe(seed): data-table
1023
+
1024
+ // The one `createSlotRecipeContext(dataTable)` call every sibling file in this
1025
+ // directory shares -- `ClassNamesProvider` and `withContext` must be the SAME
1026
+ // binding everywhere (a slot component built from a second, independent call would
1027
+ // read a DIFFERENT React context and never see the classNames `DataTableInner`
1028
+ // provides), so this is the one place that calls `createSlotRecipeContext`, and every
1029
+ // other file (`DataTable.tsx`, `column-menu.tsx`, `resize.tsx`, `column-calc.tsx`,
1030
+ // `toolbar.tsx`, `body-cells.tsx`, `editors.tsx`) imports its exports from here rather
1031
+ // than re-deriving its own.
1032
+ const { ClassNamesProvider, withContext, useClassNames } = createSlotRecipeContext(dataTable);
1033
+
1034
+ function DataTableInner(props, ref) {
1035
+ const { columns, data, surface, className, locale = "en-US", sort, defaultSort, onSortChange, sortIcon, selectable, selectedIds, defaultSelectedIds, onSelectionChange, selectAllLabel = "Select all rows", getRowSelectionLabel = ()=>"Select row", selectionCheckedIcon, selectionIndeterminateIcon, query, defaultQuery, onQueryChange, searchPlaceholder = "Search…", searchLabel = "Search table", filters, defaultFilters, onFiltersChange, showCount = true, countLabel, columnMenu = false, reorderable = true, resizable = true, columnOrder, defaultColumnOrder, onColumnOrderChange, hiddenColumnKeys, defaultHiddenColumnKeys, onHiddenColumnKeysChange, columnWidths, defaultColumnWidths, onColumnWidthsChange, columnLabels, defaultColumnLabels, onColumnLabelsChange, onColumnsChange, columnCalcOps, defaultColumnCalcOps, onColumnCalcOpsChange, stickyFirst = false, stickyLast = false, onEdit, interactive = false, onRowClick, onAddRow, addRowLabel = "New record", loading = false, loadingLabel = "Loading...", error, empty = "No results.", onLoadMore, hasMore, loadingMore, scrollProps, ...restProps } = props;
1036
+ const classNames = dataTable({
1037
+ surface,
1038
+ interactive
1039
+ });
1040
+ // The batteries-included DataTable owns the sort state (controllable) so it
1041
+ // can actually reorder `data` -- the headless primitive only tracks which
1042
+ // column/direction is active. A consumer that pre-sorts server-side can pass
1043
+ // a controlled `sort`; this still sorts the rows it's given, which for
1044
+ // already-sorted data is a no-op.
1045
+ const [internalSort, setInternalSort] = React__namespace.useState(defaultSort);
1046
+ const resolvedSort = sort !== undefined ? sort : internalSort;
1047
+ const handleSortChange = React__namespace.useCallback((next)=>{
1048
+ if (sort === undefined) setInternalSort(next);
1049
+ onSortChange?.(next);
1050
+ }, [
1051
+ sort,
1052
+ onSortChange
1053
+ ]);
1054
+ // Same shape as sort just above -- the headless primitive only tracks the ACTIVE
1055
+ // query/filter state (it never sees `TRow`), this component owns the controllable
1056
+ // state that actually narrows `data` (`getVisibleRows`, ./filtering.ts).
1057
+ const [internalQuery, setInternalQuery] = React__namespace.useState(defaultQuery ?? "");
1058
+ const resolvedQuery = query !== undefined ? query : internalQuery;
1059
+ const handleQueryChange = React__namespace.useCallback((next)=>{
1060
+ if (query === undefined) setInternalQuery(next);
1061
+ onQueryChange?.(next);
1062
+ }, [
1063
+ query,
1064
+ onQueryChange
1065
+ ]);
1066
+ const [internalFilters, setInternalFilters] = React__namespace.useState(defaultFilters ?? {});
1067
+ const resolvedFilters = filters !== undefined ? filters : internalFilters;
1068
+ const handleFiltersChange = React__namespace.useCallback((next)=>{
1069
+ if (filters === undefined) setInternalFilters(next);
1070
+ onFiltersChange?.(next);
1071
+ }, [
1072
+ filters,
1073
+ onFiltersChange
1074
+ ]);
1075
+ const visibleRows = React__namespace.useMemo(()=>getVisibleRows(data, columns, resolvedQuery, resolvedFilters), [
1076
+ data,
1077
+ columns,
1078
+ resolvedQuery,
1079
+ resolvedFilters
1080
+ ]);
1081
+ const sortedData = React__namespace.useMemo(()=>{
1082
+ if (!resolvedSort) return visibleRows;
1083
+ const column = columns.find((candidate)=>candidate.key === resolvedSort.key);
1084
+ const factor = resolvedSort.dir === "asc" ? 1 : -1;
1085
+ return [
1086
+ ...visibleRows
1087
+ ].sort((a, b)=>{
1088
+ const av = column ? getColumnValue(column, a) : a[resolvedSort.key];
1089
+ const bv = column ? getColumnValue(column, b) : b[resolvedSort.key];
1090
+ if (av == null && bv == null) return 0;
1091
+ if (av == null) return -factor;
1092
+ if (bv == null) return factor;
1093
+ if (typeof av === "number" && typeof bv === "number") return (av - bv) * factor;
1094
+ return String(av).localeCompare(String(bv)) * factor;
1095
+ });
1096
+ }, [
1097
+ visibleRows,
1098
+ resolvedSort,
1099
+ columns
1100
+ ]);
1101
+ const rowIds = React__namespace.useMemo(()=>sortedData.map((row)=>row.id), [
1102
+ sortedData
1103
+ ]);
1104
+ const columnKeys = React__namespace.useMemo(()=>columns.map((column)=>column.key), [
1105
+ columns
1106
+ ]);
1107
+ const searchable = React__namespace.useMemo(()=>columns.some((column)=>column.searchable), [
1108
+ columns
1109
+ ]);
1110
+ const showToolbar = searchable || showCount;
1111
+ const showFooter = columns.some((column)=>column.summary);
1112
+ // crisp's own `totalCols` (`datatable.tsx`) -- every full-width spanning row (the
1113
+ // loading/error/empty body, infinite scroll's sentinel, the add-row footer) reads
1114
+ // this ONE value rather than each re-deriving it, so they can never drift apart.
1115
+ const totalCols = columns.length + (selectable ? 1 : 0);
1116
+ return /*#__PURE__*/ jsxRuntime.jsx(ClassNamesProvider, {
1117
+ value: classNames,
1118
+ children: /*#__PURE__*/ jsxRuntime.jsxs(DataTable12sZml1x9Kr12s.DataTableRoot, {
1119
+ ref: ref,
1120
+ className: clsx(classNames.root, className),
1121
+ rowIds: rowIds,
1122
+ selectable: selectable,
1123
+ selectedIds: selectedIds,
1124
+ defaultSelectedIds: defaultSelectedIds,
1125
+ onSelectionChange: onSelectionChange,
1126
+ sort: resolvedSort,
1127
+ onSortChange: handleSortChange,
1128
+ query: resolvedQuery,
1129
+ onQueryChange: handleQueryChange,
1130
+ filters: resolvedFilters,
1131
+ onFiltersChange: handleFiltersChange,
1132
+ columnKeys: columnKeys,
1133
+ columnOrder: columnOrder,
1134
+ defaultColumnOrder: defaultColumnOrder,
1135
+ onColumnOrderChange: onColumnOrderChange,
1136
+ hiddenColumnKeys: hiddenColumnKeys,
1137
+ defaultHiddenColumnKeys: defaultHiddenColumnKeys,
1138
+ onHiddenColumnKeysChange: onHiddenColumnKeysChange,
1139
+ columnWidths: columnWidths,
1140
+ defaultColumnWidths: defaultColumnWidths,
1141
+ onColumnWidthsChange: onColumnWidthsChange,
1142
+ columnLabels: columnLabels,
1143
+ defaultColumnLabels: defaultColumnLabels,
1144
+ onColumnLabelsChange: onColumnLabelsChange,
1145
+ columnCalcOps: columnCalcOps,
1146
+ defaultColumnCalcOps: defaultColumnCalcOps,
1147
+ onColumnCalcOpsChange: onColumnCalcOpsChange,
1148
+ onEdit: onEdit,
1149
+ onLoadMore: onLoadMore,
1150
+ hasMore: hasMore,
1151
+ loadingMore: loadingMore,
1152
+ ...restProps,
1153
+ children: [
1154
+ onColumnsChange && /*#__PURE__*/ jsxRuntime.jsx(ColumnsChangeEffect, {
1155
+ columns: columns,
1156
+ onColumnsChange: onColumnsChange
1157
+ }),
1158
+ showToolbar && /*#__PURE__*/ jsxRuntime.jsxs(toolbar12s.DataTableToolbar, {
1159
+ children: [
1160
+ searchable && /*#__PURE__*/ jsxRuntime.jsx(toolbar12s.SearchBox, {
1161
+ placeholder: searchPlaceholder,
1162
+ label: searchLabel
1163
+ }),
1164
+ showCount && /*#__PURE__*/ jsxRuntime.jsx(toolbar12s.RowCount, {
1165
+ shown: sortedData.length,
1166
+ total: data.length,
1167
+ countLabel: countLabel
1168
+ })
1169
+ ]
1170
+ }),
1171
+ /*#__PURE__*/ jsxRuntime.jsx(DataTableScrollBody, {
1172
+ scrollProps: scrollProps,
1173
+ children: /*#__PURE__*/ jsxRuntime.jsxs(DataTableTable, {
1174
+ children: [
1175
+ /*#__PURE__*/ jsxRuntime.jsx(DataTableColGroup, {
1176
+ columns: columns,
1177
+ selectable: !!selectable
1178
+ }),
1179
+ /*#__PURE__*/ jsxRuntime.jsxs(DataTableHeader, {
1180
+ children: [
1181
+ selectable && /*#__PURE__*/ jsxRuntime.jsx(DataTableSelectionHeaderCell, {
1182
+ ...columnLayout12s.stickyProps({
1183
+ selectable,
1184
+ stickyFirst,
1185
+ stickyLast,
1186
+ isSelectionCell: true,
1187
+ isFirst: false,
1188
+ isLast: false
1189
+ }),
1190
+ children: /*#__PURE__*/ jsxRuntime.jsx(SelectAllCheckbox, {
1191
+ label: selectAllLabel,
1192
+ checkedIcon: selectionCheckedIcon ?? DEFAULT_CHECKED_ICON,
1193
+ indeterminateIcon: selectionIndeterminateIcon ?? DEFAULT_INDETERMINATE_ICON
1194
+ })
1195
+ }),
1196
+ /*#__PURE__*/ jsxRuntime.jsx(columnMenu12s.ColumnHeaderCells, {
1197
+ columns: columns,
1198
+ columnMenu: columnMenu,
1199
+ reorderable: reorderable,
1200
+ resizable: resizable,
1201
+ sortIcon: sortIcon,
1202
+ selectable: !!selectable,
1203
+ stickyFirst: stickyFirst,
1204
+ stickyLast: stickyLast
1205
+ })
1206
+ ]
1207
+ }),
1208
+ /*#__PURE__*/ jsxRuntime.jsx(DataTableBody, {
1209
+ children: loading ? /*#__PURE__*/ jsxRuntime.jsx("tr", {
1210
+ children: /*#__PURE__*/ jsxRuntime.jsx(DataTableCell, {
1211
+ colSpan: totalCols,
1212
+ children: /*#__PURE__*/ jsxRuntime.jsx(states12s.LoadingStateContent, {
1213
+ label: loadingLabel,
1214
+ classNames: classNames
1215
+ })
1216
+ })
1217
+ }) : error ? /*#__PURE__*/ jsxRuntime.jsx("tr", {
1218
+ children: /*#__PURE__*/ jsxRuntime.jsx(DataTableCell, {
1219
+ colSpan: totalCols,
1220
+ children: /*#__PURE__*/ jsxRuntime.jsx(states12s.EmptyStateContent, {
1221
+ classNames: classNames,
1222
+ children: error
1223
+ })
1224
+ })
1225
+ }) : sortedData.length === 0 ? /*#__PURE__*/ jsxRuntime.jsx("tr", {
1226
+ children: /*#__PURE__*/ jsxRuntime.jsx(DataTableCell, {
1227
+ colSpan: totalCols,
1228
+ children: /*#__PURE__*/ jsxRuntime.jsx(states12s.EmptyStateContent, {
1229
+ classNames: classNames,
1230
+ children: empty
1231
+ })
1232
+ })
1233
+ }) : /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
1234
+ children: [
1235
+ sortedData.map((row)=>/*#__PURE__*/ jsxRuntime.jsxs(DataTableRow, {
1236
+ rowId: row.id,
1237
+ "data-clickable": onRowClick ? "" : undefined,
1238
+ onClick: onRowClick ? ()=>onRowClick(row) : undefined,
1239
+ children: [
1240
+ selectable && /*#__PURE__*/ jsxRuntime.jsx(DataTableSelectionCell, {
1241
+ ...columnLayout12s.stickyProps({
1242
+ selectable,
1243
+ stickyFirst,
1244
+ stickyLast,
1245
+ isSelectionCell: true,
1246
+ isFirst: false,
1247
+ isLast: false
1248
+ }),
1249
+ children: /*#__PURE__*/ jsxRuntime.jsx(RowCheckbox, {
1250
+ label: getRowSelectionLabel(row),
1251
+ checkedIcon: selectionCheckedIcon ?? DEFAULT_CHECKED_ICON
1252
+ })
1253
+ }),
1254
+ /*#__PURE__*/ jsxRuntime.jsx(bodyCells12s.ColumnBodyCells, {
1255
+ columns: columns,
1256
+ row: row,
1257
+ classNames: classNames,
1258
+ locale: locale,
1259
+ selectable: !!selectable,
1260
+ stickyFirst: stickyFirst,
1261
+ stickyLast: stickyLast
1262
+ })
1263
+ ]
1264
+ }, row.id)),
1265
+ onLoadMore && /*#__PURE__*/ jsxRuntime.jsx(states12s.InfiniteScrollRow, {
1266
+ colSpan: totalCols,
1267
+ classNames: classNames,
1268
+ loadingLabel: loadingLabel
1269
+ })
1270
+ ]
1271
+ })
1272
+ }),
1273
+ showFooter && /*#__PURE__*/ jsxRuntime.jsxs(DataTableFooter, {
1274
+ children: [
1275
+ selectable && // The 40px-wide selection SPACER cell is now a plain `DataTableFooterCell`
1276
+ // (not the `selectionCell` slot) -- the `<colgroup>`'s own 40px `<col>`
1277
+ // is what makes every row's selection column line up now, not a matching
1278
+ // per-slot width formula, so there is no more reason for this cell to
1279
+ // borrow a different slot than its footer siblings.
1280
+ /*#__PURE__*/ jsxRuntime.jsx(DataTableFooterCell, {
1281
+ ...columnLayout12s.stickyProps({
1282
+ selectable,
1283
+ stickyFirst,
1284
+ stickyLast,
1285
+ isSelectionCell: true,
1286
+ isFirst: false,
1287
+ isLast: false
1288
+ })
1289
+ }),
1290
+ /*#__PURE__*/ jsxRuntime.jsx(columnCalc12s.ColumnCalcCells, {
1291
+ columns: columns,
1292
+ rows: sortedData,
1293
+ selectable: !!selectable,
1294
+ stickyFirst: stickyFirst,
1295
+ stickyLast: stickyLast
1296
+ })
1297
+ ]
1298
+ }),
1299
+ onAddRow && /*#__PURE__*/ jsxRuntime.jsx(states12s.AddRowFooter, {
1300
+ onAddRow: onAddRow,
1301
+ addRowLabel: addRowLabel,
1302
+ colSpan: totalCols,
1303
+ classNames: classNames
1304
+ })
1305
+ ]
1306
+ })
1307
+ })
1308
+ ]
1309
+ })
1310
+ });
1311
+ }
1312
+ DataTableInner.displayName = "DataTable";
1313
+ /**
1314
+ * @see https://seed-design.io/react/components/data-table
1315
+ */ const DataTable = /*#__PURE__*/ React.forwardRef(DataTableInner);
1316
+ ////////////////////////////////////////////////////////////////////////////////////
1317
+ /** Fires `onColumnsChange` with the effective (ordered, visible, relabelled) column
1318
+ * list whenever it actually changes -- a thin convenience over the four controllable
1319
+ * pairs (order/hidden/width/label), for a consumer that would rather persist "the
1320
+ * current column configuration" as one blob. A standalone component (not inlined in
1321
+ * `DataTableInner`) purely so it can call `useDataTableContext()` -- that context is
1322
+ * provided by the `DataTablePrimitiveRoot` this renders as a SIBLING of, one level
1323
+ * up from where `DataTableInner` itself sits. */ function ColumnsChangeEffect({ columns, onColumnsChange }) {
1324
+ const effective = columnLayout12s.useEffectiveColumns(columns);
1325
+ // A NEW array every time `effective` itself is a new array (its own `useMemo`
1326
+ // recomputes only when order/hidden/label/width actually change) -- `header`
1327
+ // resolves to the menu's rename override (falling back to the column's own static
1328
+ // `header`) and `width` resolves to the live resize/consumer-set width (falling
1329
+ // back to the column's own initial one), so this is genuinely "what's showing now",
1330
+ // not the original static `columns` prop echoed back unchanged.
1331
+ const resolvedColumns = React__namespace.useMemo(()=>effective.map(({ column, label, width })=>({
1332
+ ...column,
1333
+ header: label,
1334
+ width
1335
+ })), [
1336
+ effective
1337
+ ]);
1338
+ React__namespace.useEffect(()=>{
1339
+ onColumnsChange(resolvedColumns);
1340
+ }, [
1341
+ resolvedColumns,
1342
+ onColumnsChange
1343
+ ]);
1344
+ return null;
1345
+ }
1346
+ ////////////////////////////////////////////////////////////////////////////////////
1347
+ // The real `<table>` -- see react-headless's own `DataTableTable` comment for why this
1348
+ // is a SIBLING of the toolbar (both inside `DataTablePrimitiveRoot`'s card `<div>`)
1349
+ // rather than `DataTablePrimitiveRoot` itself: a `<table>` cannot host the toolbar as a
1350
+ // child without the HTML parser foster-parenting it back out.
1351
+ const DataTableTable = withContext(DataTable12sZml1x9Kr12s.DataTableTable, "table");
1352
+ /** One `<col>` per rendered column (plus the 40px selection column, if any) -- the
1353
+ * SINGLE place a column's width is ever set now. Every row's header/body/footer cell
1354
+ * reads its own width off this shared `<colgroup>` by construction (native table
1355
+ * column-sizing), which is what makes them align -- no per-cell width style to drift
1356
+ * out of sync between the three. A column with no explicit width gets a bare `<col>`
1357
+ * (no `style`): `table-layout: fixed`'s own algorithm gives every such column an equal
1358
+ * share of whatever space is left, matching the old flex grid's `flex: 1 1 0%`
1359
+ * default with no extra code needed here. */ function DataTableColGroup({ columns, selectable }) {
1360
+ const effective = columnLayout12s.useEffectiveColumns(columns);
1361
+ return /*#__PURE__*/ jsxRuntime.jsxs("colgroup", {
1362
+ children: [
1363
+ selectable && /*#__PURE__*/ jsxRuntime.jsx("col", {
1364
+ style: {
1365
+ width: 40
1366
+ }
1367
+ }),
1368
+ effective.map(({ column, width })=>/*#__PURE__*/ jsxRuntime.jsx("col", {
1369
+ style: width === undefined ? undefined : {
1370
+ width
1371
+ }
1372
+ }, column.key))
1373
+ ]
1374
+ });
1375
+ }
1376
+ const DataTableHeader = withContext(DataTable12sZml1x9Kr12s.DataTableHeader, "header");
1377
+ const DataTableHeaderCell = withContext(DataTable12sZml1x9Kr12s.DataTableHeaderCell, "headerCell");
1378
+ // `.crisp-datatable-th-inner` -- the flex row INSIDE a `<th>` (label + filter trigger +
1379
+ // sort chevron + column menu). See qvism-preset's own `headerCellInner` slot comment
1380
+ // for why this lives one level below the cell itself rather than on it.
1381
+ const DataTableHeaderCellInner = withContext(reactPrimitive.Primitive.div, "headerCellInner");
1382
+ /** The label text specifically -- the one thing in `DataTableHeaderCellInner` that
1383
+ * truncates; the trailing filter/sort/menu icons stay fully visible regardless of how
1384
+ * long a column's own header text is. */ const DataTableHeaderCellLabel = withContext(reactPrimitive.Primitive.span, "headerCellLabel");
1385
+ /**
1386
+ * A selection `<th>`/`<td>`/footer `<td>` composes ITS base slot (`headerCell`/`cell`/
1387
+ * `footerCell`) together with the `selectionCell` MODIFIER, rather than replacing it --
1388
+ * so the checkbox column still inherits every shared table-wide rule (sticky header,
1389
+ * sticky footer, height, borders) for free instead of a second, independent copy of
1390
+ * them under a slot of its own. `useClassNames()` reads the SAME classNames object
1391
+ * `ClassNamesProvider` (below, in `DataTableInner`) already put in context; this isn't
1392
+ * a second recipe call.
1393
+ */ function withSelectionCell(Component, baseSlot) {
1394
+ const StyledComponent = /*#__PURE__*/ React.forwardRef((props, ref)=>{
1395
+ const classNames = useClassNames();
1396
+ return /*#__PURE__*/ jsxRuntime.jsx(Component, {
1397
+ ref: ref,
1398
+ ...props,
1399
+ className: clsx(classNames[baseSlot], classNames.selectionCell, props["className"])
1400
+ });
1401
+ });
1402
+ StyledComponent.displayName = `SelectionCell(${baseSlot})`;
1403
+ return StyledComponent;
1404
+ }
1405
+ const DataTableSelectionHeaderCell = withSelectionCell(DataTable12sZml1x9Kr12s.DataTableHeaderCell, "headerCell");
1406
+ const DataTableHeaderCellIcon = withContext(reactPrimitive.Primitive.span, "headerCellIcon");
1407
+ // body has no CSS slot of its own in the rootage spec -- it is a plain structural
1408
+ // `<tbody>`, so it is not wrapped in `withContext`.
1409
+ const DataTableBody = DataTable12sZml1x9Kr12s.DataTableBody;
1410
+ const DataTableRow = withContext(DataTable12sZml1x9Kr12s.DataTableRow, "row");
1411
+ const DataTableCell = withContext(DataTable12sZml1x9Kr12s.DataTableCell, "cell");
1412
+ const DataTableSelectionCell = withSelectionCell(DataTable12sZml1x9Kr12s.DataTableCell, "cell");
1413
+ // Tranche 4 -- column menu + reorder + resize + sticky columns. A scroll boundary
1414
+ // wrapping the whole `<table>`: `overflowX: auto` is what makes a wide table (more
1415
+ // column width than the card is wide) scroll horizontally at all, which sticky columns
1416
+ // and their scroll shadow (this slot's own `data-scrolled-start`/`-end`, set from
1417
+ // `useDataTableScroll`) need something concrete to measure and listen to. `overflowY`
1418
+ // stays out of this slot's own base css (nothing here has a bounded height of its own
1419
+ // to clip), so it never introduces a second vertical scrollbar next to whatever
1420
+ // ambient container the whole DataTable already sits in.
1421
+ const DataTableScrollBodyBase = withContext(reactPrimitive.Primitive.div, "scrollArea");
1422
+ function DataTableScrollBody({ children, scrollProps }) {
1423
+ const { scrollAreaRef, scrolledStart, scrolledEnd, onScroll } = DataTable12sZml1x9Kr12s.useDataTableContext();
1424
+ const { className: scrollClassName, style: scrollStyle, ...otherScrollProps } = scrollProps ?? {};
1425
+ return /*#__PURE__*/ jsxRuntime.jsx(DataTableScrollBodyBase, {
1426
+ ...otherScrollProps,
1427
+ ref: scrollAreaRef,
1428
+ onScroll: onScroll,
1429
+ className: scrollClassName,
1430
+ style: scrollStyle,
1431
+ "data-scrolled-start": domUtils.dataAttr(scrolledStart),
1432
+ "data-scrolled-end": domUtils.dataAttr(scrolledEnd),
1433
+ children: children
1434
+ });
1435
+ }
1436
+ const DataTableFooterBase = withContext(reactPrimitive.Primitive.tfoot, "footer");
1437
+ function DataTableFooter({ children, ...props }) {
1438
+ return /*#__PURE__*/ jsxRuntime.jsx(DataTableFooterBase, {
1439
+ ...props,
1440
+ children: /*#__PURE__*/ jsxRuntime.jsx("tr", {
1441
+ children: children
1442
+ })
1443
+ });
1444
+ }
1445
+ const DataTableFooterCell = withContext(reactPrimitive.Primitive.td, "footerCell");
1446
+ ////////////////////////////////////////////////////////////////////////////////////
1447
+ // Fix (bug report): karrot icons default to a 24px intrinsic SVG attribute size
1448
+ // -- see column-menu.tsx's own `SORT_ICON_SIZE` comment for the full mechanism.
1449
+ // The selection checkbox's own indicator is the smallest glyph in the grid
1450
+ // (crisp's own measured checkmark), so it gets the smallest explicit size.
1451
+ const SELECTION_ICON_SIZE = 12;
1452
+ const DEFAULT_CHECKED_ICON = /*#__PURE__*/ jsxRuntime.jsx(IconCheckmarkLine_default, {
1453
+ size: SELECTION_ICON_SIZE
1454
+ });
1455
+ const DEFAULT_INDETERMINATE_ICON = /*#__PURE__*/ jsxRuntime.jsx(IconMinusLine_default, {
1456
+ size: SELECTION_ICON_SIZE
1457
+ });
1458
+ function SelectAllCheckbox({ label, checkedIcon, indeterminateIcon }) {
1459
+ const { selectionState, toggleAll } = DataTable12sZml1x9Kr12s.useDataTableContext();
1460
+ return /*#__PURE__*/ jsxRuntime.jsxs(CheckboxRoot, {
1461
+ checked: selectionState === "all",
1462
+ indeterminate: selectionState === "some",
1463
+ onCheckedChange: toggleAll,
1464
+ children: [
1465
+ /*#__PURE__*/ jsxRuntime.jsx(CheckboxControl, {
1466
+ children: /*#__PURE__*/ jsxRuntime.jsx(CheckboxIndicator, {
1467
+ checked: checkedIcon ?? null,
1468
+ indeterminate: indeterminateIcon
1469
+ })
1470
+ }),
1471
+ /*#__PURE__*/ jsxRuntime.jsx(CheckboxHiddenInput, {
1472
+ "aria-label": label
1473
+ })
1474
+ ]
1475
+ });
1476
+ }
1477
+ /**
1478
+ * Reads its OWN row's selected state off `useDataTableRowContext` (set by the
1479
+ * `DataTableRow` it renders inside) rather than being handed `rowId` again as a prop
1480
+ * and looking it up in the table-wide context -- the same shape Select's
1481
+ * `SelectItemLabel` reads `label` off `useSelectItemContext` instead of a prop
1482
+ * re-threaded down from `SelectItem`.
1483
+ */ function RowCheckbox({ label, checkedIcon }) {
1484
+ const { isSelected, toggleRow } = DataTable12sZml1x9Kr12s.useDataTableRowContext();
1485
+ return /*#__PURE__*/ jsxRuntime.jsxs(CheckboxRoot, {
1486
+ checked: isSelected,
1487
+ onCheckedChange: toggleRow,
1488
+ children: [
1489
+ /*#__PURE__*/ jsxRuntime.jsx(CheckboxControl, {
1490
+ children: /*#__PURE__*/ jsxRuntime.jsx(CheckboxIndicator, {
1491
+ checked: checkedIcon ?? null
1492
+ })
1493
+ }),
1494
+ /*#__PURE__*/ jsxRuntime.jsx(CheckboxHiddenInput, {
1495
+ "aria-label": label
1496
+ })
1497
+ ]
1498
+ });
1499
+ }
1500
+
1501
+ exports.CheckboxControl = CheckboxControl;
1502
+ exports.CheckboxHiddenInput = CheckboxHiddenInput;
1503
+ exports.CheckboxIndicator = CheckboxIndicator;
1504
+ exports.CheckboxLabel = CheckboxLabel;
1505
+ exports.CheckboxRoot = CheckboxRoot;
1506
+ exports.DataTable = DataTable;
1507
+ exports.DataTableCell = DataTableCell;
1508
+ exports.DataTableFooterCell = DataTableFooterCell;
1509
+ exports.DataTableHeaderCell = DataTableHeaderCell;
1510
+ exports.DataTableHeaderCellIcon = DataTableHeaderCellIcon;
1511
+ exports.DataTableHeaderCellInner = DataTableHeaderCellInner;
1512
+ exports.DataTableHeaderCellLabel = DataTableHeaderCellLabel;
1513
+ exports.IconCheckmarkFatFill_default = IconCheckmarkFatFill_default;
1514
+ exports.IconCheckmarkLine_default = IconCheckmarkLine_default;
1515
+ exports.IconChevronDownLine_default = IconChevronDownLine_default;
1516
+ exports.IconChevronDownSmallLine_default = IconChevronDownSmallLine_default;
1517
+ exports.IconChevronUpLine_default = IconChevronUpLine_default;
1518
+ exports.IconDot3HorizontalLine_default = IconDot3HorizontalLine_default;
1519
+ exports.IconMagnifyingglassLine_default = IconMagnifyingglassLine_default;
1520
+ exports.IconPersonCircleLine_default = IconPersonCircleLine_default;
1521
+ exports.IconPlusLine_default = IconPlusLine_default;
1522
+ exports.IconSlider2HorizontalLine_default = IconSlider2HorizontalLine_default;
1523
+ exports.InternalIcon = InternalIcon;
1524
+ exports.clsx = clsx;
1525
+ exports.composeRefs = composeRefs;
1526
+ exports.createSlotRecipeContext = createSlotRecipeContext;
1527
+ exports.createWithStateProps = createWithStateProps;
1528
+ exports.dataTable = dataTable;
1529
+ exports.getColumnValue = getColumnValue;
1530
+ exports.splitMultipleVariantsProps = splitMultipleVariantsProps;
1531
+ exports.withContext = withContext;
1532
+ exports.withScaleFeedback = withScaleFeedback;