import { defineStore } from 'pinia'; import * as styles from '@/styles'; import { darkModeKey, styleKey } from '@/config'; export const StyleService = defineStore('style', { state: () => ({ /* Styles */ asideStyle: '', asideScrollbarsStyle: '', asideBrandStyle: '', asideMenuItemStyle: '', asideMenuItemActiveStyle: '', asideMenuDropdownStyle: '', navBarItemLabelStyle: '', navBarItemLabelHoverStyle: '', navBarItemLabelActiveColorStyle: '', overlayStyle: '', /* Dark mode default false */ darkMode: false, }), actions: { // style payload = 'basic' or 'white' with blue font setStyle(payload) { if (!styles[payload]) { return; } if (typeof localStorage !== 'undefined') { localStorage.setItem(styleKey, payload); } const style = styles[payload]; for (const key in style) { this[`${key}Style`] = style[key]; } }, // toggle dark mode setDarkMode(payload = null) { this.darkMode = payload !== null ? payload : !this.darkMode; if (typeof localStorage !== 'undefined') { localStorage.setItem(darkModeKey, this.darkMode ? '1' : '0'); } if (typeof document !== 'undefined') { document.body.classList[this.darkMode ? 'add' : 'remove']('dark-scrollbars'); document.documentElement.classList[this.darkMode ? 'add' : 'remove']( 'dark-scrollbars-compat' ); } }, }, });