discourse/plugins/chat/assets/stylesheets/common/chat-index.scss
Joffrey JAFFEUX d75d64bf16
FEATURE: new jump to channel menu (#22383)
This commit replaces two existing screens:
- draft
- channel selection modal

Main features compared to existing solutions
- features are now combined, meaning you can for example create multi users DM
- it will show users with chat disabled
- it shows unread state
- hopefully a better look/feel
- lots of small details and fixes...

Other noticeable fixes
- starting a DM with a user, even from the user card and clicking <kbd>Chat</kbd> will not show a green dot for the target user (or even the channel) until a message is actually sent
- it should almost never do a full page reload anymore

---------

Co-authored-by: Martin Brennan <mjrbrennan@gmail.com>
Co-authored-by: Jordan Vidrine <30537603+jordanvidrine@users.noreply.github.com>
Co-authored-by: chapoi <101828855+chapoi@users.noreply.github.com>
Co-authored-by: Mark VanLandingham <markvanlan@gmail.com>
2023-07-05 18:18:27 +02:00

234 lines
4.5 KiB
SCSS

.btn-floating.open-new-message-btn {
position: fixed;
background: var(--tertiary);
bottom: 2rem;
right: 2rem;
border-radius: 50%;
font-size: var(--font-up-4);
padding: 1rem;
transition: transform 0.25s ease, box-shadow 0.25s ease;
z-index: z("usercard");
box-shadow: 0px 5px 5px -1px rgba(0, 0, 0, 0.25);
.d-icon {
color: var(--primary-very-low);
}
&:active {
box-shadow: 0px 0px 5px -1px rgba(0, 0, 0, 0.25);
transform: scale(0.9);
}
&:focus {
@include default-focus;
border-color: var(--quaternary);
outline-color: var(--quaternary);
}
}
.channels-list {
overflow-y: auto;
overscroll-behavior: contain;
height: 100%;
padding-bottom: env(safe-area-inset-bottom);
position: relative;
@include chat-scrollbar();
@include breakpoint(mobile-large) {
@include chat-scrollbar();
}
.open-browse-page-btn,
.open-draft-channel-page-btn,
.chat-channel-leave-btn {
position: relative;
padding: 0;
background: transparent;
color: var(--primary-medium);
font-size: var(--font-0-rem);
&:after {
content: "";
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
}
&:hover {
background: transparent;
.d-icon {
color: var(--primary);
}
}
}
.public-channel-empty-message {
margin: 0 0.5em 0.5em 0.5em;
padding: 0 1em;
}
.chat-channel-divider {
padding: 2.5rem 1.5rem 0.5rem 1.5rem;
display: flex;
align-items: center;
justify-content: space-between;
font-weight: bold;
font-family: var(--heading-font-family);
font-size: var(--font-down-1);
color: var(--quaternary);
.channel-title {
line-height: var(--line-height-medium);
}
&:first-of-type {
padding-top: 1rem;
}
}
.chat-channel-row {
align-items: center;
box-sizing: border-box;
display: flex;
justify-content: space-between;
position: relative;
cursor: pointer;
color: var(--primary-high);
@media (hover: none) {
&:hover,
&:focus {
background: transparent;
}
&:active {
background: var(--primary-low);
}
}
@media (hover: hover) {
&:hover,
&.active {
background: var(--primary-very-low);
}
&.can-leave:hover {
.toggle-channel-membership-button.-leave {
display: block;
> * {
pointer-events: auto;
}
}
.chat-channel-metadata {
display: none;
}
}
}
&:hover,
&.active {
.chat-channel-title {
&,
.category-chat-name,
.dm-usernames {
color: var(--primary);
}
.d-icon-lock {
background-color: var(--primary-low);
}
}
}
&:visited {
color: var(--primary-high);
}
&.muted {
opacity: 0.65;
}
.chat-channel-title {
&__users-count {
width: var(--channel-list-avatar-size);
height: var(--channel-list-avatar-size);
padding: 0;
font-size: var(--font-up-1);
justify-content: center;
}
&__avatar {
.chat-user-avatar {
img {
width: calc(var(--channel-list-avatar-size) - 2px);
height: calc(var(--channel-list-avatar-size) - 2px);
}
}
}
&__user-info {
@include ellipsis;
}
&__usernames {
display: flex;
align-items: center;
justify-content: start;
}
.user-status-message {
display: inline-block;
font-size: var(--font-down-2);
margin-right: 0.5rem;
&-description {
color: var(--primary-medium);
}
}
}
.chat-channel-metadata {
display: flex;
align-items: flex-end;
flex-direction: column;
margin-left: 0.5em;
&__date {
color: var(--primary-high);
font-size: var(--font-down-2);
white-space: nowrap;
}
.chat-channel-unread-indicator {
@include chat-unread-indicator;
display: flex;
align-items: center;
justify-content: center;
width: auto;
height: auto;
min-width: 0.6em;
padding: 0.3em 0.5em;
}
}
&.unfollowing {
opacity: 0;
}
.toggle-channel-membership-button.-leave {
display: none;
margin-left: auto;
}
.badge-wrapper {
align-items: center;
margin-right: 0;
}
.emoji {
margin-left: 0.3em;
}
}
}