@zentauri-ui/zentauri-components 2.1.6 → 2.1.7

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 (115) hide show
  1. package/README.md +10 -8
  2. package/cli/cli.integration.test.ts +36 -0
  3. package/cli/index.mjs +43 -7
  4. package/cli/props.json +273 -0
  5. package/cli/registry.json +20 -0
  6. package/cli/rewrite-imports.mjs +29 -4
  7. package/cli/rewrite-imports.test.ts +35 -0
  8. package/dist/{chunk-QE7OJW4J.js → chunk-5ELR6MIN.js} +6 -6
  9. package/dist/{chunk-QE7OJW4J.js.map → chunk-5ELR6MIN.js.map} +1 -1
  10. package/dist/chunk-5FU57ZVQ.js +19 -0
  11. package/dist/{chunk-3W2UUKWP.js.map → chunk-5FU57ZVQ.js.map} +1 -1
  12. package/dist/chunk-74SKXGTM.js +4 -0
  13. package/dist/chunk-74SKXGTM.js.map +1 -0
  14. package/dist/{chunk-CHI6MBTI.mjs → chunk-7UXPXCKV.mjs} +3 -3
  15. package/dist/{chunk-CHI6MBTI.mjs.map → chunk-7UXPXCKV.mjs.map} +1 -1
  16. package/dist/chunk-CYKSS5S5.mjs +128 -0
  17. package/dist/chunk-CYKSS5S5.mjs.map +1 -0
  18. package/dist/chunk-DBNGLT5U.mjs +221 -0
  19. package/dist/chunk-DBNGLT5U.mjs.map +1 -0
  20. package/dist/{chunk-A4IB3C23.mjs → chunk-FUCW5GPE.mjs} +22 -6
  21. package/dist/chunk-FUCW5GPE.mjs.map +1 -0
  22. package/dist/chunk-G7FVHZRB.js +225 -0
  23. package/dist/chunk-G7FVHZRB.js.map +1 -0
  24. package/dist/chunk-HMDH4BQJ.js +123 -0
  25. package/dist/chunk-HMDH4BQJ.js.map +1 -0
  26. package/dist/chunk-I7EBE7BD.js +98 -0
  27. package/dist/chunk-I7EBE7BD.js.map +1 -0
  28. package/dist/{chunk-WWKAJHIV.mjs → chunk-KVSRUAXP.mjs} +3 -3
  29. package/dist/{chunk-WWKAJHIV.mjs.map → chunk-KVSRUAXP.mjs.map} +1 -1
  30. package/dist/chunk-LHBJD57K.mjs +143 -0
  31. package/dist/chunk-LHBJD57K.mjs.map +1 -0
  32. package/dist/chunk-OYAJG2BO.js +83 -0
  33. package/dist/chunk-OYAJG2BO.js.map +1 -0
  34. package/dist/chunk-PTU5ZAYX.js +145 -0
  35. package/dist/chunk-PTU5ZAYX.js.map +1 -0
  36. package/dist/chunk-QKO5DA4N.mjs +81 -0
  37. package/dist/chunk-QKO5DA4N.mjs.map +1 -0
  38. package/dist/chunk-T7PIKDUZ.js +130 -0
  39. package/dist/chunk-T7PIKDUZ.js.map +1 -0
  40. package/dist/chunk-TDK5TVJE.mjs +3 -0
  41. package/dist/chunk-TDK5TVJE.mjs.map +1 -0
  42. package/dist/{chunk-VA6SB6NN.js → chunk-TJ2EWPER.js} +28 -5
  43. package/dist/chunk-TJ2EWPER.js.map +1 -0
  44. package/dist/chunk-VBNW2B4D.mjs +3 -0
  45. package/dist/chunk-VBNW2B4D.mjs.map +1 -0
  46. package/dist/chunk-W6DO36XD.mjs +96 -0
  47. package/dist/chunk-W6DO36XD.mjs.map +1 -0
  48. package/dist/chunk-XR3J46TZ.js +4 -0
  49. package/dist/chunk-XR3J46TZ.js.map +1 -0
  50. package/dist/chunk-ZOHCADDL.mjs +121 -0
  51. package/dist/chunk-ZOHCADDL.mjs.map +1 -0
  52. package/dist/design-system/data-table.d.ts +8 -0
  53. package/dist/design-system/data-table.d.ts.map +1 -0
  54. package/dist/design-system/facade.js +5 -5
  55. package/dist/design-system/facade.mjs +4 -4
  56. package/dist/design-system/index.d.ts +1 -0
  57. package/dist/design-system/index.d.ts.map +1 -1
  58. package/dist/hooks/useTableFilter.js +6 -116
  59. package/dist/hooks/useTableFilter.js.map +1 -1
  60. package/dist/hooks/useTableFilter.mjs +1 -118
  61. package/dist/hooks/useTableFilter.mjs.map +1 -1
  62. package/dist/hooks/useTableSort.js +6 -91
  63. package/dist/hooks/useTableSort.js.map +1 -1
  64. package/dist/hooks/useTableSort.mjs +1 -93
  65. package/dist/hooks/useTableSort.mjs.map +1 -1
  66. package/dist/hooks/useVirtualList.js +6 -76
  67. package/dist/hooks/useVirtualList.js.map +1 -1
  68. package/dist/hooks/useVirtualList.mjs +1 -78
  69. package/dist/hooks/useVirtualList.mjs.map +1 -1
  70. package/dist/ui/buttons/animated.js +7 -7
  71. package/dist/ui/buttons/animated.mjs +5 -5
  72. package/dist/ui/buttons.js +9 -8
  73. package/dist/ui/buttons.mjs +7 -6
  74. package/dist/ui/checkbox.js +7 -123
  75. package/dist/ui/checkbox.js.map +1 -1
  76. package/dist/ui/checkbox.mjs +2 -126
  77. package/dist/ui/checkbox.mjs.map +1 -1
  78. package/dist/ui/data-table/data-table-base.d.ts +6 -0
  79. package/dist/ui/data-table/data-table-base.d.ts.map +1 -0
  80. package/dist/ui/data-table/data-table.d.ts +6 -0
  81. package/dist/ui/data-table/data-table.d.ts.map +1 -0
  82. package/dist/ui/data-table/index.d.ts +4 -0
  83. package/dist/ui/data-table/index.d.ts.map +1 -0
  84. package/dist/ui/data-table/types.d.ts +92 -0
  85. package/dist/ui/data-table/types.d.ts.map +1 -0
  86. package/dist/ui/data-table/variants.d.ts +8 -0
  87. package/dist/ui/data-table/variants.d.ts.map +1 -0
  88. package/dist/ui/data-table.js +620 -0
  89. package/dist/ui/data-table.js.map +1 -0
  90. package/dist/ui/data-table.mjs +611 -0
  91. package/dist/ui/data-table.mjs.map +1 -0
  92. package/dist/ui/dynamic-stepper.js +17 -17
  93. package/dist/ui/dynamic-stepper.mjs +6 -6
  94. package/dist/ui/inputs.js +7 -138
  95. package/dist/ui/inputs.js.map +1 -1
  96. package/dist/ui/inputs.mjs +2 -141
  97. package/dist/ui/inputs.mjs.map +1 -1
  98. package/dist/ui/pagination.js +19 -220
  99. package/dist/ui/pagination.js.map +1 -1
  100. package/dist/ui/pagination.mjs +7 -222
  101. package/dist/ui/pagination.mjs.map +1 -1
  102. package/dist/ui/table.js +1 -0
  103. package/dist/ui/table.mjs +1 -0
  104. package/package.json +1 -1
  105. package/src/design-system/data-table.ts +20 -0
  106. package/src/design-system/index.ts +1 -0
  107. package/src/ui/data-table/data-table-base.tsx +701 -0
  108. package/src/ui/data-table/data-table.test.tsx +389 -0
  109. package/src/ui/data-table/data-table.tsx +11 -0
  110. package/src/ui/data-table/index.ts +24 -0
  111. package/src/ui/data-table/types.ts +121 -0
  112. package/src/ui/data-table/variants.ts +21 -0
  113. package/dist/chunk-3W2UUKWP.js +0 -19
  114. package/dist/chunk-A4IB3C23.mjs.map +0 -1
  115. package/dist/chunk-VA6SB6NN.js.map +0 -1
