$carousel-navigator-btn-bg: transparent !default;
$carousel-navigator-btn-bg-hover: rgba($brand-primary-font, .4) !default;
$carousel-navigator-icon-color: $brand-primary-font !default;
$carousel-indicator-bar-bg: $brand-primary-font !default;
$carousel-indicator-bar-border: 1px solid rgba($brand-primary-font, .4) !default;
$carousel-indicator-bar-bg-active: $brand-primary !default;
$carousel-indicator-border-color-focus: $base-font !default;
$carousel-indicator-progress-bg: rgba($carousel-indicator-bar-bg-active, .4) !default;
$carousel-animation-duration: .6s !default;
$carousel-animation-timing-function: ease-in-out !default;
$carousel-navigator-btn-border-radius-hover: 50% !default;
$carousel-indicator-padding: 4px !default;
$carousel-indicator-height: 48px !default;
$carousel-indicator-bar-border-radius: 2px !default;
$carousel-indicator-bar-height: 5px !default;
$carousel-indicator-bar-width: 20px !default;
$carousel-indicator-dynamic-minheight: 36px !default;
$carousel-indicator-fraction-minheight: 36px !default;
$carousel-indicator-progress-minheight: 4px !default;
$carousel-indicator-progress-height: 4px !default;

@include export-module('carousel-layout') {
  .e-carousel {
    display: block;
    margin: 0;
    padding: 0;
    position: relative;

    .e-carousel-items,
    .e-carousel-slide-container {
      height: 100%;
      margin: 0;
      overflow: hidden;
      padding: 0;
      position: relative;
      width: 100%;
    }

    .e-carousel-items.e-swipe-start {
      cursor: pointer;
    }

    &.e-partial {
      .e-carousel-slide-container {
        padding: 0 100px;

        @media screen and (max-width: 480px) {
          padding: 0 75px;
        }

        @media screen and (max-width: 320px) {
          padding: 0 50px;
        }
      }
    }

    .e-carousel-items {
      width: calc(var(--carousel-items-count) * 100%);
      display: flex;
      flex-direction: row;
      transition-property: transform;
      transition-duration: $carousel-animation-duration;
      transition-timing-function: $carousel-animation-timing-function;

      .e-carousel-item {
        height: 100%;
        overflow: hidden;
        padding: 0;
        position: relative;
        width: calc(100% / var(--carousel-items-count));
      }
    }

    &.e-blazor-carousel {
      .e-carousel-items {
        transform: translateX(calc((-100%/var(--carousel-items-count)) * var(--carousel-items-current)));
        transition: transform;
      }
    }

    &.e-blazor-carousel.e-rtl {
      .e-carousel-items {
        transform: translateX(calc((100%/var(--carousel-items-count)) * var(--carousel-items-current)));
        transition: transform;
      }
    }

    &.e-carousel-fade-animation {
      .e-carousel-items {
        &.e-fade-in-out {
          transition-property: none;
          animation: fade-in-out $carousel-animation-duration $carousel-animation-timing-function;
        }

        @keyframes fade-in-out {
          0% {
            opacity: 0;
          }

          100% {
            opacity: 1;
          }
        }
      }
    }

    &.e-carousel-slide-animation {
      .e-carousel-items {
        &.e-slide {
          transition-duration: $carousel-animation-duration;
        }
      }
    }

    &.e-carousel-custom-animation:not(.e-partial) {
      .e-carousel-item {
        display: block;
        height: 100%;
        left: 0;
        opacity: 0;
        pointer-events: none;
        top: 0;

        &.e-active {
          opacity: 1;
          pointer-events: visible;
        }
      }
    }

    .e-carousel-navigators {
      align-items: center;
      display: flex;
      height: 100%;
      justify-content: space-between;
      pointer-events: none;
      position: absolute;
      top: 0;
      width: 100%;
      z-index: 1;

      .e-play-pause,
      .e-previous,
      .e-next {
        padding: .5em;
        pointer-events: auto;

        .e-btn {
          border: 0;
          box-shadow: none;

          &:hover {
            border-radius: $carousel-navigator-btn-border-radius-hover;
          }

          &.e-rtl {
            transform: rotate(180deg);
          }

          .e-play-icon {
            line-height: 1;
            padding-left: 3px;
          }
        }

        &.e-hover-arrows {
          display: none;
        }
      }
    }

    .e-carousel-indicators {
      align-items: center;
      bottom: 0;
      display: flex;
      justify-content: center;
      min-height: $carousel-indicator-height;
      padding: 0;
      pointer-events: none;
      position: absolute;
      width: 100%;
      z-index: 1;

      &.e-default .e-indicator-bars {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        pointer-events: auto;

        .e-indicator-bar {
          padding: 0;

          .e-indicator {
            align-items: center;
            display: flex;
            justify-content: center;
            padding: $carousel-indicator-padding;
          }

          .e-indicator div {
            border: $carousel-indicator-bar-border;
            border-radius: $carousel-indicator-bar-border-radius;
            height: $carousel-indicator-bar-height;
            transition-duration: $carousel-animation-duration;
            transition-property: background-color, border-color;
            transition-timing-function: $carousel-animation-timing-function;
            width: $carousel-indicator-bar-width;
          }

          .e-indicator .e-ripple-element {
            display: none;
          }
        }
      }

      &.e-dynamic {
        min-height: $carousel-indicator-dynamic-minheight;

        .e-indicator-bars {
          display: block;
          overflow: hidden;
          transition: opacity $carousel-animation-duration $carousel-animation-timing-function;
          white-space: nowrap;
          width: 80px;

          .e-indicator-bar {
            border-radius: 50%;
            display: inline-block;
            height: 8px;
            left: calc(32px - calc(16px * var(--carousel-items-current)));
            margin: 0 4px;
            opacity: 1;
            position: relative;
            transform: scale(.33);
            transition-duration: $carousel-animation-duration;
            transition-property: transform, left;
            transition-timing-function: $carousel-animation-timing-function;
            white-space: nowrap;
            width: 8px;

            &.e-active {
              transform: scale(1);
            }

            &.e-prev,
            &.e-next {
              transform: scale(.66);
            }
          }
        }
      }

      &.e-fraction {
        min-height: $carousel-indicator-fraction-minheight;
      }

      &.e-progress {
        min-height: $carousel-indicator-progress-minheight;

        .e-indicator-bars {
          height: $carousel-indicator-progress-height;
          width: 100%;

          .e-indicator-bar {
            height: 100%;
            left: 0;
            position: absolute;
            top: 0;
            transform: translate3d(0, 0, 0) scaleX(calc(var(--carousel-items-current) / var(--carousel-items-count))) scaleY(1);
            transition-duration: $carousel-animation-duration;
            transform-origin: left top;
            width: 100%;
          }
        }
      }
    }
  }
}


