@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,336 @@
1
+ import { focusRingColorClasses, textColorClasses } from './chunk-NTPWR57C.js';
2
+ import { cn, iconSizes } from './chunk-NGYLRX6F.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
+ classNames,
159
+ ref
160
+ }) => {
161
+ const baseId = useId();
162
+ const [internalActiveKey, setInternalActiveKey] = useState(defaultActiveKey || (multiple ? [] : ""));
163
+ const activeKey = controlledActiveKey !== void 0 ? controlledActiveKey : internalActiveKey;
164
+ const isActive = (key) => {
165
+ if (Array.isArray(activeKey)) {
166
+ return activeKey.includes(key);
167
+ }
168
+ return activeKey === key;
169
+ };
170
+ const handleToggle = (key, disabled) => {
171
+ if (disabled) return;
172
+ let newActiveKey;
173
+ if (multiple) {
174
+ const currentKeys = Array.isArray(activeKey) ? activeKey : [];
175
+ newActiveKey = currentKeys.includes(key) ? currentKeys.filter((k) => k !== key) : [...currentKeys, key];
176
+ } else {
177
+ if (collapsible && activeKey === key) {
178
+ return;
179
+ }
180
+ newActiveKey = activeKey === key ? "" : key;
181
+ }
182
+ if (controlledActiveKey === void 0) {
183
+ setInternalActiveKey(newActiveKey);
184
+ }
185
+ onChange?.(newActiveKey);
186
+ };
187
+ const renderExpandIcon = (isExpanded) => {
188
+ if (expandIcon === false) return null;
189
+ if (typeof expandIcon === "function") {
190
+ return expandIcon(isExpanded);
191
+ }
192
+ if (expandIcon) {
193
+ return /* @__PURE__ */ jsx(
194
+ "span",
195
+ {
196
+ className: cn(
197
+ "shrink-0 transition-transform duration-300",
198
+ isExpanded && "rotate-180"
199
+ ),
200
+ children: expandIcon
201
+ }
202
+ );
203
+ }
204
+ return /* @__PURE__ */ jsx(
205
+ ChevronDown,
206
+ {
207
+ className: cn(
208
+ "shrink-0 transition-transform duration-300",
209
+ isExpanded && "rotate-180",
210
+ getIconColor(color, isExpanded),
211
+ iconSizes[size]
212
+ )
213
+ }
214
+ );
215
+ };
216
+ return /* @__PURE__ */ jsx(
217
+ "div",
218
+ {
219
+ ref,
220
+ "data-slot": "root",
221
+ className: cn(
222
+ "accordion_root",
223
+ accordionContainerVariants({
224
+ variant,
225
+ showDivider: showDivider && variant !== "splitted"
226
+ }),
227
+ classNames?.root,
228
+ className
229
+ ),
230
+ children: items.map((item) => {
231
+ const isItemActive = isActive(item.key);
232
+ const headerId = `${baseId}-header-${item.key}`;
233
+ const panelId = `${baseId}-panel-${item.key}`;
234
+ return /* @__PURE__ */ jsxs(
235
+ "div",
236
+ {
237
+ "data-slot": "item",
238
+ className: cn(
239
+ "accordion_item",
240
+ accordionItemVariants({ variant, color }),
241
+ item.disabled && "opacity-50",
242
+ classNames?.item,
243
+ itemClassName
244
+ ),
245
+ children: [
246
+ /* @__PURE__ */ jsxs(
247
+ "button",
248
+ {
249
+ type: "button",
250
+ id: headerId,
251
+ "aria-expanded": isItemActive,
252
+ "aria-controls": panelId,
253
+ "aria-disabled": item.disabled,
254
+ disabled: item.disabled,
255
+ onClick: () => handleToggle(item.key, item.disabled),
256
+ "data-slot": "trigger",
257
+ className: cn(
258
+ "accordion_trigger",
259
+ accordionHeaderVariants({
260
+ size,
261
+ color,
262
+ disabled: item.disabled
263
+ }),
264
+ classNames?.trigger
265
+ ),
266
+ children: [
267
+ expandIconPosition === "left" && renderExpandIcon(isItemActive),
268
+ item.icon && /* @__PURE__ */ jsx(
269
+ "span",
270
+ {
271
+ "data-slot": "icon",
272
+ className: cn(
273
+ "accordion_icon",
274
+ "shrink-0",
275
+ getIconColor(color, isItemActive),
276
+ classNames?.icon
277
+ ),
278
+ children: item.icon
279
+ }
280
+ ),
281
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
282
+ /* @__PURE__ */ jsx(
283
+ "div",
284
+ {
285
+ className: cn(
286
+ isItemActive && color !== "default" && textColorClasses[color || "default"]
287
+ ),
288
+ children: item.title
289
+ }
290
+ ),
291
+ item.subtitle && /* @__PURE__ */ jsx("div", { className: "text-text-secondary font-normal mt-0.5", children: item.subtitle })
292
+ ] }),
293
+ item.extra && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-text-secondary", children: item.extra }),
294
+ expandIconPosition === "right" && renderExpandIcon(isItemActive)
295
+ ]
296
+ }
297
+ ),
298
+ /* @__PURE__ */ jsx(
299
+ "div",
300
+ {
301
+ id: panelId,
302
+ role: "region",
303
+ "aria-labelledby": headerId,
304
+ className: cn(
305
+ "grid transition-[grid-template-rows] duration-300 ease-out",
306
+ isItemActive ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
307
+ ),
308
+ children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden", children: (!destroyOnClose || isItemActive) && /* @__PURE__ */ jsx(
309
+ "div",
310
+ {
311
+ "data-slot": "content",
312
+ className: cn(
313
+ "accordion_content",
314
+ accordionContentVariants({ size }),
315
+ classNames?.content
316
+ ),
317
+ children: item.content
318
+ }
319
+ ) })
320
+ }
321
+ )
322
+ ]
323
+ },
324
+ item.key
325
+ );
326
+ })
327
+ }
328
+ );
329
+ }
330
+ );
331
+ Accordion.displayName = "Accordion";
332
+ var accordion_default = Accordion;
333
+
334
+ export { accordion_default };
335
+ //# sourceMappingURL=chunk-CK6A2R66.js.map
336
+ //# sourceMappingURL=chunk-CK6A2R66.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/accordion/index.tsx"],"names":[],"mappings":"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","file":"chunk-CK6A2R66.js","sourcesContent":["'use client'\n\nimport { 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 classNames,\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 data-slot=\"root\"\n className={cn(\n \"accordion_root\",\n accordionContainerVariants({\n variant,\n showDivider: showDivider && variant !== \"splitted\",\n }),\n classNames?.root,\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 data-slot=\"item\"\n className={cn(\n \"accordion_item\",\n accordionItemVariants({ variant, color }),\n item.disabled && \"opacity-50\",\n classNames?.item,\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 data-slot=\"trigger\"\n className={cn(\n \"accordion_trigger\",\n accordionHeaderVariants({\n size,\n color,\n disabled: item.disabled,\n }),\n classNames?.trigger,\n )}\n >\n {/* Left expand icon */}\n {expandIconPosition === \"left\" &&\n renderExpandIcon(isItemActive)}\n\n {/* Item icon */}\n {item.icon && (\n <span\n data-slot=\"icon\"\n className={cn(\n \"accordion_icon\",\n \"shrink-0\",\n getIconColor(color, isItemActive),\n classNames?.icon,\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\n data-slot=\"content\"\n className={cn(\n \"accordion_content\",\n accordionContentVariants({ size }),\n classNames?.content,\n )}\n >\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"]}