silver-ui 0.5.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/README.md +2 -65
  2. package/dist/{chunk-XHJRAEGW.js → chunk-223UOU3H.js} +5 -5
  3. package/dist/{chunk-XHJRAEGW.js.map → chunk-223UOU3H.js.map} +1 -1
  4. package/dist/{chunk-67UUGI3M.cjs → chunk-2AOR4EVA.cjs} +8 -8
  5. package/dist/{chunk-67UUGI3M.cjs.map → chunk-2AOR4EVA.cjs.map} +1 -1
  6. package/dist/{chunk-75KSHZTV.js → chunk-2KLTODOC.js} +7 -7
  7. package/dist/{chunk-75KSHZTV.js.map → chunk-2KLTODOC.js.map} +1 -1
  8. package/dist/chunk-2N3PIXZ5.cjs +165 -0
  9. package/dist/chunk-2N3PIXZ5.cjs.map +1 -0
  10. package/dist/{chunk-W5F7PYT2.js → chunk-3PCXFOOS.js} +17 -11
  11. package/dist/chunk-3PCXFOOS.js.map +1 -0
  12. package/dist/chunk-3PEK2Q54.cjs +31 -0
  13. package/dist/chunk-3PEK2Q54.cjs.map +1 -0
  14. package/dist/{chunk-GW6P4FJ4.cjs → chunk-4MIIXRZN.cjs} +25 -40
  15. package/dist/chunk-4MIIXRZN.cjs.map +1 -0
  16. package/dist/{chunk-CUHJDV6K.js → chunk-4NPVIEWF.js} +6 -6
  17. package/dist/{chunk-CUHJDV6K.js.map → chunk-4NPVIEWF.js.map} +1 -1
  18. package/dist/{chunk-ADSG24VE.js → chunk-4UYMGEBF.js} +6 -6
  19. package/dist/{chunk-ADSG24VE.js.map → chunk-4UYMGEBF.js.map} +1 -1
  20. package/dist/{chunk-ECDYAZ2R.js → chunk-54B36CSW.js} +5 -5
  21. package/dist/{chunk-ECDYAZ2R.js.map → chunk-54B36CSW.js.map} +1 -1
  22. package/dist/chunk-5FQKELP6.js +28 -0
  23. package/dist/chunk-5FQKELP6.js.map +1 -0
  24. package/dist/{chunk-RJEZBOSH.js → chunk-5GSRIOXE.js} +24 -14
  25. package/dist/chunk-5GSRIOXE.js.map +1 -0
  26. package/dist/{chunk-OUZX7STE.cjs → chunk-5K3C3INR.cjs} +25 -53
  27. package/dist/chunk-5K3C3INR.cjs.map +1 -0
  28. package/dist/{chunk-AEYJ6PWC.js → chunk-5RFHYDQY.js} +16 -11
  29. package/dist/chunk-5RFHYDQY.js.map +1 -0
  30. package/dist/{chunk-E42WOTIC.js → chunk-6KG76KUZ.js} +3 -3
  31. package/dist/{chunk-E42WOTIC.js.map → chunk-6KG76KUZ.js.map} +1 -1
  32. package/dist/{chunk-I47WOF6E.js → chunk-6KGF66TR.js} +3 -3
  33. package/dist/{chunk-I47WOF6E.js.map → chunk-6KGF66TR.js.map} +1 -1
  34. package/dist/{chunk-TOQ4MGM5.js → chunk-6R2UZNVE.js} +6 -6
  35. package/dist/{chunk-TOQ4MGM5.js.map → chunk-6R2UZNVE.js.map} +1 -1
  36. package/dist/{chunk-BIJ6YDWJ.cjs → chunk-6SFMORQF.cjs} +15 -8
  37. package/dist/chunk-6SFMORQF.cjs.map +1 -0
  38. package/dist/{chunk-H4L456EW.js → chunk-6SKIBUCY.js} +12 -5
  39. package/dist/chunk-6SKIBUCY.js.map +1 -0
  40. package/dist/{chunk-ANACERIO.cjs → chunk-6SMVH3ON.cjs} +6 -6
  41. package/dist/{chunk-ANACERIO.cjs.map → chunk-6SMVH3ON.cjs.map} +1 -1
  42. package/dist/{chunk-ESRDHDYN.cjs → chunk-6ZPHID26.cjs} +9 -9
  43. package/dist/{chunk-ESRDHDYN.cjs.map → chunk-6ZPHID26.cjs.map} +1 -1
  44. package/dist/{chunk-SUT35RHA.cjs → chunk-76GVUEFH.cjs} +8 -8
  45. package/dist/{chunk-SUT35RHA.cjs.map → chunk-76GVUEFH.cjs.map} +1 -1
  46. package/dist/chunk-7VUDE5BI.js +91 -0
  47. package/dist/chunk-7VUDE5BI.js.map +1 -0
  48. package/dist/{chunk-Q3HMGFGI.js → chunk-7WQW7H3D.js} +98 -77
  49. package/dist/chunk-7WQW7H3D.js.map +1 -0
  50. package/dist/chunk-A2AC6WL5.cjs +4 -0
  51. package/dist/chunk-A2AC6WL5.cjs.map +1 -0
  52. package/dist/{chunk-2Y7ULSEU.js → chunk-A4QLLTMD.js} +17 -17
  53. package/dist/{chunk-2Y7ULSEU.js.map → chunk-A4QLLTMD.js.map} +1 -1
  54. package/dist/{chunk-HWD4HDQ5.cjs → chunk-AC4E3WQA.cjs} +10 -10
  55. package/dist/{chunk-HWD4HDQ5.cjs.map → chunk-AC4E3WQA.cjs.map} +1 -1
  56. package/dist/chunk-AFXU6XIS.js +3 -0
  57. package/dist/chunk-AFXU6XIS.js.map +1 -0
  58. package/dist/{chunk-L5PJCLV6.js → chunk-AKAXQ4RL.js} +16 -25
  59. package/dist/chunk-AKAXQ4RL.js.map +1 -0
  60. package/dist/{chunk-AV7D3SXF.js → chunk-AO4RVSCG.js} +4 -4
  61. package/dist/{chunk-AV7D3SXF.js.map → chunk-AO4RVSCG.js.map} +1 -1
  62. package/dist/{chunk-OERNLR2P.js → chunk-AX653SYJ.js} +8 -8
  63. package/dist/{chunk-OERNLR2P.js.map → chunk-AX653SYJ.js.map} +1 -1
  64. package/dist/{chunk-4HXNBLCJ.js → chunk-AXTX3IOR.js} +3 -3
  65. package/dist/{chunk-4HXNBLCJ.js.map → chunk-AXTX3IOR.js.map} +1 -1
  66. package/dist/{chunk-2AWSJF22.js → chunk-BNGYGCT2.js} +8 -8
  67. package/dist/chunk-BNGYGCT2.js.map +1 -0
  68. package/dist/{chunk-PGTOVMP7.cjs → chunk-BPAZTKMC.cjs} +10 -10
  69. package/dist/{chunk-PGTOVMP7.cjs.map → chunk-BPAZTKMC.cjs.map} +1 -1
  70. package/dist/{chunk-7CTHD4G6.cjs → chunk-BYV7NXC5.cjs} +5 -5
  71. package/dist/{chunk-7CTHD4G6.cjs.map → chunk-BYV7NXC5.cjs.map} +1 -1
  72. package/dist/{chunk-3Z5PF75J.cjs → chunk-CKDB7QNT.cjs} +29 -19
  73. package/dist/chunk-CKDB7QNT.cjs.map +1 -0
  74. package/dist/{chunk-3VJIUZAY.cjs → chunk-CVT7JW6C.cjs} +16 -25
  75. package/dist/chunk-CVT7JW6C.cjs.map +1 -0
  76. package/dist/{chunk-6DAZ2ZOW.cjs → chunk-CWZCBYVZ.cjs} +11 -11
  77. package/dist/{chunk-6DAZ2ZOW.cjs.map → chunk-CWZCBYVZ.cjs.map} +1 -1
  78. package/dist/{chunk-N77K3NQY.cjs → chunk-DTNIUZ3C.cjs} +7 -7
  79. package/dist/{chunk-N77K3NQY.cjs.map → chunk-DTNIUZ3C.cjs.map} +1 -1
  80. package/dist/{chunk-X4I5YARV.cjs → chunk-DUGGZUJP.cjs} +11 -11
  81. package/dist/{chunk-X4I5YARV.cjs.map → chunk-DUGGZUJP.cjs.map} +1 -1
  82. package/dist/{chunk-TTDNCN5G.cjs → chunk-DVCDAKPK.cjs} +13 -39
  83. package/dist/chunk-DVCDAKPK.cjs.map +1 -0
  84. package/dist/{chunk-2RZNX26F.cjs → chunk-DXUFDJHA.cjs} +12 -13
  85. package/dist/chunk-DXUFDJHA.cjs.map +1 -0
  86. package/dist/{chunk-4SUQFPWH.js → chunk-E6AKSBSP.js} +6 -6
  87. package/dist/{chunk-4SUQFPWH.js.map → chunk-E6AKSBSP.js.map} +1 -1
  88. package/dist/{chunk-THTVYP5V.js → chunk-EBV3EX3J.js} +21 -32
  89. package/dist/chunk-EBV3EX3J.js.map +1 -0
  90. package/dist/{chunk-JM4Q7ZQH.cjs → chunk-EEOUWM2F.cjs} +8 -8
  91. package/dist/chunk-EEOUWM2F.cjs.map +1 -0
  92. package/dist/{chunk-KC4EKXGF.js → chunk-EIJSWHG7.js} +9 -10
  93. package/dist/chunk-EIJSWHG7.js.map +1 -0
  94. package/dist/{chunk-IGJEZLHP.cjs → chunk-EQFSDFV2.cjs} +19 -19
  95. package/dist/{chunk-IGJEZLHP.cjs.map → chunk-EQFSDFV2.cjs.map} +1 -1
  96. package/dist/chunk-ESWYWWY2.js +162 -0
  97. package/dist/chunk-ESWYWWY2.js.map +1 -0
  98. package/dist/{chunk-UXGHFKLA.js → chunk-FHUOUARL.js} +4 -4
  99. package/dist/{chunk-UXGHFKLA.js.map → chunk-FHUOUARL.js.map} +1 -1
  100. package/dist/{chunk-HNDDNW52.js → chunk-FTNEAX24.js} +3 -3
  101. package/dist/{chunk-HNDDNW52.js.map → chunk-FTNEAX24.js.map} +1 -1
  102. package/dist/{chunk-JJNXQ7EL.js → chunk-FUU3I22W.js} +3 -3
  103. package/dist/{chunk-JJNXQ7EL.js.map → chunk-FUU3I22W.js.map} +1 -1
  104. package/dist/{chunk-OF5NULAO.js → chunk-GFMQIR5U.js} +7 -7
  105. package/dist/{chunk-OF5NULAO.js.map → chunk-GFMQIR5U.js.map} +1 -1
  106. package/dist/{chunk-JSAYTQTJ.cjs → chunk-GJZAGTPV.cjs} +7 -7
  107. package/dist/chunk-GJZAGTPV.cjs.map +1 -0
  108. package/dist/{chunk-J2YKUHQM.js → chunk-GKYGZWSQ.js} +14 -23
  109. package/dist/chunk-GKYGZWSQ.js.map +1 -0
  110. package/dist/{chunk-2F5TDBRT.cjs → chunk-GLFWSLJB.cjs} +8 -8
  111. package/dist/{chunk-2F5TDBRT.cjs.map → chunk-GLFWSLJB.cjs.map} +1 -1
  112. package/dist/{chunk-S5CMLG2E.js → chunk-GTZQT6MK.js} +9 -5
  113. package/dist/chunk-GTZQT6MK.js.map +1 -0
  114. package/dist/{chunk-4RDA4W4N.js → chunk-HEF53COU.js} +23 -7
  115. package/dist/chunk-HEF53COU.js.map +1 -0
  116. package/dist/{chunk-WPMWHKJX.js → chunk-I2DXEPDF.js} +5 -5
  117. package/dist/{chunk-WPMWHKJX.js.map → chunk-I2DXEPDF.js.map} +1 -1
  118. package/dist/{chunk-Z7OUMVR5.cjs → chunk-I4XYOJJS.cjs} +9 -9
  119. package/dist/{chunk-Z7OUMVR5.cjs.map → chunk-I4XYOJJS.cjs.map} +1 -1
  120. package/dist/{chunk-HWP2UGOC.cjs → chunk-IE7GWY4E.cjs} +126 -105
  121. package/dist/chunk-IE7GWY4E.cjs.map +1 -0
  122. package/dist/{chunk-YDNEAHVK.cjs → chunk-IH6DJWYH.cjs} +37 -37
  123. package/dist/{chunk-YDNEAHVK.cjs.map → chunk-IH6DJWYH.cjs.map} +1 -1
  124. package/dist/{chunk-D5OX6II7.cjs → chunk-IREOTHD3.cjs} +8 -8
  125. package/dist/chunk-IREOTHD3.cjs.map +1 -0
  126. package/dist/{chunk-L7XJZJCM.js → chunk-J4MQQ4K5.js} +5 -5
  127. package/dist/{chunk-L7XJZJCM.js.map → chunk-J4MQQ4K5.js.map} +1 -1
  128. package/dist/{chunk-UARQIMPS.js → chunk-JFLU2X5Q.js} +5 -5
  129. package/dist/{chunk-UARQIMPS.js.map → chunk-JFLU2X5Q.js.map} +1 -1
  130. package/dist/{chunk-VH3G4IUX.js → chunk-JMVYWHJ7.js} +12 -38
  131. package/dist/chunk-JMVYWHJ7.js.map +1 -0
  132. package/dist/{chunk-K4K4FU3D.cjs → chunk-JTPVAZE6.cjs} +11 -11
  133. package/dist/{chunk-K4K4FU3D.cjs.map → chunk-JTPVAZE6.cjs.map} +1 -1
  134. package/dist/{chunk-LW3DJOF4.cjs → chunk-JWMS6LHN.cjs} +6 -6
  135. package/dist/{chunk-LW3DJOF4.cjs.map → chunk-JWMS6LHN.cjs.map} +1 -1
  136. package/dist/{chunk-EBJPUXFQ.js → chunk-KEPCKSDE.js} +31 -11
  137. package/dist/chunk-KEPCKSDE.js.map +1 -0
  138. package/dist/{chunk-I2NG2P5K.cjs → chunk-KLPVBJGZ.cjs} +5 -5
  139. package/dist/{chunk-I2NG2P5K.cjs.map → chunk-KLPVBJGZ.cjs.map} +1 -1
  140. package/dist/{chunk-6PIVWNUR.js → chunk-KWZMXX4F.js} +5 -5
  141. package/dist/chunk-KWZMXX4F.js.map +1 -0
  142. package/dist/{chunk-3IYM5MAC.js → chunk-L747HIHG.js} +4 -4
  143. package/dist/{chunk-3IYM5MAC.js.map → chunk-L747HIHG.js.map} +1 -1
  144. package/dist/{chunk-HIH6MS5D.js → chunk-LBOWHXOF.js} +24 -6
  145. package/dist/chunk-LBOWHXOF.js.map +1 -0
  146. package/dist/{chunk-ZPJW3PP7.cjs → chunk-LTHPJRFK.cjs} +18 -10
  147. package/dist/chunk-LTHPJRFK.cjs.map +1 -0
  148. package/dist/{chunk-F7BFO3SD.cjs → chunk-LWB2CTX6.cjs} +24 -8
  149. package/dist/chunk-LWB2CTX6.cjs.map +1 -0
  150. package/dist/{chunk-FCUUGJTM.cjs → chunk-MJHEPDDX.cjs} +132 -160
  151. package/dist/chunk-MJHEPDDX.cjs.map +1 -0
  152. package/dist/{chunk-QO5C7TIV.js → chunk-MUXUHIIV.js} +5 -5
  153. package/dist/{chunk-QO5C7TIV.js.map → chunk-MUXUHIIV.js.map} +1 -1
  154. package/dist/{chunk-L5JS6P62.cjs → chunk-MYSLJWCW.cjs} +14 -10
  155. package/dist/chunk-MYSLJWCW.cjs.map +1 -0
  156. package/dist/{chunk-65MJZYO6.js → chunk-N6C37HXD.js} +14 -29
  157. package/dist/chunk-N6C37HXD.js.map +1 -0
  158. package/dist/{chunk-VO4FG3L2.cjs → chunk-NGNVNRAZ.cjs} +17 -17
  159. package/dist/{chunk-VO4FG3L2.cjs.map → chunk-NGNVNRAZ.cjs.map} +1 -1
  160. package/dist/{chunk-2WTHSGDP.cjs → chunk-NMC7QG2X.cjs} +14 -14
  161. package/dist/{chunk-2WTHSGDP.cjs.map → chunk-NMC7QG2X.cjs.map} +1 -1
  162. package/dist/{chunk-6EYLEVC6.js → chunk-NSWKBWPP.js} +15 -7
  163. package/dist/chunk-NSWKBWPP.js.map +1 -0
  164. package/dist/{chunk-FNRYGCO3.js → chunk-NYOZQE6P.js} +4 -4
  165. package/dist/{chunk-FNRYGCO3.js.map → chunk-NYOZQE6P.js.map} +1 -1
  166. package/dist/{chunk-GSTINE4X.js → chunk-O3UT5D57.js} +1775 -575
  167. package/dist/chunk-O3UT5D57.js.map +1 -0
  168. package/dist/{chunk-BSI4BQEX.cjs → chunk-OCYZKZ24.cjs} +4 -4
  169. package/dist/{chunk-BSI4BQEX.cjs.map → chunk-OCYZKZ24.cjs.map} +1 -1
  170. package/dist/{chunk-LBGC6EC5.js → chunk-OP6WQYYP.js} +15 -15
  171. package/dist/chunk-OP6WQYYP.js.map +1 -0
  172. package/dist/{chunk-TSKFGLGQ.cjs → chunk-OX2FNKIV.cjs} +18 -27
  173. package/dist/chunk-OX2FNKIV.cjs.map +1 -0
  174. package/dist/chunk-PG4CZRTU.js +77 -0
  175. package/dist/chunk-PG4CZRTU.js.map +1 -0
  176. package/dist/{chunk-TH537HOM.js → chunk-PQXPYN23.js} +6 -6
  177. package/dist/{chunk-TH537HOM.js.map → chunk-PQXPYN23.js.map} +1 -1
  178. package/dist/{chunk-U5M4JZBX.js → chunk-PYN75QAG.js} +6 -6
  179. package/dist/chunk-PYN75QAG.js.map +1 -0
  180. package/dist/{chunk-JS6MRT6M.js → chunk-QM7NQK2K.js} +4 -4
  181. package/dist/{chunk-JS6MRT6M.js.map → chunk-QM7NQK2K.js.map} +1 -1
  182. package/dist/{chunk-SUWRSJAN.cjs → chunk-RLIBY7XB.cjs} +16 -11
  183. package/dist/chunk-RLIBY7XB.cjs.map +1 -0
  184. package/dist/chunk-RNUQWYJJ.cjs +93 -0
  185. package/dist/chunk-RNUQWYJJ.cjs.map +1 -0
  186. package/dist/{chunk-GY2ZZR4Z.cjs → chunk-RUQODCTW.cjs} +18 -18
  187. package/dist/{chunk-GY2ZZR4Z.cjs.map → chunk-RUQODCTW.cjs.map} +1 -1
  188. package/dist/{chunk-FFF57VHO.cjs → chunk-RX2FXCIH.cjs} +8 -8
  189. package/dist/{chunk-FFF57VHO.cjs.map → chunk-RX2FXCIH.cjs.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-J3X465QT.cjs → chunk-SY2A4K6P.cjs} +9 -9
  193. package/dist/{chunk-J3X465QT.cjs.map → chunk-SY2A4K6P.cjs.map} +1 -1
  194. package/dist/{chunk-YJEX32HZ.cjs → chunk-U7QJJ3NR.cjs} +8 -8
  195. package/dist/{chunk-YJEX32HZ.cjs.map → chunk-U7QJJ3NR.cjs.map} +1 -1
  196. package/dist/{chunk-XZZI3JYK.cjs → chunk-UJDHRILS.cjs} +26 -8
  197. package/dist/chunk-UJDHRILS.cjs.map +1 -0
  198. package/dist/{chunk-IX26TMZD.cjs → chunk-UNS7OCEA.cjs} +5 -5
  199. package/dist/{chunk-IX26TMZD.cjs.map → chunk-UNS7OCEA.cjs.map} +1 -1
  200. package/dist/{chunk-RRXOSNCX.cjs → chunk-UR5EWWWL.cjs} +11 -11
  201. package/dist/{chunk-RRXOSNCX.cjs.map → chunk-UR5EWWWL.cjs.map} +1 -1
  202. package/dist/{chunk-6J326CN6.js → chunk-USEA7DB5.js} +4 -4
  203. package/dist/{chunk-6J326CN6.js.map → chunk-USEA7DB5.js.map} +1 -1
  204. package/dist/{chunk-DZZEJY3J.js → chunk-UUVI3TYW.js} +120 -148
  205. package/dist/chunk-UUVI3TYW.js.map +1 -0
  206. package/dist/{chunk-DV4K35UC.cjs → chunk-UW3KCCBT.cjs} +4 -4
  207. package/dist/{chunk-DV4K35UC.cjs.map → chunk-UW3KCCBT.cjs.map} +1 -1
  208. package/dist/{chunk-MEXR5ONE.js → chunk-V5XVXQWE.js} +5 -5
  209. package/dist/{chunk-MEXR5ONE.js.map → chunk-V5XVXQWE.js.map} +1 -1
  210. package/dist/{chunk-UXQSSRBQ.cjs → chunk-VCM4MR7N.cjs} +1785 -581
  211. package/dist/chunk-VCM4MR7N.cjs.map +1 -0
  212. package/dist/{chunk-VD52FLHL.js → chunk-VEQ5H765.js} +10 -10
  213. package/dist/{chunk-VD52FLHL.js.map → chunk-VEQ5H765.js.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-VV72PGKH.cjs → chunk-VULMEKZZ.cjs} +27 -27
  219. package/dist/chunk-VULMEKZZ.cjs.map +1 -0
  220. package/dist/{chunk-MEUELWGO.cjs → chunk-VWG54F6X.cjs} +8 -8
  221. package/dist/{chunk-MEUELWGO.cjs.map → chunk-VWG54F6X.cjs.map} +1 -1
  222. package/dist/{chunk-MGJLBHPJ.js → chunk-WG4NNC3P.js} +4 -4
  223. package/dist/{chunk-MGJLBHPJ.js.map → chunk-WG4NNC3P.js.map} +1 -1
  224. package/dist/{chunk-V4ZH2H2P.cjs → chunk-WIFMXZIN.cjs} +14 -14
  225. package/dist/{chunk-V4ZH2H2P.cjs.map → chunk-WIFMXZIN.cjs.map} +1 -1
  226. package/dist/{chunk-5XMWGK3O.cjs → chunk-WOVSJHY6.cjs} +25 -36
  227. package/dist/chunk-WOVSJHY6.cjs.map +1 -0
  228. package/dist/{chunk-2VAUVJVG.js → chunk-X2P5SPGB.js} +3 -3
  229. package/dist/{chunk-2VAUVJVG.js.map → chunk-X2P5SPGB.js.map} +1 -1
  230. package/dist/{chunk-PBQMHXVO.js → chunk-XUCLNECV.js} +3 -3
  231. package/dist/{chunk-PBQMHXVO.js.map → chunk-XUCLNECV.js.map} +1 -1
  232. package/dist/{chunk-HXIU3SIQ.cjs → chunk-Y2GYPMLW.cjs} +5 -5
  233. package/dist/{chunk-HXIU3SIQ.cjs.map → chunk-Y2GYPMLW.cjs.map} +1 -1
  234. package/dist/{chunk-OTQAREYU.js → chunk-YAQB3UMC.js} +4 -4
  235. package/dist/{chunk-OTQAREYU.js.map → chunk-YAQB3UMC.js.map} +1 -1
  236. package/dist/{chunk-2VL66QBX.js → chunk-YGESCFX2.js} +3 -3
  237. package/dist/{chunk-2VL66QBX.js.map → chunk-YGESCFX2.js.map} +1 -1
  238. package/dist/{chunk-XPGIWOJO.cjs → chunk-YOAFVMEN.cjs} +18 -18
  239. package/dist/chunk-YOAFVMEN.cjs.map +1 -0
  240. package/dist/{chunk-2GMDMZKI.cjs → chunk-YQIDUJW2.cjs} +5 -5
  241. package/dist/{chunk-2GMDMZKI.cjs.map → chunk-YQIDUJW2.cjs.map} +1 -1
  242. package/dist/{chunk-R4DGCQTA.cjs → chunk-YQVWDHP4.cjs} +7 -7
  243. package/dist/{chunk-R4DGCQTA.cjs.map → chunk-YQVWDHP4.cjs.map} +1 -1
  244. package/dist/{chunk-LKGHYNLH.js → chunk-YRJYWTVG.js} +10 -10
  245. package/dist/chunk-YRJYWTVG.js.map +1 -0
  246. package/dist/{chunk-TKTCN4JE.cjs → chunk-ZNAGK36T.cjs} +9 -9
  247. package/dist/{chunk-TKTCN4JE.cjs.map → chunk-ZNAGK36T.cjs.map} +1 -1
  248. package/dist/{chunk-BSPWX2OZ.cjs → chunk-ZW2ZOEYM.cjs} +21 -15
  249. package/dist/chunk-ZW2ZOEYM.cjs.map +1 -0
  250. package/dist/components/Alert/index.cjs +10 -8
  251. package/dist/components/Alert/index.js +9 -7
  252. package/dist/components/AlertDialog/index.cjs +12 -10
  253. package/dist/components/AlertDialog/index.js +10 -8
  254. package/dist/components/AppShell/index.cjs +18 -15
  255. package/dist/components/AppShell/index.js +15 -12
  256. package/dist/components/AutocompleteInput/index.cjs +17 -14
  257. package/dist/components/AutocompleteInput/index.js +13 -10
  258. package/dist/components/Badge/Badge.d.ts.map +1 -1
  259. package/dist/components/Badge/Badge.recipe.d.ts +75 -41
  260. package/dist/components/Badge/Badge.recipe.d.ts.map +1 -1
  261. package/dist/components/Badge/index.cjs +3 -2
  262. package/dist/components/Badge/index.js +2 -1
  263. package/dist/components/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  264. package/dist/components/Breadcrumbs/index.cjs +5 -10
  265. package/dist/components/Breadcrumbs/index.js +2 -7
  266. package/dist/components/Button/Button.d.ts +5 -3
  267. package/dist/components/Button/Button.d.ts.map +1 -1
  268. package/dist/components/Button/index.cjs +9 -7
  269. package/dist/components/Button/index.js +8 -6
  270. package/dist/components/Calendar/index.cjs +10 -8
  271. package/dist/components/Calendar/index.js +9 -7
  272. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +83 -0
  273. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
  274. package/dist/components/CheckboxGroup/CheckboxGroup.recipe.d.ts +17 -0
  275. package/dist/components/CheckboxGroup/CheckboxGroup.recipe.d.ts.map +1 -0
  276. package/dist/components/CheckboxGroup/CheckboxGroupContext.d.ts +13 -0
  277. package/dist/components/CheckboxGroup/CheckboxGroupContext.d.ts.map +1 -0
  278. package/dist/components/CheckboxGroup/CheckboxGroupItem.d.ts +58 -0
  279. package/dist/components/CheckboxGroup/CheckboxGroupItem.d.ts.map +1 -0
  280. package/dist/components/CheckboxGroup/index.cjs +35 -0
  281. package/dist/components/CheckboxGroup/index.cjs.map +1 -0
  282. package/dist/components/CheckboxGroup/index.d.ts +4 -0
  283. package/dist/components/CheckboxGroup/index.d.ts.map +1 -0
  284. package/dist/components/CheckboxGroup/index.js +22 -0
  285. package/dist/components/CheckboxGroup/index.js.map +1 -0
  286. package/dist/components/CheckboxInput/CheckboxInput.d.ts +11 -2
  287. package/dist/components/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  288. package/dist/components/CheckboxInput/CheckboxInput.recipe.d.ts +6 -0
  289. package/dist/components/CheckboxInput/CheckboxInput.recipe.d.ts.map +1 -1
  290. package/dist/components/CheckboxInput/index.cjs +9 -8
  291. package/dist/components/CheckboxInput/index.js +8 -7
  292. package/dist/components/CodeBlock/index.cjs +10 -8
  293. package/dist/components/CodeBlock/index.js +9 -7
  294. package/dist/components/ContextMenu/index.cjs +14 -12
  295. package/dist/components/ContextMenu/index.js +12 -10
  296. package/dist/components/DateInput/index.cjs +13 -11
  297. package/dist/components/DateInput/index.js +12 -10
  298. package/dist/components/DateRangeInput/index.cjs +13 -11
  299. package/dist/components/DateRangeInput/index.js +12 -10
  300. package/dist/components/DateTimeInput/index.cjs +15 -13
  301. package/dist/components/DateTimeInput/index.js +14 -12
  302. package/dist/components/DropdownMenu/index.cjs +15 -13
  303. package/dist/components/DropdownMenu/index.js +11 -9
  304. package/dist/components/EmptyState/index.cjs +5 -5
  305. package/dist/components/EmptyState/index.js +4 -4
  306. package/dist/components/Field/index.cjs +6 -6
  307. package/dist/components/Field/index.js +4 -4
  308. package/dist/components/FileInput/index.cjs +11 -9
  309. package/dist/components/FileInput/index.js +10 -8
  310. package/dist/components/HoverCard/HoverCard.d.ts +6 -6
  311. package/dist/components/HoverCard/HoverCard.d.ts.map +1 -1
  312. package/dist/components/HoverCard/index.cjs +4 -4
  313. package/dist/components/HoverCard/index.js +2 -2
  314. package/dist/components/InputGroup/index.cjs +9 -9
  315. package/dist/components/InputGroup/index.js +5 -5
  316. package/dist/components/Item/Item.d.ts.map +1 -1
  317. package/dist/components/Item/index.cjs +7 -8
  318. package/dist/components/Item/index.js +6 -7
  319. package/dist/components/Layout/Layout.recipe.d.ts +17 -0
  320. package/dist/components/Layout/Layout.recipe.d.ts.map +1 -1
  321. package/dist/components/Layout/LayoutHeader.d.ts +12 -1
  322. package/dist/components/Layout/LayoutHeader.d.ts.map +1 -1
  323. package/dist/components/Layout/index.cjs +14 -12
  324. package/dist/components/Layout/index.js +9 -7
  325. package/dist/components/Lightbox/index.cjs +11 -9
  326. package/dist/components/Lightbox/index.js +9 -7
  327. package/dist/components/Link/Link.d.ts +4 -5
  328. package/dist/components/Link/Link.d.ts.map +1 -1
  329. package/dist/components/Link/Link.recipe.d.ts.map +1 -1
  330. package/dist/components/Link/index.cjs +9 -6
  331. package/dist/components/Link/index.js +6 -3
  332. package/dist/components/List/index.cjs +9 -10
  333. package/dist/components/List/index.js +7 -8
  334. package/dist/components/MetadataList/MetadataList.recipe.d.ts +9 -1
  335. package/dist/components/MetadataList/MetadataList.recipe.d.ts.map +1 -1
  336. package/dist/components/MetadataList/MetadataListItem.d.ts +6 -1
  337. package/dist/components/MetadataList/MetadataListItem.d.ts.map +1 -1
  338. package/dist/components/MetadataList/index.cjs +9 -6
  339. package/dist/components/MetadataList/index.js +7 -4
  340. package/dist/components/MultiSelect/index.cjs +14 -12
  341. package/dist/components/MultiSelect/index.js +13 -11
  342. package/dist/components/NumberInput/index.cjs +12 -10
  343. package/dist/components/NumberInput/index.js +11 -9
  344. package/dist/components/Pagination/index.cjs +10 -8
  345. package/dist/components/Pagination/index.js +9 -7
  346. package/dist/components/PasswordInput/index.cjs +13 -11
  347. package/dist/components/PasswordInput/index.js +12 -10
  348. package/dist/components/Popover/Popover.d.ts +13 -1
  349. package/dist/components/Popover/Popover.d.ts.map +1 -1
  350. package/dist/components/Popover/index.cjs +11 -9
  351. package/dist/components/Popover/index.js +9 -7
  352. package/dist/components/RadioGroup/index.cjs +10 -9
  353. package/dist/components/RadioGroup/index.js +8 -7
  354. package/dist/components/Schedule/CalendarEvent.d.ts +18 -4
  355. package/dist/components/Schedule/CalendarEvent.d.ts.map +1 -1
  356. package/dist/components/Schedule/DayView.d.ts +7 -1
  357. package/dist/components/Schedule/DayView.d.ts.map +1 -1
  358. package/dist/components/Schedule/ListView.d.ts.map +1 -1
  359. package/dist/components/Schedule/ListView.recipe.d.ts +56 -0
  360. package/dist/components/Schedule/ListView.recipe.d.ts.map +1 -0
  361. package/dist/components/Schedule/MonthlyView.d.ts.map +1 -1
  362. package/dist/components/Schedule/MonthlyView.recipe.d.ts +47 -0
  363. package/dist/components/Schedule/MonthlyView.recipe.d.ts.map +1 -0
  364. package/dist/components/Schedule/ScheduleEvent.recipe.d.ts +17 -0
  365. package/dist/components/Schedule/ScheduleEvent.recipe.d.ts.map +1 -1
  366. package/dist/components/Schedule/TimeGridView.d.ts +7 -1
  367. package/dist/components/Schedule/TimeGridView.d.ts.map +1 -1
  368. package/dist/components/Schedule/TimeGridView.recipe.d.ts +43 -0
  369. package/dist/components/Schedule/TimeGridView.recipe.d.ts.map +1 -0
  370. package/dist/components/Schedule/WeeklyView.d.ts +7 -1
  371. package/dist/components/Schedule/WeeklyView.d.ts.map +1 -1
  372. package/dist/components/Schedule/index.cjs +44 -21
  373. package/dist/components/Schedule/index.d.ts +6 -2
  374. package/dist/components/Schedule/index.d.ts.map +1 -1
  375. package/dist/components/Schedule/index.js +17 -10
  376. package/dist/components/Schedule/plugins/EventMovePlugin.d.ts +23 -0
  377. package/dist/components/Schedule/plugins/EventMovePlugin.d.ts.map +1 -0
  378. package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts +31 -0
  379. package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts.map +1 -0
  380. package/dist/components/Schedule/plugins/EventResizePlugin.d.ts +24 -0
  381. package/dist/components/Schedule/plugins/EventResizePlugin.d.ts.map +1 -0
  382. package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts +39 -0
  383. package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts.map +1 -0
  384. package/dist/components/Schedule/plugins/index.d.ts +4 -0
  385. package/dist/components/Schedule/plugins/index.d.ts.map +1 -1
  386. package/dist/components/Schedule/shared.d.ts +58 -3
  387. package/dist/components/Schedule/shared.d.ts.map +1 -1
  388. package/dist/components/Schedule/types.d.ts +47 -1
  389. package/dist/components/Schedule/types.d.ts.map +1 -1
  390. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.d.ts.map +1 -1
  391. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.recipe.d.ts +4 -0
  392. package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.recipe.d.ts.map +1 -0
  393. package/dist/components/SearchFilterInput/index.cjs +32 -29
  394. package/dist/components/SearchFilterInput/index.js +24 -21
  395. package/dist/components/Select/index.cjs +15 -13
  396. package/dist/components/Select/index.js +13 -11
  397. package/dist/components/SideNav/SideNav.d.ts.map +1 -1
  398. package/dist/components/SideNav/SideNav.recipe.d.ts +26 -7
  399. package/dist/components/SideNav/SideNav.recipe.d.ts.map +1 -1
  400. package/dist/components/SideNav/SideNavItem.d.ts.map +1 -1
  401. package/dist/components/SideNav/index.cjs +18 -15
  402. package/dist/components/SideNav/index.js +12 -9
  403. package/dist/components/Slider/index.cjs +6 -6
  404. package/dist/components/Slider/index.js +5 -5
  405. package/dist/components/Spinner/index.cjs +5 -5
  406. package/dist/components/Spinner/index.js +4 -4
  407. package/dist/components/SplitButton/index.cjs +13 -11
  408. package/dist/components/SplitButton/index.js +12 -10
  409. package/dist/components/Stepper/index.cjs +5 -5
  410. package/dist/components/Stepper/index.js +4 -4
  411. package/dist/components/Switch/index.cjs +6 -6
  412. package/dist/components/Switch/index.js +5 -5
  413. package/dist/components/Table/index.cjs +55 -52
  414. package/dist/components/Table/index.js +29 -26
  415. package/dist/components/Tabs/Tab.d.ts.map +1 -1
  416. package/dist/components/Tabs/index.cjs +15 -13
  417. package/dist/components/Tabs/index.js +10 -8
  418. package/dist/components/Tag/Tag.d.ts.map +1 -1
  419. package/dist/components/Tag/index.cjs +8 -5
  420. package/dist/components/Tag/index.js +7 -4
  421. package/dist/components/TagsInput/index.cjs +15 -12
  422. package/dist/components/TagsInput/index.js +14 -11
  423. package/dist/components/Text/Heading.d.ts +5 -5
  424. package/dist/components/Text/Heading.d.ts.map +1 -1
  425. package/dist/components/Text/Text.d.ts +5 -5
  426. package/dist/components/Text/Text.d.ts.map +1 -1
  427. package/dist/components/Text/index.cjs +5 -5
  428. package/dist/components/Text/index.js +3 -3
  429. package/dist/components/TextArea/index.cjs +7 -7
  430. package/dist/components/TextArea/index.js +6 -6
  431. package/dist/components/TextInput/index.cjs +12 -10
  432. package/dist/components/TextInput/index.js +11 -9
  433. package/dist/components/Thumbnail/index.cjs +10 -8
  434. package/dist/components/Thumbnail/index.js +9 -7
  435. package/dist/components/TimeInput/index.cjs +11 -9
  436. package/dist/components/TimeInput/index.js +10 -8
  437. package/dist/components/Toast/ToastViewport.d.ts.map +1 -1
  438. package/dist/components/Toast/index.cjs +12 -10
  439. package/dist/components/Toast/index.js +9 -7
  440. package/dist/components/ToggleButton/ToggleButton.recipe.d.ts.map +1 -1
  441. package/dist/components/ToggleButton/index.cjs +7 -7
  442. package/dist/components/ToggleButton/index.js +5 -5
  443. package/dist/components/Tooltip/Tooltip.d.ts +6 -6
  444. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  445. package/dist/components/Tooltip/index.cjs +4 -4
  446. package/dist/components/Tooltip/index.js +2 -2
  447. package/dist/components/TopNav/TopNavItem.d.ts.map +1 -1
  448. package/dist/components/TopNav/index.cjs +16 -13
  449. package/dist/components/TopNav/index.js +11 -8
  450. package/dist/components/TreeView/TreeViewItem.d.ts.map +1 -1
  451. package/dist/components/TreeView/index.cjs +3 -2
  452. package/dist/components/TreeView/index.js +2 -1
  453. package/dist/index.cjs +260 -232
  454. package/dist/index.cjs.map +1 -1
  455. package/dist/index.d.ts +2 -1
  456. package/dist/index.d.ts.map +1 -1
  457. package/dist/index.js +62 -58
  458. package/dist/index.js.map +1 -1
  459. package/dist/internal/ActionElement.d.ts +45 -0
  460. package/dist/internal/ActionElement.d.ts.map +1 -0
  461. package/dist/internal/HoverLayerTrigger.d.ts +3 -4
  462. package/dist/internal/HoverLayerTrigger.d.ts.map +1 -1
  463. package/dist/internal/useLayer.d.ts +12 -0
  464. package/dist/internal/useLayer.d.ts.map +1 -1
  465. package/dist/internal/useSelectListbox.d.ts +5 -5
  466. package/dist/internal/useSelectListbox.d.ts.map +1 -1
  467. package/dist/styles.css +1 -1
  468. package/package.json +1 -1
  469. package/dist/chunk-2AWSJF22.js.map +0 -1
  470. package/dist/chunk-2RZNX26F.cjs.map +0 -1
  471. package/dist/chunk-3VJIUZAY.cjs.map +0 -1
  472. package/dist/chunk-3Z5PF75J.cjs.map +0 -1
  473. package/dist/chunk-4RDA4W4N.js.map +0 -1
  474. package/dist/chunk-5XMWGK3O.cjs.map +0 -1
  475. package/dist/chunk-65MJZYO6.js.map +0 -1
  476. package/dist/chunk-6EYLEVC6.js.map +0 -1
  477. package/dist/chunk-6PIVWNUR.js.map +0 -1
  478. package/dist/chunk-AEYJ6PWC.js.map +0 -1
  479. package/dist/chunk-BIJ6YDWJ.cjs.map +0 -1
  480. package/dist/chunk-BSPWX2OZ.cjs.map +0 -1
  481. package/dist/chunk-D5OX6II7.cjs.map +0 -1
  482. package/dist/chunk-DZZEJY3J.js.map +0 -1
  483. package/dist/chunk-EBJPUXFQ.js.map +0 -1
  484. package/dist/chunk-EFBSEJBD.js.map +0 -1
  485. package/dist/chunk-F7BFO3SD.cjs.map +0 -1
  486. package/dist/chunk-FCUUGJTM.cjs.map +0 -1
  487. package/dist/chunk-GSTINE4X.js.map +0 -1
  488. package/dist/chunk-GW6P4FJ4.cjs.map +0 -1
  489. package/dist/chunk-H2EMKCWT.js +0 -78
  490. package/dist/chunk-H2EMKCWT.js.map +0 -1
  491. package/dist/chunk-H4L456EW.js.map +0 -1
  492. package/dist/chunk-HIH6MS5D.js.map +0 -1
  493. package/dist/chunk-HWP2UGOC.cjs.map +0 -1
  494. package/dist/chunk-J2YKUHQM.js.map +0 -1
  495. package/dist/chunk-JM4Q7ZQH.cjs.map +0 -1
  496. package/dist/chunk-JSAYTQTJ.cjs.map +0 -1
  497. package/dist/chunk-KC4EKXGF.js.map +0 -1
  498. package/dist/chunk-KUXFEAT4.cjs +0 -80
  499. package/dist/chunk-KUXFEAT4.cjs.map +0 -1
  500. package/dist/chunk-L5JS6P62.cjs.map +0 -1
  501. package/dist/chunk-L5PJCLV6.js.map +0 -1
  502. package/dist/chunk-LBGC6EC5.js.map +0 -1
  503. package/dist/chunk-LKGHYNLH.js.map +0 -1
  504. package/dist/chunk-OUZX7STE.cjs.map +0 -1
  505. package/dist/chunk-Q3HMGFGI.js.map +0 -1
  506. package/dist/chunk-Q4HAXT5C.cjs.map +0 -1
  507. package/dist/chunk-RJEZBOSH.js.map +0 -1
  508. package/dist/chunk-S5CMLG2E.js.map +0 -1
  509. package/dist/chunk-SUWRSJAN.cjs.map +0 -1
  510. package/dist/chunk-THTVYP5V.js.map +0 -1
  511. package/dist/chunk-TSKFGLGQ.cjs.map +0 -1
  512. package/dist/chunk-TTDNCN5G.cjs.map +0 -1
  513. package/dist/chunk-U5M4JZBX.js.map +0 -1
  514. package/dist/chunk-UXQSSRBQ.cjs.map +0 -1
  515. package/dist/chunk-VH3G4IUX.js.map +0 -1
  516. package/dist/chunk-VV72PGKH.cjs.map +0 -1
  517. package/dist/chunk-W5F7PYT2.js.map +0 -1
  518. package/dist/chunk-XPGIWOJO.cjs.map +0 -1
  519. package/dist/chunk-XZZI3JYK.cjs.map +0 -1
  520. 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 chunk6SFMORQF_cjs = require('./chunk-6SFMORQF.cjs');
