@designcrowd/library.brand-page 5.18.7 → 5.18.8-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 (144) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-CZmqvsOT.js → CreatedOnBrandCrowd-de-de-4K_VkRLQ.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-5nTR1eLT.js → CreatedOnBrandCrowd-en-us-n6Fd47e_.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-xLvoayrw.js → CreatedOnBrandCrowd-es-es-BcCANYX_.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-CN5n8X8v.js → CreatedOnBrandCrowd-fr-ca-qusGdhEQ.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-CN5n8X8v.js → CreatedOnBrandCrowd-fr-fr-qusGdhEQ.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-CdkYC12E.js → CreatedOnBrandCrowd-pt-br-C9IBrRc_.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-CdkYC12E.js → CreatedOnBrandCrowd-pt-pt-C9IBrRc_.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-B8rV2rD7.js → CreatedOnDcom-de-de-BY13DaXj.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-C4WaRIpF.js → CreatedOnDcom-en-us-BPc5Nacx.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-BPHPey0b.js → CreatedOnDcom-es-es-KrsweAGY.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-xrMr4xlv.js → CreatedOnDcom-fr-ca-NaPJNFZH.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-BEozL-o2.js → CreatedOnDcom-fr-fr-DjZKRox_.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-CoN-ZhjG.js → CreatedOnDcom-pt-br-xGSMGQZa.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-9vfUJ3ks.js → CreatedOnDcom-pt-pt-B7CcpJ4c.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/image-gallery/masonry/MasonryGallery.mixin.d.ts +1 -1
  20. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.d.ts +4 -0
  21. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +4 -1
  22. package/lib/src/brand-page/components/media/Media.mixin.d.ts +2 -2
  23. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.d.ts +4 -0
  24. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.js +4 -0
  25. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.d.ts +4 -0
  26. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.js +4 -1
  27. package/lib/src/brand-page/components/testimonial-section/TestimonialSection.mixin.d.ts +4 -0
  28. package/lib/src/brand-page/components/testimonial-section/TestimonialSection.mixin.js +4 -1
  29. package/lib/src/brand-page/components/video/Video.mixin.d.ts +4 -0
  30. package/lib/src/brand-page/components/video/Video.mixin.js +4 -0
  31. package/lib/src/brand-page/constants/misc.constants.d.ts +35 -0
  32. package/lib/src/brand-page/constants/misc.constants.js +51 -0
  33. package/lib/src/brand-page/models/content.model.d.ts +2 -0
  34. package/lib/src/brand-page/utils/content-padding.util.d.ts +13 -0
  35. package/lib/src/brand-page/utils/content-padding.util.js +10 -0
  36. package/lib/src/brand-page/utils/index.d.ts +1 -0
  37. package/lib/src/brand-page/utils/index.js +1 -0
  38. package/lib/src/brand-page/utils/migration/migration-17.d.ts +2 -0
  39. package/lib/src/brand-page/utils/migration/migration-17.js +54 -0
  40. package/lib/src/brand-page/utils/migration.util.js +10 -0
  41. package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.d.ts +2 -0
  42. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +12 -0
  43. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +14 -0
  44. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +16 -3
  45. package/lib/src/brand-page-maker/constants/config-settings-constant.js +39 -0
  46. package/lib/src/brand-page-maker/convertors/about-display-style.convertor.js +9 -1
  47. package/lib/src/brand-page-maker/convertors/banner-align-display-style.convertor.js +7 -1
  48. package/lib/src/brand-page-maker/convertors/contact-layout-style.convertor.js +6 -1
  49. package/lib/src/brand-page-maker/models/content-settings.js +38 -2
  50. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +12 -0
  51. package/lib/src/{bundled-translations-D1q3rSEz.js → bundled-translations-BUyt4scr.js} +9 -9
  52. package/lib/src/{bundled-translations.de-DE-BxqLLwbh.js → bundled-translations.de-DE-DEw_OVai.js} +1 -1
  53. package/lib/src/{bundled-translations.es-ES-uh249NlJ.js → bundled-translations.es-ES-CFKWmkgY.js} +17 -17
  54. package/lib/src/{bundled-translations.fr-CA-BEQmv2fX.js → bundled-translations.fr-CA-DCl5LJS4.js} +1 -1
  55. package/lib/src/{bundled-translations.fr-FR-BnNuCojH.js → bundled-translations.fr-FR-B5BjgllA.js} +1 -1
  56. package/lib/src/{bundled-translations.pt-BR-CJUOxVlq.js → bundled-translations.pt-BR-5PWpMPuM.js} +1 -1
  57. package/lib/src/{bundled-translations.pt-PT-Ds9cMEqK.js → bundled-translations.pt-PT-B9_wN0HR.js} +9 -9
  58. package/lib/src/bundles/bundled-translations.de-DE.json +2 -0
  59. package/lib/src/bundles/bundled-translations.es-ES.json +2 -0
  60. package/lib/src/bundles/bundled-translations.fr-CA.json +2 -0
  61. package/lib/src/bundles/bundled-translations.fr-FR.json +2 -0
  62. package/lib/src/bundles/bundled-translations.json +2 -0
  63. package/lib/src/bundles/bundled-translations.pt-BR.json +2 -0
  64. package/lib/src/bundles/bundled-translations.pt-PT.json +2 -0
  65. package/lib/src/composables/useSnapshot.js +233 -21
  66. package/lib/src/css/library.brand-page-brandCrowd.min.css +147 -161
  67. package/lib/src/css/library.brand-page-brandPage.min.css +147 -161
  68. package/lib/src/css/library.brand-page-designCom.min.css +147 -161
  69. package/lib/src/css/library.brand-page-preview.min.css +147 -161
  70. package/lib/src/index.mjs +1 -1
  71. package/lib/src/{lib-xHNclG2R.js → lib-ClPLZIYL.js} +21178 -20848
  72. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +14 -0
  73. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +14 -0
  74. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +12 -0
  75. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +12 -0
  76. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +12 -0
  77. package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.js +9 -0
  78. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +12 -0
  79. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +16 -0
  80. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +14 -0
  81. package/lib/src/utils/minify-brand-page-metadata.js +11 -1
  82. package/package.json +1 -1
  83. package/src/brand-page/components/about-section/AboutSection.vue +10 -4
  84. package/src/brand-page/components/banner-section/BannerSection.vue +11 -4
  85. package/src/brand-page/components/booking-section/BookingSection.vue +11 -3
  86. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +12 -6
  87. package/src/brand-page/components/contact-form/ContactForm.vue +105 -104
  88. package/src/brand-page/components/image-gallery/ImageGallery.mixin.ts +5 -0
  89. package/src/brand-page/components/image-gallery/ImageGallery.vue +1 -1
  90. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +8 -1
  91. package/src/brand-page/components/mailing-list/MailingList.vue +1 -1
  92. package/src/brand-page/components/map/Map.vue +5 -1
  93. package/src/brand-page/components/payment/request-payment/RequestPayment.mixin.ts +5 -0
  94. package/src/brand-page/components/payment/request-payment/RequestPayment.vue +1 -0
  95. package/src/brand-page/components/payment/support-me/SupportMe.mixin.ts +8 -1
  96. package/src/brand-page/components/payment/support-me/SupportMe.vue +1 -0
  97. package/src/brand-page/components/shop/Shop.vue +7 -2
  98. package/src/brand-page/components/social-links/SocialLinks.vue +7 -3
  99. package/src/brand-page/components/testimonial-section/TestimonialSection.mixin.ts +7 -1
  100. package/src/brand-page/components/testimonial-section/TestimonialSection.vue +4 -6
  101. package/src/brand-page/components/text/Text.vue +12 -5
  102. package/src/brand-page/components/text-media-section/TextMediaSection.vue +11 -3
  103. package/src/brand-page/components/video/Video.mixin.ts +5 -0
  104. package/src/brand-page/components/video/Video.vue +1 -1
  105. package/src/brand-page/constants/misc.constants.ts +58 -0
  106. package/src/brand-page/models/content.model.ts +2 -0
  107. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +9 -3
  108. package/src/brand-page/utils/content-padding.util.test.ts +29 -0
  109. package/src/brand-page/utils/content-padding.util.ts +13 -0
  110. package/src/brand-page/utils/index.ts +1 -0
  111. package/src/brand-page/utils/migration/migration-17.ts +72 -0
  112. package/src/brand-page/utils/migration.util.test.ts +252 -0
  113. package/src/brand-page/utils/migration.util.ts +11 -0
  114. package/src/brand-page-maker/components/ai-website-builder/AiWebsiteBuilder.vue +3 -4
  115. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +8 -1
  116. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +19 -4
  117. package/src/brand-page-maker/constants/config-settings-constant.ts +45 -0
  118. package/src/brand-page-maker/convertors/about-display-style.convertor.ts +10 -0
  119. package/src/brand-page-maker/convertors/banner-align-display-style.convertor.ts +8 -0
  120. package/src/brand-page-maker/convertors/contact-layout-style.convertor.test.ts +50 -0
  121. package/src/brand-page-maker/convertors/contact-layout-style.convertor.ts +8 -0
  122. package/src/brand-page-maker/models/content-settings.ts +41 -2
  123. package/src/bundles/bundled-translations.de-DE.json +2 -0
  124. package/src/bundles/bundled-translations.es-ES.json +2 -0
  125. package/src/bundles/bundled-translations.fr-CA.json +2 -0
  126. package/src/bundles/bundled-translations.fr-FR.json +2 -0
  127. package/src/bundles/bundled-translations.json +2 -0
  128. package/src/bundles/bundled-translations.pt-BR.json +2 -0
  129. package/src/bundles/bundled-translations.pt-PT.json +2 -0
  130. package/src/composables/useSnapshot.ts +316 -31
  131. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +2 -0
  132. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +2 -0
  133. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +2 -0
  134. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +2 -0
  135. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +2 -0
  136. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +2 -0
  137. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +2 -0
  138. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.vue +1 -1
  139. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.vue +2 -2
  140. package/src/shared/content-settings/components/slider-field/SliderField.mixin.ts +9 -0
  141. package/src/utils/minify-brand-page-metadata.ts +11 -1
  142. package/lib/src/metadata-builder/builders/reorder-pages-builder.d.ts +0 -13
  143. package/lib/src/metadata-builder/builders/reorder-pages-builder.js +0 -49
  144. package/src/metadata-builder/builders/reorder-pages-builder.ts +0 -80
