@orangesk/orange-design-system 2.0.0-beta.30 → 2.0.0-beta.32

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 (82) hide show
  1. package/README.md +7 -7
  2. package/build/appstore.svg +31 -0
  3. package/build/components/Breadcrumbs/style.css +1 -1
  4. package/build/components/Breadcrumbs/style.css.map +1 -1
  5. package/build/components/Carousel/style.css +1 -1
  6. package/build/components/Carousel/style.css.map +1 -1
  7. package/build/components/Footer/style.css +1 -1
  8. package/build/components/Footer/style.css.map +1 -1
  9. package/build/components/Megamenu/style.css +1 -1
  10. package/build/components/Megamenu/style.css.map +1 -1
  11. package/build/components/Preview/style.css +1 -1
  12. package/build/components/Preview/style.css.map +1 -1
  13. package/build/components/PromoBanner/style.css +1 -1
  14. package/build/components/PromoBanner/style.css.map +1 -1
  15. package/build/components/index.js +1 -1
  16. package/build/components/index.js.map +1 -1
  17. package/build/components/tsconfig.tsbuildinfo +1 -1
  18. package/build/components/types/index.d.ts +17 -2
  19. package/build/components/types/src/components/Carousel/Carousel.static.d.ts +1 -11
  20. package/build/components/types/src/components/Footer/Footer.static.d.ts +21 -0
  21. package/build/components/types/src/components/Footer/constants.d.ts +12 -2
  22. package/build/components/types/src/components/Footer/data.d.ts +5 -0
  23. package/build/components/types/src/components/Footer/static.d.ts +21 -0
  24. package/build/components/types/src/components/Megamenu/Megamenu.d.ts +4 -2
  25. package/build/components/types/src/components/Megamenu/Megamenu.static.d.ts +16 -5
  26. package/build/components/types/src/components/Megamenu/MegamenuBlog.d.ts +1 -1
  27. package/build/components/types/src/components/Megamenu/MegamenuSearchContent.d.ts +10 -0
  28. package/build/components/types/src/components/Megamenu/MyOrangeMobilePanel.d.ts +6 -0
  29. package/build/components/types/src/components/Megamenu/constants.d.ts +15 -0
  30. package/build/components/types/src/components/Megamenu/data.d.ts +21 -0
  31. package/build/components/types/src/components/Megamenu/ids.d.ts +11 -0
  32. package/build/components/types/src/components/PromoBanner/PromoBanner.d.ts +5 -1
  33. package/build/components/types/src/components/index.d.ts +2 -1
  34. package/build/googleplay.svg +52 -0
  35. package/build/lib/base.css.map +1 -1
  36. package/build/lib/components.css +1 -1
  37. package/build/lib/components.css.map +1 -1
  38. package/build/lib/footer.css +1 -1
  39. package/build/lib/footer.css.map +1 -1
  40. package/build/lib/footer.js +2 -0
  41. package/build/lib/footer.js.map +1 -0
  42. package/build/lib/megamenu.css +1 -1
  43. package/build/lib/megamenu.css.map +1 -1
  44. package/build/lib/megamenu.js +1 -1
  45. package/build/lib/megamenu.js.map +1 -1
  46. package/build/lib/scripts.js +1 -1
  47. package/build/lib/scripts.js.map +1 -1
  48. package/build/lib/style.css +1 -1
  49. package/build/lib/style.css.map +1 -1
  50. package/build/lib/tsconfig.tsbuildinfo +1 -1
  51. package/build/lib/utilities.css +1 -1
  52. package/build/lib/utilities.css.map +1 -1
  53. package/build/search-index.json +8 -4
  54. package/package.json +12 -12
  55. package/src/components/Breadcrumbs/styles/mixins.scss +6 -1
  56. package/src/components/Carousel/Carousel.static.ts +60 -89
  57. package/src/components/Carousel/styles/mixins.scss +4 -12
  58. package/src/components/Footer/Footer.static.ts +130 -0
  59. package/src/components/Footer/Footer.tsx +142 -62
  60. package/src/components/Footer/constants.ts +12 -2
  61. package/src/components/Footer/data.ts +13 -0
  62. package/src/components/Footer/static.ts +59 -0
  63. package/src/components/Footer/styles/mixins.scss +122 -18
  64. package/src/components/Footer/styles/style.scss +63 -4
  65. package/src/components/Footer/tests/Footer.unit.test.js +2 -2
  66. package/src/components/Megamenu/Megamenu.static.ts +200 -90
  67. package/src/components/Megamenu/Megamenu.tsx +363 -615
  68. package/src/components/Megamenu/MegamenuBlog.tsx +192 -73
  69. package/src/components/Megamenu/MegamenuSearchContent.tsx +74 -0
  70. package/src/components/Megamenu/MyOrangeMobilePanel.tsx +127 -0
  71. package/src/components/Megamenu/constants.ts +15 -0
  72. package/src/components/Megamenu/data.ts +231 -0
  73. package/src/components/Megamenu/ids.ts +35 -0
  74. package/src/components/Megamenu/styles/mixins.scss +223 -16
  75. package/src/components/Megamenu/styles/style.scss +64 -0
  76. package/src/components/Preview/styles/style.scss +2 -1
  77. package/src/components/PromoBanner/PromoBanner.tsx +12 -1
  78. package/src/components/PromoBanner/styles/mixins.scss +31 -7
  79. package/src/components/PromoBanner/styles/style.scss +41 -0
  80. package/src/components/PromoBanner/tests/PromoBanner.unit.test.js +44 -0
  81. package/src/components/index.ts +3 -0
  82. package/src/styles/utilities/horizontal-scroll.scss +28 -11