4
+ var chunkLWB2CTX6_cjs = require('./chunk-LWB2CTX6.cjs');
5
+ var chunkAC4E3WQA_cjs = require('./chunk-AC4E3WQA.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 chunkLTHPJRFK_cjs = require('./chunk-LTHPJRFK.cjs');
10
+ var chunkMYSLJWCW_cjs = require('./chunk-MYSLJWCW.cjs');
11
+ var chunk5K3C3INR_cjs = require('./chunk-5K3C3INR.cjs');
12
+ var chunkWOVSJHY6_cjs = require('./chunk-WOVSJHY6.cjs');
13
+ var chunkOCYZKZ24_cjs = require('./chunk-OCYZKZ24.cjs');
14
+ var chunkCKDB7QNT_cjs = require('./chunk-CKDB7QNT.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 = chunkMYSLJWCW_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
+ chunkMYSLJWCW_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(chunkCKDB7QNT_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(chunkCKDB7QNT_cjs.Heading, { level: 2, children: title }),
515
959
  isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
516
- chunkBSI4BQEX_cjs.Spinner,
960
+ chunkOCYZKZ24_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,77 @@ 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((plugin, index) => {
1116
+ const content = plugin.renderTimeGridEventContent?.({
1117
+ event,
1118
+ hourHeight,
1119
+ maxHour,
1120
+ minHour,
1121
+ timezoneID
1122
+ });
1123
+ return chunkQAO6QMNQ_cjs.isReactNode(content) ? (
1124
+ // eslint-disable-next-line @eslint-react/no-array-index-key -- stable plugin order
1125
+ /* @__PURE__ */ jsxRuntime.jsx(react.Fragment, { children: content }, index)
1126
+ ) : null;
1127
+ }),
1128
+ [event, hourHeight, maxHour, minHour, plugins, timezoneID]
1129
+ );
1130
+ const category = getCategory(categoryMap, event);
1131
+ const isPast = isEventInPast(event, currentTime2, timezoneID);
1132
+ const classes = scheduleEventRecipe({
1133
+ layout: "block",
1134
+ color: category.color,
1135
+ isPast,
1136
+ isInteractive: triggerProps != null
1137
+ });
1138
+ const style = getTimedEventStyle(layout);
1139
+ const body = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1140
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.title, children: event.title }),
1141
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: classes.time, children: getEventTimeLabel(event, timezoneID) }),
1142
+ pluginEndContent
1143
+ ] });
1144
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1145
+ triggerProps != null ? /* @__PURE__ */ jsxRuntime.jsx(
1146
+ "button",
1147
+ {
1148
+ className: classes.event,
1149
+ "data-state": isPast ? "past" : void 0,
1150
+ "data-testid": `schedule-event-${event.id}`,
1151
+ style,
1152
+ type: "button",
1153
+ ...eventPluginProps,
1154
+ ...triggerProps,
1155
+ children: body
1156
+ }
1157
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1158
+ "div",
1159
+ {
1160
+ className: classes.event,
1161
+ "data-state": isPast ? "past" : void 0,
1162
+ "data-testid": `schedule-event-${event.id}`,
1163
+ ...eventPluginProps,
1164
+ style,
1165
+ children: body
1166
+ }
1167
+ ),
1168
+ popover
1169
+ ] });
1170
+ }
790
1171
  function getCellName({
791
1172
  categoryMap,
792
1173
  date,
@@ -801,12 +1182,13 @@ function getCellName({
801
1182
  return eventLabels.length > 0 ? `${dateLabel} ${hourLabel}. ${eventLabels.join(". ")}` : `${dateLabel} ${hourLabel}`;
802
1183
  }
803
1184
  function TimeGridView({
1185
+ allDayEventLimit = 3,
804
1186
  days,
805
1187
  hourHeight = 100,
806
1188
  maxHour = 24,
807
1189
  minHour = 0
808
1190
  }) {
809
- const { categoryMap, events, highlightDate, timezoneID } = useScheduleContext();
1191
+ const { categoryMap, events, highlightDate, plugins, timezoneID } = useScheduleContext();
810
1192
  const normalizedMinHour = Math.max(0, Math.min(23, Math.floor(minHour)));
811
1193
  const normalizedMaxHour = Math.max(
812
1194
  normalizedMinHour + 1,
@@ -826,6 +1208,7 @@ function TimeGridView({
826
1208
  "--schedule-day-count": String(days.length)
827
1209
  };
828
1210
  const normalizedHourHeight = Math.max(1, Math.floor(hourHeight));
1211
+ const normalizedAllDayEventLimit = Number.isFinite(allDayEventLimit) ? Math.max(0, Math.floor(allDayEventLimit)) : 3;
829
1212
  const hourStyle = {
830
1213
  height: normalizedHourHeight,
831
1214
  minHeight: normalizedHourHeight
@@ -861,42 +1244,37 @@ function TimeGridView({
861
1244
  role: "columnheader"
862
1245
  }
863
1246
  ),
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
- )) })
1247
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.header, children: days.map((day, index) => {
1248
+ const isCurrentDay = chunkJK4YAQ2N_cjs.plainDateIsEqual(day, highlightPlainDate);
1249
+ const dayHeaderClasses = scheduleTimeGridViewRecipe({
1250
+ isCurrentDay,
1251
+ isLastColumn: index === days.length - 1
1252
+ });
1253
+ return /* @__PURE__ */ jsxRuntime.jsx(
1254
+ "div",
1255
+ {
1256
+ "aria-colindex": index + 2,
1257
+ "aria-current": isCurrentDay ? "date" : void 0,
1258
+ "aria-label": chunkJK4YAQ2N_cjs.plainDateFormat(day, chunkJK4YAQ2N_cjs.DATE_FORMAT_WITH_WEEKDAY),
1259
+ className: dayHeaderClasses.dayHeader,
1260
+ role: "columnheader",
1261
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1262
+ chunkCKDB7QNT_cjs.Heading,
1263
+ {
1264
+ "aria-hidden": "true",
1265
+ color: "secondary",
1266
+ level: 4,
1267
+ textWrap: "nowrap",
1268
+ children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.dayHeaderContent, children: [
1269
+ chunkJK4YAQ2N_cjs.plainDateFormat(day, { weekday: "short" }),
1270
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: dayHeaderClasses.dayHeaderDayNumber, children: day.day })
1271
+ ] })
1272
+ }
1273
+ )
1274
+ },
1275
+ day.toString()
1276
+ );
1277
+ }) })
900
1278
  ] }),
