silver-ui 0.8.0 → 0.8.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 (302) hide show
  1. package/dist/{chunk-4GT65SRC.cjs → chunk-263EUXFI.cjs} +9 -9
  2. package/dist/{chunk-4GT65SRC.cjs.map → chunk-263EUXFI.cjs.map} +1 -1
  3. package/dist/{chunk-PZBY3JI7.js → chunk-2EGYYWPB.js} +3 -3
  4. package/dist/{chunk-PZBY3JI7.js.map → chunk-2EGYYWPB.js.map} +1 -1
  5. package/dist/{chunk-2FR4VA32.js → chunk-3CV6IEEY.js} +16 -16
  6. package/dist/{chunk-2FR4VA32.js.map → chunk-3CV6IEEY.js.map} +1 -1
  7. package/dist/{chunk-MNQFCWT7.js → chunk-3TPFJ7NS.js} +7 -7
  8. package/dist/{chunk-MNQFCWT7.js.map → chunk-3TPFJ7NS.js.map} +1 -1
  9. package/dist/{chunk-KPAOAYDY.js → chunk-4G644ETX.js} +13 -13
  10. package/dist/{chunk-KPAOAYDY.js.map → chunk-4G644ETX.js.map} +1 -1
  11. package/dist/{chunk-RZ52RCTU.js → chunk-4MIAF6ZO.js} +4 -4
  12. package/dist/{chunk-RZ52RCTU.js.map → chunk-4MIAF6ZO.js.map} +1 -1
  13. package/dist/{chunk-HIFJC2HY.cjs → chunk-4VYOE2HE.cjs} +6 -6
  14. package/dist/{chunk-HIFJC2HY.cjs.map → chunk-4VYOE2HE.cjs.map} +1 -1
  15. package/dist/{chunk-GKYJZNJQ.cjs → chunk-4XFA2XAB.cjs} +40 -40
  16. package/dist/{chunk-GKYJZNJQ.cjs.map → chunk-4XFA2XAB.cjs.map} +1 -1
  17. package/dist/{chunk-J6XNDFK7.cjs → chunk-4ZJ3P6IF.cjs} +14 -14
  18. package/dist/{chunk-J6XNDFK7.cjs.map → chunk-4ZJ3P6IF.cjs.map} +1 -1
  19. package/dist/{chunk-A377P2JF.js → chunk-5DK3LMS7.js} +4 -4
  20. package/dist/{chunk-A377P2JF.js.map → chunk-5DK3LMS7.js.map} +1 -1
  21. package/dist/{chunk-ZEBWF24G.js → chunk-5EDJRYE4.js} +12 -12
  22. package/dist/{chunk-ZEBWF24G.js.map → chunk-5EDJRYE4.js.map} +1 -1
  23. package/dist/{chunk-K2KOXVGA.cjs → chunk-5KFM5ZNO.cjs} +9 -9
  24. package/dist/{chunk-K2KOXVGA.cjs.map → chunk-5KFM5ZNO.cjs.map} +1 -1
  25. package/dist/{chunk-7275FFQA.cjs → chunk-5P5OSQT2.cjs} +10 -10
  26. package/dist/{chunk-7275FFQA.cjs.map → chunk-5P5OSQT2.cjs.map} +1 -1
  27. package/dist/{chunk-SXLGTRY7.js → chunk-5SCHQS3L.js} +6 -6
  28. package/dist/{chunk-SXLGTRY7.js.map → chunk-5SCHQS3L.js.map} +1 -1
  29. package/dist/{chunk-B333LIQQ.cjs → chunk-6I7MYAPX.cjs} +6 -6
  30. package/dist/{chunk-B333LIQQ.cjs.map → chunk-6I7MYAPX.cjs.map} +1 -1
  31. package/dist/{chunk-7IBLSZ7G.cjs → chunk-7TLGH4VK.cjs} +43 -43
  32. package/dist/{chunk-7IBLSZ7G.cjs.map → chunk-7TLGH4VK.cjs.map} +1 -1
  33. package/dist/{chunk-YKUNVCXP.js → chunk-AJAHLIHQ.js} +3 -3
  34. package/dist/{chunk-YKUNVCXP.js.map → chunk-AJAHLIHQ.js.map} +1 -1
  35. package/dist/{chunk-SQUWNP5G.cjs → chunk-B5HYXBPH.cjs} +13 -13
  36. package/dist/{chunk-SQUWNP5G.cjs.map → chunk-B5HYXBPH.cjs.map} +1 -1
  37. package/dist/{chunk-VISYC2ZD.cjs → chunk-BJSF4VYC.cjs} +35 -35
  38. package/dist/{chunk-VISYC2ZD.cjs.map → chunk-BJSF4VYC.cjs.map} +1 -1
  39. package/dist/{chunk-PER4RJRF.js → chunk-BKZFINUO.js} +4 -4
  40. package/dist/{chunk-PER4RJRF.js.map → chunk-BKZFINUO.js.map} +1 -1
  41. package/dist/{chunk-NQD46M2L.cjs → chunk-BLKZDVFG.cjs} +11 -11
  42. package/dist/{chunk-NQD46M2L.cjs.map → chunk-BLKZDVFG.cjs.map} +1 -1
  43. package/dist/{chunk-6WMG7TU2.cjs → chunk-BQMIYEFC.cjs} +11 -11
  44. package/dist/{chunk-6WMG7TU2.cjs.map → chunk-BQMIYEFC.cjs.map} +1 -1
  45. package/dist/{chunk-JLDYPQIB.cjs → chunk-CDN7FN6R.cjs} +7 -7
  46. package/dist/{chunk-JLDYPQIB.cjs.map → chunk-CDN7FN6R.cjs.map} +1 -1
  47. package/dist/{chunk-5HMAMGEL.cjs → chunk-CKERNLXH.cjs} +5 -5
  48. package/dist/{chunk-5HMAMGEL.cjs.map → chunk-CKERNLXH.cjs.map} +1 -1
  49. package/dist/{chunk-5OHIMYY7.cjs → chunk-DDKW5FTM.cjs} +5 -5
  50. package/dist/{chunk-5OHIMYY7.cjs.map → chunk-DDKW5FTM.cjs.map} +1 -1
  51. package/dist/{chunk-57GO7S77.js → chunk-DRWW5XMD.js} +3 -3
  52. package/dist/{chunk-57GO7S77.js.map → chunk-DRWW5XMD.js.map} +1 -1
  53. package/dist/{chunk-DZYO3YLL.js → chunk-E65S6HVS.js} +3 -3
  54. package/dist/{chunk-DZYO3YLL.js.map → chunk-E65S6HVS.js.map} +1 -1
  55. package/dist/{chunk-35MIAFP2.js → chunk-EEB56QQX.js} +3 -3
  56. package/dist/{chunk-35MIAFP2.js.map → chunk-EEB56QQX.js.map} +1 -1
  57. package/dist/{chunk-OQL6XRT7.js → chunk-EZ2LRC7U.js} +4 -4
  58. package/dist/{chunk-OQL6XRT7.js.map → chunk-EZ2LRC7U.js.map} +1 -1
  59. package/dist/{chunk-I2X76NIY.js → chunk-F2ZT6DCV.js} +3 -3
  60. package/dist/{chunk-I2X76NIY.js.map → chunk-F2ZT6DCV.js.map} +1 -1
  61. package/dist/{chunk-SG2ZHIDQ.cjs → chunk-FCFVJGWR.cjs} +6 -6
  62. package/dist/{chunk-SG2ZHIDQ.cjs.map → chunk-FCFVJGWR.cjs.map} +1 -1
  63. package/dist/{chunk-N26PQY3D.js → chunk-FHLK5CTO.js} +5 -5
  64. package/dist/{chunk-N26PQY3D.js.map → chunk-FHLK5CTO.js.map} +1 -1
  65. package/dist/{chunk-XOJ5HGIP.cjs → chunk-FKZATUBG.cjs} +6 -6
  66. package/dist/{chunk-XOJ5HGIP.cjs.map → chunk-FKZATUBG.cjs.map} +1 -1
  67. package/dist/{chunk-M7ADKAJB.cjs → chunk-FNBOLEST.cjs} +7 -7
  68. package/dist/{chunk-M7ADKAJB.cjs.map → chunk-FNBOLEST.cjs.map} +1 -1
  69. package/dist/{chunk-ENBVF5OB.js → chunk-FQJBEWGB.js} +5 -5
  70. package/dist/{chunk-ENBVF5OB.js.map → chunk-FQJBEWGB.js.map} +1 -1
  71. package/dist/{chunk-USZQJXPE.js → chunk-GCQTQJPW.js} +6 -6
  72. package/dist/{chunk-USZQJXPE.js.map → chunk-GCQTQJPW.js.map} +1 -1
  73. package/dist/{chunk-74B6CLZK.js → chunk-GEU4SROO.js} +4 -4
  74. package/dist/{chunk-74B6CLZK.js.map → chunk-GEU4SROO.js.map} +1 -1
  75. package/dist/{chunk-KNXDDKGK.cjs → chunk-GIZ7DK3W.cjs} +9 -9
  76. package/dist/{chunk-KNXDDKGK.cjs.map → chunk-GIZ7DK3W.cjs.map} +1 -1
  77. package/dist/{chunk-K57TGBAB.js → chunk-H5BUXKYQ.js} +7 -7
  78. package/dist/{chunk-K57TGBAB.js.map → chunk-H5BUXKYQ.js.map} +1 -1
  79. package/dist/{chunk-PB7LE5VJ.cjs → chunk-H5Q63Z42.cjs} +9 -9
  80. package/dist/{chunk-PB7LE5VJ.cjs.map → chunk-H5Q63Z42.cjs.map} +1 -1
  81. package/dist/{chunk-GIGV6XFT.cjs → chunk-HTY7SADT.cjs} +5 -5
  82. package/dist/{chunk-GIGV6XFT.cjs.map → chunk-HTY7SADT.cjs.map} +1 -1
  83. package/dist/{chunk-S5FJ3FHH.cjs → chunk-HW7GODZJ.cjs} +5 -5
  84. package/dist/{chunk-S5FJ3FHH.cjs.map → chunk-HW7GODZJ.cjs.map} +1 -1
  85. package/dist/{chunk-EPQKIFGY.cjs → chunk-I2QAN2HX.cjs} +13 -13
  86. package/dist/{chunk-EPQKIFGY.cjs.map → chunk-I2QAN2HX.cjs.map} +1 -1
  87. package/dist/{chunk-IVDCRMY3.cjs → chunk-IHR3KEWH.cjs} +11 -11
  88. package/dist/{chunk-IVDCRMY3.cjs.map → chunk-IHR3KEWH.cjs.map} +1 -1
  89. package/dist/{chunk-JJ32AVLU.js → chunk-J2TQNGUM.js} +3 -3
  90. package/dist/{chunk-JJ32AVLU.js.map → chunk-J2TQNGUM.js.map} +1 -1
  91. package/dist/{chunk-YSLDYF2F.cjs → chunk-J5VWFOOY.cjs} +4 -4
  92. package/dist/{chunk-YSLDYF2F.cjs.map → chunk-J5VWFOOY.cjs.map} +1 -1
  93. package/dist/{chunk-WQU2M64E.js → chunk-JCXI44K2.js} +6 -6
  94. package/dist/{chunk-WQU2M64E.js.map → chunk-JCXI44K2.js.map} +1 -1
  95. package/dist/{chunk-ZF522WPX.js → chunk-JFFAICCY.js} +6 -6
  96. package/dist/{chunk-ZF522WPX.js.map → chunk-JFFAICCY.js.map} +1 -1
  97. package/dist/{chunk-GIOMLAL2.cjs → chunk-KZOUXGPD.cjs} +4 -4
  98. package/dist/{chunk-GIOMLAL2.cjs.map → chunk-KZOUXGPD.cjs.map} +1 -1
  99. package/dist/{chunk-ZKSEIA5Q.cjs → chunk-LDKE723G.cjs} +6 -6
  100. package/dist/{chunk-ZKSEIA5Q.cjs.map → chunk-LDKE723G.cjs.map} +1 -1
  101. package/dist/{chunk-42KJXH3P.js → chunk-M5SZUUWM.js} +5 -5
  102. package/dist/{chunk-42KJXH3P.js.map → chunk-M5SZUUWM.js.map} +1 -1
  103. package/dist/{chunk-Q4UMGL6Z.js → chunk-MVDTWARG.js} +5 -5
  104. package/dist/{chunk-Q4UMGL6Z.js.map → chunk-MVDTWARG.js.map} +1 -1
  105. package/dist/{chunk-FE3ZOSFJ.cjs → chunk-MWETV5LK.cjs} +6 -6
  106. package/dist/{chunk-FE3ZOSFJ.cjs.map → chunk-MWETV5LK.cjs.map} +1 -1
  107. package/dist/{chunk-6VY3VM5W.cjs → chunk-MWWAQVJ3.cjs} +4 -4
  108. package/dist/{chunk-6VY3VM5W.cjs.map → chunk-MWWAQVJ3.cjs.map} +1 -1
  109. package/dist/{chunk-UUNVNLQN.js → chunk-MYBFODRI.js} +7 -7
  110. package/dist/{chunk-UUNVNLQN.js.map → chunk-MYBFODRI.js.map} +1 -1
  111. package/dist/{chunk-M3DVXO4U.cjs → chunk-NHM6CSX2.cjs} +6 -6
  112. package/dist/{chunk-M3DVXO4U.cjs.map → chunk-NHM6CSX2.cjs.map} +1 -1
  113. package/dist/{chunk-IA4TPVHR.cjs → chunk-NJR5SVHL.cjs} +14 -14
  114. package/dist/{chunk-IA4TPVHR.cjs.map → chunk-NJR5SVHL.cjs.map} +1 -1
  115. package/dist/{chunk-J52N3BTJ.js → chunk-NP527IVS.js} +7 -7
  116. package/dist/{chunk-J52N3BTJ.js.map → chunk-NP527IVS.js.map} +1 -1
  117. package/dist/{chunk-MCVMBH7P.cjs → chunk-OAEVUPAL.cjs} +8 -8
  118. package/dist/{chunk-MCVMBH7P.cjs.map → chunk-OAEVUPAL.cjs.map} +1 -1
  119. package/dist/{chunk-JQHJJAX3.js → chunk-OSYOGJC5.js} +4 -4
  120. package/dist/{chunk-JQHJJAX3.js.map → chunk-OSYOGJC5.js.map} +1 -1
  121. package/dist/{chunk-PLQDNBCW.js → chunk-OYBRYZKK.js} +6 -6
  122. package/dist/{chunk-PLQDNBCW.js.map → chunk-OYBRYZKK.js.map} +1 -1
  123. package/dist/{chunk-G2RX3FZ7.cjs → chunk-OZNCX6DY.cjs} +12 -12
  124. package/dist/{chunk-G2RX3FZ7.cjs.map → chunk-OZNCX6DY.cjs.map} +1 -1
  125. package/dist/{chunk-DXUFYSNR.js → chunk-P6LEAMPW.js} +4 -4
  126. package/dist/{chunk-DXUFYSNR.js.map → chunk-P6LEAMPW.js.map} +1 -1
  127. package/dist/{chunk-R3B46QJO.js → chunk-PYUPT3HU.js} +3 -3
  128. package/dist/{chunk-R3B46QJO.js.map → chunk-PYUPT3HU.js.map} +1 -1
  129. package/dist/{chunk-WZGS7FX6.js → chunk-Q5DVIVMR.js} +3 -3
  130. package/dist/{chunk-WZGS7FX6.js.map → chunk-Q5DVIVMR.js.map} +1 -1
  131. package/dist/{chunk-IJWWTBJ6.js → chunk-QMZQ4I72.js} +3 -3
  132. package/dist/{chunk-IJWWTBJ6.js.map → chunk-QMZQ4I72.js.map} +1 -1
  133. package/dist/{chunk-VCEPRU6Y.cjs → chunk-QOQ55IUO.cjs} +8 -8
  134. package/dist/{chunk-VCEPRU6Y.cjs.map → chunk-QOQ55IUO.cjs.map} +1 -1
  135. package/dist/{chunk-MQUO663S.js → chunk-R3ONJZXN.js} +5 -5
  136. package/dist/{chunk-MQUO663S.js.map → chunk-R3ONJZXN.js.map} +1 -1
  137. package/dist/{chunk-KJRFBFBP.js → chunk-RKPEY2LR.js} +4 -4
  138. package/dist/{chunk-KJRFBFBP.js.map → chunk-RKPEY2LR.js.map} +1 -1
  139. package/dist/{chunk-7SGBGPZW.js → chunk-RM2XLAAU.js} +3 -3
  140. package/dist/{chunk-7SGBGPZW.js.map → chunk-RM2XLAAU.js.map} +1 -1
  141. package/dist/{chunk-LT7DJ7FN.cjs → chunk-RNKQPVCB.cjs} +13 -13
  142. package/dist/{chunk-LT7DJ7FN.cjs.map → chunk-RNKQPVCB.cjs.map} +1 -1
  143. package/dist/{chunk-3MNRY6XK.js → chunk-RQUQSI67.js} +3 -3
  144. package/dist/{chunk-3MNRY6XK.js.map → chunk-RQUQSI67.js.map} +1 -1
  145. package/dist/{chunk-S3UQUP3Q.js → chunk-RRN6FK6U.js} +4 -4
  146. package/dist/{chunk-S3UQUP3Q.js.map → chunk-RRN6FK6U.js.map} +1 -1
  147. package/dist/{chunk-BSOYEVZW.cjs → chunk-RUPT4QAW.cjs} +5 -5
  148. package/dist/{chunk-BSOYEVZW.cjs.map → chunk-RUPT4QAW.cjs.map} +1 -1
  149. package/dist/{chunk-7SUCVCOC.cjs → chunk-RYVQVW2U.cjs} +5 -5
  150. package/dist/{chunk-7SUCVCOC.cjs.map → chunk-RYVQVW2U.cjs.map} +1 -1
  151. package/dist/{chunk-2I6BJICE.js → chunk-RZBOQQRG.js} +6 -6
  152. package/dist/{chunk-2I6BJICE.js.map → chunk-RZBOQQRG.js.map} +1 -1
  153. package/dist/{chunk-JASZ7XTT.js → chunk-RZPKI7FD.js} +5 -5
  154. package/dist/{chunk-JASZ7XTT.js.map → chunk-RZPKI7FD.js.map} +1 -1
  155. package/dist/{chunk-VSTO7LZJ.cjs → chunk-T6E5MIIO.cjs} +4 -4
  156. package/dist/{chunk-VSTO7LZJ.cjs.map → chunk-T6E5MIIO.cjs.map} +1 -1
  157. package/dist/{chunk-D2JOFRA3.cjs → chunk-TFPTFBHN.cjs} +4 -4
  158. package/dist/{chunk-D2JOFRA3.cjs.map → chunk-TFPTFBHN.cjs.map} +1 -1
  159. package/dist/{chunk-446LQC5C.js → chunk-TRDO4OBD.js} +3 -3
  160. package/dist/{chunk-446LQC5C.js.map → chunk-TRDO4OBD.js.map} +1 -1
  161. package/dist/{chunk-3PHJWXBO.cjs → chunk-TRQQZ3FY.cjs} +7 -7
  162. package/dist/{chunk-3PHJWXBO.cjs.map → chunk-TRQQZ3FY.cjs.map} +1 -1
  163. package/dist/{chunk-NKQAHJBB.cjs → chunk-TX4BD3JN.cjs} +16 -16
  164. package/dist/{chunk-NKQAHJBB.cjs.map → chunk-TX4BD3JN.cjs.map} +1 -1
  165. package/dist/{chunk-UTUX5WM7.cjs → chunk-U7NJKBAR.cjs} +11 -11
  166. package/dist/{chunk-UTUX5WM7.cjs.map → chunk-U7NJKBAR.cjs.map} +1 -1
  167. package/dist/{chunk-5PW34XKA.js → chunk-UCMIHJFE.js} +3 -3
  168. package/dist/{chunk-5PW34XKA.js.map → chunk-UCMIHJFE.js.map} +1 -1
  169. package/dist/{chunk-KGVNCMUT.cjs → chunk-UGK3AL6Z.cjs} +5 -5
  170. package/dist/{chunk-KGVNCMUT.cjs.map → chunk-UGK3AL6Z.cjs.map} +1 -1
  171. package/dist/{chunk-QTR5LIUW.cjs → chunk-UJS33XO7.cjs} +8 -8
  172. package/dist/{chunk-QTR5LIUW.cjs.map → chunk-UJS33XO7.cjs.map} +1 -1
  173. package/dist/{chunk-QEYGPANV.cjs → chunk-VOYIMBTO.cjs} +8 -8
  174. package/dist/{chunk-QEYGPANV.cjs.map → chunk-VOYIMBTO.cjs.map} +1 -1
  175. package/dist/{chunk-HRXPB4YH.js → chunk-VRXTRDIP.js} +5 -5
  176. package/dist/{chunk-HRXPB4YH.js.map → chunk-VRXTRDIP.js.map} +1 -1
  177. package/dist/{chunk-WPP3FZLW.cjs → chunk-WHQNYDUT.cjs} +8 -8
  178. package/dist/{chunk-WPP3FZLW.cjs.map → chunk-WHQNYDUT.cjs.map} +1 -1
  179. package/dist/{chunk-YV4AL52O.cjs → chunk-WW6XXMJL.cjs} +17 -17
  180. package/dist/{chunk-YV4AL52O.cjs.map → chunk-WW6XXMJL.cjs.map} +1 -1
  181. package/dist/{chunk-CWDZJH7A.js → chunk-X6QULLGW.js} +3 -3
  182. package/dist/{chunk-CWDZJH7A.js.map → chunk-X6QULLGW.js.map} +1 -1
  183. package/dist/{chunk-KGLCG2W5.cjs → chunk-XB6G4W4P.cjs} +5 -5
  184. package/dist/{chunk-KGLCG2W5.cjs.map → chunk-XB6G4W4P.cjs.map} +1 -1
  185. package/dist/{chunk-ORBYW3LT.js → chunk-XQIPFZUD.js} +7 -7
  186. package/dist/{chunk-ORBYW3LT.js.map → chunk-XQIPFZUD.js.map} +1 -1
  187. package/dist/{chunk-SEELGNIC.cjs → chunk-XTWTL3UB.cjs} +9 -9
  188. package/dist/{chunk-SEELGNIC.cjs.map → chunk-XTWTL3UB.cjs.map} +1 -1
  189. package/dist/{chunk-FP6EP2CX.js → chunk-XVJLFQJT.js} +3 -3
  190. package/dist/{chunk-FP6EP2CX.js.map → chunk-XVJLFQJT.js.map} +1 -1
  191. package/dist/{chunk-CTXAQNQI.js → chunk-YBMIXGFM.js} +3 -3
  192. package/dist/{chunk-CTXAQNQI.js.map → chunk-YBMIXGFM.js.map} +1 -1
  193. package/dist/{chunk-TUUYGOLQ.js → chunk-YK5BUUZG.js} +4 -4
  194. package/dist/{chunk-TUUYGOLQ.js.map → chunk-YK5BUUZG.js.map} +1 -1
  195. package/dist/{chunk-KSDY2S25.js → chunk-YKLFVO22.js} +4 -4
  196. package/dist/{chunk-KSDY2S25.js.map → chunk-YKLFVO22.js.map} +1 -1
  197. package/dist/{chunk-FL53ZLSY.js → chunk-YUKH75MR.js} +10 -10
  198. package/dist/{chunk-FL53ZLSY.js.map → chunk-YUKH75MR.js.map} +1 -1
  199. package/dist/{chunk-BMJ4AK5X.cjs → chunk-ZQWT5UEN.cjs} +17 -17
  200. package/dist/{chunk-BMJ4AK5X.cjs.map → chunk-ZQWT5UEN.cjs.map} +1 -1
  201. package/dist/components/Alert/index.cjs +5 -5
  202. package/dist/components/Alert/index.js +4 -4
  203. package/dist/components/AlertDialog/index.cjs +7 -7
  204. package/dist/components/AlertDialog/index.js +5 -5
  205. package/dist/components/AppShell/index.cjs +12 -12
  206. package/dist/components/AppShell/index.js +9 -9
  207. package/dist/components/AutocompleteInput/index.cjs +10 -10
  208. package/dist/components/AutocompleteInput/index.js +6 -6
  209. package/dist/components/Button/index.cjs +4 -4
  210. package/dist/components/Button/index.js +3 -3
  211. package/dist/components/Calendar/index.cjs +5 -5
  212. package/dist/components/Calendar/index.js +4 -4
  213. package/dist/components/CheckboxGroup/index.cjs +8 -8
  214. package/dist/components/CheckboxGroup/index.js +6 -6
  215. package/dist/components/CheckboxInput/index.cjs +5 -5
  216. package/dist/components/CheckboxInput/index.js +4 -4
  217. package/dist/components/CodeBlock/index.cjs +5 -5
  218. package/dist/components/CodeBlock/index.js +4 -4
  219. package/dist/components/ContextMenu/index.cjs +9 -9
  220. package/dist/components/ContextMenu/index.js +7 -7
  221. package/dist/components/DateInput/index.cjs +8 -8
  222. package/dist/components/DateInput/index.js +7 -7
  223. package/dist/components/DateRangeInput/index.cjs +8 -8
  224. package/dist/components/DateRangeInput/index.js +7 -7
  225. package/dist/components/DateTimeInput/index.cjs +10 -10
  226. package/dist/components/DateTimeInput/index.js +9 -9
  227. package/dist/components/DropdownMenu/index.cjs +10 -10
  228. package/dist/components/DropdownMenu/index.js +6 -6
  229. package/dist/components/EmptyState/index.cjs +3 -3
  230. package/dist/components/EmptyState/index.js +2 -2
  231. package/dist/components/Field/index.cjs +4 -4
  232. package/dist/components/Field/index.js +2 -2
  233. package/dist/components/FileInput/index.cjs +6 -6
  234. package/dist/components/FileInput/index.js +5 -5
  235. package/dist/components/InputGroup/index.cjs +7 -7
  236. package/dist/components/InputGroup/index.js +3 -3
  237. package/dist/components/Item/index.cjs +3 -3
  238. package/dist/components/Item/index.js +2 -2
  239. package/dist/components/Layout/index.cjs +9 -9
  240. package/dist/components/Layout/index.js +4 -4
  241. package/dist/components/Lightbox/index.cjs +6 -6
  242. package/dist/components/Lightbox/index.js +4 -4
  243. package/dist/components/List/index.cjs +5 -5
  244. package/dist/components/List/index.js +3 -3
  245. package/dist/components/MetadataList/index.cjs +4 -4
  246. package/dist/components/MetadataList/index.js +2 -2
  247. package/dist/components/MultiSelect/index.cjs +7 -7
  248. package/dist/components/MultiSelect/index.js +6 -6
  249. package/dist/components/NumberInput/index.cjs +7 -7
  250. package/dist/components/NumberInput/index.js +6 -6
  251. package/dist/components/Pagination/index.cjs +5 -5
  252. package/dist/components/Pagination/index.js +4 -4
  253. package/dist/components/PasswordInput/index.cjs +8 -8
  254. package/dist/components/PasswordInput/index.js +7 -7
  255. package/dist/components/Popover/index.cjs +6 -6
  256. package/dist/components/Popover/index.js +4 -4
  257. package/dist/components/RadioGroup/index.cjs +6 -6
  258. package/dist/components/RadioGroup/index.js +4 -4
  259. package/dist/components/Schedule/index.cjs +25 -25
  260. package/dist/components/Schedule/index.js +10 -10
  261. package/dist/components/SearchFilterInput/index.cjs +24 -24
  262. package/dist/components/SearchFilterInput/index.js +16 -16
  263. package/dist/components/Select/index.cjs +9 -9
  264. package/dist/components/Select/index.js +7 -7
  265. package/dist/components/SideNav/index.cjs +12 -12
  266. package/dist/components/SideNav/index.js +6 -6
  267. package/dist/components/Slider/index.cjs +4 -4
  268. package/dist/components/Slider/index.js +3 -3
  269. package/dist/components/Spinner/index.cjs +3 -3
  270. package/dist/components/Spinner/index.js +2 -2
  271. package/dist/components/SplitButton/index.cjs +8 -8
  272. package/dist/components/SplitButton/index.js +7 -7
  273. package/dist/components/Stepper/index.cjs +3 -3
  274. package/dist/components/Stepper/index.js +2 -2
  275. package/dist/components/Switch/index.cjs +4 -4
  276. package/dist/components/Switch/index.js +3 -3
  277. package/dist/components/Table/index.cjs +46 -46
  278. package/dist/components/Table/index.js +20 -20
  279. package/dist/components/Tabs/index.cjs +10 -10
  280. package/dist/components/Tabs/index.js +5 -5
  281. package/dist/components/TagsInput/index.cjs +8 -8
  282. package/dist/components/TagsInput/index.js +7 -7
  283. package/dist/components/Text/index.cjs +3 -3
  284. package/dist/components/Text/index.js +1 -1
  285. package/dist/components/TextArea/index.cjs +5 -5
  286. package/dist/components/TextArea/index.js +4 -4
  287. package/dist/components/TextInput/index.cjs +7 -7
  288. package/dist/components/TextInput/index.js +6 -6
  289. package/dist/components/Thumbnail/index.cjs +5 -5
  290. package/dist/components/Thumbnail/index.js +4 -4
  291. package/dist/components/TimeInput/index.cjs +6 -6
  292. package/dist/components/TimeInput/index.js +5 -5
  293. package/dist/components/Toast/index.cjs +7 -7
  294. package/dist/components/Toast/index.js +4 -4
  295. package/dist/components/ToggleButton/index.cjs +5 -5
  296. package/dist/components/ToggleButton/index.js +3 -3
  297. package/dist/components/TopNav/index.cjs +10 -10
  298. package/dist/components/TopNav/index.js +5 -5
  299. package/dist/index.cjs +187 -187
  300. package/dist/index.js +50 -50
  301. package/dist/styles.css +1 -1
  302. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tabs/Tabs.recipe.ts","../src/components/Tabs/TabsContext.ts","../src/components/Tabs/Tab.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/TabMenu.recipe.ts","../src/components/Tabs/TabMenu.tsx"],"names":["sva","createContext","use","cx","jsxs","Fragment","jsx","Icon","isReactNode","ActionElement","useMemo","useState","useRef","Popover","Check","mergeRefs","ChevronDown"],"mappings":"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","file":"chunk-VSTO7LZJ.cjs","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const tabsRecipe = sva({\n slots: [\n 'root',\n 'tab',\n 'icon',\n 'label',\n 'labelText',\n 'labelSizer',\n 'endContent',\n ],\n base: {\n root: {\n display: 'flex',\n alignItems: 'stretch',\n maxW: 'full',\n minW: 0,\n },\n tab: {\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '1',\n mb: '-1px',\n px: '3',\n borderWidth: 0,\n borderBottomWidth: 'emphasized',\n borderBottomStyle: 'solid',\n borderBottomColor: 'transparent',\n bg: 'transparent',\n color: 'fg.muted',\n cursor: 'pointer',\n fontFamily: 'body',\n fontSize: 'md',\n fontWeight: 'normal',\n lineHeight: 'normal',\n textDecoration: 'none',\n whiteSpace: 'nowrap',\n transitionProperty: 'color, background-color, border-color',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n _hover: {\n bg: 'bg.subtle',\n },\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n icon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n },\n label: {\n display: 'inline-grid',\n },\n labelText: {\n gridRowStart: 1,\n gridColumnStart: 1,\n },\n labelSizer: {\n gridRowStart: 1,\n gridColumnStart: 1,\n visibility: 'hidden',\n pointerEvents: 'none',\n fontWeight: 'semibold',\n },\n endContent: {\n display: 'inline-flex',\n alignItems: 'center',\n flexShrink: 0,\n },\n },\n variants: {\n size: {\n sm: {tab: {h: 'component.sm'}},\n md: {tab: {h: 'component.md'}},\n lg: {tab: {h: 'component.lg'}},\n },\n layout: {\n hug: {},\n fill: {\n root: {w: 'full'},\n tab: {flex: 1},\n },\n },\n isSelected: {\n true: {\n tab: {\n borderBottomColor: 'fg',\n color: 'fg',\n fontWeight: 'semibold',\n },\n },\n false: {},\n },\n isDisabled: {\n true: {\n tab: {\n color: 'fg.disabled',\n cursor: 'not-allowed',\n _hover: {\n bg: 'transparent',\n },\n },\n },\n false: {},\n },\n hasDivider: {\n true: {\n root: {\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n },\n },\n false: {},\n },\n },\n defaultVariants: {\n size: 'md',\n layout: 'hug',\n isSelected: false,\n isDisabled: false,\n hasDivider: false,\n },\n});\n\nexport type TabsVariants = RecipeVariantProps<typeof tabsRecipe>;\n","'use client';\n\nimport {createContext, use} from 'react';\n\nexport type TabsSize = 'lg' | 'md' | 'sm';\nexport type TabsLayout = 'fill' | 'hug';\n\nexport interface TabsContextValue {\n layout: TabsLayout;\n onChange: (value: string) => void;\n size: TabsSize;\n value: string;\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null);\n\nTabsContext.displayName = 'TabsContext';\n\nexport function useTabsContext(): TabsContextValue {\n const context = use(TabsContext);\n if (context == null) {\n throw new Error('Tabs children must be used within a Tabs.');\n }\n return context;\n}\n","'use client';\n\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport type {LinkComponent} from 'components/Link';\nimport {tabsRecipe} from 'components/Tabs/Tabs.recipe';\nimport {useTabsContext} from 'components/Tabs/TabsContext';\nimport {ActionElement} from 'internal/ActionElement';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\nexport interface TabProps {\n /**\n * Custom link component used when href is set.\n */\n as?: LinkComponent;\n /**\n * Additional CSS class names applied to the tab.\n */\n className?: string;\n /**\n * ID of the tabpanel controlled by this tab. Use this for in-page tabs, and\n * render the corresponding panel with `id={controls}`, `role=\"tabpanel\"`,\n * and `aria-labelledby` pointing to this tab's `id`.\n */\n controls?: string;\n /**\n * Test ID applied to the tab.\n */\n 'data-testid'?: string;\n /**\n * Content rendered after the label.\n */\n endContent?: ReactNode;\n /**\n * Optional link URL. When set, the tab renders as a link.\n */\n href?: string;\n /**\n * Icon shown before the label.\n */\n icon?: IconComponent;\n /**\n * ID applied to the tab element. Provide this with `controls` when rendering\n * your own tabpanel so the panel can reference the tab with\n * `aria-labelledby`.\n */\n id?: string;\n /**\n * Whether the tab is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Visible tab label.\n */\n label: string;\n /**\n * Ref forwarded to the tab root.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Icon shown when selected. Falls back to icon.\n */\n selectedIcon?: IconComponent;\n /**\n * Inline styles applied to the tab.\n */\n style?: CSSProperties;\n /**\n * Unique tab value.\n */\n value: string;\n}\n\n/**\n * A single tab inside `Tabs`.\n */\nexport function Tab({\n as,\n className,\n 'data-testid': dataTestId,\n controls,\n endContent,\n href,\n id,\n icon,\n isDisabled = false,\n label,\n ref,\n selectedIcon,\n style,\n value,\n}: TabProps): React.JSX.Element {\n const context = useTabsContext();\n const isSelected = context.value === value;\n const displayIcon = isSelected && selectedIcon != null ? selectedIcon : icon;\n const classes = tabsRecipe({\n size: context.size,\n layout: context.layout,\n isSelected,\n isDisabled,\n });\n const rootClassName = cx(classes.tab, className);\n const content = (\n <>\n {displayIcon != null ? (\n <span className={classes.icon}>\n <Icon icon={displayIcon} size={context.size} />\n </span>\n ) : null}\n <span className={classes.label}>\n <span className={classes.labelText}>{label}</span>\n <span aria-hidden=\"true\" className={classes.labelSizer}>\n {label}\n </span>\n </span>\n {isReactNode(endContent) ? (\n <span className={classes.endContent}>{endContent}</span>\n ) : null}\n </>\n );\n\n return (\n <ActionElement\n aria-controls={controls}\n aria-disabled={href != null && isDisabled ? true : undefined}\n aria-selected={isSelected}\n as={as}\n className={rootClassName}\n data-tab-disabled={isDisabled ? 'true' : undefined}\n data-tab-value={isDisabled ? undefined : value}\n data-testid={dataTestId}\n href={href}\n id={id}\n isDisabled={href == null ? isDisabled : undefined}\n isLink={href != null}\n onClick={event => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n\n context.onChange(value);\n }}\n ref={ref}\n role=\"tab\"\n style={style}\n tabIndex={isSelected && !isDisabled ? 0 : -1}\n type=\"button\">\n {content}\n </ActionElement>\n );\n}\n\nTab.displayName = 'Tab';\n","'use client';\n\nimport {\n useMemo,\n type CSSProperties,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {tabsRecipe} from 'components/Tabs/Tabs.recipe';\nimport {\n TabsContext,\n type TabsLayout,\n type TabsSize,\n} from 'components/Tabs/TabsContext';\nimport {cx} from 'internal/cx';\n\nexport interface TabsProps {\n /**\n * Tab and TabMenu children.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the tablist element.\n */\n className?: string;\n /**\n * Test ID applied to the tablist element.\n */\n 'data-testid'?: string;\n /**\n * Whether to show a bottom divider.\n * @default false\n */\n hasDivider?: boolean;\n /**\n * Accessible label for the tabs.\n * @default 'Tabs'\n */\n label?: string;\n /**\n * Tab layout mode.\n * @default 'hug'\n */\n layout?: TabsLayout;\n /**\n * Called when a tab is selected.\n */\n onChange: (value: string) => void;\n /**\n * Ref forwarded to the tablist element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Tab size.\n * @default 'md'\n */\n size?: TabsSize;\n /**\n * Inline styles applied to the tablist element.\n */\n style?: CSSProperties;\n /**\n * Current selected tab value.\n */\n value: string;\n}\n\n/**\n * Controlled tab wrapper.\n *\n * Uses `tablist` / `tabpanel` semantics, so reach for it when selecting an\n * option shows or hides associated content panels. To pick a value without\n * swapping panels — a styled radio group for filters, settings, or view modes —\n * use {@link SegmentedControl} instead.\n */\nexport function Tabs({\n children,\n className,\n 'data-testid': dataTestId,\n hasDivider = false,\n label = 'Tabs',\n layout = 'hug',\n onChange,\n ref,\n size = 'md',\n style,\n value,\n}: TabsProps): React.JSX.Element {\n const contextValue = useMemo(\n () => ({layout, onChange, size, value}),\n [layout, onChange, size, value],\n );\n const classes = tabsRecipe({hasDivider, layout});\n\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (\n event.key !== 'ArrowLeft' &&\n event.key !== 'ArrowRight' &&\n event.key !== 'Home' &&\n event.key !== 'End'\n ) {\n return;\n }\n\n const activeTab = (event.target as HTMLElement).closest<HTMLElement>(\n '[role=\"tab\"]',\n );\n if (activeTab == null || !event.currentTarget.contains(activeTab)) {\n return;\n }\n\n const tabs = Array.from(\n event.currentTarget.querySelectorAll<HTMLElement>(\n '[role=\"tab\"]:not([data-tab-disabled=\"true\"])',\n ),\n );\n const currentIndex = tabs.indexOf(activeTab);\n if (currentIndex === -1) {\n return;\n }\n\n event.preventDefault();\n\n const nextIndex =\n event.key === 'Home'\n ? 0\n : event.key === 'End'\n ? tabs.length - 1\n : event.key === 'ArrowRight'\n ? (currentIndex + 1) % tabs.length\n : (currentIndex - 1 + tabs.length) % tabs.length;\n const nextTab = tabs[nextIndex];\n nextTab.focus();\n\n const nextValue = nextTab.dataset.tabValue;\n if (nextValue != null) {\n onChange(nextValue);\n }\n };\n\n return (\n <TabsContext value={contextValue}>\n <div\n aria-label={label}\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n onKeyDown={handleKeyDown}\n ref={ref as Ref<HTMLDivElement>}\n role=\"tablist\"\n style={style}\n tabIndex={-1}>\n {children}\n </div>\n </TabsContext>\n );\n}\n\nTabs.displayName = 'Tabs';\n","import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const tabMenuRecipe = sva({\n slots: ['chevron', 'menu', 'item', 'itemContent', 'itemIcon', 'check'],\n base: {\n chevron: {\n display: 'inline-flex',\n },\n menu: {\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5',\n minW: '40',\n p: '1',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '2',\n w: 'full',\n px: '2',\n py: '2',\n borderWidth: 0,\n borderRadius: 'md',\n bg: 'transparent',\n color: 'fg',\n cursor: 'pointer',\n fontFamily: 'body',\n textAlign: 'start',\n _hover: {bg: 'bg.subtle'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffsetTight',\n },\n },\n itemContent: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '2',\n minW: 0,\n },\n itemIcon: {\n display: 'inline-flex',\n color: 'fg.muted',\n },\n check: {\n display: 'inline-flex',\n color: 'primary',\n },\n },\n variants: {\n isOpen: {\n true: {chevron: {transform: 'rotate(180deg)'}},\n false: {},\n },\n isItemSelected: {\n true: {item: {fontWeight: 'medium'}},\n false: {},\n },\n },\n defaultVariants: {\n isOpen: false,\n isItemSelected: false,\n },\n});\n\nexport type TabMenuVariants = RecipeVariantProps<typeof tabMenuRecipe>;\n","'use client';\n\nimport {Check, ChevronDown} from 'lucide-react';\nimport {\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type Ref,\n} from 'react';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Popover} from 'components/Popover';\nimport {tabMenuRecipe} from 'components/Tabs/TabMenu.recipe';\nimport {tabsRecipe} from 'components/Tabs/Tabs.recipe';\nimport {useTabsContext} from 'components/Tabs/TabsContext';\nimport {cx} from 'internal/cx';\nimport {mergeRefs} from 'internal/mergeRefs';\n\nexport interface TabMenuOption {\n /**\n * Icon rendered before the option label.\n */\n icon?: IconComponent;\n /**\n * Visible option label.\n */\n label: string;\n /**\n * Tab value selected by this option.\n */\n value: string;\n}\n\nexport interface TabMenuProps {\n /**\n * Additional CSS class names applied to the trigger.\n */\n className?: string;\n /**\n * Test ID applied to the trigger.\n */\n 'data-testid'?: string;\n /**\n * ID applied to the menu trigger tab.\n */\n id?: string;\n /**\n * Whether the menu trigger is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Trigger and menu heading label.\n */\n label: string;\n /**\n * Menu options.\n */\n options: ReadonlyArray<TabMenuOption>;\n /**\n * Ref forwarded to the trigger button.\n */\n ref?: Ref<HTMLButtonElement>;\n /**\n * Inline styles applied to the trigger.\n */\n style?: CSSProperties;\n}\n\n/**\n * Overflow menu for additional tabs.\n */\nexport function TabMenu({\n className,\n 'data-testid': dataTestId,\n id,\n isDisabled = false,\n label,\n options,\n ref,\n style,\n}: TabMenuProps): React.JSX.Element {\n const context = useTabsContext();\n const [isOpen, setIsOpen] = useState(false);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const selectedOption = options.find(option => option.value === context.value);\n const triggerLabel = selectedOption?.label ?? label;\n const hasSelectedOption = selectedOption != null;\n const triggerClasses = tabsRecipe({\n size: context.size,\n layout: context.layout,\n isSelected: hasSelectedOption,\n isDisabled,\n });\n const classes = tabMenuRecipe({isOpen});\n\n const focusMenuItem = (\n event: KeyboardEvent<HTMLElement>,\n nextIndex: number,\n ) => {\n const menu = event.currentTarget.closest<HTMLElement>('[role=\"menu\"]');\n const items = Array.from(\n menu?.querySelectorAll<HTMLButtonElement>('[role=\"menuitem\"]') ?? [],\n );\n items[nextIndex]?.focus();\n };\n\n const handleMenuKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n const menu = event.currentTarget.closest<HTMLElement>('[role=\"menu\"]');\n const items = Array.from(\n menu?.querySelectorAll<HTMLButtonElement>('[role=\"menuitem\"]') ?? [],\n );\n const activeIndex = items.indexOf(\n document.activeElement as HTMLButtonElement,\n );\n\n if (event.key === 'Escape') {\n event.preventDefault();\n setIsOpen(false);\n triggerRef.current?.focus();\n return;\n }\n\n if (items.length === 0) {\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n focusMenuItem(event, 0);\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n focusMenuItem(event, items.length - 1);\n return;\n }\n\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') {\n return;\n }\n\n event.preventDefault();\n\n const currentIndex = activeIndex === -1 ? 0 : activeIndex;\n const nextIndex =\n event.key === 'ArrowDown'\n ? (currentIndex + 1) % items.length\n : (currentIndex - 1 + items.length) % items.length;\n focusMenuItem(event, nextIndex);\n };\n\n return (\n <Popover\n content={\n <div className={classes.menu}>\n {options.map(option => {\n const isSelected = option.value === context.value;\n return (\n <button\n aria-current={isSelected ? 'true' : undefined}\n className={tabMenuRecipe({isItemSelected: isSelected}).item}\n key={option.value}\n onClick={() => {\n context.onChange(option.value);\n setIsOpen(false);\n }}\n onKeyDown={handleMenuKeyDown}\n role=\"menuitem\"\n type=\"button\">\n <span className={classes.itemContent}>\n {option.icon != null ? (\n <span className={classes.itemIcon}>\n <Icon color=\"secondary\" icon={option.icon} size=\"sm\" />\n </span>\n ) : null}\n {option.label}\n </span>\n {isSelected ? (\n <span className={classes.check}>\n <Icon color=\"accent\" icon={Check} size=\"sm\" />\n </span>\n ) : null}\n </button>\n );\n })}\n </div>\n }\n hasAutoFocus\n hasCloseButton={false}\n isEnabled={!isDisabled}\n isOpen={isOpen}\n label={label}\n onOpenChange={setIsOpen}\n role=\"menu\">\n <button\n aria-disabled={isDisabled || undefined}\n aria-selected={hasSelectedOption}\n className={cx(triggerClasses.tab, className)}\n data-tab-disabled={isDisabled ? 'true' : undefined}\n data-tab-value={\n hasSelectedOption && !isDisabled ? context.value : undefined\n }\n data-testid={dataTestId}\n disabled={isDisabled}\n id={id}\n onKeyDown={event => {\n if (event.key !== 'ArrowDown') {\n return;\n }\n\n event.preventDefault();\n setIsOpen(true);\n }}\n ref={mergeRefs(triggerRef, ref)}\n role=\"tab\"\n style={style}\n tabIndex={hasSelectedOption && !isDisabled ? 0 : -1}\n type=\"button\">\n {triggerLabel}\n <span className={classes.chevron}>\n <Icon icon={ChevronDown} size=\"sm\" />\n </span>\n </button>\n </Popover>\n );\n}\n\nTabMenu.displayName = 'TabMenu';\n"]}
