Nebula

side-nav

Import

import {
  AuthMenuButton,
  AuthMenuDetails,
  Menu,
  MenuButton,
  MenuDivider,
  MenuItem,
  MenuList,
  SideNav,
  SideNavDivider,
  SideNavItem,
  SideNavLogo,
} from '@xpanseinc/nebula'

Usage

Add isActive to the SideNavItem that matches the current path.

<SideNav style={{ height: 500 }}>
  <SideNavLogo href="/" aria-label="Home" />

  <SideNavItem title="Item 1">
    <a>
      <Link href="/">
        <HomeIcon />
      </Link>
    </a>
  </SideNavItem>

  <SideNavItem title="New Tab">
    <a note="See below for React Router implamentation">
      <Link href="http://www.xpanse.com" target="_blank">
        <FileListIcon />
      </Link>
    </a>
  </SideNavItem>

  <SideNavItem title="Item 2">
    <a className="active">
      <Link href="/">
        <InboxIcon />
      </Link>
    </a>
  </SideNavItem>

  <SideNavDivider />

  <Menu>
    <MenuButton as={AuthMenuButton}>
      XP
    </MenuButton>

    <MenuList>
      <MenuItem disabled style={{color: 'inherit'}}>
        <AuthMenuDetails
          email="first.mcsurname@organization.inc"
          organization="Organization Inc"
          username="First McSurname"
          userRole="Admin"
          version="v22.09.28"
        />
      </MenuItem>

      <MenuDivider />

      <MenuItem
        icon={<LogoutBoxIcon />}
        onClick={() => alert('Signed out')}
      >
        Sign out
      </MenuItem>
    </MenuList>
  </Menu>
</SideNav>

For <SideNavItem/> use React Roures <NavLink/> component to navigate. This example ues an array of link objects looking like { path: '/orders-list', title: 'Orders', Icon: FileListIcon },

{navLinks.map(({ path, title, Icon }) => (
  <SideNavItem key={path} title={title}>
    <NavLink to={path}>
      <Icon size={20} />
    </NavLink>
  </SideNavItem>
))}