| import type { GlobalThemeOverrides } from 'naive-ui' | |
| import { computed, watch } from 'vue' | |
| import { darkTheme, useOsTheme } from 'naive-ui' | |
| import { useAppStore } from '@/store' | |
| export function useTheme() { | |
| const appStore = useAppStore() | |
| const OsTheme = useOsTheme() | |
| const isDark = computed(() => { | |
| if (appStore.theme === 'auto') | |
| return OsTheme.value === 'dark' | |
| else | |
| return appStore.theme === 'dark' | |
| }) | |
| const theme = computed(() => { | |
| return isDark.value ? darkTheme : undefined | |
| }) | |
| const themeOverrides = computed<GlobalThemeOverrides>(() => { | |
| if (isDark.value) { | |
| return { | |
| common: {}, | |
| } | |
| } | |
| return { | |
| common: { | |
| primaryColor: '#EC5E42', | |
| primaryColorHover: '#CF523A', | |
| primaryColorPressed: '#963C2A', | |
| }, | |
| } | |
| }) | |
| watch( | |
| () => isDark.value, | |
| (dark) => { | |
| if (dark) | |
| document.documentElement.classList.add('dark') | |
| else | |
| document.documentElement.classList.remove('dark') | |
| }, | |
| { immediate: true }, | |
| ) | |
| return { theme, themeOverrides } | |
| } | |