Sidebar

A composable sidebar navigation component with header, content groups, footer, collapsible icon mode, and mobile drawer.

This component requires softui.js for interactive behavior.

Default

<aside class="sui-sidebar sui-sidebar-bordered">
  <div class="sui-sidebar-content">
    <div class="sui-sidebar-group">
      <h6 class="sui-sidebar-group-label">Main</h6>
      <ul class="sui-sidebar-nav">
        <li><a href="#" class="active">Dashboard</a></li>
        <li><a href="#">Analytics</a></li>
        <li><a href="#">Customers</a></li>
        <li><a href="#">Products</a></li>
        <li><a href="#">Orders</a></li>
      </ul>
    </div>
    <div class="sui-sidebar-divider"></div>
    <div class="sui-sidebar-group">
      <h6 class="sui-sidebar-group-label">Settings</h6>
      <ul class="sui-sidebar-nav">
        <li><a href="#">Team</a></li>
        <li><a href="#">Billing</a></li>
        <li><a href="#">Integrations</a></li>
      </ul>
    </div>
  </div>
</aside>

With Groups

<aside class="sui-sidebar sui-sidebar-bordered">
  <div class="sui-sidebar-content">
    <div class="sui-sidebar-group">
      <h6 class="sui-sidebar-group-label">Platform</h6>
      <ul class="sui-sidebar-nav">
        <li><a href="#" class="active">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/></svg>
          <span>Dashboard</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 00-3-3.87"/><path d="M16 3.13a4 4 0 010 7.75"/></svg>
          <span>Customers</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><line x1="3" y1="6" x2="3.01" y2="6"/><line x1="3" y1="12" x2="3.01" y2="12"/><line x1="3" y1="18" x2="3.01" y2="18"/></svg>
          <span>Orders</span>
        </a></li>
      </ul>
    </div>
    <div class="sui-sidebar-divider"></div>
    <div class="sui-sidebar-group">
      <h6 class="sui-sidebar-group-label">Account</h6>
      <ul class="sui-sidebar-nav">
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"/></svg>
          <span>Settings</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="4" width="22" height="16" rx="2" ry="2"/><line x1="1" y1="10" x2="23" y2="10"/></svg>
          <span>Billing</span>
        </a></li>
      </ul>
    </div>
  </div>
</aside>

With Badges

Main content area
<aside class="sui-sidebar sui-sidebar-bordered">
  <div class="sui-sidebar-content">
    <div class="sui-sidebar-group">
      <ul class="sui-sidebar-nav">
        <li><a href="#" class="active">
          <span>Inbox</span>
          <span class="sui-sidebar-badge">12</span>
        </a></li>
        <li><a href="#">
          <span>Drafts</span>
          <span class="sui-sidebar-badge">3</span>
        </a></li>
        <li><a href="#"><span>Sent</span></a></li>
        <li><a href="#"><span>Archive</span></a></li>
        <li><a href="#">
          <span>Spam</span>
          <span class="sui-sidebar-badge">99+</span>
        </a></li>
      </ul>
    </div>
  </div>
</aside>

Bordered

sui-sidebar-bordered — uses a border instead of box-shadow
<aside class="sui-sidebar sui-sidebar-bordered">
  <div class="sui-sidebar-content">
    <div class="sui-sidebar-group">
      <ul class="sui-sidebar-nav">
        <li><a href="#" class="active">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Services</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </div>
  </div>
</aside>

Compact

A tighter, docs-style sidebar. Uses sui-sidebar-compact
<aside class="sui-sidebar sui-sidebar-bordered sui-sidebar-compact">
  <div class="sui-sidebar-content">
    <div class="sui-sidebar-group">
      <h6 class="sui-sidebar-group-label">Forms</h6>
      <ul class="sui-sidebar-nav">
        <li><a href="#">Inputs</a></li>
        <li><a href="#">Toggles &amp; Checks</a></li>
      </ul>
    </div>
    <div class="sui-sidebar-group">
      <h6 class="sui-sidebar-group-label">Components</h6>
      <ul class="sui-sidebar-nav">
        <li><a href="#" class="active">Sidebar</a></li>
        <li><a href="#">Navbar</a></li>
        <li><a href="#">Buttons</a></li>
        <li><a href="#">Cards</a></li>
        <li><a href="#">Modal</a></li>
        <li><a href="#">Tabs</a></li>
      </ul>
    </div>
    <div class="sui-sidebar-group">
      <h6 class="sui-sidebar-group-label">Utilities</h6>
      <ul class="sui-sidebar-nav">
        <li><a href="#">Spacing</a></li>
        <li><a href="#">Shadows</a></li>
      </ul>
    </div>
  </div>
</aside>

Collapsible

