Spaces:
Running
Running
File size: 983 Bytes
2e1ab99 afcd851 2e1ab99 afcd851 2e1ab99 afcd851 2e1ab99 afcd851 2e1ab99 |
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 28 29 30 31 32 33 34 35 |
import { atom } from 'nanostores';
import { logStore } from './logs';
export type Theme = 'dark' | 'light';
export const kTheme = 'bolt_theme';
export function themeIsDark() {
return themeStore.get() === 'dark';
}
export const DEFAULT_THEME = 'dark';
export const themeStore = atom<Theme>(initStore());
function initStore(): Theme {
if (!import.meta.env.SSR) {
const persistedTheme = localStorage.getItem(kTheme) || (DEFAULT_THEME as Theme | undefined);
const themeAttribute = document.querySelector('html')?.getAttribute('data-theme');
return (persistedTheme ?? themeAttribute) as Theme;
}
return DEFAULT_THEME;
}
export function toggleTheme() {
const currentTheme = themeStore.get();
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
themeStore.set(newTheme);
logStore.logSystem(`Theme changed to ${newTheme} mode`);
localStorage.setItem(kTheme, newTheme);
document.querySelector('html')?.setAttribute('data-theme', newTheme);
}
|