import { toRefs, reactive } from 'vue'; const state = reactive({ departments: [], theme: { variant: "light", icon: "sun" }, expandedMenu: true, }); export default function userPreferenceComposable(){ function changeTheme(theme: string): void { if (theme === 'dark'){ localStorage.theme = 'dark'; document.documentElement.classList.add('dark') } else { localStorage.theme = 'light'; document.documentElement.classList.remove('dark') } } function initPreferences(preference: any): void{ state.departments = preference.departments; state.theme.variant = preference.theme; state.theme.icon = preference.theme === 'light' ? 'sun' : 'moon'; state.expandedMenu = preference.expandedMenu; changeTheme(preference.theme) } function toggleTheme(): void { if (state.theme.variant === 'dark'){ state.theme.variant = 'light'; state.theme.icon = 'sun' changeTheme('light') }else{ state.theme.variant = 'dark' state.theme.icon = 'moon' changeTheme('dark') } } function loadPreferedTheme() { if('theme' in localStorage){ const theme = localStorage.getItem('theme') ?? 'light'; state.theme.variant = theme; state.theme.icon = theme === 'light' ? 'sun' : 'moon' } changeTheme(state.theme.variant) } return { ...toRefs(state), initPreferences, loadPreferedTheme, toggleTheme } }