@use "../../style/variables" as *;

.#{$prefix}-slider {
  position: relative;
  box-sizing: border-box;
  cursor: pointer;

  &_horizontal {
    width: 100%;
    min-height: var(--ty-slider-size);
    margin: var(--ty-slider-horizontal-margin);
    padding: var(--ty-slider-horizontal-padding);

    .#{$prefix}-slider {
      &__rail {
        width: 100%;
        height: var(--ty-slider-track-size);
        left: 0;
      }

      &__track {
        height: var(--ty-slider-track-size);
      }

      &__thumb-container, &__dot {
        top: 50%;
      }

      &__mark {
        top: 15px;
        transform: translateX(-50%);
      }
    }
  }

  &_vertical {
    width: var(--ty-slider-vertical-width);
    height: 100%;
    margin: var(--ty-slider-vertical-margin);
    padding: var(--ty-slider-vertical-padding);

    .#{$prefix}-slider {
      &__rail {
        width: var(--ty-slider-track-size);
        height: 100%;
        top: 0;
      }

      &__track {
        width: var(--ty-slider-track-size);
      }

      &__thumb-container, &__dot {
        left: 50%;
      }

      &__mark {
        left: 15px;
        transform: translateY(50%);
      }
    }
  }

  &__rail {
    position: absolute;
    border-radius: var(--ty-slider-rail-radius);
    box-sizing: border-box;
    background-color: var(--ty-slider-rail-bg);
  }

  &__track {
    box-sizing: border-box;
    border-radius: var(--ty-slider-rail-radius);
    background-color: var(--ty-slider-primary-color);
    position: absolute;

    &_invisible{
      background-color: transparent;
    }
  }

  &__thumb-container {
    position: absolute;
    z-index: 1;
    width: var(--ty-slider-thumb-hit-size);
    height: var(--ty-slider-thumb-hit-size);
    outline: none;
    display: flex;
    justify-content: center;
    align-items: center;

    &_hovering {
      cursor: grab;

      .#{$prefix}-slider__thumb {
        transform: scale(var(--ty-slider-thumb-scale-hover));
      }
    }

    &_dragging {
      cursor: grabbing;
    }
  }

  &__thumb {
    box-sizing: border-box;
    width: var(--ty-slider-thumb-size);
    height: var(--ty-slider-thumb-size);
    border: 1px solid var(--ty-slider-primary-color);
    background-color: var(--ty-slider-thumb-bg);
    border-radius: 50%;
    transition: transform 250ms;
  }


  &__dot {
    box-sizing: border-box;
    position: absolute;
    width: var(--ty-slider-dot-size);
    height: var(--ty-slider-dot-size);
    border-radius: 50%;
    background-color: var(--ty-slider-dot-bg);
    border: 2px solid var(--ty-slider-dot-border);
    transform: translate(-50%, -50%);

    &_active {
      border-color: var(--ty-slider-primary-color);
    }
  }

  &__mark {
    position: absolute;
    color: var(--ty-slider-mark-color);
    text-align: center;
    word-break: keep-all;
    cursor: pointer;
    font-size: 0.9em;
    user-select: none;

    &_active {
      color: var(--ty-slider-mark-active-color);
    }
  }

  &_disabled {
    cursor: not-allowed;

    .#{$prefix}-slider {
      &__track {
        background-color: var(--ty-slider-disabled-color);
      }

      &__thumb {
        border-color: var(--ty-slider-disabled-color);
        transform: scale(1);
      }

      &__thumb-container {
        &_hovering, &_dragging {
          cursor: not-allowed;
        }
      }

      &__mark {
        cursor: not-allowed;
      }
    }
  }
}
