Navigation
Sidebar Navigation List
A vertical sidebar menu with icon and label pairs, a highlighted active item and click to switch active state.
<div class="sidenav-wrap">
<div class="sidenav-item sidenav-active" data-item="dashboard">
<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect></svg>
<span>Dashboard</span>
</div>
<div class="sidenav-item" data-item="courses">
<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path></svg>
<span>Courses</span>
</div>
<div class="sidenav-item" data-item="projects">
<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path></svg>
<span>Projects</span>
</div>
<div class="sidenav-item" data-item="settings">
<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>
<span>Settings</span>
</div>
</div>
.sidenav-wrap {
box-sizing: border-box;
width: 210px;
background-color: #ffffff;
border: 1px solid #e5e7eb;
border-radius: 12px;
padding: 10px;
display: flex;
flex-direction: column;
gap: 4px;
font-family: system-ui, -apple-system, sans-serif;
}
.sidenav-item {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 12px;
border-radius: 8px;
color: #4b5563;
font-size: 14px;
font-weight: 500;
cursor: pointer;
border-left: 3px solid transparent;
transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.sidenav-item:hover {
background-color: #f3f4f6;
}
.sidenav-active {
background-color: #eff6ff;
color: #3b82f6;
border-left-color: #3b82f6;
}
var sidenavItems = document.querySelectorAll('.sidenav-item');
sidenavItems.forEach(function (item) {
item.addEventListener('click', function () {
sidenavItems.forEach(function (i) { i.classList.remove('sidenav-active'); });
item.classList.add('sidenav-active');
});
});