//
// Component: Main Sidebar
//

.main-sidebar {
  height: 100vh;
  overflow-y: hidden;
  z-index: $zindex-main-sidebar;

  // Remove Firefox Focusring
  a {
    &:-moz-focusring {
      border: 0;
      outline: none;
    }
  }

}

.sidebar {
  height: calc(100% - 4rem);
  overflow-y: auto;
  padding-bottom: $sidebar-padding-y;
  padding-left: $sidebar-padding-x;
  padding-right: $sidebar-padding-x;
  padding-top: $sidebar-padding-y;
}

// Sidebar user panel
.user-panel {
  position: relative;

  [class*='sidebar-dark'] & {
    border-bottom: 1px solid lighten($dark, 12%);
  }

  [class*='sidebar-light'] & {
    border-bottom: 1px solid $gray-300;
  }

  &,
  .info {
    overflow: hidden;
    white-space: nowrap;
  }

  .image {
    display: inline-block;
    padding-left: $nav-link-padding-x - .2;
  }

  img {
    height: auto;
    width: $sidebar-user-image-width;
  }

  .info {
    display: inline-block;
    padding: 5px 5px 5px 10px;
  }

  .status,
  .dropdown-menu {
    font-size: $font-size-sm;
  }
}

// Sidebar navigation menu
.nav-sidebar {
  // All levels
  .nav-item {
    > .nav-link {
      margin-bottom: .2rem;

      .right {
        @include transition(transform $transition-fn $transition-speed);
      }
    }
  }

  .nav-link > .right,
  .nav-link > p > .right {
    position: absolute;
    right: 1rem;
    top: .7rem;

    i,
    span {
      margin-left: .5rem;
    }

    &:nth-child(2) {
      right: 2.2rem;
    }
  }

  .menu-open {
    > .nav-treeview {
      display: block;
    }

    > .nav-link {
      i.right {
        @include rotate(-90deg);
      }
    }
  }

  // First Level
  > .nav-item {
    margin-bottom: 0;

    .nav-icon {
      font-size: 1.2rem;
      margin-right: .2rem;
      text-align: center;
      width: $sidebar-nav-icon-width;

      &.fa,
      &.fas,
      &.far,
      &.fab,
      &.glyphicon,
      &.ion {
        font-size: 1.1rem;
      }
    }

    .float-right {
      margin-top: 3px;
    }
  }

  // Tree view menu
  .nav-treeview {
    display: none;
    list-style: none;
    padding: 0;

    > .nav-item {
      > .nav-link {
        > .nav-icon {
          width: $sidebar-nav-icon-width;
        }
      }
    }
  }

  &.nav-child-indent {
    .nav-treeview {
      transition: padding $transition-speed $transition-fn;
      padding-left: 1rem;
    }
  }

  .nav-header {
    font-size: .9rem;
    padding: $nav-link-padding-y;

    &:not(:first-of-type) {
      padding: 1.7rem 1rem .5rem;
    }
  }

  .nav-link p {
    display: inline-block;
    margin: 0;
  }
}

#sidebar-overlay {
  @include media-breakpoint-down(md) {
    .sidebar-open & {
      display: block;
    }
  }

  background-color: rgba($black, 0.1);
  bottom: 0;
  display: none;
  left: 0;
  position: fixed;
  right: 0;
  top: 0;
  z-index: $zindex-main-sidebar - 1;
}

