@@ -3,6 +3,7 @@ const setColorMode = (mode) => {
3
3
if ( mode ) {
4
4
// Update data-* attr on html
5
5
document . documentElement . setAttribute ( 'data-force-color-mode' , mode ) ;
6
+ document . documentElement . setAttribute ( 'data-theme' , mode ) ;
6
7
// Persist in local storage
7
8
window . localStorage . setItem ( 'color-mode' , mode ) ;
8
9
// Make sure the checkbox is up-to-date
@@ -35,15 +36,21 @@ mediaQuery.addListener(() => {
35
36
// Make sure the checkbox is up-to-date
36
37
document . querySelector ( '#toggle-darkmode' ) . checked = mediaQuery . matches ;
37
38
} ) ;
39
+
40
+
38
41
// Check if there's any override. If so, let the markup know by setting an attribute on the <html> element
39
42
const colorModeOverride = window . localStorage . getItem ( 'color-mode' ) ;
40
43
const hasColorModeOverride = typeof colorModeOverride === 'string' ;
41
44
if ( hasColorModeOverride ) {
42
- document . documentElement . setAttribute ( 'data-force-color-mode' , colorModeOverride ) ;
45
+ setColorMode ( colorModeOverride ) ;
43
46
}
47
+
44
48
// Check the dark-mode checkbox if
45
49
// - The override is set to dark
46
50
// - No override is set but the system prefers dark mode
47
- if ( ( colorModeOverride == 'dark' ) || ( ! hasColorModeOverride && window . matchMedia ( '(prefers-color-scheme: dark)' ) . matches ) ) {
48
- document . querySelector ( '#toggle-darkmode' ) . checked = true ;
49
- }
51
+ if ( ( colorModeOverride == 'dark' ) || ( window . matchMedia ( '(prefers-color-scheme: dark)' ) . matches ) ) {
52
+ document . querySelector ( '#toggle-darkmode-checkbox' ) . checked = true ;
53
+ }
54
+ if ( ( colorModeOverride == 'light' ) || ( window . matchMedia ( '(prefers-color-scheme: light)' ) . matches ) ) {
55
+ document . querySelector ( '#toggle-darkmode-checkbox' ) . checked = false ;
56
+ }
0 commit comments