@robot-admin/layout 2.0.1 → 2.0.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.
package/README.md CHANGED
@@ -9,8 +9,7 @@
9
9
  - 🧩 **开箱即用** - 提供完整的设置抽屉 UI 组件
10
10
  - ⚙️ **丰富配置** - 面包屑、标签页、页脚等多维度配置
11
11
  - 🎨 **样式灵活** - 支持 SCSS 源文件或编译后 CSS
12
- - 💾 **持久化存储** - 自动保存用户配置偏好
13
- - 🔧 **高度可配置** - 灵活的初始化选项
12
+ - **高度可配置** - 灵活的初始化选项
14
13
  - 🚀 **TypeScript** - 完整的类型支持
15
14
 
16
15
  ## 📦 安装
@@ -125,7 +124,7 @@ import "@robot-admin/layout/style.css";
125
124
  <button @click="visible = true">⚙️ 打开设置</button>
126
125
 
127
126
  <!-- 设置抽屉 -->
128
- <SettingsDrawer v-model:show="visible" storage-key="my-app-settings" />
127
+ <SettingsDrawer v-model:show="visible" />
129
128
  </div>
130
129
  </template>
131
130
 
@@ -140,7 +139,6 @@ const visible = ref(false);
140
139
  #### Props
141
140
 
142
141
  - `show` - 控制抽屉显示/隐藏(支持 v-model)
143
- - `storageKey` - localStorage 存储键名(可选,默认 'robot-admin-settings')
144
142
 
145
143
  #### 功能模块
146
144
 
