2020-03-19 15:01:07 +01:00
|
|
|
.hashtag {
|
|
|
|
&:empty {
|
|
|
|
&::after {
|
|
|
|
content: "#";
|
|
|
|
line-height: 0;
|
|
|
|
font-size: 18px;
|
2023-03-27 08:32:34 +02:00
|
|
|
font-weight: 700;
|
2020-03-19 15:01:07 +01:00
|
|
|
}
|
|
|
|
}
|
2019-03-03 16:53:15 +01:00
|
|
|
}
|
|
|
|
|
2023-11-08 20:33:55 +01:00
|
|
|
.left-sidebar-title {
|
|
|
|
color: var(--color-text-sidebar-heading);
|
|
|
|
font-size: inherit;
|
|
|
|
font-weight: normal;
|
|
|
|
display: inline;
|
2023-11-08 21:31:12 +01:00
|
|
|
/* Override heading margin from Bootstrap. */
|
|
|
|
margin: 0;
|
|
|
|
/* Show an ellipsis on a heading when
|
|
|
|
it won't sit adjacent other icons
|
|
|
|
or controls in the row. */
|
|
|
|
overflow: hidden;
|
|
|
|
text-overflow: ellipsis;
|
2023-11-08 20:33:55 +01:00
|
|
|
}
|
|
|
|
|
2023-09-21 21:38:01 +02:00
|
|
|
.sidebar-topic-check,
|
|
|
|
.topic-markers-and-controls {
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
|
2023-10-20 18:34:05 +02:00
|
|
|
#left-sidebar-navigation-list .filter-icon i {
|
|
|
|
color: var(--color-left-sidebar-navigation-icon);
|
|
|
|
}
|
|
|
|
|
2019-03-03 16:53:15 +01:00
|
|
|
#stream_filters,
|
2023-10-10 21:00:28 +02:00
|
|
|
#left-sidebar-navigation-list {
|
2024-07-19 21:43:15 +02:00
|
|
|
margin-right: var(--left-sidebar-right-margin);
|
2019-03-03 16:06:30 +01:00
|
|
|
}
|
|
|
|
|
2019-08-29 01:41:23 +02:00
|
|
|
li.show-more-topics {
|
2023-03-17 22:10:10 +01:00
|
|
|
& a {
|
2024-06-28 16:13:05 +02:00
|
|
|
/* 12px at 14px/1em */
|
|
|
|
font-size: 0.8571em;
|
2019-08-29 01:41:23 +02:00
|
|
|
}
|
2019-03-03 16:53:15 +01:00
|
|
|
}
|
|
|
|
|
2022-02-11 19:58:26 +01:00
|
|
|
#streams_inline_icon,
|
2020-10-05 16:47:58 +02:00
|
|
|
.streams_filter_icon {
|
2020-08-04 23:58:56 +02:00
|
|
|
opacity: 0.5;
|
2016-10-28 07:12:32 +02:00
|
|
|
|
2020-03-20 02:52:26 +01:00
|
|
|
&:hover {
|
|
|
|
opacity: 1;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|
|
|
|
|
2020-10-05 16:50:26 +02:00
|
|
|
.streams_filter_icon.web_public {
|
|
|
|
margin-right: 10px;
|
|
|
|
}
|
|
|
|
|
2016-10-28 07:12:32 +02:00
|
|
|
.tooltip {
|
2019-08-04 14:57:32 +02:00
|
|
|
max-width: 18em;
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#stream_filters {
|
|
|
|
overflow: visible;
|
2021-03-01 06:33:11 +01:00
|
|
|
margin-bottom: 5px;
|
2016-10-28 07:12:32 +02:00
|
|
|
padding: 0;
|
|
|
|
font-weight: normal;
|
|
|
|
|
2024-06-28 19:00:44 +02:00
|
|
|
.topic_search_section {
|
|
|
|
margin: 3px 0;
|
2023-06-28 09:10:12 +02:00
|
|
|
|
|
|
|
.clear_search_button {
|
2024-06-28 19:00:44 +02:00
|
|
|
grid-area: row-content;
|
|
|
|
justify-self: self-end;
|
|
|
|
/* Override app-component positioning. */
|
|
|
|
position: static;
|
|
|
|
padding-right: 4px;
|
2023-06-28 09:10:12 +02:00
|
|
|
}
|
2022-11-02 17:38:38 +01:00
|
|
|
}
|
|
|
|
|
2023-03-17 22:10:10 +01:00
|
|
|
& li {
|
|
|
|
& a:hover {
|
2023-01-31 09:53:46 +01:00
|
|
|
text-decoration: none;
|
2020-03-20 02:00:33 +01:00
|
|
|
}
|
2017-04-17 22:19:47 +02:00
|
|
|
|
2023-03-17 22:10:10 +01:00
|
|
|
& ul {
|
2020-08-06 02:42:07 +02:00
|
|
|
margin-left: 0;
|
2017-04-17 22:19:47 +02:00
|
|
|
|
2020-03-20 02:00:33 +01:00
|
|
|
&.topic-list li {
|
2024-05-30 21:46:40 +02:00
|
|
|
padding: 0;
|
2020-03-20 02:00:33 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2017-04-17 22:19:47 +02:00
|
|
|
|
2023-04-25 13:37:16 +02:00
|
|
|
.stream-with-count.hide_unread_counts {
|
|
|
|
.masked_unread_count {
|
2023-09-25 19:03:22 +02:00
|
|
|
display: block;
|
|
|
|
/* Shift masked dot to align with
|
|
|
|
the least-significant digit on
|
|
|
|
unreads in other rows.
|
|
|
|
We have to do this with margin,
|
|
|
|
because width or padding will
|
|
|
|
distort the CSS-created dot. */
|
2024-08-23 22:44:10 +02:00
|
|
|
margin-right: var(--masked-unread-count-margin-right);
|
2023-04-25 13:37:16 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.narrow-filter
|
|
|
|
> .bottom_left_row:hover
|
|
|
|
> .stream-with-count.hide_unread_counts {
|
|
|
|
.masked_unread_count {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
display: inline;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.stream-expanded {
|
|
|
|
.stream-with-count.hide_unread_counts {
|
|
|
|
.masked_unread_count {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
display: inline;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.has-unmuted-unreads.hide_unread_counts {
|
|
|
|
.masked_unread_count {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
display: inline;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-17 20:25:58 +01:00
|
|
|
.inactive_stream:not(.active-filter) {
|
2020-08-04 23:58:56 +02:00
|
|
|
opacity: 0.5;
|
2020-03-20 02:00:33 +01:00
|
|
|
}
|
2022-02-20 21:32:14 +01:00
|
|
|
|
|
|
|
.toggle_stream_mute {
|
|
|
|
margin-right: 3px;
|
|
|
|
opacity: 0.5;
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
}
|
2020-03-20 15:58:09 +01:00
|
|
|
}
|
|
|
|
|
2023-10-10 21:00:28 +02:00
|
|
|
.left-sidebar-navigation-area {
|
2023-03-17 22:10:10 +01:00
|
|
|
& li a {
|
2020-03-20 15:58:09 +01:00
|
|
|
&:hover {
|
|
|
|
text-decoration: none;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-09-13 13:15:57 +02:00
|
|
|
#left_sidebar_scroll_container {
|
|
|
|
outline: none;
|
2023-11-09 00:35:32 +01:00
|
|
|
overflow: hidden auto;
|
2016-10-28 07:12:32 +02:00
|
|
|
position: relative;
|
2016-11-29 20:11:29 +01:00
|
|
|
z-index: 0;
|
2017-01-15 17:39:04 +01:00
|
|
|
width: 100%;
|
2023-10-31 15:42:50 +01:00
|
|
|
|
|
|
|
.direct-messages-container {
|
|
|
|
margin-left: 0;
|
|
|
|
}
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|
|
|
|
|
2024-07-10 05:10:04 +02:00
|
|
|
#direct-messages-section-header {
|
2024-08-02 22:53:20 +02:00
|
|
|
grid-template-columns:
|
|
|
|
0 var(--left-sidebar-header-icon-toggle-width) 0 minmax(0, 1fr)
|
|
|
|
max-content 30px 0;
|
2024-07-10 05:10:04 +02:00
|
|
|
grid-template-rows: var(--line-height-sidebar-row-prominent);
|
|
|
|
cursor: pointer;
|
|
|
|
white-space: nowrap;
|
2022-09-13 13:15:57 +02:00
|
|
|
|
2024-07-10 05:10:04 +02:00
|
|
|
#toggle-direct-messages-section-icon {
|
|
|
|
grid-area: starting-anchor-element;
|
2024-08-02 22:53:20 +02:00
|
|
|
/* Horizontally center the icon in its allotted grid area. */
|
|
|
|
justify-self: center;
|
2024-07-10 05:10:04 +02:00
|
|
|
}
|
2023-11-09 00:00:09 +01:00
|
|
|
|
2024-07-10 05:10:04 +02:00
|
|
|
.left-sidebar-title {
|
|
|
|
grid-area: row-content;
|
|
|
|
}
|
2023-11-09 00:00:09 +01:00
|
|
|
|
2024-07-10 05:10:04 +02:00
|
|
|
.heading-markers-and-controls {
|
|
|
|
grid-area: markers-and-controls;
|
|
|
|
display: flex;
|
|
|
|
gap: 5px;
|
|
|
|
align-items: center;
|
|
|
|
}
|
2023-11-09 00:00:09 +01:00
|
|
|
|
2024-07-10 05:10:04 +02:00
|
|
|
#show-all-direct-messages {
|
|
|
|
width: var(--left-sidebar-header-icon-width);
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
opacity: 0.7;
|
|
|
|
text-decoration: none;
|
|
|
|
color: inherit;
|
2022-09-13 13:15:57 +02:00
|
|
|
|
2024-07-10 05:10:04 +02:00
|
|
|
&:hover {
|
|
|
|
opacity: 1;
|
2022-09-13 13:15:57 +02:00
|
|
|
}
|
|
|
|
}
|
2024-07-10 05:10:04 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
.direct-messages-container {
|
|
|
|
/* Properly offset all the grid rows
|
|
|
|
in the DM section. */
|
2024-07-19 21:43:15 +02:00
|
|
|
margin-right: var(--left-sidebar-right-margin);
|
2022-09-13 13:15:57 +02:00
|
|
|
|
2023-10-30 16:11:34 +01:00
|
|
|
& ul.dm-list {
|
2022-09-13 13:15:57 +02:00
|
|
|
list-style-type: none;
|
|
|
|
font-weight: 400;
|
|
|
|
margin-left: 0;
|
|
|
|
margin-bottom: 0;
|
2024-05-30 21:35:34 +02:00
|
|
|
line-height: var(--line-height-sidebar-row);
|
2022-09-13 13:15:57 +02:00
|
|
|
|
2023-03-17 22:10:10 +01:00
|
|
|
& span.fa-group {
|
2022-09-13 13:15:57 +02:00
|
|
|
font-size: 90%;
|
|
|
|
}
|
|
|
|
|
2023-10-30 15:44:36 +01:00
|
|
|
& li.dm-list-item {
|
2023-03-17 22:10:10 +01:00
|
|
|
& a {
|
2022-09-13 13:15:57 +02:00
|
|
|
text-decoration: none;
|
|
|
|
color: inherit;
|
|
|
|
}
|
|
|
|
|
2023-10-30 15:26:43 +01:00
|
|
|
.fa-group,
|
|
|
|
.zulip-icon {
|
|
|
|
opacity: 0.7;
|
|
|
|
}
|
2022-09-13 13:15:57 +02:00
|
|
|
}
|
|
|
|
|
2023-10-30 15:44:36 +01:00
|
|
|
& li#show-more-direct-messages {
|
2022-09-13 13:15:57 +02:00
|
|
|
cursor: pointer;
|
2024-05-03 22:55:44 +02:00
|
|
|
/* The 'more conversations' line has no icons,
|
|
|
|
so vertically align the text with the unread
|
|
|
|
count, when one appears there. */
|
|
|
|
align-items: baseline;
|
2022-09-13 13:15:57 +02:00
|
|
|
|
2023-03-17 22:10:10 +01:00
|
|
|
& a {
|
2024-06-28 16:13:05 +02:00
|
|
|
/* 12px at 14px/1em */
|
|
|
|
font-size: 0.8571em;
|
2022-09-13 13:15:57 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
margin-top: 2px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-08-31 06:59:42 +02:00
|
|
|
}
|
|
|
|
|
2024-06-07 05:26:10 +02:00
|
|
|
#toggle-direct-messages-section-icon,
|
2023-10-11 19:08:42 +02:00
|
|
|
#toggle-top-left-navigation-area-icon {
|
|
|
|
opacity: 0.7;
|
|
|
|
|
|
|
|
&.fa-caret-right {
|
|
|
|
position: relative;
|
|
|
|
left: 3px;
|
|
|
|
}
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
2023-10-19 21:40:03 +02:00
|
|
|
|
|
|
|
&:focus {
|
|
|
|
outline: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* This renders an outline when the caret is reached
|
|
|
|
with the keyboard, although that is not at present
|
|
|
|
easily accomplished. */
|
|
|
|
&:focus-visible {
|
|
|
|
outline: 2px solid var(--color-outline-focus);
|
|
|
|
}
|
2023-10-11 19:08:42 +02:00
|
|
|
}
|
|
|
|
|
2024-06-07 05:44:55 +02:00
|
|
|
.active-direct-messages-section {
|
2024-06-18 17:16:48 +02:00
|
|
|
background-color: var(--color-background-active-narrow-filter);
|
2021-04-15 08:37:04 +02:00
|
|
|
|
2024-07-04 12:46:35 +02:00
|
|
|
#direct-messages-section-header {
|
2022-09-13 13:15:57 +02:00
|
|
|
border-radius: 4px 4px 0 0;
|
|
|
|
}
|
|
|
|
|
2023-10-30 16:18:29 +01:00
|
|
|
#direct-messages-list {
|
2022-09-13 13:15:57 +02:00
|
|
|
border-radius: 0 0 4px 4px;
|
|
|
|
}
|
2019-02-13 14:05:58 +01:00
|
|
|
}
|
|
|
|
|
2020-07-04 12:11:27 +02:00
|
|
|
:not(.active-sub-filter) {
|
|
|
|
&.top_left_row:hover,
|
2023-05-11 10:20:33 +02:00
|
|
|
&.bottom_left_row:hover {
|
2023-03-24 00:09:48 +01:00
|
|
|
background-color: var(--color-background-hover-narrow-filter);
|
2024-08-15 17:43:38 +02:00
|
|
|
|
|
|
|
.sidebar-topic-check {
|
|
|
|
background-color: var(
|
|
|
|
--color-background-opaque-hover-narrow-filter
|
|
|
|
);
|
|
|
|
}
|
2020-07-04 12:11:27 +02:00
|
|
|
}
|
2017-12-09 01:19:33 +01:00
|
|
|
}
|
|
|
|
|
2023-11-09 17:53:29 +01:00
|
|
|
.top_left_row,
|
|
|
|
.bottom_left_row {
|
|
|
|
/* Ensure a border radius on any interactive
|
|
|
|
state that might show a highlight. */
|
|
|
|
border-radius: 4px;
|
|
|
|
}
|
|
|
|
|
2023-05-11 10:20:33 +02:00
|
|
|
#stream_filters .narrow-filter.highlighted_stream {
|
|
|
|
&.active-filter > .bottom_left_row {
|
|
|
|
background-color: var(--color-background-hover-narrow-filter);
|
|
|
|
}
|
|
|
|
|
|
|
|
&.active-filter .topic-list .bottom_left_row {
|
|
|
|
background-color: var(--color-background-active-narrow-filter);
|
|
|
|
}
|
|
|
|
|
|
|
|
.bottom_left_row:not(.active-sub-filter) {
|
|
|
|
background-color: var(--color-background-hover-narrow-filter);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-11-29 20:38:07 +01:00
|
|
|
#login-link-container,
|
2022-08-15 21:32:10 +02:00
|
|
|
#subscribe-to-more-streams {
|
2019-05-11 19:44:27 +02:00
|
|
|
text-decoration: none;
|
2024-08-02 22:53:20 +02:00
|
|
|
margin: 5px auto var(--left-sidebar-bottom-scrolling-buffer)
|
|
|
|
var(--left-sidebar-toggle-width-offset);
|
2021-10-16 21:57:26 +02:00
|
|
|
|
2024-09-02 19:29:49 +02:00
|
|
|
.subscribe-more-icon {
|
2020-03-19 22:49:56 +01:00
|
|
|
min-width: 19px;
|
|
|
|
text-align: center;
|
2021-10-16 21:57:26 +02:00
|
|
|
|
2020-03-19 22:49:56 +01:00
|
|
|
&::before {
|
|
|
|
padding-right: 3px;
|
|
|
|
}
|
|
|
|
}
|
2019-05-11 19:44:27 +02:00
|
|
|
}
|
|
|
|
|
2024-05-07 06:17:42 +02:00
|
|
|
#login-link-container {
|
|
|
|
color: var(--color-text-url);
|
2023-12-04 18:57:47 +01:00
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
2024-05-07 06:17:42 +02:00
|
|
|
|
|
|
|
&:hover {
|
|
|
|
cursor: pointer;
|
|
|
|
color: var(--color-text-url-hover);
|
|
|
|
|
|
|
|
&.login_button .login-text {
|
|
|
|
color: var(--color-text-url-hover);
|
|
|
|
text-decoration: underline;
|
|
|
|
}
|
|
|
|
}
|
2023-12-04 18:57:47 +01:00
|
|
|
}
|
|
|
|
|
2016-10-28 07:12:32 +02:00
|
|
|
ul.filters {
|
|
|
|
list-style-type: none;
|
2020-08-06 02:42:07 +02:00
|
|
|
margin-left: 0;
|
2023-04-22 18:10:00 +02:00
|
|
|
color: hsl(0deg 0% 20% / 100%);
|
2024-06-03 18:11:20 +02:00
|
|
|
/* Streams take a standard row height. */
|
2024-05-30 21:39:27 +02:00
|
|
|
line-height: var(--line-height-sidebar-row);
|
2016-10-28 07:12:32 +02:00
|
|
|
|
2023-03-17 22:10:10 +01:00
|
|
|
& a {
|
2020-03-20 02:34:20 +01:00
|
|
|
color: inherit;
|
2023-05-01 23:23:26 +02:00
|
|
|
|
|
|
|
&:focus {
|
|
|
|
text-decoration: none;
|
|
|
|
}
|
2020-03-20 02:34:20 +01:00
|
|
|
}
|
2016-10-28 07:12:32 +02:00
|
|
|
|
2023-03-17 22:10:10 +01:00
|
|
|
& hr {
|
2020-03-20 02:34:20 +01:00
|
|
|
margin-top: 10px;
|
|
|
|
margin-bottom: 10px;
|
|
|
|
}
|
2016-10-28 07:12:32 +02:00
|
|
|
|
2023-05-19 22:31:46 +02:00
|
|
|
.has-only-muted-unreads {
|
|
|
|
.unread_count {
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.has-only-muted-mentions .unread_mention_info {
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
|
2023-05-02 02:24:11 +02:00
|
|
|
/* This is a noop in the current design, because unread counts for
|
|
|
|
muted streams have the same opacity, but the logic is here to
|
|
|
|
be explicit and because the design may change in the future. */
|
|
|
|
.more_topic_unreads_muted_only .unread_count {
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
|
2023-12-07 18:01:03 +01:00
|
|
|
.zulip-icon-follow {
|
|
|
|
opacity: 0.6;
|
2024-07-03 22:53:31 +02:00
|
|
|
|
|
|
|
&:hover {
|
|
|
|
opacity: 1;
|
|
|
|
color: var(--color-left-sidebar-follow-icon-hover);
|
|
|
|
}
|
2023-12-07 18:01:03 +01:00
|
|
|
}
|
|
|
|
|
2023-03-17 22:10:10 +01:00
|
|
|
& li.muted_topic,
|
2020-03-20 02:34:20 +01:00
|
|
|
li.out_of_home_view {
|
2023-04-22 18:10:00 +02:00
|
|
|
color: hsl(0deg 0% 20% / 50%);
|
|
|
|
|
2023-04-22 18:58:54 +02:00
|
|
|
.has-unmuted-mentions .unread_mention_info {
|
|
|
|
color: hsl(0deg 0% 20%);
|
|
|
|
}
|
|
|
|
|
2023-04-22 18:10:00 +02:00
|
|
|
.stream-privacy {
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
|
|
|
|
& .unread_count {
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
|
2023-04-25 13:37:16 +02:00
|
|
|
& .masked_unread_count {
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
|
2023-04-22 18:24:59 +02:00
|
|
|
.has-unmuted-unreads {
|
|
|
|
.unread_count {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-08-25 16:07:32 +02:00
|
|
|
& li.unmuted_or_followed_topic {
|
|
|
|
color: var(--color-unmuted-or-followed-topic-list-item);
|
2023-04-22 18:14:26 +02:00
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
}
|
2020-03-20 02:34:20 +01:00
|
|
|
}
|
2020-03-20 20:21:09 +01:00
|
|
|
|
2023-03-17 22:10:10 +01:00
|
|
|
& li.out_of_home_view {
|
2020-03-20 02:34:20 +01:00
|
|
|
&:hover {
|
2023-04-22 18:10:00 +02:00
|
|
|
color: hsla(0deg 0% 20% / 75%);
|
|
|
|
|
|
|
|
.stream-privacy {
|
|
|
|
opacity: 0.75;
|
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
opacity: 0.75;
|
|
|
|
}
|
2023-04-22 18:24:59 +02:00
|
|
|
|
|
|
|
.has-unmuted-unreads {
|
|
|
|
.unread_count {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
}
|
2020-03-20 02:34:20 +01:00
|
|
|
}
|
2020-03-20 20:21:09 +01:00
|
|
|
|
2023-03-17 22:10:10 +01:00
|
|
|
& li.muted_topic {
|
2020-03-20 02:34:20 +01:00
|
|
|
/* If stream is muted, this resets opacity of muted topics in muted
|
|
|
|
stream to 1; since opacity is multiplied down through child
|
2021-09-17 02:06:04 +02:00
|
|
|
elements, this avoids an unreadably low opacity. */
|
2020-03-20 02:34:20 +01:00
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
}
|
2020-03-20 20:21:09 +01:00
|
|
|
}
|
|
|
|
|
2016-10-28 07:12:32 +02:00
|
|
|
li.active-filter,
|
|
|
|
li.active-sub-filter {
|
|
|
|
font-weight: 600 !important;
|
|
|
|
position: relative;
|
2019-03-12 16:20:00 +01:00
|
|
|
border-radius: 4px;
|
2023-03-24 00:09:48 +01:00
|
|
|
background-color: var(--color-background-active-narrow-filter);
|
2024-08-15 17:43:38 +02:00
|
|
|
|
|
|
|
.sidebar-topic-check {
|
|
|
|
background-color: var(--color-background-active-narrow-filter);
|
|
|
|
}
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|
|
|
|
|
2022-10-27 14:04:02 +02:00
|
|
|
#stream_filters .narrow-filter.active-filter {
|
|
|
|
.topic-list .filter-topics,
|
|
|
|
> .bottom_left_row {
|
2023-03-24 00:09:48 +01:00
|
|
|
background-color: var(--color-background-active-narrow-filter);
|
2022-11-28 20:24:32 +01:00
|
|
|
border-radius: 4px;
|
2022-10-27 14:04:02 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-10-11 19:08:42 +02:00
|
|
|
#left-sidebar-navigation-list-condensed {
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
|
|
|
|
.left-sidebar-navigation-condensed-item {
|
|
|
|
/* 24px minimum width from Vlad's design. */
|
|
|
|
flex: 1 0 24px;
|
|
|
|
/* Unset padding from individual top_left items */
|
|
|
|
padding: 0;
|
2023-10-12 18:52:37 +02:00
|
|
|
border-radius: 4px;
|
2023-10-25 16:40:09 +02:00
|
|
|
/* Set a positioning context for the unread dot. */
|
|
|
|
position: relative;
|
2023-10-12 18:52:37 +02:00
|
|
|
|
2023-10-12 19:10:12 +02:00
|
|
|
.unread_count {
|
|
|
|
position: absolute;
|
|
|
|
}
|
|
|
|
|
2023-10-19 21:40:03 +02:00
|
|
|
/* Show the same styles when each item is
|
|
|
|
hovered or, via the keyboard, the `<a>`
|
|
|
|
element within receives focus. */
|
|
|
|
&:hover,
|
|
|
|
&:focus-within {
|
2023-10-12 18:52:37 +02:00
|
|
|
background: var(--color-background-hover-narrow-filter);
|
2023-10-12 19:10:12 +02:00
|
|
|
|
|
|
|
.unread_count {
|
2024-06-27 17:56:51 +02:00
|
|
|
/* 6px at 12px/1em */
|
|
|
|
top: -0.5em;
|
|
|
|
right: -0.5em;
|
2023-11-03 15:52:59 +01:00
|
|
|
background: var(--color-background-unread-counter-no-alpha);
|
2023-10-12 19:10:12 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
&:not(:hover) .unread_count {
|
|
|
|
top: 2px;
|
|
|
|
right: 2px;
|
|
|
|
width: 6px;
|
|
|
|
height: 6px;
|
|
|
|
font-size: 0;
|
|
|
|
padding: 0;
|
|
|
|
background-color: var(--color-background-unread-counter-dot);
|
|
|
|
}
|
|
|
|
|
|
|
|
&.top_left_starred_messages .unread_count {
|
|
|
|
display: none;
|
2023-10-12 18:52:37 +02:00
|
|
|
}
|
2023-10-11 19:08:42 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
.left-sidebar-navigation-icon-container {
|
|
|
|
/* Unset margin from full nav list anchor elements. */
|
|
|
|
margin: 0;
|
|
|
|
/* Horizontally center icons within their boxes. */
|
|
|
|
text-align: center;
|
2023-10-12 19:10:12 +02:00
|
|
|
|
|
|
|
&:focus {
|
|
|
|
/* Unset inherited :focus outline. */
|
|
|
|
outline: 0;
|
|
|
|
}
|
2023-10-11 19:08:42 +02:00
|
|
|
}
|
|
|
|
|
2023-10-12 18:52:37 +02:00
|
|
|
.active-filter {
|
|
|
|
/* Don't display a background on condensed icons. */
|
|
|
|
background: unset;
|
|
|
|
}
|
|
|
|
|
2023-10-11 19:08:42 +02:00
|
|
|
.filter-icon {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
/* TODO: Set this 24px height value as a variable.
|
|
|
|
Keep filter-icon height the full height of the box. */
|
|
|
|
height: 24px;
|
2023-10-24 20:52:16 +02:00
|
|
|
/* Enlarge icons slightly in condensed views. */
|
|
|
|
font-size: 15px;
|
2023-10-11 19:08:42 +02:00
|
|
|
color: var(--color-left-sidebar-navigation-icon);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-10-10 21:00:28 +02:00
|
|
|
#left-sidebar-navigation-list {
|
2024-06-28 17:04:19 +02:00
|
|
|
margin-bottom: var(--left-sidebar-sections-vertical-gutter);
|
2023-11-02 20:17:42 +01:00
|
|
|
/* We display this as a grid only to control
|
|
|
|
the order of home views, using a single
|
|
|
|
named grid area. */
|
|
|
|
display: grid;
|
|
|
|
grid-template-areas: "selected-home-view";
|
2024-06-03 18:11:49 +02:00
|
|
|
line-height: var(--line-height-sidebar-row);
|
2024-07-02 18:08:23 +02:00
|
|
|
/* Explicitly ensure parity with the line-height
|
|
|
|
for the sake of low-resolution screens, whose
|
|
|
|
font-rendering and rounding may cause icons
|
2024-07-03 23:13:18 +02:00
|
|
|
to appear out of alignment. This grid feature should
|
|
|
|
only apply in the expanded-navigation view. */
|
2024-07-02 18:08:23 +02:00
|
|
|
grid-auto-rows: var(--line-height-sidebar-row);
|
2020-03-20 19:58:49 +01:00
|
|
|
|
2023-10-10 21:00:28 +02:00
|
|
|
.left-sidebar-navigation-label-container {
|
|
|
|
.left-sidebar-navigation-label {
|
2024-07-02 18:08:23 +02:00
|
|
|
/* Again, for the sake of low-resolution screens,
|
|
|
|
we'll let the actual label take 1 as a line-height
|
|
|
|
value, and allow grid to handle the alignment. */
|
|
|
|
line-height: 1;
|
2023-08-10 14:07:22 +02:00
|
|
|
overflow: hidden;
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
white-space: nowrap;
|
|
|
|
}
|
|
|
|
}
|
2020-03-20 19:58:49 +01:00
|
|
|
}
|
|
|
|
|
2023-11-02 20:17:42 +01:00
|
|
|
.selected-home-view {
|
|
|
|
/* This bumps the selected view to the
|
|
|
|
top of the grid (expanded list).
|
|
|
|
Others items will auto place in the
|
|
|
|
remaining auto-generated grid rows. */
|
|
|
|
grid-area: selected-home-view;
|
|
|
|
/* The condensed view is a flexbox, so
|
|
|
|
here we'll use a negative order to
|
|
|
|
bump the selected home view to the
|
|
|
|
start of the flexbox (lefthand side). */
|
|
|
|
order: -1;
|
|
|
|
}
|
|
|
|
|
2023-10-16 21:21:44 +02:00
|
|
|
.top_left_starred_messages .unread_count,
|
|
|
|
.top_left_drafts .unread_count,
|
|
|
|
.top_left_scheduled_messages .unread_count,
|
|
|
|
.condensed-views-popover-menu .unread_count {
|
|
|
|
background-color: unset;
|
|
|
|
color: inherit;
|
|
|
|
border: 0.5px solid var(--color-border-unread-counter);
|
2019-03-12 15:08:28 +01:00
|
|
|
}
|
|
|
|
|
2023-11-02 20:08:30 +01:00
|
|
|
/* Don't show unread counts on views... */
|
2024-02-28 12:24:44 +01:00
|
|
|
.top_left_my_reactions,
|
2023-11-02 20:08:30 +01:00
|
|
|
.top_left_inbox,
|
|
|
|
.top_left_recent_view,
|
|
|
|
.top_left_all_messages {
|
|
|
|
.unread_count {
|
|
|
|
visibility: hidden;
|
|
|
|
}
|
|
|
|
/* ...unless it's the selected home view. */
|
|
|
|
&.selected-home-view .unread_count {
|
|
|
|
visibility: visible;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-10-16 21:41:23 +02:00
|
|
|
/* Don't show the scheduled messages item... */
|
|
|
|
li.top_left_scheduled_messages {
|
|
|
|
display: none;
|
|
|
|
/* ...unless there are scheduled messages to show. */
|
|
|
|
&.show-with-scheduled-messages {
|
2023-10-20 18:34:05 +02:00
|
|
|
/* Use display: grid to preserve the grid
|
|
|
|
layout when visible. */
|
|
|
|
display: grid;
|
2023-10-16 21:41:23 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-10-20 18:34:05 +02:00
|
|
|
.left-sidebar-navigation-label-container {
|
|
|
|
grid-area: row-content;
|
|
|
|
/* The label container itself is also a grid,
|
|
|
|
for laying out the items that are its
|
|
|
|
children. Same template areas, different
|
|
|
|
column widths. */
|
2024-08-02 22:53:20 +02:00
|
|
|
grid-template-columns:
|
|
|
|
var(--left-sidebar-toggle-width-offset) var(
|
|
|
|
--left-sidebar-icon-column-width
|
|
|
|
)
|
|
|
|
var(--left-sidebar-icon-content-gap) minmax(0, 1fr) max-content 0 0;
|
2023-10-20 18:34:05 +02:00
|
|
|
|
|
|
|
.filter-icon {
|
|
|
|
grid-area: starting-anchor-element;
|
2023-10-24 18:56:21 +02:00
|
|
|
/* Use a flex container to handle
|
|
|
|
icon centering within the grid area. */
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
2023-10-20 18:34:05 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
.left-sidebar-navigation-label {
|
|
|
|
grid-area: row-content;
|
2024-06-28 17:04:19 +02:00
|
|
|
padding-right: var(--left-sidebar-before-unread-count-padding);
|
2023-10-20 18:34:05 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
grid-area: markers-and-controls;
|
|
|
|
}
|
2017-04-17 22:19:47 +02:00
|
|
|
}
|
|
|
|
|
2024-08-23 22:44:10 +02:00
|
|
|
.top_left_starred_messages {
|
|
|
|
&.hide_starred_message_count {
|
|
|
|
.masked_unread_count {
|
|
|
|
display: block;
|
|
|
|
grid-area: markers-and-controls;
|
|
|
|
/* Adding margin-right aligns the .masked_unread_count with the rest of the masked unread counts in the channel list. */
|
|
|
|
margin-right: var(--masked-unread-count-margin-right);
|
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
/* When starred message count is 0, we dont want to show unread_count or masked_unread_count. */
|
|
|
|
.unread_count.hide + .masked_unread_count {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.top_left_starred_messages:hover {
|
|
|
|
&.hide_starred_message_count {
|
|
|
|
.masked_unread_count {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
display: inline;
|
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count.hide {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.top_left_starred_messages.active-filter {
|
|
|
|
&.hide_starred_message_count {
|
|
|
|
.masked_unread_count {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
display: inline;
|
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count.hide {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-02-12 04:12:20 +01:00
|
|
|
.conversation-partners {
|
2023-10-31 15:42:50 +01:00
|
|
|
grid-area: row-content;
|
2023-09-18 19:13:51 +02:00
|
|
|
overflow: hidden;
|
2023-10-31 15:42:50 +01:00
|
|
|
text-overflow: ellipsis;
|
2023-10-31 16:53:54 +01:00
|
|
|
/* Use an inline grid to provide a modern layout
|
|
|
|
for status emoji in DM rows, while preserving
|
|
|
|
the expected ellipsis behavior on long usernames
|
|
|
|
or large DM groups.
|
|
|
|
The 16px-tall emoji will also align well
|
|
|
|
vertically with the 18px line-height here. */
|
|
|
|
display: inline-grid;
|
|
|
|
/* Provide a two-column grid, sized to accommodate
|
|
|
|
the content of the conversation list and status
|
|
|
|
emoji, if any. */
|
|
|
|
grid-template-columns: repeat(2, minmax(0, max-content));
|
|
|
|
align-items: center;
|
2023-09-18 19:13:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
.conversation-partners .status-emoji {
|
|
|
|
/* Prevent status emoji from colliding
|
|
|
|
with unread counts. */
|
|
|
|
margin-right: 3px;
|
2019-02-12 04:12:20 +01:00
|
|
|
}
|
|
|
|
|
2023-09-21 20:56:20 +02:00
|
|
|
/* New .topic-box grid definitions here. */
|
2023-10-11 19:08:42 +02:00
|
|
|
#views-label-container,
|
2024-07-03 15:13:38 +02:00
|
|
|
.zoom-in #hide-more-direct-messages,
|
2023-10-20 18:34:05 +02:00
|
|
|
.top_left_row,
|
|
|
|
.left-sidebar-navigation-label-container,
|
2023-10-31 15:42:50 +01:00
|
|
|
.dm-box,
|
2023-09-25 19:03:22 +02:00
|
|
|
.subscription_block,
|
2024-05-17 22:08:42 +02:00
|
|
|
.topic-box,
|
2024-06-28 19:00:44 +02:00
|
|
|
.searching-for-more-topics,
|
|
|
|
.topic_search_section {
|
2023-09-21 20:56:20 +02:00
|
|
|
display: grid;
|
|
|
|
align-items: center;
|
|
|
|
/* This general pattern of elements applies to every single row in the left
|
|
|
|
sidebar, to some degree or another. Eventually, these template areas
|
|
|
|
could be applied to all rows, with different `grid-template-column`
|
|
|
|
values applied as needed (and shared as needed). For example, an element
|
|
|
|
with no "starting-offset" sets that area to `0`; so too with other non-
|
|
|
|
existent elements.
|
|
|
|
|
|
|
|
The offsets themselves are meant to greedily assign all of the available
|
|
|
|
horizontal space to the content area of the row. That space can then be
|
|
|
|
modified or reassigned as needed, without running up against `padding`
|
|
|
|
(which alters the box size) or `margin` (which notoriously bleeds outside
|
|
|
|
of the element it's defined on). */
|
2024-08-02 22:53:20 +02:00
|
|
|
grid-template-areas: "starting-offset starting-anchor-element icon-content-gap row-content markers-and-controls ending-anchor-element ending-offset";
|
2023-09-25 19:03:22 +02:00
|
|
|
}
|
|
|
|
|
2024-07-02 18:08:23 +02:00
|
|
|
.top_left_row {
|
|
|
|
/* We stretch the items on the overall
|
|
|
|
nav row, so there's no unclickable
|
|
|
|
gaps between nav rows. */
|
|
|
|
align-items: stretch;
|
|
|
|
/* The row grid for the outer .top_left_row
|
|
|
|
is chiefly for lefthand spacing and placing
|
|
|
|
the inner row content and vdots. */
|
2024-08-02 22:53:20 +02:00
|
|
|
grid-template-columns: 0 0 0 minmax(0, 1fr) 0 30px 0;
|
2024-07-02 18:08:23 +02:00
|
|
|
|
|
|
|
.sidebar-menu-icon {
|
|
|
|
grid-area: ending-anchor-element;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-06-07 05:14:50 +02:00
|
|
|
#direct-messages-section-header,
|
2023-11-20 23:32:51 +01:00
|
|
|
#streams_header,
|
|
|
|
#topics_header {
|
2023-11-09 00:36:56 +01:00
|
|
|
display: grid;
|
|
|
|
align-items: center;
|
|
|
|
/* This extends the general pattern of left sidebar rows, but includes a
|
|
|
|
second grid row for placing filter boxes. This pattern keeps the box
|
|
|
|
aligned with the text content in `row-content` and includes the
|
|
|
|
`ending-anchor-element` space.
|
|
|
|
|
|
|
|
There is currently no filter box on DM rows, but we can prepare for
|
|
|
|
that now by having it share this grid template. Its row and column
|
|
|
|
definitions have the final say about dimensions and placement. */
|
|
|
|
grid-template-areas:
|
2024-08-02 22:53:20 +02:00
|
|
|
"starting-offset starting-anchor-element icon-content-gap row-content markers-and-controls ending-anchor-element ending-offset"
|
|
|
|
". . filter-box filter-box filter-box filter-box . ";
|
2023-11-09 00:36:56 +01:00
|
|
|
}
|
|
|
|
|
2023-10-11 19:08:42 +02:00
|
|
|
#views-label-container {
|
|
|
|
grid-template-columns:
|
2024-08-02 22:53:20 +02:00
|
|
|
0 var(--left-sidebar-header-icon-toggle-width) 0 minmax(0, 0.5fr) minmax(
|
|
|
|
0,
|
|
|
|
1fr
|
|
|
|
)
|
2024-07-19 21:43:15 +02:00
|
|
|
30px var(--left-sidebar-right-margin);
|
2024-05-31 22:58:45 +02:00
|
|
|
grid-template-rows: var(--line-height-sidebar-row-prominent);
|
2023-10-11 19:08:42 +02:00
|
|
|
cursor: pointer;
|
|
|
|
|
2023-10-16 21:50:48 +02:00
|
|
|
&.showing-expanded-navigation {
|
|
|
|
/* When the expanded navigation is visible,
|
|
|
|
hide the condensed navigation's controls. */
|
|
|
|
#left-sidebar-navigation-list-condensed,
|
|
|
|
.left-sidebar-navigation-menu-icon {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
/* Give the sidebar title through the end of the markers
|
|
|
|
area, if needed. */
|
2023-11-08 20:33:55 +01:00
|
|
|
.left-sidebar-title {
|
2023-10-16 21:50:48 +02:00
|
|
|
grid-column: row-content-start / markers-and-controls-end;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Use a next-sibling combinator (+) to use CSS to show and hide
|
|
|
|
filter rows as needed, based on the narrow. */
|
|
|
|
&.showing-condensed-navigation {
|
|
|
|
+ #left-sidebar-navigation-list {
|
2024-07-03 23:13:18 +02:00
|
|
|
/* In the condensed state, we don't want to generate
|
|
|
|
auto rows, or there will be a footprint where the
|
|
|
|
expanded nav sits. */
|
|
|
|
grid-auto-rows: unset;
|
2023-10-16 21:50:48 +02:00
|
|
|
/* When the navigation area is condensed, hide all
|
|
|
|
the rows in the full navigation list... */
|
|
|
|
& .top_left_row {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
/* ...except when there is an active filter in place:
|
|
|
|
that row should still be shown. */
|
|
|
|
& .top_left_row.active-filter {
|
2023-10-20 18:34:05 +02:00
|
|
|
display: grid;
|
2024-07-03 23:13:18 +02:00
|
|
|
/* In the absence of auto rows in the condensed state,
|
|
|
|
we set an explicit height on the active filter. */
|
|
|
|
height: var(--line-height-sidebar-row);
|
2023-10-16 21:50:48 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-06-18 11:35:02 +02:00
|
|
|
/* Remove the cursor: pointer property of Views label for the spectators. */
|
|
|
|
&.remove-pointer-for-spectator {
|
|
|
|
cursor: default;
|
|
|
|
}
|
|
|
|
|
2023-10-11 19:08:42 +02:00
|
|
|
#toggle-top-left-navigation-area-icon {
|
|
|
|
grid-area: starting-anchor-element;
|
2024-08-02 22:53:20 +02:00
|
|
|
/* Horizontally center the icon in its allotted grid area. */
|
|
|
|
justify-self: center;
|
2023-10-11 19:08:42 +02:00
|
|
|
}
|
|
|
|
|
2023-11-08 20:33:55 +01:00
|
|
|
.left-sidebar-title {
|
2023-10-11 19:08:42 +02:00
|
|
|
grid-area: row-content;
|
|
|
|
}
|
|
|
|
|
|
|
|
#left-sidebar-navigation-list-condensed {
|
|
|
|
margin: 0;
|
|
|
|
grid-area: markers-and-controls;
|
|
|
|
}
|
|
|
|
|
|
|
|
.left-sidebar-navigation-menu-icon {
|
|
|
|
grid-area: ending-anchor-element;
|
|
|
|
/* Horizontally center vdots. */
|
|
|
|
justify-self: center;
|
|
|
|
/* Properly size vdots. */
|
|
|
|
font-size: 17px;
|
|
|
|
/* Occupy same clickable height as
|
|
|
|
other condensed-view icons */
|
|
|
|
height: 24px;
|
|
|
|
/* Vertically center dots with
|
|
|
|
flexbox. */
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
2023-10-16 21:21:44 +02:00
|
|
|
color: var(--color-left-sidebar-header-vdots-visible);
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
color: var(--color-vdots-hover);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.condensed-views-popover-menu {
|
|
|
|
.unread_count {
|
2024-06-13 09:32:26 +02:00
|
|
|
margin: 1px 0 0 6px;
|
2023-10-16 21:21:44 +02:00
|
|
|
border-color: var(--color-border-unread-counter-popover-menu);
|
2024-07-14 12:51:10 +02:00
|
|
|
width: max-content;
|
2023-10-11 19:08:42 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-09-25 19:03:22 +02:00
|
|
|
.subscription_block {
|
|
|
|
grid-template-columns:
|
2024-08-02 22:53:20 +02:00
|
|
|
var(--left-sidebar-toggle-width-offset) var(
|
|
|
|
--left-sidebar-icon-column-width
|
|
|
|
)
|
|
|
|
var(--left-sidebar-icon-content-gap) minmax(0, 1fr) minmax(
|
|
|
|
0,
|
|
|
|
max-content
|
|
|
|
)
|
2023-09-25 19:03:22 +02:00
|
|
|
30px 0;
|
|
|
|
white-space: nowrap;
|
|
|
|
|
|
|
|
.stream-privacy {
|
|
|
|
grid-area: starting-anchor-element;
|
2024-05-23 21:35:43 +02:00
|
|
|
display: flex;
|
2024-05-23 20:51:03 +02:00
|
|
|
place-content: center center;
|
2024-05-23 20:31:08 +02:00
|
|
|
|
|
|
|
.zulip-icon.zulip-icon-globe {
|
2024-05-23 20:51:03 +02:00
|
|
|
/* 12px at 14px/1em */
|
|
|
|
font-size: 0.8571em;
|
2024-05-23 20:31:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
.zulip-icon.zulip-icon-hashtag {
|
2024-05-23 20:51:03 +02:00
|
|
|
/* 13px at 14px/1em */
|
|
|
|
font-size: 0.9286em;
|
2024-05-23 20:31:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
.zulip-icon.zulip-icon-lock {
|
2024-05-23 20:51:03 +02:00
|
|
|
/* 13px at 14px/1em */
|
|
|
|
font-size: 0.9286em;
|
2024-05-23 20:31:08 +02:00
|
|
|
}
|
2023-09-25 19:03:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
.stream-name {
|
|
|
|
grid-area: row-content;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-05-17 22:08:42 +02:00
|
|
|
.topic-box,
|
|
|
|
.searching-for-more-topics {
|
2023-09-21 20:56:20 +02:00
|
|
|
grid-template-columns:
|
2024-08-02 22:53:20 +02:00
|
|
|
0 var(--left-sidebar-icon-column-width) var(
|
|
|
|
--left-sidebar-icon-content-gap
|
|
|
|
)
|
2024-06-28 19:00:44 +02:00
|
|
|
minmax(0, 1fr) minmax(0, max-content)
|
|
|
|
30px 0;
|
|
|
|
}
|
|
|
|
|
2024-08-14 19:00:34 +02:00
|
|
|
.searching-for-more-topics {
|
|
|
|
margin-left: var(--left-sidebar-toggle-width-offset);
|
|
|
|
height: var(--line-height-sidebar-row-prominent);
|
|
|
|
}
|
|
|
|
|
2024-06-28 19:00:44 +02:00
|
|
|
.topic_search_section {
|
|
|
|
grid-template-columns:
|
2024-08-02 22:53:20 +02:00
|
|
|
var(--left-sidebar-toggle-width-offset) 0 0 minmax(0, 1fr) minmax(
|
|
|
|
0,
|
|
|
|
max-content
|
|
|
|
)
|
2023-09-21 20:56:20 +02:00
|
|
|
30px 0;
|
2024-05-17 22:06:52 +02:00
|
|
|
}
|
2023-12-10 05:38:30 +01:00
|
|
|
|
2024-05-17 22:06:52 +02:00
|
|
|
.topic-box .zero_count {
|
|
|
|
display: none;
|
|
|
|
}
|
2023-12-10 05:38:30 +01:00
|
|
|
|
2024-05-17 22:06:52 +02:00
|
|
|
.sidebar-topic-name {
|
|
|
|
cursor: pointer;
|
|
|
|
grid-area: row-content;
|
2024-06-28 17:04:19 +02:00
|
|
|
padding: 0 var(--left-sidebar-before-unread-count-padding) 0 0;
|
2024-05-17 22:06:52 +02:00
|
|
|
/* TODO: Consolidate these styles with conversation partners and stream name
|
|
|
|
once grid rewrite is complete on all sidebar rows.
|
2023-09-21 20:56:20 +02:00
|
|
|
|
2024-05-17 22:06:52 +02:00
|
|
|
Also: note that these styles will be moot for topic names once we allow
|
|
|
|
for multiline topics. If we hold multiline topics to a certain number
|
|
|
|
of lines, we'll likely need a JavaScript-based solution like Clamp.js
|
|
|
|
to display an ellipsis on the final visible line. */
|
|
|
|
white-space: nowrap;
|
|
|
|
/* Both `hidden` and `clip` are shown for the sake
|
|
|
|
of older browsers that do not support `clip`. */
|
|
|
|
overflow-x: hidden;
|
|
|
|
overflow-x: clip;
|
|
|
|
text-overflow: ellipsis;
|
2024-06-21 17:21:09 +02:00
|
|
|
|
|
|
|
span.sidebar-topic-name-inner {
|
|
|
|
white-space: pre;
|
|
|
|
}
|
2017-07-20 04:46:01 +02:00
|
|
|
}
|
|
|
|
|
2024-06-28 19:00:44 +02:00
|
|
|
.topic-list-filter {
|
|
|
|
grid-area: row-content;
|
|
|
|
}
|
|
|
|
|
2024-05-17 22:08:42 +02:00
|
|
|
.searching-for-more-topics img {
|
|
|
|
height: 16px;
|
|
|
|
grid-area: row-content;
|
|
|
|
}
|
|
|
|
|
2021-07-01 10:19:59 +02:00
|
|
|
.sidebar-topic-check {
|
2023-09-21 20:56:20 +02:00
|
|
|
grid-area: starting-anchor-element;
|
2024-08-02 22:53:20 +02:00
|
|
|
justify-self: end;
|
2024-06-28 16:13:29 +02:00
|
|
|
/* 15px at 14px/1em */
|
|
|
|
font-size: 1.0714em;
|
2024-08-15 17:43:38 +02:00
|
|
|
/* Use background to mask part of grouping bracket. */
|
|
|
|
padding-left: 3px;
|
|
|
|
/* Keep background from affecting rounded corners on
|
|
|
|
.active-sub-filter by reducing the checkbox
|
|
|
|
line-height to match its font size. */
|
|
|
|
line-height: 1;
|
|
|
|
/* As a grid item, adjust the checkmark's z-index here so
|
|
|
|
that the background color appears above the grouping
|
|
|
|
bracket's bottom line. Its value must less than
|
|
|
|
the z-index set on the #streams_header selector. */
|
|
|
|
z-index: 1;
|
|
|
|
background-color: var(--color-background);
|
2021-07-01 10:19:59 +02:00
|
|
|
}
|
|
|
|
|
2023-09-25 19:03:22 +02:00
|
|
|
.stream-markers-and-controls,
|
2023-09-21 20:56:20 +02:00
|
|
|
.topic-markers-and-controls {
|
|
|
|
grid-area: markers-and-controls;
|
2023-09-21 21:40:53 +02:00
|
|
|
display: flex;
|
|
|
|
/* Present a uniform space between icons */
|
|
|
|
gap: 5px;
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
.unread_mention_info {
|
|
|
|
/* Unset margin in favor of flex gap. */
|
|
|
|
margin: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
/* Height is set here by the flexbox; this
|
|
|
|
decouples .unread_count from the app-wide
|
|
|
|
definition. */
|
|
|
|
height: auto;
|
|
|
|
}
|
2023-09-21 20:56:20 +02:00
|
|
|
}
|
|
|
|
|
2023-10-20 21:20:09 +02:00
|
|
|
.bottom_left_row .sidebar-menu-icon {
|
2023-09-21 20:56:20 +02:00
|
|
|
grid-area: ending-anchor-element;
|
|
|
|
}
|
|
|
|
|
2023-09-18 19:13:51 +02:00
|
|
|
.conversation-partners-list,
|
2023-01-31 09:53:46 +01:00
|
|
|
.stream-name {
|
2022-02-07 20:33:52 +01:00
|
|
|
white-space: nowrap;
|
2022-12-25 05:58:13 +01:00
|
|
|
overflow-x: hidden;
|
2022-12-14 23:21:38 +01:00
|
|
|
overflow-x: clip;
|
2016-11-05 20:23:40 +01:00
|
|
|
text-overflow: ellipsis;
|
2024-06-28 17:04:19 +02:00
|
|
|
padding: 0 var(--left-sidebar-before-unread-count-padding) 0 0;
|
2016-11-05 20:23:40 +01:00
|
|
|
}
|
|
|
|
|
2019-03-01 21:06:53 +01:00
|
|
|
/*
|
|
|
|
All of our left sidebar handlers use absolute
|
|
|
|
positioning. We should fix that.
|
|
|
|
*/
|
2023-10-25 01:23:26 +02:00
|
|
|
.bottom_left_row .sidebar-menu-icon,
|
|
|
|
.top_left_row .sidebar-menu-icon {
|
2016-10-28 07:12:32 +02:00
|
|
|
display: none;
|
2023-10-20 21:20:09 +02:00
|
|
|
width: 100%;
|
|
|
|
cursor: pointer;
|
|
|
|
/* Use a flex container to handle
|
|
|
|
icon centering within the grid area.
|
|
|
|
:hover actually sets the `display: flex`,
|
|
|
|
so it remains hidden otherwise. */
|
|
|
|
justify-content: center;
|
2023-09-15 18:29:22 +02:00
|
|
|
text-align: center;
|
2024-07-02 18:08:23 +02:00
|
|
|
/* Ensure icons are vertically aligned, in
|
|
|
|
case they appear in a grid definition,
|
|
|
|
like the nav rows, that use a different
|
|
|
|
centering regime for the row. */
|
|
|
|
align-self: center;
|
2023-10-20 21:20:09 +02:00
|
|
|
/* Set the icon size, which will be inherited
|
|
|
|
by .zulip-icon */
|
|
|
|
font-size: 17px;
|
2020-03-20 02:28:13 +01:00
|
|
|
|
|
|
|
/*
|
2020-06-16 07:10:28 +02:00
|
|
|
If you hover directly over the ellipsis itself,
|
2020-03-20 02:28:13 +01:00
|
|
|
show it in black.
|
|
|
|
*/
|
|
|
|
|
|
|
|
&:hover {
|
2023-09-15 18:29:22 +02:00
|
|
|
color: var(--color-vdots-hover);
|
2020-03-20 02:28:13 +01:00
|
|
|
}
|
2021-03-01 09:21:29 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
Hover does not work for touch-based devices like mobile phones.
|
2024-05-20 22:16:21 +02:00
|
|
|
Hence the icons does not appear, making the user unaware of its
|
2021-03-01 09:21:29 +01:00
|
|
|
presence on such devices. The following media property displays the
|
|
|
|
icon by default for such behaviour.
|
|
|
|
*/
|
|
|
|
|
|
|
|
@media (hover: none) {
|
2023-10-20 21:20:09 +02:00
|
|
|
display: flex;
|
2023-09-15 18:29:22 +02:00
|
|
|
/* Show dots on touchscreens in a less distracting,
|
|
|
|
lighter shade. */
|
|
|
|
color: var(--color-vdots-hint);
|
2021-03-01 09:21:29 +01:00
|
|
|
}
|
2020-03-20 20:09:10 +01:00
|
|
|
}
|
|
|
|
|
2019-03-01 21:06:53 +01:00
|
|
|
/*
|
2023-09-15 18:29:22 +02:00
|
|
|
When you hover over list items, we hover
|
|
|
|
the vdots in light gray.
|
|
|
|
|
|
|
|
The stream icon should always display when
|
|
|
|
any topic is hovered, which is why it gets
|
|
|
|
a more specific selector here.
|
2019-03-01 21:06:53 +01:00
|
|
|
*/
|
2023-09-15 18:29:22 +02:00
|
|
|
#stream_filters li:hover .stream-sidebar-menu-icon,
|
|
|
|
.top_left_row:hover .sidebar-menu-icon,
|
2023-11-06 13:45:02 +01:00
|
|
|
.bottom_left_row:hover .sidebar-menu-icon,
|
2024-03-18 14:45:29 +01:00
|
|
|
.app-main .column-left .left-sidebar .left_sidebar_menu_icon_visible {
|
2023-10-20 21:20:09 +02:00
|
|
|
/* We push against `display: none` with
|
|
|
|
`display: flex` because the sidebar vdots
|
|
|
|
all expect to be displayed as flex items
|
|
|
|
when visible. Their vertical alignment
|
|
|
|
depends on it, too. */
|
|
|
|
display: flex;
|
2023-09-15 18:29:22 +02:00
|
|
|
color: var(--color-vdots-visible);
|
|
|
|
|
|
|
|
/*
|
|
|
|
If you hover directly over the vdots icon,
|
|
|
|
show it in black.
|
|
|
|
*/
|
|
|
|
&:hover {
|
|
|
|
color: var(--color-vdots-hover);
|
|
|
|
}
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|
|
|
|
|
2019-03-01 21:06:53 +01:00
|
|
|
/*
|
2020-06-06 01:27:23 +02:00
|
|
|
For topic ellipsis-v(vertical 3 dots) we use a slightly smaller
|
2019-03-01 21:06:53 +01:00
|
|
|
font to show they're "lower" in the hierarchy,
|
|
|
|
which also affects it positioning.
|
|
|
|
*/
|
2023-10-20 21:20:09 +02:00
|
|
|
.topic-sidebar-menu-icon {
|
|
|
|
/* 0.9em, but with a pixel value because the
|
|
|
|
ordinary 17px vdots size is not inherited
|
|
|
|
here, so we can't express an em-value
|
|
|
|
directly. Pixels are easier to reason
|
|
|
|
about with icons, anyway. */
|
|
|
|
font-size: 15.3px;
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|
|
|
|
|
2016-11-05 19:34:47 +01:00
|
|
|
ul.topic-list {
|
2024-06-03 18:11:20 +02:00
|
|
|
line-height: var(--line-height-sidebar-row-prominent);
|
2016-10-28 07:12:32 +02:00
|
|
|
list-style-type: none;
|
|
|
|
font-weight: normal;
|
2017-04-17 22:19:47 +02:00
|
|
|
}
|
|
|
|
|
2024-08-30 19:01:52 +02:00
|
|
|
ul.topic-list.topic-list-has-topics::before {
|
2024-08-14 19:00:34 +02:00
|
|
|
content: " ";
|
|
|
|
display: block;
|
|
|
|
position: absolute;
|
|
|
|
/* 12px at 16px/1em */
|
|
|
|
top: 0.75em;
|
|
|
|
bottom: 0.75em;
|
|
|
|
left: 9px;
|
|
|
|
border: 1px solid var(--color-topic-indent-border);
|
|
|
|
border-right: 0;
|
|
|
|
border-radius: 9px 0 0 9px;
|
|
|
|
width: 6px;
|
|
|
|
pointer-events: none;
|
|
|
|
}
|
|
|
|
|
2024-08-30 19:01:52 +02:00
|
|
|
ul.topic-list.topic-list-has-topics::after {
|
2024-08-14 19:00:34 +02:00
|
|
|
content: " ";
|
|
|
|
display: block;
|
|
|
|
position: absolute;
|
|
|
|
/* -14px at 16px/1em */
|
|
|
|
top: -0.875em;
|
|
|
|
/* 12px at 16px/1em */
|
|
|
|
bottom: 0.75em;
|
|
|
|
left: 16px;
|
2024-08-15 17:43:38 +02:00
|
|
|
width: 12px;
|
2024-08-14 19:00:34 +02:00
|
|
|
border-bottom: 1px solid var(--color-topic-indent-border);
|
|
|
|
pointer-events: none;
|
|
|
|
}
|
|
|
|
|
2024-08-15 17:01:00 +02:00
|
|
|
ul.topic-list:has(.show-more-topics)::after {
|
|
|
|
/* When the show all topics control is displayed,
|
|
|
|
extend the bottom bracket. */
|
|
|
|
width: 18px;
|
|
|
|
}
|
|
|
|
|
2024-08-14 19:00:34 +02:00
|
|
|
/* The grouping border should not be shown
|
|
|
|
on zoomed-in views. */
|
|
|
|
.zoom-in .topic-list::before,
|
|
|
|
.zoom-in .topic-list::after {
|
|
|
|
border: 0;
|
|
|
|
}
|
|
|
|
|
2016-11-05 19:38:23 +01:00
|
|
|
li.topic-list-item {
|
2016-10-28 07:12:32 +02:00
|
|
|
position: relative;
|
2017-04-18 20:05:48 +02:00
|
|
|
padding-right: 5px;
|
2024-08-14 19:00:34 +02:00
|
|
|
margin-left: var(--left-sidebar-toggle-width-offset);
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|
|
|
|
|
2023-10-30 15:30:59 +01:00
|
|
|
.dm-box {
|
2024-08-02 22:53:20 +02:00
|
|
|
grid-template-columns:
|
|
|
|
var(--left-sidebar-toggle-width-offset) var(
|
|
|
|
--left-sidebar-icon-column-width
|
|
|
|
)
|
|
|
|
var(--left-sidebar-icon-content-gap) minmax(0, 1fr) minmax(
|
|
|
|
0,
|
|
|
|
max-content
|
|
|
|
)
|
|
|
|
30px 0;
|
2023-10-31 15:42:50 +01:00
|
|
|
|
|
|
|
.conversation-partners-icon {
|
|
|
|
grid-area: starting-anchor-element;
|
2023-11-09 00:35:32 +01:00
|
|
|
place-self: center;
|
2023-10-31 15:42:50 +01:00
|
|
|
}
|
2017-04-17 22:19:47 +02:00
|
|
|
|
2024-05-03 19:55:14 +02:00
|
|
|
.dm-name {
|
|
|
|
grid-area: row-content;
|
|
|
|
}
|
|
|
|
|
2020-03-20 02:53:55 +01:00
|
|
|
.user_circle {
|
2024-06-26 17:11:57 +02:00
|
|
|
width: var(--length-user-status-circle);
|
|
|
|
height: var(--length-user-status-circle);
|
2024-07-17 20:10:44 +02:00
|
|
|
|
|
|
|
@media screen and (resolution <= 1x) {
|
|
|
|
/* User circles appear to sag a bit on
|
|
|
|
low-resolution screens, so this fix
|
|
|
|
targets them without disrupting
|
|
|
|
line-height values that may become
|
|
|
|
important in multi-line DM groups, etc.
|
|
|
|
in the future. */
|
|
|
|
margin-top: -2.5px;
|
|
|
|
}
|
2020-03-20 02:53:55 +01:00
|
|
|
}
|
2023-04-11 14:43:49 +02:00
|
|
|
|
|
|
|
.zulip-icon.zulip-icon-bot {
|
2023-05-11 16:58:00 +02:00
|
|
|
font-size: 90%; /* Reduce the bulkiness of this icon */
|
2023-04-11 14:43:49 +02:00
|
|
|
}
|
2019-02-18 16:32:27 +01:00
|
|
|
|
2023-10-31 15:42:50 +01:00
|
|
|
.unread_count {
|
|
|
|
grid-area: markers-and-controls;
|
2023-10-31 16:23:17 +01:00
|
|
|
/* TODO: This is an alternative method
|
|
|
|
for presenting a 16px-tall unread
|
|
|
|
counter, regardless of context. This
|
|
|
|
method could be used app-wide once
|
|
|
|
all of the layout methods for presenting
|
|
|
|
unreads have been modernized.
|
|
|
|
|
|
|
|
Set the line-height to match the
|
|
|
|
font-size, so that the numerals sit in
|
|
|
|
a 12px box. */
|
|
|
|
line-height: 12px;
|
|
|
|
/* Use flexbox to vertically center
|
|
|
|
the 12px-high text node within the
|
|
|
|
16px-high unread box. */
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
2023-10-31 15:42:50 +01:00
|
|
|
}
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|
|
|
|
|
2024-06-06 10:35:51 +02:00
|
|
|
/* Since direct-messages-sticky-header also has the `input-append`
|
|
|
|
class accompanying it. The display property of that class will
|
|
|
|
overwrite display: none if we don't have a more specific CSS
|
|
|
|
rule. It will also overwrite `display: none` even if `.zoom-out`
|
|
|
|
properties are declared after the `.input-append` properties since
|
|
|
|
the latter is more specific. */
|
|
|
|
#direct-messages-sticky-header.zoom-out,
|
2020-03-19 20:16:59 +01:00
|
|
|
.zoom-out {
|
|
|
|
#topics_header {
|
|
|
|
display: none;
|
|
|
|
}
|
2022-09-13 13:15:57 +02:00
|
|
|
|
|
|
|
.zoom-out-hide {
|
|
|
|
display: none;
|
|
|
|
}
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|
|
|
|
|
2017-07-07 23:59:18 +02:00
|
|
|
#topics_header {
|
2022-10-27 14:04:02 +02:00
|
|
|
position: sticky;
|
|
|
|
top: 0;
|
|
|
|
z-index: 2;
|
2024-08-02 22:53:20 +02:00
|
|
|
grid-template-columns:
|
|
|
|
var(--left-sidebar-toggle-width-offset) 0 0 minmax(0, 1fr)
|
|
|
|
max-content 0 42px;
|
2024-05-31 22:58:45 +02:00
|
|
|
grid-template-rows: var(--line-height-sidebar-row-prominent);
|
2024-06-28 17:04:19 +02:00
|
|
|
padding-top: var(--left-sidebar-sections-vertical-gutter);
|
2023-03-20 22:08:47 +01:00
|
|
|
color: hsl(0deg 0% 43%);
|
2023-03-24 00:09:48 +01:00
|
|
|
background-color: var(--color-background);
|
2021-10-16 21:57:26 +02:00
|
|
|
|
2022-11-01 17:11:58 +01:00
|
|
|
.show-all-streams {
|
2023-11-20 23:32:51 +01:00
|
|
|
grid-area: row-content;
|
2020-03-19 20:16:59 +01:00
|
|
|
color: inherit;
|
|
|
|
text-decoration: none;
|
|
|
|
text-transform: uppercase;
|
|
|
|
}
|
2023-11-20 23:32:51 +01:00
|
|
|
|
|
|
|
.unread_count {
|
|
|
|
grid-area: markers-and-controls;
|
|
|
|
}
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#streams_header {
|
2024-08-02 22:53:20 +02:00
|
|
|
grid-template-columns:
|
|
|
|
var(--left-sidebar-toggle-width-offset) 0 0 minmax(0, 1fr)
|
|
|
|
minmax(17px, max-content) 30px var(--left-sidebar-right-margin);
|
2023-11-09 00:36:56 +01:00
|
|
|
/* Keep the stream-search area rows collapsed. */
|
2024-05-31 22:58:45 +02:00
|
|
|
grid-template-rows: var(--line-height-sidebar-row-prominent) 0 0;
|
2018-01-04 18:14:27 +01:00
|
|
|
cursor: pointer;
|
2024-08-02 22:53:20 +02:00
|
|
|
padding: var(--left-sidebar-sections-vertical-gutter) 0 3px 0;
|
2022-09-13 13:15:57 +02:00
|
|
|
position: sticky;
|
2023-11-20 19:16:32 +01:00
|
|
|
/* Keep sticky within SimpleBar context. */
|
|
|
|
top: 0;
|
2024-08-15 17:43:38 +02:00
|
|
|
z-index: 2;
|
2023-03-24 00:09:48 +01:00
|
|
|
background-color: var(--color-background);
|
2021-10-25 22:34:46 +02:00
|
|
|
|
2023-11-09 00:36:56 +01:00
|
|
|
&.showing-stream-search-section {
|
|
|
|
/* Open up the stream-search rows. The 10px
|
|
|
|
row maintains space with the streams list
|
|
|
|
below. */
|
2024-05-31 22:58:45 +02:00
|
|
|
grid-template-rows: var(--line-height-sidebar-row-prominent) 28px 10px;
|
2023-11-09 00:36:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
.left-sidebar-title {
|
|
|
|
grid-area: row-content;
|
|
|
|
}
|
|
|
|
|
|
|
|
.heading-markers-and-controls {
|
|
|
|
grid-area: markers-and-controls;
|
|
|
|
height: 100%;
|
2023-11-15 17:47:59 +01:00
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
grid-gap: 5px;
|
2023-11-09 00:36:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
#filter_streams_tooltip {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
2023-11-15 17:53:34 +01:00
|
|
|
width: var(--left-sidebar-header-icon-width);
|
2023-11-09 00:36:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
#add_streams_tooltip {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
2023-11-15 17:53:34 +01:00
|
|
|
width: var(--left-sidebar-header-icon-width);
|
2023-11-09 00:36:56 +01:00
|
|
|
}
|
|
|
|
|
2024-06-28 19:32:15 +02:00
|
|
|
.stream_search_section {
|
2023-11-09 00:36:56 +01:00
|
|
|
grid-area: filter-box;
|
|
|
|
display: flex;
|
|
|
|
justify-content: stretch;
|
|
|
|
/* Set an even line-height for better
|
|
|
|
vertical centering. */
|
|
|
|
line-height: 20px;
|
2023-06-28 09:10:12 +02:00
|
|
|
white-space: nowrap;
|
2021-10-25 22:34:46 +02:00
|
|
|
}
|
2023-11-29 18:58:29 +01:00
|
|
|
|
|
|
|
&.hide_unread_counts {
|
|
|
|
.unread_count,
|
|
|
|
.unread_count.hide,
|
|
|
|
.masked_unread_count {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* When an empty unread count is hidden,
|
|
|
|
hide the masked unread count, too. */
|
|
|
|
.unread_count.hide + .masked_unread_count {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.masked_unread_count {
|
|
|
|
display: block;
|
|
|
|
/* Hold space enough so single-digit
|
|
|
|
unreads don't shift on hover. */
|
|
|
|
margin: 0 3px;
|
|
|
|
}
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
.unread_count {
|
|
|
|
display: block;
|
|
|
|
}
|
|
|
|
|
|
|
|
.hide,
|
|
|
|
.masked_unread_count {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|
|
|
|
|
2024-06-06 10:35:51 +02:00
|
|
|
.stream_search_section,
|
|
|
|
.direct-messages-search-section {
|
|
|
|
.stream-list-filter,
|
|
|
|
.direct-messages-list-filter {
|
|
|
|
/* Use the border-box model so flex
|
|
|
|
can do its thing despite whatever
|
|
|
|
padding and border we specify. */
|
|
|
|
box-sizing: border-box;
|
|
|
|
flex: 1 0 100%;
|
|
|
|
/* Match the input height exactly
|
|
|
|
with the row height for a perfect
|
|
|
|
fit and better vertical alignment. */
|
|
|
|
height: 28px;
|
|
|
|
/* Pad the entire clear-button area,
|
|
|
|
so that input text does not bleed
|
|
|
|
into there. */
|
|
|
|
padding-right: 30px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.clear_search_button {
|
|
|
|
/* Use the border-box model so flex
|
|
|
|
can do its thing despite whatever
|
|
|
|
padding and border we specify. */
|
|
|
|
box-sizing: border-box;
|
|
|
|
/* Clear inherited positioning. */
|
|
|
|
position: static;
|
|
|
|
/* We're going to use flexbox, not
|
|
|
|
positioning, to get the clear button
|
|
|
|
over top of the input. This -30px
|
|
|
|
margin accomplishes that, in tandem
|
|
|
|
with the 30px width of this element,
|
|
|
|
which is shared with the ending
|
|
|
|
anchor element in left sidebar header
|
|
|
|
rows. */
|
|
|
|
width: 30px;
|
|
|
|
margin-left: -30px;
|
|
|
|
/* Flexbox respects z-index; this just
|
|
|
|
ensures the button remains over top
|
|
|
|
of the input. */
|
|
|
|
z-index: 1;
|
|
|
|
/* Make the button itself a flex container,
|
|
|
|
so we can perfectly center the X icon. */
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
/* Flexbox will pull the element open
|
|
|
|
to make a generous clickable area. */
|
|
|
|
padding: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-11-30 15:39:42 +01:00
|
|
|
/* Prepare an adjusted grid for the logged-out state,
|
|
|
|
one that reassigns the vdots space to markers and
|
|
|
|
controls. */
|
|
|
|
.spectator-view #streams_header {
|
2024-08-02 22:53:20 +02:00
|
|
|
grid-template-columns:
|
|
|
|
var(--left-sidebar-toggle-width-offset) 0 0 minmax(0, 1fr)
|
|
|
|
minmax(30px, max-content) 0 var(--left-sidebar-right-margin);
|
2023-11-30 15:39:42 +01:00
|
|
|
|
|
|
|
/* With markers and controls now sized the same
|
|
|
|
as the ordinary vdots area (but allowed to grow,
|
|
|
|
care of `minmax(30px, max-content)`, should
|
|
|
|
additional logged-out icons be added in the
|
|
|
|
future), let's center the icon in that area,
|
|
|
|
just like vdots would be. */
|
|
|
|
.heading-markers-and-controls {
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-02-20 21:32:14 +01:00
|
|
|
.streams_subheader {
|
|
|
|
font-size: 0.8em;
|
|
|
|
font-weight: normal;
|
2024-05-31 22:23:24 +02:00
|
|
|
/* 16px line-height at 0.8em (11.2px at 14px legacy em) */
|
|
|
|
line-height: 1.4286em;
|
2024-08-02 22:53:20 +02:00
|
|
|
padding-left: var(--left-sidebar-toggle-width-offset);
|
2022-02-20 21:32:14 +01:00
|
|
|
cursor: pointer;
|
|
|
|
text-align: center;
|
2024-07-19 21:43:15 +02:00
|
|
|
margin-right: var(--left-sidebar-right-margin);
|
2023-03-24 00:09:48 +01:00
|
|
|
color: hsl(240deg 10% 50%);
|
2022-02-20 21:32:14 +01:00
|
|
|
|
2024-07-25 21:13:15 +02:00
|
|
|
& .streams_subheader_name {
|
2022-02-20 21:32:14 +01:00
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
width: 100%;
|
|
|
|
left: 0.5em;
|
|
|
|
right: 0.5em;
|
|
|
|
opacity: 0.5;
|
|
|
|
}
|
|
|
|
|
2024-07-25 21:13:15 +02:00
|
|
|
& .streams_subheader_name::before,
|
|
|
|
.streams_subheader_name::after {
|
2022-02-20 21:32:14 +01:00
|
|
|
content: " ";
|
|
|
|
flex: 1 1;
|
|
|
|
vertical-align: middle;
|
|
|
|
margin: auto;
|
2023-03-24 00:09:48 +01:00
|
|
|
border: 0.5px solid hsl(240deg 10% 50%);
|
|
|
|
opacity: 0.2;
|
2022-02-20 21:32:14 +01:00
|
|
|
}
|
|
|
|
|
2024-07-25 21:13:15 +02:00
|
|
|
& .streams_subheader_name::before {
|
2022-02-20 21:32:14 +01:00
|
|
|
margin-right: 0.5em;
|
|
|
|
}
|
|
|
|
|
2024-07-25 21:13:15 +02:00
|
|
|
& .streams_subheader_name::after {
|
2022-02-20 21:32:14 +01:00
|
|
|
margin-left: 0.5em;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-05-25 08:18:45 +02:00
|
|
|
.stream-list-filter {
|
2021-10-25 22:34:46 +02:00
|
|
|
white-space: nowrap;
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
overflow: hidden;
|
2021-05-25 08:18:45 +02:00
|
|
|
}
|
|
|
|
|
2016-10-28 07:12:32 +02:00
|
|
|
.zero_count {
|
2018-01-29 06:16:21 +01:00
|
|
|
visibility: hidden;
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|
|
|
|
|
2023-05-19 22:31:46 +02:00
|
|
|
.zero-topic-unreads.show-more-topics .topic-box {
|
|
|
|
margin-right: 30px;
|
|
|
|
}
|
|
|
|
|
2020-03-20 00:05:50 +01:00
|
|
|
.zoom-in {
|
2022-10-27 14:04:02 +02:00
|
|
|
.narrow-filter > .bottom_left_row {
|
|
|
|
position: sticky;
|
2024-07-16 16:53:34 +02:00
|
|
|
top: calc(
|
|
|
|
var(--left-sidebar-sections-vertical-gutter) +
|
|
|
|
var(--line-height-sidebar-row-prominent)
|
|
|
|
);
|
2022-10-27 14:04:02 +02:00
|
|
|
z-index: 2;
|
|
|
|
padding-bottom: 1px;
|
2023-03-24 00:09:48 +01:00
|
|
|
background-color: var(--color-background);
|
2022-10-27 14:04:02 +02:00
|
|
|
}
|
|
|
|
|
2023-11-20 23:32:51 +01:00
|
|
|
#streams_header,
|
2022-11-01 04:08:36 +01:00
|
|
|
#subscribe-to-more-streams,
|
2020-03-20 00:05:50 +01:00
|
|
|
.show-more-topics {
|
|
|
|
display: none;
|
|
|
|
}
|
2021-10-16 21:57:26 +02:00
|
|
|
|
2023-10-30 16:11:34 +01:00
|
|
|
&.direct-messages-container ul.dm-list {
|
2024-06-28 17:04:19 +02:00
|
|
|
margin-bottom: var(--left-sidebar-bottom-scrolling-buffer);
|
2022-10-04 23:33:51 +02:00
|
|
|
}
|
|
|
|
|
2023-10-30 15:44:36 +01:00
|
|
|
#hide-more-direct-messages {
|
2024-07-03 15:13:38 +02:00
|
|
|
grid-template-columns: inherit;
|
|
|
|
grid-column: 1 / -1;
|
|
|
|
line-height: var(--line-height-sidebar-row);
|
2022-09-13 13:15:57 +02:00
|
|
|
text-decoration: none;
|
|
|
|
color: inherit;
|
2024-06-28 16:13:05 +02:00
|
|
|
/* 12px at 14px/1em */
|
2022-09-13 13:15:57 +02:00
|
|
|
|
2024-07-03 15:13:38 +02:00
|
|
|
.hide-more-direct-messages-text {
|
|
|
|
font-size: 0.8571em;
|
|
|
|
grid-area: row-content;
|
2022-09-13 13:15:57 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
&:hover {
|
2024-07-03 15:13:38 +02:00
|
|
|
background-color: hsl(120deg 12.3% 71.4% / 38%);
|
|
|
|
border-radius: 4px;
|
2022-09-13 13:15:57 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-06-06 10:35:51 +02:00
|
|
|
.direct-messages-search-section {
|
|
|
|
display: flex;
|
|
|
|
grid-column: row-content / markers-and-controls;
|
|
|
|
margin-top: 5px;
|
|
|
|
margin-bottom: 5px;
|
|
|
|
}
|
|
|
|
|
2020-03-20 00:05:50 +01:00
|
|
|
.zoom-in-hide {
|
|
|
|
display: none;
|
|
|
|
}
|
2022-09-13 13:15:57 +02:00
|
|
|
|
|
|
|
.zoom-in-sticky {
|
|
|
|
position: sticky;
|
|
|
|
top: 0;
|
|
|
|
z-index: 1;
|
|
|
|
}
|
2016-10-28 07:12:32 +02:00
|
|
|
}
|