@@ -30,6 +30,10 @@
30
30
 
31
31
  &-item {
32
32
  @include mixins.nav-item;
33
+
34
+ &--lead {
35
+ @include mixins.nav-item-lead;
36
+ }
33
37
  }
34
38
 
35
39
  &--vertical {
@@ -40,6 +44,10 @@
40
44
  @include mixins.nav-space-small;
41
45
  }
42
46
 
47
+ &--mobile-locale {
48
+ @include mixins.nav-mobile-locale;
49
+ }
50
+
43
51
  &-dropdown {
44
52
  @include mixins.nav-dropdown;
45
53
 
@@ -54,6 +62,14 @@
54
62
 
55
63
  &-link {
56
64
  @include mixins.nav-link;
65
+
66
+ &--locale {
67
+ @include mixins.nav-link-locale;
68
+ }
69
+
70
+ &--no-line {
71
+ @include mixins.nav-link-no-line;
72
+ }
57
73
  }
58
74
 
59
75
  &-cart-icon {
@@ -85,6 +101,10 @@
85
101
  }
86
102
  }
87
103
 
104
+ &__divider {
105
+ @include mixins.divider;
106
+ }
107
+
88
108
  &__top {
89
109
  @include mixins.top;
90
110
  }
@@ -115,6 +135,38 @@
115
135
  &-body {
116
136
  @include mixins.mobile-body;
117
137
  }
138
+
139
+ &-account {
140
+ @include mixins.mobile-account;
141
+
142
+ &-avatar {
143
+ @include mixins.mobile-account-avatar;
144
+ }
145
+
146
+ &-name {
147
+ @include mixins.mobile-account-name;
148
+ }
149
+
150
+ &-phone {
151
+ @include mixins.mobile-account-phone;
152
+ }
153
+
154
+ &-logout {
155
+ @include mixins.mobile-account-logout;
156
+ }
157
+
158
+ &-cta {
159
+ @include mixins.mobile-account-cta;
160
+ }
161
+
162
+ &-links {
163
+ @include mixins.mobile-account-links;
164
+ }
165
+
166
+ &-link {
167
+ @include mixins.mobile-account-link;
168
+ }
169
+ }
118
170
  }
119
171
 
120
172
  &__container {
@@ -133,6 +185,14 @@
133
185
  @include mixins.text-large;
134
186
  }
135
187
 
188
+ &__caption {
189
+ @include mixins.caption;
190
+
191
+ &--large {
192
+ @include mixins.caption-large;
193
+ }
194
+ }
195
+
136
196
  &-icon {
137
197
  @include mixins.icon;
138
198
  }
