48 lines
1.6 KiB
TypeScript
48 lines
1.6 KiB
TypeScript
import { defineStore } from 'pinia';
|
|
import defaultSettings from '@/settings';
|
|
import { useDynamicTitle } from '@/utils/dynamicTitle';
|
|
import { useStorage } from '@vueuse/core';
|
|
import { ref } from 'vue';
|
|
|
|
export const useSettingsStore = defineStore('setting', () => {
|
|
const storageSetting = useStorage<LayoutSetting>('layout-setting', {
|
|
topNav: defaultSettings.topNav,
|
|
tagsView: defaultSettings.tagsView,
|
|
fixedHeader: defaultSettings.fixedHeader,
|
|
sidebarLogo: defaultSettings.sidebarLogo,
|
|
dynamicTitle: defaultSettings.dynamicTitle,
|
|
sideTheme: defaultSettings.sideTheme,
|
|
theme: defaultSettings.theme
|
|
});
|
|
const title = ref<string>(defaultSettings.title);
|
|
const theme = ref<string>(storageSetting.value.theme);
|
|
const sideTheme = ref<string>(storageSetting.value.sideTheme);
|
|
const showSettings = ref<boolean>(defaultSettings.showSettings);
|
|
const topNav = ref<boolean>(storageSetting.value.topNav);
|
|
const tagsView = ref<boolean>(storageSetting.value.tagsView);
|
|
const fixedHeader = ref<boolean>(storageSetting.value.fixedHeader);
|
|
const sidebarLogo = ref<boolean>(storageSetting.value.sidebarLogo);
|
|
const dynamicTitle = ref<boolean>(storageSetting.value.dynamicTitle);
|
|
const animationEnable = ref<boolean>(defaultSettings.animationEnable);
|
|
const dark = ref<boolean>(defaultSettings.dark);
|
|
|
|
const setTitle = (value: string) => {
|
|
title.value = value;
|
|
useDynamicTitle();
|
|
};
|
|
return {
|
|
title,
|
|
theme,
|
|
sideTheme,
|
|
showSettings,
|
|
topNav,
|
|
tagsView,
|
|
fixedHeader,
|
|
sidebarLogo,
|
|
dynamicTitle,
|
|
animationEnable,
|
|
dark,
|
|
setTitle
|
|
};
|
|
});
|