* initial set of fixes (toggle sidebar, profile pagination) * more fixes, bump version * fix lint: * fix quick switcher ordering
39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
import { defineStore } from 'pinia'
|
|
|
|
export const useTheming = defineStore('themeStore', {
|
|
state: () => ({
|
|
themeOptions: ['dark', 'light', 'oled', 'system'],
|
|
advancedRendering: true,
|
|
selectedTheme: 'dark',
|
|
toggleSidebar: false,
|
|
|
|
devMode: false,
|
|
featureFlags: {},
|
|
}),
|
|
actions: {
|
|
setThemeState(newTheme) {
|
|
if (this.themeOptions.includes(newTheme)) this.selectedTheme = newTheme
|
|
else console.warn('Selected theme is not present. Check themeOptions.')
|
|
|
|
this.setThemeClass()
|
|
},
|
|
setThemeClass() {
|
|
for (const theme of this.themeOptions) {
|
|
document.getElementsByTagName('html')[0].classList.remove(`${theme}-mode`)
|
|
}
|
|
|
|
let theme = this.selectedTheme
|
|
if (this.selectedTheme === 'system') {
|
|
const darkThemeMq = window.matchMedia('(prefers-color-scheme: dark)')
|
|
if (darkThemeMq.matches) {
|
|
theme = 'dark'
|
|
} else {
|
|
theme = 'light'
|
|
}
|
|
}
|
|
|
|
document.getElementsByTagName('html')[0].classList.add(`${theme}-mode`)
|
|
},
|
|
},
|
|
})
|