cja-phoenix 0.2.3 → 0.2.4

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 (34) hide show
  1. package/dist/cja-phoenix.es.js +1753 -1588
  2. package/dist/style.css +1 -1
  3. package/dist/types/components/composite/CjaMenuBar.vue.d.ts +39 -0
  4. package/dist/types/components/composite/FunnelLayout.vue.d.ts +35 -0
  5. package/dist/types/components/composite/FunnelSummary.vue.d.ts +5 -3
  6. package/dist/types/components/composite/JourneyMacroSteps.vue.d.ts +16 -0
  7. package/dist/types/components/forms/PhoneInput.vue.d.ts +2 -2
  8. package/dist/types/components/index.d.ts +5 -2
  9. package/dist/types/index.d.ts +1 -0
  10. package/dist/types/types/MacroStep.d.ts +5 -0
  11. package/dist/types/types/index.d.ts +5 -0
  12. package/package.json +3 -3
  13. package/src/assets/iconia/demo.html +57 -1
  14. package/src/assets/iconia/fonts/CGG-icomoon.eot +0 -0
  15. package/src/assets/iconia/fonts/CGG-icomoon.svg +4 -0
  16. package/src/assets/iconia/fonts/CGG-icomoon.ttf +0 -0
  17. package/src/assets/iconia/fonts/CGG-icomoon.woff +0 -0
  18. package/src/assets/iconia/selection.json +1 -1
  19. package/src/assets/iconia/style.css +17 -5
  20. package/src/assets/iconia/style.scss +25 -5
  21. package/src/assets/iconia/variables.scss +4 -0
  22. package/src/components/composite/CjaMenuBar.vue +166 -0
  23. package/src/components/composite/FunnelLayout.vue +194 -0
  24. package/src/components/composite/FunnelSubmit.vue +20 -11
  25. package/src/components/composite/FunnelSummary.vue +16 -10
  26. package/src/components/composite/JourneyMacroSteps.vue +73 -0
  27. package/src/components/composite/ProductDetails.vue +4 -2
  28. package/src/components/forms/PhoneInput.vue +15 -6
  29. package/src/components/forms/SelectionTiles.vue +18 -5
  30. package/src/components/index.ts +7 -1
  31. package/src/components/structural/CjaButton.vue +14 -9
  32. package/src/index.ts +1 -0
  33. package/src/types/MacroStep.ts +5 -0
  34. package/src/types/index.ts +6 -0
@@ -1,10 +1,10 @@
1
1
  @font-face {
2
2
  font-family: 'CGG-icomoon';
3
- src: url('fonts/CGG-icomoon.eot?cjnnpy');
4
- src: url('fonts/CGG-icomoon.eot?cjnnpy#iefix') format('embedded-opentype'),
5
- url('fonts/CGG-icomoon.ttf?cjnnpy') format('truetype'),
6
- url('fonts/CGG-icomoon.woff?cjnnpy') format('woff'),
7
- url('fonts/CGG-icomoon.svg?cjnnpy#CGG-icomoon') format('svg');
3
+ src: url('fonts/CGG-icomoon.eot?4aj4fi');
4
+ src: url('fonts/CGG-icomoon.eot?4aj4fi#iefix') format('embedded-opentype'),
5
+ url('fonts/CGG-icomoon.ttf?4aj4fi') format('truetype'),
6
+ url('fonts/CGG-icomoon.woff?4aj4fi') format('woff'),
7
+ url('fonts/CGG-icomoon.svg?4aj4fi#CGG-icomoon') format('svg');
8
8
  font-weight: normal;
9
9
  font-style: normal;
10
10
  font-display: block;
@@ -25,6 +25,18 @@
25
25
  -moz-osx-font-smoothing: grayscale;
26
26
  }
27
27
 
28
+ .m-cgg-icon--macro-step-contact:before {
29
+ content: "\ea24";
30
+ }
31
+ .m-cgg-icon--macro-step-checkout:before {
32
+ content: "\ea2e";
33
+ }
34
+ .m-cgg-icon--macro-step-results:before {
35
+ content: "\ea2f";
36
+ }
37
+ .m-cgg-icon--macro-step-funnel:before {
38
+ content: "\ea30";
39
+ }
28
40
  .m-cgg-icon--affiliates-add:before {
29
41
  content: "\e900";
30
42
  }
