@designcrowd/fe-shared-lib 1.4.7-jj-3 → 1.4.8-promocardv0

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 (164) hide show
  1. package/dist/css/tailwind-brandCrowd.css +80 -6
  2. package/dist/css/tailwind-brandPage.css +76 -6
  3. package/dist/css/tailwind-crazyDomains.css +80 -6
  4. package/dist/css/tailwind-designCom.css +80 -6
  5. package/dist/css/tailwind-designCrowd.css +80 -6
  6. package/index.js +1 -1
  7. package/package.json +2 -1
  8. package/public/css/tailwind-brandCrowd.css +65 -0
  9. package/public/css/tailwind-brandPage.css +65 -0
  10. package/public/css/tailwind-crazyDomains.css +65 -0
  11. package/public/css/tailwind-designCom.css +65 -0
  12. package/public/css/tailwind-designCrowd.css +65 -0
  13. package/src/atoms/components/Carousel/Carousel.fixtures.js +18 -0
  14. package/src/atoms/components/Carousel/carousel.stories.js +448 -179
  15. package/src/atoms/components/PromoCard/PromoCard.stories.ts +265 -0
  16. package/src/atoms/components/PromoCard/PromoCard.vue +89 -0
  17. package/src/experiences/components/PublishBrandPageModal/PublishBrandPageModal.vue +297 -96
  18. package/tailwind.config.js +7 -8
  19. package/.storybook-static/assets/Auth-CV5AmoX8.css +0 -1
  20. package/.storybook-static/assets/Auth.stories-CX3sjxh5.js +0 -490
  21. package/.storybook-static/assets/AuthCrazyDomains.stories-Didj_VFa.js +0 -73
  22. package/.storybook-static/assets/Button-5UzSGUF6.css +0 -1
  23. package/.storybook-static/assets/Button-DtVlr_q3.js +0 -1
  24. package/.storybook-static/assets/ButtonGroup-Dfr7bNL2.css +0 -1
  25. package/.storybook-static/assets/ButtonGroup.stories-4EQk-ktb.js +0 -503
  26. package/.storybook-static/assets/ButtonPrimary-Bu6bXb_c.css +0 -1
  27. package/.storybook-static/assets/ButtonPrimary-DG9wNod9.js +0 -1
  28. package/.storybook-static/assets/Buttons.stories-B_KpeCzt.js +0 -761
  29. package/.storybook-static/assets/ButtonsCrazyDomains.stories-oZtahAmR.js +0 -199
  30. package/.storybook-static/assets/Checkbox.mixin-DkHpdvGa.js +0 -1
  31. package/.storybook-static/assets/Checkbox.stories-C67RL0ut.js +0 -203
  32. package/.storybook-static/assets/Checktile.stories-DN2wfzd6.js +0 -88
  33. package/.storybook-static/assets/CollapsiblePanel.stories-BkzrqfVG.js +0 -39
  34. package/.storybook-static/assets/ColorPicker.stories-85BQwpyF.js +0 -73
  35. package/.storybook-static/assets/CopyToClipboardText.stories-Csh5nVRs.js +0 -32
  36. package/.storybook-static/assets/Dropdown.stories-NNlxNopk.js +0 -159
  37. package/.storybook-static/assets/DropdownItem-CDX_V6Mi.js +0 -1
  38. package/.storybook-static/assets/DropdownItem-CLNmWtKh.css +0 -1
  39. package/.storybook-static/assets/FormControl.mixin-_gXRExB7.js +0 -1
  40. package/.storybook-static/assets/HashRouteModal.stories-Dy1_nLTJ.js +0 -64
  41. package/.storybook-static/assets/HelloBar-z54fob0q.js +0 -1
  42. package/.storybook-static/assets/HelloBar.stories-ClJ9_KRK.js +0 -342
  43. package/.storybook-static/assets/Icon-8mZGP41G.js +0 -144
  44. package/.storybook-static/assets/Icon.stories-BcXMvpuh.js +0 -126
  45. package/.storybook-static/assets/Icon.stories-D6ECVMta.js +0 -751
  46. package/.storybook-static/assets/Loader-D61Ki9P1.js +0 -1
  47. package/.storybook-static/assets/LogoBusinessBrandColours-B1_8hw0H.js +0 -1
  48. package/.storybook-static/assets/LogoBusinessBrandColours-DEFhAyxR.css +0 -1
  49. package/.storybook-static/assets/LogoBusinessBrandColours.stories-CIWe9ndn.js +0 -36
  50. package/.storybook-static/assets/Masonry-C2MNiGg0.css +0 -1
  51. package/.storybook-static/assets/Masonry.stories-CDT8kZCv.js +0 -71
  52. package/.storybook-static/assets/Modal-BQrpXSGA.js +0 -1
  53. package/.storybook-static/assets/Modal-BvVMN71n.css +0 -1
  54. package/.storybook-static/assets/Modal.stories-BycF7YL6.js +0 -345
  55. package/.storybook-static/assets/Notice.stories-BufkrC1b.js +0 -222
  56. package/.storybook-static/assets/NumberStepper-Blffv09R.css +0 -1
  57. package/.storybook-static/assets/NumberStepper.stories-6_y_lEgC.js +0 -64
  58. package/.storybook-static/assets/PaymentConfigList-wI1eTv5x.css +0 -1
  59. package/.storybook-static/assets/PaymentConfigList.stories-BlzzKrzz.js +0 -126
  60. package/.storybook-static/assets/Picture-Cq76CaoK.js +0 -1
  61. package/.storybook-static/assets/Picture.stories-BDqRm9_g.js +0 -119
  62. package/.storybook-static/assets/Pill-BsMeJhV9.js +0 -1
  63. package/.storybook-static/assets/Pill.stories-DUvzbtnS.js +0 -18
  64. package/.storybook-static/assets/PillBar-os4mJV3M.css +0 -1
  65. package/.storybook-static/assets/PillBar.stories-BUMLXBij.js +0 -41
  66. package/.storybook-static/assets/Price-DKOwLeD0.js +0 -1
  67. package/.storybook-static/assets/Price.stories-DlqrNUWI.js +0 -221
  68. package/.storybook-static/assets/PublishBrandPageModal-CLU8-If3.css +0 -1
  69. package/.storybook-static/assets/PublishBrandPageModal.stories-Dqobvq-n.js +0 -273
  70. package/.storybook-static/assets/SearchBar.stories-_wPX3-Rl.js +0 -12
  71. package/.storybook-static/assets/Select-Dw-zvSUg.css +0 -1
  72. package/.storybook-static/assets/Select.stories-BWINGxdY.js +0 -108
  73. package/.storybook-static/assets/SellDomainNameList.fixtures-LC6fjr_b.js +0 -1
  74. package/.storybook-static/assets/SellDomainNameListModal-ByK_ak0A.js +0 -1
  75. package/.storybook-static/assets/SellDomainNameListModal-CdfyEX1a.css +0 -1
  76. package/.storybook-static/assets/SellDomainNameListModal.stories-DrL8w2AY.js +0 -71
  77. package/.storybook-static/assets/SellDomainNameListSearchResult-1WuAKfzI.css +0 -1
  78. package/.storybook-static/assets/SellDomainNameListSearchResult-By0IpIM_.js +0 -1
  79. package/.storybook-static/assets/SellDomainNameSearchWithResults-BttjI4PH.js +0 -1
  80. package/.storybook-static/assets/SellDomainNameSearchWithResults.stories-Dm1Q8Cza.js +0 -37
  81. package/.storybook-static/assets/SellDomainNameWidget.stories-CKoz3WnZ.js +0 -36
  82. package/.storybook-static/assets/SignIn-DNYeJu86.css +0 -1
  83. package/.storybook-static/assets/SignIn-Dt8OJr0J.js +0 -1
  84. package/.storybook-static/assets/Slider-Cog2FFdj.css +0 -1
  85. package/.storybook-static/assets/Slider.stories-08DN2SFB.js +0 -141
  86. package/.storybook-static/assets/StarRating-BtKh7pzm.css +0 -1
  87. package/.storybook-static/assets/StarRating.stories-BEIj9ufA.js +0 -45
  88. package/.storybook-static/assets/TabMenu.stories-D9f0pyZI.js +0 -47
  89. package/.storybook-static/assets/TextCopyField-B04vTGbG.js +0 -1
  90. package/.storybook-static/assets/TextCopyField.stories-KD0WUWzA.js +0 -47
  91. package/.storybook-static/assets/TextInput-JK1M0hv6.js +0 -1
  92. package/.storybook-static/assets/TextInput.stories-BO0eQqBY.js +0 -233
  93. package/.storybook-static/assets/Textarea.stories-Bcn4sCkV.js +0 -207
  94. package/.storybook-static/assets/Toggle.stories-CuTFLoNh.js +0 -161
  95. package/.storybook-static/assets/Tooltip-DcSbUh5f.js +0 -1
  96. package/.storybook-static/assets/Tooltip-DyXIgFQH.css +0 -1
  97. package/.storybook-static/assets/Tooltip.stories-B0I_PBGG.js +0 -953
  98. package/.storybook-static/assets/UploadYourLogoApplication-EyTEQx-x.css +0 -9
  99. package/.storybook-static/assets/UploadYourLogoApplication.stories-Dixp1ynI.js +0 -194
  100. package/.storybook-static/assets/UploadYourLogoDropzone-DQqACf-e.css +0 -1
  101. package/.storybook-static/assets/UploadYourLogoDropzone-DouZtNvi.js +0 -24
  102. package/.storybook-static/assets/UploadYourLogoDropzone.stories-BHYeu4gz.js +0 -55
  103. package/.storybook-static/assets/UploadedLogoSearchResultCard.stories-D1KR63O4.js +0 -79
  104. package/.storybook-static/assets/_commonjsHelpers-D6-XlEtG.js +0 -1
  105. package/.storybook-static/assets/_plugin-vue_export-helper-DlAUqK2U.js +0 -1
  106. package/.storybook-static/assets/api-lSJGRrF2.js +0 -1
  107. package/.storybook-static/assets/axe-nGVJxRof.js +0 -30
  108. package/.storybook-static/assets/brand-crowd-api.client-DiPM1Wo-.js +0 -1
  109. package/.storybook-static/assets/bundled-translations-BZ57czTo.js +0 -1
  110. package/.storybook-static/assets/bundled-translations.de-DE-DXggTXB2.js +0 -1
  111. package/.storybook-static/assets/bundled-translations.es-ES-DtMmvicd.js +0 -1
  112. package/.storybook-static/assets/bundled-translations.fr-FR-BrQqbieG.js +0 -1
  113. package/.storybook-static/assets/bundled-translations.pt-PT-CpiWEAtr.js +0 -1
  114. package/.storybook-static/assets/carousel-CMMZ5MZ-.css +0 -1
  115. package/.storybook-static/assets/carousel.stories-o3eu2Qyc.js +0 -374
  116. package/.storybook-static/assets/event-constants-CMO9VQVu.js +0 -1
  117. package/.storybook-static/assets/iframe-C86bI_2U.js +0 -1126
  118. package/.storybook-static/assets/index-Bw-gCGc_.js +0 -6
  119. package/.storybook-static/assets/index-DhkYCT1V.js +0 -29
  120. package/.storybook-static/assets/matchers-7Z3WT2CE-T3xScrR7.js +0 -14
  121. package/.storybook-static/assets/tracking-ATsLLehC.js +0 -1
  122. package/.storybook-static/css/tailwind-brandCrowd.css +0 -2404
  123. package/.storybook-static/css/tailwind-brandPage.css +0 -2088
  124. package/.storybook-static/css/tailwind-crazyDomains.css +0 -2404
  125. package/.storybook-static/css/tailwind-designCom.css +0 -2404
  126. package/.storybook-static/css/tailwind-designCrowd.css +0 -2404
  127. package/.storybook-static/favicon.svg +0 -1
  128. package/.storybook-static/iframe.html +0 -694
  129. package/.storybook-static/index.html +0 -156
  130. package/.storybook-static/index.json +0 -1
  131. package/.storybook-static/nunito-sans-bold-italic.woff2 +0 -0
  132. package/.storybook-static/nunito-sans-bold.woff2 +0 -0
  133. package/.storybook-static/nunito-sans-italic.woff2 +0 -0
  134. package/.storybook-static/nunito-sans-regular.woff2 +0 -0
  135. package/.storybook-static/project.json +0 -1
  136. package/.storybook-static/sb-addons/a11y-1/manager-bundle.js +0 -5
  137. package/.storybook-static/sb-addons/links-2/manager-bundle.js +0 -3
  138. package/.storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +0 -188
  139. package/.storybook-static/sb-addons/themes-3/manager-bundle.js +0 -3
  140. package/.storybook-static/sb-common-assets/favicon.svg +0 -1
  141. package/.storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  142. package/.storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  143. package/.storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  144. package/.storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  145. package/.storybook-static/sb-manager/globals-module-info.js +0 -797
  146. package/.storybook-static/sb-manager/globals-runtime.js +0 -72062
  147. package/.storybook-static/sb-manager/globals.js +0 -34
  148. package/.storybook-static/sb-manager/runtime.js +0 -13002
  149. package/src/atoms/components/SparkleIcon/SparkleIcon.stories.js +0 -182
  150. package/src/atoms/components/SparkleIcon/SparkleIcon.vue +0 -105
  151. package/src/atoms/components/SparkleIcon/assets/animations/state-01.svg +0 -5
  152. package/src/atoms/components/SparkleIcon/assets/animations/state-02.svg +0 -5
  153. package/src/atoms/components/SparkleIcon/assets/animations/state-03.svg +0 -5
  154. package/src/atoms/components/SparkleIcon/assets/animations/state-04.svg +0 -5
  155. package/src/atoms/components/SparkleIcon/assets/animations/state-05.svg +0 -5
  156. package/src/atoms/components/SparkleIcon/assets/animations/state-06.svg +0 -5
  157. package/src/atoms/components/SparkleIcon/assets/animations/state-07.svg +0 -5
  158. package/src/atoms/components/SparkleIcon/assets/animations/state-08.svg +0 -5
  159. package/src/atoms/components/SparkleIcon/assets/sparkle.svg +0 -3
  160. package/src/atoms/components/SparkleIcon/index.ts +0 -3
  161. package/src/experiences/components/PublishBrandPageModal/views/PublishWhenHasDomainsView.vue +0 -271
  162. package/src/experiences/components/PublishBrandPageModal/views/PublishWhenNoDomainsView.vue +0 -168
  163. package/src/experiences/components/PublishBrandPageModal/views/PublishedView.vue +0 -149
  164. package/src/experiences/components/PublishBrandPageModal/views/SetUrlView.vue +0 -155
