// Side Nav
//
// A vertical list of navigational links, typically used on the left side of a page.

.SideNav {
  background-color: var(--color-bg-secondary);
}

.SideNav-item {
  position: relative;
  display: block;
  width: 100%;
  // stylelint-disable-next-line primer/spacing
  padding: 12px $spacer-3;
  color: var(--color-text-primary);
  text-align: left;
  background-color: transparent;
  border: 0;
  border-top: $border-width $border-style var(--color-border-secondary);

  &:first-child {
    border-top: 0;
  }

  &:last-child {
    // makes sure there is a "bottom border" in case the list is not long enough
    // stylelint-disable-next-line primer/box-shadow
    box-shadow: 0 $border-width 0 var(--color-border-primary);
  }

  // Bar on the left
  &::before {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    z-index: 1;
    width: 2px;
    pointer-events: none;
    content: "";
  }
}

// States

.SideNav-item:focus {
  z-index: 1;
  outline: none;
  box-shadow: var(--color-state-focus-shadow);
}

.SideNav-item:hover {
  text-decoration: none;
  background-color: var(--color-state-hover-secondary-bg);
  outline: none;
}

.SideNav-item:active {
  background-color: var(--color-bg-secondary);
}

.SideNav-item[aria-current]:not([aria-current=false]),
.SideNav-item[aria-selected="true"] {
  background-color: var(--color-sidenav-selected-bg);

  // Bar on the left
  &::before {
    // stylelint-disable-next-line primer/colors
    background-color: var(--color-sidenav-border-active);
  }
}

// Icon
//
// Makes sure multiple icons are vertically aligned

.SideNav-icon {
  width: 16px;
  margin-right: $spacer-2;
  color: var(--color-text-tertiary);
}

// Sub Nav
//
// A more lightweight version, suited as a sub nav

.SideNav-subItem {
  position: relative;
  display: block;
  width: 100%;
  padding: $spacer-1 0;
  color: var(--color-text-link);
  text-align: left;
  background-color: transparent;
  border: 0;
}

.SideNav-subItem:hover,
.SideNav-subItem:focus {
  color: var(--color-text-primary);
  text-decoration: none;
  outline: none;
}

.SideNav-subItem[aria-current]:not([aria-current=false]),
.SideNav-subItem[aria-selected="true"] {
  font-weight: $font-weight-semibold;
  color: var(--color-text-primary);
}
