diff options
Diffstat (limited to 'core/css/header.css')
-rw-r--r-- | core/css/header.css | 644 |
1 files changed, 644 insertions, 0 deletions
diff --git a/core/css/header.css b/core/css/header.css new file mode 100644 index 00000000000..93c44812e57 --- /dev/null +++ b/core/css/header.css @@ -0,0 +1,644 @@ +@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 */ |