#subs_page_loading_indicator { margin: 10px auto; } .member_list_loading_indicator, .subscriber_list_loading_indicator { margin: 10px auto; } .member_list_loading_indicator:empty, .subscriber_list_loading_indicator:empty { margin: 0; } .subscriptions div #response { overflow-wrap: break-word; } .subscription_settings .btn { border-radius: 2px; } .stream-email { font-family: "Source Code Pro", monospace; padding: 10px; font-size: 0.85rem; background-color: hsl(0deg 0% 98%); border: 1px solid hsl(0deg 0% 87%); border-radius: 4px; } .sp-preview { width: 20px; border: none; box-shadow: 0 0 1px hsl(0deg 0% 0%); } .sp-replacer { margin-right: 12px; border: none; box-shadow: 0 0 2px hsl(0deg 0% 0% / 80%); } .stream-email .email-address { display: block; margin: auto; word-wrap: break-word; word-break: break-all; white-space: normal; } .sub_setting_checkbox { display: flex; & .control-label-disabled label.checkbox + label { cursor: not-allowed; } } .mute-note { font-size: 90%; opacity: 0.5; } .hide-mute-note { display: none; } .sub_setting_control { display: inline-block; margin-right: 10px; } .create_user_group_plus_button, .create_stream_plus_button { font-size: 24px; font-weight: 400; position: relative; top: 2px; border: 1px solid hsl(0deg 0% 80%); border-radius: 5px; background-color: hsl(0deg 0% 100%); color: hsl(0deg 0% 0%); margin: 0 0 0 5px; height: 27px; &:hover { border: 1px solid hsl(0deg 0% 47%); } .create_button_plus_sign { position: relative; top: -5px; } } #create_user_group_description, #create_stream_description { width: calc(100% - 15px); } .user_group_creation_error, .stream_creation_error { display: none; margin-left: 2px; color: hsl(0deg 100% 50%); } /* TODO: Unify with settings.css definition */ h3.stream_setting_subsection_title, h3.user_group_setting_subsection_title { display: inline-block; font-size: 1.5em; font-weight: normal; line-height: 1.5; } h4.stream_setting_subsection_title { margin-bottom: 5px; } h4.stream_setting_subsection_title, h4.user_group_setting_subsection_title { display: inline-block; font-size: 1.35em; font-weight: normal; line-height: 1.5; } .member-list-box, .subscriber-list-box { text-align: center; border-left: 1px solid hsl(0deg 0% 87%); border-right: 1px solid hsl(0deg 0% 87%); border-radius: 4px; .member_list_container, .subscriber_list_container { position: relative; border-bottom: 1px solid var(--color-border-table-subscriber-list); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; max-height: var(--stream-subscriber-list-max-height); overflow: auto; text-align: left; -webkit-overflow-scrolling: touch; .member-list, .subscriber-list { width: 100%; margin: auto; & tbody { border-bottom: none; } & tr { & td, th { padding: 4px 0 4px 5px; vertical-align: middle; &:first-of-type { padding-left: 10px; } } } .subscriber_list_remove, .subgroup-list-remove { padding-right: 16px; display: inline-block; } & thead th { &:first-of-type { border-top-left-radius: 4px; } &:last-of-type { border-top-right-radius: 4px; } position: sticky; top: 0; z-index: 1; } .hidden-subscriber-email { font-style: italic; } th.user-remove-actions { min-width: 80px; } .strikethrough { text-decoration: line-through; } } } } .subscriber-name, .subscriber-email { padding: 5px; } .subscriber-email { margin-left: 20px; padding-right: 8px; } .subscriber_list_add, .member_list_add { width: 100%; margin: 0 0 10px; .user_group_subscription_request_result, .stream_subscription_request_result { & a { color: inherit; } } } .member-search, .subscriber-search { margin: 10px 0 0; .search { max-width: 160px; } @media (max-width: $ms_min) { float: none; display: flex; justify-content: flex-start; align-items: center; margin: 0 0 5px; } } .subscriber_list_add .form-inline, .member_list_add .form-inline { margin-bottom: 0; } .add_subscribers_container, .add_members_container { display: inline-flex; width: 100%; align-items: center; } .add_subscribers_container .add_subscriber_btn_wrapper, .add_members_container .add_member_btn_wrapper { padding-left: 5px; } .choose-subscribers-label { display: inline; } .remove-subscriber-form, .remove-subgroup-form { margin: 0; } #subscriptions h1 { font-size: 25px; font-weight: 300; padding-top: 40px; } .subscriptions-container .subscriptions-header .fa-chevron-left, .user-groups-container .user-groups-header .fa-chevron-left, #settings_overlay_container .settings-header.mobile .fa-chevron-left { position: relative; transform: translate(-50px, 0); opacity: 0; color: hsl(0deg 0% 67%); float: left; padding: 2px 10px; cursor: pointer; transition: none 0.3s ease; transition-property: opacity, transform; } .user-groups-container .user-groups-header.slide-left .fa-chevron-left, .subscriptions-container .subscriptions-header.slide-left .fa-chevron-left, #settings_overlay_container .settings-header.mobile.slide-left .fa-chevron-left { transform: translate(0, 0); opacity: 1; } .user-groups-container, .subscriptions-container { position: relative; height: 95%; border-radius: 4px; padding: 0; width: 97%; overflow: hidden; max-width: 1200px; max-height: var(--overlay-container-max-height); .list-toggler-container .tab-switcher .ind-tab { width: auto; } .user-groups-header, .subscriptions-header { padding: 12px; text-align: center; text-transform: uppercase; font-weight: 700; background-color: var(--color-background-modal-bar); border-bottom: 1px solid var(--color-border-modal-bar); .fa-chevron-left { display: none; } .user-groups-title, .subscriptions-title { display: inline-block; transform: translate(-13px, 0); } .exit { font-weight: 600; position: absolute; top: 10px; right: 10px; color: hsl(0deg 0% 67%); cursor: pointer; } } .exit-sign { position: relative; top: 1px; margin-left: 3px; font-size: 1.5rem; line-height: 1; font-weight: 600; cursor: pointer; } .left, .right { position: relative; display: inline-block; vertical-align: top; width: 50%; height: calc(100% - 45px); margin: 0 -2px; } .left .no-streams-to-show, .left .no-groups-to-show, .right .nothing-selected .create-stream-button-container, .right .nothing-selected .create-group-button-container { display: block; text-align: center; font-size: 1em; margin-left: 2em; margin-right: 2em; .settings-empty-option-text { color: hsl(0deg 0% 67%); } } .left .no-streams-to-show, .left .no-groups-to-show { margin-top: calc(45vh - 75px); } .right .nothing-selected { padding: 5px 5px 0; .stream-info-banner a, .group-info-banner a { color: inherit; } .create-stream-button-container { margin-top: calc(45vh - 128px); } .create-group-button-container { margin-top: calc(45vh - 134px); } } .left { border-right: 1px solid var(--color-border-modal-bar); .list-toggler-container { align-items: center; padding: 6px 8px; border-bottom: 1px solid var(--color-border-modal-bar); display: flex; justify-content: space-between; #add_new_subscription { position: relative; top: -2px; } } } .right { width: calc(50% + 1px); .nothing-selected .create_stream_button, .nothing-selected .create_user_group_button { padding: 6px 10px 8px; display: block; margin: 0 auto 10px; } .display-type { padding: 2px; text-align: center; font-weight: 600; border-bottom: 1px solid var(--color-border-modal-bar); & a { color: inherit; &:hover { color: inherit; text-decoration: none; } } &.preview::after { content: "Preview"; } &.preferences::after { content: "Preferences"; } .stream-info-title, .user-group-info-title { display: none; font-size: 1.5em; line-height: 1; margin: 9px; font-weight: 600; word-break: break-all; .large-icon { display: inline-block; .zulip-icon { font-size: 20px; position: relative; top: 3px; } } .zulip-icon-globe { font-size: 15px; } } } } & input[type="text"].small { border: 1px solid hsl(0deg 0% 80%); border-radius: 4px; padding: 3px; outline: none; color: hsl(0deg 0% 27%); text-align: center; &:focus { text-align: left; } &:valid { text-align: left; } } } #search_stream_name, #search_group_name { width: 100%; padding: 3px 5px; margin: 8px 0; margin-left: 10px; margin-right: -15px !important; display: inline-block; border-radius: 5px; box-shadow: none; padding-right: 20px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } .stream_name_search_section, .group_name_search_section { width: 100%; display: flex; flex-direction: row; justify-content: center; margin-bottom: 0; height: auto; border-bottom: 1px solid var(--color-border-modal-bar); } .user-groups-list, .streams-list { position: relative; overflow: auto; -webkit-overflow-scrolling: touch; height: calc(100% - 85px); width: 100%; } #clear_search_stream_name, #clear_search_group_name { right: 5px !important; margin-left: -1px; } #search_stream_name:placeholder-shown + #clear_search_stream_name { visibility: hidden; } .stream-title { font-size: 1.3em; font-weight: 400; } .user-group-creation-body, .stream-creation-body { & section { margin-bottom: 20px; } #announce-new-stream { margin: 20px auto; } } .stream-row, .group-row { padding: 15px 10px 11px; border-bottom: 1px solid var(--color-border-modal-bar); cursor: pointer; display: flex; .check { width: 25px; height: 25px; position: relative; margin-right: 12px; margin-top: 9px; background-size: 60% auto; background-repeat: no-repeat; background-position: center center; & svg { fill: hsl(0deg 0% 72%); width: 70%; margin: 0% 15%; } &.checked:hover svg { fill: hsl(240deg 41% 50%); } &.disabled { &:not(.checked) svg { fill: hsl(0deg 0% 87%); } svg { cursor: not-allowed; } } .sub_unsub_status, .join_leave_status { display: inline-block !important; height: auto !important; width: auto !important; .loading_indicator_spinner { width: 100%; height: 100%; margin: 0; } .loading_indicator_spinner svg path { fill: hsl(178deg 100% 40%); } } } .checked svg { fill: hsl(240deg 96% 68%); } .icon { width: 35px; height: 35px; margin-right: 12px; margin-top: 4px; background-color: hsl(300deg 100% 25%); border-radius: 4px; color: hsl(0deg 0% 100%); .symbol { font-weight: 600; font-size: 1.1em; } .hashtag { font-size: 1.4em; font-weight: 600; } } .sub-info-box, .group-info-box { width: calc(100% - 90px); margin-right: 4px; .top-bar, .bottom-bar { display: flex; justify-content: space-between; position: relative; } .top-bar .stream-name, .top-bar .group-name-wrapper, .bottom-bar .description { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-right: 12px; } .top-bar .subscriber-count, .bottom-bar .stream-message-count { white-space: nowrap; color: hsl(0deg 0% 67%); } .top-bar .subscriber-count-text, .top-bar .subscriber-count-lock, .bottom-bar .stream-message-count-text { margin-right: 5px; } .top-bar .stream-name, .top-bar .group-name-wrapper { font-weight: 600; } .bottom-bar { margin-top: 2px; line-height: 1.5; } } &.active { background-color: hsl(0deg 0% 93%); } .check:not(.checked, .disabled):hover svg, &.active .check:not(.checked, .disabled):hover svg { fill: hsl(0deg 0% 27%); } &::selection, .icon .hashtag::selection { background-color: transparent; } } .stream-row .sub-info-box .description:empty::after, .group-row .group-info-box .description:empty::after { content: attr(data-no-description); font-style: italic; color: hsl(0deg 0% 67%); } .subscriber_list_settings .add_subscribers_disabled, .member_list_settings .add_members_disabled { cursor: not-allowed; .pill-container { cursor: not-allowed; } } .subscriber_list_settings, .member_list_settings { & button[disabled] { pointer-events: none; } } .org-permissions-form, .group-permissions { .group_setting_disabled { cursor: not-allowed; /* This ensures that we do not see the not allowed cursor in the extra space of a div */ width: fit-content; /* This specific rules are needed to override the default settings of these elements */ .pill-container, .group-setting-label { cursor: not-allowed; } .pill-container { background-color: hsl(0deg 0% 93%); opacity: 0.7; .pill { .exit { display: none; } } .input { pointer-events: none; } } } } #groups_overlay, #subscription_overlay { .tab-switcher { display: flex; flex-wrap: nowrap; } #user-group-creation, #stream-creation { overflow: auto; outline: none; -webkit-overflow-scrolling: touch; .stream-creation-simplebar-container, .user-group-creation-simplebar-container { height: calc( var(--overlay-container-height) - var(--subscriptions-overlay-header-height) - var(--subscriptions-overlay-display-type-height) - var(--subscriptions-overlay-sticky-footer-height) ); max-height: calc( var(--overlay-container-max-height) - var(--subscriptions-overlay-header-height) - var(--subscriptions-overlay-display-type-height) - var(--subscriptions-overlay-sticky-footer-height) ); } .user-group-creation-body, .stream-creation-body { padding: 15px 15px 0; } .settings-sticky-footer { display: flex; justify-content: space-between; position: absolute; bottom: 0; width: calc(100% - 27px); padding: 9px 15px 15px; text-align: right; background-color: var(--color-background-modal-bar); border-top: 1px solid var(--color-border-modal-bar); } @media (width > $md_min) { .settings-sticky-footer { border-radius: 0 0 6px; } } .add_all_users_to_user_group { margin-left: 10px; } .add_all_users_to_stream { margin-left: 10px; /* same bottom margin as h4.stream_setting_subsection_title */ margin-bottom: 5px; } .create_user_group_member_list_header, .create_stream_subscriber_list_header { margin-top: 10px; margin-bottom: 3px; & h5 { display: inline-block; } } .add-user-list-filter { width: 140px; float: right; } #user_group_creation_form, #stream_creation_form { margin: 0; .user_group_create_info.show { margin: 5px; } #user_group_creating_indicator, #stream_creating_indicator { &:not(:empty) { position: absolute; width: 100% !important; height: calc(100% - 105px) !important; display: flex !important; justify-content: center; align-items: center; background-color: hsl(0deg 0% 100% / 90%); z-index: 1; } .loading_indicator_text { font-weight: 400; } } } } .inner-box { margin: 20px; } .group_settings_header, .stream_settings_header { white-space: nowrap; display: flex; margin-left: 15px; .tab-container { .ind-tab { padding: 3px 4px; min-width: 80px; width: auto; } } .button-group { padding-top: 5px; margin-left: auto; margin-right: 18px; .subscribe-button, .join_leave_button, #preview-stream-button, .deactivate { margin-right: 3px; text-decoration: none; } .deactivate { height: 100%; .icon-container { display: flex; } } } } .group-header, .stream-header { white-space: nowrap; padding-top: 10px; display: flex; align-items: center; .group-name-wrapper, .stream-name { position: relative; font-size: 1.5em; font-weight: 600; margin-left: -3px; margin-top: -5px; white-space: nowrap; max-width: 90%; flex: auto; min-width: 0; overflow-x: clip; text-overflow: ellipsis; .group-name, .sub-stream-name { display: block; width: 100%; overflow: hidden; text-overflow: ellipsis; } } .button-group { margin-left: auto; .deactivate { margin-right: 3px; text-decoration: none; } } .large-icon { display: inline-block; vertical-align: top; margin-right: 8px; margin-top: -5px; &.hash::after { top: -1px; font-size: 1.09em; font-weight: 700; } .zulip-icon { font-size: 18px; position: relative; top: 1px; } } .group_change_property_info, .stream_change_property_info { vertical-align: top; margin: 0 5px 0 0; } } .group-description-wrapper, .stream-description { word-break: break-all; margin-bottom: 5px; .no-description { font-style: italic; color: hsl(0deg 0% 67%); } } .checkmark { display: none; margin-left: 5px; color: hsl(0deg 0% 67%); cursor: pointer; &.show { display: block; } } .hash::after { position: relative; content: "#"; } .settings { position: relative; height: calc(100% - 45px); overflow-y: auto; -webkit-overflow-scrolling: touch; .tab-container { padding-top: 5px; } } .subscription_settings { display: none; position: relative; width: 100%; margin: 0 auto; border-radius: 4px; top: -1px; &.show { display: block; } } #personal-stream-settings { .stream_change_property_status { margin: 9px auto 3px 3px; } } .stream_details_box, .group_detail_box { > .stream_details_subsection, > .group_details_box_subsection { margin: 0 0 10px; /* mimic paragraph spacing */ } .stream_email_address_error { vertical-align: top; margin-left: 15px; } } .loading_indicator_text { font-weight: 400; line-height: 20px; } .subsection-parent .input-group { & input[type="checkbox"] { margin-top: 0; } &:last-of-type { border-bottom: none; } .sp-replacer { box-shadow: none; } & input[type="radio"] { margin-right: 5px; } .inline { display: inline !important; } } } div.settings-radio-input-parent { border-bottom: 1px solid hsl(0deg 0% 87%); margin: 2px 0 2px 5px; padding: 2px 0; &:last-of-type { border-bottom: none; } & label.radio { display: inline; margin: 5px; } & input { float: left; width: auto; cursor: pointer; margin: 3.5px 0 1px; &:focus { outline: 1px dotted hsl(0deg 0% 20%); outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } &:disabled { cursor: not-allowed; } } &.default_stream_private_tooltip { cursor: not-allowed; & label { pointer-events: none; } } } .stream-permissions, .stream-creation-body, .group-permissions { .input-group { margin-bottom: 10px; &.message-retention-setting-group { & input { width: 5ch; text-align: right; } } } .settings_select { /* Match with select elements in settings page */ min-width: 325px; max-width: 100%; height: 30px; } & select.stream_post_policy_setting { margin-bottom: 10px; } .dropdown-widget-button { /* Match the margin with other input groups around. */ margin-bottom: 20px; min-width: 325px; max-width: 100%; width: auto; height: 30px; } .default-stream { margin: 20px 0; width: fit-content; .inline { display: inline; } } } .group-permissions .pill-container { /* 319px + 2 * (2px padding) + 2 * (1px border) = 325px, which is the total width of dropdown widget buttons */ min-width: 319px; background-color: hsl(0deg 0% 100%); .input { flex-grow: 1; &:first-child:empty::before { opacity: 0.5; content: attr(data-placeholder); } } } .group-permissions .dropdown_widget_with_label_wrapper { display: inline-block; height: 30px; margin-bottom: 10px; } #stream-advanced-configurations { .dropdown-widget-button { color: hsl(0deg 0% 33%); } } #change_user_group_description, #change_stream_description { width: 100%; height: 80px; margin-bottom: 4px; box-sizing: border-box; } .stream-permissions .stream-message-retention-days-input input[type="text"] { border-radius: 5px; box-shadow: none; margin: 0; height: inherit; } @media (width < $lg_min) { .user-groups-container, .subscriptions-container { max-width: 95%; } #groups_overlay, #subscription_overlay { .left { width: 40%; } .right { width: calc(60% - 1px); } } } @media (width < $lg_min) { .subscriptions-container .left .list-toggler-container { flex-wrap: wrap; } .list-toggler-container { text-align: center; } #groups_overlay .group_settings_header, #subscription_overlay .stream_settings_header { flex-wrap: wrap; } } /* Note that this block has settings_page CSS as well, and thus needs to match the media queries in settings.css. Longer-term we should extract this logic two-column-overlay class to read more naturally. */ @media (width < $md_min) { .user-groups-container, .subscriptions-container { position: relative; overflow: hidden; .list-toggler-container { text-align: left; } .user-groups-header .fa-chevron-left, .subscriptions-header .fa-chevron-left { display: block; } } #groups_overlay .left, #groups_overlay .right, #subscription_overlay .left, #subscription_overlay .right, #settings_page .content-wrapper.right { position: absolute; display: block; margin: 0; width: 100%; height: calc(100% - 45px); border: none; } #groups_overlay .right, #subscription_overlay .right, #settings_page .content-wrapper.right { position: absolute; left: 101%; top: 45px; background-color: var(--color-background-modal); border-top: none; transition: left 0.3s ease; /* stylelint-disable-line plugin/no-low-performance-animation-properties */ z-index: 10; &.show { left: 0%; } } #groups_overlay { .display-type { display: none; } } #subscription_overlay, #groups_overlay { .user-groups-container, .subscriptions-container { height: 95%; } .settings { overflow: auto; -webkit-overflow-scrolling: touch; } } } @media (width < $sm_min) { #groups_overlay .user_group_settings_wrapper, #subscription_overlay .subscription_settings { .button-group { display: block; float: right; margin-top: 10px; } .group-header, .stream-header { .button-group { margin-top: -5px; } } .group_change_property_info, .stream_change_property_info { /* For small widths where there is not enough space to show alert beside stream name we set its display to block so it is shown in new line. But to avoid it covering whole screen width we set max-width so that it does not losses inline-block appearance. */ /* TODO: This will probably be not required once we have tabbed navigation as button group width will be smaller. */ display: block; max-width: max-content; white-space: nowrap; } .save-button-controls { display: block; margin: 0 0 10px; &.hide { display: none; } } } } @media (width <= 500px) { #groups_overlay, #subscription_overlay { .groups_settings_header, .stream_settings_header { display: block; text-align: center; margin-left: 0; .tab-container { .ind-tab { min-width: 85px; width: auto; } } } } }