@use '../globals';

%btn-shadow:not([disabled]) {
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.2),
  0 1px 2px 0 rgba(0, 0, 0, 0.1);
}

@mixin btn-base {
  cursor: pointer;
  display: inline-flex;
  font-family: "Helvetica", "Arial", sans-serif;
  font-size: 1rem;
  font-weight: 700;
  background: none;
  min-width: 0;
  line-height: globals.rem-calc(32px);
  padding: 0 globals.rem-calc(16px);
  text-align: center;
  text-decoration: none;
  margin: 0;
  align-items: center;
  justify-content: center;
  border: solid globals.rem-calc(2px) transparent;
  border-radius: globals.rem-calc(8px);
  border-left-width: 0;
  border-right-width: 0;
  white-space: nowrap;

  mat-icon {
    padding-right: globals.rem-calc(5px);

    &:disabled {
      color: globals.$gray;
    }
  }

  &:disabled {
    color: globals.$gray;
    cursor: default;
    background-color: globals.$gray-light;
    border-top-color: globals.$gray-med;
    border-bottom-color: transparent!important;

    &:hover {
      color: globals.$gray;
      border-top-color: globals.$gray-med;
      background-color: globals.$gray-light;
      border-bottom-color: transparent;
    }
  }
}

@mixin cvs-btn-primary-color {
  background-color: globals.$red-med;
  border-bottom-color: globals.$red-dark;
  color: white;

  &:hover {
    background-color: globals.$red-hover;
    border-bottom-color: globals.$red-med;
  }

  &:focus {
    background-color: globals.$red-hover;
  }

  &:active {
    background-color: globals.$red-dark;
    border-bottom-color: transparent;
    box-shadow: none;
  }
}

@mixin cvs-btn-secondary-color {
  background-color: globals.$gray-x-dark;
  border-bottom-color: globals.$black;
  color: globals.$white;

  &:hover {
    background-color: globals.$gray;
    border-bottom-color: globals.$gray-x-dark;
  }

  &:focus {
    background-color: globals.$gray;
    border-bottom-color: globals.$gray-x-dark;
  }

  &:active {
    background-color: globals.$gray-light;
    border-top-color: globals.$gray-med;
    border-bottom-color: transparent;
    box-shadow: none;
  }

  &:disabled {
    border-bottom-color: globals.$gray-med;
  }
}

@mixin cvs-btn-ghost-color {
  border: solid globals.rem-calc(2px) globals.$red-med;
  background-color: globals.$white;
  color: globals.$red-med;


  &:hover {
    border: solid globals.rem-calc(2px) globals.$red-hover;
    color: globals.$red-hover;
  }

  &:focus {
    border: solid globals.rem-calc(2px) globals.$red-hover;
    color: globals.$red-hover;
  }

  &:active {
    background-color: globals.$white;
    border: solid globals.rem-calc(2px) globals.$red-dark;
    color: globals.$red-dark;
    box-shadow: none;
  }

  &:disabled {
    border-bottom-color: globals.$gray-med;
    border-left-width: 0;
    border-right-width: 0;
  }
}

@mixin cvs-btn-white-color {
  background-color: globals.$white;
  color: globals.$red-med;
  border: solid globals.rem-calc(2px) transparent;
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.2),
  0 0 2px 0 rgba(0, 0, 0, 0.1),
  0 1px 2px 0 rgba(0, 0, 0, 0.1);

  mat-icon {
    color: globals.$black;
  }

  &:hover {
    background-color: globals.$gray-x-light;
    color: globals.$red-hover;
  }

  &:focus {
    background-color: globals.$gray-x-light;
    color: globals.$red-hover;
  }

  &:active {
    background-color: globals.$white;
    color: globals.$red-dark;
    box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.2),
    0 0 2px 0 rgba(0, 0, 0, 0.1),
    0 1px 2px 0 rgba(0, 0, 0, 0.1);
  }

  &:disabled {
    mat-icon {
      color: globals.$gray;
    }
  }
}

