@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.
Files changed (274) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1023 -341
  3. package/dist/accordion/index.js +3 -3
  4. package/dist/avatar/index.js +4 -0
  5. package/dist/avatar/index.js.map +1 -0
  6. package/dist/badge/index.js +3 -3
  7. package/dist/breadcrumbs/index.js +5 -5
  8. package/dist/button/index.js +4 -4
  9. package/dist/button-group/index.js +2 -2
  10. package/dist/card/index.js +2 -2
  11. package/dist/carousel/index.js +2 -1
  12. package/dist/cascader/index.js +2 -2
  13. package/dist/chart/index.js +2 -2
  14. package/dist/checkbox/index.js +3 -3
  15. package/dist/checkbox-group/index.js +2 -2
  16. package/dist/chunk-27QEPVKU.js +115 -0
  17. package/dist/chunk-27QEPVKU.js.map +1 -0
  18. package/dist/{chunk-Y5A26EGR.js → chunk-2J57G7XG.js} +82 -24
  19. package/dist/chunk-2J57G7XG.js.map +1 -0
  20. package/dist/{chunk-FPOXTCYV.js → chunk-2NYVRAG4.js} +29 -20
  21. package/dist/chunk-2NYVRAG4.js.map +1 -0
  22. package/dist/chunk-2OUGJBXK.js +742 -0
  23. package/dist/chunk-2OUGJBXK.js.map +1 -0
  24. package/dist/{chunk-ROR4E6IE.js → chunk-2WZVD7P3.js} +38 -12
  25. package/dist/chunk-2WZVD7P3.js.map +1 -0
  26. package/dist/chunk-3UCZ4GMN.js +84 -0
  27. package/dist/chunk-3UCZ4GMN.js.map +1 -0
  28. package/dist/{chunk-RPAQAZTI.js → chunk-4LSKRZOT.js} +12 -7
  29. package/dist/chunk-4LSKRZOT.js.map +1 -0
  30. package/dist/{chunk-ASW7TEAN.js → chunk-4SQOFZ3N.js} +35 -18
  31. package/dist/chunk-4SQOFZ3N.js.map +1 -0
  32. package/dist/chunk-5PUATOLR.js +127 -0
  33. package/dist/chunk-5PUATOLR.js.map +1 -0
  34. package/dist/chunk-6TMOKYR7.js +75 -0
  35. package/dist/chunk-6TMOKYR7.js.map +1 -0
  36. package/dist/chunk-7UCNBMCV.js +261 -0
  37. package/dist/chunk-7UCNBMCV.js.map +1 -0
  38. package/dist/chunk-AQYOVYPS.js +237 -0
  39. package/dist/chunk-AQYOVYPS.js.map +1 -0
  40. package/dist/{chunk-BP434VYV.js → chunk-C5YO5VZS.js} +17 -17
  41. package/dist/chunk-C5YO5VZS.js.map +1 -0
  42. package/dist/{chunk-ZNJ7M5QK.js → chunk-CHGJX5F2.js} +69 -46
  43. package/dist/chunk-CHGJX5F2.js.map +1 -0
  44. package/dist/chunk-CK6A2R66.js +336 -0
  45. package/dist/chunk-CK6A2R66.js.map +1 -0
  46. package/dist/{chunk-I5ANSIDK.js → chunk-CMGCJXE5.js} +280 -100
  47. package/dist/chunk-CMGCJXE5.js.map +1 -0
  48. package/dist/chunk-CSRMVLPR.js +394 -0
  49. package/dist/chunk-CSRMVLPR.js.map +1 -0
  50. package/dist/chunk-DH7R6NBG.js +107 -0
  51. package/dist/chunk-DH7R6NBG.js.map +1 -0
  52. package/dist/{chunk-XMAH5PDW.js → chunk-FEMHXG2P.js} +28 -11
  53. package/dist/chunk-FEMHXG2P.js.map +1 -0
  54. package/dist/chunk-FIGSNRWY.js +382 -0
  55. package/dist/chunk-FIGSNRWY.js.map +1 -0
  56. package/dist/{chunk-C7SXY3ZV.js → chunk-FVTMKQUE.js} +5 -3
  57. package/dist/chunk-FVTMKQUE.js.map +1 -0
  58. package/dist/{chunk-UAMFKX6L.js → chunk-GBVIACYQ.js} +103 -42
  59. package/dist/chunk-GBVIACYQ.js.map +1 -0
  60. package/dist/chunk-H47C2ENJ.js +215 -0
  61. package/dist/chunk-H47C2ENJ.js.map +1 -0
  62. package/dist/chunk-HWFI4GJE.js +130 -0
  63. package/dist/chunk-HWFI4GJE.js.map +1 -0
  64. package/dist/chunk-IA42ELUP.js +72 -0
  65. package/dist/chunk-IA42ELUP.js.map +1 -0
  66. package/dist/{chunk-HUVXKOJC.js → chunk-INQI3UUI.js} +80 -22
  67. package/dist/chunk-INQI3UUI.js.map +1 -0
  68. package/dist/{chunk-BNILRB4T.js → chunk-J525ROGL.js} +12 -7
  69. package/dist/chunk-J525ROGL.js.map +1 -0
  70. package/dist/chunk-JLS4MBHN.js +205 -0
  71. package/dist/chunk-JLS4MBHN.js.map +1 -0
  72. package/dist/{chunk-SK5ECBBK.js → chunk-KTHWXHDN.js} +15 -6
  73. package/dist/chunk-KTHWXHDN.js.map +1 -0
  74. package/dist/{chunk-SOV4PE3P.js → chunk-LMR7TKDJ.js} +25 -7
  75. package/dist/chunk-LMR7TKDJ.js.map +1 -0
  76. package/dist/{chunk-NNSS366W.js → chunk-MRFCITKK.js} +53 -11
  77. package/dist/chunk-MRFCITKK.js.map +1 -0
  78. package/dist/chunk-MXDTUN3V.js +459 -0
  79. package/dist/chunk-MXDTUN3V.js.map +1 -0
  80. package/dist/{chunk-YNNAOXU5.js → chunk-NGYLRX6F.js} +3 -18
  81. package/dist/chunk-NGYLRX6F.js.map +1 -0
  82. package/dist/chunk-NTPWR57C.js +445 -0
  83. package/dist/chunk-NTPWR57C.js.map +1 -0
  84. package/dist/chunk-OWXQ45GS.js +276 -0
  85. package/dist/chunk-OWXQ45GS.js.map +1 -0
  86. package/dist/{chunk-75XESYGN.js → chunk-P6A75RAH.js} +7 -13
  87. package/dist/chunk-P6A75RAH.js.map +1 -0
  88. package/dist/{chunk-RMGIO27V.js → chunk-PXOHJJBE.js} +39 -10
  89. package/dist/chunk-PXOHJJBE.js.map +1 -0
  90. package/dist/{chunk-SAVE5ACL.js → chunk-Q57THXIU.js} +28 -10
  91. package/dist/chunk-Q57THXIU.js.map +1 -0
  92. package/dist/{chunk-J3G5WWGR.js → chunk-QDHGE7IF.js} +7 -15
  93. package/dist/chunk-QDHGE7IF.js.map +1 -0
  94. package/dist/{chunk-7PKVBUGL.js → chunk-QKSDVYKF.js} +4 -4
  95. package/dist/chunk-QKSDVYKF.js.map +1 -0
  96. package/dist/chunk-ROA7BYGB.js +123 -0
  97. package/dist/chunk-ROA7BYGB.js.map +1 -0
  98. package/dist/{chunk-DPOSWW22.js → chunk-RPIJ2KY7.js} +11 -4
  99. package/dist/chunk-RPIJ2KY7.js.map +1 -0
  100. package/dist/{chunk-R225A5II.js → chunk-RW4RW4DV.js} +80 -30
  101. package/dist/chunk-RW4RW4DV.js.map +1 -0
  102. package/dist/chunk-RYKVZFGB.js +607 -0
  103. package/dist/chunk-RYKVZFGB.js.map +1 -0
  104. package/dist/chunk-SAVEKACZ.js +552 -0
  105. package/dist/chunk-SAVEKACZ.js.map +1 -0
  106. package/dist/chunk-SDNT2JGC.js +143 -0
  107. package/dist/chunk-SDNT2JGC.js.map +1 -0
  108. package/dist/{chunk-DOKTHDG3.js → chunk-SGRACNBP.js} +12 -7
  109. package/dist/chunk-SGRACNBP.js.map +1 -0
  110. package/dist/{chunk-OALOWWO7.js → chunk-TTEBZZ3T.js} +55 -42
  111. package/dist/chunk-TTEBZZ3T.js.map +1 -0
  112. package/dist/{chunk-FCMVKFVV.js → chunk-US4ZCMNU.js} +26 -20
  113. package/dist/chunk-US4ZCMNU.js.map +1 -0
  114. package/dist/chunk-UUP7YGOS.js +299 -0
  115. package/dist/chunk-UUP7YGOS.js.map +1 -0
  116. package/dist/{chunk-QPJL66S7.js → chunk-VUBU7Y4F.js} +123 -55
  117. package/dist/chunk-VUBU7Y4F.js.map +1 -0
  118. package/dist/chunk-WUBMNJGC.js +141 -0
  119. package/dist/chunk-WUBMNJGC.js.map +1 -0
  120. package/dist/chunk-WVG3QQDN.js +283 -0
  121. package/dist/chunk-WVG3QQDN.js.map +1 -0
  122. package/dist/chunk-WZ2KDHFP.js +109 -0
  123. package/dist/chunk-WZ2KDHFP.js.map +1 -0
  124. package/dist/{chunk-FGWSUPVW.js → chunk-X5SCI7KH.js} +190 -137
  125. package/dist/chunk-X5SCI7KH.js.map +1 -0
  126. package/dist/{chunk-D3JWPGCA.js → chunk-XJCWPPMM.js} +10 -56
  127. package/dist/chunk-XJCWPPMM.js.map +1 -0
  128. package/dist/{chunk-LEKLQR4I.js → chunk-YAAV7FQG.js} +70 -45
  129. package/dist/chunk-YAAV7FQG.js.map +1 -0
  130. package/dist/chunk-YOG5GXIC.js +196 -0
  131. package/dist/chunk-YOG5GXIC.js.map +1 -0
  132. package/dist/chunk-Z5VJ6MJP.js +234 -0
  133. package/dist/chunk-Z5VJ6MJP.js.map +1 -0
  134. package/dist/{chunk-267WNY3E.js → chunk-ZC3E3PWH.js} +109 -73
  135. package/dist/chunk-ZC3E3PWH.js.map +1 -0
  136. package/dist/clipboard/index.js +2 -2
  137. package/dist/collapse/index.js +2 -2
  138. package/dist/command/index.js +3 -3
  139. package/dist/context-menu/index.js +4 -0
  140. package/dist/context-menu/index.js.map +1 -0
  141. package/dist/date-picker/index.js +4 -3
  142. package/dist/descriptions/index.js +2 -2
  143. package/dist/divider/index.js +4 -0
  144. package/dist/divider/index.js.map +1 -0
  145. package/dist/drawer/index.js +2 -2
  146. package/dist/dropdown/index.js +4 -3
  147. package/dist/empty/index.js +2 -2
  148. package/dist/fetching-overlay/index.js +4 -3
  149. package/dist/grid/index.js +2 -2
  150. package/dist/image/index.js +2 -2
  151. package/dist/index.d.ts +2494 -211
  152. package/dist/index.js +63 -186
  153. package/dist/index.js.map +1 -1
  154. package/dist/input/index.js +4 -3
  155. package/dist/input-group/index.js +2 -2
  156. package/dist/input-otp/index.js +2 -2
  157. package/dist/input-password/index.js +5 -4
  158. package/dist/kbd/index.js +3 -2
  159. package/dist/modal/index.js +2 -2
  160. package/dist/multi-select/index.js +4 -3
  161. package/dist/notification/index.js +3 -2
  162. package/dist/pagination/index.js +2 -2
  163. package/dist/popover/index.js +3 -2
  164. package/dist/progress/index.js +2 -2
  165. package/dist/radio/index.js +3 -2
  166. package/dist/radio-group/index.js +2 -2
  167. package/dist/rating/index.js +2 -2
  168. package/dist/ribbon/index.js +2 -2
  169. package/dist/select/index.js +5 -4
  170. package/dist/skeleton/index.js +3 -2
  171. package/dist/slider/index.js +2 -2
  172. package/dist/spinner/index.js +3 -2
  173. package/dist/stepper/index.js +2 -2
  174. package/dist/styles/base.css +2165 -1375
  175. package/dist/styles/global.css +2393 -1036
  176. package/dist/styles/themes/dark.css +3 -1
  177. package/dist/styles/themes/light.css +3 -1
  178. package/dist/styles/themes/presets/corporate.css +126 -0
  179. package/dist/styles/themes/presets/minimal.css +126 -0
  180. package/dist/styles/themes/presets/vibrant.css +126 -0
  181. package/dist/switch/index.js +3 -2
  182. package/dist/table/index.js +10 -10
  183. package/dist/tabs/index.js +3 -3
  184. package/dist/tag/index.js +5 -0
  185. package/dist/tag/index.js.map +1 -0
  186. package/dist/textarea/index.js +2 -2
  187. package/dist/theme/index.js +3 -0
  188. package/dist/theme/index.js.map +1 -0
  189. package/dist/toggle/index.js +2 -2
  190. package/dist/toggle-group/index.js +2 -2
  191. package/dist/tooltip/index.js +3 -2
  192. package/dist/transfer/index.js +4 -4
  193. package/dist/tree/index.js +2 -2
  194. package/dist/tree-select/index.js +5 -4
  195. package/dist/upload/index.js +2 -2
  196. package/package.json +460 -70
  197. package/dist/chunk-267WNY3E.js.map +0 -1
  198. package/dist/chunk-2EKAF6EJ.js +0 -128
  199. package/dist/chunk-2EKAF6EJ.js.map +0 -1
  200. package/dist/chunk-3PFA3YG6.js +0 -228
  201. package/dist/chunk-3PFA3YG6.js.map +0 -1
  202. package/dist/chunk-56IXGP5C.js +0 -56
  203. package/dist/chunk-56IXGP5C.js.map +0 -1
  204. package/dist/chunk-5UEWVFF6.js +0 -212
  205. package/dist/chunk-5UEWVFF6.js.map +0 -1
  206. package/dist/chunk-6V5I5HJ2.js +0 -39
  207. package/dist/chunk-6V5I5HJ2.js.map +0 -1
  208. package/dist/chunk-75XESYGN.js.map +0 -1
  209. package/dist/chunk-7PKVBUGL.js.map +0 -1
  210. package/dist/chunk-ASW7TEAN.js.map +0 -1
  211. package/dist/chunk-AWPKZYHT.js +0 -152
  212. package/dist/chunk-AWPKZYHT.js.map +0 -1
  213. package/dist/chunk-BFO3ARVJ.js +0 -104
  214. package/dist/chunk-BFO3ARVJ.js.map +0 -1
  215. package/dist/chunk-BNILRB4T.js.map +0 -1
  216. package/dist/chunk-BP434VYV.js.map +0 -1
  217. package/dist/chunk-C3MX5EXL.js +0 -95
  218. package/dist/chunk-C3MX5EXL.js.map +0 -1
  219. package/dist/chunk-C7SXY3ZV.js.map +0 -1
  220. package/dist/chunk-D3JWPGCA.js.map +0 -1
  221. package/dist/chunk-DOKTHDG3.js.map +0 -1
  222. package/dist/chunk-DPOSWW22.js.map +0 -1
  223. package/dist/chunk-FCMVKFVV.js.map +0 -1
  224. package/dist/chunk-FGWSUPVW.js.map +0 -1
  225. package/dist/chunk-FPOXTCYV.js.map +0 -1
  226. package/dist/chunk-FYHQDFKE.js +0 -164
  227. package/dist/chunk-FYHQDFKE.js.map +0 -1
  228. package/dist/chunk-G6TAVRTJ.js +0 -640
  229. package/dist/chunk-G6TAVRTJ.js.map +0 -1
  230. package/dist/chunk-GEWR5ROK.js +0 -102
  231. package/dist/chunk-GEWR5ROK.js.map +0 -1
  232. package/dist/chunk-HUVXKOJC.js.map +0 -1
  233. package/dist/chunk-I5ANSIDK.js.map +0 -1
  234. package/dist/chunk-J3G5WWGR.js.map +0 -1
  235. package/dist/chunk-JLTDJ3VZ.js +0 -452
  236. package/dist/chunk-JLTDJ3VZ.js.map +0 -1
  237. package/dist/chunk-KBCBVH7B.js +0 -51
  238. package/dist/chunk-KBCBVH7B.js.map +0 -1
  239. package/dist/chunk-KNQ7UQ2W.js +0 -143
  240. package/dist/chunk-KNQ7UQ2W.js.map +0 -1
  241. package/dist/chunk-KTAIRCOL.js +0 -100
  242. package/dist/chunk-KTAIRCOL.js.map +0 -1
  243. package/dist/chunk-LEKLQR4I.js.map +0 -1
  244. package/dist/chunk-MLDX3Z67.js +0 -470
  245. package/dist/chunk-MLDX3Z67.js.map +0 -1
  246. package/dist/chunk-NNSS366W.js.map +0 -1
  247. package/dist/chunk-OALOWWO7.js.map +0 -1
  248. package/dist/chunk-OOS3B7YZ.js +0 -94
  249. package/dist/chunk-OOS3B7YZ.js.map +0 -1
  250. package/dist/chunk-OQANRZPV.js +0 -197
  251. package/dist/chunk-OQANRZPV.js.map +0 -1
  252. package/dist/chunk-OW5A5IIF.js +0 -175
  253. package/dist/chunk-OW5A5IIF.js.map +0 -1
  254. package/dist/chunk-QPJL66S7.js.map +0 -1
  255. package/dist/chunk-R225A5II.js.map +0 -1
  256. package/dist/chunk-RMGIO27V.js.map +0 -1
  257. package/dist/chunk-ROR4E6IE.js.map +0 -1
  258. package/dist/chunk-RPAQAZTI.js.map +0 -1
  259. package/dist/chunk-S5XJXU52.js +0 -178
  260. package/dist/chunk-S5XJXU52.js.map +0 -1
  261. package/dist/chunk-SAVE5ACL.js.map +0 -1
  262. package/dist/chunk-SK5ECBBK.js.map +0 -1
  263. package/dist/chunk-SOV4PE3P.js.map +0 -1
  264. package/dist/chunk-UAMFKX6L.js.map +0 -1
  265. package/dist/chunk-XMAH5PDW.js.map +0 -1
  266. package/dist/chunk-XMKNYG7I.js +0 -181
  267. package/dist/chunk-XMKNYG7I.js.map +0 -1
  268. package/dist/chunk-Y5A26EGR.js.map +0 -1
  269. package/dist/chunk-YNNAOXU5.js.map +0 -1
  270. package/dist/chunk-YZ6V6BQ7.js +0 -134
  271. package/dist/chunk-YZ6V6BQ7.js.map +0 -1
  272. package/dist/chunk-YZVSDRJD.js +0 -253
  273. package/dist/chunk-YZVSDRJD.js.map +0 -1
  274. 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-YNNAOXU5.js';
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-DOKTHDG3.js.map
55
- //# sourceMappingURL=chunk-DOKTHDG3.js.map
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 { getCheckboxColorClass } from './chunk-5UEWVFF6.js';
2
- import { cn, iconSizes } from './chunk-YNNAOXU5.js';
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
- var colorClasses = {
9
- primary: "text-primary",
10
- secondary: "text-secondary",
11
- accent: "text-accent",
12
- success: "text-success",
13
- error: "text-error",
14
- warning: "text-warning",
15
- info: "text-info"
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-[var(--checkbox-size-xs)] h-[var(--checkbox-size-xs)]",
32
- sm: "w-[var(--checkbox-size-sm)] h-[var(--checkbox-size-sm)]",
33
- md: "w-[var(--checkbox-size-md)] h-[var(--checkbox-size-md)]",
34
- lg: "w-[var(--checkbox-size-lg)] h-[var(--checkbox-size-lg)]"
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 checkboxRef = ref || internalRef;
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 = React.useCallback(
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
- React.useEffect(() => {
79
- if (checkboxRef.current) {
80
- checkboxRef.current.indeterminate = indeterminate;
78
+ useEffect(() => {
79
+ if (internalRef.current) {
80
+ internalRef.current.indeterminate = indeterminate;
81
81
  }
82
- }, [indeterminate, checkboxRef]);
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: checkboxRef,
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: "absolute inset-0 flex items-center justify-center pointer-events-none", children: indeterminate ? /* @__PURE__ */ jsx(
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
- getCheckboxColorClass(color)
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
- colorClasses[color]
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 || helperText
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-OALOWWO7.js.map
161
- //# sourceMappingURL=chunk-OALOWWO7.js.map
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":"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","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-OALOWWO7.js';
2
- import { cn, getValidationStatus, iconSizes, statusMessageVariants } from './chunk-YNNAOXU5.js';
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-muted 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-muted disabled:hover:border-border"
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-muted ml-1", children: [
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-muted" }),
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-muted", children: "No data" }) : filteredData.map((item) => /* @__PURE__ */ jsxs(
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-muted truncate", children: item.description })
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-muted", children: footer })
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-muted", children: label }) }),
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-FCMVKFVV.js.map
401
- //# sourceMappingURL=chunk-FCMVKFVV.js.map
406
+ //# sourceMappingURL=chunk-US4ZCMNU.js.map
407
+ //# sourceMappingURL=chunk-US4ZCMNU.js.map