mamba-layout 0.44.0 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,47 +1,96 @@
1
- # mamba-layout
2
-
3
- Shared Mamba Vue layout shell, styles, locale helpers, and a standalone browser layout build.
4
-
5
- ## Install
6
-
7
- ```sh
8
- npm install mamba-layout
9
- ```
10
-
11
- `mamba-layout` is designed for Vue 3 applications. Vue, Vue Router, Vue I18n, Element Plus, and Tailwind CSS are peer dependencies for component usage.
12
-
13
- ## Vue Usage
14
-
15
- ```ts
16
- import { BaseLayout, i18n, initTheme } from "mamba-layout";
17
- import "mamba-layout/styles";
18
- ```
19
-
20
- ```vue
21
- <template>
22
- <BaseLayout :setting="setting" />
23
- </template>
24
- ```
25
-
26
- The consuming app owns user state, menus, account menu entries, app switcher data, and auth actions. Pass those values through the `setting` prop.
27
-
28
- ## Standalone Usage
29
-
30
- The standalone build bundles Vue, Vue Router, Vue I18n, Element Plus, Element Plus icons, and layout styles. It registers the `<mamba-layout>` custom element and reads config from `window.MAMBA_LAYOUT_CONFIG`.
31
-
32
- ```html
33
- <link rel="stylesheet" href="./node_modules/mamba-layout/dist/layout.css" />
34
- <script>
35
- window.MAMBA_LAYOUT_CONFIG = {
36
- setting: {
37
- title: "Mamba",
38
- menus: [],
39
- accountMenu: [],
40
- appList: [],
41
- user: null
42
- }
43
- };
44
- </script>
45
- <mamba-layout></mamba-layout>
46
- <script src="./node_modules/mamba-layout/dist/layout.global.js"></script>
47
- ```
1
+ # mamba-layout
2
+
3
+ Shared Mamba Vue layout shell, styles, locale helpers, and a standalone browser layout build.
4
+
5
+ ### Quick Start
6
+
7
+ ```html
8
+ <!doctype html>
9
+ <html lang="zh-CN">
10
+ <head>
11
+ <meta charset="UTF-8" />
12
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
13
+ <title>My App</title>
14
+ <link type="text/css" rel="stylesheet" href="https://at.alicdn.com/t/c/font_4614982_ta3fsffdp7.css" />
15
+ <link rel="stylesheet" href="./node_modules/mamba-layout/dist/layout.css" />
16
+ <style>
17
+ html, body, mamba-layout {
18
+ width: 100%;
19
+ height: 100%;
20
+ margin: 0;
21
+ }
22
+ mamba-layout {
23
+ display: block;
24
+ }
25
+ </style>
26
+ </head>
27
+ <body>
28
+ <mamba-layout>
29
+ <div class="demo-content">
30
+ <h1>Hello World</h1>
31
+ <p>Your content goes here</p>
32
+ </div>
33
+ </mamba-layout>
34
+ <script src="https://cdn.jsdelivr.net/npm/mamba-layout@latest/dist/layout.global.js"></script>
35
+ </body>
36
+ </html>
37
+ ```
38
+
39
+ ### Dark Mode CSS
40
+
41
+ The layout uses CSS variables that automatically adapt to dark mode. When dark mode is active, the following variables change:
42
+
43
+ ```css
44
+ /* Light mode (default) */
45
+ :root {
46
+ --ui-bg-page: #ffffff;
47
+ --ui-bg-card: #ffffff;
48
+ --ui-text-primary: #303133;
49
+ --ui-text-secondary: #606266;
50
+ --ui-border-default: #dcdfe6;
51
+ }
52
+
53
+ /* Dark mode (automatically applied when theme="dark") */
54
+ :root.dark {
55
+ --ui-bg-page: #1a1a1a;
56
+ --ui-bg-card: #2a2a2a;
57
+ --ui-text-primary: #e5e5e5;
58
+ --ui-text-secondary: #a0a0a0;
59
+ --ui-border-default: #404040;
60
+ }
61
+ ```
62
+
63
+ To customize dark mode colors for your content:
64
+
65
+ ```css
66
+ /* Your custom dark mode styles */
67
+ :root.dark {
68
+ --ui-bg-page: #0f0f0f; /* Custom dark background */
69
+ --ui-bg-card: #1f1f1f; /* Custom dark card */
70
+ --ui-text-primary: #ffffff; /* Custom text color */
71
+ --ui-text-secondary: #b0b0b0; /* Custom secondary text */
72
+ }
73
+ ```
74
+
75
+ ### Available CSS Variables
76
+
77
+ ```css
78
+ /* Background colors */
79
+ --ui-bg-page /* Page background */
80
+ --ui-bg-card /* Card background */
81
+ --ui-bg-muted /* Muted/secondary background */
82
+ --ui-bg-overlay /* Overlay background */
83
+
84
+ /* Text colors */
85
+ --ui-text-primary /* Primary text */
86
+ --ui-text-secondary /* Secondary text */
87
+ --ui-text-disabled /* Disabled text */
88
+
89
+ /* Border colors */
90
+ --ui-border-default /* Default border */
91
+ --ui-border-light /* Light border */
92
+
93
+ /* Other */
94
+ --ui-radius-control /* Border radius for controls */
95
+ --ui-shadow-card /* Card shadow */
96
+ ```
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- .menu-item-icon[data-v-9373691a]{display:inline-flex;align-items:center;justify-content:center;color:currentColor}.menu-item-icon__svg[data-v-9373691a]{display:inline-flex}.menu-item-icon__svg[data-v-9373691a] svg{width:1em;height:1em;display:block;fill:currentColor}.aside-bar[data-v-75424edc]{border-right:1px solid var(--ui-sidebar-border, var(--el-border-color));background:var(--ui-sidebar-bg);color:var(--ui-sidebar-foreground)}.aside-bar__mobile-head[data-v-75424edc]{border-bottom:1px solid var(--ui-sidebar-border, var(--el-border-color))}.aside-bar__close[data-v-75424edc]{color:var(--ui-text-muted)}.app-select[data-v-e8bc4fc6]{display:flex;gap:4px;line-height:1}.app-select__group[data-v-e8bc4fc6]{position:relative;min-height:52px;display:flex;align-items:center}.app-select__group:hover .app-select__link[data-v-e8bc4fc6]:not(.app-select__link--active){color:var(--ui-topnav-foreground);background:var(--ui-topnav-surface)}.app-select__group:hover .app-select__dropdown[data-v-e8bc4fc6]{opacity:1;visibility:visible;transform:translateY(0)}.app-select__link[data-v-e8bc4fc6]{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;height:32px;color:var(--ui-topnav-muted);font-size:13px;font-weight:600;transition:color var(--ui-transition-fast);border-radius:6px}.app-select__link--active[data-v-e8bc4fc6],.app-select__link--active[data-v-e8bc4fc6]:hover{background:var(--ui-topnav-active-bg);color:var(--ui-topnav-active-fg, var(--el-color-primary))}.app-select__dropdown[data-v-e8bc4fc6]{position:absolute;top:calc(100% + 0px);left:0;width:400px;padding:8px;border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-card);background:var(--ui-bg-card, var(--el-bg-color));box-shadow:var(--ui-shadow-pop, var(--el-box-shadow));opacity:0;visibility:hidden;transform:translateY(-5px);transition:opacity var(--ui-transition-fast),visibility var(--ui-transition-fast),transform var(--ui-transition-fast);z-index:20}.app-select__dropdown-item[data-v-e8bc4fc6]{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:var(--ui-radius-control);color:var(--ui-text-primary);transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.app-select__dropdown-item[data-v-e8bc4fc6]:hover{background:var(--ui-bg-muted)}.app-select__dropdown-item--active[data-v-e8bc4fc6]{color:var(--el-color-primary);background:var(--el-color-primary-light-10)}.app-select__dropdown-icon[data-v-e8bc4fc6]{color:var(--ui-text-muted)}.app-select__dropdown-desc[data-v-e8bc4fc6]{font-size:12px;color:var(--ui-text-muted);line-height:1.4;margin-top:2px}.nav-icon-btn[data-v-815200af]{--nav-icon-btn-size: 30px;--nav-icon-btn-padding-x: 12px;--nav-icon-btn-color: var(--ui-topnav-muted);--nav-icon-btn-bg: transparent;--nav-icon-btn-border-color: transparent;--nav-icon-btn-hover-bg: rgba(0, 0, 0, .1);--nav-icon-btn-hover-border-color: var(--nav-icon-btn-border-color);--nav-icon-btn-focus-ring: var(--ui-topnav-foreground);min-width:var(--nav-icon-btn-size);height:var(--nav-icon-btn-size);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 var(--nav-icon-btn-padding-x);border:1px solid var(--nav-icon-btn-border-color);border-radius:var(--ui-radius-control);background:var(--nav-icon-btn-bg);color:var(--nav-icon-btn-color);font-size:16px;line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;box-sizing:border-box;flex-shrink:0;-webkit-user-select:none;user-select:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:background var(--ui-transition-fast),color var(--ui-transition-fast),border-color var(--ui-transition-fast)}.nav-icon-btn[data-v-815200af]:hover{background:var(--nav-icon-btn-hover-bg);color:var(--nav-icon-btn-hover-color);border-color:var(--nav-icon-btn-hover-border-color)}.nav-icon-btn[data-v-815200af]:focus-visible{outline:2px solid var(--nav-icon-btn-focus-ring);outline-offset:2px}.nav-icon-btn[data-v-815200af]:disabled{opacity:.6;cursor:not-allowed}.nav-icon-btn--icon-only[data-v-815200af]{width:var(--nav-icon-btn-size);padding:0}.theme-toggle__label[data-v-5a63bf38]{font-size:12px;line-height:1}.top-language-popover{padding:6px!important;border:1px solid var(--ui-border-default)!important;background:var(--ui-bg-card)!important;box-shadow:var(--ui-shadow-pop)!important}.language-select[data-v-86baf2ab]{flex-shrink:0}.language-select__current[data-v-86baf2ab]{font-size:14px;font-weight:600;line-height:1}.language-select__caret[data-v-86baf2ab]{font-size:12px}.language-select__panel[data-v-86baf2ab]{display:grid;gap:4px}.language-select__option[data-v-86baf2ab]{padding:10px 12px;border-radius:var(--ui-radius-control);cursor:pointer;color:var(--ui-text-primary);transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.language-select__option[data-v-86baf2ab]:hover{background:var(--ui-bg-muted)}.language-select__option--active[data-v-86baf2ab]{color:var(--el-color-primary);background:var(--el-color-primary-light-10)}.mobile-user-popover[data-v-cb126c27]{display:grid;gap:4px}.mobile-user-popover__item[data-v-cb126c27]{display:flex;align-items:center;gap:8px;padding:12px 14px;border-radius:var(--ui-radius-control);color:var(--ui-text-primary);cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.mobile-user-popover__item[data-v-cb126c27]:hover{background:var(--ui-bg-muted)}.mobile-user-popover__item--danger[data-v-cb126c27]{color:var(--el-color-danger)}.mobile-user-popover__divider[data-v-cb126c27]{height:1px;background:var(--ui-border-default);margin:2px 0}.header-right-mobile[data-v-e2e035b7]{--nav-icon-btn-size: 40px;display:flex;align-items:center;gap:8px;padding-right:0;min-width:0}.header-right-mobile[data-v-e2e035b7] .nav-icon-btn{--nav-icon-btn-size: 40px;--nav-icon-btn-color: var(--ui-topnav-foreground);--nav-icon-btn-bg: var(--ui-topnav-surface);--nav-icon-btn-border-color: var(--ui-topnav-border);--nav-icon-btn-hover-bg: var(--ui-topnav-hover);--nav-icon-btn-hover-color: var(--ui-topnav-foreground);--nav-icon-btn-hover-border-color: var(--ui-topnav-border)}.header-right-mobile__action[data-v-e2e035b7]{--nav-icon-btn-color: var(--ui-topnav-foreground);--nav-icon-btn-bg: var(--ui-topnav-surface);--nav-icon-btn-border-color: var(--ui-topnav-border);--nav-icon-btn-hover-bg: var(--ui-topnav-hover);--nav-icon-btn-hover-color: var(--ui-topnav-foreground);--nav-icon-btn-hover-border-color: var(--ui-topnav-border)}@media(max-width:374px){.header-right-mobile[data-v-e2e035b7]{--nav-icon-btn-size: 36px;gap:6px}.header-right-mobile[data-v-e2e035b7] .nav-icon-btn{--nav-icon-btn-size: 36px}}.mobile-menu-toggle[data-v-00764a28]{width:40px;height:40px;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;border:1px solid var(--ui-topnav-border);border-radius:var(--ui-radius-control);background:var(--ui-topnav-surface);color:var(--ui-topnav-foreground);cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.mobile-menu-toggle[data-v-00764a28]:hover{background:var(--ui-topnav-hover)}.mobile-menu-toggle[data-v-00764a28]:focus-visible{outline:2px solid var(--ui-topnav-foreground);outline-offset:2px}.mobile-menu-toggle__icon[data-v-00764a28]{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;font-size:18px}.user-avatar[data-v-69654729]{--el-avatar-bg-color: transparent}.user-avatar--fallback[data-v-69654729]{--el-avatar-bg-color: var(--ui-avatar-bg, var(--el-color-primary));color:var(--ui-text-on-brand)}.user-avatar__fallback[data-v-69654729]{color:inherit;font-weight:600;line-height:1;-webkit-user-select:none;user-select:none}.user-avatar__icon[data-v-69654729]{color:inherit;font-size:1em}.layout-breadcrumb[data-v-1589a248]{display:flex;min-width:0;align-items:center;gap:6px;color:var(--ui-text-placeholder);line-height:1.4}.layout-breadcrumb__back[data-v-1589a248]{display:inline-flex;width:24px;height:24px;flex:0 0 auto;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--ui-radius-sm);padding:0;background:transparent;color:var(--ui-text-placeholder);cursor:pointer;font:inherit;transition:background-color var(--ui-transition-fast),border-color var(--ui-transition-fast),color var(--ui-transition-fast)}.layout-breadcrumb__back[data-v-1589a248]:hover{background:var(--ui-bg-muted);color:var(--ui-text-muted)}.layout-breadcrumb__back[data-v-1589a248]:focus-visible{outline:2px solid var(--ui-ring);outline-offset:2px}.layout-breadcrumb__separator[data-v-1589a248]{flex:0 0 auto;color:var(--ui-text-disabled);font-size:11px}.layout-breadcrumb__link[data-v-1589a248],.layout-breadcrumb__current[data-v-1589a248]{display:inline-block;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layout-breadcrumb__link[data-v-1589a248]{border:0;padding:0;background:transparent;color:var(--ui-text-placeholder);cursor:pointer;font:inherit;transition:color var(--ui-transition-fast)}.layout-breadcrumb__link[data-v-1589a248]:hover{color:var(--ui-text-muted)}.layout-breadcrumb__link[data-v-1589a248]:focus-visible{outline:2px solid var(--ui-ring);outline-offset:2px;border-radius:var(--ui-radius-sm)}.layout-breadcrumb__current[data-v-1589a248]{color:var(--ui-text-muted);font-weight:500}@media(max-width:768px){.layout-breadcrumb__link[data-v-1589a248],.layout-breadcrumb__current[data-v-1589a248]{max-width:44vw}}.top-timezone-popover{padding:6px!important;border:1px solid var(--ui-border-default)!important;background:var(--ui-bg-card)!important;box-shadow:var(--ui-shadow-pop)!important}.timezone-select[data-v-00b7fb6f]{flex-shrink:0}.timezone-select__current[data-v-00b7fb6f]{max-width:132px;overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:600;line-height:1}.timezone-select__caret[data-v-00b7fb6f]{font-size:12px}.timezone-select__panel[data-v-00b7fb6f]{display:grid;gap:4px;max-height:min(360px,70vh);overflow-y:auto}.timezone-select__option[data-v-00b7fb6f]{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border:0;border-radius:var(--ui-radius-control);background:transparent;color:var(--ui-text-primary);text-align:left;cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.timezone-select__option[data-v-00b7fb6f]:hover{background:var(--ui-bg-muted)}.timezone-select__name[data-v-00b7fb6f]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timezone-select__offset[data-v-00b7fb6f]{color:var(--ui-text-muted);font-size:12px;white-space:nowrap}.timezone-select__option--active[data-v-00b7fb6f]{color:var(--el-color-primary);background:var(--el-color-primary-light-10)}.timezone-select__option--active .timezone-select__offset[data-v-00b7fb6f]{color:var(--el-color-primary)}.top-userinfo-popover{padding:8px!important;border:1px solid var(--ui-border-default)!important;background:var(--ui-bg-card)!important;border-radius:var(--ui-radius-card)!important;box-shadow:var(--ui-shadow-pop)!important}.user-info__trigger[data-v-39b88d52]{display:inline-flex;width:28px;height:28px;overflow:hidden;border-radius:var(--ui-radius-pill);background:var(--ui-avatar-bg, var(--el-color-primary));border:1px solid var(--ui-topnav-border);align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--ui-text-on-brand);cursor:pointer;flex-shrink:0;-webkit-user-select:none;user-select:none;transition:border-color var(--ui-transition-fast),filter var(--ui-transition-fast)}.user-info__trigger[data-v-39b88d52]:hover{border-color:var(--ui-topnav-foreground);filter:brightness(1.05)}.user-info__panel[data-v-39b88d52]{display:grid;gap:2px}.user-info__profile[data-v-39b88d52]{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;align-items:center;padding:8px 8px 10px}.user-info__profile-avatar[data-v-39b88d52]{width:44px;height:44px;overflow:hidden;border-radius:var(--ui-radius-pill);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--ui-avatar-bg, var(--el-color-primary));color:var(--ui-text-on-brand);font-size:16px;font-weight:700}.user-info__profile-main[data-v-39b88d52]{min-width:0}.user-info__display-name[data-v-39b88d52]{color:var(--ui-text-primary);font-size:14px;font-weight:700;line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-info__username[data-v-39b88d52]{margin-top:2px;color:var(--ui-text-muted);font-size:12px;line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-info__meta[data-v-39b88d52]{display:grid;gap:2px;padding:8px;margin-bottom:2px;border-radius:var(--ui-radius-control);background:var(--ui-bg-muted)}.user-info__meta-row[data-v-39b88d52]{display:grid;grid-template-columns:64px minmax(0,1fr);gap:8px;align-items:center;min-height:24px;font-size:12px;line-height:18px}.user-info__meta-label[data-v-39b88d52]{color:var(--ui-text-muted)}.user-info__meta-value[data-v-39b88d52]{min-width:0;color:var(--ui-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.user-info__item[data-v-39b88d52]{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--ui-radius-control);color:var(--ui-text-primary);font-size:12px;cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.user-info__item[data-v-39b88d52]:hover{background:var(--ui-bg-muted)}.user-info__item--danger[data-v-39b88d52]{color:var(--el-color-danger)}.user-info__divider[data-v-39b88d52]{height:1px;background:var(--ui-border-soft);margin:4px 0}.header-right[data-v-a0481d3b]{display:flex;align-items:center;gap:8px;font-size:13px;--nav-icon-btn-size: 30px}.header-right__login[data-v-a0481d3b]{height:30px;line-height:30px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 12px;border-radius:var(--ui-radius-control);color:var(--ui-topnav-foreground);background:linear-gradient(135deg,var(--el-color-primary) 0%,var(--ui-topnav-accent) 100%);box-shadow:0 8px 18px rgba(var(--el-color-primary-rgb),.24);transition:background var(--ui-transition-fast),color var(--ui-transition-fast),border-color var(--ui-transition-fast)}.header-right__login[data-v-a0481d3b]:hover{filter:brightness(1.05)}.header-bar[data-v-4f914a75]{min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 12px;background:var(--ui-topnav-bg);color:var(--ui-topnav-muted)}.header-bar__left[data-v-4f914a75],.header-bar__right[data-v-4f914a75]{display:flex;align-items:center;min-width:0}.header-bar__left[data-v-4f914a75]{gap:12px;flex:1}.header-bar__right[data-v-4f914a75]{flex-shrink:0}.header-bar__logo-wrap[data-v-4f914a75]{display:flex;align-items:center;min-width:0}.header-bar__logo-link[data-v-4f914a75]{display:inline-flex;align-items:center;justify-content:center;min-height:40px;color:inherit}.header-bar__divider[data-v-4f914a75]{width:1px;height:18px;background:var(--ui-topnav-border)}[header-bar][data-v-4f914a75] .el-image .el-image__inner{width:auto;display:block}.aside-user-mobile[data-v-56c059ce]{width:100%;position:relative;display:flex;align-items:center;gap:8px;padding:16px;border-top:1px solid var(--ui-sidebar-border);color:var(--ui-sidebar-foreground);cursor:pointer}.aside-user-mobile__icon[data-v-56c059ce]{color:var(--ui-text-muted)}.aside-bar-mobile[data-v-d944cb85]{width:min(86vw,320px);max-width:calc(100vw - 32px);height:100vh;height:100dvh;z-index:240;border-right:1px solid var(--ui-sidebar-border);background:var(--ui-sidebar-bg);color:var(--ui-sidebar-foreground);box-shadow:var(--ui-shadow-pop);will-change:transform}.aside-bar-mobile__head[data-v-d944cb85]{min-height:var(--layout-mobile-header-height, 56px);padding:10px 12px;border-bottom:1px solid var(--ui-sidebar-border);flex-shrink:0}.aside-bar-mobile__close[data-v-d944cb85]{width:36px;height:36px;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;border:1px solid var(--ui-sidebar-border);border-radius:var(--ui-radius-control);background:var(--ui-sidebar-accent);color:var(--ui-text-muted);cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast),border-color var(--ui-transition-fast)}.aside-bar-mobile__close[data-v-d944cb85]:hover{background:var(--ui-sidebar-hover-bg);color:var(--ui-sidebar-foreground)}.aside-bar-mobile[data-v-d944cb85] .el-scrollbar{flex:1 1 auto;min-height:0}.layout-shell[data-v-5e5f3e6c]{height:100vh;--layout-mobile-header-height: 56px;background:var(--ui-topnav-bg);color:var(--ui-text-primary);overflow:hidden}.layout-shell__body[data-v-5e5f3e6c]{border-radius:var(--ui-body-radius);background:var(--ui-bg-page)}.layout-shell__content[data-v-5e5f3e6c]{background:var(--ui-bg-page)}.layout-shell__overlay[data-v-5e5f3e6c]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:230;background:var(--ui-bg-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);touch-action:none}.layout-page-view[data-v-5e5f3e6c]{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-width:0;min-height:0;background:var(--ui-bg-page);contain:paint}.layout-overlay-enter-active[data-v-5e5f3e6c],.layout-overlay-leave-active[data-v-5e5f3e6c]{transition:opacity var(--ui-transition-base)}.layout-overlay-enter-from[data-v-5e5f3e6c],.layout-overlay-leave-to[data-v-5e5f3e6c]{opacity:0}.layout-page-enter-active[data-v-5e5f3e6c],.layout-page-leave-active[data-v-5e5f3e6c]{transition:opacity var(--ui-transition-base),transform var(--ui-transition-base);will-change:opacity,transform}.layout-page-enter-from[data-v-5e5f3e6c]{opacity:0;transform:translate3d(8px,0,0)}.layout-page-leave-to[data-v-5e5f3e6c]{opacity:0;transform:translate3d(-6px,0,0)}@media(prefers-reduced-motion:reduce){.layout-overlay-enter-active[data-v-5e5f3e6c],.layout-overlay-leave-active[data-v-5e5f3e6c],.layout-page-enter-active[data-v-5e5f3e6c],.layout-page-leave-active[data-v-5e5f3e6c]{transition:none}.layout-page-enter-from[data-v-5e5f3e6c],.layout-page-leave-to[data-v-5e5f3e6c]{opacity:1;transform:none}}@media(max-width:1023px){.layout-shell[data-v-5e5f3e6c]{background:var(--ui-bg-page)}.layout-shell__body[data-v-5e5f3e6c]{border-radius:0}.layout-page-view[data-v-5e5f3e6c]{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.layout-page-enter-from[data-v-5e5f3e6c]{transform:translate3d(0,6px,0)}.layout-page-leave-to[data-v-5e5f3e6c]{transform:translate3d(0,-4px,0)}}
1
+ .menu-item-icon[data-v-ed060390]{display:inline-flex;align-items:center;justify-content:center;color:currentColor}.menu-item-icon__svg[data-v-ed060390]{display:inline-flex}.menu-item-icon__svg[data-v-ed060390] svg{width:1em;height:1em;display:block;fill:currentColor}.aside-bar[data-v-4ebd3eba]{border-right:1px solid var(--ui-sidebar-border, var(--el-border-color));background:var(--ui-sidebar-bg);color:var(--ui-sidebar-foreground)}.aside-bar__mobile-head[data-v-4ebd3eba]{border-bottom:1px solid var(--ui-sidebar-border, var(--el-border-color))}.aside-bar__close[data-v-4ebd3eba]{color:var(--ui-text-muted)}.app-select[data-v-edbb0fe6]{display:flex;gap:4px;line-height:1}.app-select__group[data-v-edbb0fe6]{position:relative;min-height:52px;display:flex;align-items:center}.app-select__group:hover .app-select__link[data-v-edbb0fe6]:not(.app-select__link--active){color:var(--ui-topnav-foreground);background:var(--ui-topnav-surface)}.app-select__group:hover .app-select__dropdown[data-v-edbb0fe6]{opacity:1;visibility:visible;transform:translateY(0)}.app-select__link[data-v-edbb0fe6]{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;height:32px;color:var(--ui-topnav-muted);font-size:13px;font-weight:600;transition:color var(--ui-transition-fast);border-radius:6px}.app-select__link--active[data-v-edbb0fe6],.app-select__link--active[data-v-edbb0fe6]:hover{background:var(--ui-topnav-active-bg);color:var(--ui-topnav-active-fg, var(--el-color-primary))}.app-select__dropdown[data-v-edbb0fe6]{position:absolute;top:calc(100% + 0px);left:0;width:400px;padding:8px;border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-card);background:var(--ui-bg-card, var(--el-bg-color));box-shadow:var(--ui-shadow-pop, var(--el-box-shadow));opacity:0;visibility:hidden;transform:translateY(-5px);transition:opacity var(--ui-transition-fast),visibility var(--ui-transition-fast),transform var(--ui-transition-fast);z-index:20}.app-select__dropdown-item[data-v-edbb0fe6]{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:var(--ui-radius-control);color:var(--ui-text-primary);transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.app-select__dropdown-item[data-v-edbb0fe6]:hover{background:var(--ui-bg-muted)}.app-select__dropdown-item--active[data-v-edbb0fe6]{color:var(--el-color-primary);background:var(--el-color-primary-light-10)}.app-select__dropdown-icon[data-v-edbb0fe6]{color:var(--ui-text-muted)}.app-select__dropdown-desc[data-v-edbb0fe6]{font-size:12px;color:var(--ui-text-muted);line-height:1.4;margin-top:2px}.nav-icon-btn[data-v-824bbddc]{--nav-icon-btn-size: 30px;--nav-icon-btn-padding-x: 12px;--nav-icon-btn-color: var(--ui-topnav-muted);--nav-icon-btn-bg: transparent;--nav-icon-btn-border-color: transparent;--nav-icon-btn-hover-bg: rgba(0, 0, 0, .1);--nav-icon-btn-hover-border-color: var(--nav-icon-btn-border-color);--nav-icon-btn-focus-ring: var(--ui-topnav-foreground);min-width:var(--nav-icon-btn-size);height:var(--nav-icon-btn-size);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 var(--nav-icon-btn-padding-x);border:1px solid var(--nav-icon-btn-border-color);border-radius:var(--ui-radius-control);background:var(--nav-icon-btn-bg);color:var(--nav-icon-btn-color);font-size:16px;line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;box-sizing:border-box;flex-shrink:0;-webkit-user-select:none;user-select:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:background var(--ui-transition-fast),color var(--ui-transition-fast),border-color var(--ui-transition-fast)}.nav-icon-btn[data-v-824bbddc]:hover{background:var(--nav-icon-btn-hover-bg);color:var(--nav-icon-btn-hover-color);border-color:var(--nav-icon-btn-hover-border-color)}.nav-icon-btn[data-v-824bbddc]:focus-visible{outline:2px solid var(--nav-icon-btn-focus-ring);outline-offset:2px}.nav-icon-btn[data-v-824bbddc]:disabled{opacity:.6;cursor:not-allowed}.nav-icon-btn--icon-only[data-v-824bbddc]{width:var(--nav-icon-btn-size);padding:0}.theme-toggle__label[data-v-e6ea60b7]{font-size:12px;line-height:1}.top-language-popover{padding:6px!important;border:1px solid var(--ui-border-default)!important;background:var(--ui-bg-card)!important;box-shadow:var(--ui-shadow-pop)!important}.language-select[data-v-48306ad1]{flex-shrink:0}.language-select__current[data-v-48306ad1]{font-size:14px;font-weight:600;line-height:1}.language-select__caret[data-v-48306ad1]{font-size:12px}.language-select__panel[data-v-48306ad1]{display:grid;gap:4px}.language-select__option[data-v-48306ad1]{padding:10px 12px;border-radius:var(--ui-radius-control);cursor:pointer;color:var(--ui-text-primary);transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.language-select__option[data-v-48306ad1]:hover{background:var(--ui-bg-muted)}.language-select__option--active[data-v-48306ad1]{color:var(--el-color-primary);background:var(--el-color-primary-light-10)}.mobile-user-popover[data-v-87e082b1]{display:grid;gap:4px}.mobile-user-popover__item[data-v-87e082b1]{display:flex;align-items:center;gap:8px;padding:12px 14px;border-radius:var(--ui-radius-control);color:var(--ui-text-primary);cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.mobile-user-popover__item[data-v-87e082b1]:hover{background:var(--ui-bg-muted)}.mobile-user-popover__item--danger[data-v-87e082b1]{color:var(--el-color-danger)}.mobile-user-popover__divider[data-v-87e082b1]{height:1px;background:var(--ui-border-default);margin:2px 0}.header-right-mobile[data-v-48792b0a]{--nav-icon-btn-size: 40px;display:flex;align-items:center;gap:8px;padding-right:0;min-width:0}.header-right-mobile[data-v-48792b0a] .nav-icon-btn{--nav-icon-btn-size: 40px;--nav-icon-btn-color: var(--ui-topnav-foreground);--nav-icon-btn-bg: var(--ui-topnav-surface);--nav-icon-btn-border-color: var(--ui-topnav-border);--nav-icon-btn-hover-bg: var(--ui-topnav-hover);--nav-icon-btn-hover-color: var(--ui-topnav-foreground);--nav-icon-btn-hover-border-color: var(--ui-topnav-border)}.header-right-mobile__action[data-v-48792b0a]{--nav-icon-btn-color: var(--ui-topnav-foreground);--nav-icon-btn-bg: var(--ui-topnav-surface);--nav-icon-btn-border-color: var(--ui-topnav-border);--nav-icon-btn-hover-bg: var(--ui-topnav-hover);--nav-icon-btn-hover-color: var(--ui-topnav-foreground);--nav-icon-btn-hover-border-color: var(--ui-topnav-border)}@media(max-width:374px){.header-right-mobile[data-v-48792b0a]{--nav-icon-btn-size: 36px;gap:6px}.header-right-mobile[data-v-48792b0a] .nav-icon-btn{--nav-icon-btn-size: 36px}}.mobile-menu-toggle[data-v-b1a4f38a]{width:40px;height:40px;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;border:1px solid var(--ui-topnav-border);border-radius:var(--ui-radius-control);background:var(--ui-topnav-surface);color:var(--ui-topnav-foreground);cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.mobile-menu-toggle[data-v-b1a4f38a]:hover{background:var(--ui-topnav-hover)}.mobile-menu-toggle[data-v-b1a4f38a]:focus-visible{outline:2px solid var(--ui-topnav-foreground);outline-offset:2px}.mobile-menu-toggle__icon[data-v-b1a4f38a]{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;font-size:18px}.user-avatar[data-v-50be58a7]{--el-avatar-bg-color: transparent}.user-avatar--fallback[data-v-50be58a7]{--el-avatar-bg-color: var(--ui-avatar-bg, var(--el-color-primary));color:var(--ui-text-on-brand)}.user-avatar__fallback[data-v-50be58a7]{color:inherit;font-weight:600;line-height:1;-webkit-user-select:none;user-select:none}.user-avatar__icon[data-v-50be58a7]{color:inherit;font-size:1em}.top-timezone-popover{padding:6px!important;border:1px solid var(--ui-border-default)!important;background:var(--ui-bg-card)!important;box-shadow:var(--ui-shadow-pop)!important}.timezone-select[data-v-e62f5f2d]{flex-shrink:0}.timezone-select__current[data-v-e62f5f2d]{max-width:132px;overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:600;line-height:1}.timezone-select__caret[data-v-e62f5f2d]{font-size:12px}.timezone-select__panel[data-v-e62f5f2d]{display:grid;gap:4px;max-height:min(360px,70vh);overflow-y:auto}.timezone-select__option[data-v-e62f5f2d]{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border:0;border-radius:var(--ui-radius-control);background:transparent;color:var(--ui-text-primary);text-align:left;cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.timezone-select__option[data-v-e62f5f2d]:hover{background:var(--ui-bg-muted)}.timezone-select__name[data-v-e62f5f2d]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timezone-select__offset[data-v-e62f5f2d]{color:var(--ui-text-muted);font-size:12px;white-space:nowrap}.timezone-select__option--active[data-v-e62f5f2d]{color:var(--el-color-primary);background:var(--el-color-primary-light-10)}.timezone-select__option--active .timezone-select__offset[data-v-e62f5f2d]{color:var(--el-color-primary)}.top-userinfo-popover{padding:8px!important;border:1px solid var(--ui-border-default)!important;background:var(--ui-bg-card)!important;border-radius:var(--ui-radius-card)!important;box-shadow:var(--ui-shadow-pop)!important}.user-info__trigger[data-v-ac052463]{display:inline-flex;width:28px;height:28px;overflow:hidden;border-radius:var(--ui-radius-pill);background:var(--ui-avatar-bg, var(--el-color-primary));border:1px solid var(--ui-topnav-border);align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--ui-text-on-brand);cursor:pointer;flex-shrink:0;-webkit-user-select:none;user-select:none;transition:border-color var(--ui-transition-fast),filter var(--ui-transition-fast)}.user-info__trigger[data-v-ac052463]:hover{border-color:var(--ui-topnav-foreground);filter:brightness(1.05)}.user-info__panel[data-v-ac052463]{display:grid;gap:2px}.user-info__profile[data-v-ac052463]{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;align-items:center;padding:8px 8px 10px}.user-info__profile-avatar[data-v-ac052463]{width:44px;height:44px;overflow:hidden;border-radius:var(--ui-radius-pill);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--ui-avatar-bg, var(--el-color-primary));color:var(--ui-text-on-brand);font-size:16px;font-weight:700}.user-info__profile-main[data-v-ac052463]{min-width:0}.user-info__display-name[data-v-ac052463]{color:var(--ui-text-primary);font-size:14px;font-weight:700;line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-info__username[data-v-ac052463]{margin-top:2px;color:var(--ui-text-muted);font-size:12px;line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-info__meta[data-v-ac052463]{display:grid;gap:2px;padding:8px;margin-bottom:2px;border-radius:var(--ui-radius-control);background:var(--ui-bg-muted)}.user-info__meta-row[data-v-ac052463]{display:grid;grid-template-columns:64px minmax(0,1fr);gap:8px;align-items:center;min-height:24px;font-size:12px;line-height:18px}.user-info__meta-label[data-v-ac052463]{color:var(--ui-text-muted)}.user-info__meta-value[data-v-ac052463]{min-width:0;color:var(--ui-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.user-info__item[data-v-ac052463]{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--ui-radius-control);color:var(--ui-text-primary);font-size:12px;cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.user-info__item[data-v-ac052463]:hover{background:var(--ui-bg-muted)}.user-info__item--danger[data-v-ac052463]{color:var(--el-color-danger)}.user-info__divider[data-v-ac052463]{height:1px;background:var(--ui-border-soft);margin:4px 0}.header-right[data-v-3c5e16a6]{display:flex;align-items:center;gap:8px;font-size:13px;--nav-icon-btn-size: 30px}.header-right__login[data-v-3c5e16a6]{height:30px;line-height:30px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 12px;border-radius:var(--ui-radius-control);color:var(--ui-topnav-foreground);background:linear-gradient(135deg,var(--el-color-primary) 0%,var(--ui-topnav-accent) 100%);box-shadow:0 8px 18px rgba(var(--el-color-primary-rgb),.24);transition:background var(--ui-transition-fast),color var(--ui-transition-fast),border-color var(--ui-transition-fast)}.header-right__login[data-v-3c5e16a6]:hover{filter:brightness(1.05)}.header-bar[data-v-0ce1ab70]{min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 12px;background:var(--ui-topnav-bg);color:var(--ui-topnav-muted)}.header-bar__left[data-v-0ce1ab70],.header-bar__right[data-v-0ce1ab70]{display:flex;align-items:center;min-width:0}.header-bar__left[data-v-0ce1ab70]{gap:12px;flex:1}.header-bar__right[data-v-0ce1ab70]{flex-shrink:0}.header-bar__logo-wrap[data-v-0ce1ab70]{display:flex;align-items:center;min-width:0}.header-bar__logo-link[data-v-0ce1ab70]{display:inline-flex;align-items:center;justify-content:center;min-height:40px;color:inherit}.header-bar__divider[data-v-0ce1ab70]{width:1px;height:18px;background:var(--ui-topnav-border)}[header-bar][data-v-0ce1ab70] .el-image .el-image__inner{width:auto;display:block}.aside-user-mobile[data-v-c56964a5]{width:100%;position:relative;display:flex;align-items:center;gap:8px;padding:16px;border-top:1px solid var(--ui-sidebar-border);color:var(--ui-sidebar-foreground);cursor:pointer}.aside-user-mobile__icon[data-v-c56964a5]{color:var(--ui-text-muted)}.aside-bar-mobile[data-v-eddacff2]{width:min(86vw,320px);max-width:calc(100vw - 32px);height:100vh;height:100dvh;z-index:240;border-right:1px solid var(--ui-sidebar-border);background:var(--ui-sidebar-bg);color:var(--ui-sidebar-foreground);box-shadow:var(--ui-shadow-pop);will-change:transform}.aside-bar-mobile__head[data-v-eddacff2]{min-height:var(--layout-mobile-header-height, 56px);padding:10px 12px;border-bottom:1px solid var(--ui-sidebar-border);flex-shrink:0}.aside-bar-mobile__close[data-v-eddacff2]{width:36px;height:36px;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;border:1px solid var(--ui-sidebar-border);border-radius:var(--ui-radius-control);background:var(--ui-sidebar-accent);color:var(--ui-text-muted);cursor:pointer;transition:background var(--ui-transition-fast),color var(--ui-transition-fast),border-color var(--ui-transition-fast)}.aside-bar-mobile__close[data-v-eddacff2]:hover{background:var(--ui-sidebar-hover-bg);color:var(--ui-sidebar-foreground)}.aside-bar-mobile[data-v-eddacff2] .el-scrollbar{flex:1 1 auto;min-height:0}.layout-shell[data-v-474b62ee]{height:100vh;--layout-mobile-header-height: 56px;background:var(--ui-topnav-bg);color:var(--ui-text-primary);overflow:hidden}.layout-shell__body[data-v-474b62ee]{border-radius:var(--ui-body-radius);background:var(--ui-bg-page)}.layout-shell__content[data-v-474b62ee]{background:var(--ui-bg-page)}.layout-shell__overlay[data-v-474b62ee]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:230;background:var(--ui-bg-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);touch-action:none}.layout-page-view[data-v-474b62ee]{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-width:0;min-height:0;background:var(--ui-bg-page);contain:paint}.layout-overlay-enter-active[data-v-474b62ee],.layout-overlay-leave-active[data-v-474b62ee]{transition:opacity var(--ui-transition-base)}.layout-overlay-enter-from[data-v-474b62ee],.layout-overlay-leave-to[data-v-474b62ee]{opacity:0}.layout-page-enter-active[data-v-474b62ee],.layout-page-leave-active[data-v-474b62ee]{transition:opacity var(--ui-transition-base),transform var(--ui-transition-base);will-change:opacity,transform}.layout-page-enter-from[data-v-474b62ee]{opacity:0;transform:translate3d(8px,0,0)}.layout-page-leave-to[data-v-474b62ee]{opacity:0;transform:translate3d(-6px,0,0)}@media(prefers-reduced-motion:reduce){.layout-overlay-enter-active[data-v-474b62ee],.layout-overlay-leave-active[data-v-474b62ee],.layout-page-enter-active[data-v-474b62ee],.layout-page-leave-active[data-v-474b62ee]{transition:none}.layout-page-enter-from[data-v-474b62ee],.layout-page-leave-to[data-v-474b62ee]{opacity:1;transform:none}}@media(max-width:1023px){.layout-shell[data-v-474b62ee]{background:var(--ui-bg-page)}.layout-shell__body[data-v-474b62ee]{border-radius:0}.layout-page-view[data-v-474b62ee]{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.layout-page-enter-from[data-v-474b62ee]{transform:translate3d(0,6px,0)}.layout-page-leave-to[data-v-474b62ee]{transform:translate3d(0,-4px,0)}}