it-tools/src/stores/style.store.ts

22 lines
637 B
TypeScript
Raw Normal View History

import { useDark, useMediaQuery, useStorage, useToggle } from '@vueuse/core';
2022-04-04 01:52:59 +02:00
import { defineStore } from 'pinia';
import { type Ref, watch } from 'vue';
2022-04-04 01:52:59 +02:00
export const useStyleStore = defineStore('style', {
2022-04-18 08:36:22 +02:00
state: () => {
const isDarkTheme = useDark();
const toggleDark = useToggle(isDarkTheme);
2022-04-18 08:36:22 +02:00
const isSmallScreen = useMediaQuery('(max-width: 700px)');
2022-04-23 00:43:42 +02:00
const isMenuCollapsed = useStorage('isMenuCollapsed', isSmallScreen.value) as Ref<boolean>;
2022-04-18 08:36:22 +02:00
watch(isSmallScreen, v => (isMenuCollapsed.value = v));
2022-04-18 08:36:22 +02:00
return {
isDarkTheme,
toggleDark,
2022-04-18 08:36:22 +02:00
isMenuCollapsed,
isSmallScreen,
};
},
});