@designcrowd/library.brand-page 6.0.3 → 6.0.4

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 (383) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-BctSP4tp.js → CreatedOnBrandCrowd-de-de-Ruu5Az32.js} +3 -3
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-BeNytcxt.js → CreatedOnBrandCrowd-en-us-DGUJtvld.js} +3 -3
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-hY12f5TN.js → CreatedOnBrandCrowd-es-es-Dg-1uOfV.js} +3 -3
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-C4SCU39P.js → CreatedOnBrandCrowd-fr-ca-CRKraZl8.js} +3 -3
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-C4SCU39P.js → CreatedOnBrandCrowd-fr-fr-CRKraZl8.js} +3 -3
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-C5J5kWiD.js → CreatedOnBrandCrowd-pt-br-bZ9VlEAu.js} +3 -3
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-C5J5kWiD.js → CreatedOnBrandCrowd-pt-pt-bZ9VlEAu.js} +3 -3
  8. package/lib/src/{CreatedOnDcom-de-de-DXCeZZLg.js → CreatedOnDcom-de-de-CJYfwZx8.js} +3 -3
  9. package/lib/src/{CreatedOnDcom-en-us-GeBTaofv.js → CreatedOnDcom-en-us-rzA1lVxH.js} +3 -3
  10. package/lib/src/{CreatedOnDcom-es-es-BiPmv1q-.js → CreatedOnDcom-es-es-CNwGPjik.js} +3 -3
  11. package/lib/src/{CreatedOnDcom-fr-ca-Cns_iX4-.js → CreatedOnDcom-fr-ca-DKw7OGIz.js} +3 -3
  12. package/lib/src/{CreatedOnDcom-fr-fr-CC-f_hUR.js → CreatedOnDcom-fr-fr-WzOEaAZG.js} +3 -3
  13. package/lib/src/{CreatedOnDcom-pt-br-DnhSuPKo.js → CreatedOnDcom-pt-br-DkualVhm.js} +3 -3
  14. package/lib/src/{CreatedOnDcom-pt-pt-BCgbUsqY.js → CreatedOnDcom-pt-pt-w4Nnsdzq.js} +3 -3
  15. package/lib/src/brand-page/clients/brand-page.client.d.ts +9 -9
  16. package/lib/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.d.ts +2 -1
  17. package/lib/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.d.ts +2 -4
  18. package/lib/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.js +0 -1
  19. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.d.ts +2 -4
  20. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.js +4 -5
  21. package/lib/src/brand-page/components/page/Page.mixin.d.ts +1 -1
  22. package/lib/src/brand-page/components/page/PageComponent.mixin.d.ts +1 -1
  23. package/lib/src/brand-page/components/payment/Payment.mixin.d.ts +3 -3
  24. package/lib/src/brand-page/components/payment/__fixtures__/request-payment.d.ts +13 -13
  25. package/lib/src/brand-page/components/payment/__fixtures__/support-me.d.ts +13 -13
  26. package/lib/src/brand-page/constants/sections/footer-display.constants.js +1 -1
  27. package/lib/src/brand-page/models/index.d.ts +13 -2
  28. package/lib/src/brand-page/models/index.js +0 -3
  29. package/lib/src/brand-page/models/payment.model.d.ts +1 -1
  30. package/lib/src/brand-page/utils/personalisation.util.js +14 -72
  31. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +19 -21
  32. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.js +0 -1
  33. package/lib/src/brand-page-maker/components/admin-background-settings/AdminBackgroundSettings.mixin.d.ts +10 -16
  34. package/lib/src/brand-page-maker/components/admin-background-settings/ShapePositionSlider.mixin.d.ts +1 -1
  35. package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.d.ts +3 -3
  36. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +170 -181
  37. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +0 -3
  38. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.js +0 -1
  39. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +12 -12
  40. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.stories.js +2 -2
  41. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-payment.js +7 -0
  42. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +149 -148
  43. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +21 -21
  44. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.js +1 -1
  45. package/lib/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.d.ts +2 -4
  46. package/lib/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.js +0 -1
  47. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.d.ts +2 -4
  48. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.js +0 -1
  49. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.d.ts +2 -5
  50. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.js +0 -1
  51. package/lib/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.d.ts +2 -4
  52. package/lib/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.js +0 -1
  53. package/lib/src/brand-page-maker/components/device/Device.mixin.d.ts +2 -4
  54. package/lib/src/brand-page-maker/components/device/Device.mixin.js +0 -1
  55. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.d.ts +2 -4
  56. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.js +0 -1
  57. package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +3 -3
  58. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +11 -11
  59. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +25 -27
  60. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.js +0 -1
  61. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +27 -27
  62. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.js +1 -1
  63. package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +12 -17
  64. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +12 -12
  65. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +32 -30
  66. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.js +5 -16
  67. package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +11 -11
  68. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +6 -3
  69. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +1 -1
  70. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +6 -6
  71. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +2 -2
  72. package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +6 -6
  73. package/lib/src/brand-page-maker/constants/config-settings-constant.js +3 -3
  74. package/lib/src/brand-page-maker/convertors/text-image-display-style.convertor.d.ts +1 -1
  75. package/lib/src/brand-page-maker/convertors/text-image-display-style.convertor.js +1 -1
  76. package/lib/src/brand-page-maker/models/content-settings.d.ts +1 -1
  77. package/lib/src/brand-page-maker/models/navigation-style-configs.js +1 -1
  78. package/lib/src/brand-page-maker/routing/brand-page-maker-router.d.ts +2 -1
  79. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +378 -366
  80. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +4 -5
  81. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.js +5 -8
  82. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +1 -3
  83. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +3 -7
  84. package/lib/src/brand-page-maker/stores/history/history-store.d.ts +15 -15
  85. package/lib/src/brand-page-maker/stores/ui/ui-store.d.ts +0 -6
  86. package/lib/src/brand-page-maker/stores/ui/ui-store.js +0 -8
  87. package/lib/src/brand-page-maker/utils/content-settings.util.js +1 -1
  88. package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +1 -1
  89. package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +4 -4
  90. package/lib/src/clients/ai-assistant-client.d.ts +0 -7
  91. package/lib/src/clients/brand-page-client.d.ts +15 -16
  92. package/lib/src/clients/design-template-client.d.ts +0 -3
  93. package/lib/src/clients/media-client.d.ts +2 -2
  94. package/lib/src/clients/models.d.ts +0 -2
  95. package/lib/src/composables/useSnapshot.js +18 -18
  96. package/lib/src/css/library.brand-page-brandCrowd.min.css +324 -342
  97. package/lib/src/css/library.brand-page-brandPage.min.css +324 -620
  98. package/lib/src/css/library.brand-page-designCom.min.css +324 -342
  99. package/lib/src/css/library.brand-page-preview.min.css +324 -598
  100. package/lib/src/index.d.ts +1 -5
  101. package/lib/src/index.mjs +106 -110
  102. package/lib/src/{lib-Cw6L6CfQ.js → lib-Dy7MYyqz.js} +33240 -36457
  103. package/lib/src/lib.js +1 -11
  104. package/lib/src/metadata-builder/builders/footer-builder.js +62 -105
  105. package/lib/src/metadata-builder/builders/item-id-utils.d.ts +54 -0
  106. package/lib/src/metadata-builder/builders/item-id-utils.js +96 -0
  107. package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.js +57 -68
  108. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +58 -93
  109. package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +66 -99
  110. package/lib/src/metadata-builder/builders/section-builders/social-links-builder.js +57 -17
  111. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +51 -85
  112. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +49 -74
  113. package/lib/src/metadata-builder/builders/section-field-utils.d.ts +0 -7
  114. package/lib/src/metadata-builder/builders/section-field-utils.js +1 -1
  115. package/lib/src/metadata-builder/builders/shape-color-utils.js +1 -1
  116. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +16 -7
  117. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +66 -48
  118. package/lib/src/plugins/google-maps-plugin/google-maps-plugin.d.ts +1 -1
  119. package/lib/src/plugins/google-maps-plugin/google-maps-plugin.js +8 -8
  120. package/lib/src/shared/background-settings/components/background-shapes/BackgroundShapeSettings.mixin.d.ts +13 -13
  121. package/lib/src/shared/background-settings/store/background-settings-store.d.ts +3 -3
  122. package/lib/src/shared/color-picker/components/ColorPicker.mixin.d.ts +2 -4
  123. package/lib/src/shared/color-picker/components/ColorPicker.mixin.js +2 -2
  124. package/lib/src/shared/color-picker/components/ColorPickerSwatch.mixin.d.ts +2 -4
  125. package/lib/src/shared/color-picker/components/ColorPickerSwatch.mixin.js +0 -1
  126. package/lib/src/shared/confirm-modal/ConfirmModal.mixin.d.ts +2 -5
  127. package/lib/src/shared/confirm-modal/ConfirmModal.mixin.js +0 -1
  128. package/lib/src/shared/content-settings/components/GenericTextInput.mixin.d.ts +1 -0
  129. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +129 -131
  130. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +1 -2
  131. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +110 -111
  132. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +81 -84
  133. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.js +0 -5
  134. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +109 -117
  135. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +14 -1
  136. package/lib/src/shared/content-settings/components/email-field/EmailField.mixin.d.ts +1 -0
  137. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +70 -72
  138. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.js +3 -4
  139. package/lib/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.d.ts +4 -4
  140. package/lib/src/shared/content-settings/components/icon-library/IconLibrary.mixin.d.ts +1 -3
  141. package/lib/src/shared/content-settings/components/icon-library/IconLibrary.mixin.js +0 -1
  142. package/lib/src/shared/content-settings/components/images-field/ImagesField.mixin.d.ts +2 -2
  143. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.d.ts +3 -4
  144. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.js +1 -1
  145. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +40 -40
  146. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigOptionField.mixin.d.ts +6 -5
  147. package/lib/src/shared/content-settings/components/shape-field/ShapeField.mixin.d.ts +1 -0
  148. package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.d.ts +2 -2
  149. package/lib/src/shared/content-settings/components/tel-field/TelField.mixin.d.ts +1 -0
  150. package/lib/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.d.ts +2 -1
  151. package/lib/src/shared/content-settings/components/text-field/TextField.mixin.d.ts +1 -0
  152. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.d.ts +2 -1
  153. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +1 -1
  154. package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.d.ts +28 -28
  155. package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +1 -0
  156. package/lib/src/shared/content-settings/components/toggle-field/ToggleField.mixin.d.ts +2 -2
  157. package/lib/src/shared/content-settings/components/url-field/UrlField.mixin.d.ts +1 -0
  158. package/lib/src/shared/content-settings/components/youtube-video-field/YoutubeVideoField.mixin.d.ts +1 -0
  159. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +39 -39
  160. package/lib/src/shared/content-settings/utils.js +1 -0
  161. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.d.ts +4 -6
  162. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.js +0 -1
  163. package/lib/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.d.ts +2 -4
  164. package/lib/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.js +0 -1
  165. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +21 -29
  166. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.js +1 -1
  167. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +51 -50
  168. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.d.ts +4 -6
  169. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.js +0 -1
  170. package/lib/src/shared/logo-settings/store/editable-logo-store.js +1 -1
  171. package/lib/src/shared/logo-settings/store/logo-settings-store.d.ts +1 -1
  172. package/lib/src/shared/logo-versions/LogoVersions.mixin.d.ts +5 -13
  173. package/lib/src/shared/logo-versions/LogoVersions.mixin.js +0 -1
  174. package/lib/src/shared/models.d.ts +0 -2
  175. package/lib/src/shared/my-designs/MyDesigns.mixin.d.ts +6 -14
  176. package/lib/src/shared/my-designs/MyDesigns.mixin.js +0 -1
  177. package/lib/src/shared/my-uploads/MyMedia.mixin.d.ts +5 -14
  178. package/lib/src/shared/my-uploads/MyMedia.mixin.js +0 -1
  179. package/lib/src/shared/my-uploads/MyUploads.mixin.d.ts +5 -14
  180. package/lib/src/shared/my-uploads/MyUploads.mixin.js +0 -1
  181. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.d.ts +3 -5
  182. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.js +0 -1
  183. package/lib/src/shared/navigation-style-settings/store/index.d.ts +2 -2
  184. package/lib/src/shared/page-navigation/store/page-navigation-store.d.ts +2 -2
  185. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.d.ts +28 -27
  186. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.js +2 -0
  187. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +179 -188
  188. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +177 -181
  189. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.js +1 -1
  190. package/lib/src/shared/page-settings/store/page-settings-store.d.ts +9 -9
  191. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +39 -39
  192. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.js +1 -0
  193. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +18 -18
  194. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +6 -6
  195. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +60 -66
  196. package/lib/src/shared/style-settings/store/style-settings-store.d.ts +1 -1
  197. package/lib/src/shared/style-settings/store/style-settings-store.js +1 -1
  198. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +450 -20
  199. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.js +2 -2
  200. package/lib/src/shared/template-settings/models.d.ts +0 -1
  201. package/lib/src/shared/template-settings/store/template-settings-store.d.ts +0 -4
  202. package/lib/src/shared/template-settings/store/template-settings-store.js +11 -79
  203. package/lib/src/shared/unsplash-library/UnsplashLibrary.mixin.d.ts +4 -9
  204. package/lib/src/utils/build-asset-manifest.d.ts +0 -4
  205. package/lib/src/utils/build-asset-manifest.js +0 -8
  206. package/lib/src/utils/minify-brand-page-metadata.d.ts +2 -0
  207. package/lib/src/utils/minify-brand-page-metadata.js +17 -2
  208. package/package.json +56 -60
  209. package/src/brand-page/components/about-section/AboutSection.vue.test.ts +5 -7
  210. package/src/brand-page/components/brand-page-footer/BrandPageFooter.vue +1 -1
  211. package/src/brand-page/components/image/Image.mixin.ts +1 -1
  212. package/src/brand-page/components/image/Image.test.ts +1 -1
  213. package/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.ts +2 -1
  214. package/src/brand-page/components/images-section/ImagesSection.vue +1 -0
  215. package/src/brand-page/components/logo/LogoRender.vue +188 -188
  216. package/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.ts +0 -1
  217. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.ts +6 -15
  218. package/src/brand-page/components/page-footer/PageFooter.vue +0 -1
  219. package/src/brand-page/components/page-header/HeaderLayout.vue +6 -12
  220. package/src/brand-page/components/page-header/PageHeader.vue +0 -1
  221. package/src/brand-page/components/shapes-section/ShapesSection.vue +1 -1
  222. package/src/brand-page/components/shop/CartModal.vue +3 -1
  223. package/src/brand-page/components/shop/FeaturedDisplay.vue +2 -2
  224. package/src/brand-page/components/shop/PaymentModal.vue +5 -1
  225. package/src/brand-page/components/shop/ProductDetailModal.vue +1 -1
  226. package/src/brand-page/components/shop/Shop.vue +1 -1
  227. package/src/brand-page/components/shop/TextDisplay.vue +1 -1
  228. package/src/brand-page/components/shop/ThumbnailDisplay.vue +2 -2
  229. package/src/brand-page/components/testimonial-section/TestimonialSection.vue +3 -3
  230. package/src/brand-page/components/text-wrapper/TextWrapper.vue +1 -3
  231. package/src/brand-page/constants/sections/footer-display.constants.ts +1 -1
  232. package/src/brand-page/models/index.ts +12 -4
  233. package/src/brand-page/models/payment.model.ts +1 -2
  234. package/src/brand-page/models/shop.model.ts +2 -0
  235. package/src/brand-page/models/user-personalisation.model.ts +2 -1
  236. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +0 -3
  237. package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +0 -1
  238. package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +0 -2
  239. package/src/brand-page/utils/migration/migration-01_1.ts +1 -1
  240. package/src/brand-page/utils/migration/migration-02.ts +1 -0
  241. package/src/brand-page/utils/migration/migration-03.ts +1 -0
  242. package/src/brand-page/utils/migration/migration-04.ts +1 -0
  243. package/src/brand-page/utils/migration/migration-05.ts +5 -1
  244. package/src/brand-page/utils/migration/migration-05_2.ts +1 -1
  245. package/src/brand-page/utils/migration/migration-08.test.ts +1 -1
  246. package/src/brand-page/utils/personalisation.util.test.ts +0 -35
  247. package/src/brand-page/utils/personalisation.util.ts +23 -119
  248. package/src/brand-page/view-models.ts +56 -38
  249. package/src/brand-page-maker/assessors/banner-section-description-visibility.assessor.ts +6 -6
  250. package/src/brand-page-maker/assessors/color-replacement-icon-visibility.assessor.ts +2 -2
  251. package/src/brand-page-maker/assessors/color-replacement-profile-visibility.assessor.ts +2 -2
  252. package/src/brand-page-maker/assessors/color-replacement-visibility.assessor.ts +2 -2
  253. package/src/brand-page-maker/assessors/contact-form-visibility.assessor.ts +14 -14
  254. package/src/brand-page-maker/components/action-bar/ActionBar.mixin.ts +0 -1
  255. package/src/brand-page-maker/components/ai-text-edit/TextBubble.vue +0 -1
  256. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +1 -5
  257. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.ts +0 -1
  258. package/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.stories.ts +5 -2
  259. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +5 -0
  260. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-payment.ts +8 -0
  261. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-site-template.examples.ts +2 -0
  262. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.vue +0 -1
  263. package/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.ts +1 -1
  264. package/src/brand-page-maker/components/color-palette/BpColorPalette.vue +2 -1
  265. package/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.ts +0 -1
  266. package/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.ts +0 -1
  267. package/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.ts +0 -1
  268. package/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.ts +0 -1
  269. package/src/brand-page-maker/components/device/Device.mixin.ts +0 -1
  270. package/src/brand-page-maker/components/navigation/Navigation.mixin.ts +0 -1
  271. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +1 -3
  272. package/src/brand-page-maker/components/sensitive-content/SensitiveContent.vue +4 -1
  273. package/src/brand-page-maker/components/seo-settings/DeleteDomainModal.vue +1 -1
  274. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.ts +0 -1
  275. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.vue +1 -1
  276. package/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.ts +1 -0
  277. package/src/brand-page-maker/components/seo-settings/UrlSettings.vue +1 -0
  278. package/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.vue +5 -1
  279. package/src/brand-page-maker/components/shop/AddOrEditProductContainer.vue +1 -1
  280. package/src/brand-page-maker/components/shop/ReplaceImageSettingsForShop.vue +1 -1
  281. package/src/brand-page-maker/components/social-share/SocialShare.vue +1 -1
  282. package/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.ts +8 -22
  283. package/src/brand-page-maker/components/template-preview/TemplatePreview.vue +10 -5
  284. package/src/brand-page-maker/components/video-play/VideoPlayButton.vue +1 -1
  285. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +7 -3
  286. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +6 -6
  287. package/src/brand-page-maker/constants/config-settings-constant.ts +5 -5
  288. package/src/brand-page-maker/convertors/text-image-display-style.convertor.ts +1 -1
  289. package/src/brand-page-maker/models/button-styles-config.ts +2 -4
  290. package/src/brand-page-maker/models/content-settings-configs.ts +2 -4
  291. package/src/brand-page-maker/models/navigation-style-configs.ts +6 -5
  292. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.ts +1 -0
  293. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.ts +5 -8
  294. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +3 -1
  295. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +4 -12
  296. package/src/brand-page-maker/stores/ui/ui-store.ts +0 -16
  297. package/src/brand-page-maker/utils/content-settings.util.ts +1 -1
  298. package/src/brand-page-maker/utils/rich-text-editor.util.ts +4 -4
  299. package/src/clients/ai-assistant-client.ts +0 -7
  300. package/src/clients/design-template-client.ts +0 -3
  301. package/src/clients/models.ts +0 -2
  302. package/src/composables/useSnapshot.ts +22 -19
  303. package/src/lib.ts +0 -13
  304. package/src/metadata-builder/builders/footer-builder.test.ts +229 -130
  305. package/src/metadata-builder/builders/footer-builder.ts +90 -155
  306. package/src/metadata-builder/builders/item-id-utils.test.ts +184 -0
  307. package/src/metadata-builder/builders/item-id-utils.ts +117 -0
  308. package/src/metadata-builder/builders/section-builders/image-gallery-builder.ts +62 -88
  309. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +66 -129
  310. package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +105 -160
  311. package/src/metadata-builder/builders/section-builders/social-links-builder.ts +65 -20
  312. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +83 -146
  313. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +70 -122
  314. package/src/metadata-builder/builders/section-field-utils.ts +1 -1
  315. package/src/metadata-builder/builders/shape-color-utils.ts +2 -2
  316. package/src/metadata-builder/parsers/ai-toolcall-parser.ts +16 -7
  317. package/src/metadata-builder/parsers/section-tool-arguments.ts +66 -48
  318. package/src/plugins/google-maps-plugin/google-maps-plugin.ts +8 -8
  319. package/src/shared/background-settings/components/BackgroundSettings.vue +1 -1
  320. package/src/shared/background-settings/components/background-color/BackgroundColorSettings.vue +1 -1
  321. package/src/shared/color-picker/components/ColorPicker.mixin.ts +7 -2
  322. package/src/shared/color-picker/components/ColorPickerSwatch.mixin.ts +0 -1
  323. package/src/shared/common/NumberInput.vue +0 -1
  324. package/src/shared/common/SideBarSettingsHeader.vue +2 -2
  325. package/src/shared/confirm-modal/ConfirmModal.mixin.ts +0 -1
  326. package/src/shared/content-settings/components/booking-url-field/BookingUrlField.vue +0 -1
  327. package/src/shared/content-settings/components/button-configuration-field/ButtonConfigurationField.vue +0 -1
  328. package/src/shared/content-settings/components/color-field/ColorField.vue +10 -3
  329. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +1 -1
  330. package/src/shared/content-settings/components/content-settings/ContentSettingsLockedButton.vue +0 -1
  331. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.ts +0 -5
  332. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +14 -1
  333. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.ts +6 -4
  334. package/src/shared/content-settings/components/icon-library/IconLibrary.mixin.ts +0 -1
  335. package/src/shared/content-settings/components/items-field/ItemsField.mixin.ts +1 -1
  336. package/src/shared/content-settings/components/logo-selection-field/LogoSelectionField.vue +1 -1
  337. package/src/shared/content-settings/components/logo-size-field/LogoSizeSliderField.vue +1 -1
  338. package/src/shared/content-settings/components/page-dropdown-field/PageDropdownField.vue +1 -1
  339. package/src/shared/content-settings/components/personalisation-role-field/PersonalisationRoleField.vue +4 -4
  340. package/src/shared/content-settings/components/text-image-field/TextImageField.vue +8 -2
  341. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +1 -1
  342. package/src/shared/content-settings/models.ts +2 -3
  343. package/src/shared/content-settings/utils.ts +1 -0
  344. package/src/shared/dropzone-image-uploader/components/DropzoneImageUploader.vue +0 -1
  345. package/src/shared/ecommerce-settings/store/cart-store.test.ts +1 -1
  346. package/src/shared/font-family-selector/FontFamilySelector.mixin.ts +0 -1
  347. package/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.ts +0 -1
  348. package/src/shared/logo-settings/components/EditLogoSettings.mixin.ts +1 -1
  349. package/src/shared/logo-settings/components/LogoSettings.mixin.ts +1 -0
  350. package/src/shared/logo-settings/components/LogoSettingsHeader.mixin.ts +0 -1
  351. package/src/shared/logo-settings/components/LogoStyleSettingsWithState.vue +2 -2
  352. package/src/shared/logo-settings/components/LogoTemplateSearch.vue +1 -1
  353. package/src/shared/logo-settings/store/editable-logo-store.ts +1 -1
  354. package/src/shared/logo-settings/store/logo-settings-store.test.ts +4 -4
  355. package/src/shared/logo-versions/LogoVersions.mixin.ts +0 -1
  356. package/src/shared/models.ts +0 -6
  357. package/src/shared/my-designs/MyDesigns.mixin.ts +0 -1
  358. package/src/shared/my-uploads/MyMedia.mixin.ts +0 -1
  359. package/src/shared/my-uploads/MyMediaSelectionItem.vue +1 -2
  360. package/src/shared/my-uploads/MyUploads.mixin.ts +0 -1
  361. package/src/shared/my-uploads/models.ts +2 -1
  362. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.ts +0 -1
  363. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.vue +1 -1
  364. package/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.ts +3 -0
  365. package/src/shared/page-settings/components/page-settings/NestedDraggable.vue +1 -1
  366. package/src/shared/page-settings/components/page-settings/PageSettings.vue +2 -1
  367. package/src/shared/page-settings/components/page-settings-section-styles/HeaderDisplayStyle.vue +1 -1
  368. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.ts +1 -1
  369. package/src/shared/page-settings/store/page-settings-store.test.ts +8 -4
  370. package/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.ts +1 -0
  371. package/src/shared/shape-library/ShapeLibrary.vue +2 -2
  372. package/src/shared/style-settings/store/style-settings-store.ts +1 -1
  373. package/src/shared/template-settings/components/TemplatesSettings.mixin.ts +2 -2
  374. package/src/shared/template-settings/models.ts +0 -1
  375. package/src/shared/template-settings/store/template-settings-store.ts +18 -105
  376. package/src/shared/unsplash-library/UnsplashLibrary.vue +6 -2
  377. package/src/shared/video-library/VideoLibrary.vue +1 -1
  378. package/src/utils/build-asset-manifest.ts +0 -12
  379. package/src/utils/minify-brand-page-metadata.ts +27 -7
  380. package/lib/src/brand-page/components/banner-section/BannerSection.mixin.d.ts +0 -103
  381. package/lib/src/brand-page/components/banner-section/BannerSection.mixin.js +0 -178
  382. package/src/brand-page/components/banner-section/BannerSection.mixin.ts +0 -210
  383. package/src/brand-page-maker/components/template-preview/TemplatePreviewAiBadge.vue +0 -12
