@ecl/site-header 5.0.0-RC1

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