@mirweb/mir-web-components 1.15.2 → 2.0.0

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 (184) hide show
  1. package/README.md +2 -2
  2. package/dist/assets/index-Cl4fzBs2.js +17 -0
  3. package/dist/assets/scss/globals.scss +231 -0
  4. package/dist/assets/scss/index.scss +4 -0
  5. package/dist/assets/scss/normalize.scss +393 -0
  6. package/dist/assets/scss/reset.scss +102 -0
  7. package/dist/assets/scss/variables.scss +95 -0
  8. package/dist/components/atoms/button/button.vue +81 -0
  9. package/dist/components/atoms/checkbox/checkbox.vue +125 -0
  10. package/dist/components/atoms/chip/chip.vue +55 -0
  11. package/dist/components/atoms/dropdown/dropdown.vue +490 -0
  12. package/dist/components/atoms/image/image.vue +42 -0
  13. package/dist/components/atoms/label/label.vue +52 -0
  14. package/dist/components/atoms/link/link.vue +166 -0
  15. package/dist/components/atoms/radio-button/radio-button.vue +110 -0
  16. package/dist/components/atoms/select/select.vue +116 -0
  17. package/dist/components/atoms/select-multiple/select-multiple.vue +210 -0
  18. package/dist/components/atoms/slider/slider.vue +322 -0
  19. package/dist/components/atoms/text-field/text-field.vue +273 -0
  20. package/dist/components/atoms/textarea/textarea.vue +179 -0
  21. package/dist/components/atoms/video/video.vue +98 -0
  22. package/dist/components/blocks/accordion/accordion.vue +222 -0
  23. package/dist/components/blocks/card-display/card-display.vue +125 -0
  24. package/dist/components/blocks/column-grid/column-grid.vue +201 -0
  25. package/dist/components/blocks/facts/facts.vue +156 -0
  26. package/dist/components/blocks/features/features.vue +176 -0
  27. package/dist/components/blocks/flashcards/flashcards.vue +212 -0
  28. package/dist/components/blocks/form-script/form-script.vue +172 -0
  29. package/dist/components/blocks/frontpage-hero/frontpage-hero.vue +214 -0
  30. package/dist/components/blocks/headline/headline.vue +93 -0
  31. package/dist/components/blocks/hero/hero.vue +173 -0
  32. package/dist/components/blocks/image/image.vue +93 -0
  33. package/dist/components/blocks/image-gallery/image-gallery.vue +289 -0
  34. package/dist/components/blocks/logo-wall/logo-wall.vue +125 -0
  35. package/dist/components/blocks/micro-stories/micro-stories.vue +316 -0
  36. package/dist/components/blocks/pallet-jack/pallet-jack.vue +440 -0
  37. package/dist/components/blocks/policy/policy.vue +106 -0
  38. package/dist/components/blocks/product-hero/product-hero.vue +140 -0
  39. package/dist/components/blocks/promo/promo.vue +403 -0
  40. package/dist/components/blocks/quote/quote.vue +127 -0
  41. package/dist/components/blocks/rich-text/rich-text-columns.vue +159 -0
  42. package/dist/components/blocks/rich-text/rich-text.vue +296 -0
  43. package/dist/components/blocks/timeline/timeline.vue +232 -0
  44. package/dist/components/blocks/vimeo/vimeo.vue +52 -0
  45. package/dist/components/index.ts +51 -0
  46. package/dist/components/molecules/address/address.vue +123 -0
  47. package/dist/components/molecules/bullet-list/bullet-list.vue +99 -0
  48. package/dist/components/molecules/card/card.vue +302 -0
  49. package/dist/components/molecules/column-card/column-card.vue +178 -0
  50. package/dist/components/molecules/event-card/event-card.vue +111 -0
  51. package/dist/components/molecules/flashcard/flashcard.vue +293 -0
  52. package/dist/components/molecules/modal/modal.vue +113 -0
  53. package/dist/components/molecules/text-card/text-card.vue +74 -0
  54. package/dist/components/organisms/404/404.vue +79 -0
  55. package/dist/components/organisms/filter/filter.vue +89 -0
  56. package/dist/components/organisms/footer/footer.vue +356 -0
  57. package/dist/components/organisms/header/header.vue +754 -0
  58. package/dist/components/organisms/language-switcher/language-switcher.vue +68 -0
  59. package/dist/components/organisms/pagination/pagination.vue +85 -0
  60. package/dist/components/organisms/search/search.vue +153 -0
  61. package/dist/components/templates/404-error-page.vue +0 -0
  62. package/dist/directives/clickOutside.ts +15 -0
  63. package/dist/fonts/OpenSans-Light.woff2 +0 -0
  64. package/dist/fonts/OpenSans-Medium.woff2 +0 -0
  65. package/dist/fonts/OpenSans-Regular.woff2 +0 -0
  66. package/dist/fonts/OpenSans-SemiBold.woff2 +0 -0
  67. package/dist/fonts/Oscine_Bd.woff2 +0 -0
  68. package/dist/fonts/Oscine_Lt.woff2 +0 -0
  69. package/dist/fonts/Oscine_Rg.woff2 +0 -0
  70. package/dist/index.html +12 -0
  71. package/dist/main.css +1 -0
  72. package/package.json +8 -10
  73. package/dist/components/atoms/button/button.vue.d.ts +0 -5
  74. package/dist/components/atoms/button/button.vue.d.ts.map +0 -1
  75. package/dist/components/atoms/checkbox/checkbox.vue.d.ts +0 -5
  76. package/dist/components/atoms/checkbox/checkbox.vue.d.ts.map +0 -1
  77. package/dist/components/atoms/chip/chip.vue.d.ts +0 -5
  78. package/dist/components/atoms/chip/chip.vue.d.ts.map +0 -1
  79. package/dist/components/atoms/dropdown/dropdown.vue.d.ts +0 -5
  80. package/dist/components/atoms/dropdown/dropdown.vue.d.ts.map +0 -1
  81. package/dist/components/atoms/image/image.vue.d.ts +0 -5
  82. package/dist/components/atoms/image/image.vue.d.ts.map +0 -1
  83. package/dist/components/atoms/label/label.vue.d.ts +0 -5
  84. package/dist/components/atoms/label/label.vue.d.ts.map +0 -1
  85. package/dist/components/atoms/link/link.vue.d.ts +0 -5
  86. package/dist/components/atoms/link/link.vue.d.ts.map +0 -1
  87. package/dist/components/atoms/radio-button/radio-button.vue.d.ts +0 -5
  88. package/dist/components/atoms/radio-button/radio-button.vue.d.ts.map +0 -1
  89. package/dist/components/atoms/select/select.vue.d.ts +0 -5
  90. package/dist/components/atoms/select/select.vue.d.ts.map +0 -1
  91. package/dist/components/atoms/select-multiple/select-multiple.vue.d.ts +0 -5
  92. package/dist/components/atoms/select-multiple/select-multiple.vue.d.ts.map +0 -1
  93. package/dist/components/atoms/slider/slider.vue.d.ts +0 -5
  94. package/dist/components/atoms/slider/slider.vue.d.ts.map +0 -1
  95. package/dist/components/atoms/text-field/text-field.vue.d.ts +0 -5
  96. package/dist/components/atoms/text-field/text-field.vue.d.ts.map +0 -1
  97. package/dist/components/atoms/textarea/textarea.vue.d.ts +0 -5
  98. package/dist/components/atoms/textarea/textarea.vue.d.ts.map +0 -1
  99. package/dist/components/atoms/video/video.vue.d.ts +0 -5
  100. package/dist/components/atoms/video/video.vue.d.ts.map +0 -1
  101. package/dist/components/blocks/accordion/accordion.vue.d.ts +0 -5
  102. package/dist/components/blocks/accordion/accordion.vue.d.ts.map +0 -1
  103. package/dist/components/blocks/card-display/card-display.vue.d.ts +0 -6
  104. package/dist/components/blocks/card-display/card-display.vue.d.ts.map +0 -1
  105. package/dist/components/blocks/column-grid/column-grid.vue.d.ts +0 -5
  106. package/dist/components/blocks/column-grid/column-grid.vue.d.ts.map +0 -1
  107. package/dist/components/blocks/facts/facts.vue.d.ts +0 -5
  108. package/dist/components/blocks/facts/facts.vue.d.ts.map +0 -1
  109. package/dist/components/blocks/features/features.vue.d.ts +0 -5
  110. package/dist/components/blocks/features/features.vue.d.ts.map +0 -1
  111. package/dist/components/blocks/flashcards/flashcards.vue.d.ts +0 -5
  112. package/dist/components/blocks/flashcards/flashcards.vue.d.ts.map +0 -1
  113. package/dist/components/blocks/form-script/form-script.vue.d.ts +0 -5
  114. package/dist/components/blocks/form-script/form-script.vue.d.ts.map +0 -1
  115. package/dist/components/blocks/frontpage-hero/frontpage-hero.vue.d.ts +0 -5
  116. package/dist/components/blocks/frontpage-hero/frontpage-hero.vue.d.ts.map +0 -1
  117. package/dist/components/blocks/headline/headline.vue.d.ts +0 -5
  118. package/dist/components/blocks/headline/headline.vue.d.ts.map +0 -1
  119. package/dist/components/blocks/hero/hero.vue.d.ts +0 -5
  120. package/dist/components/blocks/hero/hero.vue.d.ts.map +0 -1
  121. package/dist/components/blocks/image/image.vue.d.ts +0 -5
  122. package/dist/components/blocks/image/image.vue.d.ts.map +0 -1
  123. package/dist/components/blocks/image-gallery/image-gallery.vue.d.ts +0 -5
  124. package/dist/components/blocks/image-gallery/image-gallery.vue.d.ts.map +0 -1
  125. package/dist/components/blocks/logo-wall/logo-wall.vue.d.ts +0 -5
  126. package/dist/components/blocks/logo-wall/logo-wall.vue.d.ts.map +0 -1
  127. package/dist/components/blocks/micro-stories/micro-stories.vue.d.ts +0 -5
  128. package/dist/components/blocks/micro-stories/micro-stories.vue.d.ts.map +0 -1
  129. package/dist/components/blocks/pallet-jack/pallet-jack.vue.d.ts +0 -5
  130. package/dist/components/blocks/pallet-jack/pallet-jack.vue.d.ts.map +0 -1
  131. package/dist/components/blocks/policy/policy.vue.d.ts +0 -4
  132. package/dist/components/blocks/policy/policy.vue.d.ts.map +0 -1
  133. package/dist/components/blocks/product-hero/product-hero.vue.d.ts +0 -5
  134. package/dist/components/blocks/product-hero/product-hero.vue.d.ts.map +0 -1
  135. package/dist/components/blocks/promo/promo.vue.d.ts +0 -5
  136. package/dist/components/blocks/promo/promo.vue.d.ts.map +0 -1
  137. package/dist/components/blocks/quote/quote.vue.d.ts +0 -5
  138. package/dist/components/blocks/quote/quote.vue.d.ts.map +0 -1
  139. package/dist/components/blocks/rich-text/rich-text-columns.vue.d.ts +0 -4
  140. package/dist/components/blocks/rich-text/rich-text-columns.vue.d.ts.map +0 -1
  141. package/dist/components/blocks/rich-text/rich-text.vue.d.ts +0 -5
  142. package/dist/components/blocks/rich-text/rich-text.vue.d.ts.map +0 -1
  143. package/dist/components/blocks/timeline/timeline.vue.d.ts +0 -5
  144. package/dist/components/blocks/timeline/timeline.vue.d.ts.map +0 -1
  145. package/dist/components/blocks/vimeo/vimeo.vue.d.ts +0 -5
  146. package/dist/components/blocks/vimeo/vimeo.vue.d.ts.map +0 -1
  147. package/dist/components/index.d.ts +0 -51
  148. package/dist/components/main.d.ts +0 -59
  149. package/dist/components/molecules/address/address.vue.d.ts +0 -5
  150. package/dist/components/molecules/address/address.vue.d.ts.map +0 -1
  151. package/dist/components/molecules/bullet-list/bullet-list.vue.d.ts +0 -5
  152. package/dist/components/molecules/bullet-list/bullet-list.vue.d.ts.map +0 -1
  153. package/dist/components/molecules/card/card.vue.d.ts +0 -5
  154. package/dist/components/molecules/card/card.vue.d.ts.map +0 -1
  155. package/dist/components/molecules/column-card/column-card.vue.d.ts +0 -5
  156. package/dist/components/molecules/column-card/column-card.vue.d.ts.map +0 -1
  157. package/dist/components/molecules/event-card/event-card.vue.d.ts +0 -5
  158. package/dist/components/molecules/event-card/event-card.vue.d.ts.map +0 -1
  159. package/dist/components/molecules/flashcard/flashcard.vue.d.ts +0 -5
  160. package/dist/components/molecules/flashcard/flashcard.vue.d.ts.map +0 -1
  161. package/dist/components/molecules/modal/modal.vue.d.ts +0 -5
  162. package/dist/components/molecules/modal/modal.vue.d.ts.map +0 -1
  163. package/dist/components/molecules/text-card/text-card.vue.d.ts +0 -5
  164. package/dist/components/molecules/text-card/text-card.vue.d.ts.map +0 -1
  165. package/dist/components/organisms/404/404.vue.d.ts +0 -5
  166. package/dist/components/organisms/404/404.vue.d.ts.map +0 -1
  167. package/dist/components/organisms/filter/filter.vue.d.ts +0 -5
  168. package/dist/components/organisms/filter/filter.vue.d.ts.map +0 -1
  169. package/dist/components/organisms/footer/footer.vue.d.ts +0 -5
  170. package/dist/components/organisms/footer/footer.vue.d.ts.map +0 -1
  171. package/dist/components/organisms/header/header.vue.d.ts +0 -6
  172. package/dist/components/organisms/header/header.vue.d.ts.map +0 -1
  173. package/dist/components/organisms/language-switcher/language-switcher.vue.d.ts +0 -5
  174. package/dist/components/organisms/language-switcher/language-switcher.vue.d.ts.map +0 -1
  175. package/dist/components/organisms/pagination/pagination.vue.d.ts +0 -5
  176. package/dist/components/organisms/pagination/pagination.vue.d.ts.map +0 -1
  177. package/dist/components/organisms/search/search.vue.d.ts +0 -4
  178. package/dist/components/organisms/search/search.vue.d.ts.map +0 -1
  179. package/dist/directives/clickOutside.d.ts +0 -4
  180. package/dist/main.d.ts +0 -1
  181. package/dist/mir-web-components.cjs.js +0 -1
  182. package/dist/mir-web-components.css +0 -1
  183. package/dist/mir-web-components.es.js +0 -3184
  184. package/dist/mir-web-components.umd.js +0 -2
