kra-new/web/src/theme/settings.js

99 lines
2.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Centralized theme settings.
*
* settings is the only durable theme source. Component libraries and runtime
* CSS variables are derived from it through adapters.
*/
/**
* 主题 settings 的 schema 版本。本次为大版本重构,不兼容旧的扁平主题数据。
* 持久化(本地缓存 / 后端 originSetting统一写成 `{ version, settings }` 信封,
* 读取时只接受当前版本,版本不匹配或旧格式一律回落默认值。
* 未来 settings 结构再做破坏性调整时,递增此版本即可让旧数据自动失效。
*/
export const THEME_SETTINGS_VERSION = 1
export const themeSettings = {
themeScheme: 'auto',
grayscale: false,
colourWeakness: false,
themeColor: '#2264f2',
themeRadius: 0.5,
size: 'default',
otherColor: {
info: '#909399',
success: '#60c041',
warning: '#f9901f',
error: '#f56c6c'
},
isInfoFollowPrimary: false,
layout: {
mode: 'normal',
sideWidth: 256,
sideCollapsedWidth: 80,
sideItemHeight: 48
},
page: {
transition: 'slide'
},
header: {
breadcrumb: {
visible: true,
showIcon: true
},
refresh: {
visible: true
},
search: {
visible: true
},
collapseButton: {
visible: true
},
bg: '',
shadow: 'sm',
},
tab: {
visible: true,
bg: '',
// 标签栏阴影档位none / sm / md / lg与顶栏阴影同机制
shadow: 'sm',
// 标签栏风格button(描边胶囊) / chrome(浏览器标签) / slider(底部指示条)
mode: 'chrome',
// 是否在标签上展示路由图标
showIcon: true
},
menu: {
theme: 'light',
darkSider: false
},
card: {
mode: 'border'
},
watermark: {
visible: false
},
// 中性/表面色不再在此硬编码container / layout / border / muted / base-text 等全部由
// Prism 的 neutral 色阶在 token.js 中派生(详见 createThemeToken。此处只保留与颜色无关的阴影档位。
tokens: {
light: {
boxShadow: {
header: '0 1px 0 rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.04)',
sider: '2px 0 8px 0 rgba(29, 35, 41, 0.05)',
tab: '0 1px 2px rgba(0, 21, 41, 0.08)',
card: '0 1px 2px rgba(0, 0, 0, 0.04), 0 6px 18px rgba(0, 0, 0, 0.06)'
}
},
dark: {
boxShadow: {
header: '0 1px 0 rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.35)',
sider: '2px 0 8px 0 rgba(0, 0, 0, 0.35)',
tab: '0 1px 0 rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.35)',
card: '0 1px 2px rgba(0, 0, 0, 0.28), 0 6px 18px rgba(0, 0, 0, 0.32)'
}
}
}
}
export const cloneThemeSettings = () => structuredClone(themeSettings)