1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { setCssVar } from './util';
- import { addClass, hasClass, removeClass } from '/@/utils/domUtils';
- export type CustomColorType = {
- name: string;
- light: string;
- dark: string;
- };
- /**
- * 自定义颜色列表
- * 需先在 src/design/color.less 内定义变量和 light 颜色
- */
- export const customColorList: CustomColorType[] = [
- {
- name: '--text-color',
- light: 'rgb(0,0,0,85%)',
- dark: '#c9d1d9',
- },
- {
- name: '--border-color',
- light: '#eee',
- dark: '#303030',
- },
- {
- name: '--component-background-color',
- light: '#fff',
- dark: '#151515',
- },
- {
- name: '--app-content-background-color',
- light: '#fafafa',
- dark: '#151515',
- },
- // custom example
- {
- name: '--custom-example-color',
- light: '#ff4d4f',
- dark: '#55D187',
- },
- ];
- // 根据主题更新自定义颜色
- export function updateCustomColor(mode: 'light' | 'dark') {
- customColorList.forEach((item) => {
- setCssVar(item.name, item[mode]);
- });
- }
- export async function updateDarkTheme(mode: string | null = 'light') {
- const htmlRoot = document.getElementById('htmlRoot');
- if (!htmlRoot) {
- return;
- }
- const hasDarkClass = hasClass(htmlRoot, 'dark');
- if (mode === 'dark') {
- htmlRoot.setAttribute('data-theme', 'dark');
- if (!hasDarkClass) {
- addClass(htmlRoot, 'dark');
- }
- } else {
- htmlRoot.setAttribute('data-theme', 'light');
- if (hasDarkClass) {
- removeClass(htmlRoot, 'dark');
- }
- }
- updateCustomColor(mode === 'dark' ? 'dark' : 'light');
- }
|