@designcrowd/library.brand-page 5.18.6 → 5.18.7-ast-padding-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.
Files changed (218) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DlYq1LAT.js → CreatedOnBrandCrowd-de-de-Cn8zNuGM.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-BssRIQqn.js → CreatedOnBrandCrowd-en-us-CP8xAFc-.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-BGF9pptH.js → CreatedOnBrandCrowd-es-es-Ds8NijwP.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-Caupqu2Z.js → CreatedOnBrandCrowd-fr-ca-BiVV_7lj.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-Caupqu2Z.js → CreatedOnBrandCrowd-fr-fr-BiVV_7lj.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-s9q4uJ4u.js → CreatedOnBrandCrowd-pt-br-CjjrYojo.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-s9q4uJ4u.js → CreatedOnBrandCrowd-pt-pt-CjjrYojo.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-UnYnZbA7.js → CreatedOnDcom-de-de-ChR5jvlP.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-rDv6H12L.js → CreatedOnDcom-en-us-C4rO1BMA.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-DKPLaT6o.js → CreatedOnDcom-es-es-DxGMS6JK.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-DAv34bG7.js → CreatedOnDcom-fr-ca-n31u4t7u.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-DsOHnS8q.js → CreatedOnDcom-fr-fr-gwdsX7YV.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-DpjDBCLj.js → CreatedOnDcom-pt-br-iZjFp--s.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-rFG0unf1.js → CreatedOnDcom-pt-pt-B3Z3-RLC.js} +1 -1
  15. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +4 -0
  16. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +8 -4
  17. package/lib/src/brand-page/components/image-gallery/ImageGallery.mixin.d.ts +4 -0
  18. package/lib/src/brand-page/components/image-gallery/ImageGallery.mixin.js +4 -0
  19. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.d.ts +4 -0
  20. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +4 -1
  21. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.d.ts +4 -0
  22. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.js +4 -0
  23. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.d.ts +4 -0
  24. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.js +4 -1
  25. package/lib/src/brand-page/components/video/Video.mixin.d.ts +4 -0
  26. package/lib/src/brand-page/components/video/Video.mixin.js +4 -0
  27. package/lib/src/brand-page/constants/misc.constants.d.ts +26 -0
  28. package/lib/src/brand-page/constants/misc.constants.js +42 -0
  29. package/lib/src/brand-page/models/content.model.d.ts +2 -0
  30. package/lib/src/brand-page/utils/content-padding.util.d.ts +13 -0
  31. package/lib/src/brand-page/utils/content-padding.util.js +10 -0
  32. package/lib/src/brand-page/utils/index.d.ts +1 -0
  33. package/lib/src/brand-page/utils/index.js +1 -0
  34. package/lib/src/brand-page/utils/migration/migration-17.d.ts +2 -0
  35. package/lib/src/brand-page/utils/migration/migration-17.js +48 -0
  36. package/lib/src/brand-page/utils/migration.util.js +10 -0
  37. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +7 -2
  38. package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.d.ts +2 -0
  39. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +19 -2
  40. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +8 -0
  41. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +7 -2
  42. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.js +1 -0
  43. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +104 -2
  44. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.js +5 -0
  45. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +7 -2
  46. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +3 -0
  47. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.js +11 -0
  48. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +7 -2
  49. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +7 -2
  50. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +7 -2
  51. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +7 -2
  52. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +9 -0
  53. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +21 -1
  54. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +20 -0
  55. package/lib/src/brand-page-maker/composables/useEventTracker.js +17 -0
  56. package/lib/src/brand-page-maker/composables/useUndoRedoFlag.d.ts +17 -0
  57. package/lib/src/brand-page-maker/composables/useUndoRedoFlag.js +25 -0
  58. package/lib/src/brand-page-maker/constants/config-settings-constant.js +38 -0
  59. package/lib/src/brand-page-maker/convertors/about-display-style.convertor.js +9 -1
  60. package/lib/src/brand-page-maker/convertors/banner-align-display-style.convertor.js +7 -1
  61. package/lib/src/brand-page-maker/convertors/contact-layout-style.convertor.js +6 -1
  62. package/lib/src/brand-page-maker/models/content-settings.js +36 -2
  63. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +12 -0
  64. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +41 -2
  65. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +307 -5
  66. package/lib/src/brand-page-maker/stores/history/history-store.d.ts +86 -0
  67. package/lib/src/brand-page-maker/stores/history/history-store.js +501 -0
  68. package/lib/src/brand-page-maker/stores/logo-store/logo-store.d.ts +1 -0
  69. package/lib/src/brand-page-maker/stores/user/user-store.js +1 -0
  70. package/lib/src/bundled-translations-BUyt4scr.js +175 -0
  71. package/lib/src/bundled-translations.de-DE-DEw_OVai.js +175 -0
  72. package/lib/src/bundled-translations.es-ES-CFKWmkgY.js +175 -0
  73. package/lib/src/bundled-translations.fr-CA-DCl5LJS4.js +175 -0
  74. package/lib/src/bundled-translations.fr-FR-B5BjgllA.js +175 -0
  75. package/lib/src/bundled-translations.pt-BR-5PWpMPuM.js +175 -0
  76. package/lib/src/bundled-translations.pt-PT-B9_wN0HR.js +175 -0
  77. package/lib/src/bundles/bundled-translations.de-DE.json +5 -1
  78. package/lib/src/bundles/bundled-translations.es-ES.json +5 -1
  79. package/lib/src/bundles/bundled-translations.fr-CA.json +5 -1
  80. package/lib/src/bundles/bundled-translations.fr-FR.json +5 -1
  81. package/lib/src/bundles/bundled-translations.json +5 -1
  82. package/lib/src/bundles/bundled-translations.pt-BR.json +5 -1
  83. package/lib/src/bundles/bundled-translations.pt-PT.json +5 -1
  84. package/lib/src/constants/ui.d.ts +1 -0
  85. package/lib/src/css/library.brand-page-brandCrowd.min.css +128 -131
  86. package/lib/src/css/library.brand-page-brandPage.min.css +128 -132
  87. package/lib/src/css/library.brand-page-designCom.min.css +128 -131
  88. package/lib/src/css/library.brand-page-preview.min.css +128 -131
  89. package/lib/src/index.mjs +1 -1
  90. package/lib/src/{lib-ngdDRkSL.js → lib-CIj_C38s.js} +36378 -35591
  91. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +104 -2
  92. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +5 -0
  93. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.stories.js +1 -0
  94. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +37 -2
  95. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +28 -0
  96. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +19 -2
  97. package/lib/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.d.ts +3 -0
  98. package/lib/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.js +19 -2
  99. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +12 -0
  100. package/lib/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.js +18 -8
  101. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +67 -0
  102. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.js +6 -0
  103. package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.js +9 -0
  104. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +12 -0
  105. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +19 -0
  106. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.js +11 -0
  107. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +10 -2
  108. package/lib/src/shared/logo-settings/store/editable-logo-store.d.ts +5 -1
  109. package/lib/src/shared/logo-settings/store/editable-logo-store.js +31 -0
  110. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +40 -2
  111. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +24 -2
  112. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +23 -2
  113. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +16 -0
  114. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +23 -2
  115. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +16 -0
  116. package/lib/src/utils/minify-brand-page-metadata.js +11 -1
  117. package/package.json +1 -1
  118. package/src/brand-page/components/about-section/AboutSection.vue +10 -4
  119. package/src/brand-page/components/banner-section/BannerSection.vue +11 -4
  120. package/src/brand-page/components/booking-section/BookingSection.vue +11 -3
  121. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +12 -6
  122. package/src/brand-page/components/contact-form/ContactForm.vue +105 -104
  123. package/src/brand-page/components/image-gallery/ImageGallery.mixin.ts +5 -0
  124. package/src/brand-page/components/image-gallery/ImageGallery.vue +1 -1
  125. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +8 -1
  126. package/src/brand-page/components/mailing-list/MailingList.vue +1 -1
  127. package/src/brand-page/components/map/Map.vue +5 -1
  128. package/src/brand-page/components/payment/request-payment/RequestPayment.mixin.ts +5 -0
  129. package/src/brand-page/components/payment/request-payment/RequestPayment.vue +1 -0
  130. package/src/brand-page/components/payment/support-me/SupportMe.mixin.ts +8 -1
  131. package/src/brand-page/components/payment/support-me/SupportMe.vue +1 -0
  132. package/src/brand-page/components/shop/Shop.vue +7 -2
  133. package/src/brand-page/components/social-links/SocialLinks.vue +7 -3
  134. package/src/brand-page/components/text/Text.vue +12 -5
  135. package/src/brand-page/components/text-media-section/TextMediaSection.vue +11 -3
  136. package/src/brand-page/components/video/Video.mixin.ts +5 -0
  137. package/src/brand-page/components/video/Video.vue +1 -1
  138. package/src/brand-page/constants/misc.constants.ts +48 -0
  139. package/src/brand-page/models/content.model.ts +2 -0
  140. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +9 -3
  141. package/src/brand-page/utils/content-padding.util.test.ts +29 -0
  142. package/src/brand-page/utils/content-padding.util.ts +13 -0
  143. package/src/brand-page/utils/index.ts +1 -0
  144. package/src/brand-page/utils/migration/migration-17.ts +65 -0
  145. package/src/brand-page/utils/migration.util.test.ts +195 -0
  146. package/src/brand-page/utils/migration.util.ts +11 -0
  147. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +9 -0
  148. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +2 -3
  149. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +1 -0
  150. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.ts +5 -0
  151. package/src/brand-page-maker/components/cookie-collection/CookieSettings.vue +18 -17
  152. package/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.ts +13 -0
  153. package/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.vue +26 -3
  154. package/src/brand-page-maker/components/quick-link-bar/RedoButton.vue +66 -0
  155. package/src/brand-page-maker/components/quick-link-bar/UndoButton.vue +66 -0
  156. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.de-DE.json +6 -4
  157. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.es-ES.json +6 -4
  158. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.fr-CA.json +6 -4
  159. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.fr-FR.json +6 -4
  160. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.json +3 -1
  161. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.pt-BR.json +6 -4
  162. package/src/brand-page-maker/components/quick-link-bar/i18n/quick-link-bar.pt-PT.json +6 -4
  163. package/src/brand-page-maker/components/quick-link-bar/undo-redo-buttons.test.ts +116 -0
  164. package/src/brand-page-maker/components/save-contact/SaveContact.vue +12 -19
  165. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +10 -0
  166. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +28 -1
  167. package/src/brand-page-maker/composables/useEventTracker.ts +29 -0
  168. package/src/brand-page-maker/composables/useUndoRedoFlag.ts +30 -0
  169. package/src/brand-page-maker/constants/config-settings-constant.ts +44 -0
  170. package/src/brand-page-maker/convertors/about-display-style.convertor.ts +10 -0
  171. package/src/brand-page-maker/convertors/banner-align-display-style.convertor.ts +8 -0
  172. package/src/brand-page-maker/convertors/contact-layout-style.convertor.test.ts +50 -0
  173. package/src/brand-page-maker/convertors/contact-layout-style.convertor.ts +8 -0
  174. package/src/brand-page-maker/models/content-settings.ts +38 -2
  175. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +334 -0
  176. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +371 -4
  177. package/src/brand-page-maker/stores/history/history-store.test.ts +1120 -0
  178. package/src/brand-page-maker/stores/history/history-store.ts +666 -0
  179. package/src/brand-page-maker/stores/logo-store/logo-store.ts +5 -0
  180. package/src/brand-page-maker/stores/user/user-store.ts +1 -0
  181. package/src/bundles/bundled-translations.de-DE.json +5 -1
  182. package/src/bundles/bundled-translations.es-ES.json +5 -1
  183. package/src/bundles/bundled-translations.fr-CA.json +5 -1
  184. package/src/bundles/bundled-translations.fr-FR.json +5 -1
  185. package/src/bundles/bundled-translations.json +5 -1
  186. package/src/bundles/bundled-translations.pt-BR.json +5 -1
  187. package/src/bundles/bundled-translations.pt-PT.json +5 -1
  188. package/src/constants/ui.ts +1 -0
  189. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +5 -0
  190. package/src/shared/content-settings/components/content-settings/ContentSettings.stories.ts +1 -0
  191. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +2 -0
  192. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +2 -0
  193. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +2 -0
  194. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +2 -0
  195. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +2 -0
  196. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +2 -0
  197. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +2 -0
  198. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.vue +1 -1
  199. package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.mixin.ts +19 -2
  200. package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.vue +1 -1
  201. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.vue +2 -2
  202. package/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.ts +26 -10
  203. package/src/shared/content-settings/components/logo-selection-field/LogoSelection.vue +63 -48
  204. package/src/shared/content-settings/components/page-dropdown-field/PageDropdownField.vue +4 -0
  205. package/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.ts +7 -0
  206. package/src/shared/content-settings/components/slider-field/SliderField.mixin.ts +9 -0
  207. package/src/shared/content-settings/components/text-field/TextField.vue +1 -0
  208. package/src/shared/content-settings/components/text-image-field/TextImageField.vue +33 -4
  209. package/src/shared/logo-settings/components/EditLogoSettings.mixin.ts +11 -0
  210. package/src/shared/logo-settings/store/editable-logo-store.ts +42 -1
  211. package/src/utils/minify-brand-page-metadata.ts +11 -1
  212. package/lib/src/bundled-translations-B5Fkt3qd.js +0 -175
  213. package/lib/src/bundled-translations.de-DE-DpdVePM9.js +0 -175
  214. package/lib/src/bundled-translations.es-ES-BsIcrzZF.js +0 -175
  215. package/lib/src/bundled-translations.fr-CA-G1XCp2Qh.js +0 -175
  216. package/lib/src/bundled-translations.fr-FR-BdwLXOnB.js +0 -175
  217. package/lib/src/bundled-translations.pt-BR-Bvn5ePe7.js +0 -175
  218. package/lib/src/bundled-translations.pt-PT-CDtkb2k1.js +0 -175
