diff --git a/static/scripts/theme-switch.js b/static/scripts/theme-switch.js index 65c6a539e..5262a2197 100644 --- a/static/scripts/theme-switch.js +++ b/static/scripts/theme-switch.js @@ -1,5 +1,11 @@ "use strict"; +// val: "light" | "dark" +function renderTheme(val) { + document.documentElement.setAttribute("data-theme", val); + document.getElementById("syntax-theme").href = `/styles/syntax-theme-${val}.css` +} + function changeThemeTo(val) { if (val === "system") { setThemeToSystemPref(); @@ -8,7 +14,7 @@ function changeThemeTo(val) { localStorage.removeItem("blog-rust-lang-org-theme"); } } else { - document.documentElement.setAttribute("data-theme", val); + renderTheme(val); // save theme prefs in the browser if (storageAvailable("localStorage")) { localStorage.setItem("blog-rust-lang-org-theme", val); @@ -54,9 +60,9 @@ function handleBlur(event) { function setThemeToSystemPref() { if (window.matchMedia("(prefers-color-scheme: dark)").matches) { - document.documentElement.setAttribute("data-theme", "dark"); + renderTheme("dark"); } else { - document.documentElement.setAttribute("data-theme", "light"); + renderTheme("light"); } } @@ -66,7 +72,7 @@ if (storageAvailable("localStorage")) { savedTheme = localStorage.getItem("blog-rust-lang-org-theme"); } if (savedTheme) { - document.documentElement.setAttribute("data-theme", savedTheme); + renderTheme(savedTheme); } else { setThemeToSystemPref(); } diff --git a/templates/headers.html b/templates/headers.html index 8a66d93ed..81d5e8f73 100644 --- a/templates/headers.html +++ b/templates/headers.html @@ -19,12 +19,13 @@ - - +