@designcrowd/fe-shared-lib 1.2.11-ast-upsell-8 → 1.2.11-byo-modal-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 (21) hide show
  1. package/package.json +1 -1
  2. package/public/css/tailwind-brandCrowd.css +0 -25
  3. package/public/css/tailwind-brandPage.css +0 -25
  4. package/public/css/tailwind-crazyDomains.css +0 -25
  5. package/public/css/tailwind-designCom.css +0 -25
  6. package/public/css/tailwind-designCrowd.css +0 -25
  7. package/src/bundles/bundled-translations.json +28 -0
  8. package/src/experiences/components/PublishBrandPageModal/PublishBrandPageModal.vue +2 -4
  9. package/src/experiences/components/UploadYourLogoOnBoarding/LogoBusinessBrandColours.vue +22 -12
  10. package/src/experiences/components/UploadYourLogoOnBoarding/LogoBusinessText.vue +11 -5
  11. package/src/experiences/components/UploadYourLogoOnBoarding/LogoCropper.vue +10 -4
  12. package/src/experiences/components/UploadYourLogoOnBoarding/LogoPreview.vue +11 -5
  13. package/src/experiences/components/UploadYourLogoOnBoarding/LogoUploadError.vue +10 -4
  14. package/src/experiences/components/UploadYourLogoOnBoarding/LogoUploadExitConfirmation.vue +11 -5
  15. package/src/experiences/components/UploadYourLogoOnBoarding/LogoUploader.vue +7 -1
  16. package/src/experiences/components/UploadYourLogoOnBoarding/UploadYourLogoOnBoarding.vue +13 -7
  17. package/src/experiences/components/UploadYourLogoOnBoarding/i18n/upload-your-logo.json +30 -0
  18. package/src/useSharedLibTranslate.js +3 -1
  19. package/src/experiences/components/UpsellComponents/BusinessCardUpsell.vue +0 -103
  20. package/src/experiences/components/UpsellComponents/DomainNameUpsell.vue +0 -54
  21. package/src/experiences/components/UpsellComponents/LegalZoomUpsell.vue +0 -59
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@designcrowd/fe-shared-lib",
3
- "version": "1.2.11-ast-upsell-8",
3
+ "version": "1.2.11-byo-modal-4",
4
4
  "scripts": {
5
5
  "start": "run-p storybook watch:translation",
6
6
  "build": "npm run build:css --production",
@@ -719,9 +719,6 @@ video {
719
719
  .theme-brandCrowd .tw-ml-auto {
720
720
  margin-left: auto;
721
721
  }
722
- .theme-brandCrowd .tw-mr-1 {
723
- margin-right: 0.25rem;
724
- }
725
722
  .theme-brandCrowd .tw-mr-2 {
726
723
  margin-right: 0.5rem;
727
724
  }
@@ -830,10 +827,6 @@ video {
830
827
  .theme-brandCrowd .tw-h-auto {
831
828
  height: auto;
832
829
  }
833
- .theme-brandCrowd .tw-h-fit {
834
- height: -moz-fit-content;
835
- height: fit-content;
836
- }
837
830
  .theme-brandCrowd .tw-h-full {
838
831
  height: 100%;
839
832
  }
@@ -1020,9 +1013,6 @@ video {
1020
1013
  .theme-brandCrowd .tw-animate-spin {
1021
1014
  animation: tw-spin 1s linear infinite;
1022
1015
  }
1023
- .\!tw-cursor-not-allowed {
1024
- cursor: not-allowed !important;
1025
- }
1026
1016
  .theme-brandCrowd .tw-cursor-not-allowed {
1027
1017
  cursor: not-allowed;
1028
1018
  }
@@ -1456,17 +1446,6 @@ video {
1456
1446
  .theme-brandCrowd .tw-bg-opacity-80 {
1457
1447
  --tw-bg-opacity: 0.8;
1458
1448
  }
1459
- .theme-brandCrowd .tw-bg-gradient-to-t {
1460
- background-image: linear-gradient(to top, var(--tw-gradient-stops));
1461
- }
1462
- .theme-brandCrowd .tw-from-\[\#d946ef\] {
1463
- --tw-gradient-from: #d946ef var(--tw-gradient-from-position);
1464
- --tw-gradient-to: rgb(217 70 239 / 0) var(--tw-gradient-to-position);
1465
- --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
1466
- }
1467
- .theme-brandCrowd .tw-to-\[\#8b5cf6\] {
1468
- --tw-gradient-to: #8b5cf6 var(--tw-gradient-to-position);
1469
- }
1470
1449
  .theme-brandCrowd .tw-bg-no-repeat {
1471
1450
  background-repeat: no-repeat;
1472
1451
  }
@@ -2108,10 +2087,6 @@ video {
2108
2087
  --tw-shadow-color: #0097D7 !important;
2109
2088
  --tw-shadow: var(--tw-shadow-colored) !important;
2110
2089
  }
2111
- .theme-brandCrowd .hover\:tw-brightness-\[0\.85\]:hover {
2112
- --tw-brightness: brightness(0.85);
2113
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2114
- }
2115
2090
  .theme-brandCrowd .focus\:tw-border-error-600:focus {
2116
2091
  --tw-border-opacity: 1;
2117
2092
  border-color: rgb(194 22 50 / var(--tw-border-opacity));
@@ -719,9 +719,6 @@ video {
719
719
  .theme-brandPage .tw-ml-auto {
720
720
  margin-left: auto;
721
721
  }
722
- .theme-brandPage .tw-mr-1 {
723
- margin-right: 0.25rem;
724
- }
725
722
  .theme-brandPage .tw-mr-2 {
726
723
  margin-right: 0.5rem;
727
724
  }
@@ -830,10 +827,6 @@ video {
830
827
  .theme-brandPage .tw-h-auto {
831
828
  height: auto;
832
829
  }
833
- .theme-brandPage .tw-h-fit {
834
- height: -moz-fit-content;
835
- height: fit-content;
836
- }
837
830
  .theme-brandPage .tw-h-full {
838
831
  height: 100%;
839
832
  }
@@ -1020,9 +1013,6 @@ video {
1020
1013
  .theme-brandPage .tw-animate-spin {
1021
1014
  animation: tw-spin 1s linear infinite;
1022
1015
  }
1023
- .\!tw-cursor-not-allowed {
1024
- cursor: not-allowed !important;
1025
- }
1026
1016
  .theme-brandPage .tw-cursor-not-allowed {
1027
1017
  cursor: not-allowed;
1028
1018
  }
@@ -1304,17 +1294,6 @@ video {
1304
1294
  .theme-brandPage .tw-bg-opacity-80 {
1305
1295
  --tw-bg-opacity: 0.8;
1306
1296
  }
1307
- .theme-brandPage .tw-bg-gradient-to-t {
1308
- background-image: linear-gradient(to top, var(--tw-gradient-stops));
1309
- }
1310
- .theme-brandPage .tw-from-\[\#d946ef\] {
1311
- --tw-gradient-from: #d946ef var(--tw-gradient-from-position);
1312
- --tw-gradient-to: rgb(217 70 239 / 0) var(--tw-gradient-to-position);
1313
- --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
1314
- }
1315
- .theme-brandPage .tw-to-\[\#8b5cf6\] {
1316
- --tw-gradient-to: #8b5cf6 var(--tw-gradient-to-position);
1317
- }
1318
1297
  .theme-brandPage .tw-bg-no-repeat {
1319
1298
  background-repeat: no-repeat;
1320
1299
  }
@@ -1812,10 +1791,6 @@ video {
1812
1791
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
1813
1792
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
1814
1793
  }
1815
- .theme-brandPage .hover\:tw-brightness-\[0\.85\]:hover {
1816
- --tw-brightness: brightness(0.85);
1817
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
1818
- }
1819
1794
  .theme-brandPage .focus\:tw-border-grayscale-600:focus {
1820
1795
  --tw-border-opacity: 1;
1821
1796
  border-color: rgb(94 94 94 / var(--tw-border-opacity));
@@ -719,9 +719,6 @@ video {
719
719
  .theme-crazyDomains .tw-ml-auto {
720
720
  margin-left: auto;
721
721
  }
722
- .theme-crazyDomains .tw-mr-1 {
723
- margin-right: 0.25rem;
724
- }
725
722
  .theme-crazyDomains .tw-mr-2 {
726
723
  margin-right: 0.5rem;
727
724
  }
@@ -830,10 +827,6 @@ video {
830
827
  .theme-crazyDomains .tw-h-auto {
831
828
  height: auto;
832
829
  }
833
- .theme-crazyDomains .tw-h-fit {
834
- height: -moz-fit-content;
835
- height: fit-content;
836
- }
837
830
  .theme-crazyDomains .tw-h-full {
838
831
  height: 100%;
839
832
  }
@@ -1020,9 +1013,6 @@ video {
1020
1013
  .theme-crazyDomains .tw-animate-spin {
1021
1014
  animation: tw-spin 1s linear infinite;
1022
1015
  }
1023
- .\!tw-cursor-not-allowed {
1024
- cursor: not-allowed !important;
1025
- }
1026
1016
  .theme-crazyDomains .tw-cursor-not-allowed {
1027
1017
  cursor: not-allowed;
1028
1018
  }
@@ -1456,17 +1446,6 @@ video {
1456
1446
  .theme-crazyDomains .tw-bg-opacity-80 {
1457
1447
  --tw-bg-opacity: 0.8;
1458
1448
  }
1459
- .theme-crazyDomains .tw-bg-gradient-to-t {
1460
- background-image: linear-gradient(to top, var(--tw-gradient-stops));
1461
- }
1462
- .theme-crazyDomains .tw-from-\[\#d946ef\] {
1463
- --tw-gradient-from: #d946ef var(--tw-gradient-from-position);
1464
- --tw-gradient-to: rgb(217 70 239 / 0) var(--tw-gradient-to-position);
1465
- --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
1466
- }
1467
- .theme-crazyDomains .tw-to-\[\#8b5cf6\] {
1468
- --tw-gradient-to: #8b5cf6 var(--tw-gradient-to-position);
1469
- }
1470
1449
  .theme-crazyDomains .tw-bg-no-repeat {
1471
1450
  background-repeat: no-repeat;
1472
1451
  }
@@ -2108,10 +2087,6 @@ video {
2108
2087
  --tw-shadow-color: #00A1EF !important;
2109
2088
  --tw-shadow: var(--tw-shadow-colored) !important;
2110
2089
  }
2111
- .theme-crazyDomains .hover\:tw-brightness-\[0\.85\]:hover {
2112
- --tw-brightness: brightness(0.85);
2113
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2114
- }
2115
2090
  .theme-crazyDomains .focus\:tw-border-error-600:focus {
2116
2091
  --tw-border-opacity: 1;
2117
2092
  border-color: rgb(186 24 79 / var(--tw-border-opacity));
@@ -719,9 +719,6 @@ video {
719
719
  .theme-designCom .tw-ml-auto {
720
720
  margin-left: auto;
721
721
  }
722
- .theme-designCom .tw-mr-1 {
723
- margin-right: 0.25rem;
724
- }
725
722
  .theme-designCom .tw-mr-2 {
726
723
  margin-right: 0.5rem;
727
724
  }
@@ -830,10 +827,6 @@ video {
830
827
  .theme-designCom .tw-h-auto {
831
828
  height: auto;
832
829
  }
833
- .theme-designCom .tw-h-fit {
834
- height: -moz-fit-content;
835
- height: fit-content;
836
- }
837
830
  .theme-designCom .tw-h-full {
838
831
  height: 100%;
839
832
  }
@@ -1020,9 +1013,6 @@ video {
1020
1013
  .theme-designCom .tw-animate-spin {
1021
1014
  animation: tw-spin 1s linear infinite;
1022
1015
  }
1023
- .\!tw-cursor-not-allowed {
1024
- cursor: not-allowed !important;
1025
- }
1026
1016
  .theme-designCom .tw-cursor-not-allowed {
1027
1017
  cursor: not-allowed;
1028
1018
  }
@@ -1456,17 +1446,6 @@ video {
1456
1446
  .theme-designCom .tw-bg-opacity-80 {
1457
1447
  --tw-bg-opacity: 0.8;
1458
1448
  }
1459
- .theme-designCom .tw-bg-gradient-to-t {
1460
- background-image: linear-gradient(to top, var(--tw-gradient-stops));
1461
- }
1462
- .theme-designCom .tw-from-\[\#d946ef\] {
1463
- --tw-gradient-from: #d946ef var(--tw-gradient-from-position);
1464
- --tw-gradient-to: rgb(217 70 239 / 0) var(--tw-gradient-to-position);
1465
- --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
1466
- }
1467
- .theme-designCom .tw-to-\[\#8b5cf6\] {
1468
- --tw-gradient-to: #8b5cf6 var(--tw-gradient-to-position);
1469
- }
1470
1449
  .theme-designCom .tw-bg-no-repeat {
1471
1450
  background-repeat: no-repeat;
1472
1451
  }
@@ -2108,10 +2087,6 @@ video {
2108
2087
  --tw-shadow-color: #3f59f6 !important;
2109
2088
  --tw-shadow: var(--tw-shadow-colored) !important;
2110
2089
  }
2111
- .theme-designCom .hover\:tw-brightness-\[0\.85\]:hover {
2112
- --tw-brightness: brightness(0.85);
2113
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2114
- }
2115
2090
  .theme-designCom .focus\:tw-border-error-600:focus {
2116
2091
  --tw-border-opacity: 1;
2117
2092
  border-color: rgb(182 58 42 / var(--tw-border-opacity));
@@ -719,9 +719,6 @@ video {
719
719
  .theme-designCrowd .tw-ml-auto {
720
720
  margin-left: auto;
721
721
  }
722
- .theme-designCrowd .tw-mr-1 {
723
- margin-right: 0.25rem;
724
- }
725
722
  .theme-designCrowd .tw-mr-2 {
726
723
  margin-right: 0.5rem;
727
724
  }
@@ -830,10 +827,6 @@ video {
830
827
  .theme-designCrowd .tw-h-auto {
831
828
  height: auto;
832
829
  }
833
- .theme-designCrowd .tw-h-fit {
834
- height: -moz-fit-content;
835
- height: fit-content;
836
- }
837
830
  .theme-designCrowd .tw-h-full {
838
831
  height: 100%;
839
832
  }
@@ -1020,9 +1013,6 @@ video {
1020
1013
  .theme-designCrowd .tw-animate-spin {
1021
1014
  animation: tw-spin 1s linear infinite;
1022
1015
  }
1023
- .\!tw-cursor-not-allowed {
1024
- cursor: not-allowed !important;
1025
- }
1026
1016
  .theme-designCrowd .tw-cursor-not-allowed {
1027
1017
  cursor: not-allowed;
1028
1018
  }
@@ -1456,17 +1446,6 @@ video {
1456
1446
  .theme-designCrowd .tw-bg-opacity-80 {
1457
1447
  --tw-bg-opacity: 0.8;
1458
1448
  }
1459
- .theme-designCrowd .tw-bg-gradient-to-t {
1460
- background-image: linear-gradient(to top, var(--tw-gradient-stops));
1461
- }
1462
- .theme-designCrowd .tw-from-\[\#d946ef\] {
1463
- --tw-gradient-from: #d946ef var(--tw-gradient-from-position);
1464
- --tw-gradient-to: rgb(217 70 239 / 0) var(--tw-gradient-to-position);
1465
- --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
1466
- }
1467
- .theme-designCrowd .tw-to-\[\#8b5cf6\] {
1468
- --tw-gradient-to: #8b5cf6 var(--tw-gradient-to-position);
1469
- }
1470
1449
  .theme-designCrowd .tw-bg-no-repeat {
1471
1450
  background-repeat: no-repeat;
1472
1451
  }
@@ -2108,10 +2087,6 @@ video {
2108
2087
  --tw-shadow-color: #1197EB !important;
2109
2088
  --tw-shadow: var(--tw-shadow-colored) !important;
2110
2089
  }
2111
- .theme-designCrowd .hover\:tw-brightness-\[0\.85\]:hover {
2112
- --tw-brightness: brightness(0.85);
2113
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2114
- }
2115
2090
  .theme-designCrowd .focus\:tw-border-error-600:focus {
2116
2091
  --tw-border-opacity: 1;
2117
2092
  border-color: rgb(195 50 48 / var(--tw-border-opacity));
@@ -48,5 +48,33 @@
48
48
  "searchBarLabel": "Search",
49
49
  "searchBarPlaceholder": "Search domain names",
50
50
  "domainSearchOrConnectHeaderSubtitle": "Buy matching domain name for your brand or connect your existing domain"
51
+ },
52
+ "uploadYourLogo": {
53
+ "uploadYourLogoText": "Upload your logo-",
54
+ "disclaimerText": "Please ensure you have the right to use any image you upload.-",
55
+ "generatingDesigns": "Generating Designs...-",
56
+ "uploadingAndConverting": "Uploading and converting your logo...-",
57
+ "stepOf": "Step {{current}} of {{total}}-",
58
+ "uploadError": "Upload Error-",
59
+ "cancel": "Cancel-",
60
+ "continue": "Continue-",
61
+ "back": "Back-",
62
+ "no": "No-",
63
+ "yes": "Yes-",
64
+ "businessName": "Business Name-",
65
+ "businessNameDescription": "Enter your logo text or business name-",
66
+ "cropYourLogo": "Crop your logo-",
67
+ "cropDescription": "Crop your logo design to fit our logo maker canvas-",
68
+ "logoPreview": "Logo preview-",
69
+ "logoPreviewDescription": "Your logo looks great! Help us setup your logo by completing the next steps.-",
70
+ "primaryTextColor": "Primary text color-",
71
+ "primaryTextColorDescription": "Help us setup your logo by confirming the primary text color. Choose from the available colors or click the plus icon to add another.-",
72
+ "backgroundColor": "Background color-",
73
+ "backgroundColorDescription": "Help us setup your logo by confirming the background color. Choose from the available colors or click the plus icon to add another.-",
74
+ "colorsWarning": "Your text and background colors are too similar. Please choose a more distinct pairing to ensure they create quality designs.-",
75
+ "exitConfirmationTitle": "Are you sure you want to exit?-",
76
+ "exitConfirmationDescription": "Your logo upload progress in this session will be lost-",
77
+ "maxByoFileErrorMessage": "Your file exceeds the maximum size of 25MB. Please choose a smaller file.-",
78
+ "genericByoErrorMessage": "An unexpected error occured. Please try again.-"
51
79
  }
52
80
  }
@@ -188,7 +188,7 @@
188
188
  </div>
189
189
  <div v-else class="tw-font-sans">
190
190
  <div v-if="!isCustomDomainActive && !hasPurchasedDomains" class="tw-mb-6 tw-text-left">
191
- <!-- <div class="tw-mb-6">
191
+ <div class="tw-mb-6">
192
192
  <SellDomainNameSearchWithResults
193
193
  :is-design-com="isDesignCom"
194
194
  :initial-search-term="searchText"
@@ -205,7 +205,7 @@
205
205
  size="small-medium"
206
206
  class="tw-text-center"
207
207
  @on-click="onViewMore"
208
- /> -->
208
+ />
209
209
  </div>
210
210
  <div class="tw-px-4 tw-text-center" :class="{ 'lg:tw-px-20': hasPurchasedDomains }">
211
211
  <TextCopyField
@@ -230,8 +230,6 @@
230
230
  @on-click="onBrandPageUrlClick"
231
231
  />
232
232
  </div>
233
-
234
- <slot name="upsellContainer" />
235
233
  </div>
236
234
  </template>
237
235
  </Modal>
@@ -4,13 +4,13 @@
4
4
  <HelloBar
5
5
  v-if="areColorsTooClose"
6
6
  label=""
7
- description="Your text and background colors are too similar. Please choose a more distinct pairing to ensure they create quality designs."
7
+ :description="uploadYourLogoTr('colorsWarning')"
8
8
  variant="warning"
9
9
  class="tw-m-5 tw-mt-3"
10
10
  />
11
11
  <div class="tw-pb-8 tw-px-8 tw-text-center">
12
12
  <p class="tw-text-grayscale-600 tw-font-bold tw-text-xs tw-mb-2 tw-uppercase">
13
- Step {{ activeStep.number }} of {{ totalNumSteps }}
13
+ {{ stepCounter }}
14
14
  </p>
15
15
  <h2 class="tw-mb-4 tw-text-4xl tw-text-black tw-font-bold">
16
16
  {{ activeStep.title }}
@@ -80,7 +80,7 @@
80
80
  >
81
81
  <Button
82
82
  v-if="activeStep.index === 1"
83
- label="Back"
83
+ :label="uploadYourLogoTr('back')"
84
84
  size="large"
85
85
  variant="outline"
86
86
  container-classes="tw-mx-2"
@@ -89,7 +89,7 @@
89
89
  />
90
90
  <Button
91
91
  v-if="activeStep.index === 2"
92
- label="Back"
92
+ :label="uploadYourLogoTr('back')"
93
93
  size="large"
94
94
  variant="outline"
95
95
  container-classes="tw-mx-2"
@@ -98,7 +98,7 @@
98
98
  />
99
99
  <Button
100
100
  v-if="activeStep.index === 1"
101
- label="Continue"
101
+ :label="uploadYourLogoTr('continue')"
102
102
  size="large"
103
103
  variant="primary-with-icon"
104
104
  icon="chevron-right-wide"
@@ -108,7 +108,7 @@
108
108
  />
109
109
  <Button
110
110
  v-if="activeStep.index === 2"
111
- label="Continue"
111
+ :label="uploadYourLogoTr('continue')"
112
112
  size="large"
113
113
  variant="primary-with-icon"
114
114
  icon="chevron-right-wide"
@@ -126,6 +126,7 @@ import Icon from '../../../../src/atoms/components/Icon/Icon.vue';
126
126
  import HelloBar from '../../../../src/atoms/components/HelloBar/HelloBar.vue';
127
127
  import trackEvent from '../../helpers/tracking';
128
128
  import hexDiff from '../../helpers/hex-diff';
129
+ import { uploadYourLogoTr } from '../../../useSharedLibTranslate';
129
130
 
130
131
  export default {
131
132
  components: {
@@ -153,6 +154,11 @@ export default {
153
154
  required: true,
154
155
  },
155
156
  },
157
+ setup() {
158
+ return {
159
+ uploadYourLogoTr,
160
+ };
161
+ },
156
162
  data() {
157
163
  return {
158
164
  currentStep: null,
@@ -171,9 +177,8 @@ export default {
171
177
  index: 1,
172
178
  number: this.totalNumSteps - 1,
173
179
  active: false,
174
- title: 'Primary text color',
175
- description:
176
- 'Help us setup your logo by confirming the primary text color. Choose from the available colors or click the plus icon to add another.',
180
+ title: uploadYourLogoTr('primaryTextColor'),
181
+ description: uploadYourLogoTr('primaryTextColorDescription'),
177
182
  colourData: this.logoData.logoImageDetails.textColors,
178
183
  colours: [],
179
184
  },
@@ -181,9 +186,8 @@ export default {
181
186
  index: 2,
182
187
  number: this.totalNumSteps,
183
188
  active: false,
184
- title: 'Background color',
185
- description:
186
- 'Help us setup your logo by confirming the background color. Choose from the available colors or click the plus icon to add another.',
189
+ title: uploadYourLogoTr('backgroundColor'),
190
+ description: uploadYourLogoTr('backgroundColorDescription'),
187
191
  colourData: this.logoData.logoImageDetails.backgroundColors,
188
192
  colours: [],
189
193
  },
@@ -202,6 +206,12 @@ export default {
202
206
  this.activeStep.index === 2 && hexDiff(selectedTextColour.hex, selectedBackgroundColour.hex) !== 'Different'
203
207
  );
204
208
  },
209
+ stepCounter() {
210
+ return this.uploadYourLogoTr('stepOf', {
211
+ current: this.activeStep.number,
212
+ total: this.totalNumSteps,
213
+ });
214
+ },
205
215
  },
206
216
  mounted() {
207
217
  const keys = Object.keys(this.steps);
@@ -5,8 +5,8 @@
5
5
  <p class="tw-text-grayscale-600 tw-font-bold tw-text-xs tw-mb-2 tw-uppercase">
6
6
  {{ progressLabel }}
7
7
  </p>
8
- <h2 class="tw-mb-4 tw-text-4xl tw-text-black tw-font-bold">Business Name</h2>
9
- <p class="tw-mt-0">Enter your logo text or business name</p>
8
+ <h2 class="tw-mb-4 tw-text-4xl tw-text-black tw-font-bold">{{ uploadYourLogoTr('businessName') }}</h2>
9
+ <p class="tw-mt-0">{{ uploadYourLogoTr('businessNameDescription') }}</p>
10
10
  </div>
11
11
 
12
12
  <div class="tw-pb-8 tw-px-8">
@@ -37,7 +37,7 @@
37
37
  class="tw-fixed tw-rounded-b tw-bottom-0 tw-left-0 tw-z-10 tw-bg-grayscale-200 lg:tw-static tw-flex tw-w-full tw-items-center tw-justify-center tw-border-0 tw-border-t tw-border-black/10 tw-border-solid tw-py-4 tw-px-8 tw-box-border"
38
38
  >
39
39
  <Button
40
- label="Back"
40
+ :label="uploadYourLogoTr('back')"
41
41
  size="large"
42
42
  variant="outline"
43
43
  container-classes="tw-mx-2"
@@ -45,7 +45,7 @@
45
45
  @on-click="back"
46
46
  />
47
47
  <Button
48
- label="Continue"
48
+ :label="uploadYourLogoTr('continue')"
49
49
  size="large"
50
50
  variant="primary-with-icon"
51
51
  icon="chevron-right-wide"
@@ -57,8 +57,9 @@
57
57
  </div>
58
58
  </template>
59
59
  <script>
60
- import Button from '../../../../src/atoms/components/Button/Button.vue';
60
+ import Button from '../../../atoms/components/Button/Button.vue';
61
61
  import trackEvent from '../../helpers/tracking';
62
+ import { uploadYourLogoTr } from '../../../useSharedLibTranslate';
62
63
 
63
64
  export default {
64
65
  components: {
@@ -84,6 +85,11 @@ export default {
84
85
  required: true,
85
86
  },
86
87
  },
88
+ setup() {
89
+ return {
90
+ uploadYourLogoTr,
91
+ };
92
+ },
87
93
  data() {
88
94
  return {
89
95
  businessText: null,
@@ -5,8 +5,8 @@
5
5
  <p class="tw-text-grayscale-600 tw-font-bold tw-text-xs tw-mb-2 tw-uppercase">
6
6
  {{ progressLabel }}
7
7
  </p>
8
- <h2 class="tw-mb-4 tw-text-4xl tw-text-black tw-font-bold">Crop your logo</h2>
9
- <p class="tw-mt-0">Crop your logo design to fit our logo maker canvas</p>
8
+ <h2 class="tw-mb-4 tw-text-4xl tw-text-black tw-font-bold">{{ uploadYourLogoTr('cropYourLogo') }}</h2>
9
+ <p class="tw-mt-0">{{ uploadYourLogoTr('cropDescription') }}</p>
10
10
  </div>
11
11
 
12
12
  <div class="c-byo-cropper__container lg:tw-pb-8 tw-mx-auto" :class="{ 'tw-opacity-0': !cropperToolReady }">
@@ -27,7 +27,7 @@
27
27
  class="tw-fixed tw-rounded-b tw-bottom-0 tw-left-0 tw-z-10 tw-bg-grayscale-200 lg:tw-static tw-flex tw-w-full tw-items-center tw-justify-center tw-border-0 tw-border-t tw-border-black/10 tw-border-solid tw-py-4 tw-px-8 tw-box-border"
28
28
  >
29
29
  <Button
30
- label="Cancel"
30
+ :label="uploadYourLogoTr('cancel')"
31
31
  size="large"
32
32
  variant="outline"
33
33
  container-classes="tw-mx-2"
@@ -35,7 +35,7 @@
35
35
  @on-click="cancel"
36
36
  />
37
37
  <Button
38
- label="Continue"
38
+ :label="uploadYourLogoTr('continue')"
39
39
  size="large"
40
40
  variant="primary-with-icon"
41
41
  icon="chevron-right-wide"
@@ -51,6 +51,7 @@ import Button from '../../../../src/atoms/components/Button/Button.vue';
51
51
  import VueCropper from 'vue-cropperjs';
52
52
 
53
53
  import trackEvent from '../../helpers/tracking';
54
+ import { uploadYourLogoTr } from '../../../useSharedLibTranslate';
54
55
 
55
56
  export default {
56
57
  components: {
@@ -72,6 +73,11 @@ export default {
72
73
  required: true,
73
74
  },
74
75
  },
76
+ setup() {
77
+ return {
78
+ uploadYourLogoTr,
79
+ };
80
+ },
75
81
  data() {
76
82
  return {
77
83
  cropperToolReady: false,
@@ -5,8 +5,8 @@
5
5
  <p class="tw-text-grayscale-600 tw-font-bold tw-text-xs tw-mb-2 tw-uppercase">
6
6
  {{ progressLabel }}
7
7
  </p>
8
- <h2 class="tw-mb-4 tw-text-4xl tw-text-black tw-font-bold">Logo preview</h2>
9
- <p class="tw-mt-0">Your logo looks great! Help us setup your logo by completing the next steps.</p>
8
+ <h2 class="tw-mb-4 tw-text-4xl tw-text-black tw-font-bold">{{ uploadYourLogoTr('logoPreview') }}</h2>
9
+ <p class="tw-mt-0">{{ uploadYourLogoTr('logoPreviewDescription') }}</p>
10
10
  </div>
11
11
 
12
12
  <div class="lg:tw-pb-8 lg:tw-px-8">
@@ -24,7 +24,7 @@
24
24
  class="tw-fixed tw-rounded-b tw-bottom-0 tw-left-0 tw-z-10 tw-bg-grayscale-200 lg:tw-static tw-flex tw-w-full tw-items-center tw-justify-center tw-border-0 tw-border-t tw-border-black/10 tw-border-solid tw-py-4 tw-px-8 tw-box-border"
25
25
  >
26
26
  <Button
27
- label="Cancel"
27
+ :label="uploadYourLogoTr('cancel')"
28
28
  size="large"
29
29
  variant="outline"
30
30
  container-classes="tw-mx-2"
@@ -32,7 +32,7 @@
32
32
  @on-click="cancel"
33
33
  />
34
34
  <Button
35
- label="Continue"
35
+ :label="uploadYourLogoTr('continue')"
36
36
  size="large"
37
37
  variant="primary-with-icon"
38
38
  icon="chevron-right-wide"
@@ -44,8 +44,9 @@
44
44
  </div>
45
45
  </template>
46
46
  <script>
47
- import Button from '../../../../src/atoms/components/Button/Button.vue';
47
+ import Button from '../../../atoms/components/Button/Button.vue';
48
48
  import trackEvent from '../../helpers/tracking';
49
+ import { uploadYourLogoTr } from '../../../useSharedLibTranslate';
49
50
 
50
51
  export default {
51
52
  components: {
@@ -66,6 +67,11 @@ export default {
66
67
  required: true,
67
68
  },
68
69
  },
70
+ setup() {
71
+ return {
72
+ uploadYourLogoTr,
73
+ };
74
+ },
69
75
  methods: {
70
76
  cropImage() {
71
77
  if (!this.$refs.preview.complete) return;
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div class="tw-w-full">
3
3
  <div class="tw-px-8 tw-pb-8">
4
- <h2 class="tw-mb-8 tw-text-4xl tw-font-bold">Upload Error</h2>
4
+ <h2 class="tw-mb-8 tw-text-4xl tw-font-bold">{{ uploadYourLogoTr('uploadError') }}</h2>
5
5
  <p class="tw-mt-0 tw-text-grayscale-600 tw-text-base tw-text-center">
6
6
  {{ errorMessage }}
7
7
  </p>
@@ -11,7 +11,7 @@
11
11
  class="tw-flex tw-w-full tw-items-center tw-justify-center tw-border-0 tw-border-t tw-border-black/10 tw-border-solid tw-py-4 tw-px-8"
12
12
  >
13
13
  <Button
14
- label="Cancel"
14
+ :label="uploadYourLogoTr('cancel')"
15
15
  size="large"
16
16
  variant="outline"
17
17
  container-classes="tw-mx-2"
@@ -28,7 +28,7 @@
28
28
  />
29
29
 
30
30
  <Button
31
- label="Upload your logo"
31
+ :label="uploadYourLogoTr('uploadYourLogoText')"
32
32
  size="large"
33
33
  variant="primary-with-icon"
34
34
  icon="chevron-right-wide"
@@ -39,7 +39,8 @@
39
39
  </div>
40
40
  </template>
41
41
  <script>
42
- import Button from '../../../../src/atoms/components/Button/Button.vue';
42
+ import Button from '../../../atoms/components/Button/Button.vue';
43
+ import { uploadYourLogoTr } from '../../../useSharedLibTranslate';
43
44
 
44
45
  export default {
45
46
  components: {
@@ -52,6 +53,11 @@ export default {
52
53
  default: null,
53
54
  },
54
55
  },
56
+ setup() {
57
+ return {
58
+ uploadYourLogoTr,
59
+ };
60
+ },
55
61
  methods: {
56
62
  cancel() {
57
63
  this.$emit('on-cancel');
@@ -1,9 +1,9 @@
1
1
  <template>
2
2
  <div class="tw-w-full">
3
3
  <div class="tw-px-8 tw-pb-8">
4
- <h2 class="tw-mb-4 tw-text-4xl tw-text-black tw-font-bold">Are you sure you want to exit?</h2>
4
+ <h2 class="tw-mb-4 tw-text-4xl tw-text-black tw-font-bold">{{ uploadYourLogoTr('exitConfirmationTitle') }}</h2>
5
5
  <p class="tw-mt-0 tw-text-grayscale-600 tw-text-base tw-text-center">
6
- Your logo upload progress in this session will be lost
6
+ {{ uploadYourLogoTr('exitConfirmationDescription') }}
7
7
  </p>
8
8
  </div>
9
9
 
@@ -11,7 +11,7 @@
11
11
  class="tw-flex tw-w-full tw-items-center tw-justify-center tw-border-0 tw-border-t tw-border-black/10 tw-border-solid tw-py-4 tw-px-8"
12
12
  >
13
13
  <Button
14
- label="No"
14
+ :label="uploadYourLogoTr('no')"
15
15
  size="large"
16
16
  variant="outline"
17
17
  container-classes="tw-mx-2"
@@ -19,7 +19,7 @@
19
19
  @on-click="goBack"
20
20
  />
21
21
  <Button
22
- label="Yes"
22
+ :label="uploadYourLogoTr('yes')"
23
23
  size="large"
24
24
  variant="primary-with-icon"
25
25
  icon="chevron-right-wide"
@@ -31,12 +31,18 @@
31
31
  </div>
32
32
  </template>
33
33
  <script>
34
- import Button from '../../../../src/atoms/components/Button/Button.vue';
34
+ import Button from '../../../atoms/components/Button/Button.vue';
35
+ import { uploadYourLogoTr } from '../../../useSharedLibTranslate';
35
36
 
36
37
  export default {
37
38
  components: {
38
39
  Button,
39
40
  },
41
+ setup() {
42
+ return {
43
+ uploadYourLogoTr,
44
+ };
45
+ },
40
46
  methods: {
41
47
  goBack() {
42
48
  this.$emit('on-go-back');
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <LogoUploadingLoader loading-text="Uploading and converting your logo..." />
2
+ <LogoUploadingLoader :loading-text="uploadYourLogoTr('uploadingAndConverting')" />
3
3
  </template>
4
4
  <script>
5
5
  import brandCrowdClient from '../../clients/brand-crowd-api.client';
@@ -7,6 +7,7 @@ import LogoUploadingLoader from './LogoUploadingLoader.vue';
7
7
 
8
8
  import trackEvent from '../../helpers/tracking';
9
9
  import hexDiff from '../../helpers/hex-diff';
10
+ import { uploadYourLogoTr } from '../../../useSharedLibTranslate';
10
11
 
11
12
  export default {
12
13
  components: {
@@ -23,6 +24,11 @@ export default {
23
24
  required: true,
24
25
  },
25
26
  },
27
+ setup() {
28
+ return {
29
+ uploadYourLogoTr,
30
+ };
31
+ },
26
32
  data() {
27
33
  return {
28
34
  isRunning: false,
@@ -12,8 +12,8 @@
12
12
  <p class="tw-text-grayscale-600 tw-font-bold tw-text-xs tw-mb-2 tw-uppercase">
13
13
  {{ currentStepProgressLabel }}
14
14
  </p>
15
- <h2 class="tw-mb-4 tw-text-4xl tw-text-black tw-font-bold">Upload your logo</h2>
16
- <p class="tw-mt-0 tw-pb-8">Please ensure you have the right to use any image you upload.</p>
15
+ <h2 class="tw-mb-4 tw-text-4xl tw-text-black tw-font-bold">{{ uploadYourLogoTr('uploadYourLogoText') }}</h2>
16
+ <p class="tw-mt-0 tw-pb-8">{{ uploadYourLogoTr('disclaimerText') }}</p>
17
17
  <UploadYourLogoDropzone :is-modal="true" @on-upload-success="onLogoFileChange"> </UploadYourLogoDropzone>
18
18
  </div>
19
19
 
@@ -70,7 +70,7 @@
70
70
  @on-logo-file-change="onLogoFileChange"
71
71
  />
72
72
 
73
- <LogoUploadingLoader v-if="isCurrentlySaving" loading-text="Generating Designs..." />
73
+ <LogoUploadingLoader v-if="isCurrentlySaving" :loading-text="uploadYourLogoTr('generatingDesigns')" />
74
74
 
75
75
  <LogoUploadExitConfirmation
76
76
  v-if="isAttemptingToExit && currentStep > 1"
@@ -85,6 +85,7 @@
85
85
  import brandCrowdClient from '../../clients/brand-crowd-api.client';
86
86
  import Errors from '../../constants/error-constants';
87
87
  import trackEvent from '../../helpers/tracking';
88
+ import { uploadYourLogoTr } from '../../../useSharedLibTranslate';
88
89
 
89
90
  import LogoUploadModal from './LogoUploadModal.vue';
90
91
  import UploadYourLogoDropzone from '../UploadYourLogoDropzone/UploadYourLogoDropzone.vue';
@@ -127,6 +128,11 @@ export default {
127
128
  default: false,
128
129
  },
129
130
  },
131
+ setup() {
132
+ return {
133
+ uploadYourLogoTr,
134
+ };
135
+ },
130
136
  data() {
131
137
  return {
132
138
  currentStep: this.useDropzone ? 0 : 1,
@@ -145,9 +151,9 @@ export default {
145
151
  currentStepProgressLabel() {
146
152
  if (this.includeDropzoneInModal) {
147
153
  const currentStepDisplay = this.currentStep === 0 ? 1 : this.currentStep;
148
- return `Step ${currentStepDisplay} of 5`;
154
+ return this.uploadYourLogoTr('stepOf', { current: currentStepDisplay, total: 5 });
149
155
  }
150
- return `Step ${this.currentStep - 1} of 4`;
156
+ return this.uploadYourLogoTr('stepOf', { current: this.currentStep - 1, total: 4 });
151
157
  },
152
158
  hasError() {
153
159
  return !!this.errorMessage;
@@ -175,7 +181,7 @@ export default {
175
181
  handler() {
176
182
  if (this.logoFile) {
177
183
  this.errorMessage =
178
- this.logoFile.file.size > Errors.MAX_BYO_FILE_SIZE ? Errors.MAX_BYO_FILE_SIZE_EXCEEDED_MSG : null;
184
+ this.logoFile.file.size > Errors.MAX_BYO_FILE_SIZE ? uploadYourLogoTr('maxByoFileErrorMessage') : null;
179
185
  }
180
186
  },
181
187
  },
@@ -191,7 +197,7 @@ export default {
191
197
  if (typeof err.response?.data?.errorMessage === 'string' && err.response?.data?.errorMessage !== '') {
192
198
  this.errorMessage = err.response.data.errorMessage;
193
199
  } else {
194
- this.errorMessage = Errors.GENERIC_BYO_ERROR;
200
+ this.errorMessage = uploadYourLogoTr('genericByoErrorMessage');
195
201
  }
196
202
  this.currentStep = null;
197
203
  },
@@ -0,0 +1,30 @@
1
+ {
2
+ "uploadYourLogo": {
3
+ "uploadYourLogoText": "Upload your logo-",
4
+ "disclaimerText": "Please ensure you have the right to use any image you upload.-",
5
+ "generatingDesigns": "Generating Designs...-",
6
+ "uploadingAndConverting": "Uploading and converting your logo...-",
7
+ "stepOf": "Step {{current}} of {{total}}-",
8
+ "uploadError": "Upload Error-",
9
+ "cancel": "Cancel-",
10
+ "continue": "Continue-",
11
+ "back": "Back-",
12
+ "no": "No-",
13
+ "yes": "Yes-",
14
+ "businessName": "Business Name-",
15
+ "businessNameDescription": "Enter your logo text or business name-",
16
+ "cropYourLogo": "Crop your logo-",
17
+ "cropDescription": "Crop your logo design to fit our logo maker canvas-",
18
+ "logoPreview": "Logo preview-",
19
+ "logoPreviewDescription": "Your logo looks great! Help us setup your logo by completing the next steps.-",
20
+ "primaryTextColor": "Primary text color-",
21
+ "primaryTextColorDescription": "Help us setup your logo by confirming the primary text color. Choose from the available colors or click the plus icon to add another.-",
22
+ "backgroundColor": "Background color-",
23
+ "backgroundColorDescription": "Help us setup your logo by confirming the background color. Choose from the available colors or click the plus icon to add another.-",
24
+ "colorsWarning": "Your text and background colors are too similar. Please choose a more distinct pairing to ensure they create quality designs.-",
25
+ "exitConfirmationTitle": "Are you sure you want to exit?-",
26
+ "exitConfirmationDescription": "Your logo upload progress in this session will be lost-",
27
+ "maxByoFileErrorMessage": "Your file exceeds the maximum size of 25MB. Please choose a smaller file.-",
28
+ "genericByoErrorMessage": "An unexpected error occured. Please try again.-"
29
+ }
30
+ }
@@ -35,6 +35,8 @@ const tr = (key, valuesToInterpolate = {}) => {
35
35
  return translated;
36
36
  };
37
37
 
38
+ const uploadYourLogoTr = (key, valuesToInterpolate = {}) => tr(`uploadYourLogo.${key}`, valuesToInterpolate);
39
+
38
40
  const publishBrandPageModalTr = (key, valuesToInterpolate = {}) =>
39
41
  tr(`publishBrandPageModal.${key}`, valuesToInterpolate);
40
42
 
@@ -70,5 +72,5 @@ export {
70
72
  sellDomainNameModalApplicationTr,
71
73
  sellDomainNameListModalTr,
72
74
  sellDomainNameListTr,
75
+ uploadYourLogoTr,
73
76
  };
74
-
@@ -1,103 +0,0 @@
1
- <template>
2
- <div class="tw-m-5">
3
- <h3 class="tw-text-center tw-text-2xl tw-font-bold tw-mb-5">
4
- {{ digitalBusinessCardProps.makerUrl ? titleVariation2 : title }}
5
- </h3>
6
- <div class="tw-flex tw-justify-center tw-items-center">
7
- <figure
8
- class="tw-relative tw-block tw-border tw-border-solid tw-rounded-lg tw-bg-white tw-border-secondary-300 tw-p-1.5 tw-overflow-hidden tw-max-h-full group-hover:tw-scale-105 tw-transition-all tw-h-full group-hover:tw-shadow"
9
- style="width: 98px"
10
- >
11
- <img
12
- :src="digitalBusinessCardProps.previewImage"
13
- alt=""
14
- style="aspect-ratio: 1080 / 1920"
15
- loading="lazy"
16
- class="tw-w-full tw-rounded-md tw-h-full"
17
- />
18
- <div
19
- class="tw-absolute tw-top-0 tw-left-1/2 tw-transform tw--translate-x-1/2 tw--translate-y-1 tw-mt-2"
20
- style="width: 40px"
21
- >
22
- <img
23
- loading="lazy"
24
- src="https://bcassetcdn.com/assets/images/carousel/preview-artifacts/carousel-stories-element.png"
25
- alt=""
26
- />
27
- </div>
28
- </figure>
29
- </div>
30
- <div class="tw-text-center tw-mb-5 tw-text-grayscale-600 tw-mt-5">
31
- {{ subtitle }}
32
- </div>
33
- <div v-if="digitalBusinessCardProps.checkoutUrl" class="tw-flex tw-gap-4 tw-mt-5">
34
- <Button
35
- :full-width="true"
36
- variant="info"
37
- :label="tryNowLabel"
38
- classes="tw-flex-1"
39
- :url="digitalBusinessCardProps.makerUrl"
40
- />
41
- <Button
42
- :full-width="true"
43
- variant="primary"
44
- :label="upgradeNowLabel"
45
- classes="tw-flex-1"
46
- :url="digitalBusinessCardProps.checkoutUrl"
47
- />
48
- </div>
49
- <div v-else class="tw-flex tw-justify-center tw-items-center tw-mt-5">
50
- <Button
51
- :full-width="true"
52
- variant="success"
53
- :label="getStartedLabel"
54
- classes="tw-w-full"
55
- :url="digitalBusinessCardProps.makerUrl"
56
- />
57
- </div>
58
- </div>
59
- </template>
60
- <script>
61
- import { Button } from '@designcrowd/fe-shared-lib';
62
-
63
- export default {
64
- name: 'BusinessCardUpsell',
65
- components: {
66
- Button,
67
- },
68
- props: {
69
- digitalBusinessCardProps: {
70
- type: Object,
71
- required: true,
72
- default: () => ({
73
- makerUrl: 'https://example.com/maker',
74
- previewImage: 'https://example.com/preview-image.png',
75
- checkoutUrl: 'https://example.com/checkout',
76
- }),
77
- },
78
- },
79
- data() {
80
- const { t, te } = useI18n();
81
-
82
- return {
83
- title: te('BusinessCardUpsellTitle')
84
- ? t('BusinessCardUpsellTitle')
85
- : 'Create your digital business card for free',
86
- titleVariation2: te('BusinessCardUpsellTitleVariation2')
87
- ? t('BusinessCardUpsellTitleVariation2')
88
- : 'Create your digital business card',
89
- subtitle: te('BusinessCardUpsellSubtitle')
90
- ? t('BusinessCardUpsellSubtitle')
91
- : 'Launch a digital business card that drives connections and elevates your brand.',
92
- tryNowLabel: te('BusinessCardTryNowLabel') ? t('BusinessCardTryNowLabel') : 'Try Now',
93
- upgradeNowLabel: te('BusinessCardUpgradeNowLabel') ? t('BusinessCardUpgradeNowLabel') : 'Upgrade Now',
94
- getStartedLabel: te('BusinessCardGetStartedLabel') ? t('BusinessCardGetStartedLabel') : 'Get Started',
95
- };
96
- },
97
- };
98
- </script>
99
- <i18n locale="en-US" src="../i18n/AssetDownloadUpsellModal.json" />
100
- <i18n locale="fr-FR" src="../i18n/AssetDownloadUpsellModal.fr-FR.json" />
101
- <i18n locale="de-DE" src="../i18n/AssetDownloadUpsellModal.de-DE.json" />
102
- <i18n locale="es-ES" src="../i18n/AssetDownloadUpsellModal.es-ES.json" />
103
- <i18n locale="pt-PT" src="../i18n/AssetDownloadUpsellModal.pt-PT.json" />
@@ -1,54 +0,0 @@
1
- <template>
2
- <div>
3
- <h3 class="tw-text-center tw-text-2xl tw-font-bold tw-mb-0">
4
- {{ domainNameUpsellTitle }}
5
- </h3>
6
- <div class="tw-text-center tw-mb-8 tw-text-grayscale-600">
7
- {{ domainNameUpsellSubtitle }}
8
- </div>
9
- <SellDomainNameSearchWithResults
10
- :initial-search-term="domainProps.initialSearchTerm"
11
- :logo-draft-token="domainProps.logoDraftToken"
12
- :is-design-com="domainProps.isDesignCom"
13
- :currency="() => ({})"
14
- @on-search-results-loaded="() => $emit('domain-search-results-loaded')"
15
- />
16
- </div>
17
- </template>
18
- <script>
19
- import SellDomainNameSearchWithResults from '@designcrowd/fe-shared-lib/src/experiences/components/SellDomainNameSearchWithResults/SellDomainNameSearchWithResults.vue';
20
-
21
- export default {
22
- name: 'DomainNameUpsell',
23
- components: {
24
- SellDomainNameSearchWithResults,
25
- },
26
- props: {
27
- domainProps: {
28
- type: Object,
29
- required: false,
30
- default: () => ({
31
- initialSearchTerm: 'BrandCrowd',
32
- isDesignCom: true,
33
- logoDraftToken: '00000000-0000-0000-0000-000000000000',
34
- }),
35
- },
36
- },
37
- emits: ['domain-search-results-loaded'],
38
- data() {
39
- const { t, te } = useI18n();
40
-
41
- return {
42
- domainNameUpsellSubtitle: te('domainNameUpsellSubtitle')
43
- ? t('domainNameUpsellSubtitle')
44
- : 'Buy matching domain name for your brand',
45
- domainNameUpsellTitle: te('domainNameUpsellTitle') ? t('domainNameUpsellTitle') : 'Secure a domain name',
46
- };
47
- },
48
- };
49
- </script>
50
- <i18n locale="en-US" src="../i18n/AssetDownloadUpsellModal.json" />
51
- <i18n locale="fr-FR" src="../i18n/AssetDownloadUpsellModal.fr-FR.json" />
52
- <i18n locale="de-DE" src="../i18n/AssetDownloadUpsellModal.de-DE.json" />
53
- <i18n locale="es-ES" src="../i18n/AssetDownloadUpsellModal.es-ES.json" />
54
- <i18n locale="pt-PT" src="../i18n/AssetDownloadUpsellModal.pt-PT.json" />
@@ -1,59 +0,0 @@
1
- <template>
2
- <div class="tw-flex tw-flex-col tw-items-center tw-gap-4">
3
- <!-- eslint-disable-next-line vue/singleline-html-element-content-newline -->
4
- <h3 class="tw-text-2xl tw-font-bold tw-text-center tw-whitespace-pre-line">{{ legalZoomProps.title }}</h3>
5
- <img :src="legalZoomProps.imageUrl" alt="LegalZoom Upsell" class="tw-h-[40px] tw-mb-4" />
6
- <p class="tw-text-grayscale-600 tw-text-md tw-text-center">
7
- {{ legalZoomProps.description }}
8
- </p>
9
- <Button
10
- class="tw-mt-4 tw-w-full"
11
- variant="primary"
12
- size="medium"
13
- full-width="true"
14
- :label="legalZoomProps.buttonLabel"
15
- @click="clickLegalZoomButton"
16
- />
17
- </div>
18
- </template>
19
- <script lang="ts">
20
- import { Button } from '@designcrowd/fe-shared-lib';
21
- import type { PropType } from 'vue';
22
- import { MIXPANEL_EVENT_NAME, MIXPANEL_EVENT_PROPERTY_VALUE } from '../../../../../constants/mp-constants';
23
- import mpMixin from '../../../../../mixins/mixpanel/mpMixin';
24
- import type { legalZoomUpsellProps } from './upsellTypes';
25
-
26
- export default {
27
- name: 'LegalZoomUpsell',
28
- components: {
29
- Button,
30
- },
31
- mixins: [mpMixin],
32
- props: {
33
- legalZoomProps: {
34
- type: Object as PropType<legalZoomUpsellProps>,
35
- required: true,
36
- },
37
- mixPanelEventLocation: {
38
- type: String,
39
- required: false,
40
- default: MIXPANEL_EVENT_PROPERTY_VALUE.ASSET_DOWNLOAD.PAGE_SECTION.LOGO_DOWNLOAD_MODAL,
41
- },
42
- },
43
- mounted() {
44
- // Track the component mount event for analytics
45
- this.pushMixpanelEvent(MIXPANEL_EVENT_NAME.LEGALZOOM_OFFER, {
46
- location: this.mixPanelEventLocation,
47
- });
48
- },
49
- methods: {
50
- clickLegalZoomButton() {
51
- // Track the click event for analytics
52
- this.pushMixpanelEvent(MIXPANEL_EVENT_NAME.LEGALZOOM_CLICK, {
53
- location: this.mixPanelEventLocation,
54
- });
55
- window.open(this.legalZoomProps.url, '_blank', 'noopener,noreferrer');
56
- },
57
- },
58
- };
59
- </script>