@@ -2,11 +2,13 @@
2
2
  <section data-component="contact-form">
3
3
  <div
4
4
  :class="{
5
- 'tw-flex': isCenteredLayout && !hasBgImage,
6
5
  'tw-block': !viewModel.layoutStyle,
7
- 'tw-relative': hasBgImage,
6
+ 'tw-relative tw-overflow-hidden': hasBgImage,
8
7
  }"
9
- :style="hasBgColor ? viewModel.backgroundStyle : {}"
8
+ :style="[
9
+ hasBgColor ? viewModel.backgroundStyle : {},
10
+ contentPaddingStyle,
11
+ ]"
10
12
  >
11
13
  <Media
12
14
  v-if="hasBgImage && isCenteredLayout"
@@ -108,110 +110,115 @@
108
110
  </Collapsible>
109
111
  <div
110
112
  v-else-if="isCenteredLayout"
111
- class="contact-container tw-py-4"
112
- :class="{
113
- 'tw-px-6 tw-py-8': hasCard,
114
- 'tw-py-6': !hasCard,
115
- 'tw-w-full': !hasBgImage,
116
- }"
113
+ :class="{ 'tw-relative': hasBgImage, 'tw-flex': !hasBgImage }"
117
114
  >
118
115
  <div
119
- :style="hasCard ? viewModel.cardStyle : {}"
120
- class="tw-relative tw-block tw-px-6 tw-py-8 tw-rounded-2xl"
116
+ class="contact-container"
117
+ :class="{
118
+ 'tw-px-6': hasCard,
119
+ 'tw-py-8': hasBgImage,
120
+ 'tw-w-full': !hasBgImage,
121
+ }"
121
122
  >
