silver-ui 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/dist/{chunk-4GT65SRC.cjs → chunk-263EUXFI.cjs} +9 -9
  2. package/dist/{chunk-4GT65SRC.cjs.map → chunk-263EUXFI.cjs.map} +1 -1
  3. package/dist/{chunk-PZBY3JI7.js → chunk-2EGYYWPB.js} +3 -3
  4. package/dist/{chunk-PZBY3JI7.js.map → chunk-2EGYYWPB.js.map} +1 -1
  5. package/dist/{chunk-2FR4VA32.js → chunk-3CV6IEEY.js} +16 -16
  6. package/dist/{chunk-2FR4VA32.js.map → chunk-3CV6IEEY.js.map} +1 -1
  7. package/dist/{chunk-MNQFCWT7.js → chunk-3TPFJ7NS.js} +7 -7
  8. package/dist/{chunk-MNQFCWT7.js.map → chunk-3TPFJ7NS.js.map} +1 -1
  9. package/dist/{chunk-KPAOAYDY.js → chunk-4G644ETX.js} +13 -13
  10. package/dist/{chunk-KPAOAYDY.js.map → chunk-4G644ETX.js.map} +1 -1
  11. package/dist/{chunk-RZ52RCTU.js → chunk-4MIAF6ZO.js} +4 -4
  12. package/dist/{chunk-RZ52RCTU.js.map → chunk-4MIAF6ZO.js.map} +1 -1
  13. package/dist/{chunk-HIFJC2HY.cjs → chunk-4VYOE2HE.cjs} +6 -6
  14. package/dist/{chunk-HIFJC2HY.cjs.map → chunk-4VYOE2HE.cjs.map} +1 -1
  15. package/dist/{chunk-GKYJZNJQ.cjs → chunk-4XFA2XAB.cjs} +40 -40
  16. package/dist/{chunk-GKYJZNJQ.cjs.map → chunk-4XFA2XAB.cjs.map} +1 -1
  17. package/dist/{chunk-J6XNDFK7.cjs → chunk-4ZJ3P6IF.cjs} +14 -14
  18. package/dist/{chunk-J6XNDFK7.cjs.map → chunk-4ZJ3P6IF.cjs.map} +1 -1
  19. package/dist/{chunk-A377P2JF.js → chunk-5DK3LMS7.js} +4 -4
  20. package/dist/{chunk-A377P2JF.js.map → chunk-5DK3LMS7.js.map} +1 -1
  21. package/dist/{chunk-ZEBWF24G.js → chunk-5EDJRYE4.js} +12 -12
  22. package/dist/{chunk-ZEBWF24G.js.map → chunk-5EDJRYE4.js.map} +1 -1
  23. package/dist/{chunk-K2KOXVGA.cjs → chunk-5KFM5ZNO.cjs} +9 -9
  24. package/dist/{chunk-K2KOXVGA.cjs.map → chunk-5KFM5ZNO.cjs.map} +1 -1
  25. package/dist/{chunk-7275FFQA.cjs → chunk-5P5OSQT2.cjs} +10 -10
  26. package/dist/{chunk-7275FFQA.cjs.map → chunk-5P5OSQT2.cjs.map} +1 -1
  27. package/dist/{chunk-SXLGTRY7.js → chunk-5SCHQS3L.js} +6 -6
  28. package/dist/{chunk-SXLGTRY7.js.map → chunk-5SCHQS3L.js.map} +1 -1
  29. package/dist/{chunk-B333LIQQ.cjs → chunk-6I7MYAPX.cjs} +6 -6
  30. package/dist/{chunk-B333LIQQ.cjs.map → chunk-6I7MYAPX.cjs.map} +1 -1
  31. package/dist/{chunk-7IBLSZ7G.cjs → chunk-7TLGH4VK.cjs} +43 -43
  32. package/dist/{chunk-7IBLSZ7G.cjs.map → chunk-7TLGH4VK.cjs.map} +1 -1
  33. package/dist/{chunk-YKUNVCXP.js → chunk-AJAHLIHQ.js} +3 -3
  34. package/dist/{chunk-YKUNVCXP.js.map → chunk-AJAHLIHQ.js.map} +1 -1
  35. package/dist/{chunk-SQUWNP5G.cjs → chunk-B5HYXBPH.cjs} +13 -13
  36. package/dist/{chunk-SQUWNP5G.cjs.map → chunk-B5HYXBPH.cjs.map} +1 -1
  37. package/dist/{chunk-VISYC2ZD.cjs → chunk-BJSF4VYC.cjs} +35 -35
  38. package/dist/{chunk-VISYC2ZD.cjs.map → chunk-BJSF4VYC.cjs.map} +1 -1
  39. package/dist/{chunk-PER4RJRF.js → chunk-BKZFINUO.js} +4 -4
  40. package/dist/{chunk-PER4RJRF.js.map → chunk-BKZFINUO.js.map} +1 -1
  41. package/dist/{chunk-NQD46M2L.cjs → chunk-BLKZDVFG.cjs} +11 -11
  42. package/dist/{chunk-NQD46M2L.cjs.map → chunk-BLKZDVFG.cjs.map} +1 -1
  43. package/dist/{chunk-6WMG7TU2.cjs → chunk-BQMIYEFC.cjs} +11 -11
  44. package/dist/{chunk-6WMG7TU2.cjs.map → chunk-BQMIYEFC.cjs.map} +1 -1
  45. package/dist/{chunk-JLDYPQIB.cjs → chunk-CDN7FN6R.cjs} +7 -7
  46. package/dist/{chunk-JLDYPQIB.cjs.map → chunk-CDN7FN6R.cjs.map} +1 -1
  47. package/dist/{chunk-5HMAMGEL.cjs → chunk-CKERNLXH.cjs} +5 -5
  48. package/dist/{chunk-5HMAMGEL.cjs.map → chunk-CKERNLXH.cjs.map} +1 -1
  49. package/dist/{chunk-5OHIMYY7.cjs → chunk-DDKW5FTM.cjs} +5 -5
  50. package/dist/{chunk-5OHIMYY7.cjs.map → chunk-DDKW5FTM.cjs.map} +1 -1
  51. package/dist/{chunk-57GO7S77.js → chunk-DRWW5XMD.js} +3 -3
  52. package/dist/{chunk-57GO7S77.js.map → chunk-DRWW5XMD.js.map} +1 -1
  53. package/dist/{chunk-DZYO3YLL.js → chunk-E65S6HVS.js} +3 -3
  54. package/dist/{chunk-DZYO3YLL.js.map → chunk-E65S6HVS.js.map} +1 -1
  55. package/dist/{chunk-35MIAFP2.js → chunk-EEB56QQX.js} +3 -3
  56. package/dist/{chunk-35MIAFP2.js.map → chunk-EEB56QQX.js.map} +1 -1
  57. package/dist/{chunk-OQL6XRT7.js → chunk-EZ2LRC7U.js} +4 -4
  58. package/dist/{chunk-OQL6XRT7.js.map → chunk-EZ2LRC7U.js.map} +1 -1
  59. package/dist/{chunk-I2X76NIY.js → chunk-F2ZT6DCV.js} +3 -3
  60. package/dist/{chunk-I2X76NIY.js.map → chunk-F2ZT6DCV.js.map} +1 -1
  61. package/dist/{chunk-SG2ZHIDQ.cjs → chunk-FCFVJGWR.cjs} +6 -6
  62. package/dist/{chunk-SG2ZHIDQ.cjs.map → chunk-FCFVJGWR.cjs.map} +1 -1
  63. package/dist/{chunk-N26PQY3D.js → chunk-FHLK5CTO.js} +5 -5
  64. package/dist/{chunk-N26PQY3D.js.map → chunk-FHLK5CTO.js.map} +1 -1
  65. package/dist/{chunk-XOJ5HGIP.cjs → chunk-FKZATUBG.cjs} +6 -6
  66. package/dist/{chunk-XOJ5HGIP.cjs.map → chunk-FKZATUBG.cjs.map} +1 -1
  67. package/dist/{chunk-M7ADKAJB.cjs → chunk-FNBOLEST.cjs} +7 -7
  68. package/dist/{chunk-M7ADKAJB.cjs.map → chunk-FNBOLEST.cjs.map} +1 -1
  69. package/dist/{chunk-ENBVF5OB.js → chunk-FQJBEWGB.js} +5 -5
  70. package/dist/{chunk-ENBVF5OB.js.map → chunk-FQJBEWGB.js.map} +1 -1
  71. package/dist/{chunk-USZQJXPE.js → chunk-GCQTQJPW.js} +6 -6
  72. package/dist/{chunk-USZQJXPE.js.map → chunk-GCQTQJPW.js.map} +1 -1
  73. package/dist/{chunk-74B6CLZK.js → chunk-GEU4SROO.js} +4 -4
  74. package/dist/{chunk-74B6CLZK.js.map → chunk-GEU4SROO.js.map} +1 -1
  75. package/dist/{chunk-KNXDDKGK.cjs → chunk-GIZ7DK3W.cjs} +9 -9
  76. package/dist/{chunk-KNXDDKGK.cjs.map → chunk-GIZ7DK3W.cjs.map} +1 -1
  77. package/dist/{chunk-K57TGBAB.js → chunk-H5BUXKYQ.js} +7 -7
  78. package/dist/{chunk-K57TGBAB.js.map → chunk-H5BUXKYQ.js.map} +1 -1
  79. package/dist/{chunk-PB7LE5VJ.cjs → chunk-H5Q63Z42.cjs} +9 -9
  80. package/dist/{chunk-PB7LE5VJ.cjs.map → chunk-H5Q63Z42.cjs.map} +1 -1
  81. package/dist/{chunk-GIGV6XFT.cjs → chunk-HTY7SADT.cjs} +5 -5
  82. package/dist/{chunk-GIGV6XFT.cjs.map → chunk-HTY7SADT.cjs.map} +1 -1
  83. package/dist/{chunk-S5FJ3FHH.cjs → chunk-HW7GODZJ.cjs} +5 -5
  84. package/dist/{chunk-S5FJ3FHH.cjs.map → chunk-HW7GODZJ.cjs.map} +1 -1
  85. package/dist/{chunk-EPQKIFGY.cjs → chunk-I2QAN2HX.cjs} +13 -13
  86. package/dist/{chunk-EPQKIFGY.cjs.map → chunk-I2QAN2HX.cjs.map} +1 -1
  87. package/dist/{chunk-IVDCRMY3.cjs → chunk-IHR3KEWH.cjs} +11 -11
  88. package/dist/{chunk-IVDCRMY3.cjs.map → chunk-IHR3KEWH.cjs.map} +1 -1
  89. package/dist/{chunk-JJ32AVLU.js → chunk-J2TQNGUM.js} +3 -3
  90. package/dist/{chunk-JJ32AVLU.js.map → chunk-J2TQNGUM.js.map} +1 -1
  91. package/dist/{chunk-YSLDYF2F.cjs → chunk-J5VWFOOY.cjs} +4 -4
  92. package/dist/{chunk-YSLDYF2F.cjs.map → chunk-J5VWFOOY.cjs.map} +1 -1
  93. package/dist/{chunk-WQU2M64E.js → chunk-JCXI44K2.js} +6 -6
  94. package/dist/{chunk-WQU2M64E.js.map → chunk-JCXI44K2.js.map} +1 -1
  95. package/dist/{chunk-ZF522WPX.js → chunk-JFFAICCY.js} +6 -6
  96. package/dist/{chunk-ZF522WPX.js.map → chunk-JFFAICCY.js.map} +1 -1
  97. package/dist/{chunk-GIOMLAL2.cjs → chunk-KZOUXGPD.cjs} +4 -4
  98. package/dist/{chunk-GIOMLAL2.cjs.map → chunk-KZOUXGPD.cjs.map} +1 -1
  99. package/dist/{chunk-ZKSEIA5Q.cjs → chunk-LDKE723G.cjs} +6 -6
  100. package/dist/{chunk-ZKSEIA5Q.cjs.map → chunk-LDKE723G.cjs.map} +1 -1
  101. package/dist/{chunk-42KJXH3P.js → chunk-M5SZUUWM.js} +5 -5
  102. package/dist/{chunk-42KJXH3P.js.map → chunk-M5SZUUWM.js.map} +1 -1
  103. package/dist/{chunk-Q4UMGL6Z.js → chunk-MVDTWARG.js} +5 -5
  104. package/dist/{chunk-Q4UMGL6Z.js.map → chunk-MVDTWARG.js.map} +1 -1
  105. package/dist/{chunk-FE3ZOSFJ.cjs → chunk-MWETV5LK.cjs} +6 -6
  106. package/dist/{chunk-FE3ZOSFJ.cjs.map → chunk-MWETV5LK.cjs.map} +1 -1
  107. package/dist/{chunk-6VY3VM5W.cjs → chunk-MWWAQVJ3.cjs} +4 -4
  108. package/dist/{chunk-6VY3VM5W.cjs.map → chunk-MWWAQVJ3.cjs.map} +1 -1
  109. package/dist/{chunk-UUNVNLQN.js → chunk-MYBFODRI.js} +7 -7
  110. package/dist/{chunk-UUNVNLQN.js.map → chunk-MYBFODRI.js.map} +1 -1
  111. package/dist/{chunk-M3DVXO4U.cjs → chunk-NHM6CSX2.cjs} +6 -6
  112. package/dist/{chunk-M3DVXO4U.cjs.map → chunk-NHM6CSX2.cjs.map} +1 -1
  113. package/dist/{chunk-IA4TPVHR.cjs → chunk-NJR5SVHL.cjs} +14 -14
  114. package/dist/{chunk-IA4TPVHR.cjs.map → chunk-NJR5SVHL.cjs.map} +1 -1
  115. package/dist/{chunk-J52N3BTJ.js → chunk-NP527IVS.js} +7 -7
  116. package/dist/{chunk-J52N3BTJ.js.map → chunk-NP527IVS.js.map} +1 -1
  117. package/dist/{chunk-MCVMBH7P.cjs → chunk-OAEVUPAL.cjs} +8 -8
  118. package/dist/{chunk-MCVMBH7P.cjs.map → chunk-OAEVUPAL.cjs.map} +1 -1
  119. package/dist/{chunk-JQHJJAX3.js → chunk-OSYOGJC5.js} +4 -4
  120. package/dist/{chunk-JQHJJAX3.js.map → chunk-OSYOGJC5.js.map} +1 -1
  121. package/dist/{chunk-PLQDNBCW.js → chunk-OYBRYZKK.js} +6 -6
  122. package/dist/{chunk-PLQDNBCW.js.map → chunk-OYBRYZKK.js.map} +1 -1
  123. package/dist/{chunk-G2RX3FZ7.cjs → chunk-OZNCX6DY.cjs} +12 -12
  124. package/dist/{chunk-G2RX3FZ7.cjs.map → chunk-OZNCX6DY.cjs.map} +1 -1
  125. package/dist/{chunk-DXUFYSNR.js → chunk-P6LEAMPW.js} +4 -4
  126. package/dist/{chunk-DXUFYSNR.js.map → chunk-P6LEAMPW.js.map} +1 -1
  127. package/dist/{chunk-R3B46QJO.js → chunk-PYUPT3HU.js} +3 -3
  128. package/dist/{chunk-R3B46QJO.js.map → chunk-PYUPT3HU.js.map} +1 -1
  129. package/dist/{chunk-WZGS7FX6.js → chunk-Q5DVIVMR.js} +3 -3
  130. package/dist/{chunk-WZGS7FX6.js.map → chunk-Q5DVIVMR.js.map} +1 -1
  131. package/dist/{chunk-IJWWTBJ6.js → chunk-QMZQ4I72.js} +3 -3
  132. package/dist/{chunk-IJWWTBJ6.js.map → chunk-QMZQ4I72.js.map} +1 -1
  133. package/dist/{chunk-VCEPRU6Y.cjs → chunk-QOQ55IUO.cjs} +8 -8
  134. package/dist/{chunk-VCEPRU6Y.cjs.map → chunk-QOQ55IUO.cjs.map} +1 -1
  135. package/dist/{chunk-MQUO663S.js → chunk-R3ONJZXN.js} +5 -5
  136. package/dist/{chunk-MQUO663S.js.map → chunk-R3ONJZXN.js.map} +1 -1
  137. package/dist/{chunk-KJRFBFBP.js → chunk-RKPEY2LR.js} +4 -4
  138. package/dist/{chunk-KJRFBFBP.js.map → chunk-RKPEY2LR.js.map} +1 -1
  139. package/dist/{chunk-7SGBGPZW.js → chunk-RM2XLAAU.js} +3 -3
  140. package/dist/{chunk-7SGBGPZW.js.map → chunk-RM2XLAAU.js.map} +1 -1
  141. package/dist/{chunk-LT7DJ7FN.cjs → chunk-RNKQPVCB.cjs} +13 -13
  142. package/dist/{chunk-LT7DJ7FN.cjs.map → chunk-RNKQPVCB.cjs.map} +1 -1
  143. package/dist/{chunk-3MNRY6XK.js → chunk-RQUQSI67.js} +3 -3
  144. package/dist/{chunk-3MNRY6XK.js.map → chunk-RQUQSI67.js.map} +1 -1
  145. package/dist/{chunk-S3UQUP3Q.js → chunk-RRN6FK6U.js} +4 -4
  146. package/dist/{chunk-S3UQUP3Q.js.map → chunk-RRN6FK6U.js.map} +1 -1
  147. package/dist/{chunk-BSOYEVZW.cjs → chunk-RUPT4QAW.cjs} +5 -5
  148. package/dist/{chunk-BSOYEVZW.cjs.map → chunk-RUPT4QAW.cjs.map} +1 -1
  149. package/dist/{chunk-7SUCVCOC.cjs → chunk-RYVQVW2U.cjs} +5 -5
  150. package/dist/{chunk-7SUCVCOC.cjs.map → chunk-RYVQVW2U.cjs.map} +1 -1
  151. package/dist/{chunk-2I6BJICE.js → chunk-RZBOQQRG.js} +6 -6
  152. package/dist/{chunk-2I6BJICE.js.map → chunk-RZBOQQRG.js.map} +1 -1
  153. package/dist/{chunk-JASZ7XTT.js → chunk-RZPKI7FD.js} +5 -5
  154. package/dist/{chunk-JASZ7XTT.js.map → chunk-RZPKI7FD.js.map} +1 -1
  155. package/dist/{chunk-VSTO7LZJ.cjs → chunk-T6E5MIIO.cjs} +4 -4
  156. package/dist/{chunk-VSTO7LZJ.cjs.map → chunk-T6E5MIIO.cjs.map} +1 -1
  157. package/dist/{chunk-D2JOFRA3.cjs → chunk-TFPTFBHN.cjs} +4 -4
  158. package/dist/{chunk-D2JOFRA3.cjs.map → chunk-TFPTFBHN.cjs.map} +1 -1
  159. package/dist/{chunk-446LQC5C.js → chunk-TRDO4OBD.js} +3 -3
  160. package/dist/{chunk-446LQC5C.js.map → chunk-TRDO4OBD.js.map} +1 -1
  161. package/dist/{chunk-3PHJWXBO.cjs → chunk-TRQQZ3FY.cjs} +7 -7
  162. package/dist/{chunk-3PHJWXBO.cjs.map → chunk-TRQQZ3FY.cjs.map} +1 -1
  163. package/dist/{chunk-NKQAHJBB.cjs → chunk-TX4BD3JN.cjs} +16 -16
  164. package/dist/{chunk-NKQAHJBB.cjs.map → chunk-TX4BD3JN.cjs.map} +1 -1
  165. package/dist/{chunk-UTUX5WM7.cjs → chunk-U7NJKBAR.cjs} +11 -11
  166. package/dist/{chunk-UTUX5WM7.cjs.map → chunk-U7NJKBAR.cjs.map} +1 -1
  167. package/dist/{chunk-5PW34XKA.js → chunk-UCMIHJFE.js} +3 -3
  168. package/dist/{chunk-5PW34XKA.js.map → chunk-UCMIHJFE.js.map} +1 -1
  169. package/dist/{chunk-KGVNCMUT.cjs → chunk-UGK3AL6Z.cjs} +5 -5
  170. package/dist/{chunk-KGVNCMUT.cjs.map → chunk-UGK3AL6Z.cjs.map} +1 -1
  171. package/dist/{chunk-QTR5LIUW.cjs → chunk-UJS33XO7.cjs} +8 -8
  172. package/dist/{chunk-QTR5LIUW.cjs.map → chunk-UJS33XO7.cjs.map} +1 -1
  173. package/dist/{chunk-QEYGPANV.cjs → chunk-VOYIMBTO.cjs} +8 -8
  174. package/dist/{chunk-QEYGPANV.cjs.map → chunk-VOYIMBTO.cjs.map} +1 -1
  175. package/dist/{chunk-HRXPB4YH.js → chunk-VRXTRDIP.js} +5 -5
  176. package/dist/{chunk-HRXPB4YH.js.map → chunk-VRXTRDIP.js.map} +1 -1
  177. package/dist/{chunk-WPP3FZLW.cjs → chunk-WHQNYDUT.cjs} +8 -8
  178. package/dist/{chunk-WPP3FZLW.cjs.map → chunk-WHQNYDUT.cjs.map} +1 -1
  179. package/dist/{chunk-YV4AL52O.cjs → chunk-WW6XXMJL.cjs} +17 -17
  180. package/dist/{chunk-YV4AL52O.cjs.map → chunk-WW6XXMJL.cjs.map} +1 -1
  181. package/dist/{chunk-CWDZJH7A.js → chunk-X6QULLGW.js} +3 -3
  182. package/dist/{chunk-CWDZJH7A.js.map → chunk-X6QULLGW.js.map} +1 -1
  183. package/dist/{chunk-KGLCG2W5.cjs → chunk-XB6G4W4P.cjs} +5 -5
  184. package/dist/{chunk-KGLCG2W5.cjs.map → chunk-XB6G4W4P.cjs.map} +1 -1
  185. package/dist/{chunk-ORBYW3LT.js → chunk-XQIPFZUD.js} +7 -7
  186. package/dist/{chunk-ORBYW3LT.js.map → chunk-XQIPFZUD.js.map} +1 -1
  187. package/dist/{chunk-SEELGNIC.cjs → chunk-XTWTL3UB.cjs} +9 -9
  188. package/dist/{chunk-SEELGNIC.cjs.map → chunk-XTWTL3UB.cjs.map} +1 -1
  189. package/dist/{chunk-FP6EP2CX.js → chunk-XVJLFQJT.js} +3 -3
  190. package/dist/{chunk-FP6EP2CX.js.map → chunk-XVJLFQJT.js.map} +1 -1
  191. package/dist/{chunk-CTXAQNQI.js → chunk-YBMIXGFM.js} +3 -3
  192. package/dist/{chunk-CTXAQNQI.js.map → chunk-YBMIXGFM.js.map} +1 -1
  193. package/dist/{chunk-TUUYGOLQ.js → chunk-YK5BUUZG.js} +4 -4
  194. package/dist/{chunk-TUUYGOLQ.js.map → chunk-YK5BUUZG.js.map} +1 -1
  195. package/dist/{chunk-KSDY2S25.js → chunk-YKLFVO22.js} +4 -4
  196. package/dist/{chunk-KSDY2S25.js.map → chunk-YKLFVO22.js.map} +1 -1
  197. package/dist/{chunk-FL53ZLSY.js → chunk-YUKH75MR.js} +10 -10
  198. package/dist/{chunk-FL53ZLSY.js.map → chunk-YUKH75MR.js.map} +1 -1
  199. package/dist/{chunk-BMJ4AK5X.cjs → chunk-ZQWT5UEN.cjs} +17 -17
  200. package/dist/{chunk-BMJ4AK5X.cjs.map → chunk-ZQWT5UEN.cjs.map} +1 -1
  201. package/dist/components/Alert/index.cjs +5 -5
  202. package/dist/components/Alert/index.js +4 -4
  203. package/dist/components/AlertDialog/index.cjs +7 -7
  204. package/dist/components/AlertDialog/index.js +5 -5
  205. package/dist/components/AppShell/index.cjs +12 -12
  206. package/dist/components/AppShell/index.js +9 -9
  207. package/dist/components/AutocompleteInput/index.cjs +10 -10
  208. package/dist/components/AutocompleteInput/index.js +6 -6
  209. package/dist/components/Button/index.cjs +4 -4
  210. package/dist/components/Button/index.js +3 -3
  211. package/dist/components/Calendar/index.cjs +5 -5
  212. package/dist/components/Calendar/index.js +4 -4
  213. package/dist/components/CheckboxGroup/index.cjs +8 -8
  214. package/dist/components/CheckboxGroup/index.js +6 -6
  215. package/dist/components/CheckboxInput/index.cjs +5 -5
  216. package/dist/components/CheckboxInput/index.js +4 -4
  217. package/dist/components/CodeBlock/index.cjs +5 -5
  218. package/dist/components/CodeBlock/index.js +4 -4
  219. package/dist/components/ContextMenu/index.cjs +9 -9
  220. package/dist/components/ContextMenu/index.js +7 -7
  221. package/dist/components/DateInput/index.cjs +8 -8
  222. package/dist/components/DateInput/index.js +7 -7
  223. package/dist/components/DateRangeInput/index.cjs +8 -8
  224. package/dist/components/DateRangeInput/index.js +7 -7
  225. package/dist/components/DateTimeInput/index.cjs +10 -10
  226. package/dist/components/DateTimeInput/index.js +9 -9
  227. package/dist/components/DropdownMenu/index.cjs +10 -10
  228. package/dist/components/DropdownMenu/index.js +6 -6
  229. package/dist/components/EmptyState/index.cjs +3 -3
  230. package/dist/components/EmptyState/index.js +2 -2
  231. package/dist/components/Field/index.cjs +4 -4
  232. package/dist/components/Field/index.js +2 -2
  233. package/dist/components/FileInput/index.cjs +6 -6
  234. package/dist/components/FileInput/index.js +5 -5
  235. package/dist/components/InputGroup/index.cjs +7 -7
  236. package/dist/components/InputGroup/index.js +3 -3
  237. package/dist/components/Item/index.cjs +3 -3
  238. package/dist/components/Item/index.js +2 -2
  239. package/dist/components/Layout/index.cjs +9 -9
  240. package/dist/components/Layout/index.js +4 -4
  241. package/dist/components/Lightbox/index.cjs +6 -6
  242. package/dist/components/Lightbox/index.js +4 -4
  243. package/dist/components/List/index.cjs +5 -5
  244. package/dist/components/List/index.js +3 -3
  245. package/dist/components/MetadataList/index.cjs +4 -4
  246. package/dist/components/MetadataList/index.js +2 -2
  247. package/dist/components/MultiSelect/index.cjs +7 -7
  248. package/dist/components/MultiSelect/index.js +6 -6
  249. package/dist/components/NumberInput/index.cjs +7 -7
  250. package/dist/components/NumberInput/index.js +6 -6
  251. package/dist/components/Pagination/index.cjs +5 -5
  252. package/dist/components/Pagination/index.js +4 -4
  253. package/dist/components/PasswordInput/index.cjs +8 -8
  254. package/dist/components/PasswordInput/index.js +7 -7
  255. package/dist/components/Popover/index.cjs +6 -6
  256. package/dist/components/Popover/index.js +4 -4
  257. package/dist/components/RadioGroup/index.cjs +6 -6
  258. package/dist/components/RadioGroup/index.js +4 -4
  259. package/dist/components/Schedule/index.cjs +25 -25
  260. package/dist/components/Schedule/index.js +10 -10
  261. package/dist/components/SearchFilterInput/index.cjs +24 -24
  262. package/dist/components/SearchFilterInput/index.js +16 -16
  263. package/dist/components/Select/index.cjs +9 -9
  264. package/dist/components/Select/index.js +7 -7
  265. package/dist/components/SideNav/index.cjs +12 -12
  266. package/dist/components/SideNav/index.js +6 -6
  267. package/dist/components/Slider/index.cjs +4 -4
  268. package/dist/components/Slider/index.js +3 -3
  269. package/dist/components/Spinner/index.cjs +3 -3
  270. package/dist/components/Spinner/index.js +2 -2
  271. package/dist/components/SplitButton/index.cjs +8 -8
  272. package/dist/components/SplitButton/index.js +7 -7
  273. package/dist/components/Stepper/index.cjs +3 -3
  274. package/dist/components/Stepper/index.js +2 -2
  275. package/dist/components/Switch/index.cjs +4 -4
  276. package/dist/components/Switch/index.js +3 -3
  277. package/dist/components/Table/index.cjs +46 -46
  278. package/dist/components/Table/index.js +20 -20
  279. package/dist/components/Tabs/index.cjs +10 -10
  280. package/dist/components/Tabs/index.js +5 -5
  281. package/dist/components/TagsInput/index.cjs +8 -8
  282. package/dist/components/TagsInput/index.js +7 -7
  283. package/dist/components/Text/index.cjs +3 -3
  284. package/dist/components/Text/index.js +1 -1
  285. package/dist/components/TextArea/index.cjs +5 -5
  286. package/dist/components/TextArea/index.js +4 -4
  287. package/dist/components/TextInput/index.cjs +7 -7
  288. package/dist/components/TextInput/index.js +6 -6
  289. package/dist/components/Thumbnail/index.cjs +5 -5
  290. package/dist/components/Thumbnail/index.js +4 -4
  291. package/dist/components/TimeInput/index.cjs +6 -6
  292. package/dist/components/TimeInput/index.js +5 -5
  293. package/dist/components/Toast/index.cjs +7 -7
  294. package/dist/components/Toast/index.js +4 -4
  295. package/dist/components/ToggleButton/index.cjs +5 -5
  296. package/dist/components/ToggleButton/index.js +3 -3
  297. package/dist/components/TopNav/index.cjs +10 -10
  298. package/dist/components/TopNav/index.js +5 -5
  299. package/dist/index.cjs +187 -187
  300. package/dist/index.js +50 -50
  301. package/dist/styles.css +1 -1
  302. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal/useFocusTrap.ts","../src/components/Popover/usePopover.tsx","../src/components/Popover/Popover.tsx"],"names":["useRef","useCallback","useEffect","css","useLayer","jsxs","VisuallyHidden","jsx","Button","X","useMemo","styles","useIsomorphicLayoutEffect","token","cx","isReactNode","Fragment"],"mappings":"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","file":"chunk-XOJ5HGIP.cjs","sourcesContent":["'use client';\n\nimport {useCallback, useEffect, useRef} from 'react';\n\nconst FOCUSABLE_SELECTOR =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])';\n\nexport interface UseFocusTrapOptions {\n isActive: boolean;\n onEscape?: () => void;\n}\n\nexport interface UseFocusTrapReturn<T extends HTMLElement = HTMLElement> {\n containerRef: React.RefObject<T | null>;\n focusFirst: () => void;\n}\n\nfunction getFocusableElements(container: HTMLElement): HTMLElement[] {\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n );\n}\n\nfunction focusFirstDescendant(container: HTMLElement): void {\n getFocusableElements(container)[0]?.focus();\n}\n\nfunction focusLastDescendant(container: HTMLElement): void {\n const elements = getFocusableElements(container);\n elements.at(-1)?.focus();\n}\n\nexport function useFocusTrap<T extends HTMLElement = HTMLElement>({\n isActive,\n onEscape,\n}: UseFocusTrapOptions): UseFocusTrapReturn<T> {\n const containerRef = useRef<T>(null);\n\n const focusFirst = useCallback(() => {\n if (containerRef.current != null) {\n focusFirstDescendant(containerRef.current);\n }\n }, []);\n\n useEffect(() => {\n if (!isActive) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const container = containerRef.current;\n if (container == null) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n onEscape?.();\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n const focusable = getFocusableElements(container);\n if (focusable.length === 0) {\n return;\n }\n\n const first = focusable[0];\n const last = focusable.at(-1);\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault();\n focusLastDescendant(container);\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault();\n focusFirstDescendant(container);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [isActive, onEscape]);\n\n return {containerRef, focusFirst};\n}\n","'use client';\n\nimport {X} from 'lucide-react';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n type ReactNode,\n type RefCallback,\n} from 'react';\nimport {Button} from 'components/Button';\nimport {VisuallyHidden} from 'internal';\nimport {useFocusTrap} from 'internal/useFocusTrap';\nimport {useLayer, type ContextRenderProps} from 'internal/useLayer';\nimport {css} from 'styled-system/css';\n\nexport type {LayerAlignment, LayerPlacement} from 'internal/useLayer';\n\nexport interface UsePopoverOptions {\n /**\n * Accessible label for the close button rendered when `hasCloseButton` is\n * `true`. Defaults to `'Close popover'`.\n */\n closeButtonLabel?: string;\n /**\n * When `true`, focus moves to the first focusable element inside the popover\n * when it opens. Defaults to `true`.\n */\n hasAutoFocus?: boolean;\n /**\n * When `true`, renders a visually hidden close button inside the popover so\n * assistive technology users can dismiss it. Defaults to `true`.\n */\n hasCloseButton?: boolean;\n /**\n * When `true`, wraps the content in a styled surface (background, border,\n * shadow). Set to `false` to render unstyled content. Defaults to `true`.\n */\n hasSurface?: boolean;\n /**\n * When `true`, the popover can be dismissed by clicking outside or pressing\n * Escape. Defaults to `true`.\n */\n isDismissable?: boolean;\n /**\n * Accessible label applied to the popover content via `aria-label`.\n */\n label?: string;\n /**\n * Id applied to the underlying layer element. Falls back to a generated id.\n * Supply this when another element needs a stable `aria-controls` reference\n * to the popover.\n */\n layerId?: string;\n /**\n * Called after the popover is hidden, including via light dismiss.\n */\n onHide?: () => void;\n /**\n * Called after the popover is shown.\n */\n onShow?: () => void;\n /**\n * ARIA role for the popover content. Defaults to `'dialog'`; use `'menu'` for\n * menu-style popovers.\n */\n role?: 'dialog' | 'menu';\n}\n\nexport interface UsePopoverReturn {\n /**\n * CSS anchor name tying the popover content to the trigger for positioning.\n */\n anchorId: string;\n /**\n * Ref attached to the popover content element.\n */\n contentRef: React.RefObject<HTMLDivElement | null>;\n /**\n * Hides the popover.\n */\n hide: () => void;\n /**\n * Id of the underlying layer element, matching `triggerProps['aria-controls']`.\n */\n id: string;\n /**\n * Whether the popover is currently open.\n */\n isOpen: boolean;\n /**\n * Renders the given children inside the popover layer.\n */\n render: (children: ReactNode, props?: ContextRenderProps) => ReactNode;\n /**\n * Shows the popover. Pass `isAutoFocusSkipped` to suppress moving focus into\n * the content for this open.\n */\n show: (options?: {isAutoFocusSkipped?: boolean}) => void;\n /**\n * Toggles the popover between open and closed.\n */\n toggle: () => void;\n /**\n * ARIA props to spread onto the trigger element.\n */\n triggerProps: {\n 'aria-controls': string;\n 'aria-expanded': boolean;\n 'aria-haspopup': 'dialog' | 'menu';\n };\n /**\n * Ref callback to attach to the trigger element for anchor positioning.\n */\n triggerRef: RefCallback<HTMLElement>;\n}\n\nconst styles = {\n surface: css({\n position: 'relative',\n bg: 'bg',\n borderRadius: 'md',\n boxShadow: 'lg',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'border',\n }),\n} as const;\n\nexport function usePopover({\n onShow,\n onHide,\n isDismissable = true,\n hasAutoFocus = true,\n hasSurface = true,\n hasCloseButton = true,\n closeButtonLabel = 'Close popover',\n label,\n role = 'dialog',\n layerId,\n}: UsePopoverOptions = {}): UsePopoverReturn {\n const skipAutoFocusRef = useRef(false);\n // Guards against a light-dismiss close immediately re-opening the popover.\n // When the trigger is clicked while the popover is open, the browser's native\n // light dismiss closes it (firing `onHide`) *before* the trigger's own click\n // handler runs `toggle()` — which would otherwise re-open it. The flag is\n // cleared on the next animation frame: the browser never paints mid-gesture,\n // so it is reliably still set when the spurious click arrives, yet cleared\n // before any genuine later click.\n const isDismissingRef = useRef(false);\n\n const handleHide = useCallback(() => {\n isDismissingRef.current = true;\n requestAnimationFrame(() => {\n isDismissingRef.current = false;\n });\n onHide?.();\n }, [onHide]);\n\n const layer = useLayer({\n isDismissable,\n id: layerId,\n onShow,\n onHide: handleHide,\n });\n const {containerRef: contentRef, focusFirst} = useFocusTrap<HTMLDivElement>({\n isActive: layer.isOpen,\n onEscape: layer.hide,\n });\n\n useEffect(() => {\n if (!layer.isOpen) {\n skipAutoFocusRef.current = false;\n return;\n }\n\n if (hasAutoFocus && !skipAutoFocusRef.current) {\n requestAnimationFrame(() => focusFirst());\n }\n }, [focusFirst, hasAutoFocus, layer.isOpen]);\n\n const show = useCallback(\n (options?: {isAutoFocusSkipped?: boolean}) => {\n skipAutoFocusRef.current = options?.isAutoFocusSkipped ?? false;\n layer.show();\n },\n [layer],\n );\n\n const toggle = useCallback(() => {\n if (isDismissingRef.current) {\n return;\n }\n\n if (layer.isOpen) {\n layer.hide();\n return;\n }\n\n show();\n }, [layer, show]);\n\n const render = useCallback(\n (children: ReactNode, props?: ContextRenderProps): ReactNode => {\n return layer.render(\n <div\n aria-label={label}\n className={hasSurface ? styles.surface : undefined}\n ref={contentRef}\n role={role}>\n {children}\n {hasCloseButton ? (\n <VisuallyHidden>\n <Button\n icon={X}\n isIconOnly\n label={closeButtonLabel}\n onClick={layer.hide}\n size=\"sm\"\n variant=\"ghost\"\n />\n </VisuallyHidden>\n ) : null}\n </div>,\n {\n ...props,\n className: props?.className,\n },\n );\n },\n [\n closeButtonLabel,\n contentRef,\n hasCloseButton,\n hasSurface,\n label,\n layer,\n role,\n ],\n );\n\n const triggerProps = useMemo(\n () => ({\n 'aria-controls': layer.id,\n 'aria-expanded': layer.isOpen,\n 'aria-haspopup': role,\n }),\n [layer.id, layer.isOpen, role],\n );\n\n return useMemo(\n () => ({\n anchorId: layer.anchorId,\n contentRef,\n hide: layer.hide,\n id: layer.id,\n isOpen: layer.isOpen,\n render,\n show,\n toggle,\n triggerProps,\n triggerRef: layer.ref,\n }),\n [\n contentRef,\n layer.anchorId,\n layer.hide,\n layer.id,\n layer.isOpen,\n layer.ref,\n render,\n show,\n toggle,\n triggerProps,\n ],\n );\n}\n","'use client';\n\nimport {\n useCallback,\n useRef,\n type CSSProperties,\n type ReactNode,\n type Ref,\n type RefObject,\n} from 'react';\nimport {usePopover} from 'components/Popover/usePopover';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\nimport {useIsomorphicLayoutEffect} from 'internal/useIsomorphicLayoutEffect';\nimport type {LayerAlignment, LayerPlacement} from 'internal/useLayer';\nimport {css} from 'styled-system/css';\nimport {token} from 'styled-system/tokens';\n\nexport interface PopoverProps {\n /**\n * Alignment along the placement axis.\n * @default 'start'\n */\n alignment?: LayerAlignment;\n /**\n * External trigger element. When provided without children, Popover attaches\n * click and ARIA behavior directly to this element.\n */\n anchorRef?: RefObject<HTMLElement | null>;\n /**\n * Trigger content. Must contain a `<button>` or `[role=\"button\"]`.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the popover content.\n */\n className?: string;\n /**\n * Label for the hidden close button.\n * @default 'Close popover'\n */\n closeButtonLabel?: string;\n /**\n * Content displayed inside the popover dialog.\n */\n content: ReactNode;\n /**\n * Test ID applied to the popover content.\n */\n 'data-testid'?: string;\n /**\n * Whether to focus the first focusable item after opening.\n * @default true\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to include a keyboard-accessible close button.\n * @default true\n */\n hasCloseButton?: boolean;\n /**\n * Id applied to the popover content element. Falls back to a generated id.\n * Supply this when another element needs a stable `aria-controls` reference\n * to the popover.\n */\n id?: string;\n /**\n * Whether clicking outside or pressing Escape closes the popover.\n * @default true\n */\n isDismissable?: boolean;\n /**\n * Whether trigger interactions open the popover.\n * @default true\n */\n isEnabled?: boolean;\n /**\n * Controlled open state.\n */\n isOpen?: boolean;\n /**\n * Accessible label for the popover dialog.\n */\n label?: string;\n /**\n * Gap in pixels between the popover and its trigger along the inline axis\n * (for `start`/`end` placements). Applied as a logical margin so it stays on\n * the trigger-facing side even when the popover flips.\n */\n offsetX?: number;\n /**\n * Gap in pixels between the popover and its trigger along the block axis (for\n * `above`/`below` placements). Applied as a logical margin so it stays on the\n * trigger-facing side even when the popover flips.\n */\n offsetY?: number;\n /**\n * Callback fired when open state changes.\n */\n onOpenChange?: (isOpen: boolean) => void;\n /**\n * Inner padding of the popover content.\n * @default 0\n */\n padding?: SpacingToken;\n /**\n * Position relative to the trigger.\n * @default 'below'\n */\n placement?: LayerPlacement;\n /**\n * Ref forwarded to the popover content element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * ARIA role for the floating content.\n * @default 'dialog'\n */\n role?: 'dialog' | 'menu';\n /**\n * Inline styles applied to the popover content.\n */\n style?: CSSProperties;\n /**\n * Width of the popover content.\n */\n width?: number | string;\n}\n\nconst BUTTON_SELECTOR = 'button, [role=\"button\"]';\n\nconst styles = {\n anchor: css({\n display: 'inline-flex',\n }),\n content: css({}),\n gap: {\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\nfunction findTriggerButton(element: HTMLElement): HTMLElement | null {\n if (element.matches(BUTTON_SELECTOR)) {\n return element;\n }\n\n return element.querySelector<HTMLElement>(BUTTON_SELECTOR);\n}\n\n/**\n * A click-triggered floating dialog anchored to a trigger element.\n */\nexport function Popover({\n anchorRef,\n children,\n content,\n placement = 'below',\n alignment = 'start',\n isOpen,\n onOpenChange,\n offsetX,\n offsetY,\n isEnabled = true,\n width,\n label,\n hasCloseButton,\n isDismissable,\n closeButtonLabel,\n padding,\n ref,\n hasAutoFocus,\n className,\n style,\n role,\n id,\n 'data-testid': dataTestId,\n}: PopoverProps): React.JSX.Element {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const isControlled = isOpen !== undefined;\n\n const popover = usePopover({\n closeButtonLabel,\n hasAutoFocus,\n hasCloseButton,\n isDismissable,\n label,\n layerId: id,\n onHide: () => onOpenChange?.(false),\n onShow: () => onOpenChange?.(true),\n role,\n });\n\n const handleTriggerClick = useCallback(() => {\n if (!isEnabled) {\n return;\n }\n\n popover.toggle();\n }, [isEnabled, popover]);\n\n const handleTriggerKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleTriggerClick();\n }\n },\n [handleTriggerClick],\n );\n\n // ARIA and listeners are applied imperatively because the trigger button can\n // be any element the consumer renders — nested anywhere inside `children`, or\n // an entirely external element via `anchorRef` — so Popover cannot inject\n // props through JSX. This is safe: React only reconciles attributes present\n // in its own virtual DOM, so it never clobbers these imperatively-set ones on\n // re-render. The only dynamic attribute, `aria-expanded`, stays in sync\n // because `popover.triggerProps` is memoized on the open state, so this\n // callback (and the effect below that re-runs it) re-applies the fresh value\n // on every toggle. Keep `triggerProps` in the dep arrays or that sync breaks.\n const attachTrigger = useCallback(\n (button: HTMLElement) => {\n button.setAttribute(\n 'aria-haspopup',\n popover.triggerProps['aria-haspopup'],\n );\n button.setAttribute(\n 'aria-expanded',\n String(popover.triggerProps['aria-expanded']),\n );\n button.setAttribute(\n 'aria-controls',\n popover.triggerProps['aria-controls'],\n );\n button.addEventListener('click', handleTriggerClick);\n\n const needsKeyDown =\n button.tagName !== 'BUTTON' && button.getAttribute('role') === 'button';\n if (needsKeyDown) {\n button.addEventListener('keydown', handleTriggerKeyDown);\n }\n\n return () => {\n button.removeAttribute('aria-haspopup');\n button.removeAttribute('aria-expanded');\n button.removeAttribute('aria-controls');\n button.removeEventListener('click', handleTriggerClick);\n if (needsKeyDown) {\n button.removeEventListener('keydown', handleTriggerKeyDown);\n }\n };\n },\n [handleTriggerClick, handleTriggerKeyDown, popover.triggerProps],\n );\n\n useIsomorphicLayoutEffect(() => {\n const anchor = anchorRef?.current ?? wrapperRef.current;\n if (anchor == null) {\n return;\n }\n\n popover.triggerRef(anchor);\n const trigger = findTriggerButton(anchor);\n if (trigger == null || !isEnabled) {\n return () => {\n popover.triggerRef(null);\n };\n }\n\n const detach = attachTrigger(trigger);\n return () => {\n popover.triggerRef(null);\n detach();\n };\n }, [anchorRef, attachTrigger, isEnabled, popover]);\n\n useIsomorphicLayoutEffect(() => {\n if (!isControlled) {\n return;\n }\n\n if (isOpen === true && !popover.isOpen) {\n popover.show();\n } else if (isOpen === false && popover.isOpen) {\n popover.hide();\n }\n }, [isControlled, isOpen, popover]);\n\n const widthStyle =\n width == null\n ? undefined\n : {width: typeof width === 'number' ? `${width}px` : width};\n\n const paddingStyle =\n padding != null && padding !== 0\n ? {padding: token(`spacing.${padding}`)}\n : undefined;\n\n const popoverContent = popover.render(\n <div\n className={cx(styles.content, className)}\n data-testid={dataTestId}\n ref={ref}\n style={{...paddingStyle, ...widthStyle, ...style}}>\n {content}\n </div>,\n {\n placement,\n alignment,\n offsetX,\n offsetY,\n className: styles.gap[placement],\n style: {minWidth: 'anchor-size(width)'},\n },\n );\n\n if (anchorRef != null && !isReactNode(children)) {\n return <>{popoverContent}</>;\n }\n\n return (\n <>\n <div className={styles.anchor} ref={wrapperRef}>\n {children}\n </div>\n {popoverContent}\n </>\n );\n}\n\nPopover.displayName = 'Popover';\n"]}
