33 lines
640 B
TypeScript
33 lines
640 B
TypeScript
const STORAGE_KEY = 'policy-ui.sidebar.collapsed.v1'
|
|
|
|
export function useAppShellLayout() {
|
|
const sidebarCollapsed = ref(false)
|
|
|
|
onMounted(() => {
|
|
if (!import.meta.client) return
|
|
try {
|
|
sidebarCollapsed.value = localStorage.getItem(STORAGE_KEY) === '1'
|
|
} catch {
|
|
/* ignore */
|
|
}
|
|
})
|
|
|
|
watch(sidebarCollapsed, (c) => {
|
|
if (!import.meta.client) return
|
|
try {
|
|
localStorage.setItem(STORAGE_KEY, c ? '1' : '0')
|
|
} catch {
|
|
/* ignore */
|
|
}
|
|
})
|
|
|
|
function toggleSidebar() {
|
|
sidebarCollapsed.value = !sidebarCollapsed.value
|
|
}
|
|
|
|
return {
|
|
sidebarCollapsed,
|
|
toggleSidebar
|
|
}
|
|
}
|