901
1279
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.rowContents, role: "row", children: [
902
1280
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -906,13 +1284,23 @@ function TimeGridView({
906
1284
  "aria-label": `${timezoneLabel} all day`,
907
1285
  className: styles.allDayLabel,
908
1286
  role: "rowheader",
909
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk3Z5PF75J_cjs.Text, { color: "secondary", type: "supporting", weight: "bold", children: timezoneLabel })
1287
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkCKDB7QNT_cjs.Text, { color: "secondary", type: "supporting", weight: "bold", children: timezoneLabel })
910
1288
  }
911
1289
  ),
912
1290
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.allDayRow, children: days.map((day, index) => {
913
1291
  const dayEvents = events.filter(
914
1292
  (event) => isDayEvent(event) && eventOccursOnDate(event, day, timezoneID)
915
1293
  );
1294
+ const visibleDayEvents = dayEvents.slice(
1295
+ 0,
1296
+ normalizedAllDayEventLimit
1297
+ );
1298
+ const hiddenDayEvents = dayEvents.slice(normalizedAllDayEventLimit);
1299
+ const dayCellClasses = scheduleTimeGridViewRecipe({
1300
+ isLastColumn: index === days.length - 1
1301
+ });
1302
+ const dateLabel = chunkJK4YAQ2N_cjs.plainDateFormat(day, chunkJK4YAQ2N_cjs.DATE_FORMAT_WITH_WEEKDAY);
1303
+ const seeMoreLabel = `Show ${hiddenDayEvents.length} more all-day events for ${dateLabel}`;
916
1304
  return /* @__PURE__ */ jsxRuntime.jsx(
917
1305
  "div",
918
1306
  {
@@ -924,19 +1312,39 @@ function TimeGridView({
924
1312
  hourLabel: "all day",
925
1313
  timezoneID
926
1314
  }),
927
- className: chunkSPDVNY2Z_cjs.cx(
928
- styles.dayCell,
929
- index === days.length - 1 && styles.lastColumn
930
- ),
1315
+ className: dayCellClasses.dayCell,
931
1316
  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
- )) })
1317
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.allDayEvents, children: [
1318
+ visibleDayEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(
1319
+ CalendarEventPill,
1320
+ {
1321
+ event,
1322
+ isPast: isEventInPast(event, currentTime2, timezoneID)
1323
+ },
1324
+ event.id
1325
+ )),
1326
+ hiddenDayEvents.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
1327
+ ScheduleEventOverflowPopover,
1328
+ {
1329
+ buttonClassName: styles.allDaySeeMoreButton,
1330
+ contentClassName: styles.allDayPopoverContent,
1331
+ events: dayEvents,
1332
+ eventsClassName: styles.allDayPopoverEvents,
1333
+ hiddenEventCount: hiddenDayEvents.length,
1334
+ label: seeMoreLabel,
1335
+ renderEvent: (event) => /* @__PURE__ */ jsxRuntime.jsx(
1336
+ CalendarEventPill,
1337
+ {
1338
+ event,
1339
+ isFullWidth: true,
1340
+ isPast: isEventInPast(event, currentTime2, timezoneID)
1341
+ }
1342
+ ),
1343
+ testId: `schedule-all-day-see-more-${day.toString()}`,
1344
+ title: dateLabel
1345
+ }
1346
+ ) : null
1347
+ ] })
940
1348
  },
