@mixin toggle-switch-color(
  $border-color: $form-control__background-border--focus,
  $background-color: $form-control__background,
  $background-color--hover: $form-control__background--hover,
  $background-color--checked: $form-control__background--checked,
  $background-color--checked-hover: $form-control__background--checked-hover,
  $label-color: $form-control__label
) {
  .#{$toggle-switch__class}__input {
    + .#{$toggle-switch__class}__label {
      .#{$toggle-switch__class}__label__container {
        background-color: $background-color;
      }

      .#{$toggle-switch__class}__label__text {
        color: $label-color;
      }

      &:hover,
      &.hover {
        > .#{$toggle-switch__class}__label__container {
          background-color: $background-color--hover;
        }
      }
    }

    &:focus,
    &.focus {
      + .#{$toggle-switch__class}__label {
        > .#{$toggle-switch__class}__label__container {
          @include focus-styles;
        }
      }
    }

    // Checked

    &:checked,
    &:indeterminate,
    &.indeterminate {
      + .#{$toggle-switch__class}__label {
        > .#{$toggle-switch__class}__label__container {
          background-color: $background-color--checked;
        }

        &:hover,
        &.hover {
          > .#{$toggle-switch__class}__label__container {
            background-color: $background-color--checked-hover;
          }
        }
      }
    }

    // Disabled Settings

    &:disabled,
    &.disabled {
      + .#{$toggle-switch__class}__label {
        &:hover,
        &.hover {
          > .#{$toggle-switch__class}__label__container {
            background-color: $background-color;
          }
        }
      }

      //--> Disabled--Checked/Indeterminate

      &:checked,
      &:indeterminate,
      &.indeterminate {
        + .#{$toggle-switch__class}__label {
          > .#{$toggle-switch__class}__label__container {
            background-color: $background-color--checked;
          }

          &:hover,
          &.hover {
            > .#{$toggle-switch__class}__label__container {
              background-color: $background-color--checked;
            }
          }
        }
      }
    }
  }
}
