@@ -16,22 +16,24 @@ function toggleSidebar() {
1616}
1717{% endjs %}
1818<script >
19- function setTheme (dark ) {
20- const html = document .documentElement ;
21- const toggleIcon = document .getElementById (" theme-toggle-icon" )
22- if (dark) {
23- html .setAttribute (" data-theme" , " dark" );
24- toggleIcon .textContent = " 🌙" ;
25- localStorage .setItem (" theme" , " dark" );
26- } else {
27- html .setAttribute (" data-theme" , " light" );
28- toggleIcon .textContent = " ☀️" ;
29- localStorage .setItem (" theme" , " light" );
19+ function setTheme (dark , save ) {
20+ const theme = dark ? " dark" : " light" ;
21+
22+ document .documentElement .setAttribute (" data-theme" , theme);
23+ document .getElementById (" theme-toggle-icon" ).textContent = dark ? " 🌙" : " ☀️" ;
24+
25+ if (save) {
26+ localStorage .setItem (" theme" , theme);
3027 }
3128}
3229
3330function toggleTheme () {
34- setTheme (document .documentElement .getAttribute (" data-theme" ) !== " dark" );
31+ setTheme (document .documentElement .getAttribute (" data-theme" ) !== " dark" , true );
32+ }
33+
34+ function fromMedia (prefersDark ) {
35+ const saved = localStorage .getItem (" theme" );
36+ setTheme (saved === " dark" || (! saved && prefersDark), false );
3537}
3638 </script >
3739
@@ -52,8 +54,9 @@ function toggleTheme() {
5254
5355<script >
5456try {
55- var saved = localStorage .getItem (" theme" );
56- var prefersDark = window .matchMedia (" (prefers-color-scheme: dark)" ).matches ;
57- setTheme (saved === " dark" || (! saved && prefersDark))
57+ fromMedia (window .matchMedia (" (prefers-color-scheme: dark)" ).matches );
58+ window .matchMedia (" (prefers-color-scheme: dark)" ).addEventListener (" change" , event => {
59+ fromMedia (event .matches );
60+ });
5861} catch (e) {}
5962 </script >
0 commit comments