// Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only .module-Modal { @include popper-shadow(); border-radius: 8px; overflow: hidden; // 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 { align-items: center; display: flex; justify-content: space-between; padding: 16px 16px 1em 16px; &--with-back-button .module-Modal__title { text-align: center; } } &__title { @include font-body-1-bold; margin: 0; padding: 0; flex: 1; } &__back-button { @include button-reset; border-radius: 4px; height: 24px; width: 24px; &::before { content: ''; display: block; width: 100%; height: 100%; @include light-theme { @include color-svg( '../images/icons/v2/chevron-left-24.svg', $color-gray-75 ); } @include dark-theme { @include color-svg( '../images/icons/v2/chevron-left-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; } } } &__close-button { @include button-reset; border-radius: 4px; 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 scrollbar; @include font-body-1; margin: 0; overflow-y: overlay; overflow-x: auto; transition: border-color 150ms ease-in-out; } &--padded { .module-Modal__body { padding: 16px; // ProfileEditor nests footer within the Modal's body .module-Modal__button-footer { padding: 1em 0 0 0; } } } &--has-header#{&}--header-divider { .module-Modal__body { @include light-theme() { border-top-color: $color-gray-15; } @include dark-theme() { border-top-color: $color-gray-60; } } } &--has-header { .module-Modal__body { padding-top: 0; border-top: 1px solid transparent; &--scrolled { @include light-theme { border-top-color: $color-gray-05; } @include dark-theme { border-top-color: $color-gray-80; } } } } &--has-footer#{&}--footer-divider { .module-Modal__body { @include light-theme() { border-bottom-color: $color-gray-15; } @include dark-theme() { border-bottom-color: $color-gray-60; } } } &--has-footer { .module-Modal__body { border-bottom: 1px solid transparent; } } &__button-footer { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; padding: 1em 16px 16px 16px; gap: 8px; .module-Button { margin-left: 8px; } &--one-button-per-line { flex-direction: column; align-items: flex-end; } } // Overrides for a modal with important message &--important { padding: 10px 12px 16px 12px; .module-Modal__header { // Necessary because of the larger top margins for the title align-items: start; 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-shrink: 0; &--with-x-button { margin-top: 31px; } } .module-Modal__button-footer { justify-content: center; margin-top: 27px; flex-grow: 0; flex-shrink: 0; padding: 0 12px 4px 12px; .module-Button { flex-grow: 1; max-width: 152px; &:not(:first-child) { margin-left: 16px; } } } } }