@forsion/unit 2.13.0 → 2.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/main.mjs +23 -3
  2. package/package.json +1 -1
  3. package/release.json +5 -5
  4. package/web/assets/{ArtificialView-BSv3Mx5C.js → ArtificialView-Bs_6B211.js} +1 -1
  5. package/web/assets/{AutomationBuilder-BuiHtVB-.js → AutomationBuilder-C-IFaaBp.js} +1 -1
  6. package/web/assets/CalendarConfigView-DEsNvVkD.js +1 -0
  7. package/web/assets/CalendarView-D7ZUE_dr.js +1 -0
  8. package/web/assets/{CapabilityMenu-kx1TIJYN.js → CapabilityMenu-CrsaTtDe.js} +1 -1
  9. package/web/assets/{CheckboxInput-eW7xdiRS.js → CheckboxInput-DVO2-1J7.js} +1 -1
  10. package/web/assets/{Chrome-B77-lQyh.js → Chrome-BvpbCvo1.js} +1 -1
  11. package/web/assets/{CodeView-Df3AiSIi.js → CodeView-CB4kG7Y6.js} +3 -3
  12. package/web/assets/DashboardGridView-hpRmBr9B.css +1 -0
  13. package/web/assets/DashboardGridView-tgaj9-SM.js +17 -0
  14. package/web/assets/{EventCard-CDmeCbI8.js → EventCard-c6s4uGBu.js} +1 -1
  15. package/web/assets/ExcalidrawCanvas-NdV86AR3.js +1 -0
  16. package/web/assets/{FloatingToc-tART_jC4.js → FloatingToc-ldOYWe2C.js} +1 -1
  17. package/web/assets/HomepageView-4joJWYlg.js +1 -0
  18. package/web/assets/HomepageView-Cxf3AWBu.css +1 -0
  19. package/web/assets/ImageStudioPanels-DgMYAsHj.js +3 -0
  20. package/web/assets/{ImageStudioView-KJhx0wJk.js → ImageStudioView-_CYHoOoG.js} +1 -1
  21. package/web/assets/InlineFiles-BIfsx3R-.js +1 -0
  22. package/web/assets/MarkdownBlock-wYEaBBOr.js +58 -0
  23. package/web/assets/ModelPill-DveHcLqq.js +2 -0
  24. package/web/assets/MuseLibraryView-Do9RnKiq.js +2 -0
  25. package/web/assets/{MuseView-Cb6R_l4i.js → MuseView-3GL4Ltoj.js} +2 -2
  26. package/web/assets/{PageHistoryPanel-BQs9IWTP.js → PageHistoryPanel-BMQC-V_l.js} +2 -2
  27. package/web/assets/{PdfAnnotator-BFTBkxvO.js → PdfAnnotator-CyAw8sgq.js} +1 -1
  28. package/web/assets/PenRow-BSB-h5Pb.js +1 -0
  29. package/web/assets/{ProductView-mB-S0j81.js → ProductView-B96OeHOP.js} +1 -1
  30. package/web/assets/{RightPanel-BVZeVO3c.js → RightPanel-BgSeCLnw.js} +3 -3
  31. package/web/assets/RunLocationPicker-CEmFio4n.css +1 -0
  32. package/web/assets/RunLocationPicker-M1UoJyjf.js +38 -0
  33. package/web/assets/{SketchCard-CAAr_cqF.js → SketchCard-DAD0jR0i.js} +212 -8
  34. package/web/assets/{StudioGuestSurface-DthpuVGg.js → StudioGuestSurface-DlUKXBXv.js} +1 -1
  35. package/web/assets/TodoListView-_yFkPUrw.js +1 -0
  36. package/web/assets/{Tooltip-D9Dt9ZTr.js → Tooltip-DXuy9-1_.js} +1 -1
  37. package/web/assets/UnifiedPage-EJNWKzxN.js +68 -0
  38. package/web/assets/{amadeus-manual.en-D5wZKuag.js → amadeus-manual.en-DzRWr4BL.js} +15 -15
  39. package/web/assets/{amadeus-manual.zh-Br5fidrj.js → amadeus-manual.zh-DW32DkL7.js} +15 -15
  40. package/web/assets/{appStore-B1ynyt42.js → appStore-CidPWYa0.js} +242 -134
  41. package/web/assets/appStore-DeaC1U32.css +1 -0
  42. package/web/assets/{arrow-up-right-R10mR2I6.js → arrow-up-right-KPFbRA41.js} +1 -1
  43. package/web/assets/{astryxBridge-CU_kQTEl.js → astryxBridge-Bupzouso.js} +3 -3
  44. package/web/assets/{automationListSource-B8EIRmDW.js → automationListSource-1aOVKBLw.js} +1 -1
  45. package/web/assets/boardSurface-BHuMoQN-.js +1 -0
  46. package/web/assets/{book-open-DBJ3dDpw.js → book-open-CBeNsIpo.js} +1 -1
  47. package/web/assets/{calendarNavStore-DGvUlU5N.js → calendarNavStore-Duyhbmm_.js} +1 -1
  48. package/web/assets/{canvasPrefs-DwL_OAAo.js → canvasPrefs-CxfyDTMT.js} +1 -1
  49. package/web/assets/{chatBoxSurface-Lq-2qfd3.js → chatBoxSurface-OBzO1Z5E.js} +1 -1
  50. package/web/assets/{circle-question-mark-HPZpZQxd.js → circle-question-mark-M8QUJJYk.js} +1 -1
  51. package/web/assets/{circle-x-BZfe7d6S.js → circle-x-Szwop5L_.js} +1 -1
  52. package/web/assets/{client-DxGbwZLy.js → client-CPUljePZ.js} +1 -1
  53. package/web/assets/{code-xml-joKQ-qGS.js → code-xml-n9mgGgkv.js} +1 -1
  54. package/web/assets/{codeStudioStore-C7rGKlOC.js → codeStudioStore-DXMQwRzG.js} +1 -1
  55. package/web/assets/codingNavigation-CCjs1kon.js +53 -0
  56. package/web/assets/codingNavigation-yp19w6uu.css +1 -0
  57. package/web/assets/{create-BjBRKATq.js → create-C19zqt5N.js} +2 -2
  58. package/web/assets/dashboardSurface-BwcH16Qc.js +1 -0
  59. package/web/assets/{deskCapture-DnGWk1iq.js → deskCapture-B_LKZSPt.js} +1 -1
  60. package/web/assets/{diff2html-Cd1rVi_Z.js → diff2html-DrCCWvpR.js} +1 -1
  61. package/web/assets/{docx-preview-CK0k1mUD.js → docx-preview-Bi7wekSM.js} +1 -1
  62. package/web/assets/{emoji-Cjm3bKiF.js → emoji-DczIG8SO.js} +1 -1
  63. package/web/assets/{floatingTocSurface-Dd1pT5j5.js → floatingTocSurface-rc1ZC7-I.js} +1 -1
  64. package/web/assets/foldActions-BGocXE-o.js +1 -0
  65. package/web/assets/{folder-CvZyHIgb.js → folder-CoOsfQ64.js} +1 -1
  66. package/web/assets/{folder-plus-BRScGQ9m.js → folder-plus-d5MwIMlf.js} +1 -1
  67. package/web/assets/{gestures-CZQVefU0.js → gestures-CXFaEydn.js} +1 -1
  68. package/web/assets/{hand-D3QspKYq.js → hand-fuehbnkI.js} +1 -1
  69. package/web/assets/{hard-drive-BQsHSala.js → hard-drive-Bh1DmZg0.js} +1 -1
  70. package/web/assets/i18n-DjziAw8r.css +1 -0
  71. package/web/assets/{i18n.generated-BZRHO2Nc.js → i18n.generated-BiQFRL2U.js} +1 -1
  72. package/web/assets/{imageStudio-Cy3_437s.js → imageStudio-Dgl1wZNB.js} +2 -2
  73. package/web/assets/{index-0AYHATDX.js → index-2tD0kijW.js} +1 -1
  74. package/web/assets/{index-DJLWTPtq.js → index-38xsQSS9.js} +1 -1
  75. package/web/assets/{index-B5GxvbNm.js → index-7kdR1oL8.js} +1 -1
  76. package/web/assets/index-B5UW6SaE.js +297 -0
  77. package/web/assets/{index-D6mpAJ9S.js → index-B8Co6KG3.js} +1 -1
  78. package/web/assets/{index-C9yo04Ck.js → index-BCG8Wnc4.js} +1 -1
  79. package/web/assets/{index-Bpc3R3DS.js → index-BPqoEOV_.js} +1 -1
  80. package/web/assets/{index-BaRySZ-M.js → index-BqGpbntz.js} +1 -1
  81. package/web/assets/{index-Dj-PygjB.js → index-CPLtf9Vc.js} +1 -1
  82. package/web/assets/{index-8ag1K7AZ.js → index-Ce1sNSS8.js} +1 -1
  83. package/web/assets/{index-BgDZGDqt.js → index-Ch0FIsJX.js} +1 -1
  84. package/web/assets/{index-CcOag8eb.js → index-CnDAYLti.js} +1 -1
  85. package/web/assets/{index-Dkd-nl1u.js → index-D4CSH-v1.js} +1 -1
  86. package/web/assets/{index-BnWj6ggb.js → index-Dc8iMctf.js} +1 -1
  87. package/web/assets/{index-D0FLFLfh.js → index-DcRyQ3eU.js} +1 -1
  88. package/web/assets/{index-DElrDw66.js → index-Df9jregv.js} +1 -1
  89. package/web/assets/{index-4E9nrhwf.js → index-Dff-DL1v.js} +1 -1
  90. package/web/assets/{index-BdZaheMZ.js → index-DvOrTnw2.js} +1 -1
  91. package/web/assets/{index-BPhwi4-v.js → index-Dx9aIoyo.js} +1 -1
  92. package/web/assets/{index-BcVGjCAJ.js → index-Dy07SBfH.js} +1 -1
  93. package/web/assets/{index-GjLSlygt.js → index-QjVOA7QM.js} +1 -1
  94. package/web/assets/{index-BgtO11q8.js → index-YRWOePBS.js} +1 -1
  95. package/web/assets/{index-9BmmlTjY.js → index-e-MxdHFO.js} +1 -1
  96. package/web/assets/{index-DNE_PBJt.js → index-fViJsYjM.js} +1 -1
  97. package/web/assets/{index-1FhRiJ_X.js → index-lfow5R3O.js} +1 -1
  98. package/web/assets/{invitePage-B4gMvEKi.js → invitePage-Dgl3-c_m.js} +1 -1
  99. package/web/assets/{ipc-CPhL3bPp.js → ipc-CNlIRMtU.js} +1 -1
  100. package/web/assets/{jszip.min-DAJT9RUA.js → jszip.min-tyV0GaJg.js} +1 -1
  101. package/web/assets/{layout-grid-DfUfnvDS.js → layout-grid-DFmwM9NU.js} +1 -1
  102. package/web/assets/linkFollow-iP2zfbA3.js +8 -0
  103. package/web/assets/{list-tree-DaGpnIYu.js → list-tree-i07HsP3D.js} +1 -1
  104. package/web/assets/{listFold-Q_8mh5ZG.js → listFold-Aea6I0Sa.js} +1 -1
  105. package/web/assets/{lock-DQ_yL4nF.js → lock-TSDKuCod.js} +1 -1
  106. package/web/assets/{log-out-DFwTeh2X.js → log-out-DK84lW5n.js} +1 -1
  107. package/web/assets/{main-NgUPPqDn.css → main-BiS_5wrB.css} +1 -1
  108. package/web/assets/main-D7CEGndC.js +20 -0
  109. package/web/assets/markdownEditorSurface-DISu_twy.js +3 -0
  110. package/web/assets/{message-square-plus-CEHkduIL.js → message-square-plus-3wFslIMY.js} +1 -1
  111. package/web/assets/{messages-CBtmbpur.js → messages-DEAGRsC3.js} +1 -1
  112. package/web/assets/minus-BBdfT_sc.js +1 -0
  113. package/web/assets/mobileEntry-5UaAITwY.js +13 -0
  114. package/web/assets/{nativeDownload-CziEyW_p.js → nativeDownload-B3JGkABw.js} +1 -1
  115. package/web/assets/pageChrome-BDHHmRnt.css +1 -0
  116. package/web/assets/{pageChrome-DFz_AAzZ.js → pageChrome-DFi9zs6F.js} +1 -1
  117. package/web/assets/{pageTree-yVO1_fSy.js → pageTree-DZ7Eiro-.js} +4 -4
  118. package/web/assets/{pen-tool-uxsFELYC.js → pen-tool-ChGmX6g_.js} +1 -1
  119. package/web/assets/{pencil-BSbra1Ra.js → pencil-CJsJD7M_.js} +1 -1
  120. package/web/assets/phoneList-DrxIwJxQ.js +9 -0
  121. package/web/assets/phoneList-DvpzD3zT.css +1 -0
  122. package/web/assets/pluginChat-0QI9a8Q1.js +2 -0
  123. package/web/assets/{redo-2-BK5LMNa5.js → redo-2-CI57sDFr.js} +1 -1
  124. package/web/assets/{rotate-ccw-HedfU4na.js → rotate-ccw-xgT_0UN9.js} +1 -1
  125. package/web/assets/{sharePage-CpzDpuU1.js → sharePage-C2Yqx0NQ.js} +2 -2
  126. package/web/assets/{shareViewer-BwzH2bIs.js → shareViewer-DKPWhTJv.js} +2 -2
  127. package/web/assets/{star-CgYon3z4.js → star-C9KTji9N.js} +1 -1
  128. package/web/assets/tableSurface-cYs6dX6B.js +1 -0
  129. package/web/assets/{terminal-krsPf1mc.js → terminal-DPZazOQ2.js} +1 -1
  130. package/web/assets/{terminalView-4e2_u5_I.js → terminalView-CsJmxE_m.js} +1 -1
  131. package/web/assets/{theme-C6D3tMGV.css → theme-Dgqst5S9.css} +1 -1
  132. package/web/assets/{type-GJYLEhY-.js → type-C5J875vb.js} +1 -1
  133. package/web/assets/{undo-2-DCTs4Ro4.js → undo-2-BOUt5qks.js} +1 -1
  134. package/web/assets/{unitAccount-D3xjX3cu.js → unitAccount-BIAIxKNp.js} +1 -1
  135. package/web/assets/unitBridge-b2C6zb3a.js +1 -0
  136. package/web/assets/{unitCloudTransport-B44L3x6M.js → unitCloudTransport-NGtDDKWo.js} +1 -1
  137. package/web/assets/{unitOwnerAccess-CRUHWGpf.js → unitOwnerAccess-CwH9ApZT.js} +1 -1
  138. package/web/assets/{unitShim-_VzxvdEG.js → unitShim-CY8EVkKD.js} +3 -3
  139. package/web/assets/{upload-MVVRQtkj.js → upload-CrbEAW8C.js} +1 -1
  140. package/web/assets/userSpaces-B_Njvel_.js +1 -0
  141. package/web/assets/viewportLock-Bi3orrUs.css +1 -0
  142. package/web/assets/viewportLock-DZ927PNz.js +629 -0
  143. package/web/assets/{workflow-DzeW9OXR.js → workflow-DY2Cnaei.js} +1 -1
  144. package/web/assets/{zoom-in-CovPsw4g.js → zoom-in-BcuPvIYd.js} +1 -1
  145. package/web/index.html +28 -11
  146. package/web/assets/CalendarConfigView-BJtG6cqN.js +0 -1
  147. package/web/assets/CalendarView-C-FX1RED.js +0 -1
  148. package/web/assets/DashboardGridView-Ck3LKkOb.css +0 -1
  149. package/web/assets/DashboardGridView-MlO1dpuo.js +0 -17
  150. package/web/assets/ExcalidrawCanvas-D9vkBh_5.js +0 -1
  151. package/web/assets/HomepageView-BNabJQfP.css +0 -1
  152. package/web/assets/HomepageView-Trqmd3RV.js +0 -1
  153. package/web/assets/ImageStudioPanels-BfCVTnKC.js +0 -3
  154. package/web/assets/InlineFiles-BHwivGbQ.js +0 -1
  155. package/web/assets/MarkdownBlock-D8LgHFYY.js +0 -58
  156. package/web/assets/ModelPill-DrW2cG0l.js +0 -2
  157. package/web/assets/MuseLibraryView-CW78Uivf.js +0 -2
  158. package/web/assets/RunLocationPicker-BE5mxnab.css +0 -1
  159. package/web/assets/RunLocationPicker-CyVa0RJa.js +0 -38
  160. package/web/assets/SidebarRow-CsWEqPKX.css +0 -1
  161. package/web/assets/SidebarRow-D77yrSLf.js +0 -9
  162. package/web/assets/TodoListView-C3ZkMIIf.js +0 -1
  163. package/web/assets/UnifiedPage-C75y-MKT.js +0 -68
  164. package/web/assets/appStore-BC_CQv-L.css +0 -1
  165. package/web/assets/codingNavigation-CZB4v1ZW.css +0 -1
  166. package/web/assets/codingNavigation-CjeWG4xm.js +0 -47
  167. package/web/assets/dashboardSurface-Cojgf_-U.js +0 -1
  168. package/web/assets/foldActions-Dm-uAt3L.js +0 -1
  169. package/web/assets/i18n-ecQQxiMQ.css +0 -1
  170. package/web/assets/index-Bh_nLVTc.js +0 -298
  171. package/web/assets/linkFollow-C6PHGUxk.js +0 -8
  172. package/web/assets/main-CwqZ_ymb.js +0 -19
  173. package/web/assets/markdownEditorSurface-e_oMhqx-.js +0 -3
  174. package/web/assets/mdMarkStore-DjN4bf1T.js +0 -2
  175. package/web/assets/mdMarks-cmL6vzR-.js +0 -1
  176. package/web/assets/minus-BUT48dAC.js +0 -1
  177. package/web/assets/mobileEntry-qR7BAROr.js +0 -13
  178. package/web/assets/pageChrome-CovzZPdb.css +0 -1
  179. package/web/assets/pluginChat-BMFnf_j2.js +0 -2
  180. package/web/assets/tableSurface-CmDwnKnd.js +0 -1
  181. package/web/assets/unitBridge-D5JcIkAP.js +0 -1
  182. package/web/assets/userSpaces-CI4eqEgh.js +0 -1
  183. package/web/assets/viewportLock-BH26xHQO.js +0 -611
  184. package/web/assets/viewportLock-IP1zaVkz.css +0 -1
