@ecl/site-header 5.0.0-alpha.2 → 5.0.0-alpha.20

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