silver-ui 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/README.md +1 -65
  2. package/dist/{chunk-FNRYGCO3.js → chunk-2SN3KVWF.js} +4 -4
  3. package/dist/{chunk-FNRYGCO3.js.map → chunk-2SN3KVWF.js.map} +1 -1
  4. package/dist/{chunk-BSPWX2OZ.cjs → chunk-3IDT3PZC.cjs} +10 -10
  5. package/dist/{chunk-BSPWX2OZ.cjs.map → chunk-3IDT3PZC.cjs.map} +1 -1
  6. package/dist/chunk-3PEK2Q54.cjs +31 -0
  7. package/dist/chunk-3PEK2Q54.cjs.map +1 -0
  8. package/dist/{chunk-4SUQFPWH.js → chunk-45OSUS5A.js} +6 -6
  9. package/dist/{chunk-4SUQFPWH.js.map → chunk-45OSUS5A.js.map} +1 -1
  10. package/dist/{chunk-L7XJZJCM.js → chunk-4EUUZQAM.js} +5 -5
  11. package/dist/{chunk-L7XJZJCM.js.map → chunk-4EUUZQAM.js.map} +1 -1
  12. package/dist/{chunk-Q3HMGFGI.js → chunk-4JJFQZVY.js} +98 -77
  13. package/dist/chunk-4JJFQZVY.js.map +1 -0
  14. package/dist/chunk-5FQKELP6.js +28 -0
  15. package/dist/chunk-5FQKELP6.js.map +1 -0
  16. package/dist/{chunk-TTDNCN5G.cjs → chunk-5JROXZBG.cjs} +13 -39
  17. package/dist/chunk-5JROXZBG.cjs.map +1 -0
  18. package/dist/{chunk-OUZX7STE.cjs → chunk-5K3C3INR.cjs} +25 -53
  19. package/dist/chunk-5K3C3INR.cjs.map +1 -0
  20. package/dist/{chunk-AEYJ6PWC.js → chunk-5RFHYDQY.js} +16 -11
  21. package/dist/chunk-5RFHYDQY.js.map +1 -0
  22. package/dist/{chunk-PGTOVMP7.cjs → chunk-6FC5YF2O.cjs} +10 -10
  23. package/dist/{chunk-PGTOVMP7.cjs.map → chunk-6FC5YF2O.cjs.map} +1 -1
  24. package/dist/{chunk-6EYLEVC6.js → chunk-6I5QWA6A.js} +13 -6
  25. package/dist/chunk-6I5QWA6A.js.map +1 -0
  26. package/dist/{chunk-F7BFO3SD.cjs → chunk-6ZV7HGZT.cjs} +24 -8
  27. package/dist/chunk-6ZV7HGZT.cjs.map +1 -0
  28. package/dist/{chunk-2WTHSGDP.cjs → chunk-7EE6DCRP.cjs} +14 -14
  29. package/dist/{chunk-2WTHSGDP.cjs.map → chunk-7EE6DCRP.cjs.map} +1 -1
  30. package/dist/{chunk-HIH6MS5D.js → chunk-7TJ2O56S.js} +4 -4
  31. package/dist/{chunk-HIH6MS5D.js.map → chunk-7TJ2O56S.js.map} +1 -1
  32. package/dist/chunk-A2AC6WL5.cjs +4 -0
  33. package/dist/chunk-A2AC6WL5.cjs.map +1 -0
  34. package/dist/{chunk-BIJ6YDWJ.cjs → chunk-AFJEAYR4.cjs} +15 -8
  35. package/dist/chunk-AFJEAYR4.cjs.map +1 -0
  36. package/dist/chunk-AFXU6XIS.js +3 -0
  37. package/dist/chunk-AFXU6XIS.js.map +1 -0
  38. package/dist/{chunk-L5PJCLV6.js → chunk-AKAXQ4RL.js} +16 -25
  39. package/dist/chunk-AKAXQ4RL.js.map +1 -0
  40. package/dist/{chunk-OTQAREYU.js → chunk-ATK3F3MC.js} +4 -4
  41. package/dist/{chunk-OTQAREYU.js.map → chunk-ATK3F3MC.js.map} +1 -1
  42. package/dist/{chunk-2VL66QBX.js → chunk-B5QX6KGJ.js} +3 -3
  43. package/dist/{chunk-2VL66QBX.js.map → chunk-B5QX6KGJ.js.map} +1 -1
  44. package/dist/{chunk-TOQ4MGM5.js → chunk-BDFNEQR3.js} +6 -6
  45. package/dist/{chunk-TOQ4MGM5.js.map → chunk-BDFNEQR3.js.map} +1 -1
  46. package/dist/{chunk-UARQIMPS.js → chunk-BGLT7XH6.js} +5 -5
  47. package/dist/{chunk-UARQIMPS.js.map → chunk-BGLT7XH6.js.map} +1 -1
  48. package/dist/{chunk-2AWSJF22.js → chunk-BNGYGCT2.js} +8 -8
  49. package/dist/chunk-BNGYGCT2.js.map +1 -0
  50. package/dist/{chunk-TH537HOM.js → chunk-C6EWA3H2.js} +6 -6
  51. package/dist/{chunk-TH537HOM.js.map → chunk-C6EWA3H2.js.map} +1 -1
  52. package/dist/{chunk-2F5TDBRT.cjs → chunk-CABYRYVA.cjs} +8 -8
  53. package/dist/{chunk-2F5TDBRT.cjs.map → chunk-CABYRYVA.cjs.map} +1 -1
  54. package/dist/{chunk-7CTHD4G6.cjs → chunk-CNDUYO7I.cjs} +5 -5
  55. package/dist/{chunk-7CTHD4G6.cjs.map → chunk-CNDUYO7I.cjs.map} +1 -1
  56. package/dist/{chunk-3VJIUZAY.cjs → chunk-CVT7JW6C.cjs} +16 -25
  57. package/dist/chunk-CVT7JW6C.cjs.map +1 -0
  58. package/dist/{chunk-GSTINE4X.js → chunk-CZUMVOPH.js} +1771 -575
  59. package/dist/chunk-CZUMVOPH.js.map +1 -0
  60. package/dist/{chunk-MGJLBHPJ.js → chunk-DAO4UXR4.js} +4 -4
  61. package/dist/{chunk-MGJLBHPJ.js.map → chunk-DAO4UXR4.js.map} +1 -1
  62. package/dist/{chunk-HWD4HDQ5.cjs → chunk-DFEAB7Z3.cjs} +10 -10
  63. package/dist/{chunk-HWD4HDQ5.cjs.map → chunk-DFEAB7Z3.cjs.map} +1 -1
  64. package/dist/{chunk-GY2ZZR4Z.cjs → chunk-DK6USFZP.cjs} +18 -18
  65. package/dist/{chunk-GY2ZZR4Z.cjs.map → chunk-DK6USFZP.cjs.map} +1 -1
  66. package/dist/{chunk-WPMWHKJX.js → chunk-DPSAPA6B.js} +5 -5
  67. package/dist/{chunk-WPMWHKJX.js.map → chunk-DPSAPA6B.js.map} +1 -1
  68. package/dist/{chunk-AV7D3SXF.js → chunk-DWZR2AGT.js} +4 -4
  69. package/dist/{chunk-AV7D3SXF.js.map → chunk-DWZR2AGT.js.map} +1 -1
  70. package/dist/{chunk-2RZNX26F.cjs → chunk-DXUFDJHA.cjs} +12 -13
  71. package/dist/chunk-DXUFDJHA.cjs.map +1 -0
  72. package/dist/{chunk-67UUGI3M.cjs → chunk-DYMZ4DLN.cjs} +8 -8
  73. package/dist/{chunk-67UUGI3M.cjs.map → chunk-DYMZ4DLN.cjs.map} +1 -1
  74. package/dist/{chunk-JM4Q7ZQH.cjs → chunk-EEOUWM2F.cjs} +8 -8
  75. package/dist/chunk-EEOUWM2F.cjs.map +1 -0
  76. package/dist/{chunk-KC4EKXGF.js → chunk-EIJSWHG7.js} +9 -10
  77. package/dist/chunk-EIJSWHG7.js.map +1 -0
  78. package/dist/{chunk-FCUUGJTM.cjs → chunk-ENVDR66N.cjs} +132 -160
  79. package/dist/chunk-ENVDR66N.cjs.map +1 -0
  80. package/dist/{chunk-J2YKUHQM.js → chunk-ERVWZILR.js} +14 -23
  81. package/dist/chunk-ERVWZILR.js.map +1 -0
  82. package/dist/{chunk-IX26TMZD.cjs → chunk-EVCQCZMM.cjs} +5 -5
  83. package/dist/{chunk-IX26TMZD.cjs.map → chunk-EVCQCZMM.cjs.map} +1 -1
  84. package/dist/{chunk-E42WOTIC.js → chunk-FIOCTAXT.js} +3 -3
  85. package/dist/{chunk-E42WOTIC.js.map → chunk-FIOCTAXT.js.map} +1 -1
  86. package/dist/{chunk-LW3DJOF4.cjs → chunk-FLDTPAG4.cjs} +6 -6
  87. package/dist/{chunk-LW3DJOF4.cjs.map → chunk-FLDTPAG4.cjs.map} +1 -1
  88. package/dist/{chunk-XHJRAEGW.js → chunk-FQN22DO5.js} +5 -5
  89. package/dist/{chunk-XHJRAEGW.js.map → chunk-FQN22DO5.js.map} +1 -1
  90. package/dist/{chunk-XPGIWOJO.cjs → chunk-FWBYCTUB.cjs} +18 -18
  91. package/dist/chunk-FWBYCTUB.cjs.map +1 -0
  92. package/dist/{chunk-UXGHFKLA.js → chunk-G5PU2EL2.js} +4 -4
  93. package/dist/{chunk-UXGHFKLA.js.map → chunk-G5PU2EL2.js.map} +1 -1
  94. package/dist/{chunk-UXQSSRBQ.cjs → chunk-GJKRSQEA.cjs} +1781 -581
  95. package/dist/chunk-GJKRSQEA.cjs.map +1 -0
  96. package/dist/{chunk-JSAYTQTJ.cjs → chunk-GJZAGTPV.cjs} +7 -7
  97. package/dist/chunk-GJZAGTPV.cjs.map +1 -0
  98. package/dist/{chunk-BSI4BQEX.cjs → chunk-GU65FGY6.cjs} +4 -4
  99. package/dist/{chunk-BSI4BQEX.cjs.map → chunk-GU65FGY6.cjs.map} +1 -1
  100. package/dist/{chunk-W5F7PYT2.js → chunk-GUUCIG7U.js} +6 -6
  101. package/dist/{chunk-W5F7PYT2.js.map → chunk-GUUCIG7U.js.map} +1 -1
  102. package/dist/{chunk-XZZI3JYK.cjs → chunk-H5VMHDRD.cjs} +6 -6
  103. package/dist/{chunk-XZZI3JYK.cjs.map → chunk-H5VMHDRD.cjs.map} +1 -1
  104. package/dist/{chunk-ZPJW3PP7.cjs → chunk-H7VK36SZ.cjs} +16 -9
  105. package/dist/chunk-H7VK36SZ.cjs.map +1 -0
  106. package/dist/{chunk-2Y7ULSEU.js → chunk-HKGFMJFK.js} +17 -17
  107. package/dist/{chunk-2Y7ULSEU.js.map → chunk-HKGFMJFK.js.map} +1 -1
  108. package/dist/{chunk-THTVYP5V.js → chunk-HMJINNXZ.js} +21 -32
  109. package/dist/chunk-HMJINNXZ.js.map +1 -0
  110. package/dist/{chunk-VV72PGKH.cjs → chunk-HPOURAKV.cjs} +27 -27
  111. package/dist/chunk-HPOURAKV.cjs.map +1 -0
  112. package/dist/{chunk-I2NG2P5K.cjs → chunk-INQ34SVW.cjs} +5 -5
  113. package/dist/{chunk-I2NG2P5K.cjs.map → chunk-INQ34SVW.cjs.map} +1 -1
  114. package/dist/{chunk-D5OX6II7.cjs → chunk-IREOTHD3.cjs} +8 -8
  115. package/dist/chunk-IREOTHD3.cjs.map +1 -0
  116. package/dist/{chunk-GW6P4FJ4.cjs → chunk-ISWZQUVA.cjs} +25 -40
  117. package/dist/chunk-ISWZQUVA.cjs.map +1 -0
  118. package/dist/{chunk-J3X465QT.cjs → chunk-J4LJXCXB.cjs} +9 -9
  119. package/dist/{chunk-J3X465QT.cjs.map → chunk-J4LJXCXB.cjs.map} +1 -1
  120. package/dist/{chunk-PBQMHXVO.js → chunk-JC66FRQX.js} +3 -3
  121. package/dist/{chunk-PBQMHXVO.js.map → chunk-JC66FRQX.js.map} +1 -1
  122. package/dist/{chunk-S5CMLG2E.js → chunk-JHMUMJF3.js} +9 -5
  123. package/dist/chunk-JHMUMJF3.js.map +1 -0
  124. package/dist/{chunk-CUHJDV6K.js → chunk-JR353MN5.js} +6 -6
  125. package/dist/{chunk-CUHJDV6K.js.map → chunk-JR353MN5.js.map} +1 -1
  126. package/dist/{chunk-JS6MRT6M.js → chunk-K2V3IOAX.js} +4 -4
  127. package/dist/{chunk-JS6MRT6M.js.map → chunk-K2V3IOAX.js.map} +1 -1
  128. package/dist/{chunk-VH3G4IUX.js → chunk-K2WT7A64.js} +12 -38
  129. package/dist/chunk-K2WT7A64.js.map +1 -0
  130. package/dist/{chunk-OERNLR2P.js → chunk-KCI4I42U.js} +8 -8
  131. package/dist/{chunk-OERNLR2P.js.map → chunk-KCI4I42U.js.map} +1 -1
  132. package/dist/{chunk-EBJPUXFQ.js → chunk-KEPCKSDE.js} +31 -11
  133. package/dist/chunk-KEPCKSDE.js.map +1 -0
  134. package/dist/{chunk-OF5NULAO.js → chunk-KG7RHDVX.js} +7 -7
  135. package/dist/{chunk-OF5NULAO.js.map → chunk-KG7RHDVX.js.map} +1 -1
  136. package/dist/{chunk-6PIVWNUR.js → chunk-KWZMXX4F.js} +5 -5
  137. package/dist/chunk-KWZMXX4F.js.map +1 -0
  138. package/dist/{chunk-DZZEJY3J.js → chunk-LDYUVGD4.js} +120 -148
  139. package/dist/chunk-LDYUVGD4.js.map +1 -0
  140. package/dist/{chunk-VD52FLHL.js → chunk-LF6I2B7G.js} +9 -9
  141. package/dist/{chunk-VD52FLHL.js.map → chunk-LF6I2B7G.js.map} +1 -1
  142. package/dist/{chunk-3IYM5MAC.js → chunk-LLSWAAFH.js} +4 -4
  143. package/dist/{chunk-3IYM5MAC.js.map → chunk-LLSWAAFH.js.map} +1 -1
  144. package/dist/{chunk-LBGC6EC5.js → chunk-M64WMYYV.js} +15 -15
  145. package/dist/chunk-M64WMYYV.js.map +1 -0
  146. package/dist/{chunk-3Z5PF75J.cjs → chunk-MHAXS4GO.cjs} +17 -19
  147. package/dist/chunk-MHAXS4GO.cjs.map +1 -0
  148. package/dist/{chunk-TKTCN4JE.cjs → chunk-MHEPDHL5.cjs} +9 -9
  149. package/dist/{chunk-TKTCN4JE.cjs.map → chunk-MHEPDHL5.cjs.map} +1 -1
  150. package/dist/{chunk-Z7OUMVR5.cjs → chunk-NFEL5GNX.cjs} +9 -9
  151. package/dist/{chunk-Z7OUMVR5.cjs.map → chunk-NFEL5GNX.cjs.map} +1 -1
  152. package/dist/{chunk-X4I5YARV.cjs → chunk-NG2H3PYA.cjs} +11 -11
  153. package/dist/{chunk-X4I5YARV.cjs.map → chunk-NG2H3PYA.cjs.map} +1 -1
  154. package/dist/{chunk-VO4FG3L2.cjs → chunk-NW36BN7N.cjs} +17 -17
  155. package/dist/{chunk-VO4FG3L2.cjs.map → chunk-NW36BN7N.cjs.map} +1 -1
  156. package/dist/{chunk-RJEZBOSH.js → chunk-NXTDP6AX.js} +12 -14
  157. package/dist/chunk-NXTDP6AX.js.map +1 -0
  158. package/dist/{chunk-N77K3NQY.cjs → chunk-P5LMEANN.cjs} +7 -7
  159. package/dist/{chunk-N77K3NQY.cjs.map → chunk-P5LMEANN.cjs.map} +1 -1
  160. package/dist/{chunk-4HXNBLCJ.js → chunk-P7TSM63O.js} +3 -3
  161. package/dist/{chunk-4HXNBLCJ.js.map → chunk-P7TSM63O.js.map} +1 -1
  162. package/dist/chunk-PG4CZRTU.js +77 -0
  163. package/dist/chunk-PG4CZRTU.js.map +1 -0
  164. package/dist/{chunk-SUT35RHA.cjs → chunk-PHFJBQXU.cjs} +8 -8
  165. package/dist/{chunk-SUT35RHA.cjs.map → chunk-PHFJBQXU.cjs.map} +1 -1
  166. package/dist/{chunk-YJEX32HZ.cjs → chunk-PNM7MPUX.cjs} +8 -8
  167. package/dist/{chunk-YJEX32HZ.cjs.map → chunk-PNM7MPUX.cjs.map} +1 -1
  168. package/dist/{chunk-MEXR5ONE.js → chunk-PU4PBI3H.js} +5 -5
  169. package/dist/{chunk-MEXR5ONE.js.map → chunk-PU4PBI3H.js.map} +1 -1
  170. package/dist/{chunk-2GMDMZKI.cjs → chunk-PYJX2SBC.cjs} +5 -5
  171. package/dist/{chunk-2GMDMZKI.cjs.map → chunk-PYJX2SBC.cjs.map} +1 -1
  172. package/dist/{chunk-U5M4JZBX.js → chunk-PYN75QAG.js} +6 -6
  173. package/dist/chunk-PYN75QAG.js.map +1 -0
  174. package/dist/{chunk-2VAUVJVG.js → chunk-QHXI2QDK.js} +3 -3
  175. package/dist/{chunk-2VAUVJVG.js.map → chunk-QHXI2QDK.js.map} +1 -1
  176. package/dist/{chunk-RRXOSNCX.cjs → chunk-QTOFQB26.cjs} +11 -11
  177. package/dist/{chunk-RRXOSNCX.cjs.map → chunk-QTOFQB26.cjs.map} +1 -1
  178. package/dist/{chunk-DV4K35UC.cjs → chunk-QYZXTIB2.cjs} +4 -4
  179. package/dist/{chunk-DV4K35UC.cjs.map → chunk-QYZXTIB2.cjs.map} +1 -1
  180. package/dist/{chunk-FFF57VHO.cjs → chunk-R3ZS6FU6.cjs} +8 -8
  181. package/dist/{chunk-FFF57VHO.cjs.map → chunk-R3ZS6FU6.cjs.map} +1 -1
  182. package/dist/{chunk-L5JS6P62.cjs → chunk-RAMDISDK.cjs} +14 -10
  183. package/dist/chunk-RAMDISDK.cjs.map +1 -0
  184. package/dist/{chunk-SUWRSJAN.cjs → chunk-RLIBY7XB.cjs} +16 -11
  185. package/dist/chunk-RLIBY7XB.cjs.map +1 -0
  186. package/dist/{chunk-I47WOF6E.js → chunk-RU7JPU7V.js} +3 -3
  187. package/dist/{chunk-I47WOF6E.js.map → chunk-RU7JPU7V.js.map} +1 -1
  188. package/dist/{chunk-HNDDNW52.js → chunk-RXKDRZF3.js} +3 -3
  189. package/dist/{chunk-HNDDNW52.js.map → chunk-RXKDRZF3.js.map} +1 -1
  190. package/dist/{chunk-EFBSEJBD.js → chunk-S4WWBV4N.js} +22 -47
  191. package/dist/chunk-S4WWBV4N.js.map +1 -0
  192. package/dist/{chunk-6J326CN6.js → chunk-SEDUAMDW.js} +4 -4
  193. package/dist/{chunk-6J326CN6.js.map → chunk-SEDUAMDW.js.map} +1 -1
  194. package/dist/{chunk-TSKFGLGQ.cjs → chunk-SKZNSOB7.cjs} +18 -27
  195. package/dist/chunk-SKZNSOB7.cjs.map +1 -0
  196. package/dist/{chunk-YDNEAHVK.cjs → chunk-TNYAYXKC.cjs} +37 -37
  197. package/dist/{chunk-YDNEAHVK.cjs.map → chunk-TNYAYXKC.cjs.map} +1 -1
  198. package/dist/{chunk-JJNXQ7EL.js → chunk-TQDJVPHP.js} +3 -3
  199. package/dist/{chunk-JJNXQ7EL.js.map → chunk-TQDJVPHP.js.map} +1 -1
  200. package/dist/{chunk-MEUELWGO.cjs → chunk-TVWU4XBL.cjs} +8 -8
  201. package/dist/{chunk-MEUELWGO.cjs.map → chunk-TVWU4XBL.cjs.map} +1 -1
  202. package/dist/{chunk-HWP2UGOC.cjs → chunk-U4L75VA4.cjs} +126 -105
  203. package/dist/chunk-U4L75VA4.cjs.map +1 -0
  204. package/dist/{chunk-6DAZ2ZOW.cjs → chunk-U5HW5P7Q.cjs} +11 -11
  205. package/dist/{chunk-6DAZ2ZOW.cjs.map → chunk-U5HW5P7Q.cjs.map} +1 -1
  206. package/dist/{chunk-R4DGCQTA.cjs → chunk-UMS46KF4.cjs} +7 -7
  207. package/dist/{chunk-R4DGCQTA.cjs.map → chunk-UMS46KF4.cjs.map} +1 -1
  208. package/dist/{chunk-75KSHZTV.js → chunk-UT45YVPI.js} +7 -7
  209. package/dist/{chunk-75KSHZTV.js.map → chunk-UT45YVPI.js.map} +1 -1
  210. package/dist/{chunk-LKGHYNLH.js → chunk-UYZQGHFI.js} +10 -10
  211. package/dist/chunk-UYZQGHFI.js.map +1 -0
  212. package/dist/{chunk-IGJEZLHP.cjs → chunk-UZGPFPIV.cjs} +17 -17
  213. package/dist/{chunk-IGJEZLHP.cjs.map → chunk-UZGPFPIV.cjs.map} +1 -1
  214. package/dist/{chunk-Q4HAXT5C.cjs → chunk-VK7DXUGH.cjs} +31 -11
  215. package/dist/chunk-VK7DXUGH.cjs.map +1 -0
  216. package/dist/chunk-VPWNRWNO.cjs +81 -0
  217. package/dist/chunk-VPWNRWNO.cjs.map +1 -0
  218. package/dist/{chunk-K4K4FU3D.cjs → chunk-VREW3BK6.cjs} +11 -11
  219. package/dist/{chunk-K4K4FU3D.cjs.map → chunk-VREW3BK6.cjs.map} +1 -1
  220. package/dist/{chunk-ANACERIO.cjs → chunk-VRQ66IBW.cjs} +6 -6
  221. package/dist/{chunk-ANACERIO.cjs.map → chunk-VRQ66IBW.cjs.map} +1 -1
  222. package/dist/{chunk-HXIU3SIQ.cjs → chunk-VW52NVGM.cjs} +5 -5
  223. package/dist/{chunk-HXIU3SIQ.cjs.map → chunk-VW52NVGM.cjs.map} +1 -1
  224. package/dist/{chunk-5XMWGK3O.cjs → chunk-VXOIOPGZ.cjs} +25 -36
  225. package/dist/chunk-VXOIOPGZ.cjs.map +1 -0
  226. package/dist/{chunk-4RDA4W4N.js → chunk-WAWHHXSR.js} +23 -7
  227. package/dist/chunk-WAWHHXSR.js.map +1 -0
  228. package/dist/{chunk-65MJZYO6.js → chunk-WEXTGWRE.js} +14 -29
  229. package/dist/chunk-WEXTGWRE.js.map +1 -0
  230. package/dist/{chunk-ECDYAZ2R.js → chunk-WHDDBOJN.js} +5 -5
  231. package/dist/{chunk-ECDYAZ2R.js.map → chunk-WHDDBOJN.js.map} +1 -1
  232. package/dist/{chunk-ESRDHDYN.cjs → chunk-WINDLDH3.cjs} +9 -9
  233. package/dist/{chunk-ESRDHDYN.cjs.map → chunk-WINDLDH3.cjs.map} +1 -1
  234. package/dist/{chunk-ADSG24VE.js → chunk-WM7NEOME.js} +6 -6
  235. package/dist/{chunk-ADSG24VE.js.map → chunk-WM7NEOME.js.map} +1 -1
  236. package/dist/{chunk-H4L456EW.js → chunk-XTLNUYCK.js} +12 -5
  237. package/dist/chunk-XTLNUYCK.js.map +1 -0
  238. package/dist/{chunk-QO5C7TIV.js → chunk-ZSB43DEI.js} +5 -5
  239. package/dist/{chunk-QO5C7TIV.js.map → chunk-ZSB43DEI.js.map} +1 -1
  240. package/dist/{chunk-V4ZH2H2P.cjs → chunk-ZUAWNT66.cjs} +14 -14
  241. package/dist/{chunk-V4ZH2H2P.cjs.map → chunk-ZUAWNT66.cjs.map} +1 -1
  242. package/dist/components/Alert/index.cjs +10 -8
  243. package/dist/components/Alert/index.js +9 -7
  244. package/dist/components/AlertDialog/index.cjs +12 -10
  245. package/dist/components/AlertDialog/index.js +10 -8
  246. package/dist/components/AppShell/index.cjs +18 -15
  247. package/dist/components/AppShell/index.js +15 -12
  248. package/dist/components/AutocompleteInput/index.cjs +17 -14
  249. package/dist/components/AutocompleteInput/index.js +13 -10
  250. package/dist/components/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  251. package/dist/components/Breadcrumbs/index.cjs +5 -10
  252. package/dist/components/Breadcrumbs/index.js +2 -7
  253. package/dist/components/Button/Button.d.ts +5 -3
  254. package/dist/components/Button/Button.d.ts.map +1 -1
  255. package/dist/components/Button/index.cjs +9 -7
  256. package/dist/components/Button/index.js +8 -6
  257. package/dist/components/Calendar/index.cjs +10 -8
  258. package/dist/components/Calendar/index.js +9 -7
  259. package/dist/components/CheckboxInput/index.cjs +9 -8
  260. package/dist/components/CheckboxInput/index.js +8 -7
  261. package/dist/components/CodeBlock/index.cjs +10 -8
  262. package/dist/components/CodeBlock/index.js +9 -7
  263. package/dist/components/ContextMenu/index.cjs +14 -12
  264. package/dist/components/ContextMenu/index.js +12 -10
  265. package/dist/components/DateInput/index.cjs +13 -11
  266. package/dist/components/DateInput/index.js +12 -10
  267. package/dist/components/DateRangeInput/index.cjs +13 -11
  268. package/dist/components/DateRangeInput/index.js +12 -10
  269. package/dist/components/DateTimeInput/index.cjs +15 -13
  270. package/dist/components/DateTimeInput/index.js +14 -12
  271. package/dist/components/DropdownMenu/index.cjs +15 -13
  272. package/dist/components/DropdownMenu/index.js +11 -9
  273. package/dist/components/EmptyState/index.cjs +5 -5
  274. package/dist/components/EmptyState/index.js +4 -4
  275. package/dist/components/Field/index.cjs +6 -6
  276. package/dist/components/Field/index.js +4 -4
  277. package/dist/components/FileInput/index.cjs +11 -9
  278. package/dist/components/FileInput/index.js +10 -8
  279. package/dist/components/HoverCard/HoverCard.d.ts +6 -6
  280. package/dist/components/HoverCard/HoverCard.d.ts.map +1 -1
  281. package/dist/components/HoverCard/index.cjs +4 -4
  282. package/dist/components/HoverCard/index.js +2 -2
  283. package/dist/components/InputGroup/index.cjs +9 -9
  284. package/dist/components/InputGroup/index.js +5 -5
  285. package/dist/components/Item/Item.d.ts.map +1 -1
  286. package/dist/components/Item/index.cjs +7 -8
  287. package/dist/components/Item/index.js +6 -7
  288. package/dist/components/Layout/Layout.recipe.d.ts +17 -0
  289. package/dist/components/Layout/Layout.recipe.d.ts.map +1 -1
  290. package/dist/components/Layout/LayoutHeader.d.ts +6 -1
  291. package/dist/components/Layout/LayoutHeader.d.ts.map +1 -1
  292. package/dist/components/Layout/index.cjs +14 -12
  293. package/dist/components/Layout/index.js +9 -7
  294. package/dist/components/Lightbox/index.cjs +11 -9
  295. package/dist/components/Lightbox/index.js +9 -7
  296. package/dist/components/Link/Link.d.ts +4 -5
  297. package/dist/components/Link/Link.d.ts.map +1 -1
  298. package/dist/components/Link/Link.recipe.d.ts.map +1 -1
  299. package/dist/components/Link/index.cjs +9 -6
  300. package/dist/components/Link/index.js +6 -3
  301. package/dist/components/List/index.cjs +9 -10
  302. package/dist/components/List/index.js +7 -8
  303. package/dist/components/MetadataList/MetadataList.recipe.d.ts +9 -1
  304. package/dist/components/MetadataList/MetadataList.recipe.d.ts.map +1 -1
  305. package/dist/components/MetadataList/MetadataListItem.d.ts +6 -1
  306. package/dist/components/MetadataList/MetadataListItem.d.ts.map +1 -1
  307. package/dist/components/MetadataList/index.cjs +9 -6
  308. package/dist/components/MetadataList/index.js +7 -4
  309. package/dist/components/MultiSelect/index.cjs +13 -11
  310. package/dist/components/MultiSelect/index.js +12 -10
  311. package/dist/components/NumberInput/index.cjs +12 -10
  312. package/dist/components/NumberInput/index.js +11 -9
  313. package/dist/components/Pagination/index.cjs +10 -8
  314. package/dist/components/Pagination/index.js +9 -7
  315. package/dist/components/PasswordInput/index.cjs +13 -11
  316. package/dist/components/PasswordInput/index.js +12 -10
  317. package/dist/components/Popover/Popover.d.ts +13 -1
  318. package/dist/components/Popover/Popover.d.ts.map +1 -1
  319. package/dist/components/Popover/index.cjs +11 -9
  320. package/dist/components/Popover/index.js +9 -7
  321. package/dist/components/RadioGroup/index.cjs +10 -9
  322. package/dist/components/RadioGroup/index.js +8 -7
  323. package/dist/components/Schedule/CalendarEvent.d.ts +18 -4
  324. package/dist/components/Schedule/CalendarEvent.d.ts.map +1 -1
  325. package/dist/components/Schedule/DayView.d.ts +7 -1
  326. package/dist/components/Schedule/DayView.d.ts.map +1 -1
  327. package/dist/components/Schedule/ListView.d.ts.map +1 -1
  328. package/dist/components/Schedule/ListView.recipe.d.ts +56 -0
  329. package/dist/components/Schedule/ListView.recipe.d.ts.map +1 -0
  330. package/dist/components/Schedule/MonthlyView.d.ts.map +1 -1
  331. package/dist/components/Schedule/MonthlyView.recipe.d.ts +47 -0
  332. package/dist/components/Schedule/MonthlyView.recipe.d.ts.map +1 -0
  333. package/dist/components/Schedule/ScheduleEvent.recipe.d.ts +17 -0
  334. package/dist/components/Schedule/ScheduleEvent.recipe.d.ts.map +1 -1
  335. package/dist/components/Schedule/TimeGridView.d.ts +7 -1
  336. package/dist/components/Schedule/TimeGridView.d.ts.map +1 -1
  337. package/dist/components/Schedule/TimeGridView.recipe.d.ts +43 -0
  338. package/dist/components/Schedule/TimeGridView.recipe.d.ts.map +1 -0
  339. package/dist/components/Schedule/WeeklyView.d.ts +7 -1
  340. package/dist/components/Schedule/WeeklyView.d.ts.map +1 -1
  341. package/dist/components/Schedule/index.cjs +44 -21
  342. package/dist/components/Schedule/index.d.ts +6 -2
  343. package/dist/components/Schedule/index.d.ts.map +1 -1
  344. package/dist/components/Schedule/index.js +17 -10
  345. package/dist/components/Schedule/plugins/EventMovePlugin.d.ts +23 -0
  346. package/dist/components/Schedule/plugins/EventMovePlugin.d.ts.map +1 -0
  347. package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts +31 -0
  348. package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts.map +1 -0
  349. package/dist/components/Schedule/plugins/EventResizePlugin.d.ts +24 -0
  350. package/dist/components/Schedule/plugins/EventResizePlugin.d.ts.map +1 -0
  351. package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts +39 -0
  352. package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts.map +1 -0
  353. package/dist/components/Schedule/plugins/index.d.ts +4 -0
  354. package/dist/components/Schedule/plugins/index.d.ts.map +1 -1
  355. package/dist/components/Schedule/shared.d.ts +58 -3
  356. package/dist/components/Schedule/shared.d.ts.map +1 -1
  357. package/dist/components/Schedule/types.d.ts +47 -1
  358. package/dist/components/Schedule/types.d.ts.map +1 -1
  359. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.d.ts.map +1 -1
  360. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.recipe.d.ts +4 -0
  361. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.recipe.d.ts.map +1 -0
  362. package/dist/components/SearchFilterInput/index.cjs +32 -29
  363. package/dist/components/SearchFilterInput/index.js +24 -21
  364. package/dist/components/Select/index.cjs +15 -13
  365. package/dist/components/Select/index.js +13 -11
  366. package/dist/components/SideNav/SideNav.d.ts.map +1 -1
  367. package/dist/components/SideNav/SideNav.recipe.d.ts +26 -7
  368. package/dist/components/SideNav/SideNav.recipe.d.ts.map +1 -1
  369. package/dist/components/SideNav/SideNavItem.d.ts.map +1 -1
  370. package/dist/components/SideNav/index.cjs +18 -15
  371. package/dist/components/SideNav/index.js +12 -9
  372. package/dist/components/Slider/index.cjs +6 -6
  373. package/dist/components/Slider/index.js +5 -5
  374. package/dist/components/Spinner/index.cjs +5 -5
  375. package/dist/components/Spinner/index.js +4 -4
  376. package/dist/components/SplitButton/index.cjs +13 -11
  377. package/dist/components/SplitButton/index.js +12 -10
  378. package/dist/components/Stepper/index.cjs +5 -5
  379. package/dist/components/Stepper/index.js +4 -4
  380. package/dist/components/Switch/index.cjs +6 -6
  381. package/dist/components/Switch/index.js +5 -5
  382. package/dist/components/Table/index.cjs +54 -51
  383. package/dist/components/Table/index.js +28 -25
  384. package/dist/components/Tabs/Tab.d.ts.map +1 -1
  385. package/dist/components/Tabs/index.cjs +15 -13
  386. package/dist/components/Tabs/index.js +10 -8
  387. package/dist/components/Tag/Tag.d.ts.map +1 -1
  388. package/dist/components/Tag/index.cjs +8 -5
  389. package/dist/components/Tag/index.js +7 -4
  390. package/dist/components/TagsInput/index.cjs +15 -12
  391. package/dist/components/TagsInput/index.js +14 -11
  392. package/dist/components/Text/Heading.d.ts +5 -5
  393. package/dist/components/Text/Heading.d.ts.map +1 -1
  394. package/dist/components/Text/Text.d.ts +5 -5
  395. package/dist/components/Text/Text.d.ts.map +1 -1
  396. package/dist/components/Text/index.cjs +5 -5
  397. package/dist/components/Text/index.js +3 -3
  398. package/dist/components/TextArea/index.cjs +7 -7
  399. package/dist/components/TextArea/index.js +6 -6
  400. package/dist/components/TextInput/index.cjs +12 -10
  401. package/dist/components/TextInput/index.js +11 -9
  402. package/dist/components/Thumbnail/index.cjs +10 -8
  403. package/dist/components/Thumbnail/index.js +9 -7
  404. package/dist/components/TimeInput/index.cjs +11 -9
  405. package/dist/components/TimeInput/index.js +10 -8
  406. package/dist/components/Toast/index.cjs +12 -10
  407. package/dist/components/Toast/index.js +9 -7
  408. package/dist/components/ToggleButton/ToggleButton.recipe.d.ts.map +1 -1
  409. package/dist/components/ToggleButton/index.cjs +7 -7
  410. package/dist/components/ToggleButton/index.js +5 -5
  411. package/dist/components/Tooltip/Tooltip.d.ts +6 -6
  412. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  413. package/dist/components/Tooltip/index.cjs +4 -4
  414. package/dist/components/Tooltip/index.js +2 -2
  415. package/dist/components/TopNav/TopNavItem.d.ts.map +1 -1
  416. package/dist/components/TopNav/index.cjs +16 -13
  417. package/dist/components/TopNav/index.js +11 -8
  418. package/dist/components/TreeView/TreeViewItem.d.ts.map +1 -1
  419. package/dist/components/TreeView/index.cjs +3 -2
  420. package/dist/components/TreeView/index.js +2 -1
  421. package/dist/index.cjs +233 -214
  422. package/dist/index.cjs.map +1 -1
  423. package/dist/index.d.ts +1 -1
  424. package/dist/index.d.ts.map +1 -1
  425. package/dist/index.js +60 -57
  426. package/dist/index.js.map +1 -1
  427. package/dist/internal/ActionElement.d.ts +45 -0
  428. package/dist/internal/ActionElement.d.ts.map +1 -0
  429. package/dist/internal/HoverLayerTrigger.d.ts +3 -4
  430. package/dist/internal/HoverLayerTrigger.d.ts.map +1 -1
  431. package/dist/internal/useLayer.d.ts +12 -0
  432. package/dist/internal/useLayer.d.ts.map +1 -1
  433. package/dist/internal/useSelectListbox.d.ts +5 -5
  434. package/dist/internal/useSelectListbox.d.ts.map +1 -1
  435. package/dist/styles.css +1 -1
  436. package/package.json +1 -1
  437. package/dist/chunk-2AWSJF22.js.map +0 -1
  438. package/dist/chunk-2RZNX26F.cjs.map +0 -1
  439. package/dist/chunk-3VJIUZAY.cjs.map +0 -1
  440. package/dist/chunk-3Z5PF75J.cjs.map +0 -1
  441. package/dist/chunk-4RDA4W4N.js.map +0 -1
  442. package/dist/chunk-5XMWGK3O.cjs.map +0 -1
  443. package/dist/chunk-65MJZYO6.js.map +0 -1
  444. package/dist/chunk-6EYLEVC6.js.map +0 -1
  445. package/dist/chunk-6PIVWNUR.js.map +0 -1
  446. package/dist/chunk-AEYJ6PWC.js.map +0 -1
  447. package/dist/chunk-BIJ6YDWJ.cjs.map +0 -1
  448. package/dist/chunk-D5OX6II7.cjs.map +0 -1
  449. package/dist/chunk-DZZEJY3J.js.map +0 -1
  450. package/dist/chunk-EBJPUXFQ.js.map +0 -1
  451. package/dist/chunk-EFBSEJBD.js.map +0 -1
  452. package/dist/chunk-F7BFO3SD.cjs.map +0 -1
  453. package/dist/chunk-FCUUGJTM.cjs.map +0 -1
  454. package/dist/chunk-GSTINE4X.js.map +0 -1
  455. package/dist/chunk-GW6P4FJ4.cjs.map +0 -1
  456. package/dist/chunk-H4L456EW.js.map +0 -1
  457. package/dist/chunk-HWP2UGOC.cjs.map +0 -1
  458. package/dist/chunk-J2YKUHQM.js.map +0 -1
  459. package/dist/chunk-JM4Q7ZQH.cjs.map +0 -1
  460. package/dist/chunk-JSAYTQTJ.cjs.map +0 -1
  461. package/dist/chunk-KC4EKXGF.js.map +0 -1
  462. package/dist/chunk-L5JS6P62.cjs.map +0 -1
  463. package/dist/chunk-L5PJCLV6.js.map +0 -1
  464. package/dist/chunk-LBGC6EC5.js.map +0 -1
  465. package/dist/chunk-LKGHYNLH.js.map +0 -1
  466. package/dist/chunk-OUZX7STE.cjs.map +0 -1
  467. package/dist/chunk-Q3HMGFGI.js.map +0 -1
  468. package/dist/chunk-Q4HAXT5C.cjs.map +0 -1
  469. package/dist/chunk-RJEZBOSH.js.map +0 -1
  470. package/dist/chunk-S5CMLG2E.js.map +0 -1
  471. package/dist/chunk-SUWRSJAN.cjs.map +0 -1
  472. package/dist/chunk-THTVYP5V.js.map +0 -1
  473. package/dist/chunk-TSKFGLGQ.cjs.map +0 -1
  474. package/dist/chunk-TTDNCN5G.cjs.map +0 -1
  475. package/dist/chunk-U5M4JZBX.js.map +0 -1
  476. package/dist/chunk-UXQSSRBQ.cjs.map +0 -1
  477. package/dist/chunk-VH3G4IUX.js.map +0 -1
  478. package/dist/chunk-VV72PGKH.cjs.map +0 -1
  479. package/dist/chunk-XPGIWOJO.cjs.map +0 -1
  480. package/dist/chunk-ZPJW3PP7.cjs.map +0 -1
