@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
@@ -1,68 +1,11 @@
1
- import { componentColors } from './chunk-POXI7JJ4.js';
2
- import { cn } from './chunk-NGYLRX6F.js';
1
+ import { colorVars } from './chunk-G6QIIWKU.js';
2
+ import { cn } from './chunk-RAS6HUEI.js';
3
3
  import { cva } from 'class-variance-authority';
4
- import React, { useState, useRef, useId, useLayoutEffect, useEffect, useCallback } from 'react';
4
+ import React, { useState, useRef, useId, useCallback, useLayoutEffect, useEffect } from 'react';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
7
7
  var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
8
- var pillActiveClasses = {
9
- default: "text-text-primary",
10
- primary: "text-white",
11
- secondary: "text-white",
12
- accent: "text-white",
13
- success: "text-white",
14
- error: "text-white",
15
- warning: "text-white",
16
- info: "text-white"
17
- };
18
- var defaultActiveClasses = {
19
- default: "text-text-primary",
20
- primary: "text-primary",
21
- secondary: "text-secondary",
22
- accent: "text-accent",
23
- success: "text-success",
24
- error: "text-error",
25
- warning: "text-warning",
26
- info: "text-info"
27
- };
28
- var softActiveClasses = {
29
- default: "text-text-primary",
30
- primary: "text-primary",
31
- secondary: "text-secondary",
32
- accent: "text-accent",
33
- success: "text-success",
34
- error: "text-error",
35
- warning: "text-warning",
36
- info: "text-info"
37
- };
38
- var pillIndicatorClasses = {
39
- default: "bg-background",
40
- primary: "bg-primary",
41
- secondary: "bg-secondary",
42
- accent: "bg-accent",
43
- success: "bg-success",
44
- error: "bg-error",
45
- warning: "bg-warning",
46
- info: "bg-info"
47
- };
48
- var underlineIndicatorClasses = {
49
- default: "bg-border",
50
- primary: "bg-primary",
51
- secondary: "bg-secondary",
52
- accent: "bg-accent",
53
- success: "bg-success",
54
- error: "bg-error",
55
- warning: "bg-warning",
56
- info: "bg-info"
57
- };
58
- var createActiveTabVariants = (variant, classMap) => {
59
- return componentColors.map((color) => ({
60
- variant,
61
- color,
62
- active: true,
63
- className: classMap[color] || classMap.default
64
- }));
65
- };
8
+ var componentColors = ["default", "primary", "secondary", "accent", "success", "error", "warning", "info"];
66
9
  var tabListVariants = cva("flex relative", {
67
10
  variants: {
68
11
  size: {
@@ -121,14 +64,32 @@ var tabItemVariants = cva(
121
64
  active: false,
122
65
  className: "text-text-secondary hover:text-text-primary"
123
66
  })),
124
- // Active pill variant
125
- ...createActiveTabVariants("pill", pillActiveClasses),
126
- // Active default variant
127
- ...createActiveTabVariants("default", defaultActiveClasses),
128
- // Active solid variant
129
- ...createActiveTabVariants("solid", defaultActiveClasses),
130
- // Active soft variant
131
- ...createActiveTabVariants("soft", softActiveClasses),
67
+ // Active pill variant - uses foreground text
68
+ ...componentColors.map((color) => ({
69
+ variant: "pill",
70
+ color,
71
+ active: true,
72
+ className: "text-slot-fg"
73
+ })),
74
+ // Active default/solid/soft variants - uses accent text
75
+ ...componentColors.map((color) => ({
76
+ variant: "default",
77
+ color,
78
+ active: true,
79
+ className: "text-slot"
80
+ })),
81
+ ...componentColors.map((color) => ({
82
+ variant: "solid",
83
+ color,
84
+ active: true,
85
+ className: "text-slot"
86
+ })),
87
+ ...componentColors.map((color) => ({
88
+ variant: "soft",
89
+ color,
90
+ active: true,
91
+ className: "text-slot"
92
+ })),
132
93
  // Inactive pill variant hover
133
94
  ...componentColors.map((color) => ({
134
95
  variant: "pill",
@@ -168,31 +129,67 @@ var Tabs = React.memo(
168
129
  const [hasInitialized, setHasInitialized] = useState(false);
169
130
  const uniqueId = useId();
170
131
  const activeKey = controlledActiveKey !== void 0 ? controlledActiveKey : internalActiveKey;
171
- useIsomorphicLayoutEffect(() => {
132
+ const updateIndicatorPosition = useCallback(() => {
172
133
  const activeTab = tabRefs.current.get(activeKey);
173
134
  const tabList = tabListRef.current;
174
135
  if (!activeTab || !tabList) return;
175
- const listRect = tabList.getBoundingClientRect();
176
- const tabRect = activeTab.getBoundingClientRect();
136
+ const left = activeTab.offsetLeft;
137
+ const width = activeTab.offsetWidth;
138
+ const height = activeTab.offsetHeight;
177
139
  const isPill2 = variant === "pill";
178
140
  if (isPill2) {
141
+ let paddingLeft = 0;
142
+ if (typeof window !== "undefined") {
143
+ const computedStyle = window.getComputedStyle(tabList);
144
+ paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;
145
+ }
179
146
  setIndicatorStyle({
180
- transform: `translateX(${tabRect.left - listRect.left - 2}px)`,
181
- width: `${tabRect.width}px`,
182
- height: `${tabRect.height}px`,
147
+ transform: `translateX(${left - paddingLeft}px)`,
148
+ width: `${width}px`,
149
+ height: `${height}px`,
183
150
  opacity: 1
184
151
  });
185
152
  } else {
186
153
  setIndicatorStyle({
187
- transform: `translateX(${tabRect.left - listRect.left - 2}px)`,
188
- width: `${tabRect.width}px`,
154
+ transform: `translateX(${left}px)`,
155
+ width: `${width}px`,
189
156
  opacity: 1
190
157
  });
191
158
  }
192
159
  if (!hasInitialized) {
193
160
  requestAnimationFrame(() => setHasInitialized(true));
194
161
  }
195
- }, [activeKey, items, variant, size, hasInitialized]);
162
+ }, [activeKey, variant, hasInitialized]);
163
+ useIsomorphicLayoutEffect(() => {
164
+ updateIndicatorPosition();
165
+ }, [updateIndicatorPosition, items, size]);
166
+ useEffect(() => {
167
+ if (typeof window === "undefined") return;
168
+ const handleResize = () => {
169
+ requestAnimationFrame(() => {
170
+ updateIndicatorPosition();
171
+ });
172
+ };
173
+ window.addEventListener("resize", handleResize);
174
+ window.addEventListener("orientationchange", handleResize);
175
+ return () => {
176
+ window.removeEventListener("resize", handleResize);
177
+ window.removeEventListener("orientationchange", handleResize);
178
+ };
179
+ }, [updateIndicatorPosition]);
180
+ useEffect(() => {
181
+ const tabList = tabListRef.current;
182
+ if (!tabList || typeof ResizeObserver === "undefined") return;
183
+ const resizeObserver = new ResizeObserver(() => {
184
+ requestAnimationFrame(() => {
185
+ updateIndicatorPosition();
186
+ });
187
+ });
188
+ resizeObserver.observe(tabList);
189
+ return () => {
190
+ resizeObserver.disconnect();
191
+ };
192
+ }, [updateIndicatorPosition]);
196
193
  const handleTabClick = useCallback(
197
194
  (key, disabled) => {
198
195
  if (disabled) return;
@@ -241,12 +238,11 @@ var Tabs = React.memo(
241
238
  );
242
239
  const activeItem = items.find((item) => item.key === activeKey);
243
240
  const isPill = variant === "pill";
244
- const indicatorColorClass = isPill ? pillIndicatorClasses[color] || pillIndicatorClasses.default : underlineIndicatorClasses[color] || underlineIndicatorClasses.default;
245
241
  return /* @__PURE__ */ jsxs(
246
242
  "div",
247
243
  {
248
244
  "data-slot": "tabs_root",
249
- className: cn("tabs_root w-full", classNames?.root, className),
245
+ className: cn("tabs_root w-full", colorVars[color], classNames?.root, className),
250
246
  children: [
251
247
  /* @__PURE__ */ jsxs(
252
248
  "div",
@@ -256,7 +252,7 @@ var Tabs = React.memo(
256
252
  "aria-orientation": "horizontal",
257
253
  "data-slot": "tabs_list",
258
254
  className: cn(
259
- "tabs_list",
255
+ "tabs_list overflow-x-auto",
260
256
  tabListVariants({ size, variant }),
261
257
  variant !== "pill" && "border-border",
262
258
  classNames?.list
@@ -268,7 +264,7 @@ var Tabs = React.memo(
268
264
  "data-slot": "tabs_indicator",
269
265
  className: cn(
270
266
  "tabs_indicator absolute pointer-events-none",
271
- isPill ? cn("rounded-md shadow-sm top-0.5", indicatorColorClass) : cn("bottom-0 h-0.5 rounded-full", indicatorColorClass),
267
+ isPill ? cn("rounded-md shadow-sm top-0.5", "bg-slot") : cn("bottom-0 h-0.5 rounded-full", "bg-slot"),
272
268
  hasInitialized ? "transition-[transform,width] duration-300 ease-out" : "",
273
269
  classNames?.indicator
274
270
  ),
@@ -326,7 +322,6 @@ var Tabs = React.memo(
326
322
  id: `panel-${uniqueId}-${activeItem.key}`,
327
323
  role: "tabpanel",
328
324
  "aria-labelledby": `tab-${uniqueId}-${activeItem.key}`,
329
- tabIndex: 0,
330
325
  "data-slot": "tabs_panel",
331
326
  className: cn(
332
327
  "tabs_panel",
@@ -345,5 +340,5 @@ Tabs.displayName = "Tabs";
345
340
  var tabs_default = Tabs;
346
341
 
347
342
  export { tabs_default };
348
- //# sourceMappingURL=chunk-6G3BMY4N.js.map
349
- //# sourceMappingURL=chunk-6G3BMY4N.js.map
343
+ //# sourceMappingURL=chunk-I5AD247M.js.map
344
+ //# sourceMappingURL=chunk-I5AD247M.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tabs/index.tsx"],"names":["isPill"],"mappings":"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","file":"chunk-I5AD247M.js","sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport React, {\n useState,\n useId,\n useCallback,\n useRef,\n useLayoutEffect,\n useEffect,\n} from \"react\";\n\nimport { cn } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { TabsColor, TabsProps } from \"./types\";\n\n// Use useLayoutEffect on client, useEffect on server (SSR safe)\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// Component colors for compound variants\nconst componentColors = ['default', 'primary', 'secondary', 'accent', 'success', 'error', 'warning', 'info'] as const;\n\nconst tabListVariants = cva(\"flex relative\", {\n variants: {\n size: {\n xs: \"gap-(--tabs-gap-xs)\",\n sm: \"gap-(--tabs-gap-sm)\",\n md: \"gap-(--tabs-gap-md)\",\n lg: \"gap-(--tabs-gap-lg)\",\n },\n variant: {\n default: \"border-b\",\n solid: \"border-b\",\n soft: \"border-b\",\n pill: \"bg-surface p-0.5 rounded-lg border border-border gap-0 w-fit\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n});\n\nconst tabItemVariants = cva(\n \"relative z-[1] font-medium transition-colors duration-200 ease-out cursor-pointer flex items-center gap-2\",\n {\n variants: {\n size: {\n xs: \"text-xs px-(--tabs-padding-x-xs) py-(--tabs-padding-y-xs)\",\n sm: \"text-sm px-(--tabs-padding-x-sm) py-(--tabs-padding-y-sm)\",\n md: \"text-base px-(--tabs-padding-x-md) py-(--tabs-padding-y-md)\",\n lg: \"text-lg px-(--tabs-padding-x-lg) py-(--tabs-padding-y-lg)\",\n },\n variant: {\n default: \"pb-2 -mb-px\",\n solid: \"pb-2 -mb-px\",\n soft: \"pb-2 -mb-px\",\n pill: \"rounded-md\",\n },\n color: {\n default: \"\",\n primary: \"\",\n secondary: \"\",\n accent: \"\",\n success: \"\",\n error: \"\",\n warning: \"\",\n info: \"\",\n },\n active: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Inactive states (all variants)\n ...componentColors.map((color) => ({\n color: color as TabsColor,\n active: false as const,\n className: \"text-text-secondary hover:text-text-primary\",\n })),\n\n // Active pill variant - uses foreground text\n ...componentColors.map((color) => ({\n variant: \"pill\" as const,\n color: color as TabsColor,\n active: true as const,\n className: \"text-slot-fg\",\n })),\n\n // Active default/solid/soft variants - uses accent text\n ...componentColors.map((color) => ({\n variant: \"default\" as const,\n color: color as TabsColor,\n active: true as const,\n className: \"text-slot\",\n })),\n ...componentColors.map((color) => ({\n variant: \"solid\" as const,\n color: color as TabsColor,\n active: true as const,\n className: \"text-slot\",\n })),\n ...componentColors.map((color) => ({\n variant: \"soft\" as const,\n color: color as TabsColor,\n active: true as const,\n className: \"text-slot\",\n })),\n\n // Inactive pill variant hover\n ...componentColors.map((color) => ({\n variant: \"pill\" as const,\n color: color as TabsColor,\n active: false as const,\n className: \"bg-transparent hover:bg-background/50\",\n })),\n ],\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n color: \"primary\",\n active: false,\n },\n },\n);\n\nconst Tabs = React.memo<TabsProps>(\n ({\n items,\n defaultActiveKey,\n activeKey: controlledActiveKey,\n color = \"primary\",\n size = \"md\",\n variant = \"default\",\n onChange,\n className,\n classNames,\n }) => {\n const [internalActiveKey, setInternalActiveKey] = useState(\n defaultActiveKey || items[0]?.key || \"\",\n );\n const tabListRef = useRef<HTMLDivElement>(null);\n const tabRefs = useRef<Map<string, HTMLButtonElement>>(new Map());\n const [indicatorStyle, setIndicatorStyle] = useState<React.CSSProperties>(\n {},\n );\n const [hasInitialized, setHasInitialized] = useState(false);\n\n // Generate unique IDs for accessibility\n const uniqueId = useId();\n\n const activeKey =\n controlledActiveKey !== undefined\n ? controlledActiveKey\n : internalActiveKey;\n\n // Measure and position the sliding indicator\n const updateIndicatorPosition = useCallback(() => {\n const activeTab = tabRefs.current.get(activeKey);\n const tabList = tabListRef.current;\n if (!activeTab || !tabList) return;\n\n // Use offsetLeft for parent-relative positioning (more reliable than getBoundingClientRect)\n const left = activeTab.offsetLeft;\n const width = activeTab.offsetWidth;\n const height = activeTab.offsetHeight;\n\n const isPill = variant === \"pill\";\n\n if (isPill) {\n // For pill variant, account for padding (SSR-safe guard)\n let paddingLeft = 0;\n if (typeof window !== \"undefined\") {\n const computedStyle = window.getComputedStyle(tabList);\n paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;\n }\n \n setIndicatorStyle({\n transform: `translateX(${left - paddingLeft}px)`,\n width: `${width}px`,\n height: `${height}px`,\n opacity: 1,\n });\n } else {\n setIndicatorStyle({\n transform: `translateX(${left}px)`,\n width: `${width}px`,\n opacity: 1,\n });\n }\n\n // Enable transitions after initial positioning\n if (!hasInitialized) {\n requestAnimationFrame(() => setHasInitialized(true));\n }\n }, [activeKey, variant, hasInitialized]);\n\n useIsomorphicLayoutEffect(() => {\n updateIndicatorPosition();\n }, [updateIndicatorPosition, items, size]);\n\n // Handle window resize and orientation changes (SSR-safe)\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const handleResize = () => {\n requestAnimationFrame(() => {\n updateIndicatorPosition();\n });\n };\n\n window.addEventListener('resize', handleResize);\n window.addEventListener('orientationchange', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n window.removeEventListener('orientationchange', handleResize);\n };\n }, [updateIndicatorPosition]);\n\n // Observe tab list resize (handles mobile reflows, font size changes, etc.)\n useEffect(() => {\n const tabList = tabListRef.current;\n if (!tabList || typeof ResizeObserver === 'undefined') return;\n\n const resizeObserver = new ResizeObserver(() => {\n requestAnimationFrame(() => {\n updateIndicatorPosition();\n });\n });\n\n resizeObserver.observe(tabList);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [updateIndicatorPosition]);\n\n const handleTabClick = useCallback(\n (key: string, disabled?: boolean) => {\n if (disabled) return;\n\n if (controlledActiveKey === undefined) {\n setInternalActiveKey(key);\n }\n onChange?.(key);\n },\n [controlledActiveKey, onChange],\n );\n\n // Handle keyboard navigation (arrow keys, Home, End)\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>, currentIndex: number) => {\n const enabledIndices = items\n .map((item, i) => (!item.disabled ? i : -1))\n .filter((i): i is number => i !== -1);\n const currentEnabledIndex = enabledIndices.indexOf(currentIndex);\n\n let newIndex: number | undefined;\n\n switch (event.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n event.preventDefault();\n newIndex =\n enabledIndices[\n currentEnabledIndex > 0\n ? currentEnabledIndex - 1\n : enabledIndices.length - 1\n ];\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n event.preventDefault();\n newIndex =\n enabledIndices[\n currentEnabledIndex < enabledIndices.length - 1\n ? currentEnabledIndex + 1\n : 0\n ];\n break;\n case \"Home\":\n event.preventDefault();\n newIndex = enabledIndices[0];\n break;\n case \"End\":\n event.preventDefault();\n newIndex = enabledIndices[enabledIndices.length - 1];\n break;\n }\n\n if (newIndex !== undefined) {\n const newItem = items[newIndex];\n if (newItem) {\n handleTabClick(newItem.key);\n // Focus the new tab\n const btn = tabRefs.current.get(newItem.key);\n btn?.focus();\n }\n }\n },\n [items, handleTabClick],\n );\n\n const activeItem = items.find((item) => item.key === activeKey);\n const isPill = variant === \"pill\";\n\n return (\n <div\n data-slot=\"tabs_root\"\n className={cn(\"tabs_root w-full\", colorVars[color], classNames?.root, className)}\n >\n <div\n ref={tabListRef}\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n data-slot=\"tabs_list\"\n className={cn(\n \"tabs_list overflow-x-auto\",\n tabListVariants({ size, variant }),\n variant !== \"pill\" && \"border-border\",\n classNames?.list,\n )}\n >\n {/* Sliding indicator */}\n <span\n data-slot=\"tabs_indicator\"\n className={cn(\n \"tabs_indicator absolute pointer-events-none\",\n isPill\n ? cn(\"rounded-md shadow-sm top-0.5\", \"bg-slot\")\n : cn(\"bottom-0 h-0.5 rounded-full\", \"bg-slot\"),\n hasInitialized\n ? \"transition-[transform,width] duration-300 ease-out\"\n : \"\",\n classNames?.indicator,\n )}\n style={indicatorStyle}\n aria-hidden=\"true\"\n />\n\n {items.map((item, index) => {\n const isActive = item.key === activeKey;\n const tabId = `tab-${uniqueId}-${item.key}`;\n const panelId = `panel-${uniqueId}-${item.key}`;\n\n return (\n <button\n key={item.key}\n ref={(el) => {\n if (el) tabRefs.current.set(item.key, el);\n else tabRefs.current.delete(item.key);\n }}\n id={tabId}\n role=\"tab\"\n type=\"button\"\n aria-selected={isActive}\n aria-controls={panelId}\n tabIndex={isActive ? 0 : -1}\n data-slot=\"tabs_tab\"\n className={cn(\n \"tabs_tab\",\n tabItemVariants({\n size,\n variant,\n color,\n active: isActive,\n }),\n item.disabled && \"opacity-50 cursor-not-allowed\",\n classNames?.tab,\n isActive && classNames?.tabActive,\n )}\n onClick={() => handleTabClick(item.key, item.disabled)}\n onKeyDown={(e) => handleKeyDown(e, index)}\n disabled={item.disabled}\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {item.label}\n </button>\n );\n })}\n </div>\n\n {activeItem?.content && (\n <div\n id={`panel-${uniqueId}-${activeItem.key}`}\n role=\"tabpanel\"\n aria-labelledby={`tab-${uniqueId}-${activeItem.key}`}\n data-slot=\"tabs_panel\"\n className={cn(\n \"tabs_panel\",\n \"py-4 animate-in fade-in slide-in-from-bottom-2 duration-300\",\n classNames?.panel,\n )}\n >\n {activeItem?.content}\n </div>\n )}\n </div>\n );\n },\n);\n\nTabs.displayName = \"Tabs\";\n\nexport type { TabsClassNames } from \"./types\";\nexport type * from \"./types\";\nexport default Tabs;\n"]}
@@ -0,0 +1,99 @@
1
+ import { useRipple, RippleContainer } from './chunk-4TEZWGX7.js';
2
+ import { colorVars } from './chunk-G6QIIWKU.js';
3
+ import { cn } from './chunk-RAS6HUEI.js';
4
+ import { cva } from 'class-variance-authority';
5
+ import React, { useState } from 'react';
6
+ import { jsxs, jsx } from 'react/jsx-runtime';
7
+
8
+ var getToggleClasses = (color, variant, isActive) => {
9
+ const baseColor = colorVars[color] || colorVars.default;
10
+ if (!isActive) {
11
+ return cn(baseColor, "text-text-secondary hover:text-slot hover:bg-slot-10");
12
+ }
13
+ if (variant === "solid") {
14
+ return cn(baseColor, "bg-slot text-slot-fg");
15
+ }
16
+ if (variant === "soft") {
17
+ return cn(baseColor, "bg-slot-20 text-slot");
18
+ }
19
+ return cn(baseColor, "border-slot bg-slot-10 text-slot");
20
+ };
21
+ var singleToggleVariants = cva(
22
+ "inline-flex items-center gap-2 font-medium transition-colors cursor-pointer border rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background",
23
+ {
24
+ variants: {
25
+ size: {
26
+ xs: "text-xs px-2 py-1",
27
+ sm: "text-sm px-3 py-1.5",
28
+ md: "text-base px-4 py-2",
29
+ lg: "text-lg px-5 py-2.5"
30
+ }
31
+ },
32
+ defaultVariants: {
33
+ size: "md"
34
+ }
35
+ }
36
+ );
37
+ var Toggle = React.memo(
38
+ ({
39
+ pressed: controlledPressed,
40
+ defaultPressed = false,
41
+ color = "primary",
42
+ size = "md",
43
+ variant = "default",
44
+ onChange,
45
+ disabled = false,
46
+ icon,
47
+ children,
48
+ "aria-label": ariaLabel,
49
+ className,
50
+ classNames,
51
+ ref
52
+ }) => {
53
+ const [internalPressed, setInternalPressed] = useState(defaultPressed);
54
+ const { ripples, onPointerDown: ripplePointerDown, onKeyDown: rippleKeyDown, onAnimationEnd: rippleAnimationEnd } = useRipple(!disabled);
55
+ const pressed = controlledPressed !== void 0 ? controlledPressed : internalPressed;
56
+ const handleClick = () => {
57
+ if (disabled) return;
58
+ const newPressed = !pressed;
59
+ if (controlledPressed === void 0) {
60
+ setInternalPressed(newPressed);
61
+ }
62
+ onChange?.(newPressed);
63
+ };
64
+ return /* @__PURE__ */ jsxs(
65
+ "button",
66
+ {
67
+ "data-slot": "root",
68
+ ref,
69
+ type: "button",
70
+ className: cn(
71
+ "toggle_root",
72
+ singleToggleVariants({ size }),
73
+ getToggleClasses(color, variant, pressed),
74
+ "border relative overflow-hidden",
75
+ disabled && "opacity-50 cursor-not-allowed",
76
+ classNames?.root,
77
+ className
78
+ ),
79
+ onClick: handleClick,
80
+ onPointerDown: ripplePointerDown,
81
+ onKeyDown: rippleKeyDown,
82
+ disabled,
83
+ "aria-pressed": pressed,
84
+ "aria-label": ariaLabel,
85
+ children: [
86
+ icon,
87
+ children,
88
+ /* @__PURE__ */ jsx(RippleContainer, { ripples, onAnimationEnd: rippleAnimationEnd })
89
+ ]
90
+ }
91
+ );
92
+ }
93
+ );
94
+ Toggle.displayName = "Toggle";
95
+ var toggle_default = Toggle;
96
+
97
+ export { toggle_default };
98
+ //# sourceMappingURL=chunk-I7HJBHQU.js.map
99
+ //# sourceMappingURL=chunk-I7HJBHQU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/toggle/index.tsx"],"names":[],"mappings":"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","file":"chunk-I7HJBHQU.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport React, { useState } from 'react'\n\nimport { useRipple, RippleContainer } from '../hooks/useRipple'\nimport { cn } from '../utils'\nimport { colorVars } from '../variants'\nimport type { SingleToggleProps } from './types'\n\nconst getToggleClasses = (\n color: string,\n variant: string,\n isActive: boolean,\n) => {\n const baseColor = colorVars[color as keyof typeof colorVars] || colorVars.default\n\n if (!isActive) {\n // Inactive: text-secondary with hover to accent color\n return cn(baseColor, 'text-text-secondary hover:text-slot hover:bg-slot-10')\n }\n\n // Active state\n if (variant === 'solid') {\n return cn(baseColor, 'bg-slot text-slot-fg')\n }\n if (variant === 'soft') {\n return cn(baseColor, 'bg-slot-20 text-slot')\n }\n // default variant\n return cn(baseColor, 'border-slot bg-slot-10 text-slot')\n}\n\nconst singleToggleVariants = cva(\n 'inline-flex items-center gap-2 font-medium transition-colors cursor-pointer border rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n {\n variants: {\n size: {\n xs: 'text-xs px-2 py-1',\n sm: 'text-sm px-3 py-1.5',\n md: 'text-base px-4 py-2',\n lg: 'text-lg px-5 py-2.5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n)\n\nconst Toggle = React.memo<SingleToggleProps>(\n ({\n pressed: controlledPressed,\n defaultPressed = false,\n color = 'primary',\n size = 'md',\n variant = 'default',\n onChange,\n disabled = false,\n icon,\n children,\n 'aria-label': ariaLabel,\n className,\n classNames,\n ref,\n }) => {\n const [internalPressed, setInternalPressed] = useState(defaultPressed)\n const { ripples, onPointerDown: ripplePointerDown, onKeyDown: rippleKeyDown, onAnimationEnd: rippleAnimationEnd } = useRipple(!disabled)\n\n const pressed =\n controlledPressed !== undefined ? controlledPressed : internalPressed\n\n const handleClick = () => {\n if (disabled) return\n\n const newPressed = !pressed\n if (controlledPressed === undefined) {\n setInternalPressed(newPressed)\n }\n onChange?.(newPressed)\n }\n\n return (\n <button\n data-slot=\"root\"\n ref={ref}\n type=\"button\"\n className={cn(\n 'toggle_root',\n singleToggleVariants({ size }),\n getToggleClasses(color, variant, pressed),\n 'border relative overflow-hidden',\n disabled && 'opacity-50 cursor-not-allowed',\n classNames?.root,\n className,\n )}\n onClick={handleClick}\n onPointerDown={ripplePointerDown}\n onKeyDown={rippleKeyDown}\n disabled={disabled}\n aria-pressed={pressed}\n aria-label={ariaLabel}\n >\n {icon}\n {children}\n <RippleContainer ripples={ripples} onAnimationEnd={rippleAnimationEnd} />\n </button>\n )\n },\n)\n\nToggle.displayName = 'Toggle'\n\nexport type * from './types'\nexport default Toggle\n"]}
@@ -1,11 +1,40 @@
1
- import { useRipple, RippleContainer } from './chunk-OFUPJH35.js';
2
- import { focusRingColorClasses } from './chunk-POXI7JJ4.js';
3
- import { cn, iconSizes } from './chunk-NGYLRX6F.js';
1
+ import { useRipple, RippleContainer } from './chunk-4TEZWGX7.js';
2
+ import { colorVars } from './chunk-G6QIIWKU.js';
3
+ import { cn, iconSizes } from './chunk-RAS6HUEI.js';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { Check, Copy } from 'lucide-react';
6
6
  import React, { useState, useRef, useEffect } from 'react';
7
7
  import { jsxs, jsx } from 'react/jsx-runtime';
8
8
 
9
+ async function copyToClipboard(text) {
10
+ if (navigator.clipboard?.writeText) {
11
+ await navigator.clipboard.writeText(text);
12
+ return;
13
+ }
14
+ if (typeof ClipboardItem !== "undefined" && navigator.clipboard?.write) {
15
+ const blob = new Blob([text], { type: "text/plain" });
16
+ await navigator.clipboard.write([new ClipboardItem({ "text/plain": blob })]);
17
+ return;
18
+ }
19
+ const textarea = document.createElement("textarea");
20
+ textarea.value = text;
21
+ textarea.style.cssText = "position:fixed;opacity:0;left:-9999px";
22
+ document.body.appendChild(textarea);
23
+ textarea.focus();
24
+ textarea.select();
25
+ try {
26
+ const selection = document.getSelection();
27
+ if (selection) {
28
+ const range = document.createRange();
29
+ range.selectNodeContents(textarea);
30
+ selection.removeAllRanges();
31
+ selection.addRange(range);
32
+ }
33
+ document.execCommand("copy");
34
+ } finally {
35
+ document.body.removeChild(textarea);
36
+ }
37
+ }
9
38
  var clipboardVariants = cva(
10
39
  "inline-flex items-center justify-between gap-2 rounded-md font-medium transition-colors cursor-pointer border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background relative overflow-hidden",
11
40
  {
@@ -22,47 +51,15 @@ var clipboardVariants = cva(
22
51
  }
23
52
  }
24
53
  );
25
- var colorStyles = {
26
- default: {
27
- default: "bg-background border-border text-text-primary hover:bg-surface",
28
- solid: "bg-surface border-border text-text-primary hover:bg-surface/80",
29
- soft: "bg-surface/50 border-border text-text-primary hover:bg-surface"
30
- },
31
- primary: {
32
- default: "bg-background border-primary text-primary hover:bg-primary/10",
33
- solid: "bg-primary border-primary text-background hover:bg-primary/90",
34
- soft: "bg-primary/10 border-primary/30 text-primary hover:bg-primary/20"
35
- },
36
- secondary: {
37
- default: "bg-background border-secondary text-secondary hover:bg-secondary/10",
38
- solid: "bg-secondary border-secondary text-background hover:bg-secondary/90",
39
- soft: "bg-secondary/10 border-secondary/30 text-secondary hover:bg-secondary/20"
40
- },
41
- accent: {
42
- default: "bg-background border-accent text-accent hover:bg-accent/10",
43
- solid: "bg-accent border-accent text-background hover:bg-accent/90",
44
- soft: "bg-accent/10 border-accent/30 text-accent hover:bg-accent/20"
45
- },
46
- success: {
47
- default: "bg-background border-success text-success hover:bg-success/10",
48
- solid: "bg-success border-success text-background hover:bg-success/90",
49
- soft: "bg-success/10 border-success/30 text-success hover:bg-success/20"
50
- },
51
- error: {
52
- default: "bg-background border-error text-error hover:bg-error/10",
53
- solid: "bg-error border-error text-background hover:bg-error/90",
54
- soft: "bg-error/10 border-error/30 text-error hover:bg-error/20"
55
- },
56
- warning: {
57
- default: "bg-background border-warning text-warning hover:bg-warning/10",
58
- solid: "bg-warning border-warning text-background hover:bg-warning/90",
59
- soft: "bg-warning/10 border-warning/30 text-warning hover:bg-warning/20"
60
- },
61
- info: {
62
- default: "bg-background border-info text-info hover:bg-info/10",
63
- solid: "bg-info border-info text-background hover:bg-info/90",
64
- soft: "bg-info/10 border-info/30 text-info hover:bg-info/20"
54
+ var getClipboardStyles = (color, variant) => {
55
+ const baseColor = colorVars[color] || colorVars.default;
56
+ if (variant === "solid") {
57
+ return cn(baseColor, "bg-slot border-slot text-slot-fg hover:bg-slot-90");
58
+ }
59
+ if (variant === "soft") {
60
+ return cn(baseColor, "bg-slot-10 border-slot-30 text-slot hover:bg-slot-20");
65
61
  }
62
+ return cn(baseColor, "bg-background border-slot text-slot hover:bg-slot-10");
66
63
  };
67
64
  var Clipboard = React.memo(
68
65
  ({
@@ -80,9 +77,11 @@ var Clipboard = React.memo(
80
77
  }) => {
81
78
  const [copied, setCopied] = useState(false);
82
79
  const timerRef = useRef(null);
80
+ const isMountedRef = useRef(true);
83
81
  const { ripples, onPointerDown: ripplePointerDown, onKeyDown: rippleKeyDown, onAnimationEnd: rippleAnimationEnd } = useRipple(!disabled);
84
82
  useEffect(() => {
85
83
  return () => {
84
+ isMountedRef.current = false;
86
85
  if (timerRef.current) {
87
86
  clearTimeout(timerRef.current);
88
87
  }
@@ -91,14 +90,14 @@ var Clipboard = React.memo(
91
90
  const handleCopy = async () => {
92
91
  if (disabled) return;
93
92
  try {
94
- await navigator.clipboard.writeText(value);
95
- setCopied(true);
93
+ await copyToClipboard(value);
94
+ if (isMountedRef.current) setCopied(true);
96
95
  onCopy?.();
97
96
  if (timerRef.current) {
98
97
  clearTimeout(timerRef.current);
99
98
  }
100
99
  timerRef.current = setTimeout(() => {
101
- setCopied(false);
100
+ if (isMountedRef.current) setCopied(false);
102
101
  }, successDuration);
103
102
  } catch {
104
103
  }
@@ -126,8 +125,9 @@ var Clipboard = React.memo(
126
125
  "aria-live": "polite",
127
126
  className: cn(
128
127
  clipboardVariants({ size }),
129
- colorStyles[color][variant],
130
- focusRingColorClasses[color],
128
+ getClipboardStyles(color, variant),
129
+ colorVars[color],
130
+ "focus-visible:ring-slot",
131
131
  disabled && "opacity-50 cursor-not-allowed",
132
132
  !showValue && "aspect-square justify-center",
133
133
  "clipboard_root",
@@ -178,5 +178,5 @@ Clipboard.displayName = "Clipboard";
178
178
  var clipboard_default = Clipboard;
179
179
 
180
180
  export { clipboard_default };
181
- //# sourceMappingURL=chunk-3PWILVOE.js.map
182
- //# sourceMappingURL=chunk-3PWILVOE.js.map
181
+ //# sourceMappingURL=chunk-J2WIZULN.js.map
182
+ //# sourceMappingURL=chunk-J2WIZULN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/clipboard/index.tsx"],"names":[],"mappings":"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","file":"chunk-J2WIZULN.js","sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport { Check, Copy } from \"lucide-react\";\nimport React, { useState, useRef, useEffect } from \"react\";\n\nimport { useRipple, RippleContainer } from \"../hooks/useRipple\";\nimport { cn, iconSizes } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { ClipboardProps } from \"./types\";\n\nasync function copyToClipboard(text: string): Promise<void> {\n if (navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(text);\n return;\n }\n // Fallback using ClipboardItem API (works in iframes / insecure contexts with user gesture)\n if (typeof ClipboardItem !== \"undefined\" && navigator.clipboard?.write) {\n const blob = new Blob([text], { type: \"text/plain\" });\n await navigator.clipboard.write([new ClipboardItem({ \"text/plain\": blob })]);\n return;\n }\n // Last resort: textarea + Selection API (no deprecated execCommand)\n const textarea = document.createElement(\"textarea\");\n textarea.value = text;\n textarea.style.cssText = \"position:fixed;opacity:0;left:-9999px\";\n document.body.appendChild(textarea);\n textarea.focus();\n textarea.select();\n try {\n const selection = document.getSelection();\n if (selection) {\n const range = document.createRange();\n range.selectNodeContents(textarea);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n // execCommand is deprecated but still the only sync fallback in old browsers\n document.execCommand(\"copy\");\n } finally {\n document.body.removeChild(textarea);\n }\n}\n\nconst clipboardVariants = cva(\n \"inline-flex items-center justify-between gap-2 rounded-md font-medium transition-colors cursor-pointer border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background relative overflow-hidden\",\n {\n variants: {\n size: {\n xs: \"px-1.5 py-1 text-xs\",\n sm: \"px-2 py-1.5 text-xs\",\n md: \"px-2.5 py-2 text-sm\",\n lg: \"px-3.5 py-2 text-lg\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nconst getClipboardStyles = (color: string, variant: string) => {\n const baseColor = colorVars[color as keyof typeof colorVars] || colorVars.default\n\n if (variant === 'solid') {\n return cn(baseColor, 'bg-slot border-slot text-slot-fg hover:bg-slot-90')\n }\n if (variant === 'soft') {\n return cn(baseColor, 'bg-slot-10 border-slot-30 text-slot hover:bg-slot-20')\n }\n // default variant\n return cn(baseColor, 'bg-background border-slot text-slot hover:bg-slot-10')\n}\n\nconst Clipboard = React.memo<ClipboardProps>(\n ({\n value,\n color = \"default\",\n size = \"md\",\n variant = \"default\",\n showValue = true,\n successDuration = 2000,\n disabled = false,\n onCopy,\n className,\n classNames,\n ref,\n }) => {\n const [copied, setCopied] = useState(false);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isMountedRef = useRef(true);\n const { ripples, onPointerDown: ripplePointerDown, onKeyDown: rippleKeyDown, onAnimationEnd: rippleAnimationEnd } = useRipple(!disabled);\n\n // Cleanup timeout on unmount to prevent memory leak\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, []);\n\n const handleCopy = async () => {\n if (disabled) return;\n\n try {\n await copyToClipboard(value);\n if (isMountedRef.current) setCopied(true);\n onCopy?.();\n\n // Clear any existing timer before setting a new one\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n\n timerRef.current = setTimeout(() => {\n if (isMountedRef.current) setCopied(false);\n }, successDuration);\n } catch {\n // Copy failed - user can try again\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleCopy();\n }\n };\n\n return (\n <div\n ref={ref}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={handleCopy}\n onPointerDown={ripplePointerDown}\n onKeyDown={(e) => { rippleKeyDown(e); handleKeyDown(e); }}\n aria-label={\n copied\n ? \"Copied to clipboard\"\n : `Copy ${showValue ? value : \"to clipboard\"}`\n }\n aria-disabled={disabled}\n aria-live=\"polite\"\n className={cn(\n clipboardVariants({ size }),\n getClipboardStyles(color, variant),\n colorVars[color],\n 'focus-visible:ring-slot',\n disabled && \"opacity-50 cursor-not-allowed\",\n !showValue && \"aspect-square justify-center\",\n \"clipboard_root\",\n classNames?.root,\n className,\n )}\n data-slot=\"root\"\n >\n {showValue && (\n <span\n className={cn(\n \"font-mono truncate clipboard_input\",\n classNames?.input,\n )}\n data-slot=\"input\"\n >\n {value}\n </span>\n )}\n {copied ? (\n <Check\n className={cn(\n iconSizes[size],\n \"shrink-0 clipboard_button animate-in zoom-in-75 duration-200\",\n classNames?.button,\n )}\n data-slot=\"icon\"\n />\n ) : (\n <Copy\n className={cn(\n iconSizes[size],\n \"shrink-0 clipboard_button\",\n classNames?.button,\n )}\n data-slot=\"icon\"\n />\n )}\n <RippleContainer ripples={ripples} onAnimationEnd={rippleAnimationEnd} />\n </div>\n );\n },\n);\n\nClipboard.displayName = \"Clipboard\";\n\nexport type * from \"./types\";\nexport default Clipboard;\n"]}