155 lines
3 KiB
SCSS
155 lines
3 KiB
SCSS
// 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;
|
|
}
|
|
}
|
|
}
|