@@ -1,16 +1,23 @@
1
1
  'use strict';
2
2
 
3
- var chunkHWD4HDQ5_cjs = require('./chunk-HWD4HDQ5.cjs');
3
+ var chunkAFJEAYR4_cjs = require('./chunk-AFJEAYR4.cjs');
4
+ var chunk6ZV7HGZT_cjs = require('./chunk-6ZV7HGZT.cjs');
5
+ var chunkDFEAB7Z3_cjs = require('./chunk-DFEAB7Z3.cjs');
4
6
  var chunkKVJ27734_cjs = require('./chunk-KVJ27734.cjs');
5
7
  var chunkJK4YAQ2N_cjs = require('./chunk-JK4YAQ2N.cjs');
6
8
  var chunkR37R7DEV_cjs = require('./chunk-R37R7DEV.cjs');
7
- var chunkL5JS6P62_cjs = require('./chunk-L5JS6P62.cjs');
8
- var chunk5XMWGK3O_cjs = require('./chunk-5XMWGK3O.cjs');
9
- var chunkBSI4BQEX_cjs = require('./chunk-BSI4BQEX.cjs');
10
- var chunk3Z5PF75J_cjs = require('./chunk-3Z5PF75J.cjs');
11
- var chunkJSAYTQTJ_cjs = require('./chunk-JSAYTQTJ.cjs');
9
+ var chunkH7VK36SZ_cjs = require('./chunk-H7VK36SZ.cjs');
10
+ var chunkRAMDISDK_cjs = require('./chunk-RAMDISDK.cjs');
11
+ var chunk5K3C3INR_cjs = require('./chunk-5K3C3INR.cjs');
12
+ var chunkVXOIOPGZ_cjs = require('./chunk-VXOIOPGZ.cjs');
13
+ var chunkGU65FGY6_cjs = require('./chunk-GU65FGY6.cjs');
14
+ var chunkMHAXS4GO_cjs = require('./chunk-MHAXS4GO.cjs');
15
+ var chunkGJZAGTPV_cjs = require('./chunk-GJZAGTPV.cjs');
16
+ var chunkVK7DXUGH_cjs = require('./chunk-VK7DXUGH.cjs');
17
+ var chunkQAO6QMNQ_cjs = require('./chunk-QAO6QMNQ.cjs');
12
18
  var chunkJ4PIYOWT_cjs = require('./chunk-J4PIYOWT.cjs');