1
+ {"version":3,"sources":["../src/internal/useFocusTrap.ts","../src/components/Popover/usePopover.tsx","../src/components/Popover/Popover.tsx"],"names":["useRef","useCallback","useEffect","css","useLayer","jsxs","VisuallyHidden","jsx","Button","X","useMemo","styles","useIsomorphicLayoutEffect","token","cx","isReactNode","Fragment"],"mappings":"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","file":"chunk-FKZATUBG.cjs","sourcesContent":["'use client';\n\nimport {useCallback, useEffect, useRef} from 'react';\n\nconst FOCUSABLE_SELECTOR =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])';\n\nexport interface UseFocusTrapOptions {\n isActive: boolean;\n onEscape?: () => void;\n}\n\nexport interface UseFocusTrapReturn<T extends HTMLElement = HTMLElement> {\n containerRef: React.RefObject<T | null>;\n focusFirst: () => void;\n}\n\nfunction getFocusableElements(container: HTMLElement): HTMLElement[] {\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n );\n}\n\nfunction focusFirstDescendant(container: HTMLElement): void {\n getFocusableElements(container)[0]?.focus();\n}\n\nfunction focusLastDescendant(container: HTMLElement): void {\n const elements = getFocusableElements(container);\n elements.at(-1)?.focus();\n}\n\nexport function useFocusTrap<T extends HTMLElement = HTMLElement>({\n isActive,\n onEscape,\n}: UseFocusTrapOptions): UseFocusTrapReturn<T> {\n const containerRef = useRef<T>(null);\n\n const focusFirst = useCallback(() => {\n if (containerRef.current != null) {\n focusFirstDescendant(containerRef.current);\n }\n }, []);\n\n useEffect(() => {\n if (!isActive) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const container = containerRef.current;\n if (container == null) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n onEscape?.();\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n const focusable = getFocusableElements(container);\n if (focusable.length === 0) {\n return;\n }\n\n const first = focusable[0];\n const last = focusable.at(-1);\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault();\n focusLastDescendant(container);\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault();\n focusFirstDescendant(container);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [isActive, onEscape]);\n\n return {containerRef, focusFirst};\n}\n","'use client';\n\nimport {X} from 'lucide-react';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n type ReactNode,\n type RefCallback,\n} from 'react';\nimport {Button} from 'components/Button';\nimport {VisuallyHidden} from 'internal';\nimport {useFocusTrap} from 'internal/useFocusTrap';\nimport {useLayer, type ContextRenderProps} from 'internal/useLayer';\nimport {css} from 'styled-system/css';\n\nexport type {LayerAlignment, LayerPlacement} from 'internal/useLayer';\n\nexport interface UsePopoverOptions {\n /**\n * Accessible label for the close button rendered when `hasCloseButton` is\n * `true`. Defaults to `'Close popover'`.\n */\n closeButtonLabel?: string;\n /**\n * When `true`, focus moves to the first focusable element inside the popover\n * when it opens. Defaults to `true`.\n */\n hasAutoFocus?: boolean;\n /**\n * When `true`, renders a visually hidden close button inside the popover so\n * assistive technology users can dismiss it. Defaults to `true`.\n */\n hasCloseButton?: boolean;\n /**\n * When `true`, wraps the content in a styled surface (background, border,\n * shadow). Set to `false` to render unstyled content. Defaults to `true`.\n */\n hasSurface?: boolean;\n /**\n * When `true`, the popover can be dismissed by clicking outside or pressing\n * Escape. Defaults to `true`.\n */\n isDismissable?: boolean;\n /**\n * Accessible label applied to the popover content via `aria-label`.\n */\n label?: string;\n /**\n * Id applied to the underlying layer element. Falls back to a generated id.\n * Supply this when another element needs a stable `aria-controls` reference\n * to the popover.\n */\n layerId?: string;\n /**\n * Called after the popover is hidden, including via light dismiss.\n */\n onHide?: () => void;\n /**\n * Called after the popover is shown.\n */\n onShow?: () => void;\n /**\n * ARIA role for the popover content. Defaults to `'dialog'`; use `'menu'` for\n * menu-style popovers.\n */\n role?: 'dialog' | 'menu';\n}\n\nexport interface UsePopoverReturn {\n /**\n * CSS anchor name tying the popover content to the trigger for positioning.\n */\n anchorId: string;\n /**\n * Ref attached to the popover content element.\n */\n contentRef: React.RefObject<HTMLDivElement | null>;\n /**\n * Hides the popover.\n */\n hide: () => void;\n /**\n * Id of the underlying layer element, matching `triggerProps['aria-controls']`.\n */\n id: string;\n /**\n * Whether the popover is currently open.\n */\n isOpen: boolean;\n /**\n * Renders the given children inside the popover layer.\n */\n render: (children: ReactNode, props?: ContextRenderProps) => ReactNode;\n /**\n * Shows the popover. Pass `isAutoFocusSkipped` to suppress moving focus into\n * the content for this open.\n */\n show: (options?: {isAutoFocusSkipped?: boolean}) => void;\n /**\n * Toggles the popover between open and closed.\n */\n toggle: () => void;\n /**\n * ARIA props to spread onto the trigger element.\n */\n triggerProps: {\n 'aria-controls': string;\n 'aria-expanded': boolean;\n 'aria-haspopup': 'dialog' | 'menu';\n };\n /**\n * Ref callback to attach to the trigger element for anchor positioning.\n */\n triggerRef: RefCallback<HTMLElement>;\n}\n\nconst styles = {\n surface: css({\n position: 'relative',\n bg: 'bg',\n borderRadius: 'md',\n boxShadow: 'lg',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'border',\n }),\n} as const;\n\nexport function usePopover({\n onShow,\n onHide,\n isDismissable = true,\n hasAutoFocus = true,\n hasSurface = true,\n hasCloseButton = true,\n closeButtonLabel = 'Close popover',\n label,\n role = 'dialog',\n layerId,\n}: UsePopoverOptions = {}): UsePopoverReturn {\n const skipAutoFocusRef = useRef(false);\n // Guards against a light-dismiss close immediately re-opening the popover.\n // When the trigger is clicked while the popover is open, the browser's native\n // light dismiss closes it (firing `onHide`) *before* the trigger's own click\n // handler runs `toggle()` — which would otherwise re-open it. The flag is\n // cleared on the next animation frame: the browser never paints mid-gesture,\n // so it is reliably still set when the spurious click arrives, yet cleared\n // before any genuine later click.\n const isDismissingRef = useRef(false);\n\n const handleHide = useCallback(() => {\n isDismissingRef.current = true;\n requestAnimationFrame(() => {\n isDismissingRef.current = false;\n });\n onHide?.();\n }, [onHide]);\n\n const layer = useLayer({\n isDismissable,\n id: layerId,\n onShow,\n onHide: handleHide,\n });\n const {containerRef: contentRef, focusFirst} = useFocusTrap<HTMLDivElement>({\n isActive: layer.isOpen,\n onEscape: layer.hide,\n });\n\n useEffect(() => {\n if (!layer.isOpen) {\n skipAutoFocusRef.current = false;\n return;\n }\n\n if (hasAutoFocus && !skipAutoFocusRef.current) {\n requestAnimationFrame(() => focusFirst());\n }\n }, [focusFirst, hasAutoFocus, layer.isOpen]);\n\n const show = useCallback(\n (options?: {isAutoFocusSkipped?: boolean}) => {\n skipAutoFocusRef.current = options?.isAutoFocusSkipped ?? false;\n layer.show();\n },\n [layer],\n );\n\n const toggle = useCallback(() => {\n if (isDismissingRef.current) {\n return;\n }\n\n if (layer.isOpen) {\n layer.hide();\n return;\n }\n\n show();\n }, [layer, show]);\n\n const render = useCallback(\n (children: ReactNode, props?: ContextRenderProps): ReactNode => {\n return layer.render(\n <div\n aria-label={label}\n className={hasSurface ? styles.surface : undefined}\n ref={contentRef}\n role={role}>\n {children}\n {hasCloseButton ? (\n <VisuallyHidden>\n <Button\n icon={X}\n isIconOnly\n label={closeButtonLabel}\n onClick={layer.hide}\n size=\"sm\"\n variant=\"ghost\"\n />\n </VisuallyHidden>\n ) : null}\n </div>,\n {\n ...props,\n className: props?.className,\n },\n );\n },\n [\n closeButtonLabel,\n contentRef,\n hasCloseButton,\n hasSurface,\n label,\n layer,\n role,\n ],\n );\n\n const triggerProps = useMemo(\n () => ({\n 'aria-controls': layer.id,\n 'aria-expanded': layer.isOpen,\n 'aria-haspopup': role,\n }),\n [layer.id, layer.isOpen, role],\n );\n\n return useMemo(\n () => ({\n anchorId: layer.anchorId,\n contentRef,\n hide: layer.hide,\n id: layer.id,\n isOpen: layer.isOpen,\n render,\n show,\n toggle,\n triggerProps,\n triggerRef: layer.ref,\n }),\n [\n contentRef,\n layer.anchorId,\n layer.hide,\n layer.id,\n layer.isOpen,\n layer.ref,\n render,\n show,\n toggle,\n triggerProps,\n ],\n );\n}\n","'use client';\n\nimport {\n useCallback,\n useRef,\n type CSSProperties,\n type ReactNode,\n type Ref,\n type RefObject,\n} from 'react';\nimport {usePopover} from 'components/Popover/usePopover';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\nimport {useIsomorphicLayoutEffect} from 'internal/useIsomorphicLayoutEffect';\nimport type {LayerAlignment, LayerPlacement} from 'internal/useLayer';\nimport {css} from 'styled-system/css';\nimport {token} from 'styled-system/tokens';\n\nexport interface PopoverProps {\n /**\n * Alignment along the placement axis.\n * @default 'start'\n */\n alignment?: LayerAlignment;\n /**\n * External trigger element. When provided without children, Popover attaches\n * click and ARIA behavior directly to this element.\n */\n anchorRef?: RefObject<HTMLElement | null>;\n /**\n * Trigger content. Must contain a `<button>` or `[role=\"button\"]`.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the popover content.\n */\n className?: string;\n /**\n * Label for the hidden close button.\n * @default 'Close popover'\n */\n closeButtonLabel?: string;\n /**\n * Content displayed inside the popover dialog.\n */\n content: ReactNode;\n /**\n * Test ID applied to the popover content.\n */\n 'data-testid'?: string;\n /**\n * Whether to focus the first focusable item after opening.\n * @default true\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to include a keyboard-accessible close button.\n * @default true\n */\n hasCloseButton?: boolean;\n /**\n * Id applied to the popover content element. Falls back to a generated id.\n * Supply this when another element needs a stable `aria-controls` reference\n * to the popover.\n */\n id?: string;\n /**\n * Whether clicking outside or pressing Escape closes the popover.\n * @default true\n */\n isDismissable?: boolean;\n /**\n * Whether trigger interactions open the popover.\n * @default true\n */\n isEnabled?: boolean;\n /**\n * Controlled open state.\n */\n isOpen?: boolean;\n /**\n * Accessible label for the popover dialog.\n */\n label?: string;\n /**\n * Gap in pixels between the popover and its trigger along the inline axis\n * (for `start`/`end` placements). Applied as a logical margin so it stays on\n * the trigger-facing side even when the popover flips.\n */\n offsetX?: number;\n /**\n * Gap in pixels between the popover and its trigger along the block axis (for\n * `above`/`below` placements). Applied as a logical margin so it stays on the\n * trigger-facing side even when the popover flips.\n */\n offsetY?: number;\n /**\n * Callback fired when open state changes.\n */\n onOpenChange?: (isOpen: boolean) => void;\n /**\n * Inner padding of the popover content.\n * @default 0\n */\n padding?: SpacingToken;\n /**\n * Position relative to the trigger.\n * @default 'below'\n */\n placement?: LayerPlacement;\n /**\n * Ref forwarded to the popover content element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * ARIA role for the floating content.\n * @default 'dialog'\n */\n role?: 'dialog' | 'menu';\n /**\n * Inline styles applied to the popover content.\n */\n style?: CSSProperties;\n /**\n * Width of the popover content.\n */\n width?: number | string;\n}\n\nconst BUTTON_SELECTOR = 'button, [role=\"button\"]';\n\nconst styles = {\n anchor: css({\n display: 'inline-flex',\n }),\n content: css({}),\n gap: {\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\nfunction findTriggerButton(element: HTMLElement): HTMLElement | null {\n if (element.matches(BUTTON_SELECTOR)) {\n return element;\n }\n\n return element.querySelector<HTMLElement>(BUTTON_SELECTOR);\n}\n\n/**\n * A click-triggered floating dialog anchored to a trigger element.\n */\nexport function Popover({\n anchorRef,\n children,\n content,\n placement = 'below',\n alignment = 'start',\n isOpen,\n onOpenChange,\n offsetX,\n offsetY,\n isEnabled = true,\n width,\n label,\n hasCloseButton,\n isDismissable,\n closeButtonLabel,\n padding,\n ref,\n hasAutoFocus,\n className,\n style,\n role,\n id,\n 'data-testid': dataTestId,\n}: PopoverProps): React.JSX.Element {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const isControlled = isOpen !== undefined;\n\n const popover = usePopover({\n closeButtonLabel,\n hasAutoFocus,\n hasCloseButton,\n isDismissable,\n label,\n layerId: id,\n onHide: () => onOpenChange?.(false),\n onShow: () => onOpenChange?.(true),\n role,\n });\n\n const handleTriggerClick = useCallback(() => {\n if (!isEnabled) {\n return;\n }\n\n popover.toggle();\n }, [isEnabled, popover]);\n\n const handleTriggerKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleTriggerClick();\n }\n },\n [handleTriggerClick],\n );\n\n // ARIA and listeners are applied imperatively because the trigger button can\n // be any element the consumer renders — nested anywhere inside `children`, or\n // an entirely external element via `anchorRef` — so Popover cannot inject\n // props through JSX. This is safe: React only reconciles attributes present\n // in its own virtual DOM, so it never clobbers these imperatively-set ones on\n // re-render. The only dynamic attribute, `aria-expanded`, stays in sync\n // because `popover.triggerProps` is memoized on the open state, so this\n // callback (and the effect below that re-runs it) re-applies the fresh value\n // on every toggle. Keep `triggerProps` in the dep arrays or that sync breaks.\n const attachTrigger = useCallback(\n (button: HTMLElement) => {\n button.setAttribute(\n 'aria-haspopup',\n popover.triggerProps['aria-haspopup'],\n );\n button.setAttribute(\n 'aria-expanded',\n String(popover.triggerProps['aria-expanded']),\n );\n button.setAttribute(\n 'aria-controls',\n popover.triggerProps['aria-controls'],\n );\n button.addEventListener('click', handleTriggerClick);\n\n const needsKeyDown =\n button.tagName !== 'BUTTON' && button.getAttribute('role') === 'button';\n if (needsKeyDown) {\n button.addEventListener('keydown', handleTriggerKeyDown);\n }\n\n return () => {\n button.removeAttribute('aria-haspopup');\n button.removeAttribute('aria-expanded');\n button.removeAttribute('aria-controls');\n button.removeEventListener('click', handleTriggerClick);\n if (needsKeyDown) {\n button.removeEventListener('keydown', handleTriggerKeyDown);\n }\n };\n },\n [handleTriggerClick, handleTriggerKeyDown, popover.triggerProps],\n );\n\n useIsomorphicLayoutEffect(() => {\n const anchor = anchorRef?.current ?? wrapperRef.current;\n if (anchor == null) {\n return;\n }\n\n popover.triggerRef(anchor);\n const trigger = findTriggerButton(anchor);\n if (trigger == null || !isEnabled) {\n return () => {\n popover.triggerRef(null);\n };\n }\n\n const detach = attachTrigger(trigger);\n return () => {\n popover.triggerRef(null);\n detach();\n };\n }, [anchorRef, attachTrigger, isEnabled, popover]);\n\n useIsomorphicLayoutEffect(() => {\n if (!isControlled) {\n return;\n }\n\n if (isOpen === true && !popover.isOpen) {\n popover.show();\n } else if (isOpen === false && popover.isOpen) {\n popover.hide();\n }\n }, [isControlled, isOpen, popover]);\n\n const widthStyle =\n width == null\n ? undefined\n : {width: typeof width === 'number' ? `${width}px` : width};\n\n const paddingStyle =\n padding != null && padding !== 0\n ? {padding: token(`spacing.${padding}`)}\n : undefined;\n\n const popoverContent = popover.render(\n <div\n className={cx(styles.content, className)}\n data-testid={dataTestId}\n ref={ref}\n style={{...paddingStyle, ...widthStyle, ...style}}>\n {content}\n </div>,\n {\n placement,\n alignment,\n offsetX,\n offsetY,\n className: styles.gap[placement],\n style: {minWidth: 'anchor-size(width)'},\n },\n );\n\n if (anchorRef != null && !isReactNode(children)) {\n return <>{popoverContent}</>;\n }\n\n return (\n <>\n <div className={styles.anchor} ref={wrapperRef}>\n {children}\n </div>\n {popoverContent}\n </>\n );\n}\n\nPopover.displayName = 'Popover';\n"]}
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkZKSEIA5Q_cjs = require('./chunk-ZKSEIA5Q.cjs');
5
- var chunkHIFJC2HY_cjs = require('./chunk-HIFJC2HY.cjs');
4
+ var chunkLDKE723G_cjs = require('./chunk-LDKE723G.cjs');
5
+ var chunk4VYOE2HE_cjs = require('./chunk-4VYOE2HE.cjs');
6
6
  var chunkXPHXAZCE_cjs = require('./chunk-XPHXAZCE.cjs');
