silver-ui 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1117) hide show
  1. package/README.md +1 -65
  2. package/dist/{chunk-JYVYCU22.cjs → chunk-27EAV2GT.cjs} +2 -2
  3. package/dist/chunk-27EAV2GT.cjs.map +1 -0
  4. package/dist/{chunk-SR5VVJ5Y.cjs → chunk-2K4I2MB3.cjs} +5 -5
  5. package/dist/{chunk-SR5VVJ5Y.cjs.map → chunk-2K4I2MB3.cjs.map} +1 -1
  6. package/dist/{chunk-GYVWTH3U.cjs → chunk-2MXK2SDR.cjs} +2 -2
  7. package/dist/chunk-2MXK2SDR.cjs.map +1 -0
  8. package/dist/{chunk-AP7BDTTF.js → chunk-2SN3KVWF.js} +5 -5
  9. package/dist/chunk-2SN3KVWF.js.map +1 -0
  10. package/dist/{chunk-SCGXGVNN.cjs → chunk-3IDT3PZC.cjs} +18 -18
  11. package/dist/{chunk-SCGXGVNN.cjs.map → chunk-3IDT3PZC.cjs.map} +1 -1
  12. package/dist/chunk-3NIDAKCF.cjs +38 -0
  13. package/dist/chunk-3NIDAKCF.cjs.map +1 -0
  14. package/dist/chunk-3PEK2Q54.cjs +31 -0
  15. package/dist/chunk-3PEK2Q54.cjs.map +1 -0
  16. package/dist/{chunk-ZTWBG2XY.cjs → chunk-3W3ST5Y3.cjs} +6 -6
  17. package/dist/chunk-3W3ST5Y3.cjs.map +1 -0
  18. package/dist/{chunk-J3DNWPXJ.js → chunk-4426KMA7.js} +2 -2
  19. package/dist/{chunk-J3DNWPXJ.js.map → chunk-4426KMA7.js.map} +1 -1
  20. package/dist/{chunk-L6VSBBPP.js → chunk-45OSUS5A.js} +176 -102
  21. package/dist/chunk-45OSUS5A.js.map +1 -0
  22. package/dist/{chunk-FMLIYHDP.js → chunk-4EUUZQAM.js} +5 -5
  23. package/dist/chunk-4EUUZQAM.js.map +1 -0
  24. package/dist/{chunk-VUCMGGU5.js → chunk-4JJFQZVY.js} +129 -121
  25. package/dist/chunk-4JJFQZVY.js.map +1 -0
  26. package/dist/{chunk-3JPUXC5U.js → chunk-56PY2CD7.js} +17 -44
  27. package/dist/chunk-56PY2CD7.js.map +1 -0
  28. package/dist/chunk-5FQKELP6.js +28 -0
  29. package/dist/chunk-5FQKELP6.js.map +1 -0
  30. package/dist/{chunk-M4JUQCKP.js → chunk-5FTIATD6.js} +2 -2
  31. package/dist/{chunk-M4JUQCKP.js.map → chunk-5FTIATD6.js.map} +1 -1
  32. package/dist/{chunk-QSEDH7T2.js → chunk-5HPXUDX6.js} +3 -6
  33. package/dist/chunk-5HPXUDX6.js.map +1 -0
  34. package/dist/chunk-5JROXZBG.cjs +491 -0
  35. package/dist/chunk-5JROXZBG.cjs.map +1 -0
  36. package/dist/{chunk-FNZOICR4.cjs → chunk-5K3C3INR.cjs} +29 -58
  37. package/dist/chunk-5K3C3INR.cjs.map +1 -0
  38. package/dist/{chunk-N2TNBDQI.js → chunk-5RFHYDQY.js} +17 -12
  39. package/dist/chunk-5RFHYDQY.js.map +1 -0
  40. package/dist/{chunk-Z4TZAJS3.js → chunk-5UGHDUMO.js} +2 -2
  41. package/dist/chunk-5UGHDUMO.js.map +1 -0
  42. package/dist/{chunk-2XAA3CM5.js → chunk-5ZU7FY4O.js} +2 -2
  43. package/dist/chunk-5ZU7FY4O.js.map +1 -0
  44. package/dist/{chunk-NHXJVSZZ.cjs → chunk-62SQBQA4.cjs} +2 -2
  45. package/dist/chunk-62SQBQA4.cjs.map +1 -0
  46. package/dist/{chunk-BULJWVPU.cjs → chunk-6FC5YF2O.cjs} +19 -19
  47. package/dist/{chunk-BULJWVPU.cjs.map → chunk-6FC5YF2O.cjs.map} +1 -1
  48. package/dist/{chunk-2N6FOSNM.js → chunk-6I5QWA6A.js} +210 -172
  49. package/dist/chunk-6I5QWA6A.js.map +1 -0
  50. package/dist/chunk-6ZV7HGZT.cjs +169 -0
  51. package/dist/chunk-6ZV7HGZT.cjs.map +1 -0
  52. package/dist/{chunk-GL7PSN7H.cjs → chunk-7EE6DCRP.cjs} +29 -23
  53. package/dist/chunk-7EE6DCRP.cjs.map +1 -0
  54. package/dist/{chunk-6XWXBXYE.js → chunk-7TJ2O56S.js} +8 -10
  55. package/dist/chunk-7TJ2O56S.js.map +1 -0
  56. package/dist/chunk-A2AC6WL5.cjs +4 -0
  57. package/dist/chunk-A2AC6WL5.cjs.map +1 -0
  58. package/dist/{chunk-TBOQTPRO.cjs → chunk-AFJEAYR4.cjs} +91 -57
  59. package/dist/chunk-AFJEAYR4.cjs.map +1 -0
  60. package/dist/chunk-AFXU6XIS.js +3 -0
  61. package/dist/chunk-AFXU6XIS.js.map +1 -0
  62. package/dist/{chunk-PIZMCOKL.js → chunk-AKAXQ4RL.js} +276 -246
  63. package/dist/chunk-AKAXQ4RL.js.map +1 -0
  64. package/dist/{chunk-O2WICOUK.cjs → chunk-ARUOMLOJ.cjs} +24 -20
  65. package/dist/chunk-ARUOMLOJ.cjs.map +1 -0
  66. package/dist/{chunk-3OIUA2NY.js → chunk-ATK3F3MC.js} +5 -5
  67. package/dist/{chunk-3OIUA2NY.js.map → chunk-ATK3F3MC.js.map} +1 -1
  68. package/dist/{chunk-6ONAGCCZ.js → chunk-B5QX6KGJ.js} +113 -105
  69. package/dist/chunk-B5QX6KGJ.js.map +1 -0
  70. package/dist/{chunk-52WQDDWQ.js → chunk-BDFNEQR3.js} +50 -50
  71. package/dist/chunk-BDFNEQR3.js.map +1 -0
  72. package/dist/{chunk-JDAJ2HJQ.js → chunk-BGLT7XH6.js} +9 -9
  73. package/dist/chunk-BGLT7XH6.js.map +1 -0
  74. package/dist/{chunk-FDUO2HVX.js → chunk-BIKVMVWF.js} +2 -2
  75. package/dist/{chunk-FDUO2HVX.js.map → chunk-BIKVMVWF.js.map} +1 -1
  76. package/dist/{chunk-UUVLEOSD.js → chunk-BNGYGCT2.js} +9 -9
  77. package/dist/chunk-BNGYGCT2.js.map +1 -0
  78. package/dist/{chunk-W2Q4PQ6I.js → chunk-BQWUTDTN.js} +2 -2
  79. package/dist/{chunk-W2Q4PQ6I.js.map → chunk-BQWUTDTN.js.map} +1 -1
  80. package/dist/{chunk-E2A3GJSN.cjs → chunk-BSXUNRET.cjs} +11 -12
  81. package/dist/chunk-BSXUNRET.cjs.map +1 -0
  82. package/dist/chunk-BUYZZOOU.js +56 -0
  83. package/dist/chunk-BUYZZOOU.js.map +1 -0
  84. package/dist/{chunk-NFABMGNH.js → chunk-C6EWA3H2.js} +8 -8
  85. package/dist/chunk-C6EWA3H2.js.map +1 -0
  86. package/dist/{chunk-YWGYN6YV.cjs → chunk-CABYRYVA.cjs} +171 -153
  87. package/dist/chunk-CABYRYVA.cjs.map +1 -0
  88. package/dist/{chunk-5D2OR64D.cjs → chunk-CNDUYO7I.cjs} +7 -15
  89. package/dist/chunk-CNDUYO7I.cjs.map +1 -0
  90. package/dist/chunk-CPDWUT2H.cjs +59 -0
  91. package/dist/chunk-CPDWUT2H.cjs.map +1 -0
  92. package/dist/{chunk-C6EYCIKJ.cjs → chunk-CVT7JW6C.cjs} +276 -246
  93. package/dist/chunk-CVT7JW6C.cjs.map +1 -0
  94. package/dist/chunk-CZUMVOPH.js +3525 -0
  95. package/dist/chunk-CZUMVOPH.js.map +1 -0
  96. package/dist/{chunk-4CVDLMD6.js → chunk-D3CHBU46.js} +3 -3
  97. package/dist/{chunk-4CVDLMD6.js.map → chunk-D3CHBU46.js.map} +1 -1
  98. package/dist/{chunk-U6NH54YD.js → chunk-DAO4UXR4.js} +166 -148
  99. package/dist/chunk-DAO4UXR4.js.map +1 -0
  100. package/dist/{chunk-RDNMAV5B.js → chunk-DE7JLNSO.js} +2 -2
  101. package/dist/chunk-DE7JLNSO.js.map +1 -0
  102. package/dist/{chunk-TF7XVTSP.cjs → chunk-DFEAB7Z3.cjs} +15 -15
  103. package/dist/chunk-DFEAB7Z3.cjs.map +1 -0
  104. package/dist/{chunk-BLRWA445.cjs → chunk-DK6USFZP.cjs} +27 -27
  105. package/dist/chunk-DK6USFZP.cjs.map +1 -0
  106. package/dist/{chunk-JKERY7QF.cjs → chunk-DLIYUFTS.cjs} +2 -2
  107. package/dist/{chunk-JKERY7QF.cjs.map → chunk-DLIYUFTS.cjs.map} +1 -1
  108. package/dist/{chunk-JIVYPJKO.js → chunk-DPSAPA6B.js} +6 -6
  109. package/dist/chunk-DPSAPA6B.js.map +1 -0
  110. package/dist/{chunk-YAWVGZRC.js → chunk-DWZR2AGT.js} +6 -6
  111. package/dist/{chunk-YAWVGZRC.js.map → chunk-DWZR2AGT.js.map} +1 -1
  112. package/dist/{chunk-FB245S6T.cjs → chunk-DXUFDJHA.cjs} +17 -18
  113. package/dist/chunk-DXUFDJHA.cjs.map +1 -0
  114. package/dist/{chunk-G3KKLGZU.cjs → chunk-DYMZ4DLN.cjs} +8 -8
  115. package/dist/chunk-DYMZ4DLN.cjs.map +1 -0
  116. package/dist/{chunk-M2MC3E27.cjs → chunk-EEOUWM2F.cjs} +10 -10
  117. package/dist/chunk-EEOUWM2F.cjs.map +1 -0
  118. package/dist/{chunk-AFI4V7LI.js → chunk-EIJSWHG7.js} +11 -12
  119. package/dist/chunk-EIJSWHG7.js.map +1 -0
  120. package/dist/{chunk-PUVBNGCF.js → chunk-EIT2QSCA.js} +2 -2
  121. package/dist/{chunk-PUVBNGCF.js.map → chunk-EIT2QSCA.js.map} +1 -1
  122. package/dist/{chunk-YVHWOKR7.cjs → chunk-ENVDR66N.cjs} +314 -324
  123. package/dist/chunk-ENVDR66N.cjs.map +1 -0
  124. package/dist/chunk-ERVWZILR.js +321 -0
  125. package/dist/chunk-ERVWZILR.js.map +1 -0
  126. package/dist/{chunk-2A3V6OR7.cjs → chunk-EVCQCZMM.cjs} +5 -5
  127. package/dist/{chunk-2A3V6OR7.cjs.map → chunk-EVCQCZMM.cjs.map} +1 -1
  128. package/dist/{chunk-GC5VUTUR.cjs → chunk-EZFQCREN.cjs} +17 -44
  129. package/dist/chunk-EZFQCREN.cjs.map +1 -0
  130. package/dist/{chunk-FP5E5BUM.js → chunk-FIOCTAXT.js} +4 -4
  131. package/dist/chunk-FIOCTAXT.js.map +1 -0
  132. package/dist/{chunk-AWDIKDX5.cjs → chunk-FLDTPAG4.cjs} +11 -11
  133. package/dist/{chunk-AWDIKDX5.cjs.map → chunk-FLDTPAG4.cjs.map} +1 -1
  134. package/dist/{chunk-S7INL5NI.js → chunk-FQN22DO5.js} +10 -10
  135. package/dist/chunk-FQN22DO5.js.map +1 -0
  136. package/dist/{chunk-AJ6X62AI.js → chunk-FQSVY4QB.js} +3 -3
  137. package/dist/chunk-FQSVY4QB.js.map +1 -0
  138. package/dist/{chunk-3ZV3EGGK.cjs → chunk-FWBYCTUB.cjs} +24 -24
  139. package/dist/chunk-FWBYCTUB.cjs.map +1 -0
  140. package/dist/{chunk-WBQNPBXR.js → chunk-G5PU2EL2.js} +5 -5
  141. package/dist/{chunk-WBQNPBXR.js.map → chunk-G5PU2EL2.js.map} +1 -1
  142. package/dist/{chunk-WOIWI2UO.js → chunk-G6HS52US.js} +3 -3
  143. package/dist/chunk-G6HS52US.js.map +1 -0
  144. package/dist/chunk-GA77PPVL.cjs +217 -0
  145. package/dist/chunk-GA77PPVL.cjs.map +1 -0
  146. package/dist/chunk-GJKRSQEA.cjs +3541 -0
  147. package/dist/chunk-GJKRSQEA.cjs.map +1 -0
  148. package/dist/{chunk-7CCXHH6Y.cjs → chunk-GJZAGTPV.cjs} +7 -7
  149. package/dist/chunk-GJZAGTPV.cjs.map +1 -0
  150. package/dist/{chunk-SBS7U7CN.cjs → chunk-GU65FGY6.cjs} +4 -4
  151. package/dist/{chunk-SBS7U7CN.cjs.map → chunk-GU65FGY6.cjs.map} +1 -1
  152. package/dist/{chunk-K3XHXWBW.js → chunk-GUUCIG7U.js} +9 -9
  153. package/dist/{chunk-K3XHXWBW.js.map → chunk-GUUCIG7U.js.map} +1 -1
  154. package/dist/{chunk-RQ5BMSGU.js → chunk-H2EMKCWT.js} +3 -3
  155. package/dist/{chunk-RQ5BMSGU.js.map → chunk-H2EMKCWT.js.map} +1 -1
  156. package/dist/{chunk-JTFNNEWR.cjs → chunk-H5VMHDRD.cjs} +8 -10
  157. package/dist/chunk-H5VMHDRD.cjs.map +1 -0
  158. package/dist/{chunk-AHVHLNHU.cjs → chunk-H7VK36SZ.cjs} +213 -175
  159. package/dist/chunk-H7VK36SZ.cjs.map +1 -0
  160. package/dist/{chunk-YYNWZRXZ.js → chunk-HKGFMJFK.js} +491 -431
  161. package/dist/chunk-HKGFMJFK.js.map +1 -0
  162. package/dist/{chunk-2LABTS4P.js → chunk-HMJINNXZ.js} +24 -35
  163. package/dist/chunk-HMJINNXZ.js.map +1 -0
  164. package/dist/{chunk-WY5BOT7O.js → chunk-HPNY32G6.js} +4 -4
  165. package/dist/{chunk-WY5BOT7O.js.map → chunk-HPNY32G6.js.map} +1 -1
  166. package/dist/{chunk-IA5GII7N.cjs → chunk-HPOURAKV.cjs} +264 -218
  167. package/dist/chunk-HPOURAKV.cjs.map +1 -0
  168. package/dist/{chunk-LUQVSNQL.cjs → chunk-INQ34SVW.cjs} +141 -133
  169. package/dist/chunk-INQ34SVW.cjs.map +1 -0
  170. package/dist/{chunk-5YS43PSQ.cjs → chunk-IREOTHD3.cjs} +8 -8
  171. package/dist/chunk-IREOTHD3.cjs.map +1 -0
  172. package/dist/chunk-ISWZQUVA.cjs +409 -0
  173. package/dist/chunk-ISWZQUVA.cjs.map +1 -0
  174. package/dist/{chunk-XXBA3KSH.cjs → chunk-IU2YRN35.cjs} +112 -112
  175. package/dist/chunk-IU2YRN35.cjs.map +1 -0
  176. package/dist/{chunk-7T3SWOY7.js → chunk-IUW777WZ.js} +2 -2
  177. package/dist/{chunk-7T3SWOY7.js.map → chunk-IUW777WZ.js.map} +1 -1
  178. package/dist/{chunk-ZFBQ4R7M.cjs → chunk-J4LJXCXB.cjs} +15 -15
  179. package/dist/chunk-J4LJXCXB.cjs.map +1 -0
  180. package/dist/{chunk-4TIAKZ4Q.cjs → chunk-J4PIYOWT.cjs} +2 -2
  181. package/dist/{chunk-4TIAKZ4Q.cjs.map → chunk-J4PIYOWT.cjs.map} +1 -1
  182. package/dist/{chunk-LNT2IFOA.js → chunk-JC66FRQX.js} +3 -3
  183. package/dist/chunk-JC66FRQX.js.map +1 -0
  184. package/dist/{chunk-ZAX2UJBC.js → chunk-JHMUMJF3.js} +37 -28
  185. package/dist/chunk-JHMUMJF3.js.map +1 -0
  186. package/dist/{chunk-O32BKXTR.cjs → chunk-JIF5TZHC.cjs} +2 -2
  187. package/dist/chunk-JIF5TZHC.cjs.map +1 -0
  188. package/dist/{chunk-CK3UJQRI.cjs → chunk-JK4YAQ2N.cjs} +2 -6
  189. package/dist/chunk-JK4YAQ2N.cjs.map +1 -0
  190. package/dist/{chunk-G2U2W422.js → chunk-JR353MN5.js} +8 -8
  191. package/dist/chunk-JR353MN5.js.map +1 -0
  192. package/dist/{chunk-WGCGHFXE.cjs → chunk-JV4Y6HNP.cjs} +2 -2
  193. package/dist/{chunk-WGCGHFXE.cjs.map → chunk-JV4Y6HNP.cjs.map} +1 -1
  194. package/dist/{chunk-PIOMR4X2.js → chunk-K2V3IOAX.js} +4 -4
  195. package/dist/{chunk-PIOMR4X2.js.map → chunk-K2V3IOAX.js.map} +1 -1
  196. package/dist/{chunk-4H7X5FGX.js → chunk-K2WT7A64.js} +239 -274
  197. package/dist/chunk-K2WT7A64.js.map +1 -0
  198. package/dist/{chunk-SBOXHIES.js → chunk-KCI4I42U.js} +11 -11
  199. package/dist/chunk-KCI4I42U.js.map +1 -0
  200. package/dist/{chunk-HINS4GY6.js → chunk-KEPCKSDE.js} +168 -146
  201. package/dist/chunk-KEPCKSDE.js.map +1 -0
  202. package/dist/{chunk-LY6Z6A54.js → chunk-KG7RHDVX.js} +18 -12
  203. package/dist/chunk-KG7RHDVX.js.map +1 -0
  204. package/dist/{chunk-PYPXJC35.cjs → chunk-KUXFEAT4.cjs} +4 -4
  205. package/dist/{chunk-PYPXJC35.cjs.map → chunk-KUXFEAT4.cjs.map} +1 -1
  206. package/dist/chunk-KVEXSDEM.js +214 -0
  207. package/dist/chunk-KVEXSDEM.js.map +1 -0
  208. package/dist/{chunk-276LEL3G.cjs → chunk-KVJ27734.cjs} +4 -4
  209. package/dist/{chunk-276LEL3G.cjs.map → chunk-KVJ27734.cjs.map} +1 -1
  210. package/dist/{chunk-3CJC4QE6.js → chunk-KWZMXX4F.js} +5 -5
  211. package/dist/chunk-KWZMXX4F.js.map +1 -0
  212. package/dist/{chunk-SOCSUNIM.js → chunk-LDYUVGD4.js} +303 -313
  213. package/dist/chunk-LDYUVGD4.js.map +1 -0
  214. package/dist/{chunk-HNZWPIJE.js → chunk-LF6I2B7G.js} +215 -197
  215. package/dist/chunk-LF6I2B7G.js.map +1 -0
  216. package/dist/{chunk-W3C6QQF7.js → chunk-LLSWAAFH.js} +4 -4
  217. package/dist/chunk-LLSWAAFH.js.map +1 -0
  218. package/dist/{chunk-J5IRFGUP.js → chunk-M64WMYYV.js} +256 -210
  219. package/dist/chunk-M64WMYYV.js.map +1 -0
  220. package/dist/{chunk-VFGSNR35.js → chunk-MDQSVB2Y.js} +24 -20
  221. package/dist/chunk-MDQSVB2Y.js.map +1 -0
  222. package/dist/{chunk-M26XECB2.cjs → chunk-MHAXS4GO.cjs} +17 -19
  223. package/dist/chunk-MHAXS4GO.cjs.map +1 -0
  224. package/dist/{chunk-KXIILLQD.cjs → chunk-MHEPDHL5.cjs} +18 -18
  225. package/dist/chunk-MHEPDHL5.cjs.map +1 -0
  226. package/dist/{chunk-BCCPNGUV.js → chunk-MN2NCSQQ.js} +3 -3
  227. package/dist/{chunk-BCCPNGUV.js.map → chunk-MN2NCSQQ.js.map} +1 -1
  228. package/dist/{chunk-PQEFVHJZ.cjs → chunk-NFEL5GNX.cjs} +16 -15
  229. package/dist/chunk-NFEL5GNX.cjs.map +1 -0
  230. package/dist/{chunk-FDZQPWFZ.cjs → chunk-NG2H3PYA.cjs} +17 -17
  231. package/dist/chunk-NG2H3PYA.cjs.map +1 -0
  232. package/dist/{chunk-7U7JMRVF.cjs → chunk-NW36BN7N.cjs} +61 -61
  233. package/dist/chunk-NW36BN7N.cjs.map +1 -0
  234. package/dist/{chunk-QRFDPG34.js → chunk-NXTDP6AX.js} +12 -14
  235. package/dist/chunk-NXTDP6AX.js.map +1 -0
  236. package/dist/{chunk-VGHNBMEJ.cjs → chunk-NYTSAO5I.cjs} +6 -6
  237. package/dist/{chunk-VGHNBMEJ.cjs.map → chunk-NYTSAO5I.cjs.map} +1 -1
  238. package/dist/{chunk-YO3MBGBP.cjs → chunk-O4PO6AMS.cjs} +2 -2
  239. package/dist/{chunk-YO3MBGBP.cjs.map → chunk-O4PO6AMS.cjs.map} +1 -1
  240. package/dist/{chunk-BUESV4DR.cjs → chunk-P5LMEANN.cjs} +7 -7
  241. package/dist/{chunk-BUESV4DR.cjs.map → chunk-P5LMEANN.cjs.map} +1 -1
  242. package/dist/{chunk-NI55JEYL.js → chunk-P7TSM63O.js} +3 -3
  243. package/dist/{chunk-NI55JEYL.js.map → chunk-P7TSM63O.js.map} +1 -1
  244. package/dist/chunk-PG4CZRTU.js +77 -0
  245. package/dist/chunk-PG4CZRTU.js.map +1 -0
  246. package/dist/{chunk-XLKXFJMU.cjs → chunk-PHFJBQXU.cjs} +8 -8
  247. package/dist/chunk-PHFJBQXU.cjs.map +1 -0
  248. package/dist/{chunk-2OXKEUKG.cjs → chunk-PKZSJX53.cjs} +2 -2
  249. package/dist/chunk-PKZSJX53.cjs.map +1 -0
  250. package/dist/{chunk-J4OEETYQ.cjs → chunk-PNM7MPUX.cjs} +13 -13
  251. package/dist/{chunk-J4OEETYQ.cjs.map → chunk-PNM7MPUX.cjs.map} +1 -1
  252. package/dist/{chunk-TKTLWX2V.js → chunk-PU4PBI3H.js} +8 -8
  253. package/dist/{chunk-TKTLWX2V.js.map → chunk-PU4PBI3H.js.map} +1 -1
  254. package/dist/{chunk-LO5NZY7N.cjs → chunk-PYJX2SBC.cjs} +6 -6
  255. package/dist/chunk-PYJX2SBC.cjs.map +1 -0
  256. package/dist/{chunk-D3LZQ5QS.js → chunk-PYN75QAG.js} +6 -6
  257. package/dist/chunk-PYN75QAG.js.map +1 -0
  258. package/dist/chunk-PZHRFASW.js +36 -0
  259. package/dist/chunk-PZHRFASW.js.map +1 -0
  260. package/dist/{chunk-DP7VC4FW.cjs → chunk-QB2BSOM4.cjs} +2 -2
  261. package/dist/{chunk-DP7VC4FW.cjs.map → chunk-QB2BSOM4.cjs.map} +1 -1
  262. package/dist/{chunk-6ULCJ3XZ.js → chunk-QHXI2QDK.js} +3 -3
  263. package/dist/{chunk-6ULCJ3XZ.js.map → chunk-QHXI2QDK.js.map} +1 -1
  264. package/dist/{chunk-C732WXKS.cjs → chunk-QTOFQB26.cjs} +17 -17
  265. package/dist/chunk-QTOFQB26.cjs.map +1 -0
  266. package/dist/{chunk-TQA3BI7M.cjs → chunk-QYZXTIB2.cjs} +4 -4
  267. package/dist/{chunk-TQA3BI7M.cjs.map → chunk-QYZXTIB2.cjs.map} +1 -1
  268. package/dist/{chunk-YY6KJO5Z.cjs → chunk-R3ZS6FU6.cjs} +12 -12
  269. package/dist/chunk-R3ZS6FU6.cjs.map +1 -0
  270. package/dist/{chunk-G2WW52GO.cjs → chunk-RAMDISDK.cjs} +40 -31
  271. package/dist/chunk-RAMDISDK.cjs.map +1 -0
  272. package/dist/{chunk-SSOAZZNR.cjs → chunk-RLIBY7XB.cjs} +19 -14
  273. package/dist/chunk-RLIBY7XB.cjs.map +1 -0
  274. package/dist/chunk-RU7JPU7V.js +389 -0
  275. package/dist/chunk-RU7JPU7V.js.map +1 -0
  276. package/dist/{chunk-SSAYBCAD.js → chunk-RXKDRZF3.js} +5 -13
  277. package/dist/chunk-RXKDRZF3.js.map +1 -0
  278. package/dist/{chunk-VQ7U3ASC.js → chunk-S4IHNNA2.js} +111 -111
  279. package/dist/chunk-S4IHNNA2.js.map +1 -0
  280. package/dist/{chunk-MI5QU37D.js → chunk-S4WWBV4N.js} +24 -50
  281. package/dist/chunk-S4WWBV4N.js.map +1 -0
  282. package/dist/{chunk-RLOGQBFD.js → chunk-SEDUAMDW.js} +6 -6
  283. package/dist/chunk-SEDUAMDW.js.map +1 -0
  284. package/dist/{chunk-SUH62Z64.js → chunk-SHARVIUI.js} +2 -2
  285. package/dist/chunk-SHARVIUI.js.map +1 -0
  286. package/dist/chunk-SKZNSOB7.cjs +323 -0
  287. package/dist/chunk-SKZNSOB7.cjs.map +1 -0
  288. package/dist/{chunk-ZEA2VYX4.js → chunk-SZ27SCE2.js} +2 -2
  289. package/dist/{chunk-ZEA2VYX4.js.map → chunk-SZ27SCE2.js.map} +1 -1
  290. package/dist/{chunk-H2CZ6IE5.cjs → chunk-TNYAYXKC.cjs} +509 -451
  291. package/dist/chunk-TNYAYXKC.cjs.map +1 -0
  292. package/dist/{chunk-DXPQRAGI.js → chunk-TQDJVPHP.js} +3 -3
  293. package/dist/{chunk-DXPQRAGI.js.map → chunk-TQDJVPHP.js.map} +1 -1
  294. package/dist/{chunk-JSINCF2R.cjs → chunk-TVWU4XBL.cjs} +12 -12
  295. package/dist/{chunk-JSINCF2R.cjs.map → chunk-TVWU4XBL.cjs.map} +1 -1
  296. package/dist/{chunk-OBWWRRL6.cjs → chunk-U4L75VA4.cjs} +167 -159
  297. package/dist/chunk-U4L75VA4.cjs.map +1 -0
  298. package/dist/{chunk-X574M2JB.cjs → chunk-U5HW5P7Q.cjs} +13 -13
  299. package/dist/chunk-U5HW5P7Q.cjs.map +1 -0
  300. package/dist/{chunk-KDR5DCYL.cjs → chunk-UMS46KF4.cjs} +10 -10
  301. package/dist/{chunk-KDR5DCYL.cjs.map → chunk-UMS46KF4.cjs.map} +1 -1
  302. package/dist/{chunk-BSAZRW6T.js → chunk-UT45YVPI.js} +22 -15
  303. package/dist/chunk-UT45YVPI.js.map +1 -0
  304. package/dist/{chunk-LQIZSE3O.js → chunk-UYZQGHFI.js} +11 -11
  305. package/dist/chunk-UYZQGHFI.js.map +1 -0
  306. package/dist/{chunk-TPB53MHV.cjs → chunk-UZGPFPIV.cjs} +224 -206
  307. package/dist/chunk-UZGPFPIV.cjs.map +1 -0
  308. package/dist/{chunk-7BSFKG7N.js → chunk-V2V5TTTL.js} +2 -2
  309. package/dist/chunk-V2V5TTTL.js.map +1 -0
  310. package/dist/{chunk-IUUQXCDE.js → chunk-VJXSJXEX.js} +2 -2
  311. package/dist/{chunk-IUUQXCDE.js.map → chunk-VJXSJXEX.js.map} +1 -1
  312. package/dist/{chunk-JJ324PSZ.cjs → chunk-VK7DXUGH.cjs} +168 -145
  313. package/dist/chunk-VK7DXUGH.cjs.map +1 -0
  314. package/dist/{chunk-I45346RZ.cjs → chunk-VOOD6CXJ.cjs} +2 -2
  315. package/dist/{chunk-I45346RZ.cjs.map → chunk-VOOD6CXJ.cjs.map} +1 -1
  316. package/dist/chunk-VPWNRWNO.cjs +81 -0
  317. package/dist/chunk-VPWNRWNO.cjs.map +1 -0
  318. package/dist/{chunk-QATCDVZ6.cjs → chunk-VREW3BK6.cjs} +182 -108
  319. package/dist/chunk-VREW3BK6.cjs.map +1 -0
  320. package/dist/{chunk-DIRVAHOF.cjs → chunk-VRQ66IBW.cjs} +8 -8
  321. package/dist/chunk-VRQ66IBW.cjs.map +1 -0
  322. package/dist/chunk-VW52NVGM.cjs +391 -0
  323. package/dist/chunk-VW52NVGM.cjs.map +1 -0
  324. package/dist/{chunk-QOKEU3DC.cjs → chunk-VXOIOPGZ.cjs} +30 -41
  325. package/dist/chunk-VXOIOPGZ.cjs.map +1 -0
  326. package/dist/chunk-WAWHHXSR.js +166 -0
  327. package/dist/chunk-WAWHHXSR.js.map +1 -0
  328. package/dist/{chunk-2RKMG2TC.js → chunk-WEXTGWRE.js} +176 -140
  329. package/dist/chunk-WEXTGWRE.js.map +1 -0
  330. package/dist/{chunk-ILEKDNP7.js → chunk-WHDDBOJN.js} +7 -7
  331. package/dist/{chunk-ILEKDNP7.js.map → chunk-WHDDBOJN.js.map} +1 -1
  332. package/dist/{chunk-QVNDZZS6.cjs → chunk-WINDLDH3.cjs} +9 -9
  333. package/dist/chunk-WINDLDH3.cjs.map +1 -0
  334. package/dist/{chunk-DWUEPOYH.js → chunk-WM7NEOME.js} +8 -8
  335. package/dist/chunk-WM7NEOME.js.map +1 -0
  336. package/dist/{chunk-ZQUPAIBS.js → chunk-WTCH3QCQ.js} +10 -11
  337. package/dist/chunk-WTCH3QCQ.js.map +1 -0
  338. package/dist/{chunk-K4ZJNQTX.cjs → chunk-X34F4ZV6.cjs} +2 -2
  339. package/dist/{chunk-K4ZJNQTX.cjs.map → chunk-X34F4ZV6.cjs.map} +1 -1
  340. package/dist/{chunk-2P6D43V2.cjs → chunk-XPHXAZCE.cjs} +6 -6
  341. package/dist/chunk-XPHXAZCE.cjs.map +1 -0
  342. package/dist/{chunk-WBGFFP3G.js → chunk-XTLNUYCK.js} +90 -56
  343. package/dist/chunk-XTLNUYCK.js.map +1 -0
  344. package/dist/{chunk-ZN7CULIL.cjs → chunk-ZPOXH42B.cjs} +2 -2
  345. package/dist/{chunk-ZN7CULIL.cjs.map → chunk-ZPOXH42B.cjs.map} +1 -1
  346. package/dist/{chunk-EBDODJ5X.js → chunk-ZSB43DEI.js} +8 -7
  347. package/dist/chunk-ZSB43DEI.js.map +1 -0
  348. package/dist/{chunk-VHKA25IV.cjs → chunk-ZUAWNT66.cjs} +36 -29
  349. package/dist/chunk-ZUAWNT66.cjs.map +1 -0
  350. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  351. package/dist/components/Accordion/index.cjs +5 -5
  352. package/dist/components/Accordion/index.d.ts +2 -2
  353. package/dist/components/Accordion/index.d.ts.map +1 -1
  354. package/dist/components/Accordion/index.js +2 -2
  355. package/dist/components/Accordion/useAccordionDevWarning.d.ts +8 -0
  356. package/dist/components/Accordion/useAccordionDevWarning.d.ts.map +1 -0
  357. package/dist/components/Alert/Alert.d.ts +2 -11
  358. package/dist/components/Alert/Alert.d.ts.map +1 -1
  359. package/dist/components/Alert/Alert.recipe.d.ts +1 -1
  360. package/dist/components/Alert/Alert.types.d.ts +3 -0
  361. package/dist/components/Alert/Alert.types.d.ts.map +1 -0
  362. package/dist/components/Alert/index.cjs +13 -11
  363. package/dist/components/Alert/index.d.ts.map +1 -1
  364. package/dist/components/Alert/index.js +12 -10
  365. package/dist/components/AlertDialog/AlertDialog.d.ts.map +1 -1
  366. package/dist/components/AlertDialog/index.cjs +18 -14
  367. package/dist/components/AlertDialog/index.d.ts.map +1 -1
  368. package/dist/components/AlertDialog/index.js +16 -12
  369. package/dist/components/AlertDialog/useAlertDialog.d.ts.map +1 -1
  370. package/dist/components/AppShell/AppShell.d.ts.map +1 -1
  371. package/dist/components/AppShell/index.cjs +23 -19
  372. package/dist/components/AppShell/index.d.ts.map +1 -1
  373. package/dist/components/AppShell/index.js +20 -16
  374. package/dist/components/AspectRatio/index.cjs +2 -2
  375. package/dist/components/AspectRatio/index.d.ts +1 -1
  376. package/dist/components/AspectRatio/index.d.ts.map +1 -1
  377. package/dist/components/AspectRatio/index.js +1 -1
  378. package/dist/components/AutocompleteInput/AutocompleteInput.d.ts +1 -1
  379. package/dist/components/AutocompleteInput/AutocompleteInput.d.ts.map +1 -1
  380. package/dist/components/AutocompleteInput/AutocompleteInput.recipe.d.ts +1 -1
  381. package/dist/components/AutocompleteInput/AutocompleteInputItem.d.ts +1 -1
  382. package/dist/components/AutocompleteInput/AutocompleteInputItem.d.ts.map +1 -1
  383. package/dist/components/AutocompleteInput/BaseAutocompleteInput.d.ts.map +1 -1
  384. package/dist/components/AutocompleteInput/index.cjs +21 -19
  385. package/dist/components/AutocompleteInput/index.d.ts.map +1 -1
  386. package/dist/components/AutocompleteInput/index.js +17 -15
  387. package/dist/components/Avatar/Avatar.recipe.d.ts +1 -1
  388. package/dist/components/Avatar/index.cjs +5 -5
  389. package/dist/components/Avatar/index.d.ts.map +1 -1
  390. package/dist/components/Avatar/index.js +2 -2
  391. package/dist/components/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  392. package/dist/components/AvatarGroup/AvatarGroupContext.d.ts.map +1 -1
  393. package/dist/components/AvatarGroup/index.cjs +5 -5
  394. package/dist/components/AvatarGroup/index.d.ts +1 -1
  395. package/dist/components/AvatarGroup/index.d.ts.map +1 -1
  396. package/dist/components/AvatarGroup/index.js +3 -3
  397. package/dist/components/Badge/Badge.d.ts.map +1 -1
  398. package/dist/components/Badge/index.cjs +3 -3
  399. package/dist/components/Badge/index.d.ts +1 -1
  400. package/dist/components/Badge/index.d.ts.map +1 -1
  401. package/dist/components/Badge/index.js +2 -2
  402. package/dist/components/Blockquote/Blockquote.recipe.d.ts +1 -1
  403. package/dist/components/Blockquote/index.cjs +2 -2
  404. package/dist/components/Blockquote/index.d.ts +1 -1
  405. package/dist/components/Blockquote/index.d.ts.map +1 -1
  406. package/dist/components/Blockquote/index.js +1 -1
  407. package/dist/components/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  408. package/dist/components/Breadcrumbs/BreadcrumbItem.recipe.d.ts +1 -1
  409. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  410. package/dist/components/Breadcrumbs/Breadcrumbs.recipe.d.ts +1 -1
  411. package/dist/components/Breadcrumbs/index.cjs +6 -11
  412. package/dist/components/Breadcrumbs/index.d.ts +2 -2
  413. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  414. package/dist/components/Breadcrumbs/index.js +3 -8
  415. package/dist/components/Button/Button.d.ts +7 -7
  416. package/dist/components/Button/Button.d.ts.map +1 -1
  417. package/dist/components/Button/Button.recipe.d.ts +1 -1
  418. package/dist/components/Button/Button.types.d.ts +3 -0
  419. package/dist/components/Button/Button.types.d.ts.map +1 -0
  420. package/dist/components/Button/index.cjs +12 -10
  421. package/dist/components/Button/index.d.ts +1 -1
  422. package/dist/components/Button/index.d.ts.map +1 -1
  423. package/dist/components/Button/index.js +11 -9
  424. package/dist/components/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  425. package/dist/components/ButtonGroup/ButtonGroupContext.d.ts.map +1 -1
  426. package/dist/components/ButtonGroup/index.cjs +3 -3
  427. package/dist/components/ButtonGroup/index.d.ts +1 -1
  428. package/dist/components/ButtonGroup/index.d.ts.map +1 -1
  429. package/dist/components/ButtonGroup/index.js +2 -2
  430. package/dist/components/Calendar/Calendar.d.ts +16 -3
  431. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  432. package/dist/components/Calendar/Calendar.recipe.d.ts +1 -1
  433. package/dist/components/Calendar/index.cjs +14 -12
  434. package/dist/components/Calendar/index.d.ts.map +1 -1
  435. package/dist/components/Calendar/index.js +13 -11
  436. package/dist/components/Card/Card.d.ts.map +1 -1
  437. package/dist/components/Card/index.cjs +2 -2
  438. package/dist/components/Card/index.d.ts +1 -1
  439. package/dist/components/Card/index.d.ts.map +1 -1
  440. package/dist/components/Card/index.js +1 -1
  441. package/dist/components/Center/Center.d.ts.map +1 -1
  442. package/dist/components/Center/index.cjs +2 -2
  443. package/dist/components/Center/index.d.ts +1 -1
  444. package/dist/components/Center/index.d.ts.map +1 -1
  445. package/dist/components/Center/index.js +1 -1
  446. package/dist/components/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  447. package/dist/components/CheckboxInput/CheckboxInput.recipe.d.ts +1 -1
  448. package/dist/components/CheckboxInput/index.cjs +12 -11
  449. package/dist/components/CheckboxInput/index.d.ts.map +1 -1
  450. package/dist/components/CheckboxInput/index.js +11 -10
  451. package/dist/components/CodeBlock/CodeBlock.d.ts.map +1 -1
  452. package/dist/components/CodeBlock/CodeBlock.recipe.d.ts +1 -1
  453. package/dist/components/CodeBlock/index.cjs +15 -13
  454. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  455. package/dist/components/CodeBlock/index.js +14 -12
  456. package/dist/components/ContextMenu/ContextMenu.d.ts.map +1 -1
  457. package/dist/components/ContextMenu/index.cjs +18 -17
  458. package/dist/components/ContextMenu/index.d.ts.map +1 -1
  459. package/dist/components/ContextMenu/index.js +16 -15
  460. package/dist/components/DateInput/DateInput.d.ts +7 -5
  461. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  462. package/dist/components/DateInput/index.cjs +19 -17
  463. package/dist/components/DateInput/index.d.ts +1 -1
  464. package/dist/components/DateInput/index.d.ts.map +1 -1
  465. package/dist/components/DateInput/index.js +18 -16
  466. package/dist/components/DateRangeInput/DateRangeInput.d.ts +5 -5
  467. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  468. package/dist/components/DateRangeInput/index.cjs +19 -17
  469. package/dist/components/DateRangeInput/index.d.ts.map +1 -1
  470. package/dist/components/DateRangeInput/index.js +18 -16
  471. package/dist/components/DateTimeInput/DateTimeInput.d.ts +4 -4
  472. package/dist/components/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  473. package/dist/components/DateTimeInput/index.cjs +21 -19
  474. package/dist/components/DateTimeInput/index.d.ts.map +1 -1
  475. package/dist/components/DateTimeInput/index.js +20 -18
  476. package/dist/components/Dialog/Dialog.d.ts +2 -4
  477. package/dist/components/Dialog/Dialog.d.ts.map +1 -1
  478. package/dist/components/Dialog/index.cjs +5 -3
  479. package/dist/components/Dialog/index.d.ts +1 -1
  480. package/dist/components/Dialog/index.d.ts.map +1 -1
  481. package/dist/components/Dialog/index.js +3 -1
  482. package/dist/components/Dialog/useDialog.d.ts.map +1 -1
  483. package/dist/components/Divider/Divider.recipe.d.ts +1 -1
  484. package/dist/components/Divider/index.cjs +2 -2
  485. package/dist/components/Divider/index.d.ts.map +1 -1
  486. package/dist/components/Divider/index.js +1 -1
  487. package/dist/components/Drawer/Drawer.d.ts +10 -2
  488. package/dist/components/Drawer/Drawer.d.ts.map +1 -1
  489. package/dist/components/Drawer/Drawer.recipe.d.ts +63 -0
  490. package/dist/components/Drawer/Drawer.recipe.d.ts.map +1 -0
  491. package/dist/components/Drawer/index.cjs +7 -3
  492. package/dist/components/Drawer/index.d.ts +2 -2
  493. package/dist/components/Drawer/index.d.ts.map +1 -1
  494. package/dist/components/Drawer/index.js +5 -1
  495. package/dist/components/Drawer/useDrawer.d.ts.map +1 -1
  496. package/dist/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  497. package/dist/components/DropdownMenu/DropdownMenuContext.d.ts.map +1 -1
  498. package/dist/components/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  499. package/dist/components/DropdownMenu/index.cjs +19 -18
  500. package/dist/components/DropdownMenu/index.d.ts +1 -1
  501. package/dist/components/DropdownMenu/index.d.ts.map +1 -1
  502. package/dist/components/DropdownMenu/index.js +15 -14
  503. package/dist/components/DropdownMenu/menuUtils.d.ts.map +1 -1
  504. package/dist/components/DropdownMenu/types.d.ts.map +1 -1
  505. package/dist/components/EmptyState/EmptyState.d.ts.map +1 -1
  506. package/dist/components/EmptyState/EmptyState.recipe.d.ts +1 -1
  507. package/dist/components/EmptyState/index.cjs +5 -5
  508. package/dist/components/EmptyState/index.d.ts +1 -1
  509. package/dist/components/EmptyState/index.d.ts.map +1 -1
  510. package/dist/components/EmptyState/index.js +4 -4
  511. package/dist/components/Field/Field.d.ts +1 -1
  512. package/dist/components/Field/Field.d.ts.map +1 -1
  513. package/dist/components/Field/Field.recipe.d.ts +1 -1
  514. package/dist/components/Field/index.cjs +8 -8
  515. package/dist/components/Field/index.d.ts +1 -1
  516. package/dist/components/Field/index.d.ts.map +1 -1
  517. package/dist/components/Field/index.js +6 -6
  518. package/dist/components/Field/inputUtils.d.ts.map +1 -1
  519. package/dist/components/FileInput/FileInput.d.ts.map +1 -1
  520. package/dist/components/FileInput/FileInput.recipe.d.ts +66 -0
  521. package/dist/components/FileInput/FileInput.recipe.d.ts.map +1 -0
  522. package/dist/components/FileInput/index.cjs +15 -14
  523. package/dist/components/FileInput/index.d.ts +1 -1
  524. package/dist/components/FileInput/index.d.ts.map +1 -1
  525. package/dist/components/FileInput/index.js +14 -13
  526. package/dist/components/HoverCard/HoverCard.d.ts +7 -7
  527. package/dist/components/HoverCard/HoverCard.d.ts.map +1 -1
  528. package/dist/components/HoverCard/index.cjs +4 -4
  529. package/dist/components/HoverCard/index.d.ts.map +1 -1
  530. package/dist/components/HoverCard/index.js +2 -2
  531. package/dist/components/HoverCard/useHoverCard.d.ts.map +1 -1
  532. package/dist/components/Icon/index.cjs +2 -2
  533. package/dist/components/Icon/index.d.ts.map +1 -1
  534. package/dist/components/Icon/index.js +1 -1
  535. package/dist/components/InputGroup/InputGroup.d.ts.map +1 -1
  536. package/dist/components/InputGroup/InputGroup.recipe.d.ts +1 -1
  537. package/dist/components/InputGroup/InputGroup.recipe.d.ts.map +1 -1
  538. package/dist/components/InputGroup/InputGroupContext.d.ts.map +1 -1
  539. package/dist/components/InputGroup/InputGroupText.d.ts.map +1 -1
  540. package/dist/components/InputGroup/index.cjs +11 -11
  541. package/dist/components/InputGroup/index.d.ts +2 -2
  542. package/dist/components/InputGroup/index.d.ts.map +1 -1
  543. package/dist/components/InputGroup/index.js +7 -7
  544. package/dist/components/Item/Item.d.ts +1 -1
  545. package/dist/components/Item/Item.d.ts.map +1 -1
  546. package/dist/components/Item/Item.recipe.d.ts +75 -0
  547. package/dist/components/Item/Item.recipe.d.ts.map +1 -0
  548. package/dist/components/Item/index.cjs +8 -8
  549. package/dist/components/Item/index.d.ts +1 -1
  550. package/dist/components/Item/index.d.ts.map +1 -1
  551. package/dist/components/Item/index.js +7 -7
  552. package/dist/components/Kbd/Kbd.recipe.d.ts +1 -1
  553. package/dist/components/Kbd/index.cjs +2 -2
  554. package/dist/components/Kbd/index.d.ts.map +1 -1
  555. package/dist/components/Kbd/index.js +1 -1
  556. package/dist/components/Layout/Layout.d.ts +1 -1
  557. package/dist/components/Layout/Layout.d.ts.map +1 -1
  558. package/dist/components/Layout/Layout.recipe.d.ts +118 -16
  559. package/dist/components/Layout/Layout.recipe.d.ts.map +1 -1
  560. package/dist/components/Layout/LayoutContent.d.ts.map +1 -1
  561. package/dist/components/Layout/LayoutContext.d.ts +0 -7
  562. package/dist/components/Layout/LayoutContext.d.ts.map +1 -1
  563. package/dist/components/Layout/LayoutFooter.d.ts +1 -1
  564. package/dist/components/Layout/LayoutFooter.d.ts.map +1 -1
  565. package/dist/components/Layout/LayoutHeader.d.ts +6 -1
  566. package/dist/components/Layout/LayoutHeader.d.ts.map +1 -1
  567. package/dist/components/Layout/LayoutPanel.d.ts.map +1 -1
  568. package/dist/components/Layout/index.cjs +17 -15
  569. package/dist/components/Layout/index.d.ts +4 -4
  570. package/dist/components/Layout/index.d.ts.map +1 -1
  571. package/dist/components/Layout/index.js +12 -10
  572. package/dist/components/Layout/types.d.ts +4 -2
  573. package/dist/components/Layout/types.d.ts.map +1 -1
  574. package/dist/components/Lightbox/Lightbox.d.ts.map +1 -1
  575. package/dist/components/Lightbox/Lightbox.recipe.d.ts +43 -0
  576. package/dist/components/Lightbox/Lightbox.recipe.d.ts.map +1 -0
  577. package/dist/components/Lightbox/index.cjs +15 -12
  578. package/dist/components/Lightbox/index.d.ts.map +1 -1
  579. package/dist/components/Lightbox/index.js +13 -10
  580. package/dist/components/Lightbox/useLightbox.d.ts.map +1 -1
  581. package/dist/components/Link/Link.d.ts +5 -6
  582. package/dist/components/Link/Link.d.ts.map +1 -1
  583. package/dist/components/Link/Link.recipe.d.ts.map +1 -1
  584. package/dist/components/Link/LinkContext.d.ts.map +1 -1
  585. package/dist/components/Link/LinkProvider.d.ts.map +1 -1
  586. package/dist/components/Link/index.cjs +11 -8
  587. package/dist/components/Link/index.d.ts +1 -1
  588. package/dist/components/Link/index.d.ts.map +1 -1
  589. package/dist/components/Link/index.js +8 -5
  590. package/dist/components/Link/useLinkComponent.d.ts.map +1 -1
  591. package/dist/components/List/List.d.ts.map +1 -1
  592. package/dist/components/List/List.recipe.d.ts +1 -1
  593. package/dist/components/List/index.cjs +9 -10
  594. package/dist/components/List/index.d.ts.map +1 -1
  595. package/dist/components/List/index.js +7 -8
  596. package/dist/components/MetadataList/MetadataList.d.ts.map +1 -1
  597. package/dist/components/MetadataList/MetadataList.recipe.d.ts +37 -0
  598. package/dist/components/MetadataList/MetadataList.recipe.d.ts.map +1 -0
  599. package/dist/components/MetadataList/MetadataListItem.d.ts +6 -1
  600. package/dist/components/MetadataList/MetadataListItem.d.ts.map +1 -1
  601. package/dist/components/MetadataList/index.cjs +11 -7
  602. package/dist/components/MetadataList/index.d.ts +1 -1
  603. package/dist/components/MetadataList/index.d.ts.map +1 -1
  604. package/dist/components/MetadataList/index.js +9 -5
  605. package/dist/components/MultiSelect/MultiSelect.d.ts +1 -1
  606. package/dist/components/MultiSelect/MultiSelect.d.ts.map +1 -1
  607. package/dist/components/MultiSelect/MultiSelect.recipe.d.ts +41 -0
  608. package/dist/components/MultiSelect/MultiSelect.recipe.d.ts.map +1 -0
  609. package/dist/components/MultiSelect/index.cjs +18 -17
  610. package/dist/components/MultiSelect/index.d.ts.map +1 -1
  611. package/dist/components/MultiSelect/index.js +17 -16
  612. package/dist/components/NavIcon/index.cjs +2 -2
  613. package/dist/components/NavIcon/index.d.ts.map +1 -1
  614. package/dist/components/NavIcon/index.js +1 -1
  615. package/dist/components/NumberInput/NumberInput.d.ts.map +1 -1
  616. package/dist/components/NumberInput/index.cjs +16 -14
  617. package/dist/components/NumberInput/index.d.ts +1 -1
  618. package/dist/components/NumberInput/index.d.ts.map +1 -1
  619. package/dist/components/NumberInput/index.js +15 -13
  620. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  621. package/dist/components/Pagination/index.cjs +13 -11
  622. package/dist/components/Pagination/index.d.ts.map +1 -1
  623. package/dist/components/Pagination/index.js +12 -10
  624. package/dist/components/PasswordInput/PasswordInput.d.ts.map +1 -1
  625. package/dist/components/PasswordInput/index.cjs +17 -15
  626. package/dist/components/PasswordInput/index.d.ts +1 -1
  627. package/dist/components/PasswordInput/index.d.ts.map +1 -1
  628. package/dist/components/PasswordInput/index.js +16 -14
  629. package/dist/components/Popover/Popover.d.ts +21 -3
  630. package/dist/components/Popover/Popover.d.ts.map +1 -1
  631. package/dist/components/Popover/index.cjs +14 -13
  632. package/dist/components/Popover/index.d.ts.map +1 -1
  633. package/dist/components/Popover/index.js +12 -11
  634. package/dist/components/Popover/usePopover.d.ts +72 -2
  635. package/dist/components/Popover/usePopover.d.ts.map +1 -1
  636. package/dist/components/Progress/Progress.recipe.d.ts +1 -1
  637. package/dist/components/Progress/index.cjs +3 -3
  638. package/dist/components/Progress/index.d.ts +1 -1
  639. package/dist/components/Progress/index.d.ts.map +1 -1
  640. package/dist/components/Progress/index.js +2 -2
  641. package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -1
  642. package/dist/components/RadioGroup/RadioGroup.recipe.d.ts +1 -1
  643. package/dist/components/RadioGroup/index.cjs +13 -12
  644. package/dist/components/RadioGroup/index.d.ts +1 -1
  645. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  646. package/dist/components/RadioGroup/index.js +11 -10
  647. package/dist/components/Rating/Rating.d.ts.map +1 -1
  648. package/dist/components/Rating/Rating.recipe.d.ts +1 -1
  649. package/dist/components/Rating/index.cjs +4 -4
  650. package/dist/components/Rating/index.d.ts.map +1 -1
  651. package/dist/components/Rating/index.js +3 -3
  652. package/dist/components/Schedule/CalendarEvent.d.ts +20 -6
  653. package/dist/components/Schedule/CalendarEvent.d.ts.map +1 -1
  654. package/dist/components/Schedule/DayView.d.ts +7 -1
  655. package/dist/components/Schedule/DayView.d.ts.map +1 -1
  656. package/dist/components/Schedule/ListView.d.ts.map +1 -1
  657. package/dist/components/Schedule/ListView.recipe.d.ts +56 -0
  658. package/dist/components/Schedule/ListView.recipe.d.ts.map +1 -0
  659. package/dist/components/Schedule/MonthlyView.d.ts +12 -1
  660. package/dist/components/Schedule/MonthlyView.d.ts.map +1 -1
  661. package/dist/components/Schedule/MonthlyView.recipe.d.ts +47 -0
  662. package/dist/components/Schedule/MonthlyView.recipe.d.ts.map +1 -0
  663. package/dist/components/Schedule/Schedule.d.ts +2 -6
  664. package/dist/components/Schedule/Schedule.d.ts.map +1 -1
  665. package/dist/components/Schedule/Schedule.recipe.d.ts +8 -0
  666. package/dist/components/Schedule/Schedule.recipe.d.ts.map +1 -0
  667. package/dist/components/Schedule/ScheduleEvent.recipe.d.ts +208 -0
  668. package/dist/components/Schedule/ScheduleEvent.recipe.d.ts.map +1 -0
  669. package/dist/components/Schedule/TimeGridView.d.ts +7 -1
  670. package/dist/components/Schedule/TimeGridView.d.ts.map +1 -1
  671. package/dist/components/Schedule/TimeGridView.recipe.d.ts +43 -0
  672. package/dist/components/Schedule/TimeGridView.recipe.d.ts.map +1 -0
  673. package/dist/components/Schedule/WeeklyView.d.ts +7 -1
  674. package/dist/components/Schedule/WeeklyView.d.ts.map +1 -1
  675. package/dist/components/Schedule/context.d.ts +4 -8
  676. package/dist/components/Schedule/context.d.ts.map +1 -1
  677. package/dist/components/Schedule/dateMath.d.ts +1 -1
  678. package/dist/components/Schedule/dateMath.d.ts.map +1 -1
  679. package/dist/components/Schedule/index.cjs +50 -27
  680. package/dist/components/Schedule/index.d.ts +8 -4
  681. package/dist/components/Schedule/index.d.ts.map +1 -1
  682. package/dist/components/Schedule/index.js +23 -16
  683. package/dist/components/Schedule/plugins/EventMovePlugin.d.ts +23 -0
  684. package/dist/components/Schedule/plugins/EventMovePlugin.d.ts.map +1 -0
  685. package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts +31 -0
  686. package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts.map +1 -0
  687. package/dist/components/Schedule/plugins/EventResizePlugin.d.ts +24 -0
  688. package/dist/components/Schedule/plugins/EventResizePlugin.d.ts.map +1 -0
  689. package/dist/components/Schedule/plugins/PaginationPlugin.d.ts +3 -3
  690. package/dist/components/Schedule/plugins/PaginationPlugin.d.ts.map +1 -1
  691. package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts +39 -0
  692. package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts.map +1 -0
  693. package/dist/components/Schedule/plugins/ViewSelectorPlugin.d.ts.map +1 -1
  694. package/dist/components/Schedule/plugins/index.d.ts +4 -0
  695. package/dist/components/Schedule/plugins/index.d.ts.map +1 -1
  696. package/dist/components/Schedule/scheduleZonedInstant.d.ts +17 -0
  697. package/dist/components/Schedule/scheduleZonedInstant.d.ts.map +1 -0
  698. package/dist/components/Schedule/shared.d.ts +68 -22
  699. package/dist/components/Schedule/shared.d.ts.map +1 -1
  700. package/dist/components/Schedule/types.d.ts +55 -8
  701. package/dist/components/Schedule/types.d.ts.map +1 -1
  702. package/dist/components/Schedule/useCurrentTime.d.ts.map +1 -1
  703. package/dist/components/SearchFilterInput/SearchFilterInput.d.ts +1 -1
  704. package/dist/components/SearchFilterInput/SearchFilterInput.d.ts.map +1 -1
  705. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.d.ts.map +1 -1
  706. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.recipe.d.ts +4 -0
  707. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.recipe.d.ts.map +1 -0
  708. package/dist/components/SearchFilterInput/SearchFilterInputFilterEditor.d.ts.map +1 -1
  709. package/dist/components/SearchFilterInput/SearchFilterInputTag.d.ts +1 -1
  710. package/dist/components/SearchFilterInput/SearchFilterInputTag.d.ts.map +1 -1
  711. package/dist/components/SearchFilterInput/SearchFilterInputValueEditor.d.ts +1 -2
  712. package/dist/components/SearchFilterInput/SearchFilterInputValueEditor.d.ts.map +1 -1
  713. package/dist/components/SearchFilterInput/formatFilterValue.d.ts +1 -2
  714. package/dist/components/SearchFilterInput/formatFilterValue.d.ts.map +1 -1
  715. package/dist/components/SearchFilterInput/index.cjs +39 -36
  716. package/dist/components/SearchFilterInput/index.d.ts.map +1 -1
  717. package/dist/components/SearchFilterInput/index.js +31 -28
  718. package/dist/components/SearchFilterInput/internalConfig.d.ts.map +1 -1
  719. package/dist/components/SearchFilterInput/types.d.ts.map +1 -1
  720. package/dist/components/SearchFilterInput/useSearchFilterInputConfig.d.ts.map +1 -1
  721. package/dist/components/SearchFilterInput/useSearchFilterInputSource.d.ts.map +1 -1
  722. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  723. package/dist/components/SegmentedControl/SegmentedControl.recipe.d.ts +73 -0
  724. package/dist/components/SegmentedControl/SegmentedControl.recipe.d.ts.map +1 -0
  725. package/dist/components/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  726. package/dist/components/SegmentedControl/index.cjs +6 -5
  727. package/dist/components/SegmentedControl/index.d.ts +1 -1
  728. package/dist/components/SegmentedControl/index.d.ts.map +1 -1
  729. package/dist/components/SegmentedControl/index.js +4 -3
  730. package/dist/components/Select/Select.d.ts +1 -1
  731. package/dist/components/Select/Select.d.ts.map +1 -1
  732. package/dist/components/Select/Select.recipe.d.ts +1 -1
  733. package/dist/components/Select/SelectOption.d.ts.map +1 -1
  734. package/dist/components/Select/index.cjs +19 -18
  735. package/dist/components/Select/index.d.ts +1 -1
  736. package/dist/components/Select/index.d.ts.map +1 -1
  737. package/dist/components/Select/index.js +17 -16
  738. package/dist/components/SideNav/SideNav.d.ts.map +1 -1
  739. package/dist/components/SideNav/SideNav.recipe.d.ts +26 -7
  740. package/dist/components/SideNav/SideNav.recipe.d.ts.map +1 -1
  741. package/dist/components/SideNav/SideNavHeading.d.ts.map +1 -1
  742. package/dist/components/SideNav/SideNavItem.d.ts.map +1 -1
  743. package/dist/components/SideNav/SideNavItem.recipe.d.ts +51 -0
  744. package/dist/components/SideNav/SideNavItem.recipe.d.ts.map +1 -0
  745. package/dist/components/SideNav/SideNavSection.d.ts.map +1 -1
  746. package/dist/components/SideNav/index.cjs +22 -18
  747. package/dist/components/SideNav/index.d.ts +3 -3
  748. package/dist/components/SideNav/index.d.ts.map +1 -1
  749. package/dist/components/SideNav/index.js +16 -12
  750. package/dist/components/Skeleton/index.cjs +2 -2
  751. package/dist/components/Skeleton/index.d.ts +1 -1
  752. package/dist/components/Skeleton/index.d.ts.map +1 -1
  753. package/dist/components/Skeleton/index.js +1 -1
  754. package/dist/components/Slider/Slider.d.ts.map +1 -1
  755. package/dist/components/Slider/Slider.recipe.d.ts +1 -1
  756. package/dist/components/Slider/index.cjs +8 -8
  757. package/dist/components/Slider/index.d.ts.map +1 -1
  758. package/dist/components/Slider/index.js +7 -7
  759. package/dist/components/Spinner/Spinner.d.ts +1 -4
  760. package/dist/components/Spinner/Spinner.d.ts.map +1 -1
  761. package/dist/components/Spinner/Spinner.types.d.ts +3 -0
  762. package/dist/components/Spinner/Spinner.types.d.ts.map +1 -0
  763. package/dist/components/Spinner/index.cjs +5 -5
  764. package/dist/components/Spinner/index.d.ts.map +1 -1
  765. package/dist/components/Spinner/index.js +4 -4
  766. package/dist/components/SplitButton/SplitButton.d.ts.map +1 -1
  767. package/dist/components/SplitButton/index.cjs +18 -17
  768. package/dist/components/SplitButton/index.d.ts +1 -1
  769. package/dist/components/SplitButton/index.d.ts.map +1 -1
  770. package/dist/components/SplitButton/index.js +17 -16
  771. package/dist/components/Stack/HStack.d.ts.map +1 -1
  772. package/dist/components/Stack/VStack.d.ts.map +1 -1
  773. package/dist/components/Stack/index.cjs +3 -3
  774. package/dist/components/Stack/index.d.ts.map +1 -1
  775. package/dist/components/Stack/index.js +1 -1
  776. package/dist/components/Stack/internal/Stack.d.ts.map +1 -1
  777. package/dist/components/Stepper/Stepper.d.ts +55 -11
  778. package/dist/components/Stepper/Stepper.d.ts.map +1 -1
  779. package/dist/components/Stepper/index.cjs +7 -14
  780. package/dist/components/Stepper/index.d.ts +2 -3
  781. package/dist/components/Stepper/index.d.ts.map +1 -1
  782. package/dist/components/Stepper/index.js +6 -5
  783. package/dist/components/Stepper/internal/Step.d.ts +36 -0
  784. package/dist/components/Stepper/internal/Step.d.ts.map +1 -0
  785. package/dist/components/Stepper/internal/Step.recipe.d.ts +164 -0
  786. package/dist/components/Stepper/internal/Step.recipe.d.ts.map +1 -0
  787. package/dist/components/Switch/Switch.d.ts.map +1 -1
  788. package/dist/components/Switch/Switch.recipe.d.ts +1 -1
  789. package/dist/components/Switch/index.cjs +9 -9
  790. package/dist/components/Switch/index.d.ts.map +1 -1
  791. package/dist/components/Switch/index.js +8 -8
  792. package/dist/components/Table/Table.d.ts +45 -3
  793. package/dist/components/Table/Table.d.ts.map +1 -1
  794. package/dist/components/Table/Table.recipe.d.ts +156 -0
  795. package/dist/components/Table/Table.recipe.d.ts.map +1 -0
  796. package/dist/components/Table/TableCell.d.ts.map +1 -1
  797. package/dist/components/Table/TableContext.d.ts.map +1 -1
  798. package/dist/components/Table/TableHeaderCell.d.ts.map +1 -1
  799. package/dist/components/Table/TableRow.d.ts.map +1 -1
  800. package/dist/components/Table/columnUtils.d.ts.map +1 -1
  801. package/dist/components/Table/index.cjs +61 -66
  802. package/dist/components/Table/index.d.ts +2 -4
  803. package/dist/components/Table/index.d.ts.map +1 -1
  804. package/dist/components/Table/index.js +35 -32
  805. package/dist/components/Table/plugins/columnResize/index.d.ts.map +1 -1
  806. package/dist/components/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
  807. package/dist/components/Table/plugins/columnSettings/index.d.ts.map +1 -1
  808. package/dist/components/Table/plugins/columnSettings/useTableColumnSettings.d.ts +1 -1
  809. package/dist/components/Table/plugins/columnSettings/useTableColumnSettings.d.ts.map +1 -1
  810. package/dist/components/Table/plugins/columnSettings/useTableColumnSettingsState.d.ts.map +1 -1
  811. package/dist/components/Table/plugins/filtering/index.d.ts.map +1 -1
  812. package/dist/components/Table/plugins/filtering/useTableFilterState.d.ts.map +1 -1
  813. package/dist/components/Table/plugins/filtering/useTableFiltering.d.ts +1 -1
  814. package/dist/components/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
  815. package/dist/components/Table/plugins/pagination/index.d.ts +1 -1
  816. package/dist/components/Table/plugins/pagination/index.d.ts.map +1 -1
  817. package/dist/components/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
  818. package/dist/components/Table/plugins/selection/index.d.ts.map +1 -1
  819. package/dist/components/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
  820. package/dist/components/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
  821. package/dist/components/Table/plugins/sortable/index.d.ts.map +1 -1
  822. package/dist/components/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
  823. package/dist/components/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
  824. package/dist/components/Table/types.d.ts +1 -18
  825. package/dist/components/Table/types.d.ts.map +1 -1
  826. package/dist/components/Table/useBaseTablePlugins.d.ts +1 -1
  827. package/dist/components/Table/useBaseTablePlugins.d.ts.map +1 -1
  828. package/dist/components/Tabs/Tab.d.ts.map +1 -1
  829. package/dist/components/Tabs/TabMenu.d.ts.map +1 -1
  830. package/dist/components/Tabs/TabMenu.recipe.d.ts +21 -0
  831. package/dist/components/Tabs/TabMenu.recipe.d.ts.map +1 -0
  832. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  833. package/dist/components/Tabs/Tabs.recipe.d.ts +65 -0
  834. package/dist/components/Tabs/Tabs.recipe.d.ts.map +1 -0
  835. package/dist/components/Tabs/index.cjs +18 -17
  836. package/dist/components/Tabs/index.d.ts +1 -1
  837. package/dist/components/Tabs/index.d.ts.map +1 -1
  838. package/dist/components/Tabs/index.js +13 -12
  839. package/dist/components/Tag/Tag.d.ts.map +1 -1
  840. package/dist/components/Tag/Tag.recipe.d.ts +1 -1
  841. package/dist/components/Tag/index.cjs +10 -7
  842. package/dist/components/Tag/index.d.ts +1 -1
  843. package/dist/components/Tag/index.d.ts.map +1 -1
  844. package/dist/components/Tag/index.js +9 -6
  845. package/dist/components/TagsInput/TagsInput.d.ts +49 -7
  846. package/dist/components/TagsInput/TagsInput.d.ts.map +1 -1
  847. package/dist/components/TagsInput/TagsInput.recipe.d.ts +45 -0
  848. package/dist/components/TagsInput/TagsInput.recipe.d.ts.map +1 -0
  849. package/dist/components/TagsInput/index.cjs +19 -17
  850. package/dist/components/TagsInput/index.d.ts.map +1 -1
  851. package/dist/components/TagsInput/index.js +18 -16
  852. package/dist/components/Text/Heading.d.ts +6 -6
  853. package/dist/components/Text/Heading.d.ts.map +1 -1
  854. package/dist/components/Text/Text.d.ts +5 -5
  855. package/dist/components/Text/Text.d.ts.map +1 -1
  856. package/dist/components/Text/index.cjs +5 -5
  857. package/dist/components/Text/index.d.ts.map +1 -1
  858. package/dist/components/Text/index.js +3 -3
  859. package/dist/components/TextArea/TextArea.d.ts.map +1 -1
  860. package/dist/components/TextArea/index.cjs +10 -10
  861. package/dist/components/TextArea/index.d.ts.map +1 -1
  862. package/dist/components/TextArea/index.js +9 -9
  863. package/dist/components/TextInput/TextInput.d.ts +5 -0
  864. package/dist/components/TextInput/TextInput.d.ts.map +1 -1
  865. package/dist/components/TextInput/index.cjs +16 -14
  866. package/dist/components/TextInput/index.d.ts +1 -1
  867. package/dist/components/TextInput/index.d.ts.map +1 -1
  868. package/dist/components/TextInput/index.js +15 -13
  869. package/dist/components/Theme/index.cjs +2 -2
  870. package/dist/components/Theme/index.d.ts.map +1 -1
  871. package/dist/components/Theme/index.js +1 -1
  872. package/dist/components/Thumbnail/Thumbnail.recipe.d.ts +1 -1
  873. package/dist/components/Thumbnail/index.cjs +14 -12
  874. package/dist/components/Thumbnail/index.d.ts.map +1 -1
  875. package/dist/components/Thumbnail/index.js +13 -11
  876. package/dist/components/TimeInput/TimeInput.d.ts +3 -3
  877. package/dist/components/TimeInput/TimeInput.d.ts.map +1 -1
  878. package/dist/components/TimeInput/index.cjs +15 -13
  879. package/dist/components/TimeInput/index.d.ts +1 -1
  880. package/dist/components/TimeInput/index.d.ts.map +1 -1
  881. package/dist/components/TimeInput/index.js +14 -12
  882. package/dist/components/Toast/Toast.d.ts +1 -1
  883. package/dist/components/Toast/Toast.d.ts.map +1 -1
  884. package/dist/components/Toast/Toast.recipe.d.ts +1 -1
  885. package/dist/components/Toast/ToastContext.d.ts.map +1 -1
  886. package/dist/components/Toast/ToastViewport.d.ts.map +1 -1
  887. package/dist/components/Toast/index.cjs +15 -13
  888. package/dist/components/Toast/index.d.ts.map +1 -1
  889. package/dist/components/Toast/index.js +12 -10
  890. package/dist/components/Toast/useToast.d.ts.map +1 -1
  891. package/dist/components/ToggleButton/ToggleButton.d.ts +2 -6
  892. package/dist/components/ToggleButton/ToggleButton.d.ts.map +1 -1
  893. package/dist/components/ToggleButton/ToggleButton.recipe.d.ts +20 -0
  894. package/dist/components/ToggleButton/ToggleButton.recipe.d.ts.map +1 -0
  895. package/dist/components/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  896. package/dist/components/ToggleButton/index.cjs +8 -8
  897. package/dist/components/ToggleButton/index.d.ts +1 -1
  898. package/dist/components/ToggleButton/index.d.ts.map +1 -1
  899. package/dist/components/ToggleButton/index.js +6 -6
  900. package/dist/components/Tooltip/Tooltip.d.ts +7 -7
  901. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  902. package/dist/components/Tooltip/index.cjs +4 -4
  903. package/dist/components/Tooltip/index.d.ts +1 -1
  904. package/dist/components/Tooltip/index.d.ts.map +1 -1
  905. package/dist/components/Tooltip/index.js +2 -2
  906. package/dist/components/Tooltip/useTooltip.d.ts.map +1 -1
  907. package/dist/components/TopNav/TopNav.d.ts.map +1 -1
  908. package/dist/components/TopNav/TopNav.recipe.d.ts +11 -5
  909. package/dist/components/TopNav/TopNav.recipe.d.ts.map +1 -1
  910. package/dist/components/TopNav/TopNavContext.d.ts +0 -2
  911. package/dist/components/TopNav/TopNavContext.d.ts.map +1 -1
  912. package/dist/components/TopNav/TopNavHeading.d.ts.map +1 -1
  913. package/dist/components/TopNav/TopNavHeading.recipe.d.ts +4 -0
  914. package/dist/components/TopNav/TopNavHeading.recipe.d.ts.map +1 -0
  915. package/dist/components/TopNav/TopNavItem.d.ts +13 -8
  916. package/dist/components/TopNav/TopNavItem.d.ts.map +1 -1
  917. package/dist/components/TopNav/index.cjs +21 -21
  918. package/dist/components/TopNav/index.d.ts +2 -2
  919. package/dist/components/TopNav/index.d.ts.map +1 -1
  920. package/dist/components/TopNav/index.js +16 -12
  921. package/dist/components/TreeView/TreeView.d.ts.map +1 -1
  922. package/dist/components/TreeView/TreeView.recipe.d.ts +4 -0
  923. package/dist/components/TreeView/TreeView.recipe.d.ts.map +1 -0
  924. package/dist/components/TreeView/TreeViewBranches.d.ts.map +1 -1
  925. package/dist/components/TreeView/TreeViewBranches.recipe.d.ts +4 -0
  926. package/dist/components/TreeView/TreeViewBranches.recipe.d.ts.map +1 -0
  927. package/dist/components/TreeView/TreeViewItem.d.ts +1 -5
  928. package/dist/components/TreeView/TreeViewItem.d.ts.map +1 -1
  929. package/dist/components/TreeView/TreeViewItem.recipe.d.ts +84 -0
  930. package/dist/components/TreeView/TreeViewItem.recipe.d.ts.map +1 -0
  931. package/dist/components/TreeView/index.cjs +5 -3
  932. package/dist/components/TreeView/index.d.ts +1 -1
  933. package/dist/components/TreeView/index.d.ts.map +1 -1
  934. package/dist/components/TreeView/index.js +4 -2
  935. package/dist/index.cjs +290 -289
  936. package/dist/index.cjs.map +1 -1
  937. package/dist/index.d.ts +7 -7
  938. package/dist/index.d.ts.map +1 -1
  939. package/dist/index.js +88 -83
  940. package/dist/index.js.map +1 -1
  941. package/dist/internal/ActionElement.d.ts +45 -0
  942. package/dist/internal/ActionElement.d.ts.map +1 -0
  943. package/dist/internal/HoverLayerTrigger.d.ts +3 -4
  944. package/dist/internal/HoverLayerTrigger.d.ts.map +1 -1
  945. package/dist/internal/MobileNav/MobileNav.d.ts.map +1 -1
  946. package/dist/internal/MobileNav/index.d.ts +2 -2
  947. package/dist/internal/MobileNav/index.d.ts.map +1 -1
  948. package/dist/internal/dismissBehavior.d.ts +18 -0
  949. package/dist/internal/dismissBehavior.d.ts.map +1 -0
  950. package/dist/internal/index.d.ts +1 -1
  951. package/dist/internal/index.d.ts.map +1 -1
  952. package/dist/internal/parseDateInput.d.ts.map +1 -1
  953. package/dist/internal/plainDate.d.ts.map +1 -1
  954. package/dist/internal/shallowEqual.d.ts +7 -0
  955. package/dist/internal/shallowEqual.d.ts.map +1 -0
  956. package/dist/internal/useBackdropDismiss.d.ts +16 -0
  957. package/dist/internal/useBackdropDismiss.d.ts.map +1 -0
  958. package/dist/internal/useConstant.d.ts +8 -0
  959. package/dist/internal/useConstant.d.ts.map +1 -0
  960. package/dist/internal/useHoverLayer.d.ts.map +1 -1
  961. package/dist/internal/useLatest.d.ts +5 -0
  962. package/dist/internal/useLatest.d.ts.map +1 -0
  963. package/dist/internal/useLayer.d.ts +67 -2
  964. package/dist/internal/useLayer.d.ts.map +1 -1
  965. package/dist/internal/useScrollLock.d.ts +8 -0
  966. package/dist/internal/useScrollLock.d.ts.map +1 -0
  967. package/dist/internal/useSelectListbox.d.ts +5 -5
  968. package/dist/internal/useSelectListbox.d.ts.map +1 -1
  969. package/dist/internal/useShallowEqualMemo.d.ts +13 -0
  970. package/dist/internal/useShallowEqualMemo.d.ts.map +1 -0
  971. package/dist/styles.css +1 -1
  972. package/dist/themes/presets.d.ts.map +1 -1
  973. package/package.json +3 -2
  974. package/dist/chunk-2LABTS4P.js.map +0 -1
  975. package/dist/chunk-2N6FOSNM.js.map +0 -1
  976. package/dist/chunk-2OXKEUKG.cjs.map +0 -1
  977. package/dist/chunk-2P6D43V2.cjs.map +0 -1
  978. package/dist/chunk-2RKMG2TC.js.map +0 -1
  979. package/dist/chunk-2XAA3CM5.js.map +0 -1
  980. package/dist/chunk-3CJC4QE6.js.map +0 -1
  981. package/dist/chunk-3JPUXC5U.js.map +0 -1
  982. package/dist/chunk-3ZV3EGGK.cjs.map +0 -1
  983. package/dist/chunk-4H7X5FGX.js.map +0 -1
  984. package/dist/chunk-52WQDDWQ.js.map +0 -1
  985. package/dist/chunk-5D2OR64D.cjs.map +0 -1
  986. package/dist/chunk-5PX76QOL.cjs +0 -203
  987. package/dist/chunk-5PX76QOL.cjs.map +0 -1
  988. package/dist/chunk-5YS43PSQ.cjs.map +0 -1
  989. package/dist/chunk-6ONAGCCZ.js.map +0 -1
  990. package/dist/chunk-6XWXBXYE.js.map +0 -1
  991. package/dist/chunk-7BSFKG7N.js.map +0 -1
  992. package/dist/chunk-7CCXHH6Y.cjs.map +0 -1
  993. package/dist/chunk-7U7JMRVF.cjs.map +0 -1
  994. package/dist/chunk-AFI4V7LI.js.map +0 -1
  995. package/dist/chunk-AHVHLNHU.cjs.map +0 -1
  996. package/dist/chunk-AJ6X62AI.js.map +0 -1
  997. package/dist/chunk-AP7BDTTF.js.map +0 -1
  998. package/dist/chunk-BLRWA445.cjs.map +0 -1
  999. package/dist/chunk-BSAZRW6T.js.map +0 -1
  1000. package/dist/chunk-C6EYCIKJ.cjs.map +0 -1
  1001. package/dist/chunk-C732WXKS.cjs.map +0 -1
  1002. package/dist/chunk-CGYZ6QWY.js +0 -142
  1003. package/dist/chunk-CGYZ6QWY.js.map +0 -1
  1004. package/dist/chunk-CK3UJQRI.cjs.map +0 -1
  1005. package/dist/chunk-CKTXDIH4.cjs +0 -2029
  1006. package/dist/chunk-CKTXDIH4.cjs.map +0 -1
  1007. package/dist/chunk-D3LZQ5QS.js.map +0 -1
  1008. package/dist/chunk-DIRVAHOF.cjs.map +0 -1
  1009. package/dist/chunk-DVGLYE3G.cjs +0 -287
  1010. package/dist/chunk-DVGLYE3G.cjs.map +0 -1
  1011. package/dist/chunk-DWUEPOYH.js.map +0 -1
  1012. package/dist/chunk-E2A3GJSN.cjs.map +0 -1
  1013. package/dist/chunk-EALKX3ST.cjs +0 -526
  1014. package/dist/chunk-EALKX3ST.cjs.map +0 -1
  1015. package/dist/chunk-EBDODJ5X.js.map +0 -1
  1016. package/dist/chunk-FB245S6T.cjs.map +0 -1
  1017. package/dist/chunk-FDZQPWFZ.cjs.map +0 -1
  1018. package/dist/chunk-FMLIYHDP.js.map +0 -1
  1019. package/dist/chunk-FNOUX5T2.cjs +0 -145
  1020. package/dist/chunk-FNOUX5T2.cjs.map +0 -1
  1021. package/dist/chunk-FNZOICR4.cjs.map +0 -1
  1022. package/dist/chunk-FP5E5BUM.js.map +0 -1
  1023. package/dist/chunk-G2U2W422.js.map +0 -1
  1024. package/dist/chunk-G2WW52GO.cjs.map +0 -1
  1025. package/dist/chunk-G3KKLGZU.cjs.map +0 -1
  1026. package/dist/chunk-GC5VUTUR.cjs.map +0 -1
  1027. package/dist/chunk-GL7PSN7H.cjs.map +0 -1
  1028. package/dist/chunk-GYVWTH3U.cjs.map +0 -1
  1029. package/dist/chunk-H2CZ6IE5.cjs.map +0 -1
  1030. package/dist/chunk-H7HQYBPH.js +0 -2017
  1031. package/dist/chunk-H7HQYBPH.js.map +0 -1
  1032. package/dist/chunk-HINS4GY6.js.map +0 -1
  1033. package/dist/chunk-HNZWPIJE.js.map +0 -1
  1034. package/dist/chunk-IA5GII7N.cjs.map +0 -1
  1035. package/dist/chunk-J5IRFGUP.js.map +0 -1
  1036. package/dist/chunk-JDAJ2HJQ.js.map +0 -1
  1037. package/dist/chunk-JIVYPJKO.js.map +0 -1
  1038. package/dist/chunk-JJ324PSZ.cjs.map +0 -1
  1039. package/dist/chunk-JTFNNEWR.cjs.map +0 -1
  1040. package/dist/chunk-JYVYCU22.cjs.map +0 -1
  1041. package/dist/chunk-KXIILLQD.cjs.map +0 -1
  1042. package/dist/chunk-L6VSBBPP.js.map +0 -1
  1043. package/dist/chunk-LNT2IFOA.js.map +0 -1
  1044. package/dist/chunk-LO5NZY7N.cjs.map +0 -1
  1045. package/dist/chunk-LQIZSE3O.js.map +0 -1
  1046. package/dist/chunk-LUQVSNQL.cjs.map +0 -1
  1047. package/dist/chunk-LY6Z6A54.js.map +0 -1
  1048. package/dist/chunk-M26XECB2.cjs.map +0 -1
  1049. package/dist/chunk-M2MC3E27.cjs.map +0 -1
  1050. package/dist/chunk-MI5QU37D.js.map +0 -1
  1051. package/dist/chunk-N2TNBDQI.js.map +0 -1
  1052. package/dist/chunk-NFABMGNH.js.map +0 -1
  1053. package/dist/chunk-NHXJVSZZ.cjs.map +0 -1
  1054. package/dist/chunk-O2WICOUK.cjs.map +0 -1
  1055. package/dist/chunk-O32BKXTR.cjs.map +0 -1
  1056. package/dist/chunk-OBWWRRL6.cjs.map +0 -1
  1057. package/dist/chunk-PIZMCOKL.js.map +0 -1
  1058. package/dist/chunk-PQEFVHJZ.cjs.map +0 -1
  1059. package/dist/chunk-QATCDVZ6.cjs.map +0 -1
  1060. package/dist/chunk-QOKEU3DC.cjs.map +0 -1
  1061. package/dist/chunk-QRFDPG34.js.map +0 -1
  1062. package/dist/chunk-QSEDH7T2.js.map +0 -1
  1063. package/dist/chunk-QVNDZZS6.cjs.map +0 -1
  1064. package/dist/chunk-QY6OMQW6.js +0 -285
  1065. package/dist/chunk-QY6OMQW6.js.map +0 -1
  1066. package/dist/chunk-R6CMJMIJ.js +0 -200
  1067. package/dist/chunk-R6CMJMIJ.js.map +0 -1
  1068. package/dist/chunk-RDNMAV5B.js.map +0 -1
  1069. package/dist/chunk-RLOGQBFD.js.map +0 -1
  1070. package/dist/chunk-S7INL5NI.js.map +0 -1
  1071. package/dist/chunk-SBOXHIES.js.map +0 -1
  1072. package/dist/chunk-SOCSUNIM.js.map +0 -1
  1073. package/dist/chunk-SSAYBCAD.js.map +0 -1
  1074. package/dist/chunk-SSOAZZNR.cjs.map +0 -1
  1075. package/dist/chunk-SUH62Z64.js.map +0 -1
  1076. package/dist/chunk-TBOQTPRO.cjs.map +0 -1
  1077. package/dist/chunk-TF7XVTSP.cjs.map +0 -1
  1078. package/dist/chunk-TPB53MHV.cjs.map +0 -1
  1079. package/dist/chunk-U6NH54YD.js.map +0 -1
  1080. package/dist/chunk-UKW2C5RN.js +0 -450
  1081. package/dist/chunk-UKW2C5RN.js.map +0 -1
  1082. package/dist/chunk-UUVLEOSD.js.map +0 -1
  1083. package/dist/chunk-VFGSNR35.js.map +0 -1
  1084. package/dist/chunk-VHKA25IV.cjs.map +0 -1
  1085. package/dist/chunk-VK4O6W2K.cjs +0 -454
  1086. package/dist/chunk-VK4O6W2K.cjs.map +0 -1
  1087. package/dist/chunk-VQ7U3ASC.js.map +0 -1
  1088. package/dist/chunk-VUCMGGU5.js.map +0 -1
  1089. package/dist/chunk-W3C6QQF7.js.map +0 -1
  1090. package/dist/chunk-WBGFFP3G.js.map +0 -1
  1091. package/dist/chunk-WOIWI2UO.js.map +0 -1
  1092. package/dist/chunk-X574M2JB.cjs.map +0 -1
  1093. package/dist/chunk-XLKXFJMU.cjs.map +0 -1
  1094. package/dist/chunk-XXBA3KSH.cjs.map +0 -1
  1095. package/dist/chunk-YHBYVERE.cjs +0 -374
  1096. package/dist/chunk-YHBYVERE.cjs.map +0 -1
  1097. package/dist/chunk-YVHWOKR7.cjs.map +0 -1
  1098. package/dist/chunk-YWGYN6YV.cjs.map +0 -1
  1099. package/dist/chunk-YY6KJO5Z.cjs.map +0 -1
  1100. package/dist/chunk-YYNWZRXZ.js.map +0 -1
  1101. package/dist/chunk-Z4TZAJS3.js.map +0 -1
  1102. package/dist/chunk-ZAX2UJBC.js.map +0 -1
  1103. package/dist/chunk-ZFBQ4R7M.cjs.map +0 -1
  1104. package/dist/chunk-ZQUPAIBS.js.map +0 -1
  1105. package/dist/chunk-ZTWBG2XY.cjs.map +0 -1
  1106. package/dist/components/Schedule/zonedDateTime.d.ts +0 -14
  1107. package/dist/components/Schedule/zonedDateTime.d.ts.map +0 -1
  1108. package/dist/components/Stepper/Step.d.ts +0 -62
  1109. package/dist/components/Stepper/Step.d.ts.map +0 -1
  1110. package/dist/components/Stepper/Step.recipe.d.ts +0 -95
  1111. package/dist/components/Stepper/Step.recipe.d.ts.map +0 -1
  1112. package/dist/components/Stepper/StepperContext.d.ts +0 -10
  1113. package/dist/components/Stepper/StepperContext.d.ts.map +0 -1
  1114. package/dist/components/Table/BaseTable.d.ts +0 -6
  1115. package/dist/components/Table/BaseTable.d.ts.map +0 -1
  1116. package/dist/theme/generate-color-scale.d.ts +0 -6
  1117. package/dist/theme/generate-color-scale.d.ts.map +0 -1
