@rubytech/create-maxy-code 0.1.533 → 0.1.535

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 (234) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +3 -1
  3. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +13 -0
  4. package/payload/platform/plugins/docs/references/admin-ui.md +2 -0
  5. package/payload/platform/plugins/email/mcp/dist/__tests__/signature.test.js +40 -1
  6. package/payload/platform/plugins/email/mcp/dist/__tests__/signature.test.js.map +1 -1
  7. package/payload/platform/plugins/email/mcp/dist/lib/compose.d.ts.map +1 -1
  8. package/payload/platform/plugins/email/mcp/dist/lib/compose.js +4 -1
  9. package/payload/platform/plugins/email/mcp/dist/lib/compose.js.map +1 -1
  10. package/payload/platform/plugins/email/mcp/dist/lib/signature.d.ts +27 -0
  11. package/payload/platform/plugins/email/mcp/dist/lib/signature.d.ts.map +1 -1
  12. package/payload/platform/plugins/email/mcp/dist/lib/signature.js +62 -2
  13. package/payload/platform/plugins/email/mcp/dist/lib/signature.js.map +1 -1
  14. package/payload/platform/plugins/memory/skills/preference-audit/SKILL.md +11 -1
  15. package/payload/platform/plugins/whatsapp/PLUGIN.md +10 -2
  16. package/payload/platform/plugins/whatsapp/mcp/dist/index.js +41 -3
  17. package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
  18. package/payload/platform/plugins/whatsapp/skills/manage-whatsapp-config/SKILL.md +17 -1
  19. package/payload/platform/scripts/__tests__/vnc-cdp-liveness.test.sh +14 -12
  20. package/payload/platform/scripts/vnc.sh +24 -19
  21. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  22. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +1 -0
  23. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  24. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  25. package/payload/platform/services/claude-session-manager/dist/http-server.js +35 -1
  26. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  27. package/payload/platform/services/claude-session-manager/dist/index.js +13 -4
  28. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  29. package/payload/platform/services/claude-session-manager/dist/preference-reconciliation-audit.d.ts +1 -1
  30. package/payload/platform/services/claude-session-manager/dist/preference-reconciliation-audit.d.ts.map +1 -1
  31. package/payload/platform/services/claude-session-manager/dist/preference-reconciliation-audit.js +46 -3
  32. package/payload/platform/services/claude-session-manager/dist/preference-reconciliation-audit.js.map +1 -1
  33. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts +9 -0
  34. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
  35. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +7 -0
  36. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
  37. package/payload/platform/services/claude-session-manager/dist/specialist-roster.d.ts +12 -0
  38. package/payload/platform/services/claude-session-manager/dist/specialist-roster.d.ts.map +1 -0
  39. package/payload/platform/services/claude-session-manager/dist/specialist-roster.js +75 -0
  40. package/payload/platform/services/claude-session-manager/dist/specialist-roster.js.map +1 -0
  41. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +5 -0
  42. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
  43. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +10 -2
  44. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
  45. package/payload/server/{chunk-AJC3SQSF.js → chunk-4QCYFTAI.js} +198 -8
  46. package/payload/server/{manager-PLRHVALC.js → manager-ZNHQQCED.js} +1 -1
  47. package/payload/server/public/activity.html +5 -5
  48. package/payload/server/public/agents.html +4 -4
  49. package/payload/server/public/assets/AdminLoginScreens-DxjuTFjL.js +1 -0
  50. package/payload/server/public/assets/AdminLoginScreens-DxjuTFjL.js.br +0 -0
  51. package/payload/server/public/assets/AdminLoginScreens-DxjuTFjL.js.gz +0 -0
  52. package/payload/server/public/assets/AdminShell-B6H3J5C2.js +2 -0
  53. package/payload/server/public/assets/AdminShell-B6H3J5C2.js.br +0 -0
  54. package/payload/server/public/assets/AdminShell-B6H3J5C2.js.gz +0 -0
  55. package/payload/server/public/assets/CdpScreencastSurface-BRSv89v-.js +1 -0
  56. package/payload/server/public/assets/CdpScreencastSurface-BRSv89v-.js.br +0 -0
  57. package/payload/server/public/assets/CdpScreencastSurface-BRSv89v-.js.gz +0 -0
  58. package/payload/server/public/assets/{activity-0IcMRF5a.js → activity-DKeRUjQ9.js} +1 -1
  59. package/payload/server/public/assets/activity-DKeRUjQ9.js.br +0 -0
  60. package/payload/server/public/assets/activity-DKeRUjQ9.js.gz +0 -0
  61. package/payload/server/public/assets/admin-BxRWjeyZ.js +1 -0
  62. package/payload/server/public/assets/admin-BxRWjeyZ.js.br +0 -0
  63. package/payload/server/public/assets/admin-BxRWjeyZ.js.gz +0 -0
  64. package/payload/server/public/assets/{agents-xjw-fJjo.js → agents-CrR_OMe8.js} +1 -1
  65. package/payload/server/public/assets/agents-CrR_OMe8.js.br +0 -0
  66. package/payload/server/public/assets/agents-CrR_OMe8.js.gz +0 -0
  67. package/payload/server/public/assets/{browser-ByWKTnUQ.js → browser-sfwnP1kH.js} +1 -1
  68. package/payload/server/public/assets/browser-sfwnP1kH.js.br +0 -0
  69. package/payload/server/public/assets/browser-sfwnP1kH.js.gz +0 -0
  70. package/payload/server/public/assets/{calendar-DX2tE1B2.js → calendar-ByLH0Q5p.js} +1 -1
  71. package/payload/server/public/assets/calendar-ByLH0Q5p.js.br +0 -0
  72. package/payload/server/public/assets/calendar-ByLH0Q5p.js.gz +0 -0
  73. package/payload/server/public/assets/chat-C3xYZlGo.js +1 -0
  74. package/payload/server/public/assets/chat-C3xYZlGo.js.br +2 -0
  75. package/payload/server/public/assets/chat-C3xYZlGo.js.gz +0 -0
  76. package/payload/server/public/assets/chevron-left-C0HG8MBj.js +1 -0
  77. package/payload/server/public/assets/chevron-right-B49Xpptm.js +1 -0
  78. package/payload/server/public/assets/chevron-right-B49Xpptm.js.br +0 -0
  79. package/payload/server/public/assets/clock-CJq9vvt8.js +1 -0
  80. package/payload/server/public/assets/clock-CJq9vvt8.js.br +0 -0
  81. package/payload/server/public/assets/clock-CJq9vvt8.js.gz +0 -0
  82. package/payload/server/public/assets/data-DmeTKd-P.js +1 -0
  83. package/payload/server/public/assets/data-DmeTKd-P.js.br +0 -0
  84. package/payload/server/public/assets/data-DmeTKd-P.js.gz +0 -0
  85. package/payload/server/public/assets/{file-download-ChX5qAB2.js → file-download-BWe9Muoh.js} +1 -1
  86. package/payload/server/public/assets/file-download-BWe9Muoh.js.br +0 -0
  87. package/payload/server/public/assets/file-download-BWe9Muoh.js.gz +0 -0
  88. package/payload/server/public/assets/{file-text-DziWy8hF.js → file-text-5osg-EVb.js} +1 -1
  89. package/payload/server/public/assets/file-text-5osg-EVb.js.br +0 -0
  90. package/payload/server/public/assets/file-text-5osg-EVb.js.gz +0 -0
  91. package/payload/server/public/assets/{graph-Ci8RmSp3.js → graph-CAUo1OTY.js} +2 -2
  92. package/payload/server/public/assets/graph-CAUo1OTY.js.br +0 -0
  93. package/payload/server/public/assets/graph-CAUo1OTY.js.gz +0 -0
  94. package/payload/server/public/assets/{graph-labels-JkRVzaVL.js → graph-labels-TJ-3ljQo.js} +1 -1
  95. package/payload/server/public/assets/graph-labels-TJ-3ljQo.js.br +0 -0
  96. package/payload/server/public/assets/graph-labels-TJ-3ljQo.js.gz +0 -0
  97. package/payload/server/public/assets/{maximize-2-DnINkTp0.js → maximize-2-S9W3q1O4.js} +1 -1
  98. package/payload/server/public/assets/maximize-2-S9W3q1O4.js.br +0 -0
  99. package/payload/server/public/assets/maximize-2-S9W3q1O4.js.gz +0 -0
  100. package/payload/server/public/assets/operator-CzOJfank.js +1 -0
  101. package/payload/server/public/assets/operator-CzOJfank.js.br +0 -0
  102. package/payload/server/public/assets/operator-CzOJfank.js.gz +0 -0
  103. package/payload/server/public/assets/page-BUFW-PWF.js +32 -0
  104. package/payload/server/public/assets/page-BUFW-PWF.js.br +0 -0
  105. package/payload/server/public/assets/page-BUFW-PWF.js.gz +0 -0
  106. package/payload/server/public/assets/page-jT4queFM.js +1 -0
  107. package/payload/server/public/assets/page-jT4queFM.js.br +0 -0
  108. package/payload/server/public/assets/page-jT4queFM.js.gz +0 -0
  109. package/payload/server/public/assets/public-Cx2ddU9a.js +1 -0
  110. package/payload/server/public/assets/public-Cx2ddU9a.js.br +0 -0
  111. package/payload/server/public/assets/public-Cx2ddU9a.js.gz +0 -0
  112. package/payload/server/public/assets/{rotate-ccw-CfaIgRAI.js → rotate-ccw-C2qSSBFA.js} +1 -1
  113. package/payload/server/public/assets/rotate-ccw-C2qSSBFA.js.br +0 -0
  114. package/payload/server/public/assets/rotate-ccw-C2qSSBFA.js.gz +0 -0
  115. package/payload/server/public/assets/{routines-BIlcD8sn.js → routines-80uEwjng.js} +1 -1
  116. package/payload/server/public/assets/routines-80uEwjng.js.br +0 -0
  117. package/payload/server/public/assets/routines-80uEwjng.js.gz +0 -0
  118. package/payload/server/public/assets/{skills-DGID2WqF.js → skills-CmsYXVd3.js} +1 -1
  119. package/payload/server/public/assets/skills-CmsYXVd3.js.br +0 -0
  120. package/payload/server/public/assets/skills-CmsYXVd3.js.gz +0 -0
  121. package/payload/server/public/assets/tasks-CFfvn-KE.js +3 -0
  122. package/payload/server/public/assets/tasks-CFfvn-KE.js.br +0 -0
  123. package/payload/server/public/assets/tasks-CFfvn-KE.js.gz +0 -0
  124. package/payload/server/public/assets/{time-entry-format-DNl35lg9.js → time-entry-format-BD99oR05.js} +1 -1
  125. package/payload/server/public/assets/time-entry-format-BD99oR05.js.br +0 -0
  126. package/payload/server/public/assets/time-entry-format-BD99oR05.js.gz +0 -0
  127. package/payload/server/public/assets/{triangle-alert-DI_VASJO.js → triangle-alert-CuRAK3jk.js} +1 -1
  128. package/payload/server/public/assets/triangle-alert-CuRAK3jk.js.br +0 -0
  129. package/payload/server/public/assets/triangle-alert-CuRAK3jk.js.gz +0 -0
  130. package/payload/server/public/assets/{useCopyFeedback-Bu0ZQZQM.js → useCopyFeedback-BGzzIsSD.js} +1 -1
  131. package/payload/server/public/assets/useCopyFeedback-BGzzIsSD.js.br +0 -0
  132. package/payload/server/public/assets/useCopyFeedback-BGzzIsSD.js.gz +0 -0
  133. package/payload/server/public/assets/{useSubAccountSwitcher-CZBZ3iV8.css → useSubAccountSwitcher-BDQ8Wsdt.css} +1 -1
  134. package/payload/server/public/assets/useSubAccountSwitcher-BDQ8Wsdt.css.br +0 -0
  135. package/payload/server/public/assets/{useSubAccountSwitcher-CZBZ3iV8.css.gz → useSubAccountSwitcher-BDQ8Wsdt.css.gz} +0 -0
  136. package/payload/server/public/assets/useSubAccountSwitcher-D1VtIEp2.js +14 -0
  137. package/payload/server/public/assets/useSubAccountSwitcher-D1VtIEp2.js.br +0 -0
  138. package/payload/server/public/assets/useSubAccountSwitcher-D1VtIEp2.js.gz +0 -0
  139. package/payload/server/public/assets/useVoiceRecorder-fpwWw2VW.js +2 -0
  140. package/payload/server/public/assets/useVoiceRecorder-fpwWw2VW.js.br +0 -0
  141. package/payload/server/public/assets/useVoiceRecorder-fpwWw2VW.js.gz +0 -0
  142. package/payload/server/public/assets/{wrench-p4gW_ImW.js → wrench-DxSsCrue.js} +1 -1
  143. package/payload/server/public/assets/wrench-DxSsCrue.js.br +2 -0
  144. package/payload/server/public/assets/wrench-DxSsCrue.js.gz +0 -0
  145. package/payload/server/public/browser.html +5 -5
  146. package/payload/server/public/calendar.html +7 -7
  147. package/payload/server/public/chat.html +13 -13
  148. package/payload/server/public/data.html +12 -12
  149. package/payload/server/public/graph.html +9 -9
  150. package/payload/server/public/index.html +16 -16
  151. package/payload/server/public/operator.html +15 -15
  152. package/payload/server/public/public.html +13 -13
  153. package/payload/server/public/routines.html +7 -7
  154. package/payload/server/public/skills.html +5 -5
  155. package/payload/server/public/tasks.html +6 -6
  156. package/payload/server/server.js +460 -28
  157. package/payload/server/public/assets/AdminLoginScreens-CGRty7xT.js +0 -1
  158. package/payload/server/public/assets/AdminLoginScreens-CGRty7xT.js.br +0 -0
  159. package/payload/server/public/assets/AdminLoginScreens-CGRty7xT.js.gz +0 -0
  160. package/payload/server/public/assets/AdminShell-BQy9Ob22.js +0 -2
  161. package/payload/server/public/assets/AdminShell-BQy9Ob22.js.br +0 -0
  162. package/payload/server/public/assets/AdminShell-BQy9Ob22.js.gz +0 -0
  163. package/payload/server/public/assets/CdpScreencastSurface-BrDZji8F.js +0 -1
  164. package/payload/server/public/assets/CdpScreencastSurface-BrDZji8F.js.br +0 -0
  165. package/payload/server/public/assets/CdpScreencastSurface-BrDZji8F.js.gz +0 -0
  166. package/payload/server/public/assets/activity-0IcMRF5a.js.br +0 -0
  167. package/payload/server/public/assets/activity-0IcMRF5a.js.gz +0 -0
  168. package/payload/server/public/assets/admin-CKy-bmrs.js +0 -1
  169. package/payload/server/public/assets/admin-CKy-bmrs.js.br +0 -0
  170. package/payload/server/public/assets/admin-CKy-bmrs.js.gz +0 -0
  171. package/payload/server/public/assets/agents-xjw-fJjo.js.br +0 -0
  172. package/payload/server/public/assets/agents-xjw-fJjo.js.gz +0 -0
  173. package/payload/server/public/assets/browser-ByWKTnUQ.js.br +0 -0
  174. package/payload/server/public/assets/browser-ByWKTnUQ.js.gz +0 -0
  175. package/payload/server/public/assets/calendar-DX2tE1B2.js.br +0 -0
  176. package/payload/server/public/assets/calendar-DX2tE1B2.js.gz +0 -0
  177. package/payload/server/public/assets/chat-DkNDthRg.js +0 -1
  178. package/payload/server/public/assets/chat-DkNDthRg.js.br +0 -0
  179. package/payload/server/public/assets/chat-DkNDthRg.js.gz +0 -0
  180. package/payload/server/public/assets/chevron-left-CPwk14nY.js +0 -1
  181. package/payload/server/public/assets/chevron-right-Bz6INVTF.js +0 -1
  182. package/payload/server/public/assets/chevron-right-Bz6INVTF.js.br +0 -0
  183. package/payload/server/public/assets/clock-3YLNejcB.js +0 -1
  184. package/payload/server/public/assets/clock-3YLNejcB.js.br +0 -0
  185. package/payload/server/public/assets/clock-3YLNejcB.js.gz +0 -0
  186. package/payload/server/public/assets/data-DiDeaOUN.js +0 -1
  187. package/payload/server/public/assets/data-DiDeaOUN.js.br +0 -0
  188. package/payload/server/public/assets/data-DiDeaOUN.js.gz +0 -0
  189. package/payload/server/public/assets/file-download-ChX5qAB2.js.br +0 -0
  190. package/payload/server/public/assets/file-download-ChX5qAB2.js.gz +0 -0
  191. package/payload/server/public/assets/file-text-DziWy8hF.js.br +0 -0
  192. package/payload/server/public/assets/file-text-DziWy8hF.js.gz +0 -0
  193. package/payload/server/public/assets/graph-Ci8RmSp3.js.br +0 -0
  194. package/payload/server/public/assets/graph-Ci8RmSp3.js.gz +0 -0
  195. package/payload/server/public/assets/graph-labels-JkRVzaVL.js.br +0 -0
  196. package/payload/server/public/assets/graph-labels-JkRVzaVL.js.gz +0 -0
  197. package/payload/server/public/assets/maximize-2-DnINkTp0.js.br +0 -0
  198. package/payload/server/public/assets/maximize-2-DnINkTp0.js.gz +0 -0
  199. package/payload/server/public/assets/operator-CFOJBXCH.js +0 -1
  200. package/payload/server/public/assets/operator-CFOJBXCH.js.br +0 -0
  201. package/payload/server/public/assets/operator-CFOJBXCH.js.gz +0 -0
  202. package/payload/server/public/assets/page-BGv8bLm5.js +0 -32
  203. package/payload/server/public/assets/page-BGv8bLm5.js.br +0 -0
  204. package/payload/server/public/assets/page-BGv8bLm5.js.gz +0 -0
  205. package/payload/server/public/assets/page-DXTCBZRa.js +0 -1
  206. package/payload/server/public/assets/page-DXTCBZRa.js.br +0 -0
  207. package/payload/server/public/assets/page-DXTCBZRa.js.gz +0 -0
  208. package/payload/server/public/assets/public-yBY2wTJN.js +0 -1
  209. package/payload/server/public/assets/public-yBY2wTJN.js.br +0 -0
  210. package/payload/server/public/assets/public-yBY2wTJN.js.gz +0 -0
  211. package/payload/server/public/assets/rotate-ccw-CfaIgRAI.js.br +0 -0
  212. package/payload/server/public/assets/rotate-ccw-CfaIgRAI.js.gz +0 -0
  213. package/payload/server/public/assets/routines-BIlcD8sn.js.br +0 -0
  214. package/payload/server/public/assets/routines-BIlcD8sn.js.gz +0 -0
  215. package/payload/server/public/assets/skills-DGID2WqF.js.br +0 -0
  216. package/payload/server/public/assets/skills-DGID2WqF.js.gz +0 -0
  217. package/payload/server/public/assets/tasks-BukjwR7A.js +0 -3
  218. package/payload/server/public/assets/tasks-BukjwR7A.js.br +0 -0
  219. package/payload/server/public/assets/tasks-BukjwR7A.js.gz +0 -0
  220. package/payload/server/public/assets/time-entry-format-DNl35lg9.js.br +0 -0
  221. package/payload/server/public/assets/time-entry-format-DNl35lg9.js.gz +0 -0
  222. package/payload/server/public/assets/triangle-alert-DI_VASJO.js.br +0 -0
  223. package/payload/server/public/assets/triangle-alert-DI_VASJO.js.gz +0 -0
  224. package/payload/server/public/assets/useCopyFeedback-Bu0ZQZQM.js.br +0 -0
  225. package/payload/server/public/assets/useCopyFeedback-Bu0ZQZQM.js.gz +0 -0
  226. package/payload/server/public/assets/useSubAccountSwitcher-B6Ns2Z43.js +0 -14
  227. package/payload/server/public/assets/useSubAccountSwitcher-B6Ns2Z43.js.br +0 -0
  228. package/payload/server/public/assets/useSubAccountSwitcher-B6Ns2Z43.js.gz +0 -0
  229. package/payload/server/public/assets/useSubAccountSwitcher-CZBZ3iV8.css.br +0 -0
  230. package/payload/server/public/assets/useVoiceRecorder-CbVwXEjY.js +0 -2
  231. package/payload/server/public/assets/useVoiceRecorder-CbVwXEjY.js.br +0 -0
  232. package/payload/server/public/assets/useVoiceRecorder-CbVwXEjY.js.gz +0 -0
  233. package/payload/server/public/assets/wrench-p4gW_ImW.js.br +0 -0
  234. package/payload/server/public/assets/wrench-p4gW_ImW.js.gz +0 -0
