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

@include tools.layer('components')
  // Elements
  .v-progress-circular
    align-items: center
    display: inline-flex
    justify-content: center
    overflow: hidden
    position: relative
    vertical-align: middle

    > svg
      width: 100%
      height: 100%
      margin: auto
      position: absolute
      top: 0
      bottom: 0
      left: 0
      right: 0
      z-index: 0

  .v-progress-circular__content
    align-items: center
    display: flex
    justify-content: center

  .v-progress-circular__underlay
    color: $progress-circular-underlay-color
    stroke: currentColor
    z-index: 1

  .v-progress-circular__overlay
    stroke: currentColor
    transition: $progress-circular-overlay-transition
    z-index: 2

  .v-progress-circular--revealing
    --progress-reveal-duration: $progress-circular-reveal-duration

    .v-progress-circular__overlay
      transition-duration: var(--progress-reveal-duration), 0s

  // Modifiers
  .v-progress-circular
    @each $name, $multiplier in $progress-circular-sizes
      $size: $progress-circular-size + (settings.$size-scale * $multiplier)

      &--size-#{$name}
        height: $size
        width: $size

  .v-progress-circular--indeterminate
    > svg
      animation: $progress-circular-rotate-animation
      transform-origin: center center
      transition: $progress-circular-intermediate-svg-transition

    .v-progress-circular__overlay
      animation: $progress-circular-rotate-dash, $progress-circular-rotate-animation
      stroke-dasharray: 25, 200
      stroke-dashoffset: 0
      stroke-linecap: round
      transform-origin: center center
      transform: $progress-circular-overlay-transform

  .v-progress-circular--disable-shrink
    > svg
      animation-duration: list.nth($progress-circular-rotate-animation, 2) * .5

    .v-progress-circular__overlay
      animation: none

  .v-progress-circular--indeterminate:not(.v-progress-circular--visible)
    > svg,
    .v-progress-circular__overlay
      animation-play-state: paused

  @keyframes progress-circular-dash
    0%
      stroke-dasharray: 1, 200
      stroke-dashoffset: 0px

    50%
      stroke-dasharray: 100, 200
      stroke-dashoffset: -15px

    100%
      stroke-dasharray: 100, 200
      stroke-dashoffset: -124px

  @keyframes progress-circular-rotate
    100%
      transform: rotate(270deg)