13
19
  var chunkZ6RT3WPE_cjs = require('./chunk-Z6RT3WPE.cjs');
20
+ var chunkJRBQKFVO_cjs = require('./chunk-JRBQKFVO.cjs');
14
21
  var chunkRU6JG3FS_cjs = require('./chunk-RU6JG3FS.cjs');
15
22
  var chunkSPDVNY2Z_cjs = require('./chunk-SPDVNY2Z.cjs');
16
23
  var polyfill = require('@js-temporal/polyfill');
@@ -62,6 +69,22 @@ var scheduleEventRecipe = chunkZ6RT3WPE_cjs.sva({
62
69
  color: "var(--schedule-event-fg)",
63
70
  _hover: {
64
71
  bg: "var(--schedule-event-bg-hover)"
72
+ },
73
+ // Active state: the pill's popover is open. Interactive pills carry
74
+ // `aria-expanded`, so this only matches the open trigger. The outline uses
75
+ // the category accent color and composes cleanly with the color/past
76
+ // background overrides.
77
+ '&[aria-expanded="true"]': {
78
+ outlineWidth: "focus",
79
+ outlineStyle: "solid",
80
+ outlineColor: "var(--schedule-event-dot)",
81
+ outlineOffset: "1px"
82
+ },
83
+ '&[data-state="past"]': {
84
+ "--schedule-event-bg": "color-mix(in srgb, var(--schedule-event-dot) 10%, token(colors.bg))",
85
+ "--schedule-event-bg-hover": "color-mix(in srgb, var(--schedule-event-dot) 14%, token(colors.bg))",
86
+ "--schedule-event-border": "color-mix(in srgb, var(--schedule-event-dot) 48%, token(colors.border))",
87
+ "--schedule-event-fg": "color-mix(in srgb, var(--schedule-event-fg-base) 52%, token(colors.fg.muted))"
65
88
  }
66
89
  },
67
90
  dot: {
@@ -117,6 +140,26 @@ var scheduleEventRecipe = chunkZ6RT3WPE_cjs.sva({
117
140
  true: { event: { w: "full" } },
118
141
  false: {}
119
142
  },
143
+ // Applied when the pill is rendered as a clickable <button> trigger (event
144
+ // popover plugin). Resets user-agent button styling so the pill looks
145
+ // identical to its static <span> form.
146
+ isInteractive: {
147
+ true: {
148
+ event: {
149
+ appearance: "none",
150
+ textAlign: "inherit",
151
+ font: "inherit",
152
+ m: 0,
153
+ cursor: "pointer",
154
+ _focusVisible: {
155
+ outlineWidth: "focus",
156
+ outlineStyle: "solid",
157
+ outlineColor: "primary"
158
+ }
159
+ }
160
+ },
161
+ false: {}
162
+ },
120
163
  color: {
121
164
  blue: {
122
165
  event: {
@@ -232,6 +275,9 @@ var scheduleEventRecipe = chunkZ6RT3WPE_cjs.sva({
232
275
  isPast: {
233
276
  true: {
234
277
  event: {
278
+ // Keep `isPast` in the recipe API for class-based assertions and
279
+ // callers, but rely on `[data-state="past"]` for the actual variable
280
+ // overrides so the color variant cannot win by atomic CSS order.
235
281
  "--schedule-event-bg": "color-mix(in srgb, var(--schedule-event-dot) 10%, token(colors.bg))",
236
282
  "--schedule-event-bg-hover": "color-mix(in srgb, var(--schedule-event-dot) 14%, token(colors.bg))",
237
283
  "--schedule-event-border": "color-mix(in srgb, var(--schedule-event-dot) 48%, token(colors.border))",
@@ -245,9 +291,208 @@ var scheduleEventRecipe = chunkZ6RT3WPE_cjs.sva({
245
291
  layout: "inline",
246
292
  color: "blue",
247
293
  isFullWidth: false,
294
+ isInteractive: false,
248
295
  isPast: false
249
296
  }
250
297
  });
298
+
299
+ // src/components/Schedule/TimeGridView.recipe.ts
300
+ var scheduleTimeGridViewRecipe = chunkZ6RT3WPE_cjs.sva({
301
+ slots: [
302
+ "grid",
303
+ "header",
304
+ "corner",
305
+ "dayHeader",
306
+ "dayHeaderContent",
307
+ "dayHeaderDayNumber",
308
+ "allDayLabel",
309
+ "allDayRow",
310
+ "dayCell",
311
+ "timeLabel",
312
+ "timeRow",
313
+ "hourCell",
314
+ "events",
315
+ "allDayEvents",
316
+ "allDayPopoverContent",
317
+ "allDayPopoverEvents",
318
+ "allDaySeeMoreButton",
319
+ "rowContents"
320
+ ],
321
+ base: {
322
+ grid: {
323
+ display: "grid",
324
+ gridTemplateColumns: "72px 1fr",
325
+ overflow: "auto"
326
+ },
327
+ header: {
328
+ display: "grid",
329
+ gridTemplateColumns: "repeat(var(--schedule-day-count), minmax(160px, 1fr))",
330
+ borderBlockEndWidth: "default",
331
+ borderBlockEndStyle: "solid",
332
+ borderBlockEndColor: "border"
333
+ },
334
+ corner: {
335
+ borderInlineEndWidth: "default",
336
+ borderInlineEndStyle: "solid",
337
+ borderInlineEndColor: "border",
338
+ borderBlockEndWidth: "default",
339
+ borderBlockEndStyle: "solid",
340
+ borderBlockEndColor: "border"
341
+ },
342
+ dayHeader: {
343
+ p: "2",
344
+ textAlign: "center",
345
+ borderInlineEndWidth: "default",
346
+ borderInlineEndStyle: "solid",
347
+ borderInlineEndColor: "border"
348
+ },
349
+ dayHeaderContent: {
350
+ display: "inline-flex",
351
+ alignItems: "center",
352
+ justifyContent: "center",
353
+ gap: "1"
354
+ },
355
+ dayHeaderDayNumber: {
356
+ display: "inline-flex",
357
+ alignItems: "center",
358
+ justifyContent: "center",
359
+ minW: "30px",
360
+ h: "30px",
361
+ lineHeight: "30px",
362
+ borderRadius: "full"
363
+ },
364
+ allDayLabel: {
365
+ display: "flex",
366
+ alignItems: "flex-start",
367
+ justifyContent: "flex-end",
368
+ py: "0.5",
369
+ px: "2",
370
+ borderInlineEndWidth: "default",
371
+ borderInlineEndStyle: "solid",
372
+ borderInlineEndColor: "border",
373
+ borderBlockEndWidth: "default",
374
+ borderBlockEndStyle: "solid",
375
+ borderBlockEndColor: "border"
376
+ },
377
+ allDayRow: {
378
+ display: "grid",
379
+ gridTemplateColumns: "repeat(var(--schedule-day-count), minmax(160px, 1fr))",
380
+ borderBlockEndWidth: "default",
381
+ borderBlockEndStyle: "solid",
382
+ borderBlockEndColor: "border"
383
+ },
384
+ dayCell: {
385
+ minH: 0,
386
+ p: "0.5",
387
+ borderInlineEndWidth: "default",
388
+ borderInlineEndStyle: "solid",
389
+ borderInlineEndColor: "border"
390
+ },
391
+ timeLabel: {
392
+ p: "2",
393
+ color: "fg.muted",
394
+ textAlign: "end",
395
+ borderInlineEndWidth: "default",
396
+ borderInlineEndStyle: "solid",
397
+ borderInlineEndColor: "border",
398
+ borderBlockEndWidth: "default",
399
+ borderBlockEndStyle: "solid",
400
+ borderBlockEndColor: "border"
401
+ },
402
+ timeRow: {
403
+ display: "grid",
404
+ gridTemplateColumns: "repeat(var(--schedule-day-count), minmax(160px, 1fr))"
405
+ },
406
+ hourCell: {
407
+ position: "relative",
408
+ minH: "14",
409
+ p: "1",
410
+ borderInlineEndWidth: "default",
411
+ borderInlineEndStyle: "solid",
412
+ borderInlineEndColor: "border",
413
+ borderBlockEndWidth: "default",
414
+ borderBlockEndStyle: "solid",
415
+ borderBlockEndColor: "border"
416
+ },
417
+ events: {
418
+ display: "flex",
419
+ flexDirection: "column",
420
+ gap: "1"
421
+ },
422
+ allDayEvents: {
423
+ display: "flex",
424
+ flexDirection: "column",
425
+ gap: "0.5"
426
+ },
427
+ allDayPopoverContent: {
428
+ display: "flex",
429
+ flexDirection: "column",
430
+ gap: "1",
431
+ p: "3"
432
+ },
433
+ allDayPopoverEvents: {
434
+ display: "flex",
435
+ flexDirection: "column",
436
+ gap: 0,
437
+ m: 0,
438
+ p: 0,
439
+ listStyleType: "none"
440
+ },
441
+ allDaySeeMoreButton: {
442
+ display: "inline-flex",
443
+ alignItems: "center",
444
+ maxW: "full",
445
+ h: "5",
446
+ px: "1",
447
+ borderRadius: "sm",
448
+ color: "primary",
449
+ cursor: "pointer",
450
+ fontSize: "xs",
451
+ fontWeight: "medium",
452
+ lineHeight: "tight",
453
+ overflow: "hidden",
454
+ textOverflow: "ellipsis",
455
+ whiteSpace: "nowrap",
456
+ _hover: {
457
+ bg: "bg.muted"
458
+ }
459
+ },
460
+ rowContents: {
461
+ display: "contents"
462
+ }
463
+ },
464
+ variants: {
465
+ isCurrentDay: {
466
+ true: {
467
+ dayHeaderDayNumber: {
468
+ bg: "primary",
469
+ color: "fg.onPrimary"
470
+ }
471
+ },
472
+ false: {}
473
+ },
474
+ isLastColumn: {
475
+ true: {
476
+ dayHeader: { borderInlineEndWidth: 0 },
477
+ dayCell: { borderInlineEndWidth: 0 },
478
+ hourCell: { borderInlineEndWidth: 0 }
479
+ },
480
+ false: {}
481
+ },
482
+ isLastRow: {
483
+ true: {
484
+ timeLabel: { borderBlockEndWidth: 0 },
485
+ hourCell: { borderBlockEndWidth: 0 }
486
+ },
487
+ false: {}
488
+ }
489
+ },
490
+ defaultVariants: {
491
+ isCurrentDay: false,
492
+ isLastColumn: false,
493
+ isLastRow: false
494
+ }
495
+ });
251
496
  var ScheduleContext = react.createContext(null);
252
497
  ScheduleContext.displayName = "ScheduleContext";
253
498
  function useScheduleContext() {
@@ -384,6 +629,53 @@ var scheduleRecipe = chunkZ6RT3WPE_cjs.sva({
384
629
  });
385
630
  var scheduleClasses = scheduleRecipe();
386
631
  var categoryFallback = { label: "Event", color: "blue" };
632
+ var currentTimeIndicator = chunkJRBQKFVO_cjs.cva({
633
+ base: {
634
+ h: "0.5",
635
+ bg: "surface.orange.accent",
636
+ borderRadius: "full",
637
+ pointerEvents: "none",
638
+ _before: {
639
+ content: '""',
640
+ position: "absolute",
641
+ insetInlineStart: "-6px",
642
+ top: "50%",
643
+ w: "2.5",
644
+ h: "2.5",
645
+ borderRadius: "full",
646
+ bg: "surface.orange.accent",
647
+ transform: "translateY(-50%)"
648
+ }
649
+ },
650
+ variants: {
651
+ layout: {
652
+ list: {
653
+ position: "relative"
654
+ },
655
+ timeGrid: {
656
+ position: "absolute",
657
+ insetInline: "0",
658
+ transform: "translateY(2px)",
659
+ zIndex: "20"
660
+ }
661
+ }
662
+ }
663
+ });
664
+ function ScheduleCurrentTimeIndicator({
665
+ layout,
666
+ testId,
667
+ style
668
+ }) {
669
+ return /* @__PURE__ */ jsxRuntime.jsx(
670
+ "div",
671
+ {
672
+ "aria-hidden": "true",
673
+ className: currentTimeIndicator({ layout }),
674
+ "data-testid": testId,
675
+ style
676
+ }
677
+ );
678
+ }
387
679
  function createCategoryMap(categories) {
388
680
  const categoryMap = /* @__PURE__ */ new Map();
389
681
  categories.forEach((category) => {
@@ -460,45 +752,197 @@ function isEventInPast(event, currentTime2, timezoneID) {
460
752
  }
461
753
  return event.end <= currentTime2;
462
754
  }
463
- function CalendarEventPill({
755
+ function hasEventPopoverPlugin(plugins) {
756
+ return plugins.some((plugin) => plugin.renderEventPopover != null);
757
+ }
758
+ function useScheduleEventPopover(event, { placement = "end" } = {}) {
759
+ const { categoryMap, plugins, timezoneID } = useScheduleContext();
760
+ const popover = chunkRAMDISDK_cjs.usePopover({
761
+ // Content renders its own close affordance via the `controls.close` passed
762
+ // to renderEventPopover, so suppress the built-in close button.
763
+ hasCloseButton: false,
764
+ label: getEventAccessibleLabel(event, categoryMap, timezoneID),
765
+ role: "dialog"
766
+ });
767
+ const { hide } = popover;
768
+ const controls = react.useMemo(
769
+ () => ({ close: hide }),
770
+ [hide]
771
+ );
772
+ const content = react.useMemo(() => {
773
+ for (const plugin of plugins) {
774
+ const node = plugin.renderEventPopover?.(event, controls);
775
+ if (chunkQAO6QMNQ_cjs.isReactNode(node)) {
776
+ return node;
777
+ }
778
+ }
779
+ return null;
780
+ }, [controls, event, plugins]);
781
+ if (!chunkQAO6QMNQ_cjs.isReactNode(content)) {
782
+ return {};
783
+ }
784
+ return {
785
+ popover: popover.render(content, {
786
+ alignment: "start",
787
+ offsetX: 8,
788
+ offsetY: -3,
789
+ placement
790
+ }),
791
+ triggerProps: {
792
+ ...popover.triggerProps,
793
+ onClick: popover.toggle,
794
+ ref: popover.triggerRef
795
+ }
796
+ };
797
+ }
798
+ function useScheduleEventPluginProps({
464
799
  event,
465
- isPast = false
800
+ layout
466
801
  }) {
467
- const { categoryMap, timezoneID } = useScheduleContext();
468
- const category = getCategory(categoryMap, event);
469
- const classes = scheduleEventRecipe({ color: category.color, isPast });
802
+ const { plugins, timezoneID } = useScheduleContext();
803
+ return react.useMemo(() => {
804
+ let props;
805
+ plugins.forEach((plugin) => {
806
+ const pluginProps = plugin.getEventProps?.({ event, layout, timezoneID });
807
+ if (pluginProps != null) {
808
+ props = { ...props, ...pluginProps };
809
+ }
810
+ });
811
+ return props;
812
+ }, [event, layout, plugins, timezoneID]);
813
+ }
814
+ function EventPillRoot({
815
+ children,
816
+ className,
817
+ dataState,
818
+ dataTestId,
819
+ pluginProps,
820
+ triggerProps
821
+ }) {
822
+ if (triggerProps != null) {
823
+ return /* @__PURE__ */ jsxRuntime.jsx(
824
+ "button",
825
+ {
826
+ className,
827
+ "data-state": dataState,
828
+ "data-testid": dataTestId,
829
+ ...pluginProps,
830
+ type: "button",
831
+ ...triggerProps,
832
+ children
833
+ }
834
+ );
835
+ }
470
836
  return /* @__PURE__ */ jsxRuntime.jsx(
471
837
  "span",
472
838
  {
473
- className: classes.event,
474
- "data-state": isPast ? "past" : void 0,
475
- "data-testid": `schedule-event-${event.id}`,
476
- children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.title, children: isDayEvent(event) ? event.title : getEventAccessibleLabel(event, categoryMap, timezoneID) })
839
+ className,
840
+ "data-state": dataState,
841
+ "data-testid": dataTestId,
842
+ ...pluginProps,
843
+ children
477
844
  }
478
845
  );
479
846
  }
847
+ function CalendarEventPill({
848
+ event,
849
+ isFullWidth = false,
850
+ isPast = false
851
+ }) {
852
+ const { categoryMap, timezoneID } = useScheduleContext();
853
+ const { popover, triggerProps } = useScheduleEventPopover(event);
854
+ const pluginProps = useScheduleEventPluginProps({ event, layout: "inline" });
855
+ const category = getCategory(categoryMap, event);
856
+ const classes = scheduleEventRecipe({
857
+ color: category.color,
858
+ isFullWidth,
859
+ isPast,
860
+ isInteractive: triggerProps != null
861
+ });
862
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
863
+ /* @__PURE__ */ jsxRuntime.jsx(
864
+ EventPillRoot,
865
+ {
866
+ className: classes.event,
867
+ dataState: isPast ? "past" : void 0,
868
+ dataTestId: `schedule-event-${event.id}`,
869
+ pluginProps,
870
+ triggerProps,
871
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.title, children: isDayEvent(event) ? event.title : getEventAccessibleLabel(event, categoryMap, timezoneID) })
872
+ }
873
+ ),
874
+ popover
875
+ ] });
876
+ }
480
877
  function CalendarMonthEventPill({
481
878
  event,
482
879
  isPast = false
483
880
  }) {
484
881
  const { categoryMap, timezoneID } = useScheduleContext();
882
+ const { popover, triggerProps } = useScheduleEventPopover(event);
883
+ const pluginProps = useScheduleEventPluginProps({ event, layout: "month" });
485
884
  const category = getCategory(categoryMap, event);
486
885
  const startTimeLabel = getEventStartTimeLabel(event, timezoneID);
487
886
  const classes = scheduleEventRecipe({
488
887
  color: category.color,
489
888
  isPast,
490
- isFullWidth: true
889
+ isFullWidth: true,
890
+ isInteractive: triggerProps != null
491
891
  });
492
- return /* @__PURE__ */ jsxRuntime.jsxs(
493
- "span",
892
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
893
+ /* @__PURE__ */ jsxRuntime.jsxs(
894
+ EventPillRoot,
895
+ {
896
+ className: classes.event,
897
+ dataState: isPast ? "past" : void 0,
898
+ dataTestId: `schedule-event-${event.id}`,
899
+ pluginProps,
900
+ triggerProps,
901
+ children: [
902
+ startTimeLabel != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.time, children: startTimeLabel }) : null,
903
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.title, children: event.title })
904
+ ]
905
+ }
906
+ ),
907
+ popover
908
+ ] });
909
+ }
910
+ function ScheduleEventOverflowPopover({
911
+ buttonClassName,
912
+ contentClassName,
913
+ events,
914
+ eventsClassName,
915
+ hiddenEventCount,
916
+ label,
917
+ renderEvent,
918
+ testId,
919
+ title
920
+ }) {
921
+ return /* @__PURE__ */ jsxRuntime.jsx(
922
+ chunkRAMDISDK_cjs.Popover,
494
923
  {
495
- className: classes.event,
496
- "data-state": isPast ? "past" : void 0,
497
- "data-testid": `schedule-event-${event.id}`,
498
- children: [
499
- startTimeLabel != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.time, children: startTimeLabel }) : null,
500
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.title, children: event.title })
501
- ]
924
+ content: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: contentClassName, children: [
925
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMHAXS4GO_cjs.Heading, { level: 4, children: title }),
926
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: eventsClassName, children: events.map((event) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: renderEvent(event) }, event.id)) })
927
+ ] }),
928
+ "data-testid": testId,
929
+ label,
930
+ width: 320,
931
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
932
+ chunk5K3C3INR_cjs.Link,
933
+ {
934
+ className: buttonClassName,
935
+ color: "primary",
936
+ label,
937
+ size: "xs",
938
+ weight: "medium",
939
+ children: [
940
+ "+",
941
+ hiddenEventCount,
942
+ " more"
943
+ ]
944
+ }
945
+ )
502
946
  }