@@ -1,7 +1,7 @@
1
1
  import { TEMPLATE_TABS } from '../models';
2
2
  import * as DesignTemplateClient from '../../../clients/design-template-client';
3
3
  import {} from '../../../clients/models';
4
- import { BP_DEFAULT_TEMPLATE_TYPE_NAME, BP_BRAND_SITE_TEMPLATE_TYPE_NAME, SIDE_BAR_TAB_NAMES, } from '@brand-page-maker/constants';
4
+ import { BP_DEFAULT_TEMPLATE_TYPE_NAME, SIDE_BAR_TAB_NAMES, } from '@brand-page-maker/constants';
5
5
  import { defineStore, storeToRefs } from 'pinia';
6
6
  import { useBrandPageContainerStore, useBrandPageMakerStore, useBrandPageMakerUserStore, useLogoStore, useUiStore, } from '@brand-page-maker/stores';
7
7
  import { useUiSideBarStore } from '../../side-bar/store';
@@ -9,19 +9,9 @@ import { BrandPageModel } from '@brand-page/models';
9
9
  import { migrateBrandPageModel } from '@brand-page/utils';
10
10
  import { getAiContentIndexByTemplateTokenAndNumberOfVariations } from '@brand-page-maker/utils/ai-content-selection.util';
11
11
  import { useUiEditableLogoStore, useUiLogoSettingsStore, } from '../../logo-settings/store';
