settings.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { defineStore } from 'pinia';
  2. import defaultSettings from '@/settings';
  3. import { useDynamicTitle } from '@/utils/dynamicTitle';
  4. export const useSettingsStore = defineStore('setting', () => {
  5. const storageSetting = useStorage<LayoutSetting>('layout-setting', {
  6. topNav: defaultSettings.topNav,
  7. tagsView: defaultSettings.tagsView,
  8. fixedHeader: defaultSettings.fixedHeader,
  9. sidebarLogo: defaultSettings.sidebarLogo,
  10. dynamicTitle: defaultSettings.dynamicTitle,
  11. sideTheme: defaultSettings.sideTheme,
  12. theme: defaultSettings.theme
  13. });
  14. const title = ref<string>(defaultSettings.title);
  15. const theme = ref<string>(storageSetting.value.theme);
  16. const sideTheme = ref<string>(storageSetting.value.sideTheme);
  17. const showSettings = ref<boolean>(defaultSettings.showSettings);
  18. const topNav = ref<boolean>(storageSetting.value.topNav);
  19. const tagsView = ref<boolean>(storageSetting.value.tagsView);
  20. const fixedHeader = ref<boolean>(storageSetting.value.fixedHeader);
  21. const sidebarLogo = ref<boolean>(storageSetting.value.sidebarLogo);
  22. const dynamicTitle = ref<boolean>(storageSetting.value.dynamicTitle);
  23. const animationEnable = ref<boolean>(defaultSettings.animationEnable);
  24. const dark = ref<boolean>(defaultSettings.dark);
  25. const setTitle = (value: string) => {
  26. title.value = value;
  27. useDynamicTitle();
  28. };
  29. return {
  30. title,
  31. theme,
  32. sideTheme,
  33. showSettings,
  34. topNav,
  35. tagsView,
  36. fixedHeader,
  37. sidebarLogo,
  38. dynamicTitle,
  39. animationEnable,
  40. dark,
  41. setTitle
  42. };
  43. });
  44. export default useSettingsStore;