Skip to content

Commit 71792d8

Browse files
committed
Make syntax hightlight theme respect theme setting
1 parent 3c597d5 commit 71792d8

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

static/scripts/theme-switch.js

+10-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
"use strict";
22

3+
// val: "light" | "dark"
4+
function renderTheme(val) {
5+
document.documentElement.setAttribute("data-theme", val);
6+
document.getElementById("syntax-theme").href = `/styles/syntax-theme-${val}.css`
7+
}
8+
39
function changeThemeTo(val) {
410
if (val === "system") {
511
setThemeToSystemPref();
@@ -8,7 +14,7 @@ function changeThemeTo(val) {
814
localStorage.removeItem("blog-rust-lang-org-theme");
915
}
1016
} else {
11-
document.documentElement.setAttribute("data-theme", val);
17+
renderTheme(val);
1218
// save theme prefs in the browser
1319
if (storageAvailable("localStorage")) {
1420
localStorage.setItem("blog-rust-lang-org-theme", val);
@@ -54,9 +60,9 @@ function handleBlur(event) {
5460

5561
function setThemeToSystemPref() {
5662
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
57-
document.documentElement.setAttribute("data-theme", "dark");
63+
renderTheme("dark");
5864
} else {
59-
document.documentElement.setAttribute("data-theme", "light");
65+
renderTheme("light");
6066
}
6167
}
6268

@@ -66,7 +72,7 @@ if (storageAvailable("localStorage")) {
6672
savedTheme = localStorage.getItem("blog-rust-lang-org-theme");
6773
}
6874
if (savedTheme) {
69-
document.documentElement.setAttribute("data-theme", savedTheme);
75+
renderTheme(savedTheme);
7076
} else {
7177
setThemeToSystemPref();
7278
}

templates/headers.html

+3-2
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@
1919
<link rel="stylesheet" href="{{ config.base_url | safe }}/styles/tachyons.css"/>
2020
<link rel="stylesheet" href="{{ config.base_url | safe }}/styles/fonts.css"/>
2121
<link rel="stylesheet" href="{{ config.base_url | safe }}/styles/app.css"/>
22-
<link rel="stylesheet" type="text/css" href="/styles/syntax-theme-dark.css" media="(prefers-color-scheme: dark)" />
23-
<link rel="stylesheet" type="text/css" href="/styles/syntax-theme-light.css" media="(prefers-color-scheme: light)" />
22+
<link rel="stylesheet" type="text/css" id="syntax-theme" />
2423

2524
<!-- stylesheet for user agents without js -->
2625
<noscript>
2726
<link rel="stylesheet" href="{{ config.base_url | safe }}/styles/noscript.css">
27+
<link rel="stylesheet" type="text/css" href="/styles/syntax-theme-dark.css" media="(prefers-color-scheme: dark)" />
28+
<link rel="stylesheet" type="text/css" href="/styles/syntax-theme-light.css" media="(prefers-color-scheme: light)" />
2829
</noscript>
2930

3031
<!-- favicon -->

0 commit comments

Comments
 (0)