File size: 725 Bytes
2ebb1e7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { writable } from 'svelte/store';
import { browser } from '$app/environment';

function createTheme() {
	const { subscribe, set, update } = writable(false);

	return {
		subscribe,
		init() {
			if (!browser) return;
			const saved = localStorage.getItem('theme');
			const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
			const dark = saved === 'dark' || (!saved && prefersDark);
			set(dark);
			document.documentElement.classList.toggle('dark', dark);
		},
		toggle() {
			if (!browser) return;
			const isDark = document.documentElement.classList.toggle('dark');
			localStorage.setItem('theme', isDark ? 'dark' : 'light');
			set(isDark);
		}
	};
}

export const theme = createTheme();