signal-desktop/stylesheets/components/LeftPaneDialog.scss

289 lines
5.8 KiB
SCSS

// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
@keyframes progress-animation {
0% {
background-position: 100%;
}
100% {
background-position: -100%;
}
}
.LeftPaneDialog {
$default-background-color: $color-ultramarine;
$default-text-color: $color-white;
$error-background-color: $color-accent-red;
$error-text-color: $default-text-color;
$warning-background-color: $color-accent-yellow;
$warning-text-color: $color-black;
align-items: center;
background: $default-background-color;
color: $default-text-color;
cursor: inherit;
display: flex;
min-height: 64px;
padding-block: 12px;
padding-inline: 16px 14px;
user-select: none;
width: 100%;
font-size: 13px;
line-height: 18px;
letter-spacing: -0.0025em;
font-weight: 400;
&--width-narrow {
padding-inline-start: 36px;
}
&__retry {
@include button-reset;
@include font-body-1-bold;
}
&--clickable {
cursor: pointer;
}
&__container {
display: flex;
align-items: center;
flex-grow: 1;
}
&__container-close {
display: flex;
justify-content: flex-end;
}
&__spinner-container {
margin-inline-end: 18px;
}
&__spinner {
&__arc {
background-color: $color-black;
// Needed for specificity
@include dark-theme {
background-color: $color-black;
}
}
&__circle {
background-color: $color-accent-yellow;
}
}
&__icon {
width: 24px;
height: 24px;
margin-inline-end: 18px;
background-color: $color-white;
-webkit-mask-size: contain;
@media (forced-colors: active) {
background-color: WindowText;
}
&--relink {
-webkit-mask: url('../images/icons/v3/link/link-slash.svg') no-repeat
center;
}
&--network {
-webkit-mask: url('../images/icons/v3/wifi/wifi-error.svg') no-repeat
center;
}
&--update {
-webkit-mask: url('../images/icons/v3/refresh/refresh.svg') no-repeat
center;
}
&--warning {
-webkit-mask: url('../images/icons/v3/error/error-triangle.svg') no-repeat
center;
}
}
&__action-text {
@include button-reset;
text-decoration: none;
color: $color-white-alpha-80;
}
&__close-button {
@include button-reset;
border-radius: 4px;
float: inline-end;
height: 20px;
width: 20px;
&::before {
-webkit-mask: url('../images/icons/v3/x/x.svg') no-repeat center;
background-color: $color-white;
content: '';
display: block;
width: 100%;
height: 100%;
@media (forced-colors: active) {
background-color: WindowText;
@include dark-theme {
background-color: WindowText;
}
}
}
&:hover,
&:focus {
background-color: $color-white-alpha-20;
}
&:active {
background-color: $color-white-alpha-20;
}
@media (forced-colors: active) {
&:hover,
&:focus,
&:active {
background-color: none;
}
@include dark-theme {
&:hover,
&:focus,
&:active {
background-color: none;
}
}
}
}
&__message {
width: 100%;
}
&__message,
&__tooltip {
max-width: 250px;
h3 {
@include font-body-1-bold;
padding: 0px;
margin: 0px;
}
span {
@include font-body-1;
display: inline-block;
}
a {
font-weight: bold;
text-decoration: none;
}
}
&__tooltip {
--tooltip-background-color: #{$default-background-color};
--tooltip-text-color: #{$default-text-color};
min-width: 280px;
text-align: inherit;
}
&,
&__tooltip {
&--error {
background-color: $error-background-color;
color: $error-text-color;
@include any-theme {
--tooltip-background-color: #{$error-background-color};
--tooltip-text-color: #{$error-text-color};
}
a {
color: $error-text-color;
}
.LeftPaneDialog__action-text {
color: $error-text-color;
}
}
&--warning {
background-color: $warning-background-color;
color: $warning-text-color;
@include any-theme {
--tooltip-background-color: #{$warning-background-color};
--tooltip-text-color: #{$warning-text-color};
}
a {
color: $warning-text-color;
}
.LeftPaneDialog__icon {
background-color: $warning-text-color;
@media (forced-colors: active) {
background-color: WindowText;
}
}
.LeftPaneDialog__close-button::before {
background-color: $warning-text-color;
@media (forced-colors: active) {
background-color: WindowText;
}
}
.LeftPaneDialog__action-text {
color: $warning-text-color;
}
}
}
&__progress {
&--container {
background: $color-white-alpha-20;
border-radius: 2px;
height: 4px;
max-width: 210px;
overflow: hidden;
width: 100%;
margin-block: 10px 6px;
margin-inline: 0;
}
&--bar {
animation: progress-animation 2s linear infinite;
background: linear-gradient(
90deg,
$color-white-alpha-40,
$color-white-alpha-60,
$color-white-alpha-90,
$color-white-alpha-60,
$color-white-alpha-40
);
background-size: 200% 100%;
border-radius: 2px;
display: block;
height: 100%;
width: 100%;
&:dir(ltr) {
/* stylelint-disable-next-line declaration-property-value-disallowed-list */
transform: translateX(-100%);
}
&:dir(rtl) {
/* stylelint-disable-next-line declaration-property-value-disallowed-list */
transform: translateX(100%);
}
transition: transform 500ms ease-out;
}
}
}