@designcrowd/library.brand-page 5.19.0 → 5.19.1-error-html2canvas-2

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 (455) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DsoA9hc-.js → CreatedOnBrandCrowd-de-de-DmKe7W8L.js} +3 -3
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-BP6NEQ66.js → CreatedOnBrandCrowd-en-us-D2EeiNep.js} +3 -3
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-D424uM1Z.js → CreatedOnBrandCrowd-es-es-BqVwNY1D.js} +3 -3
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-CJvuLTkB.js → CreatedOnBrandCrowd-fr-ca-C756a27-.js} +3 -3
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-CJvuLTkB.js → CreatedOnBrandCrowd-fr-fr-C756a27-.js} +3 -3
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-Cc9L314u.js → CreatedOnBrandCrowd-pt-br-FNHAnZUw.js} +3 -3
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-Cc9L314u.js → CreatedOnBrandCrowd-pt-pt-FNHAnZUw.js} +3 -3
  8. package/lib/src/{CreatedOnDcom-de-de-CX-295FH.js → CreatedOnDcom-de-de-8AZZFmDt.js} +3 -3
  9. package/lib/src/{CreatedOnDcom-en-us-UFlORUgZ.js → CreatedOnDcom-en-us-DizTP32i.js} +3 -3
  10. package/lib/src/{CreatedOnDcom-es-es-D1tRpcq9.js → CreatedOnDcom-es-es-qnp9_n_A.js} +3 -3
  11. package/lib/src/{CreatedOnDcom-fr-ca-Dz_ry9uY.js → CreatedOnDcom-fr-ca-jUs352uK.js} +3 -3
  12. package/lib/src/{CreatedOnDcom-fr-fr-8Ydu6b1T.js → CreatedOnDcom-fr-fr-CTxXtHyk.js} +3 -3
  13. package/lib/src/{CreatedOnDcom-pt-br-COwvw5k4.js → CreatedOnDcom-pt-br-nQHj8P7d.js} +3 -3
  14. package/lib/src/{CreatedOnDcom-pt-pt-CB72-eaa.js → CreatedOnDcom-pt-pt-DJmVYQuL.js} +3 -3
  15. package/lib/src/brand-page/clients/brand-page.client.d.ts +9 -9
  16. package/lib/src/brand-page/components/{testimonial-section/TestimonialSection.mixin.d.ts → banner-section/BannerSection.mixin.d.ts} +43 -37
  17. package/lib/src/brand-page/components/banner-section/BannerSection.mixin.js +178 -0
  18. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +4 -0
  19. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +8 -4
  20. package/lib/src/brand-page/components/image-gallery/ImageGallery.mixin.d.ts +4 -0
  21. package/lib/src/brand-page/components/image-gallery/ImageGallery.mixin.js +4 -0
  22. package/lib/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.d.ts +0 -1
  23. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.d.ts +4 -0
  24. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +4 -1
  25. package/lib/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.d.ts +4 -2
  26. package/lib/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.js +1 -0
  27. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.d.ts +4 -2
  28. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.js +5 -4
  29. package/lib/src/brand-page/components/page/Page.mixin.d.ts +1 -1
  30. package/lib/src/brand-page/components/page/PageComponent.mixin.d.ts +1 -1
  31. package/lib/src/brand-page/components/payment/Payment.mixin.d.ts +3 -3
  32. package/lib/src/brand-page/components/payment/__fixtures__/request-payment.d.ts +13 -13
  33. package/lib/src/brand-page/components/payment/__fixtures__/support-me.d.ts +13 -13
  34. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.d.ts +4 -0
  35. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.js +4 -0
  36. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.d.ts +4 -0
  37. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.js +4 -1
  38. package/lib/src/brand-page/components/video/Video.mixin.d.ts +4 -0
  39. package/lib/src/brand-page/components/video/Video.mixin.js +4 -0
  40. package/lib/src/brand-page/constants/font.constants.d.ts +4 -4
  41. package/lib/src/brand-page/constants/font.constants.js +4 -4
  42. package/lib/src/brand-page/constants/misc.constants.d.ts +35 -0
  43. package/lib/src/brand-page/constants/misc.constants.js +51 -0
  44. package/lib/src/brand-page/constants/sections/footer-display.constants.js +1 -1
  45. package/lib/src/brand-page/models/content.model.d.ts +2 -0
  46. package/lib/src/brand-page/models/index.d.ts +2 -1
  47. package/lib/src/brand-page/models/index.js +3 -0
  48. package/lib/src/brand-page/models/payment.model.d.ts +1 -1
  49. package/lib/src/brand-page/utils/content-padding.util.d.ts +13 -0
  50. package/lib/src/brand-page/utils/content-padding.util.js +10 -0
  51. package/lib/src/brand-page/utils/index.d.ts +1 -0
  52. package/lib/src/brand-page/utils/index.js +1 -0
  53. package/lib/src/brand-page/utils/migration/migration-17.d.ts +2 -0
  54. package/lib/src/brand-page/utils/migration/migration-17.js +60 -0
  55. package/lib/src/brand-page/utils/migration.util.js +10 -0
  56. package/lib/src/brand-page/utils/personalisation.util.js +72 -14
  57. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +21 -19
  58. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.js +1 -0
  59. package/lib/src/brand-page-maker/components/admin-background-settings/AdminBackgroundSettings.mixin.d.ts +16 -10
  60. package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.d.ts +5 -3
  61. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +193 -170
  62. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +3 -0
  63. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.js +1 -0
  64. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +12 -12
  65. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.stories.js +2 -2
  66. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-payment.js +0 -7
  67. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +162 -149
  68. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +21 -21
  69. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.js +1 -1
  70. package/lib/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.d.ts +4 -2
  71. package/lib/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.js +1 -0
  72. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.d.ts +4 -2
  73. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.js +1 -0
  74. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.d.ts +5 -2
  75. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.js +1 -0
  76. package/lib/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.d.ts +4 -2
  77. package/lib/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.js +1 -0
  78. package/lib/src/brand-page-maker/components/device/Device.mixin.d.ts +4 -2
  79. package/lib/src/brand-page-maker/components/device/Device.mixin.js +1 -0
  80. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.d.ts +4 -2
  81. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.js +1 -0
  82. package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +3 -3
  83. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +11 -11
  84. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +27 -25
  85. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.js +1 -0
  86. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +27 -27
  87. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.js +1 -1
  88. package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +17 -12
  89. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +12 -12
  90. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +30 -32
  91. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.js +16 -5
  92. package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +11 -11
  93. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +1 -1
  94. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +1 -1
  95. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +6 -6
  96. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +2 -2
  97. package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +6 -6
  98. package/lib/src/brand-page-maker/constants/config-settings-constant.js +40 -1
  99. package/lib/src/brand-page-maker/convertors/about-display-style.convertor.js +9 -1
  100. package/lib/src/brand-page-maker/convertors/banner-align-display-style.convertor.js +7 -1
  101. package/lib/src/brand-page-maker/convertors/contact-layout-style.convertor.js +6 -1
  102. package/lib/src/brand-page-maker/convertors/text-image-display-style.convertor.d.ts +1 -1
  103. package/lib/src/brand-page-maker/convertors/text-image-display-style.convertor.js +1 -1
  104. package/lib/src/brand-page-maker/models/content-settings.d.ts +1 -1
  105. package/lib/src/brand-page-maker/models/content-settings.js +39 -2
  106. package/lib/src/brand-page-maker/models/navigation-style-configs.js +1 -1
  107. package/lib/src/brand-page-maker/routing/brand-page-maker-router.d.ts +1 -2
  108. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +378 -360
  109. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +5 -4
  110. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.js +8 -5
  111. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +3 -1
  112. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +7 -3
  113. package/lib/src/brand-page-maker/stores/history/history-store.d.ts +15 -15
  114. package/lib/src/brand-page-maker/stores/ui/ui-store.d.ts +6 -0
  115. package/lib/src/brand-page-maker/stores/ui/ui-store.js +8 -0
  116. package/lib/src/brand-page-maker/utils/content-settings.util.js +1 -1
  117. package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +1 -1
  118. package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +4 -4
  119. package/lib/src/{bundled-translations-D1q3rSEz.js → bundled-translations-BUyt4scr.js} +9 -9
  120. package/lib/src/{bundled-translations.de-DE-BxqLLwbh.js → bundled-translations.de-DE-DEw_OVai.js} +1 -1
  121. package/lib/src/{bundled-translations.es-ES-uh249NlJ.js → bundled-translations.es-ES-CFKWmkgY.js} +17 -17
  122. package/lib/src/{bundled-translations.fr-CA-BEQmv2fX.js → bundled-translations.fr-CA-DCl5LJS4.js} +1 -1
  123. package/lib/src/{bundled-translations.fr-FR-BnNuCojH.js → bundled-translations.fr-FR-B5BjgllA.js} +1 -1
  124. package/lib/src/{bundled-translations.pt-BR-CJUOxVlq.js → bundled-translations.pt-BR-5PWpMPuM.js} +1 -1
  125. package/lib/src/{bundled-translations.pt-PT-Ds9cMEqK.js → bundled-translations.pt-PT-B9_wN0HR.js} +9 -9
  126. package/lib/src/bundles/bundled-translations.de-DE.json +2 -0
  127. package/lib/src/bundles/bundled-translations.es-ES.json +2 -0
  128. package/lib/src/bundles/bundled-translations.fr-CA.json +2 -0
  129. package/lib/src/bundles/bundled-translations.fr-FR.json +2 -0
  130. package/lib/src/bundles/bundled-translations.json +2 -0
  131. package/lib/src/bundles/bundled-translations.pt-BR.json +2 -0
  132. package/lib/src/bundles/bundled-translations.pt-PT.json +2 -0
  133. package/lib/src/clients/brand-page-client.d.ts +16 -15
  134. package/lib/src/clients/design-template-client.d.ts +3 -0
  135. package/lib/src/clients/media-client.d.ts +2 -2
  136. package/lib/src/clients/models.d.ts +2 -0
  137. package/lib/src/composables/useSnapshot.js +18 -18
  138. package/lib/src/css/library.brand-page-brandCrowd.min.css +441 -437
  139. package/lib/src/css/library.brand-page-brandPage.min.css +719 -437
  140. package/lib/src/css/library.brand-page-designCom.min.css +441 -437
  141. package/lib/src/css/library.brand-page-preview.min.css +697 -437
  142. package/lib/src/index.d.ts +1 -1
  143. package/lib/src/index.mjs +16 -15
  144. package/lib/src/{lib-tHPi9EKk.js → lib-DityivZa.js} +37011 -33834
  145. package/lib/src/lib.js +1 -1
  146. package/lib/src/metadata-builder/builders/footer-builder.js +90 -65
  147. package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.js +1 -1
  148. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +1 -1
  149. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +1 -1
  150. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +1 -1
  151. package/lib/src/metadata-builder/builders/shape-color-utils.js +1 -1
  152. package/lib/src/plugins/google-maps-plugin/google-maps-plugin.d.ts +1 -1
  153. package/lib/src/plugins/google-maps-plugin/google-maps-plugin.js +8 -8
  154. package/lib/src/shared/background-settings/components/background-shapes/BackgroundShapeSettings.mixin.d.ts +13 -13
  155. package/lib/src/shared/background-settings/store/background-settings-store.d.ts +3 -3
  156. package/lib/src/shared/color-picker/components/ColorPicker.mixin.d.ts +4 -2
  157. package/lib/src/shared/color-picker/components/ColorPicker.mixin.js +2 -2
  158. package/lib/src/shared/color-picker/components/ColorPickerSwatch.mixin.d.ts +4 -2
  159. package/lib/src/shared/color-picker/components/ColorPickerSwatch.mixin.js +1 -0
  160. package/lib/src/shared/confirm-modal/ConfirmModal.mixin.d.ts +5 -2
  161. package/lib/src/shared/confirm-modal/ConfirmModal.mixin.js +1 -0
  162. package/lib/src/shared/content-settings/components/GenericTextInput.mixin.d.ts +0 -1
  163. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +145 -129
  164. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +2 -1
  165. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +125 -110
  166. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +96 -81
  167. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.js +5 -0
  168. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +129 -109
  169. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +1 -14
  170. package/lib/src/shared/content-settings/components/email-field/EmailField.mixin.d.ts +0 -1
  171. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +84 -70
  172. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.js +4 -3
  173. package/lib/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.d.ts +4 -4
  174. package/lib/src/shared/content-settings/components/icon-library/IconLibrary.mixin.d.ts +3 -1
  175. package/lib/src/shared/content-settings/components/icon-library/IconLibrary.mixin.js +1 -0
  176. package/lib/src/shared/content-settings/components/images-field/ImagesField.mixin.d.ts +2 -2
  177. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.d.ts +4 -3
  178. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.js +1 -1
  179. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +40 -40
  180. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigOptionField.mixin.d.ts +5 -6
  181. package/lib/src/shared/content-settings/components/shape-field/ShapeField.mixin.d.ts +0 -1
  182. package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.d.ts +2 -2
  183. package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.js +9 -0
  184. package/lib/src/shared/content-settings/components/tel-field/TelField.mixin.d.ts +0 -1
  185. package/lib/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.d.ts +1 -2
  186. package/lib/src/shared/content-settings/components/text-field/TextField.mixin.d.ts +0 -1
  187. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.d.ts +1 -2
  188. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +1 -1
  189. package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.d.ts +28 -28
  190. package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +0 -1
  191. package/lib/src/shared/content-settings/components/toggle-field/ToggleField.mixin.d.ts +2 -2
  192. package/lib/src/shared/content-settings/components/url-field/UrlField.mixin.d.ts +0 -1
  193. package/lib/src/shared/content-settings/components/youtube-video-field/YoutubeVideoField.mixin.d.ts +0 -1
  194. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +51 -39
  195. package/lib/src/shared/content-settings/utils.js +0 -1
  196. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.d.ts +6 -4
  197. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.js +1 -0
  198. package/lib/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.d.ts +4 -2
  199. package/lib/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.js +1 -0
  200. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +29 -21
  201. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.js +1 -1
  202. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +50 -51
  203. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.d.ts +6 -4
  204. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.js +1 -0
  205. package/lib/src/shared/logo-settings/store/editable-logo-store.js +1 -1
  206. package/lib/src/shared/logo-settings/store/logo-settings-store.d.ts +1 -1
  207. package/lib/src/shared/logo-versions/LogoVersions.mixin.d.ts +13 -5
  208. package/lib/src/shared/logo-versions/LogoVersions.mixin.js +1 -0
  209. package/lib/src/shared/models.d.ts +2 -0
  210. package/lib/src/shared/my-designs/MyDesigns.mixin.d.ts +14 -6
  211. package/lib/src/shared/my-designs/MyDesigns.mixin.js +1 -0
  212. package/lib/src/shared/my-uploads/MyMedia.mixin.d.ts +14 -5
  213. package/lib/src/shared/my-uploads/MyMedia.mixin.js +1 -0
  214. package/lib/src/shared/my-uploads/MyUploads.mixin.d.ts +14 -5
  215. package/lib/src/shared/my-uploads/MyUploads.mixin.js +1 -0
  216. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.d.ts +5 -3
  217. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.js +1 -0
  218. package/lib/src/shared/navigation-style-settings/store/index.d.ts +2 -2
  219. package/lib/src/shared/page-navigation/store/page-navigation-store.d.ts +2 -2
  220. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.d.ts +27 -28
  221. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.js +0 -2
  222. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +204 -177
  223. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +195 -175
  224. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.js +1 -1
  225. package/lib/src/shared/page-settings/store/page-settings-store.d.ts +9 -9
  226. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +39 -39
  227. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.js +0 -1
  228. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +18 -18
  229. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +6 -6
  230. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +66 -60
  231. package/lib/src/shared/style-settings/store/style-settings-store.d.ts +1 -1
  232. package/lib/src/shared/style-settings/store/style-settings-store.js +1 -1
  233. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +20 -450
  234. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.js +2 -2
  235. package/lib/src/shared/template-settings/models.d.ts +1 -0
  236. package/lib/src/shared/template-settings/store/template-settings-store.d.ts +4 -0
  237. package/lib/src/shared/template-settings/store/template-settings-store.js +79 -11
  238. package/lib/src/shared/unsplash-library/UnsplashLibrary.mixin.d.ts +9 -4
  239. package/lib/src/utils/minify-brand-page-metadata.js +11 -1
  240. package/package.json +61 -57
  241. package/src/brand-page/components/about-section/AboutSection.vue +10 -4
  242. package/src/brand-page/components/about-section/AboutSection.vue.test.ts +7 -5
  243. package/src/brand-page/components/banner-section/BannerSection.mixin.ts +210 -0
  244. package/src/brand-page/components/banner-section/BannerSection.vue +11 -4
  245. package/src/brand-page/components/booking-section/BookingSection.vue +11 -3
  246. package/src/brand-page/components/brand-page-footer/BrandPageFooter.vue +1 -1
  247. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +12 -6
  248. package/src/brand-page/components/contact-form/ContactForm.vue +105 -104
  249. package/src/brand-page/components/image/Image.mixin.ts +1 -1
  250. package/src/brand-page/components/image/Image.test.ts +1 -1
  251. package/src/brand-page/components/image-gallery/ImageGallery.mixin.ts +5 -0
  252. package/src/brand-page/components/image-gallery/ImageGallery.vue +1 -1
  253. package/src/brand-page/components/images-section/ImagesSection.vue +0 -1
  254. package/src/brand-page/components/logo/LogoRender.vue +188 -188
  255. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +8 -1
  256. package/src/brand-page/components/mailing-list/MailingList.vue +1 -1
  257. package/src/brand-page/components/map/Map.vue +5 -1
  258. package/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.ts +1 -0
  259. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.ts +15 -6
  260. package/src/brand-page/components/page-footer/PageFooter.vue +1 -0
  261. package/src/brand-page/components/page-header/HeaderLayout.vue +12 -6
  262. package/src/brand-page/components/page-header/PageHeader.vue +1 -0
  263. package/src/brand-page/components/payment/request-payment/RequestPayment.mixin.ts +5 -0
  264. package/src/brand-page/components/payment/request-payment/RequestPayment.vue +1 -0
  265. package/src/brand-page/components/payment/support-me/SupportMe.mixin.ts +8 -1
  266. package/src/brand-page/components/payment/support-me/SupportMe.vue +1 -0
  267. package/src/brand-page/components/shapes-section/ShapesSection.vue +1 -1
  268. package/src/brand-page/components/shop/CartModal.vue +1 -3
  269. package/src/brand-page/components/shop/FeaturedDisplay.vue +2 -2
  270. package/src/brand-page/components/shop/PaymentModal.vue +1 -5
  271. package/src/brand-page/components/shop/ProductDetailModal.vue +1 -1
  272. package/src/brand-page/components/shop/Shop.vue +8 -3
  273. package/src/brand-page/components/shop/TextDisplay.vue +1 -1
  274. package/src/brand-page/components/shop/ThumbnailDisplay.vue +2 -2
  275. package/src/brand-page/components/social-links/SocialLinks.vue +7 -3
  276. package/src/brand-page/components/testimonial-section/TestimonialSection.vue +120 -11
  277. package/src/brand-page/components/text/Text.vue +12 -5
  278. package/src/brand-page/components/text-media-section/TextMediaSection.vue +11 -3
  279. package/src/brand-page/components/text-wrapper/TextWrapper.vue +3 -1
  280. package/src/brand-page/components/video/Video.mixin.ts +5 -0
  281. package/src/brand-page/components/video/Video.vue +1 -1
  282. package/src/brand-page/constants/font.constants.ts +4 -4
  283. package/src/brand-page/constants/misc.constants.ts +58 -0
  284. package/src/brand-page/constants/sections/footer-display.constants.ts +1 -1
  285. package/src/brand-page/models/content.model.ts +2 -0
  286. package/src/brand-page/models/index.ts +4 -0
  287. package/src/brand-page/models/payment.model.ts +2 -1
  288. package/src/brand-page/models/shop.model.ts +0 -2
  289. package/src/brand-page/models/user-personalisation.model.ts +1 -2
  290. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +12 -3
  291. package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +7 -6
  292. package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +14 -12
  293. package/src/brand-page/utils/content-padding.util.test.ts +29 -0
  294. package/src/brand-page/utils/content-padding.util.ts +13 -0
  295. package/src/brand-page/utils/index.ts +1 -0
  296. package/src/brand-page/utils/migration/migration-01_1.ts +1 -1
  297. package/src/brand-page/utils/migration/migration-02.ts +0 -1
  298. package/src/brand-page/utils/migration/migration-03.ts +0 -1
  299. package/src/brand-page/utils/migration/migration-04.ts +0 -1
  300. package/src/brand-page/utils/migration/migration-05.ts +1 -5
  301. package/src/brand-page/utils/migration/migration-05_2.ts +1 -1
  302. package/src/brand-page/utils/migration/migration-08.test.ts +1 -1
  303. package/src/brand-page/utils/migration/migration-17.ts +77 -0
  304. package/src/brand-page/utils/migration.util.test.ts +290 -0
  305. package/src/brand-page/utils/migration.util.ts +11 -0
  306. package/src/brand-page/utils/personalisation.util.test.ts +35 -0
  307. package/src/brand-page/utils/personalisation.util.ts +119 -23
  308. package/src/brand-page/view-models.ts +38 -56
  309. package/src/brand-page-maker/assessors/banner-section-description-visibility.assessor.ts +6 -6
  310. package/src/brand-page-maker/assessors/color-replacement-icon-visibility.assessor.ts +2 -2
  311. package/src/brand-page-maker/assessors/color-replacement-profile-visibility.assessor.ts +2 -2
  312. package/src/brand-page-maker/assessors/color-replacement-visibility.assessor.ts +2 -2
  313. package/src/brand-page-maker/assessors/contact-form-visibility.assessor.ts +14 -14
  314. package/src/brand-page-maker/components/action-bar/ActionBar.mixin.ts +1 -0
  315. package/src/brand-page-maker/components/ai-text-edit/TextBubble.vue +1 -0
  316. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +5 -1
  317. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.ts +1 -0
  318. package/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.stories.ts +2 -5
  319. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +0 -5
  320. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-payment.ts +0 -8
  321. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-site-template.examples.ts +0 -2
  322. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.vue +1 -0
  323. package/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.ts +1 -1
  324. package/src/brand-page-maker/components/color-palette/BpColorPalette.vue +1 -2
  325. package/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.ts +1 -0
  326. package/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.ts +1 -0
  327. package/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.ts +1 -0
  328. package/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.ts +1 -0
  329. package/src/brand-page-maker/components/device/Device.mixin.ts +1 -0
  330. package/src/brand-page-maker/components/navigation/Navigation.mixin.ts +1 -0
  331. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +3 -1
  332. package/src/brand-page-maker/components/sensitive-content/SensitiveContent.vue +1 -4
  333. package/src/brand-page-maker/components/seo-settings/DeleteDomainModal.vue +1 -1
  334. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.ts +1 -0
  335. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.vue +1 -1
  336. package/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.ts +0 -1
  337. package/src/brand-page-maker/components/seo-settings/UrlSettings.vue +0 -1
  338. package/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.vue +1 -5
  339. package/src/brand-page-maker/components/shop/AddOrEditProductContainer.vue +1 -1
  340. package/src/brand-page-maker/components/shop/ReplaceImageSettingsForShop.vue +1 -1
  341. package/src/brand-page-maker/components/social-share/SocialShare.vue +1 -1
  342. package/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.ts +22 -8
  343. package/src/brand-page-maker/components/template-preview/TemplatePreview.vue +5 -10
  344. package/src/brand-page-maker/components/template-preview/TemplatePreviewAiBadge.vue +12 -0
  345. package/src/brand-page-maker/components/video-play/VideoPlayButton.vue +1 -1
  346. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +1 -1
  347. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +6 -6
  348. package/src/brand-page-maker/constants/config-settings-constant.ts +48 -3
  349. package/src/brand-page-maker/convertors/about-display-style.convertor.ts +10 -0
  350. package/src/brand-page-maker/convertors/banner-align-display-style.convertor.ts +8 -0
  351. package/src/brand-page-maker/convertors/contact-layout-style.convertor.test.ts +50 -0
  352. package/src/brand-page-maker/convertors/contact-layout-style.convertor.ts +8 -0
  353. package/src/brand-page-maker/convertors/text-image-display-style.convertor.ts +1 -1
  354. package/src/brand-page-maker/models/button-styles-config.ts +4 -2
  355. package/src/brand-page-maker/models/content-settings-configs.ts +4 -2
  356. package/src/brand-page-maker/models/content-settings.ts +43 -2
  357. package/src/brand-page-maker/models/navigation-style-configs.ts +5 -6
  358. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.ts +0 -1
  359. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.ts +8 -5
  360. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +1 -3
  361. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +12 -4
  362. package/src/brand-page-maker/stores/ui/ui-store.ts +16 -0
  363. package/src/brand-page-maker/utils/content-settings.util.ts +1 -1
  364. package/src/brand-page-maker/utils/rich-text-editor.util.ts +4 -4
  365. package/src/bundles/bundled-translations.de-DE.json +2 -0
  366. package/src/bundles/bundled-translations.es-ES.json +2 -0
  367. package/src/bundles/bundled-translations.fr-CA.json +2 -0
  368. package/src/bundles/bundled-translations.fr-FR.json +2 -0
  369. package/src/bundles/bundled-translations.json +2 -0
  370. package/src/bundles/bundled-translations.pt-BR.json +2 -0
  371. package/src/bundles/bundled-translations.pt-PT.json +2 -0
  372. package/src/clients/design-template-client.ts +3 -0
  373. package/src/clients/models.ts +2 -0
  374. package/src/composables/useSnapshot.ts +19 -22
  375. package/src/lib.ts +1 -0
  376. package/src/metadata-builder/builders/footer-builder.test.ts +137 -0
  377. package/src/metadata-builder/builders/footer-builder.ts +129 -89
  378. package/src/metadata-builder/builders/section-builders/image-gallery-builder.ts +1 -1
  379. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +1 -1
  380. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +1 -1
  381. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +1 -1
  382. package/src/metadata-builder/builders/shape-color-utils.ts +2 -2
  383. package/src/plugins/google-maps-plugin/google-maps-plugin.ts +8 -8
  384. package/src/shared/background-settings/components/BackgroundSettings.vue +1 -1
  385. package/src/shared/background-settings/components/background-color/BackgroundColorSettings.vue +1 -1
  386. package/src/shared/color-picker/components/ColorPicker.mixin.ts +2 -7
  387. package/src/shared/color-picker/components/ColorPickerSwatch.mixin.ts +1 -0
  388. package/src/shared/common/NumberInput.vue +1 -0
  389. package/src/shared/common/SideBarSettingsHeader.vue +2 -2
  390. package/src/shared/confirm-modal/ConfirmModal.mixin.ts +1 -0
  391. package/src/shared/content-settings/components/booking-url-field/BookingUrlField.vue +1 -0
  392. package/src/shared/content-settings/components/button-configuration-field/ButtonConfigurationField.vue +1 -0
  393. package/src/shared/content-settings/components/color-field/ColorField.vue +3 -10
  394. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +1 -1
  395. package/src/shared/content-settings/components/content-settings/ContentSettingsLockedButton.vue +1 -0
  396. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +2 -0
  397. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +2 -0
  398. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +2 -0
  399. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +2 -0
  400. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +2 -0
  401. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +2 -0
  402. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +2 -0
  403. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.ts +5 -0
  404. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.vue +1 -1
  405. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +1 -14
  406. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.ts +4 -6
  407. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.vue +2 -2
  408. package/src/shared/content-settings/components/icon-library/IconLibrary.mixin.ts +1 -0
  409. package/src/shared/content-settings/components/items-field/ItemsField.mixin.ts +1 -1
  410. package/src/shared/content-settings/components/logo-selection-field/LogoSelectionField.vue +1 -1
  411. package/src/shared/content-settings/components/logo-size-field/LogoSizeSliderField.vue +1 -1
  412. package/src/shared/content-settings/components/page-dropdown-field/PageDropdownField.vue +1 -1
  413. package/src/shared/content-settings/components/personalisation-role-field/PersonalisationRoleField.vue +4 -4
  414. package/src/shared/content-settings/components/slider-field/SliderField.mixin.ts +9 -0
  415. package/src/shared/content-settings/components/text-image-field/TextImageField.vue +2 -8
  416. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +1 -1
  417. package/src/shared/content-settings/models.ts +3 -2
  418. package/src/shared/content-settings/utils.ts +0 -1
  419. package/src/shared/dropzone-image-uploader/components/DropzoneImageUploader.vue +1 -0
  420. package/src/shared/ecommerce-settings/store/cart-store.test.ts +1 -1
  421. package/src/shared/font-family-selector/FontFamilySelector.mixin.ts +1 -0
  422. package/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.ts +1 -0
  423. package/src/shared/logo-settings/components/EditLogoSettings.mixin.ts +1 -1
  424. package/src/shared/logo-settings/components/LogoSettings.mixin.ts +0 -1
  425. package/src/shared/logo-settings/components/LogoSettingsHeader.mixin.ts +1 -0
  426. package/src/shared/logo-settings/components/LogoStyleSettingsWithState.vue +2 -2
  427. package/src/shared/logo-settings/components/LogoTemplateSearch.vue +1 -1
  428. package/src/shared/logo-settings/store/editable-logo-store.ts +1 -1
  429. package/src/shared/logo-settings/store/logo-settings-store.test.ts +4 -4
  430. package/src/shared/logo-versions/LogoVersions.mixin.ts +1 -0
  431. package/src/shared/models.ts +6 -0
  432. package/src/shared/my-designs/MyDesigns.mixin.ts +1 -0
  433. package/src/shared/my-uploads/MyMedia.mixin.ts +1 -0
  434. package/src/shared/my-uploads/MyMediaSelectionItem.vue +2 -1
  435. package/src/shared/my-uploads/MyUploads.mixin.ts +1 -0
  436. package/src/shared/my-uploads/models.ts +1 -2
  437. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.ts +1 -0
  438. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.vue +1 -1
  439. package/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.ts +0 -3
  440. package/src/shared/page-settings/components/page-settings/NestedDraggable.vue +1 -1
  441. package/src/shared/page-settings/components/page-settings/PageSettings.vue +1 -2
  442. package/src/shared/page-settings/components/page-settings-section-styles/HeaderDisplayStyle.vue +1 -1
  443. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.ts +1 -1
  444. package/src/shared/page-settings/store/page-settings-store.test.ts +4 -8
  445. package/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.ts +0 -1
  446. package/src/shared/shape-library/ShapeLibrary.vue +2 -2
  447. package/src/shared/style-settings/store/style-settings-store.ts +1 -1
  448. package/src/shared/template-settings/components/TemplatesSettings.mixin.ts +2 -2
  449. package/src/shared/template-settings/models.ts +1 -0
  450. package/src/shared/template-settings/store/template-settings-store.ts +105 -18
  451. package/src/shared/unsplash-library/UnsplashLibrary.vue +2 -6
  452. package/src/shared/video-library/VideoLibrary.vue +1 -1
  453. package/src/utils/minify-brand-page-metadata.ts +11 -1
  454. package/lib/src/brand-page/components/testimonial-section/TestimonialSection.mixin.js +0 -112
  455. package/src/brand-page/components/testimonial-section/TestimonialSection.mixin.ts +0 -132
