@@ -7,10 +7,20 @@ export let currentTheme: Theme;
7
7
8
8
function mediaListener ( ev : MediaQueryListEvent ) {
9
9
const resolver = ev . matches ? 'dark' : 'light' ;
10
- htmlEl . className = resolver ;
10
+ toggleHtmlClass ( resolver ) ;
11
11
currentTheme = resolver ;
12
12
}
13
13
14
+ function toggleHtmlClass ( theme : Theme ) {
15
+ if ( theme === 'dark' ) {
16
+ htmlEl . classList . add ( 'dark' ) ;
17
+ htmlEl . classList . remove ( 'light' ) ;
18
+ } else {
19
+ htmlEl . classList . add ( 'light' ) ;
20
+ htmlEl . classList . remove ( 'dark' ) ;
21
+ }
22
+ }
23
+
14
24
export function themeInit ( ) {
15
25
const theme =
16
26
( localStorage . getItem ( localStorageThemeKey ) as Theme ) ?? 'system' ;
@@ -25,13 +35,13 @@ export function themeResolver(theme: Theme) {
25
35
const darkMedia = window . matchMedia ( '(prefers-color-scheme: dark)' ) ;
26
36
if ( theme !== 'system' ) {
27
37
darkMedia . removeEventListener ( 'change' , mediaListener ) ;
28
- htmlEl . className = theme ;
38
+ toggleHtmlClass ( theme ) ;
29
39
currentTheme = theme ;
30
40
} else {
31
41
const resolver = darkMedia . matches ? 'dark' : 'light' ;
32
42
33
43
darkMedia . addEventListener ( 'change' , mediaListener ) ;
34
- htmlEl . className = resolver ;
44
+ toggleHtmlClass ( resolver ) ;
35
45
currentTheme = resolver ;
36
46
}
37
47
0 commit comments