@@ -1 +1 @@
1
- import{F as e}from"./appStore-B1ynyt42.js";const o=[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]],r=e("workflow",o);export{r as W};
1
+ import{G as e}from"./appStore-CidPWYa0.js";const o=[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]],r=e("workflow",o);export{r as W};
@@ -1 +1 @@
1
- import{F as e}from"./appStore-B1ynyt42.js";const o=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]],n=e("zoom-out",o);const y=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14",key:"1vmskp"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]],x=e("zoom-in",y);export{n as Z,x as a};
1
+ import{G as e}from"./appStore-CidPWYa0.js";const o=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]],n=e("zoom-out",o);const y=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14",key:"1vmskp"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]],x=e("zoom-in",y);export{n as Z,x as a};
package/web/index.html CHANGED
@@ -236,7 +236,7 @@
236
236
  }
237
237
  </style>
238
238
  <link rel="stylesheet" href="./fonts/fonts.css">
239
- <script type="module" crossorigin src="./assets/index-Bh_nLVTc.js"></script>
239
+ <script type="module" crossorigin src="./assets/index-B5UW6SaE.js"></script>
240
240
  </head>
241
241
  <body>
242
242
  <div id="tangu-splash" aria-hidden="true">
@@ -252,7 +252,7 @@
252
252
  </svg>
253
253
  </div>
254
254
  <div id="root"></div>
