feat: option to follow the system-wide light/dark mode (#71)

This commit is contained in:
saica.go
2024-04-28 12:43:10 +08:00
committed by GitHub
parent 34af98edec
commit e8cbb7a829
15 changed files with 182 additions and 56 deletions

View File

@@ -17,3 +17,28 @@ export function setHue(hue: number): void {
}
r.style.setProperty('--hue', hue)
}
export const LIGHT_MODE = 'light', DARK_MODE = 'dark', AUTO_MODE = 'auto'
export function setTheme(theme: string): void {
localStorage.setItem('theme', theme)
switch (theme) {
case LIGHT_MODE:
document.documentElement.classList.remove('dark');
break
case DARK_MODE:
document.documentElement.classList.add('dark');
break
case AUTO_MODE:
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}
break
}
}
export function getStoredTheme(): string {
return localStorage.getItem('theme') || AUTO_MODE
}