12
- import { useEventTracker } from '@brand-page-maker/composables/useEventTracker';
13
12
  import { templateSettingsTr, getCurrentLocale, } from '@src/composables/useTranslate';
14
13
  import { watch } from 'vue';
15
14
  export const DEFAULT_PAGE_SIZE = 6;
16
- const POST_PURCHASE_PAGE_SECTION_BY_TAB = {
17
- [TEMPLATE_TABS.all]: 'MakerPostPurchaseSidebarTemplatesAllTab',
18
- [TEMPLATE_TABS.AI]: 'MakerPostPurchaseSidebarTemplatesAiTab',
19
- [TEMPLATE_TABS.categories]: 'MakerPostPurchaseSidebarTemplatesCategoryTab',
20
- };
21
- const PRE_PURCHASE_PAGE_SECTION_BY_TAB = {
22
- [TEMPLATE_TABS.all]: 'MakerPrePurchaseSidebarTemplatesAllTab',
23
- [TEMPLATE_TABS.categories]: 'MakerPrePurchaseSidebarTemplatesCategoryTab',
24
- };
25
15
  const LOAD_PAGE_RETRY_DELAY = 250;
26
16
  export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
27
17
  state: () => {
@@ -57,7 +47,6 @@ export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
57
47
  cachedTemplates: {},
58
48
  logoChangeWatcherInitialized: false,
59
49
  initialSearchTerm: undefined,
60
- aiTemplateKeywords: undefined,
61
50
  onSearchTermChanged: undefined,
62
51
  };
