You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nextcloud/core/css/header.css

645 lines
17 KiB
CSS

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

@charset "UTF-8";
/**
* @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
*
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
*
* @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/>.
*
*/
/**
* @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
* @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
* @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
* @copyright Copyright (c) 2016, Jos Poortvliet <jos@opensuse.org>
* @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>
* @copyright Copyright (c) 2016, jowi <sjw@gmx.ch>
* @copyright Copyright (c) 2015, Hendrik Leppelsack <hendrik@leppelsack.de>
* @copyright Copyright (c) 2015, Volker E <volker.e@temporaer.net>
* @copyright Copyright (c) 2014-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
*
* @license GNU AGPL version 3 or any later version
*
*/
/* prevent ugly selection effect on accidental selection */
#header,
#navigation,
#expanddiv {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
}
/* removed until content-focusing issue is fixed */
#skip-to-content a {
position: absolute;
left: -10000px;
top: auto;
width: 1px;
height: 1px;
overflow: hidden;
}
#skip-to-content a:focus {
left: 76px;
top: -9px;
color: var(--color-primary-text);
width: auto;
height: auto;
}
/* HEADERS ------------------------------------------------------------------ */
#body-user #header,
#body-settings #header,
#body-public #header {
display: inline-flex;
position: fixed;
top: 0;
width: 100%;
z-index: 2000;
height: 50px;
background-color: var(--color-primary);
background-image: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-element-light) 100%);
box-sizing: border-box;
justify-content: space-between;
}
/* LOGO and APP NAME -------------------------------------------------------- */
#nextcloud {
padding: 7px 0;
padding-left: 86px;
position: relative;
height: 100%;
box-sizing: border-box;
opacity: 1;
align-items: center;
display: flex;
flex-wrap: wrap;
overflow: hidden;
}
#nextcloud:focus {
opacity: 0.75;
}
#nextcloud:hover, #nextcloud:active {
opacity: 1;
}
#header {
/* Header menu */
/* show caret indicator next to logo to make clear it is tappable */
/* Right header standard */
}
#header .header-left > nav > .menu,
#header .header-right > div > .menu {
background-color: var(--color-main-background);
filter: drop-shadow(0 1px 5px var(--color-box-shadow));
border-radius: 0 0 var(--border-radius) var(--border-radius);
box-sizing: border-box;
z-index: 2000;
position: absolute;
max-width: 350px;
min-height: 66px;
max-height: calc(100vh - 50px * 4);
right: 5px;
top: 50px;
margin: 0;
/* Dropdown arrow */
/* Use by the apps menu and the settings right menu */
}
#header .header-left > nav > .menu:not(.popovermenu),
#header .header-right > div > .menu:not(.popovermenu) {
display: none;
}
#header .header-left > nav > .menu:after,
#header .header-right > div > .menu:after {
border: 10px solid transparent;
border-bottom-color: var(--color-main-background);
bottom: 100%;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
right: 10px;
}
#header .header-left > nav > .menu #apps > ul, #header .header-left > nav > .menu > div, #header .header-left > nav > .menu > ul,
#header .header-right > div > .menu #apps > ul,
#header .header-right > div > .menu > div,
#header .header-right > div > .menu > ul {
overflow-y: auto;
-webkit-overflow-scrolling: touch;
min-height: 66px;
max-height: calc(100vh - 50px * 4);
}
#header .header-left > nav > .menu #apps > ul li a, #header .header-left > nav > .menu.settings-menu > ul li a,
#header .header-right > div > .menu #apps > ul li a,
#header .header-right > div > .menu.settings-menu > ul li a {
display: inline-flex;
align-items: center;
height: 44px;
color: var(--color-main-text);
padding: 10px 12px;
box-sizing: border-box;
white-space: nowrap;
position: relative;
width: 100%;
}
#header .header-left > nav > .menu #apps > ul li a:hover, #header .header-left > nav > .menu #apps > ul li a:focus, #header .header-left > nav > .menu.settings-menu > ul li a:hover, #header .header-left > nav > .menu.settings-menu > ul li a:focus,
#header .header-right > div > .menu #apps > ul li a:hover,
#header .header-right > div > .menu #apps > ul li a:focus,
#header .header-right > div > .menu.settings-menu > ul li a:hover,
#header .header-right > div > .menu.settings-menu > ul li a:focus {
background-color: var(--color-background-hover);
}
#header .header-left > nav > .menu #apps > ul li a:active, #header .header-left > nav > .menu #apps > ul li a.active, #header .header-left > nav > .menu.settings-menu > ul li a:active, #header .header-left > nav > .menu.settings-menu > ul li a.active,
#header .header-right > div > .menu #apps > ul li a:active,
#header .header-right > div > .menu #apps > ul li a.active,
#header .header-right > div > .menu.settings-menu > ul li a:active,
#header .header-right > div > .menu.settings-menu > ul li a.active {
background-color: var(--color-primary-light);
}
#header .header-left > nav > .menu #apps > ul li a span, #header .header-left > nav > .menu.settings-menu > ul li a span,
#header .header-right > div > .menu #apps > ul li a span,
#header .header-right > div > .menu.settings-menu > ul li a span {
display: inline-block;
padding-bottom: 0;
color: var(--color-main-text);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 110px;
}
#header .header-left > nav > .menu #apps > ul li a .icon-loading-small, #header .header-left > nav > .menu.settings-menu > ul li a .icon-loading-small,
#header .header-right > div > .menu #apps > ul li a .icon-loading-small,
#header .header-right > div > .menu.settings-menu > ul li a .icon-loading-small {
margin-right: 10px;
background-size: 16px 16px;
}
#header .header-left > nav > .menu #apps > ul li a img,
#header .header-left > nav > .menu #apps > ul li a svg, #header .header-left > nav > .menu.settings-menu > ul li a img,
#header .header-left > nav > .menu.settings-menu > ul li a svg,
#header .header-right > div > .menu #apps > ul li a img,
#header .header-right > div > .menu #apps > ul li a svg,
#header .header-right > div > .menu.settings-menu > ul li a img,
#header .header-right > div > .menu.settings-menu > ul li a svg {
opacity: 0.7;
margin-right: 10px;
height: 16px;
width: 16px;
filter: var(--background-invert-if-dark);
}
#header .logo {
display: inline-flex;
background-image: var(--image-logoheader, var(--image-logo, url("../img/logo/logo.svg")));
background-repeat: no-repeat;
background-size: contain;
background-position: center;
width: 62px;
position: absolute;
left: 12px;
top: 1px;
bottom: 1px;
filter: var(--image-logoheader-custom, var(--primary-invert-if-bright));
}
#header .header-appname-container {
display: none;
padding-right: 10px;
flex-shrink: 0;
}
#header .icon-caret {
display: inline-block;
width: 12px;
height: 12px;
margin: 0;
margin-top: -21px;
padding: 0;
vertical-align: middle;
}
#header #header-left, #header .header-left,
#header #header-right, #header .header-right {
display: inline-flex;
align-items: center;
}
#header #header-left, #header .header-left {
flex: 1 0;
white-space: nowrap;
min-width: 0;
}
#header #header-right, #header .header-right {
justify-content: flex-end;
flex-shrink: 1;
}
#header .header-right > div,
#header .header-right > form {
height: 100%;
position: relative;
}
#header .header-right > div > .menutoggle,
#header .header-right > form > .menutoggle {
display: flex;
justify-content: center;
align-items: center;
width: 50px;
height: 100%;
cursor: pointer;
opacity: 0.6;
padding: 0;
margin: 0;
}
/* hover effect for app switcher label */
.header-appname-container .header-appname {
opacity: 0.75;
}
.menutoggle .icon-caret {
opacity: 0.75;
}
.menutoggle:hover .header-appname, .menutoggle:hover .icon-caret {
opacity: 1;
}
.menutoggle:focus .header-appname, .menutoggle:focus .icon-caret {
opacity: 1;
}
.menutoggle.active .header-appname, .menutoggle.active .icon-caret {
opacity: 1;
}
/* TODO: move into minimal css file for public shared template */
/* only used for public share pages now as we have the app icons when logged in */
.header-appname {
color: var(--color-primary-text);
font-size: 16px;
font-weight: bold;
margin: 0;
padding: 0;
padding-right: 5px;
overflow: hidden;
text-overflow: ellipsis;
flex: 1 1 100%;
}
.header-shared-by {
color: var(--color-primary-text);
position: relative;
font-weight: 300;
font-size: 11px;
line-height: 11px;
overflow: hidden;
text-overflow: ellipsis;
}
/* do not show menu toggle on public share links as there is no menu */
#body-public #header .icon-caret {
display: none;
}
/* NAVIGATION --------------------------------------------------------------- */
nav[role=navigation] {
display: inline-block;
width: 50px;
height: 50px;
margin-left: -50px;
position: relative;
}
#header .header-left > nav > #navigation {
position: relative;
left: 25px;
/* half the togglemenu */
transform: translateX(-50%);
width: 160px;
}
#header .header-left > nav > #navigation,
.ui-datepicker,
.ui-timepicker.ui-widget {
background-color: var(--color-main-background);
filter: drop-shadow(0 1px 10px var(--color-box-shadow));
}
#header .header-left > nav > #navigation:after,
.ui-datepicker:after,
.ui-timepicker.ui-widget:after {
/* position of dropdown arrow */
left: 50%;
bottom: 100%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border-color: rgba(0, 0, 0, 0);
border-bottom-color: var(--color-main-background);
border-width: 10px;
margin-left: -10px;
/* border width */
}
#navigation {
box-sizing: border-box;
}
#navigation .in-header {
display: none;
}
/* USER MENU -----------------------------------------------------------------*/
#settings {
display: inline-block;
height: 100%;
cursor: pointer;
flex: 0 0 auto;
/* User menu on the right */
}
#settings #expand {
opacity: 1;
/* override icon opacity */
padding-right: 12px;
/* Profile picture in header */
/* show triangle below user menu if active */
}
#settings #expand:hover, #settings #expand:focus, #settings #expand:active {
color: var(--color-primary-text);
}
#settings #expand:hover #expandDisplayName,
#settings #expand:hover .avatardiv, #settings #expand:focus #expandDisplayName,
#settings #expand:focus .avatardiv, #settings #expand:active #expandDisplayName,
#settings #expand:active .avatardiv {
border-radius: 50%;
border: 2px solid var(--color-primary-text);
margin: -2px;
}
#settings #expand:hover .avatardiv, #settings #expand:focus .avatardiv, #settings #expand:active .avatardiv {
background-color: var(--color-primary-text);
}
#settings #expand:hover #expandDisplayName, #settings #expand:focus #expandDisplayName, #settings #expand:active #expandDisplayName {
opacity: 1;
}
#settings #expand .avatardiv {
cursor: pointer;
height: 32px;
width: 32px;
/* do not show display name when profile picture is present */
}
#settings #expand .avatardiv img {
opacity: 1;
cursor: pointer;
}
#settings #expand .avatardiv.avatardiv-shown + #expandDisplayName {
display: none;
}
#settings #expand #expandDisplayName {
padding: 8px;
opacity: 0.6;
cursor: pointer;
/* full opacity for gear icon if active */
}
#body-settings #settings #expand #expandDisplayName {
opacity: 1;
}
#body-settings #settings #expand:before {
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border: 0 solid transparent;
border-bottom-color: var(--color-main-background);
border-width: 10px;
bottom: 0;
z-index: 100;
display: block;
}
#settings #expanddiv:after {
right: 22px;
}
/* Apps menu */
#appmenu {
display: inline-flex;
min-width: 50px;
z-index: 2;
/* Show all app titles on hovering app menu area */
/* Also show app title on focusing single entry (showing all on focus is only possible with CSS4 and parent selectors) */
/* show triangle below active app */
/* triangle focus feedback */
}
#appmenu li {
position: relative;
cursor: pointer;
padding: 0 2px;
display: flex;
justify-content: center;
/* focused app visual feedback */
/* hidden apps menu */
/* App title */
/* Set up transitions for showing app titles on hover */
/* App icon */
/* Triangle */
}
#appmenu li a {
position: relative;
display: flex;
margin: 0;
height: 50px;
width: 50px;
align-items: center;
justify-content: center;
opacity: 0.6;
letter-spacing: -0.5px;
font-size: 12px;
}
#appmenu li:hover a,
#appmenu li a:focus,
#appmenu li a.active {
opacity: 1;
font-weight: bold;
}
#appmenu li:hover a,
#appmenu li a:focus {
font-size: 14px;
}
#appmenu li:hover a + span,
#appmenu li a:focus + span, #appmenu li:hover span, #appmenu li:focus span,
#appmenu li a:focus span,
#appmenu li a.active span {
display: inline-block;
text-overflow: initial;
width: auto;
overflow: hidden;
padding: 0 5px;
z-index: 2;
}
#appmenu li img,
#appmenu li .icon-more-white {
display: inline-block;
width: 20px;
height: 20px;
}
#appmenu li span {
opacity: 0;
position: absolute;
color: var(--color-primary-text);
bottom: 2px;
width: 100%;
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
transition: all var(--animation-quick) ease;
pointer-events: none;
}
#appmenu li svg,
#appmenu li .icon-more-white {
transition: transform var(--animation-quick) ease;
filter: var(--primary-invert-if-bright);
}
#appmenu li a::before {
transition: border var(--animation-quick) ease;
}
#appmenu:hover li {
/* Move up app icon */
/* Show app title */
/* Prominent app title for current and hovered/focused app */
/* Smaller triangle because of limited space */
}
#appmenu:hover li svg,
#appmenu:hover li .icon-more,
#appmenu:hover li .icon-more-white,
#appmenu:hover li .icon-loading-small,
#appmenu:hover li .icon-loading-small-dark {
transform: translateY(-7px);
}
#appmenu:hover li span {
opacity: 0.6;
bottom: 2px;
z-index: -1;
/* fix clickability issue - otherwise we need to move the span into the link */
}
#appmenu:hover li:hover span, #appmenu:hover li:focus span,
#appmenu:hover li .active + span {
opacity: 1;
}
#appmenu:hover li a::before {
border-width: 5px;
}
#appmenu li a:focus {
/* Move up app icon */
/* Show app title */
/* Smaller triangle because of limited space */
}
#appmenu li a:focus svg,
#appmenu li a:focus .icon-more,
#appmenu li a:focus .icon-more-white,
#appmenu li a:focus .icon-loading-small,
#appmenu li a:focus .icon-loading-small-dark {
transform: translateY(-7px);
}
#appmenu li a:focus + span,
#appmenu li a:focus span {
opacity: 1;
bottom: 2px;
}
#appmenu li a:focus::before {
border-width: 5px;
}
#appmenu li a::before {
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border: 0 solid transparent;
border-bottom-color: var(--color-main-background);
border-width: 10px;
transform: translateX(-50%);
left: 50%;
bottom: 0;
display: none;
}
#appmenu li a.active::before,
#appmenu li:hover a::before,
#appmenu li:hover a.active::before,
#appmenu li a:focus::before {
display: block;
}
#appmenu li a.active::before {
z-index: 99;
}
#appmenu li:hover a::before,
#appmenu li a.active:hover::before,
#appmenu li a:focus::before {
z-index: 101;
}
#appmenu li.hidden {
display: none;
}
#appmenu #more-apps {
z-index: 3;
}
.unread-counter {
display: none;
}
#apps .app-icon-notification,
#appmenu .app-icon-notification {
fill: var(--color-error);
}
#apps svg:not(.has-unread) .app-icon-notification-mask,
#appmenu svg:not(.has-unread) .app-icon-notification-mask {
display: none;
}
#apps svg:not(.has-unread) .app-icon-notification,
#appmenu svg:not(.has-unread) .app-icon-notification {
display: none;
}
/* Skip navigation links show only on keyboard focus */
.skip-navigation {
padding: 11px;
position: absolute;
overflow: hidden;
z-index: 9999;
top: -999px;
left: 3px;
/* Force primary color, otherwise too light focused color */
background: var(--color-primary) !important;
}
.skip-navigation.skip-content {
left: 300px;
margin-left: 3px;
}
.skip-navigation:focus, .skip-navigation:active {
top: 50px;
}
/* Empty content messages in the header e.g. notifications, contacts menu, … */
header #emptycontent h2,
header .emptycontent h2 {
font-weight: normal;
font-size: 16px;
}
header #emptycontent [class^=icon-],
header #emptycontent [class*=icon-],
header .emptycontent [class^=icon-],
header .emptycontent [class*=icon-] {
background-size: 48px;
height: 48px;
width: 48px;
}
/*# sourceMappingURL=header.css.map */