silver-ui 0.5.0 → 0.7.1

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 (520) hide show
  1. package/README.md +2 -65
  2. package/dist/{chunk-XHJRAEGW.js → chunk-223UOU3H.js} +5 -5
  3. package/dist/{chunk-XHJRAEGW.js.map → chunk-223UOU3H.js.map} +1 -1
  4. package/dist/{chunk-67UUGI3M.cjs → chunk-2AOR4EVA.cjs} +8 -8
  5. package/dist/{chunk-67UUGI3M.cjs.map → chunk-2AOR4EVA.cjs.map} +1 -1
  6. package/dist/{chunk-75KSHZTV.js → chunk-2KLTODOC.js} +7 -7
  7. package/dist/{chunk-75KSHZTV.js.map → chunk-2KLTODOC.js.map} +1 -1
  8. package/dist/chunk-2N3PIXZ5.cjs +165 -0
  9. package/dist/chunk-2N3PIXZ5.cjs.map +1 -0
  10. package/dist/{chunk-W5F7PYT2.js → chunk-3PCXFOOS.js} +17 -11
  11. package/dist/chunk-3PCXFOOS.js.map +1 -0
  12. package/dist/chunk-3PEK2Q54.cjs +31 -0
  13. package/dist/chunk-3PEK2Q54.cjs.map +1 -0
  14. package/dist/{chunk-GW6P4FJ4.cjs → chunk-4MIIXRZN.cjs} +25 -40
  15. package/dist/chunk-4MIIXRZN.cjs.map +1 -0
  16. package/dist/{chunk-CUHJDV6K.js → chunk-4NPVIEWF.js} +6 -6
  17. package/dist/{chunk-CUHJDV6K.js.map → chunk-4NPVIEWF.js.map} +1 -1
  18. package/dist/{chunk-ADSG24VE.js → chunk-4UYMGEBF.js} +6 -6
  19. package/dist/{chunk-ADSG24VE.js.map → chunk-4UYMGEBF.js.map} +1 -1
  20. package/dist/{chunk-ECDYAZ2R.js → chunk-54B36CSW.js} +5 -5
  21. package/dist/{chunk-ECDYAZ2R.js.map → chunk-54B36CSW.js.map} +1 -1
  22. package/dist/chunk-5FQKELP6.js +28 -0
  23. package/dist/chunk-5FQKELP6.js.map +1 -0
  24. package/dist/{chunk-RJEZBOSH.js → chunk-5GSRIOXE.js} +24 -14
  25. package/dist/chunk-5GSRIOXE.js.map +1 -0
  26. package/dist/{chunk-OUZX7STE.cjs → chunk-5K3C3INR.cjs} +25 -53
  27. package/dist/chunk-5K3C3INR.cjs.map +1 -0
  28. package/dist/{chunk-AEYJ6PWC.js → chunk-5RFHYDQY.js} +16 -11
  29. package/dist/chunk-5RFHYDQY.js.map +1 -0
  30. package/dist/{chunk-E42WOTIC.js → chunk-6KG76KUZ.js} +3 -3
  31. package/dist/{chunk-E42WOTIC.js.map → chunk-6KG76KUZ.js.map} +1 -1
  32. package/dist/{chunk-I47WOF6E.js → chunk-6KGF66TR.js} +3 -3
  33. package/dist/{chunk-I47WOF6E.js.map → chunk-6KGF66TR.js.map} +1 -1
  34. package/dist/{chunk-TOQ4MGM5.js → chunk-6R2UZNVE.js} +6 -6
  35. package/dist/{chunk-TOQ4MGM5.js.map → chunk-6R2UZNVE.js.map} +1 -1
  36. package/dist/{chunk-BIJ6YDWJ.cjs → chunk-6SFMORQF.cjs} +15 -8
  37. package/dist/chunk-6SFMORQF.cjs.map +1 -0
  38. package/dist/{chunk-H4L456EW.js → chunk-6SKIBUCY.js} +12 -5
  39. package/dist/chunk-6SKIBUCY.js.map +1 -0
  40. package/dist/{chunk-ANACERIO.cjs → chunk-6SMVH3ON.cjs} +6 -6
  41. package/dist/{chunk-ANACERIO.cjs.map → chunk-6SMVH3ON.cjs.map} +1 -1
  42. package/dist/{chunk-ESRDHDYN.cjs → chunk-6ZPHID26.cjs} +9 -9
  43. package/dist/{chunk-ESRDHDYN.cjs.map → chunk-6ZPHID26.cjs.map} +1 -1
  44. package/dist/{chunk-SUT35RHA.cjs → chunk-76GVUEFH.cjs} +8 -8
  45. package/dist/{chunk-SUT35RHA.cjs.map → chunk-76GVUEFH.cjs.map} +1 -1
  46. package/dist/chunk-7VUDE5BI.js +91 -0
  47. package/dist/chunk-7VUDE5BI.js.map +1 -0
  48. package/dist/{chunk-Q3HMGFGI.js → chunk-7WQW7H3D.js} +98 -77
  49. package/dist/chunk-7WQW7H3D.js.map +1 -0
  50. package/dist/chunk-A2AC6WL5.cjs +4 -0
  51. package/dist/chunk-A2AC6WL5.cjs.map +1 -0
  52. package/dist/{chunk-2Y7ULSEU.js → chunk-A4QLLTMD.js} +17 -17
  53. package/dist/{chunk-2Y7ULSEU.js.map → chunk-A4QLLTMD.js.map} +1 -1
  54. package/dist/{chunk-HWD4HDQ5.cjs → chunk-AC4E3WQA.cjs} +10 -10
  55. package/dist/{chunk-HWD4HDQ5.cjs.map → chunk-AC4E3WQA.cjs.map} +1 -1
  56. package/dist/chunk-AFXU6XIS.js +3 -0
  57. package/dist/chunk-AFXU6XIS.js.map +1 -0
  58. package/dist/{chunk-L5PJCLV6.js → chunk-AKAXQ4RL.js} +16 -25
  59. package/dist/chunk-AKAXQ4RL.js.map +1 -0
  60. package/dist/{chunk-AV7D3SXF.js → chunk-AO4RVSCG.js} +4 -4
  61. package/dist/{chunk-AV7D3SXF.js.map → chunk-AO4RVSCG.js.map} +1 -1
  62. package/dist/{chunk-OERNLR2P.js → chunk-AX653SYJ.js} +8 -8
  63. package/dist/{chunk-OERNLR2P.js.map → chunk-AX653SYJ.js.map} +1 -1
  64. package/dist/{chunk-4HXNBLCJ.js → chunk-AXTX3IOR.js} +3 -3
  65. package/dist/{chunk-4HXNBLCJ.js.map → chunk-AXTX3IOR.js.map} +1 -1
  66. package/dist/{chunk-2AWSJF22.js → chunk-BNGYGCT2.js} +8 -8
  67. package/dist/chunk-BNGYGCT2.js.map +1 -0
  68. package/dist/{chunk-PGTOVMP7.cjs → chunk-BPAZTKMC.cjs} +10 -10
  69. package/dist/{chunk-PGTOVMP7.cjs.map → chunk-BPAZTKMC.cjs.map} +1 -1
  70. package/dist/{chunk-7CTHD4G6.cjs → chunk-BYV7NXC5.cjs} +5 -5
  71. package/dist/{chunk-7CTHD4G6.cjs.map → chunk-BYV7NXC5.cjs.map} +1 -1
  72. package/dist/{chunk-3Z5PF75J.cjs → chunk-CKDB7QNT.cjs} +29 -19
  73. package/dist/chunk-CKDB7QNT.cjs.map +1 -0
  74. package/dist/{chunk-3VJIUZAY.cjs → chunk-CVT7JW6C.cjs} +16 -25
  75. package/dist/chunk-CVT7JW6C.cjs.map +1 -0
  76. package/dist/{chunk-6DAZ2ZOW.cjs → chunk-CWZCBYVZ.cjs} +11 -11
  77. package/dist/{chunk-6DAZ2ZOW.cjs.map → chunk-CWZCBYVZ.cjs.map} +1 -1
  78. package/dist/{chunk-N77K3NQY.cjs → chunk-DTNIUZ3C.cjs} +7 -7
  79. package/dist/{chunk-N77K3NQY.cjs.map → chunk-DTNIUZ3C.cjs.map} +1 -1
  80. package/dist/{chunk-X4I5YARV.cjs → chunk-DUGGZUJP.cjs} +11 -11
  81. package/dist/{chunk-X4I5YARV.cjs.map → chunk-DUGGZUJP.cjs.map} +1 -1
  82. package/dist/{chunk-TTDNCN5G.cjs → chunk-DVCDAKPK.cjs} +13 -39
  83. package/dist/chunk-DVCDAKPK.cjs.map +1 -0
  84. package/dist/{chunk-2RZNX26F.cjs → chunk-DXUFDJHA.cjs} +12 -13
  85. package/dist/chunk-DXUFDJHA.cjs.map +1 -0
  86. package/dist/{chunk-4SUQFPWH.js → chunk-E6AKSBSP.js} +6 -6
  87. package/dist/{chunk-4SUQFPWH.js.map → chunk-E6AKSBSP.js.map} +1 -1
  88. package/dist/{chunk-THTVYP5V.js → chunk-EBV3EX3J.js} +21 -32
  89. package/dist/chunk-EBV3EX3J.js.map +1 -0
  90. package/dist/{chunk-JM4Q7ZQH.cjs → chunk-EEOUWM2F.cjs} +8 -8
  91. package/dist/chunk-EEOUWM2F.cjs.map +1 -0
  92. package/dist/{chunk-KC4EKXGF.js → chunk-EIJSWHG7.js} +9 -10
  93. package/dist/chunk-EIJSWHG7.js.map +1 -0
  94. package/dist/{chunk-IGJEZLHP.cjs → chunk-EQFSDFV2.cjs} +19 -19
  95. package/dist/{chunk-IGJEZLHP.cjs.map → chunk-EQFSDFV2.cjs.map} +1 -1
  96. package/dist/chunk-ESWYWWY2.js +162 -0
  97. package/dist/chunk-ESWYWWY2.js.map +1 -0
  98. package/dist/{chunk-UXGHFKLA.js → chunk-FHUOUARL.js} +4 -4
  99. package/dist/{chunk-UXGHFKLA.js.map → chunk-FHUOUARL.js.map} +1 -1
  100. package/dist/{chunk-HNDDNW52.js → chunk-FTNEAX24.js} +3 -3
  101. package/dist/{chunk-HNDDNW52.js.map → chunk-FTNEAX24.js.map} +1 -1
  102. package/dist/{chunk-JJNXQ7EL.js → chunk-FUU3I22W.js} +3 -3
  103. package/dist/{chunk-JJNXQ7EL.js.map → chunk-FUU3I22W.js.map} +1 -1
  104. package/dist/{chunk-OF5NULAO.js → chunk-GFMQIR5U.js} +7 -7
  105. package/dist/{chunk-OF5NULAO.js.map → chunk-GFMQIR5U.js.map} +1 -1
  106. package/dist/{chunk-JSAYTQTJ.cjs → chunk-GJZAGTPV.cjs} +7 -7
  107. package/dist/chunk-GJZAGTPV.cjs.map +1 -0
  108. package/dist/{chunk-J2YKUHQM.js → chunk-GKYGZWSQ.js} +14 -23
  109. package/dist/chunk-GKYGZWSQ.js.map +1 -0
  110. package/dist/{chunk-2F5TDBRT.cjs → chunk-GLFWSLJB.cjs} +8 -8
  111. package/dist/{chunk-2F5TDBRT.cjs.map → chunk-GLFWSLJB.cjs.map} +1 -1
  112. package/dist/{chunk-S5CMLG2E.js → chunk-GTZQT6MK.js} +9 -5
  113. package/dist/chunk-GTZQT6MK.js.map +1 -0
  114. package/dist/{chunk-4RDA4W4N.js → chunk-HEF53COU.js} +23 -7
  115. package/dist/chunk-HEF53COU.js.map +1 -0
  116. package/dist/{chunk-WPMWHKJX.js → chunk-I2DXEPDF.js} +5 -5
  117. package/dist/{chunk-WPMWHKJX.js.map → chunk-I2DXEPDF.js.map} +1 -1
  118. package/dist/{chunk-Z7OUMVR5.cjs → chunk-I4XYOJJS.cjs} +9 -9
  119. package/dist/{chunk-Z7OUMVR5.cjs.map → chunk-I4XYOJJS.cjs.map} +1 -1
  120. package/dist/{chunk-HWP2UGOC.cjs → chunk-IE7GWY4E.cjs} +126 -105
  121. package/dist/chunk-IE7GWY4E.cjs.map +1 -0
  122. package/dist/{chunk-YDNEAHVK.cjs → chunk-IH6DJWYH.cjs} +37 -37
  123. package/dist/{chunk-YDNEAHVK.cjs.map → chunk-IH6DJWYH.cjs.map} +1 -1
  124. package/dist/{chunk-D5OX6II7.cjs → chunk-IREOTHD3.cjs} +8 -8
  125. package/dist/chunk-IREOTHD3.cjs.map +1 -0
  126. package/dist/{chunk-L7XJZJCM.js → chunk-J4MQQ4K5.js} +5 -5
  127. package/dist/{chunk-L7XJZJCM.js.map → chunk-J4MQQ4K5.js.map} +1 -1
  128. package/dist/{chunk-UARQIMPS.js → chunk-JFLU2X5Q.js} +5 -5
  129. package/dist/{chunk-UARQIMPS.js.map → chunk-JFLU2X5Q.js.map} +1 -1
  130. package/dist/{chunk-VH3G4IUX.js → chunk-JMVYWHJ7.js} +12 -38
  131. package/dist/chunk-JMVYWHJ7.js.map +1 -0
  132. package/dist/{chunk-K4K4FU3D.cjs → chunk-JTPVAZE6.cjs} +11 -11
  133. package/dist/{chunk-K4K4FU3D.cjs.map → chunk-JTPVAZE6.cjs.map} +1 -1
  134. package/dist/{chunk-LW3DJOF4.cjs → chunk-JWMS6LHN.cjs} +6 -6
  135. package/dist/{chunk-LW3DJOF4.cjs.map → chunk-JWMS6LHN.cjs.map} +1 -1
  136. package/dist/{chunk-EBJPUXFQ.js → chunk-KEPCKSDE.js} +31 -11
  137. package/dist/chunk-KEPCKSDE.js.map +1 -0
  138. package/dist/{chunk-I2NG2P5K.cjs → chunk-KLPVBJGZ.cjs} +5 -5
  139. package/dist/{chunk-I2NG2P5K.cjs.map → chunk-KLPVBJGZ.cjs.map} +1 -1
  140. package/dist/{chunk-6PIVWNUR.js → chunk-KWZMXX4F.js} +5 -5
  141. package/dist/chunk-KWZMXX4F.js.map +1 -0
  142. package/dist/{chunk-3IYM5MAC.js → chunk-L747HIHG.js} +4 -4
  143. package/dist/{chunk-3IYM5MAC.js.map → chunk-L747HIHG.js.map} +1 -1
  144. package/dist/{chunk-HIH6MS5D.js → chunk-LBOWHXOF.js} +24 -6
  145. package/dist/chunk-LBOWHXOF.js.map +1 -0
  146. package/dist/{chunk-ZPJW3PP7.cjs → chunk-LTHPJRFK.cjs} +18 -10
  147. package/dist/chunk-LTHPJRFK.cjs.map +1 -0
  148. package/dist/{chunk-F7BFO3SD.cjs → chunk-LWB2CTX6.cjs} +24 -8
  149. package/dist/chunk-LWB2CTX6.cjs.map +1 -0
  150. package/dist/{chunk-FCUUGJTM.cjs → chunk-MJHEPDDX.cjs} +132 -160
  151. package/dist/chunk-MJHEPDDX.cjs.map +1 -0
  152. package/dist/{chunk-QO5C7TIV.js → chunk-MUXUHIIV.js} +5 -5
  153. package/dist/{chunk-QO5C7TIV.js.map → chunk-MUXUHIIV.js.map} +1 -1
  154. package/dist/{chunk-L5JS6P62.cjs → chunk-MYSLJWCW.cjs} +14 -10
  155. package/dist/chunk-MYSLJWCW.cjs.map +1 -0
  156. package/dist/{chunk-65MJZYO6.js → chunk-N6C37HXD.js} +14 -29
  157. package/dist/chunk-N6C37HXD.js.map +1 -0
  158. package/dist/{chunk-VO4FG3L2.cjs → chunk-NGNVNRAZ.cjs} +17 -17
  159. package/dist/{chunk-VO4FG3L2.cjs.map → chunk-NGNVNRAZ.cjs.map} +1 -1
  160. package/dist/{chunk-2WTHSGDP.cjs → chunk-NMC7QG2X.cjs} +14 -14
  161. package/dist/{chunk-2WTHSGDP.cjs.map → chunk-NMC7QG2X.cjs.map} +1 -1
  162. package/dist/{chunk-6EYLEVC6.js → chunk-NSWKBWPP.js} +15 -7
  163. package/dist/chunk-NSWKBWPP.js.map +1 -0
  164. package/dist/{chunk-FNRYGCO3.js → chunk-NYOZQE6P.js} +4 -4
  165. package/dist/{chunk-FNRYGCO3.js.map → chunk-NYOZQE6P.js.map} +1 -1
  166. package/dist/{chunk-GSTINE4X.js → chunk-O3UT5D57.js} +1775 -575
  167. package/dist/chunk-O3UT5D57.js.map +1 -0
  168. package/dist/{chunk-BSI4BQEX.cjs → chunk-OCYZKZ24.cjs} +4 -4
  169. package/dist/{chunk-BSI4BQEX.cjs.map → chunk-OCYZKZ24.cjs.map} +1 -1
  170. package/dist/{chunk-LBGC6EC5.js → chunk-OP6WQYYP.js} +15 -15
  171. package/dist/chunk-OP6WQYYP.js.map +1 -0
  172. package/dist/{chunk-TSKFGLGQ.cjs → chunk-OX2FNKIV.cjs} +18 -27
  173. package/dist/chunk-OX2FNKIV.cjs.map +1 -0
  174. package/dist/chunk-PG4CZRTU.js +77 -0
  175. package/dist/chunk-PG4CZRTU.js.map +1 -0
  176. package/dist/{chunk-TH537HOM.js → chunk-PQXPYN23.js} +6 -6
  177. package/dist/{chunk-TH537HOM.js.map → chunk-PQXPYN23.js.map} +1 -1
  178. package/dist/{chunk-U5M4JZBX.js → chunk-PYN75QAG.js} +6 -6
  179. package/dist/chunk-PYN75QAG.js.map +1 -0
  180. package/dist/{chunk-JS6MRT6M.js → chunk-QM7NQK2K.js} +4 -4
  181. package/dist/{chunk-JS6MRT6M.js.map → chunk-QM7NQK2K.js.map} +1 -1
  182. package/dist/{chunk-SUWRSJAN.cjs → chunk-RLIBY7XB.cjs} +16 -11
  183. package/dist/chunk-RLIBY7XB.cjs.map +1 -0
  184. package/dist/chunk-RNUQWYJJ.cjs +93 -0
  185. package/dist/chunk-RNUQWYJJ.cjs.map +1 -0
  186. package/dist/{chunk-GY2ZZR4Z.cjs → chunk-RUQODCTW.cjs} +18 -18
  187. package/dist/{chunk-GY2ZZR4Z.cjs.map → chunk-RUQODCTW.cjs.map} +1 -1
  188. package/dist/{chunk-FFF57VHO.cjs → chunk-RX2FXCIH.cjs} +8 -8
  189. package/dist/{chunk-FFF57VHO.cjs.map → chunk-RX2FXCIH.cjs.map} +1 -1
  190. package/dist/{chunk-EFBSEJBD.js → chunk-S4WWBV4N.js} +22 -47
  191. package/dist/chunk-S4WWBV4N.js.map +1 -0
  192. package/dist/{chunk-J3X465QT.cjs → chunk-SY2A4K6P.cjs} +9 -9
  193. package/dist/{chunk-J3X465QT.cjs.map → chunk-SY2A4K6P.cjs.map} +1 -1
  194. package/dist/{chunk-YJEX32HZ.cjs → chunk-U7QJJ3NR.cjs} +8 -8
  195. package/dist/{chunk-YJEX32HZ.cjs.map → chunk-U7QJJ3NR.cjs.map} +1 -1
  196. package/dist/{chunk-XZZI3JYK.cjs → chunk-UJDHRILS.cjs} +26 -8
  197. package/dist/chunk-UJDHRILS.cjs.map +1 -0
  198. package/dist/{chunk-IX26TMZD.cjs → chunk-UNS7OCEA.cjs} +5 -5
  199. package/dist/{chunk-IX26TMZD.cjs.map → chunk-UNS7OCEA.cjs.map} +1 -1
  200. package/dist/{chunk-RRXOSNCX.cjs → chunk-UR5EWWWL.cjs} +11 -11
  201. package/dist/{chunk-RRXOSNCX.cjs.map → chunk-UR5EWWWL.cjs.map} +1 -1
  202. package/dist/{chunk-6J326CN6.js → chunk-USEA7DB5.js} +4 -4
  203. package/dist/{chunk-6J326CN6.js.map → chunk-USEA7DB5.js.map} +1 -1
  204. package/dist/{chunk-DZZEJY3J.js → chunk-UUVI3TYW.js} +120 -148
  205. package/dist/chunk-UUVI3TYW.js.map +1 -0
  206. package/dist/{chunk-DV4K35UC.cjs → chunk-UW3KCCBT.cjs} +4 -4
  207. package/dist/{chunk-DV4K35UC.cjs.map → chunk-UW3KCCBT.cjs.map} +1 -1
  208. package/dist/{chunk-MEXR5ONE.js → chunk-V5XVXQWE.js} +5 -5
  209. package/dist/{chunk-MEXR5ONE.js.map → chunk-V5XVXQWE.js.map} +1 -1
  210. package/dist/{chunk-UXQSSRBQ.cjs → chunk-VCM4MR7N.cjs} +1785 -581
  211. package/dist/chunk-VCM4MR7N.cjs.map +1 -0
  212. package/dist/{chunk-VD52FLHL.js → chunk-VEQ5H765.js} +10 -10
  213. package/dist/{chunk-VD52FLHL.js.map → chunk-VEQ5H765.js.map} +1 -1
  214. package/dist/{chunk-Q4HAXT5C.cjs → chunk-VK7DXUGH.cjs} +31 -11
  215. package/dist/chunk-VK7DXUGH.cjs.map +1 -0
  216. package/dist/chunk-VPWNRWNO.cjs +81 -0
  217. package/dist/chunk-VPWNRWNO.cjs.map +1 -0
  218. package/dist/{chunk-VV72PGKH.cjs → chunk-VULMEKZZ.cjs} +27 -27
  219. package/dist/chunk-VULMEKZZ.cjs.map +1 -0
  220. package/dist/{chunk-MEUELWGO.cjs → chunk-VWG54F6X.cjs} +8 -8
  221. package/dist/{chunk-MEUELWGO.cjs.map → chunk-VWG54F6X.cjs.map} +1 -1
  222. package/dist/{chunk-MGJLBHPJ.js → chunk-WG4NNC3P.js} +4 -4
  223. package/dist/{chunk-MGJLBHPJ.js.map → chunk-WG4NNC3P.js.map} +1 -1
  224. package/dist/{chunk-V4ZH2H2P.cjs → chunk-WIFMXZIN.cjs} +14 -14
  225. package/dist/{chunk-V4ZH2H2P.cjs.map → chunk-WIFMXZIN.cjs.map} +1 -1
  226. package/dist/{chunk-5XMWGK3O.cjs → chunk-WOVSJHY6.cjs} +25 -36
  227. package/dist/chunk-WOVSJHY6.cjs.map +1 -0
  228. package/dist/{chunk-2VAUVJVG.js → chunk-X2P5SPGB.js} +3 -3
  229. package/dist/{chunk-2VAUVJVG.js.map → chunk-X2P5SPGB.js.map} +1 -1
  230. package/dist/{chunk-PBQMHXVO.js → chunk-XUCLNECV.js} +3 -3
  231. package/dist/{chunk-PBQMHXVO.js.map → chunk-XUCLNECV.js.map} +1 -1
  232. package/dist/{chunk-HXIU3SIQ.cjs → chunk-Y2GYPMLW.cjs} +5 -5
  233. package/dist/{chunk-HXIU3SIQ.cjs.map → chunk-Y2GYPMLW.cjs.map} +1 -1
  234. package/dist/{chunk-OTQAREYU.js → chunk-YAQB3UMC.js} +4 -4
  235. package/dist/{chunk-OTQAREYU.js.map → chunk-YAQB3UMC.js.map} +1 -1
  236. package/dist/{chunk-2VL66QBX.js → chunk-YGESCFX2.js} +3 -3
  237. package/dist/{chunk-2VL66QBX.js.map → chunk-YGESCFX2.js.map} +1 -1
  238. package/dist/{chunk-XPGIWOJO.cjs → chunk-YOAFVMEN.cjs} +18 -18
  239. package/dist/chunk-YOAFVMEN.cjs.map +1 -0
  240. package/dist/{chunk-2GMDMZKI.cjs → chunk-YQIDUJW2.cjs} +5 -5
  241. package/dist/{chunk-2GMDMZKI.cjs.map → chunk-YQIDUJW2.cjs.map} +1 -1
  242. package/dist/{chunk-R4DGCQTA.cjs → chunk-YQVWDHP4.cjs} +7 -7
  243. package/dist/{chunk-R4DGCQTA.cjs.map → chunk-YQVWDHP4.cjs.map} +1 -1
  244. package/dist/{chunk-LKGHYNLH.js → chunk-YRJYWTVG.js} +10 -10
  245. package/dist/chunk-YRJYWTVG.js.map +1 -0
  246. package/dist/{chunk-TKTCN4JE.cjs → chunk-ZNAGK36T.cjs} +9 -9
  247. package/dist/{chunk-TKTCN4JE.cjs.map → chunk-ZNAGK36T.cjs.map} +1 -1
  248. package/dist/{chunk-BSPWX2OZ.cjs → chunk-ZW2ZOEYM.cjs} +21 -15
  249. package/dist/chunk-ZW2ZOEYM.cjs.map +1 -0
  250. package/dist/components/Alert/index.cjs +10 -8
  251. package/dist/components/Alert/index.js +9 -7
  252. package/dist/components/AlertDialog/index.cjs +12 -10
  253. package/dist/components/AlertDialog/index.js +10 -8
  254. package/dist/components/AppShell/index.cjs +18 -15
  255. package/dist/components/AppShell/index.js +15 -12
  256. package/dist/components/AutocompleteInput/index.cjs +17 -14
  257. package/dist/components/AutocompleteInput/index.js +13 -10
  258. package/dist/components/Badge/Badge.d.ts.map +1 -1
  259. package/dist/components/Badge/Badge.recipe.d.ts +75 -41
  260. package/dist/components/Badge/Badge.recipe.d.ts.map +1 -1
  261. package/dist/components/Badge/index.cjs +3 -2
  262. package/dist/components/Badge/index.js +2 -1
  263. package/dist/components/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  264. package/dist/components/Breadcrumbs/index.cjs +5 -10
  265. package/dist/components/Breadcrumbs/index.js +2 -7
  266. package/dist/components/Button/Button.d.ts +5 -3
  267. package/dist/components/Button/Button.d.ts.map +1 -1
  268. package/dist/components/Button/index.cjs +9 -7
  269. package/dist/components/Button/index.js +8 -6
  270. package/dist/components/Calendar/index.cjs +10 -8
  271. package/dist/components/Calendar/index.js +9 -7
  272. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +83 -0
  273. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
  274. package/dist/components/CheckboxGroup/CheckboxGroup.recipe.d.ts +17 -0
  275. package/dist/components/CheckboxGroup/CheckboxGroup.recipe.d.ts.map +1 -0
  276. package/dist/components/CheckboxGroup/CheckboxGroupContext.d.ts +13 -0
  277. package/dist/components/CheckboxGroup/CheckboxGroupContext.d.ts.map +1 -0
  278. package/dist/components/CheckboxGroup/CheckboxGroupItem.d.ts +58 -0
  279. package/dist/components/CheckboxGroup/CheckboxGroupItem.d.ts.map +1 -0
  280. package/dist/components/CheckboxGroup/index.cjs +35 -0
  281. package/dist/components/CheckboxGroup/index.cjs.map +1 -0
  282. package/dist/components/CheckboxGroup/index.d.ts +4 -0
  283. package/dist/components/CheckboxGroup/index.d.ts.map +1 -0
  284. package/dist/components/CheckboxGroup/index.js +22 -0
  285. package/dist/components/CheckboxGroup/index.js.map +1 -0
  286. package/dist/components/CheckboxInput/CheckboxInput.d.ts +11 -2
  287. package/dist/components/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  288. package/dist/components/CheckboxInput/CheckboxInput.recipe.d.ts +6 -0
  289. package/dist/components/CheckboxInput/CheckboxInput.recipe.d.ts.map +1 -1
  290. package/dist/components/CheckboxInput/index.cjs +9 -8
  291. package/dist/components/CheckboxInput/index.js +8 -7
  292. package/dist/components/CodeBlock/index.cjs +10 -8
  293. package/dist/components/CodeBlock/index.js +9 -7
  294. package/dist/components/ContextMenu/index.cjs +14 -12
  295. package/dist/components/ContextMenu/index.js +12 -10
  296. package/dist/components/DateInput/index.cjs +13 -11
  297. package/dist/components/DateInput/index.js +12 -10
  298. package/dist/components/DateRangeInput/index.cjs +13 -11
  299. package/dist/components/DateRangeInput/index.js +12 -10
  300. package/dist/components/DateTimeInput/index.cjs +15 -13
  301. package/dist/components/DateTimeInput/index.js +14 -12
  302. package/dist/components/DropdownMenu/index.cjs +15 -13
  303. package/dist/components/DropdownMenu/index.js +11 -9
  304. package/dist/components/EmptyState/index.cjs +5 -5
  305. package/dist/components/EmptyState/index.js +4 -4
  306. package/dist/components/Field/index.cjs +6 -6
  307. package/dist/components/Field/index.js +4 -4
  308. package/dist/components/FileInput/index.cjs +11 -9
  309. package/dist/components/FileInput/index.js +10 -8
  310. package/dist/components/HoverCard/HoverCard.d.ts +6 -6
  311. package/dist/components/HoverCard/HoverCard.d.ts.map +1 -1
  312. package/dist/components/HoverCard/index.cjs +4 -4
  313. package/dist/components/HoverCard/index.js +2 -2
  314. package/dist/components/InputGroup/index.cjs +9 -9
  315. package/dist/components/InputGroup/index.js +5 -5
  316. package/dist/components/Item/Item.d.ts.map +1 -1
  317. package/dist/components/Item/index.cjs +7 -8
  318. package/dist/components/Item/index.js +6 -7
  319. package/dist/components/Layout/Layout.recipe.d.ts +17 -0
  320. package/dist/components/Layout/Layout.recipe.d.ts.map +1 -1
  321. package/dist/components/Layout/LayoutHeader.d.ts +12 -1
  322. package/dist/components/Layout/LayoutHeader.d.ts.map +1 -1
  323. package/dist/components/Layout/index.cjs +14 -12
  324. package/dist/components/Layout/index.js +9 -7
  325. package/dist/components/Lightbox/index.cjs +11 -9
  326. package/dist/components/Lightbox/index.js +9 -7
  327. package/dist/components/Link/Link.d.ts +4 -5
  328. package/dist/components/Link/Link.d.ts.map +1 -1
  329. package/dist/components/Link/Link.recipe.d.ts.map +1 -1
  330. package/dist/components/Link/index.cjs +9 -6
  331. package/dist/components/Link/index.js +6 -3
  332. package/dist/components/List/index.cjs +9 -10
  333. package/dist/components/List/index.js +7 -8
  334. package/dist/components/MetadataList/MetadataList.recipe.d.ts +9 -1
  335. package/dist/components/MetadataList/MetadataList.recipe.d.ts.map +1 -1
  336. package/dist/components/MetadataList/MetadataListItem.d.ts +6 -1
  337. package/dist/components/MetadataList/MetadataListItem.d.ts.map +1 -1
  338. package/dist/components/MetadataList/index.cjs +9 -6
  339. package/dist/components/MetadataList/index.js +7 -4
  340. package/dist/components/MultiSelect/index.cjs +14 -12
  341. package/dist/components/MultiSelect/index.js +13 -11
  342. package/dist/components/NumberInput/index.cjs +12 -10
  343. package/dist/components/NumberInput/index.js +11 -9
  344. package/dist/components/Pagination/index.cjs +10 -8
  345. package/dist/components/Pagination/index.js +9 -7
  346. package/dist/components/PasswordInput/index.cjs +13 -11
  347. package/dist/components/PasswordInput/index.js +12 -10
  348. package/dist/components/Popover/Popover.d.ts +13 -1
  349. package/dist/components/Popover/Popover.d.ts.map +1 -1
  350. package/dist/components/Popover/index.cjs +11 -9
  351. package/dist/components/Popover/index.js +9 -7
  352. package/dist/components/RadioGroup/index.cjs +10 -9
  353. package/dist/components/RadioGroup/index.js +8 -7
  354. package/dist/components/Schedule/CalendarEvent.d.ts +18 -4
  355. package/dist/components/Schedule/CalendarEvent.d.ts.map +1 -1
  356. package/dist/components/Schedule/DayView.d.ts +7 -1
  357. package/dist/components/Schedule/DayView.d.ts.map +1 -1
  358. package/dist/components/Schedule/ListView.d.ts.map +1 -1
  359. package/dist/components/Schedule/ListView.recipe.d.ts +56 -0
  360. package/dist/components/Schedule/ListView.recipe.d.ts.map +1 -0
  361. package/dist/components/Schedule/MonthlyView.d.ts.map +1 -1
  362. package/dist/components/Schedule/MonthlyView.recipe.d.ts +47 -0
  363. package/dist/components/Schedule/MonthlyView.recipe.d.ts.map +1 -0
  364. package/dist/components/Schedule/ScheduleEvent.recipe.d.ts +17 -0
  365. package/dist/components/Schedule/ScheduleEvent.recipe.d.ts.map +1 -1
  366. package/dist/components/Schedule/TimeGridView.d.ts +7 -1
  367. package/dist/components/Schedule/TimeGridView.d.ts.map +1 -1
  368. package/dist/components/Schedule/TimeGridView.recipe.d.ts +43 -0
  369. package/dist/components/Schedule/TimeGridView.recipe.d.ts.map +1 -0
  370. package/dist/components/Schedule/WeeklyView.d.ts +7 -1
  371. package/dist/components/Schedule/WeeklyView.d.ts.map +1 -1
  372. package/dist/components/Schedule/index.cjs +44 -21
  373. package/dist/components/Schedule/index.d.ts +6 -2
  374. package/dist/components/Schedule/index.d.ts.map +1 -1
  375. package/dist/components/Schedule/index.js +17 -10
  376. package/dist/components/Schedule/plugins/EventMovePlugin.d.ts +23 -0
  377. package/dist/components/Schedule/plugins/EventMovePlugin.d.ts.map +1 -0
  378. package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts +31 -0
  379. package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts.map +1 -0
  380. package/dist/components/Schedule/plugins/EventResizePlugin.d.ts +24 -0
  381. package/dist/components/Schedule/plugins/EventResizePlugin.d.ts.map +1 -0
  382. package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts +39 -0
  383. package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts.map +1 -0
  384. package/dist/components/Schedule/plugins/index.d.ts +4 -0
  385. package/dist/components/Schedule/plugins/index.d.ts.map +1 -1
  386. package/dist/components/Schedule/shared.d.ts +58 -3
  387. package/dist/components/Schedule/shared.d.ts.map +1 -1
  388. package/dist/components/Schedule/types.d.ts +47 -1
  389. package/dist/components/Schedule/types.d.ts.map +1 -1
  390. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.d.ts.map +1 -1
  391. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.recipe.d.ts +4 -0
  392. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.recipe.d.ts.map +1 -0
  393. package/dist/components/SearchFilterInput/index.cjs +32 -29
  394. package/dist/components/SearchFilterInput/index.js +24 -21
  395. package/dist/components/Select/index.cjs +15 -13
  396. package/dist/components/Select/index.js +13 -11
  397. package/dist/components/SideNav/SideNav.d.ts.map +1 -1
  398. package/dist/components/SideNav/SideNav.recipe.d.ts +26 -7
  399. package/dist/components/SideNav/SideNav.recipe.d.ts.map +1 -1
  400. package/dist/components/SideNav/SideNavItem.d.ts.map +1 -1
  401. package/dist/components/SideNav/index.cjs +18 -15
  402. package/dist/components/SideNav/index.js +12 -9
  403. package/dist/components/Slider/index.cjs +6 -6
  404. package/dist/components/Slider/index.js +5 -5
  405. package/dist/components/Spinner/index.cjs +5 -5
  406. package/dist/components/Spinner/index.js +4 -4
  407. package/dist/components/SplitButton/index.cjs +13 -11
  408. package/dist/components/SplitButton/index.js +12 -10
  409. package/dist/components/Stepper/index.cjs +5 -5
  410. package/dist/components/Stepper/index.js +4 -4
  411. package/dist/components/Switch/index.cjs +6 -6
  412. package/dist/components/Switch/index.js +5 -5
  413. package/dist/components/Table/index.cjs +55 -52
  414. package/dist/components/Table/index.js +29 -26
  415. package/dist/components/Tabs/Tab.d.ts.map +1 -1
  416. package/dist/components/Tabs/index.cjs +15 -13
  417. package/dist/components/Tabs/index.js +10 -8
  418. package/dist/components/Tag/Tag.d.ts.map +1 -1
  419. package/dist/components/Tag/index.cjs +8 -5
  420. package/dist/components/Tag/index.js +7 -4
  421. package/dist/components/TagsInput/index.cjs +15 -12
  422. package/dist/components/TagsInput/index.js +14 -11
  423. package/dist/components/Text/Heading.d.ts +5 -5
  424. package/dist/components/Text/Heading.d.ts.map +1 -1
  425. package/dist/components/Text/Text.d.ts +5 -5
  426. package/dist/components/Text/Text.d.ts.map +1 -1
  427. package/dist/components/Text/index.cjs +5 -5
  428. package/dist/components/Text/index.js +3 -3
  429. package/dist/components/TextArea/index.cjs +7 -7
  430. package/dist/components/TextArea/index.js +6 -6
  431. package/dist/components/TextInput/index.cjs +12 -10
  432. package/dist/components/TextInput/index.js +11 -9
  433. package/dist/components/Thumbnail/index.cjs +10 -8
  434. package/dist/components/Thumbnail/index.js +9 -7
  435. package/dist/components/TimeInput/index.cjs +11 -9
  436. package/dist/components/TimeInput/index.js +10 -8
  437. package/dist/components/Toast/ToastViewport.d.ts.map +1 -1
  438. package/dist/components/Toast/index.cjs +12 -10
  439. package/dist/components/Toast/index.js +9 -7
  440. package/dist/components/ToggleButton/ToggleButton.recipe.d.ts.map +1 -1
  441. package/dist/components/ToggleButton/index.cjs +7 -7
  442. package/dist/components/ToggleButton/index.js +5 -5
  443. package/dist/components/Tooltip/Tooltip.d.ts +6 -6
  444. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  445. package/dist/components/Tooltip/index.cjs +4 -4
  446. package/dist/components/Tooltip/index.js +2 -2
  447. package/dist/components/TopNav/TopNavItem.d.ts.map +1 -1
  448. package/dist/components/TopNav/index.cjs +16 -13
  449. package/dist/components/TopNav/index.js +11 -8
  450. package/dist/components/TreeView/TreeViewItem.d.ts.map +1 -1
  451. package/dist/components/TreeView/index.cjs +3 -2
  452. package/dist/components/TreeView/index.js +2 -1
  453. package/dist/index.cjs +260 -232
  454. package/dist/index.cjs.map +1 -1
  455. package/dist/index.d.ts +2 -1
  456. package/dist/index.d.ts.map +1 -1
  457. package/dist/index.js +62 -58
  458. package/dist/index.js.map +1 -1
  459. package/dist/internal/ActionElement.d.ts +45 -0
  460. package/dist/internal/ActionElement.d.ts.map +1 -0
  461. package/dist/internal/HoverLayerTrigger.d.ts +3 -4
  462. package/dist/internal/HoverLayerTrigger.d.ts.map +1 -1
  463. package/dist/internal/useLayer.d.ts +12 -0
  464. package/dist/internal/useLayer.d.ts.map +1 -1
  465. package/dist/internal/useSelectListbox.d.ts +5 -5
  466. package/dist/internal/useSelectListbox.d.ts.map +1 -1
  467. package/dist/styles.css +1 -1
  468. package/package.json +1 -1
  469. package/dist/chunk-2AWSJF22.js.map +0 -1
  470. package/dist/chunk-2RZNX26F.cjs.map +0 -1
  471. package/dist/chunk-3VJIUZAY.cjs.map +0 -1
  472. package/dist/chunk-3Z5PF75J.cjs.map +0 -1
  473. package/dist/chunk-4RDA4W4N.js.map +0 -1
  474. package/dist/chunk-5XMWGK3O.cjs.map +0 -1
  475. package/dist/chunk-65MJZYO6.js.map +0 -1
  476. package/dist/chunk-6EYLEVC6.js.map +0 -1
  477. package/dist/chunk-6PIVWNUR.js.map +0 -1
  478. package/dist/chunk-AEYJ6PWC.js.map +0 -1
  479. package/dist/chunk-BIJ6YDWJ.cjs.map +0 -1
  480. package/dist/chunk-BSPWX2OZ.cjs.map +0 -1
  481. package/dist/chunk-D5OX6II7.cjs.map +0 -1
  482. package/dist/chunk-DZZEJY3J.js.map +0 -1
  483. package/dist/chunk-EBJPUXFQ.js.map +0 -1
  484. package/dist/chunk-EFBSEJBD.js.map +0 -1
  485. package/dist/chunk-F7BFO3SD.cjs.map +0 -1
  486. package/dist/chunk-FCUUGJTM.cjs.map +0 -1
  487. package/dist/chunk-GSTINE4X.js.map +0 -1
  488. package/dist/chunk-GW6P4FJ4.cjs.map +0 -1
  489. package/dist/chunk-H2EMKCWT.js +0 -78
  490. package/dist/chunk-H2EMKCWT.js.map +0 -1
  491. package/dist/chunk-H4L456EW.js.map +0 -1
  492. package/dist/chunk-HIH6MS5D.js.map +0 -1
  493. package/dist/chunk-HWP2UGOC.cjs.map +0 -1
  494. package/dist/chunk-J2YKUHQM.js.map +0 -1
  495. package/dist/chunk-JM4Q7ZQH.cjs.map +0 -1
  496. package/dist/chunk-JSAYTQTJ.cjs.map +0 -1
  497. package/dist/chunk-KC4EKXGF.js.map +0 -1
  498. package/dist/chunk-KUXFEAT4.cjs +0 -80
  499. package/dist/chunk-KUXFEAT4.cjs.map +0 -1
  500. package/dist/chunk-L5JS6P62.cjs.map +0 -1
  501. package/dist/chunk-L5PJCLV6.js.map +0 -1
  502. package/dist/chunk-LBGC6EC5.js.map +0 -1
  503. package/dist/chunk-LKGHYNLH.js.map +0 -1
  504. package/dist/chunk-OUZX7STE.cjs.map +0 -1
  505. package/dist/chunk-Q3HMGFGI.js.map +0 -1
  506. package/dist/chunk-Q4HAXT5C.cjs.map +0 -1
  507. package/dist/chunk-RJEZBOSH.js.map +0 -1
  508. package/dist/chunk-S5CMLG2E.js.map +0 -1
  509. package/dist/chunk-SUWRSJAN.cjs.map +0 -1
  510. package/dist/chunk-THTVYP5V.js.map +0 -1
  511. package/dist/chunk-TSKFGLGQ.cjs.map +0 -1
  512. package/dist/chunk-TTDNCN5G.cjs.map +0 -1
  513. package/dist/chunk-U5M4JZBX.js.map +0 -1
  514. package/dist/chunk-UXQSSRBQ.cjs.map +0 -1
  515. package/dist/chunk-VH3G4IUX.js.map +0 -1
  516. package/dist/chunk-VV72PGKH.cjs.map +0 -1
  517. package/dist/chunk-W5F7PYT2.js.map +0 -1
  518. package/dist/chunk-XPGIWOJO.cjs.map +0 -1
  519. package/dist/chunk-XZZI3JYK.cjs.map +0 -1
  520. package/dist/chunk-ZPJW3PP7.cjs.map +0 -1
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkI2NG2P5K_cjs = require('./chunk-I2NG2P5K.cjs');
3
+ var chunkKLPVBJGZ_cjs = require('./chunk-KLPVBJGZ.cjs');
4
4
  var chunkJK4YAQ2N_cjs = require('./chunk-JK4YAQ2N.cjs');