@@ -0,0 +1,440 @@
1
+ <template>
2
+ <div
3
+ :class="[
4
+ 'promo__wrapper',
5
+ selectedVariant,
6
+ teaser ? 'promo__wrapper--teaser' : '',
7
+ ]"
8
+ >
9
+ <div class="promo__content">
10
+ <div
11
+ :class="[
12
+ 'promo__video',
13
+ reverse ? 'promo__video--reverse' : 'promo__video--default',
14
+ ]"
15
+ >
16
+ <div class="pallet-jack__media-wrap">
17
+ <div class="pallet-jack-link">
18
+ <slot name="pallet-jack-link" />
19
+ </div>
20
+ <div class="pallet-jack__media-wrap__inner-wrap">
21
+ <slot name="pallet-jack-video" />
22
+ </div>
23
+
24
+ <div class="pallet-jack__media-wrap__content-wrap">
25
+ <h3 class="regular-blue">{{ headline }}</h3>
26
+ <p>
27
+ {{ shortDescription }}
28
+ </p>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ <div
33
+ :class="[
34
+ 'promo__text',
35
+ reverse ? 'promo__text--reverse' : 'promo__text--default',
36
+ ]"
37
+ >
38
+ <atom-label
39
+ v-if="label"
40
+ :text="label"
41
+ :label-dark="variant === 'dark'"
42
+ ></atom-label>
43
+ <div
44
+ :class="[
45
+ 'promo__title',
46
+ variant === 'dark' ? 'promo__title--dark' : '',
47
+ ]"
48
+ >
49
+ <slot name="promo-text"></slot>
50
+ </div>
51
+ <atom-link
52
+ v-if="linkType === 'link'"
53
+ :link-type="
54
+ variant === 'dark'
55
+ ? 'regular_dark'
56
+ : variant === 'light'
57
+ ? 'regular_light'
58
+ : 'regular_light'
59
+ "
60
+ arrow
61
+ ><slot name="promo-link"></slot
62
+ ></atom-link>
63
+ <atom-link
64
+ v-if="linkType === 'button'"
65
+ :link-type="
66
+ variant === 'dark'
67
+ ? 'secondary_dark'
68
+ : variant === 'light'
69
+ ? 'secondary'
70
+ : 'secondary'
71
+ "
72
+ ><slot name="promo-link"></slot
73
+ ></atom-link>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </template>
78
+
79
+ <script setup lang="ts">
80
+ import { computed } from "vue";
81
+ import AtomLabel from "../../atoms/label/label.vue";
82
+ import AtomLink from "../../atoms/link/link.vue";
83
+
84
+ const VARIANTS = {
85
+ dark: "promo__wrapper--dark",
86
+ light: "promo__wrapper--light",
87
+ default: "promo__wrapper--default",
88
+ } as const;
89
+
90
+ type Variant = keyof typeof VARIANTS;
91
+
92
+ export type Props = {
93
+ label?: string;
94
+ headline: string;
95
+ linkText?: string;
96
+ reverse?: boolean;
97
+ variant?: Variant;
98
+ linkType?: string;
99
+ teaser?: boolean;
100
+ shortDescription?: string;
101
+ text?: string;
102
+ };
103
+
104
+ const props = withDefaults(defineProps<Props>(), {
105
+ label: "",
106
+ linkText: "",
107
+ reverse: false,
108
+ variant: "default",
109
+ linkType: "link",
110
+ teaser: false,
111
+ shortDescription: "",
112
+ text: "",
113
+ });
114
+
115
+ const selectedVariant = computed(() => VARIANTS[props.variant]);
116
+ </script>
117
+ <style scoped lang="scss">
118
+ @use "../../../assets/scss/variables.scss" as *;
119
+ .promo {
120
+ &__wrapper {
121
+ width: 100%;
122
+ display: flex;
123
+ flex-direction: row;
124
+ justify-content: center;
125
+
126
+ :deep(video) {
127
+ outline: 4px solid transparent;
128
+ outline-offset: -4px;
129
+ }
130
+
131
+ &--default {
132
+ padding: 0px 0px 30px;
133
+ max-width: 984px;
134
+ margin: auto;
135
+
136
+ @include sm {
137
+ padding: 0px 0px;
138
+ }
139
+ }
140
+
141
+ &--teaser {
142
+ margin: 0px 0px;
143
+ }
144
+ }
145
+
146
+ &__content {
147
+ display: grid;
148
+ grid-template-rows: fit-content(1fr 1fr);
149
+ grid-template-columns: 1fr;
150
+
151
+ @include sm {
152
+ grid-template-columns: fit-content(repeat(2, 1fr auto));
153
+ grid-template-rows: 1fr;
154
+ }
155
+
156
+ @include md {
157
+ grid-template-columns: 1fr 984px 1fr;
158
+ }
159
+
160
+ @include lg {
161
+ grid-template-columns: minmax(0, 1fr) auto 984px auto minmax(0, 1fr);
162
+ }
163
+ }
164
+
165
+ &__image {
166
+ height: 500px;
167
+
168
+ &--default {
169
+ grid-area: 1 / 1;
170
+ margin-right: 0;
171
+
172
+ @include sm {
173
+ }
174
+
175
+ @include md {
176
+ grid-area: 1 / 1 / 2 / 3;
177
+ margin-right: 328px;
178
+ }
179
+
180
+ @include lg {
181
+ grid-area: 1 / 2 / 2 / 4;
182
+ }
183
+
184
+ :slotted(img) {
185
+ clip-path: polygon(
186
+ 0 0,
187
+ 100% 0,
188
+ 100% calc(100% - 43px),
189
+ calc(100% - 43px) 100%,
190
+ 0 100%
191
+ );
192
+ }
193
+ }
194
+
195
+ &--reverse {
196
+ grid-area: 1 / 1;
197
+ margin-left: 0;
198
+
199
+ @include sm {
200
+ margin-left: 328px;
201
+ }
202
+
203
+ @include md {
204
+ grid-area: 1 / 2 / 3 / 4;
205
+ }
206
+
207
+ @include lg {
208
+ grid-area: 1 / 3 / 2 / 5;
209
+ }
210
+
211
+ :slotted(img) {
212
+ clip-path: polygon(
213
+ 0 0,
214
+ 100% 0,
215
+ 100% calc(100% - 43px),
216
+ calc(100% - 43px) 100%,
217
+ 0 100%
218
+ );
219
+
220
+ @include sm {
221
+ clip-path: polygon(
222
+ 0 0,
223
+ 100% 0,
224
+ 100% 100%,
225
+ 43px 100%,
226
+ 0 calc(100% - 43px)
227
+ );
228
+ }
229
+ }
230
+ }
231
+
232
+ :slotted(img) {
233
+ object-position: center;
234
+ object-fit: contain;
235
+ height: 100%;
236
+ }
237
+ }
238
+
239
+ &__video {
240
+ display: flex;
241
+ border-radius: $border-radius;
242
+ transition: $transition-box-shadow;
243
+
244
+ &--default {
245
+ grid-area: 1 / 1;
246
+ margin-right: 0;
247
+ margin: 0px 15px;
248
+
249
+ &:hover,
250
+ &:focus,
251
+ &:active,
252
+ &:target {
253
+ box-shadow: none;
254
+ }
255
+
256
+ @include sm {
257
+ margin-left: 30px;
258
+ &:hover,
259
+ &:focus,
260
+ &:active,
261
+ &:target {
262
+ box-shadow: $box-shadow;
263
+ }
264
+ }
265
+
266
+ @include md {
267
+ grid-area: 1 / 1 / 2 / 3;
268
+ margin-right: 328px;
269
+ margin-left: 0px;
270
+ }
271
+
272
+ @include lg {
273
+ grid-area: 1 / 2 / 2 / 4;
274
+ }
275
+ }
276
+
277
+ &--reverse {
278
+ grid-area: 1 / 1;
279
+ margin-left: 0;
280
+
281
+ @include sm {
282
+ margin-left: 328px;
283
+ }
284
+
285
+ @include md {
286
+ grid-area: 1 / 2 / 3 / 4;
287
+ }
288
+
289
+ @include lg {
290
+ grid-area: 1 / 3 / 2 / 5;
291
+ }
292
+ }
293
+
294
+ :deep(video) {
295
+ height: auto;
296
+ width: 100%;
297
+ }
298
+ }
299
+
300
+ &__text {
301
+ display: flex;
302
+ flex-direction: column;
303
+ align-items: flex-start;
304
+ justify-content: center;
305
+ box-sizing: border-box;
306
+
307
+ &--default {
308
+ padding-left: 30px;
309
+ padding-right: 30px;
310
+ margin-bottom: 30px;
311
+
312
+ @include sm {
313
+ grid-area: 1 / 2;
314
+ width: 328px;
315
+ margin-top: 0;
316
+ margin-bottom: 0;
317
+ }
318
+ @include md {
319
+ grid-area: 1 / 2;
320
+ justify-self: flex-end;
321
+ padding-right: 0;
322
+ padding-left: 30px;
323
+ padding-right: 30px;
324
+ }
325
+
326
+ @include lg {
327
+ grid-area: 1 / 3;
328
+ }
329
+ }
330
+
331
+ &--reverse {
332
+ padding-left: 30px;
333
+ padding-right: 30px;
334
+ grid-area: 2 / 1;
335
+
336
+ @include sm {
337
+ width: 328px;
338
+ padding-right: 41px;
339
+ grid-area: 1 / 1;
340
+ margin-top: 0;
341
+ }
342
+
343
+ @include md {
344
+ padding-left: 0;
345
+ grid-area: 1 / 2;
346
+ }
347
+
348
+ @include lg {
349
+ grid-area: 1 / 3;
350
+ }
351
+ }
352
+ }
353
+
354
+ &__title {
355
+ margin: 30px 0px;
356
+
357
+ :deep(p) {
358
+ word-wrap: break-word;
359
+ font-weight: 300;
360
+ font-family: $font-oscine;
361
+ font-size: $font-size-md;
362
+ line-height: $line-height-md;
363
+ }
364
+
365
+ &--dark {
366
+ color: $white;
367
+
368
+ :deep(p) {
369
+ color: $white;
370
+ }
371
+ }
372
+ }
373
+ }
374
+ .pallet-jack__media-wrap {
375
+ display: grid;
376
+ grid-template-rows: 1fr auto;
377
+ padding: 15px;
378
+ grid-gap: 15px;
379
+ @include md {
380
+ grid-template-rows: 1fr;
381
+ grid-template-columns: 1fr;
382
+ grid-gap: 0px;
383
+ }
384
+ .pallet-jack__media-wrap__inner-wrap {
385
+ mix-blend-mode: multiply;
386
+ z-index: 2;
387
+ grid-row: 1 / 2;
388
+ grid-column: 1 / 2;
389
+ @include md {
390
+ grid-row: 1 / -1;
391
+ grid-column: 1 / -1;
392
+ }
393
+ }
394
+ .pallet-jack__media-wrap__content-wrap {
395
+ display: flex;
396
+ justify-content: center;
397
+ align-items: left;
398
+ flex-direction: column;
399
+ z-index: 2;
400
+ grid-row: 2 / -1;
401
+ grid-column: 2 / -1;
402
+ @include md {
403
+ grid-row: 1 / -1;
404
+ grid-column: 1 / -1;
405
+ }
406
+ h3 {
407
+ font-weight: 700;
408
+ font-size: $font-size-md;
409
+ line-height: $line-height-md;
410
+ font-family: $font-oscine;
411
+ margin-block-start: 0em;
412
+ margin-block-end: 0em;
413
+ }
414
+ p {
415
+ max-width: 328px;
416
+ font-family: $font-opensans;
417
+ font-size: $font-size-sm;
418
+ line-height: $line-height-sm;
419
+ margin-top: 5px;
420
+
421
+ @include sm {
422
+ max-width: 260px;
423
+ }
424
+ }
425
+ }
426
+ }
427
+ .regular-blue {
428
+ color: $blue-800;
429
+ }
430
+ .pallet-jack-link {
431
+ grid-row: 1 / -1;
432
+ grid-column: 1 / -1;
433
+ z-index: 9;
434
+ :deep(a) {
435
+ display: block;
436
+ width: 100%;
437
+ height: 100%;
438
+ }
439
+ }
440
+ </style>
@@ -0,0 +1,106 @@
1
+ <template>
2
+ <div class="policy__wrapper">
3
+ <div class="policy__content">
4
+ <slot />
5
+ </div>
6
+ </div>
7
+ </template>
8
+
9
+ <script setup lang="ts"></script>
10
+
11
+ <style lang="scss" scoped>
12
+ @use "../../../assets/scss/variables.scss" as *;
13
+ .policy {
14
+ &__wrapper {
15
+ max-width: 984px;
16
+ margin: 0 auto;
17
+ padding: 30px 30px;
18
+ :deep(img) {
19
+ width: 100%;
20
+ }
21
+ @include md {
22
+ padding: 30px 0px;
23
+ }
24
+ }
25
+
26
+ &__content {
27
+ max-width: 658px;
28
+
29
+ :deep(h2) {
30
+ margin: 1.375rem 0;
31
+ font-weight: 300;
32
+ }
33
+
34
+ :deep(h3) {
35
+ margin: 1rem 0;
36
+ font-weight: 500;
37
+ }
38
+
39
+ :deep(p) {
40
+ padding-bottom: 1rem;
41
+
42
+ a {
43
+ color: $blue-600;
44
+ text-decoration: 0.3px underline;
45
+ font-weight: 500;
46
+
47
+ &:hover {
48
+ color: $blue-800;
49
+ transition: $transition-color;
50
+ }
51
+ }
52
+ }
53
+
54
+ :deep(b),
55
+ :deep(strong) {
56
+ font-weight: 600;
57
+ }
58
+
59
+ :deep(u) {
60
+ text-decoration: underline;
61
+ text-decoration-thickness: 0.3px;
62
+ }
63
+
64
+ :deep(em),
65
+ :deep(i) {
66
+ font-style: italic;
67
+ }
68
+
69
+ :deep(ol) {
70
+ padding-left: 1rem;
71
+ list-style-type: decimal;
72
+ font-family: $font-opensans;
73
+ font-weight: 300;
74
+
75
+ li {
76
+ margin: 5px 0;
77
+ }
78
+ }
79
+
80
+ :deep(ul) {
81
+ list-style-type: none;
82
+ font-family: $font-opensans;
83
+ font-weight: 300;
84
+ padding-left: 1rem;
85
+
86
+ li {
87
+ margin: 5px 0;
88
+ list-style: none;
89
+ position: relative;
90
+ left: 0;
91
+ }
92
+
93
+ li::before {
94
+ content: "\2022";
95
+ position: absolute;
96
+ left: -0.8em;
97
+ font-size: 1.1em;
98
+ }
99
+
100
+ p {
101
+ padding-bottom: 0px;
102
+ }
103
+ }
104
+ }
105
+ }
106
+ </style>
@@ -0,0 +1,140 @@
1
+ <template>
2
+ <div class="product-hero__wrapper">
3
+ <div class="product-hero__content">
4
+ <div class="product-hero__headline">
5
+ {{ headline }}
6
+ </div>
7
+ <div class="product-hero__video">
8
+ <AtomVideo
9
+ v-if="videoSrc !== ''"
10
+ play
11
+ :local-video="true"
12
+ :src="videoSrc"
13
+ :aria-label="ariaLabel"
14
+ :controls="false"
15
+ :poster="imgSrc"
16
+ autoplay
17
+ loop
18
+ muted
19
+ />
20
+ <AtomImage v-else>
21
+ <slot name="product-hero-image"></slot>
22
+ </AtomImage>
23
+
24
+ <div class="product-hero__insignia">
25
+ <div v-if="logoSrc" class="product-hero__logo">
26
+ <AtomImage>
27
+ <slot name="product-hero-logo"></slot>
28
+ </AtomImage>
29
+ </div>
30
+
31
+ <div v-if="isCertified" class="product-hero__certification">
32
+ <AtomImage>
33
+ <slot name="product-hero-certification"></slot>
34
+ </AtomImage>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ </div>
40
+ </template>
41
+
42
+ <script setup lang="ts">
43
+ import AtomImage from "../../atoms/image/image.vue";
44
+ import AtomVideo from "../../atoms/video/video.vue";
45
+
46
+ defineProps({
47
+ headline: {
48
+ type: String,
49
+ default: "",
50
+ required: true,
51
+ },
52
+ videoSrc: {
53
+ type: String,
54
+ default: "",
55
+ required: true,
56
+ },
57
+ ariaLabel: {
58
+ type: String,
59
+ default: "",
60
+ required: true,
61
+ },
62
+ imgSrc: {
63
+ type: String,
64
+ default: "",
65
+ required: true,
66
+ },
67
+ logoSrc: {
68
+ type: String,
69
+ default: "",
70
+ required: false,
71
+ },
72
+ isCertified: {
73
+ type: Boolean,
74
+ default: false,
75
+ required: false,
76
+ },
77
+ });
78
+ </script>
79
+
80
+ <style scoped lang="scss">
81
+ @use "../../../assets/scss/variables.scss" as *;
82
+
83
+ .product-hero {
84
+ &__wrapper {
85
+ width: 100%;
86
+ height: 100%;
87
+ mix-blend-mode: multiply;
88
+ }
89
+
90
+ &__content {
91
+ max-width: 984px;
92
+ margin: 0 auto;
93
+ padding: $padding-mobile;
94
+
95
+ @include md {
96
+ padding: $padding-desktop;
97
+ }
98
+ }
99
+
100
+ &__headline {
101
+ font-size: 44px;
102
+ line-height: 52px;
103
+ font-family: $font-oscine;
104
+ font-weight: 300;
105
+
106
+ @include sm {
107
+ font-size: $font-size-xlg;
108
+ line-height: $line-height-xlg;
109
+ }
110
+ }
111
+
112
+ &__video {
113
+ width: 100%;
114
+ aspect-ratio: 16/9;
115
+ position: relative;
116
+
117
+ :deep(video) {
118
+ width: 100%;
119
+ height: auto;
120
+ outline: 4px solid $white;
121
+ outline-offset: -4px;
122
+ }
123
+ }
124
+ &__insignia {
125
+ mix-blend-mode: multiply;
126
+ position: absolute;
127
+ right: 0;
128
+ bottom: 0;
129
+ width: 20%;
130
+ }
131
+ &__certification {
132
+ @include sm {
133
+ padding: 0 15px;
134
+ }
135
+ @include md {
136
+ padding: 0 30px;
137
+ }
138
+ }
139
+ }
140
+ </style>