silver-ui 0.5.0 → 0.6.0

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 (480) hide show
  1. package/README.md +1 -65
  2. package/dist/{chunk-FNRYGCO3.js → chunk-2SN3KVWF.js} +4 -4
  3. package/dist/{chunk-FNRYGCO3.js.map → chunk-2SN3KVWF.js.map} +1 -1
  4. package/dist/{chunk-BSPWX2OZ.cjs → chunk-3IDT3PZC.cjs} +10 -10
  5. package/dist/{chunk-BSPWX2OZ.cjs.map → chunk-3IDT3PZC.cjs.map} +1 -1
  6. package/dist/chunk-3PEK2Q54.cjs +31 -0
  7. package/dist/chunk-3PEK2Q54.cjs.map +1 -0
  8. package/dist/{chunk-4SUQFPWH.js → chunk-45OSUS5A.js} +6 -6
  9. package/dist/{chunk-4SUQFPWH.js.map → chunk-45OSUS5A.js.map} +1 -1
  10. package/dist/{chunk-L7XJZJCM.js → chunk-4EUUZQAM.js} +5 -5
  11. package/dist/{chunk-L7XJZJCM.js.map → chunk-4EUUZQAM.js.map} +1 -1
  12. package/dist/{chunk-Q3HMGFGI.js → chunk-4JJFQZVY.js} +98 -77
  13. package/dist/chunk-4JJFQZVY.js.map +1 -0
  14. package/dist/chunk-5FQKELP6.js +28 -0
  15. package/dist/chunk-5FQKELP6.js.map +1 -0
  16. package/dist/{chunk-TTDNCN5G.cjs → chunk-5JROXZBG.cjs} +13 -39
  17. package/dist/chunk-5JROXZBG.cjs.map +1 -0
  18. package/dist/{chunk-OUZX7STE.cjs → chunk-5K3C3INR.cjs} +25 -53
  19. package/dist/chunk-5K3C3INR.cjs.map +1 -0
  20. package/dist/{chunk-AEYJ6PWC.js → chunk-5RFHYDQY.js} +16 -11
  21. package/dist/chunk-5RFHYDQY.js.map +1 -0
  22. package/dist/{chunk-PGTOVMP7.cjs → chunk-6FC5YF2O.cjs} +10 -10
  23. package/dist/{chunk-PGTOVMP7.cjs.map → chunk-6FC5YF2O.cjs.map} +1 -1
  24. package/dist/{chunk-6EYLEVC6.js → chunk-6I5QWA6A.js} +13 -6
  25. package/dist/chunk-6I5QWA6A.js.map +1 -0
  26. package/dist/{chunk-F7BFO3SD.cjs → chunk-6ZV7HGZT.cjs} +24 -8
  27. package/dist/chunk-6ZV7HGZT.cjs.map +1 -0
  28. package/dist/{chunk-2WTHSGDP.cjs → chunk-7EE6DCRP.cjs} +14 -14
  29. package/dist/{chunk-2WTHSGDP.cjs.map → chunk-7EE6DCRP.cjs.map} +1 -1
  30. package/dist/{chunk-HIH6MS5D.js → chunk-7TJ2O56S.js} +4 -4
  31. package/dist/{chunk-HIH6MS5D.js.map → chunk-7TJ2O56S.js.map} +1 -1
  32. package/dist/chunk-A2AC6WL5.cjs +4 -0
  33. package/dist/chunk-A2AC6WL5.cjs.map +1 -0
  34. package/dist/{chunk-BIJ6YDWJ.cjs → chunk-AFJEAYR4.cjs} +15 -8
  35. package/dist/chunk-AFJEAYR4.cjs.map +1 -0
  36. package/dist/chunk-AFXU6XIS.js +3 -0
  37. package/dist/chunk-AFXU6XIS.js.map +1 -0
  38. package/dist/{chunk-L5PJCLV6.js → chunk-AKAXQ4RL.js} +16 -25
  39. package/dist/chunk-AKAXQ4RL.js.map +1 -0
  40. package/dist/{chunk-OTQAREYU.js → chunk-ATK3F3MC.js} +4 -4
  41. package/dist/{chunk-OTQAREYU.js.map → chunk-ATK3F3MC.js.map} +1 -1
  42. package/dist/{chunk-2VL66QBX.js → chunk-B5QX6KGJ.js} +3 -3
  43. package/dist/{chunk-2VL66QBX.js.map → chunk-B5QX6KGJ.js.map} +1 -1
  44. package/dist/{chunk-TOQ4MGM5.js → chunk-BDFNEQR3.js} +6 -6
  45. package/dist/{chunk-TOQ4MGM5.js.map → chunk-BDFNEQR3.js.map} +1 -1
  46. package/dist/{chunk-UARQIMPS.js → chunk-BGLT7XH6.js} +5 -5
  47. package/dist/{chunk-UARQIMPS.js.map → chunk-BGLT7XH6.js.map} +1 -1
  48. package/dist/{chunk-2AWSJF22.js → chunk-BNGYGCT2.js} +8 -8
  49. package/dist/chunk-BNGYGCT2.js.map +1 -0
  50. package/dist/{chunk-TH537HOM.js → chunk-C6EWA3H2.js} +6 -6
  51. package/dist/{chunk-TH537HOM.js.map → chunk-C6EWA3H2.js.map} +1 -1
  52. package/dist/{chunk-2F5TDBRT.cjs → chunk-CABYRYVA.cjs} +8 -8
  53. package/dist/{chunk-2F5TDBRT.cjs.map → chunk-CABYRYVA.cjs.map} +1 -1
  54. package/dist/{chunk-7CTHD4G6.cjs → chunk-CNDUYO7I.cjs} +5 -5
  55. package/dist/{chunk-7CTHD4G6.cjs.map → chunk-CNDUYO7I.cjs.map} +1 -1
  56. package/dist/{chunk-3VJIUZAY.cjs → chunk-CVT7JW6C.cjs} +16 -25
  57. package/dist/chunk-CVT7JW6C.cjs.map +1 -0
  58. package/dist/{chunk-GSTINE4X.js → chunk-CZUMVOPH.js} +1771 -575
  59. package/dist/chunk-CZUMVOPH.js.map +1 -0
  60. package/dist/{chunk-MGJLBHPJ.js → chunk-DAO4UXR4.js} +4 -4
  61. package/dist/{chunk-MGJLBHPJ.js.map → chunk-DAO4UXR4.js.map} +1 -1
  62. package/dist/{chunk-HWD4HDQ5.cjs → chunk-DFEAB7Z3.cjs} +10 -10
  63. package/dist/{chunk-HWD4HDQ5.cjs.map → chunk-DFEAB7Z3.cjs.map} +1 -1
  64. package/dist/{chunk-GY2ZZR4Z.cjs → chunk-DK6USFZP.cjs} +18 -18
  65. package/dist/{chunk-GY2ZZR4Z.cjs.map → chunk-DK6USFZP.cjs.map} +1 -1
  66. package/dist/{chunk-WPMWHKJX.js → chunk-DPSAPA6B.js} +5 -5
  67. package/dist/{chunk-WPMWHKJX.js.map → chunk-DPSAPA6B.js.map} +1 -1
  68. package/dist/{chunk-AV7D3SXF.js → chunk-DWZR2AGT.js} +4 -4
  69. package/dist/{chunk-AV7D3SXF.js.map → chunk-DWZR2AGT.js.map} +1 -1
  70. package/dist/{chunk-2RZNX26F.cjs → chunk-DXUFDJHA.cjs} +12 -13
  71. package/dist/chunk-DXUFDJHA.cjs.map +1 -0
  72. package/dist/{chunk-67UUGI3M.cjs → chunk-DYMZ4DLN.cjs} +8 -8
  73. package/dist/{chunk-67UUGI3M.cjs.map → chunk-DYMZ4DLN.cjs.map} +1 -1
  74. package/dist/{chunk-JM4Q7ZQH.cjs → chunk-EEOUWM2F.cjs} +8 -8
  75. package/dist/chunk-EEOUWM2F.cjs.map +1 -0
  76. package/dist/{chunk-KC4EKXGF.js → chunk-EIJSWHG7.js} +9 -10
  77. package/dist/chunk-EIJSWHG7.js.map +1 -0
  78. package/dist/{chunk-FCUUGJTM.cjs → chunk-ENVDR66N.cjs} +132 -160
  79. package/dist/chunk-ENVDR66N.cjs.map +1 -0
  80. package/dist/{chunk-J2YKUHQM.js → chunk-ERVWZILR.js} +14 -23
  81. package/dist/chunk-ERVWZILR.js.map +1 -0
  82. package/dist/{chunk-IX26TMZD.cjs → chunk-EVCQCZMM.cjs} +5 -5
  83. package/dist/{chunk-IX26TMZD.cjs.map → chunk-EVCQCZMM.cjs.map} +1 -1
  84. package/dist/{chunk-E42WOTIC.js → chunk-FIOCTAXT.js} +3 -3
  85. package/dist/{chunk-E42WOTIC.js.map → chunk-FIOCTAXT.js.map} +1 -1
  86. package/dist/{chunk-LW3DJOF4.cjs → chunk-FLDTPAG4.cjs} +6 -6
  87. package/dist/{chunk-LW3DJOF4.cjs.map → chunk-FLDTPAG4.cjs.map} +1 -1
  88. package/dist/{chunk-XHJRAEGW.js → chunk-FQN22DO5.js} +5 -5
  89. package/dist/{chunk-XHJRAEGW.js.map → chunk-FQN22DO5.js.map} +1 -1
  90. package/dist/{chunk-XPGIWOJO.cjs → chunk-FWBYCTUB.cjs} +18 -18
  91. package/dist/chunk-FWBYCTUB.cjs.map +1 -0
  92. package/dist/{chunk-UXGHFKLA.js → chunk-G5PU2EL2.js} +4 -4
  93. package/dist/{chunk-UXGHFKLA.js.map → chunk-G5PU2EL2.js.map} +1 -1
  94. package/dist/{chunk-UXQSSRBQ.cjs → chunk-GJKRSQEA.cjs} +1781 -581
  95. package/dist/chunk-GJKRSQEA.cjs.map +1 -0
  96. package/dist/{chunk-JSAYTQTJ.cjs → chunk-GJZAGTPV.cjs} +7 -7
  97. package/dist/chunk-GJZAGTPV.cjs.map +1 -0
  98. package/dist/{chunk-BSI4BQEX.cjs → chunk-GU65FGY6.cjs} +4 -4
  99. package/dist/{chunk-BSI4BQEX.cjs.map → chunk-GU65FGY6.cjs.map} +1 -1
  100. package/dist/{chunk-W5F7PYT2.js → chunk-GUUCIG7U.js} +6 -6
  101. package/dist/{chunk-W5F7PYT2.js.map → chunk-GUUCIG7U.js.map} +1 -1
  102. package/dist/{chunk-XZZI3JYK.cjs → chunk-H5VMHDRD.cjs} +6 -6
  103. package/dist/{chunk-XZZI3JYK.cjs.map → chunk-H5VMHDRD.cjs.map} +1 -1
  104. package/dist/{chunk-ZPJW3PP7.cjs → chunk-H7VK36SZ.cjs} +16 -9
  105. package/dist/chunk-H7VK36SZ.cjs.map +1 -0
  106. package/dist/{chunk-2Y7ULSEU.js → chunk-HKGFMJFK.js} +17 -17
  107. package/dist/{chunk-2Y7ULSEU.js.map → chunk-HKGFMJFK.js.map} +1 -1
  108. package/dist/{chunk-THTVYP5V.js → chunk-HMJINNXZ.js} +21 -32
  109. package/dist/chunk-HMJINNXZ.js.map +1 -0
  110. package/dist/{chunk-VV72PGKH.cjs → chunk-HPOURAKV.cjs} +27 -27
  111. package/dist/chunk-HPOURAKV.cjs.map +1 -0
  112. package/dist/{chunk-I2NG2P5K.cjs → chunk-INQ34SVW.cjs} +5 -5
  113. package/dist/{chunk-I2NG2P5K.cjs.map → chunk-INQ34SVW.cjs.map} +1 -1
  114. package/dist/{chunk-D5OX6II7.cjs → chunk-IREOTHD3.cjs} +8 -8
  115. package/dist/chunk-IREOTHD3.cjs.map +1 -0
  116. package/dist/{chunk-GW6P4FJ4.cjs → chunk-ISWZQUVA.cjs} +25 -40
  117. package/dist/chunk-ISWZQUVA.cjs.map +1 -0
  118. package/dist/{chunk-J3X465QT.cjs → chunk-J4LJXCXB.cjs} +9 -9
  119. package/dist/{chunk-J3X465QT.cjs.map → chunk-J4LJXCXB.cjs.map} +1 -1
  120. package/dist/{chunk-PBQMHXVO.js → chunk-JC66FRQX.js} +3 -3
  121. package/dist/{chunk-PBQMHXVO.js.map → chunk-JC66FRQX.js.map} +1 -1
  122. package/dist/{chunk-S5CMLG2E.js → chunk-JHMUMJF3.js} +9 -5
  123. package/dist/chunk-JHMUMJF3.js.map +1 -0
  124. package/dist/{chunk-CUHJDV6K.js → chunk-JR353MN5.js} +6 -6
  125. package/dist/{chunk-CUHJDV6K.js.map → chunk-JR353MN5.js.map} +1 -1
  126. package/dist/{chunk-JS6MRT6M.js → chunk-K2V3IOAX.js} +4 -4
  127. package/dist/{chunk-JS6MRT6M.js.map → chunk-K2V3IOAX.js.map} +1 -1
  128. package/dist/{chunk-VH3G4IUX.js → chunk-K2WT7A64.js} +12 -38
  129. package/dist/chunk-K2WT7A64.js.map +1 -0
  130. package/dist/{chunk-OERNLR2P.js → chunk-KCI4I42U.js} +8 -8
  131. package/dist/{chunk-OERNLR2P.js.map → chunk-KCI4I42U.js.map} +1 -1
  132. package/dist/{chunk-EBJPUXFQ.js → chunk-KEPCKSDE.js} +31 -11
  133. package/dist/chunk-KEPCKSDE.js.map +1 -0
  134. package/dist/{chunk-OF5NULAO.js → chunk-KG7RHDVX.js} +7 -7
  135. package/dist/{chunk-OF5NULAO.js.map → chunk-KG7RHDVX.js.map} +1 -1
  136. package/dist/{chunk-6PIVWNUR.js → chunk-KWZMXX4F.js} +5 -5
  137. package/dist/chunk-KWZMXX4F.js.map +1 -0
  138. package/dist/{chunk-DZZEJY3J.js → chunk-LDYUVGD4.js} +120 -148
  139. package/dist/chunk-LDYUVGD4.js.map +1 -0
  140. package/dist/{chunk-VD52FLHL.js → chunk-LF6I2B7G.js} +9 -9
  141. package/dist/{chunk-VD52FLHL.js.map → chunk-LF6I2B7G.js.map} +1 -1
  142. package/dist/{chunk-3IYM5MAC.js → chunk-LLSWAAFH.js} +4 -4
  143. package/dist/{chunk-3IYM5MAC.js.map → chunk-LLSWAAFH.js.map} +1 -1
  144. package/dist/{chunk-LBGC6EC5.js → chunk-M64WMYYV.js} +15 -15
  145. package/dist/chunk-M64WMYYV.js.map +1 -0
  146. package/dist/{chunk-3Z5PF75J.cjs → chunk-MHAXS4GO.cjs} +17 -19
  147. package/dist/chunk-MHAXS4GO.cjs.map +1 -0
  148. package/dist/{chunk-TKTCN4JE.cjs → chunk-MHEPDHL5.cjs} +9 -9
  149. package/dist/{chunk-TKTCN4JE.cjs.map → chunk-MHEPDHL5.cjs.map} +1 -1
  150. package/dist/{chunk-Z7OUMVR5.cjs → chunk-NFEL5GNX.cjs} +9 -9
  151. package/dist/{chunk-Z7OUMVR5.cjs.map → chunk-NFEL5GNX.cjs.map} +1 -1
  152. package/dist/{chunk-X4I5YARV.cjs → chunk-NG2H3PYA.cjs} +11 -11
  153. package/dist/{chunk-X4I5YARV.cjs.map → chunk-NG2H3PYA.cjs.map} +1 -1
  154. package/dist/{chunk-VO4FG3L2.cjs → chunk-NW36BN7N.cjs} +17 -17
  155. package/dist/{chunk-VO4FG3L2.cjs.map → chunk-NW36BN7N.cjs.map} +1 -1
  156. package/dist/{chunk-RJEZBOSH.js → chunk-NXTDP6AX.js} +12 -14
  157. package/dist/chunk-NXTDP6AX.js.map +1 -0
  158. package/dist/{chunk-N77K3NQY.cjs → chunk-P5LMEANN.cjs} +7 -7
  159. package/dist/{chunk-N77K3NQY.cjs.map → chunk-P5LMEANN.cjs.map} +1 -1
  160. package/dist/{chunk-4HXNBLCJ.js → chunk-P7TSM63O.js} +3 -3
  161. package/dist/{chunk-4HXNBLCJ.js.map → chunk-P7TSM63O.js.map} +1 -1
  162. package/dist/chunk-PG4CZRTU.js +77 -0
  163. package/dist/chunk-PG4CZRTU.js.map +1 -0
  164. package/dist/{chunk-SUT35RHA.cjs → chunk-PHFJBQXU.cjs} +8 -8
  165. package/dist/{chunk-SUT35RHA.cjs.map → chunk-PHFJBQXU.cjs.map} +1 -1
  166. package/dist/{chunk-YJEX32HZ.cjs → chunk-PNM7MPUX.cjs} +8 -8
  167. package/dist/{chunk-YJEX32HZ.cjs.map → chunk-PNM7MPUX.cjs.map} +1 -1
  168. package/dist/{chunk-MEXR5ONE.js → chunk-PU4PBI3H.js} +5 -5
  169. package/dist/{chunk-MEXR5ONE.js.map → chunk-PU4PBI3H.js.map} +1 -1
  170. package/dist/{chunk-2GMDMZKI.cjs → chunk-PYJX2SBC.cjs} +5 -5
  171. package/dist/{chunk-2GMDMZKI.cjs.map → chunk-PYJX2SBC.cjs.map} +1 -1
  172. package/dist/{chunk-U5M4JZBX.js → chunk-PYN75QAG.js} +6 -6
  173. package/dist/chunk-PYN75QAG.js.map +1 -0
  174. package/dist/{chunk-2VAUVJVG.js → chunk-QHXI2QDK.js} +3 -3
  175. package/dist/{chunk-2VAUVJVG.js.map → chunk-QHXI2QDK.js.map} +1 -1
  176. package/dist/{chunk-RRXOSNCX.cjs → chunk-QTOFQB26.cjs} +11 -11
  177. package/dist/{chunk-RRXOSNCX.cjs.map → chunk-QTOFQB26.cjs.map} +1 -1
  178. package/dist/{chunk-DV4K35UC.cjs → chunk-QYZXTIB2.cjs} +4 -4
  179. package/dist/{chunk-DV4K35UC.cjs.map → chunk-QYZXTIB2.cjs.map} +1 -1
  180. package/dist/{chunk-FFF57VHO.cjs → chunk-R3ZS6FU6.cjs} +8 -8
  181. package/dist/{chunk-FFF57VHO.cjs.map → chunk-R3ZS6FU6.cjs.map} +1 -1
  182. package/dist/{chunk-L5JS6P62.cjs → chunk-RAMDISDK.cjs} +14 -10
  183. package/dist/chunk-RAMDISDK.cjs.map +1 -0
  184. package/dist/{chunk-SUWRSJAN.cjs → chunk-RLIBY7XB.cjs} +16 -11
  185. package/dist/chunk-RLIBY7XB.cjs.map +1 -0
  186. package/dist/{chunk-I47WOF6E.js → chunk-RU7JPU7V.js} +3 -3
  187. package/dist/{chunk-I47WOF6E.js.map → chunk-RU7JPU7V.js.map} +1 -1
  188. package/dist/{chunk-HNDDNW52.js → chunk-RXKDRZF3.js} +3 -3
  189. package/dist/{chunk-HNDDNW52.js.map → chunk-RXKDRZF3.js.map} +1 -1
  190. package/dist/{chunk-EFBSEJBD.js → chunk-S4WWBV4N.js} +22 -47
  191. package/dist/chunk-S4WWBV4N.js.map +1 -0
  192. package/dist/{chunk-6J326CN6.js → chunk-SEDUAMDW.js} +4 -4
  193. package/dist/{chunk-6J326CN6.js.map → chunk-SEDUAMDW.js.map} +1 -1
  194. package/dist/{chunk-TSKFGLGQ.cjs → chunk-SKZNSOB7.cjs} +18 -27
  195. package/dist/chunk-SKZNSOB7.cjs.map +1 -0
  196. package/dist/{chunk-YDNEAHVK.cjs → chunk-TNYAYXKC.cjs} +37 -37
  197. package/dist/{chunk-YDNEAHVK.cjs.map → chunk-TNYAYXKC.cjs.map} +1 -1
  198. package/dist/{chunk-JJNXQ7EL.js → chunk-TQDJVPHP.js} +3 -3
  199. package/dist/{chunk-JJNXQ7EL.js.map → chunk-TQDJVPHP.js.map} +1 -1
  200. package/dist/{chunk-MEUELWGO.cjs → chunk-TVWU4XBL.cjs} +8 -8
  201. package/dist/{chunk-MEUELWGO.cjs.map → chunk-TVWU4XBL.cjs.map} +1 -1
  202. package/dist/{chunk-HWP2UGOC.cjs → chunk-U4L75VA4.cjs} +126 -105
  203. package/dist/chunk-U4L75VA4.cjs.map +1 -0
  204. package/dist/{chunk-6DAZ2ZOW.cjs → chunk-U5HW5P7Q.cjs} +11 -11
  205. package/dist/{chunk-6DAZ2ZOW.cjs.map → chunk-U5HW5P7Q.cjs.map} +1 -1
  206. package/dist/{chunk-R4DGCQTA.cjs → chunk-UMS46KF4.cjs} +7 -7
  207. package/dist/{chunk-R4DGCQTA.cjs.map → chunk-UMS46KF4.cjs.map} +1 -1
  208. package/dist/{chunk-75KSHZTV.js → chunk-UT45YVPI.js} +7 -7
  209. package/dist/{chunk-75KSHZTV.js.map → chunk-UT45YVPI.js.map} +1 -1
  210. package/dist/{chunk-LKGHYNLH.js → chunk-UYZQGHFI.js} +10 -10
  211. package/dist/chunk-UYZQGHFI.js.map +1 -0
  212. package/dist/{chunk-IGJEZLHP.cjs → chunk-UZGPFPIV.cjs} +17 -17
  213. package/dist/{chunk-IGJEZLHP.cjs.map → chunk-UZGPFPIV.cjs.map} +1 -1
  214. package/dist/{chunk-Q4HAXT5C.cjs → chunk-VK7DXUGH.cjs} +31 -11
  215. package/dist/chunk-VK7DXUGH.cjs.map +1 -0
  216. package/dist/chunk-VPWNRWNO.cjs +81 -0
  217. package/dist/chunk-VPWNRWNO.cjs.map +1 -0
  218. package/dist/{chunk-K4K4FU3D.cjs → chunk-VREW3BK6.cjs} +11 -11
  219. package/dist/{chunk-K4K4FU3D.cjs.map → chunk-VREW3BK6.cjs.map} +1 -1
  220. package/dist/{chunk-ANACERIO.cjs → chunk-VRQ66IBW.cjs} +6 -6
  221. package/dist/{chunk-ANACERIO.cjs.map → chunk-VRQ66IBW.cjs.map} +1 -1
  222. package/dist/{chunk-HXIU3SIQ.cjs → chunk-VW52NVGM.cjs} +5 -5
  223. package/dist/{chunk-HXIU3SIQ.cjs.map → chunk-VW52NVGM.cjs.map} +1 -1
  224. package/dist/{chunk-5XMWGK3O.cjs → chunk-VXOIOPGZ.cjs} +25 -36
  225. package/dist/chunk-VXOIOPGZ.cjs.map +1 -0
  226. package/dist/{chunk-4RDA4W4N.js → chunk-WAWHHXSR.js} +23 -7
  227. package/dist/chunk-WAWHHXSR.js.map +1 -0
  228. package/dist/{chunk-65MJZYO6.js → chunk-WEXTGWRE.js} +14 -29
  229. package/dist/chunk-WEXTGWRE.js.map +1 -0
  230. package/dist/{chunk-ECDYAZ2R.js → chunk-WHDDBOJN.js} +5 -5
  231. package/dist/{chunk-ECDYAZ2R.js.map → chunk-WHDDBOJN.js.map} +1 -1
  232. package/dist/{chunk-ESRDHDYN.cjs → chunk-WINDLDH3.cjs} +9 -9
  233. package/dist/{chunk-ESRDHDYN.cjs.map → chunk-WINDLDH3.cjs.map} +1 -1
  234. package/dist/{chunk-ADSG24VE.js → chunk-WM7NEOME.js} +6 -6
  235. package/dist/{chunk-ADSG24VE.js.map → chunk-WM7NEOME.js.map} +1 -1
  236. package/dist/{chunk-H4L456EW.js → chunk-XTLNUYCK.js} +12 -5
  237. package/dist/chunk-XTLNUYCK.js.map +1 -0
  238. package/dist/{chunk-QO5C7TIV.js → chunk-ZSB43DEI.js} +5 -5
  239. package/dist/{chunk-QO5C7TIV.js.map → chunk-ZSB43DEI.js.map} +1 -1
  240. package/dist/{chunk-V4ZH2H2P.cjs → chunk-ZUAWNT66.cjs} +14 -14
  241. package/dist/{chunk-V4ZH2H2P.cjs.map → chunk-ZUAWNT66.cjs.map} +1 -1
  242. package/dist/components/Alert/index.cjs +10 -8
  243. package/dist/components/Alert/index.js +9 -7
  244. package/dist/components/AlertDialog/index.cjs +12 -10
  245. package/dist/components/AlertDialog/index.js +10 -8
  246. package/dist/components/AppShell/index.cjs +18 -15
  247. package/dist/components/AppShell/index.js +15 -12
  248. package/dist/components/AutocompleteInput/index.cjs +17 -14
  249. package/dist/components/AutocompleteInput/index.js +13 -10
  250. package/dist/components/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  251. package/dist/components/Breadcrumbs/index.cjs +5 -10
  252. package/dist/components/Breadcrumbs/index.js +2 -7
  253. package/dist/components/Button/Button.d.ts +5 -3
  254. package/dist/components/Button/Button.d.ts.map +1 -1
  255. package/dist/components/Button/index.cjs +9 -7
  256. package/dist/components/Button/index.js +8 -6
  257. package/dist/components/Calendar/index.cjs +10 -8
  258. package/dist/components/Calendar/index.js +9 -7
  259. package/dist/components/CheckboxInput/index.cjs +9 -8
  260. package/dist/components/CheckboxInput/index.js +8 -7
  261. package/dist/components/CodeBlock/index.cjs +10 -8
  262. package/dist/components/CodeBlock/index.js +9 -7
  263. package/dist/components/ContextMenu/index.cjs +14 -12
  264. package/dist/components/ContextMenu/index.js +12 -10
  265. package/dist/components/DateInput/index.cjs +13 -11
  266. package/dist/components/DateInput/index.js +12 -10
  267. package/dist/components/DateRangeInput/index.cjs +13 -11
  268. package/dist/components/DateRangeInput/index.js +12 -10
  269. package/dist/components/DateTimeInput/index.cjs +15 -13
  270. package/dist/components/DateTimeInput/index.js +14 -12
  271. package/dist/components/DropdownMenu/index.cjs +15 -13
  272. package/dist/components/DropdownMenu/index.js +11 -9
  273. package/dist/components/EmptyState/index.cjs +5 -5
  274. package/dist/components/EmptyState/index.js +4 -4
  275. package/dist/components/Field/index.cjs +6 -6
  276. package/dist/components/Field/index.js +4 -4
  277. package/dist/components/FileInput/index.cjs +11 -9
  278. package/dist/components/FileInput/index.js +10 -8
  279. package/dist/components/HoverCard/HoverCard.d.ts +6 -6
  280. package/dist/components/HoverCard/HoverCard.d.ts.map +1 -1
  281. package/dist/components/HoverCard/index.cjs +4 -4
  282. package/dist/components/HoverCard/index.js +2 -2
  283. package/dist/components/InputGroup/index.cjs +9 -9
  284. package/dist/components/InputGroup/index.js +5 -5
  285. package/dist/components/Item/Item.d.ts.map +1 -1
  286. package/dist/components/Item/index.cjs +7 -8
  287. package/dist/components/Item/index.js +6 -7
  288. package/dist/components/Layout/Layout.recipe.d.ts +17 -0
  289. package/dist/components/Layout/Layout.recipe.d.ts.map +1 -1
  290. package/dist/components/Layout/LayoutHeader.d.ts +6 -1
  291. package/dist/components/Layout/LayoutHeader.d.ts.map +1 -1
  292. package/dist/components/Layout/index.cjs +14 -12
  293. package/dist/components/Layout/index.js +9 -7
  294. package/dist/components/Lightbox/index.cjs +11 -9
  295. package/dist/components/Lightbox/index.js +9 -7
  296. package/dist/components/Link/Link.d.ts +4 -5
  297. package/dist/components/Link/Link.d.ts.map +1 -1
  298. package/dist/components/Link/Link.recipe.d.ts.map +1 -1
  299. package/dist/components/Link/index.cjs +9 -6
  300. package/dist/components/Link/index.js +6 -3
  301. package/dist/components/List/index.cjs +9 -10
  302. package/dist/components/List/index.js +7 -8
  303. package/dist/components/MetadataList/MetadataList.recipe.d.ts +9 -1
  304. package/dist/components/MetadataList/MetadataList.recipe.d.ts.map +1 -1
  305. package/dist/components/MetadataList/MetadataListItem.d.ts +6 -1
  306. package/dist/components/MetadataList/MetadataListItem.d.ts.map +1 -1
  307. package/dist/components/MetadataList/index.cjs +9 -6
  308. package/dist/components/MetadataList/index.js +7 -4
  309. package/dist/components/MultiSelect/index.cjs +13 -11
  310. package/dist/components/MultiSelect/index.js +12 -10
  311. package/dist/components/NumberInput/index.cjs +12 -10
  312. package/dist/components/NumberInput/index.js +11 -9
  313. package/dist/components/Pagination/index.cjs +10 -8
  314. package/dist/components/Pagination/index.js +9 -7
  315. package/dist/components/PasswordInput/index.cjs +13 -11
  316. package/dist/components/PasswordInput/index.js +12 -10
  317. package/dist/components/Popover/Popover.d.ts +13 -1
  318. package/dist/components/Popover/Popover.d.ts.map +1 -1
  319. package/dist/components/Popover/index.cjs +11 -9
  320. package/dist/components/Popover/index.js +9 -7
  321. package/dist/components/RadioGroup/index.cjs +10 -9
  322. package/dist/components/RadioGroup/index.js +8 -7
  323. package/dist/components/Schedule/CalendarEvent.d.ts +18 -4
  324. package/dist/components/Schedule/CalendarEvent.d.ts.map +1 -1
  325. package/dist/components/Schedule/DayView.d.ts +7 -1
  326. package/dist/components/Schedule/DayView.d.ts.map +1 -1
  327. package/dist/components/Schedule/ListView.d.ts.map +1 -1
  328. package/dist/components/Schedule/ListView.recipe.d.ts +56 -0
  329. package/dist/components/Schedule/ListView.recipe.d.ts.map +1 -0
  330. package/dist/components/Schedule/MonthlyView.d.ts.map +1 -1
  331. package/dist/components/Schedule/MonthlyView.recipe.d.ts +47 -0
  332. package/dist/components/Schedule/MonthlyView.recipe.d.ts.map +1 -0
  333. package/dist/components/Schedule/ScheduleEvent.recipe.d.ts +17 -0
  334. package/dist/components/Schedule/ScheduleEvent.recipe.d.ts.map +1 -1
  335. package/dist/components/Schedule/TimeGridView.d.ts +7 -1
  336. package/dist/components/Schedule/TimeGridView.d.ts.map +1 -1
  337. package/dist/components/Schedule/TimeGridView.recipe.d.ts +43 -0
  338. package/dist/components/Schedule/TimeGridView.recipe.d.ts.map +1 -0
  339. package/dist/components/Schedule/WeeklyView.d.ts +7 -1
  340. package/dist/components/Schedule/WeeklyView.d.ts.map +1 -1
  341. package/dist/components/Schedule/index.cjs +44 -21
  342. package/dist/components/Schedule/index.d.ts +6 -2
  343. package/dist/components/Schedule/index.d.ts.map +1 -1
  344. package/dist/components/Schedule/index.js +17 -10
  345. package/dist/components/Schedule/plugins/EventMovePlugin.d.ts +23 -0
  346. package/dist/components/Schedule/plugins/EventMovePlugin.d.ts.map +1 -0
  347. package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts +31 -0
  348. package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts.map +1 -0
  349. package/dist/components/Schedule/plugins/EventResizePlugin.d.ts +24 -0
  350. package/dist/components/Schedule/plugins/EventResizePlugin.d.ts.map +1 -0
  351. package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts +39 -0
  352. package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts.map +1 -0
  353. package/dist/components/Schedule/plugins/index.d.ts +4 -0
  354. package/dist/components/Schedule/plugins/index.d.ts.map +1 -1
  355. package/dist/components/Schedule/shared.d.ts +58 -3
  356. package/dist/components/Schedule/shared.d.ts.map +1 -1
  357. package/dist/components/Schedule/types.d.ts +47 -1
  358. package/dist/components/Schedule/types.d.ts.map +1 -1
  359. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.d.ts.map +1 -1
  360. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.recipe.d.ts +4 -0
  361. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.recipe.d.ts.map +1 -0
  362. package/dist/components/SearchFilterInput/index.cjs +32 -29
  363. package/dist/components/SearchFilterInput/index.js +24 -21
  364. package/dist/components/Select/index.cjs +15 -13
  365. package/dist/components/Select/index.js +13 -11
  366. package/dist/components/SideNav/SideNav.d.ts.map +1 -1
  367. package/dist/components/SideNav/SideNav.recipe.d.ts +26 -7
  368. package/dist/components/SideNav/SideNav.recipe.d.ts.map +1 -1
  369. package/dist/components/SideNav/SideNavItem.d.ts.map +1 -1
  370. package/dist/components/SideNav/index.cjs +18 -15
  371. package/dist/components/SideNav/index.js +12 -9
  372. package/dist/components/Slider/index.cjs +6 -6
  373. package/dist/components/Slider/index.js +5 -5
  374. package/dist/components/Spinner/index.cjs +5 -5
  375. package/dist/components/Spinner/index.js +4 -4
  376. package/dist/components/SplitButton/index.cjs +13 -11
  377. package/dist/components/SplitButton/index.js +12 -10
  378. package/dist/components/Stepper/index.cjs +5 -5
  379. package/dist/components/Stepper/index.js +4 -4
  380. package/dist/components/Switch/index.cjs +6 -6
  381. package/dist/components/Switch/index.js +5 -5
  382. package/dist/components/Table/index.cjs +54 -51
  383. package/dist/components/Table/index.js +28 -25
  384. package/dist/components/Tabs/Tab.d.ts.map +1 -1
  385. package/dist/components/Tabs/index.cjs +15 -13
  386. package/dist/components/Tabs/index.js +10 -8
  387. package/dist/components/Tag/Tag.d.ts.map +1 -1
  388. package/dist/components/Tag/index.cjs +8 -5
  389. package/dist/components/Tag/index.js +7 -4
  390. package/dist/components/TagsInput/index.cjs +15 -12
  391. package/dist/components/TagsInput/index.js +14 -11
  392. package/dist/components/Text/Heading.d.ts +5 -5
  393. package/dist/components/Text/Heading.d.ts.map +1 -1
  394. package/dist/components/Text/Text.d.ts +5 -5
  395. package/dist/components/Text/Text.d.ts.map +1 -1
  396. package/dist/components/Text/index.cjs +5 -5
  397. package/dist/components/Text/index.js +3 -3
  398. package/dist/components/TextArea/index.cjs +7 -7
  399. package/dist/components/TextArea/index.js +6 -6
  400. package/dist/components/TextInput/index.cjs +12 -10
  401. package/dist/components/TextInput/index.js +11 -9
  402. package/dist/components/Thumbnail/index.cjs +10 -8
  403. package/dist/components/Thumbnail/index.js +9 -7
  404. package/dist/components/TimeInput/index.cjs +11 -9
  405. package/dist/components/TimeInput/index.js +10 -8
  406. package/dist/components/Toast/index.cjs +12 -10
  407. package/dist/components/Toast/index.js +9 -7
  408. package/dist/components/ToggleButton/ToggleButton.recipe.d.ts.map +1 -1
  409. package/dist/components/ToggleButton/index.cjs +7 -7
  410. package/dist/components/ToggleButton/index.js +5 -5
  411. package/dist/components/Tooltip/Tooltip.d.ts +6 -6
  412. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  413. package/dist/components/Tooltip/index.cjs +4 -4
  414. package/dist/components/Tooltip/index.js +2 -2
  415. package/dist/components/TopNav/TopNavItem.d.ts.map +1 -1
  416. package/dist/components/TopNav/index.cjs +16 -13
  417. package/dist/components/TopNav/index.js +11 -8
  418. package/dist/components/TreeView/TreeViewItem.d.ts.map +1 -1
  419. package/dist/components/TreeView/index.cjs +3 -2
  420. package/dist/components/TreeView/index.js +2 -1
  421. package/dist/index.cjs +233 -214
  422. package/dist/index.cjs.map +1 -1
  423. package/dist/index.d.ts +1 -1
  424. package/dist/index.d.ts.map +1 -1
  425. package/dist/index.js +60 -57
  426. package/dist/index.js.map +1 -1
  427. package/dist/internal/ActionElement.d.ts +45 -0
  428. package/dist/internal/ActionElement.d.ts.map +1 -0
  429. package/dist/internal/HoverLayerTrigger.d.ts +3 -4
  430. package/dist/internal/HoverLayerTrigger.d.ts.map +1 -1
  431. package/dist/internal/useLayer.d.ts +12 -0
  432. package/dist/internal/useLayer.d.ts.map +1 -1
  433. package/dist/internal/useSelectListbox.d.ts +5 -5
  434. package/dist/internal/useSelectListbox.d.ts.map +1 -1
  435. package/dist/styles.css +1 -1
  436. package/package.json +1 -1
  437. package/dist/chunk-2AWSJF22.js.map +0 -1
  438. package/dist/chunk-2RZNX26F.cjs.map +0 -1
  439. package/dist/chunk-3VJIUZAY.cjs.map +0 -1
  440. package/dist/chunk-3Z5PF75J.cjs.map +0 -1
  441. package/dist/chunk-4RDA4W4N.js.map +0 -1
  442. package/dist/chunk-5XMWGK3O.cjs.map +0 -1
  443. package/dist/chunk-65MJZYO6.js.map +0 -1
  444. package/dist/chunk-6EYLEVC6.js.map +0 -1
  445. package/dist/chunk-6PIVWNUR.js.map +0 -1
  446. package/dist/chunk-AEYJ6PWC.js.map +0 -1
  447. package/dist/chunk-BIJ6YDWJ.cjs.map +0 -1
  448. package/dist/chunk-D5OX6II7.cjs.map +0 -1
  449. package/dist/chunk-DZZEJY3J.js.map +0 -1
  450. package/dist/chunk-EBJPUXFQ.js.map +0 -1
  451. package/dist/chunk-EFBSEJBD.js.map +0 -1
  452. package/dist/chunk-F7BFO3SD.cjs.map +0 -1
  453. package/dist/chunk-FCUUGJTM.cjs.map +0 -1
  454. package/dist/chunk-GSTINE4X.js.map +0 -1
  455. package/dist/chunk-GW6P4FJ4.cjs.map +0 -1
  456. package/dist/chunk-H4L456EW.js.map +0 -1
  457. package/dist/chunk-HWP2UGOC.cjs.map +0 -1
  458. package/dist/chunk-J2YKUHQM.js.map +0 -1
  459. package/dist/chunk-JM4Q7ZQH.cjs.map +0 -1
  460. package/dist/chunk-JSAYTQTJ.cjs.map +0 -1
  461. package/dist/chunk-KC4EKXGF.js.map +0 -1
  462. package/dist/chunk-L5JS6P62.cjs.map +0 -1
  463. package/dist/chunk-L5PJCLV6.js.map +0 -1
  464. package/dist/chunk-LBGC6EC5.js.map +0 -1
  465. package/dist/chunk-LKGHYNLH.js.map +0 -1
  466. package/dist/chunk-OUZX7STE.cjs.map +0 -1
  467. package/dist/chunk-Q3HMGFGI.js.map +0 -1
  468. package/dist/chunk-Q4HAXT5C.cjs.map +0 -1
  469. package/dist/chunk-RJEZBOSH.js.map +0 -1
  470. package/dist/chunk-S5CMLG2E.js.map +0 -1
  471. package/dist/chunk-SUWRSJAN.cjs.map +0 -1
  472. package/dist/chunk-THTVYP5V.js.map +0 -1
  473. package/dist/chunk-TSKFGLGQ.cjs.map +0 -1
  474. package/dist/chunk-TTDNCN5G.cjs.map +0 -1
  475. package/dist/chunk-U5M4JZBX.js.map +0 -1
  476. package/dist/chunk-UXQSSRBQ.cjs.map +0 -1
  477. package/dist/chunk-VH3G4IUX.js.map +0 -1
  478. package/dist/chunk-VV72PGKH.cjs.map +0 -1
  479. package/dist/chunk-XPGIWOJO.cjs.map +0 -1
  480. package/dist/chunk-ZPJW3PP7.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Button/Button.tsx"],"names":["useLinkComponent","useButtonGroup","getAriaLabel","isReactNode","useRel","buttonRecipe","jsxs","Fragment","Spinner","Icon","jsx","VisuallyHidden","cx","Tooltip"],"mappings":"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","file":"chunk-5XMWGK3O.cjs","sourcesContent":["/* eslint-disable @eslint-react/static-components -- intentional polymorphism via as prop */\n\nimport type {\n CSSProperties,\n JSX,\n KeyboardEvent,\n MouseEvent,\n MouseEventHandler,\n ReactNode,\n Ref,\n} from 'react';\nimport {buttonRecipe} from 'components/Button/Button.recipe';\nimport type {ButtonSize, ButtonVariant} from 'components/Button/Button.types';\nimport {useButtonGroup} from 'components/ButtonGroup/ButtonGroupContext';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {useLinkComponent} from 'components/Link';\nimport type {LinkComponent} from 'components/Link';\nimport {Spinner} from 'components/Spinner';\nimport {Tooltip} from 'components/Tooltip';\nimport {VisuallyHidden} from 'internal';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {getAriaLabel, useRel} from 'internal/linkAccessibility';\n\nexport type {ButtonSize} from 'components/Button/Button.types';\n\n/**\n * A versatile action element that renders as a `<button>` or a link depending\n * on whether `href` is provided. Supports explicit loading states, icon-only\n * modes, link buttons, and tooltips.\n */\ninterface ButtonBaseProps {\n /**\n * Identifies the element(s) whose contents are controlled by the button.\n */\n 'aria-controls'?: string;\n /**\n * Indicates the current item in a set.\n */\n 'aria-current'?: 'page' | 'step' | 'location' | 'date' | 'time';\n /**\n * Identifies the element(s) that describe the button.\n */\n 'aria-describedby'?: string;\n /**\n * Identifies the element that provides a detailed description.\n */\n 'aria-details'?: string;\n /**\n * Indicates whether a controlled element is expanded or collapsed.\n */\n 'aria-expanded'?: boolean;\n /**\n * Indicates the button opens an interactive popup element.\n */\n 'aria-haspopup'?: boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';\n /**\n * Indicates whether the element is exposed to the accessibility API.\n */\n 'aria-hidden'?: boolean;\n /**\n * Keyboard shortcuts that activate or focus the button.\n */\n 'aria-keyshortcuts'?: string;\n /**\n * Accessible label that overrides the visible `label` for assistive\n * technologies. Use when the visible text is too terse (e.g. a page\n * number) and a longer description is needed.\n */\n 'aria-label'?: string;\n /**\n * Identifies the element(s) that label the button.\n */\n 'aria-labelledby'?: string;\n /**\n * Identifies element(s) owned by the button that are not DOM children.\n */\n 'aria-owns'?: string;\n /**\n * Indicates the current pressed state of a toggle button.\n */\n 'aria-pressed'?: boolean | 'mixed';\n /**\n * Human-readable description of the role of the button.\n */\n 'aria-roledescription'?: string;\n /**\n * Custom link component to render when `href` is set. Falls back to the\n * component provided by `LinkProvider`, or a plain `<a>` tag.\n */\n as?: LinkComponent;\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Content rendered after the label, such as a badge or count. Hidden in\n * icon-only mode.\n */\n endContent?: ReactNode;\n /**\n * HTML `form` attribute associating the button with a `<form>` by ID.\n */\n form?: string;\n /**\n * URL to navigate to. When set and the button is not disabled, the component\n * renders as a link element.\n */\n href?: string;\n /**\n * Whether the button is disabled. Prevents interaction and applies disabled\n * styling.\n */\n isDisabled?: boolean;\n /**\n * Whether the button is in a loading state. Shows a spinner overlay,\n * disables interaction, and announces \"Loading\" to assistive technologies.\n */\n isLoading?: boolean;\n /**\n * Text label for the button. Always required for accessibility even when\n * `isIconOnly` is true.\n */\n label: string;\n /**\n * HTML `name` attribute for form submission.\n */\n name?: string;\n /**\n * Click event handler.\n */\n onClick?: MouseEventHandler<HTMLElement>;\n /**\n * Keyboard event handler for the root element.\n */\n onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Link `rel` attribute (e.g., `\"noopener\"`). Only applies when rendering\n * as a link.\n */\n rel?: string;\n /**\n * Visual size of the button.\n */\n size?: ButtonSize;\n /**\n * Arbitrary content rendered before the label (after the icon, if present).\n * Hidden in icon-only mode.\n */\n startContent?: ReactNode;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n /**\n * Link `target` attribute (e.g., `\"_blank\"`). Only applies when rendering\n * as a link.\n */\n target?: string;\n /**\n * Tooltip text shown on hover. When set on a disabled button,\n * `aria-disabled` is used instead of the `disabled` attribute so the\n * tooltip remains accessible.\n */\n tooltip?: string;\n /**\n * HTML button `type` attribute.\n */\n type?: 'button' | 'submit' | 'reset';\n /**\n * HTML `value` attribute for form submission.\n */\n value?: string;\n /**\n * Visual style variant.\n */\n variant?: ButtonVariant;\n}\n\nexport type ButtonProps =\n | (ButtonBaseProps & {\n /**\n * Icon element rendered before the label. Required in icon-only mode.\n */\n icon: IconComponent;\n /**\n * Visually hides the label, showing only the icon. The `label` prop is\n * still required and used as `aria-label`.\n */\n isIconOnly: true;\n })\n | (ButtonBaseProps & {\n /**\n * Icon element rendered before the label.\n */\n icon?: IconComponent;\n /**\n * Visually hides the label, showing only the icon. The `label` prop is\n * still required and used as `aria-label`.\n */\n isIconOnly?: false;\n });\n\nexport function Button({\n label,\n 'aria-controls': ariaControls,\n 'aria-current': ariaCurrent,\n 'aria-label': ariaLabelProp,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHaspopup,\n 'aria-hidden': ariaHidden,\n 'aria-keyshortcuts': ariaKeyshortcuts,\n 'aria-labelledby': ariaLabelledby,\n 'aria-owns': ariaOwns,\n 'aria-pressed': ariaPressed,\n 'aria-roledescription': ariaRoledescription,\n href,\n as,\n target,\n rel,\n variant,\n size: sizeProp,\n className,\n 'data-testid': dataTestId,\n style,\n type = 'button',\n ref,\n isDisabled = false,\n isLoading = false,\n icon,\n isIconOnly = false,\n endContent,\n startContent,\n tooltip,\n onClick,\n onKeyDown,\n form,\n name,\n value,\n}: ButtonProps): JSX.Element {\n const LinkComponent = useLinkComponent(as);\n const buttonGroup = useButtonGroup();\n const size = sizeProp ?? buttonGroup?.size ?? 'md';\n const buttonDisabled =\n isDisabled || buttonGroup?.isDisabled === true || isLoading;\n const useAriaDisabled = tooltip != null && buttonDisabled;\n const renderAsLink = href != null && !buttonDisabled;\n const opensInNewTab = renderAsLink && target === '_blank';\n const ariaLabel =\n ariaLabelProp ??\n getAriaLabel(\n isIconOnly ||\n isLoading ||\n isReactNode(startContent) ||\n isReactNode(endContent) ||\n opensInNewTab\n ? label\n : undefined,\n opensInNewTab,\n );\n const linkRel = useRel({target, rel});\n const spinnerVariant =\n variant === 'primary' || variant === 'destructive' || variant === 'onSolid'\n ? 'onMedia'\n : 'default';\n\n const classes = buttonRecipe({variant, size, iconOnly: isIconOnly});\n\n const ariaAttrs = {\n 'aria-controls': ariaControls,\n 'aria-current': ariaCurrent,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHaspopup,\n 'aria-hidden': ariaHidden,\n 'aria-keyshortcuts': ariaKeyshortcuts,\n 'aria-labelledby': ariaLabelledby,\n 'aria-owns': ariaOwns,\n 'aria-pressed': ariaPressed,\n 'aria-roledescription': ariaRoledescription,\n };\n\n const handleButtonClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (buttonDisabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n const handleLinkClick = (event: MouseEvent<HTMLAnchorElement>) => {\n onClick?.(event);\n };\n\n const handleButtonKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (useAriaDisabled && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n return;\n }\n\n onKeyDown?.(event);\n };\n\n const handleLinkKeyDown = (event: KeyboardEvent<HTMLAnchorElement>) => {\n onKeyDown?.(event);\n };\n\n const buttonContent = (\n <>\n <span aria-hidden={isLoading || undefined} className={classes.content}>\n {icon != null ? (\n <span aria-hidden=\"true\" className={classes.icon}>\n {isIconOnly && isLoading ? (\n <Spinner size={size} variant={spinnerVariant} />\n ) : (\n <Icon icon={icon} size={size} />\n )}\n </span>\n ) : null}\n {!isIconOnly && isReactNode(startContent) ? (\n <span className={classes.startContent}>{startContent}</span>\n ) : null}\n {!isIconOnly ? <span className={classes.label}>{label}</span> : null}\n {!isIconOnly && isReactNode(endContent) ? (\n <span className={classes.endContent}>{endContent}</span>\n ) : null}\n {!isIconOnly && isLoading ? (\n <span aria-hidden=\"true\" className={classes.loadingIndicator}>\n <Spinner size={size} variant={spinnerVariant} />\n </span>\n ) : null}\n </span>\n <VisuallyHidden aria-live=\"polite\" role=\"status\">\n {isLoading ? 'Loading' : ''}\n </VisuallyHidden>\n </>\n );\n\n const rootClassName = cx(classes.root, className);\n\n const element = renderAsLink ? (\n <LinkComponent\n {...ariaAttrs}\n aria-label={ariaLabel}\n className={rootClassName}\n data-testid={dataTestId}\n href={href}\n onClick={handleLinkClick}\n onKeyDown={handleLinkKeyDown}\n ref={ref as Ref<HTMLAnchorElement>}\n rel={linkRel}\n style={style}\n target={target}\n to={LinkComponent === 'a' ? undefined : href}>\n {buttonContent}\n </LinkComponent>\n ) : (\n <button\n {...ariaAttrs}\n aria-busy={isLoading || undefined}\n aria-disabled={useAriaDisabled || undefined}\n aria-label={ariaLabel}\n className={rootClassName}\n data-testid={dataTestId}\n disabled={useAriaDisabled ? undefined : buttonDisabled}\n form={form}\n name={name}\n onClick={handleButtonClick}\n onKeyDown={handleButtonKeyDown}\n ref={ref as Ref<HTMLButtonElement>}\n style={style}\n type={type}\n value={value}>\n {buttonContent}\n </button>\n );\n\n if (tooltip != null) {\n return <Tooltip content={tooltip}>{element}</Tooltip>;\n }\n\n return element;\n}\n\nButton.displayName = 'Button';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/TopNav/TopNav.recipe.ts","../src/components/TopNav/TopNavContext.ts","../src/components/TopNav/TopNav.tsx","../src/components/TopNav/TopNavHeading.recipe.ts","../src/components/TopNav/TopNavHeading.tsx","../src/components/TopNav/TopNavItem.recipe.ts","../src/components/TopNav/TopNavItem.tsx"],"names":["classes","jsxs","jsx"],"mappings":"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","file":"chunk-65MJZYO6.js","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const topNavRecipe = sva({\n slots: [\n 'root',\n 'leftSection',\n 'heading',\n 'startContent',\n 'centerContent',\n 'rightSection',\n 'endContent',\n 'mobileEnd',\n 'drawerItems',\n 'drawerDivider',\n ],\n base: {\n root: {\n alignItems: 'center',\n w: '100%',\n p: '2',\n },\n leftSection: {\n display: 'flex',\n alignItems: 'center',\n gap: '4',\n flex: '1 1 0%',\n minW: 0,\n },\n heading: {\n display: 'flex',\n alignItems: 'center',\n flexShrink: 0,\n },\n startContent: {\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n },\n centerContent: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '1',\n },\n rightSection: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: '1',\n },\n endContent: {\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n flexShrink: 0,\n ms: 'auto',\n },\n mobileEnd: {\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n ms: 'auto',\n },\n drawerItems: {\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5',\n },\n drawerDivider: {\n my: '2',\n },\n },\n variants: {\n layout: {\n flex: {\n root: {display: 'flex'},\n },\n grid: {\n root: {display: 'grid', gridTemplateColumns: '1fr auto 1fr'},\n },\n mobile: {\n root: {display: 'flex'},\n },\n },\n },\n defaultVariants: {\n layout: 'flex',\n },\n});\n\nexport type TopNavVariants = RecipeVariantProps<typeof topNavRecipe>;\n","import {createContext, use, type ReactNode} from 'react';\n\nexport type TopNavRenderMode = 'default' | 'mobile-bar' | 'drawer';\n\nexport const TopNavRenderContext = createContext<TopNavRenderMode>('default');\nTopNavRenderContext.displayName = 'TopNavRenderContext';\nexport const TopNavMobileContentContext = createContext<ReactNode>(null);\nTopNavMobileContentContext.displayName = 'TopNavMobileContentContext';\n\nexport function useTopNavRenderMode(): TopNavRenderMode {\n return use(TopNavRenderContext);\n}\n\nexport function useTopNavMobileContent(): ReactNode {\n return use(TopNavMobileContentContext);\n}\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useAppShellMobile} from 'components/AppShell/AppShellMobileContext';\nimport {Divider} from 'components/Divider';\nimport {topNavRecipe} from 'components/TopNav/TopNav.recipe';\nimport {\n useTopNavMobileContent,\n useTopNavRenderMode,\n} from 'components/TopNav/TopNavContext';\nimport {MobileNav, MobileNavToggle} from 'internal/MobileNav';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\nexport interface TopNavProps {\n /**\n * Content rendered in the center section of the navigation bar.\n */\n centerContent?: ReactNode;\n /**\n * Shorthand for `startContent`. Rendered in the start section when\n * `startContent` is not provided.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the nav element.\n */\n className?: string;\n /**\n * Test ID applied to the nav element.\n */\n 'data-testid'?: string;\n /**\n * Content rendered in the end (right) section of the navigation bar.\n */\n endContent?: ReactNode;\n /**\n * Branding or title content rendered at the start of the bar.\n */\n heading?: ReactNode;\n /**\n * Accessible label for the navigation landmark.\n * @default 'Top navigation'\n */\n label?: string;\n /**\n * Ref forwarded to the nav element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Content rendered in the start (left) section after the heading.\n */\n startContent?: ReactNode;\n /**\n * Inline styles applied to the nav element.\n */\n style?: CSSProperties;\n}\n\n/**\n * Horizontal top navigation bar with heading, start, center, and end\n * content slots. Adapts to mobile layouts when rendered inside AppShell.\n */\nexport function TopNav({\n centerContent,\n children,\n className,\n 'data-testid': dataTestId,\n endContent,\n heading,\n label = 'Top navigation',\n ref,\n startContent,\n style,\n}: TopNavProps): React.JSX.Element | null {\n const renderMode = useTopNavRenderMode();\n const mobileContent = useTopNavMobileContent();\n const {hasAutoToggle} = useAppShellMobile();\n const resolvedStartContent = startContent ?? children;\n\n if (process.env.NODE_ENV !== 'production') {\n if (isReactNode(startContent) && isReactNode(children)) {\n console.warn(\n 'TopNav: both `startContent` and `children` were provided. ' +\n '`startContent` takes precedence and `children` is ignored. ' +\n 'Provide only one.',\n );\n }\n }\n\n const hasCenterContent = isReactNode(centerContent);\n const hasCollapsibleContent =\n isReactNode(resolvedStartContent) || isReactNode(centerContent);\n const hasMobileDrawerContent =\n hasCollapsibleContent || isReactNode(mobileContent);\n\n if (renderMode === 'mobile-bar') {\n const classes = topNavRecipe({layout: 'mobile'});\n return (\n <nav\n aria-label={label}\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n {isReactNode(heading) ? (\n <div className={classes.heading}>{heading}</div>\n ) : null}\n <div className={classes.mobileEnd}>\n {endContent}\n {hasMobileDrawerContent && hasAutoToggle ? <MobileNavToggle /> : null}\n </div>\n </nav>\n );\n }\n\n if (renderMode === 'drawer') {\n if (!hasCollapsibleContent && !isReactNode(mobileContent)) {\n return null;\n }\n\n const classes = topNavRecipe();\n return (\n <MobileNav header={heading}>\n {hasCollapsibleContent ? (\n <div className={classes.drawerItems}>\n {resolvedStartContent}\n {centerContent}\n </div>\n ) : null}\n {hasCollapsibleContent && isReactNode(mobileContent) ? (\n <div className={classes.drawerDivider}>\n <Divider />\n </div>\n ) : null}\n {mobileContent}\n </MobileNav>\n );\n }\n\n const classes = topNavRecipe({layout: hasCenterContent ? 'grid' : 'flex'});\n return (\n <nav\n aria-label={label}\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n <div className={classes.leftSection}>\n {isReactNode(heading) ? (\n <div className={classes.heading}>{heading}</div>\n ) : null}\n {isReactNode(resolvedStartContent) ? (\n <div className={classes.startContent}>{resolvedStartContent}</div>\n ) : null}\n </div>\n {hasCenterContent ? (\n <div className={classes.centerContent}>{centerContent}</div>\n ) : null}\n {hasCenterContent ? (\n <div className={classes.rightSection}>{endContent}</div>\n ) : isReactNode(endContent) ? (\n <div className={classes.endContent}>{endContent}</div>\n ) : null}\n </nav>\n );\n}\n\nTopNav.displayName = 'TopNav';\n","import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const topNavHeadingRecipe = sva({\n slots: ['root', 'logo', 'text', 'endContent'],\n base: {\n root: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n minH: '8',\n px: '2',\n color: 'fg',\n textDecoration: 'none',\n },\n logo: {\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n },\n text: {\n display: 'flex',\n flexDirection: 'column',\n minW: 0,\n },\n endContent: {\n ms: 'auto',\n flexShrink: 0,\n },\n },\n});\n\nexport type TopNavHeadingVariants = RecipeVariantProps<\n typeof topNavHeadingRecipe\n>;\n","/* eslint-disable @eslint-react/static-components -- intentional polymorphism via as prop */\n\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useLinkComponent} from 'components/Link';\nimport type {LinkComponent} from 'components/Link';\nimport {Text} from 'components/Text';\nimport {topNavHeadingRecipe} from 'components/TopNav/TopNavHeading.recipe';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\nexport interface TopNavHeadingProps {\n /**\n * Accessible label for the heading link. Use when `heading` text is absent\n * (e.g., logo-only headings) to ensure the link has an accessible name.\n */\n 'aria-label'?: string;\n as?: LinkComponent;\n className?: string;\n 'data-testid'?: string;\n headerEndContent?: ReactNode;\n heading?: string;\n headingHref?: string;\n href?: string;\n logo?: ReactNode;\n ref?: Ref<HTMLElement>;\n style?: CSSProperties;\n subheading?: string;\n superheading?: string;\n}\n\nexport function TopNavHeading({\n 'aria-label': ariaLabel,\n as,\n className,\n 'data-testid': dataTestId,\n headerEndContent,\n heading,\n headingHref,\n href,\n logo,\n ref,\n style,\n subheading,\n superheading,\n}: TopNavHeadingProps): React.JSX.Element {\n const LinkComponent = useLinkComponent(as);\n const resolvedHref = headingHref ?? href;\n const Element = resolvedHref != null ? LinkComponent : 'div';\n const classes = topNavHeadingRecipe();\n\n return (\n <Element\n aria-label={ariaLabel}\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n href={resolvedHref}\n ref={ref as Ref<HTMLAnchorElement & HTMLDivElement>}\n style={style}\n to={Element === 'a' ? undefined : resolvedHref}>\n {isReactNode(logo) ? <span className={classes.logo}>{logo}</span> : null}\n <span className={classes.text}>\n {superheading != null ? (\n <Text color=\"secondary\" type=\"supporting\">\n {superheading}\n </Text>\n ) : null}\n {heading != null ? (\n <Text type=\"large\" weight=\"semibold\">\n {heading}\n </Text>\n ) : null}\n {subheading != null ? (\n <Text color=\"secondary\" type=\"supporting\">\n {subheading}\n </Text>\n ) : null}\n </span>\n {isReactNode(headerEndContent) ? (\n <span className={classes.endContent}>{headerEndContent}</span>\n ) : null}\n </Element>\n );\n}\n\nTopNavHeading.displayName = 'TopNavHeading';\n","import {cva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const topNavItemRecipe = cva({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '2',\n minH: '8',\n px: '3',\n py: '1.5',\n borderRadius: 'md',\n color: 'fg.muted',\n textDecoration: 'none',\n fontFamily: 'body',\n fontSize: 'md',\n fontWeight: 'medium',\n cursor: 'pointer',\n _hover: {bg: 'bg.hover'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n variants: {\n isSelected: {\n true: {\n bg: 'bg.hover',\n color: 'fg',\n fontWeight: 'semibold',\n },\n false: {},\n },\n isDisabled: {\n true: {\n opacity: 0.5,\n cursor: 'not-allowed',\n pointerEvents: 'none',\n },\n false: {},\n },\n isIconOnly: {\n true: {\n px: '2',\n aspectRatio: 'square',\n },\n false: {},\n },\n isDrawer: {\n true: {\n display: 'flex',\n w: '100%',\n },\n false: {},\n },\n },\n defaultVariants: {\n isSelected: false,\n isDisabled: false,\n isIconOnly: false,\n isDrawer: false,\n },\n});\n\nexport type TopNavItemVariants = RecipeVariantProps<typeof topNavItemRecipe>;\n","/* eslint-disable @eslint-react/static-components -- intentional polymorphism via as prop */\n\nimport type {CSSProperties, MouseEventHandler, ReactNode, Ref} from 'react';\nimport {useAppShellMobile} from 'components/AppShell/AppShellMobileContext';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {useLinkComponent} from 'components/Link';\nimport type {LinkComponent} from 'components/Link';\nimport {Text} from 'components/Text';\nimport {useTopNavRenderMode} from 'components/TopNav/TopNavContext';\nimport {topNavItemRecipe} from 'components/TopNav/TopNavItem.recipe';\nimport {VisuallyHidden} from 'internal';\nimport {cx} from 'internal/cx';\nimport {getAriaLabel, useRel} from 'internal/linkAccessibility';\n\nexport interface TopNavItemProps {\n /**\n * Custom link component used for routing.\n */\n as?: LinkComponent;\n /**\n * Custom label content. Falls back to the `label` prop text.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the item.\n */\n className?: string;\n /**\n * Test ID applied to the item.\n */\n 'data-testid'?: string;\n /**\n * Link destination. When set, the item renders as a link. When omitted,\n * the item renders as a button driven by `onClick`.\n */\n href?: string;\n /**\n * Icon rendered before the label.\n */\n icon?: IconComponent;\n /**\n * Whether the item is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether only the icon is visible (label used for accessibility).\n * @default false\n */\n isIconOnly?: boolean;\n /**\n * Whether the item is currently selected.\n * @default false\n */\n isSelected?: boolean;\n /**\n * Accessible item label, also used as visible text when children are omitted.\n */\n label: string;\n /**\n * Click handler called when the item is clicked.\n */\n onClick?: MouseEventHandler<HTMLElement>;\n /**\n * Ref forwarded to the anchor or button element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * The `rel` attribute for the anchor element. `noopener noreferrer` are\n * added automatically for `target=\"_blank\"`. Ignored when rendering as a\n * button (no `href`).\n */\n rel?: string;\n /**\n * Inline styles applied to the item.\n */\n style?: CSSProperties;\n /**\n * The `target` attribute for the anchor element. Ignored when rendering as\n * a button (no `href`).\n */\n target?: string;\n}\n\n/**\n * A single navigation item inside a TopNav. Renders as a link when `href`\n * is provided, or a button driven by `onClick` otherwise. Supports icons,\n * selected state, and adapts to drawer layout on mobile.\n */\nexport function TopNavItem({\n as,\n children,\n className,\n 'data-testid': dataTestId,\n href,\n icon,\n isDisabled = false,\n isIconOnly = false,\n isSelected = false,\n label,\n onClick,\n ref,\n rel,\n style,\n target,\n}: TopNavItemProps): React.JSX.Element {\n const LinkComponent = useLinkComponent(as);\n const renderMode = useTopNavRenderMode();\n const {closeMobileNav} = useAppShellMobile();\n const isDrawer = renderMode === 'drawer';\n const opensInNewTab = target === '_blank';\n const linkRel = useRel({target, rel});\n const labelContent = children ?? (\n <Text color=\"inherit\" size=\"md\" type=\"body\" weight=\"inherit\">\n {label}\n </Text>\n );\n\n const handleClick: MouseEventHandler<HTMLElement> = event => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n\n if (isDrawer) {\n closeMobileNav();\n }\n };\n\n const className_ = cx(\n topNavItemRecipe({isSelected, isDisabled, isIconOnly, isDrawer}),\n className,\n );\n\n const content = (\n <>\n {icon != null ? (\n <Icon aria-hidden=\"true\" color=\"inherit\" icon={icon} size=\"md\" />\n ) : null}\n {!isIconOnly ? labelContent : null}\n </>\n );\n\n if (href == null) {\n return (\n <button\n aria-current={isSelected ? 'page' : undefined}\n aria-label={isIconOnly ? label : undefined}\n className={className_}\n data-testid={dataTestId}\n disabled={isDisabled}\n onClick={handleClick}\n ref={ref as Ref<HTMLButtonElement>}\n style={style}\n type=\"button\">\n {content}\n </button>\n );\n }\n\n return (\n <LinkComponent\n aria-current={isSelected ? 'page' : undefined}\n aria-disabled={isDisabled || undefined}\n aria-label={isIconOnly ? getAriaLabel(label, opensInNewTab) : undefined}\n className={className_}\n data-testid={dataTestId}\n href={href}\n onClick={handleClick}\n ref={ref as Ref<HTMLAnchorElement>}\n rel={linkRel}\n style={style}\n tabIndex={isDisabled ? -1 : undefined}\n target={target}\n to={LinkComponent === 'a' ? undefined : href}>\n {content}\n {opensInNewTab && !isIconOnly ? (\n <>\n {' '}\n <VisuallyHidden>(opens in new tab)</VisuallyHidden>\n </>\n ) : null}\n </LinkComponent>\n );\n}\n\nTopNavItem.displayName = 'TopNavItem';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Layout/Layout.recipe.ts","../src/components/Layout/LayoutContext.ts","../src/components/Layout/Layout.tsx","../src/components/Layout/LayoutContent.tsx","../src/components/Layout/LayoutFooter.tsx","../src/components/Layout/LayoutHeader.tsx","../src/components/Layout/LayoutPanel.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"chunk-6EYLEVC6.js","sourcesContent":["import {cva, sva, type RecipeVariantProps} from 'styled-system/css';\n\nconst paddingVariants = {\n 0: {p: '0'},\n 0.5: {p: '0.5'},\n 1: {p: '1'},\n 1.5: {p: '1.5'},\n 2: {p: '2'},\n 3: {p: '3'},\n 4: {p: '4'},\n 5: {p: '5'},\n 6: {p: '6'},\n 8: {p: '8'},\n 10: {p: '10'},\n};\n\n// Same padding scale as `paddingVariants`, scoped to the `root` slot so it can\n// be used as an `sva` variant on the Layout shell.\nconst rootPaddingVariants = {\n 0: {root: {p: '0'}},\n 0.5: {root: {p: '0.5'}},\n 1: {root: {p: '1'}},\n 1.5: {root: {p: '1.5'}},\n 2: {root: {p: '2'}},\n 3: {root: {p: '3'}},\n 4: {root: {p: '4'}},\n 5: {root: {p: '5'}},\n 6: {root: {p: '6'}},\n 8: {root: {p: '8'}},\n 10: {root: {p: '10'}},\n};\n\nexport const layoutRecipe = sva({\n slots: ['root', 'middle', 'content'],\n base: {\n root: {\n display: 'flex',\n flexDirection: 'column',\n minW: 0,\n },\n middle: {\n display: 'flex',\n flex: 1,\n minH: 0,\n minW: 0,\n },\n content: {\n flex: 1,\n minW: 0,\n display: 'flex',\n flexDirection: 'column',\n },\n },\n variants: {\n height: {\n fill: {\n root: {h: '100%', minH: 0},\n },\n auto: {\n root: {minH: '100%'},\n },\n },\n padding: rootPaddingVariants,\n },\n defaultVariants: {\n height: 'fill',\n },\n});\n\nexport const layoutPanelRecipe = cva({\n base: {\n flexShrink: 0,\n overflow: 'clip',\n },\n variants: {\n isScrollable: {\n true: {overflow: 'auto'},\n },\n divider: {\n none: {},\n // Border on the edge adjacent to the content area: inline-end for a start\n // panel, inline-start for an end panel.\n start: {\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n },\n end: {\n borderInlineStartWidth: 'default',\n borderInlineStartStyle: 'solid',\n borderInlineStartColor: 'border',\n },\n },\n },\n defaultVariants: {\n isScrollable: true,\n divider: 'none',\n },\n});\n\nexport const layoutContentRecipe = cva({\n base: {\n flex: 1,\n minH: 0,\n minW: 0,\n overflow: 'clip',\n },\n variants: {\n isScrollable: {\n true: {overflow: 'auto'},\n },\n },\n defaultVariants: {\n isScrollable: true,\n },\n});\n\nexport const layoutHeaderRecipe = sva({\n slots: ['root', 'inner', 'titleArea', 'actions', 'closeButton'],\n base: {\n root: {\n flexShrink: 0,\n },\n inner: {\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: '3',\n },\n titleArea: {\n flex: 1,\n minW: 0,\n '& > :focus': {\n outline: 'none',\n },\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n flexShrink: 0,\n },\n closeButton: {\n marginInlineEnd: '-2',\n marginBlockStart: '-2',\n },\n },\n variants: {\n hasDivider: {\n true: {\n root: {\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n },\n },\n },\n },\n defaultVariants: {\n hasDivider: false,\n },\n});\n\nexport const layoutFooterRecipe = sva({\n slots: ['root', 'inner', 'start', 'actions'],\n base: {\n root: {\n flexShrink: 0,\n },\n start: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n flex: 1,\n minW: 0,\n marginInlineEnd: 'auto',\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n flexShrink: 0,\n },\n },\n variants: {\n hasDivider: {\n true: {\n root: {\n borderBlockStartWidth: 'default',\n borderBlockStartStyle: 'solid',\n borderBlockStartColor: 'border',\n },\n },\n },\n // Custom footers render arbitrary children, so the inner element drops the\n // action-row flex layout.\n isCustom: {\n false: {\n inner: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: '3',\n },\n },\n true: {},\n },\n },\n defaultVariants: {\n hasDivider: false,\n isCustom: false,\n },\n});\n\nexport const layoutRegionRecipe = cva({\n variants: {\n padding: paddingVariants,\n },\n defaultVariants: {\n padding: 4,\n },\n});\n\nexport type LayoutVariants = RecipeVariantProps<typeof layoutRecipe>;\nexport type LayoutRegionVariants = RecipeVariantProps<\n typeof layoutRegionRecipe\n>;\n","import {createContext, use} from 'react';\n\nexport type LayoutArea = 'header' | 'content' | 'start' | 'end' | 'footer';\n\nexport interface LayoutDividerContextValue {\n hasDividers: boolean;\n}\n\nexport const LayoutAreaContext = createContext<LayoutArea>('content');\nLayoutAreaContext.displayName = 'LayoutAreaContext';\nexport const LayoutDividerContext =\n createContext<LayoutDividerContextValue | null>(null);\nLayoutDividerContext.displayName = 'LayoutDividerContext';\n\nexport function useLayoutArea(): LayoutArea {\n return use(LayoutAreaContext);\n}\n\nexport function useLayoutDivider(): LayoutDividerContextValue | null {\n return use(LayoutDividerContext);\n}\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useMemo} from 'react';\nimport {layoutRecipe} from 'components/Layout/Layout.recipe';\nimport {\n LayoutAreaContext,\n LayoutDividerContext,\n type LayoutArea,\n} from 'components/Layout/LayoutContext';\nimport type {LayoutHeight} from 'components/Layout/types';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\n/**\n * Shell with header, side panels, content, and footer slots.\n */\nexport interface LayoutProps {\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Main content slot.\n */\n content?: ReactNode;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * End panel slot.\n */\n end?: ReactNode;\n /**\n * Footer slot.\n */\n footer?: ReactNode;\n /**\n * Whether child layout regions should show dividers.\n */\n hasDividers?: boolean;\n /**\n * Header slot.\n */\n header?: ReactNode;\n /**\n * Layout height behavior. Default is `fill`.\n */\n height?: LayoutHeight;\n /**\n * Outer padding for layout edges.\n */\n padding?: SpacingToken;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Start panel slot.\n */\n start?: ReactNode;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n}\n\nfunction AreaProvider({\n area,\n children,\n}: {\n area: LayoutArea;\n children?: ReactNode;\n}): React.JSX.Element | null {\n if (!isReactNode(children)) {\n return null;\n }\n\n return <LayoutAreaContext value={area}>{children}</LayoutAreaContext>;\n}\n\nexport function Layout({\n className,\n content,\n 'data-testid': dataTestId,\n hasDividers = true,\n end,\n footer,\n header,\n height = 'fill',\n padding,\n ref,\n start,\n style,\n}: LayoutProps): React.JSX.Element {\n const dividerValue = useMemo(() => ({hasDividers}), [hasDividers]);\n const classes = layoutRecipe({height, padding});\n\n return (\n <LayoutDividerContext value={dividerValue}>\n <div\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n <AreaProvider area=\"header\">{header}</AreaProvider>\n <div className={classes.middle}>\n <AreaProvider area=\"start\">{start}</AreaProvider>\n <div className={classes.content}>\n <AreaProvider area=\"content\">{content}</AreaProvider>\n </div>\n <AreaProvider area=\"end\">{end}</AreaProvider>\n </div>\n <AreaProvider area=\"footer\">{footer}</AreaProvider>\n </div>\n </LayoutDividerContext>\n );\n}\n\nLayout.displayName = 'Layout';\n","import type {ComponentPropsWithRef, ElementType} from 'react';\nimport {\n layoutContentRecipe,\n layoutRegionRecipe,\n} from 'components/Layout/Layout.recipe';\nimport {cx} from 'internal/cx';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\n/**\n * Scrollable main content area within a Layout. Fills the remaining space\n * between panels and stretches to fill the available height.\n */\nexport interface LayoutContentProps extends ComponentPropsWithRef<'div'> {\n /**\n * HTML element to render. Default is `div`.\n */\n as?: ElementType;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Whether the content area scrolls when it overflows.\n */\n isScrollable?: boolean;\n /**\n * Accessible label. Automatically sets role=\"region\" when provided.\n */\n label?: string;\n /**\n * Inner padding.\n */\n padding?: SpacingToken;\n}\n\n/**\n * Scrollable main content area within a Layout. Fills the remaining space\n * between panels and stretches to fill the available height.\n */\nexport function LayoutContent({\n as: Element = 'div',\n children,\n className,\n 'data-testid': dataTestId,\n isScrollable = true,\n label,\n padding = 4,\n ref,\n role,\n style,\n ...rest\n}: LayoutContentProps): React.JSX.Element {\n return (\n <Element\n {...rest}\n aria-label={label}\n className={cx(\n layoutContentRecipe({isScrollable}),\n layoutRegionRecipe({padding}),\n className,\n )}\n data-testid={dataTestId}\n ref={ref}\n role={role ?? (label != null ? 'region' : undefined)}\n style={style}>\n {children}\n </Element>\n );\n}\n\nLayoutContent.displayName = 'LayoutContent';\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {\n layoutFooterRecipe,\n layoutRegionRecipe,\n} from 'components/Layout/Layout.recipe';\nimport {useLayoutDivider} from 'components/Layout/LayoutContext';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\ninterface LayoutFooterBaseProps {\n /**\n * Additional CSS class names applied to the footer.\n */\n className?: string;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Fixed height for the footer.\n */\n height?: number | string;\n /**\n * Accessible label for the footer landmark.\n */\n label?: string;\n /**\n * Inner padding.\n */\n padding?: SpacingToken;\n /**\n * Ref forwarded to the footer element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Inline styles applied to the footer.\n */\n style?: CSSProperties;\n}\n\ninterface LayoutFooterCustomProps extends LayoutFooterBaseProps {\n /**\n * Custom footer content rendered inside the footer shell.\n */\n children: ReactNode;\n primaryButton?: never;\n secondaryButton?: never;\n startContent?: never;\n}\n\ninterface LayoutFooterActionsProps extends LayoutFooterBaseProps {\n children?: never;\n /**\n * Primary action button, rendered rightmost.\n */\n primaryButton?: ReactNode;\n /**\n * Secondary action button, rendered left of the primary button.\n */\n secondaryButton?: ReactNode;\n /**\n * Content rendered at the start (left) of the footer.\n */\n startContent?: ReactNode;\n}\n\n/**\n * Footer landmark region within a Layout. Use action slots for the standard\n * footer layout, or children for a custom footer inside the same shell.\n */\nexport type LayoutFooterProps =\n | LayoutFooterActionsProps\n | LayoutFooterCustomProps;\n\n/**\n * Footer landmark region within a Layout.\n */\nexport function LayoutFooter({\n children,\n className,\n 'data-testid': dataTestId,\n height,\n label,\n padding = 4,\n primaryButton,\n ref,\n secondaryButton,\n startContent,\n style,\n}: LayoutFooterProps): React.JSX.Element {\n const dividerContext = useLayoutDivider();\n const hasDivider = dividerContext?.hasDividers ?? false;\n const rootStyle: CSSProperties = {height, ...style};\n const isCustom = isReactNode(children);\n const hasActions = isReactNode(primaryButton) || isReactNode(secondaryButton);\n const classes = layoutFooterRecipe({hasDivider, isCustom});\n\n return (\n <footer\n aria-label={label}\n className={cx(classes.root, className)}\n data-divider={hasDivider || undefined}\n data-testid={dataTestId}\n ref={ref}\n style={rootStyle}>\n <div className={cx(classes.inner, layoutRegionRecipe({padding}))}>\n {isCustom ? (\n children\n ) : (\n <>\n {isReactNode(startContent) ? (\n <div className={classes.start}>{startContent}</div>\n ) : null}\n {hasActions ? (\n <div className={classes.actions}>\n {secondaryButton}\n {primaryButton}\n </div>\n ) : null}\n </>\n )}\n </div>\n </footer>\n );\n}\n\nLayoutFooter.displayName = 'LayoutFooter';\n","import {X} from 'lucide-react';\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {Button} from 'components/Button';\nimport {useDialogContext} from 'components/Dialog/DialogContext';\nimport {\n layoutHeaderRecipe,\n layoutRegionRecipe,\n} from 'components/Layout/Layout.recipe';\nimport {useLayoutDivider} from 'components/Layout/LayoutContext';\nimport {Heading, Text} from 'components/Text';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\n/**\n * Header landmark region within a Layout with a structured title,\n * optional subtitle, and start/end content slots.\n *\n * When rendered inside a Dialog, a close button is automatically\n * appended after `endContent`. The button calls `onOpenChange(false)`\n * on the parent Dialog and the title receives initial focus.\n */\nexport interface LayoutHeaderProps {\n /**\n * Additional CSS class names applied to the header.\n */\n className?: string;\n /**\n * Test ID applied to the header.\n */\n 'data-testid'?: string;\n /**\n * Content rendered after the title area.\n */\n endContent?: ReactNode;\n /**\n * Fixed height for the header.\n */\n height?: number | string;\n /**\n * Accessible label for the header landmark.\n */\n label?: string;\n /**\n * Inner padding.\n */\n padding?: SpacingToken;\n /**\n * Ref forwarded to the header element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Content rendered before the title area.\n */\n startContent?: ReactNode;\n /**\n * Inline styles applied to the header.\n */\n style?: CSSProperties;\n /**\n * Supporting text displayed below the title.\n */\n subtitle?: string;\n /**\n * Primary header title.\n */\n title: string;\n}\n\n/**\n * Header landmark region within a Layout with a structured title,\n * optional subtitle, and start/end content slots.\n *\n * When rendered inside a Dialog, a close button is automatically\n * appended after `endContent`. The button calls `onOpenChange(false)`\n * on the parent Dialog and the title receives initial focus.\n */\nexport function LayoutHeader({\n className,\n 'data-testid': dataTestId,\n endContent,\n height,\n label,\n padding = 4,\n ref,\n startContent,\n style,\n subtitle,\n title,\n}: LayoutHeaderProps): React.JSX.Element {\n const dividerContext = useLayoutDivider();\n const dialogContext = useDialogContext();\n const hasDivider = dividerContext?.hasDividers ?? false;\n const rootStyle: CSSProperties = {height, ...style};\n const classes = layoutHeaderRecipe({hasDivider});\n\n const closeButton =\n dialogContext != null ? (\n <Button\n className={classes.closeButton}\n icon={X}\n isIconOnly\n label=\"Close\"\n onClick={() => dialogContext.onOpenChange(false)}\n variant=\"ghost\"\n />\n ) : null;\n const hasEnd = isReactNode(endContent) || closeButton != null;\n\n return (\n <header\n aria-label={label}\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={rootStyle}>\n <div className={cx(classes.inner, layoutRegionRecipe({padding}))}>\n {isReactNode(startContent) ? (\n <div className={classes.actions}>{startContent}</div>\n ) : null}\n <div className={classes.titleArea}>\n <Heading\n data-dialog-autofocus={dialogContext != null ? 'true' : undefined}\n id={dialogContext?.titleId}\n level={4}\n tabIndex={dialogContext != null ? -1 : undefined}>\n {title}\n </Heading>\n {subtitle != null ? (\n <Text as=\"p\" color=\"secondary\" type=\"supporting\">\n {subtitle}\n </Text>\n ) : null}\n </div>\n {hasEnd ? (\n <div className={classes.actions}>\n {endContent}\n {closeButton}\n </div>\n ) : null}\n </div>\n </header>\n );\n}\n\nLayoutHeader.displayName = 'LayoutHeader';\n","import type {ComponentPropsWithRef} from 'react';\nimport {\n layoutPanelRecipe,\n layoutRegionRecipe,\n} from 'components/Layout/Layout.recipe';\nimport {useLayoutArea, useLayoutDivider} from 'components/Layout/LayoutContext';\nimport {cx} from 'internal/cx';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\n/**\n * Side panel region within a Layout. Placed in the start or end slot,\n * with optional dividers and scrolling.\n */\nexport interface LayoutPanelProps extends ComponentPropsWithRef<'div'> {\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Whether the panel scrolls when it overflows.\n */\n isScrollable?: boolean;\n /**\n * Accessible label. Automatically sets role=\"region\" when provided.\n */\n label?: string;\n /**\n * Inner padding.\n */\n padding?: SpacingToken;\n /**\n * Fixed width for the panel.\n */\n width?: number | string;\n}\n\n/**\n * Side panel region within a Layout. Placed in the start or end slot,\n * with optional dividers and scrolling.\n */\nexport function LayoutPanel({\n children,\n className,\n 'data-testid': dataTestId,\n isScrollable = true,\n label,\n padding = 4,\n ref,\n role,\n style,\n width,\n ...rest\n}: LayoutPanelProps): React.JSX.Element {\n const area = useLayoutArea();\n const dividerContext = useLayoutDivider();\n const hasDivider = dividerContext?.hasDividers ?? false;\n const divider =\n hasDivider && (area === 'start' || area === 'end') ? area : 'none';\n\n return (\n <div\n {...rest}\n aria-label={label}\n className={cx(\n layoutPanelRecipe({isScrollable, divider}),\n layoutRegionRecipe({padding}),\n className,\n )}\n data-testid={dataTestId}\n ref={ref}\n role={role ?? (label != null ? 'region' : undefined)}\n style={{width, ...style}}>\n {children}\n </div>\n );\n}\n\nLayoutPanel.displayName = 'LayoutPanel';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Tooltip/useTooltip.tsx","../src/components/Tooltip/Tooltip.tsx"],"names":["jsx"],"mappings":"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","file":"chunk-6PIVWNUR.js","sourcesContent":["import {\n useCallback,\n useEffect,\n useMemo,\n type CSSProperties,\n type ReactNode,\n type RefCallback,\n} from 'react';\nimport {cx} from 'internal/cx';\nimport {\n useHoverLayer,\n type HoverLayerFocusTrigger,\n} from 'internal/useHoverLayer';\nimport type {\n ContextRenderProps,\n LayerAlignment,\n LayerPlacement,\n} from 'internal/useLayer';\nimport {css} from 'styled-system/css';\n\nexport type TooltipFocusTrigger = HoverLayerFocusTrigger;\n\nexport interface UseTooltipOptions {\n alignment?: LayerAlignment;\n delay?: number;\n focusTrigger?: TooltipFocusTrigger;\n hideDelay?: number;\n isEnabled?: boolean;\n onHide?: () => void;\n onShow?: () => void;\n placement?: LayerPlacement;\n}\n\nexport interface TooltipRenderProps extends ContextRenderProps {\n contentStyle?: CSSProperties;\n}\n\nexport interface UseTooltipReturn {\n /**\n * ID of the anchor element, used for CSS anchor positioning.\n */\n anchorId: string;\n /**\n * ID of the tooltip element. Pass to `aria-describedby` on the trigger.\n */\n describedBy: string;\n /**\n * Attaches hover/focus/keyboard listeners only.\n * Use when another element handles positioning (e.g., a wrapper provides the anchor).\n */\n interactionRef: RefCallback<HTMLElement>;\n /**\n * Attaches CSS anchor positioning only.\n * Use when another element handles interaction listeners.\n */\n positionRef: RefCallback<HTMLElement>;\n /**\n * Combined ref that attaches both positioning and interaction.\n * Use this for the common case where one element is both the anchor and trigger.\n * Do not combine with `interactionRef` or `positionRef` — use one or the other.\n */\n ref: RefCallback<HTMLElement>;\n /**\n * Renders the tooltip content into the layer.\n */\n renderTooltip: (children: ReactNode, props?: TooltipRenderProps) => ReactNode;\n}\n\nconst styles = {\n tooltipContainer: css({\n bg: 'fg',\n color: 'bg',\n borderRadius: 'md',\n fontFamily: 'body',\n fontSize: 'sm',\n lineHeight: 'normal',\n boxShadow: 'md',\n '--silver-text-color': 'currentColor',\n '--silver-text-color-muted':\n 'color-mix(in srgb, currentColor 70%, transparent)',\n }),\n tooltipContent: css({\n px: '2',\n py: '1',\n maxW: 'xs',\n wordBreak: 'break-word',\n }),\n marginByPlacement: {\n above: css({mb: '1'}),\n below: css({mt: '1'}),\n start: css({mr: '1'}),\n end: css({ml: '1'}),\n },\n} as const;\n\nexport function useTooltip(options: UseTooltipOptions = {}): UseTooltipReturn {\n const {\n placement = 'above',\n alignment = 'center',\n delay = 200,\n hideDelay = 0,\n focusTrigger = 'auto',\n isEnabled = true,\n onShow,\n onHide,\n } = options;\n\n const hoverLayer = useHoverLayer({\n delay,\n focusTrigger,\n hideDelay,\n isEnabled,\n onFocusIn: event => {\n const target = event.target as HTMLElement;\n return target.matches(':focus-visible');\n },\n onHide,\n onShow,\n });\n\n const {interactionRef, layer, ref} = hoverLayer;\n\n useEffect(() => {\n if (!layer.isOpen) {\n return;\n }\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n layer.hide();\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [layer, layer.isOpen]);\n\n const renderTooltip = useCallback(\n (children: ReactNode, props?: TooltipRenderProps): ReactNode => {\n const renderPlacement = props?.placement ?? placement;\n return layer.render(\n <div className={styles.tooltipContent} style={props?.contentStyle}>\n {children}\n </div>,\n {\n placement: renderPlacement,\n alignment: props?.alignment ?? alignment,\n className: cx(\n styles.tooltipContainer,\n styles.marginByPlacement[renderPlacement],\n props?.className,\n ),\n role: 'tooltip',\n style: props?.style,\n },\n );\n },\n [alignment, layer, placement],\n );\n\n return useMemo(\n () => ({\n ref,\n positionRef: layer.ref,\n interactionRef,\n anchorId: layer.anchorId,\n describedBy: layer.id,\n renderTooltip,\n }),\n [ref, layer.ref, interactionRef, layer.anchorId, layer.id, renderTooltip],\n );\n}\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {\n useTooltip,\n type TooltipFocusTrigger,\n} from 'components/Tooltip/useTooltip';\nimport {HoverLayerTrigger} from 'internal/HoverLayerTrigger';\nimport type {LayerAlignment, LayerPlacement} from 'internal/useLayer';\n\nexport type {TooltipFocusTrigger} from 'components/Tooltip/useTooltip';\n\nexport interface TooltipProps {\n /**\n * Cross-axis alignment of the tooltip relative to the anchor.\n * @default 'center'\n */\n alignment?: LayerAlignment;\n /**\n * Element(s) that the tooltip is anchored to.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the wrapper.\n */\n className?: string;\n /**\n * Content rendered inside the tooltip popup.\n */\n content: ReactNode;\n /**\n * Inline styles applied to the tooltip content area.\n */\n contentStyle?: CSSProperties;\n /**\n * Test ID applied to the wrapper.\n */\n 'data-testid'?: string;\n /**\n * Delay in milliseconds before the tooltip appears.\n * @default 200\n */\n delay?: number;\n /**\n * How focus interactions trigger the tooltip.\n * @default 'auto'\n */\n focusTrigger?: TooltipFocusTrigger;\n /**\n * Whether to show a dashed underline on text-only children.\n * @default 'auto'\n */\n hasHoverIndication?: 'auto' | boolean;\n /**\n * Delay in milliseconds before the tooltip hides after leaving.\n * @default 0\n */\n hideDelay?: number;\n /**\n * Whether the tooltip can be shown.\n * @default true\n */\n isEnabled?: boolean;\n /**\n * Preferred placement of the tooltip relative to the anchor.\n * @default 'above'\n */\n placement?: LayerPlacement;\n /**\n * Ref forwarded to the wrapper element.\n */\n ref?: Ref<HTMLDivElement | HTMLSpanElement>;\n /**\n * Inline styles applied to the wrapper.\n */\n style?: CSSProperties;\n}\n\n/**\n * Displays contextual information in a popup anchored to a trigger element.\n *\n * For attaching a tooltip to an external ref (without wrapping children),\n * use the `useTooltip` hook directly.\n */\nexport function Tooltip({\n children,\n content,\n contentStyle,\n placement = 'above',\n alignment = 'center',\n delay = 200,\n hideDelay = 0,\n focusTrigger = 'auto',\n isEnabled = true,\n hasHoverIndication = 'auto',\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n}: TooltipProps): React.JSX.Element {\n const tooltip = useTooltip({\n placement,\n alignment,\n delay,\n hideDelay,\n focusTrigger,\n isEnabled,\n });\n\n return (\n <HoverLayerTrigger\n className={className}\n data-testid={dataTestId}\n describedBy={tooltip.describedBy}\n hasHoverIndication={hasHoverIndication}\n layer={tooltip.renderTooltip(content, {contentStyle})}\n nonTextWrapperElement=\"div\"\n style={style}\n triggerRef={tooltip.ref}\n wrapperRef={ref}>\n {children}\n </HoverLayerTrigger>\n );\n}\n\nTooltip.displayName = 'Tooltip';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/useListboxNavigation.ts","../src/internal/useSelectListbox.tsx"],"names":["useState","useMemo","useCallback"],"mappings":"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","file":"chunk-AEYJ6PWC.js","sourcesContent":["import {\n useCallback,\n useMemo,\n useState,\n type Dispatch,\n type KeyboardEvent,\n type SetStateAction,\n} from 'react';\n\nexport type ListboxNavigationOption = {\n isDisabled?: boolean;\n value: string;\n};\n\nexport type UseListboxNavigationOptions = {\n shouldClearOnCommit?: boolean;\n inputId: string;\n isDisabled?: boolean;\n isOpen: boolean;\n onCommit: (value: string) => void;\n onOpenChange: (isOpen: boolean) => void;\n options: ReadonlyArray<ListboxNavigationOption>;\n selectedValues?: ReadonlySet<string>;\n};\n\nexport type UseListboxNavigationResult = {\n activeDescendantId: string | undefined;\n getOptionId: (optionValue: string) => string;\n handleKeyboardNavigation: (\n event: KeyboardEvent<HTMLInputElement | HTMLButtonElement>,\n ) => void;\n highlightedValue: string | null;\n setHighlightedValue: Dispatch<SetStateAction<string | null>>;\n};\n\nexport function useListboxNavigation({\n inputId,\n isDisabled = false,\n isOpen,\n onCommit,\n onOpenChange,\n options,\n selectedValues,\n shouldClearOnCommit = true,\n}: UseListboxNavigationOptions): UseListboxNavigationResult {\n const [highlightedValue, setHighlightedValue] = useState<string | null>(null);\n const enabledOptions = useMemo(\n () => options.filter(option => !option.isDisabled),\n [options],\n );\n\n const getOptionId = useCallback(\n (optionValue: string): string =>\n `${inputId}-option-${optionValue.replace(/[^a-zA-Z0-9_-]/g, '-')}`,\n [inputId],\n );\n\n const activeDescendantId =\n isOpen && highlightedValue != null\n ? getOptionId(highlightedValue)\n : undefined;\n\n const getInitialHighlight = useCallback(\n (direction: 'first' | 'last' = 'first'): string | null => {\n if (enabledOptions.length === 0) {\n return null;\n }\n\n const selectedEnabledOption = enabledOptions.find(option =>\n selectedValues?.has(option.value),\n );\n if (selectedEnabledOption != null) {\n return selectedEnabledOption.value;\n }\n\n return direction === 'last'\n ? enabledOptions[enabledOptions.length - 1].value\n : enabledOptions[0].value;\n },\n [enabledOptions, selectedValues],\n );\n\n const moveHighlight = useCallback(\n (direction: 1 | -1): void => {\n if (enabledOptions.length === 0) {\n setHighlightedValue(null);\n return;\n }\n\n setHighlightedValue(currentValue => {\n const currentIndex = enabledOptions.findIndex(\n option => option.value === currentValue,\n );\n const nextIndex =\n currentIndex === -1\n ? direction === 1\n ? 0\n : enabledOptions.length - 1\n : (currentIndex + direction + enabledOptions.length) %\n enabledOptions.length;\n return enabledOptions[nextIndex].value;\n });\n },\n [enabledOptions],\n );\n\n const handleKeyboardNavigation = useCallback(\n (event: KeyboardEvent<HTMLInputElement | HTMLButtonElement>): void => {\n if (isDisabled) {\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (!isOpen) {\n onOpenChange(true);\n setHighlightedValue(\n getInitialHighlight(event.key === 'ArrowUp' ? 'last' : 'first'),\n );\n return;\n }\n\n moveHighlight(event.key === 'ArrowDown' ? 1 : -1);\n return;\n }\n\n if (event.key === 'Home' && isOpen) {\n event.preventDefault();\n setHighlightedValue(getInitialHighlight('first'));\n return;\n }\n\n if (event.key === 'End' && isOpen) {\n event.preventDefault();\n setHighlightedValue(getInitialHighlight('last'));\n return;\n }\n\n if (event.key === 'Enter' && isOpen && highlightedValue != null) {\n event.preventDefault();\n onCommit(highlightedValue);\n if (shouldClearOnCommit) {\n setHighlightedValue(null);\n }\n return;\n }\n\n if (event.key === 'Escape' && isOpen) {\n event.preventDefault();\n onOpenChange(false);\n setHighlightedValue(null);\n }\n },\n [\n getInitialHighlight,\n highlightedValue,\n isDisabled,\n isOpen,\n moveHighlight,\n onCommit,\n onOpenChange,\n shouldClearOnCommit,\n ],\n );\n\n return {\n activeDescendantId,\n getOptionId,\n handleKeyboardNavigation,\n highlightedValue,\n setHighlightedValue,\n };\n}\n","import {\n useCallback,\n useId,\n useMemo,\n useRef,\n useState,\n type Dispatch,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n type RefObject,\n type SetStateAction,\n} from 'react';\nimport type {InputStatus} from 'components/Field';\nimport {getDescribedBy, getStatusMessageID} from 'components/Field/inputUtils';\nimport isReactNode from 'internal/isReactNode';\nimport {useListboxNavigation} from 'internal/useListboxNavigation';\n\nexport interface SelectListboxOptionData {\n isDisabled?: boolean;\n label?: string;\n value: string;\n}\n\nexport interface SelectListboxDivider {\n type: 'divider';\n}\n\nexport interface SelectListboxSection<TOption extends SelectListboxOptionData> {\n options: ReadonlyArray<TOption>;\n title?: string;\n type: 'section';\n}\n\nexport type SelectListboxOption<TOption extends SelectListboxOptionData> =\n | SelectListboxDivider\n | SelectListboxSection<TOption>\n | TOption\n | string;\n\nfunction normalizeSelectListboxOption<TOption extends SelectListboxOptionData>(\n option: string | TOption,\n): TOption {\n return (\n typeof option === 'string'\n ? {label: option, value: option}\n : {...option, label: option.label ?? option.value}\n ) as TOption;\n}\n\nfunction getSelectListboxOptions<TOption extends SelectListboxOptionData>(\n options: ReadonlyArray<SelectListboxOption<TOption>>,\n): TOption[] {\n return options.flatMap(option => {\n if (typeof option === 'string') {\n return [normalizeSelectListboxOption<TOption>(option)];\n }\n if ('type' in option) {\n return option.type === 'section'\n ? option.options.map(normalizeSelectListboxOption<TOption>)\n : [];\n }\n return [normalizeSelectListboxOption<TOption>(option)];\n });\n}\n\nexport type UseSelectListboxOptions<TOption extends SelectListboxOptionData> = {\n clearQueryOnCommit?: boolean;\n closeOnCommit?: boolean;\n description: ReactNode;\n isDefaultOpen?: boolean;\n isDisabled?: boolean;\n isLoading?: boolean;\n onCommitOption: (option: TOption) => boolean | undefined;\n options: ReadonlyArray<SelectListboxOption<TOption>>;\n selectedValues: ReadonlySet<string>;\n shouldClearOnCommit?: boolean;\n status: InputStatus | undefined;\n};\n\nexport type UseSelectListboxResult<TOption extends SelectListboxOptionData> = {\n activeDescendantId: string | undefined;\n describedBy: string | undefined;\n descriptionID: string | undefined;\n filteredValues: ReadonlySet<string>;\n getOptionId: (optionValue: string) => string;\n handleKeyboardNavigation: (\n event: KeyboardEvent<HTMLInputElement | HTMLButtonElement>,\n ) => void;\n handleOptionClick: (event: MouseEvent<HTMLElement>) => void;\n handleOptionMouseEnter: (event: MouseEvent<HTMLElement>) => void;\n highlightedValue: string | null;\n inputId: string;\n isInteractionDisabled: boolean;\n isOpen: boolean;\n listboxId: string;\n optionByValue: ReadonlyMap<string, TOption>;\n query: string;\n selectableOptions: ReadonlyArray<TOption>;\n setHighlightedValue: Dispatch<SetStateAction<string | null>>;\n setIsOpen: Dispatch<SetStateAction<boolean>>;\n setQuery: Dispatch<SetStateAction<string>>;\n statusMessageID: string | undefined;\n triggerRef: RefObject<HTMLDivElement | null>;\n visibleSelectableOptions: ReadonlyArray<TOption>;\n};\n\nexport function useSelectListbox<TOption extends SelectListboxOptionData>({\n clearQueryOnCommit = false,\n closeOnCommit = false,\n description,\n isDefaultOpen = false,\n isDisabled = false,\n isLoading = false,\n onCommitOption,\n options,\n selectedValues,\n shouldClearOnCommit = true,\n status,\n}: UseSelectListboxOptions<TOption>): UseSelectListboxResult<TOption> {\n const inputId = useId();\n const descriptionID = isReactNode(description)\n ? `${inputId}-description`\n : undefined;\n const statusMessageID = getStatusMessageID(inputId, status);\n const describedBy = getDescribedBy(descriptionID, statusMessageID);\n const [isOpen, setIsOpen] = useState(isDefaultOpen);\n const [query, setQuery] = useState('');\n const triggerRef = useRef<HTMLDivElement>(null);\n const listboxId = `${inputId}-listbox`;\n const selectableOptions = useMemo(\n () => getSelectListboxOptions(options),\n [options],\n );\n const optionByValue = useMemo(\n () => new Map(selectableOptions.map(option => [option.value, option])),\n [selectableOptions],\n );\n const filteredValues = useMemo(() => {\n if (query.trim() === '') {\n return new Set(selectableOptions.map(option => option.value));\n }\n const lowerQuery = query.toLowerCase();\n return new Set(\n selectableOptions\n .filter(option =>\n (option.label ?? option.value).toLowerCase().includes(lowerQuery),\n )\n .map(option => option.value),\n );\n }, [query, selectableOptions]);\n const visibleSelectableOptions = useMemo(\n () => selectableOptions.filter(option => filteredValues.has(option.value)),\n [filteredValues, selectableOptions],\n );\n const isInteractionDisabled = isDisabled || isLoading;\n\n const {\n activeDescendantId,\n getOptionId,\n handleKeyboardNavigation,\n highlightedValue,\n setHighlightedValue,\n } = useListboxNavigation({\n inputId,\n isDisabled: isInteractionDisabled,\n isOpen,\n onCommit: optionValue => {\n const option = optionByValue.get(optionValue);\n if (option == null) {\n return;\n }\n\n if (onCommitOption(option) === false) {\n return;\n }\n\n if (closeOnCommit) {\n setIsOpen(false);\n }\n if (clearQueryOnCommit) {\n setQuery('');\n }\n },\n onOpenChange: setIsOpen,\n options: visibleSelectableOptions,\n selectedValues,\n shouldClearOnCommit,\n });\n\n const handleOptionClick = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n const optionValue = event.currentTarget.dataset.value;\n const option =\n optionValue == null ? undefined : optionByValue.get(optionValue);\n if (option == null || onCommitOption(option) === false) {\n return;\n }\n\n if (closeOnCommit) {\n setIsOpen(false);\n }\n if (clearQueryOnCommit) {\n setQuery('');\n }\n },\n [clearQueryOnCommit, closeOnCommit, onCommitOption, optionByValue],\n );\n\n const handleOptionMouseEnter = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n const optionValue = event.currentTarget.dataset.value;\n const option =\n optionValue == null ? undefined : optionByValue.get(optionValue);\n if (option != null && !option.isDisabled) {\n setHighlightedValue(option.value);\n }\n },\n [optionByValue, setHighlightedValue],\n );\n\n return {\n activeDescendantId,\n describedBy,\n descriptionID,\n filteredValues,\n getOptionId,\n handleKeyboardNavigation,\n handleOptionClick,\n handleOptionMouseEnter,\n highlightedValue,\n inputId,\n isInteractionDisabled,\n isOpen,\n listboxId,\n optionByValue,\n query,\n selectableOptions,\n setHighlightedValue,\n setIsOpen,\n setQuery,\n statusMessageID,\n triggerRef,\n visibleSelectableOptions,\n };\n}\n\nexport type RenderSelectListboxOptionsConfig<\n TOption extends SelectListboxOptionData,\n> = {\n dividerClassName: string;\n inputId: string;\n options: ReadonlyArray<SelectListboxOption<TOption>>;\n renderOption: (option: TOption) => ReactNode;\n sectionHeadingClassName: string;\n};\n\nexport function renderSelectListboxOptions<\n TOption extends SelectListboxOptionData,\n>({\n dividerClassName,\n inputId,\n options,\n renderOption,\n sectionHeadingClassName,\n}: RenderSelectListboxOptionsConfig<TOption>): ReactNode[] {\n const optionNodes: ReactNode[] = [];\n let dividerCount = 0;\n let sectionCount = 0;\n\n for (const option of options) {\n if (typeof option === 'string') {\n optionNodes.push(\n renderOption(normalizeSelectListboxOption<TOption>(option)),\n );\n } else if ('type' in option) {\n if (option.type === 'divider') {\n dividerCount += 1;\n optionNodes.push(\n <div\n className={dividerClassName}\n key={`divider-${dividerCount}`}\n role=\"separator\"\n />,\n );\n } else {\n const sectionKey =\n option.title ??\n option.options.map(sectionOption => sectionOption.value).join('|');\n sectionCount += 1;\n const sectionHeadingId =\n option.title == null\n ? undefined\n : `${inputId}-section-${sectionKey.replace(\n /[^a-zA-Z0-9_-]/g,\n '-',\n )}-${sectionCount}`;\n const sectionOptionNodes: ReactNode[] = [];\n for (const sectionOption of option.options) {\n sectionOptionNodes.push(\n renderOption(normalizeSelectListboxOption<TOption>(sectionOption)),\n );\n }\n optionNodes.push(\n <div\n aria-labelledby={sectionHeadingId}\n key={`section-${sectionKey}-${sectionCount}`}\n role=\"group\">\n {option.title != null ? (\n <div className={sectionHeadingClassName} id={sectionHeadingId}>\n {option.title}\n </div>\n ) : null}\n {sectionOptionNodes}\n </div>,\n );\n }\n } else {\n optionNodes.push(\n renderOption(normalizeSelectListboxOption<TOption>(option)),\n );\n }\n }\n\n return optionNodes;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/ToggleButton/ToggleButton.recipe.ts","../src/components/ToggleButton/ToggleButtonGroup.tsx","../src/components/ToggleButton/ToggleButton.tsx"],"names":["sva","createContext","use","css","useMemo","useCallback","current","jsx","cx","buttonRecipe","Spinner","Icon","jsxs","Tooltip"],"mappings":";;;;;;;;;;;;;AAEO,IAAM,qBAAqBA,qBAAA,CAAI;AAAA,EACpC,KAAA,EAAO;AAAA,IACL,MAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA;AAAA,IACA,kBAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS;AAAA,MACP,OAAA,EAAS;AAAA,KACX;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,OAAA,EAAS,aAAA;AAAA,MACT,aAAA,EAAe,QAAA;AAAA,MACf,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAgB,QAAA;AAAA,MAChB,IAAA,EAAM;AAAA,KACR;AAAA,IACA,KAAA,EAAO;AAAA,MACL,QAAA,EAAU,QAAA;AAAA,MACV,YAAA,EAAc,UAAA;AAAA,MACd,IAAA,EAAM;AAAA,KACR;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,OAAA,EAAS,OAAA;AAAA,MACT,CAAA,EAAG,CAAA;AAAA,MACH,QAAA,EAAU,QAAA;AAAA,MACV,UAAA,EAAY,QAAA;AAAA,MACZ,aAAA,EAAe,MAAA;AAAA,MACf,UAAA,EAAY;AAAA,KACd;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,aAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAgB,QAAA;AAAA,MAChB,UAAA,EAAY;AAAA,KACd;AAAA,IACA,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,aAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,KAAA,EAAO;AAAA;AACT,GACF;AAAA,EACA,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA,IAIR,UAAA,EAAY;AAAA,MACV,IAAA,EAAM;AAAA,QACJ,IAAA,EAAM;AAAA,UACJ,EAAA,EAAI,WAAA;AAAA,UACJ,UAAA,EAAY,UAAA;AAAA,UACZ,MAAA,EAAQ,EAAC,EAAA,EAAI,WAAA,EAAW;AAAA,UACxB,OAAA,EAAS,EAAC,EAAA,EAAI,WAAA;AAAW;AAC3B,OACF;AAAA,MACA,OAAO;AAAC;AACV,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;AC7CD,IAAM,wBAAA,GACJC,oBAAoD,IAAI,CAAA;AAE1D,wBAAA,CAAyB,WAAA,GAAc,0BAAA;AAEhC,SAAS,oBAAA,GAA6D;AAC3E,EAAA,OAAOC,UAAI,wBAAwB,CAAA;AACrC;AA+EA,IAAM,MAAA,GAAS;AAAA,EACb,OAAOC,qBAAA,CAAI;AAAA,IACT,OAAA,EAAS,aAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACN,CAAA;AAAA,EACD,UAAUA,qBAAA,CAAI;AAAA,IACZ,aAAA,EAAe,QAAA;AAAA,IACf,UAAA,EAAY;AAAA,GACb;AACH,CAAA;AAKO,SAAS,iBAAA,CAAkB;AAAA,EAChC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA,EAAe,UAAA;AAAA,EACf,UAAA,GAAa,KAAA;AAAA,EACb,KAAA;AAAA,EACA,WAAA,GAAc,YAAA;AAAA,EACd,GAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA8C;AAC5C,EAAA,MAAM,UAAA,GAAa,MAAM,IAAA,KAAS,UAAA;AAClC,EAAA,MAAM,EAAC,QAAA,EAAU,KAAA,EAAK,GAAI,KAAA;AAE1B,EAAA,MAAM,cAAA,GAAiBC,cAAQ,MAAM;AACnC,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,OAAO,IAAI,IAAI,KAAiB,CAAA;AAAA,IAClC;AAEA,IAAA,OAAO,KAAA,IAAS,uBAAO,IAAI,GAAA,qBAAgB,IAAI,GAAA,CAAI,CAAC,KAAe,CAAC,CAAA;AAAA,EACtE,CAAA,EAAG,CAAC,UAAA,EAAY,KAAK,CAAC,CAAA;AAEtB,EAAA,MAAM,QAAA,GAAWC,iBAAA;AAAA,IACf,CAAC,SAAA,KAAsB;AACrB,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,MAAMC,QAAAA,GAAU,KAAA;AAChB,QAAC,QAAA;AAAA,UACCA,QAAAA,CAAQ,QAAA,CAAS,SAAS,CAAA,GACtBA,QAAAA,CAAQ,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,KAAM,SAAS,CAAA,GACnC,CAAC,GAAGA,UAAS,SAAS;AAAA,SAC5B;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAU,KAAA;AAChB,MAAC,QAAA;AAAA,QACC,OAAA,KAAY,YAAY,IAAA,GAAO;AAAA,OACjC;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,KAAA,EAAO,QAAQ;AAAA,GAC9B;AAEA,EAAA,MAAM,YAAA,GAAeF,aAAA;AAAA,IACnB,OAAO,EAAC,UAAA,EAAY,QAAA,EAAU,gBAAgB,IAAA,EAAI,CAAA;AAAA,IAClD,CAAC,UAAA,EAAY,QAAA,EAAU,cAAA,EAAgB,IAAI;AAAA,GAC7C;AAEA,EAAA,uBACEG,cAAA,CAAC,wBAAA,EAAA,EAAyB,KAAA,EAAO,YAAA,EAC/B,QAAA,kBAAAA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,iBAAe,UAAA,IAAc,MAAA;AAAA,MAC7B,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAWC,oBAAA;AAAA,QACT,MAAA,CAAO,KAAA;AAAA,QACP,WAAA,KAAgB,UAAA,GAAa,MAAA,CAAO,QAAA,GAAW,MAAA;AAAA,QAC/C;AAAA,OACF;AAAA,MACA,kBAAA,EAAkB,WAAA;AAAA,MAClB,aAAA,EAAa,UAAA;AAAA,MACb,GAAA;AAAA,MACA,IAAA,EAAK,OAAA;AAAA,MACL,KAAA;AAAA,MACC;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AChHzB,SAAS,YAAA,CAAa;AAAA,EAC3B,SAAA;AAAA,EACA,aAAA,EAAe,UAAA;AAAA,EACf,IAAA;AAAA,EACA,YAAY,cAAA,GAAiB,KAAA;AAAA,EAC7B,UAAA,GAAa,KAAA;AAAA,EACb,SAAA,GAAY,KAAA;AAAA,EACZ,YAAY,cAAA,GAAiB,KAAA;AAAA,EAC7B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA,EAAM,QAAA;AAAA,EACN,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAyC;AACvC,EAAA,MAAM,QAAQ,oBAAA,EAAqB;AAEnC,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,IAAA,IAAI,KAAA,IAAS,IAAA,IAAQ,KAAA,IAAS,IAAA,EAAM;AAClC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,UAAA,GACJ,SAAS,IAAA,IAAQ,KAAA,IAAS,OACtB,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,KAAK,CAAA,GAC9B,cAAA;AACN,EAAA,MAAM,IAAA,GAAO,QAAA,IAAY,KAAA,EAAO,IAAA,IAAQ,IAAA;AACxC,EAAA,MAAM,UAAA,GAAa,cAAA,IAAkB,KAAA,EAAO,UAAA,KAAe,IAAA;AAC3D,EAAA,MAAM,YAAA,GAAe,UAAA,IAAc,YAAA,IAAgB,IAAA,GAAO,YAAA,GAAe,IAAA;AACzE,EAAA,MAAM,OAAA,GAAU,kBAAA,CAAmB,EAAC,UAAA,EAAW,CAAA;AAE/C,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAyC;AAC5D,IAAA,IAAI,cAAc,SAAA,EAAW;AAC3B,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,IAAS,IAAA,IAAQ,KAAA,IAAS,IAAA,EAAM;AAClC,MAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AACpB,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,GAAW,CAAC,UAAU,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,yBACJD,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,aAAW,SAAA,IAAa,MAAA;AAAA,MACxB,YAAA,EAAY,UAAA,IAAc,SAAA,GAAY,KAAA,GAAQ,MAAA;AAAA,MAC9C,cAAA,EAAc,UAAA;AAAA,MACd,SAAA,EAAWC,oBAAA;AAAA,QACTC,8BAAA,CAAa,EAAC,OAAA,EAAS,OAAA,EAAS,MAAM,QAAA,EAAU,UAAA,EAAW,CAAA,CAAE,IAAA;AAAA,QAC7D,OAAA,CAAQ,IAAA;AAAA,QACR;AAAA,OACF;AAAA,MACA,aAAA,EAAa,UAAA;AAAA,MACb,UAAU,UAAA,IAAc,SAAA;AAAA,MACxB,OAAA,EAAS,WAAA;AAAA,MACT,GAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,0CAAC,MAAA,EAAA,EAAK,aAAA,EAAa,aAAa,MAAA,EAAW,SAAA,EAAW,QAAQ,OAAA,EAC3D,QAAA,EAAA;AAAA,QAAA,YAAA,IAAgB,IAAA,mBACfF,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,OAAA,CAAQ,IAAA,EACtB,wBAAc,SAAA,mBACbA,eAACG,yBAAA,EAAA,EAAQ,IAAA,EAAY,oBAErBH,cAAAA,CAACI,0BAAK,IAAA,EAAM,YAAA,EAAc,IAAA,EAAY,CAAA,EAE1C,CAAA,GACE,IAAA;AAAA,QACH,CAAC,UAAA,mBACAC,eAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,QAAQ,YAAA,EACvB,QAAA,EAAA;AAAA,0BAAAL,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,OAAA,CAAQ,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,0BACvCA,eAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAO,SAAA,EAAW,OAAA,CAAQ,kBACzC,QAAA,EAAA,KAAA,EACH;AAAA,SAAA,EACF,CAAA,GACE,IAAA;AAAA,QACH,CAAC,UAAA,IAAc,SAAA,mBACdA,cAAAA,CAAC,UAAK,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,OAAA,CAAQ,SAC1C,QAAA,kBAAAA,cAAAA,CAACG,yBAAA,EAAA,EAAQ,IAAA,EAAY,GACvB,CAAA,GACE;AAAA,OAAA,EACN;AAAA;AAAA,GACF;AAGF,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,uBAAOH,cAAAA,CAACM,yBAAA,EAAA,EAAQ,OAAA,EAAS,SAAU,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,EAC5C;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA","file":"chunk-BIJ6YDWJ.cjs","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const toggleButtonRecipe = sva({\n slots: [\n 'root',\n 'content',\n 'labelWrapper',\n 'label',\n 'widthReservation',\n 'icon',\n 'spinner',\n ],\n base: {\n content: {\n display: 'contents',\n },\n labelWrapper: {\n display: 'inline-flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n minW: 0,\n },\n label: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n minW: 0,\n },\n widthReservation: {\n display: 'block',\n h: 0,\n overflow: 'hidden',\n visibility: 'hidden',\n pointerEvents: 'none',\n fontWeight: 'semibold',\n },\n icon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n },\n spinner: {\n display: 'inline-flex',\n alignItems: 'center',\n color: 'inherit',\n },\n },\n variants: {\n // The core button visuals (size/variant/iconOnly) come from the shared\n // `buttonRecipe`; this recipe only layers the selected-state override on the\n // root, which is composed with the button root via `cx`.\n isSelected: {\n true: {\n root: {\n bg: 'bg.subtle',\n fontWeight: 'semibold',\n _hover: {bg: 'bg.subtle'},\n _active: {bg: 'bg.subtle'},\n },\n },\n false: {},\n },\n },\n defaultVariants: {\n isSelected: false,\n },\n});\n\nexport type ToggleButtonVariants = RecipeVariantProps<\n typeof toggleButtonRecipe\n>;\n","import {\n createContext,\n use,\n useCallback,\n useMemo,\n type CSSProperties,\n type ReactNode,\n type Ref,\n} from 'react';\nimport type {ButtonSize} from 'components/Button';\nimport {cx} from 'internal/cx';\nimport {css} from 'styled-system/css';\n\nexport type ToggleButtonGroupOrientation = 'horizontal' | 'vertical';\n\ninterface ToggleButtonGroupContextValue {\n isDisabled?: boolean;\n onToggle: (value: string) => void;\n selectedValues: Set<string>;\n size?: ButtonSize;\n}\n\nconst ToggleButtonGroupContext =\n createContext<ToggleButtonGroupContextValue | null>(null);\n\nToggleButtonGroupContext.displayName = 'ToggleButtonGroupContext';\n\nexport function useToggleButtonGroup(): ToggleButtonGroupContextValue | null {\n return use(ToggleButtonGroupContext);\n}\n\ninterface ToggleButtonGroupBaseProps {\n /**\n * Toggle button children.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the group root.\n */\n className?: string;\n /**\n * Test ID applied to the group root.\n */\n 'data-testid'?: string;\n /**\n * Whether all buttons in the group are disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Accessible label for the group.\n */\n label: string;\n /**\n * Group orientation.\n * @default 'horizontal'\n */\n orientation?: ToggleButtonGroupOrientation;\n /**\n * Ref forwarded to the group root.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Default size for buttons in the group.\n */\n size?: ButtonSize;\n /**\n * Inline styles applied to the group root.\n */\n style?: CSSProperties;\n}\n\nexport interface ToggleButtonGroupSingleProps extends ToggleButtonGroupBaseProps {\n /**\n * Called with the selected value when selection changes, or `null`\n * when the active button is deselected.\n */\n onChange: (value: string | null) => void;\n /**\n * Single-selection mode. Clicking the active button clears selection.\n * @default 'single'\n */\n type?: 'single';\n /**\n * Currently selected value, or `null` for no selection.\n */\n value: string | null;\n}\n\nexport interface ToggleButtonGroupMultipleProps extends ToggleButtonGroupBaseProps {\n /**\n * Called with the array of selected values when selection changes.\n */\n onChange: (value: string[]) => void;\n /**\n * Multiple-selection mode.\n */\n type: 'multiple';\n /**\n * Currently selected values.\n */\n value: string[];\n}\n\nexport type ToggleButtonGroupProps =\n | ToggleButtonGroupSingleProps\n | ToggleButtonGroupMultipleProps;\n\nconst styles = {\n group: css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '1',\n }),\n vertical: css({\n flexDirection: 'column',\n alignItems: 'stretch',\n }),\n} as const;\n\n/**\n * Groups related ToggleButtons and manages shared selection state.\n */\nexport function ToggleButtonGroup({\n children,\n className,\n 'data-testid': dataTestId,\n isDisabled = false,\n label,\n orientation = 'horizontal',\n ref,\n size,\n style,\n ...props\n}: ToggleButtonGroupProps): React.JSX.Element {\n const isMultiple = props.type === 'multiple';\n const {onChange, value} = props;\n\n const selectedValues = useMemo(() => {\n if (isMultiple) {\n return new Set(value as string[]);\n }\n\n return value == null ? new Set<string>() : new Set([value as string]);\n }, [isMultiple, value]);\n\n const onToggle = useCallback(\n (itemValue: string) => {\n if (isMultiple) {\n const current = value as string[];\n (onChange as (v: string[]) => void)(\n current.includes(itemValue)\n ? current.filter(v => v !== itemValue)\n : [...current, itemValue],\n );\n return;\n }\n\n const current = value as string | null;\n (onChange as (v: string | null) => void)(\n current === itemValue ? null : itemValue,\n );\n },\n [isMultiple, value, onChange],\n );\n\n const contextValue = useMemo(\n () => ({isDisabled, onToggle, selectedValues, size}),\n [isDisabled, onToggle, selectedValues, size],\n );\n\n return (\n <ToggleButtonGroupContext value={contextValue}>\n <div\n aria-disabled={isDisabled || undefined}\n aria-label={label}\n className={cx(\n styles.group,\n orientation === 'vertical' ? styles.vertical : undefined,\n className,\n )}\n data-orientation={orientation}\n data-testid={dataTestId}\n ref={ref}\n role=\"group\"\n style={style}>\n {children}\n </div>\n </ToggleButtonGroupContext>\n );\n}\n\nToggleButtonGroup.displayName = 'ToggleButtonGroup';\n","import type {CSSProperties, MouseEvent, Ref} from 'react';\nimport type {ButtonSize} from 'components/Button';\nimport {buttonRecipe} from 'components/Button/Button.recipe';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Spinner} from 'components/Spinner';\nimport {toggleButtonRecipe} from 'components/ToggleButton/ToggleButton.recipe';\nimport {useToggleButtonGroup} from 'components/ToggleButton/ToggleButtonGroup';\nimport {Tooltip} from 'components/Tooltip';\nimport {cx} from 'internal/cx';\n\nexport interface ToggleButtonProps {\n /**\n * Additional CSS class names applied to the button root.\n */\n className?: string;\n /**\n * Test ID applied to the button root.\n */\n 'data-testid'?: string;\n /**\n * Icon element rendered before the label.\n */\n icon?: IconComponent;\n /**\n * Whether the button is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether to visually hide the label and render a square icon button.\n * @default false\n */\n isIconOnly?: boolean;\n /**\n * Whether the button is loading.\n * @default false\n */\n isLoading?: boolean;\n /**\n * Whether the button is currently selected.\n * @default false\n */\n isSelected?: boolean;\n /**\n * Accessible label for the button.\n */\n label: string;\n /**\n * Called when the selected state should change.\n */\n onChange?: (isSelected: boolean) => void;\n /**\n * Ref forwarded to the button root.\n */\n ref?: Ref<HTMLButtonElement>;\n /**\n * Icon element rendered when the button is selected.\n */\n selectedIcon?: IconComponent;\n /**\n * Visual size of the button.\n */\n size?: ButtonSize;\n /**\n * Inline styles applied to the button root.\n */\n style?: CSSProperties;\n /**\n * Tooltip text shown on hover.\n */\n tooltip?: string;\n /**\n * Value identifier when used inside `ToggleButtonGroup`.\n */\n value?: string;\n}\n\n/**\n * Button that toggles between selected and unselected states.\n */\nexport function ToggleButton({\n className,\n 'data-testid': dataTestId,\n icon,\n isDisabled: isDisabledProp = false,\n isIconOnly = false,\n isLoading = false,\n isSelected: isSelectedProp = false,\n label,\n onChange,\n selectedIcon,\n ref,\n size: sizeProp,\n style,\n tooltip,\n value,\n}: ToggleButtonProps): React.JSX.Element {\n const group = useToggleButtonGroup();\n\n if (process.env.NODE_ENV !== 'production') {\n if (group != null && value == null) {\n throw new Error(\n 'ToggleButton: `value` prop is required when used inside a ToggleButtonGroup.',\n );\n }\n }\n\n const isSelected =\n group != null && value != null\n ? group.selectedValues.has(value)\n : isSelectedProp;\n const size = sizeProp ?? group?.size ?? 'md';\n const isDisabled = isDisabledProp || group?.isDisabled === true;\n const resolvedIcon = isSelected && selectedIcon != null ? selectedIcon : icon;\n const classes = toggleButtonRecipe({isSelected});\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled || isLoading) {\n event.preventDefault();\n return;\n }\n\n if (group != null && value != null) {\n group.onToggle(value);\n return;\n }\n\n onChange?.(!isSelected);\n };\n\n const button = (\n <button\n aria-busy={isLoading || undefined}\n aria-label={isIconOnly || isLoading ? label : undefined}\n aria-pressed={isSelected}\n className={cx(\n buttonRecipe({variant: 'ghost', size, iconOnly: isIconOnly}).root,\n classes.root,\n className,\n )}\n data-testid={dataTestId}\n disabled={isDisabled || isLoading}\n onClick={handleClick}\n ref={ref}\n style={style}\n type=\"button\">\n <span aria-hidden={isLoading || undefined} className={classes.content}>\n {resolvedIcon != null ? (\n <span className={classes.icon}>\n {isIconOnly && isLoading ? (\n <Spinner size={size} />\n ) : (\n <Icon icon={resolvedIcon} size={size} />\n )}\n </span>\n ) : null}\n {!isIconOnly ? (\n <span className={classes.labelWrapper}>\n <span className={classes.label}>{label}</span>\n <span aria-hidden=\"true\" className={classes.widthReservation}>\n {label}\n </span>\n </span>\n ) : null}\n {!isIconOnly && isLoading ? (\n <span aria-hidden=\"true\" className={classes.spinner}>\n <Spinner size={size} />\n </span>\n ) : null}\n </span>\n </button>\n );\n\n if (tooltip != null) {\n return <Tooltip content={tooltip}>{button}</Tooltip>;\n }\n\n return button;\n}\n\nToggleButton.displayName = 'ToggleButton';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/HoverCard/useHoverCard.tsx","../src/components/HoverCard/HoverCard.tsx"],"names":["css","useRef","useHoverLayer","useCallback","jsx","cx","useMemo","HoverLayerTrigger"],"mappings":";;;;;;;;AA+CA,IAAM,MAAA,GAAS;AAAA,EACb,WAAWA,qBAAA,CAAI;AAAA,IACb,EAAA,EAAI,IAAA;AAAA,IACJ,YAAA,EAAc,IAAA;AAAA,IACd,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,OAAA;AAAA,IACb,WAAA,EAAa;AAAA,GACd,CAAA;AAAA,EACD,SAASA,qBAAA,CAAI;AAAA,IACX,CAAA,EAAG;AAAA,GACJ,CAAA;AAAA,EACD,MAAA,EAAQ;AAAA,IACN,KAAA,EAAOA,qBAAA,CAAI,EAAC,EAAA,EAAI,KAAI,CAAA;AAAA,IACpB,KAAA,EAAOA,qBAAA,CAAI,EAAC,EAAA,EAAI,KAAI,CAAA;AAAA,IACpB,KAAA,EAAOA,qBAAA,CAAI,EAAC,EAAA,EAAI,KAAI,CAAA;AAAA,IACpB,GAAA,EAAKA,qBAAA,CAAI,EAAC,EAAA,EAAI,KAAI;AAAA;AAEtB,CAAA;AAEO,SAAS,YAAA,CAAa;AAAA,EAC3B,SAAA,GAAY,OAAA;AAAA,EACZ,SAAA,GAAY,QAAA;AAAA,EACZ,KAAA,GAAQ,GAAA;AAAA,EACR,SAAA,GAAY,GAAA;AAAA,EACZ,YAAA,GAAe,MAAA;AAAA,EACf,SAAA,GAAY,IAAA;AAAA,EACZ,MAAA;AAAA,EACA;AACF,CAAA,GAAyB,EAAC,EAAuB;AAC/C,EAAA,MAAM,oBAAA,GAAuBC,aAAO,KAAK,CAAA;AACzC,EAAA,MAAM,qBAAA,GAAwBA,aAAO,KAAK,CAAA;AAE1C,EAAA,MAAM,aAAaC,+BAAA,CAAc;AAAA,IAC/B,KAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAW,MAAM;AACf,MAAA,IAAI,sBAAsB,OAAA,EAAS;AACjC,QAAA,qBAAA,CAAsB,OAAA,GAAU,KAAA;AAChC,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,YAAY,CAAA,KAAA,KAAS;AACnB,MAAA,MAAM,gBAAgB,KAAA,CAAM,aAAA;AAC5B,MAAA,MAAM,cAAA,GAAiB,QAAA,CAAS,cAAA,CAAe,UAAA,CAAW,WAAW,CAAA;AAErE,MAAA,OAAO,CAAC,cAAA,EAAgB,QAAA,CAAS,aAAa,CAAA;AAAA,IAChD,CAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,iBAAiB,CAAA,KAAA,KAAS;AACxB,MAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,MAAA,UAAA,CAAW,aAAA,EAAc;AACzB,MAAA,UAAA,CAAW,IAAA,EAAK;AAAA,IAClB,CAAA;AAAA,IACA,UAAA,EAAY,MAAM,CAAC,oBAAA,CAAqB;AAAA,GACzC,CAAA;AAED,EAAA,MAAM,EAAC,aAAA,EAAe,cAAA,EAAgB,OAAO,GAAA,EAAK,YAAA,EAAc,YAAU,GACxE,UAAA;AAEF,EAAA,MAAM,iBAAA,GAAoBC,iBAAA;AAAA,IACxB,CAAC,KAAA,KAAwC;AACvC,MAAA,MAAM,gBAAgB,KAAA,CAAM,aAAA;AAC5B,MAAA,IACE,KAAA,CAAM,cAAc,QAAA,CAAS,aAAa,KAC1C,UAAA,CAAW,OAAA,EAAS,QAAA,CAAS,aAAa,CAAA,EAC1C;AACA,QAAA;AAAA,MACF;AAEA,MAAA,YAAA,EAAa;AAAA,IACf,CAAA;AAAA,IACA,CAAC,cAAc,UAAU;AAAA,GAC3B;AAEA,EAAA,MAAM,eAAA,GAAkBA,iBAAA;AAAA,IACtB,CAAC,UAAqB,KAAA,KAA0C;AAC9D,MAAA,MAAM,eAAA,GAAkB,OAAO,SAAA,IAAa,SAAA;AAE5C,MAAA,OAAO,KAAA,CAAM,MAAA;AAAA;AAAA,wBAEXC,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,WAAW,MAAA,CAAO,OAAA;AAAA,YAClB,MAAA,EAAQ,iBAAA;AAAA,YACR,WAAW,CAAA,KAAA,KAAS;AAClB,cAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,gBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,gBAAA,qBAAA,CAAsB,OAAA,GAAU,IAAA;AAChC,gBAAA,aAAA,EAAc;AACd,gBAAA,UAAA,CAAW,IAAA,EAAK;AAChB,gBAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAAA,cAC5B;AAAA,YACF,CAAA;AAAA,YACA,cAAc,MAAM;AAClB,cAAA,oBAAA,CAAqB,OAAA,GAAU,IAAA;AAC/B,cAAA,aAAA,EAAc;AAAA,YAChB,CAAA;AAAA,YACA,cAAc,MAAM;AAClB,cAAA,oBAAA,CAAqB,OAAA,GAAU,KAAA;AAC/B,cAAA,YAAA,EAAa;AAAA,YACf,CAAA;AAAA,YACC;AAAA;AAAA,SACH;AAAA,QACA;AAAA,UACE,SAAA,EAAW,eAAA;AAAA,UACX,SAAA,EAAW,OAAO,SAAA,IAAa,SAAA;AAAA,UAC/B,SAAA,EAAWC,oBAAA;AAAA,YACT,MAAA,CAAO,SAAA;AAAA,YACP,MAAA,CAAO,OAAO,eAAe,CAAA;AAAA,YAC7B,KAAA,EAAO;AAAA,WACT;AAAA,UACA,MAAM,KAAA,EAAO,IAAA;AAAA,UACb,OAAO,KAAA,EAAO;AAAA;AAChB,OACF;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,SAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,OAAOC,aAAA;AAAA,IACL,OAAO;AAAA,MACL,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,aAAa,KAAA,CAAM,EAAA;AAAA,MACnB,MAAM,UAAA,CAAW,IAAA;AAAA,MACjB,cAAA;AAAA,MACA,aAAa,KAAA,CAAM,GAAA;AAAA,MACnB,GAAA;AAAA,MACA,eAAA;AAAA,MACA,MAAM,UAAA,CAAW;AAAA,KACnB,CAAA;AAAA,IACA;AAAA,MACE,UAAA,CAAW,IAAA;AAAA,MACX,UAAA,CAAW,IAAA;AAAA,MACX,cAAA;AAAA,MACA,KAAA,CAAM,QAAA;AAAA,MACN,KAAA,CAAM,EAAA;AAAA,MACN,KAAA,CAAM,GAAA;AAAA,MACN,GAAA;AAAA,MACA;AAAA;AACF,GACF;AACF;AC/HO,SAAS,SAAA,CAAU;AAAA,EACxB,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA,GAAY,OAAA;AAAA,EACZ,SAAA,GAAY,QAAA;AAAA,EACZ,KAAA,GAAQ,GAAA;AAAA,EACR,SAAA,GAAY,GAAA;AAAA,EACZ,YAAA,GAAe,MAAA;AAAA,EACf,SAAA,GAAY,IAAA;AAAA,EACZ,kBAAA,GAAqB,MAAA;AAAA,EACrB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,EAAsC;AACpC,EAAA,MAAM,YAAY,YAAA,CAAa;AAAA,IAC7B,SAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,uBACEF,cAAAA;AAAA,IAACG,mCAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,aAAA,EAAa,UAAA;AAAA,MACb,aAAa,SAAA,CAAU,WAAA;AAAA,MACvB,kBAAA;AAAA,MACA,KAAA,EAAO,SAAA,CAAU,eAAA,CAAgB,OAAO,CAAA;AAAA,MACxC,gCAAA,EAAkC,KAAA;AAAA,MAClC,KAAA;AAAA,MACA,YAAY,SAAA,CAAU,GAAA;AAAA,MACtB,UAAA,EAAY,GAAA;AAAA,MACX;AAAA;AAAA,GACH;AAEJ;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA","file":"chunk-D5OX6II7.cjs","sourcesContent":["import {\n useCallback,\n useMemo,\n useRef,\n type FocusEvent as ReactFocusEvent,\n type ReactNode,\n type RefCallback,\n} from 'react';\nimport {cx} from 'internal/cx';\nimport {\n useHoverLayer,\n type HoverLayerFocusTrigger,\n} from 'internal/useHoverLayer';\nimport type {\n ContextRenderProps,\n LayerAlignment,\n LayerPlacement,\n} from 'internal/useLayer';\nimport {css} from 'styled-system/css';\n\nexport type HoverCardFocusTrigger = HoverLayerFocusTrigger;\n\nexport interface UseHoverCardOptions {\n alignment?: LayerAlignment;\n delay?: number;\n focusTrigger?: HoverCardFocusTrigger;\n hideDelay?: number;\n isEnabled?: boolean;\n onHide?: () => void;\n onShow?: () => void;\n placement?: LayerPlacement;\n}\n\nexport interface UseHoverCardReturn {\n anchorId: string;\n describedBy: string;\n hide: () => void;\n interactionRef: RefCallback<HTMLElement>;\n positionRef: RefCallback<HTMLElement>;\n ref: RefCallback<HTMLElement>;\n renderHoverCard: (\n children: ReactNode,\n props?: ContextRenderProps,\n ) => ReactNode;\n show: () => void;\n}\n\nconst styles = {\n container: css({\n bg: 'bg',\n borderRadius: 'md',\n boxShadow: 'lg',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'border',\n }),\n content: css({\n p: '3',\n }),\n margin: {\n above: css({mb: '1'}),\n below: css({mt: '1'}),\n start: css({mr: '1'}),\n end: css({ml: '1'}),\n },\n} as const;\n\nexport function useHoverCard({\n placement = 'above',\n alignment = 'center',\n delay = 300,\n hideDelay = 200,\n focusTrigger = 'auto',\n isEnabled = true,\n onShow,\n onHide,\n}: UseHoverCardOptions = {}): UseHoverCardReturn {\n const isHoveringContentRef = useRef(false);\n const isEscapeDismissingRef = useRef(false);\n\n const hoverLayer = useHoverLayer({\n delay,\n focusTrigger,\n hideDelay,\n isEnabled,\n onFocusIn: () => {\n if (isEscapeDismissingRef.current) {\n isEscapeDismissingRef.current = false;\n return false;\n }\n\n return true;\n },\n onFocusOut: event => {\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n const popoverElement = document.getElementById(hoverLayer.describedBy);\n\n return !popoverElement?.contains(relatedTarget);\n },\n onHide,\n onShow,\n onTriggerEscape: event => {\n event.stopPropagation();\n hoverLayer.clearTimeouts();\n hoverLayer.hide();\n },\n shouldHide: () => !isHoveringContentRef.current,\n });\n\n const {clearTimeouts, interactionRef, layer, ref, scheduleHide, triggerRef} =\n hoverLayer;\n\n const handleContentBlur = useCallback(\n (event: ReactFocusEvent<HTMLElement>) => {\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n if (\n event.currentTarget.contains(relatedTarget) ||\n triggerRef.current?.contains(relatedTarget)\n ) {\n return;\n }\n\n scheduleHide();\n },\n [scheduleHide, triggerRef],\n );\n\n const renderHoverCard = useCallback(\n (children: ReactNode, props?: ContextRenderProps): ReactNode => {\n const renderPlacement = props?.placement ?? placement;\n\n return layer.render(\n // eslint-disable-next-line jsx-a11y-x/no-static-element-interactions\n <div\n className={styles.content}\n onBlur={handleContentBlur}\n onKeyDown={event => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n isEscapeDismissingRef.current = true;\n clearTimeouts();\n hoverLayer.hide();\n triggerRef.current?.focus();\n }\n }}\n onMouseEnter={() => {\n isHoveringContentRef.current = true;\n clearTimeouts();\n }}\n onMouseLeave={() => {\n isHoveringContentRef.current = false;\n scheduleHide();\n }}>\n {children}\n </div>,\n {\n placement: renderPlacement,\n alignment: props?.alignment ?? alignment,\n className: cx(\n styles.container,\n styles.margin[renderPlacement],\n props?.className,\n ),\n role: props?.role,\n style: props?.style,\n },\n );\n },\n [\n alignment,\n clearTimeouts,\n handleContentBlur,\n hoverLayer,\n layer,\n placement,\n scheduleHide,\n triggerRef,\n ],\n );\n\n return useMemo(\n () => ({\n anchorId: layer.anchorId,\n describedBy: layer.id,\n hide: hoverLayer.hide,\n interactionRef,\n positionRef: layer.ref,\n ref,\n renderHoverCard,\n show: hoverLayer.show,\n }),\n [\n hoverLayer.hide,\n hoverLayer.show,\n interactionRef,\n layer.anchorId,\n layer.id,\n layer.ref,\n ref,\n renderHoverCard,\n ],\n );\n}\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {\n useHoverCard,\n type HoverCardFocusTrigger,\n} from 'components/HoverCard/useHoverCard';\nimport {HoverLayerTrigger} from 'internal/HoverLayerTrigger';\nimport type {LayerAlignment, LayerPlacement} from 'internal/useLayer';\n\nexport type {HoverCardFocusTrigger} from 'components/HoverCard/useHoverCard';\n\nexport interface HoverCardProps {\n /**\n * Alignment along the placement axis.\n * @default 'center'\n */\n alignment?: LayerAlignment;\n /**\n * Trigger content.\n */\n children: ReactNode;\n /**\n * Additional class names applied to the trigger wrapper for text triggers.\n */\n className?: string;\n /**\n * Content shown in the floating hover card.\n */\n content: ReactNode;\n /**\n * Test ID applied to the trigger wrapper for text triggers.\n */\n 'data-testid'?: string;\n /**\n * Delay before opening on hover, in milliseconds.\n * @default 300\n */\n delay?: number;\n /**\n * Controls focus-trigger behavior.\n * @default 'auto'\n */\n focusTrigger?: HoverCardFocusTrigger;\n /**\n * Whether to visually underline text triggers.\n * @default 'auto'\n */\n hasHoverIndication?: 'auto' | boolean;\n /**\n * Delay before closing after hover/focus leaves, in milliseconds.\n * @default 200\n */\n hideDelay?: number;\n /**\n * Whether hover/focus interactions are enabled.\n * @default true\n */\n isEnabled?: boolean;\n /**\n * Position relative to the trigger.\n * @default 'above'\n */\n placement?: LayerPlacement;\n /**\n * Ref forwarded to the text trigger wrapper.\n */\n ref?: Ref<HTMLSpanElement>;\n /**\n * Inline styles applied to the text trigger wrapper.\n */\n style?: CSSProperties;\n}\n\n/**\n * A floating card that appears on hover or focus of a trigger element.\n */\nexport function HoverCard({\n children,\n content,\n placement = 'above',\n alignment = 'center',\n delay = 300,\n hideDelay = 200,\n focusTrigger = 'auto',\n isEnabled = true,\n hasHoverIndication = 'auto',\n className,\n style,\n ref,\n 'data-testid': dataTestId,\n}: HoverCardProps): React.JSX.Element {\n const hoverCard = useHoverCard({\n alignment,\n delay,\n focusTrigger,\n hideDelay,\n isEnabled,\n placement,\n });\n\n return (\n <HoverLayerTrigger\n className={className}\n data-testid={dataTestId}\n describedBy={hoverCard.describedBy}\n hasHoverIndication={hasHoverIndication}\n layer={hoverCard.renderHoverCard(content)}\n shouldForwardNonTextWrapperProps={false}\n style={style}\n triggerRef={hoverCard.ref}\n wrapperRef={ref}>\n {children}\n </HoverLayerTrigger>\n );\n}\n\nHoverCard.displayName = 'HoverCard';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/SideNav/SideNav.recipe.ts","../src/components/SideNav/SideNavContext.ts","../src/components/SideNav/internal/SideNavCollapseButton.tsx","../src/components/SideNav/SideNav.tsx","../src/components/SideNav/SideNavHeading.tsx","../src/components/SideNav/SideNavItem.recipe.ts","../src/components/SideNav/SideNavItem.tsx","../src/components/SideNav/SideNavSection.tsx"],"names":["styles","jsx","jsxs","useState","useCallback","Fragment","useId"],"mappings":"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","file":"chunk-DZZEJY3J.js","sourcesContent":["import {cva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const sideNavRecipe = cva({\n base: {\n display: 'flex',\n flexDirection: 'column',\n h: '100%',\n w: '260px',\n bg: 'inherit',\n overflow: 'hidden',\n },\n variants: {\n isCollapsed: {\n true: {\n w: '12',\n },\n false: {},\n },\n mode: {\n default: {},\n topbar: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n h: '12',\n w: '100%',\n },\n },\n },\n defaultVariants: {\n isCollapsed: false,\n mode: 'default',\n },\n});\n\nexport type SideNavVariants = RecipeVariantProps<typeof sideNavRecipe>;\n","import {createContext, use} from 'react';\n\nexport type SideNavRenderMode =\n | 'default'\n | 'topbar'\n | 'drawer'\n | 'drawer-content';\n\nexport interface SideNavCollapseState {\n isCollapsed: boolean;\n isCollapsible: boolean;\n toggle: () => void;\n}\n\nexport const SideNavRenderContext = createContext<SideNavRenderMode>('default');\nSideNavRenderContext.displayName = 'SideNavRenderContext';\nexport const SideNavCollapseContext = createContext<SideNavCollapseState>({\n isCollapsed: false,\n isCollapsible: false,\n toggle: () => {},\n});\nSideNavCollapseContext.displayName = 'SideNavCollapseContext';\n\nexport function useSideNavRenderMode(): SideNavRenderMode {\n return use(SideNavRenderContext);\n}\n\nexport function useSideNavCollapse(): SideNavCollapseState {\n return use(SideNavCollapseContext);\n}\n","import {ChevronLeft, ChevronRight} from 'lucide-react';\nimport {Button} from 'components/Button';\nimport {useSideNavCollapse} from 'components/SideNav/SideNavContext';\nimport {css} from 'styled-system/css';\n\nconst styles = {\n expanded: css({\n ms: '-2',\n }),\n};\n\n/**\n * Toggle button for collapsing and expanding the SideNav.\n * Reads collapse state from context when placed inside a SideNav.\n */\nexport function SideNavCollapseButton(): React.JSX.Element | null {\n const {isCollapsed, isCollapsible, toggle} = useSideNavCollapse();\n\n if (!isCollapsible) {\n return null;\n }\n\n const tooltipLabel = isCollapsed ? 'Expand sidebar' : 'Collapse sidebar';\n\n return (\n <Button\n className={isCollapsed ? undefined : styles.expanded}\n icon={isCollapsed ? ChevronRight : ChevronLeft}\n isIconOnly\n label={tooltipLabel}\n onClick={toggle}\n size=\"sm\"\n tooltip={tooltipLabel}\n variant=\"ghost\"\n />\n );\n}\n\nSideNavCollapseButton.displayName = 'SideNavCollapseButton';\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useCallback, useMemo, useState} from 'react';\nimport {sideNavRecipe} from 'components/SideNav/SideNav.recipe';\nimport {\n SideNavCollapseContext,\n useSideNavRenderMode,\n} from 'components/SideNav/SideNavContext';\nimport {SideNavCollapseButton} from 'components/SideNav/internal/SideNavCollapseButton';\nimport {MobileNav} from 'internal/MobileNav';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nexport interface SideNavProps {\n /**\n * Navigation item children rendered in the scrollable area.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the nav element.\n */\n className?: string;\n /**\n * Test ID applied to the nav element.\n */\n 'data-testid'?: string;\n /**\n * Content rendered in the sticky bottom section.\n */\n footer?: ReactNode;\n /**\n * Icon actions rendered alongside the footer.\n */\n footerIcons?: ReactNode;\n /**\n * Content rendered at the top of the nav (e.g. a logo or title).\n */\n header?: ReactNode;\n /**\n * Whether the nav can be collapsed to an icon-only toolbar.\n * @default false\n */\n isCollapsible?: boolean;\n /**\n * Ref forwarded to the nav element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Inline styles applied to the nav element.\n */\n style?: CSSProperties;\n /**\n * Non-scrollable content rendered below the header.\n */\n topContent?: ReactNode;\n}\n\nconst styles = {\n stickyTop: css({\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n p: '2',\n gap: '2',\n }),\n scrollable: css({\n flex: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n px: '2',\n }),\n scrollableCollapsed: css({\n flex: 'none',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n }),\n stickyBottom: css({\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n mt: 'auto',\n p: '2',\n gap: '2',\n borderBlockStartWidth: 'default',\n borderBlockStartStyle: 'solid',\n borderBlockStartColor: 'border',\n }),\n footerRow: css({\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n }),\n footerRowCollapsed: css({\n flexDirection: 'column-reverse',\n alignItems: 'center',\n }),\n footerIcons: css({\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n ms: 'auto',\n }),\n footerIconsCollapsed: css({\n flexDirection: 'column',\n alignItems: 'center',\n ms: '0',\n }),\n topbarIcons: css({\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n ms: 'auto',\n }),\n};\n\n/**\n * Vertical side navigation panel with optional collapsing support.\n * Adapts to AppShell render modes (inline, drawer, topbar).\n */\nexport function SideNav({\n children,\n className,\n isCollapsible = false,\n 'data-testid': dataTestId,\n footer,\n footerIcons,\n header,\n ref,\n style,\n topContent,\n}: SideNavProps): React.JSX.Element {\n const renderMode = useSideNavRenderMode();\n const [isCollapsed, setIsCollapsed] = useState(false);\n const toggle = useCallback(() => {\n setIsCollapsed(prev => !prev);\n }, []);\n const collapseContext = useMemo(\n () => ({isCollapsed, isCollapsible, toggle}),\n [isCollapsed, isCollapsible, toggle],\n );\n\n if (renderMode === 'topbar') {\n return (\n <div\n className={cx(sideNavRecipe({mode: 'topbar'}), className)}\n data-testid={dataTestId}\n ref={ref as Ref<HTMLDivElement>}\n style={style}>\n {header}\n <div className={styles.topbarIcons}>{footerIcons}</div>\n </div>\n );\n }\n\n if (renderMode === 'drawer') {\n return (\n <MobileNav\n data-testid={dataTestId}\n header={header}\n ref={ref as Ref<HTMLDialogElement>}>\n {topContent}\n {children}\n {footer}\n {footerIcons}\n </MobileNav>\n );\n }\n\n if (renderMode === 'drawer-content') {\n return (\n <>\n {topContent}\n {children}\n {footer}\n {footerIcons}\n </>\n );\n }\n\n return (\n <SideNavCollapseContext value={collapseContext}>\n <nav\n aria-label=\"Side navigation\"\n className={cx(sideNavRecipe({isCollapsed}), className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n {isReactNode(header) || (!isCollapsed && isReactNode(topContent)) ? (\n <div className={styles.stickyTop}>\n {header}\n {!isCollapsed ? topContent : null}\n </div>\n ) : null}\n <div\n className={cx(\n styles.scrollable,\n isCollapsed && styles.scrollableCollapsed,\n )}>\n {children}\n </div>\n {isReactNode(footer) || isReactNode(footerIcons) || isCollapsible ? (\n <div className={styles.stickyBottom}>\n {footer}\n <div\n className={cx(\n styles.footerRow,\n isCollapsed && styles.footerRowCollapsed,\n )}>\n {isCollapsible ? <SideNavCollapseButton /> : null}\n {isReactNode(footerIcons) ? (\n <div\n className={cx(\n styles.footerIcons,\n isCollapsed && styles.footerIconsCollapsed,\n )}>\n {footerIcons}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n </nav>\n </SideNavCollapseContext>\n );\n}\n\nSideNav.displayName = 'SideNav';\n","/* eslint-disable @eslint-react/static-components -- intentional polymorphism via as prop */\n\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useLinkComponent} from 'components/Link';\nimport type {LinkComponent} from 'components/Link';\nimport {useSideNavCollapse} from 'components/SideNav/SideNavContext';\nimport {Text} from 'components/Text';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nexport interface SideNavHeadingProps {\n as?: LinkComponent;\n className?: string;\n 'data-testid'?: string;\n headerEndContent?: ReactNode;\n heading?: string;\n headingHref?: string;\n href?: string;\n logo?: ReactNode;\n ref?: Ref<HTMLElement>;\n style?: CSSProperties;\n subheading?: string;\n superheading?: string;\n}\n\nconst styles = {\n root: css({\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n minH: '8',\n px: '2',\n color: 'fg',\n textDecoration: 'none',\n }),\n collapsed: css({\n justifyContent: 'center',\n px: 0,\n }),\n logo: css({\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n }),\n text: css({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minW: 0,\n }),\n endContent: css({\n ms: 'auto',\n flexShrink: 0,\n }),\n};\n\nexport function SideNavHeading({\n as,\n className,\n 'data-testid': dataTestId,\n headerEndContent,\n heading,\n headingHref,\n href,\n logo,\n ref,\n style,\n subheading,\n superheading,\n}: SideNavHeadingProps): React.JSX.Element | null {\n const LinkComponent = useLinkComponent(as);\n const {isCollapsed} = useSideNavCollapse();\n const resolvedHref = headingHref ?? href;\n const Element = resolvedHref != null ? LinkComponent : 'div';\n\n if (isCollapsed && !isReactNode(logo)) {\n return null;\n }\n\n return (\n <Element\n aria-label={isCollapsed && resolvedHref != null ? heading : undefined}\n className={cx(styles.root, isCollapsed && styles.collapsed, className)}\n data-testid={dataTestId}\n href={resolvedHref}\n ref={ref as Ref<HTMLAnchorElement & HTMLDivElement>}\n style={style}\n to={Element === 'a' ? undefined : resolvedHref}>\n {isReactNode(logo) ? <span className={styles.logo}>{logo}</span> : null}\n {!isCollapsed ? (\n <span className={styles.text}>\n {superheading != null ? (\n <Text color=\"secondary\" type=\"supporting\">\n {superheading}\n </Text>\n ) : null}\n {heading != null ? (\n <Text type=\"large\" weight=\"semibold\">\n {heading}\n </Text>\n ) : null}\n {subheading != null ? (\n <Text color=\"secondary\" type=\"supporting\">\n {subheading}\n </Text>\n ) : null}\n </span>\n ) : null}\n {!isCollapsed && isReactNode(headerEndContent) ? (\n <span className={styles.endContent}>{headerEndContent}</span>\n ) : null}\n </Element>\n );\n}\n\nSideNavHeading.displayName = 'SideNavHeading';\n","import {sva, type RecipeVariantProps} from 'styled-system/css';\n\n// Shared text/layout styling for the expanded-row label. `item` is the row\n// itself (leaf and split-action branches) and additionally carries the selected\n// highlight; `toggleLabel` is the inner content of the toggle-row button, which\n// stays base-only because the highlight lives on the wrapping button instead.\nconst expandedLabelBase = {\n color: 'fg.muted',\n fontSize: 'sm',\n fontWeight: 'medium',\n minH: '8',\n py: '0.5',\n // Override Item's default `bg.subtle` hover, which is invisible when the\n // SideNav sits on the AppShell's `bg.subtle` surface. Match TopNavItem's\n // darker `bg.hover` so the hover is visible in both navs.\n _hover: {bg: 'bg.hover'},\n} as const;\n\nexport const sideNavItemRecipe = sva({\n slots: [\n 'item',\n 'icon',\n 'collapsed',\n 'toggleRow',\n 'toggleLabel',\n 'toggleButton',\n 'chevron',\n 'childrenContainer',\n 'childrenInner',\n ],\n base: {\n item: expandedLabelBase,\n toggleLabel: expandedLabelBase,\n icon: {\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: 'var(--silver-sizes-icon-md)',\n },\n collapsed: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n w: '10',\n minH: '8',\n px: 0,\n py: '1.5',\n borderRadius: 'md',\n color: 'fg.muted',\n textDecoration: 'none',\n bg: 'transparent',\n borderWidth: 0,\n cursor: 'pointer',\n _hover: {bg: 'bg.hover'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n toggleRow: {\n display: 'flex',\n w: '100%',\n cursor: 'pointer',\n borderRadius: 'md',\n _hover: {bg: 'bg.hover'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n toggleButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n w: '7',\n h: '7',\n borderRadius: 'md',\n cursor: 'pointer',\n color: 'fg.muted',\n _hover: {bg: 'bg.hover'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n transitionProperty: 'transform',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n },\n childrenContainer: {\n display: 'grid',\n gridTemplateRows: '1fr',\n transitionProperty: 'grid-template-rows',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n },\n childrenInner: {\n overflow: 'hidden',\n ps: '6',\n },\n },\n variants: {\n isSelected: {\n true: {\n item: {bg: 'bg.hover', color: 'fg', fontWeight: 'semibold'},\n toggleRow: {bg: 'bg.hover', color: 'fg', fontWeight: 'semibold'},\n collapsed: {bg: 'bg.hover', color: 'fg'},\n },\n false: {},\n },\n isDisabled: {\n true: {\n collapsed: {\n opacity: 0.5,\n cursor: 'not-allowed',\n pointerEvents: 'none',\n },\n toggleRow: {\n opacity: 0.5,\n cursor: 'not-allowed',\n pointerEvents: 'none',\n },\n },\n false: {},\n },\n isExpanded: {\n true: {\n chevron: {transform: 'rotate(180deg)'},\n },\n false: {\n childrenContainer: {gridTemplateRows: '0fr'},\n },\n },\n },\n defaultVariants: {\n isSelected: false,\n isDisabled: false,\n isExpanded: true,\n },\n});\n\nexport type SideNavItemVariants = RecipeVariantProps<typeof sideNavItemRecipe>;\n","/* eslint-disable @eslint-react/static-components -- intentional polymorphism via as prop */\n\nimport {ChevronDown} from 'lucide-react';\nimport type {CSSProperties, MouseEventHandler, ReactNode, Ref} from 'react';\nimport {useCallback, useId, useState} from 'react';\nimport {useAppShellMobile} from 'components/AppShell/AppShellMobileContext';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Item} from 'components/Item';\nimport {useLinkComponent} from 'components/Link';\nimport type {LinkComponent} from 'components/Link';\nimport {useSideNavCollapse} from 'components/SideNav/SideNavContext';\nimport {sideNavItemRecipe} from 'components/SideNav/SideNavItem.recipe';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\nexport interface SideNavItemProps {\n /**\n * Custom link component used when href is set.\n */\n as?: LinkComponent;\n /**\n * Nested sub-items rendered below this item.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the item.\n */\n className?: string;\n /**\n * Test ID applied to the item.\n */\n 'data-testid'?: string;\n /**\n * Content rendered at the end of the item (e.g. a badge).\n */\n endContent?: ReactNode;\n /**\n * Link destination. When set, the item renders as a link.\n */\n href?: string;\n /**\n * Icon rendered before the label.\n */\n icon?: IconComponent;\n /**\n * Whether the item can expand/collapse its children.\n * @default false\n */\n isCollapsible?: boolean;\n /**\n * Whether the item's children are initially expanded.\n * @default true\n */\n isDefaultExpanded?: boolean;\n /**\n * Whether the item is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether the item is currently selected.\n * @default false\n */\n isSelected?: boolean;\n /**\n * Accessible item label, also used as visible text.\n */\n label: string;\n /**\n * Click handler for the item.\n */\n onClick?: MouseEventHandler<HTMLElement>;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Inline styles applied to the item.\n */\n style?: CSSProperties;\n}\n\n/**\n * A single navigation item inside a SideNav. Renders as a link when\n * `href` is provided, or a button otherwise. Supports nested sub-items\n * via `children` with optional expand/collapse behavior.\n */\nexport function SideNavItem({\n as,\n children,\n className,\n 'data-testid': dataTestId,\n endContent,\n href,\n icon,\n isCollapsible: isItemCollapsible = false,\n isDefaultExpanded = true,\n isDisabled = false,\n isSelected = false,\n label,\n onClick,\n ref,\n style,\n}: SideNavItemProps): React.JSX.Element {\n const LinkComponent = useLinkComponent(as);\n const {closeMobileNav, isMobileNavOpen} = useAppShellMobile();\n const {isCollapsed} = useSideNavCollapse();\n const [isExpanded, setIsExpanded] = useState(isDefaultExpanded);\n const childrenId = useId();\n\n const hasChildren = isReactNode(children);\n const isExpandable = hasChildren && isItemCollapsible;\n const hasPrimaryAction = href != null || onClick != null;\n\n const classes = sideNavItemRecipe({\n isSelected,\n isDisabled,\n // Only expandable items animate their children open/closed and rotate a\n // chevron; non-expandable items keep their children fully shown.\n isExpanded: !isExpandable || isExpanded,\n });\n\n const toggleExpanded = useCallback(() => {\n setIsExpanded(prev => !prev);\n }, []);\n\n const handleClick: MouseEventHandler<HTMLElement> = event => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n // Dismiss the mobile drawer after navigating, but only when it is actually\n // open so non-mobile render modes don't fire a no-op close on every click.\n if (isMobileNavOpen) {\n closeMobileNav();\n }\n };\n\n const iconSlot =\n icon != null ? (\n <span aria-hidden=\"true\" className={classes.icon}>\n <Icon icon={icon} size=\"sm\" />\n </span>\n ) : undefined;\n\n // --- Collapsed sidebar: icon-only rendering ---\n if (isCollapsed) {\n const collapsedClassNames = cx(classes.collapsed, className);\n\n if (href != null && !isDisabled) {\n return (\n <LinkComponent\n aria-current={isSelected ? 'page' : undefined}\n aria-label={label}\n className={collapsedClassNames}\n data-testid={dataTestId}\n href={href}\n onClick={handleClick}\n ref={ref as Ref<HTMLAnchorElement>}\n style={style}\n to={LinkComponent === 'a' ? undefined : href}>\n {iconSlot}\n </LinkComponent>\n );\n }\n\n return (\n <button\n aria-current={isSelected ? 'page' : undefined}\n aria-label={label}\n className={collapsedClassNames}\n data-testid={dataTestId}\n disabled={isDisabled}\n onClick={handleClick}\n ref={ref as Ref<HTMLButtonElement>}\n style={style}\n type=\"button\">\n {iconSlot}\n </button>\n );\n }\n\n // --- Expanded sidebar ---\n\n const chevronSlot = isExpandable ? (\n <span className={classes.chevron}>\n <Icon icon={ChevronDown} size=\"sm\" />\n </span>\n ) : null;\n\n const childrenContainer = isReactNode(children) ? (\n <div className={classes.childrenContainer} id={childrenId} role=\"group\">\n <div className={classes.childrenInner}>{children}</div>\n </div>\n ) : null;\n\n // Collapsible WITHOUT primary action: whole row toggles\n if (isExpandable && !hasPrimaryAction) {\n return (\n <>\n <button\n aria-controls={childrenId}\n aria-expanded={isExpanded}\n className={cx(classes.toggleRow, className)}\n data-testid={dataTestId}\n disabled={isDisabled}\n onClick={toggleExpanded}\n ref={ref as Ref<HTMLButtonElement>}\n style={style}\n type=\"button\">\n <Item\n as=\"span\"\n className={classes.toggleLabel}\n endContent={chevronSlot}\n label={label}\n startContent={iconSlot}\n />\n </button>\n {childrenContainer}\n </>\n );\n }\n\n // Collapsible WITH primary action: split-action (link + chevron)\n if (isExpandable && hasPrimaryAction) {\n return (\n <>\n <Item\n aria-current={isSelected ? 'page' : undefined}\n className={cx(classes.item, className)}\n data-testid={dataTestId}\n endContent={endContent}\n href={isDisabled ? undefined : href}\n isDisabled={isDisabled}\n label={label}\n linkComponent={as}\n onClick={handleClick}\n ref={ref}\n startContent={iconSlot}\n style={style}\n trailingContent={\n <button\n aria-controls={childrenId}\n aria-expanded={isExpanded}\n aria-label={isExpanded ? `Collapse ${label}` : `Expand ${label}`}\n className={classes.toggleButton}\n onClick={toggleExpanded}\n type=\"button\">\n {chevronSlot}\n </button>\n }\n />\n {childrenContainer}\n </>\n );\n }\n\n // Leaf item (no collapsible children): compose Item directly\n return (\n <>\n <Item\n aria-current={isSelected ? 'page' : undefined}\n className={cx(classes.item, className)}\n data-testid={dataTestId}\n endContent={endContent}\n href={isDisabled ? undefined : href}\n isDisabled={isDisabled}\n label={label}\n linkComponent={as}\n onClick={handleClick}\n ref={ref}\n startContent={iconSlot}\n style={style}\n />\n {childrenContainer}\n </>\n );\n}\n\nSideNavItem.displayName = 'SideNavItem';\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useId} from 'react';\nimport {useSideNavCollapse} from 'components/SideNav/SideNavContext';\nimport {Text} from 'components/Text';\nimport {VisuallyHidden} from 'internal';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nexport interface SideNavSectionProps {\n children: ReactNode;\n className?: string;\n 'data-testid'?: string;\n endContent?: ReactNode;\n isHeaderHidden?: boolean;\n ref?: Ref<HTMLDivElement>;\n style?: CSSProperties;\n subtitle?: string;\n title: string;\n}\n\nconst styles = {\n root: css({\n display: 'flex',\n flexDirection: 'column',\n py: '1',\n }),\n rootCollapsed: css({\n py: '0',\n }),\n header: css({\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n px: '2',\n py: '1',\n }),\n titleContainer: css({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minW: 0,\n }),\n endContent: css({\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n }),\n items: css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5',\n }),\n};\n\nexport function SideNavSection({\n children,\n className,\n 'data-testid': dataTestId,\n endContent,\n isHeaderHidden = false,\n ref,\n style,\n subtitle,\n title,\n}: SideNavSectionProps): React.JSX.Element {\n const {isCollapsed} = useSideNavCollapse();\n const id = useId();\n const titleId = `${id}-title`;\n const shouldHideHeader = isHeaderHidden || isCollapsed;\n const header = (\n <div className={styles.header}>\n <span className={styles.titleContainer}>\n <Text\n as=\"span\"\n color=\"secondary\"\n id={titleId}\n type=\"supporting\"\n weight=\"semibold\">\n {title}\n </Text>\n {subtitle != null ? (\n <Text as=\"span\" color=\"secondary\" type=\"supporting\">\n {subtitle}\n </Text>\n ) : null}\n </span>\n {isReactNode(endContent) ? (\n <span className={styles.endContent}>{endContent}</span>\n ) : null}\n </div>\n );\n\n return (\n <div\n aria-labelledby={titleId}\n className={cx(\n styles.root,\n isCollapsed && styles.rootCollapsed,\n className,\n )}\n data-testid={dataTestId}\n ref={ref}\n role=\"group\"\n style={style}>\n {shouldHideHeader ? <VisuallyHidden>{header}</VisuallyHidden> : header}\n <div className={styles.items}>{children}</div>\n </div>\n );\n}\n\nSideNavSection.displayName = 'SideNavSection';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/internal/useLatest.ts","../src/internal/useLayer.tsx","../src/internal/useHoverLayer.ts","../src/internal/useIsomorphicLayoutEffect.ts","../src/internal/HoverLayerTrigger.tsx"],"names":["useRef","useCallback","useMemo","useEffect","styles"],"mappings":"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","file":"chunk-EBJPUXFQ.js","sourcesContent":["import {useRef} from 'react';\n\nconst useLatest = <T>(value: T): {readonly current: T} => {\n const ref = useRef(value);\n // eslint-disable-next-line @eslint-react/refs -- intentional latest-value ref kept in sync during render\n ref.current = value;\n return ref;\n};\n\nexport default useLatest;\n","import {\n createElement,\n useCallback,\n useId,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n type RefCallback,\n} from 'react';\nimport {cx} from 'internal/cx';\nimport {css} from 'styled-system/css';\n\nexport type LayerPlacement = 'above' | 'below' | 'start' | 'end';\nexport type LayerAlignment = 'start' | 'center' | 'end';\n\nexport interface ContextRenderProps {\n /**\n * How the layer aligns along the edge it is placed against. Defaults to\n * `'center'`.\n */\n alignment?: LayerAlignment;\n /**\n * Additional class name merged onto the layer element.\n */\n className?: string;\n /**\n * Which side of the anchor the layer is placed on. Defaults to `'above'`.\n */\n placement?: LayerPlacement;\n /**\n * ARIA role applied to the layer element.\n */\n role?: string;\n /**\n * Additional inline styles merged onto the layer element.\n */\n style?: React.CSSProperties;\n}\n\ninterface LayerOptions {\n /**\n * Id applied to the layer element. Falls back to a generated id. Supply this\n * when another element needs a stable `aria-controls` reference to the layer.\n */\n id?: string;\n /**\n * When `true`, the layer can be dismissed by clicking outside or pressing\n * Escape (the native `auto` popover behavior). When `false`, it uses `manual`\n * mode and must be hidden programmatically. Defaults to `false`.\n */\n isDismissable?: boolean;\n /**\n * Called after the layer is hidden, including via light dismiss.\n */\n onHide?: () => void;\n /**\n * Called after the layer is shown.\n */\n onShow?: () => void;\n}\n\ntype PopoverValue = 'auto' | 'manual' | 'hint' | '';\n\ntype LayerElementProps = React.HTMLAttributes<HTMLDivElement> & {\n popover: PopoverValue;\n ref: RefCallback<HTMLElement>;\n};\n\nexport interface LayerReturn {\n /**\n * CSS anchor name tying the layer to the trigger for positioning.\n */\n anchorId: string;\n /**\n * Hides the layer.\n */\n hide: () => void;\n /**\n * Id of the layer element, matching the value to use for `aria-controls`.\n */\n id: string;\n /**\n * Whether the layer is currently open.\n */\n isOpen: boolean;\n /**\n * Ref callback to attach to the trigger element for anchor positioning.\n */\n ref: RefCallback<HTMLElement>;\n /**\n * Renders the given children inside the layer element.\n */\n render: (children: ReactNode, props?: ContextRenderProps) => ReactNode;\n /**\n * Shows the layer.\n */\n show: () => void;\n}\n\nconst styles = {\n layer: css({\n m: 0,\n p: 0,\n borderWidth: 0,\n borderStyle: 'none',\n borderColor: 'transparent',\n overflow: 'visible',\n bg: 'transparent',\n }),\n};\n\nfunction getPositionArea(\n placement: LayerPlacement = 'above',\n alignment: LayerAlignment = 'center',\n): string {\n const placementMap: Record<LayerPlacement, string> = {\n above: 'top',\n below: 'bottom',\n start: 'left',\n end: 'right',\n };\n\n const cssPlacement = placementMap[placement];\n\n if (placement === 'above' || placement === 'below') {\n if (alignment === 'start') {\n return `${cssPlacement} span-right`;\n }\n if (alignment === 'end') {\n return `${cssPlacement} span-left`;\n }\n return cssPlacement;\n }\n\n if (alignment === 'start') {\n return `${cssPlacement} span-bottom`;\n }\n if (alignment === 'end') {\n return `${cssPlacement} span-top`;\n }\n return `${cssPlacement} center`;\n}\n\nexport function useLayer({\n onShow,\n onHide,\n isDismissable = false,\n id: providedId,\n}: LayerOptions = {}): LayerReturn {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const anchorId = `--silver-layer-${id.replace(/:/g, '')}`;\n const [isOpen, setIsOpen] = useState(false);\n const popoverRef = useRef<HTMLElement | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n const isOpenRef = useRef(false);\n\n const show = useCallback(() => {\n if (popoverRef.current == null || isOpenRef.current) {\n return;\n }\n\n popoverRef.current.showPopover();\n isOpenRef.current = true;\n setIsOpen(true);\n onShow?.();\n }, [onShow]);\n\n const hide = useCallback(() => {\n if (!isOpenRef.current) {\n return;\n }\n\n popoverRef.current?.hidePopover();\n isOpenRef.current = false;\n setIsOpen(false);\n onHide?.();\n }, [onHide]);\n\n const ref: RefCallback<HTMLElement> = useCallback(\n element => {\n if (triggerRef.current != null) {\n (\n triggerRef.current.style as unknown as Record<string, string>\n ).anchorName = '';\n }\n\n if (element != null) {\n (element.style as unknown as Record<string, string>).anchorName =\n anchorId;\n }\n\n triggerRef.current = element;\n },\n [anchorId],\n );\n\n const handleToggle = useCallback(\n (event: Event) => {\n const toggleEvent = event as ToggleEvent;\n if (toggleEvent.newState === 'closed' && isOpenRef.current) {\n isOpenRef.current = false;\n setIsOpen(false);\n onHide?.();\n }\n },\n [onHide],\n );\n\n const popoverRefCallback = useCallback(\n (element: HTMLElement | null) => {\n if (popoverRef.current != null) {\n popoverRef.current.removeEventListener('toggle', handleToggle);\n }\n\n popoverRef.current = element;\n\n if (element != null) {\n element.addEventListener('toggle', handleToggle);\n }\n },\n [handleToggle],\n );\n\n const render = useCallback(\n (children: ReactNode, props?: ContextRenderProps) => {\n const placement = props?.placement ?? 'above';\n const alignment = props?.alignment ?? 'center';\n const anchorStyle: React.CSSProperties = {\n border: 'none',\n positionAnchor: anchorId,\n positionArea: getPositionArea(placement, alignment),\n positionTryFallbacks: 'flip-block, flip-inline, flip-block flip-inline',\n };\n\n const layerProps: LayerElementProps = {\n ref: popoverRefCallback,\n id,\n role: props?.role,\n popover: isDismissable ? 'auto' : 'manual',\n className: cx(styles.layer, props?.className),\n style: {...anchorStyle, ...props?.style},\n };\n\n return createElement('div', layerProps, children);\n },\n [anchorId, isDismissable, id, popoverRefCallback],\n );\n\n return useMemo(\n () => ({\n ref,\n anchorId,\n show,\n hide,\n isOpen,\n id,\n render,\n }),\n [ref, anchorId, show, hide, isOpen, id, render],\n );\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n type RefCallback,\n type RefObject,\n} from 'react';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport useLatest from 'internal/useLatest';\nimport {useLayer, type LayerReturn} from 'internal/useLayer';\n\nexport type HoverLayerFocusTrigger = 'auto' | 'always' | 'never';\n\nexport interface UseHoverLayerOptions {\n delay?: number;\n focusTrigger?: HoverLayerFocusTrigger;\n hideDelay?: number;\n isEnabled?: boolean;\n onFocusIn?: (event: FocusEvent) => boolean;\n onFocusOut?: (event: FocusEvent) => boolean;\n onHide?: () => void;\n onShow?: () => void;\n onTriggerEscape?: (event: KeyboardEvent) => void;\n shouldHide?: () => boolean;\n}\n\nexport interface UseHoverLayerReturn {\n anchorId: string;\n clearTimeouts: () => void;\n describedBy: string;\n hide: () => void;\n interactionRef: RefCallback<HTMLElement>;\n layer: LayerReturn;\n positionRef: RefCallback<HTMLElement>;\n ref: RefCallback<HTMLElement>;\n scheduleHide: () => void;\n show: () => void;\n triggerRef: RefObject<HTMLElement | null>;\n}\n\nfunction isFocusable(element: HTMLElement): boolean {\n if (element.hasAttribute('tabindex')) {\n return element.tabIndex >= 0;\n }\n\n if (\n ['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'].includes(element.tagName)\n ) {\n return !(element as HTMLButtonElement).disabled;\n }\n\n return element.isContentEditable;\n}\n\nfunction isTouchDevice(): boolean {\n return (\n typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(hover: none)').matches\n );\n}\n\nexport function useHoverLayer({\n delay = 200,\n focusTrigger = 'auto',\n hideDelay = 0,\n isEnabled = true,\n onFocusIn,\n onFocusOut,\n onHide,\n onShow,\n onTriggerEscape,\n shouldHide,\n}: UseHoverLayerOptions = {}): UseHoverLayerReturn {\n const layer = useLayer({onShow, onHide});\n const showTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const hideTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const clearTimeouts = useCallback(() => {\n if (showTimeoutRef.current != null) {\n clearTimeout(showTimeoutRef.current);\n showTimeoutRef.current = null;\n }\n\n if (hideTimeoutRef.current != null) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n }, []);\n\n const scheduleShow = useCallback(() => {\n if (!isEnabled) {\n return;\n }\n\n clearTimeouts();\n showTimeoutRef.current = setTimeout(() => layer.show(), delay);\n }, [clearTimeouts, delay, isEnabled, layer]);\n\n const hideIfAllowed = useCallback(() => {\n if (shouldHide?.() === false) {\n return;\n }\n\n layer.hide();\n }, [layer, shouldHide]);\n\n const scheduleHide = useCallback(() => {\n clearTimeouts();\n\n if (hideDelay > 0) {\n hideTimeoutRef.current = setTimeout(hideIfAllowed, hideDelay);\n return;\n }\n\n hideIfAllowed();\n }, [clearTimeouts, hideDelay, hideIfAllowed]);\n\n const handleMouseEnter = useCallback(() => {\n if (isTouchDevice()) {\n return;\n }\n\n scheduleShow();\n }, [scheduleShow]);\n\n const handleMouseLeave = useCallback(() => {\n scheduleHide();\n }, [scheduleHide]);\n\n const handleFocusIn = useCallback(\n (event: FocusEvent) => {\n if (!isEnabled || onFocusIn?.(event) === false) {\n return;\n }\n\n clearTimeouts();\n layer.show();\n },\n [clearTimeouts, isEnabled, layer, onFocusIn],\n );\n\n const handleFocusOut = useCallback(\n (event: FocusEvent) => {\n if (onFocusOut?.(event) === false) {\n return;\n }\n\n scheduleHide();\n },\n [onFocusOut, scheduleHide],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Escape' && layer.isOpen) {\n onTriggerEscape?.(event);\n }\n },\n [layer.isOpen, onTriggerEscape],\n );\n\n const handlersRef = useLatest({\n focusIn: handleFocusIn,\n focusOut: handleFocusOut,\n keyDown: handleKeyDown,\n mouseEnter: handleMouseEnter,\n mouseLeave: handleMouseLeave,\n });\n\n const stableMouseEnter = useCallback(() => {\n handlersRef.current.mouseEnter();\n }, []);\n const stableMouseLeave = useCallback(() => {\n handlersRef.current.mouseLeave();\n }, []);\n const stableFocusIn = useCallback((event: Event) => {\n handlersRef.current.focusIn(event as FocusEvent);\n }, []);\n const stableFocusOut = useCallback((event: Event) => {\n handlersRef.current.focusOut(event as FocusEvent);\n }, []);\n const stableKeyDown = useCallback((event: Event) => {\n handlersRef.current.keyDown(event as KeyboardEvent);\n }, []);\n\n const hasTriggerEscape = onTriggerEscape != null;\n\n const interactionRef: RefCallback<HTMLElement> = useCallback(\n element => {\n if (triggerRef.current != null) {\n triggerRef.current.removeEventListener('mouseenter', stableMouseEnter);\n triggerRef.current.removeEventListener('mouseleave', stableMouseLeave);\n triggerRef.current.removeEventListener('focusin', stableFocusIn);\n triggerRef.current.removeEventListener('focusout', stableFocusOut);\n triggerRef.current.removeEventListener('keydown', stableKeyDown);\n }\n\n if (element != null) {\n element.addEventListener('mouseenter', stableMouseEnter);\n element.addEventListener('mouseleave', stableMouseLeave);\n\n const shouldAttachFocus =\n focusTrigger === 'always' ||\n (focusTrigger === 'auto' && isFocusable(element));\n\n if (shouldAttachFocus) {\n element.addEventListener('focusin', stableFocusIn);\n element.addEventListener('focusout', stableFocusOut);\n }\n\n if (hasTriggerEscape) {\n element.addEventListener('keydown', stableKeyDown);\n }\n }\n\n triggerRef.current = element;\n },\n [\n focusTrigger,\n hasTriggerEscape,\n stableFocusIn,\n stableFocusOut,\n stableKeyDown,\n stableMouseEnter,\n stableMouseLeave,\n ],\n );\n\n const ref = useMemo(\n () => mergeRefs(layer.ref, interactionRef),\n [layer.ref, interactionRef],\n );\n\n useEffect(() => {\n return () => clearTimeouts();\n }, [clearTimeouts]);\n\n return useMemo(\n () => ({\n anchorId: layer.anchorId,\n clearTimeouts,\n describedBy: layer.id,\n hide: layer.hide,\n interactionRef,\n layer,\n positionRef: layer.ref,\n ref,\n scheduleHide,\n show: layer.show,\n triggerRef,\n }),\n [clearTimeouts, interactionRef, layer, ref, scheduleHide],\n );\n}\n","import {useEffect, useLayoutEffect} from 'react';\n\nexport const useIsomorphicLayoutEffect =\n typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n","import {\n useRef,\n type CSSProperties,\n type ReactNode,\n type Ref,\n type RefCallback,\n} from 'react';\nimport {cx} from 'internal/cx';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport {useIsomorphicLayoutEffect} from 'internal/useIsomorphicLayoutEffect';\nimport {css} from 'styled-system/css';\n\nexport type HoverLayerTriggerIndication = 'auto' | boolean;\n\nexport interface HoverLayerTriggerProps {\n children: ReactNode;\n className?: string;\n 'data-testid'?: string;\n describedBy: string;\n hasHoverIndication?: HoverLayerTriggerIndication;\n layer: ReactNode;\n nonTextWrapperElement?: 'div' | 'span';\n shouldForwardNonTextWrapperProps?: boolean;\n style?: CSSProperties;\n triggerRef: RefCallback<HTMLElement>;\n wrapperRef?: Ref<HTMLElement>;\n}\n\nconst styles = {\n wrapperContents: css({\n display: 'contents',\n }),\n wrapperInline: css({\n display: 'inline',\n }),\n hoverIndication: css({\n textDecorationLine: 'underline',\n textDecorationStyle: 'dashed',\n textDecorationColor: 'fg.muted',\n textUnderlineOffset: '2px',\n }),\n} as const;\n\nfunction isTextOnly(children: ReactNode): boolean {\n return typeof children === 'string' || typeof children === 'number';\n}\n\nfunction mergeIds(...ids: (string | undefined | null)[]): string | undefined {\n const filtered = ids.filter(Boolean);\n return filtered.length > 0 ? filtered.join(' ') : undefined;\n}\n\nexport function HoverLayerTrigger({\n children,\n className,\n 'data-testid': dataTestId,\n describedBy,\n hasHoverIndication = 'auto',\n layer,\n nonTextWrapperElement = 'span',\n shouldForwardNonTextWrapperProps = true,\n style,\n triggerRef,\n wrapperRef,\n}: HoverLayerTriggerProps): React.JSX.Element {\n const ownWrapperRef = useRef<HTMLDivElement | HTMLSpanElement>(null);\n const textOnly = isTextOnly(children);\n const showHoverIndication =\n hasHoverIndication === true || (hasHoverIndication === 'auto' && textOnly);\n\n useIsomorphicLayoutEffect(() => {\n if (textOnly) {\n return;\n }\n\n const firstChild = ownWrapperRef.current?.firstElementChild;\n if (!(firstChild instanceof HTMLElement)) {\n return;\n }\n\n triggerRef(firstChild);\n const existingDescribedBy = firstChild.getAttribute('aria-describedby');\n firstChild.setAttribute(\n 'aria-describedby',\n mergeIds(existingDescribedBy, describedBy) ?? '',\n );\n\n return () => {\n triggerRef(null);\n if (existingDescribedBy != null) {\n firstChild.setAttribute('aria-describedby', existingDescribedBy);\n return;\n }\n\n firstChild.removeAttribute('aria-describedby');\n };\n }, [describedBy, textOnly, triggerRef]);\n\n if (textOnly) {\n return (\n <>\n <span\n aria-describedby={describedBy}\n className={cx(\n styles.wrapperInline,\n showHoverIndication ? styles.hoverIndication : undefined,\n className,\n )}\n data-testid={dataTestId}\n ref={mergeRefs(triggerRef as Ref<HTMLSpanElement>, wrapperRef)}\n style={style}\n tabIndex={0}>\n {children}\n </span>\n {layer}\n </>\n );\n }\n\n const nonTextWrapperRef = shouldForwardNonTextWrapperProps\n ? mergeRefs(ownWrapperRef, wrapperRef)\n : ownWrapperRef;\n const nonTextWrapperClassName = cx(\n styles.wrapperContents,\n shouldForwardNonTextWrapperProps ? className : undefined,\n );\n const nonTextWrapperTestId = shouldForwardNonTextWrapperProps\n ? dataTestId\n : undefined;\n const nonTextWrapperStyle = shouldForwardNonTextWrapperProps\n ? style\n : undefined;\n const wrappedChildren =\n nonTextWrapperElement === 'div' ? (\n <div\n className={nonTextWrapperClassName}\n data-testid={nonTextWrapperTestId}\n ref={nonTextWrapperRef as Ref<HTMLDivElement>}\n style={nonTextWrapperStyle}>\n {children}\n </div>\n ) : (\n <span\n className={nonTextWrapperClassName}\n data-testid={nonTextWrapperTestId}\n ref={nonTextWrapperRef}\n style={nonTextWrapperStyle}>\n {children}\n </span>\n );\n\n return (\n <>\n {wrappedChildren}\n {layer}\n </>\n );\n}\n"]}