@designcrowd/fe-shared-lib 1.0.9-ast-modal → 1.0.9-ast-card-1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@designcrowd/fe-shared-lib",
3
- "version": "1.0.9-ast-modal",
3
+ "version": "1.0.9-ast-card-1",
4
4
  "scripts": {
5
5
  "start": "npm run storybook",
6
6
  "build": "npm run build:css --production",
@@ -679,6 +679,9 @@ video {
679
679
  .theme-brandCrowd .tw-mb-1 {
680
680
  margin-bottom: 0.25rem;
681
681
  }
682
+ .theme-brandCrowd .tw-mb-10 {
683
+ margin-bottom: 2.5rem;
684
+ }
682
685
  .theme-brandCrowd .tw-mb-2 {
683
686
  margin-bottom: 0.5rem;
684
687
  }
@@ -1715,6 +1718,9 @@ video {
1715
1718
  .theme-brandCrowd .tw-text-center {
1716
1719
  text-align: center;
1717
1720
  }
1721
+ .theme-brandCrowd .tw-align-top {
1722
+ vertical-align: top;
1723
+ }
1718
1724
  .theme-brandCrowd .tw-align-middle {
1719
1725
  vertical-align: middle;
1720
1726
  }
@@ -2209,12 +2215,21 @@ video {
2209
2215
  .theme-brandCrowd .md\:tw-w-10 {
2210
2216
  width: 2.5rem;
2211
2217
  }
2218
+ .theme-brandCrowd .md\:tw-w-24 {
2219
+ width: 6rem;
2220
+ }
2212
2221
  .theme-brandCrowd .md\:tw-w-auto {
2213
2222
  width: auto;
2214
2223
  }
2215
2224
  .theme-brandCrowd .md\:tw-w-full {
2216
2225
  width: 100%;
2217
2226
  }
2227
+ .theme-brandCrowd .md\:tw-max-w-full {
2228
+ max-width: 100%;
2229
+ }
2230
+ .theme-brandCrowd .md\:tw-grow {
2231
+ flex-grow: 1;
2232
+ }
2218
2233
  .theme-brandCrowd .md\:tw-grid-cols-2 {
2219
2234
  grid-template-columns: repeat(2, minmax(0, 1fr));
2220
2235
  }
@@ -2236,6 +2251,9 @@ video {
2236
2251
  .theme-brandCrowd .md\:tw-justify-start {
2237
2252
  justify-content: flex-start;
2238
2253
  }
2254
+ .theme-brandCrowd .md\:tw-justify-end {
2255
+ justify-content: flex-end;
2256
+ }
2239
2257
  .theme-brandCrowd .md\:tw-justify-center {
2240
2258
  justify-content: center;
2241
2259
  }
@@ -2278,6 +2296,9 @@ video {
2278
2296
  padding-top: 0.5rem;
2279
2297
  padding-bottom: 0.5rem;
2280
2298
  }
2299
+ .theme-brandCrowd .md\:tw-pl-4 {
2300
+ padding-left: 1rem;
2301
+ }
2281
2302
  .theme-brandCrowd .md\:tw-pr-2 {
2282
2303
  padding-right: 0.5rem;
2283
2304
  }
@@ -679,6 +679,9 @@ video {
679
679
  .theme-brandPage .tw-mb-1 {
680
680
  margin-bottom: 0.25rem;
681
681
  }
682
+ .theme-brandPage .tw-mb-10 {
683
+ margin-bottom: 2.5rem;
684
+ }
682
685
  .theme-brandPage .tw-mb-2 {
683
686
  margin-bottom: 0.5rem;
684
687
  }
@@ -1563,6 +1566,9 @@ video {
1563
1566
  .theme-brandPage .tw-text-center {
1564
1567
  text-align: center;
1565
1568
  }
1569
+ .theme-brandPage .tw-align-top {
1570
+ vertical-align: top;
1571
+ }
1566
1572
  .theme-brandPage .tw-align-middle {
1567
1573
  vertical-align: middle;
1568
1574
  }
@@ -1897,12 +1903,21 @@ video {
1897
1903
  .theme-brandPage .md\:tw-w-10 {
1898
1904
  width: 2.5rem;
1899
1905
  }
1906
+ .theme-brandPage .md\:tw-w-24 {
1907
+ width: 6rem;
1908
+ }
1900
1909
  .theme-brandPage .md\:tw-w-auto {
1901
1910
  width: auto;
1902
1911
  }
1903
1912
  .theme-brandPage .md\:tw-w-full {
1904
1913
  width: 100%;
1905
1914
  }
1915
+ .theme-brandPage .md\:tw-max-w-full {
1916
+ max-width: 100%;
1917
+ }
1918
+ .theme-brandPage .md\:tw-grow {
1919
+ flex-grow: 1;
1920
+ }
1906
1921
  .theme-brandPage .md\:tw-grid-cols-2 {
1907
1922
  grid-template-columns: repeat(2, minmax(0, 1fr));
1908
1923
  }
@@ -1924,6 +1939,9 @@ video {
1924
1939
  .theme-brandPage .md\:tw-justify-start {
1925
1940
  justify-content: flex-start;
1926
1941
  }
1942
+ .theme-brandPage .md\:tw-justify-end {
1943
+ justify-content: flex-end;
1944
+ }
1927
1945
  .theme-brandPage .md\:tw-justify-center {
1928
1946
  justify-content: center;
1929
1947
  }
@@ -1966,6 +1984,9 @@ video {
1966
1984
  padding-top: 0.5rem;
1967
1985
  padding-bottom: 0.5rem;
1968
1986
  }
1987
+ .theme-brandPage .md\:tw-pl-4 {
1988
+ padding-left: 1rem;
1989
+ }
1969
1990
  .theme-brandPage .md\:tw-pr-2 {
1970
1991
  padding-right: 0.5rem;
1971
1992
  }
@@ -679,6 +679,9 @@ video {
679
679
  .theme-crazyDomains .tw-mb-1 {
680
680
  margin-bottom: 0.25rem;
681
681
  }
682
+ .theme-crazyDomains .tw-mb-10 {
683
+ margin-bottom: 2.5rem;
684
+ }
682
685
  .theme-crazyDomains .tw-mb-2 {
683
686
  margin-bottom: 0.5rem;
684
687
  }
@@ -1715,6 +1718,9 @@ video {
1715
1718
  .theme-crazyDomains .tw-text-center {
1716
1719
  text-align: center;
1717
1720
  }
1721
+ .theme-crazyDomains .tw-align-top {
1722
+ vertical-align: top;
1723
+ }
1718
1724
  .theme-crazyDomains .tw-align-middle {
1719
1725
  vertical-align: middle;
1720
1726
  }
@@ -2209,12 +2215,21 @@ video {
2209
2215
  .theme-crazyDomains .md\:tw-w-10 {
2210
2216
  width: 2.5rem;
2211
2217
  }
2218
+ .theme-crazyDomains .md\:tw-w-24 {
2219
+ width: 6rem;
2220
+ }
2212
2221
  .theme-crazyDomains .md\:tw-w-auto {
2213
2222
  width: auto;
2214
2223
  }
2215
2224
  .theme-crazyDomains .md\:tw-w-full {
2216
2225
  width: 100%;
2217
2226
  }
2227
+ .theme-crazyDomains .md\:tw-max-w-full {
2228
+ max-width: 100%;
2229
+ }
2230
+ .theme-crazyDomains .md\:tw-grow {
2231
+ flex-grow: 1;
2232
+ }
2218
2233
  .theme-crazyDomains .md\:tw-grid-cols-2 {
2219
2234
  grid-template-columns: repeat(2, minmax(0, 1fr));
2220
2235
  }
@@ -2236,6 +2251,9 @@ video {
2236
2251
  .theme-crazyDomains .md\:tw-justify-start {
2237
2252
  justify-content: flex-start;
2238
2253
  }
2254
+ .theme-crazyDomains .md\:tw-justify-end {
2255
+ justify-content: flex-end;
2256
+ }
2239
2257
  .theme-crazyDomains .md\:tw-justify-center {
2240
2258
  justify-content: center;
2241
2259
  }
@@ -2278,6 +2296,9 @@ video {
2278
2296
  padding-top: 0.5rem;
2279
2297
  padding-bottom: 0.5rem;
2280
2298
  }
2299
+ .theme-crazyDomains .md\:tw-pl-4 {
2300
+ padding-left: 1rem;
2301
+ }
2281
2302
  .theme-crazyDomains .md\:tw-pr-2 {
2282
2303
  padding-right: 0.5rem;
2283
2304
  }
@@ -679,6 +679,9 @@ video {
679
679
  .theme-designCom .tw-mb-1 {
680
680
  margin-bottom: 0.25rem;
681
681
  }
682
+ .theme-designCom .tw-mb-10 {
683
+ margin-bottom: 2.5rem;
684
+ }
682
685
  .theme-designCom .tw-mb-2 {
683
686
  margin-bottom: 0.5rem;
684
687
  }
@@ -1715,6 +1718,9 @@ video {
1715
1718
  .theme-designCom .tw-text-center {
1716
1719
  text-align: center;
1717
1720
  }
1721
+ .theme-designCom .tw-align-top {
1722
+ vertical-align: top;
1723
+ }
1718
1724
  .theme-designCom .tw-align-middle {
1719
1725
  vertical-align: middle;
1720
1726
  }
@@ -2209,12 +2215,21 @@ video {
2209
2215
  .theme-designCom .md\:tw-w-10 {
2210
2216
  width: 2.5rem;
2211
2217
  }
2218
+ .theme-designCom .md\:tw-w-24 {
2219
+ width: 6rem;
2220
+ }
2212
2221
  .theme-designCom .md\:tw-w-auto {
2213
2222
  width: auto;
2214
2223
  }
2215
2224
  .theme-designCom .md\:tw-w-full {
2216
2225
  width: 100%;
2217
2226
  }
2227
+ .theme-designCom .md\:tw-max-w-full {
2228
+ max-width: 100%;
2229
+ }
2230
+ .theme-designCom .md\:tw-grow {
2231
+ flex-grow: 1;
2232
+ }
2218
2233
  .theme-designCom .md\:tw-grid-cols-2 {
2219
2234
  grid-template-columns: repeat(2, minmax(0, 1fr));
2220
2235
  }
@@ -2236,6 +2251,9 @@ video {
2236
2251
  .theme-designCom .md\:tw-justify-start {
2237
2252
  justify-content: flex-start;
2238
2253
  }
2254
+ .theme-designCom .md\:tw-justify-end {
2255
+ justify-content: flex-end;
2256
+ }
2239
2257
  .theme-designCom .md\:tw-justify-center {
2240
2258
  justify-content: center;
2241
2259
  }
@@ -2278,6 +2296,9 @@ video {
2278
2296
  padding-top: 0.5rem;
2279
2297
  padding-bottom: 0.5rem;
2280
2298
  }
2299
+ .theme-designCom .md\:tw-pl-4 {
2300
+ padding-left: 1rem;
2301
+ }
2281
2302
  .theme-designCom .md\:tw-pr-2 {
2282
2303
  padding-right: 0.5rem;
2283
2304
  }
@@ -679,6 +679,9 @@ video {
679
679
  .theme-designCrowd .tw-mb-1 {
680
680
  margin-bottom: 0.25rem;
681
681
  }
682
+ .theme-designCrowd .tw-mb-10 {
683
+ margin-bottom: 2.5rem;
684
+ }
682
685
  .theme-designCrowd .tw-mb-2 {
683
686
  margin-bottom: 0.5rem;
684
687
  }
@@ -1715,6 +1718,9 @@ video {
1715
1718
  .theme-designCrowd .tw-text-center {
1716
1719
  text-align: center;
1717
1720
  }
1721
+ .theme-designCrowd .tw-align-top {
1722
+ vertical-align: top;
1723
+ }
1718
1724
  .theme-designCrowd .tw-align-middle {
1719
1725
  vertical-align: middle;
1720
1726
  }
@@ -2209,12 +2215,21 @@ video {
2209
2215
  .theme-designCrowd .md\:tw-w-10 {
2210
2216
  width: 2.5rem;
2211
2217
  }
2218
+ .theme-designCrowd .md\:tw-w-24 {
2219
+ width: 6rem;
2220
+ }
2212
2221
  .theme-designCrowd .md\:tw-w-auto {
2213
2222
  width: auto;
2214
2223
  }
2215
2224
  .theme-designCrowd .md\:tw-w-full {
2216
2225
  width: 100%;
2217
2226
  }
2227
+ .theme-designCrowd .md\:tw-max-w-full {
2228
+ max-width: 100%;
2229
+ }
2230
+ .theme-designCrowd .md\:tw-grow {
2231
+ flex-grow: 1;
2232
+ }
2218
2233
  .theme-designCrowd .md\:tw-grid-cols-2 {
2219
2234
  grid-template-columns: repeat(2, minmax(0, 1fr));
2220
2235
  }
@@ -2236,6 +2251,9 @@ video {
2236
2251
  .theme-designCrowd .md\:tw-justify-start {
2237
2252
  justify-content: flex-start;
2238
2253
  }
2254
+ .theme-designCrowd .md\:tw-justify-end {
2255
+ justify-content: flex-end;
2256
+ }
2239
2257
  .theme-designCrowd .md\:tw-justify-center {
2240
2258
  justify-content: center;
2241
2259
  }
@@ -2278,6 +2296,9 @@ video {
2278
2296
  padding-top: 0.5rem;
2279
2297
  padding-bottom: 0.5rem;
2280
2298
  }
2299
+ .theme-designCrowd .md\:tw-pl-4 {
2300
+ padding-left: 1rem;
2301
+ }
2281
2302
  .theme-designCrowd .md\:tw-pr-2 {
2282
2303
  padding-right: 0.5rem;
2283
2304
  }
@@ -0,0 +1,30 @@
1
+ import Card from './Card.vue';
2
+
3
+ export default {
4
+ title: 'Components/Card',
5
+ component: Card,
6
+ };
7
+
8
+ const data = {
9
+ components: {
10
+ Card,
11
+ },
12
+ };
13
+
14
+ export const Sample = () => {
15
+ return {
16
+ ...data,
17
+ template: `
18
+ <Card
19
+ :imgUrl="'https://brandcrowd-cdn.s3.amazonaws.com/public/assets/images/icons/publish/dcom-free-url.svg'"
20
+ title="Purchase Domain"
21
+ description="Find the perfect domain name for your brand"
22
+ is-design-com="true"
23
+ >
24
+ <template #slug>
25
+ test
26
+ </template>
27
+ </Card>
28
+ `,
29
+ };
30
+ };
@@ -0,0 +1,80 @@
1
+ <template>
2
+ <div class="tw-bg-white tw-border tw-border-grayscale-500 tw-rounded tw-p-4">
3
+ <div class="tw-flex tw-flex-col md:tw-flex-row tw-items-center">
4
+ <div class="tw-flex tw-flex-col tw-mx-auto tw-max-w-1/3 tw-text-center tw-align-top tw-px-2">
5
+ <img :src="imgUrl" alt="icon" class="md:tw-max-w-full" />
6
+ </div>
7
+ <div class="tw-flex tw-flex-col tw-px-2 tw-w-full">
8
+ <div class="tw-flex tw-flex-col md:tw-flex-row tw-text-center md:tw-text-left tw-items-center">
9
+ <div class="tw-flex tw-flex-col tw-w-full md:tw-grow tw-text-center md:tw-text-left">
10
+ <div class="tw-flex tw-flex-col tw-gap-2">
11
+ <p class="tw-font-bold tw-text-sm" :class="{ 'tw-text-grayscale-800': isDesignCom }">
12
+ {{ title }}
13
+ <span
14
+ v-if="showLabel"
15
+ class="tw-ml-2 tw-text-xs tw-text-primary-500 tw-border tw-border-primary-500 tw-rounded-full tw-px-2 tw-font-sans tw-uppercase"
16
+ >Recommended</span
17
+ >
18
+ </p>
19
+ <p class="tw-text-grayscale-600 tw-text-sm">
20
+ {{ description }}
21
+ </p>
22
+ <slot name="slug" />
23
+ </div>
24
+ </div>
25
+ <div v-if="hasSearchButton" class="tw-w-full md:tw-w-auto md:tw-justify-end md:tw-pl-4">
26
+ <button
27
+ class="tw-font-sans tw-font-bold tw-transition-colors tw-duration-300 tw-text-sm tw-py-2 tw-px-4 tw-w-full tw-rounded tw-cursor-pointer tw-w-full md:tw-w-24 tw-text-white tw-bg-primary-500"
28
+ @click="onClick"
29
+ :class="{
30
+ 'tw-uppercase': !isDesignCom,
31
+ }"
32
+ >
33
+ Search
34
+ </button>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ </div>
40
+ </template>
41
+ <script>
42
+ import Icon from '../Icon/Icon.vue';
43
+
44
+ export default {
45
+ components: {
46
+ Icon,
47
+ },
48
+ props: {
49
+ title: {
50
+ type: String,
51
+ default: '',
52
+ },
53
+ description: {
54
+ type: String,
55
+ default: '',
56
+ },
57
+ imgUrl: {
58
+ type: Boolean,
59
+ default: true,
60
+ },
61
+ isDesignCom: {
62
+ type: Boolean,
63
+ default: false,
64
+ },
65
+ hasSearchButton: {
66
+ type: Boolean,
67
+ default: true,
68
+ },
69
+ showLabel: {
70
+ type: Boolean,
71
+ default: false,
72
+ },
73
+ },
74
+ methods: {
75
+ onClick() {
76
+ this.$emit('on-show-domain-list-modal');
77
+ },
78
+ },
79
+ };
80
+ </script>
@@ -2,11 +2,10 @@
2
2
  <div
3
3
  v-show="visible"
4
4
  :aria-hidden="visible ? 'false' : 'true'"
5
- class="tw-bg-black tw-flex tw-items-center tw-justify-center tw-fixed tw-w-full tw-h-full tw-top-0 tw-left-0 tw-z-50"
5
+ class="tw-bg-black tw-bg-opacity-75 tw-flex tw-items-center tw-justify-center tw-fixed tw-w-full tw-h-full tw-top-0 tw-left-0 tw-z-50"
6
6
  :class="{
7
7
  'tw-px-4': fullScreenBreakpoint === undefined && !isImageMode,
8
8
  'sm:tw-px-4': fullScreenBreakpoint === 'sm' && !isImageMode,
9
- 'tw-bg-opacity-75': !darkOverlay,
10
9
  }"
11
10
  @mousedown.self="close"
12
11
  >
@@ -24,7 +23,6 @@
24
23
  'tw-rounded-md': fullScreenBreakpoint !== 'sm',
25
24
  'modal-bg': !simple && !isImageMode && showModalBackgroundImage,
26
25
  'modal-image': isImageMode,
27
- 'tw-bg-transparent': transparentModal,
28
26
  },
29
27
  classes,
30
28
  ]"
@@ -146,16 +144,6 @@ export default {
146
144
  required: false,
147
145
  default: false,
148
146
  },
149
- darkOverlay: {
150
- type: Boolean,
151
- required: false,
152
- default: false,
153
- },
154
- transparentModal: {
155
- type: Boolean,
156
- required: false,
157
- default: false,
158
- },
159
147
  },
160
148
  computed: {
161
149
  isImageMode() {
@@ -1,3 +1,4 @@
1
+ import Card from '../../../atoms/components/Card/Card.vue';
1
2
  import PublishBrandPageModal from './PublishBrandPageModal.vue';
2
3
  import { domains } from './__fixtures__/data';
3
4
 
@@ -156,6 +157,7 @@ export const Free = () => {
156
157
  return {
157
158
  components: {
158
159
  PublishBrandPageModal,
160
+ Card,
159
161
  },
160
162
  data() {
161
163
  return {
@@ -186,53 +188,14 @@ export const Free = () => {
186
188
  @on-hide-domain-modal="onHideDomainListModal"
187
189
  >
188
190
  <template #recommended>
189
- <div
190
- class="tw-bg-white tw-border tw-border-grayscale-500 tw-rounded tw-p-4"
191
- >
192
- <div class="tw-flex tw-flex-col md:tw-flex-row tw-items-center">
193
- <!-- Product image -->
194
- <div
195
- class="tw-flex tw-flex-col tw-mx-auto tw-max-w-1/3 tw-text-center tw-align-top tw-px-2"
196
- >
197
- <img
198
- src="https://brandcrowd-cdn.s3.amazonaws.com/public/assets/images/icons/addon/add-ons-domain-name.svg"
199
- alt="icon"
200
- class="md:tw-max-w-full"
201
- />
202
- </div>
203
- <div class="tw-flex tw-flex-col tw-px-2 tw-w-full">
204
- <div
205
- class="tw-flex tw-flex-col md:tw-flex-row tw-text-center md:tw-text-left tw-items-center"
206
- >
207
- <!-- Product title/description -->
208
- <div
209
- class="tw-flex tw-flex-col tw-w-full md:tw-grow tw-text-center md:tw-text-left"
210
- >
211
- <div>
212
- <h6
213
- class="tw-font-bold"
214
- :class="{ 'tw-text-grayscale-800': isDesignCom }"
215
- >
216
- Purchase a domain
217
- </h6>
218
- <p class="tw-text-grayscale-600">
219
- Find the perfect domain name for your brand for
220
- </p>
221
- </div>
222
- </div>
223
- <!-- CTA -->
224
- <div class="tw-w-full md:tw-w-auto md:tw-justify-end md:tw-pl-4">
225
- <button
226
- class="tw-font-sans tw-border-2 tw-border-solid tw-font-bold tw-text-success-500 tw-uppercase tw-transition-colors tw-duration-300 tw-text-sm tw-py-3 tw-px-4 tw-w-full tw-rounded tw-cursor-pointer tw-border-success-500 tw-bg-white hover:tw-bg-success-100 tw-text-success-500 tw-w-full md:tw-w-24"
227
- @click="onShowDomainListModal"
228
- >
229
- Search
230
- </button>
231
- </div>
232
- </div>
233
- </div>
234
- </div>
235
- </div>
191
+ <Card
192
+ :imgUrl="'https://brandcrowd-cdn.s3.amazonaws.com/public/assets/images/icons/addon/add-ons-domain-name.svg'"
193
+ title="Custom Domain"
194
+ description="Make it easy for customers to find you with a domain that matches your business"
195
+ :is-design-com="isDesignCom"
196
+ :has-search-button="true"
197
+ :show-label="true"
198
+ />
236
199
  </template>
237
200
  </PublishBrandPageModal>
238
201
  `,
@@ -24,7 +24,7 @@
24
24
  </div>
25
25
  </template>
26
26
  <template #default>
27
- <div v-if="isNotPublished || isSlugEditMode">
27
+ <div v-if="isNotPublished || isSlugEditMode" :class="{ 'tw-mb-8': !hasPurchasedDomains }">
28
28
  <div
29
29
  v-if="!isSlugEditMode"
30
30
  class="tw-flex tw-items-center tw-mr-2 tw-mb-1"
@@ -40,7 +40,7 @@
40
40
  :value="domainTypeValue === DOMAIN_TYPES.slug"
41
41
  />
42
42
  <label
43
- v-if="!isPublished"
43
+ v-if="!isPublished && hasPurchasedDomains"
44
44
  for="domain-type"
45
45
  class="tw-font-sans tw-w-full tw-text-grayscale-600 tw-text-sm tw-cursor-pointer tw-ml-2"
46
46
  >
@@ -48,19 +48,63 @@
48
48
  </label>
49
49
  </div>
50
50
  <div v-if="isNotPublished || isSlugEditMode" class="tw-mt-4">
51
- <TextInput
52
- v-model="internalSlug"
53
- element-classes="tw-mb-0 !tw-rounded-l-none tw-text-lg"
54
- :prefix-text="`${brandPageBaseUrl}/`"
55
- :error="!!slugValidationError"
56
- :disabled="isPublishing || domainTypeValue === DOMAIN_TYPES.purchased"
57
- placeholder="your-brand-name"
58
- data-test-brand-page-slug-input
59
- :attrs="{ 'data-test-set-url-text-field': '' }"
60
- @input="onSlugChanged"
61
- />
62
- <div v-if="slugErrorMessage" class="tw-mt-2 tw-text-sm tw-text-left tw-text-error-500 tw-font-normal">
63
- {{ slugErrorMessage }}
51
+ <Card
52
+ v-if="!hasPurchasedDomains"
53
+ :imgUrl="iconUrl"
54
+ title="Free Address"
55
+ description="Choose a free address to publish now. You can always edit the URL later"
56
+ :is-design-com="isDesignCom"
57
+ :has-search-button="false"
58
+ >
59
+ <template #slug>
60
+ <div class="tw-flex tw-flex-row tw-justify-between">
61
+ <div>
62
+ <TextInput
63
+ v-model="internalSlug"
64
+ element-classes="tw-mb-0 !tw-rounded-l-none tw-text-md tw-w-1/3"
65
+ :prefix-text="`${brandPageBaseUrl}/`"
66
+ :error="!!slugValidationError"
67
+ :disabled="isPublishing || domainTypeValue === DOMAIN_TYPES.purchased"
68
+ :placeholder="isBrandContact ? 'your-name' : 'your-business-name'"
69
+ data-test-brand-page-slug-input
70
+ :attrs="{ 'data-test-set-url-text-field': '' }"
71
+ @input="onSlugChanged"
72
+ />
73
+ <div
74
+ v-if="slugErrorMessage"
75
+ class="tw-mt-2 tw-text-sm tw-text-left tw-text-error-500 tw-font-normal"
76
+ >
77
+ {{ slugErrorMessage }}
78
+ </div>
79
+ </div>
80
+ <button
81
+ class="tw-ml-2 tw-font-sans tw-font-bold tw-transition-colors tw-duration-300 tw-text-sm tw-py-2 tw-px-4 tw-w-full tw-rounded tw-cursor-pointer tw-w-full md:tw-w-24 tw-text-white tw-bg-primary-500"
82
+ @click="onPublish"
83
+ data-test-brand-page-publish-button
84
+ :class="{
85
+ 'tw-uppercase': !isDesignCom
86
+ }"
87
+ >
88
+ Publish
89
+ </button>
90
+ </div>
91
+ </template>
92
+ </Card>
93
+ <div v-else>
94
+ <TextInput
95
+ v-model="internalSlug"
96
+ element-classes="tw-mb-0 !tw-rounded-l-none tw-text-lg"
97
+ :prefix-text="`${brandPageBaseUrl}/`"
98
+ :error="!!slugValidationError"
99
+ :disabled="isPublishing || domainTypeValue === DOMAIN_TYPES.purchased"
100
+ :placeholder="your - brand - name"
101
+ data-test-brand-page-slug-input
102
+ :attrs="{ 'data-test-set-url-text-field': '' }"
103
+ @input="onSlugChanged"
104
+ />
105
+ <div v-if="slugErrorMessage" class="tw-mt-2 tw-text-sm tw-text-left tw-text-error-500 tw-font-normal">
106
+ {{ slugErrorMessage }}
107
+ </div>
64
108
  </div>
65
109
  </div>
66
110
  <div v-if="isNotPublished || !isSlugEditMode" class="tw-mt-4">
@@ -114,6 +158,7 @@
114
158
  <slot v-if="!hasPurchasedDomains" name="recommended" />
115
159
  </div>
116
160
  <div
161
+ v-if="hasPurchasedDomains"
117
162
  class="tw-font-sans tw-text-center"
118
163
  :style="isMobile ? 'padding-left: 1.5rem; padding-right: 1.5rem;' : ''"
119
164
  >
@@ -197,6 +242,7 @@
197
242
  </template>
198
243
  <script>
199
244
  import Modal from '../../../../src/atoms/components/Modal/Modal.vue';
245
+ import Card from '../../../../src/atoms/components/Card/Card.vue';
200
246
  import TextInput from '../../../../src/atoms/components/TextInput/TextInput.vue';
201
247
  import Dropdown from '../../../../src/atoms/components/Dropdown/Dropdown.vue';
202
248
  import DropdownItem from '../../../../src/atoms/components/Dropdown/DropdownItem.vue';
@@ -226,6 +272,7 @@ export default {
226
272
  TextCopyField,
227
273
  SellDomainNameSearchWithResults,
228
274
  SellDomainNameListModal,
275
+ Card,
229
276
  },
230
277
  mixins: [mediaQueryMixin],
231
278
  props: {
@@ -342,6 +389,11 @@ export default {
342
389
  required: false,
343
390
  default: undefined,
344
391
  },
392
+ isBrandContact: {
393
+ type: Boolean,
394
+ required: true,
395
+ default: false,
396
+ },
345
397
  },
346
398
  emits: [
347
399
  'close-modal',
@@ -388,6 +440,11 @@ export default {
388
440
  isSlugEditMode() {
389
441
  return this.isPublished && this.shouldPublish && this.isBrandPageSlugEditMode;
390
442
  },
443
+ iconUrl() {
444
+ return this.isDesignCom
445
+ ? 'https://brandcrowd-cdn.s3.amazonaws.com/public/assets/images/icons/publish/dcom-free-url.svg'
446
+ : 'https://brandcrowd-cdn.s3.amazonaws.com/public/assets/images/icons/publish/bc-free-url.svg';
447
+ },
391
448
  },
392
449
  watch: {
393
450
  brandPageSlug(slug) {