@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.
- package/README.md +10 -8
- package/cli/cli.integration.test.ts +36 -0
- package/cli/index.mjs +43 -7
- package/cli/props.json +273 -0
- package/cli/registry.json +20 -0
- package/cli/rewrite-imports.mjs +29 -4
- package/cli/rewrite-imports.test.ts +35 -0
- package/dist/{chunk-QE7OJW4J.js → chunk-5ELR6MIN.js} +6 -6
- package/dist/{chunk-QE7OJW4J.js.map → chunk-5ELR6MIN.js.map} +1 -1
- package/dist/chunk-5FU57ZVQ.js +19 -0
- package/dist/{chunk-3W2UUKWP.js.map → chunk-5FU57ZVQ.js.map} +1 -1
- package/dist/chunk-74SKXGTM.js +4 -0
- package/dist/chunk-74SKXGTM.js.map +1 -0
- package/dist/{chunk-CHI6MBTI.mjs → chunk-7UXPXCKV.mjs} +3 -3
- package/dist/{chunk-CHI6MBTI.mjs.map → chunk-7UXPXCKV.mjs.map} +1 -1
- package/dist/chunk-CYKSS5S5.mjs +128 -0
- package/dist/chunk-CYKSS5S5.mjs.map +1 -0
- package/dist/chunk-DBNGLT5U.mjs +221 -0
- package/dist/chunk-DBNGLT5U.mjs.map +1 -0
- package/dist/{chunk-A4IB3C23.mjs → chunk-FUCW5GPE.mjs} +22 -6
- package/dist/chunk-FUCW5GPE.mjs.map +1 -0
- package/dist/chunk-G7FVHZRB.js +225 -0
- package/dist/chunk-G7FVHZRB.js.map +1 -0
- package/dist/chunk-HMDH4BQJ.js +123 -0
- package/dist/chunk-HMDH4BQJ.js.map +1 -0
- package/dist/chunk-I7EBE7BD.js +98 -0
- package/dist/chunk-I7EBE7BD.js.map +1 -0
- package/dist/{chunk-WWKAJHIV.mjs → chunk-KVSRUAXP.mjs} +3 -3
- package/dist/{chunk-WWKAJHIV.mjs.map → chunk-KVSRUAXP.mjs.map} +1 -1
- package/dist/chunk-LHBJD57K.mjs +143 -0
- package/dist/chunk-LHBJD57K.mjs.map +1 -0
- package/dist/chunk-OYAJG2BO.js +83 -0
- package/dist/chunk-OYAJG2BO.js.map +1 -0
- package/dist/chunk-PTU5ZAYX.js +145 -0
- package/dist/chunk-PTU5ZAYX.js.map +1 -0
- package/dist/chunk-QKO5DA4N.mjs +81 -0
- package/dist/chunk-QKO5DA4N.mjs.map +1 -0
- package/dist/chunk-T7PIKDUZ.js +130 -0
- package/dist/chunk-T7PIKDUZ.js.map +1 -0
- package/dist/chunk-TDK5TVJE.mjs +3 -0
- package/dist/chunk-TDK5TVJE.mjs.map +1 -0
- package/dist/{chunk-VA6SB6NN.js → chunk-TJ2EWPER.js} +28 -5
- package/dist/chunk-TJ2EWPER.js.map +1 -0
- package/dist/chunk-VBNW2B4D.mjs +3 -0
- package/dist/chunk-VBNW2B4D.mjs.map +1 -0
- package/dist/chunk-W6DO36XD.mjs +96 -0
- package/dist/chunk-W6DO36XD.mjs.map +1 -0
- package/dist/chunk-XR3J46TZ.js +4 -0
- package/dist/chunk-XR3J46TZ.js.map +1 -0
- package/dist/chunk-ZOHCADDL.mjs +121 -0
- package/dist/chunk-ZOHCADDL.mjs.map +1 -0
- package/dist/design-system/data-table.d.ts +8 -0
- package/dist/design-system/data-table.d.ts.map +1 -0
- package/dist/design-system/facade.js +5 -5
- package/dist/design-system/facade.mjs +4 -4
- package/dist/design-system/index.d.ts +1 -0
- package/dist/design-system/index.d.ts.map +1 -1
- package/dist/hooks/useTableFilter.js +6 -116
- package/dist/hooks/useTableFilter.js.map +1 -1
- package/dist/hooks/useTableFilter.mjs +1 -118
- package/dist/hooks/useTableFilter.mjs.map +1 -1
- package/dist/hooks/useTableSort.js +6 -91
- package/dist/hooks/useTableSort.js.map +1 -1
- package/dist/hooks/useTableSort.mjs +1 -93
- package/dist/hooks/useTableSort.mjs.map +1 -1
- package/dist/hooks/useVirtualList.js +6 -76
- package/dist/hooks/useVirtualList.js.map +1 -1
- package/dist/hooks/useVirtualList.mjs +1 -78
- package/dist/hooks/useVirtualList.mjs.map +1 -1
- package/dist/ui/buttons/animated.js +7 -7
- package/dist/ui/buttons/animated.mjs +5 -5
- package/dist/ui/buttons.js +9 -8
- package/dist/ui/buttons.mjs +7 -6
- package/dist/ui/checkbox.js +7 -123
- package/dist/ui/checkbox.js.map +1 -1
- package/dist/ui/checkbox.mjs +2 -126
- package/dist/ui/checkbox.mjs.map +1 -1
- package/dist/ui/data-table/data-table-base.d.ts +6 -0
- package/dist/ui/data-table/data-table-base.d.ts.map +1 -0
- package/dist/ui/data-table/data-table.d.ts +6 -0
- package/dist/ui/data-table/data-table.d.ts.map +1 -0
- package/dist/ui/data-table/index.d.ts +4 -0
- package/dist/ui/data-table/index.d.ts.map +1 -0
- package/dist/ui/data-table/types.d.ts +92 -0
- package/dist/ui/data-table/types.d.ts.map +1 -0
- package/dist/ui/data-table/variants.d.ts +8 -0
- package/dist/ui/data-table/variants.d.ts.map +1 -0
- package/dist/ui/data-table.js +620 -0
- package/dist/ui/data-table.js.map +1 -0
- package/dist/ui/data-table.mjs +611 -0
- package/dist/ui/data-table.mjs.map +1 -0
- package/dist/ui/dynamic-stepper.js +17 -17
- package/dist/ui/dynamic-stepper.mjs +6 -6
- package/dist/ui/inputs.js +7 -138
- package/dist/ui/inputs.js.map +1 -1
- package/dist/ui/inputs.mjs +2 -141
- package/dist/ui/inputs.mjs.map +1 -1
- package/dist/ui/pagination.js +19 -220
- package/dist/ui/pagination.js.map +1 -1
- package/dist/ui/pagination.mjs +7 -222
- package/dist/ui/pagination.mjs.map +1 -1
- package/dist/ui/table.js +1 -0
- package/dist/ui/table.mjs +1 -0
- package/package.json +1 -1
- package/src/design-system/data-table.ts +20 -0
- package/src/design-system/index.ts +1 -0
- package/src/ui/data-table/data-table-base.tsx +701 -0
- package/src/ui/data-table/data-table.test.tsx +389 -0
- package/src/ui/data-table/data-table.tsx +11 -0
- package/src/ui/data-table/index.ts +24 -0
- package/src/ui/data-table/types.ts +121 -0
- package/src/ui/data-table/variants.ts +21 -0
- package/dist/chunk-3W2UUKWP.js +0 -19
- package/dist/chunk-A4IB3C23.mjs.map +0 -1
- 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":"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","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":";;;;;;;AAaA,SAAS,oBAAA,CACP,SACA,aAAA,EACe;AACf,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,OAAO,eAAA;AAAA,EACT;AACA,EAAA,OAAO,UAAU,SAAA,GAAY,WAAA;AAC/B;AAEO,SAAS,aAAa,KAAA,EAAsB;AACjD,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA;AAAA,IACA,kBAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,cAAA,GAAiB,KAAA;AAAA,IACjB,aAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,EAAA;AAAA,IACA,GAAA;AAAA,IACA,YAAA,EAAc,SAAA;AAAA,IACd,GAAG;AAAA,GACL,GAAI,KAAA;AACJ,EAAA,MAAM,cAAcA,WAAA,EAAM;AAC1B,EAAA,MAAM,YAAY,EAAA,IAAM,WAAA;AACxB,EAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIC,eAAS,cAAc,CAAA;AAC/D,EAAA,MAAM,eAAA,GAAkB,YAAA,GAAe,OAAA,CAAQ,OAAO,CAAA,GAAI,YAAA;AAC1D,EAAA,MAAM,KAAA,GAAQ,oBAAA,CAAqB,eAAA,EAAiB,aAAa,CAAA;AACjE,EAAA,MAAM,eAAe,KAAA,IAAS,QAAA;AAC9B,EAAA,MAAM,eAAA,GACJ,YAAA,KAAiB,MAAA,IACjB,YAAA,KAAiB,QACjB,YAAA,KAAiB,KAAA;AAEnB,EAAA,MAAM,UAAA,GAAaC,iBAAA;AAAA,IACjB,CAAC,IAAA,KAAkB;AACjB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,MACtB;AACA,MAAA,eAAA,GAAkB,IAAI,CAAA;AAAA,IACxB,CAAA;AAAA,IACA,CAAC,cAAc,eAAe;AAAA,GAChC;AAEA,EAAA,uBACEC,eAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,oBAAGC,qCAAA,CAAqB,EAAE,MAAM,CAAA,EAAG,eAAe,SAAS,CAAA;AAAA,MACtE,eAAA,EAAe,WAAW,MAAA,GAAS,MAAA;AAAA,MACnC,YAAA,EAAY,KAAA;AAAA,MACZ,OAAA,EAAS,SAAA;AAAA,MAET,QAAA,EAAA;AAAA,wBAAAC,cAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,EAAA,EAAI,SAAA;AAAA,YACJ,IAAA,EAAK,UAAA;AAAA,YACL,WAAA,EAAU,UAAA;AAAA,YACV,SAAA,EAAU,cAAA;AAAA,YACV,OAAA,EAAS,eAAA;AAAA,YACT,QAAA;AAAA,YACA,cAAA,EAAc,gBAAgB,OAAA,GAAU,eAAA;AAAA,YACxC,YAAA,EAAY,SAAA,KAAc,eAAA,GAAkB,MAAA,GAAY,UAAA,CAAA;AAAA,YACxD,UAAU,CAAC,KAAA,KAAU,UAAA,CAAW,KAAA,CAAM,cAAc,OAAO,CAAA;AAAA,YAC1D,GAAG;AAAA;AAAA,SACN;AAAA,wBACAA,cAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAWF,mBAAA;AAAA,cACTG,wCAAA,CAAwB,EAAE,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,cAC5C;AAAA,aACF;AAAA,YACA,WAAA,EAAU,kBAAA;AAAA,YAET,oBAAU,eAAA,mBACTD,cAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,WAAA;AAAA,gBACR,IAAA,EAAK,MAAA;AAAA,gBACL,SAAA,EAAWF,mBAAA;AAAA,kBACTI,0CAAA,CAA0B,EAAE,IAAA,EAAM,CAAA;AAAA,kBAClC;AAAA,iBACF;AAAA,gBAEA,yCAAC,MAAA,EAAA,EAAK,CAAA,EAAE,eAAc,WAAA,EAAY,KAAA,EAAM,eAAc,OAAA,EAAQ;AAAA;AAAA,aAChE,mBAEAF,cAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,WAAA;AAAA,gBACR,IAAA,EAAK,MAAA;AAAA,gBACL,SAAA,EAAWF,mBAAA;AAAA,kBACTI,0CAAA,CAA0B,EAAE,IAAA,EAAM,CAAA;AAAA,kBAClC;AAAA,iBACF;AAAA,gBAEA,QAAA,kBAAAF,cAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,CAAA,EAAE,4BAAA;AAAA,oBACF,WAAA,EAAY,KAAA;AAAA,oBACZ,aAAA,EAAc,OAAA;AAAA,oBACd,cAAA,EAAe;AAAA;AAAA;AACjB;AAAA;AACF;AAAA,SAEJ;AAAA,QACC,mCACCA,cAAA,CAAC,MAAA,EAAA,EAAK,WAAU,mBAAA,EAAoB,WAAA,EAAU,kBAC3C,QAAA,EAAA,YAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAEA,YAAA,CAAa,WAAA,GAAc,UAAA;AChIpB,SAAS,SAAS,KAAA,EAAsB;AAC7C,EAAA,uBAAOA,cAAAA,CAAC,YAAA,EAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AAClC;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","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 @@
|
|
|
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
|
|
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-
|
|
683
|
-
//# sourceMappingURL=chunk-
|
|
705
|
+
//# sourceMappingURL=chunk-TJ2EWPER.js.map
|
|
706
|
+
//# sourceMappingURL=chunk-TJ2EWPER.js.map
|