@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
@@ -3,7 +3,7 @@ import type Vue from 'vue';
3
3
  import { createApp } from 'vue';
4
4
  import { createPinia, setActivePinia } from 'pinia';
5
5
  import type { ContentPage } from '../models';
6
- import type { PageModel, TextContent } from '@brand-page';
6
+ import type { TextContent } from '@brand-page';
7
7
  import type { ContentItem } from '../../content-settings/models';
8
8
  import {
9
9
  UNLIMITED_MAX_NUM_OF_PAGES,
@@ -13,15 +13,11 @@ import {
13
13
  import {
14
14
  INITIALISE_PAYLOAD,
15
15
  USER_FEATURES,
16
- brandPageEmpty,
17
16
  } from '@brand-page-maker/components/brand-page-maker/__fixtures__';
18
17
  import { useUiPageSettingsStore } from './index';
19
- import { useUiContentSettingsStore } from '../../content-settings/store';
20
18
  import { FabricRenderClient } from '../../../clients/fabric-render-client';
21
19
  import { setLocaleAsync } from '@src/composables/useTranslate';
22
20
  import { usePageNavigationStore } from '@src/shared/page-navigation/store/page-navigation-store';
23
- import { getPageSlugFromPageTitle } from '@src/lib';
24
- import { v4 as uuid } from 'uuid';
25
21
 
26
22
  vi.mock('../../../clients/brand-page-client', () => ({
27
23
  default: {
@@ -50,7 +46,7 @@ const PAGE_TWO = createPage(2);
50
46
  const PAGE_THREE = createPage(3);
51
47
 
52
48
  describe('page store module', () => {
53
- let app: Vue.App;
49
+ let _app: Vue.App;
54
50
 
55
51
  beforeAll(async () => {
56
52
  FabricRenderClient.setInstance({ baseUrl: 'http://localhost:3000' });
@@ -63,7 +59,7 @@ describe('page store module', () => {
63
59
 
64
60
  await setLocaleAsync('en-US');
65
61
 
66
- app = createApp({
62
+ _app = createApp({
67
63
  pinia,
68
64
  router,
69
65
  });
@@ -166,7 +162,7 @@ describe('page store module', () => {
166
162
  pages: [PAGE_ONE, PAGE_TWO],
167
163
  });
168
164
 
169
- const firstPage = pageSettingsStore.addNewPage({
165
+ pageSettingsStore.addNewPage({
170
166
  title: 'Page 3',
171
167
  });
172
168
 
@@ -17,7 +17,6 @@ import {
17
17
  useEventTracker,
18
18
  } from '@brand-page-maker/composables/useEventTracker';
19
19
  import { publishBrandPageModalWithStateTr } from '@src/composables/useTranslate';
20
- import { BRAND_PAGE_TYPES } from '@brand-page/models';
21
20
 
22
21
  export default defineComponent({
23
22
  props: {
@@ -203,8 +203,8 @@ const makerMode = computed(() =>
203
203
  ? `admin_${makerStore.brandPageType.toLocaleLowerCase()}`
204
204
  : makerStore.brandPageType.toLocaleLowerCase(),
205
205
  );
206
- const endpoints = computed(() => uiStore.endpoints);
207
- const thirdPartySettings = computed(() => uiStore.thirdPartySettings);
206
+ const _endpoints = computed(() => uiStore.endpoints);
207
+ const _thirdPartySettings = computed(() => uiStore.thirdPartySettings);
208
208
  const isDesignCom = computed(() => containerStore.isDesignCom);
209
209
 
210
210
  const tabsWithTranslations = [
@@ -230,7 +230,7 @@ export const useUiStyleSettingsStore = defineStore('uiStyleSettings', {
230
230
  type: TextStyleType;
231
231
  style: TextStyleDeclaration;
232
232
  }) {
233
- const { textAlign, textStyleType, ...style } = payload.style;
233
+ const { ...style } = payload.style;
234
234
 
235
235
  this.$patch((state) => {
236
236
  state.textStyles.textStyleOptions[payload.type].isModified = true;
@@ -60,7 +60,7 @@ export default defineComponent({
60
60
  templateCategories: computed(
61
61
  () => templateSettingsStore.templateCategories,
62
62
  ),
63
- personalisationData: computed(() => uiStore.personalisationData),
63
+ showAiTemplatesTab: computed(() => uiStore.showAiTemplatesTab),
64
64
  templateSettingsStore,
65
65
  uiStore,
66
66
  isDesignCom: computed(() => containerStore.isDesignCom),
@@ -155,7 +155,7 @@ export default defineComponent({
155
155
  },
156
156
 
157
157
  visibleTabs() {
158
- return this.personalisationData
158
+ return this.showAiTemplatesTab
159
159
  ? this.tabs
160
160
  : [...this.tabs].splice(
161
161
  0,
@@ -7,6 +7,7 @@ export interface TemplateSettingsTemplate {
7
7
  personalisationContentIndex?: number;
8
8
  brandPageModel: BrandPageModel;
9
9
  contentKey?: string;
10
+ usesUserPromptContentKey?: boolean;
10
11
  previewImageUrl?: string;
11
12
  }
12
13
 
@@ -14,6 +14,7 @@ import * as DesignTemplateClient from '../../../clients/design-template-client';
14
14
  import { type DesignTemplate } from '../../../clients/models';
15
15
  import {
16
16
  BP_DEFAULT_TEMPLATE_TYPE_NAME,
17
+ BP_BRAND_SITE_TEMPLATE_TYPE_NAME,
17
18
  SIDE_BAR_TAB_NAMES,
18
19
  } from '@brand-page-maker/constants';
19
20
  import { defineStore, storeToRefs } from 'pinia';
@@ -32,6 +33,7 @@ import {
32
33
  useUiEditableLogoStore,
33
34
  useUiLogoSettingsStore,
34
35
  } from '../../logo-settings/store';
36
+ import { useEventTracker } from '@brand-page-maker/composables/useEventTracker';
35
37
  import {
36
38
  templateSettingsTr,
37
39
  getCurrentLocale,
@@ -39,6 +41,17 @@ import {
39
41
  import { watch } from 'vue';
40
42
 
41
43
  export const DEFAULT_PAGE_SIZE = 6;
44
+
45
+ const POST_PURCHASE_PAGE_SECTION_BY_TAB: Record<string, string> = {
46
+ [TEMPLATE_TABS.all]: 'MakerPostPurchaseSidebarTemplatesAllTab',
47
+ [TEMPLATE_TABS.AI]: 'MakerPostPurchaseSidebarTemplatesAiTab',
48
+ [TEMPLATE_TABS.categories]: 'MakerPostPurchaseSidebarTemplatesCategoryTab',
49
+ };
50
+
51
+ const PRE_PURCHASE_PAGE_SECTION_BY_TAB: Record<string, string> = {
52
+ [TEMPLATE_TABS.all]: 'MakerPrePurchaseSidebarTemplatesAllTab',
53
+ [TEMPLATE_TABS.categories]: 'MakerPrePurchaseSidebarTemplatesCategoryTab',
54
+ };
42
55
  const LOAD_PAGE_RETRY_DELAY = 250;
43
56
 
44
57
  type SelectedTabType = {
@@ -66,6 +79,7 @@ export interface TemplatesSettingState {
66
79
  tabsWithTranslations: SelectedTabType[];
67
80
  logoChangeWatcherInitialized: boolean;
68
81
  initialSearchTerm: string | undefined;
82
+ aiTemplateKeywords: string | undefined;
69
83
  onSearchTermChanged: OnSearchTermChangedCallback | undefined;
70
84
  }
71
85
 
@@ -103,6 +117,7 @@ export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
103
117
  cachedTemplates: {},
104
118
  logoChangeWatcherInitialized: false,
105
119
  initialSearchTerm: undefined,
120
+ aiTemplateKeywords: undefined,
106
121
  onSearchTermChanged: undefined,
107
122
  };
108
123
  },
@@ -302,22 +317,60 @@ export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
302
317
  const editableLogoVariation =
303
318
  editableLogoStore.editableLogoVariations[logoVariation];
304
319
 
320
+ const isPrePurchase = brandPageContainerStore.isPrePurchase;
321
+ const isBrandSite =
322
+ this.templateType === BP_BRAND_SITE_TEMPLATE_TYPE_NAME;
323
+
324
+ // Pre-purchase has no logo draft for logo-based recommendation, so fall back to the seeded
325
+ // search term (the keyword from the URL/cookie - never the business name) so the All tab
326
+ // stays relevant instead of generic (bp-5454).
327
+ const effectiveSearchTerm =
328
+ !this.searchTerm &&
329
+ !this.selectedCategory &&
330
+ isPrePurchase &&
331
+ isBrandSite &&
332
+ this.selectedTab.key === TEMPLATE_TABS.all
333
+ ? this.initialSearchTerm
334
+ : this.searchTerm;
335
+
336
+ const pageSection = isBrandSite
337
+ ? (isPrePurchase
338
+ ? PRE_PURCHASE_PAGE_SECTION_BY_TAB
339
+ : POST_PURCHASE_PAGE_SECTION_BY_TAB)[this.selectedTab.key]
340
+ : undefined;
341
+
342
+ const pageName = isBrandSite
343
+ ? isPrePurchase
344
+ ? 'maker-pre-purchase'
345
+ : 'maker'
346
+ : undefined;
347
+
348
+ const baseParams = {
349
+ page: pageNo,
350
+ categoryName: this.selectedCategory,
351
+ searchTerm: effectiveSearchTerm,
352
+ keywords: this.aiTemplateKeywords,
353
+ logoDraftToken: logoSettingsStore.selectedLogoImage.logoDraftToken,
354
+ logoVariation: logoSettingsStore.selectedLogoImage.logoVariation,
355
+ selectedTemplateToken: designTemplateToken,
356
+ locale: currentLocale,
357
+ logoS3Token: !isByo ? editableLogoVariation.s3Token : undefined,
358
+ logoTemplateToken: isByo ? logoTemplateToken : undefined,
359
+ useLogoForRecommendedTemplates:
360
+ isBrandSite && this.selectedTab.key === TEMPLATE_TABS.all,
361
+ pageSection,
362
+ pageName,
363
+ };
364
+
365
+ // AI templates are interleaved server-side for the Brand Site All tab
366
+ // (bp-5306); the frontend just renders the returned order.
305
367
  const result =
306
368
  await designTemplateClient.getTemplateItemsByTemplateType(
307
369
  this.templateType,
308
370
  {
309
- page: pageNo,
371
+ ...baseParams,
310
372
  pageSize: DEFAULT_PAGE_SIZE,
311
- categoryName: this.selectedCategory,
312
- searchTerm: this.searchTerm,
313
- logoDraftToken:
314
- logoSettingsStore.selectedLogoImage.logoDraftToken,
315
- logoVariation: logoSettingsStore.selectedLogoImage.logoVariation,
316
373
  personalisable: this.selectedTab.key === TEMPLATE_TABS.AI,
317
- selectedTemplateToken: designTemplateToken,
318
- locale: currentLocale,
319
- logoS3Token: !isByo ? editableLogoVariation.s3Token : undefined,
320
- logoTemplateToken: isByo ? logoTemplateToken : undefined,
321
374
  },
322
375
  );
323
376
 
@@ -327,11 +380,27 @@ export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
327
380
 
328
381
  this._setPageCount({ pageCount: result.pageCount });
329
382
 
383
+ if (
384
+ pageNo === 1 &&
385
+ result.abTestValuesToBePushed &&
386
+ Object.keys(result.abTestValuesToBePushed).length > 0
387
+ ) {
388
+ const eventTracker = useEventTracker();
389
+
390
+ for (const [experimentName, experimentValue] of Object.entries(
391
+ result.abTestValuesToBePushed,
392
+ )) {
393
+ eventTracker.sendExperimentStartedEvent(
394
+ experimentName,
395
+ experimentValue,
396
+ );
397
+ }
398
+ }
399
+
330
400
  const templates = await Promise.all(
331
401
  result.paginatedItems.map(async (item) => {
332
402
  try {
333
403
  if (brandPageMakerUserStore.isAdmin) {
334
- // Pre-purchase: full template with brandPageModel for live rendering
335
404
  const template =
336
405
  await designTemplateClient.getTemplateByTemplateToken(
337
406
  item.designTemplateToken,
@@ -349,17 +418,24 @@ export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
349
418
  uiStore.personalisationData.length,
350
419
  );
351
420
 
352
- // Get the contentKey from the selected personalisation variation
353
- // This is needed for the backend preview URL to show the correct variation
354
- const selectedPersonalisation =
355
- uiStore.personalisationData[personalisationContentIndex];
356
-
357
- contentKey = selectedPersonalisation.contentKey;
421
+ contentKey =
422
+ uiStore.personalisationData[personalisationContentIndex]
423
+ .contentKey;
424
+ } else if (item.isPersonalisable) {
425
+ // Pre-purchase has no personalisationData; personalise AI
426
+ // template previews with the prompt content key (bp-5742).
427
+ contentKey = uiStore.userPromptContentKey;
358
428
  }
359
429
 
360
430
  return {
361
431
  id: item.designTemplateToken,
432
+ isPersonalisable: item.isPersonalisable,
362
433
  contentKey,
434
+ // A userPromptContentKey signals this design's real AI images live
435
+ // in the userPrompt bucket (post- or pre-purchase). The preview must
436
+ // then resolve via userPromptContentKey, not the regular bucket which
437
+ // holds placeholders post-purchase (bp-5454).
438
+ usesUserPromptContentKey: !!uiStore.userPromptContentKey,
363
439
  previewImageUrl: item.previewImageUrl,
364
440
  } as TemplateSettingsTemplate;
365
441
  }
@@ -374,7 +450,15 @@ export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
374
450
  (t): t is TemplateSettingsTemplate => t !== null,
375
451
  );
376
452
 
377
- this._addTemplates({ templates: validTemplates });
453
+ // The Categories tab must never surface AI templates or the AI badge
454
+ // (bp-5454 scenario 5). The badge is driven purely by isPersonalisable,
455
+ // so clear it for category results regardless of the template's catalog flag.
456
+ const displayTemplates =
457
+ this.selectedTab.key === TEMPLATE_TABS.categories
458
+ ? validTemplates.map((t) => ({ ...t, isPersonalisable: false }))
459
+ : validTemplates;
460
+
461
+ this._addTemplates({ templates: displayTemplates });
378
462
  this._setPageNoLoaded({ pageNoLoaded: pageNo });
379
463
  } finally {
380
464
  this._setIsBusy({ isBusy: false });
@@ -496,6 +580,9 @@ export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
496
580
  this.initialSearchTerm = payload.initialSearchTerm;
497
581
  this.onSearchTermChanged = payload.onSearchTermChanged;
498
582
  },
583
+ setAiTemplateKeywords(payload: { aiTemplateKeywords: string }) {
584
+ this.aiTemplateKeywords = payload.aiTemplateKeywords;
585
+ },
499
586
  notifySearchTermChanged(searchTerm: string | undefined) {
500
587
  this.onSearchTermChanged?.(searchTerm);
501
588
  },
@@ -103,7 +103,7 @@
103
103
  </div>
104
104
  <p class="tw-mt-4 tw-text-xs tw-text-grayscale-600">
105
105
  {{ tr('poweredBy') }}
106
- <a
106
+ <a
107
107
  href="https://unsplash.com"
108
108
  class="maker-anchor tw-no-underline"
109
109
  >Unsplash</a
@@ -114,11 +114,7 @@ class="maker-anchor tw-no-underline"
114
114
  <script>
115
115
  import UnsplashLibraryMixin from './UnsplashLibrary.mixin.ts';
116
116
  import { Button, Loader, TextInput } from '@designcrowd/fe-shared-lib';
117
- import {
118
- tr,
119
- commonTr,
120
- unsplashImageCategoriesTr,
121
- } from '@src/composables/useTranslate';
117
+ import { tr, commonTr } from '@src/composables/useTranslate';
122
118
 
123
119
  export default {
124
120
  components: {
@@ -151,7 +151,7 @@ interface Props {
151
151
  isMobile?: boolean;
152
152
  }
153
153
 
154
- const props = withDefaults(defineProps<Props>(), {
154
+ withDefaults(defineProps<Props>(), {
155
155
  isMobile: false,
156
156
  });
157
157
 
@@ -205,7 +205,17 @@ const minifyContent = (
205
205
  editor: Editor,
206
206
  assets?: AssetEntry[],
207
207
  ): MinifiedContent => {
208
- const base: MinifiedContent = { id: content.id, type: content.type };
208
+ const base: MinifiedContent = {
209
+ id: content.id,
210
+ type: content.type,
211
+ // Padding Control (BP-5687) — shared across every block, persist when set.
212
+ ...(typeof content.topPadding === 'number' && {
213
+ topPadding: content.topPadding,
214
+ }),
215
+ ...(typeof content.bottomPadding === 'number' && {
216
+ bottomPadding: content.bottomPadding,
217
+ }),
218
+ };
209
219
  const c = content as any;
210
220
 
211
221
  // Helper: include imageUrl and its asset key if available
@@ -1,112 +0,0 @@
1
- import { defineComponent } from 'vue';
2
- import ComponentCommonMixin from '../mixins/component-common.mixin';
3
- import { getRenderText } from '@brand-page/utils';
4
- import debounce from 'lodash.debounce';
5
- import { DEVICE_CSS_TRANSITION_DELAY } from '@brand-page-maker/constants';
6
- const DEBOUNCE_WAIT_MS = 100;
7
- export default defineComponent({
8
- mixins: [ComponentCommonMixin],
9
- props: {
10
- viewModel: {
11
- type: Object,
12
- required: true,
13
- },
14
- isPreview: {
15
- type: Boolean,
16
- required: false,
17
- default: false,
18
- },
19
- context: {
20
- type: Object,
21
- required: true,
22
- },
23
- contentIndex: {
24
- type: Number,
25
- required: false,
26
- default: undefined,
27
- },
28
- },
29
- data() {
30
- return {
31
- debouncedForceCarouselUpdate: undefined,
32
- carouselRef: 'testimonial-carousel',
33
- };
34
- },
35
- created() {
36
- this.debouncedForceCarouselUpdate = debounce(() => {
37
- this.forceCarouselUpdate();
38
- }, DEBOUNCE_WAIT_MS);
39
- },
40
- computed: {
41
- textAlignClass() {
42
- return {
43
- 'c_testimonial-big-image-text-item': this.viewModel.displayStyle === 'big-image',
44
- 'tw-mb-2': this.viewModel.displayStyle !== 'big-image',
45
- };
46
- },
47
- navigationUniqueIndexer() {
48
- return `testimonial-${this.viewModel.id}`;
49
- },
50
- swiperOptions() {
51
- return {
52
- autoHeight: true,
53
- navigation: {
54
- prevEl: `.carousel__button-prev--${this.navigationUniqueIndexer}`,
55
- nextEl: `.carousel__button-next--${this.navigationUniqueIndexer}`,
56
- },
57
- pagination: {
58
- el: `.pagination--${this.navigationUniqueIndexer}`,
59
- clickable: true,
60
- },
61
- };
62
- },
63
- },
64
- methods: {
65
- renderText(val) {
66
- if (val) {
67
- return getRenderText(val);
68
- }
69
- return '';
70
- },
71
- forceCarouselUpdate() {
72
- const shouldUpdateCarousel = Boolean(this.isPreview &&
73
- (this.viewModel.items.length > 1 ||
74
- this.viewModel.displayStyle === 'big-image') &&
75
- this.$refs[this.carouselRef]);
76
- if (shouldUpdateCarousel) {
77
- this.$refs[this.carouselRef].update();
78
- return true;
79
- }
80
- return false;
81
- },
82
- forceCarouselUpdateSlideWidth() {
83
- if (this.forceCarouselUpdate()) {
84
- try {
85
- const width = this.$refs[this.carouselRef].swiper.slidesEl.scrollWidth;
86
- this.$refs[this.carouselRef].swiper.slidesEl.children.forEach((slide) => {
87
- const slideWidth = parseFloat(slide.style.width);
88
- if (slideWidth !== width) {
89
- slide.style.width = width + 'px';
90
- }
91
- });
92
- }
93
- catch (error) {
94
- console.warn('Testimonial: Unable to auto update slide width');
95
- }
96
- }
97
- },
98
- },
99
- watch: {
100
- viewModel: {
101
- handler() {
102
- this.debouncedForceCarouselUpdate();
103
- },
104
- deep: true,
105
- },
106
- isMobileDevice(next, old) {
107
- if (next !== old) {
108
- setTimeout(this.forceCarouselUpdateSlideWidth, DEVICE_CSS_TRANSITION_DELAY + 1);
109
- }
110
- },
111
- },
112
- });
@@ -1,132 +0,0 @@
1
- import { defineComponent } from 'vue';
2
- import type { PropType } from 'vue';
3
- import ComponentCommonMixin from '../mixins/component-common.mixin';
4
- import type { TestimonialSectionViewModel } from '@brand-page/view-models';
5
- import type { BrandPageContext } from '@brand-page/models';
6
- import { getRenderText } from '@brand-page/utils';
7
- import type { DebounceHandle } from 'lodash.debounce';
8
- import debounce from 'lodash.debounce';
9
- import { DEVICE_CSS_TRANSITION_DELAY } from '@brand-page-maker/constants';
10
-
11
- const DEBOUNCE_WAIT_MS = 100;
12
-
13
- export default defineComponent({
14
- mixins: [ComponentCommonMixin],
15
- props: {
16
- viewModel: {
17
- type: Object as PropType<TestimonialSectionViewModel>,
18
- required: true,
19
- },
20
- isPreview: {
21
- type: Boolean,
22
- required: false,
23
- default: false,
24
- },
25
- context: {
26
- type: Object as PropType<BrandPageContext>,
27
- required: true,
28
- },
29
- contentIndex: {
30
- type: Number,
31
- required: false,
32
- default: undefined,
33
- },
34
- },
35
- data() {
36
- return {
37
- debouncedForceCarouselUpdate: undefined as DebounceHandle | undefined,
38
- carouselRef: 'testimonial-carousel',
39
- };
40
- },
41
- created() {
42
- this.debouncedForceCarouselUpdate = debounce(() => {
43
- this.forceCarouselUpdate();
44
- }, DEBOUNCE_WAIT_MS);
45
- },
46
- computed: {
47
- textAlignClass() {
48
- return {
49
- 'c_testimonial-big-image-text-item':
50
- this.viewModel.displayStyle === 'big-image',
51
- 'tw-mb-2': this.viewModel.displayStyle !== 'big-image',
52
- };
53
- },
54
- navigationUniqueIndexer() {
55
- return `testimonial-${this.viewModel.id}`;
56
- },
57
- swiperOptions() {
58
- return {
59
- autoHeight: true,
60
- navigation: {
61
- prevEl: `.carousel__button-prev--${this.navigationUniqueIndexer}`,
62
- nextEl: `.carousel__button-next--${this.navigationUniqueIndexer}`,
63
- },
64
- pagination: {
65
- el: `.pagination--${this.navigationUniqueIndexer}`,
66
- clickable: true,
67
- },
68
- };
69
- },
70
- },
71
- methods: {
72
- renderText(val: string): string {
73
- if (val) {
74
- return getRenderText(val);
75
- }
76
-
77
- return '';
78
- },
79
- forceCarouselUpdate() {
80
- const shouldUpdateCarousel = Boolean(
81
- this.isPreview &&
82
- (this.viewModel.items.length > 1 ||
83
- this.viewModel.displayStyle === 'big-image') &&
84
- this.$refs[this.carouselRef],
85
- );
86
-
87
- if (shouldUpdateCarousel) {
88
- this.$refs[this.carouselRef].update();
89
-
90
- return true;
91
- }
92
-
93
- return false;
94
- },
95
- forceCarouselUpdateSlideWidth() {
96
- if (this.forceCarouselUpdate()) {
97
- try {
98
- const width =
99
- this.$refs[this.carouselRef].swiper.slidesEl.scrollWidth;
100
-
101
- this.$refs[this.carouselRef].swiper.slidesEl.children.forEach(
102
- (slide: HTMLElement) => {
103
- const slideWidth = parseFloat(slide.style.width);
104
-
105
- if (slideWidth !== width) {
106
- slide.style.width = width + 'px';
107
- }
108
- },
109
- );
110
- } catch (error) {
111
- console.warn('Testimonial: Unable to auto update slide width');
112
- }
113
- }
114
- },
115
- },
116
- watch: {
117
- viewModel: {
118
- handler() {
119
- this.debouncedForceCarouselUpdate();
120
- },
121
- deep: true,
122
- },
123
- isMobileDevice(next, old) {
124
- if (next !== old) {
125
- setTimeout(
126
- this.forceCarouselUpdateSlideWidth,
127
- DEVICE_CSS_TRANSITION_DELAY + 1,
128
- );
129
- }
130
- },
131
- },
132
- });