@@ -188,7 +186,6 @@ const useSettingsStore = createSettingsStore({
188
186
  showTagsView: true, // 显示标签页
189
187
  fixedHeader: true, // 固定头部
190
188
  },
191
- storageKey: "my-app-settings", // localStorage 键名
192
189
  onThemeModeChange: async (mode) => {
193
190
  // 主题模式变化回调(同步到 theme store)
194
191
  const themeStore = useThemeStore();
@@ -202,7 +199,6 @@ const useSettingsStore = createSettingsStore({
202
199
  ```typescript
203
200
  interface SettingsStoreOptions {
204
201
  defaults?: Partial<SettingsState>;
205
- storageKey?: string;
206
202
  onThemeModeChange?: (mode: ThemeMode) => void | Promise<void>;
207
203
  }
208
204
  ```
@@ -223,10 +219,10 @@ const settingsStore = useSettingsStore();
223
219
 
224
220
  | 属性 | 类型 | 默认值 | 说明 |
225
221
  | ------------------ | ------------------ | ----------- | ------------------------------ |
226
- | `themeMode` | `ThemeMode` | `'system'` | 主题模式(light/dark/system |
222
+ | `themeMode` | `ThemeMode` | `'light'` | 主题模式(light/dark/auto |
227
223
  | `primaryColor` | `string` | `'#409eff'` | 主题色 |
228
224
  | `borderRadius` | `BorderRadiusSize` | `'medium'` | 圆角大小(small/medium/large) |
229
- | `transitionType` | `TransitionType` | `'fade'` | 页面动画类型 |
225
+ | `transitionType` | `TransitionType` | `'slide'` | 页面动画类型 |
230
226
  | `enableTransition` | `boolean` | `true` | 启用页面动画 |
231
227
 
232
228
  #### 布局设置
@@ -238,21 +234,14 @@ const settingsStore = useSettingsStore();
238
234
  | `showBreadcrumb` | `boolean` | `true` | 显示面包屑 |
239
235
  | `showBreadcrumbIcon` | `boolean` | `true` | 显示面包屑图标 |
240
236
  | `showTagsView` | `boolean` | `true` | 显示标签页 |
241
- | `tagsViewHeight` | `number` | `40` | 标签页高度(px) |
237
+ | `tagsViewHeight` | `number` | `44` | 标签页高度(px) |
242
238
  | `tagsViewStyle` | `TagsViewStyle` | `'default'` | 标签页风格 |
243
- | `showFooter` | `boolean` | `false` | 显示页脚 |
239
+ | `showFooter` | `boolean` | `true` | 显示页脚 |
244
240
  | `sidebarWidth` | `number` | `220` | 侧边栏宽度(px) |
245
241
  | `sidebarCollapsedWidth` | `number` | `64` | 侧边栏折叠宽度(px) |
246
242
  | `headerHeight` | `number` | `56` | 头部高度(px) |
247
243
 
248
- #### 功能设置
249
-
250
- | 属性 | 类型 | 默认值 | 说明 |
251
- | --------------------- | --------- | --------------- | -------- |
252
- | `enableWatermark` | `boolean` | `false` | 启用水印 |
253
- | `watermarkText` | `string` | `'Robot Admin'` | 水印文本 |
254
- | `enableGrayMode` | `boolean` | `false` | 灰色模式 |
255
- | `enableColorWeakMode` | `boolean` | `false` | 色弱模式 |
244
+ | `enableHotkeys` | `boolean` | `true` | 启用快捷键 |
256
245
 
257
246
  #### 计算属性
258
247
 
@@ -298,28 +287,15 @@ settingsStore.resetSettings();
298
287
  settingsStore.updateThemeMode("dark");
299
288
  ```
300
289
 
301
- #### `exportSettings(): string`
290
+ #### `adjustColor(color: string, amount: number): string`
302
291
 
303
- 导出当前配置为 JSON 字符串
292
+ 调整颜色亮度(工具函数)
304
293
 
305
294
  ```typescript
306
- const json = settingsStore.exportSettings();
307
- // 下载或保存...
308
- ```
309
-
310
- #### `importSettings(json: string): boolean`
311
-
312
- 从 JSON 字符串导入配置
295
+ import { adjustColor } from "@robot-admin/layout";
313
296
 
314
- ```typescript
315
- try {
316
- const success = settingsStore.importSettings(jsonString);
317
- if (success) {
318
- console.log("配置导入成功");
319
- }
320
- } catch (error) {
321
- console.error("配置格式错误");
322
- }
297
+ const hoverColor = adjustColor("#409eff", 10); // 变亮
298
+ const pressedColor = adjustColor("#409eff", -10); // 变暗
323
299
  ```
324
300
 
325
301
  ## 📋 常量
@@ -423,7 +399,7 @@ type BorderRadiusSize = "small" | "medium" | "large";
423
399
  type TagsViewStyle = "default" | "card" | "smart";
424
400
 
425
401
  /** 主题模式(继承自 @robot-admin/theme) */
426
- type ThemeMode = "light" | "dark" | "system";
402
+ type ThemeMode = "light" | "dark" | "auto";
427
403
 
428
404
  /** 主题预设 */
429
405
  interface ThemePreset {
@@ -454,11 +430,9 @@ interface SettingsState {
454
430
  sidebarCollapsedWidth: number;
455
431
  headerHeight: number;
456
432
 
457
- // 功能
458
- enableWatermark: boolean;
459
- watermarkText: string;
460
- enableGrayMode: boolean;
461
- enableColorWeakMode: boolean;
433
+ // 高级
434
+ enableHotkeys: boolean;
435
+ version: string;
462
436
  }
463
437
  ```
464
438
 
@@ -567,13 +541,8 @@ export const useSettingsStore = createSettingsStore({
567
541
  primaryColor: "#722ed1",
568
542
  showTagsView: false,
569
543
  fixedHeader: true,
570
- enableWatermark: true,
571
- watermarkText: "My Company",
572
544
  },
573
545
 
574
- // 自定义存储键名
575
- storageKey: "my-company-settings",
576
-
577
546
  // 主题模式变化回调
578
547
  onThemeModeChange: async (mode) => {
579
548
  const themeStore = useThemeStore();
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),a=require("naive-ui"),$=require("pinia"),O=[{name:"拂晓蓝",value:"#409eff"},{name:"薄暮红",value:"#f5222d"},{name:"火山橙",value:"#fa541c"},{name:"日暮黄",value:"#faad14"},{name:"极光绿",value:"#52c41a"},{name:"明青",value:"#13c2c2"},{name:"极客蓝",value:"#2f54eb"},{name:"酱紫",value:"#722ed1"}],D=[{name:"科技蓝",icon:"💙",primaryColor:"#409eff"},{name:"清新绿",icon:"💚",primaryColor:"#52c41a"},{name:"商务灰",icon:"🖤",primaryColor:"#595959"},{name:"活力橙",icon:"🧡",primaryColor:"#fa8c16"},{name:"优雅紫",icon:"💜",primaryColor:"#722ed1"},{name:"经典红",icon:"❤️",primaryColor:"#f5222d"}],z=[{mode:"side",label:"左侧菜单",description:"经典的左侧导航布局",icon:"i-mdi:page-layout-sidebar-left"},{mode:"top",label:"顶部菜单",description:"顶部水平导航布局",icon:"i-mdi:page-layout-header"},{mode:"mix",label:"混合菜单",description:"顶部 + 侧边混合布局",icon:"i-mdi:page-layout-header-sidebar-left"},{mode:"mix-top",label:"顶部混合",description:"侧边优先的混合布局",icon:"i-mdi:page-layout-sidebar-left-header"},{mode:"reverse-horizontal-mix",label:"反转混合",description:"反转的水平混合布局",icon:"i-mdi:page-layout-header-footer"},{mode:"card-layout",label:"卡片布局",description:"卡片式布局风格",icon:"i-mdi:card-outline"}],P={small:"4px",medium:"6px",large:"8px"},W={fade:"fade-transform",slide:"fade-slide",zoom:"fade-zoom",none:""},r={themeMode:"light",primaryColor:"#409eff",borderRadius:"medium",transitionType:"slide",enableTransition:!0,layoutMode:"side",collapsed:!1,fixedHeader:!0,showBreadcrumb:!0,showBreadcrumbIcon:!0,showTagsView:!0,tagsViewHeight:44,tagsViewStyle:"default",showFooter:!0,sidebarWidth:220,sidebarCollapsedWidth:64,headerHeight:56,enableHotkeys:!0,version:"1.0.0"},j=O.map(v=>v.value);function U(v,i){const d=parseInt(v.replace("#",""),16),o=Math.min(255,Math.max(0,(d>>16)+i)),p=Math.min(255,Math.max(0,(d>>8&255)+i)),c=Math.min(255,Math.max(0,(d&255)+i));return`#${(o<<16|p<<8|c).toString(16).padStart(6,"0")}`}function H(v={}){const{defaults:i={},onThemeModeChange:d}=v,o={...r,...i};return $.defineStore("settings",()=>{const p=e.ref(o.themeMode),c=e.ref(o.primaryColor),g=e.ref(o.borderRadius),m=e.ref(o.transitionType),f=e.ref(o.enableTransition),w=e.ref(o.layoutMode),u=e.ref(o.collapsed||!1),S=e.ref(o.fixedHeader),V=e.ref(o.showBreadcrumb),y=e.ref(o.showBreadcrumbIcon),T=e.ref(o.showTagsView),b=e.ref(o.tagsViewHeight),k=e.ref(o.tagsViewStyle),B=e.ref(o.showFooter),x=e.ref(o.sidebarWidth),E=e.ref(o.sidebarCollapsedWidth),C=e.ref(o.headerHeight),R=e.ref(o.enableHotkeys),_=e.ref(o.version),M=e.computed(()=>P[g.value]),s=e.computed(()=>W[m.value]),t=e.computed(()=>f.value&&m.value!=="none"),l=e.computed(()=>({themeMode:p.value,primaryColor:c.value,borderRadius:g.value,transitionType:m.value,enableTransition:f.value,layoutMode:w.value,collapsed:u.value,fixedHeader:S.value,showBreadcrumb:V.value,showBreadcrumbIcon:y.value,showTagsView:T.value,tagsViewHeight:b.value,tagsViewStyle:k.value,showFooter:B.value,sidebarWidth:x.value,sidebarCollapsedWidth:E.value,headerHeight:C.value,enableHotkeys:R.value,version:_.value})),h=()=>{if(typeof document>"u")return;const n=document.documentElement;n.style.setProperty("--primary-color",c.value),n.style.setProperty("--primary-color-hover",U(c.value,10)),n.style.setProperty("--primary-color-pressed",U(c.value,-10)),n.style.setProperty("--border-radius",M.value),n.style.setProperty("--sidebar-width",`${x.value}px`),n.style.setProperty("--sidebar-collapsed-width",`${E.value}px`),n.style.setProperty("--header-height",`${C.value}px`),n.style.setProperty("--tags-view-height",`${b.value}px`)},N=async n=>{c.value=n.primaryColor,n.settings&&(n.settings.borderRadius&&(g.value=n.settings.borderRadius),n.settings.transitionType&&(m.value=n.settings.transitionType),n.settings.showBreadcrumb!==void 0&&(V.value=n.settings.showBreadcrumb),n.settings.showTagsView!==void 0&&(T.value=n.settings.showTagsView),n.settings.tagsViewStyle&&(k.value=n.settings.tagsViewStyle))},I=()=>{p.value=o.themeMode,c.value=o.primaryColor,g.value=o.borderRadius,m.value=o.transitionType,f.value=o.enableTransition,w.value=o.layoutMode,u.value=o.collapsed||!1,S.value=o.fixedHeader,V.value=o.showBreadcrumb,y.value=o.showBreadcrumbIcon,T.value=o.showTagsView,b.value=o.tagsViewHeight,k.value=o.tagsViewStyle,B.value=o.showFooter,x.value=o.sidebarWidth,E.value=o.sidebarCollapsedWidth,C.value=o.headerHeight,R.value=o.enableHotkeys},A=async n=>{p.value=n,d&&await d(n)},F=()=>{u.value=!u.value};return e.watch([c,M,x,E,C,b],()=>{h()},{immediate:!0}),{themeMode:p,primaryColor:c,borderRadius:g,transitionType:m,enableTransition:f,layoutMode:w,collapsed:u,fixedHeader:S,showBreadcrumb:V,showBreadcrumbIcon:y,showTagsView:T,tagsViewHeight:b,tagsViewStyle:k,showFooter:B,sidebarWidth:x,sidebarCollapsedWidth:E,headerHeight:C,enableHotkeys:R,version:_,borderRadiusValue:M,transitionName:s,shouldEnableTransition:t,settingsState:l,syncCSSVariables:h,applyPreset:N,resetSettings:I,updateThemeMode:A,toggleCollapse:F}})}const L=H(),G=["#409eff","#f5222d","#fa541c","#faad14","#52c41a","#13c2c2","#2f54eb","#722ed1"],K=[{label:"左侧菜单(默认)",value:"side",disabled:!1,svg:`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),a=require("naive-ui"),z=require("pinia"),O=[{name:"拂晓蓝",value:"#409eff"},{name:"薄暮红",value:"#f5222d"},{name:"火山橙",value:"#fa541c"},{name:"日暮黄",value:"#faad14"},{name:"极光绿",value:"#52c41a"},{name:"明青",value:"#13c2c2"},{name:"极客蓝",value:"#2f54eb"},{name:"酱紫",value:"#722ed1"}],D=[{name:"科技蓝",icon:"💙",primaryColor:"#409eff"},{name:"清新绿",icon:"💚",primaryColor:"#52c41a"},{name:"商务灰",icon:"🖤",primaryColor:"#595959"},{name:"活力橙",icon:"🧡",primaryColor:"#fa8c16"},{name:"优雅紫",icon:"💜",primaryColor:"#722ed1"},{name:"经典红",icon:"❤️",primaryColor:"#f5222d"}],j=[{mode:"side",label:"左侧菜单",description:"经典的左侧导航布局",icon:"i-mdi:page-layout-sidebar-left"},{mode:"top",label:"顶部菜单",description:"顶部水平导航布局",icon:"i-mdi:page-layout-header"},{mode:"mix",label:"混合菜单",description:"顶部 + 侧边混合布局",icon:"i-mdi:page-layout-header-sidebar-left"},{mode:"mix-top",label:"顶部混合",description:"侧边优先的混合布局",icon:"i-mdi:page-layout-sidebar-left-header"},{mode:"reverse-horizontal-mix",label:"反转混合",description:"反转的水平混合布局",icon:"i-mdi:page-layout-header-footer"},{mode:"card-layout",label:"卡片布局",description:"卡片式布局风格",icon:"i-mdi:card-outline"}],P={small:"4px",medium:"6px",large:"8px"},I={fade:"fade-transform",slide:"fade-slide",zoom:"fade-zoom",none:""},r={themeMode:"light",primaryColor:"#409eff",borderRadius:"medium",transitionType:"slide",enableTransition:!0,layoutMode:"side",collapsed:!1,fixedHeader:!0,showBreadcrumb:!0,showBreadcrumbIcon:!0,showTagsView:!0,tagsViewHeight:44,tagsViewStyle:"default",showFooter:!0,sidebarWidth:220,sidebarCollapsedWidth:64,headerHeight:56,enableHotkeys:!0,version:"2.0.2"},W=O.map(v=>v.value);function H(v,i){const d=parseInt(v.replace("#",""),16),o=Math.min(255,Math.max(0,(d>>16)+i)),p=Math.min(255,Math.max(0,(d>>8&255)+i)),c=Math.min(255,Math.max(0,(d&255)+i));return`#${(o<<16|p<<8|c).toString(16).padStart(6,"0")}`}function U(v={}){const{defaults:i={},onThemeModeChange:d}=v,o={...r,...i};return z.defineStore("settings",()=>{const p=e.ref(o.themeMode),c=e.ref(o.primaryColor),g=e.ref(o.borderRadius),m=e.ref(o.transitionType),f=e.ref(o.enableTransition),w=e.ref(o.layoutMode),u=e.ref(o.collapsed),T=e.ref(o.fixedHeader),V=e.ref(o.showBreadcrumb),y=e.ref(o.showBreadcrumbIcon),S=e.ref(o.showTagsView),b=e.ref(o.tagsViewHeight),k=e.ref(o.tagsViewStyle),B=e.ref(o.showFooter),x=e.ref(o.sidebarWidth),E=e.ref(o.sidebarCollapsedWidth),C=e.ref(o.headerHeight),R=e.ref(o.enableHotkeys),_=e.ref(o.version),M=e.computed(()=>P[g.value]),s=e.computed(()=>I[m.value]),t=e.computed(()=>f.value&&m.value!=="none"),l=e.computed(()=>({themeMode:p.value,primaryColor:c.value,borderRadius:g.value,transitionType:m.value,enableTransition:f.value,layoutMode:w.value,collapsed:u.value,fixedHeader:T.value,showBreadcrumb:V.value,showBreadcrumbIcon:y.value,showTagsView:S.value,tagsViewHeight:b.value,tagsViewStyle:k.value,showFooter:B.value,sidebarWidth:x.value,sidebarCollapsedWidth:E.value,headerHeight:C.value,enableHotkeys:R.value,version:_.value})),h=()=>{if(typeof document>"u")return;const n=document.documentElement;n.style.setProperty("--primary-color",c.value),n.style.setProperty("--primary-color-hover",H(c.value,10)),n.style.setProperty("--primary-color-pressed",H(c.value,-10)),n.style.setProperty("--border-radius",M.value),n.style.setProperty("--sidebar-width",`${x.value}px`),n.style.setProperty("--sidebar-collapsed-width",`${E.value}px`),n.style.setProperty("--header-height",`${C.value}px`),n.style.setProperty("--tags-view-height",`${b.value}px`)},N=async n=>{c.value=n.primaryColor,n.settings&&(n.settings.borderRadius&&(g.value=n.settings.borderRadius),n.settings.transitionType&&(m.value=n.settings.transitionType),n.settings.showBreadcrumb!==void 0&&(V.value=n.settings.showBreadcrumb),n.settings.showTagsView!==void 0&&(S.value=n.settings.showTagsView),n.settings.tagsViewStyle&&(k.value=n.settings.tagsViewStyle))},A=()=>{p.value=o.themeMode,c.value=o.primaryColor,g.value=o.borderRadius,m.value=o.transitionType,f.value=o.enableTransition,w.value=o.layoutMode,u.value=o.collapsed,T.value=o.fixedHeader,V.value=o.showBreadcrumb,y.value=o.showBreadcrumbIcon,S.value=o.showTagsView,b.value=o.tagsViewHeight,k.value=o.tagsViewStyle,B.value=o.showFooter,x.value=o.sidebarWidth,E.value=o.sidebarCollapsedWidth,C.value=o.headerHeight,R.value=o.enableHotkeys},F=async n=>{p.value=n,d&&await d(n)},$=()=>{u.value=!u.value};return e.watch([c,M,x,E,C,b],()=>{h()},{immediate:!0}),{themeMode:p,primaryColor:c,borderRadius:g,transitionType:m,enableTransition:f,layoutMode:w,collapsed:u,fixedHeader:T,showBreadcrumb:V,showBreadcrumbIcon:y,showTagsView:S,tagsViewHeight:b,tagsViewStyle:k,showFooter:B,sidebarWidth:x,sidebarCollapsedWidth:E,headerHeight:C,enableHotkeys:R,version:_,borderRadiusValue:M,transitionName:s,shouldEnableTransition:t,settingsState:l,syncCSSVariables:h,applyPreset:N,resetSettings:A,updateThemeMode:F,toggleCollapse:$}})}const L=U(),G=[{label:"左侧菜单(默认)",value:"side",disabled:!1,svg:`
2
2
  <rect x="0" y="0" width="16" height="48" rx="1" fill="currentColor" fill-opacity="0.9"/>
3
3
  <rect x="18" y="0" width="38" height="10" rx="1" fill="currentColor" fill-opacity="0.7"/>
4
4
  <rect x="18" y="12" width="38" height="34" rx="1" fill="currentColor" fill-opacity="0.4"/>
@@ -24,7 +24,7 @@
24
24
  <rect x="32" y="0" width="24" height="20" rx="2" fill="currentColor" fill-opacity="0.7"/>
25
25
  <rect x="0" y="24" width="24" height="20" rx="2" fill="currentColor" fill-opacity="0.6"/>
26
26
  <rect x="32" y="24" width="24" height="20" rx="2" fill="currentColor" fill-opacity="0.4"/>
27
- `}],q={class:"settings-section"},J={class:"preset-grid"},Y=["onClick"],X={class:"preset-icon"},Q={class:"preset-name"},Z={class:"preset-color"},ee={class:"settings-section"},te={class:"settings-section"},oe={class:"color-picker-wrapper"},le={class:"color-value"},ae={class:"settings-section"},se={class:"settings-section"},ne={class:"flex items-center justify-between mb-2"},ie={class:"settings-section"},re={class:"settings-section"},de={class:"layout-grid"},ue=["onClick"],ce={class:"layout-screenshot"},me={class:"layout-svg",viewBox:"0 0 56 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"},fe=["innerHTML"],ve={class:"layout-label"},pe={key:0,class:"badge-soon"},ge={class:"settings-section"},he={class:"setting-item"},Ne={class:"setting-item"},we={class:"setting-item"},ye={class:"setting-item"},Ve={class:"settings-section"},be={class:"slider-item"},xe={class:"slider-label"},Ee={class:"slider-value"},Ce={class:"slider-item"},Se={class:"slider-label"},Te={class:"slider-value"},ke={class:"settings-section"},Be={class:"settings-section"},Re={class:"action-buttons-grid"},Me={class:"settings-section"},_e={class:"action-buttons-grid"},He={class:"settings-section"},Ue={class:"setting-item"},Oe={class:"setting-item"},De={class:"settings-section"},Pe={class:"setting-item"},We={key:0,class:"mt-2"},Le={class:"settings-section"},Ie={class:"system-info"},Ae={class:"info-item"},Fe={class:"info-value"},$e={class:"info-item"},ze={class:"info-value"},je={class:"info-item"},Ge={class:"info-value"},Ke={class:"info-item"},qe={class:"info-value"},Je={class:"info-item"},Ye={class:"info-value"},Xe={class:"info-item"},Qe={class:"info-value"},Ze=e.defineComponent({__name:"index",props:e.mergeModels({storageKey:{}},{show:{type:Boolean,default:!1},showModifiers:{}}),emits:["update:show"],setup(v){const i=a.useMessage(),d=a.useDialog(),o=L(),p=e.useModel(v,"show"),c=e.ref("appearance"),g=e.ref(!1),m=e.ref(!1),f=e.ref(!1),w=e.ref("Robot Admin");let u=null;const S=s=>{u&&(document.body.removeChild(u),u=null);const t=document.createElement("canvas"),l=t.getContext("2d");t.width=200,t.height=150,l.font="14px Microsoft JhengHei",l.fillStyle="rgba(120, 120, 120, 0.15)",l.rotate(-20*Math.PI/180),l.fillText(s,0,80),u=document.createElement("div"),u.style.cssText=`
27
+ `}],q={class:"settings-section"},J={class:"preset-grid"},K=["onClick"],Y={class:"preset-icon"},Z={class:"preset-name"},Q={class:"preset-color"},X={class:"settings-section"},ee={class:"settings-section"},te={class:"color-picker-wrapper"},oe={class:"color-value"},le={class:"settings-section"},ae={class:"settings-section"},se={class:"flex items-center justify-between mb-2"},ne={class:"settings-section"},ie={class:"settings-section"},re={class:"layout-grid"},de=["onClick"],ue={class:"layout-screenshot"},ce={class:"layout-svg",viewBox:"0 0 56 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"},me=["innerHTML"],fe={class:"layout-label"},ve={key:0,class:"badge-soon"},pe={class:"settings-section"},ge={class:"setting-item"},he={class:"setting-item"},Ne={class:"setting-item"},we={class:"setting-item"},ye={class:"settings-section"},Ve={class:"slider-item"},be={class:"slider-label"},xe={class:"slider-value"},Ee={class:"slider-item"},Ce={class:"slider-label"},Te={class:"slider-value"},Se={class:"settings-section"},ke={class:"settings-section"},Be={class:"action-buttons-grid"},Re={class:"settings-section"},Me={class:"action-buttons-grid"},_e={class:"settings-section"},He={class:"setting-item"},Ue={class:"setting-item"},Oe={class:"settings-section"},De={class:"setting-item"},Pe={key:0,class:"mt-2"},Ie={class:"settings-section"},We={class:"system-info"},Le={class:"info-item"},Ae={class:"info-value"},Fe={class:"info-item"},$e={class:"info-value"},ze={class:"info-item"},je={class:"info-value"},Ge={class:"info-item"},qe={class:"info-value"},Je={class:"info-item"},Ke={class:"info-value"},Ye={class:"info-item"},Ze={class:"info-value"},Qe=e.defineComponent({__name:"index",props:{show:{type:Boolean,default:!1},showModifiers:{}},emits:["update:show"],setup(v){const i=a.useMessage(),d=a.useDialog(),o=L(),p=e.useModel(v,"show"),c=e.ref("appearance"),g=e.ref(!1),m=e.ref(!1),f=e.ref(!1),w=e.ref("Robot Admin");let u=null;const T=s=>{u&&(document.body.removeChild(u),u=null);const t=document.createElement("canvas"),l=t.getContext("2d");t.width=200,t.height=150,l.font="14px Microsoft JhengHei",l.fillStyle="rgba(120, 120, 120, 0.15)",l.rotate(-20*Math.PI/180),l.fillText(s,0,80),u=document.createElement("div"),u.style.cssText=`
28
28
  position: fixed;
29
29
  top: 0;
30
30
  left: 0;
@@ -35,5 +35,5 @@
35
35
  background-repeat: repeat;
36
36
  z-index: 9999;
37
37
  user-select: none;
38
- `,document.body.appendChild(u)},V=()=>{u&&(document.body.removeChild(u),u=null)};e.watch(g,s=>{document.documentElement.classList.toggle("gray-mode",s)}),e.watch(m,s=>{document.documentElement.classList.toggle("color-weak-mode",s)}),e.watch(f,s=>{s?S(w.value):V()}),e.watch(w,s=>{f.value&&S(s)});const y=e.computed(()=>{const s=navigator.userAgent;let t="Unknown",l="Unknown";return s.includes("Chrome")?t="Chrome":s.includes("Firefox")?t="Firefox":s.includes("Safari")?t="Safari":s.includes("Edge")&&(t="Edge"),s.includes("Windows")?l="Windows":s.includes("Mac")?l="macOS":s.includes("Linux")?l="Linux":s.includes("Android")?l="Android":s.includes("iOS")&&(l="iOS"),{browser:t,os:l,resolution:`${window.screen.width} × ${window.screen.height}`,pixelRatio:window.devicePixelRatio+"x",language:navigator.language,timezone:"XIAn"}});e.onUnmounted(()=>{V()});const T=(s,t)=>{t||(o.layoutMode=s)},b=s=>o.primaryColor===s.primaryColor,k=s=>{o.applyPreset(s),i.success(`已应用「${s.name}」主题方案`)},B=()=>{o.themeMode=r.themeMode,o.primaryColor=r.primaryColor,o.borderRadius=r.borderRadius,o.transitionType=r.transitionType,o.enableTransition=r.enableTransition,i.success("已恢复外观默认设置")},x=()=>{o.layoutMode=r.layoutMode,o.showBreadcrumb=r.showBreadcrumb,o.showBreadcrumbIcon=r.showBreadcrumbIcon,o.showTagsView=r.showTagsView,o.showFooter=r.showFooter,o.sidebarWidth=r.sidebarWidth,o.sidebarCollapsedWidth=r.sidebarCollapsedWidth,o.headerHeight=r.headerHeight,o.tagsViewHeight=r.tagsViewHeight,i.success("已恢复布局默认设置")},E=()=>{d.warning({title:"确认重置",content:"确定要恢复默认配置吗?此操作不可撤销。",positiveText:"确认",negativeText:"取消",onPositiveClick:()=>{o.resetSettings(),i.success("已恢复默认配置")}})},C=()=>{d.warning({title:"确认清除",content:"确定要清除浏览器缓存吗?",positiveText:"确认",negativeText:"取消",onPositiveClick:()=>{const s=["theme-mode","robot-admin-settings"];Object.keys(localStorage).forEach(l=>{s.includes(l)||localStorage.removeItem(l)}),sessionStorage.clear(),i.success("缓存已清除")}})},R=()=>{location.reload()},_=()=>{const s={settings:o.settingsState,gray:g.value,colorWeak:m.value,watermark:{enabled:f.value,text:w.value},exportTime:new Date().toISOString()},t=new Blob([JSON.stringify(s,null,2)],{type:"application/json"}),l=URL.createObjectURL(t),h=document.createElement("a");h.href=l,h.download=`robot-admin-config-${Date.now()}.json`,h.click(),URL.revokeObjectURL(l),i.success("配置已导出")},M=()=>{const s=document.createElement("input");s.type="file",s.accept="application/json",s.onchange=async t=>{const l=t.target.files?.[0];if(l)try{const h=await l.text(),N=JSON.parse(h);N.settings&&Object.assign(o,N.settings),N.gray!==void 0&&(g.value=N.gray),N.colorWeak!==void 0&&(m.value=N.colorWeak),N.watermark&&(f.value=N.watermark.enabled,w.value=N.watermark.text),i.success("配置已导入")}catch{i.error("配置文件格式错误")}},s.click()};return(s,t)=>(e.openBlock(),e.createBlock(e.unref(a.NDrawer),{show:p.value,"onUpdate:show":t[16]||(t[16]=l=>p.value=l),width:380,placement:"right","trap-focus":!1,"block-scroll":!1},{default:e.withCtx(()=>[e.createVNode(e.unref(a.NDrawerContent),{title:"⚙️ 布局配置",closable:""},{default:e.withCtx(()=>[e.createVNode(e.unref(a.NTabs),{value:c.value,"onUpdate:value":t[15]||(t[15]=l=>c.value=l),animated:"",class:"settings-tabs"},{default:e.withCtx(()=>[e.createVNode(e.unref(a.NTabPane),{name:"appearance",tab:"🎨 外观"},{default:e.withCtx(()=>[e.createElementVNode("div",q,[e.createElementVNode("div",J,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(D),l=>(e.openBlock(),e.createElementBlock("div",{key:l.name,class:e.normalizeClass(["preset-card",{active:b(l)}]),onClick:h=>k(l)},[e.createElementVNode("div",X,e.toDisplayString(l.icon),1),e.createElementVNode("div",Q,e.toDisplayString(l.name),1),e.createElementVNode("div",Z,[e.createElementVNode("span",{class:"color-dot",style:e.normalizeStyle({backgroundColor:l.primaryColor})},null,4)])],10,Y))),128))])]),e.createElementVNode("div",ee,[t[20]||(t[20]=e.createElementVNode("div",{class:"section-title"},"主题模式",-1)),e.createVNode(e.unref(a.NRadioGroup),{value:e.unref(o).themeMode,"onUpdate:value":t[0]||(t[0]=l=>e.unref(o).themeMode=l),class:"mode-group"},{default:e.withCtx(()=>[e.createVNode(e.unref(a.NRadioButton),{value:"light"},{default:e.withCtx(()=>[...t[17]||(t[17]=[e.createElementVNode("span",{class:"i-mdi:white-balance-sunny mr-1"},null,-1),e.createTextVNode(" 浅色 ",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"dark"},{default:e.withCtx(()=>[...t[18]||(t[18]=[e.createElementVNode("span",{class:"i-mdi:moon-waning-crescent mr-1"},null,-1),e.createTextVNode(" 深色 ",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"auto"},{default:e.withCtx(()=>[...t[19]||(t[19]=[e.createElementVNode("span",{class:"i-mdi:theme-light-dark mr-1"},null,-1),e.createTextVNode(" 自动 ",-1)])]),_:1})]),_:1},8,["value"])]),e.createElementVNode("div",te,[t[21]||(t[21]=e.createElementVNode("div",{class:"section-title"},"主题色",-1)),e.createElementVNode("div",oe,[e.createVNode(e.unref(a.NColorPicker),{value:e.unref(o).primaryColor,"onUpdate:value":t[1]||(t[1]=l=>e.unref(o).primaryColor=l),"show-alpha":!1,swatches:e.unref(G),actions:["confirm"]},null,8,["value","swatches"]),e.createElementVNode("span",le,e.toDisplayString(e.unref(o).primaryColor),1)])]),e.createElementVNode("div",ae,[t[25]||(t[25]=e.createElementVNode("div",{class:"section-title"},"圆角大小",-1)),e.createVNode(e.unref(a.NRadioGroup),{value:e.unref(o).borderRadius,"onUpdate:value":t[2]||(t[2]=l=>e.unref(o).borderRadius=l),class:"radius-group"},{default:e.withCtx(()=>[e.createVNode(e.unref(a.NRadioButton),{value:"small"},{default:e.withCtx(()=>[...t[22]||(t[22]=[e.createTextVNode("小 (4px)",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"medium"},{default:e.withCtx(()=>[...t[23]||(t[23]=[e.createTextVNode("中 (6px)",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"large"},{default:e.withCtx(()=>[...t[24]||(t[24]=[e.createTextVNode("大 (8px)",-1)])]),_:1})]),_:1},8,["value"])]),e.createElementVNode("div",se,[t[31]||(t[31]=e.createElementVNode("div",{class:"section-title"},"页面动画",-1)),e.createElementVNode("div",ne,[t[26]||(t[26]=e.createElementVNode("span",{class:"text-sm"},"启用动画",-1)),e.createVNode(e.unref(a.NSwitch),{value:e.unref(o).enableTransition,"onUpdate:value":t[3]||(t[3]=l=>e.unref(o).enableTransition=l)},null,8,["value"])]),e.createVNode(e.unref(a.NRadioGroup),{value:e.unref(o).transitionType,"onUpdate:value":t[4]||(t[4]=l=>e.unref(o).transitionType=l),disabled:!e.unref(o).enableTransition,class:"transition-group"},{default:e.withCtx(()=>[e.createVNode(e.unref(a.NRadioButton),{value:"fade"},{default:e.withCtx(()=>[...t[27]||(t[27]=[e.createTextVNode("淡入",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"slide"},{default:e.withCtx(()=>[...t[28]||(t[28]=[e.createTextVNode("滑动",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"zoom"},{default:e.withCtx(()=>[...t[29]||(t[29]=[e.createTextVNode("缩放",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"none"},{default:e.withCtx(()=>[...t[30]||(t[30]=[e.createTextVNode("无",-1)])]),_:1})]),_:1},8,["value","disabled"])]),e.createElementVNode("div",ie,[e.createVNode(e.unref(a.NButton),{block:"",secondary:"",onClick:B},{icon:e.withCtx(()=>[...t[32]||(t[32]=[e.createElementVNode("span",{class:"i-mdi:restore"},null,-1)])]),default:e.withCtx(()=>[t[33]||(t[33]=e.createTextVNode(" 恢复外观默认设置 ",-1))]),_:1})])]),_:1}),e.createVNode(e.unref(a.NTabPane),{name:"layout",tab:"📐 布局"},{default:e.withCtx(()=>[e.createElementVNode("div",re,[t[34]||(t[34]=e.createElementVNode("div",{class:"section-title"},"布局模式",-1)),e.createElementVNode("div",de,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(K),l=>(e.openBlock(),e.createElementBlock("div",{key:l.value,class:e.normalizeClass(["layout-item",{active:e.unref(o).layoutMode===l.value,disabled:l.disabled}]),onClick:e.withModifiers(h=>T(l.value,l.disabled),["stop"])},[e.createElementVNode("div",ce,[(e.openBlock(),e.createElementBlock("svg",me,[e.createElementVNode("g",{innerHTML:l.svg},null,8,fe)]))]),e.createElementVNode("div",ve,[e.createTextVNode(e.toDisplayString(l.label)+" ",1),l.disabled?(e.openBlock(),e.createElementBlock("span",pe,"敬请期待")):e.createCommentVNode("",!0)])],10,ue))),128))])]),e.createElementVNode("div",ge,[t[39]||(t[39]=e.createElementVNode("div",{class:"section-title"},"界面元素",-1)),e.createElementVNode("div",he,[t[35]||(t[35]=e.createElementVNode("span",null,"显示面包屑",-1)),e.createVNode(e.unref(a.NSwitch),{value:e.unref(o).showBreadcrumb,"onUpdate:value":t[5]||(t[5]=l=>e.unref(o).showBreadcrumb=l)},null,8,["value"])]),e.createElementVNode("div",Ne,[t[36]||(t[36]=e.createElementVNode("span",null,"显示面包屑图标",-1)),e.createVNode(e.unref(a.NSwitch),{value:e.unref(o).showBreadcrumbIcon,"onUpdate:value":t[6]||(t[6]=l=>e.unref(o).showBreadcrumbIcon=l),disabled:!e.unref(o).showBreadcrumb},null,8,["value","disabled"])]),e.createElementVNode("div",we,[t[37]||(t[37]=e.createElementVNode("span",null,"显示标签页",-1)),e.createVNode(e.unref(a.NSwitch),{value:e.unref(o).showTagsView,"onUpdate:value":t[7]||(t[7]=l=>e.unref(o).showTagsView=l)},null,8,["value"])]),e.createElementVNode("div",ye,[t[38]||(t[38]=e.createElementVNode("span",null,"显示页脚",-1)),e.createVNode(e.unref(a.NSwitch),{value:e.unref(o).showFooter,"onUpdate:value":t[8]||(t[8]=l=>e.unref(o).showFooter=l)},null,8,["value"])])]),e.createElementVNode("div",Ve,[t[42]||(t[42]=e.createElementVNode("div",{class:"section-title"},"尺寸调整",-1)),e.createElementVNode("div",be,[e.createElementVNode("div",xe,[t[40]||(t[40]=e.createElementVNode("span",null,"侧边栏宽度",-1)),e.createElementVNode("span",Ee,e.toDisplayString(e.unref(o).sidebarWidth)+"px",1)]),e.createVNode(e.unref(a.NSlider),{value:e.unref(o).sidebarWidth,"onUpdate:value":t[9]||(t[9]=l=>e.unref(o).sidebarWidth=l),min:180,max:280,step:10,marks:{180:"180",220:"220",280:"280"}},null,8,["value"])]),e.createElementVNode("div",Ce,[e.createElementVNode("div",Se,[t[41]||(t[41]=e.createElementVNode("span",null,"头部高度",-1)),e.createElementVNode("span",Te,e.toDisplayString(e.unref(o).headerHeight)+"px",1)]),e.createVNode(e.unref(a.NSlider),{value:e.unref(o).headerHeight,"onUpdate:value":t[10]||(t[10]=l=>e.unref(o).headerHeight=l),min:48,max:64,step:4,marks:{48:"48",56:"56",64:"64"}},null,8,["value"])])]),e.createElementVNode("div",ke,[e.createVNode(e.unref(a.NButton),{block:"",secondary:"",onClick:x},{icon:e.withCtx(()=>[...t[43]||(t[43]=[e.createElementVNode("span",{class:"i-mdi:restore"},null,-1)])]),default:e.withCtx(()=>[t[44]||(t[44]=e.createTextVNode(" 恢复布局默认设置 ",-1))]),_:1})])]),_:1}),e.createVNode(e.unref(a.NTabPane),{name:"features",tab:"🔧 功能"},{default:e.withCtx(()=>[e.createElementVNode("div",Be,[t[49]||(t[49]=e.createElementVNode("div",{class:"section-title"},"缓存管理",-1)),e.createElementVNode("div",Re,[e.createVNode(e.unref(a.NButton),{secondary:"",onClick:C},{icon:e.withCtx(()=>[...t[45]||(t[45]=[e.createElementVNode("span",{class:"i-mdi:delete-sweep"},null,-1)])]),default:e.withCtx(()=>[t[46]||(t[46]=e.createTextVNode(" 清除缓存 ",-1))]),_:1}),e.createVNode(e.unref(a.NButton),{secondary:"",onClick:R},{icon:e.withCtx(()=>[...t[47]||(t[47]=[e.createElementVNode("span",{class:"i-mdi:refresh"},null,-1)])]),default:e.withCtx(()=>[t[48]||(t[48]=e.createTextVNode(" 重新加载 ",-1))]),_:1})])]),e.createElementVNode("div",Me,[t[56]||(t[56]=e.createElementVNode("div",{class:"section-title"},"配置管理",-1)),e.createElementVNode("div",_e,[e.createVNode(e.unref(a.NButton),{secondary:"",onClick:_},{icon:e.withCtx(()=>[...t[50]||(t[50]=[e.createElementVNode("span",{class:"i-mdi:download"},null,-1)])]),default:e.withCtx(()=>[t[51]||(t[51]=e.createTextVNode(" 导出配置 ",-1))]),_:1}),e.createVNode(e.unref(a.NButton),{secondary:"",onClick:M},{icon:e.withCtx(()=>[...t[52]||(t[52]=[e.createElementVNode("span",{class:"i-mdi:upload"},null,-1)])]),default:e.withCtx(()=>[t[53]||(t[53]=e.createTextVNode(" 导入配置 ",-1))]),_:1})]),e.createVNode(e.unref(a.NButton),{block:"",type:"error",secondary:"",class:"mt-2",onClick:E},{icon:e.withCtx(()=>[...t[54]||(t[54]=[e.createElementVNode("span",{class:"i-mdi:restore"},null,-1)])]),default:e.withCtx(()=>[t[55]||(t[55]=e.createTextVNode(" 重置所有配置 ",-1))]),_:1})]),e.createElementVNode("div",He,[t[59]||(t[59]=e.createElementVNode("div",{class:"section-title"},"系统模式",-1)),e.createElementVNode("div",Ue,[t[57]||(t[57]=e.createElementVNode("div",{class:"setting-label"},[e.createElementVNode("span",null,"灰色模式"),e.createElementVNode("span",{class:"setting-desc"},"用于哀悼日场景")],-1)),e.createVNode(e.unref(a.NSwitch),{value:g.value,"onUpdate:value":t[11]||(t[11]=l=>g.value=l)},null,8,["value"])]),e.createElementVNode("div",Oe,[t[58]||(t[58]=e.createElementVNode("div",{class:"setting-label"},[e.createElementVNode("span",null,"色弱模式"),e.createElementVNode("span",{class:"setting-desc"},"提供无障碍访问支持")],-1)),e.createVNode(e.unref(a.NSwitch),{value:m.value,"onUpdate:value":t[12]||(t[12]=l=>m.value=l)},null,8,["value"])])]),e.createElementVNode("div",De,[t[61]||(t[61]=e.createElementVNode("div",{class:"section-title"},"水印设置",-1)),e.createElementVNode("div",Pe,[t[60]||(t[60]=e.createElementVNode("span",null,"启用水印",-1)),e.createVNode(e.unref(a.NSwitch),{value:f.value,"onUpdate:value":t[13]||(t[13]=l=>f.value=l)},null,8,["value"])]),f.value?(e.openBlock(),e.createElementBlock("div",We,[e.createVNode(e.unref(a.NInput),{value:w.value,"onUpdate:value":t[14]||(t[14]=l=>w.value=l),placeholder:"请输入水印内容",size:"small"},null,8,["value"])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Le,[t[68]||(t[68]=e.createElementVNode("div",{class:"section-title"},"系统信息",-1)),e.createElementVNode("div",Ie,[e.createElementVNode("div",Ae,[t[62]||(t[62]=e.createElementVNode("span",{class:"info-label"},"浏览器",-1)),e.createElementVNode("span",Fe,e.toDisplayString(y.value.browser),1)]),e.createElementVNode("div",$e,[t[63]||(t[63]=e.createElementVNode("span",{class:"info-label"},"操作系统",-1)),e.createElementVNode("span",ze,e.toDisplayString(y.value.os),1)]),e.createElementVNode("div",je,[t[64]||(t[64]=e.createElementVNode("span",{class:"info-label"},"屏幕分辨率",-1)),e.createElementVNode("span",Ge,e.toDisplayString(y.value.resolution),1)]),e.createElementVNode("div",Ke,[t[65]||(t[65]=e.createElementVNode("span",{class:"info-label"},"设备像素比",-1)),e.createElementVNode("span",qe,e.toDisplayString(y.value.pixelRatio),1)]),e.createElementVNode("div",Je,[t[66]||(t[66]=e.createElementVNode("span",{class:"info-label"},"语言",-1)),e.createElementVNode("span",Ye,e.toDisplayString(y.value.language),1)]),e.createElementVNode("div",Xe,[t[67]||(t[67]=e.createElementVNode("span",{class:"info-label"},"时区",-1)),e.createElementVNode("span",Qe,e.toDisplayString(y.value.timezone),1)])])])]),_:1})]),_:1},8,["value"])]),_:1})]),_:1},8,["show"]))}}),et=(v,i)=>{const d=v.__vccOpts||v;for(const[o,p]of i)d[o]=p;return d},tt=et(Ze,[["__scopeId","data-v-a6b98153"]]);function ot(v,i={}){const d=H(i);return d().syncCSSVariables(),d}exports.BORDER_RADIUS_MAP=P;exports.COLOR_SWATCHES=j;exports.DEFAULT_SETTINGS=r;exports.LAYOUT_MODES=z;exports.PRESET_COLORS=O;exports.SettingsDrawer=tt;exports.THEME_PRESETS=D;exports.TRANSITION_MAP=W;exports.createSettingsStore=H;exports.setupLayout=ot;exports.useSettingsStore=L;
38
+ `,document.body.appendChild(u)},V=()=>{u&&(document.body.removeChild(u),u=null)};e.watch(g,s=>{document.documentElement.classList.toggle("gray-mode",s)}),e.watch(m,s=>{document.documentElement.classList.toggle("color-weak-mode",s)}),e.watch(f,s=>{s?T(w.value):V()}),e.watch(w,s=>{f.value&&T(s)});const y=e.computed(()=>{const s=navigator.userAgent;let t="Unknown",l="Unknown";return s.includes("Chrome")?t="Chrome":s.includes("Firefox")?t="Firefox":s.includes("Safari")?t="Safari":s.includes("Edge")&&(t="Edge"),s.includes("Windows")?l="Windows":s.includes("Mac")?l="macOS":s.includes("Linux")?l="Linux":s.includes("Android")?l="Android":s.includes("iOS")&&(l="iOS"),{browser:t,os:l,resolution:`${window.screen.width} × ${window.screen.height}`,pixelRatio:window.devicePixelRatio+"x",language:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone}});e.onUnmounted(()=>{V()});const S=(s,t)=>{t||(o.layoutMode=s)},b=s=>o.primaryColor===s.primaryColor,k=s=>{o.applyPreset(s),i.success(`已应用「${s.name}」主题方案`)},B=()=>{o.themeMode=r.themeMode,o.primaryColor=r.primaryColor,o.borderRadius=r.borderRadius,o.transitionType=r.transitionType,o.enableTransition=r.enableTransition,i.success("已恢复外观默认设置")},x=()=>{o.layoutMode=r.layoutMode,o.fixedHeader=r.fixedHeader,o.showBreadcrumb=r.showBreadcrumb,o.showBreadcrumbIcon=r.showBreadcrumbIcon,o.showTagsView=r.showTagsView,o.tagsViewHeight=r.tagsViewHeight,o.tagsViewStyle=r.tagsViewStyle,o.showFooter=r.showFooter,o.sidebarWidth=r.sidebarWidth,o.sidebarCollapsedWidth=r.sidebarCollapsedWidth,o.headerHeight=r.headerHeight,i.success("已恢复布局默认设置")},E=()=>{d.warning({title:"确认重置",content:"确定要恢复默认配置吗?此操作不可撤销。",positiveText:"确认",negativeText:"取消",onPositiveClick:()=>{o.resetSettings(),i.success("已恢复默认配置")}})},C=()=>{d.warning({title:"确认清除",content:"确定要清除浏览器缓存吗?",positiveText:"确认",negativeText:"取消",onPositiveClick:()=>{const s=["theme-mode","robot-admin-settings"];Object.keys(localStorage).forEach(l=>{s.includes(l)||localStorage.removeItem(l)}),sessionStorage.clear(),i.success("缓存已清除")}})},R=()=>{location.reload()},_=()=>{const s={settings:o.settingsState,gray:g.value,colorWeak:m.value,watermark:{enabled:f.value,text:w.value},exportTime:new Date().toISOString()},t=new Blob([JSON.stringify(s,null,2)],{type:"application/json"}),l=URL.createObjectURL(t),h=document.createElement("a");h.href=l,h.download=`robot-admin-config-${Date.now()}.json`,h.click(),URL.revokeObjectURL(l),i.success("配置已导出")},M=()=>{const s=document.createElement("input");s.type="file",s.accept="application/json",s.onchange=async t=>{const l=t.target.files?.[0];if(l)try{const h=await l.text(),N=JSON.parse(h);N.settings&&o.$patch(N.settings),N.gray!==void 0&&(g.value=N.gray),N.colorWeak!==void 0&&(m.value=N.colorWeak),N.watermark&&(f.value=N.watermark.enabled,w.value=N.watermark.text),i.success("配置已导入")}catch{i.error("配置文件格式错误")}},s.click()};return(s,t)=>(e.openBlock(),e.createBlock(e.unref(a.NDrawer),{show:p.value,"onUpdate:show":t[16]||(t[16]=l=>p.value=l),width:380,placement:"right","trap-focus":!1,"block-scroll":!1},{default:e.withCtx(()=>[e.createVNode(e.unref(a.NDrawerContent),{title:"⚙️ 布局配置",closable:""},{default:e.withCtx(()=>[e.createVNode(e.unref(a.NTabs),{value:c.value,"onUpdate:value":t[15]||(t[15]=l=>c.value=l),animated:"",class:"settings-tabs"},{default:e.withCtx(()=>[e.createVNode(e.unref(a.NTabPane),{name:"appearance",tab:"🎨 外观"},{default:e.withCtx(()=>[e.createElementVNode("div",q,[e.createElementVNode("div",J,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(D),l=>(e.openBlock(),e.createElementBlock("div",{key:l.name,class:e.normalizeClass(["preset-card",{active:b(l)}]),onClick:h=>k(l)},[e.createElementVNode("div",Y,e.toDisplayString(l.icon),1),e.createElementVNode("div",Z,e.toDisplayString(l.name),1),e.createElementVNode("div",Q,[e.createElementVNode("span",{class:"color-dot",style:e.normalizeStyle({backgroundColor:l.primaryColor})},null,4)])],10,K))),128))])]),e.createElementVNode("div",X,[t[20]||(t[20]=e.createElementVNode("div",{class:"section-title"},"主题模式",-1)),e.createVNode(e.unref(a.NRadioGroup),{value:e.unref(o).themeMode,"onUpdate:value":t[0]||(t[0]=l=>e.unref(o).themeMode=l),class:"mode-group"},{default:e.withCtx(()=>[e.createVNode(e.unref(a.NRadioButton),{value:"light"},{default:e.withCtx(()=>[...t[17]||(t[17]=[e.createElementVNode("span",{class:"i-mdi:white-balance-sunny mr-1"},null,-1),e.createTextVNode(" 浅色 ",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"dark"},{default:e.withCtx(()=>[...t[18]||(t[18]=[e.createElementVNode("span",{class:"i-mdi:moon-waning-crescent mr-1"},null,-1),e.createTextVNode(" 深色 ",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"auto"},{default:e.withCtx(()=>[...t[19]||(t[19]=[e.createElementVNode("span",{class:"i-mdi:theme-light-dark mr-1"},null,-1),e.createTextVNode(" 自动 ",-1)])]),_:1})]),_:1},8,["value"])]),e.createElementVNode("div",ee,[t[21]||(t[21]=e.createElementVNode("div",{class:"section-title"},"主题色",-1)),e.createElementVNode("div",te,[e.createVNode(e.unref(a.NColorPicker),{value:e.unref(o).primaryColor,"onUpdate:value":t[1]||(t[1]=l=>e.unref(o).primaryColor=l),"show-alpha":!1,swatches:e.unref(W),actions:["confirm"]},null,8,["value","swatches"]),e.createElementVNode("span",oe,e.toDisplayString(e.unref(o).primaryColor),1)])]),e.createElementVNode("div",le,[t[25]||(t[25]=e.createElementVNode("div",{class:"section-title"},"圆角大小",-1)),e.createVNode(e.unref(a.NRadioGroup),{value:e.unref(o).borderRadius,"onUpdate:value":t[2]||(t[2]=l=>e.unref(o).borderRadius=l),class:"radius-group"},{default:e.withCtx(()=>[e.createVNode(e.unref(a.NRadioButton),{value:"small"},{default:e.withCtx(()=>[...t[22]||(t[22]=[e.createTextVNode("小 (4px)",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"medium"},{default:e.withCtx(()=>[...t[23]||(t[23]=[e.createTextVNode("中 (6px)",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"large"},{default:e.withCtx(()=>[...t[24]||(t[24]=[e.createTextVNode("大 (8px)",-1)])]),_:1})]),_:1},8,["value"])]),e.createElementVNode("div",ae,[t[31]||(t[31]=e.createElementVNode("div",{class:"section-title"},"页面动画",-1)),e.createElementVNode("div",se,[t[26]||(t[26]=e.createElementVNode("span",{class:"text-sm"},"启用动画",-1)),e.createVNode(e.unref(a.NSwitch),{value:e.unref(o).enableTransition,"onUpdate:value":t[3]||(t[3]=l=>e.unref(o).enableTransition=l)},null,8,["value"])]),e.createVNode(e.unref(a.NRadioGroup),{value:e.unref(o).transitionType,"onUpdate:value":t[4]||(t[4]=l=>e.unref(o).transitionType=l),disabled:!e.unref(o).enableTransition,class:"transition-group"},{default:e.withCtx(()=>[e.createVNode(e.unref(a.NRadioButton),{value:"fade"},{default:e.withCtx(()=>[...t[27]||(t[27]=[e.createTextVNode("淡入",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"slide"},{default:e.withCtx(()=>[...t[28]||(t[28]=[e.createTextVNode("滑动",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"zoom"},{default:e.withCtx(()=>[...t[29]||(t[29]=[e.createTextVNode("缩放",-1)])]),_:1}),e.createVNode(e.unref(a.NRadioButton),{value:"none"},{default:e.withCtx(()=>[...t[30]||(t[30]=[e.createTextVNode("无",-1)])]),_:1})]),_:1},8,["value","disabled"])]),e.createElementVNode("div",ne,[e.createVNode(e.unref(a.NButton),{block:"",secondary:"",onClick:B},{icon:e.withCtx(()=>[...t[32]||(t[32]=[e.createElementVNode("span",{class:"i-mdi:restore"},null,-1)])]),default:e.withCtx(()=>[t[33]||(t[33]=e.createTextVNode(" 恢复外观默认设置 ",-1))]),_:1})])]),_:1}),e.createVNode(e.unref(a.NTabPane),{name:"layout",tab:"📐 布局"},{default:e.withCtx(()=>[e.createElementVNode("div",ie,[t[34]||(t[34]=e.createElementVNode("div",{class:"section-title"},"布局模式",-1)),e.createElementVNode("div",re,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(G),l=>(e.openBlock(),e.createElementBlock("div",{key:l.value,class:e.normalizeClass(["layout-item",{active:e.unref(o).layoutMode===l.value,disabled:l.disabled}]),onClick:e.withModifiers(h=>S(l.value,l.disabled),["stop"])},[e.createElementVNode("div",ue,[(e.openBlock(),e.createElementBlock("svg",ce,[e.createElementVNode("g",{innerHTML:l.svg},null,8,me)]))]),e.createElementVNode("div",fe,[e.createTextVNode(e.toDisplayString(l.label)+" ",1),l.disabled?(e.openBlock(),e.createElementBlock("span",ve,"敬请期待")):e.createCommentVNode("",!0)])],10,de))),128))])]),e.createElementVNode("div",pe,[t[39]||(t[39]=e.createElementVNode("div",{class:"section-title"},"界面元素",-1)),e.createElementVNode("div",ge,[t[35]||(t[35]=e.createElementVNode("span",null,"显示面包屑",-1)),e.createVNode(e.unref(a.NSwitch),{value:e.unref(o).showBreadcrumb,"onUpdate:value":t[5]||(t[5]=l=>e.unref(o).showBreadcrumb=l)},null,8,["value"])]),e.createElementVNode("div",he,[t[36]||(t[36]=e.createElementVNode("span",null,"显示面包屑图标",-1)),e.createVNode(e.unref(a.NSwitch),{value:e.unref(o).showBreadcrumbIcon,"onUpdate:value":t[6]||(t[6]=l=>e.unref(o).showBreadcrumbIcon=l),disabled:!e.unref(o).showBreadcrumb},null,8,["value","disabled"])]),e.createElementVNode("div",Ne,[t[37]||(t[37]=e.createElementVNode("span",null,"显示标签页",-1)),e.createVNode(e.unref(a.NSwitch),{value:e.unref(o).showTagsView,"onUpdate:value":t[7]||(t[7]=l=>e.unref(o).showTagsView=l)},null,8,["value"])]),e.createElementVNode("div",we,[t[38]||(t[38]=e.createElementVNode("span",null,"显示页脚",-1)),e.createVNode(e.unref(a.NSwitch),{value:e.unref(o).showFooter,"onUpdate:value":t[8]||(t[8]=l=>e.unref(o).showFooter=l)},null,8,["value"])])]),e.createElementVNode("div",ye,[t[42]||(t[42]=e.createElementVNode("div",{class:"section-title"},"尺寸调整",-1)),e.createElementVNode("div",Ve,[e.createElementVNode("div",be,[t[40]||(t[40]=e.createElementVNode("span",null,"侧边栏宽度",-1)),e.createElementVNode("span",xe,e.toDisplayString(e.unref(o).sidebarWidth)+"px",1)]),e.createVNode(e.unref(a.NSlider),{value:e.unref(o).sidebarWidth,"onUpdate:value":t[9]||(t[9]=l=>e.unref(o).sidebarWidth=l),min:180,max:280,step:10,marks:{180:"180",220:"220",280:"280"}},null,8,["value"])]),e.createElementVNode("div",Ee,[e.createElementVNode("div",Ce,[t[41]||(t[41]=e.createElementVNode("span",null,"头部高度",-1)),e.createElementVNode("span",Te,e.toDisplayString(e.unref(o).headerHeight)+"px",1)]),e.createVNode(e.unref(a.NSlider),{value:e.unref(o).headerHeight,"onUpdate:value":t[10]||(t[10]=l=>e.unref(o).headerHeight=l),min:48,max:64,step:4,marks:{48:"48",56:"56",64:"64"}},null,8,["value"])])]),e.createElementVNode("div",Se,[e.createVNode(e.unref(a.NButton),{block:"",secondary:"",onClick:x},{icon:e.withCtx(()=>[...t[43]||(t[43]=[e.createElementVNode("span",{class:"i-mdi:restore"},null,-1)])]),default:e.withCtx(()=>[t[44]||(t[44]=e.createTextVNode(" 恢复布局默认设置 ",-1))]),_:1})])]),_:1}),e.createVNode(e.unref(a.NTabPane),{name:"features",tab:"🔧 功能"},{default:e.withCtx(()=>[e.createElementVNode("div",ke,[t[49]||(t[49]=e.createElementVNode("div",{class:"section-title"},"缓存管理",-1)),e.createElementVNode("div",Be,[e.createVNode(e.unref(a.NButton),{secondary:"",onClick:C},{icon:e.withCtx(()=>[...t[45]||(t[45]=[e.createElementVNode("span",{class:"i-mdi:delete-sweep"},null,-1)])]),default:e.withCtx(()=>[t[46]||(t[46]=e.createTextVNode(" 清除缓存 ",-1))]),_:1}),e.createVNode(e.unref(a.NButton),{secondary:"",onClick:R},{icon:e.withCtx(()=>[...t[47]||(t[47]=[e.createElementVNode("span",{class:"i-mdi:refresh"},null,-1)])]),default:e.withCtx(()=>[t[48]||(t[48]=e.createTextVNode(" 重新加载 ",-1))]),_:1})])]),e.createElementVNode("div",Re,[t[56]||(t[56]=e.createElementVNode("div",{class:"section-title"},"配置管理",-1)),e.createElementVNode("div",Me,[e.createVNode(e.unref(a.NButton),{secondary:"",onClick:_},{icon:e.withCtx(()=>[...t[50]||(t[50]=[e.createElementVNode("span",{class:"i-mdi:download"},null,-1)])]),default:e.withCtx(()=>[t[51]||(t[51]=e.createTextVNode(" 导出配置 ",-1))]),_:1}),e.createVNode(e.unref(a.NButton),{secondary:"",onClick:M},{icon:e.withCtx(()=>[...t[52]||(t[52]=[e.createElementVNode("span",{class:"i-mdi:upload"},null,-1)])]),default:e.withCtx(()=>[t[53]||(t[53]=e.createTextVNode(" 导入配置 ",-1))]),_:1})]),e.createVNode(e.unref(a.NButton),{block:"",type:"error",secondary:"",class:"mt-2",onClick:E},{icon:e.withCtx(()=>[...t[54]||(t[54]=[e.createElementVNode("span",{class:"i-mdi:restore"},null,-1)])]),default:e.withCtx(()=>[t[55]||(t[55]=e.createTextVNode(" 重置所有配置 ",-1))]),_:1})]),e.createElementVNode("div",_e,[t[59]||(t[59]=e.createElementVNode("div",{class:"section-title"},"系统模式",-1)),e.createElementVNode("div",He,[t[57]||(t[57]=e.createElementVNode("div",{class:"setting-label"},[e.createElementVNode("span",null,"灰色模式"),e.createElementVNode("span",{class:"setting-desc"},"用于哀悼日场景")],-1)),e.createVNode(e.unref(a.NSwitch),{value:g.value,"onUpdate:value":t[11]||(t[11]=l=>g.value=l)},null,8,["value"])]),e.createElementVNode("div",Ue,[t[58]||(t[58]=e.createElementVNode("div",{class:"setting-label"},[e.createElementVNode("span",null,"色弱模式"),e.createElementVNode("span",{class:"setting-desc"},"提供无障碍访问支持")],-1)),e.createVNode(e.unref(a.NSwitch),{value:m.value,"onUpdate:value":t[12]||(t[12]=l=>m.value=l)},null,8,["value"])])]),e.createElementVNode("div",Oe,[t[61]||(t[61]=e.createElementVNode("div",{class:"section-title"},"水印设置",-1)),e.createElementVNode("div",De,[t[60]||(t[60]=e.createElementVNode("span",null,"启用水印",-1)),e.createVNode(e.unref(a.NSwitch),{value:f.value,"onUpdate:value":t[13]||(t[13]=l=>f.value=l)},null,8,["value"])]),f.value?(e.openBlock(),e.createElementBlock("div",Pe,[e.createVNode(e.unref(a.NInput),{value:w.value,"onUpdate:value":t[14]||(t[14]=l=>w.value=l),placeholder:"请输入水印内容",size:"small"},null,8,["value"])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ie,[t[68]||(t[68]=e.createElementVNode("div",{class:"section-title"},"系统信息",-1)),e.createElementVNode("div",We,[e.createElementVNode("div",Le,[t[62]||(t[62]=e.createElementVNode("span",{class:"info-label"},"浏览器",-1)),e.createElementVNode("span",Ae,e.toDisplayString(y.value.browser),1)]),e.createElementVNode("div",Fe,[t[63]||(t[63]=e.createElementVNode("span",{class:"info-label"},"操作系统",-1)),e.createElementVNode("span",$e,e.toDisplayString(y.value.os),1)]),e.createElementVNode("div",ze,[t[64]||(t[64]=e.createElementVNode("span",{class:"info-label"},"屏幕分辨率",-1)),e.createElementVNode("span",je,e.toDisplayString(y.value.resolution),1)]),e.createElementVNode("div",Ge,[t[65]||(t[65]=e.createElementVNode("span",{class:"info-label"},"设备像素比",-1)),e.createElementVNode("span",qe,e.toDisplayString(y.value.pixelRatio),1)]),e.createElementVNode("div",Je,[t[66]||(t[66]=e.createElementVNode("span",{class:"info-label"},"语言",-1)),e.createElementVNode("span",Ke,e.toDisplayString(y.value.language),1)]),e.createElementVNode("div",Ye,[t[67]||(t[67]=e.createElementVNode("span",{class:"info-label"},"时区",-1)),e.createElementVNode("span",Ze,e.toDisplayString(y.value.timezone),1)])])])]),_:1})]),_:1},8,["value"])]),_:1})]),_:1},8,["show"]))}}),Xe=(v,i)=>{const d=v.__vccOpts||v;for(const[o,p]of i)d[o]=p;return d},et=Xe(Qe,[["__scopeId","data-v-f8cba7b1"]]);function tt(v,i={}){const d=U(i);return d().syncCSSVariables(),d}exports.BORDER_RADIUS_MAP=P;exports.COLOR_SWATCHES=W;exports.DEFAULT_SETTINGS=r;exports.LAYOUT_MODES=j;exports.PRESET_COLORS=O;exports.SettingsDrawer=et;exports.THEME_PRESETS=D;exports.TRANSITION_MAP=I;exports.adjustColor=H;exports.createSettingsStore=U;exports.setupLayout=tt;exports.useSettingsStore=L;
39
39
  //# sourceMappingURL=index.cjs.map