summaryrefslogtreecommitdiffstats
path: root/src/styles/components/_site-header.scss
diff options
context:
space:
mode:
Diffstat (limited to 'src/styles/components/_site-header.scss')
-rw-r--r--src/styles/components/_site-header.scss136
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}