122
- <form v-if="!hasSubmitted" @submit.prevent="submitContactForm">
123
- <TextWrapper
124
- v-if="viewModel.title"
125
- :text-style="viewModel.titleStyle"
126
- :text="viewModel.title"
127
- element="h1"
128
- class="tw-mb-4 tw-text-base"
129
- />
130
- <TextWrapper
131
- v-if="renderText"
132
- :text-style="viewModel.descriptionStyle"
133
- :text="renderText"
134
- element="div"
135
- class="tw-mb-4 tw-text-base"
136
- />
137
- <div v-if="!isSubmitting" class="tw-grid tw-grid-cols-2 tw-gap-4">
138
- <div
139
- v-for="(value, index) in values"
140
- :key="index"
141
- class="tw-text-secondary-500 c-col-span-2"
142
- :class="{
143
- 'tw-col-span-2':
144
- value.field.type === 'text-area' || isMobileDevice,
145
- }"
146
- >
147
- <TextInput
148
- v-if="value.field.type !== 'text-area'"
149
- v-model="value.value"
150
- :placeholder="`${value.field.name}${
151
- value.field.required ? '*' : ''
152
- }`"
153
- :label="`${value.field.name}${value.field.required ? '*' : ''}`"
154
- :show-label-screen-reader-only="true"
155
- size="sm"
156
- :error="!!value.error"
157
- :type="getTextInputTypeByFieldType(value.field.type)"
158
- class="tw-w-full"
159
- @input="onValueChange(index)"
160
- />
161
- <Textarea
162
- v-if="value.field.type === 'text-area'"
163
- v-model="value.value"
164
- :placeholder="`${value.field.name}${
165
- value.field.required ? '*' : ''
166
- }`"
167
- :label="`${value.field.name}${value.field.required ? '*' : ''}`"
168
- :show-label-screen-reader-only="true"
169
- size="sm"
170
- :error="!!value.error"
171
- :resize="false"
172
- class="tw-w-full"
173
- @input="onValueChange(index)"
174
- />
175
- <p v-if="!!value.error" class="form-error">
176
- {{ value.error }}
177
- </p>
178
- </div>
179
- <div class="tw-flex tw-w-full tw-justify-center tw-col-span-2">
180
- <button
181
- v-if="isSubmitButtonVisible"
182
- class="tw-block tw-border-0 tw-py-2 tw-select-none tw-text-base tw-text-center tw-w-fit hover:tw-cursor-pointer tw-px-8 tw-py-3 c-button-full"
183
- :style="submitButtonStyle"
184
- :class="{ 'tw-w-full': isMobileDevice }"
123
+ <div
124
+ :style="hasCard ? viewModel.cardStyle : {}"
125
+ class="tw-relative tw-block tw-px-6 tw-rounded-2xl"
126
+ :class="{ 'tw-py-8': hasCard }"
127
+ >
128
+ <form v-if="!hasSubmitted" @submit.prevent="submitContactForm">
129
+ <TextWrapper
130
+ v-if="viewModel.title"
131
+ :text-style="viewModel.titleStyle"
132
+ :text="viewModel.title"
133
+ element="h1"
134
+ class="tw-mb-4 tw-text-base"
135
+ />
136
+ <TextWrapper
137
+ v-if="renderText"
138
+ :text-style="viewModel.descriptionStyle"
139
+ :text="renderText"
140
+ element="div"
141
+ class="tw-mb-4 tw-text-base"
142
+ />
143
+ <div v-if="!isSubmitting" class="tw-grid tw-grid-cols-2 tw-gap-4">
144
+ <div
145
+ v-for="(value, index) in values"
146
+ :key="index"
147
+ class="tw-text-secondary-500 c-col-span-2"
148
+ :class="{
149
+ 'tw-col-span-2':
150
+ value.field.type === 'text-area' || isMobileDevice,
151
+ }"
185
152
  >
186
- <TextWrapper
187
- :text-style="submitButtonTextStyle"
188
- :text="viewModel.buttonText"
189
- class="tw-text-center tw-text-base"
153
+ <TextInput
154
+ v-if="value.field.type !== 'text-area'"
155
+ v-model="value.value"
156
+ :placeholder="`${value.field.name}${
157
+ value.field.required ? '*' : ''
158
+ }`"
159
+ :label="`${value.field.name}${value.field.required ? '*' : ''}`"
160
+ :show-label-screen-reader-only="true"
161
+ size="sm"
162
+ :error="!!value.error"
163
+ :type="getTextInputTypeByFieldType(value.field.type)"
164
+ class="tw-w-full"
165
+ @input="onValueChange(index)"
190
166
  />
191
- </button>
167
+ <Textarea
168
+ v-if="value.field.type === 'text-area'"
169
+ v-model="value.value"
170
+ :placeholder="`${value.field.name}${
171
+ value.field.required ? '*' : ''
172
+ }`"
173
+ :label="`${value.field.name}${value.field.required ? '*' : ''}`"
174
+ :show-label-screen-reader-only="true"
175
+ size="sm"
176
+ :error="!!value.error"
177
+ :resize="false"
178
+ class="tw-w-full"
179
+ @input="onValueChange(index)"
180
+ />
181
+ <p v-if="!!value.error" class="form-error">
182
+ {{ value.error }}
183
+ </p>
184
+ </div>
185
+ <div class="tw-flex tw-w-full tw-justify-center tw-col-span-2">
186
+ <button
187
+ v-if="isSubmitButtonVisible"
188
+ class="tw-block tw-border-0 tw-py-2 tw-select-none tw-text-base tw-text-center tw-w-fit hover:tw-cursor-pointer tw-px-8 tw-py-3 c-button-full"
189
+ :style="submitButtonStyle"
190
+ :class="{ 'tw-w-full': isMobileDevice }"
191
+ >
192
+ <TextWrapper
193
+ :text-style="submitButtonTextStyle"
194
+ :text="viewModel.buttonText"
195
+ class="tw-text-center tw-text-base"
196
+ />
197
+ </button>
198
+ </div>
192
199
  </div>
200
+ <div v-else class="tw-w-full tw-flex tw-justify-center">
201
+ <Loader />
202
+ </div>
203
+ <p
204
+ v-if="hasSubmitError"
205
+ class="tw-text-center tw-mt-2 form-error"
206
+ >
207
+ {{ submitError }}
208
+ </p>
209
+ </form>
210
+ <div v-else :style="successMessageColorStyle">
211
+ <TextWrapper
212
+ v-if="viewModel.successMessage"
213
+ :text="renderSuccessText"
214
+ element="p"
215
+ :class="'tw-my-0.5'"
216
+ />
193
217
  </div>
194
- <div v-else class="tw-w-full tw-flex tw-justify-center">
195
- <Loader />
196
- </div>
197
- <p v-if="hasSubmitError" class="tw-text-center tw-mt-2 form-error">
198
- {{ submitError }}
199
- </p>
200
- </form>
201
- <div v-else :style="successMessageColorStyle">
202
- <TextWrapper
203
- v-if="viewModel.successMessage"
204
- :text="renderSuccessText"
205
- element="p"
206
- :class="'tw-my-0.5'"
207
- />
208
218
  </div>
209
219
  </div>
210
220
  </div>
211
- <div
212
- v-else-if="isTextOnly"
213
- class="tw-px-6 tw-py-8 tw-gap-2 contact-container"
214
- >
221
+ <div v-else-if="isTextOnly" class="tw-px-6 tw-gap-2 contact-container">
215
222
  <span v-if="!hasSubmitted" class="tw-grid tw-grid-cols-2">
216
223
  <div
217
224
  v-if="!isSubmitting"
@@ -350,10 +357,7 @@
350
357
  }"
351
358
  >
352
359
  <div
353
- class="tw-flex tw-flex-col tw-gap-2 tw-px-8 tw-w-full tw-justify-center c-py-6"
354
- :class="{
355
- 'tw-py-6': isMobileDevice,
356
- }"
360
+ class="tw-flex tw-flex-col tw-gap-2 tw-px-8 tw-py-6 tw-w-full tw-justify-center"
357
361
  >
358
362
  <span v-if="!hasSubmitted">
359
363
  <TextWrapper
@@ -516,9 +520,6 @@ export default {
516
520
  .c-text-padding {
517
521
  @apply tw-px-0 tw-col-span-2;
518
522
  }
519
- .c-py-6 {
520
- @apply tw-py-6;
521
- }
522
523
  .c-divided-container {
523
524
  @apply tw-flex-col;
524
525
  }
@@ -1,6 +1,7 @@
1
1
  import { defineComponent } from 'vue';
2
2
  import type { PropType } from 'vue';
3
3
  import type { ImageGalleryViewModel } from '@brand-page/view-models';
4
+ import { contentPaddingStyle as toContentPaddingStyle } from '@brand-page/utils';
4
5
  import ComponentCommonMixin from '../mixins/component-common.mixin';
5
6
  import ImageModalMixin from '../mixins/image-modal.mixin';
6
7
  import type { ImageGalleryImageClickPayload } from './models';
@@ -34,6 +35,10 @@ export default defineComponent({
34
35
  };
35
36
  },
36
37
  computed: {
38
+ contentPaddingStyle(): { paddingTop: string; paddingBottom: string } {
39
+ return toContentPaddingStyle(this.viewModel);
40
+ },
41
+
37
42
  getContainerStyle(): BrandPageCssStyle {
38
43
  if (this.galleryType === 'carousel') {
39
44
  const maxWidth = this.containerClientWidth
@@ -10,7 +10,7 @@
10
10
  'c-carousel-full-width':
11
11
  viewModel.isFullWidth && isPreview && galleryType === 'carousel',
12
12
  }"
13
- :style="getContainerStyle"
13
+ :style="[getContainerStyle, contentPaddingStyle]"
14
14
  >
15
15
  <component
16
16
  :is="galleryType"
@@ -2,7 +2,10 @@ import { defineComponent } from 'vue';
2
2
  import type { PropType } from 'vue';
3
3
  import type { MailingListViewModel } from '@brand-page/view-models';
4
4
  import brandPageClient from '../../clients/brand-page.client';
5
- import { getEmailValidationError } from '@brand-page/utils';
5
+ import {
6
+ getEmailValidationError,
7
+ contentPaddingStyle as toContentPaddingStyle,
8
+ } from '@brand-page/utils';
6
9
  import type { BrandPageContext } from '@brand-page/models';
7
10
  import {
8
11
  contentSettingsTr,
@@ -61,6 +64,10 @@ export default defineComponent({
61
64
  }
62
65
  },
63
66
  computed: {
67
+ contentPaddingStyle(): { paddingTop: string; paddingBottom: string } {
68
+ return toContentPaddingStyle(this.viewModel);
69
+ },
70
+
64
71
  hasNameError(): boolean {
65
72
  return !!this.nameError;
66
73
  },
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <section>
2
+ <section :style="contentPaddingStyle">
3
3
  <div
4
4
  v-if="show"
5
5
  class="tw-p-4"
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div data-component="map">
2
+ <div data-component="map" :style="contentPaddingStyle">
3
3
  <div
4
4
  class="c-map"
5
5
  :class="{
@@ -22,6 +22,7 @@ import Placeholder from '../placeholder/Placeholder.vue';
22
22
  import type { MapViewModel } from '@brand-page/view-models';
23
23
  import type { BrandPageContext } from '@brand-page/models';
24
24
  import { mapTr } from '@src/composables/useTranslate';
25
+ import { contentPaddingStyle as toContentPaddingStyle } from '@brand-page/utils';
25
26
  import { computed } from 'vue';
26
27
 
27
28
  interface Props {
@@ -37,6 +38,9 @@ const props = withDefaults(defineProps<Props>(), {
37
38
  });
38
39
 
39
40
  const placeId = computed(() => props.viewModel?.address?.placeId);
41
+ const contentPaddingStyle = computed(() =>
42
+ toContentPaddingStyle(props.viewModel),
43
+ );
40
44
  </script>
41
45
  <style scoped>
42
46
  .c-map {
@@ -14,6 +14,7 @@ import type { RequestPaymentViewModel } from '../../../view-models';
14
14
  import type { PaymentRequestDetails } from '../Payment.mixin';
15
15
  import { DEFAULT_CURRENCY_SYMBOL } from '../../../constants';
16
16
  import { addOpacityToHex } from '../../../utils/color.util';
17
+ import { contentPaddingStyle as toContentPaddingStyle } from '../../../utils';
17
18
  import { RGBAtoHex } from '@utils/helpers';
18
19
 
19
20
  const MAX_CUSTOM_REQUEST_CHARS = 500;
@@ -42,6 +43,10 @@ export default defineComponent({
42
43
  };
43
44
  },
44
45
  computed: {
46
+ contentPaddingStyle(): { paddingTop: string; paddingBottom: string } {
47
+ return toContentPaddingStyle(this.viewModel);
48
+ },
49
+
45
50
  isCustomerRequestDetailsValid(): boolean {
46
51
  return (
47
52
  !this.viewModel.requestPaymentConfig.isCustomerRequestDetailsEnabled ||
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <div
3
3
  data-component="request-payment"
4
+ :style="contentPaddingStyle"
4
5
  :class="{
5
6
  'tw-my-8': context.isBrandSite,
6
7
  'tw-mb-4': context.isBrandPageOrIsBrandContact,
@@ -4,7 +4,10 @@ import { SUPPORT_ME_CUSTOM_PRODUCT_NAME } from '../../../constants';
4
4
  import type { BrandPageContext, PaymentOption } from '../../../models';
5
5
  import type { SupportMeViewModel } from '../../../view-models';
6
6
  import type { PaymentRequestDetails } from '../Payment.mixin';
7
- import { isPaymentAmountValid } from '../../../utils';
7
+ import {
8
+ isPaymentAmountValid,
9
+ contentPaddingStyle as toContentPaddingStyle,
10
+ } from '../../../utils';
8
11
  import {
9
12
  DEFAULT_CURRENCY_SYMBOL,
10
13
  DEFAULT_CURRENCY_CODE,
@@ -33,6 +36,10 @@ export default defineComponent({
33
36
  };
34
37
  },
35
38
  computed: {
39
+ contentPaddingStyle(): { paddingTop: string; paddingBottom: string } {
40
+ return toContentPaddingStyle(this.viewModel);
41
+ },
42
+
36
43
  isCustomAmountFieldVisible(): boolean {
37
44
  return this.viewModel.supportMeConfig.paymentOptions.some(
38
45
  (o) => o.name === SUPPORT_ME_CUSTOM_PRODUCT_NAME,
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <div
3
3
  data-component="support-me"
4
+ :style="contentPaddingStyle"
4
5
  :class="{
5
6
  'tw-my-8': context.isBrandSite,
6
7
  'tw-mb-4': context.isBrandPageOrIsBrandContact,
@@ -2,12 +2,12 @@
2
2
  <section>
3
3
  <div
4
4
  v-if="shouldShowContainer"
5
- class="tw-relative outer-container tw-py-4"
5
+ class="tw-relative outer-container"
6
6
  :class="{
7
7
  'tw-my-8': context.isBrandSite,
8
8
  'tw-mb-4': context.isBrandPageOrIsBrandContact,
9
9
  }"
10
- :style="backgroundStyle"
10
+ :style="[backgroundStyle, contentPaddingStyle]"
11
11
  >
12
12
  <div class="tw-p-4 inner-container">
13
13
  <div class="tw-flex tw-flex-col tw-gap-2">
@@ -140,6 +140,7 @@ import brandPageClient from '../../clients/brand-page.client';
140
140
  import raygunUtil from '@brand-page/utils/raygun.util';
141
141
  import { shopTr } from '@src/composables/useTranslate';
142
142
  import { useShopConfigStore } from '@shared/ecommerce-settings/store/shop-settings-store';
143
+ import { contentPaddingStyle as toContentPaddingStyle } from '@brand-page/utils';
143
144
 
144
145
  const props = withDefaults(
145
146
  defineProps<{
@@ -260,6 +261,10 @@ const itemStyle = computed((): BrandPageCssStyle => {
260
261
  };
261
262
  });
262
263
 
264
+ const contentPaddingStyle = computed(() =>
265
+ toContentPaddingStyle(props.viewModel),
266
+ );
267
+
263
268
  const backgroundStyle = computed((): any => {
264
269
  return props.viewModel.backgroundStyle;
265
270
  });
@@ -1,11 +1,10 @@
1
1
  <template>
2
2
  <div data-component="social-links">
3
3
  <div
4
- class="tw-pb-8"
5
4
  :class="{
6
5
  'tw-mb-4': context.isBrandPageOrIsBrandContact,
7
6
  }"
8
- :style="containerStyles"
7
+ :style="[containerStyles, contentPaddingStyle]"
9
8
  style="container-type: inline-size"
10
9
  >
11
10
  <TextWrapper
@@ -14,7 +13,7 @@
14
13
  :text="title"
15
14
  element="h1"
16
15
  :class="textAlignClass"
17
- class="tw-py-8"
16
+ class="tw-pb-8"
18
17
  />
19
18
  <SocialLinksItems
20
19
  :id="id"
@@ -34,6 +33,7 @@ import TextWrapper from '../text-wrapper/TextWrapper.vue';
34
33
  import type { SocialLinksViewModel } from 'src/brand-page/view-models';
35
34
  import { SOCIAL_LINKS_ICON_DISPLAY_STYLES } from '@brand-page/models';
36
35
  import type { BrandPageContext, LinksItem } from '@brand-page/models';
36
+ import { contentPaddingStyle as toContentPaddingStyle } from '@brand-page/utils';
37
37
  import { computed } from 'vue';
38
38
 
39
39
  const props = withDefaults(
@@ -51,6 +51,10 @@ const containerStyles = computed((): BrandPageCssStyle => {
51
51
  return props.viewModel.backgroundStyles || {};
52
52
  });
53
53
 
54
+ const contentPaddingStyle = computed(() =>
55
+ toContentPaddingStyle(props.viewModel),
56
+ );
57
+
54
58
  const iconStyle = computed((): BrandPageCssStyle => {
55
59
  return props.viewModel.iconFillStyles || {};
56
60
  });
@@ -2,7 +2,7 @@
2
2
  <div>
3
3
  <div
4
4
  v-if="!context.isBrandSite"
5
- :style="containerStyle"
5
+ :style="[containerStyle, contentPaddingStyle]"
6
6
  :class="{
7
7
  [containerClasses]: true,
8
8
  }"
@@ -15,9 +15,9 @@
15
15
  data-test-tag="text-content-text"
16
16
  />
17
17
  </div>
18
- <div v-else :style="containerStyle">
18
+ <div v-else :style="[containerStyle, contentPaddingStyle]">
19
19
  <div
20
- class="c-text-container tw-py-3 tw-px-6 grid-container tw-gap-4"
20
+ class="c-text-container tw-px-6 grid-container tw-gap-4"
21
21
  :class="{
22
22
  [containerClasses]: true,
23
23
  [gridClass]: context.isBrandSite,
@@ -41,7 +41,10 @@
41
41
  import TextWrapper from '../text-wrapper/TextWrapper.vue';
42
42
  import { computed } from 'vue';
43
43
  import type { TextViewModel } from '@brand-page/view-models';
44
- import { getRenderText } from '@brand-page/utils';
44
+ import {
45
+ getRenderText,
46
+ contentPaddingStyle as toContentPaddingStyle,
47
+ } from '@brand-page/utils';
45
48
  import type { BrandPageContext } from '@brand-page/models';
46
49
 
47
50
  interface Props {
@@ -51,6 +54,10 @@ interface Props {
51
54
 
52
55
  const props = defineProps<Props>();
53
56
 
57
+ const contentPaddingStyle = computed(() =>
58
+ toContentPaddingStyle(props.viewModel),
59
+ );
60
+
54
61
  const containerStyle = computed<any>(() => {
55
62
  const containerStyles = {} as BrandPageCssStyle;
56
63
 
@@ -83,7 +90,7 @@ const containerClasses = computed(() => {
83
90
  return '';
84
91
  }
85
92
 
86
- return 'tw-py-3 tw-px-6';
93
+ return 'tw-px-6';
87
94
  });
88
95
 
89
96
  const renderText = computed(() => {
@@ -1,12 +1,12 @@
1
1
  <template>
2
2
  <section data-component="text-media-section">
3
3
  <div
4
- class="tw-relative tw-w-full tw-box-border tw-py-8"
4
+ class="tw-relative tw-w-full tw-box-border"
5
5
  :class="{
6
6
  'tw-pl-0 tw-pr-0': hasNoPadding || !hasBrandSitePadding,
7
7
  'tw-rounded-md': hasRoundedCorners,
8
8
  }"
9
- :style="viewModel.backgroundStyle"
9
+ :style="[viewModel.backgroundStyle, contentPaddingStyle]"
10
10
  >
11
11
  <div
12
12
  :class="[
@@ -148,7 +148,11 @@ import {
148
148
  MEDIA_ONLY,
149
149
  } from '../../constants';
150
150
  import { isHexTransparent } from '@brand-page/utils/color.util';
151
- import { escapeContentText, getRenderText } from '@brand-page/utils';
151
+ import {
152
+ escapeContentText,
153
+ getRenderText,
154
+ contentPaddingStyle as toContentPaddingStyle,
155
+ } from '@brand-page/utils';
152
156
 
153
157
  const props = defineProps({
154
158
  viewModel: {
@@ -171,6 +175,10 @@ const props = defineProps({
171
175
  },
172
176
  });
173
177
 
178
+ const contentPaddingStyle = computed(() =>
179
+ toContentPaddingStyle(props.viewModel),
180
+ );
181
+
174
182
  const items = computed(() => props.viewModel.items);
175
183
 
176
184
  const shouldDisplayText = computed(
@@ -1,6 +1,7 @@
1
1
  import { defineComponent } from 'vue';
2
2
  import type { PropType } from 'vue';
3
3
  import type { VideoViewModel } from '@brand-page/view-models';
4
+ import { contentPaddingStyle as toContentPaddingStyle } from '@brand-page/utils';
4
5
  import ComponentCommonMixin from '../mixins/component-common.mixin';
5
6
  import {
6
7
  DISPLAY_STYLE_PREVIEW,
@@ -22,6 +23,10 @@ export default defineComponent({
22
23
  title: 'Video',
23
24
  }),
24
25
  computed: {
26
+ contentPaddingStyle(): { paddingTop: string; paddingBottom: string } {
27
+ return toContentPaddingStyle(this.viewModel);
28
+ },
29
+
25
30
  arrowStyle(): BrandPageCssStyle {
26
31
  return {
27
32
  color: this.viewModel.buttonStyles.style?.color,
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="c-video">
2
+ <div class="c-video" :style="contentPaddingStyle">
3
3
  <div v-if="viewModel.videoUrl">
4
4
  <!-- Start -->
5
5
  <div
@@ -38,6 +38,54 @@ export const ALIGN_LEFT_FULL_IMAGE = 'left-aligned-full-image';
38
38
  export const ALIGN_RIGHT_FULL_IMAGE = 'right-aligned-full-image';
39
39
  export const ALTERNATE_IMAGE = 'alternate-image';
40
40
 
41
+ /**
42
+ * Padding Control (BP-5699): the top/bottom padding each Contact Form layout
43
+ * had hard-coded before the sliders existed. Single source for new-block
44
+ * defaults (content-settings) and the migration backfill for existing pages.
45
+ * The image layouts (full-image divided and card-over-image) are 0: the bg
46
+ * image expands with the section padding (banner-style), so the default starts
47
+ * flush at the edges; the spacing inside/over the image stays fixed.
48
+ */
49
+ export const CONTACT_FORM_LAYOUT_DEFAULT_PADDING: Record<string, number> = {
50
+ '': 0, // collapsible (default on Brand Page / Brand Contact)
51
+ [ALIGN_CENTERED]: 32,
52
+ [ALIGN_CARD_CENTER]: 32,
53
+ [ALIGN_CARD_CENTER_IMAGE]: 0,
54
+ [TEXT_ONLY]: 32,
55
+ [ALIGN_LEFT_FULL_IMAGE]: 0,
56
+ [ALIGN_RIGHT_FULL_IMAGE]: 0,
57
+ };
58
+
59
+ /**
60
+ * Banner: full-bleed display styles (divided + full-width stacked) render the
61
+ * image flush to the section edges, so their top/bottom padding defaults to 0 to
62
+ * match prod — the standard 32 would push the image off the edges. Every other
63
+ * banner style keeps 32. Used by the banner display-style convertor and the
64
+ * migration backfill, mirroring contact-form's per-layout map above.
65
+ */
66
+ export const BANNER_DEFAULT_PADDING = 32;
67
+ export const BANNER_FULL_BLEED_DISPLAY_STYLES = [
68
+ ALIGN_LEFT_FULL_IMAGE,
69
+ ALIGN_RIGHT_FULL_IMAGE,
70
+ ALIGN_TOP_FULL_IMAGE,
71
+ ALIGN_BOTTOM_FULL_IMAGE,
72
+ ALIGN_MIDDLE_FULL_IMAGE,
73
+ ];
74
+ export const bannerDisplayStyleDefaultPadding = (
75
+ displayStyle?: string,
76
+ ): number =>
77
+ displayStyle && BANNER_FULL_BLEED_DISPLAY_STYLES.includes(displayStyle)
78
+ ? 0
79
+ : BANNER_DEFAULT_PADDING;
80
+
81
+ /**
82
+ * About: a flat 32 for every display style, including the two full-image styles.
83
+ * The full-image About renders the image inside the padded container, so the
84
+ * standard 32 band is the intended look. Used by the About display-style
85
+ * convertor and the migration backfill.
86
+ */
87
+ export const ABOUT_DEFAULT_PADDING = 32;
88
+
41
89
  export const BIG_IMAGE = 'big-image';
42
90
  export const MEDIA_ONLY = 'media-only';
43
91
  export const COLUMNS = 'columns';
@@ -51,6 +51,8 @@ export interface Content {
51
51
  id: string;
52
52
  type: ContentType;
53
53
  personalisationRole?: PersonalisationRole;
54
+ topPadding?: number;
55
+ bottomPadding?: number;
54
56
 
55
57
  // Overrides for personalisation
56
58
  imageUrlOverride?: string;