[class*='sidebar-light-'] {
  // Sidebar background color
  background-color: $sidebar-light-bg;

  // User Panel (resides in the sidebar)
  .user-panel {
    a:hover {
      color: $sidebar-light-hover-color;
    }

    .status {
      background: $sidebar-light-hover-bg;
      color: $sidebar-light-color;

      &:hover,
      &:focus,
      &:active {
        background: darken($sidebar-light-hover-bg, 3%);
        color: $sidebar-light-hover-color;
      }
    }

    .dropdown-menu {
      @include box-shadow(0 2px 4px rgba(0, 0, 0, .4));
      border-color: darken($sidebar-light-hover-bg, 5%);
    }

    .dropdown-item {
      color: $body-color;
    }
  }

  // Sidebar Menu. First level links
  .nav-sidebar > .nav-item {
    // links
    > .nav-link {
      // border-left: 3px solid transparent;
      &:active,
      &:focus {
        color: $sidebar-light-color;
      }
    }

    // Hover and active states
    &.menu-open > .nav-link,
    &:hover > .nav-link {
      background-color: $sidebar-light-hover-bg;
      color: $sidebar-light-hover-color;
    }

    > .nav-link.active {
      color: $sidebar-light-active-color;

      @if $enable-shadows {
        box-shadow: map-get($elevations, 1);
      }
    }

    // First Level Submenu
    > .nav-treeview {
      background: $sidebar-light-submenu-bg;
    }
  }

  // Section Heading
  .nav-header {
    background: inherit;
    color: darken($sidebar-light-color, 5%);
  }

  // All links within the sidebar menu
  .sidebar {
    a {
      color: $sidebar-light-color;

      &:hover {
        text-decoration: none;
      }
    }
  }

  // All submenus
  .nav-treeview {
    > .nav-item {
      > .nav-link {
        color: $sidebar-light-submenu-color;
      }

      > .nav-link.active {
        &,
        &:hover {
          background-color: $sidebar-light-submenu-active-bg;
          color: $sidebar-light-submenu-active-color;
        }
      }

      > .nav-link:hover {
        background-color: $sidebar-light-submenu-hover-bg;
      }
    }
  }

  // Flat style
  .nav-flat {
    .nav-item {
      .nav-treeview {
        .nav-treeview {
          border-color: $sidebar-light-submenu-active-bg;
        }

        > .nav-item {
          > .nav-link {
            &,
            &.active {
              border-color: $sidebar-light-submenu-active-bg;
            }
          }
        }
      }
    }
  }
}

[class*='sidebar-dark-'] {
  // Sidebar background color
  background-color: $sidebar-dark-bg;

  // User Panel (resides in the sidebar)
  .user-panel {
    a:hover {
      color: $sidebar-dark-hover-color;
    }

    .status {
      background: $sidebar-dark-hover-bg;
      color: $sidebar-dark-color;

      &:hover,
      &:focus,
      &:active {
        background: darken($sidebar-dark-hover-bg, 3%);
        color: $sidebar-dark-hover-color;
      }
    }

    .dropdown-menu {
      @include box-shadow(0 2px 4px rgba(0, 0, 0, .4));
      border-color: darken($sidebar-dark-hover-bg, 5%);
    }

    .dropdown-item {
      color: $body-color;
    }
  }

  // Sidebar Menu. First level links
  .nav-sidebar > .nav-item {
    // links
    > .nav-link {
      // border-left: 3px solid transparent;
      &:active {
        color: $sidebar-dark-color;
      }
    }

    // Hover and active states
    &.menu-open > .nav-link,
    &:hover > .nav-link,
    & > .nav-link:focus  {
      background-color: $sidebar-dark-hover-bg;
      color: $sidebar-dark-hover-color;
    }

    > .nav-link.active {
      color: $sidebar-dark-hover-color;

      @if $enable-shadows {
        box-shadow: map-get($elevations, 1);
      }
    }

    // First Level Submenu
    > .nav-treeview {
      background: $sidebar-dark-submenu-bg;
    }
  }

  // Section Heading
  .nav-header {
    background: inherit; //darken($sidebar-dark-bg, 3%);
    color: lighten($sidebar-dark-color, 5%);
  }

  // All links within the sidebar menu
  .sidebar {
    a {
      color: $sidebar-dark-color;

      &:hover,
      &:focus {
        text-decoration: none;
      }
    }
  }

  // All submenus
  .nav-treeview {
    > .nav-item {
      > .nav-link {
        color: $sidebar-dark-submenu-color;

        &:hover,
        &:focus {
          background-color: $sidebar-dark-submenu-hover-bg;
          color: $sidebar-dark-submenu-hover-color;
        }
      }

      > .nav-link.active {
        &,
        &:hover,
        &:focus {
          background-color: $sidebar-dark-submenu-active-bg;
          color: $sidebar-dark-submenu-active-color;
        }
      }
    }
  }

  // Flat Style
  .nav-flat {
    .nav-item {
      .nav-treeview {
        .nav-treeview {
          border-color: $sidebar-dark-submenu-active-bg;
        }

        > .nav-item {
          > .nav-link {
            &,
            &.active {
              border-color: $sidebar-dark-submenu-active-bg;
            }
          }
        }
      }
    }
  }
}

