@designcrowd/library.brand-page 5.19.1-error-html2canvas-1 → 5.19.1-error-html2canvas-3

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 (361) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-CxCJU9cc.js → CreatedOnBrandCrowd-de-de-BPP1Wtpt.js} +3 -3
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-zDJCWP5n.js → CreatedOnBrandCrowd-en-us-BlfpQiIg.js} +3 -3
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-DNna1Sh9.js → CreatedOnBrandCrowd-es-es-Tldy_pIo.js} +3 -3
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-C5XVf_hD.js → CreatedOnBrandCrowd-fr-ca-CHmb3VQE.js} +3 -3
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-C5XVf_hD.js → CreatedOnBrandCrowd-fr-fr-CHmb3VQE.js} +3 -3
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-9eUHV_M3.js → CreatedOnBrandCrowd-pt-br-XbU3eK3Z.js} +3 -3
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-9eUHV_M3.js → CreatedOnBrandCrowd-pt-pt-XbU3eK3Z.js} +3 -3
  8. package/lib/src/{CreatedOnDcom-de-de-D9HMpK8Q.js → CreatedOnDcom-de-de-BVMFbVbI.js} +3 -3
  9. package/lib/src/{CreatedOnDcom-en-us-BCTkchV5.js → CreatedOnDcom-en-us--kaKb1kI.js} +3 -3
  10. package/lib/src/{CreatedOnDcom-es-es-B0N7VoTp.js → CreatedOnDcom-es-es-XXVLpF2I.js} +3 -3
  11. package/lib/src/{CreatedOnDcom-fr-ca-Gi4oz_Mm.js → CreatedOnDcom-fr-ca-D-7vtMZ5.js} +3 -3
  12. package/lib/src/{CreatedOnDcom-fr-fr-DJI8eJo1.js → CreatedOnDcom-fr-fr-CM9oQk77.js} +3 -3
  13. package/lib/src/{CreatedOnDcom-pt-br-YNWMAuQf.js → CreatedOnDcom-pt-br-VVgu3BEa.js} +3 -3
  14. package/lib/src/{CreatedOnDcom-pt-pt-DCIIK3sy.js → CreatedOnDcom-pt-pt-CWhA8Vla.js} +3 -3
  15. package/lib/src/brand-page/clients/brand-page.client.d.ts +9 -9
  16. package/lib/src/brand-page/components/banner-section/BannerSection.mixin.d.ts +103 -0
  17. package/lib/src/brand-page/components/banner-section/BannerSection.mixin.js +178 -0
  18. package/lib/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.d.ts +0 -1
  19. package/lib/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.d.ts +4 -2
  20. package/lib/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.js +1 -0
  21. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.d.ts +4 -2
  22. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.js +5 -4
  23. package/lib/src/brand-page/components/page/Page.mixin.d.ts +1 -1
  24. package/lib/src/brand-page/components/page/PageComponent.mixin.d.ts +1 -1
  25. package/lib/src/brand-page/components/payment/Payment.mixin.d.ts +3 -3
  26. package/lib/src/brand-page/components/payment/__fixtures__/request-payment.d.ts +13 -13
  27. package/lib/src/brand-page/components/payment/__fixtures__/support-me.d.ts +13 -13
  28. package/lib/src/brand-page/constants/sections/footer-display.constants.js +1 -1
  29. package/lib/src/brand-page/models/index.d.ts +2 -1
  30. package/lib/src/brand-page/models/index.js +3 -0
  31. package/lib/src/brand-page/models/payment.model.d.ts +1 -1
  32. package/lib/src/brand-page/utils/personalisation.util.js +72 -14
  33. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +21 -19
  34. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.js +1 -0
  35. package/lib/src/brand-page-maker/components/admin-background-settings/AdminBackgroundSettings.mixin.d.ts +16 -10
  36. package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.d.ts +3 -3
  37. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +181 -170
  38. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +3 -0
  39. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.js +1 -0
  40. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +12 -12
  41. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.stories.js +2 -2
  42. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-payment.js +0 -7
  43. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +148 -149
  44. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +21 -21
  45. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.js +1 -1
  46. package/lib/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.d.ts +4 -2
  47. package/lib/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.js +1 -0
  48. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.d.ts +4 -2
  49. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.js +1 -0
  50. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.d.ts +5 -2
  51. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.js +1 -0
  52. package/lib/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.d.ts +4 -2
  53. package/lib/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.js +1 -0
  54. package/lib/src/brand-page-maker/components/device/Device.mixin.d.ts +4 -2
  55. package/lib/src/brand-page-maker/components/device/Device.mixin.js +1 -0
  56. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.d.ts +4 -2
  57. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.js +1 -0
  58. package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +3 -3
  59. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +11 -11
  60. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +27 -25
  61. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.js +1 -0
  62. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +27 -27
  63. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.js +1 -1
  64. package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +17 -12
  65. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +12 -12
  66. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +30 -32
  67. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.js +16 -5
  68. package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +11 -11
  69. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +1 -1
  70. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +1 -1
  71. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +6 -6
  72. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +2 -2
  73. package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +6 -6
  74. package/lib/src/brand-page-maker/constants/config-settings-constant.js +1 -1
  75. package/lib/src/brand-page-maker/convertors/text-image-display-style.convertor.d.ts +1 -1
  76. package/lib/src/brand-page-maker/convertors/text-image-display-style.convertor.js +1 -1
  77. package/lib/src/brand-page-maker/models/content-settings.d.ts +1 -1
  78. package/lib/src/brand-page-maker/models/navigation-style-configs.js +1 -1
  79. package/lib/src/brand-page-maker/routing/brand-page-maker-router.d.ts +1 -2
  80. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +366 -360
  81. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +5 -4
  82. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.js +8 -5
  83. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +3 -1
  84. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +7 -3
  85. package/lib/src/brand-page-maker/stores/history/history-store.d.ts +15 -15
  86. package/lib/src/brand-page-maker/stores/ui/ui-store.d.ts +6 -0
  87. package/lib/src/brand-page-maker/stores/ui/ui-store.js +8 -0
  88. package/lib/src/brand-page-maker/utils/content-settings.util.js +1 -1
  89. package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +1 -1
  90. package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +4 -4
  91. package/lib/src/clients/brand-page-client.d.ts +16 -15
  92. package/lib/src/clients/design-template-client.d.ts +3 -0
  93. package/lib/src/clients/media-client.d.ts +2 -2
  94. package/lib/src/clients/models.d.ts +2 -0
  95. package/lib/src/css/library.brand-page-brandCrowd.min.css +342 -324
  96. package/lib/src/css/library.brand-page-brandPage.min.css +620 -324
  97. package/lib/src/css/library.brand-page-designCom.min.css +342 -324
  98. package/lib/src/css/library.brand-page-preview.min.css +598 -324
  99. package/lib/src/index.d.ts +1 -1
  100. package/lib/src/index.mjs +16 -15
  101. package/lib/src/{lib-CaY174HB.js → lib-yEV1yYI5.js} +35293 -32254
  102. package/lib/src/lib.js +1 -1
  103. package/lib/src/metadata-builder/builders/footer-builder.js +103 -70
  104. package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.js +1 -1
  105. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +1 -1
  106. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +1 -1
  107. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +1 -1
  108. package/lib/src/metadata-builder/builders/section-field-utils.d.ts +7 -0
  109. package/lib/src/metadata-builder/builders/section-field-utils.js +1 -1
  110. package/lib/src/metadata-builder/builders/shape-color-utils.js +1 -1
  111. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +3 -3
  112. package/lib/src/plugins/google-maps-plugin/google-maps-plugin.d.ts +1 -1
  113. package/lib/src/plugins/google-maps-plugin/google-maps-plugin.js +8 -8
  114. package/lib/src/shared/background-settings/components/background-shapes/BackgroundShapeSettings.mixin.d.ts +13 -13
  115. package/lib/src/shared/background-settings/store/background-settings-store.d.ts +3 -3
  116. package/lib/src/shared/color-picker/components/ColorPicker.mixin.d.ts +4 -2
  117. package/lib/src/shared/color-picker/components/ColorPicker.mixin.js +2 -2
  118. package/lib/src/shared/color-picker/components/ColorPickerSwatch.mixin.d.ts +4 -2
  119. package/lib/src/shared/color-picker/components/ColorPickerSwatch.mixin.js +1 -0
  120. package/lib/src/shared/confirm-modal/ConfirmModal.mixin.d.ts +5 -2
  121. package/lib/src/shared/confirm-modal/ConfirmModal.mixin.js +1 -0
  122. package/lib/src/shared/content-settings/components/GenericTextInput.mixin.d.ts +0 -1
  123. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +131 -129
  124. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +2 -1
  125. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +111 -110
  126. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +84 -81
  127. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.js +5 -0
  128. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +117 -109
  129. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +1 -14
  130. package/lib/src/shared/content-settings/components/email-field/EmailField.mixin.d.ts +0 -1
  131. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +72 -70
  132. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.js +4 -3
  133. package/lib/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.d.ts +4 -4
  134. package/lib/src/shared/content-settings/components/icon-library/IconLibrary.mixin.d.ts +3 -1
  135. package/lib/src/shared/content-settings/components/icon-library/IconLibrary.mixin.js +1 -0
  136. package/lib/src/shared/content-settings/components/images-field/ImagesField.mixin.d.ts +2 -2
  137. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.d.ts +4 -3
  138. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.js +1 -1
  139. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +40 -40
  140. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigOptionField.mixin.d.ts +5 -6
  141. package/lib/src/shared/content-settings/components/shape-field/ShapeField.mixin.d.ts +0 -1
  142. package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.d.ts +2 -2
  143. package/lib/src/shared/content-settings/components/tel-field/TelField.mixin.d.ts +0 -1
  144. package/lib/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.d.ts +1 -2
  145. package/lib/src/shared/content-settings/components/text-field/TextField.mixin.d.ts +0 -1
  146. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.d.ts +1 -2
  147. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +1 -1
  148. package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.d.ts +28 -28
  149. package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +0 -1
  150. package/lib/src/shared/content-settings/components/toggle-field/ToggleField.mixin.d.ts +2 -2
  151. package/lib/src/shared/content-settings/components/url-field/UrlField.mixin.d.ts +0 -1
  152. package/lib/src/shared/content-settings/components/youtube-video-field/YoutubeVideoField.mixin.d.ts +0 -1
  153. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +39 -39
  154. package/lib/src/shared/content-settings/utils.js +0 -1
  155. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.d.ts +6 -4
  156. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.js +1 -0
  157. package/lib/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.d.ts +4 -2
  158. package/lib/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.js +1 -0
  159. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +29 -21
  160. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.js +1 -1
  161. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +50 -51
  162. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.d.ts +6 -4
  163. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.js +1 -0
  164. package/lib/src/shared/logo-settings/store/editable-logo-store.js +1 -1
  165. package/lib/src/shared/logo-settings/store/logo-settings-store.d.ts +1 -1
  166. package/lib/src/shared/logo-versions/LogoVersions.mixin.d.ts +13 -5
  167. package/lib/src/shared/logo-versions/LogoVersions.mixin.js +1 -0
  168. package/lib/src/shared/models.d.ts +2 -0
  169. package/lib/src/shared/my-designs/MyDesigns.mixin.d.ts +14 -6
  170. package/lib/src/shared/my-designs/MyDesigns.mixin.js +1 -0
  171. package/lib/src/shared/my-uploads/MyMedia.mixin.d.ts +14 -5
  172. package/lib/src/shared/my-uploads/MyMedia.mixin.js +1 -0
  173. package/lib/src/shared/my-uploads/MyUploads.mixin.d.ts +14 -5
  174. package/lib/src/shared/my-uploads/MyUploads.mixin.js +1 -0
  175. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.d.ts +5 -3
  176. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.js +1 -0
  177. package/lib/src/shared/navigation-style-settings/store/index.d.ts +2 -2
  178. package/lib/src/shared/page-navigation/store/page-navigation-store.d.ts +2 -2
  179. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.d.ts +27 -28
  180. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.js +0 -2
  181. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +188 -177
  182. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +181 -175
  183. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.js +1 -1
  184. package/lib/src/shared/page-settings/store/page-settings-store.d.ts +9 -9
  185. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +39 -39
  186. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.js +0 -1
  187. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +18 -18
  188. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +6 -6
  189. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +66 -60
  190. package/lib/src/shared/style-settings/store/style-settings-store.d.ts +1 -1
  191. package/lib/src/shared/style-settings/store/style-settings-store.js +1 -1
  192. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +20 -450
  193. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.js +2 -2
  194. package/lib/src/shared/template-settings/models.d.ts +1 -0
  195. package/lib/src/shared/template-settings/store/template-settings-store.d.ts +4 -0
  196. package/lib/src/shared/template-settings/store/template-settings-store.js +79 -11
  197. package/lib/src/shared/unsplash-library/UnsplashLibrary.mixin.d.ts +9 -4
  198. package/package.json +61 -57
  199. package/src/brand-page/components/about-section/AboutSection.vue.test.ts +7 -5
  200. package/src/brand-page/components/banner-section/BannerSection.mixin.ts +210 -0
  201. package/src/brand-page/components/brand-page-footer/BrandPageFooter.vue +1 -1
  202. package/src/brand-page/components/image/Image.mixin.ts +1 -1
  203. package/src/brand-page/components/image/Image.test.ts +1 -1
  204. package/src/brand-page/components/images-section/ImagesSection.vue +0 -1
  205. package/src/brand-page/components/logo/LogoRender.vue +188 -188
  206. package/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.ts +1 -0
  207. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.ts +15 -6
  208. package/src/brand-page/components/page-footer/PageFooter.vue +1 -0
  209. package/src/brand-page/components/page-header/HeaderLayout.vue +12 -6
  210. package/src/brand-page/components/page-header/PageHeader.vue +1 -0
  211. package/src/brand-page/components/shapes-section/ShapesSection.vue +1 -1
  212. package/src/brand-page/components/shop/CartModal.vue +1 -3
  213. package/src/brand-page/components/shop/FeaturedDisplay.vue +2 -2
  214. package/src/brand-page/components/shop/PaymentModal.vue +1 -5
  215. package/src/brand-page/components/shop/ProductDetailModal.vue +1 -1
  216. package/src/brand-page/components/shop/Shop.vue +1 -1
  217. package/src/brand-page/components/shop/TextDisplay.vue +1 -1
  218. package/src/brand-page/components/shop/ThumbnailDisplay.vue +2 -2
  219. package/src/brand-page/components/testimonial-section/TestimonialSection.vue +3 -3
  220. package/src/brand-page/components/text-wrapper/TextWrapper.vue +3 -1
  221. package/src/brand-page/constants/sections/footer-display.constants.ts +1 -1
  222. package/src/brand-page/models/index.ts +4 -0
  223. package/src/brand-page/models/payment.model.ts +2 -1
  224. package/src/brand-page/models/shop.model.ts +0 -2
  225. package/src/brand-page/models/user-personalisation.model.ts +1 -2
  226. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +3 -0
  227. package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +1 -0
  228. package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +2 -0
  229. package/src/brand-page/utils/migration/migration-01_1.ts +1 -1
  230. package/src/brand-page/utils/migration/migration-02.ts +0 -1
  231. package/src/brand-page/utils/migration/migration-03.ts +0 -1
  232. package/src/brand-page/utils/migration/migration-04.ts +0 -1
  233. package/src/brand-page/utils/migration/migration-05.ts +1 -5
  234. package/src/brand-page/utils/migration/migration-05_2.ts +1 -1
  235. package/src/brand-page/utils/migration/migration-08.test.ts +1 -1
  236. package/src/brand-page/utils/personalisation.util.test.ts +35 -0
  237. package/src/brand-page/utils/personalisation.util.ts +119 -23
  238. package/src/brand-page/view-models.ts +38 -56
  239. package/src/brand-page-maker/assessors/banner-section-description-visibility.assessor.ts +6 -6
  240. package/src/brand-page-maker/assessors/color-replacement-icon-visibility.assessor.ts +2 -2
  241. package/src/brand-page-maker/assessors/color-replacement-profile-visibility.assessor.ts +2 -2
  242. package/src/brand-page-maker/assessors/color-replacement-visibility.assessor.ts +2 -2
  243. package/src/brand-page-maker/assessors/contact-form-visibility.assessor.ts +14 -14
  244. package/src/brand-page-maker/components/action-bar/ActionBar.mixin.ts +1 -0
  245. package/src/brand-page-maker/components/ai-text-edit/TextBubble.vue +1 -0
  246. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +5 -1
  247. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.ts +1 -0
  248. package/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.stories.ts +2 -5
  249. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +0 -5
  250. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-payment.ts +0 -8
  251. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-site-template.examples.ts +0 -2
  252. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.vue +1 -0
  253. package/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.ts +1 -1
  254. package/src/brand-page-maker/components/color-palette/BpColorPalette.vue +1 -2
  255. package/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.ts +1 -0
  256. package/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.ts +1 -0
  257. package/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.ts +1 -0
  258. package/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.ts +1 -0
  259. package/src/brand-page-maker/components/device/Device.mixin.ts +1 -0
  260. package/src/brand-page-maker/components/navigation/Navigation.mixin.ts +1 -0
  261. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +3 -1
  262. package/src/brand-page-maker/components/sensitive-content/SensitiveContent.vue +1 -4
  263. package/src/brand-page-maker/components/seo-settings/DeleteDomainModal.vue +1 -1
  264. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.ts +1 -0
  265. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.vue +1 -1
  266. package/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.ts +0 -1
  267. package/src/brand-page-maker/components/seo-settings/UrlSettings.vue +0 -1
  268. package/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.vue +1 -5
  269. package/src/brand-page-maker/components/shop/AddOrEditProductContainer.vue +1 -1
  270. package/src/brand-page-maker/components/shop/ReplaceImageSettingsForShop.vue +1 -1
  271. package/src/brand-page-maker/components/social-share/SocialShare.vue +1 -1
  272. package/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.ts +22 -8
  273. package/src/brand-page-maker/components/template-preview/TemplatePreview.vue +5 -10
  274. package/src/brand-page-maker/components/template-preview/TemplatePreviewAiBadge.vue +12 -0
  275. package/src/brand-page-maker/components/video-play/VideoPlayButton.vue +1 -1
  276. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +1 -1
  277. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +6 -6
  278. package/src/brand-page-maker/constants/config-settings-constant.ts +3 -3
  279. package/src/brand-page-maker/convertors/text-image-display-style.convertor.ts +1 -1
  280. package/src/brand-page-maker/models/button-styles-config.ts +4 -2
  281. package/src/brand-page-maker/models/content-settings-configs.ts +4 -2
  282. package/src/brand-page-maker/models/navigation-style-configs.ts +5 -6
  283. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.ts +0 -1
  284. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.ts +8 -5
  285. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +1 -3
  286. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +12 -4
  287. package/src/brand-page-maker/stores/ui/ui-store.ts +16 -0
  288. package/src/brand-page-maker/utils/content-settings.util.ts +1 -1
  289. package/src/brand-page-maker/utils/rich-text-editor.util.ts +4 -4
  290. package/src/clients/design-template-client.ts +3 -0
  291. package/src/clients/models.ts +2 -0
  292. package/src/lib.ts +1 -0
  293. package/src/metadata-builder/builders/footer-builder.test.ts +200 -1
  294. package/src/metadata-builder/builders/footer-builder.ts +151 -95
  295. package/src/metadata-builder/builders/section-builders/image-gallery-builder.ts +1 -1
  296. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +1 -1
  297. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +1 -1
  298. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +1 -1
  299. package/src/metadata-builder/builders/section-field-utils.ts +1 -1
  300. package/src/metadata-builder/builders/shape-color-utils.ts +2 -2
  301. package/src/metadata-builder/parsers/ai-toolcall-parser.ts +3 -3
  302. package/src/plugins/google-maps-plugin/google-maps-plugin.ts +8 -8
  303. package/src/shared/background-settings/components/BackgroundSettings.vue +1 -1
  304. package/src/shared/background-settings/components/background-color/BackgroundColorSettings.vue +1 -1
  305. package/src/shared/color-picker/components/ColorPicker.mixin.ts +2 -7
  306. package/src/shared/color-picker/components/ColorPickerSwatch.mixin.ts +1 -0
  307. package/src/shared/common/NumberInput.vue +1 -0
  308. package/src/shared/common/SideBarSettingsHeader.vue +2 -2
  309. package/src/shared/confirm-modal/ConfirmModal.mixin.ts +1 -0
  310. package/src/shared/content-settings/components/booking-url-field/BookingUrlField.vue +1 -0
  311. package/src/shared/content-settings/components/button-configuration-field/ButtonConfigurationField.vue +1 -0
  312. package/src/shared/content-settings/components/color-field/ColorField.vue +3 -10
  313. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +1 -1
  314. package/src/shared/content-settings/components/content-settings/ContentSettingsLockedButton.vue +1 -0
  315. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.ts +5 -0
  316. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +1 -14
  317. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.ts +4 -6
  318. package/src/shared/content-settings/components/icon-library/IconLibrary.mixin.ts +1 -0
  319. package/src/shared/content-settings/components/items-field/ItemsField.mixin.ts +1 -1
  320. package/src/shared/content-settings/components/logo-selection-field/LogoSelectionField.vue +1 -1
  321. package/src/shared/content-settings/components/logo-size-field/LogoSizeSliderField.vue +1 -1
  322. package/src/shared/content-settings/components/page-dropdown-field/PageDropdownField.vue +1 -1
  323. package/src/shared/content-settings/components/personalisation-role-field/PersonalisationRoleField.vue +4 -4
  324. package/src/shared/content-settings/components/text-image-field/TextImageField.vue +2 -8
  325. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +1 -1
  326. package/src/shared/content-settings/models.ts +3 -2
  327. package/src/shared/content-settings/utils.ts +0 -1
  328. package/src/shared/dropzone-image-uploader/components/DropzoneImageUploader.vue +1 -0
  329. package/src/shared/ecommerce-settings/store/cart-store.test.ts +1 -1
  330. package/src/shared/font-family-selector/FontFamilySelector.mixin.ts +1 -0
  331. package/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.ts +1 -0
  332. package/src/shared/logo-settings/components/EditLogoSettings.mixin.ts +1 -1
  333. package/src/shared/logo-settings/components/LogoSettings.mixin.ts +0 -1
  334. package/src/shared/logo-settings/components/LogoSettingsHeader.mixin.ts +1 -0
  335. package/src/shared/logo-settings/components/LogoStyleSettingsWithState.vue +2 -2
  336. package/src/shared/logo-settings/components/LogoTemplateSearch.vue +1 -1
  337. package/src/shared/logo-settings/store/editable-logo-store.ts +1 -1
  338. package/src/shared/logo-settings/store/logo-settings-store.test.ts +4 -4
  339. package/src/shared/logo-versions/LogoVersions.mixin.ts +1 -0
  340. package/src/shared/models.ts +6 -0
  341. package/src/shared/my-designs/MyDesigns.mixin.ts +1 -0
  342. package/src/shared/my-uploads/MyMedia.mixin.ts +1 -0
  343. package/src/shared/my-uploads/MyMediaSelectionItem.vue +2 -1
  344. package/src/shared/my-uploads/MyUploads.mixin.ts +1 -0
  345. package/src/shared/my-uploads/models.ts +1 -2
  346. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.ts +1 -0
  347. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.vue +1 -1
  348. package/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.ts +0 -3
  349. package/src/shared/page-settings/components/page-settings/NestedDraggable.vue +1 -1
  350. package/src/shared/page-settings/components/page-settings/PageSettings.vue +1 -2
  351. package/src/shared/page-settings/components/page-settings-section-styles/HeaderDisplayStyle.vue +1 -1
  352. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.ts +1 -1
  353. package/src/shared/page-settings/store/page-settings-store.test.ts +4 -8
  354. package/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.ts +0 -1
  355. package/src/shared/shape-library/ShapeLibrary.vue +2 -2
  356. package/src/shared/style-settings/store/style-settings-store.ts +1 -1
  357. package/src/shared/template-settings/components/TemplatesSettings.mixin.ts +2 -2
  358. package/src/shared/template-settings/models.ts +1 -0
  359. package/src/shared/template-settings/store/template-settings-store.ts +105 -18
  360. package/src/shared/unsplash-library/UnsplashLibrary.vue +2 -6
  361. package/src/shared/video-library/VideoLibrary.vue +1 -1
