button,
a {
  &.mdc-button {
    @extend .btn;

    &.btn__group--item,
    &.btn {
      @extend .btn__group--item;
    }

    .mat-icon {
      color: inherit;
    }
  }

  /**
 * #Basic
 */
  &.mdc-button.mat-mdc-button {
    @extend .btn--basic;
  }

  &.mdc-button--outlined {
    @extend .btn--basic--outline;

    border: 0;
  }

  &.mdc-button.mat-mdc-button {
    @extend .btn--basic--link;
  }

  &.mdc-button.mat-mdc-button:disabled {
    @extend .btn__disabled--outline;

    &:after {
      border: 0;
    }
  }

  /**
  * #Primary
  */
  &.mdc-button.mat-primary {
    @extend .btn--primary;
  }

  &.mdc-button--outlined.mat-primary {
    @extend .btn--primary--outline;

    border: 0;
  }

  &.mat-mdc-button.mat-primary {
    @extend .btn--primary--link;
  }

  /**
  * #Secondary
  */

  &.mdc-button.mat-accent {
    @extend .btn--secondary;
  }

  &.mdc-button--outlined.mat-accent {
    @extend .btn--secondary--outline;

    border: 0;
  }

  &.mat-mdc-button.mat-accent {
    @extend .btn--secondary--link;
  }

  /**
  * #Warn
  */

  &.mdc-button.mat-warn {
    @extend .btn--warn;
  }

  &.mdc-button--outlined.mat-warn {
    @extend .btn--warn--outline;

    border: 0;
  }

  &.mat-mdc-button.mat-warn {
    @extend .btn--warn--link;
  }

  /**
 * #Success
 */

  &.mdc-button.mat-success {
    @extend .btn--success;
  }

  &.mdc-button--outlined.mat-success {
    @extend .btn--success--outline;

    border: 0;
  }

  &.mat-mdc-button.mat-success {
    @extend .btn--success--link;
  }

  &.mat-mdc-unelevated-button:disabled {
    @extend .btn__disabled;
  }

  &.mat-mdc-outlined-button:disabled {
    @extend .btn__disabled--outline;
  }

  .mdc-button__label {
    @extend .btn__with-icon--wrapper;
  }

  &.mat-mdc-icon-button {
    min-width: auto;
    line-height: 1;
  }
}

// ::TODO Will be fixed in upgrade to >17.2.2
.mat-mdc-unelevated-button.mat-primary,
.mat-mdc-raised-button.mat-primary {
  --mdc-filled-button-label-text-color: var(--color-white) !important;
}
