@import '../../../../../style/core/utilities.scss';

.dnb-forms-submit-indicator {
  --padding-left: 0.5em;
  --font-animation: font-size var(--font-animation-duration, 400ms)
    var(--easing-default);
  --opacity-animation: opacity var(--opacity-animation-duration, 0ms)
    var(--easing-default) var(--opacity-animation-delay, 0ms);

  &:has(&__label) {
    --font-animation-duration: 400ms;
    --opacity-animation-duration: 400ms;
    --opacity-animation-delay: 250ms;
  }

  display: inline;

  &__label {
    padding: 0.5em 0;
  }

  &__content {
    align-items: center;
    font-size: 0;
    opacity: 0;
    line-height: 1em;

    will-change: font-size opacity;
    transition: var(--font-animation), var(--opacity-animation);

    b {
      padding-left: 0.125em;
      color: var(--dots-color, currentColor);

      &:nth-of-type(1) {
        padding-left: var(--padding-left);
        animation-delay: 50ms;
      }
      &:nth-of-type(2) {
        animation-delay: 200ms;
      }
      &:nth-of-type(3) {
        animation-delay: 400ms;
      }

      opacity: 0.2;

      animation-name: submit-indicator-dot;
      animation-iteration-count: infinite;
      animation-duration: 1.3s;
      animation-delay: 200ms; // to get a nicer fade in

      html[data-visual-test] & {
        animation: none;
      }

      font-weight: var(--font-weight-bold);
    }
  }

  &--state-pending &__content {
    font-size: 1em;
    opacity: 1;
  }
  &--inline-wrap &__content {
    display: flex;

    --padding-left: 0.25em;
  }
}

@keyframes submit-indicator-dot {
  0% {
    opacity: 0.2;
  }
  15% {
    opacity: 1;
  }
  50% {
    opacity: 1;
  }
  60% {
    opacity: 0.3;
  }
  100% {
    opacity: 0.2;
  }
}

@keyframes submit-indicator-success {
  0% {
    opacity: 0.2;
    font-size: 1em;
  }
  20% {
    opacity: 1;
    font-size: 1em;
  }
  80% {
    opacity: 1;
  }
  85% {
    opacity: 0.3;
    font-size: 1em;
  }
  90% {
    opacity: 0;
  }
  100% {
    opacity: 0;
    font-size: 0;
  }
}
