@mdigital_ui/ui 0.2.4 → 0.2.6

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 (228) hide show
  1. package/dist/accordion/index.js +3 -3
  2. package/dist/badge/index.js +3 -3
  3. package/dist/breadcrumbs/index.js +5 -5
  4. package/dist/button/index.js +4 -4
  5. package/dist/button-group/index.js +2 -2
  6. package/dist/card/index.js +2 -2
  7. package/dist/carousel/index.js +2 -1
  8. package/dist/cascader/index.js +2 -2
  9. package/dist/chart/index.js +2 -2
  10. package/dist/checkbox/index.js +3 -3
  11. package/dist/checkbox-group/index.js +2 -2
  12. package/dist/chunk-22FIGRGO.js +312 -0
  13. package/dist/chunk-22FIGRGO.js.map +1 -0
  14. package/dist/{chunk-GEWR5ROK.js → chunk-23BPDLT4.js} +9 -16
  15. package/dist/chunk-23BPDLT4.js.map +1 -0
  16. package/dist/{chunk-YNNAOXU5.js → chunk-2OGZENFC.js} +3 -4
  17. package/dist/chunk-2OGZENFC.js.map +1 -0
  18. package/dist/{chunk-SOV4PE3P.js → chunk-35K7N4JT.js} +11 -4
  19. package/dist/chunk-35K7N4JT.js.map +1 -0
  20. package/dist/chunk-3QKPSJTV.js +120 -0
  21. package/dist/chunk-3QKPSJTV.js.map +1 -0
  22. package/dist/chunk-3WVJE5MF.js +735 -0
  23. package/dist/chunk-3WVJE5MF.js.map +1 -0
  24. package/dist/chunk-555KXZRK.js +73 -0
  25. package/dist/chunk-555KXZRK.js.map +1 -0
  26. package/dist/{chunk-FYHQDFKE.js → chunk-6IPISGTP.js} +31 -9
  27. package/dist/chunk-6IPISGTP.js.map +1 -0
  28. package/dist/chunk-6MYKJE6A.js +312 -0
  29. package/dist/chunk-6MYKJE6A.js.map +1 -0
  30. package/dist/{chunk-6V5I5HJ2.js → chunk-6PFBSVLK.js} +4 -4
  31. package/dist/{chunk-6V5I5HJ2.js.map → chunk-6PFBSVLK.js.map} +1 -1
  32. package/dist/{chunk-267WNY3E.js → chunk-77YTCM7G.js} +53 -60
  33. package/dist/chunk-77YTCM7G.js.map +1 -0
  34. package/dist/{chunk-XMAH5PDW.js → chunk-7BUNJYZO.js} +11 -10
  35. package/dist/chunk-7BUNJYZO.js.map +1 -0
  36. package/dist/chunk-7ODPSHIQ.js +78 -0
  37. package/dist/chunk-7ODPSHIQ.js.map +1 -0
  38. package/dist/{chunk-ZNJ7M5QK.js → chunk-7TN4PGYF.js} +29 -22
  39. package/dist/chunk-7TN4PGYF.js.map +1 -0
  40. package/dist/{chunk-RPAQAZTI.js → chunk-7YPX6NJK.js} +3 -3
  41. package/dist/{chunk-RPAQAZTI.js.map → chunk-7YPX6NJK.js.map} +1 -1
  42. package/dist/{chunk-LEKLQR4I.js → chunk-ARK3EROZ.js} +55 -38
  43. package/dist/chunk-ARK3EROZ.js.map +1 -0
  44. package/dist/chunk-AVPPV5OM.js +203 -0
  45. package/dist/chunk-AVPPV5OM.js.map +1 -0
  46. package/dist/{chunk-NNSS366W.js → chunk-BYWYC7RC.js} +38 -5
  47. package/dist/chunk-BYWYC7RC.js.map +1 -0
  48. package/dist/{chunk-R225A5II.js → chunk-C2MZL644.js} +3 -3
  49. package/dist/{chunk-R225A5II.js.map → chunk-C2MZL644.js.map} +1 -1
  50. package/dist/{chunk-7PKVBUGL.js → chunk-CPPFXCNB.js} +3 -3
  51. package/dist/{chunk-7PKVBUGL.js.map → chunk-CPPFXCNB.js.map} +1 -1
  52. package/dist/chunk-DP6AWUH5.js +93 -0
  53. package/dist/chunk-DP6AWUH5.js.map +1 -0
  54. package/dist/{chunk-D3JWPGCA.js → chunk-DV5J5NLI.js} +6 -55
  55. package/dist/chunk-DV5J5NLI.js.map +1 -0
  56. package/dist/chunk-EFMKUCGX.js +104 -0
  57. package/dist/chunk-EFMKUCGX.js.map +1 -0
  58. package/dist/chunk-GFQXGLFD.js +256 -0
  59. package/dist/chunk-GFQXGLFD.js.map +1 -0
  60. package/dist/{chunk-SK5ECBBK.js → chunk-GGREAJO5.js} +8 -4
  61. package/dist/chunk-GGREAJO5.js.map +1 -0
  62. package/dist/{chunk-S5XJXU52.js → chunk-GH3CNX5N.js} +3 -3
  63. package/dist/{chunk-S5XJXU52.js.map → chunk-GH3CNX5N.js.map} +1 -1
  64. package/dist/{chunk-FCMVKFVV.js → chunk-HBEJ4S2Y.js} +11 -11
  65. package/dist/chunk-HBEJ4S2Y.js.map +1 -0
  66. package/dist/{chunk-SAVE5ACL.js → chunk-HWSLJGT7.js} +3 -3
  67. package/dist/{chunk-SAVE5ACL.js.map → chunk-HWSLJGT7.js.map} +1 -1
  68. package/dist/{chunk-BNILRB4T.js → chunk-IHKPZOE5.js} +10 -7
  69. package/dist/chunk-IHKPZOE5.js.map +1 -0
  70. package/dist/{chunk-I5ANSIDK.js → chunk-INH7KYCK.js} +17 -17
  71. package/dist/chunk-INH7KYCK.js.map +1 -0
  72. package/dist/{chunk-Y5A26EGR.js → chunk-IRNJZ754.js} +9 -9
  73. package/dist/{chunk-Y5A26EGR.js.map → chunk-IRNJZ754.js.map} +1 -1
  74. package/dist/{chunk-MLDX3Z67.js → chunk-IUUEYOMN.js} +3 -3
  75. package/dist/{chunk-MLDX3Z67.js.map → chunk-IUUEYOMN.js.map} +1 -1
  76. package/dist/chunk-JFGLDCAK.js +225 -0
  77. package/dist/chunk-JFGLDCAK.js.map +1 -0
  78. package/dist/{chunk-C7SXY3ZV.js → chunk-JGQOEAWL.js} +3 -3
  79. package/dist/{chunk-C7SXY3ZV.js.map → chunk-JGQOEAWL.js.map} +1 -1
  80. package/dist/{chunk-75XESYGN.js → chunk-L6EVOPWH.js} +5 -13
  81. package/dist/chunk-L6EVOPWH.js.map +1 -0
  82. package/dist/{chunk-XMKNYG7I.js → chunk-LSQLUYTD.js} +35 -24
  83. package/dist/chunk-LSQLUYTD.js.map +1 -0
  84. package/dist/{chunk-QPJL66S7.js → chunk-MDY3HCRC.js} +80 -41
  85. package/dist/chunk-MDY3HCRC.js.map +1 -0
  86. package/dist/chunk-MLNIKNLI.js +150 -0
  87. package/dist/chunk-MLNIKNLI.js.map +1 -0
  88. package/dist/{chunk-J3G5WWGR.js → chunk-NQB4V5P7.js} +6 -14
  89. package/dist/chunk-NQB4V5P7.js.map +1 -0
  90. package/dist/chunk-NZA526GC.js +106 -0
  91. package/dist/chunk-NZA526GC.js.map +1 -0
  92. package/dist/{chunk-FGWSUPVW.js → chunk-O2VJ6KP4.js} +8 -3
  93. package/dist/chunk-O2VJ6KP4.js.map +1 -0
  94. package/dist/{chunk-OALOWWO7.js → chunk-PQZB43VJ.js} +32 -36
  95. package/dist/chunk-PQZB43VJ.js.map +1 -0
  96. package/dist/{chunk-UAMFKX6L.js → chunk-QVCGNOBE.js} +34 -20
  97. package/dist/chunk-QVCGNOBE.js.map +1 -0
  98. package/dist/{chunk-ASW7TEAN.js → chunk-R2FZO7AM.js} +14 -14
  99. package/dist/chunk-R2FZO7AM.js.map +1 -0
  100. package/dist/{chunk-HUVXKOJC.js → chunk-SGMIDNPI.js} +13 -9
  101. package/dist/chunk-SGMIDNPI.js.map +1 -0
  102. package/dist/{chunk-DOKTHDG3.js → chunk-SMVVCZNM.js} +3 -3
  103. package/dist/{chunk-DOKTHDG3.js.map → chunk-SMVVCZNM.js.map} +1 -1
  104. package/dist/{chunk-FPOXTCYV.js → chunk-SOIF4SHB.js} +8 -8
  105. package/dist/chunk-SOIF4SHB.js.map +1 -0
  106. package/dist/{chunk-RMGIO27V.js → chunk-SYDNDYZJ.js} +20 -4
  107. package/dist/chunk-SYDNDYZJ.js.map +1 -0
  108. package/dist/chunk-TG2AECIN.js +446 -0
  109. package/dist/chunk-TG2AECIN.js.map +1 -0
  110. package/dist/{chunk-JLTDJ3VZ.js → chunk-TIMRHEKH.js} +4 -4
  111. package/dist/{chunk-JLTDJ3VZ.js.map → chunk-TIMRHEKH.js.map} +1 -1
  112. package/dist/chunk-TUTOU4X6.js +574 -0
  113. package/dist/chunk-TUTOU4X6.js.map +1 -0
  114. package/dist/chunk-TWZ5LXLL.js +254 -0
  115. package/dist/chunk-TWZ5LXLL.js.map +1 -0
  116. package/dist/{chunk-DPOSWW22.js → chunk-XG3KLPPS.js} +5 -3
  117. package/dist/chunk-XG3KLPPS.js.map +1 -0
  118. package/dist/{chunk-BP434VYV.js → chunk-Y2CXG3PT.js} +12 -12
  119. package/dist/chunk-Y2CXG3PT.js.map +1 -0
  120. package/dist/{chunk-ROR4E6IE.js → chunk-YII4K64U.js} +5 -5
  121. package/dist/{chunk-ROR4E6IE.js.map → chunk-YII4K64U.js.map} +1 -1
  122. package/dist/clipboard/index.js +2 -2
  123. package/dist/collapse/index.js +2 -2
  124. package/dist/command/index.js +3 -3
  125. package/dist/date-picker/index.js +4 -3
  126. package/dist/descriptions/index.js +2 -2
  127. package/dist/drawer/index.js +2 -2
  128. package/dist/dropdown/index.js +4 -3
  129. package/dist/empty/index.js +2 -2
  130. package/dist/fetching-overlay/index.js +4 -3
  131. package/dist/grid/index.js +2 -2
  132. package/dist/image/index.js +2 -2
  133. package/dist/index.d.ts +1358 -156
  134. package/dist/index.js +762 -65
  135. package/dist/index.js.map +1 -1
  136. package/dist/input/index.js +4 -3
  137. package/dist/input-group/index.js +2 -2
  138. package/dist/input-otp/index.js +2 -2
  139. package/dist/input-password/index.js +5 -4
  140. package/dist/kbd/index.js +3 -2
  141. package/dist/modal/index.js +2 -2
  142. package/dist/multi-select/index.js +4 -3
  143. package/dist/notification/index.js +3 -2
  144. package/dist/pagination/index.js +2 -2
  145. package/dist/popover/index.js +3 -2
  146. package/dist/progress/index.js +2 -2
  147. package/dist/radio/index.js +3 -2
  148. package/dist/radio-group/index.js +2 -2
  149. package/dist/rating/index.js +2 -2
  150. package/dist/ribbon/index.js +2 -2
  151. package/dist/select/index.js +5 -4
  152. package/dist/skeleton/index.js +3 -2
  153. package/dist/slider/index.js +2 -2
  154. package/dist/spinner/index.js +3 -2
  155. package/dist/stepper/index.js +2 -2
  156. package/dist/styles/base.css +2033 -1313
  157. package/dist/styles/global.css +1242 -459
  158. package/dist/switch/index.js +3 -2
  159. package/dist/table/index.js +10 -10
  160. package/dist/tabs/index.js +3 -3
  161. package/dist/textarea/index.js +2 -2
  162. package/dist/toggle/index.js +2 -2
  163. package/dist/toggle-group/index.js +2 -2
  164. package/dist/tooltip/index.js +3 -2
  165. package/dist/transfer/index.js +4 -4
  166. package/dist/tree/index.js +2 -2
  167. package/dist/tree-select/index.js +5 -4
  168. package/dist/upload/index.js +2 -2
  169. package/package.json +4 -1
  170. package/dist/chunk-267WNY3E.js.map +0 -1
  171. package/dist/chunk-2EKAF6EJ.js +0 -128
  172. package/dist/chunk-2EKAF6EJ.js.map +0 -1
  173. package/dist/chunk-3PFA3YG6.js +0 -228
  174. package/dist/chunk-3PFA3YG6.js.map +0 -1
  175. package/dist/chunk-56IXGP5C.js +0 -56
  176. package/dist/chunk-56IXGP5C.js.map +0 -1
  177. package/dist/chunk-5UEWVFF6.js +0 -212
  178. package/dist/chunk-5UEWVFF6.js.map +0 -1
  179. package/dist/chunk-75XESYGN.js.map +0 -1
  180. package/dist/chunk-ASW7TEAN.js.map +0 -1
  181. package/dist/chunk-AWPKZYHT.js +0 -152
  182. package/dist/chunk-AWPKZYHT.js.map +0 -1
  183. package/dist/chunk-BFO3ARVJ.js +0 -104
  184. package/dist/chunk-BFO3ARVJ.js.map +0 -1
  185. package/dist/chunk-BNILRB4T.js.map +0 -1
  186. package/dist/chunk-BP434VYV.js.map +0 -1
  187. package/dist/chunk-C3MX5EXL.js +0 -95
  188. package/dist/chunk-C3MX5EXL.js.map +0 -1
  189. package/dist/chunk-D3JWPGCA.js.map +0 -1
  190. package/dist/chunk-DPOSWW22.js.map +0 -1
  191. package/dist/chunk-FCMVKFVV.js.map +0 -1
  192. package/dist/chunk-FGWSUPVW.js.map +0 -1
  193. package/dist/chunk-FPOXTCYV.js.map +0 -1
  194. package/dist/chunk-FYHQDFKE.js.map +0 -1
  195. package/dist/chunk-G6TAVRTJ.js +0 -640
  196. package/dist/chunk-G6TAVRTJ.js.map +0 -1
  197. package/dist/chunk-GEWR5ROK.js.map +0 -1
  198. package/dist/chunk-HUVXKOJC.js.map +0 -1
  199. package/dist/chunk-I5ANSIDK.js.map +0 -1
  200. package/dist/chunk-J3G5WWGR.js.map +0 -1
  201. package/dist/chunk-KBCBVH7B.js +0 -51
  202. package/dist/chunk-KBCBVH7B.js.map +0 -1
  203. package/dist/chunk-KNQ7UQ2W.js +0 -143
  204. package/dist/chunk-KNQ7UQ2W.js.map +0 -1
  205. package/dist/chunk-KTAIRCOL.js +0 -100
  206. package/dist/chunk-KTAIRCOL.js.map +0 -1
  207. package/dist/chunk-LEKLQR4I.js.map +0 -1
  208. package/dist/chunk-NNSS366W.js.map +0 -1
  209. package/dist/chunk-OALOWWO7.js.map +0 -1
  210. package/dist/chunk-OOS3B7YZ.js +0 -94
  211. package/dist/chunk-OOS3B7YZ.js.map +0 -1
  212. package/dist/chunk-OQANRZPV.js +0 -197
  213. package/dist/chunk-OQANRZPV.js.map +0 -1
  214. package/dist/chunk-OW5A5IIF.js +0 -175
  215. package/dist/chunk-OW5A5IIF.js.map +0 -1
  216. package/dist/chunk-QPJL66S7.js.map +0 -1
  217. package/dist/chunk-RMGIO27V.js.map +0 -1
  218. package/dist/chunk-SK5ECBBK.js.map +0 -1
  219. package/dist/chunk-SOV4PE3P.js.map +0 -1
  220. package/dist/chunk-UAMFKX6L.js.map +0 -1
  221. package/dist/chunk-XMAH5PDW.js.map +0 -1
  222. package/dist/chunk-XMKNYG7I.js.map +0 -1
  223. package/dist/chunk-YNNAOXU5.js.map +0 -1
  224. package/dist/chunk-YZ6V6BQ7.js +0 -134
  225. package/dist/chunk-YZ6V6BQ7.js.map +0 -1
  226. package/dist/chunk-YZVSDRJD.js +0 -253
  227. package/dist/chunk-YZVSDRJD.js.map +0 -1
  228. package/dist/chunk-ZNJ7M5QK.js.map +0 -1