@@ -0,0 +1,145 @@
1
+ 'use strict';
2
+
3
+ var chunkSCOIRBML_js = require('./chunk-SCOIRBML.js');
4
+ var chunkZS5756ZC_js = require('./chunk-ZS5756ZC.js');
5
+ var react = require('react');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ function mergeDescribedByIds(user, ...generated) {
9
+ const ids = [
10
+ ...(user ?? "").split(/\s+/).filter(Boolean),
11
+ ...generated.filter((id) => Boolean(id))
12
+ ];
13
+ const unique = [...new Set(ids)];
14
+ return unique.length > 0 ? unique.join(" ") : void 0;
15
+ }
16
+ var InputBase = (props) => {
17
+ const generatedId = react.useId();
18
+ if (props.as === "textarea") {
19
+ const {
20
+ className: className2,
21
+ appearance: appearance2,
22
+ size: size2,
23
+ ring: ring2 = true,
24
+ ref: ref2,
25
+ "aria-invalid": ariaInvalidProp2,
26
+ errorMessage: errorMessage2,
27
+ hint: hint2,
28
+ label: label2,
29
+ id: id2,
30
+ as: as2,
31
+ "aria-describedby": ariaDescribedByUser2,
32
+ ...rest2
33
+ } = props;
34
+ const controlId2 = id2 ?? generatedId;
35
+ const errorId2 = `${controlId2}-error`;
36
+ const hintId2 = `${controlId2}-hint`;
37
+ const ariaInvalid2 = ariaInvalidProp2 !== void 0 ? ariaInvalidProp2 : appearance2 === "error" ? true : void 0;
38
+ const describedBy2 = mergeDescribedByIds(
39
+ ariaDescribedByUser2,
40
+ hint2 !== void 0 ? hintId2 : void 0,
41
+ errorMessage2 && appearance2 === "error" ? errorId2 : void 0
42
+ );
43
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
44
+ label2 !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
45
+ "label",
46
+ {
47
+ htmlFor: controlId2,
48
+ className: "mb-1 block text-sm font-medium text-slate-200",
49
+ children: label2
50
+ }
51
+ ),
52
+ hint2 !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { id: hintId2, className: "mb-1 text-xs text-slate-400", children: hint2 }),
53
+ /* @__PURE__ */ jsxRuntime.jsx(
54
+ "textarea",
55
+ {
56
+ ref: ref2,
57
+ id: controlId2,
58
+ "data-slot": "input",
59
+ className: chunkZS5756ZC_js.cn(
60
+ chunkSCOIRBML_js.inputVariants({ appearance: appearance2, size: size2, ring: ring2, as: as2 }),
61
+ className2
62
+ ),
63
+ "aria-invalid": ariaInvalid2,
64
+ "aria-describedby": describedBy2,
65
+ ...rest2
66
+ }
67
+ ),
68
+ errorMessage2 && appearance2 === "error" && /* @__PURE__ */ jsxRuntime.jsx(
69
+ "p",
70
+ {
71
+ id: errorId2,
72
+ className: "mt-2 pl-4 text-sm text-rose-500 wrap-break-word",
73
+ children: errorMessage2
74
+ }
75
+ )
76
+ ] });
77
+ }
78
+ const {
79
+ className,
80
+ appearance,
81
+ size,
82
+ ring = true,
83
+ ref,
84
+ "aria-invalid": ariaInvalidProp,
85
+ errorMessage,
86
+ hint,
87
+ label,
88
+ id,
89
+ as,
90
+ "aria-describedby": ariaDescribedByUser,
91
+ ...rest
92
+ } = props;
93
+ const controlId = id ?? generatedId;
94
+ const errorId = `${controlId}-error`;
95
+ const hintId = `${controlId}-hint`;
96
+ const ariaInvalid = ariaInvalidProp !== void 0 ? ariaInvalidProp : appearance === "error" ? true : void 0;
97
+ const describedBy = mergeDescribedByIds(
98
+ ariaDescribedByUser,
99
+ hint !== void 0 ? hintId : void 0,
100
+ errorMessage && appearance === "error" ? errorId : void 0
101
+ );
102
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
103
+ label !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
104
+ "label",
105
+ {
106
+ htmlFor: controlId,
107
+ className: "mb-1 block text-sm font-medium text-slate-200",
108
+ children: label
109
+ }
110
+ ),
111
+ hint !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { id: hintId, className: "mb-1 text-xs text-slate-400", children: hint }),
112
+ /* @__PURE__ */ jsxRuntime.jsx(
113
+ "input",
114
+ {
115
+ ref,
116
+ id: controlId,
117
+ "data-slot": "input",
118
+ className: chunkZS5756ZC_js.cn(
119
+ chunkSCOIRBML_js.inputVariants({ appearance, size, ring, as: as ?? "input" }),
120
+ className
121
+ ),
122
+ "aria-invalid": ariaInvalid,
123
+ "aria-describedby": describedBy,
124
+ ...rest
125
+ }
126
+ ),
127
+ errorMessage && appearance === "error" && /* @__PURE__ */ jsxRuntime.jsx(
128
+ "p",
129
+ {
130
+ id: errorId,
131
+ className: "mt-2 pl-4 text-sm text-rose-500 wrap-break-word",
132
+ children: errorMessage
133
+ }
134
+ )
135
+ ] });
136
+ };
137
+ InputBase.displayName = "Input";
138
+ var Input = (props) => {
139
+ return /* @__PURE__ */ jsxRuntime.jsx(InputBase, { ...props });
140
+ };
141
+ Input.displayName = "Input";
142
+
143
+ exports.Input = Input;
144
+ //# sourceMappingURL=chunk-PTU5ZAYX.js.map
145
+ //# sourceMappingURL=chunk-PTU5ZAYX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/inputs/input-base.tsx","../src/ui/inputs/input.tsx"],"names":["useId","className","appearance","size","ring","ref","ariaInvalidProp","errorMessage","hint","label","id","as","ariaDescribedByUser","rest","controlId","errorId","hintId","ariaInvalid","describedBy","jsxs","Fragment","jsx","cn","inputVariants"],"mappings":"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","file":"chunk-PTU5ZAYX.js","sourcesContent":["\"use client\";\n\nimport { useId } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { InputProps } from \"./types\";\nimport { inputVariants } from \"./variants\";\n\nfunction mergeDescribedByIds(\n user: string | undefined,\n ...generated: (string | undefined)[]\n): string | undefined {\n const ids = [\n ...(user ?? \"\").split(/\\s+/).filter(Boolean),\n ...generated.filter((id): id is string => Boolean(id)),\n ];\n const unique = [...new Set(ids)];\n return unique.length > 0 ? unique.join(\" \") : undefined;\n}\n\nexport const InputBase = (props: InputProps) => {\n const generatedId = useId();\n\n if (props.as === \"textarea\") {\n const {\n className,\n appearance,\n size,\n ring = true,\n ref,\n \"aria-invalid\": ariaInvalidProp,\n errorMessage,\n hint,\n label,\n id,\n as,\n \"aria-describedby\": ariaDescribedByUser,\n ...rest\n } = props;\n\n const controlId = id ?? generatedId;\n const errorId = `${controlId}-error`;\n const hintId = `${controlId}-hint`;\n const ariaInvalid =\n ariaInvalidProp !== undefined\n ? ariaInvalidProp\n : appearance === \"error\"\n ? true\n : undefined;\n\n const describedBy = mergeDescribedByIds(\n ariaDescribedByUser,\n hint !== undefined ? hintId : undefined,\n errorMessage && appearance === \"error\" ? errorId : undefined,\n );\n\n return (\n <>\n {label !== undefined && (\n <label\n htmlFor={controlId}\n className=\"mb-1 block text-sm font-medium text-slate-200\"\n >\n {label}\n </label>\n )}\n {hint !== undefined && (\n <p id={hintId} className=\"mb-1 text-xs text-slate-400\">\n {hint}\n </p>\n )}\n <textarea\n ref={ref}\n id={controlId}\n data-slot=\"input\"\n className={cn(\n inputVariants({ appearance, size, ring, as }),\n className,\n )}\n aria-invalid={ariaInvalid}\n aria-describedby={describedBy}\n {...rest}\n />\n {errorMessage && appearance === \"error\" && (\n <p\n id={errorId}\n className=\"mt-2 pl-4 text-sm text-rose-500 wrap-break-word\"\n >\n {errorMessage}\n </p>\n )}\n </>\n );\n }\n\n const {\n className,\n appearance,\n size,\n ring = true,\n ref,\n \"aria-invalid\": ariaInvalidProp,\n errorMessage,\n hint,\n label,\n id,\n as,\n \"aria-describedby\": ariaDescribedByUser,\n ...rest\n } = props;\n\n const controlId = id ?? generatedId;\n const errorId = `${controlId}-error`;\n const hintId = `${controlId}-hint`;\n const ariaInvalid =\n ariaInvalidProp !== undefined\n ? ariaInvalidProp\n : appearance === \"error\"\n ? true\n : undefined;\n\n const describedBy = mergeDescribedByIds(\n ariaDescribedByUser,\n hint !== undefined ? hintId : undefined,\n errorMessage && appearance === \"error\" ? errorId : undefined,\n );\n\n return (\n <>\n {label !== undefined && (\n <label\n htmlFor={controlId}\n className=\"mb-1 block text-sm font-medium text-slate-200\"\n >\n {label}\n </label>\n )}\n {hint !== undefined && (\n <p id={hintId} className=\"mb-1 text-xs text-slate-400\">\n {hint}\n </p>\n )}\n <input\n ref={ref}\n id={controlId}\n data-slot=\"input\"\n className={cn(\n inputVariants({ appearance, size, ring, as: as ?? \"input\" }),\n className,\n )}\n aria-invalid={ariaInvalid}\n aria-describedby={describedBy}\n {...rest}\n />\n {errorMessage && appearance === \"error\" && (\n <p\n id={errorId}\n className=\"mt-2 pl-4 text-sm text-rose-500 wrap-break-word\"\n >\n {errorMessage}\n </p>\n )}\n </>\n );\n};\n\nInputBase.displayName = \"Input\";\n","import { InputBase } from \"./input-base\";\nimport type { InputProps } from \"./types\";\n\nexport const Input = (props: InputProps) => {\n return <InputBase {...props} />;\n};\n\nInput.displayName = \"Input\";\n"]}
@@ -0,0 +1,81 @@
1
+ import { useState, useCallback, useEffect, useMemo } from 'react';
2
+
3
+ // src/hooks/useVirtualList/useVirtualList.ts
4
+ function useVirtualList({
5
+ itemCount,
6
+ itemHeight,
7
+ overscan = 3
8
+ }) {
9
+ const [container, setContainer] = useState(null);
10
+ const [scrollTop, setScrollTop] = useState(0);
11
+ const [viewportHeight, setViewportHeight] = useState(0);
12
+ const setContainerRef = useCallback((node) => {
13
+ setContainer(node);
14
+ }, []);
15
+ useEffect(() => {
16
+ if (container == null) {
17
+ return;
18
+ }
19
+ const onScroll = () => {
20
+ setScrollTop(container.scrollTop);
21
+ };
22
+ const measure = () => {
23
+ setViewportHeight(container.clientHeight);
24
+ };
25
+ measure();
26
+ onScroll();
27
+ container.addEventListener("scroll", onScroll, { passive: true });
28
+ let observer;
29
+ if (typeof ResizeObserver !== "undefined") {
30
+ observer = new ResizeObserver(measure);
31
+ observer.observe(container);
32
+ }
33
+ return () => {
34
+ container.removeEventListener("scroll", onScroll);
35
+ observer?.disconnect();
36
+ };
37
+ }, [container]);
38
+ const safeItemCount = Math.max(0, Math.floor(itemCount));
39
+ const safeItemHeight = Math.max(1, itemHeight);
40
+ const safeOverscan = Math.max(0, Math.floor(overscan));
41
+ const totalHeight = safeItemCount * safeItemHeight;
42
+ const startIndex = safeItemCount === 0 ? 0 : Math.max(0, Math.floor(scrollTop / safeItemHeight) - safeOverscan);
43
+ const endIndex = safeItemCount === 0 ? -1 : Math.min(
44
+ safeItemCount - 1,
45
+ Math.ceil((scrollTop + viewportHeight) / safeItemHeight) - 1 + safeOverscan
46
+ );
47
+ const virtualItems = useMemo(() => {
48
+ const items = [];
49
+ for (let index = startIndex; index <= endIndex; index += 1) {
50
+ items.push({
51
+ index,
52
+ start: index * safeItemHeight,
53
+ size: safeItemHeight
54
+ });
55
+ }
56
+ return items;
57
+ }, [endIndex, safeItemHeight, startIndex]);
58
+ const scrollToIndex = useCallback(
59
+ (index) => {
60
+ if (container == null || safeItemCount === 0) {
61
+ return;
62
+ }
63
+ const clamped = Math.min(Math.max(index, 0), safeItemCount - 1);
64
+ container.scrollTop = clamped * safeItemHeight;
65
+ setScrollTop(container.scrollTop);
66
+ },
67
+ [container, safeItemCount, safeItemHeight]
68
+ );
69
+ return {
70
+ setContainerRef,
71
+ virtualItems,
72
+ totalHeight,
73
+ startIndex,
74
+ endIndex,
75
+ scrollToIndex
76
+ };
77
+ }
78
+
79
+ export { useVirtualList };
80
+ //# sourceMappingURL=chunk-QKO5DA4N.mjs.map
81
+ //# sourceMappingURL=chunk-QKO5DA4N.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useVirtualList/useVirtualList.ts"],"names":[],"mappings":";;;AAoDO,SAAS,cAAA,CAAe;AAAA,EAC7B,SAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,EAA+C;AAC7C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAA6B,IAAI,CAAA;AACnE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,CAAC,CAAA;AAC5C,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,CAAC,CAAA;AAEtD,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,IAAA,KAA6B;AAChE,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EACnB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,aAAa,IAAA,EAAM;AACrB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,YAAA,CAAa,UAAU,SAAS,CAAA;AAAA,IAClC,CAAA;AACA,IAAA,MAAM,UAAU,MAAM;AACpB,MAAA,iBAAA,CAAkB,UAAU,YAAY,CAAA;AAAA,IAC1C,CAAA;AACA,IAAA,OAAA,EAAQ;AACR,IAAA,QAAA,EAAS;AACT,IAAA,SAAA,CAAU,iBAAiB,QAAA,EAAU,QAAA,EAAU,EAAE,OAAA,EAAS,MAAM,CAAA;AAChE,IAAA,IAAI,QAAA;AACJ,IAAA,IAAI,OAAO,mBAAmB,WAAA,EAAa;AACzC,MAAA,QAAA,GAAW,IAAI,eAAe,OAAO,CAAA;AACrC,MAAA,QAAA,CAAS,QAAQ,SAAS,CAAA;AAAA,IAC5B;AACA,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,CAAU,mBAAA,CAAoB,UAAU,QAAQ,CAAA;AAChD,MAAA,QAAA,EAAU,UAAA,EAAW;AAAA,IACvB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,gBAAgB,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,KAAA,CAAM,SAAS,CAAC,CAAA;AACvD,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,UAAU,CAAA;AAC7C,EAAA,MAAM,eAAe,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAC,CAAA;AAErD,EAAA,MAAM,cAAc,aAAA,GAAgB,cAAA;AACpC,EAAA,MAAM,UAAA,GACJ,aAAA,KAAkB,CAAA,GACd,CAAA,GACA,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,SAAA,GAAY,cAAc,CAAA,GAAI,YAAY,CAAA;AACvE,EAAA,MAAM,QAAA,GACJ,aAAA,KAAkB,CAAA,GACd,EAAA,GACA,IAAA,CAAK,GAAA;AAAA,IACH,aAAA,GAAgB,CAAA;AAAA,IAChB,KAAK,IAAA,CAAA,CAAM,SAAA,GAAY,cAAA,IAAkB,cAAc,IACrD,CAAA,GACA;AAAA,GACJ;AAEN,EAAA,MAAM,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAA,MAAM,QAAuB,EAAC;AAC9B,IAAA,KAAA,IAAS,KAAA,GAAQ,UAAA,EAAY,KAAA,IAAS,QAAA,EAAU,SAAS,CAAA,EAAG;AAC1D,MAAA,KAAA,CAAM,IAAA,CAAK;AAAA,QACT,KAAA;AAAA,QACA,OAAO,KAAA,GAAQ,cAAA;AAAA,QACf,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH;AACA,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,EAAG,CAAC,QAAA,EAAU,cAAA,EAAgB,UAAU,CAAC,CAAA;AAEzC,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAAkB;AACjB,MAAA,IAAI,SAAA,IAAa,IAAA,IAAQ,aAAA,KAAkB,CAAA,EAAG;AAC5C,QAAA;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,KAAA,EAAO,CAAC,CAAA,EAAG,aAAA,GAAgB,CAAC,CAAA;AAC9D,MAAA,SAAA,CAAU,YAAY,OAAA,GAAU,cAAA;AAChC,MAAA,YAAA,CAAa,UAAU,SAAS,CAAA;AAAA,IAClC,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,aAAA,EAAe,cAAc;AAAA,GAC3C;AAEA,EAAA,OAAO;AAAA,IACL,eAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-QKO5DA4N.mjs","sourcesContent":["\"use client\";\n\nimport type { RefCallback } from \"react\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\n\nexport type VirtualItem = {\n /** Index into your data array. */\n index: number;\n /** Offset from the top of the scroll content in pixels (use for `translateY` / `top`). */\n start: number;\n /** Row height in pixels. */\n size: number;\n};\n\nexport type UseVirtualListParams = {\n /** Total number of rows in the list. */\n itemCount: number;\n /** Fixed height of every row in pixels (must be > 0). */\n itemHeight: number;\n /** Extra rows rendered above and below the viewport (default `3`). */\n overscan?: number;\n};\n\nexport type UseVirtualListResult = {\n /** Callback ref for the scrollable container (needs `overflow-y: auto` and a bounded height). */\n setContainerRef: RefCallback<HTMLElement>;\n /** The rows to render, each with its absolute `start` offset. */\n virtualItems: VirtualItem[];\n /** Height of the full list content; set it on an inner spacer element. */\n totalHeight: number;\n /** First rendered index (after overscan). */\n startIndex: number;\n /** Last rendered index (after overscan), `-1` when empty. */\n endIndex: number;\n /** Scroll the container so the given row is at the top. */\n scrollToIndex: (index: number) => void;\n};\n\n/**\n * Headless fixed-height list virtualization: renders only the rows visible in the\n * scroll container (plus `overscan`), so lists of tens of thousands of rows stay cheap.\n *\n * Markup recipe: outer container gets `setContainerRef` + `overflow-y: auto` and a height;\n * inside it, one relative spacer div with `height: totalHeight`; each virtual item is\n * absolutely positioned at `translateY(item.start)` with `height: item.size`.\n *\n * Viewport size tracks `ResizeObserver` (when available) and scroll position tracks a\n * passive `scroll` listener. For variable-height rows, reach for a dedicated virtualizer.\n *\n * @param params - {@link UseVirtualListParams}\n * @returns {@link UseVirtualListResult}\n */\nexport function useVirtualList({\n itemCount,\n itemHeight,\n overscan = 3,\n}: UseVirtualListParams): UseVirtualListResult {\n const [container, setContainer] = useState<HTMLElement | null>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const [viewportHeight, setViewportHeight] = useState(0);\n\n const setContainerRef = useCallback((node: HTMLElement | null) => {\n setContainer(node);\n }, []);\n\n useEffect(() => {\n if (container == null) {\n return;\n }\n const onScroll = () => {\n setScrollTop(container.scrollTop);\n };\n const measure = () => {\n setViewportHeight(container.clientHeight);\n };\n measure();\n onScroll();\n container.addEventListener(\"scroll\", onScroll, { passive: true });\n let observer: ResizeObserver | undefined;\n if (typeof ResizeObserver !== \"undefined\") {\n observer = new ResizeObserver(measure);\n observer.observe(container);\n }\n return () => {\n container.removeEventListener(\"scroll\", onScroll);\n observer?.disconnect();\n };\n }, [container]);\n\n const safeItemCount = Math.max(0, Math.floor(itemCount));\n const safeItemHeight = Math.max(1, itemHeight);\n const safeOverscan = Math.max(0, Math.floor(overscan));\n\n const totalHeight = safeItemCount * safeItemHeight;\n const startIndex =\n safeItemCount === 0\n ? 0\n : Math.max(0, Math.floor(scrollTop / safeItemHeight) - safeOverscan);\n const endIndex =\n safeItemCount === 0\n ? -1\n : Math.min(\n safeItemCount - 1,\n Math.ceil((scrollTop + viewportHeight) / safeItemHeight) -\n 1 +\n safeOverscan,\n );\n\n const virtualItems = useMemo(() => {\n const items: VirtualItem[] = [];\n for (let index = startIndex; index <= endIndex; index += 1) {\n items.push({\n index,\n start: index * safeItemHeight,\n size: safeItemHeight,\n });\n }\n return items;\n }, [endIndex, safeItemHeight, startIndex]);\n\n const scrollToIndex = useCallback(\n (index: number) => {\n if (container == null || safeItemCount === 0) {\n return;\n }\n const clamped = Math.min(Math.max(index, 0), safeItemCount - 1);\n container.scrollTop = clamped * safeItemHeight;\n setScrollTop(container.scrollTop);\n },\n [container, safeItemCount, safeItemHeight],\n );\n\n return {\n setContainerRef,\n virtualItems,\n totalHeight,\n startIndex,\n endIndex,\n scrollToIndex,\n };\n}\n"]}
@@ -0,0 +1,130 @@
1
+ 'use strict';
2
+
3
+ var chunkKOIXQXZB_js = require('./chunk-KOIXQXZB.js');
4
+ var chunkZS5756ZC_js = require('./chunk-ZS5756ZC.js');
5
+ var react = require('react');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ function resolveCheckboxState(checked, indeterminate) {
9
+ if (indeterminate) {
10
+ return "indeterminate";
11
+ }
12
+ return checked ? "checked" : "unchecked";
13
+ }
14
+ function CheckboxBase(props) {
15
+ const {
16
+ className,
17
+ rootClassName,
18
+ controlClassName,
19
+ indicatorClassName,
20
+ appearance,
21
+ size,
22
+ checked,
23
+ defaultChecked = false,
24
+ indeterminate,
25
+ onCheckedChange,
26
+ disabled,
27
+ children,
28
+ label,
29
+ id,
30
+ ref,
31
+ "aria-label": ariaLabel,
32
+ ...rest
33
+ } = props;
34
+ const generatedId = react.useId();
35
+ const controlId = id ?? generatedId;
36
+ const isControlled = checked !== void 0;
37
+ const [uncontrolled, setUncontrolled] = react.useState(defaultChecked);
38
+ const resolvedChecked = isControlled ? Boolean(checked) : uncontrolled;
39
+ const state = resolveCheckboxState(resolvedChecked, indeterminate);
40
+ const labelContent = label ?? children;
41
+ const hasVisibleLabel = labelContent !== void 0 && labelContent !== null && labelContent !== false;
42
+ const setChecked = react.useCallback(
43
+ (next) => {
44
+ if (!isControlled) {
45
+ setUncontrolled(next);
46
+ }
47
+ onCheckedChange?.(next);
48
+ },
49
+ [isControlled, onCheckedChange]
50
+ );
51
+ return /* @__PURE__ */ jsxRuntime.jsxs(
52
+ "label",
53
+ {
54
+ className: chunkZS5756ZC_js.cn(chunkKOIXQXZB_js.checkboxRootVariants({ size }), rootClassName, className),
55
+ "data-disabled": disabled ? "true" : void 0,
56
+ "data-state": state,
57
+ htmlFor: controlId,
58
+ children: [
59
+ /* @__PURE__ */ jsxRuntime.jsx(
60
+ "input",
61
+ {
62
+ ref,
63
+ id: controlId,
64
+ type: "checkbox",
65
+ "data-slot": "checkbox",
66
+ className: "peer sr-only",
67
+ checked: resolvedChecked,
68
+ disabled,
69
+ "aria-checked": indeterminate ? "mixed" : resolvedChecked,
70
+ "aria-label": ariaLabel ?? (hasVisibleLabel ? void 0 : "Checkbox"),
71
+ onChange: (event) => setChecked(event.currentTarget.checked),
72
+ ...rest
73
+ }
74
+ ),
75
+ /* @__PURE__ */ jsxRuntime.jsx(
76
+ "span",
77
+ {
78
+ "aria-hidden": "true",
79
+ className: chunkZS5756ZC_js.cn(
80
+ chunkKOIXQXZB_js.checkboxControlVariants({ appearance, size }),
81
+ controlClassName
82
+ ),
83
+ "data-slot": "checkbox-control",
84
+ children: state === "indeterminate" ? /* @__PURE__ */ jsxRuntime.jsx(
85
+ "svg",
86
+ {
87
+ viewBox: "0 0 16 16",
88
+ fill: "none",
89
+ className: chunkZS5756ZC_js.cn(
90
+ chunkKOIXQXZB_js.checkboxIndicatorVariants({ size }),
91
+ indicatorClassName
92
+ ),
93
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3.5 8H12.5", strokeWidth: "2.4", strokeLinecap: "round" })
94
+ }
95
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
96
+ "svg",
97
+ {
98
+ viewBox: "0 0 16 16",
99
+ fill: "none",
100
+ className: chunkZS5756ZC_js.cn(
101
+ chunkKOIXQXZB_js.checkboxIndicatorVariants({ size }),
102
+ indicatorClassName
103
+ ),
104
+ children: /* @__PURE__ */ jsxRuntime.jsx(
105
+ "path",
106
+ {
107
+ d: "M3.2 8.4L6.5 11.5L12.8 4.5",
108
+ strokeWidth: "2.2",
109
+ strokeLinecap: "round",
110
+ strokeLinejoin: "round"
111
+ }
112
+ )
113
+ }
114
+ )
115
+ }
116
+ ),
117
+ hasVisibleLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 leading-6", "data-slot": "checkbox-label", children: labelContent })
118
+ ]
119
+ }
120
+ );
121
+ }
122
+ CheckboxBase.displayName = "Checkbox";
123
+ function Checkbox(props) {
124
+ return /* @__PURE__ */ jsxRuntime.jsx(CheckboxBase, { ...props });
125
+ }
126
+ Checkbox.displayName = "Checkbox";
127
+
128
+ exports.Checkbox = Checkbox;
129
+ //# sourceMappingURL=chunk-T7PIKDUZ.js.map
130
+ //# sourceMappingURL=chunk-T7PIKDUZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/checkbox/checkbox-base.tsx","../src/ui/checkbox/checkbox.tsx"],"names":["useId","useState","useCallback","jsxs","cn","checkboxRootVariants","jsx","checkboxControlVariants","checkboxIndicatorVariants"],"mappings":"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","file":"chunk-T7PIKDUZ.js","sourcesContent":["\"use client\";\n\nimport { useCallback, useId, useState } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { CheckboxProps, CheckboxState } from \"./types\";\nimport {\n checkboxControlVariants,\n checkboxIndicatorVariants,\n checkboxRootVariants,\n} from \"./variants\";\n\nfunction resolveCheckboxState(\n checked: boolean,\n indeterminate: boolean | undefined,\n): CheckboxState {\n if (indeterminate) {\n return \"indeterminate\";\n }\n return checked ? \"checked\" : \"unchecked\";\n}\n\nexport function CheckboxBase(props: CheckboxProps) {\n const {\n className,\n rootClassName,\n controlClassName,\n indicatorClassName,\n appearance,\n size,\n checked,\n defaultChecked = false,\n indeterminate,\n onCheckedChange,\n disabled,\n children,\n label,\n id,\n ref,\n \"aria-label\": ariaLabel,\n ...rest\n } = props;\n const generatedId = useId();\n const controlId = id ?? generatedId;\n const isControlled = checked !== undefined;\n const [uncontrolled, setUncontrolled] = useState(defaultChecked);\n const resolvedChecked = isControlled ? Boolean(checked) : uncontrolled;\n const state = resolveCheckboxState(resolvedChecked, indeterminate);\n const labelContent = label ?? children;\n const hasVisibleLabel =\n labelContent !== undefined &&\n labelContent !== null &&\n labelContent !== false;\n\n const setChecked = useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolled(next);\n }\n onCheckedChange?.(next);\n },\n [isControlled, onCheckedChange],\n );\n\n return (\n <label\n className={cn(checkboxRootVariants({ size }), rootClassName, className)}\n data-disabled={disabled ? \"true\" : undefined}\n data-state={state}\n htmlFor={controlId}\n >\n <input\n ref={ref}\n id={controlId}\n type=\"checkbox\"\n data-slot=\"checkbox\"\n className=\"peer sr-only\"\n checked={resolvedChecked}\n disabled={disabled}\n aria-checked={indeterminate ? \"mixed\" : resolvedChecked}\n aria-label={ariaLabel ?? (hasVisibleLabel ? undefined : \"Checkbox\")}\n onChange={(event) => setChecked(event.currentTarget.checked)}\n {...rest}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n checkboxControlVariants({ appearance, size }),\n controlClassName,\n )}\n data-slot=\"checkbox-control\"\n >\n {state === \"indeterminate\" ? (\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className={cn(\n checkboxIndicatorVariants({ size }),\n indicatorClassName,\n )}\n >\n <path d=\"M3.5 8H12.5\" strokeWidth=\"2.4\" strokeLinecap=\"round\" />\n </svg>\n ) : (\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className={cn(\n checkboxIndicatorVariants({ size }),\n indicatorClassName,\n )}\n >\n <path\n d=\"M3.2 8.4L6.5 11.5L12.8 4.5\"\n strokeWidth=\"2.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </span>\n {hasVisibleLabel && (\n <span className=\"min-w-0 leading-6\" data-slot=\"checkbox-label\">\n {labelContent}\n </span>\n )}\n </label>\n );\n}\n\nCheckboxBase.displayName = \"Checkbox\";\n","import { CheckboxBase } from \"./checkbox-base\";\nimport type { CheckboxProps } from \"./types\";\n\nexport function Checkbox(props: CheckboxProps) {\n return <CheckboxBase {...props} />;\n}\n\nCheckbox.displayName = \"Checkbox\";\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-TDK5TVJE.mjs.map
3
+ //# sourceMappingURL=chunk-TDK5TVJE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-TDK5TVJE.mjs"}
@@ -1,31 +1,31 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkFBUY6K6S_js = require('./chunk-FBUY6K6S.js');
4
+ var chunkY7BU5RC4_js = require('./chunk-Y7BU5RC4.js');
4
5
  var chunkNDF3HORF_js = require('./chunk-NDF3HORF.js');