@mixin cvs-btn-primary {
  @include btn-base;
  @include cvs-btn-primary-color;
}

@mixin cvs-btn-secondary {
  @include btn-base;
  @extend %btn-shadow;
  @include cvs-btn-secondary-color;
}

@mixin cvs-btn-ghost {
  @include btn-base;
  @include cvs-btn-ghost-color;
  @extend %btn-shadow;

}

@mixin cvs-btn-white {
  @include btn-base;
  @include cvs-btn-white-color;
  @extend %btn-shadow;
}

@mixin cvs-btn-text-only {
  @include btn-base;
  color: globals.$red-med;
  padding: 0;
  line-height: 24px;
  border-radius: 0;
  border: 0;

  mat-icon {
    color: globals.$black;
  }

  &:disabled {
    background-color: transparent!important;
    border-bottom-color: transparent;
    color: globals.$gray!important;


    &:hover {
      background-color: transparent;
      color: globals.$gray;
    }
  }

  &:hover {
    color: globals.$red-hover;
  }

  &:active {
    color: globals.$red-dark;
    box-shadow: none;
  }

  &:disabled {
    mat-icon {
      color: globals.$gray;
    }
  }
}



@mixin cvs-icon-only-btn($icon-color: globals.$black, $border-radius: 34px) {
  @include btn-base;
  height: 36px;
  padding: 0;
  font-size: 0;

  mat-icon {
    padding: 5px;
    border-radius: $border-radius;
    color: $icon-color;

    &:hover {
      background-color: transparent;
    }
  }

  &:active {
    box-shadow: none;
  }

  &:disabled {
    background-color: transparent!important;
    border-bottom-color: transparent;
    color: globals.$gray;
    border-top-color: transparent;

    &:hover {
      border-top-color: transparent;
    }

    &:active {
      border-top-color: transparent;
    }

    mat-icon {
      padding: 5px;
      border-radius: 34px;
      color: globals.$gray;

      &:hover {
        background-color: transparent;
      }
    }
  }
}

@mixin cvs-icon-only-btn-primary {
  @include cvs-icon-only-btn(globals.$white);
  @include cvs-btn-primary-color;
}

@mixin cvs-icon-only-btn-secondary {
  @include cvs-icon-only-btn(globals.$white);
  @include cvs-btn-secondary-color;
}

@mixin cvs-icon-only-btn-ghost {
  @include cvs-icon-only-btn(globals.$red-med);
  @include cvs-btn-ghost-color;
}

@mixin cvs-icon-only-btn-white {
  @include cvs-icon-only-btn(globals.$red-med);
  @include cvs-btn-white-color;
}

.btn-help-text {
  margin-top: globals.rem-calc(4px);
  font-size: globals.rem-calc(12px);
  min-height: globals.rem-calc(20px);
  font-weight: globals.$font-weight-normal;
  color: globals.$gray;
}

@mixin cvs-link {
  &,
  &:visited,
  &:active {
    color: globals.$blue-dark;
    font-size: globals.$font-size-4;
    font-weight: globals.$font-weight-normal;
    text-decoration: underline;
  }

  &:visited {
    color: globals.$purple-dark;
  }

  &:hover {
    color: globals.$blue-navy;
    cursor: pointer;
  }
}

.cvs-btn-primary {
  @include cvs-btn-primary
}

.cvs-btn-secondary {
  @include cvs-btn-secondary
}

.cvs-btn-ghost {
  @include cvs-btn-ghost
}

.cvs-btn-white {
  @include cvs-btn-white
}

.cvs-btn-text-only {
  @include cvs-btn-text-only
}

.cvs-icon-only-btn {
  @include cvs-icon-only-btn
}

.cvs-icon-only-btn-primary {
  @include cvs-icon-only-btn-primary;
}

.cvs-link {
  @include cvs-link;
}