941
1349
  `${day.toString()}-all-day`
942
1350
  );
@@ -945,12 +1353,15 @@ function TimeGridView({
945
1353
  hours.map((hour) => {
946
1354
  const hourLabel = formatHour(hour);
947
1355
  const isLastHour = hour === hours[hours.length - 1];
1356
+ const timeLabelClasses = scheduleTimeGridViewRecipe({
1357
+ isLastRow: isLastHour
1358
+ });
948
1359
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.rowContents, role: "row", children: [
949
1360
  /* @__PURE__ */ jsxRuntime.jsx(
950
1361
  "div",
951
1362
  {
952
1363
  "aria-colindex": 1,
953
- className: chunkSPDVNY2Z_cjs.cx(styles.timeLabel, isLastHour && styles.lastRow),
1364
+ className: timeLabelClasses.timeLabel,
954
1365
  role: "rowheader",
955
1366
  style: hourStyle,
956
1367
  children: hourLabel
@@ -969,6 +1380,24 @@ function TimeGridView({
969
1380
  minHour: normalizedMinHour,
970
1381
  timezoneID
971
1382
  });
1383
+ const hourCellClasses = scheduleTimeGridViewRecipe({
1384
+ isLastColumn: index === days.length - 1,
1385
+ isLastRow: isLastHour
1386
+ });
1387
+ const hourCellPluginProps = plugins.reduce(
1388
+ (props, plugin) => ({
1389
+ ...props,
1390
+ ...plugin.getTimeGridCellProps?.({
1391
+ date: day,
1392
+ hour,
1393
+ hourHeight: normalizedHourHeight,
1394
+ maxHour: normalizedMaxHour,
1395
+ minHour: normalizedMinHour,
1396
+ timezoneID
1397
+ })
1398
+ }),
1399
+ {}
1400
+ );
972
1401
  return /* @__PURE__ */ jsxRuntime.jsxs(
973
1402
  "div",
974
1403
  {
@@ -980,51 +1409,31 @@ function TimeGridView({
980
1409
  hourLabel,
981
1410
  timezoneID
982
1411
  }),
983
- className: chunkSPDVNY2Z_cjs.cx(
984
- styles.hourCell,
985
- index === days.length - 1 && styles.lastColumn,
986
- isLastHour && styles.lastRow
987
- ),
1412
+ className: hourCellClasses.hourCell,
1413
+ "data-testid": `schedule-time-grid-cell-${day.toString()}-${hour}`,
988
1414
  role: "gridcell",
989
1415
  style: hourStyle,
1416
+ ...hourCellPluginProps,
990
1417
  children: [
991
1418
  currentTimeTop != null ? /* @__PURE__ */ jsxRuntime.jsx(
992
- "div",
1419
+ ScheduleCurrentTimeIndicator,
993
1420
  {
994
- "aria-hidden": "true",
995
- className: styles.currentTimeLine,
996
- "data-testid": "schedule-current-time-line",
997
- style: { top: `${currentTimeTop}%` }
1421
+ layout: "timeGrid",
1422
+ style: { top: `${currentTimeTop}%` },
1423
+ testId: "schedule-current-time-line"
998
1424
  }
999
1425
  ) : 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
- }) })
1426
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.events, children: visibleTimedEventLayouts.map((layout) => /* @__PURE__ */ jsxRuntime.jsx(
1427
+ TimeGridEvent,
1428
+ {
1429
+ currentTime: currentTime2,
1430
+ hourHeight: normalizedHourHeight,
1431
+ layout,
1432
+ maxHour: normalizedMaxHour,
1433
+ minHour: normalizedMinHour
1434
+ },
1435
+ layout.event.id
1436
+ )) })
1028
1437
  ]
1029
1438
  },
1030
1439
  `${day.toString()}-${hour}`
@@ -1101,6 +1510,7 @@ function ScheduleDayView({
1101
1510
  return /* @__PURE__ */ jsxRuntime.jsx(ScheduleFrame, { title: formatMonthTitle(day), titleLabel: formatDate(day), children: /* @__PURE__ */ jsxRuntime.jsx(
1102
1511
  TimeGridView,
1103
1512
  {
1513
+ allDayEventLimit: options.allDayEventLimit,
1104
1514
  days: [day],
1105
1515
  hourHeight: options.hourHeight,
1106
1516
  maxHour: options.maxHour,
@@ -1109,6 +1519,7 @@ function ScheduleDayView({
1109
1519
  ) });
1110
1520
  }
1111
1521
  function createScheduleDayView({
1522
+ allDayEventLimit = 3,
1112
1523
  hourHeight = 100,
1113
1524
  maxHour = 24,
1114
1525
  minHour = 0
@@ -1131,114 +1542,192 @@ function createScheduleDayView({
1131
1542
  label: "Previous day",
1132
1543
  range: [date.startOfDay().addDays(-1), date.startOfDay()]
1133
1544
  }),
1134
- options: { hourHeight, maxHour, minHour }
1545
+ options: { allDayEventLimit, hourHeight, maxHour, minHour }
1135
1546
  };
1136
1547
  }
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
- };
1548
+
1549
+ // src/components/Schedule/ListView.recipe.ts
1550
+ var scheduleListViewRecipe = chunkZ6RT3WPE_cjs.sva({
1551
+ slots: [
1552
+ "list",
1553
+ "day",
1554
+ "dayHeading",
1555
+ "dayWeekday",
1556
+ "dayNumber",
1557
+ "events",
1558
+ "eventRow",
1559
+ "eventContent",
1560
+ "eventTime"
1561
+ ],
1562
+ base: {
1563
+ list: {
1564
+ display: "flex",
1565
+ flexDirection: "column"
1566
+ },
1567
+ day: {
1568
+ display: "grid",
1569
+ gridTemplateColumns: "112px minmax(0, 1fr)",
1570
+ alignItems: "start",
1571
+ columnGap: "3",
1572
+ p: "3",
1573
+ borderBlockEndWidth: "default",
1574
+ borderBlockEndStyle: "solid",
1575
+ borderBlockEndColor: "border"
1576
+ },
1577
+ dayHeading: {
1578
+ m: 0,
1579
+ display: "inline-flex",
1580
+ alignItems: "center",
1581
+ justifyContent: "flex-start",
1582
+ gap: "2",
1583
+ color: "fg.muted",
1584
+ fontFamily: "body",
1585
+ fontSize: "lg",
1586
+ fontWeight: "semibold",
1587
+ lineHeight: "tight",
1588
+ whiteSpace: "nowrap"
1589
+ },
1590
+ dayWeekday: {
1591
+ display: "inline-block",
1592
+ fontSize: "lg"
1593
+ },
1594
+ dayNumber: {
1595
+ display: "inline-flex",
1596
+ flexShrink: 0,
1597
+ alignItems: "center",
1598
+ justifyContent: "center",
1599
+ w: "30px",
1600
+ h: "30px",
1601
+ borderRadius: "full",
1602
+ fontWeight: "bold"
1603
+ },
1604
+ events: {
1605
+ display: "flex",
1606
+ flexDirection: "column",
1607
+ gap: "2"
1608
+ },
1609
+ eventRow: {
1610
+ display: "grid",
1611
+ gridTemplateColumns: "160px minmax(0, 1fr)",
1612
+ alignItems: "center",
1613
+ gap: "3"
1614
+ },
1615
+ eventContent: {
1616
+ display: "flex",
1617
+ alignItems: "center",
1618
+ gap: "2",
1619
+ justifySelf: "start",
1620
+ minW: 0
1621
+ },
1622
+ eventTime: {
1623
+ whiteSpace: "nowrap"
1624
+ }
1625
+ },
1626
+ variants: {
1627
+ isHighlightedDay: {
1628
+ true: {
1629
+ dayNumber: {
1630
+ bg: "primary",
1631
+ color: "fg.onPrimary"
1632
+ }
1633
+ },
1634
+ false: {}
1635
+ },
1636
+ isLastDay: {
1637
+ true: {
1638
+ day: {
1639
+ borderBlockEndWidth: 0
1640
+ }
1641
+ },
1642
+ false: {}
1643
+ },
1644
+ isPastEvent: {
1645
+ true: {
1646
+ eventRow: {
1647
+ opacity: 0.64
1648
+ }
1649
+ },
1650
+ false: {}
1651
+ },
1652
+ isInteractiveEvent: {
1653
+ true: {
1654
+ eventContent: {
1655
+ appearance: "none",
1656
+ bg: "none",
1657
+ borderWidth: 0,
1658
+ p: 0,
1659
+ m: 0,
1660
+ font: "inherit",
1661
+ textAlign: "inherit",
1662
+ color: "inherit",
1663
+ cursor: "pointer",
1664
+ borderRadius: "sm",
1665
+ _focusVisible: {
1666
+ outlineWidth: "focus",
1667
+ outlineStyle: "solid",
1668
+ outlineColor: "primary"
1669
+ }
1670
+ }
1671
+ },
1672
+ false: {}
1673
+ }
1674
+ },
1675
+ defaultVariants: {
1676
+ isHighlightedDay: false,
1677
+ isLastDay: false,
1678
+ isPastEvent: false,
1679
+ isInteractiveEvent: false
1680
+ }
1681
+ });
1682
+ var styles2 = scheduleListViewRecipe();
1215
1683
  function ListEvent({
1216
1684
  event,
1217
1685
  isPast
1218
1686
  }) {
1219
1687
  const { categoryMap, timezoneID } = useScheduleContext();
1688
+ const { popover, triggerProps } = useScheduleEventPopover(event, {
1689
+ placement: "end"
1690
+ });
1220
1691
  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
- );
1692
+ const eventDataState = isPast ? "past" : void 0;
1693
+ const classes = scheduleListViewRecipe({
1694
+ isInteractiveEvent: triggerProps != null,
1695
+ isPastEvent: isPast
1696
+ });
1697
+ const eventContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1698
+ /* @__PURE__ */ jsxRuntime.jsx(chunkGJZAGTPV_cjs.Tooltip, { content: category.label, hoverIndication: "never", children: /* @__PURE__ */ jsxRuntime.jsx(
1699
+ "span",
1700
+ {
1701
+ "aria-label": category.label,
1702
+ className: scheduleEventRecipe({ color: category.color }).dot,
1703
+ role: "img"
1704
+ }
1705
+ ) }),
1706
+ /* @__PURE__ */ jsxRuntime.jsx(chunkCKDB7QNT_cjs.Text, { children: event.title })
1707
+ ] });
1708
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.eventRow, "data-state": eventDataState, children: [
1709
+ /* @__PURE__ */ jsxRuntime.jsx(chunkCKDB7QNT_cjs.Text, { className: classes.eventTime, color: "secondary", type: "supporting", children: isDayEvent(event) ? "All day" : getEventTimeLabel(event, timezoneID) }),
1710
+ triggerProps != null ? /* @__PURE__ */ jsxRuntime.jsx(
1711
+ "button",
1712
+ {
1713
+ className: classes.eventContent,
1714
+ "data-state": eventDataState,
1715
+ "data-testid": `schedule-event-${event.id}`,
1716
+ type: "button",
1717
+ ...triggerProps,
1718
+ children: eventContent
1719
+ }
1720
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1721
+ "div",
1722
+ {
1723
+ className: classes.eventContent,
1724
+ "data-state": eventDataState,
1725
+ "data-testid": `schedule-event-${event.id}`,
1726
+ children: eventContent
1727
+ }
1728
+ ),
1729
+ popover
1730
+ ] });
1242
1731
  }