@@ -2,11 +2,11 @@
2
2
 
3
3
  @font-face {
4
4
  font-family: '#{$icomoon-font-family}';
5
- src: url('#{$icomoon-font-path}/#{$icomoon-font-family}.eot?cjnnpy');
6
- src: url('#{$icomoon-font-path}/#{$icomoon-font-family}.eot?cjnnpy#iefix') format('embedded-opentype'),
7
- url('#{$icomoon-font-path}/#{$icomoon-font-family}.ttf?cjnnpy') format('truetype'),
8
- url('#{$icomoon-font-path}/#{$icomoon-font-family}.woff?cjnnpy') format('woff'),
9
- url('#{$icomoon-font-path}/#{$icomoon-font-family}.svg?cjnnpy##{$icomoon-font-family}') format('svg');
5
+ src: url('#{$icomoon-font-path}/#{$icomoon-font-family}.eot?4aj4fi');
6
+ src: url('#{$icomoon-font-path}/#{$icomoon-font-family}.eot?4aj4fi#iefix') format('embedded-opentype'),
7
+ url('#{$icomoon-font-path}/#{$icomoon-font-family}.ttf?4aj4fi') format('truetype'),
8
+ url('#{$icomoon-font-path}/#{$icomoon-font-family}.woff?4aj4fi') format('woff'),
9
+ url('#{$icomoon-font-path}/#{$icomoon-font-family}.svg?4aj4fi##{$icomoon-font-family}') format('svg');
10
10
  font-weight: normal;
11
11
  font-style: normal;
12
12
  font-display: block;
@@ -27,6 +27,26 @@
27
27
  -moz-osx-font-smoothing: grayscale;
28
28
  }
29
29
 