@@ -11,7 +11,7 @@ import {
11
11
  import type { ImagesSectionContent, MediaType } from '@brand-page';
12
12
 
13
13
  export const getTextMediaOptionsConverterByMediaType = (
14
- mediaType: MediaType,
14
+ _mediaType: MediaType,
15
15
  ): ValueConvertor<
16
16
  string | null,
17
17
  ButtonGroupConfig,
@@ -15,8 +15,10 @@ export const ButtonStyleConfigOptions = [
15
15
 
16
16
  export type ButtonStyleConfigOption = (typeof ButtonStyleConfigOptions)[number];
17
17
 
18
- export interface ButtonStyleConfig
19
- extends Omit<ButtonStyles, 'style' | 'template' | 'selectedButtonStyleId'> {
18
+ export interface ButtonStyleConfig extends Omit<
19
+ ButtonStyles,
20
+ 'style' | 'template' | 'selectedButtonStyleId'
21
+ > {
20
22
  readonly id: string;
21
23
  readonly hasShadow: boolean;
22
24
  readonly hasSoftShadow?: boolean;
@@ -156,8 +156,10 @@ export interface ContentSettingsField<TContent> {
156
156
  styleName?: string;
157
157
  }
158
158
 
159
- export interface ContentSettingsMultiField<TContent, TField>
160
- extends Omit<ContentSettingsField<TContent>, 'type' | 'role'> {
159
+ export interface ContentSettingsMultiField<TContent, TField> extends Omit<
160
+ ContentSettingsField<TContent>,
161
+ 'type' | 'role'
162
+ > {
161
163
  type: ItemMultiFieldType;
162
164
  role: 'multi';
163
165
  fields?: {
@@ -24,6 +24,8 @@ import {
24
24
  EMPTY_LOGO_IMAGE_MODEL,
25
25
  BRAND_PAGE_TYPES,
26
26
  SENSITIVE_CONTENT_TYPES,
27
+ CONTACT_FORM_LAYOUT_DEFAULT_PADDING,
28
+ TESTIMONIAL_DEFAULT_PADDING,
27
29
  } from '@brand-page';
28
30
  import type {
29
31
  ButtonContent,
@@ -171,6 +173,8 @@ export const createInitialImageGalleryContent = (): ImageGalleryContent => {
171
173
  galleryStyles: {
172
174
  galleryType: 'grid',
173
175
  },
176
+ topPadding: 0,
177
+ bottomPadding: 0,
174
178
  };
175
179
  };
176
180
 
@@ -182,6 +186,8 @@ export const createInitialVideoContent = (): VideoContent => {
182
186
  displayStyle: DISPLAY_STYLE_PREVIEW,
183
187
  mute: false,
184
188
  videoUrl: '',
189
+ topPadding: 0,
190
+ bottomPadding: 0,
185
191
  };
186
192
  };
187
193
 
@@ -239,6 +245,10 @@ export const createInitialTextContent = (
239
245
  ]
240
246
  : undefined,
241
247
  type: 'text',
248
+ // Brand Site text blocks sit in a 12px outer padding; Brand Page / Brand Contact use 0.
249
+ topPadding: options?.brandPageType === BRAND_PAGE_TYPES.brandSite ? 12 : 0,
250
+ bottomPadding:
251
+ options?.brandPageType === BRAND_PAGE_TYPES.brandSite ? 12 : 0,
242
252
  textSize: {
243
253
  fontSize: FONT_SIZE_BODY,
244
254
  lineHeight: LINE_HEIGHT_BODY,
@@ -282,6 +292,8 @@ export const createInitialMapContent = (): MapContent => {
282
292
  formattedAddress: '',
283
293
  placeId: '',
284
294
  },
295
+ topPadding: 0,
296
+ bottomPadding: 0,
285
297
  };
286
298
  };
287
299
 
@@ -291,6 +303,8 @@ export const createInitialMailingListContent = (
291
303
  return {
292
304
  id: uuid.v4(),
293
305
  type: 'mailing-list',
306
+ topPadding: 0,
307
+ bottomPadding: 0,
294
308
  title: contentSettingsTr(`mailingListTitle`),
295
309
  buttonText: contentSettingsTr(`subscribePlaceholder`),
296
310
  acceptedFields: 'emailOnly',
@@ -324,6 +338,8 @@ export const createInitialRequestPaymentContent = (
324
338
  successMessage: '',
325
339
  title: contentSettingsTr(`buyNowTitle`),
326
340
  type: 'request-payment',
341
+ topPadding: 0,
342
+ bottomPadding: 0,
327
343
  fillColor: {},
328
344
  defaultBorderColor: {},
329
345
  selectedBorderColor: {},
@@ -356,6 +372,8 @@ export const createInitialShopContent = (
356
372
  return {
357
373
  id: uuid.v4(),
358
374
  description: '',
375
+ topPadding: 16,
376
+ bottomPadding: 16,
359
377
  products: [],
360
378
  displayStyle: PAYMENT_OPTION_DISPLAY_TYPES.thumbnail,
361
379
  aspectRatio: PAYMENT_OPTION_IMAGE_TYPES.auto,
@@ -415,6 +433,8 @@ export const createInitialSupportMeContent = (
415
433
  successMessage: contentSettingsTr(`successSupportPlaceholder`),
416
434
  description: contentSettingsTr(`makeADonationDescription`),
417
435
  type: 'support-me',
436
+ topPadding: 0,
437
+ bottomPadding: 0,
418
438
  titleStyle: {
419
439
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
420
440
  textStyleType: TEXT_STYLE_TYPES.headings,
@@ -453,14 +473,21 @@ export const createInitialContactFormContent: CreateInitialContentFunction<
453
473
  console.error('userState.emailAddress should not be undefined');
454
474
  }
455
475
 
476
+ // New blocks inherit the padding their initial layout previously had
477
+ // hard-coded — same source as the migration backfill for existing pages.
478
+ const layoutStyle =
479
+ options?.brandPageType === 'brandSite' ? 'center-card-aligned' : '';
480
+ const padding = CONTACT_FORM_LAYOUT_DEFAULT_PADDING[layoutStyle] ?? 0;
481
+
456
482
  return {
457
483
  id: uuid.v4(),
458
484
  title: contentSettingsTr(`contactUsTitle`),
459
485
  description: '',
460
486
  buttonText: contentSettingsTr(`sendPlaceholder`),
461
487
  displayStyle: DISPLAY_STYLE_PREVIEW,
462
- layoutStyle:
463
- options?.brandPageType === 'brandSite' ? 'center-card-aligned' : '',
488
+ layoutStyle,
489
+ topPadding: padding,
490
+ bottomPadding: padding,
464
491
  imageUrl: '',
465
492
  fields: [
466
493
  {
@@ -553,6 +580,8 @@ export const createInitialBannerSectionContent: CreateInitialContentFunction<
553
580
  > = (options?: CreateInitialContentOptions) => {
554
581
  return {
555
582
  id: uuid.v4(),
583
+ topPadding: 32,
584
+ bottomPadding: 32,
556
585
  imageUrl: '',
557
586
  title: contentSettingsTr(`thisIsABannerTitle`),
558
587
  description: '',
@@ -599,6 +628,8 @@ export const createInitialBookingSectionContent: CreateInitialContentFunction<
599
628
  buttonText: contentSettingsTr(`bookNowLabel`),
600
629
  url: '',
601
630
  type: 'booking-section',
631
+ topPadding: 32,
632
+ bottomPadding: 32,
602
633
  descriptionStyle: {
603
634
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
604
635
  textStyleType: TEXT_STYLE_TYPES.paragraphs,
@@ -628,6 +659,8 @@ export const createInitialImagesSectionContent: CreateInitialContentFunction<
628
659
  title: contentSettingsTr(`imagesTitle`),
629
660
  description: '',
630
661
  type: 'images-section',
662
+ topPadding: 32,
663
+ bottomPadding: 32,
631
664
  displayStyle: 'centered',
632
665
  aspectRatio: 'Default',
633
666
  areImagesFullWidth: false,
@@ -683,6 +716,8 @@ export const createInitialTestimonialSectionContent: CreateInitialContentFunctio
683
716
  title: contentSettingsTr(`testimonialsTitle`),
684
717
  type: 'testimonial-section',
685
718
  displayStyle: 'centered',
719
+ topPadding: TESTIMONIAL_DEFAULT_PADDING,
720
+ bottomPadding: TESTIMONIAL_DEFAULT_PADDING,
686
721
  items: [],
687
722
  titleStyle: {
688
723
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
@@ -731,6 +766,8 @@ export const createInitialAboutSectionContent: CreateInitialContentFunction<
731
766
  textAlign: 'center',
732
767
  },
733
768
  backgroundStyle: {},
769
+ topPadding: 32,
770
+ bottomPadding: 32,
734
771
  };
735
772
  };
736
773
 
@@ -793,6 +830,8 @@ export const createInitialSocialLinksContent = (
793
830
  return {
794
831
  id: uuid.v4(),
795
832
  type: 'social-links',
833
+ topPadding: 32,
834
+ bottomPadding: 32,
796
835
  title: contentSettingsTr(`followUsOnTitle`),
797
836
  links: [
798
837
  {
@@ -846,6 +885,8 @@ export const createInitialShapesSectionContent: CreateInitialContentFunction<
846
885
  title: contentSettingsTr(`shapesTitle`),
847
886
  description: '',
848
887
  type: 'shapes-section',
888
+ topPadding: 32,
889
+ bottomPadding: 32,
849
890
  displayStyle: 'centered',
850
891
  items: [
851
892
  {
@@ -14,7 +14,7 @@ import type {
14
14
  import type { PageSection } from '@shared/page-settings/models';
15
15
  import { PAGE_SECTIONS } from '@shared/page-settings/models';
16
16
  import type { ButtonGroupOption } from './button-group.model';
17
- import { tr, commonTr, modelsTr } from '@src/composables/useTranslate';
17
+ import { commonTr, modelsTr } from '@src/composables/useTranslate';
18
18
 
19
19
  export const NavigationStyleConfigOptions = {
20
20
  defaultBorderColor: 'defaultBorderColor',
@@ -46,11 +46,10 @@ export const NAVIGATION_STYLE_CONFIG_OPTION_TITLES = (): Record<
46
46
  subNavBackgroundColor: modelsTr('subNavBackgroundColor'),
47
47
  });
48
48
 
49
- export interface NavigationStyleConfig
50
- extends Omit<
51
- NavigationDesktop | NavigationMobile,
52
- 'isLogoVisible' | 'hamburgerMenuStyle' | 'viewport'
53
- > {
49
+ export interface NavigationStyleConfig extends Omit<
50
+ NavigationDesktop | NavigationMobile,
51
+ 'isLogoVisible' | 'hamburgerMenuStyle' | 'viewport'
52
+ > {
54
53
  buttonGroupOption: ButtonGroupOption;
55
54
  options: NavigationStyleConfigOption[];
56
55
  }
@@ -2,7 +2,6 @@ import {
2
2
  EMPTY_LOGO_IMAGE_MODEL,
3
3
  type FabricLogoTheme,
4
4
  type LogoContent,
5
- type LogoImageModel,
6
5
  type LogoTemplateImageModel,
7
6
  type LogoTheme,
8
7
  } from '@brand-page';
@@ -21,7 +21,6 @@ import {
21
21
  BRAND_PAGE_TYPES,
22
22
  SENSITIVE_CONTENT_TYPES,
23
23
  getAbTestResults,
24
- getValueType,
25
24
  type AbTest,
26
25
  type LogoContent,
27
26
  } from '@brand-page';
@@ -34,7 +33,6 @@ import {
34
33
  TRIGGER_TYPE,
35
34
  UPGRADE_CTA_LOCATIONS,
36
35
  useEventTracker,
37
- EVENTS,
38
36
  } from '@brand-page-maker/composables/useEventTracker';
39
37
  import { navigationTr } from '@src/composables/useTranslate';
40
38
  import type { WebsiteSlugCheckResponse } from '@brand-page-maker/models/api.model';
@@ -123,6 +121,7 @@ export type InitialisePayload = Omit<
123
121
  logoDraftAssets: LogoDraftAsset[];
124
122
  gettyVideos: GettyVideoEditorViewModelResponse[];
125
123
  templateSearchTerm: string | undefined;
124
+ aiTemplateKeywords: string | undefined;
126
125
  onSearchTermChanged?: OnSearchTermChangedCallback;
127
126
  };
128
127
 
@@ -266,6 +265,10 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
266
265
  onSearchTermChanged: payload.onSearchTermChanged,
267
266
  });
268
267
 
268
+ templateSettingsStore.setAiTemplateKeywords({
269
+ aiTemplateKeywords: payload.aiTemplateKeywords ?? '',
270
+ });
271
+
269
272
  brandPageMakerStore.setSelectedTemplateId({
270
273
  templateId: this.designTemplateToken,
271
274
  });
@@ -446,7 +449,7 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
446
449
 
447
450
  async publishBrandPage({ shouldPublish, slug }) {
448
451
  const brandPageMakerStore = useBrandPageMakerStore();
449
- const eventTracker = useEventTracker();
452
+ const _eventTracker = useEventTracker();
450
453
 
451
454
  if (!this.designDraftToken) {
452
455
  throw new Error(
@@ -553,7 +556,7 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
553
556
  isPurchasedDomain,
554
557
  }) {
555
558
  const brandPageMakerStore = useBrandPageMakerStore();
556
- const eventTracker = useEventTracker();
559
+ const _eventTracker = useEventTracker();
557
560
 
558
561
  if (!this.designDraftToken) {
559
562
  throw new Error(
@@ -887,7 +890,7 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
887
890
  ) {
888
891
  const userStore = useBrandPageMakerUserStore();
889
892
  const brandPageMakerStore = useBrandPageMakerStore();
890
- const eventTracker = useEventTracker();
893
+ const _eventTracker = useEventTracker();
891
894
 
892
895
  if (userStore.isAdmin) {
893
896
  throw new Error('save brand page is not allowed in admin mode');
@@ -2,7 +2,6 @@ import { vi } from 'vitest';
2
2
  import {
3
3
  BRAND_PAGE,
4
4
  INITIALISE_PAYLOAD,
5
- USER_FEATURES,
6
5
  userFeatures,
7
6
  } from '../../components/brand-page-maker/__fixtures__';
8
7
  import {
@@ -44,6 +43,7 @@ import { useUiBackgroundSettingsStore } from '@shared/background-settings/store'
44
43
  import { useBrandPageMakerUserStore } from '../user';
45
44
  import { useBrandPageContainerStore } from '../brandpage-container';
46
45
  import { useUiTemplateSettingsStore } from '@shared/template-settings/store';
46
+ import { usePageNavigationStore } from '@shared/page-navigation/store/page-navigation-store';
47
47
  import {
48
48
  CONTENT_SETTINGS_MODES,
49
49
  useUiContentSettingsStore,
@@ -54,8 +54,6 @@ import { SIDE_BAR_TAB_NAMES } from '@brand-page-maker/constants';
54
54
  import { PAGE_SECTIONS } from '@shared/page-settings/models';
55
55
  import { FabricRenderClient } from '../../../clients/fabric-render-client';
56
56
  import { setLocaleAsync } from '@src/composables/useTranslate';
57
- import { usePageNavigationStore } from '@shared/page-navigation/store/page-navigation-store';
58
- import type { NavModel } from '@brand-page/models';
59
57
 
60
58
  const createInitialisePayload = () => {
61
59
  const initialisePayload = {
@@ -23,14 +23,12 @@ import {
23
23
  CONTENT_TYPES,
24
24
  NavigationDesktop,
25
25
  NavigationMobile,
26
- NavModel,
27
26
  } from '@brand-page';
28
27
  import type {
29
28
  DesignTemplateType,
30
29
  InitialCategories,
31
30
  TemplateCategory,
32
31
  } from '@shared/template-settings/models';
33
- import type { UserFeatures } from '../user';
34
32
  import { useBrandPageMakerUserStore } from '../user';
35
33
  import { defineStore } from 'pinia';
36
34
  import { toRaw } from 'vue';
@@ -125,6 +123,8 @@ export interface InitialisePayload {
125
123
  templateCategories: TemplateCategory[];
126
124
  personalisationData?: UserPersonalisationContent[];
127
125
  isPersonalisationEnabled: boolean;
126
+ userPromptContentKey?: string;
127
+ showAiTemplatesTab?: boolean;
128
128
  businessName: string | undefined;
129
129
  industry: string | undefined;
130
130
  layout?: string;
@@ -1230,11 +1230,13 @@ export const useBrandPageMakerStore = defineStore('brandPageMaker', {
1230
1230
  templateCategories,
1231
1231
  personalisationData,
1232
1232
  isPersonalisationEnabled,
1233
+ userPromptContentKey,
1234
+ showAiTemplatesTab = false,
1233
1235
  businessName,
1234
1236
  industry,
1235
1237
  layout,
1236
1238
  logoVariationImageUrls,
1237
- shopConfigData,
1239
+ shopConfigData: _shopConfigData,
1238
1240
  isServerRenderOverride = false,
1239
1241
  }: InitialisePayload) {
1240
1242
  const brandPageContainerStore = useBrandPageContainerStore();
@@ -1246,7 +1248,7 @@ export const useBrandPageMakerStore = defineStore('brandPageMaker', {
1246
1248
  const backgroundSettingsStore = useUiBackgroundSettingsStore();
1247
1249
  const styleSettingsStore = useUiStyleSettingsStore();
1248
1250
  const navigationStyleSettingsStore = useUiNavigationStyleSettingsStore();
1249
- const sideBarStore = useUiSideBarStore();
1251
+ const _sideBarStore = useUiSideBarStore();
1250
1252
 
1251
1253
  navigationStyleSettingsStore.initialise({ reset: false });
1252
1254
 
@@ -1353,6 +1355,10 @@ export const useBrandPageMakerStore = defineStore('brandPageMaker', {
1353
1355
  });
1354
1356
  }
1355
1357
 
1358
+ uiStore.setUserPromptContentKey({ userPromptContentKey });
1359
+
1360
+ uiStore.setShowAiTemplatesTab({ showAiTemplatesTab });
1361
+
1356
1362
  templateSettingsStore.setTemplateCategories({
1357
1363
  categories: templateCategories,
1358
1364
  });
@@ -1800,6 +1806,7 @@ export const useBrandPageMakerStore = defineStore('brandPageMaker', {
1800
1806
  const navigationStyleSettingsStore = useUiNavigationStyleSettingsStore();
1801
1807
  const shopStore = useShopConfigStore();
1802
1808
  const pageNavigationStore = usePageNavigationStore();
1809
+ const uiStore = useUiStore();
1803
1810
 
1804
1811
  const pages = pageSettingsStore.pages.map((p) => ({
1805
1812
  ...p,
@@ -1817,6 +1824,7 @@ export const useBrandPageMakerStore = defineStore('brandPageMaker', {
1817
1824
 
1818
1825
  return {
1819
1826
  v: GetLatestModelVersion(),
1827
+ userPromptContentKey: uiStore.userPromptContentKey,
1820
1828
  pages,
1821
1829
  styles: {
1822
1830
  logoStyles,
@@ -48,6 +48,8 @@ export const useUiStore = defineStore('ui', {
48
48
  },
49
49
  personalisationData: undefined,
50
50
  isPersonalisationEnabled: false,
51
+ userPromptContentKey: undefined,
52
+ showAiTemplatesTab: false,
51
53
  }),
52
54
  actions: {
53
55
  setLogoTheme(payload: { logoTheme: LogoTheme }) {
@@ -78,6 +80,20 @@ export const useUiStore = defineStore('ui', {
78
80
  }) {
79
81
  this.personalisationData = personalisationData;
80
82
  },
83
+ setUserPromptContentKey({
84
+ userPromptContentKey,
85
+ }: {
86
+ userPromptContentKey: string | undefined;
87
+ }) {
88
+ this.userPromptContentKey = userPromptContentKey;
89
+ },
90
+ setShowAiTemplatesTab({
91
+ showAiTemplatesTab,
92
+ }: {
93
+ showAiTemplatesTab: boolean;
94
+ }) {
95
+ this.showAiTemplatesTab = showAiTemplatesTab;
96
+ },
81
97
  onBackgroundChanged() {
82
98
  const brandPageMakerStore = useBrandPageMakerStore();
83
99
 
@@ -7,7 +7,7 @@ import type {
7
7
  ContentSettingsConfig,
8
8
  CreateInitialContentOptions,
9
9
  } from '../models';
10
- import { SENSITIVE_CONTENT_TYPES, type Content } from '@brand-page';
10
+ import { type Content } from '@brand-page';
11
11
  import { RESERVED_FIELD_NAMES } from '@shared/content-settings/constants';
12
12
  import { CONTENT_SETTINGS_CONFIGS } from '../constants';
13
13
  import type { UIUserFeatures } from '@src/constants/ui';
@@ -431,7 +431,7 @@ const transformRTEField = (
431
431
  if (textStyleType && (textStyleType === type || uiStyleSettingsStore)) {
432
432
  let globalContentStyle = uiStyleSettingsStore
433
433
  ? uiStyleSettingsStore.textStyles.textStyleOptions[textStyleType].style
434
- : newStyle ?? ({} as TextStyleDeclaration);
434
+ : (newStyle ?? ({} as TextStyleDeclaration));
435
435
 
436
436
  globalContentStyle = {
437
437
  ...globalContentStyle,
@@ -549,7 +549,7 @@ export const transformToRTE = (
549
549
  ? uiStyleSettingsStore.textStyles.textStyleOptions[
550
550
  textItemStyleType
551
551
  ].style
552
- : newStyle ?? ({} as TextStyleDeclaration);
552
+ : (newStyle ?? ({} as TextStyleDeclaration));
553
553
 
554
554
  globalContentStyle = {
555
555
  ...globalContentStyle,
@@ -593,7 +593,7 @@ export const transformToRTE = (
593
593
  let globalContentStyle = uiStyleSettingsStore
594
594
  ? uiStyleSettingsStore.textStyles.textStyleOptions[textStyleType]
595
595
  .style
596
- : newStyle ?? ({} as TextStyleDeclaration);
596
+ : (newStyle ?? ({} as TextStyleDeclaration));
597
597
 
598
598
  globalContentStyle = {
599
599
  ...globalContentStyle,
@@ -647,7 +647,7 @@ export const switchAllContentToRTE = (
647
647
 
648
648
  if (textContent.textItems && textContent.textItems.length > 0) {
649
649
  for (const [
650
- itemIndex,
650
+ _itemIndex,
651
651
  textItemContent,
652
652
  ] of textContent.textItems.entries()) {
653
653
  const textItemStyleType = textItemContent.textStyle.textStyleType;
@@ -1529,6 +1529,8 @@
1529
1529
  "iconFillColorTitle": "Farbe der Symbolfüllung",
1530
1530
  "iconBackgroundColorTitle": "Symbolhintergrundfarbe",
1531
1531
  "paddingTitle": "Polsterung",
1532
+ "topPaddingTitle": "Polsterung oben",
1533
+ "bottomPaddingTitle": "Polsterung unten",
1532
1534
  "dividerStyleTitle": "Trennlinienstil",
1533
1535
  "dividerColorTitle": "Trennlinienfarbe",
1534
1536
  "addItemTitle": "Artikel hinzufügen",
@@ -1529,6 +1529,8 @@
1529
1529
  "iconFillColorTitle": "Color de relleno del icono",
1530
1530
  "iconBackgroundColorTitle": "Color de fondo del icono",
1531
1531
  "paddingTitle": "Relleno",
1532
+ "topPaddingTitle": "Relleno superior",
1533
+ "bottomPaddingTitle": "Relleno inferior",
1532
1534
  "dividerStyleTitle": "Estilo del divisor",
1533
1535
  "dividerColorTitle": "Color del separador",
1534
1536
  "addItemTitle": "Añadir artículo",
@@ -1529,6 +1529,8 @@
1529
1529
  "iconFillColorTitle": "Couleur de remplissage de l’icône",
1530
1530
  "iconBackgroundColorTitle": "Couleur d’arrière-plan de l’icône",
1531
1531
  "paddingTitle": "Marges intérieures",
1532
+ "topPaddingTitle": "Marge intérieure supérieure",
1533
+ "bottomPaddingTitle": "Marges intérieures inférieures",
1532
1534
  "dividerStyleTitle": "Style de séparateur",
1533
1535
  "dividerColorTitle": "Couleur du séparateur",
1534
1536
  "addItemTitle": "Ajouter un article",
@@ -1529,6 +1529,8 @@
1529
1529
  "iconFillColorTitle": "Couleur de remplissage de l’icône",
1530
1530
  "iconBackgroundColorTitle": "Couleur d’arrière-plan de l’icône",
1531
1531
  "paddingTitle": "Marges intérieures",
1532
+ "topPaddingTitle": "Marges intérieures supérieures",
1533
+ "bottomPaddingTitle": "Marges intérieures inférieures",
1532
1534
  "dividerStyleTitle": "Style de séparateur",
1533
1535
  "dividerColorTitle": "Couleur du séparateur",
1534
1536
  "addItemTitle": "Ajouter un article",
@@ -1529,6 +1529,8 @@
1529
1529
  "iconFillColorTitle": "Icon fill color",
1530
1530
  "iconBackgroundColorTitle": "Icon background color",
1531
1531
  "paddingTitle": "Padding",
1532
+ "topPaddingTitle": "Top padding",
1533
+ "bottomPaddingTitle": "Bottom padding",
1532
1534
  "dividerStyleTitle": "Divider Style",
1533
1535
  "dividerColorTitle": "Divider color",
1534
1536
  "addItemTitle": "Add Item",
@@ -1529,6 +1529,8 @@
1529
1529
  "iconFillColorTitle": "Cor de preenchimento do ícone",
1530
1530
  "iconBackgroundColorTitle": "Cor de fundo do ícone",
1531
1531
  "paddingTitle": "Preenchimento",
1532
+ "topPaddingTitle": "Preenchimento superior",
1533
+ "bottomPaddingTitle": "Preenchimento inferior",
1532
1534
  "dividerStyleTitle": "Estilo do separador",
1533
1535
  "dividerColorTitle": "Cor do separador",
1534
1536
  "addItemTitle": "Adicionar item",
@@ -1529,6 +1529,8 @@
1529
1529
  "iconFillColorTitle": "Cor de preenchimento do ícone",
1530
1530
  "iconBackgroundColorTitle": "Cor de fundo do ícone",
1531
1531
  "paddingTitle": "Preenchimento",
1532
+ "topPaddingTitle": "Preenchimento superior",
1533
+ "bottomPaddingTitle": "Preenchimento inferior",
1532
1534
  "dividerStyleTitle": "Estilo do separador",
1533
1535
  "dividerColorTitle": "Cor do separador",
1534
1536
  "addItemTitle": "Adicionar Item",
@@ -11,6 +11,7 @@ interface DesignTemplateClientOptions {}
11
11
  interface GetTemplatesAsyncOptions {
12
12
  categoryName?: string;
13
13
  searchTerm?: string;
14
+ keywords?: string;
14
15
  side?: string;
15
16
  logoDraftToken?: string;
16
17
  logoVariation?: number;
@@ -22,6 +23,8 @@ interface GetTemplatesAsyncOptions {
22
23
  locale?: string;
23
24
  logoS3Token?: string;
24
25
  logoTemplateToken?: string;
26
+ pageSection?: string;
27
+ pageName?: string;
25
28
  }
26
29
 
27
30
  export const getTemplatesEndpoint = (templateTypeName: string) =>
@@ -4,6 +4,7 @@ export interface Paginated<T> {
4
4
  pageSize: number;
5
5
  pageCount: number;
6
6
  totalResultCount: number;
7
+ abTestValuesToBePushed?: Record<string, string>;
7
8
  }
8
9
 
9
10
  export interface DesignTemplate {
@@ -14,6 +15,7 @@ export interface DesignTemplate {
14
15
 
15
16
  export interface PaginatedDesignTemplateItem {
16
17
  designTemplateToken: string;
18
+ isPersonalisable?: boolean;
17
19
  previewImageUrl?: string;
18
20
  }
19
21
 
@@ -180,15 +180,19 @@ export function useSnapshot() {
180
180
  const captureWidth = target.clientWidth || target.offsetWidth || 1;
181
181
  const scale = Math.min(1, SNAPSHOT_TARGET_WIDTH / captureWidth);
182
182
 
183
- // Pre-fetch blob-backed SVGs from content shape <object> elements so they
184
- // can be rendered as <img> in the clone (html2canvas can't reach into the
185
- // isolated DOM inside <object>). Background-shape blob <img>s are NOT
186
- // converted: html2canvas renders them no differently with or without the
187
- // conversion, so it'd just be wasted fetches.
183
+ // Inline every shape's blob-backed SVG as a data: URI up front. Shapes
184
+ // (content + background) render their coloured SVG via an <img> whose src
185
+ // is a `blob:` URL from URL.createObjectURL. The owning component revokes
186
+ // that blob on re-render (colour/size/imageUrl change) and on unmount —
187
+ // exactly what an AI "change all my contents" run triggers right before we
188
+ // capture. html2canvas fetches each <img> src ASYNCHRONOUSLY while
189
+ // rendering, so a concurrent revoke leaves it fetching a dead blob URL →
190
+ // the shape 404s and snapshots blank. A data: URI can't be revoked, so
191
+ // swapping the blob for one in the clone removes the race.
188
192
  const blobSvgUris = new Map<string, string>();
189
193
  const blobSources = Array.from(
190
- element.querySelectorAll<HTMLObjectElement>('.c-shape-object object'),
191
- ).map((o) => o.getAttribute('data'));
194
+ element.querySelectorAll<HTMLImageElement>('.c-shape-object img'),
195
+ ).map((img) => img.getAttribute('src'));
192
196
 
193
197
  for (const src of blobSources) {
194
198
  if (src && src.startsWith('blob:') && !blobSvgUris.has(src)) {
@@ -340,23 +344,16 @@ export function useSnapshot() {
340
344
  overflow: 'visible',
341
345
  });
342
346
 
343
- // Swap content shape <object>s for <img> using the pre-fetched data
344
- // URIs (html2canvas can't render <object> SVGs directly).
347
+ // Repoint each shape <img> from its (revocable) blob: src to the
348
+ // pre-fetched data: URI so html2canvas never fetches a blob that may
349
+ // have been revoked mid-capture.
345
350
  _doc
346
- .querySelectorAll<HTMLObjectElement>('.c-shape-object object')
347
- .forEach((obj) => {
348
- const dataUrl = obj.getAttribute('data');
351
+ .querySelectorAll<HTMLImageElement>('.c-shape-object img')
352
+ .forEach((img) => {
353
+ const src = img.getAttribute('src');
349
354
 
350
- if (dataUrl && blobSvgUris.has(dataUrl)) {
351
- const img = _doc.createElement('img');
352
-
353
- img.src = blobSvgUris.get(dataUrl)!;
354
-
355
- const style = obj.getAttribute('style');
356
-
357
- if (style) img.setAttribute('style', style);
358
-
359
- obj.parentNode?.replaceChild(img, obj);
355
+ if (src && blobSvgUris.has(src)) {
356
+ img.src = blobSvgUris.get(src)!;
360
357
  }
361
358
  });
362
359
 
package/src/lib.ts CHANGED
@@ -96,6 +96,7 @@ export {
96
96
  useEventManagerStore,
97
97
  useLocalisedRouteStore,
98
98
  useVideoStore,
99
+ useRouteStore,
99
100
  } from './brand-page-maker/stores';
100
101
  export { useShopConfigStore } from './shared/ecommerce-settings/store/shop-settings-store';
101
102