diff --git a/materialious/src/routes/+layout.svelte b/materialious/src/routes/+layout.svelte index 74c15898..423d1383 100644 --- a/materialious/src/routes/+layout.svelte +++ b/materialious/src/routes/+layout.svelte @@ -4,6 +4,8 @@ import 'beercss'; import 'material-dynamic-colors'; import { onMount } from 'svelte'; + import { get } from 'svelte/store'; + import { darkMode } from '../store'; const pages = [ { @@ -33,9 +35,43 @@ } ]; - onMount(() => { - if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + function toggleDarkMode() { + const isDark = get(darkMode); + + if (isDark) { + ui('mode', 'light'); + darkMode.set(false); + } else { ui('mode', 'dark'); + darkMode.set(true); + } + } + + darkMode.subscribe((isDark) => { + if (isDark) { + ui('mode', 'dark'); + } else { + ui('mode', 'light'); + } + }); + + onMount(() => { + const isDark = get(darkMode); + + if (isDark === null) { + if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + darkMode.set(true); + ui('mode', 'dark'); + } else { + darkMode.set(false); + ui('mode', 'light'); + } + } else { + if (isDark) { + ui('mode', 'dark'); + } else { + ui('mode', 'light'); + } } }); @@ -76,6 +112,15 @@
Customize Materialious
+