Sidebar optional

A flexible navigation sidebar with nested items, dark/light themes, and mobile-responsive behavior.

Simple API

Collapsible items are auto-initialized. Control sidebars with Sidebar.toggle(), Sidebar.open(), Sidebar.close().

Basic Sidebar

A simple sidebar with navigation items. Works with CSS only for static navigation.

Main content area

HTML
<aside class="focus-sidebar">
  <div class="focus-sidebar-header">
    <h3>My App</h3>
  </div>
  <nav class="focus-sidebar-nav">
    <a href="#" class="focus-sidebar-item focus-sidebar-item-active">
      <i class="fa fa-home"></i>
      <span>Dashboard</span>
    </a>
    <a href="#" class="focus-sidebar-item">
      <i class="fa fa-user"></i>
      <span>Profile</span>
    </a>
  </nav>
</aside>

Sections with Collapsible Items

Organize navigation with sections and collapsible items. Collapsible items are auto-initialized when you include focus-ui.js!

Click "Settings" to navigate, or click the chevron to expand nested options.

HTML
<aside class="focus-sidebar">
  <nav class="focus-sidebar-nav">
    <div class="focus-sidebar-section">
      <h4>Main</h4>
      <a href="#" class="focus-sidebar-item">
        <i class="fa fa-home"></i>
        <span>Home</span>
      </a>

      <!-- Collapsible item -->
      <div class="focus-sidebar-item-wrapper">
        <a href="#" class="focus-sidebar-item focus-sidebar-item-with-toggle">
          <i class="fa fa-cog"></i>
          <span>Settings</span>
        </a>
        <button class="focus-sidebar-collapse-toggle collapsed"
                data-collapse-id="settings"
                aria-label="Toggle Settings">
          <i class="fa fa-chevron-down"></i>
        </button>
      </div>
      <div class="focus-sidebar-collapsible-items collapsed" id="collapse-settings">
        <a href="#" class="focus-sidebar-item focus-sidebar-item-nested">
          <i class="fa fa-user-cog"></i>
          <span>Account</span>
        </a>
      </div>
    </div>
  </nav>
</aside>

Collapsible Behaviors

Two patterns: Navigation + Toggle (click name to navigate, arrow to expand) vs Toggle Only (click anywhere to expand, no navigation).

Two Collapsible Patterns

Blog Posts (Navigation + Toggle)
  • Click "Blog Posts" text → navigates to page
  • Click chevron → expands/collapses nested items
Settings (Toggle Only)
  • Click anywhere → expands/collapses
  • No navigation (Settings has no own page)
HTML
<!-- Pattern 1: Navigation + Toggle (has page) -->
<div class="focus-sidebar-item-wrapper">
  <a href="/blog" class="focus-sidebar-item focus-sidebar-item-with-toggle">
    <i class="fa fa-blog"></i>
    <span>Blog Posts</span>
  </a>
  <button class="focus-sidebar-collapse-toggle collapsed"
          data-collapse-id="blog">
    <i class="fa fa-chevron-down"></i>
  </button>
</div>
<div class="focus-sidebar-collapsible-items collapsed" id="collapse-blog">
  <a href="#" class="focus-sidebar-item focus-sidebar-item-nested">New Post</a>
</div>

<!-- Pattern 2: Toggle Only (no page) -->
<button class="focus-sidebar-item focus-sidebar-item-collapsible collapsed"
        data-collapse-id="settings-group">
  <i class="fa fa-cog"></i>
  <span>Settings</span>
  <i class="fa fa-chevron-down focus-sidebar-collapse-icon"></i>
</button>
<div class="focus-sidebar-collapsible-items collapsed" id="collapse-settings-group">
  <a href="#" class="focus-sidebar-item focus-sidebar-item-nested">Account</a>
</div>

Full Documentation Sidebar

Complete sidebar with sections, collapsible groups, and footer - just like this docs site!

Full Sidebar Structure

  • 2 sections with headers
  • Regular navigation items
  • Collapsible Templates group
  • Footer with GitHub link

Try expanding Templates!

Dark Theme

Add .focus-sidebar-dark for a dark variant.

Content area

HTML
<aside class="focus-sidebar focus-sidebar-dark">
  ...
</aside>

Sidebar Widths

Control sidebar width with modifier classes.

HTML
<!-- Narrow (200px) -->
<aside class="focus-sidebar focus-sidebar-narrow">...</aside>

<!-- Default (260px) -->
<aside class="focus-sidebar">...</aside>

<!-- Wide (320px) -->
<aside class="focus-sidebar focus-sidebar-wide">...</aside>

Mobile Responsive

On mobile (≤768px), the sidebar becomes a fixed overlay. Use the Sidebar API to toggle visibility.

JavaScript
// Toggle sidebar visibility on menu button click
document.getElementById('menuBtn').addEventListener('click', () => {
  Sidebar.toggle('#mySidebar')
})

// Close sidebar when clicking outside of it (but not on the menu button itself)
document.addEventListener('click', (e) => {
  const sidebar = document.getElementById('mySidebar')
  // Only close if click target is outside sidebar AND is not the menu button
  if (!sidebar.contains(e.target) && !e.target.matches('#menuBtn')) {
    Sidebar.close('#mySidebar')
  }
})

JavaScript API

Control sidebar visibility and collapsible items programmatically. Collapsible items are auto-initialized on page load.

Initialize

JavaScript
Sidebar.init('#mySidebar')

Sidebar.init('#mySidebar', {
  accordion: true,
  scope: 'sidebar',
  expandActiveGroup: true
})

Toggle Visibility (Mobile)

JavaScript
Sidebar.toggle('#mySidebar')
Sidebar.open('#mySidebar')
Sidebar.close('#mySidebar')

Collapsible Items

JavaScript
Sidebar.toggleItem('.focus-sidebar-item')
Sidebar.expand('.focus-sidebar-item')
Sidebar.collapse('.focus-sidebar-item')

Methods

Method Description
Sidebar.init(selector, options) Initialize collapsible items. Auto-called on page load.
Sidebar.toggle(selector) Toggle sidebar visibility (mobile overlay)
Sidebar.open(selector) Open the sidebar
Sidebar.close(selector) Close the sidebar
Sidebar.toggleItem(selector) Toggle nested item expansion
Sidebar.expand(selector) Expand a nested item
Sidebar.collapse(selector) Collapse a nested item

Options

Option Type Default Description
accordion boolean true Only one item can be expanded at a time
scope string 'sidebar' Accordion scope: 'sidebar' (entire) or 'section' (per section)
expandActiveGroup boolean true Auto-expand group containing the active page

CSS Classes Reference

Class Description
.focus-sidebar Base sidebar class
.focus-sidebar-dark Dark theme variant
.focus-sidebar-narrow Narrow width (200px)
.focus-sidebar-wide Wide width (320px)
.focus-sidebar-open Mobile sidebar visible state
.focus-sidebar-header Header section
.focus-sidebar-footer Footer section
.focus-sidebar-nav Navigation container
.focus-sidebar-section Section with header
.focus-sidebar-item Navigation item
.focus-sidebar-item-active Active/selected state
.focus-sidebar-item-nested Nested item (indented)
.focus-sidebar-item-wrapper Container for collapsible items
.focus-sidebar-item-with-toggle Item with adjacent collapse toggle
.focus-sidebar-collapse-toggle Chevron button to toggle collapse
.focus-sidebar-collapsible-items Container for nested collapsible items