Side menu

Figma logo The guideline content on this page is synced with Figma and can be used as a source of truth. Open in Figma

Side menu is a vertical, hierarchical navigation component that appears on the left side of a page or screen.


Anatomy

  1. Navigation in its expanded state
  2. Dropdown icon: only shown when there is more content in a sub-menu
  3. Primary level expanded
  4. Second level
  5. Second level selected
  6. Badge
  7. Bottom content
  8. Chevron to collapse and expand navigation
  9. Navigation in its collapsible view
Side menu anatomy diagram showing the expanded and collapsed variants with numbered callouts for each part

States

The top-level menu item supports the following states:

  1. Enabled
  2. Hover
  3. Selected
  4. Focused
  5. Pressed

Accessibility

Keyboard interaction

All components should be reachable via TAB and SHIFT+TAB keys.


Specs

Side menu specifications showing dimensions and spacing for expanded and collapsed variants

Developer reference

The following sections describe the supported markup and interactive variants. The vertical navigation requires JavaScript to make it interactive (collapsible levels, hide and show the navigation) — the snippets below include the inline script that powers the demonstrations.


Design

Collapsed view

The collapsed icon-only view is produced by pairing .vertical-nav-icons with .vertical-nav-collapse on the wrapper and adding .hidden-menu to render the menu in its 80 px collapsed state. The example below renders the menu in its collapsed view by default.

Hide / show, no icons

To hide / close the navigation, apply the .hidden-menu class to the main vertical navigation wrapper (.vertical-nav) and, if necessary, the .hidden-vert-menu class (or your own functional class) to the page main content (.page-holder) so the layout responds to the new width.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam erat nibh, convallis at leo a, congue feugiat nulla. Maecenas efficitur gravida nisl, nec ultrices elit ornare quis. Sed ac quam at lectus varius molestie vitae sit amet est. Fusce lorem mauris, condimentum ac sagittis quis, laoreet quis tortor. Nam eu ante lobortis nibh scelerisque iaculis ut a nunc. Pellentesque at sodales metus, dictum pellentesque mi.

Pellentesque a nibh nec risus posuere ultrices in sit amet eros. Donec pulvinar ipsum orci, a imperdiet mi facilisis id. Nunc mattis, ligula vitae facilisis facilisis, libero turpis fermentum metus, in maximus sapien velit in enim. Proin dapibus posuere consectetur. Nunc vitae libero vitae purus tempor us a ut orci.

Partial collapse, no icons

To contract / shrink the width instead of hiding the navigation list, add the .vertical-nav-collapse class to the wrapper. When the .hidden-menu class is applied, the menu contracts rather than disappears.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam erat nibh, convallis at leo a, congue feugiat nulla. Maecenas efficitur gravida nisl, nec ultrices elit ornare quis. Sed ac quam at lectus varius molestie vitae sit amet est. Fusce lorem mauris, condimentum ac sagittis quis, laoreet quis tortor. Nam eu ante lobortis nibh scelerisque iaculis ut a nunc. Pellentesque at sodales metus, dictum pellentesque mi.

Pellentesque a nibh nec risus posuere ultrices in sit amet eros. Donec pulvinar ipsum orci, a imperdiet mi facilisis id. Nunc mattis, ligula vitae facilisis facilisis, libero turpis fermentum metus, in maximus sapien velit in enim. Proin dapibus posuere consectetur. Nunc vitae libero vitae purus tempor us a ut orci.

Hide / show, with icons

Add the .vertical-nav-icons class to the wrapper to render menu items with a leading icon.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam erat nibh, convallis at leo a, congue feugiat nulla. Maecenas efficitur gravida nisl, nec ultrices elit ornare quis. Sed ac quam at lectus varius molestie vitae sit amet est. Fusce lorem mauris, condimentum ac sagittis quis, laoreet quis tortor. Nam eu ante lobortis nibh scelerisque iaculis ut a nunc. Pellentesque at sodales metus, dictum pellentesque mi.