@@ -184,6 +244,10 @@
184
244
  &__tag {
185
245
  @include mixins.tag;
186
246
 
247
+ &--orange {
248
+ @include mixins.tag-orange;
249
+ }
250
+
187
251
  &--transparent {
188
252
  @include mixins.tag-transparent;
189
253
  }
@@ -53,11 +53,12 @@
53
53
  padding: 24px;
54
54
  border-radius: 0 !important;
55
55
  margin-bottom: 0 !important;
56
- overflow: visible;
56
+ overflow: visible !important;
57
57
  }
58
58
 
59
59
  .previewLive {
60
60
  transition: all 200ms ease-in-out;
61
+ overflow: visible;
61
62
  }
62
63
 
63
64
  .selectWrapper {
@@ -7,6 +7,10 @@ interface PromoBannerProps {
7
7
  className?: string;
8
8
  image?: string;
9
9
  alignImage?: "bottom" | "top";
10
+ /** Remove top padding from item on sm and smaller breakpoints */
11
+ flushTopSmDown?: boolean;
12
+ /** Remove bottom padding from item on sm and smaller breakpoints */
13
+ flushBottomSmDown?: boolean;
10
14
  imageFullWidth?: boolean;
11
15
  /** Make image extend to the edge of viewport even when inside container */
12
16
  bleedImage?: boolean;
@@ -21,6 +25,8 @@ export const PromoBanner = ({
21
25
  image,
22
26
  className,
23
27
  alignImage,
28
+ flushTopSmDown,
29
+ flushBottomSmDown,
24
30
  bleedImage,
25
31
  children,
26
32
  itemClassName,
@@ -28,7 +34,12 @@ export const PromoBanner = ({
28
34
  variant,
29
35
  imageFullWidth,
30
36
  }: PromoBannerProps) => {
31
- const classes = cx(CLASS_ROOT, className);
37
+ const classes = cx(CLASS_ROOT, className, {
38
+ [`${CLASS_ROOT}--flush-top-sm-down`]: flushTopSmDown,
39
+ [`${CLASS_ROOT}--flush-bottom-sm-down`]: flushBottomSmDown,
40
+ [`${CLASS_ROOT}--reverse`]: variant === "reverse" && !!image,
41
+ [`${CLASS_ROOT}--vertical`]: variant === "vertical",
42
+ });
32
43
  return (
33
44
  <div className={classes}>
34
45
  <Grid columnGapSize="large">
@@ -1,5 +1,4 @@
1
1
  @use "sass:map" as sassmap;
2
- @use "./../../../styles/tools/convert";
3
2
  @use "./../../../styles/tools/generate";
4
3
  @use "./../../../styles/tokens/breakpoint";
5
4
  @use "./../../../styles/tokens/space";
@@ -15,15 +14,36 @@
15
14
  padding-bottom: space.get("large");
16
15
  }
17
16
 
17
+ &.grid__col {
18
+ @include breakpoint.get("sm", "down") {
19
+ padding-right: 0 !important;
20
+ }
21
+
22
+ padding-left: 0 !important;
23
+ }
24
+
18
25
  display: flex;
19
26
  flex-direction: column;
20
27
  justify-content: center;
28
+ min-width: 0;
21
29
 
22
30
  > * {
23
31
  width: fit-content;
24
32
  }
25
33
  }
26
34
 
35
+ @mixin promo-banner-item-no-top-padding-sm-down() {
36
+ @include breakpoint.get("sm", "down") {
37
+ padding-top: 0;
38
+ }
39
+ }
40
+
41
+ @mixin promo-banner-item-no-bottom-padding-sm-down() {
42
+ @include breakpoint.get("sm", "down") {
43
+ padding-bottom: 0;
44
+ }
45
+ }
46
+
27
47
  @mixin promo-banner-image() {
28
48
  order: 2;
29
49
  text-align: end;
@@ -34,6 +54,14 @@
34
54
  padding-top: 0;
35
55
  padding-bottom: 0;
36
56
  }
57
+
58
+ &.grid__col {
59
+ @include breakpoint.get("sm", "down") {
60
+ padding-left: 0 !important;
61
+ }
62
+
63
+ padding-right: 0 !important;
64
+ }
37
65
  }
38
66
 
39
67
  @mixin promo-banner-image-bleed-right() {
@@ -43,14 +71,10 @@
43
71
 
44
72
  > * {
45
73
  // Extend image to the right edge of viewport even when inside .container
46
- margin-right: calc((50vw - 100%) * -1);
47
-
48
- @include breakpoint.get("md", "down") {
49
- margin-right: calc((65vw - 100%) * -1);
50
- }
74
+ transform: translateX(calc(50vw - 100% + -20px));
51
75
 
52
76
  @include breakpoint.get("sm", "down") {
53
- margin-right: calc(60vw - 100%);
77
+ transform: translate(10px);
54
78
  }
55
79
  }
56
80
  }
@@ -1,11 +1,52 @@
1
1
  @use "./mixins";
2
+ @use "./../../../styles/tokens/breakpoint";
3
+ @use "./../../../styles/tokens/space";
2
4
 
3
5
  @layer components {
4
6
  .promo-banner {
7
+ .grid {
8
+ margin-left: 0 !important;
9
+ margin-right: 0 !important;
10
+ }
11
+
5
12
  &__item {
6
13
  @include mixins.promo-banner-item;
7
14
  }
8
15
 
16
+ &--flush-top-sm-down {
17
+ .promo-banner__item {
18
+ @include mixins.promo-banner-item-no-top-padding-sm-down;
19
+ }
20
+ }
21
+
22
+ &--flush-bottom-sm-down {
23
+ .promo-banner__item {
24
+ @include mixins.promo-banner-item-no-bottom-padding-sm-down;
25
+ }
26
+ }
27
+
28
+ &--vertical {
29
+ .promo-banner__item.grid__col,
30
+ .promo-banner__image.grid__col:not(.promo-banner__image--bleed-right) {
31
+ padding-left: 0 !important;
32
+ padding-right: 0 !important;
33
+ }
34
+ }
35
+
36
+ &--reverse {
37
+ @include breakpoint.get("md") {
38
+ .promo-banner__item.grid__col {
39
+ padding-left: space.get("medium") !important;
40
+ padding-right: 0 !important;
41
+ }
42
+
43
+ .promo-banner__image.grid__col {
44
+ padding-left: 0 !important;
45
+ padding-right: space.get("medium") !important;
46
+ }
47
+ }
48
+ }
49
+
9
50
  &__image {
10
51
  @include mixins.promo-banner-image;
11
52
 
@@ -124,6 +124,34 @@ describe("PromoBanner", () => {
124
124
  expect(item).toHaveClass("promo-banner__item", "custom-item-class");
125
125
  });
126
126
  });
127
+
128
+ describe("flushTopSmDown", () => {
129
+ it("applies explicit top flush modifier class", () => {
130
+ render(<PromoBanner flushTopSmDown>Content</PromoBanner>);
131
+ const banner = document.querySelector(".promo-banner");
132
+ expect(banner).toHaveClass("promo-banner--flush-top-sm-down");
133
+ });
134
+
135
+ it("does not apply explicit top flush modifier class when disabled", () => {
136
+ render(<PromoBanner>Content</PromoBanner>);
137
+ const banner = document.querySelector(".promo-banner");
138
+ expect(banner).not.toHaveClass("promo-banner--flush-top-sm-down");
139
+ });
140
+ });
141
+
142
+ describe("flushBottomSmDown", () => {
143
+ it("applies explicit bottom flush modifier class", () => {
144
+ render(<PromoBanner flushBottomSmDown>Content</PromoBanner>);
145
+ const banner = document.querySelector(".promo-banner");
146
+ expect(banner).toHaveClass("promo-banner--flush-bottom-sm-down");
147
+ });
148
+
149
+ it("does not apply explicit bottom flush modifier class when disabled", () => {
150
+ render(<PromoBanner>Content</PromoBanner>);
151
+ const banner = document.querySelector(".promo-banner");
152
+ expect(banner).not.toHaveClass("promo-banner--flush-bottom-sm-down");
153
+ });
154
+ });
127
155
  });
128
156
 
129
157
  describe("variant", () => {
@@ -160,6 +188,12 @@ describe("PromoBanner", () => {
160
188
  });
161
189
 
162
190
  describe("vertical variant", () => {
191
+ it("applies vertical modifier class to root", () => {
192
+ render(<PromoBanner variant="vertical">Content</PromoBanner>);
193
+ const banner = document.querySelector(".promo-banner");
194
+ expect(banner).toHaveClass("promo-banner--vertical");
195
+ });
196
+
163
197
  it("applies vertical variant column layout", () => {
164
198
  render(<PromoBanner variant="vertical">Content</PromoBanner>);
165
199
  const contentCol = document
@@ -202,6 +236,16 @@ describe("PromoBanner", () => {
202
236
  });
203
237
 
204
238
  describe("reverse variant", () => {
239
+ it("applies reverse modifier class to root", () => {
240
+ render(
241
+ <PromoBanner variant="reverse" image="test.jpg">
242
+ Content
243
+ </PromoBanner>,
244
+ );
245
+ const banner = document.querySelector(".promo-banner");
246
+ expect(banner).toHaveClass("promo-banner--reverse");
247
+ });
248
+
205
249
  it("applies reverse variant column layout", () => {
206
250
  render(
207
251
  <PromoBanner variant="reverse" image="test.jpg">
@@ -41,6 +41,7 @@ import { Grid, GridCol } from "./Grid";
41
41
  import { Image } from "./Image";
42
42
  import { Link } from "./Link";
43
43
  import { Loader } from "./Loader";
44
+ import { Megamenu, MegamenuBlog } from "./Megamenu";
44
45
  import {
45
46
  Modal,
46
47
  ModalBody,
@@ -154,6 +155,8 @@ export {
154
155
  List,
155
156
  ListItem,
156
157
  Loader,
158
+ Megamenu,
159
+ MegamenuBlog,
157
160
  Message,
158
161
  Modal,
159
162
  ModalBody,
@@ -7,25 +7,42 @@
7
7
  @layer utilities {
8
8
  [class*="horizontal-scroll"],
9
9
  .table-scrollable {
10
- scrollbar-color: var(--color-fill-contrast) var(--color-surface-moderate);
11
- scrollbar-width: thin;
12
10
  scroll-snap-type: x mandatory;
13
11
 
14
12
  > * {
15
13
  scroll-snap-align: start;
16
14
  }
17
15
 
18
- &::-webkit-scrollbar {
19
- height: convert.to-rem(6px);
20
- appearance: none;
21
- background-color: var(--color-surface-moderate);
22
- border-radius: 99px;
16
+ @supports selector(::-webkit-scrollbar) {
17
+ &::-webkit-scrollbar {
18
+ height: convert.to-rem(6px);
19
+ appearance: none;
20
+ background-color: var(--color-surface-moderate);
21
+ border-radius: 99px;
22
+ }
23
+
24
+ &::-webkit-scrollbar-track {
25
+ background-color: var(--color-surface-moderate);
26
+ border-radius: 99px;
27
+ }
28
+
29
+ &::-webkit-scrollbar-thumb {
30
+ opacity: 1;
31
+ background-color: var(--color-fill-contrast);
32
+ border-radius: 99px;
33
+ }
34
+
35
+ &:hover::-webkit-scrollbar-thumb,
36
+ &:active::-webkit-scrollbar-thumb,
37
+ &::-webkit-scrollbar-thumb:hover,
38
+ &::-webkit-scrollbar-thumb:active {
39
+ background-color: var(--color-fill-contrast) !important;
40
+ }
23
41
  }
24
42
 
25
- &::-webkit-scrollbar-thumb {
26
- opacity: 1;
27
- background-color: var(--color-fill-contrast);
28
- border-radius: 99px;
43
+ @supports not selector(::-webkit-scrollbar) {
44
+ scrollbar-color: var(--color-fill-contrast) var(--color-surface-moderate);
45
+ scrollbar-width: thin;
29
46
  }
30
47
  }
31
48