aboutsummaryrefslogtreecommitdiffstats
path: root/core/css/header.css
diff options
context:
space:
mode:
Diffstat (limited to 'core/css/header.css')
-rw-r--r--core/css/header.css644
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 */