@use 'sass:map'
@use 'sass:selector'
@use '../../styles/settings'
@use '../../styles/tools'
@use './variables' as *

// Theme
.v-slider-track__background
  background-color: rgb(var(--v-theme-surface-variant))

.v-slider-track__fill
  background-color: rgb(var(--v-theme-surface-variant))

.v-slider-track__tick
  background-color: rgb(var(--v-theme-surface-variant))

  &--filled
    background-color: $slider-tick-background

// Elements
.v-slider-track
  border-radius: $slider-track-border-radius

.v-slider-track
  &__background, &__fill
    position: absolute
    transition: $slider-transition
    border-radius: inherit

    .v-slider--pressed &
      transition: none

    .v-input--error:not(.v-input--disabled) &
      background-color: currentColor

.v-slider-track__ticks
  height: 100%
  width: 100%
  position: relative

.v-slider-track__tick
  position: absolute
  opacity: 0
  transition: 0.2s opacity settings.$standard-easing
  border-radius: $slider-tick-border-radius
  width: var(--v-slider-tick-size)
  height: var(--v-slider-tick-size)
  transform: translate(calc(var(--v-slider-tick-size) / -2), calc(var(--v-slider-tick-size) / -2))

  &--first .v-slider-track__tick-label
    @include tools.ltr()
      transform: none

    @include tools.rtl()
      transform: translateX(100%)

  &--last .v-slider-track__tick-label
    @include tools.ltr()
      transform: translateX(-100%)

    @include tools.rtl()
      transform: none

.v-slider-track__tick-label
  position: absolute
  user-select: none
  white-space: nowrap

// Horizontal
.v-slider.v-input--horizontal
  .v-slider-track
    display: flex
    align-items: center
    width: 100%
    height: $slider-track-active-size
    touch-action: pan-y

    &__background
      height: var(--v-slider-track-size)

    &__fill
      height: inherit

  .v-slider-track__tick
    margin-top: calc(#{$slider-track-active-size} / 2)

    @include tools.rtl()
      transform: translate(calc(var(--v-slider-tick-size) / 2), calc(var(--v-slider-tick-size) / -2))

    .v-slider-track__tick-label
      margin-top: calc(var(--v-slider-track-size) / 2 + #{$slider-tick-label-margin-top})

      @include tools.ltr()
        transform: translateX(-50%)

      @include tools.rtl()
        transform: translateX(50%)

    &--first
      margin-inline-start: calc(var(--v-slider-tick-size) + 1px)

      .v-slider-track__tick-label
        @include tools.ltr()
          transform: translateX(0%)

        @include tools.rtl()
          transform: translateX(0%)

    &--last
      margin-inline-start: calc(100% - var(--v-slider-tick-size) - 1px)

      .v-slider-track__tick-label
        @include tools.ltr()
          transform: translateX(-100%)

        @include tools.rtl()
          transform: translateX(100%)

// Vertical
.v-slider.v-input--vertical
  .v-slider-track
    height: 100%
    display: flex
    justify-content: center
    width: $slider-track-active-size
    touch-action: pan-x

    &__background
      width: var(--v-slider-track-size)

    &__fill
      width: inherit

  .v-slider-track__ticks
    height: 100%

  .v-slider-track__tick
    margin-inline-start: calc(#{$slider-track-active-size} / 2)
    transform: translate(calc(var(--v-slider-tick-size) / -2), calc(var(--v-slider-tick-size) / 2))

    @include tools.rtl()
      transform: translate(calc(var(--v-slider-tick-size) / 2), calc(var(--v-slider-tick-size) / 2))

    &--first
      bottom: calc(0% + var(--v-slider-tick-size) + 1px)
    &--last
      bottom: calc(100% - var(--v-slider-tick-size) - 1px)

    .v-slider-track__tick-label
      margin-inline-start: calc(var(--v-slider-track-size) / 2 + #{$slider-tick-label-margin-start})
      transform: translateY(-50%)

// Modifiers
.v-slider-track__ticks--always-show, .v-slider--focused
  .v-slider-track__tick
    opacity: 1

.v-slider-track__background--opacity
  opacity: 0.38
