@mdigital_ui/ui 0.4.2 → 0.4.3

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 (481) hide show
  1. package/dist/accordion/index.d.ts.map +1 -1
  2. package/dist/accordion/index.js +3 -3
  3. package/dist/accordion/types.d.ts +2 -42
  4. package/dist/accordion/types.d.ts.map +1 -1
  5. package/dist/avatar/index.d.ts +0 -6
  6. package/dist/avatar/index.d.ts.map +1 -1
  7. package/dist/avatar/index.js +2 -2
  8. package/dist/avatar/types.d.ts +0 -48
  9. package/dist/avatar/types.d.ts.map +1 -1
  10. package/dist/badge/index.d.ts +1 -23
  11. package/dist/badge/index.d.ts.map +1 -1
  12. package/dist/badge/index.js +3 -3
  13. package/dist/badge/types.d.ts +1 -20
  14. package/dist/badge/types.d.ts.map +1 -1
  15. package/dist/breadcrumbs/index.d.ts.map +1 -1
  16. package/dist/breadcrumbs/index.js +7 -6
  17. package/dist/breadcrumbs/types.d.ts +3 -38
  18. package/dist/breadcrumbs/types.d.ts.map +1 -1
  19. package/dist/button/index.d.ts +1 -1
  20. package/dist/button/index.d.ts.map +1 -1
  21. package/dist/button/index.js +5 -5
  22. package/dist/button/types.d.ts +2 -8
  23. package/dist/button/types.d.ts.map +1 -1
  24. package/dist/button-group/index.d.ts +0 -28
  25. package/dist/button-group/index.d.ts.map +1 -1
  26. package/dist/button-group/index.js +2 -2
  27. package/dist/button-group/types.d.ts +0 -19
  28. package/dist/button-group/types.d.ts.map +1 -1
  29. package/dist/card/index.d.ts +0 -40
  30. package/dist/card/index.d.ts.map +1 -1
  31. package/dist/card/index.js +3 -3
  32. package/dist/card/types.d.ts +3 -29
  33. package/dist/card/types.d.ts.map +1 -1
  34. package/dist/carousel/index.d.ts +4 -0
  35. package/dist/carousel/index.d.ts.map +1 -1
  36. package/dist/carousel/index.js +2 -2
  37. package/dist/cascader/index.d.ts +0 -21
  38. package/dist/cascader/index.d.ts.map +1 -1
  39. package/dist/cascader/index.js +3 -3
  40. package/dist/cascader/types.d.ts +3 -89
  41. package/dist/cascader/types.d.ts.map +1 -1
  42. package/dist/checkbox/index.d.ts.map +1 -1
  43. package/dist/checkbox/index.js +3 -3
  44. package/dist/checkbox/types.d.ts +2 -2
  45. package/dist/checkbox/types.d.ts.map +1 -1
  46. package/dist/checkbox-group/index.d.ts.map +1 -1
  47. package/dist/checkbox-group/index.js +2 -2
  48. package/dist/checkbox-group/types.d.ts +0 -24
  49. package/dist/checkbox-group/types.d.ts.map +1 -1
  50. package/dist/{chunk-H6G4BUPA.js → chunk-2FYXBW4S.js} +201 -161
  51. package/dist/chunk-2FYXBW4S.js.map +1 -0
  52. package/dist/{chunk-KH577UDI.js → chunk-2OBMSB5S.js} +9 -6
  53. package/dist/chunk-2OBMSB5S.js.map +1 -0
  54. package/dist/{chunk-3BIV3QE2.js → chunk-3FXOQC6P.js} +60 -28
  55. package/dist/chunk-3FXOQC6P.js.map +1 -0
  56. package/dist/{chunk-YXLIGJTN.js → chunk-3KISIZGP.js} +6 -6
  57. package/dist/chunk-3KISIZGP.js.map +1 -0
  58. package/dist/{chunk-6G3BMY4N.js → chunk-3QD7AQX7.js} +76 -85
  59. package/dist/chunk-3QD7AQX7.js.map +1 -0
  60. package/dist/{chunk-ROA7BYGB.js → chunk-3YP7HY3Y.js} +7 -5
  61. package/dist/chunk-3YP7HY3Y.js.map +1 -0
  62. package/dist/{chunk-OLTQAMV2.js → chunk-442OQLPK.js} +9 -24
  63. package/dist/chunk-442OQLPK.js.map +1 -0
  64. package/dist/{chunk-OFUPJH35.js → chunk-4TEZWGX7.js} +3 -3
  65. package/dist/{chunk-OFUPJH35.js.map → chunk-4TEZWGX7.js.map} +1 -1
  66. package/dist/chunk-4WZDQI22.js +378 -0
  67. package/dist/chunk-4WZDQI22.js.map +1 -0
  68. package/dist/{chunk-TLNHWOQQ.js → chunk-54Z7XTJA.js} +30 -19
  69. package/dist/chunk-54Z7XTJA.js.map +1 -0
  70. package/dist/{chunk-64NHVOZS.js → chunk-5CIJ7UCP.js} +25 -15
  71. package/dist/chunk-5CIJ7UCP.js.map +1 -0
  72. package/dist/{chunk-ON2CMF6J.js → chunk-5XLCUGLQ.js} +14 -10
  73. package/dist/chunk-5XLCUGLQ.js.map +1 -0
  74. package/dist/{chunk-DUIL5BYS.js → chunk-62LTLXVG.js} +72 -48
  75. package/dist/chunk-62LTLXVG.js.map +1 -0
  76. package/dist/{chunk-G6NVGBYZ.js → chunk-6ZPCKFRS.js} +23 -22
  77. package/dist/chunk-6ZPCKFRS.js.map +1 -0
  78. package/dist/{chunk-N2WHJ3FI.js → chunk-7OYMEXY3.js} +7 -5
  79. package/dist/chunk-7OYMEXY3.js.map +1 -0
  80. package/dist/{chunk-ONGJXAYQ.js → chunk-AEPBQO7U.js} +6 -5
  81. package/dist/chunk-AEPBQO7U.js.map +1 -0
  82. package/dist/{chunk-UTWQ2FZK.js → chunk-AOXTD7QZ.js} +47 -93
  83. package/dist/chunk-AOXTD7QZ.js.map +1 -0
  84. package/dist/{chunk-ZJNGZCRB.js → chunk-BLFXVSZU.js} +54 -153
  85. package/dist/chunk-BLFXVSZU.js.map +1 -0
  86. package/dist/{chunk-VOODO2ZE.js → chunk-BMA4E3T6.js} +6 -14
  87. package/dist/chunk-BMA4E3T6.js.map +1 -0
  88. package/dist/{chunk-4FFVNUTK.js → chunk-BNHRUHI4.js} +7 -6
  89. package/dist/chunk-BNHRUHI4.js.map +1 -0
  90. package/dist/{chunk-3BZE6BBJ.js → chunk-C46VTIW7.js} +41 -23
  91. package/dist/chunk-C46VTIW7.js.map +1 -0
  92. package/dist/{chunk-BVO2BNFG.js → chunk-CHGABWIV.js} +3 -3
  93. package/dist/chunk-CHGABWIV.js.map +1 -0
  94. package/dist/chunk-DF2ICSNI.js +99 -0
  95. package/dist/chunk-DF2ICSNI.js.map +1 -0
  96. package/dist/chunk-DOI7OTYV.js +81 -0
  97. package/dist/chunk-DOI7OTYV.js.map +1 -0
  98. package/dist/{chunk-2TLOWZE4.js → chunk-DPIXBBXK.js} +40 -179
  99. package/dist/chunk-DPIXBBXK.js.map +1 -0
  100. package/dist/{chunk-OQFYIKWR.js → chunk-EC5DXYME.js} +21 -12
  101. package/dist/chunk-EC5DXYME.js.map +1 -0
  102. package/dist/{chunk-KJTMZJ7V.js → chunk-EHNWVQBL.js} +65 -48
  103. package/dist/chunk-EHNWVQBL.js.map +1 -0
  104. package/dist/{chunk-I32ZQUYY.js → chunk-F4GLUQOF.js} +9 -8
  105. package/dist/chunk-F4GLUQOF.js.map +1 -0
  106. package/dist/{chunk-GJPZOMFE.js → chunk-FCU2ENQQ.js} +63 -31
  107. package/dist/chunk-FCU2ENQQ.js.map +1 -0
  108. package/dist/{chunk-JWTWPZ32.js → chunk-FZXMRXWE.js} +10 -9
  109. package/dist/chunk-FZXMRXWE.js.map +1 -0
  110. package/dist/{chunk-LOYLJRCF.js → chunk-G27HGKWO.js} +15 -5
  111. package/dist/chunk-G27HGKWO.js.map +1 -0
  112. package/dist/{chunk-Y4XAXZHB.js → chunk-GGQF5PQN.js} +9 -8
  113. package/dist/chunk-GGQF5PQN.js.map +1 -0
  114. package/dist/chunk-GLJDHW73.js +24 -0
  115. package/dist/chunk-GLJDHW73.js.map +1 -0
  116. package/dist/{chunk-LX4FDH4J.js → chunk-GPSZJWU3.js} +10 -11
  117. package/dist/chunk-GPSZJWU3.js.map +1 -0
  118. package/dist/{chunk-6LYRMQOI.js → chunk-H6PCGSIT.js} +21 -16
  119. package/dist/chunk-H6PCGSIT.js.map +1 -0
  120. package/dist/{chunk-WRSG7WU5.js → chunk-HJITFPBT.js} +78 -94
  121. package/dist/chunk-HJITFPBT.js.map +1 -0
  122. package/dist/{chunk-HECAAILV.js → chunk-HRVOTFU4.js} +24 -16
  123. package/dist/chunk-HRVOTFU4.js.map +1 -0
  124. package/dist/{chunk-O3V3BTIJ.js → chunk-HSW64H23.js} +54 -87
  125. package/dist/chunk-HSW64H23.js.map +1 -0
  126. package/dist/{chunk-YS5AIY4A.js → chunk-K5RV3GF4.js} +6 -5
  127. package/dist/chunk-K5RV3GF4.js.map +1 -0
  128. package/dist/{chunk-2WZVD7P3.js → chunk-KZZJAZ5M.js} +6 -5
  129. package/dist/chunk-KZZJAZ5M.js.map +1 -0
  130. package/dist/{chunk-6HGUDHHE.js → chunk-L5BU2QTI.js} +3 -5
  131. package/dist/chunk-L5BU2QTI.js.map +1 -0
  132. package/dist/{chunk-C5IGZLIT.js → chunk-LM6CJZX5.js} +8 -22
  133. package/dist/chunk-LM6CJZX5.js.map +1 -0
  134. package/dist/{chunk-RFHTC6AH.js → chunk-LXHOS74B.js} +16 -38
  135. package/dist/chunk-LXHOS74B.js.map +1 -0
  136. package/dist/{chunk-674JC24S.js → chunk-MZDAQSI4.js} +27 -28
  137. package/dist/chunk-MZDAQSI4.js.map +1 -0
  138. package/dist/{chunk-3PWILVOE.js → chunk-NHM6DZOF.js} +35 -50
  139. package/dist/chunk-NHM6DZOF.js.map +1 -0
  140. package/dist/chunk-NZHKNUGE.js +96 -0
  141. package/dist/chunk-NZHKNUGE.js.map +1 -0
  142. package/dist/{chunk-2PNLIQYM.js → chunk-ON76IMMI.js} +3 -3
  143. package/dist/chunk-ON76IMMI.js.map +1 -0
  144. package/dist/{chunk-POLVJ36Y.js → chunk-QNLTSHMB.js} +13 -38
  145. package/dist/chunk-QNLTSHMB.js.map +1 -0
  146. package/dist/{chunk-7UCNBMCV.js → chunk-QZ67UOPR.js} +13 -19
  147. package/dist/chunk-QZ67UOPR.js.map +1 -0
  148. package/dist/{chunk-NGYLRX6F.js → chunk-RAS6HUEI.js} +2 -2
  149. package/dist/chunk-RAS6HUEI.js.map +1 -0
  150. package/dist/{chunk-R3TLU26W.js → chunk-S7R4NTOI.js} +9 -7
  151. package/dist/chunk-S7R4NTOI.js.map +1 -0
  152. package/dist/{chunk-L5UYN5LX.js → chunk-SHUHAORE.js} +78 -44
  153. package/dist/chunk-SHUHAORE.js.map +1 -0
  154. package/dist/{chunk-SGRACNBP.js → chunk-STAYOHDI.js} +13 -5
  155. package/dist/chunk-STAYOHDI.js.map +1 -0
  156. package/dist/{chunk-ERRZ2CSG.js → chunk-SUNCSPDF.js} +45 -74
  157. package/dist/chunk-SUNCSPDF.js.map +1 -0
  158. package/dist/{chunk-YJOLLSHH.js → chunk-TS2PG6Z4.js} +42 -34
  159. package/dist/chunk-TS2PG6Z4.js.map +1 -0
  160. package/dist/{chunk-X3YNHX77.js → chunk-U3RHF7QF.js} +32 -33
  161. package/dist/chunk-U3RHF7QF.js.map +1 -0
  162. package/dist/{chunk-GVVP5TZM.js → chunk-UIVOI7HE.js} +231 -197
  163. package/dist/chunk-UIVOI7HE.js.map +1 -0
  164. package/dist/{chunk-D4SUSZDN.js → chunk-USHR3MWQ.js} +13 -13
  165. package/dist/chunk-USHR3MWQ.js.map +1 -0
  166. package/dist/{chunk-764UKE6X.js → chunk-VIK6UTVN.js} +7 -6
  167. package/dist/chunk-VIK6UTVN.js.map +1 -0
  168. package/dist/{chunk-HUXODBIO.js → chunk-VKY3JXAQ.js} +42 -101
  169. package/dist/chunk-VKY3JXAQ.js.map +1 -0
  170. package/dist/{chunk-FZSCLZF6.js → chunk-VV3VO5TS.js} +64 -101
  171. package/dist/chunk-VV3VO5TS.js.map +1 -0
  172. package/dist/{chunk-ZIYA7TGX.js → chunk-W5L7C7WS.js} +12 -22
  173. package/dist/chunk-W5L7C7WS.js.map +1 -0
  174. package/dist/{chunk-GOLARX5K.js → chunk-X3CNTOKQ.js} +13 -10
  175. package/dist/chunk-X3CNTOKQ.js.map +1 -0
  176. package/dist/{chunk-EHWXPH76.js → chunk-XKDN5PWJ.js} +8 -6
  177. package/dist/chunk-XKDN5PWJ.js.map +1 -0
  178. package/dist/{chunk-HCOTO5WX.js → chunk-XWCWTPEM.js} +7 -8
  179. package/dist/chunk-XWCWTPEM.js.map +1 -0
  180. package/dist/{chunk-BPRCBPVJ.js → chunk-YSV5GQS7.js} +55 -17
  181. package/dist/chunk-YSV5GQS7.js.map +1 -0
  182. package/dist/{chunk-6JGNJI5T.js → chunk-ZNNIXMJZ.js} +35 -21
  183. package/dist/chunk-ZNNIXMJZ.js.map +1 -0
  184. package/dist/{chunk-CN74CNAN.js → chunk-ZZZGD5EF.js} +8 -22
  185. package/dist/chunk-ZZZGD5EF.js.map +1 -0
  186. package/dist/clipboard/index.d.ts.map +1 -1
  187. package/dist/clipboard/index.js +4 -4
  188. package/dist/clipboard/types.d.ts +2 -35
  189. package/dist/clipboard/types.d.ts.map +1 -1
  190. package/dist/collapse/index.d.ts.map +1 -1
  191. package/dist/collapse/index.js +3 -3
  192. package/dist/collapse/types.d.ts +2 -35
  193. package/dist/collapse/types.d.ts.map +1 -1
  194. package/dist/command/index.d.ts +39 -66
  195. package/dist/command/index.d.ts.map +1 -1
  196. package/dist/command/index.js +3 -3
  197. package/dist/command/types.d.ts +2 -2
  198. package/dist/command/types.d.ts.map +1 -1
  199. package/dist/context-menu/index.d.ts +1 -45
  200. package/dist/context-menu/index.d.ts.map +1 -1
  201. package/dist/context-menu/index.js +4 -3
  202. package/dist/context-menu/types.d.ts +9 -63
  203. package/dist/context-menu/types.d.ts.map +1 -1
  204. package/dist/date-picker/index.d.ts.map +1 -1
  205. package/dist/date-picker/index.js +4 -4
  206. package/dist/date-picker/types.d.ts +2 -2
  207. package/dist/date-picker/types.d.ts.map +1 -1
  208. package/dist/descriptions/index.d.ts.map +1 -1
  209. package/dist/descriptions/index.js +2 -2
  210. package/dist/divider/index.d.ts.map +1 -1
  211. package/dist/divider/index.js +3 -2
  212. package/dist/divider/types.d.ts +0 -12
  213. package/dist/divider/types.d.ts.map +1 -1
  214. package/dist/drawer/index.d.ts +4 -1
  215. package/dist/drawer/index.d.ts.map +1 -1
  216. package/dist/drawer/index.js +2 -2
  217. package/dist/drawer/types.d.ts +2 -145
  218. package/dist/drawer/types.d.ts.map +1 -1
  219. package/dist/dropdown/index.d.ts.map +1 -1
  220. package/dist/dropdown/index.js +6 -5
  221. package/dist/dropdown/types.d.ts +2 -71
  222. package/dist/dropdown/types.d.ts.map +1 -1
  223. package/dist/empty/index.d.ts.map +1 -1
  224. package/dist/empty/index.js +2 -2
  225. package/dist/empty/types.d.ts +3 -40
  226. package/dist/empty/types.d.ts.map +1 -1
  227. package/dist/fetching-overlay/index.d.ts.map +1 -1
  228. package/dist/fetching-overlay/index.js +4 -4
  229. package/dist/float-input/index.d.ts.map +1 -1
  230. package/dist/float-input/index.js +4 -4
  231. package/dist/float-input/types.d.ts +5 -10
  232. package/dist/float-input/types.d.ts.map +1 -1
  233. package/dist/grid/index.d.ts +1 -1
  234. package/dist/grid/index.d.ts.map +1 -1
  235. package/dist/grid/index.js +2 -2
  236. package/dist/grid/types.d.ts +1 -9
  237. package/dist/grid/types.d.ts.map +1 -1
  238. package/dist/hooks/index.d.ts +1 -0
  239. package/dist/hooks/index.d.ts.map +1 -1
  240. package/dist/hooks/useMenuNavigation.d.ts +18 -0
  241. package/dist/hooks/useMenuNavigation.d.ts.map +1 -0
  242. package/dist/image/index.d.ts.map +1 -1
  243. package/dist/image/index.js +2 -2
  244. package/dist/image/types.d.ts +2 -34
  245. package/dist/image/types.d.ts.map +1 -1
  246. package/dist/index.d.ts +2 -1
  247. package/dist/index.d.ts.map +1 -1
  248. package/dist/index.js +68 -67
  249. package/dist/index.js.map +1 -1
  250. package/dist/input/index.d.ts.map +1 -1
  251. package/dist/input/index.js +4 -4
  252. package/dist/input/types.d.ts +9 -4
  253. package/dist/input/types.d.ts.map +1 -1
  254. package/dist/input-group/index.d.ts.map +1 -1
  255. package/dist/input-group/index.js +2 -2
  256. package/dist/input-group/types.d.ts +7 -19
  257. package/dist/input-group/types.d.ts.map +1 -1
  258. package/dist/input-otp/index.d.ts.map +1 -1
  259. package/dist/input-otp/index.js +2 -2
  260. package/dist/input-otp/types.d.ts +3 -81
  261. package/dist/input-otp/types.d.ts.map +1 -1
  262. package/dist/input-password/index.d.ts.map +1 -1
  263. package/dist/input-password/index.js +5 -5
  264. package/dist/input-password/types.d.ts +0 -6
  265. package/dist/input-password/types.d.ts.map +1 -1
  266. package/dist/kbd/index.d.ts.map +1 -1
  267. package/dist/kbd/index.js +3 -3
  268. package/dist/kbd/types.d.ts +2 -17
  269. package/dist/kbd/types.d.ts.map +1 -1
  270. package/dist/link/index.d.ts +1 -1
  271. package/dist/link/index.d.ts.map +1 -1
  272. package/dist/link/index.js +2 -2
  273. package/dist/menubar/index.d.ts.map +1 -1
  274. package/dist/menubar/index.js +5 -4
  275. package/dist/modal/index.d.ts.map +1 -1
  276. package/dist/modal/index.js +2 -2
  277. package/dist/modal/types.d.ts +2 -44
  278. package/dist/modal/types.d.ts.map +1 -1
  279. package/dist/multi-select/index.d.ts.map +1 -1
  280. package/dist/multi-select/index.js +7 -6
  281. package/dist/multi-select/types.d.ts +2 -34
  282. package/dist/multi-select/types.d.ts.map +1 -1
  283. package/dist/navigation-menu/index.js +2 -2
  284. package/dist/notification/index.d.ts.map +1 -1
  285. package/dist/notification/index.js +3 -3
  286. package/dist/notification/types.d.ts +2 -62
  287. package/dist/notification/types.d.ts.map +1 -1
  288. package/dist/number-input/index.d.ts.map +1 -1
  289. package/dist/number-input/index.js +5 -5
  290. package/dist/number-input/types.d.ts +5 -2
  291. package/dist/number-input/types.d.ts.map +1 -1
  292. package/dist/pagination/index.d.ts.map +1 -1
  293. package/dist/pagination/index.js +4 -3
  294. package/dist/pagination/types.d.ts +3 -53
  295. package/dist/pagination/types.d.ts.map +1 -1
  296. package/dist/popover/index.d.ts +1 -1
  297. package/dist/popover/index.d.ts.map +1 -1
  298. package/dist/popover/index.js +3 -3
  299. package/dist/popover/types.d.ts +3 -17
  300. package/dist/popover/types.d.ts.map +1 -1
  301. package/dist/progress/index.d.ts.map +1 -1
  302. package/dist/progress/index.js +3 -2
  303. package/dist/progress/styles.d.ts +4 -5
  304. package/dist/progress/styles.d.ts.map +1 -1
  305. package/dist/progress/types.d.ts +2 -44
  306. package/dist/progress/types.d.ts.map +1 -1
  307. package/dist/radio/index.d.ts.map +1 -1
  308. package/dist/radio/index.js +3 -3
  309. package/dist/radio/types.d.ts +2 -2
  310. package/dist/radio/types.d.ts.map +1 -1
  311. package/dist/radio-group/index.d.ts.map +1 -1
  312. package/dist/radio-group/index.js +2 -2
  313. package/dist/radio-group/types.d.ts +0 -24
  314. package/dist/radio-group/types.d.ts.map +1 -1
  315. package/dist/rating/index.d.ts.map +1 -1
  316. package/dist/rating/index.js +2 -2
  317. package/dist/rating/types.d.ts +2 -2
  318. package/dist/rating/types.d.ts.map +1 -1
  319. package/dist/scroll-area/index.d.ts.map +1 -1
  320. package/dist/scroll-area/index.js +2 -2
  321. package/dist/select/index.d.ts.map +1 -1
  322. package/dist/select/index.js +7 -6
  323. package/dist/select/types.d.ts +8 -3
  324. package/dist/select/types.d.ts.map +1 -1
  325. package/dist/shared/useSelectBase.d.ts +4 -2
  326. package/dist/shared/useSelectBase.d.ts.map +1 -1
  327. package/dist/skeleton/index.d.ts.map +1 -1
  328. package/dist/skeleton/index.js +3 -3
  329. package/dist/skeleton/types.d.ts +1 -1
  330. package/dist/skeleton/types.d.ts.map +1 -1
  331. package/dist/slider/index.d.ts.map +1 -1
  332. package/dist/slider/index.js +3 -2
  333. package/dist/slider/types.d.ts +2 -36
  334. package/dist/slider/types.d.ts.map +1 -1
  335. package/dist/spinner/index.d.ts +2 -1
  336. package/dist/spinner/index.d.ts.map +1 -1
  337. package/dist/spinner/index.js +3 -3
  338. package/dist/spinner/types.d.ts +1 -1
  339. package/dist/spinner/types.d.ts.map +1 -1
  340. package/dist/stepper/index.d.ts.map +1 -1
  341. package/dist/stepper/index.js +3 -2
  342. package/dist/stepper/types.d.ts +3 -2
  343. package/dist/stepper/types.d.ts.map +1 -1
  344. package/dist/switch/index.d.ts.map +1 -1
  345. package/dist/switch/index.js +3 -3
  346. package/dist/switch/types.d.ts +2 -31
  347. package/dist/switch/types.d.ts.map +1 -1
  348. package/dist/table/index.d.ts.map +1 -1
  349. package/dist/table/index.js +11 -11
  350. package/dist/table/types.d.ts +2 -2
  351. package/dist/table/types.d.ts.map +1 -1
  352. package/dist/tabs/index.d.ts.map +1 -1
  353. package/dist/tabs/index.js +3 -3
  354. package/dist/tabs/types.d.ts +3 -53
  355. package/dist/tabs/types.d.ts.map +1 -1
  356. package/dist/tag/index.d.ts +1 -1
  357. package/dist/tag/index.d.ts.map +1 -1
  358. package/dist/tag/index.js +3 -3
  359. package/dist/tag/types.d.ts +1 -1
  360. package/dist/tag/types.d.ts.map +1 -1
  361. package/dist/textarea/index.d.ts.map +1 -1
  362. package/dist/textarea/index.js +2 -2
  363. package/dist/textarea/types.d.ts +3 -54
  364. package/dist/textarea/types.d.ts.map +1 -1
  365. package/dist/theme/types.d.ts +0 -12
  366. package/dist/theme/types.d.ts.map +1 -1
  367. package/dist/timeline/index.d.ts.map +1 -1
  368. package/dist/timeline/index.js +2 -2
  369. package/dist/toast/index.d.ts.map +1 -1
  370. package/dist/toast/index.js +3 -3
  371. package/dist/toast/types.d.ts +0 -6
  372. package/dist/toast/types.d.ts.map +1 -1
  373. package/dist/toggle/index.d.ts.map +1 -1
  374. package/dist/toggle/index.js +4 -3
  375. package/dist/toggle/types.d.ts +3 -26
  376. package/dist/toggle/types.d.ts.map +1 -1
  377. package/dist/toggle-group/index.d.ts.map +1 -1
  378. package/dist/toggle-group/index.js +4 -3
  379. package/dist/toggle-group/types.d.ts +3 -44
  380. package/dist/toggle-group/types.d.ts.map +1 -1
  381. package/dist/tooltip/index.d.ts.map +1 -1
  382. package/dist/tooltip/index.js +3 -3
  383. package/dist/tooltip/types.d.ts +2 -44
  384. package/dist/tooltip/types.d.ts.map +1 -1
  385. package/dist/transfer/index.d.ts.map +1 -1
  386. package/dist/transfer/index.js +4 -4
  387. package/dist/transfer/types.d.ts +0 -20
  388. package/dist/transfer/types.d.ts.map +1 -1
  389. package/dist/transfer/utils.d.ts.map +1 -1
  390. package/dist/tree/index.d.ts.map +1 -1
  391. package/dist/tree/index.js +2 -2
  392. package/dist/tree/types.d.ts +2 -73
  393. package/dist/tree/types.d.ts.map +1 -1
  394. package/dist/tree-select/index.d.ts.map +1 -1
  395. package/dist/tree-select/index.js +5 -5
  396. package/dist/tree-select/types.d.ts +3 -91
  397. package/dist/tree-select/types.d.ts.map +1 -1
  398. package/dist/types.d.ts +1 -35
  399. package/dist/types.d.ts.map +1 -1
  400. package/dist/upload/index.d.ts.map +1 -1
  401. package/dist/upload/index.js +3 -3
  402. package/dist/upload/types.d.ts +5 -32
  403. package/dist/upload/types.d.ts.map +1 -1
  404. package/dist/upload/utils.d.ts +1 -0
  405. package/dist/upload/utils.d.ts.map +1 -1
  406. package/dist/utils.d.ts +0 -39
  407. package/dist/utils.d.ts.map +1 -1
  408. package/dist/variants.d.ts +3 -314
  409. package/dist/variants.d.ts.map +1 -1
  410. package/package.json +1 -1
  411. package/styles/global.css +300 -977
  412. package/dist/chunk-2PNLIQYM.js.map +0 -1
  413. package/dist/chunk-2TLOWZE4.js.map +0 -1
  414. package/dist/chunk-2WZVD7P3.js.map +0 -1
  415. package/dist/chunk-3BIV3QE2.js.map +0 -1
  416. package/dist/chunk-3BZE6BBJ.js.map +0 -1
  417. package/dist/chunk-3PWILVOE.js.map +0 -1
  418. package/dist/chunk-4FFVNUTK.js.map +0 -1
  419. package/dist/chunk-64NHVOZS.js.map +0 -1
  420. package/dist/chunk-674JC24S.js.map +0 -1
  421. package/dist/chunk-6BAP6QUT.js +0 -72
  422. package/dist/chunk-6BAP6QUT.js.map +0 -1
  423. package/dist/chunk-6G3BMY4N.js.map +0 -1
  424. package/dist/chunk-6HGUDHHE.js.map +0 -1
  425. package/dist/chunk-6JGNJI5T.js.map +0 -1
  426. package/dist/chunk-6LYRMQOI.js.map +0 -1
  427. package/dist/chunk-6YOOKE6C.js +0 -138
  428. package/dist/chunk-6YOOKE6C.js.map +0 -1
  429. package/dist/chunk-764UKE6X.js.map +0 -1
  430. package/dist/chunk-7UCNBMCV.js.map +0 -1
  431. package/dist/chunk-BPRCBPVJ.js.map +0 -1
  432. package/dist/chunk-BVO2BNFG.js.map +0 -1
  433. package/dist/chunk-C5IGZLIT.js.map +0 -1
  434. package/dist/chunk-CN74CNAN.js.map +0 -1
  435. package/dist/chunk-D4SUSZDN.js.map +0 -1
  436. package/dist/chunk-DUIL5BYS.js.map +0 -1
  437. package/dist/chunk-EHWXPH76.js.map +0 -1
  438. package/dist/chunk-ERRZ2CSG.js.map +0 -1
  439. package/dist/chunk-EZGK67T6.js +0 -383
  440. package/dist/chunk-EZGK67T6.js.map +0 -1
  441. package/dist/chunk-FZSCLZF6.js.map +0 -1
  442. package/dist/chunk-G6NVGBYZ.js.map +0 -1
  443. package/dist/chunk-GJPZOMFE.js.map +0 -1
  444. package/dist/chunk-GOLARX5K.js.map +0 -1
  445. package/dist/chunk-GVVP5TZM.js.map +0 -1
  446. package/dist/chunk-H6G4BUPA.js.map +0 -1
  447. package/dist/chunk-HCOTO5WX.js.map +0 -1
  448. package/dist/chunk-HECAAILV.js.map +0 -1
  449. package/dist/chunk-HUXODBIO.js.map +0 -1
  450. package/dist/chunk-I32ZQUYY.js.map +0 -1
  451. package/dist/chunk-JWTWPZ32.js.map +0 -1
  452. package/dist/chunk-KH577UDI.js.map +0 -1
  453. package/dist/chunk-KJTMZJ7V.js.map +0 -1
  454. package/dist/chunk-L5UYN5LX.js.map +0 -1
  455. package/dist/chunk-LOYLJRCF.js.map +0 -1
  456. package/dist/chunk-LX4FDH4J.js.map +0 -1
  457. package/dist/chunk-N2WHJ3FI.js.map +0 -1
  458. package/dist/chunk-NGYLRX6F.js.map +0 -1
  459. package/dist/chunk-O3V3BTIJ.js.map +0 -1
  460. package/dist/chunk-OLTQAMV2.js.map +0 -1
  461. package/dist/chunk-ON2CMF6J.js.map +0 -1
  462. package/dist/chunk-ONGJXAYQ.js.map +0 -1
  463. package/dist/chunk-OQFYIKWR.js.map +0 -1
  464. package/dist/chunk-POLVJ36Y.js.map +0 -1
  465. package/dist/chunk-POXI7JJ4.js +0 -351
  466. package/dist/chunk-POXI7JJ4.js.map +0 -1
  467. package/dist/chunk-R3TLU26W.js.map +0 -1
  468. package/dist/chunk-RFHTC6AH.js.map +0 -1
  469. package/dist/chunk-ROA7BYGB.js.map +0 -1
  470. package/dist/chunk-SGRACNBP.js.map +0 -1
  471. package/dist/chunk-TLNHWOQQ.js.map +0 -1
  472. package/dist/chunk-UTWQ2FZK.js.map +0 -1
  473. package/dist/chunk-VOODO2ZE.js.map +0 -1
  474. package/dist/chunk-WRSG7WU5.js.map +0 -1
  475. package/dist/chunk-X3YNHX77.js.map +0 -1
  476. package/dist/chunk-Y4XAXZHB.js.map +0 -1
  477. package/dist/chunk-YJOLLSHH.js.map +0 -1
  478. package/dist/chunk-YS5AIY4A.js.map +0 -1
  479. package/dist/chunk-YXLIGJTN.js.map +0 -1
  480. package/dist/chunk-ZIYA7TGX.js.map +0 -1
  481. package/dist/chunk-ZJNGZCRB.js.map +0 -1
