@use 'sass:math';

@import '~styles/config';

@mixin zendesk-button-base {
  @include reset-button;
  @include colorify('border-color');
  padding: 0 $gutter * 0.5;
  border-width: 1px;
  border-style: solid;

  cursor: pointer;
  user-select: none;

  line-height: 30px;
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;

  transition: border-color 300ms ease-in-out, background-color 300ms ease-in-out,
    color 300ms ease-in-out;

  &:hover,
  &:focus {
    @include buttons-hover;
    border-color: transparent;
    text-decoration: none;
    color: $color-white;
  }
}

@mixin zendesk-button-outline {
  @include colorify;
  @include zendesk-button-base;
}

@mixin zendesk-button {
  @include zendesk-button-base;
  @include colorify('background-color');
  color: $color-white;
}

.opportunity {
  padding-top: 30px;
  color: $color-zd-font;

  &__title {
    @include reset-heading;
    padding: 0 5px;

    font-weight: 600;
    font-size: 12px;
    line-height: 18px;
  }

  &__description {
    padding: 0 5px;

    font-size: 12px;
    line-height: 18px;
  }

  &__reference {
    font-size: 10px;
    color: $color-zd-font-light;
  }

  &__subtitle {
    @include reset-heading;
    display: flex;
    position: relative;

    margin-bottom: math.div($gutter, 3);
    padding: 4px 7px 5px;
    overflow: hidden;

    border-top: 1px solid $color-zd-border;
    border-bottom: 1px solid $color-zd-border;

    font-size: 14px;
    font-weight: 600;

    &.popup {
      justify-content: space-between;
    }
  }

  &__script {
    margin-top: $gutter * 0.5;
  }

  &__label {
    margin-right: 5px;
  }

  &__popup {
    @include reset-button;

    position: absolute;
    right: -12px;
    top: -8px;

    height: 40px;
    width: 40px;

    cursor: pointer;

    &SVG {
      fill: $color-zd-font;
    }
  }

  &__scriptContent {
    padding: 5px;

    height: 100px;
    overflow-y: scroll;

    border: 1px solid $color-zd-border;
    border-radius: 4px;

    font-size: 10px;
  }

  &__history {
    margin-top: $gutter * 0.5;
  }

  &__historyButton {
    @include reset-button;
    cursor: pointer;
  }

  &__arrow {
    &SVG {
      transition: transform 300ms ease-in-out;

      fill: $color-zd-font;

      &.open {
        transform: rotate(180deg);
      }
    }
  }

  &__historyList {
    display: flex;
    flex-direction: column;
    max-height: 0;

    border: 1px solid $color-zd-border;
    border-radius: 4px;

    transform: scaleY(0);
    transform-origin: top;
    transition: transform 300ms ease-in-out;
    transition: max-height 300ms ease-in-out;

    &.open {
      max-height: 1000px;
      transform: scaleY(1);
      animation-name: fadein;
      animation-duration: 300ms;
      animation-timing-function: ease-in-out;
    }
  }

  &__historyItem {
    display: flex;

    flex-direction: row;
    flex-wrap: wrap;

    padding: math.div($gutter, 3);
    border-bottom: 1px solid $color-zd-border;

    font-size: 10px;

    &:last-child {
      border: 0;
    }
  }

  &__historyName {
    width: 50%;
    font-weight: 500;
  }

  &__historyDate {
    width: 50%;
    text-align: right;
    color: $color-zd-font-light;
  }

  &__status,
  &__snooze,
  &__invalidated {
    margin-top: $gutter * 0.5;
  }

  &__statusList {
    display: flex;
    justify-content: space-around;
  }

  &__statusItem {
    @include reset-button;

    display: flex;
    flex-direction: column;
    align-items: center;
    width: 20%;

    cursor: pointer;
  }

  &__statusItem.oneSelected &__statusEmoji {
    opacity: 0.25;
  }

  &__statusItem.oneSelected:hover &__statusEmoji,
  &__statusItem.oneSelected:focus &__statusEmoji {
    opacity: 1;
  }

  &__statusItem.hasStatusChanged &__statusEmoji {
    opacity: 0.25;
  }

  &__statusItem.hasStatusChanged:hover,
  &__statusItem.hasStatusChanged:focus {
    cursor: default;
  }

  &__statusItem.hasStatusChanged:hover &__statusEmoji,
  &__statusItem.hasStatusChanged:focus &__statusEmoji {
    opacity: 0.25;
  }

  &__statusItem.hasStatusChanged:hover &__statuslabel,
  &__statusItem.hasStatusChanged:focus &__statuslabel {
    opacity: 0;
  }

  &__statusItem.selected &__statusEmoji {
    opacity: 1;
  }

  &__statusItem.selected:hover &__statusEmoji,
  &__statusItem.selected:focus &__statusEmoji {
    opacity: 1;
  }

  &__statusEmoji {
    display: flex;
    align-items: center;
    justify-content: center;

    position: relative;

    height: 40px;
    width: 40px;

    transition: opacity 300ms ease-in-out;
  }

  &__statuslabel {
    margin-top: 5px;
    font-size: 10px;
    font-weight: 500;
    opacity: 0;

    transition: opacity 300ms ease-in-out;
  }

  &__statusItem:hover &__statuslabel,
  &__statusItem:focus &__statuslabel {
    opacity: 1;
  }

  &__snoozeDays {
    display: flex;
    justify-content: center;
    align-items: center;

    position: absolute;
    top: 0;
    right: 0;

    height: 15px;
    width: 15px;

    border-radius: 50%;
    user-select: none;

    font-size: 9px;
    font-weight: 600;

    color: $color-white;
    background-color: $color-pink;
  }

  &__snoozeButtons {
    display: flex;
    margin: 0 -15px 15px;
  }

  &__snoozeButton {
    @include zendesk-button;
    flex-grow: 1;
    margin: 0 15px;

    &.color-yellow {
      color: $color-dark;
    }
  }

  &__inputWrapper {
    display: flex;
    flex-direction: column;
  }

  &__note {
    padding: 5px;

    height: 100px;
    width: 100%;

    border: 1px solid $color-zd-border;
    border-radius: 4px;

    font-size: 10px;

    resize: none;

    &:focus {
      outline: none;
    }
  }

  &__invalidatedError {
    margin-top: 5px;
    font-size: 12px;
    color: $color-pink;

    animation-name: fadein;
    animation-duration: 300ms;
    animation-timing-function: ease-in-out;
  }

  &__buttonWrapper {
    display: flex;
    justify-content: space-between;

    margin: 15px -15px 0;
  }

  &__sendButton {
    @include zendesk-button;
    margin-right: $gutter * 0.5;

    &.color-yellow {
      color: $color-dark;
    }

    &.loading {
      @include loading;
      border: 1px solid $color-grey100;
      color: $color-grey400;
    }
  }

  &__closeButton {
    @include zendesk-button-outline;
    margin-left: $gutter * 0.5;
    @include colorify('fill');

    &Icon {
      margin-right: 5px;
      width: 9px;
      transform: rotate(90deg);

      transition: fill 300ms ease-in-out;

      .color-yellow & {
        fill: $color-dark;
      }
    }

    &:hover &Icon,
    &:focus &Icon {
      fill: $color-white;
    }

    &.color-yellow:hover &Icon,
    &.color-yellow:focus &Icon {
      fill: $color-dark;
    }

    &.color-yellow {
      color: $color-dark;
    }
  }

  &__closeOpportunity {
    @include reset-button;
    position: absolute;
    top: 0;
    left: -10px;

    height: 30px;
    width: 40px;

    cursor: pointer;
  }

  &__closeOpportunityLabel {
    display: none;
  }
}

@keyframes fadein {
  0% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}