503
947
  );
504
948
  }
@@ -511,9 +955,9 @@ function ScheduleFrame({
511
955
  const initialHeader = {
512
956
  startContent: null,
513
957
  centerContent: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: scheduleClasses.headerTitleContent, children: [
514
- /* @__PURE__ */ jsxRuntime.jsx(chunk3Z5PF75J_cjs.Heading, { level: 2, children: title }),
958
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMHAXS4GO_cjs.Heading, { level: 2, children: title }),
515
959
  isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
516
- chunkBSI4BQEX_cjs.Spinner,
960
+ chunkGU65FGY6_cjs.Spinner,
517
961
  {
518
962
  "aria-label": "Loading events",
519
963
  className: scheduleClasses.headerTitleSpinner,
@@ -572,141 +1016,7 @@ function subscribe(listener) {
572
1016
  function useCurrentTime() {
573
1017
  return react.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
574
1018
  }
575
- var styles = {
576
- grid: chunkRU6JG3FS_cjs.css({
577
- display: "grid",
578
- gridTemplateColumns: "72px 1fr",
579
- overflow: "auto"
580
- }),
581
- header: chunkRU6JG3FS_cjs.css({
582
- display: "grid",
583
- gridTemplateColumns: "repeat(var(--schedule-day-count), minmax(160px, 1fr))",
584
- borderBlockEndWidth: "default",
585
- borderBlockEndStyle: "solid",
586
- borderBlockEndColor: "border"
587
- }),
588
- corner: chunkRU6JG3FS_cjs.css({
589
- borderInlineEndWidth: "default",
590
- borderInlineEndStyle: "solid",
591
- borderInlineEndColor: "border",
592
- borderBlockEndWidth: "default",
593
- borderBlockEndStyle: "solid",
594
- borderBlockEndColor: "border"
595
- }),
596
- dayHeader: chunkRU6JG3FS_cjs.css({
597
- p: "2",
598
- textAlign: "center",
599
- borderInlineEndWidth: "default",
600
- borderInlineEndStyle: "solid",
601
- borderInlineEndColor: "border"
602
- }),
603
- lastColumn: chunkRU6JG3FS_cjs.css({
604
- borderInlineEndWidth: 0
605
- }),
606
- dayHeaderContent: chunkRU6JG3FS_cjs.css({
607
- display: "inline-flex",
608
- alignItems: "center",
609
- justifyContent: "center",
610
- gap: "1"
611
- }),
612
- dayHeaderDayNumber: chunkRU6JG3FS_cjs.css({
613
- display: "inline-flex",
614
- alignItems: "center",
615
- justifyContent: "center",
616
- minW: "30px",
617
- h: "30px",
618
- lineHeight: "30px",
619
- borderRadius: "full"
620
- }),
621
- dayHeaderCurrent: chunkRU6JG3FS_cjs.css({
622
- bg: "primary",
623
- color: "fg.onPrimary"
624
- }),
625
- allDayLabel: chunkRU6JG3FS_cjs.css({
626
- display: "flex",
627
- alignItems: "center",
628
- justifyContent: "flex-end",
629
- py: "1",
630
- px: "2",
631
- borderInlineEndWidth: "default",
632
- borderInlineEndStyle: "solid",
633
- borderInlineEndColor: "border",
634
- borderBlockEndWidth: "default",
635
- borderBlockEndStyle: "solid",
636
- borderBlockEndColor: "border"
637
- }),
638
- allDayRow: chunkRU6JG3FS_cjs.css({
639
- display: "grid",
640
- gridTemplateColumns: "repeat(var(--schedule-day-count), minmax(160px, 1fr))",
641
- borderBlockEndWidth: "default",
642
- borderBlockEndStyle: "solid",
643
- borderBlockEndColor: "border"
644
- }),
645
- dayCell: chunkRU6JG3FS_cjs.css({
646
- minH: 0,
647
- p: "0.5",
648
- borderInlineEndWidth: "default",
649
- borderInlineEndStyle: "solid",
650
- borderInlineEndColor: "border"
651
- }),
652
- timeLabel: chunkRU6JG3FS_cjs.css({
653
- p: "2",
654
- color: "fg.muted",
655
- textAlign: "end",
656
- borderInlineEndWidth: "default",
657
- borderInlineEndStyle: "solid",
658
- borderInlineEndColor: "border",
659
- borderBlockEndWidth: "default",
660
- borderBlockEndStyle: "solid",
661
- borderBlockEndColor: "border"
662
- }),
663
- timeRow: chunkRU6JG3FS_cjs.css({
664
- display: "grid",
665
- gridTemplateColumns: "repeat(var(--schedule-day-count), minmax(160px, 1fr))"
666
- }),
667
- hourCell: chunkRU6JG3FS_cjs.css({
668
- position: "relative",
669
- minH: "14",
670
- p: "1",
671
- borderInlineEndWidth: "default",
672
- borderInlineEndStyle: "solid",
673
- borderInlineEndColor: "border",
674
- borderBlockEndWidth: "default",
675
- borderBlockEndStyle: "solid",
676
- borderBlockEndColor: "border"
677
- }),
678
- lastRow: chunkRU6JG3FS_cjs.css({
679
- borderBlockEndWidth: 0
680
- }),
681
- events: chunkRU6JG3FS_cjs.css({
682
- display: "flex",
683
- flexDirection: "column",
684
- gap: "1"
685
- }),
686
- currentTimeLine: chunkRU6JG3FS_cjs.css({
687
- position: "absolute",
688
- insetInline: "0",
689
- borderBlockStartWidth: "2px",
690
- borderBlockStartStyle: "solid",
691
- borderBlockStartColor: "surface.orange.accent",
692
- transform: "translateY(2px)",
693
- zIndex: "20",
694
- pointerEvents: "none",
695
- _before: {
696
- content: '""',
697
- position: "absolute",
698
- insetInlineStart: "-6px",
699
- top: "-6px",
700
- w: "2.5",
701
- h: "2.5",
702
- borderRadius: "full",
703
- bg: "surface.orange.accent"
704
- }
705
- }),
706
- rowContents: chunkRU6JG3FS_cjs.css({
707
- display: "contents"
708
- })
709
- };
1019
+ var styles = scheduleTimeGridViewRecipe();
710
1020
  function eventOverlapsHour(event, day, hour, timezoneID) {
711
1021
  if (isDayEvent(event)) {
712
1022
  return false;
@@ -787,6 +1097,73 @@ function getTimedEventStyle({
787
1097
  zIndex: level + 1
788
1098
  };
789
1099
  }
1100
+ function TimeGridEvent({
1101
+ currentTime: currentTime2,
1102
+ hourHeight,
1103
+ layout,
1104
+ maxHour,
1105
+ minHour
1106
+ }) {
1107
+ const { categoryMap, plugins, timezoneID } = useScheduleContext();
1108
+ const { event } = layout;
1109
+ const { popover, triggerProps } = useScheduleEventPopover(event);
1110
+ const eventPluginProps = useScheduleEventPluginProps({
1111
+ event,
1112
+ layout: "timeGrid"
1113
+ });
1114
+ const pluginEndContent = react.useMemo(
1115
+ () => plugins.map(
1116
+ (plugin) => plugin.renderTimeGridEventContent?.({
1117
+ event,
1118
+ hourHeight,
1119
+ maxHour,
1120
+ minHour,
1121
+ timezoneID
1122
+ })
1123
+ ).filter(chunkQAO6QMNQ_cjs.isReactNode),
1124
+ [event, hourHeight, maxHour, minHour, plugins, timezoneID]
1125
+ );
1126
+ const category = getCategory(categoryMap, event);
1127
+ const isPast = isEventInPast(event, currentTime2, timezoneID);
1128
+ const classes = scheduleEventRecipe({
1129
+ layout: "block",
1130
+ color: category.color,
1131
+ isPast,
1132
+ isInteractive: triggerProps != null
1133
+ });
1134
+ const style = getTimedEventStyle(layout);
1135
+ const body = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1136
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.title, children: event.title }),
1137
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.time, children: getEventTimeLabel(event, timezoneID) }),
1138
+ pluginEndContent
1139
+ ] });
1140
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1141
+ triggerProps != null ? /* @__PURE__ */ jsxRuntime.jsx(
1142
+ "button",
1143
+ {
1144
+ className: classes.event,
1145
+ "data-state": isPast ? "past" : void 0,
1146
+ "data-testid": `schedule-event-${event.id}`,
1147
+ style,
1148
+ type: "button",
1149
+ ...eventPluginProps,
1150
+ ...triggerProps,
1151
+ children: body
1152
+ }
1153
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1154
+ "div",
1155
+ {
1156
+ className: classes.event,
1157
+ "data-state": isPast ? "past" : void 0,
1158
+ "data-testid": `schedule-event-${event.id}`,
1159
+ ...eventPluginProps,
1160
+ style,
1161
+ children: body
1162
+ }
1163
+ ),
1164
+ popover
1165
+ ] });
1166
+ }
790
1167
  function getCellName({
791
1168
  categoryMap,
792
1169
  date,
@@ -801,12 +1178,13 @@ function getCellName({
801
1178
  return eventLabels.length > 0 ? `${dateLabel} ${hourLabel}. ${eventLabels.join(". ")}` : `${dateLabel} ${hourLabel}`;
802
1179
  }
803
1180
  function TimeGridView({
1181
+ allDayEventLimit = 3,
804
1182
  days,
805
1183
  hourHeight = 100,
806
1184
  maxHour = 24,
807
1185
  minHour = 0
808
1186
  }) {
809
- const { categoryMap, events, highlightDate, timezoneID } = useScheduleContext();
1187
+ const { categoryMap, events, highlightDate, plugins, timezoneID } = useScheduleContext();
810
1188
  const normalizedMinHour = Math.max(0, Math.min(23, Math.floor(minHour)));
811
1189
  const normalizedMaxHour = Math.max(
812
1190
  normalizedMinHour + 1,
@@ -826,6 +1204,7 @@ function TimeGridView({
826
1204
  "--schedule-day-count": String(days.length)
827
1205
  };
828
1206
  const normalizedHourHeight = Math.max(1, Math.floor(hourHeight));
1207
+ const normalizedAllDayEventLimit = Number.isFinite(allDayEventLimit) ? Math.max(0, Math.floor(allDayEventLimit)) : 3;
829
1208
  const hourStyle = {
830
1209
  height: normalizedHourHeight,
831
1210
  minHeight: normalizedHourHeight
@@ -861,42 +1240,37 @@ function TimeGridView({
861
1240
  role: "columnheader"
862
1241
  }
863
1242
  ),
864
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.header, children: days.map((day, index) => /* @__PURE__ */ jsxRuntime.jsx(
865
- "div",
866
- {
867
- "aria-colindex": index + 2,
868
- "aria-current": chunkJK4YAQ2N_cjs.plainDateIsEqual(day, highlightPlainDate) ? "date" : void 0,
869
- "aria-label": chunkJK4YAQ2N_cjs.plainDateFormat(day, chunkJK4YAQ2N_cjs.DATE_FORMAT_WITH_WEEKDAY),
870
- className: chunkSPDVNY2Z_cjs.cx(
871
- styles.dayHeader,
872
- index === days.length - 1 && styles.lastColumn
873
- ),
874
- role: "columnheader",
875
- children: /* @__PURE__ */ jsxRuntime.jsx(
876
- chunk3Z5PF75J_cjs.Heading,
877
- {
878
- "aria-hidden": "true",
879
- color: "secondary",
880
- level: 4,
881
- textWrap: "nowrap",
882
- children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.dayHeaderContent, children: [
883
- chunkJK4YAQ2N_cjs.plainDateFormat(day, { weekday: "short" }),
884
- /* @__PURE__ */ jsxRuntime.jsx(
885
- "span",
886
- {
887
- className: chunkSPDVNY2Z_cjs.cx(
888
- styles.dayHeaderDayNumber,
889
- chunkJK4YAQ2N_cjs.plainDateIsEqual(day, highlightPlainDate) && styles.dayHeaderCurrent
890
- ),
891
- children: day.day
892
- }
893
- )
894
- ] })
895
- }
896
- )
897
- },
898
- day.toString()
899
- )) })
1243
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.header, children: days.map((day, index) => {
1244
+ const isCurrentDay = chunkJK4YAQ2N_cjs.plainDateIsEqual(day, highlightPlainDate);
1245
+ const dayHeaderClasses = scheduleTimeGridViewRecipe({
1246
+ isCurrentDay,
1247
+ isLastColumn: index === days.length - 1
1248
+ });
1249
+ return /* @__PURE__ */ jsxRuntime.jsx(
1250
+ "div",
1251
+ {
1252
+ "aria-colindex": index + 2,
1253
+ "aria-current": isCurrentDay ? "date" : void 0,
1254
+ "aria-label": chunkJK4YAQ2N_cjs.plainDateFormat(day, chunkJK4YAQ2N_cjs.DATE_FORMAT_WITH_WEEKDAY),
1255
+ className: dayHeaderClasses.dayHeader,
1256
+ role: "columnheader",
1257
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1258
+ chunkMHAXS4GO_cjs.Heading,
1259
+ {
1260
+ "aria-hidden": "true",
1261
+ color: "secondary",
1262
+ level: 4,
1263
+ textWrap: "nowrap",
1264
+ children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.dayHeaderContent, children: [
1265
+ chunkJK4YAQ2N_cjs.plainDateFormat(day, { weekday: "short" }),
1266
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: dayHeaderClasses.dayHeaderDayNumber, children: day.day })
1267
+ ] })
1268
+ }
1269
+ )
1270
+ },
1271
+ day.toString()
1272
+ );
1273
+ }) })
900
1274
  ] }),