@@ -1,5 +1,5 @@
1
- export { accordion_default as default } from '../chunk-2EKAF6EJ.js';
2
- import '../chunk-5UEWVFF6.js';
3
- import '../chunk-YNNAOXU5.js';
1
+ export { accordion_default as default } from '../chunk-22FIGRGO.js';
2
+ import '../chunk-TUTOU4X6.js';
3
+ import '../chunk-2OGZENFC.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
- export { badge_default as default } from '../chunk-BFO3ARVJ.js';
2
- import '../chunk-5UEWVFF6.js';
3
- import '../chunk-YNNAOXU5.js';
1
+ export { badge_default as default } from '../chunk-AVPPV5OM.js';
2
+ import '../chunk-TUTOU4X6.js';
3
+ import '../chunk-2OGZENFC.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
- export { BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, breadcrumbs_default as default } from '../chunk-HUVXKOJC.js';
2
- import '../chunk-KNQ7UQ2W.js';
3
- import '../chunk-3PFA3YG6.js';
4
- import '../chunk-5UEWVFF6.js';
5
- import '../chunk-YNNAOXU5.js';
1
+ export { BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, breadcrumbs_default as default } from '../chunk-SGMIDNPI.js';
2
+ import '../chunk-TWZ5LXLL.js';
3
+ import '../chunk-EFMKUCGX.js';
4
+ import '../chunk-TUTOU4X6.js';
5
+ import '../chunk-2OGZENFC.js';
6
6
  //# sourceMappingURL=index.js.map