Click the toggle button in the header to collapse & expand.
<aside class="sui-sidebar sui-sidebar-bordered sui-sidebar-collapsible">
  <div class="sui-sidebar-header sui-sidebar-header-toggle">
    <div class="sui-sidebar-brand">
      <div class="sui-avatar sui-avatar-sm" style="background:var(--sui-primary);color:#fff;font-weight:700;font-size:12px;">CM</div>
      <span>CloudMetrics</span>
    </div>
    <button class="sui-sidebar-toggle" data-sidebar-toggle title="Toggle sidebar">
      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <polyline points="11 17 6 12 11 7"/>
        <polyline points="18 17 13 12 18 7"/>
      </svg>
    </button>
  </div>
  <div class="sui-sidebar-divider"></div>

  <div class="sui-sidebar-content">
    <div class="sui-sidebar-group">
      <h6 class="sui-sidebar-group-label">Platform</h6>
      <ul class="sui-sidebar-nav">
        <li><a href="#" class="active">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/></svg>
          <span>Dashboard</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg>
          <span>Analytics</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/></svg>
          <span>Customers</span>
          <span class="sui-sidebar-badge">24</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><line x1="3" y1="6" x2="3.01" y2="6"/><line x1="3" y1="12" x2="3.01" y2="12"/><line x1="3" y1="18" x2="3.01" y2="18"/></svg>
          <span>Orders</span>
        </a></li>
      </ul>
    </div>
    <div class="sui-sidebar-divider"></div>
    <div class="sui-sidebar-group">
      <h6 class="sui-sidebar-group-label">Settings</h6>
      <ul class="sui-sidebar-nav">
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"/></svg>
          <span>Settings</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="4" width="22" height="16" rx="2" ry="2"/><line x1="1" y1="10" x2="23" y2="10"/></svg>
          <span>Billing</span>
        </a></li>
      </ul>
    </div>
  </div>

  <div class="sui-sidebar-divider"></div>
  <div class="sui-sidebar-footer">
    <div style="display:flex;align-items:center;gap:10px;">
      <div class="sui-avatar sui-avatar-sm" style="background:var(--sui-success);color:#fff;font-weight:600;font-size:11px;flex-shrink:0;">JD</div>
      <span style="font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">John Doe</span>
    </div>
  </div>
</aside>

<!-- Or toggle programmatically -->
<script>
  const sb = SoftUI.sidebar('.my-sidebar');
  sb.toggle();   // toggle collapsed
  sb.collapse(); // force collapse
  sb.expand();   // force expand
</script>

Collapsed (Icon Only)

Add sui-sidebar-collapsed for icon-only mode. Labels and badges are hidden automatically.
<aside class="sui-sidebar sui-sidebar-bordered sui-sidebar-collapsed">
  <div class="sui-sidebar-content">
    <div class="sui-sidebar-group">
      <ul class="sui-sidebar-nav">
        <li><a href="#" class="active">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/></svg>
          <span>Dashboard</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/></svg>
          <span>Customers</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><line x1="3" y1="6" x2="3.01" y2="6"/><line x1="3" y1="12" x2="3.01" y2="12"/><line x1="3" y1="18" x2="3.01" y2="18"/></svg>
          <span>Orders</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"/></svg>
          <span>Settings</span>
        </a></li>
      </ul>
    </div>
  </div>
</aside>

With Header & Footer

Main content area
<aside class="sui-sidebar sui-sidebar-bordered">
  <div class="sui-sidebar-header">
    <div style="display:flex;align-items:center;gap:10px;">
      <div class="sui-avatar sui-avatar-sm" style="background:var(--sui-primary);color:#fff;font-weight:700;font-size:12px;">CM</div>
      <div>
        <div style="font-weight:700;font-size:14px;">CloudMetrics</div>
        <div style="font-size:11px;color:var(--sui-text-muted);">Enterprise Plan</div>
      </div>
    </div>
  </div>
  <div class="sui-sidebar-divider"></div>

  <div class="sui-sidebar-content">
    <div class="sui-sidebar-group">
      <h6 class="sui-sidebar-group-label">Platform</h6>
      <ul class="sui-sidebar-nav">
        <li><a href="#" class="active">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/></svg>
          <span>Dashboard</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg>
          <span>Analytics</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/></svg>
          <span>Customers</span>
          <span class="sui-sidebar-badge">24</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><line x1="3" y1="6" x2="3.01" y2="6"/><line x1="3" y1="12" x2="3.01" y2="12"/><line x1="3" y1="18" x2="3.01" y2="18"/></svg>
          <span>Orders</span>
        </a></li>
      </ul>
    </div>
    <div class="sui-sidebar-divider"></div>
    <div class="sui-sidebar-group">
      <h6 class="sui-sidebar-group-label">Settings</h6>
      <ul class="sui-sidebar-nav">
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"/></svg>
          <span>Settings</span>
        </a></li>
        <li><a href="#">
          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="4" width="22" height="16" rx="2" ry="2"/><line x1="1" y1="10" x2="23" y2="10"/></svg>
          <span>Billing</span>
        </a></li>
      </ul>
    </div>
  </div>

  <div class="sui-sidebar-divider"></div>
  <div class="sui-sidebar-footer">
    <div style="display:flex;align-items:center;gap:10px;">
      <div class="sui-avatar sui-avatar-sm" style="background:var(--sui-success);color:#fff;font-weight:600;font-size:11px;">JD</div>
      <div style="flex:1;min-width:0;">
        <div style="font-size:13px;font-weight:600;">John Doe</div>
        <div style="font-size:11px;color:var(--sui-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;">john@cloudmetrics.io</div>
      </div>
    </div>
  </div>
</aside>

Delete this item?

This action cannot be undone. This will permanently delete the item and remove all associated data.