1
1
<script setup lang="ts">
2
- import { NMessageProvider , NConfigProvider , type GlobalThemeOverrides , NDialogProvider } from ' naive-ui' ;
2
+ import { ref , onMounted , provide } from ' vue' ;
3
+ import { NMessageProvider , NConfigProvider , lightTheme , darkTheme , type GlobalThemeOverrides , NDialogProvider } from ' naive-ui' ;
3
4
import { RouterView } from ' vue-router' ;
5
+ import { storeToRefs } from ' pinia' ;
6
+ import { useUserStore } from ' @/stores/modules/user' ;
7
+
8
+ const userStore = useUserStore ();
9
+ const { themeMode } = storeToRefs (userStore );
10
+
11
+ let theme = ref (lightTheme );
12
+ provide (' theme' , theme );
13
+
14
+ onMounted (() => {
15
+ const body = document .querySelector (' body' );
16
+ if (themeMode .value == ' light' ) {
17
+ theme .value = lightTheme ;
18
+ body ?.setAttribute (' style' , ' background-color: #f0f0f0' );
19
+ } else if (themeMode .value == ' dark' ) {
20
+ theme .value = darkTheme ;
21
+ body ?.setAttribute (' style' , ' background-color: #111111' );
22
+ } else if (themeMode .value == ' auto' ) {
23
+ if (window .matchMedia (" (prefers-color-scheme: dark)" ).matches ) {
24
+ theme .value = darkTheme ;
25
+ body ?.setAttribute (' style' , ' background-color: #1d1d1d' );
26
+ } else {
27
+ theme .value = lightTheme ;
28
+ body ?.setAttribute (' style' , ' background-color: #141414' );
29
+ }
30
+ }
31
+ })
4
32
5
33
const themeOverrides: GlobalThemeOverrides = {
6
34
common: {
@@ -13,10 +41,10 @@ const themeOverrides: GlobalThemeOverrides = {
13
41
</script >
14
42
15
43
<template >
16
- <NConfigProvider :theme-overrides =" themeOverrides" >
44
+ <NConfigProvider :theme = " theme " :theme -overrides =" themeOverrides" >
17
45
<NDialogProvider >
18
46
<NMessageProvider >
19
- <RouterView />
47
+ <RouterView />
20
48
</NMessageProvider >
21
49
</NDialogProvider >
22
50
</NConfigProvider >
0 commit comments