7
7
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
- export { button_default as default } from '../chunk-KTAIRCOL.js';
2
- import '../chunk-J3G5WWGR.js';
3
- import '../chunk-5UEWVFF6.js';
4
- import '../chunk-YNNAOXU5.js';
1
+ export { button_default as default } from '../chunk-MLNIKNLI.js';
2
+ import '../chunk-NQB4V5P7.js';
3
+ import '../chunk-TUTOU4X6.js';
4
+ import '../chunk-2OGZENFC.js';
5
5
  //# sourceMappingURL=index.js.map
6
6
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { button_group_default as default } from '../chunk-56IXGP5C.js';
2
- import '../chunk-YNNAOXU5.js';
1
+ export { button_group_default as default } from '../chunk-7ODPSHIQ.js';
2
+ import '../chunk-2OGZENFC.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, cardVariants, card_default as default } from '../chunk-OOS3B7YZ.js';
2
- import '../chunk-YNNAOXU5.js';
1
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardImage, CardTitle, cardVariants, card_default as default } from '../chunk-TG2AECIN.js';
2
+ import '../chunk-2OGZENFC.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,3 +1,4 @@
1
- export { carousel_default as default } from '../chunk-C3MX5EXL.js';
1
+ export { carousel_default as default } from '../chunk-3QKPSJTV.js';
2
+ import '../chunk-2OGZENFC.js';
2
3
  //# sourceMappingURL=index.js.map
