diff --git a/web/templates/base.html b/web/templates/base.html index a81bbea..7722a83 100644 --- a/web/templates/base.html +++ b/web/templates/base.html @@ -169,6 +169,26 @@ background-color: #b91c1c; } + /* Sidebar collapse behavior */ + #sidebar.collapsed { + width: 2.5rem !important; /* 10px * 10 = 2.5rem */ + border-right: none; + } + #sidebar.collapsed .sidebar-title, + #sidebar.collapsed .sidebar-actions, + #sidebar.collapsed .sidebar-content { + display: none; + } + #sidebar .toggle-btn { + background: transparent; + color: #cbd5e1; + padding: 0.25rem; + border-radius: 0.375rem; + } + #sidebar .toggle-btn:hover { + background: #374151; + } + /* Modal styles */ .modal-overlay { position: fixed; @@ -243,26 +263,34 @@
-

{{.app_name}}

-
- - - +

{{.app_name}}

+
+ +
-
+ -
+
@@ -379,8 +407,39 @@ }, duration); } - // Initialize on page load + // Sidebar toggle persistence + function applySidebarState(collapsed) { + const sidebar = document.getElementById('sidebar'); + const icon = document.getElementById('sidebar-toggle-icon'); + if (!sidebar || !icon) return; + if (collapsed) { + sidebar.classList.add('collapsed'); + icon.classList.remove('fa-chevron-left'); + icon.classList.add('fa-chevron-right'); + } else { + sidebar.classList.remove('collapsed'); + icon.classList.remove('fa-chevron-right'); + icon.classList.add('fa-chevron-left'); + } + } + document.addEventListener('DOMContentLoaded', function() { + // Restore sidebar state + const collapsed = localStorage.getItem('sidebarCollapsed') === 'true'; + applySidebarState(collapsed); + + // Wire toggle button + const toggleBtn = document.getElementById('sidebar-toggle'); + if (toggleBtn) { + toggleBtn.addEventListener('click', function() { + const currentlyCollapsed = document.getElementById('sidebar').classList.contains('collapsed'); + const next = !currentlyCollapsed; + localStorage.setItem('sidebarCollapsed', String(next)); + applySidebarState(next); + }); + } + + // Expand active path in tree expandActivePath(); });