Collapsible vertical navigation sidebar for signed-in pages (dashboard, admin, client area). Features expandable/collapsed states, mobile drawer behavior, and localStorage persistence. No logo/brand included—use with Topbar (App Minimal) for complete header.
Sidebar navigation optimized for
signed-in application UI with dark/glassy surfaces.
Automatically activated inside
.app-shell
scope.
Full sidebar navigation rendered in glassy context. Demonstrates brand, navigation items, groups, and footer toggle all together on a dark/glassy surface.
<!-- Sidebar (Signed-in App Shell) -->
<div x-data="sidebarApp()">
<aside class="sidebar-app" x-ref="sidebar">
<!-- Brand -->
<div class="sidebar-brand">
<a href="/" class="sidebar-brand-link">
<div class="sidebar-brand-logo">L</div>
<span class="sidebar-brand-name">AzylKampinos</span>
</a>
</div>
<!-- Navigation -->
<nav class="sidebar-nav">
<ul class="sidebar-nav-list">
<li>
<a href="/dashboard" class="sidebar-nav-item is-active" @click="closeMobile()">
<svg class="sidebar-nav-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" />
</svg>
<span class="sidebar-nav-label">Dashboard</span>
</a>
</li>
</ul>
<?php if ($user['is_admin']): ?>
<div class="sidebar-group">
<div class="sidebar-group-title">Admin</div>
<ul class="sidebar-nav-list">
<li>
<a href="/admin/users" class="sidebar-nav-item" @click="closeMobile()">
<svg class="sidebar-nav-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z" />
</svg>
<span class="sidebar-nav-label">Users</span>
</a>
</li>
</ul>
</div>
<?php endif; ?>
</nav>
<!-- Footer -->
<div class="sidebar-footer">
<button class="sidebar-toggle" @click="toggleCollapse()" title="Collapse sidebar">
<svg class="sidebar-toggle-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 19l-7-7 7-7m8 14l-7-7 7-7" />
</svg>
</button>
</div>
</aside>
</div>
is-active class on current page's nav itemcloseMobile() on nav clicks to auto-close drawermargin-left (256px expanded, 80px collapsed)Sidebar styles are defined in:
/assets/css/sidebar-app.css
Includes: Layout, spacing, colors, interactive states, mobile drawer behavior, responsive breakpoints, dark mode support, and Alpine.js state-driven styling.