@orangesk/orange-design-system 2.0.0-beta.17 → 2.0.0-beta.19

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.
Files changed (67) hide show
  1. package/build/components/Accordion/style.css +1 -1
  2. package/build/components/Accordion/style.css.map +1 -1
  3. package/build/components/AnchorNavigation/style.css +1 -1
  4. package/build/components/AnchorNavigation/style.css.map +1 -1
  5. package/build/components/Grid/style.css +1 -1
  6. package/build/components/Grid/style.css.map +1 -1
  7. package/build/components/Megamenu/style.css +1 -1
  8. package/build/components/Megamenu/style.css.map +1 -1
  9. package/build/components/PromoBanner/style.css +1 -1
  10. package/build/components/PromoBanner/style.css.map +1 -1
  11. package/build/components/index.js +1 -23
  12. package/build/components/index.js.map +1 -1
  13. package/build/components/tsconfig.tsbuildinfo +1 -1
  14. package/build/components/types/index.d.ts +5 -3
  15. package/build/components/types/src/components/Accordion/Accordion.d.ts +2 -2
  16. package/build/components/types/src/components/Accordion/Accordion.static.d.ts +1 -0
  17. package/build/components/types/src/components/Carousel/Carousel.static.d.ts +38 -18
  18. package/build/components/types/src/components/Grid/Grid.d.ts +1 -1
  19. package/build/components/types/src/components/Megamenu/Megamenu.d.ts +6 -1
  20. package/build/components/types/src/components/Megamenu/MegamenuBlog.d.ts +2 -1
  21. package/build/components/types/src/components/Megamenu/constants.d.ts +2 -0
  22. package/build/components/types/src/components/Modal/ModalProductHeader.d.ts +2 -0
  23. package/build/lib/base.css +1 -1
  24. package/build/lib/base.css.map +1 -1
  25. package/build/lib/components.css +1 -1
  26. package/build/lib/components.css.map +1 -1
  27. package/build/lib/megamenu.css +1 -1
  28. package/build/lib/megamenu.css.map +1 -1
  29. package/build/lib/megamenu.js +1 -1
  30. package/build/lib/megamenu.js.map +1 -1
  31. package/build/lib/scripts.js +1 -9
  32. package/build/lib/scripts.js.map +1 -1
  33. package/build/lib/style.css +1 -1
  34. package/build/lib/style.css.map +1 -1
  35. package/build/lib/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +2 -2
  37. package/src/components/Accordion/Accordion.static.ts +36 -30
  38. package/src/components/Accordion/Accordion.tsx +4 -4
  39. package/src/components/Accordion/AccordionHeader.tsx +0 -10
  40. package/src/components/Accordion/styles/mixins.scss +0 -6
  41. package/src/components/Accordion/styles/style.scss +2 -2
  42. package/src/components/Accordion/tests/Accordion.unit.test.js +12 -26
  43. package/src/components/AnchorNavigation/AnchorNavigation.static.ts +0 -1
  44. package/src/components/AnchorNavigation/styles/mixins.scss +4 -0
  45. package/src/components/Carousel/Carousel.static.ts +177 -91
  46. package/src/components/Carousel/tests/Carousel.static.test.js +213 -0
  47. package/src/components/Carousel/tests/Carousel.unit.test.js +58 -0
  48. package/src/components/Expander/Expander.static.ts +11 -12
  49. package/src/components/Footer/Footer.tsx +1 -1
  50. package/src/components/Footer/tests/Footer.conformance.test.js +4 -4
  51. package/src/components/Footer/tests/Footer.unit.test.js +4 -4
  52. package/src/components/Grid/Grid.tsx +1 -1
  53. package/src/components/Grid/styles/config.scss +5 -3
  54. package/src/components/Grid/styles/mixins.scss +29 -19
  55. package/src/components/Grid/tests/Grid.unit.test.js +11 -0
  56. package/src/components/Megamenu/Megamenu.tsx +142 -68
  57. package/src/components/Megamenu/MegamenuBlog.tsx +41 -27
  58. package/src/components/Megamenu/constants.ts +2 -0
  59. package/src/components/Megamenu/static.ts +0 -9
  60. package/src/components/Megamenu/styles/mixins.scss +20 -2
  61. package/src/components/Megamenu/styles/style.scss +2 -0
  62. package/src/components/Modal/ModalProductHeader.tsx +6 -2
  63. package/src/components/Modal/tests/ModalProductHeader.unit.test.js +12 -0
  64. package/src/components/PromoBanner/PromoBanner.tsx +3 -1
  65. package/src/components/PromoBanner/styles/mixins.scss +5 -0
  66. package/src/styles/typography/mixins.scss +4 -5
  67. package/build/search-index.json +0 -406
