Alexander Zinchuk 5cb6236879 Follow-up
2025-08-29 22:46:36 +02:00

484 lines
9.4 KiB
SCSS

@use "../../../styles/mixins";
.Chat {
--background-color: var(--color-background);
--thumbs-background: var(--background-color);
--z-forum-indicator: 2;
--z-badge: 4;
--z-status: 8; // Avatar stories require a higher z-index than the ripple to work
position: absolute;
top: 0;
left: 0;
width: 100%;
margin: 0;
-webkit-touch-callout: none;
body.is-ios &,
body.is-macos & {
--color-text-meta: var(--color-text-meta-apple);
}
&.standalone {
position: static;
.LastMessageMeta {
margin-inline-end: 0;
}
}
&.animate-opacity {
will-change: opacity;
transition: opacity 0.2s ease-out;
}
&.animate-transform {
will-change: transform;
transition: transform 0.2s ease-out;
}
&:hover,
&.ListItem.has-menu-open {
.avatar-badge {
--_color-outline: var(--color-chat-hover);
}
.avatar-badge-wrapper {
--outline-color: var(--color-chat-hover);
}
.ChatCallStatus {
border-color: var(--color-chat-hover);
}
}
&:not(.standalone):last-of-type {
border-bottom: 0.5rem solid transparent; // `margin` does not help, and `padding` affects forum indicator height
}
&.selected-forum {
&::before {
transform: translateX(0) scaleY(1) !important;
}
}
body.is-ios &,
body.is-android & {
.ListItem-button {
border-radius: 0 !important;
}
}
&.forum {
--color-chat-username: var(--color-text);
&::before {
content: '';
position: absolute;
z-index: var(--z-forum-indicator);
top: 0.625rem;
bottom: 0.625rem;
left: -0.4375rem; // `.chat-list` left padding
transform: translateX(-0.375rem) scaleY(0.5);
width: 0.3125rem;
border-start-end-radius: var(--border-radius-default);
border-end-end-radius: var(--border-radius-default);
background: var(--color-primary);
transition: transform var(--layer-transition);
body.no-page-transitions & {
transition: none;
}
}
.ListItem-button {
padding-top: 0.3125rem;
padding-bottom: 0.3125rem;
}
.title {
line-height: 1.375rem;
}
.status {
background-color: var(--background-color);
}
@media (max-width: 600px) {
&::before {
left: 0;
}
}
}
.ListItem-button {
height: 72px;
}
.ripple-container {
z-index: var(--z-chat-ripple);
}
.status {
position: relative;
z-index: var(--z-status);
overflow: visible !important;
display: flex;
align-items: center;
align-self: stretch;
}
.avatar-badge-wrapper {
--outline-color: var(--color-background);
position: absolute;
z-index: var(--z-badge);
right: 0.5rem;
bottom: 0;
.ChatBadge {
box-shadow: 0 0 0 2px var(--outline-color);
}
.ChatBadge-transition {
position: relative;
transition: opacity var(--layer-transition), transform var(--layer-transition);
body.no-page-transitions & {
transition: opacity var(--layer-transition);
}
}
}
.avatar-badge {
--_color-outline: var(--color-background);
position: absolute;
right: 0.0625rem;
bottom: 0.0625rem;
flex-shrink: 0;
}
.avatar-subscription {
font-size: 0.875rem;
@include mixins.filter-outline(1px, var(--_color-outline));
}
.avatar-online {
transform: scale(0);
width: 0.875rem;
height: 0.875rem;
border: 2px solid var(--_color-outline);
border-radius: 50%;
opacity: 0.5;
background-color: #0ac630;
transition: opacity 200ms, transform 200ms;
&.avatar-online-shown {
transform: scale(1);
opacity: 1;
}
}
.info {
transition: opacity 300ms ease, transform var(--layer-transition);
body.no-page-transitions & {
transition: opacity 300ms ease;
}
.title .custom-emoji {
color: var(--color-primary);
}
.icon-muted {
margin-left: 0.25rem;
font-size: 1.125rem;
color: var(--color-list-icon);
body.is-ios & {
margin-top: 0;
margin-right: 0.5rem;
}
}
.general-forum-icon {
font-size: 1.25rem;
color: var(--color-text-secondary);
}
.LastMessageMeta {
body.is-ios & {
margin-right: 0;
font-size: 0.875rem;
}
}
.last-message,
.typing-status {
unicode-bidi: plaintext;
flex-grow: 1;
padding-right: 0.25rem;
color: var(--color-text-secondary);
&[dir="ltr"] {
text-align: left;
}
.sender-name {
color: var(--color-chat-username);
body.is-macos &,
body.is-ios & {
color: var(--color-text);
}
}
.draft {
color: var(--color-error);
}
}
.last-message {
overflow: hidden;
display: flex;
&-summary {
overflow: hidden;
flex: unset;
max-width: none;
text-overflow: ellipsis;
white-space: nowrap;
}
.draft {
&::after {
content: ": ";
}
}
.colon, .chat-prefix-icon {
margin-inline-end: 0.1875rem;
}
.chat-prefix-icon {
transform: translateY(1px);
display: inline-block;
font-size: 0.875rem;
color: var(--color-list-icon);
}
.media-preview-spoiler {
filter: blur(1px);
}
.media-preview--image {
flex-shrink: 0;
width: 1.25rem;
height: 1.25rem;
margin-inline-start: 0.125rem;
margin-inline-end: 0.25rem;
border-radius: 0.125rem;
vertical-align: -0.25rem;
object-fit: cover;
body.is-ios & {
width: 1.125rem;
height: 1.125rem;
vertical-align: -0.1875rem;
}
&.round {
border-radius: 0.625rem;
}
}
.emoji-small {
width: 1rem;
height: 1rem;
vertical-align: -0.125rem;
}
.icon-play {
position: relative;
bottom: 0.0625rem;
display: inline-block;
margin-inline-start: -1.25rem;
margin-inline-end: 0.5rem;
font-size: 0.75rem;
color: #fff;
body.is-ios & {
bottom: 0;
margin-inline-start: -1.125rem;
}
}
}
.star-amount-icon {
margin-inline: 0;
line-height: initial;
vertical-align: text-top;
}
&.has-tags {
line-height: 1.25rem;
.info-row {
height: 1.25rem;
}
}
}
&[dir="rtl"] {
.info {
.LastMessageMeta {
margin-right: auto;
margin-left: 0;
}
.title,
.subtitle {
padding-right: 0;
padding-left: 0.125rem;
}
.icon-muted {
margin-right: 0.25rem;
margin-left: 0;
}
.last-message,
.typing-status {
unicode-bidi: plaintext;
padding-right: 0;
padding-left: 0.5rem;
text-align: right;
}
}
}
// Super specific selector to override the same in `ListItem`
@media (min-width: 600px) {
&:not(.has-ripple):not(.is-static),
body.no-page-transitions & {
.ListItem-button:active {
--background-color: var(--color-chat-hover) !important;
}
}
}
@media (max-width: 600px) {
&.selected {
--background-color: var(--color-chat-hover) !important;
.avatar-badge {
--_color-outline: var(--color-chat-hover);
}
.ChatCallStatus {
border-color: var(--color-chat-hover);
}
}
}
@media (min-width: 600px) {
&.selected:not(.forum),
&.selected:not(.forum):hover {
--background-color: var(--color-chat-active) !important;
.title .custom-emoji {
color: var(--color-white);
}
.VerifiedIcon, .StarIcon {
--color-fill: #fff;
--color-checkmark: var(--color-primary);
}
.avatar-badge {
--_color-outline: var(--color-chat-active) !important;
}
.avatar-online {
background-color: var(--color-white);
}
.ChatCallStatus {
border-color: var(--color-chat-active) !important;
}
.ListItem-button {
--background-color: var(--color-chat-active) !important;
--color-text: var(--color-white);
--color-text-meta-colored: var(--color-white);
--color-text-meta: var(--color-white);
--color-text-secondary: var(--color-white);
--color-error: var(--color-white);
--color-list-icon: var(--color-white);
--color-chat-username: var(--color-white);
}
.icon-muted {
color: var(--color-white) !important;
}
.general-forum-icon {
color: var(--color-white) !important;
}
.ChatBadge:not(.pinned):not(.muted) {
color: var(--color-chat-active);
background: var(--color-white);
}
.ChatBadge:not(.pinned).muted {
color: var(--color-white);
background: #FFFFFF33;
}
.avatar-badge-wrapper .ChatBadge:not(.pinned) {
--outline-color: transparent;
}
.avatar-badge-wrapper .ChatBadge:not(.pinned).muted {
background: var(--color-gray);
}
.monoforum-badge {
color: var(--color-chat-active);
background-color: #fff;
}
.ChatTags {
color: var(--color-chat-active);
background-color: #ffffffab;
}
}
}
@media (max-width: 600px) {
.ListItem-button {
border-radius: 0 !important;
}
}
}