Skip to content

Sidenav Counter

Sidenav Counter is a sidebar navigation component with icons and counters. It provides a collapsible navigation menu that can be expanded or collapsed, with support for icons and numerical counters for each menu item.

<ul data-role="sidenav-counter" id="sidenav-counter">
<li class="active">
<a href="#">
<span class="icon mif-home"></span>
<span class="title">Home</span>
<span class="counter">5</span>
</a>
</li>
<li>
<a href="#">
<span class="icon mif-user"></span>
<span class="title">Profile</span>
<span class="counter">3</span>
</a>
</li>
<li>
<a href="#">
<span class="icon mif-cog"></span>
<span class="title">Settings</span>
<span class="counter">12</span>
</a>
</li>
</ul>
<button id="toggle-sidenav">Toggle Sidenav</button>
<ul data-role="sidenav-counter" data-toggle="#toggle-sidenav">
<!-- Menu items -->
</ul>
<ul data-role="sidenav-counter" dir="rtl">
<!-- Menu items -->
</ul>
ParameterTypeDefaultDescription
compactedbooleanfalseInitial state of the sidenav (compacted or expanded)
togglestringnullSelector for the toggle button that will expand/collapse the sidenav
expandPointstring"fs"Media breakpoint at which the sidenav will automatically expand (fs, xl, lg, md, sm, xs)
onMenuItemClickfunctionMetro.noopCallback function that is called when a menu item is clicked
onCollapsefunctionMetro.noopCallback function that is called when the sidenav is collapsed
onExpandfunctionMetro.noopCallback function that is called when the sidenav is expanded
onSidenavCreatefunctionMetro.noopCallback function that is called when the sidenav is created
  • setValue(index, value) - Sets the counter value for a menu item at the specified index.
const sidenav = Metro.getPlugin('#sidenav-counter', 'sidenav-counter');
sidenav.setValue(0, 10); // Set counter value to 10 for the first menu item
EventDescription
onMenuItemClickTriggered when a menu item is clicked
onCollapseTriggered when the sidenav is collapsed
onExpandTriggered when the sidenav is expanded
onSidenavCreateTriggered when the sidenav is created
VariableDefault (Light)Dark ModeDescription
--sidenav-counter-width220px220pxWidth of the expanded sidenav
--sidenav-counter-border-radius4px4pxBorder radius of menu items
VariableDefault (Light)Dark ModeDescription
--sidenav-counter-background#f6f6f6#2b2d30Background color of the sidenav
--sidenav-counter-color#191919#dfe1e5Text color of menu items
--sidenav-counter-icon-color#191919#dfe1e5Color of menu item icons
--sidenav-counter-counter-color#191919#dfe1e5Color of counter text
--sidenav-counter-background-hover#cecece#43454aBackground color of menu items on hover
--sidenav-counter-color-hover#0a0a0a#ffffffText color of menu items on hover
--sidenav-counter-background-active#68a3ff#468cffBackground color of active menu items
--sidenav-counter-color-active#ffffff#ffffffText color of active menu items
#my-sidenav {
--sidenav-counter-width: 250px;
--sidenav-counter-background: #e0e0e0;
--sidenav-counter-background-active: #1ba1e2;
}
  • .sidenav-counter - Main component class
  • .sidenav-counter.expanded - Applied when the sidenav is expanded
  • .sidenav-counter[dir=rtl] - Applied for right-to-left support
  • .icon - Applied to the icon element
  • .title - Applied to the title element
  • .counter - Applied to the counter element
  • .active - Applied to the active menu item
  • Use meaningful icons that clearly represent the menu item’s purpose
  • Keep counter values concise (preferably single or double digits)
  • Consider using the expandPoint parameter to automatically expand the menu on larger screens
  • Provide a toggle button for users to manually expand/collapse the menu
  • Use the active class to indicate the current page or section