63
52
  },
@@ -198,65 +187,27 @@ export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
198
187
  }
199
188
  }
200
189
  const editableLogoVariation = editableLogoStore.editableLogoVariations[logoVariation];
201
- const isPrePurchase = brandPageContainerStore.isPrePurchase;
202
- const isBrandSite = this.templateType === BP_BRAND_SITE_TEMPLATE_TYPE_NAME;
203
- // Pre-purchase has no logo draft for logo-based recommendation, so fall back to the seeded
204
- // search term (the keyword from the URL/cookie - never the business name) so the All tab
205
- // stays relevant instead of generic (bp-5454).
206
- const effectiveSearchTerm = !this.searchTerm &&
207
- !this.selectedCategory &&
208
- isPrePurchase &&
209
- isBrandSite &&
210
- this.selectedTab.key === TEMPLATE_TABS.all
211
- ? this.initialSearchTerm
212
- : this.searchTerm;
213
- const pageSection = isBrandSite
214
- ? (isPrePurchase
215
- ? PRE_PURCHASE_PAGE_SECTION_BY_TAB
216
- : POST_PURCHASE_PAGE_SECTION_BY_TAB)[this.selectedTab.key]
217
- : undefined;
218
- const pageName = isBrandSite
219
- ? isPrePurchase
220
- ? 'maker-pre-purchase'
221
- : 'maker'
222
- : undefined;
223
- const baseParams = {
190
+ const result = await designTemplateClient.getTemplateItemsByTemplateType(this.templateType, {
224
191
  page: pageNo,
192
+ pageSize: DEFAULT_PAGE_SIZE,
225
193
  categoryName: this.selectedCategory,
226
- searchTerm: effectiveSearchTerm,
227
- keywords: this.aiTemplateKeywords,
194
+ searchTerm: this.searchTerm,
228
195
  logoDraftToken: logoSettingsStore.selectedLogoImage.logoDraftToken,
229
196
  logoVariation: logoSettingsStore.selectedLogoImage.logoVariation,
197
+ personalisable: this.selectedTab.key === TEMPLATE_TABS.AI,
230
198
  selectedTemplateToken: designTemplateToken,
231
199
  locale: currentLocale,
232
200
  logoS3Token: !isByo ? editableLogoVariation.s3Token : undefined,
233
201
  logoTemplateToken: isByo ? logoTemplateToken : undefined,
234
- useLogoForRecommendedTemplates: isBrandSite && this.selectedTab.key === TEMPLATE_TABS.all,
235
- pageSection,
236
- pageName,
237
- };
238
- // AI templates are interleaved server-side for the Brand Site All tab
239
- // (bp-5306); the frontend just renders the returned order.
240
- const result = await designTemplateClient.getTemplateItemsByTemplateType(this.templateType, {
241
- ...baseParams,
242
- pageSize: DEFAULT_PAGE_SIZE,
243
- personalisable: this.selectedTab.key === TEMPLATE_TABS.AI,
244
202
  });
245
203
  if (!result) {
246
204
  return;
247
205
  }
248
206
  this._setPageCount({ pageCount: result.pageCount });
249
- if (pageNo === 1 &&
250
- result.abTestValuesToBePushed &&
251
- Object.keys(result.abTestValuesToBePushed).length > 0) {
252
- const eventTracker = useEventTracker();
253
- for (const [experimentName, experimentValue] of Object.entries(result.abTestValuesToBePushed)) {
254
- eventTracker.sendExperimentStartedEvent(experimentName, experimentValue);
255
- }
256
- }
257
207
  const templates = await Promise.all(result.paginatedItems.map(async (item) => {
258
208
  try {
259
209
  if (brandPageMakerUserStore.isAdmin) {
210
+ // Pre-purchase: full template with brandPageModel for live rendering
260
211
  const template = await designTemplateClient.getTemplateByTemplateToken(item.designTemplateToken);
261
212
  return this.safeMapToTemplateSettingsTemplate(template);
262
213
  }
@@ -266,24 +217,14 @@ export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
266
217
  if (uiStore.personalisationData?.length) {
267
218
  personalisationContentIndex =
268
219
  await getAiContentIndexByTemplateTokenAndNumberOfVariations(item.designTemplateToken, uiStore.personalisationData.length);
269
- contentKey =
270
- uiStore.personalisationData[personalisationContentIndex]
271
- .contentKey;
272
- }
273
- else if (item.isPersonalisable) {
274
- // Pre-purchase has no personalisationData; personalise AI
275
- // template previews with the prompt content key (bp-5742).
276
- contentKey = uiStore.userPromptContentKey;
220
+ // Get the contentKey from the selected personalisation variation
221
+ // This is needed for the backend preview URL to show the correct variation
222
+ const selectedPersonalisation = uiStore.personalisationData[personalisationContentIndex];
223
+ contentKey = selectedPersonalisation.contentKey;
277
224
  }
278
225
  return {
279
226
  id: item.designTemplateToken,
280
- isPersonalisable: item.isPersonalisable,
281
227
  contentKey,
282
- // A userPromptContentKey signals this design's real AI images live
283
- // in the userPrompt bucket (post- or pre-purchase). The preview must
284
- // then resolve via userPromptContentKey, not the regular bucket which
285
- // holds placeholders post-purchase (bp-5454).
286
- usesUserPromptContentKey: !!uiStore.userPromptContentKey,
287
228
  previewImageUrl: item.previewImageUrl,
288
229
  };
289
230
  }
@@ -294,13 +235,7 @@ export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
294
235
  }));
295
236
  // Filter out null templates before adding
296
237
  const validTemplates = templates.filter((t) => t !== null);
297
- // The Categories tab must never surface AI templates or the AI badge
298
- // (bp-5454 scenario 5). The badge is driven purely by isPersonalisable,
299
- // so clear it for category results regardless of the template's catalog flag.
300
- const displayTemplates = this.selectedTab.key === TEMPLATE_TABS.categories
301
- ? validTemplates.map((t) => ({ ...t, isPersonalisable: false }))
302
- : validTemplates;
303
- this._addTemplates({ templates: displayTemplates });
238
+ this._addTemplates({ templates: validTemplates });
304
239
  this._setPageNoLoaded({ pageNoLoaded: pageNo });
305
240
  }
306
241
  finally {
@@ -404,9 +339,6 @@ export const useUiTemplateSettingsStore = defineStore('uiTemplateSettings', {
404
339
  this.initialSearchTerm = payload.initialSearchTerm;
405
340
  this.onSearchTermChanged = payload.onSearchTermChanged;
406
341
  },
407
- setAiTemplateKeywords(payload) {
408
- this.aiTemplateKeywords = payload.aiTemplateKeywords;
409
- },
410
342
  notifySearchTermChanged(searchTerm) {
411
343
  this.onSearchTermChanged?.(searchTerm);
412
344
  },
@@ -1,3 +1,4 @@
1
+ /// <reference types="types/lodash-shims" />
1
2
  import UnsplashClient from '../../clients/unsplash-client';
2
3
  import { type DebounceHandle } from 'lodash.debounce';
3
4
  interface PreviewUrls {
@@ -29,20 +30,14 @@ declare const _default: import("vue").DefineComponent<{}, {
29
30
  thirdPartySettings: import("../models").UIRootStateThirdPartySettings;
30
31
  }): void;
31
32
  setDeviceMode({ mode }: {
32
- mode: import("../models").UiDeviceMode;
33
+ mode: "desktop" | "mobile";
33
34
  }): void;
34
35
  setScreenSizeMode({ mode }: {
35
- mode: import("../models").UiScreenSizeMode;
36
+ mode: "desktop" | "mobile";
36
37
  }): void;
37
38
  setUserPersonalisationData({ personalisationData, }: {
38
39
  personalisationData: import("../../brand-page").UserPersonalisationContent[];
39
40
  }): void;
40
- setUserPromptContentKey({ userPromptContentKey, }: {
41
- userPromptContentKey: string | undefined;
42
- }): void;
43
- setShowAiTemplatesTab({ showAiTemplatesTab, }: {
44
- showAiTemplatesTab: boolean;
45
- }): void;
46
41
  onBackgroundChanged(): void;
47
42
  onContentChanged(): void;
48
43
  onStyleChanged(): void;
@@ -55,7 +50,7 @@ declare const _default: import("vue").DefineComponent<{}, {
55
50
  type: string;
56
51
  }): Promise<void>;
57
52
  onTemplateSelected(payload: import("@brand-page-maker/stores").OnTemplateSelectedPayload): Promise<void>;
58
- showUpgradeModalAndSaveAsync(contextualUpgradeType?: import("@brand-page-maker/stores").WebsiteContextUpgradeType): Promise<void>;
53
+ showUpgradeModalAndSaveAsync(contextualUpgradeType?: string | number | symbol | undefined): Promise<void>;
59
54
  setIsPersonalisationEnabled({ isPersonalisationEnabled, }: {
60
55
  isPersonalisationEnabled: boolean;
61
56
  }): void;
@@ -14,10 +14,6 @@ export interface AssetEntry {
14
14
  * 2. Fall back to logoImageBase64Url if logoImage is unavailable.
15
15
  */
16
16
  export declare function resolveLogoData(logoImage: LogoImageModel | undefined, logoImageBase64Url: string | undefined): string | undefined;
17
- /**
18
- * Look up an asset key from the manifest by matching the data content.
19
- */
20
- export declare function findAssetKey(assets: AssetEntry[] | undefined, data: string | undefined): string | undefined;
21
17
  /**
22
18
  * Build an asset manifest from the brand page model.
23
19
  *
@@ -23,14 +23,6 @@ export function resolveLogoData(logoImage, logoImageBase64Url) {
23
23
  // Fallback to base64 if available
24
24
  return logoImageBase64Url || undefined;
25
25
  }
26
- /**
27
- * Look up an asset key from the manifest by matching the data content.
28
- */
29
- export function findAssetKey(assets, data) {
30
- if (!data || !assets)
31
- return undefined;
32
- return assets.find((a) => a.data === data)?.key;
33
- }
34
26
  /**
35
27
  * Hash a string using SHA-256 and return the first 16 hex characters.
36
28
  * Uses the Web Crypto API (available in browsers and modern runtimes).
@@ -2,6 +2,8 @@ import { type BrandPageModel, type BrandPageType, type NavModel, type PageStyles
2
2
  import type { ContentType } from '../brand-page/models/content.model';
3
3
  import { type AssetEntry } from './build-asset-manifest';
4
4
  type MinifiedFooterSocialLink = {
5
+ position: number;
6
+ id?: string;
5
7
  imageUrl: string;
6
8
  url: string;
7
9
  };
@@ -1,7 +1,7 @@
1
1
  import { BRAND_PAGE_TYPES, } from '../brand-page/models';
2
2
  import { hasRTEContent } from '../brand-page-maker/utils';
3
3
  import { useExternalRichTextEditor } from '../brand-page-maker/composables/rich-text-editor/useRichTextEditor';
4
- import { findAssetKey, resolveLogoData, } from './build-asset-manifest';
4
+ import { resolveLogoData } from './build-asset-manifest';
5
5
  const BUTTON_TYPES = [
6
6
  'general-link',
7
7
  'website',
@@ -78,6 +78,14 @@ const includeBackgroundStyle = (value) => {
78
78
  return null;
79
79
  return { backgroundStyle: { backgroundColor: bg } };
80
80
  };
81
+ /**
82
+ * Look up an asset key from the manifest by matching the data content.
83
+ */
84
+ const findAssetKey = (assets, data) => {
85
+ if (!data || !assets)
86
+ return undefined;
87
+ return assets.find((a) => a.data === data)?.key;
88
+ };
81
89
  const minifyContent = (content, editor, assets) => {
82
90
  const base = {
83
91
  id: content.id,
@@ -156,6 +164,7 @@ const minifyContent = (content, editor, assets) => {
156
164
  ...(Array.isArray(c.items) && {
157
165
  items: c.items.map((item, index) => ({
158
166
  position: index + 1,
167
+ ...(item.id && { id: item.id }),
159
168
  ...st('name', item.name, editor),
160
169
  ...st('jobTitle', item.position, editor),
161
170
  ...st('testimonials', item.testimonials, editor),
@@ -183,6 +192,7 @@ const minifyContent = (content, editor, assets) => {
183
192
  ...(Array.isArray(c.items) && {
184
193
  items: c.items.map((item, index) => ({
185
194
  position: index + 1,
195
+ ...(item.id && { id: item.id }),
186
196
  ...includeImageWithKey(item.imageUrl),
187
197
  ...st('title', item.title, editor),
188
198
  ...st('paragraph', item.paragraph, editor),
@@ -212,6 +222,7 @@ const minifyContent = (content, editor, assets) => {
212
222
  ...(Array.isArray(c.textItems) && {
213
223
  textItems: c.textItems.map((item, index) => ({
214
224
  position: index + 1,
225
+ ...(item.id && { id: item.id }),
215
226
  ...st('text', item.text, editor),
216
227
  ...(includeStyle(item.textStyle) && { textStyle: item.textStyle }),
217
228
  })),
@@ -292,6 +303,7 @@ const minifyContent = (content, editor, assets) => {
292
303
  ...(Array.isArray(c.links) && {
293
304
  links: c.links.map((link, index) => ({
294
305
  position: index + 1,
306
+ ...(link.id && { id: link.id }),
295
307
  ...(includeString(link.url) && { url: link.url }),
296
308
  ...includeImageWithKey(link.imageUrl),
297
309
  })),
@@ -331,6 +343,7 @@ const minifyContent = (content, editor, assets) => {
331
343
  ...(Array.isArray(c.images) && {
332
344
  images: c.images.map((img, index) => ({
333
345
  position: index + 1,
346
+ ...(img.id && { id: img.id }),
334
347
  ...includeImageWithKey(img.imageUrl),
335
348
  ...st('imageTitle', img.imageTitle, editor),
336
349
  })),
@@ -371,7 +384,9 @@ const minifyFooter = (footer, logoAssetKey) => {
371
384
  logoImageWidth: footer.logoImageWidth || undefined,
372
385
  ...(logoAssetKey && { logoAssetKey }),
373
386
  socialLinks: footer.socialLinks?.length
374
- ? footer.socialLinks.map((l) => ({
387
+ ? footer.socialLinks.map((l, index) => ({
388
+ position: index + 1,
389
+ ...(l.id && { id: l.id }),
375
390
  imageUrl: l.imageUrl || '',
376
391
  url: l.url || '',
377
392
  }))
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@designcrowd/library.brand-page",
3
3
  "description": "A collection of Maker/Designer applications",
4
- "version": "6.0.3",
4
+ "version": "6.0.4",
5
5
  "author": "Design.com Eng",
6
6
  "license": "UNLICENSED",
7
7
  "type": "module",
@@ -55,9 +55,9 @@
55
55
  "pre-push": "npm run test"
56
56
  },
57
57
  "dependencies": {
58
- "@ckpack/vue-color": "1.6.0",
59
- "@designcrowd/fe-shared-lib": "2.0.0",
60
- "@pinia/nuxt": "0.11.3",
58
+ "@ckpack/vue-color": "1.4.1",
59
+ "@designcrowd/fe-shared-lib": "1.8.14",
60
+ "@pinia/nuxt": "0.11.0",
61
61
  "@storybook/react": "9.0.4",
62
62
  "@tiptap/extension-bubble-menu": "^2.14.0",
63
63
  "@tiptap/extension-character-count": "2.11.7",
@@ -72,42 +72,41 @@
72
72
  "@tiptap/extension-underline": "2.11.5",
73
73
  "@tiptap/starter-kit": "2.11.5",
74
74
  "@tiptap/vue-3": "2.11.5",
75
- "axios": "1.13.5",
75
+ "axios": "1.6.7",
76
76
  "chroma-js": "2.4.2",
77
77
  "click-outside-vue3": "4.0.1",
78
- "color": "5.0.3",
78
+ "color": "5.0.0",
79
79
  "config": "3.3.10",
80
- "core-js": "3.48.0",
80
+ "core-js": "3.35.1",
81
81
  "css-color-names": "1.0.1",
82
82
  "date-utils": "1.2.21",
83
83
  "deepmerge": "4.3.1",
84
- "dompurify": "3.3.1",
84
+ "dompurify": "3.2.6",
85
85
  "dropzone-vue3": "1.0.2",
86
86
  "express": "4.18.2",
87
- "fs-extra": "11.3.3",
88
- "http-errors": "2.0.1",
87
+ "fs-extra": "11.2.0",
88
+ "http-errors": "2.0.0",
89
89
  "http-proxy-middleware": "2.0.6",
90
- "i18next": "25.8.5",
90
+ "i18next": "25.2.1",
91
91
  "jquery": "3.7.1",
92
92
  "lodash.clonedeep": "4.5.0",
93
93
  "lodash.debounce": "4.0.8",
94
94
  "lodash.throttle": "4.1.1",
95
95
  "lodash.uniq": "4.5.0",
96
- "nuxt": "4.4.5",
97
- "pinia": "3.0.4",
96
+ "nuxt": "3.17.4",
97
+ "pinia": "3.0.2",
98
98
  "portal-vue": "3.0.0",
99
99
  "raygun": "0.13.2",
100
- "raygun4js": "3.1.4",
100
+ "raygun4js": "3.0.0",
101
101
  "regenerator-runtime": "0.14.1",
102
102
  "slugify": "1.6.6",
103
103
  "svg-parser": "2.0.4",
104
104
  "uuid": "9.0.1",
105
- "validator": "13.15.26",
106
- "vue": "3.5.35",
105
+ "validator": "13.11.0",
106
+ "vue": "3.5.15",
107
107
  "vue-cropperjs": "5.0.0",
108
- "vue-router": "5.1.0",
108
+ "vue-router": "4.5.0",
109
109
  "vue-select": "4.0.0-beta.6",
110
- "unstorage": "^1.17.5",
111
110
  "vue3-lazy-hydration": "1.2.1",
112
111
  "vue3-shortkey": "4.0.0",
113
112
  "vuedraggable": "4.1.0",
@@ -124,49 +123,49 @@
124
123
  "optionalDependencies": {
125
124
  "@esbuild/darwin-arm64": "0.27.1",
126
125
  "@esbuild/linux-x64": "0.27.1",
127
- "@rollup/rollup-linux-arm64-gnu": "4.43.0",
128
- "@rollup/rollup-linux-x64-gnu": "4.43.0"
126
+ "@rollup/rollup-linux-arm64-gnu": "4.12.0",
127
+ "@rollup/rollup-linux-x64-gnu": "4.12.0"
129
128
  },
130
129
  "devDependencies": {
131
130
  "@faker-js/faker": "8.4.0",
132
131
  "@frsource/cypress-plugin-visual-regression-diff": "3.3.10",
133
- "@nuxt/test-utils": "4.0.0",
134
- "@nuxt/types": "2.18.1",
132
+ "@nuxt/test-utils": "3.19.1",
133
+ "@nuxt/types": "2.17.3",
135
134
  "@nuxt/typescript-build": "3.0.2",
136
135
  "@storybook/addon-themes": "9.0.4",
137
136
  "@storybook/vue3": "9.0.4",
138
137
  "@storybook/vue3-vite": "9.0.4",
139
138
  "@stylistic/eslint-plugin": "1.5.4",
140
139
  "@types/axios-mock-adapter": "1.10.0",
141
- "@types/braces": "3.0.5",
140
+ "@types/braces": "3.0.4",
142
141
  "@types/dompurify": "3.2.0",
143
142
  "@types/express": "4.17.21",
144
143
  "@types/faker": "6.6.8",
145
144
  "@types/google.maps": "3.65.1",
146
145
  "@types/istanbul-lib-report": "3.0.3",
147
- "@types/jquery": "3.5.33",
146
+ "@types/jquery": "3.5.30",
148
147
  "@types/lodash.clonedeep": "4.5.9",
149
- "@types/mssql": "9.1.9",
148
+ "@types/mssql": "9.1.4",
150
149
  "@types/multer": "1.4.11",
151
150
  "@types/raygun4js": "3.0.0",
152
151
  "@types/react": "18.2.48",
153
152
  "@types/resize-observer-browser": "0.1.11",
154
- "@types/stripe-v3": "3.1.33",
153
+ "@types/stripe-v3": "3.1.32",
155
154
  "@types/svg-parser": "2.0.6",
156
- "@types/uglify-js": "3.17.5",
157
- "@types/unist": "3.0.3",
155
+ "@types/uglify-js": "3.17.4",
156
+ "@types/unist": "3.0.2",
158
157
  "@types/uuid": "9.0.8",
159
- "@types/validator": "13.15.10",
158
+ "@types/validator": "13.11.8",
160
159
  "@types/yargs-parser": "21.0.3",
161
160
  "@typescript-eslint/eslint-plugin": "6.20.0",
162
161
  "@typescript-eslint/parser": "6.20.0",
163
- "@vitejs/plugin-vue": "6.0.7",
162
+ "@vitejs/plugin-vue": "5.2.4",
164
163
  "@vue/eslint-config-typescript": "12.0.0",
165
- "@vue/test-utils": "2.4.6",
166
- "autoprefixer": "10.4.24",
164
+ "@vue/test-utils": "2.4.4",
165
+ "autoprefixer": "10.4.17",
167
166
  "axios-mock-adapter": "1.22.0",
168
167
  "copyfiles": "2.4.1",
169
- "cors": "2.8.6",
168
+ "cors": "2.8.5",
170
169
  "cross-env": "7.0.3",
171
170
  "css-loader": "6.9.1",
172
171
  "cypress": "13.6.3",
@@ -174,50 +173,50 @@
174
173
  "eslint-config-prettier": "9.1.0",
175
174
  "eslint-friendly-formatter": "4.0.1",
176
175
  "eslint-plugin-cypress": "2.15.1",
177
- "eslint-plugin-prettier": "5.5.5",
176
+ "eslint-plugin-prettier": "5.1.3",
178
177
  "eslint-plugin-vue": "9.21.1",
179
178
  "file-loader": "6.2.0",
180
- "happy-dom": "20.6.1",
181
- "html-loader": "5.1.0",
182
- "husky": "9.1.7",
179
+ "happy-dom": "14.12.3",
180
+ "html-loader": "5.0.0",
181
+ "husky": "9.0.7",
183
182
  "imports-loader": "5.0.0",
184
- "jest-image-snapshot": "6.5.1",
185
- "js-base64": "3.7.8",
186
- "jsdom": "27.4.0",
183
+ "jest-image-snapshot": "6.4.0",
184
+ "js-base64": "3.7.6",
185
+ "jsdom": "24.0.0",
187
186
  "jsdom-global": "3.0.2",
188
187
  "lint-staged": "15.2.0",
189
- "mini-css-extract-plugin": "2.10.0",
190
- "msw": "2.12.10",
191
- "msw-storybook-addon": "2.0.6",
188
+ "mini-css-extract-plugin": "2.7.7",
189
+ "msw": "2.3.1",
190
+ "msw-storybook-addon": "2.0.3",
192
191
  "multer": "1.4.3",
193
- "nodemon": "3.1.11",
192
+ "nodemon": "3.0.3",
194
193
  "npm-run-all": "4.1.5",
195
194
  "nyc": "15.1.0",
196
195
  "performance-now": "2.1.0",
197
- "picocolors": "1.1.1",
198
- "playwright-core": "1.58.2",
199
- "postcss": "8.5.6",
200
- "postcss-cli": "11.0.1",
201
- "postcss-loader": "8.2.0",
196
+ "picocolors": "1.0.0",
197
+ "playwright-core": "1.47.0",
198
+ "postcss": "8.4.38",
199
+ "postcss-cli": "11.0.0",
200
+ "postcss-loader": "8.0.0",
202
201
  "postcss-nested": "6.0.1",
203
202
  "postcss-prefix-selector": "1.16.0",
204
- "prettier": "3.8.1",
203
+ "prettier": "3.2.4",
205
204
  "request": "2.88.2",
206
205
  "rimraf": "5.0.5",
207
- "rollup-plugin-visualizer": "6.0.11",
206
+ "rollup-plugin-visualizer": "5.12.0",
208
207
  "run-func": "3.0.0",
209
208
  "shx": "0.3.4",
210
209
  "storybook": "9.0.4",
211
210
  "style-loader": "3.3.4",
212
211
  "tailwindcss": "3.4.1",
213
212
  "timsort": "0.3.0",
214
- "ts-loader": "9.5.4",
213
+ "ts-loader": "9.5.1",
215
214
  "ts-node": "10.9.2",
216
- "typescript": "5.9.3",
217
- "vite": "7.3.5",
215
+ "typescript": "5.3.3",
216
+ "vite": "6.3.5",
218
217
  "vite-plugin-commonjs": "0.10.4",
219
- "vite-plugin-node-polyfills": "0.25.0",
220
- "vitest": "4.0.18",
218
+ "vite-plugin-node-polyfills": "0.23.0",
219
+ "vitest": "3.1.4",
221
220
  "vue-eslint-parser": "9.4.2",
222
221
  "vue-loader": "17.4.2",
223
222
  "vue-style-loader": "4.1.3",
@@ -226,10 +225,7 @@
226
225
  "overrides": {
227
226
  "@achrinza/node-ipc": "10.1.10",
228
227
  "@parcel/watcher": "2.1.0",
229
- "@storybook/vue3-vite": {
230
- "vite": "$vite"
231
- },
232
- "rollup-plugin-visualizer": "6.0.11",
228
+ "rollup-plugin-visualizer": "5.12.0",
233
229
  "vite": {
234
230
  "rollup": "npm:@rollup/wasm-node"
235
231
  }
@@ -10,13 +10,11 @@ import {
10
10
  } from '@brand-page/models';
11
11
  import type { AboutSectionViewModel } from '@brand-page/view-models';
12
12
 
13
- global.ResizeObserver = vi.fn(function () {
14
- return {
15
- observe: vi.fn(),
16
- unobserve: vi.fn(),
17
- disconnect: vi.fn(),
18
- } as unknown as ResizeObserver;
19
- });
13
+ global.ResizeObserver = vi.fn().mockImplementation(() => ({
14
+ observe: vi.fn(),
15
+ unobserve: vi.fn(),
16
+ disconnect: vi.fn(),
17
+ }));
20
18
 
21
19
  const createTestBrandPageContext = (): BrandPageContext => ({
22
20
  brandPageSlug: faker.person.firstName(),
@@ -32,7 +32,7 @@
32
32
  </footer>
33
33
  </template>
34
34
  <script setup lang="ts">
35
- import { computed, onMounted, reactive, watch, shallowRef } from 'vue';
35
+ import { computed, onMounted, reactive, ref, watch, shallowRef } from 'vue';
36
36
  import { BRAND_PAGE_TYPES, type BrandPageContext } from '@brand-page/models';
37
37
  import {
38
38
  Icon,
@@ -52,7 +52,7 @@ export default defineComponent({
52
52
  shouldFitImage(): boolean {
53
53
  return Boolean(
54
54
  this.viewModel.aspectRatio &&
55
- ASPECT_RATIOS[this.viewModel.aspectRatio as string],
55
+ ASPECT_RATIOS[this.viewModel.aspectRatio as string],
56
56
  );
57
57
  },
58
58
  altText(): string {
@@ -1,4 +1,4 @@
1
- import { mount } from '@vue/test-utils';
1
+ import { mount, shallowMount } from '@vue/test-utils';
2
2
  import { faker } from '@faker-js/faker';
3
3
  import Image from './Image.vue';
4
4
  import {
@@ -7,7 +7,8 @@ import type { ImageGalleryImageClickPayload } from '../models';
7
7
  import type { BrandPageContext, ImageGalleryItem } from '../../../models';
8
8
  import { getImageAltText } from '../../../utils';
9
9
 
10
- interface IndexedImageGalleryItem extends ImageGalleryItem {
10
+ interface IndexedImageGalleryItem extends Omit<ImageGalleryItem, 'id'> {
11
+ // Local rendering index, distinct from the stable string `id` on ImageItem.
11
12
  id: number;
12
13
  }
13
14
 
@@ -57,6 +57,7 @@
57
57
  </template>
58
58
  <script setup lang="ts">
59
59
  import { computed, reactive, ref, watch } from 'vue';
60
+ import type { PropType } from 'vue';
60
61
  import TextMediaSection from '../text-media-section/TextMediaSection.vue';
61
62
  import ImageGalleryModal from '../image-gallery/ImageGalleryModal.vue';
62
63
  import BpImage from '../image/Image.vue';