@mdigital_ui/ui 0.4.2 → 0.4.4

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 (591) hide show
  1. package/README.md +45 -5
  2. package/dist/accordion/index.d.ts.map +1 -1
  3. package/dist/accordion/index.js +3 -3
  4. package/dist/accordion/types.d.ts +2 -42
  5. package/dist/accordion/types.d.ts.map +1 -1
  6. package/dist/alert/index.d.ts +6 -0
  7. package/dist/alert/index.d.ts.map +1 -0
  8. package/dist/alert/index.js +5 -0
  9. package/dist/alert/types.d.ts +24 -0
  10. package/dist/alert/types.d.ts.map +1 -0
  11. package/dist/anchor/index.d.ts +6 -0
  12. package/dist/anchor/index.d.ts.map +1 -0
  13. package/dist/anchor/types.d.ts +26 -0
  14. package/dist/anchor/types.d.ts.map +1 -0
  15. package/dist/autocomplete/index.d.ts +6 -0
  16. package/dist/autocomplete/index.d.ts.map +1 -0
  17. package/dist/autocomplete/types.d.ts +39 -0
  18. package/dist/autocomplete/types.d.ts.map +1 -0
  19. package/dist/avatar/index.d.ts +0 -6
  20. package/dist/avatar/index.d.ts.map +1 -1
  21. package/dist/avatar/index.js +3 -2
  22. package/dist/avatar/types.d.ts +0 -48
  23. package/dist/avatar/types.d.ts.map +1 -1
  24. package/dist/badge/index.d.ts +1 -23
  25. package/dist/badge/index.d.ts.map +1 -1
  26. package/dist/badge/index.js +3 -3
  27. package/dist/badge/types.d.ts +1 -20
  28. package/dist/badge/types.d.ts.map +1 -1
  29. package/dist/breadcrumbs/index.d.ts.map +1 -1
  30. package/dist/breadcrumbs/index.js +7 -6
  31. package/dist/breadcrumbs/types.d.ts +3 -38
  32. package/dist/breadcrumbs/types.d.ts.map +1 -1
  33. package/dist/button/index.d.ts +1 -1
  34. package/dist/button/index.d.ts.map +1 -1
  35. package/dist/button/index.js +5 -5
  36. package/dist/button/types.d.ts +2 -8
  37. package/dist/button/types.d.ts.map +1 -1
  38. package/dist/button-group/index.d.ts +0 -28
  39. package/dist/button-group/index.d.ts.map +1 -1
  40. package/dist/button-group/index.js +2 -2
  41. package/dist/button-group/types.d.ts +0 -19
  42. package/dist/button-group/types.d.ts.map +1 -1
  43. package/dist/calendar/index.d.ts +6 -0
  44. package/dist/calendar/index.d.ts.map +1 -0
  45. package/dist/calendar/types.d.ts +29 -0
  46. package/dist/calendar/types.d.ts.map +1 -0
  47. package/dist/card/index.d.ts +1 -41
  48. package/dist/card/index.d.ts.map +1 -1
  49. package/dist/card/index.js +3 -3
  50. package/dist/card/types.d.ts +3 -29
  51. package/dist/card/types.d.ts.map +1 -1
  52. package/dist/carousel/carousel-navigation.d.ts.map +1 -1
  53. package/dist/carousel/index.d.ts +5 -2
  54. package/dist/carousel/index.d.ts.map +1 -1
  55. package/dist/carousel/index.js +2 -2
  56. package/dist/carousel/styles.d.ts +12 -0
  57. package/dist/carousel/styles.d.ts.map +1 -0
  58. package/dist/cascader/CascaderMenu.d.ts +41 -0
  59. package/dist/cascader/CascaderMenu.d.ts.map +1 -0
  60. package/dist/cascader/index.d.ts +0 -21
  61. package/dist/cascader/index.d.ts.map +1 -1
  62. package/dist/cascader/index.js +3 -3
  63. package/dist/cascader/types.d.ts +3 -89
  64. package/dist/cascader/types.d.ts.map +1 -1
  65. package/dist/checkbox/index.d.ts.map +1 -1
  66. package/dist/checkbox/index.js +3 -3
  67. package/dist/checkbox/types.d.ts +2 -2
  68. package/dist/checkbox/types.d.ts.map +1 -1
  69. package/dist/checkbox-group/index.d.ts.map +1 -1
  70. package/dist/checkbox-group/index.js +2 -2
  71. package/dist/checkbox-group/types.d.ts +0 -24
  72. package/dist/checkbox-group/types.d.ts.map +1 -1
  73. package/dist/{chunk-HCOTO5WX.js → chunk-253JZOYG.js} +8 -9
  74. package/dist/chunk-253JZOYG.js.map +1 -0
  75. package/dist/{chunk-FZSCLZF6.js → chunk-3D77IPKB.js} +68 -113
  76. package/dist/chunk-3D77IPKB.js.map +1 -0
  77. package/dist/{chunk-GJPZOMFE.js → chunk-3XOHSE3X.js} +71 -34
  78. package/dist/chunk-3XOHSE3X.js.map +1 -0
  79. package/dist/{chunk-ROA7BYGB.js → chunk-3YP7HY3Y.js} +7 -5
  80. package/dist/chunk-3YP7HY3Y.js.map +1 -0
  81. package/dist/chunk-4HKPDSA6.js +378 -0
  82. package/dist/chunk-4HKPDSA6.js.map +1 -0
  83. package/dist/{chunk-OFUPJH35.js → chunk-4TEZWGX7.js} +3 -3
  84. package/dist/{chunk-OFUPJH35.js.map → chunk-4TEZWGX7.js.map} +1 -1
  85. package/dist/{chunk-TLNHWOQQ.js → chunk-4ZXHLPRS.js} +53 -44
  86. package/dist/chunk-4ZXHLPRS.js.map +1 -0
  87. package/dist/{chunk-6LYRMQOI.js → chunk-5MBKTMDW.js} +21 -16
  88. package/dist/chunk-5MBKTMDW.js.map +1 -0
  89. package/dist/{chunk-CN74CNAN.js → chunk-5SEVPU6C.js} +8 -22
  90. package/dist/chunk-5SEVPU6C.js.map +1 -0
  91. package/dist/{chunk-6JGNJI5T.js → chunk-7RT65ZGV.js} +38 -26
  92. package/dist/chunk-7RT65ZGV.js.map +1 -0
  93. package/dist/{chunk-I32ZQUYY.js → chunk-A4MYCEGM.js} +15 -16
  94. package/dist/chunk-A4MYCEGM.js.map +1 -0
  95. package/dist/{chunk-KJTMZJ7V.js → chunk-ADZWWBAX.js} +76 -110
  96. package/dist/chunk-ADZWWBAX.js.map +1 -0
  97. package/dist/{chunk-YXLIGJTN.js → chunk-AFW2ORFT.js} +16 -8
  98. package/dist/chunk-AFW2ORFT.js.map +1 -0
  99. package/dist/{chunk-OLTQAMV2.js → chunk-BGMYX7L5.js} +9 -24
  100. package/dist/chunk-BGMYX7L5.js.map +1 -0
  101. package/dist/chunk-BKLJDEUX.js +857 -0
  102. package/dist/chunk-BKLJDEUX.js.map +1 -0
  103. package/dist/{chunk-4FFVNUTK.js → chunk-BNHRUHI4.js} +7 -6
  104. package/dist/chunk-BNHRUHI4.js.map +1 -0
  105. package/dist/{chunk-DUIL5BYS.js → chunk-BS4PZPY6.js} +82 -53
  106. package/dist/chunk-BS4PZPY6.js.map +1 -0
  107. package/dist/{chunk-POLVJ36Y.js → chunk-C32HL4XU.js} +13 -38
  108. package/dist/chunk-C32HL4XU.js.map +1 -0
  109. package/dist/chunk-C65SCJD6.js +138 -0
  110. package/dist/chunk-C65SCJD6.js.map +1 -0
  111. package/dist/{chunk-3BZE6BBJ.js → chunk-CUXQZRDI.js} +45 -34
  112. package/dist/chunk-CUXQZRDI.js.map +1 -0
  113. package/dist/{chunk-674JC24S.js → chunk-DDZCRCTQ.js} +28 -29
  114. package/dist/chunk-DDZCRCTQ.js.map +1 -0
  115. package/dist/{chunk-64NHVOZS.js → chunk-FU5Q4WVX.js} +26 -16
  116. package/dist/chunk-FU5Q4WVX.js.map +1 -0
  117. package/dist/chunk-G6QIIWKU.js +24 -0
  118. package/dist/chunk-G6QIIWKU.js.map +1 -0
  119. package/dist/{chunk-UTWQ2FZK.js → chunk-GOBUFGGJ.js} +45 -108
  120. package/dist/chunk-GOBUFGGJ.js.map +1 -0
  121. package/dist/{chunk-WRSG7WU5.js → chunk-HJITFPBT.js} +78 -94
  122. package/dist/chunk-HJITFPBT.js.map +1 -0
  123. package/dist/{chunk-ZJNGZCRB.js → chunk-HR5TGNOF.js} +54 -153
  124. package/dist/chunk-HR5TGNOF.js.map +1 -0
  125. package/dist/{chunk-HECAAILV.js → chunk-HRVOTFU4.js} +24 -16
  126. package/dist/chunk-HRVOTFU4.js.map +1 -0
  127. package/dist/{chunk-LX4FDH4J.js → chunk-HSMO2BR4.js} +13 -22
  128. package/dist/chunk-HSMO2BR4.js.map +1 -0
  129. package/dist/chunk-HVHQA34X.js +534 -0
  130. package/dist/chunk-HVHQA34X.js.map +1 -0
  131. package/dist/{chunk-6G3BMY4N.js → chunk-I5AD247M.js} +80 -85
  132. package/dist/chunk-I5AD247M.js.map +1 -0
  133. package/dist/chunk-I7HJBHQU.js +99 -0
  134. package/dist/chunk-I7HJBHQU.js.map +1 -0
  135. package/dist/{chunk-3PWILVOE.js → chunk-J2WIZULN.js} +50 -50
  136. package/dist/chunk-J2WIZULN.js.map +1 -0
  137. package/dist/{chunk-VOODO2ZE.js → chunk-JFTSWOGE.js} +12 -32
  138. package/dist/chunk-JFTSWOGE.js.map +1 -0
  139. package/dist/{chunk-LOYLJRCF.js → chunk-JIXINKUJ.js} +8 -17
  140. package/dist/chunk-JIXINKUJ.js.map +1 -0
  141. package/dist/{chunk-6HGUDHHE.js → chunk-L5BU2QTI.js} +3 -5
  142. package/dist/chunk-L5BU2QTI.js.map +1 -0
  143. package/dist/chunk-LJOQ2C5W.js +81 -0
  144. package/dist/chunk-LJOQ2C5W.js.map +1 -0
  145. package/dist/chunk-LWYZCSX4.js +531 -0
  146. package/dist/chunk-LWYZCSX4.js.map +1 -0
  147. package/dist/{chunk-3BIV3QE2.js → chunk-LXHFGQOI.js} +61 -29
  148. package/dist/chunk-LXHFGQOI.js.map +1 -0
  149. package/dist/{chunk-ZIYA7TGX.js → chunk-NMP4HY6M.js} +13 -23
  150. package/dist/chunk-NMP4HY6M.js.map +1 -0
  151. package/dist/{chunk-2TLOWZE4.js → chunk-NTCAZ2LF.js} +64 -183
  152. package/dist/chunk-NTCAZ2LF.js.map +1 -0
  153. package/dist/chunk-NZHKNUGE.js +96 -0
  154. package/dist/chunk-NZHKNUGE.js.map +1 -0
  155. package/dist/{chunk-764UKE6X.js → chunk-OGB5QPNZ.js} +11 -92
  156. package/dist/chunk-OGB5QPNZ.js.map +1 -0
  157. package/dist/chunk-OJAHIPPP.js +198 -0
  158. package/dist/chunk-OJAHIPPP.js.map +1 -0
  159. package/dist/{chunk-2PNLIQYM.js → chunk-ON76IMMI.js} +3 -3
  160. package/dist/chunk-ON76IMMI.js.map +1 -0
  161. package/dist/{chunk-HUXODBIO.js → chunk-PB5VGXS5.js} +42 -101
  162. package/dist/chunk-PB5VGXS5.js.map +1 -0
  163. package/dist/chunk-PQOIW5CM.js +27 -0
  164. package/dist/chunk-PQOIW5CM.js.map +1 -0
  165. package/dist/{chunk-BVO2BNFG.js → chunk-PRDJLQLB.js} +23 -103
  166. package/dist/chunk-PRDJLQLB.js.map +1 -0
  167. package/dist/{chunk-N2WHJ3FI.js → chunk-QEAALOJC.js} +14 -16
  168. package/dist/chunk-QEAALOJC.js.map +1 -0
  169. package/dist/{chunk-NGYLRX6F.js → chunk-RAS6HUEI.js} +2 -2
  170. package/dist/chunk-RAS6HUEI.js.map +1 -0
  171. package/dist/{chunk-C5IGZLIT.js → chunk-ROQGBDET.js} +9 -23
  172. package/dist/chunk-ROQGBDET.js.map +1 -0
  173. package/dist/{chunk-Y4XAXZHB.js → chunk-RRPMZYVN.js} +9 -8
  174. package/dist/chunk-RRPMZYVN.js.map +1 -0
  175. package/dist/{chunk-D4SUSZDN.js → chunk-S6HO7HUY.js} +19 -17
  176. package/dist/chunk-S6HO7HUY.js.map +1 -0
  177. package/dist/{chunk-YS5AIY4A.js → chunk-SFP77VS3.js} +6 -5
  178. package/dist/chunk-SFP77VS3.js.map +1 -0
  179. package/dist/{chunk-RFHTC6AH.js → chunk-SJLH5ZDW.js} +16 -38
  180. package/dist/chunk-SJLH5ZDW.js.map +1 -0
  181. package/dist/{chunk-SGRACNBP.js → chunk-STAYOHDI.js} +13 -5
  182. package/dist/chunk-STAYOHDI.js.map +1 -0
  183. package/dist/{chunk-ON2CMF6J.js → chunk-TBKPQOXF.js} +58 -35
  184. package/dist/chunk-TBKPQOXF.js.map +1 -0
  185. package/dist/{chunk-GOLARX5K.js → chunk-TDNPACQD.js} +14 -11
  186. package/dist/chunk-TDNPACQD.js.map +1 -0
  187. package/dist/{chunk-7UCNBMCV.js → chunk-TQEMGWZ2.js} +27 -34
  188. package/dist/chunk-TQEMGWZ2.js.map +1 -0
  189. package/dist/{chunk-X3YNHX77.js → chunk-U4JPTWK6.js} +33 -34
  190. package/dist/chunk-U4JPTWK6.js.map +1 -0
  191. package/dist/{chunk-R3TLU26W.js → chunk-UFC3RGIN.js} +9 -7
  192. package/dist/chunk-UFC3RGIN.js.map +1 -0
  193. package/dist/{chunk-KH577UDI.js → chunk-W5VLFE4U.js} +11 -8
  194. package/dist/chunk-W5VLFE4U.js.map +1 -0
  195. package/dist/{chunk-G6NVGBYZ.js → chunk-WG5AYAC6.js} +27 -35
  196. package/dist/chunk-WG5AYAC6.js.map +1 -0
  197. package/dist/{chunk-YJOLLSHH.js → chunk-WQT24BGG.js} +44 -49
  198. package/dist/chunk-WQT24BGG.js.map +1 -0
  199. package/dist/{chunk-JWTWPZ32.js → chunk-X7MF3TIF.js} +15 -19
  200. package/dist/chunk-X7MF3TIF.js.map +1 -0
  201. package/dist/chunk-XAM5EKOS.js +150 -0
  202. package/dist/chunk-XAM5EKOS.js.map +1 -0
  203. package/dist/{chunk-EHWXPH76.js → chunk-XBXPY7U3.js} +9 -7
  204. package/dist/chunk-XBXPY7U3.js.map +1 -0
  205. package/dist/{chunk-5PUATOLR.js → chunk-XCK62GVU.js} +4 -4
  206. package/dist/chunk-XCK62GVU.js.map +1 -0
  207. package/dist/{chunk-ONGJXAYQ.js → chunk-XMBZBXXS.js} +9 -16
  208. package/dist/chunk-XMBZBXXS.js.map +1 -0
  209. package/dist/{chunk-H6G4BUPA.js → chunk-XOEEAMMY.js} +210 -183
  210. package/dist/chunk-XOEEAMMY.js.map +1 -0
  211. package/dist/{chunk-O3V3BTIJ.js → chunk-Z3DIBMBQ.js} +60 -107
  212. package/dist/chunk-Z3DIBMBQ.js.map +1 -0
  213. package/dist/clipboard/index.d.ts.map +1 -1
  214. package/dist/clipboard/index.js +4 -4
  215. package/dist/clipboard/types.d.ts +2 -35
  216. package/dist/clipboard/types.d.ts.map +1 -1
  217. package/dist/collapse/index.d.ts.map +1 -1
  218. package/dist/collapse/index.js +4 -3
  219. package/dist/collapse/types.d.ts +2 -35
  220. package/dist/collapse/types.d.ts.map +1 -1
  221. package/dist/color-picker/index.d.ts +8 -0
  222. package/dist/color-picker/index.d.ts.map +1 -0
  223. package/dist/color-picker/types.d.ts +42 -0
  224. package/dist/color-picker/types.d.ts.map +1 -0
  225. package/dist/command/index.d.ts +39 -66
  226. package/dist/command/index.d.ts.map +1 -1
  227. package/dist/command/index.js +4 -3
  228. package/dist/command/types.d.ts +2 -2
  229. package/dist/command/types.d.ts.map +1 -1
  230. package/dist/context-menu/index.d.ts +2 -46
  231. package/dist/context-menu/index.d.ts.map +1 -1
  232. package/dist/context-menu/index.js +5 -3
  233. package/dist/context-menu/types.d.ts +21 -63
  234. package/dist/context-menu/types.d.ts.map +1 -1
  235. package/dist/date-picker/CalendarHeader.d.ts +18 -0
  236. package/dist/date-picker/CalendarHeader.d.ts.map +1 -0
  237. package/dist/date-picker/MonthSelector.d.ts +11 -0
  238. package/dist/date-picker/MonthSelector.d.ts.map +1 -0
  239. package/dist/date-picker/PickerWrapper.d.ts +18 -0
  240. package/dist/date-picker/PickerWrapper.d.ts.map +1 -0
  241. package/dist/date-picker/RangePicker.d.ts +4 -0
  242. package/dist/date-picker/RangePicker.d.ts.map +1 -0
  243. package/dist/date-picker/TimePicker.d.ts +4 -0
  244. package/dist/date-picker/TimePicker.d.ts.map +1 -0
  245. package/dist/date-picker/YearSelector.d.ts +10 -0
  246. package/dist/date-picker/YearSelector.d.ts.map +1 -0
  247. package/dist/date-picker/index.d.ts +6 -6
  248. package/dist/date-picker/index.d.ts.map +1 -1
  249. package/dist/date-picker/index.js +4 -4
  250. package/dist/date-picker/shared.d.ts +3 -0
  251. package/dist/date-picker/shared.d.ts.map +1 -0
  252. package/dist/date-picker/types.d.ts +2 -2
  253. package/dist/date-picker/types.d.ts.map +1 -1
  254. package/dist/date-picker/utils.d.ts +1 -1
  255. package/dist/date-picker/utils.d.ts.map +1 -1
  256. package/dist/descriptions/index.d.ts.map +1 -1
  257. package/dist/descriptions/index.js +3 -2
  258. package/dist/divider/index.d.ts.map +1 -1
  259. package/dist/divider/index.js +3 -2
  260. package/dist/divider/types.d.ts +0 -12
  261. package/dist/divider/types.d.ts.map +1 -1
  262. package/dist/drawer/index.d.ts +4 -1
  263. package/dist/drawer/index.d.ts.map +1 -1
  264. package/dist/drawer/index.js +2 -2
  265. package/dist/drawer/types.d.ts +2 -145
  266. package/dist/drawer/types.d.ts.map +1 -1
  267. package/dist/dropdown/index.d.ts.map +1 -1
  268. package/dist/dropdown/index.js +6 -5
  269. package/dist/dropdown/types.d.ts +2 -71
  270. package/dist/dropdown/types.d.ts.map +1 -1
  271. package/dist/fetching-overlay/index.d.ts.map +1 -1
  272. package/dist/fetching-overlay/index.js +4 -4
  273. package/dist/float-button/index.d.ts +9 -0
  274. package/dist/float-button/index.d.ts.map +1 -0
  275. package/dist/float-button/types.d.ts +45 -0
  276. package/dist/float-button/types.d.ts.map +1 -0
  277. package/dist/float-input/index.d.ts.map +1 -1
  278. package/dist/float-input/index.js +4 -4
  279. package/dist/float-input/types.d.ts +5 -10
  280. package/dist/float-input/types.d.ts.map +1 -1
  281. package/dist/grid/index.d.ts +1 -1
  282. package/dist/grid/index.d.ts.map +1 -1
  283. package/dist/grid/index.js +2 -2
  284. package/dist/grid/types.d.ts +1 -9
  285. package/dist/grid/types.d.ts.map +1 -1
  286. package/dist/hooks/index.d.ts +1 -0
  287. package/dist/hooks/index.d.ts.map +1 -1
  288. package/dist/hooks/useMenuNavigation.d.ts +18 -0
  289. package/dist/hooks/useMenuNavigation.d.ts.map +1 -0
  290. package/dist/image/index.d.ts.map +1 -1
  291. package/dist/image/index.js +2 -2
  292. package/dist/image/types.d.ts +2 -34
  293. package/dist/image/types.d.ts.map +1 -1
  294. package/dist/index.d.ts +30 -3
  295. package/dist/index.d.ts.map +1 -1
  296. package/dist/index.js +3030 -90
  297. package/dist/index.js.map +1 -1
  298. package/dist/input/index.d.ts.map +1 -1
  299. package/dist/input/index.js +4 -4
  300. package/dist/input/types.d.ts +9 -4
  301. package/dist/input/types.d.ts.map +1 -1
  302. package/dist/input-group/index.d.ts.map +1 -1
  303. package/dist/input-group/index.js +2 -2
  304. package/dist/input-group/types.d.ts +7 -19
  305. package/dist/input-group/types.d.ts.map +1 -1
  306. package/dist/input-otp/index.d.ts.map +1 -1
  307. package/dist/input-otp/index.js +2 -2
  308. package/dist/input-otp/types.d.ts +3 -81
  309. package/dist/input-otp/types.d.ts.map +1 -1
  310. package/dist/input-password/index.d.ts.map +1 -1
  311. package/dist/input-password/index.js +5 -5
  312. package/dist/input-password/types.d.ts +0 -6
  313. package/dist/input-password/types.d.ts.map +1 -1
  314. package/dist/kbd/index.d.ts.map +1 -1
  315. package/dist/kbd/index.js +3 -3
  316. package/dist/kbd/types.d.ts +2 -17
  317. package/dist/kbd/types.d.ts.map +1 -1
  318. package/dist/link/index.d.ts +1 -1
  319. package/dist/link/index.d.ts.map +1 -1
  320. package/dist/link/index.js +3 -2
  321. package/dist/mentions/index.d.ts +6 -0
  322. package/dist/mentions/index.d.ts.map +1 -0
  323. package/dist/mentions/types.d.ts +36 -0
  324. package/dist/mentions/types.d.ts.map +1 -0
  325. package/dist/menubar/index.d.ts.map +1 -1
  326. package/dist/menubar/index.js +5 -4
  327. package/dist/modal/index.d.ts +1 -1
  328. package/dist/modal/index.d.ts.map +1 -1
  329. package/dist/modal/index.js +2 -2
  330. package/dist/modal/types.d.ts +7 -41
  331. package/dist/modal/types.d.ts.map +1 -1
  332. package/dist/multi-select/index.d.ts.map +1 -1
  333. package/dist/multi-select/index.js +8 -6
  334. package/dist/multi-select/types.d.ts +2 -34
  335. package/dist/multi-select/types.d.ts.map +1 -1
  336. package/dist/navigation-menu/index.d.ts.map +1 -1
  337. package/dist/navigation-menu/index.js +2 -2
  338. package/dist/navigation-menu/types.d.ts +2 -0
  339. package/dist/navigation-menu/types.d.ts.map +1 -1
  340. package/dist/notification/index.d.ts.map +1 -1
  341. package/dist/notification/index.js +3 -3
  342. package/dist/notification/types.d.ts +2 -62
  343. package/dist/notification/types.d.ts.map +1 -1
  344. package/dist/number-input/index.d.ts.map +1 -1
  345. package/dist/number-input/index.js +6 -5
  346. package/dist/number-input/types.d.ts +5 -2
  347. package/dist/number-input/types.d.ts.map +1 -1
  348. package/dist/pagination/index.d.ts.map +1 -1
  349. package/dist/pagination/index.js +4 -3
  350. package/dist/pagination/types.d.ts +3 -53
  351. package/dist/pagination/types.d.ts.map +1 -1
  352. package/dist/popover/index.d.ts +1 -1
  353. package/dist/popover/index.d.ts.map +1 -1
  354. package/dist/popover/index.js +3 -3
  355. package/dist/popover/types.d.ts +3 -17
  356. package/dist/popover/types.d.ts.map +1 -1
  357. package/dist/progress/index.d.ts.map +1 -1
  358. package/dist/progress/index.js +3 -2
  359. package/dist/progress/styles.d.ts +4 -5
  360. package/dist/progress/styles.d.ts.map +1 -1
  361. package/dist/progress/types.d.ts +2 -44
  362. package/dist/progress/types.d.ts.map +1 -1
  363. package/dist/qr-code/index.d.ts +6 -0
  364. package/dist/qr-code/index.d.ts.map +1 -0
  365. package/dist/qr-code/types.d.ts +49 -0
  366. package/dist/qr-code/types.d.ts.map +1 -0
  367. package/dist/radio/index.d.ts.map +1 -1
  368. package/dist/radio/index.js +3 -3
  369. package/dist/radio/types.d.ts +2 -2
  370. package/dist/radio/types.d.ts.map +1 -1
  371. package/dist/radio-group/index.d.ts.map +1 -1
  372. package/dist/radio-group/index.js +2 -2
  373. package/dist/radio-group/types.d.ts +0 -24
  374. package/dist/radio-group/types.d.ts.map +1 -1
  375. package/dist/rating/index.d.ts.map +1 -1
  376. package/dist/rating/index.js +3 -2
  377. package/dist/rating/types.d.ts +2 -2
  378. package/dist/rating/types.d.ts.map +1 -1
  379. package/dist/resizable/index.d.ts +7 -0
  380. package/dist/resizable/index.d.ts.map +1 -0
  381. package/dist/resizable/types.d.ts +8 -0
  382. package/dist/resizable/types.d.ts.map +1 -0
  383. package/dist/result/index.d.ts +6 -0
  384. package/dist/result/index.d.ts.map +1 -0
  385. package/dist/result/types.d.ts +22 -0
  386. package/dist/result/types.d.ts.map +1 -0
  387. package/dist/scroll-area/index.d.ts.map +1 -1
  388. package/dist/scroll-area/index.js +2 -2
  389. package/dist/select/index.d.ts.map +1 -1
  390. package/dist/select/index.js +8 -6
  391. package/dist/select/types.d.ts +8 -3
  392. package/dist/select/types.d.ts.map +1 -1
  393. package/dist/shared/useSelectBase.d.ts +4 -2
  394. package/dist/shared/useSelectBase.d.ts.map +1 -1
  395. package/dist/skeleton/index.d.ts.map +1 -1
  396. package/dist/skeleton/index.js +3 -3
  397. package/dist/skeleton/types.d.ts +1 -1
  398. package/dist/skeleton/types.d.ts.map +1 -1
  399. package/dist/slider/index.d.ts.map +1 -1
  400. package/dist/slider/index.js +3 -2
  401. package/dist/slider/types.d.ts +2 -36
  402. package/dist/slider/types.d.ts.map +1 -1
  403. package/dist/spinner/index.d.ts +2 -1
  404. package/dist/spinner/index.d.ts.map +1 -1
  405. package/dist/spinner/index.js +3 -3
  406. package/dist/spinner/types.d.ts +1 -1
  407. package/dist/spinner/types.d.ts.map +1 -1
  408. package/dist/stepper/index.d.ts +3 -3
  409. package/dist/stepper/index.d.ts.map +1 -1
  410. package/dist/stepper/index.js +3 -2
  411. package/dist/stepper/types.d.ts +3 -2
  412. package/dist/stepper/types.d.ts.map +1 -1
  413. package/dist/switch/index.d.ts.map +1 -1
  414. package/dist/switch/index.js +3 -3
  415. package/dist/switch/types.d.ts +2 -31
  416. package/dist/switch/types.d.ts.map +1 -1
  417. package/dist/table/TableHeaderCell.d.ts.map +1 -1
  418. package/dist/table/index.d.ts +1 -1
  419. package/dist/table/index.d.ts.map +1 -1
  420. package/dist/table/index.js +11 -11
  421. package/dist/table/types.d.ts +8 -2
  422. package/dist/table/types.d.ts.map +1 -1
  423. package/dist/tabs/index.d.ts.map +1 -1
  424. package/dist/tabs/index.js +3 -3
  425. package/dist/tabs/types.d.ts +3 -53
  426. package/dist/tabs/types.d.ts.map +1 -1
  427. package/dist/tag/index.d.ts +1 -1
  428. package/dist/tag/index.d.ts.map +1 -1
  429. package/dist/tag/index.js +3 -3
  430. package/dist/tag/types.d.ts +1 -1
  431. package/dist/tag/types.d.ts.map +1 -1
  432. package/dist/tags-input/index.d.ts +6 -0
  433. package/dist/tags-input/index.d.ts.map +1 -0
  434. package/dist/tags-input/types.d.ts +36 -0
  435. package/dist/tags-input/types.d.ts.map +1 -0
  436. package/dist/textarea/index.d.ts.map +1 -1
  437. package/dist/textarea/index.js +2 -2
  438. package/dist/textarea/types.d.ts +3 -54
  439. package/dist/textarea/types.d.ts.map +1 -1
  440. package/dist/theme/ThemeProvider.d.ts +11 -3
  441. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  442. package/dist/theme/index.js +1 -1
  443. package/dist/theme/types.d.ts +0 -12
  444. package/dist/theme/types.d.ts.map +1 -1
  445. package/dist/timeline/index.d.ts.map +1 -1
  446. package/dist/timeline/index.js +3 -2
  447. package/dist/toast/index.d.ts.map +1 -1
  448. package/dist/toast/index.js +3 -3
  449. package/dist/toast/types.d.ts +0 -6
  450. package/dist/toast/types.d.ts.map +1 -1
  451. package/dist/toggle/index.d.ts.map +1 -1
  452. package/dist/toggle/index.js +4 -3
  453. package/dist/toggle/types.d.ts +3 -26
  454. package/dist/toggle/types.d.ts.map +1 -1
  455. package/dist/toggle-group/index.d.ts.map +1 -1
  456. package/dist/toggle-group/index.js +4 -3
  457. package/dist/toggle-group/types.d.ts +3 -44
  458. package/dist/toggle-group/types.d.ts.map +1 -1
  459. package/dist/tooltip/index.d.ts.map +1 -1
  460. package/dist/tooltip/index.js +3 -3
  461. package/dist/tooltip/types.d.ts +2 -44
  462. package/dist/tooltip/types.d.ts.map +1 -1
  463. package/dist/tour/index.d.ts +6 -0
  464. package/dist/tour/index.d.ts.map +1 -0
  465. package/dist/tour/types.d.ts +45 -0
  466. package/dist/tour/types.d.ts.map +1 -0
  467. package/dist/transfer/index.d.ts.map +1 -1
  468. package/dist/transfer/index.js +4 -4
  469. package/dist/transfer/types.d.ts +0 -20
  470. package/dist/transfer/types.d.ts.map +1 -1
  471. package/dist/transfer/utils.d.ts.map +1 -1
  472. package/dist/tree/index.d.ts.map +1 -1
  473. package/dist/tree/index.js +2 -2
  474. package/dist/tree/types.d.ts +2 -73
  475. package/dist/tree/types.d.ts.map +1 -1
  476. package/dist/tree-select/index.d.ts.map +1 -1
  477. package/dist/tree-select/index.js +5 -5
  478. package/dist/tree-select/types.d.ts +3 -91
  479. package/dist/tree-select/types.d.ts.map +1 -1
  480. package/dist/types.d.ts +1 -35
  481. package/dist/types.d.ts.map +1 -1
  482. package/dist/typography/index.d.ts +8 -0
  483. package/dist/typography/index.d.ts.map +1 -0
  484. package/dist/typography/types.d.ts +33 -0
  485. package/dist/typography/types.d.ts.map +1 -0
  486. package/dist/upload/index.d.ts.map +1 -1
  487. package/dist/upload/index.js +4 -3
  488. package/dist/upload/types.d.ts +5 -32
  489. package/dist/upload/types.d.ts.map +1 -1
  490. package/dist/upload/utils.d.ts +2 -1
  491. package/dist/upload/utils.d.ts.map +1 -1
  492. package/dist/utils.d.ts +0 -39
  493. package/dist/utils.d.ts.map +1 -1
  494. package/dist/variants.d.ts +3 -314
  495. package/dist/variants.d.ts.map +1 -1
  496. package/dist/watermark/index.d.ts +6 -0
  497. package/dist/watermark/index.d.ts.map +1 -0
  498. package/dist/watermark/types.d.ts +24 -0
  499. package/dist/watermark/types.d.ts.map +1 -0
  500. package/package.json +5 -2
  501. package/styles/global.css +575 -2012
  502. package/styles/themes/dark.css +15 -5
  503. package/styles/themes/light.css +20 -2
  504. package/styles/themes/presets/corporate.css +2 -0
  505. package/styles/themes/presets/minimal.css +2 -0
  506. package/styles/themes/presets/vibrant.css +2 -0
  507. package/dist/chunk-2PNLIQYM.js.map +0 -1
  508. package/dist/chunk-2TLOWZE4.js.map +0 -1
  509. package/dist/chunk-2WZVD7P3.js +0 -145
  510. package/dist/chunk-2WZVD7P3.js.map +0 -1
  511. package/dist/chunk-3BIV3QE2.js.map +0 -1
  512. package/dist/chunk-3BZE6BBJ.js.map +0 -1
  513. package/dist/chunk-3PWILVOE.js.map +0 -1
  514. package/dist/chunk-4FFVNUTK.js.map +0 -1
  515. package/dist/chunk-5PUATOLR.js.map +0 -1
  516. package/dist/chunk-64NHVOZS.js.map +0 -1
  517. package/dist/chunk-674JC24S.js.map +0 -1
  518. package/dist/chunk-6BAP6QUT.js +0 -72
  519. package/dist/chunk-6BAP6QUT.js.map +0 -1
  520. package/dist/chunk-6G3BMY4N.js.map +0 -1
  521. package/dist/chunk-6HGUDHHE.js.map +0 -1
  522. package/dist/chunk-6JGNJI5T.js.map +0 -1
  523. package/dist/chunk-6LYRMQOI.js.map +0 -1
  524. package/dist/chunk-6YOOKE6C.js +0 -138
  525. package/dist/chunk-6YOOKE6C.js.map +0 -1
  526. package/dist/chunk-764UKE6X.js.map +0 -1
  527. package/dist/chunk-7UCNBMCV.js.map +0 -1
  528. package/dist/chunk-BPRCBPVJ.js +0 -253
  529. package/dist/chunk-BPRCBPVJ.js.map +0 -1
  530. package/dist/chunk-BVO2BNFG.js.map +0 -1
  531. package/dist/chunk-C5IGZLIT.js.map +0 -1
  532. package/dist/chunk-CN74CNAN.js.map +0 -1
  533. package/dist/chunk-D4SUSZDN.js.map +0 -1
  534. package/dist/chunk-DUIL5BYS.js.map +0 -1
  535. package/dist/chunk-EHWXPH76.js.map +0 -1
  536. package/dist/chunk-ERRZ2CSG.js +0 -192
  537. package/dist/chunk-ERRZ2CSG.js.map +0 -1
  538. package/dist/chunk-EZGK67T6.js +0 -383
  539. package/dist/chunk-EZGK67T6.js.map +0 -1
  540. package/dist/chunk-FZSCLZF6.js.map +0 -1
  541. package/dist/chunk-G6NVGBYZ.js.map +0 -1
  542. package/dist/chunk-GJPZOMFE.js.map +0 -1
  543. package/dist/chunk-GOLARX5K.js.map +0 -1
  544. package/dist/chunk-GVVP5TZM.js +0 -506
  545. package/dist/chunk-GVVP5TZM.js.map +0 -1
  546. package/dist/chunk-H6G4BUPA.js.map +0 -1
  547. package/dist/chunk-HCOTO5WX.js.map +0 -1
  548. package/dist/chunk-HECAAILV.js.map +0 -1
  549. package/dist/chunk-HUXODBIO.js.map +0 -1
  550. package/dist/chunk-I32ZQUYY.js.map +0 -1
  551. package/dist/chunk-JWTWPZ32.js.map +0 -1
  552. package/dist/chunk-KH577UDI.js.map +0 -1
  553. package/dist/chunk-KJTMZJ7V.js.map +0 -1
  554. package/dist/chunk-L5UYN5LX.js +0 -787
  555. package/dist/chunk-L5UYN5LX.js.map +0 -1
  556. package/dist/chunk-LOYLJRCF.js.map +0 -1
  557. package/dist/chunk-LX4FDH4J.js.map +0 -1
  558. package/dist/chunk-N2WHJ3FI.js.map +0 -1
  559. package/dist/chunk-NGYLRX6F.js.map +0 -1
  560. package/dist/chunk-O3V3BTIJ.js.map +0 -1
  561. package/dist/chunk-OLTQAMV2.js.map +0 -1
  562. package/dist/chunk-ON2CMF6J.js.map +0 -1
  563. package/dist/chunk-ONGJXAYQ.js.map +0 -1
  564. package/dist/chunk-OQFYIKWR.js +0 -1264
  565. package/dist/chunk-OQFYIKWR.js.map +0 -1
  566. package/dist/chunk-POLVJ36Y.js.map +0 -1
  567. package/dist/chunk-POXI7JJ4.js +0 -351
  568. package/dist/chunk-POXI7JJ4.js.map +0 -1
  569. package/dist/chunk-R3TLU26W.js.map +0 -1
  570. package/dist/chunk-RFHTC6AH.js.map +0 -1
  571. package/dist/chunk-ROA7BYGB.js.map +0 -1
  572. package/dist/chunk-SGRACNBP.js.map +0 -1
  573. package/dist/chunk-TLNHWOQQ.js.map +0 -1
  574. package/dist/chunk-UTWQ2FZK.js.map +0 -1
  575. package/dist/chunk-VOODO2ZE.js.map +0 -1
  576. package/dist/chunk-WRSG7WU5.js.map +0 -1
  577. package/dist/chunk-X3YNHX77.js.map +0 -1
  578. package/dist/chunk-Y4XAXZHB.js.map +0 -1
  579. package/dist/chunk-YJOLLSHH.js.map +0 -1
  580. package/dist/chunk-YS5AIY4A.js.map +0 -1
  581. package/dist/chunk-YXLIGJTN.js.map +0 -1
  582. package/dist/chunk-ZIYA7TGX.js.map +0 -1
  583. package/dist/chunk-ZJNGZCRB.js.map +0 -1
  584. package/dist/empty/index.d.ts +0 -6
  585. package/dist/empty/index.d.ts.map +0 -1
  586. package/dist/empty/index.js +0 -4
  587. package/dist/empty/types.d.ts +0 -62
  588. package/dist/empty/types.d.ts.map +0 -1
  589. package/dist/styles/tokens.d.ts +0 -428
  590. package/dist/styles/tokens.d.ts.map +0 -1
  591. /package/dist/{empty → alert}/index.js.map +0 -0
