/**
 * Styles the GitLab application with a specific color theme
 */

@mixin gitlab-theme($color-100, $color-200, $color-500, $color-700, $color-800, $color-900, $color-alternate) {
  // Header

  .navbar-gitlab {
    background-color: $color-900;

    .navbar-collapse {
      color: $color-200;
    }

    .container-fluid {
      .navbar-toggle {
        border-left: 1px solid lighten($color-700, 10%);
      }
    }

    .navbar-sub-nav,
    .navbar-nav {
      > li {
        > a:hover,
        > a:focus {
          background-color: rgba($color-200, .2);
        }

        &.active > a,
        &.dropdown.open > a {
          color: $color-900;
          background-color: $color-alternate;

          svg {
            fill: currentColor;
          }
        }

        &.line-separator {
          border-left: 1px solid rgba($color-200, .2);
        }
      }
    }

    .navbar-sub-nav {
      color: $color-200;
    }

    .nav {
      > li {
        color: $color-200;

        > a {
          svg {
            fill: $color-200;
          }

          &.header-user-dropdown-toggle {
            .header-user-avatar {
              border-color: $color-200;
            }
          }

          &:hover,
          &:focus {
            @media (min-width: $screen-sm-min) {
              background-color: rgba($color-200, .2);
            }

            svg {
              fill: currentColor;
            }
          }
        }

        &.active > a,
        &.dropdown.open > a {
          color: $color-900;
          background-color: $color-alternate;

          &:hover {
            svg {
              fill: $color-900;
            }
          }
        }

        .impersonated-user,
        .impersonated-user:hover {
          svg {
            fill: $color-900;
          }
        }
      }
    }
  }

  .navbar .title {
    > a {
      &:hover,
      &:focus {
        background-color: rgba($color-200, .2);
      }
    }
  }

  .search {
    form {
      background-color: rgba($color-200, .2);

      &:hover {
        background-color: rgba($color-200, .3);
      }
    }

    .location-badge {
      color: $color-100;
      background-color: rgba($color-200, .1);
      border-right: 1px solid $color-800;
    }

    .search-input::placeholder {
      color: rgba($color-200, .8);
    }

    .search-input-wrap {
      .search-icon,
      .clear-icon {
        fill: rgba($color-200, .8);
      }
    }

    &.search-active {
      form {
        background-color: $white-light;
      }

      .location-badge {
        color: $gl-text-color;
      }

      .search-input-wrap {
        .search-icon {
          fill: rgba($color-200, .8);
        }
      }
    }
  }

  .btn-sign-in {
    background-color: $color-100;
    color: $color-900;
  }


  // Sidebar
  .nav-sidebar li.active {
    box-shadow: inset 4px 0 0 $color-700;

    > a {
      color: $color-800;
    }

    svg {
      fill: $color-800;
    }
  }

  .sidebar-top-level-items > li.active .badge {
    color: $color-800;
  }

  .nav-links li.active a {
    border-bottom-color: $color-500;

    .badge {
      font-weight: $gl-font-weight-bold;
    }
  }
}


body {
  &.ui_indigo {
    @include gitlab-theme($indigo-100, $indigo-200, $indigo-500, $indigo-700, $indigo-800, $indigo-900, $white-light);
  }

  &.ui_dark {
    @include gitlab-theme($theme-gray-100, $theme-gray-200, $theme-gray-500, $theme-gray-700, $theme-gray-800, $theme-gray-900, $white-light);
  }

  &.ui_blue {
    @include gitlab-theme($theme-blue-100, $theme-blue-200, $theme-blue-500, $theme-blue-700, $theme-blue-800, $theme-blue-900, $white-light);
  }

  &.ui_green {
    @include gitlab-theme($theme-green-100, $theme-green-200, $theme-green-500, $theme-green-700, $theme-green-800, $theme-green-900, $white-light);
  }

  &.ui_light {
    @include gitlab-theme($theme-gray-900, $theme-gray-700, $theme-gray-800, $theme-gray-700, $theme-gray-700, $theme-gray-100, $theme-gray-700);

    .navbar-gitlab {
      background-color: $theme-gray-100;
      box-shadow: 0 1px 0 0 $border-color;

      .logo-text svg {
        fill: $theme-gray-900;
      }

      .navbar-sub-nav,
      .navbar-nav {
        > li {
          > a:hover,
          > a:focus {
            color: $theme-gray-900;
          }

          &.active > a,
          &.active > a:hover {
            color: $white-light;
          }
        }
      }

      .container-fluid {
        .navbar-toggle,
        .navbar-toggle:hover {
          color: $theme-gray-700;
          border-left: 1px solid $theme-gray-200;
        }
      }
    }

    .search {
      form {
        background-color: $white-light;
        box-shadow: inset 0 0 0 1px $border-color;

        &:hover {
          background-color: $white-light;
          box-shadow: inset 0 0 0 1px $blue-200;

          .location-badge {
            box-shadow: inset 0 0 0 1px $blue-200;
          }
        }
      }

      .search-input-wrap {
        .search-icon {
          fill: $theme-gray-200;
        }

        .search-input {
          color: $gl-text-color;
        }
      }

      .location-badge {
        color: $theme-gray-700;
        box-shadow: inset 0 0 0 1px $border-color;
        background-color: $nav-badge-bg;
        border-right: 0;
      }
    }

    .nav-sidebar li.active {
      > a {
        color: $theme-gray-900;
      }

      svg {
        fill: $theme-gray-900;
      }
    }

    .sidebar-top-level-items > li.active .badge {
      color: $theme-gray-900;
    }
  }
}
