@import './var.less';

:root {
  --van-tab-text-color: @tab-text-color;
  --van-tab-active-text-color: @tab-active-text-color;
  --van-tab-disabled-text-color: @tab-disabled-text-color;
  --van-tab-font-size: @tab-font-size;
  --van-tab-line-height: @tab-line-height;
  --van-tabs-default-color: @tabs-default-color;
  --van-tabs-line-height: @tabs-line-height;
  --van-tabs-card-height: @tabs-card-height;
  --van-tabs-card-border-radius: @tabs-card-border-radius;
  --van-tabs-nav-background-color: @tabs-nav-background-color;
  --van-tabs-bottom-bar-width: @tabs-bottom-bar-width;
  --van-tabs-bottom-bar-height: @tabs-bottom-bar-height;
  --van-tabs-bottom-bar-color: @tabs-bottom-bar-color;
  --van-tabs-card-active-background-color: @tabs-card-active-background-color;
  --van-tabs-card-border-color: @tabs-card-border-color;
  --van-tabs-card-gray-background-color: @tabs-card-gray-background-color;
  --van-tabs-card-gray-active-background-color: @tabs-card-gray-active-background-color;
  --van-tabs-card-gray-active-shadow: @tabs-card-gray-active-shadow;
  --van-tabs-filter-background-color: @tabs-filter-background-color;
  --van-tabs-filter-active-background-color: @tabs-filter-active-background-color;
  --van-tabs-filter-border-radius: @tabs-filter-border-radius;
  --van-tabs-more-width: @tabs-more-width;
  --van-tabs-more-icon-size: @tabs-more-icon-size;
}

.van-tab {
  position: relative;
  display: flex;
  flex: 1;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  padding: 0 var(--van-padding-base);
  color: var(--van-tab-text-color);
  font-size: var(--van-tab-font-size);
  line-height: var(--van-tab-line-height);
  cursor: pointer;

  &--active {
    color: var(--van-tab-active-text-color);
    font-weight: var(--van-font-weight-bold);
  }

  &--disabled {
    color: var(--van-tab-disabled-text-color);
    cursor: not-allowed;
  }

  &--grow {
    flex: 1 0 auto;
    padding: 0 var(--van-padding-sm);
  }

  &--shrink {
    flex: none;
    padding: 0 var(--van-padding-xs);
  }

  &--card {
    position: relative;
    z-index: 1;
    height: var(--van-tabs-card-height);
    margin-right: -1px;
    padding: var(--van-padding-base) var(--van-padding-md);
    color: var(--van-gray-7);
    border: var(--van-border-width-base) solid var(--van-tabs-card-border-color);
    background: var(--van-white);

    &:first-child {
      border-radius: var(--van-tabs-card-border-radius) 0 0 var(--van-tabs-card-border-radius);
    }

    &:last-child {
      margin-right: 0;
      border-radius: 0 var(--van-tabs-card-border-radius) var(--van-tabs-card-border-radius) 0;
    }

    &.van-tab--active {
      z-index: 2;
      color: var(--van-tabs-default-color);
      border-color: var(--van-tabs-default-color);
      background-color: var(--van-tabs-card-active-background-color);
    }

    &.van-tab--disabled {
      color: var(--van-gray-4);
      opacity: 1;
    }
  }

  &__text {
    &--ellipsis {
      display: -webkit-box;
      overflow: hidden;
      -webkit-line-clamp: 1;
      -webkit-box-orient: vertical;
    }
  }

  &__badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;

    .van-badge--fixed {
      position: static;
      transform: none;
    }
  }

  &--card-gray {
    height: var(--van-tabs-card-height);
    padding: var(--van-padding-base) var(--van-padding-md);
    color: var(--van-gray-7);

    &.van-tab--active {
      color: var(--van-tabs-default-color);
      background: var(--van-tabs-card-gray-active-background-color);
      box-shadow: var(--van-tabs-card-gray-active-shadow);
      border-radius: var(--van-tabs-card-border-radius);
    }

    &.van-tab--disabled {
      color: var(--van-gray-4);
      opacity: 1;
    }
  }

  &--filter {
    flex: none;
    min-height: var(--van-tabs-card-height);
    padding: var(--van-padding-base) var(--van-padding-sm);
    color: var(--van-gray-8);
    background: var(--van-tabs-filter-background-color);
    border-radius: var(--van-tabs-filter-border-radius);

    &.van-tab--disabled {
      color: var(--van-gray-4);
      opacity: 1;
    }

    &.van-tab--active {
      color: var(--van-tabs-default-color);
      background: var(--van-tabs-filter-active-background-color);
    }
  }
}

