@designcrowd/fe-shared-lib 1.2.25 → 1.2.26-ast-upsell

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.
@@ -82,6 +82,7 @@ export const IconSample = () => {
82
82
  { name: 'error' },
83
83
  { name: 'envelope-email' },
84
84
  { name: 'eye-crossed' },
85
+ { name: 'eye-open' },
85
86
  { name: 'fees' },
86
87
  { name: 'filter' },
87
88
  { name: 'filter-crazy-domains' },
@@ -117,6 +117,7 @@ import IconError from './icons/error.vue';
117
117
  import IconEllipsis from './icons/ellipsis.vue';
118
118
  import IconEnvelopeEmail from './icons/envelope-email.vue';
119
119
  import IconEyeCrossed from './icons/eye-crossed.vue';
120
+ import IconEyeOpen from './icons/eye-open.vue';
120
121
  import IconFees from './icons/fees.vue';
121
122
  import IconFilter from './icons/filter.vue';
122
123
  import IconFilterCrazyDomains from './icons/crazy-domains/filter.vue';
@@ -473,6 +474,7 @@ export default {
473
474
  IconError,
474
475
  IconEnvelopeEmail,
475
476
  IconEyeCrossed,
477
+ IconEyeOpen,
476
478
  IconFees,
477
479
  IconFilter,
478
480
  IconFilterCrazyDomains,
@@ -0,0 +1,11 @@
1
+ <template>
2
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <path
4
+ opacity="0.9"
5
+ fill-rule="evenodd"
6
+ clip-rule="evenodd"
7
+ d="M11.4181 4.32617C10.3175 3.62909 9.18444 3.34961 8.00013 3.34961C6.8155 3.34961 5.68265 3.62903 4.57728 4.3252C3.48286 5.01447 2.44779 6.09218 1.41615 7.63965C1.27079 7.85788 1.27079 8.14212 1.41615 8.36035C2.44917 9.90989 3.49435 10.9873 4.5929 11.6758C5.70138 12.3705 6.83403 12.6504 8.00013 12.6504C10.3963 12.6502 12.9746 10.971 14.5568 8.33398C14.6687 8.14732 14.6792 7.91929 14.589 7.72559L14.5441 7.64453C13.533 6.09549 12.5081 5.01658 11.4181 4.32617ZM5.26966 5.4248C6.14901 4.87098 7.03773 4.65039 8.00013 4.65039C8.9627 4.65039 9.85008 4.87112 10.7228 5.42383C11.5338 5.93754 12.3581 6.75756 13.2208 8.01074C11.802 10.1554 9.72686 11.3494 8.00013 11.3496C7.05919 11.3496 6.16934 11.1295 5.28333 10.5742C4.4643 10.0609 3.62437 9.24441 2.7472 8C3.62417 6.75384 4.45564 5.93751 5.26966 5.4248ZM10 8C10 9.10457 9.10457 10 8 10C6.89543 10 6 9.10457 6 8C6 6.89543 6.89543 6 8 6C9.10457 6 10 6.89543 10 8Z"
8
+ fill="black"
9
+ />
10
+ </svg>
11
+ </template>
@@ -15,7 +15,7 @@
15
15
  :class="[
16
16
  {
17
17
  'tw-w-full': !isImageMode,
18
- 'tw-p-4': !simple,
18
+ 'tw-p-4': !removeHorizontalPadding && !simple,
19
19
  'tw-max-w-md': size === 'md',
20
20
  'tw-max-w-xl': size === 'xl',
21
21
  'tw-max-w-2xl': !size && !isImageMode,
@@ -91,6 +91,11 @@ export default {
91
91
  required: false,
92
92
  default: false,
93
93
  },
94
+ removeHorizontalPadding: {
95
+ type: Boolean,
96
+ required: false,
97
+ default: false,
98
+ },
94
99
  visible: {
95
100
  type: Boolean,
96
101
  required: false,
@@ -1 +1,24 @@
1
- {}
1
+ {
2
+ "publishBrandPageModal": {
3
+ "firstTimePublishHeaderLabel": "Set the URL for {{brandPageDisplayName}}",
4
+ "sitePublishedLabel": "Site published!",
5
+ "publishSuccessLabel": "Your {{brandPageDisplayName}} is live! Start using your link:",
6
+ "freePublishCardTitleLabel": "Free Address",
7
+ "freePublishCardDescriptionLabel": "Choose a free address to publish now. You can always edit the URL later",
8
+ "slugInputPlaceholderYourNameLabel": "your-name",
9
+ "slugInputPlaceholderYourBusinessNameLabel": "your-business-name",
10
+ "freeDomainLabel": "Free domain",
11
+ "purchasedDomainLabel": "Purchased domain",
12
+ "setUrlLabel": "Set URL",
13
+ "publishLabel": "Publish",
14
+ "viewMoreDomainLabel": "VIEW MORE DOMAINS",
15
+ "viewMyWebsiteLabel": "View {{brandPageDisplayName}}",
16
+ "copyLabel": "Copy",
17
+ "copySuccessLabel": "Copied!",
18
+ "publishedSuccessDescriptionLabel": "Buy matching domain name for your brand",
19
+ "hasAlreadyPurchasedDomainCloseButtonLabel": "No thanks, maybe later",
20
+ "selectDomainDropdownPlaceholder": "Select domain name",
21
+ "websiteFriendlyName": "Website",
22
+ "digitalBusinessCardFriendlyName": "Digital Business Card"
23
+ }
24
+ }
@@ -75,8 +75,8 @@ const props = defineProps({
75
75
  default: '',
76
76
  },
77
77
  imgUrl: {
78
- type: Boolean,
79
- default: true,
78
+ type: String,
79
+ default: '',
80
80
  },
81
81
  isDesignCom: {
82
82
  type: Boolean,
@@ -1,26 +1,38 @@
1
1
  <template>
2
2
  <div class="publish-bp--container">
3
3
  <Modal
4
- classes="publish-bp--modal tw-px-2 md:tw-px-8"
4
+ classes="publish-bp--modal tw-pt-4"
5
5
  close-on-esc
6
6
  :visible="visible"
7
7
  :hide-scrollbar="false"
8
8
  :show-modal-background-image="showModalBackgroundImage"
9
9
  :content-classes="isBusy ? ['tw-overflow-y-hidden'] : []"
10
+ :remove-horizontal-padding="showUpsellRotationContainer && !isCustomDomainActive && !hasPurchasedDomains"
11
+ :class="{
12
+ 'tw-px-2 md:tw-px-8': !showUpsellRotationContainer && isCustomDomainActive && hasPurchasedDomains,
13
+ }"
10
14
  @close-modal="onCloseModal"
11
15
  >
12
16
  <template #header>
13
17
  <div v-if="isNotPublished || isSlugEditMode" class="tw-text-center tw-font-bold tw-mb-8 tw-mt-8 tw-text-4xl">
14
18
  <span>{{ firstTimePublishHeaderLabel }}</span>
15
19
  </div>
16
- <div v-if="isPublished && !isSlugEditMode" class="tw-text-center tw-font-bold tw-mb-8 tw-mt-8">
20
+ <div
21
+ v-if="isPublished && !isSlugEditMode"
22
+ class="tw-text-center tw-font-bold tw-mt-8"
23
+ :class="{
24
+ 'tw-mb-8 ': !showUpsellRotationContainer,
25
+ }"
26
+ >
17
27
  <p class="tw-font-bold tw-text-black tw-mb-2 tw-text-4xl">{{ sitePublishedLabel }}</p>
18
- <p v-if="hasPurchasedDomains || isCustomDomainActive" class="tw-text-grayscale-600 tw-mb-8">
19
- {{ publishSuccessLabel }}
20
- </p>
21
- <p v-else class="tw-text-grayscale-600 tw-mb-8 tw-font-normal">
22
- {{ publishedSuccessDescriptionLabel }}
23
- </p>
28
+ <div v-if="!showUpsellRotationContainer">
29
+ <p v-if="hasPurchasedDomains || isCustomDomainActive" class="tw-text-grayscale-600 tw-mb-8">
30
+ {{ publishSuccessLabel }}
31
+ </p>
32
+ <p v-else class="tw-text-grayscale-600 tw-mb-8 tw-font-normal">
33
+ {{ publishedSuccessDescriptionLabel }}
34
+ </p>
35
+ </div>
24
36
  </div>
25
37
  </template>
26
38
  <template #default>
@@ -187,7 +199,7 @@
187
199
  </div>
188
200
  </div>
189
201
  <div v-else class="tw-font-sans">
190
- <div v-if="!isCustomDomainActive && !hasPurchasedDomains" class="tw-mb-6 tw-text-left">
202
+ <div v-if="!showUpsellRotationContainer" class="tw-mb-6 tw-text-left">
191
203
  <div class="tw-mb-6">
192
204
  <SellDomainNameSearchWithResults
193
205
  :is-design-com="isDesignCom"
@@ -195,17 +207,12 @@
195
207
  :currency="userCurrency"
196
208
  :display-result-limit="4"
197
209
  :domain-search-location="sitePublishedModal"
210
+ show-view-more-button
198
211
  @on-change-search="onSearchTextChanged"
199
212
  @on-buy-now-click="onBuyNowClick"
213
+ @on-view-more="onViewMore"
200
214
  />
201
215
  </div>
202
- <Button
203
- :label="viewMoreDomainLabel"
204
- variant="no-border"
205
- size="small-medium"
206
- class="tw-text-center"
207
- @on-click="onViewMore"
208
- />
209
216
  </div>
210
217
  <div class="tw-px-4 tw-text-center" :class="{ 'lg:tw-px-20': hasPurchasedDomains }">
211
218
  <TextCopyField
@@ -230,6 +237,9 @@
230
237
  @on-click="onBrandPageUrlClick"
231
238
  />
232
239
  </div>
240
+ <div v-if="showUpsellRotationContainer" class="tw-border-t tw-border-solid tw-border-grayscale-500 tw-p-5">
241
+ <slot name="upsellContainer" />
242
+ </div>
233
243
  </div>
234
244
  </template>
235
245
  </Modal>
@@ -405,6 +415,11 @@ export default {
405
415
  required: true,
406
416
  default: '',
407
417
  },
418
+ showUpsellRotation: {
419
+ type: Boolean,
420
+ required: true,
421
+ default: false,
422
+ },
408
423
  },
409
424
  emits: [
410
425
  'close-modal',
@@ -503,6 +518,17 @@ export default {
503
518
  ? this.slugInputPlaceholderYourNameLabel
504
519
  : this.slugInputPlaceholderYourBusinessNameLabel;
505
520
  },
521
+ showUpsellRotationContainer() {
522
+ // Should be false if no brandPageSlug or already published
523
+ if (
524
+ (this.brandPageSlug && this.brandPageSlug.trim() !== '') ||
525
+ this.isPublished ||
526
+ this.isBrandPageSlugEditMode
527
+ ) {
528
+ return false;
529
+ }
530
+ return this.showUpsellRotation && !this.isCustomDomainActive && !this.hasPurchasedDomains;
531
+ },
506
532
  },
507
533
  watch: {
508
534
  brandPageSlug(slug) {
@@ -0,0 +1,24 @@
1
+ {
2
+ "publishBrandPageModal" : {
3
+ "firstTimePublishHeaderLabel" : "Set the URL for {{brandPageDisplayName}}",
4
+ "sitePublishedLabel" : "Site published!",
5
+ "publishSuccessLabel" : "Your {{brandPageDisplayName}} is live! Start using your link:",
6
+ "freePublishCardTitleLabel" : "Free Address",
7
+ "freePublishCardDescriptionLabel" : "Choose a free address to publish now. You can always edit the URL later",
8
+ "slugInputPlaceholderYourNameLabel" : "your-name",
9
+ "slugInputPlaceholderYourBusinessNameLabel" : "your-business-name",
10
+ "freeDomainLabel" : "Free domain",
11
+ "purchasedDomainLabel" : "Purchased domain",
12
+ "setUrlLabel" : "Set URL",
13
+ "publishLabel" : "Publish",
14
+ "viewMoreDomainLabel" : "VIEW MORE DOMAINS",
15
+ "viewMyWebsiteLabel" : "View {{brandPageDisplayName}}",
16
+ "copyLabel" : "Copy",
17
+ "copySuccessLabel" : "Copied!",
18
+ "publishedSuccessDescriptionLabel" : "Buy matching domain name for your brand",
19
+ "hasAlreadyPurchasedDomainCloseButtonLabel" : "No thanks, maybe later",
20
+ "selectDomainDropdownPlaceholder" : "Select domain name",
21
+ "websiteFriendlyName" : "Website",
22
+ "digitalBusinessCardFriendlyName" : "Digital Business Card"
23
+ }
24
+ }
@@ -22,6 +22,14 @@
22
22
  :domain-search-location="domainSearchLocation"
23
23
  @on-buy-now-click="onBuyNowClick"
24
24
  />
25
+ <Button
26
+ v-if="showViewMoreButton"
27
+ :label="viewMoreDomainLabel"
28
+ variant="no-border"
29
+ size="small-medium"
30
+ class="tw-text-center tw-pt-6"
31
+ @on-click="onViewMore"
32
+ />
25
33
  </div>
26
34
  </template>
27
35
  <script>
@@ -30,6 +38,8 @@ import SellDomainNameSearchResult from '../SellDomainNameSearchResult/SellDomain
30
38
 
31
39
  import brandCrowdApiClient from '../../clients/brand-crowd-api.client';
32
40
  import Events from '../../constants/event-constants';
41
+ import { publishBrandPageModalTr } from '../../../useSharedLibTranslate';
42
+ import Button from '../../../atoms/components/Button/Button.vue';
33
43
 
34
44
  const TEXT_CHANGED_PARAM = 'textChanged';
35
45
 
@@ -37,6 +47,7 @@ export default {
37
47
  components: {
38
48
  SellDomainNameSearch,
39
49
  SellDomainNameSearchResult,
50
+ Button,
40
51
  },
41
52
  props: {
42
53
  currency: {
@@ -101,6 +112,16 @@ export default {
101
112
  type: Number,
102
113
  default: undefined,
103
114
  },
115
+ showViewMoreButton: {
116
+ type: Boolean,
117
+ default: false,
118
+ },
119
+ },
120
+ setup() {
121
+ return {
122
+ publishBrandPageModalTr,
123
+ viewMoreDomainLabel: publishBrandPageModalTr('viewMoreDomainLabel'),
124
+ };
104
125
  },
105
126
  data: () => ({
106
127
  domainNameItems: undefined,
@@ -126,6 +147,7 @@ export default {
126
147
  methods: {
127
148
  async onSearchDomainName(args) {
128
149
  this.$emit('on-change-search', args.searchText);
150
+ this.$emit('on-domain-search');
129
151
  await this.searchDomainName(args.searchText, args.isUserTriggered);
130
152
  },
131
153
  async searchDomainName(searchText, isUserTriggered) {
@@ -184,6 +206,9 @@ export default {
184
206
  const urlParams = new URLSearchParams(window.location.search);
185
207
  return urlParams.get(TEXT_CHANGED_PARAM)?.toUpperCase() === 'TRUE' || false;
186
208
  },
209
+ onViewMore() {
210
+ this.$emit('on-view-more');
211
+ },
187
212
  },
188
213
  };
189
214
  </script>