X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/85db812feaae5f36ea6214931cec4adb67a9cb39..refs/pull/5676/head:/resources/sass/_header.scss diff --git a/resources/sass/_header.scss b/resources/sass/_header.scss index 1a7015078..3ec7275a4 100644 --- a/resources/sass/_header.scss +++ b/resources/sass/_header.scss @@ -1,13 +1,16 @@ +@use "mixins"; +@use "vars"; + /** * Includes the main navigation header and the faded toolbar. */ -header .grid { +header.grid { grid-template-columns: minmax(max-content, 2fr) 1fr minmax(max-content, 2fr); } -@include smaller-than($l) { - header .grid { +@include mixins.smaller-than(vars.$bp-l) { + header.grid { grid-template-columns: 1fr; grid-row-gap: 0; } @@ -20,11 +23,12 @@ header { top: 0; color: rgb(250, 250, 250); border-bottom: 1px solid #DDD; - box-shadow: $bs-card; - padding: $-xxs 0; - @include lightDark(border-bottom-color, #DDD, #000); - @include whenDark { - filter: saturate(0.8) brightness(0.8); + box-shadow: vars.$bs-card; + @include mixins.lightDark(border-bottom-color, #DDD, #000); + .header-links { + display: flex; + align-items: center; + justify-content: end; } .links { display: inline-block; @@ -32,11 +36,16 @@ header { } .links a { display: inline-block; - padding: $-m; + padding: 10px vars.$m; color: #FFF; + border-radius: 3px; + } + .links a:hover { + text-decoration: none; + background-color: rgba(255, 255, 255, .15); } .dropdown-container { - padding-inline-start: $-m; + padding-inline-start: vars.$m; padding-inline-end: 0; } .avatar, .user-name { @@ -49,22 +58,28 @@ header { .user-name { vertical-align: top; position: relative; - display: inline-block; + display: inline-flex; + align-items: center; cursor: pointer; - > * { - vertical-align: top; - } + padding: vars.$s; + margin: 0 (-(vars.$s)); + border-radius: 3px; + gap: vars.$xs; > span { - padding-inline-start: $-xs; + padding-inline-start: vars.$xs; display: inline-block; - padding-top: $-xxs; + line-height: 1; } > svg { - padding-top: 4px; font-size: 18px; + margin-top: -2px; + margin-inline-end: 0; + } + &:hover { + background-color: rgba(255, 255, 255, 0.15); } - @include between($l, $xl) { - padding-inline-start: $-xs; + @include mixins.between(vars.$bp-l, vars.$bp-xl) { + padding-inline-start: vars.$xs; .name { display: none; } @@ -79,61 +94,110 @@ header { header .search-box { display: inline-block; - margin-top: 10px; input { background-color: rgba(0, 0, 0, 0.2); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 40px; color: #EEE; z-index: 2; + height: auto; + padding: vars.$xs*1.5; padding-inline-start: 40px; &:focus { outline: none; - border: 1px solid rgba(255, 255, 255, 0.6); + border: 1px solid rgba(255, 255, 255, 0.4); } } - button { - z-index: 1; - left: 16px; - @include lightDark(color, rgba(255, 255, 255, 0.8), #AAA); - @include rtl { - left: auto; - right: 16px; - } - svg { - margin-block-end: 0; - } + input::placeholder { + color: #FFF; + opacity: 0.6; } - ::-webkit-input-placeholder { /* Chrome/Opera/Safari */ - color: #DDD; + @include mixins.between(vars.$bp-l, vars.$bp-xl) { + max-width: 200px; } - ::-moz-placeholder { /* Firefox 19+ */ - color: #DDD; + &:focus-within #header-search-box-button { + opacity: 1; } - @include between($l, $xl) { - max-width: 200px; +} +#header-search-box-button { + z-index: 1; + inset-inline-start: 16px; + top: 10px; + color: #FFF; + opacity: 0.6; + @include mixins.lightDark(color, rgba(255, 255, 255, 0.8), #AAA); + svg { + margin-inline-end: 0; + } +} + +.global-search-suggestions { + display: none; + position: absolute; + top: -(vars.$s); + left: 0; + right: 0; + z-index: -1; + margin-left: -(vars.$xxl); + margin-right: -(vars.$xxl); + padding-top: 56px; + border-radius: 3px; + box-shadow: vars.$bs-hover; + transform-origin: top center; + opacity: .5; + transform: scale(0.9); + .entity-item-snippet p { + display: none; + } + .entity-item-snippet { + font-size: .8rem; + } + .entity-list-item-name { + font-size: .9rem; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + } + .global-search-loading { + position: absolute; + width: 100%; + } +} +header .search-box.search-active:focus-within { + .global-search-suggestions { + display: block; + } + input { + @include mixins.lightDark(background-color, #EEE, #333); + @include mixins.lightDark(border-color, #DDD, #111); + } + #header-search-box-button, input { + @include mixins.lightDark(color, #444, #AAA); } } .logo { - display: inline-block; + display: inline-flex; + padding: (vars.$s - 6px) vars.$s; + margin: 6px (-(vars.$s)); + gap: vars.$s; + align-items: center; + border-radius: 4px; &:hover { color: #FFF; text-decoration: none; + background-color: rgba(255, 255, 255, .15); } } + .logo-text { - display: inline-block; font-size: 1.8em; color: #fff; font-weight: 400; - @include padding(14px, $-l, 14px, 0); - vertical-align: top; line-height: 1; } .logo-image { - @include margin($-xs, $-s, $-xs, 0); - vertical-align: top; height: 43px; } @@ -143,10 +207,7 @@ header .search-box { font-size: 2em; border: 2px solid rgba(255, 255, 255, 0.8); border-radius: 4px; - padding: 0 $-xs; - position: absolute; - right: $-m; - top: 13px; + padding: 0 vars.$xs; line-height: 1; cursor: pointer; user-select: none; @@ -154,45 +215,46 @@ header .search-box { margin: 0; bottom: -2px; } - @include rtl() { - left: $-m; - right: auto; - } } - -@include smaller-than($l) { +@include mixins.smaller-than(vars.$bp-l) { header .header-links { - @include lightDark(background-color, #fff, #333); + @include mixins.lightDark(background-color, #fff, #333); display: none; z-index: 10; - right: $-m; + inset-inline-end: vars.$m; border-radius: 4px; overflow: hidden; position: absolute; - box-shadow: $bs-hover; - margin-top: -$-xs; + box-shadow: vars.$bs-hover; + margin-top: vars.$m; + padding: vars.$xs 0; &.show { display: block; } } header .links a, header .dropdown-container ul li a, header .dropdown-container ul li button { text-align: start; - display: block; - padding: $-s $-m; - color: $text-dark; - @include lightDark(color, $text-dark, #eee); + display: grid; + align-items: center; + padding: 8px vars.$m; + gap: vars.$m; + color: vars.$text-dark; + grid-template-columns: 16px auto; + line-height: 1.4; + @include mixins.lightDark(color, vars.$text-dark, #eee); svg { - margin-inline-end: $-s; + margin-inline-end: vars.$s; + width: 16px; } &:hover { - @include lightDark(background-color, #eee, #333); - @include lightDark(color, #000, #fff); + background-color: var(--color-primary-light); + color: var(--color-primary); text-decoration: none; } &:focus { - @include lightDark(background-color, #eee, #333); + @include mixins.lightDark(background-color, #eee, #333); outline-color: var(--color-primary); color: var(--color-primary); } @@ -221,19 +283,19 @@ header .search-box { z-index: 5; background-color: #FFF; border-bottom: 1px solid #DDD; - @include lightDark(border-bottom-color, #DDD, #333); - box-shadow: $bs-card; + @include mixins.lightDark(border-bottom-color, #DDD, #333); + box-shadow: vars.$bs-card; } .tri-layout-mobile-tab { text-align: center; border-bottom: 3px solid #BBB; cursor: pointer; margin: 0; - @include lightDark(background-color, #FFF, #222); - @include lightDark(border-bottom-color, #BBB, #333); + @include mixins.lightDark(background-color, #FFF, #222); + @include mixins.lightDark(border-bottom-color, #BBB, #333); &:first-child { border-inline-end: 1px solid #DDD; - @include lightDark(border-inline-end-color, #DDD, #000); + @include mixins.lightDark(border-inline-end-color, #DDD, #000); } &[aria-selected="true"] { border-bottom-color: currentColor !important; @@ -249,8 +311,8 @@ header .search-box { opacity: 0.7; .icon-list-item { width: auto; - padding-top: $-xs; - padding-bottom: $-xs; + padding-top: vars.$xs; + padding-bottom: vars.$xs; } .separator { display: inline-block; @@ -262,11 +324,14 @@ header .search-box { &:hover, &:focus-within { opacity: 1; } + @media (prefers-contrast: more) { + opacity: 1; + } } -@include smaller-than($l) { +@include mixins.smaller-than(vars.$bp-l) { .breadcrumbs .icon-list-item { - padding: $-xs; + padding: vars.$xs; > span + span { display: none; } @@ -276,29 +341,6 @@ header .search-box { } } -.dropdown-search { - position: relative; - .dropdown-search-toggle { - padding: $-xs; - border: 1px solid transparent; - border-radius: 4px; - &:hover { - border-color: #DDD; - } - } - .svg-icon { - margin-inline-end: 0; - } -} - -.dropdown-search-toggle.compact { - padding: $-xxs $-xs; - .avatar { - height: 22px; - width: 22px; - } -} - .faded { a, button, span, span > div { color: #666; @@ -316,44 +358,5 @@ header .search-box { .faded span.faded-text { display: inline-block; - padding: $-s; -} - -.action-buttons .text-button { - display: inline-block; - padding: $-xs $-s; - &:last-child { - padding-inline-end: 0; - } - &:first-child { - padding-inline-start: 0; - } -} - - -.action-buttons .dropdown-container:last-child a { - padding-inline-end: 0; - padding-inline-start: $-s; -} -.action-buttons { - text-align: end; - &.text-left { - text-align: start; - .text-button { - padding-inline-end: $-m; - padding-inline-start: 0; - } - } - &.text-center { - text-align: center; - } -} - -@include smaller-than($m) { - .action-buttons .text-button { - padding: $-xs $-xs; - } - .action-buttons .dropdown-container:last-child a { - padding-inline-start: $-xs; - } + padding: vars.$s; } \ No newline at end of file