Files
haex-hub-mirror/src/stores/ui/index.ts
haex c5c30fd4c4 Fix Vite 7.x TDZ error in __vite__mapDeps with post-build script
- Add post-build script to fix Temporal Dead Zone error in generated code
- Remove debug logging from stores and composables
- Simplify init-logger plugin to essential error handling
- Fix circular store dependency in useUiStore

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 20:21:12 +01:00

88 lines
2.0 KiB
TypeScript

import { breakpointsTailwind } from '@vueuse/core'
import { broadcastContextToAllExtensions } from '~/composables/extensionMessageHandler'
import de from './de.json'
import en from './en.json'
export const useUiStore = defineStore('uiStore', () => {
const breakpoints = useBreakpoints(breakpointsTailwind)
// "smAndDown" gilt für sm, xs usw.
const isSmallScreen = breakpoints.smaller('sm')
const { $i18n } = useNuxtApp()
const { locale } = useI18n({
useScope: 'global',
})
$i18n.setLocaleMessage('de', {
ui: de,
})
$i18n.setLocaleMessage('en', { ui: en })
const availableThemes = ref([
{
value: 'dark',
label: $i18n.t('ui.dark'),
icon: 'line-md:moon-rising-alt-loop',
},
{
value: 'light',
label: $i18n.t('ui.light'),
icon: 'line-md:moon-to-sunny-outline-loop-transition',
},
/* {
value: 'soft',
label: t('ui.soft'),
icon: 'line-md:paint-drop',
},
{
value: 'corporate',
label: t('ui.corporate'),
icon: 'hugeicons:corporate',
}, */
])
const defaultTheme = ref('dark')
const currentThemeName = ref(defaultTheme.value)
const currentTheme = computed(
() =>
availableThemes.value.find(
(theme) => theme.value === currentThemeName.value,
) ?? availableThemes.value.at(0),
)
const colorMode = useColorMode()
watchImmediate(currentThemeName, () => {
colorMode.preference = currentThemeName.value
})
// Broadcast theme and locale changes to extensions
watch([currentThemeName, locale], async () => {
const deviceStore = useDeviceStore()
const platformValue = await deviceStore.platform
broadcastContextToAllExtensions({
theme: currentThemeName.value,
locale: locale.value,
platform: platformValue,
})
})
const viewportHeightWithoutHeader = ref(0)
const headerHeight = ref(0)
return {
availableThemes,
viewportHeightWithoutHeader,
headerHeight,
currentTheme,
currentThemeName,
defaultTheme,
isSmallScreen,
}
})