638 lines
12 KiB
SCSS
638 lines
12 KiB
SCSS
/**
|
|
* @license GNU AGPL version 3 or any later version
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Affero General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#header {
|
|
.cm-opener {
|
|
margin-left: 0px;
|
|
margin-top: 0px;
|
|
}
|
|
}
|
|
|
|
.app-menu {
|
|
visibility: hidden;
|
|
}
|
|
|
|
.cm {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
height: 100vh;
|
|
width: 100%;
|
|
max-width: 290px;
|
|
background: linear-gradient(90deg, var(--side-menu-background-color, #333) 0%, var(--side-menu-background-color-to, #333) 100%);
|
|
z-index: 3000;
|
|
color: var(--side-menu-text-color, #fff);
|
|
box-shadow:
|
|
rgba(0, 0, 0, 0.22) 0px 25.6px 57.6px 0px,
|
|
rgba(0, 0, 0, 0.18) 0px 4.8px 14.4px 0px;
|
|
display: none;
|
|
|
|
&-opener {
|
|
background: var(--side-menu-opener, url('../../img/side-menu-opener.svg'));
|
|
background-color: transparent !important;
|
|
height: 40px !important;
|
|
width: 40px !important;
|
|
border-radius: 0 !important;
|
|
border: 0 !important;
|
|
padding-right: 12px !important;
|
|
padding-left: 12px !important;
|
|
margin-top: 1px !important;
|
|
margin-left: 5px !important;
|
|
margin-left: 3px !important;
|
|
overflow: hidden;
|
|
|
|
span {
|
|
position: relative;
|
|
left: 50px;
|
|
display: block;
|
|
width: 1px;
|
|
height: 1px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
&:active,
|
|
&:focus {
|
|
background-color: var(--side-menu-current-app-background-color, #444) !important;
|
|
}
|
|
}
|
|
|
|
&-closer {
|
|
background: url('../../img/side-menu-opener-closer.svg');
|
|
display: none;
|
|
}
|
|
|
|
a {
|
|
transition: 0.2s;
|
|
}
|
|
|
|
&-categories-wrapper {
|
|
padding-bottom: 70px;
|
|
}
|
|
|
|
&-search {
|
|
float: right;
|
|
|
|
input {
|
|
background: none;
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: var(--side-menu-text-color);
|
|
|
|
&::placeholder {
|
|
color: var(--side-menu-text-color);
|
|
}
|
|
}
|
|
}
|
|
|
|
&-categories {
|
|
max-height: calc(100vh - 55px);
|
|
overflow: auto;
|
|
position: relative;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: center;
|
|
padding: 0 10% 0 10%;
|
|
}
|
|
|
|
&-category {
|
|
padding: 10px 20px;
|
|
flex: 1 1 auto;
|
|
|
|
&-title {
|
|
padding-left: 10px;
|
|
color: var(--side-menu-text-color, #fff);
|
|
font-weight: bold;
|
|
font-size: 20px;
|
|
margin-bottom: 12px;
|
|
line-height: 30px;
|
|
margin-top: 0;
|
|
}
|
|
}
|
|
|
|
&-header {
|
|
width: 100%;
|
|
z-index: 2300;
|
|
max-width: 290px;
|
|
padding-top: 2px;
|
|
top: 0;
|
|
|
|
&::after {
|
|
content: ' ';
|
|
display: block;
|
|
clear: both;
|
|
}
|
|
}
|
|
|
|
&-loader {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
z-index: 3001;
|
|
|
|
&-bar {
|
|
height: 4px;
|
|
background: var(--side-menu-loader-color, #0e75ac);
|
|
width: 0;
|
|
transition-property: width;
|
|
}
|
|
}
|
|
|
|
&-apps {
|
|
height: calc(100vh - 49px);
|
|
top: 49px;
|
|
z-index: 2200;
|
|
position: fixed;
|
|
width: 100%;
|
|
max-width: 290px;
|
|
overflow: auto;
|
|
|
|
&.side-menu-apps-list--with-logo {
|
|
height: calc(100vh - 160px);
|
|
top: 160px;
|
|
}
|
|
}
|
|
|
|
&-app {
|
|
a {
|
|
line-height: 30px;
|
|
color: var(--side-menu-text-color, #fff);
|
|
display: block;
|
|
padding: 7px 0 5px 13px;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
a:hover,
|
|
a:focus,
|
|
&:active,
|
|
&.active {
|
|
background: var(--side-menu-current-app-background-color, #444);
|
|
}
|
|
|
|
&-icon {
|
|
width: 20px;
|
|
vertical-align: middle;
|
|
margin-top: -4px;
|
|
margin-right: 10px;
|
|
filter: invert(var(--side-menu-icon-invert-filter, 0%));
|
|
opacity: var(--side-menu-icon-opacity, 1);
|
|
}
|
|
}
|
|
|
|
&-setting {
|
|
margin-right: 9px;
|
|
margin-top: 2px;
|
|
float: right;
|
|
line-height: 34px;
|
|
height: 42px;
|
|
display: none;
|
|
|
|
a {
|
|
color: var(--side-menu-text-color, #fff);
|
|
display: block;
|
|
padding: 4px 7px;
|
|
}
|
|
|
|
&:hover a,
|
|
a:active,
|
|
a:focus {
|
|
background: var(--side-menu-current-app-background-color, #444);
|
|
}
|
|
|
|
img {
|
|
vertical-align: bottom;
|
|
margin-left: 3px;
|
|
width: 32px;
|
|
height: 32px;
|
|
}
|
|
}
|
|
|
|
&.open {
|
|
display: block;
|
|
|
|
.cm-setting {
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
&-logo {
|
|
text-align: center;
|
|
clear: both;
|
|
|
|
img {
|
|
max-width: 60%;
|
|
max-height: 100px;
|
|
}
|
|
}
|
|
|
|
&--topwidemenu {
|
|
max-width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
&--sidemenuwithcategories {
|
|
max-width: 290px;
|
|
height: 100vh;
|
|
|
|
.cm-categories {
|
|
display: block;
|
|
padding: 0;
|
|
width: 100%;
|
|
}
|
|
|
|
.cm-category {
|
|
padding: 10px 0;
|
|
}
|
|
|
|
.cm-header {
|
|
max-width: 295px;
|
|
}
|
|
}
|
|
|
|
&.cm--topwidemenu,
|
|
&.cm--sidemenuwithcategories {
|
|
.cm-apps {
|
|
height: auto !important;
|
|
position: static !important;
|
|
max-width: 100vw !important;
|
|
overflow: auto !important;
|
|
}
|
|
|
|
.cm-app {
|
|
a {
|
|
padding: 7px 0 7px 7px;
|
|
}
|
|
|
|
&-icon {
|
|
vertical-align: middle;
|
|
margin-top: -2px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.cm-always-displayed {
|
|
body {
|
|
width: calc(100% - 50px) !important;
|
|
position: absolute;
|
|
left: 50px;
|
|
}
|
|
|
|
#header {
|
|
position: absolute !important;
|
|
|
|
.cm-opener {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
.cm {
|
|
display: block;
|
|
width: 50px;
|
|
|
|
&-apps {
|
|
height: calc(100vh - 49px);
|
|
width: 50px;
|
|
top: 49px;
|
|
|
|
&:hover {
|
|
overflow: auto;
|
|
}
|
|
}
|
|
|
|
&-header {
|
|
height: 49px;
|
|
width: 50px;
|
|
}
|
|
|
|
&-logo {
|
|
display: none;
|
|
}
|
|
|
|
&-app {
|
|
&-text {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
&.open {
|
|
width: 100%;
|
|
max-width: 290px;
|
|
|
|
.cm-apps {
|
|
width: 100%;
|
|
}
|
|
|
|
.cm-app {
|
|
&-text {
|
|
display: inline;
|
|
}
|
|
}
|
|
|
|
.cm-header {
|
|
width: 100%;
|
|
}
|
|
}
|
|
}
|
|
|
|
.app-navigation-toggle-wrapper {
|
|
right: 0 !important;
|
|
margin-left: 0 !important;
|
|
}
|
|
|
|
#content {
|
|
left: 53px;
|
|
width: calc(100% - (var(--body-container-margin) * 2) - 62px);
|
|
}
|
|
|
|
#content-vue {
|
|
width: calc(100% - (var(--body-container-margin) * 2) - 60px);
|
|
margin-left: 11px;
|
|
}
|
|
}
|
|
|
|
@media screen and (max-width: 1024px) {
|
|
.cm {
|
|
&--topwidemenu {
|
|
max-width: 290px;
|
|
height: 100vh;
|
|
|
|
.cm-header {
|
|
max-width: 100%;
|
|
}
|
|
}
|
|
|
|
&-categories {
|
|
display: block;
|
|
padding: 0;
|
|
}
|
|
|
|
&-category {
|
|
padding: 10px 0;
|
|
}
|
|
}
|
|
|
|
#header {
|
|
.unified-search-input {
|
|
width: 80px !important;
|
|
|
|
.unified-search-input__label {
|
|
display: none;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@media screen and (min-width: 1024px) {
|
|
.cm {
|
|
&--topwidemenu {
|
|
.cm-header {
|
|
max-width: 100%;
|
|
}
|
|
}
|
|
|
|
&-closer {
|
|
display: block;
|
|
float: right;
|
|
margin-right: 9px;
|
|
}
|
|
}
|
|
}
|
|
|
|
$header-icon-size: 20px;
|
|
|
|
.cm-standardmenu {
|
|
visibility: hidden;
|
|
width: 100%;
|
|
display: flex;
|
|
flex-shrink: 1;
|
|
flex-wrap: wrap;
|
|
|
|
&.show {
|
|
visibility: visible;
|
|
}
|
|
|
|
svg {
|
|
color: var(--color-background-plain-text) !important;
|
|
}
|
|
|
|
.app-menu-entry--label {
|
|
color: var(--color-background-plain-text) !important;
|
|
filter: var(--background-image-invert-if-bright, var(--primary-invert-if-bright)) !important;
|
|
}
|
|
|
|
.app-menu-main {
|
|
display: flex;
|
|
flex-wrap: nowrap;
|
|
|
|
.app-menu-entry {
|
|
width: 50px;
|
|
height: 50px;
|
|
position: relative;
|
|
display: flex;
|
|
|
|
&.app-menu-entry__active {
|
|
opacity: 1;
|
|
|
|
&::before {
|
|
content: ' ';
|
|
position: absolute;
|
|
pointer-events: none;
|
|
border-bottom-color: var(--color-main-background);
|
|
transform: translateX(-50%);
|
|
width: 12px;
|
|
height: 5px;
|
|
border-radius: 3px;
|
|
background-color: var(--color-primary-text);
|
|
left: 50%;
|
|
bottom: 6px;
|
|
display: block;
|
|
transition: all 0.1s ease-in-out;
|
|
opacity: 1;
|
|
}
|
|
|
|
.app-menu-entry--label {
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
|
|
a {
|
|
width: calc(100% - 4px);
|
|
height: calc(100% - 4px);
|
|
margin: 2px;
|
|
color: var(--color-primary-text);
|
|
position: relative;
|
|
}
|
|
|
|
img {
|
|
transition: margin 0.1s ease-in-out;
|
|
width: $header-icon-size;
|
|
height: $header-icon-size;
|
|
padding: calc((100% - $header-icon-size) / 2);
|
|
box-sizing: content-box;
|
|
filter: var(--background-image-invert-if-bright, var(--primary-invert-if-bright));
|
|
}
|
|
|
|
.app-menu-entry--label {
|
|
opacity: 0;
|
|
position: absolute;
|
|
font-size: 12px;
|
|
color: var(--color-primary-text);
|
|
text-align: center;
|
|
left: 50%;
|
|
top: 55%;
|
|
display: block;
|
|
min-width: 100%;
|
|
transform: translateX(-50%);
|
|
transition: all 0.1s ease-in-out;
|
|
width: 100%;
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
letter-spacing: -0.5px;
|
|
}
|
|
|
|
&:not(.app-menu-entry__hidden-label):not(.app-menu-entry__show-hovered):hover,
|
|
&:not(.app-menu-entry__hidden-label):not(.app-menu-entry__show-hovered):focus-within {
|
|
opacity: 1;
|
|
.app-menu-entry--label {
|
|
opacity: 1;
|
|
font-weight: bolder;
|
|
bottom: 0;
|
|
width: 100%;
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Show labels
|
|
&:hover,
|
|
&:focus-within,
|
|
.app-menu-entry:hover,
|
|
.app-menu-entry:focus {
|
|
opacity: 1;
|
|
}
|
|
|
|
&:not(.app-menu-main__hidden-label):not(.app-menu-main__show-hovered):hover,
|
|
&:not(.app-menu-main__hidden-label):not(.app-menu-main__show-hovered):focus-within,
|
|
.app-menu-entry:not(.app-menu-entry__hidden-label):hover,
|
|
.app-menu-entry:not(.app-menu-entry__hidden-label):focus {
|
|
opacity: 1;
|
|
|
|
img {
|
|
margin-top: -8px;
|
|
}
|
|
|
|
.app-menu-entry--label {
|
|
opacity: 1;
|
|
bottom: 0;
|
|
}
|
|
|
|
&::before,
|
|
.app-menu-entry::before {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
&.app-menu-main__show-hovered .app-menu-entry:hover,
|
|
&.app-menu-main__show-hovered .app-menu-entry:focus {
|
|
img {
|
|
margin-top: -8px;
|
|
}
|
|
|
|
.app-menu-entry--label {
|
|
opacity: 1;
|
|
bottom: 0;
|
|
}
|
|
|
|
&::before,
|
|
.app-menu-entry::before {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
&-app-menu-more {
|
|
padding-top: 9px !important;
|
|
|
|
.button-vue--vue-tertiary {
|
|
opacity: 0.7;
|
|
margin: 8px 3px 3px 3px;
|
|
filter: var(--background-image-invert-if-bright, var(--primary-invert-if-bright));
|
|
|
|
&:not([aria-expanded='true']) {
|
|
color: var(--color-main-text);
|
|
|
|
&:hover {
|
|
opacity: 1;
|
|
background-color: transparent !important;
|
|
}
|
|
}
|
|
|
|
&:focus-visible {
|
|
opacity: 1;
|
|
outline: none !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
&-app-menu-popover-entry {
|
|
.app-icon {
|
|
position: relative;
|
|
height: 35px;
|
|
width: 40px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
filter: var(--background-invert-if-bright, var(--primary-invert-if-bright));
|
|
|
|
&.has-unread::after {
|
|
background-color: var(--color-main-text);
|
|
}
|
|
|
|
img {
|
|
width: $header-icon-size;
|
|
height: $header-icon-size;
|
|
}
|
|
}
|
|
}
|
|
|
|
.has-unread::after {
|
|
content: '';
|
|
width: 8px;
|
|
height: 8px;
|
|
background-color: var(--color-primary-element-text);
|
|
border-radius: 50%;
|
|
position: absolute;
|
|
display: block;
|
|
top: 10px;
|
|
right: 10px;
|
|
}
|
|
|
|
.unread-counter {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
#header {
|
|
.unified-search-input:not(.unified-search-input--mobile) {
|
|
position: unset !important;
|
|
}
|
|
}
|