Side navigation

Side navigation is a list of links that are used to navigate to different sections of a page.

Examples Default sidenav

The root <dap-ds-sidenav> element can contain any number of <dap-ds-sidenav-item> and <dap-ds-sidenav-group> elements. The <dap-ds-sidenav-group> element can contain any number of <dap-ds-sidenav-item> elements.

<div style={{maxWidth: 350}}>
<dap-ds-sidenav>
  <dap-ds-sidenav-item href="link1">
    Single item
  </dap-ds-sidenav-item>
  <dap-ds-sidenav-group>
    Simple group, no link
    <dap-ds-sidenav-item slot="submenu" href="link2">
        Group 1 sub 1
        <dap-ds-badge slot="suffix">badge</dap-ds-badge>
    </dap-ds-sidenav-item>
    <dap-ds-sidenav-item slot="submenu" href="link3">
        Group 1 sub 2
        <dap-ds-avatar src="/img/components/apples.webp" size="xxs">badge</dap-ds-avatar>
    </dap-ds-sidenav-item>
    <dap-ds-sidenav-item slot="submenu" href="link4">
        Group 1 sub 3
        <dap-ds-badge slot="suffix">badge</dap-ds-badge>
    </dap-ds-sidenav-item>
    <dap-ds-badge slot="suffix">badge</dap-ds-badge>
  </dap-ds-sidenav-group>
</dap-ds-sidenav>
</div>
Active item

The activeHref attribute can be used to indicate the currently active item in the side navigation. This very usefull when the page does not reloads in an SPA environment. If this attribute is not set, the current location, window.location.pathname, will be used to determine the active item. The active item will be automatically expanded if it is inside a group.

<div style={{maxWidth: 350}}>
<dap-ds-sidenav activeHref="link3">
  <dap-ds-sidenav-item href="link1">
    Single item
  </dap-ds-sidenav-item>
  <dap-ds-sidenav-group>
    Simple group, no link
    <dap-ds-sidenav-item slot="submenu" href="link2">
        Group 1 sub 1
        <dap-ds-badge slot="suffix">badge</dap-ds-badge>
    </dap-ds-sidenav-item>
    <dap-ds-sidenav-item slot="submenu" href="link3">
        Group 1 sub 2
        <dap-ds-avatar src="/img/components/apples.webp" size="xxs">badge</dap-ds-avatar>
    </dap-ds-sidenav-item>
    <dap-ds-sidenav-item slot="submenu" href="link4">
        Group 1 sub 3
        <dap-ds-badge slot="suffix">badge</dap-ds-badge>
    </dap-ds-sidenav-item>
    <dap-ds-badge slot="suffix">badge</dap-ds-badge>
  </dap-ds-sidenav-group>
</dap-ds-sidenav>
</div>
Sidenav group as a link

The <dap-ds-sidenav-group> element can be used as a menu item with a link. If the href attribute is set, the group will be rendered as a link. This is useful for index pages. The group could be expanded still, but clicking on the group link will navigate to the specified URL.

<div style={{maxWidth: 350}}>
<dap-ds-sidenav activeHref="grouplink">
  <dap-ds-sidenav-group href="grouplink">
    Simple group as link
    <dap-ds-sidenav-item slot="submenu" href="link2">
        Group 1 sub 1
        <dap-ds-badge slot="suffix">badge</dap-ds-badge>
    </dap-ds-sidenav-item>
    <dap-ds-sidenav-item slot="submenu" href="link3">
        Group 1 sub 2
        <dap-ds-avatar src="/img/components/apples.webp" size="xxs">badge</dap-ds-avatar>
    </dap-ds-sidenav-item>
    <dap-ds-sidenav-item slot="submenu" href="link4">
        Group 1 sub 3
        <dap-ds-badge slot="suffix">badge</dap-ds-badge>
    </dap-ds-sidenav-item>
    <dap-ds-badge slot="suffix">badge</dap-ds-badge>
  </dap-ds-sidenav-group>
</dap-ds-sidenav>
</div>
NextJs

The side navigation component can be used in NextJs with the Link component.

<dap-ds-sidenav-group>
  Frameworks
  <Link
    href="/design-system-dev/frameworks/react"
    passHref
    legacyBehavior>
    <dap-ds-sidenav-item slot="submenu">React</dap-ds-sidenav-item>
  </Link>
</dap-ds-sidenav-group>
Importing
import { DapDSSideNav } from 'dap-design-system'
Importing React
import { DapDSSideNavReact } from 'dap-design-system/react'
Tree-Shakeable Imports

For optimal bundle sizes, use the tree-shakeable import syntax:

import { DapDSSideNav } from 'dap-design-system/components'
Attributes
PropertyTypeDefaultDescription
labelstringThe label of the side navigation, if aria label is not provided, it will be used as aria label
activeHrefstringThe active href of the side navigation, to explicitly set the active item, if not provided, it will be set based on the current location
size'xs', 'sm' , 'lg''xs'The size of the side navigation
Slots
NameDescription
(default)The content of the side navigation.
Events
Event NameDescriptionType
dds-item-clickEvent fired when the side navigation item is clicked.{href: string, event: Event }
CSS Parts
Part NameDescription
baseThe main side navigation container.
menuThe menu of the side navigation.
How to Use CSS Parts

You can style CSS parts using the ::part() pseudo-element selector:

/* Target a specific part */
.my-custom-dap-ds-sidenav::part(base) {
  /* Your custom styles */
}

/* Target multiple parts */
.my-custom-dap-ds-sidenav::part(base),
.my-custom-dap-ds-sidenav::part(menu) {
  /* Shared styles */
}

Example usage:

<dap-ds-sidenav class="my-custom-dap-ds-sidenav">
  Side navigation
