silver-ui 0.6.0 → 0.7.2

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 (357) hide show
  1. package/README.md +1 -0
  2. package/dist/{chunk-DYMZ4DLN.cjs → chunk-2AOR4EVA.cjs} +8 -8
  3. package/dist/{chunk-DYMZ4DLN.cjs.map → chunk-2AOR4EVA.cjs.map} +1 -1
  4. package/dist/chunk-2N3PIXZ5.cjs +165 -0
  5. package/dist/chunk-2N3PIXZ5.cjs.map +1 -0
  6. package/dist/{chunk-GUUCIG7U.js → chunk-3PCXFOOS.js} +16 -10
  7. package/dist/chunk-3PCXFOOS.js.map +1 -0
  8. package/dist/{chunk-ISWZQUVA.cjs → chunk-4MIIXRZN.cjs} +12 -12
  9. package/dist/{chunk-ISWZQUVA.cjs.map → chunk-4MIIXRZN.cjs.map} +1 -1
  10. package/dist/{chunk-WHDDBOJN.js → chunk-54B36CSW.js} +4 -4
  11. package/dist/{chunk-WHDDBOJN.js.map → chunk-54B36CSW.js.map} +1 -1
  12. package/dist/{chunk-NXTDP6AX.js → chunk-5GSRIOXE.js} +14 -2
  13. package/dist/chunk-5GSRIOXE.js.map +1 -0
  14. package/dist/{chunk-BGLT7XH6.js → chunk-5HPXPF3F.js} +5 -5
  15. package/dist/{chunk-BGLT7XH6.js.map → chunk-5HPXPF3F.js.map} +1 -1
  16. package/dist/{chunk-U4L75VA4.cjs → chunk-5MCI3ILK.cjs} +40 -40
  17. package/dist/{chunk-U4L75VA4.cjs.map → chunk-5MCI3ILK.cjs.map} +1 -1
  18. package/dist/{chunk-TNYAYXKC.cjs → chunk-63QPCV4F.cjs} +35 -35
  19. package/dist/{chunk-TNYAYXKC.cjs.map → chunk-63QPCV4F.cjs.map} +1 -1
  20. package/dist/{chunk-FIOCTAXT.js → chunk-6KG76KUZ.js} +3 -3
  21. package/dist/{chunk-FIOCTAXT.js.map → chunk-6KG76KUZ.js.map} +1 -1
  22. package/dist/{chunk-RU7JPU7V.js → chunk-6KGF66TR.js} +3 -3
  23. package/dist/{chunk-RU7JPU7V.js.map → chunk-6KGF66TR.js.map} +1 -1
  24. package/dist/{chunk-FQN22DO5.js → chunk-6OWEKKOC.js} +6 -6
  25. package/dist/{chunk-FQN22DO5.js.map → chunk-6OWEKKOC.js.map} +1 -1
  26. package/dist/{chunk-BDFNEQR3.js → chunk-6R2UZNVE.js} +6 -6
  27. package/dist/{chunk-BDFNEQR3.js.map → chunk-6R2UZNVE.js.map} +1 -1
  28. package/dist/{chunk-AFJEAYR4.cjs → chunk-6SFMORQF.cjs} +5 -5
  29. package/dist/{chunk-AFJEAYR4.cjs.map → chunk-6SFMORQF.cjs.map} +1 -1
  30. package/dist/{chunk-XTLNUYCK.js → chunk-6SKIBUCY.js} +3 -3
  31. package/dist/{chunk-XTLNUYCK.js.map → chunk-6SKIBUCY.js.map} +1 -1
  32. package/dist/{chunk-VRQ66IBW.cjs → chunk-6SMVH3ON.cjs} +6 -6
  33. package/dist/{chunk-VRQ66IBW.cjs.map → chunk-6SMVH3ON.cjs.map} +1 -1
  34. package/dist/{chunk-WINDLDH3.cjs → chunk-6ZPHID26.cjs} +9 -9
  35. package/dist/{chunk-WINDLDH3.cjs.map → chunk-6ZPHID26.cjs.map} +1 -1
  36. package/dist/chunk-7VUDE5BI.js +91 -0
  37. package/dist/chunk-7VUDE5BI.js.map +1 -0
  38. package/dist/{chunk-DFEAB7Z3.cjs → chunk-AC4E3WQA.cjs} +10 -10
  39. package/dist/{chunk-DFEAB7Z3.cjs.map → chunk-AC4E3WQA.cjs.map} +1 -1
  40. package/dist/{chunk-4EUUZQAM.js → chunk-ACGPBJIS.js} +5 -5
  41. package/dist/{chunk-4EUUZQAM.js.map → chunk-ACGPBJIS.js.map} +1 -1
  42. package/dist/{chunk-DWZR2AGT.js → chunk-AO4RVSCG.js} +4 -4
  43. package/dist/{chunk-DWZR2AGT.js.map → chunk-AO4RVSCG.js.map} +1 -1
  44. package/dist/{chunk-P7TSM63O.js → chunk-AXTX3IOR.js} +3 -3
  45. package/dist/{chunk-P7TSM63O.js.map → chunk-AXTX3IOR.js.map} +1 -1
  46. package/dist/{chunk-KCI4I42U.js → chunk-BBLAZNCC.js} +8 -8
  47. package/dist/{chunk-KCI4I42U.js.map → chunk-BBLAZNCC.js.map} +1 -1
  48. package/dist/{chunk-ZUAWNT66.cjs → chunk-BF2DUOC3.cjs} +18 -18
  49. package/dist/{chunk-ZUAWNT66.cjs.map → chunk-BF2DUOC3.cjs.map} +1 -1
  50. package/dist/{chunk-6FC5YF2O.cjs → chunk-BPAZTKMC.cjs} +8 -8
  51. package/dist/{chunk-6FC5YF2O.cjs.map → chunk-BPAZTKMC.cjs.map} +1 -1
  52. package/dist/{chunk-CNDUYO7I.cjs → chunk-BYV7NXC5.cjs} +5 -5
  53. package/dist/{chunk-CNDUYO7I.cjs.map → chunk-BYV7NXC5.cjs.map} +1 -1
  54. package/dist/{chunk-MHAXS4GO.cjs → chunk-CKDB7QNT.cjs} +14 -2
  55. package/dist/chunk-CKDB7QNT.cjs.map +1 -0
  56. package/dist/{chunk-J4LJXCXB.cjs → chunk-CQYBC3RJ.cjs} +9 -9
  57. package/dist/{chunk-J4LJXCXB.cjs.map → chunk-CQYBC3RJ.cjs.map} +1 -1
  58. package/dist/{chunk-U5HW5P7Q.cjs → chunk-CWZCBYVZ.cjs} +11 -11
  59. package/dist/{chunk-U5HW5P7Q.cjs.map → chunk-CWZCBYVZ.cjs.map} +1 -1
  60. package/dist/{chunk-UZGPFPIV.cjs → chunk-D7TT4HUI.cjs} +17 -17
  61. package/dist/{chunk-UZGPFPIV.cjs.map → chunk-D7TT4HUI.cjs.map} +1 -1
  62. package/dist/{chunk-FWBYCTUB.cjs → chunk-DDMUYVSV.cjs} +15 -15
  63. package/dist/{chunk-FWBYCTUB.cjs.map → chunk-DDMUYVSV.cjs.map} +1 -1
  64. package/dist/{chunk-P5LMEANN.cjs → chunk-DTNIUZ3C.cjs} +5 -5
  65. package/dist/{chunk-P5LMEANN.cjs.map → chunk-DTNIUZ3C.cjs.map} +1 -1
  66. package/dist/{chunk-5JROXZBG.cjs → chunk-DVCDAKPK.cjs} +4 -4
  67. package/dist/{chunk-5JROXZBG.cjs.map → chunk-DVCDAKPK.cjs.map} +1 -1
  68. package/dist/{chunk-45OSUS5A.js → chunk-E6AKSBSP.js} +6 -6
  69. package/dist/{chunk-45OSUS5A.js.map → chunk-E6AKSBSP.js.map} +1 -1
  70. package/dist/{chunk-HMJINNXZ.js → chunk-EBV3EX3J.js} +3 -3
  71. package/dist/{chunk-HMJINNXZ.js.map → chunk-EBV3EX3J.js.map} +1 -1
  72. package/dist/chunk-ESWYWWY2.js +162 -0
  73. package/dist/chunk-ESWYWWY2.js.map +1 -0
  74. package/dist/{chunk-G5PU2EL2.js → chunk-FHUOUARL.js} +4 -4
  75. package/dist/{chunk-G5PU2EL2.js.map → chunk-FHUOUARL.js.map} +1 -1
  76. package/dist/{chunk-RXKDRZF3.js → chunk-FTNEAX24.js} +3 -3
  77. package/dist/{chunk-RXKDRZF3.js.map → chunk-FTNEAX24.js.map} +1 -1
  78. package/dist/{chunk-TQDJVPHP.js → chunk-FUU3I22W.js} +3 -3
  79. package/dist/{chunk-TQDJVPHP.js.map → chunk-FUU3I22W.js.map} +1 -1
  80. package/dist/{chunk-ERVWZILR.js → chunk-GKYGZWSQ.js} +3 -3
  81. package/dist/{chunk-ERVWZILR.js.map → chunk-GKYGZWSQ.js.map} +1 -1
  82. package/dist/{chunk-CABYRYVA.cjs → chunk-GLFWSLJB.cjs} +6 -6
  83. package/dist/{chunk-CABYRYVA.cjs.map → chunk-GLFWSLJB.cjs.map} +1 -1
  84. package/dist/{chunk-UYZQGHFI.js → chunk-GQ73VKKN.js} +8 -8
  85. package/dist/{chunk-UYZQGHFI.js.map → chunk-GQ73VKKN.js.map} +1 -1
  86. package/dist/{chunk-JHMUMJF3.js → chunk-GTZQT6MK.js} +4 -4
  87. package/dist/{chunk-JHMUMJF3.js.map → chunk-GTZQT6MK.js.map} +1 -1
  88. package/dist/{chunk-ZSB43DEI.js → chunk-HC57X3U4.js} +6 -6
  89. package/dist/{chunk-ZSB43DEI.js.map → chunk-HC57X3U4.js.map} +1 -1
  90. package/dist/{chunk-WAWHHXSR.js → chunk-HEF53COU.js} +3 -3
  91. package/dist/{chunk-WAWHHXSR.js.map → chunk-HEF53COU.js.map} +1 -1
  92. package/dist/{chunk-7EE6DCRP.cjs → chunk-HENIVDYQ.cjs} +18 -18
  93. package/dist/{chunk-7EE6DCRP.cjs.map → chunk-HENIVDYQ.cjs.map} +1 -1
  94. package/dist/{chunk-MHEPDHL5.cjs → chunk-HN4W6TM6.cjs} +14 -14
  95. package/dist/{chunk-MHEPDHL5.cjs.map → chunk-HN4W6TM6.cjs.map} +1 -1
  96. package/dist/{chunk-DPSAPA6B.js → chunk-I2DXEPDF.js} +5 -5
  97. package/dist/{chunk-DPSAPA6B.js.map → chunk-I2DXEPDF.js.map} +1 -1
  98. package/dist/{chunk-NG2H3PYA.cjs → chunk-J242UTPO.cjs} +16 -16
  99. package/dist/{chunk-NG2H3PYA.cjs.map → chunk-J242UTPO.cjs.map} +1 -1
  100. package/dist/{chunk-K2WT7A64.js → chunk-JMVYWHJ7.js} +3 -3
  101. package/dist/{chunk-K2WT7A64.js.map → chunk-JMVYWHJ7.js.map} +1 -1
  102. package/dist/{chunk-VREW3BK6.cjs → chunk-JTPVAZE6.cjs} +11 -11
  103. package/dist/{chunk-VREW3BK6.cjs.map → chunk-JTPVAZE6.cjs.map} +1 -1
  104. package/dist/{chunk-FLDTPAG4.cjs → chunk-JWMS6LHN.cjs} +6 -6
  105. package/dist/{chunk-FLDTPAG4.cjs.map → chunk-JWMS6LHN.cjs.map} +1 -1
  106. package/dist/{chunk-3M23WX6K.js → chunk-KB36TWOU.js} +4 -3
  107. package/dist/chunk-KB36TWOU.js.map +1 -0
  108. package/dist/{chunk-DK6USFZP.cjs → chunk-KLCEDPJ4.cjs} +19 -19
  109. package/dist/{chunk-DK6USFZP.cjs.map → chunk-KLCEDPJ4.cjs.map} +1 -1
  110. package/dist/{chunk-INQ34SVW.cjs → chunk-KLPVBJGZ.cjs} +5 -5
  111. package/dist/{chunk-INQ34SVW.cjs.map → chunk-KLPVBJGZ.cjs.map} +1 -1
  112. package/dist/{chunk-LLSWAAFH.js → chunk-L747HIHG.js} +4 -4
  113. package/dist/{chunk-LLSWAAFH.js.map → chunk-L747HIHG.js.map} +1 -1
  114. package/dist/{chunk-7TJ2O56S.js → chunk-LBOWHXOF.js} +23 -5
  115. package/dist/chunk-LBOWHXOF.js.map +1 -0
  116. package/dist/{chunk-H7VK36SZ.cjs → chunk-LTHPJRFK.cjs} +9 -8
  117. package/dist/chunk-LTHPJRFK.cjs.map +1 -0
  118. package/dist/{chunk-6ZV7HGZT.cjs → chunk-LWB2CTX6.cjs} +4 -4
  119. package/dist/{chunk-6ZV7HGZT.cjs.map → chunk-LWB2CTX6.cjs.map} +1 -1
  120. package/dist/{chunk-ENVDR66N.cjs → chunk-MJHEPDDX.cjs} +17 -17
  121. package/dist/{chunk-ENVDR66N.cjs.map → chunk-MJHEPDDX.cjs.map} +1 -1
  122. package/dist/{chunk-RAMDISDK.cjs → chunk-MYSLJWCW.cjs} +6 -6
  123. package/dist/{chunk-RAMDISDK.cjs.map → chunk-MYSLJWCW.cjs.map} +1 -1
  124. package/dist/{chunk-WEXTGWRE.js → chunk-N6C37HXD.js} +4 -4
  125. package/dist/{chunk-WEXTGWRE.js.map → chunk-N6C37HXD.js.map} +1 -1
  126. package/dist/{chunk-NW36BN7N.cjs → chunk-NGNVNRAZ.cjs} +17 -17
  127. package/dist/{chunk-NW36BN7N.cjs.map → chunk-NGNVNRAZ.cjs.map} +1 -1
  128. package/dist/{chunk-JR353MN5.js → chunk-NIKT7XSO.js} +7 -7
  129. package/dist/{chunk-JR353MN5.js.map → chunk-NIKT7XSO.js.map} +1 -1
  130. package/dist/{chunk-6I5QWA6A.js → chunk-NSWKBWPP.js} +6 -5
  131. package/dist/chunk-NSWKBWPP.js.map +1 -0
  132. package/dist/{chunk-2SN3KVWF.js → chunk-NYOZQE6P.js} +4 -4
  133. package/dist/{chunk-2SN3KVWF.js.map → chunk-NYOZQE6P.js.map} +1 -1
  134. package/dist/{chunk-CZUMVOPH.js → chunk-O3UT5D57.js} +19 -15
  135. package/dist/chunk-O3UT5D57.js.map +1 -0
  136. package/dist/{chunk-GU65FGY6.cjs → chunk-OCYZKZ24.cjs} +4 -4
  137. package/dist/{chunk-GU65FGY6.cjs.map → chunk-OCYZKZ24.cjs.map} +1 -1
  138. package/dist/{chunk-M64WMYYV.js → chunk-OPBELSKN.js} +6 -6
  139. package/dist/{chunk-M64WMYYV.js.map → chunk-OPBELSKN.js.map} +1 -1
  140. package/dist/{chunk-WM7NEOME.js → chunk-OUUG4RHO.js} +7 -7
  141. package/dist/{chunk-WM7NEOME.js.map → chunk-OUUG4RHO.js.map} +1 -1
  142. package/dist/{chunk-SKZNSOB7.cjs → chunk-OX2FNKIV.cjs} +6 -6
  143. package/dist/{chunk-SKZNSOB7.cjs.map → chunk-OX2FNKIV.cjs.map} +1 -1
  144. package/dist/{chunk-HKGFMJFK.js → chunk-PGBYMBGH.js} +16 -16
  145. package/dist/{chunk-HKGFMJFK.js.map → chunk-PGBYMBGH.js.map} +1 -1
  146. package/dist/{chunk-UT45YVPI.js → chunk-PK3NJSHQ.js} +8 -8
  147. package/dist/{chunk-UT45YVPI.js.map → chunk-PK3NJSHQ.js.map} +1 -1
  148. package/dist/{chunk-C6EWA3H2.js → chunk-PQXPYN23.js} +6 -6
  149. package/dist/{chunk-C6EWA3H2.js.map → chunk-PQXPYN23.js.map} +1 -1
  150. package/dist/{chunk-PHFJBQXU.cjs → chunk-PXTTIAC4.cjs} +8 -8
  151. package/dist/{chunk-PHFJBQXU.cjs.map → chunk-PXTTIAC4.cjs.map} +1 -1
  152. package/dist/{chunk-KG7RHDVX.js → chunk-Q6YOSQAM.js} +8 -8
  153. package/dist/{chunk-KG7RHDVX.js.map → chunk-Q6YOSQAM.js.map} +1 -1
  154. package/dist/{chunk-K2V3IOAX.js → chunk-QM7NQK2K.js} +3 -3
  155. package/dist/{chunk-K2V3IOAX.js.map → chunk-QM7NQK2K.js.map} +1 -1
  156. package/dist/{chunk-QTOFQB26.cjs → chunk-QQCEGAUQ.cjs} +16 -16
  157. package/dist/{chunk-QTOFQB26.cjs.map → chunk-QQCEGAUQ.cjs.map} +1 -1
  158. package/dist/chunk-RNUQWYJJ.cjs +93 -0
  159. package/dist/chunk-RNUQWYJJ.cjs.map +1 -0
  160. package/dist/{chunk-R3ZS6FU6.cjs → chunk-RX2FXCIH.cjs} +6 -6
  161. package/dist/{chunk-R3ZS6FU6.cjs.map → chunk-RX2FXCIH.cjs.map} +1 -1
  162. package/dist/{chunk-HPOURAKV.cjs → chunk-TACO5IWI.cjs} +14 -14
  163. package/dist/{chunk-HPOURAKV.cjs.map → chunk-TACO5IWI.cjs.map} +1 -1
  164. package/dist/{chunk-4JJFQZVY.js → chunk-TP6RGZ6A.js} +12 -12
  165. package/dist/{chunk-4JJFQZVY.js.map → chunk-TP6RGZ6A.js.map} +1 -1
  166. package/dist/{chunk-PNM7MPUX.cjs → chunk-U7QJJ3NR.cjs} +8 -8
  167. package/dist/{chunk-PNM7MPUX.cjs.map → chunk-U7QJJ3NR.cjs.map} +1 -1
  168. package/dist/{chunk-H5VMHDRD.cjs → chunk-UJDHRILS.cjs} +24 -6
  169. package/dist/chunk-UJDHRILS.cjs.map +1 -0
  170. package/dist/{chunk-EVCQCZMM.cjs → chunk-UNS7OCEA.cjs} +5 -5
  171. package/dist/{chunk-EVCQCZMM.cjs.map → chunk-UNS7OCEA.cjs.map} +1 -1
  172. package/dist/{chunk-SEDUAMDW.js → chunk-USEA7DB5.js} +3 -3
  173. package/dist/{chunk-SEDUAMDW.js.map → chunk-USEA7DB5.js.map} +1 -1
  174. package/dist/{chunk-LDYUVGD4.js → chunk-UUVI3TYW.js} +6 -6
  175. package/dist/{chunk-LDYUVGD4.js.map → chunk-UUVI3TYW.js.map} +1 -1
  176. package/dist/{chunk-QYZXTIB2.cjs → chunk-UW3KCCBT.cjs} +4 -4
  177. package/dist/{chunk-QYZXTIB2.cjs.map → chunk-UW3KCCBT.cjs.map} +1 -1
  178. package/dist/{chunk-PU4PBI3H.js → chunk-V5XVXQWE.js} +4 -4
  179. package/dist/{chunk-PU4PBI3H.js.map → chunk-V5XVXQWE.js.map} +1 -1
  180. package/dist/{chunk-GJKRSQEA.cjs → chunk-VCM4MR7N.cjs} +51 -47
  181. package/dist/chunk-VCM4MR7N.cjs.map +1 -0
  182. package/dist/{chunk-VXBVSYPA.cjs → chunk-VPHB56GK.cjs} +4 -3
  183. package/dist/chunk-VPHB56GK.cjs.map +1 -0
  184. package/dist/{chunk-TVWU4XBL.cjs → chunk-VWG54F6X.cjs} +6 -6
  185. package/dist/{chunk-TVWU4XBL.cjs.map → chunk-VWG54F6X.cjs.map} +1 -1
  186. package/dist/{chunk-DAO4UXR4.js → chunk-WG4NNC3P.js} +3 -3
  187. package/dist/{chunk-DAO4UXR4.js.map → chunk-WG4NNC3P.js.map} +1 -1
  188. package/dist/{chunk-LF6I2B7G.js → chunk-WLWSQKWI.js} +9 -9
  189. package/dist/{chunk-LF6I2B7G.js.map → chunk-WLWSQKWI.js.map} +1 -1
  190. package/dist/{chunk-VXOIOPGZ.cjs → chunk-WOVSJHY6.cjs} +5 -5
  191. package/dist/{chunk-VXOIOPGZ.cjs.map → chunk-WOVSJHY6.cjs.map} +1 -1
  192. package/dist/{chunk-QHXI2QDK.js → chunk-X2P5SPGB.js} +3 -3
  193. package/dist/{chunk-QHXI2QDK.js.map → chunk-X2P5SPGB.js.map} +1 -1
  194. package/dist/{chunk-JC66FRQX.js → chunk-XUCLNECV.js} +3 -3
  195. package/dist/{chunk-JC66FRQX.js.map → chunk-XUCLNECV.js.map} +1 -1
  196. package/dist/{chunk-VW52NVGM.cjs → chunk-Y2GYPMLW.cjs} +5 -5
  197. package/dist/{chunk-VW52NVGM.cjs.map → chunk-Y2GYPMLW.cjs.map} +1 -1
  198. package/dist/{chunk-ATK3F3MC.js → chunk-YAQB3UMC.js} +4 -4
  199. package/dist/{chunk-ATK3F3MC.js.map → chunk-YAQB3UMC.js.map} +1 -1
  200. package/dist/{chunk-B5QX6KGJ.js → chunk-YGESCFX2.js} +3 -3
  201. package/dist/{chunk-B5QX6KGJ.js.map → chunk-YGESCFX2.js.map} +1 -1
  202. package/dist/{chunk-PYJX2SBC.cjs → chunk-YQIDUJW2.cjs} +5 -5
  203. package/dist/{chunk-PYJX2SBC.cjs.map → chunk-YQIDUJW2.cjs.map} +1 -1
  204. package/dist/{chunk-UMS46KF4.cjs → chunk-YQVWDHP4.cjs} +7 -7
  205. package/dist/{chunk-UMS46KF4.cjs.map → chunk-YQVWDHP4.cjs.map} +1 -1
  206. package/dist/{chunk-NFEL5GNX.cjs → chunk-ZDZ7FW6V.cjs} +14 -14
  207. package/dist/{chunk-NFEL5GNX.cjs.map → chunk-ZDZ7FW6V.cjs.map} +1 -1
  208. package/dist/{chunk-3IDT3PZC.cjs → chunk-ZW2ZOEYM.cjs} +19 -13
  209. package/dist/chunk-ZW2ZOEYM.cjs.map +1 -0
  210. package/dist/components/Alert/index.cjs +5 -5
  211. package/dist/components/Alert/index.js +4 -4
  212. package/dist/components/AlertDialog/index.cjs +7 -7
  213. package/dist/components/AlertDialog/index.js +5 -5
  214. package/dist/components/AppShell/index.cjs +12 -12
  215. package/dist/components/AppShell/index.js +9 -9
  216. package/dist/components/AutocompleteInput/index.cjs +11 -11
  217. package/dist/components/AutocompleteInput/index.js +7 -7
  218. package/dist/components/Badge/Badge.d.ts.map +1 -1
  219. package/dist/components/Badge/Badge.recipe.d.ts +75 -41
  220. package/dist/components/Badge/Badge.recipe.d.ts.map +1 -1
  221. package/dist/components/Badge/index.cjs +3 -2
  222. package/dist/components/Badge/index.js +2 -1
  223. package/dist/components/Button/index.cjs +4 -4
  224. package/dist/components/Button/index.js +3 -3
  225. package/dist/components/Calendar/index.cjs +5 -5
  226. package/dist/components/Calendar/index.js +4 -4
  227. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +83 -0
  228. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
  229. package/dist/components/CheckboxGroup/CheckboxGroup.recipe.d.ts +17 -0
  230. package/dist/components/CheckboxGroup/CheckboxGroup.recipe.d.ts.map +1 -0
  231. package/dist/components/CheckboxGroup/CheckboxGroupContext.d.ts +13 -0
  232. package/dist/components/CheckboxGroup/CheckboxGroupContext.d.ts.map +1 -0
  233. package/dist/components/CheckboxGroup/CheckboxGroupItem.d.ts +58 -0
  234. package/dist/components/CheckboxGroup/CheckboxGroupItem.d.ts.map +1 -0
  235. package/dist/components/CheckboxGroup/index.cjs +35 -0
  236. package/dist/components/CheckboxGroup/index.cjs.map +1 -0
  237. package/dist/components/CheckboxGroup/index.d.ts +4 -0
  238. package/dist/components/CheckboxGroup/index.d.ts.map +1 -0
  239. package/dist/components/CheckboxGroup/index.js +22 -0
  240. package/dist/components/CheckboxGroup/index.js.map +1 -0
  241. package/dist/components/CheckboxInput/CheckboxInput.d.ts +11 -2
  242. package/dist/components/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  243. package/dist/components/CheckboxInput/CheckboxInput.recipe.d.ts +6 -0
  244. package/dist/components/CheckboxInput/CheckboxInput.recipe.d.ts.map +1 -1
  245. package/dist/components/CheckboxInput/index.cjs +5 -5
  246. package/dist/components/CheckboxInput/index.js +4 -4
  247. package/dist/components/CodeBlock/index.cjs +5 -5
  248. package/dist/components/CodeBlock/index.js +4 -4
  249. package/dist/components/ContextMenu/index.cjs +9 -9
  250. package/dist/components/ContextMenu/index.js +7 -7
  251. package/dist/components/DateInput/index.cjs +9 -9
  252. package/dist/components/DateInput/index.js +8 -8
  253. package/dist/components/DateRangeInput/index.cjs +9 -9
  254. package/dist/components/DateRangeInput/index.js +8 -8
  255. package/dist/components/DateTimeInput/index.cjs +11 -11
  256. package/dist/components/DateTimeInput/index.js +10 -10
  257. package/dist/components/DropdownMenu/index.cjs +10 -10
  258. package/dist/components/DropdownMenu/index.js +6 -6
  259. package/dist/components/EmptyState/index.cjs +3 -3
  260. package/dist/components/EmptyState/index.js +2 -2
  261. package/dist/components/Field/index.cjs +4 -4
  262. package/dist/components/Field/index.js +2 -2
  263. package/dist/components/Field/inputStyles.d.ts.map +1 -1
  264. package/dist/components/FileInput/index.cjs +6 -6
  265. package/dist/components/FileInput/index.js +5 -5
  266. package/dist/components/InputGroup/index.cjs +7 -7
  267. package/dist/components/InputGroup/index.js +3 -3
  268. package/dist/components/Item/index.cjs +3 -3
  269. package/dist/components/Item/index.js +2 -2
  270. package/dist/components/Layout/LayoutHeader.d.ts +7 -1
  271. package/dist/components/Layout/LayoutHeader.d.ts.map +1 -1
  272. package/dist/components/Layout/index.cjs +9 -9
  273. package/dist/components/Layout/index.js +4 -4
  274. package/dist/components/Lightbox/index.cjs +6 -6
  275. package/dist/components/Lightbox/index.js +4 -4
  276. package/dist/components/List/index.cjs +5 -5
  277. package/dist/components/List/index.js +3 -3
  278. package/dist/components/MetadataList/index.cjs +4 -4
  279. package/dist/components/MetadataList/index.js +2 -2
  280. package/dist/components/MultiSelect/index.cjs +9 -9
  281. package/dist/components/MultiSelect/index.js +8 -8
  282. package/dist/components/NumberInput/index.cjs +8 -8
  283. package/dist/components/NumberInput/index.js +7 -7
  284. package/dist/components/Pagination/index.cjs +5 -5
  285. package/dist/components/Pagination/index.js +4 -4
  286. package/dist/components/PasswordInput/index.cjs +9 -9
  287. package/dist/components/PasswordInput/index.js +8 -8
  288. package/dist/components/Popover/index.cjs +6 -6
  289. package/dist/components/Popover/index.js +4 -4
  290. package/dist/components/RadioGroup/index.cjs +6 -6
  291. package/dist/components/RadioGroup/index.js +4 -4
  292. package/dist/components/Schedule/TimeGridView.d.ts.map +1 -1
  293. package/dist/components/Schedule/index.cjs +25 -25
  294. package/dist/components/Schedule/index.js +10 -10
  295. package/dist/components/SearchFilterInput/index.cjs +25 -25
  296. package/dist/components/SearchFilterInput/index.js +17 -17
  297. package/dist/components/Select/index.cjs +10 -10
  298. package/dist/components/Select/index.js +8 -8
  299. package/dist/components/SideNav/index.cjs +12 -12
  300. package/dist/components/SideNav/index.js +6 -6
  301. package/dist/components/Slider/index.cjs +4 -4
  302. package/dist/components/Slider/index.js +3 -3
  303. package/dist/components/Spinner/index.cjs +3 -3
  304. package/dist/components/Spinner/index.js +2 -2
  305. package/dist/components/SplitButton/index.cjs +8 -8
  306. package/dist/components/SplitButton/index.js +7 -7
  307. package/dist/components/Stepper/index.cjs +3 -3
  308. package/dist/components/Stepper/index.js +2 -2
  309. package/dist/components/Switch/index.cjs +4 -4
  310. package/dist/components/Switch/index.js +3 -3
  311. package/dist/components/Table/index.cjs +48 -48
  312. package/dist/components/Table/index.js +22 -22
  313. package/dist/components/Tabs/index.cjs +10 -10
  314. package/dist/components/Tabs/index.js +5 -5
  315. package/dist/components/TagsInput/index.cjs +9 -9
  316. package/dist/components/TagsInput/index.js +8 -8
  317. package/dist/components/Text/index.cjs +3 -3
  318. package/dist/components/Text/index.js +1 -1
  319. package/dist/components/TextArea/index.cjs +6 -6
  320. package/dist/components/TextArea/index.js +5 -5
  321. package/dist/components/TextInput/index.cjs +8 -8
  322. package/dist/components/TextInput/index.js +7 -7
  323. package/dist/components/Thumbnail/index.cjs +5 -5
  324. package/dist/components/Thumbnail/index.js +4 -4
  325. package/dist/components/TimeInput/index.cjs +7 -7
  326. package/dist/components/TimeInput/index.js +6 -6
  327. package/dist/components/Toast/ToastViewport.d.ts.map +1 -1
  328. package/dist/components/Toast/index.cjs +7 -7
  329. package/dist/components/Toast/index.js +4 -4
  330. package/dist/components/ToggleButton/index.cjs +5 -5
  331. package/dist/components/ToggleButton/index.js +3 -3
  332. package/dist/components/TopNav/index.cjs +10 -10
  333. package/dist/components/TopNav/index.js +5 -5
  334. package/dist/index.cjs +216 -207
  335. package/dist/index.cjs.map +1 -1
  336. package/dist/index.d.ts +1 -0
  337. package/dist/index.d.ts.map +1 -1
  338. package/dist/index.js +52 -51
  339. package/dist/index.js.map +1 -1
  340. package/dist/styles.css +1 -1
  341. package/package.json +1 -1
  342. package/dist/chunk-3IDT3PZC.cjs.map +0 -1
  343. package/dist/chunk-3M23WX6K.js.map +0 -1
  344. package/dist/chunk-6I5QWA6A.js.map +0 -1
  345. package/dist/chunk-7TJ2O56S.js.map +0 -1
  346. package/dist/chunk-CZUMVOPH.js.map +0 -1
  347. package/dist/chunk-GJKRSQEA.cjs.map +0 -1
  348. package/dist/chunk-GUUCIG7U.js.map +0 -1
  349. package/dist/chunk-H2EMKCWT.js +0 -78
  350. package/dist/chunk-H2EMKCWT.js.map +0 -1
  351. package/dist/chunk-H5VMHDRD.cjs.map +0 -1
  352. package/dist/chunk-H7VK36SZ.cjs.map +0 -1
  353. package/dist/chunk-KUXFEAT4.cjs +0 -80
  354. package/dist/chunk-KUXFEAT4.cjs.map +0 -1
  355. package/dist/chunk-MHAXS4GO.cjs.map +0 -1
  356. package/dist/chunk-NXTDP6AX.js.map +0 -1
  357. package/dist/chunk-VXBVSYPA.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AutocompleteInput/AutocompleteInput.recipe.ts","../src/components/AutocompleteInput/AutocompleteInputItem.tsx","../src/components/AutocompleteInput/BaseAutocompleteInput.tsx","../src/components/AutocompleteInput/AutocompleteInput.tsx","../src/components/AutocompleteInput/types.ts"],"names":["sva","css","isReactNode","jsx","Fragment","jsxs","cx","Icon","Text","useId","useRef","useState","useCallback","useEffect","LoaderCircle","Check","mergeRefs","Spinner","Popover","styles","getStatusMessageID","getDescribedBy","useMemo","getNecessity","Field","inputRecipe","inputStyles","Tag","Button","X"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEO,IAAM,yBAAyBA,qBAAA,CAAI;AAAA,EACxC,OAAO,CAAC,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,WAAW,OAAO,CAAA;AAAA,EACrD,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,MAAA;AAAA,MACT,aAAA,EAAe,QAAA;AAAA,MACf,GAAA,EAAK,KAAA;AAAA,MACL,IAAA,EAAM,IAAA;AAAA,MACN,SAAA,EAAW,MAAA;AAAA,MACX,CAAA,EAAG;AAAA,KACL;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAgB,eAAA;AAAA,MAChB,GAAA,EAAK,GAAA;AAAA,MACL,CAAA,EAAG,MAAA;AAAA,MACH,WAAA,EAAa,CAAA;AAAA,MACb,YAAA,EAAc,IAAA;AAAA,MACd,EAAA,EAAI,aAAA;AAAA,MACJ,KAAA,EAAO,IAAA;AAAA,MACP,MAAA,EAAQ,SAAA;AAAA,MACR,UAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,OAAA;AAAA,MACX,MAAA,EAAQ,EAAC,EAAA,EAAI,WAAA,EAAW;AAAA,MACxB,aAAA,EAAe;AAAA,QACb,YAAA,EAAc,OAAA;AAAA,QACd,YAAA,EAAc,OAAA;AAAA,QACd,YAAA,EAAc,SAAA;AAAA,QACd,aAAA,EAAe;AAAA;AACjB,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,OAAA,EAAS,aAAA;AAAA,MACT,UAAA,EAAY,CAAA;AAAA,MACZ,KAAA,EAAO;AAAA,KACT;AAAA,IACA,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,aAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,GAAA,EAAK,GAAA;AAAA,MACL,CAAA,EAAG,GAAA;AAAA,MACH,KAAA,EAAO,UAAA;AAAA,MACP,SAAA,EAAW;AAAA,QACT,SAAA,EAAW;AAAA,OACb;AAAA,MACA,yCAAA,EAA2C;AAAA,QACzC,SAAA,EAAW,EAAC,SAAA,EAAW,MAAA;AAAM;AAC/B,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,CAAA,EAAG,GAAA;AAAA,MACH,SAAA,EAAW;AAAA;AACb,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,EAAC,MAAA,EAAQ,EAAC,IAAI,GAAA,EAAK,EAAA,EAAI,KAAG,EAAC;AAAA,MAC/B,EAAA,EAAI,EAAC,MAAA,EAAQ,EAAC,IAAI,GAAA,EAAK,EAAA,EAAI,KAAG,EAAC;AAAA,MAC/B,EAAA,EAAI,EAAC,MAAA,EAAQ,EAAC,IAAI,GAAA,EAAK,EAAA,EAAI,OAAK;AAAC;AACnC,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAUM,IAAM,sBAAA,GAAyBC,qBAAA,CAAI,EAAC,EAAA,EAAI,aAAY,CAAA;AACpD,IAAM,mBAAA,GAAsBA,qBAAA,CAAI,EAAC,UAAA,EAAY,UAAS,CAAA;AAEtD,IAAM,yBAAyBD,qBAAA,CAAI;AAAA,EACxC,KAAA,EAAO,CAAC,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA;AAAA,EAC9B,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,GAAA,EAAK,GAAA;AAAA,MACL,IAAA,EAAM;AAAA,KACR;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,aAAA;AAAA,MACT,UAAA,EAAY,CAAA;AAAA,MACZ,KAAA,EAAO;AAAA,KACT;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,MAAA;AAAA,MACT,aAAA,EAAe,QAAA;AAAA,MACf,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,UAAA,EAAY;AAAA,MACV,MAAM,EAAC,IAAA,EAAM,EAAC,OAAA,EAAS,MAAI,EAAC;AAAA,MAC5B,OAAO;AAAC;AACV,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,UAAA,EAAY;AAAA;AAEhB,CAAC,CAAA;ACvCM,SAAS,sBACd,KAAA,EACmB;AACnB,EAAA,IAAIE,6BAAA,CAAY,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA,EAAG;AACnC,IAAA,uBAAOC,cAAA,CAAAC,mBAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,OAAA,EAAQ,CAAA;AAAA,EAC/B;AAEA,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,aAAA,EAAe,UAAA;AAAA,IACf,WAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAA,GAAa,KAAA;AAAA,IACb,IAAA;AAAA,IACA,GAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,OAAA,GAAU,sBAAA,CAAuB,EAAC,UAAA,EAAW,CAAA;AAEnD,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,oBAAA,CAAG,OAAA,CAAQ,IAAA,EAAM,SAAS,CAAA;AAAA,MACrC,aAAA,EAAa,UAAA;AAAA,MACb,GAAA;AAAA,MACA,KAAA;AAAA,MACC,QAAA,EAAA;AAAA,QAAA,IAAA,IAAQ,IAAA,mBACPH,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,QAAQ,IAAA,EACvB,QAAA,kBAAAA,cAAA,CAACI,sBAAA,EAAA,EAAK,KAAA,EAAM,WAAA,EAAY,IAAA,EAAY,IAAA,EAAK,IAAA,EAAK,GAChD,CAAA,GACE,IAAA;AAAA,wBACJF,eAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,OAAA,CAAQ,IAAA,EACvB,QAAA,EAAA;AAAA,0BAAAF,cAAA,CAACK,sBAAA,EAAA,EAAK,IAAG,MAAA,EAAO,KAAA,EAAM,WAAU,IAAA,EAAK,OAAA,EAClC,eAAK,KAAA,EACR,CAAA;AAAA,UACCN,6BAAA,CAAY,WAAW,CAAA,mBACtBC,cAAA,CAACK,sBAAA,EAAA,EAAK,EAAA,EAAG,MAAA,EAAO,KAAA,EAAM,WAAA,EAAY,IAAA,EAAK,YAAA,EACpC,QAAA,EAAA,WAAA,EACH,CAAA,GACE;AAAA,SAAA,EACN;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,qBAAA,CAAsB,WAAA,GAAc,uBAAA;ACqCpC,IAAM,MAAA,GAAS;AAAA,EACb,OAAOP,qBAAA,CAAI;AAAA,IACT,OAAA,EAAS,OAAA;AAAA,IACT,IAAA,EAAM,CAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,WAAA,EAAa,CAAA;AAAA,IACb,CAAA,EAAG,CAAA;AAAA,IACH,UAAA,EAAY,MAAA;AAAA,IACZ,QAAA,EAAU,IAAA;AAAA,IACV,UAAA,EAAY,QAAA;AAAA,IACZ,KAAA,EAAO,IAAA;AAAA,IACP,EAAA,EAAI,aAAA;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IACT,YAAA,EAAc,EAAC,KAAA,EAAO,UAAA,EAAU;AAAA,IAChC,SAAA,EAAW,EAAC,MAAA,EAAQ,aAAA;AAAa,GAClC;AACH,CAAA;AAKO,SAAS,qBAAA,CAAgD;AAAA,EAC9D,SAAA;AAAA,EACA,eAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA,EAAe,UAAA;AAAA,EACf,UAAA,GAAa,GAAA;AAAA,EACb,sBAAA,GAAyB,kBAAA;AAAA,EACzB,SAAA,GAAY,sBAAA;AAAA,EACZ,YAAA,GAAe,KAAA;AAAA,EACf,iBAAA,GAAoB,KAAA;AAAA,EACpB,iBAAA,GAAoB,KAAA;AAAA,EACpB,OAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,UAAA,GAAa,KAAA;AAAA,EACb,YAAA,GAAe,EAAA;AAAA,EACf,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA,GAAc,WAAA;AAAA,EACd,KAAA;AAAA,EACA,GAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,KAAA;AAAA,EACA;AACF,CAAA,EAAqD;AACnD,EAAA,MAAM,cAAcQ,WAAA,EAAM;AAC1B,EAAA,MAAM,YAAYA,WAAA,EAAM;AACxB,EAAA,MAAM,kBAAkB,OAAA,IAAW,WAAA;AACnC,EAAA,MAAM,QAAA,GAAWC,aAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,iBAAA,GAAoBA,aAAyB,IAAI,CAAA;AACvD,EAAA,MAAM,UAAA,GAAaA,aAA6C,IAAI,CAAA;AACpE,EAAA,MAAM,aAAA,GAAgBA,aAAO,CAAC,CAAA;AAC9B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,cAAA,CAAc,EAAE,CAAA;AAC9C,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAS,EAAE,CAAA;AAC3D,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,eAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,YAAA,GAAeD,aAAO,KAAK,CAAA;AAEjC,EAAA,MAAM,OAAA,GAAUE,iBAAA;AAAA,IACd,CAAC,UAAA,KAAwB;AACvB,MAAA,SAAA,CAAU,UAAU,CAAA;AACpB,MAAA,YAAA,GAAe,UAAU,CAAA;AACzB,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,YAAA,CAAa,MAAA,IAAS;AACtB,QAAA,mBAAA,CAAoB,EAAE,CAAA;AAAA,MACxB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,cAAc,YAAY;AAAA,GAC7B;AAEA,EAAA,MAAM,QAAA,GAAWA,kBAAY,MAAM;AACjC,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,SAAA,GAAYA,iBAAA;AAAA,IAChB,OAAO,WAAmB,IAAA,KAAiC;AACzD,MAAA,MAAM,UAAA,GAAa,EAAE,aAAA,CAAc,OAAA;AACnC,MAAA,YAAA,CAAa,MAAA,IAAS;AACtB,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA,WAAA,CAAY,KAAK,CAAA;AAEjB,MAAA,IAAI;AACF,QAAA,MAAM,WAAA,GACJ,IAAA,KAAS,WAAA,GACL,MAAM,YAAA,CAAa,WAAU,GAC7B,MAAM,YAAA,CAAa,MAAA,CAAO,SAAS,CAAA;AACzC,QAAA,IAAI,aAAA,CAAc,YAAY,UAAA,EAAY;AACxC,UAAA;AAAA,QACF;AACA,QAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,KAAA,CAAM,CAAA,EAAG,YAAY,CAAA;AACxD,QAAA,UAAA,CAAW,cAAc,CAAA;AACzB,QAAA,mBAAA,CAAoB,cAAA,CAAe,MAAA,GAAS,CAAA,GAAI,CAAA,GAAI,CAAA,CAAE,CAAA;AACtD,QAAA,IAAI,cAAA,CAAe,MAAA,GAAS,CAAA,IAAK,SAAA,KAAc,EAAA,EAAI;AACjD,UAAA,QAAA,EAAS;AAAA,QACX,CAAA,MAAO;AACL,UAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,QACf;AAAA,MACF,CAAA,CAAA,MAAQ;AACN,QAAA,IAAI,aAAA,CAAc,YAAY,UAAA,EAAY;AACxC,UAAA,UAAA,CAAW,EAAE,CAAA;AACb,UAAA,mBAAA,CAAoB,EAAE,CAAA;AACtB,UAAA,WAAA,CAAY,IAAI,CAAA;AAChB,UAAA,QAAA,EAAS;AAAA,QACX;AAAA,MACF,CAAA,SAAE;AACA,QAAA,IAAI,aAAA,CAAc,YAAY,UAAA,EAAY;AACxC,UAAA,YAAA,CAAa,KAAK,CAAA;AAAA,QACpB;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,YAAA,EAAc,OAAA,EAAS,QAAQ;AAAA,GAChD;AAEA,EAAA,MAAM,WAAA,GAAcA,iBAAA;AAAA,IAClB,CAAC,SAAA,KAAsB;AACrB,MAAA,aAAA,CAAc,SAAS,CAAA;AAEvB,MAAA,IAAI,UAAA,CAAW,WAAW,IAAA,EAAM;AAC9B,QAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,MACjC;AAEA,MAAA,IAAI,SAAA,KAAc,EAAA,IAAM,CAAC,iBAAA,EAAmB;AAC1C,QAAA,aAAA,CAAc,OAAA,EAAA;AACd,QAAA,YAAA,CAAa,MAAA,IAAS;AACtB,QAAA,UAAA,CAAW,EAAE,CAAA;AACb,QAAA,cAAA,CAAe,KAAK,CAAA;AACpB,QAAA,WAAA,CAAY,KAAK,CAAA;AACjB,QAAA,YAAA,CAAa,KAAK,CAAA;AAClB,QAAA,OAAA,CAAQ,KAAK,CAAA;AACb,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,UAAA,GAAa,SAAA,KAAc,EAAA,GAAK,WAAA,GAAc,QAAA;AACpD,MAAA,IAAI,cAAc,CAAA,EAAG;AACnB,QAAA,KAAK,SAAA,CAAU,WAAW,UAAU,CAAA;AACpC,QAAA;AAAA,MACF;AAEA,MAAA,UAAA,CAAW,OAAA,GAAU,WAAW,MAAM;AACpC,QAAA,KAAK,SAAA,CAAU,WAAW,UAAU,CAAA;AAAA,MACtC,GAAG,UAAU,CAAA;AAAA,IACf,CAAA;AAAA,IACA;AAAA,MACE,UAAA;AAAA,MACA,iBAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,UAAA,GAAaA,iBAAA;AAAA,IACjB,CAAC,IAAA,KAAY;AACX,MAAA,aAAA,CAAc,OAAA,EAAA;AACd,MAAA,IAAI,UAAA,CAAW,WAAW,IAAA,EAAM;AAC9B,QAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,MACjC;AACA,MAAA,YAAA,CAAa,MAAA,IAAS;AACtB,MAAA,aAAA,CAAc,EAAE,CAAA;AAChB,MAAA,UAAA,CAAW,EAAE,CAAA;AACb,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAA,WAAA,CAAY,KAAK,CAAA;AACjB,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AACvB,MAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AACxB,MAAA,YAAA,CAAa,OAAA,GAAU,KAAA;AACvB,MAAA,IAAI,qBAAqB,iBAAA,EAAmB;AAC1C,QAAA,KAAK,SAAA,CAAU,IAAI,WAAW,CAAA;AAAA,MAChC,CAAA,MAAO;AACL,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,iBAAA;AAAA,MACA,iBAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,UAAA,CAAW,WAAW,IAAA,EAAM;AAC9B,QAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,MACjC;AACA,MAAA,YAAA,CAAa,MAAA,IAAS;AAAA,IACxB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,WAAA,GAAc,sBAAA,CAAuB,EAAC,IAAA,EAAK,CAAA;AAEjD,EAAA,MAAM,uBACJV,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,gBAAA;AAAA,MACX,WAAW,WAAA,CAAY,IAAA;AAAA,MACvB,EAAA,EAAI,SAAA;AAAA,MACJ,IAAA,EAAK,SAAA;AAAA,MACJ,QAAA,EAAA,SAAA,mBACCE,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,WAAA,CAAY,OAAA,EAAS,MAAK,QAAA,EACxC,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAACI,sBAAA,EAAA,EAAK,IAAA,EAAMO,wBAAA,EAAc,MAAK,IAAA,EAAK,CAAA;AAAA,wBACpCX,eAACK,sBAAA,EAAA,EAAK,EAAA,EAAG,QAAO,KAAA,EAAM,WAAA,EAAY,IAAA,EAAK,YAAA,EAAa,QAAA,EAAA,SAAA,EAEpD;AAAA,OAAA,EACF,CAAA,GACE,2BACFL,cAAAA,CAAC,SAAI,SAAA,EAAW,WAAA,CAAY,KAAA,EAAO,IAAA,EAAK,OAAA,EACtC,QAAA,kBAAAA,eAACK,sBAAA,EAAA,EAAK,EAAA,EAAG,QAAO,KAAA,EAAM,WAAA,EAAY,MAAK,YAAA,EACpC,QAAA,EAAA,SAAA,EACH,CAAA,EACF,CAAA,GACE,OAAA,CAAQ,MAAA,KAAW,KAAK,WAAA,mBAC1BL,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAY,KAAA,EAC1B,QAAA,kBAAAA,cAAAA,CAACK,sBAAA,EAAA,EAAK,EAAA,EAAG,MAAA,EAAO,OAAM,WAAA,EAAY,IAAA,EAAK,cACpC,QAAA,EAAA,sBAAA,EACH,CAAA,EACF,IAEA,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC3B,QAAA,MAAM,UAAA,GAAa,KAAA,EAAO,EAAA,KAAO,IAAA,CAAK,EAAA;AACtC,QAAA;AAAA;AAAA,0BAEEH,eAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,eAAA,EAAe,UAAA;AAAA,cACf,SAAA,EAAWC,oBAAA;AAAA,gBACT,WAAA,CAAY,MAAA;AAAA,gBACZ,KAAA,KAAU,mBAAmB,sBAAA,GAAyB,MAAA;AAAA,gBACtD,aAAa,mBAAA,GAAsB;AAAA,eACrC;AAAA,cACA,EAAA,EAAI,CAAA,EAAG,SAAS,CAAA,QAAA,EAAW,KAAK,CAAA,CAAA;AAAA,cAEhC,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,cAC9B,YAAA,EAAc,MAAM,mBAAA,CAAoB,KAAK,CAAA;AAAA,cAC7C,IAAA,EAAK,QAAA;AAAA,cACL,QAAA,EAAU,EAAA;AAAA,cACT,QAAA,EAAA;AAAA,gBAAA,UAAA,IAAc,uBACbH,cAAAA,CAAC,yBAAsB,IAAA,EAAY,CAAA,GAEnC,WAAW,IAAI,CAAA;AAAA,gBAEhB,6BACCA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,YAAY,KAAA,EAC3B,QAAA,kBAAAA,cAAAA,CAACI,sBAAA,EAAA,EAAK,OAAM,QAAA,EAAS,IAAA,EAAMQ,mBAAO,IAAA,EAAK,IAAA,EAAK,GAC9C,CAAA,GACE;AAAA;AAAA,aAAA;AAAA,YAdC,IAAA,CAAK;AAAA;AAeZ;AAAA,MAEJ,CAAC;AAAA;AAAA,GAEL;AAGF,EAAA,uBACEV,eAAAA,CAAAD,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAD,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,uBAAA,EACE,UAAU,gBAAA,IAAoB,CAAA,GAC1B,GAAG,SAAS,CAAA,QAAA,EAAW,gBAAgB,CAAA,CAAA,GACvC,MAAA;AAAA,QAEN,mBAAA,EAAkB,MAAA;AAAA,QAClB,eAAA,EAAe,SAAA;AAAA,QACf,kBAAA,EAAkB,eAAA;AAAA,QAClB,eAAA,EAAe,MAAA;AAAA,QACf,iBAAe,UAAA,IAAc,MAAA;AAAA,QAC7B,YAAA,EAAa,KAAA;AAAA,QAEb,SAAA,EAAW,YAAA;AAAA,QACX,SAAA,EAAWG,oBAAA,CAAG,MAAA,CAAO,KAAA,EAAO,SAAS,CAAA;AAAA,QACrC,kBAAgB,YAAA,IAAgB,MAAA;AAAA,QAChC,aAAA,EAAa,UAAA;AAAA,QACb,QAAA,EAAU,UAAA;AAAA,QACV,EAAA,EAAI,eAAA;AAAA,QACJ,QAAQ,MAAM;AAIZ,UAAA,qBAAA,CAAsB,MAAM;AAC1B,YAAA,IACE,CAAC,QAAA,CAAS,OAAA,EAAS,QAAA,CAAS,QAAA,CAAS,aAAa,CAAA,IAClD,CAAC,QAAA,CAAS,aAAA,EAAe,OAAA,CAAQ,kBAAkB,CAAA,EACnD;AACA,cAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,YACf;AAAA,UACF,CAAC,CAAA;AAAA,QACH,CAAA;AAAA,QACA,QAAA,EAAU,CAAA,KAAA,KAAS,WAAA,CAAY,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,QACjD,SAAS,MAAM;AACb,UAAA,IAAI,aAAa,OAAA,EAAS;AACxB,YAAA;AAAA,UACF;AACA,UAAA,IAAI,KAAA,KAAU,EAAA,IAAM,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AACxC,YAAA,KAAK,SAAA,CAAU,OAAO,QAAQ,CAAA;AAAA,UAChC,WACE,iBAAA,IACA,KAAA,KAAU,EAAA,IACV,OAAA,CAAQ,WAAW,CAAA,EACnB;AACA,YAAA,KAAK,SAAA,CAAU,IAAI,WAAW,CAAA;AAAA,UAChC,CAAA,MAAA,IAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAC7B,YAAA,QAAA,EAAS;AAAA,UACX;AAAA,QACF,CAAA;AAAA,QACA,WAAW,CAAA,KAAA,KAAS;AAClB,UAAA,SAAA,GAAY,KAAK,CAAA;AACjB,UAAA,IAAI,MAAM,gBAAA,EAAkB;AAC1B,YAAA;AAAA,UACF;AAEA,UAAA,IAAI,KAAA,CAAM,QAAQ,WAAA,EAAa;AAC7B,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,IAAI,CAAC,MAAA,EAAQ;AACX,cAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,gBAAA,QAAA,EAAS;AAAA,cACX,WAAW,iBAAA,EAAmB;AAC5B,gBAAA,KAAK,SAAA,CAAU,IAAI,WAAW,CAAA;AAAA,cAChC;AACA,cAAA;AAAA,YACF;AACA,YAAA,mBAAA;AAAA,cAAoB,WAClB,OAAA,CAAQ,MAAA,KAAW,IAAI,EAAA,GAAA,CAAM,KAAA,GAAQ,KAAK,OAAA,CAAQ;AAAA,aACpD;AAAA,UACF,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,SAAA,EAAW;AAClC,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,mBAAA;AAAA,cAAoB,CAAA,KAAA,KAClB,QAAQ,MAAA,KAAW,CAAA,GACf,MACC,KAAA,GAAQ,CAAA,GAAI,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ;AAAA,aAC7C;AAAA,UACF,CAAA,MAAA,IACE,MAAM,GAAA,KAAQ,OAAA,IACd,UACA,gBAAA,IAAoB,CAAA,IACpB,gBAAA,GAAmB,OAAA,CAAQ,MAAA,EAC3B;AACA,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,UAAA,CAAW,OAAA,CAAQ,gBAAgB,CAAC,CAAA;AAAA,UACtC,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,QAAA,IAAY,MAAA,EAAQ;AAC3C,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,UACf;AAAA,QACF,CAAA;AAAA,QACA,WAAA;AAAA,QACA,GAAA,EAAKU,2BAAA,CAAU,GAAA,EAAK,QAAA,EAAU,iBAAiB,CAAA;AAAA,QAC/C,IAAA,EAAK,UAAA;AAAA,QACL,KAAA;AAAA,QACA,IAAA,EAAK,MAAA;AAAA,QACL,KAAA,EAAO;AAAA;AAAA,KACT;AAAA,IACC,4BAAYb,cAAAA,CAACc,yBAAA,EAAA,EAAQ,IAAA,EAAK,MAAK,CAAA,GAAK,IAAA;AAAA,oBACrCd,cAAAA;AAAA,MAACe,yBAAA;AAAA,MAAA;AAAA,QACC,WAAW,SAAA,IAAa,iBAAA;AAAA,QACxB,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,KAAA;AAAA,QACd,cAAA,EAAgB,KAAA;AAAA,QAChB,aAAA,EAAe,KAAA;AAAA,QACf,MAAA;AAAA,QACA,YAAA,EAAc;AAAA;AAAA;AAChB,GAAA,EACF,CAAA;AAEJ;AAEA,qBAAA,CAAsB,WAAA,GAAc,uBAAA;AClXpC,IAAMC,OAAAA,GAAS;AAAA,EACb,SAASlB,qBAAA,CAAI;AAAA,IACX,MAAA,EAAQ,MAAA;AAAA,IACR,QAAA,EAAU;AAAA,GACX,CAAA;AAAA,EACD,KAAKA,qBAAA,CAAI;AAAA,IACP,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACL,CAAA;AAAA,EACD,aAAaA,qBAAA,CAAI;AAAA,IACf,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,CAAA;AAAA,IACT,CAAA,EAAG,CAAA;AAAA,IACH,IAAA,EAAM,CAAA;AAAA,IACN,SAAA,EAAW;AAAA,GACZ,CAAA;AAAA,EACD,aAAaA,qBAAA,CAAI;AAAA,IACf,EAAA,EAAI;AAAA,GACL;AACH,CAAA;AAKO,SAAS,iBAAA,CAA4C;AAAA,EAC1D,SAAA;AAAA,EACA,aAAA,EAAe,UAAA;AAAA,EACf,UAAA;AAAA,EACA,WAAA;AAAA,EACA,sBAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA,GAAe,KAAA;AAAA,EACf,QAAA,GAAW,IAAA;AAAA,EACX,iBAAA,GAAoB,KAAA;AAAA,EACpB,UAAA,GAAa,KAAA;AAAA,EACb,aAAA,GAAgB,KAAA;AAAA,EAChB,UAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,SAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAiD;AAC/C,EAAA,MAAM,UAAUQ,WAAAA,EAAM;AACtB,EAAA,MAAM,gBAAgBP,6BAAA,CAAY,WAAW,CAAA,GACzC,CAAA,EAAG,OAAO,CAAA,YAAA,CAAA,GACV,MAAA;AACJ,EAAA,MAAM,eAAA,GAAkBkB,oCAAA,CAAmB,OAAA,EAAS,MAAM,CAAA;AAC1D,EAAA,MAAM,WAAA,GAAcC,gCAAA,CAAe,aAAA,EAAe,eAAe,CAAA;AACjE,EAAA,MAAM,UAAA,GAAaX,aAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,QAAA,GAAWA,aAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIC,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,eAAS,EAAE,CAAA;AAC/C,EAAA,MAAM,OAAA,GAAU,KAAA,IAAS,IAAA,IAAQ,CAAC,SAAA;AAClC,EAAA,MAAM,WAAA,GAAcW,aAAA;AAAA,IAClB,MACE,UAAU,IAAA,GAAO,MAAA,GAAY,EAAC,GAAG,MAAA,EAAQ,WAAW,eAAA,EAAe;AAAA,IACrE,CAAC,QAAQ,eAAe;AAAA,GAC1B;AAEA,EAAA,MAAM,SAAA,GAAYC,8BAAA,CAAa,UAAA,EAAY,UAAU,CAAA;AAErD,EAAA,MAAM,YAAA,GAAeX,iBAAAA;AAAA,IACnB,CAAC,SAAA,KAAsB;AACrB,MAAA,IAAI,UAAA,EAAY;AACd,QAAA;AAAA,MACF;AACA,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,aAAA,CAAc,SAAS,CAAA;AACvB,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,QAAA,IAAI,SAAS,IAAA,EAAM;AACjB,UAAA,KAAA,CAAM,KAAA,EAAM;AACZ,UAAA,KAAA,CAAM,iBAAA,CAAkB,SAAA,CAAU,MAAA,EAAQ,SAAA,CAAU,MAAM,CAAA;AAAA,QAC5D;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,uBACET,cAAAA;AAAA,IAACqB,uBAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACC,GAAG,SAAA;AAAA,MACJ,KAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,GAAA;AAAA,MACA,MAAA,EAAQ,WAAA;AAAA,MACR,KAAA;AAAA,MAEA,QAAA,kBAAAnB,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAWC,oBAAA;AAAA,YACTmB,6BAAA,CAAY;AAAA,cACV,IAAA;AAAA,cACA,QAAQ,MAAA,EAAQ,IAAA;AAAA,cAChB;AAAA,aACD,CAAA;AAAA,YACDN,OAAAA,CAAO;AAAA,WACT;AAAA,UACA,aAAA,EAAa,UAAA;AAAA,UACb,SAAS,MAAM;AACb,YAAA,IAAI,OAAA,EAAS;AACX,cAAA,YAAA,CAAa,MAAM,KAAK,CAAA;AAAA,YAC1B;AAAA,UACF,CAAA;AAAA,UACA,GAAA,EAAK,UAAA;AAAA,UACJ,QAAA,EAAA;AAAA,YAAA,SAAA,IAAa,uBACZhB,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAWuB,8BAAY,QAAA,EAC3B,QAAA,kBAAAvB,cAAAA,CAACI,sBAAA,EAAA,EAAK,OAAM,WAAA,EAAY,IAAA,EAAM,WAAW,IAAA,EAAK,IAAA,EAAK,GACrD,CAAA,GACE,IAAA;AAAA,YACH,0BACCJ,cAAAA;AAAA,cAACwB,qBAAA;AAAA,cAAA;AAAA,gBACC,WAAWR,OAAAA,CAAO,GAAA;AAAA,gBAClB,UAAA;AAAA,gBACA,OAAO,KAAA,CAAM,KAAA;AAAA,gBACb,OAAA,EAAS,MAAM,YAAA,CAAa,KAAA,CAAM,KAAK,CAAA;AAAA,gBACvC;AAAA;AAAA,aACF,GACE,IAAA;AAAA,4BACJhB,cAAAA;AAAA,cAAC,qBAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,UAAA;AAAA,gBACX,eAAA,EAAiB,WAAA;AAAA,gBACjB,SAAA,EAAW,OAAA,GAAUgB,OAAAA,CAAO,WAAA,GAAc,MAAA;AAAA,gBAC1C,UAAA;AAAA,gBACA,sBAAA;AAAA,gBACA,SAAA;AAAA,gBACA,YAAA;AAAA,gBACA,iBAAA;AAAA,gBACA,OAAA;AAAA,gBACA,UAAA;AAAA,gBACA,UAAA;AAAA,gBACA,YAAA;AAAA,gBACA,UAAU,CAAA,IAAA,KAAQ;AAChB,kBAAA,YAAA,CAAa,KAAK,CAAA;AAClB,kBAAA,aAAA,CAAc,EAAE,CAAA;AAChB,kBAAA,QAAA,CAAS,IAAI,CAAA;AAAA,gBACf,CAAA;AAAA,gBACA,YAAA;AAAA,gBACA,eAAe,CAAA,SAAA,KAAa;AAC1B,kBAAA,aAAA,CAAc,SAAS,CAAA;AACvB,kBAAA,aAAA,GAAgB,SAAS,CAAA;AAAA,gBAC3B,CAAA;AAAA,gBACA,WAAA,EAAa,UAAU,MAAA,GAAY,WAAA;AAAA,gBACnC,KAAA,EAAO,UAAA;AAAA,gBACP,GAAA,EAAK,QAAA;AAAA,gBACL,UAAA;AAAA,gBACA,YAAA;AAAA,gBACA,IAAA;AAAA,gBACA;AAAA;AAAA,aACF;AAAA,YACC,QAAA,IAAY,KAAA,IAAS,IAAA,IAAQ,CAAC,6BAC7BhB,cAAAA;AAAA,cAACyB,wBAAA;AAAA,cAAA;AAAA,gBACC,WAAWT,OAAAA,CAAO,WAAA;AAAA,gBAClB,IAAA,EAAMU,aAAA;AAAA,gBACN,UAAA,EAAU,IAAA;AAAA,gBACV,KAAA,EAAO,SAAS,KAAK,CAAA,CAAA;AAAA,gBACrB,SAAS,CAAA,KAAA,KAAS;AAChB,kBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,kBAAA,YAAA,CAAa,KAAK,CAAA;AAClB,kBAAA,QAAA,CAAS,IAAI,CAAA;AACb,kBAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,gBAC1B,CAAA;AAAA,gBACA,IAAA,EAAK,IAAA;AAAA,gBACL,OAAA,EAAQ;AAAA;AAAA,aACV,GACE;AAAA;AAAA;AAAA;AACN;AAAA,GACF;AAEJ;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;;ACrQzB,SAAS,wBAAA,CACd,OACA,OAAA,EACiB;AACjB,EAAA,OAAO;AAAA,IACL,WAAW,MAAM,KAAA;AAAA,IACjB,OAAO,KAAA,EAAO;AACZ,MAAA,MAAM,eAAA,GAAkB,KAAA,CAAM,IAAA,EAAK,CAAE,WAAA,EAAY;AACjD,MAAA,IAAI,oBAAoB,EAAA,EAAI;AAC1B,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,OAAO,KAAA,CAAM,OAAO,CAAA,IAAA,KAAQ;AAC1B,QAAA,IAAI,KAAK,KAAA,CAAM,WAAA,EAAY,CAAE,QAAA,CAAS,eAAe,CAAA,EAAG;AACtD,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,OACE,OAAA,EACI,WAAA,GAAc,IAAI,CAAA,CACnB,IAAA,CAAK,CAAA,OAAA,KAAW,OAAA,CAAQ,WAAA,EAAY,CAAE,QAAA,CAAS,eAAe,CAAC,CAAA,IAClE,KAAA;AAAA,MAEJ,CAAC,CAAA;AAAA,IACH;AAAA,GACF;AACF","file":"chunk-DK6USFZP.cjs","sourcesContent":["import {css, sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const autocompleteMenuRecipe = sva({\n slots: ['menu', 'option', 'check', 'loading', 'empty'],\n base: {\n menu: {\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5',\n maxH: '80',\n overflowY: 'auto',\n p: '1',\n },\n option: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '2',\n w: 'full',\n borderWidth: 0,\n borderRadius: 'md',\n bg: 'transparent',\n color: 'fg',\n cursor: 'pointer',\n fontFamily: 'body',\n textAlign: 'start',\n _hover: {bg: 'bg.subtle'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffsetTight',\n },\n },\n check: {\n display: 'inline-flex',\n flexShrink: 0,\n color: 'primary',\n },\n loading: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '1',\n p: '2',\n color: 'fg.muted',\n '& > svg': {\n animation: 'spin 0.8s linear infinite',\n },\n '@media (prefers-reduced-motion: reduce)': {\n '& > svg': {animation: 'none'},\n },\n },\n empty: {\n p: '3',\n textAlign: 'center',\n },\n },\n variants: {\n size: {\n sm: {option: {px: '2', py: '1'}},\n md: {option: {px: '2', py: '2'}},\n lg: {option: {px: '3', py: '2.5'}},\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport type AutocompleteMenuVariants = RecipeVariantProps<\n typeof autocompleteMenuRecipe\n>;\n\n/**\n * Per-option state styles applied via `cx()` since they vary per-row\n * rather than per-component instance.\n */\nexport const optionHighlightedStyle = css({bg: 'bg.subtle'});\nexport const optionSelectedStyle = css({fontWeight: 'medium'});\n\nexport const autocompleteItemRecipe = sva({\n slots: ['root', 'icon', 'text'],\n base: {\n root: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n minW: 0,\n },\n icon: {\n display: 'inline-flex',\n flexShrink: 0,\n color: 'fg.muted',\n },\n text: {\n display: 'flex',\n flexDirection: 'column',\n minW: 0,\n },\n },\n variants: {\n isDisabled: {\n true: {root: {opacity: 0.55}},\n false: {},\n },\n },\n defaultVariants: {\n isDisabled: false,\n },\n});\n\nexport type AutocompleteItemVariants = RecipeVariantProps<\n typeof autocompleteItemRecipe\n>;\n","/* eslint-disable silver-ui/require-component-props -- discriminated union: custom-element items render item.element directly; passthrough props only apply to standard items */\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {autocompleteItemRecipe} from 'components/AutocompleteInput/AutocompleteInput.recipe';\nimport type {SearchableItem} from 'components/AutocompleteInput/types';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Text} from 'components/Text';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\n/**\n * Props for an item with a custom `element`. The element is rendered\n * directly — layout props like `icon` and `description` do not apply.\n */\ninterface AutocompleteInputCustomItemProps {\n /**\n * Search result item with custom element content.\n */\n item: SearchableItem & {element: ReactNode};\n}\n\n/**\n * Props for a standard item rendered with the default layout.\n */\ninterface AutocompleteInputStandardItemProps {\n /**\n * Additional CSS class names applied to the item layout.\n */\n className?: string;\n /**\n * Test ID applied to the item layout.\n */\n 'data-testid'?: string;\n /**\n * Supporting text displayed below the label.\n */\n description?: ReactNode;\n /**\n * Icon or avatar rendered before the label.\n */\n icon?: IconComponent;\n /**\n * Whether the item is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Search result item without a custom element.\n */\n item: SearchableItem & {element?: undefined};\n /**\n * Ref forwarded to the item layout.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Inline styles applied to the item layout.\n */\n style?: CSSProperties;\n}\n\nexport type AutocompleteInputItemProps =\n | AutocompleteInputCustomItemProps\n | AutocompleteInputStandardItemProps;\n\n/**\n * Default layout for AutocompleteInput and TagsInput result rows.\n *\n * When the item has a pre-rendered `element`, it is returned directly.\n * Otherwise the component renders a flex row with an optional icon,\n * primary label, and description.\n */\nexport function AutocompleteInputItem(\n props: AutocompleteInputItemProps,\n): React.JSX.Element {\n if (isReactNode(props.item.element)) {\n return <>{props.item.element}</>;\n }\n\n const {\n className,\n 'data-testid': dataTestId,\n description,\n icon,\n isDisabled = false,\n item,\n ref,\n style,\n } = props as AutocompleteInputStandardItemProps;\n\n const classes = autocompleteItemRecipe({isDisabled});\n\n return (\n <div\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n {icon != null ? (\n <span className={classes.icon}>\n <Icon color=\"secondary\" icon={icon} size=\"sm\" />\n </span>\n ) : null}\n <span className={classes.text}>\n <Text as=\"span\" color=\"inherit\" type=\"label\">\n {item.label}\n </Text>\n {isReactNode(description) ? (\n <Text as=\"span\" color=\"secondary\" type=\"supporting\">\n {description}\n </Text>\n ) : null}\n </span>\n </div>\n );\n}\n\nAutocompleteInputItem.displayName = 'AutocompleteInputItem';\n","import {Check, LoaderCircle} from 'lucide-react';\nimport {\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n type RefObject,\n} from 'react';\nimport {\n autocompleteMenuRecipe,\n optionHighlightedStyle,\n optionSelectedStyle,\n} from 'components/AutocompleteInput/AutocompleteInput.recipe';\nimport {AutocompleteInputItem} from 'components/AutocompleteInput/AutocompleteInputItem';\nimport type {\n SearchableItem,\n SearchSource,\n} from 'components/AutocompleteInput/types';\nimport {Icon} from 'components/Icon';\nimport {Popover} from 'components/Popover';\nimport {Spinner} from 'components/Spinner';\nimport {Text} from 'components/Text';\nimport {cx} from 'internal/cx';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport {css} from 'styled-system/css';\n\nexport interface BaseAutocompleteInputProps<T extends SearchableItem> {\n /**\n * Ref to the element the result popover should align to.\n */\n anchorRef?: RefObject<HTMLElement | null>;\n /**\n * IDs describing the input.\n */\n ariaDescribedBy?: string;\n /**\n * Additional CSS class names applied to the input.\n */\n className?: string;\n /**\n * Test ID applied to the input element.\n */\n 'data-testid'?: string;\n /**\n * Debounce delay in milliseconds before search runs.\n * @default 150\n */\n debounceMs?: number;\n /**\n * Empty state text.\n * @default 'No results found'\n */\n emptySearchResultsText?: string;\n /**\n * Text shown in the menu when a search fails.\n * @default 'Something went wrong'\n */\n errorText?: string;\n /**\n * Whether to focus the input on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to show bootstrap results on focus before typing.\n * @default false\n */\n hasEntriesOnFocus?: boolean;\n /**\n * Whether to re-bootstrap results after selecting an item. Useful for\n * multi-select comboboxes where the user picks several items in a row.\n * @default false\n */\n hasReopenOnSelect?: boolean;\n /**\n * Optional ID for the input.\n */\n inputId?: string;\n /**\n * Whether the input is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether the input is required.\n * @default false\n */\n isRequired?: boolean;\n /**\n * Maximum number of menu items.\n * @default 10\n */\n maxMenuItems?: number;\n /**\n * Called when a result is selected.\n */\n onChange: (item: T | null) => void;\n /**\n * Keyboard handler invoked before internal navigation.\n */\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n /**\n * Called when the result popover opens or closes.\n */\n onOpenChange?: (isOpen: boolean) => void;\n /**\n * Called when the query changes.\n */\n onQueryChange: (query: string) => void;\n /**\n * Placeholder text.\n * @default 'Search...'\n */\n placeholder?: string;\n /**\n * Current query string.\n */\n query: string;\n /**\n * Ref forwarded to the input.\n */\n ref?: Ref<HTMLInputElement>;\n /**\n * Custom result renderer.\n */\n renderItem?: (item: T) => 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?: 'sm' | 'md' | 'lg';\n /**\n * Inline styles applied to the input.\n */\n style?: CSSProperties;\n /**\n * Selected item.\n */\n value: T | null;\n}\n\nconst styles = {\n input: css({\n display: 'block',\n flex: 1,\n minW: '15',\n borderWidth: 0,\n p: 0,\n fontFamily: 'body',\n fontSize: 'md',\n lineHeight: 'normal',\n color: 'fg',\n bg: 'transparent',\n outline: 'none',\n _placeholder: {color: 'fg.muted'},\n _disabled: {cursor: 'not-allowed'},\n }),\n} as const;\n\n/**\n * Internal combobox engine used by AutocompleteInput and TagsInput.\n */\nexport function BaseAutocompleteInput<T extends SearchableItem>({\n anchorRef,\n ariaDescribedBy,\n className,\n 'data-testid': dataTestId,\n debounceMs = 150,\n emptySearchResultsText = 'No results found',\n errorText = 'Something went wrong',\n hasAutoFocus = false,\n hasEntriesOnFocus = false,\n hasReopenOnSelect = false,\n inputId,\n isDisabled = false,\n isRequired = false,\n maxMenuItems = 10,\n onChange,\n onKeyDown,\n onOpenChange,\n onQueryChange,\n placeholder = 'Search...',\n query,\n ref,\n renderItem,\n searchSource,\n size = 'md',\n style,\n value,\n}: BaseAutocompleteInputProps<T>): React.JSX.Element {\n const generatedId = useId();\n const listboxId = useId();\n const resolvedInputId = inputId ?? generatedId;\n const inputRef = useRef<HTMLInputElement>(null);\n const fallbackAnchorRef = useRef<HTMLInputElement>(null);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const generationRef = useRef(0);\n const [results, setResults] = useState<T[]>([]);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n const [isLoading, setIsLoading] = useState(false);\n const [hasSearched, setHasSearched] = useState(false);\n const [hasError, setHasError] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const selectingRef = useRef(false);\n\n const setOpen = useCallback(\n (isNextOpen: boolean) => {\n setIsOpen(isNextOpen);\n onOpenChange?.(isNextOpen);\n if (!isNextOpen) {\n searchSource.cancel?.();\n setHighlightedIndex(-1);\n }\n },\n [onOpenChange, searchSource],\n );\n\n const showMenu = useCallback(() => {\n setOpen(true);\n }, [setOpen]);\n\n const runSearch = useCallback(\n async (nextQuery: string, kind: 'bootstrap' | 'search') => {\n const generation = ++generationRef.current;\n searchSource.cancel?.();\n setIsLoading(true);\n setHasSearched(true);\n setHasError(false);\n\n try {\n const nextResults =\n kind === 'bootstrap'\n ? await searchSource.bootstrap()\n : await searchSource.search(nextQuery);\n if (generationRef.current !== generation) {\n return;\n }\n const limitedResults = nextResults.slice(0, maxMenuItems);\n setResults(limitedResults);\n setHighlightedIndex(limitedResults.length > 0 ? 0 : -1);\n if (limitedResults.length > 0 || nextQuery !== '') {\n showMenu();\n } else {\n setOpen(false);\n }\n } catch {\n if (generationRef.current === generation) {\n setResults([]);\n setHighlightedIndex(-1);\n setHasError(true);\n showMenu();\n }\n } finally {\n if (generationRef.current === generation) {\n setIsLoading(false);\n }\n }\n },\n [maxMenuItems, searchSource, setOpen, showMenu],\n );\n\n const updateQuery = useCallback(\n (nextQuery: string) => {\n onQueryChange(nextQuery);\n\n if (timeoutRef.current != null) {\n clearTimeout(timeoutRef.current);\n }\n\n if (nextQuery === '' && !hasEntriesOnFocus) {\n generationRef.current++;\n searchSource.cancel?.();\n setResults([]);\n setHasSearched(false);\n setHasError(false);\n setIsLoading(false);\n setOpen(false);\n return;\n }\n\n const searchKind = nextQuery === '' ? 'bootstrap' : 'search';\n if (debounceMs <= 0) {\n void runSearch(nextQuery, searchKind);\n return;\n }\n\n timeoutRef.current = setTimeout(() => {\n void runSearch(nextQuery, searchKind);\n }, debounceMs);\n },\n [\n debounceMs,\n hasEntriesOnFocus,\n onQueryChange,\n runSearch,\n searchSource,\n setOpen,\n ],\n );\n\n const selectItem = useCallback(\n (item: T) => {\n generationRef.current++;\n if (timeoutRef.current != null) {\n clearTimeout(timeoutRef.current);\n }\n searchSource.cancel?.();\n onQueryChange('');\n setResults([]);\n setHasSearched(false);\n setHasError(false);\n setIsLoading(false);\n onChange(item);\n selectingRef.current = true;\n inputRef.current?.focus();\n selectingRef.current = false;\n if (hasReopenOnSelect && hasEntriesOnFocus) {\n void runSearch('', 'bootstrap');\n } else {\n setOpen(false);\n }\n },\n [\n hasEntriesOnFocus,\n hasReopenOnSelect,\n onChange,\n onQueryChange,\n runSearch,\n searchSource,\n setOpen,\n ],\n );\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current != null) {\n clearTimeout(timeoutRef.current);\n }\n searchSource.cancel?.();\n };\n }, [searchSource]);\n\n const menuClasses = autocompleteMenuRecipe({size});\n\n const menu = (\n <div\n aria-label=\"Search results\"\n className={menuClasses.menu}\n id={listboxId}\n role=\"listbox\">\n {isLoading ? (\n <div className={menuClasses.loading} role=\"status\">\n <Icon icon={LoaderCircle} size=\"sm\" />\n <Text as=\"span\" color=\"secondary\" type=\"supporting\">\n Loading\n </Text>\n </div>\n ) : hasError ? (\n <div className={menuClasses.empty} role=\"alert\">\n <Text as=\"span\" color=\"secondary\" type=\"supporting\">\n {errorText}\n </Text>\n </div>\n ) : results.length === 0 && hasSearched ? (\n <div className={menuClasses.empty}>\n <Text as=\"span\" color=\"secondary\" type=\"supporting\">\n {emptySearchResultsText}\n </Text>\n </div>\n ) : (\n results.map((item, index) => {\n const isSelected = value?.id === item.id;\n return (\n // eslint-disable-next-line jsx-a11y-x/click-events-have-key-events -- keyboard navigation is handled by the combobox input, not individual options\n <div\n aria-selected={isSelected}\n className={cx(\n menuClasses.option,\n index === highlightedIndex ? optionHighlightedStyle : undefined,\n isSelected ? optionSelectedStyle : undefined,\n )}\n id={`${listboxId}-option-${index}`}\n key={item.id}\n onClick={() => selectItem(item)}\n onMouseEnter={() => setHighlightedIndex(index)}\n role=\"option\"\n tabIndex={-1}>\n {renderItem == null ? (\n <AutocompleteInputItem item={item} />\n ) : (\n renderItem(item)\n )}\n {isSelected ? (\n <span className={menuClasses.check}>\n <Icon color=\"accent\" icon={Check} size=\"sm\" />\n </span>\n ) : null}\n </div>\n );\n })\n )}\n </div>\n );\n\n return (\n <>\n <input\n aria-activedescendant={\n isOpen && highlightedIndex >= 0\n ? `${listboxId}-option-${highlightedIndex}`\n : undefined\n }\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-describedby={ariaDescribedBy}\n aria-expanded={isOpen}\n aria-required={isRequired || undefined}\n autoComplete=\"off\"\n // eslint-disable-next-line jsx-a11y-x/no-autofocus\n autoFocus={hasAutoFocus}\n className={cx(styles.input, className)}\n data-autofocus={hasAutoFocus || undefined}\n data-testid={dataTestId}\n disabled={isDisabled}\n id={resolvedInputId}\n onBlur={() => {\n // Defer so we can check whether focus moved to an option inside\n // the popover (e.g. the user clicked a result). If focus left\n // both the input and the popover, close the menu.\n requestAnimationFrame(() => {\n if (\n !inputRef.current?.contains(document.activeElement) &&\n !document.activeElement?.closest('[role=\"listbox\"]')\n ) {\n setOpen(false);\n }\n });\n }}\n onChange={event => updateQuery(event.target.value)}\n onFocus={() => {\n if (selectingRef.current) {\n return;\n }\n if (query !== '' && results.length === 0) {\n void runSearch(query, 'search');\n } else if (\n hasEntriesOnFocus &&\n query === '' &&\n results.length === 0\n ) {\n void runSearch('', 'bootstrap');\n } else if (results.length > 0) {\n showMenu();\n }\n }}\n onKeyDown={event => {\n onKeyDown?.(event);\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (!isOpen) {\n if (results.length > 0) {\n showMenu();\n } else if (hasEntriesOnFocus) {\n void runSearch('', 'bootstrap');\n }\n return;\n }\n setHighlightedIndex(index =>\n results.length === 0 ? -1 : (index + 1) % results.length,\n );\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n setHighlightedIndex(index =>\n results.length === 0\n ? -1\n : (index - 1 + results.length) % results.length,\n );\n } else if (\n event.key === 'Enter' &&\n isOpen &&\n highlightedIndex >= 0 &&\n highlightedIndex < results.length\n ) {\n event.preventDefault();\n selectItem(results[highlightedIndex]);\n } else if (event.key === 'Escape' && isOpen) {\n event.preventDefault();\n setOpen(false);\n }\n }}\n placeholder={placeholder}\n ref={mergeRefs(ref, inputRef, fallbackAnchorRef)}\n role=\"combobox\"\n style={style}\n type=\"text\"\n value={query}\n />\n {isLoading ? <Spinner size=\"sm\" /> : null}\n <Popover\n anchorRef={anchorRef ?? fallbackAnchorRef}\n content={menu}\n hasAutoFocus={false}\n hasCloseButton={false}\n isDismissable={false}\n isOpen={isOpen}\n onOpenChange={setOpen}\n />\n </>\n );\n}\n\nBaseAutocompleteInput.displayName = 'BaseAutocompleteInput';\n","import {X} from 'lucide-react';\nimport {\n useCallback,\n useId,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {BaseAutocompleteInput} from 'components/AutocompleteInput/BaseAutocompleteInput';\nimport type {\n SearchableItem,\n SearchSource,\n} from 'components/AutocompleteInput/types';\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 {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nexport type AutocompleteInputProps<T extends SearchableItem = SearchableItem> =\n {\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 * Text shown in the menu when a search fails.\n * @default 'Something went wrong'\n */\n errorText?: string;\n /**\n * Whether to focus the input on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to show a clear button when a value is selected.\n * @default true\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 * 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 menu items.\n * @default 10\n */\n maxMenuItems?: number;\n /**\n * Called when selection changes.\n */\n onChange: (item: T | null) => void;\n /**\n * Called when the result popover opens or closes.\n */\n onOpenChange?: (isOpen: boolean) => 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 * 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 selector.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the input wrapper.\n */\n style?: CSSProperties;\n /**\n * Selected item.\n */\n value: T | null;\n } & FieldNecessity;\n\nconst styles = {\n wrapper: css({\n cursor: 'text',\n flexWrap: 'wrap',\n }),\n tag: css({\n my: '-1',\n ms: '-1',\n }),\n inputHidden: css({\n position: 'absolute',\n opacity: 0,\n w: 0,\n minW: 0,\n flexBasis: 0,\n }),\n clearButton: css({\n ms: 'auto',\n }),\n} as const;\n\n/**\n * Search-as-you-type field for selecting a single item from a search source.\n */\nexport function AutocompleteInput<T extends SearchableItem>({\n className,\n 'data-testid': dataTestId,\n debounceMs,\n description,\n emptySearchResultsText,\n errorText,\n hasAutoFocus = false,\n hasClear = true,\n hasEntriesOnFocus = false,\n isDisabled = false,\n isLabelHidden = false,\n isOptional,\n isRequired,\n label,\n labelIcon,\n labelTooltip,\n maxMenuItems,\n onChange,\n onOpenChange,\n onQueryChange,\n placeholder,\n ref,\n renderItem,\n searchSource,\n size = 'md',\n startIcon,\n status,\n style,\n value,\n}: AutocompleteInputProps<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 wrapperRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [isEditing, setIsEditing] = useState(false);\n const [queryValue, setQueryValue] = useState('');\n const showTag = value != null && !isEditing;\n const fieldStatus = useMemo(\n () =>\n status == null ? undefined : {...status, messageID: statusMessageID},\n [status, statusMessageID],\n );\n\n const necessity = getNecessity(isOptional, isRequired);\n\n const startEditing = useCallback(\n (seedQuery: string) => {\n if (isDisabled) {\n return;\n }\n setIsEditing(true);\n setQueryValue(seedQuery);\n requestAnimationFrame(() => {\n const input = inputRef.current;\n if (input != null) {\n input.focus();\n input.setSelectionRange(seedQuery.length, seedQuery.length);\n }\n });\n },\n [isDisabled],\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={fieldStatus}\n style={style}>\n {/* eslint-disable-next-line jsx-a11y-x/click-events-have-key-events, jsx-a11y-x/no-static-element-interactions -- wrapper delegates focus to the inner input; keyboard users interact with the input directly */}\n <div\n className={cx(\n inputRecipe({\n size,\n status: status?.type,\n isDisabled,\n }),\n styles.wrapper,\n )}\n data-testid={dataTestId}\n onClick={() => {\n if (showTag) {\n startEditing(value.label);\n }\n }}\n ref={wrapperRef}>\n {startIcon != null ? (\n <span className={inputStyles.iconSlot}>\n <Icon color=\"secondary\" icon={startIcon} size=\"sm\" />\n </span>\n ) : null}\n {showTag ? (\n <Tag\n className={styles.tag}\n isDisabled={isDisabled}\n label={value.label}\n onClick={() => startEditing(value.label)}\n size={size}\n />\n ) : null}\n <BaseAutocompleteInput\n anchorRef={wrapperRef}\n ariaDescribedBy={describedBy}\n className={showTag ? styles.inputHidden : undefined}\n debounceMs={debounceMs}\n emptySearchResultsText={emptySearchResultsText}\n errorText={errorText}\n hasAutoFocus={hasAutoFocus}\n hasEntriesOnFocus={hasEntriesOnFocus}\n inputId={inputId}\n isDisabled={isDisabled}\n isRequired={isRequired}\n maxMenuItems={maxMenuItems}\n onChange={item => {\n setIsEditing(false);\n setQueryValue('');\n onChange(item);\n }}\n onOpenChange={onOpenChange}\n onQueryChange={nextQuery => {\n setQueryValue(nextQuery);\n onQueryChange?.(nextQuery);\n }}\n placeholder={showTag ? undefined : placeholder}\n query={queryValue}\n ref={inputRef}\n renderItem={renderItem}\n searchSource={searchSource}\n size={size}\n value={value}\n />\n {hasClear && value != null && !isDisabled ? (\n <Button\n className={styles.clearButton}\n icon={X}\n isIconOnly\n label={`Clear ${label}`}\n onClick={event => {\n event.stopPropagation();\n setIsEditing(false);\n onChange(null);\n inputRef.current?.focus();\n }}\n size=\"sm\"\n variant=\"ghost\"\n />\n ) : null}\n </div>\n </Field>\n );\n}\n\nAutocompleteInput.displayName = 'AutocompleteInput';\n","import type {ReactNode} from 'react';\n\n/**\n * A search result item with a fully custom pre-rendered element. When\n * `element` is set, `AutocompleteInputItem` renders it directly — props\n * like `icon`, `description`, and `className` do not apply.\n */\nexport interface CustomSearchableItem<TAuxiliaryData = unknown> {\n /**\n * Custom data associated with the item.\n */\n auxiliaryData?: TAuxiliaryData;\n /**\n * Pre-rendered item content. When set, `AutocompleteInputItem` renders\n * this element directly and ignores layout props like `icon` and\n * `description`.\n */\n element: ReactNode;\n /**\n * Stable unique identifier.\n */\n id: string;\n /**\n * Display text used for the selected-value tag chip.\n */\n label: string;\n}\n\n/**\n * A search result item rendered by the default `AutocompleteInputItem`\n * layout with an optional icon and description.\n */\nexport interface StandardSearchableItem<TAuxiliaryData = unknown> {\n /**\n * Custom data associated with the item.\n */\n auxiliaryData?: TAuxiliaryData;\n /**\n * Must be omitted to use the standard layout. Set `element` on a\n * {@link CustomSearchableItem} for fully custom rendering.\n */\n element?: undefined;\n /**\n * Stable unique identifier.\n */\n id: string;\n /**\n * Display text.\n */\n label: string;\n}\n\n/**\n * A search result item. Items without `element` use the default\n * `AutocompleteInputItem` layout; items with `element` render fully\n * custom content.\n */\nexport type SearchableItem<TAuxiliaryData = unknown> =\n | CustomSearchableItem<TAuxiliaryData>\n | StandardSearchableItem<TAuxiliaryData>;\n\nexport interface SearchSource<T extends SearchableItem = SearchableItem> {\n /**\n * Return initial items, usually recent or common selections.\n */\n bootstrap(): Promise<T[]> | T[];\n /**\n * Optional cancellation for in-flight async searches.\n */\n cancel?(): void;\n /**\n * Return items matching the query.\n */\n search(query: string): Promise<T[]> | T[];\n}\n\nexport interface CreateStaticSearchSourceOptions<\n T extends SearchableItem = SearchableItem,\n> {\n /**\n * Extra searchable terms for each item.\n */\n getKeywords?: (item: T) => string[];\n}\n\nexport function createStaticSearchSource<T extends SearchableItem>(\n items: T[],\n options?: CreateStaticSearchSourceOptions<T>,\n): SearchSource<T> {\n return {\n bootstrap: () => items,\n search(query) {\n const normalizedQuery = query.trim().toLowerCase();\n if (normalizedQuery === '') {\n return items;\n }\n\n return items.filter(item => {\n if (item.label.toLowerCase().includes(normalizedQuery)) {\n return true;\n }\n return (\n options\n ?.getKeywords?.(item)\n .some(keyword => keyword.toLowerCase().includes(normalizedQuery)) ??\n false\n );\n });\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/components/AutocompleteInput/AutocompleteInput.recipe.ts","../src/components/AutocompleteInput/AutocompleteInputItem.tsx","../src/components/AutocompleteInput/BaseAutocompleteInput.tsx","../src/components/AutocompleteInput/AutocompleteInput.tsx","../src/components/AutocompleteInput/types.ts"],"names":["sva","css","isReactNode","jsx","Fragment","jsxs","cx","Icon","Text","useId","useRef","useState","useCallback","useEffect","LoaderCircle","Check","mergeRefs","Spinner","Popover","styles","getStatusMessageID","getDescribedBy","useMemo","getNecessity","Field","inputRecipe","inputStyles","Tag","Button","X"],"mappings":"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","file":"chunk-KLCEDPJ4.cjs","sourcesContent":["import {css, sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const autocompleteMenuRecipe = sva({\n slots: ['menu', 'option', 'check', 'loading', 'empty'],\n base: {\n menu: {\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5',\n maxH: '80',\n overflowY: 'auto',\n p: '1',\n },\n option: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '2',\n w: 'full',\n borderWidth: 0,\n borderRadius: 'md',\n bg: 'transparent',\n color: 'fg',\n cursor: 'pointer',\n fontFamily: 'body',\n textAlign: 'start',\n _hover: {bg: 'bg.subtle'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffsetTight',\n },\n },\n check: {\n display: 'inline-flex',\n flexShrink: 0,\n color: 'primary',\n },\n loading: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '1',\n p: '2',\n color: 'fg.muted',\n '& > svg': {\n animation: 'spin 0.8s linear infinite',\n },\n '@media (prefers-reduced-motion: reduce)': {\n '& > svg': {animation: 'none'},\n },\n },\n empty: {\n p: '3',\n textAlign: 'center',\n },\n },\n variants: {\n size: {\n sm: {option: {px: '2', py: '1'}},\n md: {option: {px: '2', py: '2'}},\n lg: {option: {px: '3', py: '2.5'}},\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport type AutocompleteMenuVariants = RecipeVariantProps<\n typeof autocompleteMenuRecipe\n>;\n\n/**\n * Per-option state styles applied via `cx()` since they vary per-row\n * rather than per-component instance.\n */\nexport const optionHighlightedStyle = css({bg: 'bg.subtle'});\nexport const optionSelectedStyle = css({fontWeight: 'medium'});\n\nexport const autocompleteItemRecipe = sva({\n slots: ['root', 'icon', 'text'],\n base: {\n root: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n minW: 0,\n },\n icon: {\n display: 'inline-flex',\n flexShrink: 0,\n color: 'fg.muted',\n },\n text: {\n display: 'flex',\n flexDirection: 'column',\n minW: 0,\n },\n },\n variants: {\n isDisabled: {\n true: {root: {opacity: 0.55}},\n false: {},\n },\n },\n defaultVariants: {\n isDisabled: false,\n },\n});\n\nexport type AutocompleteItemVariants = RecipeVariantProps<\n typeof autocompleteItemRecipe\n>;\n","/* eslint-disable silver-ui/require-component-props -- discriminated union: custom-element items render item.element directly; passthrough props only apply to standard items */\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {autocompleteItemRecipe} from 'components/AutocompleteInput/AutocompleteInput.recipe';\nimport type {SearchableItem} from 'components/AutocompleteInput/types';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Text} from 'components/Text';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\n/**\n * Props for an item with a custom `element`. The element is rendered\n * directly — layout props like `icon` and `description` do not apply.\n */\ninterface AutocompleteInputCustomItemProps {\n /**\n * Search result item with custom element content.\n */\n item: SearchableItem & {element: ReactNode};\n}\n\n/**\n * Props for a standard item rendered with the default layout.\n */\ninterface AutocompleteInputStandardItemProps {\n /**\n * Additional CSS class names applied to the item layout.\n */\n className?: string;\n /**\n * Test ID applied to the item layout.\n */\n 'data-testid'?: string;\n /**\n * Supporting text displayed below the label.\n */\n description?: ReactNode;\n /**\n * Icon or avatar rendered before the label.\n */\n icon?: IconComponent;\n /**\n * Whether the item is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Search result item without a custom element.\n */\n item: SearchableItem & {element?: undefined};\n /**\n * Ref forwarded to the item layout.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Inline styles applied to the item layout.\n */\n style?: CSSProperties;\n}\n\nexport type AutocompleteInputItemProps =\n | AutocompleteInputCustomItemProps\n | AutocompleteInputStandardItemProps;\n\n/**\n * Default layout for AutocompleteInput and TagsInput result rows.\n *\n * When the item has a pre-rendered `element`, it is returned directly.\n * Otherwise the component renders a flex row with an optional icon,\n * primary label, and description.\n */\nexport function AutocompleteInputItem(\n props: AutocompleteInputItemProps,\n): React.JSX.Element {\n if (isReactNode(props.item.element)) {\n return <>{props.item.element}</>;\n }\n\n const {\n className,\n 'data-testid': dataTestId,\n description,\n icon,\n isDisabled = false,\n item,\n ref,\n style,\n } = props as AutocompleteInputStandardItemProps;\n\n const classes = autocompleteItemRecipe({isDisabled});\n\n return (\n <div\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n {icon != null ? (\n <span className={classes.icon}>\n <Icon color=\"secondary\" icon={icon} size=\"sm\" />\n </span>\n ) : null}\n <span className={classes.text}>\n <Text as=\"span\" color=\"inherit\" type=\"label\">\n {item.label}\n </Text>\n {isReactNode(description) ? (\n <Text as=\"span\" color=\"secondary\" type=\"supporting\">\n {description}\n </Text>\n ) : null}\n </span>\n </div>\n );\n}\n\nAutocompleteInputItem.displayName = 'AutocompleteInputItem';\n","import {Check, LoaderCircle} from 'lucide-react';\nimport {\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n type RefObject,\n} from 'react';\nimport {\n autocompleteMenuRecipe,\n optionHighlightedStyle,\n optionSelectedStyle,\n} from 'components/AutocompleteInput/AutocompleteInput.recipe';\nimport {AutocompleteInputItem} from 'components/AutocompleteInput/AutocompleteInputItem';\nimport type {\n SearchableItem,\n SearchSource,\n} from 'components/AutocompleteInput/types';\nimport {Icon} from 'components/Icon';\nimport {Popover} from 'components/Popover';\nimport {Spinner} from 'components/Spinner';\nimport {Text} from 'components/Text';\nimport {cx} from 'internal/cx';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport {css} from 'styled-system/css';\n\nexport interface BaseAutocompleteInputProps<T extends SearchableItem> {\n /**\n * Ref to the element the result popover should align to.\n */\n anchorRef?: RefObject<HTMLElement | null>;\n /**\n * IDs describing the input.\n */\n ariaDescribedBy?: string;\n /**\n * Additional CSS class names applied to the input.\n */\n className?: string;\n /**\n * Test ID applied to the input element.\n */\n 'data-testid'?: string;\n /**\n * Debounce delay in milliseconds before search runs.\n * @default 150\n */\n debounceMs?: number;\n /**\n * Empty state text.\n * @default 'No results found'\n */\n emptySearchResultsText?: string;\n /**\n * Text shown in the menu when a search fails.\n * @default 'Something went wrong'\n */\n errorText?: string;\n /**\n * Whether to focus the input on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to show bootstrap results on focus before typing.\n * @default false\n */\n hasEntriesOnFocus?: boolean;\n /**\n * Whether to re-bootstrap results after selecting an item. Useful for\n * multi-select comboboxes where the user picks several items in a row.\n * @default false\n */\n hasReopenOnSelect?: boolean;\n /**\n * Optional ID for the input.\n */\n inputId?: string;\n /**\n * Whether the input is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether the input is required.\n * @default false\n */\n isRequired?: boolean;\n /**\n * Maximum number of menu items.\n * @default 10\n */\n maxMenuItems?: number;\n /**\n * Called when a result is selected.\n */\n onChange: (item: T | null) => void;\n /**\n * Keyboard handler invoked before internal navigation.\n */\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n /**\n * Called when the result popover opens or closes.\n */\n onOpenChange?: (isOpen: boolean) => void;\n /**\n * Called when the query changes.\n */\n onQueryChange: (query: string) => void;\n /**\n * Placeholder text.\n * @default 'Search...'\n */\n placeholder?: string;\n /**\n * Current query string.\n */\n query: string;\n /**\n * Ref forwarded to the input.\n */\n ref?: Ref<HTMLInputElement>;\n /**\n * Custom result renderer.\n */\n renderItem?: (item: T) => 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?: 'sm' | 'md' | 'lg';\n /**\n * Inline styles applied to the input.\n */\n style?: CSSProperties;\n /**\n * Selected item.\n */\n value: T | null;\n}\n\nconst styles = {\n input: css({\n display: 'block',\n flex: 1,\n minW: '15',\n borderWidth: 0,\n p: 0,\n fontFamily: 'body',\n fontSize: 'md',\n lineHeight: 'normal',\n color: 'fg',\n bg: 'transparent',\n outline: 'none',\n _placeholder: {color: 'fg.muted'},\n _disabled: {cursor: 'not-allowed'},\n }),\n} as const;\n\n/**\n * Internal combobox engine used by AutocompleteInput and TagsInput.\n */\nexport function BaseAutocompleteInput<T extends SearchableItem>({\n anchorRef,\n ariaDescribedBy,\n className,\n 'data-testid': dataTestId,\n debounceMs = 150,\n emptySearchResultsText = 'No results found',\n errorText = 'Something went wrong',\n hasAutoFocus = false,\n hasEntriesOnFocus = false,\n hasReopenOnSelect = false,\n inputId,\n isDisabled = false,\n isRequired = false,\n maxMenuItems = 10,\n onChange,\n onKeyDown,\n onOpenChange,\n onQueryChange,\n placeholder = 'Search...',\n query,\n ref,\n renderItem,\n searchSource,\n size = 'md',\n style,\n value,\n}: BaseAutocompleteInputProps<T>): React.JSX.Element {\n const generatedId = useId();\n const listboxId = useId();\n const resolvedInputId = inputId ?? generatedId;\n const inputRef = useRef<HTMLInputElement>(null);\n const fallbackAnchorRef = useRef<HTMLInputElement>(null);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const generationRef = useRef(0);\n const [results, setResults] = useState<T[]>([]);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n const [isLoading, setIsLoading] = useState(false);\n const [hasSearched, setHasSearched] = useState(false);\n const [hasError, setHasError] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const selectingRef = useRef(false);\n\n const setOpen = useCallback(\n (isNextOpen: boolean) => {\n setIsOpen(isNextOpen);\n onOpenChange?.(isNextOpen);\n if (!isNextOpen) {\n searchSource.cancel?.();\n setHighlightedIndex(-1);\n }\n },\n [onOpenChange, searchSource],\n );\n\n const showMenu = useCallback(() => {\n setOpen(true);\n }, [setOpen]);\n\n const runSearch = useCallback(\n async (nextQuery: string, kind: 'bootstrap' | 'search') => {\n const generation = ++generationRef.current;\n searchSource.cancel?.();\n setIsLoading(true);\n setHasSearched(true);\n setHasError(false);\n\n try {\n const nextResults =\n kind === 'bootstrap'\n ? await searchSource.bootstrap()\n : await searchSource.search(nextQuery);\n if (generationRef.current !== generation) {\n return;\n }\n const limitedResults = nextResults.slice(0, maxMenuItems);\n setResults(limitedResults);\n setHighlightedIndex(limitedResults.length > 0 ? 0 : -1);\n if (limitedResults.length > 0 || nextQuery !== '') {\n showMenu();\n } else {\n setOpen(false);\n }\n } catch {\n if (generationRef.current === generation) {\n setResults([]);\n setHighlightedIndex(-1);\n setHasError(true);\n showMenu();\n }\n } finally {\n if (generationRef.current === generation) {\n setIsLoading(false);\n }\n }\n },\n [maxMenuItems, searchSource, setOpen, showMenu],\n );\n\n const updateQuery = useCallback(\n (nextQuery: string) => {\n onQueryChange(nextQuery);\n\n if (timeoutRef.current != null) {\n clearTimeout(timeoutRef.current);\n }\n\n if (nextQuery === '' && !hasEntriesOnFocus) {\n generationRef.current++;\n searchSource.cancel?.();\n setResults([]);\n setHasSearched(false);\n setHasError(false);\n setIsLoading(false);\n setOpen(false);\n return;\n }\n\n const searchKind = nextQuery === '' ? 'bootstrap' : 'search';\n if (debounceMs <= 0) {\n void runSearch(nextQuery, searchKind);\n return;\n }\n\n timeoutRef.current = setTimeout(() => {\n void runSearch(nextQuery, searchKind);\n }, debounceMs);\n },\n [\n debounceMs,\n hasEntriesOnFocus,\n onQueryChange,\n runSearch,\n searchSource,\n setOpen,\n ],\n );\n\n const selectItem = useCallback(\n (item: T) => {\n generationRef.current++;\n if (timeoutRef.current != null) {\n clearTimeout(timeoutRef.current);\n }\n searchSource.cancel?.();\n onQueryChange('');\n setResults([]);\n setHasSearched(false);\n setHasError(false);\n setIsLoading(false);\n onChange(item);\n selectingRef.current = true;\n inputRef.current?.focus();\n selectingRef.current = false;\n if (hasReopenOnSelect && hasEntriesOnFocus) {\n void runSearch('', 'bootstrap');\n } else {\n setOpen(false);\n }\n },\n [\n hasEntriesOnFocus,\n hasReopenOnSelect,\n onChange,\n onQueryChange,\n runSearch,\n searchSource,\n setOpen,\n ],\n );\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current != null) {\n clearTimeout(timeoutRef.current);\n }\n searchSource.cancel?.();\n };\n }, [searchSource]);\n\n const menuClasses = autocompleteMenuRecipe({size});\n\n const menu = (\n <div\n aria-label=\"Search results\"\n className={menuClasses.menu}\n id={listboxId}\n role=\"listbox\">\n {isLoading ? (\n <div className={menuClasses.loading} role=\"status\">\n <Icon icon={LoaderCircle} size=\"sm\" />\n <Text as=\"span\" color=\"secondary\" type=\"supporting\">\n Loading\n </Text>\n </div>\n ) : hasError ? (\n <div className={menuClasses.empty} role=\"alert\">\n <Text as=\"span\" color=\"secondary\" type=\"supporting\">\n {errorText}\n </Text>\n </div>\n ) : results.length === 0 && hasSearched ? (\n <div className={menuClasses.empty}>\n <Text as=\"span\" color=\"secondary\" type=\"supporting\">\n {emptySearchResultsText}\n </Text>\n </div>\n ) : (\n results.map((item, index) => {\n const isSelected = value?.id === item.id;\n return (\n // eslint-disable-next-line jsx-a11y-x/click-events-have-key-events -- keyboard navigation is handled by the combobox input, not individual options\n <div\n aria-selected={isSelected}\n className={cx(\n menuClasses.option,\n index === highlightedIndex ? optionHighlightedStyle : undefined,\n isSelected ? optionSelectedStyle : undefined,\n )}\n id={`${listboxId}-option-${index}`}\n key={item.id}\n onClick={() => selectItem(item)}\n onMouseEnter={() => setHighlightedIndex(index)}\n role=\"option\"\n tabIndex={-1}>\n {renderItem == null ? (\n <AutocompleteInputItem item={item} />\n ) : (\n renderItem(item)\n )}\n {isSelected ? (\n <span className={menuClasses.check}>\n <Icon color=\"accent\" icon={Check} size=\"sm\" />\n </span>\n ) : null}\n </div>\n );\n })\n )}\n </div>\n );\n\n return (\n <>\n <input\n aria-activedescendant={\n isOpen && highlightedIndex >= 0\n ? `${listboxId}-option-${highlightedIndex}`\n : undefined\n }\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-describedby={ariaDescribedBy}\n aria-expanded={isOpen}\n aria-required={isRequired || undefined}\n autoComplete=\"off\"\n // eslint-disable-next-line jsx-a11y-x/no-autofocus\n autoFocus={hasAutoFocus}\n className={cx(styles.input, className)}\n data-autofocus={hasAutoFocus || undefined}\n data-testid={dataTestId}\n disabled={isDisabled}\n id={resolvedInputId}\n onBlur={() => {\n // Defer so we can check whether focus moved to an option inside\n // the popover (e.g. the user clicked a result). If focus left\n // both the input and the popover, close the menu.\n requestAnimationFrame(() => {\n if (\n !inputRef.current?.contains(document.activeElement) &&\n !document.activeElement?.closest('[role=\"listbox\"]')\n ) {\n setOpen(false);\n }\n });\n }}\n onChange={event => updateQuery(event.target.value)}\n onFocus={() => {\n if (selectingRef.current) {\n return;\n }\n if (query !== '' && results.length === 0) {\n void runSearch(query, 'search');\n } else if (\n hasEntriesOnFocus &&\n query === '' &&\n results.length === 0\n ) {\n void runSearch('', 'bootstrap');\n } else if (results.length > 0) {\n showMenu();\n }\n }}\n onKeyDown={event => {\n onKeyDown?.(event);\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (!isOpen) {\n if (results.length > 0) {\n showMenu();\n } else if (hasEntriesOnFocus) {\n void runSearch('', 'bootstrap');\n }\n return;\n }\n setHighlightedIndex(index =>\n results.length === 0 ? -1 : (index + 1) % results.length,\n );\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n setHighlightedIndex(index =>\n results.length === 0\n ? -1\n : (index - 1 + results.length) % results.length,\n );\n } else if (\n event.key === 'Enter' &&\n isOpen &&\n highlightedIndex >= 0 &&\n highlightedIndex < results.length\n ) {\n event.preventDefault();\n selectItem(results[highlightedIndex]);\n } else if (event.key === 'Escape' && isOpen) {\n event.preventDefault();\n setOpen(false);\n }\n }}\n placeholder={placeholder}\n ref={mergeRefs(ref, inputRef, fallbackAnchorRef)}\n role=\"combobox\"\n style={style}\n type=\"text\"\n value={query}\n />\n {isLoading ? <Spinner size=\"sm\" /> : null}\n <Popover\n anchorRef={anchorRef ?? fallbackAnchorRef}\n content={menu}\n hasAutoFocus={false}\n hasCloseButton={false}\n isDismissable={false}\n isOpen={isOpen}\n onOpenChange={setOpen}\n />\n </>\n );\n}\n\nBaseAutocompleteInput.displayName = 'BaseAutocompleteInput';\n","import {X} from 'lucide-react';\nimport {\n useCallback,\n useId,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {BaseAutocompleteInput} from 'components/AutocompleteInput/BaseAutocompleteInput';\nimport type {\n SearchableItem,\n SearchSource,\n} from 'components/AutocompleteInput/types';\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 {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nexport type AutocompleteInputProps<T extends SearchableItem = SearchableItem> =\n {\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 * Text shown in the menu when a search fails.\n * @default 'Something went wrong'\n */\n errorText?: string;\n /**\n * Whether to focus the input on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to show a clear button when a value is selected.\n * @default true\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 * 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 menu items.\n * @default 10\n */\n maxMenuItems?: number;\n /**\n * Called when selection changes.\n */\n onChange: (item: T | null) => void;\n /**\n * Called when the result popover opens or closes.\n */\n onOpenChange?: (isOpen: boolean) => 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 * 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 selector.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the input wrapper.\n */\n style?: CSSProperties;\n /**\n * Selected item.\n */\n value: T | null;\n } & FieldNecessity;\n\nconst styles = {\n wrapper: css({\n cursor: 'text',\n flexWrap: 'wrap',\n }),\n tag: css({\n my: '-1',\n ms: '-1',\n }),\n inputHidden: css({\n position: 'absolute',\n opacity: 0,\n w: 0,\n minW: 0,\n flexBasis: 0,\n }),\n clearButton: css({\n ms: 'auto',\n }),\n} as const;\n\n/**\n * Search-as-you-type field for selecting a single item from a search source.\n */\nexport function AutocompleteInput<T extends SearchableItem>({\n className,\n 'data-testid': dataTestId,\n debounceMs,\n description,\n emptySearchResultsText,\n errorText,\n hasAutoFocus = false,\n hasClear = true,\n hasEntriesOnFocus = false,\n isDisabled = false,\n isLabelHidden = false,\n isOptional,\n isRequired,\n label,\n labelIcon,\n labelTooltip,\n maxMenuItems,\n onChange,\n onOpenChange,\n onQueryChange,\n placeholder,\n ref,\n renderItem,\n searchSource,\n size = 'md',\n startIcon,\n status,\n style,\n value,\n}: AutocompleteInputProps<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 wrapperRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [isEditing, setIsEditing] = useState(false);\n const [queryValue, setQueryValue] = useState('');\n const showTag = value != null && !isEditing;\n const fieldStatus = useMemo(\n () =>\n status == null ? undefined : {...status, messageID: statusMessageID},\n [status, statusMessageID],\n );\n\n const necessity = getNecessity(isOptional, isRequired);\n\n const startEditing = useCallback(\n (seedQuery: string) => {\n if (isDisabled) {\n return;\n }\n setIsEditing(true);\n setQueryValue(seedQuery);\n requestAnimationFrame(() => {\n const input = inputRef.current;\n if (input != null) {\n input.focus();\n input.setSelectionRange(seedQuery.length, seedQuery.length);\n }\n });\n },\n [isDisabled],\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={fieldStatus}\n style={style}>\n {/* eslint-disable-next-line jsx-a11y-x/click-events-have-key-events, jsx-a11y-x/no-static-element-interactions -- wrapper delegates focus to the inner input; keyboard users interact with the input directly */}\n <div\n className={cx(\n inputRecipe({\n size,\n status: status?.type,\n isDisabled,\n }),\n styles.wrapper,\n )}\n data-testid={dataTestId}\n onClick={() => {\n if (showTag) {\n startEditing(value.label);\n }\n }}\n ref={wrapperRef}>\n {startIcon != null ? (\n <span className={inputStyles.iconSlot}>\n <Icon color=\"secondary\" icon={startIcon} size=\"sm\" />\n </span>\n ) : null}\n {showTag ? (\n <Tag\n className={styles.tag}\n isDisabled={isDisabled}\n label={value.label}\n onClick={() => startEditing(value.label)}\n size={size}\n />\n ) : null}\n <BaseAutocompleteInput\n anchorRef={wrapperRef}\n ariaDescribedBy={describedBy}\n className={showTag ? styles.inputHidden : undefined}\n debounceMs={debounceMs}\n emptySearchResultsText={emptySearchResultsText}\n errorText={errorText}\n hasAutoFocus={hasAutoFocus}\n hasEntriesOnFocus={hasEntriesOnFocus}\n inputId={inputId}\n isDisabled={isDisabled}\n isRequired={isRequired}\n maxMenuItems={maxMenuItems}\n onChange={item => {\n setIsEditing(false);\n setQueryValue('');\n onChange(item);\n }}\n onOpenChange={onOpenChange}\n onQueryChange={nextQuery => {\n setQueryValue(nextQuery);\n onQueryChange?.(nextQuery);\n }}\n placeholder={showTag ? undefined : placeholder}\n query={queryValue}\n ref={inputRef}\n renderItem={renderItem}\n searchSource={searchSource}\n size={size}\n value={value}\n />\n {hasClear && value != null && !isDisabled ? (\n <Button\n className={styles.clearButton}\n icon={X}\n isIconOnly\n label={`Clear ${label}`}\n onClick={event => {\n event.stopPropagation();\n setIsEditing(false);\n onChange(null);\n inputRef.current?.focus();\n }}\n size=\"sm\"\n variant=\"ghost\"\n />\n ) : null}\n </div>\n </Field>\n );\n}\n\nAutocompleteInput.displayName = 'AutocompleteInput';\n","import type {ReactNode} from 'react';\n\n/**\n * A search result item with a fully custom pre-rendered element. When\n * `element` is set, `AutocompleteInputItem` renders it directly — props\n * like `icon`, `description`, and `className` do not apply.\n */\nexport interface CustomSearchableItem<TAuxiliaryData = unknown> {\n /**\n * Custom data associated with the item.\n */\n auxiliaryData?: TAuxiliaryData;\n /**\n * Pre-rendered item content. When set, `AutocompleteInputItem` renders\n * this element directly and ignores layout props like `icon` and\n * `description`.\n */\n element: ReactNode;\n /**\n * Stable unique identifier.\n */\n id: string;\n /**\n * Display text used for the selected-value tag chip.\n */\n label: string;\n}\n\n/**\n * A search result item rendered by the default `AutocompleteInputItem`\n * layout with an optional icon and description.\n */\nexport interface StandardSearchableItem<TAuxiliaryData = unknown> {\n /**\n * Custom data associated with the item.\n */\n auxiliaryData?: TAuxiliaryData;\n /**\n * Must be omitted to use the standard layout. Set `element` on a\n * {@link CustomSearchableItem} for fully custom rendering.\n */\n element?: undefined;\n /**\n * Stable unique identifier.\n */\n id: string;\n /**\n * Display text.\n */\n label: string;\n}\n\n/**\n * A search result item. Items without `element` use the default\n * `AutocompleteInputItem` layout; items with `element` render fully\n * custom content.\n */\nexport type SearchableItem<TAuxiliaryData = unknown> =\n | CustomSearchableItem<TAuxiliaryData>\n | StandardSearchableItem<TAuxiliaryData>;\n\nexport interface SearchSource<T extends SearchableItem = SearchableItem> {\n /**\n * Return initial items, usually recent or common selections.\n */\n bootstrap(): Promise<T[]> | T[];\n /**\n * Optional cancellation for in-flight async searches.\n */\n cancel?(): void;\n /**\n * Return items matching the query.\n */\n search(query: string): Promise<T[]> | T[];\n}\n\nexport interface CreateStaticSearchSourceOptions<\n T extends SearchableItem = SearchableItem,\n> {\n /**\n * Extra searchable terms for each item.\n */\n getKeywords?: (item: T) => string[];\n}\n\nexport function createStaticSearchSource<T extends SearchableItem>(\n items: T[],\n options?: CreateStaticSearchSourceOptions<T>,\n): SearchSource<T> {\n return {\n bootstrap: () => items,\n search(query) {\n const normalizedQuery = query.trim().toLowerCase();\n if (normalizedQuery === '') {\n return items;\n }\n\n return items.filter(item => {\n if (item.label.toLowerCase().includes(normalizedQuery)) {\n return true;\n }\n return (\n options\n ?.getKeywords?.(item)\n .some(keyword => keyword.toLowerCase().includes(normalizedQuery)) ??\n false\n );\n });\n },\n };\n}\n"]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var chunkJK4YAQ2N_cjs = require('./chunk-JK4YAQ2N.cjs');
