1
1
'use client' ;
2
2
3
3
import { NeutralColors , PrimaryColors , ThemeProvider } from '@lobehub/ui' ;
4
- import { createStyles } from 'antd-style' ;
4
+ import { ThemeAppearance , createStyles } from 'antd-style' ;
5
5
import { ReactNode , memo , useEffect } from 'react' ;
6
6
7
- import { VIDOL_THEME_NEUTRAL_COLOR , VIDOL_THEME_PRIMARY_COLOR } from '@/constants/theme' ;
7
+ import {
8
+ VIDOL_THEME_APPEARANCE ,
9
+ VIDOL_THEME_NEUTRAL_COLOR ,
10
+ VIDOL_THEME_PRIMARY_COLOR ,
11
+ } from '@/constants/theme' ;
8
12
import { useGlobalStore } from '@/store/global' ;
9
13
import { useSettingStore } from '@/store/setting' ;
10
14
import { GlobalStyle } from '@/styles' ;
11
15
import { setCookie } from '@/utils/cookie' ;
12
16
13
17
export interface AppThemeProps {
14
18
children ?: ReactNode ;
19
+ defaultAppearance ?: ThemeAppearance ;
15
20
defaultNeutralColor ?: NeutralColors ;
16
21
defaultPrimaryColor ?: PrimaryColors ;
17
22
}
@@ -28,7 +33,7 @@ const useStyles = createStyles(({ css }) => ({
28
33
} ) ) ;
29
34
30
35
const AppTheme = memo ( ( props : AppThemeProps ) => {
31
- const { children, defaultNeutralColor, defaultPrimaryColor } = props ;
36
+ const { children, defaultNeutralColor, defaultAppearance , defaultPrimaryColor } = props ;
32
37
const [ primaryColor , neutralColor ] = useSettingStore ( ( s ) => [
33
38
s . config . primaryColor ,
34
39
s . config . neutralColor ,
@@ -52,6 +57,10 @@ const AppTheme = memo((props: AppThemeProps) => {
52
57
primaryColor : primaryColor ?? defaultPrimaryColor ,
53
58
neutralColor : neutralColor ?? defaultNeutralColor ,
54
59
} }
60
+ defaultAppearance = { defaultAppearance }
61
+ onAppearanceChange = { ( appearance ) => {
62
+ setCookie ( VIDOL_THEME_APPEARANCE , appearance ) ;
63
+ } }
55
64
themeMode = { themeMode }
56
65
>
57
66
< GlobalStyle />
0 commit comments