diff --git a/admin-frontend-vue/src/layout/AdminLayout.vue b/admin-frontend-vue/src/layout/AdminLayout.vue
index 9519949c..a3ad28ff 100644
--- a/admin-frontend-vue/src/layout/AdminLayout.vue
+++ b/admin-frontend-vue/src/layout/AdminLayout.vue
@@ -12,11 +12,27 @@ import {
shouldShowEmptyMenu,
} from '@/layout/empty-state'
import GlobalErrorContainer from '@/layout/GlobalErrorContainer.vue'
+import { initialCollapsed, toggleCollapsed, writeCollapsePreference } from '@/layout/sidebar-collapse'
const route = useRoute()
const router = useRouter()
const session = useAdminSessionStore()
-const collapsed = ref(false)
+const collapsed = ref(readInitialCollapse())
+
+function readInitialCollapse(): boolean {
+ const storage = typeof window !== 'undefined' ? window.localStorage : null
+ const width = typeof window !== 'undefined' ? window.innerWidth : 0
+ return initialCollapsed(width, storage)
+}
+
+function setCollapsed(value: boolean): void {
+ collapsed.value = value
+ if (typeof window !== 'undefined') writeCollapsePreference(window.localStorage, value)
+}
+
+function toggleSidebar(): void {
+ setCollapsed(toggleCollapsed(collapsed.value))
+}
const activePath = computed(() => route.path)
const menuEntries = computed(() => toSidebarEntries(session.menuTree))
@@ -65,7 +81,7 @@ async function signOut() {
-