1
+ {"version":3,"sources":["../src/components/Tabs/Tabs.recipe.ts","../src/components/Tabs/TabsContext.ts","../src/components/Tabs/Tab.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/TabMenu.recipe.ts","../src/components/Tabs/TabMenu.tsx"],"names":["sva","createContext","use","cx","jsxs","Fragment","jsx","Icon","isReactNode","ActionElement","useMemo","useState","useRef","Popover","Check","mergeRefs","ChevronDown"],"mappings":"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","file":"chunk-T6E5MIIO.cjs","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const tabsRecipe = sva({\n slots: [\n 'root',\n 'tab',\n 'icon',\n 'label',\n 'labelText',\n 'labelSizer',\n 'endContent',\n ],\n base: {\n root: {\n display: 'flex',\n alignItems: 'stretch',\n maxW: 'full',\n minW: 0,\n },\n tab: {\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '1',\n mb: '-1px',\n px: '3',\n borderWidth: 0,\n borderBottomWidth: 'emphasized',\n borderBottomStyle: 'solid',\n borderBottomColor: 'transparent',\n bg: 'transparent',\n color: 'fg.muted',\n cursor: 'pointer',\n fontFamily: 'body',\n fontSize: 'md',\n fontWeight: 'normal',\n lineHeight: 'normal',\n textDecoration: 'none',\n whiteSpace: 'nowrap',\n transitionProperty: 'color, background-color, border-color',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n _hover: {\n bg: 'bg.subtle',\n },\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n icon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n },\n label: {\n display: 'inline-grid',\n },\n labelText: {\n gridRowStart: 1,\n gridColumnStart: 1,\n },\n labelSizer: {\n gridRowStart: 1,\n gridColumnStart: 1,\n visibility: 'hidden',\n pointerEvents: 'none',\n fontWeight: 'semibold',\n },\n endContent: {\n display: 'inline-flex',\n alignItems: 'center',\n flexShrink: 0,\n },\n },\n variants: {\n size: {\n sm: {tab: {h: 'component.sm'}},\n md: {tab: {h: 'component.md'}},\n lg: {tab: {h: 'component.lg'}},\n },\n layout: {\n hug: {},\n fill: {\n root: {w: 'full'},\n tab: {flex: 1},\n },\n },\n isSelected: {\n true: {\n tab: {\n borderBottomColor: 'fg',\n color: 'fg',\n fontWeight: 'semibold',\n },\n },\n false: {},\n },\n isDisabled: {\n true: {\n tab: {\n color: 'fg.disabled',\n cursor: 'not-allowed',\n _hover: {\n bg: 'transparent',\n },\n },\n },\n false: {},\n },\n hasDivider: {\n true: {\n root: {\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n },\n },\n false: {},\n },\n },\n defaultVariants: {\n size: 'md',\n layout: 'hug',\n isSelected: false,\n isDisabled: false,\n hasDivider: false,\n },\n});\n\nexport type TabsVariants = RecipeVariantProps<typeof tabsRecipe>;\n","'use client';\n\nimport {createContext, use} from 'react';\n\nexport type TabsSize = 'lg' | 'md' | 'sm';\nexport type TabsLayout = 'fill' | 'hug';\n\nexport interface TabsContextValue {\n layout: TabsLayout;\n onChange: (value: string) => void;\n size: TabsSize;\n value: string;\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null);\n\nTabsContext.displayName = 'TabsContext';\n\nexport function useTabsContext(): TabsContextValue {\n const context = use(TabsContext);\n if (context == null) {\n throw new Error('Tabs children must be used within a Tabs.');\n }\n return context;\n}\n","'use client';\n\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport type {LinkComponent} from 'components/Link';\nimport {tabsRecipe} from 'components/Tabs/Tabs.recipe';\nimport {useTabsContext} from 'components/Tabs/TabsContext';\nimport {ActionElement} from 'internal/ActionElement';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\nexport interface TabProps {\n /**\n * Custom link component used when href is set.\n */\n as?: LinkComponent;\n /**\n * Additional CSS class names applied to the tab.\n */\n className?: string;\n /**\n * ID of the tabpanel controlled by this tab. Use this for in-page tabs, and\n * render the corresponding panel with `id={controls}`, `role=\"tabpanel\"`,\n * and `aria-labelledby` pointing to this tab's `id`.\n */\n controls?: string;\n /**\n * Test ID applied to the tab.\n */\n 'data-testid'?: string;\n /**\n * Content rendered after the label.\n */\n endContent?: ReactNode;\n /**\n * Optional link URL. When set, the tab renders as a link.\n */\n href?: string;\n /**\n * Icon shown before the label.\n */\n icon?: IconComponent;\n /**\n * ID applied to the tab element. Provide this with `controls` when rendering\n * your own tabpanel so the panel can reference the tab with\n * `aria-labelledby`.\n */\n id?: string;\n /**\n * Whether the tab is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Visible tab label.\n */\n label: string;\n /**\n * Ref forwarded to the tab root.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Icon shown when selected. Falls back to icon.\n */\n selectedIcon?: IconComponent;\n /**\n * Inline styles applied to the tab.\n */\n style?: CSSProperties;\n /**\n * Unique tab value.\n */\n value: string;\n}\n\n/**\n * A single tab inside `Tabs`.\n */\nexport function Tab({\n as,\n className,\n 'data-testid': dataTestId,\n controls,\n endContent,\n href,\n id,\n icon,\n isDisabled = false,\n label,\n ref,\n selectedIcon,\n style,\n value,\n}: TabProps): React.JSX.Element {\n const context = useTabsContext();\n const isSelected = context.value === value;\n const displayIcon = isSelected && selectedIcon != null ? selectedIcon : icon;\n const classes = tabsRecipe({\n size: context.size,\n layout: context.layout,\n isSelected,\n isDisabled,\n });\n const rootClassName = cx(classes.tab, className);\n const content = (\n <>\n {displayIcon != null ? (\n <span className={classes.icon}>\n <Icon icon={displayIcon} size={context.size} />\n </span>\n ) : null}\n <span className={classes.label}>\n <span className={classes.labelText}>{label}</span>\n <span aria-hidden=\"true\" className={classes.labelSizer}>\n {label}\n </span>\n </span>\n {isReactNode(endContent) ? (\n <span className={classes.endContent}>{endContent}</span>\n ) : null}\n </>\n );\n\n return (\n <ActionElement\n aria-controls={controls}\n aria-disabled={href != null && isDisabled ? true : undefined}\n aria-selected={isSelected}\n as={as}\n className={rootClassName}\n data-tab-disabled={isDisabled ? 'true' : undefined}\n data-tab-value={isDisabled ? undefined : value}\n data-testid={dataTestId}\n href={href}\n id={id}\n isDisabled={href == null ? isDisabled : undefined}\n isLink={href != null}\n onClick={event => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n\n context.onChange(value);\n }}\n ref={ref}\n role=\"tab\"\n style={style}\n tabIndex={isSelected && !isDisabled ? 0 : -1}\n type=\"button\">\n {content}\n </ActionElement>\n );\n}\n\nTab.displayName = 'Tab';\n","'use client';\n\nimport {\n useMemo,\n type CSSProperties,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {tabsRecipe} from 'components/Tabs/Tabs.recipe';\nimport {\n TabsContext,\n type TabsLayout,\n type TabsSize,\n} from 'components/Tabs/TabsContext';\nimport {cx} from 'internal/cx';\n\nexport interface TabsProps {\n /**\n * Tab and TabMenu children.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the tablist element.\n */\n className?: string;\n /**\n * Test ID applied to the tablist element.\n */\n 'data-testid'?: string;\n /**\n * Whether to show a bottom divider.\n * @default false\n */\n hasDivider?: boolean;\n /**\n * Accessible label for the tabs.\n * @default 'Tabs'\n */\n label?: string;\n /**\n * Tab layout mode.\n * @default 'hug'\n */\n layout?: TabsLayout;\n /**\n * Called when a tab is selected.\n */\n onChange: (value: string) => void;\n /**\n * Ref forwarded to the tablist element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Tab size.\n * @default 'md'\n */\n size?: TabsSize;\n /**\n * Inline styles applied to the tablist element.\n */\n style?: CSSProperties;\n /**\n * Current selected tab value.\n */\n value: string;\n}\n\n/**\n * Controlled tab wrapper.\n *\n * Uses `tablist` / `tabpanel` semantics, so reach for it when selecting an\n * option shows or hides associated content panels. To pick a value without\n * swapping panels — a styled radio group for filters, settings, or view modes —\n * use {@link SegmentedControl} instead.\n */\nexport function Tabs({\n children,\n className,\n 'data-testid': dataTestId,\n hasDivider = false,\n label = 'Tabs',\n layout = 'hug',\n onChange,\n ref,\n size = 'md',\n style,\n value,\n}: TabsProps): React.JSX.Element {\n const contextValue = useMemo(\n () => ({layout, onChange, size, value}),\n [layout, onChange, size, value],\n );\n const classes = tabsRecipe({hasDivider, layout});\n\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (\n event.key !== 'ArrowLeft' &&\n event.key !== 'ArrowRight' &&\n event.key !== 'Home' &&\n event.key !== 'End'\n ) {\n return;\n }\n\n const activeTab = (event.target as HTMLElement).closest<HTMLElement>(\n '[role=\"tab\"]',\n );\n if (activeTab == null || !event.currentTarget.contains(activeTab)) {\n return;\n }\n\n const tabs = Array.from(\n event.currentTarget.querySelectorAll<HTMLElement>(\n '[role=\"tab\"]:not([data-tab-disabled=\"true\"])',\n ),\n );\n const currentIndex = tabs.indexOf(activeTab);\n if (currentIndex === -1) {\n return;\n }\n\n event.preventDefault();\n\n const nextIndex =\n event.key === 'Home'\n ? 0\n : event.key === 'End'\n ? tabs.length - 1\n : event.key === 'ArrowRight'\n ? (currentIndex + 1) % tabs.length\n : (currentIndex - 1 + tabs.length) % tabs.length;\n const nextTab = tabs[nextIndex];\n nextTab.focus();\n\n const nextValue = nextTab.dataset.tabValue;\n if (nextValue != null) {\n onChange(nextValue);\n }\n };\n\n return (\n <TabsContext value={contextValue}>\n <div\n aria-label={label}\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n onKeyDown={handleKeyDown}\n ref={ref as Ref<HTMLDivElement>}\n role=\"tablist\"\n style={style}\n tabIndex={-1}>\n {children}\n </div>\n </TabsContext>\n );\n}\n\nTabs.displayName = 'Tabs';\n","import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const tabMenuRecipe = sva({\n slots: ['chevron', 'menu', 'item', 'itemContent', 'itemIcon', 'check'],\n base: {\n chevron: {\n display: 'inline-flex',\n },\n menu: {\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5',\n minW: '40',\n p: '1',\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '2',\n w: 'full',\n px: '2',\n py: '2',\n borderWidth: 0,\n borderRadius: 'md',\n bg: 'transparent',\n color: 'fg',\n cursor: 'pointer',\n fontFamily: 'body',\n textAlign: 'start',\n _hover: {bg: 'bg.subtle'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffsetTight',\n },\n },\n itemContent: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '2',\n minW: 0,\n },\n itemIcon: {\n display: 'inline-flex',\n color: 'fg.muted',\n },\n check: {\n display: 'inline-flex',\n color: 'primary',\n },\n },\n variants: {\n isOpen: {\n true: {chevron: {transform: 'rotate(180deg)'}},\n false: {},\n },\n isItemSelected: {\n true: {item: {fontWeight: 'medium'}},\n false: {},\n },\n },\n defaultVariants: {\n isOpen: false,\n isItemSelected: false,\n },\n});\n\nexport type TabMenuVariants = RecipeVariantProps<typeof tabMenuRecipe>;\n","'use client';\n\nimport {Check, ChevronDown} from 'lucide-react';\nimport {\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type Ref,\n} from 'react';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Popover} from 'components/Popover';\nimport {tabMenuRecipe} from 'components/Tabs/TabMenu.recipe';\nimport {tabsRecipe} from 'components/Tabs/Tabs.recipe';\nimport {useTabsContext} from 'components/Tabs/TabsContext';\nimport {cx} from 'internal/cx';\nimport {mergeRefs} from 'internal/mergeRefs';\n\nexport interface TabMenuOption {\n /**\n * Icon rendered before the option label.\n */\n icon?: IconComponent;\n /**\n * Visible option label.\n */\n label: string;\n /**\n * Tab value selected by this option.\n */\n value: string;\n}\n\nexport interface TabMenuProps {\n /**\n * Additional CSS class names applied to the trigger.\n */\n className?: string;\n /**\n * Test ID applied to the trigger.\n */\n 'data-testid'?: string;\n /**\n * ID applied to the menu trigger tab.\n */\n id?: string;\n /**\n * Whether the menu trigger is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Trigger and menu heading label.\n */\n label: string;\n /**\n * Menu options.\n */\n options: ReadonlyArray<TabMenuOption>;\n /**\n * Ref forwarded to the trigger button.\n */\n ref?: Ref<HTMLButtonElement>;\n /**\n * Inline styles applied to the trigger.\n */\n style?: CSSProperties;\n}\n\n/**\n * Overflow menu for additional tabs.\n */\nexport function TabMenu({\n className,\n 'data-testid': dataTestId,\n id,\n isDisabled = false,\n label,\n options,\n ref,\n style,\n}: TabMenuProps): React.JSX.Element {\n const context = useTabsContext();\n const [isOpen, setIsOpen] = useState(false);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const selectedOption = options.find(option => option.value === context.value);\n const triggerLabel = selectedOption?.label ?? label;\n const hasSelectedOption = selectedOption != null;\n const triggerClasses = tabsRecipe({\n size: context.size,\n layout: context.layout,\n isSelected: hasSelectedOption,\n isDisabled,\n });\n const classes = tabMenuRecipe({isOpen});\n\n const focusMenuItem = (\n event: KeyboardEvent<HTMLElement>,\n nextIndex: number,\n ) => {\n const menu = event.currentTarget.closest<HTMLElement>('[role=\"menu\"]');\n const items = Array.from(\n menu?.querySelectorAll<HTMLButtonElement>('[role=\"menuitem\"]') ?? [],\n );\n items[nextIndex]?.focus();\n };\n\n const handleMenuKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n const menu = event.currentTarget.closest<HTMLElement>('[role=\"menu\"]');\n const items = Array.from(\n menu?.querySelectorAll<HTMLButtonElement>('[role=\"menuitem\"]') ?? [],\n );\n const activeIndex = items.indexOf(\n document.activeElement as HTMLButtonElement,\n );\n\n if (event.key === 'Escape') {\n event.preventDefault();\n setIsOpen(false);\n triggerRef.current?.focus();\n return;\n }\n\n if (items.length === 0) {\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n focusMenuItem(event, 0);\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n focusMenuItem(event, items.length - 1);\n return;\n }\n\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') {\n return;\n }\n\n event.preventDefault();\n\n const currentIndex = activeIndex === -1 ? 0 : activeIndex;\n const nextIndex =\n event.key === 'ArrowDown'\n ? (currentIndex + 1) % items.length\n : (currentIndex - 1 + items.length) % items.length;\n focusMenuItem(event, nextIndex);\n };\n\n return (\n <Popover\n content={\n <div className={classes.menu}>\n {options.map(option => {\n const isSelected = option.value === context.value;\n return (\n <button\n aria-current={isSelected ? 'true' : undefined}\n className={tabMenuRecipe({isItemSelected: isSelected}).item}\n key={option.value}\n onClick={() => {\n context.onChange(option.value);\n setIsOpen(false);\n }}\n onKeyDown={handleMenuKeyDown}\n role=\"menuitem\"\n type=\"button\">\n <span className={classes.itemContent}>\n {option.icon != null ? (\n <span className={classes.itemIcon}>\n <Icon color=\"secondary\" icon={option.icon} size=\"sm\" />\n </span>\n ) : null}\n {option.label}\n </span>\n {isSelected ? (\n <span className={classes.check}>\n <Icon color=\"accent\" icon={Check} size=\"sm\" />\n </span>\n ) : null}\n </button>\n );\n })}\n </div>\n }\n hasAutoFocus\n hasCloseButton={false}\n isEnabled={!isDisabled}\n isOpen={isOpen}\n label={label}\n onOpenChange={setIsOpen}\n role=\"menu\">\n <button\n aria-disabled={isDisabled || undefined}\n aria-selected={hasSelectedOption}\n className={cx(triggerClasses.tab, className)}\n data-tab-disabled={isDisabled ? 'true' : undefined}\n data-tab-value={\n hasSelectedOption && !isDisabled ? context.value : undefined\n }\n data-testid={dataTestId}\n disabled={isDisabled}\n id={id}\n onKeyDown={event => {\n if (event.key !== 'ArrowDown') {\n return;\n }\n\n event.preventDefault();\n setIsOpen(true);\n }}\n ref={mergeRefs(triggerRef, ref)}\n role=\"tab\"\n style={style}\n tabIndex={hasSelectedOption && !isDisabled ? 0 : -1}\n type=\"button\">\n {triggerLabel}\n <span className={classes.chevron}>\n <Icon icon={ChevronDown} size=\"sm\" />\n </span>\n </button>\n </Popover>\n );\n}\n\nTabMenu.displayName = 'TabMenu';\n"]}
@@ -2,7 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkR37R7DEV_cjs = require('./chunk-R37R7DEV.cjs');
5
- var chunkS5FJ3FHH_cjs = require('./chunk-S5FJ3FHH.cjs');
5
+ var chunkHW7GODZJ_cjs = require('./chunk-HW7GODZJ.cjs');
6
6
  var chunkE5TRE2YG_cjs = require('./chunk-E5TRE2YG.cjs');