4
4
  var chunkR37R7DEV_cjs = require('./chunk-R37R7DEV.cjs');
5
- var chunkVXOIOPGZ_cjs = require('./chunk-VXOIOPGZ.cjs');
5
+ var chunkWOVSJHY6_cjs = require('./chunk-WOVSJHY6.cjs');
6
6
  var chunkZ6RT3WPE_cjs = require('./chunk-Z6RT3WPE.cjs');
7
7
  var chunkSPDVNY2Z_cjs = require('./chunk-SPDVNY2Z.cjs');
8
8
  var polyfill = require('@js-temporal/polyfill');
@@ -522,7 +522,7 @@ function Calendar({
522
522
  children: [
523
523
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.header, children: [
524
524
  /* @__PURE__ */ jsxRuntime.jsx(
525
- chunkVXOIOPGZ_cjs.Button,
525
+ chunkWOVSJHY6_cjs.Button,
526
526
  {
527
527
  icon: lucideReact.ChevronLeft,
528
528
  isDisabled: !canNavigatePrevious,
@@ -535,7 +535,7 @@ function Calendar({
535
535
  ),
536
536
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.monthYear, children: monthYearLabel }),
537
537
  /* @__PURE__ */ jsxRuntime.jsx(
538
- chunkVXOIOPGZ_cjs.Button,
538
+ chunkWOVSJHY6_cjs.Button,
539
539
  {
540
540
  icon: lucideReact.ChevronRight,
541
541
  isDisabled: !canNavigateNext,
@@ -829,5 +829,5 @@ var DayCell = react.memo(function DayCell2({
829
829
  Calendar.displayName = "Calendar";
830
830
 
831
831
  exports.Calendar = Calendar;
832
- //# sourceMappingURL=chunk-INQ34SVW.cjs.map
833
- //# sourceMappingURL=chunk-INQ34SVW.cjs.map
832
+ //# sourceMappingURL=chunk-KLPVBJGZ.cjs.map
833
+ //# sourceMappingURL=chunk-KLPVBJGZ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Calendar/Calendar.recipe.ts","../src/internal/useGridFocus.ts","../src/components/Calendar/Calendar.tsx"],"names":["sva","useRef","useCallback","getDaysInMonth","plainDateCreate","plainDateDayOfWeek","plainDateIsBefore","plainDateIsAfter","getBrowserTimezoneID","useMemo","plainDateToday","useState","plainDateFormat","DATE_FORMAT_MONTH_YEAR","useImperativeHandle","useEffect","jsxs","cx","jsx","Button","ChevronLeft","ChevronRight","memo","MonthGrid","Temporal","plainDateIsEqual","plainDateGetWeekNumber","DayCell","plainDateIsInRange","DATE_FORMAT_WITH_WEEKDAY"],"mappings":"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","file":"chunk-INQ34SVW.cjs","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const calendarRecipe = sva({\n slots: [\n 'root',\n 'header',\n 'monthYear',\n 'months',\n 'monthGrid',\n 'weekHeader',\n 'dayName',\n 'daysGrid',\n 'weekRow',\n 'weekNumber',\n 'cell',\n 'rangeBackground',\n 'day',\n ],\n base: {\n root: {\n display: 'inline-block',\n minW: '220px',\n color: 'fg',\n fontFamily: 'body',\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '2',\n mb: '2',\n },\n monthYear: {\n flex: 1,\n textAlign: 'center',\n fontSize: 'sm',\n fontWeight: 'semibold',\n },\n months: {\n display: 'flex',\n gap: '4',\n },\n monthGrid: {\n flex: '1 1 0',\n },\n weekHeader: {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n mb: '1',\n },\n dayName: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n w: 'component.md',\n h: 'component.md',\n color: 'fg.muted',\n fontSize: 'sm',\n },\n daysGrid: {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n },\n weekRow: {\n display: 'contents',\n },\n weekNumber: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n w: 'component.md',\n h: 'component.md',\n color: 'fg.muted',\n fontSize: 'sm',\n },\n cell: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n h: 'component.md',\n isolation: 'isolate',\n },\n rangeBackground: {\n position: 'absolute',\n insetBlock: '2px',\n insetInline: 0,\n },\n day: {\n position: 'relative',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n w: 'component.sm',\n h: 'component.sm',\n p: 0,\n borderWidth: 0,\n borderStyle: 'none',\n borderRadius: 'full',\n bg: 'transparent',\n color: 'fg',\n cursor: 'pointer',\n fontFamily: 'inherit',\n fontSize: 'md',\n transitionProperty: 'background-color, color',\n transitionDuration: 'fast',\n _hover: {\n bg: 'bg.subtle',\n },\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n _disabled: {\n cursor: 'not-allowed',\n },\n },\n },\n variants: {\n // Reserve a leading column for ISO week numbers in the header and grid.\n hasWeekNumbers: {\n true: {\n weekHeader: {gridTemplateColumns: 'auto repeat(7, 1fr)'},\n daysGrid: {gridTemplateColumns: 'auto repeat(7, 1fr)'},\n },\n false: {},\n },\n isOutside: {\n true: {day: {color: 'fg.muted', opacity: 0.55}},\n false: {},\n },\n // Marker variant; the today ring is suppressed for selected/in-range days,\n // so the real styling lives in compoundVariants below.\n isToday: {\n true: {},\n false: {},\n },\n isSelected: {\n true: {\n day: {\n bg: 'primary',\n color: 'fg.onPrimary',\n _hover: {bg: 'primary'},\n },\n },\n false: {},\n },\n // Marker variant; only used to suppress the today ring on range middles.\n isInRange: {\n true: {},\n false: {},\n },\n // Declared after isOutside so the disabled opacity wins when both apply.\n // Outside days are `aria-disabled` but intentionally not natively\n // `disabled` (that would drop them from useGridFocus's dense-grid index\n // math), so the not-allowed cursor is driven from this variant rather than\n // the native `:disabled` pseudo.\n isDisabled: {\n true: {day: {opacity: 0.35, cursor: 'not-allowed'}},\n false: {},\n },\n rangeTone: {\n range: {rangeBackground: {bg: 'bg.selected'}},\n preview: {rangeBackground: {bg: 'bg.subtle'}},\n },\n roundedStart: {\n true: {\n rangeBackground: {\n left: '2px',\n borderTopLeftRadius: 'full',\n borderBottomLeftRadius: 'full',\n },\n },\n false: {},\n },\n roundedEnd: {\n true: {\n rangeBackground: {\n right: '2px',\n borderTopRightRadius: 'full',\n borderBottomRightRadius: 'full',\n },\n },\n false: {},\n },\n },\n compoundVariants: [\n {\n isToday: true,\n isSelected: false,\n isInRange: false,\n css: {\n day: {boxShadow: 'inset 0 0 0 1px token(colors.border.emphasized)'},\n },\n },\n ],\n defaultVariants: {\n hasWeekNumbers: false,\n isOutside: false,\n isToday: false,\n isSelected: false,\n isInRange: false,\n isDisabled: false,\n rangeTone: 'range',\n roundedStart: false,\n roundedEnd: false,\n },\n});\n\nexport type CalendarVariants = RecipeVariantProps<typeof calendarRecipe>;\n","import {useCallback, useRef} from 'react';\n\nexport interface UseGridFocusOptions {\n cellSelector?: string;\n columns: number;\n onNavigateAfter?: (column: number, offset: number) => void;\n onNavigateBefore?: (column: number, offset: number) => void;\n onPageDown?: () => void;\n onPageUp?: () => void;\n}\n\nexport interface UseGridFocusReturn<T extends HTMLElement = HTMLElement> {\n focusCell: (index: number) => void;\n focusFirst: () => void;\n focusLast: () => void;\n gridRef: React.RefObject<T | null>;\n handleKeyDown: (event: React.KeyboardEvent) => void;\n}\n\nexport function useGridFocus<T extends HTMLElement = HTMLElement>({\n columns,\n cellSelector = 'button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n onNavigateAfter,\n onNavigateBefore,\n onPageDown,\n onPageUp,\n}: UseGridFocusOptions): UseGridFocusReturn<T> {\n const gridRef = useRef<T>(null);\n\n const getCells = useCallback(() => {\n return gridRef.current == null\n ? []\n : Array.from(gridRef.current.querySelectorAll<HTMLElement>(cellSelector));\n }, [cellSelector]);\n\n const focusCell = useCallback(\n (index: number) => {\n const cells = getCells();\n const clampedIndex = Math.max(0, Math.min(index, cells.length - 1));\n cells[clampedIndex]?.focus();\n },\n [getCells],\n );\n\n const focusFirst = useCallback(() => focusCell(0), [focusCell]);\n\n const focusLast = useCallback(() => {\n const cells = getCells();\n cells.at(-1)?.focus();\n }, [getCells]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const cells = getCells();\n const currentIndex = cells.findIndex(\n cell => cell === document.activeElement,\n );\n if (currentIndex === -1) {\n return;\n }\n\n const currentRow = Math.floor(currentIndex / columns);\n const currentColumn = currentIndex % columns;\n const totalRows = Math.ceil(cells.length / columns);\n let nextIndex: number | null = null;\n\n switch (event.key) {\n case 'ArrowRight':\n nextIndex = currentIndex + 1;\n break;\n case 'ArrowLeft':\n nextIndex = currentIndex - 1;\n break;\n case 'ArrowDown':\n if (currentRow >= totalRows - 1) {\n onNavigateAfter?.(currentColumn, columns);\n } else {\n nextIndex = currentIndex + columns;\n }\n break;\n case 'ArrowUp':\n if (currentRow <= 0) {\n onNavigateBefore?.(currentColumn, columns);\n } else {\n nextIndex = currentIndex - columns;\n }\n break;\n case 'Home':\n nextIndex = event.ctrlKey || event.metaKey ? 0 : currentRow * columns;\n break;\n case 'End':\n nextIndex =\n event.ctrlKey || event.metaKey\n ? cells.length - 1\n : Math.min((currentRow + 1) * columns - 1, cells.length - 1);\n break;\n case 'PageUp':\n onPageUp?.();\n break;\n case 'PageDown':\n onPageDown?.();\n break;\n default:\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (nextIndex == null) {\n return;\n }\n\n if (nextIndex < 0) {\n onNavigateBefore?.(currentColumn, 1);\n return;\n }\n\n if (nextIndex >= cells.length) {\n onNavigateAfter?.(currentColumn, 1);\n return;\n }\n\n cells[nextIndex]?.focus();\n },\n [\n columns,\n getCells,\n onNavigateAfter,\n onNavigateBefore,\n onPageDown,\n onPageUp,\n ],\n );\n\n return {gridRef, handleKeyDown, focusCell, focusFirst, focusLast};\n}\n","import {Temporal} from '@js-temporal/polyfill';\nimport {ChevronLeft, ChevronRight} from 'lucide-react';\nimport {\n memo,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type Ref,\n} from 'react';\nimport {Button} from 'components/Button';\nimport {calendarRecipe} from 'components/Calendar/Calendar.recipe';\nimport {cx} from 'internal/cx';\nimport type {DateRange, DayOfWeek} from 'internal/dateTypes';\nimport {\n DATE_FORMAT_MONTH_YEAR,\n DATE_FORMAT_WITH_WEEKDAY,\n getDaysInMonth,\n plainDateCreate,\n plainDateDayOfWeek,\n plainDateFormat,\n plainDateGetWeekNumber,\n plainDateIsAfter,\n plainDateIsBefore,\n plainDateIsEqual,\n plainDateIsInRange,\n plainDateToday,\n type PlainDate,\n} from 'internal/plainDate';\nimport {getBrowserTimezoneID} from 'internal/time';\nimport {useGridFocus} from 'internal/useGridFocus';\n\nexport type {DateRange, DayOfWeek} from 'internal/dateTypes';\n\nexport interface CalendarHandle {\n navigateTo: (date: PlainDate) => void;\n}\n\ninterface CalendarBaseProps {\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Returns true for dates that should be disabled.\n */\n getIsDateDisabled?: (date: PlainDate) => boolean;\n /**\n * Whether to move focus into the day grid — onto the selected date, otherwise\n * today, otherwise the first enabled day. Focus is (re)applied whenever this\n * transitions to `true`, so driving it from an open state focuses the grid\n * each time the calendar opens.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to show outside-month days.\n * @default true\n */\n hasOutsideDays?: boolean;\n /**\n * Whether month grids use only needed rows rather than a fixed six rows.\n * @default false\n */\n hasVariableRowCount?: boolean;\n /**\n * Whether to show ISO week numbers.\n * @default false\n */\n hasWeekNumbers?: boolean;\n /**\n * Maximum selectable date.\n */\n max?: PlainDate;\n /**\n * Minimum selectable date.\n */\n min?: PlainDate;\n /**\n * Number of months displayed.\n * @default 1\n */\n numberOfMonths?: 1 | 2;\n /**\n * Called when the visible month changes. Passing this alongside `viewDate`\n * puts the visible month in controlled mode: the calendar stops tracking the\n * month itself and renders whatever `viewDate` you feed back here.\n */\n onViewDateChange?: (viewDate: PlainDate) => void;\n /**\n * Ref exposing imperative calendar navigation.\n */\n ref?: Ref<CalendarHandle>;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n /**\n * Timezone used to determine today's date.\n * @default browser timezone\n */\n timezoneID?: string;\n /**\n * The visible month. On its own this is just the initial month to display;\n * the calendar then tracks the month internally. Pass `onViewDateChange` as\n * well to make the visible month controlled, where `viewDate` is the source\n * of truth on every render.\n */\n viewDate?: PlainDate;\n /**\n * First day of week, where 0 is Sunday.\n * @default 0\n */\n weekStartsOn?: DayOfWeek;\n}\n\ninterface CalendarSingleProps extends CalendarBaseProps {\n /**\n * Default selected date for uncontrolled usage.\n */\n defaultValue?: PlainDate;\n /**\n * Selection mode. Defaults to 'single'.\n */\n mode?: 'single';\n /**\n * Called when the selected date changes.\n */\n onChange: (value: PlainDate) => void;\n /**\n * Controlled selected date.\n */\n value?: PlainDate;\n}\n\ninterface CalendarRangeProps extends CalendarBaseProps {\n /**\n * Default selected range for uncontrolled usage.\n */\n defaultValue?: DateRange;\n /**\n * Selection mode set to 'range'.\n */\n mode: 'range';\n /**\n * Called when the selected date range changes.\n */\n onChange: (value: DateRange) => void;\n /**\n * Controlled selected date range.\n */\n value?: DateRange;\n}\n\nexport type CalendarProps = CalendarSingleProps | CalendarRangeProps;\n\ninterface CalendarDay {\n date: PlainDate;\n dayNumber: number;\n isOutside: boolean;\n}\n\nfunction generateCalendarDays({\n year,\n month,\n weekStartsOn,\n hasVariableRowCount,\n}: {\n hasVariableRowCount: boolean;\n month: number;\n weekStartsOn: DayOfWeek;\n year: number;\n}): {dayNames: string[]; weeks: CalendarDay[][]} {\n const names = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n const dayNames = Array.from({length: 7}, (_, index) => {\n return names[(index + weekStartsOn) % 7];\n });\n const daysInMonth = getDaysInMonth(year, month);\n const firstOfMonth = plainDateCreate(year, month, 1);\n let startOffset = plainDateDayOfWeek(firstOfMonth) - weekStartsOn;\n if (startOffset < 0) {\n startOffset += 7;\n }\n\n const totalDays = daysInMonth + startOffset;\n const totalRows = hasVariableRowCount ? Math.ceil(totalDays / 7) : 6;\n const days = Array.from({length: totalRows * 7}, (_, index) => {\n const dayOffset = index - startOffset + 1;\n const isOutside = dayOffset < 1 || dayOffset > daysInMonth;\n const date = isOutside\n ? firstOfMonth.add({days: dayOffset - 1})\n : plainDateCreate(year, month, dayOffset);\n\n return {\n date,\n dayNumber: date.day,\n isOutside,\n };\n });\n\n const weeks: CalendarDay[][] = [];\n for (let index = 0; index < days.length; index += 7) {\n weeks.push(days.slice(index, index + 7));\n }\n\n return {dayNames, weeks};\n}\n\nfunction checkDateDisabled(\n date: PlainDate,\n options: {\n getIsDateDisabled?: (date: PlainDate) => boolean;\n max?: PlainDate;\n min?: PlainDate;\n },\n): boolean {\n if (options.min != null && plainDateIsBefore(date, options.min)) {\n return true;\n }\n\n if (options.max != null && plainDateIsAfter(date, options.max)) {\n return true;\n }\n\n return options.getIsDateDisabled?.(date) ?? false;\n}\n\nfunction getSelectedTabDate({\n days,\n getIsDisabled,\n month,\n selectedDate,\n today,\n year,\n}: {\n days: CalendarDay[];\n getIsDisabled: (date: PlainDate) => boolean;\n month: number;\n selectedDate: PlainDate | null;\n today: PlainDate;\n year: number;\n}): PlainDate | null {\n if (\n selectedDate?.year === year &&\n selectedDate.month === month &&\n !getIsDisabled(selectedDate)\n ) {\n return selectedDate;\n }\n\n if (today.year === year && today.month === month && !getIsDisabled(today)) {\n return today;\n }\n\n return (\n days.find(day => !day.isOutside && !getIsDisabled(day.date))?.date ?? null\n );\n}\n\n/**\n * A date picker calendar supporting single date and date range selection.\n */\nexport function Calendar({\n className,\n 'data-testid': dataTestId,\n defaultValue,\n getIsDateDisabled: getIsDateDisabledProp,\n hasAutoFocus = false,\n hasOutsideDays = true,\n hasVariableRowCount = false,\n hasWeekNumbers = false,\n max,\n min,\n mode = 'single',\n numberOfMonths = 1,\n onChange,\n onViewDateChange,\n ref,\n style,\n timezoneID,\n value,\n viewDate: viewDateFromProps,\n weekStartsOn = 0,\n}: CalendarProps): React.JSX.Element {\n const effectiveTimezoneID = timezoneID ?? getBrowserTimezoneID();\n const today = useMemo(\n () => plainDateToday(effectiveTimezoneID),\n [effectiveTimezoneID],\n );\n const [internalValue, setInternalValue] = useState<\n DateRange | PlainDate | undefined\n >(defaultValue);\n const [rangeSelectionStart, setRangeSelectionStart] =\n useState<PlainDate | null>(null);\n const [hoveredDate, setHoveredDate] = useState<PlainDate | null>(null);\n const [pendingFocus, setPendingFocus] = useState<PlainDate | null>(null);\n const rootRef = useRef<HTMLDivElement>(null);\n const effectiveValue = value ?? internalValue;\n const isViewDateControlled =\n viewDateFromProps != null && onViewDateChange != null;\n const [internalViewDate, setInternalViewDate] = useState(() => {\n if (viewDateFromProps != null) {\n return viewDateFromProps;\n }\n\n if (effectiveValue != null && 'year' in effectiveValue) {\n return effectiveValue;\n }\n\n if (effectiveValue != null && 'start' in effectiveValue) {\n return effectiveValue.start;\n }\n\n return today;\n });\n const viewDate = isViewDateControlled ? viewDateFromProps : internalViewDate;\n const baseMonth = useMemo(() => viewDate.with({day: 1}), [viewDate]);\n const visibleMonths = useMemo(\n () =>\n Array.from({length: numberOfMonths}, (_, index) =>\n baseMonth.add({months: index}),\n ),\n [baseMonth, numberOfMonths],\n );\n const monthYearLabel = useMemo(\n () =>\n visibleMonths\n .map(month => plainDateFormat(month, DATE_FORMAT_MONTH_YEAR))\n .join(' - '),\n [visibleMonths],\n );\n\n const canNavigatePrevious =\n min == null || plainDateIsBefore(min.with({day: 1}), baseMonth);\n const lastVisibleMonth = visibleMonths.at(-1) ?? baseMonth;\n const canNavigateNext =\n max == null || plainDateIsAfter(max.with({day: 1}), lastVisibleMonth);\n\n const navigateMonth = useCallback(\n (delta: number, nextFocus?: PlainDate) => {\n const nextMonth = baseMonth.add({months: delta});\n\n if (nextFocus != null) {\n setPendingFocus(nextFocus);\n }\n\n onViewDateChange?.(nextMonth);\n if (!isViewDateControlled) {\n setInternalViewDate(nextMonth);\n }\n },\n [baseMonth, isViewDateControlled, onViewDateChange],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n navigateTo: date => {\n onViewDateChange?.(date);\n if (!isViewDateControlled) {\n setInternalViewDate(date);\n }\n },\n }),\n [isViewDateControlled, onViewDateChange],\n );\n\n // When focus is requested, move it to the grid cell that holds the roving\n // tabindex — the selected date if visible and enabled, otherwise today,\n // otherwise the first enabled day — per the WAI-ARIA date picker pattern.\n // Driving `hasAutoFocus` from an open state re-focuses each time it opens.\n useEffect(() => {\n if (!hasAutoFocus) {\n return;\n }\n\n rootRef.current\n ?.querySelector<HTMLButtonElement>('[data-date][tabindex=\"0\"]')\n ?.focus();\n }, [hasAutoFocus]);\n\n const handleDayClick = useCallback(\n (date: PlainDate) => {\n if (mode === 'single') {\n setInternalValue(date);\n (onChange as CalendarSingleProps['onChange'])(date);\n return;\n }\n\n if (rangeSelectionStart == null) {\n setRangeSelectionStart(date);\n return;\n }\n\n const range = plainDateIsBefore(date, rangeSelectionStart)\n ? {start: date, end: rangeSelectionStart}\n : {start: rangeSelectionStart, end: date};\n setInternalValue(range);\n setRangeSelectionStart(null);\n (onChange as CalendarRangeProps['onChange'])(range);\n },\n [mode, onChange, rangeSelectionStart],\n );\n\n const handleNavigateNext = useCallback(\n (nextFocus: PlainDate) => navigateMonth(1, nextFocus),\n [navigateMonth],\n );\n\n const handleNavigatePrevious = useCallback(\n (nextFocus: PlainDate) => navigateMonth(-1, nextFocus),\n [navigateMonth],\n );\n\n const handlePendingFocusHandled = useCallback(\n () => setPendingFocus(null),\n [],\n );\n\n const styles = calendarRecipe();\n\n return (\n // eslint-disable-next-line jsx-a11y-x/no-static-element-interactions\n <div\n className={cx(styles.root, className)}\n data-testid={dataTestId}\n onKeyDown={event => {\n if (\n mode === 'range' &&\n rangeSelectionStart != null &&\n event.key === 'Escape'\n ) {\n setRangeSelectionStart(null);\n event.preventDefault();\n event.stopPropagation();\n }\n }}\n ref={rootRef}\n style={style}>\n <div className={styles.header}>\n <Button\n icon={ChevronLeft}\n isDisabled={!canNavigatePrevious}\n isIconOnly\n label=\"Previous month\"\n onClick={() => navigateMonth(-1)}\n size=\"sm\"\n variant=\"ghost\"\n />\n <span className={styles.monthYear}>{monthYearLabel}</span>\n <Button\n icon={ChevronRight}\n isDisabled={!canNavigateNext}\n isIconOnly\n label=\"Next month\"\n onClick={() => navigateMonth(1)}\n size=\"sm\"\n variant=\"ghost\"\n />\n </div>\n <div className={styles.months}>\n {visibleMonths.map(month => (\n <MonthGrid\n getIsDateDisabled={getIsDateDisabledProp}\n hasOutsideDays={hasOutsideDays}\n hasVariableRowCount={hasVariableRowCount}\n hasWeekNumbers={hasWeekNumbers}\n hoveredDate={hoveredDate}\n key={month.toString()}\n max={max}\n min={min}\n mode={mode}\n month={month}\n onDayClick={handleDayClick}\n onDayHover={setHoveredDate}\n onNavigateNext={handleNavigateNext}\n onNavigatePrevious={handleNavigatePrevious}\n onPendingFocusHandled={handlePendingFocusHandled}\n pendingFocus={pendingFocus}\n rangeSelectionStart={rangeSelectionStart}\n today={today}\n value={effectiveValue}\n weekStartsOn={weekStartsOn}\n />\n ))}\n </div>\n </div>\n );\n}\n\ninterface MonthGridProps {\n getIsDateDisabled?: (date: PlainDate) => boolean;\n hasOutsideDays: boolean;\n hasVariableRowCount: boolean;\n hasWeekNumbers: boolean;\n hoveredDate: PlainDate | null;\n max?: PlainDate;\n min?: PlainDate;\n mode: 'single' | 'range';\n month: PlainDate;\n onDayClick: (date: PlainDate) => void;\n onDayHover: (date: PlainDate | null) => void;\n onNavigateNext: (nextFocus: PlainDate) => void;\n onNavigatePrevious: (nextFocus: PlainDate) => void;\n onPendingFocusHandled: () => void;\n pendingFocus: PlainDate | null;\n rangeSelectionStart: PlainDate | null;\n today: PlainDate;\n value: DateRange | PlainDate | undefined;\n weekStartsOn: DayOfWeek;\n}\n\nconst MonthGrid = memo(function MonthGrid({\n month,\n value,\n mode,\n rangeSelectionStart,\n hoveredDate,\n min,\n max,\n getIsDateDisabled: getIsDateDisabledProp,\n hasOutsideDays,\n hasWeekNumbers,\n hasVariableRowCount,\n weekStartsOn,\n onDayClick,\n onDayHover,\n today,\n onNavigatePrevious,\n onNavigateNext,\n pendingFocus,\n onPendingFocusHandled,\n}: MonthGridProps): React.JSX.Element {\n const {dayNames, weeks} = useMemo(\n () =>\n generateCalendarDays({\n year: month.year,\n month: month.month,\n weekStartsOn,\n hasVariableRowCount,\n }),\n [hasVariableRowCount, month.month, month.year, weekStartsOn],\n );\n const days = weeks.flat();\n const isDisabled = useCallback(\n (date: PlainDate) =>\n checkDateDisabled(date, {\n min,\n max,\n getIsDateDisabled: getIsDateDisabledProp,\n }),\n [getIsDateDisabledProp, max, min],\n );\n const selectedDate =\n mode === 'single' && value != null && 'year' in value ? value : null;\n const tabbableDate = getSelectedTabDate({\n days,\n getIsDisabled: isDisabled,\n month: month.month,\n selectedDate,\n today,\n year: month.year,\n });\n\n const getFocusedDate = useCallback((): PlainDate | null => {\n const activeElement = document.activeElement as HTMLElement | null;\n const date = activeElement?.dataset.date;\n return date == null ? null : Temporal.PlainDate.from(date);\n }, []);\n\n const {gridRef, handleKeyDown} = useGridFocus<HTMLDivElement>({\n columns: 7,\n cellSelector: 'button:not([disabled])',\n onNavigateBefore: (_column, offset) => {\n const focusedDate = getFocusedDate();\n if (focusedDate != null) {\n onNavigatePrevious(focusedDate.subtract({days: offset}));\n }\n },\n onNavigateAfter: (_column, offset) => {\n const focusedDate = getFocusedDate();\n if (focusedDate != null) {\n onNavigateNext(focusedDate.add({days: offset}));\n }\n },\n // Page keys move a whole month, keeping the same day. Temporal's default\n // `constrain` overflow clamps to the month's last day (e.g. Jan 31 -> Feb 28).\n onPageUp: () => {\n const focusedDate = getFocusedDate();\n if (focusedDate != null) {\n onNavigatePrevious(focusedDate.subtract({months: 1}));\n }\n },\n onPageDown: () => {\n const focusedDate = getFocusedDate();\n if (focusedDate != null) {\n onNavigateNext(focusedDate.add({months: 1}));\n }\n },\n });\n\n // Keyboard navigation that crosses a month boundary sets `pendingFocus` and\n // changes the visible month in the same update. We can't focus the target day\n // imperatively at that point because its cell doesn't exist yet — it only\n // renders after the new month commits (and with a controlled `viewDate`, that\n // render is driven by the parent, so its timing isn't ours to know). Deferring\n // to this effect runs the focus once the new month's cells are in the DOM.\n useEffect(() => {\n if (pendingFocus == null || gridRef.current == null) {\n return;\n }\n\n const button = gridRef.current.querySelector<HTMLButtonElement>(\n `button[data-date=\"${pendingFocus.toString()}\"]`,\n );\n button?.focus();\n onPendingFocusHandled();\n }, [gridRef, onPendingFocusHandled, pendingFocus]);\n\n let rangeStart: PlainDate | null = null;\n let rangeEnd: PlainDate | null = null;\n if (mode === 'range' && value != null && 'start' in value) {\n rangeStart = value.start;\n rangeEnd = value.end;\n }\n if (rangeSelectionStart != null) {\n rangeStart = rangeSelectionStart;\n rangeEnd = rangeSelectionStart;\n }\n\n let previewStart: PlainDate | null = null;\n let previewEnd: PlainDate | null = null;\n if (mode === 'range' && rangeSelectionStart != null && hoveredDate != null) {\n if (!plainDateIsEqual(rangeSelectionStart, hoveredDate)) {\n previewStart = plainDateIsBefore(hoveredDate, rangeSelectionStart)\n ? hoveredDate\n : rangeSelectionStart;\n previewEnd = plainDateIsBefore(hoveredDate, rangeSelectionStart)\n ? rangeSelectionStart\n : hoveredDate;\n }\n }\n\n const isSelectingRange = mode === 'range' && rangeSelectionStart != null;\n\n const styles = calendarRecipe({hasWeekNumbers});\n\n return (\n <div className={styles.monthGrid}>\n <div className={styles.weekHeader}>\n {hasWeekNumbers ? <div className={styles.dayName} /> : null}\n {dayNames.map(dayName => (\n <div className={styles.dayName} key={dayName} role=\"columnheader\">\n {dayName}\n </div>\n ))}\n </div>\n <div\n aria-label={plainDateFormat(month, DATE_FORMAT_MONTH_YEAR)}\n className={styles.daysGrid}\n onKeyDown={handleKeyDown}\n ref={gridRef}\n role=\"grid\"\n tabIndex={-1}>\n {weeks.map(week => {\n const weekDate =\n week.find(day => !day.isOutside)?.date ?? week[0].date;\n return (\n <div\n className={styles.weekRow}\n key={week[0].date.toString()}\n role=\"row\">\n {hasWeekNumbers ? (\n <div className={styles.weekNumber}>\n {plainDateGetWeekNumber(weekDate)}\n </div>\n ) : null}\n {week.map((day, dayIndex) => (\n <DayCell\n day={day}\n dayIndex={dayIndex}\n hasOutsideDays={hasOutsideDays}\n isDisabled={isDisabled(day.date)}\n isSelectingRange={isSelectingRange}\n isTabbable={\n tabbableDate != null &&\n plainDateIsEqual(tabbableDate, day.date)\n }\n key={day.date.toString()}\n mode={mode}\n onDayClick={onDayClick}\n onDayHover={onDayHover}\n previewEnd={previewEnd}\n previewStart={previewStart}\n rangeEnd={rangeEnd}\n rangeStart={rangeStart}\n selectedDate={selectedDate}\n today={today}\n />\n ))}\n </div>\n );\n })}\n </div>\n </div>\n );\n});\n\ninterface DayCellProps {\n day: CalendarDay;\n dayIndex: number;\n hasOutsideDays: boolean;\n isDisabled: boolean;\n isSelectingRange: boolean;\n isTabbable: boolean;\n mode: 'single' | 'range';\n onDayClick: (date: PlainDate) => void;\n onDayHover: (date: PlainDate | null) => void;\n previewEnd: PlainDate | null;\n previewStart: PlainDate | null;\n rangeEnd: PlainDate | null;\n rangeStart: PlainDate | null;\n selectedDate: PlainDate | null;\n today: PlainDate;\n}\n\nconst DayCell = memo(function DayCell({\n day,\n dayIndex,\n mode,\n selectedDate,\n rangeStart,\n rangeEnd,\n previewStart,\n previewEnd,\n today,\n hasOutsideDays,\n isDisabled,\n isSelectingRange,\n isTabbable,\n onDayClick,\n onDayHover,\n}: DayCellProps): React.JSX.Element {\n if (day.isOutside && !hasOutsideDays) {\n return <div className={calendarRecipe().cell} />;\n }\n\n const effectivelyDisabled = isDisabled || day.isOutside;\n const isToday = plainDateIsEqual(day.date, today);\n const isSelected =\n mode === 'single' &&\n selectedDate != null &&\n plainDateIsEqual(day.date, selectedDate);\n const isInRange =\n mode === 'range' &&\n rangeStart != null &&\n rangeEnd != null &&\n plainDateIsInRange(day.date, [rangeStart, rangeEnd]);\n const isRangeStart =\n mode === 'range' &&\n rangeStart != null &&\n plainDateIsEqual(day.date, rangeStart);\n const isRangeEnd =\n mode === 'range' &&\n rangeEnd != null &&\n plainDateIsEqual(day.date, rangeEnd);\n const isInPreview =\n previewStart != null &&\n previewEnd != null &&\n plainDateIsInRange(day.date, [previewStart, previewEnd]);\n const isPreviewStart =\n previewStart != null && plainDateIsEqual(day.date, previewStart);\n const isPreviewEnd =\n previewEnd != null && plainDateIsEqual(day.date, previewEnd);\n const isFirstColumn = dayIndex === 0;\n const isLastColumn = dayIndex === 6;\n\n const styles = calendarRecipe({\n isOutside: day.isOutside,\n isToday,\n isSelected: isSelected || isRangeStart || isRangeEnd,\n isInRange,\n isDisabled: effectivelyDisabled,\n });\n const rangeBackgroundClass = calendarRecipe({\n rangeTone: 'range',\n roundedStart: isRangeStart || isFirstColumn,\n roundedEnd: isRangeEnd || isLastColumn,\n }).rangeBackground;\n const previewBackgroundClass = calendarRecipe({\n rangeTone: 'preview',\n roundedStart: isPreviewStart || isFirstColumn,\n roundedEnd: isPreviewEnd || isLastColumn,\n }).rangeBackground;\n\n return (\n <div className={styles.cell}>\n {isInRange ? <div className={rangeBackgroundClass} /> : null}\n {isInPreview ? <div className={previewBackgroundClass} /> : null}\n <button\n aria-disabled={effectivelyDisabled || undefined}\n aria-label={plainDateFormat(day.date, DATE_FORMAT_WITH_WEEKDAY)}\n aria-selected={isSelected || isInRange || undefined}\n className={styles.day}\n data-date={day.date.toString()}\n disabled={isDisabled}\n onClick={() => {\n if (!effectivelyDisabled) {\n onDayClick(day.date);\n }\n }}\n onMouseEnter={() => {\n if (isSelectingRange && !effectivelyDisabled) {\n onDayHover(day.date);\n }\n }}\n onMouseLeave={() => {\n if (isSelectingRange) {\n onDayHover(null);\n }\n }}\n role=\"gridcell\"\n tabIndex={isTabbable ? 0 : -1}\n type=\"button\">\n {day.dayNumber}\n </button>\n </div>\n );\n});\n\nCalendar.displayName = 'Calendar';\n"]}
1
+ {"version":3,"sources":["../src/components/Calendar/Calendar.recipe.ts","../src/internal/useGridFocus.ts","../src/components/Calendar/Calendar.tsx"],"names":["sva","useRef","useCallback","getDaysInMonth","plainDateCreate","plainDateDayOfWeek","plainDateIsBefore","plainDateIsAfter","getBrowserTimezoneID","useMemo","plainDateToday","useState","plainDateFormat","DATE_FORMAT_MONTH_YEAR","useImperativeHandle","useEffect","jsxs","cx","jsx","Button","ChevronLeft","ChevronRight","memo","MonthGrid","Temporal","plainDateIsEqual","plainDateGetWeekNumber","DayCell","plainDateIsInRange","DATE_FORMAT_WITH_WEEKDAY"],"mappings":"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","file":"chunk-KLPVBJGZ.cjs","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const calendarRecipe = sva({\n slots: [\n 'root',\n 'header',\n 'monthYear',\n 'months',\n 'monthGrid',\n 'weekHeader',\n 'dayName',\n 'daysGrid',\n 'weekRow',\n 'weekNumber',\n 'cell',\n 'rangeBackground',\n 'day',\n ],\n base: {\n root: {\n display: 'inline-block',\n minW: '220px',\n color: 'fg',\n fontFamily: 'body',\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '2',\n mb: '2',\n },\n monthYear: {\n flex: 1,\n textAlign: 'center',\n fontSize: 'sm',\n fontWeight: 'semibold',\n },\n months: {\n display: 'flex',\n gap: '4',\n },\n monthGrid: {\n flex: '1 1 0',\n },\n weekHeader: {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n mb: '1',\n },\n dayName: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n w: 'component.md',\n h: 'component.md',\n color: 'fg.muted',\n fontSize: 'sm',\n },\n daysGrid: {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n },\n weekRow: {\n display: 'contents',\n },\n weekNumber: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n w: 'component.md',\n h: 'component.md',\n color: 'fg.muted',\n fontSize: 'sm',\n },\n cell: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n h: 'component.md',\n isolation: 'isolate',\n },\n rangeBackground: {\n position: 'absolute',\n insetBlock: '2px',\n insetInline: 0,\n },\n day: {\n position: 'relative',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n w: 'component.sm',\n h: 'component.sm',\n p: 0,\n borderWidth: 0,\n borderStyle: 'none',\n borderRadius: 'full',\n bg: 'transparent',\n color: 'fg',\n cursor: 'pointer',\n fontFamily: 'inherit',\n fontSize: 'md',\n transitionProperty: 'background-color, color',\n transitionDuration: 'fast',\n _hover: {\n bg: 'bg.subtle',\n },\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n _disabled: {\n cursor: 'not-allowed',\n },\n },\n },\n variants: {\n // Reserve a leading column for ISO week numbers in the header and grid.\n hasWeekNumbers: {\n true: {\n weekHeader: {gridTemplateColumns: 'auto repeat(7, 1fr)'},\n daysGrid: {gridTemplateColumns: 'auto repeat(7, 1fr)'},\n },\n false: {},\n },\n isOutside: {\n true: {day: {color: 'fg.muted', opacity: 0.55}},\n false: {},\n },\n // Marker variant; the today ring is suppressed for selected/in-range days,\n // so the real styling lives in compoundVariants below.\n isToday: {\n true: {},\n false: {},\n },\n isSelected: {\n true: {\n day: {\n bg: 'primary',\n color: 'fg.onPrimary',\n _hover: {bg: 'primary'},\n },\n },\n false: {},\n },\n // Marker variant; only used to suppress the today ring on range middles.\n isInRange: {\n true: {},\n false: {},\n },\n // Declared after isOutside so the disabled opacity wins when both apply.\n // Outside days are `aria-disabled` but intentionally not natively\n // `disabled` (that would drop them from useGridFocus's dense-grid index\n // math), so the not-allowed cursor is driven from this variant rather than\n // the native `:disabled` pseudo.\n isDisabled: {\n true: {day: {opacity: 0.35, cursor: 'not-allowed'}},\n false: {},\n },\n rangeTone: {\n range: {rangeBackground: {bg: 'bg.selected'}},\n preview: {rangeBackground: {bg: 'bg.subtle'}},\n },\n roundedStart: {\n true: {\n rangeBackground: {\n left: '2px',\n borderTopLeftRadius: 'full',\n borderBottomLeftRadius: 'full',\n },\n },\n false: {},\n },\n roundedEnd: {\n true: {\n rangeBackground: {\n right: '2px',\n borderTopRightRadius: 'full',\n borderBottomRightRadius: 'full',\n },\n },\n false: {},\n },\n },\n compoundVariants: [\n {\n isToday: true,\n isSelected: false,\n isInRange: false,\n css: {\n day: {boxShadow: 'inset 0 0 0 1px token(colors.border.emphasized)'},\n },\n },\n ],\n defaultVariants: {\n hasWeekNumbers: false,\n isOutside: false,\n isToday: false,\n isSelected: false,\n isInRange: false,\n isDisabled: false,\n rangeTone: 'range',\n roundedStart: false,\n roundedEnd: false,\n },\n});\n\nexport type CalendarVariants = RecipeVariantProps<typeof calendarRecipe>;\n","import {useCallback, useRef} from 'react';\n\nexport interface UseGridFocusOptions {\n cellSelector?: string;\n columns: number;\n onNavigateAfter?: (column: number, offset: number) => void;\n onNavigateBefore?: (column: number, offset: number) => void;\n onPageDown?: () => void;\n onPageUp?: () => void;\n}\n\nexport interface UseGridFocusReturn<T extends HTMLElement = HTMLElement> {\n focusCell: (index: number) => void;\n focusFirst: () => void;\n focusLast: () => void;\n gridRef: React.RefObject<T | null>;\n handleKeyDown: (event: React.KeyboardEvent) => void;\n}\n\nexport function useGridFocus<T extends HTMLElement = HTMLElement>({\n columns,\n cellSelector = 'button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n onNavigateAfter,\n onNavigateBefore,\n onPageDown,\n onPageUp,\n}: UseGridFocusOptions): UseGridFocusReturn<T> {\n const gridRef = useRef<T>(null);\n\n const getCells = useCallback(() => {\n return gridRef.current == null\n ? []\n : Array.from(gridRef.current.querySelectorAll<HTMLElement>(cellSelector));\n }, [cellSelector]);\n\n const focusCell = useCallback(\n (index: number) => {\n const cells = getCells();\n const clampedIndex = Math.max(0, Math.min(index, cells.length - 1));\n cells[clampedIndex]?.focus();\n },\n [getCells],\n );\n\n const focusFirst = useCallback(() => focusCell(0), [focusCell]);\n\n const focusLast = useCallback(() => {\n const cells = getCells();\n cells.at(-1)?.focus();\n }, [getCells]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const cells = getCells();\n const currentIndex = cells.findIndex(\n cell => cell === document.activeElement,\n );\n if (currentIndex === -1) {\n return;\n }\n\n const currentRow = Math.floor(currentIndex / columns);\n const currentColumn = currentIndex % columns;\n const totalRows = Math.ceil(cells.length / columns);\n let nextIndex: number | null = null;\n\n switch (event.key) {\n case 'ArrowRight':\n nextIndex = currentIndex + 1;\n break;\n case 'ArrowLeft':\n nextIndex = currentIndex - 1;\n break;\n case 'ArrowDown':\n if (currentRow >= totalRows - 1) {\n onNavigateAfter?.(currentColumn, columns);\n } else {\n nextIndex = currentIndex + columns;\n }\n break;\n case 'ArrowUp':\n if (currentRow <= 0) {\n onNavigateBefore?.(currentColumn, columns);\n } else {\n nextIndex = currentIndex - columns;\n }\n break;\n case 'Home':\n nextIndex = event.ctrlKey || event.metaKey ? 0 : currentRow * columns;\n break;\n case 'End':\n nextIndex =\n event.ctrlKey || event.metaKey\n ? cells.length - 1\n : Math.min((currentRow + 1) * columns - 1, cells.length - 1);\n break;\n case 'PageUp':\n onPageUp?.();\n break;\n case 'PageDown':\n onPageDown?.();\n break;\n default:\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (nextIndex == null) {\n return;\n }\n\n if (nextIndex < 0) {\n onNavigateBefore?.(currentColumn, 1);\n return;\n }\n\n if (nextIndex >= cells.length) {\n onNavigateAfter?.(currentColumn, 1);\n return;\n }\n\n cells[nextIndex]?.focus();\n },\n [\n columns,\n getCells,\n onNavigateAfter,\n onNavigateBefore,\n onPageDown,\n onPageUp,\n ],\n );\n\n return {gridRef, handleKeyDown, focusCell, focusFirst, focusLast};\n}\n","import {Temporal} from '@js-temporal/polyfill';\nimport {ChevronLeft, ChevronRight} from 'lucide-react';\nimport {\n memo,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type Ref,\n} from 'react';\nimport {Button} from 'components/Button';\nimport {calendarRecipe} from 'components/Calendar/Calendar.recipe';\nimport {cx} from 'internal/cx';\nimport type {DateRange, DayOfWeek} from 'internal/dateTypes';\nimport {\n DATE_FORMAT_MONTH_YEAR,\n DATE_FORMAT_WITH_WEEKDAY,\n getDaysInMonth,\n plainDateCreate,\n plainDateDayOfWeek,\n plainDateFormat,\n plainDateGetWeekNumber,\n plainDateIsAfter,\n plainDateIsBefore,\n plainDateIsEqual,\n plainDateIsInRange,\n plainDateToday,\n type PlainDate,\n} from 'internal/plainDate';\nimport {getBrowserTimezoneID} from 'internal/time';\nimport {useGridFocus} from 'internal/useGridFocus';\n\nexport type {DateRange, DayOfWeek} from 'internal/dateTypes';\n\nexport interface CalendarHandle {\n navigateTo: (date: PlainDate) => void;\n}\n\ninterface CalendarBaseProps {\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Returns true for dates that should be disabled.\n */\n getIsDateDisabled?: (date: PlainDate) => boolean;\n /**\n * Whether to move focus into the day grid — onto the selected date, otherwise\n * today, otherwise the first enabled day. Focus is (re)applied whenever this\n * transitions to `true`, so driving it from an open state focuses the grid\n * each time the calendar opens.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to show outside-month days.\n * @default true\n */\n hasOutsideDays?: boolean;\n /**\n * Whether month grids use only needed rows rather than a fixed six rows.\n * @default false\n */\n hasVariableRowCount?: boolean;\n /**\n * Whether to show ISO week numbers.\n * @default false\n */\n hasWeekNumbers?: boolean;\n /**\n * Maximum selectable date.\n */\n max?: PlainDate;\n /**\n * Minimum selectable date.\n */\n min?: PlainDate;\n /**\n * Number of months displayed.\n * @default 1\n */\n numberOfMonths?: 1 | 2;\n /**\n * Called when the visible month changes. Passing this alongside `viewDate`\n * puts the visible month in controlled mode: the calendar stops tracking the\n * month itself and renders whatever `viewDate` you feed back here.\n */\n onViewDateChange?: (viewDate: PlainDate) => void;\n /**\n * Ref exposing imperative calendar navigation.\n */\n ref?: Ref<CalendarHandle>;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n /**\n * Timezone used to determine today's date.\n * @default browser timezone\n */\n timezoneID?: string;\n /**\n * The visible month. On its own this is just the initial month to display;\n * the calendar then tracks the month internally. Pass `onViewDateChange` as\n * well to make the visible month controlled, where `viewDate` is the source\n * of truth on every render.\n */\n viewDate?: PlainDate;\n /**\n * First day of week, where 0 is Sunday.\n * @default 0\n */\n weekStartsOn?: DayOfWeek;\n}\n\ninterface CalendarSingleProps extends CalendarBaseProps {\n /**\n * Default selected date for uncontrolled usage.\n */\n defaultValue?: PlainDate;\n /**\n * Selection mode. Defaults to 'single'.\n */\n mode?: 'single';\n /**\n * Called when the selected date changes.\n */\n onChange: (value: PlainDate) => void;\n /**\n * Controlled selected date.\n */\n value?: PlainDate;\n}\n\ninterface CalendarRangeProps extends CalendarBaseProps {\n /**\n * Default selected range for uncontrolled usage.\n */\n defaultValue?: DateRange;\n /**\n * Selection mode set to 'range'.\n */\n mode: 'range';\n /**\n * Called when the selected date range changes.\n */\n onChange: (value: DateRange) => void;\n /**\n * Controlled selected date range.\n */\n value?: DateRange;\n}\n\nexport type CalendarProps = CalendarSingleProps | CalendarRangeProps;\n\ninterface CalendarDay {\n date: PlainDate;\n dayNumber: number;\n isOutside: boolean;\n}\n\nfunction generateCalendarDays({\n year,\n month,\n weekStartsOn,\n hasVariableRowCount,\n}: {\n hasVariableRowCount: boolean;\n month: number;\n weekStartsOn: DayOfWeek;\n year: number;\n}): {dayNames: string[]; weeks: CalendarDay[][]} {\n const names = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n const dayNames = Array.from({length: 7}, (_, index) => {\n return names[(index + weekStartsOn) % 7];\n });\n const daysInMonth = getDaysInMonth(year, month);\n const firstOfMonth = plainDateCreate(year, month, 1);\n let startOffset = plainDateDayOfWeek(firstOfMonth) - weekStartsOn;\n if (startOffset < 0) {\n startOffset += 7;\n }\n\n const totalDays = daysInMonth + startOffset;\n const totalRows = hasVariableRowCount ? Math.ceil(totalDays / 7) : 6;\n const days = Array.from({length: totalRows * 7}, (_, index) => {\n const dayOffset = index - startOffset + 1;\n const isOutside = dayOffset < 1 || dayOffset > daysInMonth;\n const date = isOutside\n ? firstOfMonth.add({days: dayOffset - 1})\n : plainDateCreate(year, month, dayOffset);\n\n return {\n date,\n dayNumber: date.day,\n isOutside,\n };\n });\n\n const weeks: CalendarDay[][] = [];\n for (let index = 0; index < days.length; index += 7) {\n weeks.push(days.slice(index, index + 7));\n }\n\n return {dayNames, weeks};\n}\n\nfunction checkDateDisabled(\n date: PlainDate,\n options: {\n getIsDateDisabled?: (date: PlainDate) => boolean;\n max?: PlainDate;\n min?: PlainDate;\n },\n): boolean {\n if (options.min != null && plainDateIsBefore(date, options.min)) {\n return true;\n }\n\n if (options.max != null && plainDateIsAfter(date, options.max)) {\n return true;\n }\n\n return options.getIsDateDisabled?.(date) ?? false;\n}\n\nfunction getSelectedTabDate({\n days,\n getIsDisabled,\n month,\n selectedDate,\n today,\n year,\n}: {\n days: CalendarDay[];\n getIsDisabled: (date: PlainDate) => boolean;\n month: number;\n selectedDate: PlainDate | null;\n today: PlainDate;\n year: number;\n}): PlainDate | null {\n if (\n selectedDate?.year === year &&\n selectedDate.month === month &&\n !getIsDisabled(selectedDate)\n ) {\n return selectedDate;\n }\n\n if (today.year === year && today.month === month && !getIsDisabled(today)) {\n return today;\n }\n\n return (\n days.find(day => !day.isOutside && !getIsDisabled(day.date))?.date ?? null\n );\n}\n\n/**\n * A date picker calendar supporting single date and date range selection.\n */\nexport function Calendar({\n className,\n 'data-testid': dataTestId,\n defaultValue,\n getIsDateDisabled: getIsDateDisabledProp,\n hasAutoFocus = false,\n hasOutsideDays = true,\n hasVariableRowCount = false,\n hasWeekNumbers = false,\n max,\n min,\n mode = 'single',\n numberOfMonths = 1,\n onChange,\n onViewDateChange,\n ref,\n style,\n timezoneID,\n value,\n viewDate: viewDateFromProps,\n weekStartsOn = 0,\n}: CalendarProps): React.JSX.Element {\n const effectiveTimezoneID = timezoneID ?? getBrowserTimezoneID();\n const today = useMemo(\n () => plainDateToday(effectiveTimezoneID),\n [effectiveTimezoneID],\n );\n const [internalValue, setInternalValue] = useState<\n DateRange | PlainDate | undefined\n >(defaultValue);\n const [rangeSelectionStart, setRangeSelectionStart] =\n useState<PlainDate | null>(null);\n const [hoveredDate, setHoveredDate] = useState<PlainDate | null>(null);\n const [pendingFocus, setPendingFocus] = useState<PlainDate | null>(null);\n const rootRef = useRef<HTMLDivElement>(null);\n const effectiveValue = value ?? internalValue;\n const isViewDateControlled =\n viewDateFromProps != null && onViewDateChange != null;\n const [internalViewDate, setInternalViewDate] = useState(() => {\n if (viewDateFromProps != null) {\n return viewDateFromProps;\n }\n\n if (effectiveValue != null && 'year' in effectiveValue) {\n return effectiveValue;\n }\n\n if (effectiveValue != null && 'start' in effectiveValue) {\n return effectiveValue.start;\n }\n\n return today;\n });\n const viewDate = isViewDateControlled ? viewDateFromProps : internalViewDate;\n const baseMonth = useMemo(() => viewDate.with({day: 1}), [viewDate]);\n const visibleMonths = useMemo(\n () =>\n Array.from({length: numberOfMonths}, (_, index) =>\n baseMonth.add({months: index}),\n ),\n [baseMonth, numberOfMonths],\n );\n const monthYearLabel = useMemo(\n () =>\n visibleMonths\n .map(month => plainDateFormat(month, DATE_FORMAT_MONTH_YEAR))\n .join(' - '),\n [visibleMonths],\n );\n\n const canNavigatePrevious =\n min == null || plainDateIsBefore(min.with({day: 1}), baseMonth);\n const lastVisibleMonth = visibleMonths.at(-1) ?? baseMonth;\n const canNavigateNext =\n max == null || plainDateIsAfter(max.with({day: 1}), lastVisibleMonth);\n\n const navigateMonth = useCallback(\n (delta: number, nextFocus?: PlainDate) => {\n const nextMonth = baseMonth.add({months: delta});\n\n if (nextFocus != null) {\n setPendingFocus(nextFocus);\n }\n\n onViewDateChange?.(nextMonth);\n if (!isViewDateControlled) {\n setInternalViewDate(nextMonth);\n }\n },\n [baseMonth, isViewDateControlled, onViewDateChange],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n navigateTo: date => {\n onViewDateChange?.(date);\n if (!isViewDateControlled) {\n setInternalViewDate(date);\n }\n },\n }),\n [isViewDateControlled, onViewDateChange],\n );\n\n // When focus is requested, move it to the grid cell that holds the roving\n // tabindex — the selected date if visible and enabled, otherwise today,\n // otherwise the first enabled day — per the WAI-ARIA date picker pattern.\n // Driving `hasAutoFocus` from an open state re-focuses each time it opens.\n useEffect(() => {\n if (!hasAutoFocus) {\n return;\n }\n\n rootRef.current\n ?.querySelector<HTMLButtonElement>('[data-date][tabindex=\"0\"]')\n ?.focus();\n }, [hasAutoFocus]);\n\n const handleDayClick = useCallback(\n (date: PlainDate) => {\n if (mode === 'single') {\n setInternalValue(date);\n (onChange as CalendarSingleProps['onChange'])(date);\n return;\n }\n\n if (rangeSelectionStart == null) {\n setRangeSelectionStart(date);\n return;\n }\n\n const range = plainDateIsBefore(date, rangeSelectionStart)\n ? {start: date, end: rangeSelectionStart}\n : {start: rangeSelectionStart, end: date};\n setInternalValue(range);\n setRangeSelectionStart(null);\n (onChange as CalendarRangeProps['onChange'])(range);\n },\n [mode, onChange, rangeSelectionStart],\n );\n\n const handleNavigateNext = useCallback(\n (nextFocus: PlainDate) => navigateMonth(1, nextFocus),\n [navigateMonth],\n );\n\n const handleNavigatePrevious = useCallback(\n (nextFocus: PlainDate) => navigateMonth(-1, nextFocus),\n [navigateMonth],\n );\n\n const handlePendingFocusHandled = useCallback(\n () => setPendingFocus(null),\n [],\n );\n\n const styles = calendarRecipe();\n\n return (\n // eslint-disable-next-line jsx-a11y-x/no-static-element-interactions\n <div\n className={cx(styles.root, className)}\n data-testid={dataTestId}\n onKeyDown={event => {\n if (\n mode === 'range' &&\n rangeSelectionStart != null &&\n event.key === 'Escape'\n ) {\n setRangeSelectionStart(null);\n event.preventDefault();\n event.stopPropagation();\n }\n }}\n ref={rootRef}\n style={style}>\n <div className={styles.header}>\n <Button\n icon={ChevronLeft}\n isDisabled={!canNavigatePrevious}\n isIconOnly\n label=\"Previous month\"\n onClick={() => navigateMonth(-1)}\n size=\"sm\"\n variant=\"ghost\"\n />\n <span className={styles.monthYear}>{monthYearLabel}</span>\n <Button\n icon={ChevronRight}\n isDisabled={!canNavigateNext}\n isIconOnly\n label=\"Next month\"\n onClick={() => navigateMonth(1)}\n size=\"sm\"\n variant=\"ghost\"\n />\n </div>\n <div className={styles.months}>\n {visibleMonths.map(month => (\n <MonthGrid\n getIsDateDisabled={getIsDateDisabledProp}\n hasOutsideDays={hasOutsideDays}\n hasVariableRowCount={hasVariableRowCount}\n hasWeekNumbers={hasWeekNumbers}\n hoveredDate={hoveredDate}\n key={month.toString()}\n max={max}\n min={min}\n mode={mode}\n month={month}\n onDayClick={handleDayClick}\n onDayHover={setHoveredDate}\n onNavigateNext={handleNavigateNext}\n onNavigatePrevious={handleNavigatePrevious}\n onPendingFocusHandled={handlePendingFocusHandled}\n pendingFocus={pendingFocus}\n rangeSelectionStart={rangeSelectionStart}\n today={today}\n value={effectiveValue}\n weekStartsOn={weekStartsOn}\n />\n ))}\n </div>\n </div>\n );\n}\n\ninterface MonthGridProps {\n getIsDateDisabled?: (date: PlainDate) => boolean;\n hasOutsideDays: boolean;\n hasVariableRowCount: boolean;\n hasWeekNumbers: boolean;\n hoveredDate: PlainDate | null;\n max?: PlainDate;\n min?: PlainDate;\n mode: 'single' | 'range';\n month: PlainDate;\n onDayClick: (date: PlainDate) => void;\n onDayHover: (date: PlainDate | null) => void;\n onNavigateNext: (nextFocus: PlainDate) => void;\n onNavigatePrevious: (nextFocus: PlainDate) => void;\n onPendingFocusHandled: () => void;\n pendingFocus: PlainDate | null;\n rangeSelectionStart: PlainDate | null;\n today: PlainDate;\n value: DateRange | PlainDate | undefined;\n weekStartsOn: DayOfWeek;\n}\n\nconst MonthGrid = memo(function MonthGrid({\n month,\n value,\n mode,\n rangeSelectionStart,\n hoveredDate,\n min,\n max,\n getIsDateDisabled: getIsDateDisabledProp,\n hasOutsideDays,\n hasWeekNumbers,\n hasVariableRowCount,\n weekStartsOn,\n onDayClick,\n onDayHover,\n today,\n onNavigatePrevious,\n onNavigateNext,\n pendingFocus,\n onPendingFocusHandled,\n}: MonthGridProps): React.JSX.Element {\n const {dayNames, weeks} = useMemo(\n () =>\n generateCalendarDays({\n year: month.year,\n month: month.month,\n weekStartsOn,\n hasVariableRowCount,\n }),\n [hasVariableRowCount, month.month, month.year, weekStartsOn],\n );\n const days = weeks.flat();\n const isDisabled = useCallback(\n (date: PlainDate) =>\n checkDateDisabled(date, {\n min,\n max,\n getIsDateDisabled: getIsDateDisabledProp,\n }),\n [getIsDateDisabledProp, max, min],\n );\n const selectedDate =\n mode === 'single' && value != null && 'year' in value ? value : null;\n const tabbableDate = getSelectedTabDate({\n days,\n getIsDisabled: isDisabled,\n month: month.month,\n selectedDate,\n today,\n year: month.year,\n });\n\n const getFocusedDate = useCallback((): PlainDate | null => {\n const activeElement = document.activeElement as HTMLElement | null;\n const date = activeElement?.dataset.date;\n return date == null ? null : Temporal.PlainDate.from(date);\n }, []);\n\n const {gridRef, handleKeyDown} = useGridFocus<HTMLDivElement>({\n columns: 7,\n cellSelector: 'button:not([disabled])',\n onNavigateBefore: (_column, offset) => {\n const focusedDate = getFocusedDate();\n if (focusedDate != null) {\n onNavigatePrevious(focusedDate.subtract({days: offset}));\n }\n },\n onNavigateAfter: (_column, offset) => {\n const focusedDate = getFocusedDate();\n if (focusedDate != null) {\n onNavigateNext(focusedDate.add({days: offset}));\n }\n },\n // Page keys move a whole month, keeping the same day. Temporal's default\n // `constrain` overflow clamps to the month's last day (e.g. Jan 31 -> Feb 28).\n onPageUp: () => {\n const focusedDate = getFocusedDate();\n if (focusedDate != null) {\n onNavigatePrevious(focusedDate.subtract({months: 1}));\n }\n },\n onPageDown: () => {\n const focusedDate = getFocusedDate();\n if (focusedDate != null) {\n onNavigateNext(focusedDate.add({months: 1}));\n }\n },\n });\n\n // Keyboard navigation that crosses a month boundary sets `pendingFocus` and\n // changes the visible month in the same update. We can't focus the target day\n // imperatively at that point because its cell doesn't exist yet — it only\n // renders after the new month commits (and with a controlled `viewDate`, that\n // render is driven by the parent, so its timing isn't ours to know). Deferring\n // to this effect runs the focus once the new month's cells are in the DOM.\n useEffect(() => {\n if (pendingFocus == null || gridRef.current == null) {\n return;\n }\n\n const button = gridRef.current.querySelector<HTMLButtonElement>(\n `button[data-date=\"${pendingFocus.toString()}\"]`,\n );\n button?.focus();\n onPendingFocusHandled();\n }, [gridRef, onPendingFocusHandled, pendingFocus]);\n\n let rangeStart: PlainDate | null = null;\n let rangeEnd: PlainDate | null = null;\n if (mode === 'range' && value != null && 'start' in value) {\n rangeStart = value.start;\n rangeEnd = value.end;\n }\n if (rangeSelectionStart != null) {\n rangeStart = rangeSelectionStart;\n rangeEnd = rangeSelectionStart;\n }\n\n let previewStart: PlainDate | null = null;\n let previewEnd: PlainDate | null = null;\n if (mode === 'range' && rangeSelectionStart != null && hoveredDate != null) {\n if (!plainDateIsEqual(rangeSelectionStart, hoveredDate)) {\n previewStart = plainDateIsBefore(hoveredDate, rangeSelectionStart)\n ? hoveredDate\n : rangeSelectionStart;\n previewEnd = plainDateIsBefore(hoveredDate, rangeSelectionStart)\n ? rangeSelectionStart\n : hoveredDate;\n }\n }\n\n const isSelectingRange = mode === 'range' && rangeSelectionStart != null;\n\n const styles = calendarRecipe({hasWeekNumbers});\n\n return (\n <div className={styles.monthGrid}>\n <div className={styles.weekHeader}>\n {hasWeekNumbers ? <div className={styles.dayName} /> : null}\n {dayNames.map(dayName => (\n <div className={styles.dayName} key={dayName} role=\"columnheader\">\n {dayName}\n </div>\n ))}\n </div>\n <div\n aria-label={plainDateFormat(month, DATE_FORMAT_MONTH_YEAR)}\n className={styles.daysGrid}\n onKeyDown={handleKeyDown}\n ref={gridRef}\n role=\"grid\"\n tabIndex={-1}>\n {weeks.map(week => {\n const weekDate =\n week.find(day => !day.isOutside)?.date ?? week[0].date;\n return (\n <div\n className={styles.weekRow}\n key={week[0].date.toString()}\n role=\"row\">\n {hasWeekNumbers ? (\n <div className={styles.weekNumber}>\n {plainDateGetWeekNumber(weekDate)}\n </div>\n ) : null}\n {week.map((day, dayIndex) => (\n <DayCell\n day={day}\n dayIndex={dayIndex}\n hasOutsideDays={hasOutsideDays}\n isDisabled={isDisabled(day.date)}\n isSelectingRange={isSelectingRange}\n isTabbable={\n tabbableDate != null &&\n plainDateIsEqual(tabbableDate, day.date)\n }\n key={day.date.toString()}\n mode={mode}\n onDayClick={onDayClick}\n onDayHover={onDayHover}\n previewEnd={previewEnd}\n previewStart={previewStart}\n rangeEnd={rangeEnd}\n rangeStart={rangeStart}\n selectedDate={selectedDate}\n today={today}\n />\n ))}\n </div>\n );\n })}\n </div>\n </div>\n );\n});\n\ninterface DayCellProps {\n day: CalendarDay;\n dayIndex: number;\n hasOutsideDays: boolean;\n isDisabled: boolean;\n isSelectingRange: boolean;\n isTabbable: boolean;\n mode: 'single' | 'range';\n onDayClick: (date: PlainDate) => void;\n onDayHover: (date: PlainDate | null) => void;\n previewEnd: PlainDate | null;\n previewStart: PlainDate | null;\n rangeEnd: PlainDate | null;\n rangeStart: PlainDate | null;\n selectedDate: PlainDate | null;\n today: PlainDate;\n}\n\nconst DayCell = memo(function DayCell({\n day,\n dayIndex,\n mode,\n selectedDate,\n rangeStart,\n rangeEnd,\n previewStart,\n previewEnd,\n today,\n hasOutsideDays,\n isDisabled,\n isSelectingRange,\n isTabbable,\n onDayClick,\n onDayHover,\n}: DayCellProps): React.JSX.Element {\n if (day.isOutside && !hasOutsideDays) {\n return <div className={calendarRecipe().cell} />;\n }\n\n const effectivelyDisabled = isDisabled || day.isOutside;\n const isToday = plainDateIsEqual(day.date, today);\n const isSelected =\n mode === 'single' &&\n selectedDate != null &&\n plainDateIsEqual(day.date, selectedDate);\n const isInRange =\n mode === 'range' &&\n rangeStart != null &&\n rangeEnd != null &&\n plainDateIsInRange(day.date, [rangeStart, rangeEnd]);\n const isRangeStart =\n mode === 'range' &&\n rangeStart != null &&\n plainDateIsEqual(day.date, rangeStart);\n const isRangeEnd =\n mode === 'range' &&\n rangeEnd != null &&\n plainDateIsEqual(day.date, rangeEnd);\n const isInPreview =\n previewStart != null &&\n previewEnd != null &&\n plainDateIsInRange(day.date, [previewStart, previewEnd]);\n const isPreviewStart =\n previewStart != null && plainDateIsEqual(day.date, previewStart);\n const isPreviewEnd =\n previewEnd != null && plainDateIsEqual(day.date, previewEnd);\n const isFirstColumn = dayIndex === 0;\n const isLastColumn = dayIndex === 6;\n\n const styles = calendarRecipe({\n isOutside: day.isOutside,\n isToday,\n isSelected: isSelected || isRangeStart || isRangeEnd,\n isInRange,\n isDisabled: effectivelyDisabled,\n });\n const rangeBackgroundClass = calendarRecipe({\n rangeTone: 'range',\n roundedStart: isRangeStart || isFirstColumn,\n roundedEnd: isRangeEnd || isLastColumn,\n }).rangeBackground;\n const previewBackgroundClass = calendarRecipe({\n rangeTone: 'preview',\n roundedStart: isPreviewStart || isFirstColumn,\n roundedEnd: isPreviewEnd || isLastColumn,\n }).rangeBackground;\n\n return (\n <div className={styles.cell}>\n {isInRange ? <div className={rangeBackgroundClass} /> : null}\n {isInPreview ? <div className={previewBackgroundClass} /> : null}\n <button\n aria-disabled={effectivelyDisabled || undefined}\n aria-label={plainDateFormat(day.date, DATE_FORMAT_WITH_WEEKDAY)}\n aria-selected={isSelected || isInRange || undefined}\n className={styles.day}\n data-date={day.date.toString()}\n disabled={isDisabled}\n onClick={() => {\n if (!effectivelyDisabled) {\n onDayClick(day.date);\n }\n }}\n onMouseEnter={() => {\n if (isSelectingRange && !effectivelyDisabled) {\n onDayHover(day.date);\n }\n }}\n onMouseLeave={() => {\n if (isSelectingRange) {\n onDayHover(null);\n }\n }}\n role=\"gridcell\"\n tabIndex={isTabbable ? 0 : -1}\n type=\"button\">\n {day.dayNumber}\n </button>\n </div>\n );\n});\n\nCalendar.displayName = 'Calendar';\n"]}
@@ -1,5 +1,5 @@
1
- import { Button } from './chunk-HMJINNXZ.js';
2
- import { Text } from './chunk-NXTDP6AX.js';
1
+ import { Button } from './chunk-EBV3EX3J.js';
2
+ import { Text } from './chunk-5GSRIOXE.js';
3
3
  import { css } from './chunk-OD4DHHZH.js';
4
4
  import { cx } from './chunk-PPNETWIP.js';
5
5
  import { ChevronLeft, ChevronRight } from 'lucide-react';
@@ -205,5 +205,5 @@ function Pagination({
205
205
  Pagination.displayName = "Pagination";
206
206
 
207
207
  export { Pagination };
208
- //# sourceMappingURL=chunk-LLSWAAFH.js.map
209
- //# sourceMappingURL=chunk-LLSWAAFH.js.map
208
+ //# sourceMappingURL=chunk-L747HIHG.js.map
209
+ //# sourceMappingURL=chunk-L747HIHG.js.map