fix: theming

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-07-07 22:49:51 -04:00
parent 5a729d851e
commit 93d32d2a9f
9 changed files with 242 additions and 95 deletions
+11 -15
View File
@@ -1,8 +1,10 @@
import { ref, watch } from 'vue';
import { defineStore } from 'pinia';
import { useUserStore } from './userStore';
import { useTenantStore } from './tenantStore';
export type MenuMode = 'apps' | 'user-settings' | 'admin-settings';
export type ThemeMode = 'light' | 'dark' | 'system';
export const useLayoutStore = defineStore('layout', () => {
// Loading state
@@ -10,13 +12,17 @@ export const useLayoutStore = defineStore('layout', () => {
// Sidebar state - initialize from settings or defaults
const userStore = useUserStore();
const tenantStore = useTenantStore();
const sidebarDrawer = ref(userStore.getSetting('sidebar_drawer') ?? true);
const miniSidebar = ref(userStore.getSetting('mini_sidebar') ?? false);
const menuMode = ref<MenuMode>('apps');
// Theme state - initialize from settings or defaults
const theme = ref(userStore.getSetting('theme') ?? 'light');
const font = ref(userStore.getSetting('font') ?? 'Public sans');
// Theme mode - user choice, falling back to the tenant default
const theme = ref<ThemeMode>(
(userStore.getSetting('theme') as ThemeMode | null) ??
(tenantStore.getSetting('theme_default_mode') as ThemeMode | null) ??
'light'
);
// Watch and sync sidebar state to settings
watch(sidebarDrawer, (value) => {
@@ -31,10 +37,6 @@ export const useLayoutStore = defineStore('layout', () => {
userStore.setSetting('theme', value);
});
watch(font, (value) => {
userStore.setSetting('font', value);
});
// Actions
function toggleSidebarDrawer() {
sidebarDrawer.value = !sidebarDrawer.value;
@@ -44,14 +46,10 @@ export const useLayoutStore = defineStore('layout', () => {
miniSidebar.value = value;
}
function setTheme(value: string) {
function setTheme(value: ThemeMode) {
theme.value = value;
}
function setFont(value: string) {
font.value = value;
}
function setMenuMode(value: MenuMode) {
menuMode.value = value;
}
@@ -71,14 +69,12 @@ export const useLayoutStore = defineStore('layout', () => {
miniSidebar,
menuMode,
theme,
font,
// Actions
toggleSidebarDrawer,
setMiniSidebar,
setMenuMode,
toggleMenuMode,
setTheme,
setFont
setTheme
};
});