// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only

$audio-attachment-button-size: 36px;
$audio-attachment-button-margin-big: 12px;
$audio-attachment-button-margin-small: 4px;

.module-message__audio-attachment {
  display: flex;
  flex-direction: column;
  margin-top: 2px;
}

.module-message__audio-attachment__button-and-waveform {
  display: flex;
  flex-direction: row;
  align-items: center;
  margin-bottom: 5px;
}

/* The separator between audio and text */
.module-message__audio-attachment--with-content-below {
  border-bottom: 1px solid $color-white-alpha-20;
  padding-bottom: 12px;
  margin-bottom: 7px;

  &.module-message__audio-attachment--incoming {
    @include light-theme {
      border-color: $color-black-alpha-20;
    }
    @include dark-theme {
      border-color: $color-white-alpha-20;
    }
  }

  .module-message__container--outgoing & {
    border-color: $color-white-alpha-20;
  }
}

.module-message__audio-attachment--with-content-above {
  margin-top: 6px;
}

.module-message__audio-attachment__button,
.module-message__audio-attachment__spinner {
  @include button-reset;

  flex-shrink: 0;
  width: $audio-attachment-button-size;
  height: $audio-attachment-button-size;
  margin-right: $audio-attachment-button-margin-big;

  outline: none;
  border-radius: 18px;

  @media (min-width: 0px) and (max-width: 799px) {
    margin-right: $audio-attachment-button-margin-small;
  }

  &::before {
    display: block;
    height: 100%;
    content: '';
  }

  @mixin audio-icon($name, $icon, $color) {
    &--#{$name}::before {
      @include color-svg('../images/icons/v2/#{$icon}.svg', $color, false);
    }
  }

  @mixin all-audio-icons($color) {
    @include audio-icon(play, play-solid-20, $color);
    @include audio-icon(pause, pause-solid-20, $color);
    @include audio-icon(download, arrow-down-20, $color);
    @include audio-icon(pending, audio-spinner-arc-22, $color);
  }

  &--pending {
    cursor: auto;
  }

  &--pending::before {
    animation: rotate 1000ms linear infinite;
  }

  .module-message__audio-attachment--incoming & {
    @include light-theme {
      background: $color-white;

      @include all-audio-icons($color-gray-60);
    }
    @include dark-theme {
      background: $color-gray-60;

      @include all-audio-icons($color-gray-15);
    }
  }

  .module-message__audio-attachment--outgoing & {
    background: $color-white-alpha-20;
    @include all-audio-icons($color-white);
  }
}

.module-message__audio-attachment__waveform {
  flex-shrink: 0;

  display: flex;
  align-items: center;
  cursor: pointer;

  outline: 0;
}

.module-message__audio-attachment__button,
.module-message__audio-attachment__spinner,
.module-message__audio-attachment__waveform {
  &:focus {
    @include keyboard-mode {
      outline: 2px solid $color-ultramarine;
    }
  }

  .module-message__audio-attachment--outgoing & {
    &:focus {
      @include keyboard-mode {
        outline: 2px solid $color-white-alpha-60;
      }
    }
  }
}

.module-message__audio-attachment__waveform__bar {
  display: inline-block;

  width: 2px;
  border-radius: 2px;
  transition: height 250ms, background 250ms;

  &:not(:first-of-type) {
    margin-left: 2px;
  }

  .module-message__audio-attachment--incoming & {
    @include light-theme {
      background: $color-black-alpha-40;
      &--active {
        background: $color-black-alpha-80;
      }
    }
    @include dark-theme {
      background: $color-white-alpha-40;
      &--active {
        background: $color-white-alpha-70;
      }
    }
  }

  .module-message__audio-attachment--outgoing & {
    background: $color-white-alpha-40;
    &--active {
      background: $color-white-alpha-80;
    }
  }
}

.module-message__audio-attachment__metadata {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;

  .module-message__audio-attachment--outgoing & {
    flex-direction: row-reverse;
  }

  .module-message__audio-attachment--outgoing &,
  .module-message__audio-attachment--with-content-below & {
    margin-left: $audio-attachment-button-size +
      $audio-attachment-button-margin-big;
    @media (min-width: 0px) and (max-width: 799px) {
      margin-left: $audio-attachment-button-size +
        $audio-attachment-button-margin-small;
    }
  }
}

.module-message__audio-attachment__countdown {
  $unplayed-dot-margin: 6px;

  @include font-caption;
  align-items: center;
  display: flex;
  flex-shrink: 1;
  user-select: none;

  &:after {
    content: '';
    display: block;
    width: 6px;
    height: 6px;
    border-radius: 100%;
    transition: background 100ms ease-out;
  }

  &--played:after {
    background: transparent;
  }

  .module-message__audio-attachment--incoming & {
    flex-direction: row-reverse;

    &:after {
      margin-right: $unplayed-dot-margin;
    }

    @include light-theme {
      $color: $color-black-alpha-60;
      color: $color;
      &--unplayed:after {
        background: $color;
      }
    }
    @include dark-theme {
      $color: $color-white-alpha-80;
      color: $color;
      &--unplayed:after {
        background: $color;
      }
    }
  }

  .module-message__audio-attachment--outgoing & {
    color: $color-white-alpha-80;

    &:after {
      margin-left: $unplayed-dot-margin;
    }

    &--unplayed:after {
      background: $color-white-alpha-80;
    }
  }
}