7
7
  var chunk6SHL7FYO_cjs = require('./chunk-6SHL7FYO.cjs');
8
8
  var chunkZ6RT3WPE_cjs = require('./chunk-Z6RT3WPE.cjs');
@@ -162,7 +162,7 @@ function Toast({
162
162
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.end, children: [
163
163
  endContent,
164
164
  /* @__PURE__ */ jsxRuntime.jsx(
165
- chunkS5FJ3FHH_cjs.Button,
165
+ chunkHW7GODZJ_cjs.Button,
166
166
  {
167
167
  icon: lucideReact.X,
168
168
  isIconOnly: true,
@@ -403,5 +403,5 @@ function useToast() {
403
403
  exports.Toast = Toast;
404
404
  exports.ToastViewport = ToastViewport;
405
405
  exports.useToast = useToast;
406
- //# sourceMappingURL=chunk-D2JOFRA3.cjs.map
407
- //# sourceMappingURL=chunk-D2JOFRA3.cjs.map
406
+ //# sourceMappingURL=chunk-TFPTFBHN.cjs.map
407
+ //# sourceMappingURL=chunk-TFPTFBHN.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Toast/Toast.recipe.ts","../src/components/Toast/Toast.tsx","../src/components/Toast/ToastContext.ts","../src/components/Toast/ToastViewport.tsx","../src/components/Toast/useToast.tsx"],"names":["sva","useRef","useLatest_default","useCallback","nowMonotonicMilliseconds","useEffect","jsx","cx","jsxs","Button","X","createContext","css","useState","useMemo","mergeRefs","use","nowEpochMilliseconds"],"mappings":"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","file":"chunk-D2JOFRA3.cjs","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const toastRecipe = sva({\n slots: ['root', 'inner', 'content', 'end'],\n base: {\n root: {\n width: '25rem',\n maxW: 'calc(100vw - 32px)',\n p: '4',\n borderRadius: 'lg',\n boxShadow: 'xl',\n fontFamily: 'body',\n transitionProperty: 'opacity, transform',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n '@starting-style': {\n opacity: 0,\n transform: 'translateY(8px)',\n },\n '@media (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01ms',\n },\n },\n inner: {\n display: 'flex',\n alignItems: 'center',\n gap: '3',\n },\n content: {\n flex: 1,\n minW: 0,\n },\n end: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n flexShrink: 0,\n },\n },\n variants: {\n type: {\n info: {root: {bg: 'status.info.solid', color: 'status.info.solidFg'}},\n error: {root: {bg: 'status.error.solid', color: 'status.error.solidFg'}},\n success: {\n root: {bg: 'status.success.solid', color: 'status.success.solidFg'},\n },\n warning: {\n root: {bg: 'status.warning.solid', color: 'status.warning.solidFg'},\n },\n },\n isExiting: {\n true: {\n root: {\n opacity: 0,\n transform: 'translateY(-8px)',\n },\n },\n },\n },\n defaultVariants: {\n type: 'info',\n isExiting: false,\n },\n});\n\nexport type ToastVariants = RecipeVariantProps<typeof toastRecipe>;\n","/* eslint-disable jsx-a11y-x/no-static-element-interactions */\n'use client';\nimport {X} from 'lucide-react';\nimport {\n useCallback,\n useEffect,\n useRef,\n type CSSProperties,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {Button} from 'components/Button';\nimport {toastRecipe} from 'components/Toast/Toast.recipe';\nimport type {ToastDismissReason, ToastType} from 'components/Toast/types';\nimport {cx} from 'internal/cx';\nimport {nowMonotonicMilliseconds} from 'internal/time';\nimport useLatest from 'internal/useLatest';\n\nexport interface ToastProps {\n /**\n * Auto-dismiss duration in milliseconds.\n */\n autoHideDuration: number;\n /**\n * Toast message content.\n */\n body: ReactNode;\n /**\n * Additional CSS class names applied to the toast.\n */\n className?: string;\n /**\n * Test ID applied to the toast.\n */\n 'data-testid'?: string;\n /**\n * Content rendered before the dismiss button.\n */\n endContent?: ReactNode;\n /**\n * Whether the toast auto-dismisses.\n */\n isAutoHide: boolean;\n /**\n * Whether the toast is exiting.\n * @default false\n */\n isExiting?: boolean;\n /**\n * Called when the toast should be dismissed.\n */\n onDismiss: (reason: ToastDismissReason) => void;\n /**\n * Ref forwarded to the toast element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Inline styles applied to the toast.\n */\n style?: CSSProperties;\n /**\n * Toast tone.\n */\n type: ToastType;\n}\n\nconst assertiveTypes: Partial<Record<ToastType, true>> = {\n error: true,\n warning: true,\n};\n\n/**\n * An individual toast notification.\n */\nexport function Toast({\n autoHideDuration,\n body,\n className,\n 'data-testid': dataTestId,\n endContent,\n isAutoHide,\n isExiting = false,\n onDismiss: onDismissFromProps,\n ref,\n style,\n type,\n}: ToastProps): React.JSX.Element {\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const startedAtRef = useRef<number | null>(null);\n const remainingRef = useRef(autoHideDuration);\n const isPausedRef = useRef(false);\n const onDismissRef = useLatest(onDismissFromProps);\n\n const startTimer = useCallback(() => {\n if (!isAutoHide) {\n return;\n }\n if (timerRef.current != null) {\n clearTimeout(timerRef.current);\n }\n startedAtRef.current = nowMonotonicMilliseconds();\n timerRef.current = setTimeout(\n () => onDismissRef.current('auto'),\n remainingRef.current,\n );\n }, [isAutoHide]);\n\n const pauseTimer = useCallback(() => {\n if (!isAutoHide || isPausedRef.current) {\n return;\n }\n isPausedRef.current = true;\n if (timerRef.current != null) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n if (startedAtRef.current != null) {\n remainingRef.current = Math.max(\n remainingRef.current -\n (nowMonotonicMilliseconds() - startedAtRef.current),\n 1000,\n );\n }\n }, [isAutoHide]);\n\n const resumeTimer = useCallback(() => {\n if (!isAutoHide || !isPausedRef.current) {\n return;\n }\n isPausedRef.current = false;\n startTimer();\n }, [isAutoHide, startTimer]);\n\n useEffect(() => {\n remainingRef.current = autoHideDuration;\n startTimer();\n return () => {\n if (timerRef.current != null) {\n clearTimeout(timerRef.current);\n }\n };\n }, [autoHideDuration, startTimer]);\n\n const classes = toastRecipe({type, isExiting});\n\n return (\n <div\n aria-atomic=\"true\"\n aria-live={assertiveTypes[type] ? 'assertive' : 'polite'}\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n onBlurCapture={resumeTimer}\n onFocusCapture={pauseTimer}\n onMouseEnter={pauseTimer}\n onMouseLeave={resumeTimer}\n ref={ref}\n role={assertiveTypes[type] ? 'alert' : 'status'}\n style={style}>\n <div className={classes.inner}>\n <div className={classes.content}>{body}</div>\n <div className={classes.end}>\n {endContent}\n <Button\n icon={X}\n isIconOnly\n label=\"Dismiss notification\"\n onClick={() => onDismissRef.current('manual')}\n size=\"sm\"\n variant=\"onSolid\"\n />\n </div>\n </div>\n </div>\n );\n}\n\nToast.displayName = 'Toast';\n","'use client';\n\nimport {createContext} from 'react';\nimport type {ToastDismissReason, ToastEntry} from 'components/Toast/types';\n\nexport interface ToastContextValue {\n addToast: (entry: ToastEntry) => void;\n findByUniqueID: (uniqueID: string) => ToastEntry | undefined;\n removeToast: (id: string, reason: ToastDismissReason) => void;\n}\n\nexport const ToastContext = createContext<ToastContextValue | null>(null);\n\nToastContext.displayName = 'ToastContext';\n","'use client';\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {Toast} from 'components/Toast/Toast';\nimport {\n ToastContext,\n type ToastContextValue,\n} from 'components/Toast/ToastContext';\nimport type {\n ToastDismissReason,\n ToastEntry,\n ToastPosition,\n} from 'components/Toast/types';\nimport {cx} from 'internal/cx';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport {css} from 'styled-system/css';\n\nexport interface ToastViewportInset {\n bottom?: number;\n end?: number;\n start?: number;\n top?: number;\n}\n\nexport interface ToastViewportProps {\n /**\n * App content that should receive the toast context.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the viewport.\n */\n className?: string;\n /**\n * Test ID applied to the viewport.\n */\n 'data-testid'?: string;\n /**\n * Custom viewport inset.\n */\n inset?: Readonly<ToastViewportInset>;\n /**\n * Whether to promote the viewport to the CSS top layer using popover.\n * @default true\n */\n isTopLayer?: boolean;\n /**\n * Maximum visible toast count.\n * @default 5\n */\n maxVisible?: number;\n /**\n * Toast stack position.\n * @default 'bottomEnd'\n */\n position?: ToastPosition;\n /**\n * Ref forwarded to the viewport element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Inline styles applied to the viewport.\n */\n style?: CSSProperties;\n}\n\nconst styles = {\n viewport: css({\n position: 'fixed',\n zIndex: 500,\n display: 'flex',\n flexDirection: 'column',\n p: '4',\n pointerEvents: 'none',\n inset: 'unset',\n m: 0,\n borderWidth: 0,\n bg: 'transparent',\n overflow: 'visible',\n }),\n bottomEnd: css({bottom: 0, insetInlineEnd: 0, alignItems: 'flex-end'}),\n bottomStart: css({bottom: 0, insetInlineStart: 0, alignItems: 'flex-start'}),\n topEnd: css({\n top: 0,\n insetInlineEnd: 0,\n alignItems: 'flex-end',\n flexDirection: 'column-reverse',\n }),\n topStart: css({\n top: 0,\n insetInlineStart: 0,\n alignItems: 'flex-start',\n flexDirection: 'column-reverse',\n }),\n wrapper: css({\n pointerEvents: 'auto',\n display: 'grid',\n gridTemplateRows: '1fr',\n pb: '3',\n transitionProperty: 'grid-template-rows, padding',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n '@media (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01ms',\n },\n }),\n wrapperExiting: css({\n gridTemplateRows: '0fr',\n pb: 0,\n }),\n wrapperInner: css({\n overflow: 'hidden',\n }),\n position: {\n bottomEnd: '',\n bottomStart: '',\n topEnd: '',\n topStart: '',\n } satisfies Record<ToastPosition, string>,\n} as const;\n\nstyles.position.bottomEnd = styles.bottomEnd;\nstyles.position.bottomStart = styles.bottomStart;\nstyles.position.topEnd = styles.topEnd;\nstyles.position.topStart = styles.topStart;\n\n/**\n * Toast provider and viewport. Mount once near the app root to enable\n * toast notifications. Components below this provider can call `useToast()`\n * to show toasts.\n *\n * @example\n * ```tsx\n * function App() {\n * return (\n * <ToastViewport>\n * <MyRoutes />\n * </ToastViewport>\n * );\n * }\n * ```\n */\nexport function ToastViewport({\n children,\n className,\n 'data-testid': dataTestId,\n inset,\n isTopLayer = true,\n maxVisible = 5,\n position = 'bottomEnd',\n ref,\n style,\n}: ToastViewportProps): React.JSX.Element {\n const [toasts, setToasts] = useState<ToastEntry[]>([]);\n const [exitingIds, setExitingIds] = useState<Set<string>>(() => new Set());\n const toastsRef = useRef(toasts);\n const viewportRef = useRef<HTMLDivElement>(null);\n const exitTimeoutsRef = useRef(\n new Map<string, ReturnType<typeof globalThis.setTimeout>>(),\n );\n\n useEffect(() => {\n toastsRef.current = toasts;\n }, [toasts]);\n\n const addToast = useCallback((entry: ToastEntry) => {\n setToasts(previous => {\n const {uniqueID, collisionBehavior = 'overwrite'} = entry.options;\n if (uniqueID != null) {\n const existing = previous.find(\n toast => toast.options.uniqueID === uniqueID,\n );\n if (existing != null) {\n if (collisionBehavior === 'ignore') {\n return previous;\n }\n return previous.map(toast =>\n toast.options.uniqueID === uniqueID ? entry : toast,\n );\n }\n }\n return [...previous, entry];\n });\n }, []);\n\n const removeToast = useCallback((id: string, reason: ToastDismissReason) => {\n const entry = toastsRef.current.find(toast => toast.id === id);\n entry?.options.onHide?.(reason);\n setExitingIds(previous => new Set(previous).add(id));\n const existingTimeout = exitTimeoutsRef.current.get(id);\n if (existingTimeout != null) {\n globalThis.clearTimeout(existingTimeout);\n }\n const timeout = globalThis.setTimeout(() => {\n exitTimeoutsRef.current.delete(id);\n setExitingIds(previous => {\n const next = new Set(previous);\n next.delete(id);\n return next;\n });\n setToasts(previous => previous.filter(toast => toast.id !== id));\n }, 180);\n exitTimeoutsRef.current.set(id, timeout);\n }, []);\n\n const findByUniqueID = useCallback((uniqueID: string) => {\n return toastsRef.current.find(toast => toast.options.uniqueID === uniqueID);\n }, []);\n\n const contextValue = useMemo<ToastContextValue>(\n () => ({addToast, findByUniqueID, removeToast}),\n [addToast, findByUniqueID, removeToast],\n );\n\n useEffect(() => {\n if (!isTopLayer) {\n return;\n }\n try {\n viewportRef.current?.showPopover();\n } catch {\n // Already showing.\n }\n }, [isTopLayer]);\n\n useEffect(() => {\n const exitTimeouts = exitTimeoutsRef.current;\n return () => {\n for (const timeout of exitTimeouts.values()) {\n globalThis.clearTimeout(timeout);\n }\n exitTimeouts.clear();\n };\n }, []);\n\n const insetStyle: CSSProperties = {\n ...(inset?.top != null ? {top: inset.top} : null),\n ...(inset?.bottom != null ? {bottom: inset.bottom} : null),\n ...(inset?.start != null ? {insetInlineStart: inset.start} : null),\n ...(inset?.end != null ? {insetInlineEnd: inset.end} : null),\n ...style,\n };\n const visibleToasts = toasts.slice(-maxVisible);\n\n return (\n <ToastContext value={contextValue}>\n {children}\n <div\n aria-label=\"Notifications\"\n className={cx(styles.viewport, styles.position[position], className)}\n data-testid={dataTestId}\n popover={isTopLayer ? 'manual' : undefined}\n ref={mergeRefs(viewportRef, ref)}\n role=\"region\"\n style={insetStyle}>\n {visibleToasts.map(entry => {\n const type = entry.options.type ?? 'info';\n const isAutoHide =\n entry.options.isAutoHide ?? (type === 'error' ? false : true);\n return (\n <div\n className={cx(\n styles.wrapper,\n exitingIds.has(entry.id) ? styles.wrapperExiting : undefined,\n )}\n key={entry.id}>\n <div className={styles.wrapperInner}>\n <Toast\n autoHideDuration={entry.options.autoHideDuration ?? 5000}\n body={entry.options.body}\n endContent={entry.options.endContent}\n isAutoHide={isAutoHide}\n isExiting={exitingIds.has(entry.id)}\n onDismiss={reason => removeToast(entry.id, reason)}\n type={type}\n />\n </div>\n </div>\n );\n })}\n </div>\n </ToastContext>\n );\n}\n\nToastViewport.displayName = 'ToastViewport';\n","'use client';\n\nimport {use, useCallback} from 'react';\nimport {ToastContext} from 'components/Toast/ToastContext';\nimport type {\n ShowToastFn,\n ToastDismissFn,\n ToastEntry,\n ToastOptions,\n} from 'components/Toast/types';\nimport {nowEpochMilliseconds} from 'internal/time';\n\nlet toastIdCounter = 0;\n\nfunction generateToastId(): string {\n toastIdCounter += 1;\n return `silver-toast-${toastIdCounter}`;\n}\n\n/**\n * Returns a function that shows a toast notification.\n * Must be called within a `ToastViewport` provider.\n * The returned function accepts `ToastOptions` and returns a dismiss callback.\n */\nexport function useToast(): ShowToastFn {\n const context = use(ToastContext);\n\n if (context == null) {\n throw new Error(\n 'useToast must be used within a ToastViewport. Add <ToastViewport> around your app root to enable toast notifications.',\n );\n }\n\n return useCallback(\n (options: ToastOptions): ToastDismissFn => {\n const id = generateToastId();\n const entry: ToastEntry = {\n createdAt: nowEpochMilliseconds(),\n id,\n options,\n };\n context.addToast(entry);\n return () => context.removeToast(id, 'manual');\n },\n [context],\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/Toast/Toast.recipe.ts","../src/components/Toast/Toast.tsx","../src/components/Toast/ToastContext.ts","../src/components/Toast/ToastViewport.tsx","../src/components/Toast/useToast.tsx"],"names":["sva","useRef","useLatest_default","useCallback","nowMonotonicMilliseconds","useEffect","jsx","cx","jsxs","Button","X","createContext","css","useState","useMemo","mergeRefs","use","nowEpochMilliseconds"],"mappings":";;;;;;;;;;;;;;AAEO,IAAM,cAAcA,qBAAA,CAAI;AAAA,EAC7B,KAAA,EAAO,CAAC,MAAA,EAAQ,OAAA,EAAS,WAAW,KAAK,CAAA;AAAA,EACzC,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,MACJ,KAAA,EAAO,OAAA;AAAA,MACP,IAAA,EAAM,oBAAA;AAAA,MACN,CAAA,EAAG,GAAA;AAAA,MACH,YAAA,EAAc,IAAA;AAAA,MACd,SAAA,EAAW,IAAA;AAAA,MACX,UAAA,EAAY,MAAA;AAAA,MACZ,kBAAA,EAAoB,oBAAA;AAAA,MACpB,kBAAA,EAAoB,MAAA;AAAA,MACpB,wBAAA,EAA0B,SAAA;AAAA,MAC1B,iBAAA,EAAmB;AAAA,QACjB,OAAA,EAAS,CAAA;AAAA,QACT,SAAA,EAAW;AAAA,OACb;AAAA,MACA,yCAAA,EAA2C;AAAA,QACzC,kBAAA,EAAoB;AAAA;AACtB,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,GAAA,EAAK;AAAA,KACP;AAAA,IACA,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,CAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAAA,IACA,GAAA,EAAK;AAAA,MACH,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,GAAA,EAAK,GAAA;AAAA,MACL,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,EAAC,IAAA,EAAM,EAAC,IAAI,mBAAA,EAAqB,KAAA,EAAO,uBAAqB,EAAC;AAAA,MACpE,KAAA,EAAO,EAAC,IAAA,EAAM,EAAC,IAAI,oBAAA,EAAsB,KAAA,EAAO,wBAAsB,EAAC;AAAA,MACvE,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,EAAC,EAAA,EAAI,sBAAA,EAAwB,OAAO,wBAAA;AAAwB,OACpE;AAAA,MACA,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,EAAC,EAAA,EAAI,sBAAA,EAAwB,OAAO,wBAAA;AAAwB;AACpE,KACF;AAAA,IACA,SAAA,EAAW;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,IAAA,EAAM;AAAA,UACJ,OAAA,EAAS,CAAA;AAAA,UACT,SAAA,EAAW;AAAA;AACb;AACF;AACF,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,MAAA;AAAA,IACN,SAAA,EAAW;AAAA;AAEf,CAAC,CAAA;ACGD,IAAM,cAAA,GAAmD;AAAA,EACvD,KAAA,EAAO,IAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA;AAKO,SAAS,KAAA,CAAM;AAAA,EACpB,gBAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA,EAAe,UAAA;AAAA,EACf,UAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,SAAA,EAAW,kBAAA;AAAA,EACX,GAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAkC;AAChC,EAAA,MAAM,QAAA,GAAWC,aAA6C,IAAI,CAAA;AAClE,EAAA,MAAM,YAAA,GAAeA,aAAsB,IAAI,CAAA;AAC/C,EAAA,MAAM,YAAA,GAAeA,aAAO,gBAAgB,CAAA;AAC5C,EAAA,MAAM,WAAA,GAAcA,aAAO,KAAK,CAAA;AAChC,EAAA,MAAM,YAAA,GAAeC,oCAAU,kBAAkB,CAAA;AAEjD,EAAA,MAAM,UAAA,GAAaC,kBAAY,MAAM;AACnC,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA;AAAA,IACF;AACA,IAAA,IAAI,QAAA,CAAS,WAAW,IAAA,EAAM;AAC5B,MAAA,YAAA,CAAa,SAAS,OAAO,CAAA;AAAA,IAC/B;AACA,IAAA,YAAA,CAAa,UAAUC,0CAAA,EAAyB;AAChD,IAAA,QAAA,CAAS,OAAA,GAAU,UAAA;AAAA,MACjB,MAAM,YAAA,CAAa,OAAA,CAAQ,MAAM,CAAA;AAAA,MACjC,YAAA,CAAa;AAAA,KACf;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,MAAM,UAAA,GAAaD,kBAAY,MAAM;AACnC,IAAA,IAAI,CAAC,UAAA,IAAc,WAAA,CAAY,OAAA,EAAS;AACtC,MAAA;AAAA,IACF;AACA,IAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AACtB,IAAA,IAAI,QAAA,CAAS,WAAW,IAAA,EAAM;AAC5B,MAAA,YAAA,CAAa,SAAS,OAAO,CAAA;AAC7B,MAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AAAA,IACrB;AACA,IAAA,IAAI,YAAA,CAAa,WAAW,IAAA,EAAM;AAChC,MAAA,YAAA,CAAa,UAAU,IAAA,CAAK,GAAA;AAAA,QAC1B,YAAA,CAAa,OAAA,IACVC,0CAAA,EAAyB,GAAI,YAAA,CAAa,OAAA,CAAA;AAAA,QAC7C;AAAA,OACF;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,MAAM,WAAA,GAAcD,kBAAY,MAAM;AACpC,IAAA,IAAI,CAAC,UAAA,IAAc,CAAC,WAAA,CAAY,OAAA,EAAS;AACvC,MAAA;AAAA,IACF;AACA,IAAA,WAAA,CAAY,OAAA,GAAU,KAAA;AACtB,IAAA,UAAA,EAAW;AAAA,EACb,CAAA,EAAG,CAAC,UAAA,EAAY,UAAU,CAAC,CAAA;AAE3B,EAAAE,eAAA,CAAU,MAAM;AACd,IAAA,YAAA,CAAa,OAAA,GAAU,gBAAA;AACvB,IAAA,UAAA,EAAW;AACX,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,QAAA,CAAS,WAAW,IAAA,EAAM;AAC5B,QAAA,YAAA,CAAa,SAAS,OAAO,CAAA;AAAA,MAC/B;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,gBAAA,EAAkB,UAAU,CAAC,CAAA;AAEjC,EAAA,MAAM,OAAA,GAAU,WAAA,CAAY,EAAC,IAAA,EAAM,WAAU,CAAA;AAE7C,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,WAAA,EAAW,cAAA,CAAe,IAAI,CAAA,GAAI,WAAA,GAAc,QAAA;AAAA,MAChD,SAAA,EAAWC,oBAAA,CAAG,OAAA,CAAQ,IAAA,EAAM,SAAS,CAAA;AAAA,MACrC,aAAA,EAAa,UAAA;AAAA,MACb,aAAA,EAAe,WAAA;AAAA,MACf,cAAA,EAAgB,UAAA;AAAA,MAChB,YAAA,EAAc,UAAA;AAAA,MACd,YAAA,EAAc,WAAA;AAAA,MACd,GAAA;AAAA,MACA,IAAA,EAAM,cAAA,CAAe,IAAI,CAAA,GAAI,OAAA,GAAU,QAAA;AAAA,MACvC,KAAA;AAAA,MACA,QAAA,kBAAAC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,KAAA,EACtB,QAAA,EAAA;AAAA,wBAAAF,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,OAAA,EAAU,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,wBACvCE,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,GAAA,EACrB,QAAA,EAAA;AAAA,UAAA,UAAA;AAAA,0BACDF,cAAA;AAAA,YAACG,wBAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAMC,aAAA;AAAA,cACN,UAAA,EAAU,IAAA;AAAA,cACV,KAAA,EAAM,sBAAA;AAAA,cACN,OAAA,EAAS,MAAM,YAAA,CAAa,OAAA,CAAQ,QAAQ,CAAA;AAAA,cAC5C,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAQ;AAAA;AAAA;AACV,SAAA,EACF;AAAA,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;ACrKb,IAAM,YAAA,GAAeC,oBAAwC,IAAI,CAAA;AAExE,YAAA,CAAa,WAAA,GAAc,cAAA;AC8D3B,IAAM,MAAA,GAAS;AAAA,EACb,UAAUC,qBAAA,CAAI;AAAA,IACZ,QAAA,EAAU,OAAA;AAAA,IACV,MAAA,EAAQ,GAAA;AAAA,IACR,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,CAAA,EAAG,GAAA;AAAA,IACH,aAAA,EAAe,MAAA;AAAA,IACf,KAAA,EAAO,OAAA;AAAA,IACP,CAAA,EAAG,CAAA;AAAA,IACH,WAAA,EAAa,CAAA;AAAA,IACb,EAAA,EAAI,aAAA;AAAA,IACJ,QAAA,EAAU;AAAA,GACX,CAAA;AAAA,EACD,SAAA,EAAWA,sBAAI,EAAC,MAAA,EAAQ,GAAG,cAAA,EAAgB,CAAA,EAAG,UAAA,EAAY,UAAA,EAAW,CAAA;AAAA,EACrE,WAAA,EAAaA,sBAAI,EAAC,MAAA,EAAQ,GAAG,gBAAA,EAAkB,CAAA,EAAG,UAAA,EAAY,YAAA,EAAa,CAAA;AAAA,EAC3E,QAAQA,qBAAA,CAAI;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,cAAA,EAAgB,CAAA;AAAA,IAChB,UAAA,EAAY,UAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GAChB,CAAA;AAAA,EACD,UAAUA,qBAAA,CAAI;AAAA,IACZ,GAAA,EAAK,CAAA;AAAA,IACL,gBAAA,EAAkB,CAAA;AAAA,IAClB,UAAA,EAAY,YAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GAChB,CAAA;AAAA,EACD,SAASA,qBAAA,CAAI;AAAA,IACX,aAAA,EAAe,MAAA;AAAA,IACf,OAAA,EAAS,MAAA;AAAA,IACT,gBAAA,EAAkB,KAAA;AAAA,IAClB,EAAA,EAAI,GAAA;AAAA,IACJ,kBAAA,EAAoB,6BAAA;AAAA,IACpB,kBAAA,EAAoB,MAAA;AAAA,IACpB,wBAAA,EAA0B,SAAA;AAAA,IAC1B,yCAAA,EAA2C;AAAA,MACzC,kBAAA,EAAoB;AAAA;AACtB,GACD,CAAA;AAAA,EACD,gBAAgBA,qBAAA,CAAI;AAAA,IAClB,gBAAA,EAAkB,KAAA;AAAA,IAClB,EAAA,EAAI;AAAA,GACL,CAAA;AAAA,EACD,cAAcA,qBAAA,CAAI;AAAA,IAChB,QAAA,EAAU;AAAA,GACX,CAAA;AAAA,EACD,QAAA,EAAU;AAAA,IACR,SAAA,EAAW,EAAA;AAAA,IACX,WAAA,EAAa,EAAA;AAAA,IACb,MAAA,EAAQ,EAAA;AAAA,IACR,QAAA,EAAU;AAAA;AAEd,CAAA;AAEA,MAAA,CAAO,QAAA,CAAS,YAAY,MAAA,CAAO,SAAA;AACnC,MAAA,CAAO,QAAA,CAAS,cAAc,MAAA,CAAO,WAAA;AACrC,MAAA,CAAO,QAAA,CAAS,SAAS,MAAA,CAAO,MAAA;AAChC,MAAA,CAAO,QAAA,CAAS,WAAW,MAAA,CAAO,QAAA;AAkB3B,SAAS,aAAA,CAAc;AAAA,EAC5B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA,EAAe,UAAA;AAAA,EACf,KAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,UAAA,GAAa,CAAA;AAAA,EACb,QAAA,GAAW,WAAA;AAAA,EACX,GAAA;AAAA,EACA;AACF,CAAA,EAA0C;AACxC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIC,cAAA,CAAuB,EAAE,CAAA;AACrD,EAAA,MAAM,CAAC,YAAY,aAAa,CAAA,GAAIA,eAAsB,sBAAM,IAAI,KAAK,CAAA;AACzE,EAAA,MAAM,SAAA,GAAYZ,aAAO,MAAM,CAAA;AAC/B,EAAA,MAAM,WAAA,GAAcA,aAAuB,IAAI,CAAA;AAC/C,EAAA,MAAM,eAAA,GAAkBA,YAAAA;AAAA,wBAClB,GAAA;AAAsD,GAC5D;AAEA,EAAAI,gBAAU,MAAM;AACd,IAAA,SAAA,CAAU,OAAA,GAAU,MAAA;AAAA,EACtB,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,QAAA,GAAWF,iBAAAA,CAAY,CAAC,KAAA,KAAsB;AAClD,IAAA,SAAA,CAAU,CAAA,QAAA,KAAY;AACpB,MAAA,MAAM,EAAC,QAAA,EAAU,iBAAA,GAAoB,WAAA,KAAe,KAAA,CAAM,OAAA;AAC1D,MAAA,IAAI,YAAY,IAAA,EAAM;AACpB,QAAA,MAAM,WAAW,QAAA,CAAS,IAAA;AAAA,UACxB,CAAA,KAAA,KAAS,KAAA,CAAM,OAAA,CAAQ,QAAA,KAAa;AAAA,SACtC;AACA,QAAA,IAAI,YAAY,IAAA,EAAM;AACpB,UAAA,IAAI,sBAAsB,QAAA,EAAU;AAClC,YAAA,OAAO,QAAA;AAAA,UACT;AACA,UAAA,OAAO,QAAA,CAAS,GAAA;AAAA,YAAI,CAAA,KAAA,KAClB,KAAA,CAAM,OAAA,CAAQ,QAAA,KAAa,WAAW,KAAA,GAAQ;AAAA,WAChD;AAAA,QACF;AAAA,MACF;AACA,MAAA,OAAO,CAAC,GAAG,QAAA,EAAU,KAAK,CAAA;AAAA,IAC5B,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,WAAA,GAAcA,iBAAAA,CAAY,CAAC,EAAA,EAAY,MAAA,KAA+B;AAC1E,IAAA,MAAM,QAAQ,SAAA,CAAU,OAAA,CAAQ,KAAK,CAAA,KAAA,KAAS,KAAA,CAAM,OAAO,EAAE,CAAA;AAC7D,IAAA,KAAA,EAAO,OAAA,CAAQ,SAAS,MAAM,CAAA;AAC9B,IAAA,aAAA,CAAc,cAAY,IAAI,GAAA,CAAI,QAAQ,CAAA,CAAE,GAAA,CAAI,EAAE,CAAC,CAAA;AACnD,IAAA,MAAM,eAAA,GAAkB,eAAA,CAAgB,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA;AACtD,IAAA,IAAI,mBAAmB,IAAA,EAAM;AAC3B,MAAA,UAAA,CAAW,aAAa,eAAe,CAAA;AAAA,IACzC;AACA,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,UAAA,CAAW,MAAM;AAC1C,MAAA,eAAA,CAAgB,OAAA,CAAQ,OAAO,EAAE,CAAA;AACjC,MAAA,aAAA,CAAc,CAAA,QAAA,KAAY;AACxB,QAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,QAAQ,CAAA;AAC7B,QAAA,IAAA,CAAK,OAAO,EAAE,CAAA;AACd,QAAA,OAAO,IAAA;AAAA,MACT,CAAC,CAAA;AACD,MAAA,SAAA,CAAU,cAAY,QAAA,CAAS,MAAA,CAAO,WAAS,KAAA,CAAM,EAAA,KAAO,EAAE,CAAC,CAAA;AAAA,IACjE,GAAG,GAAG,CAAA;AACN,IAAA,eAAA,CAAgB,OAAA,CAAQ,GAAA,CAAI,EAAA,EAAI,OAAO,CAAA;AAAA,EACzC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,cAAA,GAAiBA,iBAAAA,CAAY,CAAC,QAAA,KAAqB;AACvD,IAAA,OAAO,UAAU,OAAA,CAAQ,IAAA,CAAK,WAAS,KAAA,CAAM,OAAA,CAAQ,aAAa,QAAQ,CAAA;AAAA,EAC5E,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAeW,aAAA;AAAA,IACnB,OAAO,EAAC,QAAA,EAAU,cAAA,EAAgB,WAAA,EAAW,CAAA;AAAA,IAC7C,CAAC,QAAA,EAAU,cAAA,EAAgB,WAAW;AAAA,GACxC;AAEA,EAAAT,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA;AAAA,IACF;AACA,IAAA,IAAI;AACF,MAAA,WAAA,CAAY,SAAS,WAAA,EAAY;AAAA,IACnC,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAAA,gBAAU,MAAM;AACd,IAAA,MAAM,eAAe,eAAA,CAAgB,OAAA;AACrC,IAAA,OAAO,MAAM;AACX,MAAA,KAAA,MAAW,OAAA,IAAW,YAAA,CAAa,MAAA,EAAO,EAAG;AAC3C,QAAA,UAAA,CAAW,aAAa,OAAO,CAAA;AAAA,MACjC;AACA,MAAA,YAAA,CAAa,KAAA,EAAM;AAAA,IACrB,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAA,GAA4B;AAAA,IAChC,GAAI,OAAO,GAAA,IAAO,IAAA,GAAO,EAAC,GAAA,EAAK,KAAA,CAAM,KAAG,GAAI,IAAA;AAAA,IAC5C,GAAI,OAAO,MAAA,IAAU,IAAA,GAAO,EAAC,MAAA,EAAQ,KAAA,CAAM,QAAM,GAAI,IAAA;AAAA,IACrD,GAAI,OAAO,KAAA,IAAS,IAAA,GAAO,EAAC,gBAAA,EAAkB,KAAA,CAAM,OAAK,GAAI,IAAA;AAAA,IAC7D,GAAI,OAAO,GAAA,IAAO,IAAA,GAAO,EAAC,cAAA,EAAgB,KAAA,CAAM,KAAG,GAAI,IAAA;AAAA,IACvD,GAAG;AAAA,GACL;AACA,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,KAAA,CAAM,CAAC,UAAU,CAAA;AAE9C,EAAA,uBACEG,eAAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,YAAA,EAClB,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,oBACDF,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAW,eAAA;AAAA,QACX,SAAA,EAAWC,qBAAG,MAAA,CAAO,QAAA,EAAU,OAAO,QAAA,CAAS,QAAQ,GAAG,SAAS,CAAA;AAAA,QACnE,aAAA,EAAa,UAAA;AAAA,QACb,OAAA,EAAS,aAAa,QAAA,GAAW,MAAA;AAAA,QACjC,GAAA,EAAKQ,2BAAA,CAAU,WAAA,EAAa,GAAG,CAAA;AAAA,QAC/B,IAAA,EAAK,QAAA;AAAA,QACL,KAAA,EAAO,UAAA;AAAA,QACN,QAAA,EAAA,aAAA,CAAc,IAAI,CAAA,KAAA,KAAS;AAC1B,UAAA,MAAM,IAAA,GAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,IAAQ,MAAA;AACnC,UAAA,MAAM,aACJ,KAAA,CAAM,OAAA,CAAQ,UAAA,KAAe,IAAA,KAAS,UAAU,KAAA,GAAQ,IAAA,CAAA;AAC1D,UAAA,uBACET,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWC,oBAAA;AAAA,gBACT,MAAA,CAAO,OAAA;AAAA,gBACP,WAAW,GAAA,CAAI,KAAA,CAAM,EAAE,CAAA,GAAI,OAAO,cAAA,GAAiB;AAAA,eACrD;AAAA,cAEA,0BAAAD,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,cACrB,QAAA,kBAAAA,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,gBAAA,EAAkB,KAAA,CAAM,OAAA,CAAQ,gBAAA,IAAoB,GAAA;AAAA,kBACpD,IAAA,EAAM,MAAM,OAAA,CAAQ,IAAA;AAAA,kBACpB,UAAA,EAAY,MAAM,OAAA,CAAQ,UAAA;AAAA,kBAC1B,UAAA;AAAA,kBACA,SAAA,EAAW,UAAA,CAAW,GAAA,CAAI,KAAA,CAAM,EAAE,CAAA;AAAA,kBAClC,SAAA,EAAW,CAAA,MAAA,KAAU,WAAA,CAAY,KAAA,CAAM,IAAI,MAAM,CAAA;AAAA,kBACjD;AAAA;AAAA,eACF,EACF;AAAA,aAAA;AAAA,YAXK,KAAA,CAAM;AAAA,WAYb;AAAA,QAEJ,CAAC;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AC1R5B,IAAI,cAAA,GAAiB,CAAA;AAErB,SAAS,eAAA,GAA0B;AACjC,EAAA,cAAA,IAAkB,CAAA;AAClB,EAAA,OAAO,gBAAgB,cAAc,CAAA,CAAA;AACvC;AAOO,SAAS,QAAA,GAAwB;AACtC,EAAA,MAAM,OAAA,GAAUU,UAAI,YAAY,CAAA;AAEhC,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAEA,EAAA,OAAOb,iBAAAA;AAAA,IACL,CAAC,OAAA,KAA0C;AACzC,MAAA,MAAM,KAAK,eAAA,EAAgB;AAC3B,MAAA,MAAM,KAAA,GAAoB;AAAA,QACxB,WAAWc,sCAAA,EAAqB;AAAA,QAChC,EAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,OAAA,CAAQ,SAAS,KAAK,CAAA;AACtB,MAAA,OAAO,MAAM,OAAA,CAAQ,WAAA,CAAY,EAAA,EAAI,QAAQ,CAAA;AAAA,IAC/C,CAAA;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AACF","file":"chunk-TFPTFBHN.cjs","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const toastRecipe = sva({\n slots: ['root', 'inner', 'content', 'end'],\n base: {\n root: {\n width: '25rem',\n maxW: 'calc(100vw - 32px)',\n p: '4',\n borderRadius: 'lg',\n boxShadow: 'xl',\n fontFamily: 'body',\n transitionProperty: 'opacity, transform',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n '@starting-style': {\n opacity: 0,\n transform: 'translateY(8px)',\n },\n '@media (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01ms',\n },\n },\n inner: {\n display: 'flex',\n alignItems: 'center',\n gap: '3',\n },\n content: {\n flex: 1,\n minW: 0,\n },\n end: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n flexShrink: 0,\n },\n },\n variants: {\n type: {\n info: {root: {bg: 'status.info.solid', color: 'status.info.solidFg'}},\n error: {root: {bg: 'status.error.solid', color: 'status.error.solidFg'}},\n success: {\n root: {bg: 'status.success.solid', color: 'status.success.solidFg'},\n },\n warning: {\n root: {bg: 'status.warning.solid', color: 'status.warning.solidFg'},\n },\n },\n isExiting: {\n true: {\n root: {\n opacity: 0,\n transform: 'translateY(-8px)',\n },\n },\n },\n },\n defaultVariants: {\n type: 'info',\n isExiting: false,\n },\n});\n\nexport type ToastVariants = RecipeVariantProps<typeof toastRecipe>;\n","/* eslint-disable jsx-a11y-x/no-static-element-interactions */\n'use client';\nimport {X} from 'lucide-react';\nimport {\n useCallback,\n useEffect,\n useRef,\n type CSSProperties,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {Button} from 'components/Button';\nimport {toastRecipe} from 'components/Toast/Toast.recipe';\nimport type {ToastDismissReason, ToastType} from 'components/Toast/types';\nimport {cx} from 'internal/cx';\nimport {nowMonotonicMilliseconds} from 'internal/time';\nimport useLatest from 'internal/useLatest';\n\nexport interface ToastProps {\n /**\n * Auto-dismiss duration in milliseconds.\n */\n autoHideDuration: number;\n /**\n * Toast message content.\n */\n body: ReactNode;\n /**\n * Additional CSS class names applied to the toast.\n */\n className?: string;\n /**\n * Test ID applied to the toast.\n */\n 'data-testid'?: string;\n /**\n * Content rendered before the dismiss button.\n */\n endContent?: ReactNode;\n /**\n * Whether the toast auto-dismisses.\n */\n isAutoHide: boolean;\n /**\n * Whether the toast is exiting.\n * @default false\n */\n isExiting?: boolean;\n /**\n * Called when the toast should be dismissed.\n */\n onDismiss: (reason: ToastDismissReason) => void;\n /**\n * Ref forwarded to the toast element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Inline styles applied to the toast.\n */\n style?: CSSProperties;\n /**\n * Toast tone.\n */\n type: ToastType;\n}\n\nconst assertiveTypes: Partial<Record<ToastType, true>> = {\n error: true,\n warning: true,\n};\n\n/**\n * An individual toast notification.\n */\nexport function Toast({\n autoHideDuration,\n body,\n className,\n 'data-testid': dataTestId,\n endContent,\n isAutoHide,\n isExiting = false,\n onDismiss: onDismissFromProps,\n ref,\n style,\n type,\n}: ToastProps): React.JSX.Element {\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const startedAtRef = useRef<number | null>(null);\n const remainingRef = useRef(autoHideDuration);\n const isPausedRef = useRef(false);\n const onDismissRef = useLatest(onDismissFromProps);\n\n const startTimer = useCallback(() => {\n if (!isAutoHide) {\n return;\n }\n if (timerRef.current != null) {\n clearTimeout(timerRef.current);\n }\n startedAtRef.current = nowMonotonicMilliseconds();\n timerRef.current = setTimeout(\n () => onDismissRef.current('auto'),\n remainingRef.current,\n );\n }, [isAutoHide]);\n\n const pauseTimer = useCallback(() => {\n if (!isAutoHide || isPausedRef.current) {\n return;\n }\n isPausedRef.current = true;\n if (timerRef.current != null) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n if (startedAtRef.current != null) {\n remainingRef.current = Math.max(\n remainingRef.current -\n (nowMonotonicMilliseconds() - startedAtRef.current),\n 1000,\n );\n }\n }, [isAutoHide]);\n\n const resumeTimer = useCallback(() => {\n if (!isAutoHide || !isPausedRef.current) {\n return;\n }\n isPausedRef.current = false;\n startTimer();\n }, [isAutoHide, startTimer]);\n\n useEffect(() => {\n remainingRef.current = autoHideDuration;\n startTimer();\n return () => {\n if (timerRef.current != null) {\n clearTimeout(timerRef.current);\n }\n };\n }, [autoHideDuration, startTimer]);\n\n const classes = toastRecipe({type, isExiting});\n\n return (\n <div\n aria-atomic=\"true\"\n aria-live={assertiveTypes[type] ? 'assertive' : 'polite'}\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n onBlurCapture={resumeTimer}\n onFocusCapture={pauseTimer}\n onMouseEnter={pauseTimer}\n onMouseLeave={resumeTimer}\n ref={ref}\n role={assertiveTypes[type] ? 'alert' : 'status'}\n style={style}>\n <div className={classes.inner}>\n <div className={classes.content}>{body}</div>\n <div className={classes.end}>\n {endContent}\n <Button\n icon={X}\n isIconOnly\n label=\"Dismiss notification\"\n onClick={() => onDismissRef.current('manual')}\n size=\"sm\"\n variant=\"onSolid\"\n />\n </div>\n </div>\n </div>\n );\n}\n\nToast.displayName = 'Toast';\n","'use client';\n\nimport {createContext} from 'react';\nimport type {ToastDismissReason, ToastEntry} from 'components/Toast/types';\n\nexport interface ToastContextValue {\n addToast: (entry: ToastEntry) => void;\n findByUniqueID: (uniqueID: string) => ToastEntry | undefined;\n removeToast: (id: string, reason: ToastDismissReason) => void;\n}\n\nexport const ToastContext = createContext<ToastContextValue | null>(null);\n\nToastContext.displayName = 'ToastContext';\n","'use client';\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {Toast} from 'components/Toast/Toast';\nimport {\n ToastContext,\n type ToastContextValue,\n} from 'components/Toast/ToastContext';\nimport type {\n ToastDismissReason,\n ToastEntry,\n ToastPosition,\n} from 'components/Toast/types';\nimport {cx} from 'internal/cx';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport {css} from 'styled-system/css';\n\nexport interface ToastViewportInset {\n bottom?: number;\n end?: number;\n start?: number;\n top?: number;\n}\n\nexport interface ToastViewportProps {\n /**\n * App content that should receive the toast context.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the viewport.\n */\n className?: string;\n /**\n * Test ID applied to the viewport.\n */\n 'data-testid'?: string;\n /**\n * Custom viewport inset.\n */\n inset?: Readonly<ToastViewportInset>;\n /**\n * Whether to promote the viewport to the CSS top layer using popover.\n * @default true\n */\n isTopLayer?: boolean;\n /**\n * Maximum visible toast count.\n * @default 5\n */\n maxVisible?: number;\n /**\n * Toast stack position.\n * @default 'bottomEnd'\n */\n position?: ToastPosition;\n /**\n * Ref forwarded to the viewport element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Inline styles applied to the viewport.\n */\n style?: CSSProperties;\n}\n\nconst styles = {\n viewport: css({\n position: 'fixed',\n zIndex: 500,\n display: 'flex',\n flexDirection: 'column',\n p: '4',\n pointerEvents: 'none',\n inset: 'unset',\n m: 0,\n borderWidth: 0,\n bg: 'transparent',\n overflow: 'visible',\n }),\n bottomEnd: css({bottom: 0, insetInlineEnd: 0, alignItems: 'flex-end'}),\n bottomStart: css({bottom: 0, insetInlineStart: 0, alignItems: 'flex-start'}),\n topEnd: css({\n top: 0,\n insetInlineEnd: 0,\n alignItems: 'flex-end',\n flexDirection: 'column-reverse',\n }),\n topStart: css({\n top: 0,\n insetInlineStart: 0,\n alignItems: 'flex-start',\n flexDirection: 'column-reverse',\n }),\n wrapper: css({\n pointerEvents: 'auto',\n display: 'grid',\n gridTemplateRows: '1fr',\n pb: '3',\n transitionProperty: 'grid-template-rows, padding',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n '@media (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01ms',\n },\n }),\n wrapperExiting: css({\n gridTemplateRows: '0fr',\n pb: 0,\n }),\n wrapperInner: css({\n overflow: 'hidden',\n }),\n position: {\n bottomEnd: '',\n bottomStart: '',\n topEnd: '',\n topStart: '',\n } satisfies Record<ToastPosition, string>,\n} as const;\n\nstyles.position.bottomEnd = styles.bottomEnd;\nstyles.position.bottomStart = styles.bottomStart;\nstyles.position.topEnd = styles.topEnd;\nstyles.position.topStart = styles.topStart;\n\n/**\n * Toast provider and viewport. Mount once near the app root to enable\n * toast notifications. Components below this provider can call `useToast()`\n * to show toasts.\n *\n * @example\n * ```tsx\n * function App() {\n * return (\n * <ToastViewport>\n * <MyRoutes />\n * </ToastViewport>\n * );\n * }\n * ```\n */\nexport function ToastViewport({\n children,\n className,\n 'data-testid': dataTestId,\n inset,\n isTopLayer = true,\n maxVisible = 5,\n position = 'bottomEnd',\n ref,\n style,\n}: ToastViewportProps): React.JSX.Element {\n const [toasts, setToasts] = useState<ToastEntry[]>([]);\n const [exitingIds, setExitingIds] = useState<Set<string>>(() => new Set());\n const toastsRef = useRef(toasts);\n const viewportRef = useRef<HTMLDivElement>(null);\n const exitTimeoutsRef = useRef(\n new Map<string, ReturnType<typeof globalThis.setTimeout>>(),\n );\n\n useEffect(() => {\n toastsRef.current = toasts;\n }, [toasts]);\n\n const addToast = useCallback((entry: ToastEntry) => {\n setToasts(previous => {\n const {uniqueID, collisionBehavior = 'overwrite'} = entry.options;\n if (uniqueID != null) {\n const existing = previous.find(\n toast => toast.options.uniqueID === uniqueID,\n );\n if (existing != null) {\n if (collisionBehavior === 'ignore') {\n return previous;\n }\n return previous.map(toast =>\n toast.options.uniqueID === uniqueID ? entry : toast,\n );\n }\n }\n return [...previous, entry];\n });\n }, []);\n\n const removeToast = useCallback((id: string, reason: ToastDismissReason) => {\n const entry = toastsRef.current.find(toast => toast.id === id);\n entry?.options.onHide?.(reason);\n setExitingIds(previous => new Set(previous).add(id));\n const existingTimeout = exitTimeoutsRef.current.get(id);\n if (existingTimeout != null) {\n globalThis.clearTimeout(existingTimeout);\n }\n const timeout = globalThis.setTimeout(() => {\n exitTimeoutsRef.current.delete(id);\n setExitingIds(previous => {\n const next = new Set(previous);\n next.delete(id);\n return next;\n });\n setToasts(previous => previous.filter(toast => toast.id !== id));\n }, 180);\n exitTimeoutsRef.current.set(id, timeout);\n }, []);\n\n const findByUniqueID = useCallback((uniqueID: string) => {\n return toastsRef.current.find(toast => toast.options.uniqueID === uniqueID);\n }, []);\n\n const contextValue = useMemo<ToastContextValue>(\n () => ({addToast, findByUniqueID, removeToast}),\n [addToast, findByUniqueID, removeToast],\n );\n\n useEffect(() => {\n if (!isTopLayer) {\n return;\n }\n try {\n viewportRef.current?.showPopover();\n } catch {\n // Already showing.\n }\n }, [isTopLayer]);\n\n useEffect(() => {\n const exitTimeouts = exitTimeoutsRef.current;\n return () => {\n for (const timeout of exitTimeouts.values()) {\n globalThis.clearTimeout(timeout);\n }\n exitTimeouts.clear();\n };\n }, []);\n\n const insetStyle: CSSProperties = {\n ...(inset?.top != null ? {top: inset.top} : null),\n ...(inset?.bottom != null ? {bottom: inset.bottom} : null),\n ...(inset?.start != null ? {insetInlineStart: inset.start} : null),\n ...(inset?.end != null ? {insetInlineEnd: inset.end} : null),\n ...style,\n };\n const visibleToasts = toasts.slice(-maxVisible);\n\n return (\n <ToastContext value={contextValue}>\n {children}\n <div\n aria-label=\"Notifications\"\n className={cx(styles.viewport, styles.position[position], className)}\n data-testid={dataTestId}\n popover={isTopLayer ? 'manual' : undefined}\n ref={mergeRefs(viewportRef, ref)}\n role=\"region\"\n style={insetStyle}>\n {visibleToasts.map(entry => {\n const type = entry.options.type ?? 'info';\n const isAutoHide =\n entry.options.isAutoHide ?? (type === 'error' ? false : true);\n return (\n <div\n className={cx(\n styles.wrapper,\n exitingIds.has(entry.id) ? styles.wrapperExiting : undefined,\n )}\n key={entry.id}>\n <div className={styles.wrapperInner}>\n <Toast\n autoHideDuration={entry.options.autoHideDuration ?? 5000}\n body={entry.options.body}\n endContent={entry.options.endContent}\n isAutoHide={isAutoHide}\n isExiting={exitingIds.has(entry.id)}\n onDismiss={reason => removeToast(entry.id, reason)}\n type={type}\n />\n </div>\n </div>\n );\n })}\n </div>\n </ToastContext>\n );\n}\n\nToastViewport.displayName = 'ToastViewport';\n","'use client';\n\nimport {use, useCallback} from 'react';\nimport {ToastContext} from 'components/Toast/ToastContext';\nimport type {\n ShowToastFn,\n ToastDismissFn,\n ToastEntry,\n ToastOptions,\n} from 'components/Toast/types';\nimport {nowEpochMilliseconds} from 'internal/time';\n\nlet toastIdCounter = 0;\n\nfunction generateToastId(): string {\n toastIdCounter += 1;\n return `silver-toast-${toastIdCounter}`;\n}\n\n/**\n * Returns a function that shows a toast notification.\n * Must be called within a `ToastViewport` provider.\n * The returned function accepts `ToastOptions` and returns a dismiss callback.\n */\nexport function useToast(): ShowToastFn {\n const context = use(ToastContext);\n\n if (context == null) {\n throw new Error(\n 'useToast must be used within a ToastViewport. Add <ToastViewport> around your app root to enable toast notifications.',\n );\n }\n\n return useCallback(\n (options: ToastOptions): ToastDismissFn => {\n const id = generateToastId();\n const entry: ToastEntry = {\n createdAt: nowEpochMilliseconds(),\n id,\n options,\n };\n context.addToast(entry);\n return () => context.removeToast(id, 'manual');\n },\n [context],\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { DropdownMenuItem, useMenuKeyboard, renderMenuItems, DropdownMenuContext, formatMenuWidth } from './chunk-PLQDNBCW.js';
2
+ import { DropdownMenuItem, useMenuKeyboard, renderMenuItems, DropdownMenuContext, formatMenuWidth } from './chunk-OYBRYZKK.js';
3
3
  import { css } from './chunk-OD4DHHZH.js';
4
4
  import { cx } from './chunk-PPNETWIP.js';
5
5
  import { useId, useRef, useState, useCallback, useEffect, useImperativeHandle, useMemo } from 'react';
@@ -203,5 +203,5 @@ function ContextMenu({
203
203
  ContextMenu.displayName = "ContextMenu";
204
204
 
205
205
  export { ContextMenu, ContextMenuItem };
206
- //# sourceMappingURL=chunk-446LQC5C.js.map
207
- //# sourceMappingURL=chunk-446LQC5C.js.map
206
+ //# sourceMappingURL=chunk-TRDO4OBD.js.map
207
+ //# sourceMappingURL=chunk-TRDO4OBD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":";;;;;;AAwCO,IAAM,eAAA,GAAkB;AA6D/B,IAAM,MAAA,GAAS;AAAA,EACb,SAAS,GAAA,CAAI;AAAA,IACX,OAAA,EAAS;AAAA,GACV,CAAA;AAAA,EACD,MAAM,GAAA,CAAI;AAAA,IACR,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,IAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,CAAA,EAAG,CAAA;AAAA,IACH,SAAA,EAAW,MAAA;AAAA,IACX,CAAA,EAAG,GAAA;AAAA,IACH,WAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAc,IAAA;AAAA,IACd,KAAA,EAAO;AAAA,MACL,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAA,EAAI,IAAA;AAAA,IACJ,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,OAAA;AAAA,IACb,WAAA,EAAa;AAAA,GACd;AACH,CAAA;AAEA,SAAS,cAAc,OAAA,EAAsC;AAC3D,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAA,CAAQ,YAAA,CAAa,cAAc,CAAA,EAAG;AACxC,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI;AACF,IAAA,OAAO,OAAA,CAAQ,QAAQ,eAAe,CAAA;AAAA,EACxC,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAKO,SAAS,WAAA,CAAY;AAAA,EAC1B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA,EAAe,UAAA;AAAA,EACf,YAAA,GAAe,IAAA;AAAA,EACf,UAAA,GAAa,KAAA;AAAA,EACb,SAAA,GAAY,GAAA;AAAA,EACZ,YAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwC;AACtC,EAAA,MAAM,SAAS,KAAA,EAAM;AACrB,EAAA,MAAM,OAAA,GAAU,OAA8B,IAAI,CAAA;AAClD,EAAA,MAAM,UAAA,GAAa,OAA8B,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,CAAS,EAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAE,CAAA;AACrD,EAAA,MAAM,KAAA,GAAQ,OAAA,IAAW,KAAA,GAAQ,KAAA,CAAM,KAAA,GAAQ,MAAA;AAC/C,EAAA,MAAM,WAAA,GAAc,aAAA,IAAiB,KAAA,GAAQ,KAAA,CAAM,WAAA,GAAc,MAAA;AAEjE,EAAA,MAAM,IAAA,GAAO,YAAY,MAAM;AAC7B,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AACA,IAAA,OAAA,CAAQ,SAAS,WAAA,EAAY;AAC7B,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,YAAA,GAAe,KAAK,CAAA;AAAA,EACtB,CAAA,EAAG,CAAC,MAAA,EAAQ,YAAY,CAAC,CAAA;AAEzB,EAAA,MAAM,cAAA,GAAiB,YAAY,MAAM;AACvC,IAAA,MAAM,SAAA,GAAY,QAAQ,OAAA,EAAS,aAAA;AAAA,MACjC;AAAA,KACF;AACA,IAAA,SAAA,EAAW,KAAA,EAAM;AAAA,EACnB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,IAAA,GAAO,WAAA;AAAA,IACX,CAAC,GAAW,CAAA,KAAc;AACxB,MAAA,WAAA,CAAY,EAAC,CAAA,EAAG,CAAA,EAAE,CAAA;AAClB,MAAA,IAAI,aAAA,CAAc,OAAA,CAAQ,OAAO,CAAA,EAAG;AAClC,QAAA,OAAA,CAAQ,SAAS,WAAA,EAAY;AAAA,MAC/B;AACA,MAAA,OAAA,CAAQ,SAAS,WAAA,EAAY;AAC7B,MAAA,SAAA,CAAU,IAAI,CAAA;AACd,MAAA,YAAA,GAAe,IAAI,CAAA;AACnB,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,IAAI,OAAA,CAAQ,WAAW,IAAA,EAAM;AAC3B,UAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,OAAA,CAAQ,qBAAA,EAAsB;AACnD,UAAA,MAAM,MAAA,GAAS,CAAA;AACf,UAAA,MAAM,QAAA,GAAW,KAAK,GAAA,CAAI,CAAA,EAAG,OAAO,UAAA,GAAa,IAAA,CAAK,QAAQ,MAAM,CAAA;AACpE,UAAA,MAAM,WAAW,IAAA,CAAK,GAAA;AAAA,YACpB,CAAA;AAAA,YACA,MAAA,CAAO,WAAA,GAAc,IAAA,CAAK,MAAA,GAAS;AAAA,WACrC;AACA,UAAA,WAAA,CAAY;AAAA,YACV,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,QAAQ,CAAA;AAAA,YACvB,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,QAAQ;AAAA,WACxB,CAAA;AAAA,QACH;AACA,QAAA,IAAI,YAAA,EAAc;AAChB,UAAA,cAAA,EAAe;AAAA,QACjB;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,YAAA,EAAc,YAAY;AAAA,GAC7C;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAiC;AACxD,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IACE,MAAA,YAAkB,IAAA,KACjB,OAAA,CAAQ,OAAA,EAAS,QAAA,CAAS,MAAM,CAAA,KAAM,IAAA,IACrC,UAAA,CAAW,OAAA,EAAS,QAAA,CAAS,MAAM,MAAM,IAAA,CAAA,EAC3C;AACA,QAAA;AAAA,MACF;AACA,MAAA,IAAA,EAAK;AAAA,IACP,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACtD,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,eAAe,CAAA;AAAA,IAC3D,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,MAAM,CAAC,CAAA;AAEjB,EAAA,mBAAA,CAAoB,GAAA,EAAK,MAAM,UAAA,CAAW,OAAyB,CAAA;AAEnE,EAAA,MAAM,YAAA,GAAe,OAAA;AAAA,IACnB,OAAO;AAAA,MACL,SAAA,EAAW,IAAA;AAAA,MACX,QAAA,EAAU;AAAA,KACZ,CAAA;AAAA,IACA,CAAC,MAAM,IAAI;AAAA,GACb;AAEA,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,KAAA,KAAsC;AACrC,MAAA,IAAI,UAAA,EAAY;AACd,QAAA;AAAA,MACF;AACA,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,KAAA,CAAM,OAAO,CAAA;AAAA,IACnC,CAAA;AAAA,IACA,CAAC,YAAY,IAAI;AAAA,GACnB;AAEA,EAAA,MAAM,oBAAA,GAAuB,WAAA;AAAA,IAC3B,CAAC,KAAA,KAAyC;AACxC,MAAA,IAAI,UAAA,EAAY;AACd,QAAA;AAAA,MACF;AACA,MAAA,IACE,KAAA,CAAM,QAAQ,aAAA,IACd,EAAE,MAAM,QAAA,IAAY,KAAA,CAAM,QAAQ,KAAA,CAAA,EAClC;AACA,QAAA;AAAA,MACF;AACA,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,aAAA,CAAc,qBAAA,EAAsB;AACvD,MAAA,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AAAA,IAC7B,CAAA;AAAA,IACA,CAAC,YAAY,IAAI;AAAA,GACnB;AAEA,EAAA,MAAM,iBAAA,GAAoB,eAAA,CAAgB,OAAA,EAAS,IAAI,CAAA;AAEvD,EAAA,MAAM,QAAA,GAAW,OAAA;AAAA,IACf,MAAkB,KAAA,IAAS,IAAA,GAAO,WAAA,GAAc,gBAAgB,KAAK,CAAA;AAAA,IACrE,CAAC,OAAO,WAAW;AAAA,GACrB;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,eAAA,EAAe,SAAS,MAAA,GAAS,MAAA;AAAA,QACjC,eAAA,EAAe,MAAA;AAAA,QACf,eAAA,EAAc,MAAA;AAAA,QACd,WAAW,MAAA,CAAO,OAAA;AAAA,QAClB,aAAA,EAAa,UAAA;AAAA,QACb,aAAA,EAAe,iBAAA;AAAA,QACf,SAAA,EAAW,oBAAA;AAAA,QACX,GAAA,EAAK,UAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,CAAA;AAAA,QACT;AAAA;AAAA,KACH;AAAA,oBACA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAW,cAAA;AAAA,QACX,SAAA,EAAW,EAAA,CAAG,MAAA,CAAO,IAAA,EAAM,SAAS,CAAA;AAAA,QACpC,EAAA,EAAI,MAAA;AAAA,QACJ,SAAA,EAAW,iBAAA;AAAA,QACX,OAAA,EAAQ,QAAA;AAAA,QACR,GAAA,EAAK,OAAA;AAAA,QACL,IAAA,EAAK,MAAA;AAAA,QACL,KAAA,EAAO;AAAA,UACL,MAAM,QAAA,CAAS,CAAA;AAAA,UACf,QAAA,EAAU,OAAA;AAAA,UACV,KAAK,QAAA,CAAS,CAAA;AAAA,UACd,KAAA,EAAO,gBAAgB,SAAS,CAAA;AAAA,UAChC,GAAG;AAAA,SACL;AAAA,QACA,QAAA,EAAU,EAAA;AAAA,QACV,QAAA,kBAAA,GAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAO,YAAA,EACzB,QAAA,EAAA,QAAA,EACH;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-446LQC5C.js","sourcesContent":["'use client';\n\nimport {\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-TRDO4OBD.js","sourcesContent":["'use client';\n\nimport {\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"]}
@@ -2,8 +2,8 @@
2
2
  'use strict';
3
3
 
4
4
  var chunk3JCYTBXI_cjs = require('./chunk-3JCYTBXI.cjs');
5
- var chunkS5FJ3FHH_cjs = require('./chunk-S5FJ3FHH.cjs');
6
- var chunkEPQKIFGY_cjs = require('./chunk-EPQKIFGY.cjs');
5
+ var chunkHW7GODZJ_cjs = require('./chunk-HW7GODZJ.cjs');
6
+ var chunkI2QAN2HX_cjs = require('./chunk-I2QAN2HX.cjs');
7
7
  var chunkQAO6QMNQ_cjs = require('./chunk-QAO6QMNQ.cjs');
8
8
  var chunkZ6RT3WPE_cjs = require('./chunk-Z6RT3WPE.cjs');
9
9
  var chunkJRBQKFVO_cjs = require('./chunk-JRBQKFVO.cjs');
@@ -377,7 +377,7 @@ function LayoutHeader({
377
377
  const rootStyle = { height, ...style };
378
378
  const classes = layoutHeaderRecipe({ align, hasDivider });
379
379
  const closeButton = dialogContext != null ? /* @__PURE__ */ jsxRuntime.jsx(
380
- chunkS5FJ3FHH_cjs.Button,
380
+ chunkHW7GODZJ_cjs.Button,
381
381
  {
382
382
  className: classes.closeButton,
383
383
  icon: lucideReact.X,
@@ -400,7 +400,7 @@ function LayoutHeader({
400
400
  chunkQAO6QMNQ_cjs.isReactNode(startContent) ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.actions, children: startContent }) : null,
401
401
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.titleArea, children: [
402
402
  /* @__PURE__ */ jsxRuntime.jsx(
403
- chunkEPQKIFGY_cjs.Heading,
403
+ chunkI2QAN2HX_cjs.Heading,
404
404
  {
405
405
  "data-dialog-autofocus": dialogContext != null ? "true" : void 0,
406
406
  id: dialogContext?.titleId,
@@ -409,7 +409,7 @@ function LayoutHeader({
409
409
  children: title
410
410
  }
411
411
  ),
412
- subtitle != null ? /* @__PURE__ */ jsxRuntime.jsx(chunkEPQKIFGY_cjs.Text, { as: "p", color: "secondary", type: "supporting", children: subtitle }) : null
412
+ subtitle != null ? /* @__PURE__ */ jsxRuntime.jsx(chunkI2QAN2HX_cjs.Text, { as: "p", color: "secondary", type: "supporting", children: subtitle }) : null
413
413
  ] }),
414
414
  hasEnd ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.actions, children: [
415
415
  endContent,
@@ -462,5 +462,5 @@ exports.LayoutContent = LayoutContent;
462
462
  exports.LayoutFooter = LayoutFooter;
463
463
  exports.LayoutHeader = LayoutHeader;
464
464
  exports.LayoutPanel = LayoutPanel;
465
- //# sourceMappingURL=chunk-3PHJWXBO.cjs.map
466
- //# sourceMappingURL=chunk-3PHJWXBO.cjs.map
465
+ //# sourceMappingURL=chunk-TRQQZ3FY.cjs.map
466
+ //# sourceMappingURL=chunk-TRQQZ3FY.cjs.map