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

@use '../mixins';
@use '../variables';

.MessageTextRenderer {
  &__formatting {
    // bold is handled by <strong> element
    // italic is handled by <em> element
    // strikethrough is handled by <s> element

    &--monospace {
      font-family: variables.$monospace;
    }

    // Note: only used in the left pane for search results, not in message bubbles
    // Note: This is referenced in formatting/matchers.ts, to detect these styles on paste
    &--keywordHighlight {
      // Boldness of this is handled by <strong> element

      // To differentiate it from bold formatting, we increase the color contrast
      @include mixins.light-theme {
        color: variables.$color-black; // vs color-gray-60 normally
      }
      @include mixins.dark-theme {
        color: variables.$color-white; // vs color-gray-25 normally
      }
    }

    // Note: Spoiler must be last to override any other formatting applied to the section
    &--spoiler {
      cursor: pointer;

      // Prepare for our inner copy target
      position: relative;

      // Lighten things up a bit
      opacity: 50%;
      border-radius: 4px;

      // make child text invisible
      color: transparent;

      // fix outline
      outline: none;

      @include mixins.keyboard-mode {
        &:focus {
          box-shadow: 0 0 0px 1px variables.$color-ultramarine;
        }
      }
    }

    // Note: This is referenced in formatting/matchers.ts, to detect these styles on paste
    &--spoiler--noninteractive {
      cursor: inherit;
      box-shadow: none;
    }

    // The simplest; always in dark mode
    &--spoiler-StoryViewer {
      background-color: variables.$color-white;
    }
    &--spoiler-MediaEditor {
      background-color: variables.$color-gray-15;
    }

    // The left pane
    &--spoiler-ConversationList,
    &--spoiler-SearchResult,
    &--spoiler-PinnedMessagesBar {
      @include mixins.light-theme {
        background-color: variables.$color-gray-60;
      }
      @include mixins.dark-theme {
        background-color: variables.$color-gray-25;
      }
    }

    // The timeline
    &--spoiler-Quote {
      @include mixins.light-theme {
        background-color: variables.$color-gray-90;
      }
      @include mixins.dark-theme {
        background-color: variables.$color-gray-05;
      }
    }

    &--spoiler-Timeline--incoming {
      @include mixins.light-theme {
        background-color: variables.$color-gray-90;
      }
      @include mixins.dark-theme {
        background-color: variables.$color-gray-05;
      }
    }
    &--spoiler-Timeline--outgoing {
      @include mixins.light-theme {
        background-color: rgba(255, 255, 255, 0.9);
      }
      @include mixins.dark-theme {
        background-color: rgba(255, 255, 255, 0.9);
      }
    }

    &--invisible {
      visibility: hidden;
    }
  }
}
