/**
 * Tabs
 * --------------------------------------------------
 * A navigation bar with any number of tab items supported.
 */

.tabs {
  @include display-flex();
  @include flex-direction(horizontal);
  @include justify-content(center);
  @include translate3d(0,0,0);

  @include tab-style($tabs-default-bg, $tabs-default-border, $tabs-default-text);
  @include tab-badge-style($tabs-default-text, $tabs-default-bg);

  position: absolute;
  bottom: 0;

  z-index: $z-index-tabs;

  width: 100%;
  height: $tabs-height;

  border-style: solid;
  border-top-width: 1px;

  background-size: 0;
  line-height: $tabs-height;

  @media (min--moz-device-pixel-ratio: 1.5),
         (-webkit-min-device-pixel-ratio: 1.5),
         (min-device-pixel-ratio: 1.5),
         (min-resolution: 144dpi),
         (min-resolution: 1.5dppx) {
    padding-top: 2px;
    border-top: none !important;
    border-bottom: none;
    background-position: top;
    background-size: 100% 1px;
    background-repeat: no-repeat;
  }

}
/* Allow parent element of tabs to define color, or just the tab itself */
.tabs-light > .tabs,
.tabs.tabs-light {
  @include tab-style($tabs-light-bg, $tabs-light-border, $tabs-light-text);
  @include tab-badge-style($tabs-light-text, $tabs-light-bg);
}
.tabs-stable > .tabs,
.tabs.tabs-stable {
  @include tab-style($tabs-stable-bg, $tabs-stable-border, $tabs-stable-text);
  @include tab-badge-style($tabs-stable-text, $tabs-stable-bg);
}
.tabs-primary > .tabs,
.tabs.tabs-primary {
  @include tab-style($tabs-primary-bg, $tabs-primary-border, $tabs-primary-text);
  @include tab-badge-style($tabs-primary-text, $tabs-primary-bg);
}
.tabs-secondary > .tabs,
.tabs.tabs-secondary {
  @include tab-style($tabs-secondary-bg, $tabs-secondary-border, $tabs-secondary-text);
  @include tab-badge-style($tabs-secondary-text, $tabs-secondary-bg);
}

@mixin tabs-striped($style, $color, $background) {
  &.#{$style} {
    .tabs{
      background-color: $background;
    }
    .tab-item {
      color: rgba($color, $tabs-striped-off-opacity);
      opacity: 1;
      .badge{
        opacity:$tabs-striped-off-opacity;
      }
      &.tab-item-active,
      &.active,
      &.activated {
        margin-top: -$tabs-striped-border-width;
        color: $color;
        border-style: solid;
        border-width: $tabs-striped-border-width 0 0 0;
        border-color: $color;
      }
    }
  }
  &.tabs-top{
    .tab-item {
      &.tab-item-active,
      &.active,
      &.activated {
        .badge {
          top: 4%;
        }
      }
    }
  }
}

@mixin tabs-background($style, $color, $border-color) {
  .#{$style} {
    .tabs,
    &> .tabs{
      background-color: $color;
      background-image: linear-gradient(0deg, $border-color, $border-color 50%, transparent 50%);
      border-color: $border-color;
    }
  }
}

@mixin tabs-striped-background($style, $color) {
  &.#{$style} {
    .tabs {
      background-color: $color;
      background-image:none;
    }
  }
}

@mixin tabs-color($style, $color) {
  .#{$style} {
    .tab-item {
      color: rgba($color, $tabs-off-opacity);
      opacity: 1;
      .badge{
        opacity:$tabs-off-opacity;
      }
      &.tab-item-active,
      &.active,
      &.activated {
        color: $color;
        border: 0 solid $color;
        .badge{
          opacity: 1;
        }
      }
    }
  }
}

@mixin tabs-striped-color($style, $color) {
  &.#{$style} {
    .tab-item {
      color: rgba($color, $tabs-striped-off-opacity);
      opacity: 1;
      .badge{
        opacity:$tabs-striped-off-opacity;
      }
      &.tab-item-active,
      &.active,
      &.activated {
        margin-top: -$tabs-striped-border-width;
        color: $color;
        border: 0 solid $color;
        border-top-width: $tabs-striped-border-width;
        .badge{
          top:$tabs-striped-border-width;
          opacity: 1;
        }
      }
    }
  }
}

.tabs-striped {
  .tabs {
    background-color: white;
    background-image: none;
    border: none;
    border-bottom: 1px solid #ddd;
    padding-top: $tabs-striped-border-width;
  }
  .tab-item {
    // default android tab style
    &.tab-item-active,
    &.active,
    &.activated {
      margin-top: -$tabs-striped-border-width;
      border-style: solid;
      border-width: $tabs-striped-border-width 0 0 0;
      border-color: $dark;
      .badge{
        top:$tabs-striped-border-width;
        opacity: 1;
      }
    }
  }
  @include tabs-striped('tabs-light', $dark, $white);
  @include tabs-striped('tabs-stable', $dark, $stable);
  @include tabs-striped('tabs-primary', $dark, $primary);
  @include tabs-striped('tabs-secondary', $dark, $secondary);

  // doing this twice so striped tabs styles don't override specific bg and color vals
  @include tabs-striped-background('tabs-background-light', $white);
  @include tabs-striped-background('tabs-background-stable', $stable);
  @include tabs-striped-background('tabs-background-primary', $primary);
  @include tabs-striped-background('tabs-background-secondary', $secondary);

  @include tabs-striped-color('tabs-color-light', $white);
  @include tabs-striped-color('tabs-color-stable', $stable);
  @include tabs-striped-color('tabs-color-primary', $primary);
  @include tabs-striped-color('tabs-color-secondary', $secondary);


}

