You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/client/shared/utils/color-scheme-helper.ts

42 lines
923 B
TypeScript

import { isValidStr } from './string-helper';
/**
* dark
*/
export function parseColorScheme(colorScheme: string): {
isDarkMode: boolean;
extraSchemeName: string | null;
} {
if (colorScheme === 'dark') {
return {
isDarkMode: true,
extraSchemeName: null,
};
} else if (colorScheme === 'light') {
return {
isDarkMode: false,
extraSchemeName: null,
};
} else if (colorScheme === 'auto') {
return {
isDarkMode: window.matchMedia
? window.matchMedia('(prefers-color-scheme: dark)').matches
: true,
extraSchemeName: null,
};
} else {
// 可能是插件 for example: dark+miku
let [base, name] = colorScheme.split('+');
if (!isValidStr(name)) {
name = base;
base = 'dark';
}
return {
isDarkMode: base === 'dark',
extraSchemeName: `theme-${name}`,
};
}
}