@@ -0,0 +1,3525 @@
1
+ import { ToggleButtonGroup, ToggleButton } from './chunk-XTLNUYCK.js';
2
+ import { MetadataList, MetadataListItem } from './chunk-WAWHHXSR.js';
3
+ import { DropdownMenu, DropdownMenuItem } from './chunk-C6EWA3H2.js';
4
+ import { ButtonGroup } from './chunk-D3CHBU46.js';
5
+ import { plainDateToInstant, plainDateFromInstant, plainDateIsEqual, plainDateFormat, DATE_FORMAT_WITH_WEEKDAY, DATE_FORMAT_MONTH_YEAR, plainDateIsBefore, plainDateIsAfter, plainDateDayOfWeek } from './chunk-5HPXUDX6.js';
6
+ import { getBrowserTimezoneID, nowEpochMilliseconds } from './chunk-OX4ZMUF4.js';
7
+ import { Layout, LayoutHeader, LayoutFooter, LayoutContent } from './chunk-6I5QWA6A.js';
8
+ import { Popover, usePopover } from './chunk-JHMUMJF3.js';
9
+ import { Link } from './chunk-S4WWBV4N.js';
10
+ import { Button } from './chunk-HMJINNXZ.js';
11
+ import { Spinner } from './chunk-QHXI2QDK.js';
12
+ import { Text, Heading } from './chunk-NXTDP6AX.js';
13
+ import { Tooltip } from './chunk-KWZMXX4F.js';
14
+ import { useLatest_default } from './chunk-KEPCKSDE.js';
15
+ import { isReactNode } from './chunk-2PSZAWLC.js';
16
+ import { Icon } from './chunk-IUW777WZ.js';
17
+ import { sva } from './chunk-IAVZKGZS.js';
18
+ import { cva } from './chunk-FMEIPGUP.js';
19
+ import { css } from './chunk-OD4DHHZH.js';
20
+ import { cx } from './chunk-PPNETWIP.js';
21
+ import { Temporal } from '@js-temporal/polyfill';
22
+ import { createContext, use, useRef, useCallback, useMemo, useState, Suspense, useSyncExternalStore } from 'react';
23
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
24
+ import { Pencil, Trash2, X, CalendarDays, MapPin, AlignLeft, Tag, ChevronLeft, ChevronRight, Check } from 'lucide-react';
25
+
26
+ var DATE_ONLY_RE = /^\d{4}-\d{2}-\d{2}$/;
27
+ function createEventFromISO({
28
+ category,
29
+ end,
30
+ id,
31
+ start,
32
+ title
33
+ }) {
34
+ if (DATE_ONLY_RE.test(start) && DATE_ONLY_RE.test(end)) {
35
+ return {
36
+ category,
37
+ end: Temporal.PlainDate.from(end),
38
+ id,
39
+ start: Temporal.PlainDate.from(start),
40
+ title
41
+ };
42
+ }
43
+ return {
44
+ category,
45
+ end: Temporal.Instant.from(end).epochMilliseconds,
46
+ id,
47
+ start: Temporal.Instant.from(start).epochMilliseconds,
48
+ title
49
+ };
50
+ }
51
+
52
+ // src/components/Schedule/ScheduleEvent.recipe.ts
53
+ var scheduleEventRecipe = sva({
54
+ slots: ["event", "dot", "time", "title"],
55
+ base: {
56
+ event: {
57
+ borderWidth: "default",
58
+ borderStyle: "solid",
59
+ borderColor: "var(--schedule-event-border)",
60
+ borderRadius: "sm",
61
+ overflow: "hidden",
62
+ px: "1",
63
+ py: "0.5",
64
+ fontSize: "xs",
65
+ lineHeight: "tight",
66
+ bg: "var(--schedule-event-bg)",
67
+ color: "var(--schedule-event-fg)",
68
+ _hover: {
69
+ bg: "var(--schedule-event-bg-hover)"
70
+ },
71
+ // Active state: the pill's popover is open. Interactive pills carry
72
+ // `aria-expanded`, so this only matches the open trigger. The outline uses
73
+ // the category accent color and composes cleanly with the color/past
74
+ // background overrides.
75
+ '&[aria-expanded="true"]': {
76
+ outlineWidth: "focus",
77
+ outlineStyle: "solid",
78
+ outlineColor: "var(--schedule-event-dot)",
79
+ outlineOffset: "1px"
80
+ },
81
+ '&[data-state="past"]': {
82
+ "--schedule-event-bg": "color-mix(in srgb, var(--schedule-event-dot) 10%, token(colors.bg))",
83
+ "--schedule-event-bg-hover": "color-mix(in srgb, var(--schedule-event-dot) 14%, token(colors.bg))",
84
+ "--schedule-event-border": "color-mix(in srgb, var(--schedule-event-dot) 48%, token(colors.border))",
85
+ "--schedule-event-fg": "color-mix(in srgb, var(--schedule-event-fg-base) 52%, token(colors.fg.muted))"
86
+ }
87
+ },
88
+ dot: {
89
+ display: "inline-block",
90
+ w: "2",
91
+ h: "2",
92
+ borderRadius: "full",
93
+ bg: "var(--schedule-event-dot)",
94
+ flexShrink: 0
95
+ },
96
+ time: {
97
+ flexShrink: 0,
98
+ fontWeight: "normal"
99
+ },
100
+ title: {
101
+ fontWeight: "bold",
102
+ overflow: "hidden",
103
+ textOverflow: "ellipsis",
104
+ whiteSpace: "nowrap"
105
+ }
106
+ },
107
+ variants: {
108
+ layout: {
109
+ inline: {
110
+ event: {
111
+ display: "inline-flex",
112
+ alignItems: "baseline",
113
+ gap: "1",
114
+ maxW: "full",
115
+ textOverflow: "ellipsis",
116
+ whiteSpace: "nowrap",
117
+ fontWeight: "medium"
118
+ }
119
+ },
120
+ block: {
121
+ event: {
122
+ position: "absolute",
123
+ display: "flex",
124
+ flexDirection: "column",
125
+ gap: 0,
126
+ minH: "9",
127
+ minW: 0
128
+ },
129
+ time: {
130
+ overflow: "hidden",
131
+ textOverflow: "ellipsis",
132
+ whiteSpace: "nowrap"
133
+ }
134
+ }
135
+ },
136
+ // Full-width pill used by the month overlay where the span sizes the cell.
137
+ isFullWidth: {
138
+ true: { event: { w: "full" } },
139
+ false: {}
140
+ },
141
+ // Applied when the pill is rendered as a clickable <button> trigger (event
142
+ // popover plugin). Resets user-agent button styling so the pill looks
143
+ // identical to its static <span> form.
144
+ isInteractive: {
145
+ true: {
146
+ event: {
147
+ appearance: "none",
148
+ textAlign: "inherit",
149
+ font: "inherit",
150
+ m: 0,
151
+ cursor: "pointer",
152
+ _focusVisible: {
153
+ outlineWidth: "focus",
154
+ outlineStyle: "solid",
155
+ outlineColor: "primary"
156
+ }
157
+ }
158
+ },
159
+ false: {}
160
+ },
161
+ color: {
162
+ blue: {
163
+ event: {
164
+ "--schedule-event-bg": "token(colors.surface.blue)",
165
+ "--schedule-event-bg-hover": "token(colors.surface.blue.hover)",
166
+ "--schedule-event-border": "token(colors.surface.blue.accent)",
167
+ "--schedule-event-fg": "token(colors.surface.blue.fg)",
168
+ "--schedule-event-fg-base": "token(colors.surface.blue.fg)",
169
+ "--schedule-event-dot": "token(colors.surface.blue.accent)"
170
+ },
171
+ dot: { "--schedule-event-dot": "token(colors.surface.blue.accent)" }
172
+ },
173
+ cyan: {
174
+ event: {
175
+ "--schedule-event-bg": "token(colors.surface.cyan)",
176
+ "--schedule-event-bg-hover": "token(colors.surface.cyan.hover)",
177
+ "--schedule-event-border": "token(colors.surface.cyan.accent)",
178
+ "--schedule-event-fg": "token(colors.surface.cyan.fg)",
179
+ "--schedule-event-fg-base": "token(colors.surface.cyan.fg)",
180
+ "--schedule-event-dot": "token(colors.surface.cyan.accent)"
181
+ },
182
+ dot: { "--schedule-event-dot": "token(colors.surface.cyan.accent)" }
183
+ },
184
+ gray: {
185
+ event: {
186
+ "--schedule-event-bg": "token(colors.surface.gray)",
187
+ "--schedule-event-bg-hover": "token(colors.surface.gray.hover)",
188
+ "--schedule-event-border": "token(colors.surface.gray.accent)",
189
+ "--schedule-event-fg": "token(colors.surface.gray.fg)",
190
+ "--schedule-event-fg-base": "token(colors.surface.gray.fg)",
191
+ "--schedule-event-dot": "token(colors.surface.gray.accent)"
192
+ },
193
+ dot: { "--schedule-event-dot": "token(colors.surface.gray.accent)" }
194
+ },
195
+ green: {
196
+ event: {
197
+ "--schedule-event-bg": "token(colors.surface.green)",
198
+ "--schedule-event-bg-hover": "token(colors.surface.green.hover)",
199
+ "--schedule-event-border": "token(colors.surface.green.accent)",
200
+ "--schedule-event-fg": "token(colors.surface.green.fg)",
201
+ "--schedule-event-fg-base": "token(colors.surface.green.fg)",
202
+ "--schedule-event-dot": "token(colors.surface.green.accent)"
203
+ },
204
+ dot: { "--schedule-event-dot": "token(colors.surface.green.accent)" }
205
+ },
206
+ orange: {
207
+ event: {
208
+ "--schedule-event-bg": "token(colors.surface.orange)",
209
+ "--schedule-event-bg-hover": "token(colors.surface.orange.hover)",
210
+ "--schedule-event-border": "token(colors.surface.orange.accent)",
211
+ "--schedule-event-fg": "token(colors.surface.orange.fg)",
212
+ "--schedule-event-fg-base": "token(colors.surface.orange.fg)",
213
+ "--schedule-event-dot": "token(colors.surface.orange.accent)"
214
+ },
215
+ dot: { "--schedule-event-dot": "token(colors.surface.orange.accent)" }
216
+ },
217
+ pink: {
218
+ event: {
219
+ "--schedule-event-bg": "token(colors.surface.pink)",
220
+ "--schedule-event-bg-hover": "token(colors.surface.pink.hover)",
221
+ "--schedule-event-border": "token(colors.surface.pink.accent)",
222
+ "--schedule-event-fg": "token(colors.surface.pink.fg)",
223
+ "--schedule-event-fg-base": "token(colors.surface.pink.fg)",
224
+ "--schedule-event-dot": "token(colors.surface.pink.accent)"
225
+ },
226
+ dot: { "--schedule-event-dot": "token(colors.surface.pink.accent)" }
227
+ },
228
+ purple: {
229
+ event: {
230
+ "--schedule-event-bg": "token(colors.surface.purple)",
231
+ "--schedule-event-bg-hover": "token(colors.surface.purple.hover)",
232
+ "--schedule-event-border": "token(colors.surface.purple.accent)",
233
+ "--schedule-event-fg": "token(colors.surface.purple.fg)",
234
+ "--schedule-event-fg-base": "token(colors.surface.purple.fg)",
235
+ "--schedule-event-dot": "token(colors.surface.purple.accent)"
236
+ },
237
+ dot: { "--schedule-event-dot": "token(colors.surface.purple.accent)" }
238
+ },
239
+ red: {
240
+ event: {
241
+ "--schedule-event-bg": "token(colors.surface.red)",
242
+ "--schedule-event-bg-hover": "token(colors.surface.red.hover)",
243
+ "--schedule-event-border": "token(colors.surface.red.accent)",
244
+ "--schedule-event-fg": "token(colors.surface.red.fg)",
245
+ "--schedule-event-fg-base": "token(colors.surface.red.fg)",
246
+ "--schedule-event-dot": "token(colors.surface.red.accent)"
247
+ },
248
+ dot: { "--schedule-event-dot": "token(colors.surface.red.accent)" }
249
+ },
250
+ teal: {
251
+ event: {
252
+ "--schedule-event-bg": "token(colors.surface.teal)",
253
+ "--schedule-event-bg-hover": "token(colors.surface.teal.hover)",
254
+ "--schedule-event-border": "token(colors.surface.teal.accent)",
255
+ "--schedule-event-fg": "token(colors.surface.teal.fg)",
256
+ "--schedule-event-fg-base": "token(colors.surface.teal.fg)",
257
+ "--schedule-event-dot": "token(colors.surface.teal.accent)"
258
+ },
259
+ dot: { "--schedule-event-dot": "token(colors.surface.teal.accent)" }
260
+ },
261
+ yellow: {
262
+ event: {
263
+ "--schedule-event-bg": "token(colors.surface.yellow)",
264
+ "--schedule-event-bg-hover": "token(colors.surface.yellow.hover)",
265
+ "--schedule-event-border": "token(colors.surface.yellow.accent)",
266
+ "--schedule-event-fg": "token(colors.surface.yellow.fg)",
267
+ "--schedule-event-fg-base": "token(colors.surface.yellow.fg)",
268
+ "--schedule-event-dot": "token(colors.surface.yellow.accent)"
269
+ },
270
+ dot: { "--schedule-event-dot": "token(colors.surface.yellow.accent)" }
271
+ }
272
+ },
273
+ isPast: {
274
+ true: {
275
+ event: {
276
+ // Keep `isPast` in the recipe API for class-based assertions and
277
+ // callers, but rely on `[data-state="past"]` for the actual variable
278
+ // overrides so the color variant cannot win by atomic CSS order.
279
+ "--schedule-event-bg": "color-mix(in srgb, var(--schedule-event-dot) 10%, token(colors.bg))",
280
+ "--schedule-event-bg-hover": "color-mix(in srgb, var(--schedule-event-dot) 14%, token(colors.bg))",
281
+ "--schedule-event-border": "color-mix(in srgb, var(--schedule-event-dot) 48%, token(colors.border))",
282
+ "--schedule-event-fg": "color-mix(in srgb, var(--schedule-event-fg-base) 52%, token(colors.fg.muted))"
283
+ }
284
+ },
285
+ false: {}
286
+ }
287
+ },
288
+ defaultVariants: {
289
+ layout: "inline",
290
+ color: "blue",
291
+ isFullWidth: false,
292
+ isInteractive: false,
293
+ isPast: false
294
+ }
295
+ });
296
+
297
+ // src/components/Schedule/TimeGridView.recipe.ts
298
+ var scheduleTimeGridViewRecipe = sva({
299
+ slots: [
300
+ "grid",
301
+ "header",
302
+ "corner",
303
+ "dayHeader",
304
+ "dayHeaderContent",
305
+ "dayHeaderDayNumber",
306
+ "allDayLabel",
307
+ "allDayRow",
308
+ "dayCell",
309
+ "timeLabel",
310
+ "timeRow",
311
+ "hourCell",
312
+ "events",
313
+ "allDayEvents",
314
+ "allDayPopoverContent",
315
+ "allDayPopoverEvents",
316
+ "allDaySeeMoreButton",
317
+ "rowContents"
318
+ ],
319
+ base: {
320
+ grid: {
321
+ display: "grid",
322
+ gridTemplateColumns: "72px 1fr",
323
+ overflow: "auto"
324
+ },
325
+ header: {
326
+ display: "grid",
327
+ gridTemplateColumns: "repeat(var(--schedule-day-count), minmax(160px, 1fr))",
328
+ borderBlockEndWidth: "default",
329
+ borderBlockEndStyle: "solid",
330
+ borderBlockEndColor: "border"
331
+ },
332
+ corner: {
333
+ borderInlineEndWidth: "default",
334
+ borderInlineEndStyle: "solid",
335
+ borderInlineEndColor: "border",
336
+ borderBlockEndWidth: "default",
337
+ borderBlockEndStyle: "solid",
338
+ borderBlockEndColor: "border"
339
+ },
340
+ dayHeader: {
341
+ p: "2",
342
+ textAlign: "center",
343
+ borderInlineEndWidth: "default",
344
+ borderInlineEndStyle: "solid",
345
+ borderInlineEndColor: "border"
346
+ },
347
+ dayHeaderContent: {
348
+ display: "inline-flex",
349
+ alignItems: "center",
350
+ justifyContent: "center",
351
+ gap: "1"
352
+ },
353
+ dayHeaderDayNumber: {
354
+ display: "inline-flex",
355
+ alignItems: "center",
356
+ justifyContent: "center",
357
+ minW: "30px",
358
+ h: "30px",
359
+ lineHeight: "30px",
360
+ borderRadius: "full"
361
+ },
362
+ allDayLabel: {
363
+ display: "flex",
364
+ alignItems: "flex-start",
365
+ justifyContent: "flex-end",
366
+ py: "0.5",
367
+ px: "2",
368
+ borderInlineEndWidth: "default",
369
+ borderInlineEndStyle: "solid",
370
+ borderInlineEndColor: "border",
371
+ borderBlockEndWidth: "default",
372
+ borderBlockEndStyle: "solid",
373
+ borderBlockEndColor: "border"
374
+ },
375
+ allDayRow: {
376
+ display: "grid",
377
+ gridTemplateColumns: "repeat(var(--schedule-day-count), minmax(160px, 1fr))",
378
+ borderBlockEndWidth: "default",
379
+ borderBlockEndStyle: "solid",
380
+ borderBlockEndColor: "border"
381
+ },
382
+ dayCell: {
383
+ minH: 0,
384
+ p: "0.5",
385
+ borderInlineEndWidth: "default",
386
+ borderInlineEndStyle: "solid",
387
+ borderInlineEndColor: "border"
388
+ },
389
+ timeLabel: {
390
+ p: "2",
391
+ color: "fg.muted",
392
+ textAlign: "end",
393
+ borderInlineEndWidth: "default",
394
+ borderInlineEndStyle: "solid",
395
+ borderInlineEndColor: "border",
396
+ borderBlockEndWidth: "default",
397
+ borderBlockEndStyle: "solid",
398
+ borderBlockEndColor: "border"
399
+ },
400
+ timeRow: {
401
+ display: "grid",
402
+ gridTemplateColumns: "repeat(var(--schedule-day-count), minmax(160px, 1fr))"
403
+ },
404
+ hourCell: {
405
+ position: "relative",
406
+ minH: "14",
407
+ p: "1",
408
+ borderInlineEndWidth: "default",
409
+ borderInlineEndStyle: "solid",
410
+ borderInlineEndColor: "border",
411
+ borderBlockEndWidth: "default",
412
+ borderBlockEndStyle: "solid",
413
+ borderBlockEndColor: "border"
414
+ },
415
+ events: {
416
+ display: "flex",
417
+ flexDirection: "column",
418
+ gap: "1"
419
+ },
420
+ allDayEvents: {
421
+ display: "flex",
422
+ flexDirection: "column",
423
+ gap: "0.5"
424
+ },
425
+ allDayPopoverContent: {
426
+ display: "flex",
427
+ flexDirection: "column",
428
+ gap: "1",
429
+ p: "3"
430
+ },
431
+ allDayPopoverEvents: {
432
+ display: "flex",
433
+ flexDirection: "column",
434
+ gap: 0,
435
+ m: 0,
436
+ p: 0,
437
+ listStyleType: "none"
438
+ },
439
+ allDaySeeMoreButton: {
440
+ display: "inline-flex",
441
+ alignItems: "center",
442
+ maxW: "full",
443
+ h: "5",
444
+ px: "1",
445
+ borderRadius: "sm",
446
+ color: "primary",
447
+ cursor: "pointer",
448
+ fontSize: "xs",
449
+ fontWeight: "medium",
450
+ lineHeight: "tight",
451
+ overflow: "hidden",
452
+ textOverflow: "ellipsis",
453
+ whiteSpace: "nowrap",
454
+ _hover: {
455
+ bg: "bg.muted"
456
+ }
457
+ },
458
+ rowContents: {
459
+ display: "contents"
460
+ }
461
+ },
462
+ variants: {
463
+ isCurrentDay: {
464
+ true: {
465
+ dayHeaderDayNumber: {
466
+ bg: "primary",
467
+ color: "fg.onPrimary"
468
+ }
469
+ },
470
+ false: {}
471
+ },
472
+ isLastColumn: {
473
+ true: {
474
+ dayHeader: { borderInlineEndWidth: 0 },
475
+ dayCell: { borderInlineEndWidth: 0 },
476
+ hourCell: { borderInlineEndWidth: 0 }
477
+ },
478
+ false: {}
479
+ },
480
+ isLastRow: {
481
+ true: {
482
+ timeLabel: { borderBlockEndWidth: 0 },
483
+ hourCell: { borderBlockEndWidth: 0 }
484
+ },
485
+ false: {}
486
+ }
487
+ },
488
+ defaultVariants: {
489
+ isCurrentDay: false,
490
+ isLastColumn: false,
491
+ isLastRow: false
492
+ }
493
+ });
494
+ var ScheduleContext = createContext(null);
495
+ ScheduleContext.displayName = "ScheduleContext";
496
+ function useScheduleContext() {
497
+ const context = use(ScheduleContext);
498
+ if (context == null) {
499
+ throw new Error("Schedule views must be rendered inside Schedule.");
500
+ }
501
+ return context;
502
+ }
503
+
504
+ // src/components/Schedule/dateMath.ts
505
+ function isDayEvent(event) {
506
+ return typeof event.start !== "number";
507
+ }
508
+ function getScheduleRangeFromDates({
509
+ endDate,
510
+ startDate,
511
+ timezoneID
512
+ }) {
513
+ return {
514
+ end: plainDateToInstant(endDate, timezoneID),
515
+ endDate,
516
+ start: plainDateToInstant(startDate, timezoneID),
517
+ startDate
518
+ };
519
+ }
520
+ function enumerateDates(start, endExclusive) {
521
+ const dates = [];
522
+ let current = start;
523
+ while (plainDateIsBefore(current, endExclusive)) {
524
+ dates.push(current);
525
+ current = current.add({ days: 1 });
526
+ }
527
+ return dates;
528
+ }
529
+ function eventOverlapsRange(event, range, timezoneID) {
530
+ if (isDayEvent(event)) {
531
+ const eventStart = plainDateToInstant(event.start, timezoneID);
532
+ const eventEnd = plainDateToInstant(event.end.add({ days: 1 }), timezoneID);
533
+ return eventStart < range.end && eventEnd > range.start;
534
+ }
535
+ return event.start < range.end && event.end > range.start;
536
+ }
537
+ function eventOccursOnDate(event, date, timezoneID) {
538
+ if (isDayEvent(event)) {
539
+ return !plainDateIsAfter(event.start, date) && !plainDateIsBefore(event.end, date);
540
+ }
541
+ const startDate = plainDateFromInstant(event.start, timezoneID);
542
+ const endDate = plainDateFromInstant(
543
+ Math.max(event.end - 1, event.start),
544
+ timezoneID
545
+ );
546
+ return !plainDateIsAfter(startDate, date) && !plainDateIsBefore(endDate, date);
547
+ }
548
+ function sortEvents(events, timezoneID) {
549
+ return [...events].sort((a, b) => {
550
+ const aStart = getEventSortStart(a, timezoneID);
551
+ const bStart = getEventSortStart(b, timezoneID);
552
+ return aStart < bStart ? -1 : aStart > bStart ? 1 : a.title.localeCompare(b.title);
553
+ });
554
+ }
555
+ function getEventSortStart(event, timezoneID) {
556
+ return isDayEvent(event) ? plainDateToInstant(event.start, timezoneID) : event.start;
557
+ }
558
+
559
+ // src/components/Schedule/Schedule.recipe.ts
560
+ var scheduleRecipe = sva({
561
+ slots: [
562
+ "root",
563
+ "frame",
564
+ "header",
565
+ "headerSlotStart",
566
+ "headerSlotCenter",
567
+ "headerSlotEnd",
568
+ "headerTitleContent",
569
+ "headerTitleSpinner",
570
+ "surface"
571
+ ],
572
+ base: {
573
+ root: {
574
+ color: "fg",
575
+ fontFamily: "body",
576
+ w: "full"
577
+ },
578
+ frame: {
579
+ display: "flex",
580
+ flexDirection: "column",
581
+ gap: "3",
582
+ w: "full"
583
+ },
584
+ header: {
585
+ display: "grid",
586
+ gridTemplateColumns: "1fr auto 1fr",
587
+ alignItems: "center",
588
+ gap: "3"
589
+ },
590
+ headerSlotStart: {
591
+ display: "flex",
592
+ justifyContent: "flex-start",
593
+ alignItems: "center",
594
+ gap: "2"
595
+ },
596
+ headerSlotCenter: {
597
+ display: "flex",
598
+ justifyContent: "center",
599
+ alignItems: "center",
600
+ gap: "2",
601
+ textAlign: "center"
602
+ },
603
+ headerSlotEnd: {
604
+ display: "flex",
605
+ justifyContent: "flex-end",
606
+ alignItems: "center",
607
+ gap: "2"
608
+ },
609
+ headerTitleContent: {
610
+ display: "inline-flex",
611
+ alignItems: "center",
612
+ gap: "2"
613
+ },
614
+ headerTitleSpinner: {
615
+ marginInlineStart: "4px",
616
+ marginBlockStart: "4px"
617
+ },
618
+ surface: {
619
+ borderWidth: "default",
620
+ borderStyle: "solid",
621
+ borderColor: "border",
622
+ borderRadius: "md",
623
+ overflow: "hidden",
624
+ bg: "bg"
625
+ }
626
+ }
627
+ });
628
+ var scheduleClasses = scheduleRecipe();
629
+ var categoryFallback = { label: "Event", color: "blue" };
630
+ var currentTimeIndicator = cva({
631
+ base: {
632
+ h: "0.5",
633
+ bg: "surface.orange.accent",
634
+ borderRadius: "full",
635
+ pointerEvents: "none",
636
+ _before: {
637
+ content: '""',
638
+ position: "absolute",
639
+ insetInlineStart: "-6px",
640
+ top: "50%",
641
+ w: "2.5",
642
+ h: "2.5",
643
+ borderRadius: "full",
644
+ bg: "surface.orange.accent",
645
+ transform: "translateY(-50%)"
646
+ }
647
+ },
648
+ variants: {
649
+ layout: {
650
+ list: {
651
+ position: "relative"
652
+ },
653
+ timeGrid: {
654
+ position: "absolute",
655
+ insetInline: "0",
656
+ transform: "translateY(2px)",
657
+ zIndex: "20"
658
+ }
659
+ }
660
+ }
661
+ });
662
+ function ScheduleCurrentTimeIndicator({
663
+ layout,
664
+ testId,
665
+ style
666
+ }) {
667
+ return /* @__PURE__ */ jsx(
668
+ "div",
669
+ {
670
+ "aria-hidden": "true",
671
+ className: currentTimeIndicator({ layout }),
672
+ "data-testid": testId,
673
+ style
674
+ }
675
+ );
676
+ }
677
+ function createCategoryMap(categories) {
678
+ const categoryMap = /* @__PURE__ */ new Map();
679
+ categories.forEach((category) => {
680
+ if (!categoryMap.has(category.label)) {
681
+ categoryMap.set(category.label, category);
682
+ }
683
+ });
684
+ return categoryMap;
685
+ }
686
+ function getCategory(categoryMap, event) {
687
+ return (event.category == null ? void 0 : categoryMap.get(event.category)) ?? (event.category != null ? { label: event.category, color: categoryFallback.color } : categoryFallback);
688
+ }
689
+ function formatDate(date) {
690
+ return plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY);
691
+ }
692
+ function formatMonthTitle(date) {
693
+ return plainDateFormat(date, DATE_FORMAT_MONTH_YEAR);
694
+ }
695
+ function formatWeekTitle(start, end) {
696
+ if (start.year === end.year && start.month === end.month) {
697
+ return formatMonthTitle(start);
698
+ }
699
+ const startMonth = plainDateFormat(start, { month: "long" });
700
+ const endMonth = plainDateFormat(end, { month: "long" });
701
+ return start.year === end.year ? `${startMonth} - ${endMonth} ${end.year}` : `${startMonth} ${start.year} - ${endMonth} ${end.year}`;
702
+ }
703
+ function formatListRangeTitle(start, end) {
704
+ return plainDateIsEqual(start, end) ? formatDate(start) : formatWeekTitle(start, end);
705
+ }
706
+ function formatTime(instant, timezoneID) {
707
+ return Temporal.Instant.fromEpochMilliseconds(instant).toZonedDateTimeISO(timezoneID).toLocaleString(void 0, {
708
+ hour: "numeric",
709
+ minute: "2-digit"
710
+ });
711
+ }
712
+ function formatTimezoneAbbreviation(date, timezoneID) {
713
+ const formatter = new Intl.DateTimeFormat(void 0, {
714
+ timeZone: timezoneID,
715
+ timeZoneName: "short"
716
+ });
717
+ const parts = formatter.formatToParts(
718
+ date.toZonedDateTime(timezoneID).epochMilliseconds
719
+ );
720
+ return parts.find((part) => part.type === "timeZoneName")?.value ?? timezoneID;
721
+ }
722
+ function formatHour(hour) {
723
+ return Temporal.PlainTime.from({ hour }).toLocaleString(void 0, {
724
+ hour: "numeric"
725
+ });
726
+ }
727
+ function getEventTimeLabel(event, timezoneID) {
728
+ if (isDayEvent(event)) {
729
+ return "all day";
730
+ }
731
+ return `${formatTime(event.start, timezoneID)} - ${formatTime(event.end, timezoneID)}`;
732
+ }
733
+ function getEventStartTimeLabel(event, timezoneID) {
734
+ return isDayEvent(event) ? null : formatTime(event.start, timezoneID);
735
+ }
736
+ function getEventAccessibleLabel(event, categoryMap, timezoneID) {
737
+ const category = getCategory(categoryMap, event);
738
+ return `${event.title}, ${category.label}, ${getEventTimeLabel(event, timezoneID)}`;
739
+ }
740
+ function getMinutesSinceStartOfDay(instant, timezoneID) {
741
+ const zonedTime = Temporal.Instant.fromEpochMilliseconds(instant).toZonedDateTimeISO(timezoneID).toPlainTime();
742
+ return zonedTime.hour * 60 + zonedTime.minute;
743
+ }
744
+ function isEventInPast(event, currentTime2, timezoneID) {
745
+ if (isDayEvent(event)) {
746
+ return plainDateIsBefore(
747
+ event.end,
748
+ plainDateFromInstant(currentTime2, timezoneID)
749
+ );
750
+ }
751
+ return event.end <= currentTime2;
752
+ }
753
+ function hasEventPopoverPlugin(plugins) {
754
+ return plugins.some((plugin) => plugin.renderEventPopover != null);
755
+ }
756
+ function useScheduleEventPopover(event, { placement = "end" } = {}) {
757
+ const { categoryMap, plugins, timezoneID } = useScheduleContext();
758
+ const popover = usePopover({
759
+ // Content renders its own close affordance via the `controls.close` passed
760
+ // to renderEventPopover, so suppress the built-in close button.
761
+ hasCloseButton: false,
762
+ label: getEventAccessibleLabel(event, categoryMap, timezoneID),
763
+ role: "dialog"
764
+ });
765
+ const { hide } = popover;
766
+ const controls = useMemo(
767
+ () => ({ close: hide }),
768
+ [hide]
769
+ );
770
+ const content = useMemo(() => {
771
+ for (const plugin of plugins) {
772
+ const node = plugin.renderEventPopover?.(event, controls);
773
+ if (isReactNode(node)) {
774
+ return node;
775
+ }
776
+ }
777
+ return null;
778
+ }, [controls, event, plugins]);
779
+ if (!isReactNode(content)) {
780
+ return {};
781
+ }
782
+ return {
783
+ popover: popover.render(content, {
784
+ alignment: "start",
785
+ offsetX: 8,
786
+ offsetY: -3,
787
+ placement
788
+ }),
789
+ triggerProps: {
790
+ ...popover.triggerProps,
791
+ onClick: popover.toggle,
792
+ ref: popover.triggerRef
793
+ }
794
+ };
795
+ }
796
+ function useScheduleEventPluginProps({
797
+ event,
798
+ layout
799
+ }) {
800
+ const { plugins, timezoneID } = useScheduleContext();
801
+ return useMemo(() => {
802
+ let props;
803
+ plugins.forEach((plugin) => {
804
+ const pluginProps = plugin.getEventProps?.({ event, layout, timezoneID });
805
+ if (pluginProps != null) {
806
+ props = { ...props, ...pluginProps };
807
+ }
808
+ });
809
+ return props;
810
+ }, [event, layout, plugins, timezoneID]);
811
+ }
812
+ function EventPillRoot({
813
+ children,
814
+ className,
815
+ dataState,
816
+ dataTestId,
817
+ pluginProps,
818
+ triggerProps
819
+ }) {
820
+ if (triggerProps != null) {
821
+ return /* @__PURE__ */ jsx(
822
+ "button",
823
+ {
824
+ className,
825
+ "data-state": dataState,
826
+ "data-testid": dataTestId,
827
+ ...pluginProps,
828
+ type: "button",
829
+ ...triggerProps,
830
+ children
831
+ }
832
+ );
833
+ }
834
+ return /* @__PURE__ */ jsx(
835
+ "span",
836
+ {
837
+ className,
838
+ "data-state": dataState,
839
+ "data-testid": dataTestId,
840
+ ...pluginProps,
841
+ children
842
+ }
843
+ );
844
+ }
845
+ function CalendarEventPill({
846
+ event,
847
+ isFullWidth = false,
848
+ isPast = false
849
+ }) {
850
+ const { categoryMap, timezoneID } = useScheduleContext();
851
+ const { popover, triggerProps } = useScheduleEventPopover(event);
852
+ const pluginProps = useScheduleEventPluginProps({ event, layout: "inline" });
853
+ const category = getCategory(categoryMap, event);
854
+ const classes = scheduleEventRecipe({
855
+ color: category.color,
856
+ isFullWidth,
857
+ isPast,
858
+ isInteractive: triggerProps != null
859
+ });
860
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
861
+ /* @__PURE__ */ jsx(
862
+ EventPillRoot,
863
+ {
864
+ className: classes.event,
865
+ dataState: isPast ? "past" : void 0,
866
+ dataTestId: `schedule-event-${event.id}`,
867
+ pluginProps,
868
+ triggerProps,
869
+ children: /* @__PURE__ */ jsx("span", { className: classes.title, children: isDayEvent(event) ? event.title : getEventAccessibleLabel(event, categoryMap, timezoneID) })
870
+ }
871
+ ),
872
+ popover
873
+ ] });
874
+ }
875
+ function CalendarMonthEventPill({
876
+ event,
877
+ isPast = false
878
+ }) {
879
+ const { categoryMap, timezoneID } = useScheduleContext();
880
+ const { popover, triggerProps } = useScheduleEventPopover(event);
881
+ const pluginProps = useScheduleEventPluginProps({ event, layout: "month" });
882
+ const category = getCategory(categoryMap, event);
883
+ const startTimeLabel = getEventStartTimeLabel(event, timezoneID);
884
+ const classes = scheduleEventRecipe({
885
+ color: category.color,
886
+ isPast,
887
+ isFullWidth: true,
888
+ isInteractive: triggerProps != null
889
+ });
890
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
891
+ /* @__PURE__ */ jsxs(
892
+ EventPillRoot,
893
+ {
894
+ className: classes.event,
895
+ dataState: isPast ? "past" : void 0,
896
+ dataTestId: `schedule-event-${event.id}`,
897
+ pluginProps,
898
+ triggerProps,
899
+ children: [
900
+ startTimeLabel != null ? /* @__PURE__ */ jsx("span", { className: classes.time, children: startTimeLabel }) : null,
901
+ /* @__PURE__ */ jsx("span", { className: classes.title, children: event.title })
902
+ ]
903
+ }
904
+ ),
905
+ popover
906
+ ] });
907
+ }
908
+ function ScheduleEventOverflowPopover({
909
+ buttonClassName,
910
+ contentClassName,
911
+ events,
912
+ eventsClassName,
913
+ hiddenEventCount,
914
+ label,
915
+ renderEvent,
916
+ testId,
917
+ title
918
+ }) {
919
+ return /* @__PURE__ */ jsx(
920
+ Popover,
921
+ {
922
+ content: /* @__PURE__ */ jsxs("div", { className: contentClassName, children: [
923
+ /* @__PURE__ */ jsx(Heading, { level: 4, children: title }),
924
+ /* @__PURE__ */ jsx("ul", { className: eventsClassName, children: events.map((event) => /* @__PURE__ */ jsx("li", { children: renderEvent(event) }, event.id)) })
925
+ ] }),
926
+ "data-testid": testId,
927
+ label,
928
+ width: 320,
929
+ children: /* @__PURE__ */ jsxs(
930
+ Link,
931
+ {
932
+ className: buttonClassName,
933
+ color: "primary",
934
+ label,
935
+ size: "xs",
936
+ weight: "medium",
937
+ children: [
938
+ "+",
939
+ hiddenEventCount,
940
+ " more"
941
+ ]
942
+ }
943
+ )
944
+ }
945
+ );
946
+ }
947
+ function ScheduleFrame({
948
+ children,
949
+ title,
950
+ titleLabel
951
+ }) {
952
+ const { isLoading, plugins } = useScheduleContext();
953
+ const initialHeader = {
954
+ startContent: null,
955
+ centerContent: /* @__PURE__ */ jsxs("span", { className: scheduleClasses.headerTitleContent, children: [
956
+ /* @__PURE__ */ jsx(Heading, { level: 2, children: title }),
957
+ isLoading ? /* @__PURE__ */ jsx(
958
+ Spinner,
959
+ {
960
+ "aria-label": "Loading events",
961
+ className: scheduleClasses.headerTitleSpinner,
962
+ size: "sm"
963
+ }
964
+ ) : null
965
+ ] }),
966
+ endContent: null
967
+ };
968
+ const header = plugins.reduce(
969
+ (content, plugin) => plugin.renderHeader?.(
970
+ content.startContent,
971
+ content.centerContent,
972
+ content.endContent
973
+ ) ?? content,
974
+ initialHeader
975
+ );
976
+ return /* @__PURE__ */ jsxs("section", { "aria-label": titleLabel, className: scheduleClasses.frame, children: [
977
+ /* @__PURE__ */ jsxs("div", { className: scheduleClasses.header, children: [
978
+ /* @__PURE__ */ jsx("div", { className: scheduleClasses.headerSlotStart, children: header.startContent }),
979
+ /* @__PURE__ */ jsx("div", { className: scheduleClasses.headerSlotCenter, children: header.centerContent }),
980
+ /* @__PURE__ */ jsx("div", { className: scheduleClasses.headerSlotEnd, children: header.endContent })
981
+ ] }),
982
+ children
983
+ ] });
984
+ }
985
+ var UPDATE_INTERVAL_MS = 60 * 1e3;
986
+ var listeners = /* @__PURE__ */ new Set();
987
+ var interval = null;
988
+ var currentTime = getCurrentTime();
989
+ function getCurrentTime() {
990
+ return Temporal.Now.instant().epochMilliseconds;
991
+ }
992
+ function getSnapshot() {
993
+ return currentTime;
994
+ }
995
+ function getServerSnapshot() {
996
+ return 0;
997
+ }
998
+ function subscribe(listener) {
999
+ listeners.add(listener);
1000
+ currentTime = getCurrentTime();
1001
+ listener();
1002
+ interval ?? (interval = setInterval(() => {
1003
+ currentTime = getCurrentTime();
1004
+ listeners.forEach((activeListener) => activeListener());
1005
+ }, UPDATE_INTERVAL_MS));
1006
+ return () => {
1007
+ listeners.delete(listener);
1008
+ if (listeners.size === 0 && interval != null) {
1009
+ clearInterval(interval);
1010
+ interval = null;
1011
+ }
1012
+ };
1013
+ }
1014
+ function useCurrentTime() {
1015
+ return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
1016
+ }
1017
+ var styles = scheduleTimeGridViewRecipe();
1018
+ function eventOverlapsHour(event, day, hour, timezoneID) {
1019
+ if (isDayEvent(event)) {
1020
+ return false;
1021
+ }
1022
+ if (!eventOccursOnDate(event, day, timezoneID)) {
1023
+ return false;
1024
+ }
1025
+ const hourStart = day.toPlainDateTime(Temporal.PlainTime.from({ hour })).toZonedDateTime(timezoneID).epochMilliseconds;
1026
+ const hourEnd = hour === 23 ? day.add({ days: 1 }).toZonedDateTime(timezoneID).epochMilliseconds : day.toPlainDateTime(Temporal.PlainTime.from({ hour: hour + 1 })).toZonedDateTime(timezoneID).epochMilliseconds;
1027
+ return event.start < hourEnd && event.end > hourStart;
1028
+ }
1029
+ function eventSpansPastDay(event, day, timezoneID) {
1030
+ return !plainDateIsEqual(
1031
+ plainDateFromInstant(Math.max(event.end - 1, event.start), timezoneID),
1032
+ day
1033
+ );
1034
+ }
1035
+ function getAvailableTimedEventLevel(levelEndMinutes, visibleStart) {
1036
+ const level = levelEndMinutes.findIndex(
1037
+ (endMinute) => visibleStart >= endMinute
1038
+ );
1039
+ return level >= 0 ? level : levelEndMinutes.length;
1040
+ }
1041
+ function getTimedEventLayouts({
1042
+ day,
1043
+ events,
1044
+ hourHeight,
1045
+ maxHour,
1046
+ minHour,
1047
+ timezoneID
1048
+ }) {
1049
+ const levelEndMinutes = [];
1050
+ const minMinute = minHour * 60;
1051
+ const maxMinute = maxHour * 60;
1052
+ return events.map((event) => {
1053
+ const startDate = plainDateFromInstant(event.start, timezoneID);
1054
+ const rawStart = plainDateIsBefore(startDate, day) ? 0 : getMinutesSinceStartOfDay(event.start, timezoneID);
1055
+ const rawEnd = eventSpansPastDay(event, day, timezoneID) ? 24 * 60 : getMinutesSinceStartOfDay(event.end, timezoneID);
1056
+ if (rawEnd <= minMinute || rawStart >= maxMinute) {
1057
+ return null;
1058
+ }
1059
+ const visibleStart = Math.max(rawStart, minMinute);
1060
+ const visibleEnd = Math.min(
1061
+ maxMinute,
1062
+ Math.max(visibleStart + 15, rawEnd)
1063
+ );
1064
+ return { event, visibleEnd, visibleStart };
1065
+ }).filter(
1066
+ (layout) => layout != null && layout.visibleEnd > layout.visibleStart
1067
+ ).sort((a, b) => {
1068
+ if (a.visibleStart !== b.visibleStart) {
1069
+ return a.visibleStart - b.visibleStart;
1070
+ }
1071
+ return a.visibleEnd - b.visibleEnd || a.event.title.localeCompare(b.event.title);
1072
+ }).map(({ event, visibleEnd, visibleStart }) => {
1073
+ const level = getAvailableTimedEventLevel(levelEndMinutes, visibleStart);
1074
+ levelEndMinutes[level] = visibleEnd;
1075
+ const startHour = Math.floor(visibleStart / 60);
1076
+ return {
1077
+ event,
1078
+ height: (visibleEnd - visibleStart) / 60 * hourHeight,
1079
+ level,
1080
+ startHour,
1081
+ top: (visibleStart - startHour * 60) / 60 * hourHeight
1082
+ };
1083
+ });
1084
+ }
1085
+ function getTimedEventStyle({
1086
+ height,
1087
+ level,
1088
+ top
1089
+ }) {
1090
+ return {
1091
+ height: `${Math.max(36, height - 5)}px`,
1092
+ insetInlineEnd: "2px",
1093
+ insetInlineStart: level === 0 ? "2px" : `calc(2px + ${level * 8}%)`,
1094
+ top: `${top + 2}px`,
1095
+ zIndex: level + 1
1096
+ };
1097
+ }
1098
+ function TimeGridEvent({
1099
+ currentTime: currentTime2,
1100
+ hourHeight,
1101
+ layout,
1102
+ maxHour,
1103
+ minHour
1104
+ }) {
1105
+ const { categoryMap, plugins, timezoneID } = useScheduleContext();
1106
+ const { event } = layout;
1107
+ const { popover, triggerProps } = useScheduleEventPopover(event);
1108
+ const eventPluginProps = useScheduleEventPluginProps({
1109
+ event,
1110
+ layout: "timeGrid"
1111
+ });
1112
+ const pluginEndContent = useMemo(
1113
+ () => plugins.map(
1114
+ (plugin) => plugin.renderTimeGridEventContent?.({
1115
+ event,
1116
+ hourHeight,
1117
+ maxHour,
1118
+ minHour,
1119
+ timezoneID
1120
+ })
1121
+ ).filter(isReactNode),
1122
+ [event, hourHeight, maxHour, minHour, plugins, timezoneID]
1123
+ );
1124
+ const category = getCategory(categoryMap, event);
1125
+ const isPast = isEventInPast(event, currentTime2, timezoneID);
1126
+ const classes = scheduleEventRecipe({
1127
+ layout: "block",
1128
+ color: category.color,
1129
+ isPast,
1130
+ isInteractive: triggerProps != null
1131
+ });
1132
+ const style = getTimedEventStyle(layout);
1133
+ const body = /* @__PURE__ */ jsxs(Fragment, { children: [
1134
+ /* @__PURE__ */ jsx("span", { className: classes.title, children: event.title }),
1135
+ /* @__PURE__ */ jsx("span", { className: classes.time, children: getEventTimeLabel(event, timezoneID) }),
1136
+ pluginEndContent
1137
+ ] });
1138
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1139
+ triggerProps != null ? /* @__PURE__ */ jsx(
1140
+ "button",
1141
+ {
1142
+ className: classes.event,
1143
+ "data-state": isPast ? "past" : void 0,
1144
+ "data-testid": `schedule-event-${event.id}`,
1145
+ style,
1146
+ type: "button",
1147
+ ...eventPluginProps,
1148
+ ...triggerProps,
1149
+ children: body
1150
+ }
1151
+ ) : /* @__PURE__ */ jsx(
1152
+ "div",
1153
+ {
1154
+ className: classes.event,
1155
+ "data-state": isPast ? "past" : void 0,
1156
+ "data-testid": `schedule-event-${event.id}`,
1157
+ ...eventPluginProps,
1158
+ style,
1159
+ children: body
1160
+ }
1161
+ ),
1162
+ popover
1163
+ ] });
1164
+ }
1165
+ function getCellName({
1166
+ categoryMap,
1167
+ date,
1168
+ events,
1169
+ hourLabel,
1170
+ timezoneID
1171
+ }) {
1172
+ const dateLabel = plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY);
1173
+ const eventLabels = events.map(
1174
+ (event) => getEventAccessibleLabel(event, categoryMap, timezoneID)
1175
+ );
1176
+ return eventLabels.length > 0 ? `${dateLabel} ${hourLabel}. ${eventLabels.join(". ")}` : `${dateLabel} ${hourLabel}`;
1177
+ }
1178
+ function TimeGridView({
1179
+ allDayEventLimit = 3,
1180
+ days,
1181
+ hourHeight = 100,
1182
+ maxHour = 24,
1183
+ minHour = 0
1184
+ }) {
1185
+ const { categoryMap, events, highlightDate, plugins, timezoneID } = useScheduleContext();
1186
+ const normalizedMinHour = Math.max(0, Math.min(23, Math.floor(minHour)));
1187
+ const normalizedMaxHour = Math.max(
1188
+ normalizedMinHour + 1,
1189
+ Math.min(24, Math.floor(maxHour))
1190
+ );
1191
+ const hours = Array.from(
1192
+ { length: normalizedMaxHour - normalizedMinHour },
1193
+ (_, index) => normalizedMinHour + index
1194
+ );
1195
+ const currentTime2 = useCurrentTime();
1196
+ const highlightPlainDate = highlightDate.toPlainDate();
1197
+ const timezoneLabel = formatTimezoneAbbreviation(
1198
+ days[0] ?? highlightPlainDate,
1199
+ timezoneID
1200
+ );
1201
+ const gridStyle = {
1202
+ "--schedule-day-count": String(days.length)
1203
+ };
1204
+ const normalizedHourHeight = Math.max(1, Math.floor(hourHeight));
1205
+ const normalizedAllDayEventLimit = Number.isFinite(allDayEventLimit) ? Math.max(0, Math.floor(allDayEventLimit)) : 3;
1206
+ const hourStyle = {
1207
+ height: normalizedHourHeight,
1208
+ minHeight: normalizedHourHeight
1209
+ };
1210
+ const timedEventLayoutsByDay = days.map(
1211
+ (day) => getTimedEventLayouts({
1212
+ day,
1213
+ events: events.filter(
1214
+ (event) => !isDayEvent(event) && eventOccursOnDate(event, day, timezoneID)
1215
+ ),
1216
+ hourHeight: normalizedHourHeight,
1217
+ maxHour: normalizedMaxHour,
1218
+ minHour: normalizedMinHour,
1219
+ timezoneID
1220
+ })
1221
+ );
1222
+ return /* @__PURE__ */ jsxs(
1223
+ "div",
1224
+ {
1225
+ "aria-label": "Schedule time grid",
1226
+ "aria-readonly": "true",
1227
+ className: cx(scheduleClasses.surface, styles.grid),
1228
+ role: "grid",
1229
+ style: gridStyle,
1230
+ children: [
1231
+ /* @__PURE__ */ jsxs("div", { className: styles.rowContents, role: "row", children: [
1232
+ /* @__PURE__ */ jsx(
1233
+ "div",
1234
+ {
1235
+ "aria-colindex": 1,
1236
+ "aria-label": "Time",
1237
+ className: styles.corner,
1238
+ role: "columnheader"
1239
+ }
1240
+ ),
1241
+ /* @__PURE__ */ jsx("div", { className: styles.header, children: days.map((day, index) => {
1242
+ const isCurrentDay = plainDateIsEqual(day, highlightPlainDate);
1243
+ const dayHeaderClasses = scheduleTimeGridViewRecipe({
1244
+ isCurrentDay,
1245
+ isLastColumn: index === days.length - 1
1246
+ });
1247
+ return /* @__PURE__ */ jsx(
1248
+ "div",
1249
+ {
1250
+ "aria-colindex": index + 2,
1251
+ "aria-current": isCurrentDay ? "date" : void 0,
1252
+ "aria-label": plainDateFormat(day, DATE_FORMAT_WITH_WEEKDAY),
1253
+ className: dayHeaderClasses.dayHeader,
1254
+ role: "columnheader",
1255
+ children: /* @__PURE__ */ jsx(
1256
+ Heading,
1257
+ {
1258
+ "aria-hidden": "true",
1259
+ color: "secondary",
1260
+ level: 4,
1261
+ textWrap: "nowrap",
1262
+ children: /* @__PURE__ */ jsxs("span", { className: styles.dayHeaderContent, children: [
1263
+ plainDateFormat(day, { weekday: "short" }),
1264
+ /* @__PURE__ */ jsx("span", { className: dayHeaderClasses.dayHeaderDayNumber, children: day.day })
1265
+ ] })
1266
+ }
1267
+ )
1268
+ },
1269
+ day.toString()
1270
+ );
1271
+ }) })
1272
+ ] }),
1273
+ /* @__PURE__ */ jsxs("div", { className: styles.rowContents, role: "row", children: [
1274
+ /* @__PURE__ */ jsx(
1275
+ "div",
1276
+ {
1277
+ "aria-colindex": 1,
1278
+ "aria-label": `${timezoneLabel} all day`,
1279
+ className: styles.allDayLabel,
1280
+ role: "rowheader",
1281
+ children: /* @__PURE__ */ jsx(Text, { color: "secondary", type: "supporting", weight: "bold", children: timezoneLabel })
1282
+ }
1283
+ ),
1284
+ /* @__PURE__ */ jsx("div", { className: styles.allDayRow, children: days.map((day, index) => {
1285
+ const dayEvents = events.filter(
1286
+ (event) => isDayEvent(event) && eventOccursOnDate(event, day, timezoneID)
1287
+ );
1288
+ const visibleDayEvents = dayEvents.slice(
1289
+ 0,
1290
+ normalizedAllDayEventLimit
1291
+ );
1292
+ const hiddenDayEvents = dayEvents.slice(normalizedAllDayEventLimit);
1293
+ const dayCellClasses = scheduleTimeGridViewRecipe({
1294
+ isLastColumn: index === days.length - 1
1295
+ });
1296
+ const dateLabel = plainDateFormat(day, DATE_FORMAT_WITH_WEEKDAY);
1297
+ const seeMoreLabel = `Show ${hiddenDayEvents.length} more all-day events for ${dateLabel}`;
1298
+ return /* @__PURE__ */ jsx(
1299
+ "div",
1300
+ {
1301
+ "aria-colindex": index + 2,
1302
+ "aria-label": getCellName({
1303
+ categoryMap,
1304
+ date: day,
1305
+ events: dayEvents,
1306
+ hourLabel: "all day",
1307
+ timezoneID
1308
+ }),
1309
+ className: dayCellClasses.dayCell,
1310
+ role: "gridcell",
1311
+ children: /* @__PURE__ */ jsxs("div", { className: styles.allDayEvents, children: [
1312
+ visibleDayEvents.map((event) => /* @__PURE__ */ jsx(
1313
+ CalendarEventPill,
1314
+ {
1315
+ event,
1316
+ isPast: isEventInPast(event, currentTime2, timezoneID)
1317
+ },
1318
+ event.id
1319
+ )),
1320
+ hiddenDayEvents.length > 0 ? /* @__PURE__ */ jsx(
1321
+ ScheduleEventOverflowPopover,
1322
+ {
1323
+ buttonClassName: styles.allDaySeeMoreButton,
1324
+ contentClassName: styles.allDayPopoverContent,
1325
+ events: dayEvents,
1326
+ eventsClassName: styles.allDayPopoverEvents,
1327
+ hiddenEventCount: hiddenDayEvents.length,
1328
+ label: seeMoreLabel,
1329
+ renderEvent: (event) => /* @__PURE__ */ jsx(
1330
+ CalendarEventPill,
1331
+ {
1332
+ event,
1333
+ isFullWidth: true,
1334
+ isPast: isEventInPast(event, currentTime2, timezoneID)
1335
+ }
1336
+ ),
1337
+ testId: `schedule-all-day-see-more-${day.toString()}`,
1338
+ title: dateLabel
1339
+ }
1340
+ ) : null
1341
+ ] })
1342
+ },
1343
+ `${day.toString()}-all-day`
1344
+ );
1345
+ }) })
1346
+ ] }),
1347
+ hours.map((hour) => {
1348
+ const hourLabel = formatHour(hour);
1349
+ const isLastHour = hour === hours[hours.length - 1];
1350
+ const timeLabelClasses = scheduleTimeGridViewRecipe({
1351
+ isLastRow: isLastHour
1352
+ });
1353
+ return /* @__PURE__ */ jsxs("div", { className: styles.rowContents, role: "row", children: [
1354
+ /* @__PURE__ */ jsx(
1355
+ "div",
1356
+ {
1357
+ "aria-colindex": 1,
1358
+ className: timeLabelClasses.timeLabel,
1359
+ role: "rowheader",
1360
+ style: hourStyle,
1361
+ children: hourLabel
1362
+ }
1363
+ ),
1364
+ /* @__PURE__ */ jsx("div", { className: styles.timeRow, children: days.map((day, index) => {
1365
+ const hourEvents = events.filter(
1366
+ (event) => eventOverlapsHour(event, day, hour, timezoneID)
1367
+ );
1368
+ const visibleTimedEventLayouts = timedEventLayoutsByDay[index].filter((layout) => layout.startHour === hour);
1369
+ const currentTimeTop = getCurrentTimeTopForHour({
1370
+ currentTime: currentTime2,
1371
+ day,
1372
+ hour,
1373
+ maxHour: normalizedMaxHour,
1374
+ minHour: normalizedMinHour,
1375
+ timezoneID
1376
+ });
1377
+ const hourCellClasses = scheduleTimeGridViewRecipe({
1378
+ isLastColumn: index === days.length - 1,
1379
+ isLastRow: isLastHour
1380
+ });
1381
+ const hourCellPluginProps = plugins.reduce(
1382
+ (props, plugin) => ({
1383
+ ...props,
1384
+ ...plugin.getTimeGridCellProps?.({
1385
+ date: day,
1386
+ hour,
1387
+ hourHeight: normalizedHourHeight,
1388
+ maxHour: normalizedMaxHour,
1389
+ minHour: normalizedMinHour,
1390
+ timezoneID
1391
+ })
1392
+ }),
1393
+ {}
1394
+ );
1395
+ return /* @__PURE__ */ jsxs(
1396
+ "div",
1397
+ {
1398
+ "aria-colindex": index + 2,
1399
+ "aria-label": getCellName({
1400
+ categoryMap,
1401
+ date: day,
1402
+ events: hourEvents,
1403
+ hourLabel,
1404
+ timezoneID
1405
+ }),
1406
+ className: hourCellClasses.hourCell,
1407
+ "data-testid": `schedule-time-grid-cell-${day.toString()}-${hour}`,
1408
+ role: "gridcell",
1409
+ style: hourStyle,
1410
+ ...hourCellPluginProps,
1411
+ children: [
1412
+ currentTimeTop != null ? /* @__PURE__ */ jsx(
1413
+ ScheduleCurrentTimeIndicator,
1414
+ {
1415
+ layout: "timeGrid",
1416
+ style: { top: `${currentTimeTop}%` },
1417
+ testId: "schedule-current-time-line"
1418
+ }
1419
+ ) : null,
1420
+ /* @__PURE__ */ jsx("div", { className: styles.events, children: visibleTimedEventLayouts.map((layout) => /* @__PURE__ */ jsx(
1421
+ TimeGridEvent,
1422
+ {
1423
+ currentTime: currentTime2,
1424
+ hourHeight: normalizedHourHeight,
1425
+ layout,
1426
+ maxHour: normalizedMaxHour,
1427
+ minHour: normalizedMinHour
1428
+ },
1429
+ layout.event.id
1430
+ )) })
1431
+ ]
1432
+ },
1433
+ `${day.toString()}-${hour}`
1434
+ );
1435
+ }) })
1436
+ ] }, hour);
1437
+ })
1438
+ ]
1439
+ }
1440
+ );
1441
+ }
1442
+ function getCurrentTimeTopForHour({
1443
+ currentTime: currentTime2,
1444
+ day,
1445
+ hour,
1446
+ maxHour,
1447
+ minHour,
1448
+ timezoneID
1449
+ }) {
1450
+ if (!plainDateIsEqual(day, plainDateFromInstant(currentTime2, timezoneID))) {
1451
+ return null;
1452
+ }
1453
+ const currentMinute = getMinutesSinceStartOfDay(currentTime2, timezoneID);
1454
+ const minMinute = minHour * 60;
1455
+ const maxMinute = maxHour * 60;
1456
+ if (currentMinute < minMinute || currentMinute > maxMinute) {
1457
+ return null;
1458
+ }
1459
+ if (currentMinute === maxMinute) {
1460
+ return hour === maxHour - 1 ? 100 : null;
1461
+ }
1462
+ if (Math.floor(currentMinute / 60) !== hour) {
1463
+ return null;
1464
+ }
1465
+ return currentMinute % 60 / 60 * 100;
1466
+ }
1467
+
1468
+ // src/components/Schedule/scheduleZonedInstant.ts
1469
+ function createScheduleZonedInstant(date, timezoneID) {
1470
+ return scheduleZonedInstantFromInstant(date, timezoneID);
1471
+ }
1472
+ function scheduleZonedInstantFromInstant(instant, timezoneID) {
1473
+ return {
1474
+ addDays: (days) => {
1475
+ const date = plainDateFromInstant(instant, timezoneID).add({ days });
1476
+ return scheduleZonedInstantFromInstant(
1477
+ plainDateToInstant(date, timezoneID),
1478
+ timezoneID
1479
+ );
1480
+ },
1481
+ instant,
1482
+ startOfDay: () => {
1483
+ const date = plainDateFromInstant(instant, timezoneID);
1484
+ return scheduleZonedInstantFromInstant(
1485
+ plainDateToInstant(date, timezoneID),
1486
+ timezoneID
1487
+ );
1488
+ },
1489
+ timezoneID,
1490
+ toPlainDate: () => plainDateFromInstant(instant, timezoneID)
1491
+ };
1492
+ }
1493
+ function scheduleRangeToScheduleZonedInstantRange(range, timezoneID) {
1494
+ return [
1495
+ scheduleZonedInstantFromInstant(range.start, timezoneID),
1496
+ scheduleZonedInstantFromInstant(range.end, timezoneID)
1497
+ ];
1498
+ }
1499
+ function ScheduleDayView({
1500
+ options
1501
+ }) {
1502
+ const { viewDate } = useScheduleContext();
1503
+ const day = viewDate.toPlainDate();
1504
+ return /* @__PURE__ */ jsx(ScheduleFrame, { title: formatMonthTitle(day), titleLabel: formatDate(day), children: /* @__PURE__ */ jsx(
1505
+ TimeGridView,
1506
+ {
1507
+ allDayEventLimit: options.allDayEventLimit,
1508
+ days: [day],
1509
+ hourHeight: options.hourHeight,
1510
+ maxHour: options.maxHour,
1511
+ minHour: options.minHour
1512
+ }
1513
+ ) });
1514
+ }
1515
+ function createScheduleDayView({
1516
+ allDayEventLimit = 3,
1517
+ hourHeight = 100,
1518
+ maxHour = 24,
1519
+ minHour = 0
1520
+ } = {}) {
1521
+ return {
1522
+ component: ScheduleDayView,
1523
+ getDateRange: (date) => scheduleRangeToScheduleZonedInstantRange(
1524
+ getScheduleRangeFromDates({
1525
+ endDate: date.toPlainDate().add({ days: 1 }),
1526
+ startDate: date.toPlainDate(),
1527
+ timezoneID: date.timezoneID
1528
+ }),
1529
+ date.timezoneID
1530
+ ),
1531
+ getNextDateRange: (date) => ({
1532
+ label: "Next day",
1533
+ range: [date.startOfDay().addDays(1), date.startOfDay().addDays(2)]
1534
+ }),
1535
+ getPreviousDateRange: (date) => ({
1536
+ label: "Previous day",
1537
+ range: [date.startOfDay().addDays(-1), date.startOfDay()]
1538
+ }),
1539
+ options: { allDayEventLimit, hourHeight, maxHour, minHour }
1540
+ };
1541
+ }
1542
+
1543
+ // src/components/Schedule/ListView.recipe.ts
1544
+ var scheduleListViewRecipe = sva({
1545
+ slots: [
1546
+ "list",
1547
+ "day",
1548
+ "dayHeading",
1549
+ "dayWeekday",
1550
+ "dayNumber",
1551
+ "events",
1552
+ "eventRow",
1553
+ "eventContent",
1554
+ "eventTime"
1555
+ ],
1556
+ base: {
1557
+ list: {
1558
+ display: "flex",
1559
+ flexDirection: "column"
1560
+ },
1561
+ day: {
1562
+ display: "grid",
1563
+ gridTemplateColumns: "112px minmax(0, 1fr)",
1564
+ alignItems: "start",
1565
+ columnGap: "3",
1566
+ p: "3",
1567
+ borderBlockEndWidth: "default",
1568
+ borderBlockEndStyle: "solid",
1569
+ borderBlockEndColor: "border"
1570
+ },
1571
+ dayHeading: {
1572
+ m: 0,
1573
+ display: "inline-flex",
1574
+ alignItems: "center",
1575
+ justifyContent: "flex-start",
1576
+ gap: "2",
1577
+ color: "fg.muted",
1578
+ fontFamily: "body",
1579
+ fontSize: "lg",
1580
+ fontWeight: "semibold",
1581
+ lineHeight: "tight",
1582
+ whiteSpace: "nowrap"
1583
+ },
1584
+ dayWeekday: {
1585
+ display: "inline-block",
1586
+ fontSize: "lg"
1587
+ },
1588
+ dayNumber: {
1589
+ display: "inline-flex",
1590
+ flexShrink: 0,
1591
+ alignItems: "center",
1592
+ justifyContent: "center",
1593
+ w: "30px",
1594
+ h: "30px",
1595
+ borderRadius: "full",
1596
+ fontWeight: "bold"
1597
+ },
1598
+ events: {
1599
+ display: "flex",
1600
+ flexDirection: "column",
1601
+ gap: "2"
1602
+ },
1603
+ eventRow: {
1604
+ display: "grid",
1605
+ gridTemplateColumns: "160px minmax(0, 1fr)",
1606
+ alignItems: "center",
1607
+ gap: "3"
1608
+ },
1609
+ eventContent: {
1610
+ display: "flex",
1611
+ alignItems: "center",
1612
+ gap: "2",
1613
+ justifySelf: "start",
1614
+ minW: 0
1615
+ },
1616
+ eventTime: {
1617
+ whiteSpace: "nowrap"
1618
+ }
1619
+ },
1620
+ variants: {
1621
+ isHighlightedDay: {
1622
+ true: {
1623
+ dayNumber: {
1624
+ bg: "primary",
1625
+ color: "fg.onPrimary"
1626
+ }
1627
+ },
1628
+ false: {}
1629
+ },
1630
+ isLastDay: {
1631
+ true: {
1632
+ day: {
1633
+ borderBlockEndWidth: 0
1634
+ }
1635
+ },
1636
+ false: {}
1637
+ },
1638
+ isPastEvent: {
1639
+ true: {
1640
+ eventRow: {
1641
+ opacity: 0.64
1642
+ }
1643
+ },
1644
+ false: {}
1645
+ },
1646
+ isInteractiveEvent: {
1647
+ true: {
1648
+ eventContent: {
1649
+ appearance: "none",
1650
+ bg: "none",
1651
+ borderWidth: 0,
1652
+ p: 0,
1653
+ m: 0,
1654
+ font: "inherit",
1655
+ textAlign: "inherit",
1656
+ color: "inherit",
1657
+ cursor: "pointer",
1658
+ borderRadius: "sm",
1659
+ _focusVisible: {
1660
+ outlineWidth: "focus",
1661
+ outlineStyle: "solid",
1662
+ outlineColor: "primary"
1663
+ }
1664
+ }
1665
+ },
1666
+ false: {}
1667
+ }
1668
+ },
1669
+ defaultVariants: {
1670
+ isHighlightedDay: false,
1671
+ isLastDay: false,
1672
+ isPastEvent: false,
1673
+ isInteractiveEvent: false
1674
+ }
1675
+ });
1676
+ var styles2 = scheduleListViewRecipe();
1677
+ function ListEvent({
1678
+ event,
1679
+ isPast
1680
+ }) {
1681
+ const { categoryMap, timezoneID } = useScheduleContext();
1682
+ const { popover, triggerProps } = useScheduleEventPopover(event, {
1683
+ placement: "end"
1684
+ });
1685
+ const category = getCategory(categoryMap, event);
1686
+ const eventDataState = isPast ? "past" : void 0;
1687
+ const classes = scheduleListViewRecipe({
1688
+ isInteractiveEvent: triggerProps != null,
1689
+ isPastEvent: isPast
1690
+ });
1691
+ const eventContent = /* @__PURE__ */ jsxs(Fragment, { children: [
1692
+ /* @__PURE__ */ jsx(Tooltip, { content: category.label, hoverIndication: "never", children: /* @__PURE__ */ jsx(
1693
+ "span",
1694
+ {
1695
+ "aria-label": category.label,
1696
+ className: scheduleEventRecipe({ color: category.color }).dot,
1697
+ role: "img"
1698
+ }
1699
+ ) }),
1700
+ /* @__PURE__ */ jsx(Text, { children: event.title })
1701
+ ] });
1702
+ return /* @__PURE__ */ jsxs("div", { className: classes.eventRow, "data-state": eventDataState, children: [
1703
+ /* @__PURE__ */ jsx(Text, { className: classes.eventTime, color: "secondary", type: "supporting", children: isDayEvent(event) ? "All day" : getEventTimeLabel(event, timezoneID) }),
1704
+ triggerProps != null ? /* @__PURE__ */ jsx(
1705
+ "button",
1706
+ {
1707
+ className: classes.eventContent,
1708
+ "data-state": eventDataState,
1709
+ "data-testid": `schedule-event-${event.id}`,
1710
+ type: "button",
1711
+ ...triggerProps,
1712
+ children: eventContent
1713
+ }
1714
+ ) : /* @__PURE__ */ jsx(
1715
+ "div",
1716
+ {
1717
+ className: classes.eventContent,
1718
+ "data-state": eventDataState,
1719
+ "data-testid": `schedule-event-${event.id}`,
1720
+ children: eventContent
1721
+ }
1722
+ ),
1723
+ popover
1724
+ ] });
1725
+ }
1726
+ function ScheduleListView() {
1727
+ const { events, highlightDate, isLoading, range, timezoneID } = useScheduleContext();
1728
+ const days = enumerateDates(range.startDate, range.endDate);
1729
+ const currentTime2 = useCurrentTime();
1730
+ const currentPlainDate = plainDateFromInstant(currentTime2, timezoneID);
1731
+ const highlightPlainDate = highlightDate.toPlainDate();
1732
+ const endDate = range.endDate.add({ days: -1 });
1733
+ const title = formatListRangeTitle(range.startDate, endDate);
1734
+ const visibleDays = days.map((day) => {
1735
+ const dayEvents = events.filter(
1736
+ (event) => eventOccursOnDate(event, day, timezoneID)
1737
+ );
1738
+ const isCurrentDay = plainDateIsEqual(day, currentPlainDate);
1739
+ const isHighlightedDay = plainDateIsEqual(day, highlightPlainDate);
1740
+ const isBaseDay = plainDateIsEqual(day, range.startDate);
1741
+ return {
1742
+ day,
1743
+ dayEvents,
1744
+ isCurrentDay,
1745
+ isHighlightedDay,
1746
+ isVisible: dayEvents.length > 0 || isCurrentDay || isBaseDay
1747
+ };
1748
+ }).filter((dayRecord) => dayRecord.isVisible);
1749
+ return /* @__PURE__ */ jsx(ScheduleFrame, { title, titleLabel: title, children: /* @__PURE__ */ jsx("div", { className: cx(scheduleClasses.surface, styles2.list), children: visibleDays.map(
1750
+ ({ day, dayEvents, isCurrentDay, isHighlightedDay }, index) => {
1751
+ const fullDate = plainDateFormat(day, DATE_FORMAT_WITH_WEEKDAY);
1752
+ const dayClasses = scheduleListViewRecipe({
1753
+ isHighlightedDay,
1754
+ isLastDay: index === visibleDays.length - 1
1755
+ });
1756
+ return /* @__PURE__ */ jsxs("section", { className: dayClasses.day, children: [
1757
+ /* @__PURE__ */ jsxs(
1758
+ "h4",
1759
+ {
1760
+ "aria-current": isHighlightedDay ? "date" : void 0,
1761
+ "aria-label": fullDate,
1762
+ className: dayClasses.dayHeading,
1763
+ children: [
1764
+ /* @__PURE__ */ jsx("span", { className: dayClasses.dayNumber, children: day.day }),
1765
+ /* @__PURE__ */ jsx("span", { className: dayClasses.dayWeekday, children: plainDateFormat(day, { weekday: "short" }) })
1766
+ ]
1767
+ }
1768
+ ),
1769
+ /* @__PURE__ */ jsx("div", { className: dayClasses.events, children: renderListRows({
1770
+ currentTime: currentTime2,
1771
+ events: dayEvents,
1772
+ isShowingCurrentTime: isCurrentDay && !isLoading,
1773
+ timezoneID
1774
+ }) })
1775
+ ] }, day.toString());
1776
+ }
1777
+ ) }) });
1778
+ }
1779
+ function renderListRows({
1780
+ currentTime: currentTime2,
1781
+ events,
1782
+ isShowingCurrentTime,
1783
+ timezoneID
1784
+ }) {
1785
+ const rows = events.map((event) => /* @__PURE__ */ jsx(
1786
+ ListEvent,
1787
+ {
1788
+ event,
1789
+ isPast: isEventInPast(event, currentTime2, timezoneID)
1790
+ },
1791
+ event.id
1792
+ ));
1793
+ if (!isShowingCurrentTime) {
1794
+ return rows;
1795
+ }
1796
+ const marker = /* @__PURE__ */ jsx(
1797
+ ScheduleCurrentTimeIndicator,
1798
+ {
1799
+ layout: "list",
1800
+ testId: "schedule-list-current-time"
1801
+ },
1802
+ "current-time"
1803
+ );
1804
+ const insertIndex = events.findIndex(
1805
+ (event) => !isDayEvent(event) && event.start > currentTime2
1806
+ );
1807
+ if (insertIndex < 0) {
1808
+ return [...rows, marker];
1809
+ }
1810
+ return [...rows.slice(0, insertIndex), marker, ...rows.slice(insertIndex)];
1811
+ }
1812
+ function createScheduleListView({
1813
+ days = 7
1814
+ } = {}) {
1815
+ return {
1816
+ component: ScheduleListView,
1817
+ getDateRange: (date) => [
1818
+ date.startOfDay(),
1819
+ date.startOfDay().addDays(days)
1820
+ ],
1821
+ getNextDateRange: (date) => ({
1822
+ label: "Next range",
1823
+ range: [
1824
+ date.startOfDay().addDays(days),
1825
+ date.startOfDay().addDays(days * 2)
1826
+ ]
1827
+ }),
1828
+ getPreviousDateRange: (date) => ({
1829
+ label: "Previous range",
1830
+ range: [date.startOfDay().addDays(-days), date.startOfDay()]
1831
+ }),
1832
+ options: { days }
1833
+ };
1834
+ }
1835
+
1836
+ // src/components/Schedule/MonthlyView.recipe.ts
1837
+ var scheduleMonthlyViewRecipe = sva({
1838
+ slots: [
1839
+ "grid",
1840
+ "weekday",
1841
+ "cell",
1842
+ "dayNumber",
1843
+ "todayText",
1844
+ "monthSurface",
1845
+ "monthCellGrid",
1846
+ "monthEventOverlay",
1847
+ "monthEventSpan",
1848
+ "monthSeeMoreSpan",
1849
+ "monthSeeMoreButton",
1850
+ "monthPopoverContent",
1851
+ "monthPopoverEvents"
1852
+ ],
1853
+ base: {
1854
+ grid: {
1855
+ display: "grid",
1856
+ gridTemplateColumns: "repeat(7, minmax(0, 1fr))"
1857
+ },
1858
+ weekday: {
1859
+ p: "2",
1860
+ textAlign: "center",
1861
+ borderBlockEndWidth: "default",
1862
+ borderBlockEndStyle: "solid",
1863
+ borderBlockEndColor: "border"
1864
+ },
1865
+ cell: {
1866
+ minH: "24",
1867
+ p: "0.5",
1868
+ borderInlineEndWidth: "default",
1869
+ borderInlineEndStyle: "solid",
1870
+ borderInlineEndColor: "border",
1871
+ borderBlockEndWidth: "default",
1872
+ borderBlockEndStyle: "solid",
1873
+ borderBlockEndColor: "border"
1874
+ },
1875
+ dayNumber: {
1876
+ display: "inline-flex",
1877
+ alignItems: "center",
1878
+ justifyContent: "center",
1879
+ w: "6",
1880
+ h: "6",
1881
+ m: "0.5",
1882
+ borderRadius: "full"
1883
+ },
1884
+ monthSurface: {
1885
+ position: "relative",
1886
+ gridColumn: "1 / -1"
1887
+ },
1888
+ monthCellGrid: {
1889
+ display: "grid",
1890
+ gridTemplateColumns: "repeat(7, minmax(0, 1fr))",
1891
+ gridAutoRows: "var(--schedule-month-row-height)"
1892
+ },
1893
+ monthEventOverlay: {
1894
+ position: "absolute",
1895
+ inset: 0,
1896
+ display: "grid",
1897
+ gridTemplateColumns: "repeat(7, minmax(0, 1fr))",
1898
+ gridAutoRows: "var(--schedule-month-row-height)",
1899
+ pointerEvents: "none"
1900
+ },
1901
+ monthEventSpan: {
1902
+ alignSelf: "start",
1903
+ minW: 0,
1904
+ mx: "0.5",
1905
+ pointerEvents: "auto",
1906
+ zIndex: 1
1907
+ },
1908
+ monthSeeMoreSpan: {
1909
+ alignSelf: "start",
1910
+ minW: 0,
1911
+ mx: "0.5",
1912
+ pointerEvents: "auto",
1913
+ zIndex: 2
1914
+ },
1915
+ monthSeeMoreButton: {
1916
+ display: "inline-flex",
1917
+ alignItems: "center",
1918
+ maxW: "full",
1919
+ h: "5",
1920
+ px: "1",
1921
+ borderRadius: "sm",
1922
+ color: "primary",
1923
+ cursor: "pointer",
1924
+ fontSize: "xs",
1925
+ fontWeight: "medium",
1926
+ lineHeight: "tight",
1927
+ overflow: "hidden",
1928
+ textOverflow: "ellipsis",
1929
+ whiteSpace: "nowrap",
1930
+ _hover: {
1931
+ bg: "bg.muted"
1932
+ }
1933
+ },
1934
+ monthPopoverContent: {
1935
+ display: "flex",
1936
+ flexDirection: "column",
1937
+ gap: "1",
1938
+ p: "3"
1939
+ },
1940
+ monthPopoverEvents: {
1941
+ display: "flex",
1942
+ flexDirection: "column",
1943
+ gap: 0,
1944
+ m: 0,
1945
+ p: 0,
1946
+ listStyleType: "none"
1947
+ }
1948
+ },
1949
+ variants: {
1950
+ isLastColumn: {
1951
+ true: { cell: { borderInlineEndWidth: 0 } },
1952
+ false: {}
1953
+ },
1954
+ isLastRow: {
1955
+ true: { cell: { borderBlockEndWidth: 0 } },
1956
+ false: {}
1957
+ },
1958
+ isOtherMonth: {
1959
+ true: {
1960
+ cell: {
1961
+ bg: "bg.subtle",
1962
+ color: "fg.muted"
1963
+ }
1964
+ },
1965
+ false: {}
1966
+ },
1967
+ isToday: {
1968
+ true: {
1969
+ dayNumber: {
1970
+ bg: "primary",
1971
+ color: "fg.onPrimary"
1972
+ },
1973
+ todayText: {
1974
+ marginInlineEnd: "1px"
1975
+ }
1976
+ },
1977
+ false: {}
1978
+ }
1979
+ },
1980
+ defaultVariants: {
1981
+ isLastColumn: false,
1982
+ isLastRow: false,
1983
+ isOtherMonth: false,
1984
+ isToday: false
1985
+ }
1986
+ });
1987
+ var styles3 = scheduleMonthlyViewRecipe();
1988
+ var weekdays = [
1989
+ { label: "Sunday", shortLabel: "Sun" },
1990
+ { label: "Monday", shortLabel: "Mon" },
1991
+ { label: "Tuesday", shortLabel: "Tue" },
1992
+ { label: "Wednesday", shortLabel: "Wed" },
1993
+ { label: "Thursday", shortLabel: "Thu" },
1994
+ { label: "Friday", shortLabel: "Fri" },
1995
+ { label: "Saturday", shortLabel: "Sat" }
1996
+ ];
1997
+ function getWeekdays(weekStartsOn) {
1998
+ return Array.from(
1999
+ { length: 7 },
2000
+ (_, index) => weekdays[(index + weekStartsOn) % 7]
2001
+ );
2002
+ }
2003
+ function setStartOfWeek(date, weekStartsOn) {
2004
+ const daysSinceWeekStart = (plainDateDayOfWeek(date) - weekStartsOn + 7) % 7;
2005
+ return date.add({ days: -daysSinceWeekStart });
2006
+ }
2007
+ function getMonthDays(date, weekCount, weekStartsOn) {
2008
+ const firstOfMonth = date.with({ day: 1 });
2009
+ const firstVisibleDay = setStartOfWeek(firstOfMonth, weekStartsOn);
2010
+ return Array.from(
2011
+ { length: weekCount * 7 },
2012
+ (_, index) => firstVisibleDay.add({ days: index })
2013
+ );
2014
+ }
2015
+ function getVisibleMonthRange(date, month, weekCount, weekStartsOn) {
2016
+ const firstVisible = setStartOfWeek(month.with({ day: 1 }), weekStartsOn);
2017
+ const end = firstVisible.add({ days: weekCount * 7 });
2018
+ const currentDate = date.toPlainDate();
2019
+ return [
2020
+ date.startOfDay().addDays(currentDate.until(firstVisible).days),
2021
+ date.startOfDay().addDays(currentDate.until(end).days)
2022
+ ];
2023
+ }
2024
+ var DEFAULT_MONTH_ROW_HEIGHT = 128;
2025
+ var MONTH_EVENT_TOP_OFFSET = 30;
2026
+ var MONTH_EVENT_LEVEL_HEIGHT = 22;
2027
+ var MONTH_EVENT_HEIGHT = 20;
2028
+ var MONTH_EVENT_BOTTOM_PADDING = 4;
2029
+ function getEventDateSpan(event, timezoneID) {
2030
+ if (isDayEvent(event)) {
2031
+ return [event.start, event.end];
2032
+ }
2033
+ return [
2034
+ plainDateFromInstant(event.start, timezoneID),
2035
+ plainDateFromInstant(Math.max(event.end - 1, event.start), timezoneID)
2036
+ ];
2037
+ }
2038
+ function getEventVisibleDateIndexes({
2039
+ event,
2040
+ firstDay,
2041
+ lastDay,
2042
+ timezoneID
2043
+ }) {
2044
+ const [eventStart, eventEnd] = getEventDateSpan(event, timezoneID);
2045
+ if (plainDateIsBefore(eventEnd, firstDay) || plainDateIsAfter(eventStart, lastDay)) {
2046
+ return null;
2047
+ }
2048
+ const startIndex = plainDateIsBefore(eventStart, firstDay) ? 0 : firstDay.until(eventStart).days;
2049
+ const endIndex = plainDateIsAfter(eventEnd, lastDay) ? firstDay.until(lastDay).days : firstDay.until(eventEnd).days;
2050
+ return [startIndex, endIndex];
2051
+ }
2052
+ function getEventsByDate(events, days, timezoneID) {
2053
+ const eventsByDate = /* @__PURE__ */ new Map();
2054
+ if (days.length === 0) {
2055
+ return eventsByDate;
2056
+ }
2057
+ const firstDay = days[0];
2058
+ const lastDay = days[days.length - 1];
2059
+ days.forEach((day) => {
2060
+ eventsByDate.set(day.toString(), []);
2061
+ });
2062
+ events.forEach((event) => {
2063
+ const indexes = getEventVisibleDateIndexes({
2064
+ event,
2065
+ firstDay,
2066
+ lastDay,
2067
+ timezoneID
2068
+ });
2069
+ if (indexes == null) {
2070
+ return;
2071
+ }
2072
+ const [startIndex, endIndex] = indexes;
2073
+ for (let index = startIndex; index <= endIndex; index += 1) {
2074
+ eventsByDate.get(days[index].toString())?.push(event);
2075
+ }
2076
+ });
2077
+ return eventsByDate;
2078
+ }
2079
+ function getAvailableLevel(levels, columnStart) {
2080
+ const level = levels.findIndex((columnEnd) => columnStart > columnEnd);
2081
+ return level >= 0 ? level : levels.length;
2082
+ }
2083
+ function getMonthEventSegments(events, days, timezoneID) {
2084
+ const segments = [];
2085
+ const levelsByWeek = [];
2086
+ if (days.length === 0) {
2087
+ return segments;
2088
+ }
2089
+ const firstDay = days[0];
2090
+ const lastDay = days[days.length - 1];
2091
+ const monthEvents = events.map((event) => {
2092
+ const indexes = getEventVisibleDateIndexes({
2093
+ event,
2094
+ firstDay,
2095
+ lastDay,
2096
+ timezoneID
2097
+ });
2098
+ if (indexes == null) {
2099
+ return null;
2100
+ }
2101
+ const [startIndex, endIndex] = indexes;
2102
+ return {
2103
+ endIndex,
2104
+ event,
2105
+ isPriority: isDayEvent(event) || endIndex > startIndex,
2106
+ startIndex
2107
+ };
2108
+ }).filter(
2109
+ (record) => record != null
2110
+ ).sort((a, b) => {
2111
+ if (a.startIndex !== b.startIndex) {
2112
+ return a.startIndex - b.startIndex;
2113
+ }
2114
+ if (a.isPriority !== b.isPriority) {
2115
+ return a.isPriority ? -1 : 1;
2116
+ }
2117
+ const aDuration = a.endIndex - a.startIndex;
2118
+ const bDuration = b.endIndex - b.startIndex;
2119
+ if (aDuration !== bDuration) {
2120
+ return bDuration - aDuration;
2121
+ }
2122
+ return a.event.title.localeCompare(b.event.title);
2123
+ });
2124
+ monthEvents.forEach(({ endIndex, event, startIndex }) => {
2125
+ for (let week = Math.floor(startIndex / 7); week <= Math.floor(endIndex / 7); week += 1) {
2126
+ const columnStart = week === Math.floor(startIndex / 7) ? startIndex % 7 : 0;
2127
+ const columnEnd = week === Math.floor(endIndex / 7) ? endIndex % 7 : 6;
2128
+ const weekLevels = levelsByWeek[week] ?? (levelsByWeek[week] = []);
2129
+ const level = getAvailableLevel(weekLevels, columnStart);
2130
+ weekLevels[level] = columnEnd;
2131
+ segments.push({
2132
+ columnEnd,
2133
+ columnStart,
2134
+ endIndex,
2135
+ event,
2136
+ level,
2137
+ startIndex,
2138
+ week
2139
+ });
2140
+ }
2141
+ });
2142
+ return segments;
2143
+ }
2144
+ function getMonthEventSegmentStyle({
2145
+ columnEnd,
2146
+ columnStart,
2147
+ level,
2148
+ week
2149
+ }) {
2150
+ return {
2151
+ gridColumn: `${columnStart + 1} / ${columnEnd + 2}`,
2152
+ gridRow: `${week + 1}`,
2153
+ marginBlockStart: `${MONTH_EVENT_TOP_OFFSET + level * MONTH_EVENT_LEVEL_HEIGHT}px`
2154
+ };
2155
+ }
2156
+ function getMonthEventLevelCount(monthRowHeight) {
2157
+ const availableHeight = monthRowHeight - MONTH_EVENT_TOP_OFFSET - MONTH_EVENT_HEIGHT - MONTH_EVENT_BOTTOM_PADDING;
2158
+ return Math.max(
2159
+ 1,
2160
+ Math.floor(availableHeight / MONTH_EVENT_LEVEL_HEIGHT) + 1
2161
+ );
2162
+ }
2163
+ function getMonthSeeMoreStyle({
2164
+ dayIndex,
2165
+ level
2166
+ }) {
2167
+ return {
2168
+ gridColumn: `${dayIndex % 7 + 1} / ${dayIndex % 7 + 2}`,
2169
+ gridRow: `${Math.floor(dayIndex / 7) + 1}`,
2170
+ marginBlockStart: `${MONTH_EVENT_TOP_OFFSET + level * MONTH_EVENT_LEVEL_HEIGHT}px`
2171
+ };
2172
+ }
2173
+ function segmentCoversDay(segment, dayIndex) {
2174
+ return segment.startIndex <= dayIndex && segment.endIndex >= dayIndex;
2175
+ }
2176
+ function shouldReserveSeeMoreLevel({
2177
+ dayEvents,
2178
+ levelCount
2179
+ }) {
2180
+ return dayEvents.length > levelCount;
2181
+ }
2182
+ function isSegmentVisible({
2183
+ dayEventsByIndex,
2184
+ levelCount,
2185
+ segment
2186
+ }) {
2187
+ for (let index = segment.startIndex; index <= segment.endIndex; index += 1) {
2188
+ const visibleLevelCount = shouldReserveSeeMoreLevel({
2189
+ dayEvents: dayEventsByIndex[index] ?? [],
2190
+ levelCount
2191
+ }) ? levelCount - 1 : levelCount;
2192
+ if (segment.level >= visibleLevelCount) {
2193
+ return false;
2194
+ }
2195
+ }
2196
+ return true;
2197
+ }
2198
+ function getHiddenEventsByDate({
2199
+ dayEventsByIndex,
2200
+ days,
2201
+ segments,
2202
+ visibleSegments
2203
+ }) {
2204
+ const hiddenEventsByDate = /* @__PURE__ */ new Map();
2205
+ days.forEach((day, dayIndex) => {
2206
+ const allSegmentEventIds = new Set(
2207
+ segments.filter((segment) => segmentCoversDay(segment, dayIndex)).map((segment) => segment.event.id)
2208
+ );
2209
+ const visibleSegmentEventIds = new Set(
2210
+ visibleSegments.filter((segment) => segmentCoversDay(segment, dayIndex)).map((segment) => segment.event.id)
2211
+ );
2212
+ const hiddenEvents = (dayEventsByIndex[dayIndex] ?? []).filter(
2213
+ (event) => allSegmentEventIds.has(event.id) && !visibleSegmentEventIds.has(event.id)
2214
+ );
2215
+ if (hiddenEvents.length > 0) {
2216
+ hiddenEventsByDate.set(day.toString(), hiddenEvents);
2217
+ }
2218
+ });
2219
+ return hiddenEventsByDate;
2220
+ }
2221
+ function getGridCellName({
2222
+ categoryMap,
2223
+ date,
2224
+ events,
2225
+ timezoneID
2226
+ }) {
2227
+ const eventLabels = events.map(
2228
+ (event) => getEventAccessibleLabel(event, categoryMap, timezoneID)
2229
+ );
2230
+ const dateLabel = plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY);
2231
+ return eventLabels.length > 0 ? `${dateLabel}. ${eventLabels.join(". ")}` : dateLabel;
2232
+ }
2233
+ function ScheduleMonthlyView({
2234
+ options
2235
+ }) {
2236
+ const { categoryMap, events, highlightDate, plugins, timezoneID, viewDate } = useScheduleContext();
2237
+ const eventPopoverActive = hasEventPopoverPlugin(plugins);
2238
+ const currentTime2 = useCurrentTime();
2239
+ const month = viewDate.toPlainDate();
2240
+ const title = formatMonthTitle(month);
2241
+ const monthRowHeight = Math.max(
2242
+ 64,
2243
+ Math.floor(options.monthRowHeight ?? DEFAULT_MONTH_ROW_HEIGHT)
2244
+ );
2245
+ const weekStartsOn = options.weekStartsOn ?? 0;
2246
+ const days = getMonthDays(month, options.weekCount ?? 6, weekStartsOn);
2247
+ const eventSegments = getMonthEventSegments(events, days, timezoneID);
2248
+ const eventsByDate = getEventsByDate(events, days, timezoneID);
2249
+ const dayEventsByIndex = days.map(
2250
+ (day) => eventsByDate.get(day.toString()) ?? []
2251
+ );
2252
+ const monthEventLevelCount = getMonthEventLevelCount(monthRowHeight);
2253
+ const visibleEventSegments = eventSegments.filter(
2254
+ (segment) => isSegmentVisible({
2255
+ dayEventsByIndex,
2256
+ levelCount: monthEventLevelCount,
2257
+ segment
2258
+ })
2259
+ );
2260
+ const hiddenEventsByDate = getHiddenEventsByDate({
2261
+ dayEventsByIndex,
2262
+ days,
2263
+ segments: eventSegments,
2264
+ visibleSegments: visibleEventSegments
2265
+ });
2266
+ const today = highlightDate.toPlainDate();
2267
+ const visibleWeekdays = getWeekdays(weekStartsOn);
2268
+ const monthGridStyle = {
2269
+ "--schedule-month-row-height": `${monthRowHeight}px`
2270
+ };
2271
+ return /* @__PURE__ */ jsx(ScheduleFrame, { title, titleLabel: title, children: /* @__PURE__ */ jsxs(
2272
+ "div",
2273
+ {
2274
+ "aria-label": title,
2275
+ className: cx(scheduleClasses.surface, styles3.grid),
2276
+ role: "grid",
2277
+ children: [
2278
+ visibleWeekdays.map((weekday, index) => /* @__PURE__ */ jsx(
2279
+ "div",
2280
+ {
2281
+ "aria-colindex": index + 1,
2282
+ "aria-label": weekday.label,
2283
+ className: styles3.weekday,
2284
+ role: "columnheader",
2285
+ children: /* @__PURE__ */ jsx(Heading, { color: "secondary", level: 4, children: weekday.shortLabel })
2286
+ },
2287
+ weekday.label
2288
+ )),
2289
+ /* @__PURE__ */ jsxs("div", { className: styles3.monthSurface, children: [
2290
+ /* @__PURE__ */ jsx("div", { className: styles3.monthCellGrid, style: monthGridStyle, children: days.map((day, index) => {
2291
+ const dayEvents = eventsByDate.get(day.toString()) ?? [];
2292
+ const isCurrentMonth = day.month === month.month && day.year === month.year;
2293
+ const isLastColumn = index % 7 === 6;
2294
+ const isLastRow = index >= days.length - 7;
2295
+ const isToday = plainDateIsEqual(day, today);
2296
+ const dayClasses = scheduleMonthlyViewRecipe({
2297
+ isLastColumn,
2298
+ isLastRow,
2299
+ isOtherMonth: !isCurrentMonth,
2300
+ isToday
2301
+ });
2302
+ const dayCellPluginProps = plugins.reduce(
2303
+ (props, plugin) => ({
2304
+ ...props,
2305
+ ...plugin.getMonthCellProps?.({
2306
+ date: day,
2307
+ timezoneID
2308
+ })
2309
+ }),
2310
+ {}
2311
+ );
2312
+ return /* @__PURE__ */ jsx(
2313
+ "div",
2314
+ {
2315
+ "aria-current": isToday ? "date" : void 0,
2316
+ "aria-label": getGridCellName({
2317
+ categoryMap,
2318
+ date: day,
2319
+ // When events are interactive popover triggers they expose
2320
+ // their own accessible names, so omit them here to avoid
2321
+ // announcing each event twice.
2322
+ events: eventPopoverActive ? [] : dayEvents,
2323
+ timezoneID
2324
+ }),
2325
+ className: dayClasses.cell,
2326
+ "data-testid": `schedule-month-cell-${day.toString()}`,
2327
+ role: "gridcell",
2328
+ ...dayCellPluginProps,
2329
+ children: /* @__PURE__ */ jsx("span", { className: dayClasses.dayNumber, children: /* @__PURE__ */ jsx(
2330
+ Text,
2331
+ {
2332
+ as: "span",
2333
+ className: dayClasses.todayText,
2334
+ color: "inherit",
2335
+ hasTabularNumbers: true,
2336
+ type: "supporting",
2337
+ weight: "medium",
2338
+ children: day.day
2339
+ }
2340
+ ) })
2341
+ },
2342
+ day.toString()
2343
+ );
2344
+ }) }),
2345
+ /* @__PURE__ */ jsxs("div", { className: styles3.monthEventOverlay, style: monthGridStyle, children: [
2346
+ visibleEventSegments.map((segment) => /* @__PURE__ */ jsx(
2347
+ "div",
2348
+ {
2349
+ "aria-hidden": eventPopoverActive ? void 0 : "true",
2350
+ className: styles3.monthEventSpan,
2351
+ "data-testid": `schedule-event-span-${segment.event.id}`,
2352
+ style: getMonthEventSegmentStyle(segment),
2353
+ children: /* @__PURE__ */ jsx(
2354
+ CalendarMonthEventPill,
2355
+ {
2356
+ event: segment.event,
2357
+ isPast: isEventInPast(segment.event, currentTime2, timezoneID)
2358
+ }
2359
+ )
2360
+ },
2361
+ `${segment.event.id}:${segment.week}:${segment.columnStart}`
2362
+ )),
2363
+ days.map((day, dayIndex) => {
2364
+ const hiddenEvents = hiddenEventsByDate.get(day.toString()) ?? [];
2365
+ if (hiddenEvents.length === 0) {
2366
+ return null;
2367
+ }
2368
+ const dateLabel = plainDateFormat(day, DATE_FORMAT_WITH_WEEKDAY);
2369
+ const label = `Show ${hiddenEvents.length} more events for ${dateLabel}`;
2370
+ return /* @__PURE__ */ jsx(
2371
+ "div",
2372
+ {
2373
+ className: styles3.monthSeeMoreSpan,
2374
+ style: getMonthSeeMoreStyle({
2375
+ dayIndex,
2376
+ level: Math.max(0, monthEventLevelCount - 1)
2377
+ }),
2378
+ children: /* @__PURE__ */ jsx(
2379
+ ScheduleEventOverflowPopover,
2380
+ {
2381
+ buttonClassName: styles3.monthSeeMoreButton,
2382
+ contentClassName: styles3.monthPopoverContent,
2383
+ events: eventsByDate.get(day.toString()) ?? [],
2384
+ eventsClassName: styles3.monthPopoverEvents,
2385
+ hiddenEventCount: hiddenEvents.length,
2386
+ label,
2387
+ renderEvent: (event) => /* @__PURE__ */ jsx(
2388
+ CalendarMonthEventPill,
2389
+ {
2390
+ event,
2391
+ isPast: isEventInPast(event, currentTime2, timezoneID)
2392
+ }
2393
+ ),
2394
+ testId: `schedule-month-see-more-${day.toString()}`,
2395
+ title: dateLabel
2396
+ }
2397
+ )
2398
+ },
2399
+ `${day.toString()}-see-more`
2400
+ );
2401
+ })
2402
+ ] })
2403
+ ] })
2404
+ ]
2405
+ }
2406
+ ) });
2407
+ }
2408
+ function createScheduleMonthlyView({
2409
+ monthRowHeight = DEFAULT_MONTH_ROW_HEIGHT,
2410
+ weekCount = 6,
2411
+ weekStartsOn = 0
2412
+ } = {}) {
2413
+ return {
2414
+ component: ScheduleMonthlyView,
2415
+ getDateRange: (date) => {
2416
+ const month = date.toPlainDate();
2417
+ return getVisibleMonthRange(date, month, weekCount, weekStartsOn);
2418
+ },
2419
+ getNextDateRange: (date) => {
2420
+ const nextMonth = date.toPlainDate().with({ day: 1 }).add({ months: 1 });
2421
+ return {
2422
+ label: "Next month",
2423
+ range: getVisibleMonthRange(date, nextMonth, weekCount, weekStartsOn)
2424
+ };
2425
+ },
2426
+ getPreviousDateRange: (date) => {
2427
+ const previousMonth = date.toPlainDate().with({ day: 1 }).subtract({ months: 1 });
2428
+ return {
2429
+ label: "Previous month",
2430
+ range: getVisibleMonthRange(
2431
+ date,
2432
+ previousMonth,
2433
+ weekCount,
2434
+ weekStartsOn
2435
+ )
2436
+ };
2437
+ },
2438
+ options: { monthRowHeight, weekCount, weekStartsOn }
2439
+ };
2440
+ }
2441
+ var DEFAULT_SNAP_MINUTES = 15;
2442
+ var MILLISECONDS_PER_MINUTE = 6e4;
2443
+ var MINUTES_PER_DAY = 24 * 60;
2444
+ function getSnappedMinutes(minutes, snapMinutes) {
2445
+ return Math.round(minutes / snapMinutes) * snapMinutes;
2446
+ }
2447
+ function getTimeGridStartMinutes({
2448
+ drag,
2449
+ hour,
2450
+ pointerOffsetMinutes,
2451
+ snapMinutes
2452
+ }) {
2453
+ return getSnappedMinutes(
2454
+ hour * 60 + pointerOffsetMinutes - drag.offsetMinutes,
2455
+ snapMinutes
2456
+ );
2457
+ }
2458
+ function instantFromDateAndMinutes(date, minutes, timezoneID) {
2459
+ const clampedMinutes = Math.round(
2460
+ Math.max(0, Math.min(MINUTES_PER_DAY - 1, minutes))
2461
+ );
2462
+ const hour = Math.floor(clampedMinutes / 60);
2463
+ const minute = clampedMinutes % 60;
2464
+ return date.toPlainDateTime(Temporal.PlainTime.from({ hour, minute })).toZonedDateTime(timezoneID).epochMilliseconds;
2465
+ }
2466
+ function moveEventToDate(event, date, timezoneID) {
2467
+ if (isDayEvent(event)) {
2468
+ const durationDays = event.start.until(event.end).days;
2469
+ return {
2470
+ end: date.add({ days: durationDays }),
2471
+ event,
2472
+ start: date
2473
+ };
2474
+ }
2475
+ const startTime = Temporal.Instant.fromEpochMilliseconds(event.start).toZonedDateTimeISO(timezoneID).toPlainTime();
2476
+ const start = date.toPlainDateTime(startTime).toZonedDateTime(timezoneID).epochMilliseconds;
2477
+ return {
2478
+ end: start + (event.end - event.start),
2479
+ event,
2480
+ start
2481
+ };
2482
+ }
2483
+ function moveEventToDateTime({
2484
+ date,
2485
+ drag,
2486
+ hour,
2487
+ pointerOffsetMinutes,
2488
+ snapMinutes,
2489
+ timezoneID
2490
+ }) {
2491
+ if (isDayEvent(drag.event)) {
2492
+ return null;
2493
+ }
2494
+ const startMinutes = getTimeGridStartMinutes({
2495
+ drag,
2496
+ hour,
2497
+ pointerOffsetMinutes,
2498
+ snapMinutes
2499
+ });
2500
+ const start = instantFromDateAndMinutes(date, startMinutes, timezoneID);
2501
+ return {
2502
+ end: start + (drag.event.end - drag.event.start),
2503
+ event: drag.event,
2504
+ start
2505
+ };
2506
+ }
2507
+ function hasChanged({
2508
+ end,
2509
+ event,
2510
+ start
2511
+ }) {
2512
+ return event.start !== start || event.end !== end;
2513
+ }
2514
+ function getDragEventClientY(dragEvent, fallback) {
2515
+ return Number.isFinite(dragEvent.clientY) ? dragEvent.clientY : fallback;
2516
+ }
2517
+ function applyDragPreview(drag, targetLeft, targetTop) {
2518
+ drag.previewElement.style.left = `${targetLeft}px`;
2519
+ drag.previewElement.style.top = `${targetTop}px`;
2520
+ }
2521
+ function resetDragPreview(drag) {
2522
+ drag.sourceElement.style.opacity = drag.initialOpacity;
2523
+ drag.previewElement.remove();
2524
+ }
2525
+ function createDragPreviewElement(event, sourceElement, sourceRect) {
2526
+ const preview = sourceElement.cloneNode(true);
2527
+ if (!(preview instanceof HTMLElement)) {
2528
+ throw new Error("Schedule event preview must be an HTMLElement.");
2529
+ }
2530
+ preview.setAttribute("aria-hidden", "true");
2531
+ preview.setAttribute(
2532
+ "data-testid",
2533
+ `schedule-event-move-preview-${event.id}`
2534
+ );
2535
+ preview.style.position = "fixed";
2536
+ preview.style.inset = "auto";
2537
+ preview.style.left = `${sourceRect.left}px`;
2538
+ preview.style.top = `${sourceRect.top}px`;
2539
+ preview.style.width = `${sourceRect.width}px`;
2540
+ preview.style.height = `${sourceRect.height}px`;
2541
+ preview.style.margin = "0";
2542
+ preview.style.opacity = "0.45";
2543
+ preview.style.pointerEvents = "none";
2544
+ preview.style.transform = "none";
2545
+ preview.style.zIndex = "1000";
2546
+ document.body.append(preview);
2547
+ return preview;
2548
+ }
2549
+ function createScheduleEventMovePlugin({
2550
+ dragRef,
2551
+ onMove,
2552
+ snapMinutes = DEFAULT_SNAP_MINUTES
2553
+ }) {
2554
+ const normalizedSnapMinutes = Number.isFinite(snapMinutes) && snapMinutes > 0 ? Math.max(1, Math.floor(snapMinutes)) : DEFAULT_SNAP_MINUTES;
2555
+ return {
2556
+ getEventProps({
2557
+ event,
2558
+ layout,
2559
+ timezoneID
2560
+ }) {
2561
+ if (layout !== "month" && (layout !== "timeGrid" || isDayEvent(event))) {
2562
+ return {};
2563
+ }
2564
+ return {
2565
+ draggable: true,
2566
+ onDragEnd: () => {
2567
+ if (dragRef.current != null) {
2568
+ resetDragPreview(dragRef.current);
2569
+ }
2570
+ dragRef.current = null;
2571
+ },
2572
+ onDragStart: (dragEvent) => {
2573
+ const element = dragEvent.currentTarget;
2574
+ const sourceRect = element.getBoundingClientRect();
2575
+ const isTimedTimeGridEvent = layout === "timeGrid" && !isDayEvent(event);
2576
+ const eventStartTime = isDayEvent(event) ? null : Temporal.Instant.fromEpochMilliseconds(event.start).toZonedDateTimeISO(timezoneID).toPlainTime();
2577
+ const eventStartMinutes = eventStartTime == null ? 0 : eventStartTime.hour * 60 + eventStartTime.minute;
2578
+ let offsetMinutes = eventStartMinutes;
2579
+ if (isTimedTimeGridEvent) {
2580
+ const durationMinutes = Math.max(
2581
+ 15,
2582
+ (event.end - event.start) / MILLISECONDS_PER_MINUTE
2583
+ );
2584
+ offsetMinutes = Math.max(
2585
+ 0,
2586
+ (getDragEventClientY(dragEvent, sourceRect.top) - sourceRect.top) / Math.max(1, sourceRect.height) * durationMinutes
2587
+ );
2588
+ }
2589
+ dragEvent.dataTransfer.setData("text/plain", event.id);
2590
+ dragEvent.dataTransfer.setDragImage(element, 0, 0);
2591
+ dragRef.current = {
2592
+ event,
2593
+ initialOpacity: element.style.opacity,
2594
+ offsetMinutes,
2595
+ previewElement: createDragPreviewElement(
2596
+ event,
2597
+ element,
2598
+ sourceRect
2599
+ ),
2600
+ sourceElement: element,
2601
+ sourceRect
2602
+ };
2603
+ element.style.opacity = "0.25";
2604
+ }
2605
+ };
2606
+ },
2607
+ getMonthCellProps({
2608
+ date,
2609
+ timezoneID
2610
+ }) {
2611
+ return {
2612
+ onDragOver: (dragEvent) => {
2613
+ if (dragRef.current != null) {
2614
+ dragEvent.preventDefault();
2615
+ const rect = dragEvent.currentTarget.getBoundingClientRect();
2616
+ applyDragPreview(dragRef.current, rect.left + 4, rect.top + 30);
2617
+ }
2618
+ },
2619
+ onDrop: (dragEvent) => {
2620
+ const drag = dragRef.current;
2621
+ if (drag == null) {
2622
+ return;
2623
+ }
2624
+ dragEvent.preventDefault();
2625
+ const change = moveEventToDate(drag.event, date, timezoneID);
2626
+ if (hasChanged(change)) {
2627
+ onMove(change);
2628
+ }
2629
+ resetDragPreview(drag);
2630
+ dragRef.current = null;
2631
+ }
2632
+ };
2633
+ },
2634
+ getTimeGridCellProps({
2635
+ date,
2636
+ hour,
2637
+ hourHeight,
2638
+ timezoneID
2639
+ }) {
2640
+ return {
2641
+ onDragOver: (dragEvent) => {
2642
+ if (dragRef.current != null && !isDayEvent(dragRef.current.event)) {
2643
+ dragEvent.preventDefault();
2644
+ const rect = dragEvent.currentTarget.getBoundingClientRect();
2645
+ const pointerOffsetMinutes = (getDragEventClientY(dragEvent, rect.top) - rect.top) / Math.max(1, hourHeight) * 60;
2646
+ const startMinutes = getTimeGridStartMinutes({
2647
+ drag: dragRef.current,
2648
+ hour,
2649
+ pointerOffsetMinutes,
2650
+ snapMinutes: normalizedSnapMinutes
2651
+ });
2652
+ const top = rect.top + (startMinutes - hour * 60) / 60 * hourHeight + 2;
2653
+ applyDragPreview(dragRef.current, rect.left + 2, top);
2654
+ }
2655
+ },
2656
+ onDrop: (dragEvent) => {
2657
+ const drag = dragRef.current;
2658
+ if (drag == null || isDayEvent(drag.event)) {
2659
+ return;
2660
+ }
2661
+ dragEvent.preventDefault();
2662
+ const rect = dragEvent.currentTarget.getBoundingClientRect();
2663
+ const pointerOffsetMinutes = (getDragEventClientY(dragEvent, rect.top) - rect.top) / Math.max(1, hourHeight) * 60;
2664
+ const change = moveEventToDateTime({
2665
+ date,
2666
+ drag,
2667
+ hour,
2668
+ pointerOffsetMinutes,
2669
+ snapMinutes: normalizedSnapMinutes,
2670
+ timezoneID
2671
+ });
2672
+ if (change != null && hasChanged(change)) {
2673
+ onMove(change);
2674
+ }
2675
+ resetDragPreview(drag);
2676
+ dragRef.current = null;
2677
+ }
2678
+ };
2679
+ }
2680
+ };
2681
+ }
2682
+ function useScheduleEventMovePlugin(options) {
2683
+ const optionsRef = useLatest_default(options);
2684
+ const dragRef = useRef(null);
2685
+ const onMove = useCallback(
2686
+ (change) => {
2687
+ optionsRef.current.onMove(change);
2688
+ },
2689
+ [optionsRef]
2690
+ );
2691
+ return useMemo(() => {
2692
+ return createScheduleEventMovePlugin({
2693
+ dragRef,
2694
+ onMove,
2695
+ snapMinutes: options.snapMinutes
2696
+ });
2697
+ }, [dragRef, onMove, options.snapMinutes]);
2698
+ }
2699
+ var MIN_DURATION_MINUTES = 15;
2700
+ var DEFAULT_SNAP_MINUTES2 = 15;
2701
+ var MILLISECONDS_PER_MINUTE2 = 6e4;
2702
+ var resizeHandle = cva({
2703
+ base: {
2704
+ position: "absolute",
2705
+ insetInline: 0,
2706
+ h: "3",
2707
+ cursor: "ns-resize",
2708
+ touchAction: "none",
2709
+ _focusVisible: {
2710
+ outlineWidth: "focus",
2711
+ outlineStyle: "solid",
2712
+ outlineColor: "primary",
2713
+ outlineOffset: "-2px"
2714
+ }
2715
+ },
2716
+ variants: {
2717
+ edge: {
2718
+ start: {
2719
+ insetBlockStart: 0
2720
+ },
2721
+ end: {
2722
+ insetBlockEnd: 0
2723
+ }
2724
+ }
2725
+ }
2726
+ });
2727
+ var resizeHandleClassNames = {
2728
+ end: resizeHandle({ edge: "end" }),
2729
+ start: resizeHandle({ edge: "start" })
2730
+ };
2731
+ function getDurationMinutes(start, end) {
2732
+ return (end - start) / MILLISECONDS_PER_MINUTE2;
2733
+ }
2734
+ function getSnappedDeltaMinutes(deltaPixels, hourHeight, snapMinutes) {
2735
+ const rawMinutes = deltaPixels / hourHeight * 60;
2736
+ return Math.round(rawMinutes / snapMinutes) * snapMinutes;
2737
+ }
2738
+ function getResizeRange(state, clientY) {
2739
+ const deltaMinutes = getSnappedDeltaMinutes(
2740
+ clientY - state.initialPointerY,
2741
+ state.hourHeight,
2742
+ state.snapMinutes
2743
+ );
2744
+ const delta = deltaMinutes * MILLISECONDS_PER_MINUTE2;
2745
+ const minDuration = MIN_DURATION_MINUTES * MILLISECONDS_PER_MINUTE2;
2746
+ if (state.edge === "start") {
2747
+ return {
2748
+ end: state.event.end,
2749
+ start: Math.min(state.event.end - minDuration, state.event.start + delta)
2750
+ };
2751
+ }
2752
+ return {
2753
+ end: Math.max(state.event.start + minDuration, state.event.end + delta),
2754
+ start: state.event.start
2755
+ };
2756
+ }
2757
+ function getPreviewHeight(state, range) {
2758
+ return `${Math.max(
2759
+ 36,
2760
+ getDurationMinutes(range.start, range.end) / 60 * state.hourHeight - 5
2761
+ )}px`;
2762
+ }
2763
+ function getPreviewTop(state, range) {
2764
+ const initialTop = Number.parseFloat(state.initialTop || "0");
2765
+ if (state.edge === "end") {
2766
+ return state.initialTop;
2767
+ }
2768
+ const deltaMinutes = getDurationMinutes(state.event.start, range.start);
2769
+ return `${initialTop + deltaMinutes / 60 * state.hourHeight}px`;
2770
+ }
2771
+ function applyPreview(state, range) {
2772
+ state.eventElement.style.height = getPreviewHeight(state, range);
2773
+ state.eventElement.style.top = getPreviewTop(state, range);
2774
+ }
2775
+ function ScheduleEventResizeHandle({
2776
+ edge,
2777
+ event,
2778
+ hourHeight,
2779
+ onResize,
2780
+ snapMinutes
2781
+ }) {
2782
+ const resizeStateRef = useRef(null);
2783
+ const pointerListenersRef = useRef(null);
2784
+ const removePointerListeners = useCallback(() => {
2785
+ const listeners2 = pointerListenersRef.current;
2786
+ if (listeners2 == null) {
2787
+ return;
2788
+ }
2789
+ window.removeEventListener("pointermove", listeners2.move);
2790
+ window.removeEventListener("pointerup", listeners2.up);
2791
+ window.removeEventListener("pointercancel", listeners2.cancel);
2792
+ pointerListenersRef.current = null;
2793
+ }, []);
2794
+ const finishResize = useCallback((clientY, isCommit) => {
2795
+ const state = resizeStateRef.current;
2796
+ if (state == null) {
2797
+ return;
2798
+ }
2799
+ const range = getResizeRange(state, clientY);
2800
+ if (isCommit) {
2801
+ if (range.start !== state.event.start || range.end !== state.event.end) {
2802
+ state.onResize({
2803
+ end: range.end,
2804
+ event: state.event,
2805
+ start: range.start
2806
+ });
2807
+ }
2808
+ } else {
2809
+ state.eventElement.style.height = state.initialHeight;
2810
+ state.eventElement.style.top = state.initialTop;
2811
+ }
2812
+ resizeStateRef.current = null;
2813
+ }, []);
2814
+ const handlePointerMove = useCallback((event2) => {
2815
+ const state = resizeStateRef.current;
2816
+ if (state == null) {
2817
+ return;
2818
+ }
2819
+ applyPreview(state, getResizeRange(state, event2.clientY));
2820
+ }, []);
2821
+ const handlePointerUp = useCallback(
2822
+ (event2) => {
2823
+ removePointerListeners();
2824
+ finishResize(event2.clientY, true);
2825
+ },
2826
+ [finishResize, removePointerListeners]
2827
+ );
2828
+ const handlePointerCancel = useCallback(
2829
+ (event2) => {
2830
+ removePointerListeners();
2831
+ finishResize(event2.clientY, false);
2832
+ },
2833
+ [finishResize, removePointerListeners]
2834
+ );
2835
+ const handlePointerDown = useCallback(
2836
+ (pointerEvent) => {
2837
+ pointerEvent.preventDefault();
2838
+ pointerEvent.stopPropagation();
2839
+ const eventElement = pointerEvent.currentTarget.parentElement;
2840
+ if (!(eventElement instanceof HTMLElement)) {
2841
+ return;
2842
+ }
2843
+ resizeStateRef.current = {
2844
+ edge,
2845
+ event,
2846
+ eventElement,
2847
+ hourHeight,
2848
+ initialHeight: eventElement.style.height,
2849
+ initialPointerY: pointerEvent.clientY,
2850
+ initialTop: eventElement.style.top,
2851
+ onResize,
2852
+ snapMinutes
2853
+ };
2854
+ pointerListenersRef.current = {
2855
+ cancel: handlePointerCancel,
2856
+ move: handlePointerMove,
2857
+ up: handlePointerUp
2858
+ };
2859
+ window.addEventListener("pointermove", handlePointerMove);
2860
+ window.addEventListener("pointerup", handlePointerUp);
2861
+ window.addEventListener("pointercancel", handlePointerCancel);
2862
+ },
2863
+ [
2864
+ edge,
2865
+ event,
2866
+ handlePointerCancel,
2867
+ handlePointerMove,
2868
+ handlePointerUp,
2869
+ hourHeight,
2870
+ onResize,
2871
+ snapMinutes
2872
+ ]
2873
+ );
2874
+ const handleKeyDown = useCallback(
2875
+ (keyEvent) => {
2876
+ const direction = keyEvent.key === "ArrowDown" ? 1 : keyEvent.key === "ArrowUp" ? -1 : 0;
2877
+ if (direction === 0) {
2878
+ return;
2879
+ }
2880
+ keyEvent.preventDefault();
2881
+ keyEvent.stopPropagation();
2882
+ const delta = direction * snapMinutes * MILLISECONDS_PER_MINUTE2;
2883
+ const minDuration = MIN_DURATION_MINUTES * MILLISECONDS_PER_MINUTE2;
2884
+ const range = edge === "start" ? {
2885
+ end: event.end,
2886
+ start: Math.min(event.end - minDuration, event.start + delta)
2887
+ } : {
2888
+ end: Math.max(event.start + minDuration, event.end + delta),
2889
+ start: event.start
2890
+ };
2891
+ if (range.start !== event.start || range.end !== event.end) {
2892
+ onResize({ event, ...range });
2893
+ }
2894
+ },
2895
+ [edge, event, onResize, snapMinutes]
2896
+ );
2897
+ return /* @__PURE__ */ jsx(
2898
+ "span",
2899
+ {
2900
+ "aria-label": `${edge === "start" ? "Resize start of" : "Resize end of"} ${event.title}`,
2901
+ "aria-orientation": "vertical",
2902
+ "aria-valuemax": event.end,
2903
+ "aria-valuemin": event.start,
2904
+ "aria-valuenow": edge === "start" ? event.start : event.end,
2905
+ className: resizeHandleClassNames[edge],
2906
+ "data-testid": `schedule-event-resize-${edge}-handle-${event.id}`,
2907
+ onClick: (event2) => event2.stopPropagation(),
2908
+ onKeyDown: handleKeyDown,
2909
+ onPointerDown: handlePointerDown,
2910
+ role: "slider",
2911
+ tabIndex: 0
2912
+ }
2913
+ );
2914
+ }
2915
+ function ScheduleEventResizeHandles({
2916
+ event,
2917
+ hourHeight,
2918
+ onResize,
2919
+ snapMinutes
2920
+ }) {
2921
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
2922
+ /* @__PURE__ */ jsx(
2923
+ ScheduleEventResizeHandle,
2924
+ {
2925
+ edge: "start",
2926
+ event,
2927
+ hourHeight,
2928
+ onResize,
2929
+ snapMinutes
2930
+ }
2931
+ ),
2932
+ /* @__PURE__ */ jsx(
2933
+ ScheduleEventResizeHandle,
2934
+ {
2935
+ edge: "end",
2936
+ event,
2937
+ hourHeight,
2938
+ onResize,
2939
+ snapMinutes
2940
+ }
2941
+ )
2942
+ ] });
2943
+ }
2944
+ function createScheduleEventResizePlugin({
2945
+ onResize,
2946
+ snapMinutes = DEFAULT_SNAP_MINUTES2
2947
+ }) {
2948
+ const normalizedSnapMinutes = Number.isFinite(snapMinutes) && snapMinutes > 0 ? Math.max(1, Math.floor(snapMinutes)) : DEFAULT_SNAP_MINUTES2;
2949
+ return {
2950
+ renderTimeGridEventContent({
2951
+ event,
2952
+ hourHeight
2953
+ }) {
2954
+ if (isDayEvent(event)) {
2955
+ return null;
2956
+ }
2957
+ return /* @__PURE__ */ jsx(
2958
+ ScheduleEventResizeHandles,
2959
+ {
2960
+ event,
2961
+ hourHeight,
2962
+ onResize,
2963
+ snapMinutes: normalizedSnapMinutes
2964
+ }
2965
+ );
2966
+ }
2967
+ };
2968
+ }
2969
+ function useScheduleEventResizePlugin(options) {
2970
+ const optionsRef = useLatest_default(options);
2971
+ const onResize = useCallback(
2972
+ (change) => {
2973
+ optionsRef.current.onResize(change);
2974
+ },
2975
+ [optionsRef]
2976
+ );
2977
+ return useMemo(
2978
+ () => createScheduleEventResizePlugin({
2979
+ onResize,
2980
+ snapMinutes: options.snapMinutes
2981
+ }),
2982
+ [onResize, options.snapMinutes]
2983
+ );
2984
+ }
2985
+ var styles4 = {
2986
+ layout: css({
2987
+ minW: "80",
2988
+ maxW: "96"
2989
+ }),
2990
+ dot: css({
2991
+ w: "3",
2992
+ h: "3"
2993
+ }),
2994
+ dateValue: css({
2995
+ display: "flex",
2996
+ flexDirection: "column"
2997
+ }),
2998
+ footerActions: css({
2999
+ display: "flex",
3000
+ justifyContent: "flex-end"
3001
+ })
3002
+ };
3003
+ function getEventDateLabel(event, timezoneID) {
3004
+ const startDate = isDayEvent(event) ? event.start : plainDateFromInstant(event.start, timezoneID);
3005
+ return formatDate(startDate);
3006
+ }
3007
+ function ScheduleEventPopoverContent({
3008
+ event,
3009
+ onClose,
3010
+ onDelete,
3011
+ onEdit,
3012
+ onRespond
3013
+ }) {
3014
+ const { categoryMap, timezoneID } = useScheduleContext();
3015
+ const [response, setResponse] = useState(null);
3016
+ const category = getCategory(categoryMap, event);
3017
+ const dotClass = scheduleEventRecipe({ color: category.color }).dot;
3018
+ return /* @__PURE__ */ jsx(
3019
+ Layout,
3020
+ {
3021
+ className: styles4.layout,
3022
+ content: /* @__PURE__ */ jsx(LayoutContent, { isScrollable: false, padding: 3, children: /* @__PURE__ */ jsxs(MetadataList, { children: [
3023
+ /* @__PURE__ */ jsx(
3024
+ MetadataListItem,
3025
+ {
3026
+ icon: CalendarDays,
3027
+ isIconOnly: true,
3028
+ label: "Date and time",
3029
+ children: /* @__PURE__ */ jsxs("span", { className: styles4.dateValue, children: [
3030
+ /* @__PURE__ */ jsx(Text, { children: getEventDateLabel(event, timezoneID) }),
3031
+ /* @__PURE__ */ jsx(Text, { color: "secondary", type: "supporting", children: getEventTimeLabel(event, timezoneID) })
3032
+ ] })
3033
+ }
3034
+ ),
3035
+ event.location != null && event.location !== "" ? /* @__PURE__ */ jsx(MetadataListItem, { icon: MapPin, isIconOnly: true, label: "Location", children: event.location }) : null,
3036
+ event.description != null && event.description !== "" ? /* @__PURE__ */ jsx(MetadataListItem, { icon: AlignLeft, isIconOnly: true, label: "Description", children: event.description }) : null,
3037
+ /* @__PURE__ */ jsx(MetadataListItem, { icon: Tag, isIconOnly: true, label: "Category", children: category.label })
3038
+ ] }) }),
3039
+ "data-testid": "schedule-event-popover",
3040
+ footer: /* @__PURE__ */ jsx(LayoutFooter, { label: "Your response", padding: 3, children: /* @__PURE__ */ jsx("div", { className: styles4.footerActions, children: /* @__PURE__ */ jsxs(
3041
+ ToggleButtonGroup,
3042
+ {
3043
+ label: "Your response",
3044
+ onChange: (value) => {
3045
+ setResponse(value);
3046
+ onRespond?.(event, value);
3047
+ },
3048
+ size: "sm",
3049
+ type: "single",
3050
+ value: response,
3051
+ children: [
3052
+ /* @__PURE__ */ jsx(ToggleButton, { label: "Not Going", value: "not-going" }),
3053
+ /* @__PURE__ */ jsx(ToggleButton, { label: "Maybe", value: "maybe" }),
3054
+ /* @__PURE__ */ jsx(
3055
+ ToggleButton,
3056
+ {
3057
+ "data-testid": "schedule-event-popover-response-going",
3058
+ label: "Going",
3059
+ value: "going"
3060
+ }
3061
+ )
3062
+ ]
3063
+ }
3064
+ ) }) }),
3065
+ header: /* @__PURE__ */ jsx(
3066
+ LayoutHeader,
3067
+ {
3068
+ align: "center",
3069
+ endContent: /* @__PURE__ */ jsxs(Fragment, { children: [
3070
+ onEdit != null ? /* @__PURE__ */ jsx(
3071
+ Button,
3072
+ {
3073
+ "data-testid": "schedule-event-popover-edit",
3074
+ icon: Pencil,
3075
+ isIconOnly: true,
3076
+ label: "Edit event",
3077
+ onClick: () => onEdit(event),
3078
+ size: "sm",
3079
+ variant: "ghost"
3080
+ }
3081
+ ) : null,
3082
+ onDelete != null ? /* @__PURE__ */ jsx(
3083
+ Button,
3084
+ {
3085
+ "data-testid": "schedule-event-popover-delete",
3086
+ icon: Trash2,
3087
+ isIconOnly: true,
3088
+ label: "Delete event",
3089
+ onClick: () => onDelete(event),
3090
+ size: "sm",
3091
+ variant: "ghost"
3092
+ }
3093
+ ) : null,
3094
+ /* @__PURE__ */ jsx(
3095
+ Button,
3096
+ {
3097
+ "data-testid": "schedule-event-popover-close",
3098
+ icon: X,
3099
+ isIconOnly: true,
3100
+ label: "Close",
3101
+ onClick: onClose,
3102
+ size: "sm",
3103
+ variant: "ghost"
3104
+ }
3105
+ )
3106
+ ] }),
3107
+ padding: 3,
3108
+ startContent: /* @__PURE__ */ jsx("span", { className: cx(dotClass, styles4.dot) }),
3109
+ title: event.title
3110
+ }
3111
+ ),
3112
+ height: "auto"
3113
+ }
3114
+ );
3115
+ }
3116
+ function createScheduleEventPopoverPlugin(options) {
3117
+ const { renderContent } = options;
3118
+ return {
3119
+ renderEventPopover(event, controls) {
3120
+ const typedEvent = event;
3121
+ if (renderContent != null) {
3122
+ return renderContent({ event: typedEvent, ...controls });
3123
+ }
3124
+ return /* @__PURE__ */ jsx(
3125
+ ScheduleEventPopoverContent,
3126
+ {
3127
+ event: typedEvent,
3128
+ onClose: controls.close
3129
+ }
3130
+ );
3131
+ }
3132
+ };
3133
+ }
3134
+ function useScheduleEventPopoverPlugin(options = {}) {
3135
+ const { renderContent } = options;
3136
+ return useMemo(
3137
+ () => createScheduleEventPopoverPlugin({ renderContent }),
3138
+ [renderContent]
3139
+ );
3140
+ }
3141
+ function SchedulePaginationControls({
3142
+ onViewDateChange
3143
+ }) {
3144
+ const { view, viewDate } = useScheduleContext();
3145
+ const currentRange = useMemo(
3146
+ () => view.getDateRange(viewDate),
3147
+ [view, viewDate]
3148
+ );
3149
+ const previousDateRange = useMemo(
3150
+ () => view.getPreviousDateRange(viewDate),
3151
+ [view, viewDate]
3152
+ );
3153
+ const nextDateRange = useMemo(
3154
+ () => view.getNextDateRange(viewDate),
3155
+ [view, viewDate]
3156
+ );
3157
+ const shiftToRange = useCallback(
3158
+ (nextRange) => {
3159
+ onViewDateChange(
3160
+ viewDate.instant + nextRange[0].instant - currentRange[0].instant
3161
+ );
3162
+ },
3163
+ [currentRange, onViewDateChange, viewDate]
3164
+ );
3165
+ const onPreviousDate = useCallback(() => {
3166
+ shiftToRange(previousDateRange.range);
3167
+ }, [previousDateRange, shiftToRange]);
3168
+ const onToday = useCallback(() => {
3169
+ onViewDateChange(nowEpochMilliseconds());
3170
+ }, [onViewDateChange]);
3171
+ const onNextDate = useCallback(() => {
3172
+ shiftToRange(nextDateRange.range);
3173
+ }, [nextDateRange, shiftToRange]);
3174
+ return /* @__PURE__ */ jsxs(ButtonGroup, { label: "Schedule pagination", size: "sm", children: [
3175
+ /* @__PURE__ */ jsx(
3176
+ Button,
3177
+ {
3178
+ icon: ChevronLeft,
3179
+ isIconOnly: true,
3180
+ label: previousDateRange.label,
3181
+ onClick: onPreviousDate
3182
+ }
3183
+ ),
3184
+ /* @__PURE__ */ jsx(Button, { label: "Today", onClick: onToday, size: "sm" }),
3185
+ /* @__PURE__ */ jsx(
3186
+ Button,
3187
+ {
3188
+ icon: ChevronRight,
3189
+ isIconOnly: true,
3190
+ label: nextDateRange.label,
3191
+ onClick: onNextDate
3192
+ }
3193
+ )
3194
+ ] });
3195
+ }
3196
+ function createSchedulePaginationPlugin({
3197
+ onViewDateChange,
3198
+ position = "start"
3199
+ }) {
3200
+ return {
3201
+ renderHeader(startContent, centerContent, endContent) {
3202
+ const controls = /* @__PURE__ */ jsx(SchedulePaginationControls, { onViewDateChange });
3203
+ return position === "start" ? {
3204
+ centerContent,
3205
+ endContent,
3206
+ startContent: /* @__PURE__ */ jsxs(Fragment, { children: [
3207
+ controls,
3208
+ startContent
3209
+ ] })
3210
+ } : {
3211
+ centerContent,
3212
+ endContent: /* @__PURE__ */ jsxs(Fragment, { children: [
3213
+ endContent,
3214
+ controls
3215
+ ] }),
3216
+ startContent
3217
+ };
3218
+ }
3219
+ };
3220
+ }
3221
+ function useSchedulePaginationPlugin({
3222
+ onViewDateChange,
3223
+ position = "start"
3224
+ }) {
3225
+ return useMemo(
3226
+ () => createSchedulePaginationPlugin({ onViewDateChange, position }),
3227
+ [onViewDateChange, position]
3228
+ );
3229
+ }
3230
+ function ScheduleViewSelectorControl({
3231
+ onChangeView,
3232
+ options
3233
+ }) {
3234
+ const { view } = useScheduleContext();
3235
+ const currentOption = options.find((option) => option.view === view);
3236
+ return /* @__PURE__ */ jsx(
3237
+ DropdownMenu,
3238
+ {
3239
+ button: {
3240
+ isDisabled: onChangeView == null,
3241
+ label: currentOption?.label ?? "View",
3242
+ size: "sm"
3243
+ },
3244
+ menuWidth: 160,
3245
+ children: options.map((option) => /* @__PURE__ */ jsx(
3246
+ DropdownMenuItem,
3247
+ {
3248
+ endContent: option.view === view ? /* @__PURE__ */ jsx(
3249
+ Icon,
3250
+ {
3251
+ color: "primary",
3252
+ "data-testid": "schedule-view-selector-selected-icon",
3253
+ icon: Check,
3254
+ size: "sm"
3255
+ }
3256
+ ) : null,
3257
+ label: option.label,
3258
+ onClick: () => onChangeView?.(option.view)
3259
+ },
3260
+ option.label
3261
+ ))
3262
+ }
3263
+ );
3264
+ }
3265
+ function createScheduleViewSelectorPlugin(options, {
3266
+ onChangeView,
3267
+ position = "end"
3268
+ } = {}) {
3269
+ return {
3270
+ renderHeader(startContent, centerContent, endContent) {
3271
+ const selector = /* @__PURE__ */ jsx(
3272
+ ScheduleViewSelectorControl,
3273
+ {
3274
+ onChangeView,
3275
+ options
3276
+ }
3277
+ );
3278
+ return position === "start" ? {
3279
+ centerContent,
3280
+ endContent,
3281
+ startContent: /* @__PURE__ */ jsxs(Fragment, { children: [
3282
+ startContent,
3283
+ selector
3284
+ ] })
3285
+ } : {
3286
+ centerContent,
3287
+ endContent: /* @__PURE__ */ jsxs(Fragment, { children: [
3288
+ endContent,
3289
+ selector
3290
+ ] }),
3291
+ startContent
3292
+ };
3293
+ }
3294
+ };
3295
+ }
3296
+ function useScheduleViewSelectorPlugin(options, pluginOptions = {}) {
3297
+ const { onChangeView, position = "end" } = pluginOptions;
3298
+ return useMemo(
3299
+ () => createScheduleViewSelectorPlugin(options, { onChangeView, position }),
3300
+ [onChangeView, options, position]
3301
+ );
3302
+ }
3303
+
3304
+ // src/components/Schedule/plugins/index.tsx
3305
+ var defaultSchedulePlugins = [];
3306
+ var EMPTY_CATEGORIES = [];
3307
+ function readAsyncEvents(loader, start, end, cache) {
3308
+ const key = `${start}:${end}`;
3309
+ let record = cache.get(key);
3310
+ if (record == null) {
3311
+ record = {
3312
+ error: null,
3313
+ promise: Promise.resolve().then(async () => loader(start, end)).then(
3314
+ (value) => {
3315
+ if (record != null) {
3316
+ record.status = "fulfilled";
3317
+ record.value = value;
3318
+ }
3319
+ },
3320
+ (error) => {
3321
+ if (record != null) {
3322
+ record.status = "rejected";
3323
+ record.error = error;
3324
+ }
3325
+ }
3326
+ ),
3327
+ status: "pending",
3328
+ value: []
3329
+ };
3330
+ cache.set(key, record);
3331
+ }
3332
+ if (record.status === "pending") {
3333
+ throw record.promise;
3334
+ }
3335
+ if (record.status === "rejected") {
3336
+ throw record.error instanceof Error ? record.error : new Error(String(record.error));
3337
+ }
3338
+ return record.value;
3339
+ }
3340
+ function resolveEvents(eventSource, range, timezoneID, eventCache) {
3341
+ const events = typeof eventSource === "function" ? readAsyncEvents(eventSource, range.start, range.end, eventCache) : eventSource;
3342
+ return sortEvents(
3343
+ events.filter((event) => eventOverlapsRange(event, range, timezoneID)),
3344
+ timezoneID
3345
+ );
3346
+ }
3347
+ function useRange(view, date) {
3348
+ const [start, end] = view.getDateRange(date);
3349
+ return useMemo(
3350
+ () => ({
3351
+ end: end.instant,
3352
+ endDate: plainDateFromInstant(end.instant, end.timezoneID),
3353
+ start: start.instant,
3354
+ startDate: plainDateFromInstant(start.instant, start.timezoneID)
3355
+ }),
3356
+ [start.instant, end.instant, start.timezoneID, end.timezoneID]
3357
+ );
3358
+ }
3359
+ function ScheduleViewContent({
3360
+ categories,
3361
+ eventCache,
3362
+ eventSource,
3363
+ highlightDate,
3364
+ isLoading,
3365
+ plugins,
3366
+ view,
3367
+ viewDate
3368
+ }) {
3369
+ const Component = view.component;
3370
+ const range = useRange(view, viewDate);
3371
+ const contextValue = useMemo(() => {
3372
+ const categoryMap = createCategoryMap(categories);
3373
+ const events = isLoading ? [] : resolveEvents(eventSource, range, viewDate.timezoneID, eventCache);
3374
+ return {
3375
+ categoryMap,
3376
+ categories,
3377
+ events,
3378
+ highlightDate,
3379
+ isLoading,
3380
+ plugins,
3381
+ range,
3382
+ timezoneID: viewDate.timezoneID,
3383
+ view,
3384
+ viewDate
3385
+ };
3386
+ }, [
3387
+ categories,
3388
+ eventCache,
3389
+ eventSource,
3390
+ highlightDate,
3391
+ isLoading,
3392
+ plugins,
3393
+ range,
3394
+ view,
3395
+ viewDate
3396
+ ]);
3397
+ return /* @__PURE__ */ jsx(ScheduleContext, { value: contextValue, children: /* @__PURE__ */ jsx(Component, { options: view.options }) });
3398
+ }
3399
+ function Schedule({
3400
+ categories = EMPTY_CATEGORIES,
3401
+ className,
3402
+ "data-testid": dataTestId,
3403
+ events,
3404
+ highlightDate: highlightDateFromProps,
3405
+ plugins = defaultSchedulePlugins,
3406
+ ref,
3407
+ style,
3408
+ timezoneID: timezoneIDFromProps,
3409
+ view,
3410
+ viewDate
3411
+ }) {
3412
+ const timezoneID = timezoneIDFromProps ?? getBrowserTimezoneID();
3413
+ const [eventCache] = useState(() => /* @__PURE__ */ new Map());
3414
+ const [internalHighlightDate] = useState(
3415
+ () => nowEpochMilliseconds()
3416
+ );
3417
+ const highlightDate = highlightDateFromProps ?? internalHighlightDate;
3418
+ const scheduleZonedInstant = useMemo(
3419
+ () => createScheduleZonedInstant(viewDate, timezoneID),
3420
+ [viewDate, timezoneID]
3421
+ );
3422
+ const highlightScheduleZonedInstant = useMemo(
3423
+ () => createScheduleZonedInstant(highlightDate, timezoneID),
3424
+ [highlightDate, timezoneID]
3425
+ );
3426
+ return /* @__PURE__ */ jsx(
3427
+ "div",
3428
+ {
3429
+ className: cx(scheduleClasses.root, className),
3430
+ "data-testid": dataTestId,
3431
+ ref,
3432
+ style,
3433
+ children: /* @__PURE__ */ jsx(
3434
+ Suspense,
3435
+ {
3436
+ fallback: /* @__PURE__ */ jsx(
3437
+ ScheduleViewContent,
3438
+ {
3439
+ categories,
3440
+ eventCache,
3441
+ eventSource: [],
3442
+ highlightDate: highlightScheduleZonedInstant,
3443
+ isLoading: true,
3444
+ plugins,
3445
+ view,
3446
+ viewDate: scheduleZonedInstant
3447
+ }
3448
+ ),
3449
+ children: /* @__PURE__ */ jsx(
3450
+ ScheduleViewContent,
3451
+ {
3452
+ categories,
3453
+ eventCache,
3454
+ eventSource: events,
3455
+ highlightDate: highlightScheduleZonedInstant,
3456
+ isLoading: false,
3457
+ plugins,
3458
+ view,
3459
+ viewDate: scheduleZonedInstant
3460
+ }
3461
+ )
3462
+ }
3463
+ )
3464
+ }
3465
+ );
3466
+ }
3467
+ Schedule.displayName = "Schedule";
3468
+ function ScheduleWeeklyView({
3469
+ options
3470
+ }) {
3471
+ const { range } = useScheduleContext();
3472
+ const days = enumerateDates(range.startDate, range.endDate);
3473
+ const title = formatWeekTitle(days[0], days[days.length - 1]);
3474
+ return /* @__PURE__ */ jsx(ScheduleFrame, { title, titleLabel: title, children: /* @__PURE__ */ jsx(
3475
+ TimeGridView,
3476
+ {
3477
+ allDayEventLimit: options.allDayEventLimit,
3478
+ days,
3479
+ hourHeight: options.hourHeight,
3480
+ maxHour: options.maxHour,
3481
+ minHour: options.minHour
3482
+ }
3483
+ ) });
3484
+ }
3485
+ function createScheduleWeeklyView({
3486
+ allDayEventLimit = 3,
3487
+ hourHeight = 100,
3488
+ maxHour = 24,
3489
+ minHour = 0,
3490
+ weekStartsOn = 0
3491
+ } = {}) {
3492
+ const getWeekStart = (date) => setStartOfWeek2(date.toPlainDate(), weekStartsOn);
3493
+ const getWeekRange = (date) => {
3494
+ const startDate = getWeekStart(date);
3495
+ return scheduleRangeToScheduleZonedInstantRange(
3496
+ getScheduleRangeFromDates({
3497
+ endDate: startDate.add({ days: 7 }),
3498
+ startDate,
3499
+ timezoneID: date.timezoneID
3500
+ }),
3501
+ date.timezoneID
3502
+ );
3503
+ };
3504
+ return {
3505
+ component: ScheduleWeeklyView,
3506
+ getDateRange: getWeekRange,
3507
+ getNextDateRange: (date) => ({
3508
+ label: "Next week",
3509
+ range: getWeekRange(date.addDays(7))
3510
+ }),
3511
+ getPreviousDateRange: (date) => ({
3512
+ label: "Previous week",
3513
+ range: getWeekRange(date.addDays(-7))
3514
+ }),
3515
+ options: { allDayEventLimit, hourHeight, maxHour, minHour, weekStartsOn }
3516
+ };
3517
+ }
3518
+ function setStartOfWeek2(date, weekStartsOn) {
3519
+ const daysSinceWeekStart = (plainDateDayOfWeek(date) - weekStartsOn + 7) % 7;
3520
+ return date.add({ days: -daysSinceWeekStart });
3521
+ }
3522
+
3523
+ export { Schedule, ScheduleContext, ScheduleEventPopoverContent, createEventFromISO, createScheduleDayView, createScheduleListView, createScheduleMonthlyView, createScheduleWeeklyView, defaultSchedulePlugins, useScheduleContext, useScheduleEventMovePlugin, useScheduleEventPopoverPlugin, useScheduleEventResizePlugin, useSchedulePaginationPlugin, useScheduleViewSelectorPlugin };
3524
+ //# sourceMappingURL=chunk-CZUMVOPH.js.map
3525
+ //# sourceMappingURL=chunk-CZUMVOPH.js.map