5
5
  var chunkVXBVSYPA_cjs = require('./chunk-VXBVSYPA.cjs');
6
- var chunkFFF57VHO_cjs = require('./chunk-FFF57VHO.cjs');
6
+ var chunkRX2FXCIH_cjs = require('./chunk-RX2FXCIH.cjs');
7
7
  var chunkXPHXAZCE_cjs = require('./chunk-XPHXAZCE.cjs');
8
- var chunkL5JS6P62_cjs = require('./chunk-L5JS6P62.cjs');
9
- var chunk5XMWGK3O_cjs = require('./chunk-5XMWGK3O.cjs');
10
- var chunkBSI4BQEX_cjs = require('./chunk-BSI4BQEX.cjs');
8
+ var chunkMYSLJWCW_cjs = require('./chunk-MYSLJWCW.cjs');
9
+ var chunkWOVSJHY6_cjs = require('./chunk-WOVSJHY6.cjs');
10
+ var chunkOCYZKZ24_cjs = require('./chunk-OCYZKZ24.cjs');
11
11
  var chunk6SHL7FYO_cjs = require('./chunk-6SHL7FYO.cjs');
12
12
  var chunkQAO6QMNQ_cjs = require('./chunk-QAO6QMNQ.cjs');
13
13
  var chunkRU6JG3FS_cjs = require('./chunk-RU6JG3FS.cjs');