@@ -36,7 +36,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
36
36
  toggleExpanded(pageId: string): void;
37
37
  isExpanded(pageId: string): boolean;
38
38
  expandSubPageIfCurrentPage(): void;
39
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
39
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "close-side-menu"[], "close-side-menu", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
40
40
  context: {
41
41
  type: PropType<BrandPageContext>;
42
42
  required: true;
@@ -53,5 +53,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
53
53
  type: PropType<NavigationDesktop | NavigationMobile>;
54
54
  required: true;
55
55
  };
56
- }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
56
+ }>> & Readonly<{
57
+ "onClose-side-menu"?: ((...args: any[]) => any) | undefined;
58
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
57
59
  export default _default;
@@ -18,6 +18,7 @@ export default defineComponent({
18
18
  required: true,
19
19
  },
20
20
  },
21
+ emits: ['close-side-menu'],
21
22
  data() {
22
23
  return {
23
24
  expandedItems: {}, // Keep track of which navs are expanded
@@ -41,15 +42,15 @@ export default defineComponent({
41
42
  },
42
43
  // Prevents us from doubling down on em sizing of font
43
44
  defaultWrapperStyle() {
44
- const { fontSize, lineHeight, letterSpacing, ...rest } = this.defaultButtonStyle;
45
+ const { fontSize: _fontSize, lineHeight: _lineHeight, letterSpacing: _letterSpacing, ...rest } = this.defaultButtonStyle;
45
46
  return rest;
46
47
  },
47
48
  selectedWrapperStyle() {
48
- const { fontSize, lineHeight, letterSpacing, ...rest } = this.selectedButtonStyle;
49
+ const { fontSize: _fontSize, lineHeight: _lineHeight, letterSpacing: _letterSpacing, ...rest } = this.selectedButtonStyle;
49
50
  return rest;
50
51
  },
51
52
  routes() {
52
- return this.visibleNavItems.map((navItem, i) => {
53
+ return this.visibleNavItems.map((navItem, _i) => {
53
54
  return {
54
55
  routeName: navItem.routeName,
55
56
  routeParams: navItem.routeParams,
@@ -79,7 +80,7 @@ export default defineComponent({
79
80
  paddingLeft: '32px',
80
81
  backgroundColor: isActive
81
82
  ? baseStyle.backgroundColor
82
- : this.styles.hamburgerMenuStyle.subNavBackgroundColor ?? '#ffffff',
83
+ : (this.styles.hamburgerMenuStyle.subNavBackgroundColor ?? '#ffffff'),
83
84
  };
84
85
  },
85
86
  closeSideMenu() {
@@ -145,8 +145,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
145
145
  }>, {
146
146
  viewport: ViewportsType;
147
147
  isMobileDevice: boolean;
148
- containerClientHeight: number | undefined;
149
148
  containerClientWidth: number | undefined;
149
+ containerClientHeight: number | undefined;
150
150
  isContentSelected: boolean;
151
151
  isHeaderSelected: boolean;
152
152
  isFooterSelected: boolean;
@@ -78,7 +78,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
78
78
  }>> & Readonly<{}>, {
79
79
  brandPageToken: string;
80
80
  isMobileDevice: boolean;
81
- containerClientHeight: number;
82
81
  containerClientWidth: number;
82
+ containerClientHeight: number;
83
83
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
84
84
  export default _default;
@@ -23,7 +23,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
23
23
  required: true;
24
24
  };
25
25
  viewModel: {
26
- type: PropType<SupportMeViewModel | RequestPaymentViewModel>;
26
+ type: PropType<RequestPaymentViewModel | SupportMeViewModel>;
27
27
  required: true;
28
28
  };
29
29
  paymentConfig: {
@@ -42,7 +42,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
42
42
  readonly CheckoutStripe: "checkout-stripe";
43
43
  readonly Success: "success";
44
44
  };
45
- cart: CreateCartResult<unknown> | null | undefined;
45
+ cart: CreateCartResult<unknown> | undefined | null;
46
46
  isCollapsed: boolean;
47
47
  isPaymentConfigActive: boolean;
48
48
  state: State;
@@ -78,7 +78,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
78
78
  required: true;
79
79
  };
80
80
  viewModel: {
81
- type: PropType<SupportMeViewModel | RequestPaymentViewModel>;
81
+ type: PropType<RequestPaymentViewModel | SupportMeViewModel>;
82
82
  required: true;
83
83
  };
84
84
  paymentConfig: {
@@ -3,33 +3,33 @@ export declare const context: {
3
3
  stripePublishableKey: string;
4
4
  isTemplate: boolean;
5
5
  isPreview: boolean;
6
- isMobile?: boolean | undefined;
6
+ isMobile?: boolean;
7
7
  isDesignCom: boolean;
8
8
  isProduction: boolean;
9
9
  isServerRender: boolean;
10
10
  brandPageSlug: string;
11
- brandPageToken?: string | undefined;
12
- pages?: import("../../../view-models").PageViewModel[] | undefined;
11
+ brandPageToken?: string;
12
+ pages?: import("../../../view-models").PageViewModel[];
13
13
  nav: import("../../../view-models").NavViewModel;
14
- currentPageRelativePath?: string | undefined;
14
+ currentPageRelativePath?: string;
15
15
  runtimeEnvironment: string;
16
16
  recaptchaSiteKey: string | undefined;
17
17
  pageTitle: string;
18
18
  customDomain: string | undefined;
19
- brandPageType: "default" | "brandSite" | "brandContact";
19
+ brandPageType: import("../../../models").BrandPageType;
20
20
  isBrandPage: boolean;
21
21
  isBrandPageOrIsBrandContact: boolean;
22
22
  isBrandSite: boolean;
23
23
  isBrandContact: boolean;
24
24
  options?: {
25
- disableNavigationSideMenu?: boolean | undefined;
26
- mediaSizes?: "size1x" | "size2x" | "sizeThumb" | undefined;
27
- renderVideoAsImage?: boolean | undefined;
28
- shouldPlayVideos?: boolean | undefined;
29
- enableSaveContact?: boolean | undefined;
30
- } | undefined;
31
- abTests?: import("../../../models").AbTest | undefined;
25
+ disableNavigationSideMenu?: boolean;
26
+ mediaSizes?: import("../../../models").MediaSizes;
27
+ renderVideoAsImage?: boolean;
28
+ shouldPlayVideos?: boolean;
29
+ enableSaveContact?: boolean;
30
+ };
31
+ abTests?: import("../../../models").AbTest;
32
32
  isCapturingPreview: boolean;
33
- disableLogoRenderOnServerside?: boolean | undefined;
33
+ disableLogoRenderOnServerside?: boolean;
34
34
  };
35
35
  export declare const viewModel: RequestPaymentViewModel;
@@ -3,33 +3,33 @@ export declare const context: {
3
3
  stripePublishableKey: string;
4
4
  isTemplate: boolean;
5
5
  isPreview: boolean;
6
- isMobile?: boolean | undefined;
6
+ isMobile?: boolean;
7
7
  isDesignCom: boolean;
8
8
  isProduction: boolean;
9
9
  isServerRender: boolean;
10
10
  brandPageSlug: string;
11
- brandPageToken?: string | undefined;
12
- pages?: import("../../../view-models").PageViewModel[] | undefined;
11
+ brandPageToken?: string;
12
+ pages?: import("../../../view-models").PageViewModel[];
13
13
  nav: import("../../../view-models").NavViewModel;
14
- currentPageRelativePath?: string | undefined;
14
+ currentPageRelativePath?: string;
15
15
  runtimeEnvironment: string;
16
16
  recaptchaSiteKey: string | undefined;
17
17
  pageTitle: string;
18
18
  customDomain: string | undefined;
19
- brandPageType: "default" | "brandSite" | "brandContact";
19
+ brandPageType: import("../../../models").BrandPageType;
20
20
  isBrandPage: boolean;
21
21
  isBrandPageOrIsBrandContact: boolean;
22
22
  isBrandSite: boolean;
23
23
  isBrandContact: boolean;
24
24
  options?: {
25
- disableNavigationSideMenu?: boolean | undefined;
26
- mediaSizes?: "size1x" | "size2x" | "sizeThumb" | undefined;
27
- renderVideoAsImage?: boolean | undefined;
28
- shouldPlayVideos?: boolean | undefined;
29
- enableSaveContact?: boolean | undefined;
30
- } | undefined;
31
- abTests?: import("../../../models").AbTest | undefined;
25
+ disableNavigationSideMenu?: boolean;
26
+ mediaSizes?: import("../../../models").MediaSizes;
27
+ renderVideoAsImage?: boolean;
28
+ shouldPlayVideos?: boolean;
29
+ enableSaveContact?: boolean;
30
+ };
31
+ abTests?: import("../../../models").AbTest;
32
32
  isCapturingPreview: boolean;
33
- disableLogoRenderOnServerside?: boolean | undefined;
33
+ disableLogoRenderOnServerside?: boolean;
34
34
  };
35
35
  export declare const viewModel: SupportMeViewModel;
@@ -1,5 +1,5 @@
1
1
  import { ALIGN_CENTERED, ALIGN_JUSTIFIED } from '../misc.constants';
2
- import { tr, commonTr } from '@src/composables/useTranslate';
2
+ import { commonTr } from '@src/composables/useTranslate';
3
3
  export const FOOTER_DISPLAY = {
4
4
  /** @deprecated */
5
5
  ALIGN_CENTERED, // mapped to CENTERED
@@ -42,7 +42,7 @@ export declare const GALLERY_TYPES: {
42
42
  readonly masonry: "masonry";
43
43
  };
44
44
  export type GalleryType = keyof typeof GALLERY_TYPES;
45
- export declare const availableGalleryTypes: ("grid" | "carousel" | "masonry")[];
45
+ export declare const availableGalleryTypes: GalleryType[];
46
46
  export declare class GalleryStyles {
47
47
  galleryType: GalleryType;
48
48
  constructor(option?: Partial<GalleryStyles>);
@@ -547,6 +547,7 @@ export interface SaveContactOptions {
547
547
  }
548
548
  export declare class BrandPageModel {
549
549
  v: number;
550
+ userPromptContentKey?: string;
550
551
  styles: PageStyles;
551
552
  /** @deprecated */
552
553
  headerStyles?: AbstractPageHeaderStyles;
@@ -400,6 +400,9 @@ export class PageFooterMobile extends AbstractPageFooterStyles {
400
400
  export class BrandPageModel {
401
401
  // Model version
402
402
  v;
403
+ // AI personalisation key persisted with the draft so previews survive login/checkout-back/
404
+ // refresh - content is retrieved by this token (user-agnostic), not regenerated (bp-5742).
405
+ userPromptContentKey;
403
406
  styles;
404
407
  /** @deprecated */
405
408
  headerStyles;
@@ -50,7 +50,7 @@ export interface StripePaymentIntent {
50
50
  currency: string;
51
51
  }
52
52
  export declare const isStripePaymentIntent: (value: any) => value is StripePaymentIntent;
53
- export interface CreateCartResult<T> {
53
+ export interface CreateCartResult<T = unknown> {
54
54
  cartId: string;
55
55
  paymentProviderName: string;
56
56
  paymentProviderExternalId: string;
@@ -206,15 +206,59 @@ const getPersonalisationValueAsync = async (section, property) => {
206
206
  }
207
207
  return { value: propertyValue, section };
208
208
  };
209
+ // The userPrompt AI content generation only populates these content-bearing sections
210
+ // (see GenerateAiDesignMakerContentService / GenerateWebsiteContentService - About,
211
+ // Information, Profile, Media). Sections like email/website/phone are never generated, so
212
+ // blocks whose role points at an ungenerated section fall back to this pool.
213
+ const PERSONALISATION_FALLBACK_ROLES = [
214
+ 'profile',
215
+ 'about',
216
+ 'information',
217
+ 'media',
218
+ ];
219
+ // "Effectively empty" = no renderable content (ungenerated userPrompt sections like
220
+ // email/website/phone). A section that has data but lacks one property is NOT empty - it
221
+ // intentionally keeps its original content.
222
+ const isSectionEffectivelyEmpty = (section) => {
223
+ if (!section) {
224
+ return true;
225
+ }
226
+ return (!section.title &&
227
+ !section.name &&
228
+ !section.url &&
229
+ !section.description &&
230
+ !section.descriptionShort &&
231
+ !section.ctaTitle &&
232
+ !section.imageUrls?.length &&
233
+ !section.shapes?.length &&
234
+ !section.items?.length &&
235
+ !section.mainShapesCollection?.tall?.length &&
236
+ !section.mainShapesCollection?.square?.length &&
237
+ !section.mainShapesCollection?.wide?.length);
238
+ };
239
+ // Resolve a property from a specific role's section. Returns null when that section is
240
+ // ungenerated (effectively empty) or cannot supply the property, so the caller can try the
241
+ // next role.
242
+ const resolvePersonalisationValueForRoleAsync = async (role, property, personalisation) => {
243
+ const key = `${role}Section`;
244
+ const section = personalisation[key];
245
+ if (isSectionEffectivelyEmpty(section)) {
246
+ return null;
247
+ }
248
+ const { value, section: updatedSection, valuesToUpdate, } = await getPersonalisationValueAsync(section, property);
249
+ if (value === undefined || value === null) {
250
+ return null;
251
+ }
252
+ return {
253
+ value,
254
+ personalisation: { ...personalisation, [key]: updatedSection },
255
+ valuesToUpdate,
256
+ };
257
+ };
209
258
  const getPersonalisationValueFromPropertyAsync = async (propertyKey, propertyValue, personalisationRole, personalisationOverride, personalisation, contentType) => {
210
259
  if (!personalisationRole || personalisationOverride === 'none') {
211
260
  return { value: undefined, personalisation };
212
261
  }
213
- const matchingValue = Object.entries(personalisation).find(([key]) => key === `${personalisationRole}Section`);
214
- if (!matchingValue) {
215
- return { value: undefined, personalisation };
216
- }
217
- const section = matchingValue[1];
218
262
  const mapping = getPersonalisationMappingForContentType(contentType);
219
263
  const matchingProperty = Object.entries(mapping).find(([, value]) => value.includes(propertyKey));
220
264
  if (!matchingProperty) {
@@ -225,15 +269,29 @@ const getPersonalisationValueFromPropertyAsync = async (propertyKey, propertyVal
225
269
  brandPageType: personalisation.type,
226
270
  isSvgShape: typeof propertyValue === 'string' && propertyValue.endsWith('.svg'),
227
271
  });
228
- const { value, section: updatedSection, valuesToUpdate, } = await getPersonalisationValueAsync(section, property);
229
- return {
230
- value,
231
- personalisation: {
232
- ...personalisation,
233
- [`${personalisationRole}Section`]: updatedSection,
234
- },
235
- valuesToUpdate,
236
- };
272
+ const primaryKey = `${personalisationRole}Section`;
273
+ const primarySection = personalisation[primaryKey];
274
+ // When the block's own section has content, use it as-is - this preserves existing
275
+ // behaviour, including legitimately keeping the original when that section lacks a
276
+ // specific property (e.g. no items, or an invalid shape).
277
+ if (!isSectionEffectivelyEmpty(primarySection)) {
278
+ const { value, section: updatedSection, valuesToUpdate, } = await getPersonalisationValueAsync(primarySection, property);
279
+ return {
280
+ value,
281
+ personalisation: { ...personalisation, [primaryKey]: updatedSection },
282
+ valuesToUpdate,
283
+ };
284
+ }
285
+ // The block's section was never generated - fall back to the first populated section that
286
+ // can supply this property, so it doesn't render the "should be AI generated" placeholder.
287
+ // Never reached when the section exists (above) or all are populated (AI Website Builder).
288
+ for (const role of PERSONALISATION_FALLBACK_ROLES) {
289
+ const resolved = await resolvePersonalisationValueForRoleAsync(role, property, personalisation);
290
+ if (resolved) {
291
+ return resolved;
292
+ }
293
+ }
294
+ return { value: undefined, personalisation };
237
295
  };
238
296
  const applyPersonalisationToBrandPageContentsRecursiveAsync = async (personalisation, mappingType, content, personalisationRole) => {
239
297
  let isApplied = false;
@@ -6,12 +6,12 @@ declare const _default: import("vue").DefineComponent<{}, {
6
6
  isBrandContact: import("vue").ComputedRef<boolean>;
7
7
  userStore: import("pinia").Store<"brandPageMakerUser", import("@brand-page-maker/stores").UserState, {}, {
8
8
  setUserState(payload: {
9
- emailAddress?: string | undefined;
10
- userToken?: string | undefined;
11
- isAdmin?: boolean | undefined;
12
- hasPremiumSubscription?: boolean | undefined;
13
- brandPageCommissionPercentage?: number | undefined;
14
- features?: Partial<import("../../../constants/ui").UIUserFeatures> | undefined;
9
+ emailAddress?: string;
10
+ userToken?: string;
11
+ isAdmin?: boolean;
12
+ hasPremiumSubscription?: boolean;
13
+ brandPageCommissionPercentage?: number;
14
+ features?: Partial<import("@brand-page-maker/stores").UserFeatures>;
15
15
  }): void;
16
16
  }>;
17
17
  brandPageMakerStore: import("pinia").Store<"brandPageMaker", import("@brand-page-maker/stores").BrandPageMakerState, {
@@ -22,7 +22,7 @@ declare const _default: import("vue").DefineComponent<{}, {
22
22
  brandPageToken(): string | undefined;
23
23
  brandPageDescription(): string;
24
24
  brandPageSlug(): string;
25
- brandPageTemplate(): any;
25
+ brandPageTemplate(): import("@brand-page/models").BrandPageData;
26
26
  brandPageTitle(): string;
27
27
  brandPageViewModel(): import("../../../brand-page").BrandPageViewModel;
28
28
  gettyVideoIds(): string[];
@@ -37,7 +37,7 @@ declare const _default: import("vue").DefineComponent<{}, {
37
37
  showBrandCrowdLogo(): boolean;
38
38
  }, {
39
39
  setMode(payload: {
40
- mode: "images" | "edit";
40
+ mode: import("@brand-page-maker/stores").BrandPageSettingsMode;
41
41
  }): void;
42
42
  setFaviconUrl(payload: {
43
43
  faviconUrl: string | undefined;
@@ -81,7 +81,7 @@ declare const _default: import("vue").DefineComponent<{}, {
81
81
  enqueueContentErrorMessage(): void;
82
82
  dequeueNotificationMessageQueue(): void;
83
83
  setCurrentNotificationMessage(payload: {
84
- message: false | import("@brand-page-maker/stores").NotificationMessage;
84
+ message: import("@brand-page-maker/stores").NotificationMessage | false;
85
85
  }): void;
86
86
  setIsApplyingTemplate(payload: import("@brand-page-maker/stores").IsApplyingTemplatePayload): void;
87
87
  setIsPageNavigating(isPageNavigating: boolean): void;
@@ -100,9 +100,9 @@ declare const _default: import("vue").DefineComponent<{}, {
100
100
  applySelectedTemplate(): Promise<void>;
101
101
  enqueueErrorMessage(): Promise<void>;
102
102
  enqueueSaveSuccessMessage(payload?: {
103
- description?: string | undefined;
104
- isPublished?: boolean | undefined;
105
- noDescription?: boolean | undefined;
103
+ description?: string;
104
+ isPublished?: boolean;
105
+ noDescription?: boolean;
106
106
  }): Promise<void>;
107
107
  hideChangeTemplateConfirmModal(): void;
108
108
  onBackgroundChanged(): void;
@@ -118,16 +118,16 @@ declare const _default: import("vue").DefineComponent<{}, {
118
118
  content: TContent;
119
119
  }>(payload: P): Promise<void>;
120
120
  _captureTemplateSwitchIfEnabled(): void;
121
- applyHistorySnapshot(snapshot: import("@brand-page/models").BrandPageModel, activePageId?: string | undefined, logoEditsStr?: string | undefined): Promise<void>;
122
- _syncLogoSettingsFromSnapshot(snapshot: import("@brand-page/models").BrandPageModel, logoEditsStr?: string | undefined): Promise<void>;
123
- _navigateToActivePage(activePageId?: string | undefined): void;
121
+ applyHistorySnapshot(snapshot: import("@brand-page/models").BrandPageModel, activePageId?: string, logoEditsStr?: string): Promise<void>;
122
+ _syncLogoSettingsFromSnapshot(snapshot: import("@brand-page/models").BrandPageModel, logoEditsStr?: string): Promise<void>;
123
+ _navigateToActivePage(activePageId?: string): void;
124
124
  _fallbackSidebarIfSelectedContentMissing(snapshot: import("@brand-page/models").BrandPageModel): void;
125
125
  export(): import("@brand-page/models").BrandPageModel;
126
126
  setBrandPageType({ brandPageType }: {
127
- brandPageType: "default" | "brandSite" | "brandContact";
127
+ brandPageType: import("@brand-page/models").BrandPageType;
128
128
  }): void;
129
129
  initialiseStoresByBrandPageModelAsync(brandPageModel: import("@brand-page/models").BrandPageModel): Promise<void>;
130
- initialise({ brandPage, brandPageType, logoDraftDesignAttributes, unsplashApplicationName, templateCategories, personalisationData, isPersonalisationEnabled, businessName, industry, layout, logoVariationImageUrls, shopConfigData, isServerRenderOverride, }: import("@brand-page-maker/stores").InitialisePayload): Promise<void>;
130
+ initialise({ brandPage, brandPageType, logoDraftDesignAttributes, unsplashApplicationName, templateCategories, personalisationData, isPersonalisationEnabled, userPromptContentKey, showAiTemplatesTab, businessName, industry, layout, logoVariationImageUrls, shopConfigData: _shopConfigData, isServerRenderOverride, }: import("@brand-page-maker/stores").InitialisePayload): Promise<void>;
131
131
  initialisePages({ pages, sections, }: {
132
132
  pages: import("@brand-page/models").PageModel[];
133
133
  sections: import("../../../shared/page-settings/store").PageSettingsStateSections;
@@ -155,11 +155,13 @@ declare const _default: import("vue").DefineComponent<{}, {
155
155
  viewport: import("@brand-page/models").ViewportsType;
156
156
  }): void;
157
157
  showStripeOnboardingModal(): Promise<void>;
158
- selectInitialCategories(payload: import("../../../shared/template-settings/models").InitialCategories): void;
158
+ selectInitialCategories(payload: import("@brand-page-maker/stores").SelectedCategoryPayload): void;
159
159
  }>;
160
160
  }, {}, {}, {
161
161
  saveBrandPage(): void;
162
162
  saveAndPublishBrandPage(isActionBar: boolean): void;
163
163
  createTeamCards(isTopNav: boolean): void;
164
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
164
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "create-team-cards"[], "create-team-cards", import("vue").PublicProps, Readonly<{}> & Readonly<{
165
+ "onCreate-team-cards"?: ((...args: any[]) => any) | undefined;
166
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
165
167
  export default _default;
@@ -4,6 +4,7 @@ import { computed, defineComponent } from 'vue';
4
4
  import { UPGRADE_CTA_LOCATIONS } from './../../composables/useEventTracker';
5
5
  import { BRAND_PAGE_TYPES } from '@brand-page/models';
6
6
  export default defineComponent({
7
+ emits: ['create-team-cards'],
7
8
  setup() {
8
9
  const userStore = useBrandPageMakerUserStore();
9
10
  const brandPageMakerStore = useBrandPageMakerStore();
@@ -180,7 +180,7 @@ declare const _default: import("vue").DefineComponent<{}, {
180
180
  wordBreak?: string | undefined;
181
181
  };
182
182
  }[];
183
- personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
183
+ personalisationRole?: import("../../../brand-page").PersonalisationRole | undefined;
184
184
  media?: {
185
185
  type: import("../../../brand-page").MediaTypes;
186
186
  } | undefined;
@@ -243,14 +243,20 @@ declare const _default: import("vue").DefineComponent<{}, {
243
243
  thirdPartySettings: import("../../../lib").UIRootStateThirdPartySettings;
244
244
  }): void;
245
245
  setDeviceMode({ mode }: {
246
- mode: "desktop" | "mobile";
246
+ mode: import("../../../lib").UiDeviceMode;
247
247
  }): void;
248
248
  setScreenSizeMode({ mode }: {
249
- mode: "desktop" | "mobile";
249
+ mode: import("../../../lib").UiScreenSizeMode;
250
250
  }): void;
251
251
  setUserPersonalisationData({ personalisationData, }: {
252
252
  personalisationData: import("../../../brand-page").UserPersonalisationContent[];
253
253
  }): void;
254
+ setUserPromptContentKey({ userPromptContentKey, }: {
255
+ userPromptContentKey: string | undefined;
256
+ }): void;
257
+ setShowAiTemplatesTab({ showAiTemplatesTab, }: {
258
+ showAiTemplatesTab: boolean;
259
+ }): void;
254
260
  onBackgroundChanged(): void;
255
261
  onContentChanged(): void;
256
262
  onStyleChanged(): void;
@@ -263,7 +269,7 @@ declare const _default: import("vue").DefineComponent<{}, {
263
269
  type: string;
264
270
  }): Promise<void>;
265
271
  onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
266
- showUpgradeModalAndSaveAsync(contextualUpgradeType?: string | number | symbol | undefined): Promise<void>;
272
+ showUpgradeModalAndSaveAsync(contextualUpgradeType?: import("@brand-page-maker/stores").WebsiteContextUpgradeType): Promise<void>;
267
273
  setIsPersonalisationEnabled({ isPersonalisationEnabled, }: {
268
274
  isPersonalisationEnabled: boolean;
269
275
  }): void;
@@ -273,11 +279,11 @@ declare const _default: import("vue").DefineComponent<{}, {
273
279
  }, {
274
280
  onBackgroundChanged(): void;
275
281
  setBackgroundStyle({ backgroundStyle, }: {
276
- backgroundStyle: Partial<Omit<BrandPageCssStyle, "backgroundColor">>;
282
+ backgroundStyle: import("../../../brand-page").BackgroundStyle;
277
283
  }): void;
278
284
  setBackgroundShapes(payload: import("../../../brand-page").BackgroundShape[]): void;
279
285
  setBackgroundPersonalisationRole(payload: {
280
- personalisationRole: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
286
+ personalisationRole: import("../../../brand-page").PersonalisationRole | undefined;
281
287
  }): void;
282
288
  setBackgroundShapeStyle(payload: BrandPageCssStyle): void;
283
289
  setPrimaryBackgroundShapeStyle(payload: BrandPageCssStyle): void;
@@ -286,9 +292,9 @@ declare const _default: import("vue").DefineComponent<{}, {
286
292
  }): void;
287
293
  addBackgroundShape({ shapeUrl, width, height, aspectRatio, }: {
288
294
  shapeUrl: string;
289
- width?: number | undefined;
290
- height?: number | undefined;
291
- aspectRatio?: number | undefined;
295
+ width?: number;
296
+ height?: number;
297
+ aspectRatio?: number;
292
298
  }): void;
293
299
  deleteBackgroundShape({ shapeIndex }: {
294
300
  shapeIndex: number;
@@ -303,7 +309,7 @@ declare const _default: import("vue").DefineComponent<{}, {
303
309
  setBackgroundShapeSettings(payload: import("../../../shared/background-settings/background-settings-models").SetBackgroundShapeSettingsPayload): void;
304
310
  setRecommendedLogoColors(payload: import("../../../shared/background-settings/background-settings-models").SetRecommendedLogoColorsPayload): void;
305
311
  setBackgroundMode(payload: {
306
- backgroundMode: "images" | "edit";
312
+ backgroundMode: import("@brand-page-maker/stores").BrandPageSettingsMode;
307
313
  }): void;
308
314
  setBackgroundMedia(payload: import("src/shared/my-uploads/models").MediaBaseSelectedPayload): void;
309
315
  removeBackgroundVideo(): void;
@@ -2,12 +2,12 @@ declare const _default: import("vue").DefineComponent<{}, {
2
2
  templates: import("vue").ComputedRef<import("@brand-page-maker/stores/admin-logo-settings").AdminPreviewLogoTemplateTemplate[]>;
3
3
  items: import("vue").ComputedRef<{
4
4
  id: string;
5
- type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
5
+ type: import("../../../brand-page").ContentType;
6
6
  settings: {
7
7
  content: {
8
8
  id: string;
9
- type: "website" | "image" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "facebook" | "x" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
10
- personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
9
+ type: import("../../../brand-page").ContentType;
10
+ personalisationRole?: import("../../../brand-page").PersonalisationRole | undefined;
11
11
  topPadding?: number | undefined;
12
12
  bottomPadding?: number | undefined;
13
13
  imageUrlOverride?: string | undefined;