5
6
  var chunkUSLNTKVQ_js = require('./chunk-USLNTKVQ.js');
6
7
  var chunkD7ATXPVI_js = require('./chunk-D7ATXPVI.js');
7
8
  var chunkIEHY6KNM_js = require('./chunk-IEHY6KNM.js');
8
9
  var chunk3MK7CWEX_js = require('./chunk-3MK7CWEX.js');
10
+ var chunk22FJROCI_js = require('./chunk-22FJROCI.js');
9
11
  var chunkUJXFD4SK_js = require('./chunk-UJXFD4SK.js');
10
12
  var chunk3EJCQXGV_js = require('./chunk-3EJCQXGV.js');
11
13
  var chunk6KVTKYTB_js = require('./chunk-6KVTKYTB.js');
12
14
  var chunkL7W4NRK6_js = require('./chunk-L7W4NRK6.js');
13
15
  var chunkKWBGLH7G_js = require('./chunk-KWBGLH7G.js');
14
16
  var chunkOH5VOGNW_js = require('./chunk-OH5VOGNW.js');
15
- var chunkY7BU5RC4_js = require('./chunk-Y7BU5RC4.js');
17
+ var chunkWGN2CBG6_js = require('./chunk-WGN2CBG6.js');
16
18
  var chunkSRSRY5K2_js = require('./chunk-SRSRY5K2.js');
