import { defineStore } from 'pinia' import { useStorage } from '@vueuse/core' export type LocaleType = 'zh-CN' | 'en' /** 应用级 UI 状态:侧边栏折叠、语言、组件尺寸、移动端标记 */ export const useAppStore = defineStore('app', () => { const sidebarCollapsed = useStorage('app.sidebarCollapsed', false) const locale = useStorage('app.locale', 'zh-CN') const size = useStorage<'default' | 'small' | 'large'>('app.size', 'default') const isMobile = ref(false) /** 是否已加载过动态路由(刷新后需重新拉菜单) */ const routesLoaded = ref(false) function toggleSidebar() { sidebarCollapsed.value = !sidebarCollapsed.value } function setLocale(value: LocaleType) { locale.value = value } return { sidebarCollapsed, locale, size, isMobile, routesLoaded, toggleSidebar, setLocale } })