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

.Lightbox {
  &__container {
    background-color: $color-black-alpha-90;
    bottom: 0;
    left: 0;
    position: absolute;
    right: 0;
    top: var(--titlebar-height);
    z-index: $z-index-popup;
  }

  &__animated {
    bottom: 0;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
    display: flex;
    flex-direction: column;
  }

  &__main-container {
    display: flex;
    flex-direction: column;
    flex-grow: 1;
    // To ensure that a large image doesn't overflow the flex layout
    min-height: 50px;
    outline: none;
  }

  &__buttons {
    align-items: center;
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 56px;
  }

  &__thumbnails {
    align-items: center;
    display: flex;
    justify-content: center;
    left: 50%;
    position: absolute;

    &--container {
      height: 64px;
      margin-bottom: 16px;
      margin-top: 10px;
      position: relative;
    }
  }

  &__thumbnail {
    @include button-reset;
    border-radius: 4px;
    height: 64px;
    margin-right: 8px;
    overflow: hidden;
    width: 64px;

    img {
      height: 100%;
      object-fit: contain;
      width: 100%;
    }

    &--selected {
      box-shadow: 0px 0px 0px 2px $color-ultramarine;
    }

    &--unavailable {
      @include color-svg('../images/image.svg', $color-gray-25);
      height: 100%;
      width: 100%;
    }
  }

  &__object {
    &--container {
      display: inline-flex;
      flex-grow: 1;
      justify-content: center;
      overflow: hidden;
      position: relative;
      // Using this so that the zoom cleanly goes over the footer
      z-index: $z-index-base;

      &--zoom {
        backface-visibility: hidden;
      }
    }

    &--video {
      height: 100%;
      left: 0;
      position: absolute;
      top: 0;
      width: 100%;
    }

    height: auto;
    max-height: 100%;
    max-width: 100%;
    object-fit: contain;
    outline: none;
    width: auto;
  }

  &__unsupported {
    @include button-reset;
    flex-grow: 1;
    height: 100%;
    max-width: 200px;
    width: 100%;

    &--image {
      @include color-svg('../images/image.svg', $color-gray-25);
    }

    &--video {
      @include color-svg('../images/movie.svg', $color-gray-25);
    }

    &--file {
      @include color-svg('../images/file.svg', $color-gray-25);
    }

    &--missing {
      @include color-svg(
        '../images/full-screen-flow/alert-outline.svg',
        $color-gray-25
      );
    }
  }

  &__zoomable-container {
    display: flex;
    justify-content: center;
    margin: 0 40px;
  }

  &__zoom-button {
    @include button-reset;
    cursor: zoom-in;
  }

  &__object--container--zoom,
  &__object--container--fill {
    .Lightbox__zoom-button {
      cursor: zoom-out;
    }
  }

  &__caption {
    @include font-body-2;
    color: $color-white;
    margin: 12px 0;
    text-align: center;
  }

  &__countdown {
    padding: 8px;
  }

  &__timestamp {
    @include font-body-1;
    background-color: $color-black;
    border-radius: 15px;
    color: #eeefef;
    padding: 6px 18px;
    text-align: center;
  }

  &__nav-next,
  &__nav-prev {
    bottom: 50%;
    position: absolute;
    // We need this so that the buttons stack above the container
    z-index: $z-index-above-base;
  }

  &__nav-next {
    right: 21px;
  }

  &__nav-prev {
    left: 21px;
  }

  &__header {
    align-items: center;
    display: flex;
    height: 56px;
    justify-content: space-between;
    margin-top: 24px;
    opacity: 1;
    padding: 0 16px;
    transition: opacity 150ms cubic-bezier(0.17, 0.17, 0, 1);

    &--container {
      display: flex;
    }

    &--avatar {
      margin-right: 12px;
    }

    &--name {
      @include font-body-2-bold;
      color: $color-white;
    }

    &--timestamp {
      @include font-caption;
      color: $color-gray-25;
    }
  }

  &__footer {
    opacity: 1;
    padding: 0 16px;
    transition: opacity 150ms cubic-bezier(0.17, 0.17, 0, 1);
  }

  &__container--zoom {
    .Lightbox__header,
    .Lightbox__footer {
      opacity: 0;
    }
  }

  &__button {
    @include button-reset;

    border-radius: 4px;
    display: inline-block;
    margin-left: 24px;
    height: 24px;
    width: 24px;

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

    &:hover {
      &::before {
        background: $color-white;
      }
    }

    &:focus {
      outline: 4px solid $color-ultramarine;
    }

    &:disabled {
      &::before {
        background: $color-gray-65;
      }
    }

    &--forward {
      &::before {
        transform: scaleX(-1);
        @include color-svg(
          '../images/icons/v2/reply-solid-24.svg',
          $color-gray-15
        );
      }
    }

    &--save {
      &::before {
        @include color-svg(
          '../images/icons/v2/save-solid-24.svg',
          $color-gray-15
        );
      }
    }

    &--close {
      &::before {
        @include color-svg('../images/icons/v2/x-24.svg', $color-gray-15);
      }
    }

    &--previous {
      margin-left: 0;
      &::before {
        @include color-svg(
          '../images/icons/v2/chevron-left-24.svg',
          $color-gray-15
        );
      }
    }

    &--next {
      margin-left: 0;
      &::before {
        @include color-svg(
          '../images/icons/v2/chevron-right-24.svg',
          $color-gray-15
        );
      }
    }
  }
}