@include tabs-background('tabs-background-light', $white, $bar-light-border);
@include tabs-background('tabs-background-stable', $stable, $bar-stable-border);
@include tabs-background('tabs-background-primary', $primary, $bar-primary-border);
@include tabs-background('tabs-background-secondary', $secondary, $bar-secondary-border);

@include tabs-color('tabs-color-light', $white);
@include tabs-color('tabs-color-stable', $stable);
@include tabs-color('tabs-color-primary', $primary);
@include tabs-color('tabs-color-secondary', $secondary);

@mixin tabs-standard-color($style, $color, $off-color:$dark) {
  &.#{$style} {
    .tab-item {
      color: $off-color;
      &.tab-item-active,
      &.active,
      &.activated {
        color: $color;
      }
    }
  }
}

ion-tabs {
  @include tabs-standard-color('tabs-color-active-light', $white, $dark);
  @include tabs-standard-color('tabs-color-active-stable', $stable, $dark);
  @include tabs-standard-color('tabs-color-active-primary', $primary, $dark);
  @include tabs-standard-color('tabs-color-active-secondary', $secondary, $dark);
}

.tabs-top {
  &.tabs-striped {
    padding-bottom:0;
    .tab-item{
      background: transparent;
      // animate the top bar, leave bottom for platform consistency
      -webkit-transition: all .1s ease;
      -moz-transition: all .1s ease;
      -ms-transition: all .1s ease;
      -o-transition: all .1s ease;
      transition: all .1s ease;
      &.tab-item-active,
      &.active,
      &.activated {
        margin-top: 0;
        margin-bottom: -$tabs-striped-border-width;
        border-width: 0px 0px $tabs-striped-border-width 0px !important;
        border-style: solid;
      }
      .badge{
        -webkit-transition: all .2s ease;
        -moz-transition: all .2s ease;
        -ms-transition: all .2s ease;
        -o-transition: all .2s ease;
        transition: all .2s ease;
      }
    }
  }
}

/* Allow parent element to have tabs-top */
/* If you change this, change platform.scss as well */
.tabs-top > .tabs,
.tabs.tabs-top {
  top: $bar-height;
  padding-top: 0;
  background-position: bottom;
  border-top-width: 0;
  border-bottom-width: 1px;
  .tab-item {
    &.tab-item-active,
    &.active,
    &.activated {
      .badge {
        top: 4%;
      }
    }
  }
}
.tabs-top ~ .bar-header {
  border-bottom-width: 0;
}

.tab-item {
  @include flex(1);
  display: block;
  overflow: hidden;

  max-width: $tab-item-max-width;
  height: 100%;

  color: inherit;
  text-align: center;
  text-decoration: none;
  text-overflow: ellipsis;
  white-space: nowrap;

  font-weight: 400;
  font-size: $tabs-text-font-size;
  font-family: $font-family-sans-serif;

  opacity: 0.7;

  &:hover {
    cursor: pointer;
  }
  &.tab-hidden{
    display:none;
  }
}

.tabs-item-hide > .tabs,
.tabs.tabs-item-hide {
  display: none;
}

.tabs-icon-top > .tabs .tab-item,
.tabs-icon-top.tabs .tab-item,
.tabs-icon-bottom > .tabs .tab-item,
.tabs-icon-bottom.tabs .tab-item {
  font-size: $tabs-text-font-size-side-icon;
  line-height: $tabs-text-font-size;
}

.tab-item .icon {
  display: block;
  margin: 0 auto;
  height: $tabs-icon-size;
  font-size: $tabs-icon-size;
}

.tabs-icon-left.tabs .tab-item,
.tabs-icon-left > .tabs .tab-item,
.tabs-icon-right.tabs .tab-item,
.tabs-icon-right > .tabs .tab-item {
  font-size: $tabs-text-font-size-side-icon;

  .icon {
    display: inline-block;
    vertical-align: top;
    margin-top: -.1em;

    &:before {
    font-size: $tabs-icon-size - 8;
    line-height: $tabs-height;
    }
  }
}

.tabs-icon-left > .tabs .tab-item .icon,
.tabs-icon-left.tabs .tab-item .icon {
  padding-right: 3px;
}

.tabs-icon-right > .tabs .tab-item .icon,
.tabs-icon-right.tabs .tab-item .icon {
  padding-left: 3px;
}

.tabs-icon-only > .tabs .icon,
.tabs-icon-only.tabs .icon {
  line-height: inherit;
}


.tab-item.has-badge {
  position: relative;
}

.tab-item .badge {
  position: absolute;
  top: 4%;
  right: 33%; // fallback
  right: calc(50% - 26px);
  padding: $tabs-badge-padding;
  height: auto;
  font-size: $tabs-badge-font-size;
  line-height: $tabs-badge-font-size + 4;
}


/* Navigational tab */

/* Active state for tab */
.tab-item.tab-item-active,
.tab-item.active,
.tab-item.activated {
  opacity: 1;

  &.tab-item-light {
    color: $white;
  }
  &.tab-item-stable {
    color: $stable;
  }
  &.tab-item-primary {
    color: $primary;
  }
  &.tab-item-secondary {
    color: $secondary;
  }
}

.item.tabs {
  @include display-flex();
  padding: 0;

  .icon:before {
    position: relative;
  }
}

.tab-item.disabled,
.tab-item[disabled] {
  opacity: .4;
  cursor: default;
  pointer-events: none;
}