@@ -0,0 +1,378 @@
1
+ import { colorVars } from './chunk-G6QIIWKU.js';
2
+ import { cn, iconSizes } from './chunk-RAS6HUEI.js';
3
+ import { cva } from 'class-variance-authority';
4
+ import { ChevronDown } from 'lucide-react';
5
+ import React, { useRef, useCallback, useLayoutEffect, useId, useState } from 'react';
6
+ import { jsxs, jsx } 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 border border-slot rounded-lg overflow-hidden",
15
+ splitted: "space-y-2"
16
+ },
17
+ color: colorVars,
18
+ showDivider: {
19
+ true: "",
20
+ false: ""
21
+ }
22
+ },
23
+ compoundVariants: [
24
+ { variant: "default", showDivider: false, class: "divide-y-0" },
25
+ { variant: "solid", showDivider: false, class: "divide-y-0" },
26
+ { variant: "soft", showDivider: false, class: "divide-y-0" },
27
+ { variant: "bordered", showDivider: false, class: "divide-y-0" },
28
+ { variant: "bordered", color: "default", class: "divide-border" }
29
+ ],
30
+ defaultVariants: {
31
+ variant: "default",
32
+ color: "default",
33
+ showDivider: true
34
+ }
35
+ });
36
+ var accordionItemVariants = cva("", {
37
+ variants: {
38
+ variant: {
39
+ default: "bg-transparent",
40
+ solid: "bg-slot text-slot-fg",
41
+ soft: "bg-slot-10",
42
+ bordered: "bg-transparent border-slot-20",
43
+ splitted: "border rounded-lg overflow-hidden border-slot"
44
+ },
45
+ color: colorVars
46
+ },
47
+ compoundVariants: [
48
+ { variant: "soft", color: "default", class: "bg-surface/50" },
49
+ { variant: "bordered", color: "default", class: "border-border" }
50
+ ],
51
+ defaultVariants: {
52
+ variant: "default",
53
+ color: "default"
54
+ }
55
+ });
56
+ var accordionHeaderVariants = cva(
57
+ [
58
+ "flex items-center w-full text-left font-medium text-text-primary touch-manipulation",
59
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:ring-slot",
60
+ "disabled:opacity-50 disabled:cursor-not-allowed"
61
+ ],
62
+ {
63
+ variants: {
64
+ size: {
65
+ xs: "px-(--accordion-padding-x-xs) py-(--accordion-padding-y-xs) text-xs gap-2",
66
+ sm: "px-(--accordion-padding-x-sm) py-(--accordion-padding-y-sm) text-sm gap-2",
67
+ md: "px-(--accordion-padding-x-md) py-(--accordion-padding-y-md) text-base gap-3",
68
+ lg: "px-(--accordion-padding-x-lg) py-(--accordion-padding-y-lg) text-lg gap-3"
69
+ },
70
+ color: colorVars,
71
+ disabled: {
72
+ true: "cursor-not-allowed",
73
+ false: "cursor-pointer hover:bg-surface/50"
74
+ }
75
+ },
76
+ defaultVariants: {
77
+ size: "md",
78
+ color: "default",
79
+ disabled: false
80
+ }
81
+ }
82
+ );
83
+ var accordionContentVariants = cva("text-text-secondary", {
84
+ variants: {
85
+ size: {
86
+ xs: "px-(--accordion-padding-x-xs) pb-(--accordion-padding-y-xs) text-xs",
87
+ sm: "px-(--accordion-padding-x-sm) pb-(--accordion-padding-y-sm) text-sm",
88
+ md: "px-(--accordion-padding-x-md) pb-(--accordion-padding-y-md) text-base",
89
+ lg: "px-(--accordion-padding-x-lg) pb-(--accordion-padding-y-lg) text-lg"
90
+ }
91
+ },
92
+ defaultVariants: {
93
+ size: "md"
94
+ }
95
+ });
96
+ var getIconColor = (_color, isExpanded) => {
97
+ if (!isExpanded) return "text-text-secondary";
98
+ return "text-slot";
99
+ };
100
+ var AccordionItemComponent = React.memo(
101
+ ({
102
+ item,
103
+ isActive: isItemActive,
104
+ baseId,
105
+ size,
106
+ color,
107
+ variant,
108
+ isSolidColored,
109
+ expandIcon,
110
+ expandIconPosition,
111
+ destroyOnClose,
112
+ onToggle,
113
+ classNames,
114
+ itemClassName
115
+ }) => {
116
+ const headerId = `${baseId}-header-${item.key}`;
117
+ const panelId = `${baseId}-panel-${item.key}`;
118
+ const panelRef = useRef(null);
119
+ const contentRef = useRef(null);
120
+ const prevActiveRef = useRef(isItemActive);
121
+ const cachedHeightRef = useRef(0);
122
+ const animRef = useRef(null);
123
+ const handlePointerEnter = useCallback(() => {
124
+ if (contentRef.current) {
125
+ cachedHeightRef.current = contentRef.current.scrollHeight;
126
+ }
127
+ }, []);
128
+ useLayoutEffect(() => {
129
+ if (panelRef.current) {
130
+ panelRef.current.style.height = isItemActive ? "auto" : "0";
131
+ }
132
+ }, []);
133
+ useLayoutEffect(() => {
134
+ const panel = panelRef.current;
135
+ const content = contentRef.current;
136
+ if (!panel || !content) return;
137
+ const wasActive = prevActiveRef.current;
138
+ prevActiveRef.current = isItemActive;
139
+ if (isItemActive === wasActive) return;
140
+ if (animRef.current) animRef.current.cancel();
141
+ const height = cachedHeightRef.current || content.scrollHeight;
142
+ cachedHeightRef.current = 0;
143
+ const prefersReducedMotion = typeof window !== "undefined" && window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;
144
+ const duration = prefersReducedMotion ? 0 : 200;
145
+ const anim = panel.animate(
146
+ isItemActive ? [{ height: "0px" }, { height: `${height}px` }] : [{ height: `${height}px` }, { height: "0px" }],
147
+ { duration, easing: "ease-out", fill: "forwards" }
148
+ );
149
+ anim.onfinish = () => {
150
+ panel.style.height = isItemActive ? "auto" : "0";
151
+ anim.cancel();
152
+ };
153
+ animRef.current = anim;
154
+ }, [isItemActive]);
155
+ const renderExpandIcon = (isExpanded) => {
156
+ if (expandIcon === false) return null;
157
+ if (typeof expandIcon === "function") {
158
+ return expandIcon(isExpanded);
159
+ }
160
+ if (expandIcon) {
161
+ return /* @__PURE__ */ jsx(
162
+ "span",
163
+ {
164
+ className: cn(
165
+ "shrink-0 transition-transform duration-300",
166
+ isExpanded && "rotate-180"
167
+ ),
168
+ children: expandIcon
169
+ }
170
+ );
171
+ }
172
+ return /* @__PURE__ */ jsx(
173
+ ChevronDown,
174
+ {
175
+ className: cn(
176
+ "shrink-0 transition-transform duration-300",
177
+ isExpanded && "rotate-180",
178
+ isSolidColored ? "text-inherit" : getIconColor(color, isExpanded),
179
+ iconSizes[size]
180
+ )
181
+ }
182
+ );
183
+ };
184
+ return /* @__PURE__ */ jsxs(
185
+ "div",
186
+ {
187
+ "data-slot": "item",
188
+ className: cn(
189
+ "accordion_item",
190
+ accordionItemVariants({ variant, color }),
191
+ item.disabled && "opacity-50",
192
+ classNames?.item,
193
+ itemClassName
194
+ ),
195
+ children: [
196
+ /* @__PURE__ */ jsxs(
197
+ "button",
198
+ {
199
+ type: "button",
200
+ id: headerId,
201
+ "aria-expanded": isItemActive,
202
+ "aria-controls": panelId,
203
+ "aria-disabled": item.disabled,
204
+ disabled: item.disabled,
205
+ onClick: () => onToggle(item.key, item.disabled),
206
+ onPointerEnter: handlePointerEnter,
207
+ "data-slot": "trigger",
208
+ className: cn(
209
+ "accordion_trigger",
210
+ accordionHeaderVariants({
211
+ size,
212
+ color,
213
+ disabled: item.disabled
214
+ }),
215
+ classNames?.trigger
216
+ ),
217
+ children: [
218
+ expandIconPosition === "left" && renderExpandIcon(isItemActive),
219
+ item.icon && /* @__PURE__ */ jsx(
220
+ "span",
221
+ {
222
+ "data-slot": "icon",
223
+ className: cn(
224
+ "accordion_icon",
225
+ "shrink-0",
226
+ isSolidColored ? "text-inherit" : getIconColor(color, isItemActive),
227
+ classNames?.icon
228
+ ),
229
+ children: item.icon
230
+ }
231
+ ),
232
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
233
+ /* @__PURE__ */ jsx(
234
+ "div",
235
+ {
236
+ className: cn(
237
+ !isSolidColored && isItemActive && color !== "default" && "text-slot"
238
+ ),
239
+ children: item.title
240
+ }
241
+ ),
242
+ item.subtitle && /* @__PURE__ */ jsx("div", { className: cn(
243
+ "font-normal mt-0.5",
244
+ isSolidColored ? "text-inherit opacity-80" : "text-text-secondary"
245
+ ), children: item.subtitle })
246
+ ] }),
247
+ item.extra && /* @__PURE__ */ jsx("span", { className: cn(
248
+ "shrink-0",
249
+ isSolidColored ? "text-inherit opacity-80" : "text-text-secondary"
250
+ ), children: item.extra }),
251
+ expandIconPosition === "right" && renderExpandIcon(isItemActive)
252
+ ]
253
+ }
254
+ ),
255
+ /* @__PURE__ */ jsx(
256
+ "div",
257
+ {
258
+ ref: panelRef,
259
+ id: panelId,
260
+ role: "region",
261
+ "aria-labelledby": headerId,
262
+ "aria-hidden": !isItemActive,
263
+ className: "overflow-hidden",
264
+ style: { contain: "content" },
265
+ children: /* @__PURE__ */ jsx("div", { ref: contentRef, children: (!destroyOnClose || isItemActive) && /* @__PURE__ */ jsx(
266
+ "div",
267
+ {
268
+ "data-slot": "content",
269
+ className: cn(
270
+ "accordion_content",
271
+ accordionContentVariants({ size }),
272
+ isSolidColored && "text-inherit opacity-90",
273
+ classNames?.content
274
+ ),
275
+ children: item.content
276
+ }
277
+ ) })
278
+ }
279
+ )
280
+ ]
281
+ }
282
+ );
283
+ }
284
+ );
285
+ AccordionItemComponent.displayName = "AccordionItem";
286
+ var Accordion = React.memo(
287
+ ({
288
+ items,
289
+ color = "default",
290
+ size = "md",
291
+ variant = "default",
292
+ defaultActiveKey,
293
+ activeKey: controlledActiveKey,
294
+ onChange,
295
+ multiple = false,
296
+ expandIcon,
297
+ expandIconPosition = "right",
298
+ collapsible = true,
299
+ destroyOnClose = false,
300
+ showDivider = true,
301
+ className,
302
+ itemClassName,
303
+ classNames,
304
+ ref
305
+ }) => {
306
+ const isSolidColored = variant === "solid" && color !== "default";
307
+ const baseId = useId();
308
+ const [internalActiveKey, setInternalActiveKey] = useState(
309
+ defaultActiveKey ? multiple && !Array.isArray(defaultActiveKey) ? [defaultActiveKey] : defaultActiveKey : multiple ? [] : ""
310
+ );
311
+ const activeKey = controlledActiveKey !== void 0 ? controlledActiveKey : internalActiveKey;
312
+ const isActive = useCallback((key) => {
313
+ if (Array.isArray(activeKey)) {
314
+ return activeKey.includes(key);
315
+ }
316
+ return activeKey === key;
317
+ }, [activeKey]);
318
+ const handleToggle = useCallback((key, disabled) => {
319
+ if (disabled) return;
320
+ let newActiveKey;
321
+ if (multiple) {
322
+ const currentKeys = Array.isArray(activeKey) ? activeKey : activeKey ? [activeKey] : [];
323
+ newActiveKey = currentKeys.includes(key) ? currentKeys.filter((k) => k !== key) : [...currentKeys, key];
324
+ } else {
325
+ if (!collapsible && activeKey === key) {
326
+ return;
327
+ }
328
+ newActiveKey = activeKey === key ? "" : key;
329
+ }
330
+ if (controlledActiveKey === void 0) {
331
+ setInternalActiveKey(newActiveKey);
332
+ }
333
+ onChange?.(newActiveKey);
334
+ }, [multiple, activeKey, collapsible, controlledActiveKey, onChange]);
335
+ return /* @__PURE__ */ jsx(
336
+ "div",
337
+ {
338
+ ref,
339
+ "data-slot": "root",
340
+ className: cn(
341
+ "accordion_root",
342
+ accordionContainerVariants({
343
+ variant,
344
+ color,
345
+ showDivider: showDivider && variant !== "splitted"
346
+ }),
347
+ classNames?.root,
348
+ className
349
+ ),
350
+ children: items.map((item) => /* @__PURE__ */ jsx(
351
+ AccordionItemComponent,
352
+ {
353
+ item,
354
+ isActive: isActive(item.key),
355
+ baseId,
356
+ size,
357
+ color,
358
+ variant,
359
+ isSolidColored,
360
+ expandIcon,
361
+ expandIconPosition,
362
+ destroyOnClose,
363
+ onToggle: handleToggle,
364
+ classNames,
365
+ itemClassName
366
+ },
367
+ item.key
368
+ ))
369
+ }
370
+ );
371
+ }
372
+ );
373
+ Accordion.displayName = "Accordion";
374
+ var accordion_default = Accordion;
375
+
376
+ export { accordion_default };
377
+ //# sourceMappingURL=chunk-4HKPDSA6.js.map
378
+ //# sourceMappingURL=chunk-4HKPDSA6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/accordion/index.tsx"],"names":[],"mappings":"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","file":"chunk-4HKPDSA6.js","sourcesContent":["'use client'\n\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\nimport React, { useCallback, useId, useLayoutEffect, useRef, useState } from \"react\";\n\nimport { cn, iconSizes } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { AccordionItem as AccordionItemType, AccordionProps, AccordionSize } from \"./types\";\n\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: \"space-y-0 divide-y border border-slot rounded-lg overflow-hidden\",\n splitted: \"space-y-2\",\n },\n color: colorVars,\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 { variant: \"bordered\", color: \"default\", class: \"divide-border\" },\n ],\n defaultVariants: {\n variant: \"default\",\n color: \"default\",\n showDivider: true,\n },\n});\n\nconst accordionItemVariants = cva(\"\", {\n variants: {\n variant: {\n default: \"bg-transparent\",\n solid: \"bg-slot text-slot-fg\",\n soft: \"bg-slot-10\",\n bordered: \"bg-transparent border-slot-20\",\n splitted: \"border rounded-lg overflow-hidden border-slot\",\n },\n color: colorVars,\n },\n compoundVariants: [\n { variant: \"soft\", color: \"default\", class: \"bg-surface/50\" },\n { variant: \"bordered\", color: \"default\", class: \"border-border\" },\n ],\n defaultVariants: {\n variant: \"default\",\n color: \"default\",\n },\n});\n\nconst accordionHeaderVariants = cva(\n [\n \"flex items-center w-full text-left font-medium text-text-primary touch-manipulation\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:ring-slot\",\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: colorVars,\n disabled: {\n true: \"cursor-not-allowed\",\n false: \"cursor-pointer hover:bg-surface/50\",\n },\n },\n defaultVariants: {\n size: \"md\",\n color: \"default\",\n disabled: false,\n },\n },\n);\n\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\nconst getIconColor = (_color: AccordionProps[\"color\"], isExpanded: boolean) => {\n if (!isExpanded) return \"text-text-secondary\";\n return \"text-slot\";\n};\n\ninterface AccordionItemComponentProps {\n item: AccordionItemType;\n isActive: boolean;\n baseId: string;\n size: AccordionSize;\n color: NonNullable<AccordionProps[\"color\"]>;\n variant: NonNullable<AccordionProps[\"variant\"]>;\n isSolidColored: boolean;\n expandIcon: AccordionProps[\"expandIcon\"];\n expandIconPosition: NonNullable<AccordionProps[\"expandIconPosition\"]>;\n destroyOnClose: boolean;\n onToggle: (key: string, disabled?: boolean) => void;\n classNames?: AccordionProps[\"classNames\"];\n itemClassName?: string;\n}\n\nconst AccordionItemComponent = React.memo<AccordionItemComponentProps>(\n ({\n item,\n isActive: isItemActive,\n baseId,\n size,\n color,\n variant,\n isSolidColored,\n expandIcon,\n expandIconPosition,\n destroyOnClose,\n onToggle,\n classNames,\n itemClassName,\n }) => {\n const headerId = `${baseId}-header-${item.key}`;\n const panelId = `${baseId}-panel-${item.key}`;\n const panelRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const prevActiveRef = useRef(isItemActive);\n const cachedHeightRef = useRef<number>(0);\n const animRef = useRef<Animation | null>(null);\n\n // Pre-measure on hover so click has zero reflow cost\n const handlePointerEnter = useCallback(() => {\n if (contentRef.current) {\n cachedHeightRef.current = contentRef.current.scrollHeight;\n }\n }, []);\n\n // Set initial height before first paint (no animation on mount)\n useLayoutEffect(() => {\n if (panelRef.current) {\n panelRef.current.style.height = isItemActive ? \"auto\" : \"0\";\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // WAAPI animation — browser pre-computes full path, cancellable on rapid clicks\n useLayoutEffect(() => {\n const panel = panelRef.current;\n const content = contentRef.current;\n if (!panel || !content) return;\n\n const wasActive = prevActiveRef.current;\n prevActiveRef.current = isItemActive;\n if (isItemActive === wasActive) return;\n\n if (animRef.current) animRef.current.cancel();\n\n const height = cachedHeightRef.current || content.scrollHeight;\n cachedHeightRef.current = 0;\n\n // Check for prefers-reduced-motion\n const prefersReducedMotion = typeof window !== 'undefined' && window.matchMedia?.('(prefers-reduced-motion: reduce)').matches;\n const duration = prefersReducedMotion ? 0 : 200;\n\n const anim = panel.animate(\n isItemActive\n ? [{ height: \"0px\" }, { height: `${height}px` }]\n : [{ height: `${height}px` }, { height: \"0px\" }],\n { duration, easing: \"ease-out\", fill: \"forwards\" },\n );\n\n anim.onfinish = () => {\n panel.style.height = isItemActive ? \"auto\" : \"0\";\n anim.cancel();\n };\n\n animRef.current = anim;\n }, [isItemActive]);\n\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 isSolidColored ? \"text-inherit\" : getIconColor(color, isExpanded),\n iconSizes[size],\n )}\n />\n );\n };\n\n return (\n <div\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={() => onToggle(item.key, item.disabled)}\n onPointerEnter={handlePointerEnter}\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 {expandIconPosition === \"left\" && renderExpandIcon(isItemActive)}\n\n {item.icon && (\n <span\n data-slot=\"icon\"\n className={cn(\n \"accordion_icon\",\n \"shrink-0\",\n isSolidColored ? \"text-inherit\" : getIconColor(color, isItemActive),\n classNames?.icon,\n )}\n >\n {item.icon}\n </span>\n )}\n\n <div className=\"flex-1 min-w-0\">\n <div\n className={cn(\n !isSolidColored &&\n isItemActive &&\n color !== \"default\" &&\n \"text-slot\",\n )}\n >\n {item.title}\n </div>\n {item.subtitle && (\n <div className={cn(\n \"font-normal mt-0.5\",\n isSolidColored ? \"text-inherit opacity-80\" : \"text-text-secondary\",\n )}>\n {item.subtitle}\n </div>\n )}\n </div>\n\n {item.extra && (\n <span className={cn(\n \"shrink-0\",\n isSolidColored ? \"text-inherit opacity-80\" : \"text-text-secondary\",\n )}>\n {item.extra}\n </span>\n )}\n\n {expandIconPosition === \"right\" && renderExpandIcon(isItemActive)}\n </button>\n\n <div\n ref={panelRef}\n id={panelId}\n role=\"region\"\n aria-labelledby={headerId}\n aria-hidden={!isItemActive}\n className=\"overflow-hidden\"\n style={{ contain: \"content\" }}\n >\n <div ref={contentRef}>\n {(!destroyOnClose || isItemActive) && (\n <div\n data-slot=\"content\"\n className={cn(\n \"accordion_content\",\n accordionContentVariants({ size }),\n isSolidColored && \"text-inherit opacity-90\",\n classNames?.content,\n )}\n >\n {item.content}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n },\n);\n\nAccordionItemComponent.displayName = \"AccordionItem\";\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 = true,\n destroyOnClose = false,\n showDivider = true,\n className,\n itemClassName,\n classNames,\n ref,\n }) => {\n const isSolidColored = variant === \"solid\" && color !== \"default\";\n const baseId = useId();\n const [internalActiveKey, setInternalActiveKey] = useState<\n string | string[]\n >(\n defaultActiveKey\n ? multiple && !Array.isArray(defaultActiveKey)\n ? [defaultActiveKey]\n : defaultActiveKey\n : multiple\n ? []\n : \"\",\n );\n\n const activeKey =\n controlledActiveKey !== undefined\n ? controlledActiveKey\n : internalActiveKey;\n\n const isActive = useCallback((key: string) => {\n if (Array.isArray(activeKey)) {\n return activeKey.includes(key);\n }\n return activeKey === key;\n }, [activeKey]);\n\n const handleToggle = useCallback((key: string, disabled?: boolean) => {\n if (disabled) return;\n\n let newActiveKey: string | string[];\n\n if (multiple) {\n const currentKeys = Array.isArray(activeKey)\n ? activeKey\n : activeKey\n ? [activeKey]\n : [];\n newActiveKey = currentKeys.includes(key)\n ? currentKeys.filter((k) => k !== key)\n : [...currentKeys, key];\n } else {\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 }, [multiple, activeKey, collapsible, controlledActiveKey, onChange]);\n\n return (\n <div\n ref={ref}\n data-slot=\"root\"\n className={cn(\n \"accordion_root\",\n accordionContainerVariants({\n variant,\n color,\n showDivider: showDivider && variant !== \"splitted\",\n }),\n classNames?.root,\n className,\n )}\n >\n {items.map((item) => (\n <AccordionItemComponent\n key={item.key}\n item={item}\n isActive={isActive(item.key)}\n baseId={baseId}\n size={size as AccordionSize}\n color={color}\n variant={variant}\n isSolidColored={isSolidColored}\n expandIcon={expandIcon}\n expandIconPosition={expandIconPosition}\n destroyOnClose={destroyOnClose}\n onToggle={handleToggle}\n classNames={classNames}\n itemClassName={itemClassName}\n />\n ))}\n </div>\n );\n },\n);\n\nAccordion.displayName = \"Accordion\";\n\nexport type * from \"./types\";\nexport default Accordion;\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-NGYLRX6F.js';
1
+ import { cn } from './chunk-RAS6HUEI.js';
2
2
  import { useState, useRef, useCallback } from 'react';
