41 lines
1.9 KiB
YAML
41 lines
1.9 KiB
YAML
# Module Spec:vab-theme(主题系统入口与交互)
|
||
|
||
module:
|
||
id: vab-theme
|
||
name: VabTheme(主题配置入口/抽屉/设置面板)
|
||
type: ui
|
||
entrypoints:
|
||
- library/components/VabTheme/index.vue
|
||
- library/components/VabTheme/components/VabThemeDrawer.vue
|
||
- library/components/VabTheme/components/VabThemeSetting.vue
|
||
- library/components/VabTheme/components/
|
||
|
||
public_api:
|
||
concept:
|
||
- "VabTheme:一个刷子图标入口,用于触发打开主题抽屉(Drawer)"
|
||
- "VabThemeDrawer:主题抽屉,监听事件总线打开/随机主题,并调用 settings store 的 saveTheme/resetTheme/updateTheme"
|
||
- "VabThemeSetting:右侧固定设置入口(主题配置/随机换肤/购买源码/清理缓存),通过事件总线触发行为"
|
||
|
||
usage_examples:
|
||
- "点击 VabTheme 触发 $pub('theme') 打开抽屉"
|
||
- "点击 VabThemeSetting 的随机换肤触发 $pub('random-theme')"
|
||
|
||
dependency_closure:
|
||
runtime:
|
||
- "Pinia settings store:src/store/modules/settings(theme.showTheme、saveTheme/resetTheme/updateTheme 等)"
|
||
- "事件总线/全局注入:library/plugins/vab.ts($pub/$sub/$unsub/$baseLoading 等)"
|
||
- "i18n translate:src/i18n/index.ts(组件内调用 translate)"
|
||
- "Element Plus:Drawer/Radio/Select/Button 等"
|
||
styles:
|
||
- "主题变量:library/styles/variables/vab-*-variables.module.scss(updateTheme() 动态注入 CSS 变量)"
|
||
|
||
acceptance:
|
||
- "页面渲染包含主题入口(刷子图标)"
|
||
- "触发 $pub('theme') 时抽屉能打开;关闭时不报错"
|
||
- "保存/重置主题后调用 updateTheme() 生效(CSS 变量与 body class 变化)"
|
||
|
||
pitfalls:
|
||
- "Theme 依赖 $pub/$sub 注入;若未安装 vab 插件,事件不会触发"
|
||
- "settings.updateTheme() 依赖 webpack 的 require 动态引入 scss module;迁移到非 webpack 环境需等效实现"
|
||
- "移动端(<992)某些操作会触发 reload;抽取时需确认期望行为"
|