mirror of
https://github.com/saicaca/fuwari.git
synced 2026-01-11 14:52:52 +01:00
feat: light/dark modes switch immediately with the system theme (#95)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import {AUTO_MODE, DARK_MODE, DEFAULT_THEME, LIGHT_MODE} from "@constants/constants.ts";
|
||||
import type { LIGHT_DARK_MODE } from '@/types/config'
|
||||
|
||||
export function getDefaultHue(): number {
|
||||
const fallback = '250'
|
||||
@@ -20,25 +21,30 @@ export function setHue(hue: number): void {
|
||||
r.style.setProperty('--hue', hue)
|
||||
}
|
||||
|
||||
export function setTheme(theme: string): void {
|
||||
localStorage.setItem('theme', theme)
|
||||
|
||||
export function applyThemeToDocument(theme: LIGHT_DARK_MODE) {
|
||||
switch (theme) {
|
||||
case LIGHT_MODE:
|
||||
document.documentElement.classList.remove('dark');
|
||||
document.documentElement.classList.remove('dark')
|
||||
break
|
||||
case DARK_MODE:
|
||||
document.documentElement.classList.add('dark');
|
||||
document.documentElement.classList.add('dark')
|
||||
break
|
||||
case AUTO_MODE:
|
||||
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
document.documentElement.classList.add('dark');
|
||||
document.documentElement.classList.add('dark')
|
||||
} else {
|
||||
document.documentElement.classList.remove('dark');
|
||||
document.documentElement.classList.remove('dark')
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
export function getStoredTheme(): string {
|
||||
return localStorage.getItem('theme') || DEFAULT_THEME
|
||||
}
|
||||
export function setTheme(theme: LIGHT_DARK_MODE): void {
|
||||
localStorage.setItem('theme', theme)
|
||||
applyThemeToDocument(theme)
|
||||
}
|
||||
|
||||
export function getStoredTheme(): LIGHT_DARK_MODE {
|
||||
return localStorage.getItem('theme') as LIGHT_DARK_MODE || DEFAULT_THEME
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user