1243
1732
  function ScheduleListView() {
1244
1733
  const { events, highlightDate, isLoading, range, timezoneID } = useScheduleContext();
@@ -1266,45 +1755,30 @@ function ScheduleListView() {
1266
1755
  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
1756
  ({ day, dayEvents, isCurrentDay, isHighlightedDay }, index) => {
1268
1757
  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
- );
1758
+ const dayClasses = scheduleListViewRecipe({
1759
+ isHighlightedDay,
1760
+ isLastDay: index === visibleDays.length - 1
1761
+ });
1762
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: dayClasses.day, children: [
1763
+ /* @__PURE__ */ jsxRuntime.jsxs(
1764
+ "h4",
1765
+ {
1766
+ "aria-current": isHighlightedDay ? "date" : void 0,
1767
+ "aria-label": fullDate,
1768
+ className: dayClasses.dayHeading,
1769
+ children: [
1770
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: dayClasses.dayNumber, children: day.day }),
1771
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: dayClasses.dayWeekday, children: chunkJK4YAQ2N_cjs.plainDateFormat(day, { weekday: "short" }) })
1772
+ ]
1773
+ }
1774
+ ),
1775
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: dayClasses.events, children: renderListRows({
1776
+ currentTime: currentTime2,
1777
+ events: dayEvents,
1778
+ isShowingCurrentTime: isCurrentDay && !isLoading,
1779
+ timezoneID
1780
+ }) })
1781
+ ] }, day.toString());
1308
1782
  }
1309
1783
  ) }) });
1310
1784
  }
