@ecl/site-header 5.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,514 @@
1
+ /**
2
+ * Site Header EC
3
+ * @define site-header
4
+ */
5
+
6
+ @use 'sass:map';
7
+ @use '@ecl/grid/mixins/breakpoints';
8
+
9
+ // Exposed variables
10
+ $theme: null !default;
11
+ $site-header: null !default;
12
+ $language-list: null !default;
13
+
14
+ @use 'site-header-language-switcher' with (
15
+ $theme: $theme,
16
+ $language-switcher: map.get($site-header, 'language-switcher'),
17
+ $language-list: $language-list
18
+ );
19
+
20
+ .ecl-site-header {
21
+ margin: 0;
22
+ position: relative;
23
+ z-index: map.get($theme, 'z-index', 'modal');
24
+
25
+ .ecl-site-header__inner {
26
+ box-shadow: var(--sh-6);
27
+ }
28
+
29
+ .ecl-site-header__background {
30
+ background-color: map.get($site-header, 'background-color');
31
+ background-image: url('data:image/svg+xml;base64,' + map.get(
32
+ $site-header,
33
+ 'background-image'
34
+ ));
35
+ background-position: right bottom;
36
+ background-repeat: no-repeat;
37
+ background-size: auto 100%;
38
+ }
39
+
40
+ &.ecl-site-header--rtl .ecl-site-header__background {
41
+ background-position: left bottom;
42
+ }
43
+
44
+ .ecl-menu,
45
+ .ecl-mega-menu {
46
+ bottom: 0;
47
+ padding: 0;
48
+ position: absolute;
49
+ right: 0;
50
+ width: 100%;
51
+ }
52
+
53
+ .ecl-menu__open,
54
+ .ecl-mega-menu__open {
55
+ position: relative;
56
+ top: calc(-1 * var(--s-2xs));
57
+ z-index: 54;
58
+ }
59
+
60
+ .ecl-mega-menu--rtl .ecl-mega-menu__open {
61
+ margin-inline-start: var(--s-m);
62
+ }
63
+
64
+ .ecl-site-header__cta {
65
+ margin-top: var(--s-s);
66
+ position: relative;
67
+ width: max-content;
68
+ z-index: 1;
69
+ }
70
+
71
+ .ecl-site-header__cta:only-child {
72
+ margin-top: 0;
73
+ }
74
+ }
75
+
76
+ .ecl-site-header__header {
77
+ box-shadow: var(--sh-6);
78
+ position: relative;
79
+ z-index: 54;
80
+ }
81
+
82
+ .ecl-site-header__container {
83
+ display: flex;
84
+ flex-direction: column;
85
+ padding-bottom: var(--s-m);
86
+ padding-top: var(--s-m);
87
+ position: static;
88
+ }
89
+
90
+ .ecl-site-header__top {
91
+ align-items: center;
92
+ display: flex;
93
+ flex-grow: 1;
94
+ justify-content: space-between;
95
+ }
96
+
97
+ .ecl-site-header__logo-image {
98
+ display: block;
99
+ height: map.get($site-header, 'logo-height-xs');
100
+ }
101
+
102
+ .ecl-site-header__logo-link {
103
+ z-index: map.get($theme, 'z-index', 'modal') + 2;
104
+ }
105
+
106
+ .ecl-search-form__button {
107
+ color: map.get($site-header, 'toggle-color');
108
+
109
+ &:hover {
110
+ border-left: none;
111
+ color: var(--c-d);
112
+ }
113
+
114
+ &:focus-visible {
115
+ color: var(--c-d);
116
+ }
117
+
118
+ &:active {
119
+ background-color: var(--c-n);
120
+ }
121
+ }
122
+
123
+ .ecl-site-header__action {
124
+ align-self: flex-end;
125
+ display: flex;
126
+ padding-bottom: var(--s-2xs);
127
+
128
+ .ecl-button {
129
+ box-sizing: border-box;
130
+ margin-inline-start: var(--s-2xs);
131
+ }
132
+
133
+ > :first-child .ecl-button,
134
+ .ecl-search-form__button {
135
+ margin-inline-start: 0;
136
+ }
137
+
138
+ .ecl-site-header--has-menu &,
139
+ .ecl-site-header--has-mega-menu & {
140
+ margin-inline-end: calc(44px + var(--s-2xs));
141
+ }
142
+ }
143
+
144
+ .ecl-site-header__language-selector {
145
+ text-transform: uppercase;
146
+ }
147
+
148
+ .ecl-site-header__login-toggle,
149
+ .ecl-site-header__search-toggle,
150
+ .ecl-site-header__language-selector {
151
+ align-items: center;
152
+ box-sizing: border-box;
153
+ color: map.get($site-header, 'toggle-color');
154
+ display: flex;
155
+ flex-direction: column;
156
+ margin-inline-start: var(--s-xs);
157
+ position: relative;
158
+ z-index: map.get($theme, 'z-index', 'modal') + 2;
159
+
160
+ &:focus-visible {
161
+ color: map.get($site-header, 'toggle-color');
162
+ }
163
+
164
+ &:active,
165
+ &[aria-expanded='true'] {
166
+ background-color: var(--c-n-80);
167
+ }
168
+ }
169
+
170
+ .ecl-site-header__login-box,
171
+ .ecl-site-header__search {
172
+ background-color: map.get($theme, 'color', 'white');
173
+ box-shadow: var(--sh-12);
174
+ box-sizing: border-box;
175
+ color: var(--c-d);
176
+ display: none;
177
+ font: var(--f-m);
178
+ left: 0;
179
+ margin-top: var(--s-l);
180
+ padding: var(--s-3xl) var(--s-m);
181
+ position: absolute;
182
+ z-index: map.get($theme, 'z-index', 'modal') + 1;
183
+ }
184
+
185
+ .ecl-site-header__login-box {
186
+ border-radius: map.get($theme, 'border-radius', 's');
187
+ box-sizing: border-box;
188
+ left: 0;
189
+ width: 100%;
190
+
191
+ &::before {
192
+ @include site-header-language-switcher.arrow-up;
193
+
194
+ left: auto;
195
+ right: var(--ecl-login-arrow-position);
196
+ }
197
+
198
+ &.ecl-site-header__login-box--active {
199
+ display: block;
200
+ }
201
+ }
202
+
203
+ .ecl-site-header__login-description {
204
+ margin: 0;
205
+ max-width: var(--max-w);
206
+ }
207
+
208
+ .ecl-site-header__login-separator {
209
+ background-color: var(--c-n);
210
+ border-width: 0;
211
+ height: 1px;
212
+ margin-bottom: var(--s-m);
213
+ margin-top: var(--s-m);
214
+ }
215
+
216
+ .ecl-site-header__language-icon {
217
+ align-items: center;
218
+ display: flex;
219
+ justify-content: center;
220
+ position: relative;
221
+ }
222
+
223
+ .ecl-site-header__search--active {
224
+ display: flex;
225
+
226
+ &::before {
227
+ @include site-header-language-switcher.arrow-up;
228
+
229
+ left: auto;
230
+ right: var(--ecl-search-arrow-position);
231
+ }
232
+ }
233
+
234
+ .ecl-site-header__notification {
235
+ background-color: var(--c-bg);
236
+ border-top: 1px solid var(--c-n-60);
237
+ display: flex;
238
+
239
+ .ecl-notification {
240
+ background: map.get($theme, 'color', 'white');
241
+ margin: var(--s-xl) 0;
242
+ }
243
+ }
244
+
245
+ .ecl-site-header__banner-top {
246
+ background: var(--c-n-40);
247
+ border-top: 1px solid var(--c-n);
248
+ font: var(--f-m);
249
+ padding: var(--s-xs) 0;
250
+ }
251
+
252
+ .ecl-site-header__banner {
253
+ background-color: map.get($site-header, 'banner-background');
254
+ color: map.get($site-header, 'banner-text-color');
255
+ display: block;
256
+ font: var(--f-l);
257
+ min-height: 1.75rem;
258
+ padding: var(--s-m) 0;
259
+
260
+ .ecl-container {
261
+ display: flex;
262
+ flex-direction: column;
263
+ }
264
+ }
265
+
266
+ .ecl-site-header__site-name {
267
+ margin-inline-end: var(--s-3xl);
268
+ }
269
+
270
+ // Menu display and position
271
+ $menu-top: calc(44px + 2 * var(--s-xs));
272
+
273
+ // stylelint-disable-next-line no-duplicate-selectors
274
+ .ecl-site-header .ecl-menu,
275
+ .ecl-site-header .ecl-mega-menu {
276
+ bottom: auto;
277
+ padding: 0;
278
+ position: absolute;
279
+ right: 0;
280
+ top: 2.5rem;
281
+ width: calc(44px + var(--s-m) * 2);
282
+ }
283
+
284
+ .ecl-site-header .ecl-mega-menu {
285
+ right: calc(-1 * var(--s-xs));
286
+ }
287
+
288
+ .ecl-site-header .ecl-mega-menu--rtl,
289
+ .ecl-site-header .ecl-menu--rtl {
290
+ left: 0;
291
+ right: auto;
292
+ }
293
+
294
+ .ecl-site-header .ecl-menu__overlay,
295
+ .ecl-site-header .ecl-menu__inner,
296
+ .ecl-site-header .ecl-mega-menu__overlay,
297
+ .ecl-site-header .ecl-mega-menu__inner {
298
+ top: $menu-top;
299
+ }
300
+
301
+ @include breakpoints.down('m') {
302
+ .ecl-site-header__login-toggle,
303
+ .ecl-site-header__search-toggle,
304
+ .ecl-site-header__language-selector {
305
+ align-items: center;
306
+ display: flex;
307
+ font-size: 0;
308
+ justify-content: center;
309
+ line-height: 0;
310
+ padding: var(--s-xs) 0;
311
+
312
+ .ecl-icon {
313
+ width: 1.5rem;
314
+ height: 1.5rem;
315
+ }
316
+ }
317
+ }
318
+
319
+ @include breakpoints.up('m') {
320
+ .ecl-site-header__logo-link {
321
+ margin-top: 0;
322
+ }
323
+ /* stylelint-disable-next-line plugin/selector-bem-pattern */
324
+ .ecl-site-header {
325
+ .ecl-search-form__text-input {
326
+ width: map.get($site-header, 'search-width');
327
+ }
328
+
329
+ .ecl-search-form {
330
+ max-width: 100%;
331
+ }
332
+ }
333
+ }
334
+
335
+ @include breakpoints.up('l') {
336
+ .ecl-site-header {
337
+ box-shadow: var(--sh-6);
338
+
339
+ .ecl-site-header__cta {
340
+ align-self: center;
341
+ margin: 0;
342
+
343
+ &:only-child {
344
+ margin: var(--s-xs) 0;
345
+ }
346
+ }
347
+
348
+ .ecl-menu {
349
+ position: static;
350
+ width: 100%;
351
+
352
+ .ecl-menu__mega {
353
+ box-shadow: var(--sh-6);
354
+ }
355
+ }
356
+
357
+ .ecl-mega-menu {
358
+ position: relative;
359
+ right: 0;
360
+ top: 0;
361
+ width: 100%;
362
+ }
363
+
364
+ .ecl-menu__overlay,
365
+ .ecl-menu__inner,
366
+ .ecl-mega-menu__overlay,
367
+ .ecl-mega-menu__inner {
368
+ top: 0;
369
+ }
370
+ }
371
+
372
+ .ecl-site-header__container {
373
+ align-items: flex-end;
374
+ flex-direction: row;
375
+ padding-bottom: var(--s-xl);
376
+ padding-top: var(--s-2xl);
377
+ }
378
+
379
+ .ecl-site-header__header {
380
+ box-shadow: none;
381
+ }
382
+
383
+ .ecl-site-header__site-name {
384
+ align-self: center;
385
+ flex-grow: 1;
386
+ margin-inline-end: 0;
387
+ padding: var(--s-m) 0;
388
+ }
389
+
390
+ .ecl-site-header__top {
391
+ align-items: flex-end;
392
+ }
393
+
394
+ .ecl-site-header__action {
395
+ align-items: center;
396
+
397
+ .ecl-button--icon-only .ecl-button__icon {
398
+ height: map.get($theme, 'icon', 'xs');
399
+ width: map.get($theme, 'icon', 'xs');
400
+ }
401
+ }
402
+
403
+ .ecl-site-header--has-menu,
404
+ .ecl-site-header--has-mega-menu {
405
+ .ecl-site-header__action {
406
+ margin-inline-end: 0;
407
+ }
408
+ }
409
+
410
+ .ecl-site-header__logo-link {
411
+ margin-bottom: 0;
412
+ }
413
+
414
+ .ecl-site-header__search--active::before {
415
+ display: none;
416
+ }
417
+
418
+ .ecl-site-header__logo-image--s {
419
+ height: map.get($site-header, 'logo-height-lg-s');
420
+ }
421
+
422
+ .ecl-site-header__logo-image--m {
423
+ height: map.get($site-header, 'logo-height-lg-m');
424
+ }
425
+
426
+ .ecl-site-header__logo-image--l {
427
+ height: map.get($site-header, 'logo-height-lg-l');
428
+ }
429
+
430
+ .ecl-site-header__login-container {
431
+ position: relative;
432
+ }
433
+
434
+ .ecl-site-header__login-box {
435
+ left: 50%;
436
+ margin-top: var(--s-l);
437
+ min-width: 22rem;
438
+ padding: var(--s-3xl);
439
+ transform: translateX(-50%);
440
+ width: auto;
441
+
442
+ &::before {
443
+ left: 50%;
444
+ }
445
+ }
446
+
447
+ .ecl-site-header__login-toggle,
448
+ .ecl-site-header__language-selector {
449
+ align-items: center;
450
+ display: flex;
451
+ flex-direction: row;
452
+ font: var(--f-m);
453
+
454
+ .ecl-site-header__icon {
455
+ flex-shrink: 0;
456
+ height: 1rem;
457
+ margin-inline-end: var(--s-xs);
458
+ width: 1rem;
459
+ }
460
+ }
461
+
462
+ .ecl-site-header__search-toggle {
463
+ display: none;
464
+ }
465
+
466
+ .ecl-site-header__language-code {
467
+ font: var(--f-xs);
468
+ margin-inline-end: var(--s-xs);
469
+ transform: translateX(-50%) translateX(-0.22rem) translateY(-50%)
470
+ translateY(-0.08rem);
471
+ }
472
+
473
+ .ecl-site-header__search-container {
474
+ flex-grow: 1;
475
+ margin-inline-start: var(--s-xl);
476
+
477
+ .ecl-search-form__button {
478
+ min-width: 100px;
479
+ color: map.get($site-header, 'toggle-color');
480
+ }
481
+
482
+ .ecl-search-form__text-input {
483
+ width: map.get($site-header, 'search-width-l');
484
+ }
485
+ }
486
+
487
+ .ecl-site-header__search {
488
+ background-color: map.get($theme, 'color', 'white');
489
+ border-width: 0;
490
+ box-shadow: none;
491
+ display: flex;
492
+ margin: 0;
493
+ padding: 0;
494
+ position: relative;
495
+ top: 0;
496
+ }
497
+
498
+ .ecl-site-header__banner {
499
+ box-shadow: none;
500
+ font: var(--f-l);
501
+ min-height: 0;
502
+ padding: 0;
503
+
504
+ .ecl-container {
505
+ flex-direction: row;
506
+ }
507
+ }
508
+ }
509
+
510
+ @include breakpoints.up('xl') {
511
+ .ecl-site-header__action .ecl-search-form__text-input {
512
+ width: map.get($site-header, 'search-width-xl');
513
+ }
514
+ }