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

.module-Modal {
  @include popper-shadow();
  border-radius: 8px;
  margin: 0 auto;
  max-width: 360px;
  width: 95%;
  // We need this to be a number not divisible by 5 so that if we have sticky
  // buttons the bottom doesn't bleed through by 1px.
  max-height: 89vh;
  display: flex;
  flex-direction: column;

  @include light-theme() {
    background: $color-white;
    color: $color-gray-90;
  }

  @include dark-theme() {
    background: $color-gray-80;
    color: $color-gray-05;
  }

  &__header {
    position: sticky;
    padding: 16px 16px 0 16px;
  }

  &__title {
    @include font-body-1-bold;
    margin: 0 0 1em 0;
    padding: 0;
  }

  &__close-button {
    @include button-reset;

    border-radius: 4px;
    float: right;
    height: 24px;
    width: 24px;

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

      @include light-theme {
        @include color-svg('../images/icons/v2/x-24.svg', $color-gray-75);
      }

      @include dark-theme {
        @include color-svg('../images/icons/v2/x-24.svg', $color-gray-15);
      }
    }

    @include light-theme {
      &:hover,
      &:focus {
        background: $color-gray-02;
      }
      &:active {
        background: $color-gray-05;
      }
    }
    @include dark-theme {
      &:hover,
      &:focus {
        background: $color-gray-80;
      }
      &:active {
        background: $color-gray-75;
      }
    }
  }

  &__body {
    @include font-body-1;
    margin: 0;
  }

  &--has-header {
    .module-Modal__body {
      padding: 0 16px 16px 16px;
      border-top: 1px solid transparent;
      // If there's a header, just the body scrolls
      overflow-y: overlay;
      overflow-x: auto;

      &--scrolled {
        @include light-theme {
          border-top-color: $color-gray-05;
        }

        @include dark-theme {
          border-top-color: $color-gray-80;
        }
      }
    }
  }

  &--no-header {
    padding: 16px;
    // If there's no header, the whole thing scrolls
    overflow-y: overlay;
    overflow-x: auto;
  }

  &__button-footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    margin-top: 8px;

    .module-Button {
      margin-left: 8px;
      margin-top: 8px;
    }

    &--one-button-per-line {
      flex-direction: column;
      align-items: flex-end;
    }

    .module-Modal--sticky-buttons & {
      bottom: 0;
      display: flex;
      justify-content: flex-end;
      padding: 16px 0;
      position: sticky;
      right: 0;
      width: 100%;
      z-index: $z-index-above-popup;

      @include light-theme() {
        background: $color-white;
      }

      @include dark-theme() {
        background: $color-gray-80;
      }
    }
  }

  &--sticky-buttons {
    .module-Modal__body {
      padding-bottom: 0;
    }
    position: relative;

    .module-Modal__body--overflow {
      .module-Modal__button-footer {
        @include light-theme {
          border-top: 1px solid $color-gray-05;
        }

        @include dark-theme {
          border-top: 1px solid $color-gray-80;
        }
      }
    }
  }

  // Overrides for a modal with important message
  &--important {
    padding: 10px 12px 16px 12px;

    .module-Modal__header {
      padding: 0;
    }

    .module-Modal__body {
      padding: 0 12px 4px 12px !important;
    }

    .module-Modal__body p {
      margin: 0 0 20px 0;
    }

    .module-Modal__title {
      @include font-title-2;
      text-align: center;
      margin: 10px 0 22px 0;

      flex-grow: 0;
      flex-shrink: 0;

      &--with-x-button {
        margin-top: 31px;
      }
    }

    .module-Modal__button-footer {
      justify-content: center;
      margin-top: 27px;
      flex-grow: 0;
      flex-shrink: 0;

      .module-Button {
        flex-grow: 1;
        max-width: 152px;

        &:not(:first-child) {
          margin-left: 16px;
        }
      }
    }
  }
}