2023-06-18 09:59:22 +01:00
|
|
|
import { useDark, useMediaQuery, useStorage, useToggle } from '@vueuse/core';
|
2022-04-04 01:52:59 +02:00
|
|
|
import { defineStore } from 'pinia';
|
2023-05-28 23:13:24 +02:00
|
|
|
import { type Ref, watch } from 'vue';
|
2022-04-04 01:52:59 +02:00
|
|
|
|
2022-04-04 17:27:34 +02:00
|
|
|
export const useStyleStore = defineStore('style', {
|
2022-04-18 08:36:22 +02:00
|
|
|
state: () => {
|
2023-06-18 09:59:22 +01:00
|
|
|
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
|
|
|
|
2023-05-28 23:13:24 +02:00
|
|
|
watch(isSmallScreen, v => (isMenuCollapsed.value = v));
|
2022-04-18 08:36:22 +02:00
|
|
|
|
|
|
|
return {
|
|
|
|
isDarkTheme,
|
2023-06-18 09:59:22 +01:00
|
|
|
toggleDark,
|
2022-04-18 08:36:22 +02:00
|
|
|
isMenuCollapsed,
|
|
|
|
isSmallScreen,
|
|
|
|
};
|
|
|
|
},
|
2022-04-04 17:27:34 +02:00
|
|
|
});
|