@@ -1,19 +1,20 @@
1
- import { useRipple, RippleContainer } from './chunk-OFUPJH35.js';
2
- import { cn } from './chunk-NGYLRX6F.js';
1
+ import { useMenuNavigation } from './chunk-NZHKNUGE.js';
2
+ import { useRipple, RippleContainer } from './chunk-4TEZWGX7.js';
3
+ import { cn } from './chunk-RAS6HUEI.js';
3
4
  import * as PopoverPrimitive from '@radix-ui/react-popover';
4
5
  import { ChevronRight } from 'lucide-react';
5
- import { useRef, useState, useCallback, useEffect } from 'react';
6
+ import { useRef, useMemo, useCallback, useEffect, useState } from 'react';
6
7
  import { jsx, jsxs } from 'react/jsx-runtime';
7
8
 
8
9
  var contextMenuHoverColorClasses = {
9
- default: "hover:bg-surface focus:bg-surface",
10
- primary: "hover:bg-primary/10 hover:text-primary focus:bg-primary/10 focus:text-primary",
11
- secondary: "hover:bg-secondary/10 hover:text-secondary focus:bg-secondary/10 focus:text-secondary",
12
- accent: "hover:bg-accent/10 hover:text-accent focus:bg-accent/10 focus:text-accent",
13
- success: "hover:bg-success/10 hover:text-success focus:bg-success/10 focus:text-success",
14
- error: "hover:bg-error/10 hover:text-error focus:bg-error/10 focus:text-error",
15
- warning: "hover:bg-warning/10 hover:text-warning focus:bg-warning/10 focus:text-warning",
16
- info: "hover:bg-info/10 hover:text-info focus:bg-info/10 focus:text-info"
10
+ default: "hover:bg-surface focus-visible:bg-surface",
11
+ primary: "hover:bg-primary/10 hover:text-primary focus-visible:bg-primary/10 focus-visible:text-primary",
12
+ secondary: "hover:bg-secondary/10 hover:text-secondary focus-visible:bg-secondary/10 focus-visible:text-secondary",
13
+ accent: "hover:bg-accent/10 hover:text-accent focus-visible:bg-accent/10 focus-visible:text-accent",
14
+ success: "hover:bg-success/10 hover:text-success focus-visible:bg-success/10 focus-visible:text-success",
15
+ error: "hover:bg-error/10 hover:text-error focus-visible:bg-error/10 focus-visible:text-error",
16
+ warning: "hover:bg-warning/10 hover:text-warning focus-visible:bg-warning/10 focus-visible:text-warning",
17
+ info: "hover:bg-info/10 hover:text-info focus-visible:bg-info/10 focus-visible:text-info"
17
18
  };