Pellentesque a nibh nec risus posuere ultrices in sit amet eros. Donec pulvinar ipsum orci, a imperdiet mi facilisis id. Nunc mattis, ligula vitae facilisis facilisis, libero turpis fermentum metus, in maximus sapien velit in enim. Proin dapibus posuere consectetur. Nunc vitae libero vitae purus tempor us a ut orci.

Partial collapse, with icons

Combine .vertical-nav-collapse with .vertical-nav-icons to render the icon-only collapsed strip alongside the contractible expanded view.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam erat nibh, convallis at leo a, congue feugiat nulla. Maecenas efficitur gravida nisl, nec ultrices elit ornare quis. Sed ac quam at lectus varius molestie vitae sit amet est. Fusce lorem mauris, condimentum ac sagittis quis, laoreet quis tortor. Nam eu ante lobortis nibh scelerisque iaculis ut a nunc. Pellentesque at sodales metus, dictum pellentesque mi.

Pellentesque a nibh nec risus posuere ultrices in sit amet eros. Donec pulvinar ipsum orci, a imperdiet mi facilisis id. Nunc mattis, ligula vitae facilisis facilisis, libero turpis fermentum metus, in maximus sapien velit in enim. Proin dapibus posuere consectetur. Nunc vitae libero vitae purus tempor us a ut orci.

With variant badges

Add .badge or .badge-info / .badge-success / .badge-warning / .badge-danger elements inside the menu item link to render notification counts.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam erat nibh, convallis at leo a, congue feugiat nulla. Maecenas efficitur gravida nisl, nec ultrices elit ornare quis. Sed ac quam at lectus varius molestie vitae sit amet est. Fusce lorem mauris, condimentum ac sagittis quis, laoreet quis tortor. Nam eu ante lobortis nibh scelerisque iaculis ut a nunc. Pellentesque at sodales metus, dictum pellentesque mi.

Pellentesque a nibh nec risus posuere ultrices in sit amet eros. Donec pulvinar ipsum orci, a imperdiet mi facilisis id. Nunc mattis, ligula vitae facilisis facilisis, libero turpis fermentum metus, in maximus sapien velit in enim. Proin dapibus posuere consectetur. Nunc vitae libero vitae purus tempor us a ut orci.

Deprecated variants

The Figma source of truth ships a single white scheme. The blue (.vertical-nav-primary) and dark-grey (.vertical-nav-secondary) variants are kept here for backwards compatibility and will be removed in v3.0. New code should use the default .vertical-nav only.

Primary (blue)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam erat nibh, convallis at leo a, congue feugiat nulla. Maecenas efficitur gravida nisl, nec ultrices elit ornare quis. Sed ac quam at lectus varius molestie vitae sit amet est. Fusce lorem mauris, condimentum ac sagittis quis, laoreet quis tortor. Nam eu ante lobortis nibh scelerisque iaculis ut a nunc. Pellentesque at sodales metus, dictum pellentesque mi.

Pellentesque a nibh nec risus posuere ultrices in sit amet eros. Donec pulvinar ipsum orci, a imperdiet mi facilisis id. Nunc mattis, ligula vitae facilisis facilisis, libero turpis fermentum metus, in maximus sapien velit in enim. Proin dapibus posuere consectetur. Nunc vitae libero vitae purus tempor us a ut orci.

Secondary (dark grey)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam erat nibh, convallis at leo a, congue feugiat nulla. Maecenas efficitur gravida nisl, nec ultrices elit ornare quis. Sed ac quam at lectus varius molestie vitae sit amet est. Fusce lorem mauris, condimentum ac sagittis quis, laoreet quis tortor. Nam eu ante lobortis nibh scelerisque iaculis ut a nunc. Pellentesque at sodales metus, dictum pellentesque mi.

Pellentesque a nibh nec risus posuere ultrices in sit amet eros. Donec pulvinar ipsum orci, a imperdiet mi facilisis id. Nunc mattis, ligula vitae facilisis facilisis, libero turpis fermentum metus, in maximus sapien velit in enim. Proin dapibus posuere consectetur. Nunc vitae libero vitae purus tempor us a ut orci.