@@ -501,6 +501,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
501
501
  id: string;
502
502
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
503
503
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
504
+ topPadding?: number | undefined;
505
+ bottomPadding?: number | undefined;
504
506
  imageUrlOverride?: string | undefined;
505
507
  imageUrlsOverride?: string | undefined;
506
508
  avatarImageUrlOverride?: string | undefined;
@@ -550,6 +552,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
550
552
  id: string;
551
553
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
552
554
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
555
+ topPadding?: number | undefined;
556
+ bottomPadding?: number | undefined;
553
557
  imageUrlOverride?: string | undefined;
554
558
  imageUrlsOverride?: string | undefined;
555
559
  avatarImageUrlOverride?: string | undefined;
@@ -599,6 +603,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
599
603
  id: string;
600
604
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
601
605
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
606
+ topPadding?: number | undefined;
607
+ bottomPadding?: number | undefined;
602
608
  imageUrlOverride?: string | undefined;
603
609
  imageUrlsOverride?: string | undefined;
604
610
  avatarImageUrlOverride?: string | undefined;
@@ -648,6 +654,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
648
654
  id: string;
649
655
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
650
656
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
657
+ topPadding?: number | undefined;
658
+ bottomPadding?: number | undefined;
651
659
  imageUrlOverride?: string | undefined;