3
4
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { cascader_default as default } from '../chunk-G6TAVRTJ.js';
2
- import '../chunk-YNNAOXU5.js';
1
+ export { cascader_default as default } from '../chunk-3WVJE5MF.js';
2
+ import '../chunk-2OGZENFC.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { AreaChart, BarChart, ComposedChart, LineChart, PieChart, axisLineStyle, axisTickStyle, chartContainerVariants, cursorStyle, getChartColor, gridStyle, legendStyle, tooltipStyle } from '../chunk-BP434VYV.js';
2
- import '../chunk-YNNAOXU5.js';
1
+ export { AreaChart, BarChart, ComposedChart, LineChart, PieChart, axisLineStyle, axisTickStyle, chartContainerVariants, cursorStyle, getChartColor, gridStyle, legendStyle, tooltipStyle } from '../chunk-Y2CXG3PT.js';
2
+ import '../chunk-2OGZENFC.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
- export { checkbox_default as default } from '../chunk-OALOWWO7.js';
2
- import '../chunk-5UEWVFF6.js';
3
- import '../chunk-YNNAOXU5.js';
1
+ export { checkbox_default as default } from '../chunk-PQZB43VJ.js';
2
+ import '../chunk-TUTOU4X6.js';
3
+ import '../chunk-2OGZENFC.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { checkbox_group_default as default } from '../chunk-RPAQAZTI.js';
2
- import '../chunk-YNNAOXU5.js';
1
+ export { checkbox_group_default as default } from '../chunk-7YPX6NJK.js';
2
+ import '../chunk-2OGZENFC.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,312 @@
1
+ import { focusRingColorClasses, textColorClasses } from './chunk-TUTOU4X6.js';
2
+ import { cn, iconSizes } from './chunk-2OGZENFC.js';
3
+ import { cva } from 'class-variance-authority';
4
+ import { ChevronDown } from 'lucide-react';
5
+ import React, { useId, useState } from 'react';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ var accordionContainerVariants = cva("w-full", {
9
+ variants: {
10
+ variant: {
11
+ default: "space-y-0 divide-y divide-border rounded-lg overflow-hidden",
12
+ solid: "space-y-0 divide-y divide-border/50 rounded-lg overflow-hidden",
13
+ soft: "space-y-0 divide-y divide-border/30 rounded-lg overflow-hidden",
14
+ bordered: "space-y-0 divide-y divide-border border border-border rounded-lg overflow-hidden",
15
+ splitted: "space-y-2"
16
+ },
17
+ showDivider: {
18
+ true: "",
19
+ false: ""
20
+ }
21
+ },
22
+ compoundVariants: [
23
+ { variant: "default", showDivider: false, class: "divide-y-0" },
24
+ { variant: "solid", showDivider: false, class: "divide-y-0" },
25
+ { variant: "soft", showDivider: false, class: "divide-y-0" },
26
+ { variant: "bordered", showDivider: false, class: "divide-y-0" }
27
+ ],
28
+ defaultVariants: {
29
+ variant: "default",
30
+ showDivider: true
31
+ }
32
+ });
33
+ var accordionItemVariants = cva("transition-colors", {
34
+ variants: {
35
+ variant: {
36
+ default: "bg-transparent hover:bg-surface/50",
37
+ solid: "bg-surface",
38
+ soft: "",
39
+ bordered: "bg-transparent",
40
+ splitted: "border border-border rounded-lg overflow-hidden"
41
+ },
42
+ color: {
43
+ default: "",
44
+ primary: "",
45
+ secondary: "",
46
+ accent: "",
47
+ success: "",
48
+ error: "",
49
+ warning: "",
50
+ info: ""
51
+ }
52
+ },
53
+ compoundVariants: [
54
+ // Soft variant with colors
55
+ { variant: "soft", color: "default", class: "bg-surface/50" },
56
+ {
57
+ variant: "soft",
58
+ color: "primary",
59
+ class: "bg-primary/5 hover:bg-primary/10"
60
+ },
61
+ {
62
+ variant: "soft",
63
+ color: "secondary",
64
+ class: "bg-secondary/5 hover:bg-secondary/10"
65
+ },
66
+ {
67
+ variant: "soft",
68
+ color: "accent",
69
+ class: "bg-accent/5 hover:bg-accent/10"
70
+ },
71
+ {
72
+ variant: "soft",
73
+ color: "success",
74
+ class: "bg-success/5 hover:bg-success/10"
75
+ },
76
+ { variant: "soft", color: "error", class: "bg-error/5 hover:bg-error/10" },
77
+ {
78
+ variant: "soft",
79
+ color: "warning",
80
+ class: "bg-warning/5 hover:bg-warning/10"
81
+ },
82
+ { variant: "soft", color: "info", class: "bg-info/5 hover:bg-info/10" },
83
+ // Splitted variant with colors
84
+ { variant: "splitted", color: "primary", class: "border-primary/30" },
85
+ { variant: "splitted", color: "secondary", class: "border-secondary/30" },
86
+ { variant: "splitted", color: "accent", class: "border-accent/30" },
87
+ { variant: "splitted", color: "success", class: "border-success/30" },
88
+ { variant: "splitted", color: "error", class: "border-error/30" },
89
+ { variant: "splitted", color: "warning", class: "border-warning/30" },
90
+ { variant: "splitted", color: "info", class: "border-info/30" }
91
+ ],
92
+ defaultVariants: {
93
+ variant: "default",
94
+ color: "default"
95
+ }
96
+ });
97
+ var accordionHeaderVariants = cva(
98
+ [
99
+ "flex items-center w-full text-left font-medium transition-all",
100
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background",
101
+ "disabled:opacity-50 disabled:cursor-not-allowed"
102
+ ],
103
+ {
104
+ variants: {
105
+ size: {
106
+ xs: "px-(--accordion-padding-x-xs) py-(--accordion-padding-y-xs) text-xs gap-2",
107
+ sm: "px-(--accordion-padding-x-sm) py-(--accordion-padding-y-sm) text-sm gap-2",
108
+ md: "px-(--accordion-padding-x-md) py-(--accordion-padding-y-md) text-base gap-3",
109
+ lg: "px-(--accordion-padding-x-lg) py-(--accordion-padding-y-lg) text-lg gap-3"
110
+ },
111
+ color: focusRingColorClasses,
112
+ disabled: {
113
+ true: "cursor-not-allowed",
114
+ false: "cursor-pointer"
115
+ }
116
+ },
117
+ defaultVariants: {
118
+ size: "md",
119
+ color: "default",
120
+ disabled: false
121
+ }
122
+ }
123
+ );
124
+ var accordionContentVariants = cva("text-text-secondary", {
125
+ variants: {
126
+ size: {
127
+ xs: "px-(--accordion-padding-x-xs) pb-(--accordion-padding-y-xs) text-xs",
128
+ sm: "px-(--accordion-padding-x-sm) pb-(--accordion-padding-y-sm) text-sm",
129
+ md: "px-(--accordion-padding-x-md) pb-(--accordion-padding-y-md) text-base",
130
+ lg: "px-(--accordion-padding-x-lg) pb-(--accordion-padding-y-lg) text-lg"
131
+ }
132
+ },
133
+ defaultVariants: {
134
+ size: "md"
135
+ }
136
+ });
137
+ var getIconColor = (color, isExpanded) => {
138
+ if (!isExpanded) return "text-text-secondary";
139
+ return textColorClasses[color || "default"];
140
+ };
141
+ var Accordion = React.memo(
142
+ ({
143
+ items,
144
+ color = "default",
145
+ size = "md",
146
+ variant = "default",
147
+ defaultActiveKey,
148
+ activeKey: controlledActiveKey,
149
+ onChange,
150
+ multiple = false,
151
+ expandIcon,
152
+ expandIconPosition = "right",
153
+ collapsible = false,
154
+ destroyOnClose = false,
155
+ showDivider = true,
156
+ className,
157
+ itemClassName,
158
+ ref
159
+ }) => {
160
+ const baseId = useId();
161
+ const [internalActiveKey, setInternalActiveKey] = useState(defaultActiveKey || (multiple ? [] : ""));
162
+ const activeKey = controlledActiveKey !== void 0 ? controlledActiveKey : internalActiveKey;
163
+ const isActive = (key) => {
164
+ if (Array.isArray(activeKey)) {
165
+ return activeKey.includes(key);
166
+ }
167
+ return activeKey === key;
168
+ };
169
+ const handleToggle = (key, disabled) => {
170
+ if (disabled) return;
171
+ let newActiveKey;
172
+ if (multiple) {
173
+ const currentKeys = Array.isArray(activeKey) ? activeKey : [];
174
+ newActiveKey = currentKeys.includes(key) ? currentKeys.filter((k) => k !== key) : [...currentKeys, key];
175
+ } else {
176
+ if (collapsible && activeKey === key) {
177
+ return;
178
+ }
179
+ newActiveKey = activeKey === key ? "" : key;
180
+ }
181
+ if (controlledActiveKey === void 0) {
182
+ setInternalActiveKey(newActiveKey);
183
+ }
184
+ onChange?.(newActiveKey);
185
+ };
186
+ const renderExpandIcon = (isExpanded) => {
187
+ if (expandIcon === false) return null;
188
+ if (typeof expandIcon === "function") {
189
+ return expandIcon(isExpanded);
190
+ }
191
+ if (expandIcon) {
192
+ return /* @__PURE__ */ jsx(
193
+ "span",
194
+ {
195
+ className: cn(
196
+ "shrink-0 transition-transform duration-300",
197
+ isExpanded && "rotate-180"
198
+ ),
199
+ children: expandIcon
200
+ }
201
+ );
202
+ }
203
+ return /* @__PURE__ */ jsx(
204
+ ChevronDown,
205
+ {
206
+ className: cn(
207
+ "shrink-0 transition-transform duration-300",
208
+ isExpanded && "rotate-180",
209
+ getIconColor(color, isExpanded),
210
+ iconSizes[size]
211
+ )
212
+ }
213
+ );
214
+ };
215
+ return /* @__PURE__ */ jsx(
216
+ "div",
217
+ {
218
+ ref,
219
+ className: cn(
220
+ accordionContainerVariants({
221
+ variant,
222
+ showDivider: showDivider && variant !== "splitted"
223
+ }),
224
+ className
225
+ ),
226
+ children: items.map((item) => {
227
+ const isItemActive = isActive(item.key);
228
+ const headerId = `${baseId}-header-${item.key}`;
229
+ const panelId = `${baseId}-panel-${item.key}`;
230
+ return /* @__PURE__ */ jsxs(
231
+ "div",
232
+ {
233
+ className: cn(
234
+ accordionItemVariants({ variant, color }),
235
+ item.disabled && "opacity-50",
236
+ itemClassName
237
+ ),
238
+ children: [
239
+ /* @__PURE__ */ jsxs(
240
+ "button",
241
+ {
242
+ type: "button",
243
+ id: headerId,
244
+ "aria-expanded": isItemActive,
245
+ "aria-controls": panelId,
246
+ "aria-disabled": item.disabled,
247
+ disabled: item.disabled,
248
+ onClick: () => handleToggle(item.key, item.disabled),
249
+ className: cn(
250
+ accordionHeaderVariants({
251
+ size,
252
+ color,
253
+ disabled: item.disabled
254
+ })
255
+ ),
256
+ children: [
257
+ expandIconPosition === "left" && renderExpandIcon(isItemActive),
258
+ item.icon && /* @__PURE__ */ jsx(
259
+ "span",
260
+ {
261
+ className: cn(
262
+ "shrink-0",
263
+ getIconColor(color, isItemActive)
264
+ ),
265
+ children: item.icon
266
+ }
267
+ ),
268
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
269
+ /* @__PURE__ */ jsx(
270
+ "div",
271
+ {
272
+ className: cn(
273
+ isItemActive && color !== "default" && textColorClasses[color || "default"]
274
+ ),
275
+ children: item.title
276
+ }
277
+ ),
278
+ item.subtitle && /* @__PURE__ */ jsx("div", { className: "text-text-secondary font-normal mt-0.5", children: item.subtitle })
279
+ ] }),
280
+ item.extra && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-text-secondary", children: item.extra }),
281
+ expandIconPosition === "right" && renderExpandIcon(isItemActive)
282
+ ]
283
+ }
284
+ ),
285
+ /* @__PURE__ */ jsx(
286
+ "div",
287
+ {
288
+ id: panelId,
289
+ role: "region",
290
+ "aria-labelledby": headerId,
291
+ className: cn(
292
+ "grid transition-[grid-template-rows] duration-300 ease-out",
293
+ isItemActive ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
294
+ ),
295
+ children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden", children: (!destroyOnClose || isItemActive) && /* @__PURE__ */ jsx("div", { className: cn(accordionContentVariants({ size })), children: item.content }) })
296
+ }
297
+ )
298
+ ]
299
+ },
300
+ item.key
301
+ );
302
+ })
303
+ }
304
+ );
305
+ }
306
+ );
307
+ Accordion.displayName = "Accordion";
308
+ var accordion_default = Accordion;
309
+
310
+ export { accordion_default };
311
+ //# sourceMappingURL=chunk-22FIGRGO.js.map
312
+ //# sourceMappingURL=chunk-22FIGRGO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/accordion/index.tsx"],"names":[],"mappings":"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","file":"chunk-22FIGRGO.js","sourcesContent":["import { cva } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\nimport React, { useId, useState } from \"react\";\n\nimport { cn, iconSizes } from \"../utils\";\nimport { focusRingColorClasses, textColorClasses } from \"../variants\";\nimport type { AccordionProps, AccordionSize } from \"./types\";\n\n// Variant styles for accordion container\nconst accordionContainerVariants = cva(\"w-full\", {\n variants: {\n variant: {\n default: \"space-y-0 divide-y divide-border rounded-lg overflow-hidden\",\n solid: \"space-y-0 divide-y divide-border/50 rounded-lg overflow-hidden\",\n soft: \"space-y-0 divide-y divide-border/30 rounded-lg overflow-hidden\",\n bordered:\n \"space-y-0 divide-y divide-border border border-border rounded-lg overflow-hidden\",\n splitted: \"space-y-2\",\n },\n showDivider: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n { variant: \"default\", showDivider: false, class: \"divide-y-0\" },\n { variant: \"solid\", showDivider: false, class: \"divide-y-0\" },\n { variant: \"soft\", showDivider: false, class: \"divide-y-0\" },\n { variant: \"bordered\", showDivider: false, class: \"divide-y-0\" },\n ],\n defaultVariants: {\n variant: \"default\",\n showDivider: true,\n },\n});\n\n// Variant styles for each accordion item\nconst accordionItemVariants = cva(\"transition-colors\", {\n variants: {\n variant: {\n default: \"bg-transparent hover:bg-surface/50\",\n solid: \"bg-surface\",\n soft: \"\",\n bordered: \"bg-transparent\",\n splitted: \"border border-border rounded-lg overflow-hidden\",\n },\n color: {\n default: \"\",\n primary: \"\",\n secondary: \"\",\n accent: \"\",\n success: \"\",\n error: \"\",\n warning: \"\",\n info: \"\",\n },\n },\n compoundVariants: [\n // Soft variant with colors\n { variant: \"soft\", color: \"default\", class: \"bg-surface/50\" },\n {\n variant: \"soft\",\n color: \"primary\",\n class: \"bg-primary/5 hover:bg-primary/10\",\n },\n {\n variant: \"soft\",\n color: \"secondary\",\n class: \"bg-secondary/5 hover:bg-secondary/10\",\n },\n {\n variant: \"soft\",\n color: \"accent\",\n class: \"bg-accent/5 hover:bg-accent/10\",\n },\n {\n variant: \"soft\",\n color: \"success\",\n class: \"bg-success/5 hover:bg-success/10\",\n },\n { variant: \"soft\", color: \"error\", class: \"bg-error/5 hover:bg-error/10\" },\n {\n variant: \"soft\",\n color: \"warning\",\n class: \"bg-warning/5 hover:bg-warning/10\",\n },\n { variant: \"soft\", color: \"info\", class: \"bg-info/5 hover:bg-info/10\" },\n // Splitted variant with colors\n { variant: \"splitted\", color: \"primary\", class: \"border-primary/30\" },\n { variant: \"splitted\", color: \"secondary\", class: \"border-secondary/30\" },\n { variant: \"splitted\", color: \"accent\", class: \"border-accent/30\" },\n { variant: \"splitted\", color: \"success\", class: \"border-success/30\" },\n { variant: \"splitted\", color: \"error\", class: \"border-error/30\" },\n { variant: \"splitted\", color: \"warning\", class: \"border-warning/30\" },\n { variant: \"splitted\", color: \"info\", class: \"border-info/30\" },\n ],\n defaultVariants: {\n variant: \"default\",\n color: \"default\",\n },\n});\n\n// Header button variants\nconst accordionHeaderVariants = cva(\n [\n \"flex items-center w-full text-left font-medium transition-all\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n ],\n {\n variants: {\n size: {\n xs: \"px-(--accordion-padding-x-xs) py-(--accordion-padding-y-xs) text-xs gap-2\",\n sm: \"px-(--accordion-padding-x-sm) py-(--accordion-padding-y-sm) text-sm gap-2\",\n md: \"px-(--accordion-padding-x-md) py-(--accordion-padding-y-md) text-base gap-3\",\n lg: \"px-(--accordion-padding-x-lg) py-(--accordion-padding-y-lg) text-lg gap-3\",\n },\n color: focusRingColorClasses,\n disabled: {\n true: \"cursor-not-allowed\",\n false: \"cursor-pointer\",\n },\n },\n defaultVariants: {\n size: \"md\",\n color: \"default\",\n disabled: false,\n },\n },\n);\n\n// Content variants\nconst accordionContentVariants = cva(\"text-text-secondary\", {\n variants: {\n size: {\n xs: \"px-(--accordion-padding-x-xs) pb-(--accordion-padding-y-xs) text-xs\",\n sm: \"px-(--accordion-padding-x-sm) pb-(--accordion-padding-y-sm) text-sm\",\n md: \"px-(--accordion-padding-x-md) pb-(--accordion-padding-y-md) text-base\",\n lg: \"px-(--accordion-padding-x-lg) pb-(--accordion-padding-y-lg) text-lg\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\n// Icon color based on color prop\nconst getIconColor = (color: AccordionProps[\"color\"], isExpanded: boolean) => {\n if (!isExpanded) return \"text-text-secondary\";\n return textColorClasses[color || \"default\"];\n};\n\nconst Accordion = React.memo<AccordionProps>(\n ({\n items,\n color = \"default\",\n size = \"md\",\n variant = \"default\",\n defaultActiveKey,\n activeKey: controlledActiveKey,\n onChange,\n multiple = false,\n expandIcon,\n expandIconPosition = \"right\",\n collapsible = false,\n destroyOnClose = false,\n showDivider = true,\n className,\n itemClassName,\n ref,\n }) => {\n const baseId = useId();\n const [internalActiveKey, setInternalActiveKey] = useState<\n string | string[]\n >(defaultActiveKey || (multiple ? [] : \"\"));\n\n const activeKey =\n controlledActiveKey !== undefined\n ? controlledActiveKey\n : internalActiveKey;\n\n const isActive = (key: string) => {\n if (Array.isArray(activeKey)) {\n return activeKey.includes(key);\n }\n return activeKey === key;\n };\n\n const handleToggle = (key: string, disabled?: boolean) => {\n if (disabled) return;\n\n let newActiveKey: string | string[];\n\n if (multiple) {\n const currentKeys = Array.isArray(activeKey) ? activeKey : [];\n newActiveKey = currentKeys.includes(key)\n ? currentKeys.filter((k) => k !== key)\n : [...currentKeys, key];\n } else {\n // Handle collapsible: prevent closing if it's the only open panel\n if (collapsible && activeKey === key) {\n return;\n }\n newActiveKey = activeKey === key ? \"\" : key;\n }\n\n if (controlledActiveKey === undefined) {\n setInternalActiveKey(newActiveKey);\n }\n onChange?.(newActiveKey);\n };\n\n // Render expand icon\n const renderExpandIcon = (isExpanded: boolean) => {\n if (expandIcon === false) return null;\n\n if (typeof expandIcon === \"function\") {\n return expandIcon(isExpanded);\n }\n\n if (expandIcon) {\n return (\n <span\n className={cn(\n \"shrink-0 transition-transform duration-300\",\n isExpanded && \"rotate-180\",\n )}\n >\n {expandIcon}\n </span>\n );\n }\n\n return (\n <ChevronDown\n className={cn(\n \"shrink-0 transition-transform duration-300\",\n isExpanded && \"rotate-180\",\n getIconColor(color, isExpanded),\n iconSizes[size as AccordionSize],\n )}\n />\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n accordionContainerVariants({\n variant,\n showDivider: showDivider && variant !== \"splitted\",\n }),\n className,\n )}\n >\n {items.map((item) => {\n const isItemActive = isActive(item.key);\n const headerId = `${baseId}-header-${item.key}`;\n const panelId = `${baseId}-panel-${item.key}`;\n\n return (\n <div\n key={item.key}\n className={cn(\n accordionItemVariants({ variant, color }),\n item.disabled && \"opacity-50\",\n itemClassName,\n )}\n >\n <button\n type=\"button\"\n id={headerId}\n aria-expanded={isItemActive}\n aria-controls={panelId}\n aria-disabled={item.disabled}\n disabled={item.disabled}\n onClick={() => handleToggle(item.key, item.disabled)}\n className={cn(\n accordionHeaderVariants({\n size,\n color,\n disabled: item.disabled,\n }),\n )}\n >\n {/* Left expand icon */}\n {expandIconPosition === \"left\" &&\n renderExpandIcon(isItemActive)}\n\n {/* Item icon */}\n {item.icon && (\n <span\n className={cn(\n \"shrink-0\",\n getIconColor(color, isItemActive),\n )}\n >\n {item.icon}\n </span>\n )}\n\n {/* Title and subtitle */}\n <div className=\"flex-1 min-w-0\">\n <div\n className={cn(\n isItemActive &&\n color !== \"default\" &&\n textColorClasses[color || \"default\"],\n )}\n >\n {item.title}\n </div>\n {item.subtitle && (\n <div className=\"text-text-secondary font-normal mt-0.5\">\n {item.subtitle}\n </div>\n )}\n </div>\n\n {/* Extra content */}\n {item.extra && (\n <span className=\"shrink-0 text-text-secondary\">\n {item.extra}\n </span>\n )}\n\n {/* Right expand icon */}\n {expandIconPosition === \"right\" &&\n renderExpandIcon(isItemActive)}\n </button>\n\n {/* Content panel */}\n <div\n id={panelId}\n role=\"region\"\n aria-labelledby={headerId}\n className={cn(\n \"grid transition-[grid-template-rows] duration-300 ease-out\",\n isItemActive ? \"grid-rows-[1fr]\" : \"grid-rows-[0fr]\",\n )}\n >\n <div className=\"overflow-hidden\">\n {(!destroyOnClose || isItemActive) && (\n <div className={cn(accordionContentVariants({ size }))}>\n {item.content}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n },\n);\n\nAccordion.displayName = \"Accordion\";\n\nexport type * from \"./types\";\nexport default Accordion;\n"]}
@@ -1,4 +1,5 @@
1
- import { cn } from './chunk-YNNAOXU5.js';
1
+ import { radioCheckedColorClasses } from './chunk-TUTOU4X6.js';
2
+ import { cn } from './chunk-2OGZENFC.js';
2
3
  import { cva } from 'class-variance-authority';