@@ -149,7 +149,7 @@ function DateInput({
149
149
  const [isOpen, setIsOpen] = react.useState(false);
150
150
  const [pendingInput, setPendingInput] = react.useState(null);
151
151
  const displayValue = pendingInput ?? formatDate(value);
152
- const necessity = chunkFFF57VHO_cjs.getNecessity(isOptional, isRequired);
152
+ const necessity = chunkRX2FXCIH_cjs.getNecessity(isOptional, isRequired);
153
153
  const handleCalendarChange = react.useCallback(
154
154
  (nextValue) => {
155
155
  onChange(nextValue);
@@ -206,7 +206,7 @@ function DateInput({
206
206
  inputRef.current?.focus();
207
207
  }, [onChange]);
208
208
  return /* @__PURE__ */ jsxRuntime.jsx(
209
- chunkFFF57VHO_cjs.Field,
209
+ chunkRX2FXCIH_cjs.Field,
210
210
  {
211
211
  className,
212
212
  description,
@@ -234,10 +234,10 @@ function DateInput({
234
234
  ref: wrapperRef,
235
235
  children: [
236
236
  /* @__PURE__ */ jsxRuntime.jsx(
237
- chunkL5JS6P62_cjs.Popover,
237
+ chunkMYSLJWCW_cjs.Popover,
238
238
  {
239
239
  content: /* @__PURE__ */ jsxRuntime.jsx(
240
- chunkI2NG2P5K_cjs.Calendar,
240
+ chunkKLPVBJGZ_cjs.Calendar,
241
241
  {
242
242
  getIsDateDisabled,
243
243
  hasAutoFocus: isOpen,
@@ -257,7 +257,7 @@ function DateInput({
257
257
  onOpenChange: setIsOpen,
258
258
  padding: 3,
259
259
  children: /* @__PURE__ */ jsxRuntime.jsx(
260
- chunk5XMWGK3O_cjs.Button,
260
+ chunkWOVSJHY6_cjs.Button,
261
261
  {
262
262
  icon: lucideReact.CalendarIcon,
263
263
  isDisabled,
@@ -295,7 +295,7 @@ function DateInput({
295
295
  }
296
296
  ),
297
297
  hasClear && value != null && !isDisabled && !isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
298
- chunk5XMWGK3O_cjs.Button,
298
+ chunkWOVSJHY6_cjs.Button,
299
299
  {
300
300
  icon: lucideReact.X,
301
301
  isIconOnly: true,
@@ -305,7 +305,7 @@ function DateInput({
305
305
  variant: "ghost"
306
306
  }
307
307
  ) : null,
308
- isLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkBSI4BQEX_cjs.Spinner, { size: "sm" }) : null,
308
+ isLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkOCYZKZ24_cjs.Spinner, { size: "sm" }) : null,
309
309
  status != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkVXBVSYPA_cjs.inputStyles.iconSlot, children: chunkXPHXAZCE_cjs.getStatusIcon(status.type) }) : null
310
310
  ]
311
311
  }
@@ -316,5 +316,5 @@ function DateInput({
316
316
  DateInput.displayName = "DateInput";
317
317
 
318
318
  exports.DateInput = DateInput;
319
- //# sourceMappingURL=chunk-V4ZH2H2P.cjs.map
320
- //# sourceMappingURL=chunk-V4ZH2H2P.cjs.map
319
+ //# sourceMappingURL=chunk-WIFMXZIN.cjs.map
320
+ //# sourceMappingURL=chunk-WIFMXZIN.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal/parseDateInput.ts","../src/components/DateInput/DateInput.tsx"],"names":["plainDateCreate","css","plainDateFormat","DATE_FORMAT_LONG","plainDateIsBefore","plainDateIsAfter","useId","isReactNode","getStatusMessageID","getDescribedBy","useRef","useState","getNecessity","useCallback","jsx","Field","jsxs","cx","inputRecipe","Popover","Calendar","Button","CalendarIcon","inputStyles","mergeRefs","X","Spinner","getStatusIcon"],"mappings":"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","file":"chunk-V4ZH2H2P.cjs","sourcesContent":["import {plainDateCreate, type PlainDate} from 'internal/plainDate';\n\nconst MONTH_NAMES: Partial<Record<string, number>> = {\n jan: 1,\n january: 1,\n feb: 2,\n february: 2,\n mar: 3,\n march: 3,\n apr: 4,\n april: 4,\n may: 5,\n jun: 6,\n june: 6,\n jul: 7,\n july: 7,\n aug: 8,\n august: 8,\n sep: 9,\n september: 9,\n oct: 10,\n october: 10,\n nov: 11,\n november: 11,\n dec: 12,\n december: 12,\n};\n\n/**\n * Parses common date input formats into a PlainDate.\n * Supports: \"2026-05-21\", \"05/21/2026\", \"May 21, 2026\", \"21 May 2026\", etc.\n * Returns null if the input cannot be parsed.\n */\nexport function parseDateInput(input: string): PlainDate | null {\n const trimmed = input.trim();\n if (trimmed === '') {\n return null;\n }\n\n // ISO format: 2026-05-21\n const isoMatch = /^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/.exec(trimmed);\n if (isoMatch != null) {\n return tryCreate(\n parseInt(isoMatch[1], 10),\n parseInt(isoMatch[2], 10),\n parseInt(isoMatch[3], 10),\n );\n }\n\n // US format: 05/21/2026, 5/21/2026, or 3/4/25 (2-digit year)\n const usMatch = /^(\\d{1,2})[/\\-.](\\d{1,2})[/\\-.](\\d{2,4})$/.exec(trimmed);\n if (usMatch != null) {\n let year = parseInt(usMatch[3], 10);\n if (year < 100) {\n year += year < 50 ? 2000 : 1900;\n }\n return tryCreate(year, parseInt(usMatch[1], 10), parseInt(usMatch[2], 10));\n }\n\n // Named month: \"May 21, 2026\" or \"May 21 2026\"\n const namedMonthFirst = /^([A-Za-z]+)\\s+(\\d{1,2}),?\\s+(\\d{4})$/.exec(trimmed);\n if (namedMonthFirst != null) {\n const month = MONTH_NAMES[namedMonthFirst[1].toLowerCase()];\n if (month != null) {\n return tryCreate(\n parseInt(namedMonthFirst[3], 10),\n month,\n parseInt(namedMonthFirst[2], 10),\n );\n }\n }\n\n // Named month reversed: \"21 May 2026\"\n const namedMonthLast = /^(\\d{1,2})\\s+([A-Za-z]+),?\\s+(\\d{4})$/.exec(trimmed);\n if (namedMonthLast != null) {\n const month = MONTH_NAMES[namedMonthLast[2].toLowerCase()];\n if (month != null) {\n return tryCreate(\n parseInt(namedMonthLast[3], 10),\n month,\n parseInt(namedMonthLast[1], 10),\n );\n }\n }\n\n return null;\n}\n\nfunction tryCreate(year: number, month: number, day: number): PlainDate | null {\n try {\n return plainDateCreate(year, month, day);\n } catch {\n return null;\n }\n}\n","import {CalendarIcon, X} from 'lucide-react';\nimport {\n useCallback,\n useId,\n useRef,\n useState,\n type ChangeEvent,\n type CSSProperties,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {Button} from 'components/Button';\nimport {Calendar, type CalendarHandle} from 'components/Calendar';\nimport {\n Field,\n getNecessity,\n type FieldNecessity,\n type InputSize,\n type InputStatus,\n} from 'components/Field';\nimport {inputRecipe, inputStyles} from 'components/Field/inputStyles';\nimport {\n getDescribedBy,\n getStatusIcon,\n getStatusMessageID,\n} from 'components/Field/inputUtils';\nimport type {IconComponent} from 'components/Icon';\nimport {Popover} from 'components/Popover';\nimport {Spinner} from 'components/Spinner';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport {parseDateInput} from 'internal/parseDateInput';\nimport {\n DATE_FORMAT_LONG,\n plainDateFormat,\n plainDateIsAfter,\n plainDateIsBefore,\n type PlainDate,\n} from 'internal/plainDate';\nimport {css} from 'styled-system/css';\n\nexport type {PlainDate} from 'internal/plainDate';\n\nconst styles = {\n wrapper: css({ps: '1', gap: '1'}),\n} as const;\n\nexport type DateInputProps = {\n /**\n * Additional CSS class names applied to the input wrapper.\n */\n className?: string;\n /**\n * Test ID applied to the input element.\n */\n 'data-testid'?: string;\n /**\n * Supporting text rendered below the label.\n */\n description?: ReactNode;\n /**\n * Returns true for dates that should be disabled.\n */\n getIsDateDisabled?: (date: PlainDate) => boolean;\n /**\n * Whether to show a clear button when a value is selected.\n * @default false\n */\n hasClear?: boolean;\n /**\n * Custom HTML id applied to the input element.\n */\n htmlId?: string;\n /**\n * Whether the input is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether to visually hide the label.\n * @default false\n */\n isLabelHidden?: boolean;\n /**\n * Whether the input is in a loading state.\n * @default false\n */\n isLoading?: boolean;\n /**\n * Field label text.\n */\n label: string;\n /**\n * Icon shown before the label.\n */\n labelIcon?: IconComponent;\n /**\n * Tooltip content shown next to the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Maximum selectable date.\n */\n max?: PlainDate;\n /**\n * Minimum selectable date.\n */\n min?: PlainDate;\n /**\n * Called when the selected date changes.\n */\n onChange: (value: PlainDate | null) => void;\n /**\n * Placeholder text shown when no date is selected. Typed dates accept a\n * range of formats, including \"May 21, 2026\", \"5/21/2026\", and \"2026-05-21\".\n * @default 'e.g. May 21, 2026'\n */\n placeholder?: string;\n /**\n * Ref forwarded to the input element.\n */\n ref?: Ref<HTMLInputElement>;\n /**\n * Visual size of the input.\n * @default 'md'\n */\n size?: InputSize;\n /**\n * Validation status displayed below the input.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the input wrapper.\n */\n style?: CSSProperties;\n /**\n * Currently selected date. Pass `null` for an empty input.\n */\n value: PlainDate | null;\n} & FieldNecessity;\n\nfunction formatDate(value: PlainDate | null | undefined): string {\n return value == null ? '' : plainDateFormat(value, DATE_FORMAT_LONG);\n}\n\nfunction isDateAllowed(\n date: PlainDate,\n options: {\n getIsDateDisabled?: (date: PlainDate) => boolean;\n max?: PlainDate;\n min?: PlainDate;\n },\n): boolean {\n if (options.min != null && plainDateIsBefore(date, options.min)) {\n return false;\n }\n if (options.max != null && plainDateIsAfter(date, options.max)) {\n return false;\n }\n if (options.getIsDateDisabled?.(date)) {\n return false;\n }\n return true;\n}\n\n/**\n * A date picker input that combines a text input with a calendar popover.\n * Users can type a date directly or select one from the calendar.\n */\nexport function DateInput({\n label,\n value,\n onChange,\n min,\n max,\n getIsDateDisabled,\n placeholder = 'e.g. May 21, 2026',\n size = 'md',\n description,\n isLabelHidden = false,\n isOptional,\n isRequired,\n isDisabled = false,\n isLoading = false,\n hasClear = false,\n htmlId,\n status,\n labelIcon,\n labelTooltip,\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n}: DateInputProps): React.JSX.Element {\n const generatedId = useId();\n const inputId = htmlId ?? generatedId;\n const popoverId = `${inputId}-calendar`;\n const descriptionID = isReactNode(description)\n ? `${inputId}-description`\n : undefined;\n const statusMessageID = getStatusMessageID(inputId, status);\n const describedBy = getDescribedBy(descriptionID, statusMessageID);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const calendarRef = useRef<CalendarHandle | null>(null);\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [pendingInput, setPendingInput] = useState<string | null>(null);\n\n const displayValue = pendingInput ?? formatDate(value);\n\n const necessity = getNecessity(isOptional, isRequired);\n\n const handleCalendarChange = useCallback(\n (nextValue: PlainDate) => {\n onChange(nextValue);\n setPendingInput(null);\n setIsOpen(false);\n inputRef.current?.focus();\n },\n [onChange],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const text = event.target.value;\n setPendingInput(text);\n\n const parsed = parseDateInput(text);\n if (\n parsed != null &&\n isDateAllowed(parsed, {min, max, getIsDateDisabled})\n ) {\n onChange(parsed);\n calendarRef.current?.navigateTo(parsed);\n }\n },\n [getIsDateDisabled, max, min, onChange],\n );\n\n const commitPendingInput = useCallback(() => {\n if (pendingInput == null) {\n return;\n }\n\n if (pendingInput.trim() === '') {\n if (value != null) {\n onChange(null);\n }\n setPendingInput(null);\n return;\n }\n\n const parsed = parseDateInput(pendingInput);\n if (\n parsed != null &&\n isDateAllowed(parsed, {min, max, getIsDateDisabled})\n ) {\n onChange(parsed);\n }\n setPendingInput(null);\n }, [getIsDateDisabled, max, min, onChange, pendingInput, value]);\n\n const handleBlur = useCallback(() => {\n commitPendingInput();\n }, [commitPendingInput]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n commitPendingInput();\n }\n },\n [commitPendingInput],\n );\n\n const handleClear = useCallback(() => {\n onChange(null);\n setPendingInput(null);\n inputRef.current?.focus();\n }, [onChange]);\n\n return (\n <Field\n className={className}\n description={description}\n descriptionID={descriptionID}\n inputId={inputId}\n isDisabled={isDisabled}\n isLabelHidden={isLabelHidden}\n {...necessity}\n label={label}\n labelIcon={labelIcon}\n labelTooltip={labelTooltip}\n status={\n status == null ? undefined : {...status, messageID: statusMessageID}\n }\n style={style}>\n <div\n className={cx(\n inputRecipe({\n size,\n status: status?.type,\n isDisabled: isDisabled,\n }),\n styles.wrapper,\n )}\n ref={wrapperRef}>\n <Popover\n content={\n <Calendar\n getIsDateDisabled={getIsDateDisabled}\n hasAutoFocus={isOpen}\n max={max}\n min={min}\n onChange={handleCalendarChange}\n ref={calendarRef}\n value={value ?? undefined}\n viewDate={value ?? undefined}\n />\n }\n hasAutoFocus={false}\n id={popoverId}\n isEnabled={!isDisabled}\n isOpen={isOpen}\n label={`Choose ${label}`}\n onOpenChange={setIsOpen}\n padding={3}>\n <Button\n icon={CalendarIcon}\n isDisabled={isDisabled}\n isIconOnly\n label={`Choose ${label}`}\n size=\"sm\"\n variant=\"ghost\"\n />\n </Popover>\n <input\n aria-busy={isLoading || undefined}\n aria-controls={popoverId}\n aria-describedby={describedBy}\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n aria-invalid={status?.type === 'error' || undefined}\n aria-required={isRequired ?? undefined}\n autoComplete=\"off\"\n className={inputStyles.control}\n data-testid={dataTestId}\n disabled={isDisabled}\n id={inputId}\n onBlur={handleBlur}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={mergeRefs(ref, inputRef)}\n role=\"combobox\"\n type=\"text\"\n value={displayValue}\n />\n {hasClear && value != null && !isDisabled && !isLoading ? (\n <Button\n icon={X}\n isIconOnly\n label={`Clear ${label}`}\n onClick={handleClear}\n size=\"sm\"\n variant=\"ghost\"\n />\n ) : null}\n {isLoading ? <Spinner size=\"sm\" /> : null}\n {status != null ? (\n <span className={inputStyles.iconSlot}>\n {getStatusIcon(status.type)}\n </span>\n ) : null}\n </div>\n </Field>\n );\n}\n\nDateInput.displayName = 'DateInput';\n"]}
1
+ {"version":3,"sources":["../src/internal/parseDateInput.ts","../src/components/DateInput/DateInput.tsx"],"names":["plainDateCreate","css","plainDateFormat","DATE_FORMAT_LONG","plainDateIsBefore","plainDateIsAfter","useId","isReactNode","getStatusMessageID","getDescribedBy","useRef","useState","getNecessity","useCallback","jsx","Field","jsxs","cx","inputRecipe","Popover","Calendar","Button","CalendarIcon","inputStyles","mergeRefs","X","Spinner","getStatusIcon"],"mappings":"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","file":"chunk-WIFMXZIN.cjs","sourcesContent":["import {plainDateCreate, type PlainDate} from 'internal/plainDate';\n\nconst MONTH_NAMES: Partial<Record<string, number>> = {\n jan: 1,\n january: 1,\n feb: 2,\n february: 2,\n mar: 3,\n march: 3,\n apr: 4,\n april: 4,\n may: 5,\n jun: 6,\n june: 6,\n jul: 7,\n july: 7,\n aug: 8,\n august: 8,\n sep: 9,\n september: 9,\n oct: 10,\n october: 10,\n nov: 11,\n november: 11,\n dec: 12,\n december: 12,\n};\n\n/**\n * Parses common date input formats into a PlainDate.\n * Supports: \"2026-05-21\", \"05/21/2026\", \"May 21, 2026\", \"21 May 2026\", etc.\n * Returns null if the input cannot be parsed.\n */\nexport function parseDateInput(input: string): PlainDate | null {\n const trimmed = input.trim();\n if (trimmed === '') {\n return null;\n }\n\n // ISO format: 2026-05-21\n const isoMatch = /^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/.exec(trimmed);\n if (isoMatch != null) {\n return tryCreate(\n parseInt(isoMatch[1], 10),\n parseInt(isoMatch[2], 10),\n parseInt(isoMatch[3], 10),\n );\n }\n\n // US format: 05/21/2026, 5/21/2026, or 3/4/25 (2-digit year)\n const usMatch = /^(\\d{1,2})[/\\-.](\\d{1,2})[/\\-.](\\d{2,4})$/.exec(trimmed);\n if (usMatch != null) {\n let year = parseInt(usMatch[3], 10);\n if (year < 100) {\n year += year < 50 ? 2000 : 1900;\n }\n return tryCreate(year, parseInt(usMatch[1], 10), parseInt(usMatch[2], 10));\n }\n\n // Named month: \"May 21, 2026\" or \"May 21 2026\"\n const namedMonthFirst = /^([A-Za-z]+)\\s+(\\d{1,2}),?\\s+(\\d{4})$/.exec(trimmed);\n if (namedMonthFirst != null) {\n const month = MONTH_NAMES[namedMonthFirst[1].toLowerCase()];\n if (month != null) {\n return tryCreate(\n parseInt(namedMonthFirst[3], 10),\n month,\n parseInt(namedMonthFirst[2], 10),\n );\n }\n }\n\n // Named month reversed: \"21 May 2026\"\n const namedMonthLast = /^(\\d{1,2})\\s+([A-Za-z]+),?\\s+(\\d{4})$/.exec(trimmed);\n if (namedMonthLast != null) {\n const month = MONTH_NAMES[namedMonthLast[2].toLowerCase()];\n if (month != null) {\n return tryCreate(\n parseInt(namedMonthLast[3], 10),\n month,\n parseInt(namedMonthLast[1], 10),\n );\n }\n }\n\n return null;\n}\n\nfunction tryCreate(year: number, month: number, day: number): PlainDate | null {\n try {\n return plainDateCreate(year, month, day);\n } catch {\n return null;\n }\n}\n","import {CalendarIcon, X} from 'lucide-react';\nimport {\n useCallback,\n useId,\n useRef,\n useState,\n type ChangeEvent,\n type CSSProperties,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {Button} from 'components/Button';\nimport {Calendar, type CalendarHandle} from 'components/Calendar';\nimport {\n Field,\n getNecessity,\n type FieldNecessity,\n type InputSize,\n type InputStatus,\n} from 'components/Field';\nimport {inputRecipe, inputStyles} from 'components/Field/inputStyles';\nimport {\n getDescribedBy,\n getStatusIcon,\n getStatusMessageID,\n} from 'components/Field/inputUtils';\nimport type {IconComponent} from 'components/Icon';\nimport {Popover} from 'components/Popover';\nimport {Spinner} from 'components/Spinner';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport {parseDateInput} from 'internal/parseDateInput';\nimport {\n DATE_FORMAT_LONG,\n plainDateFormat,\n plainDateIsAfter,\n plainDateIsBefore,\n type PlainDate,\n} from 'internal/plainDate';\nimport {css} from 'styled-system/css';\n\nexport type {PlainDate} from 'internal/plainDate';\n\nconst styles = {\n wrapper: css({ps: '1', gap: '1'}),\n} as const;\n\nexport type DateInputProps = {\n /**\n * Additional CSS class names applied to the input wrapper.\n */\n className?: string;\n /**\n * Test ID applied to the input element.\n */\n 'data-testid'?: string;\n /**\n * Supporting text rendered below the label.\n */\n description?: ReactNode;\n /**\n * Returns true for dates that should be disabled.\n */\n getIsDateDisabled?: (date: PlainDate) => boolean;\n /**\n * Whether to show a clear button when a value is selected.\n * @default false\n */\n hasClear?: boolean;\n /**\n * Custom HTML id applied to the input element.\n */\n htmlId?: string;\n /**\n * Whether the input is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether to visually hide the label.\n * @default false\n */\n isLabelHidden?: boolean;\n /**\n * Whether the input is in a loading state.\n * @default false\n */\n isLoading?: boolean;\n /**\n * Field label text.\n */\n label: string;\n /**\n * Icon shown before the label.\n */\n labelIcon?: IconComponent;\n /**\n * Tooltip content shown next to the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Maximum selectable date.\n */\n max?: PlainDate;\n /**\n * Minimum selectable date.\n */\n min?: PlainDate;\n /**\n * Called when the selected date changes.\n */\n onChange: (value: PlainDate | null) => void;\n /**\n * Placeholder text shown when no date is selected. Typed dates accept a\n * range of formats, including \"May 21, 2026\", \"5/21/2026\", and \"2026-05-21\".\n * @default 'e.g. May 21, 2026'\n */\n placeholder?: string;\n /**\n * Ref forwarded to the input element.\n */\n ref?: Ref<HTMLInputElement>;\n /**\n * Visual size of the input.\n * @default 'md'\n */\n size?: InputSize;\n /**\n * Validation status displayed below the input.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the input wrapper.\n */\n style?: CSSProperties;\n /**\n * Currently selected date. Pass `null` for an empty input.\n */\n value: PlainDate | null;\n} & FieldNecessity;\n\nfunction formatDate(value: PlainDate | null | undefined): string {\n return value == null ? '' : plainDateFormat(value, DATE_FORMAT_LONG);\n}\n\nfunction isDateAllowed(\n date: PlainDate,\n options: {\n getIsDateDisabled?: (date: PlainDate) => boolean;\n max?: PlainDate;\n min?: PlainDate;\n },\n): boolean {\n if (options.min != null && plainDateIsBefore(date, options.min)) {\n return false;\n }\n if (options.max != null && plainDateIsAfter(date, options.max)) {\n return false;\n }\n if (options.getIsDateDisabled?.(date)) {\n return false;\n }\n return true;\n}\n\n/**\n * A date picker input that combines a text input with a calendar popover.\n * Users can type a date directly or select one from the calendar.\n */\nexport function DateInput({\n label,\n value,\n onChange,\n min,\n max,\n getIsDateDisabled,\n placeholder = 'e.g. May 21, 2026',\n size = 'md',\n description,\n isLabelHidden = false,\n isOptional,\n isRequired,\n isDisabled = false,\n isLoading = false,\n hasClear = false,\n htmlId,\n status,\n labelIcon,\n labelTooltip,\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n}: DateInputProps): React.JSX.Element {\n const generatedId = useId();\n const inputId = htmlId ?? generatedId;\n const popoverId = `${inputId}-calendar`;\n const descriptionID = isReactNode(description)\n ? `${inputId}-description`\n : undefined;\n const statusMessageID = getStatusMessageID(inputId, status);\n const describedBy = getDescribedBy(descriptionID, statusMessageID);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const calendarRef = useRef<CalendarHandle | null>(null);\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [pendingInput, setPendingInput] = useState<string | null>(null);\n\n const displayValue = pendingInput ?? formatDate(value);\n\n const necessity = getNecessity(isOptional, isRequired);\n\n const handleCalendarChange = useCallback(\n (nextValue: PlainDate) => {\n onChange(nextValue);\n setPendingInput(null);\n setIsOpen(false);\n inputRef.current?.focus();\n },\n [onChange],\n );\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const text = event.target.value;\n setPendingInput(text);\n\n const parsed = parseDateInput(text);\n if (\n parsed != null &&\n isDateAllowed(parsed, {min, max, getIsDateDisabled})\n ) {\n onChange(parsed);\n calendarRef.current?.navigateTo(parsed);\n }\n },\n [getIsDateDisabled, max, min, onChange],\n );\n\n const commitPendingInput = useCallback(() => {\n if (pendingInput == null) {\n return;\n }\n\n if (pendingInput.trim() === '') {\n if (value != null) {\n onChange(null);\n }\n setPendingInput(null);\n return;\n }\n\n const parsed = parseDateInput(pendingInput);\n if (\n parsed != null &&\n isDateAllowed(parsed, {min, max, getIsDateDisabled})\n ) {\n onChange(parsed);\n }\n setPendingInput(null);\n }, [getIsDateDisabled, max, min, onChange, pendingInput, value]);\n\n const handleBlur = useCallback(() => {\n commitPendingInput();\n }, [commitPendingInput]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n commitPendingInput();\n }\n },\n [commitPendingInput],\n );\n\n const handleClear = useCallback(() => {\n onChange(null);\n setPendingInput(null);\n inputRef.current?.focus();\n }, [onChange]);\n\n return (\n <Field\n className={className}\n description={description}\n descriptionID={descriptionID}\n inputId={inputId}\n isDisabled={isDisabled}\n isLabelHidden={isLabelHidden}\n {...necessity}\n label={label}\n labelIcon={labelIcon}\n labelTooltip={labelTooltip}\n status={\n status == null ? undefined : {...status, messageID: statusMessageID}\n }\n style={style}>\n <div\n className={cx(\n inputRecipe({\n size,\n status: status?.type,\n isDisabled: isDisabled,\n }),\n styles.wrapper,\n )}\n ref={wrapperRef}>\n <Popover\n content={\n <Calendar\n getIsDateDisabled={getIsDateDisabled}\n hasAutoFocus={isOpen}\n max={max}\n min={min}\n onChange={handleCalendarChange}\n ref={calendarRef}\n value={value ?? undefined}\n viewDate={value ?? undefined}\n />\n }\n hasAutoFocus={false}\n id={popoverId}\n isEnabled={!isDisabled}\n isOpen={isOpen}\n label={`Choose ${label}`}\n onOpenChange={setIsOpen}\n padding={3}>\n <Button\n icon={CalendarIcon}\n isDisabled={isDisabled}\n isIconOnly\n label={`Choose ${label}`}\n size=\"sm\"\n variant=\"ghost\"\n />\n </Popover>\n <input\n aria-busy={isLoading || undefined}\n aria-controls={popoverId}\n aria-describedby={describedBy}\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n aria-invalid={status?.type === 'error' || undefined}\n aria-required={isRequired ?? undefined}\n autoComplete=\"off\"\n className={inputStyles.control}\n data-testid={dataTestId}\n disabled={isDisabled}\n id={inputId}\n onBlur={handleBlur}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={mergeRefs(ref, inputRef)}\n role=\"combobox\"\n type=\"text\"\n value={displayValue}\n />\n {hasClear && value != null && !isDisabled && !isLoading ? (\n <Button\n icon={X}\n isIconOnly\n label={`Clear ${label}`}\n onClick={handleClear}\n size=\"sm\"\n variant=\"ghost\"\n />\n ) : null}\n {isLoading ? <Spinner size=\"sm\" /> : null}\n {status != null ? (\n <span className={inputStyles.iconSlot}>\n {getStatusIcon(status.type)}\n </span>\n ) : null}\n </div>\n </Field>\n );\n}\n\nDateInput.displayName = 'DateInput';\n"]}
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkMAYQGKKW_cjs = require('./chunk-MAYQGKKW.cjs');
4
- var chunkBSI4BQEX_cjs = require('./chunk-BSI4BQEX.cjs');
5
- var chunkOUZX7STE_cjs = require('./chunk-OUZX7STE.cjs');
4
+ var chunkOCYZKZ24_cjs = require('./chunk-OCYZKZ24.cjs');
5
+ var chunk3PEK2Q54_cjs = require('./chunk-3PEK2Q54.cjs');
6
6
  var chunk2MXK2SDR_cjs = require('./chunk-2MXK2SDR.cjs');
7
- var chunkJSAYTQTJ_cjs = require('./chunk-JSAYTQTJ.cjs');
7
+ var chunkGJZAGTPV_cjs = require('./chunk-GJZAGTPV.cjs');
8
+ var chunkVPWNRWNO_cjs = require('./chunk-VPWNRWNO.cjs');
8
9
  var chunkPKZSJX53_cjs = require('./chunk-PKZSJX53.cjs');
9
10
  var chunkQAO6QMNQ_cjs = require('./chunk-QAO6QMNQ.cjs');
10
11
  var chunkJ4PIYOWT_cjs = require('./chunk-J4PIYOWT.cjs');
@@ -50,18 +51,18 @@ function Button({
50
51
  name,
51
52
  value
52
53
  }) {
53
- const LinkComponent = chunkOUZX7STE_cjs.useLinkComponent(as);
54
54
  const buttonGroup = chunkPKZSJX53_cjs.useButtonGroup();
55
55
  const size = sizeProp ?? buttonGroup?.size ?? "md";
56
56
  const buttonDisabled = isDisabled || buttonGroup?.isDisabled === true || isLoading;
57
+ const effectiveTooltip = tooltip ?? (isIconOnly ? label : void 0);
57
58
  const useAriaDisabled = tooltip != null && buttonDisabled;
58
59
  const renderAsLink = href != null && !buttonDisabled;
59
60
  const opensInNewTab = renderAsLink && target === "_blank";
60
- const ariaLabel = ariaLabelProp ?? chunkOUZX7STE_cjs.getAriaLabel(
61
+ const ariaLabel = ariaLabelProp ?? chunk3PEK2Q54_cjs.getAriaLabel(
61
62
  isIconOnly || isLoading || chunkQAO6QMNQ_cjs.isReactNode(startContent) || chunkQAO6QMNQ_cjs.isReactNode(endContent) || opensInNewTab ? label : void 0,
62
63
  opensInNewTab
63
64
  );
64
- const linkRel = chunkOUZX7STE_cjs.useRel({ target, rel });
65
+ const linkRel = chunk3PEK2Q54_cjs.useRel({ target, rel });
65
66
  const spinnerVariant = variant === "primary" || variant === "destructive" || variant === "onSolid" ? "onMedia" : "default";
66
67
  const classes = chunkMAYQGKKW_cjs.buttonRecipe({ variant, size, iconOnly: isIconOnly });
67
68
  const ariaAttrs = {
@@ -100,60 +101,48 @@ function Button({
100
101
  };
101
102
  const buttonContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
102
103
  /* @__PURE__ */ jsxRuntime.jsxs("span", { "aria-hidden": isLoading || void 0, className: classes.content, children: [
103
- icon != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: classes.icon, children: isIconOnly && isLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkBSI4BQEX_cjs.Spinner, { size, variant: spinnerVariant }) : /* @__PURE__ */ jsxRuntime.jsx(chunkJ4PIYOWT_cjs.Icon, { icon, size }) }) : null,
104
+ icon != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: classes.icon, children: isIconOnly && isLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkOCYZKZ24_cjs.Spinner, { size, variant: spinnerVariant }) : /* @__PURE__ */ jsxRuntime.jsx(chunkJ4PIYOWT_cjs.Icon, { icon, size }) }) : null,
104
105
  !isIconOnly && chunkQAO6QMNQ_cjs.isReactNode(startContent) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.startContent, children: startContent }) : null,
105
106
  !isIconOnly ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.label, children: label }) : null,
106
107
  !isIconOnly && chunkQAO6QMNQ_cjs.isReactNode(endContent) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.endContent, children: endContent }) : null,
107
- !isIconOnly && isLoading ? /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: classes.loadingIndicator, children: /* @__PURE__ */ jsxRuntime.jsx(chunkBSI4BQEX_cjs.Spinner, { size, variant: spinnerVariant }) }) : null
108
+ !isIconOnly && isLoading ? /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: classes.loadingIndicator, children: /* @__PURE__ */ jsxRuntime.jsx(chunkOCYZKZ24_cjs.Spinner, { size, variant: spinnerVariant }) }) : null
108
109
  ] }),
109
110
  /* @__PURE__ */ jsxRuntime.jsx(chunk2MXK2SDR_cjs.VisuallyHidden, { "aria-live": "polite", role: "status", children: isLoading ? "Loading" : "" })
110
111
  ] });