@mixin carousel-navigator-button-color($color) {
  .e-btn-icon {
    color: $color;
  }
}

@include export-module('carousel-theme') {
  .e-carousel {
    .e-carousel-navigators {

      .e-previous .e-btn:not(:disabled),
      .e-next .e-btn:not(:disabled),
      .e-play-pause .e-btn:not(:disabled) {
        background-color: $carousel-navigator-btn-bg;
        @include carousel-navigator-button-color($carousel-navigator-icon-color);

        &:active,
        &:focus,
        &:hover {
          background-color: $carousel-navigator-btn-bg-hover;
          outline: none;
        }

        @if $skin-name == 'fluent2' or $skin-name == 'tailwind3' {
          &:focus-visible {
            background-color: $carousel-navigator-btn-bg;
            box-shadow: $carousel-navigator-btn-focus-box-shadow;
            @include carousel-navigator-button-color($carousel-navigator-icon-color);
            @if $skin-name !='tailwind3' {
              border-radius: 4px;
              @include carousel-navigator-button-color($carousel-navigator-btn-hover-color);
            }
          }
          &:active {
            @if $skin-name == 'tailwind3' {
              background-color: $carousel-navigator-btn-bg-active;
            }
            @include carousel-navigator-button-color($carousel-navigator-btn-active-color);
          }
          &:hover,
          &:focus {
            @include carousel-navigator-button-color($carousel-navigator-btn-hover-color);
          }
        }
      }
    }

    .e-carousel-indicators {
      &.e-default .e-indicator-bar {
        .e-indicator {
          background-color: transparent;
          border-color: transparent;
          box-shadow: none;

          div {
            background: $carousel-indicator-bar-bg;
            @if ($skin-name == 'Material3') {
              border-image: $carousel-indicator-bar-border-bg;
            }
            @else {
              border-color: $carousel-indicator-bar-bg;
            }
          }

          &:active,
          &:focus,
          &:hover {
            background: transparent;
            border-color: transparent;
            box-shadow: none;
            outline: none;
          }

          &:focus-visible {
            border-color: $carousel-indicator-border-color-focus;
          }
        }

        &.e-active .e-indicator div {
          background-color: $carousel-indicator-bar-bg-active;
          border-color: $carousel-indicator-bar-bg-active;
        }
      }

      &.e-dynamic .e-indicator-bars {
        .e-indicator-bar {
          background-color: $carousel-navigator-icon-color;

          &.e-active {
            background-color: $carousel-indicator-bar-bg-active;
          }
        }
      }

      &.e-fraction .e-indicator-bars {
        color: $carousel-navigator-icon-color;
      }

      &.e-progress .e-indicator-bars {
        background-color: $carousel-indicator-progress-bg;

        .e-indicator-bar {
          background-color: $carousel-indicator-bar-bg-active;
        }
      }
    }
  }
}


@include export-module('carousel-bootstrap-icons') {
  .e-carousel {

    .e-previous-icon::before {
      content: '\e904';
    }

    .e-next-icon::before {
      content: '\e826';
    }

    .e-play-icon::before {
      content: '\e328';
    }

    .e-pause-icon::before {
      content: '\e329';
    }

    &.e-rtl {
      .e-previous-icon::before {
        content: '\e826';
      }

      .e-next-icon::before {
        content: '\e904';
      }
    }
  }
}

