// Copyright 2021-2022 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only .module-Avatar { display: inline-flex; line-height: 0; position: relative; user-select: none; vertical-align: middle; &__contents { @include avatar-colors; position: relative; overflow: hidden; border-radius: 100%; width: 100%; height: 100%; border: 0; padding: 0; margin: 0; outline: none; @at-root button#{&} { @include keyboard-mode { &:focus { box-shadow: 0 0 0 3px $color-ultramarine; } } } } &__image, &__label, &__icon, &__spinner-container, &__click-to-view { width: 100%; height: 100%; } &__image { background-position: center center; background-size: cover; transition: filter 100ms ease-out; } &__click-to-view { @include font-body-2; align-items: center; background: $color-black-alpha-20; color: $color-white; display: flex; flex-direction: column; justify-content: center; left: 0; position: absolute; top: 0; &::before { @include color-svg( '../images/icons/v2/click-outline-24.svg', $color-white ); content: ''; display: block; height: 24px; margin-bottom: 8px; width: 24px; } &:hover { background: $color-black-alpha-40; } } &__label { align-items: center; display: flex; justify-content: center; text-align: center; text-transform: uppercase; transition: font-size 100ms ease-out; } &__icon { -webkit-mask-repeat: no-repeat; -webkit-mask-position: center; -webkit-mask-size: 62%; background-color: var(--fg); @media (forced-colors: active) { background-color: WindowText; } &--direct { -webkit-mask-image: url('../images/icons/v2/profile-outline-20.svg'); -webkit-mask-size: 60%; } &--group { -webkit-mask-image: url('../images/icons/v2/group-outline-24.svg'); } &--note-to-self { -webkit-mask-image: url('../images/icons/v2/note-24.svg'); } &--search-result { -webkit-mask-image: url('../images/icons/v2/search-24.svg'); -webkit-mask-size: 50%; } } &__spinner-container { padding: 4px; } &__badge { position: absolute; z-index: $z-index-base; // Positioning should be overridden by JavaScript. These are set defensively. bottom: 0; right: 0; &--static { pointer-events: none; } &--button { background-color: transparent; background-position: center center; background-size: contain; border: 0; outline: none; @include keyboard-mode { &:focus { outline: 2px solid $color-ultramarine; border-radius: 6px; } } } } &--with-story { border-radius: 100%; border: 2px solid $color-white-alpha-40; padding: 3px; &--unread { border-color: $color-ultramarine-dawn; } } }