@import '../../_style/animation/variables.scss';
@import '../../_style/elevation/mixins.scss';
@import '../../_style/state/mixins.scss';

$md-button-min-width: 88px;
$md-button-height: 36px;
$md-button-radius: 2px;
$md-button-font-size: 14px;
$md-button-dense-height: 32px;
$md-button-icon-size: 40px;
$md-button-fab-size: 56px;
$md-button-fab-size-mini: $md-button-icon-size;

.md-button {
  display: inline-block;
  vertical-align: middle;
  white-space: nowrap;
  border: 0;
  padding: 0;
  min-width: $md-button-min-width;
  height: $md-button-height;
  margin: 6px 8px;
  user-select: none;
  border-radius: $md-button-radius;
  font-size: $md-button-font-size;
  font-weight: 500;
  text-transform: uppercase;
  color: var(--md-on-surface);
  background-color: transparent;
  transition: all $md-transition-default;
  cursor: pointer;

  &.md-primary {
    color: var(--md-primary);
  }

  &.md-on-primary {
    color: var(--md-on-primary);
  }

  &.md-accent {
    color: var(--md-secondary);
  }

  &.md-on-accent {
    color: var(--md-on-secondary);
  }

  &:active {
    outline: none;
  }

  &[disabled] {
    cursor: default;
    pointer-events: none;
    color: var(--md-on-surface-disabled);
  }

  &.md-dense {
    height: $md-button-dense-height;
    font-size: 13px;
  }

  + .md-button {
    margin-left: 0;
  }

  .md-ripple {
    padding: 0 8px;
    display: flex;
    justify-content: center;
    align-items: center;
  }
}

.md-button.md-stroked {
  border: 1px solid var(--md-outline);

  &.md-primary,
  &.md-accent {
    border-color: currentcolor;
  }
}

.md-button.md-flat {
  background-color: var(--md-surface);

  > .md-state-overlay {
    // disable hover state on flat-button
    display: none;
  }
}

.md-button.md-raised:not([disabled]) {
  @include md-elevation(2);
}

.md-button.md-flat,
.md-button.md-raised {
  &.md-primary {
    background-color: var(--md-primary);
    color: var(--md-on-primary);
  }

  &.md-accent {
    background-color: var(--md-secondary);
    color: var(--md-on-secondary);
  }

  &:not(.md-primary, .md-accent)[disabled] {
    background-color: var(--md-outline);
    color: var(--md-on-surface-disabled);
  }
}

.md-button.md-icon-button,
.md-button.md-fab {
  overflow: hidden;
  border-radius: 50%;

  &::before {
    border-radius: 50%;
  }

  .md-ripple {
    border-radius: 50%;
  }
}

.md-button.md-icon-button,
.md-button.md-fab.md-dense {
  .md-ripple-wave {
    top: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    left: 0 !important;
  }
}

.md-button.md-icon-button {
  width: $md-button-icon-size;
  min-width: $md-button-icon-size;
  height: $md-button-icon-size;
  margin: 0 6px;

  &:not(.md-primary, .md-accent) {
    color: var(--md-on-surface-medium);

    &.md-on-primary {
      color: var(--md-on-primary-medium);
    }

    &.md-on-accent {
      color: var(--md-on-secondary-medium);
    }
  }

  &.md-dense {
    width: $md-button-dense-height;
    min-width: $md-button-dense-height;
    height: $md-button-dense-height;
  }

  .md-ripple-enter-active {
    transition-duration: 1.2s;
  }

  &[disabled] {
    opacity: 0.38;
  }
}

.md-button.md-fab {
  @include md-elevation(6);

  width: $md-button-fab-size;
  height: $md-button-fab-size;
  min-width: 0;
  overflow: hidden;
  color: var(--md-on-secondary);
  background-color: var(--md-secondary);

  &.md-primary {
    background-color: var(--md-primary);
    color: var(--md-on-primary);
  }

  &.md-mini,
  &.md-dense {
    width: $md-button-fab-size-mini;
    height: $md-button-fab-size-mini;
  }

  &.md-fab-top-right,
  &.md-fab-top-left {
    position: absolute;
    top: 24px;
  }

  &.md-fab-bottom-right,
  &.md-fab-bottom-left {
    position: absolute;
    bottom: 24px;
  }

  &.md-fab-top-center,
  &.md-fab-bottom-center {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
  }

  &.md-fab-top-center {
    top: 24px;
  }

  &.md-fab-bottom-center {
    bottom: 24px;
  }

  &.md-fab-top-right,
  &.md-fab-bottom-right {
    right: 24px;
  }

  &.md-fab-top-left,
  &.md-fab-bottom-left {
    left: 24px;
  }

  &.md-fixed {
    position: fixed;
  }

  .md-ripple {
    padding: 0;
  }
}

.md-button.md-raised,
.md-button.md-flat,
.md-button.md-fab {
  &.md-primary,
  &.md-accent {
    .md-state-overlay {
      background-color: #fff;
    }

    &.md-disabled,
    &[disabled] {
      opacity: 0.38;
    }
  }
}
