/**
* Copyright (c) 2022 - present TinyVue Authors.
* Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.
*
* Use of this source code is governed by an MIT-style license.
*
* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
* BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR
* A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.
*
*/

@import '../custom.less';
@import './vars.less';
@import '../transition/carousel-arrow.less';

@carousel-prefix-cls: ~'@{css-prefix}carousel';
@svg-prefix-cls: ~'@{css-prefix}svg';

.@{carousel-prefix-cls} {
  .inject-Carousel-vars();

  overflow: hidden;
  position: relative;

  &&--card {
    .@{carousel-prefix-cls}__indicators {
      display: none;
    }
  }

  &__container {
    position: relative;
    height: 300px;

    .@{carousel-prefix-cls}__arrow {
      border: none;
      outline: 0;
      padding: 0;
      margin: 0;
      height: var(--tv-Carousel-arrow-height);
      width: var(--tv-Carousel-arrow-width);
      cursor: pointer;
      transition: 0.3s;
      border-radius: 50%;
      background-color: var(--tv-Carousel-arrow-bg-color);
      color: var(--tv-Carousel-indicator-active-text-color);
      position: absolute;
      top: 50%;
      z-index: 3;
      transform: translateY(-50%);
      text-align: center;
      font-size: var(--tv-Carousel-arrow-font-size);
      display: flex;
      align-items: center;
      justify-content: center;
      opacity: 0.5;

      .@{svg-prefix-cls} {
        fill: var(--tv-Carousel-indicator-active-text-color);

        &:hover {
          fill: var(--tv-Carousel-indicator-hover-text-color);
        }
      }

      &.@{carousel-prefix-cls}__arrow-left {
        left: 16px;
        background-color: var(--tv-Carousel-arrow-left-bg-color);

        svg {
          fill: var(--tv-Carousel-arrow-svg-color);
        }
      }

      &.@{carousel-prefix-cls}__arrow-right {
        right: 16px;
        background-color: var(--tv-Carousel-arrow-right-bg-color);

        svg {
          fill: var(--tv-Carousel-arrow-svg-color);
        }
      }

      &.@{carousel-prefix-cls}__arrow-top {
        top: 0;
        left: 50%;
        transform: translateX(-50%);
      }

      &.@{carousel-prefix-cls}__arrow-bottom {
        bottom: 0;
        left: 50%;
        top: unset;
        transform: translateX(-50%);
      }

      &.@{carousel-prefix-cls}__arrow-disabled {
        background-color: var(--tv-Carousel-arrow-bg-color-disabled);
        cursor: not-allowed;
        .@{svg-prefix-cls} {
          fill: var(--tv-Carousel-arrow-icon-color-disabled);
        }
      }

      &:not(.@{carousel-prefix-cls}__arrow-disabled):hover {
        background-color: var(--tv-Carousel-arrow-hover-bg-color);
        color: var(--tv-Carousel-arrow-hover-text-color);
      }

      i {
        cursor: pointer;
      }
    }
  }

  & &__indicators {
    position: absolute;
    list-style: none;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    margin: 0 0 16px;
    padding: 0 4px;
    z-index: 2;
    background: none;
    border-radius: var(--tv-Carousel-indicators-border-radius);
    height: var(--tv-Carousel-indicators-height);

    .@{carousel-prefix-cls}__indicator {
      display: inline-block;
      background-color: transparent;
      padding: 0;
      margin-right: 12px;
      cursor: pointer;

      &:last-child {
        margin-right: 0;
      }

      &:hover button {
        opacity: 0.8;
      }

      &.is-active {
        width: var(--tv-Carousel-indicator-active-width);
        background-color: var(--tv-Carousel-indicator-active-background-color);
        border-radius: var(--tv-Carousel-indicator-active-border-radius);
        transition: none;
      }

      &.is-active button {
        transition-property: none;
        transition-timing-function: cubic-bezier(0.16, 0.75, 0.5, 1);
        border-radius: var(--tv-Carousel-indicator-active-border-radius);
        background-color: var(--tv-Carousel-outside-button-active-bg-color);
        width: var(--tv-Carousel-indicator-active-button-width);
      }

      .@{carousel-prefix-cls}__button {
        display: block;
        width: 8px;
        height: 8px;
        background-color: var(--tv-Carousel-indicator-button-bg-color);
        border: none;
        outline: 0;
        padding: 0;
        margin: 0;
        cursor: pointer;
        transition: 0.3s;
        border-radius: 50%;
      }
    }

    &.@{carousel-prefix-cls}__indicators-outside {
      bottom: 26px;
      text-align: center;
      position: static;
      transform: none;
      margin-top: 16px;
      background: transparent;

      button {
        background-color: var(--tv-Carousel-outside-button-bg-color);
      }

      .@{carousel-prefix-cls}__indicator {
        &:hover button {
          opacity: 0.6;
        }

        &.is-active button {
          background-color: var(--tv-Carousel-outside-button-active-bg-color);
        }
      }
    }

    &.@{carousel-prefix-cls}__indicators-labels {
      left: 0;
      right: 0;
      transform: none;
      text-align: center;

      .@{carousel-prefix-cls}__button {
        padding: 2px 18px;
        font-size: var(--tv-Carousel-labels-button-font-size);
      }

      .@{carousel-prefix-cls}__indicator {
        padding: 6px 4px;
      }
    }

    &.@{carousel-prefix-cls}__indicators-title {
      left: auto;
      right: 16px;
      bottom: 0;
      margin: 0 0 16px;
      transform: none;
      background: transparent;
    }

    &.@{carousel-prefix-cls}__indicators-vertical {
      left: 16px;
      right: 0;
      bottom: 50%;
      width: 16px;
      height: auto;
      transform: translateY(50%);
      padding: 2px 0;
      margin: 0;

      .@{carousel-prefix-cls}__indicator {
        display: block;
        margin: 0 0 12px;
        padding: 0;

        &:first-child {
          padding-left: 0;
        }

        &:last-child {
          padding-right: 0;
        }
      }
    }

    &:not(.@{carousel-prefix-cls}__indicators-vertical) {
      display: flex;
      justify-content: center;
      align-items: center;
    }
  }
}