about summary refs log tree commit diff
path: root/bskyembed/src/color-mode.ts
diff options
context:
space:
mode:
Diffstat (limited to 'bskyembed/src/color-mode.ts')
-rw-r--r--bskyembed/src/color-mode.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/bskyembed/src/color-mode.ts b/bskyembed/src/color-mode.ts
new file mode 100644
index 000000000..2b392c617
--- /dev/null
+++ b/bskyembed/src/color-mode.ts
@@ -0,0 +1,17 @@
+export function applyTheme(theme: 'light' | 'dark') {
+  document.documentElement.classList.remove('light', 'dark')
+  document.documentElement.classList.add(theme)
+}
+
+export function initColorMode() {
+  applyTheme(
+    window.matchMedia('(prefers-color-scheme: dark)').matches
+      ? 'dark'
+      : 'light',
+  )
+  window
+    .matchMedia('(prefers-color-scheme: dark)')
+    .addEventListener('change', mql => {
+      applyTheme(mql.matches ? 'dark' : 'light')
+    })
+}