@fudanda/admin-antd 2.20261109.1-beta.1 → 2.20261109.1-beta.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 (97) hide show
  1. package/dist/chunks/ApiTokensPage-w3JGRNQC.js +2 -0
  2. package/dist/chunks/ApiTokensPage-w3JGRNQC.js.map +1 -0
  3. package/dist/chunks/{App-CfQx7jWq.js → App-nh6_qOo8.js} +5 -5
  4. package/dist/chunks/{App-CfQx7jWq.js.map → App-nh6_qOo8.js.map} +1 -1
  5. package/dist/chunks/{AppModal-CVoUC2t3.js → AppModal-CEouaU03.js} +2 -2
  6. package/dist/chunks/{AppModal-CVoUC2t3.js.map → AppModal-CEouaU03.js.map} +1 -1
  7. package/dist/chunks/{ArcBaseAdmin-DQyddbFC.js → ArcBaseAdmin-CX7fQz4x.js} +2 -2
  8. package/dist/chunks/{ArcBaseAdmin-DQyddbFC.js.map → ArcBaseAdmin-CX7fQz4x.js.map} +1 -1
  9. package/dist/chunks/{DepartmentsPage-CQx53QGE.js → DepartmentsPage-BdD9VfDI.js} +2 -2
  10. package/dist/chunks/{DepartmentsPage-CQx53QGE.js.map → DepartmentsPage-BdD9VfDI.js.map} +1 -1
  11. package/dist/chunks/{DictsPage-BGnamkWk.js → DictsPage-fxBdV1-3.js} +2 -2
  12. package/dist/chunks/{DictsPage-BGnamkWk.js.map → DictsPage-fxBdV1-3.js.map} +1 -1
  13. package/dist/chunks/{EntityContextRuntime-CbzeMNXR.js → EntityContextRuntime-CMhoj6qe.js} +2 -2
  14. package/dist/chunks/{EntityContextRuntime-CbzeMNXR.js.map → EntityContextRuntime-CMhoj6qe.js.map} +1 -1
  15. package/dist/chunks/EntityContextRuntime-Dc89ZSnM.js +1 -0
  16. package/dist/chunks/{ExportButton-sMPAV2hd.js → ExportButton-DGxB2tcu.js} +2 -2
  17. package/dist/chunks/{ExportButton-sMPAV2hd.js.map → ExportButton-DGxB2tcu.js.map} +1 -1
  18. package/dist/chunks/{FileViewerPreviewPanel-Rti7pUhU.js → FileViewerPreviewPanel-BMZ7FdKV.js} +3 -3
  19. package/dist/chunks/{FileViewerPreviewPanel-Rti7pUhU.js.map → FileViewerPreviewPanel-BMZ7FdKV.js.map} +1 -1
  20. package/dist/chunks/{FilesPage-D_iYsUwl.js → FilesPage-DrgWELKy.js} +3 -3
  21. package/dist/chunks/{FilesPage-D_iYsUwl.js.map → FilesPage-DrgWELKy.js.map} +1 -1
  22. package/dist/chunks/{IdentitySecurityPage-rDYX5ksX.js → IdentitySecurityPage-BjTKvr-O.js} +2 -2
  23. package/dist/chunks/{IdentitySecurityPage-rDYX5ksX.js.map → IdentitySecurityPage-BjTKvr-O.js.map} +1 -1
  24. package/dist/chunks/{LogStatsScaffold-CMIz4z0a.js → LogStatsScaffold-DaB0JeAN.js} +2 -2
  25. package/dist/chunks/{LogStatsScaffold-CMIz4z0a.js.map → LogStatsScaffold-DaB0JeAN.js.map} +1 -1
  26. package/dist/chunks/{LoginLogsPage-Bv5pPJb2.js → LoginLogsPage-VmYC7i6q.js} +2 -2
  27. package/dist/chunks/{LoginLogsPage-Bv5pPJb2.js.map → LoginLogsPage-VmYC7i6q.js.map} +1 -1
  28. package/dist/chunks/{LoginLogsTable-DYcTx2oR.js → LoginLogsTable-CULcc_e8.js} +2 -2
  29. package/dist/chunks/{LoginLogsTable-DYcTx2oR.js.map → LoginLogsTable-CULcc_e8.js.map} +1 -1
  30. package/dist/chunks/{MarkdownPreviewPanel-lqs6AsoN.js → MarkdownPreviewPanel-CBcPc7Wv.js} +2 -2
  31. package/dist/chunks/{MarkdownPreviewPanel-lqs6AsoN.js.map → MarkdownPreviewPanel-CBcPc7Wv.js.map} +1 -1
  32. package/dist/chunks/{MasterDetailLayout-B5uqvh98.js → MasterDetailLayout-ByIBpmkZ.js} +2 -2
  33. package/dist/chunks/{MasterDetailLayout-B5uqvh98.js.map → MasterDetailLayout-ByIBpmkZ.js.map} +1 -1
  34. package/dist/chunks/{McpSettingsPage-Cdej9Evi.js → McpSettingsPage-C5V_rj2V.js} +2 -2
  35. package/dist/chunks/{McpSettingsPage-Cdej9Evi.js.map → McpSettingsPage-C5V_rj2V.js.map} +1 -1
  36. package/dist/chunks/{MemberAssignmentSheet-AKvLbbYW.js → MemberAssignmentSheet-DL0fg1Yf.js} +2 -2
  37. package/dist/chunks/{MemberAssignmentSheet-AKvLbbYW.js.map → MemberAssignmentSheet-DL0fg1Yf.js.map} +1 -1
  38. package/dist/chunks/{MenuCommandPalette-ia0pSIFg.js → MenuCommandPalette-C2PvK3Gh.js} +2 -2
  39. package/dist/chunks/{MenuCommandPalette-ia0pSIFg.js.map → MenuCommandPalette-C2PvK3Gh.js.map} +1 -1
  40. package/dist/chunks/{MenusPage-Bh55bvKH.js → MenusPage-Bytd1HlW.js} +2 -2
  41. package/dist/chunks/{MenusPage-Bh55bvKH.js.map → MenusPage-Bytd1HlW.js.map} +1 -1
  42. package/dist/chunks/{MonacoPreviewPanel-CT_sjf7Z.js → MonacoPreviewPanel-BZrNIcFZ.js} +2 -2
  43. package/dist/chunks/{MonacoPreviewPanel-CT_sjf7Z.js.map → MonacoPreviewPanel-BZrNIcFZ.js.map} +1 -1
  44. package/dist/chunks/{NavListPanel-DMIUMh7q.js → NavListPanel-zwUDIYSP.js} +2 -2
  45. package/dist/chunks/{NavListPanel-DMIUMh7q.js.map → NavListPanel-zwUDIYSP.js.map} +1 -1
  46. package/dist/chunks/{OperationLogsPage-7XVfmhxP.js → OperationLogsPage-D2BQdGNp.js} +2 -2
  47. package/dist/chunks/{OperationLogsPage-7XVfmhxP.js.map → OperationLogsPage-D2BQdGNp.js.map} +1 -1
  48. package/dist/chunks/{OperationLogsTable-gp-WZxiF.js → OperationLogsTable-DaaON4QR.js} +3 -3
  49. package/dist/chunks/{OperationLogsTable-gp-WZxiF.js.map → OperationLogsTable-DaaON4QR.js.map} +1 -1
  50. package/dist/chunks/{PDFPreviewPanel-CyfhyWav.js → PDFPreviewPanel-CMmnWBKW.js} +3 -3
  51. package/dist/chunks/{PDFPreviewPanel-CyfhyWav.js.map → PDFPreviewPanel-CMmnWBKW.js.map} +1 -1
  52. package/dist/chunks/{PositionsPage-Bwua1vNV.js → PositionsPage-CBZITssT.js} +2 -2
  53. package/dist/chunks/{PositionsPage-Bwua1vNV.js.map → PositionsPage-CBZITssT.js.map} +1 -1
  54. package/dist/chunks/{PreferencesSheetBody-C80D3dOM.js → PreferencesSheetBody-B0poTPEA.js} +2 -2
  55. package/dist/chunks/{PreferencesSheetBody-C80D3dOM.js.map → PreferencesSheetBody-B0poTPEA.js.map} +1 -1
  56. package/dist/chunks/{ProfilePage-DeTw-59a.js → ProfilePage-DLhacdWt.js} +2 -2
  57. package/dist/chunks/{ProfilePage-DeTw-59a.js.map → ProfilePage-DLhacdWt.js.map} +1 -1
  58. package/dist/chunks/{ProjectInfoPage-Bqn3gfXa.js → ProjectInfoPage-CJpGxpu5.js} +2 -2
  59. package/dist/chunks/{ProjectInfoPage-Bqn3gfXa.js.map → ProjectInfoPage-CJpGxpu5.js.map} +1 -1
  60. package/dist/chunks/{RelationPanel-Bio-ig-l.js → RelationPanel-BsbfEDo2.js} +2 -2
  61. package/dist/chunks/{RelationPanel-Bio-ig-l.js.map → RelationPanel-BsbfEDo2.js.map} +1 -1
  62. package/dist/chunks/{RolesPage-fwUSs2HR.js → RolesPage-46dzdiah.js} +2 -2
  63. package/dist/chunks/{RolesPage-fwUSs2HR.js.map → RolesPage-46dzdiah.js.map} +1 -1
  64. package/dist/chunks/{SessionConflictModal-Dw4opoNP.js → SessionConflictModal-Bm38eExL.js} +2 -2
  65. package/dist/chunks/{SessionConflictModal-Dw4opoNP.js.map → SessionConflictModal-Bm38eExL.js.map} +1 -1
  66. package/dist/chunks/SettingModuleDetail-BjxUJeH5.js +17 -0
  67. package/dist/chunks/SettingModuleDetail-BjxUJeH5.js.map +1 -0
  68. package/dist/chunks/{SettingsPage-Cy5-q-P6.js → SettingsPage-C32Vuizm.js} +2 -2
  69. package/dist/chunks/{SettingsPage-Cy5-q-P6.js.map → SettingsPage-C32Vuizm.js.map} +1 -1
  70. package/dist/chunks/{StatCard-BROG4NSp.js → StatCard-CRPfkSBY.js} +2 -2
  71. package/dist/chunks/{StatCard-BROG4NSp.js.map → StatCard-CRPfkSBY.js.map} +1 -1
  72. package/dist/chunks/{UserGroupsPage-CsTBkUPy.js → UserGroupsPage-08G5MdGm.js} +2 -2
  73. package/dist/chunks/{UserGroupsPage-CsTBkUPy.js.map → UserGroupsPage-08G5MdGm.js.map} +1 -1
  74. package/dist/chunks/{UserLogsPanels-3u8Z93YU.js → UserLogsPanels-nbIrMym9.js} +2 -2
  75. package/dist/chunks/{UserLogsPanels-3u8Z93YU.js.map → UserLogsPanels-nbIrMym9.js.map} +1 -1
  76. package/dist/chunks/{UserTransferSelect-ChLj4EkS.js → UserTransferSelect-C8betaWG.js} +2 -2
  77. package/dist/chunks/{UserTransferSelect-ChLj4EkS.js.map → UserTransferSelect-C8betaWG.js.map} +1 -1
  78. package/dist/chunks/{UsersPage-CfNnQJi4.js → UsersPage-BjTiNEqF.js} +2 -2
  79. package/dist/chunks/{UsersPage-CfNnQJi4.js.map → UsersPage-BjTiNEqF.js.map} +1 -1
  80. package/dist/chunks/{browser-BKLM0ThC-D0TgzKTC.js → browser-BKLM0ThC-Cp7Gi4-F.js} +1 -1
  81. package/dist/chunks/{code-BkkeN2fd.js → code-LswxAr98.js} +1 -1
  82. package/dist/chunks/{direct-engine-m32m22nx.js → direct-engine-Dv_6v4sx.js} +1 -1
  83. package/dist/chunks/{html-BGNWR_Bp.js → html-BokjxlLb.js} +1 -1
  84. package/dist/chunks/{line-CsTeuEcK.js → line-Bqh6atHH.js} +1 -1
  85. package/dist/chunks/{lrc-D6gjnGZ5.js → lrc-T5e1svZG.js} +1 -1
  86. package/dist/chunks/{markdown-BglUe9j8.js → markdown-BpWokN1s.js} +1 -1
  87. package/dist/chunks/{patch-C97Yl3jr.js → patch-BYVX5C9G.js} +1 -1
  88. package/dist/chunks/{worker-engine-B7_3qQVS.js → worker-engine-CtUAeI4G.js} +1 -1
  89. package/dist/index.js +1 -1
  90. package/dist/{src-DAkFn9SG.js → src-D6UlLiVN.js} +2 -2
  91. package/dist/{src-DAkFn9SG.js.map → src-D6UlLiVN.js.map} +1 -1
  92. package/package.json +9 -9
  93. package/dist/chunks/ApiTokensPage-DiRMgViD.js +0 -2
  94. package/dist/chunks/ApiTokensPage-DiRMgViD.js.map +0 -1
  95. package/dist/chunks/EntityContextRuntime-C9q95WDf.js +0 -1
  96. package/dist/chunks/SettingModuleDetail-I9CSJ-fh.js +0 -17
  97. package/dist/chunks/SettingModuleDetail-I9CSJ-fh.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"App-CfQx7jWq.js","mappings":"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","names":["__iconData","__iconData$25","createLucideIcon","__iconData$24","__iconData$23","__iconData$22","__iconData$21","__iconData$20","__iconData$19","__iconData$18","__iconData$17","Menu","__iconData$16","__iconData$15","__iconData$14","__iconData$13","__iconData$12","__iconData$11","__iconData$10","__iconData$9","__iconData$8","__iconData$7","__iconData$6","__iconData$5","__iconData$4","__iconData$3","Upload","__iconData$2","__iconData$1","X","markPostLoginHome","POST_LOGIN_HOME_KEY","hasPostLoginHome","clearPostLoginHome","__vitePreload","n","loaders","TopbarClock","now","setNow","useState","useEffect","interval","timeout","formatTopbarClock","mode","showDate","readAccountVersionInfo","meta","source","name","values","explicit","result","key","value","AccountVersionPopup","theme","info","versionInfo","children","detail","token","lazyIllustration","component","cache","exportName","lazy","m","emptyIllustration","Light","Dark","style","size","Suspense","isChunkLoadError","error","RouteErrorBoundary","useLocation","useAdminOptions","PageErrorBoundary","pathname","React","AdminPathsContext","props","state","reportAdminError","report","formatDateTime","componentStack","copyTextWithToast","chunkFailed","Empty","Button","RefreshCw","Home","Copy","LockPanel","auth","useAuth","usePreferences","App","lock","Result","Form","password","message","Input","Modal","onClose","preferences","getFieldValue","isReactComponent","val","ensureLucideIcons","LucideIcons","mod","registry","a","b","listeners","l","loadPromise","subscribe","cb","useLucideIconsReady","useSyncExternalStore","useAllIconNames","allNames","renderLucideIcon","Icon","DynamicIcon","iconProps","fallback","applyWeekStart","weekStart","pref","dayjs","updateLocale","PreferencesProvider","CoreProvider","useThemeController","context","useContext","ThemeControllerContext","createContext","TokenBridge","dark","_Fragment","AntTheme","optional","useOptionalPreferences","cached","readCachedPreferences","hostTheme","useMemo","systemDark","usePrefersDark","refresh","wait","msUntilScheduleBoundary","timer","isScheduledDarkNow","color","getThemeColorVars","radius","font","DarkContext","ConfigProvider","locale","enUS","zhCN","FeedbackBridge","usePreferencesPanel","prefsVisible","setPrefsVisible","prefsSearch","setPrefsSearch","handleCopyPreferences","useCallback","overrides","handleExportPreferences","downloadBlob","Toast","importPrefsVisible","setImportPrefsVisible","importPrefsText","setImportPrefsText","parsed","sanitized","sanitizeImportedPreferences","setPreferences","PreferencesPanel","panel","isDark","useAntDark","lockMode","setLockMode","closeImport","Tooltip","Settings","Drawer","hasEditablePreferences","Download","RotateCcw","confirmDanger","resetPreferences","Search","event","Spin","PreferencesSheetBody","homePaths","ModalFooter","RouteViewTransition","animation","ViewTransition","ENTER_CLASS","EXIT_CLASS","ROUTE_BACK_TRANSITION_TYPE","KeepAliveOutlet","outlet","useOutlet","cacheRef","useRef","prevPathRef","isCacheable","keepAlivePaths","currentVersion","refreshVersion","existing","openPaths","MAX_CACHE","oldest","k","useLayoutEffect","container","scrollContainerSelector","prev","prevEntry","path","entry","Activity","MenuSearchInput","open","setOpen","openedOnce","setOpenedOnce","buttonRef","shortcutsEnabled","handler","keyboard","current","activeElement","MenuCommandPalette","visible","items","item","firstPath","menu","chain","child","NavigationBreadcrumb","navigate","useNavigate","matched","menus","home","Space","index","target","Breadcrumb","isFavorite","toggleFavorite","Star","NavigationProgress","previous","progress","setProgress","finish","hide","FavoriteMenus","move","ids","favorites","id","delta","Dropdown","logoGradientAxis","axis","logoStopCssColor","percent","mixWith","AppLogo","uid","useId","hostBrand","useHostBrand","options","logo","hostDefault","className","gradientId","cls","LOGO_VIEW_BOX","LOGO_FACES","face","LOGO_STROKE_WIDTH","LoginPage","appTitle","useAdminTitle","location","params","redirect","redirectTo","prefillUsername","loading","setLoading","sessionConflict","setSessionConflict","conflictResolving","setConflictResolving","captchaChallenge","setCaptchaChallenge","identityQuery","useIdentityCapabilities","captchaQuery","usePublicCaptcha","captchaEnabled","captchaRequired","effectiveCaptchaId","effectiveCaptchaSvg","fetchCaptcha","loginRules","loginInitial","loginForm","useLoginForm","invalidated","setInvalidated","invalidatedTaken","setLoginValue","takeAuthInvalidatedReason","navigateAfterLogin","handleLogin","onLogin","GoaError","conflict","ApiLoginConflictSchema","handleResolveConflict","resolveSessionConflict","handleLoginSubmit","renderLoginForm","EmbeddedIdentityLogin","LoginField","User","Lock","CAPTCHA_BOX_STYLE","LoginFormError","PRIMARY_BUTTON_STYLE","invalidatedTitle","INVALIDATED_TITLES","brand","Check","feature","Title","Text","ShieldAlert","SessionConflictModal","Typography","LayoutHeader","showTrigger","mobile","collapsed","jsx","PanelLeftOpen","PanelLeftClose","onToggle","actions","each","isArrayLike","t","o","setStyles","s","e","isNull","isBoolean","isNumber","numberToCssPx","getStyles","isString","c","r","getCSSVal","from","cacheUpdateContextual","i","getApi","isArray","isFunction","isObject","g","S","equal","u","mergeParms","flush","f","getDebouncer","_","d","isPlainObject","assignDeep","removeUndefinedProperties","keys","deduplicateArray","getDomTokensArray","getAttr","bind","setAttrs","domTokenListOperation","domTokenListAttr","addAttrClass","removeAttrClass","createDomTokenListClass","removeClass","isElement","is","closest","findFirst","createOrKeepArray","parent","removeElements","D","createDiv","getTrustedTypePolicy","contents","validFiniteNumber","roundCssNumber","parseToZeroOrNumber","z","getElmWidthHeightProperty","C","$","elementHasDimensions","domRectHasDimensions","runEachAndClear","removeEventListener","stopPropagation","preventDefault","addEventListener","stopAndPrevent","sanitizeAxis","getAxis","capNumber","removeEvent","manageListener","addEvent","push","isEmptyArray","M","getInstancePluginModuleInstance","L","V","q","F","O","st","ft","St","vt","gt","x","E","H","overflowCssValueToOverflowStyle","Y","capitalizeFirstLetter","hasOwnProperty","At","Tt","kt","concat","getOptionsDiff","isEmptyObject","opsStringify","getPropByPath","Rt","getNativeScrollbarSize","appendChildren","A","I","getFractionalSize","getNativeScrollbarsHiding","addClass","P","getFocusableScrollers","getActiveElement","swallowFocusEvents","focusElement","isHTMLElement","createDOM","getNonce","createEventListenerHub","createCache","equalXY","v","isBodyElement","h","Mt","w","p","removeAttrs","addZoomListener","Vt","createEnvironment","destroy","updateElements","find","createEventContentChange","observerCallback","noop","inArray","getStaticPluginModuleInstance","xt","ct","onSizeChangedCallbackProxy","domRectAppeared","Lt","debounce","resizeObserverCallback","et","isHeightIntrinsic","at","triggerOnTrinsicChangedCallback","intersectionObserverCallback","onSizeChanged","createSizeObserver","B","j","y","getDirectionIsRTL","createDebouncedObservesUpdate","fn","getEnvironment","Et","equalWH","hasAttrClass","N","W","getElementScroll","J","T","scrollElementTo","setDirection","onTrinsicChanged","onContentMutation","onHostMutation","createTrinsicObserver","R","createDOMObserver","ignoreMutationFromOptions","liesBetween","isUndefined","resolveInitialization","dynamicInitializationElement","initScrollTimeline","cancelAnimation","isDefaultDirectionScrollCoordinates","getTrasformTranslateValue","getViewportPercent","getAxisValue","scrollbarStructureAddRemoveClass","scrollbarStyle","scrollbarsAddRemoveClass","refreshScrollbarsHandleLength","createScrollbarStyleFn","refreshScrollbarsHandleOffset","getScrollCoordinatesPercent","refreshScrollbarsScrollCoordinates","refreshScrollbarsScrollbarOffset","styleScrollbarPosition","getTranslateValue","generateScrollbarDOM","dt","pt","selfClearTimeout","scrollOffsetElementScrollBy","createInteractiveScrollEvents","getBoundingClientRect","getHandleOffset","scrollRelative","moveHandleRelative","releasePointerCapture","zt","yt","Ot","getFocusedElement","hasAttr","skipEventIfSleeping","isHoverablePointerType","createScrollbarsSetupElements","createScrollbarsSetupEvents","manageScrollbarsAutoHideInstantInteraction","manageScrollbarsAutoHide","mt","onHostMouseEnter","onHostMouseLeave","manageAutoHideSuspension","U","G","K","Q","Z","tt","nt","ot","setScrollbarVisibility","ht","ut","$t","Ct","bt","wt","_t","getDocumentWindow","staticInitializationElement","elementHasOverflow","overflowIsVisible","elementIsGenerated","addRemoveAttrClass","rt","it","unwrap","equalTRBL","topRightBottomLeft","setMeasuringMode","getFlowDirectionStyles","getMeasuredScrollCoordinates","hasDimensions","getOverflowAmount","getViewportOverflowStyle","getAxisOverflowStyle","overflowBehaviorToOverflowStyle","setViewportOverflowStyle","createAllOverflowStyleClassNames","createViewportOverflowStyleClassName","getZeroScrollCoordinates","getShowNativeOverlaidScrollbars","getWindowSize","lt","getElementOverflowStyle","sanitizeScrollCoordinates","createStructureSetupElements","createTrinsicUpdateSegment","createPaddingUpdateSegment","createOverflowUpdateSegment","createOptionCheck","createStructureSetup","createObserversSetup","update","createScrollbarsSetup","updateHintsAreTruthy","Pt","getInstance","validateOptions","triggerEvent","createSetups","removeInstance","translateScrollbarStructure","translateScrollbarsSetupElement","addInstance","registerPluginModuleInstances","OverlayScrollbars","cancelInitialization","addPlugins","setNonce","setTrustedTypePolicy","ScrollArea","Element","element","setElement","node","scrollRef","initialize","useOverlayScrollbars","scroll","horizontal","vertical","LayoutSidebar","onHover","rail","LayoutGrid","title","canViewMcpSettings","superAdmin","permissions","mcpSettingsPage","withPersonalMenu","personalPaths","personalMenuPages","page","settingsRootKey","settingsKey","integrationRootKey","integrationKey","removePersonal","profile","profileIcon","settingsIcon","apiTokenIcon","canViewMcp","mcpIcon","integrationIndex","integrationIcon","menuChain","firstMenuPath","menuParentKeys","parents","accordionKeys","opened","next","closed","LayoutMenu","selectedBg","openKeys","setOpenKeys","selected","menuItems","convert","nodes","inline","accordion","scrollIntoView","frame","onSelect","ContainerLayout","darkToken","hovered","setHovered","layout","split","root","sideMenus","sidebar","expandedOnHover","effectiveCollapsed","railWidth","width","reserved","maximized","siderDark","headerDark","tone","tabbar","select","match","onCollapse","onNavigate","isCollapsed","topMenus","sidebarTheme","breadcrumb","Minimize","onRestore","LayoutTabbar","clip","observed","observer","entries","sync","tab","mutations","tabs","setAnimation","clearAnimation","onRefresh","Pin","store","active","Tabs","Ellipsis","action","ChevronDown","Maximize","onMaximize","denied","known","Link","safeLoginRedirect","search","Shell","useIsMobile","menuQuery","useCurrentUserMenuTree","mounted","useMountedAdminModules","useLockScreen","useFavoriteMenus","contentFullscreen","setContentFullscreen","setCollapsed","versions","setVersions","useTabsStore","openTabs","flat","visit","data","recent","useRecentMenus","useAutoLock","useLayoutShortcuts","routes","settings","integration","UserRound","KeyRound","Settings2","Sparkles","PlugZap","pages","module","hostPage","currentMenu","allowed","addTab","setActiveKey","startTransition","close","removeTab","tabMeta","cachePaths","adminPaths","useAdminPaths","useArcBase","webmcpSettings","useMcpPolicy","webmcp","wrapWebMcp","useWebMcpHost","session","PageLoading","content","body","TabsMetaContext","visibleTabs","logout","perform","modal","LockKeyhole","canEditPreference","Sun","Moon","LogOut","Avatar","BackTop","HomeEntry","ready","Page","pageComponents","AuthenticatedRoutes","paths","pageProps","permission","Navigate","Routes","Route","foundationPagePaths","UpdateFrame","SafeUpdateProvider","updates","AntApp","IdentityCallback","RealtimeBridge","pageLoaders","loader"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,53,54],"sources":["../../../../node_modules/lucide-react/dist/esm/icons/check.mjs","../../../../node_modules/lucide-react/dist/esm/icons/chevron-down.mjs","../../../../node_modules/lucide-react/dist/esm/icons/download.mjs","../../../../node_modules/lucide-react/dist/esm/icons/house.mjs","../../../../node_modules/lucide-react/dist/esm/icons/key-round.mjs","../../../../node_modules/lucide-react/dist/esm/icons/lock-keyhole.mjs","../../../../node_modules/lucide-react/dist/esm/icons/lock.mjs","../../../../node_modules/lucide-react/dist/esm/icons/log-out.mjs","../../../../node_modules/lucide-react/dist/esm/icons/menu.mjs","../../../../node_modules/lucide-react/dist/esm/icons/minimize.mjs","../../../../node_modules/lucide-react/dist/esm/icons/moon.mjs","../../../../node_modules/lucide-react/dist/esm/icons/panel-left-close.mjs","../../../../node_modules/lucide-react/dist/esm/icons/panel-left-open.mjs","../../../../node_modules/lucide-react/dist/esm/icons/pin.mjs","../../../../node_modules/lucide-react/dist/esm/icons/plug-zap.mjs","../../../../node_modules/lucide-react/dist/esm/icons/refresh-cw.mjs","../../../../node_modules/lucide-react/dist/esm/icons/settings-2.mjs","../../../../node_modules/lucide-react/dist/esm/icons/settings.mjs","../../../../node_modules/lucide-react/dist/esm/icons/shield-alert.mjs","../../../../node_modules/lucide-react/dist/esm/icons/sparkles.mjs","../../../../node_modules/lucide-react/dist/esm/icons/star.mjs","../../../../node_modules/lucide-react/dist/esm/icons/sun.mjs","../../../../node_modules/lucide-react/dist/esm/icons/upload.mjs","../../../../node_modules/lucide-react/dist/esm/icons/user-round.mjs","../../../../node_modules/lucide-react/dist/esm/icons/user.mjs","../../../../node_modules/lucide-react/dist/esm/icons/x.mjs","../../src/lib/post-login.ts","../../src/page-registry.ts","../../src/components/TopbarClock.tsx","../../src/components/account-version-info.ts","../../src/components/AccountVersionInfo.tsx","../../src/components/EmptyIllustration.tsx","../../src/components/PageErrorBoundary.tsx","../../src/layouts/admin/LockPanel.tsx","../../src/utils/icons.tsx","../../src/components/DynamicIcon.tsx","../../src/lib/week-start.ts","../../src/hooks/PreferencesProvider.tsx","../../src/providers/theme-controller.ts","../../src/admin/theme.tsx","../../src/layouts/admin/usePreferencesPanel.tsx","../../src/layouts/admin/PreferencesPanel.tsx","../../src/layouts/route-transition-types.ts","../../src/layouts/RouteViewTransition.tsx","../../src/layouts/KeepAliveOutlet.tsx","../../src/components/MenuSearchInput.tsx","../../src/components/NavigationBreadcrumb.tsx","../../src/components/NavigationProgress.tsx","../../src/components/FavoriteMenus.tsx","../../src/lib/brand-logo.ts","../../src/components/AppLogo.tsx","../../src/pages/login/LoginPage.tsx","../../src/layouts/react-antd-admin/LayoutHeader.tsx","../../node_modules/overlayscrollbars/overlayscrollbars.mjs","../../node_modules/overlayscrollbars-react/overlayscrollbars-react.mjs","../../src/components/ScrollArea.tsx","../../src/layouts/react-antd-admin/LayoutSidebar.tsx","../../src/layouts/react-antd-admin/menu-model.ts","../../src/layouts/react-antd-admin/LayoutMenu.tsx","../../src/layouts/react-antd-admin/ContainerLayout.tsx","../../src/layouts/react-antd-admin/LayoutTabbar.tsx","../../src/App.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"check\",\n size: 24,\n node: [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]]\n};\n__iconData.node;\nconst Check = createLucideIcon(__iconData);\n\nexport { __iconData, Check as default };\n//# sourceMappingURL=check.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"chevron-down\",\n size: 24,\n node: [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]]\n};\n__iconData.node;\nconst ChevronDown = createLucideIcon(__iconData);\n\nexport { __iconData, ChevronDown as default };\n//# sourceMappingURL=chevron-down.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"download\",\n size: 24,\n node: [\n [\"path\", { d: \"M12 15V3\", key: \"m9g1x1\" }],\n [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }],\n [\"path\", { d: \"m7 10 5 5 5-5\", key: \"brsn70\" }]\n ]\n};\n__iconData.node;\nconst Download = createLucideIcon(__iconData);\n\nexport { __iconData, Download as default };\n//# sourceMappingURL=download.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"house\",\n size: 24,\n node: [\n [\"path\", { d: \"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\", key: \"5wwlr5\" }],\n [\n \"path\",\n {\n d: \"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\",\n key: \"r6nss1\"\n }\n ]\n ],\n aliases: [\"home\"]\n};\n__iconData.node;\nconst House = createLucideIcon(__iconData);\n\nexport { __iconData, House as default };\n//# sourceMappingURL=house.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"key-round\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\",\n key: \"1s6t7t\"\n }\n ],\n [\"circle\", { cx: \"16.5\", cy: \"7.5\", r: \".5\", fill: \"currentColor\", key: \"w0ekpg\" }]\n ]\n};\n__iconData.node;\nconst KeyRound = createLucideIcon(__iconData);\n\nexport { __iconData, KeyRound as default };\n//# sourceMappingURL=key-round.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"lock-keyhole\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"16\", r: \"1\", key: \"1au0dj\" }],\n [\"rect\", { x: \"3\", y: \"10\", width: \"18\", height: \"12\", rx: \"2\", key: \"6s8ecr\" }],\n [\"path\", { d: \"M7 10V7a5 5 0 0 1 10 0v3\", key: \"1pqi11\" }]\n ]\n};\n__iconData.node;\nconst LockKeyhole = createLucideIcon(__iconData);\n\nexport { __iconData, LockKeyhole as default };\n//# sourceMappingURL=lock-keyhole.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"lock\",\n size: 24,\n node: [\n [\"rect\", { width: \"18\", height: \"11\", x: \"3\", y: \"11\", rx: \"2\", ry: \"2\", key: \"1w4ew1\" }],\n [\"path\", { d: \"M7 11V7a5 5 0 0 1 10 0v4\", key: \"fwvmzm\" }]\n ]\n};\n__iconData.node;\nconst Lock = createLucideIcon(__iconData);\n\nexport { __iconData, Lock as default };\n//# sourceMappingURL=lock.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"log-out\",\n size: 24,\n node: [\n [\"path\", { d: \"m16 17 5-5-5-5\", key: \"1bji2h\" }],\n [\"path\", { d: \"M21 12H9\", key: \"dn1m92\" }],\n [\"path\", { d: \"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\", key: \"1uf3rs\" }]\n ]\n};\n__iconData.node;\nconst LogOut = createLucideIcon(__iconData);\n\nexport { __iconData, LogOut as default };\n//# sourceMappingURL=log-out.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"menu\",\n size: 24,\n node: [\n [\"path\", { d: \"M4 5h16\", key: \"1tepv9\" }],\n [\"path\", { d: \"M4 12h16\", key: \"1lakjw\" }],\n [\"path\", { d: \"M4 19h16\", key: \"1djgab\" }]\n ]\n};\n__iconData.node;\nconst Menu = createLucideIcon(__iconData);\n\nexport { __iconData, Menu as default };\n//# sourceMappingURL=menu.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"minimize\",\n size: 24,\n node: [\n [\"path\", { d: \"M8 3v3a2 2 0 0 1-2 2H3\", key: \"hohbtr\" }],\n [\"path\", { d: \"M21 8h-3a2 2 0 0 1-2-2V3\", key: \"5jw1f3\" }],\n [\"path\", { d: \"M3 16h3a2 2 0 0 1 2 2v3\", key: \"198tvr\" }],\n [\"path\", { d: \"M16 21v-3a2 2 0 0 1 2-2h3\", key: \"ph8mxp\" }]\n ]\n};\n__iconData.node;\nconst Minimize = createLucideIcon(__iconData);\n\nexport { __iconData, Minimize as default };\n//# sourceMappingURL=minimize.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"moon\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\",\n key: \"kfwtm\"\n }\n ]\n ]\n};\n__iconData.node;\nconst Moon = createLucideIcon(__iconData);\n\nexport { __iconData, Moon as default };\n//# sourceMappingURL=moon.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"panel-left-close\",\n size: 24,\n node: [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M9 3v18\", key: \"fh3hqa\" }],\n [\"path\", { d: \"m16 15-3-3 3-3\", key: \"14y99z\" }]\n ],\n aliases: [\"sidebar-close\"]\n};\n__iconData.node;\nconst PanelLeftClose = createLucideIcon(__iconData);\n\nexport { __iconData, PanelLeftClose as default };\n//# sourceMappingURL=panel-left-close.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"panel-left-open\",\n size: 24,\n node: [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M9 3v18\", key: \"fh3hqa\" }],\n [\"path\", { d: \"m14 9 3 3-3 3\", key: \"8010ee\" }]\n ],\n aliases: [\"sidebar-open\"]\n};\n__iconData.node;\nconst PanelLeftOpen = createLucideIcon(__iconData);\n\nexport { __iconData, PanelLeftOpen as default };\n//# sourceMappingURL=panel-left-open.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"pin\",\n size: 24,\n node: [\n [\"path\", { d: \"M12 17v5\", key: \"bb1du9\" }],\n [\n \"path\",\n {\n d: \"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z\",\n key: \"1nkz8b\"\n }\n ]\n ]\n};\n__iconData.node;\nconst Pin = createLucideIcon(__iconData);\n\nexport { __iconData, Pin as default };\n//# sourceMappingURL=pin.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"plug-zap\",\n size: 24,\n node: [\n [\n \"path\",\n { d: \"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z\", key: \"goz73y\" }\n ],\n [\"path\", { d: \"m2 22 3-3\", key: \"19mgm9\" }],\n [\"path\", { d: \"M7.5 13.5 10 11\", key: \"7xgeeb\" }],\n [\"path\", { d: \"M10.5 16.5 13 14\", key: \"10btkg\" }],\n [\"path\", { d: \"m18 3-4 4h6l-4 4\", key: \"16psg9\" }]\n ],\n aliases: [\"plug-zap-2\"]\n};\n__iconData.node;\nconst PlugZap = createLucideIcon(__iconData);\n\nexport { __iconData, PlugZap as default };\n//# sourceMappingURL=plug-zap.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"refresh-cw\",\n size: 24,\n node: [\n [\"path\", { d: \"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\", key: \"v9h5vc\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }],\n [\"path\", { d: \"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\", key: \"3uifl3\" }],\n [\"path\", { d: \"M8 16H3v5\", key: \"1cv678\" }]\n ]\n};\n__iconData.node;\nconst RefreshCw = createLucideIcon(__iconData);\n\nexport { __iconData, RefreshCw as default };\n//# sourceMappingURL=refresh-cw.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"settings-2\",\n size: 24,\n node: [\n [\"path\", { d: \"M14 17H5\", key: \"gfn3mx\" }],\n [\"path\", { d: \"M19 7h-9\", key: \"6i9tg\" }],\n [\"circle\", { cx: \"17\", cy: \"17\", r: \"3\", key: \"18b49y\" }],\n [\"circle\", { cx: \"7\", cy: \"7\", r: \"3\", key: \"dfmy0x\" }]\n ]\n};\n__iconData.node;\nconst Settings2 = createLucideIcon(__iconData);\n\nexport { __iconData, Settings2 as default };\n//# sourceMappingURL=settings-2.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"settings\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\",\n key: \"1i5ecw\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n ]\n};\n__iconData.node;\nconst Settings = createLucideIcon(__iconData);\n\nexport { __iconData, Settings as default };\n//# sourceMappingURL=settings.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"shield-alert\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ],\n [\"path\", { d: \"M12 8v4\", key: \"1got3b\" }],\n [\"path\", { d: \"M12 16h.01\", key: \"1drbdi\" }]\n ]\n};\n__iconData.node;\nconst ShieldAlert = createLucideIcon(__iconData);\n\nexport { __iconData, ShieldAlert as default };\n//# sourceMappingURL=shield-alert.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"sparkles\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\",\n key: \"1s2grr\"\n }\n ],\n [\"path\", { d: \"M20 2v4\", key: \"1rf3ol\" }],\n [\"path\", { d: \"M22 4h-4\", key: \"gwowj6\" }],\n [\"circle\", { cx: \"4\", cy: \"20\", r: \"2\", key: \"6kqj1y\" }]\n ],\n aliases: [\"stars\"]\n};\n__iconData.node;\nconst Sparkles = createLucideIcon(__iconData);\n\nexport { __iconData, Sparkles as default };\n//# sourceMappingURL=sparkles.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"star\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\",\n key: \"r04s7s\"\n }\n ]\n ]\n};\n__iconData.node;\nconst Star = createLucideIcon(__iconData);\n\nexport { __iconData, Star as default };\n//# sourceMappingURL=star.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"sun\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n ]\n};\n__iconData.node;\nconst Sun = createLucideIcon(__iconData);\n\nexport { __iconData, Sun as default };\n//# sourceMappingURL=sun.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"upload\",\n size: 24,\n node: [\n [\"path\", { d: \"M12 3v12\", key: \"1x0j5s\" }],\n [\"path\", { d: \"m17 8-5-5-5 5\", key: \"7q97r8\" }],\n [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }]\n ]\n};\n__iconData.node;\nconst Upload = createLucideIcon(__iconData);\n\nexport { __iconData, Upload as default };\n//# sourceMappingURL=upload.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"user-round\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"8\", r: \"5\", key: \"1hypcn\" }],\n [\"path\", { d: \"M20 21a8 8 0 0 0-16 0\", key: \"rfgkzh\" }]\n ],\n aliases: [\"user-2\"]\n};\n__iconData.node;\nconst UserRound = createLucideIcon(__iconData);\n\nexport { __iconData, UserRound as default };\n//# sourceMappingURL=user-round.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"user\",\n size: 24,\n node: [\n [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n ]\n};\n__iconData.node;\nconst User = createLucideIcon(__iconData);\n\nexport { __iconData, User as default };\n//# sourceMappingURL=user.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"x\",\n size: 24,\n node: [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n ]\n};\n__iconData.node;\nconst X = createLucideIcon(__iconData);\n\nexport { __iconData, X as default };\n//# sourceMappingURL=x.mjs.map\n","/**\n * 「登录后默认首页」一次性跳转标记。\n * 登录成功且落地目标为 '/' 时写入 sessionStorage;\n * 首页路由(HomeEntry)读取后按偏好 homePath 决定是否跳转,\n * 偏好就绪后清除标记,避免用户手动访问 '/' 时被劫持。\n */\nconst POST_LOGIN_HOME_KEY = 'arcbase_post_login_home';\nexport function markPostLoginHome() {\n try {\n sessionStorage.setItem(POST_LOGIN_HOME_KEY, '1');\n }\n catch { /* ignore */ }\n}\nexport function hasPostLoginHome(): boolean {\n try {\n return sessionStorage.getItem(POST_LOGIN_HOME_KEY) === '1';\n }\n catch {\n return false;\n }\n}\nexport function clearPostLoginHome() {\n try {\n sessionStorage.removeItem(POST_LOGIN_HOME_KEY);\n }\n catch { /* ignore */ }\n}\n","import type { ComponentType } from 'react';\nconst loaders = import.meta.glob<{\n default: ComponentType<Record<string, unknown>>;\n}>([\n './pages/dashboard/DashboardPage.tsx',\n './pages/system/departments/DepartmentsPage.tsx',\n './pages/system/positions/PositionsPage.tsx',\n './pages/users/UsersPage.tsx',\n './pages/system/menus/MenusPage.tsx',\n './pages/system/roles/RolesPage.tsx',\n './pages/system/user-groups/UserGroupsPage.tsx',\n './pages/system/dicts/DictsPage.tsx',\n './pages/system/settings/SettingsPage.tsx',\n './pages/system/project-info/ProjectInfoPage.tsx',\n './pages/system/api-tokens/ApiTokensPage.tsx',\n './pages/system/mcp/McpSettingsPage.tsx',\n './pages/system/identity-security/IdentitySecurityPage.tsx',\n './pages/system/files/FilesPage.tsx',\n './pages/system/sessions/OnlineSessionsPage.tsx',\n './pages/system/login-logs/LoginLogsPage.tsx',\n './pages/system/operation-logs/OperationLogsPage.tsx',\n './pages/profile/ProfilePage.tsx',\n]);\nexport const pageLoaders = {\n '/': loaders['./pages/dashboard/DashboardPage.tsx'],\n '/system/departments': loaders['./pages/system/departments/DepartmentsPage.tsx'],\n '/system/positions': loaders['./pages/system/positions/PositionsPage.tsx'],\n '/system/users': loaders['./pages/users/UsersPage.tsx'],\n '/system/menus': loaders['./pages/system/menus/MenusPage.tsx'],\n '/system/roles': loaders['./pages/system/roles/RolesPage.tsx'],\n '/system/user-groups': loaders['./pages/system/user-groups/UserGroupsPage.tsx'],\n '/system/dicts': loaders['./pages/system/dicts/DictsPage.tsx'],\n '/system/settings': loaders['./pages/system/settings/SettingsPage.tsx'],\n '/system/project-info': loaders['./pages/system/project-info/ProjectInfoPage.tsx'],\n '/system/api-tokens': loaders['./pages/system/api-tokens/ApiTokensPage.tsx'],\n '/system/mcp': loaders['./pages/system/mcp/McpSettingsPage.tsx'],\n '/system/identity-security': loaders['./pages/system/identity-security/IdentitySecurityPage.tsx'],\n '/system/files': loaders['./pages/system/files/FilesPage.tsx'],\n '/system/sessions': loaders['./pages/system/sessions/OnlineSessionsPage.tsx'],\n '/system/login-logs': loaders['./pages/system/login-logs/LoginLogsPage.tsx'],\n '/system/operation-logs': loaders['./pages/system/operation-logs/OperationLogsPage.tsx'],\n '/profile': loaders['./pages/profile/ProfilePage.tsx'],\n};\n","import { formatTopbarClock } from '@fudanda/react-core/utils/topbar-clock';\nimport { useEffect, useState } from 'react';\nimport type { TopbarClockMode } from '@fudanda/react-core/hooks/usePreferences';\n/**\n * 顶栏时钟:分钟对齐 tick(59 秒内最多晚一分钟,无秒级定时器开销)。\n * 调用方在 `topbarClock === 'off'` 时不渲染。\n */\nexport function TopbarClock({ mode, showDate }: Readonly<{\n mode: Exclude<TopbarClockMode, 'off'>;\n showDate: boolean;\n}>) {\n const [now, setNow] = useState(() => new Date());\n useEffect(() => {\n let interval: ReturnType<typeof setInterval> | undefined;\n const timeout = setTimeout(() => {\n setNow(new Date());\n interval = setInterval(() => setNow(new Date()), 60 * 1000);\n }, (60 - new Date().getSeconds()) * 1000 + 50);\n return () => {\n clearTimeout(timeout);\n if (interval !== undefined)\n clearInterval(interval);\n };\n }, []);\n return (<span className=\"admin-topbar-clock\" title={formatTopbarClock(now, mode, true)}>\n {formatTopbarClock(now, mode, showDate)}\n </span>);\n}\n","import type { ArcBaseVersionInfo } from '@fudanda/react-core/admin/types';\n\ntype VersionDetails = Partial<ArcBaseVersionInfo>;\ntype MetaDocument = Pick<Document, 'querySelector'>;\n\n/** Explicit host data owns the complete identity; HTML metadata is the fallback. */\nexport function readAccountVersionInfo(explicit?: ArcBaseVersionInfo, source: MetaDocument | undefined = globalThis.document): VersionDetails | undefined {\n const meta = (name: string) => source?.querySelector<HTMLMetaElement>(`meta[name=\"arcbase-${name}\"]`)?.content;\n const values: VersionDetails = explicit ?? {\n appVersion: meta('app-version'), sdkVersion: meta('sdk-version'), releaseId: meta('release-id'),\n commit: meta('app-commit'), buildTime: meta('app-build-time'),\n };\n const result: VersionDetails = {};\n for (const key of ['appVersion', 'sdkVersion', 'releaseId', 'commit', 'buildTime'] as const) {\n const value = values[key]?.trim();\n if (value) result[key] = value;\n }\n return result.appVersion || result.sdkVersion || result.releaseId ? result : undefined;\n}\n","import type { ReactNode } from 'react';\nimport { theme } from 'antd';\nimport type { ArcBaseVersionInfo } from '@fudanda/react-core/admin/types';\nimport { readAccountVersionInfo } from './account-version-info';\nimport './account-version-info.css';\n\n/** Information outside the menu has no action, selected state or keyboard stop. */\nexport function AccountVersionPopup({ children, versionInfo }: { children: ReactNode; versionInfo?: ArcBaseVersionInfo }) {\n const { token } = theme.useToken();\n const info = readAccountVersionInfo(versionInfo);\n if (!info) return children;\n const detail = [info.commit ? `业务提交:${info.commit}` : '', info.buildTime ? `构建时间:${info.buildTime}` : ''].filter(Boolean).join('\\n');\n return <div className=\"arc-account-menu-surface\" style={{ background: token.colorBgElevated, borderRadius: token.borderRadiusLG, boxShadow: token.boxShadowSecondary }}>\n {children}\n <footer className=\"arc-account-version\" role=\"note\" aria-label=\"版本信息\" title={detail || undefined}>\n {info.appVersion ? <div className=\"arc-account-version__row\"><span>应用版本</span><span title={info.appVersion}>{info.appVersion}</span></div> : null}\n {info.sdkVersion ? <div className=\"arc-account-version__row\"><span>ArcBase Go SDK</span><span title={info.sdkVersion}>{info.sdkVersion}</span></div> : null}\n {info.releaseId ? <div className=\"arc-account-version__row\"><span>发布批次</span><span title={info.releaseId}>{info.releaseId}</span></div> : null}\n </footer>\n </div>;\n}\n","import { lazy, Suspense, type ComponentType, type CSSProperties, type ReactNode } from 'react';\ntype IllustrationModule = typeof import(\"@/ui/illustrations\");\ntype StripPrefix<K> = K extends `Illustration${infer Name}` ? Name : never;\n/** 插画名(不含 `Illustration` 前缀与 `Dark` 后缀):`Idle` / `NoContent` / `NoAccess` / `NotFound` / `Failure` / `Success` / `Construction` / `NoResult` */\nexport type IllustrationName = Exclude<StripPrefix<keyof IllustrationModule>, `${string}Dark`>;\ninterface IllustrationProps {\n readonly style?: CSSProperties;\n}\nconst cache = new Map<string, ComponentType<IllustrationProps>>();\n// 插画只在空态 / 错误态真正渲染时下载。\nfunction lazyIllustration(exportName: keyof IllustrationModule): ComponentType<IllustrationProps> {\n let component = cache.get(exportName);\n if (!component) {\n component = lazy(() => import(\"@/ui/illustrations\").then((m) => ({\n default: m[exportName] as ComponentType<IllustrationProps>,\n })));\n cache.set(exportName, component);\n }\n return component;\n}\nexport interface EmptyIllustrationPair {\n readonly image: ReactNode;\n readonly darkModeImage: ReactNode;\n}\n/**\n * `Empty` 的 `image` / `darkModeImage` 一对懒加载插画。\n *\n * @example\n * <Empty {...emptyIllustration('Idle', 120)} description=\"暂无通知\" />\n */\nexport function emptyIllustration(name: IllustrationName, size?: number): EmptyIllustrationPair {\n const Light = lazyIllustration(`Illustration${name}`);\n const Dark = lazyIllustration(`Illustration${name}Dark`);\n const style = size === undefined ? undefined : { width: size, height: size };\n return {\n image: <Suspense fallback={null}><Light style={style}/></Suspense>,\n darkModeImage: <Suspense fallback={null}><Dark style={style}/></Suspense>,\n };\n}\n","import React from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { Button, Empty } from \"@/ui\";\nimport { RefreshCw, Home, Copy } from 'lucide-react';\nimport { formatDateTime } from \"@fudanda/react-core/utils/date\";\nimport { copyTextWithToast } from \"@/utils/clipboard\";\nimport { emptyIllustration } from \"@/components/EmptyIllustration\";\nimport { AdminPathsContext, useAdminOptions, reportAdminError } from \"@fudanda/react-core/admin/runtime\";\nimport type { ArcBaseAdminTelemetry } from '@fudanda/react-core/admin/types';\ninterface Props {\n children: React.ReactNode;\n telemetry?: ArcBaseAdminTelemetry;\n /**\n * 路由路径变更时自动重置错误状态。\n * 推荐传入 `useLocation().pathname`,配合外层函数组件使用。\n */\n resetKey?: string;\n}\ninterface State {\n error: Error | null;\n componentStack: string | null;\n resetKey: string | undefined;\n}\n/**\n * 页面级 Error Boundary\n *\n * 捕获子组件的运行时错误,展示友好提示 UI,并提供\"重试\"与\"返回首页\"操作。\n * 路由切换时(resetKey 变化)自动清空错误状态,避免跨页面残留。\n *\n * 用法(需配合 useLocation,因为 class 组件不能直接用 hook):\n * ```tsx\n * function RouteErrorBoundary({ children }) {\n * const { pathname } = useLocation();\n * return <PageErrorBoundary resetKey={pathname}>{children}</PageErrorBoundary>;\n * }\n * ```\n */\n/**\n * 判定是否为动态模块(chunk)加载失败:网络中断,或发版后旧产物已被清理。\n * 覆盖 Chrome/Firefox/Safari 的原生 dynamic import 报错与 webpack 风格 ChunkLoadError。\n */\nfunction isChunkLoadError(error: Error): boolean {\n return (error.name === 'ChunkLoadError' ||\n /Failed to fetch dynamically imported module|error loading dynamically imported module|Importing a module script failed/i.test(error.message));\n}\nexport class PageErrorBoundary extends React.Component<Props, State> {\n static contextType = AdminPathsContext;\n declare context: React.ContextType<typeof AdminPathsContext>;\n constructor(props: Props) {\n super(props);\n this.state = { error: null, componentStack: null, resetKey: props.resetKey };\n }\n static getDerivedStateFromError(error: Error): Partial<State> {\n return { error };\n }\n static getDerivedStateFromProps(props: Props, state: State): Partial<State> | null {\n // 路由切换时重置\n if (props.resetKey !== state.resetKey) {\n return { error: null, componentStack: null, resetKey: props.resetKey };\n }\n return null;\n }\n componentDidCatch(error: Error, info: React.ErrorInfo) {\n reportAdminError(this.props.telemetry, error, info);\n console.error('[PageErrorBoundary] 捕获到运行时错误:', error, info.componentStack);\n this.setState({ componentStack: info.componentStack ?? null });\n }\n handleRetry = () => {\n // chunk 加载失败时浏览器已缓存 rejected 的 module promise,\n // 仅重置边界状态会立即再次失败,必须整页刷新拉取最新产物。\n if (this.state.error && isChunkLoadError(this.state.error)) {\n globalThis.location.reload();\n return;\n }\n this.setState({ error: null, componentStack: null });\n };\n handleCopy = () => {\n const { error, componentStack } = this.state;\n if (!error)\n return;\n const report = [\n `[ArcBase 页面错误报告]`,\n `时间: ${formatDateTime(new Date())}`,\n `页面: ${globalThis.location.href}`,\n `浏览器: ${navigator.userAgent}`,\n ``,\n `${error.name}: ${error.message}`,\n error.stack ? `\\n堆栈:\\n${error.stack}` : '',\n componentStack ? `\\n组件栈:${componentStack}` : '',\n ].filter(Boolean).join('\\n');\n void copyTextWithToast(report, { success: '错误信息已复制,可粘贴给开发人员排查', error: '复制失败,请手动选择复制' });\n };\n render() {\n if (!this.state.error) {\n return this.props.children;\n }\n const isDev = import.meta.env.DEV;\n const error = this.state.error;\n const chunkFailed = isChunkLoadError(error);\n return (<div style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n // Keep compact errors centered, but align expanded diagnostics to the scroll start.\n justifyContent: 'safe center',\n minHeight: 'min(400px, 100dvh)',\n maxHeight: '100dvh',\n overflowY: 'auto',\n padding: '40px 24px',\n }}>\n <Empty {...emptyIllustration('Failure', 120)} title={chunkFailed ? '页面资源加载失败' : '页面加载出错'} description={chunkFailed\n ? '可能是网络不稳定,或系统刚刚发布了新版本。点击重新加载获取最新页面。'\n : '当前页面遇到了一个意外错误。你可以尝试刷新页面,或返回首页继续操作。'}>\n {isDev && (<details style={{\n width: '100%',\n maxWidth: 640,\n background: 'var(--arc-antd-color-fill-0)',\n border: '1px solid var(--arc-antd-color-border)',\n borderRadius: 'var(--arc-antd-border-radius-medium)',\n padding: '8px 12px',\n fontSize: 12,\n fontFamily: 'monospace',\n marginTop: 16,\n textAlign: 'left',\n }}>\n <summary style={{ cursor: 'pointer', color: 'var(--arc-antd-color-danger)', marginBottom: 8 }}>\n 错误详情(仅开发模式可见)\n </summary>\n <div style={{ color: 'var(--arc-antd-color-danger)', marginBottom: 4 }}>\n {error.name}: {error.message}\n </div>\n {error.stack && (<pre style={{ whiteSpace: 'pre-wrap', wordBreak: 'break-all', margin: 0, color: 'var(--arc-antd-color-text-2)' }}>\n {error.stack}\n </pre>)}\n </details>)}\n <div style={{ display: 'flex', gap: 12, marginTop: 16, justifyContent: 'center' }}>\n <Button icon={<RefreshCw size={14}/>} theme=\"solid\" type=\"primary\" onClick={this.handleRetry}>\n 重新加载\n </Button>\n <Button icon={<Home size={14}/>} theme=\"light\" type=\"primary\" onClick={() => { globalThis.location.href = this.context?.basePath ?? import.meta.env.BASE_URL; }}>\n 返回首页\n </Button>\n <Button icon={<Copy size={14}/>} theme=\"light\" type=\"tertiary\" onClick={this.handleCopy}>\n 复制错误信息\n </Button>\n </div>\n </Empty>\n </div>);\n }\n}\n/**\n * 路由感知版 PageErrorBoundary\n *\n * 路由变更时自动重置错误状态。直接替换 Suspense 外层使用。\n * 注意:本组件是函数组件,内部使用 useLocation hook,因此需要在 BrowserRouter 内部使用。\n */\nexport function RouteErrorBoundary({ children }: {\n readonly children: React.ReactNode;\n}) {\n const { pathname } = useLocation();\n const {telemetry} = useAdminOptions();\n return (<PageErrorBoundary resetKey={pathname} telemetry={telemetry}>\n {children}\n </PageErrorBoundary>);\n}\n","import { App, Button, Form, Input, Modal, Result } from 'antd';\nimport { useAuth } from '@fudanda/react-core/hooks/useAuth';\nimport type { useLockScreen } from '@fudanda/react-core/hooks/useLockScreen';\nimport { usePreferences } from '@fudanda/react-core/hooks/usePreferences';\ntype Props = {\n lock: ReturnType<typeof useLockScreen>;\n mode: 'set' | 'change' | null;\n onClose: () => void;\n};\nexport function LockPanel({ lock, mode, onClose }: Props) {\n const auth = useAuth();\n const { preferences } = usePreferences();\n const { message } = App.useApp();\n if (lock.isLocked)\n return <Result title=\"屏幕已锁定\" subTitle=\"输入锁屏密码继续使用管理台\" extra={<Form style={{ maxWidth: 320, margin: 'auto' }} onFinish={({ password }: {\n password: string;\n }) => {\n if (!lock.unlock(password))\n void message.error('锁屏密码不正确');\n }}>\n <Form.Item name=\"password\" rules={[{ required: true, message: '请输入锁屏密码' }]}><Input.Password autoFocus placeholder=\"锁屏密码\"/></Form.Item>\n <Button type=\"primary\" htmlType=\"submit\">解锁</Button> <Button onClick={() => { lock.clearLockPassword(); void auth.logout().catch(error => { void message.error(error instanceof Error ? error.message : '退出失败,请重试'); }); }}>退出登录</Button>\n </Form>}/>;\n return <Modal title={mode === 'change' ? '修改锁屏密码' : '设置锁屏密码'} open={mode !== null} onCancel={onClose} mask={{ closable: preferences.modalClickMaskToClose }} footer={null} destroyOnHidden>\n <Form key={mode} layout=\"vertical\" onFinish={(values: {\n current?: string;\n password: string;\n }) => {\n if (mode === 'change' && !lock.verifyLockPassword(values.current ?? '')) {\n void message.error('原锁屏密码不正确');\n return;\n }\n lock.setLockPassword(values.password);\n onClose();\n void message.success('锁屏密码已保存');\n }}>\n {mode === 'change' && <Form.Item name=\"current\" label=\"原锁屏密码\" rules={[{ required: true }]}><Input.Password autoComplete=\"off\"/></Form.Item>}\n <Form.Item name=\"password\" label=\"新锁屏密码\" rules={[{ required: true }, { min: 4, message: '至少输入 4 位字符' }]}><Input.Password autoComplete=\"new-password\"/></Form.Item>\n <Form.Item name=\"confirm\" label=\"确认密码\" dependencies={['password']} rules={[{ required: true }, ({ getFieldValue }) => ({ validator: (_, value: string) => value === getFieldValue('password') ? Promise.resolve() : Promise.reject(new Error('两次密码不一致')) })]}><Input.Password autoComplete=\"new-password\"/></Form.Item>\n <Button htmlType=\"submit\" type=\"primary\">保存</Button>\n </Form>\n </Modal>;\n}\n","import type { LucideIcon, LucideProps } from 'lucide-react';\nimport React, { useSyncExternalStore } from 'react';\n/**\n * 按名字渲染图标的平台能力(菜单 / 标签栏 / 面包屑 / 命令面板 / 工作流模板与自定义表单……)。\n *\n * 调用方只使用两个入口:`<DynamicIcon name />`(components/DynamicIcon.tsx,或函数形态 `renderLucideIcon`)与 `IconPicker`,\n * 图标从哪来是本模块内部的「投递策略」:当前为「单个懒加载全量表 + 就绪订阅」——\n * 全表是一个哈希文件、一年缓存;后台入口在检测到登录凭证时立即 `prewarmLucideIcons()`,\n * 与 `/api/auth/me` 并行下载,侧栏首帧通常已有图标;未就绪时组件渲染 null 并在就绪后自动补齐。\n * 将来若改为 sprite / 逐图标导入 / 服务端下发节点,只改本文件,调用点零改动。\n *\n * 页面里 `import { X } from 'lucide-react'` 的静态按需图标不受影响(摇树成小子集)。\n */\ntype Registry = Record<string, LucideIcon>;\nlet registry: Registry | null = null;\nlet allNames: string[] = [];\nlet loadPromise: Promise<void> | null = null;\nconst listeners = new Set<() => void>();\nfunction isReactComponent(val: unknown): boolean {\n if (typeof val === 'function')\n return true;\n if (typeof val === 'object' && val !== null && '$$typeof' in val)\n return true;\n return false;\n}\n/** 触发(幂等)全量图标注册表加载 */\nexport function ensureLucideIcons(): Promise<void> {\n // 刻意从 CJS 构建产物加载(而非裸 'lucide-react'):应用各处的静态按需导入\n // 解析到 ESM 入口并被摇树成小子集;若此处对同一 ESM 模块做命名空间动态导入,\n // 会强制保留全量导出,使首屏静态图中的 lucide chunk 膨胀回 ~600KB。\n // CJS 路径是独立模块实例,全量表只存在于本懒加载 chunk 中。\n // @ts-expect-error CJS 深路径无类型声明,运行时形状与 ESM 入口一致\n loadPromise ??= import('lucide-react/dist/cjs/lucide-react.js').then((mod) => {\n const LucideIcons = ((mod as Record<string, unknown>).default ?? mod) as Record<string, unknown>;\n // lucide-react 图标使用 React.forwardRef 封装,typeof 为 'object' 而非 'function'\n // 过滤规则:大写字母开头、不以 Icon 结尾(避免 ActivityIcon / Activity 重复)\n registry = Object.fromEntries(Object.entries(LucideIcons).filter(([key, val]) => /^[A-Z]/.test(key) &&\n !key.endsWith('Icon') &&\n key !== 'createLucideIcon' &&\n isReactComponent(val))) as Registry;\n allNames = Object.keys(registry).sort((a, b) => a.localeCompare(b));\n listeners.forEach((l) => l());\n });\n return loadPromise;\n}\n/**\n * 预热:在拿到登录凭证、尚未等到用户 / 菜单数据时就开始下载全量表,\n * 让它与鉴权请求并行而不是排在侧栏首次渲染之后。失败静默(渲染路径会再次触发加载)。\n */\nexport function prewarmLucideIcons(): void {\n void ensureLucideIcons().catch(() => { });\n}\nfunction subscribe(cb: () => void): () => void {\n listeners.add(cb);\n return () => listeners.delete(cb);\n}\n/** 注册表是否就绪;自动触发加载,加载完成后触发订阅组件重渲染 */\nexport function useLucideIconsReady(): boolean {\n void ensureLucideIcons();\n return useSyncExternalStore(subscribe, () => registry !== null, () => false);\n}\n/** 全部图标名(IconPicker 用);未就绪时为空数组,就绪后自动重渲染 */\nexport function useAllIconNames(): string[] {\n useLucideIconsReady();\n return allNames;\n}\n/** 渲染指定名称的 lucide 图标;注册表未就绪(自动触发加载)或找不到时返回 null */\nexport function renderLucideIcon(name: string, size = 16, props: Omit<LucideProps, 'size'> = {}): React.ReactElement | null {\n if (!registry) {\n void ensureLucideIcons();\n return null;\n }\n const Icon = registry[name];\n if (!Icon)\n return null;\n return React.createElement(Icon, { strokeWidth: 1.5, ...props, size });\n}\n","import type React from 'react';\nimport type { LucideProps } from 'lucide-react';\nimport { renderLucideIcon, useLucideIconsReady } from \"@/utils/icons\";\nexport interface DynamicIconProps extends Omit<LucideProps, 'name' | 'ref'> {\n readonly name: string | null | undefined;\n readonly size?: number;\n /** 注册表未就绪或名字无效时的占位(默认不渲染) */\n readonly fallback?: React.ReactNode;\n}\n/**\n * 按名字渲染 lucide 图标(图标名来自数据:菜单、工作流模板、表单配置……)。\n * 自动订阅注册表就绪,就绪后自行补齐,调用方无需关心加载状态;投递策略见 utils/icons.tsx。\n */\nexport function DynamicIcon({ name, size = 16, fallback = null, ...iconProps }: DynamicIconProps): React.ReactElement | null {\n useLucideIconsReady();\n if (!name)\n return fallback as React.ReactElement | null;\n return renderLucideIcon(name, size, iconProps) ?? (fallback as React.ReactElement | null);\n}\n","import dayjs from 'dayjs';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport 'dayjs/locale/zh-cn';\nimport 'dayjs/locale/en';\ndayjs.extend(updateLocale);\nexport function applyWeekStart(pref: unknown): Promise<void> { const weekStart = pref === 'sunday' ? 0 : 1; dayjs.updateLocale('zh-cn', { weekStart }); dayjs.updateLocale('en', { weekStart }); return Promise.resolve(); }\n","import { PreferencesProvider as CoreProvider } from '@fudanda/react-core/hooks/PreferencesProvider';\nimport { applyWeekStart } from '@/lib/week-start';\nimport type { ReactNode } from 'react';\nexport function PreferencesProvider({ children }: {\n children: ReactNode;\n}) { return <CoreProvider onWeekStartChange={applyWeekStart}>{children}</CoreProvider>; }\n","import { createContext, useContext } from 'react';\nimport type { ThemeMode } from \"@/hooks/useTheme\";\nexport interface ThemeControllerValue {\n mode: ThemeMode;\n themeColor: string;\n isDark: boolean;\n setThemeMode: (mode: ThemeMode) => void;\n setThemeColor: (color: string) => void;\n cycleTheme: () => void;\n resetTheme: () => void;\n}\nexport const ThemeControllerContext = createContext<ThemeControllerValue | null>(null);\nexport function useThemeController(): ThemeControllerValue {\n const context = useContext(ThemeControllerContext);\n if (!context) {\n throw new Error('useThemeController must be used within ThemeProvider');\n }\n return context;\n}\n","import { App, ConfigProvider, theme } from 'antd';\nimport zhCN from 'antd/locale/zh_CN';\nimport enUS from 'antd/locale/en_US';\nimport { createContext, useContext, useEffect, useMemo, useState, type ReactNode } from 'react';\nimport { useOptionalPreferences, isScheduledDarkNow, msUntilScheduleBoundary } from '@fudanda/react-core/hooks/usePreferences';\nimport { usePrefersDark } from '@fudanda/react-core/hooks/useMediaQuery';\nimport { readCachedPreferences } from '@fudanda/react-core/lib/preference-cache';\nimport { getThemeColorVars } from '@fudanda/react-core/lib/theme-color';\nimport { useAdminOptions } from '@fudanda/react-core/admin/runtime';\nimport { FeedbackBridge } from '../ui';\nimport { ThemeControllerContext } from '../providers/theme-controller';\nconst DarkContext = createContext(false);\nexport const useAntDark = () => useContext(DarkContext);\nfunction TokenBridge({ children, dark }: {\n children: ReactNode;\n dark: boolean;\n}) {\n const { token } = theme.useToken();\n useEffect(() => {\n document.body.setAttribute('theme-mode', dark ? 'dark' : 'light');\n document.body.style.colorScheme = dark ? 'dark' : 'light';\n document.body.style.fontFamily = token.fontFamily;\n const values = {\n 'font-family': token.fontFamily ?? '-apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Microsoft YaHei\", sans-serif',\n 'color-primary': token.colorPrimary, 'color-primary-hover': token.colorPrimaryHover, 'color-primary-active': token.colorPrimaryActive,\n 'color-primary-light-default': token.colorPrimaryBg, 'color-primary-light-hover': token.colorPrimaryBgHover, 'color-primary-light-active': token.colorPrimaryBorder,\n 'color-bg-0': token.colorBgLayout, 'color-bg-1': token.colorBgContainer, 'color-bg-2': token.colorBgElevated, 'color-bg-3': token.colorBgSpotlight,\n 'color-text-0': token.colorText, 'color-text-1': token.colorTextSecondary, 'color-text-2': token.colorTextTertiary, 'color-text-3': token.colorTextQuaternary,\n 'color-border': token.colorBorder, 'color-fill-0': token.colorFillTertiary, 'color-fill-1': token.colorFillSecondary, 'color-fill-2': token.colorFill,\n 'color-danger': token.colorError, 'color-success': token.colorSuccess, 'color-warning': token.colorWarning, 'color-info': token.colorInfo,\n 'color-danger-light-default': token.colorErrorBg, 'color-success-light-default': token.colorSuccessBg, 'color-warning-light-default': token.colorWarningBg,\n 'border-radius-small': token.borderRadiusSM + 'px', 'border-radius-medium': token.borderRadius + 'px', 'border-radius-large': token.borderRadiusLG + 'px',\n };\n for (const [name, value] of Object.entries(values))\n document.body.style.setProperty('--arc-antd-' + name, value);\n for (const [name, value] of Object.entries({ primary: token.colorPrimary, success: token.colorSuccess, warning: token.colorWarning, danger: token.colorError }))\n document.body.style.setProperty('--arcbase-avatar-' + name, value);\n }, [token, dark]);\n return <>{children}</>;\n}\nexport function AntTheme({ children }: {\n children: ReactNode;\n}) {\n const optional = useOptionalPreferences();\n const [cached] = useState(readCachedPreferences);\n const { locale, theme: hostTheme } = useAdminOptions();\n const preferences = useMemo(() => optional?.preferences ?? { ...cached, colorMode: hostTheme ?? cached.colorMode }, [optional?.preferences, cached, hostTheme]);\n const systemDark = usePrefersDark();\n const [now, setNow] = useState(() => new Date());\n useEffect(() => { setNow(new Date()); }, [preferences.scheduledDarkMode, preferences.scheduledDarkStart, preferences.scheduledDarkEnd]);\n useEffect(() => {\n const refresh = () => {\n if (document.visibilityState === 'visible')\n setNow(new Date());\n };\n document.addEventListener('visibilitychange', refresh);\n window.addEventListener('focus', refresh);\n return () => { document.removeEventListener('visibilitychange', refresh); window.removeEventListener('focus', refresh); };\n }, []);\n useEffect(() => {\n const wait = msUntilScheduleBoundary(preferences, now);\n if (wait === null)\n return;\n const timer = setTimeout(() => setNow(new Date()), wait + 50);\n return () => clearTimeout(timer);\n }, [preferences, now]);\n const dark = preferences.colorMode === 'dark' || preferences.colorMode === 'system' && systemDark || isScheduledDarkNow(preferences, now);\n const color = getThemeColorVars(preferences.themeColor, dark);\n const radius = { none: 0, small: 4, medium: 6, large: 12 }[preferences.borderRadius];\n const font = preferences.fontFamily === 'mono' ? '\"Cascadia Code\", Consolas, monospace' : preferences.fontFamily === 'inter' ? 'Inter, \"Microsoft YaHei\", sans-serif' : preferences.fontFamily === 'noto-sans-sc' ? '\"Noto Sans SC\", \"Source Han Sans SC\", \"Microsoft YaHei\", sans-serif' : theme.defaultSeed.fontFamily;\n useEffect(() => {\n document.body.style.setProperty('--arcbase-ui-scale', String(preferences.uiScale / 100));\n document.body.style.setProperty('zoom', String(preferences.uiScale / 100));\n document.body.dataset.reduceMotion = String(preferences.reduceMotion);\n document.body.style.filter = preferences.grayscale ? 'grayscale(1)' : preferences.colorBlind ? 'saturate(.75) contrast(1.1)' : '';\n }, [preferences.uiScale, preferences.reduceMotion, preferences.grayscale, preferences.colorBlind]);\n return <DarkContext.Provider value={dark}><ConfigProvider locale={locale === 'en-US' ? enUS : zhCN} theme={{ algorithm: dark ? theme.darkAlgorithm : theme.defaultAlgorithm,\n // Keep the motion provider tree stable: changing token.motion remounts Ant's descendants.\n token: { colorPrimary: color.primary, borderRadius: radius, fontFamily: font,\n ...(preferences.reduceMotion ? { motionDurationFast: '0s', motionDurationMid: '0s', motionDurationSlow: '0s' } : {}) } }}>\n <App><FeedbackBridge /><ThemeControllerContext.Provider value={{ isDark: dark, mode: preferences.colorMode, themeColor: preferences.themeColor,\n setThemeMode: colorMode => optional?.setPreferences({ colorMode }), setThemeColor: themeColor => optional?.setPreferences({ themeColor }),\n cycleTheme: () => optional?.setPreferences({ colorMode: preferences.colorMode === 'light' ? 'dark' : preferences.colorMode === 'dark' ? 'system' : 'light' }),\n resetTheme: () => optional?.resetPreference(['colorMode', 'themeColor']) }}><TokenBridge dark={dark}>{children}</TokenBridge></ThemeControllerContext.Provider></App>\n </ConfigProvider></DarkContext.Provider>;\n}\n","import { useCallback, useState } from 'react';\nimport { Toast } from '@/ui';\nimport { copyTextWithToast } from '@/utils/clipboard';\nimport { downloadBlob } from '@fudanda/react-core/utils/download';\nimport { sanitizeImportedPreferences, usePreferences } from '@fudanda/react-core/hooks/usePreferences';\n// 偏好设置面板:搜索状态与复制 / 导入 / 导出偏好\nexport function usePreferencesPanel() {\n const { overrides, setPreferences } = usePreferences();\n const [prefsVisible, setPrefsVisible] = useState(false);\n const [prefsSearch, setPrefsSearch] = useState('');\n const handleCopyPreferences = useCallback(() => {\n void copyTextWithToast(JSON.stringify({ overrides }, null, 2), { success: '偏好设置已复制到剪贴板', error: '复制失败,请重试' });\n }, [overrides]);\n const handleExportPreferences = useCallback(() => {\n downloadBlob(new Blob([JSON.stringify({ overrides }, null, 2)], { type: 'application/json' }), 'arcbase-preferences.json');\n Toast.success('偏好配置已导出为文件');\n }, [overrides]);\n // ─── 导入偏好 ─────────────────────────────────────────────────────────────\n const [importPrefsVisible, setImportPrefsVisible] = useState(false);\n const [importPrefsText, setImportPrefsText] = useState('');\n const handleImportPreferences = useCallback(() => {\n let parsed: unknown;\n try {\n parsed = JSON.parse(importPrefsText);\n }\n catch {\n Toast.error('JSON 解析失败,请检查格式');\n return;\n }\n const sanitized = sanitizeImportedPreferences(parsed && typeof parsed === 'object' && 'overrides' in parsed ? parsed.overrides : null);\n if (!sanitized) {\n Toast.error('未识别到有效的偏好设置字段');\n return;\n }\n const result = setPreferences(sanitized);\n setImportPrefsVisible(false);\n setImportPrefsText('');\n if (result.applied > 0)\n Toast.success(`已导入 ${result.applied} 项设置${result.skipped ? `,跳过 ${result.skipped} 项系统管理设置` : ''}`);\n else\n Toast.info('所选设置由系统管理,未导入任何修改');\n }, [importPrefsText, setPreferences]);\n return {\n prefsVisible, setPrefsVisible,\n prefsSearch, setPrefsSearch,\n handleCopyPreferences, handleExportPreferences,\n importPrefsVisible, setImportPrefsVisible,\n importPrefsText, setImportPrefsText,\n handleImportPreferences,\n };\n}\n","import { lazy, Suspense, useState } from 'react';\nimport { Button, ConfigProvider, Drawer, Input, Modal, Spin, Tooltip, theme } from 'antd';\nimport { Copy, Download, RotateCcw, Search, Settings, Upload } from 'lucide-react';\nimport { usePreferences } from '@fudanda/react-core/hooks/usePreferences';\nimport type { useLockScreen } from '@fudanda/react-core/hooks/useLockScreen';\nimport { useAntDark } from '@/admin/theme';\nimport { ModalFooter } from '@/components/ModalFooter';\nimport { confirmDanger } from '@/utils/confirm';\nimport { LockPanel } from './LockPanel';\nimport { usePreferencesPanel } from './usePreferencesPanel';\nimport './preferences-panel.css';\nconst PreferencesSheetBody = lazy(() => import('./PreferencesSheetBody'));\nexport default function PreferencesPanel({ homePaths, lock }: {\n homePaths: {\n value: string;\n label: string;\n }[];\n lock: ReturnType<typeof useLockScreen>;\n}) {\n const { preferences, setPreferences, resetPreferences, hasEditablePreferences } = usePreferences();\n const panel = usePreferencesPanel();\n const isDark = useAntDark();\n const [lockMode, setLockMode] = useState<'set' | 'change' | null>(null);\n const closeImport = () => { panel.setImportPrefsVisible(false); panel.setImportPrefsText(''); };\n return <>\n <Tooltip title=\"偏好设置\"><Button type=\"text\" aria-label=\"偏好设置\" icon={<Settings size={17}/>} onClick={() => panel.setPrefsVisible(true)}/></Tooltip>\n <ConfigProvider theme={{ algorithm: isDark ? theme.darkAlgorithm : theme.defaultAlgorithm }}>\n <Drawer title={<div className=\"arc-preferences__title\">偏好设置<span>打造适合你的工作界面</span></div>} open={panel.prefsVisible} onClose={() => panel.setPrefsVisible(false)} size=\"min(680px, 100vw)\" destroyOnHidden className=\"arc-preferences\" styles={{ body: { padding: 0, display: 'flex', flexDirection: 'column', overflow: 'hidden' } }} footer={<div className=\"arc-preferences__footer\">\n <p>修改后自动保存;单项可通过「跟随系统」恢复默认。</p>\n <div className=\"arc-preferences__actions\">\n <Button icon={<Copy size={14}/>} onClick={panel.handleCopyPreferences}>复制</Button>\n <Button icon={<Upload size={14}/>} disabled={!hasEditablePreferences} onClick={() => panel.setImportPrefsVisible(true)}>导入</Button>\n <Button icon={<Download size={14}/>} onClick={panel.handleExportPreferences}>导出</Button>\n <Button danger icon={<RotateCcw size={14}/>} disabled={!hasEditablePreferences} onClick={() => confirmDanger({\n title: '恢复系统默认', content: '清除个人偏好覆盖,重新跟随系统当前默认值。确定恢复吗?',\n okText: '重置', cancelText: '取消', onOk: resetPreferences,\n })}>恢复默认</Button>\n </div>\n </div>}>\n <div className=\"arc-preferences__search\"><Input allowClear prefix={<Search size={16}/>} placeholder=\"搜索全部设置,如主题、表格、锁屏\" aria-label=\"搜索偏好设置\" value={panel.prefsSearch} onChange={event => panel.setPrefsSearch(event.target.value)}/></div>\n <Suspense fallback={<div className=\"arc-preferences__loading\"><Spin tip=\"正在加载设置\"/></div>}>\n <PreferencesSheetBody {...panel} preferences={preferences} setPreferences={setPreferences} navLayout={preferences.navLayout} mode={preferences.colorMode} handleThemeModeChange={colorMode => setPreferences({ colorMode })} isDark={isDark} themeColor={preferences.themeColor} setThemeColor={themeColor => setPreferences({ themeColor })} quickChatEnabled={false} homePathOptions={homePaths} autoLockMinutes={lock.autoLockMinutes} setAutoLockMinutes={lock.setAutoLockMinutes} hasPassword={lock.hasPassword} clearLockPassword={lock.clearLockPassword} openLockPasswordModal={setLockMode} onClearSearch={() => panel.setPrefsSearch('')}/>\n </Suspense>\n </Drawer>\n <LockPanel lock={lock} mode={lockMode} onClose={() => setLockMode(null)}/>\n <Modal title=\"导入偏好设置\" open={panel.importPrefsVisible} onCancel={closeImport} mask={{closable: preferences.modalClickMaskToClose}} destroyOnHidden footer={<ModalFooter onCancel={closeImport} onOk={panel.handleImportPreferences} okText=\"导入\"/>}>\n <p>粘贴导出的配置。仅更新有效且允许个人调整的字段。</p>\n <Input.TextArea rows={10} aria-label=\"偏好配置 JSON\" value={panel.importPrefsText} onChange={event => panel.setImportPrefsText(event.target.value)} placeholder='{\"overrides\":{}}'/>\n </Modal>\n </ConfigProvider>\n </>;\n}\n","import { addTransitionType, startTransition } from 'react';\nimport type { NavigateFunction } from 'react-router-dom';\n/** 路由 Transition 类型:目标位于当前页签左侧(后退方向),slide 类路由动画据此反向播放 */\nexport const ROUTE_BACK_TRANSITION_TYPE = 'route-back';\n/**\n * 带方向标记的导航。\n *\n * react-router 会把导航 setState 包在自己的 startTransition 里;React 让嵌套 Transition 继承外层的\n * types,所以在这里的 startTransition 作用域内先 addTransitionType 再 navigate,\n * `<ViewTransition enter / exit={{ [ROUTE_BACK_TRANSITION_TYPE]: …, default: … }}>` 就能按方向选 class。\n * 非后退方向不附加类型,走 default class。\n */\nexport function navigateWithDirection(navigate: NavigateFunction, to: string, backward: boolean) {\n startTransition(() => {\n if (backward)\n addTransitionType(ROUTE_BACK_TRANSITION_TYPE);\n navigate(to);\n });\n}\n","import { ViewTransition } from 'react';\nimport type { ReactNode, ViewTransitionClass } from 'react';\nimport type { RouteAnimation } from '@fudanda/react-core/hooks/usePreferences';\nimport { ROUTE_BACK_TRANSITION_TYPE } from './route-transition-types';\ntype AnimatedRouteAnimation = Exclude<RouteAnimation, 'none'>;\n/**\n * 偏好值 → View Transition class;对应动画定义在 AdminLayout.css 的 `::view-transition-*(.route-vt-*)`。\n * 「左滑」按 Transition 类型区分方向:页签栏上切到左侧页签(ROUTE_BACK_TRANSITION_TYPE)时反向滑动。\n */\nconst ENTER_CLASS: Record<AnimatedRouteAnimation, ViewTransitionClass> = {\n fade: 'route-vt-fade-in',\n 'slide-up': 'route-vt-slide-up-in',\n 'slide-left': { [ROUTE_BACK_TRANSITION_TYPE]: 'route-vt-slide-right-in', default: 'route-vt-slide-left-in' },\n};\nconst EXIT_CLASS: Record<AnimatedRouteAnimation, ViewTransitionClass> = {\n fade: 'route-vt-fade-out',\n 'slide-up': 'route-vt-slide-up-out',\n 'slide-left': { [ROUTE_BACK_TRANSITION_TYPE]: 'route-vt-slide-right-out', default: 'route-vt-slide-left-out' },\n};\ntype Props = Readonly<{\n /** 路由切换动画偏好;`'none'` / 未传时完全关闭(含 reduceMotion 场景) */\n animation?: RouteAnimation;\n children: ReactNode;\n}>;\n/**\n * 路由级页面过渡边界:把 `routeAnimation` 偏好映射为 React `<ViewTransition>` 的 enter / exit class。\n *\n * - 只在 Transition 更新中激活:react-router 导航、`<Activity>` 显隐切换、`startTransition` 包裹的页签刷新\n * - `default=\"none\"`:页面内部的 DOM 变化(搜索参数变更、Suspense 就绪等)不触发整页动画\n * - 必须直接包裹页面容器,边界之前不能出现其他 DOM 节点,否则不会激活\n * - 浏览器不支持 View Transitions(含 jsdom)时 React 直接跳过动画,功能不受影响\n */\nexport default function RouteViewTransition({ animation, children }: Props) {\n if (!animation || animation === 'none') {\n return <ViewTransition default=\"none\">{children}</ViewTransition>;\n }\n return (<ViewTransition default=\"none\" enter={ENTER_CLASS[animation]} exit={EXIT_CLASS[animation]}>\n {children}\n </ViewTransition>);\n}\n","import { Activity, useLayoutEffect, useRef } from 'react';\nimport type { ReactElement } from 'react';\nimport { useLocation, useOutlet } from 'react-router-dom';\nimport type { RouteAnimation } from '@fudanda/react-core/hooks/usePreferences';\nimport RouteViewTransition from './RouteViewTransition';\nconst MAX_CACHE = 10;\ntype CacheEntry = {\n element: ReactElement | null;\n /** 页签刷新版本,变化时强制重建子树 */\n version: number;\n /** 离开时的滚动位置(.admin-content 容器为共享滚动容器,需按页保存/恢复) */\n scrollTop: number;\n};\ntype Props = Readonly<{\n /** 允许缓存的路由路径白名单(来自菜单 keepAlive 配置) */\n keepAlivePaths: ReadonlySet<string>;\n /** 当前打开的页签 key 集合;缓存生命周期与页签一致,关闭页签即释放 */\n openPaths: ReadonlySet<string>;\n /** 页签「刷新」版本号,变化时强制重建对应页面 */\n refreshVersion: Record<string, number>;\n /** 共享滚动容器选择器 */\n scrollContainerSelector?: string;\n /** 路由切换动画偏好(缓存页显隐与非缓存页进出统一由 RouteViewTransition 过渡) */\n animation?: RouteAnimation;\n}>;\n/**\n * 基于 React 19 `<Activity>` 的路由级页面缓存(对标 Vue keep-alive)。\n *\n * - 白名单制:仅菜单配置 keepAlive 的页面参与缓存\n * - hidden 时 React 保留 state/DOM(display:none)并销毁 Effects(轮询/订阅自动暂停),\n * visible 时恢复状态并重建 Effects\n * - 缓存生命周期与页签一致:关闭页签即释放;LRU 上限 10 页\n * - 页签「刷新」通过 key 变化强制重建\n * - 共享滚动容器(.admin-content)的滚动位置按页保存/恢复\n * - 页面切换动画由 `<ViewTransition>` 承担:缓存页的显隐与非缓存页的挂载/卸载都会过渡\n */\nexport default function KeepAliveOutlet({ keepAlivePaths, openPaths, refreshVersion, scrollContainerSelector = '.admin-content', animation, }: Props) {\n const outlet = useOutlet();\n const { pathname } = useLocation();\n const cacheRef = useRef(new Map<string, CacheEntry>());\n const prevPathRef = useRef<string | null>(null);\n const cache = cacheRef.current;\n const isCacheable = keepAlivePaths.has(pathname);\n const currentVersion = refreshVersion[pathname] ?? 0;\n // ── 渲染期维护缓存(幂等,StrictMode 安全)──────────────────────────────\n if (isCacheable) {\n const existing = cache.get(pathname);\n if (!existing || existing.version !== currentVersion) {\n // 新入缓存 / 刷新重建:记录当前 outlet 与版本\n cache.delete(pathname);\n cache.set(pathname, { element: outlet, version: currentVersion, scrollTop: existing?.scrollTop ?? 0 });\n }\n else {\n // Refresh the active route element when permissions, params or loader state change.\n // React keeps the page state because the Activity key remains stable.\n existing.element = outlet;\n // LRU:访问移到末尾\n cache.delete(pathname);\n cache.set(pathname, existing);\n }\n }\n // 页签已关闭的缓存立即释放(缓存生命周期 = 页签生命周期)\n for (const key of [...cache.keys()]) {\n if (!keepAlivePaths.has(key) || key !== pathname && !openPaths.has(key))\n cache.delete(key);\n }\n // LRU 上限:淘汰最久未访问(跳过当前页)\n while (cache.size > MAX_CACHE) {\n const oldest = [...cache.keys()].find((k) => k !== pathname);\n if (!oldest)\n break;\n cache.delete(oldest);\n }\n // ── 共享滚动容器:离开时保存、切回时恢复 ─────────────────────────────────\n // 用 useLayoutEffect:ViewTransition 在布局副作用之后立即捕获新页面快照,\n // 若放在 useEffect 里恢复滚动,快照与最终状态不一致,动画结束时会跳一下\n useLayoutEffect(() => {\n const container = document.querySelector<HTMLElement>(scrollContainerSelector);\n const prev = prevPathRef.current;\n if (container && prev && prev !== pathname) {\n const prevEntry = cache.get(prev);\n if (prevEntry)\n prevEntry.scrollTop = container.scrollTop;\n }\n if (container) {\n container.scrollTop = cache.get(pathname)?.scrollTop ?? 0;\n }\n prevPathRef.current = pathname;\n }, [pathname, scrollContainerSelector, cache]);\n return (<>\n {[...cache.entries()].map(([path, entry]) => (<Activity key={`${path}:${entry.version}`} mode={path === pathname ? 'visible' : 'hidden'}>\n <RouteViewTransition animation={animation}>\n <div style={{ height: '100%' }}>{entry.element}</div>\n </RouteViewTransition>\n </Activity>))}\n {!isCacheable && (<RouteViewTransition key={`${pathname}:${currentVersion}`} animation={animation}>\n <div style={{ height: '100%' }}>{outlet}</div>\n </RouteViewTransition>)}\n </>);\n}\n","import { lazy, Suspense, useState, useEffect, useRef } from 'react';\nimport { Search } from 'lucide-react';\nimport { useOptionalPreferences } from \"@fudanda/react-core/hooks/usePreferences\";\nimport \"@/components/MenuSearchInput.css\";\nconst MenuCommandPalette = lazy(() => import(\"@/components/MenuCommandPalette\"));\nexport interface FlatMenuItem {\n id: number;\n title: string;\n path: string;\n icon?: string;\n breadcrumb: string[];\n}\ninterface MenuSearchInputProps {\n readonly menus: FlatMenuItem[];\n readonly recentMenus: FlatMenuItem[];\n readonly onClearRecents: () => void;\n readonly onRemoveRecent: (menuId: number) => void;\n}\nexport default function MenuSearchInput({ menus, recentMenus, onClearRecents, onRemoveRecent }: MenuSearchInputProps) {\n const [open, setOpen] = useState(false);\n const [openedOnce, setOpenedOnce] = useState(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const shortcutsEnabled = useOptionalPreferences()?.preferences.enableShortcuts ?? true;\n // The trigger owns shortcuts so the search runtime can stay unloaded until first use.\n useEffect(() => {\n const handler = () => { setOpenedOnce(true); setOpen(true); };\n const keyboard = (event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && event.key === 'k' && shortcutsEnabled) {\n event.preventDefault();\n setOpenedOnce(true);\n setOpen((current) => !current);\n }\n if (event.key === 'Escape')\n setOpen(false);\n };\n globalThis.addEventListener('open-menu-palette', handler);\n globalThis.addEventListener('keydown', keyboard);\n return () => {\n globalThis.removeEventListener('open-menu-palette', handler);\n globalThis.removeEventListener('keydown', keyboard);\n };\n }, [shortcutsEnabled]);\n const handleClose = () => {\n setOpen(false);\n // 关闭弹窗后清理当前焦点,避免触发器在跳转后仍显示 focus-visible 状态。\n setTimeout(() => {\n const activeElement = document.activeElement;\n if (activeElement instanceof HTMLElement)\n activeElement.blur();\n buttonRef.current?.blur();\n }, 0);\n };\n useEffect(() => {\n if (open)\n return;\n // 处理路由跳转或 Modal 外部关闭导致未经过 handleClose 的情况。\n const timer = setTimeout(() => {\n const activeElement = document.activeElement;\n if (activeElement instanceof HTMLElement)\n activeElement.blur();\n buttonRef.current?.blur();\n }, 0);\n return () => clearTimeout(timer);\n }, [open]);\n return (<>\n <button ref={buttonRef} type=\"button\" className=\"menu-search-trigger\" onClick={() => { setOpenedOnce(true); setOpen(true); }} title=\"全局搜索 (Ctrl+K)\" aria-label=\"全局搜索\" aria-expanded={open}>\n <span className=\"menu-search-trigger__icon\">\n <Search size={16} strokeWidth={1.8}/>\n </span>\n <span className=\"menu-search-trigger__label\">全局搜索</span>\n <kbd className=\"menu-search-trigger__kbd\">Ctrl K</kbd>\n </button>\n {openedOnce && <Suspense fallback={null}><MenuCommandPalette menus={menus} recentMenus={recentMenus} onClearRecents={onClearRecents} onRemoveRecent={onRemoveRecent} open={open} onClose={handleClose}/></Suspense>}\n </>);\n}\n","import { Breadcrumb, Button, Space } from 'antd';\nimport { Home, Star } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport type { Menu } from '@fudanda/shared/identity';\nimport { usePreferences } from '@fudanda/react-core/hooks/usePreferences';\nimport { DynamicIcon } from './DynamicIcon';\nfunction visible(items: Menu[]) { return items.filter(item => item.type !== 'button' && item.visible !== false && item.status === 'enabled'); }\nfunction firstPath(menu: Menu): string | undefined { return menu.path || visible(menu.children ?? []).map(firstPath).find(Boolean); }\nfunction chain(items: Menu[], path: string): Menu[] {\n for (const item of visible(items)) {\n if (item.path === path)\n return [item];\n const child = chain(item.children ?? [], path);\n if (child.length)\n return [item, ...child];\n }\n return [];\n}\nexport function NavigationBreadcrumb({ menus, path, title, isFavorite, toggleFavorite }: {\n menus: Menu[];\n path: string;\n title: string;\n isFavorite: (id: number) => boolean;\n toggleFavorite: (id: number) => void;\n}) {\n const { preferences } = usePreferences(), navigate = useNavigate();\n const matched = chain(menus, path), current = matched.at(-1);\n const home = { title: <Space size={4}>{preferences.breadcrumbIcon && <Home size={13}/>}首页</Space>, onClick: preferences.breadcrumbClickable ? () => navigate('/') : undefined };\n const items = matched.map((menu, index) => ({ title: <Space size={4}>{preferences.breadcrumbIcon && menu.icon && <DynamicIcon name={menu.icon}/>} {menu.title}</Space>,\n onClick: index < matched.length - 1 && preferences.breadcrumbClickable && firstPath(menu) ? () => navigate(firstPath(menu)!) : undefined,\n ...(preferences.breadcrumbSubMenu && index < matched.length - 1 ? { menu: { items: visible(menu.children ?? []).map(child => ({ key: String(child.id), label: child.title, onClick: () => {\n const target = firstPath(child);\n if (target)\n navigate(target);\n } })) } } : {}) }));\n return <Space size={6} style={{ marginBottom: 12 }}>\n <Breadcrumb items={[...(preferences.breadcrumbShowHome && path !== '/' ? [home] : []), ...(items.length ? items : [{ title }])]}/>\n {preferences.showFavorites && current && <Button size=\"small\" type=\"text\" aria-label={isFavorite(current.id) ? '取消收藏此页' : '收藏此页'} onClick={() => toggleFavorite(current.id)} icon={<Star size={14} fill={isFavorite(current.id) ? 'currentColor' : 'none'} style={{ color: isFavorite(current.id) ? 'var(--arc-antd-color-warning)' : undefined }}/>}/>}\n </Space>;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nexport function NavigationProgress() {\n const { pathname } = useLocation(), previous = useRef(pathname);\n const [progress, setProgress] = useState(0);\n useEffect(() => {\n if (previous.current === pathname)\n return;\n previous.current = pathname;\n setProgress(20);\n const interval = setInterval(() => setProgress(value => Math.min(90, value + 15)), 100);\n const finish = setTimeout(() => { clearInterval(interval); setProgress(100); }, 400);\n const hide = setTimeout(() => setProgress(0), 700);\n return () => { clearInterval(interval); clearTimeout(finish); clearTimeout(hide); };\n }, [pathname]);\n return progress > 0 ? <div aria-label=\"页面切换进度\" role=\"progressbar\" aria-valuemin={0} aria-valuemax={100} aria-valuenow={progress} style={{ position: 'fixed', inset: '0 auto auto 0', height: 3, width: progress + '%', background: 'var(--arc-antd-color-primary)', zIndex: 2000, transition: 'width .2s, opacity .3s', opacity: progress === 100 ? 0 : 1 }}/> : null;\n}\n","import { Button, Dropdown } from 'antd';\nimport { Star } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport type { Menu } from '@fudanda/shared/identity';\nimport type { useFavoriteMenus } from '@fudanda/react-core/hooks/useFavoriteMenus';\nexport function FavoriteMenus({ menus, current, favorites }: {\n menus: Array<Pick<Menu, 'id' | 'title' | 'path'>>;\n current?: Menu;\n favorites: ReturnType<typeof useFavoriteMenus>;\n}) {\n const navigate = useNavigate();\n const move = (id: number, delta: number) => {\n const ids = [...favorites.favorites], index = ids.indexOf(id), target = index + delta;\n if (index < 0 || target < 0 || target >= ids.length)\n return;\n [ids[index], ids[target]] = [ids[target], ids[index]];\n favorites.reorder(ids);\n };\n const items = favorites.favorites.flatMap((id, index) => {\n const menu = menus.find(item => item.id === id);\n return menu ? [{ key: String(id), label: menu.title, children: [\n { key: id + '-open', label: '打开页面', onClick: () => menu.path && navigate(menu.path) },\n { key: id + '-up', label: '上移', disabled: index === 0, onClick: () => move(id, -1) },\n { key: id + '-down', label: '下移', disabled: index === favorites.favorites.length - 1, onClick: () => move(id, 1) },\n { key: id + '-remove', label: '取消收藏', onClick: () => favorites.toggle(id) },\n ] }] : [];\n });\n return <Dropdown menu={{ items: [...items, ...(current ? [{ key: 'current', label: favorites.isFavorite(current.id) ? '取消收藏此页' : '收藏此页', onClick: () => favorites.toggle(current.id) }] : [])] }}>\n <Button aria-label=\"收藏菜单\" icon={<Star size={16}/>}/>\n </Dropdown>;\n}\n","/**\n * ArcBase 品牌 logo(拱形 A 与底座)的几何与配色比例——唯一来源。\n *\n * - 页面内:`components/AppLogo.tsx` 用 `logoStopCssColor()` 生成 `color-mix(var(--arc-antd-color-primary))`,\n * 颜色跟随所在区域的主题色(含分区深色);\n * - 标签页:favicon 读不到页面 CSS 变量,`applyThemeFavicon()` 用同一比例在 JS 侧算出实色,\n * 以 data URL 写回 `<link rel=\"icon\">`;\n * - 静态兜底:`public/favicon.svg` 与 `icons/*.png` 为默认飞书蓝,由 `scripts/gen-icons.mjs` 生成。\n */\nexport const LOGO_VIEW_BOX = '0 0 64 64';\nexport const LOGO_STROKE_WIDTH = 2.5;\n/** 一个渐变端点:主色占比(%)+ 与之混合的黑 / 白 */\nexport type LogoMixStop = readonly [\n primaryPercent: number,\n mixWith: '#fff' | '#000'\n];\nexport interface LogoFace {\n readonly key: 'top' | 'band' | 'base';\n readonly d: string;\n readonly axis: 'horizontal' | 'vertical';\n readonly stops: readonly [\n LogoMixStop,\n LogoMixStop\n ];\n}\n/** 拱形两侧与底座,保留主题主色派生的三块渐变。 */\nexport const LOGO_FACES: readonly LogoFace[] = [\n { key: 'top', d: 'M8 46 L8 29 C8 15 18 6 32 6 L32 18 C25 18 20 23 20 30 L20 46Z', axis: 'horizontal', stops: [[52, '#fff'], [70, '#fff']] },\n { key: 'band', d: 'M32 6 C46 6 56 15 56 29 L56 46 L44 46 L44 30 C44 23 39 18 32 18Z', axis: 'vertical', stops: [[92, '#000'], [88, '#fff']] },\n { key: 'base', d: 'M8 46 L56 46 L56 57 L8 57Z M25 32 L39 32 L39 39 L25 39Z', axis: 'horizontal', stops: [[80, '#000'], [66, '#000']] },\n];\nexport function logoGradientAxis(axis: LogoFace['axis']): {\n x1: string;\n y1: string;\n x2: string;\n y2: string;\n} {\n return axis === 'vertical'\n ? { x1: '0', y1: '0', x2: '0', y2: '1' }\n : { x1: '0', y1: '0', x2: '1', y2: '0' };\n}\n/** 页面内用:交给 CSS 按当前 --arc-antd-color-primary 混色 */\nexport function logoStopCssColor([percent, mixWith]: LogoMixStop): string {\n return `color-mix(in srgb, var(--arc-antd-color-primary) ${percent}%, ${mixWith})`;\n}\nfunction parseHex(hex: string): [\n number,\n number,\n number\n] | null {\n const m = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex.trim());\n if (!m)\n return null;\n const s = m[1].length === 3 ? [...m[1]].map((c) => c + c).join('') : m[1];\n return [0, 2, 4].map((i) => Number.parseInt(s.slice(i, i + 2), 16)) as [\n number,\n number,\n number\n ];\n}\n/** 与 CSS `color-mix(in srgb, primary p%, other)` 等价的 sRGB 线性混合 */\nfunction mixHex(primary: [\n number,\n number,\n number\n], [percent, mixWith]: LogoMixStop): string {\n const other = mixWith === '#fff' ? 255 : 0;\n const k = percent / 100;\n return `#${primary.map((c) => Math.round(c * k + other * (1 - k)).toString(16).padStart(2, '0')).join('')}`;\n}\n/** 生成独立 SVG 文档(不依赖页面 CSS);主色不是合法 hex 时返回 null */\nexport function buildLogoSvg(primaryHex: string): string | null {\n const rgb = parseHex(primaryHex);\n if (!rgb)\n return null;\n const defs = LOGO_FACES.map((face) => {\n const { x1, y1, x2, y2 } = logoGradientAxis(face.axis);\n return `<linearGradient id=\"${face.key}\" x1=\"${x1}\" y1=\"${y1}\" x2=\"${x2}\" y2=\"${y2}\">`\n + `<stop offset=\"0\" stop-color=\"${mixHex(rgb, face.stops[0])}\"/>`\n + `<stop offset=\"1\" stop-color=\"${mixHex(rgb, face.stops[1])}\"/>`\n + '</linearGradient>';\n }).join('');\n const paths = LOGO_FACES.map((face) => (`<path d=\"${face.d}\" fill=\"url(#${face.key})\" stroke=\"url(#${face.key})\" stroke-width=\"${LOGO_STROKE_WIDTH}\" stroke-linejoin=\"round\"/>`)).join('');\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${LOGO_VIEW_BOX}\" fill=\"none\"><defs>${defs}</defs>${paths}</svg>`;\n}\n/** 让标签页 favicon 跟随主题主色;主色不可解析时保留现有图标 */\nexport function applyThemeFavicon(primaryHex: string): void {\n if (typeof document === 'undefined')\n return;\n const svg = buildLogoSvg(primaryHex);\n if (!svg)\n return;\n const href = `data:image/svg+xml,${encodeURIComponent(svg)}`;\n let link = document.querySelector<HTMLLinkElement>('link[rel=\"icon\"]');\n if (link?.href === href)\n return;\n if (!link) {\n link = document.createElement('link');\n link.rel = 'icon';\n document.head.append(link);\n }\n link.type = 'image/svg+xml';\n link.href = href;\n}\n","import { useId } from 'react';\nimport { LOGO_FACES, LOGO_STROKE_WIDTH, LOGO_VIEW_BOX, logoGradientAxis, logoStopCssColor } from \"@/lib/brand-logo\";\nimport \"@/components/AppLogo.css\";\nimport { useAdminOptions } from \"@fudanda/react-core/admin/runtime\";\nimport { useHostBrand } from '@/admin/host-brand';\ninterface AppLogoProps {\n size?: number;\n className?: string;\n hostDefault?: boolean;\n}\n/**\n * ArcBase 品牌标识:拱形 A 与底座,以所在区域的 --arc-antd-color-primary 派生明暗,\n * 无底色,可直接置于浅色或深色背景;几何与配色比例见 `lib/brand-logo.ts`(favicon 同源)。\n */\nexport default function AppLogo({ size = 28, className, hostDefault = false }: Readonly<AppLogoProps>) {\n const uid = useId().replaceAll(/[^a-zA-Z0-9]/g, '');\n const hostBrand = useHostBrand();\n const options = useAdminOptions();\n const logo = (hostDefault ? hostBrand : options.brand)?.logo;\n if (logo !== undefined)\n return <span className={['app-logo', className].filter(Boolean).join(' ')} style={{ width: size, height: size, display: 'inline-flex', alignItems: 'center', justifyContent: 'center' }}>{logo}</span>;\n const gradientId = (key: string) => `app-logo-${key}-${uid}`;\n const cls = ['app-logo', className].filter(Boolean).join(' ');\n return (<svg className={cls} width={size} height={size} viewBox={LOGO_VIEW_BOX} fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n <defs>\n {LOGO_FACES.map((face) => (<linearGradient key={face.key} id={gradientId(face.key)} {...logoGradientAxis(face.axis)}>\n <stop offset=\"0\" style={{ stopColor: logoStopCssColor(face.stops[0]) }}/>\n <stop offset=\"1\" style={{ stopColor: logoStopCssColor(face.stops[1]) }}/>\n </linearGradient>))}\n </defs>\n {LOGO_FACES.map((face) => (<path key={face.key} d={face.d} fill={`url(#${gradientId(face.key)})`} stroke={`url(#${gradientId(face.key)})`} strokeWidth={LOGO_STROKE_WIDTH} strokeLinejoin=\"round\"/>))}\n </svg>);\n}\n","import { EmbeddedIdentityLogin } from '@fudanda/elements-antd';\nimport '@fudanda/elements-antd/styles.css';\nimport { useAdminOptions, useAdminTitle } from '@fudanda/react-core/admin/runtime';\nimport { lazy, Suspense, useEffect, useMemo, useRef, useState, type SubmitEvent } from 'react';\nimport { useNavigate, useLocation } from 'react-router-dom';\nimport { Button, Spin, Toast, Typography } from \"@/ui\";\nimport { User, Lock, ShieldAlert, Check } from 'lucide-react';\nimport dayjs from 'dayjs';\nimport { GoaError } from '@fudanda/client';\nimport { ApiLoginConflictSchema, type ApiLoginResult, type ApiSessionConflict, type ApiLoginChallenge } from '@fudanda/shared/api/identity';\nimport { takeAuthInvalidatedReason, type AuthInvalidatedReason } from '@fudanda/react-core/utils/http-client';\nimport { markPostLoginHome } from '@/lib/post-login';\nimport { useAuth } from '@fudanda/react-core/hooks/useAuth';\nimport AppLogo from '@/components/AppLogo';\nimport { usePublicCaptcha, useIdentityCapabilities } from '@fudanda/react-core/hooks/queries/auth-public';\nimport { useLoginForm, type FieldRules } from './login-form';\nimport { LoginField, LoginFormError } from './LoginField';\nimport './LoginPage.css';\nconst SessionConflictModal = lazy(() => import('./SessionConflictModal'));\nconst { Title, Text } = Typography;\ninterface LoginPageProps {\n onLogin: (username: string, password: string, captchaId?: string, captchaCode?: string) => Promise<ApiLoginResult>;\n}\ninterface LoginFormValues extends Record<string, string> { username: string; password: string; captchaCode: string; }\nconst INVALIDATED_TITLES: Record<string,string> = { 'concurrent-login': '已在其他设备登录', 'password-changed': '密码已修改' };\nconst PRIMARY_BUTTON_STYLE = { marginTop: 8, borderRadius: 'var(--semi-border-radius-medium)', height: 42 } as const;\nconst CAPTCHA_BOX_STYLE = { flexShrink: 0, borderRadius: 'var(--semi-border-radius-small)', overflow: 'hidden', border: '1px solid var(--semi-color-border)', padding: 0, background: 'transparent', lineHeight: 0 } as const;\nexport default function LoginPage({ onLogin }: Readonly<LoginPageProps>) {\n const appTitle = useAdminTitle();\n useEffect(() => { document.title = '登录 · ' + appTitle; }, [appTitle]);\n const { brand } = useAdminOptions();\n const navigate = useNavigate();\n const location = useLocation();\n const params = new URLSearchParams(location.search);\n const redirect = params.get('redirect') ?? '/';\n const redirectTo = redirect.startsWith('/') && !redirect.startsWith('//') && !redirect.startsWith('/login') ? redirect : '/';\n const prefillUsername = params.get('username') ?? '';\n const { resolveSessionConflict } = useAuth();\n const [loading, setLoading] = useState(false);\n const [sessionConflict, setSessionConflict] = useState<ApiSessionConflict | null>(null);\n const [conflictResolving, setConflictResolving] = useState(false);\n const [captchaChallenge, setCaptchaChallenge] = useState<ApiLoginChallenge | null>(null);\n const identityQuery = useIdentityCapabilities();\n const captchaQuery = usePublicCaptcha(identityQuery.data?.passwordLogin === true);\n const captchaEnabled = captchaQuery.data?.enabled ?? false;\n const captchaRequired = captchaEnabled || captchaChallenge !== null;\n const effectiveCaptchaId = captchaChallenge?.captchaId ?? captchaQuery.data?.captchaId;\n const effectiveCaptchaSvg = captchaChallenge?.svg ?? captchaQuery.data?.svg;\n const fetchCaptcha = () => { void captchaQuery.refetch(); };\n const loginRules = useMemo<FieldRules<LoginFormValues>>(() => ({\n username: [{ required: true, message: '请输入用户名/手机号' }],\n password: [{ required: true, message: '请输入密码' }],\n captchaCode: captchaRequired ? [{ required: true, message: '请输入验证码' }] : [],\n }), [captchaRequired]);\n const loginInitial = useMemo<LoginFormValues>(() => ({ username: prefillUsername, password: '', captchaCode: '' }), [prefillUsername]);\n const loginForm = useLoginForm(loginInitial, loginRules);\n const [invalidated, setInvalidated] = useState<AuthInvalidatedReason | null>(null);\n const invalidatedTaken = useRef(false);\n const setLoginValue = loginForm.setValue;\n useEffect(() => {\n if (invalidatedTaken.current) return;\n invalidatedTaken.current = true;\n const detail = takeAuthInvalidatedReason(); if (!detail) return;\n if (detail.reason && detail.reason !== 'rotated' && detail.reason !== 'logout') {\n setInvalidated(detail); if (detail.username && !prefillUsername) setLoginValue('username', detail.username);\n } else Toast.warning({ content: detail.message, duration: 6 });\n }, [setLoginValue, prefillUsername]);\n const navigateAfterLogin = () => { if (redirectTo === '/') markPostLoginHome(); navigate(redirectTo, { replace: true }); };\n const handleLogin = async (values: LoginFormValues) => {\n if (loading) return; setLoading(true);\n try {\n const result = await onLogin(values.username, values.password, effectiveCaptchaId, captchaRequired ? values.captchaCode : undefined);\n loginForm.setValue('captchaCode', '');\n if (result.outcome.type === 'captcha') { setCaptchaChallenge(result.outcome.value); loginForm.setFormError(result.outcome.value.message); }\n else navigateAfterLogin();\n } catch (error) {\n if (error instanceof GoaError && error.status === 409) {\n const conflict = ApiLoginConflictSchema.safeParse(error.details);\n if (conflict.success && conflict.data.details.type === 'sessionLimit') { setSessionConflict(conflict.data.details.value); return; }\n }\n loginForm.setFormError(error instanceof Error ? error.message : '登录失败');\n if (captchaEnabled) fetchCaptcha();\n } finally { setLoading(false); }\n };\n const handleResolveConflict = async () => {\n if (!sessionConflict || conflictResolving) return; setConflictResolving(true);\n try { await resolveSessionConflict(sessionConflict.ticket); setSessionConflict(null); navigateAfterLogin(); }\n catch (error) { loginForm.setFormError(error instanceof Error ? error.message : '登录失败'); setSessionConflict(null); }\n finally { setConflictResolving(false); }\n };\n const handleLoginSubmit = (event: SubmitEvent<HTMLFormElement>) => { event.preventDefault(); const values = loginForm.validate(); if (values) void handleLogin(values); };\n const renderLoginForm = () => !identityQuery.data ? <div><Spin />{identityQuery.isError && <Button onClick={() => { void identityQuery.refetch(); }}>重新读取登录方式</Button>}</div> : identityQuery.data.externalLogin ? <EmbeddedIdentityLogin onSuccess={navigateAfterLogin}/> : <form className=\"login-form\" onSubmit={handleLoginSubmit} noValidate>\n <LoginField {...loginForm.field('username')} id=\"login-username\" placeholder=\"请输入用户名/手机号\" prefix={<User />} size=\"large\" autoComplete=\"username\"/>\n <LoginField {...loginForm.field('password')} id=\"login-password\" mode=\"password\" placeholder=\"请输入密码\" prefix={<Lock />} size=\"large\" autoComplete=\"current-password\"/>\n {captchaRequired && <div style={{ display: 'flex', gap: 8, alignItems: 'flex-start' }}>\n <div style={{ flex: 1 }}><LoginField {...loginForm.field('captchaCode')} id=\"login-captcha\" placeholder=\"请输入验证码\" size=\"large\" autoComplete=\"one-time-code\"/></div>\n {captchaEnabled ? <button type=\"button\" style={{ ...CAPTCHA_BOX_STYLE, cursor: 'pointer' }} title=\"点击刷新验证码\" onClick={fetchCaptcha}><img src={effectiveCaptchaSvg} alt=\"登录验证码\" width={160} height={48}/></button> : <img src={effectiveCaptchaSvg} alt=\"登录验证码\" width={180} height={48}/>}\n </div>}\n <LoginFormError message={loginForm.formError}/>\n <Button htmlType=\"submit\" type=\"primary\" theme=\"solid\" loading={loading} block size=\"large\" style={PRIMARY_BUTTON_STYLE}>登录</Button>\n </form>;\n const invalidatedTitle = INVALIDATED_TITLES[invalidated?.reason ?? ''] ?? '会话已被强制下线';\n return (<div className=\"login-page\">\n <div className=\"login-bg\" aria-hidden=\"true\" style={brand?.loginImage ? { backgroundImage: `url(${JSON.stringify(brand.loginImage)})`, backgroundSize: 'cover', backgroundPosition: 'center' } : undefined}>\n <div className=\"login-wash login-wash-a\"/>\n <div className=\"login-wash login-wash-b\"/>\n </div>\n <header className=\"login-topbar\">\n <AppLogo size={34}/>\n <span className=\"login-brand-name\">{appTitle}</span>\n </header>\n <main className=\"login-main\">\n <section className=\"login-hero\">\n <div className=\"login-eyebrow\">企业级后台管理</div>\n <h1 className=\"login-headline\">\n 高效管理,\n <br />\n <span className=\"login-headline-highlight\">赋能业务增长</span>\n </h1>\n <p className=\"login-desc\">\n 企业级后台管理系统,为团队提供高效、稳定、安全的一站式管理解决方案。\n </p>\n <div className=\"login-feature-list\">\n {['精细化权限管理', '安全审计机制', '稳定可靠运行', '多租户支持'].map((feature) => (<div key={feature} className=\"login-feature-item\">\n <span className=\"login-feature-check\">\n <Check size={12} strokeWidth={3}/>\n </span>\n {feature}\n </div>))}\n </div>\n </section>\n <div className={`login-card${identityQuery.data?.externalLogin ? ' login-card-external' : ''}`}>\n <div className=\"login-form-header\">\n <Title heading={3} style={{ marginBottom: 8, fontWeight: 600 }}>\n 欢迎回来\n </Title>\n <Text type=\"tertiary\" style={{ fontSize: 14, display: 'block', marginBottom: 24 }}>\n 请输入您的账号信息以登录工作台\n </Text>\n </div>\n {invalidated && <div className={`login-alert${invalidated.reason === 'concurrent-login' ? ' login-alert-danger' : ''}`} role=\"alert\">\n <ShieldAlert size={18} className=\"login-alert-icon\" aria-hidden/>\n <div className=\"login-alert-body\"><div className=\"login-alert-title\">{invalidatedTitle}</div><div className=\"login-alert-text\">{invalidated.message}</div></div>\n <button type=\"button\" className=\"login-alert-close\" aria-label=\"关闭提示\" onClick={() => setInvalidated(null)}>×</button>\n </div>}\n <div style={{ marginBottom: 20 }}>{renderLoginForm()}</div>\n {import.meta.env.VITE_DEMO_MODE === 'true' && (<div className=\"login-demo-tip\">\n <div style={{ marginBottom: 4 }}>\n <strong>演示模式</strong>:当前站点使用模拟数据,仅开放预置账号体验主要流程,不提供注册入口。\n </div>\n <div>\n 体验账号:<code>admin</code> / 密码:<code>123456</code>\n </div>\n </div>)}\n </div>\n </main>\n <footer className=\"login-footer\">\n © {dayjs().year()} {brand?.copyrightName ?? appTitle} · 高效 · 稳定 · 安全\n {brand?.icpNumber && <span> · {brand.icpUrl ? <a href={brand.icpUrl} target=\"_blank\" rel=\"noopener noreferrer\">{brand.icpNumber}</a> : brand.icpNumber}</span>}\n </footer>\n {sessionConflict && (<Suspense fallback={null}>\n <SessionConflictModal conflict={sessionConflict} loading={conflictResolving} onConfirm={() => void handleResolveConflict()} onCancel={() => setSessionConflict(null)}/>\n </Suspense>)}\n </div>);\n}\n","import { Button } from 'antd';\nimport { Menu, PanelLeftClose, PanelLeftOpen } from 'lucide-react';\nimport type { ReactNode } from 'react';\n/** Header regions migrated from react-antd-admin/layout/layout-header. */\nexport default function LayoutHeader({ children, actions, mobile, collapsed, showTrigger, onToggle }: {\n children: ReactNode;\n actions: ReactNode;\n mobile: boolean;\n collapsed: boolean;\n showTrigger: boolean;\n onToggle: () => void;\n}) {\n return <header className=\"arc-layout-header\">\n <div className=\"arc-layout-header__navigation\">\n {showTrigger && <Button type=\"text\" className=\"arc-layout-icon-button\" aria-label={mobile ? '打开导航菜单' : collapsed ? '展开侧边栏' : '收起侧边栏'} icon={mobile ? <Menu size={19}/> : collapsed ? <PanelLeftOpen size={18}/> : <PanelLeftClose size={18}/>} onClick={onToggle}/>}\n <div className=\"arc-layout-header__title\">{children}</div>\n </div>\n <div className=\"arc-layout-header__actions\">{actions}</div>\n </header>;\n}\n","/*!\n * OverlayScrollbars\n * Version: 2.17.0\n *\n * Copyright (c) Rene Haas | KingSora.\n * https://github.com/KingSora\n *\n * Released under the MIT license.\n */\nconst createCache = (t, n) => {\n const {o: o, i: s, u: e} = t;\n let c = o;\n let r;\n const cacheUpdateContextual = (t, n) => {\n const o = c;\n const i = t;\n const l = n || (s ? !s(o, i) : o !== i);\n if (l || e) {\n c = i;\n r = o;\n }\n return [ c, l, r ];\n };\n const cacheUpdateIsolated = t => cacheUpdateContextual(n(c, r), t);\n const getCurrentCache = t => [ c, !!t, r ];\n return [ n ? cacheUpdateIsolated : cacheUpdateContextual, getCurrentCache ];\n};\n\nconst t = typeof window !== \"undefined\" && typeof HTMLElement !== \"undefined\" && !!window.document;\n\nconst n = t ? window : {};\n\nconst o = Math.max;\n\nconst s = Math.min;\n\nconst e = Math.round;\n\nconst c = Math.abs;\n\nconst r = Math.sign;\n\nconst i = n.cancelAnimationFrame;\n\nconst l = n.requestAnimationFrame;\n\nconst a = n.setTimeout;\n\nconst u = n.clearTimeout;\n\nconst getApi = t => typeof n[t] !== \"undefined\" ? n[t] : void 0;\n\nconst f = getApi(\"MutationObserver\");\n\nconst _ = getApi(\"IntersectionObserver\");\n\nconst d = getApi(\"ResizeObserver\");\n\nconst p = getApi(\"ScrollTimeline\");\n\nconst isUndefined = t => t === void 0;\n\nconst isNull = t => t === null;\n\nconst isNumber = t => typeof t === \"number\";\n\nconst isString = t => typeof t === \"string\";\n\nconst isBoolean = t => typeof t === \"boolean\";\n\nconst isFunction = t => typeof t === \"function\";\n\nconst isArray = t => Array.isArray(t);\n\nconst isObject = t => typeof t === \"object\" && !isArray(t) && !isNull(t);\n\nconst isArrayLike = t => {\n const n = !!t && t.length;\n const o = isNumber(n) && n > -1 && n % 1 == 0;\n return isArray(t) || !isFunction(t) && o ? n > 0 && isObject(t) ? n - 1 in t : true : false;\n};\n\nconst isPlainObject = t => !!t && t.constructor === Object;\n\nconst isHTMLElement = t => t instanceof HTMLElement;\n\nconst isElement = t => t instanceof Element;\n\nconst animationCurrentTime = () => performance.now();\n\nconst animateNumber = (t, n, s, e, c) => {\n let r = 0;\n const a = animationCurrentTime();\n const u = o(0, s);\n const frame = s => {\n const i = animationCurrentTime();\n const f = i - a;\n const _ = f >= u;\n const d = s ? 1 : 1 - (o(0, a + u - i) / u || 0);\n const p = (n - t) * (isFunction(c) ? c(d, d * u, 0, 1, u) : d) + t;\n const v = _ || d === 1;\n e(p, d, v);\n r = v ? 0 : l((() => frame()));\n };\n frame();\n return t => {\n i(r);\n if (t) {\n frame(t);\n }\n };\n};\n\nfunction each(t, n) {\n if (isArrayLike(t)) {\n for (let o = 0; o < t.length; o++) {\n if (n(t[o], o, t) === false) {\n break;\n }\n }\n } else if (t) {\n each(Object.keys(t), (o => n(t[o], o, t)));\n }\n return t;\n}\n\nconst inArray = (t, n) => t.indexOf(n) >= 0;\n\nconst concat = (t, n) => t.concat(n);\n\nconst push = (t, n, o) => {\n if (!isString(n) && isArrayLike(n)) {\n Array.prototype.push.apply(t, n);\n } else {\n t.push(n);\n }\n return t;\n};\n\nconst from = t => Array.from(t || []);\n\nconst createOrKeepArray = t => {\n if (isArray(t)) {\n return t;\n }\n return !isString(t) && isArrayLike(t) ? from(t) : [ t ];\n};\n\nconst isEmptyArray = t => !!t && !t.length;\n\nconst deduplicateArray = t => from(new Set(t));\n\nconst runEachAndClear = (t, n, o) => {\n const runFn = t => t ? t.apply(void 0, n || []) : true;\n each(t, runFn);\n if (!o) {\n t.length = 0;\n }\n};\n\nconst v = \"paddingTop\";\n\nconst g = \"paddingRight\";\n\nconst h = \"paddingLeft\";\n\nconst b = \"paddingBottom\";\n\nconst y = \"marginLeft\";\n\nconst w = \"marginRight\";\n\nconst S = \"marginBottom\";\n\nconst m = \"overflowX\";\n\nconst O = \"overflowY\";\n\nconst C = \"width\";\n\nconst $ = \"height\";\n\nconst x = \"visible\";\n\nconst H = \"hidden\";\n\nconst E = \"scroll\";\n\nconst capitalizeFirstLetter = t => {\n const n = String(t || \"\");\n return n ? n[0].toUpperCase() + n.slice(1) : \"\";\n};\n\nconst equal = (t, n, o, s) => {\n if (t && n) {\n let s = true;\n each(o, (o => {\n const e = t[o];\n const c = n[o];\n if (e !== c) {\n s = false;\n }\n }));\n return s;\n }\n return false;\n};\n\nconst equalWH = (t, n) => equal(t, n, [ \"w\", \"h\" ]);\n\nconst equalXY = (t, n) => equal(t, n, [ \"x\", \"y\" ]);\n\nconst equalTRBL = (t, n) => equal(t, n, [ \"t\", \"r\", \"b\", \"l\" ]);\n\nconst bind = (t, ...n) => t.bind(0, ...n);\n\nconst selfClearTimeout = t => {\n let n;\n const o = t ? a : l;\n const s = t ? u : i;\n return [ e => {\n s(n);\n n = o((() => e()), isFunction(t) ? t() : t);\n }, () => s(n) ];\n};\n\nconst getDebouncer = t => {\n const n = isFunction(t) ? t() : t;\n if (isNumber(n)) {\n const t = n ? a : l;\n const o = n ? u : i;\n return s => {\n const e = t((() => s()), n);\n return () => {\n o(e);\n };\n };\n }\n return n && n._;\n};\n\nconst debounce = (t, n) => {\n const {p: o, v: s, S: e, m: c} = n || {};\n let r;\n let i;\n let l;\n let a;\n const u = function invokeFunctionToDebounce(n) {\n if (i) {\n i();\n }\n if (r) {\n r();\n }\n a = i = r = l = void 0;\n t.apply(this, n);\n };\n const mergeParms = t => c && l ? c(l, t) : t;\n const flush = () => {\n if (i && l) {\n u(mergeParms(l) || l);\n }\n };\n const f = function debouncedFn() {\n const t = from(arguments);\n const n = getDebouncer(o);\n if (n) {\n const o = typeof e === \"function\" ? e() : e;\n const c = getDebouncer(s);\n const f = mergeParms(t);\n const _ = f || t;\n const d = u.bind(0, _);\n if (i) {\n i();\n }\n if (o && !a) {\n d();\n a = true;\n i = n((() => a = void 0));\n } else {\n i = n(d);\n if (c && !r) {\n r = c(flush);\n }\n }\n l = _;\n } else {\n u(t);\n }\n };\n f.O = flush;\n return f;\n};\n\nconst hasOwnProperty = (t, n) => Object.prototype.hasOwnProperty.call(t, n);\n\nconst keys = t => t ? Object.keys(t) : [];\n\nconst assignDeep = (t, n, o, s, e, c, r) => {\n const i = [ n, o, s, e, c, r ];\n if ((typeof t !== \"object\" || isNull(t)) && !isFunction(t)) {\n t = {};\n }\n each(i, (n => {\n each(n, ((o, s) => {\n const e = n[s];\n if (t === e) {\n return true;\n }\n const c = isArray(e);\n if (e && isPlainObject(e)) {\n const n = t[s];\n let o = n;\n if (c && !isArray(n)) {\n o = [];\n } else if (!c && !isPlainObject(n)) {\n o = {};\n }\n t[s] = assignDeep(o, e);\n } else {\n t[s] = c ? e.slice() : e;\n }\n }));\n }));\n return t;\n};\n\nconst removeUndefinedProperties = (t, n) => each(assignDeep({}, t), ((t, n, o) => {\n if (t === void 0) {\n delete o[n];\n } else if (t && isPlainObject(t)) {\n o[n] = removeUndefinedProperties(t);\n }\n}));\n\nconst isEmptyObject = t => !keys(t).length;\n\nconst noop = () => {};\n\nconst capNumber = (t, n, e) => o(t, s(n, e));\n\nconst getDomTokensArray = t => deduplicateArray((isArray(t) ? t : (t || \"\").split(\" \")).filter((t => t)));\n\nconst getAttr = (t, n) => t && t.getAttribute(n);\n\nconst hasAttr = (t, n) => t && t.hasAttribute(n);\n\nconst setAttrs = (t, n, o) => {\n each(getDomTokensArray(n), (n => {\n if (t) {\n t.setAttribute(n, String(o || \"\"));\n }\n }));\n};\n\nconst removeAttrs = (t, n) => {\n each(getDomTokensArray(n), (n => t && t.removeAttribute(n)));\n};\n\nconst domTokenListAttr = (t, n) => {\n const o = getDomTokensArray(getAttr(t, n));\n const s = bind(setAttrs, t, n);\n const domTokenListOperation = (t, n) => {\n const s = new Set(o);\n each(getDomTokensArray(t), (t => {\n s[n](t);\n }));\n return from(s).join(\" \");\n };\n return {\n C: t => s(domTokenListOperation(t, \"delete\")),\n $: t => s(domTokenListOperation(t, \"add\")),\n H: t => {\n const n = getDomTokensArray(t);\n return n.reduce(((t, n) => t && o.includes(n)), n.length > 0);\n }\n };\n};\n\nconst removeAttrClass = (t, n, o) => {\n domTokenListAttr(t, n).C(o);\n return bind(addAttrClass, t, n, o);\n};\n\nconst addAttrClass = (t, n, o) => {\n domTokenListAttr(t, n).$(o);\n return bind(removeAttrClass, t, n, o);\n};\n\nconst addRemoveAttrClass = (t, n, o, s) => (s ? addAttrClass : removeAttrClass)(t, n, o);\n\nconst hasAttrClass = (t, n, o) => domTokenListAttr(t, n).H(o);\n\nconst createDomTokenListClass = t => domTokenListAttr(t, \"class\");\n\nconst removeClass = (t, n) => {\n createDomTokenListClass(t).C(n);\n};\n\nconst addClass = (t, n) => {\n createDomTokenListClass(t).$(n);\n return bind(removeClass, t, n);\n};\n\nconst find = (t, n) => {\n const o = n ? isElement(n) && n : document;\n return o ? from(o.querySelectorAll(t)) : [];\n};\n\nconst findFirst = (t, n) => {\n const o = n ? isElement(n) && n : document;\n return o && o.querySelector(t);\n};\n\nconst is = (t, n) => isElement(t) && t.matches(n);\n\nconst isBodyElement = t => is(t, \"body\");\n\nconst contents = t => t ? from(t.childNodes) : [];\n\nconst parent = t => t && t.parentElement;\n\nconst closest = (t, n) => isElement(t) && t.closest(n);\n\nconst getFocusedElement = t => document.activeElement;\n\nconst liesBetween = (t, n, o) => {\n const s = closest(t, n);\n const e = t && findFirst(o, s);\n const c = closest(e, n) === s;\n return s && e ? s === t || e === t || c && closest(closest(t, o), n) !== s : false;\n};\n\nconst removeElements = t => {\n each(createOrKeepArray(t), (t => {\n const n = parent(t);\n if (t && n) {\n n.removeChild(t);\n }\n }));\n};\n\nconst appendChildren = (t, n) => bind(removeElements, t && n && each(createOrKeepArray(n), (n => {\n if (n) {\n t.appendChild(n);\n }\n})));\n\nlet D;\n\nconst getTrustedTypePolicy = () => D;\n\nconst setTrustedTypePolicy = t => {\n D = t;\n};\n\nconst createDiv = t => {\n const n = document.createElement(\"div\");\n setAttrs(n, \"class\", t);\n return n;\n};\n\nconst createDOM = t => {\n const n = createDiv();\n const o = getTrustedTypePolicy();\n const s = t.trim();\n n.innerHTML = o ? o.createHTML(s) : s;\n return each(contents(n), (t => removeElements(t)));\n};\n\nconst getCSSVal = (t, n) => t.getPropertyValue(n) || t[n] || \"\";\n\nconst validFiniteNumber = t => {\n const n = t || 0;\n return isFinite(n) ? n : 0;\n};\n\nconst parseToZeroOrNumber = t => validFiniteNumber(parseFloat(t || \"\"));\n\nconst roundCssNumber = t => Math.round(t * 1e4) / 1e4;\n\nconst numberToCssPx = t => `${roundCssNumber(validFiniteNumber(t))}px`;\n\nfunction setStyles(t, n) {\n t && n && each(n, ((n, o) => {\n try {\n const s = t.style;\n const e = isNull(n) || isBoolean(n) ? \"\" : isNumber(n) ? numberToCssPx(n) : n;\n if (o.indexOf(\"--\") === 0) {\n s.setProperty(o, e);\n } else {\n s[o] = e;\n }\n } catch (s) {}\n }));\n}\n\nfunction getStyles(t, o, s) {\n const e = isString(o);\n let c = e ? \"\" : {};\n if (t) {\n const r = n.getComputedStyle(t, s) || t.style;\n c = e ? getCSSVal(r, o) : from(o).reduce(((t, n) => {\n t[n] = getCSSVal(r, n);\n return t;\n }), c);\n }\n return c;\n}\n\nconst topRightBottomLeft = (t, n, o) => {\n const s = n ? `${n}-` : \"\";\n const e = o ? `-${o}` : \"\";\n const c = `${s}top${e}`;\n const r = `${s}right${e}`;\n const i = `${s}bottom${e}`;\n const l = `${s}left${e}`;\n const a = getStyles(t, [ c, r, i, l ]);\n return {\n t: parseToZeroOrNumber(a[c]),\n r: parseToZeroOrNumber(a[r]),\n b: parseToZeroOrNumber(a[i]),\n l: parseToZeroOrNumber(a[l])\n };\n};\n\nconst getTrasformTranslateValue = (t, n) => `translate${isObject(t) ? `(${t.x},${t.y})` : `${n ? \"X\" : \"Y\"}(${t})`}`;\n\nconst elementHasDimensions = t => !!(t.offsetWidth || t.offsetHeight || t.getClientRects().length);\n\nconst z = {\n w: 0,\n h: 0\n};\n\nconst getElmWidthHeightProperty = (t, n) => n ? {\n w: n[`${t}Width`],\n h: n[`${t}Height`]\n} : z;\n\nconst getWindowSize = t => getElmWidthHeightProperty(\"inner\", t || n);\n\nconst I = bind(getElmWidthHeightProperty, \"offset\");\n\nconst A = bind(getElmWidthHeightProperty, \"client\");\n\nconst T = bind(getElmWidthHeightProperty, \"scroll\");\n\nconst getFractionalSize = t => {\n const n = parseFloat(getStyles(t, C)) || 0;\n const o = parseFloat(getStyles(t, $)) || 0;\n return {\n w: n - e(n),\n h: o - e(o)\n };\n};\n\nconst getBoundingClientRect = t => t.getBoundingClientRect();\n\nconst hasDimensions = t => !!t && elementHasDimensions(t);\n\nconst domRectHasDimensions = t => !!(t && (t[$] || t[C]));\n\nconst domRectAppeared = (t, n) => {\n const o = domRectHasDimensions(t);\n const s = domRectHasDimensions(n);\n return !s && o;\n};\n\nconst removeEventListener = (t, n, o, s) => {\n each(getDomTokensArray(n), (n => {\n if (t) {\n t.removeEventListener(n, o, s);\n }\n }));\n};\n\nconst addEventListener = (t, n, o, s) => {\n var e;\n const c = (e = s && s.D) != null ? e : true;\n const r = s && s.I || false;\n const i = s && s.A || false;\n const l = {\n passive: c,\n capture: r\n };\n return bind(runEachAndClear, getDomTokensArray(n).map((n => {\n const s = i ? e => {\n removeEventListener(t, n, s, r);\n if (o) {\n o(e);\n }\n } : o;\n if (t) {\n t.addEventListener(n, s, l);\n }\n return bind(removeEventListener, t, n, s, r);\n })));\n};\n\nconst stopPropagation = t => t.stopPropagation();\n\nconst preventDefault = t => t.preventDefault();\n\nconst stopAndPrevent = t => stopPropagation(t) || preventDefault(t);\n\nconst swallowFocusEvents = t => bind(runEachAndClear, createOrKeepArray(t).map((t => addEventListener(t, \"focusin focusout focus blur\", (t => stopAndPrevent(t)), {\n I: true,\n D: false\n}))));\n\nconst scrollElementTo = (t, n) => {\n const {x: o, y: s} = isNumber(n) ? {\n x: n,\n y: n\n } : n || {};\n isNumber(o) && (t.scrollLeft = o);\n isNumber(s) && (t.scrollTop = s);\n};\n\nconst getElementScroll = t => ({\n x: t.scrollLeft,\n y: t.scrollTop\n});\n\nconst getZeroScrollCoordinates = () => ({\n T: {\n x: 0,\n y: 0\n },\n k: {\n x: 0,\n y: 0\n }\n});\n\nconst sanitizeScrollCoordinates = (t, n) => {\n const {T: o, k: s} = t;\n const {w: e, h: i} = n;\n const sanitizeAxis = (t, n, o) => {\n let s = r(t) * o;\n let e = r(n) * o;\n if (s === e) {\n const o = c(t);\n const r = c(n);\n e = o > r ? 0 : e;\n s = o < r ? 0 : s;\n }\n s = s === e ? 0 : s;\n return [ s + 0, e + 0 ];\n };\n const [l, a] = sanitizeAxis(o.x, s.x, e);\n const [u, f] = sanitizeAxis(o.y, s.y, i);\n return {\n T: {\n x: l,\n y: u\n },\n k: {\n x: a,\n y: f\n }\n };\n};\n\nconst isDefaultDirectionScrollCoordinates = ({T: t, k: n}) => {\n const getAxis = (t, n) => t === 0 && t <= n;\n return {\n x: getAxis(t.x, n.x),\n y: getAxis(t.y, n.y)\n };\n};\n\nconst getScrollCoordinatesPercent = ({T: t, k: n}, o) => {\n const getAxis = (t, n, o) => capNumber(0, 1, (t - o) / (t - n) || 0);\n return {\n x: getAxis(t.x, n.x, o.x),\n y: getAxis(t.y, n.y, o.y)\n };\n};\n\nconst focusElement = t => {\n if (t && t.focus) {\n t.focus({\n preventScroll: true,\n focusVisible: false\n });\n }\n};\n\nconst manageListener = (t, n) => {\n each(createOrKeepArray(n), t);\n};\n\nconst createEventListenerHub = t => {\n const n = new Map;\n const removeEvent = (t, o) => {\n if (t) {\n const s = n.get(t);\n manageListener((t => {\n if (s) {\n s[t ? \"delete\" : \"clear\"](t);\n }\n }), o);\n } else {\n n.forEach((t => {\n t.clear();\n }));\n n.clear();\n }\n };\n const addEvent = (t, o) => {\n if (isString(t)) {\n const s = n.get(t) || new Set;\n n.set(t, s);\n manageListener((t => {\n if (isFunction(t)) {\n s.add(t);\n }\n }), o);\n return bind(removeEvent, t, o);\n }\n if (isBoolean(o) && o) {\n removeEvent();\n }\n const s = keys(t);\n const e = [];\n each(s, (n => {\n const o = t[n];\n if (o) {\n push(e, addEvent(n, o));\n }\n }));\n return bind(runEachAndClear, e);\n };\n const triggerEvent = (t, o) => {\n each(from(n.get(t)), (t => {\n if (o && !isEmptyArray(o)) {\n t.apply(0, o);\n } else {\n t();\n }\n }));\n };\n addEvent(t || {});\n return [ addEvent, removeEvent, triggerEvent ];\n};\n\nconst k = {};\n\nconst M = {};\n\nconst addPlugins = t => {\n each(t, (t => each(t, ((n, o) => {\n k[o] = t[o];\n }))));\n};\n\nconst registerPluginModuleInstances = (t, n, o) => keys(t).map((s => {\n const {static: e, instance: c} = t[s];\n const [r, i, l] = o || [];\n const a = o ? c : e;\n if (a) {\n const t = o ? a(r, i, n) : a(n);\n return (l || M)[s] = t;\n }\n}));\n\nconst getInstancePluginModuleInstance = (t, n) => t[n];\n\nconst getStaticPluginModuleInstance = t => getInstancePluginModuleInstance(M, t);\n\nconst R = \"__osOptionsValidationPlugin\";\n\nconst V = `data-overlayscrollbars`;\n\nconst L = \"os-environment\";\n\nconst P = `${L}-scrollbar-hidden`;\n\nconst U = `${V}-initialize`;\n\nconst N = \"noClipping\";\n\nconst q = `${V}-body`;\n\nconst B = V;\n\nconst F = \"host\";\n\nconst j = `${V}-viewport`;\n\nconst X = m;\n\nconst Y = O;\n\nconst W = \"arrange\";\n\nconst J = \"measuring\";\n\nconst G = \"scrolling\";\n\nconst K = \"scrollbarHidden\";\n\nconst Q = \"noContent\";\n\nconst Z = \"noScrollbars\";\n\nconst tt = \"contentOverflow\";\n\nconst nt = `${V}-padding`;\n\nconst ot = `${V}-content`;\n\nconst st = \"os-size-observer\";\n\nconst et = `${st}-appear`;\n\nconst ct = `${st}-listener`;\n\nconst rt = `${ct}-scroll`;\n\nconst it = `${ct}-item`;\n\nconst lt = `${it}-final`;\n\nconst at = \"os-trinsic-observer\";\n\nconst ut = \"os-theme-none\";\n\nconst ft = \"os-scrollbar\";\n\nconst _t = `${ft}-rtl`;\n\nconst dt = `${ft}-horizontal`;\n\nconst pt = `${ft}-vertical`;\n\nconst vt = `${ft}-track`;\n\nconst gt = `${ft}-handle`;\n\nconst ht = `${ft}-visible`;\n\nconst bt = `${ft}-cornerless`;\n\nconst yt = `${ft}-interaction`;\n\nconst wt = `${ft}-unusable`;\n\nconst St = `${ft}-auto-hide`;\n\nconst mt = `${St}-hidden`;\n\nconst Ot = `${ft}-wheel`;\n\nconst Ct = `${vt}-interactive`;\n\nconst $t = `${gt}-interactive`;\n\nconst xt = \"__osSizeObserverPlugin\";\n\nconst Ht = /* @__PURE__ */ (() => ({\n [xt]: {\n static: () => (t, n, o) => {\n const s = 3333333;\n const e = \"scroll\";\n const c = createDOM(`<div class=\"${it}\" dir=\"ltr\"><div class=\"${it}\"><div class=\"${lt}\"></div></div><div class=\"${it}\"><div class=\"${lt}\" style=\"width: 200%; height: 200%\"></div></div></div>`);\n const r = c[0];\n const a = r.lastChild;\n const u = r.firstChild;\n const f = u == null ? void 0 : u.firstChild;\n let _ = I(r);\n let d = _;\n let p = false;\n let v;\n const reset = () => {\n scrollElementTo(u, s);\n scrollElementTo(a, s);\n };\n const onResized = t => {\n v = 0;\n if (p) {\n _ = d;\n n(t === true);\n }\n };\n const onScroll = t => {\n d = I(r);\n p = !t || !equalWH(d, _);\n if (t) {\n stopPropagation(t);\n if (p && !v) {\n i(v);\n v = l(onResized);\n }\n } else {\n onResized(t === false);\n }\n reset();\n };\n const g = [ appendChildren(t, c), addEventListener(u, e, onScroll), addEventListener(a, e, onScroll) ];\n addClass(t, rt);\n setStyles(f, {\n [C]: s,\n [$]: s\n });\n l(reset);\n return [ o ? bind(onScroll, false) : reset, g ];\n }\n }\n}))();\n\nconst getShowNativeOverlaidScrollbars = (t, n) => {\n const {M: o} = n;\n const [s, e] = t(\"showNativeOverlaidScrollbars\");\n return [ s && o.x && o.y, e ];\n};\n\nconst overflowIsVisible = t => t.indexOf(x) === 0;\n\nconst overflowBehaviorToOverflowStyle = t => t.replace(`${x}-`, \"\");\n\nconst overflowCssValueToOverflowStyle = (t, n) => {\n if (t === \"auto\") {\n return n ? E : H;\n }\n const o = t || H;\n return [ H, E, x ].includes(o) ? o : H;\n};\n\nconst getElementOverflowStyle = (t, n) => {\n const {overflowX: o, overflowY: s} = getStyles(t, [ m, O ]);\n return {\n x: overflowCssValueToOverflowStyle(o, n.x),\n y: overflowCssValueToOverflowStyle(s, n.y)\n };\n};\n\nconst createViewportOverflowStyleClassName = (t, n) => {\n const o = n ? X : Y;\n return `${o}${capitalizeFirstLetter(t)}`;\n};\n\nconst Et = \"__osScrollbarsHidingPlugin\";\n\nconst Dt = /* @__PURE__ */ (() => ({\n [Et]: {\n static: () => ({\n R: (t, n, o, s, e) => {\n const {V: c, L: r} = t;\n const {P: i, M: l, U: a} = s;\n const u = !c && !i && (l.x || l.y);\n const [f] = getShowNativeOverlaidScrollbars(e, s);\n const _getViewportOverflowHideOffset = t => {\n const n = i || f ? 0 : 42;\n const getHideOffsetPerAxis = (t, o, s) => {\n const e = t ? n : s;\n const c = o && !i ? e : 0;\n const r = t && !!n;\n return [ c, r ];\n };\n const [o, s] = getHideOffsetPerAxis(l.x, t.x === E, a.x);\n const [e, c] = getHideOffsetPerAxis(l.y, t.y === E, a.y);\n return {\n N: {\n x: o,\n y: e\n },\n q: {\n x: s,\n y: c\n }\n };\n };\n const _hideNativeScrollbars = t => {\n if (!c) {\n const {B: s} = o;\n const e = assignDeep({}, {\n [w]: 0,\n [S]: 0,\n [y]: 0\n });\n const {N: c, q: r} = _getViewportOverflowHideOffset(t);\n const {x: i, y: l} = r;\n const {x: a, y: f} = c;\n const {F: _} = n;\n const d = s ? y : w;\n const p = s ? h : g;\n const v = _[d];\n const m = _[S];\n const O = _[p];\n const $ = _[b];\n e[C] = `calc(100% + ${f + v * -1}px)`;\n e[d] = -f + v;\n e[S] = -a + m;\n if (u) {\n e[p] = O + (l ? f : 0);\n e[b] = $ + (i ? a : 0);\n }\n return e;\n }\n };\n const _arrangeViewport = (t, s, e) => {\n if (u) {\n const {F: c} = n;\n const {N: i, q: l} = _getViewportOverflowHideOffset(t);\n const {x: a, y: u} = l;\n const {x: f, y: _} = i;\n const {B: d} = o;\n const p = d ? g : h;\n const v = c[p];\n const b = c.paddingTop;\n const y = s.w + e.w;\n const w = s.h + e.h;\n const S = {\n w: _ && u ? `${_ + y - v}px` : \"\",\n h: f && a ? `${f + w - b}px` : \"\"\n };\n setStyles(r, {\n \"--os-vaw\": S.w,\n \"--os-vah\": S.h\n });\n }\n return u;\n };\n const _undoViewportArrange = () => {\n if (u) {\n const {j: t, F: o} = n;\n const s = getElementOverflowStyle(r, t);\n const {q: e} = _getViewportOverflowHideOffset(s);\n const {x: c, y: i} = e;\n const l = {};\n const assignProps = t => each(t, (t => {\n l[t] = o[t];\n }));\n if (c) {\n assignProps([ S, v, b ]);\n }\n if (i) {\n assignProps([ y, w, h, g ]);\n }\n const a = getStyles(r, keys(l));\n const u = removeAttrClass(r, j, W);\n setStyles(r, l);\n return () => {\n setStyles(r, assignDeep({}, a, _hideNativeScrollbars(s)));\n u();\n };\n }\n return noop;\n };\n return {\n X: _arrangeViewport,\n Y: _undoViewportArrange,\n W: _hideNativeScrollbars\n };\n }\n })\n }\n}))();\n\nconst zt = \"__osClickScrollPlugin\";\n\nconst It = /* @__PURE__ */ (() => ({\n [zt]: {\n static: () => (t, n, o, s, e, c, r, i) => {\n let l = false;\n let a = noop;\n const u = {\n clickScrollDistance: e,\n clickScrollDuration: 200,\n clickPressDelay: 150,\n pressDistanceDuration: 90\n };\n const easeOutQuad = t => 1 - (1 - t) * (1 - t);\n const easeInOutQuad = t => t < .5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2;\n const {clickScrollDistance: f, clickScrollDuration: _, clickPressDelay: d, pressDistanceDuration: p} = assignDeep({}, u, isFunction(c) ? c(r) : u);\n const v = f === 0;\n const g = p * 2.3;\n const h = p * 2.5;\n const b = f ? e / f : 0;\n const [y, w] = selfClearTimeout(Math.max(22, d));\n const S = o();\n const m = Math.sign(s);\n const O = animateNumber(0, v ? s : f * m, _, ((e, c, r) => {\n if (v) {\n n(e);\n } else {\n t(e);\n }\n if (r) {\n i(l);\n y((() => {\n if (l || v || !p) {\n return;\n }\n const t = o();\n const e = t - S;\n const c = e * b;\n const r = s - e;\n const i = c ? r / c : 0;\n const u = i <= 2.2;\n const f = Math.max(1, i || 0);\n const _ = (!i || i > .5) && Math.sign(r) === m;\n if (_) {\n a = animateNumber(e, u ? s : s - c, u ? g * f : p * f, ((t, o, e) => {\n n(t);\n if (e && !u) {\n a = animateNumber(t, s, h, n, easeOutQuad);\n }\n }), u && easeInOutQuad);\n }\n }));\n }\n }), easeInOutQuad);\n return t => {\n l = true;\n if (t) {\n O();\n }\n w();\n a();\n };\n }\n }\n}))();\n\nconst opsStringify = t => JSON.stringify(t, ((t, n) => {\n if (isFunction(n)) {\n throw 0;\n }\n return n;\n}));\n\nconst getPropByPath = (t, n) => t ? `${n}`.split(\".\").reduce(((t, n) => t && hasOwnProperty(t, n) ? t[n] : void 0), t) : void 0;\n\nconst At = [ 0, 33 ];\n\nconst Tt = [ 33, 99 ];\n\nconst kt = [ 222, 666, true ];\n\nconst Mt = {\n paddingAbsolute: false,\n showNativeOverlaidScrollbars: false,\n update: {\n elementEvents: [ [ \"img\", \"load\" ] ],\n debounce: {\n mutation: At,\n resize: null,\n event: Tt,\n env: kt\n },\n attributes: null,\n ignoreMutation: null,\n flowDirectionStyles: null\n },\n overflow: {\n x: \"scroll\",\n y: \"scroll\"\n },\n scrollbars: {\n theme: \"os-theme-dark\",\n visibility: \"auto\",\n autoHide: \"never\",\n autoHideDelay: 1300,\n autoHideSuspend: false,\n dragScroll: true,\n clickScroll: false,\n pointers: [ \"mouse\", \"touch\", \"pen\" ]\n }\n};\n\nconst getOptionsDiff = (t, n) => {\n const o = {};\n const s = concat(keys(n), keys(t));\n each(s, (s => {\n const e = t[s];\n const c = n[s];\n if (isObject(e) && isObject(c)) {\n assignDeep(o[s] = {}, getOptionsDiff(e, c));\n if (isEmptyObject(o[s])) {\n delete o[s];\n }\n } else if (hasOwnProperty(n, s) && c !== e) {\n let t = true;\n if (isArray(e) || isArray(c)) {\n try {\n if (opsStringify(e) === opsStringify(c)) {\n t = false;\n }\n } catch (r) {}\n }\n if (t) {\n o[s] = c;\n }\n }\n }));\n return o;\n};\n\nconst createOptionCheck = (t, n, o) => s => [ getPropByPath(t, s), o || getPropByPath(n, s) !== void 0 ];\n\nlet Rt;\n\nconst getNonce = () => Rt;\n\nconst setNonce = t => {\n Rt = t;\n};\n\nlet Vt;\n\nconst createEnvironment = () => {\n const getNativeScrollbarSize = (t, n, o) => {\n appendChildren(document.body, t);\n appendChildren(document.body, t);\n const s = A(t);\n const e = I(t);\n const c = getFractionalSize(n);\n if (o) {\n removeElements(t);\n }\n return {\n x: e.h - s.h + c.h,\n y: e.w - s.w + c.w\n };\n };\n const getNativeScrollbarsHiding = t => {\n let n = false;\n const o = addClass(t, P);\n try {\n n = getStyles(t, \"scrollbar-width\") === \"none\" || getStyles(t, \"display\", \"::-webkit-scrollbar\") === \"none\";\n } catch (s) {}\n o();\n return n;\n };\n const getFocusableScrollers = t => {\n const getActiveElement = () => t.ownerDocument.activeElement;\n const n = getActiveElement();\n const o = swallowFocusEvents([ t, n ]);\n setStyles(t, {\n visibility: \"visible\"\n });\n focusElement(t);\n const s = getActiveElement() === t;\n setStyles(t, {\n visibility: \"\"\n });\n t.blur();\n if (isHTMLElement(n)) {\n n.focus();\n }\n o();\n return s;\n };\n const t = `.${L}{scroll-behavior:auto!important;position:fixed;opacity:0;visibility:hidden;overflow:scroll;height:200px;width:200px;z-index:-1}.${L} div{width:200%;height:200%;margin:10px 0}.${P}{scrollbar-width:none!important}@supports not (scrollbar-width:none){.${P}::-webkit-scrollbar,.${P}::-webkit-scrollbar-corner{appearance:none!important;display:none!important;width:0!important;height:0!important}}`;\n const o = createDOM(`<div class=\"${L}\"><div></div><style>${t}</style></div>`);\n const s = o[0];\n const e = s.firstChild;\n const c = s.lastChild;\n const r = getNonce();\n if (r) {\n c.nonce = r;\n }\n const [i, , l] = createEventListenerHub();\n const [a, u] = createCache({\n o: getNativeScrollbarSize(s, e),\n i: equalXY\n }, bind(getNativeScrollbarSize, s, e, true));\n const [f] = u();\n const _ = getNativeScrollbarsHiding(s);\n const d = getFocusableScrollers(s);\n const v = {\n x: f.x === 0,\n y: f.y === 0\n };\n const g = {\n elements: {\n host: null,\n padding: !_,\n viewport: t => _ && isBodyElement(t) && t,\n content: false\n },\n scrollbars: {\n slot: true\n },\n cancel: {\n nativeScrollbarsOverlaid: false,\n body: null\n }\n };\n const h = assignDeep({}, Mt);\n const b = bind(assignDeep, {}, h);\n const y = bind(assignDeep, {}, g);\n const w = {\n U: f,\n M: v,\n P: _,\n J: d,\n G: !!p,\n K: bind(i, \"r\"),\n Z: y,\n tt: t => assignDeep(g, t) && y(),\n nt: b,\n ot: t => assignDeep(h, t) && b(),\n st: assignDeep({}, g),\n et: assignDeep({}, h)\n };\n removeAttrs(s, \"style\");\n removeElements(s);\n addEventListener(n, \"resize\", (() => {\n l(\"r\", []);\n }));\n if (isFunction(n.matchMedia) && !_ && (!v.x || !v.y)) {\n const addZoomListener = t => {\n const o = n.matchMedia(`(resolution: ${n.devicePixelRatio}dppx)`);\n addEventListener(o, \"change\", (() => {\n t();\n addZoomListener(t);\n }), {\n A: true\n });\n };\n addZoomListener((() => {\n const [t, n] = a();\n assignDeep(w.U, t);\n l(\"r\", [ n ]);\n }));\n }\n return w;\n};\n\nconst getEnvironment = () => {\n if (!Vt) {\n Vt = createEnvironment();\n }\n return Vt;\n};\n\nconst createEventContentChange = (t, n, o) => {\n let s = false;\n const e = o ? new WeakMap : false;\n const destroy = () => {\n s = true;\n };\n const updateElements = c => {\n if (e && o) {\n const r = o.map((n => {\n const [o, s] = n || [];\n const e = s && o ? (c || find)(o, t) : [];\n return [ e, s ];\n }));\n each(r, (o => each(o[0], (c => {\n const r = o[1];\n const i = e.get(c) || [];\n const l = t.contains(c);\n if (l && r) {\n const t = addEventListener(c, r, (o => {\n if (s) {\n t();\n e.delete(c);\n } else {\n n(o);\n }\n }));\n e.set(c, push(i, t));\n } else {\n runEachAndClear(i);\n e.delete(c);\n }\n }))));\n }\n };\n updateElements();\n return [ destroy, updateElements ];\n};\n\nconst createDOMObserver = (t, n, o, s) => {\n let e = false;\n const {ct: c, rt: r, it: i, lt: l, ut: a, ft: u} = s || {};\n const [_, d] = createEventContentChange(t, (() => e && o(true)), i);\n const p = c || [];\n const v = r || [];\n const g = concat(p, v);\n const observerCallback = (e, c) => {\n if (!isEmptyArray(c)) {\n const r = a || noop;\n const i = u || noop;\n const f = [];\n const _ = [];\n let p = false;\n let g = false;\n each(c, (o => {\n const {attributeName: e, target: c, type: a, oldValue: u, addedNodes: d, removedNodes: h} = o;\n const b = a === \"attributes\";\n const y = a === \"childList\";\n const w = t === c;\n const S = b && e;\n const m = S && getAttr(c, e || \"\");\n const O = isString(m) ? m : null;\n const C = S && u !== O;\n const $ = inArray(v, e) && C;\n if (n && (y || !w)) {\n const n = b && C;\n const a = n && l && is(c, l);\n const _ = a ? !r(c, e, u, O) : !b || n;\n const p = _ && !i(o, !!a, t, s);\n each(d, (t => push(f, t)));\n each(h, (t => push(f, t)));\n g = g || p;\n }\n if (!n && w && C && !r(c, e, u, O)) {\n push(_, e);\n p = p || $;\n }\n }));\n d((t => deduplicateArray(f).reduce(((n, o) => {\n push(n, find(t, o));\n return is(o, t) ? push(n, o) : n;\n }), [])));\n if (n) {\n if (!e && g) {\n o(false);\n }\n return [ false ];\n }\n if (!isEmptyArray(_) || p) {\n const t = [ deduplicateArray(_), p ];\n if (!e) {\n o.apply(0, t);\n }\n return t;\n }\n }\n };\n const h = new f(bind(observerCallback, false));\n return [ () => {\n h.observe(t, {\n attributes: true,\n attributeOldValue: true,\n attributeFilter: g,\n subtree: n,\n childList: n,\n characterData: n\n });\n e = true;\n return () => {\n if (e) {\n _();\n h.disconnect();\n e = false;\n }\n };\n }, () => {\n if (e) {\n return observerCallback(true, h.takeRecords());\n }\n } ];\n};\n\nlet Lt = null;\n\nconst createSizeObserver = (t, n, o) => {\n const {_t: s} = o || {};\n const e = getStaticPluginModuleInstance(xt);\n const [c] = createCache({\n o: false,\n u: true\n });\n return () => {\n const o = [];\n const r = createDOM(`<div class=\"${st}\"><div class=\"${ct}\"></div></div>`);\n const i = r[0];\n const l = i.firstChild;\n const onSizeChangedCallbackProxy = t => {\n const o = isArray(t) && !isEmptyArray(t);\n let s = false;\n let e = false;\n if (o) {\n const n = t[0];\n const [o, , r] = c(n.contentRect);\n const i = domRectHasDimensions(o);\n e = domRectAppeared(o, r);\n s = !e && !i;\n } else {\n e = t === true;\n }\n if (!s) {\n n({\n dt: true,\n _t: e\n });\n }\n };\n if (d) {\n if (!isBoolean(Lt)) {\n const n = new d(noop);\n n.observe(t, {\n get box() {\n Lt = true;\n }\n });\n Lt = Lt || false;\n n.disconnect();\n }\n const n = debounce(onSizeChangedCallbackProxy, {\n p: 0,\n v: 0\n });\n const resizeObserverCallback = t => n(t);\n const s = new d(resizeObserverCallback);\n s.observe(Lt ? t : l);\n push(o, [ () => {\n s.disconnect();\n }, !Lt && appendChildren(t, i) ]);\n if (Lt) {\n const n = new d(resizeObserverCallback);\n n.observe(t, {\n box: \"border-box\"\n });\n push(o, (() => n.disconnect()));\n }\n } else if (e) {\n const [n, c] = e(l, onSizeChangedCallbackProxy, s);\n push(o, concat([ addClass(i, et), addEventListener(i, \"animationstart\", n), appendChildren(t, i) ], c));\n } else {\n return noop;\n }\n return bind(runEachAndClear, o);\n };\n};\n\nconst createTrinsicObserver = (t, n) => {\n let o;\n const isHeightIntrinsic = t => t.h === 0 || t.isIntersecting || t.intersectionRatio > 0;\n const s = createDiv(at);\n const [e] = createCache({\n o: false\n });\n const triggerOnTrinsicChangedCallback = (t, o) => {\n if (t) {\n const s = e(isHeightIntrinsic(t));\n const [, c] = s;\n return c && !o && n(s) && [ s ];\n }\n };\n const intersectionObserverCallback = (t, n) => triggerOnTrinsicChangedCallback(n.pop(), t);\n return [ () => {\n const n = [];\n if (_) {\n o = new _(bind(intersectionObserverCallback, false), {\n root: t\n });\n o.observe(s);\n push(n, (() => {\n o.disconnect();\n }));\n } else {\n const onSizeChanged = () => {\n const t = I(s);\n triggerOnTrinsicChangedCallback(t);\n };\n push(n, createSizeObserver(s, onSizeChanged)());\n onSizeChanged();\n }\n return bind(runEachAndClear, push(n, appendChildren(t, s)));\n }, () => o && intersectionObserverCallback(true, o.takeRecords()) ];\n};\n\nconst createObserversSetup = (t, n, o, s) => {\n let e;\n let c;\n let r;\n let i;\n let l;\n let a;\n let u;\n let f;\n const _ = `[${B}]`;\n const p = `[${j}]`;\n const v = [ \"id\", \"class\", \"style\", \"open\", \"wrap\", \"cols\", \"rows\" ];\n const {vt: g, gt: h, L: b, ht: y, bt: w, V: S, yt: m, wt: O, St: C, Ot: $} = t;\n const getDirectionIsRTL = t => getStyles(t, \"direction\") === \"rtl\";\n const createDebouncedObservesUpdate = () => {\n let t;\n let n;\n let o;\n const e = debounce(s, {\n p: () => t,\n v: () => n,\n S: () => o,\n m(t, n) {\n const [o] = t;\n const [s] = n;\n return [ concat(keys(o), keys(s)).reduce(((t, n) => {\n t[n] = o[n] || s[n];\n return t;\n }), {}) ];\n }\n });\n const fn = (s, c) => {\n if (isArray(c)) {\n const [s, e, r] = c;\n t = s;\n n = e;\n o = r;\n } else if (isNumber(c)) {\n t = c;\n n = false;\n o = false;\n } else {\n t = false;\n n = false;\n o = false;\n }\n e(s);\n };\n fn.O = e.O;\n return fn;\n };\n const x = {\n Ct: false,\n B: getDirectionIsRTL(g)\n };\n const H = getEnvironment();\n const E = getStaticPluginModuleInstance(Et);\n const [D] = createCache({\n i: equalWH,\n o: {\n w: 0,\n h: 0\n }\n }, (() => {\n const s = E && E.R(t, n, x, H, o).Y;\n const e = m && S;\n const c = !e && hasAttrClass(h, B, N);\n const r = !S && O(W);\n const i = r && getElementScroll(y);\n const l = i && $();\n const a = C(J, c);\n const u = r && s && s();\n const f = T(b);\n const _ = getFractionalSize(b);\n if (u) {\n u();\n }\n scrollElementTo(y, i);\n if (l) {\n l();\n }\n if (c) {\n a();\n }\n return {\n w: f.w + _.w,\n h: f.h + _.h\n };\n }));\n const z = createDebouncedObservesUpdate();\n const setDirection = t => {\n const n = getDirectionIsRTL(g);\n assignDeep(t, {\n $t: f !== n\n });\n assignDeep(x, {\n B: n\n });\n f = n;\n };\n const onTrinsicChanged = (t, n) => {\n const [o, e] = t;\n const c = {\n xt: e\n };\n assignDeep(x, {\n Ct: o\n });\n if (!n) {\n s(c);\n }\n return c;\n };\n const onSizeChanged = ({dt: t, _t: n}) => {\n const o = n ? s : z;\n const e = {\n dt: t || n,\n _t: n\n };\n setDirection(e);\n o(e, c);\n };\n const onContentMutation = (t, n) => {\n const [, o] = D();\n const s = {\n Ht: o\n };\n setDirection(s);\n if (o && !n) {\n z(s, t ? r : e);\n }\n return s;\n };\n const onHostMutation = (t, n, o) => {\n const s = {\n Et: n\n };\n setDirection(s);\n if (n && !o) {\n z(s, e);\n }\n return s;\n };\n const [I, A] = w ? createTrinsicObserver(h, onTrinsicChanged) : [];\n const k = !S && createSizeObserver(h, onSizeChanged, {\n _t: true\n });\n const [M, R] = createDOMObserver(h, false, onHostMutation, {\n rt: v,\n ct: v\n });\n const V = S && d && new d((t => {\n const n = t[t.length - 1].contentRect;\n onSizeChanged({\n dt: true,\n _t: domRectAppeared(n, u)\n });\n u = n;\n }));\n return [ () => {\n if (V) {\n V.observe(h);\n }\n const t = k && k();\n const n = I && I();\n const o = M();\n const s = H.K((t => {\n const [, n] = D();\n z({\n Dt: t,\n Ht: n,\n dt: m\n }, i);\n }));\n return () => {\n if (V) {\n V.disconnect();\n }\n if (t) {\n t();\n }\n if (n) {\n n();\n }\n if (a) {\n a();\n }\n o();\n s();\n };\n }, ({zt: t, It: n, At: o}) => {\n const s = {};\n const [u] = t(\"update.ignoreMutation\");\n const [f, d] = t(\"update.attributes\");\n const [g, h] = t(\"update.elementEvents\");\n const [y, m] = t(\"update.debounce\");\n const O = h || d;\n const C = n || o;\n const ignoreMutationFromOptions = t => isFunction(u) && !!u(t);\n if (O) {\n if (l) {\n l();\n }\n if (a) {\n a();\n }\n const [t, n] = createDOMObserver(w || b, true, onContentMutation, {\n ct: concat(v, f || []),\n it: g,\n lt: _,\n ft: (t, n) => {\n const {target: o, attributeName: s} = t;\n const e = !n && s && !S ? liesBetween(o, _, p) : false;\n return e || !!closest(o, `.${ft}`) || ignoreMutationFromOptions(t);\n }\n });\n a = t();\n l = n;\n }\n if (m) {\n z.O();\n if (isArray(y) || isNumber(y)) {\n e = y;\n c = false;\n r = Tt;\n i = kt;\n } else if (isPlainObject(y)) {\n e = y.mutation;\n c = y.resize;\n r = y.event;\n i = y.env;\n } else {\n e = false;\n c = false;\n r = false;\n i = false;\n }\n }\n if (C) {\n const t = R();\n const n = A && A();\n const o = l && l();\n if (t) {\n assignDeep(s, onHostMutation(t[0], t[1], C));\n }\n if (n) {\n assignDeep(s, onTrinsicChanged(n[0], C));\n }\n if (o) {\n assignDeep(s, onContentMutation(o[0], C));\n }\n }\n setDirection(s);\n return s;\n }, x ];\n};\n\nconst resolveInitialization = (t, n) => isFunction(n) ? n.apply(0, t) : n;\n\nconst staticInitializationElement = (t, n, o, s) => {\n const e = isUndefined(s) ? o : s;\n const c = resolveInitialization(t, e);\n return c || n.apply(0, t);\n};\n\nconst dynamicInitializationElement = (t, n, o, s) => {\n const e = isUndefined(s) ? o : s;\n const c = resolveInitialization(t, e);\n return !!c && (isHTMLElement(c) ? c : n.apply(0, t));\n};\n\nconst cancelInitialization = (t, n) => {\n const {nativeScrollbarsOverlaid: o, body: s} = n || {};\n const {M: e, P: c, Z: r} = getEnvironment();\n const {nativeScrollbarsOverlaid: i, body: l} = r().cancel;\n const a = o != null ? o : i;\n const u = isUndefined(s) ? l : s;\n const f = (e.x || e.y) && a;\n const _ = t && (isNull(u) ? !c : u);\n return !!f || !!_;\n};\n\nconst createScrollbarsSetupElements = (t, n, o, s) => {\n const e = \"--os-viewport-percent\";\n const c = \"--os-scroll-percent\";\n const r = \"--os-scroll-direction\";\n const {Z: i} = getEnvironment();\n const {scrollbars: l} = i();\n const {slot: a} = l;\n const {vt: u, gt: f, L: _, Tt: d, ht: v, yt: g, V: h} = n;\n const {scrollbars: b} = d ? {} : t;\n const {slot: y} = b || {};\n const w = [];\n const S = [];\n const m = [];\n const O = dynamicInitializationElement([ u, f, _ ], (() => h && g ? u : f), a, y);\n const initScrollTimeline = t => {\n if (p) {\n let n = null;\n let s = [];\n const e = new p({\n source: v,\n axis: t\n });\n const cancelAnimation = () => {\n if (n) {\n n.cancel();\n }\n n = null;\n };\n const _setScrollPercentAnimation = c => {\n const {kt: r} = o;\n const i = isDefaultDirectionScrollCoordinates(r)[t];\n const l = t === \"x\";\n const a = [ getTrasformTranslateValue(0, l), getTrasformTranslateValue(`calc(-100% + 100cq${l ? \"w\" : \"h\"})`, l) ];\n const u = i ? a : a.reverse();\n if (s[0] === u[0] && s[1] === u[1]) {\n return cancelAnimation;\n }\n s = u;\n cancelAnimation();\n n = c.Mt.animate({\n transform: u\n }, {\n timeline: e,\n fill: \"both\"\n });\n return cancelAnimation;\n };\n return {\n Rt: _setScrollPercentAnimation\n };\n }\n };\n const C = {\n x: initScrollTimeline(\"x\"),\n y: initScrollTimeline(\"y\")\n };\n const getViewportPercent = () => {\n const {Vt: t, Lt: n} = o;\n const getAxisValue = (t, n) => capNumber(0, 1, t / (t + n) || 0);\n return {\n x: getAxisValue(n.x, t.x),\n y: getAxisValue(n.y, t.y)\n };\n };\n const scrollbarStructureAddRemoveClass = (t, n, o) => {\n const s = o ? addClass : removeClass;\n each(t, (t => {\n s(t.Pt, n);\n }));\n };\n const scrollbarStyle = (t, n) => {\n each(t, (t => {\n const [o, s] = n(t);\n setStyles(o, s);\n }));\n };\n const scrollbarsAddRemoveClass = (t, n, o) => {\n const s = isBoolean(o);\n const e = s ? o : true;\n const c = s ? !o : true;\n if (e) {\n scrollbarStructureAddRemoveClass(S, t, n);\n }\n if (c) {\n scrollbarStructureAddRemoveClass(m, t, n);\n }\n };\n const refreshScrollbarsHandleLength = () => {\n const t = getViewportPercent();\n const createScrollbarStyleFn = t => n => [ n.Pt, {\n [e]: roundCssNumber(t) + \"\"\n } ];\n scrollbarStyle(S, createScrollbarStyleFn(t.x));\n scrollbarStyle(m, createScrollbarStyleFn(t.y));\n };\n const refreshScrollbarsHandleOffset = () => {\n if (!p) {\n const {kt: t} = o;\n const n = getScrollCoordinatesPercent(t, getElementScroll(v));\n const createScrollbarStyleFn = t => n => [ n.Pt, {\n [c]: roundCssNumber(t) + \"\"\n } ];\n scrollbarStyle(S, createScrollbarStyleFn(n.x));\n scrollbarStyle(m, createScrollbarStyleFn(n.y));\n }\n };\n const refreshScrollbarsScrollCoordinates = () => {\n const {kt: t} = o;\n const n = isDefaultDirectionScrollCoordinates(t);\n const createScrollbarStyleFn = t => n => [ n.Pt, {\n [r]: t ? \"0\" : \"1\"\n } ];\n scrollbarStyle(S, createScrollbarStyleFn(n.x));\n scrollbarStyle(m, createScrollbarStyleFn(n.y));\n if (p) {\n S.forEach(C.x.Rt);\n m.forEach(C.y.Rt);\n }\n };\n const refreshScrollbarsScrollbarOffset = () => {\n if (h && !g) {\n const {Vt: t, kt: n} = o;\n const s = isDefaultDirectionScrollCoordinates(n);\n const e = getScrollCoordinatesPercent(n, getElementScroll(v));\n const styleScrollbarPosition = n => {\n const {Pt: o} = n;\n const c = parent(o) === _ && o;\n const getTranslateValue = (t, n, o) => {\n const s = n * t;\n return numberToCssPx(o ? s : -s);\n };\n return [ c, c && {\n transform: getTrasformTranslateValue({\n x: getTranslateValue(e.x, t.x, s.x),\n y: getTranslateValue(e.y, t.y, s.y)\n })\n } ];\n };\n scrollbarStyle(S, styleScrollbarPosition);\n scrollbarStyle(m, styleScrollbarPosition);\n }\n };\n const generateScrollbarDOM = t => {\n const n = t ? \"x\" : \"y\";\n const o = t ? dt : pt;\n const e = createDiv(`${ft} ${o}`);\n const c = createDiv(vt);\n const r = createDiv(gt);\n const i = {\n Pt: e,\n Ut: c,\n Mt: r\n };\n const l = C[n];\n push(t ? S : m, i);\n push(w, [ appendChildren(e, c), appendChildren(c, r), bind(removeElements, e), l && l.Rt(i), s(i, scrollbarsAddRemoveClass, t) ]);\n return i;\n };\n const $ = bind(generateScrollbarDOM, true);\n const x = bind(generateScrollbarDOM, false);\n const appendElements = () => {\n appendChildren(O, S[0].Pt);\n appendChildren(O, m[0].Pt);\n return bind(runEachAndClear, w);\n };\n $();\n x();\n return [ {\n Nt: refreshScrollbarsHandleLength,\n qt: refreshScrollbarsHandleOffset,\n Bt: refreshScrollbarsScrollCoordinates,\n Ft: refreshScrollbarsScrollbarOffset,\n jt: scrollbarsAddRemoveClass,\n Xt: {\n Yt: S,\n Wt: $,\n Jt: bind(scrollbarStyle, S)\n },\n Gt: {\n Yt: m,\n Wt: x,\n Jt: bind(scrollbarStyle, m)\n }\n }, appendElements ];\n};\n\nconst createScrollbarsSetupEvents = (t, n, o, s, r) => (i, l, u) => {\n const {gt: f, L: _, V: d, ht: p, Kt: v, Ot: g} = n;\n const {Pt: h, Ut: b, Mt: y} = i;\n const [w, S] = selfClearTimeout(333);\n const [m, O] = selfClearTimeout(444);\n const scrollOffsetElementScrollBy = t => {\n if (isFunction(p.scrollBy)) {\n p.scrollBy({\n behavior: \"smooth\",\n left: t.x,\n top: t.y\n });\n }\n };\n const createInteractiveScrollEvents = () => {\n const n = \"pointerup pointercancel lostpointercapture\";\n const r = `client${u ? \"X\" : \"Y\"}`;\n const i = u ? C : $;\n const l = u ? \"left\" : \"top\";\n const a = u ? \"w\" : \"h\";\n const f = u ? \"x\" : \"y\";\n const _ = [];\n return addEventListener(b, \"pointerdown\", s((s => {\n const d = closest(s.target, `.${gt}`) === y;\n const h = d ? y : b;\n const w = t.scrollbars;\n const S = w[d ? \"dragScroll\" : \"clickScroll\"];\n const {button: C, isPrimary: $, pointerType: x} = s;\n const {pointers: H} = w;\n const E = C === 0 && $ && S && (H || []).includes(x);\n if (E) {\n runEachAndClear(_);\n O();\n const t = !d && (s.shiftKey || S === \"instant\");\n const w = bind(getBoundingClientRect, y);\n const C = bind(getBoundingClientRect, b);\n const getHandleOffset = (t, n) => (t || w())[l] - (n || C())[l];\n const $ = e(getBoundingClientRect(p)[i]) / I(p)[a] || 1;\n const x = getElementScroll(p)[f];\n const scrollRelative = t => {\n scrollElementTo(p, {\n [f]: x + t\n });\n };\n const moveHandleRelative = t => {\n const {Vt: n} = o;\n const s = I(b)[a] - I(y)[a];\n const e = 1 / $ * t / s;\n scrollRelative(e * n[f]);\n };\n const H = s[r];\n const E = w();\n const D = C();\n const z = E[i];\n const A = getHandleOffset(E, D) + z / 2;\n const T = H - D[l];\n const k = T - A;\n const M = d ? 0 : k;\n const releasePointerCapture = t => {\n runEachAndClear(L);\n h.releasePointerCapture(t.pointerId);\n };\n const R = d || t;\n const V = g();\n const L = [ addEventListener(v, n, releasePointerCapture), addEventListener(v, \"selectstart\", (t => preventDefault(t)), {\n D: false\n }), addEventListener(b, n, releasePointerCapture), R && addEventListener(b, \"pointermove\", (t => moveHandleRelative(M + t[r] - H))), R && (() => {\n const t = getElementScroll(p);\n V();\n const n = getElementScroll(p);\n const o = {\n x: n.x - t.x,\n y: n.y - t.y\n };\n if (c(o.x) > 3 || c(o.y) > 3) {\n g();\n scrollElementTo(p, t);\n scrollOffsetElementScrollBy(o);\n m(V);\n }\n }) ];\n h.setPointerCapture(s.pointerId);\n if (t) {\n moveHandleRelative(k);\n } else if (!d) {\n const t = getStaticPluginModuleInstance(zt);\n if (t) {\n const {Lt: n} = o;\n const s = t(scrollRelative, moveHandleRelative, bind(getHandleOffset), k, n[f], S, !!u, (t => {\n if (t) {\n V();\n } else {\n push(L, V);\n }\n }));\n push(L, s);\n push(_, bind(s, true));\n }\n }\n }\n })));\n };\n let x = true;\n return bind(runEachAndClear, [ addEventListener(y, \"pointermove pointerleave\", s(r)), addEventListener(h, \"pointerenter\", s((() => {\n l(yt, true);\n }))), addEventListener(h, \"pointerleave pointercancel\", s((() => {\n l(yt, false);\n }))), addEventListener(h, \"wheel\", s((t => {\n const {deltaX: n, deltaY: o, deltaMode: s} = t;\n if (x && s === 0 && parent(h) === f) {\n scrollOffsetElementScrollBy({\n x: n,\n y: o\n });\n }\n x = false;\n l(Ot, true);\n w((() => {\n x = true;\n l(Ot);\n }));\n preventDefault(t);\n })), {\n D: false,\n I: true\n }), !d && addEventListener(h, \"mousedown\", s((() => {\n const t = getFocusedElement();\n if (hasAttr(t, j) || hasAttr(t, B) || t === document.body) {\n a(bind(focusElement, _), 25);\n }\n }))), addEventListener(h, \"pointerdown\", (() => {\n const t = addEventListener(v, \"click\", (t => {\n n();\n stopAndPrevent(t);\n }), {\n A: true,\n I: true,\n D: false\n });\n const n = addEventListener(v, \"pointerup pointercancel\", (() => {\n n();\n setTimeout(t, 150);\n }), {\n I: true,\n D: true\n });\n }), {\n I: true,\n D: true\n }), createInteractiveScrollEvents(), S, O ]);\n};\n\nconst createScrollbarsSetup = (t, n, o, s, e, c, r) => {\n let i;\n let l;\n let a;\n let u;\n let f;\n let _ = noop;\n let d = 0;\n const p = [ \"mouse\", \"pen\" ];\n const skipEventIfSleeping = t => n => {\n if (!o.Qt) {\n t(n);\n }\n };\n const isHoverablePointerType = t => p.includes(t.pointerType);\n const [v, g] = selfClearTimeout();\n const [h, b] = selfClearTimeout(100);\n const [y, w] = selfClearTimeout(50);\n const [S, m] = selfClearTimeout((() => d));\n const [O, C] = createScrollbarsSetupElements(t, c, e, createScrollbarsSetupEvents(n, c, e, skipEventIfSleeping, (t => isHoverablePointerType(t) && manageScrollbarsAutoHideInstantInteraction())));\n const {gt: $, Zt: H, yt: D} = c;\n const {jt: z, Nt: I, qt: A, Bt: T, Ft: k} = O;\n const manageScrollbarsAutoHide = (t, n) => {\n m();\n const hide = t => {\n if (o.Qt) {\n return;\n }\n z(mt, t);\n };\n if (t) {\n hide();\n } else {\n const t = a ? !i : true;\n if (d > 0 && !n) {\n S(bind(hide, t));\n } else {\n hide(t);\n }\n }\n };\n const manageScrollbarsAutoHideInstantInteraction = () => {\n if (a ? !i : !u) {\n manageScrollbarsAutoHide(true);\n h((() => {\n manageScrollbarsAutoHide(false);\n }));\n }\n };\n const onHostMouseEnter = t => {\n if (isHoverablePointerType(t)) {\n i = true;\n if (!o.Qt && a) {\n manageScrollbarsAutoHide(true);\n }\n }\n };\n const onHostMouseLeave = t => {\n if (isHoverablePointerType(t)) {\n i = false;\n if (!o.Qt && a) {\n manageScrollbarsAutoHide(false);\n }\n }\n };\n const manageAutoHideSuspension = t => {\n z(St, t, true);\n z(St, t, false);\n };\n const M = [ m, b, w, g, () => _(), addEventListener($, \"pointerover\", onHostMouseEnter, {\n A: true\n }), addEventListener($, \"pointerenter\", onHostMouseEnter), addEventListener($, \"pointerleave\", onHostMouseLeave), addEventListener($, \"pointermove\", skipEventIfSleeping((t => {\n if (isHoverablePointerType(t) && l) {\n manageScrollbarsAutoHideInstantInteraction();\n }\n }))), addEventListener(H, \"scroll\", skipEventIfSleeping((t => {\n v((() => {\n A();\n manageScrollbarsAutoHideInstantInteraction();\n }));\n r(t);\n k();\n }))) ];\n const R = getStaticPluginModuleInstance(Et);\n return [ () => bind(runEachAndClear, push(M, C())), ({zt: t, At: n, tn: o, nn: c}) => {\n const {sn: r, en: i, cn: p, rn: v} = c || {};\n const {$t: g, _t: h} = o || {};\n const {B: b} = s;\n const {M: w, P: S} = getEnvironment();\n const {ln: m, j: O} = e;\n const [C, $] = t(\"showNativeOverlaidScrollbars\");\n const [M, V] = t(\"scrollbars.theme\");\n const [L, P] = t(\"scrollbars.visibility\");\n const [U, N] = t(\"scrollbars.autoHide\");\n const [q, B] = t(\"scrollbars.autoHideSuspend\");\n const [F] = t(\"scrollbars.autoHideDelay\");\n const [j, X] = t(\"scrollbars.dragScroll\");\n const [Y, W] = t(\"scrollbars.clickScroll\");\n const [J, G] = t(\"overflow\");\n const K = h && !n;\n const Q = r || i || v || g || n;\n const Z = p || P || G;\n const tt = C && w.x && w.y;\n const nt = !S && !R;\n const ot = tt || nt;\n const setScrollbarVisibility = (t, n, o) => {\n const s = t.includes(E) && (L === x || L === \"auto\" && n === E);\n z(ht, s, o);\n return s;\n };\n d = F;\n if ($ || nt) {\n z(ut, ot);\n }\n if (V) {\n z(f);\n z(M, true);\n f = M;\n }\n if (B || K) {\n manageAutoHideSuspension(!q);\n if (K && q) {\n if (O.x || O.y) {\n _();\n y((() => {\n _ = addEventListener(H, E, skipEventIfSleeping(bind(manageAutoHideSuspension, true)), {\n A: true\n });\n }));\n } else {\n manageAutoHideSuspension(true);\n }\n }\n }\n if (N) {\n l = U === \"move\";\n a = U === \"leave\";\n u = U === \"never\";\n manageScrollbarsAutoHide(u, true);\n }\n if (X) {\n z($t, j);\n }\n if (W) {\n z(Ct, !!Y);\n }\n if (Z) {\n const t = setScrollbarVisibility(J.x, m.x, true);\n const n = setScrollbarVisibility(J.y, m.y, false);\n const o = t && n;\n z(bt, !o);\n }\n if (Q) {\n A();\n I();\n k();\n if (v) {\n T();\n }\n z(wt, !O.x, true);\n z(wt, !O.y, false);\n z(_t, b && !D);\n }\n }, {}, O ];\n};\n\nconst createStructureSetupElements = t => {\n const o = getEnvironment();\n const {Z: s, J: e, P: c} = o;\n const {elements: r} = s();\n const {padding: i, viewport: l, content: a} = r;\n const u = isHTMLElement(t);\n const f = u ? {} : t;\n const {elements: _} = f;\n const {padding: d, viewport: p, content: v} = _ || {};\n const g = u ? t : f.target;\n const h = isBodyElement(g);\n const b = g.ownerDocument;\n const y = b.documentElement;\n const getDocumentWindow = () => b.defaultView || n;\n const w = bind(staticInitializationElement, [ g ]);\n const S = bind(dynamicInitializationElement, [ g ]);\n const C = bind(createDiv, \"\");\n const $ = bind(w, C, l);\n const x = bind(S, C, a);\n const elementHasOverflow = t => {\n const n = I(t);\n const o = T(t);\n const s = getStyles(t, m);\n const e = getStyles(t, O);\n return o.w - n.w > 0 && !overflowIsVisible(s) || o.h - n.h > 0 && !overflowIsVisible(e);\n };\n const H = $(p);\n const E = H === g;\n const D = E && h;\n const z = !E && x(v);\n const A = !E && H === z;\n const k = D ? y : H;\n const M = D ? k : g;\n const R = !E && S(C, i, d);\n const V = !A && z;\n const L = [ V, k, R, M ].map((t => isHTMLElement(t) && !parent(t) && t));\n const elementIsGenerated = t => t && inArray(L, t);\n const P = !elementIsGenerated(k) && elementHasOverflow(k) ? k : g;\n const N = D ? y : k;\n const X = D ? b : k;\n const Y = {\n vt: g,\n gt: M,\n L: k,\n an: R,\n bt: V,\n ht: N,\n Zt: X,\n un: h ? y : P,\n Kt: b,\n yt: h,\n Tt: u,\n V: E,\n fn: getDocumentWindow,\n wt: t => hasAttrClass(k, j, t),\n St: (t, n) => addRemoveAttrClass(k, j, t, n),\n Ot: () => addRemoveAttrClass(N, j, G, true)\n };\n const {vt: W, gt: J, an: Q, L: Z, bt: tt} = Y;\n const st = [ tt, Z, Q, J, W ];\n const et = [ () => {\n removeAttrs(J, [ B, U ]);\n removeAttrs(W, U);\n if (h) {\n removeAttrs(y, [ U, B ]);\n }\n } ];\n let ct = contents(st.find((t => t && !elementIsGenerated(t))));\n const rt = D ? W : tt || Z;\n const it = bind(runEachAndClear, et);\n const appendElements = () => {\n const t = getDocumentWindow();\n const n = getFocusedElement();\n const unwrap = t => {\n appendChildren(parent(t), contents(t));\n removeElements(t);\n };\n const o = \"tabindex\";\n const s = getAttr(Z, o);\n const r = swallowFocusEvents(concat(st, [ n ]));\n setAttrs(J, B, E ? \"\" : F);\n setAttrs(Q, nt, \"\");\n setAttrs(Z, j, \"\");\n setAttrs(tt, ot, \"\");\n if (!E) {\n if (s || !e) {\n setAttrs(Z, o, s || \"-1\");\n }\n if (h) {\n setAttrs(y, q, \"\");\n }\n }\n appendChildren(rt, ct);\n appendChildren(J, Q);\n appendChildren(Q || J, !E && Z);\n appendChildren(Z, tt);\n push(et, [ r, () => {\n const t = getFocusedElement();\n const n = elementIsGenerated(Z);\n const e = n && t === Z ? W : t;\n const c = swallowFocusEvents(concat(st, [ e ]));\n removeAttrs(Q, nt);\n removeAttrs(tt, ot);\n removeAttrs(Z, j);\n if (h) {\n removeAttrs(y, q);\n }\n if (s) {\n setAttrs(Z, o, s);\n } else {\n removeAttrs(Z, o);\n }\n if (elementIsGenerated(tt)) {\n unwrap(tt);\n }\n if (n) {\n unwrap(Z);\n }\n if (elementIsGenerated(Q)) {\n unwrap(Q);\n }\n focusElement(e);\n c();\n } ]);\n if (c && !E) {\n addAttrClass(Z, j, K);\n push(et, bind(removeAttrs, Z, j));\n }\n focusElement(!E && h && n === W && t.top === t ? Z : n);\n r();\n ct = 0;\n return it;\n };\n return [ Y, appendElements, it ];\n};\n\nconst createTrinsicUpdateSegment = ({bt: t}) => ({tn: n, _n: o, At: s}) => {\n const {xt: e} = n || {};\n const {Ct: c} = o;\n const r = t && (e || s);\n if (r) {\n setStyles(t, {\n [$]: c && \"100%\"\n });\n }\n};\n\nconst createPaddingUpdateSegment = ({gt: t, an: n, L: o, V: s}, e) => {\n const [c, r] = createCache({\n i: equalTRBL,\n o: topRightBottomLeft()\n }, bind(topRightBottomLeft, t, \"padding\", \"\"));\n return ({zt: t, tn: i, _n: l, At: a}) => {\n let [u, f] = r(a);\n const {P: _} = getEnvironment();\n const {dt: d, Ht: p, $t: m} = i || {};\n const {B: O} = l;\n const [$, x] = t(\"paddingAbsolute\");\n const H = a || p;\n if (d || f || H) {\n [u, f] = c(a);\n }\n const E = !s && (x || m || f);\n if (E) {\n const t = !$ || !n && !_;\n const s = u.r + u.l;\n const c = u.t + u.b;\n const r = {\n [w]: t && !O ? -s : 0,\n [S]: t ? -c : 0,\n [y]: t && O ? -s : 0,\n top: t ? -u.t : 0,\n right: t ? O ? -u.r : \"auto\" : 0,\n left: t ? O ? \"auto\" : -u.l : 0,\n [C]: t && `calc(100% + ${s}px)`\n };\n const i = {\n [v]: t ? u.t : 0,\n [g]: t ? u.r : 0,\n [b]: t ? u.b : 0,\n [h]: t ? u.l : 0\n };\n setStyles(n || o, r);\n setStyles(o, i);\n assignDeep(e, {\n an: u,\n dn: !t,\n F: n ? i : assignDeep({}, r, i)\n });\n }\n return {\n pn: E\n };\n };\n};\n\nconst createOverflowUpdateSegment = (t, s) => {\n const e = getEnvironment();\n const {gt: r, an: i, L: a, V: u, Zt: f, ht: _, yt: d, St: p, fn: v} = t;\n const {P: g} = e;\n const h = d && u;\n const b = bind(o, 0);\n const y = {\n display: () => false,\n direction: t => t !== \"ltr\",\n flexDirection: t => t.endsWith(\"-reverse\"),\n writingMode: t => t !== \"horizontal-tb\"\n };\n const w = keys(y);\n const S = {\n i: equalWH,\n o: {\n w: 0,\n h: 0\n }\n };\n const m = {\n i: equalXY,\n o: {}\n };\n const setMeasuringMode = t => {\n p(J, !h && t);\n };\n const getFlowDirectionStyles = () => getStyles(a, w);\n const getMeasuredScrollCoordinates = (t, n) => {\n const o = !keys(t).length;\n const s = n ? true : w.some((n => {\n const o = t[n];\n return isString(o) && y[n](o);\n }));\n if (o || !s || !hasDimensions(a)) {\n return {\n T: {\n x: 0,\n y: 0\n },\n k: {\n x: 1,\n y: 1\n }\n };\n }\n setMeasuringMode(true);\n const e = getElementScroll(_);\n const r = addEventListener(f, E, (t => {\n const n = getElementScroll(_);\n if (t.isTrusted && n.x === e.x && n.y === e.y) {\n stopPropagation(t);\n }\n }), {\n I: true,\n A: true\n });\n const i = p(Q, true);\n scrollElementTo(_, {\n x: 0,\n y: 0\n });\n const u = p(tt, true);\n const d = getElementScroll(_);\n const v = T(_);\n scrollElementTo(_, {\n x: v.w,\n y: v.h\n });\n const g = getElementScroll(_);\n const h = {\n x: g.x - d.x,\n y: g.y - d.y\n };\n scrollElementTo(_, {\n x: -v.w,\n y: -v.h\n });\n const b = getElementScroll(_);\n const S = {\n x: b.x - d.x,\n y: b.y - d.y\n };\n const m = {\n x: c(h.x) >= c(S.x) ? g.x : b.x,\n y: c(h.y) >= c(S.y) ? g.y : b.y\n };\n i();\n u();\n scrollElementTo(_, e);\n l((() => r()));\n return {\n T: d,\n k: m\n };\n };\n const getOverflowAmount = (t, o) => {\n const s = n.devicePixelRatio % 1 !== 0 ? 1 : 0;\n const e = {\n w: b(t.w - o.w),\n h: b(t.h - o.h)\n };\n return {\n w: e.w > s ? e.w : 0,\n h: e.h > s ? e.h : 0\n };\n };\n const getViewportOverflowStyle = (t, n) => {\n const getAxisOverflowStyle = (t, n, o, s) => {\n const e = t === x ? H : overflowBehaviorToOverflowStyle(t);\n const c = overflowIsVisible(t);\n const r = overflowIsVisible(o);\n if (!n && !s) {\n return H;\n }\n if (c && r) {\n return x;\n }\n if (c) {\n const t = n ? x : H;\n return n && s ? e : t;\n }\n const i = r && s ? x : H;\n return n ? e : i;\n };\n return {\n x: getAxisOverflowStyle(n.x, t.x, n.y, t.y),\n y: getAxisOverflowStyle(n.y, t.y, n.x, t.x)\n };\n };\n const setViewportOverflowStyle = t => {\n const createAllOverflowStyleClassNames = t => [ x, H, E ].map((n => createViewportOverflowStyleClassName(overflowCssValueToOverflowStyle(n), t)));\n const n = createAllOverflowStyleClassNames(true).concat(createAllOverflowStyleClassNames()).join(\" \");\n p(n);\n p(keys(t).map((n => createViewportOverflowStyleClassName(t[n], n === \"x\"))).join(\" \"), true);\n };\n const [O, C] = createCache(S, bind(getFractionalSize, a));\n const [$, D] = createCache(S, bind(T, a));\n const [z, I] = createCache(S);\n const [k] = createCache(m);\n const [M, R] = createCache(S);\n const [V] = createCache(m);\n const [L] = createCache({\n i: (t, n) => equal(t, n, deduplicateArray(concat(keys(t), keys(n)))),\n o: {}\n });\n const [P, U] = createCache({\n i: (t, n) => equalXY(t.T, n.T) && equalXY(t.k, n.k),\n o: getZeroScrollCoordinates()\n });\n const q = getStaticPluginModuleInstance(Et);\n return ({zt: n, tn: o, _n: c, At: l}, {pn: f}) => {\n const {dt: _, Et: d, Ht: y, $t: w, _t: S, Dt: m} = o || {};\n const x = q && q.R(t, s, c, e, n);\n const {X: H, Y: E, W: T} = x || {};\n const [F, j] = getShowNativeOverlaidScrollbars(n, e);\n const [X, Y] = n(\"overflow\");\n const W = overflowIsVisible(X.x);\n const J = overflowIsVisible(X.y);\n const G = _ || f || y || w || m || j;\n let Q = C(l);\n let tt = D(l);\n let ot = I(l);\n let st = R(l);\n if (j && g) {\n p(K, !F);\n }\n if (G) {\n if (hasAttrClass(r, B, N)) {\n setMeasuringMode(true);\n }\n const t = u ? p(Z, true) : noop;\n const n = E && E();\n const [o] = Q = O(l);\n const [s] = tt = $(l);\n const e = A(a);\n const c = h && getWindowSize(v());\n const i = {\n w: b(s.w + o.w),\n h: b(s.h + o.h)\n };\n const f = {\n w: b((c ? c.w : e.w + b(e.w - s.w)) + o.w),\n h: b((c ? c.h : e.h + b(e.h - s.h)) + o.h)\n };\n t();\n if (n) {\n n();\n }\n st = M(f);\n ot = z(getOverflowAmount(i, f), l);\n }\n const [et, ct] = st;\n const [rt, it] = ot;\n const [lt, at] = tt;\n const [ut, ft] = Q;\n const [_t] = k({\n x: rt.w > 0,\n y: rt.h > 0\n });\n const dt = W && J && (_t.x || _t.y) || W && _t.x && !_t.y || J && _t.y && !_t.x;\n const pt = f || w || m || ft || at || ct || it || Y || j || G || d && h;\n const [vt] = n(\"update.flowDirectionStyles\");\n const [gt, ht] = L(vt ? vt(a) || {} : getFlowDirectionStyles(), l);\n const bt = w || S || ht || l;\n const [yt, wt] = bt ? P(getMeasuredScrollCoordinates(gt, !!vt), l) : U();\n let St = getViewportOverflowStyle(_t, X);\n setMeasuringMode(false);\n if (pt) {\n setViewportOverflowStyle(St);\n St = getElementOverflowStyle(a, _t);\n if (T && H) {\n H(St, lt, ut);\n setStyles(a, T(St));\n }\n }\n const [mt, Ot] = V(St);\n addRemoveAttrClass(r, B, N, dt);\n addRemoveAttrClass(i, nt, N, dt);\n assignDeep(s, {\n ln: mt,\n Lt: {\n x: et.w,\n y: et.h\n },\n Vt: {\n x: rt.w,\n y: rt.h\n },\n j: _t,\n kt: sanitizeScrollCoordinates(yt, rt)\n });\n return {\n cn: Ot,\n sn: ct,\n en: it,\n rn: wt || it\n };\n };\n};\n\nconst createStructureSetup = t => {\n const [n, o, s] = createStructureSetupElements(t);\n const e = {\n an: {\n t: 0,\n r: 0,\n b: 0,\n l: 0\n },\n dn: false,\n F: {\n [w]: 0,\n [S]: 0,\n [y]: 0,\n [v]: 0,\n [g]: 0,\n [b]: 0,\n [h]: 0\n },\n Lt: {\n x: 0,\n y: 0\n },\n Vt: {\n x: 0,\n y: 0\n },\n ln: {\n x: H,\n y: H\n },\n j: {\n x: false,\n y: false\n },\n kt: getZeroScrollCoordinates()\n };\n const {vt: c, ht: r, V: i, Ot: l} = n;\n const {P: a, M: u} = getEnvironment();\n const f = !a && (u.x || u.y);\n const _ = [ createTrinsicUpdateSegment(n), createPaddingUpdateSegment(n, e), createOverflowUpdateSegment(n, e) ];\n return [ o, t => {\n const n = {};\n const o = f;\n const s = o && getElementScroll(r);\n const e = s && l();\n each(_, (o => {\n assignDeep(n, o(t, n) || {});\n }));\n scrollElementTo(r, s);\n if (e) {\n e();\n }\n if (!i) {\n scrollElementTo(c, 0);\n }\n return n;\n }, e, n, s ];\n};\n\nconst createSetups = (t, n, o, s) => {\n let e = false;\n const c = {\n Qt: false,\n vn: false\n };\n const r = createOptionCheck(n, {});\n const [i, l, a, u, f] = createStructureSetup(t);\n const [_, d, p] = createObserversSetup(u, a, r, (t => {\n update({}, t);\n }));\n const [v, g, , h] = createScrollbarsSetup(t, n, c, p, a, u, s);\n const updateHintsAreTruthy = t => keys(t).some((n => !!t[n]));\n const update = (t, s) => {\n const {Qt: r, vn: i} = c;\n if (i || r && e) {\n return false;\n }\n const {gn: a, At: u, It: f} = t;\n const _ = a || {};\n const v = !!u || !e;\n const h = {\n zt: createOptionCheck(n, _, v),\n gn: _,\n At: v\n };\n const b = s || d(assignDeep({}, h, {\n It: f\n }));\n const y = l(assignDeep({}, h, {\n _n: p,\n tn: b\n }));\n g(assignDeep({}, h, {\n tn: b,\n nn: y\n }));\n const w = updateHintsAreTruthy(b);\n const S = updateHintsAreTruthy(y);\n const m = w || S || !isEmptyObject(_) || v;\n e = true;\n if (m) {\n o(t, {\n tn: b,\n nn: y\n });\n }\n return m;\n };\n return [ () => {\n const {un: t, ht: n, Ot: o} = u;\n const s = getElementScroll(t);\n const e = [ _(), i(), v(), () => {\n c.vn = true;\n } ];\n const r = o();\n scrollElementTo(n, s);\n r();\n return bind(runEachAndClear, e);\n }, update, t => {\n const n = c.Qt;\n c.Qt = t;\n if (!t && n !== t) {\n update({\n At: true,\n It: true\n });\n }\n }, () => {\n g({\n zt: createOptionCheck(n, {}, false),\n gn: {},\n At: false\n });\n }, () => ({\n hn: c,\n bn: p,\n yn: a\n }), {\n wn: u,\n Sn: h\n }, f ];\n};\n\nconst Pt = new WeakMap;\n\nconst addInstance = (t, n) => {\n Pt.set(t, n);\n};\n\nconst removeInstance = t => {\n Pt.delete(t);\n};\n\nconst getInstance = t => Pt.get(t);\n\nconst OverlayScrollbars = (t, n, o) => {\n const {nt: s} = getEnvironment();\n const e = isHTMLElement(t);\n const c = e ? t : t.target;\n const r = getInstance(c);\n if (n && !r) {\n const r = [];\n const i = {};\n const validateOptions = t => {\n const n = removeUndefinedProperties(t);\n const o = getStaticPluginModuleInstance(R);\n return o ? o(n, true) : n;\n };\n const l = assignDeep({}, s(), validateOptions(n));\n const [a, u, f] = createEventListenerHub();\n const [_, d, p] = createEventListenerHub(o);\n const triggerEvent = (t, n) => {\n p(t, n);\n f(t, n);\n };\n const [v, g, h, b, y, w, S] = createSetups(t, l, (({gn: t, At: n}, {tn: o, nn: s}) => {\n const {dt: e, $t: c, xt: r, Ht: i, Et: l, _t: a} = o;\n const {sn: u, en: f, cn: _, rn: d} = s;\n triggerEvent(\"updated\", [ m, {\n updateHints: {\n sizeChanged: !!e,\n directionChanged: !!c,\n heightIntrinsicChanged: !!r,\n overflowEdgeChanged: !!u,\n overflowAmountChanged: !!f,\n overflowStyleChanged: !!_,\n scrollCoordinatesChanged: !!d,\n contentMutation: !!i,\n hostMutation: !!l,\n appear: !!a\n },\n changedOptions: t || {},\n force: !!n\n } ]);\n }), (t => triggerEvent(\"scroll\", [ m, t ])));\n const destroy = t => {\n const {hn: n} = y();\n const {vn: o} = n;\n if (o) {\n return;\n }\n removeInstance(c);\n runEachAndClear(r);\n triggerEvent(\"destroyed\", [ m, t ]);\n u();\n d();\n };\n const update = t => g({\n At: t,\n It: true\n });\n const m = {\n options(t, n) {\n if (t) {\n const o = n ? s() : {};\n const e = getOptionsDiff(l, assignDeep(o, validateOptions(t)));\n if (!isEmptyObject(e)) {\n assignDeep(l, e);\n g({\n gn: e\n });\n }\n }\n return assignDeep({}, l);\n },\n on: _,\n off: (t, n) => {\n if (t && n) {\n d(t, n);\n }\n },\n state() {\n const {hn: t, bn: n, yn: o} = y();\n const {vn: s, Qt: e} = t;\n const {B: c} = n;\n const {Lt: r, Vt: i, ln: l, j: a, an: u, dn: f, kt: _} = o;\n return assignDeep({}, {\n overflowEdge: r,\n overflowAmount: i,\n overflowStyle: l,\n hasOverflow: a,\n scrollCoordinates: {\n start: _.T,\n end: _.k\n },\n padding: u,\n paddingAbsolute: f,\n directionRTL: c,\n sleeping: e,\n destroyed: s\n });\n },\n elements() {\n const {vt: t, gt: n, an: o, L: s, bt: e, ht: c, Zt: r} = w.wn;\n const {Xt: i, Gt: l} = w.Sn;\n const translateScrollbarStructure = t => {\n const {Mt: n, Ut: o, Pt: s} = t;\n return {\n scrollbar: s,\n track: o,\n handle: n\n };\n };\n const translateScrollbarsSetupElement = t => {\n const {Yt: n, Wt: o} = t;\n const s = translateScrollbarStructure(n[0]);\n return assignDeep({}, s, {\n clone: () => {\n const t = translateScrollbarStructure(o());\n b();\n return t;\n }\n });\n };\n return assignDeep({}, {\n target: t,\n host: n,\n padding: o || s,\n viewport: s,\n content: e || s,\n scrollOffsetElement: c,\n scrollEventElement: r,\n scrollbarHorizontal: translateScrollbarsSetupElement(i),\n scrollbarVertical: translateScrollbarsSetupElement(l)\n });\n },\n update: update,\n destroy: bind(destroy, false),\n sleep: h,\n plugin: t => i[keys(t)[0]]\n };\n push(r, [ S ]);\n addInstance(c, m);\n registerPluginModuleInstances(k, OverlayScrollbars, [ m, a, i ]);\n if (cancelInitialization(w.wn.yt, !e && t.cancel)) {\n destroy(true);\n return m;\n }\n push(r, v());\n triggerEvent(\"initialized\", [ m ]);\n m.update();\n return m;\n }\n return r;\n};\n\nOverlayScrollbars.plugin = t => {\n const n = isArray(t);\n const o = n ? t : [ t ];\n const s = o.map((t => registerPluginModuleInstances(t, OverlayScrollbars)[0]));\n addPlugins(o);\n return n ? s : s[0];\n};\n\nOverlayScrollbars.valid = t => {\n const n = t && t.elements;\n const o = isFunction(n) && n();\n return isPlainObject(o) && !!getInstance(o.target);\n};\n\nOverlayScrollbars.env = () => {\n const {U: t, M: n, P: o, G: s, J: e, st: c, et: r, Z: i, tt: l, nt: a, ot: u} = getEnvironment();\n return assignDeep({}, {\n scrollbarsSize: t,\n scrollbarsOverlaid: n,\n scrollbarsHiding: o,\n scrollTimeline: s,\n focusableScrollers: e,\n staticDefaultInitialization: c,\n staticDefaultOptions: r,\n getDefaultInitialization: i,\n setDefaultInitialization: l,\n getDefaultOptions: a,\n setDefaultOptions: u\n });\n};\n\nOverlayScrollbars.nonce = setNonce;\n\nOverlayScrollbars.trustedTypePolicy = setTrustedTypePolicy;\n\nexport { It as ClickScrollPlugin, OverlayScrollbars, Dt as ScrollbarsHidingPlugin, Ht as SizeObserverPlugin };\n//# sourceMappingURL=overlayscrollbars.mjs.map\n","import w, { useMemo as C, useRef as f, useEffect as v, forwardRef as E, useImperativeHandle as O } from \"react\";\nimport { OverlayScrollbars as I } from \"overlayscrollbars\";\nconst S = () => {\n if (typeof window > \"u\") {\n const n = () => {\n };\n return [n, n];\n }\n let l, o;\n const t = window, c = typeof t.requestIdleCallback == \"function\", a = t.requestAnimationFrame, i = t.cancelAnimationFrame, r = c ? t.requestIdleCallback : a, u = c ? t.cancelIdleCallback : i, s = () => {\n u(l), i(o);\n };\n return [\n (n, e) => {\n s(), l = r(\n c ? () => {\n s(), o = a(n);\n } : n,\n typeof e == \"object\" ? e : { timeout: 2233 }\n );\n },\n s\n ];\n}, F = (l) => {\n const { options: o, events: t, defer: c } = l || {}, [a, i] = C(S, []), r = f(null), u = f(c), s = f(o), n = f(t);\n return v(() => {\n u.current = c;\n }, [c]), v(() => {\n const { current: e } = r;\n s.current = o, I.valid(e) && e.options(o || {}, !0);\n }, [o]), v(() => {\n const { current: e } = r;\n n.current = t, I.valid(e) && e.on(t || {}, !0);\n }, [t]), v(\n () => () => {\n var e;\n i(), (e = r.current) == null || e.destroy();\n },\n []\n ), C(\n () => [\n (e) => {\n const y = r.current;\n if (I.valid(y))\n return;\n const d = s.current, b = n.current, m = u.current, p = () => r.current = I(e, d || {}, b || {});\n m ? a(p, m) : p();\n },\n () => r.current\n ],\n []\n );\n}, q = (l, o) => {\n const { element: t = \"div\", options: c, events: a, defer: i, children: r, ...u } = l, s = t, n = f(null), e = f(null), [y, d] = F({ options: c, events: a, defer: i });\n return v(() => {\n const { current: b } = n, { current: m } = e;\n if (!b)\n return;\n const p = b;\n return y(\n t === \"body\" ? {\n target: p,\n cancel: {\n body: null\n }\n } : {\n target: p,\n elements: {\n viewport: m,\n content: m\n }\n }\n ), () => {\n var R;\n return (R = d()) == null ? void 0 : R.destroy();\n };\n }, [y, d, t]), O(o, () => ({\n osInstance: d,\n getElement: () => n.current\n }), [d]), /* @__PURE__ */ w.createElement(s, { \"data-overlayscrollbars-initialize\": \"\", ref: n, ...u }, t === \"body\" ? r : /* @__PURE__ */ w.createElement(\"div\", { \"data-overlayscrollbars-contents\": \"\", ref: e }, r));\n}, g = E(q);\nexport {\n g as OverlayScrollbarsComponent,\n F as useOverlayScrollbars\n};\n//# sourceMappingURL=overlayscrollbars-react.mjs.map\n","import { theme } from 'antd';\nimport { useCallback, useEffect, useRef, type CSSProperties, type HTMLAttributes, type RefObject } from 'react';\nimport { useOverlayScrollbars } from 'overlayscrollbars-react';\nimport 'overlayscrollbars/overlayscrollbars.css';\nimport './scroll-area.css';\ntype ScrollAreaProps = HTMLAttributes<HTMLElement> & {\n as?: 'div' | 'main' | 'nav';\n horizontal?: boolean;\n vertical?: boolean;\n scroll?: 'auto' | 'hidden' | 'visible';\n scrollRef?: RefObject<HTMLElement | null>;\n};\n/** Keep the existing scroll element: cache restoration and keyboard/focus scrolling use it. */\nexport default function ScrollArea({ as: Element = 'div', horizontal = false, vertical = true, scroll = 'auto', scrollRef, className, style, children, ...props }: ScrollAreaProps) {\n const { token } = theme.useToken();\n const element = useRef<HTMLElement>(null);\n const setElement = useCallback((node: HTMLElement | null) => {\n element.current = node;\n if (scrollRef)\n scrollRef.current = node;\n }, [scrollRef]);\n const [initialize] = useOverlayScrollbars({\n defer: true,\n options: {\n overflow: { x: scroll === 'auto' ? (horizontal ? 'scroll' : 'hidden') : scroll, y: scroll === 'auto' ? (vertical ? 'scroll' : 'hidden') : scroll },\n scrollbars: { theme: 'arc-scrollbars', autoHide: 'leave', autoHideDelay: 650, autoHideSuspend: true, dragScroll: true },\n },\n });\n useEffect(() => {\n if (element.current)\n initialize({ target: element.current, elements: { viewport: element.current } });\n }, [initialize]);\n return <Element {...props} ref={setElement} tabIndex={props.tabIndex ?? 0} data-overlayscrollbars-initialize=\"\" className={['arc-scroll-area', className].filter(Boolean).join(' ')} style={{ '--arc-scrollbar-thumb': token.colorFill, '--arc-scrollbar-hover': token.colorTextQuaternary,\n '--arc-scrollbar-active': token.colorTextTertiary, ...style } as CSSProperties}>\n {children}\n </Element>;\n}\n","import { Button, Tooltip } from 'antd';\nimport { LayoutGrid, PanelLeftClose, PanelLeftOpen } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport type { LayoutMenuItem } from './menu-model';\nimport ScrollArea from '../../components/ScrollArea';\ninterface LayoutSidebarProps {\n width: number;\n collapsed: boolean;\n logo: ReactNode;\n children: ReactNode;\n title: string;\n rail?: {\n items: LayoutMenuItem[];\n activeKey: string;\n showLabels: boolean;\n onSelect: (key: string) => void;\n };\n onToggle: () => void;\n onHover: (hovered: boolean) => void;\n}\n/** Fixed sidebar and bottom trigger migrated from layout-sidebar and layout-mixed-sidebar. */\nexport default function LayoutSidebar({ width, collapsed, logo, children, title, rail, onToggle, onHover }: LayoutSidebarProps) {\n return <aside className=\"arc-layout-sidebar\" aria-label=\"主导航\" style={{ width }} onMouseEnter={() => onHover(true)} onMouseLeave={() => onHover(false)}>\n {rail && <div className={'arc-layout-rail' + (rail.showLabels ? ' arc-layout-rail--labels' : '')}>\n <div className=\"arc-layout-logo arc-layout-logo--compact\">{logo}</div>\n <ScrollArea className=\"arc-layout-rail__menu\" aria-label=\"导航分组\">\n {rail.items.map(item => <Tooltip key={item.key} title={item.label} placement=\"right\">\n <button type=\"button\" className={'arc-layout-rail__item' + (rail.activeKey === item.key ? ' arc-layout-rail__item--active' : '')} aria-label={item.label} aria-current={rail.activeKey === item.key ? 'page' : undefined} onClick={() => rail.onSelect(item.key)}>\n {item.icon ?? <LayoutGrid size={20}/>}<span>{item.label}</span>\n </button>\n </Tooltip>)}\n </ScrollArea>\n </div>}\n <div className=\"arc-layout-sidebar__column\">\n <div className={'arc-layout-logo' + (collapsed ? ' arc-layout-logo--compact' : '')}>{!rail && logo}{!collapsed && <strong>{title}</strong>}</div>\n <ScrollArea className=\"arc-layout-sidebar__scroll\" aria-label=\"导航菜单\">{children}</ScrollArea>\n <Button type=\"text\" className=\"arc-layout-sidebar__trigger\" aria-label={collapsed ? '展开侧边栏' : '收起侧边栏'} icon={collapsed ? <PanelLeftOpen size={17}/> : <PanelLeftClose size={17}/>} onClick={onToggle}/>\n </div>\n </aside>;\n}\n","import type { ReactNode } from 'react';\nexport interface LayoutMenuItem {\n key: string;\n label: string;\n path?: string;\n icon?: ReactNode;\n children?: LayoutMenuItem[];\n}\n\nexport const personalMenuPages = [\n { key: 'personal-center', label: '个人中心', path: '/profile' },\n { key: 'personal-api-tokens', label: 'API Token', path: '/system/api-tokens' },\n] as const;\n\nexport const mcpSettingsPage = { key: 'system-mcp', label: 'MCP 设置', path: '/system/mcp', permission: 'system:setting:view' } as const;\n\nexport function canViewMcpSettings(permissions: readonly string[], superAdmin = false): boolean {\n return superAdmin || permissions.includes('*') || permissions.includes(mcpSettingsPage.permission);\n}\n\n/** Place personal and integration entries without granting MCP settings access. */\nexport function withPersonalMenu(items: readonly LayoutMenuItem[], { settingsKey, integrationKey, profileIcon, apiTokenIcon, settingsIcon, integrationIcon, mcpIcon, canViewMcp = false }: {\n settingsKey?: string; integrationKey?: string; profileIcon?: ReactNode; apiTokenIcon?: ReactNode; settingsIcon?: ReactNode;\n integrationIcon?: ReactNode; mcpIcon?: ReactNode; canViewMcp?: boolean;\n}): LayoutMenuItem[] {\n const personalPaths = new Set<string>([...personalMenuPages.map(page => page.path), mcpSettingsPage.path]);\n const settingsRootKey = settingsKey ?? 'personal-settings';\n const integrationRootKey = integrationKey ?? 'ai-integrations';\n const removePersonal = (menus: readonly LayoutMenuItem[]): LayoutMenuItem[] => menus.flatMap(menu => {\n if (menu.path && personalPaths.has(menu.path)) return [];\n const children = menu.children ? removePersonal(menu.children) : undefined;\n if (children?.length === 0 && !menu.path && menu.key !== settingsRootKey && menu.key !== integrationRootKey) return [];\n return [{ ...menu, ...(children ? { children } : {}) }];\n });\n const menus = removePersonal(items);\n const profile = { ...personalMenuPages[0], icon: profileIcon };\n let index = menus.findIndex(menu => menu.key === settingsRootKey);\n if (index < 0) {\n menus.push({ key: settingsRootKey, label: '系统设置', icon: settingsIcon, children: [profile] });\n index = menus.length - 1;\n } else menus[index] = { ...menus[index], children: [profile, ...menus[index].children ?? []] };\n const children: LayoutMenuItem[] = [{ ...personalMenuPages[1], icon: apiTokenIcon }];\n if (canViewMcp) children.push({ key: mcpSettingsPage.key, label: mcpSettingsPage.label, path: mcpSettingsPage.path, icon: mcpIcon });\n const integrationIndex = menus.findIndex(menu => menu.key === integrationRootKey);\n if (integrationIndex < 0) menus.splice(index + 1, 0, { key: integrationRootKey, label: 'AI 与集成', icon: integrationIcon, children });\n else menus[integrationIndex] = { ...menus[integrationIndex], label: 'AI 与集成', children: [...children, ...menus[integrationIndex].children ?? []] };\n return menus;\n}\n/** Adapted from react-antd-admin layout-menu/utils.ts and use-menu.ts. */\nexport function menuChain(items: LayoutMenuItem[], path: string): LayoutMenuItem[] {\n for (const item of items) {\n if (item.path === path)\n return [item];\n const children = menuChain(item.children ?? [], path);\n if (children.length)\n return [item, ...children];\n }\n return [];\n}\nexport function firstMenuPath(item: LayoutMenuItem): string | undefined {\n return item.path || item.children?.map(firstMenuPath).find(Boolean);\n}\nexport function menuParentKeys(items: LayoutMenuItem[], parents: string[] = []): Record<string, string[]> {\n return Object.fromEntries(items.flatMap(item => [\n [item.key, parents],\n ...Object.entries(menuParentKeys(item.children ?? [], [...parents, item.key])),\n ]));\n}\n/** Keep ancestors open when changing accordion groups, including nested directories. */\nexport function accordionKeys(next: string[], previous: string[], parents: Record<string, string[]>): string[] {\n const opened = next.find(key => !previous.includes(key));\n if (opened)\n return [...(parents[opened] ?? []), opened];\n const closed = previous.find(key => !next.includes(key));\n return closed ? parents[closed] ?? [] : next;\n}\n","import { ConfigProvider, Menu, theme, type MenuProps } from 'antd';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport type { CSSProperties } from 'react';\nimport { accordionKeys, menuChain, menuParentKeys, type LayoutMenuItem } from './menu-model';\ninterface LayoutMenuProps {\n items: LayoutMenuItem[];\n path: string;\n collapsed?: boolean;\n accordion?: boolean;\n dark?: boolean;\n scrollIntoView?: boolean;\n mode?: MenuProps['mode'];\n onSelect: (key: string) => void;\n}\n/** Migrated from react-antd-admin/layout/layout-menu; ArcBase supplies authorized menus. */\nexport default function LayoutMenu({ items, path, collapsed = false, accordion = false, dark = false, scrollIntoView, mode = 'inline', onSelect }: LayoutMenuProps) {\n const { token } = theme.useToken();\n const selectedBg = `color-mix(in srgb, ${token.colorPrimaryBg} 50%, ${token.colorPrimaryBgHover})`;\n const [openKeys, setOpenKeys] = useState<string[]>([]);\n const container = useRef<HTMLDivElement>(null);\n const parents = useMemo(() => menuParentKeys(items), [items]);\n const selected = useMemo(() => menuChain(items, path).map(item => item.key), [items, path]);\n const menuItems = useMemo(() => {\n const convert = (nodes: LayoutMenuItem[]): NonNullable<MenuProps['items']> => nodes.map(({ children, ...item }) => children?.length ? { ...item, children: convert(children) } : item);\n return convert(items);\n }, [items]);\n const inline = mode === 'inline';\n useEffect(() => {\n setOpenKeys(previous => collapsed ? [] : accordion ? selected.slice(0, -1) : [...new Set([...previous.filter(key => key in parents), ...selected.slice(0, -1)])]);\n }, [selected, collapsed, accordion, parents]);\n useEffect(() => {\n if (!scrollIntoView || !inline || collapsed)\n return;\n // Menu expansion must be committed before measuring the selected item.\n const frame = requestAnimationFrame(() => container.current?.querySelector('.ant-menu-item-selected')?.scrollIntoView({ block: 'nearest' }));\n return () => cancelAnimationFrame(frame);\n }, [path, openKeys, scrollIntoView, inline, collapsed]);\n return <div ref={container} className=\"arc-layout-menu\" style={{ '--arc-layout-menu-selected-bg': dark ? token.colorPrimary : selectedBg } as CSSProperties}>\n <ConfigProvider theme={{ components: { Menu: { itemSelectedBg: selectedBg } } }}>\n <Menu className=\"arc-layout-menu__items\" items={menuItems} mode={mode} theme={dark ? 'dark' : 'light'} inlineIndent={16} selectedKeys={selected} {...(inline ? { inlineCollapsed: collapsed, openKeys,\n onOpenChange: (keys: string[]) => setOpenKeys(accordion || collapsed ? accordionKeys(keys, openKeys, parents) : keys) } : {})} onClick={({ key }) => onSelect(key)}/>\n </ConfigProvider>\n </div>;\n}\n","import { Button, ConfigProvider, Drawer, theme } from 'antd';\nimport { Minimize } from 'lucide-react';\nimport { useMemo, useState, type CSSProperties, type ReactNode } from 'react';\nimport type { UserPreferences } from '@fudanda/shared/preferences';\nimport LayoutHeader from './LayoutHeader';\nimport LayoutSidebar from './LayoutSidebar';\nimport LayoutMenu from './LayoutMenu';\nimport { firstMenuPath, menuChain, type LayoutMenuItem } from './menu-model';\nimport './layout.css';\nimport ScrollArea from '../../components/ScrollArea';\ninterface ContainerLayoutProps {\n preferences: UserPreferences;\n dark: boolean;\n mobile: boolean;\n collapsed: boolean;\n maximized: boolean;\n title: string;\n brand: string;\n logo: ReactNode;\n menus: LayoutMenuItem[];\n path: string;\n breadcrumb: ReactNode;\n actions: ReactNode;\n tabbar: ReactNode;\n children: ReactNode;\n onCollapse: (collapsed: boolean) => void;\n onNavigate: (path: string) => void;\n onRestore: () => void;\n}\n/** Source base: react-antd-admin/container-layout. UI slots use ArcBase session/query state. */\nexport default function ContainerLayout({ preferences, dark, mobile, collapsed, maximized, title, brand, logo, menus, path, breadcrumb, actions, tabbar, children, onCollapse, onNavigate, onRestore }: ContainerLayoutProps) {\n const { token } = theme.useToken();\n const darkToken = useMemo(() => theme.getDesignToken({ algorithm: theme.darkAlgorithm, token: { colorPrimary: token.colorPrimary } }), [token.colorPrimary]);\n const [hovered, setHovered] = useState(false);\n const layout = mobile ? 'vertical' : preferences.navLayout;\n const split = layout === 'mixed' || layout === 'double';\n const root = useMemo(() => menuChain(menus, path)[0] ?? menus[0], [menus, path]);\n const sideMenus = split && root ? root.children?.length ? root.children : [root] : menus;\n const sidebar = layout !== 'horizontal';\n const expandedOnHover = preferences.sidebarHoverTrigger && collapsed && hovered && !mobile;\n const effectiveCollapsed = collapsed && !expandedOnHover;\n const railWidth = layout === 'double' ? preferences.doubleRailStyle === 'icon-text' ? 80 : 56 : 0;\n const columnWidth = effectiveCollapsed ? 56 : preferences.sidebarWidth;\n const width = railWidth + columnWidth;\n // Hover expansion overlays content instead of shifting the page under the pointer.\n const reserved = mobile || maximized || !sidebar ? 0 : railWidth + (collapsed ? 56 : preferences.sidebarWidth);\n const siderDark = dark || preferences.sidebarDarkMode;\n const headerDark = dark || preferences.headerDarkMode;\n const tone = (value: 'bg-0' | 'bg-1', isDark: boolean) => isDark ? value === 'bg-0' ? darkToken.colorBgLayout : darkToken.colorBgContainer : token.colorBgContainer;\n const style = {\n fontFamily: token.fontFamily,\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n '--arc-layout-sidebar-width': `${reserved}px`,\n '--arc-layout-sidebar-bg': tone(preferences.darkSidebarTone, siderDark),\n '--arc-layout-header-bg': tone(preferences.darkHeaderTone, headerDark),\n '--arc-layout-sidebar-text': siderDark ? darkToken.colorText : token.colorText,\n '--arc-layout-sidebar-border': siderDark ? darkToken.colorBorderSecondary : token.colorBorderSecondary,\n '--arc-layout-header-text': headerDark ? darkToken.colorText : token.colorText,\n '--arc-layout-header-border': headerDark ? darkToken.colorBorderSecondary : token.colorBorderSecondary,\n '--arc-layout-tab-active-bg': headerDark ? darkToken.colorPrimaryBg : token.colorPrimaryBg,\n '--arc-layout-tabbar-height': tabbar ? preferences.compactTabs ? '35px' : '43px' : '0px',\n '--arc-layout-content-bg': dark ? tone(preferences.darkContentTone, true) : token.colorBgLayout,\n '--arc-layout-rail-width': `${railWidth}px`,\n } as CSSProperties;\n const select = (key: string) => {\n const find = (items: LayoutMenuItem[]): LayoutMenuItem | undefined => {\n for (const item of items) {\n if (item.key === key)\n return item;\n const match = find(item.children ?? []);\n if (match)\n return match;\n }\n };\n const item = find(menus);\n const target = item && firstMenuPath(item);\n if (target) {\n if (mobile)\n onCollapse(true);\n onNavigate(target);\n }\n };\n const menu = (items: LayoutMenuItem[], isCollapsed = effectiveCollapsed, mode: 'inline' | 'horizontal' = 'inline') => <LayoutMenu items={items} path={path} collapsed={isCollapsed} mode={mode} accordion={preferences.sidebarAccordion} dark={mode === 'horizontal' ? headerDark : siderDark} scrollIntoView={preferences.scrollMenuIntoView} onSelect={select}/>;\n const topMenus = split ? menus.map(item => ({ ...item, children: undefined })) : menus;\n const sidebarTheme = { algorithm: siderDark ? theme.darkAlgorithm : theme.defaultAlgorithm };\n return <section className={'arc-admin-layout arc-admin-layout--' + layout + (maximized ? ' arc-admin-layout--maximized' : '')\n + (preferences.sidebarToggleIconPosition === 'left' ? ' arc-admin-layout--arrow-left' : '')\n + (preferences.sidebarStickyScroll ? ' arc-admin-layout--sticky-menu' : '')} style={style} data-layout-source=\"react-antd-admin\">\n {!mobile && !maximized && sidebar && <ConfigProvider theme={sidebarTheme}>\n <LayoutSidebar width={width} collapsed={effectiveCollapsed} title={brand} logo={logo} onToggle={() => onCollapse(!collapsed)} onHover={setHovered} rail={layout === 'double' ? { items: menus, activeKey: root?.key ?? '', showLabels: preferences.doubleRailStyle === 'icon-text', onSelect: select } : undefined}>\n {menu(sideMenus)}\n </LayoutSidebar>\n </ConfigProvider>}\n <div className=\"arc-layout-main\">\n {!maximized && <ConfigProvider theme={{ algorithm: headerDark ? theme.darkAlgorithm : theme.defaultAlgorithm }}>\n <LayoutHeader mobile={mobile} collapsed={collapsed} showTrigger={mobile || layout === 'vertical' || layout === 'double'} onToggle={() => onCollapse(!collapsed)} actions={actions}>\n {layout === 'horizontal' && <div className=\"arc-layout-header__brand\">{logo}<strong>{brand}</strong></div>}\n {layout === 'horizontal' || layout === 'mixed' ? menu(topMenus, false, 'horizontal') : breadcrumb || <span className=\"arc-layout-page-title\">{title}</span>}\n </LayoutHeader>\n </ConfigProvider>}\n {!maximized && (layout === 'horizontal' || layout === 'mixed') && breadcrumb && <ConfigProvider theme={{ algorithm: headerDark ? theme.darkAlgorithm : theme.defaultAlgorithm }}>\n <div className=\"arc-layout-breadcrumb\">{breadcrumb}</div>\n </ConfigProvider>}\n <ConfigProvider theme={{ algorithm: headerDark ? theme.darkAlgorithm : theme.defaultAlgorithm }}>{tabbar}</ConfigProvider>\n <ScrollArea as=\"main\" horizontal aria-label=\"页面内容\" className={'admin-content arc-layout-content' + (preferences.contentWidth === 'fixed' ? ' arc-layout-content--fixed' : '')}>\n <div className=\"arc-layout-content__inner\">{children}</div>\n </ScrollArea>\n {maximized && !tabbar && <Button className=\"arc-layout-restore\" aria-label=\"退出内容全屏\" icon={<Minimize size={16}/>} onClick={onRestore}>退出全屏</Button>}\n </div>\n {mobile && <ConfigProvider theme={sidebarTheme}><Drawer title={brand} placement=\"left\" size={Math.min(preferences.sidebarWidth + 24, 320)} open={!collapsed} onClose={() => onCollapse(true)} className=\"arc-layout-mobile-menu\" styles={{ body: { padding: 0, overflow: 'hidden', background: tone(preferences.darkSidebarTone, siderDark) } }}>\n <ScrollArea className=\"arc-layout-mobile-menu__scroll\" aria-label=\"导航菜单\" style={{ height: '100%' }}>{menu(menus, false)}</ScrollArea>\n </Drawer></ConfigProvider>}\n </section>;\n}\n","import { Button, Dropdown, Tabs, Tooltip, type MenuProps } from 'antd';\nimport { ChevronDown, Ellipsis, Maximize, Minimize, Pin, RefreshCw, X } from 'lucide-react';\nimport { useEffect, useRef, useState } from 'react';\nimport type { UserPreferences } from '@fudanda/shared/preferences';\nimport type { TabItem, useTabsStore } from '@fudanda/react-core/hooks/useTabsStore';\nimport { DynamicIcon } from '../../components/DynamicIcon';\ninterface LayoutTabbarProps {\n tabs: TabItem[];\n store: ReturnType<typeof useTabsStore>;\n path: string;\n preferences: UserPreferences;\n maximized: boolean;\n onNavigate: (path: string) => void;\n onRefresh: (path: string) => void;\n onClose: (path: string) => void;\n onMaximize: () => void;\n}\n/** Tabbar structure/styles migrated from react-antd-admin; Core retains tab/cache ownership. */\nexport default function LayoutTabbar({ tabs, store, path, preferences, maximized, onNavigate, onRefresh, onClose, onMaximize }: LayoutTabbarProps) {\n const root = useRef<HTMLDivElement>(null);\n useEffect(() => {\n const clip = root.current?.querySelector<HTMLElement>('.ant-tabs-nav-wrap');\n if (!clip || typeof IntersectionObserver === 'undefined')\n return;\n const observed = new Set<HTMLElement>();\n const observer = new IntersectionObserver(entries => {\n for (const entry of entries)\n (entry.target as HTMLElement).dataset.clipped = String(entry.intersectionRatio < 0.999);\n }, { root: clip, threshold: [0, 0.999, 1] });\n const sync = () => {\n const current = new Set(clip.querySelectorAll<HTMLElement>('.ant-tabs-tab'));\n for (const tab of observed)\n if (!current.has(tab)) {\n observer.unobserve(tab);\n observed.delete(tab);\n }\n for (const tab of current)\n if (!observed.has(tab)) {\n observer.observe(tab);\n observed.add(tab);\n }\n };\n sync();\n const mutations = new MutationObserver(sync);\n mutations.observe(clip, { childList: true, subtree: true });\n return () => {\n observer.disconnect();\n mutations.disconnect();\n for (const tab of observed)\n delete tab.dataset.clipped;\n };\n }, [tabs.length, preferences.tabStyle, preferences.compactTabs]);\n const keys = tabs.map(tab => tab.key);\n const [animation, setAnimation] = useState({ keys, entering: new Set<string>() });\n if (keys.join('\\0') !== animation.keys.join('\\0')) {\n setAnimation({ keys, entering: new Set([...animation.entering, ...keys.filter(key => !animation.keys.includes(key))].filter(key => keys.includes(key))) });\n }\n const clearAnimation = (key: string) => setAnimation(previous => ({ ...previous, entering: new Set([...previous.entering].filter(item => item !== key)) }));\n const menuItems = (tab: TabItem): MenuProps['items'] => [\n { key: 'refresh', label: '刷新', icon: <RefreshCw size={14}/>, onClick: () => onRefresh(tab.key) },\n { key: 'pin', label: tab.pinned ? '取消固定' : '固定', disabled: tab.key === '/', icon: <Pin size={14}/>, onClick: () => tab.pinned ? store.unpinTab(tab.key) : store.pinTab(tab.key) },\n { type: 'divider' },\n { key: 'close', label: '关闭当前', disabled: !tab.closable || tab.pinned, onClick: () => onClose(tab.key) },\n { key: 'others', label: '关闭其他', onClick: () => onNavigate(store.closeOthers(tab.key)) },\n { key: 'left', label: '关闭左侧', onClick: () => onNavigate(store.closeLeft(tab.key)) },\n { key: 'right', label: '关闭右侧', onClick: () => onNavigate(store.closeRight(tab.key)) },\n { key: 'all', label: '关闭全部', onClick: () => { store.closeAll(); onNavigate('/'); } },\n ];\n const active = tabs.find(tab => tab.key === path) ?? tabs[0];\n return <div ref={root} className={'arc-layout-tabbar arc-layout-tabbar--' + preferences.tabStyle\n + (preferences.compactTabs ? ' arc-layout-tabbar--compact' : '') + (preferences.autoHideTabs ? ' arc-layout-tabbar--autohide' : '')} data-tab-animation={preferences.reduceMotion ? 'none' : preferences.tabAnimation}>\n <Tabs activeKey={path} onChange={onNavigate} type=\"editable-card\" hideAdd size=\"small\" animated={false} more={{ trigger: 'click', icon: <span role=\"img\" aria-label=\"更多标签页\" title=\"更多标签页\"><Ellipsis size={16}/></span> }} onEdit={(key, action) => {\n if (action === 'remove' && typeof key === 'string')\n onClose(key);\n }} items={tabs.map(tab => ({ key: tab.key, closable: tab.closable && !tab.pinned,\n closeIcon: <X size={12} aria-label={'关闭' + tab.title}/>,\n label: <Dropdown trigger={['contextMenu']} menu={{ items: menuItems(tab) }}>\n <span className={'arc-layout-tab-label' + (animation.entering.has(tab.key) ? ' arc-layout-tab-label--entering' : '')} onAnimationEnd={() => clearAnimation(tab.key)} draggable={tab.key !== '/' && !tab.pinned} onDragStart={event => event.dataTransfer.setData('arcbase-tab', tab.key)} onDragOver={event => event.preventDefault()} onDrop={event => {\n const key = event.dataTransfer.getData('arcbase-tab');\n if (key)\n store.reorderTabs(key, tab.key);\n }} onDoubleClick={() => {\n if (preferences.tabDoubleClickAction === 'refresh')\n onRefresh(tab.key);\n if (preferences.tabDoubleClickAction === 'close' && tab.closable && !tab.pinned)\n onClose(tab.key);\n }}>\n {tab.pinned && <Pin size={12}/>}{preferences.showTabIcon && tab.icon && <DynamicIcon name={tab.icon}/>}{tab.title}\n </span>\n </Dropdown> }))} tabBarExtraContent={<div className=\"arc-layout-tabbar__actions\">\n <Tooltip title=\"刷新当前页\"><Button type=\"text\" aria-label=\"刷新当前页\" icon={<RefreshCw size={15}/>} onClick={() => onRefresh(path)}/></Tooltip>\n {active && <Dropdown trigger={['click']} menu={{ items: menuItems(active) }}><Button type=\"text\" aria-label=\"标签页操作\" icon={<ChevronDown size={15}/>}/></Dropdown>}\n {preferences.showTabSwitcher && <Dropdown trigger={['click']} menu={{ selectedKeys: [path], items: tabs.map(tab => ({\n key: tab.key, label: tab.title, icon: preferences.showTabIcon && tab.icon ? <DynamicIcon name={tab.icon}/> : undefined,\n onClick: () => onNavigate(tab.key),\n })) }}><Button type=\"text\" aria-label=\"标签切换器\" title=\"切换到已打开的标签页\" icon={<ChevronDown size={15}/>}/></Dropdown>}\n <Tooltip title={maximized ? '退出内容全屏' : '内容全屏'}><Button type=\"text\" aria-label={maximized ? '退出内容全屏' : '内容全屏'} icon={maximized ? <Minimize size={15}/> : <Maximize size={15}/>} onClick={onMaximize}/></Tooltip>\n </div>}/>\n </div>;\n}\n","import { Suspense, lazy, useEffect, useMemo, useState, useCallback, startTransition, type ReactNode } from 'react';\nimport {SafeUpdateProvider, type ArcBaseUpdateOptions} from './updates';\nimport { Link, Navigate, Route, Routes, useLocation, useNavigate } from 'react-router-dom';\nimport { Avatar, Button, Result, Dropdown, BackTop, App, Tooltip } from 'antd';\nimport { KeyRound, Maximize, LockKeyhole, Moon, Sun, UserRound, LogOut, Settings2, Sparkles, PlugZap } from 'lucide-react';\nimport { IdentityCallback } from '@fudanda/elements-antd';\nimport { useArcBase } from '@fudanda/react-core';\nimport { useAuth } from '@fudanda/react-core/hooks/useAuth';\nimport { useAdminOptions, useAdminPaths } from '@fudanda/react-core/admin/runtime';\nimport { useWebMcpHost } from './webmcp-control';\nimport type { ArcBaseWebMcpOptions } from './webmcp-types';\nimport { useCurrentUserMenuTree } from '@fudanda/react-core/hooks/queries/menus';\nimport { useMcpPolicy } from '@fudanda/react-core/hooks/queries/settings';\nimport { useMountedAdminModules } from '@fudanda/react-core/admin/modules';\nimport { foundationPagePaths } from '@fudanda/react-core/lib/foundation-mode';\nimport { usePreferences } from '@fudanda/react-core/hooks/usePreferences';\nimport { useTabsStore } from '@fudanda/react-core/hooks/useTabsStore';\nimport { TabsMetaContext } from '@fudanda/react-core/hooks/useTabMeta';\nimport type { Menu } from '@fudanda/shared/identity';\nimport type { ArcBasePageProps } from '@fudanda/react-core/admin/types';\nimport { hasPostLoginHome, clearPostLoginHome } from './lib/post-login';\nimport { pageLoaders } from './page-registry';\nimport { TopbarClock } from './components/TopbarClock';\nimport { AccountVersionPopup } from './components/AccountVersionInfo';\nimport { useLockScreen } from '@fudanda/react-core/hooks/useLockScreen';\nimport { useAutoLock } from '@fudanda/react-core/hooks/useAutoLock';\nimport { useLayoutShortcuts } from '@fudanda/react-core/hooks/useLayoutShortcuts';\nimport { RouteErrorBoundary } from './components/PageErrorBoundary';\nimport { LockPanel } from './layouts/admin/LockPanel';\nimport { DynamicIcon } from './components/DynamicIcon';\nimport { useFavoriteMenus } from \"@fudanda/react-core/hooks/useFavoriteMenus\";\nimport './loading.css';\nimport './route-animation.css';\nimport { PreferencesProvider } from './hooks/PreferencesProvider';\nimport { RealtimeBridge } from '@fudanda/react-core/providers/RealtimeBridge';\nimport { useRecentMenus } from \"@fudanda/react-core/hooks/useRecentMenus\";\nimport PreferencesPanel from './layouts/admin/PreferencesPanel';\nimport { AntTheme, useAntDark } from './admin/theme';\nimport KeepAliveOutlet from './layouts/KeepAliveOutlet';\nimport MenuSearchInput, { type FlatMenuItem } from './components/MenuSearchInput';\nimport PageLoading from './components/PageLoading';\nimport { NavigationBreadcrumb } from './components/NavigationBreadcrumb';\nimport { NavigationProgress } from './components/NavigationProgress';\nimport { FavoriteMenus } from './components/FavoriteMenus';\nimport { useIsMobile } from '@fudanda/react-core/hooks/useMediaQuery';\nimport LoginPage from './pages/login/LoginPage';\nimport AppLogo from './components/AppLogo';\nimport ContainerLayout from './layouts/react-antd-admin/ContainerLayout';\nimport LayoutTabbar from './layouts/react-antd-admin/LayoutTabbar';\nimport { canViewMcpSettings, mcpSettingsPage, personalMenuPages, withPersonalMenu, type LayoutMenuItem } from './layouts/react-antd-admin/menu-model';\nconst pageComponents = Object.fromEntries(Object.entries(pageLoaders).map(([path, loader]) => [path, lazy(loader)]));\nfunction denied(known: boolean) { return <Result status={known ? '403' : '404'} title={known ? '无权访问' : '页面不存在'} extra={<Link to=\"/\">返回首页</Link>}/>; }\nexport function safeLoginRedirect(search: string) {\n const path = new URLSearchParams(search).get('redirect');\n return path && path.startsWith('/') && !path.startsWith('//') && !path.includes('\\\\') && !/^\\/(login|auth\\/callback)([/?#]|$)/.test(path) ? path : '/';\n}\nfunction Shell({ webmcp }: { webmcp?: ArcBaseWebMcpOptions }) {\n const mobile = useIsMobile();\n const auth = useAuth(), options = useAdminOptions(), location = useLocation(), navigate = useNavigate();\n const menuQuery = useCurrentUserMenuTree(), mounted = useMountedAdminModules();\n const { preferences, setPreferences, canEditPreference } = usePreferences();\n const { modal, message } = App.useApp();\n const dark = useAntDark(), lock = useLockScreen();\n const favorites = useFavoriteMenus();\n const [contentFullscreen, setContentFullscreen] = useState(false);\n const [collapsed, setCollapsed] = useState(mobile), [versions, setVersions] = useState<Record<string, number>>({});\n useEffect(() => {\n if (mobile)\n setCollapsed(true);\n }, [mobile]);\n const tabs = useTabsStore(preferences.tabsMaxCount, undefined, preferences.keepTabs, preferences.tabEvictPolicy, preferences.openTabBehavior);\n const { addTab, removeTab, setActiveKey, tabs: openTabs } = tabs;\n const { data = [] } = menuQuery;\n const canViewMcp = canViewMcpSettings(auth.permissions, auth.superAdmin);\n const flat = useMemo(() => {\n const visit = (items: Menu[], breadcrumb: string[] = []): Array<Menu & FlatMenuItem> => items.flatMap(item => {\n if (item.type === 'button' || item.visible === false || item.path === mcpSettingsPage.path && !canViewMcp)\n return [];\n return [...(item.path ? [{ ...item, path: item.path, breadcrumb }] : []), ...visit(item.children ?? [], [...breadcrumb, item.title])];\n });\n return visit(data);\n }, [data, canViewMcp]);\n const recent = useRecentMenus(flat, location.pathname);\n useAutoLock(lock.autoLockMinutes, lock.hasPassword(), lock.isLocked, lock.hasPassword, lock.lock);\n useLayoutShortcuts({ enableShortcuts: preferences.enableShortcuts, enableLockScreen: lock.hasPassword(), hasPassword: lock.hasPassword, lock: lock.lock, collapsed, handleCollapseChange: setCollapsed, isContentFullscreen: contentFullscreen, setIsContentFullscreen: setContentFullscreen });\n useEffect(() => {\n if (preferences.sidebarHoverTrigger)\n setCollapsed(true);\n }, [preferences.sidebarHoverTrigger]);\n const routes = useMemo(() => {\n const visit = (items: Menu[]): LayoutMenuItem[] => items.filter(item => item.type !== 'button' && item.visible !== false && item.status === 'enabled')\n .map(item => ({ key: String(item.id), path: item.path ?? undefined, label: item.title, icon: item.icon ? <DynamicIcon name={item.icon}/> : undefined, children: item.children?.length ? visit(item.children) : undefined }))\n .filter(item => item.path || item.children?.length);\n const settings = data.find(menu => menu.type === 'directory' && menu.name === 'SystemSettings');\n const integration = data.find(menu => menu.type === 'directory' && menu.name === 'AiIntegrations');\n return withPersonalMenu(visit(data), { settingsKey: settings ? String(settings.id) : undefined, integrationKey: integration ? String(integration.id) : undefined,\n profileIcon: <UserRound size={16}/>, apiTokenIcon: <KeyRound size={16}/>, settingsIcon: <Settings2 size={16}/>,\n integrationIcon: <Sparkles size={16}/>, mcpIcon: <PlugZap size={16}/>, canViewMcp });\n }, [data, canViewMcp]);\n const pages = mounted.modules.flatMap(module => module.pages);\n const hostPage = pages.find(page => page.path === location.pathname);\n const currentMenu = flat.find(menu => menu.path === location.pathname);\n const allowed = useMemo(() => new Set(['/', ...personalMenuPages.map(page => page.path), ...(canViewMcp ? [mcpSettingsPage.path] : []), ...flat.map(menu => menu.path)]), [flat, canViewMcp]);\n const title = hostPage?.title ?? currentMenu?.title ?? personalMenuPages.find(page => page.path === location.pathname)?.label ?? (canViewMcp && location.pathname === mcpSettingsPage.path ? mcpSettingsPage.label : '首页');\n useEffect(() => {\n if (allowed.has(location.pathname) || hostPage?.navigation === false) {\n addTab(location.pathname, title, currentMenu?.icon ?? hostPage?.icon);\n setActiveKey(location.pathname);\n }\n }, [location.pathname, title, allowed, hostPage?.navigation, currentMenu?.icon, hostPage?.icon, addTab, setActiveKey]);\n useEffect(() => { document.title = (preferences.dynamicTitle ? title + ' · ' : '') + (options.brand?.name ?? 'ArcBase'); }, [preferences.dynamicTitle, title, options.brand?.name]);\n const refresh = useCallback((key: string) => startTransition(() => setVersions(previous => ({ ...previous, [key]: (previous[key] ?? 0) + 1 }))), []);\n const close = useCallback((key: string) => {\n removeTab(key);\n if (key === location.pathname) {\n const index = openTabs.findIndex(tab => tab.key === key);\n navigate(openTabs[index - 1]?.key ?? '/');\n }\n }, [removeTab, openTabs, location.pathname, navigate]);\n const tabMeta = useMemo(() => ({ enabled: preferences.enableTabs, setTabMeta: tabs.setTabMeta, closeTab: close }), [preferences.enableTabs, tabs.setTabMeta, close]);\n const openPaths = new Set(tabs.tabs.map(tab => tab.key));\n const cachePaths = new Set(preferences.enablePageCache && preferences.enableTabs ? [...flat.filter(menu => menu.keepAlive).map(menu => menu.path), ...pages.filter(page => page.keepAlive).map(page => page.path)] : []);\n const adminPaths = useAdminPaths();\n const { session } = useArcBase();\n const webmcpSettings = useMcpPolicy(Boolean(webmcp));\n const wrapWebMcp = useWebMcpHost(webmcp, { identity: String(auth.user?.id ?? '') + ':' + (session.session?.csrfToken ?? ''), permissionKey: [...auth.permissions].sort().join('|'),\n enabled: Boolean(auth.user) && webmcpSettings.isSuccess && webmcpSettings.data.webMcpEnabled,\n locked: lock.hasPassword() && lock.isLocked, basePath: adminPaths.basePath, path: location.pathname, title,\n routes: [{ path: '/', title: '首页' }, ...personalMenuPages.map(page => ({ path: page.path, title: page.label })),\n ...(canViewMcp ? [{ path: mcpSettingsPage.path, title: mcpSettingsPage.label }] : []),\n ...flat.filter(menu => menu.status === 'enabled' && menu.path !== mcpSettingsPage.path && !personalMenuPages.some(page => page.path === menu.path)).map(menu => ({ path: menu.path, title: menu.title })),\n ...pages.filter(page => auth.permissions.includes('*') || auth.permissions.includes(page.permission)).map(page => ({ path: page.path, title: page.title }))], navigate });\n if (menuQuery.isError || mounted.enabled && mounted.query.isError)\n return <Result status=\"error\" title=\"导航加载失败\" subTitle={(menuQuery.error ?? mounted.query.error)?.message} extra={<Button onClick={() => {\n void menuQuery.refetch();\n if (mounted.enabled)\n void mounted.query.refetch();\n }}>重试</Button>}/>;\n if (menuQuery.isPending || mounted.enabled && mounted.query.isPending)\n return <PageLoading />;\n const content = <RouteErrorBoundary><Suspense fallback={<PageLoading />}><KeepAliveOutlet keepAlivePaths={cachePaths} openPaths={openPaths} refreshVersion={versions} animation={preferences.reduceMotion ? 'none' : preferences.routeAnimation}/></Suspense></RouteErrorBoundary>;\n const body = <TabsMetaContext.Provider value={tabMeta}>{content}</TabsMetaContext.Provider>;\n if (lock.hasPassword() && lock.isLocked)\n return wrapWebMcp(<LockPanel lock={lock} mode={null} onClose={() => { }}/>);\n if (hostPage?.layout === 'workspace')\n return wrapWebMcp(body);\n const visibleTabs = tabs.tabs.filter(tab => allowed.has(tab.key) || pages.some(page => page.navigation === false && page.path === tab.key && (auth.permissions.includes('*') || auth.permissions.includes(page.permission))))\n .map(tab => tab.title === tab.key ? { ...tab, title: flat.find(menu => menu.path === tab.key)?.title ?? pages.find(page => page.path === tab.key)?.title ?? personalMenuPages.find(page => page.path === tab.key)?.label ?? (tab.key === mcpSettingsPage.path ? mcpSettingsPage.label : tab.title) } : tab);\n const logout = () => {\n const perform = () => auth.logout().catch(error => { void message.error(error instanceof Error ? error.message : '退出失败,请重试'); throw error; });\n if (preferences.confirmLogout) modal.confirm({ title: '退出登录', content: '确定退出当前账号?', onOk: perform });\n else void perform().catch(() => {});\n };\n const actions = <>\n {preferences.topbarClock !== 'off' && <TopbarClock mode={preferences.topbarClock} showDate={preferences.topbarClockShowDate}/>}\n {preferences.showMenuSearch && <MenuSearchInput menus={flat} recentMenus={recent.recents.flatMap(id => { const item = flat.find(menu => menu.id === id); return item ? [item] : []; })} onClearRecents={recent.clear} onRemoveRecent={recent.remove}/>}\n {preferences.showFavorites && <FavoriteMenus menus={flat} current={currentMenu} favorites={favorites}/>}\n {lock.hasPassword() && lock.hasPassword() && <Tooltip title=\"锁屏\"><Button type=\"text\" className=\"arc-layout-desktop-action\" aria-label=\"锁屏\" icon={<LockKeyhole size={17}/>} onClick={lock.lock}/></Tooltip>}\n <PreferencesPanel lock={lock} homePaths={flat.map(menu => ({ value: menu.path, label: menu.title }))}/>\n <Tooltip title={dark ? '切换浅色主题' : '切换深色主题'}><Button type=\"text\" aria-label={dark ? '切换浅色主题' : '切换深色主题'} disabled={!canEditPreference('colorMode')} icon={dark ? <Sun size={17}/> : <Moon size={17}/>} onClick={() => setPreferences({ colorMode: dark ? 'light' : 'dark' })}/></Tooltip>\n {preferences.showFullscreen && <Tooltip title=\"浏览器全屏\"><Button type=\"text\" className=\"arc-layout-desktop-action\" aria-label=\"全屏\" icon={<Maximize size={17}/>} onClick={() => {\n if (document.fullscreenElement)\n void document.exitFullscreen();\n else\n void document.documentElement.requestFullscreen();\n }}/></Tooltip>}\n <Dropdown trigger={['click']} placement=\"bottomRight\" popupRender={menu => <AccountVersionPopup versionInfo={options.versionInfo}>{menu}</AccountVersionPopup>} menu={{ items: [\n { key: 'profile', label: '个人中心', icon: <UserRound size={16}/>, onClick: () => navigate('/profile') },\n ...(lock.hasPassword() && lock.hasPassword() ? [{ key: 'lock', label: '锁屏', icon: <LockKeyhole size={16}/>, onClick: lock.lock }] : []),\n { type: 'divider' }, { key: 'logout', label: '退出登录', icon: <LogOut size={16}/>, onClick: logout },\n ] }}><button type=\"button\" className=\"arc-layout-user\" aria-label=\"账户菜单\"><Avatar size={28} src={auth.user?.avatar || undefined} icon={<UserRound size={16}/>}/>\n <span className=\"arc-layout-user__name\">{auth.user?.nickname ?? auth.user?.username}</span></button></Dropdown>\n </>;\n return wrapWebMcp(<>\n {preferences.showProgressBar && <NavigationProgress />}\n <ContainerLayout preferences={preferences} dark={dark} mobile={mobile} collapsed={collapsed} maximized={contentFullscreen} title={title} brand={options.brand?.name ?? 'ArcBase'} logo={preferences.showLogo ? <AppLogo size={28}/> : null} menus={routes} path={location.pathname} onCollapse={setCollapsed} onNavigate={navigate} onRestore={() => setContentFullscreen(false)} actions={actions} breadcrumb={preferences.showBreadcrumb && <NavigationBreadcrumb menus={data} path={location.pathname} title={title} isFavorite={favorites.isFavorite} toggleFavorite={favorites.toggle}/>} tabbar={preferences.enableTabs ? <LayoutTabbar tabs={visibleTabs} store={tabs} path={location.pathname} preferences={preferences} maximized={contentFullscreen} onNavigate={navigate} onRefresh={refresh} onClose={close} onMaximize={() => setContentFullscreen(value => !value)}/> : null}>\n {body}\n </ContainerLayout>\n {preferences.showBackTop && <BackTop target={() => document.querySelector('.admin-content') as HTMLElement}/>}\n </>);\n}\nfunction HomeEntry() {\n const { preferences, ready } = usePreferences();\n const navigate = useNavigate();\n const menus = useCurrentUserMenuTree();\n useEffect(() => {\n if (!ready || !menus.isSuccess || !hasPostLoginHome())\n return;\n clearPostLoginHome();\n const allowed = (items: Menu[]): boolean => items.some(menu => menu.visible !== false && menu.status === 'enabled' && menu.type !== 'button' && (menu.path === preferences.homePath || allowed(menu.children ?? [])));\n if (preferences.homePath !== '/' && (personalMenuPages.some(page => page.path === preferences.homePath) || allowed(menus.data ?? [])))\n navigate(preferences.homePath, { replace: true });\n }, [ready, menus.isSuccess, menus.data, preferences.homePath, navigate]);\n const Page = pageComponents['/'];\n return <Page />;\n}\nfunction AuthenticatedRoutes({ webmcp }: { webmcp?: ArcBaseWebMcpOptions }) {\n const auth = useAuth(), location = useLocation(), { client } = useArcBase();\n const canViewMcp = canViewMcpSettings(auth.permissions, auth.superAdmin);\n const menuQuery = useCurrentUserMenuTree(), mounted = useMountedAdminModules();\n const paths = new Set<string>(['/', ...personalMenuPages.map(page => page.path)]);\n if (canViewMcp) paths.add(mcpSettingsPage.path);\n const visit = (menus: Menu[]) => menus.forEach(menu => {\n if (menu.type !== 'button' && menu.path && menu.visible !== false && (menu.path !== mcpSettingsPage.path || canViewMcp))\n paths.add(menu.path);\n if (menu.children)\n visit(menu.children);\n });\n visit(menuQuery.data ?? []);\n const pageProps: ArcBasePageProps = { client, user: auth.user!, permissions: auth.permissions, hasPermission: permission => auth.permissions.includes('*') || auth.permissions.includes(permission) };\n if (auth.user?.requirePasswordChange && location.pathname !== '/profile')\n return <Navigate to=\"/profile?tab=security\" replace/>;\n return <Routes><Route element={<Shell webmcp={webmcp}/>}>\n {Object.entries(pageComponents).map(([path, Page]) => <Route key={path} path={path} element={paths.has(path) ? path === '/' ? <HomeEntry /> : <Page user={auth.user}/> : denied(true)}/>)}\n {mounted.modules.flatMap(module => module.pages).map(page => <Route key={page.path} path={page.path} element={(page.navigation === false || paths.has(page.path)) && pageProps.hasPermission(page.permission) ? <page.component {...pageProps}/> : denied(true)}/>)}\n <Route path=\"/login\" element={<Navigate to={safeLoginRedirect(location.search)} replace/>}/>\n <Route path=\"/forbidden\" element={denied(true)}/><Route path=\"*\" element={denied(foundationPagePaths.has(location.pathname))}/>\n </Route></Routes>;\n}\nfunction UpdateFrame({children, updates}: {children: ReactNode; updates?: ArcBaseUpdateOptions | false}) {\n const {basePath} = useAdminPaths();\n return <AntTheme><SafeUpdateProvider options={updates} basePath={basePath}>{children}</SafeUpdateProvider></AntTheme>;\n}\nexport function AntApp({ webmcp, updates }: { webmcp?: ArcBaseWebMcpOptions; updates?: ArcBaseUpdateOptions | false }) {\n const auth = useAuth(), location = useLocation();\n if (location.pathname === '/auth/callback')\n return <AntTheme><IdentityCallback /></AntTheme>;\n if (auth.status === 'unavailable')\n return <AntTheme><Result status=\"error\" title=\"会话校验失败\" subTitle={auth.error?.message} extra={<Button loading={auth.refreshing} onClick={() => void auth.refresh()}>重试</Button>}/></AntTheme>;\n if (auth.status === 'checking')\n return <AntTheme><PageLoading /></AntTheme>;\n if (!auth.user)\n return <UpdateFrame updates={updates}><Routes><Route path=\"/login\" element={<LoginPage onLogin={auth.login}/>}/><Route path=\"*\" element={<Navigate to={'/login?redirect=' + encodeURIComponent(location.pathname + location.search)} replace/>}/></Routes></UpdateFrame>;\n return <PreferencesProvider><RealtimeBridge><UpdateFrame updates={updates}><AuthenticatedRoutes webmcp={webmcp}/></UpdateFrame></RealtimeBridge></PreferencesProvider>;\n}\n"]}
1
+ {"version":3,"file":"App-nh6_qOo8.js","mappings":"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","names":["__iconData","__iconData$25","createLucideIcon","__iconData$24","__iconData$23","__iconData$22","__iconData$21","__iconData$20","__iconData$19","__iconData$18","__iconData$17","Menu","__iconData$16","__iconData$15","__iconData$14","__iconData$13","__iconData$12","__iconData$11","__iconData$10","__iconData$9","__iconData$8","__iconData$7","__iconData$6","__iconData$5","__iconData$4","__iconData$3","Upload","__iconData$2","__iconData$1","X","markPostLoginHome","POST_LOGIN_HOME_KEY","hasPostLoginHome","clearPostLoginHome","__vitePreload","n","loaders","TopbarClock","now","setNow","useState","useEffect","interval","timeout","formatTopbarClock","mode","showDate","readAccountVersionInfo","meta","source","name","values","explicit","result","key","value","AccountVersionPopup","theme","info","versionInfo","children","detail","token","lazyIllustration","component","cache","exportName","lazy","m","emptyIllustration","Light","Dark","style","size","Suspense","isChunkLoadError","error","RouteErrorBoundary","useLocation","useAdminOptions","PageErrorBoundary","pathname","React","AdminPathsContext","props","state","reportAdminError","report","formatDateTime","componentStack","copyTextWithToast","chunkFailed","Empty","Button","RefreshCw","Home","Copy","LockPanel","auth","useAuth","usePreferences","App","lock","Result","Form","password","message","Input","Modal","onClose","preferences","getFieldValue","isReactComponent","val","ensureLucideIcons","LucideIcons","mod","registry","a","b","listeners","l","loadPromise","subscribe","cb","useLucideIconsReady","useSyncExternalStore","useAllIconNames","allNames","renderLucideIcon","Icon","DynamicIcon","iconProps","fallback","applyWeekStart","weekStart","pref","dayjs","updateLocale","PreferencesProvider","CoreProvider","useThemeController","context","useContext","ThemeControllerContext","createContext","TokenBridge","dark","_Fragment","AntTheme","optional","useOptionalPreferences","cached","readCachedPreferences","hostTheme","useMemo","systemDark","usePrefersDark","refresh","wait","msUntilScheduleBoundary","timer","isScheduledDarkNow","color","getThemeColorVars","radius","font","DarkContext","ConfigProvider","locale","enUS","zhCN","FeedbackBridge","usePreferencesPanel","prefsVisible","setPrefsVisible","prefsSearch","setPrefsSearch","handleCopyPreferences","useCallback","overrides","handleExportPreferences","downloadBlob","Toast","importPrefsVisible","setImportPrefsVisible","importPrefsText","setImportPrefsText","parsed","sanitized","sanitizeImportedPreferences","setPreferences","PreferencesPanel","panel","isDark","useAntDark","lockMode","setLockMode","closeImport","Tooltip","Settings","Drawer","hasEditablePreferences","Download","RotateCcw","confirmDanger","resetPreferences","Search","event","Spin","PreferencesSheetBody","homePaths","ModalFooter","RouteViewTransition","animation","ViewTransition","ENTER_CLASS","EXIT_CLASS","ROUTE_BACK_TRANSITION_TYPE","KeepAliveOutlet","outlet","useOutlet","cacheRef","useRef","prevPathRef","isCacheable","keepAlivePaths","currentVersion","refreshVersion","existing","openPaths","MAX_CACHE","oldest","k","useLayoutEffect","container","scrollContainerSelector","prev","prevEntry","path","entry","Activity","MenuSearchInput","open","setOpen","openedOnce","setOpenedOnce","buttonRef","shortcutsEnabled","handler","keyboard","current","activeElement","MenuCommandPalette","visible","items","item","firstPath","menu","chain","child","NavigationBreadcrumb","navigate","useNavigate","matched","menus","home","Space","index","target","Breadcrumb","isFavorite","toggleFavorite","Star","NavigationProgress","previous","progress","setProgress","finish","hide","FavoriteMenus","move","ids","favorites","id","delta","Dropdown","logoGradientAxis","axis","logoStopCssColor","percent","mixWith","AppLogo","uid","useId","hostBrand","useHostBrand","options","logo","hostDefault","className","gradientId","cls","LOGO_VIEW_BOX","LOGO_FACES","face","LOGO_STROKE_WIDTH","LoginPage","appTitle","useAdminTitle","location","params","redirect","redirectTo","prefillUsername","loading","setLoading","sessionConflict","setSessionConflict","conflictResolving","setConflictResolving","captchaChallenge","setCaptchaChallenge","identityQuery","useIdentityCapabilities","captchaQuery","usePublicCaptcha","captchaEnabled","captchaRequired","effectiveCaptchaId","effectiveCaptchaSvg","fetchCaptcha","loginRules","loginInitial","loginForm","useLoginForm","invalidated","setInvalidated","invalidatedTaken","setLoginValue","takeAuthInvalidatedReason","navigateAfterLogin","handleLogin","onLogin","GoaError","conflict","ApiLoginConflictSchema","handleResolveConflict","resolveSessionConflict","handleLoginSubmit","renderLoginForm","EmbeddedIdentityLogin","LoginField","User","Lock","CAPTCHA_BOX_STYLE","LoginFormError","PRIMARY_BUTTON_STYLE","invalidatedTitle","INVALIDATED_TITLES","brand","Check","feature","Title","Text","ShieldAlert","SessionConflictModal","Typography","LayoutHeader","showTrigger","mobile","collapsed","jsx","PanelLeftOpen","PanelLeftClose","onToggle","actions","each","isArrayLike","t","o","setStyles","s","e","isNull","isBoolean","isNumber","numberToCssPx","getStyles","isString","c","r","getCSSVal","from","cacheUpdateContextual","i","getApi","isArray","isFunction","isObject","g","S","equal","u","mergeParms","flush","f","getDebouncer","_","d","isPlainObject","assignDeep","removeUndefinedProperties","keys","deduplicateArray","getDomTokensArray","getAttr","bind","setAttrs","domTokenListOperation","domTokenListAttr","addAttrClass","removeAttrClass","createDomTokenListClass","removeClass","isElement","is","closest","findFirst","createOrKeepArray","parent","removeElements","D","createDiv","getTrustedTypePolicy","contents","validFiniteNumber","roundCssNumber","parseToZeroOrNumber","z","getElmWidthHeightProperty","C","$","elementHasDimensions","domRectHasDimensions","runEachAndClear","removeEventListener","stopPropagation","preventDefault","addEventListener","stopAndPrevent","sanitizeAxis","getAxis","capNumber","removeEvent","manageListener","addEvent","push","isEmptyArray","M","getInstancePluginModuleInstance","L","V","q","F","O","st","ft","St","vt","gt","x","E","H","overflowCssValueToOverflowStyle","Y","capitalizeFirstLetter","hasOwnProperty","At","Tt","kt","concat","getOptionsDiff","isEmptyObject","opsStringify","getPropByPath","Rt","getNativeScrollbarSize","appendChildren","A","I","getFractionalSize","getNativeScrollbarsHiding","addClass","P","getFocusableScrollers","getActiveElement","swallowFocusEvents","focusElement","isHTMLElement","createDOM","getNonce","createEventListenerHub","createCache","equalXY","v","isBodyElement","h","Mt","w","p","removeAttrs","addZoomListener","Vt","createEnvironment","destroy","updateElements","find","createEventContentChange","observerCallback","noop","inArray","getStaticPluginModuleInstance","xt","ct","onSizeChangedCallbackProxy","domRectAppeared","Lt","debounce","resizeObserverCallback","et","isHeightIntrinsic","at","triggerOnTrinsicChangedCallback","intersectionObserverCallback","onSizeChanged","createSizeObserver","B","j","y","getDirectionIsRTL","createDebouncedObservesUpdate","fn","getEnvironment","Et","equalWH","hasAttrClass","N","W","getElementScroll","J","T","scrollElementTo","setDirection","onTrinsicChanged","onContentMutation","onHostMutation","createTrinsicObserver","R","createDOMObserver","ignoreMutationFromOptions","liesBetween","isUndefined","resolveInitialization","dynamicInitializationElement","initScrollTimeline","cancelAnimation","isDefaultDirectionScrollCoordinates","getTrasformTranslateValue","getViewportPercent","getAxisValue","scrollbarStructureAddRemoveClass","scrollbarStyle","scrollbarsAddRemoveClass","refreshScrollbarsHandleLength","createScrollbarStyleFn","refreshScrollbarsHandleOffset","getScrollCoordinatesPercent","refreshScrollbarsScrollCoordinates","refreshScrollbarsScrollbarOffset","styleScrollbarPosition","getTranslateValue","generateScrollbarDOM","dt","pt","selfClearTimeout","scrollOffsetElementScrollBy","createInteractiveScrollEvents","getBoundingClientRect","getHandleOffset","scrollRelative","moveHandleRelative","releasePointerCapture","zt","yt","Ot","getFocusedElement","hasAttr","skipEventIfSleeping","isHoverablePointerType","createScrollbarsSetupElements","createScrollbarsSetupEvents","manageScrollbarsAutoHideInstantInteraction","manageScrollbarsAutoHide","mt","onHostMouseEnter","onHostMouseLeave","manageAutoHideSuspension","U","G","K","Q","Z","tt","nt","ot","setScrollbarVisibility","ht","ut","$t","Ct","bt","wt","_t","getDocumentWindow","staticInitializationElement","elementHasOverflow","overflowIsVisible","elementIsGenerated","addRemoveAttrClass","rt","it","unwrap","equalTRBL","topRightBottomLeft","setMeasuringMode","getFlowDirectionStyles","getMeasuredScrollCoordinates","hasDimensions","getOverflowAmount","getViewportOverflowStyle","getAxisOverflowStyle","overflowBehaviorToOverflowStyle","setViewportOverflowStyle","createAllOverflowStyleClassNames","createViewportOverflowStyleClassName","getZeroScrollCoordinates","getShowNativeOverlaidScrollbars","getWindowSize","lt","getElementOverflowStyle","sanitizeScrollCoordinates","createStructureSetupElements","createTrinsicUpdateSegment","createPaddingUpdateSegment","createOverflowUpdateSegment","createOptionCheck","createStructureSetup","createObserversSetup","update","createScrollbarsSetup","updateHintsAreTruthy","Pt","getInstance","validateOptions","triggerEvent","createSetups","removeInstance","translateScrollbarStructure","translateScrollbarsSetupElement","addInstance","registerPluginModuleInstances","OverlayScrollbars","cancelInitialization","addPlugins","setNonce","setTrustedTypePolicy","ScrollArea","Element","element","setElement","node","scrollRef","initialize","useOverlayScrollbars","scroll","horizontal","vertical","LayoutSidebar","onHover","rail","LayoutGrid","title","canViewMcpSettings","superAdmin","permissions","mcpSettingsPage","withPersonalMenu","personalPaths","personalMenuPages","page","settingsRootKey","settingsKey","integrationRootKey","integrationKey","removePersonal","profile","profileIcon","settingsIcon","apiTokenIcon","canViewMcp","mcpIcon","integrationIndex","integrationIcon","menuChain","firstMenuPath","menuParentKeys","parents","accordionKeys","opened","next","closed","LayoutMenu","selectedBg","openKeys","setOpenKeys","selected","menuItems","convert","nodes","inline","accordion","scrollIntoView","frame","onSelect","ContainerLayout","darkToken","hovered","setHovered","layout","split","root","sideMenus","sidebar","expandedOnHover","effectiveCollapsed","railWidth","width","reserved","maximized","siderDark","headerDark","tone","tabbar","select","match","onCollapse","onNavigate","isCollapsed","topMenus","sidebarTheme","breadcrumb","Minimize","onRestore","LayoutTabbar","clip","observed","observer","entries","sync","tab","mutations","tabs","setAnimation","clearAnimation","onRefresh","Pin","store","active","Tabs","Ellipsis","action","ChevronDown","Maximize","onMaximize","denied","known","Link","safeLoginRedirect","search","Shell","useIsMobile","menuQuery","useCurrentUserMenuTree","mounted","useMountedAdminModules","useLockScreen","useFavoriteMenus","contentFullscreen","setContentFullscreen","setCollapsed","versions","setVersions","useTabsStore","openTabs","flat","visit","data","recent","useRecentMenus","useAutoLock","useLayoutShortcuts","routes","settings","integration","UserRound","KeyRound","Settings2","Sparkles","PlugZap","pages","module","hostPage","currentMenu","allowed","addTab","setActiveKey","startTransition","close","removeTab","tabMeta","cachePaths","adminPaths","useAdminPaths","useArcBase","webmcpSettings","useMcpPolicy","webmcp","wrapWebMcp","useWebMcpHost","session","PageLoading","content","body","TabsMetaContext","visibleTabs","logout","perform","modal","LockKeyhole","canEditPreference","Sun","Moon","LogOut","Avatar","BackTop","HomeEntry","ready","Page","pageComponents","AuthenticatedRoutes","paths","pageProps","permission","Navigate","Routes","Route","foundationPagePaths","UpdateFrame","SafeUpdateProvider","updates","AntApp","IdentityCallback","RealtimeBridge","pageLoaders","loader"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,53,54],"sources":["../../../../node_modules/lucide-react/dist/esm/icons/check.mjs","../../../../node_modules/lucide-react/dist/esm/icons/chevron-down.mjs","../../../../node_modules/lucide-react/dist/esm/icons/download.mjs","../../../../node_modules/lucide-react/dist/esm/icons/house.mjs","../../../../node_modules/lucide-react/dist/esm/icons/key-round.mjs","../../../../node_modules/lucide-react/dist/esm/icons/lock-keyhole.mjs","../../../../node_modules/lucide-react/dist/esm/icons/lock.mjs","../../../../node_modules/lucide-react/dist/esm/icons/log-out.mjs","../../../../node_modules/lucide-react/dist/esm/icons/menu.mjs","../../../../node_modules/lucide-react/dist/esm/icons/minimize.mjs","../../../../node_modules/lucide-react/dist/esm/icons/moon.mjs","../../../../node_modules/lucide-react/dist/esm/icons/panel-left-close.mjs","../../../../node_modules/lucide-react/dist/esm/icons/panel-left-open.mjs","../../../../node_modules/lucide-react/dist/esm/icons/pin.mjs","../../../../node_modules/lucide-react/dist/esm/icons/plug-zap.mjs","../../../../node_modules/lucide-react/dist/esm/icons/refresh-cw.mjs","../../../../node_modules/lucide-react/dist/esm/icons/settings-2.mjs","../../../../node_modules/lucide-react/dist/esm/icons/settings.mjs","../../../../node_modules/lucide-react/dist/esm/icons/shield-alert.mjs","../../../../node_modules/lucide-react/dist/esm/icons/sparkles.mjs","../../../../node_modules/lucide-react/dist/esm/icons/star.mjs","../../../../node_modules/lucide-react/dist/esm/icons/sun.mjs","../../../../node_modules/lucide-react/dist/esm/icons/upload.mjs","../../../../node_modules/lucide-react/dist/esm/icons/user-round.mjs","../../../../node_modules/lucide-react/dist/esm/icons/user.mjs","../../../../node_modules/lucide-react/dist/esm/icons/x.mjs","../../src/lib/post-login.ts","../../src/page-registry.ts","../../src/components/TopbarClock.tsx","../../src/components/account-version-info.ts","../../src/components/AccountVersionInfo.tsx","../../src/components/EmptyIllustration.tsx","../../src/components/PageErrorBoundary.tsx","../../src/layouts/admin/LockPanel.tsx","../../src/utils/icons.tsx","../../src/components/DynamicIcon.tsx","../../src/lib/week-start.ts","../../src/hooks/PreferencesProvider.tsx","../../src/providers/theme-controller.ts","../../src/admin/theme.tsx","../../src/layouts/admin/usePreferencesPanel.tsx","../../src/layouts/admin/PreferencesPanel.tsx","../../src/layouts/route-transition-types.ts","../../src/layouts/RouteViewTransition.tsx","../../src/layouts/KeepAliveOutlet.tsx","../../src/components/MenuSearchInput.tsx","../../src/components/NavigationBreadcrumb.tsx","../../src/components/NavigationProgress.tsx","../../src/components/FavoriteMenus.tsx","../../src/lib/brand-logo.ts","../../src/components/AppLogo.tsx","../../src/pages/login/LoginPage.tsx","../../src/layouts/react-antd-admin/LayoutHeader.tsx","../../node_modules/overlayscrollbars/overlayscrollbars.mjs","../../node_modules/overlayscrollbars-react/overlayscrollbars-react.mjs","../../src/components/ScrollArea.tsx","../../src/layouts/react-antd-admin/LayoutSidebar.tsx","../../src/layouts/react-antd-admin/menu-model.ts","../../src/layouts/react-antd-admin/LayoutMenu.tsx","../../src/layouts/react-antd-admin/ContainerLayout.tsx","../../src/layouts/react-antd-admin/LayoutTabbar.tsx","../../src/App.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"check\",\n size: 24,\n node: [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]]\n};\n__iconData.node;\nconst Check = createLucideIcon(__iconData);\n\nexport { __iconData, Check as default };\n//# sourceMappingURL=check.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"chevron-down\",\n size: 24,\n node: [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]]\n};\n__iconData.node;\nconst ChevronDown = createLucideIcon(__iconData);\n\nexport { __iconData, ChevronDown as default };\n//# sourceMappingURL=chevron-down.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"download\",\n size: 24,\n node: [\n [\"path\", { d: \"M12 15V3\", key: \"m9g1x1\" }],\n [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }],\n [\"path\", { d: \"m7 10 5 5 5-5\", key: \"brsn70\" }]\n ]\n};\n__iconData.node;\nconst Download = createLucideIcon(__iconData);\n\nexport { __iconData, Download as default };\n//# sourceMappingURL=download.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"house\",\n size: 24,\n node: [\n [\"path\", { d: \"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\", key: \"5wwlr5\" }],\n [\n \"path\",\n {\n d: \"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\",\n key: \"r6nss1\"\n }\n ]\n ],\n aliases: [\"home\"]\n};\n__iconData.node;\nconst House = createLucideIcon(__iconData);\n\nexport { __iconData, House as default };\n//# sourceMappingURL=house.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"key-round\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\",\n key: \"1s6t7t\"\n }\n ],\n [\"circle\", { cx: \"16.5\", cy: \"7.5\", r: \".5\", fill: \"currentColor\", key: \"w0ekpg\" }]\n ]\n};\n__iconData.node;\nconst KeyRound = createLucideIcon(__iconData);\n\nexport { __iconData, KeyRound as default };\n//# sourceMappingURL=key-round.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"lock-keyhole\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"16\", r: \"1\", key: \"1au0dj\" }],\n [\"rect\", { x: \"3\", y: \"10\", width: \"18\", height: \"12\", rx: \"2\", key: \"6s8ecr\" }],\n [\"path\", { d: \"M7 10V7a5 5 0 0 1 10 0v3\", key: \"1pqi11\" }]\n ]\n};\n__iconData.node;\nconst LockKeyhole = createLucideIcon(__iconData);\n\nexport { __iconData, LockKeyhole as default };\n//# sourceMappingURL=lock-keyhole.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"lock\",\n size: 24,\n node: [\n [\"rect\", { width: \"18\", height: \"11\", x: \"3\", y: \"11\", rx: \"2\", ry: \"2\", key: \"1w4ew1\" }],\n [\"path\", { d: \"M7 11V7a5 5 0 0 1 10 0v4\", key: \"fwvmzm\" }]\n ]\n};\n__iconData.node;\nconst Lock = createLucideIcon(__iconData);\n\nexport { __iconData, Lock as default };\n//# sourceMappingURL=lock.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"log-out\",\n size: 24,\n node: [\n [\"path\", { d: \"m16 17 5-5-5-5\", key: \"1bji2h\" }],\n [\"path\", { d: \"M21 12H9\", key: \"dn1m92\" }],\n [\"path\", { d: \"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\", key: \"1uf3rs\" }]\n ]\n};\n__iconData.node;\nconst LogOut = createLucideIcon(__iconData);\n\nexport { __iconData, LogOut as default };\n//# sourceMappingURL=log-out.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"menu\",\n size: 24,\n node: [\n [\"path\", { d: \"M4 5h16\", key: \"1tepv9\" }],\n [\"path\", { d: \"M4 12h16\", key: \"1lakjw\" }],\n [\"path\", { d: \"M4 19h16\", key: \"1djgab\" }]\n ]\n};\n__iconData.node;\nconst Menu = createLucideIcon(__iconData);\n\nexport { __iconData, Menu as default };\n//# sourceMappingURL=menu.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"minimize\",\n size: 24,\n node: [\n [\"path\", { d: \"M8 3v3a2 2 0 0 1-2 2H3\", key: \"hohbtr\" }],\n [\"path\", { d: \"M21 8h-3a2 2 0 0 1-2-2V3\", key: \"5jw1f3\" }],\n [\"path\", { d: \"M3 16h3a2 2 0 0 1 2 2v3\", key: \"198tvr\" }],\n [\"path\", { d: \"M16 21v-3a2 2 0 0 1 2-2h3\", key: \"ph8mxp\" }]\n ]\n};\n__iconData.node;\nconst Minimize = createLucideIcon(__iconData);\n\nexport { __iconData, Minimize as default };\n//# sourceMappingURL=minimize.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"moon\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\",\n key: \"kfwtm\"\n }\n ]\n ]\n};\n__iconData.node;\nconst Moon = createLucideIcon(__iconData);\n\nexport { __iconData, Moon as default };\n//# sourceMappingURL=moon.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"panel-left-close\",\n size: 24,\n node: [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M9 3v18\", key: \"fh3hqa\" }],\n [\"path\", { d: \"m16 15-3-3 3-3\", key: \"14y99z\" }]\n ],\n aliases: [\"sidebar-close\"]\n};\n__iconData.node;\nconst PanelLeftClose = createLucideIcon(__iconData);\n\nexport { __iconData, PanelLeftClose as default };\n//# sourceMappingURL=panel-left-close.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"panel-left-open\",\n size: 24,\n node: [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M9 3v18\", key: \"fh3hqa\" }],\n [\"path\", { d: \"m14 9 3 3-3 3\", key: \"8010ee\" }]\n ],\n aliases: [\"sidebar-open\"]\n};\n__iconData.node;\nconst PanelLeftOpen = createLucideIcon(__iconData);\n\nexport { __iconData, PanelLeftOpen as default };\n//# sourceMappingURL=panel-left-open.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"pin\",\n size: 24,\n node: [\n [\"path\", { d: \"M12 17v5\", key: \"bb1du9\" }],\n [\n \"path\",\n {\n d: \"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z\",\n key: \"1nkz8b\"\n }\n ]\n ]\n};\n__iconData.node;\nconst Pin = createLucideIcon(__iconData);\n\nexport { __iconData, Pin as default };\n//# sourceMappingURL=pin.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"plug-zap\",\n size: 24,\n node: [\n [\n \"path\",\n { d: \"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z\", key: \"goz73y\" }\n ],\n [\"path\", { d: \"m2 22 3-3\", key: \"19mgm9\" }],\n [\"path\", { d: \"M7.5 13.5 10 11\", key: \"7xgeeb\" }],\n [\"path\", { d: \"M10.5 16.5 13 14\", key: \"10btkg\" }],\n [\"path\", { d: \"m18 3-4 4h6l-4 4\", key: \"16psg9\" }]\n ],\n aliases: [\"plug-zap-2\"]\n};\n__iconData.node;\nconst PlugZap = createLucideIcon(__iconData);\n\nexport { __iconData, PlugZap as default };\n//# sourceMappingURL=plug-zap.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"refresh-cw\",\n size: 24,\n node: [\n [\"path\", { d: \"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\", key: \"v9h5vc\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }],\n [\"path\", { d: \"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\", key: \"3uifl3\" }],\n [\"path\", { d: \"M8 16H3v5\", key: \"1cv678\" }]\n ]\n};\n__iconData.node;\nconst RefreshCw = createLucideIcon(__iconData);\n\nexport { __iconData, RefreshCw as default };\n//# sourceMappingURL=refresh-cw.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"settings-2\",\n size: 24,\n node: [\n [\"path\", { d: \"M14 17H5\", key: \"gfn3mx\" }],\n [\"path\", { d: \"M19 7h-9\", key: \"6i9tg\" }],\n [\"circle\", { cx: \"17\", cy: \"17\", r: \"3\", key: \"18b49y\" }],\n [\"circle\", { cx: \"7\", cy: \"7\", r: \"3\", key: \"dfmy0x\" }]\n ]\n};\n__iconData.node;\nconst Settings2 = createLucideIcon(__iconData);\n\nexport { __iconData, Settings2 as default };\n//# sourceMappingURL=settings-2.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"settings\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\",\n key: \"1i5ecw\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n ]\n};\n__iconData.node;\nconst Settings = createLucideIcon(__iconData);\n\nexport { __iconData, Settings as default };\n//# sourceMappingURL=settings.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"shield-alert\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ],\n [\"path\", { d: \"M12 8v4\", key: \"1got3b\" }],\n [\"path\", { d: \"M12 16h.01\", key: \"1drbdi\" }]\n ]\n};\n__iconData.node;\nconst ShieldAlert = createLucideIcon(__iconData);\n\nexport { __iconData, ShieldAlert as default };\n//# sourceMappingURL=shield-alert.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"sparkles\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\",\n key: \"1s2grr\"\n }\n ],\n [\"path\", { d: \"M20 2v4\", key: \"1rf3ol\" }],\n [\"path\", { d: \"M22 4h-4\", key: \"gwowj6\" }],\n [\"circle\", { cx: \"4\", cy: \"20\", r: \"2\", key: \"6kqj1y\" }]\n ],\n aliases: [\"stars\"]\n};\n__iconData.node;\nconst Sparkles = createLucideIcon(__iconData);\n\nexport { __iconData, Sparkles as default };\n//# sourceMappingURL=sparkles.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"star\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\",\n key: \"r04s7s\"\n }\n ]\n ]\n};\n__iconData.node;\nconst Star = createLucideIcon(__iconData);\n\nexport { __iconData, Star as default };\n//# sourceMappingURL=star.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"sun\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n ]\n};\n__iconData.node;\nconst Sun = createLucideIcon(__iconData);\n\nexport { __iconData, Sun as default };\n//# sourceMappingURL=sun.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"upload\",\n size: 24,\n node: [\n [\"path\", { d: \"M12 3v12\", key: \"1x0j5s\" }],\n [\"path\", { d: \"m17 8-5-5-5 5\", key: \"7q97r8\" }],\n [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }]\n ]\n};\n__iconData.node;\nconst Upload = createLucideIcon(__iconData);\n\nexport { __iconData, Upload as default };\n//# sourceMappingURL=upload.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"user-round\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"8\", r: \"5\", key: \"1hypcn\" }],\n [\"path\", { d: \"M20 21a8 8 0 0 0-16 0\", key: \"rfgkzh\" }]\n ],\n aliases: [\"user-2\"]\n};\n__iconData.node;\nconst UserRound = createLucideIcon(__iconData);\n\nexport { __iconData, UserRound as default };\n//# sourceMappingURL=user-round.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"user\",\n size: 24,\n node: [\n [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n ]\n};\n__iconData.node;\nconst User = createLucideIcon(__iconData);\n\nexport { __iconData, User as default };\n//# sourceMappingURL=user.mjs.map\n","/**\n * @license lucide-react v1.67.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"x\",\n size: 24,\n node: [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n ]\n};\n__iconData.node;\nconst X = createLucideIcon(__iconData);\n\nexport { __iconData, X as default };\n//# sourceMappingURL=x.mjs.map\n","/**\n * 「登录后默认首页」一次性跳转标记。\n * 登录成功且落地目标为 '/' 时写入 sessionStorage;\n * 首页路由(HomeEntry)读取后按偏好 homePath 决定是否跳转,\n * 偏好就绪后清除标记,避免用户手动访问 '/' 时被劫持。\n */\nconst POST_LOGIN_HOME_KEY = 'arcbase_post_login_home';\nexport function markPostLoginHome() {\n try {\n sessionStorage.setItem(POST_LOGIN_HOME_KEY, '1');\n }\n catch { /* ignore */ }\n}\nexport function hasPostLoginHome(): boolean {\n try {\n return sessionStorage.getItem(POST_LOGIN_HOME_KEY) === '1';\n }\n catch {\n return false;\n }\n}\nexport function clearPostLoginHome() {\n try {\n sessionStorage.removeItem(POST_LOGIN_HOME_KEY);\n }\n catch { /* ignore */ }\n}\n","import type { ComponentType } from 'react';\nconst loaders = import.meta.glob<{\n default: ComponentType<Record<string, unknown>>;\n}>([\n './pages/dashboard/DashboardPage.tsx',\n './pages/system/departments/DepartmentsPage.tsx',\n './pages/system/positions/PositionsPage.tsx',\n './pages/users/UsersPage.tsx',\n './pages/system/menus/MenusPage.tsx',\n './pages/system/roles/RolesPage.tsx',\n './pages/system/user-groups/UserGroupsPage.tsx',\n './pages/system/dicts/DictsPage.tsx',\n './pages/system/settings/SettingsPage.tsx',\n './pages/system/project-info/ProjectInfoPage.tsx',\n './pages/system/api-tokens/ApiTokensPage.tsx',\n './pages/system/mcp/McpSettingsPage.tsx',\n './pages/system/identity-security/IdentitySecurityPage.tsx',\n './pages/system/files/FilesPage.tsx',\n './pages/system/sessions/OnlineSessionsPage.tsx',\n './pages/system/login-logs/LoginLogsPage.tsx',\n './pages/system/operation-logs/OperationLogsPage.tsx',\n './pages/profile/ProfilePage.tsx',\n]);\nexport const pageLoaders = {\n '/': loaders['./pages/dashboard/DashboardPage.tsx'],\n '/system/departments': loaders['./pages/system/departments/DepartmentsPage.tsx'],\n '/system/positions': loaders['./pages/system/positions/PositionsPage.tsx'],\n '/system/users': loaders['./pages/users/UsersPage.tsx'],\n '/system/menus': loaders['./pages/system/menus/MenusPage.tsx'],\n '/system/roles': loaders['./pages/system/roles/RolesPage.tsx'],\n '/system/user-groups': loaders['./pages/system/user-groups/UserGroupsPage.tsx'],\n '/system/dicts': loaders['./pages/system/dicts/DictsPage.tsx'],\n '/system/settings': loaders['./pages/system/settings/SettingsPage.tsx'],\n '/system/project-info': loaders['./pages/system/project-info/ProjectInfoPage.tsx'],\n '/system/api-tokens': loaders['./pages/system/api-tokens/ApiTokensPage.tsx'],\n '/system/mcp': loaders['./pages/system/mcp/McpSettingsPage.tsx'],\n '/system/identity-security': loaders['./pages/system/identity-security/IdentitySecurityPage.tsx'],\n '/system/files': loaders['./pages/system/files/FilesPage.tsx'],\n '/system/sessions': loaders['./pages/system/sessions/OnlineSessionsPage.tsx'],\n '/system/login-logs': loaders['./pages/system/login-logs/LoginLogsPage.tsx'],\n '/system/operation-logs': loaders['./pages/system/operation-logs/OperationLogsPage.tsx'],\n '/profile': loaders['./pages/profile/ProfilePage.tsx'],\n};\n","import { formatTopbarClock } from '@fudanda/react-core/utils/topbar-clock';\nimport { useEffect, useState } from 'react';\nimport type { TopbarClockMode } from '@fudanda/react-core/hooks/usePreferences';\n/**\n * 顶栏时钟:分钟对齐 tick(59 秒内最多晚一分钟,无秒级定时器开销)。\n * 调用方在 `topbarClock === 'off'` 时不渲染。\n */\nexport function TopbarClock({ mode, showDate }: Readonly<{\n mode: Exclude<TopbarClockMode, 'off'>;\n showDate: boolean;\n}>) {\n const [now, setNow] = useState(() => new Date());\n useEffect(() => {\n let interval: ReturnType<typeof setInterval> | undefined;\n const timeout = setTimeout(() => {\n setNow(new Date());\n interval = setInterval(() => setNow(new Date()), 60 * 1000);\n }, (60 - new Date().getSeconds()) * 1000 + 50);\n return () => {\n clearTimeout(timeout);\n if (interval !== undefined)\n clearInterval(interval);\n };\n }, []);\n return (<span className=\"admin-topbar-clock\" title={formatTopbarClock(now, mode, true)}>\n {formatTopbarClock(now, mode, showDate)}\n </span>);\n}\n","import type { ArcBaseVersionInfo } from '@fudanda/react-core/admin/types';\n\ntype VersionDetails = Partial<ArcBaseVersionInfo>;\ntype MetaDocument = Pick<Document, 'querySelector'>;\n\n/** Explicit host data owns the complete identity; HTML metadata is the fallback. */\nexport function readAccountVersionInfo(explicit?: ArcBaseVersionInfo, source: MetaDocument | undefined = globalThis.document): VersionDetails | undefined {\n const meta = (name: string) => source?.querySelector<HTMLMetaElement>(`meta[name=\"arcbase-${name}\"]`)?.content;\n const values: VersionDetails = explicit ?? {\n appVersion: meta('app-version'), sdkVersion: meta('sdk-version'), releaseId: meta('release-id'),\n commit: meta('app-commit'), buildTime: meta('app-build-time'),\n };\n const result: VersionDetails = {};\n for (const key of ['appVersion', 'sdkVersion', 'releaseId', 'commit', 'buildTime'] as const) {\n const value = values[key]?.trim();\n if (value) result[key] = value;\n }\n return result.appVersion || result.sdkVersion || result.releaseId ? result : undefined;\n}\n","import type { ReactNode } from 'react';\nimport { theme } from 'antd';\nimport type { ArcBaseVersionInfo } from '@fudanda/react-core/admin/types';\nimport { readAccountVersionInfo } from './account-version-info';\nimport './account-version-info.css';\n\n/** Information outside the menu has no action, selected state or keyboard stop. */\nexport function AccountVersionPopup({ children, versionInfo }: { children: ReactNode; versionInfo?: ArcBaseVersionInfo }) {\n const { token } = theme.useToken();\n const info = readAccountVersionInfo(versionInfo);\n if (!info) return children;\n const detail = [info.commit ? `业务提交:${info.commit}` : '', info.buildTime ? `构建时间:${info.buildTime}` : ''].filter(Boolean).join('\\n');\n return <div className=\"arc-account-menu-surface\" style={{ background: token.colorBgElevated, borderRadius: token.borderRadiusLG, boxShadow: token.boxShadowSecondary }}>\n {children}\n <footer className=\"arc-account-version\" role=\"note\" aria-label=\"版本信息\" title={detail || undefined}>\n {info.appVersion ? <div className=\"arc-account-version__row\"><span>应用版本</span><span title={info.appVersion}>{info.appVersion}</span></div> : null}\n {info.sdkVersion ? <div className=\"arc-account-version__row\"><span>ArcBase Go SDK</span><span title={info.sdkVersion}>{info.sdkVersion}</span></div> : null}\n {info.releaseId ? <div className=\"arc-account-version__row\"><span>发布批次</span><span title={info.releaseId}>{info.releaseId}</span></div> : null}\n </footer>\n </div>;\n}\n","import { lazy, Suspense, type ComponentType, type CSSProperties, type ReactNode } from 'react';\ntype IllustrationModule = typeof import(\"@/ui/illustrations\");\ntype StripPrefix<K> = K extends `Illustration${infer Name}` ? Name : never;\n/** 插画名(不含 `Illustration` 前缀与 `Dark` 后缀):`Idle` / `NoContent` / `NoAccess` / `NotFound` / `Failure` / `Success` / `Construction` / `NoResult` */\nexport type IllustrationName = Exclude<StripPrefix<keyof IllustrationModule>, `${string}Dark`>;\ninterface IllustrationProps {\n readonly style?: CSSProperties;\n}\nconst cache = new Map<string, ComponentType<IllustrationProps>>();\n// 插画只在空态 / 错误态真正渲染时下载。\nfunction lazyIllustration(exportName: keyof IllustrationModule): ComponentType<IllustrationProps> {\n let component = cache.get(exportName);\n if (!component) {\n component = lazy(() => import(\"@/ui/illustrations\").then((m) => ({\n default: m[exportName] as ComponentType<IllustrationProps>,\n })));\n cache.set(exportName, component);\n }\n return component;\n}\nexport interface EmptyIllustrationPair {\n readonly image: ReactNode;\n readonly darkModeImage: ReactNode;\n}\n/**\n * `Empty` 的 `image` / `darkModeImage` 一对懒加载插画。\n *\n * @example\n * <Empty {...emptyIllustration('Idle', 120)} description=\"暂无通知\" />\n */\nexport function emptyIllustration(name: IllustrationName, size?: number): EmptyIllustrationPair {\n const Light = lazyIllustration(`Illustration${name}`);\n const Dark = lazyIllustration(`Illustration${name}Dark`);\n const style = size === undefined ? undefined : { width: size, height: size };\n return {\n image: <Suspense fallback={null}><Light style={style}/></Suspense>,\n darkModeImage: <Suspense fallback={null}><Dark style={style}/></Suspense>,\n };\n}\n","import React from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { Button, Empty } from \"@/ui\";\nimport { RefreshCw, Home, Copy } from 'lucide-react';\nimport { formatDateTime } from \"@fudanda/react-core/utils/date\";\nimport { copyTextWithToast } from \"@/utils/clipboard\";\nimport { emptyIllustration } from \"@/components/EmptyIllustration\";\nimport { AdminPathsContext, useAdminOptions, reportAdminError } from \"@fudanda/react-core/admin/runtime\";\nimport type { ArcBaseAdminTelemetry } from '@fudanda/react-core/admin/types';\ninterface Props {\n children: React.ReactNode;\n telemetry?: ArcBaseAdminTelemetry;\n /**\n * 路由路径变更时自动重置错误状态。\n * 推荐传入 `useLocation().pathname`,配合外层函数组件使用。\n */\n resetKey?: string;\n}\ninterface State {\n error: Error | null;\n componentStack: string | null;\n resetKey: string | undefined;\n}\n/**\n * 页面级 Error Boundary\n *\n * 捕获子组件的运行时错误,展示友好提示 UI,并提供\"重试\"与\"返回首页\"操作。\n * 路由切换时(resetKey 变化)自动清空错误状态,避免跨页面残留。\n *\n * 用法(需配合 useLocation,因为 class 组件不能直接用 hook):\n * ```tsx\n * function RouteErrorBoundary({ children }) {\n * const { pathname } = useLocation();\n * return <PageErrorBoundary resetKey={pathname}>{children}</PageErrorBoundary>;\n * }\n * ```\n */\n/**\n * 判定是否为动态模块(chunk)加载失败:网络中断,或发版后旧产物已被清理。\n * 覆盖 Chrome/Firefox/Safari 的原生 dynamic import 报错与 webpack 风格 ChunkLoadError。\n */\nfunction isChunkLoadError(error: Error): boolean {\n return (error.name === 'ChunkLoadError' ||\n /Failed to fetch dynamically imported module|error loading dynamically imported module|Importing a module script failed/i.test(error.message));\n}\nexport class PageErrorBoundary extends React.Component<Props, State> {\n static contextType = AdminPathsContext;\n declare context: React.ContextType<typeof AdminPathsContext>;\n constructor(props: Props) {\n super(props);\n this.state = { error: null, componentStack: null, resetKey: props.resetKey };\n }\n static getDerivedStateFromError(error: Error): Partial<State> {\n return { error };\n }\n static getDerivedStateFromProps(props: Props, state: State): Partial<State> | null {\n // 路由切换时重置\n if (props.resetKey !== state.resetKey) {\n return { error: null, componentStack: null, resetKey: props.resetKey };\n }\n return null;\n }\n componentDidCatch(error: Error, info: React.ErrorInfo) {\n reportAdminError(this.props.telemetry, error, info);\n console.error('[PageErrorBoundary] 捕获到运行时错误:', error, info.componentStack);\n this.setState({ componentStack: info.componentStack ?? null });\n }\n handleRetry = () => {\n // chunk 加载失败时浏览器已缓存 rejected 的 module promise,\n // 仅重置边界状态会立即再次失败,必须整页刷新拉取最新产物。\n if (this.state.error && isChunkLoadError(this.state.error)) {\n globalThis.location.reload();\n return;\n }\n this.setState({ error: null, componentStack: null });\n };\n handleCopy = () => {\n const { error, componentStack } = this.state;\n if (!error)\n return;\n const report = [\n `[ArcBase 页面错误报告]`,\n `时间: ${formatDateTime(new Date())}`,\n `页面: ${globalThis.location.href}`,\n `浏览器: ${navigator.userAgent}`,\n ``,\n `${error.name}: ${error.message}`,\n error.stack ? `\\n堆栈:\\n${error.stack}` : '',\n componentStack ? `\\n组件栈:${componentStack}` : '',\n ].filter(Boolean).join('\\n');\n void copyTextWithToast(report, { success: '错误信息已复制,可粘贴给开发人员排查', error: '复制失败,请手动选择复制' });\n };\n render() {\n if (!this.state.error) {\n return this.props.children;\n }\n const isDev = import.meta.env.DEV;\n const error = this.state.error;\n const chunkFailed = isChunkLoadError(error);\n return (<div style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n // Keep compact errors centered, but align expanded diagnostics to the scroll start.\n justifyContent: 'safe center',\n minHeight: 'min(400px, 100dvh)',\n maxHeight: '100dvh',\n overflowY: 'auto',\n padding: '40px 24px',\n }}>\n <Empty {...emptyIllustration('Failure', 120)} title={chunkFailed ? '页面资源加载失败' : '页面加载出错'} description={chunkFailed\n ? '可能是网络不稳定,或系统刚刚发布了新版本。点击重新加载获取最新页面。'\n : '当前页面遇到了一个意外错误。你可以尝试刷新页面,或返回首页继续操作。'}>\n {isDev && (<details style={{\n width: '100%',\n maxWidth: 640,\n background: 'var(--arc-antd-color-fill-0)',\n border: '1px solid var(--arc-antd-color-border)',\n borderRadius: 'var(--arc-antd-border-radius-medium)',\n padding: '8px 12px',\n fontSize: 12,\n fontFamily: 'monospace',\n marginTop: 16,\n textAlign: 'left',\n }}>\n <summary style={{ cursor: 'pointer', color: 'var(--arc-antd-color-danger)', marginBottom: 8 }}>\n 错误详情(仅开发模式可见)\n </summary>\n <div style={{ color: 'var(--arc-antd-color-danger)', marginBottom: 4 }}>\n {error.name}: {error.message}\n </div>\n {error.stack && (<pre style={{ whiteSpace: 'pre-wrap', wordBreak: 'break-all', margin: 0, color: 'var(--arc-antd-color-text-2)' }}>\n {error.stack}\n </pre>)}\n </details>)}\n <div style={{ display: 'flex', gap: 12, marginTop: 16, justifyContent: 'center' }}>\n <Button icon={<RefreshCw size={14}/>} theme=\"solid\" type=\"primary\" onClick={this.handleRetry}>\n 重新加载\n </Button>\n <Button icon={<Home size={14}/>} theme=\"light\" type=\"primary\" onClick={() => { globalThis.location.href = this.context?.basePath ?? import.meta.env.BASE_URL; }}>\n 返回首页\n </Button>\n <Button icon={<Copy size={14}/>} theme=\"light\" type=\"tertiary\" onClick={this.handleCopy}>\n 复制错误信息\n </Button>\n </div>\n </Empty>\n </div>);\n }\n}\n/**\n * 路由感知版 PageErrorBoundary\n *\n * 路由变更时自动重置错误状态。直接替换 Suspense 外层使用。\n * 注意:本组件是函数组件,内部使用 useLocation hook,因此需要在 BrowserRouter 内部使用。\n */\nexport function RouteErrorBoundary({ children }: {\n readonly children: React.ReactNode;\n}) {\n const { pathname } = useLocation();\n const {telemetry} = useAdminOptions();\n return (<PageErrorBoundary resetKey={pathname} telemetry={telemetry}>\n {children}\n </PageErrorBoundary>);\n}\n","import { App, Button, Form, Input, Modal, Result } from 'antd';\nimport { useAuth } from '@fudanda/react-core/hooks/useAuth';\nimport type { useLockScreen } from '@fudanda/react-core/hooks/useLockScreen';\nimport { usePreferences } from '@fudanda/react-core/hooks/usePreferences';\ntype Props = {\n lock: ReturnType<typeof useLockScreen>;\n mode: 'set' | 'change' | null;\n onClose: () => void;\n};\nexport function LockPanel({ lock, mode, onClose }: Props) {\n const auth = useAuth();\n const { preferences } = usePreferences();\n const { message } = App.useApp();\n if (lock.isLocked)\n return <Result title=\"屏幕已锁定\" subTitle=\"输入锁屏密码继续使用管理台\" extra={<Form style={{ maxWidth: 320, margin: 'auto' }} onFinish={({ password }: {\n password: string;\n }) => {\n if (!lock.unlock(password))\n void message.error('锁屏密码不正确');\n }}>\n <Form.Item name=\"password\" rules={[{ required: true, message: '请输入锁屏密码' }]}><Input.Password autoFocus placeholder=\"锁屏密码\"/></Form.Item>\n <Button type=\"primary\" htmlType=\"submit\">解锁</Button> <Button onClick={() => { lock.clearLockPassword(); void auth.logout().catch(error => { void message.error(error instanceof Error ? error.message : '退出失败,请重试'); }); }}>退出登录</Button>\n </Form>}/>;\n return <Modal title={mode === 'change' ? '修改锁屏密码' : '设置锁屏密码'} open={mode !== null} onCancel={onClose} mask={{ closable: preferences.modalClickMaskToClose }} footer={null} destroyOnHidden>\n <Form key={mode} layout=\"vertical\" onFinish={(values: {\n current?: string;\n password: string;\n }) => {\n if (mode === 'change' && !lock.verifyLockPassword(values.current ?? '')) {\n void message.error('原锁屏密码不正确');\n return;\n }\n lock.setLockPassword(values.password);\n onClose();\n void message.success('锁屏密码已保存');\n }}>\n {mode === 'change' && <Form.Item name=\"current\" label=\"原锁屏密码\" rules={[{ required: true }]}><Input.Password autoComplete=\"off\"/></Form.Item>}\n <Form.Item name=\"password\" label=\"新锁屏密码\" rules={[{ required: true }, { min: 4, message: '至少输入 4 位字符' }]}><Input.Password autoComplete=\"new-password\"/></Form.Item>\n <Form.Item name=\"confirm\" label=\"确认密码\" dependencies={['password']} rules={[{ required: true }, ({ getFieldValue }) => ({ validator: (_, value: string) => value === getFieldValue('password') ? Promise.resolve() : Promise.reject(new Error('两次密码不一致')) })]}><Input.Password autoComplete=\"new-password\"/></Form.Item>\n <Button htmlType=\"submit\" type=\"primary\">保存</Button>\n </Form>\n </Modal>;\n}\n","import type { LucideIcon, LucideProps } from 'lucide-react';\nimport React, { useSyncExternalStore } from 'react';\n/**\n * 按名字渲染图标的平台能力(菜单 / 标签栏 / 面包屑 / 命令面板 / 工作流模板与自定义表单……)。\n *\n * 调用方只使用两个入口:`<DynamicIcon name />`(components/DynamicIcon.tsx,或函数形态 `renderLucideIcon`)与 `IconPicker`,\n * 图标从哪来是本模块内部的「投递策略」:当前为「单个懒加载全量表 + 就绪订阅」——\n * 全表是一个哈希文件、一年缓存;后台入口在检测到登录凭证时立即 `prewarmLucideIcons()`,\n * 与 `/api/auth/me` 并行下载,侧栏首帧通常已有图标;未就绪时组件渲染 null 并在就绪后自动补齐。\n * 将来若改为 sprite / 逐图标导入 / 服务端下发节点,只改本文件,调用点零改动。\n *\n * 页面里 `import { X } from 'lucide-react'` 的静态按需图标不受影响(摇树成小子集)。\n */\ntype Registry = Record<string, LucideIcon>;\nlet registry: Registry | null = null;\nlet allNames: string[] = [];\nlet loadPromise: Promise<void> | null = null;\nconst listeners = new Set<() => void>();\nfunction isReactComponent(val: unknown): boolean {\n if (typeof val === 'function')\n return true;\n if (typeof val === 'object' && val !== null && '$$typeof' in val)\n return true;\n return false;\n}\n/** 触发(幂等)全量图标注册表加载 */\nexport function ensureLucideIcons(): Promise<void> {\n // 刻意从 CJS 构建产物加载(而非裸 'lucide-react'):应用各处的静态按需导入\n // 解析到 ESM 入口并被摇树成小子集;若此处对同一 ESM 模块做命名空间动态导入,\n // 会强制保留全量导出,使首屏静态图中的 lucide chunk 膨胀回 ~600KB。\n // CJS 路径是独立模块实例,全量表只存在于本懒加载 chunk 中。\n // @ts-expect-error CJS 深路径无类型声明,运行时形状与 ESM 入口一致\n loadPromise ??= import('lucide-react/dist/cjs/lucide-react.js').then((mod) => {\n const LucideIcons = ((mod as Record<string, unknown>).default ?? mod) as Record<string, unknown>;\n // lucide-react 图标使用 React.forwardRef 封装,typeof 为 'object' 而非 'function'\n // 过滤规则:大写字母开头、不以 Icon 结尾(避免 ActivityIcon / Activity 重复)\n registry = Object.fromEntries(Object.entries(LucideIcons).filter(([key, val]) => /^[A-Z]/.test(key) &&\n !key.endsWith('Icon') &&\n key !== 'createLucideIcon' &&\n isReactComponent(val))) as Registry;\n allNames = Object.keys(registry).sort((a, b) => a.localeCompare(b));\n listeners.forEach((l) => l());\n });\n return loadPromise;\n}\n/**\n * 预热:在拿到登录凭证、尚未等到用户 / 菜单数据时就开始下载全量表,\n * 让它与鉴权请求并行而不是排在侧栏首次渲染之后。失败静默(渲染路径会再次触发加载)。\n */\nexport function prewarmLucideIcons(): void {\n void ensureLucideIcons().catch(() => { });\n}\nfunction subscribe(cb: () => void): () => void {\n listeners.add(cb);\n return () => listeners.delete(cb);\n}\n/** 注册表是否就绪;自动触发加载,加载完成后触发订阅组件重渲染 */\nexport function useLucideIconsReady(): boolean {\n void ensureLucideIcons();\n return useSyncExternalStore(subscribe, () => registry !== null, () => false);\n}\n/** 全部图标名(IconPicker 用);未就绪时为空数组,就绪后自动重渲染 */\nexport function useAllIconNames(): string[] {\n useLucideIconsReady();\n return allNames;\n}\n/** 渲染指定名称的 lucide 图标;注册表未就绪(自动触发加载)或找不到时返回 null */\nexport function renderLucideIcon(name: string, size = 16, props: Omit<LucideProps, 'size'> = {}): React.ReactElement | null {\n if (!registry) {\n void ensureLucideIcons();\n return null;\n }\n const Icon = registry[name];\n if (!Icon)\n return null;\n return React.createElement(Icon, { strokeWidth: 1.5, ...props, size });\n}\n","import type React from 'react';\nimport type { LucideProps } from 'lucide-react';\nimport { renderLucideIcon, useLucideIconsReady } from \"@/utils/icons\";\nexport interface DynamicIconProps extends Omit<LucideProps, 'name' | 'ref'> {\n readonly name: string | null | undefined;\n readonly size?: number;\n /** 注册表未就绪或名字无效时的占位(默认不渲染) */\n readonly fallback?: React.ReactNode;\n}\n/**\n * 按名字渲染 lucide 图标(图标名来自数据:菜单、工作流模板、表单配置……)。\n * 自动订阅注册表就绪,就绪后自行补齐,调用方无需关心加载状态;投递策略见 utils/icons.tsx。\n */\nexport function DynamicIcon({ name, size = 16, fallback = null, ...iconProps }: DynamicIconProps): React.ReactElement | null {\n useLucideIconsReady();\n if (!name)\n return fallback as React.ReactElement | null;\n return renderLucideIcon(name, size, iconProps) ?? (fallback as React.ReactElement | null);\n}\n","import dayjs from 'dayjs';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport 'dayjs/locale/zh-cn';\nimport 'dayjs/locale/en';\ndayjs.extend(updateLocale);\nexport function applyWeekStart(pref: unknown): Promise<void> { const weekStart = pref === 'sunday' ? 0 : 1; dayjs.updateLocale('zh-cn', { weekStart }); dayjs.updateLocale('en', { weekStart }); return Promise.resolve(); }\n","import { PreferencesProvider as CoreProvider } from '@fudanda/react-core/hooks/PreferencesProvider';\nimport { applyWeekStart } from '@/lib/week-start';\nimport type { ReactNode } from 'react';\nexport function PreferencesProvider({ children }: {\n children: ReactNode;\n}) { return <CoreProvider onWeekStartChange={applyWeekStart}>{children}</CoreProvider>; }\n","import { createContext, useContext } from 'react';\nimport type { ThemeMode } from \"@/hooks/useTheme\";\nexport interface ThemeControllerValue {\n mode: ThemeMode;\n themeColor: string;\n isDark: boolean;\n setThemeMode: (mode: ThemeMode) => void;\n setThemeColor: (color: string) => void;\n cycleTheme: () => void;\n resetTheme: () => void;\n}\nexport const ThemeControllerContext = createContext<ThemeControllerValue | null>(null);\nexport function useThemeController(): ThemeControllerValue {\n const context = useContext(ThemeControllerContext);\n if (!context) {\n throw new Error('useThemeController must be used within ThemeProvider');\n }\n return context;\n}\n","import { App, ConfigProvider, theme } from 'antd';\nimport zhCN from 'antd/locale/zh_CN';\nimport enUS from 'antd/locale/en_US';\nimport { createContext, useContext, useEffect, useMemo, useState, type ReactNode } from 'react';\nimport { useOptionalPreferences, isScheduledDarkNow, msUntilScheduleBoundary } from '@fudanda/react-core/hooks/usePreferences';\nimport { usePrefersDark } from '@fudanda/react-core/hooks/useMediaQuery';\nimport { readCachedPreferences } from '@fudanda/react-core/lib/preference-cache';\nimport { getThemeColorVars } from '@fudanda/react-core/lib/theme-color';\nimport { useAdminOptions } from '@fudanda/react-core/admin/runtime';\nimport { FeedbackBridge } from '../ui';\nimport { ThemeControllerContext } from '../providers/theme-controller';\nconst DarkContext = createContext(false);\nexport const useAntDark = () => useContext(DarkContext);\nfunction TokenBridge({ children, dark }: {\n children: ReactNode;\n dark: boolean;\n}) {\n const { token } = theme.useToken();\n useEffect(() => {\n document.body.setAttribute('theme-mode', dark ? 'dark' : 'light');\n document.body.style.colorScheme = dark ? 'dark' : 'light';\n document.body.style.fontFamily = token.fontFamily;\n const values = {\n 'font-family': token.fontFamily ?? '-apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Microsoft YaHei\", sans-serif',\n 'color-primary': token.colorPrimary, 'color-primary-hover': token.colorPrimaryHover, 'color-primary-active': token.colorPrimaryActive,\n 'color-primary-light-default': token.colorPrimaryBg, 'color-primary-light-hover': token.colorPrimaryBgHover, 'color-primary-light-active': token.colorPrimaryBorder,\n 'color-bg-0': token.colorBgLayout, 'color-bg-1': token.colorBgContainer, 'color-bg-2': token.colorBgElevated, 'color-bg-3': token.colorBgSpotlight,\n 'color-text-0': token.colorText, 'color-text-1': token.colorTextSecondary, 'color-text-2': token.colorTextTertiary, 'color-text-3': token.colorTextQuaternary,\n 'color-border': token.colorBorder, 'color-fill-0': token.colorFillTertiary, 'color-fill-1': token.colorFillSecondary, 'color-fill-2': token.colorFill,\n 'color-danger': token.colorError, 'color-success': token.colorSuccess, 'color-warning': token.colorWarning, 'color-info': token.colorInfo,\n 'color-danger-light-default': token.colorErrorBg, 'color-success-light-default': token.colorSuccessBg, 'color-warning-light-default': token.colorWarningBg,\n 'border-radius-small': token.borderRadiusSM + 'px', 'border-radius-medium': token.borderRadius + 'px', 'border-radius-large': token.borderRadiusLG + 'px',\n };\n for (const [name, value] of Object.entries(values))\n document.body.style.setProperty('--arc-antd-' + name, value);\n for (const [name, value] of Object.entries({ primary: token.colorPrimary, success: token.colorSuccess, warning: token.colorWarning, danger: token.colorError }))\n document.body.style.setProperty('--arcbase-avatar-' + name, value);\n }, [token, dark]);\n return <>{children}</>;\n}\nexport function AntTheme({ children }: {\n children: ReactNode;\n}) {\n const optional = useOptionalPreferences();\n const [cached] = useState(readCachedPreferences);\n const { locale, theme: hostTheme } = useAdminOptions();\n const preferences = useMemo(() => optional?.preferences ?? { ...cached, colorMode: hostTheme ?? cached.colorMode }, [optional?.preferences, cached, hostTheme]);\n const systemDark = usePrefersDark();\n const [now, setNow] = useState(() => new Date());\n useEffect(() => { setNow(new Date()); }, [preferences.scheduledDarkMode, preferences.scheduledDarkStart, preferences.scheduledDarkEnd]);\n useEffect(() => {\n const refresh = () => {\n if (document.visibilityState === 'visible')\n setNow(new Date());\n };\n document.addEventListener('visibilitychange', refresh);\n window.addEventListener('focus', refresh);\n return () => { document.removeEventListener('visibilitychange', refresh); window.removeEventListener('focus', refresh); };\n }, []);\n useEffect(() => {\n const wait = msUntilScheduleBoundary(preferences, now);\n if (wait === null)\n return;\n const timer = setTimeout(() => setNow(new Date()), wait + 50);\n return () => clearTimeout(timer);\n }, [preferences, now]);\n const dark = preferences.colorMode === 'dark' || preferences.colorMode === 'system' && systemDark || isScheduledDarkNow(preferences, now);\n const color = getThemeColorVars(preferences.themeColor, dark);\n const radius = { none: 0, small: 4, medium: 6, large: 12 }[preferences.borderRadius];\n const font = preferences.fontFamily === 'mono' ? '\"Cascadia Code\", Consolas, monospace' : preferences.fontFamily === 'inter' ? 'Inter, \"Microsoft YaHei\", sans-serif' : preferences.fontFamily === 'noto-sans-sc' ? '\"Noto Sans SC\", \"Source Han Sans SC\", \"Microsoft YaHei\", sans-serif' : theme.defaultSeed.fontFamily;\n useEffect(() => {\n document.body.style.setProperty('--arcbase-ui-scale', String(preferences.uiScale / 100));\n document.body.style.setProperty('zoom', String(preferences.uiScale / 100));\n document.body.dataset.reduceMotion = String(preferences.reduceMotion);\n document.body.style.filter = preferences.grayscale ? 'grayscale(1)' : preferences.colorBlind ? 'saturate(.75) contrast(1.1)' : '';\n }, [preferences.uiScale, preferences.reduceMotion, preferences.grayscale, preferences.colorBlind]);\n return <DarkContext.Provider value={dark}><ConfigProvider locale={locale === 'en-US' ? enUS : zhCN} theme={{ algorithm: dark ? theme.darkAlgorithm : theme.defaultAlgorithm,\n // Keep the motion provider tree stable: changing token.motion remounts Ant's descendants.\n token: { colorPrimary: color.primary, borderRadius: radius, fontFamily: font,\n ...(preferences.reduceMotion ? { motionDurationFast: '0s', motionDurationMid: '0s', motionDurationSlow: '0s' } : {}) } }}>\n <App><FeedbackBridge /><ThemeControllerContext.Provider value={{ isDark: dark, mode: preferences.colorMode, themeColor: preferences.themeColor,\n setThemeMode: colorMode => optional?.setPreferences({ colorMode }), setThemeColor: themeColor => optional?.setPreferences({ themeColor }),\n cycleTheme: () => optional?.setPreferences({ colorMode: preferences.colorMode === 'light' ? 'dark' : preferences.colorMode === 'dark' ? 'system' : 'light' }),\n resetTheme: () => optional?.resetPreference(['colorMode', 'themeColor']) }}><TokenBridge dark={dark}>{children}</TokenBridge></ThemeControllerContext.Provider></App>\n </ConfigProvider></DarkContext.Provider>;\n}\n","import { useCallback, useState } from 'react';\nimport { Toast } from '@/ui';\nimport { copyTextWithToast } from '@/utils/clipboard';\nimport { downloadBlob } from '@fudanda/react-core/utils/download';\nimport { sanitizeImportedPreferences, usePreferences } from '@fudanda/react-core/hooks/usePreferences';\n// 偏好设置面板:搜索状态与复制 / 导入 / 导出偏好\nexport function usePreferencesPanel() {\n const { overrides, setPreferences } = usePreferences();\n const [prefsVisible, setPrefsVisible] = useState(false);\n const [prefsSearch, setPrefsSearch] = useState('');\n const handleCopyPreferences = useCallback(() => {\n void copyTextWithToast(JSON.stringify({ overrides }, null, 2), { success: '偏好设置已复制到剪贴板', error: '复制失败,请重试' });\n }, [overrides]);\n const handleExportPreferences = useCallback(() => {\n downloadBlob(new Blob([JSON.stringify({ overrides }, null, 2)], { type: 'application/json' }), 'arcbase-preferences.json');\n Toast.success('偏好配置已导出为文件');\n }, [overrides]);\n // ─── 导入偏好 ─────────────────────────────────────────────────────────────\n const [importPrefsVisible, setImportPrefsVisible] = useState(false);\n const [importPrefsText, setImportPrefsText] = useState('');\n const handleImportPreferences = useCallback(() => {\n let parsed: unknown;\n try {\n parsed = JSON.parse(importPrefsText);\n }\n catch {\n Toast.error('JSON 解析失败,请检查格式');\n return;\n }\n const sanitized = sanitizeImportedPreferences(parsed && typeof parsed === 'object' && 'overrides' in parsed ? parsed.overrides : null);\n if (!sanitized) {\n Toast.error('未识别到有效的偏好设置字段');\n return;\n }\n const result = setPreferences(sanitized);\n setImportPrefsVisible(false);\n setImportPrefsText('');\n if (result.applied > 0)\n Toast.success(`已导入 ${result.applied} 项设置${result.skipped ? `,跳过 ${result.skipped} 项系统管理设置` : ''}`);\n else\n Toast.info('所选设置由系统管理,未导入任何修改');\n }, [importPrefsText, setPreferences]);\n return {\n prefsVisible, setPrefsVisible,\n prefsSearch, setPrefsSearch,\n handleCopyPreferences, handleExportPreferences,\n importPrefsVisible, setImportPrefsVisible,\n importPrefsText, setImportPrefsText,\n handleImportPreferences,\n };\n}\n","import { lazy, Suspense, useState } from 'react';\nimport { Button, ConfigProvider, Drawer, Input, Modal, Spin, Tooltip, theme } from 'antd';\nimport { Copy, Download, RotateCcw, Search, Settings, Upload } from 'lucide-react';\nimport { usePreferences } from '@fudanda/react-core/hooks/usePreferences';\nimport type { useLockScreen } from '@fudanda/react-core/hooks/useLockScreen';\nimport { useAntDark } from '@/admin/theme';\nimport { ModalFooter } from '@/components/ModalFooter';\nimport { confirmDanger } from '@/utils/confirm';\nimport { LockPanel } from './LockPanel';\nimport { usePreferencesPanel } from './usePreferencesPanel';\nimport './preferences-panel.css';\nconst PreferencesSheetBody = lazy(() => import('./PreferencesSheetBody'));\nexport default function PreferencesPanel({ homePaths, lock }: {\n homePaths: {\n value: string;\n label: string;\n }[];\n lock: ReturnType<typeof useLockScreen>;\n}) {\n const { preferences, setPreferences, resetPreferences, hasEditablePreferences } = usePreferences();\n const panel = usePreferencesPanel();\n const isDark = useAntDark();\n const [lockMode, setLockMode] = useState<'set' | 'change' | null>(null);\n const closeImport = () => { panel.setImportPrefsVisible(false); panel.setImportPrefsText(''); };\n return <>\n <Tooltip title=\"偏好设置\"><Button type=\"text\" aria-label=\"偏好设置\" icon={<Settings size={17}/>} onClick={() => panel.setPrefsVisible(true)}/></Tooltip>\n <ConfigProvider theme={{ algorithm: isDark ? theme.darkAlgorithm : theme.defaultAlgorithm }}>\n <Drawer title={<div className=\"arc-preferences__title\">偏好设置<span>打造适合你的工作界面</span></div>} open={panel.prefsVisible} onClose={() => panel.setPrefsVisible(false)} size=\"min(680px, 100vw)\" destroyOnHidden className=\"arc-preferences\" styles={{ body: { padding: 0, display: 'flex', flexDirection: 'column', overflow: 'hidden' } }} footer={<div className=\"arc-preferences__footer\">\n <p>修改后自动保存;单项可通过「跟随系统」恢复默认。</p>\n <div className=\"arc-preferences__actions\">\n <Button icon={<Copy size={14}/>} onClick={panel.handleCopyPreferences}>复制</Button>\n <Button icon={<Upload size={14}/>} disabled={!hasEditablePreferences} onClick={() => panel.setImportPrefsVisible(true)}>导入</Button>\n <Button icon={<Download size={14}/>} onClick={panel.handleExportPreferences}>导出</Button>\n <Button danger icon={<RotateCcw size={14}/>} disabled={!hasEditablePreferences} onClick={() => confirmDanger({\n title: '恢复系统默认', content: '清除个人偏好覆盖,重新跟随系统当前默认值。确定恢复吗?',\n okText: '重置', cancelText: '取消', onOk: resetPreferences,\n })}>恢复默认</Button>\n </div>\n </div>}>\n <div className=\"arc-preferences__search\"><Input allowClear prefix={<Search size={16}/>} placeholder=\"搜索全部设置,如主题、表格、锁屏\" aria-label=\"搜索偏好设置\" value={panel.prefsSearch} onChange={event => panel.setPrefsSearch(event.target.value)}/></div>\n <Suspense fallback={<div className=\"arc-preferences__loading\"><Spin tip=\"正在加载设置\"/></div>}>\n <PreferencesSheetBody {...panel} preferences={preferences} setPreferences={setPreferences} navLayout={preferences.navLayout} mode={preferences.colorMode} handleThemeModeChange={colorMode => setPreferences({ colorMode })} isDark={isDark} themeColor={preferences.themeColor} setThemeColor={themeColor => setPreferences({ themeColor })} quickChatEnabled={false} homePathOptions={homePaths} autoLockMinutes={lock.autoLockMinutes} setAutoLockMinutes={lock.setAutoLockMinutes} hasPassword={lock.hasPassword} clearLockPassword={lock.clearLockPassword} openLockPasswordModal={setLockMode} onClearSearch={() => panel.setPrefsSearch('')}/>\n </Suspense>\n </Drawer>\n <LockPanel lock={lock} mode={lockMode} onClose={() => setLockMode(null)}/>\n <Modal title=\"导入偏好设置\" open={panel.importPrefsVisible} onCancel={closeImport} mask={{closable: preferences.modalClickMaskToClose}} destroyOnHidden footer={<ModalFooter onCancel={closeImport} onOk={panel.handleImportPreferences} okText=\"导入\"/>}>\n <p>粘贴导出的配置。仅更新有效且允许个人调整的字段。</p>\n <Input.TextArea rows={10} aria-label=\"偏好配置 JSON\" value={panel.importPrefsText} onChange={event => panel.setImportPrefsText(event.target.value)} placeholder='{\"overrides\":{}}'/>\n </Modal>\n </ConfigProvider>\n </>;\n}\n","import { addTransitionType, startTransition } from 'react';\nimport type { NavigateFunction } from 'react-router-dom';\n/** 路由 Transition 类型:目标位于当前页签左侧(后退方向),slide 类路由动画据此反向播放 */\nexport const ROUTE_BACK_TRANSITION_TYPE = 'route-back';\n/**\n * 带方向标记的导航。\n *\n * react-router 会把导航 setState 包在自己的 startTransition 里;React 让嵌套 Transition 继承外层的\n * types,所以在这里的 startTransition 作用域内先 addTransitionType 再 navigate,\n * `<ViewTransition enter / exit={{ [ROUTE_BACK_TRANSITION_TYPE]: …, default: … }}>` 就能按方向选 class。\n * 非后退方向不附加类型,走 default class。\n */\nexport function navigateWithDirection(navigate: NavigateFunction, to: string, backward: boolean) {\n startTransition(() => {\n if (backward)\n addTransitionType(ROUTE_BACK_TRANSITION_TYPE);\n navigate(to);\n });\n}\n","import { ViewTransition } from 'react';\nimport type { ReactNode, ViewTransitionClass } from 'react';\nimport type { RouteAnimation } from '@fudanda/react-core/hooks/usePreferences';\nimport { ROUTE_BACK_TRANSITION_TYPE } from './route-transition-types';\ntype AnimatedRouteAnimation = Exclude<RouteAnimation, 'none'>;\n/**\n * 偏好值 → View Transition class;对应动画定义在 AdminLayout.css 的 `::view-transition-*(.route-vt-*)`。\n * 「左滑」按 Transition 类型区分方向:页签栏上切到左侧页签(ROUTE_BACK_TRANSITION_TYPE)时反向滑动。\n */\nconst ENTER_CLASS: Record<AnimatedRouteAnimation, ViewTransitionClass> = {\n fade: 'route-vt-fade-in',\n 'slide-up': 'route-vt-slide-up-in',\n 'slide-left': { [ROUTE_BACK_TRANSITION_TYPE]: 'route-vt-slide-right-in', default: 'route-vt-slide-left-in' },\n};\nconst EXIT_CLASS: Record<AnimatedRouteAnimation, ViewTransitionClass> = {\n fade: 'route-vt-fade-out',\n 'slide-up': 'route-vt-slide-up-out',\n 'slide-left': { [ROUTE_BACK_TRANSITION_TYPE]: 'route-vt-slide-right-out', default: 'route-vt-slide-left-out' },\n};\ntype Props = Readonly<{\n /** 路由切换动画偏好;`'none'` / 未传时完全关闭(含 reduceMotion 场景) */\n animation?: RouteAnimation;\n children: ReactNode;\n}>;\n/**\n * 路由级页面过渡边界:把 `routeAnimation` 偏好映射为 React `<ViewTransition>` 的 enter / exit class。\n *\n * - 只在 Transition 更新中激活:react-router 导航、`<Activity>` 显隐切换、`startTransition` 包裹的页签刷新\n * - `default=\"none\"`:页面内部的 DOM 变化(搜索参数变更、Suspense 就绪等)不触发整页动画\n * - 必须直接包裹页面容器,边界之前不能出现其他 DOM 节点,否则不会激活\n * - 浏览器不支持 View Transitions(含 jsdom)时 React 直接跳过动画,功能不受影响\n */\nexport default function RouteViewTransition({ animation, children }: Props) {\n if (!animation || animation === 'none') {\n return <ViewTransition default=\"none\">{children}</ViewTransition>;\n }\n return (<ViewTransition default=\"none\" enter={ENTER_CLASS[animation]} exit={EXIT_CLASS[animation]}>\n {children}\n </ViewTransition>);\n}\n","import { Activity, useLayoutEffect, useRef } from 'react';\nimport type { ReactElement } from 'react';\nimport { useLocation, useOutlet } from 'react-router-dom';\nimport type { RouteAnimation } from '@fudanda/react-core/hooks/usePreferences';\nimport RouteViewTransition from './RouteViewTransition';\nconst MAX_CACHE = 10;\ntype CacheEntry = {\n element: ReactElement | null;\n /** 页签刷新版本,变化时强制重建子树 */\n version: number;\n /** 离开时的滚动位置(.admin-content 容器为共享滚动容器,需按页保存/恢复) */\n scrollTop: number;\n};\ntype Props = Readonly<{\n /** 允许缓存的路由路径白名单(来自菜单 keepAlive 配置) */\n keepAlivePaths: ReadonlySet<string>;\n /** 当前打开的页签 key 集合;缓存生命周期与页签一致,关闭页签即释放 */\n openPaths: ReadonlySet<string>;\n /** 页签「刷新」版本号,变化时强制重建对应页面 */\n refreshVersion: Record<string, number>;\n /** 共享滚动容器选择器 */\n scrollContainerSelector?: string;\n /** 路由切换动画偏好(缓存页显隐与非缓存页进出统一由 RouteViewTransition 过渡) */\n animation?: RouteAnimation;\n}>;\n/**\n * 基于 React 19 `<Activity>` 的路由级页面缓存(对标 Vue keep-alive)。\n *\n * - 白名单制:仅菜单配置 keepAlive 的页面参与缓存\n * - hidden 时 React 保留 state/DOM(display:none)并销毁 Effects(轮询/订阅自动暂停),\n * visible 时恢复状态并重建 Effects\n * - 缓存生命周期与页签一致:关闭页签即释放;LRU 上限 10 页\n * - 页签「刷新」通过 key 变化强制重建\n * - 共享滚动容器(.admin-content)的滚动位置按页保存/恢复\n * - 页面切换动画由 `<ViewTransition>` 承担:缓存页的显隐与非缓存页的挂载/卸载都会过渡\n */\nexport default function KeepAliveOutlet({ keepAlivePaths, openPaths, refreshVersion, scrollContainerSelector = '.admin-content', animation, }: Props) {\n const outlet = useOutlet();\n const { pathname } = useLocation();\n const cacheRef = useRef(new Map<string, CacheEntry>());\n const prevPathRef = useRef<string | null>(null);\n const cache = cacheRef.current;\n const isCacheable = keepAlivePaths.has(pathname);\n const currentVersion = refreshVersion[pathname] ?? 0;\n // ── 渲染期维护缓存(幂等,StrictMode 安全)──────────────────────────────\n if (isCacheable) {\n const existing = cache.get(pathname);\n if (!existing || existing.version !== currentVersion) {\n // 新入缓存 / 刷新重建:记录当前 outlet 与版本\n cache.delete(pathname);\n cache.set(pathname, { element: outlet, version: currentVersion, scrollTop: existing?.scrollTop ?? 0 });\n }\n else {\n // Refresh the active route element when permissions, params or loader state change.\n // React keeps the page state because the Activity key remains stable.\n existing.element = outlet;\n // LRU:访问移到末尾\n cache.delete(pathname);\n cache.set(pathname, existing);\n }\n }\n // 页签已关闭的缓存立即释放(缓存生命周期 = 页签生命周期)\n for (const key of [...cache.keys()]) {\n if (!keepAlivePaths.has(key) || key !== pathname && !openPaths.has(key))\n cache.delete(key);\n }\n // LRU 上限:淘汰最久未访问(跳过当前页)\n while (cache.size > MAX_CACHE) {\n const oldest = [...cache.keys()].find((k) => k !== pathname);\n if (!oldest)\n break;\n cache.delete(oldest);\n }\n // ── 共享滚动容器:离开时保存、切回时恢复 ─────────────────────────────────\n // 用 useLayoutEffect:ViewTransition 在布局副作用之后立即捕获新页面快照,\n // 若放在 useEffect 里恢复滚动,快照与最终状态不一致,动画结束时会跳一下\n useLayoutEffect(() => {\n const container = document.querySelector<HTMLElement>(scrollContainerSelector);\n const prev = prevPathRef.current;\n if (container && prev && prev !== pathname) {\n const prevEntry = cache.get(prev);\n if (prevEntry)\n prevEntry.scrollTop = container.scrollTop;\n }\n if (container) {\n container.scrollTop = cache.get(pathname)?.scrollTop ?? 0;\n }\n prevPathRef.current = pathname;\n }, [pathname, scrollContainerSelector, cache]);\n return (<>\n {[...cache.entries()].map(([path, entry]) => (<Activity key={`${path}:${entry.version}`} mode={path === pathname ? 'visible' : 'hidden'}>\n <RouteViewTransition animation={animation}>\n <div style={{ height: '100%' }}>{entry.element}</div>\n </RouteViewTransition>\n </Activity>))}\n {!isCacheable && (<RouteViewTransition key={`${pathname}:${currentVersion}`} animation={animation}>\n <div style={{ height: '100%' }}>{outlet}</div>\n </RouteViewTransition>)}\n </>);\n}\n","import { lazy, Suspense, useState, useEffect, useRef } from 'react';\nimport { Search } from 'lucide-react';\nimport { useOptionalPreferences } from \"@fudanda/react-core/hooks/usePreferences\";\nimport \"@/components/MenuSearchInput.css\";\nconst MenuCommandPalette = lazy(() => import(\"@/components/MenuCommandPalette\"));\nexport interface FlatMenuItem {\n id: number;\n title: string;\n path: string;\n icon?: string;\n breadcrumb: string[];\n}\ninterface MenuSearchInputProps {\n readonly menus: FlatMenuItem[];\n readonly recentMenus: FlatMenuItem[];\n readonly onClearRecents: () => void;\n readonly onRemoveRecent: (menuId: number) => void;\n}\nexport default function MenuSearchInput({ menus, recentMenus, onClearRecents, onRemoveRecent }: MenuSearchInputProps) {\n const [open, setOpen] = useState(false);\n const [openedOnce, setOpenedOnce] = useState(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const shortcutsEnabled = useOptionalPreferences()?.preferences.enableShortcuts ?? true;\n // The trigger owns shortcuts so the search runtime can stay unloaded until first use.\n useEffect(() => {\n const handler = () => { setOpenedOnce(true); setOpen(true); };\n const keyboard = (event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && event.key === 'k' && shortcutsEnabled) {\n event.preventDefault();\n setOpenedOnce(true);\n setOpen((current) => !current);\n }\n if (event.key === 'Escape')\n setOpen(false);\n };\n globalThis.addEventListener('open-menu-palette', handler);\n globalThis.addEventListener('keydown', keyboard);\n return () => {\n globalThis.removeEventListener('open-menu-palette', handler);\n globalThis.removeEventListener('keydown', keyboard);\n };\n }, [shortcutsEnabled]);\n const handleClose = () => {\n setOpen(false);\n // 关闭弹窗后清理当前焦点,避免触发器在跳转后仍显示 focus-visible 状态。\n setTimeout(() => {\n const activeElement = document.activeElement;\n if (activeElement instanceof HTMLElement)\n activeElement.blur();\n buttonRef.current?.blur();\n }, 0);\n };\n useEffect(() => {\n if (open)\n return;\n // 处理路由跳转或 Modal 外部关闭导致未经过 handleClose 的情况。\n const timer = setTimeout(() => {\n const activeElement = document.activeElement;\n if (activeElement instanceof HTMLElement)\n activeElement.blur();\n buttonRef.current?.blur();\n }, 0);\n return () => clearTimeout(timer);\n }, [open]);\n return (<>\n <button ref={buttonRef} type=\"button\" className=\"menu-search-trigger\" onClick={() => { setOpenedOnce(true); setOpen(true); }} title=\"全局搜索 (Ctrl+K)\" aria-label=\"全局搜索\" aria-expanded={open}>\n <span className=\"menu-search-trigger__icon\">\n <Search size={16} strokeWidth={1.8}/>\n </span>\n <span className=\"menu-search-trigger__label\">全局搜索</span>\n <kbd className=\"menu-search-trigger__kbd\">Ctrl K</kbd>\n </button>\n {openedOnce && <Suspense fallback={null}><MenuCommandPalette menus={menus} recentMenus={recentMenus} onClearRecents={onClearRecents} onRemoveRecent={onRemoveRecent} open={open} onClose={handleClose}/></Suspense>}\n </>);\n}\n","import { Breadcrumb, Button, Space } from 'antd';\nimport { Home, Star } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport type { Menu } from '@fudanda/shared/identity';\nimport { usePreferences } from '@fudanda/react-core/hooks/usePreferences';\nimport { DynamicIcon } from './DynamicIcon';\nfunction visible(items: Menu[]) { return items.filter(item => item.type !== 'button' && item.visible !== false && item.status === 'enabled'); }\nfunction firstPath(menu: Menu): string | undefined { return menu.path || visible(menu.children ?? []).map(firstPath).find(Boolean); }\nfunction chain(items: Menu[], path: string): Menu[] {\n for (const item of visible(items)) {\n if (item.path === path)\n return [item];\n const child = chain(item.children ?? [], path);\n if (child.length)\n return [item, ...child];\n }\n return [];\n}\nexport function NavigationBreadcrumb({ menus, path, title, isFavorite, toggleFavorite }: {\n menus: Menu[];\n path: string;\n title: string;\n isFavorite: (id: number) => boolean;\n toggleFavorite: (id: number) => void;\n}) {\n const { preferences } = usePreferences(), navigate = useNavigate();\n const matched = chain(menus, path), current = matched.at(-1);\n const home = { title: <Space size={4}>{preferences.breadcrumbIcon && <Home size={13}/>}首页</Space>, onClick: preferences.breadcrumbClickable ? () => navigate('/') : undefined };\n const items = matched.map((menu, index) => ({ title: <Space size={4}>{preferences.breadcrumbIcon && menu.icon && <DynamicIcon name={menu.icon}/>} {menu.title}</Space>,\n onClick: index < matched.length - 1 && preferences.breadcrumbClickable && firstPath(menu) ? () => navigate(firstPath(menu)!) : undefined,\n ...(preferences.breadcrumbSubMenu && index < matched.length - 1 ? { menu: { items: visible(menu.children ?? []).map(child => ({ key: String(child.id), label: child.title, onClick: () => {\n const target = firstPath(child);\n if (target)\n navigate(target);\n } })) } } : {}) }));\n return <Space size={6} style={{ marginBottom: 12 }}>\n <Breadcrumb items={[...(preferences.breadcrumbShowHome && path !== '/' ? [home] : []), ...(items.length ? items : [{ title }])]}/>\n {preferences.showFavorites && current && <Button size=\"small\" type=\"text\" aria-label={isFavorite(current.id) ? '取消收藏此页' : '收藏此页'} onClick={() => toggleFavorite(current.id)} icon={<Star size={14} fill={isFavorite(current.id) ? 'currentColor' : 'none'} style={{ color: isFavorite(current.id) ? 'var(--arc-antd-color-warning)' : undefined }}/>}/>}\n </Space>;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nexport function NavigationProgress() {\n const { pathname } = useLocation(), previous = useRef(pathname);\n const [progress, setProgress] = useState(0);\n useEffect(() => {\n if (previous.current === pathname)\n return;\n previous.current = pathname;\n setProgress(20);\n const interval = setInterval(() => setProgress(value => Math.min(90, value + 15)), 100);\n const finish = setTimeout(() => { clearInterval(interval); setProgress(100); }, 400);\n const hide = setTimeout(() => setProgress(0), 700);\n return () => { clearInterval(interval); clearTimeout(finish); clearTimeout(hide); };\n }, [pathname]);\n return progress > 0 ? <div aria-label=\"页面切换进度\" role=\"progressbar\" aria-valuemin={0} aria-valuemax={100} aria-valuenow={progress} style={{ position: 'fixed', inset: '0 auto auto 0', height: 3, width: progress + '%', background: 'var(--arc-antd-color-primary)', zIndex: 2000, transition: 'width .2s, opacity .3s', opacity: progress === 100 ? 0 : 1 }}/> : null;\n}\n","import { Button, Dropdown } from 'antd';\nimport { Star } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport type { Menu } from '@fudanda/shared/identity';\nimport type { useFavoriteMenus } from '@fudanda/react-core/hooks/useFavoriteMenus';\nexport function FavoriteMenus({ menus, current, favorites }: {\n menus: Array<Pick<Menu, 'id' | 'title' | 'path'>>;\n current?: Menu;\n favorites: ReturnType<typeof useFavoriteMenus>;\n}) {\n const navigate = useNavigate();\n const move = (id: number, delta: number) => {\n const ids = [...favorites.favorites], index = ids.indexOf(id), target = index + delta;\n if (index < 0 || target < 0 || target >= ids.length)\n return;\n [ids[index], ids[target]] = [ids[target], ids[index]];\n favorites.reorder(ids);\n };\n const items = favorites.favorites.flatMap((id, index) => {\n const menu = menus.find(item => item.id === id);\n return menu ? [{ key: String(id), label: menu.title, children: [\n { key: id + '-open', label: '打开页面', onClick: () => menu.path && navigate(menu.path) },\n { key: id + '-up', label: '上移', disabled: index === 0, onClick: () => move(id, -1) },\n { key: id + '-down', label: '下移', disabled: index === favorites.favorites.length - 1, onClick: () => move(id, 1) },\n { key: id + '-remove', label: '取消收藏', onClick: () => favorites.toggle(id) },\n ] }] : [];\n });\n return <Dropdown menu={{ items: [...items, ...(current ? [{ key: 'current', label: favorites.isFavorite(current.id) ? '取消收藏此页' : '收藏此页', onClick: () => favorites.toggle(current.id) }] : [])] }}>\n <Button aria-label=\"收藏菜单\" icon={<Star size={16}/>}/>\n </Dropdown>;\n}\n","/**\n * ArcBase 品牌 logo(拱形 A 与底座)的几何与配色比例——唯一来源。\n *\n * - 页面内:`components/AppLogo.tsx` 用 `logoStopCssColor()` 生成 `color-mix(var(--arc-antd-color-primary))`,\n * 颜色跟随所在区域的主题色(含分区深色);\n * - 标签页:favicon 读不到页面 CSS 变量,`applyThemeFavicon()` 用同一比例在 JS 侧算出实色,\n * 以 data URL 写回 `<link rel=\"icon\">`;\n * - 静态兜底:`public/favicon.svg` 与 `icons/*.png` 为默认飞书蓝,由 `scripts/gen-icons.mjs` 生成。\n */\nexport const LOGO_VIEW_BOX = '0 0 64 64';\nexport const LOGO_STROKE_WIDTH = 2.5;\n/** 一个渐变端点:主色占比(%)+ 与之混合的黑 / 白 */\nexport type LogoMixStop = readonly [\n primaryPercent: number,\n mixWith: '#fff' | '#000'\n];\nexport interface LogoFace {\n readonly key: 'top' | 'band' | 'base';\n readonly d: string;\n readonly axis: 'horizontal' | 'vertical';\n readonly stops: readonly [\n LogoMixStop,\n LogoMixStop\n ];\n}\n/** 拱形两侧与底座,保留主题主色派生的三块渐变。 */\nexport const LOGO_FACES: readonly LogoFace[] = [\n { key: 'top', d: 'M8 46 L8 29 C8 15 18 6 32 6 L32 18 C25 18 20 23 20 30 L20 46Z', axis: 'horizontal', stops: [[52, '#fff'], [70, '#fff']] },\n { key: 'band', d: 'M32 6 C46 6 56 15 56 29 L56 46 L44 46 L44 30 C44 23 39 18 32 18Z', axis: 'vertical', stops: [[92, '#000'], [88, '#fff']] },\n { key: 'base', d: 'M8 46 L56 46 L56 57 L8 57Z M25 32 L39 32 L39 39 L25 39Z', axis: 'horizontal', stops: [[80, '#000'], [66, '#000']] },\n];\nexport function logoGradientAxis(axis: LogoFace['axis']): {\n x1: string;\n y1: string;\n x2: string;\n y2: string;\n} {\n return axis === 'vertical'\n ? { x1: '0', y1: '0', x2: '0', y2: '1' }\n : { x1: '0', y1: '0', x2: '1', y2: '0' };\n}\n/** 页面内用:交给 CSS 按当前 --arc-antd-color-primary 混色 */\nexport function logoStopCssColor([percent, mixWith]: LogoMixStop): string {\n return `color-mix(in srgb, var(--arc-antd-color-primary) ${percent}%, ${mixWith})`;\n}\nfunction parseHex(hex: string): [\n number,\n number,\n number\n] | null {\n const m = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex.trim());\n if (!m)\n return null;\n const s = m[1].length === 3 ? [...m[1]].map((c) => c + c).join('') : m[1];\n return [0, 2, 4].map((i) => Number.parseInt(s.slice(i, i + 2), 16)) as [\n number,\n number,\n number\n ];\n}\n/** 与 CSS `color-mix(in srgb, primary p%, other)` 等价的 sRGB 线性混合 */\nfunction mixHex(primary: [\n number,\n number,\n number\n], [percent, mixWith]: LogoMixStop): string {\n const other = mixWith === '#fff' ? 255 : 0;\n const k = percent / 100;\n return `#${primary.map((c) => Math.round(c * k + other * (1 - k)).toString(16).padStart(2, '0')).join('')}`;\n}\n/** 生成独立 SVG 文档(不依赖页面 CSS);主色不是合法 hex 时返回 null */\nexport function buildLogoSvg(primaryHex: string): string | null {\n const rgb = parseHex(primaryHex);\n if (!rgb)\n return null;\n const defs = LOGO_FACES.map((face) => {\n const { x1, y1, x2, y2 } = logoGradientAxis(face.axis);\n return `<linearGradient id=\"${face.key}\" x1=\"${x1}\" y1=\"${y1}\" x2=\"${x2}\" y2=\"${y2}\">`\n + `<stop offset=\"0\" stop-color=\"${mixHex(rgb, face.stops[0])}\"/>`\n + `<stop offset=\"1\" stop-color=\"${mixHex(rgb, face.stops[1])}\"/>`\n + '</linearGradient>';\n }).join('');\n const paths = LOGO_FACES.map((face) => (`<path d=\"${face.d}\" fill=\"url(#${face.key})\" stroke=\"url(#${face.key})\" stroke-width=\"${LOGO_STROKE_WIDTH}\" stroke-linejoin=\"round\"/>`)).join('');\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${LOGO_VIEW_BOX}\" fill=\"none\"><defs>${defs}</defs>${paths}</svg>`;\n}\n/** 让标签页 favicon 跟随主题主色;主色不可解析时保留现有图标 */\nexport function applyThemeFavicon(primaryHex: string): void {\n if (typeof document === 'undefined')\n return;\n const svg = buildLogoSvg(primaryHex);\n if (!svg)\n return;\n const href = `data:image/svg+xml,${encodeURIComponent(svg)}`;\n let link = document.querySelector<HTMLLinkElement>('link[rel=\"icon\"]');\n if (link?.href === href)\n return;\n if (!link) {\n link = document.createElement('link');\n link.rel = 'icon';\n document.head.append(link);\n }\n link.type = 'image/svg+xml';\n link.href = href;\n}\n","import { useId } from 'react';\nimport { LOGO_FACES, LOGO_STROKE_WIDTH, LOGO_VIEW_BOX, logoGradientAxis, logoStopCssColor } from \"@/lib/brand-logo\";\nimport \"@/components/AppLogo.css\";\nimport { useAdminOptions } from \"@fudanda/react-core/admin/runtime\";\nimport { useHostBrand } from '@/admin/host-brand';\ninterface AppLogoProps {\n size?: number;\n className?: string;\n hostDefault?: boolean;\n}\n/**\n * ArcBase 品牌标识:拱形 A 与底座,以所在区域的 --arc-antd-color-primary 派生明暗,\n * 无底色,可直接置于浅色或深色背景;几何与配色比例见 `lib/brand-logo.ts`(favicon 同源)。\n */\nexport default function AppLogo({ size = 28, className, hostDefault = false }: Readonly<AppLogoProps>) {\n const uid = useId().replaceAll(/[^a-zA-Z0-9]/g, '');\n const hostBrand = useHostBrand();\n const options = useAdminOptions();\n const logo = (hostDefault ? hostBrand : options.brand)?.logo;\n if (logo !== undefined)\n return <span className={['app-logo', className].filter(Boolean).join(' ')} style={{ width: size, height: size, display: 'inline-flex', alignItems: 'center', justifyContent: 'center' }}>{logo}</span>;\n const gradientId = (key: string) => `app-logo-${key}-${uid}`;\n const cls = ['app-logo', className].filter(Boolean).join(' ');\n return (<svg className={cls} width={size} height={size} viewBox={LOGO_VIEW_BOX} fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n <defs>\n {LOGO_FACES.map((face) => (<linearGradient key={face.key} id={gradientId(face.key)} {...logoGradientAxis(face.axis)}>\n <stop offset=\"0\" style={{ stopColor: logoStopCssColor(face.stops[0]) }}/>\n <stop offset=\"1\" style={{ stopColor: logoStopCssColor(face.stops[1]) }}/>\n </linearGradient>))}\n </defs>\n {LOGO_FACES.map((face) => (<path key={face.key} d={face.d} fill={`url(#${gradientId(face.key)})`} stroke={`url(#${gradientId(face.key)})`} strokeWidth={LOGO_STROKE_WIDTH} strokeLinejoin=\"round\"/>))}\n </svg>);\n}\n","import { EmbeddedIdentityLogin } from '@fudanda/elements-antd';\nimport '@fudanda/elements-antd/styles.css';\nimport { useAdminOptions, useAdminTitle } from '@fudanda/react-core/admin/runtime';\nimport { lazy, Suspense, useEffect, useMemo, useRef, useState, type SubmitEvent } from 'react';\nimport { useNavigate, useLocation } from 'react-router-dom';\nimport { Button, Spin, Toast, Typography } from \"@/ui\";\nimport { User, Lock, ShieldAlert, Check } from 'lucide-react';\nimport dayjs from 'dayjs';\nimport { GoaError } from '@fudanda/client';\nimport { ApiLoginConflictSchema, type ApiLoginResult, type ApiSessionConflict, type ApiLoginChallenge } from '@fudanda/shared/api/identity';\nimport { takeAuthInvalidatedReason, type AuthInvalidatedReason } from '@fudanda/react-core/utils/http-client';\nimport { markPostLoginHome } from '@/lib/post-login';\nimport { useAuth } from '@fudanda/react-core/hooks/useAuth';\nimport AppLogo from '@/components/AppLogo';\nimport { usePublicCaptcha, useIdentityCapabilities } from '@fudanda/react-core/hooks/queries/auth-public';\nimport { useLoginForm, type FieldRules } from './login-form';\nimport { LoginField, LoginFormError } from './LoginField';\nimport './LoginPage.css';\nconst SessionConflictModal = lazy(() => import('./SessionConflictModal'));\nconst { Title, Text } = Typography;\ninterface LoginPageProps {\n onLogin: (username: string, password: string, captchaId?: string, captchaCode?: string) => Promise<ApiLoginResult>;\n}\ninterface LoginFormValues extends Record<string, string> { username: string; password: string; captchaCode: string; }\nconst INVALIDATED_TITLES: Record<string,string> = { 'concurrent-login': '已在其他设备登录', 'password-changed': '密码已修改' };\nconst PRIMARY_BUTTON_STYLE = { marginTop: 8, borderRadius: 'var(--semi-border-radius-medium)', height: 42 } as const;\nconst CAPTCHA_BOX_STYLE = { flexShrink: 0, borderRadius: 'var(--semi-border-radius-small)', overflow: 'hidden', border: '1px solid var(--semi-color-border)', padding: 0, background: 'transparent', lineHeight: 0 } as const;\nexport default function LoginPage({ onLogin }: Readonly<LoginPageProps>) {\n const appTitle = useAdminTitle();\n useEffect(() => { document.title = '登录 · ' + appTitle; }, [appTitle]);\n const { brand } = useAdminOptions();\n const navigate = useNavigate();\n const location = useLocation();\n const params = new URLSearchParams(location.search);\n const redirect = params.get('redirect') ?? '/';\n const redirectTo = redirect.startsWith('/') && !redirect.startsWith('//') && !redirect.startsWith('/login') ? redirect : '/';\n const prefillUsername = params.get('username') ?? '';\n const { resolveSessionConflict } = useAuth();\n const [loading, setLoading] = useState(false);\n const [sessionConflict, setSessionConflict] = useState<ApiSessionConflict | null>(null);\n const [conflictResolving, setConflictResolving] = useState(false);\n const [captchaChallenge, setCaptchaChallenge] = useState<ApiLoginChallenge | null>(null);\n const identityQuery = useIdentityCapabilities();\n const captchaQuery = usePublicCaptcha(identityQuery.data?.passwordLogin === true);\n const captchaEnabled = captchaQuery.data?.enabled ?? false;\n const captchaRequired = captchaEnabled || captchaChallenge !== null;\n const effectiveCaptchaId = captchaChallenge?.captchaId ?? captchaQuery.data?.captchaId;\n const effectiveCaptchaSvg = captchaChallenge?.svg ?? captchaQuery.data?.svg;\n const fetchCaptcha = () => { void captchaQuery.refetch(); };\n const loginRules = useMemo<FieldRules<LoginFormValues>>(() => ({\n username: [{ required: true, message: '请输入用户名/手机号' }],\n password: [{ required: true, message: '请输入密码' }],\n captchaCode: captchaRequired ? [{ required: true, message: '请输入验证码' }] : [],\n }), [captchaRequired]);\n const loginInitial = useMemo<LoginFormValues>(() => ({ username: prefillUsername, password: '', captchaCode: '' }), [prefillUsername]);\n const loginForm = useLoginForm(loginInitial, loginRules);\n const [invalidated, setInvalidated] = useState<AuthInvalidatedReason | null>(null);\n const invalidatedTaken = useRef(false);\n const setLoginValue = loginForm.setValue;\n useEffect(() => {\n if (invalidatedTaken.current) return;\n invalidatedTaken.current = true;\n const detail = takeAuthInvalidatedReason(); if (!detail) return;\n if (detail.reason && detail.reason !== 'rotated' && detail.reason !== 'logout') {\n setInvalidated(detail); if (detail.username && !prefillUsername) setLoginValue('username', detail.username);\n } else Toast.warning({ content: detail.message, duration: 6 });\n }, [setLoginValue, prefillUsername]);\n const navigateAfterLogin = () => { if (redirectTo === '/') markPostLoginHome(); navigate(redirectTo, { replace: true }); };\n const handleLogin = async (values: LoginFormValues) => {\n if (loading) return; setLoading(true);\n try {\n const result = await onLogin(values.username, values.password, effectiveCaptchaId, captchaRequired ? values.captchaCode : undefined);\n loginForm.setValue('captchaCode', '');\n if (result.outcome.type === 'captcha') { setCaptchaChallenge(result.outcome.value); loginForm.setFormError(result.outcome.value.message); }\n else navigateAfterLogin();\n } catch (error) {\n if (error instanceof GoaError && error.status === 409) {\n const conflict = ApiLoginConflictSchema.safeParse(error.details);\n if (conflict.success && conflict.data.details.type === 'sessionLimit') { setSessionConflict(conflict.data.details.value); return; }\n }\n loginForm.setFormError(error instanceof Error ? error.message : '登录失败');\n if (captchaEnabled) fetchCaptcha();\n } finally { setLoading(false); }\n };\n const handleResolveConflict = async () => {\n if (!sessionConflict || conflictResolving) return; setConflictResolving(true);\n try { await resolveSessionConflict(sessionConflict.ticket); setSessionConflict(null); navigateAfterLogin(); }\n catch (error) { loginForm.setFormError(error instanceof Error ? error.message : '登录失败'); setSessionConflict(null); }\n finally { setConflictResolving(false); }\n };\n const handleLoginSubmit = (event: SubmitEvent<HTMLFormElement>) => { event.preventDefault(); const values = loginForm.validate(); if (values) void handleLogin(values); };\n const renderLoginForm = () => !identityQuery.data ? <div><Spin />{identityQuery.isError && <Button onClick={() => { void identityQuery.refetch(); }}>重新读取登录方式</Button>}</div> : identityQuery.data.externalLogin ? <EmbeddedIdentityLogin onSuccess={navigateAfterLogin}/> : <form className=\"login-form\" onSubmit={handleLoginSubmit} noValidate>\n <LoginField {...loginForm.field('username')} id=\"login-username\" placeholder=\"请输入用户名/手机号\" prefix={<User />} size=\"large\" autoComplete=\"username\"/>\n <LoginField {...loginForm.field('password')} id=\"login-password\" mode=\"password\" placeholder=\"请输入密码\" prefix={<Lock />} size=\"large\" autoComplete=\"current-password\"/>\n {captchaRequired && <div style={{ display: 'flex', gap: 8, alignItems: 'flex-start' }}>\n <div style={{ flex: 1 }}><LoginField {...loginForm.field('captchaCode')} id=\"login-captcha\" placeholder=\"请输入验证码\" size=\"large\" autoComplete=\"one-time-code\"/></div>\n {captchaEnabled ? <button type=\"button\" style={{ ...CAPTCHA_BOX_STYLE, cursor: 'pointer' }} title=\"点击刷新验证码\" onClick={fetchCaptcha}><img src={effectiveCaptchaSvg} alt=\"登录验证码\" width={160} height={48}/></button> : <img src={effectiveCaptchaSvg} alt=\"登录验证码\" width={180} height={48}/>}\n </div>}\n <LoginFormError message={loginForm.formError}/>\n <Button htmlType=\"submit\" type=\"primary\" theme=\"solid\" loading={loading} block size=\"large\" style={PRIMARY_BUTTON_STYLE}>登录</Button>\n </form>;\n const invalidatedTitle = INVALIDATED_TITLES[invalidated?.reason ?? ''] ?? '会话已被强制下线';\n return (<div className=\"login-page\">\n <div className=\"login-bg\" aria-hidden=\"true\" style={brand?.loginImage ? { backgroundImage: `url(${JSON.stringify(brand.loginImage)})`, backgroundSize: 'cover', backgroundPosition: 'center' } : undefined}>\n <div className=\"login-wash login-wash-a\"/>\n <div className=\"login-wash login-wash-b\"/>\n </div>\n <header className=\"login-topbar\">\n <AppLogo size={34}/>\n <span className=\"login-brand-name\">{appTitle}</span>\n </header>\n <main className=\"login-main\">\n <section className=\"login-hero\">\n <div className=\"login-eyebrow\">企业级后台管理</div>\n <h1 className=\"login-headline\">\n 高效管理,\n <br />\n <span className=\"login-headline-highlight\">赋能业务增长</span>\n </h1>\n <p className=\"login-desc\">\n 企业级后台管理系统,为团队提供高效、稳定、安全的一站式管理解决方案。\n </p>\n <div className=\"login-feature-list\">\n {['精细化权限管理', '安全审计机制', '稳定可靠运行', '多租户支持'].map((feature) => (<div key={feature} className=\"login-feature-item\">\n <span className=\"login-feature-check\">\n <Check size={12} strokeWidth={3}/>\n </span>\n {feature}\n </div>))}\n </div>\n </section>\n <div className={`login-card${identityQuery.data?.externalLogin ? ' login-card-external' : ''}`}>\n <div className=\"login-form-header\">\n <Title heading={3} style={{ marginBottom: 8, fontWeight: 600 }}>\n 欢迎回来\n </Title>\n <Text type=\"tertiary\" style={{ fontSize: 14, display: 'block', marginBottom: 24 }}>\n 请输入您的账号信息以登录工作台\n </Text>\n </div>\n {invalidated && <div className={`login-alert${invalidated.reason === 'concurrent-login' ? ' login-alert-danger' : ''}`} role=\"alert\">\n <ShieldAlert size={18} className=\"login-alert-icon\" aria-hidden/>\n <div className=\"login-alert-body\"><div className=\"login-alert-title\">{invalidatedTitle}</div><div className=\"login-alert-text\">{invalidated.message}</div></div>\n <button type=\"button\" className=\"login-alert-close\" aria-label=\"关闭提示\" onClick={() => setInvalidated(null)}>×</button>\n </div>}\n <div style={{ marginBottom: 20 }}>{renderLoginForm()}</div>\n {import.meta.env.VITE_DEMO_MODE === 'true' && (<div className=\"login-demo-tip\">\n <div style={{ marginBottom: 4 }}>\n <strong>演示模式</strong>:当前站点使用模拟数据,仅开放预置账号体验主要流程,不提供注册入口。\n </div>\n <div>\n 体验账号:<code>admin</code> / 密码:<code>123456</code>\n </div>\n </div>)}\n </div>\n </main>\n <footer className=\"login-footer\">\n © {dayjs().year()} {brand?.copyrightName ?? appTitle} · 高效 · 稳定 · 安全\n {brand?.icpNumber && <span> · {brand.icpUrl ? <a href={brand.icpUrl} target=\"_blank\" rel=\"noopener noreferrer\">{brand.icpNumber}</a> : brand.icpNumber}</span>}\n </footer>\n {sessionConflict && (<Suspense fallback={null}>\n <SessionConflictModal conflict={sessionConflict} loading={conflictResolving} onConfirm={() => void handleResolveConflict()} onCancel={() => setSessionConflict(null)}/>\n </Suspense>)}\n </div>);\n}\n","import { Button } from 'antd';\nimport { Menu, PanelLeftClose, PanelLeftOpen } from 'lucide-react';\nimport type { ReactNode } from 'react';\n/** Header regions migrated from react-antd-admin/layout/layout-header. */\nexport default function LayoutHeader({ children, actions, mobile, collapsed, showTrigger, onToggle }: {\n children: ReactNode;\n actions: ReactNode;\n mobile: boolean;\n collapsed: boolean;\n showTrigger: boolean;\n onToggle: () => void;\n}) {\n return <header className=\"arc-layout-header\">\n <div className=\"arc-layout-header__navigation\">\n {showTrigger && <Button type=\"text\" className=\"arc-layout-icon-button\" aria-label={mobile ? '打开导航菜单' : collapsed ? '展开侧边栏' : '收起侧边栏'} icon={mobile ? <Menu size={19}/> : collapsed ? <PanelLeftOpen size={18}/> : <PanelLeftClose size={18}/>} onClick={onToggle}/>}\n <div className=\"arc-layout-header__title\">{children}</div>\n </div>\n <div className=\"arc-layout-header__actions\">{actions}</div>\n </header>;\n}\n","/*!\n * OverlayScrollbars\n * Version: 2.17.0\n *\n * Copyright (c) Rene Haas | KingSora.\n * https://github.com/KingSora\n *\n * Released under the MIT license.\n */\nconst createCache = (t, n) => {\n const {o: o, i: s, u: e} = t;\n let c = o;\n let r;\n const cacheUpdateContextual = (t, n) => {\n const o = c;\n const i = t;\n const l = n || (s ? !s(o, i) : o !== i);\n if (l || e) {\n c = i;\n r = o;\n }\n return [ c, l, r ];\n };\n const cacheUpdateIsolated = t => cacheUpdateContextual(n(c, r), t);\n const getCurrentCache = t => [ c, !!t, r ];\n return [ n ? cacheUpdateIsolated : cacheUpdateContextual, getCurrentCache ];\n};\n\nconst t = typeof window !== \"undefined\" && typeof HTMLElement !== \"undefined\" && !!window.document;\n\nconst n = t ? window : {};\n\nconst o = Math.max;\n\nconst s = Math.min;\n\nconst e = Math.round;\n\nconst c = Math.abs;\n\nconst r = Math.sign;\n\nconst i = n.cancelAnimationFrame;\n\nconst l = n.requestAnimationFrame;\n\nconst a = n.setTimeout;\n\nconst u = n.clearTimeout;\n\nconst getApi = t => typeof n[t] !== \"undefined\" ? n[t] : void 0;\n\nconst f = getApi(\"MutationObserver\");\n\nconst _ = getApi(\"IntersectionObserver\");\n\nconst d = getApi(\"ResizeObserver\");\n\nconst p = getApi(\"ScrollTimeline\");\n\nconst isUndefined = t => t === void 0;\n\nconst isNull = t => t === null;\n\nconst isNumber = t => typeof t === \"number\";\n\nconst isString = t => typeof t === \"string\";\n\nconst isBoolean = t => typeof t === \"boolean\";\n\nconst isFunction = t => typeof t === \"function\";\n\nconst isArray = t => Array.isArray(t);\n\nconst isObject = t => typeof t === \"object\" && !isArray(t) && !isNull(t);\n\nconst isArrayLike = t => {\n const n = !!t && t.length;\n const o = isNumber(n) && n > -1 && n % 1 == 0;\n return isArray(t) || !isFunction(t) && o ? n > 0 && isObject(t) ? n - 1 in t : true : false;\n};\n\nconst isPlainObject = t => !!t && t.constructor === Object;\n\nconst isHTMLElement = t => t instanceof HTMLElement;\n\nconst isElement = t => t instanceof Element;\n\nconst animationCurrentTime = () => performance.now();\n\nconst animateNumber = (t, n, s, e, c) => {\n let r = 0;\n const a = animationCurrentTime();\n const u = o(0, s);\n const frame = s => {\n const i = animationCurrentTime();\n const f = i - a;\n const _ = f >= u;\n const d = s ? 1 : 1 - (o(0, a + u - i) / u || 0);\n const p = (n - t) * (isFunction(c) ? c(d, d * u, 0, 1, u) : d) + t;\n const v = _ || d === 1;\n e(p, d, v);\n r = v ? 0 : l((() => frame()));\n };\n frame();\n return t => {\n i(r);\n if (t) {\n frame(t);\n }\n };\n};\n\nfunction each(t, n) {\n if (isArrayLike(t)) {\n for (let o = 0; o < t.length; o++) {\n if (n(t[o], o, t) === false) {\n break;\n }\n }\n } else if (t) {\n each(Object.keys(t), (o => n(t[o], o, t)));\n }\n return t;\n}\n\nconst inArray = (t, n) => t.indexOf(n) >= 0;\n\nconst concat = (t, n) => t.concat(n);\n\nconst push = (t, n, o) => {\n if (!isString(n) && isArrayLike(n)) {\n Array.prototype.push.apply(t, n);\n } else {\n t.push(n);\n }\n return t;\n};\n\nconst from = t => Array.from(t || []);\n\nconst createOrKeepArray = t => {\n if (isArray(t)) {\n return t;\n }\n return !isString(t) && isArrayLike(t) ? from(t) : [ t ];\n};\n\nconst isEmptyArray = t => !!t && !t.length;\n\nconst deduplicateArray = t => from(new Set(t));\n\nconst runEachAndClear = (t, n, o) => {\n const runFn = t => t ? t.apply(void 0, n || []) : true;\n each(t, runFn);\n if (!o) {\n t.length = 0;\n }\n};\n\nconst v = \"paddingTop\";\n\nconst g = \"paddingRight\";\n\nconst h = \"paddingLeft\";\n\nconst b = \"paddingBottom\";\n\nconst y = \"marginLeft\";\n\nconst w = \"marginRight\";\n\nconst S = \"marginBottom\";\n\nconst m = \"overflowX\";\n\nconst O = \"overflowY\";\n\nconst C = \"width\";\n\nconst $ = \"height\";\n\nconst x = \"visible\";\n\nconst H = \"hidden\";\n\nconst E = \"scroll\";\n\nconst capitalizeFirstLetter = t => {\n const n = String(t || \"\");\n return n ? n[0].toUpperCase() + n.slice(1) : \"\";\n};\n\nconst equal = (t, n, o, s) => {\n if (t && n) {\n let s = true;\n each(o, (o => {\n const e = t[o];\n const c = n[o];\n if (e !== c) {\n s = false;\n }\n }));\n return s;\n }\n return false;\n};\n\nconst equalWH = (t, n) => equal(t, n, [ \"w\", \"h\" ]);\n\nconst equalXY = (t, n) => equal(t, n, [ \"x\", \"y\" ]);\n\nconst equalTRBL = (t, n) => equal(t, n, [ \"t\", \"r\", \"b\", \"l\" ]);\n\nconst bind = (t, ...n) => t.bind(0, ...n);\n\nconst selfClearTimeout = t => {\n let n;\n const o = t ? a : l;\n const s = t ? u : i;\n return [ e => {\n s(n);\n n = o((() => e()), isFunction(t) ? t() : t);\n }, () => s(n) ];\n};\n\nconst getDebouncer = t => {\n const n = isFunction(t) ? t() : t;\n if (isNumber(n)) {\n const t = n ? a : l;\n const o = n ? u : i;\n return s => {\n const e = t((() => s()), n);\n return () => {\n o(e);\n };\n };\n }\n return n && n._;\n};\n\nconst debounce = (t, n) => {\n const {p: o, v: s, S: e, m: c} = n || {};\n let r;\n let i;\n let l;\n let a;\n const u = function invokeFunctionToDebounce(n) {\n if (i) {\n i();\n }\n if (r) {\n r();\n }\n a = i = r = l = void 0;\n t.apply(this, n);\n };\n const mergeParms = t => c && l ? c(l, t) : t;\n const flush = () => {\n if (i && l) {\n u(mergeParms(l) || l);\n }\n };\n const f = function debouncedFn() {\n const t = from(arguments);\n const n = getDebouncer(o);\n if (n) {\n const o = typeof e === \"function\" ? e() : e;\n const c = getDebouncer(s);\n const f = mergeParms(t);\n const _ = f || t;\n const d = u.bind(0, _);\n if (i) {\n i();\n }\n if (o && !a) {\n d();\n a = true;\n i = n((() => a = void 0));\n } else {\n i = n(d);\n if (c && !r) {\n r = c(flush);\n }\n }\n l = _;\n } else {\n u(t);\n }\n };\n f.O = flush;\n return f;\n};\n\nconst hasOwnProperty = (t, n) => Object.prototype.hasOwnProperty.call(t, n);\n\nconst keys = t => t ? Object.keys(t) : [];\n\nconst assignDeep = (t, n, o, s, e, c, r) => {\n const i = [ n, o, s, e, c, r ];\n if ((typeof t !== \"object\" || isNull(t)) && !isFunction(t)) {\n t = {};\n }\n each(i, (n => {\n each(n, ((o, s) => {\n const e = n[s];\n if (t === e) {\n return true;\n }\n const c = isArray(e);\n if (e && isPlainObject(e)) {\n const n = t[s];\n let o = n;\n if (c && !isArray(n)) {\n o = [];\n } else if (!c && !isPlainObject(n)) {\n o = {};\n }\n t[s] = assignDeep(o, e);\n } else {\n t[s] = c ? e.slice() : e;\n }\n }));\n }));\n return t;\n};\n\nconst removeUndefinedProperties = (t, n) => each(assignDeep({}, t), ((t, n, o) => {\n if (t === void 0) {\n delete o[n];\n } else if (t && isPlainObject(t)) {\n o[n] = removeUndefinedProperties(t);\n }\n}));\n\nconst isEmptyObject = t => !keys(t).length;\n\nconst noop = () => {};\n\nconst capNumber = (t, n, e) => o(t, s(n, e));\n\nconst getDomTokensArray = t => deduplicateArray((isArray(t) ? t : (t || \"\").split(\" \")).filter((t => t)));\n\nconst getAttr = (t, n) => t && t.getAttribute(n);\n\nconst hasAttr = (t, n) => t && t.hasAttribute(n);\n\nconst setAttrs = (t, n, o) => {\n each(getDomTokensArray(n), (n => {\n if (t) {\n t.setAttribute(n, String(o || \"\"));\n }\n }));\n};\n\nconst removeAttrs = (t, n) => {\n each(getDomTokensArray(n), (n => t && t.removeAttribute(n)));\n};\n\nconst domTokenListAttr = (t, n) => {\n const o = getDomTokensArray(getAttr(t, n));\n const s = bind(setAttrs, t, n);\n const domTokenListOperation = (t, n) => {\n const s = new Set(o);\n each(getDomTokensArray(t), (t => {\n s[n](t);\n }));\n return from(s).join(\" \");\n };\n return {\n C: t => s(domTokenListOperation(t, \"delete\")),\n $: t => s(domTokenListOperation(t, \"add\")),\n H: t => {\n const n = getDomTokensArray(t);\n return n.reduce(((t, n) => t && o.includes(n)), n.length > 0);\n }\n };\n};\n\nconst removeAttrClass = (t, n, o) => {\n domTokenListAttr(t, n).C(o);\n return bind(addAttrClass, t, n, o);\n};\n\nconst addAttrClass = (t, n, o) => {\n domTokenListAttr(t, n).$(o);\n return bind(removeAttrClass, t, n, o);\n};\n\nconst addRemoveAttrClass = (t, n, o, s) => (s ? addAttrClass : removeAttrClass)(t, n, o);\n\nconst hasAttrClass = (t, n, o) => domTokenListAttr(t, n).H(o);\n\nconst createDomTokenListClass = t => domTokenListAttr(t, \"class\");\n\nconst removeClass = (t, n) => {\n createDomTokenListClass(t).C(n);\n};\n\nconst addClass = (t, n) => {\n createDomTokenListClass(t).$(n);\n return bind(removeClass, t, n);\n};\n\nconst find = (t, n) => {\n const o = n ? isElement(n) && n : document;\n return o ? from(o.querySelectorAll(t)) : [];\n};\n\nconst findFirst = (t, n) => {\n const o = n ? isElement(n) && n : document;\n return o && o.querySelector(t);\n};\n\nconst is = (t, n) => isElement(t) && t.matches(n);\n\nconst isBodyElement = t => is(t, \"body\");\n\nconst contents = t => t ? from(t.childNodes) : [];\n\nconst parent = t => t && t.parentElement;\n\nconst closest = (t, n) => isElement(t) && t.closest(n);\n\nconst getFocusedElement = t => document.activeElement;\n\nconst liesBetween = (t, n, o) => {\n const s = closest(t, n);\n const e = t && findFirst(o, s);\n const c = closest(e, n) === s;\n return s && e ? s === t || e === t || c && closest(closest(t, o), n) !== s : false;\n};\n\nconst removeElements = t => {\n each(createOrKeepArray(t), (t => {\n const n = parent(t);\n if (t && n) {\n n.removeChild(t);\n }\n }));\n};\n\nconst appendChildren = (t, n) => bind(removeElements, t && n && each(createOrKeepArray(n), (n => {\n if (n) {\n t.appendChild(n);\n }\n})));\n\nlet D;\n\nconst getTrustedTypePolicy = () => D;\n\nconst setTrustedTypePolicy = t => {\n D = t;\n};\n\nconst createDiv = t => {\n const n = document.createElement(\"div\");\n setAttrs(n, \"class\", t);\n return n;\n};\n\nconst createDOM = t => {\n const n = createDiv();\n const o = getTrustedTypePolicy();\n const s = t.trim();\n n.innerHTML = o ? o.createHTML(s) : s;\n return each(contents(n), (t => removeElements(t)));\n};\n\nconst getCSSVal = (t, n) => t.getPropertyValue(n) || t[n] || \"\";\n\nconst validFiniteNumber = t => {\n const n = t || 0;\n return isFinite(n) ? n : 0;\n};\n\nconst parseToZeroOrNumber = t => validFiniteNumber(parseFloat(t || \"\"));\n\nconst roundCssNumber = t => Math.round(t * 1e4) / 1e4;\n\nconst numberToCssPx = t => `${roundCssNumber(validFiniteNumber(t))}px`;\n\nfunction setStyles(t, n) {\n t && n && each(n, ((n, o) => {\n try {\n const s = t.style;\n const e = isNull(n) || isBoolean(n) ? \"\" : isNumber(n) ? numberToCssPx(n) : n;\n if (o.indexOf(\"--\") === 0) {\n s.setProperty(o, e);\n } else {\n s[o] = e;\n }\n } catch (s) {}\n }));\n}\n\nfunction getStyles(t, o, s) {\n const e = isString(o);\n let c = e ? \"\" : {};\n if (t) {\n const r = n.getComputedStyle(t, s) || t.style;\n c = e ? getCSSVal(r, o) : from(o).reduce(((t, n) => {\n t[n] = getCSSVal(r, n);\n return t;\n }), c);\n }\n return c;\n}\n\nconst topRightBottomLeft = (t, n, o) => {\n const s = n ? `${n}-` : \"\";\n const e = o ? `-${o}` : \"\";\n const c = `${s}top${e}`;\n const r = `${s}right${e}`;\n const i = `${s}bottom${e}`;\n const l = `${s}left${e}`;\n const a = getStyles(t, [ c, r, i, l ]);\n return {\n t: parseToZeroOrNumber(a[c]),\n r: parseToZeroOrNumber(a[r]),\n b: parseToZeroOrNumber(a[i]),\n l: parseToZeroOrNumber(a[l])\n };\n};\n\nconst getTrasformTranslateValue = (t, n) => `translate${isObject(t) ? `(${t.x},${t.y})` : `${n ? \"X\" : \"Y\"}(${t})`}`;\n\nconst elementHasDimensions = t => !!(t.offsetWidth || t.offsetHeight || t.getClientRects().length);\n\nconst z = {\n w: 0,\n h: 0\n};\n\nconst getElmWidthHeightProperty = (t, n) => n ? {\n w: n[`${t}Width`],\n h: n[`${t}Height`]\n} : z;\n\nconst getWindowSize = t => getElmWidthHeightProperty(\"inner\", t || n);\n\nconst I = bind(getElmWidthHeightProperty, \"offset\");\n\nconst A = bind(getElmWidthHeightProperty, \"client\");\n\nconst T = bind(getElmWidthHeightProperty, \"scroll\");\n\nconst getFractionalSize = t => {\n const n = parseFloat(getStyles(t, C)) || 0;\n const o = parseFloat(getStyles(t, $)) || 0;\n return {\n w: n - e(n),\n h: o - e(o)\n };\n};\n\nconst getBoundingClientRect = t => t.getBoundingClientRect();\n\nconst hasDimensions = t => !!t && elementHasDimensions(t);\n\nconst domRectHasDimensions = t => !!(t && (t[$] || t[C]));\n\nconst domRectAppeared = (t, n) => {\n const o = domRectHasDimensions(t);\n const s = domRectHasDimensions(n);\n return !s && o;\n};\n\nconst removeEventListener = (t, n, o, s) => {\n each(getDomTokensArray(n), (n => {\n if (t) {\n t.removeEventListener(n, o, s);\n }\n }));\n};\n\nconst addEventListener = (t, n, o, s) => {\n var e;\n const c = (e = s && s.D) != null ? e : true;\n const r = s && s.I || false;\n const i = s && s.A || false;\n const l = {\n passive: c,\n capture: r\n };\n return bind(runEachAndClear, getDomTokensArray(n).map((n => {\n const s = i ? e => {\n removeEventListener(t, n, s, r);\n if (o) {\n o(e);\n }\n } : o;\n if (t) {\n t.addEventListener(n, s, l);\n }\n return bind(removeEventListener, t, n, s, r);\n })));\n};\n\nconst stopPropagation = t => t.stopPropagation();\n\nconst preventDefault = t => t.preventDefault();\n\nconst stopAndPrevent = t => stopPropagation(t) || preventDefault(t);\n\nconst swallowFocusEvents = t => bind(runEachAndClear, createOrKeepArray(t).map((t => addEventListener(t, \"focusin focusout focus blur\", (t => stopAndPrevent(t)), {\n I: true,\n D: false\n}))));\n\nconst scrollElementTo = (t, n) => {\n const {x: o, y: s} = isNumber(n) ? {\n x: n,\n y: n\n } : n || {};\n isNumber(o) && (t.scrollLeft = o);\n isNumber(s) && (t.scrollTop = s);\n};\n\nconst getElementScroll = t => ({\n x: t.scrollLeft,\n y: t.scrollTop\n});\n\nconst getZeroScrollCoordinates = () => ({\n T: {\n x: 0,\n y: 0\n },\n k: {\n x: 0,\n y: 0\n }\n});\n\nconst sanitizeScrollCoordinates = (t, n) => {\n const {T: o, k: s} = t;\n const {w: e, h: i} = n;\n const sanitizeAxis = (t, n, o) => {\n let s = r(t) * o;\n let e = r(n) * o;\n if (s === e) {\n const o = c(t);\n const r = c(n);\n e = o > r ? 0 : e;\n s = o < r ? 0 : s;\n }\n s = s === e ? 0 : s;\n return [ s + 0, e + 0 ];\n };\n const [l, a] = sanitizeAxis(o.x, s.x, e);\n const [u, f] = sanitizeAxis(o.y, s.y, i);\n return {\n T: {\n x: l,\n y: u\n },\n k: {\n x: a,\n y: f\n }\n };\n};\n\nconst isDefaultDirectionScrollCoordinates = ({T: t, k: n}) => {\n const getAxis = (t, n) => t === 0 && t <= n;\n return {\n x: getAxis(t.x, n.x),\n y: getAxis(t.y, n.y)\n };\n};\n\nconst getScrollCoordinatesPercent = ({T: t, k: n}, o) => {\n const getAxis = (t, n, o) => capNumber(0, 1, (t - o) / (t - n) || 0);\n return {\n x: getAxis(t.x, n.x, o.x),\n y: getAxis(t.y, n.y, o.y)\n };\n};\n\nconst focusElement = t => {\n if (t && t.focus) {\n t.focus({\n preventScroll: true,\n focusVisible: false\n });\n }\n};\n\nconst manageListener = (t, n) => {\n each(createOrKeepArray(n), t);\n};\n\nconst createEventListenerHub = t => {\n const n = new Map;\n const removeEvent = (t, o) => {\n if (t) {\n const s = n.get(t);\n manageListener((t => {\n if (s) {\n s[t ? \"delete\" : \"clear\"](t);\n }\n }), o);\n } else {\n n.forEach((t => {\n t.clear();\n }));\n n.clear();\n }\n };\n const addEvent = (t, o) => {\n if (isString(t)) {\n const s = n.get(t) || new Set;\n n.set(t, s);\n manageListener((t => {\n if (isFunction(t)) {\n s.add(t);\n }\n }), o);\n return bind(removeEvent, t, o);\n }\n if (isBoolean(o) && o) {\n removeEvent();\n }\n const s = keys(t);\n const e = [];\n each(s, (n => {\n const o = t[n];\n if (o) {\n push(e, addEvent(n, o));\n }\n }));\n return bind(runEachAndClear, e);\n };\n const triggerEvent = (t, o) => {\n each(from(n.get(t)), (t => {\n if (o && !isEmptyArray(o)) {\n t.apply(0, o);\n } else {\n t();\n }\n }));\n };\n addEvent(t || {});\n return [ addEvent, removeEvent, triggerEvent ];\n};\n\nconst k = {};\n\nconst M = {};\n\nconst addPlugins = t => {\n each(t, (t => each(t, ((n, o) => {\n k[o] = t[o];\n }))));\n};\n\nconst registerPluginModuleInstances = (t, n, o) => keys(t).map((s => {\n const {static: e, instance: c} = t[s];\n const [r, i, l] = o || [];\n const a = o ? c : e;\n if (a) {\n const t = o ? a(r, i, n) : a(n);\n return (l || M)[s] = t;\n }\n}));\n\nconst getInstancePluginModuleInstance = (t, n) => t[n];\n\nconst getStaticPluginModuleInstance = t => getInstancePluginModuleInstance(M, t);\n\nconst R = \"__osOptionsValidationPlugin\";\n\nconst V = `data-overlayscrollbars`;\n\nconst L = \"os-environment\";\n\nconst P = `${L}-scrollbar-hidden`;\n\nconst U = `${V}-initialize`;\n\nconst N = \"noClipping\";\n\nconst q = `${V}-body`;\n\nconst B = V;\n\nconst F = \"host\";\n\nconst j = `${V}-viewport`;\n\nconst X = m;\n\nconst Y = O;\n\nconst W = \"arrange\";\n\nconst J = \"measuring\";\n\nconst G = \"scrolling\";\n\nconst K = \"scrollbarHidden\";\n\nconst Q = \"noContent\";\n\nconst Z = \"noScrollbars\";\n\nconst tt = \"contentOverflow\";\n\nconst nt = `${V}-padding`;\n\nconst ot = `${V}-content`;\n\nconst st = \"os-size-observer\";\n\nconst et = `${st}-appear`;\n\nconst ct = `${st}-listener`;\n\nconst rt = `${ct}-scroll`;\n\nconst it = `${ct}-item`;\n\nconst lt = `${it}-final`;\n\nconst at = \"os-trinsic-observer\";\n\nconst ut = \"os-theme-none\";\n\nconst ft = \"os-scrollbar\";\n\nconst _t = `${ft}-rtl`;\n\nconst dt = `${ft}-horizontal`;\n\nconst pt = `${ft}-vertical`;\n\nconst vt = `${ft}-track`;\n\nconst gt = `${ft}-handle`;\n\nconst ht = `${ft}-visible`;\n\nconst bt = `${ft}-cornerless`;\n\nconst yt = `${ft}-interaction`;\n\nconst wt = `${ft}-unusable`;\n\nconst St = `${ft}-auto-hide`;\n\nconst mt = `${St}-hidden`;\n\nconst Ot = `${ft}-wheel`;\n\nconst Ct = `${vt}-interactive`;\n\nconst $t = `${gt}-interactive`;\n\nconst xt = \"__osSizeObserverPlugin\";\n\nconst Ht = /* @__PURE__ */ (() => ({\n [xt]: {\n static: () => (t, n, o) => {\n const s = 3333333;\n const e = \"scroll\";\n const c = createDOM(`<div class=\"${it}\" dir=\"ltr\"><div class=\"${it}\"><div class=\"${lt}\"></div></div><div class=\"${it}\"><div class=\"${lt}\" style=\"width: 200%; height: 200%\"></div></div></div>`);\n const r = c[0];\n const a = r.lastChild;\n const u = r.firstChild;\n const f = u == null ? void 0 : u.firstChild;\n let _ = I(r);\n let d = _;\n let p = false;\n let v;\n const reset = () => {\n scrollElementTo(u, s);\n scrollElementTo(a, s);\n };\n const onResized = t => {\n v = 0;\n if (p) {\n _ = d;\n n(t === true);\n }\n };\n const onScroll = t => {\n d = I(r);\n p = !t || !equalWH(d, _);\n if (t) {\n stopPropagation(t);\n if (p && !v) {\n i(v);\n v = l(onResized);\n }\n } else {\n onResized(t === false);\n }\n reset();\n };\n const g = [ appendChildren(t, c), addEventListener(u, e, onScroll), addEventListener(a, e, onScroll) ];\n addClass(t, rt);\n setStyles(f, {\n [C]: s,\n [$]: s\n });\n l(reset);\n return [ o ? bind(onScroll, false) : reset, g ];\n }\n }\n}))();\n\nconst getShowNativeOverlaidScrollbars = (t, n) => {\n const {M: o} = n;\n const [s, e] = t(\"showNativeOverlaidScrollbars\");\n return [ s && o.x && o.y, e ];\n};\n\nconst overflowIsVisible = t => t.indexOf(x) === 0;\n\nconst overflowBehaviorToOverflowStyle = t => t.replace(`${x}-`, \"\");\n\nconst overflowCssValueToOverflowStyle = (t, n) => {\n if (t === \"auto\") {\n return n ? E : H;\n }\n const o = t || H;\n return [ H, E, x ].includes(o) ? o : H;\n};\n\nconst getElementOverflowStyle = (t, n) => {\n const {overflowX: o, overflowY: s} = getStyles(t, [ m, O ]);\n return {\n x: overflowCssValueToOverflowStyle(o, n.x),\n y: overflowCssValueToOverflowStyle(s, n.y)\n };\n};\n\nconst createViewportOverflowStyleClassName = (t, n) => {\n const o = n ? X : Y;\n return `${o}${capitalizeFirstLetter(t)}`;\n};\n\nconst Et = \"__osScrollbarsHidingPlugin\";\n\nconst Dt = /* @__PURE__ */ (() => ({\n [Et]: {\n static: () => ({\n R: (t, n, o, s, e) => {\n const {V: c, L: r} = t;\n const {P: i, M: l, U: a} = s;\n const u = !c && !i && (l.x || l.y);\n const [f] = getShowNativeOverlaidScrollbars(e, s);\n const _getViewportOverflowHideOffset = t => {\n const n = i || f ? 0 : 42;\n const getHideOffsetPerAxis = (t, o, s) => {\n const e = t ? n : s;\n const c = o && !i ? e : 0;\n const r = t && !!n;\n return [ c, r ];\n };\n const [o, s] = getHideOffsetPerAxis(l.x, t.x === E, a.x);\n const [e, c] = getHideOffsetPerAxis(l.y, t.y === E, a.y);\n return {\n N: {\n x: o,\n y: e\n },\n q: {\n x: s,\n y: c\n }\n };\n };\n const _hideNativeScrollbars = t => {\n if (!c) {\n const {B: s} = o;\n const e = assignDeep({}, {\n [w]: 0,\n [S]: 0,\n [y]: 0\n });\n const {N: c, q: r} = _getViewportOverflowHideOffset(t);\n const {x: i, y: l} = r;\n const {x: a, y: f} = c;\n const {F: _} = n;\n const d = s ? y : w;\n const p = s ? h : g;\n const v = _[d];\n const m = _[S];\n const O = _[p];\n const $ = _[b];\n e[C] = `calc(100% + ${f + v * -1}px)`;\n e[d] = -f + v;\n e[S] = -a + m;\n if (u) {\n e[p] = O + (l ? f : 0);\n e[b] = $ + (i ? a : 0);\n }\n return e;\n }\n };\n const _arrangeViewport = (t, s, e) => {\n if (u) {\n const {F: c} = n;\n const {N: i, q: l} = _getViewportOverflowHideOffset(t);\n const {x: a, y: u} = l;\n const {x: f, y: _} = i;\n const {B: d} = o;\n const p = d ? g : h;\n const v = c[p];\n const b = c.paddingTop;\n const y = s.w + e.w;\n const w = s.h + e.h;\n const S = {\n w: _ && u ? `${_ + y - v}px` : \"\",\n h: f && a ? `${f + w - b}px` : \"\"\n };\n setStyles(r, {\n \"--os-vaw\": S.w,\n \"--os-vah\": S.h\n });\n }\n return u;\n };\n const _undoViewportArrange = () => {\n if (u) {\n const {j: t, F: o} = n;\n const s = getElementOverflowStyle(r, t);\n const {q: e} = _getViewportOverflowHideOffset(s);\n const {x: c, y: i} = e;\n const l = {};\n const assignProps = t => each(t, (t => {\n l[t] = o[t];\n }));\n if (c) {\n assignProps([ S, v, b ]);\n }\n if (i) {\n assignProps([ y, w, h, g ]);\n }\n const a = getStyles(r, keys(l));\n const u = removeAttrClass(r, j, W);\n setStyles(r, l);\n return () => {\n setStyles(r, assignDeep({}, a, _hideNativeScrollbars(s)));\n u();\n };\n }\n return noop;\n };\n return {\n X: _arrangeViewport,\n Y: _undoViewportArrange,\n W: _hideNativeScrollbars\n };\n }\n })\n }\n}))();\n\nconst zt = \"__osClickScrollPlugin\";\n\nconst It = /* @__PURE__ */ (() => ({\n [zt]: {\n static: () => (t, n, o, s, e, c, r, i) => {\n let l = false;\n let a = noop;\n const u = {\n clickScrollDistance: e,\n clickScrollDuration: 200,\n clickPressDelay: 150,\n pressDistanceDuration: 90\n };\n const easeOutQuad = t => 1 - (1 - t) * (1 - t);\n const easeInOutQuad = t => t < .5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2;\n const {clickScrollDistance: f, clickScrollDuration: _, clickPressDelay: d, pressDistanceDuration: p} = assignDeep({}, u, isFunction(c) ? c(r) : u);\n const v = f === 0;\n const g = p * 2.3;\n const h = p * 2.5;\n const b = f ? e / f : 0;\n const [y, w] = selfClearTimeout(Math.max(22, d));\n const S = o();\n const m = Math.sign(s);\n const O = animateNumber(0, v ? s : f * m, _, ((e, c, r) => {\n if (v) {\n n(e);\n } else {\n t(e);\n }\n if (r) {\n i(l);\n y((() => {\n if (l || v || !p) {\n return;\n }\n const t = o();\n const e = t - S;\n const c = e * b;\n const r = s - e;\n const i = c ? r / c : 0;\n const u = i <= 2.2;\n const f = Math.max(1, i || 0);\n const _ = (!i || i > .5) && Math.sign(r) === m;\n if (_) {\n a = animateNumber(e, u ? s : s - c, u ? g * f : p * f, ((t, o, e) => {\n n(t);\n if (e && !u) {\n a = animateNumber(t, s, h, n, easeOutQuad);\n }\n }), u && easeInOutQuad);\n }\n }));\n }\n }), easeInOutQuad);\n return t => {\n l = true;\n if (t) {\n O();\n }\n w();\n a();\n };\n }\n }\n}))();\n\nconst opsStringify = t => JSON.stringify(t, ((t, n) => {\n if (isFunction(n)) {\n throw 0;\n }\n return n;\n}));\n\nconst getPropByPath = (t, n) => t ? `${n}`.split(\".\").reduce(((t, n) => t && hasOwnProperty(t, n) ? t[n] : void 0), t) : void 0;\n\nconst At = [ 0, 33 ];\n\nconst Tt = [ 33, 99 ];\n\nconst kt = [ 222, 666, true ];\n\nconst Mt = {\n paddingAbsolute: false,\n showNativeOverlaidScrollbars: false,\n update: {\n elementEvents: [ [ \"img\", \"load\" ] ],\n debounce: {\n mutation: At,\n resize: null,\n event: Tt,\n env: kt\n },\n attributes: null,\n ignoreMutation: null,\n flowDirectionStyles: null\n },\n overflow: {\n x: \"scroll\",\n y: \"scroll\"\n },\n scrollbars: {\n theme: \"os-theme-dark\",\n visibility: \"auto\",\n autoHide: \"never\",\n autoHideDelay: 1300,\n autoHideSuspend: false,\n dragScroll: true,\n clickScroll: false,\n pointers: [ \"mouse\", \"touch\", \"pen\" ]\n }\n};\n\nconst getOptionsDiff = (t, n) => {\n const o = {};\n const s = concat(keys(n), keys(t));\n each(s, (s => {\n const e = t[s];\n const c = n[s];\n if (isObject(e) && isObject(c)) {\n assignDeep(o[s] = {}, getOptionsDiff(e, c));\n if (isEmptyObject(o[s])) {\n delete o[s];\n }\n } else if (hasOwnProperty(n, s) && c !== e) {\n let t = true;\n if (isArray(e) || isArray(c)) {\n try {\n if (opsStringify(e) === opsStringify(c)) {\n t = false;\n }\n } catch (r) {}\n }\n if (t) {\n o[s] = c;\n }\n }\n }));\n return o;\n};\n\nconst createOptionCheck = (t, n, o) => s => [ getPropByPath(t, s), o || getPropByPath(n, s) !== void 0 ];\n\nlet Rt;\n\nconst getNonce = () => Rt;\n\nconst setNonce = t => {\n Rt = t;\n};\n\nlet Vt;\n\nconst createEnvironment = () => {\n const getNativeScrollbarSize = (t, n, o) => {\n appendChildren(document.body, t);\n appendChildren(document.body, t);\n const s = A(t);\n const e = I(t);\n const c = getFractionalSize(n);\n if (o) {\n removeElements(t);\n }\n return {\n x: e.h - s.h + c.h,\n y: e.w - s.w + c.w\n };\n };\n const getNativeScrollbarsHiding = t => {\n let n = false;\n const o = addClass(t, P);\n try {\n n = getStyles(t, \"scrollbar-width\") === \"none\" || getStyles(t, \"display\", \"::-webkit-scrollbar\") === \"none\";\n } catch (s) {}\n o();\n return n;\n };\n const getFocusableScrollers = t => {\n const getActiveElement = () => t.ownerDocument.activeElement;\n const n = getActiveElement();\n const o = swallowFocusEvents([ t, n ]);\n setStyles(t, {\n visibility: \"visible\"\n });\n focusElement(t);\n const s = getActiveElement() === t;\n setStyles(t, {\n visibility: \"\"\n });\n t.blur();\n if (isHTMLElement(n)) {\n n.focus();\n }\n o();\n return s;\n };\n const t = `.${L}{scroll-behavior:auto!important;position:fixed;opacity:0;visibility:hidden;overflow:scroll;height:200px;width:200px;z-index:-1}.${L} div{width:200%;height:200%;margin:10px 0}.${P}{scrollbar-width:none!important}@supports not (scrollbar-width:none){.${P}::-webkit-scrollbar,.${P}::-webkit-scrollbar-corner{appearance:none!important;display:none!important;width:0!important;height:0!important}}`;\n const o = createDOM(`<div class=\"${L}\"><div></div><style>${t}</style></div>`);\n const s = o[0];\n const e = s.firstChild;\n const c = s.lastChild;\n const r = getNonce();\n if (r) {\n c.nonce = r;\n }\n const [i, , l] = createEventListenerHub();\n const [a, u] = createCache({\n o: getNativeScrollbarSize(s, e),\n i: equalXY\n }, bind(getNativeScrollbarSize, s, e, true));\n const [f] = u();\n const _ = getNativeScrollbarsHiding(s);\n const d = getFocusableScrollers(s);\n const v = {\n x: f.x === 0,\n y: f.y === 0\n };\n const g = {\n elements: {\n host: null,\n padding: !_,\n viewport: t => _ && isBodyElement(t) && t,\n content: false\n },\n scrollbars: {\n slot: true\n },\n cancel: {\n nativeScrollbarsOverlaid: false,\n body: null\n }\n };\n const h = assignDeep({}, Mt);\n const b = bind(assignDeep, {}, h);\n const y = bind(assignDeep, {}, g);\n const w = {\n U: f,\n M: v,\n P: _,\n J: d,\n G: !!p,\n K: bind(i, \"r\"),\n Z: y,\n tt: t => assignDeep(g, t) && y(),\n nt: b,\n ot: t => assignDeep(h, t) && b(),\n st: assignDeep({}, g),\n et: assignDeep({}, h)\n };\n removeAttrs(s, \"style\");\n removeElements(s);\n addEventListener(n, \"resize\", (() => {\n l(\"r\", []);\n }));\n if (isFunction(n.matchMedia) && !_ && (!v.x || !v.y)) {\n const addZoomListener = t => {\n const o = n.matchMedia(`(resolution: ${n.devicePixelRatio}dppx)`);\n addEventListener(o, \"change\", (() => {\n t();\n addZoomListener(t);\n }), {\n A: true\n });\n };\n addZoomListener((() => {\n const [t, n] = a();\n assignDeep(w.U, t);\n l(\"r\", [ n ]);\n }));\n }\n return w;\n};\n\nconst getEnvironment = () => {\n if (!Vt) {\n Vt = createEnvironment();\n }\n return Vt;\n};\n\nconst createEventContentChange = (t, n, o) => {\n let s = false;\n const e = o ? new WeakMap : false;\n const destroy = () => {\n s = true;\n };\n const updateElements = c => {\n if (e && o) {\n const r = o.map((n => {\n const [o, s] = n || [];\n const e = s && o ? (c || find)(o, t) : [];\n return [ e, s ];\n }));\n each(r, (o => each(o[0], (c => {\n const r = o[1];\n const i = e.get(c) || [];\n const l = t.contains(c);\n if (l && r) {\n const t = addEventListener(c, r, (o => {\n if (s) {\n t();\n e.delete(c);\n } else {\n n(o);\n }\n }));\n e.set(c, push(i, t));\n } else {\n runEachAndClear(i);\n e.delete(c);\n }\n }))));\n }\n };\n updateElements();\n return [ destroy, updateElements ];\n};\n\nconst createDOMObserver = (t, n, o, s) => {\n let e = false;\n const {ct: c, rt: r, it: i, lt: l, ut: a, ft: u} = s || {};\n const [_, d] = createEventContentChange(t, (() => e && o(true)), i);\n const p = c || [];\n const v = r || [];\n const g = concat(p, v);\n const observerCallback = (e, c) => {\n if (!isEmptyArray(c)) {\n const r = a || noop;\n const i = u || noop;\n const f = [];\n const _ = [];\n let p = false;\n let g = false;\n each(c, (o => {\n const {attributeName: e, target: c, type: a, oldValue: u, addedNodes: d, removedNodes: h} = o;\n const b = a === \"attributes\";\n const y = a === \"childList\";\n const w = t === c;\n const S = b && e;\n const m = S && getAttr(c, e || \"\");\n const O = isString(m) ? m : null;\n const C = S && u !== O;\n const $ = inArray(v, e) && C;\n if (n && (y || !w)) {\n const n = b && C;\n const a = n && l && is(c, l);\n const _ = a ? !r(c, e, u, O) : !b || n;\n const p = _ && !i(o, !!a, t, s);\n each(d, (t => push(f, t)));\n each(h, (t => push(f, t)));\n g = g || p;\n }\n if (!n && w && C && !r(c, e, u, O)) {\n push(_, e);\n p = p || $;\n }\n }));\n d((t => deduplicateArray(f).reduce(((n, o) => {\n push(n, find(t, o));\n return is(o, t) ? push(n, o) : n;\n }), [])));\n if (n) {\n if (!e && g) {\n o(false);\n }\n return [ false ];\n }\n if (!isEmptyArray(_) || p) {\n const t = [ deduplicateArray(_), p ];\n if (!e) {\n o.apply(0, t);\n }\n return t;\n }\n }\n };\n const h = new f(bind(observerCallback, false));\n return [ () => {\n h.observe(t, {\n attributes: true,\n attributeOldValue: true,\n attributeFilter: g,\n subtree: n,\n childList: n,\n characterData: n\n });\n e = true;\n return () => {\n if (e) {\n _();\n h.disconnect();\n e = false;\n }\n };\n }, () => {\n if (e) {\n return observerCallback(true, h.takeRecords());\n }\n } ];\n};\n\nlet Lt = null;\n\nconst createSizeObserver = (t, n, o) => {\n const {_t: s} = o || {};\n const e = getStaticPluginModuleInstance(xt);\n const [c] = createCache({\n o: false,\n u: true\n });\n return () => {\n const o = [];\n const r = createDOM(`<div class=\"${st}\"><div class=\"${ct}\"></div></div>`);\n const i = r[0];\n const l = i.firstChild;\n const onSizeChangedCallbackProxy = t => {\n const o = isArray(t) && !isEmptyArray(t);\n let s = false;\n let e = false;\n if (o) {\n const n = t[0];\n const [o, , r] = c(n.contentRect);\n const i = domRectHasDimensions(o);\n e = domRectAppeared(o, r);\n s = !e && !i;\n } else {\n e = t === true;\n }\n if (!s) {\n n({\n dt: true,\n _t: e\n });\n }\n };\n if (d) {\n if (!isBoolean(Lt)) {\n const n = new d(noop);\n n.observe(t, {\n get box() {\n Lt = true;\n }\n });\n Lt = Lt || false;\n n.disconnect();\n }\n const n = debounce(onSizeChangedCallbackProxy, {\n p: 0,\n v: 0\n });\n const resizeObserverCallback = t => n(t);\n const s = new d(resizeObserverCallback);\n s.observe(Lt ? t : l);\n push(o, [ () => {\n s.disconnect();\n }, !Lt && appendChildren(t, i) ]);\n if (Lt) {\n const n = new d(resizeObserverCallback);\n n.observe(t, {\n box: \"border-box\"\n });\n push(o, (() => n.disconnect()));\n }\n } else if (e) {\n const [n, c] = e(l, onSizeChangedCallbackProxy, s);\n push(o, concat([ addClass(i, et), addEventListener(i, \"animationstart\", n), appendChildren(t, i) ], c));\n } else {\n return noop;\n }\n return bind(runEachAndClear, o);\n };\n};\n\nconst createTrinsicObserver = (t, n) => {\n let o;\n const isHeightIntrinsic = t => t.h === 0 || t.isIntersecting || t.intersectionRatio > 0;\n const s = createDiv(at);\n const [e] = createCache({\n o: false\n });\n const triggerOnTrinsicChangedCallback = (t, o) => {\n if (t) {\n const s = e(isHeightIntrinsic(t));\n const [, c] = s;\n return c && !o && n(s) && [ s ];\n }\n };\n const intersectionObserverCallback = (t, n) => triggerOnTrinsicChangedCallback(n.pop(), t);\n return [ () => {\n const n = [];\n if (_) {\n o = new _(bind(intersectionObserverCallback, false), {\n root: t\n });\n o.observe(s);\n push(n, (() => {\n o.disconnect();\n }));\n } else {\n const onSizeChanged = () => {\n const t = I(s);\n triggerOnTrinsicChangedCallback(t);\n };\n push(n, createSizeObserver(s, onSizeChanged)());\n onSizeChanged();\n }\n return bind(runEachAndClear, push(n, appendChildren(t, s)));\n }, () => o && intersectionObserverCallback(true, o.takeRecords()) ];\n};\n\nconst createObserversSetup = (t, n, o, s) => {\n let e;\n let c;\n let r;\n let i;\n let l;\n let a;\n let u;\n let f;\n const _ = `[${B}]`;\n const p = `[${j}]`;\n const v = [ \"id\", \"class\", \"style\", \"open\", \"wrap\", \"cols\", \"rows\" ];\n const {vt: g, gt: h, L: b, ht: y, bt: w, V: S, yt: m, wt: O, St: C, Ot: $} = t;\n const getDirectionIsRTL = t => getStyles(t, \"direction\") === \"rtl\";\n const createDebouncedObservesUpdate = () => {\n let t;\n let n;\n let o;\n const e = debounce(s, {\n p: () => t,\n v: () => n,\n S: () => o,\n m(t, n) {\n const [o] = t;\n const [s] = n;\n return [ concat(keys(o), keys(s)).reduce(((t, n) => {\n t[n] = o[n] || s[n];\n return t;\n }), {}) ];\n }\n });\n const fn = (s, c) => {\n if (isArray(c)) {\n const [s, e, r] = c;\n t = s;\n n = e;\n o = r;\n } else if (isNumber(c)) {\n t = c;\n n = false;\n o = false;\n } else {\n t = false;\n n = false;\n o = false;\n }\n e(s);\n };\n fn.O = e.O;\n return fn;\n };\n const x = {\n Ct: false,\n B: getDirectionIsRTL(g)\n };\n const H = getEnvironment();\n const E = getStaticPluginModuleInstance(Et);\n const [D] = createCache({\n i: equalWH,\n o: {\n w: 0,\n h: 0\n }\n }, (() => {\n const s = E && E.R(t, n, x, H, o).Y;\n const e = m && S;\n const c = !e && hasAttrClass(h, B, N);\n const r = !S && O(W);\n const i = r && getElementScroll(y);\n const l = i && $();\n const a = C(J, c);\n const u = r && s && s();\n const f = T(b);\n const _ = getFractionalSize(b);\n if (u) {\n u();\n }\n scrollElementTo(y, i);\n if (l) {\n l();\n }\n if (c) {\n a();\n }\n return {\n w: f.w + _.w,\n h: f.h + _.h\n };\n }));\n const z = createDebouncedObservesUpdate();\n const setDirection = t => {\n const n = getDirectionIsRTL(g);\n assignDeep(t, {\n $t: f !== n\n });\n assignDeep(x, {\n B: n\n });\n f = n;\n };\n const onTrinsicChanged = (t, n) => {\n const [o, e] = t;\n const c = {\n xt: e\n };\n assignDeep(x, {\n Ct: o\n });\n if (!n) {\n s(c);\n }\n return c;\n };\n const onSizeChanged = ({dt: t, _t: n}) => {\n const o = n ? s : z;\n const e = {\n dt: t || n,\n _t: n\n };\n setDirection(e);\n o(e, c);\n };\n const onContentMutation = (t, n) => {\n const [, o] = D();\n const s = {\n Ht: o\n };\n setDirection(s);\n if (o && !n) {\n z(s, t ? r : e);\n }\n return s;\n };\n const onHostMutation = (t, n, o) => {\n const s = {\n Et: n\n };\n setDirection(s);\n if (n && !o) {\n z(s, e);\n }\n return s;\n };\n const [I, A] = w ? createTrinsicObserver(h, onTrinsicChanged) : [];\n const k = !S && createSizeObserver(h, onSizeChanged, {\n _t: true\n });\n const [M, R] = createDOMObserver(h, false, onHostMutation, {\n rt: v,\n ct: v\n });\n const V = S && d && new d((t => {\n const n = t[t.length - 1].contentRect;\n onSizeChanged({\n dt: true,\n _t: domRectAppeared(n, u)\n });\n u = n;\n }));\n return [ () => {\n if (V) {\n V.observe(h);\n }\n const t = k && k();\n const n = I && I();\n const o = M();\n const s = H.K((t => {\n const [, n] = D();\n z({\n Dt: t,\n Ht: n,\n dt: m\n }, i);\n }));\n return () => {\n if (V) {\n V.disconnect();\n }\n if (t) {\n t();\n }\n if (n) {\n n();\n }\n if (a) {\n a();\n }\n o();\n s();\n };\n }, ({zt: t, It: n, At: o}) => {\n const s = {};\n const [u] = t(\"update.ignoreMutation\");\n const [f, d] = t(\"update.attributes\");\n const [g, h] = t(\"update.elementEvents\");\n const [y, m] = t(\"update.debounce\");\n const O = h || d;\n const C = n || o;\n const ignoreMutationFromOptions = t => isFunction(u) && !!u(t);\n if (O) {\n if (l) {\n l();\n }\n if (a) {\n a();\n }\n const [t, n] = createDOMObserver(w || b, true, onContentMutation, {\n ct: concat(v, f || []),\n it: g,\n lt: _,\n ft: (t, n) => {\n const {target: o, attributeName: s} = t;\n const e = !n && s && !S ? liesBetween(o, _, p) : false;\n return e || !!closest(o, `.${ft}`) || ignoreMutationFromOptions(t);\n }\n });\n a = t();\n l = n;\n }\n if (m) {\n z.O();\n if (isArray(y) || isNumber(y)) {\n e = y;\n c = false;\n r = Tt;\n i = kt;\n } else if (isPlainObject(y)) {\n e = y.mutation;\n c = y.resize;\n r = y.event;\n i = y.env;\n } else {\n e = false;\n c = false;\n r = false;\n i = false;\n }\n }\n if (C) {\n const t = R();\n const n = A && A();\n const o = l && l();\n if (t) {\n assignDeep(s, onHostMutation(t[0], t[1], C));\n }\n if (n) {\n assignDeep(s, onTrinsicChanged(n[0], C));\n }\n if (o) {\n assignDeep(s, onContentMutation(o[0], C));\n }\n }\n setDirection(s);\n return s;\n }, x ];\n};\n\nconst resolveInitialization = (t, n) => isFunction(n) ? n.apply(0, t) : n;\n\nconst staticInitializationElement = (t, n, o, s) => {\n const e = isUndefined(s) ? o : s;\n const c = resolveInitialization(t, e);\n return c || n.apply(0, t);\n};\n\nconst dynamicInitializationElement = (t, n, o, s) => {\n const e = isUndefined(s) ? o : s;\n const c = resolveInitialization(t, e);\n return !!c && (isHTMLElement(c) ? c : n.apply(0, t));\n};\n\nconst cancelInitialization = (t, n) => {\n const {nativeScrollbarsOverlaid: o, body: s} = n || {};\n const {M: e, P: c, Z: r} = getEnvironment();\n const {nativeScrollbarsOverlaid: i, body: l} = r().cancel;\n const a = o != null ? o : i;\n const u = isUndefined(s) ? l : s;\n const f = (e.x || e.y) && a;\n const _ = t && (isNull(u) ? !c : u);\n return !!f || !!_;\n};\n\nconst createScrollbarsSetupElements = (t, n, o, s) => {\n const e = \"--os-viewport-percent\";\n const c = \"--os-scroll-percent\";\n const r = \"--os-scroll-direction\";\n const {Z: i} = getEnvironment();\n const {scrollbars: l} = i();\n const {slot: a} = l;\n const {vt: u, gt: f, L: _, Tt: d, ht: v, yt: g, V: h} = n;\n const {scrollbars: b} = d ? {} : t;\n const {slot: y} = b || {};\n const w = [];\n const S = [];\n const m = [];\n const O = dynamicInitializationElement([ u, f, _ ], (() => h && g ? u : f), a, y);\n const initScrollTimeline = t => {\n if (p) {\n let n = null;\n let s = [];\n const e = new p({\n source: v,\n axis: t\n });\n const cancelAnimation = () => {\n if (n) {\n n.cancel();\n }\n n = null;\n };\n const _setScrollPercentAnimation = c => {\n const {kt: r} = o;\n const i = isDefaultDirectionScrollCoordinates(r)[t];\n const l = t === \"x\";\n const a = [ getTrasformTranslateValue(0, l), getTrasformTranslateValue(`calc(-100% + 100cq${l ? \"w\" : \"h\"})`, l) ];\n const u = i ? a : a.reverse();\n if (s[0] === u[0] && s[1] === u[1]) {\n return cancelAnimation;\n }\n s = u;\n cancelAnimation();\n n = c.Mt.animate({\n transform: u\n }, {\n timeline: e,\n fill: \"both\"\n });\n return cancelAnimation;\n };\n return {\n Rt: _setScrollPercentAnimation\n };\n }\n };\n const C = {\n x: initScrollTimeline(\"x\"),\n y: initScrollTimeline(\"y\")\n };\n const getViewportPercent = () => {\n const {Vt: t, Lt: n} = o;\n const getAxisValue = (t, n) => capNumber(0, 1, t / (t + n) || 0);\n return {\n x: getAxisValue(n.x, t.x),\n y: getAxisValue(n.y, t.y)\n };\n };\n const scrollbarStructureAddRemoveClass = (t, n, o) => {\n const s = o ? addClass : removeClass;\n each(t, (t => {\n s(t.Pt, n);\n }));\n };\n const scrollbarStyle = (t, n) => {\n each(t, (t => {\n const [o, s] = n(t);\n setStyles(o, s);\n }));\n };\n const scrollbarsAddRemoveClass = (t, n, o) => {\n const s = isBoolean(o);\n const e = s ? o : true;\n const c = s ? !o : true;\n if (e) {\n scrollbarStructureAddRemoveClass(S, t, n);\n }\n if (c) {\n scrollbarStructureAddRemoveClass(m, t, n);\n }\n };\n const refreshScrollbarsHandleLength = () => {\n const t = getViewportPercent();\n const createScrollbarStyleFn = t => n => [ n.Pt, {\n [e]: roundCssNumber(t) + \"\"\n } ];\n scrollbarStyle(S, createScrollbarStyleFn(t.x));\n scrollbarStyle(m, createScrollbarStyleFn(t.y));\n };\n const refreshScrollbarsHandleOffset = () => {\n if (!p) {\n const {kt: t} = o;\n const n = getScrollCoordinatesPercent(t, getElementScroll(v));\n const createScrollbarStyleFn = t => n => [ n.Pt, {\n [c]: roundCssNumber(t) + \"\"\n } ];\n scrollbarStyle(S, createScrollbarStyleFn(n.x));\n scrollbarStyle(m, createScrollbarStyleFn(n.y));\n }\n };\n const refreshScrollbarsScrollCoordinates = () => {\n const {kt: t} = o;\n const n = isDefaultDirectionScrollCoordinates(t);\n const createScrollbarStyleFn = t => n => [ n.Pt, {\n [r]: t ? \"0\" : \"1\"\n } ];\n scrollbarStyle(S, createScrollbarStyleFn(n.x));\n scrollbarStyle(m, createScrollbarStyleFn(n.y));\n if (p) {\n S.forEach(C.x.Rt);\n m.forEach(C.y.Rt);\n }\n };\n const refreshScrollbarsScrollbarOffset = () => {\n if (h && !g) {\n const {Vt: t, kt: n} = o;\n const s = isDefaultDirectionScrollCoordinates(n);\n const e = getScrollCoordinatesPercent(n, getElementScroll(v));\n const styleScrollbarPosition = n => {\n const {Pt: o} = n;\n const c = parent(o) === _ && o;\n const getTranslateValue = (t, n, o) => {\n const s = n * t;\n return numberToCssPx(o ? s : -s);\n };\n return [ c, c && {\n transform: getTrasformTranslateValue({\n x: getTranslateValue(e.x, t.x, s.x),\n y: getTranslateValue(e.y, t.y, s.y)\n })\n } ];\n };\n scrollbarStyle(S, styleScrollbarPosition);\n scrollbarStyle(m, styleScrollbarPosition);\n }\n };\n const generateScrollbarDOM = t => {\n const n = t ? \"x\" : \"y\";\n const o = t ? dt : pt;\n const e = createDiv(`${ft} ${o}`);\n const c = createDiv(vt);\n const r = createDiv(gt);\n const i = {\n Pt: e,\n Ut: c,\n Mt: r\n };\n const l = C[n];\n push(t ? S : m, i);\n push(w, [ appendChildren(e, c), appendChildren(c, r), bind(removeElements, e), l && l.Rt(i), s(i, scrollbarsAddRemoveClass, t) ]);\n return i;\n };\n const $ = bind(generateScrollbarDOM, true);\n const x = bind(generateScrollbarDOM, false);\n const appendElements = () => {\n appendChildren(O, S[0].Pt);\n appendChildren(O, m[0].Pt);\n return bind(runEachAndClear, w);\n };\n $();\n x();\n return [ {\n Nt: refreshScrollbarsHandleLength,\n qt: refreshScrollbarsHandleOffset,\n Bt: refreshScrollbarsScrollCoordinates,\n Ft: refreshScrollbarsScrollbarOffset,\n jt: scrollbarsAddRemoveClass,\n Xt: {\n Yt: S,\n Wt: $,\n Jt: bind(scrollbarStyle, S)\n },\n Gt: {\n Yt: m,\n Wt: x,\n Jt: bind(scrollbarStyle, m)\n }\n }, appendElements ];\n};\n\nconst createScrollbarsSetupEvents = (t, n, o, s, r) => (i, l, u) => {\n const {gt: f, L: _, V: d, ht: p, Kt: v, Ot: g} = n;\n const {Pt: h, Ut: b, Mt: y} = i;\n const [w, S] = selfClearTimeout(333);\n const [m, O] = selfClearTimeout(444);\n const scrollOffsetElementScrollBy = t => {\n if (isFunction(p.scrollBy)) {\n p.scrollBy({\n behavior: \"smooth\",\n left: t.x,\n top: t.y\n });\n }\n };\n const createInteractiveScrollEvents = () => {\n const n = \"pointerup pointercancel lostpointercapture\";\n const r = `client${u ? \"X\" : \"Y\"}`;\n const i = u ? C : $;\n const l = u ? \"left\" : \"top\";\n const a = u ? \"w\" : \"h\";\n const f = u ? \"x\" : \"y\";\n const _ = [];\n return addEventListener(b, \"pointerdown\", s((s => {\n const d = closest(s.target, `.${gt}`) === y;\n const h = d ? y : b;\n const w = t.scrollbars;\n const S = w[d ? \"dragScroll\" : \"clickScroll\"];\n const {button: C, isPrimary: $, pointerType: x} = s;\n const {pointers: H} = w;\n const E = C === 0 && $ && S && (H || []).includes(x);\n if (E) {\n runEachAndClear(_);\n O();\n const t = !d && (s.shiftKey || S === \"instant\");\n const w = bind(getBoundingClientRect, y);\n const C = bind(getBoundingClientRect, b);\n const getHandleOffset = (t, n) => (t || w())[l] - (n || C())[l];\n const $ = e(getBoundingClientRect(p)[i]) / I(p)[a] || 1;\n const x = getElementScroll(p)[f];\n const scrollRelative = t => {\n scrollElementTo(p, {\n [f]: x + t\n });\n };\n const moveHandleRelative = t => {\n const {Vt: n} = o;\n const s = I(b)[a] - I(y)[a];\n const e = 1 / $ * t / s;\n scrollRelative(e * n[f]);\n };\n const H = s[r];\n const E = w();\n const D = C();\n const z = E[i];\n const A = getHandleOffset(E, D) + z / 2;\n const T = H - D[l];\n const k = T - A;\n const M = d ? 0 : k;\n const releasePointerCapture = t => {\n runEachAndClear(L);\n h.releasePointerCapture(t.pointerId);\n };\n const R = d || t;\n const V = g();\n const L = [ addEventListener(v, n, releasePointerCapture), addEventListener(v, \"selectstart\", (t => preventDefault(t)), {\n D: false\n }), addEventListener(b, n, releasePointerCapture), R && addEventListener(b, \"pointermove\", (t => moveHandleRelative(M + t[r] - H))), R && (() => {\n const t = getElementScroll(p);\n V();\n const n = getElementScroll(p);\n const o = {\n x: n.x - t.x,\n y: n.y - t.y\n };\n if (c(o.x) > 3 || c(o.y) > 3) {\n g();\n scrollElementTo(p, t);\n scrollOffsetElementScrollBy(o);\n m(V);\n }\n }) ];\n h.setPointerCapture(s.pointerId);\n if (t) {\n moveHandleRelative(k);\n } else if (!d) {\n const t = getStaticPluginModuleInstance(zt);\n if (t) {\n const {Lt: n} = o;\n const s = t(scrollRelative, moveHandleRelative, bind(getHandleOffset), k, n[f], S, !!u, (t => {\n if (t) {\n V();\n } else {\n push(L, V);\n }\n }));\n push(L, s);\n push(_, bind(s, true));\n }\n }\n }\n })));\n };\n let x = true;\n return bind(runEachAndClear, [ addEventListener(y, \"pointermove pointerleave\", s(r)), addEventListener(h, \"pointerenter\", s((() => {\n l(yt, true);\n }))), addEventListener(h, \"pointerleave pointercancel\", s((() => {\n l(yt, false);\n }))), addEventListener(h, \"wheel\", s((t => {\n const {deltaX: n, deltaY: o, deltaMode: s} = t;\n if (x && s === 0 && parent(h) === f) {\n scrollOffsetElementScrollBy({\n x: n,\n y: o\n });\n }\n x = false;\n l(Ot, true);\n w((() => {\n x = true;\n l(Ot);\n }));\n preventDefault(t);\n })), {\n D: false,\n I: true\n }), !d && addEventListener(h, \"mousedown\", s((() => {\n const t = getFocusedElement();\n if (hasAttr(t, j) || hasAttr(t, B) || t === document.body) {\n a(bind(focusElement, _), 25);\n }\n }))), addEventListener(h, \"pointerdown\", (() => {\n const t = addEventListener(v, \"click\", (t => {\n n();\n stopAndPrevent(t);\n }), {\n A: true,\n I: true,\n D: false\n });\n const n = addEventListener(v, \"pointerup pointercancel\", (() => {\n n();\n setTimeout(t, 150);\n }), {\n I: true,\n D: true\n });\n }), {\n I: true,\n D: true\n }), createInteractiveScrollEvents(), S, O ]);\n};\n\nconst createScrollbarsSetup = (t, n, o, s, e, c, r) => {\n let i;\n let l;\n let a;\n let u;\n let f;\n let _ = noop;\n let d = 0;\n const p = [ \"mouse\", \"pen\" ];\n const skipEventIfSleeping = t => n => {\n if (!o.Qt) {\n t(n);\n }\n };\n const isHoverablePointerType = t => p.includes(t.pointerType);\n const [v, g] = selfClearTimeout();\n const [h, b] = selfClearTimeout(100);\n const [y, w] = selfClearTimeout(50);\n const [S, m] = selfClearTimeout((() => d));\n const [O, C] = createScrollbarsSetupElements(t, c, e, createScrollbarsSetupEvents(n, c, e, skipEventIfSleeping, (t => isHoverablePointerType(t) && manageScrollbarsAutoHideInstantInteraction())));\n const {gt: $, Zt: H, yt: D} = c;\n const {jt: z, Nt: I, qt: A, Bt: T, Ft: k} = O;\n const manageScrollbarsAutoHide = (t, n) => {\n m();\n const hide = t => {\n if (o.Qt) {\n return;\n }\n z(mt, t);\n };\n if (t) {\n hide();\n } else {\n const t = a ? !i : true;\n if (d > 0 && !n) {\n S(bind(hide, t));\n } else {\n hide(t);\n }\n }\n };\n const manageScrollbarsAutoHideInstantInteraction = () => {\n if (a ? !i : !u) {\n manageScrollbarsAutoHide(true);\n h((() => {\n manageScrollbarsAutoHide(false);\n }));\n }\n };\n const onHostMouseEnter = t => {\n if (isHoverablePointerType(t)) {\n i = true;\n if (!o.Qt && a) {\n manageScrollbarsAutoHide(true);\n }\n }\n };\n const onHostMouseLeave = t => {\n if (isHoverablePointerType(t)) {\n i = false;\n if (!o.Qt && a) {\n manageScrollbarsAutoHide(false);\n }\n }\n };\n const manageAutoHideSuspension = t => {\n z(St, t, true);\n z(St, t, false);\n };\n const M = [ m, b, w, g, () => _(), addEventListener($, \"pointerover\", onHostMouseEnter, {\n A: true\n }), addEventListener($, \"pointerenter\", onHostMouseEnter), addEventListener($, \"pointerleave\", onHostMouseLeave), addEventListener($, \"pointermove\", skipEventIfSleeping((t => {\n if (isHoverablePointerType(t) && l) {\n manageScrollbarsAutoHideInstantInteraction();\n }\n }))), addEventListener(H, \"scroll\", skipEventIfSleeping((t => {\n v((() => {\n A();\n manageScrollbarsAutoHideInstantInteraction();\n }));\n r(t);\n k();\n }))) ];\n const R = getStaticPluginModuleInstance(Et);\n return [ () => bind(runEachAndClear, push(M, C())), ({zt: t, At: n, tn: o, nn: c}) => {\n const {sn: r, en: i, cn: p, rn: v} = c || {};\n const {$t: g, _t: h} = o || {};\n const {B: b} = s;\n const {M: w, P: S} = getEnvironment();\n const {ln: m, j: O} = e;\n const [C, $] = t(\"showNativeOverlaidScrollbars\");\n const [M, V] = t(\"scrollbars.theme\");\n const [L, P] = t(\"scrollbars.visibility\");\n const [U, N] = t(\"scrollbars.autoHide\");\n const [q, B] = t(\"scrollbars.autoHideSuspend\");\n const [F] = t(\"scrollbars.autoHideDelay\");\n const [j, X] = t(\"scrollbars.dragScroll\");\n const [Y, W] = t(\"scrollbars.clickScroll\");\n const [J, G] = t(\"overflow\");\n const K = h && !n;\n const Q = r || i || v || g || n;\n const Z = p || P || G;\n const tt = C && w.x && w.y;\n const nt = !S && !R;\n const ot = tt || nt;\n const setScrollbarVisibility = (t, n, o) => {\n const s = t.includes(E) && (L === x || L === \"auto\" && n === E);\n z(ht, s, o);\n return s;\n };\n d = F;\n if ($ || nt) {\n z(ut, ot);\n }\n if (V) {\n z(f);\n z(M, true);\n f = M;\n }\n if (B || K) {\n manageAutoHideSuspension(!q);\n if (K && q) {\n if (O.x || O.y) {\n _();\n y((() => {\n _ = addEventListener(H, E, skipEventIfSleeping(bind(manageAutoHideSuspension, true)), {\n A: true\n });\n }));\n } else {\n manageAutoHideSuspension(true);\n }\n }\n }\n if (N) {\n l = U === \"move\";\n a = U === \"leave\";\n u = U === \"never\";\n manageScrollbarsAutoHide(u, true);\n }\n if (X) {\n z($t, j);\n }\n if (W) {\n z(Ct, !!Y);\n }\n if (Z) {\n const t = setScrollbarVisibility(J.x, m.x, true);\n const n = setScrollbarVisibility(J.y, m.y, false);\n const o = t && n;\n z(bt, !o);\n }\n if (Q) {\n A();\n I();\n k();\n if (v) {\n T();\n }\n z(wt, !O.x, true);\n z(wt, !O.y, false);\n z(_t, b && !D);\n }\n }, {}, O ];\n};\n\nconst createStructureSetupElements = t => {\n const o = getEnvironment();\n const {Z: s, J: e, P: c} = o;\n const {elements: r} = s();\n const {padding: i, viewport: l, content: a} = r;\n const u = isHTMLElement(t);\n const f = u ? {} : t;\n const {elements: _} = f;\n const {padding: d, viewport: p, content: v} = _ || {};\n const g = u ? t : f.target;\n const h = isBodyElement(g);\n const b = g.ownerDocument;\n const y = b.documentElement;\n const getDocumentWindow = () => b.defaultView || n;\n const w = bind(staticInitializationElement, [ g ]);\n const S = bind(dynamicInitializationElement, [ g ]);\n const C = bind(createDiv, \"\");\n const $ = bind(w, C, l);\n const x = bind(S, C, a);\n const elementHasOverflow = t => {\n const n = I(t);\n const o = T(t);\n const s = getStyles(t, m);\n const e = getStyles(t, O);\n return o.w - n.w > 0 && !overflowIsVisible(s) || o.h - n.h > 0 && !overflowIsVisible(e);\n };\n const H = $(p);\n const E = H === g;\n const D = E && h;\n const z = !E && x(v);\n const A = !E && H === z;\n const k = D ? y : H;\n const M = D ? k : g;\n const R = !E && S(C, i, d);\n const V = !A && z;\n const L = [ V, k, R, M ].map((t => isHTMLElement(t) && !parent(t) && t));\n const elementIsGenerated = t => t && inArray(L, t);\n const P = !elementIsGenerated(k) && elementHasOverflow(k) ? k : g;\n const N = D ? y : k;\n const X = D ? b : k;\n const Y = {\n vt: g,\n gt: M,\n L: k,\n an: R,\n bt: V,\n ht: N,\n Zt: X,\n un: h ? y : P,\n Kt: b,\n yt: h,\n Tt: u,\n V: E,\n fn: getDocumentWindow,\n wt: t => hasAttrClass(k, j, t),\n St: (t, n) => addRemoveAttrClass(k, j, t, n),\n Ot: () => addRemoveAttrClass(N, j, G, true)\n };\n const {vt: W, gt: J, an: Q, L: Z, bt: tt} = Y;\n const st = [ tt, Z, Q, J, W ];\n const et = [ () => {\n removeAttrs(J, [ B, U ]);\n removeAttrs(W, U);\n if (h) {\n removeAttrs(y, [ U, B ]);\n }\n } ];\n let ct = contents(st.find((t => t && !elementIsGenerated(t))));\n const rt = D ? W : tt || Z;\n const it = bind(runEachAndClear, et);\n const appendElements = () => {\n const t = getDocumentWindow();\n const n = getFocusedElement();\n const unwrap = t => {\n appendChildren(parent(t), contents(t));\n removeElements(t);\n };\n const o = \"tabindex\";\n const s = getAttr(Z, o);\n const r = swallowFocusEvents(concat(st, [ n ]));\n setAttrs(J, B, E ? \"\" : F);\n setAttrs(Q, nt, \"\");\n setAttrs(Z, j, \"\");\n setAttrs(tt, ot, \"\");\n if (!E) {\n if (s || !e) {\n setAttrs(Z, o, s || \"-1\");\n }\n if (h) {\n setAttrs(y, q, \"\");\n }\n }\n appendChildren(rt, ct);\n appendChildren(J, Q);\n appendChildren(Q || J, !E && Z);\n appendChildren(Z, tt);\n push(et, [ r, () => {\n const t = getFocusedElement();\n const n = elementIsGenerated(Z);\n const e = n && t === Z ? W : t;\n const c = swallowFocusEvents(concat(st, [ e ]));\n removeAttrs(Q, nt);\n removeAttrs(tt, ot);\n removeAttrs(Z, j);\n if (h) {\n removeAttrs(y, q);\n }\n if (s) {\n setAttrs(Z, o, s);\n } else {\n removeAttrs(Z, o);\n }\n if (elementIsGenerated(tt)) {\n unwrap(tt);\n }\n if (n) {\n unwrap(Z);\n }\n if (elementIsGenerated(Q)) {\n unwrap(Q);\n }\n focusElement(e);\n c();\n } ]);\n if (c && !E) {\n addAttrClass(Z, j, K);\n push(et, bind(removeAttrs, Z, j));\n }\n focusElement(!E && h && n === W && t.top === t ? Z : n);\n r();\n ct = 0;\n return it;\n };\n return [ Y, appendElements, it ];\n};\n\nconst createTrinsicUpdateSegment = ({bt: t}) => ({tn: n, _n: o, At: s}) => {\n const {xt: e} = n || {};\n const {Ct: c} = o;\n const r = t && (e || s);\n if (r) {\n setStyles(t, {\n [$]: c && \"100%\"\n });\n }\n};\n\nconst createPaddingUpdateSegment = ({gt: t, an: n, L: o, V: s}, e) => {\n const [c, r] = createCache({\n i: equalTRBL,\n o: topRightBottomLeft()\n }, bind(topRightBottomLeft, t, \"padding\", \"\"));\n return ({zt: t, tn: i, _n: l, At: a}) => {\n let [u, f] = r(a);\n const {P: _} = getEnvironment();\n const {dt: d, Ht: p, $t: m} = i || {};\n const {B: O} = l;\n const [$, x] = t(\"paddingAbsolute\");\n const H = a || p;\n if (d || f || H) {\n [u, f] = c(a);\n }\n const E = !s && (x || m || f);\n if (E) {\n const t = !$ || !n && !_;\n const s = u.r + u.l;\n const c = u.t + u.b;\n const r = {\n [w]: t && !O ? -s : 0,\n [S]: t ? -c : 0,\n [y]: t && O ? -s : 0,\n top: t ? -u.t : 0,\n right: t ? O ? -u.r : \"auto\" : 0,\n left: t ? O ? \"auto\" : -u.l : 0,\n [C]: t && `calc(100% + ${s}px)`\n };\n const i = {\n [v]: t ? u.t : 0,\n [g]: t ? u.r : 0,\n [b]: t ? u.b : 0,\n [h]: t ? u.l : 0\n };\n setStyles(n || o, r);\n setStyles(o, i);\n assignDeep(e, {\n an: u,\n dn: !t,\n F: n ? i : assignDeep({}, r, i)\n });\n }\n return {\n pn: E\n };\n };\n};\n\nconst createOverflowUpdateSegment = (t, s) => {\n const e = getEnvironment();\n const {gt: r, an: i, L: a, V: u, Zt: f, ht: _, yt: d, St: p, fn: v} = t;\n const {P: g} = e;\n const h = d && u;\n const b = bind(o, 0);\n const y = {\n display: () => false,\n direction: t => t !== \"ltr\",\n flexDirection: t => t.endsWith(\"-reverse\"),\n writingMode: t => t !== \"horizontal-tb\"\n };\n const w = keys(y);\n const S = {\n i: equalWH,\n o: {\n w: 0,\n h: 0\n }\n };\n const m = {\n i: equalXY,\n o: {}\n };\n const setMeasuringMode = t => {\n p(J, !h && t);\n };\n const getFlowDirectionStyles = () => getStyles(a, w);\n const getMeasuredScrollCoordinates = (t, n) => {\n const o = !keys(t).length;\n const s = n ? true : w.some((n => {\n const o = t[n];\n return isString(o) && y[n](o);\n }));\n if (o || !s || !hasDimensions(a)) {\n return {\n T: {\n x: 0,\n y: 0\n },\n k: {\n x: 1,\n y: 1\n }\n };\n }\n setMeasuringMode(true);\n const e = getElementScroll(_);\n const r = addEventListener(f, E, (t => {\n const n = getElementScroll(_);\n if (t.isTrusted && n.x === e.x && n.y === e.y) {\n stopPropagation(t);\n }\n }), {\n I: true,\n A: true\n });\n const i = p(Q, true);\n scrollElementTo(_, {\n x: 0,\n y: 0\n });\n const u = p(tt, true);\n const d = getElementScroll(_);\n const v = T(_);\n scrollElementTo(_, {\n x: v.w,\n y: v.h\n });\n const g = getElementScroll(_);\n const h = {\n x: g.x - d.x,\n y: g.y - d.y\n };\n scrollElementTo(_, {\n x: -v.w,\n y: -v.h\n });\n const b = getElementScroll(_);\n const S = {\n x: b.x - d.x,\n y: b.y - d.y\n };\n const m = {\n x: c(h.x) >= c(S.x) ? g.x : b.x,\n y: c(h.y) >= c(S.y) ? g.y : b.y\n };\n i();\n u();\n scrollElementTo(_, e);\n l((() => r()));\n return {\n T: d,\n k: m\n };\n };\n const getOverflowAmount = (t, o) => {\n const s = n.devicePixelRatio % 1 !== 0 ? 1 : 0;\n const e = {\n w: b(t.w - o.w),\n h: b(t.h - o.h)\n };\n return {\n w: e.w > s ? e.w : 0,\n h: e.h > s ? e.h : 0\n };\n };\n const getViewportOverflowStyle = (t, n) => {\n const getAxisOverflowStyle = (t, n, o, s) => {\n const e = t === x ? H : overflowBehaviorToOverflowStyle(t);\n const c = overflowIsVisible(t);\n const r = overflowIsVisible(o);\n if (!n && !s) {\n return H;\n }\n if (c && r) {\n return x;\n }\n if (c) {\n const t = n ? x : H;\n return n && s ? e : t;\n }\n const i = r && s ? x : H;\n return n ? e : i;\n };\n return {\n x: getAxisOverflowStyle(n.x, t.x, n.y, t.y),\n y: getAxisOverflowStyle(n.y, t.y, n.x, t.x)\n };\n };\n const setViewportOverflowStyle = t => {\n const createAllOverflowStyleClassNames = t => [ x, H, E ].map((n => createViewportOverflowStyleClassName(overflowCssValueToOverflowStyle(n), t)));\n const n = createAllOverflowStyleClassNames(true).concat(createAllOverflowStyleClassNames()).join(\" \");\n p(n);\n p(keys(t).map((n => createViewportOverflowStyleClassName(t[n], n === \"x\"))).join(\" \"), true);\n };\n const [O, C] = createCache(S, bind(getFractionalSize, a));\n const [$, D] = createCache(S, bind(T, a));\n const [z, I] = createCache(S);\n const [k] = createCache(m);\n const [M, R] = createCache(S);\n const [V] = createCache(m);\n const [L] = createCache({\n i: (t, n) => equal(t, n, deduplicateArray(concat(keys(t), keys(n)))),\n o: {}\n });\n const [P, U] = createCache({\n i: (t, n) => equalXY(t.T, n.T) && equalXY(t.k, n.k),\n o: getZeroScrollCoordinates()\n });\n const q = getStaticPluginModuleInstance(Et);\n return ({zt: n, tn: o, _n: c, At: l}, {pn: f}) => {\n const {dt: _, Et: d, Ht: y, $t: w, _t: S, Dt: m} = o || {};\n const x = q && q.R(t, s, c, e, n);\n const {X: H, Y: E, W: T} = x || {};\n const [F, j] = getShowNativeOverlaidScrollbars(n, e);\n const [X, Y] = n(\"overflow\");\n const W = overflowIsVisible(X.x);\n const J = overflowIsVisible(X.y);\n const G = _ || f || y || w || m || j;\n let Q = C(l);\n let tt = D(l);\n let ot = I(l);\n let st = R(l);\n if (j && g) {\n p(K, !F);\n }\n if (G) {\n if (hasAttrClass(r, B, N)) {\n setMeasuringMode(true);\n }\n const t = u ? p(Z, true) : noop;\n const n = E && E();\n const [o] = Q = O(l);\n const [s] = tt = $(l);\n const e = A(a);\n const c = h && getWindowSize(v());\n const i = {\n w: b(s.w + o.w),\n h: b(s.h + o.h)\n };\n const f = {\n w: b((c ? c.w : e.w + b(e.w - s.w)) + o.w),\n h: b((c ? c.h : e.h + b(e.h - s.h)) + o.h)\n };\n t();\n if (n) {\n n();\n }\n st = M(f);\n ot = z(getOverflowAmount(i, f), l);\n }\n const [et, ct] = st;\n const [rt, it] = ot;\n const [lt, at] = tt;\n const [ut, ft] = Q;\n const [_t] = k({\n x: rt.w > 0,\n y: rt.h > 0\n });\n const dt = W && J && (_t.x || _t.y) || W && _t.x && !_t.y || J && _t.y && !_t.x;\n const pt = f || w || m || ft || at || ct || it || Y || j || G || d && h;\n const [vt] = n(\"update.flowDirectionStyles\");\n const [gt, ht] = L(vt ? vt(a) || {} : getFlowDirectionStyles(), l);\n const bt = w || S || ht || l;\n const [yt, wt] = bt ? P(getMeasuredScrollCoordinates(gt, !!vt), l) : U();\n let St = getViewportOverflowStyle(_t, X);\n setMeasuringMode(false);\n if (pt) {\n setViewportOverflowStyle(St);\n St = getElementOverflowStyle(a, _t);\n if (T && H) {\n H(St, lt, ut);\n setStyles(a, T(St));\n }\n }\n const [mt, Ot] = V(St);\n addRemoveAttrClass(r, B, N, dt);\n addRemoveAttrClass(i, nt, N, dt);\n assignDeep(s, {\n ln: mt,\n Lt: {\n x: et.w,\n y: et.h\n },\n Vt: {\n x: rt.w,\n y: rt.h\n },\n j: _t,\n kt: sanitizeScrollCoordinates(yt, rt)\n });\n return {\n cn: Ot,\n sn: ct,\n en: it,\n rn: wt || it\n };\n };\n};\n\nconst createStructureSetup = t => {\n const [n, o, s] = createStructureSetupElements(t);\n const e = {\n an: {\n t: 0,\n r: 0,\n b: 0,\n l: 0\n },\n dn: false,\n F: {\n [w]: 0,\n [S]: 0,\n [y]: 0,\n [v]: 0,\n [g]: 0,\n [b]: 0,\n [h]: 0\n },\n Lt: {\n x: 0,\n y: 0\n },\n Vt: {\n x: 0,\n y: 0\n },\n ln: {\n x: H,\n y: H\n },\n j: {\n x: false,\n y: false\n },\n kt: getZeroScrollCoordinates()\n };\n const {vt: c, ht: r, V: i, Ot: l} = n;\n const {P: a, M: u} = getEnvironment();\n const f = !a && (u.x || u.y);\n const _ = [ createTrinsicUpdateSegment(n), createPaddingUpdateSegment(n, e), createOverflowUpdateSegment(n, e) ];\n return [ o, t => {\n const n = {};\n const o = f;\n const s = o && getElementScroll(r);\n const e = s && l();\n each(_, (o => {\n assignDeep(n, o(t, n) || {});\n }));\n scrollElementTo(r, s);\n if (e) {\n e();\n }\n if (!i) {\n scrollElementTo(c, 0);\n }\n return n;\n }, e, n, s ];\n};\n\nconst createSetups = (t, n, o, s) => {\n let e = false;\n const c = {\n Qt: false,\n vn: false\n };\n const r = createOptionCheck(n, {});\n const [i, l, a, u, f] = createStructureSetup(t);\n const [_, d, p] = createObserversSetup(u, a, r, (t => {\n update({}, t);\n }));\n const [v, g, , h] = createScrollbarsSetup(t, n, c, p, a, u, s);\n const updateHintsAreTruthy = t => keys(t).some((n => !!t[n]));\n const update = (t, s) => {\n const {Qt: r, vn: i} = c;\n if (i || r && e) {\n return false;\n }\n const {gn: a, At: u, It: f} = t;\n const _ = a || {};\n const v = !!u || !e;\n const h = {\n zt: createOptionCheck(n, _, v),\n gn: _,\n At: v\n };\n const b = s || d(assignDeep({}, h, {\n It: f\n }));\n const y = l(assignDeep({}, h, {\n _n: p,\n tn: b\n }));\n g(assignDeep({}, h, {\n tn: b,\n nn: y\n }));\n const w = updateHintsAreTruthy(b);\n const S = updateHintsAreTruthy(y);\n const m = w || S || !isEmptyObject(_) || v;\n e = true;\n if (m) {\n o(t, {\n tn: b,\n nn: y\n });\n }\n return m;\n };\n return [ () => {\n const {un: t, ht: n, Ot: o} = u;\n const s = getElementScroll(t);\n const e = [ _(), i(), v(), () => {\n c.vn = true;\n } ];\n const r = o();\n scrollElementTo(n, s);\n r();\n return bind(runEachAndClear, e);\n }, update, t => {\n const n = c.Qt;\n c.Qt = t;\n if (!t && n !== t) {\n update({\n At: true,\n It: true\n });\n }\n }, () => {\n g({\n zt: createOptionCheck(n, {}, false),\n gn: {},\n At: false\n });\n }, () => ({\n hn: c,\n bn: p,\n yn: a\n }), {\n wn: u,\n Sn: h\n }, f ];\n};\n\nconst Pt = new WeakMap;\n\nconst addInstance = (t, n) => {\n Pt.set(t, n);\n};\n\nconst removeInstance = t => {\n Pt.delete(t);\n};\n\nconst getInstance = t => Pt.get(t);\n\nconst OverlayScrollbars = (t, n, o) => {\n const {nt: s} = getEnvironment();\n const e = isHTMLElement(t);\n const c = e ? t : t.target;\n const r = getInstance(c);\n if (n && !r) {\n const r = [];\n const i = {};\n const validateOptions = t => {\n const n = removeUndefinedProperties(t);\n const o = getStaticPluginModuleInstance(R);\n return o ? o(n, true) : n;\n };\n const l = assignDeep({}, s(), validateOptions(n));\n const [a, u, f] = createEventListenerHub();\n const [_, d, p] = createEventListenerHub(o);\n const triggerEvent = (t, n) => {\n p(t, n);\n f(t, n);\n };\n const [v, g, h, b, y, w, S] = createSetups(t, l, (({gn: t, At: n}, {tn: o, nn: s}) => {\n const {dt: e, $t: c, xt: r, Ht: i, Et: l, _t: a} = o;\n const {sn: u, en: f, cn: _, rn: d} = s;\n triggerEvent(\"updated\", [ m, {\n updateHints: {\n sizeChanged: !!e,\n directionChanged: !!c,\n heightIntrinsicChanged: !!r,\n overflowEdgeChanged: !!u,\n overflowAmountChanged: !!f,\n overflowStyleChanged: !!_,\n scrollCoordinatesChanged: !!d,\n contentMutation: !!i,\n hostMutation: !!l,\n appear: !!a\n },\n changedOptions: t || {},\n force: !!n\n } ]);\n }), (t => triggerEvent(\"scroll\", [ m, t ])));\n const destroy = t => {\n const {hn: n} = y();\n const {vn: o} = n;\n if (o) {\n return;\n }\n removeInstance(c);\n runEachAndClear(r);\n triggerEvent(\"destroyed\", [ m, t ]);\n u();\n d();\n };\n const update = t => g({\n At: t,\n It: true\n });\n const m = {\n options(t, n) {\n if (t) {\n const o = n ? s() : {};\n const e = getOptionsDiff(l, assignDeep(o, validateOptions(t)));\n if (!isEmptyObject(e)) {\n assignDeep(l, e);\n g({\n gn: e\n });\n }\n }\n return assignDeep({}, l);\n },\n on: _,\n off: (t, n) => {\n if (t && n) {\n d(t, n);\n }\n },\n state() {\n const {hn: t, bn: n, yn: o} = y();\n const {vn: s, Qt: e} = t;\n const {B: c} = n;\n const {Lt: r, Vt: i, ln: l, j: a, an: u, dn: f, kt: _} = o;\n return assignDeep({}, {\n overflowEdge: r,\n overflowAmount: i,\n overflowStyle: l,\n hasOverflow: a,\n scrollCoordinates: {\n start: _.T,\n end: _.k\n },\n padding: u,\n paddingAbsolute: f,\n directionRTL: c,\n sleeping: e,\n destroyed: s\n });\n },\n elements() {\n const {vt: t, gt: n, an: o, L: s, bt: e, ht: c, Zt: r} = w.wn;\n const {Xt: i, Gt: l} = w.Sn;\n const translateScrollbarStructure = t => {\n const {Mt: n, Ut: o, Pt: s} = t;\n return {\n scrollbar: s,\n track: o,\n handle: n\n };\n };\n const translateScrollbarsSetupElement = t => {\n const {Yt: n, Wt: o} = t;\n const s = translateScrollbarStructure(n[0]);\n return assignDeep({}, s, {\n clone: () => {\n const t = translateScrollbarStructure(o());\n b();\n return t;\n }\n });\n };\n return assignDeep({}, {\n target: t,\n host: n,\n padding: o || s,\n viewport: s,\n content: e || s,\n scrollOffsetElement: c,\n scrollEventElement: r,\n scrollbarHorizontal: translateScrollbarsSetupElement(i),\n scrollbarVertical: translateScrollbarsSetupElement(l)\n });\n },\n update: update,\n destroy: bind(destroy, false),\n sleep: h,\n plugin: t => i[keys(t)[0]]\n };\n push(r, [ S ]);\n addInstance(c, m);\n registerPluginModuleInstances(k, OverlayScrollbars, [ m, a, i ]);\n if (cancelInitialization(w.wn.yt, !e && t.cancel)) {\n destroy(true);\n return m;\n }\n push(r, v());\n triggerEvent(\"initialized\", [ m ]);\n m.update();\n return m;\n }\n return r;\n};\n\nOverlayScrollbars.plugin = t => {\n const n = isArray(t);\n const o = n ? t : [ t ];\n const s = o.map((t => registerPluginModuleInstances(t, OverlayScrollbars)[0]));\n addPlugins(o);\n return n ? s : s[0];\n};\n\nOverlayScrollbars.valid = t => {\n const n = t && t.elements;\n const o = isFunction(n) && n();\n return isPlainObject(o) && !!getInstance(o.target);\n};\n\nOverlayScrollbars.env = () => {\n const {U: t, M: n, P: o, G: s, J: e, st: c, et: r, Z: i, tt: l, nt: a, ot: u} = getEnvironment();\n return assignDeep({}, {\n scrollbarsSize: t,\n scrollbarsOverlaid: n,\n scrollbarsHiding: o,\n scrollTimeline: s,\n focusableScrollers: e,\n staticDefaultInitialization: c,\n staticDefaultOptions: r,\n getDefaultInitialization: i,\n setDefaultInitialization: l,\n getDefaultOptions: a,\n setDefaultOptions: u\n });\n};\n\nOverlayScrollbars.nonce = setNonce;\n\nOverlayScrollbars.trustedTypePolicy = setTrustedTypePolicy;\n\nexport { It as ClickScrollPlugin, OverlayScrollbars, Dt as ScrollbarsHidingPlugin, Ht as SizeObserverPlugin };\n//# sourceMappingURL=overlayscrollbars.mjs.map\n","import w, { useMemo as C, useRef as f, useEffect as v, forwardRef as E, useImperativeHandle as O } from \"react\";\nimport { OverlayScrollbars as I } from \"overlayscrollbars\";\nconst S = () => {\n if (typeof window > \"u\") {\n const n = () => {\n };\n return [n, n];\n }\n let l, o;\n const t = window, c = typeof t.requestIdleCallback == \"function\", a = t.requestAnimationFrame, i = t.cancelAnimationFrame, r = c ? t.requestIdleCallback : a, u = c ? t.cancelIdleCallback : i, s = () => {\n u(l), i(o);\n };\n return [\n (n, e) => {\n s(), l = r(\n c ? () => {\n s(), o = a(n);\n } : n,\n typeof e == \"object\" ? e : { timeout: 2233 }\n );\n },\n s\n ];\n}, F = (l) => {\n const { options: o, events: t, defer: c } = l || {}, [a, i] = C(S, []), r = f(null), u = f(c), s = f(o), n = f(t);\n return v(() => {\n u.current = c;\n }, [c]), v(() => {\n const { current: e } = r;\n s.current = o, I.valid(e) && e.options(o || {}, !0);\n }, [o]), v(() => {\n const { current: e } = r;\n n.current = t, I.valid(e) && e.on(t || {}, !0);\n }, [t]), v(\n () => () => {\n var e;\n i(), (e = r.current) == null || e.destroy();\n },\n []\n ), C(\n () => [\n (e) => {\n const y = r.current;\n if (I.valid(y))\n return;\n const d = s.current, b = n.current, m = u.current, p = () => r.current = I(e, d || {}, b || {});\n m ? a(p, m) : p();\n },\n () => r.current\n ],\n []\n );\n}, q = (l, o) => {\n const { element: t = \"div\", options: c, events: a, defer: i, children: r, ...u } = l, s = t, n = f(null), e = f(null), [y, d] = F({ options: c, events: a, defer: i });\n return v(() => {\n const { current: b } = n, { current: m } = e;\n if (!b)\n return;\n const p = b;\n return y(\n t === \"body\" ? {\n target: p,\n cancel: {\n body: null\n }\n } : {\n target: p,\n elements: {\n viewport: m,\n content: m\n }\n }\n ), () => {\n var R;\n return (R = d()) == null ? void 0 : R.destroy();\n };\n }, [y, d, t]), O(o, () => ({\n osInstance: d,\n getElement: () => n.current\n }), [d]), /* @__PURE__ */ w.createElement(s, { \"data-overlayscrollbars-initialize\": \"\", ref: n, ...u }, t === \"body\" ? r : /* @__PURE__ */ w.createElement(\"div\", { \"data-overlayscrollbars-contents\": \"\", ref: e }, r));\n}, g = E(q);\nexport {\n g as OverlayScrollbarsComponent,\n F as useOverlayScrollbars\n};\n//# sourceMappingURL=overlayscrollbars-react.mjs.map\n","import { theme } from 'antd';\nimport { useCallback, useEffect, useRef, type CSSProperties, type HTMLAttributes, type RefObject } from 'react';\nimport { useOverlayScrollbars } from 'overlayscrollbars-react';\nimport 'overlayscrollbars/overlayscrollbars.css';\nimport './scroll-area.css';\ntype ScrollAreaProps = HTMLAttributes<HTMLElement> & {\n as?: 'div' | 'main' | 'nav';\n horizontal?: boolean;\n vertical?: boolean;\n scroll?: 'auto' | 'hidden' | 'visible';\n scrollRef?: RefObject<HTMLElement | null>;\n};\n/** Keep the existing scroll element: cache restoration and keyboard/focus scrolling use it. */\nexport default function ScrollArea({ as: Element = 'div', horizontal = false, vertical = true, scroll = 'auto', scrollRef, className, style, children, ...props }: ScrollAreaProps) {\n const { token } = theme.useToken();\n const element = useRef<HTMLElement>(null);\n const setElement = useCallback((node: HTMLElement | null) => {\n element.current = node;\n if (scrollRef)\n scrollRef.current = node;\n }, [scrollRef]);\n const [initialize] = useOverlayScrollbars({\n defer: true,\n options: {\n overflow: { x: scroll === 'auto' ? (horizontal ? 'scroll' : 'hidden') : scroll, y: scroll === 'auto' ? (vertical ? 'scroll' : 'hidden') : scroll },\n scrollbars: { theme: 'arc-scrollbars', autoHide: 'leave', autoHideDelay: 650, autoHideSuspend: true, dragScroll: true },\n },\n });\n useEffect(() => {\n if (element.current)\n initialize({ target: element.current, elements: { viewport: element.current } });\n }, [initialize]);\n return <Element {...props} ref={setElement} tabIndex={props.tabIndex ?? 0} data-overlayscrollbars-initialize=\"\" className={['arc-scroll-area', className].filter(Boolean).join(' ')} style={{ '--arc-scrollbar-thumb': token.colorFill, '--arc-scrollbar-hover': token.colorTextQuaternary,\n '--arc-scrollbar-active': token.colorTextTertiary, ...style } as CSSProperties}>\n {children}\n </Element>;\n}\n","import { Button, Tooltip } from 'antd';\nimport { LayoutGrid, PanelLeftClose, PanelLeftOpen } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport type { LayoutMenuItem } from './menu-model';\nimport ScrollArea from '../../components/ScrollArea';\ninterface LayoutSidebarProps {\n width: number;\n collapsed: boolean;\n logo: ReactNode;\n children: ReactNode;\n title: string;\n rail?: {\n items: LayoutMenuItem[];\n activeKey: string;\n showLabels: boolean;\n onSelect: (key: string) => void;\n };\n onToggle: () => void;\n onHover: (hovered: boolean) => void;\n}\n/** Fixed sidebar and bottom trigger migrated from layout-sidebar and layout-mixed-sidebar. */\nexport default function LayoutSidebar({ width, collapsed, logo, children, title, rail, onToggle, onHover }: LayoutSidebarProps) {\n return <aside className=\"arc-layout-sidebar\" aria-label=\"主导航\" style={{ width }} onMouseEnter={() => onHover(true)} onMouseLeave={() => onHover(false)}>\n {rail && <div className={'arc-layout-rail' + (rail.showLabels ? ' arc-layout-rail--labels' : '')}>\n <div className=\"arc-layout-logo arc-layout-logo--compact\">{logo}</div>\n <ScrollArea className=\"arc-layout-rail__menu\" aria-label=\"导航分组\">\n {rail.items.map(item => <Tooltip key={item.key} title={item.label} placement=\"right\">\n <button type=\"button\" className={'arc-layout-rail__item' + (rail.activeKey === item.key ? ' arc-layout-rail__item--active' : '')} aria-label={item.label} aria-current={rail.activeKey === item.key ? 'page' : undefined} onClick={() => rail.onSelect(item.key)}>\n {item.icon ?? <LayoutGrid size={20}/>}<span>{item.label}</span>\n </button>\n </Tooltip>)}\n </ScrollArea>\n </div>}\n <div className=\"arc-layout-sidebar__column\">\n <div className={'arc-layout-logo' + (collapsed ? ' arc-layout-logo--compact' : '')}>{!rail && logo}{!collapsed && <strong>{title}</strong>}</div>\n <ScrollArea className=\"arc-layout-sidebar__scroll\" aria-label=\"导航菜单\">{children}</ScrollArea>\n <Button type=\"text\" className=\"arc-layout-sidebar__trigger\" aria-label={collapsed ? '展开侧边栏' : '收起侧边栏'} icon={collapsed ? <PanelLeftOpen size={17}/> : <PanelLeftClose size={17}/>} onClick={onToggle}/>\n </div>\n </aside>;\n}\n","import type { ReactNode } from 'react';\nexport interface LayoutMenuItem {\n key: string;\n label: string;\n path?: string;\n icon?: ReactNode;\n children?: LayoutMenuItem[];\n}\n\nexport const personalMenuPages = [\n { key: 'personal-center', label: '个人中心', path: '/profile' },\n { key: 'personal-api-tokens', label: 'API Key', path: '/system/api-tokens' },\n] as const;\n\nexport const mcpSettingsPage = { key: 'system-mcp', label: 'MCP 设置', path: '/system/mcp', permission: 'system:setting:view' } as const;\n\nexport function canViewMcpSettings(permissions: readonly string[], superAdmin = false): boolean {\n return superAdmin || permissions.includes('*') || permissions.includes(mcpSettingsPage.permission);\n}\n\n/** Place personal and integration entries without granting MCP settings access. */\nexport function withPersonalMenu(items: readonly LayoutMenuItem[], { settingsKey, integrationKey, profileIcon, apiTokenIcon, settingsIcon, integrationIcon, mcpIcon, canViewMcp = false }: {\n settingsKey?: string; integrationKey?: string; profileIcon?: ReactNode; apiTokenIcon?: ReactNode; settingsIcon?: ReactNode;\n integrationIcon?: ReactNode; mcpIcon?: ReactNode; canViewMcp?: boolean;\n}): LayoutMenuItem[] {\n const personalPaths = new Set<string>([...personalMenuPages.map(page => page.path), mcpSettingsPage.path]);\n const settingsRootKey = settingsKey ?? 'personal-settings';\n const integrationRootKey = integrationKey ?? 'ai-integrations';\n const removePersonal = (menus: readonly LayoutMenuItem[]): LayoutMenuItem[] => menus.flatMap(menu => {\n if (menu.path && personalPaths.has(menu.path)) return [];\n const children = menu.children ? removePersonal(menu.children) : undefined;\n if (children?.length === 0 && !menu.path && menu.key !== settingsRootKey && menu.key !== integrationRootKey) return [];\n return [{ ...menu, ...(children ? { children } : {}) }];\n });\n const menus = removePersonal(items);\n const profile = { ...personalMenuPages[0], icon: profileIcon };\n let index = menus.findIndex(menu => menu.key === settingsRootKey);\n if (index < 0) {\n menus.push({ key: settingsRootKey, label: '系统设置', icon: settingsIcon, children: [profile] });\n index = menus.length - 1;\n } else menus[index] = { ...menus[index], children: [profile, ...menus[index].children ?? []] };\n const children: LayoutMenuItem[] = [{ ...personalMenuPages[1], icon: apiTokenIcon }];\n if (canViewMcp) children.push({ key: mcpSettingsPage.key, label: mcpSettingsPage.label, path: mcpSettingsPage.path, icon: mcpIcon });\n const integrationIndex = menus.findIndex(menu => menu.key === integrationRootKey);\n if (integrationIndex < 0) menus.splice(index + 1, 0, { key: integrationRootKey, label: 'AI 与集成', icon: integrationIcon, children });\n else menus[integrationIndex] = { ...menus[integrationIndex], label: 'AI 与集成', children: [...children, ...menus[integrationIndex].children ?? []] };\n return menus;\n}\n/** Adapted from react-antd-admin layout-menu/utils.ts and use-menu.ts. */\nexport function menuChain(items: LayoutMenuItem[], path: string): LayoutMenuItem[] {\n for (const item of items) {\n if (item.path === path)\n return [item];\n const children = menuChain(item.children ?? [], path);\n if (children.length)\n return [item, ...children];\n }\n return [];\n}\nexport function firstMenuPath(item: LayoutMenuItem): string | undefined {\n return item.path || item.children?.map(firstMenuPath).find(Boolean);\n}\nexport function menuParentKeys(items: LayoutMenuItem[], parents: string[] = []): Record<string, string[]> {\n return Object.fromEntries(items.flatMap(item => [\n [item.key, parents],\n ...Object.entries(menuParentKeys(item.children ?? [], [...parents, item.key])),\n ]));\n}\n/** Keep ancestors open when changing accordion groups, including nested directories. */\nexport function accordionKeys(next: string[], previous: string[], parents: Record<string, string[]>): string[] {\n const opened = next.find(key => !previous.includes(key));\n if (opened)\n return [...(parents[opened] ?? []), opened];\n const closed = previous.find(key => !next.includes(key));\n return closed ? parents[closed] ?? [] : next;\n}\n","import { ConfigProvider, Menu, theme, type MenuProps } from 'antd';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport type { CSSProperties } from 'react';\nimport { accordionKeys, menuChain, menuParentKeys, type LayoutMenuItem } from './menu-model';\ninterface LayoutMenuProps {\n items: LayoutMenuItem[];\n path: string;\n collapsed?: boolean;\n accordion?: boolean;\n dark?: boolean;\n scrollIntoView?: boolean;\n mode?: MenuProps['mode'];\n onSelect: (key: string) => void;\n}\n/** Migrated from react-antd-admin/layout/layout-menu; ArcBase supplies authorized menus. */\nexport default function LayoutMenu({ items, path, collapsed = false, accordion = false, dark = false, scrollIntoView, mode = 'inline', onSelect }: LayoutMenuProps) {\n const { token } = theme.useToken();\n const selectedBg = `color-mix(in srgb, ${token.colorPrimaryBg} 50%, ${token.colorPrimaryBgHover})`;\n const [openKeys, setOpenKeys] = useState<string[]>([]);\n const container = useRef<HTMLDivElement>(null);\n const parents = useMemo(() => menuParentKeys(items), [items]);\n const selected = useMemo(() => menuChain(items, path).map(item => item.key), [items, path]);\n const menuItems = useMemo(() => {\n const convert = (nodes: LayoutMenuItem[]): NonNullable<MenuProps['items']> => nodes.map(({ children, ...item }) => children?.length ? { ...item, children: convert(children) } : item);\n return convert(items);\n }, [items]);\n const inline = mode === 'inline';\n useEffect(() => {\n setOpenKeys(previous => collapsed ? [] : accordion ? selected.slice(0, -1) : [...new Set([...previous.filter(key => key in parents), ...selected.slice(0, -1)])]);\n }, [selected, collapsed, accordion, parents]);\n useEffect(() => {\n if (!scrollIntoView || !inline || collapsed)\n return;\n // Menu expansion must be committed before measuring the selected item.\n const frame = requestAnimationFrame(() => container.current?.querySelector('.ant-menu-item-selected')?.scrollIntoView({ block: 'nearest' }));\n return () => cancelAnimationFrame(frame);\n }, [path, openKeys, scrollIntoView, inline, collapsed]);\n return <div ref={container} className=\"arc-layout-menu\" style={{ '--arc-layout-menu-selected-bg': dark ? token.colorPrimary : selectedBg } as CSSProperties}>\n <ConfigProvider theme={{ components: { Menu: { itemSelectedBg: selectedBg } } }}>\n <Menu className=\"arc-layout-menu__items\" items={menuItems} mode={mode} theme={dark ? 'dark' : 'light'} inlineIndent={16} selectedKeys={selected} {...(inline ? { inlineCollapsed: collapsed, openKeys,\n onOpenChange: (keys: string[]) => setOpenKeys(accordion || collapsed ? accordionKeys(keys, openKeys, parents) : keys) } : {})} onClick={({ key }) => onSelect(key)}/>\n </ConfigProvider>\n </div>;\n}\n","import { Button, ConfigProvider, Drawer, theme } from 'antd';\nimport { Minimize } from 'lucide-react';\nimport { useMemo, useState, type CSSProperties, type ReactNode } from 'react';\nimport type { UserPreferences } from '@fudanda/shared/preferences';\nimport LayoutHeader from './LayoutHeader';\nimport LayoutSidebar from './LayoutSidebar';\nimport LayoutMenu from './LayoutMenu';\nimport { firstMenuPath, menuChain, type LayoutMenuItem } from './menu-model';\nimport './layout.css';\nimport ScrollArea from '../../components/ScrollArea';\ninterface ContainerLayoutProps {\n preferences: UserPreferences;\n dark: boolean;\n mobile: boolean;\n collapsed: boolean;\n maximized: boolean;\n title: string;\n brand: string;\n logo: ReactNode;\n menus: LayoutMenuItem[];\n path: string;\n breadcrumb: ReactNode;\n actions: ReactNode;\n tabbar: ReactNode;\n children: ReactNode;\n onCollapse: (collapsed: boolean) => void;\n onNavigate: (path: string) => void;\n onRestore: () => void;\n}\n/** Source base: react-antd-admin/container-layout. UI slots use ArcBase session/query state. */\nexport default function ContainerLayout({ preferences, dark, mobile, collapsed, maximized, title, brand, logo, menus, path, breadcrumb, actions, tabbar, children, onCollapse, onNavigate, onRestore }: ContainerLayoutProps) {\n const { token } = theme.useToken();\n const darkToken = useMemo(() => theme.getDesignToken({ algorithm: theme.darkAlgorithm, token: { colorPrimary: token.colorPrimary } }), [token.colorPrimary]);\n const [hovered, setHovered] = useState(false);\n const layout = mobile ? 'vertical' : preferences.navLayout;\n const split = layout === 'mixed' || layout === 'double';\n const root = useMemo(() => menuChain(menus, path)[0] ?? menus[0], [menus, path]);\n const sideMenus = split && root ? root.children?.length ? root.children : [root] : menus;\n const sidebar = layout !== 'horizontal';\n const expandedOnHover = preferences.sidebarHoverTrigger && collapsed && hovered && !mobile;\n const effectiveCollapsed = collapsed && !expandedOnHover;\n const railWidth = layout === 'double' ? preferences.doubleRailStyle === 'icon-text' ? 80 : 56 : 0;\n const columnWidth = effectiveCollapsed ? 56 : preferences.sidebarWidth;\n const width = railWidth + columnWidth;\n // Hover expansion overlays content instead of shifting the page under the pointer.\n const reserved = mobile || maximized || !sidebar ? 0 : railWidth + (collapsed ? 56 : preferences.sidebarWidth);\n const siderDark = dark || preferences.sidebarDarkMode;\n const headerDark = dark || preferences.headerDarkMode;\n const tone = (value: 'bg-0' | 'bg-1', isDark: boolean) => isDark ? value === 'bg-0' ? darkToken.colorBgLayout : darkToken.colorBgContainer : token.colorBgContainer;\n const style = {\n fontFamily: token.fontFamily,\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n '--arc-layout-sidebar-width': `${reserved}px`,\n '--arc-layout-sidebar-bg': tone(preferences.darkSidebarTone, siderDark),\n '--arc-layout-header-bg': tone(preferences.darkHeaderTone, headerDark),\n '--arc-layout-sidebar-text': siderDark ? darkToken.colorText : token.colorText,\n '--arc-layout-sidebar-border': siderDark ? darkToken.colorBorderSecondary : token.colorBorderSecondary,\n '--arc-layout-header-text': headerDark ? darkToken.colorText : token.colorText,\n '--arc-layout-header-border': headerDark ? darkToken.colorBorderSecondary : token.colorBorderSecondary,\n '--arc-layout-tab-active-bg': headerDark ? darkToken.colorPrimaryBg : token.colorPrimaryBg,\n '--arc-layout-tabbar-height': tabbar ? preferences.compactTabs ? '35px' : '43px' : '0px',\n '--arc-layout-content-bg': dark ? tone(preferences.darkContentTone, true) : token.colorBgLayout,\n '--arc-layout-rail-width': `${railWidth}px`,\n } as CSSProperties;\n const select = (key: string) => {\n const find = (items: LayoutMenuItem[]): LayoutMenuItem | undefined => {\n for (const item of items) {\n if (item.key === key)\n return item;\n const match = find(item.children ?? []);\n if (match)\n return match;\n }\n };\n const item = find(menus);\n const target = item && firstMenuPath(item);\n if (target) {\n if (mobile)\n onCollapse(true);\n onNavigate(target);\n }\n };\n const menu = (items: LayoutMenuItem[], isCollapsed = effectiveCollapsed, mode: 'inline' | 'horizontal' = 'inline') => <LayoutMenu items={items} path={path} collapsed={isCollapsed} mode={mode} accordion={preferences.sidebarAccordion} dark={mode === 'horizontal' ? headerDark : siderDark} scrollIntoView={preferences.scrollMenuIntoView} onSelect={select}/>;\n const topMenus = split ? menus.map(item => ({ ...item, children: undefined })) : menus;\n const sidebarTheme = { algorithm: siderDark ? theme.darkAlgorithm : theme.defaultAlgorithm };\n return <section className={'arc-admin-layout arc-admin-layout--' + layout + (maximized ? ' arc-admin-layout--maximized' : '')\n + (preferences.sidebarToggleIconPosition === 'left' ? ' arc-admin-layout--arrow-left' : '')\n + (preferences.sidebarStickyScroll ? ' arc-admin-layout--sticky-menu' : '')} style={style} data-layout-source=\"react-antd-admin\">\n {!mobile && !maximized && sidebar && <ConfigProvider theme={sidebarTheme}>\n <LayoutSidebar width={width} collapsed={effectiveCollapsed} title={brand} logo={logo} onToggle={() => onCollapse(!collapsed)} onHover={setHovered} rail={layout === 'double' ? { items: menus, activeKey: root?.key ?? '', showLabels: preferences.doubleRailStyle === 'icon-text', onSelect: select } : undefined}>\n {menu(sideMenus)}\n </LayoutSidebar>\n </ConfigProvider>}\n <div className=\"arc-layout-main\">\n {!maximized && <ConfigProvider theme={{ algorithm: headerDark ? theme.darkAlgorithm : theme.defaultAlgorithm }}>\n <LayoutHeader mobile={mobile} collapsed={collapsed} showTrigger={mobile || layout === 'vertical' || layout === 'double'} onToggle={() => onCollapse(!collapsed)} actions={actions}>\n {layout === 'horizontal' && <div className=\"arc-layout-header__brand\">{logo}<strong>{brand}</strong></div>}\n {layout === 'horizontal' || layout === 'mixed' ? menu(topMenus, false, 'horizontal') : breadcrumb || <span className=\"arc-layout-page-title\">{title}</span>}\n </LayoutHeader>\n </ConfigProvider>}\n {!maximized && (layout === 'horizontal' || layout === 'mixed') && breadcrumb && <ConfigProvider theme={{ algorithm: headerDark ? theme.darkAlgorithm : theme.defaultAlgorithm }}>\n <div className=\"arc-layout-breadcrumb\">{breadcrumb}</div>\n </ConfigProvider>}\n <ConfigProvider theme={{ algorithm: headerDark ? theme.darkAlgorithm : theme.defaultAlgorithm }}>{tabbar}</ConfigProvider>\n <ScrollArea as=\"main\" horizontal aria-label=\"页面内容\" className={'admin-content arc-layout-content' + (preferences.contentWidth === 'fixed' ? ' arc-layout-content--fixed' : '')}>\n <div className=\"arc-layout-content__inner\">{children}</div>\n </ScrollArea>\n {maximized && !tabbar && <Button className=\"arc-layout-restore\" aria-label=\"退出内容全屏\" icon={<Minimize size={16}/>} onClick={onRestore}>退出全屏</Button>}\n </div>\n {mobile && <ConfigProvider theme={sidebarTheme}><Drawer title={brand} placement=\"left\" size={Math.min(preferences.sidebarWidth + 24, 320)} open={!collapsed} onClose={() => onCollapse(true)} className=\"arc-layout-mobile-menu\" styles={{ body: { padding: 0, overflow: 'hidden', background: tone(preferences.darkSidebarTone, siderDark) } }}>\n <ScrollArea className=\"arc-layout-mobile-menu__scroll\" aria-label=\"导航菜单\" style={{ height: '100%' }}>{menu(menus, false)}</ScrollArea>\n </Drawer></ConfigProvider>}\n </section>;\n}\n","import { Button, Dropdown, Tabs, Tooltip, type MenuProps } from 'antd';\nimport { ChevronDown, Ellipsis, Maximize, Minimize, Pin, RefreshCw, X } from 'lucide-react';\nimport { useEffect, useRef, useState } from 'react';\nimport type { UserPreferences } from '@fudanda/shared/preferences';\nimport type { TabItem, useTabsStore } from '@fudanda/react-core/hooks/useTabsStore';\nimport { DynamicIcon } from '../../components/DynamicIcon';\ninterface LayoutTabbarProps {\n tabs: TabItem[];\n store: ReturnType<typeof useTabsStore>;\n path: string;\n preferences: UserPreferences;\n maximized: boolean;\n onNavigate: (path: string) => void;\n onRefresh: (path: string) => void;\n onClose: (path: string) => void;\n onMaximize: () => void;\n}\n/** Tabbar structure/styles migrated from react-antd-admin; Core retains tab/cache ownership. */\nexport default function LayoutTabbar({ tabs, store, path, preferences, maximized, onNavigate, onRefresh, onClose, onMaximize }: LayoutTabbarProps) {\n const root = useRef<HTMLDivElement>(null);\n useEffect(() => {\n const clip = root.current?.querySelector<HTMLElement>('.ant-tabs-nav-wrap');\n if (!clip || typeof IntersectionObserver === 'undefined')\n return;\n const observed = new Set<HTMLElement>();\n const observer = new IntersectionObserver(entries => {\n for (const entry of entries)\n (entry.target as HTMLElement).dataset.clipped = String(entry.intersectionRatio < 0.999);\n }, { root: clip, threshold: [0, 0.999, 1] });\n const sync = () => {\n const current = new Set(clip.querySelectorAll<HTMLElement>('.ant-tabs-tab'));\n for (const tab of observed)\n if (!current.has(tab)) {\n observer.unobserve(tab);\n observed.delete(tab);\n }\n for (const tab of current)\n if (!observed.has(tab)) {\n observer.observe(tab);\n observed.add(tab);\n }\n };\n sync();\n const mutations = new MutationObserver(sync);\n mutations.observe(clip, { childList: true, subtree: true });\n return () => {\n observer.disconnect();\n mutations.disconnect();\n for (const tab of observed)\n delete tab.dataset.clipped;\n };\n }, [tabs.length, preferences.tabStyle, preferences.compactTabs]);\n const keys = tabs.map(tab => tab.key);\n const [animation, setAnimation] = useState({ keys, entering: new Set<string>() });\n if (keys.join('\\0') !== animation.keys.join('\\0')) {\n setAnimation({ keys, entering: new Set([...animation.entering, ...keys.filter(key => !animation.keys.includes(key))].filter(key => keys.includes(key))) });\n }\n const clearAnimation = (key: string) => setAnimation(previous => ({ ...previous, entering: new Set([...previous.entering].filter(item => item !== key)) }));\n const menuItems = (tab: TabItem): MenuProps['items'] => [\n { key: 'refresh', label: '刷新', icon: <RefreshCw size={14}/>, onClick: () => onRefresh(tab.key) },\n { key: 'pin', label: tab.pinned ? '取消固定' : '固定', disabled: tab.key === '/', icon: <Pin size={14}/>, onClick: () => tab.pinned ? store.unpinTab(tab.key) : store.pinTab(tab.key) },\n { type: 'divider' },\n { key: 'close', label: '关闭当前', disabled: !tab.closable || tab.pinned, onClick: () => onClose(tab.key) },\n { key: 'others', label: '关闭其他', onClick: () => onNavigate(store.closeOthers(tab.key)) },\n { key: 'left', label: '关闭左侧', onClick: () => onNavigate(store.closeLeft(tab.key)) },\n { key: 'right', label: '关闭右侧', onClick: () => onNavigate(store.closeRight(tab.key)) },\n { key: 'all', label: '关闭全部', onClick: () => { store.closeAll(); onNavigate('/'); } },\n ];\n const active = tabs.find(tab => tab.key === path) ?? tabs[0];\n return <div ref={root} className={'arc-layout-tabbar arc-layout-tabbar--' + preferences.tabStyle\n + (preferences.compactTabs ? ' arc-layout-tabbar--compact' : '') + (preferences.autoHideTabs ? ' arc-layout-tabbar--autohide' : '')} data-tab-animation={preferences.reduceMotion ? 'none' : preferences.tabAnimation}>\n <Tabs activeKey={path} onChange={onNavigate} type=\"editable-card\" hideAdd size=\"small\" animated={false} more={{ trigger: 'click', icon: <span role=\"img\" aria-label=\"更多标签页\" title=\"更多标签页\"><Ellipsis size={16}/></span> }} onEdit={(key, action) => {\n if (action === 'remove' && typeof key === 'string')\n onClose(key);\n }} items={tabs.map(tab => ({ key: tab.key, closable: tab.closable && !tab.pinned,\n closeIcon: <X size={12} aria-label={'关闭' + tab.title}/>,\n label: <Dropdown trigger={['contextMenu']} menu={{ items: menuItems(tab) }}>\n <span className={'arc-layout-tab-label' + (animation.entering.has(tab.key) ? ' arc-layout-tab-label--entering' : '')} onAnimationEnd={() => clearAnimation(tab.key)} draggable={tab.key !== '/' && !tab.pinned} onDragStart={event => event.dataTransfer.setData('arcbase-tab', tab.key)} onDragOver={event => event.preventDefault()} onDrop={event => {\n const key = event.dataTransfer.getData('arcbase-tab');\n if (key)\n store.reorderTabs(key, tab.key);\n }} onDoubleClick={() => {\n if (preferences.tabDoubleClickAction === 'refresh')\n onRefresh(tab.key);\n if (preferences.tabDoubleClickAction === 'close' && tab.closable && !tab.pinned)\n onClose(tab.key);\n }}>\n {tab.pinned && <Pin size={12}/>}{preferences.showTabIcon && tab.icon && <DynamicIcon name={tab.icon}/>}{tab.title}\n </span>\n </Dropdown> }))} tabBarExtraContent={<div className=\"arc-layout-tabbar__actions\">\n <Tooltip title=\"刷新当前页\"><Button type=\"text\" aria-label=\"刷新当前页\" icon={<RefreshCw size={15}/>} onClick={() => onRefresh(path)}/></Tooltip>\n {active && <Dropdown trigger={['click']} menu={{ items: menuItems(active) }}><Button type=\"text\" aria-label=\"标签页操作\" icon={<ChevronDown size={15}/>}/></Dropdown>}\n {preferences.showTabSwitcher && <Dropdown trigger={['click']} menu={{ selectedKeys: [path], items: tabs.map(tab => ({\n key: tab.key, label: tab.title, icon: preferences.showTabIcon && tab.icon ? <DynamicIcon name={tab.icon}/> : undefined,\n onClick: () => onNavigate(tab.key),\n })) }}><Button type=\"text\" aria-label=\"标签切换器\" title=\"切换到已打开的标签页\" icon={<ChevronDown size={15}/>}/></Dropdown>}\n <Tooltip title={maximized ? '退出内容全屏' : '内容全屏'}><Button type=\"text\" aria-label={maximized ? '退出内容全屏' : '内容全屏'} icon={maximized ? <Minimize size={15}/> : <Maximize size={15}/>} onClick={onMaximize}/></Tooltip>\n </div>}/>\n </div>;\n}\n","import { Suspense, lazy, useEffect, useMemo, useState, useCallback, startTransition, type ReactNode } from 'react';\nimport {SafeUpdateProvider, type ArcBaseUpdateOptions} from './updates';\nimport { Link, Navigate, Route, Routes, useLocation, useNavigate } from 'react-router-dom';\nimport { Avatar, Button, Result, Dropdown, BackTop, App, Tooltip } from 'antd';\nimport { KeyRound, Maximize, LockKeyhole, Moon, Sun, UserRound, LogOut, Settings2, Sparkles, PlugZap } from 'lucide-react';\nimport { IdentityCallback } from '@fudanda/elements-antd';\nimport { useArcBase } from '@fudanda/react-core';\nimport { useAuth } from '@fudanda/react-core/hooks/useAuth';\nimport { useAdminOptions, useAdminPaths } from '@fudanda/react-core/admin/runtime';\nimport { useWebMcpHost } from './webmcp-control';\nimport type { ArcBaseWebMcpOptions } from './webmcp-types';\nimport { useCurrentUserMenuTree } from '@fudanda/react-core/hooks/queries/menus';\nimport { useMcpPolicy } from '@fudanda/react-core/hooks/queries/settings';\nimport { useMountedAdminModules } from '@fudanda/react-core/admin/modules';\nimport { foundationPagePaths } from '@fudanda/react-core/lib/foundation-mode';\nimport { usePreferences } from '@fudanda/react-core/hooks/usePreferences';\nimport { useTabsStore } from '@fudanda/react-core/hooks/useTabsStore';\nimport { TabsMetaContext } from '@fudanda/react-core/hooks/useTabMeta';\nimport type { Menu } from '@fudanda/shared/identity';\nimport type { ArcBasePageProps } from '@fudanda/react-core/admin/types';\nimport { hasPostLoginHome, clearPostLoginHome } from './lib/post-login';\nimport { pageLoaders } from './page-registry';\nimport { TopbarClock } from './components/TopbarClock';\nimport { AccountVersionPopup } from './components/AccountVersionInfo';\nimport { useLockScreen } from '@fudanda/react-core/hooks/useLockScreen';\nimport { useAutoLock } from '@fudanda/react-core/hooks/useAutoLock';\nimport { useLayoutShortcuts } from '@fudanda/react-core/hooks/useLayoutShortcuts';\nimport { RouteErrorBoundary } from './components/PageErrorBoundary';\nimport { LockPanel } from './layouts/admin/LockPanel';\nimport { DynamicIcon } from './components/DynamicIcon';\nimport { useFavoriteMenus } from \"@fudanda/react-core/hooks/useFavoriteMenus\";\nimport './loading.css';\nimport './route-animation.css';\nimport { PreferencesProvider } from './hooks/PreferencesProvider';\nimport { RealtimeBridge } from '@fudanda/react-core/providers/RealtimeBridge';\nimport { useRecentMenus } from \"@fudanda/react-core/hooks/useRecentMenus\";\nimport PreferencesPanel from './layouts/admin/PreferencesPanel';\nimport { AntTheme, useAntDark } from './admin/theme';\nimport KeepAliveOutlet from './layouts/KeepAliveOutlet';\nimport MenuSearchInput, { type FlatMenuItem } from './components/MenuSearchInput';\nimport PageLoading from './components/PageLoading';\nimport { NavigationBreadcrumb } from './components/NavigationBreadcrumb';\nimport { NavigationProgress } from './components/NavigationProgress';\nimport { FavoriteMenus } from './components/FavoriteMenus';\nimport { useIsMobile } from '@fudanda/react-core/hooks/useMediaQuery';\nimport LoginPage from './pages/login/LoginPage';\nimport AppLogo from './components/AppLogo';\nimport ContainerLayout from './layouts/react-antd-admin/ContainerLayout';\nimport LayoutTabbar from './layouts/react-antd-admin/LayoutTabbar';\nimport { canViewMcpSettings, mcpSettingsPage, personalMenuPages, withPersonalMenu, type LayoutMenuItem } from './layouts/react-antd-admin/menu-model';\nconst pageComponents = Object.fromEntries(Object.entries(pageLoaders).map(([path, loader]) => [path, lazy(loader)]));\nfunction denied(known: boolean) { return <Result status={known ? '403' : '404'} title={known ? '无权访问' : '页面不存在'} extra={<Link to=\"/\">返回首页</Link>}/>; }\nexport function safeLoginRedirect(search: string) {\n const path = new URLSearchParams(search).get('redirect');\n return path && path.startsWith('/') && !path.startsWith('//') && !path.includes('\\\\') && !/^\\/(login|auth\\/callback)([/?#]|$)/.test(path) ? path : '/';\n}\nfunction Shell({ webmcp }: { webmcp?: ArcBaseWebMcpOptions }) {\n const mobile = useIsMobile();\n const auth = useAuth(), options = useAdminOptions(), location = useLocation(), navigate = useNavigate();\n const menuQuery = useCurrentUserMenuTree(), mounted = useMountedAdminModules();\n const { preferences, setPreferences, canEditPreference } = usePreferences();\n const { modal, message } = App.useApp();\n const dark = useAntDark(), lock = useLockScreen();\n const favorites = useFavoriteMenus();\n const [contentFullscreen, setContentFullscreen] = useState(false);\n const [collapsed, setCollapsed] = useState(mobile), [versions, setVersions] = useState<Record<string, number>>({});\n useEffect(() => {\n if (mobile)\n setCollapsed(true);\n }, [mobile]);\n const tabs = useTabsStore(preferences.tabsMaxCount, undefined, preferences.keepTabs, preferences.tabEvictPolicy, preferences.openTabBehavior);\n const { addTab, removeTab, setActiveKey, tabs: openTabs } = tabs;\n const { data = [] } = menuQuery;\n const canViewMcp = canViewMcpSettings(auth.permissions, auth.superAdmin);\n const flat = useMemo(() => {\n const visit = (items: Menu[], breadcrumb: string[] = []): Array<Menu & FlatMenuItem> => items.flatMap(item => {\n if (item.type === 'button' || item.visible === false || item.path === mcpSettingsPage.path && !canViewMcp)\n return [];\n return [...(item.path ? [{ ...item, path: item.path, breadcrumb }] : []), ...visit(item.children ?? [], [...breadcrumb, item.title])];\n });\n return visit(data);\n }, [data, canViewMcp]);\n const recent = useRecentMenus(flat, location.pathname);\n useAutoLock(lock.autoLockMinutes, lock.hasPassword(), lock.isLocked, lock.hasPassword, lock.lock);\n useLayoutShortcuts({ enableShortcuts: preferences.enableShortcuts, enableLockScreen: lock.hasPassword(), hasPassword: lock.hasPassword, lock: lock.lock, collapsed, handleCollapseChange: setCollapsed, isContentFullscreen: contentFullscreen, setIsContentFullscreen: setContentFullscreen });\n useEffect(() => {\n if (preferences.sidebarHoverTrigger)\n setCollapsed(true);\n }, [preferences.sidebarHoverTrigger]);\n const routes = useMemo(() => {\n const visit = (items: Menu[]): LayoutMenuItem[] => items.filter(item => item.type !== 'button' && item.visible !== false && item.status === 'enabled')\n .map(item => ({ key: String(item.id), path: item.path ?? undefined, label: item.title, icon: item.icon ? <DynamicIcon name={item.icon}/> : undefined, children: item.children?.length ? visit(item.children) : undefined }))\n .filter(item => item.path || item.children?.length);\n const settings = data.find(menu => menu.type === 'directory' && menu.name === 'SystemSettings');\n const integration = data.find(menu => menu.type === 'directory' && menu.name === 'AiIntegrations');\n return withPersonalMenu(visit(data), { settingsKey: settings ? String(settings.id) : undefined, integrationKey: integration ? String(integration.id) : undefined,\n profileIcon: <UserRound size={16}/>, apiTokenIcon: <KeyRound size={16}/>, settingsIcon: <Settings2 size={16}/>,\n integrationIcon: <Sparkles size={16}/>, mcpIcon: <PlugZap size={16}/>, canViewMcp });\n }, [data, canViewMcp]);\n const pages = mounted.modules.flatMap(module => module.pages);\n const hostPage = pages.find(page => page.path === location.pathname);\n const currentMenu = flat.find(menu => menu.path === location.pathname);\n const allowed = useMemo(() => new Set(['/', ...personalMenuPages.map(page => page.path), ...(canViewMcp ? [mcpSettingsPage.path] : []), ...flat.map(menu => menu.path)]), [flat, canViewMcp]);\n const title = hostPage?.title ?? currentMenu?.title ?? personalMenuPages.find(page => page.path === location.pathname)?.label ?? (canViewMcp && location.pathname === mcpSettingsPage.path ? mcpSettingsPage.label : '首页');\n useEffect(() => {\n if (allowed.has(location.pathname) || hostPage?.navigation === false) {\n addTab(location.pathname, title, currentMenu?.icon ?? hostPage?.icon);\n setActiveKey(location.pathname);\n }\n }, [location.pathname, title, allowed, hostPage?.navigation, currentMenu?.icon, hostPage?.icon, addTab, setActiveKey]);\n useEffect(() => { document.title = (preferences.dynamicTitle ? title + ' · ' : '') + (options.brand?.name ?? 'ArcBase'); }, [preferences.dynamicTitle, title, options.brand?.name]);\n const refresh = useCallback((key: string) => startTransition(() => setVersions(previous => ({ ...previous, [key]: (previous[key] ?? 0) + 1 }))), []);\n const close = useCallback((key: string) => {\n removeTab(key);\n if (key === location.pathname) {\n const index = openTabs.findIndex(tab => tab.key === key);\n navigate(openTabs[index - 1]?.key ?? '/');\n }\n }, [removeTab, openTabs, location.pathname, navigate]);\n const tabMeta = useMemo(() => ({ enabled: preferences.enableTabs, setTabMeta: tabs.setTabMeta, closeTab: close }), [preferences.enableTabs, tabs.setTabMeta, close]);\n const openPaths = new Set(tabs.tabs.map(tab => tab.key));\n const cachePaths = new Set(preferences.enablePageCache && preferences.enableTabs ? [...flat.filter(menu => menu.keepAlive).map(menu => menu.path), ...pages.filter(page => page.keepAlive).map(page => page.path)] : []);\n const adminPaths = useAdminPaths();\n const { session } = useArcBase();\n const webmcpSettings = useMcpPolicy(Boolean(webmcp));\n const wrapWebMcp = useWebMcpHost(webmcp, { identity: String(auth.user?.id ?? '') + ':' + (session.session?.csrfToken ?? ''), permissionKey: [...auth.permissions].sort().join('|'),\n enabled: Boolean(auth.user) && webmcpSettings.isSuccess && webmcpSettings.data.webMcpEnabled,\n locked: lock.hasPassword() && lock.isLocked, basePath: adminPaths.basePath, path: location.pathname, title,\n routes: [{ path: '/', title: '首页' }, ...personalMenuPages.map(page => ({ path: page.path, title: page.label })),\n ...(canViewMcp ? [{ path: mcpSettingsPage.path, title: mcpSettingsPage.label }] : []),\n ...flat.filter(menu => menu.status === 'enabled' && menu.path !== mcpSettingsPage.path && !personalMenuPages.some(page => page.path === menu.path)).map(menu => ({ path: menu.path, title: menu.title })),\n ...pages.filter(page => auth.permissions.includes('*') || auth.permissions.includes(page.permission)).map(page => ({ path: page.path, title: page.title }))], navigate });\n if (menuQuery.isError || mounted.enabled && mounted.query.isError)\n return <Result status=\"error\" title=\"导航加载失败\" subTitle={(menuQuery.error ?? mounted.query.error)?.message} extra={<Button onClick={() => {\n void menuQuery.refetch();\n if (mounted.enabled)\n void mounted.query.refetch();\n }}>重试</Button>}/>;\n if (menuQuery.isPending || mounted.enabled && mounted.query.isPending)\n return <PageLoading />;\n const content = <RouteErrorBoundary><Suspense fallback={<PageLoading />}><KeepAliveOutlet keepAlivePaths={cachePaths} openPaths={openPaths} refreshVersion={versions} animation={preferences.reduceMotion ? 'none' : preferences.routeAnimation}/></Suspense></RouteErrorBoundary>;\n const body = <TabsMetaContext.Provider value={tabMeta}>{content}</TabsMetaContext.Provider>;\n if (lock.hasPassword() && lock.isLocked)\n return wrapWebMcp(<LockPanel lock={lock} mode={null} onClose={() => { }}/>);\n if (hostPage?.layout === 'workspace')\n return wrapWebMcp(body);\n const visibleTabs = tabs.tabs.filter(tab => allowed.has(tab.key) || pages.some(page => page.navigation === false && page.path === tab.key && (auth.permissions.includes('*') || auth.permissions.includes(page.permission))))\n .map(tab => tab.title === tab.key ? { ...tab, title: flat.find(menu => menu.path === tab.key)?.title ?? pages.find(page => page.path === tab.key)?.title ?? personalMenuPages.find(page => page.path === tab.key)?.label ?? (tab.key === mcpSettingsPage.path ? mcpSettingsPage.label : tab.title) } : tab);\n const logout = () => {\n const perform = () => auth.logout().catch(error => { void message.error(error instanceof Error ? error.message : '退出失败,请重试'); throw error; });\n if (preferences.confirmLogout) modal.confirm({ title: '退出登录', content: '确定退出当前账号?', onOk: perform });\n else void perform().catch(() => {});\n };\n const actions = <>\n {preferences.topbarClock !== 'off' && <TopbarClock mode={preferences.topbarClock} showDate={preferences.topbarClockShowDate}/>}\n {preferences.showMenuSearch && <MenuSearchInput menus={flat} recentMenus={recent.recents.flatMap(id => { const item = flat.find(menu => menu.id === id); return item ? [item] : []; })} onClearRecents={recent.clear} onRemoveRecent={recent.remove}/>}\n {preferences.showFavorites && <FavoriteMenus menus={flat} current={currentMenu} favorites={favorites}/>}\n {lock.hasPassword() && lock.hasPassword() && <Tooltip title=\"锁屏\"><Button type=\"text\" className=\"arc-layout-desktop-action\" aria-label=\"锁屏\" icon={<LockKeyhole size={17}/>} onClick={lock.lock}/></Tooltip>}\n <PreferencesPanel lock={lock} homePaths={flat.map(menu => ({ value: menu.path, label: menu.title }))}/>\n <Tooltip title={dark ? '切换浅色主题' : '切换深色主题'}><Button type=\"text\" aria-label={dark ? '切换浅色主题' : '切换深色主题'} disabled={!canEditPreference('colorMode')} icon={dark ? <Sun size={17}/> : <Moon size={17}/>} onClick={() => setPreferences({ colorMode: dark ? 'light' : 'dark' })}/></Tooltip>\n {preferences.showFullscreen && <Tooltip title=\"浏览器全屏\"><Button type=\"text\" className=\"arc-layout-desktop-action\" aria-label=\"全屏\" icon={<Maximize size={17}/>} onClick={() => {\n if (document.fullscreenElement)\n void document.exitFullscreen();\n else\n void document.documentElement.requestFullscreen();\n }}/></Tooltip>}\n <Dropdown trigger={['click']} placement=\"bottomRight\" popupRender={menu => <AccountVersionPopup versionInfo={options.versionInfo}>{menu}</AccountVersionPopup>} menu={{ items: [\n { key: 'profile', label: '个人中心', icon: <UserRound size={16}/>, onClick: () => navigate('/profile') },\n ...(lock.hasPassword() && lock.hasPassword() ? [{ key: 'lock', label: '锁屏', icon: <LockKeyhole size={16}/>, onClick: lock.lock }] : []),\n { type: 'divider' }, { key: 'logout', label: '退出登录', icon: <LogOut size={16}/>, onClick: logout },\n ] }}><button type=\"button\" className=\"arc-layout-user\" aria-label=\"账户菜单\"><Avatar size={28} src={auth.user?.avatar || undefined} icon={<UserRound size={16}/>}/>\n <span className=\"arc-layout-user__name\">{auth.user?.nickname ?? auth.user?.username}</span></button></Dropdown>\n </>;\n return wrapWebMcp(<>\n {preferences.showProgressBar && <NavigationProgress />}\n <ContainerLayout preferences={preferences} dark={dark} mobile={mobile} collapsed={collapsed} maximized={contentFullscreen} title={title} brand={options.brand?.name ?? 'ArcBase'} logo={preferences.showLogo ? <AppLogo size={28}/> : null} menus={routes} path={location.pathname} onCollapse={setCollapsed} onNavigate={navigate} onRestore={() => setContentFullscreen(false)} actions={actions} breadcrumb={preferences.showBreadcrumb && <NavigationBreadcrumb menus={data} path={location.pathname} title={title} isFavorite={favorites.isFavorite} toggleFavorite={favorites.toggle}/>} tabbar={preferences.enableTabs ? <LayoutTabbar tabs={visibleTabs} store={tabs} path={location.pathname} preferences={preferences} maximized={contentFullscreen} onNavigate={navigate} onRefresh={refresh} onClose={close} onMaximize={() => setContentFullscreen(value => !value)}/> : null}>\n {body}\n </ContainerLayout>\n {preferences.showBackTop && <BackTop target={() => document.querySelector('.admin-content') as HTMLElement}/>}\n </>);\n}\nfunction HomeEntry() {\n const { preferences, ready } = usePreferences();\n const navigate = useNavigate();\n const menus = useCurrentUserMenuTree();\n useEffect(() => {\n if (!ready || !menus.isSuccess || !hasPostLoginHome())\n return;\n clearPostLoginHome();\n const allowed = (items: Menu[]): boolean => items.some(menu => menu.visible !== false && menu.status === 'enabled' && menu.type !== 'button' && (menu.path === preferences.homePath || allowed(menu.children ?? [])));\n if (preferences.homePath !== '/' && (personalMenuPages.some(page => page.path === preferences.homePath) || allowed(menus.data ?? [])))\n navigate(preferences.homePath, { replace: true });\n }, [ready, menus.isSuccess, menus.data, preferences.homePath, navigate]);\n const Page = pageComponents['/'];\n return <Page />;\n}\nfunction AuthenticatedRoutes({ webmcp }: { webmcp?: ArcBaseWebMcpOptions }) {\n const auth = useAuth(), location = useLocation(), { client } = useArcBase();\n const canViewMcp = canViewMcpSettings(auth.permissions, auth.superAdmin);\n const menuQuery = useCurrentUserMenuTree(), mounted = useMountedAdminModules();\n const paths = new Set<string>(['/', ...personalMenuPages.map(page => page.path)]);\n if (canViewMcp) paths.add(mcpSettingsPage.path);\n const visit = (menus: Menu[]) => menus.forEach(menu => {\n if (menu.type !== 'button' && menu.path && menu.visible !== false && (menu.path !== mcpSettingsPage.path || canViewMcp))\n paths.add(menu.path);\n if (menu.children)\n visit(menu.children);\n });\n visit(menuQuery.data ?? []);\n const pageProps: ArcBasePageProps = { client, user: auth.user!, permissions: auth.permissions, hasPermission: permission => auth.permissions.includes('*') || auth.permissions.includes(permission) };\n if (auth.user?.requirePasswordChange && location.pathname !== '/profile')\n return <Navigate to=\"/profile?tab=security\" replace/>;\n return <Routes><Route element={<Shell webmcp={webmcp}/>}>\n {Object.entries(pageComponents).map(([path, Page]) => <Route key={path} path={path} element={paths.has(path) ? path === '/' ? <HomeEntry /> : <Page user={auth.user}/> : denied(true)}/>)}\n {mounted.modules.flatMap(module => module.pages).map(page => <Route key={page.path} path={page.path} element={(page.navigation === false || paths.has(page.path)) && pageProps.hasPermission(page.permission) ? <page.component {...pageProps}/> : denied(true)}/>)}\n <Route path=\"/login\" element={<Navigate to={safeLoginRedirect(location.search)} replace/>}/>\n <Route path=\"/forbidden\" element={denied(true)}/><Route path=\"*\" element={denied(foundationPagePaths.has(location.pathname))}/>\n </Route></Routes>;\n}\nfunction UpdateFrame({children, updates}: {children: ReactNode; updates?: ArcBaseUpdateOptions | false}) {\n const {basePath} = useAdminPaths();\n return <AntTheme><SafeUpdateProvider options={updates} basePath={basePath}>{children}</SafeUpdateProvider></AntTheme>;\n}\nexport function AntApp({ webmcp, updates }: { webmcp?: ArcBaseWebMcpOptions; updates?: ArcBaseUpdateOptions | false }) {\n const auth = useAuth(), location = useLocation();\n if (location.pathname === '/auth/callback')\n return <AntTheme><IdentityCallback /></AntTheme>;\n if (auth.status === 'unavailable')\n return <AntTheme><Result status=\"error\" title=\"会话校验失败\" subTitle={auth.error?.message} extra={<Button loading={auth.refreshing} onClick={() => void auth.refresh()}>重试</Button>}/></AntTheme>;\n if (auth.status === 'checking')\n return <AntTheme><PageLoading /></AntTheme>;\n if (!auth.user)\n return <UpdateFrame updates={updates}><Routes><Route path=\"/login\" element={<LoginPage onLogin={auth.login}/>}/><Route path=\"*\" element={<Navigate to={'/login?redirect=' + encodeURIComponent(location.pathname + location.search)} replace/>}/></Routes></UpdateFrame>;\n return <PreferencesProvider><RealtimeBridge><UpdateFrame updates={updates}><AuthenticatedRoutes webmcp={webmcp}/></UpdateFrame></RealtimeBridge></PreferencesProvider>;\n}\n"]}