111
112
  const rootClassName = chunkSPDVNY2Z_cjs.cx(classes.root, className);
112
- const element = renderAsLink ? /* @__PURE__ */ jsxRuntime.jsx(
113
- LinkComponent,
113
+ const element = /* @__PURE__ */ jsxRuntime.jsx(
114
+ chunkVPWNRWNO_cjs.ActionElement,
114
115
  {
115
116
  ...ariaAttrs,
117
+ "aria-busy": !renderAsLink && isLoading ? true : void 0,
118
+ "aria-disabled": !renderAsLink && useAriaDisabled ? true : void 0,
116
119
  "aria-label": ariaLabel,
120
+ as,
117
121
  className: rootClassName,
118
122
  "data-testid": dataTestId,
119
- href,
120
- onClick: handleLinkClick,
121
- onKeyDown: handleLinkKeyDown,
122
- ref,
123
- rel: linkRel,
124
- style,
125
- target,
126
- to: LinkComponent === "a" ? void 0 : href,
127
- children: buttonContent
128
- }
129
- ) : /* @__PURE__ */ jsxRuntime.jsx(
130
- "button",
131
- {
132
- ...ariaAttrs,
133
- "aria-busy": isLoading || void 0,
134
- "aria-disabled": useAriaDisabled || void 0,
135
- "aria-label": ariaLabel,
136
- className: rootClassName,
137
- "data-testid": dataTestId,
138
- disabled: useAriaDisabled ? void 0 : buttonDisabled,
139
123
  form,
124
+ href: renderAsLink ? href : void 0,
125
+ isDisabled: !renderAsLink && !useAriaDisabled ? buttonDisabled : void 0,
126
+ isLink: renderAsLink,
140
127
  name,
141
- onClick: handleButtonClick,
142
- onKeyDown: handleButtonKeyDown,
128
+ onClick: renderAsLink ? handleLinkClick : handleButtonClick,
129
+ onKeyDown: renderAsLink ? handleLinkKeyDown : handleButtonKeyDown,
143
130
  ref,
131
+ rel: renderAsLink ? linkRel : void 0,
144
132
  style,
133
+ target: renderAsLink ? target : void 0,
145
134
  type,
146
135
  value,
147
136
  children: buttonContent
148
137
  }
149
138
  );
150
- if (tooltip != null) {
151
- return /* @__PURE__ */ jsxRuntime.jsx(chunkJSAYTQTJ_cjs.Tooltip, { content: tooltip, children: element });
139
+ if (effectiveTooltip != null) {
140
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkGJZAGTPV_cjs.Tooltip, { content: effectiveTooltip, children: element });
152
141
  }
153
142
  return element;
154
143
  }