@@ -0,0 +1,265 @@
1
+ import PromoCard from './PromoCard.vue';
2
+
3
+ export default {
4
+ title: 'Components/PromoCard',
5
+ component: PromoCard,
6
+ };
7
+
8
+ export const Standard = {
9
+ render: (args) => {
10
+ return {
11
+ components: {
12
+ PromoCard,
13
+ },
14
+ setup() {
15
+ return { args };
16
+ },
17
+ template: `
18
+ <PromoCard
19
+ v-bind="args"
20
+ @button-clicked="handleButtonClick"
21
+ />
22
+ `,
23
+ methods: {
24
+ handleButtonClick() {
25
+ console.log('Button clicked!');
26
+ },
27
+ },
28
+ };
29
+ },
30
+ args: {
31
+ title: 'Special Offer',
32
+ description: 'Get 20% off your next purchase. Limited time offer!',
33
+ imageUrl: 'https://bcassetcdn.com/assets/images/promo/brandpage-design-support.png',
34
+ altText: 'Promotional image',
35
+ buttonLabel: 'Learn More',
36
+ horizontalLayout: false,
37
+ scaleImageDown: false,
38
+ imageWidthFull: false,
39
+ shouldShowImageOnTop: false,
40
+ },
41
+ };
42
+
43
+ export const HorizontalLayout = {
44
+ render: (args) => {
45
+ return {
46
+ components: {
47
+ PromoCard,
48
+ },
49
+ setup() {
50
+ return { args };
51
+ },
52
+ template: `
53
+ <PromoCard
54
+ v-bind="args"
55
+ @button-clicked="handleButtonClick"
56
+ />
57
+ `,
58
+ methods: {
59
+ handleButtonClick() {
60
+ console.log('Button clicked!');
61
+ },
62
+ },
63
+ };
64
+ },
65
+ args: {
66
+ title: 'Premium Package',
67
+ description: 'Upgrade to premium and unlock exclusive features today.',
68
+ imageUrl: 'https://bcassetcdn.com/assets/images/promo/brandpage-design-support.png',
69
+ altText: 'Premium package image',
70
+ buttonLabel: 'Upgrade Now',
71
+ horizontalLayout: true,
72
+ scaleImageDown: false,
73
+ imageWidthFull: false,
74
+ shouldShowImageOnTop: false,
75
+ },
76
+ };
77
+
78
+ export const ImageOnTop = {
79
+ render: (args) => {
80
+ return {
81
+ components: {
82
+ PromoCard,
83
+ },
84
+ setup() {
85
+ return { args };
86
+ },
87
+ template: `
88
+ <PromoCard
89
+ v-bind="args"
90
+ @button-clicked="handleButtonClick"
91
+ />
92
+ `,
93
+ methods: {
94
+ handleButtonClick() {
95
+ console.log('Button clicked!');
96
+ },
97
+ },
98
+ };
99
+ },
100
+ args: {
101
+ title: 'Mobile Friendly',
102
+ description: 'This layout works great on mobile devices with the image displayed on top.',
103
+ imageUrl: 'https://bcassetcdn.com/assets/images/promo/brandpage-design-support.png',
104
+ altText: 'Mobile friendly layout',
105
+ buttonLabel: 'Try It',
106
+ horizontalLayout: false,
107
+ scaleImageDown: false,
108
+ imageWidthFull: false,
109
+ shouldShowImageOnTop: true,
110
+ },
111
+ };
112
+
113
+ export const ScaledDownImage = {
114
+ render: (args) => {
115
+ return {
116
+ components: {
117
+ PromoCard,
118
+ },
119
+ setup() {
120
+ return { args };
121
+ },
122
+ template: `
123
+ <PromoCard
124
+ v-bind="args"
125
+ @button-clicked="handleButtonClick"
126
+ />
127
+ `,
128
+ methods: {
129
+ handleButtonClick() {
130
+ console.log('Button clicked!');
131
+ },
132
+ },
133
+ };
134
+ },
135
+ args: {
136
+ title: 'Logo Showcase',
137
+ description: 'Display your logo with proper spacing and scaling.',
138
+ imageUrl: 'https://via.placeholder.com/120x120',
139
+ altText: 'Logo showcase',
140
+ buttonLabel: 'View More',
141
+ horizontalLayout: false,
142
+ scaleImageDown: true,
143
+ imageWidthFull: false,
144
+ shouldShowImageOnTop: false,
145
+ },
146
+ };
147
+
148
+ export const FullWidthImage = {
149
+ render: (args) => {
150
+ return {
151
+ components: {
152
+ PromoCard,
153
+ },
154
+ setup() {
155
+ return { args };
156
+ },
157
+ template: `
158
+ <PromoCard
159
+ v-bind="args"
160
+ @button-clicked="handleButtonClick"
161
+ />
162
+ `,
163
+ methods: {
164
+ handleButtonClick() {
165
+ console.log('Button clicked!');
166
+ },
167
+ },
168
+ };
169
+ },
170
+ args: {
171
+ title: 'Full Width Banner',
172
+ description: 'Images that stretch to fill the available space.',
173
+ imageUrl: 'https://bcassetcdn.com/assets/images/promo/brandpage-design-support.png',
174
+ altText: 'Full width banner',
175
+ buttonLabel: 'Explore',
176
+ horizontalLayout: false,
177
+ scaleImageDown: false,
178
+ imageWidthFull: true,
179
+ shouldShowImageOnTop: false,
180
+ },
181
+ };
182
+
183
+ export const AllOptions = {
184
+ render: (args) => {
185
+ return {
186
+ components: {
187
+ PromoCard,
188
+ },
189
+ setup() {
190
+ return { args };
191
+ },
192
+ template: `
193
+ <div class="tw-space-y-4">
194
+ <div>
195
+ <h3 class="tw-mb-2 tw-font-bold">Standard Layout</h3>
196
+ <PromoCard
197
+ title="Standard Promo"
198
+ description="This is the default vertical layout with image on the left."
199
+ imageUrl="https://bcassetcdn.com/assets/images/promo/brandpage-design-support.png"
200
+ altText="Standard layout"
201
+ buttonLabel="Click Me"
202
+ @button-clicked="handleButtonClick"
203
+ />
204
+ </div>
205
+
206
+ <div>
207
+ <h3 class="tw-mb-2 tw-font-bold">Horizontal Layout</h3>
208
+ <PromoCard
209
+ title="Horizontal Promo"
210
+ description="This layout is better for desktop with content side by side."
211
+ imageUrl="https://bcassetcdn.com/assets/images/promo/brandpage-design-support.png"
212
+ altText="Horizontal layout"
213
+ buttonLabel="Click Me"
214
+ :horizontal-layout="true"
215
+ @button-clicked="handleButtonClick"
216
+ />
217
+ </div>
218
+
219
+ <div>
220
+ <h3 class="tw-mb-2 tw-font-bold">Image On Top</h3>
221
+ <PromoCard
222
+ title="Mobile Optimized"
223
+ description="Perfect for mobile views with image stacked on top."
224
+ imageUrl="https://bcassetcdn.com/assets/images/promo/brandpage-design-support.png"
225
+ altText="Image on top"
226
+ buttonLabel="Click Me"
227
+ :should-show-image-on-top="true"
228
+ @button-clicked="handleButtonClick"
229
+ />
230
+ </div>
231
+ </div>
232
+ `,
233
+ methods: {
234
+ handleButtonClick() {
235
+ console.log('Button clicked!');
236
+ },
237
+ },
238
+ };
239
+ },
240
+ args: {},
241
+ };
242
+
243
+ Standard.story = {
244
+ name: 'PromoCard - Standard',
245
+ };
246
+
247
+ HorizontalLayout.story = {
248
+ name: 'PromoCard - Horizontal Layout',
249
+ };
250
+
251
+ ImageOnTop.story = {
252
+ name: 'PromoCard - Image On Top',
253
+ };
254
+
255
+ ScaledDownImage.story = {
256
+ name: 'PromoCard - Scaled Down Image',
257
+ };
258
+
259
+ FullWidthImage.story = {
260
+ name: 'PromoCard - Full Width Image',
261
+ };
262
+
263
+ AllOptions.story = {
264
+ name: 'PromoCard - All Variants',
265
+ };
@@ -0,0 +1,89 @@
1
+ <template>
2
+ <div class="tw-flex" :class="shouldShowImageOnTop ? 'tw-flex-col' : 'tw-flex-row'">
3
+ <div
4
+ class="tw-flex tw-justify-center tw-items-center tw-bg-grayscale-400 tw-w-60 tw-p-1 dcom-rounded-tl dcom-rounded-bl"
5
+ :class="{
6
+ 'tw-w-full tw-px-8 md:tw-px-12 lg:tw-px-20 tw-py-4': shouldShowImageOnTop,
7
+ 'tw-px-4': !shouldShowImageOnTop,
8
+ }"
9
+ >
10
+ <img :src="imageUrl" :alt="altText" />
11
+ </div>
12
+ <div
13
+ class="tw-flex tw-bg-white tw-w-full tw-p-4 tw-grow dcom-rounded-tr dcom-rounded-br tw-flex-col tw-justify-between"
14
+ :class="{
15
+ 'lg:tw-flex-row lg:tw-items-center lg:tw-justify-normal': horizontalLayout,
16
+ }"
17
+ >
18
+ <div class="tw-text-left tw-overflow-hidden tw-text-ellipsis" :class="lineClampStyle">
19
+ <div class="tw-font-bold tw-text-black tw-mb-0.5">
20
+ {{ title }}
21
+ </div>
22
+ <p>
23
+ {{ description }}
24
+ </p>
25
+ </div>
26
+ <Button
27
+ variant="primary"
28
+ size="small"
29
+ :full-width="!horizontalLayout"
30
+ class="tw-text-left tw-mt-4"
31
+ :class="horizontalLayout ? 'tw-w-full tw-mr-2 md:tw-mt-0 md:tw-w-auto' : ''"
32
+ :label="buttonLabel"
33
+ @on-click="buttonClicked"
34
+ />
35
+ </div>
36
+ </div>
37
+ </template>
38
+ <script>
39
+ import Button from '../Button/Button.vue';
40
+
41
+ export default {
42
+ components: { Button },
43
+ props: {
44
+ title: {
45
+ type: String,
46
+ required: true,
47
+ },
48
+ description: {
49
+ type: String,
50
+ required: true,
51
+ },
52
+ imageUrl: { type: String, required: true },
53
+ altText: { type: String, default: '' },
54
+ buttonLabel: {
55
+ type: String,
56
+ required: true,
57
+ },
58
+ horizontalLayout: {
59
+ type: Boolean,
60
+ default: false,
61
+ },
62
+ shouldShowImageOnTop: {
63
+ type: Boolean,
64
+ default: false,
65
+ },
66
+ textLineClamp: {
67
+ type: Number,
68
+ default: 0, // 0 is infinite
69
+ },
70
+ },
71
+ computed: {
72
+ shouldUseHorizontalLayout() {
73
+ // when in desktop view, display horizontal mode
74
+ return this.horizontalLayout;
75
+ },
76
+ lineClampStyle() {
77
+ if (this.textLineClamp > 0) {
78
+ return `tw-line-clamp-${this.textLineClamp}`;
79
+ }
80
+ return 'tw-line-clamp-none';
81
+ },
82
+ },
83
+ methods: {
84
+ buttonClicked() {
85
+ this.$emit('button-clicked');
86
+ },
87
+ },
88
+ };
89
+ </script>