30
+ .m-cgg-icon--macro-step-contact {
31
+ &:before {
32
+ content: $m-cgg-icon--macro-step-contact;
33
+ }
34
+ }
35
+ .m-cgg-icon--macro-step-checkout {
36
+ &:before {
37
+ content: $m-cgg-icon--macro-step-checkout;
38
+ }
39
+ }
40
+ .m-cgg-icon--macro-step-results {
41
+ &:before {
42
+ content: $m-cgg-icon--macro-step-results;
43
+ }
44
+ }
45
+ .m-cgg-icon--macro-step-funnel {
46
+ &:before {
47
+ content: $m-cgg-icon--macro-step-funnel;
48
+ }
49
+ }
30
50
  .m-cgg-icon--affiliates-add {
31
51
  &:before {
32
52
  content: $m-cgg-icon--affiliates-add;
@@ -1,6 +1,10 @@
1
1
  $icomoon-font-family: "CGG-icomoon" !default;
2
2
  $icomoon-font-path: "fonts" !default;
3
3
 
4
+ $m-cgg-icon--macro-step-contact: "\ea24";
5
+ $m-cgg-icon--macro-step-checkout: "\ea2e";
6
+ $m-cgg-icon--macro-step-results: "\ea2f";
7
+ $m-cgg-icon--macro-step-funnel: "\ea30";
4
8
  $m-cgg-icon--affiliates-add: "\e900";
5
9
  $m-cgg-icon--affiliates-dashboard: "\ea2a";
6
10
  $m-cgg-icon--affiliates-home: "\ea2b";
@@ -0,0 +1,166 @@
1
+ <template>
2
+ <header class="main-header-container" id="page-header">
3
+ <div class="main-header">
4
+ <div class="logo-container">
5
+ <div class="log-wrapper">
6
+ <a href="/" v-if="homeNavigationEnabled">
7
+ <img :src="baseImgUrl + 'CPJ-logo-header.svg'" />
8
+ </a>
9
+ <img :src="baseImgUrl + 'CPJ-logo-header.svg'" v-else />
10
+ </div>
11
+ </div>
12
+ <div
13
+ class="content-container macro-steps"
14
+ v-if="activeViewport.lg && $slots['macro-steps']"
15
+ >
16
+ <slot name="macro-steps"></slot>
17
+ </div>
18
+ <div class="side-info" v-if="sideInfo">
19
+ <slot name="side">
20
+ <div class="contact-container">
21
+ <a class="contact" href="tel:211165765">
22
+ <span class="m-cgg-icon--phone"></span>
23
+ <span class="number">211 165 765</span>
24
+ </a>
25
+ <div class="time">Seg - Sex: 10h às 19h</div>
26
+ </div>
27
+ </slot>
28
+ </div>
29
+ </div>
30
+ <div
31
+ class="content-container macro-steps"
32
+ v-if="!activeViewport.lg && $slots['macro-steps']"
33
+ >
34
+ <slot name="macro-steps"></slot>
35
+ </div>
36
+ </header>
37
+ </template>
38
+
39
+ <script lang="ts" setup>
40
+ import { inject } from "vue";
41
+
42
+ const activeViewport: any = inject("activeViewport");
43
+ withDefaults(
44
+ defineProps<{
45
+ homeNavigationEnabled?: boolean;
46
+ sideInfo?: boolean;
47
+ }>(),
48
+ {
49
+ homeNavigationEnabled: true,
50
+ sideInfo: true,
51
+ }
52
+ );
53
+
54
+ const baseImgUrl = process.env.VUE_APP_IMG_URL;
55
+ </script>
56
+
57
+ <style lang="scss" scoped>
58
+ @import "../../assets/shadows.scss";
59
+
60
+ header.main-header-container {
61
+ .main-header {
62
+ position: relative;
63
+ z-index: 1;
64
+ display: flex;
65
+ flex-direction: row;
66
+ align-items: center;
67
+ justify-content: space-between;
68
+ gap: 20px;
69
+ background-color: #fff;
70
+ padding: 20px;
71
+ box-shadow: $box-shadow-m;
72
+
73
+ @media screen and (min-width: 1024px) {
74
+ gap: 10px;
75
+ }
76
+
77
+ @media screen and (min-width: 1200px) {
78
+ gap: 30px;
79
+ padding: 20px 35px;
80
+ }
81
+
82
+ .logo-container {
83
+ user-select: none;
84
+
85
+ a,
86
+ img {
87
+ display: block;
88
+ width: 125px;
89
+ }
90
+ }
91
+
92
+ .side-info {
93
+ @media screen and (min-width: 1024px) {
94
+ display: flex;
95
+ align-items: center;
96
+ }
97
+
98
+ .contact-container {
99
+ display: flex;
100
+ align-items: center;
101
+ gap: 15px;
102
+
103
+ .contact {
104
+ display: flex;
105
+ align-items: center;
106
+ gap: 8px;
107
+ font-weight: 700;
108
+ font-size: 14px;
109
+ line-height: 17px;
110
+ color: inherit;
111
+
112
+ &:hover {
113
+ text-decoration: none;
114
+ }
115
+
116
+ .m-cgg-icon--phone {
117
+ display: flex;
118
+ justify-content: center;
119
+ align-items: center;
120
+ width: 20px;
121
+ height: 20px;
122
+ border-radius: 50%;
123
+ background-color: #076b9c;
124
+ color: #fff;
125
+ font-size: 10px;
126
+ }
127
+
128
+ .number {
129
+ display: none;
130
+
131
+ @media screen and (min-width: 768px) {
132
+ display: block;
133
+ }
134
+ }
135
+ }
136
+
137
+ .time {
138
+ display: none;
139
+
140
+ @media screen and (min-width: 768px) {
141
+ display: block;
142
+ }
143
+ }
144
+ }
145
+ }
146
+ }
147
+
148
+ .content-container {
149
+ background: #fff;
150
+ padding: 20px;
151
+
152
+ &.macro-steps {
153
+ border-bottom: 1px solid #dedede;
154
+
155
+ @media screen and (min-width: 1024px) {
156
+ border-bottom: none;
157
+ }
158
+ }
159
+
160
+ @media screen and (min-width: 1024px) {
161
+ padding: 0;
162
+ flex-grow: 1;
163
+ }
164
+ }
165
+ }
166
+ </style>
@@ -0,0 +1,194 @@
1
+ <template>
2
+ <div class="funnel-container">
3
+ <GridContainer>
4
+ <GridItem
5
+ class="content-container"
6
+ :sizeSm="2"
7
+ :sizeMd="4"
8
+ :sizeLg="$slots.sidebar ? 8 : 12"
9
+ >
10
+ <div class="content-wrapper">
11
+ <div class="progress-container">
12
+ <div class="back-container">
13
+ <button
14
+ v-if="meta.displayStep && meta.displayStep > 1"
15
+ class="back-button"
16
+ @click="$emit('btn:previous')"
17
+ >
18
+ <em class="m-cgg-icon--chevron-left"></em>
19
+ Voltar
20
+ </button>
21
+ </div>
22
+ <div class="progress-bar">
23
+ <div class="progress" :style="{ width: progressWidth }"></div>
24
+ </div>
25
+ <div class="progress-details">
26
+ Passo {{ meta.displayStep }} de {{ meta.displayTotalSteps }}
27
+ </div>
28
+ </div>
29
+ <transition
30
+ :name="
31
+ meta.animation === 'slide-left' ? 'slide-left' : 'slide-right'
32
+ "
33
+ mode="out-in"
34
+ >
35
+ <div class="funnel-content" :key="path">
36
+ <slot name="content"></slot>
37
+ </div>
38
+ </transition>
39
+ </div>
40
+ </GridItem>
41
+ <GridItem v-if="activeViewport.lg && $slots.sidebar" :sizeLg="4">
42
+ <slot name="sidebar"></slot>
43
+ </GridItem>
44
+ </GridContainer>
45
+ </div>
46
+ </template>
47
+
48
+ <script lang="ts" setup>
49
+ import { computed, inject } from "vue";
50
+ import GridContainer from "../structural/GridContainer.vue";
51
+ import GridItem from "../structural/GridItem.vue";
52
+
53
+ const activeViewport: any = inject("activeViewport");
54
+
55
+ const props = defineProps<{
56
+ path: string;
57
+ meta: {
58
+ displayStep?: number;
59
+ displayTotalSteps?: number;
60
+ animation?: string;
61
+ };
62
+ }>();
63
+
64
+ const progressWidth = computed(() =>
65
+ props.meta.displayStep && props.meta.displayTotalSteps
66
+ ? `${(100 / props.meta.displayTotalSteps) * props.meta.displayStep}%`
67
+ : 0
68
+ );
69
+
70
+ defineEmits(["btn:previous"]);
71
+ </script>
72
+
73
+ <style lang="scss" scoped>
74
+ .funnel-container {
75
+ padding-bottom: 100px;
76
+
77
+ @media screen and (min-width: 1024px) {
78
+ padding-top: 40px;
79
+ padding-bottom: 40px;
80
+ }
81
+
82
+ .funnel-content {
83
+ transition: all 0.3s linear;
84
+
85
+ &.slide-right-enter-from,
86
+ &.slide-left-leave-to {
87
+ opacity: 0;
88
+ transform: translate(20%, 0);
89
+ }
90
+
91
+ &.slide-right-leave-to,
92
+ &.slide-left-enter-from {
93
+ opacity: 0;
94
+ transform: translate(-20%, 0);
95
+ }
96
+
97
+ &.slide-left-enter-to,
98
+ &.slide-right-enter-to {
99
+ opacity: 1;
100
+ transform: translate(0, 0);
101
+ }
102
+ }
103
+
104
+ .content-wrapper {
105
+ background: #ffffff;
106
+ padding: 20px 0;
107
+ overflow: hidden;
108
+
109
+ @media screen and (min-width: 768px) {
110
+ padding: 30px 0;
111
+ }
112
+
113
+ @media screen and (min-width: 1024px) {
114
+ border: 1px solid #dedede;
115
+ box-shadow: 0px 4px 40px rgba(0, 0, 0, 0.15);
116
+ border-radius: 32px;
117
+ padding: 30px;
118
+ }
119
+ }
120
+ }
121
+
122
+ .progress-container {
123
+ display: grid;
124
+ gap: 10px;
125
+ grid-template-columns: 1fr 1fr;
126
+ align-items: center;
127
+ margin-bottom: 30px;
128
+
129
+ @media screen and (min-width: 768px) {
130
+ gap: 20px;
131
+ grid-template-columns: 90px 1fr 90px;
132
+ padding-bottom: 20px;
133
+ border-bottom: 1px solid #dedede;
134
+ }
135
+
136
+ .back-container {
137
+ grid-area: 2 / 1 / 3 / 2;
138
+
139
+ @media screen and (min-width: 768px) {
140
+ grid-area: 1 / 1 / 2 / 2;
141
+ }
142
+
143
+ .back-button {
144
+ color: #155072;
145
+ font-size: 16px;
146
+ line-height: 16px;
147
+ font-weight: 700;
148
+ padding: 0;
149
+ border: 0;
150
+ outline: none;
151
+ background-color: transparent;
152
+
153
+ em {
154
+ vertical-align: -2px;
155
+ margin-left: -6px;
156
+ font-weight: 700;
157
+ }
158
+ }
159
+ }
160
+
161
+ .progress-bar {
162
+ grid-area: 1 / 1 / 2 / 3;
163
+ background-color: #f4f9fc;
164
+ height: 16px;
165
+ border-radius: 30px;
166
+
167
+ @media screen and (min-width: 768px) {
168
+ grid-area: 1 / 2 / 2 / 3;
169
+ }
170
+
171
+ .progress {
172
+ background: linear-gradient(218.56deg, #56924b 5.04%, #076b9c 62.92%);
173
+ height: 16px;
174
+ border-radius: 30px;
175
+ width: 0;
176
+ transition: width 0.5s;
177
+ -webkit-transition: width 0.5s;
178
+ }
179
+ }
180
+
181
+ .progress-details {
182
+ grid-area: 2 / 2 / 3 / 3;
183
+ text-align: right;
184
+ margin-left: auto;
185
+ font-size: 14px;
186
+ line-height: 14px;
187
+ color: #155072;
188
+
189
+ @media screen and (min-width: 768px) {
190
+ grid-area: 1 / 3 / 2 / 4;
191
+ }
192
+ }
193
+ }
194
+ </style>
@@ -1,19 +1,24 @@
1
1
  <template>
2
- <div class="button-container">
3
- <CjaButton
4
- :color="'orange'"
5
- :size="'lg'"
6
- :loading="loading"
7
- @click="$emit('btn:click')"
8
- >
9
- <slot>Continuar</slot>
10
- </CjaButton>
11
- </div>
2
+ <Teleport to="body" :disabled="activeViewport.lg">
3
+ <div class="button-container">
4
+ <CjaButton
5
+ :color="'orange'"
6
+ :size="'lg'"
7
+ :loading="loading"
8
+ @click="$emit('btn:click')"
9
+ >
10
+ <slot>Continuar</slot>
11
+ </CjaButton>
12
+ </div>
13
+ </Teleport>
12
14
  </template>
13
15
 
14
16
  <script setup lang="ts">
17
+ import { inject } from "vue";
15
18
  import CjaButton from "../structural/CjaButton.vue";
16
19
 
20
+ const activeViewport: any = inject("activeViewport");
21
+
17
22
  defineProps<{
18
23
  loading?: boolean;
19
24
  }>();
@@ -22,6 +27,8 @@ defineEmits(["btn:click"]);
22
27
  </script>
23
28
 
24
29
  <style lang="scss" scoped>
30
+ @import "../../assets/shadows.scss";
31
+
25
32
  .button-container {
26
33
  position: fixed;
27
34
  bottom: 0;
@@ -32,11 +39,13 @@ defineEmits(["btn:click"]);
32
39
  display: flex;
33
40
  flex-direction: row;
34
41
  justify-content: center;
42
+ box-shadow: $box-shadow-m;
35
43
 
36
- @media screen and (min-width: 1200px) {
44
+ @media screen and (min-width: 1024px) {
37
45
  position: static;
38
46
  margin: 30px 0 0;
39
47
  padding: 0;
48
+ box-shadow: none;
40
49
  }
41
50
  }
42
51
  </style>
@@ -3,13 +3,7 @@
3
3
  <div class="summary-wrapper">
4
4
  <div class="title-container">
5
5
  <h3>{{ title }}</h3>
6
- <button
7
- @click="
8
- editMode = true;
9
- formLock = false;
10
- $emit('btn:edit');
11
- "
12
- >
6
+ <button @click="toggleEdit">
13
7
  <span class="m-cgg-icon--edit"></span>
14
8
  <span>{{ customText.edit }}</span>
15
9
  </button>
@@ -60,7 +54,7 @@ const props = withDefaults(
60
54
  value: any;
61
55
  control: string;
62
56
  }[];
63
- validateForm: () => boolean;
57
+ validateForm?: () => boolean;
64
58
  }>(),
65
59
  {
66
60
  title: "O seu resumo",
@@ -72,16 +66,24 @@ const props = withDefaults(
72
66
  }
73
67
  );
74
68
 
69
+ const toggleEdit = () => {
70
+ editMode.value = true;
71
+ formLock.value = false;
72
+
73
+ emit("btn:edit");
74
+ };
75
+
75
76
  const cancelEdit = () => {
76
77
  if (!formLock.value) {
77
78
  formLock.value = true;
78
79
  editMode.value = false;
80
+
79
81
  emit("btn:cancel");
80
82
  }
81
83
  };
82
84
 
83
85
  const saveEdit = () => {
84
- if (props.validateForm() && !formLock.value) {
86
+ if ((props.validateForm ? props.validateForm() : true) && !formLock.value) {
85
87
  formLock.value = true;
86
88
  editMode.value = false;
87
89
 
@@ -89,15 +91,19 @@ const saveEdit = () => {
89
91
  }
90
92
  };
91
93
 
94
+ defineExpose({ editMode });
95
+
92
96
  const emit = defineEmits(["btn:cancel", "btn:save", "btn:edit"]);
93
97
  </script>
94
98
 
95
99
  <style lang="scss" scoped>
100
+ @import "../../assets/shadows.scss";
101
+
96
102
  .summary-container {
97
103
  .summary-wrapper {
98
104
  background: #ffffff;
99
105
  border: 1px solid #dedede;
100
- box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.1);
106
+ box-shadow: $box-shadow-m;
101
107
  border-radius: 16px;
102
108
  padding: 20px 30px;
103
109
 
@@ -0,0 +1,73 @@
1
+ <template>
2
+ <div class="macro-steps-container">
3
+ <div
4
+ class="macro-step"
5
+ :class="[`step-status-${step.status}`]"
6
+ v-for="(step, i) in stepList"
7
+ >
8
+ <span :class="step.icon"></span>
9
+ <span class="step-label">{{ step.label }}</span>
10
+ <span
11
+ class="m-cgg-icon--chevron-right"
12
+ v-if="i < stepList.length - 1"
13
+ ></span>
14
+ </div>
15
+ </div>
16
+ </template>
17
+
18
+ <script lang="ts" setup>
19
+ import { MacroStep } from "../../types/MacroStep";
20
+
21
+ defineProps<{
22
+ stepList: MacroStep[];
23
+ }>();
24
+ </script>
25
+
26
+ <style lang="scss" scoped>
27
+ .macro-steps-container {
28
+ display: flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ gap: 10px;
32
+ padding: 0 10px;
33
+
34
+ .macro-step {
35
+ display: flex;
36
+ align-items: center;
37
+
38
+ .step-label {
39
+ margin-left: 10px;
40
+ font-size: 14px;
41
+ line-height: 17px;
42
+ text-transform: uppercase;
43
+ display: none;
44
+
45
+ @media screen and (min-width: 1024px) {
46
+ font-size: 16px;
47
+ line-height: 19px;
48
+ }
49
+
50
+ @media screen and (min-width: 1200px) {
51
+ display: block;
52
+ }
53
+ }
54
+
55
+ .m-cgg-icon--chevron-right {
56
+ margin-left: 10px;
57
+ }
58
+
59
+ &.step-status-future {
60
+ color: #9fabbc;
61
+ }
62
+
63
+ &.step-status-current {
64
+ color: #076b9c;
65
+ font-weight: 700;
66
+
67
+ .step-label {
68
+ display: block;
69
+ }
70
+ }
71
+ }
72
+ }
73
+ </style>
@@ -53,6 +53,8 @@ defineExpose({ openDetails, closeDetails });
53
53
  </script>
54
54
 
55
55
  <style scoped lang="scss">
56
+ @import "../../assets/shadows.scss";
57
+
56
58
  .overlay {
57
59
  position: fixed;
58
60
  bottom: 0;
@@ -86,7 +88,7 @@ defineExpose({ openDetails, closeDetails });
86
88
  align-items: center;
87
89
  background-color: #fff;
88
90
  padding: 15px;
89
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
91
+ box-shadow: $box-shadow-m;
90
92
 
91
93
  @media screen and (min-width: 992px) {
92
94
  padding: 20px 50px;
@@ -118,7 +120,7 @@ defineExpose({ openDetails, closeDetails });
118
120
 
119
121
  .details-footer {
120
122
  padding: 15px;
121
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
123
+ box-shadow: $box-shadow-m;
122
124
 
123
125
  @media screen and (min-width: 992px) {
124
126
  padding: 20px 50px;