@@ -1326,11 +1800,10 @@ function renderListRows({
1326
1800
  return rows;
1327
1801
  }
1328
1802
  const marker = /* @__PURE__ */ jsxRuntime.jsx(
1329
- "div",
1803
+ ScheduleCurrentTimeIndicator,
1330
1804
  {
1331
- "aria-hidden": "true",
1332
- className: styles2.nowRow,
1333
- "data-testid": "schedule-list-current-time"
1805
+ layout: "list",
1806
+ testId: "schedule-list-current-time"
1334
1807
  },
1335
1808
  "current-time"
1336
1809
  );
@@ -1365,127 +1838,159 @@ function createScheduleListView({
1365
1838
  options: { days }
1366
1839
  };
1367
1840
  }
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"
1841
+
1842
+ // src/components/Schedule/MonthlyView.recipe.ts
1843
+ var scheduleMonthlyViewRecipe = chunkZ6RT3WPE_cjs.sva({
1844
+ slots: [
1845
+ "grid",
1846
+ "weekday",
1847
+ "cell",
1848
+ "dayNumber",
1849
+ "todayText",
1850
+ "monthSurface",
1851
+ "monthCellGrid",
1852
+ "monthEventOverlay",
1853
+ "monthEventSpan",
1854
+ "monthSeeMoreSpan",
1855
+ "monthSeeMoreButton",
1856
+ "monthPopoverContent",
1857
+ "monthPopoverEvents"
1858
+ ],
1859
+ base: {
1860
+ grid: {
1861
+ display: "grid",
1862
+ gridTemplateColumns: "repeat(7, minmax(0, 1fr))"
1863
+ },
1864
+ weekday: {
1865
+ p: "2",
1866
+ textAlign: "center",
1867
+ borderBlockEndWidth: "default",
1868
+ borderBlockEndStyle: "solid",
1869
+ borderBlockEndColor: "border"
1870
+ },
1871
+ cell: {
1872
+ minH: "24",
1873
+ p: "0.5",
1874
+ borderInlineEndWidth: "default",
1875
+ borderInlineEndStyle: "solid",
1876
+ borderInlineEndColor: "border",
1877
+ borderBlockEndWidth: "default",
1878
+ borderBlockEndStyle: "solid",
1879
+ borderBlockEndColor: "border"
1880
+ },
1881
+ dayNumber: {
1882
+ display: "inline-flex",
1883
+ alignItems: "center",
1884
+ justifyContent: "center",
1885
+ w: "6",
1886
+ h: "6",
1887
+ m: "0.5",
1888
+ borderRadius: "full"
1889
+ },
1890
+ monthSurface: {
1891
+ position: "relative",
1892
+ gridColumn: "1 / -1"
1893
+ },
1894
+ monthCellGrid: {
1895
+ display: "grid",
1896
+ gridTemplateColumns: "repeat(7, minmax(0, 1fr))",
1897
+ gridAutoRows: "var(--schedule-month-row-height)"
1898
+ },
1899
+ monthEventOverlay: {
1900
+ position: "absolute",
1901
+ inset: 0,
1902
+ display: "grid",
1903
+ gridTemplateColumns: "repeat(7, minmax(0, 1fr))",
1904
+ gridAutoRows: "var(--schedule-month-row-height)",
1905
+ pointerEvents: "none"
1906
+ },
1907
+ monthEventSpan: {
1908
+ alignSelf: "start",
1909
+ minW: 0,
1910
+ mx: "0.5",
1911
+ pointerEvents: "auto",
1912
+ zIndex: 1
1913
+ },
1914
+ monthSeeMoreSpan: {
1915
+ alignSelf: "start",
1916
+ minW: 0,
1917
+ mx: "0.5",
1918
+ pointerEvents: "auto",
1919
+ zIndex: 2
1920
+ },
1921
+ monthSeeMoreButton: {
1922
+ display: "inline-flex",
1923
+ alignItems: "center",
1924
+ maxW: "full",
1925
+ h: "5",
1926
+ px: "1",
1927
+ borderRadius: "sm",
1928
+ color: "primary",
1929
+ cursor: "pointer",
1930
+ fontSize: "xs",
1931
+ fontWeight: "medium",
1932
+ lineHeight: "tight",
1933
+ overflow: "hidden",
1934
+ textOverflow: "ellipsis",
1935
+ whiteSpace: "nowrap",
1936
+ _hover: {
1937
+ bg: "bg.muted"
1938
+ }
1939
+ },
1940
+ monthPopoverContent: {
1941
+ display: "flex",
1942
+ flexDirection: "column",
1943
+ gap: "1",
1944
+ p: "3"
1945
+ },
1946
+ monthPopoverEvents: {
1947
+ display: "flex",
1948
+ flexDirection: "column",
1949
+ gap: 0,
1950
+ m: 0,
1951
+ p: 0,
1952
+ listStyleType: "none"
1472
1953
  }
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
- };
1954
+ },
1955
+ variants: {
1956
+ isLastColumn: {
1957
+ true: { cell: { borderInlineEndWidth: 0 } },
1958
+ false: {}
1959
+ },
1960
+ isLastRow: {
1961
+ true: { cell: { borderBlockEndWidth: 0 } },
1962
+ false: {}
1963
+ },
1964
+ isOtherMonth: {
1965
+ true: {
1966
+ cell: {
1967
+ bg: "bg.subtle",
1968
+ color: "fg.muted"
1969
+ }
1970
+ },
1971
+ false: {}
1972
+ },
1973
+ isToday: {
1974
+ true: {
1975
+ dayNumber: {
1976
+ bg: "primary",
1977
+ color: "fg.onPrimary"
1978
+ },
1979
+ todayText: {
1980
+ marginInlineEnd: "1px"
1981
+ }
1982
+ },
1983
+ false: {}
1984
+ }
1985
+ },
1986
+ defaultVariants: {
1987
+ isLastColumn: false,
1988
+ isLastRow: false,
1989
+ isOtherMonth: false,
1990
+ isToday: false
1991
+ }
1992
+ });
1993
+ var styles3 = scheduleMonthlyViewRecipe();
1489
1994
  var weekdays = [
1490
1995
  { label: "Sunday", shortLabel: "Sun" },
1491
1996
  { label: "Monday", shortLabel: "Mon" },
@@ -1734,7 +2239,8 @@ function getGridCellName({
1734
2239
  function ScheduleMonthlyView({
1735
2240
  options
1736
2241
  }) {
1737
- const { categoryMap, events, highlightDate, timezoneID, viewDate } = useScheduleContext();
2242
+ const { categoryMap, events, highlightDate, plugins, timezoneID, viewDate } = useScheduleContext();
2243
+ const eventPopoverActive = hasEventPopoverPlugin(plugins);
1738
2244
  const currentTime2 = useCurrentTime();
1739
2245
  const month = viewDate.toPlainDate();
1740
2246
  const title = formatMonthTitle(month);
@@ -1782,7 +2288,7 @@ function ScheduleMonthlyView({
1782
2288
  "aria-label": weekday.label,
1783
2289
  className: styles3.weekday,
1784
2290
  role: "columnheader",
1785
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk3Z5PF75J_cjs.Heading, { color: "secondary", level: 4, children: weekday.shortLabel })
2291
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkCKDB7QNT_cjs.Heading, { color: "secondary", level: 4, children: weekday.shortLabel })
1786
2292
  },
1787
2293
  weekday.label
1788
2294
  )),
@@ -1792,43 +2298,52 @@ function ScheduleMonthlyView({
1792
2298
  const isCurrentMonth = day.month === month.month && day.year === month.year;
1793
2299
  const isLastColumn = index % 7 === 6;
1794
2300
  const isLastRow = index >= days.length - 7;
2301
+ const isToday = chunkJK4YAQ2N_cjs.plainDateIsEqual(day, today);
2302
+ const dayClasses = scheduleMonthlyViewRecipe({
2303
+ isLastColumn,
2304
+ isLastRow,
2305
+ isOtherMonth: !isCurrentMonth,
2306
+ isToday
2307
+ });
2308
+ const dayCellPluginProps = plugins.reduce(
2309
+ (props, plugin) => ({
2310
+ ...props,
2311
+ ...plugin.getMonthCellProps?.({
2312
+ date: day,
2313
+ timezoneID
2314
+ })
2315
+ }),
2316
+ {}
2317
+ );
1795
2318
  return /* @__PURE__ */ jsxRuntime.jsx(
1796
2319
  "div",
1797
2320
  {
1798
- "aria-current": chunkJK4YAQ2N_cjs.plainDateIsEqual(day, today) ? "date" : void 0,
2321
+ "aria-current": isToday ? "date" : void 0,
1799
2322
  "aria-label": getGridCellName({
1800
2323
  categoryMap,
1801
2324
  date: day,
1802
- events: dayEvents,
2325
+ // When events are interactive popover triggers they expose
2326
+ // their own accessible names, so omit them here to avoid
2327
+ // announcing each event twice.
2328
+ events: eventPopoverActive ? [] : dayEvents,
1803
2329
  timezoneID
1804
2330
  }),
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
- ),
2331
+ className: dayClasses.cell,
2332
+ "data-testid": `schedule-month-cell-${day.toString()}`,
1811
2333
  role: "gridcell",
1812
- children: /* @__PURE__ */ jsxRuntime.jsx(
1813
- "span",
2334
+ ...dayCellPluginProps,
2335
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: dayClasses.dayNumber, children: /* @__PURE__ */ jsxRuntime.jsx(
2336
+ chunkCKDB7QNT_cjs.Text,
1814
2337
  {
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
- )
2338
+ as: "span",
2339
+ className: dayClasses.todayText,
2340
+ color: "inherit",
2341
+ hasTabularNumbers: true,
2342
+ type: "supporting",
2343
+ weight: "medium",
2344
+ children: day.day
1830
2345
  }
1831
- )
2346
+ ) })
1832
2347
  },
1833
2348
  day.toString()
1834
2349
  );