155
144
  Button.displayName = "Button";
156
145
 
157
146
  exports.Button = Button;
158
- //# sourceMappingURL=chunk-5XMWGK3O.cjs.map
159
- //# sourceMappingURL=chunk-5XMWGK3O.cjs.map
147
+ //# sourceMappingURL=chunk-WOVSJHY6.cjs.map
148
+ //# sourceMappingURL=chunk-WOVSJHY6.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Button/Button.tsx"],"names":["useButtonGroup","getAriaLabel","isReactNode","useRel","buttonRecipe","jsxs","Fragment","Spinner","Icon","jsx","VisuallyHidden","cx","ActionElement","Tooltip"],"mappings":"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","file":"chunk-WOVSJHY6.cjs","sourcesContent":["import type {\n CSSProperties,\n JSX,\n KeyboardEvent,\n MouseEvent,\n MouseEventHandler,\n ReactNode,\n Ref,\n} from 'react';\nimport {buttonRecipe} from 'components/Button/Button.recipe';\nimport type {ButtonSize, ButtonVariant} from 'components/Button/Button.types';\nimport {useButtonGroup} from 'components/ButtonGroup/ButtonGroupContext';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport type {LinkComponent} from 'components/Link';\nimport {Spinner} from 'components/Spinner';\nimport {Tooltip} from 'components/Tooltip';\nimport {VisuallyHidden} from 'internal';\nimport {ActionElement} from 'internal/ActionElement';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {getAriaLabel, useRel} from 'internal/linkAccessibility';\n\nexport type {ButtonSize} from 'components/Button/Button.types';\n\n/**\n * A versatile action element that renders as a `<button>` or a link depending\n * on whether `href` is provided. Supports explicit loading states, icon-only\n * modes, link buttons, and tooltips.\n */\ninterface ButtonBaseProps {\n /**\n * Identifies the element(s) whose contents are controlled by the button.\n */\n 'aria-controls'?: string;\n /**\n * Indicates the current item in a set.\n */\n 'aria-current'?: 'page' | 'step' | 'location' | 'date' | 'time';\n /**\n * Identifies the element(s) that describe the button.\n */\n 'aria-describedby'?: string;\n /**\n * Identifies the element that provides a detailed description.\n */\n 'aria-details'?: string;\n /**\n * Indicates whether a controlled element is expanded or collapsed.\n */\n 'aria-expanded'?: boolean;\n /**\n * Indicates the button opens an interactive popup element.\n */\n 'aria-haspopup'?: boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';\n /**\n * Indicates whether the element is exposed to the accessibility API.\n */\n 'aria-hidden'?: boolean;\n /**\n * Keyboard shortcuts that activate or focus the button.\n */\n 'aria-keyshortcuts'?: string;\n /**\n * Accessible label that overrides the visible `label` for assistive\n * technologies. Use when the visible text is too terse (e.g. a page\n * number) and a longer description is needed.\n */\n 'aria-label'?: string;\n /**\n * Identifies the element(s) that label the button.\n */\n 'aria-labelledby'?: string;\n /**\n * Identifies element(s) owned by the button that are not DOM children.\n */\n 'aria-owns'?: string;\n /**\n * Indicates the current pressed state of a toggle button.\n */\n 'aria-pressed'?: boolean | 'mixed';\n /**\n * Human-readable description of the role of the button.\n */\n 'aria-roledescription'?: string;\n /**\n * Custom link component to render when `href` is set. Falls back to the\n * component provided by `LinkProvider`, or a plain `<a>` tag.\n */\n as?: LinkComponent;\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Content rendered after the label, such as a badge or count. Hidden in\n * icon-only mode.\n */\n endContent?: ReactNode;\n /**\n * HTML `form` attribute associating the button with a `<form>` by ID.\n */\n form?: string;\n /**\n * URL to navigate to. When set and the button is not isDisabled, the component\n * renders as a link element.\n */\n href?: string;\n /**\n * Whether the button is disabled. Prevents interaction and applies disabled\n * styling.\n */\n isDisabled?: boolean;\n /**\n * Whether the button is in a loading state. Shows a spinner overlay,\n * disables interaction, and announces \"Loading\" to assistive technologies.\n */\n isLoading?: boolean;\n /**\n * Text label for the button. Always required for accessibility even when\n * `isIconOnly` is true.\n */\n label: string;\n /**\n * HTML `name` attribute for form submission.\n */\n name?: string;\n /**\n * Click event handler.\n */\n onClick?: MouseEventHandler<HTMLElement>;\n /**\n * Keyboard event handler for the root element.\n */\n onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Link `rel` attribute (e.g., `\"noopener\"`). Only applies when rendering\n * as a link.\n */\n rel?: string;\n /**\n * Visual size of the button.\n */\n size?: ButtonSize;\n /**\n * Arbitrary content rendered before the label (after the icon, if present).\n * Hidden in icon-only mode.\n */\n startContent?: ReactNode;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n /**\n * Link `target` attribute (e.g., `\"_blank\"`). Only applies when rendering\n * as a link.\n */\n target?: string;\n /**\n * Tooltip text shown on hover. Defaults to `label` when `isIconOnly` is true\n * (since the label is otherwise not visible); pass an explicit value to\n * override, or `undefined` to keep the default. When set on a disabled\n * button, `aria-disabled` is used instead of the `disabled` attribute so the\n * tooltip remains accessible.\n */\n tooltip?: string;\n /**\n * HTML button `type` attribute.\n */\n type?: 'button' | 'submit' | 'reset';\n /**\n * HTML `value` attribute for form submission.\n */\n value?: string;\n /**\n * Visual style variant.\n */\n variant?: ButtonVariant;\n}\n\nexport type ButtonProps =\n | (ButtonBaseProps & {\n /**\n * Icon element rendered before the label. Required in icon-only mode.\n */\n icon: IconComponent;\n /**\n * Visually hides the label, showing only the icon. The `label` prop is\n * still required and used as `aria-label`.\n */\n isIconOnly: true;\n })\n | (ButtonBaseProps & {\n /**\n * Icon element rendered before the label.\n */\n icon?: IconComponent;\n /**\n * Visually hides the label, showing only the icon. The `label` prop is\n * still required and used as `aria-label`.\n */\n isIconOnly?: false;\n });\n\nexport function Button({\n label,\n 'aria-controls': ariaControls,\n 'aria-current': ariaCurrent,\n 'aria-label': ariaLabelProp,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHaspopup,\n 'aria-hidden': ariaHidden,\n 'aria-keyshortcuts': ariaKeyshortcuts,\n 'aria-labelledby': ariaLabelledby,\n 'aria-owns': ariaOwns,\n 'aria-pressed': ariaPressed,\n 'aria-roledescription': ariaRoledescription,\n href,\n as,\n target,\n rel,\n variant,\n size: sizeProp,\n className,\n 'data-testid': dataTestId,\n style,\n type = 'button',\n ref,\n isDisabled = false,\n isLoading = false,\n icon,\n isIconOnly = false,\n endContent,\n startContent,\n tooltip,\n onClick,\n onKeyDown,\n form,\n name,\n value,\n}: ButtonProps): JSX.Element {\n const buttonGroup = useButtonGroup();\n const size = sizeProp ?? buttonGroup?.size ?? 'md';\n const buttonDisabled =\n isDisabled || buttonGroup?.isDisabled === true || isLoading;\n // Icon-only buttons have no visible text, so default their tooltip to the\n // accessible `label` unless an explicit tooltip is provided.\n const effectiveTooltip = tooltip ?? (isIconOnly ? label : undefined);\n // Only an explicit tooltip swaps native `disabled` for `aria-disabled` (to\n // keep the tooltip hoverable while disabled); the icon-only default must not\n // change disabled semantics.\n const useAriaDisabled = tooltip != null && buttonDisabled;\n const renderAsLink = href != null && !buttonDisabled;\n const opensInNewTab = renderAsLink && target === '_blank';\n const ariaLabel =\n ariaLabelProp ??\n getAriaLabel(\n isIconOnly ||\n isLoading ||\n isReactNode(startContent) ||\n isReactNode(endContent) ||\n opensInNewTab\n ? label\n : undefined,\n opensInNewTab,\n );\n const linkRel = useRel({target, rel});\n const spinnerVariant =\n variant === 'primary' || variant === 'destructive' || variant === 'onSolid'\n ? 'onMedia'\n : 'default';\n\n const classes = buttonRecipe({variant, size, iconOnly: isIconOnly});\n\n const ariaAttrs = {\n 'aria-controls': ariaControls,\n 'aria-current': ariaCurrent,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHaspopup,\n 'aria-hidden': ariaHidden,\n 'aria-keyshortcuts': ariaKeyshortcuts,\n 'aria-labelledby': ariaLabelledby,\n 'aria-owns': ariaOwns,\n 'aria-pressed': ariaPressed,\n 'aria-roledescription': ariaRoledescription,\n };\n\n const handleButtonClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (buttonDisabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n const handleLinkClick = (event: MouseEvent<HTMLAnchorElement>) => {\n onClick?.(event);\n };\n\n const handleButtonKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (useAriaDisabled && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n return;\n }\n\n onKeyDown?.(event);\n };\n\n const handleLinkKeyDown = (event: KeyboardEvent<HTMLAnchorElement>) => {\n onKeyDown?.(event);\n };\n\n const buttonContent = (\n <>\n <span aria-hidden={isLoading || undefined} className={classes.content}>\n {icon != null ? (\n <span aria-hidden=\"true\" className={classes.icon}>\n {isIconOnly && isLoading ? (\n <Spinner size={size} variant={spinnerVariant} />\n ) : (\n <Icon icon={icon} size={size} />\n )}\n </span>\n ) : null}\n {!isIconOnly && isReactNode(startContent) ? (\n <span className={classes.startContent}>{startContent}</span>\n ) : null}\n {!isIconOnly ? <span className={classes.label}>{label}</span> : null}\n {!isIconOnly && isReactNode(endContent) ? (\n <span className={classes.endContent}>{endContent}</span>\n ) : null}\n {!isIconOnly && isLoading ? (\n <span aria-hidden=\"true\" className={classes.loadingIndicator}>\n <Spinner size={size} variant={spinnerVariant} />\n </span>\n ) : null}\n </span>\n <VisuallyHidden aria-live=\"polite\" role=\"status\">\n {isLoading ? 'Loading' : ''}\n </VisuallyHidden>\n </>\n );\n\n const rootClassName = cx(classes.root, className);\n\n const element = (\n <ActionElement\n {...ariaAttrs}\n aria-busy={!renderAsLink && isLoading ? true : undefined}\n aria-disabled={!renderAsLink && useAriaDisabled ? true : undefined}\n aria-label={ariaLabel}\n as={as}\n className={rootClassName}\n data-testid={dataTestId}\n form={form}\n href={renderAsLink ? href : undefined}\n isDisabled={\n !renderAsLink && !useAriaDisabled ? buttonDisabled : undefined\n }\n isLink={renderAsLink}\n name={name}\n onClick={renderAsLink ? handleLinkClick : handleButtonClick}\n onKeyDown={renderAsLink ? handleLinkKeyDown : handleButtonKeyDown}\n ref={ref}\n rel={renderAsLink ? linkRel : undefined}\n style={style}\n target={renderAsLink ? target : undefined}\n type={type}\n value={value}>\n {buttonContent}\n </ActionElement>\n );\n\n if (effectiveTooltip != null) {\n return <Tooltip content={effectiveTooltip}>{element}</Tooltip>;\n }\n\n return element;\n}\n\nButton.displayName = 'Button';\n"]}
@@ -1,4 +1,4 @@
1
- import { Text } from './chunk-RJEZBOSH.js';
1
+ import { Text } from './chunk-5GSRIOXE.js';
2
2
  import { sva } from './chunk-IAVZKGZS.js';
