mirror of
https://github.com/He4eT/elseifplayer.git
synced 2026-05-04 17:07:22 +00:00
44 lines
851 B
JavaScript
44 lines
851 B
JavaScript
import { useState } from 'preact/hooks'
|
|
|
|
import './themes.css'
|
|
|
|
const themes = [
|
|
'light',
|
|
'dim',
|
|
'dark',
|
|
'solarized-light',
|
|
'solarized-dark',
|
|
'emo',
|
|
'nord',
|
|
'redrum',
|
|
'toxin',
|
|
'valve',
|
|
'wasp',
|
|
]
|
|
|
|
const LS_THEME_KEY = 'elseifplayer/theme'
|
|
const DEFAULT_THEME = themes[0]
|
|
|
|
const getSavedTheme = () => {
|
|
const savedTheme = localStorage.getItem(LS_THEME_KEY)
|
|
return savedTheme || DEFAULT_THEME
|
|
}
|
|
|
|
const assertTheme = (theme) =>
|
|
themes.includes(theme)
|
|
? theme
|
|
: getSavedTheme()
|
|
|
|
export const useThemeEngine = (initialTheme = getSavedTheme()) => {
|
|
const [currentTheme, setCurrentTheme] =
|
|
useState(initialTheme)
|
|
|
|
const setTheme = (theme) => {
|
|
const newTheme = assertTheme(theme)
|
|
|
|
setCurrentTheme(newTheme)
|
|
localStorage.setItem(LS_THEME_KEY, newTheme)
|
|
}
|
|
|
|
return { currentTheme, setTheme, themes }
|
|
}
|