diff options
| author | Volpeon <git@volpeon.ink> | 2026-07-22 19:40:59 +0200 |
|---|---|---|
| committer | Volpeon <git@volpeon.ink> | 2026-07-22 19:40:59 +0200 |
| commit | c1e28224aa2e1450031669d9a7e359b63e04687d (patch) | |
| tree | 68f3d8905c763a91f68001d868197effa92adafa /src/styles/components/_site-header.scss | |
| download | corvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.tar.gz corvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.tar.bz2 corvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.zip | |
Init
Diffstat (limited to 'src/styles/components/_site-header.scss')
| -rw-r--r-- | src/styles/components/_site-header.scss | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/src/styles/components/_site-header.scss b/src/styles/components/_site-header.scss new file mode 100644 index 0000000..d23fa7c --- /dev/null +++ b/src/styles/components/_site-header.scss | |||
| @@ -0,0 +1,136 @@ | |||
| 1 | @use "sass:math"; | ||
| 2 | @use "sass:meta"; | ||
| 3 | |||
| 4 | @use "pkg:iro-design" as iro; | ||
| 5 | @use "pkg:iro-sass/bem"; | ||
| 6 | @use "pkg:iro-sass/props"; | ||
| 7 | |||
| 8 | @forward "site-header.vars"; | ||
| 9 | @use "site-header.vars" as vars; | ||
| 10 | |||
| 11 | @mixin styles { | ||
| 12 | @include iro.props--materialize-at-root(meta.module-variables("vars")); | ||
| 13 | |||
| 14 | @include bem.component("site-header") { | ||
| 15 | position: sticky; | ||
| 16 | inset-block-start: 0; | ||
| 17 | z-index: props.get(vars.$z-index); | ||
| 18 | display: flex; | ||
| 19 | gap: props.get(vars.$spacing); | ||
| 20 | align-items: center; | ||
| 21 | line-height: 1.4; | ||
| 22 | block-size: props.get(vars.$block-size); | ||
| 23 | padding-inline: props.get(iro.$l-container--pad-i); | ||
| 24 | background-color: props.get(iro.$core--theme, --bg-l1); | ||
| 25 | overflow: hidden; | ||
| 26 | transition: | ||
| 27 | background-color 0.2s ease, | ||
| 28 | opacity 0.2s ease, | ||
| 29 | transform 0.2s ease, | ||
| 30 | visibility 0s linear 0.2s; | ||
| 31 | |||
| 32 | @include bem.at-theme("js") { | ||
| 33 | background-color: transparent; | ||
| 34 | } | ||
| 35 | |||
| 36 | @include bem.modifier("hidden") { | ||
| 37 | margin-block-start: calc(-1 * props.get(vars.$block-size)); | ||
| 38 | opacity: 0; | ||
| 39 | visibility: hidden; | ||
| 40 | transform: translateY(-0.2em); | ||
| 41 | |||
| 42 | @include bem.is("scroll") { | ||
| 43 | transition: | ||
| 44 | background-color 0.2s ease, | ||
| 45 | opacity 0.2s ease, | ||
| 46 | transform 0.2s ease, | ||
| 47 | visibility 0s linear; | ||
| 48 | visibility: visible; | ||
| 49 | opacity: 1; | ||
| 50 | transform: none; | ||
| 51 | } | ||
| 52 | } | ||
| 53 | |||
| 54 | @include bem.modifier("end") { | ||
| 55 | background-color: props.get(iro.$core--transparent-colors, --black, --900); | ||
| 56 | } | ||
| 57 | |||
| 58 | @include bem.is("scroll") { | ||
| 59 | background-color: props.get(iro.$core--theme, --base, --50); | ||
| 60 | } | ||
| 61 | |||
| 62 | @include bem.elem("logo") { | ||
| 63 | @include bem.modifier("sm") { | ||
| 64 | display: none; | ||
| 65 | } | ||
| 66 | } | ||
| 67 | |||
| 68 | @include bem.elem("nav", "back") { | ||
| 69 | margin-inline-end: calc(-1 * props.get(vars.$nav-pull)); | ||
| 70 | } | ||
| 71 | |||
| 72 | @include bem.elem("back") { | ||
| 73 | display: none; | ||
| 74 | } | ||
| 75 | |||
| 76 | @include bem.elem("spacer") { | ||
| 77 | margin-inline-start: auto; | ||
| 78 | } | ||
| 79 | |||
| 80 | @include bem.elem("slot") { | ||
| 81 | display: contents; | ||
| 82 | |||
| 83 | @include bem.modifier("sm") { | ||
| 84 | display: none; | ||
| 85 | } | ||
| 86 | } | ||
| 87 | |||
| 88 | @include iro.media--media("<=sm") { | ||
| 89 | @include bem.elem("logo") { | ||
| 90 | display: none; | ||
| 91 | |||
| 92 | @include bem.modifier("sm") { | ||
| 93 | display: block; | ||
| 94 | } | ||
| 95 | } | ||
| 96 | |||
| 97 | @include bem.elem("nav") { | ||
| 98 | display: none; | ||
| 99 | } | ||
| 100 | |||
| 101 | @include bem.elem("back") { | ||
| 102 | display: block; | ||
| 103 | } | ||
| 104 | |||
| 105 | @include bem.elem("slot") { | ||
| 106 | @include bem.modifier("end") { | ||
| 107 | display: none; | ||
| 108 | } | ||
| 109 | |||
| 110 | @include bem.modifier("sm") { | ||
| 111 | display: contents; | ||
| 112 | } | ||
| 113 | } | ||
| 114 | |||
| 115 | @include bem.modifier("end") { | ||
| 116 | @include bem.elem("logo") { | ||
| 117 | display: block; | ||
| 118 | |||
| 119 | @include bem.modifier("sm") { | ||
| 120 | display: none; | ||
| 121 | } | ||
| 122 | } | ||
| 123 | |||
| 124 | @include bem.elem("slot") { | ||
| 125 | @include bem.modifier("sm") { | ||
| 126 | display: none; | ||
| 127 | } | ||
| 128 | } | ||
| 129 | } | ||
| 130 | } | ||
| 131 | |||
| 132 | @include iro.media--media("height<=500px") { | ||
| 133 | position: relative; | ||
| 134 | } | ||
| 135 | } | ||
| 136 | } | ||