17
19
  var chunkUG3GF2BD_js = require('./chunk-UG3GF2BD.js');
18
20
  var chunkBZTAA3MK_js = require('./chunk-BZTAA3MK.js');
19
21
  var chunkPZ25OHJE_js = require('./chunk-PZ25OHJE.js');
20
22
  var chunkHOOZYA4N_js = require('./chunk-HOOZYA4N.js');
21
23
  var chunkCJCOURVM_js = require('./chunk-CJCOURVM.js');
22
- var chunk22FJROCI_js = require('./chunk-22FJROCI.js');
23
24
  var chunkKJMW7S5X_js = require('./chunk-KJMW7S5X.js');
24
25
  var chunk3CYJQ6KF_js = require('./chunk-3CYJQ6KF.js');
25
26
  var chunk3453DQNL_js = require('./chunk-3453DQNL.js');
26
27
  var chunkDYSXCJGL_js = require('./chunk-DYSXCJGL.js');
27
28
  var chunkA7MU6SFI_js = require('./chunk-A7MU6SFI.js');
28
- var chunkWGN2CBG6_js = require('./chunk-WGN2CBG6.js');
29
29
  var chunkNYO3W5GY_js = require('./chunk-NYO3W5GY.js');
30
30
  var chunkHNRCPZCK_js = require('./chunk-HNRCPZCK.js');