// Sidebar variants
@each $name, $color in $theme-colors {
  .sidebar-dark-#{$name},
  .sidebar-light-#{$name} {
    @include sidebar-color($color)
  }
}

@each $name, $color in $colors {
  .sidebar-dark-#{$name},
  .sidebar-light-#{$name} {
    @include sidebar-color($color)
  }
}

.nav-compact {
  .sidebar-mini.sidebar-collapse &,
  .sidebar-mini-md.sidebar-collapse & {
    .nav-icon {
      @include transition(margin-left $transition-fn $transition-speed);
      margin-left: .45rem;
    }

    .nav-treeview {
      .nav-icon {
        margin-left: .45rem;
      }
    }
  }

  .sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover &.nav-compact,
  .sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover &.nav-compact,
  .sidebar-mini .main-sidebar.sidebar-focused &.nav-compact,
  .sidebar-mini-md .main-sidebar.sidebar-focused &.nav-compact {
    .nav-icon {
      margin-left: 0;
    }
  }
}

// Nav Flat
.nav-flat {
  margin: (-$sidebar-padding-x/2) (-$sidebar-padding-x) 0;

  &.nav-child-indent {
    .nav-treeview {
      padding-left: 0 !important;

      .nav-treeview {
        border-left: .2rem solid;
      }
    }
  }

  .nav-item {
    > .nav-link {
      border-radius: 0;
      margin-bottom: 0;
    }
  }

  .nav-icon {
    @include transition(margin-left $transition-fn $transition-speed);
  }

  .nav-treeview {
    .nav-icon {
      margin-left: -.2rem;
    }
  }

  .sidebar-collapse & {
    .nav-icon {
      margin-left: .5rem;
    }

    .nav-treeview {
      .nav-icon {
        margin-left: .3rem;
      }
    }
  }

  &.nav-sidebar > .nav-item {
    .nav-treeview,
    > .nav-treeview {
      background: rgba($white, .05);

      .nav-item {
        > .nav-link {
          border-left: .2rem solid;
        }
      }
    }
  }

  .sidebar-mini.sidebar-collapse &.nav-compact,
  .sidebar-mini-md.sidebar-collapse &.nav-compact {
    .nav-icon {
      margin-left: 1.05rem;
    }

    .nav-treeview {
      .nav-icon {
        margin-left: .805rem;
      }
    }
  }
}

.nav-legacy {
  margin: (-$sidebar-padding-x/2) (-$sidebar-padding-x) 0;

  &.nav-sidebar .nav-item {
    > .nav-link {
      border-radius: 0;
      margin-bottom: 0;
    }
  }

  &.nav-sidebar > .nav-item {
    > .nav-link {
      &.active {
        background: inherit;
        border-left: 3px solid transparent;
        box-shadow: none;

        > .nav-icon {
          margin-left: -3px;
        }
      }
    }
  }

  .sidebar-mini &,
  .sidebar-mini-md &, {
    > .nav-item .nav-link {
      .nav-icon {
        @include transition(margin-left $transition-fn $transition-speed);
      }
    }
  }

  .sidebar-mini.sidebar-collapse &,
  .sidebar-mini-md.sidebar-collapse &, {
    > .nav-item .nav-link {
      .nav-icon {
        margin-left: .55rem;
      }

      &.active {
        > .nav-icon {
          margin-left: .36rem;
        }
      }
    }
  }

  .sidebar-mini.sidebar-collapse &.nav-compact,
  .sidebar-mini-md.sidebar-collapse &.nav-compact {
    > .nav-item .nav-link {
      .nav-icon {
        margin-left: 1.05rem;
      }

      &.active {
        > .nav-icon {
          margin-left: 1.05rem;
        }
      }
    }

    > .nav-item > .nav-link {
      .nav-icon {
        margin-left: 1.05rem;
      }

      &.active {
        > .nav-icon {
          margin-left: .85rem;
        }
      }
    }
  }

  .sidebar-mini.sidebar-collapse &.nav-compact.nav-flat,
  .sidebar-mini-md.sidebar-collapse &.nav-compact.nav-flat {
    > .nav-item .nav-link {
      .nav-icon {
        margin-left: .85rem;
      }

      &.active {
        > .nav-icon {
          margin-left: .85rem;
        }
      }
    }

    > .nav-item > .nav-link {
      .nav-icon {
        margin-left: 1.05rem;
      }

      &.active {
        > .nav-icon {
          margin-left: .85rem;
        }
      }
    }
  }
  
  .sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover &,
  .sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover &,
  .sidebar-mini .main-sidebar.sidebar-focused &,
  .sidebar-mini-md .main-sidebar.sidebar-focused & {
    &.nav-compact {
      > .nav-item .nav-link {
        .nav-icon {
          margin-left: 0;
        }

        &.active {
          > .nav-icon {
            margin-left: 0;
          }
        }
      }

      > .nav-item > .nav-link {
        .nav-icon {
          margin-left: 0;
        }

        &.active {
          > .nav-icon {
            margin-left: -3px;
          }
        }
      }
    }

    &.nav-flat {
      > .nav-item .nav-link {
        .nav-icon {
          margin-left: -3px;
        }

        &.active {
          > .nav-icon {
            margin-left: -3px;
          }
        }
      }

      > .nav-item > .nav-link {
        .nav-icon {
          margin-left: 0;
        }

        &.active {
          > .nav-icon {
            margin-left: -3px;
          }
        }
      }
    }
  }

  [class*='sidebar-dark'] & {
    &.nav-sidebar > .nav-item {
      .nav-treeview,
      > .nav-treeview {
        background: rgba($white, .05);
      }

      > .nav-link.active {
        color: $sidebar-dark-active-color;
      }
    }

    .nav-treeview > .nav-item > .nav-link {
      &.active,
      &:focus,
      &:hover {
        background: none;
        color: $sidebar-dark-active-color;
      }
    }
  }

  [class*='sidebar-light'] & {
    &.nav-sidebar > .nav-item {
      .nav-treeview,
      > .nav-treeview {
        background: rgba($black, .05);
      }

      > .nav-link.active {
        color: $sidebar-light-active-color;
      }
    }

    .nav-treeview > .nav-item > .nav-link {
      &.active,
      &:focus,
      &:hover {
        background: none;
        color: $sidebar-light-active-color;
      }
    }
  }
}