@@ -42,9 +42,33 @@ import {
42
42
  CLASS_NAV_SPACE_SMALL,
43
43
  CLASS_NAV_CART_ICON,
44
44
  CLASS_SPACER,
45
+ CLASS_TAG,
46
+ CLASS_TAG_ORANGE,
47
+ CLASS_TAG_SMALL,
48
+ CLASS_LIST_INLINE,
45
49
  } from "./constants";
46
50
 
47
- export const Megamenu = ({ className }: any) => {
51
+ export const list = [
52
+ "Dobitie kreditu",
53
+ "Nedostupnosť služieb",
54
+ "Faktúry",
55
+ "Zdieľanie dát",
56
+ "Prečerpané dáta",
57
+ "Elektronická faktúra",
58
+ "Prvá pomoc internet",
59
+ "Nastavenie zariadení a sim kariet",
60
+ "Pevny internet do domacnosti",
61
+ "Dátový roaming",
62
+ "Nákup online",
63
+ "Telemarketing",
64
+ ];
65
+
66
+ export type MegamenuProps = {
67
+ className?: string;
68
+ searchEmpty?: boolean;
69
+ };
70
+
71
+ export const Megamenu = ({ className, searchEmpty }: MegamenuProps) => {
48
72
  return (
49
73
  <header>
50
74
  <nav
@@ -57,12 +81,9 @@ export const Megamenu = ({ className }: any) => {
57
81
  data-hide-when-sticky="true"
58
82
  >
59
83
  <div className={CLASS_CONTAINER}>
60
- <h2 id="top-menu-title" className="sr-only">
61
- Top menu
62
- </h2>
63
84
  <ul
64
85
  className={cx(CLASS_NAV, CLASS_NAV_SPACE_SMALL)}
65
- aria-labelledby="top-menu-title"
86
+ aria-label="Top menu"
66
87
  >
67
88
  <li className={CLASS_NAV_ITEM}>
68
89
  <a
@@ -99,10 +120,7 @@ export const Megamenu = ({ className }: any) => {
99
120
 
100
121
  <div className={CLASS_MAIN}>
101
122
  <div className={CLASS_CONTAINER}>
102
- <h2 id="menu-title" className="sr-only">
103
- Hlavné menu
104
- </h2>
105
- <ul className={CLASS_NAV} aria-labelledby="menu-title">
123
+ <ul className={CLASS_NAV} aria-label="Hlavné menu">
106
124
  <li className={cx(CLASS_NAV_ITEM, CLASS_NAV_ITEM_MAIN)}>
107
125
  <a
108
126
  href="#"
@@ -175,53 +193,75 @@ export const Megamenu = ({ className }: any) => {
175
193
  </div>
176
194
 
177
195
  <div className={CLASS_CARD}>
178
- <h3 id="pausaly-heading">Paušály</h3>
196
+ <p id="pausaly-heading" className={CLASS_TEXT_LARGE}>
197
+ Internet
198
+ </p>
179
199
  <ul
180
200
  className={CLASS_SUBNAV}
181
201
  role="group"
182
202
  aria-labelledby="pausaly-heading"
183
203
  >
184
204
  <li className={CLASS_SUBNAV_ITEM}>
185
- <a href="#">Prehľad paušálov</a>
205
+ <a href="#">Prehľad internetu</a>
186
206
  </li>
187
207
  <li className={CLASS_SUBNAV_ITEM}>
188
- <a href="#">Chcem nové číslo</a>
208
+ <a href="#">Mobilný internet</a>
189
209
  </li>
190
210
  <li className={CLASS_SUBNAV_ITEM}>
191
- <a href="#">Yoxo paušál</a>
211
+ <a href="#">Bezpečný internet so sebou</a>
212
+ </li>
213
+ <li className={CLASS_SUBNAV_ITEM}>
214
+ <a href="#">Domáca linka k internetu</a>
192
215
  </li>
193
216
  </ul>
194
217
 
195
- <h3 id="volania-s-kreditom-heading">
196
- Volania s kreditom
197
- </h3>
218
+ <p
219
+ id="volania-s-kreditom-heading"
220
+ className={CLASS_TEXT_LARGE}
221
+ >
222
+ Televízia
223
+ </p>
198
224
  <ul
199
225
  className={CLASS_SUBNAV}
200
226
  role="group"
201
227
  aria-labelledby="volania-s-kreditom-heading"
202
228
  >
203
229
  <li className={CLASS_SUBNAV_ITEM}>
204
- <a href="#">Prima Voľba</a>
230
+ <a href="#">Najlepšia TV na doma</a>
205
231
  </li>
206
232
  <li className={CLASS_SUBNAV_ITEM}>
207
- <a href="#">Prima Kids</a>
233
+ <a href="#">TV cez satelit</a>
208
234
  </li>
209
235
  <li className={CLASS_SUBNAV_ITEM}>
210
- <a href="#">FunFón</a>
236
+ <a href="#">TV cez internet</a>
237
+ </li>
238
+ <li className={CLASS_SUBNAV_ITEM}>
239
+ <a href="#">Novinky na Orange TV</a>
211
240
  </li>
212
241
  </ul>
213
242
 
214
- <h3 id="zahranicie-heading">Zahraničie</h3>
243
+ <p id="zahranicie-heading" className={CLASS_TEXT_LARGE}>
244
+ Internet + televízia
245
+ </p>
215
246
  <ul
216
247
  className={CLASS_SUBNAV}
217
248
  role="group"
218
249
  aria-labelledby="zahranicie-heading"
219
250
  >
220
251
  <li className={CLASS_SUBNAV_ITEM}>
221
- <a href="#">Roaming</a>
252
+ <a href="#">Ponuka Love</a>{" "}
253
+ <span
254
+ className={cx(
255
+ CLASS_TAG,
256
+ CLASS_TAG_ORANGE,
257
+ CLASS_TAG_SMALL,
258
+ )}
259
+ >
260
+ Novinka
261
+ </span>
222
262
  </li>
223
263
  <li className={CLASS_SUBNAV_ITEM}>
224
- <a href="#">Cestovateľské balíky</a>
264
+ <a href="#">Výhodný pár zariadení</a>
225
265
  </li>
226
266
  <li className={CLASS_SUBNAV_ITEM}>
227
267
  <a href="#">Volania do zahraničia</a>
@@ -233,36 +273,29 @@ export const Megamenu = ({ className }: any) => {
233
273
  </div>
234
274
 
235
275
  <div className={CLASS_CARD}>
236
- <h3 id="nase-sluzby-heading">Ste náš zákazník?</h3>
276
+ <p
277
+ id="nase-sluzby-heading"
278
+ className={CLASS_TEXT_LARGE}
279
+ >
280
+ Ste náš zákazník?
281
+ </p>
237
282
  <ul
238
283
  className={CLASS_SUBNAV}
239
284
  role="group"
240
285
  aria-labelledby="nase-sluzby-heading"
241
286
  >
242
- <li className={CLASS_SUBNAV_ITEM}>
243
- <a href="#">Chcem zmeniť paušál</a>
244
- </li>
245
- <li className={CLASS_SUBNAV_ITEM}>
246
- <a href="#">Dobiť kredit</a>
247
- </li>
248
287
  <li className={CLASS_SUBNAV_ITEM}>
249
288
  <a href="#">Predĺžiť služby</a>
250
289
  </li>
251
290
  <li className={CLASS_SUBNAV_ITEM}>
252
- <a href="#">Chcem nový telefón</a>
291
+ <a href="#">Nový internet</a>
253
292
  </li>
254
293
  <li className={CLASS_SUBNAV_ITEM}>
255
- <a href="#">Navzájom zadarmo</a>
256
- </li>
257
- <li className={CLASS_SUBNAV_ITEM}>
258
- <a href="#">Orange Svojim</a>
294
+ <a href="#">Nová televízia</a>
259
295
  </li>
260
296
  <li className={CLASS_SUBNAV_ITEM}>
261
297
  <a href="#">Odporučte Orange</a>
262
298
  </li>
263
- <li className={CLASS_SUBNAV_ITEM}>
264
- <a href="#">Ostatné služby</a>
265
- </li>
266
299
  </ul>
267
300
  </div>
268
301
  </div>
@@ -361,31 +394,47 @@ export const Megamenu = ({ className }: any) => {
361
394
  CLASS_INPUT,
362
395
  CLASS_INPUT_SEARCH_ICON_WITH_PLACEHOLDER,
363
396
  )}
364
- id="search-1"
397
+ id="megamenu-search-input"
365
398
  type="text"
366
399
  placeholder="Search"
367
- name="search-1"
400
+ name="search"
401
+ defaultValue={searchEmpty ? "" : "apple"}
368
402
  />
369
- <ul className={CLASS_SUBNAV}>
370
- <li className={CLASS_SUBNAV_ITEM}>
371
- <a href="#">apple</a>
372
- </li>
373
- <li className={CLASS_SUBNAV_ITEM}>
374
- <a href="#">apple hodinky</a>
375
- </li>
376
- <li className={CLASS_SUBNAV_ITEM}>
377
- <a href="#">apple iphone</a>
378
- </li>
379
- <li className={CLASS_SUBNAV_ITEM}>
380
- <a href="#">apple 16</a>
381
- </li>
382
- <li className={CLASS_SUBNAV_ITEM}>
383
- <a href="#">apple pro</a>
384
- </li>
385
- <li className={CLASS_SUBNAV_ITEM}>
386
- <a href="#">apple watch</a>
387
- </li>
388
- </ul>
403
+ {searchEmpty ? (
404
+ <>
405
+ <p>Najhľadanejši výrazy</p>
406
+ <ul className={CLASS_LIST_INLINE}>
407
+ {list.map((item) => (
408
+ <li key={item}>
409
+ <a href="/" className={cx(CLASS_TAG)}>
410
+ {item}
411
+ </a>
412
+ </li>
413
+ ))}
414
+ </ul>
415
+ </>
416
+ ) : (
417
+ <ul className={CLASS_SUBNAV}>
418
+ <li className={CLASS_SUBNAV_ITEM}>
419
+ <a href="#">apple</a>
420
+ </li>
421
+ <li className={CLASS_SUBNAV_ITEM}>
422
+ <a href="#">apple hodinky</a>
423
+ </li>
424
+ <li className={CLASS_SUBNAV_ITEM}>
425
+ <a href="#">apple iphone</a>
426
+ </li>
427
+ <li className={CLASS_SUBNAV_ITEM}>
428
+ <a href="#">apple 16</a>
429
+ </li>
430
+ <li className={CLASS_SUBNAV_ITEM}>
431
+ <a href="#">apple pro</a>
432
+ </li>
433
+ <li className={CLASS_SUBNAV_ITEM}>
434
+ <a href="#">apple watch</a>
435
+ </li>
436
+ </ul>
437
+ )}
389
438
  </div>
390
439
  </div>
391
440
  </li>
@@ -509,10 +558,10 @@ export const Megamenu = ({ className }: any) => {
509
558
  CLASS_INPUT,
510
559
  CLASS_INPUT_SEARCH_ICON_WITH_PLACEHOLDER,
511
560
  )}
512
- id="search-1"
561
+ id="megamenu-mobile-search-input"
513
562
  type="text"
514
563
  placeholder="Search"
515
- name="search-1"
564
+ name="search"
516
565
  />
517
566
  <ul className={cx(CLASS_SUBNAV, "hide")}>
518
567
  <li className={CLASS_SUBNAV_ITEM}>
@@ -598,7 +647,12 @@ export const Megamenu = ({ className }: any) => {
598
647
  </ul>
599
648
  </div>
600
649
  <div>
601
- <h3 id="mobile-internet-heading">Internet</h3>
650
+ <p
651
+ id="mobile-internet-heading"
652
+ className={CLASS_TEXT_LARGE}
653
+ >
654
+ Internet
655
+ </p>
602
656
  <ul
603
657
  className={CLASS_SUBNAV}
604
658
  role="group"
@@ -618,7 +672,12 @@ export const Megamenu = ({ className }: any) => {
618
672
  </li>
619
673
  </ul>
620
674
 
621
- <h3 id="mobile-tv-heading">Televízia</h3>
675
+ <p
676
+ id="mobile-tv-heading"
677
+ className={CLASS_TEXT_LARGE}
678
+ >
679
+ Televízia
680
+ </p>
622
681
  <ul
623
682
  className={CLASS_SUBNAV}
624
683
  role="group"
@@ -638,16 +697,28 @@ export const Megamenu = ({ className }: any) => {
638
697
  </li>
639
698
  </ul>
640
699
 
641
- <h3 id="mobile-internet-tv-heading">
700
+ <p
701
+ id="mobile-internet-tv-heading"
702
+ className={CLASS_TEXT_LARGE}
703
+ >
642
704
  Internet + televízia
643
- </h3>
705
+ </p>
644
706
  <ul
645
707
  className={CLASS_SUBNAV}
646
708
  role="group"
647
709
  aria-labelledby="mobile-internet-tv-heading"
648
710
  >
649
711
  <li className={CLASS_SUBNAV_ITEM}>
650
- <a href="#">Ponuka Love</a>
712
+ <a href="#">Ponuka Love</a>{" "}
713
+ <span
714
+ className={cx(
715
+ CLASS_TAG,
716
+ CLASS_TAG_ORANGE,
717
+ CLASS_TAG_SMALL,
718
+ )}
719
+ >
720
+ Novinka
721
+ </span>
651
722
  </li>
652
723
  <li className={CLASS_SUBNAV_ITEM}>
653
724
  <a href="#">Výhodný pár zariadení</a>
@@ -660,9 +731,12 @@ export const Megamenu = ({ className }: any) => {
660
731
  </li>
661
732
  </ul>
662
733
 
663
- <h3 id="mobile-customer-heading">
734
+ <p
735
+ id="mobile-customer-heading"
736
+ className={CLASS_TEXT_LARGE}
737
+ >
664
738
  Ste náš zákazník?
665
- </h3>
739
+ </p>
666
740
  <ul
667
741
  className={CLASS_SUBNAV}
668
742
  role="group"
@@ -33,9 +33,12 @@ import {
33
33
  CLASS_ACCORDION_ITEM,
34
34
  CLASS_ACCORDION_TITLE,
35
35
  CLASS_SPACER_SMALL,
36
+ CLASS_LIST_INLINE,
37
+ CLASS_TAG,
36
38
  } from "./constants";
39
+ import { list, MegamenuProps } from "./Megamenu";
37
40
 
38
- export const MegamenuBlog = ({ className }: any) => {
41
+ export const MegamenuBlog = ({ className, searchEmpty }: MegamenuProps) => {
39
42
  return (
40
43
  <header>
41
44
  <nav
@@ -45,10 +48,7 @@ export const MegamenuBlog = ({ className }: any) => {
45
48
  >
46
49
  <div className={CLASS_MAIN}>
47
50
  <div className={CLASS_CONTAINER}>
48
- <h2 id="menu-title" className="sr-only">
49
- Hlavné menu
50
- </h2>
51
- <ul className={CLASS_NAV} aria-labelledby="menu-title">
51
+ <ul className={CLASS_NAV} aria-label="Hlavné menu">
52
52
  <li className={cx(CLASS_NAV_ITEM, CLASS_NAV_ITEM_MAIN)}>
53
53
  <a
54
54
  href="#"
@@ -109,31 +109,45 @@ export const MegamenuBlog = ({ className }: any) => {
109
109
  CLASS_INPUT,
110
110
  CLASS_INPUT_SEARCH_ICON_WITH_PLACEHOLDER,
111
111
  )}
112
- id="search-1"
112
+ id="megamenu-blog-search-input"
113
113
  type="text"
114
114
  placeholder="Search"
115
- name="search-1"
115
+ name="search"
116
+ defaultValue={searchEmpty ? "" : "apple"}
116
117
  />
117
- <ul className={CLASS_SUBNAV}>
118
- <li className={CLASS_SUBNAV_ITEM}>
119
- <a href="#">apple</a>
120
- </li>
121
- <li className={CLASS_SUBNAV_ITEM}>
122
- <a href="#">apple hodinky</a>
123
- </li>
124
- <li className={CLASS_SUBNAV_ITEM}>
125
- <a href="#">apple iphone</a>
126
- </li>
127
- <li className={CLASS_SUBNAV_ITEM}>
128
- <a href="#">apple 16</a>
129
- </li>
130
- <li className={CLASS_SUBNAV_ITEM}>
131
- <a href="#">apple pro</a>
132
- </li>
133
- <li className={CLASS_SUBNAV_ITEM}>
134
- <a href="#">apple watch</a>
135
- </li>
136
- </ul>
118
+ {searchEmpty ? (
119
+ <>
120
+ <p>Najhľadanejši výrazy</p>
121
+ <ul className={CLASS_LIST_INLINE}>
122
+ {list.map((item) => (
123
+ <a key={item}>
124
+ <span className={cx(CLASS_TAG)}>{item}</span>
125
+ </a>
126
+ ))}
127
+ </ul>
128
+ </>
129
+ ) : (
130
+ <ul className={CLASS_SUBNAV}>
131
+ <li className={CLASS_SUBNAV_ITEM}>
132
+ <a href="#">apple</a>
133
+ </li>
134
+ <li className={CLASS_SUBNAV_ITEM}>
135
+ <a href="#">apple hodinky</a>
136
+ </li>
137
+ <li className={CLASS_SUBNAV_ITEM}>
138
+ <a href="#">apple iphone</a>
139
+ </li>
140
+ <li className={CLASS_SUBNAV_ITEM}>
141
+ <a href="#">apple 16</a>
142
+ </li>
143
+ <li className={CLASS_SUBNAV_ITEM}>
144
+ <a href="#">apple pro</a>
145
+ </li>
146
+ <li className={CLASS_SUBNAV_ITEM}>
147
+ <a href="#">apple watch</a>
148
+ </li>
149
+ </ul>
150
+ )}
137
151
  </div>
138
152
  </div>
139
153
  </li>
@@ -49,6 +49,8 @@ export const CLASS_INPUT = `${CLASS_ROOT}__input`;
49
49
  export const CLASS_INPUT_SEARCH_ICON_WITH_PLACEHOLDER = `${CLASS_ROOT}__input--search-icon-with-placeholder`;
50
50
 
51
51
  export const CLASS_TAG = `${CLASS_ROOT}__tag`;
52
+ export const CLASS_TAG_ORANGE = `${CLASS_ROOT}__tag--orange`;
53
+ export const CLASS_TAG_SMALL = `${CLASS_ROOT}__tag--small`;
52
54
  export const CLASS_TAG_TRANSPARENT = `${CLASS_ROOT}__tag--transparent`;
53
55
  export const CLASS_TAG_LARGE = `${CLASS_ROOT}__tag--large`;
54
56
 
@@ -33,17 +33,8 @@ window.ODSMegamenu = window.ODSMegamenu || {
33
33
  Megamenu,
34
34
  instances: [],
35
35
  init: () => {
36
- // Debug logging
37
- const elements = document.querySelectorAll("[data-megamenu]");
38
- console.log("Found elements with data-megamenu:", elements.length);
39
-
40
36
  // Initialize all Megamenu instances on the page
41
37
  window.ODSMegamenu.instances = moduleFactory(Megamenu, "[data-megamenu]");
42
- console.log(
43
- "ODSMegamenu instances created:",
44
- window.ODSMegamenu.instances.length,
45
- );
46
- console.log("ODSMegamenu loaded and initialized");
47
38
  },
48
39
  destroy: () => {
49
40
  // Destroy all instances
@@ -206,7 +206,7 @@
206
206
  left: 0;
207
207
  width: 100%;
208
208
  background-color: var(--color-surface-primary);
209
- padding: convert.to-rem(20px) 0;
209
+ padding: convert.to-rem(60px) 0 convert.to-rem(60px) 0;
210
210
  display: none;
211
211
  opacity: 0;
212
212
  z-index: 15;
@@ -353,6 +353,8 @@
353
353
  }
354
354
 
355
355
  @mixin subnav-item {
356
+ display: flex;
357
+ gap: convert.to-rem(10px);
356
358
  margin-bottom: convert.to-rem(10px) !important;
357
359
 
358
360
  &:last-child {
@@ -579,7 +581,7 @@
579
581
  height: 100vh;
580
582
  }
581
583
 
582
- @include breakpoint.get("lg", "down") {
584
+ @include breakpoint.get("md", "down") {
583
585
  display: none;
584
586
  }
585
587
  }
@@ -705,6 +707,22 @@
705
707
  @include tag.color($variant);
706
708
  }
707
709
  }
710
+
711
+ // Interactive styles for button and anchor tags
712
+ &:not(&--transparent):where(button) {
713
+ @include tag.button();
714
+ z-index: 2;
715
+ }
716
+
717
+ &:not(&--transparent):where(a) {
718
+ @include tag.button();
719
+ z-index: 2;
720
+ text-decoration: none !important;
721
+ }
722
+
723
+ &:not(&--transparent) {
724
+ @include tag.buttton-disabled();
725
+ }
708
726
  }
709
727
 
710
728
  @mixin tag-transparent {
@@ -11,10 +11,12 @@
11
11
  }
12
12
 
13
13
  #{config.$class-root},
14
+ .is-light #{config.$class-root},
14
15
  #{config.$class-root}.is-light {
15
16
  @include mixins.light-vars;
16
17
  }
17
18
 
19
+ .is-dark #{config.$class-root},
18
20
  #{config.$class-root}.is-dark {
19
21
  @include mixins.dark-vars;
20
22
  }
@@ -5,6 +5,8 @@ interface ModalProductHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
5
5
  image?: React.ReactNode;
6
6
  /** Use small spacing */
7
7
  space?: "small";
8
+ /** Optional id for accessibility (e.g., for aria-labelledby) */
9
+ titleId?: string;
8
10
  }
9
11
 
10
12
  export const CLASS_ROOT = "modal__product";
@@ -12,7 +14,7 @@ export const CLASS_ROOT = "modal__product";
12
14
  const ModalProductHeader = React.forwardRef<
13
15
  HTMLDivElement,
14
16
  ModalProductHeaderProps
15
- >(({ className, children, image, space, ...other }, ref) => {
17
+ >(({ className, children, image, space, titleId, ...other }, ref) => {
16
18
  const classes = cx(
17
19
  `${CLASS_ROOT}-header`,
18
20
  {
@@ -25,7 +27,9 @@ const ModalProductHeader = React.forwardRef<
25
27
 
26
28
  return (
27
29
  <div className={classes} ref={ref} {...other}>
28
- <div className={contentClasses}>{children}</div>
30
+ <div className={contentClasses} id={titleId}>
31
+ {children}
32
+ </div>
29
33
  {image}
30
34
  </div>
31
35
  );
@@ -70,4 +70,16 @@ describe("rendering ModalProductHeader", () => {
70
70
  container.querySelector(".modal__product-content"),
71
71
  ).toHaveTextContent("Product Header");
72
72
  });
73
+
74
+ it("has titleId attribute when titleId prop is provided", () => {
75
+ const { container } = render(
76
+ <ModalProductHeader titleId="test-title-id">
77
+ Product Header
78
+ </ModalProductHeader>,
79
+ );
80
+ expect(container.querySelector(".modal__product-content")).toHaveAttribute(
81
+ "id",
82
+ "test-title-id",
83
+ );
84
+ });
73
85
  });
@@ -39,7 +39,7 @@ export const PromoBanner = ({
39
39
  className,
40
40
  );
41
41
  return (
42
- <Grid className={classes}>
42
+ <Grid columnGapSize="large" className={classes}>
43
43
  {variant === "reverse" && image && (
44
44
  <GridCol
45
45
  size={{ xs: 12, md: 6 }}
@@ -83,6 +83,8 @@ export const PromoBanner = ({
83
83
  {
84
84
  [`${CLASS_ROOT}__image--bleed-right`]: bleedImage,
85
85
  [`align-self-${alignImage}`]: alignImage,
86
+ "pt-none": alignImage === "top",
87
+ "pb-none": alignImage === "bottom",
86
88
  "align-center": variant === "vertical",
87
89
  },
88
90
  imageClassName,
@@ -29,8 +29,13 @@
29
29
  text-align: end;
30
30
  align-self: center;
31
31
 
32
+ padding-top: space.get("xlarge");
33
+ padding-bottom: space.get("xlarge");
34
+
32
35
  @include breakpoint.get("md", "down") {
33
36
  text-align: center;
37
+ padding-top: 0;
38
+ padding-bottom: 0;
34
39
  }
35
40
  }
36
41
 
@@ -166,13 +166,12 @@
166
166
 
167
167
  @mixin list-inline() {
168
168
  @include list-unstyled();
169
+ gap: space.get("small");
170
+ display: flex;
171
+ flex-wrap: wrap;
169
172
 
170
173
  > li {
171
- display: inline-block;
172
-
173
- &:not(:last-child) {
174
- margin-right: space.get("small");
175
- }
174
+ display: inline-flex;
176
175
  }
177
176
  }
178
177