@mdigital_ui/ui 0.2.6 → 0.2.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/LICENSE +21 -0
- package/README.md +1023 -341
- package/dist/accordion/index.js +3 -3
- package/dist/avatar/index.js +4 -0
- package/dist/avatar/index.js.map +1 -0
- package/dist/badge/index.js +3 -3
- package/dist/breadcrumbs/index.js +5 -5
- package/dist/button/index.js +4 -4
- package/dist/button-group/index.js +2 -2
- package/dist/card/index.js +2 -2
- package/dist/carousel/index.js +2 -2
- package/dist/cascader/index.js +2 -2
- package/dist/chart/index.js +2 -2
- package/dist/checkbox/index.js +3 -3
- package/dist/checkbox-group/index.js +2 -2
- package/dist/{chunk-23BPDLT4.js → chunk-27QEPVKU.js} +42 -22
- package/dist/chunk-27QEPVKU.js.map +1 -0
- package/dist/{chunk-IRNJZ754.js → chunk-2J57G7XG.js} +76 -18
- package/dist/chunk-2J57G7XG.js.map +1 -0
- package/dist/{chunk-SOIF4SHB.js → chunk-2NYVRAG4.js} +24 -15
- package/dist/chunk-2NYVRAG4.js.map +1 -0
- package/dist/{chunk-3WVJE5MF.js → chunk-2OUGJBXK.js} +19 -12
- package/dist/chunk-2OUGJBXK.js.map +1 -0
- package/dist/{chunk-YII4K64U.js → chunk-2WZVD7P3.js} +36 -10
- package/dist/chunk-2WZVD7P3.js.map +1 -0
- package/dist/{chunk-7ODPSHIQ.js → chunk-3UCZ4GMN.js} +10 -4
- package/dist/chunk-3UCZ4GMN.js.map +1 -0
- package/dist/{chunk-7YPX6NJK.js → chunk-4LSKRZOT.js} +12 -7
- package/dist/chunk-4LSKRZOT.js.map +1 -0
- package/dist/{chunk-R2FZO7AM.js → chunk-4SQOFZ3N.js} +26 -9
- package/dist/chunk-4SQOFZ3N.js.map +1 -0
- package/dist/chunk-5PUATOLR.js +127 -0
- package/dist/chunk-5PUATOLR.js.map +1 -0
- package/dist/{chunk-555KXZRK.js → chunk-6TMOKYR7.js} +6 -4
- package/dist/chunk-6TMOKYR7.js.map +1 -0
- package/dist/{chunk-6IPISGTP.js → chunk-7UCNBMCV.js} +102 -27
- package/dist/chunk-7UCNBMCV.js.map +1 -0
- package/dist/{chunk-JFGLDCAK.js → chunk-AQYOVYPS.js} +19 -7
- package/dist/chunk-AQYOVYPS.js.map +1 -0
- package/dist/{chunk-Y2CXG3PT.js → chunk-C5YO5VZS.js} +8 -8
- package/dist/chunk-C5YO5VZS.js.map +1 -0
- package/dist/{chunk-7TN4PGYF.js → chunk-CHGJX5F2.js} +49 -33
- package/dist/chunk-CHGJX5F2.js.map +1 -0
- package/dist/{chunk-22FIGRGO.js → chunk-CK6A2R66.js} +31 -7
- package/dist/chunk-CK6A2R66.js.map +1 -0
- package/dist/{chunk-INH7KYCK.js → chunk-CMGCJXE5.js} +275 -95
- package/dist/chunk-CMGCJXE5.js.map +1 -0
- package/dist/{chunk-6MYKJE6A.js → chunk-CSRMVLPR.js} +109 -27
- package/dist/chunk-CSRMVLPR.js.map +1 -0
- package/dist/{chunk-EFMKUCGX.js → chunk-DH7R6NBG.js} +8 -5
- package/dist/chunk-DH7R6NBG.js.map +1 -0
- package/dist/{chunk-7BUNJYZO.js → chunk-FEMHXG2P.js} +22 -6
- package/dist/chunk-FEMHXG2P.js.map +1 -0
- package/dist/chunk-FIGSNRWY.js +382 -0
- package/dist/chunk-FIGSNRWY.js.map +1 -0
- package/dist/{chunk-JGQOEAWL.js → chunk-FVTMKQUE.js} +5 -3
- package/dist/chunk-FVTMKQUE.js.map +1 -0
- package/dist/{chunk-QVCGNOBE.js → chunk-GBVIACYQ.js} +78 -31
- package/dist/chunk-GBVIACYQ.js.map +1 -0
- package/dist/chunk-H47C2ENJ.js +215 -0
- package/dist/chunk-H47C2ENJ.js.map +1 -0
- package/dist/chunk-HWFI4GJE.js +130 -0
- package/dist/chunk-HWFI4GJE.js.map +1 -0
- package/dist/chunk-IA42ELUP.js +72 -0
- package/dist/chunk-IA42ELUP.js.map +1 -0
- package/dist/{chunk-SGMIDNPI.js → chunk-INQI3UUI.js} +73 -19
- package/dist/chunk-INQI3UUI.js.map +1 -0
- package/dist/{chunk-IHKPZOE5.js → chunk-J525ROGL.js} +6 -4
- package/dist/chunk-J525ROGL.js.map +1 -0
- package/dist/{chunk-AVPPV5OM.js → chunk-JLS4MBHN.js} +6 -4
- package/dist/chunk-JLS4MBHN.js.map +1 -0
- package/dist/{chunk-GGREAJO5.js → chunk-KTHWXHDN.js} +10 -5
- package/dist/chunk-KTHWXHDN.js.map +1 -0
- package/dist/{chunk-35K7N4JT.js → chunk-LMR7TKDJ.js} +17 -6
- package/dist/chunk-LMR7TKDJ.js.map +1 -0
- package/dist/{chunk-BYWYC7RC.js → chunk-MRFCITKK.js} +19 -10
- package/dist/chunk-MRFCITKK.js.map +1 -0
- package/dist/{chunk-TG2AECIN.js → chunk-MXDTUN3V.js} +22 -9
- package/dist/chunk-MXDTUN3V.js.map +1 -0
- package/dist/{chunk-2OGZENFC.js → chunk-NGYLRX6F.js} +2 -16
- package/dist/chunk-NGYLRX6F.js.map +1 -0
- package/dist/{chunk-TUTOU4X6.js → chunk-NTPWR57C.js} +6 -135
- package/dist/chunk-NTPWR57C.js.map +1 -0
- package/dist/{chunk-GFQXGLFD.js → chunk-OWXQ45GS.js} +82 -62
- package/dist/chunk-OWXQ45GS.js.map +1 -0
- package/dist/{chunk-L6EVOPWH.js → chunk-P6A75RAH.js} +6 -4
- package/dist/chunk-P6A75RAH.js.map +1 -0
- package/dist/{chunk-SYDNDYZJ.js → chunk-PXOHJJBE.js} +22 -9
- package/dist/chunk-PXOHJJBE.js.map +1 -0
- package/dist/{chunk-HWSLJGT7.js → chunk-Q57THXIU.js} +28 -10
- package/dist/chunk-Q57THXIU.js.map +1 -0
- package/dist/{chunk-NQB4V5P7.js → chunk-QDHGE7IF.js} +5 -5
- package/dist/chunk-QDHGE7IF.js.map +1 -0
- package/dist/{chunk-CPPFXCNB.js → chunk-QKSDVYKF.js} +4 -4
- package/dist/chunk-QKSDVYKF.js.map +1 -0
- package/dist/{chunk-DP6AWUH5.js → chunk-ROA7BYGB.js} +49 -19
- package/dist/chunk-ROA7BYGB.js.map +1 -0
- package/dist/{chunk-XG3KLPPS.js → chunk-RPIJ2KY7.js} +9 -4
- package/dist/chunk-RPIJ2KY7.js.map +1 -0
- package/dist/{chunk-C2MZL644.js → chunk-RW4RW4DV.js} +80 -30
- package/dist/chunk-RW4RW4DV.js.map +1 -0
- package/dist/chunk-RYKVZFGB.js +607 -0
- package/dist/chunk-RYKVZFGB.js.map +1 -0
- package/dist/chunk-SAVEKACZ.js +552 -0
- package/dist/chunk-SAVEKACZ.js.map +1 -0
- package/dist/chunk-SDNT2JGC.js +143 -0
- package/dist/chunk-SDNT2JGC.js.map +1 -0
- package/dist/{chunk-SMVVCZNM.js → chunk-SGRACNBP.js} +12 -7
- package/dist/chunk-SGRACNBP.js.map +1 -0
- package/dist/{chunk-PQZB43VJ.js → chunk-TTEBZZ3T.js} +28 -11
- package/dist/chunk-TTEBZZ3T.js.map +1 -0
- package/dist/{chunk-HBEJ4S2Y.js → chunk-US4ZCMNU.js} +19 -13
- package/dist/chunk-US4ZCMNU.js.map +1 -0
- package/dist/chunk-UUP7YGOS.js +299 -0
- package/dist/chunk-UUP7YGOS.js.map +1 -0
- package/dist/{chunk-MDY3HCRC.js → chunk-VUBU7Y4F.js} +47 -18
- package/dist/chunk-VUBU7Y4F.js.map +1 -0
- package/dist/chunk-WUBMNJGC.js +141 -0
- package/dist/chunk-WUBMNJGC.js.map +1 -0
- package/dist/{chunk-TWZ5LXLL.js → chunk-WVG3QQDN.js} +45 -16
- package/dist/chunk-WVG3QQDN.js.map +1 -0
- package/dist/{chunk-NZA526GC.js → chunk-WZ2KDHFP.js} +16 -13
- package/dist/chunk-WZ2KDHFP.js.map +1 -0
- package/dist/{chunk-O2VJ6KP4.js → chunk-X5SCI7KH.js} +190 -142
- package/dist/chunk-X5SCI7KH.js.map +1 -0
- package/dist/{chunk-DV5J5NLI.js → chunk-XJCWPPMM.js} +8 -5
- package/dist/chunk-XJCWPPMM.js.map +1 -0
- package/dist/{chunk-ARK3EROZ.js → chunk-YAAV7FQG.js} +20 -12
- package/dist/chunk-YAAV7FQG.js.map +1 -0
- package/dist/{chunk-MLNIKNLI.js → chunk-YOG5GXIC.js} +57 -11
- package/dist/chunk-YOG5GXIC.js.map +1 -0
- package/dist/chunk-Z5VJ6MJP.js +234 -0
- package/dist/chunk-Z5VJ6MJP.js.map +1 -0
- package/dist/{chunk-77YTCM7G.js → chunk-ZC3E3PWH.js} +75 -32
- package/dist/chunk-ZC3E3PWH.js.map +1 -0
- package/dist/clipboard/index.js +2 -2
- package/dist/collapse/index.js +2 -2
- package/dist/command/index.js +3 -3
- package/dist/context-menu/index.js +4 -0
- package/dist/context-menu/index.js.map +1 -0
- package/dist/date-picker/index.js +4 -4
- package/dist/descriptions/index.js +2 -2
- package/dist/divider/index.js +4 -0
- package/dist/divider/index.js.map +1 -0
- package/dist/drawer/index.js +2 -2
- package/dist/dropdown/index.js +4 -4
- package/dist/empty/index.js +2 -2
- package/dist/fetching-overlay/index.js +4 -4
- package/dist/grid/index.js +2 -2
- package/dist/image/index.js +2 -2
- package/dist/index.d.ts +1242 -161
- package/dist/index.js +63 -883
- package/dist/index.js.map +1 -1
- package/dist/input/index.js +4 -4
- package/dist/input-group/index.js +2 -2
- package/dist/input-otp/index.js +2 -2
- package/dist/input-password/index.js +5 -5
- package/dist/kbd/index.js +3 -3
- package/dist/modal/index.js +2 -2
- package/dist/multi-select/index.js +4 -4
- package/dist/notification/index.js +3 -3
- package/dist/pagination/index.js +2 -2
- package/dist/popover/index.js +3 -3
- package/dist/progress/index.js +2 -2
- package/dist/radio/index.js +3 -3
- package/dist/radio-group/index.js +2 -2
- package/dist/rating/index.js +2 -2
- package/dist/ribbon/index.js +2 -2
- package/dist/select/index.js +5 -5
- package/dist/skeleton/index.js +3 -3
- package/dist/slider/index.js +2 -2
- package/dist/spinner/index.js +3 -3
- package/dist/stepper/index.js +2 -2
- package/dist/styles/base.css +169 -99
- package/dist/styles/global.css +1295 -721
- package/dist/styles/themes/dark.css +3 -1
- package/dist/styles/themes/light.css +3 -1
- package/dist/styles/themes/presets/corporate.css +126 -0
- package/dist/styles/themes/presets/minimal.css +126 -0
- package/dist/styles/themes/presets/vibrant.css +126 -0
- package/dist/switch/index.js +3 -3
- package/dist/table/index.js +10 -10
- package/dist/tabs/index.js +3 -3
- package/dist/tag/index.js +5 -0
- package/dist/tag/index.js.map +1 -0
- package/dist/textarea/index.js +2 -2
- package/dist/theme/index.js +3 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/toggle/index.js +2 -2
- package/dist/toggle-group/index.js +2 -2
- package/dist/tooltip/index.js +3 -3
- package/dist/transfer/index.js +4 -4
- package/dist/tree/index.js +2 -2
- package/dist/tree-select/index.js +5 -5
- package/dist/upload/index.js +2 -2
- package/package.json +460 -72
- package/dist/chunk-22FIGRGO.js.map +0 -1
- package/dist/chunk-23BPDLT4.js.map +0 -1
- package/dist/chunk-2OGZENFC.js.map +0 -1
- package/dist/chunk-35K7N4JT.js.map +0 -1
- package/dist/chunk-3QKPSJTV.js +0 -120
- package/dist/chunk-3QKPSJTV.js.map +0 -1
- package/dist/chunk-3WVJE5MF.js.map +0 -1
- package/dist/chunk-555KXZRK.js.map +0 -1
- package/dist/chunk-6IPISGTP.js.map +0 -1
- package/dist/chunk-6MYKJE6A.js.map +0 -1
- package/dist/chunk-6PFBSVLK.js +0 -39
- package/dist/chunk-6PFBSVLK.js.map +0 -1
- package/dist/chunk-77YTCM7G.js.map +0 -1
- package/dist/chunk-7BUNJYZO.js.map +0 -1
- package/dist/chunk-7ODPSHIQ.js.map +0 -1
- package/dist/chunk-7TN4PGYF.js.map +0 -1
- package/dist/chunk-7YPX6NJK.js.map +0 -1
- package/dist/chunk-ARK3EROZ.js.map +0 -1
- package/dist/chunk-AVPPV5OM.js.map +0 -1
- package/dist/chunk-BYWYC7RC.js.map +0 -1
- package/dist/chunk-C2MZL644.js.map +0 -1
- package/dist/chunk-CPPFXCNB.js.map +0 -1
- package/dist/chunk-DP6AWUH5.js.map +0 -1
- package/dist/chunk-DV5J5NLI.js.map +0 -1
- package/dist/chunk-EFMKUCGX.js.map +0 -1
- package/dist/chunk-GFQXGLFD.js.map +0 -1
- package/dist/chunk-GGREAJO5.js.map +0 -1
- package/dist/chunk-GH3CNX5N.js +0 -178
- package/dist/chunk-GH3CNX5N.js.map +0 -1
- package/dist/chunk-HBEJ4S2Y.js.map +0 -1
- package/dist/chunk-HWSLJGT7.js.map +0 -1
- package/dist/chunk-IHKPZOE5.js.map +0 -1
- package/dist/chunk-INH7KYCK.js.map +0 -1
- package/dist/chunk-IRNJZ754.js.map +0 -1
- package/dist/chunk-IUUEYOMN.js +0 -470
- package/dist/chunk-IUUEYOMN.js.map +0 -1
- package/dist/chunk-JFGLDCAK.js.map +0 -1
- package/dist/chunk-JGQOEAWL.js.map +0 -1
- package/dist/chunk-L6EVOPWH.js.map +0 -1
- package/dist/chunk-LSQLUYTD.js +0 -192
- package/dist/chunk-LSQLUYTD.js.map +0 -1
- package/dist/chunk-MDY3HCRC.js.map +0 -1
- package/dist/chunk-MLNIKNLI.js.map +0 -1
- package/dist/chunk-NQB4V5P7.js.map +0 -1
- package/dist/chunk-NZA526GC.js.map +0 -1
- package/dist/chunk-O2VJ6KP4.js.map +0 -1
- package/dist/chunk-PQZB43VJ.js.map +0 -1
- package/dist/chunk-QVCGNOBE.js.map +0 -1
- package/dist/chunk-R2FZO7AM.js.map +0 -1
- package/dist/chunk-SGMIDNPI.js.map +0 -1
- package/dist/chunk-SMVVCZNM.js.map +0 -1
- package/dist/chunk-SOIF4SHB.js.map +0 -1
- package/dist/chunk-SYDNDYZJ.js.map +0 -1
- package/dist/chunk-TG2AECIN.js.map +0 -1
- package/dist/chunk-TIMRHEKH.js +0 -452
- package/dist/chunk-TIMRHEKH.js.map +0 -1
- package/dist/chunk-TUTOU4X6.js.map +0 -1
- package/dist/chunk-TWZ5LXLL.js.map +0 -1
- package/dist/chunk-XG3KLPPS.js.map +0 -1
- package/dist/chunk-Y2CXG3PT.js.map +0 -1
- package/dist/chunk-YII4K64U.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-NGYLRX6F.js';
|
|
2
2
|
import { cva } from 'class-variance-authority';
|
|
3
3
|
import { ChevronRight, Check, Minus } from 'lucide-react';
|
|
4
4
|
import React from 'react';
|
|
@@ -55,7 +55,8 @@ var Tree = React.memo(
|
|
|
55
55
|
showLine = false,
|
|
56
56
|
showIcon = true,
|
|
57
57
|
defaultExpandAll = false,
|
|
58
|
-
className
|
|
58
|
+
className,
|
|
59
|
+
classNames
|
|
59
60
|
}) => {
|
|
60
61
|
const [internalExpandedKeys, setInternalExpandedKeys] = React.useState(defaultExpandAll ? getAllKeys(data) : defaultExpandedKeys);
|
|
61
62
|
const [internalCheckedKeys, setInternalCheckedKeys] = React.useState(defaultCheckedKeys);
|
|
@@ -217,17 +218,23 @@ var Tree = React.memo(
|
|
|
217
218
|
return /* @__PURE__ */ jsx(
|
|
218
219
|
"div",
|
|
219
220
|
{
|
|
220
|
-
className:
|
|
221
|
+
className: cn(
|
|
222
|
+
"tree_node",
|
|
223
|
+
"relative animate-in fade-in slide-in-from-top-1 duration-200",
|
|
224
|
+
classNames?.node
|
|
225
|
+
),
|
|
221
226
|
children: /* @__PURE__ */ jsxs(
|
|
222
227
|
"div",
|
|
223
228
|
{
|
|
224
229
|
className: cn(
|
|
230
|
+
"tree_nodeContent",
|
|
225
231
|
treeItemVariants({
|
|
226
232
|
size,
|
|
227
233
|
disabled: !!node.disabled,
|
|
228
234
|
selected: isSelected
|
|
229
235
|
}),
|
|
230
|
-
className
|
|
236
|
+
className,
|
|
237
|
+
classNames?.nodeContent
|
|
231
238
|
),
|
|
232
239
|
children: [
|
|
233
240
|
Array.from({ length: level }).map((_, i) => {
|
|
@@ -249,7 +256,11 @@ var Tree = React.memo(
|
|
|
249
256
|
e.stopPropagation();
|
|
250
257
|
handleExpand(node.key);
|
|
251
258
|
},
|
|
252
|
-
className:
|
|
259
|
+
className: cn(
|
|
260
|
+
"tree_expandIcon",
|
|
261
|
+
"shrink-0 hover:text-primary transition-colors duration-200",
|
|
262
|
+
classNames?.expandIcon
|
|
263
|
+
),
|
|
253
264
|
disabled: disabled || node.disabled,
|
|
254
265
|
children: /* @__PURE__ */ jsx(
|
|
255
266
|
ChevronRight,
|
|
@@ -281,12 +292,18 @@ var Tree = React.memo(
|
|
|
281
292
|
]
|
|
282
293
|
}
|
|
283
294
|
),
|
|
284
|
-
showIcon && node.icon && /* @__PURE__ */ jsx(
|
|
295
|
+
showIcon && node.icon && /* @__PURE__ */ jsx(
|
|
296
|
+
"span",
|
|
297
|
+
{
|
|
298
|
+
className: cn("tree_icon", "shrink-0", classNames?.icon),
|
|
299
|
+
children: node.icon
|
|
300
|
+
}
|
|
301
|
+
),
|
|
285
302
|
/* @__PURE__ */ jsx(
|
|
286
303
|
"span",
|
|
287
304
|
{
|
|
288
305
|
onClick: () => handleSelect(node),
|
|
289
|
-
className: "flex-1 truncate",
|
|
306
|
+
className: cn("tree_label", "flex-1 truncate", classNames?.label),
|
|
290
307
|
children: node.label
|
|
291
308
|
}
|
|
292
309
|
)
|
|
@@ -304,6 +321,7 @@ var Tree = React.memo(
|
|
|
304
321
|
getCheckState,
|
|
305
322
|
size,
|
|
306
323
|
className,
|
|
324
|
+
classNames,
|
|
307
325
|
disabled,
|
|
308
326
|
handleExpand,
|
|
309
327
|
handleCheck,
|
|
@@ -313,12 +331,12 @@ var Tree = React.memo(
|
|
|
313
331
|
flatNodes
|
|
314
332
|
]
|
|
315
333
|
);
|
|
316
|
-
return /* @__PURE__ */ jsx("div", { className: cn("w-full", className), children: flatNodes.map((item, index) => renderNode(item, index)) });
|
|
334
|
+
return /* @__PURE__ */ jsx("div", { className: cn("tree_root", "w-full", className, classNames?.root), children: flatNodes.map((item, index) => renderNode(item, index)) });
|
|
317
335
|
}
|
|
318
336
|
);
|
|
319
337
|
Tree.displayName = "Tree";
|
|
320
338
|
var tree_default = Tree;
|
|
321
339
|
|
|
322
340
|
export { tree_default };
|
|
323
|
-
//# sourceMappingURL=chunk-
|
|
324
|
-
//# sourceMappingURL=chunk-
|
|
341
|
+
//# sourceMappingURL=chunk-Q57THXIU.js.map
|
|
342
|
+
//# sourceMappingURL=chunk-Q57THXIU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tree/index.tsx"],"names":[],"mappings":"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","file":"chunk-Q57THXIU.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport { Check, ChevronRight, Minus } from 'lucide-react'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport type { TreeNode, TreeProps } from './types'\n\nconst treeItemVariants = cva(\n 'flex items-center gap-2 px-2 rounded cursor-pointer select-none transition-all duration-200 ease-out',\n {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed',\n false: 'hover:bg-surface',\n },\n selected: {\n true: 'bg-primary/10 text-primary',\n false: 'text-text-primary',\n },\n },\n defaultVariants: {\n size: 'md',\n disabled: false,\n selected: false,\n },\n },\n)\n\nconst iconSizes = {\n xs: 'h-3 w-3',\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n}\n\nconst Tree = React.memo<TreeProps>(\n ({\n data,\n defaultExpandedKeys = [],\n expandedKeys,\n onExpand,\n checkable = false,\n checkedKeys,\n defaultCheckedKeys = [],\n onCheck,\n selectable = true,\n selectedKeys,\n defaultSelectedKeys = [],\n onSelect,\n disabled = false,\n size = 'md',\n showLine = false,\n showIcon = true,\n defaultExpandAll = false,\n className,\n classNames,\n }) => {\n const [internalExpandedKeys, setInternalExpandedKeys] = React.useState<\n string[]\n >(defaultExpandAll ? getAllKeys(data) : defaultExpandedKeys)\n const [internalCheckedKeys, setInternalCheckedKeys] =\n React.useState<string[]>(defaultCheckedKeys)\n const [internalSelectedKeys, setInternalSelectedKeys] =\n React.useState<string[]>(defaultSelectedKeys)\n\n const currentExpandedKeys =\n expandedKeys !== undefined ? expandedKeys : internalExpandedKeys\n const currentCheckedKeys =\n checkedKeys !== undefined ? checkedKeys : internalCheckedKeys\n const currentSelectedKeys =\n selectedKeys !== undefined ? selectedKeys : internalSelectedKeys\n\n function getAllKeys(nodes: TreeNode[]): string[] {\n const keys: string[] = []\n const traverse = (items: TreeNode[]) => {\n items.forEach((item) => {\n keys.push(item.key)\n if (item.children) {\n traverse(item.children)\n }\n })\n }\n traverse(nodes)\n return keys\n }\n\n const getAllLeafKeys = React.useCallback((node: TreeNode): string[] => {\n const keys: string[] = []\n\n const traverse = (n: TreeNode) => {\n if (!n.children || n.children.length === 0 || n.isLeaf) {\n keys.push(n.key)\n } else {\n n.children.forEach((child) => traverse(child))\n }\n }\n\n traverse(node)\n return keys\n }, [])\n\n const getNodeByKey = React.useCallback(\n (key: string): TreeNode | null => {\n const traverse = (nodes: TreeNode[]): TreeNode | null => {\n for (const node of nodes) {\n if (node.key === key) return node\n if (node.children) {\n const found = traverse(node.children)\n if (found) return found\n }\n }\n return null\n }\n return traverse(data)\n },\n [data],\n )\n\n const getCheckedNodes = React.useCallback(\n (keys: string[]): TreeNode[] => {\n return keys\n .map((key) => getNodeByKey(key))\n .filter((node): node is TreeNode => node !== null)\n },\n [getNodeByKey],\n )\n\n const getCheckState = React.useCallback(\n (node: TreeNode): { checked: boolean; indeterminate: boolean } => {\n if (!node.children || node.children.length === 0 || node.isLeaf) {\n return {\n checked: currentCheckedKeys.includes(node.key),\n indeterminate: false,\n }\n }\n\n const leafKeys = getAllLeafKeys(node)\n const checkedCount = leafKeys.filter((key) =>\n currentCheckedKeys.includes(key),\n ).length\n\n return {\n checked: checkedCount === leafKeys.length && leafKeys.length > 0,\n indeterminate: checkedCount > 0 && checkedCount < leafKeys.length,\n }\n },\n [currentCheckedKeys, getAllLeafKeys],\n )\n\n const handleExpand = React.useCallback(\n (key: string) => {\n const newExpandedKeys = currentExpandedKeys.includes(key)\n ? currentExpandedKeys.filter((k) => k !== key)\n : [...currentExpandedKeys, key]\n\n if (expandedKeys === undefined) {\n setInternalExpandedKeys(newExpandedKeys)\n }\n onExpand?.(newExpandedKeys)\n },\n [currentExpandedKeys, expandedKeys, onExpand],\n )\n\n const handleCheck = React.useCallback(\n (node: TreeNode, checked: boolean) => {\n if (disabled || node.disabled) return\n\n const leafKeys = getAllLeafKeys(node)\n let newCheckedKeys: string[]\n\n if (checked) {\n // Add all leaf keys that aren't already checked\n const keysToAdd = leafKeys.filter(\n (key) => !currentCheckedKeys.includes(key),\n )\n newCheckedKeys = [...currentCheckedKeys, ...keysToAdd]\n } else {\n // Remove all leaf keys\n newCheckedKeys = currentCheckedKeys.filter(\n (key) => !leafKeys.includes(key),\n )\n }\n\n if (checkedKeys === undefined) {\n setInternalCheckedKeys(newCheckedKeys)\n }\n\n const checkedNodes = getCheckedNodes(newCheckedKeys)\n onCheck?.(newCheckedKeys, {\n checked,\n node,\n checkedNodes,\n })\n },\n [\n disabled,\n getAllLeafKeys,\n currentCheckedKeys,\n checkedKeys,\n onCheck,\n getCheckedNodes,\n ],\n )\n\n const handleSelect = React.useCallback(\n (node: TreeNode) => {\n if (disabled || node.disabled || !selectable) return\n\n const isSelected = currentSelectedKeys.includes(node.key)\n const newSelectedKeys = isSelected\n ? currentSelectedKeys.filter((k) => k !== node.key)\n : [...currentSelectedKeys, node.key]\n\n if (selectedKeys === undefined) {\n setInternalSelectedKeys(newSelectedKeys)\n }\n\n onSelect?.(newSelectedKeys, {\n selected: !isSelected,\n node,\n })\n },\n [disabled, selectable, currentSelectedKeys, selectedKeys, onSelect],\n )\n\n const flattenTree = React.useCallback(\n (\n nodes: TreeNode[],\n level: number = 0,\n ): Array<{ node: TreeNode; level: number }> => {\n const result: Array<{ node: TreeNode; level: number }> = []\n\n nodes.forEach((node) => {\n result.push({ node, level })\n\n const hasChildren =\n node.children && node.children.length > 0 && !node.isLeaf\n const isExpanded = currentExpandedKeys.includes(node.key)\n\n if (hasChildren && isExpanded) {\n result.push(...flattenTree(node.children!, level + 1))\n }\n })\n\n return result\n },\n [currentExpandedKeys],\n )\n\n const flatNodes = React.useMemo(\n () => flattenTree(data),\n [data, flattenTree],\n )\n\n const renderNode = React.useCallback(\n (\n item: { node: TreeNode; level: number },\n index: number,\n ): React.ReactNode => {\n const { node, level } = item\n const hasChildren =\n node.children && node.children.length > 0 && !node.isLeaf\n const isExpanded = currentExpandedKeys.includes(node.key)\n const isSelected = currentSelectedKeys.includes(node.key)\n const checkState = checkable ? getCheckState(node) : null\n\n return (\n <div\n key={node.key}\n className={cn(\n 'tree_node',\n 'relative animate-in fade-in slide-in-from-top-1 duration-200',\n classNames?.node,\n )}\n >\n <div\n className={cn(\n 'tree_nodeContent',\n treeItemVariants({\n size,\n disabled: !!node.disabled,\n selected: isSelected,\n }),\n className,\n classNames?.nodeContent,\n )}\n >\n {/* Indentation units with vertical lines */}\n {Array.from({ length: level }).map((_, i) => {\n // Check if this indent level should have a vertical line\n const shouldDrawLine =\n showLine &&\n flatNodes.slice(index + 1).some((n) => n.level === i)\n\n return (\n <span\n key={i}\n className=\"relative inline-block w-4 h-6 shrink-0\"\n >\n {/* Vertical line connecting siblings */}\n {shouldDrawLine && (\n <span className=\"absolute top-0 left-1/2 bottom-0 h-full border-l border-border -translate-x-px\" />\n )}\n </span>\n )\n })}\n\n {/* Expand/Collapse Icon */}\n {hasChildren ? (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n handleExpand(node.key)\n }}\n className={cn(\n 'tree_expandIcon',\n 'shrink-0 hover:text-primary transition-colors duration-200',\n classNames?.expandIcon,\n )}\n disabled={disabled || node.disabled}\n >\n <ChevronRight\n className={cn(\n iconSizes[size],\n 'transition-transform duration-300 ease-out',\n isExpanded && 'rotate-90',\n )}\n />\n </button>\n ) : (\n <span className={cn('shrink-0', iconSizes[size])} />\n )}\n\n {/* Checkbox */}\n {checkable && (\n <div\n onClick={(e) => {\n e.stopPropagation()\n handleCheck(node, !checkState?.checked)\n }}\n className={cn(\n 'w-4 h-4 border rounded flex items-center justify-center shrink-0 cursor-pointer transition-all duration-200',\n checkState?.checked\n ? 'bg-primary border-primary'\n : 'border-border',\n (disabled || node.disabled) &&\n 'opacity-50 cursor-not-allowed',\n )}\n >\n {checkState?.checked && (\n <Check className=\"h-3 w-3 text-background animate-in zoom-in-50 duration-200\" />\n )}\n {checkState?.indeterminate && !checkState?.checked && (\n <Minus className=\"h-3 w-3 text-primary animate-in zoom-in-50 duration-200\" />\n )}\n </div>\n )}\n\n {/* Icon */}\n {showIcon && node.icon && (\n <span\n className={cn('tree_icon', 'shrink-0', classNames?.icon)}\n >\n {node.icon}\n </span>\n )}\n\n {/* Label */}\n <span\n onClick={() => handleSelect(node)}\n className={cn('tree_label', 'flex-1 truncate', classNames?.label)}\n >\n {node.label}\n </span>\n </div>\n </div>\n )\n },\n [\n currentExpandedKeys,\n currentSelectedKeys,\n checkable,\n getCheckState,\n size,\n className,\n classNames,\n disabled,\n handleExpand,\n handleCheck,\n handleSelect,\n showIcon,\n showLine,\n flatNodes,\n ],\n )\n\n return (\n <div className={cn('tree_root', 'w-full', className, classNames?.root)}>\n {flatNodes.map((item, index) => renderNode(item, index))}\n </div>\n )\n },\n)\n\nTree.displayName = 'Tree'\n\nexport type * from './types'\nexport default Tree\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { textColorClasses } from './chunk-
|
|
2
|
-
import { cn } from './chunk-
|
|
1
|
+
import { textColorClasses } from './chunk-NTPWR57C.js';
|
|
2
|
+
import { cn } from './chunk-NGYLRX6F.js';
|
|
3
3
|
import { cva } from 'class-variance-authority';
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -24,7 +24,7 @@ var spinnerVariants = cva(
|
|
|
24
24
|
);
|
|
25
25
|
var Spinner = React.memo(
|
|
26
26
|
({ size = "sm", color = "primary", label, className }) => {
|
|
27
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("inline-flex flex-col items-center gap-2", className), children: [
|
|
27
|
+
return /* @__PURE__ */ jsxs("div", { "data-slot": "root", className: cn("spinner_root", "inline-flex flex-col items-center gap-2", className), children: [
|
|
28
28
|
/* @__PURE__ */ jsx(
|
|
29
29
|
"div",
|
|
30
30
|
{
|
|
@@ -41,5 +41,5 @@ Spinner.displayName = "Spinner";
|
|
|
41
41
|
var spinner_default = Spinner;
|
|
42
42
|
|
|
43
43
|
export { Spinner, spinner_default };
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
45
|
-
//# sourceMappingURL=chunk-
|
|
44
|
+
//# sourceMappingURL=chunk-QDHGE7IF.js.map
|
|
45
|
+
//# sourceMappingURL=chunk-QDHGE7IF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/spinner/index.tsx"],"names":[],"mappings":";;;;;;AAOA,IAAM,eAAA,GAAkB,GAAA;AAAA,EACtB,mFAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,KAAA,EAAO;AAAA,KACT;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;AAEO,IAAM,UAAU,KAAA,CAAM,IAAA;AAAA,EAC3B,CAAC,EAAE,IAAA,GAAO,IAAA,EAAM,QAAQ,SAAA,EAAW,KAAA,EAAO,WAAU,KAAM;AACxD,IAAA,uBACE,IAAA,CAAC,SAAI,WAAA,EAAU,MAAA,EAAO,WAAW,EAAA,CAAG,cAAA,EAAgB,yCAAA,EAA2C,SAAS,CAAA,EACtG,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,eAAA,CAAgB,EAAE,IAAA,EAAM,OAAO,CAAA;AAAA,UAC1C,IAAA,EAAK,QAAA;AAAA,UACL,cAAY,KAAA,IAAS;AAAA;AAAA,OACvB;AAAA,MACC,KAAA,oBAAS,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAA+B,QAAA,EAAA,KAAA,EAAM;AAAA,KAAA,EACjE,CAAA;AAAA,EAEJ;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAGtB,IAAO,eAAA,GAAQ","file":"chunk-QDHGE7IF.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport { textColorClasses } from '../variants'\nimport type { SpinnerProps } from './types'\n\nconst spinnerVariants = cva(\n 'inline-block border border-current border-t-transparent rounded-full animate-spin',\n {\n variants: {\n size: {\n xs: 'w-3 h-3 border',\n sm: 'w-4 h-4 border',\n md: 'w-6 h-6 border-2',\n lg: 'w-8 h-8 border-2',\n },\n color: textColorClasses,\n },\n defaultVariants: {\n size: 'sm',\n color: 'primary',\n },\n },\n)\n\nexport const Spinner = React.memo<SpinnerProps>(\n ({ size = 'sm', color = 'primary', label, className }) => {\n return (\n <div data-slot=\"root\" className={cn('spinner_root', 'inline-flex flex-col items-center gap-2', className)}>\n <div\n className={spinnerVariants({ size, color })}\n role=\"status\"\n aria-label={label || 'Loading'}\n />\n {label && <span className=\"text-sm text-text-secondary\">{label}</span>}\n </div>\n )\n },\n)\n\nSpinner.displayName = 'Spinner'\n\nexport type * from './types'\nexport default Spinner\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-NGYLRX6F.js';
|
|
2
2
|
import { cva } from 'class-variance-authority';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -27,12 +27,12 @@ var gridVariants = cva("w-full grid", {
|
|
|
27
27
|
});
|
|
28
28
|
var Grid = React.memo(
|
|
29
29
|
({ children, columns = 3, gap = "md", className }) => {
|
|
30
|
-
return /* @__PURE__ */ jsx("div", { className: cn(gridVariants({ gap, columns }), className), children });
|
|
30
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "root", className: cn("grid_root", gridVariants({ gap, columns }), className), children });
|
|
31
31
|
}
|
|
32
32
|
);
|
|
33
33
|
Grid.displayName = "Grid";
|
|
34
34
|
var grid_default = Grid;
|
|
35
35
|
|
|
36
36
|
export { grid_default };
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
38
|
-
//# sourceMappingURL=chunk-
|
|
37
|
+
//# sourceMappingURL=chunk-QKSDVYKF.js.map
|
|
38
|
+
//# sourceMappingURL=chunk-QKSDVYKF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/grid/index.tsx"],"names":[],"mappings":";;;;;AAMA,IAAM,YAAA,GAAe,IAAI,aAAA,EAAe;AAAA,EACtC,QAAA,EAAU;AAAA,IACR,GAAA,EAAK;AAAA,MACH,EAAA,EAAI,OAAA;AAAA,MACJ,EAAA,EAAI,OAAA;AAAA,MACJ,EAAA,EAAI,OAAA;AAAA,MACJ,EAAA,EAAI;AAAA,KACN;AAAA,IACA,OAAA,EAAS;AAAA,MACP,CAAA,EAAG,aAAA;AAAA,MACH,CAAA,EAAG,4BAAA;AAAA,MACH,CAAA,EAAG,2CAAA;AAAA,MACH,CAAA,EAAG,2CAAA;AAAA,MACH,CAAA,EAAG,2CAAA;AAAA,MACH,CAAA,EAAG;AAAA;AACL,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,GAAA,EAAK,IAAA;AAAA,IACL,OAAA,EAAS;AAAA;AAEb,CAAC,CAAA;AAED,IAAM,OAAO,KAAA,CAAM,IAAA;AAAA,EACjB,CAAC,EAAE,QAAA,EAAU,OAAA,GAAU,GAAG,GAAA,GAAM,IAAA,EAAM,WAAU,KAAM;AACpD,IAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,MAAA,EAAO,WAAW,EAAA,CAAG,WAAA,EAAa,YAAA,CAAa,EAAE,KAAK,OAAA,EAAS,CAAA,EAAG,SAAS,GACvF,QAAA,EACH,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;AAGnB,IAAO,YAAA,GAAQ","file":"chunk-QKSDVYKF.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport type { GridProps } from './types'\n\nconst gridVariants = cva('w-full grid', {\n variants: {\n gap: {\n xs: 'gap-2',\n sm: 'gap-4',\n md: 'gap-6',\n lg: 'gap-8',\n },\n columns: {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4',\n 5: 'grid-cols-1 md:grid-cols-3 lg:grid-cols-5',\n 6: 'grid-cols-1 md:grid-cols-3 lg:grid-cols-6',\n },\n },\n defaultVariants: {\n gap: 'md',\n columns: 3,\n },\n})\n\nconst Grid = React.memo<GridProps>(\n ({ children, columns = 3, gap = 'md', className }) => {\n return (\n <div data-slot=\"root\" className={cn('grid_root', gridVariants({ gap, columns }), className)}>\n {children}\n </div>\n )\n },\n)\n\nGrid.displayName = 'Grid'\n\nexport type * from './types'\nexport default Grid\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-NGYLRX6F.js';
|
|
2
2
|
import { cva } from 'class-variance-authority';
|
|
3
3
|
import React, { memo } from 'react';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -52,28 +52,46 @@ var inputGroupAddonVariants = cva(
|
|
|
52
52
|
}
|
|
53
53
|
);
|
|
54
54
|
var InputGroup = memo(
|
|
55
|
-
({ children, size = "md", className }) => {
|
|
56
|
-
return /* @__PURE__ */ jsx(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
55
|
+
({ children, size = "md", className, classNames }) => {
|
|
56
|
+
return /* @__PURE__ */ jsx(
|
|
57
|
+
"div",
|
|
58
|
+
{
|
|
59
|
+
"data-slot": "inputGroup_root",
|
|
60
|
+
className: cn(
|
|
61
|
+
"inputGroup_root",
|
|
62
|
+
inputGroupVariants({ size }),
|
|
63
|
+
classNames?.root,
|
|
64
|
+
className
|
|
65
|
+
),
|
|
66
|
+
children: React.Children.map(children, (child) => {
|
|
67
|
+
if (React.isValidElement(child)) {
|
|
68
|
+
const displayName = child.type?.displayName;
|
|
69
|
+
if (displayName === "InputGroupInput" || displayName === "InputGroupAddon") {
|
|
70
|
+
return React.cloneElement(
|
|
71
|
+
child,
|
|
72
|
+
{ size, classNames }
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return child;
|
|
77
|
+
})
|
|
65
78
|
}
|
|
66
|
-
|
|
67
|
-
}) });
|
|
79
|
+
);
|
|
68
80
|
}
|
|
69
81
|
);
|
|
70
82
|
InputGroup.displayName = "InputGroup";
|
|
71
83
|
var InputGroupInput = memo(
|
|
72
|
-
({ className, size = "md", ...props }) => {
|
|
84
|
+
({ className, size = "md", classNames, ...props }) => {
|
|
73
85
|
return /* @__PURE__ */ jsx(
|
|
74
86
|
"input",
|
|
75
87
|
{
|
|
76
|
-
|
|
88
|
+
"data-slot": "inputGroup_input",
|
|
89
|
+
className: cn(
|
|
90
|
+
"inputGroup_input",
|
|
91
|
+
inputGroupInputVariants({ size }),
|
|
92
|
+
classNames?.input,
|
|
93
|
+
className
|
|
94
|
+
),
|
|
77
95
|
...props
|
|
78
96
|
}
|
|
79
97
|
);
|
|
@@ -81,13 +99,25 @@ var InputGroupInput = memo(
|
|
|
81
99
|
);
|
|
82
100
|
InputGroupInput.displayName = "InputGroupInput";
|
|
83
101
|
var InputGroupAddon = memo(
|
|
84
|
-
({ children, size = "md", className }) => {
|
|
85
|
-
return /* @__PURE__ */ jsx(
|
|
102
|
+
({ children, size = "md", className, classNames }) => {
|
|
103
|
+
return /* @__PURE__ */ jsx(
|
|
104
|
+
"div",
|
|
105
|
+
{
|
|
106
|
+
"data-slot": "inputGroup_addon",
|
|
107
|
+
className: cn(
|
|
108
|
+
"inputGroup_addon",
|
|
109
|
+
inputGroupAddonVariants({ size }),
|
|
110
|
+
classNames?.addon,
|
|
111
|
+
className
|
|
112
|
+
),
|
|
113
|
+
children
|
|
114
|
+
}
|
|
115
|
+
);
|
|
86
116
|
}
|
|
87
117
|
);
|
|
88
118
|
InputGroupAddon.displayName = "InputGroupAddon";
|
|
89
119
|
var input_group_default = InputGroup;
|
|
90
120
|
|
|
91
121
|
export { InputGroupAddon, InputGroupInput, input_group_default };
|
|
92
|
-
//# sourceMappingURL=chunk-
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
122
|
+
//# sourceMappingURL=chunk-ROA7BYGB.js.map
|
|
123
|
+
//# sourceMappingURL=chunk-ROA7BYGB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/input-group/index.tsx"],"names":[],"mappings":"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","file":"chunk-ROA7BYGB.js","sourcesContent":["import { cva } from \"class-variance-authority\";\nimport React, { memo } from \"react\";\n\nimport { cn } from \"../utils\";\nimport type {\n InputGroupAddonProps,\n InputGroupClassNames,\n InputGroupInputProps,\n InputGroupProps,\n InputGroupSize,\n} from \"./types\";\n\nconst inputGroupVariants = cva(\n \"relative flex items-center w-full bg-background border border-border rounded-md transition-colors focus-within:border-primary\",\n {\n variants: {\n size: {\n xs: \"h-(--input-height-xs)\",\n sm: \"h-(--input-height-sm)\",\n md: \"h-(--input-height-md)\",\n lg: \"h-(--input-height-lg)\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nconst inputGroupInputVariants = cva(\n \"flex-1 w-full h-full bg-transparent outline-none text-text-primary placeholder:text-text-secondary/50 disabled:opacity-50 disabled:cursor-not-allowed read-only:cursor-default\",\n {\n variants: {\n size: {\n xs: \"px-(--input-padding-x-xs) text-xs\",\n sm: \"px-(--input-padding-x-sm) text-sm\",\n md: \"px-(--input-padding-x-md) text-base\",\n lg: \"px-(--input-padding-x-lg) text-lg\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nconst inputGroupAddonVariants = cva(\n \"flex items-center gap-2 text-text-secondary shrink-0\",\n {\n variants: {\n size: {\n xs: \"last:pr-2 pl-2 text-xs\",\n sm: \"last:pr-2.5 pl-2.5 text-sm\",\n md: \"last:pr-3 pl-3 text-base\",\n lg: \"last:pr-4 pl-4 text-lg\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nconst InputGroup = memo<InputGroupProps>(\n ({ children, size = \"md\", className, classNames }) => {\n return (\n <div\n data-slot=\"inputGroup_root\"\n className={cn(\n \"inputGroup_root\",\n inputGroupVariants({ size }),\n classNames?.root,\n className,\n )}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n const displayName = (child.type as { displayName?: string })\n ?.displayName;\n if (\n displayName === \"InputGroupInput\" ||\n displayName === \"InputGroupAddon\"\n ) {\n return React.cloneElement(\n child as React.ReactElement<{\n size?: InputGroupSize;\n classNames?: InputGroupClassNames;\n }>,\n { size, classNames },\n );\n }\n }\n return child;\n })}\n </div>\n );\n },\n);\n\nInputGroup.displayName = \"InputGroup\";\n\nexport const InputGroupInput = memo<InputGroupInputProps>(\n ({ className, size = \"md\", classNames, ...props }) => {\n return (\n <input\n data-slot=\"inputGroup_input\"\n className={cn(\n \"inputGroup_input\",\n inputGroupInputVariants({ size }),\n classNames?.input,\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nInputGroupInput.displayName = \"InputGroupInput\";\n\nexport const InputGroupAddon = memo<InputGroupAddonProps>(\n ({ children, size = \"md\", className, classNames }) => {\n return (\n <div\n data-slot=\"inputGroup_addon\"\n className={cn(\n \"inputGroup_addon\",\n inputGroupAddonVariants({ size }),\n classNames?.addon,\n className,\n )}\n >\n {children}\n </div>\n );\n },\n);\n\nInputGroupAddon.displayName = \"InputGroupAddon\";\n\nexport type { InputGroupClassNames } from \"./types\";\nexport type * from \"./types\";\nexport default InputGroup;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-NGYLRX6F.js';
|
|
2
2
|
import { cva } from 'class-variance-authority';
|
|
3
3
|
import React, { useState } from 'react';
|
|
4
4
|
import { jsxs } from 'react/jsx-runtime';
|
|
@@ -86,7 +86,9 @@ var Toggle = React.memo(
|
|
|
86
86
|
disabled = false,
|
|
87
87
|
icon,
|
|
88
88
|
children,
|
|
89
|
-
|
|
89
|
+
"aria-label": ariaLabel,
|
|
90
|
+
className,
|
|
91
|
+
classNames
|
|
90
92
|
}) => {
|
|
91
93
|
const [internalPressed, setInternalPressed] = useState(defaultPressed);
|
|
92
94
|
const pressed = controlledPressed !== void 0 ? controlledPressed : internalPressed;
|
|
@@ -103,15 +105,18 @@ var Toggle = React.memo(
|
|
|
103
105
|
{
|
|
104
106
|
type: "button",
|
|
105
107
|
className: cn(
|
|
108
|
+
"toggle_root",
|
|
106
109
|
singleToggleVariants({ size }),
|
|
107
110
|
getSingleToggleClasses(color, variant, pressed),
|
|
108
111
|
"border",
|
|
109
112
|
disabled && "opacity-50 cursor-not-allowed",
|
|
113
|
+
classNames?.root,
|
|
110
114
|
className
|
|
111
115
|
),
|
|
112
116
|
onClick: handleClick,
|
|
113
117
|
disabled,
|
|
114
118
|
"aria-pressed": pressed,
|
|
119
|
+
"aria-label": ariaLabel,
|
|
115
120
|
children: [
|
|
116
121
|
icon,
|
|
117
122
|
children
|
|
@@ -124,5 +129,5 @@ Toggle.displayName = "Toggle";
|
|
|
124
129
|
var toggle_default = Toggle;
|
|
125
130
|
|
|
126
131
|
export { toggle_default };
|
|
127
|
-
//# sourceMappingURL=chunk-
|
|
128
|
-
//# sourceMappingURL=chunk-
|
|
132
|
+
//# sourceMappingURL=chunk-RPIJ2KY7.js.map
|
|
133
|
+
//# sourceMappingURL=chunk-RPIJ2KY7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/toggle/index.tsx"],"names":[],"mappings":"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","file":"chunk-RPIJ2KY7.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport React, { useState } from 'react'\n\nimport { cn } from '../utils'\nimport type { SingleToggleProps } from './types'\n\n// Inactive hover states for each color\nconst inactiveHoverClasses = {\n default: 'text-text-secondary hover:text-text-primary hover:bg-surface',\n primary: 'text-text-secondary hover:text-primary hover:bg-primary/10',\n secondary: 'text-text-secondary hover:text-secondary hover:bg-secondary/10',\n accent: 'text-text-secondary hover:text-accent hover:bg-accent/10',\n success: 'text-text-secondary hover:text-success hover:bg-success/10',\n error: 'text-text-secondary hover:text-error hover:bg-error/10',\n warning: 'text-text-secondary hover:text-warning hover:bg-warning/10',\n info: 'text-text-secondary hover:text-info hover:bg-info/10',\n} as const\n\n// Active solid variant classes\nconst activeSolidClasses = {\n default: 'bg-border text-text-primary',\n primary: 'bg-primary text-background',\n secondary: 'bg-secondary text-background',\n accent: 'bg-accent text-background',\n success: 'bg-success text-background',\n error: 'bg-error text-background',\n warning: 'bg-warning text-background',\n info: 'bg-info text-background',\n} as const\n\n// Active soft variant classes\nconst activeSoftClasses = {\n default: 'bg-border/20 text-text-primary',\n primary: 'bg-primary/20 text-primary',\n secondary: 'bg-secondary/20 text-secondary',\n accent: 'bg-accent/20 text-accent',\n success: 'bg-success/20 text-success',\n error: 'bg-error/20 text-error',\n warning: 'bg-warning/20 text-warning',\n info: 'bg-info/20 text-info',\n} as const\n\n// Active default variant classes\nconst activeDefaultClasses = {\n default: 'bg-surface text-text-primary',\n primary: 'border-primary bg-primary/10 text-primary',\n secondary: 'border-secondary bg-secondary/10 text-secondary',\n accent: 'border-accent bg-accent/10 text-accent',\n success: 'border-success bg-success/10 text-success',\n error: 'border-error bg-error/10 text-error',\n warning: 'border-warning bg-warning/10 text-warning',\n info: 'border-info bg-info/10 text-info',\n} as const\n\ntype ToggleColor = keyof typeof inactiveHoverClasses\n\nconst getToggleClasses = (\n color: string,\n variant: string,\n isActive: boolean,\n) => {\n const toggleColor = color as ToggleColor\n\n if (!isActive) {\n return inactiveHoverClasses[toggleColor] || inactiveHoverClasses.default\n }\n\n // Active state\n if (variant === 'solid') {\n return activeSolidClasses[toggleColor] || activeSolidClasses.default\n }\n if (variant === 'soft') {\n return activeSoftClasses[toggleColor] || activeSoftClasses.default\n }\n return activeDefaultClasses[toggleColor] || activeDefaultClasses.default\n}\n\nconst singleToggleVariants = cva(\n 'inline-flex items-center gap-2 font-medium transition-colors cursor-pointer border rounded-md',\n {\n variants: {\n size: {\n xs: 'text-xs px-2 py-1',\n sm: 'text-sm px-3 py-1.5',\n md: 'text-base px-4 py-2',\n lg: 'text-lg px-5 py-2.5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n)\n\n// Single toggle uses the same class logic as toggle group\nconst getSingleToggleClasses = (\n color: string,\n variant: string,\n isPressed: boolean,\n) => {\n return getToggleClasses(color, variant, isPressed)\n}\n\nconst Toggle = React.memo<SingleToggleProps>(\n ({\n pressed: controlledPressed,\n defaultPressed = false,\n color = 'primary',\n size = 'md',\n variant = 'default',\n onChange,\n disabled = false,\n icon,\n children,\n 'aria-label': ariaLabel,\n className,\n classNames,\n }) => {\n const [internalPressed, setInternalPressed] = useState(defaultPressed)\n\n const pressed =\n controlledPressed !== undefined ? controlledPressed : internalPressed\n\n const handleClick = () => {\n if (disabled) return\n\n const newPressed = !pressed\n if (controlledPressed === undefined) {\n setInternalPressed(newPressed)\n }\n onChange?.(newPressed)\n }\n\n return (\n <button\n type=\"button\"\n className={cn(\n 'toggle_root',\n singleToggleVariants({ size }),\n getSingleToggleClasses(color, variant, pressed),\n 'border',\n disabled && 'opacity-50 cursor-not-allowed',\n classNames?.root,\n className,\n )}\n onClick={handleClick}\n disabled={disabled}\n aria-pressed={pressed}\n aria-label={ariaLabel}\n >\n {icon}\n {children}\n </button>\n )\n },\n)\n\nToggle.displayName = 'Toggle'\n\nexport type * from './types'\nexport default Toggle\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-NGYLRX6F.js';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -38,6 +38,7 @@ var InputOTP = React.memo(
|
|
|
38
38
|
label,
|
|
39
39
|
messagePosition = "bottom",
|
|
40
40
|
className,
|
|
41
|
+
classNames,
|
|
41
42
|
ref
|
|
42
43
|
}) => {
|
|
43
44
|
const inputRefs = React.useRef([]);
|
|
@@ -137,42 +138,91 @@ var InputOTP = React.memo(
|
|
|
137
138
|
info: "text-info",
|
|
138
139
|
success: "text-success"
|
|
139
140
|
};
|
|
140
|
-
const MessageComponent = message && /* @__PURE__ */ jsx(
|
|
141
|
+
const MessageComponent = message && /* @__PURE__ */ jsx(
|
|
142
|
+
"p",
|
|
143
|
+
{
|
|
144
|
+
"data-slot": "inputOTP_helper",
|
|
145
|
+
className: cn(
|
|
146
|
+
"inputOTP_helper",
|
|
147
|
+
"text-xs mt-1",
|
|
148
|
+
statusTextClasses[status],
|
|
149
|
+
classNames?.helper
|
|
150
|
+
),
|
|
151
|
+
children: message
|
|
152
|
+
}
|
|
153
|
+
);
|
|
141
154
|
return /* @__PURE__ */ jsxs(
|
|
142
155
|
"div",
|
|
143
156
|
{
|
|
144
157
|
ref,
|
|
145
|
-
|
|
158
|
+
"data-slot": "inputOTP_root",
|
|
159
|
+
className: cn("inputOTP_root", "w-full", classNames?.root, className),
|
|
146
160
|
children: [
|
|
147
|
-
label && messagePosition === "top" && /* @__PURE__ */ jsx(
|
|
161
|
+
label && messagePosition === "top" && /* @__PURE__ */ jsx(
|
|
162
|
+
"label",
|
|
163
|
+
{
|
|
164
|
+
"data-slot": "inputOTP_label",
|
|
165
|
+
className: cn(
|
|
166
|
+
"inputOTP_label",
|
|
167
|
+
"block text-sm font-medium text-text-primary mb-1.5",
|
|
168
|
+
classNames?.label
|
|
169
|
+
),
|
|
170
|
+
children: label
|
|
171
|
+
}
|
|
172
|
+
),
|
|
148
173
|
messagePosition === "top" && MessageComponent,
|
|
149
|
-
/* @__PURE__ */ jsx(
|
|
150
|
-
"
|
|
174
|
+
/* @__PURE__ */ jsx(
|
|
175
|
+
"div",
|
|
176
|
+
{
|
|
177
|
+
"data-slot": "inputOTP_wrapper",
|
|
178
|
+
className: cn("inputOTP_wrapper", "flex gap-2", classNames?.wrapper),
|
|
179
|
+
children: Array.from({ length }).map((_, index) => {
|
|
180
|
+
const isActive = otp[index] !== void 0 && otp[index] !== "";
|
|
181
|
+
return /* @__PURE__ */ jsx(
|
|
182
|
+
"input",
|
|
183
|
+
{
|
|
184
|
+
ref: (el) => {
|
|
185
|
+
inputRefs.current[index] = el;
|
|
186
|
+
},
|
|
187
|
+
type: "text",
|
|
188
|
+
inputMode: type === "number" ? "numeric" : "text",
|
|
189
|
+
maxLength: 1,
|
|
190
|
+
value: otp[index] || "",
|
|
191
|
+
onChange: (e) => handleChange(index, e.target.value),
|
|
192
|
+
onKeyDown: (e) => handleKeyDown(index, e),
|
|
193
|
+
onPaste: handlePaste,
|
|
194
|
+
disabled,
|
|
195
|
+
"data-slot": "inputOTP_slot",
|
|
196
|
+
className: cn(
|
|
197
|
+
"inputOTP_slot",
|
|
198
|
+
"text-center font-semibold",
|
|
199
|
+
"border rounded-md outline-none",
|
|
200
|
+
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
201
|
+
"text-text-primary",
|
|
202
|
+
sizeClasses[size],
|
|
203
|
+
statusBorderClasses[status],
|
|
204
|
+
classNames?.slot,
|
|
205
|
+
isActive && classNames?.slotActive
|
|
206
|
+
),
|
|
207
|
+
"aria-label": `OTP digit ${index + 1}`
|
|
208
|
+
},
|
|
209
|
+
index
|
|
210
|
+
);
|
|
211
|
+
})
|
|
212
|
+
}
|
|
213
|
+
),
|
|
214
|
+
label && messagePosition === "bottom" && /* @__PURE__ */ jsx(
|
|
215
|
+
"label",
|
|
151
216
|
{
|
|
152
|
-
|
|
153
|
-
inputRefs.current[index] = el;
|
|
154
|
-
},
|
|
155
|
-
type: "text",
|
|
156
|
-
inputMode: type === "number" ? "numeric" : "text",
|
|
157
|
-
maxLength: 1,
|
|
158
|
-
value: otp[index] || "",
|
|
159
|
-
onChange: (e) => handleChange(index, e.target.value),
|
|
160
|
-
onKeyDown: (e) => handleKeyDown(index, e),
|
|
161
|
-
onPaste: handlePaste,
|
|
162
|
-
disabled,
|
|
217
|
+
"data-slot": "inputOTP_label",
|
|
163
218
|
className: cn(
|
|
164
|
-
"
|
|
165
|
-
"
|
|
166
|
-
|
|
167
|
-
"text-text-primary",
|
|
168
|
-
sizeClasses[size],
|
|
169
|
-
statusBorderClasses[status]
|
|
219
|
+
"inputOTP_label",
|
|
220
|
+
"block text-sm font-medium text-text-primary mt-1.5",
|
|
221
|
+
classNames?.label
|
|
170
222
|
),
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
)) }),
|
|
175
|
-
label && messagePosition === "bottom" && /* @__PURE__ */ jsx("label", { className: "block text-sm font-medium text-text-primary mt-1.5", children: label }),
|
|
223
|
+
children: label
|
|
224
|
+
}
|
|
225
|
+
),
|
|
176
226
|
messagePosition === "bottom" && MessageComponent
|
|
177
227
|
]
|
|
178
228
|
}
|
|
@@ -183,5 +233,5 @@ InputOTP.displayName = "InputOTP";
|
|
|
183
233
|
var input_otp_default = InputOTP;
|
|
184
234
|
|
|
185
235
|
export { input_otp_default };
|
|
186
|
-
//# sourceMappingURL=chunk-
|
|
187
|
-
//# sourceMappingURL=chunk-
|
|
236
|
+
//# sourceMappingURL=chunk-RW4RW4DV.js.map
|
|
237
|
+
//# sourceMappingURL=chunk-RW4RW4DV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/input-otp/index.tsx"],"names":[],"mappings":"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","file":"chunk-RW4RW4DV.js","sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport type { InputOTPProps } from './types'\n\n/**\n * Determine the current validation status\n */\nfunction getValidationStatus(\n props: InputOTPProps,\n): 'default' | 'error' | 'warning' | 'info' | 'success' {\n if (props.error) return 'error'\n if (props.warning) return 'warning'\n if (props.info) return 'info'\n if (props.success) return 'success'\n return 'default'\n}\n\n/**\n * Get the validation message to display\n */\nfunction getValidationMessage(props: InputOTPProps): string | undefined {\n const status = getValidationStatus(props)\n if (status === 'error' && typeof props.error === 'string') return props.error\n if (status === 'warning' && typeof props.warning === 'string')\n return props.warning\n if (status === 'info' && typeof props.info === 'string') return props.info\n if (status === 'success' && typeof props.success === 'string')\n return props.success\n return props.helperText\n}\n\nconst InputOTP = React.memo<InputOTPProps>(\n ({\n length = 6,\n size = 'md',\n value = '',\n onChange,\n onComplete,\n error,\n warning,\n info,\n success,\n helperText,\n disabled = false,\n autoFocus = false,\n type = 'text',\n pattern,\n label,\n messagePosition = 'bottom',\n className,\n classNames,\n ref,\n }) => {\n const inputRefs = React.useRef<(HTMLInputElement | null)[]>([])\n const [otp, setOtp] = React.useState<string[]>(\n value.split('').slice(0, length),\n )\n\n // Update OTP when controlled value changes\n React.useEffect(() => {\n setOtp(value.split('').slice(0, length))\n }, [value, length])\n\n // Auto-focus first input\n React.useEffect(() => {\n if (autoFocus && inputRefs.current[0]) {\n inputRefs.current[0].focus()\n }\n }, [autoFocus])\n\n const handleChange = React.useCallback(\n (index: number, newValue: string) => {\n // Only allow single character or clear\n const char = newValue.slice(-1)\n\n // Validate pattern if provided\n if (pattern && char && !new RegExp(pattern).test(char)) {\n return\n }\n\n const newOtp = [...otp]\n newOtp[index] = char\n setOtp(newOtp)\n\n const otpValue = newOtp.join('')\n onChange?.(otpValue)\n\n // Auto-focus next input\n if (char && index < length - 1) {\n inputRefs.current[index + 1]?.focus()\n }\n\n // Call onComplete when all fields filled\n if (otpValue.length === length) {\n onComplete?.(otpValue)\n }\n },\n [otp, length, onChange, onComplete, pattern],\n )\n\n const handleKeyDown = React.useCallback(\n (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace') {\n if (!otp[index] && index > 0) {\n // Move to previous input if current is empty\n inputRefs.current[index - 1]?.focus()\n }\n } else if (e.key === 'ArrowLeft' && index > 0) {\n inputRefs.current[index - 1]?.focus()\n } else if (e.key === 'ArrowRight' && index < length - 1) {\n inputRefs.current[index + 1]?.focus()\n }\n },\n [otp, length],\n )\n\n const handlePaste = React.useCallback(\n (e: React.ClipboardEvent) => {\n e.preventDefault()\n const pastedData = e.clipboardData.getData('text').slice(0, length)\n\n // Validate pasted data against pattern if provided\n if (pattern && !new RegExp(`^${pattern}*$`).test(pastedData)) {\n return\n }\n\n const newOtp = pastedData.split('').slice(0, length)\n setOtp(newOtp)\n\n const otpValue = newOtp.join('')\n onChange?.(otpValue)\n\n // Focus last filled input or first empty\n const focusIndex = Math.min(newOtp.length, length - 1)\n inputRefs.current[focusIndex]?.focus()\n\n // Call onComplete if all fields filled\n if (otpValue.length === length) {\n onComplete?.(otpValue)\n }\n },\n [length, onChange, onComplete, pattern],\n )\n\n const status = getValidationStatus({\n error,\n warning,\n info,\n success,\n helperText,\n })\n const message = getValidationMessage({\n error,\n warning,\n info,\n success,\n helperText,\n })\n\n const sizeClasses = {\n xs: 'h-8 w-8 text-xs',\n sm: 'h-9 w-9 text-sm',\n md: 'h-12 w-12 text-base',\n lg: 'h-14 w-14 text-lg',\n }\n\n const statusBorderClasses = {\n default: 'border-border focus:border-primary',\n error: 'border-error focus:border-error',\n warning: 'border-warning focus:border-warning',\n info: 'border-info focus:border-info',\n success: 'border-success focus:border-success',\n }\n\n const statusTextClasses = {\n default: 'text-text-secondary',\n error: 'text-error',\n warning: 'text-warning',\n info: 'text-info',\n success: 'text-success',\n }\n\n const MessageComponent = message && (\n <p\n data-slot=\"inputOTP_helper\"\n className={cn(\n 'inputOTP_helper',\n 'text-xs mt-1',\n statusTextClasses[status],\n classNames?.helper,\n )}\n >\n {message}\n </p>\n )\n\n return (\n <div\n ref={ref}\n data-slot=\"inputOTP_root\"\n className={cn('inputOTP_root', 'w-full', classNames?.root, className)}\n >\n {label && messagePosition === 'top' && (\n <label\n data-slot=\"inputOTP_label\"\n className={cn(\n 'inputOTP_label',\n 'block text-sm font-medium text-text-primary mb-1.5',\n classNames?.label,\n )}\n >\n {label}\n </label>\n )}\n {messagePosition === 'top' && MessageComponent}\n\n <div\n data-slot=\"inputOTP_wrapper\"\n className={cn('inputOTP_wrapper', 'flex gap-2', classNames?.wrapper)}\n >\n {Array.from({ length }).map((_, index) => {\n const isActive = otp[index] !== undefined && otp[index] !== ''\n return (\n <input\n key={index}\n ref={(el) => {\n inputRefs.current[index] = el\n }}\n type=\"text\"\n inputMode={type === 'number' ? 'numeric' : 'text'}\n maxLength={1}\n value={otp[index] || ''}\n onChange={(e) => handleChange(index, e.target.value)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n disabled={disabled}\n data-slot=\"inputOTP_slot\"\n className={cn(\n 'inputOTP_slot',\n 'text-center font-semibold',\n 'border rounded-md outline-none',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n 'text-text-primary',\n sizeClasses[size],\n statusBorderClasses[status],\n classNames?.slot,\n isActive && classNames?.slotActive,\n )}\n aria-label={`OTP digit ${index + 1}`}\n />\n )\n })}\n </div>\n\n {label && messagePosition === 'bottom' && (\n <label\n data-slot=\"inputOTP_label\"\n className={cn(\n 'inputOTP_label',\n 'block text-sm font-medium text-text-primary mt-1.5',\n classNames?.label,\n )}\n >\n {label}\n </label>\n )}\n {messagePosition === 'bottom' && MessageComponent}\n </div>\n )\n },\n)\n\nInputOTP.displayName = 'InputOTP'\n\nexport type { InputOTPClassNames } from './types'\nexport type * from './types'\nexport default InputOTP\n"]}
|