255
- <script>window.FORSION_APP_VERSION="2.13.0";// Runs inline before app modules, from one source shared by Desktop, Web and Mobile.
255
+ <script>window.FORSION_APP_VERSION="2.13.2";// Runs inline before app modules, from one source shared by Desktop, Web and Mobile.
256
256
  (function () {
257
257
  var splash = document.getElementById('tangu-splash');
258
258
  if (!splash) return;
@@ -266,7 +266,9 @@
266
266
  if (saved && saved.version === 1) value = saved;
267
267
  } catch (_) { /* Default brand remains visible. */ }
268
268
  if (value.showSplash === false) { splash.remove(); return; }
269
- var reduce = matchMedia('(prefers-reduced-motion: reduce)').matches;
269
+ var reduce = matchMedia('(prefers-reduced-motion: reduce)').matches || !!(window.tangu && window.tangu.startupAppearance && window.tangu.startupAppearance.prefersReducedMotion);
270
+ if (reduce) splash.dataset.reducedMotion = '';
271
+ var softwareRendering = !!(window.tangu && window.tangu.startupAppearance && window.tangu.startupAppearance.softwareRendering);
270
272
  var animation = ['default', 'pulse', 'spin', 'none'].indexOf(value.animation) !== -1 ? value.animation : 'default';
271
273
  var style = document.createElement('style');
272
274
  style.textContent = '\
@@ -310,7 +312,7 @@
310
312
  @keyframes fts-in { from {opacity:0} }\
311
313
  #tangu-splash.out .fts-view { animation:fts-open 380ms cubic-bezier(.4,0,.2,1) both; }\
312
314
  @keyframes fts-open { to {transform:scale(1.08)} }\
313
- #tangu-splash[data-still] .fts * { animation:none; }\
315
+ #tangu-splash[data-still] .fts *, #tangu-splash[data-reduced-motion] *, #tangu-splash[data-performance-still] * { animation:none !important; }\
314
316
  @media(prefers-reduced-motion:reduce) { #tangu-splash .fts * { animation:none; } }';
315
317
  document.head.appendChild(style);
316
318
  // Tree shadow, the built-in default scene: window light on a wall, branch shadows and one Fusang verse.
@@ -325,6 +327,8 @@
325
327
  var original = splash.firstElementChild;
326
328
  function treeShadow(target) {
327
329
  try {
330
+ // Without GPU compositing the layers would be animated on the CPU: paint a smaller, complete still instead.
331
+ if (softwareRendering) splash.dataset.performanceStill = 'software';
328
332
  var look = document.documentElement.dataset.mode === 'dark'
329
333
  ? { wall: '#121419', ink: '#05070c', near: .66, far: .42, word: '#8a94a8', verse: '#ccd4e2', bloom: 'rgba(140,165,215,.1)', lit: 'radial-gradient(70% 80% at 55% 35%, rgba(235,242,255,.16), transparent 70%), linear-gradient(165deg, #7889a8, #47536c)' }
330
334
  : { wall: '#e4d9cb', ink: '#5f4636', near: .4, far: .26, word: '#9a7c68', verse: '#6b4f3e', bloom: 'transparent', lit: 'linear-gradient(160deg, #fff7ea, #fbeede)' };
@@ -333,7 +337,7 @@
333
337
  // The tree is sized and rooted relative to the window light, so its branches reach the panes at any aspect ratio.
334
338
  var rootX = cx + pw * 2.1, rootY = cy + ph * 1.946;
335
339
  // Everything on the canvases is blurred, so a capped bitmap stretched by CSS is enough on large displays.
336
- var q = Math.min(1, 1600 / Math.max(W, H));
340
+ var q = Math.min(1, (softwareRendering ? 960 : 1600) / Math.max(W, H));
337
341
  // A different verse on every launch. Storage is unavailable in the sandboxed settings preview.
338
342
  var last = -1, pick;
339
343
  try { last = parseInt(localStorage.getItem('forsion_startup_verse'), 10); } catch (_) { /* preview */ }
@@ -433,8 +437,20 @@
433
437
  } else if (animation !== 'default' || reduce) splash.dataset.customMotion = reduce ? 'none' : animation;
434
438
 
435
439
  // App readiness controls exit, with a hard upper bound even if initialization fails.
436
- var start = Date.now(), done = false, frame = 0;
440
+ var start = Date.now(), shown = start, hidden = false, done = false, frame = 0;
441
+ // Desktop creates its window hidden and shows it after the first paint, which takes a while on Windows.
442
+ // The minimum stay counts from the moment the window is on screen, not from this script.
443
+ var whenShown = window.tangu && window.tangu.startupAppearance && window.tangu.startupAppearance.whenShown;
444
+ if (typeof whenShown === 'function') {
445
+ hidden = true;
446
+ var onShown = function (at) { if (hidden) { hidden = false; shown = Math.max(start, +at || 0); } };
447
+ // No timer of its own: a slow machine can take seconds to show the window, and leaving before it does is
448
+ // the very flash this prevents. A reply that never comes ends at the ceiling below.
449
+ try { whenShown().then(onShown, onShown); } catch (_) { hidden = false; }
450
+ }
437
451
  var ceiling = setTimeout(fade, 10000);
452
+ // Every mode leaves the same way. A still scene (reduced motion, software rendering) that vanished the
453
+ // instant the app was ready read as a flash; its descendants do not animate, so only the opacity fades.
438
454
  function fade() {
439
455
  if (done) return;
440
456
  done = true;
@@ -449,12 +465,13 @@
449
465
  function waitForPaint() {
450
466
  if (done) return;
451
467
  var root = document.getElementById('root');
452
- if (!root || !root.firstChild) { frame = requestAnimationFrame(waitForPaint); return; }
468
+ if (hidden || !root || !root.firstChild) { frame = requestAnimationFrame(waitForPaint); return; }
453
469
  frame = requestAnimationFrame(function () {
454
- var elapsed = Date.now() - start;
455
- // The classic mark leaves at its loop seam; the tree shadow has none and only keeps a short minimum.
456
- var duration = reduce ? 0 : splash.dataset.scene === 'tree-shadow' ? Math.max(0, 1300 - elapsed)
457
- : Math.max(0, Math.max(1, Math.ceil((elapsed + 300) / 1600)) * 1600 - 300 - elapsed);
470
+ var now = Date.now(), elapsed = now - start, seen = now - shown;
471
+ // The classic mark leaves at a loop seam, the first one that has kept it on screen for most of a loop.
472
+ // A scene without a loop (the tree shadow, any still) keeps a short minimum instead.
473
+ var duration = reduce || splash.dataset.scene === 'tree-shadow' ? Math.max(0, 1300 - seen)
474
+ : Math.ceil((elapsed + Math.max(0, 900 - seen) + 300) / 1600) * 1600 - 300 - elapsed;
458
475
  setTimeout(fade, duration);
459
476
  });
460
477
  }
@@ -1 +0,0 @@
1
- import{j as a,u as q,d,r as la}from"./index-Bh_nLVTc.js";import{p as oa,bl as ra,j2 as ia,i_ as J,j4 as ma,j6 as da,iU as ua,jP as fa,jb as F,jm as ha,j7 as pa,b as _,iV as ga,iW as xa,iX as ba,iY as ja,jQ as j,iZ as D,jg as va,je as Ca,jd as Na,G as wa,W as X,J as $,ap as Da,ar as aa,ah as Q,fJ as H,f5 as Sa,jR as ea,jS as za,jT as Z,jU as K,jV as Ma,fl as ka,jW as ya,jX as Aa,R as Pa,jY as Fa}from"./appStore-B1ynyt42.js";import"./client-DxGbwZLy.js";import{A as qa}from"./astryxBridge-CU_kQTEl.js";import{u as O}from"./calendarNavStore-DGvUlU5N.js";import{C as Ea}from"./CapabilityMenu-kx1TIJYN.js";import{H as Ia}from"./hard-drive-BQsHSala.js";import{S as Ta}from"./star-CgYon3z4.js";import{C as Ra}from"./CheckboxInput-eW7xdiRS.js";import{U as La}from"./upload-MVVRQtkj.js";import"./nativeDownload-CziEyW_p.js";import"./ipc-CPhL3bPp.js";import"./Tooltip-D9Dt9ZTr.js";la({"calcfg.prevMonth":{zh:"上个月",en:"Previous month"},"calcfg.nextMonth":{zh:"下个月",en:"Next month"},"calcfg.jumpToDay":{zh:"跳转到这一天",en:"Jump to this day"},"calcfg.cloud":{zh:"云端",en:"Cloud"},"calcfg.title":{zh:"日历",en:"Calendars"},"calcfg.empty":{zh:"还没有加入日历的多维表。",en:"No databases added to the calendar yet."},"calcfg.eventColor":{zh:"事件颜色",en:"Event color"},"calcfg.fetchFailed":{zh:"拉取失败",en:"Fetch failed"},"calcfg.isDefaultAria":{zh:"{name} 是新建默认日历",en:"{name} is the default calendar for new events"},"calcfg.setDefaultAria":{zh:"将 {name} 设为新建默认日历",en:"Make {name} the default calendar for new events"},"calcfg.defaultCalendar":{zh:"新建默认日历",en:"Default calendar for new events"},"calcfg.setAsDefault":{zh:"设为新建默认日历",en:"Set as default for new events"},"calcfg.showInCalendar":{zh:"在日历中显示",en:"Show in calendar"},"calcfg.more":{zh:"更多",en:"More"},"calcfg.addCalendar":{zh:"添加日历",en:"Add calendar"},"calcfg.addDatabase":{zh:"添加多维表",en:"Add database"},"calcfg.subscribeExternal":{zh:"订阅外部日历",en:"Subscribe to external calendar"},"calcfg.subscribeHint":{zh:"粘贴 .ics 订阅地址(Google / Outlook / Apple 日历「密钥地址」都行)",en:"Paste an .ics subscription URL (Google, Outlook, or Apple Calendar's private address all work)"},"calcfg.importIcs":{zh:"导入 .ics 文件",en:"Import .ics file"},"calcfg.fileTooLarge":{zh:"文件过大(> {mb}MB)",en:"File too large (over {mb} MB)"},"calcfg.notIcs":{zh:"这不是一个 .ics 日历文件",en:"That isn't an .ics calendar file"},"calcfg.readFailed":{zh:"读取失败:{msg}",en:"Failed to read: {msg}"},"calcfg.renameCalendar":{zh:"重命名日历",en:"Rename calendar"},"calcfg.renameSub":{zh:"重命名订阅",en:"Rename subscription"},"calcfg.rename":{zh:"重命名",en:"Rename"},"calcfg.refreshNow":{zh:"立即刷新",en:"Refresh now"},"calcfg.unsubscribe":{zh:"取消订阅",en:"Unsubscribe"},"calcfg.setDefaultDb":{zh:"设为默认库",en:"Set as default"},"calcfg.openInNewTab":{zh:"在新标签打开",en:"Open in new tab"},"calcfg.columnMapping":{zh:"日历设置(列映射)",en:"Calendar settings (column mapping)"},"calcfg.removeFromCalendar":{zh:"从日历移除",en:"Remove from calendar"},"calcfg.searchDbPlaceholder":{zh:"搜索要加入日历的多维表…",en:"Search databases to add to the calendar…"},"calcfg.noCandidates":{zh:"没有含日期属性的可添加多维表",en:"No databases with a date property available to add"},"calcfg.footHint":{zh:"只有含「日期」属性的多维表会出现在这里",en:"Only databases with a Date property appear here"},"calcfg.weekStart":{zh:"一周开始于",en:"Week starts on"},"calcfg.weekStart.auto":{zh:"跟随语言({day})",en:"Default ({day})"},"calcfg.weekStart.sun":{zh:"周日",en:"Sunday"},"calcfg.weekStart.mon":{zh:"周一",en:"Monday"}});function Ha(){const{t:s}=q(),n=Z(c=>c.pref),p=Z(c=>c.setPref),i=c=>s(c===1?"calcfg.weekStart.mon":"calcfg.weekStart.sun"),u=[{value:"auto",label:s("calcfg.weekStart.auto",{day:i(Fa())})},{value:0,label:i(0)},{value:1,label:i(1)}],f=u.find(c=>c.value===n)??u[0];return a.jsxs("div",{className:"amx-calcfg-weekstart","data-week-start":n,children:[a.jsx("span",{className:"amx-calcfg-weekstart-label",children:s("calcfg.weekStart")}),a.jsxs(Ea,{label:`${s("calcfg.weekStart")} · ${f.label}`,className:"capability-menu-trigger amx-calcfg-weekstart-btn",selection:!0,items:u.map(c=>({id:`week-start:${c.value}`,label:c.label,selected:c.value===n,onSelect:()=>p(c.value)})),children:[a.jsx("span",{children:f.label}),a.jsx(aa,{size:13})]})]})}function se(){return a.jsx(qa,{children:a.jsxs("div",{className:"amx-calside",children:[a.jsx(Oa,{}),a.jsx(Wa,{})]})})}const W=s=>new Date(s.getFullYear(),s.getMonth(),1);function Oa(){const{t:s}=q(),n=oa(t=>(t.mainTabs,((t.api?ra(t.api):null)?.params??{}).__type==="calendar")),p=O(t=>t.visibleStart),i=O(t=>t.visibleEnd),u=O(t=>t.requestJump),f=d.useMemo(()=>ia(new Date),[]),[c,h]=d.useState(()=>W(f));d.useEffect(()=>{if(n&&p&&i){const t=J(p),b=ma(t,Math.floor(da(J(i),t)/2));h(W(b))}},[n,p,i]);const v=ua(),x=d.useMemo(()=>fa(c),[c,v]),C=F(f,!0),o=t=>{if(!n||!p||!i)return!1;const b=F(t,!0);return b>=p&&b<=i},N=t=>{h(W(t)),n&&u(F(t,!0))};return a.jsxs("div",{className:"amx-mini",children:[a.jsxs("div",{className:"amx-mini-head",children:[a.jsx("button",{className:"amx-mini-nav",onClick:()=>h(new Date(c.getFullYear(),c.getMonth()-1,1)),"aria-label":s("calcfg.prevMonth"),children:"‹"}),a.jsx("span",{className:"amx-mini-title",children:ha(c)}),a.jsx("button",{className:"amx-mini-nav",onClick:()=>h(new Date(c.getFullYear(),c.getMonth()+1,1)),"aria-label":s("calcfg.nextMonth"),children:"›"})]}),a.jsx("div",{className:"amx-mini-dow",children:pa().map(t=>a.jsx("span",{children:t},t))}),a.jsx("div",{className:"amx-mini-grid",children:x.map(t=>{const b=t.getMonth()!==c.getMonth(),E=F(t,!0)===C;return a.jsx("button",{className:`amx-mini-day${b?" out":""}${E?" today":""}${o(t)?" band":""}`,onClick:()=>N(t),title:n?s("calcfg.jumpToDay"):void 0,children:t.getDate()},+t)})})]})}function Wa(){const{t:s}=q(),n=_(e=>e.vaultRoot)??"",i=_(e=>e.vaultSide)==="cloud"?s("calcfg.cloud"):n.split(/[\\/]/).pop()||n,u=ga(),f=xa(),c=ba(),h=ja(),v=j(e=>e.errors),x=D(e=>e.byVault),C=D(e=>e.setColor),o=D(e=>e.toggleHidden),N=D(e=>e.setDefault),t=D(e=>e.addMember),b=D(e=>e.removeMember),[E,I]=d.useState(!1),[T,S]=d.useState(null),[B,k]=d.useState(null),[m,g]=d.useState(null),[z,y]=d.useState(null),sa=d.useMemo(()=>new Set(u.map(e=>e.db.path)),[u]),U=[...u.map(e=>({db:e.db})),...f.map(e=>({db:e,readonly:!0,kind:"agent"})),...c.map(e=>({db:e,readonly:!0,kind:"other"})),...h.map(e=>({db:e,readonly:!0,kind:"ics"}))],V=va(n,x),ta=e=>{g(null),H(s("calcfg.renameCalendar"),e.name).then(r=>{const l=r?.trim();l&&l!==e.name&&ka.getState().mutate(e.path,A=>({...A,name:l}))})},M=e=>e.slice(6),Y=e=>v[M(e)],na=()=>{H(s("calcfg.subscribeExternal"),"",{label:s("calcfg.subscribeHint")}).then(e=>{const r=e?.trim();r&&j.getState().add(r)})},ca=()=>{const e=document.createElement("input");e.type="file",e.accept=".ics,text/calendar",e.onchange=()=>{const r=e.files?.[0];if(r){if(r.size>K){k(s("calcfg.fileTooLarge",{mb:K/1024/1024}));return}k(null),r.text().then(l=>{j.getState().importText(Ma(l)||r.name.replace(/\.ics$/i,""),l)||k(s("calcfg.notIcs"))}).catch(l=>k(s("calcfg.readFailed",{msg:l?.message||String(l)})))}},e.click()};return a.jsxs("div",{className:"amx-calcfg",children:[a.jsx("div",{className:"amx-calcfg-head",children:s("calcfg.title")}),U.length===0&&a.jsx("div",{className:"amx-calcfg-empty",children:s("calcfg.empty")}),a.jsx("div",{className:"amx-calcfg-list",children:U.map(({db:e,readonly:r,kind:l},A)=>{const R=Ca(n,x,e.path,A),L=!Na(n,x,e.path),P=V?V===e.path:A===0;return a.jsxs("div",{className:"amx-calcfg-row",children:[a.jsx("span",{className:"amx-calcfg-type","aria-hidden":"true",children:l==="agent"?a.jsx(wa,{size:14}):l==="ics"?a.jsx(X,{size:14}):l==="other"?a.jsx(Ia,{size:14}):a.jsx($,{size:14})}),a.jsx("span",{className:"amx-calcfg-swatch",style:{background:L?R:"transparent",borderColor:R},children:a.jsx("input",{type:"color",value:R,onChange:w=>C(n,e.path,w.target.value),title:s("calcfg.eventColor")})}),a.jsxs("span",{className:`amx-calcfg-name${L?"":" off"}`,title:Y(e.path)||e.name,children:[e.name,l==="ics"&&Y(e.path)&&a.jsxs("span",{className:"amx-cal-vault",children:[" · ",s("calcfg.fetchFailed")]}),(()=>{const w=l==="agent"?"":l==="other"?e.vaultLabel||"":i;return w?a.jsxs("span",{className:"amx-cal-vault",children:[" · ",w]}):null})()]}),!r&&a.jsx("button",{className:`amx-calcfg-def${P?" on":""}`,"aria-label":P?s("calcfg.isDefaultAria",{name:e.name}):s("calcfg.setDefaultAria",{name:e.name}),title:s(P?"calcfg.defaultCalendar":"calcfg.setAsDefault"),onClick:()=>N(n,e.path),children:a.jsx(Ta,{size:13,fill:P?"currentColor":"none"})}),a.jsx(Ra,{label:s("calcfg.showInCalendar"),isLabelHidden:!0,size:"sm",value:L,onChange:()=>o(n,e.path)}),(!r||l==="ics")&&a.jsx("button",{className:"amx-calcfg-more",title:s("calcfg.more"),onClick:w=>{const G=w.currentTarget.getBoundingClientRect();g({db:e,ics:l==="ics",x:Math.min(G.left,window.innerWidth-180),y:G.bottom+4})},children:"⋯"})]},e.path)})}),a.jsxs("button",{className:"amx-calcfg-add amx-calcfg-add-main",onClick:e=>{const r=e.currentTarget.getBoundingClientRect();S({x:Math.max(12,r.left),y:r.bottom+4})},children:[a.jsx(Da,{size:14})," ",s("calcfg.addCalendar")," ",a.jsx(aa,{size:13})]}),B&&a.jsx("div",{className:"amx-calcfg-hint",style:{color:"var(--danger)"},children:B}),a.jsx(Ha,{}),T&&a.jsx("div",{className:"amx-db-popwrap",onMouseDown:()=>S(null),children:a.jsxs(Q,{className:"amx-db-pop amx-calcfg-addmenu",x:T.x,y:T.y,onMouseDown:e=>e.stopPropagation(),children:[a.jsxs("button",{className:"amx-db-opt",onClick:()=>{S(null),I(!0)},children:[a.jsx($,{size:14})," ",s("calcfg.addDatabase")]}),a.jsxs("button",{className:"amx-db-opt",onClick:()=>{S(null),na()},children:[a.jsx(X,{size:14})," ",s("calcfg.subscribeExternal")]}),a.jsxs("button",{className:"amx-db-opt",onClick:()=>{S(null),ca()},children:[a.jsx(La,{size:14})," ",s("calcfg.importIcs")]})]})}),m&&a.jsx("div",{className:"amx-db-popwrap",onMouseDown:()=>g(null),children:a.jsx(Q,{className:"amx-db-pop amx-calcfg-menu",x:m.x,y:m.y,onMouseDown:e=>e.stopPropagation(),children:m.ics?a.jsxs(a.Fragment,{children:[!!j.getState().subs.find(e=>e.id===M(m.db.path))?.url&&a.jsx("button",{className:"amx-db-opt",onClick:()=>{j.getState().refresh(M(m.db.path)),g(null)},children:s("calcfg.refreshNow")}),a.jsx("button",{className:"amx-db-opt",onClick:()=>{const e=M(m.db.path),r=m.db.name;g(null),H(s("calcfg.renameSub"),r).then(l=>{l?.trim()&&j.getState().rename(e,l.trim())})},children:s("calcfg.rename")}),a.jsx("button",{className:"amx-db-opt amx-db-opt-danger",onClick:()=>{j.getState().remove(M(m.db.path)),g(null)},children:s("calcfg.unsubscribe")})]}):a.jsxs(a.Fragment,{children:[a.jsx("button",{className:"amx-db-opt",onClick:()=>ta(m.db),children:s("calcfg.rename")}),a.jsx("button",{className:"amx-db-opt",onClick:()=>{N(n,m.db.path),g(null)},children:s("calcfg.setDefaultDb")}),a.jsx("button",{className:"amx-db-opt",onClick:()=>{Sa(m.db.path),g(null)},children:s("calcfg.openInNewTab")}),a.jsx("button",{className:"amx-db-opt",onClick:()=>{y(m.db),g(null)},children:s("calcfg.columnMapping")}),a.jsx("button",{className:"amx-db-opt amx-db-opt-danger",onClick:()=>{b(n,m.db.path),g(null)},children:s("calcfg.removeFromCalendar")})]})})}),E&&a.jsx($a,{memberPaths:sa,onClose:()=>I(!1),onAdd:(e,r,l)=>{t(n,e.path,r,l),I(!1)}}),z&&a.jsx("div",{className:"amx-db-popwrap",onMouseDown:()=>y(null),children:a.jsx("div",{className:"amx-db-pop amx-calpick-pop",onMouseDown:e=>e.stopPropagation(),children:a.jsx(ea,{dbName:z.name,columns:z.columns,initial:za(n,x,z.path),onCancel:()=>y(null),onConfirm:(e,r)=>{t(n,z.path,e,r),y(null)}})})})]})}function $a({memberPaths:s,onClose:n,onAdd:p}){const{t:i}=q(),u=ya(),[f,c]=d.useState(""),[h,v]=d.useState(null),x=d.useMemo(()=>u.filter(o=>!s.has(o.path)&&o.columns.some(Aa)),[u,s]),C=f?x.filter(o=>o.name.toLowerCase().includes(f.toLowerCase())):x;return a.jsx("div",{className:"amx-qf-scrim",onMouseDown:n,children:h?a.jsx("div",{className:"amx-qf-card",onMouseDown:o=>o.stopPropagation(),children:a.jsx(ea,{dbName:h.name,columns:h.columns,onCancel:()=>v(null),onConfirm:(o,N)=>p(h,o,N)})}):a.jsxs("div",{className:"amx-qf",onMouseDown:o=>o.stopPropagation(),children:[a.jsxs("div",{className:"amx-qf-head",children:[a.jsx(Pa,{size:16,className:"amx-qf-searchicon"}),a.jsx("input",{autoFocus:!0,className:"amx-qf-input",placeholder:i("calcfg.searchDbPlaceholder"),value:f,onChange:o=>c(o.target.value)})]}),a.jsxs("div",{className:"amx-qf-list",children:[C.map(o=>a.jsxs("button",{className:"amx-qf-row",onClick:()=>v(o),children:[a.jsx("span",{className:"amx-qf-icon",children:a.jsx($,{size:15})}),a.jsx("span",{className:"amx-qf-title",children:o.name||o.path}),a.jsx("span",{className:"amx-qf-sub",children:o.path.replace(/\\/g,"/").split("/").slice(0,-1).join("/")||"/"})]},o.path)),C.length===0&&a.jsx("div",{className:"amx-qf-empty",children:i("calcfg.noCandidates")})]}),a.jsx("div",{className:"amx-qf-foot",children:i("calcfg.footHint")})]})})}export{se as CalendarConfigView};
@@ -1 +0,0 @@
1
- import{d as n,j as s,t as we,r as Je,u as ze}from"./index-Bh_nLVTc.js";import{F as xt,iU as ft,iV as mt,iW as ht,iX as pt,iY as yt,u as gt,b as kt,iZ as bt,i_ as me,i$ as vt,j0 as G,j1 as be,j2 as Q,j3 as wt,c4 as jt,aJ as $t,j4 as ae,j5 as Te,j6 as $e,j7 as Mt,j8 as Qe,j9 as et,ja as fe,ag as xe,jb as J,jc as Ct,jd as zt,je as Et,jf as Dt,jg as Tt,jh as St,ji as Nt,jj as qe,jk as Rt,jl as We,jm as At,jn as He,jo as It,jp as tt}from"./appStore-B1ynyt42.js";import"./client-DxGbwZLy.js";import{u as Lt,p as ee,m as he,t as pe,S as Pt,a as qt,b as Wt,r as Ht,c as Kt,I as Ft,l as Ot,A as Vt}from"./astryxBridge-CU_kQTEl.js";import{u as te,H as Bt}from"./calendarNavStore-DGvUlU5N.js";import{u as Gt}from"./mdMarkStore-DjN4bf1T.js";import{E as Yt,d as Xt}from"./EventCard-CDmeCbI8.js";import{Z as Ut,a as _t}from"./zoom-in-CovPsw4g.js";import{R as Zt}from"./rotate-ccw-HedfU4na.js";import"./nativeDownload-CziEyW_p.js";import"./ipc-CPhL3bPp.js";import"./mdMarks-cmL6vzR-.js";const Jt=[["path",{d:"M16 19h6",key:"xwg31i"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M19 16v6",key:"tddt3s"}],["path",{d:"M21 12.598V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8.5",key:"1glfrc"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M8 2v4",key:"1cmpym"}]],Qt=xt("calendar-plus",Jt);function nt({children:e,as:t="span",ref:a,...u}){return n.createElement(t,{ref:a,...u,className:"x10l6tqk x1i1rx1s xjm9jq1 xkdpibf x1717udv xb3r6kr xzpqnlu xuxw1ft xng3xce x13vifvy x1o0tod x47corl x87ps6o"},e)}nt.displayName="VisuallyHidden";const en="data-astryx-edge-comp",Re=n.createContext(null);Re.displayName="SizeContext";function tn(e,t="md"){const a=n.use(Re);return e??a??t}Re.Provider;const st=n.createContext(null);st.displayName="ButtonGroupContext";function nn(){return n.use(st)}const rt=n.createContext(null);rt.displayName="LinkContext";function sn(e){function t({href:a,ref:u,...x}){return n.createElement(e,{ref:u,href:a,to:a,...x})}return t.displayName=`LinkWithTo(${typeof e=="string"?e:e.displayName||e.name||"Component"})`,t}function at(e){const t=n.use(rt),a=e??t?.component??"a";return n.useMemo(()=>a==="a"?"a":sn(a),[a])}const re={base:{kVAEAm:"x1n2onr6",k1xSpc:"x3nfvp2",kGNEyG:"x6s0dn4",kjj79g:"xl56j7k",kOIVth:"x1txdalj",k8WAf4:"xce4md1",kg3NbH:"xrrkdod",kMzoRj:"xc342km",ksu8eU:"xng3xce",kaIpWk:"x1jxw6zd",kMv6JI:"xjb2p0i",kGuDYH:"xcr08ib",kLWn49:"x1kq96og",k63SB2:"x1e4wzip",khDVqt:"xuxw1ft",kkrTdU:"x1ypdohk",k1ekBW:"xrafxwg",kIyJzY:"xuedmi6 x12w9bfk",kAMwcw:"xlr8y92",$$css:!0},pressable:{k3aq6I:"x3oybdh xk4oym4",$$css:!0},disabled:{kkrTdU:"x1h6gzvc",kSiTet:"xbyyjgo",kKwaWg:"x18o3ruo",k3aq6I:"x1c071of x1pdlv7q",$$css:!0},ariaDisabled:{kKwaWg:"x18o3ruo x8o3jvd xuqm82a",$$css:!0},iconOnly:{"--button-icon-only-aspect":"x1v15ycx",kOBAk4:"xioom0i",kg3NbH:"xnjsko4",k8WAf4:"xt970qd",$$css:!0},iconWrapper:{k1xSpc:"x3nfvp2",kGNEyG:"x6s0dn4",kjj79g:"xl56j7k",kmuXW:"x2lah0s",$$css:!0},contentWrapper:{k1xSpc:"xjp7ctv",$$css:!0},link:{kybGjl:"x1hl2dhg",$$css:!0}},rn={sm:{kZKoxP:"x6k0iem",$$css:!0},md:{kZKoxP:"x1ueg155",$$css:!0},lg:{kZKoxP:"xssyfek",$$css:!0}},an={sm:{kzqmXN:"x1kky2od",kZKoxP:"xlup9mm",kGuDYH:"x1j61zf2",$$css:!0},md:{kzqmXN:"x1kky2od",kZKoxP:"xlup9mm",kGuDYH:"x1j61zf2",$$css:!0},lg:{kzqmXN:"xw4jnvo",kZKoxP:"x1qx5ct2",kGuDYH:"xwsyq91",$$css:!0}},on={primary:{kWkggS:"x1ewilqj",kMwMTN:"x17wrial",kKwaWg:"x1ilzqfv xq8i9tn",kI3sdo:"x17nn4n9","--button-focus-offset":"xkzo27j",kInvED:"x1wfwxd8 x13aywxo",$$css:!0},secondary:{kWkggS:"x17x4s8c",kMwMTN:"x1tgivj0",kKwaWg:"x1ilzqfv xq8i9tn",kI3sdo:"x17nn4n9","--button-focus-offset":"xkzo27j",kInvED:"x1wfwxd8 x13aywxo",$$css:!0},ghost:{kWkggS:"xjbqb8w",kMwMTN:"x1tgivj0",kKwaWg:"x1ilzqfv xq8i9tn",kI3sdo:"x17nn4n9","--button-focus-offset":"xkzo27j",kInvED:"x1wfwxd8 x13aywxo",$$css:!0},destructive:{kWkggS:"x1pjz0fi",kMwMTN:"x1m024r3",kKwaWg:"x1ilzqfv xq8i9tn",kI3sdo:"x1p73he7","--button-focus-offset":"xkzo27j",kInvED:"x1wfwxd8 x13aywxo",$$css:!0}},Ke={hiddenContent:{kMwMTN:"x19co3pv",$$css:!0},hiddenContentDelayed:{kKVMdj:"x1ffowhz",k44tkh:"xjlvqhv",kWV6AL:"x10e4vud",kKxzle:"x17yabm6 x14q22ui",$$css:!0}},je={horizontal:{krdFHd:"x15mokao x8eehn2",kVL7Gh:"xbiv7yw x1xrp5p4",kfmiAY:"x1ga7v0g x11xp8u1",kT0f0o:"x16uus16 x747jw7",k2ei4v:"xgbv0en x1pjv70x",kVhnKS:"x1t7ytsu xyf0ibl",kGJrpR:"x1j92z86",$$css:!0},vertical:{krdFHd:"x15mokao x8eehn2",kfmiAY:"x1ga7v0g x2qxyot",kVL7Gh:"xbiv7yw x1yp72r9",kT0f0o:"x16uus16 x747jw7",kEafiO:"x11xkdxz x1g31smg",kPef9Z:"x13fuv20 x1d9v4yf",kLZC3w:"x1pc3f07",$$css:!0},onSolidHorizontal:{kGJrpR:"xrvmtm5",$$css:!0},onSolidVertical:{kLZC3w:"x11npmm7",$$css:!0}};function ce({label:e,variant:t="secondary",size:a,type:u="button",isDisabled:x=!1,isLoading:z=!1,isInterruptible:$=!1,clickAction:y,icon:M,isIconOnly:l=!1,children:c,endContent:g,tooltip:v,href:T,as:D,target:C,rel:p,xstyle:K,className:I,style:A,ref:S,...P}){const h=tn(a,"md"),E=nn(),[N,i]=n.useTransition(),f=n.useRef(!1),k=z||N,w=N||$,q=E?.isDisabled??!1,W=x||q||k&&!$,X=at(D),F=T!=null&&!W,V=v!=null&&W,d=Lt({placement:"above",isEnabled:v!=null}),R=U=>{if(W||f.current&&!$){U.preventDefault();return}P.onClick?.(U),y&&!U.defaultPrevented&&(f.current=!0,i(async()=>{try{await y(U)}finally{f.current=!1}}))},H=V?U=>{U.key==="Enter"||U.key===" "?U.preventDefault():P.onKeyDown?.(U)}:void 0,O=t==="ghost"?{[en]:""}:null,o=ee(re.base,rn[h],on[t],l&&re.iconOnly,W&&re.disabled,V&&re.ariaDisabled,F&&re.link,!E&&re.pressable,E&&(E.orientation==="horizontal"?je.horizontal:je.vertical),E&&(t==="primary"||t==="destructive")&&(E.orientation==="horizontal"?je.onSolidHorizontal:je.onSolidVertical),K),r=he(pe("button",{variant:t,size:h}),o,I,A),m=s.jsxs(s.Fragment,{children:[k&&s.jsx("span",{...{0:{className:"x10l6tqk x13vifvy xu96u03 x3m8u43 x1ey2m1c xrvj5dj x1ku5rj1"},1:{className:"x10l6tqk x13vifvy xu96u03 x3m8u43 x1ey2m1c xrvj5dj x1ku5rj1 xqcmdr3 xb2rp9n xskzprw x17yabm6 x14q22ui"}}[!!w<<0],"aria-hidden":"true",children:s.jsx(Pt,{size:"sm",shade:"inherit"})}),s.jsxs("span",{...ee(re.contentWrapper,k&&(w?Ke.hiddenContentDelayed:Ke.hiddenContent)),"aria-hidden":k||void 0,children:[M&&s.jsx("span",{...ee(re.iconWrapper,an[h]),children:M}),l?null:s.jsx("span",{className:"xb3r6kr xlyipyv xeuugli",children:c??e}),!l&&g&&s.jsx("span",{className:"x3nfvp2 x6s0dn4 x1heor9g",children:g})]}),s.jsx(nt,{role:"status","aria-live":"polite",children:k?"Loading":""})]}),b=l&&e!==""||k&&!l||c!=null&&c!==e?{"aria-label":e}:null,L=v!=null?{"aria-describedby":[P["aria-describedby"],d.describedBy].filter(Boolean).join(" ")||void 0}:null,B=qt(S,v!=null?d.ref:void 0);let ne;return F?ne=s.jsx(X,{ref:B,href:T,target:C,rel:p,...r,...P,...b,...L,...O,onClick:R,children:m}):ne=s.jsx("button",{ref:B,type:u,disabled:V?void 0:W,...r,...P,...b,...L,...O,"aria-busy":k||void 0,"aria-disabled":V||void 0,onClick:R,...H?{onKeyDown:H}:null,children:m}),v?s.jsxs(s.Fragment,{children:[ne,d.renderTooltip(v)]}):ne}ce.displayName="Button";const ln='button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"]):not([disabled]), [contenteditable]:not([contenteditable="false"]), audio[controls], video[controls], iframe, details > summary:first-child',ve=[];function cn(e){ve.push(e)}function un(e){const t=ve.lastIndexOf(e);t!==-1&&ve.splice(t,1)}function dn(e){return ve[ve.length-1]===e}function xn(e){return e.isComposing===!0||e.keyCode===229}function fn(e){if(e.hasAttribute("inert")||e.closest("[inert]")||e.hidden||e.closest("[hidden]"))return!1;if(typeof window<"u"&&window.getComputedStyle){const t=window.getComputedStyle(e);if(t.visibility==="hidden"||t.display==="none")return!1}return!0}function Ae(e){return Array.from(e.querySelectorAll(ln)).filter(fn)}function ot(e){try{e.focus()}catch{}return document.activeElement===e}function Fe(e){const t=Ae(e);for(const a of t)if(ot(a))return!0;return!1}function mn(e){const t=Ae(e);for(let a=t.length-1;a>=0;a--)if(ot(t[a]))return!0;return!1}function hn(e){const{isActive:t,onEscape:a}=e,u=n.useRef(null),x=n.useRef(null),z=n.useRef(!1),$=n.useCallback(()=>{u.current&&Fe(u.current)},[]);return n.useEffect(()=>{if(!t)return;const y=M=>{const l=u.current;if(!l)return;const c=M.target;l.contains(c)?x.current=c:z.current&&(Fe(l),x.current===document.activeElement&&mn(l),x.current=document.activeElement),z.current=!1};return document.addEventListener("focus",y,!0),()=>{document.removeEventListener("focus",y,!0)}},[t]),n.useEffect(()=>{if(!t)return;const y=()=>{a?.()};a&&cn(y);const M=l=>{const c=u.current;if(c){if(l.key==="Escape"&&a){if(l.defaultPrevented||xn(l)||!dn(y))return;l.preventDefault(),l.stopPropagation(),a();return}if(l.key==="Tab"){z.current=!0;const g=Ae(c);if(g.length===0)return;const v=g[0],T=g[g.length-1];l.shiftKey?document.activeElement===v&&(l.preventDefault(),T.focus()):document.activeElement===T&&(l.preventDefault(),v.focus())}}};return document.addEventListener("keydown",M),()=>{document.removeEventListener("keydown",M),a&&un(y)}},[t,a]),{containerRef:u,focusFirst:$}}const Oe={surface:{kWkggS:"x1prclbq",kaIpWk:"x1hviunn",kGVxlE:"x1i5ehqx",$$css:!0},contentWrapper:{kVAEAm:"x1n2onr6",$$css:!0}};function pn(e={}){const{onShow:t,onHide:a,xstyle:u,hasLightDismiss:x=!0,hasEscapeDismiss:z=!0,hasAutoFocus:$=!0,hasSurface:y=!0,hasCloseButton:M=!0,closeButtonLabel:l="Close popover",dialogLabel:c,role:g="dialog",isModal:v=!0}=e,T=n.useRef(null),D=n.useRef(!1),C=Wt({mode:"context",lightDismiss:x,onShow:t,onHide:a}),{containerRef:p,focusFirst:K}=hn({isActive:C.isOpen,onEscape:z||x?C.hide:void 0});n.useEffect(()=>{C.isOpen&&$&&!D.current&&requestAnimationFrame(()=>{K()}),C.isOpen||(D.current=!1)},[C.isOpen,$,K]);const I=n.useCallback(N=>{T.current=N,C.ref(N)},[C]),A=n.useCallback(N=>{D.current=N?.skipAutoFocus??!1,C.show()},[C]),S=n.useCallback(()=>{C.isOpen?C.hide():A()},[C,A]),P={"aria-haspopup":g==="dialog"?"dialog":"true","aria-expanded":C.isOpen,"aria-controls":C.id},h=n.useRef(!1);n.useEffect(()=>{g==="dialog"&&!c&&!h.current&&(h.current=!0,console.warn('usePopover: role="dialog" without a `dialogLabel` renders an unnamed dialog. Pass `dialogLabel`, or use `role: "none"` for listbox/menu popups whose content already carries its own role.'))},[g,c]);const E=n.useCallback((N,i)=>C.render(s.jsxs("div",{ref:p,role:g==="dialog"?"dialog":void 0,"aria-modal":g==="dialog"&&v?!0:void 0,"aria-label":g==="dialog"?c:void 0,...ee(Oe.contentWrapper,y&&Oe.surface,u),children:[N,M&&s.jsx("div",{className:"x10l6tqk x1ey2m1c x1nrll8i x31h1t8 x1vjfegm x1i1rx1s x10okhzq xjm9jq1 x132qfvm xb3r6kr x1dordxg x1hyvwdk x10wafsz x47corl xbt4iw xexx8yu x1kw28su",children:s.jsx(ce,{variant:"secondary",label:l,onClick:C.hide})})]}),{...i,xstyle:i?.xstyle}),[C,M,y,l,p,c,g,v,u]);return{triggerRef:I,contentRef:p,anchorId:C.anchorId,show:A,hide:C.hide,toggle:S,isOpen:C.isOpen,id:C.id,render:E,triggerProps:P}}const Ve={horizontal:{k1xSpc:"x78zum5",kGNEyG:"x6s0dn4",kzqmXN:"xh8yej3",$$css:!0},vertical:{k1xSpc:"x3nfvp2",kXwgrk:"xdt5ytf",kGNEyG:"x6s0dn4",kZKoxP:"x5yr21d",$$css:!0}},de={horizontalLine:{kZKoxP:"xsyqizj",kzQI83:"x1iyjqo2",kmuXW:"xs83m0k",$$css:!0},verticalLine:{kzqmXN:"xjk4fl7",kzQI83:"x1iyjqo2",kmuXW:"xs83m0k",$$css:!0},subtle:{kWkggS:"x1m4xfpy",$$css:!0},strong:{kWkggS:"x7njt3n",$$css:!0}},Be={horizontal:{keTefX:"xojxgvx",k71WvV:"x1fcf3bl",kzqmXN:"xx6qvi6",$$css:!0},vertical:{keoZOQ:"x1sa9bsh",k1K539:"x6h7pi7",kZKoxP:"x12qplqi",$$css:!0}};function lt({orientation:e="horizontal",label:t,variant:a="subtle",isFullBleed:u=!1,xstyle:x,className:z,style:$,ref:y,...M}){const l=e==="horizontal";return s.jsxs("div",{ref:y,role:"separator","aria-orientation":e,...he(pe("divider",{variant:a,orientation:e}),ee(l?Ve.horizontal:Ve.vertical,u&&(l?Be.horizontal:Be.vertical),x),z,$),...M,children:[s.jsx("div",{...ee(l?de.horizontalLine:de.verticalLine,de[a])}),t&&s.jsx("div",{...{0:{className:"x2lah0s xrrkdod x141an7d x1ltkj2j xv1l7n4"},1:{className:"x2lah0s x141an7d x1ltkj2j xv1l7n4 xnjsko4 x8o8v82"}}[!l<<0],children:t}),t&&s.jsx("div",{...ee(l?de.horizontalLine:de.verticalLine,de[a])})]})}lt.displayName="Divider";const yn=["noopener","noreferrer"];function gn(e,t){if(e!=="_blank")return{target:e,rel:t};const a=t?.split(/\s+/).filter(Boolean)??[];for(const u of yn)a.includes(u)||a.push(u);return{target:e,rel:a.join(" ")}}const _={root:{k1xSpc:"x78zum5",kGNEyG:"x6s0dn4",kOIVth:"x1txdalj",kg3NbH:"xf314gf",kVAEAm:"x1n2onr6",kB7OPa:"x9f619",k9WMMc:"x1yc453h",kaIpWk:"xh6dtrn",$$css:!0},alignStart:{kGNEyG:"x1cy8zhl",$$css:!0},interactive:{kkrTdU:"x1ypdohk",k1ekBW:"x15406qy",kIyJzY:"xkvfbh3",kAMwcw:"xlr8y92",kWkggS:"xjbqb8w xe9uy6x xyxi2l3",$$css:!0},focusVisibleOutline:{kI3sdo:"x1a2a7pz x1irc7jg",kInvED:"x1wfwxd8 xdjuwb3",$$css:!0},highlighted:{kWkggS:"x1lmrjuc",$$css:!0},selected:{kWkggS:"xgcxg3y",$$css:!0},disabled:{kkrTdU:"x1h6gzvc",kfzvcC:"x47corl",$$css:!0},label:{kMwMTN:"x1tgivj0",kGuDYH:"xjm74w1",kLWn49:"xw6l6zx",$$css:!0},labelSingleTruncate:{kVQacm:"xb3r6kr",kg5iWk:"xlyipyv",khDVqt:"xuxw1ft",$$css:!0},labelMultiTruncate:{kVQacm:"xb3r6kr",k1xSpc:"x104kibb",kgKLqz:"x1ua5tub",$$css:!0},description:{kMwMTN:"xv1l7n4",kGuDYH:"x141an7d",kLWn49:"x1ltkj2j",$$css:!0},descriptionSingleTruncate:{kVQacm:"xb3r6kr",kg5iWk:"xlyipyv",khDVqt:"xuxw1ft",$$css:!0},descriptionMultiTruncate:{kVQacm:"xb3r6kr",k1xSpc:"x104kibb",kgKLqz:"x1ua5tub",$$css:!0}},Ge={lineClamp:e=>[{kJFfOR:e!=null?"x1yhjpo9":e,$$css:!0},{"--x-WebkitLineClamp":e??void 0}]},kn={compact:{k8WAf4:"xu0wf1k",$$css:!0},balanced:{k8WAf4:"xce4md1",$$css:!0},spacious:{k8WAf4:"x8o8v82",kg3NbH:"xrrkdod",$$css:!0}};function ct({as:e="div",marker:t,startContent:a,label:u,description:x,endContent:z,align:$="center",density:y="balanced",labelLines:M,descriptionLines:l,onClick:c,href:g,target:v,rel:T,isHighlighted:D=!1,isSelected:C=!1,isDisabled:p=!1,xstyle:K,className:I,style:A,ref:S,role:P,...h}){const E=at(),N=c!=null||g!=null,{target:i,rel:f}=gn(v,T),k=P!=null,w=typeof u=="string",q=typeof x=="string",W=M!=null?M===1?_.labelSingleTruncate:_.labelMultiTruncate:w?_.labelSingleTruncate:null,X=l!=null?l===1?_.descriptionSingleTruncate:_.descriptionMultiTruncate:q?_.descriptionSingleTruncate:null,F=s.jsxs(s.Fragment,{children:[s.jsx("span",{...ee(_.label,W,M!=null&&M>1&&Ge.lineClamp(M)),children:u}),x!=null&&s.jsx("span",{...ee(_.description,X,l!=null&&l>1&&Ge.lineClamp(l)),children:x})]}),V=R=>{p||R.target.closest("button, a, input, select, textarea")||c?.(R)},d=s.jsxs(s.Fragment,{children:[t,a!=null&&s.jsx("span",{className:"x3psx0u x78zum5",children:a}),k?s.jsx("span",{...{0:{className:"x78zum5 xdt5ytf x98rzlu xeuugli x1yc453h"},1:{className:"x78zum5 xdt5ytf x98rzlu xeuugli x1yc453h xbyyjgo"}}[!!p<<0],children:F}):g!=null?s.jsx(E,{href:g,target:i,rel:f,"aria-disabled":p||void 0,tabIndex:p?-1:void 0,...{0:{className:"xmper1u xln7xf2 x1heor9g x78zum5 xdt5ytf x98rzlu xeuugli x1yc453h x1hl2dhg x1a2a7pz"},1:{className:"xmper1u xln7xf2 x1heor9g x78zum5 xdt5ytf x98rzlu xeuugli x1yc453h x1hl2dhg x1a2a7pz xbyyjgo"}}[!!p<<0],children:F}):c!=null?s.jsx("button",{type:"button",onClick:c,disabled:p,...{0:{className:"xmper1u xln7xf2 x1heor9g x78zum5 xdt5ytf x98rzlu xeuugli x1yc453h x1a2a7pz"},1:{className:"xmper1u xln7xf2 x1heor9g x78zum5 xdt5ytf x98rzlu xeuugli x1yc453h x1a2a7pz xbyyjgo"}}[!!p<<0],children:F}):s.jsx("span",{...{0:{className:"x78zum5 xdt5ytf x98rzlu xeuugli x1yc453h"},1:{className:"x78zum5 xdt5ytf x98rzlu xeuugli x1yc453h xbyyjgo"}}[!!p<<0],children:F}),z!=null&&s.jsx("span",{...{0:{className:"x3psx0u x78zum5 xvc5jky"},1:{className:"x3psx0u x78zum5 xvc5jky xbyyjgo"}}[!!p<<0],children:z})]});return s.jsx(e,{ref:S,"aria-selected":C||void 0,"aria-disabled":p||void 0,...h,...he(pe("item",{density:y,align:$}),ee(_.root,kn[y],$==="start"&&_.alignStart,N&&_.interactive,N&&_.focusVisibleOutline,D&&_.highlighted,C&&_.selected,p&&!k&&_.disabled,K),I,A),role:P,onClick:k?c:N?V:void 0,children:d})}ct.displayName="Item";const Ie=n.createContext(null);Ie.displayName="DropdownMenuContext";function bn(){return n.use(Ie)}const Ye={root:{kB7OPa:"x9f619",kzqmXN:"xh8yej3",k8WAf4:"xce4md1",kg3NbH:"xf314gf",kaIpWk:"x1ws5lxm",kMv6JI:"x9ynric",kGuDYH:"xcr08ib",kMwMTN:"x1tgivj0",kWkggS:"xjbqb8w x1c52tdz x1uwx2nv",kkrTdU:"x1ypdohk",k9WMMc:"xdpxx8g",kI3sdo:"x1a2a7pz",$$css:!0},disabled:{kSiTet:"xbyyjgo",kkrTdU:"x1h6gzvc",$$css:!0}},vn={sm:{k8WAf4:"xu0wf1k",kg3NbH:"xf314gf",$$css:!0},md:{k8WAf4:"x1vofgu7",$$css:!0},lg:{$$css:!0}};function ie({icon:e,label:t,description:a,onClick:u,isDisabled:x=!1,endContent:z,xstyle:$,className:y,style:M}){const l=bn(),c=l?.menuSize??"md",g=n.useCallback(()=>{x||!u||(u(),l?.closeMenu())},[x,u,l]);return s.jsx(ct,{role:"menuitem",tabIndex:x?void 0:-1,startContent:e?Ht(e,{size:"sm",color:"secondary"}):void 0,label:t,description:a,endContent:z,onClick:g,isDisabled:x,xstyle:[Ye.root,vn[c],x&&Ye.disabled,$],...he(pe("dropdown-menu-item",{size:c}),{className:y,style:M})})}ie.displayName="DropdownMenuItem";const wn={divider:{kqGvvJ:"xsq74q5",$$css:!0}};function Xe(e){return`item-${e.label}`}function jn(e,t){return`section-${e.title??t}`}function $n(e){const t=[];for(let a=0;a<e.length;a++){const u=e[a];"type"in u&&u.type==="divider"?t.push(s.jsx(lt,{xstyle:wn.divider},`divider-${a}`)):"type"in u&&u.type==="section"?t.push(s.jsxs("div",{role:"group","aria-label":u.title,children:[u.title&&s.jsx("div",{className:"xu0wf1k xf314gf x9ynric x141an7d x1ltkj2j xv1l7n4 x87ps6o","aria-hidden":"true",children:u.title}),u.items.map(x=>s.jsx(ie,{icon:x.icon,label:x.label,onClick:x.onClick,isDisabled:x.isDisabled},Xe(x)))]},jn(u,a))):"type"in u||t.push(s.jsx(ie,{icon:u.icon,label:u.label,onClick:u.onClick,isDisabled:u.isDisabled},Xe(u)))}return t}const Mn=new Set(["text","search","url","tel","email","password","number"]);function Cn(e){if(e.isContentEditable)return e;const t=e.closest("[contenteditable]");return t&&t.getAttribute("contenteditable")!=="false"?t:null}function Ue(e,t){if(!(e instanceof HTMLElement))return!1;const a=Cn(e);if(a){const l=typeof window<"u"?window.getSelection():null;return l&&l.rangeCount>0&&!l.isCollapsed?!0:(a.textContent??"").length>0}const u=e.tagName==="TEXTAREA",x=e.tagName==="INPUT"&&Mn.has(e.type);if(!u&&!x)return!1;const z=e,{selectionStart:$,selectionEnd:y,value:M}=z;return $!==y||$==null?!0:t==="ArrowLeft"||t==="ArrowUp"||t==="Home"?$>0:t==="ArrowRight"||t==="ArrowDown"||t==="End"?$<M.length:!1}function zn(e={}){const{itemSelector:t='[role="menuitem"]',wrap:a=!0,onEscape:u,orientation:x="vertical",hasHomeEnd:z=!0,isRtl:$=!1,hasRovingTabIndex:y=!1,hasCaretGuard:M=!1}=e,l=n.useRef(null),c=n.useCallback(h=>h.getAttribute("aria-disabled")==="true"||h.disabled===!0||h.hasAttribute("disabled"),[]),g=n.useCallback(()=>l.current?Array.from(l.current.querySelectorAll(t)):[],[t]),v=n.useCallback((h,E,N,i)=>{const f=h.length;if(f===0)return-1;let k=E;for(let w=0;w<f;w++){if(k<0||k>=f){if(!i)return-1;k=(k+f)%f}const q=h[k];if(q&&!c(q))return k;k+=N}return-1},[c]),T=n.useCallback(()=>{const h=g(),E=document.activeElement;return h.findIndex(N=>N===E||N.contains(E))},[g]),D=n.useCallback((h,E)=>{h.getAttribute("tabindex")!==String(E)&&h.setAttribute("tabindex",String(E))},[]),C=n.useCallback(()=>{const h=g(),E=h.filter(f=>!c(f));if(E.length===0)return;const i=E.find(f=>f.getAttribute("tabindex")==="0")??E[0];for(const f of h)D(f,f===i?0:-1)},[g,c,D]);Kt(()=>{y&&C()});const p=n.useCallback((h,E)=>{const N=h[E];if(N){if(y)for(const i of h)D(i,i===N?0:-1);N.focus()}},[y,D]),K=n.useCallback(h=>{const E=g();if(E.length===0)return;const N=Math.max(0,Math.min(h,E.length-1));p(E,N)},[g,p]),I=n.useCallback(()=>{const h=g(),E=v(h,0,1,!1);return E!==-1?(p(h,E),!0):!1},[g,v,p]),A=n.useCallback(()=>{const h=g(),E=v(h,h.length-1,-1,!1);return E!==-1?(p(h,E),!0):!1},[g,v,p]),S=n.useCallback(()=>{y&&C()},[y,C]),P=n.useCallback(h=>{if(h.ctrlKey||h.metaKey||h.altKey)return;if(h.key==="Escape"){h.preventDefault(),u?.();return}const E=x==="horizontal"||x==="both",N=x==="vertical"||x==="both",i=[],f=[];E&&(i.push($?"ArrowLeft":"ArrowRight"),f.push($?"ArrowRight":"ArrowLeft")),N&&(i.push("ArrowDown"),f.push("ArrowUp"));const k=i.includes(h.key),w=f.includes(h.key),q=z&&h.key==="Home",W=z&&h.key==="End";if(!k&&!w&&!q&&!W||M&&(Ue(h.target,h.key)||Ue(document.activeElement,h.key)))return;const X=T(),F=g();if(k){const V=X===-1?0:X+1,d=v(F,V,1,a);d!==-1&&p(F,d)}else if(w){const V=X===-1?F.length-1:X-1,d=v(F,V,-1,a);d!==-1&&p(F,d)}else q?I():W&&A();h.preventDefault()},[T,g,a,x,$,z,M,v,p,I,A,u]);return{listRef:l,handleKeyDown:P,handleFocus:S,focusItem:K,focusFirst:I,focusLast:A}}function En(e){return e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key!==" "}function Dn(e){const{getItemLabels:t,onMatch:a,getCurrentIndex:u,resetMs:x=750,isDisabled:z}=e,$=n.useRef(""),y=n.useRef(void 0),M=n.useCallback(()=>{$.current="",y.current&&(clearTimeout(y.current),y.current=void 0)},[]),l=n.useCallback(()=>{y.current&&clearTimeout(y.current),y.current=setTimeout(()=>{$.current="",y.current=void 0},x)},[x]);return{onKeyDown:n.useCallback(g=>{const v=g.key===" "&&$.current.length>0;if(!En(g)&&!v)return!1;const T=t();if(T.length===0)return!1;const D=g.key.toLowerCase(),C=$.current.length>0&&$.current.split("").every(S=>S===D),p=C?D:$.current+D;$.current=p,l();const K=u?.()??-1,I=T.length,A=C?1:0;for(let S=0;S<I;S++){const P=(K+A+S+I)%I;if(z?.(P))continue;const h=T[P];if(h!=null&&h.trim().toLowerCase().startsWith(p))return a(P),!0}return!0},[t,a,u,l,z]),reset:M}}const ye={dropdown:{kB7OPa:"x9f619",k1xSpc:"x78zum5",kXwgrk:"xdt5ytf",kOIVth:"x1lsbc85",kskxy:"xuyqlj2",kORKVm:"x1odjw0f","--_dropdown-menu-radius":"x1fcsqxe","--_dropdown-menu-padding":"xgory14",kmVPX3:"x9epnlk",kaIpWk:"x1n97fys",kSiTet:"x1hc1fzr",k1ekBW:"x19991ni",kIyJzY:"xuedmi6",kAMwcw:"xlr8y92",$$css:!0},popover:{k7Eaqz:"xrzjruh",$$css:!0},popoverBlockGap:{keoZOQ:"xcsaf9d",k1K539:"x14cgwvg",$$css:!0},popoverInlineGap:{keTefX:"x11g1kdw",k71WvV:"xnur1sd",$$css:!0},popoverCustomWidth:e=>[{k7Eaqz:(typeof e=="number"?`${e}px`:e)!=null?"xkj4a21":typeof e=="number"?`${e}px`:e,$$css:!0},{"--x-minWidth":(t=>typeof t=="number"?t+"px":t??void 0)(typeof e=="number"?`${e}px`:e)}]},Tn={label:"Menu"};function Se({button:e=Tn,isMenuOpen:t,onOpenChange:a,menuWidth:u,onClick:x,hasChevron:z=!0,placement:$="below",className:y,style:M,xstyle:l,"data-testid":c,...g}){const v=("items"in g?g.items:void 0)??[],T=g.children,D=n.useId(),C=e?.size??"md",p=n.useRef(null),[K,I]=n.useState(!1),A=t!==void 0,S=A?t:K,P=n.useRef(0),h=n.useCallback(()=>{P.current=Date.now(),A?a?.(!1):I(!1),p.current?.focus()},[A,a]),E=n.useRef(!1),N=n.useCallback(()=>{A?a?.(!0):I(!0),E.current&&(E.current=!1)},[A,a]),i=pn({onHide:h,onShow:N,hasLightDismiss:!0,hasCloseButton:!1,hasAutoFocus:!1,role:"none"}),f=n.useCallback(()=>{i.hide()},[i]),{listRef:k,handleKeyDown:w,focusFirst:q,focusItem:W}=zn({itemSelector:'[role="menuitem"]:not([aria-disabled="true"])',wrap:!1,onEscape:f}),X=n.useCallback(()=>k.current?Array.from(k.current.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')):[],[k]),F=Dn({getItemLabels:()=>X().map(b=>b.textContent),onMatch:W,getCurrentIndex:()=>X().findIndex(b=>b===document.activeElement||b.contains(document.activeElement))});n.useEffect(()=>{A&&(t&&!i.isOpen?(i.show(),requestAnimationFrame(()=>q())):!t&&i.isOpen&&i.hide())},[t,A,i,q]);const V=n.useCallback(b=>{if(b.key==="Enter"||b.key===" "){b.preventDefault();const L=document.activeElement;L?.getAttribute("role")==="menuitem"&&L.click();return}if(b.key==="Tab"){f();return}if(F.onKeyDown(b)){b.preventDefault();return}w(b)},[w,f,F]),d=n.useCallback(()=>{i.show(),requestAnimationFrame(()=>q())},[i,q]),R=n.useCallback(()=>{Date.now()-P.current<50||(x?.(),A?a?.(!t):i.isOpen?i.hide():d())},[x,A,a,t,i,d]),H=n.useCallback(b=>{i.isOpen||(b.key==="ArrowDown"||b.key==="Enter"||b.key===" ")&&(b.preventDefault(),d())},[i.isOpen,d]),Y=e.isIconOnly===!0,O=e.endContent??(z&&!Y?s.jsx(Ft,{icon:"chevronDown",size:"sm",color:"inherit"}):void 0),o=u?ye.popoverCustomWidth(u):ye.popover,r=$==="above"||$==="below"?ye.popoverBlockGap:ye.popoverInlineGap,m=n.useMemo(()=>({closeMenu:f,menuSize:C}),[f,C]),j=g.items!==void 0?$n(v):T;return s.jsxs(s.Fragment,{children:[s.jsx(ce,{...e,ref:b=>{p.current=b,i.triggerRef(b);const L=e.ref;typeof L=="function"?L(b):L&&(L.current=b)},tooltip:S?void 0:e.tooltip,endContent:O,onClick:R,onKeyDown:H,"aria-haspopup":"menu","aria-expanded":S,"aria-controls":D,"data-testid":c}),i.render(s.jsx("div",{ref:k,id:D,role:"menu","aria-label":e.label,onKeyDown:V,...he(pe("dropdown-menu"),ee(ye.dropdown,l),y,M),children:s.jsx(Ie,{value:m,children:j})}),{placement:$,alignment:"start",xstyle:[o,r,Ot[$]]})]})}Se.displayName="DropdownMenu";const Sn={wrapper:{k1xSpc:"x3nfvp2",kGNEyG:"x6s0dn4",kOIVth:"xzye2dw",kmuXW:"x2lah0s",$$css:!0}},Nn={ctrl:"⌃",alt:"⌥",shift:"⇧",enter:"↵",backspace:"⌫",escape:"Esc",tab:"⇥",up:"↑",down:"↓",left:"←",right:"→",plus:"+"};function Rn(e,t){return e==="mod"?t?"⌘":"Ctrl":Nn[e]??e.toUpperCase()}const An={ctrl:"Control",alt:"Alt",shift:"Shift",enter:"Enter",backspace:"Backspace",escape:"Escape",tab:"Tab",up:"Up arrow",down:"Down arrow",left:"Left arrow",right:"Right arrow",plus:"Plus"};function In(e,t){return e==="mod"?t?"Command":"Control":An[e]??e.toUpperCase()}function Ln(){return()=>{}}function Pn(){return!1}function qn(){if(typeof navigator>"u")return!1;const e="userAgentData"in navigator?navigator.userAgentData:null;return e&&typeof e=="object"&&"platform"in e?/mac/i.test(e.platform??""):/Mac|iPhone|iPad|iPod/.test(navigator.platform??"")}function it({keys:e,ref:t,xstyle:a,className:u,style:x,...z}){const $=n.useSyncExternalStore(Ln,qn,Pn),y=e.split("+").map(l=>l.trim().toLowerCase()),M=y.map(l=>In(l,$)).join(" + ");return s.jsx("span",{ref:t,role:"img","aria-label":M,...z,...he(pe("kbd"),ee(Sn.wrapper,a),u,x),children:y.map(l=>s.jsx("kbd",{"aria-hidden":"true",className:"x3nfvp2 x6s0dn4 xl56j7k x16asifk x1grt7ep x7a5moj xx3sua9 x17x4s8c xlxy82 x1q0q8m5 xib2hle xv1l7n4 x9ynric x141an7d x1e4wzip x1ltkj2j x87ps6o",children:Rn(l,$)},l))})}it.displayName="Kbd";Je({"calkeys.modeDay":{zh:"日",en:"Day"},"calkeys.modeWeek":{zh:"周",en:"Week"},"calkeys.mode3day":{zh:"3 日",en:"3 days"},"calkeys.modeMonth":{zh:"月",en:"Month"}});const Ne=[{id:"day",get label(){return we("calkeys.modeDay")},key:"d"},{id:"week",get label(){return we("calkeys.modeWeek")},key:"w"},{id:"3day",get label(){return we("calkeys.mode3day")},key:"3"},{id:"month",get label(){return we("calkeys.modeMonth")},key:"m"}];function Wn(e){const t=(e.metaKey||e.ctrlKey)&&!e.altKey;if(t&&(e.key==="c"||e.key==="C"))return{kind:"copy"};if(t&&(e.key==="v"||e.key==="V"))return{kind:"paste"};if(e.metaKey||e.ctrlKey||e.altKey)return null;if(e.key==="Delete"||e.key==="Backspace")return{kind:"delete"};if(e.key==="ArrowLeft")return{kind:"prev"};if(e.key==="ArrowRight")return{kind:"next"};const a=Ne.find(u=>u.key===e.key.toLowerCase());return a?{kind:"mode",mode:a.id}:null}const ge=e=>e.end?.getTime()??e.start.getTime()+3600*1e3;function Hn(e){const t=[...e].sort((u,x)=>u.start.getTime()-x.start.getTime()||ge(u)-ge(x)),a=new Map;for(let u=0;u<t.length;){let x=u+1,z=ge(t[u]);for(;x<t.length&&t[x].start.getTime()<z;)z=Math.max(z,ge(t[x])),x+=1;const $=t.slice(u,x),y=[],M=$.map(c=>{let g=y.findIndex(v=>v<=c.start.getTime());return g<0&&(g=y.length),y[g]=ge(c),{ev:c,lane:g}}),l=Math.max(1,y.length);for(const{ev:c,lane:g}of M)a.set(c.key,{lane:g,laneCount:l,leftPct:g/l*100,widthPct:100/l});u=x}return a}Je({"calview.untitled":{zh:"未命名",en:"Untitled"},"calview.newEventTitle":{zh:"新事件",en:"New event"},"calview.new":{zh:"新建",en:"New"},"calview.newInto":{zh:"新建到「{name}」",en:'New event in "{name}"'},"calview.noDbHint":{zh:"请先在右栏添加一个含日期属性的多维表",en:"Add a calendar database in the right panel first"},"calview.today":{zh:"今天",en:"Today"},"calview.prevPage":{zh:"上一页",en:"Previous"},"calview.nextPage":{zh:"下一页",en:"Next"},"calview.density":{zh:"密度",en:"Density"},"calview.zoomOut":{zh:"缩小时间轴",en:"Zoom out timeline"},"calview.zoomIn":{zh:"放大时间轴",en:"Zoom in timeline"},"calview.densityReset":{zh:"恢复默认密度",en:"Reset to default density"},"calview.empty":{zh:"还没有日历事件。点「新建」,或在右栏添加一个含日期属性的多维表。",en:'No calendar events yet. Click "New", or add a database with a date property in the right panel.'},"calview.emptyNoDb":{zh:"还没有日历。在右栏点「添加日历」,选一个含日期属性的多维表。",en:'No calendars yet. Use "Add calendar" in the right panel to pick a database with a date property.'},"calview.allDay":{zh:"全天",en:"All-day"},"calview.a11yAllDayEvent":{zh:"{title},全天事件",en:"{title}, all-day event"},"calview.allDayDragHint":{zh:"{title}(可拖入时间格设为定时)",en:"{title} (drag into a time slot to schedule it)"},"calview.a11yEvent":{zh:"{title},{time}",en:"{title}, {time}"},"calview.a11yEventRange":{zh:"{title},{start} 至 {end}",en:"{title}, {start} to {end}"},"calview.monthFirst":{zh:"{m}月1",en:"{m}/1"},"calview.moreItems":{zh:"还有 {n} 项",en:"{n} more"},"calview.a11yMoreEvents":{zh:"查看 {m} 月 {d} 日全部 {n} 个事件",en:"View all {n} events on {m}/{d}"},"calview.a11yDayEvents":{zh:"{m} 月 {d} 日事件",en:"Events on {m}/{d}"},"calview.dayHeading":{zh:"{m} 月 {d} 日",en:"{m}/{d}"},"calview.closeAgenda":{zh:"关闭日程列表",en:"Close agenda list"}});const le=26,_e=8.4,ke=150,Ze=40;function Kn(e,t,a){const u=[];return e.forEach(({db:x,dateCol:z},$)=>{if(zt(t,a,x.path))return;const y=Et(t,a,x.path,$);for(const M of x.rows){const l=typeof M.cells[z]=="string"?M.cells[z]:"",c=Dt(l);c&&u.push({key:`${x.path}::${M.rowId}`,color:y,db:x,row:M,colId:z,title:M.name,raw:l,start:me(c.start),end:c.end?me(c.end):null,allDay:c.allDay,readonly:x.readonly&&!x.writeCell})}}),u}const Z=e=>`${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`,oe=e=>{const t=e.currentTarget,a=t.getBoundingClientRect();return{left:a.left,top:a.top,right:a.right,bottom:a.bottom,zoom:xe(t)||1}},Fn=(e,t,a)=>t?`${J(e,a)}/${J(t,a)}`:J(e,a),Me=(e,t,a)=>tt(e.db,e.row.rowId,e.colId,Fn(t,a,e.allDay)),Ce=e=>({"--amx-event-color":e}),ut=(e,t)=>{const a=Q(t).getTime(),u=Q(e.start).getTime()<a,x=Q(e.end??e.start).getTime()>a;return`${u?" continues-left":""}${x?" continues-right":""}`};function rs(){const{t:e}=ze(),t=ft(),a=mt(),u=ht(),x=pt(),z=yt(),$=Gt(),y=gt(d=>d.cfg),M=kt(d=>d.vaultRoot)??"",l=bt(d=>d.byVault),c=te(d=>d.mode),g=te(d=>d.setMode),v=te(d=>d.hourPx),T=te(d=>d.setHourPx),D=te(d=>d.jumpNonce),[C,p]=n.useState(null),K=n.useRef(null),I=n.useRef(null),A=n.useRef(null);n.useEffect(()=>{c!=="month"&&(A.current=null)},[c]);const S=n.useRef(null),P=n.useRef(null);n.useEffect(()=>{if(!D)return;const d=te.getState().jumpDate;d&&I.current?.goto(me(d))},[D]),n.useEffect(()=>{const d=()=>{Ct.getState().refresh(y)};d();const R=window.setInterval(d,6e4);return()=>window.clearInterval(R)},[y]);const h=n.useMemo(()=>[...a.map(d=>({db:d.db,dateCol:d.dateCol})),...[...u,...x,...z,...$].map(d=>({db:d,dateCol:vt(d)?.id})).filter(d=>!!d.dateCol)],[a,u,x,z,$]),E=n.useMemo(()=>Kn(h,M,l),[h,M,l]),N=n.useMemo(()=>E.map(d=>d.title?d:{...d,title:e("calview.untitled")}),[E,e]),i=C?E.find(d=>d.key===C.key)??null:null;S.current=i;const f=(d,R)=>p({key:d,at:R}),k=()=>{const d=Tt(M,l),R=a.find(H=>H.db.path===d)??a.find(H=>!H.db.isNoteView)??a[0]??null;return R?{db:R.db,dateCol:R.dateCol}:null},w=k(),q=async(d,R,H)=>{const Y=k();if(!Y)return;const{db:O,dateCol:o}=Y;let r;if(R===null)r=J(d,!0);else{const j=G(Q(d),R);r=`${J(j,!1)}/${J(G(j,30),!1)}`}const m=await Nt(O,o,r,e("calview.newEventTitle"));f(`${O.path}::${m}`,H)};n.useEffect(()=>{const d=R=>{const H=R.target;if(H&&H.closest("input, textarea, select, [contenteditable]"))return;const Y=Wn(R);if(!Y)return;const O=S.current;switch(Y.kind){case"copy":O&&!O.readonly&&(P.current={db:O.db,rowId:O.row.rowId});break;case"paste":P.current&&St(P.current.db,P.current.rowId);break;case"delete":O&&!O.readonly&&(Xt(O.db,O.row,O.title),p(null));break;case"prev":I.current?.prev();break;case"next":I.current?.next();break;case"mode":te.getState().setMode(Y.mode);break}R.preventDefault()};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[]);const W=n.useRef(null),[X,F]=n.useState(7);n.useLayoutEffect(()=>{const d=W.current;if(!d)return;const R=()=>{const Y=d.clientWidth-52;F(Y>=784?7:Y>=396?3:1)};R();const H=new ResizeObserver(R);return H.observe(d),()=>H.disconnect()},[]);const V=Math.min(c==="week"?7:c==="3day"?3:1,X);return s.jsxs("div",{className:"amx-cal",ref:W,children:[s.jsx(Vt,{children:s.jsxs("header",{className:"amx-cal-bar",children:[s.jsx("div",{className:"amx-cal-nav",children:s.jsx("span",{className:"amx-cal-title",ref:K})}),s.jsxs("div",{className:"amx-cal-modes",children:[s.jsx(ce,{size:"sm",variant:"primary",icon:s.jsx(Qt,{size:14}),label:e("calview.new"),isDisabled:!w,tooltip:w?e("calview.newInto",{name:w.db.name}):e("calview.noDbHint"),onClick:d=>{const R=new Date,H=G(Q(R),be(R.getHours()*60+R.getMinutes()+15)),Y=oe(d);q(Q(H),H.getHours()*60+H.getMinutes(),Y)}}),s.jsx(ce,{size:"sm",variant:"secondary",label:e("calview.today"),onClick:()=>I.current?.today()}),s.jsx(ce,{size:"sm",variant:"ghost",isIconOnly:!0,icon:s.jsx(wt,{size:14}),label:e("calview.prevPage"),onClick:()=>I.current?.prev()}),s.jsx(ce,{size:"sm",variant:"ghost",isIconOnly:!0,icon:s.jsx(jt,{size:14}),label:e("calview.nextPage"),onClick:()=>I.current?.next()}),s.jsx(Se,{button:{label:Ne.find(d=>d.id===c)?.label??"周",variant:"secondary",size:"sm"},menuWidth:168,children:Ne.map(d=>s.jsx(ie,{icon:c===d.id?s.jsx($t,{size:14}):s.jsx("span",{style:{display:"inline-block",width:14}}),label:d.label,endContent:s.jsx(it,{keys:d.key}),onClick:()=>g(d.id)},d.id))}),c!=="month"&&s.jsx("span",{className:"amx-cal-density",children:s.jsxs(Se,{button:{label:e("calview.density"),variant:"ghost",size:"sm"},menuWidth:176,children:[s.jsx(ie,{icon:s.jsx(Ut,{size:14}),label:e("calview.zoomOut"),onClick:()=>T(v-8)}),s.jsx(ie,{icon:s.jsx(_t,{size:14}),label:e("calview.zoomIn"),onClick:()=>T(v+8)}),s.jsx(ie,{icon:s.jsx(Zt,{size:14}),label:e("calview.densityReset"),endContent:`${v}px`,onClick:()=>T(Bt)})]})})]})]})}),N.length===0&&s.jsx("div",{className:"amx-cal-empty",children:e(w?"calview.empty":"calview.emptyNoDb")}),c==="month"?s.jsx(Vn,{ref:I,anchorRef:A,events:N,selectedKey:C?.key??null,onPick:f,onCreate:(d,R)=>{q(d,null,R)},titleRef:K},`dow${t}`):s.jsx(On,{ref:I,n:V,weekStartDow:c==="week"&&V===7?t:null,events:N,selectedKey:C?.key??null,onPick:f,onCreate:(d,R,H)=>{q(d,R,H)},titleRef:K}),i&&C&&s.jsx(Yt,{ev:i,at:C.at,onClose:()=>p(null)})]})}const On=n.forwardRef(function({n:t,weekStartDow:a,events:u,selectedKey:x,onPick:z,onCreate:$,titleRef:y},M){const{t:l}=ze(),c=n.useRef(null),g=n.useRef(null),[v,T]=n.useState(0),[D,C]=n.useState(0),p=te(o=>o.hourPx),K=te(o=>o.setVisibleRange),I=()=>{g.current&&c.current&&(g.current.style.transform=`translateY(${-c.current.scrollTop}px)`)},A=n.useMemo(()=>Q(new Date),[]),S=n.useMemo(()=>{const o=ae(A,-ke);return Array.from({length:ke*2+1},(r,m)=>ae(o,m))},[A]),P=o=>a==null?o:Math.max(0,o-(S[o].getDay()-a+7)%7),h=n.useRef(ke),E=n.useRef(void 0),N=n.useRef(!1),i=n.useRef(""),f=n.useRef(-1),k=n.useRef(null),w=()=>{k.current&&(k.current.style.display="none")},q=n.useRef(null),[W,X]=n.useState(()=>{const o=new Date;return o.getHours()*60+o.getMinutes()});n.useEffect(()=>{const o=setInterval(()=>{const r=new Date;X(r.getHours()*60+r.getMinutes())},3e4);return()=>clearInterval(o)},[]),n.useEffect(()=>()=>K(null,null),[K]);const F=()=>{const o=c.current;if(!o||!v)return;const r=Math.max(0,Math.min(S.length-t,Math.round(o.scrollLeft/v)));h.current=r;const m=It(Qe(S[r],t));m!==i.current&&(i.current=m,y.current&&(y.current.textContent=m)),r*8+t!==f.current&&(f.current=r*8+t,K(J(S[r],!0),J(S[Math.min(S.length-1,r+t-1)],!0)))};n.useLayoutEffect(()=>{const o=c.current;if(!o)return;const r=t===7?112:t===3?132:180,m=()=>T(Math.max(r,o.clientWidth/t));m();const j=new ResizeObserver(m);return j.observe(o),()=>j.disconnect()},[t]),n.useLayoutEffect(()=>{const o=c.current;if(!o)return;const r=o.querySelector(".amx-cal-daycol2");r&&C(Math.max(0,r.offsetTop-(le+14)))},[u,v,t]),n.useLayoutEffect(()=>{const o=c.current;if(!(!o||!v)){if(!N.current){h.current=ke,N.current=!0;const r=o.querySelector(".amx-cal-daycol2"),m=r?r.offsetTop:le+14;o.scrollTop=Math.max(0,m+W/60*p-o.clientHeight/2)}E.current!==a&&(E.current=a,h.current=P(h.current)),o.scrollLeft=h.current*v,F(),I()}},[v,a]);const V=n.useRef(p);n.useLayoutEffect(()=>{const o=c.current,r=V.current;if(V.current=p,!o||r===p)return;const m=o.querySelector(".amx-cal-daycol2"),j=m?m.offsetTop:le+14,b=o.clientHeight/2,L=(o.scrollTop+b-j)/r;o.scrollTop=Math.max(0,j+L*p-b),I()},[p]),n.useEffect(()=>{const o=c.current;if(!o)return;const r=m=>{if(!m.ctrlKey&&!m.metaKey)return;m.preventDefault();const j=te.getState();j.setHourPx(j.hourPx*(m.deltaY<0?1.12:1/1.12))};return o.addEventListener("wheel",r,{passive:!1}),()=>o.removeEventListener("wheel",r)},[]),n.useImperativeHandle(M,()=>({prev:()=>c.current?.scrollBy({left:-t*v,behavior:"smooth"}),next:()=>c.current?.scrollBy({left:t*v,behavior:"smooth"}),today:()=>c.current?.scrollTo({left:P(ke)*v,behavior:"smooth"}),goto:o=>{if(!v)return;const r=Math.min(S.length-t,P(Math.max(0,Math.min(S.length-1,$e(Q(o),S[0])))));c.current?.scrollTo({left:r*v,behavior:"smooth"})}}),[t,v,S,a]);const d=(o,r)=>{if(r.stopPropagation(),o.readonly)return;const m=r.currentTarget,j=m.getBoundingClientRect(),b=xe(m)||1,L=(r.clientY-j.top)/b,B=L<_e?"start":j.height/b-L<_e?"end":"move",ne=We(o.start,o.end,p),U=Math.max(14,ne.height),ue=m.querySelector(".amx-cal-event-t");m.setPointerCapture(r.pointerId),m.classList.add("dragging"),q.current={mode:B,ev:o,el:m,tEl:ue,t0:ue?.textContent??"",x0:r.clientX,y0:r.clientY,zoom:b,top0:ne.top,h0:U,grabOffY:L,durMin:Math.round(U/p*60),msDur:o.end?o.end.getTime()-o.start.getTime():0,dyMin:0,moved:!1,target:null}},R=o=>{const r=q.current;if(!r)return;if(r.mode==="move"){const b=(o.clientX-r.x0)/r.zoom,L=(o.clientY-r.y0)/r.zoom;(Math.abs(b)>3||Math.abs(L)>3)&&(r.moved=!0),r.el.style.transform=`translate(${b}px, ${L}px)`;const B=c.current;if(!B||!v)return;const ne=B.getBoundingClientRect(),U=xe(B)||1,ue=Math.max(0,Math.min(S.length-1,Math.floor(((o.clientX-ne.left)/U+B.scrollLeft)/v))),Le=le+14+D,dt=(o.clientY-ne.top)/U-r.grabOffY+B.scrollTop-Le,Ee=Math.max(0,Math.min(1440-r.durMin,be(dt/p*60)));r.target={iso:J(S[ue],!0),topMin:Ee};const se=k.current;if(se&&(se.style.display="block",se.style.left=`${ue*v}px`,se.style.width=`${v}px`,se.style.top=`${Le+Ee/60*p}px`,se.style.height=`${r.h0}px`),r.moved){const De=G(Q(S[ue]),Ee),Pe=r.msDur?`${Z(De)}–${Z(new Date(De.getTime()+r.msDur))}`:Z(De);r.tEl&&(r.tEl.textContent=Pe),se&&(se.textContent=Pe)}return}const m=be((o.clientY-r.y0)/r.zoom/p*60);r.dyMin=m;const j=m/60*p;if(r.mode==="end"?r.el.style.height=`${Math.max(14,r.h0+j)}px`:(r.el.style.top=`${r.top0+j}px`,r.el.style.height=`${Math.max(14,r.h0-j)}px`),m!==0&&r.tEl){const b=r.ev.end??G(r.ev.start,60);if(r.mode==="end"){let L=G(b,m);L.getTime()<=r.ev.start.getTime()&&(L=G(r.ev.start,15)),r.tEl.textContent=`${Z(r.ev.start)}–${Z(L)}`}else{let L=G(r.ev.start,m);L.getTime()>=b.getTime()&&(L=G(b,-15)),r.tEl.textContent=`${Z(L)}–${Z(b)}`}}},H=(o,r)=>{const m=q.current;if(q.current=null,!m){o.readonly&&z(o.key,oe(r));return}if(m.el.classList.remove("dragging"),m.mode==="move"){if(m.el.style.transform="",w(),!m.moved||!m.target){m.tEl&&(m.tEl.textContent=m.t0),m.moved||z(o.key,oe(r));return}const b=G(Q(me(m.target.iso)),m.target.topMin);Me(o,b,o.end?new Date(b.getTime()+m.msDur):null);return}if(m.dyMin===0){m.tEl&&(m.tEl.textContent=m.t0);return}const j=o.end??G(o.start,60);if(m.mode==="end"){let b=G(j,m.dyMin);b.getTime()<=o.start.getTime()&&(b=G(o.start,15)),Me(o,o.start,b)}else{let b=G(o.start,m.dyMin);b.getTime()>=j.getTime()&&(b=G(j,-15)),Me(o,b,j)}},Y=o=>{o.stopPropagation(),o.currentTarget.setPointerCapture(o.pointerId)},O=(o,r)=>{if(o.readonly){z(o.key,oe(r));return}const m=document.elementFromPoint(r.clientX,r.clientY)?.closest(".amx-cal-daycol2"),j=m?.getAttribute("data-date");if(m&&j){const b=m.getBoundingClientRect(),L=Math.max(0,Math.min(1410,be((r.clientY-b.top)/(xe(m)||1)/p*60))),B=G(Q(me(j)),L);tt(o.db,o.row.rowId,o.colId,`${J(B,!1)}/${J(G(B,30),!1)}`);return}z(o.key,oe(r))};return s.jsxs("div",{className:"amx-cal-timerow",style:{"--amx-hour-px":`${p}px`},children:[s.jsx("div",{className:"amx-cal-gutterfixed",children:s.jsxs("div",{className:"amx-cal-gutterinner",children:[s.jsx("div",{className:"amx-cal-gcorner",style:{height:le+14}}),s.jsx("div",{className:"amx-cal-gallday",style:{height:D},children:l("calview.allDay")}),s.jsxs("div",{className:"amx-cal-ghours",ref:g,children:[qe.map(o=>s.jsx("div",{className:"amx-cal-hour",style:{height:p},children:o===0?"":`${o}:00`},o)),s.jsxs("span",{className:"amx-cal-nowlabel",style:{top:W/60*p},children:[String(Math.floor(W/60)).padStart(2,"0"),":",String(W%60).padStart(2,"0")]})]})]})}),s.jsx("div",{className:"amx-cal-tscroll",ref:c,onScroll:()=>{F(),I()},children:s.jsxs("div",{className:"amx-cal-tgrid2",style:{gridTemplateColumns:`repeat(${S.length}, ${v}px)`,gridTemplateRows:`${le+14}px auto ${qe.length*p}px`},children:[S.map(o=>s.jsxs("div",{className:`amx-cal-thead2${fe(o,A)?" today":""}`,children:[s.jsx("span",{className:"amx-cal-tdow",children:Rt(o.getDay())}),s.jsxs("span",{className:"amx-cal-tdate",children:[o.getMonth()+1,"/",o.getDate()]})]},+o)),S.map(o=>s.jsx("div",{className:"amx-cal-allday2",children:u.filter(r=>r.allDay&&et(r.start,r.end,o)).map(r=>s.jsx("button",{className:`amx-cal-chip-ev amx-cal-alldrag${r.readonly?" readonly":""}${x===r.key?" selected":""}${ut(r,o)}`,style:Ce(r.color),"aria-label":l("calview.a11yAllDayEvent",{title:r.title}),title:r.readonly?r.title:l("calview.allDayDragHint",{title:r.title}),onPointerDown:Y,onPointerUp:m=>O(r,m),children:r.title},r.key))},+o)),S.map(o=>s.jsxs("div",{className:"amx-cal-daycol2","data-date":J(o,!0),onDoubleClick:r=>{if(r.target.closest(".amx-cal-event"))return;const m=r.currentTarget.getBoundingClientRect(),j=xe(r.currentTarget)||1,b=Math.max(0,Math.min(1410,be((r.clientY-m.top)/j/p*60)));$(o,b,{left:r.clientX,top:r.clientY,right:r.clientX,bottom:r.clientY,zoom:j})},children:[(()=>{const r=u.filter(j=>!j.allDay&&fe(j.start,o)),m=Hn(r);return r.map(j=>{const b=We(j.start,j.end,p),L=m.get(j.key)??{leftPct:0,widthPct:100};return s.jsxs("button",{className:`amx-cal-event${j.readonly?" readonly":""}${x===j.key?" selected":""}`,style:{...Ce(j.color),top:b.top,height:Math.max(14,b.height),left:`calc(${L.leftPct}% + 2px)`,width:`calc(${L.widthPct}% - 4px)`},"aria-label":j.end?l("calview.a11yEventRange",{title:j.title,start:Z(j.start),end:Z(j.end)}):l("calview.a11yEvent",{title:j.title,time:Z(j.start)}),title:j.title,onPointerDown:B=>d(j,B),onPointerMove:R,onPointerUp:B=>H(j,B),children:[s.jsxs("span",{className:"amx-cal-event-t",children:[Z(j.start),j.end?`–${Z(j.end)}`:""]}),s.jsx("span",{className:"amx-cal-event-title",children:j.title})]},j.key)})})(),s.jsx("div",{className:`amx-cal-nowline${fe(o,A)?" today":""}`,style:{top:W/60*p}})]},+o)),s.jsx("div",{className:"amx-cal-dropghost",ref:k})]})})]})}),Vn=n.forwardRef(function({anchorRef:t,events:a,selectedKey:u,onPick:x,onCreate:z,titleRef:$},y){const{t:M}=ze(),l=n.useRef(null),[c,g]=n.useState(0),v=te(i=>i.setVisibleRange),T=n.useMemo(()=>Q(new Date),[]),D=n.useMemo(()=>{const i=ae(Te(T),-Ze*7);return Array.from({length:Ze*2+1},(f,k)=>ae(i,k*7))},[T]),C=n.useRef(!1),[p,K]=n.useState(null),I=n.useRef(""),A=n.useRef(-1);n.useEffect(()=>()=>v(null,null),[v]);const S=(i,f)=>Math.round($e(Te(new Date(i,f,1)),D[0])/7),P=()=>{const i=l.current;if(!i||!c)return;const f=Math.max(0,Math.min(D.length-1,Math.round(i.scrollTop/c))),k=ae(D[f],3),w=At(k);if(t&&(t.current={y:k.getFullYear(),m:k.getMonth()}),w!==I.current&&(I.current=w,$.current&&($.current.textContent=w)),f!==A.current){A.current=f;const q=Math.max(1,Math.round(i.clientHeight/c)),W=D[Math.min(D.length-1,f+q-1)];v(J(D[f],!0),J(ae(W,6),!0))}};n.useLayoutEffect(()=>{const i=l.current;if(!i)return;const f=()=>g(Math.max(64,(i.clientHeight-le)/6));f();const k=new ResizeObserver(f);return k.observe(i),()=>k.disconnect()},[]),n.useLayoutEffect(()=>{const i=l.current;if(!i||!c||C.current)return;C.current=!0;const f=t?.current;if(f){let k=Math.max(0,Math.min(D.length-1,S(f.y,f.m)));ae(D[k],3).getMonth()!==f.m&&k+1<D.length&&(k+=1),i.scrollTop=k*c}else i.scrollTop=S(T.getFullYear(),T.getMonth())*c;P()},[c]),n.useImperativeHandle(y,()=>({prev:()=>h(-1),next:()=>h(1),today:()=>l.current?.scrollTo({top:S(T.getFullYear(),T.getMonth())*c,behavior:"smooth"}),goto:i=>{if(!c)return;const f=Math.max(0,Math.min(D.length-1,Math.round($e(Te(i),D[0])/7)));l.current?.scrollTo({top:f*c,behavior:"smooth"})}}),[c]);const h=i=>{const f=l.current;if(!f||!c)return;const k=Math.max(0,Math.min(D.length-1,Math.round(f.scrollTop/c))),w=ae(D[k],3);f.scrollTo({top:Math.max(0,S(w.getFullYear(),w.getMonth()+i))*c,behavior:"smooth"})},E=i=>{i.stopPropagation(),i.currentTarget.setPointerCapture(i.pointerId)},N=(i,f)=>{const k=oe(f);if(i.readonly){x(i.key,k);return}const q=document.elementFromPoint(f.clientX,f.clientY)?.closest(".amx-cal-mcell")?.getAttribute("data-date");if(q){const W=$e(me(q),i.start);if(W!==0){Me(i,He(i.start,W),i.end?He(i.end,W):null);return}}x(i.key,k)};return s.jsxs("div",{className:"amx-cal-mscroll",ref:l,onScroll:P,children:[s.jsx("div",{className:"amx-cal-weekhead2",children:Mt().map(i=>s.jsx("div",{children:i},i))}),s.jsx("div",{className:"amx-cal-mweeks",children:D.map(i=>s.jsx("div",{className:"amx-cal-mweek",style:{height:c},children:Qe(i,7).map(f=>{const k=a.filter(w=>et(w.start,w.end,f));return s.jsxs("div",{className:`amx-cal-mcell${fe(f,T)?" today":""}`,"data-date":J(f,!0),onDoubleClick:w=>{w.target.closest(".amx-cal-chip-ev")||z(f,{left:w.clientX,top:w.clientY,right:w.clientX,bottom:w.clientY,zoom:xe(w.currentTarget)||1})},children:[s.jsx("div",{className:"amx-cal-mnum",children:f.getDate()===1?M("calview.monthFirst",{m:f.getMonth()+1}):f.getDate()}),k.slice(0,3).map(w=>s.jsxs("button",{className:`amx-cal-chip-ev${w.readonly?" readonly":""}${u===w.key?" selected":""}${ut(w,f)}`,style:Ce(w.color),title:w.title,"aria-label":!w.allDay&&fe(w.start,f)?M("calview.a11yEvent",{title:w.title,time:Z(w.start)}):w.title,onPointerDown:E,onPointerUp:q=>N(w,q),children:[!w.allDay&&fe(w.start,f)&&s.jsx("span",{className:"amx-cal-chip-t",children:Z(w.start)})," ",w.title]},w.key)),k.length>3&&s.jsx("button",{className:"amx-cal-more","aria-label":M("calview.a11yMoreEvents",{m:f.getMonth()+1,d:f.getDate(),n:k.length}),onClick:w=>K({day:f,events:k,at:oe(w)}),children:M("calview.moreItems",{n:k.length-3})})]},+f)})},+i))}),p&&s.jsx(Bn,{day:p.day,events:p.events,at:p.at,onPick:(i,f)=>{K(null),x(i,f)},onClose:()=>K(null)})]})});function Bn({day:e,events:t,at:a,onPick:u,onClose:x}){const{t:z}=ze(),$=292,y=a.zoom||1,M=12*y,l=Math.max(M,Math.min(a.left,window.innerWidth-$*y-M))/y,c=Math.max(M,Math.min(a.bottom+6*y,window.innerHeight-356*y-M))/y,g=n.useRef(null),v=n.useRef(x);return v.current=x,n.useEffect(()=>{const T=document.activeElement instanceof HTMLElement?document.activeElement:null;g.current?.querySelector(".amx-cal-agenda-list > button")?.focus();const D=C=>{C.key==="Escape"&&(C.preventDefault(),v.current())};return window.addEventListener("keydown",D),()=>{window.removeEventListener("keydown",D),T?.focus()}},[]),s.jsx("div",{className:"amx-cal-agenda-overlay",onMouseDown:x,children:s.jsxs("section",{className:"amx-cal-agenda",ref:g,role:"dialog","aria-modal":"true","aria-label":z("calview.a11yDayEvents",{m:e.getMonth()+1,d:e.getDate()}),style:{left:l,top:c,width:$},onMouseDown:T=>T.stopPropagation(),children:[s.jsxs("header",{children:[s.jsx("strong",{children:z("calview.dayHeading",{m:e.getMonth()+1,d:e.getDate()})}),s.jsx("button",{onClick:x,"aria-label":z("calview.closeAgenda"),children:"×"})]}),s.jsx("div",{className:"amx-cal-agenda-list",children:t.map(T=>s.jsxs("button",{style:Ce(T.color),onClick:D=>u(T.key,oe(D)),children:[s.jsx("span",{className:"amx-cal-agenda-time",children:T.allDay?z("calview.allDay"):Z(T.start)}),s.jsx("span",{children:T.title})]},T.key))})]})})}export{rs as CalendarView,Vn as MonthScroll};
@@ -1 +0,0 @@
1
- .dash-stat{gap:4px}.dash-stat-value{font-size:var(--ui-font-display, 20px);font-weight:620;line-height:1.02;color:var(--text);font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:4px}.dash-stat-unit{font-size:.42em;font-weight:500;color:var(--text-muted)}.dash-stat-label{font-size:var(--ui-font-meta, 12px);color:var(--text-muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-stat-sub{font-size:var(--ui-font-caption, 11px);color:var(--text-faint, var(--text-muted))}.dash-chart{height:100%;display:flex;flex-direction:column;min-height:0;padding:10px 12px;gap:8px}.dash-chart-title{flex:0 0 auto;font-size:var(--ui-font-meta, 12px);font-weight:550;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-chart-body{flex:1 1 auto;min-height:0;display:flex}.dash-filterbar{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:6px 12px;border-bottom:var(--border-width, 1px) solid var(--border);background:var(--bg-card, var(--bg));font-size:var(--ui-font-meta, 12px)}.dash-filterbar-label{color:var(--text-faint, var(--text-muted));margin-right:2px}.dash-filter-chip{display:inline-flex;align-items:center;gap:5px;padding:2px 6px 2px 8px;border:var(--border-width, 1px) solid color-mix(in srgb,var(--primary) 32%,var(--border));border-radius:var(--radius-pill, 999px);background:color-mix(in srgb,var(--primary) 8%,transparent);color:var(--text)}.dash-filter-chip b{font-weight:550}.dash-filter-chip button{border:none;background:transparent;cursor:pointer;padding:0;display:inline-flex;color:var(--text-faint, var(--text-muted))}.dash-filter-chip button:hover{color:var(--danger, #e5484d)}.dash-filter-add{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-pill, 999px);cursor:pointer;border:var(--border-width, 1px) dashed var(--border);background:transparent;color:var(--text-muted)}.dash-filter-add:hover{border-color:color-mix(in srgb,var(--primary) 45%,var(--border));color:var(--text)}.dash-filter-editor{display:flex;flex-direction:column;gap:6px;padding:8px;min-width:200px}.dash-filter-editor select,.dash-filter-editor input{width:100%;font:inherit;font-size:var(--ui-font-meta, 12px);padding:4px 6px;border:var(--border-width, 1px) solid var(--border);border-radius:var(--radius-sm, 6px);background:var(--bg);color:var(--text)}.dash-filter-editor select:focus-visible,.dash-filter-editor input:focus-visible{outline:var(--focus-ring) solid var(--primary);outline-offset:1px}.dash-filter-commit{border:none;border-radius:var(--radius-sm, 6px);cursor:pointer;padding:5px 8px;font-size:var(--ui-font-meta, 12px);font-weight:550;background:var(--primary);color:var(--bg)}.dash-router-page{display:flex;flex-direction:column;width:100%;height:100%;min-height:0}.dash-router-page>.dash2,.dash-router-page>.dash3{flex:1 1 auto;min-height:0}.dash3{--dash3-page-pad-block-start: 18px;--dash3-page-pad-block-end: 28px;display:flex;flex-direction:column;min-height:0}.dash3-mode-btn{padding-inline:8px;font-weight:550}.dash3-host{position:relative;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;background:var(--bg-card, var(--bg));transition:background-color var(--dur-normal, .25s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1))}.dash3-host:not([data-locked]){background:color-mix(in srgb,var(--primary) 2.5%,var(--bg-card, var(--bg)))}.dash3-grid{width:min(100%,1180px);margin-inline:auto;display:grid;grid-template-columns:repeat(var(--dash3-cols, 12),minmax(0,1fr));grid-auto-rows:var(--dash3-row, 72px);gap:var(--dash3-gap, 12px);padding-block-start:var(--dash3-page-pad-block-start);padding-block-end:var(--dash3-page-pad-block-end);padding-inline:var(--dash3-gap, 12px);align-content:start}.dash3-card-slot{position:relative;min-width:0;min-height:0}.dash3-card-slot:has(.dash3-card[data-dragging]),.dash3-card-slot:has(.dash3-card[data-sizing]){z-index:5}.dash3-card{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;border:var(--border-width, 1px) solid transparent;border-radius:var(--radius-md, 12px);background:var(--bg);box-shadow:var(--card-shadow);container-type:inline-size;width:100%;height:100%;transition:background-color var(--dur-normal, .25s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)),border-color var(--dur-fast, .18s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)),box-shadow var(--dur-normal, .25s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)),opacity var(--dur-fast, .18s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1))}.dash3-card[data-surface=metric]{background:color-mix(in srgb,var(--primary) 6%,var(--bg));box-shadow:none}.dash3-card[data-surface=summary]{background:var(--bg);box-shadow:var(--card-shadow)}.dash3-card[data-surface=workspace]{background:var(--bg-card, var(--bg));box-shadow:none}.dash3-card[data-surface=note]{background:color-mix(in srgb,var(--bg) 82%,var(--bg-card));box-shadow:none}.dash3-card--chrome{border-color:transparent;background:transparent;box-shadow:none;overflow:visible;align-self:end}.dash3-card-head{flex:0 0 auto;display:flex;align-items:center;min-height:34px;gap:7px;padding-inline:12px 8px;border-bottom:var(--border-width, 1px) solid transparent;background:transparent;font-size:var(--ui-font-meta, 12px);font-weight:600;color:var(--text-muted);min-width:0}.dash3-card-icon{flex:0 0 auto;opacity:.72}.dash3-card-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash3-card-open{flex:0 0 auto;width:24px;height:24px;border:var(--border-width, 1px) solid transparent;background:transparent;cursor:pointer;color:var(--text-faint, var(--text-muted));padding:0;border-radius:var(--radius-sm, 6px);display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s ease,color .12s ease,background-color .12s ease}.dash3-card:hover .dash3-card-open{opacity:1}.dash3-card-open:hover{color:var(--text);background:var(--overlay-light)}.dash3-card-open:focus-visible{opacity:1;outline:var(--focus-ring) solid var(--primary);outline-offset:1px}.dash3-card-body{flex:1 1 auto;min-width:0;min-height:0;overflow:hidden}.dash3-card[data-surface=workspace]>.dash3-card-body{overflow:auto}.dash3-card[data-kind=view]>.dash3-card-body{overflow:hidden}.dash3-card[data-kind=text]>.dash3-card-body{padding:10px 12px}.dash3-card--chrome>.dash3-card-body{padding:0}.dash-widget.dash-section{display:flex;align-items:baseline;justify-content:flex-start;gap:8px;min-width:0;height:100%;padding:10px 2px 2px;text-align:left}.dash-section-title{color:var(--text);font-size:var(--ui-font-body, 13px);font-weight:650;letter-spacing:.02em}.dash-section-note{overflow:hidden;color:var(--text-muted);font-size:var(--ui-font-meta, 12px);text-overflow:ellipsis;white-space:nowrap}.dash-viewcard--compact{overflow:hidden}.dash-viewcard--interactive{width:100%;height:100%;min-height:0;overflow:hidden}.dash-viewcard--interactive>.am-app{width:100%;height:100%;min-height:0}.dash-compact{height:100%;min-height:0;display:flex;flex-direction:column;padding:0 12px 12px;color:var(--text)}.dash-compact-kpi{min-height:40px;display:flex;align-items:baseline;gap:6px;flex:0 0 auto}.dash-compact-kpi strong{font-size:var(--ui-font-display, 20px);line-height:1;font-weight:640;font-variant-numeric:tabular-nums}.dash-compact-kpi span{color:var(--text-muted);font-size:var(--ui-font-caption, 11px)}.dash-compact-kpi button{margin-left:auto;width:24px;height:24px;display:grid;place-items:center;border:var(--border-width, 1px) solid transparent;border-radius:var(--radius-sm, 6px);background:transparent;color:var(--text-muted);cursor:pointer}.dash-compact-kpi button:hover{background:var(--overlay-light);color:var(--text)}.dash-compact-rows{min-height:0;display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.dash-compact-row{min-height:30px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:4px 0;border:0;border-bottom:var(--border-width, 1px) solid color-mix(in srgb,var(--border) 44%,transparent);background:transparent;color:var(--text);font:inherit;text-align:left}button.dash-compact-row{cursor:pointer}button.dash-compact-row{transition:color var(--dur-fast, .18s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)),opacity var(--dur-fast, .18s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)),background-color var(--dur-fast, .18s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1))}button.dash-compact-row:hover{color:var(--primary);background:color-mix(in srgb,var(--primary) 4%,transparent)}.dash-compact-row>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ui-font-meta, 12px)}.dash-compact-row>span b{display:block;overflow:hidden;color:var(--text-muted);font-size:var(--ui-font-caption, 11px);font-weight:550;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.dash-compact-row>span.is-done{color:var(--text-faint, var(--text-muted));text-decoration:line-through}.dash-compact-row>em{color:var(--text-faint, var(--text-muted));font-size:var(--ui-font-caption, 11px);font-style:normal;white-space:nowrap}.dash-compact-row>em.overdue{color:var(--danger)}.dash-compact-more{padding-top:6px;flex:0 0 auto;color:var(--text-faint, var(--text-muted));font-size:var(--ui-font-caption, 11px)}.dash-compact-empty{min-height:80px;display:flex;align-items:center;justify-content:center;gap:6px;color:var(--text-muted);font-size:var(--ui-font-meta, 12px)}.dash-agenda-row>i{width:7px;height:7px;border-radius:var(--radius-pill, 999px)}.dash-inbox-dot{width:6px;height:6px;border-radius:var(--radius-pill, 999px);background:color-mix(in srgb,var(--text-muted) 28%,transparent)}.dash-inbox-dot.is-unread{background:var(--primary)}.dash-activity-lines{min-height:0;overflow:hidden;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--ui-font-caption, 11px);line-height:1.55}.dash-activity-lines>div{display:grid;grid-template-columns:3.4em minmax(3em,auto) minmax(0,1fr);gap:6px}.dash-activity-lines time{color:var(--text-faint, var(--text-muted))}.dash-activity-lines b{overflow:hidden;color:var(--primary);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.dash-activity-lines span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash3-shield{position:absolute;inset:0;z-index:2;cursor:grab;touch-action:none;background:transparent;border-radius:inherit;transition:background-color var(--dur-fast, .18s) var(--ease-apple, ease)}.dash3-shield:hover{background:color-mix(in srgb,var(--overlay-light, rgba(127, 127, 127, .06)) 50%,transparent)}.dash3-shield:focus-visible{outline:var(--focus-ring) solid var(--primary);outline-offset:-2px}.dash3-card[data-interact]{outline:1.5px solid var(--primary);outline-offset:1px}.dash3-card[data-dragging]{opacity:.35;outline:1.5px dashed color-mix(in srgb,var(--primary) 55%,transparent);outline-offset:-1.5px}.dash3-card[data-dragging] .dash3-shield{cursor:grabbing}.dash3-card[data-dragging] .dash3-card-btn,.dash3-card[data-dragging] .dash3-grip{opacity:0!important}.dash3-card--lift{cursor:grabbing;box-shadow:0 1px 2px #00000014,0 16px 40px #0000002e;transform:scale(1.02)}.dash3-overlay-ghost{background:linear-gradient(180deg,color-mix(in srgb,var(--primary) 4%,transparent),transparent 62%)}.dash3 .dash-add-menu{animation:dash3-menu-in var(--dur-fast, .18s) var(--ease-apple, cubic-bezier(.25, .1, .25, 1)) both}.dash3 .dash-menu-scrim{animation:dash3-scrim-in var(--dur-fast, .18s) ease both}@keyframes dash3-menu-in{0%{opacity:0;transform:translateY(-5px) scale(.98)}to{opacity:1;transform:none}}@keyframes dash3-scrim-in{0%{opacity:0}to{opacity:1}}.dash3-card-btn{position:absolute;z-index:4;top:6px;width:24px;height:24px;align-items:center;justify-content:center;border:var(--border-width, 1px) solid color-mix(in srgb,var(--border) 72%,transparent);background:var(--bg);color:var(--text-faint, var(--text-muted));cursor:pointer;padding:0;border-radius:var(--radius-sm, 6px);display:inline-flex;opacity:0;transition:opacity .12s ease,color .12s ease,background-color .12s ease}.dash3-card-more{right:36px}.dash3-card-del{right:6px}.dash3-card:hover .dash3-card-btn{opacity:1}.dash3-card-more:hover{color:var(--text);background:var(--overlay-light)}.dash3-card-del:hover{color:var(--danger);background:var(--overlay-light)}.dash3-card-btn:focus-visible{opacity:1;outline:var(--focus-ring) solid var(--primary);outline-offset:1px}.dash3-grip{position:absolute;right:0;bottom:0;width:22px;height:22px;z-index:4;cursor:nwse-resize;touch-action:none;opacity:0;border-radius:var(--radius-sm, 6px) 0 0 0;background:color-mix(in srgb,var(--bg) 76%,transparent);transition:opacity .12s ease,background-color .12s ease}.dash3-host:not([data-locked]) .dash3-grip{opacity:.5}.dash3-card:hover .dash3-grip{opacity:1}.dash3-grip:after{content:"";position:absolute;right:5px;bottom:5px;width:8px;height:8px;border-right:2px solid color-mix(in srgb,var(--primary) 72%,var(--text-muted));border-bottom:2px solid color-mix(in srgb,var(--primary) 72%,var(--text-muted));border-bottom-right-radius:3px}.dash3-card[data-sizing]{outline:1.5px solid var(--primary);outline-offset:1px}.dash3-card[data-sizing] .dash3-grip{opacity:1}@starting-style{.dash3-host:not([data-locked]) .dash3-grip{opacity:0}}.dash3-empty{width:min(100%,680px);min-height:clamp(360px,64vh,560px);margin-inline:auto;padding-block:44px;padding-inline:24px;display:grid;place-items:center}.dash3-empty-panel{width:min(100%,460px)}.dash3-empty-mark{width:42px;height:42px;display:grid;place-items:center;border:var(--border-width, 1px) solid color-mix(in srgb,var(--primary) 24%,var(--border));border-radius:var(--radius-md, 12px);background:color-mix(in srgb,var(--primary) 8%,var(--bg));color:var(--primary)}.dash3-empty-copy{margin-top:16px}.dash3-empty-title{font-size:var(--ui-font-heading, 14px);line-height:1.3;font-weight:650;color:var(--text)}.dash3-empty-sub{margin-top:6px;max-width:38ch;font-size:var(--ui-font-body, 13px);line-height:1.55;color:var(--text-muted)}.dash3-templates{margin-top:20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.dash3-template{min-width:0;min-height:76px;display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;align-items:center;padding-block:12px;padding-inline:12px;border:var(--border-width, 1px) solid transparent;border-radius:var(--radius-md, 12px);background:var(--bg);box-shadow:var(--card-shadow);cursor:pointer;text-align:left;transition:transform .14s ease,border-color .14s ease,background-color .14s ease}.dash3-template:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--primary) 48%,var(--border));background:color-mix(in srgb,var(--primary) 3%,var(--bg))}.dash3-template:active{transform:translateY(0)}.dash3-template:focus-visible{outline:var(--focus-ring) solid var(--primary);outline-offset:2px}.dash3-template-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:var(--radius-sm, 8px);background:color-mix(in srgb,var(--primary) 8%,var(--bg-card, var(--bg)));color:var(--primary)}.dash3-template-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.dash3-template-name{font-size:var(--ui-font-body, 13px);line-height:1.25;font-weight:650;color:var(--text)}.dash3-template-hint{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ui-font-caption, 11px);color:var(--text-muted)}.dash3-size-dim{margin-left:auto;color:var(--text-faint, var(--text-muted));font-variant-numeric:tabular-nums}.dash3-card--chrome .dash-section{padding-inline:4px}.dash3-card--chrome .dash-section-title{font-size:var(--ui-font-body, 13px);line-height:1.35;font-weight:650;letter-spacing:0}@media(max-width:560px){.dash3-empty{padding-inline:16px}.dash3-templates{grid-template-columns:minmax(0,1fr)}}@media(prefers-reduced-motion:reduce){.dash3-host,.dash3-card,.dash-compact-row,.dash3-template,.dash3-card-open,.dash3-card-btn,.dash3-grip,.dash3-shield{transition-duration:.01ms}.dash3 .dash-add-menu,.dash3 .dash-menu-scrim{animation:none}}