7
7
  var chunkQAO6QMNQ_cjs = require('./chunk-QAO6QMNQ.cjs');
8
8
  var chunkZ6RT3WPE_cjs = require('./chunk-Z6RT3WPE.cjs');
@@ -159,9 +159,9 @@ function RadioGroup({
159
159
  }),
160
160
  [isDisabled, isRequired, nameId, onChange, orientation, size, value]
161
161
  );
162
- const necessity = chunkHIFJC2HY_cjs.getNecessity(isOptional, isRequired);
162
+ const necessity = chunk4VYOE2HE_cjs.getNecessity(isOptional, isRequired);
163
163
  return /* @__PURE__ */ jsxRuntime.jsx(
164
- chunkHIFJC2HY_cjs.Field,
164
+ chunk4VYOE2HE_cjs.Field,
165
165
  {
166
166
  className,
167
167
  "data-testid": dataTestId,
@@ -236,7 +236,7 @@ function RadioGroupItem({
236
236
  /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: classes.radio, children: isChecked ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.dot }) : null })
237
237
  ] });
238
238
  return /* @__PURE__ */ jsxRuntime.jsx(
239
- chunkZKSEIA5Q_cjs.Item,
239
+ chunkLDKE723G_cjs.Item,
240
240
  {
241
241
  className,
242
242
  "data-testid": dataTestId,
@@ -257,5 +257,5 @@ RadioGroupItem.displayName = "RadioGroupItem";
257
257
 
258
258
  exports.RadioGroup = RadioGroup;
259
259
  exports.RadioGroupItem = RadioGroupItem;
260
- //# sourceMappingURL=chunk-M7ADKAJB.cjs.map
261
- //# sourceMappingURL=chunk-M7ADKAJB.cjs.map
260
+ //# sourceMappingURL=chunk-FNBOLEST.cjs.map
261
+ //# sourceMappingURL=chunk-FNBOLEST.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/RadioGroup/RadioGroup.recipe.ts","../src/components/RadioGroup/RadioGroupContext.tsx","../src/components/RadioGroup/RadioGroup.tsx","../src/components/RadioGroup/RadioGroupItem.tsx"],"names":["cva","sva","createContext","useId","isReactNode","getStatusMessageID","getDescribedBy","useMemo","getNecessity","jsx","Field","use","jsxs","Item"],"mappings":"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","file":"chunk-M7ADKAJB.cjs","sourcesContent":["import {cva, sva, type RecipeVariantProps} from 'styled-system/css';\n\n/**\n * Group container layout — single element with an orientation variant.\n */\nexport const radioGroupRecipe = cva({\n base: {\n display: 'flex',\n },\n variants: {\n orientation: {\n vertical: {\n flexDirection: 'column',\n gap: '0.5',\n },\n horizontal: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n columnGap: '4',\n rowGap: '0',\n },\n },\n },\n defaultVariants: {\n orientation: 'vertical',\n },\n});\n\nexport type RadioGroupVariants = RecipeVariantProps<typeof radioGroupRecipe>;\n\n/**\n * Individual radio item — multi-slot recipe for the control, its visual\n * radio circle, the selection dot, and the clickable label.\n */\nexport const radioGroupItemRecipe = sva({\n slots: ['controlWrap', 'input', 'radio', 'dot', 'label'],\n base: {\n controlWrap: {\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n borderRadius: 'full',\n isolation: 'isolate',\n '&:has(input:focus-visible)': {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n input: {\n position: 'absolute',\n inset: 0,\n m: 0,\n p: 0,\n opacity: 0,\n cursor: 'pointer',\n zIndex: 1,\n _disabled: {\n cursor: 'not-allowed',\n },\n },\n radio: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'border.emphasized',\n borderRadius: 'full',\n bg: 'bg',\n pointerEvents: 'none',\n },\n dot: {\n borderRadius: 'full',\n bg: 'fg.onPrimary',\n },\n label: {\n cursor: 'pointer',\n },\n },\n variants: {\n size: {\n sm: {\n controlWrap: {w: '5', h: '5'},\n radio: {w: '4.5', h: '4.5'},\n dot: {w: '2', h: '2'},\n },\n md: {\n controlWrap: {w: '6', h: '6'},\n radio: {w: '5.5', h: '5.5'},\n dot: {w: '2.5', h: '2.5'},\n },\n lg: {\n controlWrap: {w: '7', h: '7'},\n radio: {w: '6.5', h: '6.5'},\n dot: {w: '3', h: '3'},\n },\n },\n isChecked: {\n true: {\n radio: {bg: 'primary', borderColor: 'primary'},\n },\n },\n isDisabled: {\n true: {\n radio: {opacity: 0.55},\n label: {color: 'fg.disabled', cursor: 'not-allowed'},\n },\n },\n },\n defaultVariants: {\n size: 'md',\n isChecked: false,\n isDisabled: false,\n },\n});\n\nexport type RadioGroupItemVariants = RecipeVariantProps<\n typeof radioGroupItemRecipe\n>;\n","'use client';\n\nimport {createContext} from 'react';\n\nexport type RadioGroupOrientation = 'horizontal' | 'vertical';\nexport type RadioGroupSize = 'sm' | 'md' | 'lg';\n\nexport interface RadioGroupContextValue {\n isDisabled: boolean;\n isRequired?: boolean;\n name: string;\n onChange: (value: string) => void;\n orientation: RadioGroupOrientation;\n size: RadioGroupSize;\n value: string;\n}\n\nexport const RadioGroupContext = createContext<RadioGroupContextValue | null>(\n null,\n);\n\nRadioGroupContext.displayName = 'RadioGroupContext';\n","'use client';\n\nimport {\n useId,\n useMemo,\n type CSSProperties,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {\n Field,\n getNecessity,\n type FieldNecessity,\n type InputStatus,\n} from 'components/Field';\nimport {getDescribedBy, getStatusMessageID} from 'components/Field/inputUtils';\nimport {radioGroupRecipe} from 'components/RadioGroup/RadioGroup.recipe';\nimport {\n RadioGroupContext,\n type RadioGroupOrientation,\n type RadioGroupSize,\n} from 'components/RadioGroup/RadioGroupContext';\nimport isReactNode from 'internal/isReactNode';\n\nexport type {RadioGroupOrientation} from 'components/RadioGroup/RadioGroupContext';\n\nexport type RadioGroupProps = {\n /**\n * Radio list items to render.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the field root.\n */\n className?: string;\n /**\n * Test ID applied to the field root.\n */\n 'data-testid'?: string;\n /**\n * Supporting text displayed below the label.\n */\n description?: ReactNode;\n /**\n * Whether all radio items are disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether to visually hide the label.\n * @default false\n */\n isLabelHidden?: boolean;\n /**\n * Label text for the radio group.\n */\n label: string;\n /**\n * Tooltip content shown next to the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Callback fired when the selected value changes.\n * Memoize with `useCallback` to avoid unnecessary re-renders of radio items.\n */\n onChange: (value: string) => void;\n /**\n * Layout direction of the radio items.\n * @default 'vertical'\n */\n orientation?: RadioGroupOrientation;\n /**\n * Ref forwarded to the field root.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Size of the radio controls.\n * @default 'md'\n */\n size?: RadioGroupSize;\n /**\n * Validation status displayed below the group.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the field root.\n */\n style?: CSSProperties;\n /**\n * The currently selected value.\n */\n value: string;\n} & FieldNecessity;\n\n/**\n * A controlled radio group for single-value selection.\n */\nexport function RadioGroup({\n children,\n className,\n 'data-testid': dataTestId,\n description,\n isDisabled = false,\n isLabelHidden = false,\n isOptional,\n isRequired,\n label,\n labelTooltip,\n onChange,\n orientation = 'vertical',\n ref,\n size = 'md',\n status,\n style,\n value,\n}: RadioGroupProps): React.JSX.Element {\n const nameId = useId();\n const inputId = useId();\n const labelId = `${inputId}-label`;\n const descriptionID = isReactNode(description)\n ? `${inputId}-description`\n : undefined;\n const statusMessageID = getStatusMessageID(inputId, status);\n const describedBy = getDescribedBy(descriptionID, statusMessageID);\n const contextValue = useMemo(\n () => ({\n isDisabled,\n isRequired,\n name: nameId,\n onChange,\n orientation,\n size,\n value,\n }),\n [isDisabled, isRequired, nameId, onChange, orientation, size, value],\n );\n\n const necessity = getNecessity(isOptional, isRequired);\n\n return (\n <Field\n className={className}\n data-testid={dataTestId}\n inputId={inputId}\n isDisabled={isDisabled}\n isLabelHidden={isLabelHidden}\n {...necessity}\n label={label}\n labelAs=\"span\"\n labelId={labelId}\n labelTooltip={labelTooltip}\n ref={ref}\n status={\n status == null ? undefined : {...status, messageID: statusMessageID}\n }\n statusVariant=\"detached\"\n style={style}>\n <div\n aria-describedby={describedBy}\n aria-invalid={status?.type === 'error' || undefined}\n aria-labelledby={labelId}\n aria-orientation={orientation}\n aria-required={isRequired ?? undefined}\n className={radioGroupRecipe({orientation})}\n id={inputId}\n role=\"radiogroup\">\n <RadioGroupContext value={contextValue}>{children}</RadioGroupContext>\n </div>\n </Field>\n );\n}\n\nRadioGroup.displayName = 'RadioGroup';\n","'use client';\n\nimport {use, useId, type CSSProperties, type ReactNode, type Ref} from 'react';\nimport {Item} from 'components/Item';\nimport {radioGroupItemRecipe} from 'components/RadioGroup/RadioGroup.recipe';\nimport {RadioGroupContext} from 'components/RadioGroup/RadioGroupContext';\nimport isReactNode from 'internal/isReactNode';\n\nexport interface RadioGroupItemProps {\n /**\n * Additional CSS class names applied to the item root.\n */\n className?: string;\n /**\n * Test ID applied to the item root.\n */\n 'data-testid'?: string;\n /**\n * Supporting text displayed below the item label.\n */\n description?: ReactNode;\n /**\n * Content rendered after the label and description.\n */\n endContent?: ReactNode;\n /**\n * Whether this radio item is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Label text for the radio item.\n */\n label: string;\n /**\n * Ref forwarded to the item root.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Content rendered after the radio control and before the label.\n */\n startContent?: ReactNode;\n /**\n * Inline styles applied to the item root.\n */\n style?: CSSProperties;\n /**\n * Value represented by this radio item.\n */\n value: string;\n}\n\n/**\n * An individual radio option within a `RadioGroup`.\n */\nexport function RadioGroupItem({\n className,\n 'data-testid': dataTestId,\n description,\n endContent,\n isDisabled: isItemDisabled = false,\n label,\n ref,\n startContent,\n style,\n value,\n}: RadioGroupItemProps): React.JSX.Element {\n const context = use(RadioGroupContext);\n if (context == null) {\n throw new Error('RadioGroupItem must be used within a RadioGroup');\n }\n\n const id = useId();\n const descriptionId = useId();\n const isDisabled = context.isDisabled || isItemDisabled;\n const isChecked = context.value === value;\n const size = context.size;\n const classes = radioGroupItemRecipe({size, isChecked, isDisabled});\n const control = (\n <span className={classes.controlWrap}>\n <input\n aria-describedby={isReactNode(description) ? descriptionId : undefined}\n checked={isChecked}\n className={classes.input}\n disabled={isDisabled}\n id={id}\n name={context.name}\n onChange={() => context.onChange(value)}\n required={context.isRequired}\n type=\"radio\"\n value={value}\n />\n <span aria-hidden=\"true\" className={classes.radio}>\n {isChecked ? <span className={classes.dot} /> : null}\n </span>\n </span>\n );\n\n return (\n <Item\n className={className}\n data-testid={dataTestId}\n description={\n isReactNode(description) ? (\n <span id={descriptionId}>{description}</span>\n ) : undefined\n }\n endContent={endContent}\n endContentPosition=\"inline\"\n isDisabled={isDisabled}\n label={\n <label className={classes.label} htmlFor={id}>\n {label}\n </label>\n }\n leadingContent={control}\n ref={ref}\n startContent={startContent}\n style={style}\n width={context.orientation === 'horizontal' ? 'auto' : 'full'}\n />\n );\n}\n\nRadioGroupItem.displayName = 'RadioGroupItem';\n"]}
1
+ {"version":3,"sources":["../src/components/RadioGroup/RadioGroup.recipe.ts","../src/components/RadioGroup/RadioGroupContext.tsx","../src/components/RadioGroup/RadioGroup.tsx","../src/components/RadioGroup/RadioGroupItem.tsx"],"names":["cva","sva","createContext","useId","isReactNode","getStatusMessageID","getDescribedBy","useMemo","getNecessity","jsx","Field","use","jsxs","Item"],"mappings":"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","file":"chunk-FNBOLEST.cjs","sourcesContent":["import {cva, sva, type RecipeVariantProps} from 'styled-system/css';\n\n/**\n * Group container layout — single element with an orientation variant.\n */\nexport const radioGroupRecipe = cva({\n base: {\n display: 'flex',\n },\n variants: {\n orientation: {\n vertical: {\n flexDirection: 'column',\n gap: '0.5',\n },\n horizontal: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n columnGap: '4',\n rowGap: '0',\n },\n },\n },\n defaultVariants: {\n orientation: 'vertical',\n },\n});\n\nexport type RadioGroupVariants = RecipeVariantProps<typeof radioGroupRecipe>;\n\n/**\n * Individual radio item — multi-slot recipe for the control, its visual\n * radio circle, the selection dot, and the clickable label.\n */\nexport const radioGroupItemRecipe = sva({\n slots: ['controlWrap', 'input', 'radio', 'dot', 'label'],\n base: {\n controlWrap: {\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n borderRadius: 'full',\n isolation: 'isolate',\n '&:has(input:focus-visible)': {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n input: {\n position: 'absolute',\n inset: 0,\n m: 0,\n p: 0,\n opacity: 0,\n cursor: 'pointer',\n zIndex: 1,\n _disabled: {\n cursor: 'not-allowed',\n },\n },\n radio: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'border.emphasized',\n borderRadius: 'full',\n bg: 'bg',\n pointerEvents: 'none',\n },\n dot: {\n borderRadius: 'full',\n bg: 'fg.onPrimary',\n },\n label: {\n cursor: 'pointer',\n },\n },\n variants: {\n size: {\n sm: {\n controlWrap: {w: '5', h: '5'},\n radio: {w: '4.5', h: '4.5'},\n dot: {w: '2', h: '2'},\n },\n md: {\n controlWrap: {w: '6', h: '6'},\n radio: {w: '5.5', h: '5.5'},\n dot: {w: '2.5', h: '2.5'},\n },\n lg: {\n controlWrap: {w: '7', h: '7'},\n radio: {w: '6.5', h: '6.5'},\n dot: {w: '3', h: '3'},\n },\n },\n isChecked: {\n true: {\n radio: {bg: 'primary', borderColor: 'primary'},\n },\n },\n isDisabled: {\n true: {\n radio: {opacity: 0.55},\n label: {color: 'fg.disabled', cursor: 'not-allowed'},\n },\n },\n },\n defaultVariants: {\n size: 'md',\n isChecked: false,\n isDisabled: false,\n },\n});\n\nexport type RadioGroupItemVariants = RecipeVariantProps<\n typeof radioGroupItemRecipe\n>;\n","'use client';\n\nimport {createContext} from 'react';\n\nexport type RadioGroupOrientation = 'horizontal' | 'vertical';\nexport type RadioGroupSize = 'sm' | 'md' | 'lg';\n\nexport interface RadioGroupContextValue {\n isDisabled: boolean;\n isRequired?: boolean;\n name: string;\n onChange: (value: string) => void;\n orientation: RadioGroupOrientation;\n size: RadioGroupSize;\n value: string;\n}\n\nexport const RadioGroupContext = createContext<RadioGroupContextValue | null>(\n null,\n);\n\nRadioGroupContext.displayName = 'RadioGroupContext';\n","'use client';\n\nimport {\n useId,\n useMemo,\n type CSSProperties,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {\n Field,\n getNecessity,\n type FieldNecessity,\n type InputStatus,\n} from 'components/Field';\nimport {getDescribedBy, getStatusMessageID} from 'components/Field/inputUtils';\nimport {radioGroupRecipe} from 'components/RadioGroup/RadioGroup.recipe';\nimport {\n RadioGroupContext,\n type RadioGroupOrientation,\n type RadioGroupSize,\n} from 'components/RadioGroup/RadioGroupContext';\nimport isReactNode from 'internal/isReactNode';\n\nexport type {RadioGroupOrientation} from 'components/RadioGroup/RadioGroupContext';\n\nexport type RadioGroupProps = {\n /**\n * Radio list items to render.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the field root.\n */\n className?: string;\n /**\n * Test ID applied to the field root.\n */\n 'data-testid'?: string;\n /**\n * Supporting text displayed below the label.\n */\n description?: ReactNode;\n /**\n * Whether all radio items are disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether to visually hide the label.\n * @default false\n */\n isLabelHidden?: boolean;\n /**\n * Label text for the radio group.\n */\n label: string;\n /**\n * Tooltip content shown next to the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Callback fired when the selected value changes.\n * Memoize with `useCallback` to avoid unnecessary re-renders of radio items.\n */\n onChange: (value: string) => void;\n /**\n * Layout direction of the radio items.\n * @default 'vertical'\n */\n orientation?: RadioGroupOrientation;\n /**\n * Ref forwarded to the field root.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Size of the radio controls.\n * @default 'md'\n */\n size?: RadioGroupSize;\n /**\n * Validation status displayed below the group.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the field root.\n */\n style?: CSSProperties;\n /**\n * The currently selected value.\n */\n value: string;\n} & FieldNecessity;\n\n/**\n * A controlled radio group for single-value selection.\n */\nexport function RadioGroup({\n children,\n className,\n 'data-testid': dataTestId,\n description,\n isDisabled = false,\n isLabelHidden = false,\n isOptional,\n isRequired,\n label,\n labelTooltip,\n onChange,\n orientation = 'vertical',\n ref,\n size = 'md',\n status,\n style,\n value,\n}: RadioGroupProps): React.JSX.Element {\n const nameId = useId();\n const inputId = useId();\n const labelId = `${inputId}-label`;\n const descriptionID = isReactNode(description)\n ? `${inputId}-description`\n : undefined;\n const statusMessageID = getStatusMessageID(inputId, status);\n const describedBy = getDescribedBy(descriptionID, statusMessageID);\n const contextValue = useMemo(\n () => ({\n isDisabled,\n isRequired,\n name: nameId,\n onChange,\n orientation,\n size,\n value,\n }),\n [isDisabled, isRequired, nameId, onChange, orientation, size, value],\n );\n\n const necessity = getNecessity(isOptional, isRequired);\n\n return (\n <Field\n className={className}\n data-testid={dataTestId}\n inputId={inputId}\n isDisabled={isDisabled}\n isLabelHidden={isLabelHidden}\n {...necessity}\n label={label}\n labelAs=\"span\"\n labelId={labelId}\n labelTooltip={labelTooltip}\n ref={ref}\n status={\n status == null ? undefined : {...status, messageID: statusMessageID}\n }\n statusVariant=\"detached\"\n style={style}>\n <div\n aria-describedby={describedBy}\n aria-invalid={status?.type === 'error' || undefined}\n aria-labelledby={labelId}\n aria-orientation={orientation}\n aria-required={isRequired ?? undefined}\n className={radioGroupRecipe({orientation})}\n id={inputId}\n role=\"radiogroup\">\n <RadioGroupContext value={contextValue}>{children}</RadioGroupContext>\n </div>\n </Field>\n );\n}\n\nRadioGroup.displayName = 'RadioGroup';\n","'use client';\n\nimport {use, useId, type CSSProperties, type ReactNode, type Ref} from 'react';\nimport {Item} from 'components/Item';\nimport {radioGroupItemRecipe} from 'components/RadioGroup/RadioGroup.recipe';\nimport {RadioGroupContext} from 'components/RadioGroup/RadioGroupContext';\nimport isReactNode from 'internal/isReactNode';\n\nexport interface RadioGroupItemProps {\n /**\n * Additional CSS class names applied to the item root.\n */\n className?: string;\n /**\n * Test ID applied to the item root.\n */\n 'data-testid'?: string;\n /**\n * Supporting text displayed below the item label.\n */\n description?: ReactNode;\n /**\n * Content rendered after the label and description.\n */\n endContent?: ReactNode;\n /**\n * Whether this radio item is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Label text for the radio item.\n */\n label: string;\n /**\n * Ref forwarded to the item root.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Content rendered after the radio control and before the label.\n */\n startContent?: ReactNode;\n /**\n * Inline styles applied to the item root.\n */\n style?: CSSProperties;\n /**\n * Value represented by this radio item.\n */\n value: string;\n}\n\n/**\n * An individual radio option within a `RadioGroup`.\n */\nexport function RadioGroupItem({\n className,\n 'data-testid': dataTestId,\n description,\n endContent,\n isDisabled: isItemDisabled = false,\n label,\n ref,\n startContent,\n style,\n value,\n}: RadioGroupItemProps): React.JSX.Element {\n const context = use(RadioGroupContext);\n if (context == null) {\n throw new Error('RadioGroupItem must be used within a RadioGroup');\n }\n\n const id = useId();\n const descriptionId = useId();\n const isDisabled = context.isDisabled || isItemDisabled;\n const isChecked = context.value === value;\n const size = context.size;\n const classes = radioGroupItemRecipe({size, isChecked, isDisabled});\n const control = (\n <span className={classes.controlWrap}>\n <input\n aria-describedby={isReactNode(description) ? descriptionId : undefined}\n checked={isChecked}\n className={classes.input}\n disabled={isDisabled}\n id={id}\n name={context.name}\n onChange={() => context.onChange(value)}\n required={context.isRequired}\n type=\"radio\"\n value={value}\n />\n <span aria-hidden=\"true\" className={classes.radio}>\n {isChecked ? <span className={classes.dot} /> : null}\n </span>\n </span>\n );\n\n return (\n <Item\n className={className}\n data-testid={dataTestId}\n description={\n isReactNode(description) ? (\n <span id={descriptionId}>{description}</span>\n ) : undefined\n }\n endContent={endContent}\n endContentPosition=\"inline\"\n isDisabled={isDisabled}\n label={\n <label className={classes.label} htmlFor={id}>\n {label}\n </label>\n }\n leadingContent={control}\n ref={ref}\n startContent={startContent}\n style={style}\n width={context.orientation === 'horizontal' ? 'auto' : 'full'}\n />\n );\n}\n\nRadioGroupItem.displayName = 'RadioGroupItem';\n"]}
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- import { BaseAutocompleteInput } from './chunk-UUNVNLQN.js';
2
+ import { BaseAutocompleteInput } from './chunk-MYBFODRI.js';
3
3
  import { Tag } from './chunk-LT4P67TG.js';
4
4
  import { inputStyles, inputRecipe } from './chunk-KB36TWOU.js';
5
- import { getNecessity, Field } from './chunk-PZBY3JI7.js';
5
+ import { getNecessity, Field } from './chunk-2EGYYWPB.js';
6
6
  import { getStatusMessageID, getDescribedBy } from './chunk-G6HS52US.js';
7
- import { Button } from './chunk-JJ32AVLU.js';
7
+ import { Button } from './chunk-J2TQNGUM.js';
8
8
  import { useLayer, useLatest_default, useIsomorphicLayoutEffect } from './chunk-2AY74YXP.js';
9
9
  import { mergeRefs } from './chunk-SGLIDI6R.js';
10
10
  import { isReactNode } from './chunk-2PSZAWLC.js';
@@ -671,5 +671,5 @@ function TagsInput({
671
671
  TagsInput.displayName = "TagsInput";
672
672
 
673
673
  export { TagsInput };
674
- //# sourceMappingURL=chunk-ENBVF5OB.js.map
675
- //# sourceMappingURL=chunk-ENBVF5OB.js.map
674
+ //# sourceMappingURL=chunk-FQJBEWGB.js.map
675
+ //# sourceMappingURL=chunk-FQJBEWGB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/TagsInput/TagsInput.recipe.ts","../src/internal/OverflowList.tsx","../src/components/TagsInput/TagsInput.tsx"],"names":["useRef","useState","useCallback","jsx","jsxs","Fragment"],"mappings":"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","file":"chunk-ENBVF5OB.js","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\n/**\n * Layout styling layered on top of Field's `inputRecipe`. The core input\n * chrome (border, focus ring, status colors) comes from `inputRecipe`; this\n * recipe owns the multi-line wrapper, tag/input slots, and the truncated\n * \"+N more\" overflow presentation.\n */\nexport const tagsInputRecipe = sva({\n slots: [\n 'wrapper',\n 'tag',\n 'input',\n 'endContent',\n 'overflowText',\n 'liveRegion',\n 'layerPopover',\n ],\n base: {\n wrapper: {\n cursor: 'text',\n flexWrap: 'wrap',\n alignItems: 'center',\n h: 'auto',\n },\n tag: {flexShrink: 0},\n input: {\n minW: '10',\n flex: '1 1 40px',\n },\n endContent: {\n display: 'inline-flex',\n alignItems: 'center',\n flexShrink: 0,\n },\n overflowText: {\n flexShrink: 0,\n whiteSpace: 'nowrap',\n fontSize: 'sm',\n color: 'fg.muted',\n px: '1',\n },\n liveRegion: {\n position: 'absolute',\n w: '1px',\n h: '1px',\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n whiteSpace: 'nowrap',\n },\n layerPopover: {\n w: 'anchor-size(width)',\n },\n },\n variants: {\n size: {\n sm: {},\n md: {},\n lg: {},\n },\n // Row gap + vertical padding for wrapped tags. Applied only while not\n // truncated; the size-keyed padding lives in compoundVariants.\n hasTags: {\n true: {},\n false: {},\n },\n // Collapses the wrapper to a single line for the \"+N more\" presentation.\n isTruncated: {\n true: {wrapper: {flexWrap: 'nowrap', overflow: 'hidden'}},\n false: {},\n },\n // Fixed single-line height. Size-keyed values live in compoundVariants.\n hasFixedHeight: {\n true: {},\n false: {},\n },\n // Hides the text input (when at max entries or in the collapsed view).\n isInputHidden: {\n true: {\n input: {\n position: 'absolute',\n opacity: 0,\n w: 0,\n minW: 0,\n flexBasis: 0,\n },\n },\n false: {},\n },\n },\n compoundVariants: [\n {hasTags: true, isTruncated: false, css: {wrapper: {rowGap: '1'}}},\n {\n size: 'sm',\n hasTags: true,\n isTruncated: false,\n css: {wrapper: {pt: '0px', pb: '0.5'}},\n },\n {size: 'md', hasTags: true, isTruncated: false, css: {wrapper: {py: '1'}}},\n {size: 'lg', hasTags: true, isTruncated: false, css: {wrapper: {py: '1'}}},\n {size: 'sm', hasFixedHeight: true, css: {wrapper: {h: 'component.sm'}}},\n {size: 'md', hasFixedHeight: true, css: {wrapper: {h: 'component.md'}}},\n {size: 'lg', hasFixedHeight: true, css: {wrapper: {h: 'component.lg'}}},\n ],\n defaultVariants: {\n size: 'md',\n hasTags: false,\n isTruncated: false,\n hasFixedHeight: false,\n isInputHidden: false,\n },\n});\n\nexport type TagsInputVariants = RecipeVariantProps<typeof tagsInputRecipe>;\n","'use client';\n\nimport {\n Children,\n useCallback,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport {useIsomorphicLayoutEffect} from 'internal/useIsomorphicLayoutEffect';\nimport {css} from 'styled-system/css';\n\nexport interface OverflowItem {\n child: ReactElement;\n index: number;\n}\n\nexport interface OverflowListProps {\n behavior?: 'observeParent' | 'observeSelf';\n children: ReactNode;\n className?: string;\n collapseFrom?: 'end' | 'start';\n gap?: number;\n minVisibleItems?: number;\n overflowRenderer?: (overflowItems: OverflowItem[]) => ReactNode;\n ref?: Ref<HTMLDivElement>;\n style?: CSSProperties;\n}\n\nconst styles = {\n container: css({\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n minW: 0,\n }),\n fillParent: css({\n flex: '1 1 0',\n }),\n measureContainer: css({\n position: 'absolute',\n visibility: 'hidden',\n h: 0,\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center',\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n }),\n measureIndicator: css({\n display: 'inline-flex',\n }),\n} as const;\n\nfunction getAvailableWidth(\n container: HTMLElement,\n isObservingParent: boolean,\n): number {\n if (isObservingParent && container.parentElement != null) {\n const parent = container.parentElement;\n const parentStyle = window.getComputedStyle(parent);\n const paddingLeft = Number.parseFloat(parentStyle.paddingLeft) || 0;\n const paddingRight = Number.parseFloat(parentStyle.paddingRight) || 0;\n return parent.clientWidth - paddingLeft - paddingRight;\n }\n\n return container.offsetWidth;\n}\n\nexport function OverflowList({\n behavior = 'observeSelf',\n children,\n className,\n collapseFrom = 'end',\n gap = 0,\n minVisibleItems = 0,\n overflowRenderer,\n ref,\n style,\n}: OverflowListProps): React.JSX.Element {\n // eslint-disable-next-line @eslint-react/no-children-to-array -- matches XDSOverflowList: normalizes children before width measurement\n const childArray = Children.toArray(children) as ReactElement[];\n const itemCount = childArray.length;\n const isObservingParent = behavior === 'observeParent';\n const [visibleCount, setVisibleCount] = useState(itemCount);\n const containerRef = useRef<HTMLElement | null>(null);\n const measureRef = useRef<HTMLElement | null>(null);\n\n const calculate = useCallback(() => {\n const container = containerRef.current;\n const measure = measureRef.current;\n if (container == null || measure == null) {\n return;\n }\n\n const availableWidth = Math.min(\n getAvailableWidth(container, isObservingParent),\n container.offsetWidth || Number.POSITIVE_INFINITY,\n );\n const allChildren = Array.from(measure.children) as HTMLElement[];\n const hasIndicator = allChildren.length > itemCount;\n const measuredItems = hasIndicator\n ? allChildren.slice(0, itemCount)\n : allChildren;\n const indicatorWidth = hasIndicator\n ? allChildren[allChildren.length - 1].offsetWidth\n : 0;\n\n if (measuredItems.length === 0) {\n // eslint-disable-next-line @eslint-react/set-state-in-effect -- visible count is derived from measured DOM widths\n setVisibleCount(0);\n return;\n }\n\n const measuredWidths = measuredItems.map(item => item.offsetWidth);\n const orderedWidths =\n collapseFrom === 'end' ? measuredWidths : [...measuredWidths].reverse();\n let totalWidth = 0;\n let count = 0;\n\n for (const itemWidth of orderedWidths) {\n const gapWidth = count > 0 ? gap : 0;\n const candidateWidth = totalWidth + itemWidth + gapWidth;\n const isLastItem = count === orderedWidths.length - 1;\n const reservedWidth = isLastItem\n ? 0\n : indicatorWidth + (count > 0 || indicatorWidth > 0 ? gap : 0);\n\n if (\n candidateWidth + reservedWidth > availableWidth &&\n count >= minVisibleItems\n ) {\n break;\n }\n\n totalWidth = candidateWidth;\n count++;\n }\n\n // eslint-disable-next-line @eslint-react/set-state-in-effect -- visible count is derived from measured DOM widths\n setVisibleCount(Math.max(Math.min(count, itemCount), minVisibleItems));\n }, [collapseFrom, gap, isObservingParent, itemCount, minVisibleItems]);\n\n const containerRefCallback = useCallback((element: HTMLDivElement | null) => {\n containerRef.current = element;\n }, []);\n\n const measureRefCallback = useCallback(\n (element: HTMLDivElement | null) => {\n measureRef.current = element;\n if (element != null) {\n calculate();\n }\n },\n [calculate],\n );\n\n useIsomorphicLayoutEffect(() => {\n calculate();\n }, [calculate]);\n\n useIsomorphicLayoutEffect(() => {\n const container = containerRef.current;\n if (container == null || typeof ResizeObserver === 'undefined') {\n return;\n }\n\n const target =\n isObservingParent && container.parentElement != null\n ? container.parentElement\n : container;\n const observer = new ResizeObserver(calculate);\n observer.observe(target);\n return () => observer.disconnect();\n }, [calculate, isObservingParent]);\n\n const allItems: OverflowItem[] = childArray.map((child, index) => ({\n child,\n index,\n }));\n const visibleItems =\n collapseFrom === 'end'\n ? allItems.slice(0, visibleCount)\n : allItems.slice(itemCount - visibleCount);\n const overflowItems =\n collapseFrom === 'end'\n ? allItems.slice(visibleCount)\n : allItems.slice(0, itemCount - visibleCount);\n const hasOverflow = visibleCount < itemCount;\n const measureIndicator = overflowRenderer?.(allItems);\n\n return (\n <>\n <div\n aria-hidden=\"true\"\n className={styles.measureContainer}\n inert\n ref={measureRefCallback}\n style={{gap}}>\n {childArray}\n {isReactNode(measureIndicator) ? (\n <div className={styles.measureIndicator}>{measureIndicator}</div>\n ) : null}\n </div>\n <div\n className={cx(\n styles.container,\n isObservingParent && hasOverflow ? styles.fillParent : undefined,\n className,\n )}\n ref={mergeRefs(ref, containerRefCallback)}\n style={{gap, ...style}}>\n {collapseFrom === 'start' && hasOverflow\n ? overflowRenderer?.(overflowItems)\n : null}\n {visibleItems.map(({child}) => child)}\n {collapseFrom === 'end' && hasOverflow\n ? overflowRenderer?.(overflowItems)\n : null}\n </div>\n </>\n );\n}\n","'use client';\n\nimport {X} from 'lucide-react';\nimport {\n useCallback,\n useImperativeHandle,\n useId,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {BaseAutocompleteInput} from 'components/AutocompleteInput';\nimport type {SearchableItem, SearchSource} from 'components/AutocompleteInput';\nimport {Button} from 'components/Button';\nimport {\n Field,\n getNecessity,\n type FieldNecessity,\n type InputSize,\n type InputStatus,\n} from 'components/Field';\nimport {inputRecipe, inputStyles} from 'components/Field/inputStyles';\nimport {getDescribedBy, getStatusMessageID} from 'components/Field/inputUtils';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Tag} from 'components/Tag';\nimport {tagsInputRecipe} from 'components/TagsInput/TagsInput.recipe';\nimport {OverflowList} from 'internal/OverflowList';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport useLatest from 'internal/useLatest';\nimport {useLayer} from 'internal/useLayer';\n\nexport type TagsInputChange<T extends SearchableItem> =\n | {item: T; type: 'add'}\n | {item: T; type: 'create'}\n | {item: T; type: 'remove'}\n | {items: T[]; type: 'remove-all'};\n\nexport type TagsInputOverflowBehavior =\n | 'none'\n | 'unfocusedInline'\n | 'unfocusedLayer';\n\nexport interface TagsInputHandle {\n /**\n * Blur the input.\n */\n blur(): void;\n /**\n * Focus the input.\n */\n focus(): void;\n}\n\n/**\n * Props that gate free-text tag creation.\n *\n * Selecting the \"Create …\" suggestion mints a new item from the typed text via\n * `createItem`. The default builder produces `{id, label}` (both set to the raw\n * text):\n *\n * - When that shape satisfies `T` (e.g. the default `SearchableItem`),\n * `createItem` is optional and `hasCreate` is a plain boolean toggle.\n * - When `T` has additional required fields the default builder cannot supply,\n * creation requires an explicit `createItem`, so enabling it is expressed as\n * `hasCreate` + `createItem` together (and may be omitted entirely).\n */\nexport type TagsInputCreateProps<T extends SearchableItem> = {\n id: string;\n label: string;\n} extends T\n ? {\n /**\n * Whether users can create a tag from free text.\n * @default false\n */\n hasCreate?: boolean;\n /**\n * Builds the committed item from the typed text. Optional for this item\n * type because the default builder — `rawValue => ({id: rawValue, label:\n * rawValue})` — already produces a valid item.\n */\n createItem?: (rawValue: string) => T;\n }\n :\n | {\n /**\n * Whether users can create a tag from free text.\n * @default false\n */\n hasCreate?: false;\n createItem?: never;\n }\n | {\n /**\n * Whether users can create a tag from free text.\n */\n hasCreate: true;\n /**\n * Builds the committed item from the typed text. Required for this\n * item type because it has fields the default `{id, label}` builder\n * cannot supply.\n */\n createItem: (rawValue: string) => T;\n };\n\nexport type TagsInputProps<T extends SearchableItem = SearchableItem> = {\n /**\n * Additional CSS class names applied to the input wrapper.\n */\n className?: string;\n /**\n * Test ID applied to the input wrapper.\n */\n 'data-testid'?: string;\n /**\n * Debounce delay in milliseconds before search runs.\n * @default 150\n */\n debounceMs?: number;\n /**\n * Supporting text rendered below the label.\n */\n description?: ReactNode;\n /**\n * Empty state text.\n * @default 'No results found'\n */\n emptySearchResultsText?: string;\n /**\n * Content rendered at the end of the input row.\n */\n endContent?: ReactNode;\n /**\n * Imperative focus/blur handle.\n */\n handleRef?: Ref<TagsInputHandle>;\n /**\n * Whether to focus the input on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to show a clear button that removes all tags.\n * @default false\n */\n hasClear?: boolean;\n /**\n * Whether to show bootstrap results on focus before typing.\n * @default false\n */\n hasEntriesOnFocus?: boolean;\n /**\n * Whether the input is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether to visually hide the label.\n * @default false\n */\n isLabelHidden?: boolean;\n /**\n * Whether the input is read-only. Prevents typing and hides the clear\n * button without applying disabled opacity.\n * @default false\n */\n isReadOnly?: boolean;\n /**\n * Field label.\n */\n label: string;\n /**\n * Icon shown before the label.\n */\n labelIcon?: IconComponent;\n /**\n * Tooltip content shown next to the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Maximum number of selected tags.\n */\n maxEntries?: number;\n /**\n * Maximum number of menu items.\n * @default 10\n */\n maxMenuItems?: number;\n /**\n * Called when focus leaves the tags-input.\n */\n onBlur?: (event: FocusEvent<HTMLDivElement>) => void;\n /**\n * Called when selected tags change.\n */\n onChange: (items: T[], change: TagsInputChange<T>) => void;\n /**\n * Called when focus enters the tags-input.\n */\n onFocus?: (event: FocusEvent<HTMLDivElement>) => void;\n /**\n * Called when the query changes.\n */\n onQueryChange?: (query: string) => void;\n /**\n * Placeholder text.\n */\n placeholder?: string;\n /**\n * Ref forwarded to the field root.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Custom result renderer.\n */\n renderItem?: (item: T) => ReactNode;\n /**\n * Custom tag renderer.\n */\n renderTag?: (item: T, onRemove: () => void) => ReactNode;\n /**\n * Provides results for the menu. Use `createStaticSearchSource` for\n * in-memory data, or implement {@link SearchSource} for async/remote\n * search.\n */\n searchSource: SearchSource<T>;\n /**\n * Visual size.\n * @default 'md'\n */\n size?: InputSize;\n /**\n * Icon shown before the input.\n */\n startIcon?: IconComponent;\n /**\n * Validation status displayed below the tags-input.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the input wrapper.\n */\n style?: CSSProperties;\n /**\n * Controls how tags overflow when the container is too narrow.\n * - `'none'`: Tags wrap to multiple lines (default).\n * - `'unfocusedInline'`: Single line with \"+ N more\" when unfocused; expands inline on focus.\n * - `'unfocusedLayer'`: Single line with \"+ N more\" when unfocused; expands as overlay on focus.\n * @default 'none'\n */\n tagOverflowBehavior?: TagsInputOverflowBehavior;\n /**\n * Selected items.\n */\n value: T[];\n} & FieldNecessity &\n TagsInputCreateProps<T>;\n\nconst CREATABLE_ID_PREFIX = '__silver_create__';\n\nfunction isCreatableItem<T extends SearchableItem>(item: T): boolean {\n return item.id.startsWith(CREATABLE_ID_PREFIX);\n}\n\n/**\n * Multi-select combobox that renders selected values as removable tags.\n */\nexport function TagsInput<T extends SearchableItem>({\n className,\n 'data-testid': dataTestId,\n debounceMs,\n description,\n emptySearchResultsText,\n endContent,\n createItem,\n hasAutoFocus = false,\n hasClear = false,\n hasCreate = false,\n hasEntriesOnFocus = false,\n handleRef,\n isDisabled = false,\n isLabelHidden = false,\n isReadOnly = false,\n isOptional,\n isRequired,\n label,\n labelIcon,\n labelTooltip,\n maxEntries,\n maxMenuItems,\n onBlur,\n onChange,\n onFocus,\n onQueryChange,\n placeholder,\n ref,\n renderItem,\n renderTag,\n searchSource,\n size = 'md',\n startIcon,\n status,\n style,\n tagOverflowBehavior = 'none',\n value,\n}: TagsInputProps<T>): React.JSX.Element {\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 inputRef = useRef<HTMLInputElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [isFocusedWithin, setIsFocusedWithin] = useState(false);\n const [announcement, setAnnouncement] = useState('');\n const [queryValue, setQueryValue] = useState('');\n const isLayerMode = tagOverflowBehavior === 'unfocusedLayer';\n const layer = useLayer();\n const layerContentRef = useRef<HTMLDivElement>(null);\n const selectedIDsRef = useLatest(new Set(value.map(item => item.id)));\n const isAtMax = maxEntries != null && value.length >= maxEntries;\n const isAtMaxRef = useLatest(isAtMax);\n const isTruncated =\n !isFocusedWithin && tagOverflowBehavior !== 'none' && value.length > 0;\n const classes = tagsInputRecipe({\n size,\n hasTags: value.length > 0,\n isTruncated,\n hasFixedHeight: isTruncated,\n isInputHidden: isAtMax || isTruncated,\n });\n // Collapsed single-line placeholder shown behind the layer popover: always\n // fixed-height, never hides the input.\n const placeholderClasses = tagsInputRecipe({\n size,\n isTruncated,\n hasFixedHeight: true,\n });\n\n const placeholderRef = useCallback(\n (element: HTMLElement | null) => {\n if (isLayerMode) {\n layer.ref(element);\n }\n },\n [isLayerMode, layer],\n );\n\n const isFocusInTagsInput = useCallback(\n (target: EventTarget | null): boolean => {\n if (!(target instanceof Node)) {\n return false;\n }\n if (wrapperRef.current?.contains(target)) {\n return true;\n }\n if (layerContentRef.current?.contains(target)) {\n return true;\n }\n const popoverElement = document.getElementById(layer.id);\n return popoverElement?.contains(target) ?? false;\n },\n [layer.id],\n );\n\n const filteredSource = useMemo<SearchSource<T>>(\n () => ({\n cancel: () => searchSource.cancel?.(),\n async bootstrap() {\n const results = await searchSource.bootstrap();\n return results.filter(item => !selectedIDsRef.current.has(item.id));\n },\n async search(searchQuery) {\n const results = await searchSource.search(searchQuery);\n const filteredResults = results.filter(\n item => !selectedIDsRef.current.has(item.id),\n );\n if (!hasCreate || searchQuery.trim() === '' || isAtMaxRef.current) {\n return filteredResults;\n }\n const existing = filteredResults.some(\n item => item.label.toLowerCase() === searchQuery.trim().toLowerCase(),\n );\n if (existing) {\n return filteredResults;\n }\n return [\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n {\n id: `${CREATABLE_ID_PREFIX}${searchQuery}`,\n label: `Create \"${searchQuery}\"`,\n auxiliaryData: {value: searchQuery},\n } as T,\n ...filteredResults,\n ];\n },\n }),\n [hasCreate, searchSource],\n );\n\n useImperativeHandle(\n handleRef,\n () => ({\n blur: () => inputRef.current?.blur(),\n focus: () => inputRef.current?.focus(),\n }),\n [],\n );\n\n const valueRef = useLatest(value);\n const onChangeRef = useLatest(onChange);\n\n const announce = useCallback((message: string) => {\n setAnnouncement('');\n requestAnimationFrame(() => setAnnouncement(message));\n }, []);\n\n const removeItem = useCallback(\n (item: T) => {\n onChangeRef.current(\n valueRef.current.filter(selectedItem => selectedItem.id !== item.id),\n {item, type: 'remove'},\n );\n announce(`Removed ${item.label}`);\n },\n [announce],\n );\n\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLDivElement>) => {\n const comingFromOutside = !isFocusInTagsInput(event.relatedTarget);\n setIsFocusedWithin(true);\n if (isLayerMode) {\n layer.show();\n }\n if (comingFromOutside) {\n onFocus?.(event);\n }\n },\n [isFocusInTagsInput, isLayerMode, layer, onFocus],\n );\n\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLDivElement>) => {\n if (!isFocusInTagsInput(event.relatedTarget)) {\n setIsFocusedWithin(false);\n if (isLayerMode) {\n layer.hide();\n }\n onBlur?.(event);\n }\n },\n [isFocusInTagsInput, isLayerMode, layer, onBlur],\n );\n\n const handleWrapperPointerDown = useCallback(() => {\n if (!isDisabled) {\n if (isLayerMode) {\n layer.show();\n setIsFocusedWithin(true);\n }\n document.addEventListener(\n 'click',\n event => {\n // Focus the input only when the click that completes this press lands\n // inside the TagsInput. A press on a tag may open a popover anchored to\n // it (e.g. SearchFilterInput's edit popover); since the tag's own click\n // can stop propagation, this listener instead fires on the next click\n // — which might be a control in that popover. Focusing the input then\n // would steal focus back and briefly re-open the input's surface.\n if (isFocusInTagsInput(event.target)) {\n requestAnimationFrame(() => inputRef.current?.focus());\n }\n },\n {once: true},\n );\n }\n }, [isDisabled, isFocusInTagsInput, isLayerMode, layer]);\n\n const necessity = getNecessity(isOptional, isRequired);\n\n const tokens = value.map(item => (\n <span className={classes.tag} key={item.id}>\n {renderTag == null ? (\n <Tag\n isDisabled={isDisabled}\n label={item.label}\n onRemove={() => removeItem(item)}\n size={size}\n />\n ) : (\n renderTag(item, () => removeItem(item))\n )}\n </span>\n ));\n\n const wrapperContent = (\n /* eslint-disable-next-line jsx-a11y-x/no-noninteractive-element-interactions -- pointerdown delegates to inner input for focus convenience */\n <div\n aria-label={label}\n className={cx(\n inputRecipe({\n size,\n status: status?.type,\n isDisabled,\n }),\n classes.wrapper,\n )}\n data-testid={dataTestId}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onPointerDown={handleWrapperPointerDown}\n ref={wrapperRef}\n role=\"group\">\n {startIcon != null ? (\n <span className={inputStyles.iconSlot}>\n <Icon color=\"secondary\" icon={startIcon} size=\"sm\" />\n </span>\n ) : null}\n {isTruncated ? (\n <OverflowList\n behavior=\"observeParent\"\n gap={4}\n overflowRenderer={overflowItems => (\n <span className={classes.overflowText}>\n +{overflowItems.length} more\n </span>\n )}>\n {tokens}\n </OverflowList>\n ) : (\n tokens\n )}\n <BaseAutocompleteInput\n anchorRef={wrapperRef}\n ariaDescribedBy={describedBy}\n className={classes.input}\n debounceMs={debounceMs}\n emptySearchResultsText={emptySearchResultsText}\n hasAutoFocus={hasAutoFocus}\n hasEntriesOnFocus={hasEntriesOnFocus}\n hasReopenOnSelect={hasEntriesOnFocus}\n inputId={inputId}\n isDisabled={isDisabled || isReadOnly || isAtMax}\n maxMenuItems={maxMenuItems}\n onChange={item => {\n if (item == null) {\n return;\n }\n if (isCreatableItem(item)) {\n const rawValue =\n typeof item.auxiliaryData === 'object' &&\n item.auxiliaryData != null &&\n 'value' in item.auxiliaryData\n ? String(item.auxiliaryData.value)\n : item.label;\n // `createItem` is guaranteed present for item types that need it\n // (see TagsInputCreateProps); the default builder is only reached\n // when `{id, label}` is a valid `T`, so the assertion is sound.\n const createdItem =\n createItem?.(rawValue) ??\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n ({id: rawValue, label: rawValue} as T);\n onChangeRef.current([...valueRef.current, createdItem], {\n item: createdItem,\n type: 'create',\n });\n announce(`Added ${rawValue}`);\n return;\n }\n onChangeRef.current([...valueRef.current, item], {\n item,\n type: 'add',\n });\n announce(`Added ${item.label}`);\n }}\n onKeyDown={(event: KeyboardEvent<HTMLInputElement>) => {\n if (\n event.key === 'Backspace' &&\n event.currentTarget.value === '' &&\n valueRef.current.length > 0\n ) {\n const item = valueRef.current[valueRef.current.length - 1];\n removeItem(item);\n }\n }}\n onQueryChange={nextQuery => {\n setQueryValue(nextQuery);\n onQueryChange?.(nextQuery);\n }}\n placeholder={value.length === 0 ? placeholder : undefined}\n query={queryValue}\n ref={inputRef}\n renderItem={renderItem}\n searchSource={filteredSource}\n size={size}\n value={null}\n />\n {isReactNode(endContent) ? (\n <span className={classes.endContent}>{endContent}</span>\n ) : null}\n {hasClear && value.length > 0 && !isDisabled && !isReadOnly ? (\n <Button\n icon={X}\n isIconOnly\n label={`Clear ${label}`}\n onClick={event => {\n event.stopPropagation();\n onChangeRef.current([], {\n items: valueRef.current,\n type: 'remove-all',\n });\n announce('Cleared all tags');\n }}\n size=\"sm\"\n variant=\"ghost\"\n />\n ) : null}\n <span aria-live=\"polite\" className={classes.liveRegion} role=\"status\">\n {announcement}\n </span>\n </div>\n );\n\n const popoverOverrideStyle: CSSProperties = {\n positionArea: undefined,\n positionTryFallbacks: undefined,\n top: 'anchor(top)',\n left: 'anchor(start)',\n };\n\n const inputContent = isLayerMode ? (\n <>\n <div\n className={cx(\n inputRecipe({\n size,\n status: status?.type,\n isDisabled,\n }),\n placeholderClasses.wrapper,\n )}\n onPointerDown={handleWrapperPointerDown}\n ref={placeholderRef}>\n {isTruncated ? (\n <>\n {startIcon != null ? (\n <span className={inputStyles.iconSlot}>\n <Icon color=\"secondary\" icon={startIcon} size=\"sm\" />\n </span>\n ) : null}\n <OverflowList\n behavior=\"observeParent\"\n gap={4}\n overflowRenderer={overflowItems => (\n <span className={classes.overflowText}>\n +{overflowItems.length} more\n </span>\n )}>\n {tokens}\n </OverflowList>\n </>\n ) : null}\n </div>\n {layer.render(\n <div\n data-testid={dataTestId == null ? undefined : `${dataTestId}-layer`}\n ref={layerContentRef}>\n {wrapperContent}\n </div>,\n {\n alignment: 'start',\n className: classes.layerPopover,\n placement: 'below',\n style: popoverOverrideStyle,\n },\n )}\n </>\n ) : (\n wrapperContent\n );\n\n return (\n <Field\n className={className}\n description={description}\n descriptionID={descriptionID}\n inputId={inputId}\n isDisabled={isDisabled}\n isLabelHidden={isLabelHidden}\n {...necessity}\n label={label}\n labelIcon={labelIcon}\n labelTooltip={labelTooltip}\n ref={ref}\n status={\n status == null ? undefined : {...status, messageID: statusMessageID}\n }\n style={style}>\n {inputContent}\n </Field>\n );\n}\n\nTagsInput.displayName = 'TagsInput';\n"]}
1
+ {"version":3,"sources":["../src/components/TagsInput/TagsInput.recipe.ts","../src/internal/OverflowList.tsx","../src/components/TagsInput/TagsInput.tsx"],"names":["useRef","useState","useCallback","jsx","jsxs","Fragment"],"mappings":"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","file":"chunk-FQJBEWGB.js","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\n/**\n * Layout styling layered on top of Field's `inputRecipe`. The core input\n * chrome (border, focus ring, status colors) comes from `inputRecipe`; this\n * recipe owns the multi-line wrapper, tag/input slots, and the truncated\n * \"+N more\" overflow presentation.\n */\nexport const tagsInputRecipe = sva({\n slots: [\n 'wrapper',\n 'tag',\n 'input',\n 'endContent',\n 'overflowText',\n 'liveRegion',\n 'layerPopover',\n ],\n base: {\n wrapper: {\n cursor: 'text',\n flexWrap: 'wrap',\n alignItems: 'center',\n h: 'auto',\n },\n tag: {flexShrink: 0},\n input: {\n minW: '10',\n flex: '1 1 40px',\n },\n endContent: {\n display: 'inline-flex',\n alignItems: 'center',\n flexShrink: 0,\n },\n overflowText: {\n flexShrink: 0,\n whiteSpace: 'nowrap',\n fontSize: 'sm',\n color: 'fg.muted',\n px: '1',\n },\n liveRegion: {\n position: 'absolute',\n w: '1px',\n h: '1px',\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n whiteSpace: 'nowrap',\n },\n layerPopover: {\n w: 'anchor-size(width)',\n },\n },\n variants: {\n size: {\n sm: {},\n md: {},\n lg: {},\n },\n // Row gap + vertical padding for wrapped tags. Applied only while not\n // truncated; the size-keyed padding lives in compoundVariants.\n hasTags: {\n true: {},\n false: {},\n },\n // Collapses the wrapper to a single line for the \"+N more\" presentation.\n isTruncated: {\n true: {wrapper: {flexWrap: 'nowrap', overflow: 'hidden'}},\n false: {},\n },\n // Fixed single-line height. Size-keyed values live in compoundVariants.\n hasFixedHeight: {\n true: {},\n false: {},\n },\n // Hides the text input (when at max entries or in the collapsed view).\n isInputHidden: {\n true: {\n input: {\n position: 'absolute',\n opacity: 0,\n w: 0,\n minW: 0,\n flexBasis: 0,\n },\n },\n false: {},\n },\n },\n compoundVariants: [\n {hasTags: true, isTruncated: false, css: {wrapper: {rowGap: '1'}}},\n {\n size: 'sm',\n hasTags: true,\n isTruncated: false,\n css: {wrapper: {pt: '0px', pb: '0.5'}},\n },\n {size: 'md', hasTags: true, isTruncated: false, css: {wrapper: {py: '1'}}},\n {size: 'lg', hasTags: true, isTruncated: false, css: {wrapper: {py: '1'}}},\n {size: 'sm', hasFixedHeight: true, css: {wrapper: {h: 'component.sm'}}},\n {size: 'md', hasFixedHeight: true, css: {wrapper: {h: 'component.md'}}},\n {size: 'lg', hasFixedHeight: true, css: {wrapper: {h: 'component.lg'}}},\n ],\n defaultVariants: {\n size: 'md',\n hasTags: false,\n isTruncated: false,\n hasFixedHeight: false,\n isInputHidden: false,\n },\n});\n\nexport type TagsInputVariants = RecipeVariantProps<typeof tagsInputRecipe>;\n","'use client';\n\nimport {\n Children,\n useCallback,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport {useIsomorphicLayoutEffect} from 'internal/useIsomorphicLayoutEffect';\nimport {css} from 'styled-system/css';\n\nexport interface OverflowItem {\n child: ReactElement;\n index: number;\n}\n\nexport interface OverflowListProps {\n behavior?: 'observeParent' | 'observeSelf';\n children: ReactNode;\n className?: string;\n collapseFrom?: 'end' | 'start';\n gap?: number;\n minVisibleItems?: number;\n overflowRenderer?: (overflowItems: OverflowItem[]) => ReactNode;\n ref?: Ref<HTMLDivElement>;\n style?: CSSProperties;\n}\n\nconst styles = {\n container: css({\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n minW: 0,\n }),\n fillParent: css({\n flex: '1 1 0',\n }),\n measureContainer: css({\n position: 'absolute',\n visibility: 'hidden',\n h: 0,\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center',\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n }),\n measureIndicator: css({\n display: 'inline-flex',\n }),\n} as const;\n\nfunction getAvailableWidth(\n container: HTMLElement,\n isObservingParent: boolean,\n): number {\n if (isObservingParent && container.parentElement != null) {\n const parent = container.parentElement;\n const parentStyle = window.getComputedStyle(parent);\n const paddingLeft = Number.parseFloat(parentStyle.paddingLeft) || 0;\n const paddingRight = Number.parseFloat(parentStyle.paddingRight) || 0;\n return parent.clientWidth - paddingLeft - paddingRight;\n }\n\n return container.offsetWidth;\n}\n\nexport function OverflowList({\n behavior = 'observeSelf',\n children,\n className,\n collapseFrom = 'end',\n gap = 0,\n minVisibleItems = 0,\n overflowRenderer,\n ref,\n style,\n}: OverflowListProps): React.JSX.Element {\n // eslint-disable-next-line @eslint-react/no-children-to-array -- matches XDSOverflowList: normalizes children before width measurement\n const childArray = Children.toArray(children) as ReactElement[];\n const itemCount = childArray.length;\n const isObservingParent = behavior === 'observeParent';\n const [visibleCount, setVisibleCount] = useState(itemCount);\n const containerRef = useRef<HTMLElement | null>(null);\n const measureRef = useRef<HTMLElement | null>(null);\n\n const calculate = useCallback(() => {\n const container = containerRef.current;\n const measure = measureRef.current;\n if (container == null || measure == null) {\n return;\n }\n\n const availableWidth = Math.min(\n getAvailableWidth(container, isObservingParent),\n container.offsetWidth || Number.POSITIVE_INFINITY,\n );\n const allChildren = Array.from(measure.children) as HTMLElement[];\n const hasIndicator = allChildren.length > itemCount;\n const measuredItems = hasIndicator\n ? allChildren.slice(0, itemCount)\n : allChildren;\n const indicatorWidth = hasIndicator\n ? allChildren[allChildren.length - 1].offsetWidth\n : 0;\n\n if (measuredItems.length === 0) {\n // eslint-disable-next-line @eslint-react/set-state-in-effect -- visible count is derived from measured DOM widths\n setVisibleCount(0);\n return;\n }\n\n const measuredWidths = measuredItems.map(item => item.offsetWidth);\n const orderedWidths =\n collapseFrom === 'end' ? measuredWidths : [...measuredWidths].reverse();\n let totalWidth = 0;\n let count = 0;\n\n for (const itemWidth of orderedWidths) {\n const gapWidth = count > 0 ? gap : 0;\n const candidateWidth = totalWidth + itemWidth + gapWidth;\n const isLastItem = count === orderedWidths.length - 1;\n const reservedWidth = isLastItem\n ? 0\n : indicatorWidth + (count > 0 || indicatorWidth > 0 ? gap : 0);\n\n if (\n candidateWidth + reservedWidth > availableWidth &&\n count >= minVisibleItems\n ) {\n break;\n }\n\n totalWidth = candidateWidth;\n count++;\n }\n\n // eslint-disable-next-line @eslint-react/set-state-in-effect -- visible count is derived from measured DOM widths\n setVisibleCount(Math.max(Math.min(count, itemCount), minVisibleItems));\n }, [collapseFrom, gap, isObservingParent, itemCount, minVisibleItems]);\n\n const containerRefCallback = useCallback((element: HTMLDivElement | null) => {\n containerRef.current = element;\n }, []);\n\n const measureRefCallback = useCallback(\n (element: HTMLDivElement | null) => {\n measureRef.current = element;\n if (element != null) {\n calculate();\n }\n },\n [calculate],\n );\n\n useIsomorphicLayoutEffect(() => {\n calculate();\n }, [calculate]);\n\n useIsomorphicLayoutEffect(() => {\n const container = containerRef.current;\n if (container == null || typeof ResizeObserver === 'undefined') {\n return;\n }\n\n const target =\n isObservingParent && container.parentElement != null\n ? container.parentElement\n : container;\n const observer = new ResizeObserver(calculate);\n observer.observe(target);\n return () => observer.disconnect();\n }, [calculate, isObservingParent]);\n\n const allItems: OverflowItem[] = childArray.map((child, index) => ({\n child,\n index,\n }));\n const visibleItems =\n collapseFrom === 'end'\n ? allItems.slice(0, visibleCount)\n : allItems.slice(itemCount - visibleCount);\n const overflowItems =\n collapseFrom === 'end'\n ? allItems.slice(visibleCount)\n : allItems.slice(0, itemCount - visibleCount);\n const hasOverflow = visibleCount < itemCount;\n const measureIndicator = overflowRenderer?.(allItems);\n\n return (\n <>\n <div\n aria-hidden=\"true\"\n className={styles.measureContainer}\n inert\n ref={measureRefCallback}\n style={{gap}}>\n {childArray}\n {isReactNode(measureIndicator) ? (\n <div className={styles.measureIndicator}>{measureIndicator}</div>\n ) : null}\n </div>\n <div\n className={cx(\n styles.container,\n isObservingParent && hasOverflow ? styles.fillParent : undefined,\n className,\n )}\n ref={mergeRefs(ref, containerRefCallback)}\n style={{gap, ...style}}>\n {collapseFrom === 'start' && hasOverflow\n ? overflowRenderer?.(overflowItems)\n : null}\n {visibleItems.map(({child}) => child)}\n {collapseFrom === 'end' && hasOverflow\n ? overflowRenderer?.(overflowItems)\n : null}\n </div>\n </>\n );\n}\n","'use client';\n\nimport {X} from 'lucide-react';\nimport {\n useCallback,\n useImperativeHandle,\n useId,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {BaseAutocompleteInput} from 'components/AutocompleteInput';\nimport type {SearchableItem, SearchSource} from 'components/AutocompleteInput';\nimport {Button} from 'components/Button';\nimport {\n Field,\n getNecessity,\n type FieldNecessity,\n type InputSize,\n type InputStatus,\n} from 'components/Field';\nimport {inputRecipe, inputStyles} from 'components/Field/inputStyles';\nimport {getDescribedBy, getStatusMessageID} from 'components/Field/inputUtils';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Tag} from 'components/Tag';\nimport {tagsInputRecipe} from 'components/TagsInput/TagsInput.recipe';\nimport {OverflowList} from 'internal/OverflowList';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport useLatest from 'internal/useLatest';\nimport {useLayer} from 'internal/useLayer';\n\nexport type TagsInputChange<T extends SearchableItem> =\n | {item: T; type: 'add'}\n | {item: T; type: 'create'}\n | {item: T; type: 'remove'}\n | {items: T[]; type: 'remove-all'};\n\nexport type TagsInputOverflowBehavior =\n | 'none'\n | 'unfocusedInline'\n | 'unfocusedLayer';\n\nexport interface TagsInputHandle {\n /**\n * Blur the input.\n */\n blur(): void;\n /**\n * Focus the input.\n */\n focus(): void;\n}\n\n/**\n * Props that gate free-text tag creation.\n *\n * Selecting the \"Create …\" suggestion mints a new item from the typed text via\n * `createItem`. The default builder produces `{id, label}` (both set to the raw\n * text):\n *\n * - When that shape satisfies `T` (e.g. the default `SearchableItem`),\n * `createItem` is optional and `hasCreate` is a plain boolean toggle.\n * - When `T` has additional required fields the default builder cannot supply,\n * creation requires an explicit `createItem`, so enabling it is expressed as\n * `hasCreate` + `createItem` together (and may be omitted entirely).\n */\nexport type TagsInputCreateProps<T extends SearchableItem> = {\n id: string;\n label: string;\n} extends T\n ? {\n /**\n * Whether users can create a tag from free text.\n * @default false\n */\n hasCreate?: boolean;\n /**\n * Builds the committed item from the typed text. Optional for this item\n * type because the default builder — `rawValue => ({id: rawValue, label:\n * rawValue})` — already produces a valid item.\n */\n createItem?: (rawValue: string) => T;\n }\n :\n | {\n /**\n * Whether users can create a tag from free text.\n * @default false\n */\n hasCreate?: false;\n createItem?: never;\n }\n | {\n /**\n * Whether users can create a tag from free text.\n */\n hasCreate: true;\n /**\n * Builds the committed item from the typed text. Required for this\n * item type because it has fields the default `{id, label}` builder\n * cannot supply.\n */\n createItem: (rawValue: string) => T;\n };\n\nexport type TagsInputProps<T extends SearchableItem = SearchableItem> = {\n /**\n * Additional CSS class names applied to the input wrapper.\n */\n className?: string;\n /**\n * Test ID applied to the input wrapper.\n */\n 'data-testid'?: string;\n /**\n * Debounce delay in milliseconds before search runs.\n * @default 150\n */\n debounceMs?: number;\n /**\n * Supporting text rendered below the label.\n */\n description?: ReactNode;\n /**\n * Empty state text.\n * @default 'No results found'\n */\n emptySearchResultsText?: string;\n /**\n * Content rendered at the end of the input row.\n */\n endContent?: ReactNode;\n /**\n * Imperative focus/blur handle.\n */\n handleRef?: Ref<TagsInputHandle>;\n /**\n * Whether to focus the input on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to show a clear button that removes all tags.\n * @default false\n */\n hasClear?: boolean;\n /**\n * Whether to show bootstrap results on focus before typing.\n * @default false\n */\n hasEntriesOnFocus?: boolean;\n /**\n * Whether the input is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether to visually hide the label.\n * @default false\n */\n isLabelHidden?: boolean;\n /**\n * Whether the input is read-only. Prevents typing and hides the clear\n * button without applying disabled opacity.\n * @default false\n */\n isReadOnly?: boolean;\n /**\n * Field label.\n */\n label: string;\n /**\n * Icon shown before the label.\n */\n labelIcon?: IconComponent;\n /**\n * Tooltip content shown next to the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Maximum number of selected tags.\n */\n maxEntries?: number;\n /**\n * Maximum number of menu items.\n * @default 10\n */\n maxMenuItems?: number;\n /**\n * Called when focus leaves the tags-input.\n */\n onBlur?: (event: FocusEvent<HTMLDivElement>) => void;\n /**\n * Called when selected tags change.\n */\n onChange: (items: T[], change: TagsInputChange<T>) => void;\n /**\n * Called when focus enters the tags-input.\n */\n onFocus?: (event: FocusEvent<HTMLDivElement>) => void;\n /**\n * Called when the query changes.\n */\n onQueryChange?: (query: string) => void;\n /**\n * Placeholder text.\n */\n placeholder?: string;\n /**\n * Ref forwarded to the field root.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Custom result renderer.\n */\n renderItem?: (item: T) => ReactNode;\n /**\n * Custom tag renderer.\n */\n renderTag?: (item: T, onRemove: () => void) => ReactNode;\n /**\n * Provides results for the menu. Use `createStaticSearchSource` for\n * in-memory data, or implement {@link SearchSource} for async/remote\n * search.\n */\n searchSource: SearchSource<T>;\n /**\n * Visual size.\n * @default 'md'\n */\n size?: InputSize;\n /**\n * Icon shown before the input.\n */\n startIcon?: IconComponent;\n /**\n * Validation status displayed below the tags-input.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the input wrapper.\n */\n style?: CSSProperties;\n /**\n * Controls how tags overflow when the container is too narrow.\n * - `'none'`: Tags wrap to multiple lines (default).\n * - `'unfocusedInline'`: Single line with \"+ N more\" when unfocused; expands inline on focus.\n * - `'unfocusedLayer'`: Single line with \"+ N more\" when unfocused; expands as overlay on focus.\n * @default 'none'\n */\n tagOverflowBehavior?: TagsInputOverflowBehavior;\n /**\n * Selected items.\n */\n value: T[];\n} & FieldNecessity &\n TagsInputCreateProps<T>;\n\nconst CREATABLE_ID_PREFIX = '__silver_create__';\n\nfunction isCreatableItem<T extends SearchableItem>(item: T): boolean {\n return item.id.startsWith(CREATABLE_ID_PREFIX);\n}\n\n/**\n * Multi-select combobox that renders selected values as removable tags.\n */\nexport function TagsInput<T extends SearchableItem>({\n className,\n 'data-testid': dataTestId,\n debounceMs,\n description,\n emptySearchResultsText,\n endContent,\n createItem,\n hasAutoFocus = false,\n hasClear = false,\n hasCreate = false,\n hasEntriesOnFocus = false,\n handleRef,\n isDisabled = false,\n isLabelHidden = false,\n isReadOnly = false,\n isOptional,\n isRequired,\n label,\n labelIcon,\n labelTooltip,\n maxEntries,\n maxMenuItems,\n onBlur,\n onChange,\n onFocus,\n onQueryChange,\n placeholder,\n ref,\n renderItem,\n renderTag,\n searchSource,\n size = 'md',\n startIcon,\n status,\n style,\n tagOverflowBehavior = 'none',\n value,\n}: TagsInputProps<T>): React.JSX.Element {\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 inputRef = useRef<HTMLInputElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [isFocusedWithin, setIsFocusedWithin] = useState(false);\n const [announcement, setAnnouncement] = useState('');\n const [queryValue, setQueryValue] = useState('');\n const isLayerMode = tagOverflowBehavior === 'unfocusedLayer';\n const layer = useLayer();\n const layerContentRef = useRef<HTMLDivElement>(null);\n const selectedIDsRef = useLatest(new Set(value.map(item => item.id)));\n const isAtMax = maxEntries != null && value.length >= maxEntries;\n const isAtMaxRef = useLatest(isAtMax);\n const isTruncated =\n !isFocusedWithin && tagOverflowBehavior !== 'none' && value.length > 0;\n const classes = tagsInputRecipe({\n size,\n hasTags: value.length > 0,\n isTruncated,\n hasFixedHeight: isTruncated,\n isInputHidden: isAtMax || isTruncated,\n });\n // Collapsed single-line placeholder shown behind the layer popover: always\n // fixed-height, never hides the input.\n const placeholderClasses = tagsInputRecipe({\n size,\n isTruncated,\n hasFixedHeight: true,\n });\n\n const placeholderRef = useCallback(\n (element: HTMLElement | null) => {\n if (isLayerMode) {\n layer.ref(element);\n }\n },\n [isLayerMode, layer],\n );\n\n const isFocusInTagsInput = useCallback(\n (target: EventTarget | null): boolean => {\n if (!(target instanceof Node)) {\n return false;\n }\n if (wrapperRef.current?.contains(target)) {\n return true;\n }\n if (layerContentRef.current?.contains(target)) {\n return true;\n }\n const popoverElement = document.getElementById(layer.id);\n return popoverElement?.contains(target) ?? false;\n },\n [layer.id],\n );\n\n const filteredSource = useMemo<SearchSource<T>>(\n () => ({\n cancel: () => searchSource.cancel?.(),\n async bootstrap() {\n const results = await searchSource.bootstrap();\n return results.filter(item => !selectedIDsRef.current.has(item.id));\n },\n async search(searchQuery) {\n const results = await searchSource.search(searchQuery);\n const filteredResults = results.filter(\n item => !selectedIDsRef.current.has(item.id),\n );\n if (!hasCreate || searchQuery.trim() === '' || isAtMaxRef.current) {\n return filteredResults;\n }\n const existing = filteredResults.some(\n item => item.label.toLowerCase() === searchQuery.trim().toLowerCase(),\n );\n if (existing) {\n return filteredResults;\n }\n return [\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n {\n id: `${CREATABLE_ID_PREFIX}${searchQuery}`,\n label: `Create \"${searchQuery}\"`,\n auxiliaryData: {value: searchQuery},\n } as T,\n ...filteredResults,\n ];\n },\n }),\n [hasCreate, searchSource],\n );\n\n useImperativeHandle(\n handleRef,\n () => ({\n blur: () => inputRef.current?.blur(),\n focus: () => inputRef.current?.focus(),\n }),\n [],\n );\n\n const valueRef = useLatest(value);\n const onChangeRef = useLatest(onChange);\n\n const announce = useCallback((message: string) => {\n setAnnouncement('');\n requestAnimationFrame(() => setAnnouncement(message));\n }, []);\n\n const removeItem = useCallback(\n (item: T) => {\n onChangeRef.current(\n valueRef.current.filter(selectedItem => selectedItem.id !== item.id),\n {item, type: 'remove'},\n );\n announce(`Removed ${item.label}`);\n },\n [announce],\n );\n\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLDivElement>) => {\n const comingFromOutside = !isFocusInTagsInput(event.relatedTarget);\n setIsFocusedWithin(true);\n if (isLayerMode) {\n layer.show();\n }\n if (comingFromOutside) {\n onFocus?.(event);\n }\n },\n [isFocusInTagsInput, isLayerMode, layer, onFocus],\n );\n\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLDivElement>) => {\n if (!isFocusInTagsInput(event.relatedTarget)) {\n setIsFocusedWithin(false);\n if (isLayerMode) {\n layer.hide();\n }\n onBlur?.(event);\n }\n },\n [isFocusInTagsInput, isLayerMode, layer, onBlur],\n );\n\n const handleWrapperPointerDown = useCallback(() => {\n if (!isDisabled) {\n if (isLayerMode) {\n layer.show();\n setIsFocusedWithin(true);\n }\n document.addEventListener(\n 'click',\n event => {\n // Focus the input only when the click that completes this press lands\n // inside the TagsInput. A press on a tag may open a popover anchored to\n // it (e.g. SearchFilterInput's edit popover); since the tag's own click\n // can stop propagation, this listener instead fires on the next click\n // — which might be a control in that popover. Focusing the input then\n // would steal focus back and briefly re-open the input's surface.\n if (isFocusInTagsInput(event.target)) {\n requestAnimationFrame(() => inputRef.current?.focus());\n }\n },\n {once: true},\n );\n }\n }, [isDisabled, isFocusInTagsInput, isLayerMode, layer]);\n\n const necessity = getNecessity(isOptional, isRequired);\n\n const tokens = value.map(item => (\n <span className={classes.tag} key={item.id}>\n {renderTag == null ? (\n <Tag\n isDisabled={isDisabled}\n label={item.label}\n onRemove={() => removeItem(item)}\n size={size}\n />\n ) : (\n renderTag(item, () => removeItem(item))\n )}\n </span>\n ));\n\n const wrapperContent = (\n /* eslint-disable-next-line jsx-a11y-x/no-noninteractive-element-interactions -- pointerdown delegates to inner input for focus convenience */\n <div\n aria-label={label}\n className={cx(\n inputRecipe({\n size,\n status: status?.type,\n isDisabled,\n }),\n classes.wrapper,\n )}\n data-testid={dataTestId}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onPointerDown={handleWrapperPointerDown}\n ref={wrapperRef}\n role=\"group\">\n {startIcon != null ? (\n <span className={inputStyles.iconSlot}>\n <Icon color=\"secondary\" icon={startIcon} size=\"sm\" />\n </span>\n ) : null}\n {isTruncated ? (\n <OverflowList\n behavior=\"observeParent\"\n gap={4}\n overflowRenderer={overflowItems => (\n <span className={classes.overflowText}>\n +{overflowItems.length} more\n </span>\n )}>\n {tokens}\n </OverflowList>\n ) : (\n tokens\n )}\n <BaseAutocompleteInput\n anchorRef={wrapperRef}\n ariaDescribedBy={describedBy}\n className={classes.input}\n debounceMs={debounceMs}\n emptySearchResultsText={emptySearchResultsText}\n hasAutoFocus={hasAutoFocus}\n hasEntriesOnFocus={hasEntriesOnFocus}\n hasReopenOnSelect={hasEntriesOnFocus}\n inputId={inputId}\n isDisabled={isDisabled || isReadOnly || isAtMax}\n maxMenuItems={maxMenuItems}\n onChange={item => {\n if (item == null) {\n return;\n }\n if (isCreatableItem(item)) {\n const rawValue =\n typeof item.auxiliaryData === 'object' &&\n item.auxiliaryData != null &&\n 'value' in item.auxiliaryData\n ? String(item.auxiliaryData.value)\n : item.label;\n // `createItem` is guaranteed present for item types that need it\n // (see TagsInputCreateProps); the default builder is only reached\n // when `{id, label}` is a valid `T`, so the assertion is sound.\n const createdItem =\n createItem?.(rawValue) ??\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n ({id: rawValue, label: rawValue} as T);\n onChangeRef.current([...valueRef.current, createdItem], {\n item: createdItem,\n type: 'create',\n });\n announce(`Added ${rawValue}`);\n return;\n }\n onChangeRef.current([...valueRef.current, item], {\n item,\n type: 'add',\n });\n announce(`Added ${item.label}`);\n }}\n onKeyDown={(event: KeyboardEvent<HTMLInputElement>) => {\n if (\n event.key === 'Backspace' &&\n event.currentTarget.value === '' &&\n valueRef.current.length > 0\n ) {\n const item = valueRef.current[valueRef.current.length - 1];\n removeItem(item);\n }\n }}\n onQueryChange={nextQuery => {\n setQueryValue(nextQuery);\n onQueryChange?.(nextQuery);\n }}\n placeholder={value.length === 0 ? placeholder : undefined}\n query={queryValue}\n ref={inputRef}\n renderItem={renderItem}\n searchSource={filteredSource}\n size={size}\n value={null}\n />\n {isReactNode(endContent) ? (\n <span className={classes.endContent}>{endContent}</span>\n ) : null}\n {hasClear && value.length > 0 && !isDisabled && !isReadOnly ? (\n <Button\n icon={X}\n isIconOnly\n label={`Clear ${label}`}\n onClick={event => {\n event.stopPropagation();\n onChangeRef.current([], {\n items: valueRef.current,\n type: 'remove-all',\n });\n announce('Cleared all tags');\n }}\n size=\"sm\"\n variant=\"ghost\"\n />\n ) : null}\n <span aria-live=\"polite\" className={classes.liveRegion} role=\"status\">\n {announcement}\n </span>\n </div>\n );\n\n const popoverOverrideStyle: CSSProperties = {\n positionArea: undefined,\n positionTryFallbacks: undefined,\n top: 'anchor(top)',\n left: 'anchor(start)',\n };\n\n const inputContent = isLayerMode ? (\n <>\n <div\n className={cx(\n inputRecipe({\n size,\n status: status?.type,\n isDisabled,\n }),\n placeholderClasses.wrapper,\n )}\n onPointerDown={handleWrapperPointerDown}\n ref={placeholderRef}>\n {isTruncated ? (\n <>\n {startIcon != null ? (\n <span className={inputStyles.iconSlot}>\n <Icon color=\"secondary\" icon={startIcon} size=\"sm\" />\n </span>\n ) : null}\n <OverflowList\n behavior=\"observeParent\"\n gap={4}\n overflowRenderer={overflowItems => (\n <span className={classes.overflowText}>\n +{overflowItems.length} more\n </span>\n )}>\n {tokens}\n </OverflowList>\n </>\n ) : null}\n </div>\n {layer.render(\n <div\n data-testid={dataTestId == null ? undefined : `${dataTestId}-layer`}\n ref={layerContentRef}>\n {wrapperContent}\n </div>,\n {\n alignment: 'start',\n className: classes.layerPopover,\n placement: 'below',\n style: popoverOverrideStyle,\n },\n )}\n </>\n ) : (\n wrapperContent\n );\n\n return (\n <Field\n className={className}\n description={description}\n descriptionID={descriptionID}\n inputId={inputId}\n isDisabled={isDisabled}\n isLabelHidden={isLabelHidden}\n {...necessity}\n label={label}\n labelIcon={labelIcon}\n labelTooltip={labelTooltip}\n ref={ref}\n status={\n status == null ? undefined : {...status, messageID: statusMessageID}\n }\n style={style}>\n {inputContent}\n </Field>\n );\n}\n\nTagsInput.displayName = 'TagsInput';\n"]}
@@ -1,9 +1,9 @@
1
1
  'use client';
2
- import { MobileNav, useAppShellMobile } from './chunk-3MNRY6XK.js';
3
- import { Item } from './chunk-CTXAQNQI.js';
4
- import { Button } from './chunk-JJ32AVLU.js';
2
+ import { MobileNav, useAppShellMobile } from './chunk-RQUQSI67.js';
3
+ import { Item } from './chunk-YBMIXGFM.js';
4
+ import { Button } from './chunk-J2TQNGUM.js';
5
5
  import { VisuallyHidden } from './chunk-V2V5TTTL.js';
6
- import { Text } from './chunk-KPAOAYDY.js';
6
+ import { Text } from './chunk-4G644ETX.js';
7
7
  import { useLinkComponent, ActionElement } from './chunk-CRYF4JDH.js';
8
8
  import { isReactNode } from './chunk-2PSZAWLC.js';
9
9
  import { Icon } from './chunk-IUW777WZ.js';
@@ -709,5 +709,5 @@ function SideNavSection({
709
709
  SideNavSection.displayName = "SideNavSection";
710
710
 
711
711
  export { SideNav, SideNavCollapseContext, SideNavHeading, SideNavItem, SideNavRenderContext, SideNavSection };
712
- //# sourceMappingURL=chunk-USZQJXPE.js.map
713
- //# sourceMappingURL=chunk-USZQJXPE.js.map
712
+ //# sourceMappingURL=chunk-GCQTQJPW.js.map
713
+ //# sourceMappingURL=chunk-GCQTQJPW.js.map