3
4
  import React from 'react';
4
5
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -7,20 +8,12 @@ var radioVariants = cva(
7
8
  "appearance-none rounded-full border-border border bg-background cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed outline-none",
8
9
  {
9
10
  variants: {
10
- color: {
11
- primary: "checked:border-primary checked:shadow-[inset_0_0_0_2px_var(--color-background),inset_0_0_0_13px_var(--color-primary)]",
12
- secondary: "checked:border-secondary checked:shadow-[inset_0_0_0_2px_var(--color-background),inset_0_0_0_13px_var(--color-secondary)]",
13
- accent: "checked:border-accent checked:shadow-[inset_0_0_0_2px_var(--color-background),inset_0_0_0_13px_var(--color-accent)]",
14
- success: "checked:border-success checked:shadow-[inset_0_0_0_2px_var(--color-background),inset_0_0_0_13px_var(--color-success)]",
15
- error: "checked:border-error checked:shadow-[inset_0_0_0_2px_var(--color-background),inset_0_0_0_13px_var(--color-error)]",
16
- warning: "checked:border-warning checked:shadow-[inset_0_0_0_2px_var(--color-background),inset_0_0_0_13px_var(--color-warning)]",
17
- info: "checked:border-info checked:shadow-[inset_0_0_0_2px_var(--color-background),inset_0_0_0_13px_var(--color-info)]"
18
- },
11
+ color: radioCheckedColorClasses,
19
12
  size: {
20
- xs: "w-[var(--checkbox-size-xs)] h-[var(--checkbox-size-xs)]",
21
- sm: "w-[var(--checkbox-size-sm)] h-[var(--checkbox-size-sm)]",
22
- md: "w-[var(--checkbox-size-md)] h-[var(--checkbox-size-md)]",
23
- lg: "w-[var(--checkbox-size-lg)] h-[var(--checkbox-size-lg)]"
13
+ xs: "w-(--checkbox-size-xs) h-(--checkbox-size-xs)",
14
+ sm: "w-(--checkbox-size-sm) h-(--checkbox-size-sm)",
15
+ md: "w-(--checkbox-size-md) h-(--checkbox-size-md)",
16
+ lg: "w-(--checkbox-size-lg) h-(--checkbox-size-lg)"
24
17
  },
25
18
  error: {
26
19
  true: "border-error checked:border-error",
@@ -98,5 +91,5 @@ Radio.displayName = "Radio";
98
91
  var radio_default = Radio;
99
92
 
100
93
  export { radio_default };
101
- //# sourceMappingURL=chunk-GEWR5ROK.js.map
102
- //# sourceMappingURL=chunk-GEWR5ROK.js.map
94
+ //# sourceMappingURL=chunk-23BPDLT4.js.map
95
+ //# sourceMappingURL=chunk-23BPDLT4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/radio/index.tsx"],"names":[],"mappings":";;;;;;AAOA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB,6IAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,KAAA,EAAO,wBAAA;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,QAAQ,KAAA,CAAM,IAAA;AAAA,EAClB,CAAC;AAAA,IACC,KAAA,GAAQ,SAAA;AAAA,IACR,IAAA,GAAO,IAAA;AAAA,IACP,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,MAAM,YAAA,mBACJ,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,SAAA,EAAW,EAAA;AAAA,UACT,aAAA,CAAc,EAAE,KAAA,EAAO,IAAA,EAAM,OAAO,CAAC,CAAC,OAAO,CAAA;AAAA,UAC7C;AAAA,SACF;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAGF,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,UAAA,IAAc,CAAC,OAAO,OAAO,YAAA;AAE5C,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EACb,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,YAAA;AAAA,YACA,KAAA,oBACC,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,yCAAA;AAAA,kBACA,KAAA,IAAS,YAAA;AAAA,kBACT,MAAM,QAAA,IAAY;AAAA,iBACpB;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,OAEJ;AAAA,MAAA,CACE,cAAc,KAAA,qBACd,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,mBAAA;AAAA,YACA,QAAQ,YAAA,GAAe;AAAA,WACzB;AAAA,UAEC,QAAA,EAAA,KAAA,IAAS;AAAA;AAAA;AACZ,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;AAGpB,IAAO,aAAA,GAAQ","file":"chunk-23BPDLT4.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport { radioCheckedColorClasses } from '../variants'\nimport type { RadioProps } from './types'\n\nconst radioVariants = cva(\n 'appearance-none rounded-full border-border border bg-background cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed outline-none',\n {\n variants: {\n color: radioCheckedColorClasses,\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 Radio = React.memo<RadioProps>(\n ({\n color = 'primary',\n size = 'md',\n label,\n helperText,\n error,\n className,\n ref,\n ...props\n }) => {\n const radioElement = (\n <input\n ref={ref}\n type=\"radio\"\n className={cn(\n radioVariants({ color, size, error: !!error }),\n className,\n )}\n {...props}\n />\n )\n\n if (!label && !helperText && !error) return radioElement\n\n return (\n <div className=\"w-full\">\n <label\n className={cn(\n 'flex items-center gap-2',\n !props.disabled && 'cursor-pointer',\n )}\n >\n {radioElement}\n {label && (\n <span\n className={cn(\n 'text-sm text-text-secondary select-none',\n error && 'text-error',\n props.disabled && 'opacity-50',\n )}\n >\n {label}\n </span>\n )}\n </label>\n {(helperText || error) && (\n <p\n className={cn(\n 'mt-1 ml-0 text-xs',\n error ? 'text-error' : 'text-text-secondary',\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n )\n },\n)\n\nRadio.displayName = 'Radio'\n\nexport type * from './types'\nexport default Radio\n"]}
@@ -10,8 +10,7 @@ var iconSizes = {
10
10
  xs: "h-3 w-3",
11
11
  sm: "h-3.5 w-3.5",
12
12
  md: "h-4 w-4",
13
- lg: "h-5 w-5",
14
- xl: "h-6 w-6"
13
+ lg: "h-5 w-5"
15
14
  };
16
15
  function getValidationStatus(messages) {
17
16
  const { error, warning, info, success, helperText } = messages;
@@ -53,5 +52,5 @@ cva("", {
53
52
  });
54
53
 
55
54
  export { cn, getValidationStatus, iconSizes, statusMessageVariants };
56
- //# sourceMappingURL=chunk-YNNAOXU5.js.map
57
- //# sourceMappingURL=chunk-YNNAOXU5.js.map
55
+ //# sourceMappingURL=chunk-2OGZENFC.js.map
56
+ //# sourceMappingURL=chunk-2OGZENFC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"names":[],"mappings":";;;;;AAaO,SAAS,MAAM,MAAA,EAA8B;AAClD,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;AAOO,IAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAoCO,SAAS,oBAAoB,QAAA,EAGlC;AACA,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,YAAW,GAAI,QAAA;AACtD,EAAA,MAAM,OAAA,GAAU,KAAA,IAAS,OAAA,IAAW,IAAA,IAAQ,OAAA,IAAW,UAAA;AAEvD,EAAA,IAAI,MAAA,GAA2B,SAAA;AAC/B,EAAA,IAAI,OAAO,MAAA,GAAS,OAAA;AAAA,OAAA,IACX,SAAS,MAAA,GAAS,SAAA;AAAA,OAAA,IAClB,SAAS,MAAA,GAAS,SAAA;AAAA,OAAA,IAClB,MAAM,MAAA,GAAS,MAAA;AAExB,EAAA,OAAO,EAAE,QAAQ,OAAA,EAAQ;AAC3B;AAWO,IAAM,qBAAA,GAAwB,IAAI,SAAA,EAAW;AAAA,EAClD,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ;AAAA,MACN,OAAA,EAAS,qBAAA;AAAA,MACT,KAAA,EAAO,YAAA;AAAA,MACP,OAAA,EAAS,cAAA;AAAA,MACT,IAAA,EAAM,WAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,MAAA,EAAQ;AAAA;AAEZ,CAAC;AAqEmC,IAAI,EAAA,EAAI;AAAA,EAC1C,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ;AAAA,MACN,OAAA,EAAS,uCAAA;AAAA,MACT,KAAA,EAAO,cAAA;AAAA,MACP,OAAA,EAAS,gBAAA;AAAA,MACT,IAAA,EAAM,aAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,MAAA,EAAQ;AAAA;AAEZ,CAAC","file":"chunk-2OGZENFC.js","sourcesContent":["/**\n * Global UI Utilities\n * Shared utilities for all components\n */\n\nimport { cva } from 'class-variance-authority'\nimport { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\n/**\n * Merge class names with Tailwind CSS conflict resolution\n * Combines clsx for conditional classes with tailwind-merge for deduplication\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs))\n}\n\n/**\n * Shared icon sizes for consistent sizing across components\n * Used in Button, Input, Checkbox, Select, MultiSelect, DatePicker, TimePicker, etc.\n * Standardized to 4-size scale: xs, sm, md, lg\n */\nexport const iconSizes = {\n xs: 'h-3 w-3',\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n} as const\n\nexport type IconSize = keyof typeof iconSizes\n\n/**\n * Validation status types for form components\n */\nexport type ValidationStatus =\n | 'default'\n | 'error'\n | 'warning'\n | 'info'\n | 'success'\n\n/**\n * Status message props interface\n */\nexport interface StatusMessages {\n error?: string | boolean\n warning?: string | boolean\n info?: string | boolean\n success?: string | boolean\n helperText?: string\n}\n\n/**\n * Resolves validation status and message from status props\n * Used in Input, Textarea, Select, MultiSelect, DatePicker, TimePicker, etc.\n *\n * @param messages - Object containing possible status messages\n * @returns Object with resolved status and message\n *\n * @example\n * const { status, message } = getValidationStatus({ error: \"Invalid email\", helperText: \"Enter your email\" });\n * // Returns: { status: \"error\", message: \"Invalid email\" }\n */\nexport function getValidationStatus(messages: StatusMessages): {\n status: ValidationStatus\n message?: string | boolean\n} {\n const { error, warning, info, success, helperText } = messages\n const message = error || warning || info || success || helperText\n\n let status: ValidationStatus = 'default'\n if (error) status = 'error'\n else if (warning) status = 'warning'\n else if (success) status = 'success'\n else if (info) status = 'info'\n\n return { status, message }\n}\n\n/**\n * Status message styling variants using cva\n * Provides consistent styling for helper/error/warning/info/success messages\n *\n * @example\n * <p className={statusMessageVariants({ status: \"error\" })}>\n * {message}\n * </p>\n */\nexport const statusMessageVariants = cva('text-xs', {\n variants: {\n status: {\n default: 'text-text-secondary',\n error: 'text-error',\n warning: 'text-warning',\n info: 'text-info',\n success: 'text-success',\n },\n },\n defaultVariants: {\n status: 'default',\n },\n})\n\n// ============================================================================\n// Shared Size Variant Patterns\n// ============================================================================\n\n/**\n * Input size variants\n * Used by: Input, Select, DatePicker, TimePicker, RangePicker\n * Provides consistent height and padding across form inputs\n * Standardized to 4-size scale: xs, sm, md, lg\n */\nexport const inputSizeVariants = {\n xs: 'h-(--input-height-xs) px-2 text-xs',\n sm: 'h-(--input-height-sm) px-3 text-sm',\n md: 'h-(--input-height-md) px-4 text-base',\n lg: 'h-(--input-height-lg) px-5 text-lg',\n} as const\n\n/**\n * Textarea size variants\n * Used by: Textarea\n * Different from input sizes due to multiline nature\n * Standardized to 4-size scale: xs, sm, md, lg\n */\nexport const textareaSizeVariants = {\n xs: 'min-h-(--textarea-min-height) p-(--textarea-padding-xs) text-xs',\n sm: 'min-h-(--textarea-min-height) p-(--textarea-padding-sm) text-sm',\n md: 'min-h-(--textarea-min-height) p-(--textarea-padding-md) text-base',\n lg: 'min-h-(--textarea-min-height) p-(--textarea-padding-lg) text-lg',\n} as const\n\n// ============================================================================\n// Shared Size Variant Patterns\n// ============================================================================\n\n/**\n * Button size variants\n * Used by: Button, IconButton, and button-like components\n */\nexport const buttonSizeVariants = {\n xs: 'h-8 px-3 text-xs gap-1.5',\n sm: 'h-9 px-3 text-sm gap-2',\n md: 'h-10 px-4 text-base gap-2',\n lg: 'h-11 px-5 text-lg gap-2.5',\n} as const\n\n/**\n * Badge/Tag size variants\n * Used by: Badge, Tag, Chip, and similar small components\n */\nexport const badgeSizeVariants = {\n xs: 'text-[10px] px-1 py-0 min-h-[14px]',\n sm: 'text-xs px-1.5 py-0.5 min-h-[16px]',\n md: 'text-xs px-2 py-0.5 min-h-[18px]',\n lg: 'text-sm px-2.5 py-1 min-h-[20px]',\n} as const\n\n// ============================================================================\n// Shared Status/Border Variant Patterns\n// ============================================================================\n\n/**\n * Border status variants for form components\n * Provides consistent border styling based on validation status\n *\n * @example\n * <input className={cn(borderStatusVariants({ status: \"error\" }))} />\n */\nexport const borderStatusVariants = cva('', {\n variants: {\n status: {\n default: 'border-border hover:border-primary/50',\n error: 'border-error',\n warning: 'border-warning',\n info: 'border-info',\n success: 'border-success',\n },\n },\n defaultVariants: {\n status: 'default',\n },\n})\n\n// ============================================================================\n// Shared State Utilities\n// ============================================================================\n\n/**\n * Focus ring utility for interactive components\n */\nexport const focusRing = 'focus:ring-2 focus:ring-primary/20 focus:outline-none'\n\n/**\n * Hover brightness for buttons and interactive elements\n */\nexport const hoverBrightness = 'hover:brightness-110 transition-all'\n\n/**\n * Disabled state styling\n */\nexport const disabledState =\n 'disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none'\n"]}
@@ -1,4 +1,4 @@
1
- import { cn, iconSizes } from './chunk-YNNAOXU5.js';
1
+ import { cn, iconSizes } from './chunk-2OGZENFC.js';
2
2
  import { cva } from 'class-variance-authority';
3
3
  import { ChevronDown } from 'lucide-react';
4
4
  import React, { useState } from 'react';
@@ -149,10 +149,12 @@ var Collapse = React.memo(
149
149
  open: controlledOpen,
150
150
  onChange,
151
151
  disabled = false,
152
- className
152
+ className,
153
+ ref
153
154
  }) => {
154
155
  const [internalOpen, setInternalOpen] = useState(defaultOpen);
155
156
  const isOpen = controlledOpen !== void 0 ? controlledOpen : internalOpen;
157
+ const contentId = React.useId();
156
158
  const handleToggle = () => {
157
159
  if (disabled) return;
158
160
  const newOpen = !isOpen;
@@ -164,6 +166,7 @@ var Collapse = React.memo(
164
166
  return /* @__PURE__ */ jsxs(
165
167
  "div",
166
168
  {
169
+ ref,
167
170
  className: cn(
168
171
  collapseVariants({ size }),
169
172
  colorStyles[color][variant],
@@ -176,6 +179,8 @@ var Collapse = React.memo(
176
179
  type: "button",
177
180
  onClick: handleToggle,
178
181
  disabled,
182
+ "aria-expanded": isOpen,
183
+ "aria-controls": contentId,
179
184
  className: cn(
180
185
  collapseHeaderVariants({ size, disabled }),
181
186
  headerColorStyles[color][variant]
@@ -198,6 +203,8 @@ var Collapse = React.memo(
198
203
  /* @__PURE__ */ jsx(
199
204
  "div",
200
205
  {
206
+ id: contentId,
207
+ role: "region",
201
208
  className: cn(
202
209
  "grid transition-[grid-template-rows] duration-300 ease-out",
203
210
  isOpen ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
@@ -214,5 +221,5 @@ Collapse.displayName = "Collapse";
214
221
  var collapse_default = Collapse;
215
222
 
216
223
  export { collapse_default };
217
- //# sourceMappingURL=chunk-SOV4PE3P.js.map
218
- //# sourceMappingURL=chunk-SOV4PE3P.js.map
224
+ //# sourceMappingURL=chunk-35K7N4JT.js.map
225
+ //# sourceMappingURL=chunk-35K7N4JT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/collapse/index.tsx"],"names":[],"mappings":"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","file":"chunk-35K7N4JT.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport { ChevronDown } from 'lucide-react'\nimport React, { useState } from 'react'\n\nimport { cn, iconSizes } from '../utils'\nimport type { CollapseProps } from './types'\n\nconst collapseVariants = cva(\n 'w-full border rounded-md transition-all overflow-hidden',\n {\n variants: {\n size: {\n xs: '',\n sm: '',\n md: '',\n lg: '',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n)\n\nconst collapseHeaderVariants = cva(\n 'w-full flex items-center justify-between cursor-pointer transition-colors font-medium',\n {\n variants: {\n size: {\n xs: 'px-2 py-1.5 text-xs',\n sm: 'px-3 py-2 text-sm',\n md: 'px-4 py-3 text-base',\n lg: 'px-5 py-4 text-lg',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n disabled: false,\n },\n },\n)\n\nconst collapseContentVariants = cva('transition-all', {\n variants: {\n size: {\n xs: 'px-2 pb-2 text-xs',\n sm: 'px-3 pb-3 text-sm',\n md: 'px-4 pb-4 text-base',\n lg: 'px-5 pb-5 text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst colorStyles = {\n default: {\n default: 'border-border bg-background text-text-primary',\n solid: 'border-border bg-surface text-text-primary',\n soft: 'border-border bg-surface/50 text-text-primary',\n },\n primary: {\n default: 'border-primary bg-background text-text-primary',\n solid: 'border-primary bg-primary text-background',\n soft: 'border-primary/30 bg-primary/10 text-text-primary',\n },\n secondary: {\n default: 'border-secondary bg-background text-text-primary',\n solid: 'border-secondary bg-secondary text-background',\n soft: 'border-secondary/30 bg-secondary/10 text-text-primary',\n },\n accent: {\n default: 'border-accent bg-background text-text-primary',\n solid: 'border-accent bg-accent text-background',\n soft: 'border-accent/30 bg-accent/10 text-text-primary',\n },\n success: {\n default: 'border-success bg-background text-text-primary',\n solid: 'border-success bg-success text-background',\n soft: 'border-success/30 bg-success/10 text-text-primary',\n },\n error: {\n default: 'border-error bg-background text-text-primary',\n solid: 'border-error bg-error text-background',\n soft: 'border-error/30 bg-error/10 text-text-primary',\n },\n warning: {\n default: 'border-warning bg-background text-text-primary',\n solid: 'border-warning bg-warning text-background',\n soft: 'border-warning/30 bg-warning/10 text-text-primary',\n },\n info: {\n default: 'border-info bg-background text-text-primary',\n solid: 'border-info bg-info text-background',\n soft: 'border-info/30 bg-info/10 text-text-primary',\n },\n}\n\nconst headerColorStyles = {\n default: {\n default: 'text-text-primary hover:bg-surface',\n solid: 'text-text-primary hover:bg-surface/80',\n soft: 'text-text-primary hover:bg-surface/80',\n },\n primary: {\n default: 'text-primary hover:bg-primary/10',\n solid: 'hover:bg-primary/90',\n soft: 'text-primary hover:bg-primary/20',\n },\n secondary: {\n default: 'text-secondary hover:bg-secondary/10',\n solid: 'hover:bg-secondary/90',\n soft: 'text-secondary hover:bg-secondary/20',\n },\n accent: {\n default: 'text-accent hover:bg-accent/10',\n solid: 'hover:bg-accent/90',\n soft: 'text-accent hover:bg-accent/20',\n },\n success: {\n default: 'text-success hover:bg-success/10',\n solid: 'hover:bg-success/90',\n soft: 'text-success hover:bg-success/20',\n },\n error: {\n default: 'text-error hover:bg-error/10',\n solid: 'hover:bg-error/90',\n soft: 'text-error hover:bg-error/20',\n },\n warning: {\n default: 'text-warning hover:bg-warning/10',\n solid: 'hover:bg-warning/90',\n soft: 'text-warning hover:bg-warning/20',\n },\n info: {\n default: 'text-info hover:bg-info/10',\n solid: 'hover:bg-info/90',\n soft: 'text-info hover:bg-info/20',\n },\n}\n\nconst Collapse = React.memo<CollapseProps>(\n ({\n title,\n children,\n color = 'default',\n size = 'md',\n variant = 'default',\n defaultOpen = false,\n open: controlledOpen,\n onChange,\n disabled = false,\n className,\n ref,\n }) => {\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen\n const contentId = React.useId()\n\n const handleToggle = () => {\n if (disabled) return\n\n const newOpen = !isOpen\n if (controlledOpen === undefined) {\n setInternalOpen(newOpen)\n }\n onChange?.(newOpen)\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n collapseVariants({ size }),\n colorStyles[color][variant],\n className,\n )}\n >\n <button\n type=\"button\"\n onClick={handleToggle}\n disabled={disabled}\n aria-expanded={isOpen}\n aria-controls={contentId}\n className={cn(\n collapseHeaderVariants({ size, disabled }),\n headerColorStyles[color][variant],\n )}\n >\n <span>{title}</span>\n <ChevronDown\n className={cn(\n iconSizes[size],\n 'transition-transform duration-300 ease-out flex-shrink-0',\n isOpen && 'rotate-180',\n )}\n />\n </button>\n <div\n id={contentId}\n role=\"region\"\n className={cn(\n 'grid transition-[grid-template-rows] duration-300 ease-out',\n isOpen ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]',\n )}\n >\n <div className=\"overflow-hidden\">\n <div className={collapseContentVariants({ size })}>{children}</div>\n </div>\n </div>\n </div>\n )\n },\n)\n\nCollapse.displayName = 'Collapse'\n\nexport type * from './types'\nexport default Collapse\n"]}