| | |
| | | |
| | | const preferredDark = usePreferredDark(); |
| | | const colorMode = useColorMode({ |
| | | emitAuto: true, |
| | | attribute: 'class', |
| | | selector: 'html', |
| | | modes: { |
| | | dark: 'dark', |
| | | light: '', |
| | | } |
| | | }); |
| | | |
| | | const { |
| | | sideTheme, |
| | | showSettings, |
| | | topNav, |
| | | tagsView, |
| | |
| | | const storageSetting = JSON.parse(localStorage.getItem("layout-setting") || "{}"); |
| | | const defaultDarkMode = darkMode || "auto"; |
| | | const initialDarkMode = storageSetting.darkMode || defaultDarkMode; |
| | | |
| | | // 设置初始值 |
| | | colorMode.value = initialDarkMode; |
| | | |
| | | const getIsDark = (mode) => mode === "dark" || (mode === "auto" && preferredDark.value); |
| | | |
| | | const useSettingsStore = defineStore("settings", () => { |
| | | const title = ref(""); |
| | | const theme = ref(storageSetting.theme || "#002fa7"); |
| | | const sideThemeValue = ref(storageSetting.sideTheme || sideTheme); |
| | | const showSettingsValue = ref(showSettings); |
| | | const topNavValue = ref( |
| | | storageSetting.topNav === undefined ? topNav : storageSetting.topNav |
| | |
| | | const darkModeValue = ref(initialDarkMode); |
| | | const isDark = computed(() => getIsDark(darkModeValue.value)); |
| | | |
| | | // 监听系统主题变化 |
| | | watch(preferredDark, (newVal) => { |
| | | if (darkModeValue.value === 'auto') { |
| | | colorMode.value = 'auto'; |
| | | } |
| | | }); |
| | | |
| | | function changeSetting(data) { |
| | | const { key, value } = data; |
| | | const settingMap = { |
| | | title, |
| | | theme, |
| | | sideTheme: sideThemeValue, |
| | | showSettings: showSettingsValue, |
| | | topNav: topNavValue, |
| | | tagsView: tagsViewValue, |
| | |
| | | return { |
| | | title, |
| | | theme, |
| | | sideTheme: sideThemeValue, |
| | | showSettings: showSettingsValue, |
| | | topNav: topNavValue, |
| | | tagsView: tagsViewValue, |