31
31
  var chunkJ2SUGU3X_js = require('./chunk-J2SUGU3X.js');
@@ -154,6 +154,13 @@ chunkPZ5AY32C_js.__export(design_system_exports, {
154
154
  zuiCopyButtonIconOnlySizes: () => chunk7DVECOO7_js.zuiCopyButtonIconOnlySizes,
155
155
  zuiCopyButtonSizes: () => chunk7DVECOO7_js.zuiCopyButtonSizes,
156
156
  zuiCssVariablePattern: () => chunkYPYPWALR_js.zuiCssVariablePattern,
157
+ zuiDataTableColumnPanelBase: () => zuiDataTableColumnPanelBase,
158
+ zuiDataTableRootBase: () => zuiDataTableRootBase,
159
+ zuiDataTableStateCellBase: () => zuiDataTableStateCellBase,
160
+ zuiDataTableStatusBase: () => zuiDataTableStatusBase,
161
+ zuiDataTableToolbarBase: () => zuiDataTableToolbarBase,
162
+ zuiDataTableToolbarGroupBase: () => zuiDataTableToolbarGroupBase,
163
+ zuiDataTableVirtualScrollBase: () => zuiDataTableVirtualScrollBase,
157
164
  zuiDisabledState: () => chunkYPYPWALR_js.zuiDisabledState,
158
165
  zuiDividerAppearances: () => chunkKJMW7S5X_js.zuiDividerAppearances,
159
166
  zuiDividerBase: () => chunkKJMW7S5X_js.zuiDividerBase,
@@ -454,6 +461,15 @@ var zuiButtonSizes = {
454
461
  icon: "h-10 w-10"
455
462
  };
456
463
 
464
+ // src/design-system/data-table.ts
465
+ var zuiDataTableRootBase = "w-full space-y-3 text-[color:var(--zui-data-table-fg,var(--zui-fg,oklch(37.2%_0.044_257.287)))] dark:text-[color:var(--zui-data-table-fg-dark,var(--zui-fg-dark,oklch(92.9%_0.013_255.508)))]";
466
+ var zuiDataTableToolbarBase = "flex flex-col gap-3 rounded-lg border border-[color:var(--zui-data-table-toolbar-border,var(--zui-border,#0000001a))] bg-[var(--zui-data-table-toolbar-bg,var(--zui-surface,#ffffff))] p-3 dark:border-[color:var(--zui-data-table-toolbar-border-dark,var(--zui-border-dark,#ffffff1a))] dark:bg-[var(--zui-data-table-toolbar-bg-dark,var(--zui-surface-dark,#020617))] sm:flex-row sm:items-center sm:justify-between";
467
+ var zuiDataTableToolbarGroupBase = "flex min-w-0 flex-wrap items-center gap-2";
468
+ var zuiDataTableColumnPanelBase = "absolute right-0 z-20 mt-2 grid min-w-48 gap-2 rounded-lg border border-[color:var(--zui-data-table-column-panel-border,var(--zui-border,#0000001a))] bg-[var(--zui-data-table-column-panel-bg,var(--zui-surface,#ffffff))] p-3 shadow-lg shadow-black/10 dark:border-[color:var(--zui-data-table-column-panel-border-dark,var(--zui-border-dark,#ffffff1a))] dark:bg-[var(--zui-data-table-column-panel-bg-dark,var(--zui-surface-dark,#020617))] dark:shadow-black/40";
469
+ var zuiDataTableStatusBase = "text-sm text-[color:var(--zui-data-table-muted-fg,var(--zui-muted-fg,oklch(55.4%_0.046_257.417)))] dark:text-[color:var(--zui-data-table-muted-fg-dark,var(--zui-muted-fg-dark,oklch(70.4%_0.04_256.788)))]";
470
+ var zuiDataTableStateCellBase = "p-8 text-center text-[color:var(--zui-data-table-state-fg,var(--zui-muted-fg,oklch(55.4%_0.046_257.417)))] dark:text-[color:var(--zui-data-table-state-fg-dark,var(--zui-muted-fg-dark,oklch(70.4%_0.04_256.788)))]";
471
+ var zuiDataTableVirtualScrollBase = "overflow-auto rounded-lg border border-[color:var(--zui-data-table-virtual-border,var(--zui-border,#0000001a))] dark:border-[color:var(--zui-data-table-virtual-border-dark,var(--zui-border-dark,#ffffff1a))]";
472
+
457
473
  // src/design-system/dynamic-stepper.ts
458
474
  var zuiDynamicStepperIndicatorToneClasses = {
459
475
  default: {
@@ -665,6 +681,13 @@ exports.design_system_exports = design_system_exports;
665
681
  exports.zuiButtonAppearances = zuiButtonAppearances;
666
682
  exports.zuiButtonBase = zuiButtonBase;
667
683
  exports.zuiButtonSizes = zuiButtonSizes;
684
+ exports.zuiDataTableColumnPanelBase = zuiDataTableColumnPanelBase;
685
+ exports.zuiDataTableRootBase = zuiDataTableRootBase;
686
+ exports.zuiDataTableStateCellBase = zuiDataTableStateCellBase;
687
+ exports.zuiDataTableStatusBase = zuiDataTableStatusBase;
688
+ exports.zuiDataTableToolbarBase = zuiDataTableToolbarBase;
689
+ exports.zuiDataTableToolbarGroupBase = zuiDataTableToolbarGroupBase;
690
+ exports.zuiDataTableVirtualScrollBase = zuiDataTableVirtualScrollBase;
668
691
  exports.zuiDynamicStepperIndicatorBase = zuiDynamicStepperIndicatorBase;
669
692
  exports.zuiDynamicStepperIndicatorSizes = zuiDynamicStepperIndicatorSizes;
670
693
  exports.zuiDynamicStepperIndicatorToneClasses = zuiDynamicStepperIndicatorToneClasses;
@@ -679,5 +702,5 @@ exports.zuiPaginationEllipsisSizes = zuiPaginationEllipsisSizes;
679
702
  exports.zuiPaginationListAppearances = zuiPaginationListAppearances;
680
703
  exports.zuiPaginationListBase = zuiPaginationListBase;
681
704
  exports.zuiPaginationListSizes = zuiPaginationListSizes;
682
- //# sourceMappingURL=chunk-VA6SB6NN.js.map
683
- //# sourceMappingURL=chunk-VA6SB6NN.js.map
705
+ //# sourceMappingURL=chunk-TJ2EWPER.js.map
706
+ //# sourceMappingURL=chunk-TJ2EWPER.js.map