3
3
  import { cx } from './chunk-PPNETWIP.js';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -103,5 +103,5 @@ function Spinner({
103
103
  Spinner.displayName = "Spinner";
104
104
 
105
105
  export { Spinner };
106
- //# sourceMappingURL=chunk-2VAUVJVG.js.map
107
- //# sourceMappingURL=chunk-2VAUVJVG.js.map
106
+ //# sourceMappingURL=chunk-X2P5SPGB.js.map
107
+ //# sourceMappingURL=chunk-X2P5SPGB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Spinner/Spinner.recipe.ts","../src/components/Spinner/Spinner.tsx"],"names":[],"mappings":"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","file":"chunk-2VAUVJVG.js","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const spinnerRecipe = sva({\n slots: ['root', 'visual'],\n base: {\n root: {\n '--spinner-size': 'var(--silver-sizes-icon-md)',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n verticalAlign: 'middle',\n color: 'primary',\n w: 'var(--spinner-size)',\n h: 'var(--spinner-size)',\n },\n visual: {\n display: 'block',\n w: 'var(--spinner-size)',\n h: 'var(--spinner-size)',\n flexShrink: 0,\n aspectRatio: 'square',\n borderRadius: 'full',\n borderWidth: 'emphasized',\n borderStyle: 'solid',\n borderColor: 'currentColor',\n borderTopColor: 'transparent',\n animation: 'spin 0.8s linear infinite',\n '@media (prefers-reduced-motion: reduce)': {\n animation: 'none',\n },\n },\n },\n variants: {\n size: {\n sm: {\n root: {'--spinner-size': 'var(--silver-sizes-icon-sm)'},\n },\n md: {\n root: {'--spinner-size': 'var(--silver-sizes-icon-md)'},\n },\n lg: {\n root: {'--spinner-size': 'var(--silver-sizes-icon-lg)'},\n },\n xl: {\n root: {'--spinner-size': '2.25rem'},\n },\n },\n variant: {\n default: {root: {color: 'primary'}},\n onMedia: {root: {color: 'fg.onPrimary'}},\n },\n hasLabel: {\n true: {\n root: {\n flexDirection: 'column',\n gap: '2',\n w: 'auto',\n h: 'auto',\n },\n },\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'default',\n hasLabel: false,\n },\n});\n\nexport type SpinnerVariants = RecipeVariantProps<typeof spinnerRecipe>;\n","import type {CSSProperties, Ref} from 'react';\nimport {spinnerRecipe} from 'components/Spinner/Spinner.recipe';\nimport type {\n SpinnerSize,\n SpinnerVariant,\n} from 'components/Spinner/Spinner.types';\nimport {Text} from 'components/Text';\nimport {cx} from 'internal/cx';\n\nexport interface SpinnerProps {\n /**\n * Accessible label for the loading status. Defaults to a string label when\n * provided, otherwise \"Loading\".\n */\n 'aria-label'?: string;\n /**\n * Optionally adjust rendering by setting the className.\n */\n className?: string;\n /**\n * Test id applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Optional visible label shown below the spinner.\n */\n label?: string;\n /**\n * Ref forwarded to the root span element.\n */\n ref?: Ref<HTMLSpanElement>;\n /**\n * Visual size of the spinner. Matches Button size names. Default is `md`.\n */\n size?: SpinnerSize;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n /**\n * Visual style variant for the spinner. Default is `default`.\n */\n variant?: SpinnerVariant;\n}\n\n/**\n * A compact loading indicator for pending or indeterminate work.\n *\n * Spinner renders with `role=\"status\"` and an accessible name so assistive\n * technologies can announce loading state without exposing the decorative visual.\n */\nexport function Spinner({\n size,\n variant,\n label,\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n 'aria-label': ariaLabelFromProps,\n}: SpinnerProps): React.JSX.Element {\n const hasLabel = typeof label === 'string' && label !== '';\n const ariaLabel =\n ariaLabelFromProps != null && ariaLabelFromProps !== ''\n ? ariaLabelFromProps\n : hasLabel\n ? label\n : 'Loading';\n const labelColor = variant === 'onMedia' ? 'inherit' : undefined;\n const classes = spinnerRecipe({size, variant, hasLabel});\n\n return (\n <span\n aria-label={ariaLabel}\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n role=\"status\"\n style={style}>\n <span aria-hidden=\"true\" className={classes.visual} />\n {hasLabel ? (\n <Text as=\"span\" color={labelColor} type=\"label\">\n {label}\n </Text>\n ) : null}\n </span>\n );\n}\n\nSpinner.displayName = 'Spinner';\n"]}
1
+ {"version":3,"sources":["../src/components/Spinner/Spinner.recipe.ts","../src/components/Spinner/Spinner.tsx"],"names":[],"mappings":"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","file":"chunk-X2P5SPGB.js","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const spinnerRecipe = sva({\n slots: ['root', 'visual'],\n base: {\n root: {\n '--spinner-size': 'var(--silver-sizes-icon-md)',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n verticalAlign: 'middle',\n color: 'primary',\n w: 'var(--spinner-size)',\n h: 'var(--spinner-size)',\n },\n visual: {\n display: 'block',\n w: 'var(--spinner-size)',\n h: 'var(--spinner-size)',\n flexShrink: 0,\n aspectRatio: 'square',\n borderRadius: 'full',\n borderWidth: 'emphasized',\n borderStyle: 'solid',\n borderColor: 'currentColor',\n borderTopColor: 'transparent',\n animation: 'spin 0.8s linear infinite',\n '@media (prefers-reduced-motion: reduce)': {\n animation: 'none',\n },\n },\n },\n variants: {\n size: {\n sm: {\n root: {'--spinner-size': 'var(--silver-sizes-icon-sm)'},\n },\n md: {\n root: {'--spinner-size': 'var(--silver-sizes-icon-md)'},\n },\n lg: {\n root: {'--spinner-size': 'var(--silver-sizes-icon-lg)'},\n },\n xl: {\n root: {'--spinner-size': '2.25rem'},\n },\n },\n variant: {\n default: {root: {color: 'primary'}},\n onMedia: {root: {color: 'fg.onPrimary'}},\n },\n hasLabel: {\n true: {\n root: {\n flexDirection: 'column',\n gap: '2',\n w: 'auto',\n h: 'auto',\n },\n },\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'default',\n hasLabel: false,\n },\n});\n\nexport type SpinnerVariants = RecipeVariantProps<typeof spinnerRecipe>;\n","import type {CSSProperties, Ref} from 'react';\nimport {spinnerRecipe} from 'components/Spinner/Spinner.recipe';\nimport type {\n SpinnerSize,\n SpinnerVariant,\n} from 'components/Spinner/Spinner.types';\nimport {Text} from 'components/Text';\nimport {cx} from 'internal/cx';\n\nexport interface SpinnerProps {\n /**\n * Accessible label for the loading status. Defaults to a string label when\n * provided, otherwise \"Loading\".\n */\n 'aria-label'?: string;\n /**\n * Optionally adjust rendering by setting the className.\n */\n className?: string;\n /**\n * Test id applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Optional visible label shown below the spinner.\n */\n label?: string;\n /**\n * Ref forwarded to the root span element.\n */\n ref?: Ref<HTMLSpanElement>;\n /**\n * Visual size of the spinner. Matches Button size names. Default is `md`.\n */\n size?: SpinnerSize;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n /**\n * Visual style variant for the spinner. Default is `default`.\n */\n variant?: SpinnerVariant;\n}\n\n/**\n * A compact loading indicator for pending or indeterminate work.\n *\n * Spinner renders with `role=\"status\"` and an accessible name so assistive\n * technologies can announce loading state without exposing the decorative visual.\n */\nexport function Spinner({\n size,\n variant,\n label,\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n 'aria-label': ariaLabelFromProps,\n}: SpinnerProps): React.JSX.Element {\n const hasLabel = typeof label === 'string' && label !== '';\n const ariaLabel =\n ariaLabelFromProps != null && ariaLabelFromProps !== ''\n ? ariaLabelFromProps\n : hasLabel\n ? label\n : 'Loading';\n const labelColor = variant === 'onMedia' ? 'inherit' : undefined;\n const classes = spinnerRecipe({size, variant, hasLabel});\n\n return (\n <span\n aria-label={ariaLabel}\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n role=\"status\"\n style={style}>\n <span aria-hidden=\"true\" className={classes.visual} />\n {hasLabel ? (\n <Text as=\"span\" color={labelColor} type=\"label\">\n {label}\n </Text>\n ) : null}\n </span>\n );\n}\n\nSpinner.displayName = 'Spinner';\n"]}
@@ -1,4 +1,4 @@
1
- import { DropdownMenuItem, useMenuKeyboard, renderMenuItems, DropdownMenuContext, formatMenuWidth } from './chunk-TH537HOM.js';
1
+ import { DropdownMenuItem, useMenuKeyboard, renderMenuItems, DropdownMenuContext, formatMenuWidth } from './chunk-PQXPYN23.js';
2
2
  import { css } from './chunk-OD4DHHZH.js';
3
3
  import { cx } from './chunk-PPNETWIP.js';
4
4
  import { useId, useRef, useState, useCallback, useEffect, useImperativeHandle, useMemo } from 'react';
@@ -202,5 +202,5 @@ function ContextMenu({
202
202
  ContextMenu.displayName = "ContextMenu";
203
203
 
204
204
  export { ContextMenu, ContextMenuItem };
205
- //# sourceMappingURL=chunk-PBQMHXVO.js.map
206
- //# sourceMappingURL=chunk-PBQMHXVO.js.map
205
+ //# sourceMappingURL=chunk-XUCLNECV.js.map
206
+ //# sourceMappingURL=chunk-XUCLNECV.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"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","file":"chunk-PBQMHXVO.js","sourcesContent":["import {\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport type {ButtonSize} from 'components/Button';\nimport {\n DropdownMenuContext,\n DropdownMenuItem,\n type DropdownMenuDivider,\n type DropdownMenuItemData,\n type DropdownMenuItemProps,\n type DropdownMenuOption,\n type DropdownMenuSection,\n} from 'components/DropdownMenu';\nimport {\n formatMenuWidth,\n renderMenuItems,\n useMenuKeyboard,\n} from 'components/DropdownMenu/menuUtils';\nimport {cx} from 'internal/cx';\nimport {css} from 'styled-system/css';\n\nexport type ContextMenuSize = ButtonSize;\nexport type ContextMenuItemData = DropdownMenuItemData;\nexport type ContextMenuItemProps = DropdownMenuItemProps;\nexport type ContextMenuDivider = DropdownMenuDivider;\nexport type ContextMenuSection = DropdownMenuSection;\nexport type ContextMenuOption = DropdownMenuOption;\nexport const ContextMenuItem = DropdownMenuItem;\n\ninterface ContextMenuBaseProps {\n /**\n * The region that triggers the context menu on right-click.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the menu surface.\n */\n className?: string;\n /**\n * Test ID applied to the trigger wrapper.\n */\n 'data-testid'?: string;\n /**\n * Whether to auto-focus the first menu item on open.\n * @default true\n */\n hasAutoFocus?: boolean;\n /**\n * Whether the context menu is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Width of the menu surface.\n * @default 160\n */\n menuWidth?: number | string;\n /**\n * Called when the menu open state changes.\n */\n onOpenChange?: (isOpen: boolean) => void;\n /**\n * Ref forwarded to the trigger wrapper.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Menu item size.\n * @default 'md'\n */\n size?: ContextMenuSize;\n /**\n * Inline styles applied to the menu surface.\n */\n style?: CSSProperties;\n}\n\ninterface ContextMenuDataProps extends ContextMenuBaseProps {\n items: ReadonlyArray<ContextMenuOption>;\n menuContent?: never;\n}\n\ninterface ContextMenuCompoundProps extends ContextMenuBaseProps {\n items?: never;\n menuContent: ReactNode;\n}\n\nexport type ContextMenuProps = ContextMenuDataProps | ContextMenuCompoundProps;\n\nconst styles = {\n trigger: css({\n display: 'contents',\n }),\n menu: css({\n display: 'none',\n flexDirection: 'column',\n gap: '0.5',\n maxH: '80',\n minW: '40',\n m: 0,\n overflowY: 'auto',\n p: '1',\n borderWidth: 0,\n borderRadius: 'md',\n _open: {\n display: 'flex',\n },\n bg: 'bg',\n boxShadow: 'lg',\n borderStyle: 'solid',\n borderColor: 'border',\n }),\n} as const;\n\nfunction isPopoverOpen(element: HTMLElement | null): boolean {\n if (element == null) {\n return false;\n }\n if (element.hasAttribute('popover-open')) {\n return true;\n }\n try {\n return element.matches(':popover-open');\n } catch {\n return false;\n }\n}\n\n/**\n * Right-click context menu for contextual actions on a region.\n */\nexport function ContextMenu({\n children,\n className,\n 'data-testid': dataTestId,\n hasAutoFocus = true,\n isDisabled = false,\n menuWidth = 160,\n onOpenChange,\n ref,\n size = 'md',\n style,\n ...props\n}: ContextMenuProps): React.JSX.Element {\n const menuId = useId();\n const menuRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [position, setPosition] = useState({x: 0, y: 0});\n const items = 'items' in props ? props.items : undefined;\n const menuContent = 'menuContent' in props ? props.menuContent : undefined;\n\n const hide = useCallback(() => {\n if (!isOpen) {\n return;\n }\n menuRef.current?.hidePopover();\n setIsOpen(false);\n onOpenChange?.(false);\n }, [isOpen, onOpenChange]);\n\n const focusFirstItem = useCallback(() => {\n const firstItem = menuRef.current?.querySelector<HTMLElement>(\n '[role=\"menuitem\"]:not(:disabled):not([aria-disabled=\"true\"])',\n );\n firstItem?.focus();\n }, []);\n\n const show = useCallback(\n (x: number, y: number) => {\n setPosition({x, y});\n if (isPopoverOpen(menuRef.current)) {\n menuRef.current?.hidePopover();\n }\n menuRef.current?.showPopover();\n setIsOpen(true);\n onOpenChange?.(true);\n requestAnimationFrame(() => {\n if (menuRef.current != null) {\n const rect = menuRef.current.getBoundingClientRect();\n const margin = 4;\n const clampedX = Math.min(x, window.innerWidth - rect.width - margin);\n const clampedY = Math.min(\n y,\n window.innerHeight - rect.height - margin,\n );\n setPosition({\n x: Math.max(0, clampedX),\n y: Math.max(0, clampedY),\n });\n }\n if (hasAutoFocus) {\n focusFirstItem();\n }\n });\n },\n [focusFirstItem, hasAutoFocus, onOpenChange],\n );\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n const handleMouseDown = (event: globalThis.MouseEvent) => {\n const target = event.target;\n if (\n target instanceof Node &&\n (menuRef.current?.contains(target) === true ||\n triggerRef.current?.contains(target) === true)\n ) {\n return;\n }\n hide();\n };\n\n document.addEventListener('mousedown', handleMouseDown);\n return () => {\n document.removeEventListener('mousedown', handleMouseDown);\n };\n }, [hide, isOpen]);\n\n useImperativeHandle(ref, () => triggerRef.current as HTMLDivElement);\n\n const contextValue = useMemo(\n () => ({\n closeMenu: hide,\n menuSize: size,\n }),\n [hide, size],\n );\n\n const handleContextMenu = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n if (isDisabled) {\n return;\n }\n event.preventDefault();\n show(event.clientX, event.clientY);\n },\n [isDisabled, show],\n );\n\n const handleTriggerKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (isDisabled) {\n return;\n }\n if (\n event.key !== 'ContextMenu' &&\n !(event.shiftKey && event.key === 'F10')\n ) {\n return;\n }\n event.preventDefault();\n const rect = event.currentTarget.getBoundingClientRect();\n show(rect.left, rect.bottom);\n },\n [isDisabled, show],\n );\n\n const handleMenuKeyDown = useMenuKeyboard(menuRef, hide);\n\n const menuNode = useMemo(\n (): ReactNode => (items == null ? menuContent : renderMenuItems(items)),\n [items, menuContent],\n );\n\n return (\n <>\n <div\n aria-controls={isOpen ? menuId : undefined}\n aria-expanded={isOpen}\n aria-haspopup=\"menu\"\n className={styles.trigger}\n data-testid={dataTestId}\n onContextMenu={handleContextMenu}\n onKeyDown={handleTriggerKeyDown}\n ref={triggerRef}\n role=\"button\"\n tabIndex={0}>\n {children}\n </div>\n <div\n aria-label=\"Context menu\"\n className={cx(styles.menu, className)}\n id={menuId}\n onKeyDown={handleMenuKeyDown}\n popover=\"manual\"\n ref={menuRef}\n role=\"menu\"\n style={{\n left: position.x,\n position: 'fixed',\n top: position.y,\n width: formatMenuWidth(menuWidth),\n ...style,\n }}\n tabIndex={-1}>\n <DropdownMenuContext value={contextValue}>\n {menuNode}\n </DropdownMenuContext>\n </div>\n </>\n );\n}\n\nContextMenu.displayName = 'ContextMenu';\n"]}
1
+ {"version":3,"sources":["../src/components/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"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","file":"chunk-XUCLNECV.js","sourcesContent":["import {\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport type {ButtonSize} from 'components/Button';\nimport {\n DropdownMenuContext,\n DropdownMenuItem,\n type DropdownMenuDivider,\n type DropdownMenuItemData,\n type DropdownMenuItemProps,\n type DropdownMenuOption,\n type DropdownMenuSection,\n} from 'components/DropdownMenu';\nimport {\n formatMenuWidth,\n renderMenuItems,\n useMenuKeyboard,\n} from 'components/DropdownMenu/menuUtils';\nimport {cx} from 'internal/cx';\nimport {css} from 'styled-system/css';\n\nexport type ContextMenuSize = ButtonSize;\nexport type ContextMenuItemData = DropdownMenuItemData;\nexport type ContextMenuItemProps = DropdownMenuItemProps;\nexport type ContextMenuDivider = DropdownMenuDivider;\nexport type ContextMenuSection = DropdownMenuSection;\nexport type ContextMenuOption = DropdownMenuOption;\nexport const ContextMenuItem = DropdownMenuItem;\n\ninterface ContextMenuBaseProps {\n /**\n * The region that triggers the context menu on right-click.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the menu surface.\n */\n className?: string;\n /**\n * Test ID applied to the trigger wrapper.\n */\n 'data-testid'?: string;\n /**\n * Whether to auto-focus the first menu item on open.\n * @default true\n */\n hasAutoFocus?: boolean;\n /**\n * Whether the context menu is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Width of the menu surface.\n * @default 160\n */\n menuWidth?: number | string;\n /**\n * Called when the menu open state changes.\n */\n onOpenChange?: (isOpen: boolean) => void;\n /**\n * Ref forwarded to the trigger wrapper.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Menu item size.\n * @default 'md'\n */\n size?: ContextMenuSize;\n /**\n * Inline styles applied to the menu surface.\n */\n style?: CSSProperties;\n}\n\ninterface ContextMenuDataProps extends ContextMenuBaseProps {\n items: ReadonlyArray<ContextMenuOption>;\n menuContent?: never;\n}\n\ninterface ContextMenuCompoundProps extends ContextMenuBaseProps {\n items?: never;\n menuContent: ReactNode;\n}\n\nexport type ContextMenuProps = ContextMenuDataProps | ContextMenuCompoundProps;\n\nconst styles = {\n trigger: css({\n display: 'contents',\n }),\n menu: css({\n display: 'none',\n flexDirection: 'column',\n gap: '0.5',\n maxH: '80',\n minW: '40',\n m: 0,\n overflowY: 'auto',\n p: '1',\n borderWidth: 0,\n borderRadius: 'md',\n _open: {\n display: 'flex',\n },\n bg: 'bg',\n boxShadow: 'lg',\n borderStyle: 'solid',\n borderColor: 'border',\n }),\n} as const;\n\nfunction isPopoverOpen(element: HTMLElement | null): boolean {\n if (element == null) {\n return false;\n }\n if (element.hasAttribute('popover-open')) {\n return true;\n }\n try {\n return element.matches(':popover-open');\n } catch {\n return false;\n }\n}\n\n/**\n * Right-click context menu for contextual actions on a region.\n */\nexport function ContextMenu({\n children,\n className,\n 'data-testid': dataTestId,\n hasAutoFocus = true,\n isDisabled = false,\n menuWidth = 160,\n onOpenChange,\n ref,\n size = 'md',\n style,\n ...props\n}: ContextMenuProps): React.JSX.Element {\n const menuId = useId();\n const menuRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [position, setPosition] = useState({x: 0, y: 0});\n const items = 'items' in props ? props.items : undefined;\n const menuContent = 'menuContent' in props ? props.menuContent : undefined;\n\n const hide = useCallback(() => {\n if (!isOpen) {\n return;\n }\n menuRef.current?.hidePopover();\n setIsOpen(false);\n onOpenChange?.(false);\n }, [isOpen, onOpenChange]);\n\n const focusFirstItem = useCallback(() => {\n const firstItem = menuRef.current?.querySelector<HTMLElement>(\n '[role=\"menuitem\"]:not(:disabled):not([aria-disabled=\"true\"])',\n );\n firstItem?.focus();\n }, []);\n\n const show = useCallback(\n (x: number, y: number) => {\n setPosition({x, y});\n if (isPopoverOpen(menuRef.current)) {\n menuRef.current?.hidePopover();\n }\n menuRef.current?.showPopover();\n setIsOpen(true);\n onOpenChange?.(true);\n requestAnimationFrame(() => {\n if (menuRef.current != null) {\n const rect = menuRef.current.getBoundingClientRect();\n const margin = 4;\n const clampedX = Math.min(x, window.innerWidth - rect.width - margin);\n const clampedY = Math.min(\n y,\n window.innerHeight - rect.height - margin,\n );\n setPosition({\n x: Math.max(0, clampedX),\n y: Math.max(0, clampedY),\n });\n }\n if (hasAutoFocus) {\n focusFirstItem();\n }\n });\n },\n [focusFirstItem, hasAutoFocus, onOpenChange],\n );\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n const handleMouseDown = (event: globalThis.MouseEvent) => {\n const target = event.target;\n if (\n target instanceof Node &&\n (menuRef.current?.contains(target) === true ||\n triggerRef.current?.contains(target) === true)\n ) {\n return;\n }\n hide();\n };\n\n document.addEventListener('mousedown', handleMouseDown);\n return () => {\n document.removeEventListener('mousedown', handleMouseDown);\n };\n }, [hide, isOpen]);\n\n useImperativeHandle(ref, () => triggerRef.current as HTMLDivElement);\n\n const contextValue = useMemo(\n () => ({\n closeMenu: hide,\n menuSize: size,\n }),\n [hide, size],\n );\n\n const handleContextMenu = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n if (isDisabled) {\n return;\n }\n event.preventDefault();\n show(event.clientX, event.clientY);\n },\n [isDisabled, show],\n );\n\n const handleTriggerKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (isDisabled) {\n return;\n }\n if (\n event.key !== 'ContextMenu' &&\n !(event.shiftKey && event.key === 'F10')\n ) {\n return;\n }\n event.preventDefault();\n const rect = event.currentTarget.getBoundingClientRect();\n show(rect.left, rect.bottom);\n },\n [isDisabled, show],\n );\n\n const handleMenuKeyDown = useMenuKeyboard(menuRef, hide);\n\n const menuNode = useMemo(\n (): ReactNode => (items == null ? menuContent : renderMenuItems(items)),\n [items, menuContent],\n );\n\n return (\n <>\n <div\n aria-controls={isOpen ? menuId : undefined}\n aria-expanded={isOpen}\n aria-haspopup=\"menu\"\n className={styles.trigger}\n data-testid={dataTestId}\n onContextMenu={handleContextMenu}\n onKeyDown={handleTriggerKeyDown}\n ref={triggerRef}\n role=\"button\"\n tabIndex={0}>\n {children}\n </div>\n <div\n aria-label=\"Context menu\"\n className={cx(styles.menu, className)}\n id={menuId}\n onKeyDown={handleMenuKeyDown}\n popover=\"manual\"\n ref={menuRef}\n role=\"menu\"\n style={{\n left: position.x,\n position: 'fixed',\n top: position.y,\n width: formatMenuWidth(menuWidth),\n ...style,\n }}\n tabIndex={-1}>\n <DropdownMenuContext value={contextValue}>\n {menuNode}\n </DropdownMenuContext>\n </div>\n </>\n );\n}\n\nContextMenu.displayName = 'ContextMenu';\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk3Z5PF75J_cjs = require('./chunk-3Z5PF75J.cjs');
3
+ var chunkCKDB7QNT_cjs = require('./chunk-CKDB7QNT.cjs');
4
4
  var chunkQAO6QMNQ_cjs = require('./chunk-QAO6QMNQ.cjs');
5
5
  var chunkJ4PIYOWT_cjs = require('./chunk-J4PIYOWT.cjs');
6
6
  var chunkZ6RT3WPE_cjs = require('./chunk-Z6RT3WPE.cjs');
@@ -260,9 +260,9 @@ function Step({
260
260
  }
261
261
  ) : /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": "true", className: classes.indicator, children: indicatorContent });
262
262
  const labelNode = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.labelRow, children: [
263
- /* @__PURE__ */ jsxRuntime.jsx(chunk3Z5PF75J_cjs.Text, { as: "span", className: classes.label, color: "inherit", type: "label", children: label }),
263
+ /* @__PURE__ */ jsxRuntime.jsx(chunkCKDB7QNT_cjs.Text, { as: "span", className: classes.label, color: "inherit", type: "label", children: label }),
264
264
  description != null ? /* @__PURE__ */ jsxRuntime.jsx(
265
- chunk3Z5PF75J_cjs.Text,
265
+ chunkCKDB7QNT_cjs.Text,
266
266
  {
267
267
  as: "span",
268
268
  className: classes.description,
@@ -387,5 +387,5 @@ function Stepper({
387
387
  Stepper.displayName = "Stepper";
388
388
 
389
389
  exports.Stepper = Stepper;
390
- //# sourceMappingURL=chunk-HXIU3SIQ.cjs.map
391
- //# sourceMappingURL=chunk-HXIU3SIQ.cjs.map
390
+ //# sourceMappingURL=chunk-Y2GYPMLW.cjs.map
391
+ //# sourceMappingURL=chunk-Y2GYPMLW.cjs.map