@@ -1837,7 +2352,7 @@ function ScheduleMonthlyView({
1837
2352
  visibleEventSegments.map((segment) => /* @__PURE__ */ jsxRuntime.jsx(
1838
2353
  "div",
1839
2354
  {
1840
- "aria-hidden": "true",
2355
+ "aria-hidden": eventPopoverActive ? void 0 : "true",
1841
2356
  className: styles3.monthEventSpan,
1842
2357
  "data-testid": `schedule-event-span-${segment.event.id}`,
1843
2358
  style: getMonthEventSegmentStyle(segment),
@@ -1867,40 +2382,23 @@ function ScheduleMonthlyView({
1867
2382
  level: Math.max(0, monthEventLevelCount - 1)
1868
2383
  }),
1869
2384
  children: /* @__PURE__ */ jsxRuntime.jsx(
1870
- chunkL5JS6P62_cjs.Popover,
2385
+ ScheduleEventOverflowPopover,
1871
2386
  {
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()}`,
2387
+ buttonClassName: styles3.monthSeeMoreButton,
2388
+ contentClassName: styles3.monthPopoverContent,
2389
+ events: eventsByDate.get(day.toString()) ?? [],
2390
+ eventsClassName: styles3.monthPopoverEvents,
2391
+ hiddenEventCount: hiddenEvents.length,
1889
2392
  label,
1890
- width: 320,
1891
- children: /* @__PURE__ */ jsxRuntime.jsxs(
1892
- "button",
2393
+ renderEvent: (event) => /* @__PURE__ */ jsxRuntime.jsx(
2394
+ CalendarMonthEventPill,
1893
2395
  {
1894
- "aria-label": label,
1895
- className: styles3.monthSeeMoreButton,
1896
- type: "button",
1897
- children: [
1898
- "+",
1899
- hiddenEvents.length,
1900
- " more"
1901
- ]
2396
+ event,
2397
+ isPast: isEventInPast(event, currentTime2, timezoneID)
1902
2398
  }
1903
- )
2399
+ ),
2400
+ testId: `schedule-month-see-more-${day.toString()}`,
2401
+ title: dateLabel
1904
2402
  }
1905
2403
  )
1906
2404
  },
@@ -1946,6 +2444,706 @@ function createScheduleMonthlyView({
1946
2444
  options: { monthRowHeight, weekCount, weekStartsOn }
1947
2445
  };
1948
2446
  }
2447
+ var DEFAULT_SNAP_MINUTES = 15;
2448
+ var MILLISECONDS_PER_MINUTE = 6e4;
2449
+ var MINUTES_PER_DAY = 24 * 60;
2450
+ function getSnappedMinutes(minutes, snapMinutes) {
2451
+ return Math.round(minutes / snapMinutes) * snapMinutes;
2452
+ }
2453
+ function getTimeGridStartMinutes({
2454
+ drag,
2455
+ hour,
2456
+ pointerOffsetMinutes,
2457
+ snapMinutes
2458
+ }) {
2459
+ return getSnappedMinutes(
2460
+ hour * 60 + pointerOffsetMinutes - drag.offsetMinutes,
2461
+ snapMinutes
2462
+ );
2463
+ }
2464
+ function instantFromDateAndMinutes(date, minutes, timezoneID) {
2465
+ const clampedMinutes = Math.round(
2466
+ Math.max(0, Math.min(MINUTES_PER_DAY - 1, minutes))
2467
+ );
2468
+ const hour = Math.floor(clampedMinutes / 60);
2469
+ const minute = clampedMinutes % 60;
2470
+ return date.toPlainDateTime(polyfill.Temporal.PlainTime.from({ hour, minute })).toZonedDateTime(timezoneID).epochMilliseconds;
2471
+ }
2472
+ function moveEventToDate(event, date, timezoneID) {
2473
+ if (isDayEvent(event)) {
2474
+ const durationDays = event.start.until(event.end).days;
2475
+ return {
2476
+ end: date.add({ days: durationDays }),
2477
+ event,
2478
+ start: date
2479
+ };
2480
+ }
2481
+ const startTime = polyfill.Temporal.Instant.fromEpochMilliseconds(event.start).toZonedDateTimeISO(timezoneID).toPlainTime();
2482
+ const start = date.toPlainDateTime(startTime).toZonedDateTime(timezoneID).epochMilliseconds;
2483
+ return {
2484
+ end: start + (event.end - event.start),
2485
+ event,
2486
+ start
2487
+ };
2488
+ }
2489
+ function moveEventToDateTime({
2490
+ date,
2491
+ drag,
2492
+ hour,
2493
+ pointerOffsetMinutes,
2494
+ snapMinutes,
2495
+ timezoneID
2496
+ }) {
2497
+ if (isDayEvent(drag.event)) {
2498
+ return null;
2499
+ }
2500
+ const startMinutes = getTimeGridStartMinutes({
2501
+ drag,
2502
+ hour,
2503
+ pointerOffsetMinutes,
2504
+ snapMinutes
2505
+ });
2506
+ const start = instantFromDateAndMinutes(date, startMinutes, timezoneID);
2507
+ return {
2508
+ end: start + (drag.event.end - drag.event.start),
2509
+ event: drag.event,
2510
+ start
2511
+ };
2512
+ }
2513
+ function hasChanged({
2514
+ end,
2515
+ event,
2516
+ start
2517
+ }) {
2518
+ return event.start !== start || event.end !== end;
2519
+ }
2520
+ function getDragEventClientY(dragEvent, fallback) {
2521
+ return Number.isFinite(dragEvent.clientY) ? dragEvent.clientY : fallback;
2522
+ }
2523
+ function applyDragPreview(drag, targetLeft, targetTop) {
2524
+ drag.previewElement.style.left = `${targetLeft}px`;
2525
+ drag.previewElement.style.top = `${targetTop}px`;
2526
+ }
2527
+ function resetDragPreview(drag) {
2528
+ drag.sourceElement.style.opacity = drag.initialOpacity;
2529
+ drag.previewElement.remove();
2530
+ }
2531
+ function createDragPreviewElement(event, sourceElement, sourceRect) {
2532
+ const preview = sourceElement.cloneNode(true);
2533
+ if (!(preview instanceof HTMLElement)) {
2534
+ throw new Error("Schedule event preview must be an HTMLElement.");
2535
+ }
2536
+ preview.setAttribute("aria-hidden", "true");
2537
+ preview.setAttribute(
2538
+ "data-testid",
2539
+ `schedule-event-move-preview-${event.id}`
2540
+ );
2541
+ preview.style.position = "fixed";
2542
+ preview.style.inset = "auto";
2543
+ preview.style.left = `${sourceRect.left}px`;
2544
+ preview.style.top = `${sourceRect.top}px`;
2545
+ preview.style.width = `${sourceRect.width}px`;
2546
+ preview.style.height = `${sourceRect.height}px`;
2547
+ preview.style.margin = "0";
2548
+ preview.style.opacity = "0.45";
2549
+ preview.style.pointerEvents = "none";
2550
+ preview.style.transform = "none";
2551
+ preview.style.zIndex = "1000";
2552
+ document.body.append(preview);
2553
+ return preview;
2554
+ }
2555
+ function createScheduleEventMovePlugin({
2556
+ dragRef,
2557
+ onMove,
2558
+ snapMinutes = DEFAULT_SNAP_MINUTES
2559
+ }) {
2560
+ const normalizedSnapMinutes = Number.isFinite(snapMinutes) && snapMinutes > 0 ? Math.max(1, Math.floor(snapMinutes)) : DEFAULT_SNAP_MINUTES;
2561
+ return {
2562
+ getEventProps({
2563
+ event,
2564
+ layout,
2565
+ timezoneID
2566
+ }) {
2567
+ if (layout !== "month" && (layout !== "timeGrid" || isDayEvent(event))) {
2568
+ return {};
2569
+ }
2570
+ return {
2571
+ draggable: true,
2572
+ onDragEnd: () => {
2573
+ if (dragRef.current != null) {
2574
+ resetDragPreview(dragRef.current);
2575
+ }
2576
+ dragRef.current = null;
2577
+ },
2578
+ onDragStart: (dragEvent) => {
2579
+ const element = dragEvent.currentTarget;
2580
+ const sourceRect = element.getBoundingClientRect();
2581
+ const isTimedTimeGridEvent = layout === "timeGrid" && !isDayEvent(event);
2582
+ const eventStartTime = isDayEvent(event) ? null : polyfill.Temporal.Instant.fromEpochMilliseconds(event.start).toZonedDateTimeISO(timezoneID).toPlainTime();
2583
+ const eventStartMinutes = eventStartTime == null ? 0 : eventStartTime.hour * 60 + eventStartTime.minute;
2584
+ let offsetMinutes = eventStartMinutes;
2585
+ if (isTimedTimeGridEvent) {
2586
+ const durationMinutes = Math.max(
2587
+ 15,
2588
+ (event.end - event.start) / MILLISECONDS_PER_MINUTE
2589
+ );
2590
+ offsetMinutes = Math.max(
2591
+ 0,
2592
+ (getDragEventClientY(dragEvent, sourceRect.top) - sourceRect.top) / Math.max(1, sourceRect.height) * durationMinutes
2593
+ );
2594
+ }
2595
+ dragEvent.dataTransfer.setData("text/plain", event.id);
2596
+ dragEvent.dataTransfer.setDragImage(element, 0, 0);
2597
+ dragRef.current = {
2598
+ event,
2599
+ initialOpacity: element.style.opacity,
2600
+ offsetMinutes,
2601
+ previewElement: createDragPreviewElement(
2602
+ event,
2603
+ element,
2604
+ sourceRect
2605
+ ),
2606
+ sourceElement: element,
2607
+ sourceRect
2608
+ };
2609
+ element.style.opacity = "0.25";
2610
+ }
2611
+ };
2612
+ },
2613
+ getMonthCellProps({
2614
+ date,
2615
+ timezoneID
2616
+ }) {
2617
+ return {
2618
+ onDragOver: (dragEvent) => {
2619
+ if (dragRef.current != null) {
2620
+ dragEvent.preventDefault();
2621
+ const rect = dragEvent.currentTarget.getBoundingClientRect();
2622
+ applyDragPreview(dragRef.current, rect.left + 4, rect.top + 30);
2623
+ }
2624
+ },
2625
+ onDrop: (dragEvent) => {
2626
+ const drag = dragRef.current;
2627
+ if (drag == null) {
2628
+ return;
2629
+ }
2630
+ dragEvent.preventDefault();
2631
+ const change = moveEventToDate(drag.event, date, timezoneID);
2632
+ if (hasChanged(change)) {
2633
+ onMove(change);
2634
+ }
2635
+ resetDragPreview(drag);
2636
+ dragRef.current = null;
2637
+ }
2638
+ };
2639
+ },
2640
+ getTimeGridCellProps({
2641
+ date,
2642
+ hour,
2643
+ hourHeight,
2644
+ timezoneID
2645
+ }) {
2646
+ return {
2647
+ onDragOver: (dragEvent) => {
2648
+ if (dragRef.current != null && !isDayEvent(dragRef.current.event)) {
2649
+ dragEvent.preventDefault();
2650
+ const rect = dragEvent.currentTarget.getBoundingClientRect();
2651
+ const pointerOffsetMinutes = (getDragEventClientY(dragEvent, rect.top) - rect.top) / Math.max(1, hourHeight) * 60;
2652
+ const startMinutes = getTimeGridStartMinutes({
2653
+ drag: dragRef.current,
2654
+ hour,
2655
+ pointerOffsetMinutes,
2656
+ snapMinutes: normalizedSnapMinutes
2657
+ });
2658
+ const top = rect.top + (startMinutes - hour * 60) / 60 * hourHeight + 2;
2659
+ applyDragPreview(dragRef.current, rect.left + 2, top);
2660
+ }
2661
+ },
2662
+ onDrop: (dragEvent) => {
2663
+ const drag = dragRef.current;
2664
+ if (drag == null || isDayEvent(drag.event)) {
2665
+ return;
2666
+ }
2667
+ dragEvent.preventDefault();
2668
+ const rect = dragEvent.currentTarget.getBoundingClientRect();
2669
+ const pointerOffsetMinutes = (getDragEventClientY(dragEvent, rect.top) - rect.top) / Math.max(1, hourHeight) * 60;
2670
+ const change = moveEventToDateTime({
2671
+ date,
2672
+ drag,
2673
+ hour,
2674
+ pointerOffsetMinutes,
2675
+ snapMinutes: normalizedSnapMinutes,
2676
+ timezoneID
2677
+ });
2678
+ if (change != null && hasChanged(change)) {
2679
+ onMove(change);
2680
+ }
2681
+ resetDragPreview(drag);
2682
+ dragRef.current = null;
2683
+ }
2684
+ };
2685
+ }
2686
+ };
2687
+ }
2688
+ function useScheduleEventMovePlugin(options) {
2689
+ const optionsRef = chunkVK7DXUGH_cjs.useLatest_default(options);
2690
+ const dragRef = react.useRef(null);
2691
+ const onMove = react.useCallback(
2692
+ (change) => {
2693
+ optionsRef.current.onMove(change);
2694
+ },
2695
+ [optionsRef]
2696
+ );
2697
+ return react.useMemo(() => {
2698
+ return createScheduleEventMovePlugin({
2699
+ dragRef,
2700
+ onMove,
2701
+ snapMinutes: options.snapMinutes
2702
+ });
2703
+ }, [dragRef, onMove, options.snapMinutes]);
2704
+ }
2705
+ var MIN_DURATION_MINUTES = 15;
2706
+ var DEFAULT_SNAP_MINUTES2 = 15;
2707
+ var MILLISECONDS_PER_MINUTE2 = 6e4;
2708
+ var resizeHandle = chunkJRBQKFVO_cjs.cva({
2709
+ base: {
2710
+ position: "absolute",
2711
+ insetInline: 0,
2712
+ h: "3",
2713
+ cursor: "ns-resize",
2714
+ touchAction: "none",
2715
+ _focusVisible: {
2716
+ outlineWidth: "focus",
2717
+ outlineStyle: "solid",
2718
+ outlineColor: "primary",
2719
+ outlineOffset: "-2px"
2720
+ }
2721
+ },
2722
+ variants: {
2723
+ edge: {
2724
+ start: {
2725
+ insetBlockStart: 0
2726
+ },
2727
+ end: {
2728
+ insetBlockEnd: 0
2729
+ }
2730
+ }
2731
+ }
2732
+ });
2733
+ var resizeHandleClassNames = {
2734
+ end: resizeHandle({ edge: "end" }),
2735
+ start: resizeHandle({ edge: "start" })
2736
+ };
2737
+ function getDurationMinutes(start, end) {
2738
+ return (end - start) / MILLISECONDS_PER_MINUTE2;
2739
+ }
2740
+ function getSnappedDeltaMinutes(deltaPixels, hourHeight, snapMinutes) {
2741
+ const rawMinutes = deltaPixels / hourHeight * 60;
2742
+ return Math.round(rawMinutes / snapMinutes) * snapMinutes;
2743
+ }
2744
+ function getResizeRange(state, clientY) {
2745
+ const deltaMinutes = getSnappedDeltaMinutes(
2746
+ clientY - state.initialPointerY,
2747
+ state.hourHeight,
2748
+ state.snapMinutes
2749
+ );
2750
+ const delta = deltaMinutes * MILLISECONDS_PER_MINUTE2;
2751
+ const minDuration = MIN_DURATION_MINUTES * MILLISECONDS_PER_MINUTE2;
2752
+ if (state.edge === "start") {
2753
+ return {
2754
+ end: state.event.end,
2755
+ start: Math.min(state.event.end - minDuration, state.event.start + delta)
2756
+ };
2757
+ }
2758
+ return {
2759
+ end: Math.max(state.event.start + minDuration, state.event.end + delta),
2760
+ start: state.event.start
2761
+ };
2762
+ }
2763
+ function getPreviewHeight(state, range) {
2764
+ return `${Math.max(
2765
+ 36,
2766
+ getDurationMinutes(range.start, range.end) / 60 * state.hourHeight - 5
2767
+ )}px`;
2768
+ }
2769
+ function getPreviewTop(state, range) {
2770
+ const initialTop = Number.parseFloat(state.initialTop || "0");
2771
+ if (state.edge === "end") {
2772
+ return state.initialTop;
2773
+ }
2774
+ const deltaMinutes = getDurationMinutes(state.event.start, range.start);
2775
+ return `${initialTop + deltaMinutes / 60 * state.hourHeight}px`;
2776
+ }
2777
+ function applyPreview(state, range) {
2778
+ state.eventElement.style.height = getPreviewHeight(state, range);
2779
+ state.eventElement.style.top = getPreviewTop(state, range);
2780
+ }
2781
+ function ScheduleEventResizeHandle({
2782
+ edge,
2783
+ event,
2784
+ hourHeight,
2785
+ onResize,
2786
+ snapMinutes
2787
+ }) {
2788
+ const resizeStateRef = react.useRef(null);
2789
+ const pointerListenersRef = react.useRef(null);
2790
+ const removePointerListeners = react.useCallback(() => {
2791
+ const listeners2 = pointerListenersRef.current;
2792
+ if (listeners2 == null) {
2793
+ return;
2794
+ }
2795
+ window.removeEventListener("pointermove", listeners2.move);
2796
+ window.removeEventListener("pointerup", listeners2.up);
2797
+ window.removeEventListener("pointercancel", listeners2.cancel);
2798
+ pointerListenersRef.current = null;
2799
+ }, []);
2800
+ const finishResize = react.useCallback((clientY, isCommit) => {
2801
+ const state = resizeStateRef.current;
2802
+ if (state == null) {
2803
+ return;
2804
+ }
2805
+ const range = getResizeRange(state, clientY);
2806
+ if (isCommit) {
2807
+ if (range.start !== state.event.start || range.end !== state.event.end) {
2808
+ state.onResize({
2809
+ end: range.end,
2810
+ event: state.event,
2811
+ start: range.start
2812
+ });
2813
+ }
2814
+ } else {
2815
+ state.eventElement.style.height = state.initialHeight;
2816
+ state.eventElement.style.top = state.initialTop;
2817
+ }
2818
+ resizeStateRef.current = null;
2819
+ }, []);
2820
+ const handlePointerMove = react.useCallback((event2) => {
2821
+ const state = resizeStateRef.current;
2822
+ if (state == null) {
2823
+ return;
2824
+ }
2825
+ applyPreview(state, getResizeRange(state, event2.clientY));
2826
+ }, []);
2827
+ const handlePointerUp = react.useCallback(
2828
+ (event2) => {
2829
+ removePointerListeners();
2830
+ finishResize(event2.clientY, true);
2831
+ },
2832
+ [finishResize, removePointerListeners]
2833
+ );
2834
+ const handlePointerCancel = react.useCallback(
2835
+ (event2) => {
2836
+ removePointerListeners();
2837
+ finishResize(event2.clientY, false);
2838
+ },
2839
+ [finishResize, removePointerListeners]
2840
+ );
2841
+ const handlePointerDown = react.useCallback(
2842
+ (pointerEvent) => {
2843
+ pointerEvent.preventDefault();
2844
+ pointerEvent.stopPropagation();
2845
+ const eventElement = pointerEvent.currentTarget.parentElement;
2846
+ if (!(eventElement instanceof HTMLElement)) {
2847
+ return;
2848
+ }
2849
+ resizeStateRef.current = {
2850
+ edge,
2851
+ event,
2852
+ eventElement,
2853
+ hourHeight,
2854
+ initialHeight: eventElement.style.height,
2855
+ initialPointerY: pointerEvent.clientY,
2856
+ initialTop: eventElement.style.top,
2857
+ onResize,
2858
+ snapMinutes
2859
+ };
2860
+ pointerListenersRef.current = {
2861
+ cancel: handlePointerCancel,
2862
+ move: handlePointerMove,
2863
+ up: handlePointerUp
2864
+ };
2865
+ window.addEventListener("pointermove", handlePointerMove);
2866
+ window.addEventListener("pointerup", handlePointerUp);
2867
+ window.addEventListener("pointercancel", handlePointerCancel);
2868
+ },
2869
+ [
2870
+ edge,
2871
+ event,
2872
+ handlePointerCancel,
2873
+ handlePointerMove,
2874
+ handlePointerUp,
2875
+ hourHeight,
2876
+ onResize,
2877
+ snapMinutes
2878
+ ]
2879
+ );
2880
+ const handleKeyDown = react.useCallback(
2881
+ (keyEvent) => {
2882
+ const direction = keyEvent.key === "ArrowDown" ? 1 : keyEvent.key === "ArrowUp" ? -1 : 0;
2883
+ if (direction === 0) {
2884
+ return;
2885
+ }
2886
+ keyEvent.preventDefault();
2887
+ keyEvent.stopPropagation();
2888
+ const delta = direction * snapMinutes * MILLISECONDS_PER_MINUTE2;
2889
+ const minDuration = MIN_DURATION_MINUTES * MILLISECONDS_PER_MINUTE2;
2890
+ const range = edge === "start" ? {
2891
+ end: event.end,
2892
+ start: Math.min(event.end - minDuration, event.start + delta)
2893
+ } : {
2894
+ end: Math.max(event.start + minDuration, event.end + delta),
2895
+ start: event.start
2896
+ };
2897
+ if (range.start !== event.start || range.end !== event.end) {
2898
+ onResize({ event, ...range });
2899
+ }
2900
+ },
2901
+ [edge, event, onResize, snapMinutes]
2902
+ );
2903
+ return /* @__PURE__ */ jsxRuntime.jsx(
2904
+ "span",
2905
+ {
2906
+ "aria-label": `${edge === "start" ? "Resize start of" : "Resize end of"} ${event.title}`,
2907
+ "aria-orientation": "vertical",
2908
+ "aria-valuemax": event.end,
2909
+ "aria-valuemin": event.start,
2910
+ "aria-valuenow": edge === "start" ? event.start : event.end,
2911
+ className: resizeHandleClassNames[edge],
2912
+ "data-testid": `schedule-event-resize-${edge}-handle-${event.id}`,
2913
+ onClick: (event2) => event2.stopPropagation(),
2914
+ onKeyDown: handleKeyDown,
2915
+ onPointerDown: handlePointerDown,
2916
+ role: "slider",
2917
+ tabIndex: 0
2918
+ }
2919
+ );
2920
+ }
2921
+ function ScheduleEventResizeHandles({
2922
+ event,
2923
+ hourHeight,
2924
+ onResize,
2925
+ snapMinutes
2926
+ }) {
2927
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2928
+ /* @__PURE__ */ jsxRuntime.jsx(
2929
+ ScheduleEventResizeHandle,
2930
+ {
2931
+ edge: "start",
2932
+ event,
2933
+ hourHeight,
2934
+ onResize,
2935
+ snapMinutes
2936
+ }
2937
+ ),
2938
+ /* @__PURE__ */ jsxRuntime.jsx(
2939
+ ScheduleEventResizeHandle,
2940
+ {
2941
+ edge: "end",
2942
+ event,
2943
+ hourHeight,
2944
+ onResize,
2945
+ snapMinutes
2946
+ }
2947
+ )
2948
+ ] });
2949
+ }
2950
+ function createScheduleEventResizePlugin({
2951
+ onResize,
2952
+ snapMinutes = DEFAULT_SNAP_MINUTES2
2953
+ }) {
2954
+ const normalizedSnapMinutes = Number.isFinite(snapMinutes) && snapMinutes > 0 ? Math.max(1, Math.floor(snapMinutes)) : DEFAULT_SNAP_MINUTES2;
2955
+ return {
2956
+ renderTimeGridEventContent({
2957
+ event,
2958
+ hourHeight
2959
+ }) {
2960
+ if (isDayEvent(event)) {
2961
+ return null;
2962
+ }
2963
+ return /* @__PURE__ */ jsxRuntime.jsx(
2964
+ ScheduleEventResizeHandles,
2965
+ {
2966
+ event,
2967
+ hourHeight,
2968
+ onResize,
2969
+ snapMinutes: normalizedSnapMinutes
2970
+ }
2971
+ );
2972
+ }
2973
+ };
2974
+ }
2975
+ function useScheduleEventResizePlugin(options) {
2976
+ const optionsRef = chunkVK7DXUGH_cjs.useLatest_default(options);
2977
+ const onResize = react.useCallback(
2978
+ (change) => {
2979
+ optionsRef.current.onResize(change);
2980
+ },
2981
+ [optionsRef]
2982
+ );
2983
+ return react.useMemo(
2984
+ () => createScheduleEventResizePlugin({
2985
+ onResize,
2986
+ snapMinutes: options.snapMinutes
2987
+ }),
2988
+ [onResize, options.snapMinutes]
2989
+ );
2990
+ }
2991
+ var styles4 = {
2992
+ layout: chunkRU6JG3FS_cjs.css({
2993
+ minW: "80",
2994
+ maxW: "96"
2995
+ }),
2996
+ dot: chunkRU6JG3FS_cjs.css({
2997
+ w: "3",
2998
+ h: "3"
2999
+ }),
3000
+ dateValue: chunkRU6JG3FS_cjs.css({
3001
+ display: "flex",
3002
+ flexDirection: "column"
3003
+ }),
3004
+ footerActions: chunkRU6JG3FS_cjs.css({
3005
+ display: "flex",
3006
+ justifyContent: "flex-end"
3007
+ })
3008
+ };
3009
+ function getEventDateLabel(event, timezoneID) {
3010
+ const startDate = isDayEvent(event) ? event.start : chunkJK4YAQ2N_cjs.plainDateFromInstant(event.start, timezoneID);
3011
+ return formatDate(startDate);
3012
+ }
3013
+ function ScheduleEventPopoverContent({
3014
+ event,
3015
+ onClose,
3016
+ onDelete,
3017
+ onEdit,
3018
+ onRespond
3019
+ }) {
3020
+ const { categoryMap, timezoneID } = useScheduleContext();
3021
+ const [response, setResponse] = react.useState(null);
3022
+ const category = getCategory(categoryMap, event);
3023
+ const dotClass = scheduleEventRecipe({ color: category.color }).dot;
3024
+ return /* @__PURE__ */ jsxRuntime.jsx(
3025
+ chunkLTHPJRFK_cjs.Layout,
3026
+ {
3027
+ className: styles4.layout,
3028
+ content: /* @__PURE__ */ jsxRuntime.jsx(chunkLTHPJRFK_cjs.LayoutContent, { isScrollable: false, padding: 3, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkLWB2CTX6_cjs.MetadataList, { children: [
3029
+ /* @__PURE__ */ jsxRuntime.jsx(
3030
+ chunkLWB2CTX6_cjs.MetadataListItem,
3031
+ {
3032
+ icon: lucideReact.CalendarDays,
3033
+ isIconOnly: true,
3034
+ label: "Date and time",
3035
+ children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles4.dateValue, children: [
3036
+ /* @__PURE__ */ jsxRuntime.jsx(chunkCKDB7QNT_cjs.Text, { children: getEventDateLabel(event, timezoneID) }),
3037
+ /* @__PURE__ */ jsxRuntime.jsx(chunkCKDB7QNT_cjs.Text, { color: "secondary", type: "supporting", children: getEventTimeLabel(event, timezoneID) })
3038
+ ] })
3039
+ }
3040
+ ),
3041
+ event.location != null && event.location !== "" ? /* @__PURE__ */ jsxRuntime.jsx(chunkLWB2CTX6_cjs.MetadataListItem, { icon: lucideReact.MapPin, isIconOnly: true, label: "Location", children: event.location }) : null,
3042
+ event.description != null && event.description !== "" ? /* @__PURE__ */ jsxRuntime.jsx(chunkLWB2CTX6_cjs.MetadataListItem, { icon: lucideReact.AlignLeft, isIconOnly: true, label: "Description", children: event.description }) : null,
3043
+ /* @__PURE__ */ jsxRuntime.jsx(chunkLWB2CTX6_cjs.MetadataListItem, { icon: lucideReact.Tag, isIconOnly: true, label: "Category", children: category.label })
3044
+ ] }) }),
3045
+ "data-testid": "schedule-event-popover",
3046
+ footer: /* @__PURE__ */ jsxRuntime.jsx(chunkLTHPJRFK_cjs.LayoutFooter, { label: "Your response", padding: 3, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles4.footerActions, children: /* @__PURE__ */ jsxRuntime.jsxs(
3047
+ chunk6SFMORQF_cjs.ToggleButtonGroup,
3048
+ {
3049
+ label: "Your response",
3050
+ onChange: (value) => {
3051
+ setResponse(value);
3052
+ onRespond?.(event, value);
3053
+ },
3054
+ size: "sm",
3055
+ type: "single",
3056
+ value: response,
3057
+ children: [
3058
+ /* @__PURE__ */ jsxRuntime.jsx(chunk6SFMORQF_cjs.ToggleButton, { label: "Not Going", value: "not-going" }),
3059
+ /* @__PURE__ */ jsxRuntime.jsx(chunk6SFMORQF_cjs.ToggleButton, { label: "Maybe", value: "maybe" }),
3060
+ /* @__PURE__ */ jsxRuntime.jsx(
3061
+ chunk6SFMORQF_cjs.ToggleButton,
3062
+ {
3063
+ "data-testid": "schedule-event-popover-response-going",
3064
+ label: "Going",
3065
+ value: "going"
3066
+ }
3067
+ )
3068
+ ]
3069
+ }
3070
+ ) }) }),
3071
+ header: /* @__PURE__ */ jsxRuntime.jsx(
3072
+ chunkLTHPJRFK_cjs.LayoutHeader,
3073
+ {
3074
+ align: "center",
3075
+ endContent: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3076
+ onEdit != null ? /* @__PURE__ */ jsxRuntime.jsx(
3077
+ chunkWOVSJHY6_cjs.Button,
3078
+ {
3079
+ "data-testid": "schedule-event-popover-edit",
3080
+ icon: lucideReact.Pencil,
3081
+ isIconOnly: true,
3082
+ label: "Edit event",
3083
+ onClick: () => onEdit(event),
3084
+ size: "sm",
3085
+ variant: "ghost"
3086
+ }
3087
+ ) : null,
3088
+ onDelete != null ? /* @__PURE__ */ jsxRuntime.jsx(
3089
+ chunkWOVSJHY6_cjs.Button,
3090
+ {
3091
+ "data-testid": "schedule-event-popover-delete",
3092
+ icon: lucideReact.Trash2,
3093
+ isIconOnly: true,
3094
+ label: "Delete event",
3095
+ onClick: () => onDelete(event),
3096
+ size: "sm",
3097
+ variant: "ghost"
3098
+ }
3099
+ ) : null,
3100
+ /* @__PURE__ */ jsxRuntime.jsx(
3101
+ chunkWOVSJHY6_cjs.Button,
3102
+ {
3103
+ "data-testid": "schedule-event-popover-close",
3104
+ icon: lucideReact.X,
3105
+ isIconOnly: true,
3106
+ label: "Close",
3107
+ onClick: onClose,
3108
+ size: "sm",
3109
+ variant: "ghost"
3110
+ }
3111
+ )
3112
+ ] }),
3113
+ padding: 3,
3114
+ startContent: /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkSPDVNY2Z_cjs.cx(dotClass, styles4.dot) }),
3115
+ title: event.title
3116
+ }
3117
+ ),
3118
+ height: "auto"
3119
+ }
3120
+ );
3121
+ }
3122
+ function createScheduleEventPopoverPlugin(options) {
3123
+ const { renderContent } = options;
3124
+ return {
3125
+ renderEventPopover(event, controls) {
3126
+ const typedEvent = event;
3127
+ if (renderContent != null) {
3128
+ return renderContent({ event: typedEvent, ...controls });
3129
+ }
3130
+ return /* @__PURE__ */ jsxRuntime.jsx(
3131
+ ScheduleEventPopoverContent,
3132
+ {
3133
+ event: typedEvent,
3134
+ onClose: controls.close
3135
+ }
3136
+ );
3137
+ }
3138
+ };
3139
+ }
3140
+ function useScheduleEventPopoverPlugin(options = {}) {
3141
+ const { renderContent } = options;
3142
+ return react.useMemo(
3143
+ () => createScheduleEventPopoverPlugin({ renderContent }),
3144
+ [renderContent]
3145
+ );
3146
+ }
1949
3147
  function SchedulePaginationControls({
1950
3148
  onViewDateChange
1951
3149
  }) {
@@ -1981,7 +3179,7 @@ function SchedulePaginationControls({
1981
3179
  }, [nextDateRange, shiftToRange]);
1982
3180
  return /* @__PURE__ */ jsxRuntime.jsxs(chunkKVJ27734_cjs.ButtonGroup, { label: "Schedule pagination", size: "sm", children: [
1983
3181
  /* @__PURE__ */ jsxRuntime.jsx(
1984
- chunk5XMWGK3O_cjs.Button,
3182
+ chunkWOVSJHY6_cjs.Button,
1985
3183
  {
1986
3184
  icon: lucideReact.ChevronLeft,
1987
3185
  isIconOnly: true,
@@ -1989,9 +3187,9 @@ function SchedulePaginationControls({
1989
3187
  onClick: onPreviousDate
1990
3188
  }
1991
3189
  ),
1992
- /* @__PURE__ */ jsxRuntime.jsx(chunk5XMWGK3O_cjs.Button, { label: "Today", onClick: onToday, size: "sm" }),
3190
+ /* @__PURE__ */ jsxRuntime.jsx(chunkWOVSJHY6_cjs.Button, { label: "Today", onClick: onToday, size: "sm" }),
1993
3191
  /* @__PURE__ */ jsxRuntime.jsx(
1994
- chunk5XMWGK3O_cjs.Button,
3192
+ chunkWOVSJHY6_cjs.Button,
1995
3193
  {
1996
3194
  icon: lucideReact.ChevronRight,
1997
3195
  isIconOnly: true,
@@ -2042,7 +3240,7 @@ function ScheduleViewSelectorControl({
2042
3240
  const { view } = useScheduleContext();
2043
3241
  const currentOption = options.find((option) => option.view === view);
2044
3242
  return /* @__PURE__ */ jsxRuntime.jsx(
2045
- chunkHWD4HDQ5_cjs.DropdownMenu,
3243
+ chunkAC4E3WQA_cjs.DropdownMenu,
2046
3244
  {
2047
3245
  button: {
2048
3246
  isDisabled: onChangeView == null,
@@ -2051,7 +3249,7 @@ function ScheduleViewSelectorControl({
2051
3249
  },
2052
3250
  menuWidth: 160,
2053
3251
  children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
2054
- chunkHWD4HDQ5_cjs.DropdownMenuItem,
3252
+ chunkAC4E3WQA_cjs.DropdownMenuItem,
2055
3253
  {
2056
3254
  endContent: option.view === view ? /* @__PURE__ */ jsxRuntime.jsx(
2057
3255
  chunkJ4PIYOWT_cjs.Icon,
@@ -2282,6 +3480,7 @@ function ScheduleWeeklyView({
2282
3480
  return /* @__PURE__ */ jsxRuntime.jsx(ScheduleFrame, { title, titleLabel: title, children: /* @__PURE__ */ jsxRuntime.jsx(
2283
3481
  TimeGridView,
2284
3482
  {
3483
+ allDayEventLimit: options.allDayEventLimit,
2285
3484
  days,
2286
3485
  hourHeight: options.hourHeight,
2287
3486
  maxHour: options.maxHour,
@@ -2290,6 +3489,7 @@ function ScheduleWeeklyView({
2290
3489
  ) });
2291
3490
  }
2292
3491
  function createScheduleWeeklyView({
3492
+ allDayEventLimit = 3,
2293
3493
  hourHeight = 100,
2294
3494
  maxHour = 24,
2295
3495
  minHour = 0,
@@ -2318,7 +3518,7 @@ function createScheduleWeeklyView({
2318
3518
  label: "Previous week",
2319
3519
  range: getWeekRange(date.addDays(-7))
2320
3520
  }),
2321
- options: { hourHeight, maxHour, minHour, weekStartsOn }
3521
+ options: { allDayEventLimit, hourHeight, maxHour, minHour, weekStartsOn }
2322
3522
  };
2323
3523
  }
2324
3524
  function setStartOfWeek2(date, weekStartsOn) {
@@ -2328,6 +3528,7 @@ function setStartOfWeek2(date, weekStartsOn) {
2328
3528
 
2329
3529
  exports.Schedule = Schedule;
2330
3530
  exports.ScheduleContext = ScheduleContext;
3531
+ exports.ScheduleEventPopoverContent = ScheduleEventPopoverContent;
2331
3532
  exports.createEventFromISO = createEventFromISO;
2332
3533
  exports.createScheduleDayView = createScheduleDayView;
2333
3534
  exports.createScheduleListView = createScheduleListView;
@@ -2335,7 +3536,10 @@ exports.createScheduleMonthlyView = createScheduleMonthlyView;
2335
3536
  exports.createScheduleWeeklyView = createScheduleWeeklyView;
2336
3537
  exports.defaultSchedulePlugins = defaultSchedulePlugins;
2337
3538
  exports.useScheduleContext = useScheduleContext;
3539
+ exports.useScheduleEventMovePlugin = useScheduleEventMovePlugin;
3540
+ exports.useScheduleEventPopoverPlugin = useScheduleEventPopoverPlugin;
3541
+ exports.useScheduleEventResizePlugin = useScheduleEventResizePlugin;
2338
3542
  exports.useSchedulePaginationPlugin = useSchedulePaginationPlugin;
2339
3543
  exports.useScheduleViewSelectorPlugin = useScheduleViewSelectorPlugin;
2340
- //# sourceMappingURL=chunk-UXQSSRBQ.cjs.map
2341
- //# sourceMappingURL=chunk-UXQSSRBQ.cjs.map
3544
+ //# sourceMappingURL=chunk-VCM4MR7N.cjs.map
3545
+ //# sourceMappingURL=chunk-VCM4MR7N.cjs.map