@@ -13,7 +13,7 @@ import {
13
13
import { IoLogoGithub } from 'react-icons/io5'
14
14
import { version } from '@renderer/utils/init'
15
15
import useSWR from 'swr'
16
- import { useState } from 'react'
16
+ import { Key , useState } from 'react'
17
17
import debounce from '@renderer/utils/debounce'
18
18
import { useTheme } from 'next-themes'
19
19
@@ -41,6 +41,30 @@ const Settings: React.FC = () => {
41
41
patchAppConfig ( { userAgent : v } )
42
42
} , 500 )
43
43
44
+ const onThemeChange = ( key : Key , type : 'theme' | 'color' ) : void => {
45
+ const [ theme , color ] = appTheme . split ( '-' )
46
+
47
+ if ( type === 'theme' ) {
48
+ let themeStr = key . toString ( )
49
+ if ( key !== 'system' ) {
50
+ if ( color ) {
51
+ themeStr += `-${ color } `
52
+ }
53
+ }
54
+ setTheme ( themeStr )
55
+ patchAppConfig ( { appTheme : themeStr as AppTheme } )
56
+ } else {
57
+ let themeStr = theme
58
+ if ( theme !== 'system' ) {
59
+ if ( key !== 'blue' ) {
60
+ themeStr += `-${ key } `
61
+ }
62
+ setTheme ( themeStr )
63
+ patchAppConfig ( { appTheme : themeStr as AppTheme } )
64
+ }
65
+ }
66
+ }
67
+
44
68
return (
45
69
< BasePage
46
70
title = "应用设置"
@@ -89,25 +113,36 @@ const Settings: React.FC = () => {
89
113
} }
90
114
/>
91
115
</ SettingItem >
92
- < SettingItem title = "应用主题" >
116
+ < SettingItem title = "应用主题(亮度)" divider = { appTheme !== 'system' } >
93
117
< Tabs
94
118
size = "sm"
95
119
color = "primary"
96
- selectedKey = { appTheme }
120
+ selectedKey = { appTheme . split ( '-' ) [ 0 ] }
97
121
onSelectionChange = { ( key ) => {
98
- console . log ( key )
99
- setTheme ( key as AppTheme )
100
-
101
- patchAppConfig ( { appTheme : key as AppTheme } )
122
+ onThemeChange ( key , 'theme' )
102
123
} }
103
124
>
104
125
< Tab key = "system" title = "自动" />
105
126
< Tab key = "dark" title = "深色" />
106
127
< Tab key = "gray" title = "灰色" />
107
- < Tab key = "pink" title = "粉色" />
108
128
< Tab key = "light" title = "浅色" />
109
129
</ Tabs >
110
130
</ SettingItem >
131
+ { appTheme !== 'system' && (
132
+ < SettingItem title = "应用主题(颜色)" >
133
+ < Tabs
134
+ size = "sm"
135
+ color = "primary"
136
+ selectedKey = { appTheme . split ( '-' ) [ 1 ] || 'blue' }
137
+ onSelectionChange = { ( key ) => {
138
+ onThemeChange ( key , 'color' )
139
+ } }
140
+ >
141
+ < Tab key = "blue" title = "蓝色" />
142
+ < Tab key = "pink" title = "粉色" />
143
+ </ Tabs >
144
+ </ SettingItem >
145
+ ) }
111
146
</ SettingCard >
112
147
< SettingCard >
113
148
< SettingItem title = "订阅拉取 UA" divider >
0 commit comments