3
3
  import { jsx, Fragment } from 'react/jsx-runtime';
4
4
 
@@ -70,5 +70,5 @@ var RippleContainer = ({ ripples, className, onAnimationEnd }) => {
70
70
  };
71
71
 
72
72
  export { RippleContainer, useRipple };
73
- //# sourceMappingURL=chunk-OFUPJH35.js.map
74
- //# sourceMappingURL=chunk-OFUPJH35.js.map
73
+ //# sourceMappingURL=chunk-4TEZWGX7.js.map
74
+ //# sourceMappingURL=chunk-4TEZWGX7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/useRipple.tsx"],"names":[],"mappings":"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","file":"chunk-OFUPJH35.js","sourcesContent":["import React, { useCallback, useRef, useState } from 'react'\n\nimport { cn } from '../utils'\n\ninterface RippleEntry {\n key: number\n x: number\n y: number\n size: number\n}\n\n/**\n * Lightweight ripple effect hook — GPU-composited (transform + opacity only).\n * Returns ripple state and handlers to attach to any interactive element.\n *\n * Animation uses only `transform: scale()` and `opacity` for 60fps performance.\n */\nexport function useRipple(enabled: boolean) {\n const [ripples, setRipples] = useState<RippleEntry[]>([])\n const counter = useRef(0)\n\n const onPointerDown = useCallback(\n (e: React.PointerEvent<HTMLElement>) => {\n if (!enabled) return\n\n const el = e.currentTarget\n const rect = el.getBoundingClientRect()\n const size = Math.max(rect.width, rect.height) * 2\n const x = e.clientX - rect.left - size / 2\n const y = e.clientY - rect.top - size / 2\n\n const key = ++counter.current\n setRipples((prev) => [...prev, { key, x, y, size }])\n },\n [enabled],\n )\n\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (!enabled) return\n if (e.key !== 'Enter' && e.key !== ' ') return\n\n const el = e.currentTarget\n const rect = el.getBoundingClientRect()\n const size = Math.max(rect.width, rect.height) * 2\n // For keyboard events, center the ripple\n const x = rect.width / 2 - size / 2\n const y = rect.height / 2 - size / 2\n\n const key = ++counter.current\n setRipples((prev) => [...prev, { key, x, y, size }])\n },\n [enabled],\n )\n\n const onAnimationEnd = useCallback((key: number) => {\n setRipples((prev) => prev.filter((r) => r.key !== key))\n }, [])\n\n return { ripples, onPointerDown, onKeyDown, onAnimationEnd } as const\n}\n\n// GPU-only animation (transform + opacity) — shared ripple span\nconst RippleSpan: React.FC<{\n x: number\n y: number\n size: number\n className?: string\n onAnimationEnd: () => void\n}> = ({ x, y, size, className, onAnimationEnd }) => (\n <span\n className={cn(\n 'absolute rounded-full bg-current opacity-25 pointer-events-none animate-[ripple_600ms_ease-out_forwards]',\n className,\n )}\n style={{\n left: x,\n top: y,\n width: size,\n height: size,\n }}\n onAnimationEnd={onAnimationEnd}\n aria-hidden=\"true\"\n />\n)\n\n/**\n * Renders all active ripple spans. Drop this inside any `relative overflow-hidden` element.\n */\nexport const RippleContainer: React.FC<{\n ripples: RippleEntry[]\n className?: string\n onAnimationEnd: (key: number) => void\n}> = ({ ripples, className, onAnimationEnd }) => {\n if (ripples.length === 0) return null\n return (\n <>\n {ripples.map((r) => (\n <RippleSpan\n key={r.key}\n x={r.x}\n y={r.y}\n size={r.size}\n className={className}\n onAnimationEnd={() => onAnimationEnd(r.key)}\n />\n ))}\n </>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/hooks/useRipple.tsx"],"names":[],"mappings":"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","file":"chunk-4TEZWGX7.js","sourcesContent":["import React, { useCallback, useRef, useState } from 'react'\n\nimport { cn } from '../utils'\n\ninterface RippleEntry {\n key: number\n x: number\n y: number\n size: number\n}\n\n/**\n * Lightweight ripple effect hook — GPU-composited (transform + opacity only).\n * Returns ripple state and handlers to attach to any interactive element.\n *\n * Animation uses only `transform: scale()` and `opacity` for 60fps performance.\n */\nexport function useRipple(enabled: boolean) {\n const [ripples, setRipples] = useState<RippleEntry[]>([])\n const counter = useRef(0)\n\n const onPointerDown = useCallback(\n (e: React.PointerEvent<HTMLElement>) => {\n if (!enabled) return\n\n const el = e.currentTarget\n const rect = el.getBoundingClientRect()\n const size = Math.max(rect.width, rect.height) * 2\n const x = e.clientX - rect.left - size / 2\n const y = e.clientY - rect.top - size / 2\n\n const key = ++counter.current\n setRipples((prev) => [...prev, { key, x, y, size }])\n },\n [enabled],\n )\n\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (!enabled) return\n if (e.key !== 'Enter' && e.key !== ' ') return\n\n const el = e.currentTarget\n const rect = el.getBoundingClientRect()\n const size = Math.max(rect.width, rect.height) * 2\n // For keyboard events, center the ripple\n const x = rect.width / 2 - size / 2\n const y = rect.height / 2 - size / 2\n\n const key = ++counter.current\n setRipples((prev) => [...prev, { key, x, y, size }])\n },\n [enabled],\n )\n\n const onAnimationEnd = useCallback((key: number) => {\n setRipples((prev) => prev.filter((r) => r.key !== key))\n }, [])\n\n return { ripples, onPointerDown, onKeyDown, onAnimationEnd } as const\n}\n\n// GPU-only animation (transform + opacity) — shared ripple span\nconst RippleSpan: React.FC<{\n x: number\n y: number\n size: number\n className?: string\n onAnimationEnd: () => void\n}> = ({ x, y, size, className, onAnimationEnd }) => (\n <span\n className={cn(\n 'absolute rounded-full bg-current opacity-25 pointer-events-none animate-[ripple_600ms_ease-out_forwards]',\n className,\n )}\n style={{\n left: x,\n top: y,\n width: size,\n height: size,\n }}\n onAnimationEnd={onAnimationEnd}\n aria-hidden=\"true\"\n />\n)\n\n/**\n * Renders all active ripple spans. Drop this inside any `relative overflow-hidden` element.\n */\nexport const RippleContainer: React.FC<{\n ripples: RippleEntry[]\n className?: string\n onAnimationEnd: (key: number) => void\n}> = ({ ripples, className, onAnimationEnd }) => {\n if (ripples.length === 0) return null\n return (\n <>\n {ripples.map((r) => (\n <RippleSpan\n key={r.key}\n x={r.x}\n y={r.y}\n size={r.size}\n className={className}\n onAnimationEnd={() => onAnimationEnd(r.key)}\n />\n ))}\n </>\n )\n}\n"]}