901
1275
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.rowContents, role: "row", children: [
902
1276
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -906,13 +1280,23 @@ function TimeGridView({
906
1280
  "aria-label": `${timezoneLabel} all day`,
907
1281
  className: styles.allDayLabel,
908
1282
  role: "rowheader",
909
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk3Z5PF75J_cjs.Text, { color: "secondary", type: "supporting", weight: "bold", children: timezoneLabel })
1283
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkMHAXS4GO_cjs.Text, { color: "secondary", type: "supporting", weight: "bold", children: timezoneLabel })
910
1284
  }
911
1285
  ),
912
1286
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.allDayRow, children: days.map((day, index) => {
913
1287
  const dayEvents = events.filter(
914
1288
  (event) => isDayEvent(event) && eventOccursOnDate(event, day, timezoneID)
915
1289
  );
1290
+ const visibleDayEvents = dayEvents.slice(
1291
+ 0,
1292
+ normalizedAllDayEventLimit
1293
+ );
1294
+ const hiddenDayEvents = dayEvents.slice(normalizedAllDayEventLimit);
1295
+ const dayCellClasses = scheduleTimeGridViewRecipe({
1296
+ isLastColumn: index === days.length - 1
1297
+ });
1298
+ const dateLabel = chunkJK4YAQ2N_cjs.plainDateFormat(day, chunkJK4YAQ2N_cjs.DATE_FORMAT_WITH_WEEKDAY);
1299
+ const seeMoreLabel = `Show ${hiddenDayEvents.length} more all-day events for ${dateLabel}`;
916
1300
  return /* @__PURE__ */ jsxRuntime.jsx(
917
1301
  "div",
918
1302
  {
@@ -924,19 +1308,39 @@ function TimeGridView({
924
1308
  hourLabel: "all day",
925
1309
  timezoneID
926
1310
  }),
927
- className: chunkSPDVNY2Z_cjs.cx(
928
- styles.dayCell,
929
- index === days.length - 1 && styles.lastColumn
930
- ),
1311
+ className: dayCellClasses.dayCell,
931
1312
  role: "gridcell",
932
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.events, children: dayEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(
933
- CalendarEventPill,
934
- {
935
- event,
936
- isPast: isEventInPast(event, currentTime2, timezoneID)
937
- },
938
- event.id
939
- )) })
1313
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.allDayEvents, children: [
1314
+ visibleDayEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(
1315
+ CalendarEventPill,
1316
+ {
1317
+ event,
1318
+ isPast: isEventInPast(event, currentTime2, timezoneID)
1319
+ },
1320
+ event.id
1321
+ )),
1322
+ hiddenDayEvents.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
1323
+ ScheduleEventOverflowPopover,
1324
+ {
1325
+ buttonClassName: styles.allDaySeeMoreButton,
1326
+ contentClassName: styles.allDayPopoverContent,
1327
+ events: dayEvents,
1328
+ eventsClassName: styles.allDayPopoverEvents,
1329
+ hiddenEventCount: hiddenDayEvents.length,
1330
+ label: seeMoreLabel,
1331
+ renderEvent: (event) => /* @__PURE__ */ jsxRuntime.jsx(
1332
+ CalendarEventPill,
1333
+ {
1334
+ event,
1335
+ isFullWidth: true,
1336
+ isPast: isEventInPast(event, currentTime2, timezoneID)
1337
+ }
1338
+ ),
1339
+ testId: `schedule-all-day-see-more-${day.toString()}`,
1340
+ title: dateLabel
1341
+ }
1342
+ ) : null
1343
+ ] })
940
1344
  },
941
1345
  `${day.toString()}-all-day`
942
1346
  );
@@ -945,12 +1349,15 @@ function TimeGridView({
945
1349
  hours.map((hour) => {
946
1350
  const hourLabel = formatHour(hour);
947
1351
  const isLastHour = hour === hours[hours.length - 1];
1352
+ const timeLabelClasses = scheduleTimeGridViewRecipe({
1353
+ isLastRow: isLastHour
1354
+ });
948
1355
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.rowContents, role: "row", children: [
949
1356
  /* @__PURE__ */ jsxRuntime.jsx(
950
1357
  "div",
951
1358
  {
952
1359
  "aria-colindex": 1,
953
- className: chunkSPDVNY2Z_cjs.cx(styles.timeLabel, isLastHour && styles.lastRow),
1360
+ className: timeLabelClasses.timeLabel,
954
1361
  role: "rowheader",
955
1362
  style: hourStyle,
956
1363
  children: hourLabel
@@ -969,6 +1376,24 @@ function TimeGridView({
969
1376
  minHour: normalizedMinHour,
970
1377
  timezoneID
971
1378
  });
1379
+ const hourCellClasses = scheduleTimeGridViewRecipe({
1380
+ isLastColumn: index === days.length - 1,
1381
+ isLastRow: isLastHour
1382
+ });
1383
+ const hourCellPluginProps = plugins.reduce(
1384
+ (props, plugin) => ({
1385
+ ...props,
1386
+ ...plugin.getTimeGridCellProps?.({
1387
+ date: day,
1388
+ hour,
1389
+ hourHeight: normalizedHourHeight,
1390
+ maxHour: normalizedMaxHour,
1391
+ minHour: normalizedMinHour,
1392
+ timezoneID
1393
+ })
1394
+ }),
1395
+ {}
1396
+ );
972
1397
  return /* @__PURE__ */ jsxRuntime.jsxs(
973
1398
  "div",
974
1399
  {
@@ -980,51 +1405,31 @@ function TimeGridView({
980
1405
  hourLabel,
981
1406
  timezoneID
982
1407
  }),
983
- className: chunkSPDVNY2Z_cjs.cx(
984
- styles.hourCell,
985
- index === days.length - 1 && styles.lastColumn,
986
- isLastHour && styles.lastRow
987
- ),
1408
+ className: hourCellClasses.hourCell,
1409
+ "data-testid": `schedule-time-grid-cell-${day.toString()}-${hour}`,
988
1410
  role: "gridcell",
989
1411
  style: hourStyle,
1412
+ ...hourCellPluginProps,
990
1413
  children: [
991
1414
  currentTimeTop != null ? /* @__PURE__ */ jsxRuntime.jsx(
992
- "div",
1415
+ ScheduleCurrentTimeIndicator,
993
1416
  {
994
- "aria-hidden": "true",
995
- className: styles.currentTimeLine,
996
- "data-testid": "schedule-current-time-line",
997
- style: { top: `${currentTimeTop}%` }
1417
+ layout: "timeGrid",
1418
+ style: { top: `${currentTimeTop}%` },
1419
+ testId: "schedule-current-time-line"
998
1420
  }
999
1421
  ) : null,
1000
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.events, children: visibleTimedEventLayouts.map((layout) => {
1001
- const { event } = layout;
1002
- const category = getCategory(categoryMap, event);
1003
- const isPast = isEventInPast(
1004
- event,
1005
- currentTime2,
1006
- timezoneID
1007
- );
1008
- const eventClasses = scheduleEventRecipe({
1009
- layout: "block",
1010
- color: category.color,
1011
- isPast
1012
- });
1013
- return /* @__PURE__ */ jsxRuntime.jsxs(
1014
- "div",
1015
- {
1016
- className: eventClasses.event,
1017
- "data-state": isPast ? "past" : void 0,
1018
- "data-testid": `schedule-event-${event.id}`,
1019
- style: getTimedEventStyle(layout),
1020
- children: [
1021
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventClasses.title, children: event.title }),
1022
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventClasses.time, children: getEventTimeLabel(event, timezoneID) })
1023
- ]
1024
- },
1025
- event.id
1026
- );
1027
- }) })
1422
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.events, children: visibleTimedEventLayouts.map((layout) => /* @__PURE__ */ jsxRuntime.jsx(
1423
+ TimeGridEvent,
1424
+ {
1425
+ currentTime: currentTime2,
1426
+ hourHeight: normalizedHourHeight,
1427
+ layout,
1428
+ maxHour: normalizedMaxHour,
1429
+ minHour: normalizedMinHour
1430
+ },
1431
+ layout.event.id
1432
+ )) })
1028
1433
  ]
1029
1434
  },
1030
1435
  `${day.toString()}-${hour}`
@@ -1101,6 +1506,7 @@ function ScheduleDayView({
1101
1506
  return /* @__PURE__ */ jsxRuntime.jsx(ScheduleFrame, { title: formatMonthTitle(day), titleLabel: formatDate(day), children: /* @__PURE__ */ jsxRuntime.jsx(
1102
1507
  TimeGridView,
1103
1508
  {
1509
+ allDayEventLimit: options.allDayEventLimit,
1104
1510
  days: [day],
1105
1511
  hourHeight: options.hourHeight,
1106
1512
  maxHour: options.maxHour,
@@ -1109,6 +1515,7 @@ function ScheduleDayView({
1109
1515
  ) });
1110
1516
  }
1111
1517
  function createScheduleDayView({
1518
+ allDayEventLimit = 3,
1112
1519
  hourHeight = 100,
1113
1520
  maxHour = 24,
1114
1521
  minHour = 0
@@ -1131,114 +1538,192 @@ function createScheduleDayView({
1131
1538
  label: "Previous day",
1132
1539
  range: [date.startOfDay().addDays(-1), date.startOfDay()]
1133
1540
  }),
1134
- options: { hourHeight, maxHour, minHour }
1541
+ options: { allDayEventLimit, hourHeight, maxHour, minHour }
1135
1542
  };
1136
1543
  }
1137
- var styles2 = {
1138
- list: chunkRU6JG3FS_cjs.css({
1139
- display: "flex",
1140
- flexDirection: "column"
1141
- }),
1142
- day: chunkRU6JG3FS_cjs.css({
1143
- display: "grid",
1144
- gridTemplateColumns: "112px minmax(0, 1fr)",
1145
- alignItems: "start",
1146
- columnGap: "3",
1147
- p: "3",
1148
- borderBlockEndWidth: "default",
1149
- borderBlockEndStyle: "solid",
1150
- borderBlockEndColor: "border"
1151
- }),
1152
- dayLast: chunkRU6JG3FS_cjs.css({
1153
- borderBlockEndWidth: 0
1154
- }),
1155
- dayHeading: chunkRU6JG3FS_cjs.css({
1156
- m: 0,
1157
- display: "inline-flex",
1158
- alignItems: "center",
1159
- justifyContent: "flex-start",
1160
- gap: "2",
1161
- color: "fg.muted",
1162
- fontFamily: "body",
1163
- fontSize: "lg",
1164
- fontWeight: "semibold",
1165
- lineHeight: "tight",
1166
- whiteSpace: "nowrap"
1167
- }),
1168
- dayWeekday: chunkRU6JG3FS_cjs.css({
1169
- display: "inline-block",
1170
- fontSize: "lg"
1171
- }),
1172
- dayNumber: chunkRU6JG3FS_cjs.css({
1173
- display: "inline-flex",
1174
- flexShrink: 0,
1175
- alignItems: "center",
1176
- justifyContent: "center",
1177
- w: "30px",
1178
- h: "30px",
1179
- borderRadius: "full",
1180
- fontWeight: "bold"
1181
- }),
1182
- dayNumberCurrent: chunkRU6JG3FS_cjs.css({
1183
- bg: "primary",
1184
- color: "fg.onPrimary"
1185
- }),
1186
- events: chunkRU6JG3FS_cjs.css({
1187
- display: "flex",
1188
- flexDirection: "column",
1189
- gap: "2"
1190
- }),
1191
- eventRow: chunkRU6JG3FS_cjs.css({
1192
- display: "grid",
1193
- gridTemplateColumns: "160px minmax(0, 1fr)",
1194
- alignItems: "center",
1195
- gap: "3"
1196
- }),
1197
- eventPast: chunkRU6JG3FS_cjs.css({
1198
- opacity: 0.64
1199
- }),
1200
- eventContent: chunkRU6JG3FS_cjs.css({
1201
- display: "flex",
1202
- alignItems: "center",
1203
- gap: "2",
1204
- minW: 0
1205
- }),
1206
- eventTime: chunkRU6JG3FS_cjs.css({
1207
- whiteSpace: "nowrap"
1208
- }),
1209
- nowRow: chunkRU6JG3FS_cjs.css({
1210
- h: "0.5",
1211
- bg: "fg.danger",
1212
- borderRadius: "full"
1213
- })
1214
- };
1544
+
1545
+ // src/components/Schedule/ListView.recipe.ts
1546
+ var scheduleListViewRecipe = chunkZ6RT3WPE_cjs.sva({
1547
+ slots: [
1548
+ "list",
1549
+ "day",
1550
+ "dayHeading",
1551
+ "dayWeekday",
1552
+ "dayNumber",
1553
+ "events",
1554
+ "eventRow",
1555
+ "eventContent",
1556
+ "eventTime"
1557
+ ],
1558
+ base: {
1559
+ list: {
1560
+ display: "flex",
1561
+ flexDirection: "column"
1562
+ },
1563
+ day: {
1564
+ display: "grid",
1565
+ gridTemplateColumns: "112px minmax(0, 1fr)",
1566
+ alignItems: "start",
1567
+ columnGap: "3",
1568
+ p: "3",
1569
+ borderBlockEndWidth: "default",
1570
+ borderBlockEndStyle: "solid",
1571
+ borderBlockEndColor: "border"
1572
+ },
1573
+ dayHeading: {
1574
+ m: 0,
1575
+ display: "inline-flex",
1576
+ alignItems: "center",
1577
+ justifyContent: "flex-start",
1578
+ gap: "2",
1579
+ color: "fg.muted",
1580
+ fontFamily: "body",
1581
+ fontSize: "lg",
1582
+ fontWeight: "semibold",
1583
+ lineHeight: "tight",
1584
+ whiteSpace: "nowrap"
1585
+ },
1586
+ dayWeekday: {
1587
+ display: "inline-block",
1588
+ fontSize: "lg"
1589
+ },
1590
+ dayNumber: {
1591
+ display: "inline-flex",
1592
+ flexShrink: 0,
1593
+ alignItems: "center",
1594
+ justifyContent: "center",
1595
+ w: "30px",
1596
+ h: "30px",
1597
+ borderRadius: "full",
1598
+ fontWeight: "bold"
1599
+ },
1600
+ events: {
1601
+ display: "flex",
1602
+ flexDirection: "column",
1603
+ gap: "2"
1604
+ },
1605
+ eventRow: {
1606
+ display: "grid",
1607
+ gridTemplateColumns: "160px minmax(0, 1fr)",
1608
+ alignItems: "center",
1609
+ gap: "3"
1610
+ },
1611
+ eventContent: {
1612
+ display: "flex",
1613
+ alignItems: "center",
1614
+ gap: "2",
1615
+ justifySelf: "start",
1616
+ minW: 0
1617
+ },
1618
+ eventTime: {
1619
+ whiteSpace: "nowrap"
1620
+ }
1621
+ },
1622
+ variants: {
1623
+ isHighlightedDay: {
1624
+ true: {
1625
+ dayNumber: {
1626
+ bg: "primary",
1627
+ color: "fg.onPrimary"
1628
+ }
1629
+ },
1630
+ false: {}
1631
+ },
1632
+ isLastDay: {
1633
+ true: {
1634
+ day: {
1635
+ borderBlockEndWidth: 0
1636
+ }
1637
+ },
1638
+ false: {}
1639
+ },
1640
+ isPastEvent: {
1641
+ true: {
1642
+ eventRow: {
1643
+ opacity: 0.64
1644
+ }
1645
+ },
1646
+ false: {}
1647
+ },
1648
+ isInteractiveEvent: {
1649
+ true: {
1650
+ eventContent: {
1651
+ appearance: "none",
1652
+ bg: "none",
1653
+ borderWidth: 0,
1654
+ p: 0,
1655
+ m: 0,
1656
+ font: "inherit",
1657
+ textAlign: "inherit",
1658
+ color: "inherit",
1659
+ cursor: "pointer",
1660
+ borderRadius: "sm",
1661
+ _focusVisible: {
1662
+ outlineWidth: "focus",
1663
+ outlineStyle: "solid",
1664
+ outlineColor: "primary"
1665
+ }
1666
+ }
1667
+ },
1668
+ false: {}
1669
+ }
1670
+ },
1671
+ defaultVariants: {
1672
+ isHighlightedDay: false,
1673
+ isLastDay: false,
1674
+ isPastEvent: false,
1675
+ isInteractiveEvent: false
1676
+ }
1677
+ });
1678
+ var styles2 = scheduleListViewRecipe();
1215
1679
  function ListEvent({
1216
1680
  event,
1217
1681
  isPast
1218
1682
  }) {
1219
1683
  const { categoryMap, timezoneID } = useScheduleContext();
1684
+ const { popover, triggerProps } = useScheduleEventPopover(event, {
1685
+ placement: "end"
1686
+ });
1220
1687
  const category = getCategory(categoryMap, event);
1221
- return /* @__PURE__ */ jsxRuntime.jsxs(
1222
- "div",
1223
- {
1224
- className: chunkSPDVNY2Z_cjs.cx(styles2.eventRow, isPast && styles2.eventPast),
1225
- "data-state": isPast ? "past" : void 0,
1226
- children: [
1227
- /* @__PURE__ */ jsxRuntime.jsx(chunk3Z5PF75J_cjs.Text, { className: styles2.eventTime, color: "secondary", type: "supporting", children: isDayEvent(event) ? "All day" : getEventTimeLabel(event, timezoneID) }),
1228
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles2.eventContent, children: [
1229
- /* @__PURE__ */ jsxRuntime.jsx(chunkJSAYTQTJ_cjs.Tooltip, { content: category.label, hasHoverIndication: false, children: /* @__PURE__ */ jsxRuntime.jsx(
1230
- "span",
1231
- {
1232
- "aria-label": category.label,
1233
- className: scheduleEventRecipe({ color: category.color }).dot,
1234
- role: "img"
1235
- }
1236
- ) }),
1237
- /* @__PURE__ */ jsxRuntime.jsx(chunk3Z5PF75J_cjs.Text, { children: event.title })
1238
- ] })
1239
- ]
1240
- }
1241
- );
1688
+ const eventDataState = isPast ? "past" : void 0;
1689
+ const classes = scheduleListViewRecipe({
1690
+ isInteractiveEvent: triggerProps != null,
1691
+ isPastEvent: isPast
1692
+ });
1693
+ const eventContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1694
+ /* @__PURE__ */ jsxRuntime.jsx(chunkGJZAGTPV_cjs.Tooltip, { content: category.label, hoverIndication: "never", children: /* @__PURE__ */ jsxRuntime.jsx(
1695
+ "span",
1696
+ {
1697
+ "aria-label": category.label,
1698
+ className: scheduleEventRecipe({ color: category.color }).dot,
1699
+ role: "img"
1700
+ }
1701
+ ) }),
1702
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMHAXS4GO_cjs.Text, { children: event.title })
1703
+ ] });
1704
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.eventRow, "data-state": eventDataState, children: [
1705
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMHAXS4GO_cjs.Text, { className: classes.eventTime, color: "secondary", type: "supporting", children: isDayEvent(event) ? "All day" : getEventTimeLabel(event, timezoneID) }),
1706
+ triggerProps != null ? /* @__PURE__ */ jsxRuntime.jsx(
1707
+ "button",
1708
+ {
1709
+ className: classes.eventContent,
1710
+ "data-state": eventDataState,
1711
+ "data-testid": `schedule-event-${event.id}`,
1712
+ type: "button",
1713
+ ...triggerProps,
1714
+ children: eventContent
1715
+ }
1716
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1717
+ "div",
1718
+ {
1719
+ className: classes.eventContent,
1720
+ "data-state": eventDataState,
1721
+ "data-testid": `schedule-event-${event.id}`,
1722
+ children: eventContent
1723
+ }
1724
+ ),
1725
+ popover
1726
+ ] });
1242
1727
  }