18
19
  var contextMenuFocusedColorClasses = {
19
20
  default: "bg-surface",
@@ -92,7 +93,7 @@ var ContextMenuSubMenu = ({ item, onClose, level, classNames, color = "default"
92
93
  disabled: !!item.disabled,
93
94
  className: cn(
94
95
  "contextMenu_item flex items-center justify-between gap-3 px-3 py-2 text-sm cursor-pointer rounded-sm transition-colors mx-1",
95
- item.disabled ? "opacity-50 cursor-not-allowed" : cn(contextMenuHoverColorClasses[color], "focus:outline-none"),
96
+ item.disabled ? "opacity-50 cursor-not-allowed" : cn(contextMenuHoverColorClasses[color], "focus-visible:outline-none"),
96
97
  classNames?.item
97
98
  ),
98
99
  onClick: handleClick,
@@ -159,68 +160,47 @@ var ContextMenuContent = ({
159
160
  className,
160
161
  classNames,
161
162
  style,
162
- setKeyUpHandlers,
163
163
  color = "default",
164
164
  ...props
165
165
  }) => {
166
166
  const menuRef = useRef(null);
167
- const [focusedIndex, setFocusedIndex] = useState(0);
168
- const validItems = items.filter((item) => !item.separator && !item.disabled);
169
- const validItemsRef = useRef(validItems);
170
- const onCloseRef = useRef(onClose);
171
- validItemsRef.current = validItems;
172
- onCloseRef.current = onClose;
173
- const keyHandlers = useCallback(() => ({
174
- ArrowDown: () => {
175
- setFocusedIndex((prev) => {
176
- const nextIndex = prev + 1;
177
- return nextIndex >= validItemsRef.current.length ? 0 : nextIndex;
178
- });
179
- },
180
- ArrowUp: () => {
181
- setFocusedIndex((prev) => {
182
- const nextIndex = prev - 1;
183
- return nextIndex < 0 ? validItemsRef.current.length - 1 : nextIndex;
184
- });
185
- },
186
- Enter: () => {
187
- setFocusedIndex((currentIndex) => {
188
- if (currentIndex >= 0 && currentIndex < validItemsRef.current.length) {
189
- const item = validItemsRef.current[currentIndex];
190
- if (!item?.disabled && !item?.children) {
191
- item?.onClick?.();
192
- onCloseRef.current();
193
- }
194
- }
195
- return currentIndex;
196
- });
197
- },
198
- " ": () => {
199
- setFocusedIndex((currentIndex) => {
200
- if (currentIndex >= 0 && currentIndex < validItemsRef.current.length) {
201
- const item = validItemsRef.current[currentIndex];
202
- if (!item?.disabled && !item?.children) {
203
- item?.onClick?.();
204
- onCloseRef.current();
205
- }
206
- }
207
- return currentIndex;
208
- });
209
- },
210
- Escape: () => {
211
- onCloseRef.current();
212
- },
213
- ArrowLeft: () => {
214
- if (level > 0) {
215
- onCloseRef.current();
167
+ const enabledIndices = useMemo(
168
+ () => items.map((item, i) => !item.separator && !item.disabled ? i : -1).filter((i) => i !== -1),
169
+ [items]
170
+ );
171
+ const onMenuSelect = useCallback(
172
+ (index) => {
173
+ const item = items[index];
174
+ if (item && !item.children) {
175
+ item.onClick?.();
176
+ onClose();
216
177
  }
217
- }
218
- }), [level]);
178
+ },
179
+ [items, onClose]
180
+ );
181
+ const { highlightedIndex, handleKeyDown, highlightFirst } = useMenuNavigation({
182
+ enabledIndices,
183
+ isOpen: true,
184
+ onClose,
185
+ onSelect: onMenuSelect
186
+ });
219
187
  useEffect(() => {
220
- if (setKeyUpHandlers) {
221
- setKeyUpHandlers(keyHandlers());
222
- }
223
- }, [setKeyUpHandlers, keyHandlers]);
188
+ highlightFirst();
189
+ }, [highlightFirst]);
190
+ useEffect(() => {
191
+ const listener = (e) => {
192
+ if (e.key === "ArrowLeft" && level > 0) {
193
+ e.preventDefault();
194
+ e.stopImmediatePropagation();
195
+ onClose();
196
+ return;
197
+ }
198
+ handleKeyDown(e);
199
+ e.stopImmediatePropagation();
200
+ };
201
+ document.addEventListener("keydown", listener);
202
+ return () => document.removeEventListener("keydown", listener);
203
+ }, [handleKeyDown, level, onClose]);
224
204
  return /* @__PURE__ */ jsx(
225
205
  "div",
226
206
  {
@@ -255,15 +235,14 @@ var ContextMenuContent = ({
255
235
  if (item.children) {
256
236
  return /* @__PURE__ */ jsx(ContextMenuSubMenu, { item, onClose, level, classNames, color }, item.key);
257
237
  }
258
- const validItemIndex = validItems.findIndex((vi) => vi.key === item.key);
259
- const isFocused = validItemIndex === focusedIndex;
238
+ const isFocused = highlightedIndex === index;
260
239
  return /* @__PURE__ */ jsxs(
261
240
  ContextMenuItemDiv,
262
241
  {
263
242
  disabled: !!item.disabled,
264
243
  className: cn(
265
244
  "contextMenu_item flex items-center justify-between gap-3 px-3 py-2 text-sm cursor-pointer rounded-sm transition-colors mx-1",
266
- item.disabled ? "opacity-50 cursor-not-allowed" : cn(contextMenuHoverColorClasses[color], "focus:outline-none"),
245
+ item.disabled ? "opacity-50 cursor-not-allowed" : cn(contextMenuHoverColorClasses[color], "focus-visible:outline-none"),
267
246
  isFocused && !item.disabled && contextMenuFocusedColorClasses[color],
268
247
  classNames?.item
269
248
  ),
@@ -323,7 +302,6 @@ var ContextMenu = ({
323
302
  color = "default"
324
303
  }) => {
325
304
  const [internalOpen, setInternalOpen] = useState(false);
326
- const [keyUpHandlers, setKeyUpHandlers] = useState({});
327
305
  const [position, setPosition] = useState(null);
328
306
  const isControlled = controlledOpen !== void 0;
329
307
  const isOpen = isControlled ? controlledOpen : internalOpen;
@@ -359,19 +337,8 @@ var ContextMenu = ({
359
337
  );
360
338
  const handleClose = useCallback(() => {
361
339
  setOpen(false);
340
+ setPosition(null);
362
341
  }, [setOpen]);
363
- useEffect(() => {
364
- if (!isOpen) return;
365
- const handleKeyDown = (e) => {
366
- const handler = keyUpHandlers[e.key];
367
- if (handler) {
368
- e.preventDefault();
369
- handler();
370
- }
371
- };
372
- document.addEventListener("keydown", handleKeyDown);
373
- return () => document.removeEventListener("keydown", handleKeyDown);
374
- }, [isOpen, keyUpHandlers]);
375
342
  return /* @__PURE__ */ jsxs(PopoverPrimitive.Root, { open: isOpen, onOpenChange: setOpen, children: [
376
343
  position && /* @__PURE__ */ jsx(
377
344
  PopoverPrimitive.Anchor,
@@ -406,7 +373,7 @@ var ContextMenu = ({
406
373
  onPointerDownOutside: handleClose,
407
374
  onInteractOutside: handleClose,
408
375
  className: "z-[var(--z-popover)]",
409
- children: /* @__PURE__ */ jsx(ContextMenuContent, { setKeyUpHandlers, items, onClose: handleClose, classNames, color })
376
+ children: /* @__PURE__ */ jsx(ContextMenuContent, { items, onClose: handleClose, classNames, color })
410
377
  }
411
378
  ) })
412
379
  ] });
@@ -415,5 +382,5 @@ ContextMenu.displayName = "ContextMenu";
415
382
  var context_menu_default = ContextMenu;
416
383
 
417
384
  export { ContextMenu, ContextMenuContent, context_menu_default };
418
- //# sourceMappingURL=chunk-O3V3BTIJ.js.map
419
- //# sourceMappingURL=chunk-O3V3BTIJ.js.map
385
+ //# sourceMappingURL=chunk-HSW64H23.js.map
386
+ //# sourceMappingURL=chunk-HSW64H23.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/context-menu/index.tsx"],"names":[],"mappings":"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","file":"chunk-HSW64H23.js","sourcesContent":["'use client'\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { ChevronRight } from 'lucide-react';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useRipple, RippleContainer } from '../hooks/useRipple';\nimport { useMenuNavigation } from '../hooks/useMenuNavigation';\nimport type { ComponentColor } from '../types';\nimport { cn } from '../utils';\nimport type { ContextMenuContentProps, ContextMenuProps, ContextMenuSubMenuProps } from './types';\n\nconst contextMenuHoverColorClasses: Record<ComponentColor, string> = {\n default: 'hover:bg-surface focus-visible:bg-surface',\n primary: 'hover:bg-primary/10 hover:text-primary focus-visible:bg-primary/10 focus-visible:text-primary',\n secondary: 'hover:bg-secondary/10 hover:text-secondary focus-visible:bg-secondary/10 focus-visible:text-secondary',\n accent: 'hover:bg-accent/10 hover:text-accent focus-visible:bg-accent/10 focus-visible:text-accent',\n success: 'hover:bg-success/10 hover:text-success focus-visible:bg-success/10 focus-visible:text-success',\n error: 'hover:bg-error/10 hover:text-error focus-visible:bg-error/10 focus-visible:text-error',\n warning: 'hover:bg-warning/10 hover:text-warning focus-visible:bg-warning/10 focus-visible:text-warning',\n info: 'hover:bg-info/10 hover:text-info focus-visible:bg-info/10 focus-visible:text-info',\n}\n\nconst contextMenuFocusedColorClasses: Record<ComponentColor, string> = {\n default: 'bg-surface',\n primary: 'bg-primary/10 text-primary',\n secondary: 'bg-secondary/10 text-secondary',\n accent: 'bg-accent/10 text-accent',\n success: 'bg-success/10 text-success',\n error: 'bg-error/10 text-error',\n warning: 'bg-warning/10 text-warning',\n info: 'bg-info/10 text-info',\n}\n\nconst ContextMenuItemDiv: React.FC<{ children: React.ReactNode; disabled?: boolean; className?: string; [key: string]: any }> = ({ children, disabled, className, ...props }) => {\n const { ripples, onPointerDown, onAnimationEnd } = useRipple(!disabled)\n return (\n <div className={cn(className, 'relative overflow-hidden')} onPointerDown={onPointerDown} {...props}>\n {children}\n <RippleContainer ripples={ripples} onAnimationEnd={onAnimationEnd} />\n </div>\n )\n}\n\n/**\n * Submenu component based on Popover\n */\nconst ContextMenuSubMenu = ({ item, onClose, level, classNames, color = 'default' }: ContextMenuSubMenuProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const hoverTimeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n const handleMouseEnter = useCallback(() => {\n if (item.disabled) return;\n\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n\n hoverTimeoutRef.current = setTimeout(() => {\n setIsOpen(true);\n }, 200);\n }, [item.disabled]);\n\n const handleMouseLeave = useCallback(() => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n\n leaveTimeoutRef.current = setTimeout(() => {\n setIsOpen(false);\n }, 300);\n }, []);\n\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n if (!item.disabled && !item.children) {\n e.stopPropagation();\n item.onClick?.();\n onClose();\n }\n },\n [item, onClose]\n );\n\n useEffect(() => {\n return () => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <PopoverPrimitive.Root open={isOpen} onOpenChange={setIsOpen}>\n <PopoverPrimitive.Trigger asChild>\n <div\n className='relative'\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n role='menuitem'\n aria-haspopup='true'\n aria-expanded={isOpen}\n aria-disabled={item.disabled}\n tabIndex={-1}\n data-slot='submenu-trigger'\n >\n <ContextMenuItemDiv\n disabled={!!item.disabled}\n className={cn(\n 'contextMenu_item flex items-center justify-between gap-3 px-3 py-2 text-sm cursor-pointer rounded-sm transition-colors mx-1',\n item.disabled ? 'opacity-50 cursor-not-allowed' : cn(contextMenuHoverColorClasses[color], 'focus-visible:outline-none'),\n classNames?.item,\n )}\n onClick={handleClick}\n >\n <div className='flex items-center gap-2 flex-1'>\n {item.icon && (\n <span\n className={cn(\n 'contextMenu_itemIcon shrink-0 w-4 h-4',\n classNames?.itemIcon,\n )}\n >\n {item.icon}\n </span>\n )}\n <span\n className={cn(\n 'contextMenu_itemLabel',\n classNames?.itemLabel,\n )}\n >\n {item.label}\n </span>\n </div>\n {item.children && <ChevronRight className='w-4 h-4 text-text-secondary shrink-0' />}\n {item.shortcut && <span className='text-xs text-text-secondary shrink-0'>{item.shortcut}</span>}\n </ContextMenuItemDiv>\n </div>\n </PopoverPrimitive.Trigger>\n\n {item.children && (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n side='right'\n align='start'\n sideOffset={8}\n alignOffset={-8}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n 'z-[var(--z-popover)]',\n classNames?.submenu,\n )}\n >\n <ContextMenuContent items={item.children} onClose={onClose} level={level + 1} classNames={classNames} color={color} />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n )}\n </PopoverPrimitive.Root>\n );\n};\n\nContextMenuSubMenu.displayName = 'ContextMenuSubMenu';\n\n/**\n * Context menu content component\n */\nconst ContextMenuContent = ({\n items,\n onClose,\n level = 0,\n className,\n classNames,\n style,\n color = 'default',\n ...props\n}: ContextMenuContentProps) => {\n const menuRef = useRef<HTMLDivElement>(null);\n\n const enabledIndices = useMemo(\n () =>\n items\n .map((item, i) => (!item.separator && !item.disabled) ? i : -1)\n .filter((i) => i !== -1),\n [items],\n );\n\n const onMenuSelect = useCallback(\n (index: number) => {\n const item = items[index]\n if (item && !item.children) {\n item.onClick?.()\n onClose()\n }\n },\n [items, onClose],\n );\n\n const { highlightedIndex, handleKeyDown, highlightFirst } = useMenuNavigation({\n enabledIndices,\n isOpen: true,\n onClose,\n onSelect: onMenuSelect,\n });\n\n // Highlight first item on mount\n useEffect(() => {\n highlightFirst()\n }, [highlightFirst])\n\n // Document-level keyboard listener (menu is in a portal, no focus bubbling)\n useEffect(() => {\n const listener = (e: KeyboardEvent) => {\n if (e.key === 'ArrowLeft' && level > 0) {\n e.preventDefault()\n e.stopImmediatePropagation()\n onClose()\n return\n }\n handleKeyDown(e)\n e.stopImmediatePropagation()\n }\n document.addEventListener('keydown', listener)\n return () => document.removeEventListener('keydown', listener)\n }, [handleKeyDown, level, onClose])\n\n return (\n <div\n ref={menuRef}\n className={cn(\n 'contextMenu_content min-w-[180px] rounded-md border border-border bg-background shadow-lg py-1',\n level === 0 && 'animate-in fade-in-0 zoom-in-95',\n className,\n classNames?.content,\n )}\n style={style}\n role='menu'\n aria-orientation='vertical'\n tabIndex={-1}\n {...props}\n >\n {items.map((item, index) => {\n if (item.separator) {\n return (\n <div\n key={`separator-${index}`}\n className={cn(\n 'contextMenu_divider h-px bg-border my-1',\n classNames?.divider,\n )}\n role='separator'\n aria-orientation='horizontal'\n data-slot='separator'\n />\n );\n }\n\n if (item.children) {\n return <ContextMenuSubMenu key={item.key} item={item} onClose={onClose} level={level} classNames={classNames} color={color} />;\n }\n\n const isFocused = highlightedIndex === index;\n\n return (\n <ContextMenuItemDiv\n key={item.key}\n disabled={!!item.disabled}\n className={cn(\n 'contextMenu_item flex items-center justify-between gap-3 px-3 py-2 text-sm cursor-pointer rounded-sm transition-colors mx-1',\n item.disabled\n ? 'opacity-50 cursor-not-allowed'\n : cn(contextMenuHoverColorClasses[color], 'focus-visible:outline-none'),\n isFocused && !item.disabled && contextMenuFocusedColorClasses[color],\n classNames?.item,\n )}\n onClick={() => {\n if (!item.disabled) {\n item.onClick?.();\n onClose();\n }\n }}\n role='menuitem'\n tabIndex={-1}\n aria-disabled={item.disabled}\n data-slot='item'\n >\n <div className='flex items-center gap-2 flex-1'>\n {item.icon && (\n <span\n className={cn(\n 'contextMenu_itemIcon shrink-0 w-4 h-4',\n classNames?.itemIcon,\n )}\n data-slot='item-icon'\n >\n {item.icon}\n </span>\n )}\n <span\n className={cn(\n 'contextMenu_itemLabel',\n classNames?.itemLabel,\n )}\n data-slot='item-label'\n >\n {item.label}\n </span>\n </div>\n {item.shortcut && <span className='text-xs text-text-secondary shrink-0' data-slot='shortcut'>{item.shortcut}</span>}\n </ContextMenuItemDiv>\n );\n })}\n </div>\n );\n};\n\nContextMenuContent.displayName = 'ContextMenuContent';\n\n/**\n * ContextMenu component based on Popover\n */\nconst ContextMenu = ({\n children,\n items,\n className,\n classNames,\n disabled = false,\n onOpenChange,\n open: controlledOpen,\n color = 'default',\n}: ContextMenuProps) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const [position, setPosition] = useState<DOMRect | null>(null);\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (open: boolean) => {\n if (!isControlled) {\n setInternalOpen(open);\n }\n onOpenChange?.(open);\n },\n [isControlled, onOpenChange]\n );\n\n const handleContextMenu = useCallback(\n (e: React.MouseEvent) => {\n if (disabled) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n setPosition({\n width: 0,\n height: 0,\n x: e.clientX,\n y: e.clientY,\n top: e.clientY,\n left: e.clientX,\n right: e.clientX,\n bottom: e.clientY,\n toJSON: () => {},\n } as DOMRect);\n\n setOpen(true);\n },\n [disabled, setOpen]\n );\n\n const handleClose = useCallback(() => {\n setOpen(false);\n setPosition(null);\n }, [setOpen]);\n\n return (\n <PopoverPrimitive.Root open={isOpen} onOpenChange={setOpen}>\n {position && (\n <PopoverPrimitive.Anchor\n virtualRef={{\n current: {\n getBoundingClientRect: () => position,\n },\n }}\n />\n )}\n <div\n onContextMenu={handleContextMenu}\n className={cn('contextMenu_root inline-block', className, classNames?.root)}\n role='presentation'\n data-slot='root'\n >\n {children}\n </div>\n\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n side='bottom'\n align='start'\n sideOffset={0}\n alignOffset={0}\n onOpenAutoFocus={(e: Event) => e.preventDefault()}\n onCloseAutoFocus={(e: Event) => e.preventDefault()}\n onEscapeKeyDown={handleClose}\n onPointerDownOutside={handleClose}\n onInteractOutside={handleClose}\n className='z-[var(--z-popover)]'\n >\n <ContextMenuContent items={items} onClose={handleClose} classNames={classNames} color={color} />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n );\n};\n\nContextMenu.displayName = 'ContextMenu';\n\nexport type * from './types';\nexport { ContextMenu, ContextMenuContent };\nexport default ContextMenu;\n"]}
@@ -1,5 +1,5 @@
1
- import { bgSkeletonColorClasses } from './chunk-POXI7JJ4.js';
2
- import { cn } from './chunk-NGYLRX6F.js';
1
+ import { colorVars } from './chunk-GLJDHW73.js';
2
+ import { cn } from './chunk-RAS6HUEI.js';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import React from 'react';
5
5
  import { jsx } from 'react/jsx-runtime';
@@ -12,7 +12,7 @@ var skeletonVariants = cva("animate-pulse rounded", {
12
12
  md: "h-5",
13
13
  lg: "h-6"
14
14
  },
15
- color: bgSkeletonColorClasses
15
+ color: colorVars
16
16
  },
17
17
  defaultVariants: {
18
18
  size: "md",
@@ -28,6 +28,7 @@ var Skeleton = React.memo(
28
28
  className: cn(
29
29
  "skeleton_root",
30
30
  skeletonVariants({ size, color }),
31
+ "bg-slot-50",
31
32
  circle && "rounded-full aspect-square",
32
33
  className
33
34
  )
@@ -39,5 +40,5 @@ Skeleton.displayName = "Skeleton";
39
40
  var skeleton_default = Skeleton;
40
41
 
41
42
  export { skeleton_default };
42
- //# sourceMappingURL=chunk-YS5AIY4A.js.map
43
- //# sourceMappingURL=chunk-YS5AIY4A.js.map
43
+ //# sourceMappingURL=chunk-K5RV3GF4.js.map
44
+ //# sourceMappingURL=chunk-K5RV3GF4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/skeleton/index.tsx"],"names":[],"mappings":";;;;;;AASA,IAAM,gBAAA,GAAmB,IAAI,uBAAA,EAAyB;AAAA,EACpD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI;AAAA,KACN;AAAA,IACA,KAAA,EAAO;AAAA,GACT;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AAED,IAAM,WAAW,KAAA,CAAM,IAAA;AAAA,EACrB,CAAC,EAAE,KAAA,GAAQ,SAAA,EAAW,OAAO,IAAA,EAAM,SAAA,EAAW,MAAA,GAAS,KAAA,EAAM,KAAM;AACjE,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAU,MAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,eAAA;AAAA,UACA,gBAAA,CAAiB,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AAAA,UAChC,YAAA;AAAA,UACA,MAAA,IAAU,4BAAA;AAAA,UACV;AAAA;AACF;AAAA,KACF;AAAA,EAEJ;AACF,CAAA;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AAGvB,IAAO,gBAAA,GAAQ","file":"chunk-K5RV3GF4.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport { colorVars } from '../variants'\nimport type { SkeletonProps } from './types'\n\nconst skeletonVariants = cva('animate-pulse rounded', {\n variants: {\n size: {\n xs: 'h-3',\n sm: 'h-4',\n md: 'h-5',\n lg: 'h-6',\n },\n color: colorVars,\n },\n defaultVariants: {\n size: 'md',\n color: 'default',\n },\n})\n\nconst Skeleton = React.memo<SkeletonProps>(\n ({ color = 'default', size = 'md', className, circle = false }) => {\n return (\n <div\n data-slot=\"root\"\n className={cn(\n 'skeleton_root',\n skeletonVariants({ size, color }),\n 'bg-slot-50',\n circle && 'rounded-full aspect-square',\n className,\n )}\n />\n )\n },\n)\n\nSkeleton.displayName = 'Skeleton'\n\nexport type * from './types'\nexport default Skeleton\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-NGYLRX6F.js';
1
+ import { cn } from './chunk-RAS6HUEI.js';
2
2
  import { cva } from 'class-variance-authority';
3
3
  import { InboxIcon } from 'lucide-react';
4
4
  import React from 'react';
@@ -95,9 +95,10 @@ var Empty = React.memo(
95
95
  children,
96
96
  size = "md",
97
97
  className,
98
- classNames
98
+ classNames,
99
+ ref
99
100
  }) => {
100
- return /* @__PURE__ */ jsxs("div", { className: cn(
101
+ return /* @__PURE__ */ jsxs("div", { "data-slot": "root", ref, className: cn(
101
102
  "empty_root",
102
103
  emptyContainerVariants({ size }),
103
104
  classNames?.root,
@@ -141,5 +142,5 @@ Empty.displayName = "Empty";
141
142
  var empty_default = Empty;
142
143
 
143
144
  export { empty_default };
144
- //# sourceMappingURL=chunk-2WZVD7P3.js.map
145
- //# sourceMappingURL=chunk-2WZVD7P3.js.map
145
+ //# sourceMappingURL=chunk-KZZJAZ5M.js.map
146
+ //# sourceMappingURL=chunk-KZZJAZ5M.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/empty/index.tsx"],"names":[],"mappings":"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","file":"chunk-KZZJAZ5M.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport { InboxIcon } from 'lucide-react'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport type { EmptyProps } from './types'\n\nconst emptyContainerVariants = cva(\n 'flex flex-col items-center justify-center text-center',\n {\n variants: {\n size: {\n xs: 'py-4 px-2',\n sm: 'py-6 px-4',\n md: 'py-12 px-6',\n lg: 'py-16 px-8',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n)\n\nconst emptyIconVariants = cva('text-text-secondary mb-4', {\n variants: {\n size: {\n xs: 'w-8 h-8',\n sm: 'w-12 h-12',\n md: 'w-16 h-16',\n lg: 'w-24 h-24',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst emptyImageVariants = cva('mb-4 object-contain', {\n variants: {\n size: {\n xs: 'w-16 h-16',\n sm: 'w-24 h-24',\n md: 'w-32 h-32',\n lg: 'w-48 h-48',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst emptyTitleVariants = cva('font-semibold text-text-primary mb-2', {\n variants: {\n size: {\n xs: 'text-sm',\n sm: 'text-base',\n md: 'text-lg',\n lg: 'text-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst emptyDescriptionVariants = cva('text-text-secondary', {\n variants: {\n size: {\n xs: 'text-[10px] max-w-[200px]',\n sm: 'text-xs max-w-xs',\n md: 'text-sm max-w-sm',\n lg: 'text-base max-w-md',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst emptyActionsVariants = cva('mt-6 flex gap-2 flex-wrap justify-center', {\n variants: {\n size: {\n xs: 'mt-2',\n sm: 'mt-4',\n md: 'mt-6',\n lg: 'mt-8',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst Empty = React.memo<EmptyProps>(\n ({\n icon,\n image,\n imageAlt = 'Empty',\n title = 'No Data',\n description = 'There is no data to display',\n children,\n size = 'md',\n className,\n classNames,\n ref,\n }) => {\n return (\n <div data-slot=\"root\" ref={ref} className={cn(\n 'empty_root',\n emptyContainerVariants({ size }),\n classNames?.root,\n className\n )}>\n {/* Image or Icon */}\n {image ? (\n <img\n src={image}\n alt={imageAlt}\n className={cn(\n 'empty_icon',\n emptyImageVariants({ size }),\n classNames?.icon\n )}\n />\n ) : (\n <div className={cn(\n 'empty_icon',\n emptyIconVariants({ size }),\n classNames?.icon\n )}>\n {icon || <InboxIcon className=\"size-full\" />}\n </div>\n )}\n\n {/* Title */}\n {title && (\n <h3 className={cn(\n 'empty_title',\n emptyTitleVariants({ size }),\n classNames?.title\n )}>\n {title}\n </h3>\n )}\n\n {/* Description */}\n {description && (\n <p className={cn(\n 'empty_description',\n emptyDescriptionVariants({ size }),\n classNames?.description\n )}>\n {description}\n </p>\n )}\n\n {/* Actions or Custom Content */}\n {children && (\n <div className={cn(\n 'empty_action',\n emptyActionsVariants({ size }),\n classNames?.action\n )}>\n {children}\n </div>\n )}\n </div>\n )\n },\n)\n\nEmpty.displayName = 'Empty'\n\nexport type * from './types'\nexport default Empty\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-NGYLRX6F.js';
1
+ import { cn } from './chunk-RAS6HUEI.js';
2
2
  import { cva } from 'class-variance-authority';
3
3
  import React from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -51,9 +51,7 @@ var ButtonGroup = React.memo(
51
51
  variant: child.props.variant ?? variant,
52
52
  color: child.props.color ?? color,
53
53
  shape: child.props.shape ?? shape,
54
- // Disabled is additive - if group is disabled, all children are disabled
55
54
  disabled: child.props.disabled || disabled,
56
- // Apply button classNames from ButtonGroup
57
55
  className: cn(classNames?.button, child.props.className)
58
56
  });
59
57
  }
@@ -82,5 +80,5 @@ ButtonGroup.displayName = "ButtonGroup";
82
80
  var button_group_default = ButtonGroup;
83
81
 
84
82
  export { button_group_default };
85
- //# sourceMappingURL=chunk-6HGUDHHE.js.map
86
- //# sourceMappingURL=chunk-6HGUDHHE.js.map
83
+ //# sourceMappingURL=chunk-L5BU2QTI.js.map
84
+ //# sourceMappingURL=chunk-L5BU2QTI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/button-group/index.tsx"],"names":[],"mappings":";;;;;AASA,IAAM,mBAAA,GAAsB,IAAI,aAAA,EAAe;AAAA,EAC7C,QAAA,EAAU;AAAA,IACR,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO;AAAA,KACT;AAAA,IACA,SAAA,EAAW;AAAA,MACT,IAAA,EAAM,qBAAA;AAAA,MACN,KAAA,EAAO;AAAA;AACT,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,KAAA;AAAA,IACV,SAAA,EAAW;AAAA;AAEf,CAAC,CAAA;AAED,IAAM,yBAAA,GACJ,gHAAA;AAEF,IAAM,uBAAA,GACJ,gHAAA;AAEF,IAAM,UAAA,GAAa;AAAA,EACjB,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,cAAc,KAAA,CAAM,IAAA;AAAA,EACxB,CAAC;AAAA,IACC,QAAA,GAAW,KAAA;AAAA,IACX,QAAA,GAAW,IAAA;AAAA,IACX,GAAA,GAAM,IAAA;AAAA,IACN,SAAA,GAAY,KAAA;AAAA,IACZ,IAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,SAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,MAAM,mBAAmB,KAAA,CAAM,QAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAC,KAAA,KAAU;AAC/D,MAAA,IAAI,KAAA,CAAM,cAAA,CAA4B,KAAK,CAAA,EAAG;AAC5C,QAAA,OAAO,KAAA,CAAM,aAAa,KAAA,EAAO;AAAA;AAAA,UAE/B,IAAA,EAAM,KAAA,CAAM,KAAA,CAAM,IAAA,IAAQ,IAAA;AAAA,UAC1B,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,OAAA,IAAW,OAAA;AAAA,UAChC,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,KAAA,IAAS,KAAA;AAAA,UAC5B,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,KAAA,IAAS,KAAA;AAAA,UAC5B,QAAA,EAAU,KAAA,CAAM,KAAA,CAAM,QAAA,IAAY,QAAA;AAAA,UAClC,WAAW,EAAA,CAAG,UAAA,EAAY,MAAA,EAAQ,KAAA,CAAM,MAAM,SAAS;AAAA,SACxD,CAAA;AAAA,MACH;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,SAAA,EAAW,EAAA;AAAA,UACT,kBAAA;AAAA,UACA,mBAAA,CAAoB,EAAE,QAAA,EAAU,SAAA,EAAW,CAAA;AAAA,UAC3C,QAAA,GACI,QAAA,GACE,uBAAA,GACA,yBAAA,GACF,WAAW,GAAG,CAAA;AAAA,UAClB,UAAA,EAAY,IAAA;AAAA,UACZ;AAAA,SACF;AAAA,QACA,WAAA,EAAU,MAAA;AAAA,QACT,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AAG1B,IAAO,oBAAA,GAAQ","file":"chunk-L5BU2QTI.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport type { ButtonProps } from '../button/types'\nimport { cn } from '../utils'\nimport type { ButtonGroupProps } from './types'\n\nconst buttonGroupVariants = cva('inline-flex', {\n variants: {\n vertical: {\n true: 'flex-col',\n false: 'flex-row',\n },\n fullWidth: {\n true: 'w-full [&>*]:flex-1',\n false: '',\n },\n },\n defaultVariants: {\n vertical: false,\n fullWidth: false,\n },\n})\n\nconst attachedHorizontalClasses =\n '[&>*:not(:first-child)]:rounded-l-none [&>*:not(:last-child)]:border-r-0 [&>*:not(:last-child)]:rounded-r-none'\n\nconst attachedVerticalClasses =\n '[&>*:not(:first-child)]:rounded-t-none [&>*:not(:last-child)]:border-b-0 [&>*:not(:last-child)]:rounded-b-none'\n\nconst gapClasses = {\n sm: 'gap-1',\n md: 'gap-2',\n lg: 'gap-3',\n}\n\nconst ButtonGroup = React.memo<ButtonGroupProps>(\n ({\n vertical = false,\n attached = true,\n gap = 'md',\n fullWidth = false,\n size,\n variant,\n color,\n shape,\n disabled = false,\n className,\n classNames,\n children,\n ref,\n ...props\n }) => {\n const enhancedChildren = React.Children.map(children, (child) => {\n if (React.isValidElement<ButtonProps>(child)) {\n return React.cloneElement(child, {\n // Group props are defaults - child props take precedence\n size: child.props.size ?? size,\n variant: child.props.variant ?? variant,\n color: child.props.color ?? color,\n shape: child.props.shape ?? shape,\n disabled: child.props.disabled || disabled,\n className: cn(classNames?.button, child.props.className),\n })\n }\n return child\n })\n\n return (\n <div\n ref={ref}\n role=\"group\"\n className={cn(\n 'buttonGroup_root',\n buttonGroupVariants({ vertical, fullWidth }),\n attached\n ? vertical\n ? attachedVerticalClasses\n : attachedHorizontalClasses\n : gapClasses[gap],\n classNames?.root,\n className,\n )}\n data-slot=\"root\"\n {...props}\n >\n {enhancedChildren}\n </div>\n )\n },\n)\n\nButtonGroup.displayName = 'ButtonGroup'\n\nexport type * from './types'\nexport default ButtonGroup\n"]}
@@ -1,5 +1,5 @@
1
- import { createPopoverColorVariants, componentColors } from './chunk-POXI7JJ4.js';
2
- import { cn } from './chunk-NGYLRX6F.js';
1
+ import { colorVars } from './chunk-GLJDHW73.js';
2
+ import { cn } from './chunk-RAS6HUEI.js';
3
3
  import * as PopoverPrimitive from '@radix-ui/react-popover';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { jsx } from 'react/jsx-runtime';
@@ -37,26 +37,12 @@ var popoverContentVariants = cva(
37
37
  lg: "p-5 text-lg"
38
38
  },
39
39
  variant: {
40
- default: "",
41
- solid: "",
42
- soft: ""
40
+ default: "bg-background border border-slot text-text-primary",
41
+ solid: "bg-slot border border-slot text-slot-fg",
42
+ soft: "backdrop-blur-sm bg-slot-10 border border-slot-30 text-slot"
43
43
  },
44
- color: {
45
- default: "",
46
- primary: "",
47
- secondary: "",
48
- accent: "",
49
- success: "",
50
- error: "",
51
- warning: "",
52
- info: ""
53
- }
44
+ color: colorVars
54
45
  },
55
- compoundVariants: createPopoverColorVariants(componentColors, [
56
- "default",
57
- "solid",
58
- "soft"
59
- ]),
60
46
  defaultVariants: {
61
47
  size: "md",
62
48
  variant: "default",
@@ -103,5 +89,5 @@ function PopoverAnchor({
103
89
  }
104
90
 
105
91
  export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };
106
- //# sourceMappingURL=chunk-C5IGZLIT.js.map
107
- //# sourceMappingURL=chunk-C5IGZLIT.js.map
92
+ //# sourceMappingURL=chunk-LM6CJZX5.js.map
93
+ //# sourceMappingURL=chunk-LM6CJZX5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/popover/index.tsx"],"names":[],"mappings":";;;;;;AAUA,SAAS,OAAA,CAAQ;AAAA,EACf,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACE,GAAA;AAAA,IAAkB,gBAAA,CAAA,IAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,SAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACE,GAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,IAAM,sBAAA,GAAyB,GAAA;AAAA,EAC7B,spBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,aAAA;AAAA,QACJ,EAAA,EAAI,aAAA;AAAA,QACJ,EAAA,EAAI,eAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,oDAAA;AAAA,QACT,KAAA,EAAO,yCAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA,MACA,KAAA,EAAO;AAAA,KACT;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,OAAA,EAAS,SAAA;AAAA,MACT,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;AAQA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,IAAA,GAAO,IAAA;AAAA,EACP,OAAA,GAAU,SAAA;AAAA,EACV,KAAA,GAAQ,SAAA;AAAA,EACR,UAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,uBACE,GAAA,CAAkB,yBAAjB,EACC,QAAA,kBAAA,GAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,iBAAA;AAAA,QACA,sBAAA,CAAuB,EAAE,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA;AAAA,QAC/C,SAAA;AAAA,QACA,UAAA,EAAY;AAAA,OACd;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,uBACE,GAAA;AAAA,IAAkB,gBAAA,CAAA,MAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-LM6CJZX5.js","sourcesContent":["'use client'\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\n\nimport { cn } from '../utils'\nimport { colorVars } from '../variants'\nimport type { PopoverClassNames } from './types'\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return (\n <PopoverPrimitive.Root\n data-slot=\"popover\"\n {...props}\n />\n )\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return (\n <PopoverPrimitive.Trigger\n data-slot=\"popover-trigger\"\n {...props}\n />\n )\n}\n\nconst popoverContentVariants = cva(\n 'overflow-hidden will-change-[transform,_opacity] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:data-[side=bottom]:slide-out-to-top-2 data-[state=closed]:data-[side=left]:slide-out-to-right-2 data-[state=closed]:data-[side=right]:slide-out-to-left-2 data-[state=closed]:data-[side=top]:slide-out-to-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border outline-none',\n {\n variants: {\n size: {\n xs: 'p-2 text-xs',\n sm: 'p-3 text-sm',\n md: 'p-4 text-base',\n lg: 'p-5 text-lg',\n },\n variant: {\n default: 'bg-background border border-slot text-text-primary',\n solid: 'bg-slot border border-slot text-slot-fg',\n soft: 'backdrop-blur-sm bg-slot-10 border border-slot-30 text-slot',\n },\n color: colorVars,\n },\n defaultVariants: {\n size: 'md',\n variant: 'default',\n color: 'default',\n },\n },\n)\n\nexport interface PopoverContentProps\n extends Omit<React.ComponentProps<typeof PopoverPrimitive.Content>, 'color'>,\n VariantProps<typeof popoverContentVariants> {\n classNames?: PopoverClassNames\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n size = 'md',\n variant = 'default',\n color = 'default',\n classNames,\n ...props\n}: PopoverContentProps) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'popover_content',\n popoverContentVariants({ size, variant, color }),\n className,\n classNames?.content,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return (\n <PopoverPrimitive.Anchor\n data-slot=\"popover-anchor\"\n {...props}\n />\n )\n}\n\nexport type * from './types'\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n"]}
@@ -1,7 +1,7 @@
1
- import { Spinner } from './chunk-Y4XAXZHB.js';
2
- import { useRipple, RippleContainer } from './chunk-OFUPJH35.js';
3
- import { createAllColorVariants, buttonColors } from './chunk-POXI7JJ4.js';
4
- import { cn } from './chunk-NGYLRX6F.js';
1
+ import { Spinner } from './chunk-GGQF5PQN.js';
2
+ import { useRipple, RippleContainer } from './chunk-4TEZWGX7.js';
3
+ import { buttonColorVars } from './chunk-GLJDHW73.js';
4
+ import { cn } from './chunk-RAS6HUEI.js';
5
5
  import { Slot } from '@radix-ui/react-slot';
6
6
  import { cva } from 'class-variance-authority';
7
7
  import React from 'react';
@@ -10,33 +10,23 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
10
10
  var buttonVariants = cva(
11
11
  [
12
12
  "inline-flex cursor-pointer text-center font-medium items-center justify-center",
13
- // 60fps: only animate opacity (GPU-composited, no paint/layout)
14
13
  "transition-[opacity] duration-200 ease-[cubic-bezier(0.34,1.56,0.64,1)]",
15
14
  "disabled:opacity-50 disabled:pointer-events-none",
16
- // Focus ring for accessibility
17
- "focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background",
15
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:ring-slot",
18
16
  // Accessibility: respect prefers-reduced-motion
19
17
  "motion-reduce:transition-none"
20
18
  ],
21
19
  {
22
20
  variants: {
23
21
  variant: {
24
- solid: "border",
25
- outline: "border bg-transparent",
26
- soft: "border-none",
27
- dashed: "border border-dashed bg-transparent",
28
- link: "border-none bg-transparent hover:underline",
29
- ghost: "border-none bg-transparent"
30
- },
31
- color: {
32
- primary: "border-primary focus-visible:ring-primary",
33
- secondary: "border-secondary focus-visible:ring-secondary",
34
- accent: "border-accent focus-visible:ring-accent",
35
- success: "border-success focus-visible:ring-success",
36
- error: "border-error focus-visible:ring-error",
37
- warning: "border-warning focus-visible:ring-warning",
38
- info: "border-info focus-visible:ring-info"
22
+ solid: "bg-slot border border-slot text-slot-fg hover:bg-slot-90",
23
+ outline: "border border-slot bg-transparent text-slot hover:bg-slot-10",
24
+ soft: "border-none bg-slot-10 text-slot",
25
+ dashed: "border border-dashed border-slot bg-transparent text-slot hover:bg-slot-10",
26
+ link: "border-none bg-transparent text-slot hover:text-slot-80 hover:underline",
27
+ ghost: "border-none bg-transparent text-slot hover:bg-slot-10"
39
28
  },
29
+ color: buttonColorVars,
40
30
  size: {
41
31
  xs: "h-(--button-height-xs) px-(--button-padding-x-xs) text-xs gap-1.5",
42
32
  sm: "h-(--button-height-sm) px-(--button-padding-x-sm) text-sm gap-2",
@@ -58,20 +48,10 @@ var buttonVariants = cva(
58
48
  }
59
49
  },
60
50
  compoundVariants: [
61
- // Icon-only buttons: square aspect ratio
62
51
  { iconOnly: true, size: "xs", class: "w-(--button-height-xs) px-0" },
63
52
  { iconOnly: true, size: "sm", class: "w-(--button-height-sm) px-0" },
64
53
  { iconOnly: true, size: "md", class: "w-(--button-height-md) px-0" },
65
- { iconOnly: true, size: "lg", class: "w-(--button-height-lg) px-0" },
66
- // Color variants
67
- ...createAllColorVariants(buttonColors, [
68
- "solid",
69
- "outline",
70
- "soft",
71
- "dashed",
72
- "link",
73
- "ghost"
74
- ])
54
+ { iconOnly: true, size: "lg", class: "w-(--button-height-lg) px-0" }
75
55
  ],
76
56
  defaultVariants: {
77
57
  variant: "solid",
@@ -144,9 +124,7 @@ var Button = React.memo(
144
124
  const buttonClassName = cn(
145
125
  "button_root",
146
126
  buttonVariants({ color, size, variant, shape, fullWidth, iconOnly }),
147
- // Pressed toggle visual
148
127
  pressed && "data-[pressed=true]:ring-2 data-[pressed=true]:ring-current/30",
149
- // Ripple needs relative + overflow-hidden
150
128
  ripple && "relative overflow-hidden",
151
129
  classNames?.root,
152
130
  className
@@ -159,7 +137,7 @@ var Button = React.memo(
159
137
  "aria-pressed": pressed,
160
138
  "data-pressed": pressed != null ? String(pressed) : void 0,
161
139
  "data-slot": "root",
162
- onClick,
140
+ onClick: isDisabled ? void 0 : onClick,
163
141
  onPointerDown: ripplePointerDown,
164
142
  onKeyDown: rippleKeyDown,
165
143
  ...props
@@ -246,5 +224,5 @@ Button.displayName = "Button";
246
224
  var button_default = Button;
247
225
 
248
226
  export { buttonVariants, button_default };
249
- //# sourceMappingURL=chunk-RFHTC6AH.js.map
250
- //# sourceMappingURL=chunk-RFHTC6AH.js.map
227
+ //# sourceMappingURL=chunk-LXHOS74B.js.map
228
+ //# sourceMappingURL=chunk-LXHOS74B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/button/index.tsx"],"names":[],"mappings":"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","file":"chunk-LXHOS74B.js","sourcesContent":["'use client'\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport React from \"react\";\n\nimport { Spinner } from \"../spinner\";\nimport { cn } from \"../utils\";\nimport { buttonColorVars } from \"../variants\";\nimport type { ButtonProps, ButtonColor } from \"./types\";\nimport { useRipple, RippleContainer } from \"../hooks/useRipple\";\n\nconst buttonVariants = cva(\n [\n \"inline-flex cursor-pointer text-center font-medium items-center justify-center\",\n \"transition-[opacity] duration-200 ease-[cubic-bezier(0.34,1.56,0.64,1)]\",\n \"disabled:opacity-50 disabled:pointer-events-none\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:ring-slot\",\n // Accessibility: respect prefers-reduced-motion\n \"motion-reduce:transition-none\",\n ],\n {\n variants: {\n variant: {\n solid: \"bg-slot border border-slot text-slot-fg hover:bg-slot-90\",\n outline: \"border border-slot bg-transparent text-slot hover:bg-slot-10\",\n soft: \"border-none bg-slot-10 text-slot\",\n dashed: \"border border-dashed border-slot bg-transparent text-slot hover:bg-slot-10\",\n link: \"border-none bg-transparent text-slot hover:text-slot-80 hover:underline\",\n ghost: \"border-none bg-transparent text-slot hover:bg-slot-10\",\n },\n color: buttonColorVars,\n size: {\n xs: \"h-(--button-height-xs) px-(--button-padding-x-xs) text-xs gap-1.5\",\n sm: \"h-(--button-height-sm) px-(--button-padding-x-sm) text-sm gap-2\",\n md: \"h-(--button-height-md) px-(--button-padding-x-md) text-base gap-2\",\n lg: \"h-(--button-height-lg) px-(--button-padding-x-lg) text-lg gap-2.5\",\n },\n shape: {\n rounded: \"rounded-md\",\n pill: \"rounded-full\",\n square: \"rounded-none\",\n },\n fullWidth: {\n true: \"w-full\",\n false: \"\",\n },\n iconOnly: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n { iconOnly: true, size: \"xs\", class: \"w-(--button-height-xs) px-0\" },\n { iconOnly: true, size: \"sm\", class: \"w-(--button-height-sm) px-0\" },\n { iconOnly: true, size: \"md\", class: \"w-(--button-height-md) px-0\" },\n { iconOnly: true, size: \"lg\", class: \"w-(--button-height-lg) px-0\" },\n ],\n defaultVariants: {\n variant: \"solid\",\n color: \"primary\",\n size: \"md\",\n shape: \"rounded\",\n fullWidth: false,\n iconOnly: false,\n },\n },\n);\n\nconst spinnerSizeMap: Record<\n NonNullable<ButtonProps[\"size\"]>,\n \"xs\" | \"sm\" | \"md\" | \"lg\"\n> = {\n xs: \"xs\",\n sm: \"xs\",\n md: \"sm\",\n lg: \"md\",\n};\n\nfunction getSpinnerColor(\n variant: ButtonProps[\"variant\"],\n color: ButtonColor,\n): ButtonColor | \"default\" {\n if (variant === \"solid\") {\n return \"default\";\n }\n return color;\n}\n\nconst Button = React.memo<ButtonProps>(\n ({\n variant = \"solid\",\n color = \"primary\",\n size = \"md\",\n shape = \"rounded\",\n loading = false,\n loadingText,\n loadingPosition = \"left\",\n icon,\n iconPlacement = \"left\",\n leftIcon: leftIconProp,\n rightIcon: rightIconProp,\n fullWidth = false,\n iconOnly = false,\n asChild = false,\n pressed,\n ripple = false,\n className,\n classNames,\n children,\n disabled,\n onClick,\n ref,\n ...props\n }) => {\n const isDisabled = disabled || loading;\n const spinnerSize = spinnerSizeMap[size];\n const spinnerColor = getSpinnerColor(variant, color);\n\n const {\n ripples,\n onPointerDown: ripplePointerDown,\n onKeyDown: rippleKeyDown,\n onAnimationEnd: rippleAnimationEnd,\n } = useRipple(ripple && !isDisabled);\n\n // Dev warning for icon-only buttons without aria-label\n if (import.meta.env?.DEV && iconOnly && !props['aria-label'] && !props['aria-labelledby']) {\n console.warn('Button: icon-only buttons should have an aria-label or aria-labelledby prop for accessibility.')\n }\n\n const leftIcon = leftIconProp ?? (iconPlacement === \"left\" ? icon : undefined);\n const rightIcon = rightIconProp ?? (iconPlacement === \"right\" ? icon : undefined);\n\n const showLeftIcon = !loading && leftIcon;\n const showRightIcon = !loading && rightIcon;\n const showSpinnerLeft = loading && loadingPosition === \"left\";\n const showSpinnerRight = loading && loadingPosition === \"right\";\n\n const content = loading && loadingText ? loadingText : children;\n\n const iconOnlyLoading = iconOnly && loading;\n\n const buttonClassName = cn(\n \"button_root\",\n buttonVariants({ color, size, variant, shape, fullWidth, iconOnly }),\n pressed && \"data-[pressed=true]:ring-2 data-[pressed=true]:ring-current/30\",\n ripple && \"relative overflow-hidden\",\n classNames?.root,\n className,\n );\n\n const sharedProps = {\n className: buttonClassName,\n disabled: asChild ? undefined : isDisabled,\n \"aria-busy\": loading || undefined,\n \"aria-disabled\": isDisabled || undefined,\n \"aria-pressed\": pressed,\n \"data-pressed\": pressed != null ? String(pressed) : undefined,\n \"data-slot\": \"root\",\n onClick: isDisabled ? undefined : onClick,\n onPointerDown: ripplePointerDown,\n onKeyDown: rippleKeyDown,\n ...props,\n };\n\n const innerContent = iconOnlyLoading ? (\n <>\n <span\n className={cn(\"button_spinner inline-flex items-center\", classNames?.spinner)}\n data-slot=\"spinner\"\n >\n <Spinner size={spinnerSize} color={spinnerColor} />\n </span>\n <span className=\"sr-only\">Loading</span>\n </>\n ) : (\n <>\n {showSpinnerLeft && (\n <span\n className={cn(\"button_spinner inline-flex items-center\", classNames?.spinner)}\n data-slot=\"spinner\"\n >\n <Spinner size={spinnerSize} color={spinnerColor} />\n </span>\n )}\n {showLeftIcon && (\n <span\n className={cn(\"button_icon shrink-0\", classNames?.icon, classNames?.leftIcon)}\n data-slot=\"icon\"\n >\n {leftIcon}\n </span>\n )}\n {content}\n {showRightIcon && (\n <span\n className={cn(\"button_icon shrink-0\", classNames?.icon, classNames?.rightIcon)}\n data-slot=\"icon\"\n >\n {rightIcon}\n </span>\n )}\n {showSpinnerRight && (\n <span\n className={cn(\"button_spinner inline-flex items-center\", classNames?.spinner)}\n data-slot=\"spinner\"\n >\n <Spinner size={spinnerSize} color={spinnerColor} />\n </span>\n )}\n {loading && <span className=\"sr-only\">Loading</span>}\n </>\n );\n\n const rippleElements = (\n <RippleContainer\n ripples={ripples}\n className={classNames?.ripple}\n onAnimationEnd={rippleAnimationEnd}\n />\n );\n\n if (asChild) {\n return (\n <Slot ref={ref} {...sharedProps}>\n {React.isValidElement(children)\n ? React.cloneElement(\n children as React.ReactElement<{ children?: React.ReactNode }>,\n {},\n <>\n {(children as React.ReactElement<{ children?: React.ReactNode }>).props.children}\n {rippleElements}\n </>,\n )\n : children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n type={props.type ?? \"button\"}\n {...sharedProps}\n >\n {innerContent}\n {rippleElements}\n </button>\n );\n },\n);\n\nButton.displayName = \"Button\";\n\nexport { buttonVariants };\nexport type * from \"./types\";\nexport default Button;\n"]}