</dap-ds-sidenav>
.my-custom-dap-ds-sidenav::part(base) {
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

CSS parts allow you to style internal elements of the component while maintaining encapsulation. Learn more in our styling guide.

CSS Custom Properties

No CSS custom properties available.

Components Side navigation group <dap-ds-sidenav-group/> Attributes
PropertyTypeDefaultDescription
hrefstringThe href of the side navigation item
activebooleanfalseWhether the side navigation item is active
spacing'top', 'bottom' , 'both' , 'none''none'The spacing of the side navigation item
openbooleanfalseWhether the side navigation group is open
size'xs', 'sm' , 'lg''xs'The size of the side navigation group
Slots
NameDescription
(default)The content of the side navigation group.
submenuThe submenu of the side navigation group.
suffixThe suffix of the side navigation group.
Events

No custom events available.

CSS Parts
Part NameDescription
baseThe main side navigation group container.
titleThe title of the side navigation group.
linkThe link of the side navigation group.
toggleThe toggle button of the side navigation group.
submenuThe submenu of the side navigation group.
CSS Custom Properties
Property NameDescription
--dds-sidenav-group-margin-bottomDefault bottom margin of the sidenav group (default: var(--dds-spacing-100))
--dds-sidenav-group-border-radiusBorder radius of the sidenav group (default: var(--dds-radius-base))
--dds-sidenav-group-spacing-marginMargin used for spacing variants (default: var(--dds-spacing-400))
--dds-sidenav-group-item-min-height-xsMinimum height of the sidenav group item (default: var(--dds-spacing-800))
--dds-sidenav-group-item-min-height-smMinimum height of the sidenav group item (default: var(--dds-spacing-1000))
--dds-sidenav-group-item-min-height-lgMinimum height of the sidenav group item (default: var(--dds-spacing-1200))
--dds-sidenav-group-item-padding-xsPadding of the sidenav group item (default: var(--dds-spacing-100) var(--dds-spacing-300))
--dds-sidenav-group-item-padding-smPadding of the sidenav group item (default: var(--dds-spacing-200) var(--dds-spacing-400))
--dds-sidenav-group-item-padding-lgPadding of the sidenav group item (default: var(--dds-spacing-300) var(--dds-spacing-500))
--dds-sidenav-group-item-colorText color of the sidenav group item (default: var(--dds-text-neutral-base))
--dds-sidenav-group-item-font-size-xsFont size of the sidenav group item (default: var(--dds-font-sm))
--dds-sidenav-group-item-font-size-smFont size of the sidenav group item (default: var(--dds-font-base))
--dds-sidenav-group-item-font-size-lgFont size of the sidenav group item (default: var(--dds-font-lg))
--dds-sidenav-group-item-font-weightFont weight of the sidenav group item (default: var(--dds-font-weight-medium))
--dds-sidenav-group-item-bg-activeBackground color when the item is active (default: var(--dds-transparent-black-subtle))
--dds-sidenav-group-item-bg-hoverBackground color on hover and active states (default: var(--dds-transparent-black-base))
--dds-sidenav-group-toggle-marginMargin for the toggle button (default: var(--dds-spacing-300))
--dds-sidenav-group-submenu-paddingPadding for the submenu (default: var(--dds-spacing-300) 0)
Side navigation item <dap-ds-sidenav-item/> Attributes
PropertyTypeDefaultDescription
hrefstringThe href of the side navigation item
activebooleanfalseWhether the side navigation item is active
spacing'top', 'bottom' , 'both' , 'none''none'The spacing of the side navigation item
size'xs', 'sm' , 'lg''xs'The size of the side navigation item
Slots
NameDescription
(default)The content of the side navigation item.
suffixThe suffix of the side navigation item.
Events

No custom events available.

CSS Parts
Part NameDescription
baseThe main side navigation item container.
linkThe link of the side navigation item.
CSS Custom Properties
Property NameDescription
--dds-sidenav-item-min-height-xsMinimum height of the sidenav item (default: var(--dds-spacing-800))
--dds-sidenav-item-min-height-smMinimum height of the sidenav item (default: var(--dds-spacing-1000))
--dds-sidenav-item-min-height-lgMinimum height of the sidenav item (default: var(--dds-spacing-1200))
--dds-sidenav-item-margin-bottomDefault bottom margin of the sidenav item (default: var(--dds-spacing-100))
--dds-sidenav-item-padding-xsPadding of the sidenav item (default: var(--dds-spacing-100) var(--dds-spacing-300))
--dds-sidenav-item-padding-smPadding of the sidenav item (default: var(--dds-spacing-200) var(--dds-spacing-400))
--dds-sidenav-item-padding-lgPadding of the sidenav item (default: var(--dds-spacing-300) var(--dds-spacing-500))
--dds-sidenav-item-radiusBorder radius of the sidenav item (default: var(--dds-radius-base))
--dds-sidenav-item-colorText color of the sidenav item (default: var(--dds-text-neutral-base))
--dds-sidenav-item-font-size-xsFont size of the sidenav item (default: var(--dds-font-sm))
--dds-sidenav-item-font-size-smFont size of the sidenav item (default: var(--dds-font-base))
--dds-sidenav-item-font-size-lgFont size of the sidenav item (default: var(--dds-font-lg))
--dds-sidenav-item-font-weightFont weight of the sidenav item (default: var(--dds-font-weight-medium))
--dds-sidenav-item-spacing-marginMargin used for spacing variants (default: var(--dds-spacing-400))
--dds-sidenav-item-bg-activeBackground color when the item is active (default: var(--dds-transparent-black-subtle))
--dds-sidenav-item-bg-hoverBackground color on hover and active states (default: var(--dds-transparent-black-base))