1243
1728
  function ScheduleListView() {
1244
1729
  const { events, highlightDate, isLoading, range, timezoneID } = useScheduleContext();
@@ -1266,45 +1751,30 @@ function ScheduleListView() {
1266
1751
  return /* @__PURE__ */ jsxRuntime.jsx(ScheduleFrame, { title, titleLabel: title, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkSPDVNY2Z_cjs.cx(scheduleClasses.surface, styles2.list), children: visibleDays.map(
1267
1752
  ({ day, dayEvents, isCurrentDay, isHighlightedDay }, index) => {
1268
1753
  const fullDate = chunkJK4YAQ2N_cjs.plainDateFormat(day, chunkJK4YAQ2N_cjs.DATE_FORMAT_WITH_WEEKDAY);
1269
- return /* @__PURE__ */ jsxRuntime.jsxs(
1270
- "section",
1271
- {
1272
- className: chunkSPDVNY2Z_cjs.cx(
1273
- styles2.day,
1274
- index === visibleDays.length - 1 && styles2.dayLast
1275
- ),
1276
- children: [
1277
- /* @__PURE__ */ jsxRuntime.jsxs(
1278
- "h4",
1279
- {
1280
- "aria-current": isHighlightedDay ? "date" : void 0,
1281
- "aria-label": fullDate,
1282
- className: styles2.dayHeading,
1283
- children: [
1284
- /* @__PURE__ */ jsxRuntime.jsx(
1285
- "span",
1286
- {
1287
- className: chunkSPDVNY2Z_cjs.cx(
1288
- styles2.dayNumber,
1289
- isHighlightedDay && styles2.dayNumberCurrent
1290
- ),
1291
- children: day.day
1292
- }
1293
- ),
1294
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles2.dayWeekday, children: chunkJK4YAQ2N_cjs.plainDateFormat(day, { weekday: "short" }) })
1295
- ]
1296
- }
1297
- ),
1298
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles2.events, children: renderListRows({
1299
- currentTime: currentTime2,
1300
- events: dayEvents,
1301
- isShowingCurrentTime: isCurrentDay && !isLoading,
1302
- timezoneID
1303
- }) })
1304
- ]
1305
- },
1306
- day.toString()
1307
- );
1754
+ const dayClasses = scheduleListViewRecipe({
1755
+ isHighlightedDay,
1756
+ isLastDay: index === visibleDays.length - 1
1757
+ });
1758
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: dayClasses.day, children: [
1759
+ /* @__PURE__ */ jsxRuntime.jsxs(
1760
+ "h4",
1761
+ {
1762
+ "aria-current": isHighlightedDay ? "date" : void 0,
1763
+ "aria-label": fullDate,
1764
+ className: dayClasses.dayHeading,
1765
+ children: [
1766
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: dayClasses.dayNumber, children: day.day }),
1767
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: dayClasses.dayWeekday, children: chunkJK4YAQ2N_cjs.plainDateFormat(day, { weekday: "short" }) })
1768
+ ]
1769
+ }
1770
+ ),
1771
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: dayClasses.events, children: renderListRows({
1772
+ currentTime: currentTime2,
1773
+ events: dayEvents,
1774
+ isShowingCurrentTime: isCurrentDay && !isLoading,
1775
+ timezoneID
1776
+ }) })
1777
+ ] }, day.toString());
1308
1778
  }
1309
1779
  ) }) });
1310
1780
  }
@@ -1326,11 +1796,10 @@ function renderListRows({
1326
1796
  return rows;
1327
1797
  }
1328
1798
  const marker = /* @__PURE__ */ jsxRuntime.jsx(
1329
- "div",
1799
+ ScheduleCurrentTimeIndicator,
1330
1800
  {
1331
- "aria-hidden": "true",
1332
- className: styles2.nowRow,
1333
- "data-testid": "schedule-list-current-time"
1801
+ layout: "list",
1802
+ testId: "schedule-list-current-time"
1334
1803
  },
1335
1804
  "current-time"
1336
1805
  );
@@ -1365,127 +1834,159 @@ function createScheduleListView({
1365
1834
  options: { days }
1366
1835
  };
1367
1836
  }
1368
- var styles3 = {
1369
- grid: chunkRU6JG3FS_cjs.css({
1370
- display: "grid",
1371
- gridTemplateColumns: "repeat(7, minmax(0, 1fr))"
1372
- }),
1373
- weekday: chunkRU6JG3FS_cjs.css({
1374
- p: "2",
1375
- textAlign: "center",
1376
- borderBlockEndWidth: "default",
1377
- borderBlockEndStyle: "solid",
1378
- borderBlockEndColor: "border"
1379
- }),
1380
- cell: chunkRU6JG3FS_cjs.css({
1381
- minH: "24",
1382
- p: "0.5",
1383
- borderInlineEndWidth: "default",
1384
- borderInlineEndStyle: "solid",
1385
- borderInlineEndColor: "border",
1386
- borderBlockEndWidth: "default",
1387
- borderBlockEndStyle: "solid",
1388
- borderBlockEndColor: "border"
1389
- }),
1390
- lastColumn: chunkRU6JG3FS_cjs.css({
1391
- borderInlineEndWidth: 0
1392
- }),
1393
- lastRow: chunkRU6JG3FS_cjs.css({
1394
- borderBlockEndWidth: 0
1395
- }),
1396
- otherMonth: chunkRU6JG3FS_cjs.css({
1397
- bg: "bg.subtle",
1398
- color: "fg.muted"
1399
- }),
1400
- dayNumber: chunkRU6JG3FS_cjs.css({
1401
- display: "inline-flex",
1402
- alignItems: "center",
1403
- justifyContent: "center",
1404
- w: "6",
1405
- h: "6",
1406
- m: "0.5",
1407
- borderRadius: "full"
1408
- }),
1409
- today: chunkRU6JG3FS_cjs.css({
1410
- bg: "primary",
1411
- color: "fg.onPrimary"
1412
- }),
1413
- events: chunkRU6JG3FS_cjs.css({
1414
- display: "flex",
1415
- flexDirection: "column",
1416
- gap: "1",
1417
- m: 0,
1418
- p: 0,
1419
- listStyleType: "none"
1420
- }),
1421
- eventItem: chunkRU6JG3FS_cjs.css({
1422
- display: "flex"
1423
- }),
1424
- monthSurface: chunkRU6JG3FS_cjs.css({
1425
- position: "relative",
1426
- gridColumn: "1 / -1"
1427
- }),
1428
- monthCellGrid: chunkRU6JG3FS_cjs.css({
1429
- display: "grid",
1430
- gridTemplateColumns: "repeat(7, minmax(0, 1fr))",
1431
- gridAutoRows: "var(--schedule-month-row-height)"
1432
- }),
1433
- monthEventOverlay: chunkRU6JG3FS_cjs.css({
1434
- position: "absolute",
1435
- inset: 0,
1436
- display: "grid",
1437
- gridTemplateColumns: "repeat(7, minmax(0, 1fr))",
1438
- gridAutoRows: "var(--schedule-month-row-height)",
1439
- pointerEvents: "none"
1440
- }),
1441
- monthEventSpan: chunkRU6JG3FS_cjs.css({
1442
- alignSelf: "start",
1443
- minW: 0,
1444
- mx: "0.5",
1445
- pointerEvents: "auto",
1446
- zIndex: 1
1447
- }),
1448
- monthSeeMoreSpan: chunkRU6JG3FS_cjs.css({
1449
- alignSelf: "start",
1450
- minW: 0,
1451
- mx: "0.5",
1452
- pointerEvents: "auto",
1453
- zIndex: 2
1454
- }),
1455
- monthSeeMoreButton: chunkRU6JG3FS_cjs.css({
1456
- display: "inline-flex",
1457
- alignItems: "center",
1458
- maxW: "full",
1459
- h: "5",
1460
- px: "1",
1461
- borderRadius: "sm",
1462
- color: "primary",
1463
- cursor: "pointer",
1464
- fontSize: "xs",
1465
- fontWeight: "medium",
1466
- lineHeight: "tight",
1467
- overflow: "hidden",
1468
- textOverflow: "ellipsis",
1469
- whiteSpace: "nowrap",
1470
- _hover: {
1471
- bg: "bg.muted"
1837
+
1838
+ // src/components/Schedule/MonthlyView.recipe.ts
1839
+ var scheduleMonthlyViewRecipe = chunkZ6RT3WPE_cjs.sva({
1840
+ slots: [
1841
+ "grid",
1842
+ "weekday",
1843
+ "cell",
1844
+ "dayNumber",
1845
+ "todayText",
1846
+ "monthSurface",
1847
+ "monthCellGrid",
1848
+ "monthEventOverlay",
1849
+ "monthEventSpan",
1850
+ "monthSeeMoreSpan",
1851
+ "monthSeeMoreButton",
1852
+ "monthPopoverContent",
1853
+ "monthPopoverEvents"
1854
+ ],
1855
+ base: {
1856
+ grid: {
1857
+ display: "grid",
1858
+ gridTemplateColumns: "repeat(7, minmax(0, 1fr))"
1859
+ },
1860
+ weekday: {
1861
+ p: "2",
1862
+ textAlign: "center",
1863
+ borderBlockEndWidth: "default",
1864
+ borderBlockEndStyle: "solid",
1865
+ borderBlockEndColor: "border"
1866
+ },
1867
+ cell: {
1868
+ minH: "24",
1869
+ p: "0.5",
1870
+ borderInlineEndWidth: "default",
1871
+ borderInlineEndStyle: "solid",
1872
+ borderInlineEndColor: "border",
1873
+ borderBlockEndWidth: "default",
1874
+ borderBlockEndStyle: "solid",
1875
+ borderBlockEndColor: "border"
1876
+ },
1877
+ dayNumber: {
1878
+ display: "inline-flex",
1879
+ alignItems: "center",
1880
+ justifyContent: "center",
1881
+ w: "6",
1882
+ h: "6",
1883
+ m: "0.5",
1884
+ borderRadius: "full"
1885
+ },
1886
+ monthSurface: {
1887
+ position: "relative",
1888
+ gridColumn: "1 / -1"
1889
+ },
1890
+ monthCellGrid: {
1891
+ display: "grid",
1892
+ gridTemplateColumns: "repeat(7, minmax(0, 1fr))",
1893
+ gridAutoRows: "var(--schedule-month-row-height)"
1894
+ },
1895
+ monthEventOverlay: {
1896
+ position: "absolute",
1897
+ inset: 0,
1898
+ display: "grid",
1899
+ gridTemplateColumns: "repeat(7, minmax(0, 1fr))",
1900
+ gridAutoRows: "var(--schedule-month-row-height)",
1901
+ pointerEvents: "none"
1902
+ },
1903
+ monthEventSpan: {
1904
+ alignSelf: "start",
1905
+ minW: 0,
1906
+ mx: "0.5",
1907
+ pointerEvents: "auto",
1908
+ zIndex: 1
1909
+ },
1910
+ monthSeeMoreSpan: {
1911
+ alignSelf: "start",
1912
+ minW: 0,
1913
+ mx: "0.5",
1914
+ pointerEvents: "auto",
1915
+ zIndex: 2
1916
+ },
1917
+ monthSeeMoreButton: {
1918
+ display: "inline-flex",
1919
+ alignItems: "center",
1920
+ maxW: "full",
1921
+ h: "5",
1922
+ px: "1",
1923
+ borderRadius: "sm",
1924
+ color: "primary",
1925
+ cursor: "pointer",
1926
+ fontSize: "xs",
1927
+ fontWeight: "medium",
1928
+ lineHeight: "tight",
1929
+ overflow: "hidden",
1930
+ textOverflow: "ellipsis",
1931
+ whiteSpace: "nowrap",
1932
+ _hover: {
1933
+ bg: "bg.muted"
1934
+ }
1935
+ },
1936
+ monthPopoverContent: {
1937
+ display: "flex",
1938
+ flexDirection: "column",
1939
+ gap: "1",
1940
+ p: "3"
1941
+ },
1942
+ monthPopoverEvents: {
1943
+ display: "flex",
1944
+ flexDirection: "column",
1945
+ gap: 0,
1946
+ m: 0,
1947
+ p: 0,
1948
+ listStyleType: "none"
1472
1949
  }
1473
- }),
1474
- monthPopoverContent: chunkRU6JG3FS_cjs.css({
1475
- display: "flex",
1476
- flexDirection: "column",
1477
- gap: "1",
1478
- p: "3"
1479
- }),
1480
- monthPopoverEvents: chunkRU6JG3FS_cjs.css({
1481
- display: "flex",
1482
- flexDirection: "column",
1483
- gap: 0,
1484
- m: 0,
1485
- p: 0,
1486
- listStyleType: "none"
1487
- })
1488
- };
1950
+ },
1951
+ variants: {
1952
+ isLastColumn: {
1953
+ true: { cell: { borderInlineEndWidth: 0 } },
1954
+ false: {}
1955
+ },
1956
+ isLastRow: {
1957
+ true: { cell: { borderBlockEndWidth: 0 } },
1958
+ false: {}
1959
+ },
1960
+ isOtherMonth: {
1961
+ true: {
1962
+ cell: {
1963
+ bg: "bg.subtle",
1964
+ color: "fg.muted"
1965
+ }
1966
+ },
1967
+ false: {}
1968
+ },
1969
+ isToday: {
1970
+ true: {
1971
+ dayNumber: {
1972
+ bg: "primary",
1973
+ color: "fg.onPrimary"
1974
+ },
1975
+ todayText: {
1976
+ marginInlineEnd: "1px"
1977
+ }
1978
+ },
1979
+ false: {}
1980
+ }
1981
+ },
1982
+ defaultVariants: {
1983
+ isLastColumn: false,
1984
+ isLastRow: false,
1985
+ isOtherMonth: false,
1986
+ isToday: false
1987
+ }
1988
+ });
1989
+ var styles3 = scheduleMonthlyViewRecipe();
1489
1990
  var weekdays = [
1490
1991
  { label: "Sunday", shortLabel: "Sun" },
1491
1992
  { label: "Monday", shortLabel: "Mon" },
@@ -1734,7 +2235,8 @@ function getGridCellName({
1734
2235
  function ScheduleMonthlyView({
1735
2236
  options
1736
2237
  }) {
1737
- const { categoryMap, events, highlightDate, timezoneID, viewDate } = useScheduleContext();
2238
+ const { categoryMap, events, highlightDate, plugins, timezoneID, viewDate } = useScheduleContext();
2239
+ const eventPopoverActive = hasEventPopoverPlugin(plugins);
1738
2240
  const currentTime2 = useCurrentTime();
1739
2241
  const month = viewDate.toPlainDate();
1740
2242
  const title = formatMonthTitle(month);
@@ -1782,7 +2284,7 @@ function ScheduleMonthlyView({
1782
2284
  "aria-label": weekday.label,
1783
2285
  className: styles3.weekday,
1784
2286
  role: "columnheader",
1785
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk3Z5PF75J_cjs.Heading, { color: "secondary", level: 4, children: weekday.shortLabel })
2287
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkMHAXS4GO_cjs.Heading, { color: "secondary", level: 4, children: weekday.shortLabel })
1786
2288
  },
1787
2289
  weekday.label
1788
2290
  )),
@@ -1792,43 +2294,52 @@ function ScheduleMonthlyView({
1792
2294
  const isCurrentMonth = day.month === month.month && day.year === month.year;
1793
2295
  const isLastColumn = index % 7 === 6;
1794
2296
  const isLastRow = index >= days.length - 7;
2297
+ const isToday = chunkJK4YAQ2N_cjs.plainDateIsEqual(day, today);
2298
+ const dayClasses = scheduleMonthlyViewRecipe({
2299
+ isLastColumn,
2300
+ isLastRow,
2301
+ isOtherMonth: !isCurrentMonth,
2302
+ isToday
2303
+ });
2304
+ const dayCellPluginProps = plugins.reduce(
2305
+ (props, plugin) => ({
2306
+ ...props,
2307
+ ...plugin.getMonthCellProps?.({
2308
+ date: day,
2309
+ timezoneID
2310
+ })
2311
+ }),
2312
+ {}
2313
+ );
1795
2314
  return /* @__PURE__ */ jsxRuntime.jsx(
1796
2315
  "div",
1797
2316
  {
1798
- "aria-current": chunkJK4YAQ2N_cjs.plainDateIsEqual(day, today) ? "date" : void 0,
2317
+ "aria-current": isToday ? "date" : void 0,
1799
2318
  "aria-label": getGridCellName({
1800
2319
  categoryMap,
1801
2320
  date: day,
1802
- events: dayEvents,
2321
+ // When events are interactive popover triggers they expose
2322
+ // their own accessible names, so omit them here to avoid
2323
+ // announcing each event twice.
2324
+ events: eventPopoverActive ? [] : dayEvents,
1803
2325
  timezoneID
1804
2326
  }),
1805
- className: chunkSPDVNY2Z_cjs.cx(
1806
- styles3.cell,
1807
- isLastColumn ? styles3.lastColumn : void 0,
1808
- isLastRow ? styles3.lastRow : void 0,
1809
- !isCurrentMonth ? styles3.otherMonth : void 0
1810
- ),
2327
+ className: dayClasses.cell,
2328
+ "data-testid": `schedule-month-cell-${day.toString()}`,
1811
2329
  role: "gridcell",
1812
- children: /* @__PURE__ */ jsxRuntime.jsx(
1813
- "span",
2330
+ ...dayCellPluginProps,
2331
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: dayClasses.dayNumber, children: /* @__PURE__ */ jsxRuntime.jsx(
2332
+ chunkMHAXS4GO_cjs.Text,
1814
2333
  {
1815
- className: chunkSPDVNY2Z_cjs.cx(
1816
- styles3.dayNumber,
1817
- chunkJK4YAQ2N_cjs.plainDateIsEqual(day, today) ? styles3.today : void 0
1818
- ),
1819
- children: /* @__PURE__ */ jsxRuntime.jsx(
1820
- chunk3Z5PF75J_cjs.Text,
1821
- {
1822
- as: "span",
1823
- color: "inherit",
1824
- hasTabularNumbers: true,
1825
- type: "supporting",
1826
- weight: "medium",
1827
- children: day.day
1828
- }
1829
- )
2334
+ as: "span",
2335
+ className: dayClasses.todayText,
2336
+ color: "inherit",
2337
+ hasTabularNumbers: true,
2338
+ type: "supporting",
2339
+ weight: "medium",
2340
+ children: day.day
1830
2341
  }
1831
- )
2342
+ ) })
1832
2343
  },
1833
2344
  day.toString()
1834
2345
  );
@@ -1837,7 +2348,7 @@ function ScheduleMonthlyView({
1837
2348
  visibleEventSegments.map((segment) => /* @__PURE__ */ jsxRuntime.jsx(
1838
2349
  "div",
1839
2350
  {
1840
- "aria-hidden": "true",
2351
+ "aria-hidden": eventPopoverActive ? void 0 : "true",
1841
2352
  className: styles3.monthEventSpan,
1842
2353
  "data-testid": `schedule-event-span-${segment.event.id}`,
1843
2354
  style: getMonthEventSegmentStyle(segment),
@@ -1867,40 +2378,23 @@ function ScheduleMonthlyView({
1867
2378
  level: Math.max(0, monthEventLevelCount - 1)
1868
2379
  }),
1869
2380
  children: /* @__PURE__ */ jsxRuntime.jsx(
1870
- chunkL5JS6P62_cjs.Popover,
2381
+ ScheduleEventOverflowPopover,
1871
2382
  {
1872
- content: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles3.monthPopoverContent, children: [
1873
- /* @__PURE__ */ jsxRuntime.jsx(chunk3Z5PF75J_cjs.Heading, { level: 4, children: dateLabel }),
1874
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: styles3.monthPopoverEvents, children: (eventsByDate.get(day.toString()) ?? []).map(
1875
- (event) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1876
- CalendarMonthEventPill,
1877
- {
1878
- event,
1879
- isPast: isEventInPast(
1880
- event,
1881
- currentTime2,
1882
- timezoneID
1883
- )
1884
- }
1885
- ) }, event.id)
1886
- ) })
1887
- ] }),
1888
- "data-testid": `schedule-month-see-more-${day.toString()}`,
2383
+ buttonClassName: styles3.monthSeeMoreButton,
2384
+ contentClassName: styles3.monthPopoverContent,
2385
+ events: eventsByDate.get(day.toString()) ?? [],
2386
+ eventsClassName: styles3.monthPopoverEvents,
2387
+ hiddenEventCount: hiddenEvents.length,
1889
2388
  label,
1890
- width: 320,
1891
- children: /* @__PURE__ */ jsxRuntime.jsxs(
1892
- "button",
2389
+ renderEvent: (event) => /* @__PURE__ */ jsxRuntime.jsx(
2390
+ CalendarMonthEventPill,
1893
2391
  {
1894
- "aria-label": label,
1895
- className: styles3.monthSeeMoreButton,
1896
- type: "button",
1897
- children: [
1898
- "+",
1899
- hiddenEvents.length,
1900
- " more"
1901
- ]
2392
+ event,
2393
+ isPast: isEventInPast(event, currentTime2, timezoneID)
1902
2394
  }
1903
- )
2395
+ ),
2396
+ testId: `schedule-month-see-more-${day.toString()}`,
2397
+ title: dateLabel
1904
2398
  }
1905
2399
  )
1906
2400
  },
