@@ -2,15 +2,19 @@ const userPref = window.matchMedia("(prefers-color-scheme: light)").matches ? "l
2
2
const currentTheme = localStorage . getItem ( "theme" ) ?? userPref
3
3
document . documentElement . setAttribute ( "saved-theme" , currentTheme )
4
4
5
+ const emitThemeChangeEvent = ( theme : "light" | "dark" ) => {
6
+ const event : CustomEventMap [ "themechange" ] = new CustomEvent ( "themechange" , {
7
+ detail : { theme } ,
8
+ } )
9
+ document . dispatchEvent ( event )
10
+ }
11
+
5
12
document . addEventListener ( "nav" , ( ) => {
6
13
const switchTheme = ( e : any ) => {
7
- if ( e . target . checked ) {
8
- document . documentElement . setAttribute ( "saved-theme" , "dark" )
9
- localStorage . setItem ( "theme" , "dark" )
10
- } else {
11
- document . documentElement . setAttribute ( "saved-theme" , "light" )
12
- localStorage . setItem ( "theme" , "light" )
13
- }
14
+ const newTheme = e . target . checked ? "dark" : "light"
15
+ document . documentElement . setAttribute ( "saved-theme" , newTheme )
16
+ localStorage . setItem ( "theme" , newTheme )
17
+ emitThemeChangeEvent ( newTheme )
14
18
}
15
19
16
20
// Darkmode toggle
@@ -28,5 +32,6 @@ document.addEventListener("nav", () => {
28
32
document . documentElement . setAttribute ( "saved-theme" , newTheme )
29
33
localStorage . setItem ( "theme" , newTheme )
30
34
toggleSwitch . checked = e . matches
35
+ emitThemeChangeEvent ( newTheme )
31
36
} )
32
37
} )
0 commit comments