UNPKG

@jill64/svelte-dark-theme

Version:
36 lines (35 loc) 975 B
import { browser } from '$app/environment'; import { themeSetting } from './enum/themeSetting'; import { is } from '@jill64/svelte-device-theme'; import { storage } from '@jill64/svelte-storage'; import { enums } from '@jill64/svelte-storage/serde'; import { isThemeValue } from './util/isThemeValue'; let server = $state('light'); let local = storage({ 'svelte-dark-theme': enums(themeSetting, 'sync') }); let localTheme = $derived(local['svelte-dark-theme']); let setting = $state(localTheme); let theme = $derived(browser ? isThemeValue(setting) ? setting : is.dark ? 'dark' : 'light' : server); export const store = { get server() { return server; }, set server(value) { server = value; }, get setting() { return setting; }, set setting(value) { setting = value; local['svelte-dark-theme'] = value; }, get theme() { return theme; } };