@jill64/svelte-dark-theme
Version:
☯ Dark Theme Manager for SvelteKit
36 lines (35 loc) • 975 B
JavaScript
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;
}
};