summaryrefslogtreecommitdiff
path: root/static
diff options
context:
space:
mode:
Diffstat (limited to 'static')
-rw-r--r--static/js/theme-switch.js28
1 files changed, 28 insertions, 0 deletions
diff --git a/static/js/theme-switch.js b/static/js/theme-switch.js
new file mode 100644
index 0000000..a617fda
--- /dev/null
+++ b/static/js/theme-switch.js
@@ -0,0 +1,28 @@
+function isAuto() {
+ return document.body.classList.contains("auto");
+}
+
+function setTheme() {
+ if (!isAuto()) {
+ return
+ }
+
+ document.body.classList.remove("auto");
+ let cls = "light";
+ if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
+ cls = "dark";
+ }
+
+ document.body.classList.add(cls);
+}
+
+function invertBody() {
+ document.body.classList.toggle("dark");
+ document.body.classList.toggle("light");
+}
+
+if (isAuto()) {
+ window.matchMedia('(prefers-color-scheme: dark)').addListener(invertBody);
+}
+
+setTheme();