.nav-collapse-hide-child {
  .menu-open > .nav-treeview {
    max-height: min-content;
    opacity: 1;
  }

  .sidebar-collapse & {
    .menu-open > .nav-treeview {
      max-height: 0;
      opacity: 0;
    }
  }

  .sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused &,
  .sidebar-mini.sidebar-collapse .main-sidebar:hover & {
    .menu-open > .nav-treeview {
      max-height: min-content;
      opacity: 1;
    }
  }
}

// Nav Compact
.nav-compact {
  .nav-link,
  .nav-header {
    padding: ($nav-link-padding-y / 2) ($nav-link-padding-x / 2);
  }

  .nav-header:not(:first-of-type) {
    padding: ($nav-link-padding-y * 1.5) ($nav-link-padding-x / 2) ($nav-link-padding-y / 2);
  }

  .nav-link > .right,
  .nav-link > p > .right {
    top: .5rem;
    right: .5rem;

    &:nth-child(2) {
      right: 1.6rem;
    }
  }
}

// Sidebar Form Control
[class*='sidebar-dark'] {
  .form-control-sidebar,
  .btn-sidebar {
    background: lighten($sidebar-dark-bg, 5%);
    border: 1px solid lighten($sidebar-dark-bg, 15%);
    color: lighten(color-yiq(lighten($sidebar-dark-bg, 5%)), 15%);
  }

  .form-control-sidebar:focus,
  .btn-sidebar:focus {
    border: 1px solid lighten($sidebar-dark-bg, 30%);
  }

  .btn-sidebar:hover {
    background: lighten($sidebar-dark-bg, 7.5%);
  }

  .btn-sidebar:focus {
    background: lighten($sidebar-dark-bg, 10%);
  }
}

[class*='sidebar-light'] {
  .form-control-sidebar,
  .btn-sidebar {
    background: darken($sidebar-light-bg, 5%);
    border: 1px solid darken($sidebar-light-bg, 15%);
    color: color-yiq(darken($sidebar-light-bg, 5%));
  }

  .form-control-sidebar:focus,
  .btn-sidebar:focus {
    border: 1px solid darken($sidebar-light-bg, 30%);
  }

  .btn-sidebar:hover {
    background: darken($sidebar-light-bg, 7.5%);
  }

  .btn-sidebar:focus {
    background: darken($sidebar-light-bg, 10%);
  }
}