@@ -1946,6 +2440,706 @@ function createScheduleMonthlyView({
1946
2440
  options: { monthRowHeight, weekCount, weekStartsOn }
1947
2441
  };
1948
2442
  }
2443
+ var DEFAULT_SNAP_MINUTES = 15;
2444
+ var MILLISECONDS_PER_MINUTE = 6e4;
2445
+ var MINUTES_PER_DAY = 24 * 60;
2446
+ function getSnappedMinutes(minutes, snapMinutes) {
2447
+ return Math.round(minutes / snapMinutes) * snapMinutes;
2448
+ }
2449
+ function getTimeGridStartMinutes({
2450
+ drag,
2451
+ hour,
2452
+ pointerOffsetMinutes,
2453
+ snapMinutes
2454
+ }) {
2455
+ return getSnappedMinutes(
2456
+ hour * 60 + pointerOffsetMinutes - drag.offsetMinutes,
2457
+ snapMinutes
2458
+ );
2459
+ }
2460
+ function instantFromDateAndMinutes(date, minutes, timezoneID) {
2461
+ const clampedMinutes = Math.round(
2462
+ Math.max(0, Math.min(MINUTES_PER_DAY - 1, minutes))
2463
+ );
2464
+ const hour = Math.floor(clampedMinutes / 60);
2465
+ const minute = clampedMinutes % 60;
2466
+ return date.toPlainDateTime(polyfill.Temporal.PlainTime.from({ hour, minute })).toZonedDateTime(timezoneID).epochMilliseconds;
2467
+ }
2468
+ function moveEventToDate(event, date, timezoneID) {
2469
+ if (isDayEvent(event)) {
2470
+ const durationDays = event.start.until(event.end).days;
2471
+ return {
2472
+ end: date.add({ days: durationDays }),
2473
+ event,
2474
+ start: date
2475
+ };
2476
+ }
2477
+ const startTime = polyfill.Temporal.Instant.fromEpochMilliseconds(event.start).toZonedDateTimeISO(timezoneID).toPlainTime();
2478
+ const start = date.toPlainDateTime(startTime).toZonedDateTime(timezoneID).epochMilliseconds;
2479
+ return {
2480
+ end: start + (event.end - event.start),
2481
+ event,
2482
+ start
2483
+ };
2484
+ }
2485
+ function moveEventToDateTime({
2486
+ date,
2487
+ drag,
2488
+ hour,
2489
+ pointerOffsetMinutes,
2490
+ snapMinutes,
2491
+ timezoneID
2492
+ }) {
2493
+ if (isDayEvent(drag.event)) {
2494
+ return null;
2495
+ }
2496
+ const startMinutes = getTimeGridStartMinutes({
2497
+ drag,
2498
+ hour,
2499
+ pointerOffsetMinutes,
2500
+ snapMinutes
2501
+ });
2502
+ const start = instantFromDateAndMinutes(date, startMinutes, timezoneID);
2503
+ return {
2504
+ end: start + (drag.event.end - drag.event.start),
2505
+ event: drag.event,
2506
+ start
2507
+ };
2508
+ }
2509
+ function hasChanged({
2510
+ end,
2511
+ event,
2512
+ start
2513
+ }) {
2514
+ return event.start !== start || event.end !== end;
2515
+ }
2516
+ function getDragEventClientY(dragEvent, fallback) {
2517
+ return Number.isFinite(dragEvent.clientY) ? dragEvent.clientY : fallback;
2518
+ }
2519
+ function applyDragPreview(drag, targetLeft, targetTop) {
2520
+ drag.previewElement.style.left = `${targetLeft}px`;
2521
+ drag.previewElement.style.top = `${targetTop}px`;
2522
+ }
2523
+ function resetDragPreview(drag) {
2524
+ drag.sourceElement.style.opacity = drag.initialOpacity;
2525
+ drag.previewElement.remove();
2526
+ }
2527
+ function createDragPreviewElement(event, sourceElement, sourceRect) {
2528
+ const preview = sourceElement.cloneNode(true);
2529
+ if (!(preview instanceof HTMLElement)) {
2530
+ throw new Error("Schedule event preview must be an HTMLElement.");
2531
+ }
2532
+ preview.setAttribute("aria-hidden", "true");
2533
+ preview.setAttribute(
2534
+ "data-testid",
2535
+ `schedule-event-move-preview-${event.id}`
2536
+ );
2537
+ preview.style.position = "fixed";
2538
+ preview.style.inset = "auto";
2539
+ preview.style.left = `${sourceRect.left}px`;
2540
+ preview.style.top = `${sourceRect.top}px`;
2541
+ preview.style.width = `${sourceRect.width}px`;
2542
+ preview.style.height = `${sourceRect.height}px`;
2543
+ preview.style.margin = "0";
2544
+ preview.style.opacity = "0.45";
2545
+ preview.style.pointerEvents = "none";
2546
+ preview.style.transform = "none";
2547
+ preview.style.zIndex = "1000";
2548
+ document.body.append(preview);
2549
+ return preview;
2550
+ }
2551
+ function createScheduleEventMovePlugin({
2552
+ dragRef,
2553
+ onMove,
2554
+ snapMinutes = DEFAULT_SNAP_MINUTES
2555
+ }) {
2556
+ const normalizedSnapMinutes = Number.isFinite(snapMinutes) && snapMinutes > 0 ? Math.max(1, Math.floor(snapMinutes)) : DEFAULT_SNAP_MINUTES;
2557
+ return {
2558
+ getEventProps({
2559
+ event,
2560
+ layout,
2561
+ timezoneID
2562
+ }) {
2563
+ if (layout !== "month" && (layout !== "timeGrid" || isDayEvent(event))) {
2564
+ return {};
2565
+ }
2566
+ return {
2567
+ draggable: true,
2568
+ onDragEnd: () => {
2569
+ if (dragRef.current != null) {
2570
+ resetDragPreview(dragRef.current);
2571
+ }
2572
+ dragRef.current = null;
2573
+ },
2574
+ onDragStart: (dragEvent) => {
2575
+ const element = dragEvent.currentTarget;
2576
+ const sourceRect = element.getBoundingClientRect();
2577
+ const isTimedTimeGridEvent = layout === "timeGrid" && !isDayEvent(event);
2578
+ const eventStartTime = isDayEvent(event) ? null : polyfill.Temporal.Instant.fromEpochMilliseconds(event.start).toZonedDateTimeISO(timezoneID).toPlainTime();
2579
+ const eventStartMinutes = eventStartTime == null ? 0 : eventStartTime.hour * 60 + eventStartTime.minute;
2580
+ let offsetMinutes = eventStartMinutes;
2581
+ if (isTimedTimeGridEvent) {
2582
+ const durationMinutes = Math.max(
2583
+ 15,
2584
+ (event.end - event.start) / MILLISECONDS_PER_MINUTE
2585
+ );
2586
+ offsetMinutes = Math.max(
2587
+ 0,
2588
+ (getDragEventClientY(dragEvent, sourceRect.top) - sourceRect.top) / Math.max(1, sourceRect.height) * durationMinutes
2589
+ );
2590
+ }
2591
+ dragEvent.dataTransfer.setData("text/plain", event.id);
2592
+ dragEvent.dataTransfer.setDragImage(element, 0, 0);
2593
+ dragRef.current = {
2594
+ event,
2595
+ initialOpacity: element.style.opacity,
2596
+ offsetMinutes,
2597
+ previewElement: createDragPreviewElement(
2598
+ event,
2599
+ element,
2600
+ sourceRect
2601
+ ),
2602
+ sourceElement: element,
2603
+ sourceRect
2604
+ };
2605
+ element.style.opacity = "0.25";
2606
+ }
2607
+ };
2608
+ },
2609
+ getMonthCellProps({
2610
+ date,
2611
+ timezoneID
2612
+ }) {
2613
+ return {
2614
+ onDragOver: (dragEvent) => {
2615
+ if (dragRef.current != null) {
2616
+ dragEvent.preventDefault();
2617
+ const rect = dragEvent.currentTarget.getBoundingClientRect();
2618
+ applyDragPreview(dragRef.current, rect.left + 4, rect.top + 30);
2619
+ }
2620
+ },
2621
+ onDrop: (dragEvent) => {
2622
+ const drag = dragRef.current;
2623
+ if (drag == null) {
2624
+ return;
2625
+ }
2626
+ dragEvent.preventDefault();
2627
+ const change = moveEventToDate(drag.event, date, timezoneID);
2628
+ if (hasChanged(change)) {
2629
+ onMove(change);
2630
+ }
2631
+ resetDragPreview(drag);
2632
+ dragRef.current = null;
2633
+ }
2634
+ };
2635
+ },
2636
+ getTimeGridCellProps({
2637
+ date,
2638
+ hour,
2639
+ hourHeight,
2640
+ timezoneID
2641
+ }) {
2642
+ return {
2643
+ onDragOver: (dragEvent) => {
2644
+ if (dragRef.current != null && !isDayEvent(dragRef.current.event)) {
2645
+ dragEvent.preventDefault();
2646
+ const rect = dragEvent.currentTarget.getBoundingClientRect();
2647
+ const pointerOffsetMinutes = (getDragEventClientY(dragEvent, rect.top) - rect.top) / Math.max(1, hourHeight) * 60;
2648
+ const startMinutes = getTimeGridStartMinutes({
2649
+ drag: dragRef.current,
2650
+ hour,
2651
+ pointerOffsetMinutes,
2652
+ snapMinutes: normalizedSnapMinutes
2653
+ });
2654
+ const top = rect.top + (startMinutes - hour * 60) / 60 * hourHeight + 2;
2655
+ applyDragPreview(dragRef.current, rect.left + 2, top);
2656
+ }
2657
+ },
2658
+ onDrop: (dragEvent) => {
2659
+ const drag = dragRef.current;
2660
+ if (drag == null || isDayEvent(drag.event)) {
2661
+ return;
2662
+ }
2663
+ dragEvent.preventDefault();
2664
+ const rect = dragEvent.currentTarget.getBoundingClientRect();
2665
+ const pointerOffsetMinutes = (getDragEventClientY(dragEvent, rect.top) - rect.top) / Math.max(1, hourHeight) * 60;
2666
+ const change = moveEventToDateTime({
2667
+ date,
2668
+ drag,
2669
+ hour,
2670
+ pointerOffsetMinutes,
2671
+ snapMinutes: normalizedSnapMinutes,
2672
+ timezoneID
2673
+ });
2674
+ if (change != null && hasChanged(change)) {
2675
+ onMove(change);
2676
+ }
2677
+ resetDragPreview(drag);
2678
+ dragRef.current = null;
2679
+ }
2680
+ };
2681
+ }
2682
+ };
2683
+ }
2684
+ function useScheduleEventMovePlugin(options) {
2685
+ const optionsRef = chunkVK7DXUGH_cjs.useLatest_default(options);
2686
+ const dragRef = react.useRef(null);
2687
+ const onMove = react.useCallback(
2688
+ (change) => {
2689
+ optionsRef.current.onMove(change);
2690
+ },
2691
+ [optionsRef]
2692
+ );
2693
+ return react.useMemo(() => {
2694
+ return createScheduleEventMovePlugin({
2695
+ dragRef,
2696
+ onMove,
2697
+ snapMinutes: options.snapMinutes
2698
+ });
2699
+ }, [dragRef, onMove, options.snapMinutes]);
2700
+ }
2701
+ var MIN_DURATION_MINUTES = 15;
2702
+ var DEFAULT_SNAP_MINUTES2 = 15;
2703
+ var MILLISECONDS_PER_MINUTE2 = 6e4;
2704
+ var resizeHandle = chunkJRBQKFVO_cjs.cva({
2705
+ base: {
2706
+ position: "absolute",
2707
+ insetInline: 0,
2708
+ h: "3",
2709
+ cursor: "ns-resize",
2710
+ touchAction: "none",
2711
+ _focusVisible: {
2712
+ outlineWidth: "focus",
2713
+ outlineStyle: "solid",
2714
+ outlineColor: "primary",
2715
+ outlineOffset: "-2px"
2716
+ }
2717
+ },
2718
+ variants: {
2719
+ edge: {
2720
+ start: {
2721
+ insetBlockStart: 0
2722
+ },
2723
+ end: {
2724
+ insetBlockEnd: 0
2725
+ }
2726
+ }
2727
+ }
2728
+ });
2729
+ var resizeHandleClassNames = {
2730
+ end: resizeHandle({ edge: "end" }),
2731
+ start: resizeHandle({ edge: "start" })
2732
+ };
2733
+ function getDurationMinutes(start, end) {
2734
+ return (end - start) / MILLISECONDS_PER_MINUTE2;
2735
+ }
2736
+ function getSnappedDeltaMinutes(deltaPixels, hourHeight, snapMinutes) {
2737
+ const rawMinutes = deltaPixels / hourHeight * 60;
2738
+ return Math.round(rawMinutes / snapMinutes) * snapMinutes;
2739
+ }
2740
+ function getResizeRange(state, clientY) {
2741
+ const deltaMinutes = getSnappedDeltaMinutes(
2742
+ clientY - state.initialPointerY,
2743
+ state.hourHeight,
2744
+ state.snapMinutes
2745
+ );
2746
+ const delta = deltaMinutes * MILLISECONDS_PER_MINUTE2;
2747
+ const minDuration = MIN_DURATION_MINUTES * MILLISECONDS_PER_MINUTE2;
2748
+ if (state.edge === "start") {
2749
+ return {
2750
+ end: state.event.end,
2751
+ start: Math.min(state.event.end - minDuration, state.event.start + delta)
2752
+ };
2753
+ }
2754
+ return {
2755
+ end: Math.max(state.event.start + minDuration, state.event.end + delta),
2756
+ start: state.event.start
2757
+ };
2758
+ }
2759
+ function getPreviewHeight(state, range) {
2760
+ return `${Math.max(
2761
+ 36,
2762
+ getDurationMinutes(range.start, range.end) / 60 * state.hourHeight - 5
2763
+ )}px`;
2764
+ }
2765
+ function getPreviewTop(state, range) {
2766
+ const initialTop = Number.parseFloat(state.initialTop || "0");
2767
+ if (state.edge === "end") {
2768
+ return state.initialTop;
2769
+ }
2770
+ const deltaMinutes = getDurationMinutes(state.event.start, range.start);
2771
+ return `${initialTop + deltaMinutes / 60 * state.hourHeight}px`;
2772
+ }
2773
+ function applyPreview(state, range) {
2774
+ state.eventElement.style.height = getPreviewHeight(state, range);
2775
+ state.eventElement.style.top = getPreviewTop(state, range);
2776
+ }
2777
+ function ScheduleEventResizeHandle({
2778
+ edge,
2779
+ event,
2780
+ hourHeight,
2781
+ onResize,
2782
+ snapMinutes
2783
+ }) {
2784
+ const resizeStateRef = react.useRef(null);
2785
+ const pointerListenersRef = react.useRef(null);
2786
+ const removePointerListeners = react.useCallback(() => {
2787
+ const listeners2 = pointerListenersRef.current;
2788
+ if (listeners2 == null) {
2789
+ return;
2790
+ }
2791
+ window.removeEventListener("pointermove", listeners2.move);
2792
+ window.removeEventListener("pointerup", listeners2.up);
2793
+ window.removeEventListener("pointercancel", listeners2.cancel);
2794
+ pointerListenersRef.current = null;
2795
+ }, []);
2796
+ const finishResize = react.useCallback((clientY, isCommit) => {
2797
+ const state = resizeStateRef.current;
2798
+ if (state == null) {
2799
+ return;
2800
+ }
2801
+ const range = getResizeRange(state, clientY);
2802
+ if (isCommit) {
2803
+ if (range.start !== state.event.start || range.end !== state.event.end) {
2804
+ state.onResize({
2805
+ end: range.end,
2806
+ event: state.event,
2807
+ start: range.start
2808
+ });
2809
+ }
2810
+ } else {
2811
+ state.eventElement.style.height = state.initialHeight;
2812
+ state.eventElement.style.top = state.initialTop;
2813
+ }
2814
+ resizeStateRef.current = null;
2815
+ }, []);
2816
+ const handlePointerMove = react.useCallback((event2) => {
2817
+ const state = resizeStateRef.current;
2818
+ if (state == null) {
2819
+ return;
2820
+ }
2821
+ applyPreview(state, getResizeRange(state, event2.clientY));
2822
+ }, []);
2823
+ const handlePointerUp = react.useCallback(
2824
+ (event2) => {
2825
+ removePointerListeners();
2826
+ finishResize(event2.clientY, true);
2827
+ },
2828
+ [finishResize, removePointerListeners]
2829
+ );
2830
+ const handlePointerCancel = react.useCallback(
2831
+ (event2) => {
2832
+ removePointerListeners();
2833
+ finishResize(event2.clientY, false);
2834
+ },
2835
+ [finishResize, removePointerListeners]
2836
+ );
2837
+ const handlePointerDown = react.useCallback(
2838
+ (pointerEvent) => {
2839
+ pointerEvent.preventDefault();
2840
+ pointerEvent.stopPropagation();
2841
+ const eventElement = pointerEvent.currentTarget.parentElement;
2842
+ if (!(eventElement instanceof HTMLElement)) {
2843
+ return;
2844
+ }
2845
+ resizeStateRef.current = {
2846
+ edge,
2847
+ event,
2848
+ eventElement,
2849
+ hourHeight,
2850
+ initialHeight: eventElement.style.height,
2851
+ initialPointerY: pointerEvent.clientY,
2852
+ initialTop: eventElement.style.top,
2853
+ onResize,
2854
+ snapMinutes
2855
+ };
2856
+ pointerListenersRef.current = {
2857
+ cancel: handlePointerCancel,
2858
+ move: handlePointerMove,
2859
+ up: handlePointerUp
2860
+ };
2861
+ window.addEventListener("pointermove", handlePointerMove);
2862
+ window.addEventListener("pointerup", handlePointerUp);
2863
+ window.addEventListener("pointercancel", handlePointerCancel);
2864
+ },
2865
+ [
2866
+ edge,
2867
+ event,
2868
+ handlePointerCancel,
2869
+ handlePointerMove,
2870
+ handlePointerUp,
2871
+ hourHeight,
2872
+ onResize,
2873
+ snapMinutes
2874
+ ]
2875
+ );
2876
+ const handleKeyDown = react.useCallback(
2877
+ (keyEvent) => {
2878
+ const direction = keyEvent.key === "ArrowDown" ? 1 : keyEvent.key === "ArrowUp" ? -1 : 0;
2879
+ if (direction === 0) {
2880
+ return;
2881
+ }
2882
+ keyEvent.preventDefault();
2883
+ keyEvent.stopPropagation();
2884
+ const delta = direction * snapMinutes * MILLISECONDS_PER_MINUTE2;
2885
+ const minDuration = MIN_DURATION_MINUTES * MILLISECONDS_PER_MINUTE2;
2886
+ const range = edge === "start" ? {
2887
+ end: event.end,
2888
+ start: Math.min(event.end - minDuration, event.start + delta)
2889
+ } : {
2890
+ end: Math.max(event.start + minDuration, event.end + delta),
2891
+ start: event.start
2892
+ };
2893
+ if (range.start !== event.start || range.end !== event.end) {
2894
+ onResize({ event, ...range });
2895
+ }
2896
+ },
2897
+ [edge, event, onResize, snapMinutes]
2898
+ );
2899
+ return /* @__PURE__ */ jsxRuntime.jsx(
2900
+ "span",
2901
+ {
2902
+ "aria-label": `${edge === "start" ? "Resize start of" : "Resize end of"} ${event.title}`,
2903
+ "aria-orientation": "vertical",
2904
+ "aria-valuemax": event.end,
2905
+ "aria-valuemin": event.start,
2906
+ "aria-valuenow": edge === "start" ? event.start : event.end,
2907
+ className: resizeHandleClassNames[edge],
2908
+ "data-testid": `schedule-event-resize-${edge}-handle-${event.id}`,
2909
+ onClick: (event2) => event2.stopPropagation(),
2910
+ onKeyDown: handleKeyDown,
2911
+ onPointerDown: handlePointerDown,
2912
+ role: "slider",
2913
+ tabIndex: 0
2914
+ }
2915
+ );
2916
+ }
2917
+ function ScheduleEventResizeHandles({
2918
+ event,
2919
+ hourHeight,
2920
+ onResize,
2921
+ snapMinutes
2922
+ }) {
2923
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2924
+ /* @__PURE__ */ jsxRuntime.jsx(
2925
+ ScheduleEventResizeHandle,
2926
+ {
2927
+ edge: "start",
2928
+ event,
2929
+ hourHeight,
2930
+ onResize,
2931
+ snapMinutes
2932
+ }
2933
+ ),
2934
+ /* @__PURE__ */ jsxRuntime.jsx(
2935
+ ScheduleEventResizeHandle,
2936
+ {
2937
+ edge: "end",
2938
+ event,
2939
+ hourHeight,
2940
+ onResize,
2941
+ snapMinutes
2942
+ }
2943
+ )
2944
+ ] });
2945
+ }
2946
+ function createScheduleEventResizePlugin({
2947
+ onResize,
2948
+ snapMinutes = DEFAULT_SNAP_MINUTES2
2949
+ }) {
2950
+ const normalizedSnapMinutes = Number.isFinite(snapMinutes) && snapMinutes > 0 ? Math.max(1, Math.floor(snapMinutes)) : DEFAULT_SNAP_MINUTES2;
2951
+ return {
2952
+ renderTimeGridEventContent({
2953
+ event,
2954
+ hourHeight
2955
+ }) {
2956
+ if (isDayEvent(event)) {
2957
+ return null;
2958
+ }
2959
+ return /* @__PURE__ */ jsxRuntime.jsx(
2960
+ ScheduleEventResizeHandles,
2961
+ {
2962
+ event,
2963
+ hourHeight,
2964
+ onResize,
2965
+ snapMinutes: normalizedSnapMinutes
2966
+ }
2967
+ );
2968
+ }
2969
+ };
2970
+ }
2971
+ function useScheduleEventResizePlugin(options) {
2972
+ const optionsRef = chunkVK7DXUGH_cjs.useLatest_default(options);
2973
+ const onResize = react.useCallback(
2974
+ (change) => {
2975
+ optionsRef.current.onResize(change);
2976
+ },
2977
+ [optionsRef]
2978
+ );
2979
+ return react.useMemo(
2980
+ () => createScheduleEventResizePlugin({
2981
+ onResize,
2982
+ snapMinutes: options.snapMinutes
2983
+ }),
2984
+ [onResize, options.snapMinutes]
2985
+ );
2986
+ }
2987
+ var styles4 = {
2988
+ layout: chunkRU6JG3FS_cjs.css({
2989
+ minW: "80",
2990
+ maxW: "96"
2991
+ }),
2992
+ dot: chunkRU6JG3FS_cjs.css({
2993
+ w: "3",
2994
+ h: "3"
2995
+ }),
2996
+ dateValue: chunkRU6JG3FS_cjs.css({
2997
+ display: "flex",
2998
+ flexDirection: "column"
2999
+ }),
3000
+ footerActions: chunkRU6JG3FS_cjs.css({
3001
+ display: "flex",
3002
+ justifyContent: "flex-end"
3003
+ })
3004
+ };
3005
+ function getEventDateLabel(event, timezoneID) {
3006
+ const startDate = isDayEvent(event) ? event.start : chunkJK4YAQ2N_cjs.plainDateFromInstant(event.start, timezoneID);
3007
+ return formatDate(startDate);
3008
+ }
3009
+ function ScheduleEventPopoverContent({
3010
+ event,
3011
+ onClose,
3012
+ onDelete,
3013
+ onEdit,
3014
+ onRespond
3015
+ }) {
3016
+ const { categoryMap, timezoneID } = useScheduleContext();
3017
+ const [response, setResponse] = react.useState(null);
3018
+ const category = getCategory(categoryMap, event);
3019
+ const dotClass = scheduleEventRecipe({ color: category.color }).dot;
3020
+ return /* @__PURE__ */ jsxRuntime.jsx(
3021
+ chunkH7VK36SZ_cjs.Layout,
3022
+ {
3023
+ className: styles4.layout,
3024
+ content: /* @__PURE__ */ jsxRuntime.jsx(chunkH7VK36SZ_cjs.LayoutContent, { isScrollable: false, padding: 3, children: /* @__PURE__ */ jsxRuntime.jsxs(chunk6ZV7HGZT_cjs.MetadataList, { children: [
3025
+ /* @__PURE__ */ jsxRuntime.jsx(
3026
+ chunk6ZV7HGZT_cjs.MetadataListItem,
3027
+ {
3028
+ icon: lucideReact.CalendarDays,
3029
+ isIconOnly: true,
3030
+ label: "Date and time",
3031
+ children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles4.dateValue, children: [
3032
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMHAXS4GO_cjs.Text, { children: getEventDateLabel(event, timezoneID) }),
3033
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMHAXS4GO_cjs.Text, { color: "secondary", type: "supporting", children: getEventTimeLabel(event, timezoneID) })
3034
+ ] })
3035
+ }
3036
+ ),
3037
+ event.location != null && event.location !== "" ? /* @__PURE__ */ jsxRuntime.jsx(chunk6ZV7HGZT_cjs.MetadataListItem, { icon: lucideReact.MapPin, isIconOnly: true, label: "Location", children: event.location }) : null,
3038
+ event.description != null && event.description !== "" ? /* @__PURE__ */ jsxRuntime.jsx(chunk6ZV7HGZT_cjs.MetadataListItem, { icon: lucideReact.AlignLeft, isIconOnly: true, label: "Description", children: event.description }) : null,
3039
+ /* @__PURE__ */ jsxRuntime.jsx(chunk6ZV7HGZT_cjs.MetadataListItem, { icon: lucideReact.Tag, isIconOnly: true, label: "Category", children: category.label })
3040
+ ] }) }),
3041
+ "data-testid": "schedule-event-popover",
3042
+ footer: /* @__PURE__ */ jsxRuntime.jsx(chunkH7VK36SZ_cjs.LayoutFooter, { label: "Your response", padding: 3, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles4.footerActions, children: /* @__PURE__ */ jsxRuntime.jsxs(
3043
+ chunkAFJEAYR4_cjs.ToggleButtonGroup,
3044
+ {
3045
+ label: "Your response",
3046
+ onChange: (value) => {
3047
+ setResponse(value);
3048
+ onRespond?.(event, value);
3049
+ },
3050
+ size: "sm",
3051
+ type: "single",
3052
+ value: response,
3053
+ children: [
3054
+ /* @__PURE__ */ jsxRuntime.jsx(chunkAFJEAYR4_cjs.ToggleButton, { label: "Not Going", value: "not-going" }),
3055
+ /* @__PURE__ */ jsxRuntime.jsx(chunkAFJEAYR4_cjs.ToggleButton, { label: "Maybe", value: "maybe" }),
3056
+ /* @__PURE__ */ jsxRuntime.jsx(
3057
+ chunkAFJEAYR4_cjs.ToggleButton,
3058
+ {
3059
+ "data-testid": "schedule-event-popover-response-going",
3060
+ label: "Going",
3061
+ value: "going"
3062
+ }
3063
+ )
3064
+ ]
3065
+ }
3066
+ ) }) }),
3067
+ header: /* @__PURE__ */ jsxRuntime.jsx(
3068
+ chunkH7VK36SZ_cjs.LayoutHeader,
3069
+ {
3070
+ align: "center",
3071
+ endContent: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3072
+ onEdit != null ? /* @__PURE__ */ jsxRuntime.jsx(
3073
+ chunkVXOIOPGZ_cjs.Button,
3074
+ {
3075
+ "data-testid": "schedule-event-popover-edit",
3076
+ icon: lucideReact.Pencil,
3077
+ isIconOnly: true,
3078
+ label: "Edit event",
3079
+ onClick: () => onEdit(event),
3080
+ size: "sm",
3081
+ variant: "ghost"
3082
+ }
3083
+ ) : null,
3084
+ onDelete != null ? /* @__PURE__ */ jsxRuntime.jsx(
3085
+ chunkVXOIOPGZ_cjs.Button,
3086
+ {
3087
+ "data-testid": "schedule-event-popover-delete",
3088
+ icon: lucideReact.Trash2,
3089
+ isIconOnly: true,
3090
+ label: "Delete event",
3091
+ onClick: () => onDelete(event),
3092
+ size: "sm",
3093
+ variant: "ghost"
3094
+ }
3095
+ ) : null,
3096
+ /* @__PURE__ */ jsxRuntime.jsx(
3097
+ chunkVXOIOPGZ_cjs.Button,
3098
+ {
3099
+ "data-testid": "schedule-event-popover-close",
3100
+ icon: lucideReact.X,
3101
+ isIconOnly: true,
3102
+ label: "Close",
3103
+ onClick: onClose,
3104
+ size: "sm",
3105
+ variant: "ghost"
3106
+ }
3107
+ )
3108
+ ] }),
3109
+ padding: 3,
3110
+ startContent: /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkSPDVNY2Z_cjs.cx(dotClass, styles4.dot) }),
3111
+ title: event.title
3112
+ }
3113
+ ),
3114
+ height: "auto"
3115
+ }
3116
+ );
3117
+ }
3118
+ function createScheduleEventPopoverPlugin(options) {
3119
+ const { renderContent } = options;
3120
+ return {
3121
+ renderEventPopover(event, controls) {
3122
+ const typedEvent = event;
3123
+ if (renderContent != null) {
3124
+ return renderContent({ event: typedEvent, ...controls });
3125
+ }
3126
+ return /* @__PURE__ */ jsxRuntime.jsx(
3127
+ ScheduleEventPopoverContent,
3128
+ {
3129
+ event: typedEvent,
3130
+ onClose: controls.close
3131
+ }
3132
+ );
3133
+ }
3134
+ };
3135
+ }
3136
+ function useScheduleEventPopoverPlugin(options = {}) {
3137
+ const { renderContent } = options;
3138
+ return react.useMemo(
3139
+ () => createScheduleEventPopoverPlugin({ renderContent }),
3140
+ [renderContent]
3141
+ );
3142
+ }
1949
3143
  function SchedulePaginationControls({
1950
3144
  onViewDateChange
1951
3145
  }) {
@@ -1981,7 +3175,7 @@ function SchedulePaginationControls({
1981
3175
  }, [nextDateRange, shiftToRange]);
1982
3176
  return /* @__PURE__ */ jsxRuntime.jsxs(chunkKVJ27734_cjs.ButtonGroup, { label: "Schedule pagination", size: "sm", children: [
1983
3177
  /* @__PURE__ */ jsxRuntime.jsx(
1984
- chunk5XMWGK3O_cjs.Button,
3178
+ chunkVXOIOPGZ_cjs.Button,
1985
3179
  {
1986
3180
  icon: lucideReact.ChevronLeft,
1987
3181
  isIconOnly: true,
@@ -1989,9 +3183,9 @@ function SchedulePaginationControls({
1989
3183
  onClick: onPreviousDate
1990
3184
  }
1991
3185
  ),
1992
- /* @__PURE__ */ jsxRuntime.jsx(chunk5XMWGK3O_cjs.Button, { label: "Today", onClick: onToday, size: "sm" }),
3186
+ /* @__PURE__ */ jsxRuntime.jsx(chunkVXOIOPGZ_cjs.Button, { label: "Today", onClick: onToday, size: "sm" }),
1993
3187
  /* @__PURE__ */ jsxRuntime.jsx(
1994
- chunk5XMWGK3O_cjs.Button,
3188
+ chunkVXOIOPGZ_cjs.Button,
1995
3189
  {
1996
3190
  icon: lucideReact.ChevronRight,
1997
3191
  isIconOnly: true,
@@ -2042,7 +3236,7 @@ function ScheduleViewSelectorControl({
2042
3236
  const { view } = useScheduleContext();
2043
3237
  const currentOption = options.find((option) => option.view === view);
2044
3238
  return /* @__PURE__ */ jsxRuntime.jsx(
2045
- chunkHWD4HDQ5_cjs.DropdownMenu,
3239
+ chunkDFEAB7Z3_cjs.DropdownMenu,
2046
3240
  {
2047
3241
  button: {
2048
3242
  isDisabled: onChangeView == null,
@@ -2051,7 +3245,7 @@ function ScheduleViewSelectorControl({
2051
3245
  },
2052
3246
  menuWidth: 160,
2053
3247
  children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
2054
- chunkHWD4HDQ5_cjs.DropdownMenuItem,
3248
+ chunkDFEAB7Z3_cjs.DropdownMenuItem,
2055
3249
  {
2056
3250
  endContent: option.view === view ? /* @__PURE__ */ jsxRuntime.jsx(
2057
3251
  chunkJ4PIYOWT_cjs.Icon,
@@ -2282,6 +3476,7 @@ function ScheduleWeeklyView({
2282
3476
  return /* @__PURE__ */ jsxRuntime.jsx(ScheduleFrame, { title, titleLabel: title, children: /* @__PURE__ */ jsxRuntime.jsx(
2283
3477
  TimeGridView,
2284
3478
  {
3479
+ allDayEventLimit: options.allDayEventLimit,
2285
3480
  days,
2286
3481
  hourHeight: options.hourHeight,
2287
3482
  maxHour: options.maxHour,
@@ -2290,6 +3485,7 @@ function ScheduleWeeklyView({
2290
3485
  ) });
2291
3486
  }
2292
3487
  function createScheduleWeeklyView({
3488
+ allDayEventLimit = 3,
2293
3489
  hourHeight = 100,
2294
3490
  maxHour = 24,
2295
3491
  minHour = 0,
@@ -2318,7 +3514,7 @@ function createScheduleWeeklyView({
2318
3514
  label: "Previous week",
2319
3515
  range: getWeekRange(date.addDays(-7))
2320
3516
  }),
2321
- options: { hourHeight, maxHour, minHour, weekStartsOn }
3517
+ options: { allDayEventLimit, hourHeight, maxHour, minHour, weekStartsOn }
2322
3518
  };
2323
3519
  }
2324
3520
  function setStartOfWeek2(date, weekStartsOn) {
@@ -2328,6 +3524,7 @@ function setStartOfWeek2(date, weekStartsOn) {
2328
3524
 
2329
3525
  exports.Schedule = Schedule;
2330
3526
  exports.ScheduleContext = ScheduleContext;
3527
+ exports.ScheduleEventPopoverContent = ScheduleEventPopoverContent;
2331
3528
  exports.createEventFromISO = createEventFromISO;
2332
3529
  exports.createScheduleDayView = createScheduleDayView;
2333
3530
  exports.createScheduleListView = createScheduleListView;
@@ -2335,7 +3532,10 @@ exports.createScheduleMonthlyView = createScheduleMonthlyView;
2335
3532
  exports.createScheduleWeeklyView = createScheduleWeeklyView;
2336
3533
  exports.defaultSchedulePlugins = defaultSchedulePlugins;
2337
3534
  exports.useScheduleContext = useScheduleContext;
3535
+ exports.useScheduleEventMovePlugin = useScheduleEventMovePlugin;
3536
+ exports.useScheduleEventPopoverPlugin = useScheduleEventPopoverPlugin;
3537
+ exports.useScheduleEventResizePlugin = useScheduleEventResizePlugin;
2338
3538
  exports.useSchedulePaginationPlugin = useSchedulePaginationPlugin;
2339
3539
  exports.useScheduleViewSelectorPlugin = useScheduleViewSelectorPlugin;
2340
- //# sourceMappingURL=chunk-UXQSSRBQ.cjs.map
2341
- //# sourceMappingURL=chunk-UXQSSRBQ.cjs.map
3540
+ //# sourceMappingURL=chunk-GJKRSQEA.cjs.map
3541
+ //# sourceMappingURL=chunk-GJKRSQEA.cjs.map