652
660
  imageUrlsOverride?: string | undefined;
653
661
  avatarImageUrlOverride?: string | undefined;
@@ -697,6 +705,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
697
705
  id: string;
698
706
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
699
707
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
708
+ topPadding?: number | undefined;
709
+ bottomPadding?: number | undefined;
700
710
  imageUrlOverride?: string | undefined;
701
711
  imageUrlsOverride?: string | undefined;
702
712
  avatarImageUrlOverride?: string | undefined;
@@ -746,6 +756,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
746
756
  id: string;
747
757
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
748
758
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
759
+ topPadding?: number | undefined;
760
+ bottomPadding?: number | undefined;
749
761
  imageUrlOverride?: string | undefined;
750
762
  imageUrlsOverride?: string | undefined;
751
763
  avatarImageUrlOverride?: string | undefined;
@@ -11,6 +11,8 @@ declare const _default: import("vue").DefineComponent<{}, {
11
11
  id: string;
12
12
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
13
13
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
14
+ topPadding?: number | undefined;
15
+ bottomPadding?: number | undefined;
14
16
  imageUrlOverride?: string | undefined;
15
17
  imageUrlsOverride?: string | undefined;
16
18
  avatarImageUrlOverride?: string | undefined;
@@ -90,6 +92,8 @@ declare const _default: import("vue").DefineComponent<{}, {
90
92
  id: string;
91
93
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
92
94
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
95
+ topPadding?: number | undefined;
96
+ bottomPadding?: number | undefined;
93
97
  imageUrlOverride?: string | undefined;
94
98
  imageUrlsOverride?: string | undefined;
95
99
  avatarImageUrlOverride?: string | undefined;
@@ -139,6 +143,8 @@ declare const _default: import("vue").DefineComponent<{}, {
139
143
  id: string;
140
144
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
141
145
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
146
+ topPadding?: number | undefined;
147
+ bottomPadding?: number | undefined;
142
148
  imageUrlOverride?: string | undefined;
143
149
  imageUrlsOverride?: string | undefined;
144
150
  avatarImageUrlOverride?: string | undefined;
@@ -188,6 +194,8 @@ declare const _default: import("vue").DefineComponent<{}, {
188
194
  id: string;
189
195
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
190
196
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
197
+ topPadding?: number | undefined;
198
+ bottomPadding?: number | undefined;
191
199
  imageUrlOverride?: string | undefined;
192
200
  imageUrlsOverride?: string | undefined;
193
201
  avatarImageUrlOverride?: string | undefined;
@@ -237,6 +245,8 @@ declare const _default: import("vue").DefineComponent<{}, {
237
245
  id: string;
238
246
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
239
247
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
248
+ topPadding?: number | undefined;
249
+ bottomPadding?: number | undefined;
240
250
  imageUrlOverride?: string | undefined;
241
251
  imageUrlsOverride?: string | undefined;
242
252
  avatarImageUrlOverride?: string | undefined;
@@ -286,6 +296,8 @@ declare const _default: import("vue").DefineComponent<{}, {
286
296
  id: string;
287
297
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
288
298
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
299
+ topPadding?: number | undefined;
300
+ bottomPadding?: number | undefined;
289
301
  imageUrlOverride?: string | undefined;
290
302
  imageUrlsOverride?: string | undefined;
291
303
  avatarImageUrlOverride?: string | undefined;
@@ -335,6 +347,8 @@ declare const _default: import("vue").DefineComponent<{}, {
335
347
  id: string;
336
348
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
337
349
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
350
+ topPadding?: number | undefined;
351
+ bottomPadding?: number | undefined;
338
352
  imageUrlOverride?: string | undefined;
339
353
  imageUrlsOverride?: string | undefined;
340
354
  avatarImageUrlOverride?: string | undefined;
@@ -307,8 +307,6 @@ export function useAiWebsiteBuilderChat() {
307
307
  if (undoRedoEnabled.value) {
308
308
  historyStore.captureAiChangeset();
309
309
  }
310
- // Re-capture snapshot so subsequent messages reflect the updated page
311
- await snapshotStore.refreshSnapshotAsync();
312
310
  return {
313
311
  shouldContinue: toolResults.length > 0 && aiThreadStore.runId !== null,
314
312
  toolResults,
@@ -476,7 +474,6 @@ export function useAiWebsiteBuilderChat() {
476
474
  settled = true;
477
475
  clearTimeout(timeout);
478
476
  finishBuild();
479
- await snapshotStore.refreshSnapshotAsync();
480
477
  resolve({
481
478
  text: aiResponse.message || lastAiMessage || '',
482
479
  });
@@ -645,6 +642,22 @@ export function useAiWebsiteBuilderChat() {
645
642
  try {
646
643
  aiLogger.startGroup();
647
644
  aiLogger.log('sendMessageAsync', { messageOptions });
645
+ // Capture a fresh, full-page snapshot before building the request payload,
646
+ // so every turn — including the first message and any manual edits between
647
+ // turns — carries an up-to-date snapshot. Done here (after the user/typing
648
+ // bubbles are already on screen) so a slow or failed capture never delays
649
+ // or blocks the message from appearing in the thread.
650
+ //
651
+ // Best-effort: the snapshot is optional context, so a capture failure must
652
+ // never fail the AI request. Swallow any error and proceed — the pipeline
653
+ // handles a missing websiteSnapshot, and `callApiBuildAsync` already falls
654
+ // back to `undefined` when the store has no snapshot.
655
+ try {
656
+ await snapshotStore.refreshSnapshotAsync();
657
+ }
658
+ catch (snapshotError) {
659
+ console.error('Snapshot capture failed; sending message without it:', snapshotError);
660
+ }
648
661
  const result = await callApiBuildAsync(text || '', userMessage.id);
649
662
  if (isStopped.value)
650
663
  return;
@@ -42,6 +42,28 @@ const SETTINGS_STYLE_FIElD_GROUPS = () => {
42
42
  },
43
43
  ];
44
44
  };
45
+ /**
46
+ * Shared Top/Bottom padding sliders (BP-5687). Reuses the same `slider` control
47
+ * as the Divider block (track + editable number box), range 0–100, continuous.
48
+ * Spread into a block's `fields` to expose the Padding Control on that block.
49
+ * Pass the Style field-group id for blocks that use grouped panels.
50
+ */
51
+ const PADDING_CONTROL_FIELDS = (groupId) => ({
52
+ topPadding: {
53
+ type: 'slider',
54
+ title: contentSettingsTr(`topPaddingTitle`),
55
+ minLength: 0,
56
+ maxLength: 100,
57
+ groupId,
58
+ },
59
+ bottomPadding: {
60
+ type: 'slider',
61
+ title: contentSettingsTr(`bottomPaddingTitle`),
62
+ minLength: 0,
63
+ maxLength: 100,
64
+ groupId,
65
+ },
66
+ });
45
67
  const DEFAULT_TITLE_STYLE_SETTINGS_FILED = () => ({
46
68
  type: 'text-style',
47
69
  defaultValue: {},
@@ -799,6 +821,7 @@ export const IMAGE_GALLERY_CONTENT_SETTINGS_CONFIG = () => ({
799
821
  defaultValue: false,
800
822
  visibilityAssessor: imageGalleryFieldVisibilityAssessor,
801
823
  },
824
+ ...PADDING_CONTROL_FIELDS(),
802
825
  },
803
826
  isEnabled: true,
804
827
  isLocked: (features) => !features.canAddImageContents,
@@ -835,6 +858,7 @@ export const VIDEO_CONTENT_SETTINGS_CONFIG = () => ({
835
858
  label: contentSettingsTr(`muteLabel`),
836
859
  valueConvertor: videoContentStateConvertor,
837
860
  },
861
+ ...PADDING_CONTROL_FIELDS(),
838
862
  },
839
863
  isEnabled: true,
840
864
  isLocked: (features) => !features.canAddVideoContents,
@@ -968,6 +992,7 @@ export const TEXT_CONTENT_SETTINGS_CONFIG = () => ({
968
992
  variant: 'icon',
969
993
  visibilityAssessor: brandSiteTypeVisibilityAssessor,
970
994
  },
995
+ ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
971
996
  backgroundColor: {
972
997
  type: 'color',
973
998
  defaultValue: {},
@@ -1384,6 +1409,7 @@ export const MAP_CONTENT_SETTINGS_CONFIG = () => ({
1384
1409
  type: 'address',
1385
1410
  title: contentSettingsTr(`addressTitle`),
1386
1411
  },
1412
+ ...PADDING_CONTROL_FIELDS(),
1387
1413
  },
1388
1414
  isEnabled: true,
1389
1415
  isLocked: (features) => !features.canAddMapContents,
@@ -1432,6 +1458,7 @@ export const MAILING_LIST_CONTENT_SETTINGS_CONFIG = () => ({
1432
1458
  },
1433
1459
  titleStyle: DEFAULT_TITLE_STYLE_SETTINGS_FILED_WITH_TITLE(),
1434
1460
  buttonTextStyle: DEFAULT_BUTTON_TEXT_STYLE_FIELD(),
1461
+ ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
1435
1462
  },
1436
1463
  isEnabled: true,
1437
1464
  isLocked: false,
@@ -1602,6 +1629,7 @@ export const REQUEST_PAYMENT_CONTENT_SETTINGS_CONFIG = () => ({
1602
1629
  defaultValue: {},
1603
1630
  label: contentSettingsTr(`buttonTextStyleLabel`),
1604
1631
  },
1632
+ ...PADDING_CONTROL_FIELDS(REQUEST_PAYMENT_GROUPS.style),
1605
1633
  },
1606
1634
  isEnabled: (features) => features.canAddRequestPaymentContents,
1607
1635
  isLocked: false,
@@ -1666,6 +1694,7 @@ export const SUPPORT_ME_CONTENT_SETTINGS_CONFIG = () => ({
1666
1694
  label: contentSettingsTr(`itemStyleLabel`),
1667
1695
  },
1668
1696
  buttonTextStyle: DEFAULT_BUTTON_TEXT_STYLE_FIELD(),
1697
+ ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
1669
1698
  },
1670
1699
  isEnabled: (features) => features.canAddRequestPaymentContents,
1671
1700
  isLocked: false,
@@ -1791,6 +1820,7 @@ export const CONTACT_FORM_SETTINGS_CONFIG = () => ({
1791
1820
  variant: 'icon',
1792
1821
  visibilityAssessor: brandSiteTypeVisibilityAssessor,
1793
1822
  },
1823
+ ...PADDING_CONTROL_FIELDS(CONTACT_FORM_GROUPS.style),
1794
1824
  titleStyle: DEFAULT_TITLE_STYLE_SETTINGS_FILED_WITH_TITLE(),
1795
1825
  descriptionStyle: DEFAULT_DESCRIPTION_STYLE_FILED(),
1796
1826
  buttonTextStyle: DEFAULT_BUTTON_TEXT_STYLE_FIELD(),
@@ -1848,6 +1878,7 @@ export const BANNER_SECTION_SETTINGS_CONFIG = () => ({
1848
1878
  groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.style,
1849
1879
  variant: 'icon',
1850
1880
  },
1881
+ ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
1851
1882
  overlayColor: {
1852
1883
  type: 'color',
1853
1884
  title: contentSettingsTr(`overlayColorTitle`),
@@ -2063,6 +2094,7 @@ export const ABOUT_SECTION_SETTINGS_CONFIG = () => ({
2063
2094
  groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.style,
2064
2095
  variant: 'icon',
2065
2096
  },
2097
+ ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
2066
2098
  titleStyle: DEFAULT_TITLE_STYLE_SETTINGS_FILED_WITH_TITLE(),
2067
2099
  paragraphStyle: {
2068
2100
  type: 'text-style',
@@ -2145,6 +2177,7 @@ export const IMAGES_SECTION_SETTINGS_CONFIG = () => ({
2145
2177
  ],
2146
2178
  fields: {
2147
2179
  displayStyle: TEXT_MEDIA_DISPLAY_STYLE_FIELD(MEDIA_TYPES.image),
2180
+ ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
2148
2181
  aspectRatio: {
2149
2182
  type: 'radio',
2150
2183
  role: 'multi',
@@ -2227,6 +2260,7 @@ export const TESTIMONIALS_SECTION_SETTINGS_CONFIG = () => ({
2227
2260
  groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.style,
2228
2261
  variant: 'icon',
2229
2262
  },
2263
+ ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
2230
2264
  title: {
2231
2265
  type: 'text',
2232
2266
  placeholder: contentSettingsTr(`titlePlaceholder`),
@@ -2334,6 +2368,7 @@ export const SOCIAL_LINKS_SETTINGS_CONFIG = () => ({
2334
2368
  optionsConvertor: socialLinksIconDisplayStyleConvertor,
2335
2369
  variant: 'icon',
2336
2370
  },
2371
+ ...PADDING_CONTROL_FIELDS(SOCIAL_LINKS_GROUPS.style),
2337
2372
  titleStyle: {
2338
2373
  type: 'text-style',
2339
2374
  groupId: SOCIAL_LINKS_GROUPS.style,
@@ -2442,6 +2477,7 @@ export const SHAPES_SECTION_SETTINGS_CONFIG = () => ({
2442
2477
  ],
2443
2478
  fields: {
2444
2479
  displayStyle: TEXT_MEDIA_DISPLAY_STYLE_FIELD(MEDIA_TYPES.shape),
2480
+ ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
2445
2481
  size: IMAGE_SIZE_FIELD(),
2446
2482
  title: TEXT_MEDIA_TITLE_FIELD(),
2447
2483
  description: TEXT_MEDIA_DESCRIPTION_FIELD(),
@@ -2477,6 +2513,7 @@ export const SHAPES_SECTION_SETTINGS_CONFIG = () => ({
2477
2513
  ? MAX_BS_MEDIA_AND_IMAGE_ITEMS
2478
2514
  : MAX_BP_MEDIA_AND_IMAGE_ITEMS,
2479
2515
  },
2516
+ ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
2480
2517
  },
2481
2518
  isEnabled: true,
2482
2519
  isLocked: false,
@@ -2530,6 +2567,7 @@ export const SHOP_SECTION_SETTINGS_CONFIG = () => ({
2530
2567
  optionsConvertor: shopAspectRatioConvertor,
2531
2568
  visibilityAssessor: shopImageOptionVisibilityAssessor,
2532
2569
  },
2570
+ ...PADDING_CONTROL_FIELDS(REQUEST_PAYMENT_GROUPS.style),
2533
2571
  title: {
2534
2572
  type: 'title',
2535
2573
  groupId: REQUEST_PAYMENT_GROUPS.settings,
@@ -2688,6 +2726,7 @@ export const BOOKING_SECTION_SETTINGS_CONFIG = () => ({
2688
2726
  groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.settings,
2689
2727
  visibilityAssessor: (c, b) => personalisationOverrideVisibility(c, b, 'buttonText'),
2690
2728
  },
2729
+ ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
2691
2730
  backgroundStyle: {
2692
2731
  type: 'color',
2693
2732
  groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.style,
@@ -1,4 +1,4 @@
1
- import { ALIGN_CENTERED, ALIGN_LEFT_ALIGNED, ALIGN_LEFT_FULL_IMAGE, ALIGN_RIGHT_ALIGNED, ALIGN_RIGHT_FULL_IMAGE, TEXT_ONLY, } from '@brand-page/constants';
1
+ import { ALIGN_CENTERED, ALIGN_LEFT_ALIGNED, ALIGN_LEFT_FULL_IMAGE, ALIGN_RIGHT_ALIGNED, ALIGN_RIGHT_FULL_IMAGE, TEXT_ONLY, ABOUT_DEFAULT_PADDING, } from '@brand-page/constants';
2
2
  export const aboutDisplayStyleConvertor = {
3
3
  convertBackToMultipleValues: true,
4
4
  convert(value) {
@@ -58,10 +58,16 @@ export const aboutDisplayStyleConvertor = {
58
58
  },
59
59
  convertBack(config) {
60
60
  const selectedOption = config.options.find((v) => v.isSelected);
61
+ // Switching display style adopts that style's canonical look — like the
62
+ // textAlign reset below — including its default block padding (a flat 32
63
+ // for every About style).
64
+ const padding = ABOUT_DEFAULT_PADDING;
61
65
  if (!selectedOption || selectedOption.value === ALIGN_CENTERED) {
62
66
  const textAlign = 'center';
63
67
  return {
64
68
  displayStyle: selectedOption?.value,
69
+ topPadding: padding,
70
+ bottomPadding: padding,
65
71
  titleStyle: {
66
72
  textAlign,
67
73
  },
@@ -73,6 +79,8 @@ export const aboutDisplayStyleConvertor = {
73
79
  const textAlign = 'left';
74
80
  return {
75
81
  displayStyle: selectedOption?.value,
82
+ topPadding: padding,
83
+ bottomPadding: padding,
76
84
  titleStyle: {
77
85
  textAlign,
78
86
  },
@@ -1,4 +1,4 @@
1
- import { ALIGN_CENTERED, ALIGN_LEFT_ALIGNED, ALIGN_RIGHT_ALIGNED, BIG_IMAGE, ALIGN_LEFT_FULL_IMAGE, ALIGN_RIGHT_FULL_IMAGE, ALIGN_LEFT_BIG_IMAGE, ALIGN_CARD_CENTER_IMAGE, ALIGN_CARD_LEFT_IMAGE, ALIGN_TOP_CARD_IMAGE, ALIGN_BOTTOM_CARD_IMAGE, ALIGN_MIDDLE_CARD_IMAGE, ALIGN_TOP_FULL_IMAGE, ALIGN_BOTTOM_FULL_IMAGE, ALIGN_MIDDLE_FULL_IMAGE, } from '@brand-page/constants';
1
+ import { ALIGN_CENTERED, ALIGN_LEFT_ALIGNED, ALIGN_RIGHT_ALIGNED, BIG_IMAGE, ALIGN_LEFT_FULL_IMAGE, ALIGN_RIGHT_FULL_IMAGE, ALIGN_LEFT_BIG_IMAGE, ALIGN_CARD_CENTER_IMAGE, ALIGN_CARD_LEFT_IMAGE, ALIGN_TOP_CARD_IMAGE, ALIGN_BOTTOM_CARD_IMAGE, ALIGN_MIDDLE_CARD_IMAGE, ALIGN_TOP_FULL_IMAGE, ALIGN_BOTTOM_FULL_IMAGE, ALIGN_MIDDLE_FULL_IMAGE, bannerDisplayStyleDefaultPadding, } from '@brand-page/constants';
2
2
  export const bannerAlignDisplayStyleConvertor = {
3
3
  convertBackToMultipleValues: true,
4
4
  convert(value) {
@@ -143,8 +143,14 @@ export const bannerAlignDisplayStyleConvertor = {
143
143
  selectedOption.value === ALIGN_MIDDLE_FULL_IMAGE) {
144
144
  textAlign = 'center';
145
145
  }
146
+ // Switching display style adopts that style's canonical look — like the
147
+ // textAlign resets above — including its default block padding. Full-bleed
148
+ // image styles default to 0 (image flush to the edges); the rest to 32.
149
+ const padding = bannerDisplayStyleDefaultPadding(selectedOption?.value);
146
150
  return {
147
151
  displayStyle: selectedOption?.value,
152
+ topPadding: padding,
153
+ bottomPadding: padding,
148
154
  titleStyle: {
149
155
  textAlign,
150
156
  },
@@ -1,4 +1,4 @@
1
- import { ALIGN_CENTERED, ALIGN_LEFT_FULL_IMAGE, ALIGN_RIGHT_FULL_IMAGE, ALIGN_CARD_CENTER_IMAGE, TEXT_ONLY, ALIGN_CARD_CENTER, } from '@brand-page/constants';
1
+ import { ALIGN_CENTERED, ALIGN_LEFT_FULL_IMAGE, ALIGN_RIGHT_FULL_IMAGE, ALIGN_CARD_CENTER_IMAGE, TEXT_ONLY, ALIGN_CARD_CENTER, CONTACT_FORM_LAYOUT_DEFAULT_PADDING, } from '@brand-page/constants';
2
2
  export const contactLayoutStyleConvertor = {
3
3
  convertBackToMultipleValues: true,
4
4
  convert(value) {
@@ -64,8 +64,13 @@ export const contactLayoutStyleConvertor = {
64
64
  selectedOption?.value === ALIGN_RIGHT_FULL_IMAGE) {
65
65
  textAlign = 'left';
66
66
  }
67
+ // Switching layout adopts that layout's canonical look — same as the
68
+ // textAlign resets below — including its default block padding.
69
+ const padding = CONTACT_FORM_LAYOUT_DEFAULT_PADDING[selectedOption?.value ?? ''] ?? 0;
67
70
  return {
68
71
  layoutStyle: selectedOption?.value,
72
+ topPadding: padding,
73
+ bottomPadding: padding,
69
74
  titleStyle: {
70
75
  textAlign,
71
76
  },
@@ -1,4 +1,4 @@
1
- import { BrandPageModel, PageStyles, FORM_FIELD_IDS, PAYMENT_OPTION_DISPLAY_TYPES, PAYMENT_OPTION_IMAGE_TYPES, SOCIAL_LINKS_ICON_DISPLAY_STYLES, PageHeaderMobile, PageHeaderDesktop, PageFooterMobile, PageFooterDesktop, MEDIA_TYPES, BUTTON_LINK_TYPE, DISPLAY_STYLE_PREVIEW, SUPPORT_ME_CUSTOM_PRODUCT_NAME, DEFAULT_LOGO_HEIGHT, DEFAULT_LOGO_WIDTH, FONT_SIZE_BODY, LINE_HEIGHT_BODY, TEXT_STYLE_TYPES, TEXT_COLUMNS, DEFAULT_LOGO_BACKGROUND_COLOR_RGB, DEFAULT_LOGO_TEXT_COLOR_RGB, EMPTY_LOGO_IMAGE_MODEL, BRAND_PAGE_TYPES, SENSITIVE_CONTENT_TYPES, } from '@brand-page';
1
+ import { BrandPageModel, PageStyles, FORM_FIELD_IDS, PAYMENT_OPTION_DISPLAY_TYPES, PAYMENT_OPTION_IMAGE_TYPES, SOCIAL_LINKS_ICON_DISPLAY_STYLES, PageHeaderMobile, PageHeaderDesktop, PageFooterMobile, PageFooterDesktop, MEDIA_TYPES, BUTTON_LINK_TYPE, DISPLAY_STYLE_PREVIEW, SUPPORT_ME_CUSTOM_PRODUCT_NAME, DEFAULT_LOGO_HEIGHT, DEFAULT_LOGO_WIDTH, FONT_SIZE_BODY, LINE_HEIGHT_BODY, TEXT_STYLE_TYPES, TEXT_COLUMNS, DEFAULT_LOGO_BACKGROUND_COLOR_RGB, DEFAULT_LOGO_TEXT_COLOR_RGB, EMPTY_LOGO_IMAGE_MODEL, BRAND_PAGE_TYPES, SENSITIVE_CONTENT_TYPES, CONTACT_FORM_LAYOUT_DEFAULT_PADDING, TESTIMONIAL_DEFAULT_PADDING, } from '@brand-page';
2
2
  import * as uuid from 'uuid';
3
3
  import { getColorShades } from '@brand-page/utils';
4
4
  import { contentSettingsTr } from '@src/composables/useTranslate';
@@ -101,6 +101,8 @@ export const createInitialImageGalleryContent = () => {
101
101
  galleryStyles: {
102
102
  galleryType: 'grid',
103
103
  },
104
+ topPadding: 0,
105
+ bottomPadding: 0,
104
106
  };
105
107
  };
106
108
  export const createInitialVideoContent = () => {
@@ -111,6 +113,8 @@ export const createInitialVideoContent = () => {
111
113
  displayStyle: DISPLAY_STYLE_PREVIEW,
112
114
  mute: false,
113
115
  videoUrl: '',
116
+ topPadding: 0,
117
+ bottomPadding: 0,
114
118
  };
115
119
  };
116
120
  export const createInitialProfileContent = (options) => {
@@ -160,6 +164,8 @@ export const createInitialTextContent = (options) => {
160
164
  ]
161
165
  : undefined,
162
166
  type: 'text',
167
+ topPadding: 12,
168
+ bottomPadding: 12,
163
169
  textSize: {
164
170
  fontSize: FONT_SIZE_BODY,
165
171
  lineHeight: LINE_HEIGHT_BODY,
@@ -201,12 +207,16 @@ export const createInitialMapContent = () => {
201
207
  formattedAddress: '',
202
208
  placeId: '',
203
209
  },
210
+ topPadding: 0,
211
+ bottomPadding: 0,
204
212
  };
205
213
  };
206
214
  export const createInitialMailingListContent = (options) => {
207
215
  return {
208
216
  id: uuid.v4(),
209
217
  type: 'mailing-list',
218
+ topPadding: 0,
219
+ bottomPadding: 0,
210
220
  title: contentSettingsTr(`mailingListTitle`),
211
221
  buttonText: contentSettingsTr(`subscribePlaceholder`),
212
222
  acceptedFields: 'emailOnly',
@@ -237,6 +247,8 @@ export const createInitialRequestPaymentContent = (options) => {
237
247
  successMessage: '',
238
248
  title: contentSettingsTr(`buyNowTitle`),
239
249
  type: 'request-payment',
250
+ topPadding: 0,
251
+ bottomPadding: 0,
240
252
  fillColor: {},
241
253
  defaultBorderColor: {},
242
254
  selectedBorderColor: {},
@@ -266,6 +278,8 @@ export const createInitialShopContent = (options) => {
266
278
  return {
267
279
  id: uuid.v4(),
268
280
  description: '',
281
+ topPadding: 16,
282
+ bottomPadding: 16,
269
283
  products: [],
270
284
  displayStyle: PAYMENT_OPTION_DISPLAY_TYPES.thumbnail,
271
285
  aspectRatio: PAYMENT_OPTION_IMAGE_TYPES.auto,
@@ -322,6 +336,8 @@ export const createInitialSupportMeContent = (options) => {
322
336
  successMessage: contentSettingsTr(`successSupportPlaceholder`),
323
337
  description: contentSettingsTr(`makeADonationDescription`),
324
338
  type: 'support-me',
339
+ topPadding: 0,
340
+ bottomPadding: 0,
325
341
  titleStyle: {
326
342
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
327
343
  textStyleType: TEXT_STYLE_TYPES.headings,
@@ -354,13 +370,19 @@ export const createInitialContactFormContent = (options) => {
354
370
  typeof options?.userState.emailAddress === 'undefined') {
355
371
  console.error('userState.emailAddress should not be undefined');
356
372
  }
373
+ // New blocks inherit the padding their initial layout previously had
374
+ // hard-coded — same source as the migration backfill for existing pages.
375
+ const layoutStyle = options?.brandPageType === 'brandSite' ? 'center-card-aligned' : '';
376
+ const padding = CONTACT_FORM_LAYOUT_DEFAULT_PADDING[layoutStyle] ?? 0;
357
377
  return {
358
378
  id: uuid.v4(),
359
379
  title: contentSettingsTr(`contactUsTitle`),
360
380
  description: '',
361
381
  buttonText: contentSettingsTr(`sendPlaceholder`),
362
382
  displayStyle: DISPLAY_STYLE_PREVIEW,
363
- layoutStyle: options?.brandPageType === 'brandSite' ? 'center-card-aligned' : '',
383
+ layoutStyle,
384
+ topPadding: padding,
385
+ bottomPadding: padding,
364
386
  imageUrl: '',
365
387
  fields: [
366
388
  {
@@ -450,6 +472,8 @@ export const createInitialContactFormContent = (options) => {
450
472
  export const createInitialBannerSectionContent = (options) => {
451
473
  return {
452
474
  id: uuid.v4(),
475
+ topPadding: 32,
476
+ bottomPadding: 32,
453
477
  imageUrl: '',
454
478
  title: contentSettingsTr(`thisIsABannerTitle`),
455
479
  description: '',
@@ -493,6 +517,8 @@ export const createInitialBookingSectionContent = (options) => {
493
517
  buttonText: contentSettingsTr(`bookNowLabel`),
494
518
  url: '',
495
519
  type: 'booking-section',
520
+ topPadding: 32,
521
+ bottomPadding: 32,
496
522
  descriptionStyle: {
497
523
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
498
524
  textStyleType: TEXT_STYLE_TYPES.paragraphs,
@@ -519,6 +545,8 @@ export const createInitialImagesSectionContent = (options) => {
519
545
  title: contentSettingsTr(`imagesTitle`),
520
546
  description: '',
521
547
  type: 'images-section',
548
+ topPadding: 32,
549
+ bottomPadding: 32,
522
550
  displayStyle: 'centered',
523
551
  aspectRatio: 'Default',
524
552
  areImagesFullWidth: false,
@@ -571,6 +599,8 @@ export const createInitialTestimonialSectionContent = (options) => {
571
599
  title: contentSettingsTr(`testimonialsTitle`),
572
600
  type: 'testimonial-section',
573
601
  displayStyle: 'centered',
602
+ topPadding: TESTIMONIAL_DEFAULT_PADDING,
603
+ bottomPadding: TESTIMONIAL_DEFAULT_PADDING,
574
604
  items: [],
575
605
  titleStyle: {
576
606
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
@@ -616,6 +646,8 @@ export const createInitialAboutSectionContent = (options) => {
616
646
  textAlign: 'center',
617
647
  },
618
648
  backgroundStyle: {},
649
+ topPadding: 32,
650
+ bottomPadding: 32,
619
651
  };
620
652
  };
621
653
  export const createInitialDividerSectionContent = () => {
@@ -668,6 +700,8 @@ export const createInitialSocialLinksContent = (options) => {
668
700
  return {
669
701
  id: uuid.v4(),
670
702
  type: 'social-links',
703
+ topPadding: 32,
704
+ bottomPadding: 32,
671
705
  title: contentSettingsTr(`followUsOnTitle`),
672
706
  links: [
673
707
  {
@@ -718,6 +752,8 @@ export const createInitialShapesSectionContent = (options) => {
718
752
  title: contentSettingsTr(`shapesTitle`),
719
753
  description: '',
720
754
  type: 'shapes-section',
755
+ topPadding: 32,
756
+ bottomPadding: 32,
721
757
  displayStyle: 'centered',
722
758
  items: [
723
759
  {
@@ -5054,6 +5054,8 @@ export declare const useAiCheckpointStore: import("pinia").StoreDefinition<"aiCh
5054
5054
  id: string;
5055
5055
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
5056
5056
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
5057
+ topPadding?: number | undefined;
5058
+ bottomPadding?: number | undefined;
5057
5059
  imageUrlOverride?: string | undefined;
5058
5060
  imageUrlsOverride?: string | undefined;
5059
5061
  avatarImageUrlOverride?: string | undefined;
@@ -10160,6 +10162,8 @@ export declare const useAiCheckpointStore: import("pinia").StoreDefinition<"aiCh
10160
10162
  id: string;
10161
10163
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
10162
10164
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
10165
+ topPadding?: number | undefined;
10166
+ bottomPadding?: number | undefined;
10163
10167
  imageUrlOverride?: string | undefined;
10164
10168
  imageUrlsOverride?: string | undefined;
10165
10169
  avatarImageUrlOverride?: string | undefined;
@@ -15272,6 +15276,8 @@ export declare const useAiCheckpointStore: import("pinia").StoreDefinition<"aiCh
15272
15276
  id: string;
15273
15277
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
15274
15278
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
15279
+ topPadding?: number | undefined;
15280
+ bottomPadding?: number | undefined;
15275
15281
  imageUrlOverride?: string | undefined;
15276
15282
  imageUrlsOverride?: string | undefined;
15277
15283
  avatarImageUrlOverride?: string | undefined;
@@ -20378,6 +20384,8 @@ export declare const useAiCheckpointStore: import("pinia").StoreDefinition<"aiCh
20378
20384
  id: string;
20379
20385
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
20380
20386
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
20387
+ topPadding?: number | undefined;
20388
+ bottomPadding?: number | undefined;
20381
20389
  imageUrlOverride?: string | undefined;
20382
20390
  imageUrlsOverride?: string | undefined;
20383
20391
  avatarImageUrlOverride?: string | undefined;
@@ -25490,6 +25498,8 @@ export declare const useAiCheckpointStore: import("pinia").StoreDefinition<"aiCh
25490
25498
  id: string;
25491
25499
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
25492
25500
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
25501
+ topPadding?: number | undefined;
25502
+ bottomPadding?: number | undefined;
25493
25503
  imageUrlOverride?: string | undefined;
25494
25504
  imageUrlsOverride?: string | undefined;
25495
25505
  avatarImageUrlOverride?: string | undefined;
@@ -30596,6 +30606,8 @@ export declare const useAiCheckpointStore: import("pinia").StoreDefinition<"aiCh
30596
30606
  id: string;
30597
30607
  type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
30598
30608
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
30609
+ topPadding?: number | undefined;
30610
+ bottomPadding?: number | undefined;
30599
30611
  imageUrlOverride?: string | undefined;
30600
30612
  imageUrlsOverride?: string | undefined;
30601
30613
  avatarImageUrlOverride?: string | undefined;