@@ -1 +1 @@
1
- import{o as e}from"./chunk-CltuBf4Z.js";import{G as t,H as n,J as r,K as i,L as a,M as o,O as s,T as c,_ as l,b as u,g as d,q as f,y as p}from"./useSubAccountSwitcher-B6Ns2Z43.js";import{O as m,b as h,t as g}from"./AdminShell-BQy9Ob22.js";import{t as _}from"./chevron-left-CPwk14nY.js";import{t as v}from"./chevron-right-Bz6INVTF.js";import{t as y}from"./clock-3YLNejcB.js";var b=a(`calendar`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}]]),x=a(`map-pin`,[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]),S=a(`sticky-note`,[[`path`,{d:`M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z`,key:`1dfntj`}],[`path`,{d:`M15 3v5a1 1 0 0 0 1 1h5`,key:`6s6qgf`}]]),C=a(`user-plus`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`19`,x2:`19`,y1:`8`,y2:`14`,key:`1bvyxn`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]),ee=a(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),w=i(),T=e(r(),1);function E(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function D(e,t){let n=new Date(e);return n.setDate(n.getDate()+t),n}function O(e){let t=E(e),n=t.getDay();return D(t,n===0?-6:1-n)}function k(e){let t=O(e);return Array.from({length:7},(e,n)=>D(t,n))}function A(e){let t=O(new Date(e.getFullYear(),e.getMonth(),1));return Array.from({length:42},(e,n)=>D(t,n))}function j(){return Array.from({length:24},(e,t)=>t)}function M(e){let t=e.getFullYear();return Array.from({length:12},(e,n)=>new Date(t,n,1))}function N(e,t){switch(e){case`schedule`:{let e=E(t);return{from:e,to:D(e,30)}}case`day`:{let e=E(t);return{from:e,to:D(e,1)}}case`week`:{let e=O(t);return{from:e,to:D(e,7)}}case`month`:{let e=O(new Date(t.getFullYear(),t.getMonth(),1));return{from:e,to:D(e,42)}}case`year`:return{from:new Date(t.getFullYear(),0,1),to:new Date(t.getFullYear()+1,0,1)}}}function P(e,t,n){switch(e){case`schedule`:return D(t,n*30);case`day`:return D(t,n);case`week`:return D(t,n*7);case`month`:return new Date(t.getFullYear(),t.getMonth()+n,1);case`year`:return new Date(t.getFullYear()+n,t.getMonth(),1)}}function F(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}var te=[`schedule`,`day`,`week`,`month`,`year`],I=`schedule`;function L(e){return e.toLocaleDateString([],{day:`numeric`,month:`short`})}function R(e){return e.toLocaleDateString([],{day:`numeric`,month:`short`,year:`numeric`})}function z(e,t){switch(e){case`schedule`:{let{from:e,to:n}=N(`schedule`,t);return`${L(e)} – ${R(new Date(n.getTime()-1))}`}case`day`:return t.toLocaleDateString([],{weekday:`long`,day:`numeric`,month:`long`,year:`numeric`});case`week`:{let{from:e,to:n}=N(`week`,t);return`${L(e)} – ${R(new Date(n.getTime()-1))}`}case`month`:return t.toLocaleDateString([],{month:`long`,year:`numeric`});case`year`:return String(t.getFullYear())}}function B(e,t){return{role:`button`,tabIndex:0,onClick:()=>t(e),onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),t(e))}}}var V=n(),ne={meeting:`Meeting`,event:`Event`,task:`Task`};function H(e){return ne[e.kind??`meeting`]}function U(e){return e.toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`})}function W(e){if(e.isAllDay)return`All day`;let t=U(new Date(e.startsAt));return e.endsAt?`${t} – ${U(new Date(e.endsAt))}`:t}function re(e){let t=new Date(e.startsAt);if(e.isAllDay)return t.toLocaleDateString([],{weekday:`long`,day:`numeric`,month:`long`,year:`numeric`});let n=t.toLocaleDateString([],{weekday:`long`,day:`numeric`,month:`long`,year:`numeric`}),r=U(t);return e.endsAt?`${n} · ${r} – ${U(new Date(e.endsAt))}`:`${n} · ${r}`}function ie(e,t){return e.email??`${e.name??`unknown`}-${t}`}function G(e){return e.map(e=>e.name||e.email||`Unknown`).join(`, `)}function ae({a:e}){let t=e.name||e.email||`Unknown`,n=e.name&&e.email?e.email:null;return(0,V.jsxs)(`span`,{className:`cal-attendee-lines`,children:[(0,V.jsx)(`span`,{className:`cal-attendee-name`,children:t}),n&&(0,V.jsx)(`span`,{className:`cal-attendee-email`,children:n})]})}function oe(e,t,n){let r=E(t),i=[];for(let t=0;t<n;t++){let n=D(r,t),a=e.filter(e=>F(new Date(e.startsAt),n)).sort((e,t)=>e.startsAt.localeCompare(t.startsAt));a.length>0&&i.push({day:n,meetings:a})}return i}function se(e,t){let n=e.toLocaleDateString([],{weekday:`long`,day:`numeric`,month:`long`});return F(e,t)?`${n} · today`:n}function K({anchor:e,meetings:t,onSelect:n}){let{from:r}=N(`schedule`,e),i=oe(t,r,30),a=new Date;return i.length===0?(0,V.jsx)(`div`,{className:`cal-schedule cal-schedule-empty`,children:`No events in this period.`}):(0,V.jsx)(`div`,{className:`cal-schedule`,children:i.map(e=>(0,V.jsxs)(`section`,{className:`cal-sched-group`,children:[(0,V.jsx)(`h3`,{className:`cal-sched-day${F(e.day,a)?` cal-sched-day-today`:``}`,children:se(e.day,a)}),e.meetings.map(e=>{let t=[e.location,G(e.attendees)||null,H(e)].filter(Boolean);return(0,V.jsxs)(`div`,{className:`cal-sched-row`,"data-meeting-id":e.meetingId,...B(e,n),children:[(0,V.jsx)(`span`,{className:`cal-sched-time`,children:W(e)}),(0,V.jsxs)(`span`,{className:`cal-sched-detail`,children:[(0,V.jsx)(`span`,{className:`cal-sched-title`,children:e.title??`Untitled`}),(0,V.jsx)(`span`,{className:`cal-sched-meta`,children:t.join(` · `)})]})]},e.meetingId)})]},e.day.toISOString()))})}var q=f(),J=8,ce=240,le=120;function ue(e,t,n,r){return{x:e.right+J+ce<=t?e.right+J:Math.max(J,e.left-J-ce),y:e.top+r<=n?e.top:Math.max(J,n-r-J)}}function de({meetings:e,pos:t}){return typeof document>`u`||e.length===0?null:(0,q.createPortal)((0,V.jsx)(`div`,{className:`cal-hovercard`,role:`tooltip`,style:{left:`${t.x}px`,top:`${t.y}px`},children:e.map(e=>{let t=[e.location,G(e.attendees)||null].filter(Boolean);return(0,V.jsxs)(`div`,{className:`cal-hovercard-item`,children:[(0,V.jsx)(`div`,{className:`cal-hovercard-title`,children:e.title??`Untitled`}),(0,V.jsx)(`div`,{className:`cal-hovercard-time`,children:W(e)}),t.length>0&&(0,V.jsx)(`div`,{className:`cal-hovercard-meta`,children:t.join(` · `)}),(0,V.jsx)(`div`,{className:`cal-hovercard-kind`,children:H(e)})]},e.meetingId)})}),document.body)}function Y(){let[e,t]=(0,T.useState)(null),n=(0,T.useCallback)((e,n)=>{e.length!==0&&t({meetings:e,pos:ue(n.getBoundingClientRect(),window.innerWidth,window.innerHeight,le)})},[]),r=(0,T.useCallback)(()=>t(null),[]);return(0,T.useEffect)(()=>{if(!e)return;let n=e=>{e.key===`Escape`&&t(null)};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e]),{hoverProps:(0,T.useCallback)(e=>({onMouseEnter:t=>n(e,t.currentTarget),onMouseLeave:r,onFocus:t=>n(e,t.currentTarget),onBlur:r}),[n,r]),card:e?(0,V.jsx)(de,{meetings:e.meetings,pos:e.pos}):null}}var fe=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],X=3;function pe({anchor:e,meetings:t,onSelect:n,onPickDay:r}){let i=A(e),a=e.getMonth(),o=new Date,{hoverProps:s,card:c}=Y();return(0,V.jsxs)(`div`,{className:`cal-month`,children:[(0,V.jsx)(`div`,{className:`cal-weekday-row`,children:fe.map(e=>(0,V.jsx)(`div`,{className:`cal-weekday`,children:e},e))}),(0,V.jsx)(`div`,{className:`cal-month-grid`,children:i.map(e=>{let i=t.filter(t=>F(new Date(t.startsAt),e)).sort((e,t)=>e.startsAt.localeCompare(t.startsAt)),c=e.getMonth()!==a,l=F(e,o),u=i.length-X;return(0,V.jsxs)(`div`,{className:`cal-cell${c?` cal-cell-out`:``}${l?` cal-cell-today`:``}`,children:[(0,V.jsx)(`div`,{className:`cal-cell-num`,children:e.getDate()}),i.slice(0,X).map(e=>(0,V.jsx)(`div`,{className:`cal-chip`,"data-meeting-id":e.meetingId,...B(e,n),...s([e]),children:e.title??`Untitled`},e.meetingId)),u>0&&(0,V.jsxs)(`button`,{type:`button`,className:`cal-more`,"data-hidden-count":u,onClick:()=>r(e),...s(i.slice(X)),children:[`+`,u,` more`]})]},e.toISOString())})}),c]})}var Z=1440,me=1.8;function he(e){return e>=32}function ge(e){return e.getHours()*60+e.getMinutes()}function _e({day:e,meetings:t,hourHeight:n,onSelect:r,hoverProps:i}){let a=n*24,o=t.filter(t=>!t.isAllDay&&F(new Date(t.startsAt),e));return(0,V.jsx)(`div`,{className:`cal-day-col`,children:(0,V.jsxs)(`div`,{className:`cal-hours`,style:{height:`${a}px`},children:[Array.from({length:24},(e,t)=>(0,V.jsx)(`div`,{className:`cal-hour-line`,style:{top:`${t*n}px`}},t)),o.map(t=>{let n=new Date(t.startsAt),o=t.endsAt?new Date(t.endsAt):new Date(n.getTime()+30*6e4),s=ge(n),c=F(o,e)?ge(o):Z,l=s/Z*100,u=Math.max((c-s)/Z*100,me),d=u/100*a;return(0,V.jsxs)(`div`,{className:`cal-event`,style:{top:`${l}%`,height:`${u}%`},"data-meeting-id":t.meetingId,"data-duration-min":c-s,...B(t,r),...i([t]),children:[(0,V.jsx)(`span`,{className:`cal-event-title`,children:t.title??`Untitled`}),he(d)&&(0,V.jsx)(`span`,{className:`cal-event-time`,children:W(t)})]},t.meetingId)})]})})}var ve=44;function ye(e){let t=new Date;return t.setHours(e,0,0,0),t.toLocaleTimeString([],{hour:`numeric`})}function be({anchor:e,meetings:t,onSelect:n}){let r=k(e),i=new Date,{hoverProps:a,card:o}=Y();return(0,V.jsxs)(`div`,{className:`cal-timed`,children:[(0,V.jsxs)(`div`,{className:`cal-day-headrow`,children:[(0,V.jsx)(`div`,{className:`cal-timed-gutter`}),r.map(e=>(0,V.jsxs)(`div`,{className:`cal-day-head${F(e,i)?` cal-day-head-today`:``}`,children:[(0,V.jsx)(`span`,{className:`cal-day-head-name`,children:e.toLocaleDateString([],{weekday:`short`})}),(0,V.jsx)(`span`,{className:`cal-day-head-num`,children:e.getDate()})]},e.toISOString()))]}),(0,V.jsxs)(`div`,{className:`cal-allday-band`,children:[(0,V.jsx)(`div`,{className:`cal-timed-gutter`,children:`All-day`}),r.map(e=>(0,V.jsx)(`div`,{className:`cal-allday-cell`,children:t.filter(t=>t.isAllDay&&F(new Date(t.startsAt),e)).map(e=>(0,V.jsx)(`div`,{className:`cal-allday-chip`,"data-meeting-id":e.meetingId,...B(e,n),...a([e]),children:e.title??`Untitled`},e.meetingId))},e.toISOString()))]}),(0,V.jsxs)(`div`,{className:`cal-timed-cols`,children:[(0,V.jsx)(`div`,{className:`cal-timed-gutter`,children:j().map(e=>(0,V.jsx)(`div`,{className:`cal-hour-label`,style:{height:`${ve}px`},children:e===0?``:ye(e)},e))}),r.map(e=>(0,V.jsx)(_e,{day:e,meetings:t,hourHeight:ve,onSelect:n,hoverProps:a},e.toISOString()))]}),o]})}var xe=52;function Se(e){let t=new Date;return t.setHours(e,0,0,0),t.toLocaleTimeString([],{hour:`numeric`})}function Ce({anchor:e,meetings:t,onSelect:n}){let r=t.filter(t=>t.isAllDay&&F(new Date(t.startsAt),e)),{hoverProps:i,card:a}=Y();return(0,V.jsxs)(`div`,{className:`cal-timed cal-timed-single`,children:[(0,V.jsxs)(`div`,{className:`cal-allday-band`,children:[(0,V.jsx)(`div`,{className:`cal-timed-gutter`,children:`All-day`}),(0,V.jsx)(`div`,{className:`cal-allday-cell`,children:r.map(e=>(0,V.jsx)(`div`,{className:`cal-allday-chip`,"data-meeting-id":e.meetingId,...B(e,n),...i([e]),children:e.title??`Untitled`},e.meetingId))})]}),(0,V.jsxs)(`div`,{className:`cal-timed-cols`,children:[(0,V.jsx)(`div`,{className:`cal-timed-gutter`,children:j().map(e=>(0,V.jsx)(`div`,{className:`cal-hour-label`,style:{height:`${xe}px`},children:e===0?``:Se(e)},e))}),(0,V.jsx)(_e,{day:e,meetings:t,hourHeight:xe,onSelect:n,hoverProps:i})]}),a]})}var we=[`M`,`T`,`W`,`T`,`F`,`S`,`S`];function Te(e){return`${e.getFullYear()}-${e.getMonth()}-${e.getDate()}`}function Ee({anchor:e,meetings:t,onPickMonth:n}){let r=new Date,{hoverProps:i,card:a}=Y(),o=new Map;for(let e of t){let t=Te(new Date(e.startsAt)),n=o.get(t);n?n.push(e):o.set(t,[e])}return(0,V.jsxs)(`div`,{className:`cal-year`,children:[(0,V.jsx)(`div`,{className:`cal-year-grid`,children:M(e).map(e=>{let t=A(e),a=e.getMonth();return(0,V.jsxs)(`button`,{type:`button`,className:`cal-mini`,onClick:()=>n(e),title:e.toLocaleDateString([],{month:`long`,year:`numeric`}),children:[(0,V.jsx)(`div`,{className:`cal-mini-title`,children:e.toLocaleDateString([],{month:`long`})}),(0,V.jsx)(`div`,{className:`cal-mini-weekrow`,children:we.map((e,t)=>(0,V.jsx)(`span`,{className:`cal-mini-weekday`,children:e},t))}),(0,V.jsx)(`div`,{className:`cal-mini-grid`,children:t.map(e=>{let t=e.getMonth()!==a,n=F(e,r),s=Te(e),c=t?[]:o.get(s)??[];return(0,V.jsxs)(`span`,{"data-testid":t?void 0:`cal-mini-day-${s}`,className:`cal-mini-day${t?` cal-mini-day-out`:``}${n?` cal-mini-day-today`:``}`,...c.length>0?i(c):{},children:[e.getDate(),c.length>0&&(0,V.jsx)(`span`,{className:`cal-mini-count`,"data-testid":`cal-mini-count-${s}`,children:c.length})]},e.toISOString())})})]},a)})}),a]})}function De(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}T${n(t.getHours())}:${n(t.getMinutes())}`}function Oe(e){return new Date(e).toISOString()}function Q(e){return Math.floor(new Date(e).getTime()/6e4)}function ke(e){if(!e)return null;let t=e.match(/filename="([^"]+)"/);return t?t[1]:null}function Ae({meeting:e,adminFetch:t,onClose:n,onSaved:r,onDeleted:i}){let a=e.kind===`meeting`,[l,d]=(0,T.useState)(!1),[f,m]=(0,T.useState)(!1),[h,g]=(0,T.useState)(!1),[_,v]=(0,T.useState)(!1),[w,E]=(0,T.useState)(null),[D,O]=(0,T.useState)(e),[k,A]=(0,T.useState)(e.title??``),[j,M]=(0,T.useState)(De(e.startsAt)),[N,P]=(0,T.useState)(e.endsAt?De(e.endsAt):``),[F,te]=(0,T.useState)(e.location??``),[I,L]=(0,T.useState)(e.privateNote??``),[R,z]=(0,T.useState)(``),[B,H]=(0,T.useState)(``);(0,T.useEffect)(()=>{let e=e=>{e.key===`Escape`&&!_&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[_,n]);let U=(0,T.useCallback)(()=>{let e={},t=k.trim();t!==(D.title??``)&&(e.title=t);let n=Oe(j);Q(n)!==Q(D.startsAt)&&(e.startsAt=n);let r=N?Oe(N):null;(r===null?D.endsAt!==null:D.endsAt===null||Q(r)!==Q(D.endsAt))&&(e.endsAt=r);let i=F.trim()||null;i!==(D.location??null)&&(e.location=i);let a=I.trim()||null;return a!==(D.privateNote??null)&&(e.privateNote=a),e},[k,j,N,F,I,D]),W=(0,T.useCallback)(async()=>{let n=U();if(Object.keys(n).length===0){d(!1);return}v(!0),E(null);try{let i=await t(`/api/admin/calendar/meetings/${encodeURIComponent(e.meetingId)}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(n)});if(!i.ok)throw Error(`HTTP ${i.status}`);let a=await i.json();O(a.meeting),r(a.meeting),d(!1)}catch(e){E(e instanceof Error?e.message:`Save failed`)}finally{v(!1)}},[t,U,e.meetingId,r]),G=(0,T.useCallback)(async()=>{let n=R.trim(),i=B.trim();if(!(!n&&!i)){v(!0),E(null);try{let a=await t(`/api/admin/calendar/meetings/${encodeURIComponent(e.meetingId)}/attendees`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({name:n||void 0,email:i||void 0})});if(!a.ok)throw Error(`HTTP ${a.status}`);let o=await a.json();O(o.meeting),r(o.meeting),z(``),H(``)}catch(e){E(e instanceof Error?e.message:`Add failed`)}finally{v(!1)}}},[t,R,B,e.meetingId,r]),oe=(0,T.useCallback)(async n=>{let i=n.email?{email:n.email}:{name:n.name};v(!0),E(null);try{let n=await t(`/api/admin/calendar/meetings/${encodeURIComponent(e.meetingId)}/attendees`,{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify(i)});if(!n.ok)throw Error(`HTTP ${n.status}`);let a=await n.json();O(a.meeting),r(a.meeting)}catch(e){E(e instanceof Error?e.message:`Remove failed`)}finally{v(!1)}},[t,e.meetingId,r]),se=(0,T.useCallback)(async()=>{v(!0),E(null);try{let n=await t(`/api/admin/calendar/meetings/${encodeURIComponent(e.meetingId)}`,{method:`DELETE`});if(!n.ok)throw Error(`HTTP ${n.status}`);i(e.meetingId)}catch(e){E(e instanceof Error?e.message:`Delete failed`),v(!1)}},[t,e.meetingId,i]),K=(0,T.useCallback)(async n=>{g(!1),v(!0),E(null);try{let r=await t(`/api/admin/calendar/meetings/${encodeURIComponent(e.meetingId)}/ics?attendees=${n?`1`:`0`}`);if(!r.ok)throw Error(`HTTP ${r.status}`);let i=await r.blob(),a=ke(r.headers.get(`content-disposition`))??`meeting.ics`,o=URL.createObjectURL(i),s=document.createElement(`a`);s.href=o,s.download=a,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(o)}catch(e){E(e instanceof Error?e.message:`Download failed`)}finally{v(!1)}},[t,e.meetingId]),q=ne[e.kind??`meeting`],J=R.trim().length>0||B.trim().length>0;return(0,V.jsx)(`div`,{className:`cal-modal-overlay`,onClick:()=>{_||n()},children:(0,V.jsxs)(`div`,{className:`cal-modal cal-modal-wide`,role:`dialog`,"aria-modal":`true`,"aria-label":l?`Edit meeting`:`Meeting detail`,onClick:e=>e.stopPropagation(),children:[(0,V.jsxs)(`div`,{className:`cal-modal-header`,children:[(0,V.jsx)(`span`,{className:`cal-modal-kind`,children:q}),(0,V.jsx)(`button`,{type:`button`,className:`cal-modal-close`,onClick:n,"aria-label":`Close`,autoFocus:!0,disabled:_,children:(0,V.jsx)(p,{size:16})})]}),!l&&(0,V.jsxs)(`div`,{className:`cal-modal-body`,children:[(0,V.jsx)(`div`,{className:`cal-modal-title`,children:D.title??`Untitled`}),(0,V.jsxs)(`div`,{className:`cal-modal-row`,children:[(0,V.jsx)(y,{size:14}),(0,V.jsx)(`span`,{children:re(D)})]}),D.location&&(0,V.jsxs)(`div`,{className:`cal-modal-row`,children:[(0,V.jsx)(x,{size:14}),(0,V.jsx)(`span`,{children:D.location})]}),D.attendees.length>0&&(0,V.jsxs)(`div`,{className:`cal-modal-row cal-modal-row-top`,children:[(0,V.jsx)(ee,{size:14}),(0,V.jsx)(`div`,{className:`cal-modal-attendees`,children:D.attendees.map((e,t)=>(0,V.jsx)(`div`,{className:`cal-attendee-row`,children:(0,V.jsx)(ae,{a:e})},ie(e,t)))})]}),D.privateNote&&(0,V.jsxs)(`div`,{className:`cal-modal-row cal-modal-row-top`,children:[(0,V.jsx)(S,{size:14}),(0,V.jsx)(`span`,{className:`cal-modal-note`,children:D.privateNote})]}),(0,V.jsxs)(`div`,{className:`cal-modal-row cal-modal-meta`,children:[(0,V.jsx)(b,{size:14}),(0,V.jsx)(`span`,{children:q})]})]}),l&&(0,V.jsxs)(`div`,{className:`cal-modal-body`,children:[(0,V.jsxs)(`label`,{className:`cal-modal-field`,children:[(0,V.jsx)(`span`,{children:`Title`}),(0,V.jsx)(`input`,{type:`text`,value:k,onChange:e=>A(e.target.value),disabled:_})]}),(0,V.jsxs)(`label`,{className:`cal-modal-field`,children:[(0,V.jsx)(`span`,{children:`Start`}),(0,V.jsx)(`input`,{type:`datetime-local`,value:j,onChange:e=>M(e.target.value),disabled:_})]}),(0,V.jsxs)(`label`,{className:`cal-modal-field`,children:[(0,V.jsx)(`span`,{children:`End`}),(0,V.jsx)(`input`,{type:`datetime-local`,value:N,onChange:e=>P(e.target.value),disabled:_})]}),(0,V.jsxs)(`label`,{className:`cal-modal-field`,children:[(0,V.jsx)(`span`,{children:`Location`}),(0,V.jsx)(`input`,{type:`text`,value:F,onChange:e=>te(e.target.value),disabled:_})]}),(0,V.jsxs)(`div`,{className:`cal-modal-field`,children:[(0,V.jsx)(`span`,{children:`Attendees`}),(0,V.jsxs)(`div`,{className:`cal-modal-attendees cal-modal-attendees-edit`,children:[D.attendees.length===0&&(0,V.jsx)(`div`,{className:`cal-attendee-empty`,children:`No attendees yet.`}),D.attendees.map((e,t)=>(0,V.jsxs)(`div`,{className:`cal-attendee-row cal-attendee-row-edit`,children:[(0,V.jsx)(ae,{a:e}),(0,V.jsx)(`button`,{type:`button`,className:`cal-attendee-remove`,onClick:()=>oe(e),disabled:_,"aria-label":`Remove ${e.name||e.email||`attendee`}`,children:(0,V.jsx)(p,{size:13})})]},ie(e,t)))]}),(0,V.jsxs)(`div`,{className:`cal-attendee-add`,children:[(0,V.jsx)(`input`,{type:`text`,placeholder:`Name`,value:R,onChange:e=>z(e.target.value),disabled:_,"aria-label":`Attendee name`}),(0,V.jsx)(`input`,{type:`email`,placeholder:`Email`,value:B,onChange:e=>H(e.target.value),disabled:_,"aria-label":`Attendee email`}),(0,V.jsx)(`button`,{type:`button`,className:`cal-modal-btn cal-attendee-add-btn`,onClick:G,disabled:_||!J,"aria-label":`Add attendee`,children:_?(0,V.jsx)(s,{size:13,className:`spin`}):(0,V.jsx)(C,{size:13})})]})]}),(0,V.jsxs)(`label`,{className:`cal-modal-field`,children:[(0,V.jsx)(`span`,{children:`Private note`}),(0,V.jsx)(`textarea`,{className:`cal-modal-textarea`,value:I,onChange:e=>L(e.target.value),disabled:_,rows:3,placeholder:`Only you and your team can see this.`})]})]}),w&&(0,V.jsx)(`div`,{className:`cal-modal-error`,children:w}),a&&(0,V.jsxs)(`div`,{className:`cal-modal-actions`,children:[!l&&!f&&!h&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>d(!0),disabled:_,children:[(0,V.jsx)(c,{size:14}),` Edit`]}),(0,V.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-danger`,onClick:()=>m(!0),disabled:_,children:[(0,V.jsx)(u,{size:14}),` Delete`]}),(0,V.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-download`,onClick:()=>{D.attendees.length>0?g(!0):K(!1)},disabled:_,children:[_?(0,V.jsx)(s,{size:14,className:`spin`}):(0,V.jsx)(o,{size:14}),` Download`]})]}),h&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:`cal-modal-confirm-text`,children:`Include attendees in the file?`}),(0,V.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-primary`,onClick:()=>K(!0),disabled:_,children:[_?(0,V.jsx)(s,{size:14,className:`spin`}):null,` Yes`]}),(0,V.jsx)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>K(!1),disabled:_,children:`No`}),(0,V.jsx)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>g(!1),disabled:_,children:`Cancel`})]}),l&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-primary`,onClick:W,disabled:_,children:[_?(0,V.jsx)(s,{size:14,className:`spin`}):null,` Save`]}),(0,V.jsx)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>{d(!1),E(null)},disabled:_,children:`Cancel`})]}),f&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:`cal-modal-confirm-text`,children:`Delete this meeting?`}),(0,V.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-danger`,onClick:se,disabled:_,children:[_?(0,V.jsx)(s,{size:14,className:`spin`}):null,` Delete`]}),(0,V.jsx)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>m(!1),disabled:_,children:`Cancel`})]})]})]})})}var je=8;function Me(e,t){return t?{op:`view-census`,view:e,nodes:t.nodes.length,clippedV:t.nodes.filter(e=>e.clippedV).length,clippedH:t.nodes.filter(e=>e.clippedH).length,hidden:t.hidden,fields:t.fields.length>0?t.fields.join(`,`):`-`,minBlockPx:t.minBlockPx??`-`,lineBoxPx:t.lineBoxPx??`-`,source:`measured`}:{op:`view-census`,view:e,nodes:`-`,clippedV:`-`,clippedH:`-`,hidden:`-`,fields:`-`,minBlockPx:`-`,lineBoxPx:`-`,source:`unavailable`}}var Ne=5;function Pe(e,t){if(!t)return[];let n=[];for(let r of t.nodes)for(let t of[`v`,`h`])(t===`v`?r.clippedV:r.clippedH)&&n.push({op:`node-clipped`,view:e,meetingId:r.meetingId,axis:t,renderedPx:r.renderedPx,neededPx:r.neededPx,durationMin:r.durationMin??`-`});if(n.length<=Ne)return n;let r=n.slice(0,Ne);return r[r.length-1]={...r[r.length-1],truncated:n.length-Ne},r}function Fe(e){let t=(e.textContent??``).length;if(t===0||e.scrollWidth===0||e.clientWidth>=e.scrollWidth-1)return!0;let n=e.scrollWidth/t;return e.clientWidth/n>=je}function Ie(e){if(!e||typeof window>`u`||typeof window.getComputedStyle!=`function`)return null;let t=Array.from(e.querySelectorAll(`[data-meeting-id]`)),n=t.map(e=>e.getBoundingClientRect());if(t.length>0&&n.every(e=>e.height===0&&e.width===0))return null;let r=t.length>0?parseFloat(window.getComputedStyle(t[0]).lineHeight):null,i=t.map((e,t)=>{let r=e.querySelector(`.cal-sched-title`),i=e.querySelector(`.cal-event-title`)??r??e,a=i.scrollWidth>i.clientWidth+1,o=e.getAttribute(`data-duration-min`);return{meetingId:e.getAttribute(`data-meeting-id`)??`unknown`,clippedV:e.scrollHeight>e.clientHeight+1,clippedH:r?a:a&&!Fe(i),durationMin:o?Number(o):null,renderedPx:Math.round(n[t].height*10)/10,neededPx:Math.round(e.scrollHeight*10)/10}}),a=[];e.querySelector(`.cal-event-title, .cal-chip, .cal-sched-title`)&&a.push(`title`),e.querySelector(`.cal-event-time, .cal-sched-time`)&&a.push(`time`),e.querySelector(`.cal-sched-meta`)&&a.push(`meta`);let o=0;for(let t of Array.from(e.querySelectorAll(`.cal-more`)))o+=Number(t.getAttribute(`data-hidden-count`)??0);return{nodes:i,hidden:o,fields:a,minBlockPx:i.length>0?Math.min(...i.map(e=>e.renderedPx)):null,lineBoxPx:Number.isFinite(r)?r:null}}function Le(e,t){for(let n of[Me(e,t),...Pe(e,t)])try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`event`,source:`calendar-legibility`,...n}),keepalive:!0}).catch(()=>{})}catch{}}var $=`maxy-admin-session-key`;function Re(){let[e,t]=(0,T.useState)(null),[n,r]=(0,T.useState)(!1),[i,a]=(0,T.useState)(void 0),[o,s]=(0,T.useState)(null),[c,u]=(0,T.useState)(void 0),[f,p]=(0,T.useState)(null),[h,_]=(0,T.useState)(null);(0,T.useEffect)(()=>{let e=!1,n=null;try{n=sessionStorage.getItem($)}catch{}if(!n){r(!0);return}return fetch(`/api/admin/session?session_key=${encodeURIComponent(n)}`).then(async i=>{if(!e){if(i.status===401){try{sessionStorage.removeItem($)}catch{}window.location.href=`/`;return}if(i.ok)try{let e=await i.json();typeof e.businessName==`string`&&a(e.businessName),e.sessionId!==void 0&&s(e.sessionId??null),_(e.role??null),u(e.userName===void 0?null:e.userName),p(e.avatar??null)}catch{}t(n),r(!0)}}).catch(()=>{e||(t(n),r(!0))}),()=>{e=!0}},[]);let v=(0,T.useCallback)(()=>{try{sessionStorage.removeItem($)}catch{}window.location.href=`/`},[]),[y,b]=(0,T.useState)(!1),x=(0,T.useCallback)(async()=>{b(!0);try{let e=await m();if(e){try{sessionStorage.removeItem($)}catch{}window.location.href=`/`}return e}finally{b(!1)}},[]);return n?e?(0,V.jsx)(l,{cacheKey:e,surface:`calendar`,onSessionExpired:({code:e,path:t})=>{console.warn(`[admin-auth] outcome=session-expired-redirect code=${e} path=${t} surface=calendar`);try{sessionStorage.removeItem($)}catch{}window.location.href=`/`},children:(0,V.jsx)(g,{cacheKey:e,businessName:i,sessionId:o,onLogout:v,onDisconnect:x,disconnecting:y,userName:c,userAvatar:f,role:h,children:(0,V.jsx)(ze,{cacheKey:e})})}):(0,V.jsx)(`div`,{className:`cal-page`,children:(0,V.jsxs)(`div`,{className:`cal-empty`,children:[(0,V.jsx)(`p`,{children:`You are not signed in.`}),(0,V.jsxs)(`p`,{children:[`Open the `,(0,V.jsx)(`a`,{href:`/`,className:`cal-link`,children:`main admin page`}),` and log in, then return here.`]})]})}):(0,V.jsx)(d,{surface:`gate`})}function ze({cacheKey:e}){let{adminFetch:n,sessionRefetchNonce:r}=t({initialCacheKey:e,surface:`calendar`}),[i,a]=(0,T.useState)(I),[o,c]=(0,T.useState)(()=>new Date),[l,u]=(0,T.useState)([]),[f,p]=(0,T.useState)(!1),[m,g]=(0,T.useState)(!1),[y,b]=(0,T.useState)(null),[x,S]=(0,T.useState)(null),[C,ee]=(0,T.useState)(null);(0,T.useEffect)(()=>{let e=!1;return n(`/api/admin/calendar/booking-link`).then(async t=>{if(e||!t.ok)return;let n=await t.json();typeof n.bookingDomain==`string`&&n.bookingDomain&&ee(n.bookingDomain)}).catch(()=>{}),()=>{e=!0}},[n]),(0,T.useEffect)(()=>{let e=!1,{from:t,to:r}=N(i,o);return p(!0),b(null),n(`/api/admin/calendar/meetings?from=${encodeURIComponent(t.toISOString())}&to=${encodeURIComponent(r.toISOString())}`).then(async t=>{if(e)return;if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();u(Array.isArray(n.meetings)?n.meetings:[])}).catch(t=>{e||(b(t instanceof Error?t.message:`Failed to load`),u([]))}).finally(()=>{e||(p(!1),g(!0))}),()=>{e=!0}},[i,o,r,n]);let w=(0,T.useCallback)(()=>c(new Date),[]),E=(0,T.useCallback)(()=>c(e=>P(i,e,-1)),[i]),D=(0,T.useCallback)(()=>c(e=>P(i,e,1)),[i]),O=(0,T.useCallback)(e=>{c(e),a(`month`)},[]),k=(0,T.useCallback)(e=>{c(e),a(`day`)},[]);(0,T.useEffect)(()=>{S(null)},[i,o]);let A=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(f)return;let e=requestAnimationFrame(()=>{Le(i,Ie(A.current))});return()=>cancelAnimationFrame(e)},[i,l,f]);let j=(0,T.useCallback)(e=>{u(t=>t.map(t=>t.meetingId===e.meetingId?e:t)),S(e)},[]),M=(0,T.useCallback)(e=>{u(t=>t.filter(t=>t.meetingId!==e)),S(null)},[]);return m?(0,V.jsxs)(`div`,{className:`cal-page`,children:[(0,V.jsxs)(`header`,{className:`cal-header`,children:[(0,V.jsxs)(`div`,{className:`cal-nav`,children:[(0,V.jsx)(`span`,{className:`cal-range-label`,children:z(i,o)}),(0,V.jsx)(`button`,{type:`button`,className:`cal-nav-btn`,onClick:E,"aria-label":`Previous`,children:(0,V.jsx)(_,{size:18})}),(0,V.jsx)(`button`,{type:`button`,className:`cal-nav-btn`,onClick:D,"aria-label":`Next`,children:(0,V.jsx)(v,{size:18})}),(0,V.jsx)(`button`,{type:`button`,className:`cal-today-btn`,onClick:w,children:`Today`}),f&&(0,V.jsx)(s,{size:16,className:`spin`})]}),(0,V.jsx)(`div`,{className:`cal-views`,children:te.map(e=>(0,V.jsx)(`button`,{type:`button`,className:`cal-view-btn${e===i?` cal-view-btn-active`:``}`,onClick:()=>a(e),children:e.charAt(0).toUpperCase()+e.slice(1)},e))}),C&&(0,V.jsxs)(`a`,{className:`cal-booking-link`,href:`https://${C}`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,V.jsx)(h,{size:14}),` Booking page`]})]}),(0,V.jsxs)(`div`,{className:`cal-body`,ref:A,children:[y&&(0,V.jsxs)(`div`,{className:`cal-error`,children:[`Could not load the calendar: `,y]}),i===`schedule`&&(0,V.jsx)(K,{anchor:o,meetings:l,onSelect:S}),i===`day`&&(0,V.jsx)(Ce,{anchor:o,meetings:l,onSelect:S}),i===`week`&&(0,V.jsx)(be,{anchor:o,meetings:l,onSelect:S}),i===`month`&&(0,V.jsx)(pe,{anchor:o,meetings:l,onSelect:S,onPickDay:k}),i===`year`&&(0,V.jsx)(Ee,{anchor:o,meetings:l,onPickMonth:O})]}),x&&(0,V.jsx)(Ae,{meeting:x,adminFetch:n,onClose:()=>S(null),onSaved:j,onDeleted:M})]}):(0,V.jsx)(d,{surface:`gate`})}(0,w.createRoot)(document.getElementById(`root`)).render((0,V.jsx)(Re,{}));
1
+ import{o as e}from"./chunk-CltuBf4Z.js";import{G as t,H as n,J as r,K as i,L as a,M as o,O as s,T as c,_ as l,b as u,g as d,q as f,y as p}from"./useSubAccountSwitcher-D1VtIEp2.js";import{E as m,t as h,v as g}from"./AdminShell-B6H3J5C2.js";import{t as _}from"./chevron-left-C0HG8MBj.js";import{t as v}from"./chevron-right-B49Xpptm.js";import{t as y}from"./clock-CJq9vvt8.js";var b=a(`calendar`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}]]),x=a(`map-pin`,[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]),S=a(`sticky-note`,[[`path`,{d:`M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z`,key:`1dfntj`}],[`path`,{d:`M15 3v5a1 1 0 0 0 1 1h5`,key:`6s6qgf`}]]),C=a(`user-plus`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`19`,x2:`19`,y1:`8`,y2:`14`,key:`1bvyxn`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]),ee=a(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),w=i(),T=e(r(),1);function E(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function D(e,t){let n=new Date(e);return n.setDate(n.getDate()+t),n}function O(e){let t=E(e),n=t.getDay();return D(t,n===0?-6:1-n)}function k(e){let t=O(e);return Array.from({length:7},(e,n)=>D(t,n))}function A(e){let t=O(new Date(e.getFullYear(),e.getMonth(),1));return Array.from({length:42},(e,n)=>D(t,n))}function j(){return Array.from({length:24},(e,t)=>t)}function M(e){let t=e.getFullYear();return Array.from({length:12},(e,n)=>new Date(t,n,1))}function N(e,t){switch(e){case`schedule`:{let e=E(t);return{from:e,to:D(e,30)}}case`day`:{let e=E(t);return{from:e,to:D(e,1)}}case`week`:{let e=O(t);return{from:e,to:D(e,7)}}case`month`:{let e=O(new Date(t.getFullYear(),t.getMonth(),1));return{from:e,to:D(e,42)}}case`year`:return{from:new Date(t.getFullYear(),0,1),to:new Date(t.getFullYear()+1,0,1)}}}function P(e,t,n){switch(e){case`schedule`:return D(t,n*30);case`day`:return D(t,n);case`week`:return D(t,n*7);case`month`:return new Date(t.getFullYear(),t.getMonth()+n,1);case`year`:return new Date(t.getFullYear()+n,t.getMonth(),1)}}function F(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}var te=[`schedule`,`day`,`week`,`month`,`year`],I=`schedule`;function L(e){return e.toLocaleDateString([],{day:`numeric`,month:`short`})}function R(e){return e.toLocaleDateString([],{day:`numeric`,month:`short`,year:`numeric`})}function z(e,t){switch(e){case`schedule`:{let{from:e,to:n}=N(`schedule`,t);return`${L(e)} – ${R(new Date(n.getTime()-1))}`}case`day`:return t.toLocaleDateString([],{weekday:`long`,day:`numeric`,month:`long`,year:`numeric`});case`week`:{let{from:e,to:n}=N(`week`,t);return`${L(e)} – ${R(new Date(n.getTime()-1))}`}case`month`:return t.toLocaleDateString([],{month:`long`,year:`numeric`});case`year`:return String(t.getFullYear())}}function B(e,t){return{role:`button`,tabIndex:0,onClick:()=>t(e),onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),t(e))}}}var V=n(),ne={meeting:`Meeting`,event:`Event`,task:`Task`};function H(e){return ne[e.kind??`meeting`]}function U(e){return e.toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`})}function W(e){if(e.isAllDay)return`All day`;let t=U(new Date(e.startsAt));return e.endsAt?`${t} – ${U(new Date(e.endsAt))}`:t}function re(e){let t=new Date(e.startsAt);if(e.isAllDay)return t.toLocaleDateString([],{weekday:`long`,day:`numeric`,month:`long`,year:`numeric`});let n=t.toLocaleDateString([],{weekday:`long`,day:`numeric`,month:`long`,year:`numeric`}),r=U(t);return e.endsAt?`${n} · ${r} – ${U(new Date(e.endsAt))}`:`${n} · ${r}`}function ie(e,t){return e.email??`${e.name??`unknown`}-${t}`}function G(e){return e.map(e=>e.name||e.email||`Unknown`).join(`, `)}function ae({a:e}){let t=e.name||e.email||`Unknown`,n=e.name&&e.email?e.email:null;return(0,V.jsxs)(`span`,{className:`cal-attendee-lines`,children:[(0,V.jsx)(`span`,{className:`cal-attendee-name`,children:t}),n&&(0,V.jsx)(`span`,{className:`cal-attendee-email`,children:n})]})}function oe(e,t,n){let r=E(t),i=[];for(let t=0;t<n;t++){let n=D(r,t),a=e.filter(e=>F(new Date(e.startsAt),n)).sort((e,t)=>e.startsAt.localeCompare(t.startsAt));a.length>0&&i.push({day:n,meetings:a})}return i}function se(e,t){let n=e.toLocaleDateString([],{weekday:`long`,day:`numeric`,month:`long`});return F(e,t)?`${n} · today`:n}function K({anchor:e,meetings:t,onSelect:n}){let{from:r}=N(`schedule`,e),i=oe(t,r,30),a=new Date;return i.length===0?(0,V.jsx)(`div`,{className:`cal-schedule cal-schedule-empty`,children:`No events in this period.`}):(0,V.jsx)(`div`,{className:`cal-schedule`,children:i.map(e=>(0,V.jsxs)(`section`,{className:`cal-sched-group`,children:[(0,V.jsx)(`h3`,{className:`cal-sched-day${F(e.day,a)?` cal-sched-day-today`:``}`,children:se(e.day,a)}),e.meetings.map(e=>{let t=[e.location,G(e.attendees)||null,H(e)].filter(Boolean);return(0,V.jsxs)(`div`,{className:`cal-sched-row`,"data-meeting-id":e.meetingId,...B(e,n),children:[(0,V.jsx)(`span`,{className:`cal-sched-time`,children:W(e)}),(0,V.jsxs)(`span`,{className:`cal-sched-detail`,children:[(0,V.jsx)(`span`,{className:`cal-sched-title`,children:e.title??`Untitled`}),(0,V.jsx)(`span`,{className:`cal-sched-meta`,children:t.join(` · `)})]})]},e.meetingId)})]},e.day.toISOString()))})}var q=f(),J=8,ce=240,le=120;function ue(e,t,n,r){return{x:e.right+J+ce<=t?e.right+J:Math.max(J,e.left-J-ce),y:e.top+r<=n?e.top:Math.max(J,n-r-J)}}function de({meetings:e,pos:t}){return typeof document>`u`||e.length===0?null:(0,q.createPortal)((0,V.jsx)(`div`,{className:`cal-hovercard`,role:`tooltip`,style:{left:`${t.x}px`,top:`${t.y}px`},children:e.map(e=>{let t=[e.location,G(e.attendees)||null].filter(Boolean);return(0,V.jsxs)(`div`,{className:`cal-hovercard-item`,children:[(0,V.jsx)(`div`,{className:`cal-hovercard-title`,children:e.title??`Untitled`}),(0,V.jsx)(`div`,{className:`cal-hovercard-time`,children:W(e)}),t.length>0&&(0,V.jsx)(`div`,{className:`cal-hovercard-meta`,children:t.join(` · `)}),(0,V.jsx)(`div`,{className:`cal-hovercard-kind`,children:H(e)})]},e.meetingId)})}),document.body)}function Y(){let[e,t]=(0,T.useState)(null),n=(0,T.useCallback)((e,n)=>{e.length!==0&&t({meetings:e,pos:ue(n.getBoundingClientRect(),window.innerWidth,window.innerHeight,le)})},[]),r=(0,T.useCallback)(()=>t(null),[]);return(0,T.useEffect)(()=>{if(!e)return;let n=e=>{e.key===`Escape`&&t(null)};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e]),{hoverProps:(0,T.useCallback)(e=>({onMouseEnter:t=>n(e,t.currentTarget),onMouseLeave:r,onFocus:t=>n(e,t.currentTarget),onBlur:r}),[n,r]),card:e?(0,V.jsx)(de,{meetings:e.meetings,pos:e.pos}):null}}var fe=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],X=3;function pe({anchor:e,meetings:t,onSelect:n,onPickDay:r}){let i=A(e),a=e.getMonth(),o=new Date,{hoverProps:s,card:c}=Y();return(0,V.jsxs)(`div`,{className:`cal-month`,children:[(0,V.jsx)(`div`,{className:`cal-weekday-row`,children:fe.map(e=>(0,V.jsx)(`div`,{className:`cal-weekday`,children:e},e))}),(0,V.jsx)(`div`,{className:`cal-month-grid`,children:i.map(e=>{let i=t.filter(t=>F(new Date(t.startsAt),e)).sort((e,t)=>e.startsAt.localeCompare(t.startsAt)),c=e.getMonth()!==a,l=F(e,o),u=i.length-X;return(0,V.jsxs)(`div`,{className:`cal-cell${c?` cal-cell-out`:``}${l?` cal-cell-today`:``}`,children:[(0,V.jsx)(`div`,{className:`cal-cell-num`,children:e.getDate()}),i.slice(0,X).map(e=>(0,V.jsx)(`div`,{className:`cal-chip`,"data-meeting-id":e.meetingId,...B(e,n),...s([e]),children:e.title??`Untitled`},e.meetingId)),u>0&&(0,V.jsxs)(`button`,{type:`button`,className:`cal-more`,"data-hidden-count":u,onClick:()=>r(e),...s(i.slice(X)),children:[`+`,u,` more`]})]},e.toISOString())})}),c]})}var Z=1440,me=1.8;function he(e){return e>=32}function ge(e){return e.getHours()*60+e.getMinutes()}function _e({day:e,meetings:t,hourHeight:n,onSelect:r,hoverProps:i}){let a=n*24,o=t.filter(t=>!t.isAllDay&&F(new Date(t.startsAt),e));return(0,V.jsx)(`div`,{className:`cal-day-col`,children:(0,V.jsxs)(`div`,{className:`cal-hours`,style:{height:`${a}px`},children:[Array.from({length:24},(e,t)=>(0,V.jsx)(`div`,{className:`cal-hour-line`,style:{top:`${t*n}px`}},t)),o.map(t=>{let n=new Date(t.startsAt),o=t.endsAt?new Date(t.endsAt):new Date(n.getTime()+30*6e4),s=ge(n),c=F(o,e)?ge(o):Z,l=s/Z*100,u=Math.max((c-s)/Z*100,me),d=u/100*a;return(0,V.jsxs)(`div`,{className:`cal-event`,style:{top:`${l}%`,height:`${u}%`},"data-meeting-id":t.meetingId,"data-duration-min":c-s,...B(t,r),...i([t]),children:[(0,V.jsx)(`span`,{className:`cal-event-title`,children:t.title??`Untitled`}),he(d)&&(0,V.jsx)(`span`,{className:`cal-event-time`,children:W(t)})]},t.meetingId)})]})})}var ve=44;function ye(e){let t=new Date;return t.setHours(e,0,0,0),t.toLocaleTimeString([],{hour:`numeric`})}function be({anchor:e,meetings:t,onSelect:n}){let r=k(e),i=new Date,{hoverProps:a,card:o}=Y();return(0,V.jsxs)(`div`,{className:`cal-timed`,children:[(0,V.jsxs)(`div`,{className:`cal-day-headrow`,children:[(0,V.jsx)(`div`,{className:`cal-timed-gutter`}),r.map(e=>(0,V.jsxs)(`div`,{className:`cal-day-head${F(e,i)?` cal-day-head-today`:``}`,children:[(0,V.jsx)(`span`,{className:`cal-day-head-name`,children:e.toLocaleDateString([],{weekday:`short`})}),(0,V.jsx)(`span`,{className:`cal-day-head-num`,children:e.getDate()})]},e.toISOString()))]}),(0,V.jsxs)(`div`,{className:`cal-allday-band`,children:[(0,V.jsx)(`div`,{className:`cal-timed-gutter`,children:`All-day`}),r.map(e=>(0,V.jsx)(`div`,{className:`cal-allday-cell`,children:t.filter(t=>t.isAllDay&&F(new Date(t.startsAt),e)).map(e=>(0,V.jsx)(`div`,{className:`cal-allday-chip`,"data-meeting-id":e.meetingId,...B(e,n),...a([e]),children:e.title??`Untitled`},e.meetingId))},e.toISOString()))]}),(0,V.jsxs)(`div`,{className:`cal-timed-cols`,children:[(0,V.jsx)(`div`,{className:`cal-timed-gutter`,children:j().map(e=>(0,V.jsx)(`div`,{className:`cal-hour-label`,style:{height:`${ve}px`},children:e===0?``:ye(e)},e))}),r.map(e=>(0,V.jsx)(_e,{day:e,meetings:t,hourHeight:ve,onSelect:n,hoverProps:a},e.toISOString()))]}),o]})}var xe=52;function Se(e){let t=new Date;return t.setHours(e,0,0,0),t.toLocaleTimeString([],{hour:`numeric`})}function Ce({anchor:e,meetings:t,onSelect:n}){let r=t.filter(t=>t.isAllDay&&F(new Date(t.startsAt),e)),{hoverProps:i,card:a}=Y();return(0,V.jsxs)(`div`,{className:`cal-timed cal-timed-single`,children:[(0,V.jsxs)(`div`,{className:`cal-allday-band`,children:[(0,V.jsx)(`div`,{className:`cal-timed-gutter`,children:`All-day`}),(0,V.jsx)(`div`,{className:`cal-allday-cell`,children:r.map(e=>(0,V.jsx)(`div`,{className:`cal-allday-chip`,"data-meeting-id":e.meetingId,...B(e,n),...i([e]),children:e.title??`Untitled`},e.meetingId))})]}),(0,V.jsxs)(`div`,{className:`cal-timed-cols`,children:[(0,V.jsx)(`div`,{className:`cal-timed-gutter`,children:j().map(e=>(0,V.jsx)(`div`,{className:`cal-hour-label`,style:{height:`${xe}px`},children:e===0?``:Se(e)},e))}),(0,V.jsx)(_e,{day:e,meetings:t,hourHeight:xe,onSelect:n,hoverProps:i})]}),a]})}var we=[`M`,`T`,`W`,`T`,`F`,`S`,`S`];function Te(e){return`${e.getFullYear()}-${e.getMonth()}-${e.getDate()}`}function Ee({anchor:e,meetings:t,onPickMonth:n}){let r=new Date,{hoverProps:i,card:a}=Y(),o=new Map;for(let e of t){let t=Te(new Date(e.startsAt)),n=o.get(t);n?n.push(e):o.set(t,[e])}return(0,V.jsxs)(`div`,{className:`cal-year`,children:[(0,V.jsx)(`div`,{className:`cal-year-grid`,children:M(e).map(e=>{let t=A(e),a=e.getMonth();return(0,V.jsxs)(`button`,{type:`button`,className:`cal-mini`,onClick:()=>n(e),title:e.toLocaleDateString([],{month:`long`,year:`numeric`}),children:[(0,V.jsx)(`div`,{className:`cal-mini-title`,children:e.toLocaleDateString([],{month:`long`})}),(0,V.jsx)(`div`,{className:`cal-mini-weekrow`,children:we.map((e,t)=>(0,V.jsx)(`span`,{className:`cal-mini-weekday`,children:e},t))}),(0,V.jsx)(`div`,{className:`cal-mini-grid`,children:t.map(e=>{let t=e.getMonth()!==a,n=F(e,r),s=Te(e),c=t?[]:o.get(s)??[];return(0,V.jsxs)(`span`,{"data-testid":t?void 0:`cal-mini-day-${s}`,className:`cal-mini-day${t?` cal-mini-day-out`:``}${n?` cal-mini-day-today`:``}`,...c.length>0?i(c):{},children:[e.getDate(),c.length>0&&(0,V.jsx)(`span`,{className:`cal-mini-count`,"data-testid":`cal-mini-count-${s}`,children:c.length})]},e.toISOString())})})]},a)})}),a]})}function De(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}T${n(t.getHours())}:${n(t.getMinutes())}`}function Oe(e){return new Date(e).toISOString()}function Q(e){return Math.floor(new Date(e).getTime()/6e4)}function ke(e){if(!e)return null;let t=e.match(/filename="([^"]+)"/);return t?t[1]:null}function Ae({meeting:e,adminFetch:t,onClose:n,onSaved:r,onDeleted:i}){let a=e.kind===`meeting`,[l,d]=(0,T.useState)(!1),[f,m]=(0,T.useState)(!1),[h,g]=(0,T.useState)(!1),[_,v]=(0,T.useState)(!1),[w,E]=(0,T.useState)(null),[D,O]=(0,T.useState)(e),[k,A]=(0,T.useState)(e.title??``),[j,M]=(0,T.useState)(De(e.startsAt)),[N,P]=(0,T.useState)(e.endsAt?De(e.endsAt):``),[F,te]=(0,T.useState)(e.location??``),[I,L]=(0,T.useState)(e.privateNote??``),[R,z]=(0,T.useState)(``),[B,H]=(0,T.useState)(``);(0,T.useEffect)(()=>{let e=e=>{e.key===`Escape`&&!_&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[_,n]);let U=(0,T.useCallback)(()=>{let e={},t=k.trim();t!==(D.title??``)&&(e.title=t);let n=Oe(j);Q(n)!==Q(D.startsAt)&&(e.startsAt=n);let r=N?Oe(N):null;(r===null?D.endsAt!==null:D.endsAt===null||Q(r)!==Q(D.endsAt))&&(e.endsAt=r);let i=F.trim()||null;i!==(D.location??null)&&(e.location=i);let a=I.trim()||null;return a!==(D.privateNote??null)&&(e.privateNote=a),e},[k,j,N,F,I,D]),W=(0,T.useCallback)(async()=>{let n=U();if(Object.keys(n).length===0){d(!1);return}v(!0),E(null);try{let i=await t(`/api/admin/calendar/meetings/${encodeURIComponent(e.meetingId)}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(n)});if(!i.ok)throw Error(`HTTP ${i.status}`);let a=await i.json();O(a.meeting),r(a.meeting),d(!1)}catch(e){E(e instanceof Error?e.message:`Save failed`)}finally{v(!1)}},[t,U,e.meetingId,r]),G=(0,T.useCallback)(async()=>{let n=R.trim(),i=B.trim();if(!(!n&&!i)){v(!0),E(null);try{let a=await t(`/api/admin/calendar/meetings/${encodeURIComponent(e.meetingId)}/attendees`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({name:n||void 0,email:i||void 0})});if(!a.ok)throw Error(`HTTP ${a.status}`);let o=await a.json();O(o.meeting),r(o.meeting),z(``),H(``)}catch(e){E(e instanceof Error?e.message:`Add failed`)}finally{v(!1)}}},[t,R,B,e.meetingId,r]),oe=(0,T.useCallback)(async n=>{let i=n.email?{email:n.email}:{name:n.name};v(!0),E(null);try{let n=await t(`/api/admin/calendar/meetings/${encodeURIComponent(e.meetingId)}/attendees`,{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify(i)});if(!n.ok)throw Error(`HTTP ${n.status}`);let a=await n.json();O(a.meeting),r(a.meeting)}catch(e){E(e instanceof Error?e.message:`Remove failed`)}finally{v(!1)}},[t,e.meetingId,r]),se=(0,T.useCallback)(async()=>{v(!0),E(null);try{let n=await t(`/api/admin/calendar/meetings/${encodeURIComponent(e.meetingId)}`,{method:`DELETE`});if(!n.ok)throw Error(`HTTP ${n.status}`);i(e.meetingId)}catch(e){E(e instanceof Error?e.message:`Delete failed`),v(!1)}},[t,e.meetingId,i]),K=(0,T.useCallback)(async n=>{g(!1),v(!0),E(null);try{let r=await t(`/api/admin/calendar/meetings/${encodeURIComponent(e.meetingId)}/ics?attendees=${n?`1`:`0`}`);if(!r.ok)throw Error(`HTTP ${r.status}`);let i=await r.blob(),a=ke(r.headers.get(`content-disposition`))??`meeting.ics`,o=URL.createObjectURL(i),s=document.createElement(`a`);s.href=o,s.download=a,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(o)}catch(e){E(e instanceof Error?e.message:`Download failed`)}finally{v(!1)}},[t,e.meetingId]),q=ne[e.kind??`meeting`],J=R.trim().length>0||B.trim().length>0;return(0,V.jsx)(`div`,{className:`cal-modal-overlay`,onClick:()=>{_||n()},children:(0,V.jsxs)(`div`,{className:`cal-modal cal-modal-wide`,role:`dialog`,"aria-modal":`true`,"aria-label":l?`Edit meeting`:`Meeting detail`,onClick:e=>e.stopPropagation(),children:[(0,V.jsxs)(`div`,{className:`cal-modal-header`,children:[(0,V.jsx)(`span`,{className:`cal-modal-kind`,children:q}),(0,V.jsx)(`button`,{type:`button`,className:`cal-modal-close`,onClick:n,"aria-label":`Close`,autoFocus:!0,disabled:_,children:(0,V.jsx)(p,{size:16})})]}),!l&&(0,V.jsxs)(`div`,{className:`cal-modal-body`,children:[(0,V.jsx)(`div`,{className:`cal-modal-title`,children:D.title??`Untitled`}),(0,V.jsxs)(`div`,{className:`cal-modal-row`,children:[(0,V.jsx)(y,{size:14}),(0,V.jsx)(`span`,{children:re(D)})]}),D.location&&(0,V.jsxs)(`div`,{className:`cal-modal-row`,children:[(0,V.jsx)(x,{size:14}),(0,V.jsx)(`span`,{children:D.location})]}),D.attendees.length>0&&(0,V.jsxs)(`div`,{className:`cal-modal-row cal-modal-row-top`,children:[(0,V.jsx)(ee,{size:14}),(0,V.jsx)(`div`,{className:`cal-modal-attendees`,children:D.attendees.map((e,t)=>(0,V.jsx)(`div`,{className:`cal-attendee-row`,children:(0,V.jsx)(ae,{a:e})},ie(e,t)))})]}),D.privateNote&&(0,V.jsxs)(`div`,{className:`cal-modal-row cal-modal-row-top`,children:[(0,V.jsx)(S,{size:14}),(0,V.jsx)(`span`,{className:`cal-modal-note`,children:D.privateNote})]}),(0,V.jsxs)(`div`,{className:`cal-modal-row cal-modal-meta`,children:[(0,V.jsx)(b,{size:14}),(0,V.jsx)(`span`,{children:q})]})]}),l&&(0,V.jsxs)(`div`,{className:`cal-modal-body`,children:[(0,V.jsxs)(`label`,{className:`cal-modal-field`,children:[(0,V.jsx)(`span`,{children:`Title`}),(0,V.jsx)(`input`,{type:`text`,value:k,onChange:e=>A(e.target.value),disabled:_})]}),(0,V.jsxs)(`label`,{className:`cal-modal-field`,children:[(0,V.jsx)(`span`,{children:`Start`}),(0,V.jsx)(`input`,{type:`datetime-local`,value:j,onChange:e=>M(e.target.value),disabled:_})]}),(0,V.jsxs)(`label`,{className:`cal-modal-field`,children:[(0,V.jsx)(`span`,{children:`End`}),(0,V.jsx)(`input`,{type:`datetime-local`,value:N,onChange:e=>P(e.target.value),disabled:_})]}),(0,V.jsxs)(`label`,{className:`cal-modal-field`,children:[(0,V.jsx)(`span`,{children:`Location`}),(0,V.jsx)(`input`,{type:`text`,value:F,onChange:e=>te(e.target.value),disabled:_})]}),(0,V.jsxs)(`div`,{className:`cal-modal-field`,children:[(0,V.jsx)(`span`,{children:`Attendees`}),(0,V.jsxs)(`div`,{className:`cal-modal-attendees cal-modal-attendees-edit`,children:[D.attendees.length===0&&(0,V.jsx)(`div`,{className:`cal-attendee-empty`,children:`No attendees yet.`}),D.attendees.map((e,t)=>(0,V.jsxs)(`div`,{className:`cal-attendee-row cal-attendee-row-edit`,children:[(0,V.jsx)(ae,{a:e}),(0,V.jsx)(`button`,{type:`button`,className:`cal-attendee-remove`,onClick:()=>oe(e),disabled:_,"aria-label":`Remove ${e.name||e.email||`attendee`}`,children:(0,V.jsx)(p,{size:13})})]},ie(e,t)))]}),(0,V.jsxs)(`div`,{className:`cal-attendee-add`,children:[(0,V.jsx)(`input`,{type:`text`,placeholder:`Name`,value:R,onChange:e=>z(e.target.value),disabled:_,"aria-label":`Attendee name`}),(0,V.jsx)(`input`,{type:`email`,placeholder:`Email`,value:B,onChange:e=>H(e.target.value),disabled:_,"aria-label":`Attendee email`}),(0,V.jsx)(`button`,{type:`button`,className:`cal-modal-btn cal-attendee-add-btn`,onClick:G,disabled:_||!J,"aria-label":`Add attendee`,children:_?(0,V.jsx)(s,{size:13,className:`spin`}):(0,V.jsx)(C,{size:13})})]})]}),(0,V.jsxs)(`label`,{className:`cal-modal-field`,children:[(0,V.jsx)(`span`,{children:`Private note`}),(0,V.jsx)(`textarea`,{className:`cal-modal-textarea`,value:I,onChange:e=>L(e.target.value),disabled:_,rows:3,placeholder:`Only you and your team can see this.`})]})]}),w&&(0,V.jsx)(`div`,{className:`cal-modal-error`,children:w}),a&&(0,V.jsxs)(`div`,{className:`cal-modal-actions`,children:[!l&&!f&&!h&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>d(!0),disabled:_,children:[(0,V.jsx)(c,{size:14}),` Edit`]}),(0,V.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-danger`,onClick:()=>m(!0),disabled:_,children:[(0,V.jsx)(u,{size:14}),` Delete`]}),(0,V.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-download`,onClick:()=>{D.attendees.length>0?g(!0):K(!1)},disabled:_,children:[_?(0,V.jsx)(s,{size:14,className:`spin`}):(0,V.jsx)(o,{size:14}),` Download`]})]}),h&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:`cal-modal-confirm-text`,children:`Include attendees in the file?`}),(0,V.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-primary`,onClick:()=>K(!0),disabled:_,children:[_?(0,V.jsx)(s,{size:14,className:`spin`}):null,` Yes`]}),(0,V.jsx)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>K(!1),disabled:_,children:`No`}),(0,V.jsx)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>g(!1),disabled:_,children:`Cancel`})]}),l&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-primary`,onClick:W,disabled:_,children:[_?(0,V.jsx)(s,{size:14,className:`spin`}):null,` Save`]}),(0,V.jsx)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>{d(!1),E(null)},disabled:_,children:`Cancel`})]}),f&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:`cal-modal-confirm-text`,children:`Delete this meeting?`}),(0,V.jsxs)(`button`,{type:`button`,className:`cal-modal-btn cal-modal-btn-danger`,onClick:se,disabled:_,children:[_?(0,V.jsx)(s,{size:14,className:`spin`}):null,` Delete`]}),(0,V.jsx)(`button`,{type:`button`,className:`cal-modal-btn`,onClick:()=>m(!1),disabled:_,children:`Cancel`})]})]})]})})}var je=8;function Me(e,t){return t?{op:`view-census`,view:e,nodes:t.nodes.length,clippedV:t.nodes.filter(e=>e.clippedV).length,clippedH:t.nodes.filter(e=>e.clippedH).length,hidden:t.hidden,fields:t.fields.length>0?t.fields.join(`,`):`-`,minBlockPx:t.minBlockPx??`-`,lineBoxPx:t.lineBoxPx??`-`,source:`measured`}:{op:`view-census`,view:e,nodes:`-`,clippedV:`-`,clippedH:`-`,hidden:`-`,fields:`-`,minBlockPx:`-`,lineBoxPx:`-`,source:`unavailable`}}var Ne=5;function Pe(e,t){if(!t)return[];let n=[];for(let r of t.nodes)for(let t of[`v`,`h`])(t===`v`?r.clippedV:r.clippedH)&&n.push({op:`node-clipped`,view:e,meetingId:r.meetingId,axis:t,renderedPx:r.renderedPx,neededPx:r.neededPx,durationMin:r.durationMin??`-`});if(n.length<=Ne)return n;let r=n.slice(0,Ne);return r[r.length-1]={...r[r.length-1],truncated:n.length-Ne},r}function Fe(e){let t=(e.textContent??``).length;if(t===0||e.scrollWidth===0||e.clientWidth>=e.scrollWidth-1)return!0;let n=e.scrollWidth/t;return e.clientWidth/n>=je}function Ie(e){if(!e||typeof window>`u`||typeof window.getComputedStyle!=`function`)return null;let t=Array.from(e.querySelectorAll(`[data-meeting-id]`)),n=t.map(e=>e.getBoundingClientRect());if(t.length>0&&n.every(e=>e.height===0&&e.width===0))return null;let r=t.length>0?parseFloat(window.getComputedStyle(t[0]).lineHeight):null,i=t.map((e,t)=>{let r=e.querySelector(`.cal-sched-title`),i=e.querySelector(`.cal-event-title`)??r??e,a=i.scrollWidth>i.clientWidth+1,o=e.getAttribute(`data-duration-min`);return{meetingId:e.getAttribute(`data-meeting-id`)??`unknown`,clippedV:e.scrollHeight>e.clientHeight+1,clippedH:r?a:a&&!Fe(i),durationMin:o?Number(o):null,renderedPx:Math.round(n[t].height*10)/10,neededPx:Math.round(e.scrollHeight*10)/10}}),a=[];e.querySelector(`.cal-event-title, .cal-chip, .cal-sched-title`)&&a.push(`title`),e.querySelector(`.cal-event-time, .cal-sched-time`)&&a.push(`time`),e.querySelector(`.cal-sched-meta`)&&a.push(`meta`);let o=0;for(let t of Array.from(e.querySelectorAll(`.cal-more`)))o+=Number(t.getAttribute(`data-hidden-count`)??0);return{nodes:i,hidden:o,fields:a,minBlockPx:i.length>0?Math.min(...i.map(e=>e.renderedPx)):null,lineBoxPx:Number.isFinite(r)?r:null}}function Le(e,t){for(let n of[Me(e,t),...Pe(e,t)])try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`event`,source:`calendar-legibility`,...n}),keepalive:!0}).catch(()=>{})}catch{}}var $=`maxy-admin-session-key`;function Re(){let[e,t]=(0,T.useState)(null),[n,r]=(0,T.useState)(!1),[i,a]=(0,T.useState)(void 0),[o,s]=(0,T.useState)(null),[c,u]=(0,T.useState)(void 0),[f,p]=(0,T.useState)(null),[g,_]=(0,T.useState)(null);(0,T.useEffect)(()=>{let e=!1,n=null;try{n=sessionStorage.getItem($)}catch{}if(!n){r(!0);return}return fetch(`/api/admin/session?session_key=${encodeURIComponent(n)}`).then(async i=>{if(!e){if(i.status===401){try{sessionStorage.removeItem($)}catch{}window.location.href=`/`;return}if(i.ok)try{let e=await i.json();typeof e.businessName==`string`&&a(e.businessName),e.sessionId!==void 0&&s(e.sessionId??null),_(e.role??null),u(e.userName===void 0?null:e.userName),p(e.avatar??null)}catch{}t(n),r(!0)}}).catch(()=>{e||(t(n),r(!0))}),()=>{e=!0}},[]);let v=(0,T.useCallback)(()=>{try{sessionStorage.removeItem($)}catch{}window.location.href=`/`},[]),[y,b]=(0,T.useState)(!1),x=(0,T.useCallback)(async()=>{b(!0);try{let e=await m();if(e){try{sessionStorage.removeItem($)}catch{}window.location.href=`/`}return e}finally{b(!1)}},[]);return n?e?(0,V.jsx)(l,{cacheKey:e,surface:`calendar`,onSessionExpired:({code:e,path:t})=>{console.warn(`[admin-auth] outcome=session-expired-redirect code=${e} path=${t} surface=calendar`);try{sessionStorage.removeItem($)}catch{}window.location.href=`/`},children:(0,V.jsx)(h,{cacheKey:e,businessName:i,sessionId:o,onLogout:v,onDisconnect:x,disconnecting:y,userName:c,userAvatar:f,role:g,children:(0,V.jsx)(ze,{cacheKey:e})})}):(0,V.jsx)(`div`,{className:`cal-page`,children:(0,V.jsxs)(`div`,{className:`cal-empty`,children:[(0,V.jsx)(`p`,{children:`You are not signed in.`}),(0,V.jsxs)(`p`,{children:[`Open the `,(0,V.jsx)(`a`,{href:`/`,className:`cal-link`,children:`main admin page`}),` and log in, then return here.`]})]})}):(0,V.jsx)(d,{surface:`gate`})}function ze({cacheKey:e}){let{adminFetch:n,sessionRefetchNonce:r}=t({initialCacheKey:e,surface:`calendar`}),[i,a]=(0,T.useState)(I),[o,c]=(0,T.useState)(()=>new Date),[l,u]=(0,T.useState)([]),[f,p]=(0,T.useState)(!1),[m,h]=(0,T.useState)(!1),[y,b]=(0,T.useState)(null),[x,S]=(0,T.useState)(null),[C,ee]=(0,T.useState)(null);(0,T.useEffect)(()=>{let e=!1;return n(`/api/admin/calendar/booking-link`).then(async t=>{if(e||!t.ok)return;let n=await t.json();typeof n.bookingDomain==`string`&&n.bookingDomain&&ee(n.bookingDomain)}).catch(()=>{}),()=>{e=!0}},[n]),(0,T.useEffect)(()=>{let e=!1,{from:t,to:r}=N(i,o);return p(!0),b(null),n(`/api/admin/calendar/meetings?from=${encodeURIComponent(t.toISOString())}&to=${encodeURIComponent(r.toISOString())}`).then(async t=>{if(e)return;if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();u(Array.isArray(n.meetings)?n.meetings:[])}).catch(t=>{e||(b(t instanceof Error?t.message:`Failed to load`),u([]))}).finally(()=>{e||(p(!1),h(!0))}),()=>{e=!0}},[i,o,r,n]);let w=(0,T.useCallback)(()=>c(new Date),[]),E=(0,T.useCallback)(()=>c(e=>P(i,e,-1)),[i]),D=(0,T.useCallback)(()=>c(e=>P(i,e,1)),[i]),O=(0,T.useCallback)(e=>{c(e),a(`month`)},[]),k=(0,T.useCallback)(e=>{c(e),a(`day`)},[]);(0,T.useEffect)(()=>{S(null)},[i,o]);let A=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(f)return;let e=requestAnimationFrame(()=>{Le(i,Ie(A.current))});return()=>cancelAnimationFrame(e)},[i,l,f]);let j=(0,T.useCallback)(e=>{u(t=>t.map(t=>t.meetingId===e.meetingId?e:t)),S(e)},[]),M=(0,T.useCallback)(e=>{u(t=>t.filter(t=>t.meetingId!==e)),S(null)},[]);return m?(0,V.jsxs)(`div`,{className:`cal-page`,children:[(0,V.jsxs)(`header`,{className:`cal-header`,children:[(0,V.jsxs)(`div`,{className:`cal-nav`,children:[(0,V.jsx)(`span`,{className:`cal-range-label`,children:z(i,o)}),(0,V.jsx)(`button`,{type:`button`,className:`cal-nav-btn`,onClick:E,"aria-label":`Previous`,children:(0,V.jsx)(_,{size:18})}),(0,V.jsx)(`button`,{type:`button`,className:`cal-nav-btn`,onClick:D,"aria-label":`Next`,children:(0,V.jsx)(v,{size:18})}),(0,V.jsx)(`button`,{type:`button`,className:`cal-today-btn`,onClick:w,children:`Today`}),f&&(0,V.jsx)(s,{size:16,className:`spin`})]}),(0,V.jsx)(`div`,{className:`cal-views`,children:te.map(e=>(0,V.jsx)(`button`,{type:`button`,className:`cal-view-btn${e===i?` cal-view-btn-active`:``}`,onClick:()=>a(e),children:e.charAt(0).toUpperCase()+e.slice(1)},e))}),C&&(0,V.jsxs)(`a`,{className:`cal-booking-link`,href:`https://${C}`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,V.jsx)(g,{size:14}),` Booking page`]})]}),(0,V.jsxs)(`div`,{className:`cal-body`,ref:A,children:[y&&(0,V.jsxs)(`div`,{className:`cal-error`,children:[`Could not load the calendar: `,y]}),i===`schedule`&&(0,V.jsx)(K,{anchor:o,meetings:l,onSelect:S}),i===`day`&&(0,V.jsx)(Ce,{anchor:o,meetings:l,onSelect:S}),i===`week`&&(0,V.jsx)(be,{anchor:o,meetings:l,onSelect:S}),i===`month`&&(0,V.jsx)(pe,{anchor:o,meetings:l,onSelect:S,onPickDay:k}),i===`year`&&(0,V.jsx)(Ee,{anchor:o,meetings:l,onPickMonth:O})]}),x&&(0,V.jsx)(Ae,{meeting:x,adminFetch:n,onClose:()=>S(null),onSaved:j,onDeleted:M})]}):(0,V.jsx)(d,{surface:`gate`})}(0,w.createRoot)(document.getElementById(`root`)).render((0,V.jsx)(Re,{}));
@@ -0,0 +1 @@
1
+ import{H as e,K as t}from"./useSubAccountSwitcher-D1VtIEp2.js";import"./useVoiceRecorder-fpwWw2VW.js";import"./AdminShell-B6H3J5C2.js";import{n}from"./page-BUFW-PWF.js";import"./useCopyFeedback-BGzzIsSD.js";var r=t(),i=e();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));
@@ -0,0 +1,2 @@
1
+ (@- l�4�@I|�U��]�fSa�<��T�'̛y�@ţy��A5J�\�Naq��0=n}tr(�/T���=����v
2
+ sm�� �îԒ��n�Y���tJ���`@e;f�0���1��&Fjy��p"Qab�!(��n��0oU�@b`eza��?5���b@����a_��L�/7�pg��1��ð�Ib\B��[�<5˷�p�P�?�9�
@@ -0,0 +1 @@
1
+ import{L as e}from"./useSubAccountSwitcher-D1VtIEp2.js";var t=e(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{L as e}from"./useSubAccountSwitcher-D1VtIEp2.js";var t=e(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{L as e}from"./useSubAccountSwitcher-D1VtIEp2.js";var t=e(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{H as e,K as t}from"./useSubAccountSwitcher-D1VtIEp2.js";import"./useVoiceRecorder-fpwWw2VW.js";import{t as n}from"./page-jT4queFM.js";import"./graph-labels-TJ-3ljQo.js";var r=t(),i=e();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));
@@ -1 +1 @@
1
- import{L as e}from"./useSubAccountSwitcher-B6Ns2Z43.js";var t=e(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]);function n(e,t,n=`data`){let r=`/api/admin/files/download?session_key=${encodeURIComponent(e)}&path=${encodeURIComponent(t)}`+(n===`data`?``:`&root=${encodeURIComponent(n)}`),i=document.createElement(`a`);i.href=r,i.rel=`noopener noreferrer`,document.body.appendChild(i),i.click(),i.remove()}function r(e,t){let n=new URLSearchParams;n.set(`session_key`,e);for(let e of t)n.append(`path`,e);let r=document.createElement(`a`);r.href=`/api/admin/files/download-zip?${n.toString()}`,r.rel=`noopener noreferrer`,document.body.appendChild(r),r.click(),r.remove()}function i(e,t){let n=document.createElement(`a`);n.href=`/api/admin/routines/${encodeURIComponent(t)}/runs.csv?session_key=${encodeURIComponent(e)}`,n.rel=`noopener noreferrer`,document.body.appendChild(n),n.click(),n.remove()}function a(e,t,n=`data`){return`/api/admin/files/download?session_key=${encodeURIComponent(e)}&path=${encodeURIComponent(t)}&disposition=inline`+(n===`data`?``:`&root=${encodeURIComponent(n)}`)}export{t as a,r as i,n,i as r,a as t};
1
+ import{L as e}from"./useSubAccountSwitcher-D1VtIEp2.js";var t=e(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]);function n(e,t,n=`data`){let r=`/api/admin/files/download?session_key=${encodeURIComponent(e)}&path=${encodeURIComponent(t)}`+(n===`data`?``:`&root=${encodeURIComponent(n)}`),i=document.createElement(`a`);i.href=r,i.rel=`noopener noreferrer`,document.body.appendChild(i),i.click(),i.remove()}function r(e,t){let n=new URLSearchParams;n.set(`session_key`,e);for(let e of t)n.append(`path`,e);let r=document.createElement(`a`);r.href=`/api/admin/files/download-zip?${n.toString()}`,r.rel=`noopener noreferrer`,document.body.appendChild(r),r.click(),r.remove()}function i(e,t){let n=document.createElement(`a`);n.href=`/api/admin/routines/${encodeURIComponent(t)}/runs.csv?session_key=${encodeURIComponent(e)}`,n.rel=`noopener noreferrer`,document.body.appendChild(n),n.click(),n.remove()}function a(e,t,n=`data`){return`/api/admin/files/download?session_key=${encodeURIComponent(e)}&path=${encodeURIComponent(t)}&disposition=inline`+(n===`data`?``:`&root=${encodeURIComponent(n)}`)}export{t as a,r as i,n,i as r,a as t};
@@ -1 +1 @@
1
- import{L as e}from"./useSubAccountSwitcher-B6Ns2Z43.js";var t=e(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]);export{t};
1
+ import{L as e}from"./useSubAccountSwitcher-D1VtIEp2.js";var t=e(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]);export{t};