mirror of
https://github.com/element-hq/element-web.git
synced 2024-12-19 01:01:56 +03:00
80c4c3c28c
* Refine styles of menus, toasts, popovers, and modals This is a reintroduction of https://github.com/matrix-org/matrix-react-sdk/pull/12247, with the difference that modal styles have now been refreshed as well. * Restore the fixed heights of some dialogs * Fix formatting and flaky screenshot
186 lines
5.4 KiB
Text
186 lines
5.4 KiB
Text
/*
|
|
Copyright 2020 - 2023 The Matrix.org Foundation C.I.C.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
/* A context menu that largely fits the | [icon] [label] | format. */
|
|
.mx_IconizedContextMenu {
|
|
min-width: 146px;
|
|
width: max-content;
|
|
/* override default ul styles */
|
|
margin: 0;
|
|
padding: 0;
|
|
|
|
.mx_IconizedContextMenu_optionList {
|
|
& > * {
|
|
padding-left: 20px;
|
|
padding-right: 20px;
|
|
}
|
|
|
|
.mx_IconizedContextMenu_optionList_label {
|
|
font-size: $font-15px;
|
|
font-weight: var(--cpd-font-weight-semibold);
|
|
}
|
|
|
|
/* the notFirst class is for cases where the optionList might be under a header of sorts. */
|
|
&:nth-child(n + 2),
|
|
.mx_IconizedContextMenu_optionList_notFirst {
|
|
border-top: var(--cpd-border-width-1) solid var(--cpd-color-gray-400);
|
|
}
|
|
|
|
/* round the top corners of the top button for the hover effect to be bounded */
|
|
&:first-child .mx_IconizedContextMenu_item:first-child {
|
|
border-radius: 8px 8px 0 0; /* radius matches .mx_ContextualMenu */
|
|
}
|
|
|
|
/* round the bottom corners of the bottom button for the hover effect to be bounded */
|
|
&:last-child .mx_IconizedContextMenu_item:last-child {
|
|
border-radius: 0 0 8px 8px; /* radius matches .mx_ContextualMenu */
|
|
}
|
|
|
|
/* round all corners of the only button for the hover effect to be bounded */
|
|
&:first-child:last-child .mx_IconizedContextMenu_item:first-child:last-child {
|
|
border-radius: 8px; /* radius matches .mx_ContextualMenu */
|
|
}
|
|
|
|
.mx_IconizedContextMenu_item {
|
|
/* pad the inside of the button so that the hover background is padded too */
|
|
padding-top: 12px;
|
|
padding-bottom: 12px;
|
|
text-decoration: none;
|
|
color: $primary-content;
|
|
font: var(--cpd-font-body-md-regular);
|
|
|
|
/* Create a flexbox to more easily define the list items */
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
&:hover,
|
|
&:focus-visible {
|
|
background-color: var(--cpd-color-bg-action-secondary-hovered);
|
|
}
|
|
|
|
&.mx_AccessibleButton_disabled {
|
|
opacity: 0.5;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
img,
|
|
.mx_IconizedContextMenu_icon {
|
|
/* icons */
|
|
width: 16px;
|
|
min-width: 16px;
|
|
max-width: 16px;
|
|
}
|
|
|
|
span.mx_IconizedContextMenu_label {
|
|
/* labels */
|
|
width: 100%;
|
|
flex: 1;
|
|
|
|
/* Ellipsize any text overflow */
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.mx_IconizedContextMenu_icon + .mx_IconizedContextMenu_label {
|
|
padding-left: 14px;
|
|
}
|
|
|
|
.mx_BetaCard_betaPill {
|
|
margin-left: 16px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.mx_IconizedContextMenu_icon {
|
|
position: relative;
|
|
width: 16px;
|
|
height: 16px;
|
|
|
|
&::before {
|
|
content: "";
|
|
width: inherit;
|
|
height: inherit;
|
|
position: absolute;
|
|
mask-position: center;
|
|
mask-size: contain;
|
|
mask-repeat: no-repeat;
|
|
background-color: var(--cpd-color-icon-primary);
|
|
}
|
|
}
|
|
|
|
.mx_IconizedContextMenu_optionList_red {
|
|
.mx_IconizedContextMenu_item {
|
|
color: $alert !important;
|
|
}
|
|
|
|
.mx_IconizedContextMenu_icon::before {
|
|
background-color: var(--cpd-color-icon-critical-primary);
|
|
}
|
|
}
|
|
|
|
.mx_IconizedContextMenu_option_red {
|
|
color: $alert !important;
|
|
|
|
.mx_IconizedContextMenu_icon::before {
|
|
background-color: $alert;
|
|
}
|
|
}
|
|
|
|
.mx_IconizedContextMenu_active {
|
|
&.mx_IconizedContextMenu_item,
|
|
.mx_IconizedContextMenu_item {
|
|
color: $accent !important;
|
|
}
|
|
|
|
.mx_IconizedContextMenu_icon::before {
|
|
background-color: $accent;
|
|
}
|
|
}
|
|
|
|
&.mx_IconizedContextMenu_compact {
|
|
.mx_IconizedContextMenu_optionList > * {
|
|
padding: 8px 16px 8px 12px;
|
|
}
|
|
}
|
|
|
|
.mx_IconizedContextMenu_checked,
|
|
.mx_IconizedContextMenu_unchecked {
|
|
margin-left: 16px;
|
|
margin-right: -5px;
|
|
}
|
|
|
|
.mx_IconizedContextMenu_developerTools::before {
|
|
mask-image: url("$(res)/img/element-icons/settings/flask.svg");
|
|
}
|
|
|
|
.mx_IconizedContextMenu_checked::before {
|
|
mask-image: url("$(res)/img/element-icons/roomlist/checkmark.svg");
|
|
}
|
|
|
|
.mx_IconizedContextMenu_unchecked::before {
|
|
content: unset;
|
|
}
|
|
|
|
.mx_IconizedContextMenu_sublabel {
|
|
margin-left: 20px;
|
|
color: $tertiary-content;
|
|
}
|
|
}
|
|
|
|
.mx_IconizedContextMenu_item.mx_IconizedContextMenu_itemDestructive {
|
|
color: $alert !important;
|
|
}
|