.van-tabs {
  position: relative;

  &__wrap {
    position: relative;
    overflow: hidden;

    &--page-top {
      position: fixed;
    }

    &--content-bottom {
      top: auto;
      bottom: 0;
    }
  }

  &__nav {
    position: relative;
    display: flex;
    background: var(--van-tabs-nav-background-color);
    user-select: none;

    &--complete {
      overflow-x: auto;
      overflow-y: hidden;
      -webkit-overflow-scrolling: touch;

      &::-webkit-scrollbar {
        display: none;
      }
    }

    &--line {
      box-sizing: content-box;
      height: 100%;
      padding-bottom: 15px; /* 15px padding to hide scrollbar in mobile safari */
    }

    &--line&--shrink,
    &--line&--complete {
      padding-right: var(--van-padding-xs);
      padding-left: var(--van-padding-xs);
    }

    &--card {
      box-sizing: border-box;
      height: var(--van-tabs-card-height);
      margin: 0 var(--van-padding-md);
      border: 0;
      border-radius: var(--van-tabs-card-border-radius);
      overflow: hidden;
      isolation: isolate;
    }

    &--card&--shrink {
      display: inline-flex;
    }

    &--card-gray {
      box-sizing: border-box;
      height: calc(var(--van-tabs-card-height) + var(--van-padding-xs));
      margin: 0 var(--van-padding-md);
      padding: var(--van-padding-base);
      background: var(--van-tabs-card-gray-background-color);
      border-radius: var(--van-tabs-card-border-radius);
      overflow: hidden;
    }

    &--filter {
      box-sizing: border-box;
      min-height: calc(var(--van-tabs-card-height) + var(--van-padding-xs));
      padding: var(--van-padding-xs) var(--van-padding-md);
      gap: 6px;
    }

    &--more {
      padding-right: var(--van-tabs-more-width);
    }
  }

  &__line {
    position: absolute;
    bottom: 15px;
    left: 0;
    z-index: 1;
    width: var(--van-tabs-bottom-bar-width);
    height: var(--van-tabs-bottom-bar-height);
    background: var(--van-tabs-bottom-bar-color);
    border-radius: var(--van-tabs-bottom-bar-height);
  }

  &__track {
    position: relative;
    display: flex;
    width: 100%;
    height: 100%;
    will-change: left;
  }

  &__content {
    &--animated {
      overflow: hidden;
    }
  }

  &__more {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--van-tabs-more-width);
    padding: 0;
    color: var(--van-tab-text-color);
    font: inherit;
    font-size: var(--van-tabs-more-icon-size);
    background: linear-gradient(
      270deg,
      var(--van-tabs-nav-background-color) 70%,
      transparent
    );
    border: 0;

    &:active {
      opacity: var(--van-active-opacity);
    }
  }

  &__more-panel {
    height: auto;

    .van-action-sheet__content {
      flex: 0 1 auto;
      min-height: 0;
    }
  }

  &--line {
    .van-tabs__wrap {
      height: var(--van-tabs-line-height);
    }
  }

  &--card {
    box-sizing: border-box;
    padding-top: var(--van-padding-xs);
    background: var(--van-white);

    > .van-tabs__wrap {
      height: var(--van-tabs-card-height);
    }
  }

  &--card-gray {
    box-sizing: border-box;
    padding-top: var(--van-padding-xs);
    background: var(--van-white);

    > .van-tabs__wrap {
      height: calc(var(--van-tabs-card-height) + var(--van-padding-xs));
    }
  }

  &--filter {
    > .van-tabs__wrap {
      height: calc(var(--van-tabs-card-height) + var(--van-padding-xs));
    }

    .van-tabs__more {
      top: var(--van-padding-xs);
    }
  }
}
