@mdigital_ui/ui 0.2.5 → 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 -1
- 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-27QEPVKU.js +115 -0
- package/dist/chunk-27QEPVKU.js.map +1 -0
- package/dist/{chunk-Y5A26EGR.js → chunk-2J57G7XG.js} +82 -24
- package/dist/chunk-2J57G7XG.js.map +1 -0
- package/dist/{chunk-FPOXTCYV.js → chunk-2NYVRAG4.js} +29 -20
- package/dist/chunk-2NYVRAG4.js.map +1 -0
- package/dist/chunk-2OUGJBXK.js +742 -0
- package/dist/chunk-2OUGJBXK.js.map +1 -0
- package/dist/{chunk-ROR4E6IE.js → chunk-2WZVD7P3.js} +38 -12
- package/dist/chunk-2WZVD7P3.js.map +1 -0
- package/dist/chunk-3UCZ4GMN.js +84 -0
- package/dist/chunk-3UCZ4GMN.js.map +1 -0
- package/dist/{chunk-RPAQAZTI.js → chunk-4LSKRZOT.js} +12 -7
- package/dist/chunk-4LSKRZOT.js.map +1 -0
- package/dist/{chunk-ASW7TEAN.js → chunk-4SQOFZ3N.js} +35 -18
- 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-6TMOKYR7.js +75 -0
- package/dist/chunk-6TMOKYR7.js.map +1 -0
- package/dist/chunk-7UCNBMCV.js +261 -0
- package/dist/chunk-7UCNBMCV.js.map +1 -0
- package/dist/chunk-AQYOVYPS.js +237 -0
- package/dist/chunk-AQYOVYPS.js.map +1 -0
- package/dist/{chunk-BP434VYV.js → chunk-C5YO5VZS.js} +17 -17
- package/dist/chunk-C5YO5VZS.js.map +1 -0
- package/dist/{chunk-ZNJ7M5QK.js → chunk-CHGJX5F2.js} +69 -46
- package/dist/chunk-CHGJX5F2.js.map +1 -0
- package/dist/chunk-CK6A2R66.js +336 -0
- package/dist/chunk-CK6A2R66.js.map +1 -0
- package/dist/{chunk-I5ANSIDK.js → chunk-CMGCJXE5.js} +280 -100
- package/dist/chunk-CMGCJXE5.js.map +1 -0
- package/dist/chunk-CSRMVLPR.js +394 -0
- package/dist/chunk-CSRMVLPR.js.map +1 -0
- package/dist/chunk-DH7R6NBG.js +107 -0
- package/dist/chunk-DH7R6NBG.js.map +1 -0
- package/dist/{chunk-XMAH5PDW.js → chunk-FEMHXG2P.js} +28 -11
- 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-C7SXY3ZV.js → chunk-FVTMKQUE.js} +5 -3
- package/dist/chunk-FVTMKQUE.js.map +1 -0
- package/dist/{chunk-UAMFKX6L.js → chunk-GBVIACYQ.js} +103 -42
- 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-HUVXKOJC.js → chunk-INQI3UUI.js} +80 -22
- package/dist/chunk-INQI3UUI.js.map +1 -0
- package/dist/{chunk-BNILRB4T.js → chunk-J525ROGL.js} +12 -7
- package/dist/chunk-J525ROGL.js.map +1 -0
- package/dist/chunk-JLS4MBHN.js +205 -0
- package/dist/chunk-JLS4MBHN.js.map +1 -0
- package/dist/{chunk-SK5ECBBK.js → chunk-KTHWXHDN.js} +15 -6
- package/dist/chunk-KTHWXHDN.js.map +1 -0
- package/dist/{chunk-SOV4PE3P.js → chunk-LMR7TKDJ.js} +25 -7
- package/dist/chunk-LMR7TKDJ.js.map +1 -0
- package/dist/{chunk-NNSS366W.js → chunk-MRFCITKK.js} +53 -11
- package/dist/chunk-MRFCITKK.js.map +1 -0
- package/dist/chunk-MXDTUN3V.js +459 -0
- package/dist/chunk-MXDTUN3V.js.map +1 -0
- package/dist/{chunk-YNNAOXU5.js → chunk-NGYLRX6F.js} +3 -18
- package/dist/chunk-NGYLRX6F.js.map +1 -0
- package/dist/chunk-NTPWR57C.js +445 -0
- package/dist/chunk-NTPWR57C.js.map +1 -0
- package/dist/chunk-OWXQ45GS.js +276 -0
- package/dist/chunk-OWXQ45GS.js.map +1 -0
- package/dist/{chunk-75XESYGN.js → chunk-P6A75RAH.js} +7 -13
- package/dist/chunk-P6A75RAH.js.map +1 -0
- package/dist/{chunk-RMGIO27V.js → chunk-PXOHJJBE.js} +39 -10
- package/dist/chunk-PXOHJJBE.js.map +1 -0
- package/dist/{chunk-SAVE5ACL.js → chunk-Q57THXIU.js} +28 -10
- package/dist/chunk-Q57THXIU.js.map +1 -0
- package/dist/{chunk-J3G5WWGR.js → chunk-QDHGE7IF.js} +7 -15
- package/dist/chunk-QDHGE7IF.js.map +1 -0
- package/dist/{chunk-7PKVBUGL.js → chunk-QKSDVYKF.js} +4 -4
- package/dist/chunk-QKSDVYKF.js.map +1 -0
- package/dist/chunk-ROA7BYGB.js +123 -0
- package/dist/chunk-ROA7BYGB.js.map +1 -0
- package/dist/{chunk-DPOSWW22.js → chunk-RPIJ2KY7.js} +11 -4
- package/dist/chunk-RPIJ2KY7.js.map +1 -0
- package/dist/{chunk-R225A5II.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-DOKTHDG3.js → chunk-SGRACNBP.js} +12 -7
- package/dist/chunk-SGRACNBP.js.map +1 -0
- package/dist/{chunk-OALOWWO7.js → chunk-TTEBZZ3T.js} +55 -42
- package/dist/chunk-TTEBZZ3T.js.map +1 -0
- package/dist/{chunk-FCMVKFVV.js → chunk-US4ZCMNU.js} +26 -20
- 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-QPJL66S7.js → chunk-VUBU7Y4F.js} +123 -55
- 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-WVG3QQDN.js +283 -0
- package/dist/chunk-WVG3QQDN.js.map +1 -0
- package/dist/chunk-WZ2KDHFP.js +109 -0
- package/dist/chunk-WZ2KDHFP.js.map +1 -0
- package/dist/{chunk-FGWSUPVW.js → chunk-X5SCI7KH.js} +190 -137
- package/dist/chunk-X5SCI7KH.js.map +1 -0
- package/dist/{chunk-D3JWPGCA.js → chunk-XJCWPPMM.js} +10 -56
- package/dist/chunk-XJCWPPMM.js.map +1 -0
- package/dist/{chunk-LEKLQR4I.js → chunk-YAAV7FQG.js} +70 -45
- package/dist/chunk-YAAV7FQG.js.map +1 -0
- package/dist/chunk-YOG5GXIC.js +196 -0
- 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-267WNY3E.js → chunk-ZC3E3PWH.js} +109 -73
- 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 -3
- 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 -3
- package/dist/empty/index.js +2 -2
- package/dist/fetching-overlay/index.js +4 -3
- package/dist/grid/index.js +2 -2
- package/dist/image/index.js +2 -2
- package/dist/index.d.ts +2494 -211
- package/dist/index.js +63 -186
- package/dist/index.js.map +1 -1
- package/dist/input/index.js +4 -3
- package/dist/input-group/index.js +2 -2
- package/dist/input-otp/index.js +2 -2
- package/dist/input-password/index.js +5 -4
- package/dist/kbd/index.js +3 -2
- package/dist/modal/index.js +2 -2
- package/dist/multi-select/index.js +4 -3
- package/dist/notification/index.js +3 -2
- package/dist/pagination/index.js +2 -2
- package/dist/popover/index.js +3 -2
- package/dist/progress/index.js +2 -2
- package/dist/radio/index.js +3 -2
- 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 -4
- package/dist/skeleton/index.js +3 -2
- package/dist/slider/index.js +2 -2
- package/dist/spinner/index.js +3 -2
- package/dist/stepper/index.js +2 -2
- package/dist/styles/base.css +2165 -1375
- package/dist/styles/global.css +2393 -1036
- 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 -2
- 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 -2
- package/dist/transfer/index.js +4 -4
- package/dist/tree/index.js +2 -2
- package/dist/tree-select/index.js +5 -4
- package/dist/upload/index.js +2 -2
- package/package.json +460 -70
- package/dist/chunk-267WNY3E.js.map +0 -1
- package/dist/chunk-2EKAF6EJ.js +0 -128
- package/dist/chunk-2EKAF6EJ.js.map +0 -1
- package/dist/chunk-3PFA3YG6.js +0 -228
- package/dist/chunk-3PFA3YG6.js.map +0 -1
- package/dist/chunk-56IXGP5C.js +0 -56
- package/dist/chunk-56IXGP5C.js.map +0 -1
- package/dist/chunk-5UEWVFF6.js +0 -212
- package/dist/chunk-5UEWVFF6.js.map +0 -1
- package/dist/chunk-6V5I5HJ2.js +0 -39
- package/dist/chunk-6V5I5HJ2.js.map +0 -1
- package/dist/chunk-75XESYGN.js.map +0 -1
- package/dist/chunk-7PKVBUGL.js.map +0 -1
- package/dist/chunk-ASW7TEAN.js.map +0 -1
- package/dist/chunk-AWPKZYHT.js +0 -152
- package/dist/chunk-AWPKZYHT.js.map +0 -1
- package/dist/chunk-BFO3ARVJ.js +0 -104
- package/dist/chunk-BFO3ARVJ.js.map +0 -1
- package/dist/chunk-BNILRB4T.js.map +0 -1
- package/dist/chunk-BP434VYV.js.map +0 -1
- package/dist/chunk-C3MX5EXL.js +0 -95
- package/dist/chunk-C3MX5EXL.js.map +0 -1
- package/dist/chunk-C7SXY3ZV.js.map +0 -1
- package/dist/chunk-D3JWPGCA.js.map +0 -1
- package/dist/chunk-DOKTHDG3.js.map +0 -1
- package/dist/chunk-DPOSWW22.js.map +0 -1
- package/dist/chunk-FCMVKFVV.js.map +0 -1
- package/dist/chunk-FGWSUPVW.js.map +0 -1
- package/dist/chunk-FPOXTCYV.js.map +0 -1
- package/dist/chunk-FYHQDFKE.js +0 -164
- package/dist/chunk-FYHQDFKE.js.map +0 -1
- package/dist/chunk-G6TAVRTJ.js +0 -640
- package/dist/chunk-G6TAVRTJ.js.map +0 -1
- package/dist/chunk-GEWR5ROK.js +0 -102
- package/dist/chunk-GEWR5ROK.js.map +0 -1
- package/dist/chunk-HUVXKOJC.js.map +0 -1
- package/dist/chunk-I5ANSIDK.js.map +0 -1
- package/dist/chunk-J3G5WWGR.js.map +0 -1
- package/dist/chunk-JLTDJ3VZ.js +0 -452
- package/dist/chunk-JLTDJ3VZ.js.map +0 -1
- package/dist/chunk-KBCBVH7B.js +0 -51
- package/dist/chunk-KBCBVH7B.js.map +0 -1
- package/dist/chunk-KNQ7UQ2W.js +0 -143
- package/dist/chunk-KNQ7UQ2W.js.map +0 -1
- package/dist/chunk-KTAIRCOL.js +0 -100
- package/dist/chunk-KTAIRCOL.js.map +0 -1
- package/dist/chunk-LEKLQR4I.js.map +0 -1
- package/dist/chunk-MLDX3Z67.js +0 -470
- package/dist/chunk-MLDX3Z67.js.map +0 -1
- package/dist/chunk-NNSS366W.js.map +0 -1
- package/dist/chunk-OALOWWO7.js.map +0 -1
- package/dist/chunk-OOS3B7YZ.js +0 -94
- package/dist/chunk-OOS3B7YZ.js.map +0 -1
- package/dist/chunk-OQANRZPV.js +0 -197
- package/dist/chunk-OQANRZPV.js.map +0 -1
- package/dist/chunk-OW5A5IIF.js +0 -175
- package/dist/chunk-OW5A5IIF.js.map +0 -1
- package/dist/chunk-QPJL66S7.js.map +0 -1
- package/dist/chunk-R225A5II.js.map +0 -1
- package/dist/chunk-RMGIO27V.js.map +0 -1
- package/dist/chunk-ROR4E6IE.js.map +0 -1
- package/dist/chunk-RPAQAZTI.js.map +0 -1
- package/dist/chunk-S5XJXU52.js +0 -178
- package/dist/chunk-S5XJXU52.js.map +0 -1
- package/dist/chunk-SAVE5ACL.js.map +0 -1
- package/dist/chunk-SK5ECBBK.js.map +0 -1
- package/dist/chunk-SOV4PE3P.js.map +0 -1
- package/dist/chunk-UAMFKX6L.js.map +0 -1
- package/dist/chunk-XMAH5PDW.js.map +0 -1
- package/dist/chunk-XMKNYG7I.js +0 -181
- package/dist/chunk-XMKNYG7I.js.map +0 -1
- package/dist/chunk-Y5A26EGR.js.map +0 -1
- package/dist/chunk-YNNAOXU5.js.map +0 -1
- package/dist/chunk-YZ6V6BQ7.js +0 -134
- package/dist/chunk-YZ6V6BQ7.js.map +0 -1
- package/dist/chunk-YZVSDRJD.js +0 -253
- package/dist/chunk-YZVSDRJD.js.map +0 -1
- package/dist/chunk-ZNJ7M5QK.js.map +0 -1
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { createAllColorVariants, componentColors } from './chunk-NTPWR57C.js';
|
|
2
|
+
import { cn } from './chunk-NGYLRX6F.js';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { X } from 'lucide-react';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var tagVariants = cva("inline-flex items-center gap-1.5 whitespace-nowrap rounded font-medium transition-colors", {
|
|
9
|
+
variants: {
|
|
10
|
+
variant: {
|
|
11
|
+
default: "border",
|
|
12
|
+
solid: "",
|
|
13
|
+
outline: "border",
|
|
14
|
+
soft: ""
|
|
15
|
+
},
|
|
16
|
+
color: {
|
|
17
|
+
default: "",
|
|
18
|
+
primary: "",
|
|
19
|
+
secondary: "",
|
|
20
|
+
accent: "",
|
|
21
|
+
success: "",
|
|
22
|
+
error: "",
|
|
23
|
+
warning: "",
|
|
24
|
+
info: ""
|
|
25
|
+
},
|
|
26
|
+
size: {
|
|
27
|
+
xs: "text-[10px] px-1.5 py-0.5",
|
|
28
|
+
sm: "text-xs px-2 py-1",
|
|
29
|
+
md: "text-sm px-2.5 py-1",
|
|
30
|
+
lg: "text-base px-3 py-1.5"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
compoundVariants: createAllColorVariants(componentColors, ["default", "solid", "outline", "soft"]),
|
|
34
|
+
defaultVariants: {
|
|
35
|
+
variant: "solid",
|
|
36
|
+
color: "primary",
|
|
37
|
+
size: "sm"
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
var iconSizeClasses = {
|
|
41
|
+
xs: "size-2.5",
|
|
42
|
+
sm: "size-3",
|
|
43
|
+
md: "size-3.5",
|
|
44
|
+
lg: "size-4"
|
|
45
|
+
};
|
|
46
|
+
var Tag = React.memo(
|
|
47
|
+
({
|
|
48
|
+
children,
|
|
49
|
+
color = "primary",
|
|
50
|
+
variant = "solid",
|
|
51
|
+
size = "sm",
|
|
52
|
+
closable = false,
|
|
53
|
+
onClose,
|
|
54
|
+
icon,
|
|
55
|
+
className,
|
|
56
|
+
classNames,
|
|
57
|
+
onClick,
|
|
58
|
+
disableKeyboardRemoval = false,
|
|
59
|
+
...props
|
|
60
|
+
}) => {
|
|
61
|
+
const handleClose = (e) => {
|
|
62
|
+
e.stopPropagation();
|
|
63
|
+
onClose?.(e);
|
|
64
|
+
};
|
|
65
|
+
const handleCloseKeyDown = (e) => {
|
|
66
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
67
|
+
e.preventDefault();
|
|
68
|
+
e.stopPropagation();
|
|
69
|
+
onClose?.(e);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const handleTagKeyDown = (e) => {
|
|
73
|
+
if (!disableKeyboardRemoval && closable && (e.key === "Delete" || e.key === "Backspace")) {
|
|
74
|
+
e.preventDefault();
|
|
75
|
+
e.stopPropagation();
|
|
76
|
+
onClose?.(e);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (onClick && (e.key === "Enter" || e.key === " ")) {
|
|
80
|
+
e.preventDefault();
|
|
81
|
+
e.stopPropagation();
|
|
82
|
+
onClick(e);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
return /* @__PURE__ */ jsxs(
|
|
86
|
+
"span",
|
|
87
|
+
{
|
|
88
|
+
className: cn(
|
|
89
|
+
"tag_root",
|
|
90
|
+
tagVariants({ variant, color, size }),
|
|
91
|
+
(onClick || closable) && "cursor-pointer",
|
|
92
|
+
(onClick || !disableKeyboardRemoval && closable) && "focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary",
|
|
93
|
+
classNames?.root,
|
|
94
|
+
className
|
|
95
|
+
),
|
|
96
|
+
onClick,
|
|
97
|
+
onKeyDown: onClick || !disableKeyboardRemoval && closable ? handleTagKeyDown : void 0,
|
|
98
|
+
role: onClick || !disableKeyboardRemoval && closable ? "button" : void 0,
|
|
99
|
+
tabIndex: onClick || !disableKeyboardRemoval && closable ? 0 : void 0,
|
|
100
|
+
"aria-label": (onClick || !disableKeyboardRemoval && closable) && typeof children === "string" ? children : void 0,
|
|
101
|
+
"data-slot": "root",
|
|
102
|
+
...props,
|
|
103
|
+
children: [
|
|
104
|
+
icon && /* @__PURE__ */ jsx("span", { className: cn("inline-flex items-center justify-center flex-shrink-0", iconSizeClasses[size]), children: React.isValidElement(icon) ? React.cloneElement(icon, {
|
|
105
|
+
className: cn("w-full h-full", icon.props.className)
|
|
106
|
+
}) : icon }),
|
|
107
|
+
/* @__PURE__ */ jsx(
|
|
108
|
+
"span",
|
|
109
|
+
{
|
|
110
|
+
className: cn("tag_content", classNames?.content),
|
|
111
|
+
"data-slot": "content",
|
|
112
|
+
children
|
|
113
|
+
}
|
|
114
|
+
),
|
|
115
|
+
closable && /* @__PURE__ */ jsx(
|
|
116
|
+
"button",
|
|
117
|
+
{
|
|
118
|
+
type: "button",
|
|
119
|
+
onClick: handleClose,
|
|
120
|
+
onKeyDown: handleCloseKeyDown,
|
|
121
|
+
className: cn(
|
|
122
|
+
"tag_closeButton",
|
|
123
|
+
"inline-flex items-center justify-center flex-shrink-0 cursor-pointer rounded-sm opacity-70 hover:opacity-100 transition-opacity focus:outline-none focus:ring-2 focus:ring-current focus:ring-offset-1",
|
|
124
|
+
iconSizeClasses[size],
|
|
125
|
+
classNames?.closeButton
|
|
126
|
+
),
|
|
127
|
+
"aria-label": typeof children === "string" ? `Remove ${children}` : "Remove tag",
|
|
128
|
+
tabIndex: disableKeyboardRemoval ? 0 : -1,
|
|
129
|
+
"data-slot": "closeButton",
|
|
130
|
+
children: /* @__PURE__ */ jsx(X, { className: "w-full h-full" })
|
|
131
|
+
}
|
|
132
|
+
)
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
Tag.displayName = "Tag";
|
|
139
|
+
var tag_default = Tag;
|
|
140
|
+
|
|
141
|
+
export { tag_default };
|
|
142
|
+
//# sourceMappingURL=chunk-SDNT2JGC.js.map
|
|
143
|
+
//# sourceMappingURL=chunk-SDNT2JGC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tag/index.tsx"],"names":[],"mappings":"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","file":"chunk-SDNT2JGC.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport React from 'react';\n\nimport { cn } from '../utils';\nimport { componentColors, createAllColorVariants } from '../variants';\nimport type { TagProps } from './types';\n\n/**\n * Class variance authority configuration for the Tag component\n * Defines style variants for color, variant, and size\n */\nconst tagVariants = cva('inline-flex items-center gap-1.5 whitespace-nowrap rounded font-medium transition-colors', {\n variants: {\n variant: {\n default: 'border',\n solid: '',\n outline: 'border',\n soft: '',\n },\n color: {\n default: '',\n primary: '',\n secondary: '',\n accent: '',\n success: '',\n error: '',\n warning: '',\n info: '',\n },\n size: {\n xs: 'text-[10px] px-1.5 py-0.5',\n sm: 'text-xs px-2 py-1',\n md: 'text-sm px-2.5 py-1',\n lg: 'text-base px-3 py-1.5',\n },\n },\n compoundVariants: createAllColorVariants(componentColors, ['default', 'solid', 'outline', 'soft']),\n defaultVariants: {\n variant: 'solid',\n color: 'primary',\n size: 'sm',\n },\n});\n\n/**\n * Icon and close button size variants for different tag sizes\n */\nconst iconSizeClasses = {\n xs: 'size-2.5',\n sm: 'size-3',\n md: 'size-3.5',\n lg: 'size-4',\n};\n\n/**\n * Tag Component\n *\n * An interactive badge variant that can be used for labels, categories, or removable items.\n * Supports multiple variants, colors, sizes, icons, and close functionality.\n *\n * @component\n * @example\n * // Basic tag\n * <Tag>Label</Tag>\n *\n * @example\n * // Tag with close button\n * <Tag closable onClose={(e) => console.log('Tag removed')}>\n * Removable Tag\n * </Tag>\n *\n * @example\n * // Tag with icon\n * <Tag icon={<Star />} color=\"warning\">\n * Featured\n * </Tag>\n *\n * @example\n * // Different variants\n * <Tag variant=\"outline\" color=\"success\">Outline Tag</Tag>\n * <Tag variant=\"soft\" color=\"info\">Soft Tag</Tag>\n *\n * @example\n * // Disable keyboard removal (Backspace/Delete on tag)\n * <Tag closable disableKeyboardRemoval onClose={(e) => console.log('Tag removed')}>\n * No keyboard removal\n * </Tag>\n *\n * @example\n * // Tag with keyboard removal enabled (focus on tag and press Delete/Backspace)\n * <Tag closable onClose={(e) => console.log('Tag removed')}>\n * Press Delete or Backspace to remove\n * </Tag>\n *\n * @param {TagProps} props - Component props\n * @returns {JSX.Element} Rendered tag component\n */\nconst Tag = React.memo<TagProps>(\n ({\n children,\n color = 'primary',\n variant = 'solid',\n size = 'sm',\n closable = false,\n onClose,\n icon,\n className,\n classNames,\n onClick,\n disableKeyboardRemoval = false,\n ...props\n }) => {\n /**\n * Handles the close button click event\n * Stops event propagation to prevent triggering parent onClick handlers\n *\n * @param {React.MouseEvent<HTMLButtonElement>} e - Mouse event\n */\n const handleClose = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onClose?.(e);\n };\n\n /**\n * Handles keyboard events for the close button\n * Always responds to Enter/Space for activation (accessibility requirement)\n *\n * @param {React.KeyboardEvent<HTMLButtonElement>} e - Keyboard event\n */\n const handleCloseKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n // Always allow Enter/Space for activation (accessibility requirement)\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n onClose?.(e);\n }\n };\n\n /**\n * Handles keyboard events for the tag\n * Removes tag when Delete or Backspace is pressed (takes priority)\n * Activates onClick when Enter or Space is pressed\n *\n * @param {React.KeyboardEvent<HTMLSpanElement>} e - Keyboard event\n */\n const handleTagKeyDown = (e: React.KeyboardEvent<HTMLSpanElement>) => {\n // Handle deletion for closable tags (takes priority over onClick)\n if (!disableKeyboardRemoval && closable && (e.key === 'Delete' || e.key === 'Backspace')) {\n e.preventDefault();\n e.stopPropagation();\n onClose?.(e);\n return;\n }\n\n // Handle activation for clickable tags\n if (onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n e.stopPropagation();\n onClick(e);\n }\n };\n\n return (\n <span\n className={cn(\n 'tag_root',\n tagVariants({ variant, color, size }),\n (onClick || closable) && 'cursor-pointer',\n (onClick || (!disableKeyboardRemoval && closable)) &&\n 'focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary',\n classNames?.root,\n className\n )}\n onClick={onClick}\n onKeyDown={onClick || (!disableKeyboardRemoval && closable) ? handleTagKeyDown : undefined}\n role={onClick || (!disableKeyboardRemoval && closable) ? 'button' : undefined}\n tabIndex={onClick || (!disableKeyboardRemoval && closable) ? 0 : undefined}\n aria-label={\n (onClick || (!disableKeyboardRemoval && closable)) && typeof children === 'string' ? children : undefined\n }\n data-slot='root'\n {...props}\n >\n {icon && (\n <span className={cn('inline-flex items-center justify-center flex-shrink-0', iconSizeClasses[size])}>\n {React.isValidElement(icon)\n ? React.cloneElement(icon, {\n className: cn('w-full h-full', (icon.props as { className?: string }).className),\n } as React.HTMLAttributes<HTMLElement>)\n : icon}\n </span>\n )}\n <span\n className={cn('tag_content', classNames?.content)}\n data-slot='content'\n >\n {children}\n </span>\n {closable && (\n <button\n type='button'\n onClick={handleClose}\n onKeyDown={handleCloseKeyDown}\n className={cn(\n 'tag_closeButton',\n 'inline-flex items-center justify-center flex-shrink-0 cursor-pointer rounded-sm opacity-70 hover:opacity-100 transition-opacity focus:outline-none focus:ring-2 focus:ring-current focus:ring-offset-1',\n iconSizeClasses[size],\n classNames?.closeButton\n )}\n aria-label={typeof children === 'string' ? `Remove ${children}` : 'Remove tag'}\n tabIndex={disableKeyboardRemoval ? 0 : -1}\n data-slot='closeButton'\n >\n <X className='w-full h-full' />\n </button>\n )}\n </span>\n );\n }\n);\n\nTag.displayName = 'Tag';\n\nexport type * from './types';\nexport default Tag;\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 { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -9,6 +9,7 @@ var RadioGroup = React.memo(
|
|
|
9
9
|
error,
|
|
10
10
|
orientation = "vertical",
|
|
11
11
|
className,
|
|
12
|
+
classNames,
|
|
12
13
|
children,
|
|
13
14
|
ref,
|
|
14
15
|
...props
|
|
@@ -17,17 +18,19 @@ var RadioGroup = React.memo(
|
|
|
17
18
|
"div",
|
|
18
19
|
{
|
|
19
20
|
ref,
|
|
20
|
-
className: cn("w-full", className),
|
|
21
|
+
className: cn("radioGroup_root", "w-full", className, classNames?.root),
|
|
21
22
|
role: "radiogroup",
|
|
22
23
|
...props,
|
|
23
24
|
children: [
|
|
24
|
-
label && /* @__PURE__ */ jsx("div", { className: "mb-2", children: /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-text-secondary", children: label }) }),
|
|
25
|
+
label && /* @__PURE__ */ jsx("div", { className: "mb-2", children: /* @__PURE__ */ jsx("span", { className: cn("radioGroup_label", "text-sm font-medium text-text-secondary", classNames?.label), children: label }) }),
|
|
25
26
|
/* @__PURE__ */ jsx(
|
|
26
27
|
"div",
|
|
27
28
|
{
|
|
28
29
|
className: cn(
|
|
30
|
+
"radioGroup_group",
|
|
29
31
|
"flex",
|
|
30
|
-
orientation === "vertical" ? "flex-col gap-2" : "flex-row flex-wrap gap-4"
|
|
32
|
+
orientation === "vertical" ? "flex-col gap-2" : "flex-row flex-wrap gap-4",
|
|
33
|
+
classNames?.group
|
|
31
34
|
),
|
|
32
35
|
children
|
|
33
36
|
}
|
|
@@ -36,8 +39,10 @@ var RadioGroup = React.memo(
|
|
|
36
39
|
"p",
|
|
37
40
|
{
|
|
38
41
|
className: cn(
|
|
42
|
+
error ? "radioGroup_error" : "radioGroup_helper",
|
|
39
43
|
"mt-2 text-xs",
|
|
40
|
-
error ? "text-error" : "text-text-secondary"
|
|
44
|
+
error ? "text-error" : "text-text-secondary",
|
|
45
|
+
error ? classNames?.error : classNames?.helper
|
|
41
46
|
),
|
|
42
47
|
children: error || helperText
|
|
43
48
|
}
|
|
@@ -51,5 +56,5 @@ RadioGroup.displayName = "RadioGroup";
|
|
|
51
56
|
var radio_group_default = RadioGroup;
|
|
52
57
|
|
|
53
58
|
export { RadioGroup, radio_group_default };
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
55
|
-
//# sourceMappingURL=chunk-
|
|
59
|
+
//# sourceMappingURL=chunk-SGRACNBP.js.map
|
|
60
|
+
//# sourceMappingURL=chunk-SGRACNBP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/radio-group/index.tsx"],"names":[],"mappings":";;;;AAKO,IAAM,aAAa,KAAA,CAAM,IAAA;AAAA,EAC9B,CAAC;AAAA,IACC,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA,GAAc,UAAA;AAAA,IACd,SAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAW,EAAA,CAAG,iBAAA,EAAmB,QAAA,EAAU,SAAA,EAAW,YAAY,IAAI,CAAA;AAAA,QACtE,IAAA,EAAK,YAAA;AAAA,QACJ,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,KAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACb,8BAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,yCAAA,EAA2C,UAAA,EAAY,KAAK,CAAA,EACjG,iBACH,CAAA,EACF,CAAA;AAAA,0BAEF,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,kBAAA;AAAA,gBACA,MAAA;AAAA,gBACA,WAAA,KAAgB,aACZ,gBAAA,GACA,0BAAA;AAAA,gBACJ,UAAA,EAAY;AAAA,eACd;AAAA,cAEC;AAAA;AAAA,WACH;AAAA,UAAA,CACE,cAAc,KAAA,qBACd,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,QAAQ,kBAAA,GAAqB,mBAAA;AAAA,gBAC7B,cAAA;AAAA,gBACA,QAAQ,YAAA,GAAe,qBAAA;AAAA,gBACvB,KAAA,GAAQ,UAAA,EAAY,KAAA,GAAQ,UAAA,EAAY;AAAA,eAC1C;AAAA,cAEC,QAAA,EAAA,KAAA,IAAS;AAAA;AAAA;AACZ;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AAGzB,IAAO,mBAAA,GAAQ","file":"chunk-SGRACNBP.js","sourcesContent":["import React from 'react'\n\nimport { cn } from '../utils'\nimport type { RadioGroupProps } from './types'\n\nexport const RadioGroup = React.memo<RadioGroupProps>(\n ({\n label,\n helperText,\n error,\n orientation = 'vertical',\n className,\n classNames,\n children,\n ref,\n ...props\n }) => {\n return (\n <div\n ref={ref}\n className={cn('radioGroup_root', 'w-full', className, classNames?.root)}\n role=\"radiogroup\"\n {...props}\n >\n {label && (\n <div className=\"mb-2\">\n <span className={cn('radioGroup_label', 'text-sm font-medium text-text-secondary', classNames?.label)}>\n {label}\n </span>\n </div>\n )}\n <div\n className={cn(\n 'radioGroup_group',\n 'flex',\n orientation === 'vertical'\n ? 'flex-col gap-2'\n : 'flex-row flex-wrap gap-4',\n classNames?.group,\n )}\n >\n {children}\n </div>\n {(helperText || error) && (\n <p\n className={cn(\n error ? 'radioGroup_error' : 'radioGroup_helper',\n 'mt-2 text-xs',\n error ? 'text-error' : 'text-text-secondary',\n error ? classNames?.error : classNames?.helper,\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n )\n },\n)\n\nRadioGroup.displayName = 'RadioGroup'\n\nexport type * from './types'\nexport default RadioGroup\n"]}
|
|
@@ -1,37 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { cn, iconSizes } from './chunk-
|
|
1
|
+
import { checkboxBorderColorClasses, checkedColorClasses, textColorClasses } from './chunk-NTPWR57C.js';
|
|
2
|
+
import { cn, iconSizes } from './chunk-NGYLRX6F.js';
|
|
3
3
|
import { cva } from 'class-variance-authority';
|
|
4
4
|
import { Check } from 'lucide-react';
|
|
5
|
-
import React, { useState } from 'react';
|
|
5
|
+
import React, { useState, useId, useCallback, useEffect } from 'react';
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
function useMergeRefs(...refs) {
|
|
9
|
+
const refsRef = React.useRef(refs);
|
|
10
|
+
refsRef.current = refs;
|
|
11
|
+
return useCallback((instance) => {
|
|
12
|
+
refsRef.current.forEach((ref) => {
|
|
13
|
+
if (typeof ref === "function") {
|
|
14
|
+
ref(instance);
|
|
15
|
+
} else if (ref && typeof ref === "object") {
|
|
16
|
+
ref.current = instance;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}, []);
|
|
20
|
+
}
|
|
17
21
|
var checkboxVariants = cva(
|
|
18
22
|
"appearance-none rounded border bg-background cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed outline-none",
|
|
19
23
|
{
|
|
20
24
|
variants: {
|
|
21
|
-
color:
|
|
22
|
-
primary: "border-border checked:border-primary",
|
|
23
|
-
secondary: "border-border checked:border-secondary",
|
|
24
|
-
accent: "border-border checked:border-accent",
|
|
25
|
-
success: "border-border checked:border-success",
|
|
26
|
-
error: "border-border checked:border-error",
|
|
27
|
-
warning: "border-border checked:border-warning",
|
|
28
|
-
info: "border-border checked:border-info"
|
|
29
|
-
},
|
|
25
|
+
color: checkboxBorderColorClasses,
|
|
30
26
|
size: {
|
|
31
|
-
xs: "w-
|
|
32
|
-
sm: "w-
|
|
33
|
-
md: "w-
|
|
34
|
-
lg: "w-
|
|
27
|
+
xs: "w-(--checkbox-size-xs) h-(--checkbox-size-xs)",
|
|
28
|
+
sm: "w-(--checkbox-size-sm) h-(--checkbox-size-sm)",
|
|
29
|
+
md: "w-(--checkbox-size-md) h-(--checkbox-size-md)",
|
|
30
|
+
lg: "w-(--checkbox-size-lg) h-(--checkbox-size-lg)"
|
|
35
31
|
},
|
|
36
32
|
error: {
|
|
37
33
|
true: "border-error checked:border-error",
|
|
@@ -57,16 +53,20 @@ var Checkbox = React.memo(
|
|
|
57
53
|
defaultChecked,
|
|
58
54
|
ref,
|
|
59
55
|
labelClassName,
|
|
56
|
+
classNames,
|
|
60
57
|
...props
|
|
61
58
|
}) => {
|
|
62
59
|
const [internalChecked, setInternalChecked] = useState(
|
|
63
60
|
defaultChecked ?? false
|
|
64
61
|
);
|
|
65
62
|
const internalRef = React.useRef(null);
|
|
66
|
-
const
|
|
63
|
+
const uniqueId = useId();
|
|
64
|
+
const helperId = `checkbox-helper-${uniqueId}`;
|
|
65
|
+
const hasHelperText = !!(helperText || error);
|
|
66
|
+
const mergedRef = useMergeRefs(ref, internalRef);
|
|
67
67
|
const isControlled = checked !== void 0;
|
|
68
68
|
const currentChecked = isControlled ? checked : internalChecked;
|
|
69
|
-
const onChange =
|
|
69
|
+
const onChange = useCallback(
|
|
70
70
|
(event) => {
|
|
71
71
|
if (!isControlled) {
|
|
72
72
|
setInternalChecked(event.target.checked);
|
|
@@ -75,33 +75,41 @@ var Checkbox = React.memo(
|
|
|
75
75
|
},
|
|
76
76
|
[isControlled, props.onChange]
|
|
77
77
|
);
|
|
78
|
-
|
|
79
|
-
if (
|
|
80
|
-
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
if (internalRef.current) {
|
|
80
|
+
internalRef.current.indeterminate = indeterminate;
|
|
81
81
|
}
|
|
82
|
-
}, [indeterminate
|
|
82
|
+
}, [indeterminate]);
|
|
83
83
|
const checkboxElement = /* @__PURE__ */ jsxs("div", { className: "relative inline-flex", children: [
|
|
84
84
|
/* @__PURE__ */ jsx(
|
|
85
85
|
"input",
|
|
86
86
|
{
|
|
87
|
-
ref:
|
|
87
|
+
ref: mergedRef,
|
|
88
88
|
type: "checkbox",
|
|
89
89
|
className: cn(
|
|
90
|
+
"checkbox_checkbox",
|
|
90
91
|
checkboxVariants({ color, size, error: !!error }),
|
|
91
|
-
className
|
|
92
|
+
className,
|
|
93
|
+
classNames?.checkbox
|
|
92
94
|
),
|
|
93
95
|
"aria-checked": indeterminate ? "mixed" : currentChecked,
|
|
96
|
+
"aria-invalid": !!error || void 0,
|
|
97
|
+
"aria-describedby": hasHelperText ? helperId : void 0,
|
|
94
98
|
...props,
|
|
95
99
|
onChange,
|
|
96
100
|
checked: currentChecked
|
|
97
101
|
}
|
|
98
102
|
),
|
|
99
|
-
currentChecked && /* @__PURE__ */ jsx("div", { className:
|
|
103
|
+
currentChecked && /* @__PURE__ */ jsx("div", { className: cn(
|
|
104
|
+
"checkbox_indicator",
|
|
105
|
+
"absolute inset-0 flex items-center justify-center pointer-events-none",
|
|
106
|
+
classNames?.indicator
|
|
107
|
+
), children: indeterminate ? /* @__PURE__ */ jsx(
|
|
100
108
|
"div",
|
|
101
109
|
{
|
|
102
110
|
className: cn(
|
|
103
111
|
"w-[70%] h-[70%] rounded-xs border-2 border-background flex items-center justify-center",
|
|
104
|
-
|
|
112
|
+
checkedColorClasses[color]
|
|
105
113
|
)
|
|
106
114
|
}
|
|
107
115
|
) : /* @__PURE__ */ jsx(
|
|
@@ -109,13 +117,13 @@ var Checkbox = React.memo(
|
|
|
109
117
|
{
|
|
110
118
|
className: cn(
|
|
111
119
|
iconSizes[size],
|
|
112
|
-
|
|
120
|
+
textColorClasses[color]
|
|
113
121
|
)
|
|
114
122
|
}
|
|
115
123
|
) })
|
|
116
124
|
] });
|
|
117
125
|
if (!label && !helperText && !error) return checkboxElement;
|
|
118
|
-
return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
|
|
126
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("checkbox_root", "w-full", classNames?.root), children: [
|
|
119
127
|
/* @__PURE__ */ jsxs(
|
|
120
128
|
"label",
|
|
121
129
|
{
|
|
@@ -129,10 +137,12 @@ var Checkbox = React.memo(
|
|
|
129
137
|
"span",
|
|
130
138
|
{
|
|
131
139
|
className: cn(
|
|
140
|
+
"checkbox_label",
|
|
132
141
|
"text-sm text-text-primary select-none",
|
|
133
142
|
error && "text-error",
|
|
134
143
|
props.disabled && "opacity-50",
|
|
135
|
-
labelClassName
|
|
144
|
+
labelClassName,
|
|
145
|
+
classNames?.label
|
|
136
146
|
),
|
|
137
147
|
children: label
|
|
138
148
|
}
|
|
@@ -143,11 +153,14 @@ var Checkbox = React.memo(
|
|
|
143
153
|
(helperText || error) && /* @__PURE__ */ jsx(
|
|
144
154
|
"p",
|
|
145
155
|
{
|
|
156
|
+
id: helperId,
|
|
146
157
|
className: cn(
|
|
158
|
+
"checkbox_description",
|
|
147
159
|
"mt-1 ml-0 text-xs",
|
|
148
|
-
error ? "text-error" : "text-text-secondary"
|
|
160
|
+
error ? "text-error" : "text-text-secondary",
|
|
161
|
+
classNames?.description
|
|
149
162
|
),
|
|
150
|
-
children: error
|
|
163
|
+
children: typeof error === "string" ? error : helperText
|
|
151
164
|
}
|
|
152
165
|
)
|
|
153
166
|
] });
|
|
@@ -157,5 +170,5 @@ Checkbox.displayName = "Checkbox";
|
|
|
157
170
|
var checkbox_default = Checkbox;
|
|
158
171
|
|
|
159
172
|
export { checkbox_default };
|
|
160
|
-
//# sourceMappingURL=chunk-
|
|
161
|
-
//# sourceMappingURL=chunk-
|
|
173
|
+
//# sourceMappingURL=chunk-TTEBZZ3T.js.map
|
|
174
|
+
//# sourceMappingURL=chunk-TTEBZZ3T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/checkbox/index.tsx"],"names":[],"mappings":";;;;;;;AAcA,SAAS,gBACJ,IAAA,EACmB;AAEtB,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AACjC,EAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAElB,EAAA,OAAO,WAAA,CAAY,CAAC,QAAA,KAAuB;AACzC,IAAA,OAAA,CAAQ,OAAA,CAAQ,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC/B,MAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,QAAA,GAAA,CAAI,QAAQ,CAAA;AAAA,MACd,CAAA,MAAA,IAAW,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,EAAU;AACxC,QAAC,IAAyC,OAAA,GAAU,QAAA;AAAA,MACvD;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AACP;AAEA,IAAM,gBAAA,GAAmB,GAAA;AAAA,EACvB,0HAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,KAAA,EAAO,0BAAA;AAAA,MACP,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,+CAAA;AAAA,QACJ,EAAA,EAAI,+CAAA;AAAA,QACJ,EAAA,EAAI,+CAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,mCAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,IAAM,WAAW,KAAA,CAAM,IAAA;AAAA,EACrB,CAAC;AAAA,IACC,KAAA,GAAQ,SAAA;AAAA,IACR,IAAA,GAAO,IAAA;AAAA,IACP,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA,GAAgB,KAAA;AAAA,IAChB,SAAA;AAAA,IACA,OAAA;AAAA,IACA,cAAA;AAAA,IACA,GAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,QAAA;AAAA,MAC5C,cAAA,IAAkB;AAAA,KACpB;AACA,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,MAAA,CAAyB,IAAI,CAAA;AAGvD,IAAA,MAAM,WAAW,KAAA,EAAM;AACvB,IAAA,MAAM,QAAA,GAAW,mBAAmB,QAAQ,CAAA,CAAA;AAC5C,IAAA,MAAM,aAAA,GAAgB,CAAC,EAAE,UAAA,IAAc,KAAA,CAAA;AAGvC,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,GAAA,EAAK,WAAW,CAAA;AAG/C,IAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,IAAA,MAAM,cAAA,GAAiB,eAAe,OAAA,GAAU,eAAA;AAEhD,IAAA,MAAM,QAAA,GAAW,WAAA;AAAA,MACf,CAAC,KAAA,KAA+C;AAC9C,QAAA,IAAI,CAAC,YAAA,EAAc;AACjB,UAAA,kBAAA,CAAmB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,QACzC;AACA,QAAA,KAAA,CAAM,WAAW,KAAK,CAAA;AAAA,MACxB,CAAA;AAAA,MACA,CAAC,YAAA,EAAc,KAAA,CAAM,QAAQ;AAAA,KAC/B;AAEA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,WAAA,CAAY,QAAQ,aAAA,GAAgB,aAAA;AAAA,MACtC;AAAA,IACF,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,IAAA,MAAM,eAAA,mBACJ,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,SAAA;AAAA,UACL,IAAA,EAAK,UAAA;AAAA,UACL,SAAA,EAAW,EAAA;AAAA,YACT,mBAAA;AAAA,YACA,gBAAA,CAAiB,EAAE,KAAA,EAAO,IAAA,EAAM,OAAO,CAAC,CAAC,OAAO,CAAA;AAAA,YAChD,SAAA;AAAA,YACA,UAAA,EAAY;AAAA,WACd;AAAA,UACA,cAAA,EAAc,gBAAgB,OAAA,GAAU,cAAA;AAAA,UACxC,cAAA,EAAc,CAAC,CAAC,KAAA,IAAS,MAAA;AAAA,UACzB,kBAAA,EAAkB,gBAAgB,QAAA,GAAW,MAAA;AAAA,UAC5C,GAAG,KAAA;AAAA,UACJ,QAAA;AAAA,UACA,OAAA,EAAS;AAAA;AAAA,OACX;AAAA,MACC,cAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA;AAAA,QACd,oBAAA;AAAA,QACA,uEAAA;AAAA,QACA,UAAA,EAAY;AAAA,SAEX,QAAA,EAAA,aAAA,mBACC,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,wFAAA;AAAA,YACA,oBAAoB,KAAK;AAAA;AAC3B;AAAA,OACF,mBAEA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,UAAU,IAAI,CAAA;AAAA,YACd,iBAAiB,KAAK;AAAA;AACxB;AAAA,OACF,EAEJ;AAAA,KAAA,EAEJ,CAAA;AAGF,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,UAAA,IAAc,CAAC,OAAO,OAAO,eAAA;AAE5C,IAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,iBAAiB,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA,EAC5D,QAAA,EAAA;AAAA,sBAAA,IAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,yBAAA;AAAA,YACA,CAAC,MAAM,QAAA,IAAY;AAAA,WACrB;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA,eAAA;AAAA,YACA,KAAA,oBACC,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,gBAAA;AAAA,kBACA,uCAAA;AAAA,kBACA,KAAA,IAAS,YAAA;AAAA,kBACT,MAAM,QAAA,IAAY,YAAA;AAAA,kBAClB,cAAA;AAAA,kBACA,UAAA,EAAY;AAAA,iBACd;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,OAEJ;AAAA,MAAA,CACE,cAAc,KAAA,qBACd,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,QAAA;AAAA,UACJ,SAAA,EAAW,EAAA;AAAA,YACT,sBAAA;AAAA,YACA,mBAAA;AAAA,YACA,QAAQ,YAAA,GAAe,qBAAA;AAAA,YACvB,UAAA,EAAY;AAAA,WACd;AAAA,UAEC,QAAA,EAAA,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ;AAAA;AAAA;AACvC,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AAGvB,IAAO,gBAAA,GAAQ","file":"chunk-TTEBZZ3T.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport { Check } from 'lucide-react'\nimport React, { useState, useCallback, useEffect, useId } from 'react'\n\nimport { cn, iconSizes } from '../utils'\nimport { checkboxBorderColorClasses, checkedColorClasses, textColorClasses } from '../variants'\nimport type { CheckboxProps } from './types'\n\n/**\n * Merges multiple refs into a single callback ref.\n * Handles both callback refs and RefObject refs safely.\n */\nfunction useMergeRefs<T>(\n ...refs: (React.Ref<T> | undefined)[]\n): React.RefCallback<T> {\n // Store refs in a ref to avoid dependency array issues\n const refsRef = React.useRef(refs)\n refsRef.current = refs\n\n return useCallback((instance: T | null) => {\n refsRef.current.forEach((ref) => {\n if (typeof ref === 'function') {\n ref(instance)\n } else if (ref && typeof ref === 'object') {\n ;(ref as React.MutableRefObject<T | null>).current = instance\n }\n })\n }, [])\n}\n\nconst checkboxVariants = cva(\n 'appearance-none rounded border bg-background cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed outline-none',\n {\n variants: {\n color: checkboxBorderColorClasses,\n size: {\n xs: 'w-(--checkbox-size-xs) h-(--checkbox-size-xs)',\n sm: 'w-(--checkbox-size-sm) h-(--checkbox-size-sm)',\n md: 'w-(--checkbox-size-md) h-(--checkbox-size-md)',\n lg: 'w-(--checkbox-size-lg) h-(--checkbox-size-lg)',\n },\n error: {\n true: 'border-error checked:border-error',\n false: '',\n },\n },\n defaultVariants: {\n color: 'primary',\n size: 'md',\n },\n },\n)\n\nconst Checkbox = React.memo<CheckboxProps>(\n ({\n color = 'primary',\n size = 'md',\n label,\n helperText,\n error,\n indeterminate = false,\n className,\n checked,\n defaultChecked,\n ref,\n labelClassName,\n classNames,\n ...props\n }) => {\n const [internalChecked, setInternalChecked] = useState(\n defaultChecked ?? false,\n )\n const internalRef = React.useRef<HTMLInputElement>(null)\n\n // Generate unique ID for accessibility\n const uniqueId = useId()\n const helperId = `checkbox-helper-${uniqueId}`\n const hasHelperText = !!(helperText || error)\n\n // Safely merge refs - handles both callback refs and RefObject refs\n const mergedRef = useMergeRefs(ref, internalRef)\n\n // Determine if controlled\n const isControlled = checked !== undefined\n const currentChecked = isControlled ? checked : internalChecked\n\n const onChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(event.target.checked)\n }\n props.onChange?.(event)\n },\n [isControlled, props.onChange],\n )\n\n useEffect(() => {\n if (internalRef.current) {\n internalRef.current.indeterminate = indeterminate\n }\n }, [indeterminate])\n\n const checkboxElement = (\n <div className=\"relative inline-flex\">\n <input\n ref={mergedRef}\n type=\"checkbox\"\n className={cn(\n 'checkbox_checkbox',\n checkboxVariants({ color, size, error: !!error }),\n className,\n classNames?.checkbox,\n )}\n aria-checked={indeterminate ? 'mixed' : currentChecked}\n aria-invalid={!!error || undefined}\n aria-describedby={hasHelperText ? helperId : undefined}\n {...props}\n onChange={onChange}\n checked={currentChecked}\n />\n {currentChecked && (\n <div className={cn(\n 'checkbox_indicator',\n 'absolute inset-0 flex items-center justify-center pointer-events-none',\n classNames?.indicator,\n )}>\n {indeterminate ? (\n <div\n className={cn(\n 'w-[70%] h-[70%] rounded-xs border-2 border-background flex items-center justify-center',\n checkedColorClasses[color],\n )}\n />\n ) : (\n <Check\n className={cn(\n iconSizes[size],\n textColorClasses[color],\n )}\n />\n )}\n </div>\n )}\n </div>\n )\n\n if (!label && !helperText && !error) return checkboxElement\n\n return (\n <div className={cn('checkbox_root', 'w-full', classNames?.root)}>\n <label\n className={cn(\n 'flex items-center gap-2',\n !props.disabled && 'cursor-pointer',\n )}\n >\n {checkboxElement}\n {label && (\n <span\n className={cn(\n 'checkbox_label',\n 'text-sm text-text-primary select-none',\n error && 'text-error',\n props.disabled && 'opacity-50',\n labelClassName,\n classNames?.label,\n )}\n >\n {label}\n </span>\n )}\n </label>\n {(helperText || error) && (\n <p\n id={helperId}\n className={cn(\n 'checkbox_description',\n 'mt-1 ml-0 text-xs',\n error ? 'text-error' : 'text-text-secondary',\n classNames?.description,\n )}\n >\n {typeof error === 'string' ? error : helperText}\n </p>\n )}\n </div>\n )\n },\n)\n\nCheckbox.displayName = 'Checkbox'\n\nexport type * from './types'\nexport default Checkbox\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { checkbox_default } from './chunk-
|
|
2
|
-
import { cn, getValidationStatus, iconSizes, statusMessageVariants } from './chunk-
|
|
1
|
+
import { checkbox_default } from './chunk-TTEBZZ3T.js';
|
|
2
|
+
import { cn, getValidationStatus, iconSizes, statusMessageVariants } from './chunk-NGYLRX6F.js';
|
|
3
3
|
import { Search, ChevronRight, ChevronLeft, ChevronsRight, ChevronsLeft } from 'lucide-react';
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import { cva } from 'class-variance-authority';
|
|
@@ -30,7 +30,7 @@ var transferItemVariants = cva(
|
|
|
30
30
|
);
|
|
31
31
|
var transferButtonVariants = cva("flex flex-col gap-2");
|
|
32
32
|
var transferActionButtonVariants = cva(
|
|
33
|
-
"flex items-center justify-center p-2 rounded-md border border-border bg-background text-text-
|
|
33
|
+
"flex items-center justify-center p-2 rounded-md border border-border bg-background text-text-secondary hover:bg-primary hover:text-white hover:border-primary transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-background disabled:hover:text-text-secondary disabled:hover:border-border"
|
|
34
34
|
);
|
|
35
35
|
var filterItems = (items, searchValue) => {
|
|
36
36
|
if (!searchValue) return items;
|
|
@@ -59,7 +59,8 @@ var TransferList = React.memo(
|
|
|
59
59
|
onItemSelectAll,
|
|
60
60
|
onSearch,
|
|
61
61
|
render,
|
|
62
|
-
footer
|
|
62
|
+
footer,
|
|
63
|
+
classNames
|
|
63
64
|
}) => {
|
|
64
65
|
const [searchValue, setSearchValue] = React.useState("");
|
|
65
66
|
const filteredData = React.useMemo(
|
|
@@ -100,8 +101,8 @@ var TransferList = React.memo(
|
|
|
100
101
|
},
|
|
101
102
|
[selectedKeys, onItemSelect]
|
|
102
103
|
);
|
|
103
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col border border-border rounded-lg bg-card overflow-hidden min-w-72", children: [
|
|
104
|
-
/* @__PURE__ */ jsx("div", { className: transferHeaderVariants(), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
104
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col border border-border rounded-lg bg-card overflow-hidden min-w-72 transfer_list", classNames?.list), children: [
|
|
105
|
+
/* @__PURE__ */ jsx("div", { className: cn(transferHeaderVariants(), "transfer_header", classNames?.header), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
105
106
|
showSelectAll && /* @__PURE__ */ jsx(
|
|
106
107
|
checkbox_default,
|
|
107
108
|
{
|
|
@@ -114,7 +115,7 @@ var TransferList = React.memo(
|
|
|
114
115
|
),
|
|
115
116
|
/* @__PURE__ */ jsxs("span", { className: "text-sm font-medium text-text-primary", children: [
|
|
116
117
|
title,
|
|
117
|
-
/* @__PURE__ */ jsxs("span", { className: "text-text-
|
|
118
|
+
/* @__PURE__ */ jsxs("span", { className: "text-text-secondary ml-1", children: [
|
|
118
119
|
"(",
|
|
119
120
|
selectedCount,
|
|
120
121
|
"/",
|
|
@@ -124,12 +125,12 @@ var TransferList = React.memo(
|
|
|
124
125
|
] })
|
|
125
126
|
] }) }),
|
|
126
127
|
showSearch && /* @__PURE__ */ jsx("div", { className: "p-2 border-b border-border", children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
127
|
-
/* @__PURE__ */ jsx(Search, { className: "absolute left-2 top-1/2 -translate-y-1/2 w-4 h-4 text-text-
|
|
128
|
+
/* @__PURE__ */ jsx(Search, { className: "absolute left-2 top-1/2 -translate-y-1/2 w-4 h-4 text-text-secondary" }),
|
|
128
129
|
/* @__PURE__ */ jsx(
|
|
129
130
|
"input",
|
|
130
131
|
{
|
|
131
132
|
type: "text",
|
|
132
|
-
className: "w-full pl-8 pr-3 py-1.5 text-sm bg-background border border-border rounded-md outline-none focus:border-primary transition-colors",
|
|
133
|
+
className: cn("w-full pl-8 pr-3 py-1.5 text-sm bg-background border border-border rounded-md outline-none focus:border-primary transition-colors transfer_search", classNames?.search),
|
|
133
134
|
placeholder: searchPlaceholder,
|
|
134
135
|
value: searchValue,
|
|
135
136
|
onChange: handleSearchChange,
|
|
@@ -142,14 +143,16 @@ var TransferList = React.memo(
|
|
|
142
143
|
{
|
|
143
144
|
className: transferBodyVariants(),
|
|
144
145
|
style: { height: listHeight },
|
|
145
|
-
children: filteredData.length === 0 ? /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full text-sm text-text-
|
|
146
|
+
children: filteredData.length === 0 ? /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full text-sm text-text-secondary", children: "No data" }) : filteredData.map((item) => /* @__PURE__ */ jsxs(
|
|
146
147
|
"div",
|
|
147
148
|
{
|
|
148
149
|
className: cn(
|
|
149
150
|
transferItemVariants({
|
|
150
151
|
selected: selectedKeys.includes(item.key),
|
|
151
152
|
disabled: !!item.disabled || disabled
|
|
152
|
-
})
|
|
153
|
+
}),
|
|
154
|
+
"transfer_item",
|
|
155
|
+
classNames?.item
|
|
153
156
|
),
|
|
154
157
|
onClick: () => handleItemSelect(item),
|
|
155
158
|
children: [
|
|
@@ -165,7 +168,7 @@ var TransferList = React.memo(
|
|
|
165
168
|
),
|
|
166
169
|
render ? render(item) : /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
167
170
|
/* @__PURE__ */ jsx("div", { className: "text-sm text-text-primary truncate", children: item.label }),
|
|
168
|
-
item.description && /* @__PURE__ */ jsx("div", { className: "text-xs text-text-
|
|
171
|
+
item.description && /* @__PURE__ */ jsx("div", { className: "text-xs text-text-secondary truncate", children: item.description })
|
|
169
172
|
] })
|
|
170
173
|
]
|
|
171
174
|
},
|
|
@@ -173,7 +176,7 @@ var TransferList = React.memo(
|
|
|
173
176
|
))
|
|
174
177
|
}
|
|
175
178
|
),
|
|
176
|
-
footer && /* @__PURE__ */ jsx("div", { className: "px-4 py-2 border-t border-border bg-surface text-sm text-text-
|
|
179
|
+
footer && /* @__PURE__ */ jsx("div", { className: "px-4 py-2 border-t border-border bg-surface text-sm text-text-secondary", children: footer })
|
|
177
180
|
] });
|
|
178
181
|
}
|
|
179
182
|
);
|
|
@@ -203,6 +206,7 @@ var Transfer = React.memo(
|
|
|
203
206
|
info,
|
|
204
207
|
success,
|
|
205
208
|
className,
|
|
209
|
+
classNames,
|
|
206
210
|
ref
|
|
207
211
|
}) => {
|
|
208
212
|
const [internalTargetKeys, setInternalTargetKeys] = React.useState(defaultTargetKeys);
|
|
@@ -301,8 +305,8 @@ var Transfer = React.memo(
|
|
|
301
305
|
const leftFooter = footer?.({ direction: "left" });
|
|
302
306
|
const rightFooter = footer?.({ direction: "right" });
|
|
303
307
|
return /* @__PURE__ */ jsxs("div", { ref, children: [
|
|
304
|
-
label && /* @__PURE__ */ jsx("label", { className: "block mb-2", children: /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-text-
|
|
305
|
-
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-4", className), children: [
|
|
308
|
+
label && /* @__PURE__ */ jsx("label", { className: "block mb-2", children: /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-text-secondary", children: label }) }),
|
|
309
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-4 transfer_root", classNames?.root, className), children: [
|
|
306
310
|
/* @__PURE__ */ jsx(
|
|
307
311
|
TransferList,
|
|
308
312
|
{
|
|
@@ -320,10 +324,11 @@ var Transfer = React.memo(
|
|
|
320
324
|
onSearch: (value) => onSearch?.("left", value),
|
|
321
325
|
render,
|
|
322
326
|
footer: leftFooter,
|
|
323
|
-
size
|
|
327
|
+
size,
|
|
328
|
+
classNames
|
|
324
329
|
}
|
|
325
330
|
),
|
|
326
|
-
/* @__PURE__ */ jsxs("div", { className: transferButtonVariants(), children: [
|
|
331
|
+
/* @__PURE__ */ jsxs("div", { className: cn(transferButtonVariants(), "transfer_actions", classNames?.actions), children: [
|
|
327
332
|
/* @__PURE__ */ jsx(
|
|
328
333
|
"button",
|
|
329
334
|
{
|
|
@@ -386,7 +391,8 @@ var Transfer = React.memo(
|
|
|
386
391
|
onSearch: (value) => onSearch?.("right", value),
|
|
387
392
|
render,
|
|
388
393
|
footer: rightFooter,
|
|
389
|
-
size
|
|
394
|
+
size,
|
|
395
|
+
classNames
|
|
390
396
|
}
|
|
391
397
|
)
|
|
392
398
|
] }),
|
|
@@ -397,5 +403,5 @@ var Transfer = React.memo(
|
|
|
397
403
|
Transfer.displayName = "Transfer";
|
|
398
404
|
|
|
399
405
|
export { Transfer };
|
|
400
|
-
//# sourceMappingURL=chunk-
|
|
401
|
-
//# sourceMappingURL=chunk-
|
|
406
|
+
//# sourceMappingURL=chunk-US4ZCMNU.js.map
|
|
407
|
+
//# sourceMappingURL=chunk-US4ZCMNU.js.map
|