@designcrowd/library.brand-page 5.19.1-error-html2canvas-3 → 5.19.1-id-based-items-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-BPP1Wtpt.js → CreatedOnBrandCrowd-de-de-Ruu5Az32.js} +3 -3
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-BlfpQiIg.js → CreatedOnBrandCrowd-en-us-DGUJtvld.js} +3 -3
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-Tldy_pIo.js → CreatedOnBrandCrowd-es-es-Dg-1uOfV.js} +3 -3
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-CHmb3VQE.js → CreatedOnBrandCrowd-fr-ca-CRKraZl8.js} +3 -3
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-CHmb3VQE.js → CreatedOnBrandCrowd-fr-fr-CRKraZl8.js} +3 -3
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-XbU3eK3Z.js → CreatedOnBrandCrowd-pt-br-bZ9VlEAu.js} +3 -3
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-XbU3eK3Z.js → CreatedOnBrandCrowd-pt-pt-bZ9VlEAu.js} +3 -3
  8. package/lib/src/{CreatedOnDcom-de-de-BVMFbVbI.js → CreatedOnDcom-de-de-CJYfwZx8.js} +3 -3
  9. package/lib/src/{CreatedOnDcom-en-us--kaKb1kI.js → CreatedOnDcom-en-us-rzA1lVxH.js} +3 -3
  10. package/lib/src/{CreatedOnDcom-es-es-XXVLpF2I.js → CreatedOnDcom-es-es-CNwGPjik.js} +3 -3
  11. package/lib/src/{CreatedOnDcom-fr-ca-D-7vtMZ5.js → CreatedOnDcom-fr-ca-DKw7OGIz.js} +3 -3
  12. package/lib/src/{CreatedOnDcom-fr-fr-CM9oQk77.js → CreatedOnDcom-fr-fr-WzOEaAZG.js} +3 -3
  13. package/lib/src/{CreatedOnDcom-pt-br-VVgu3BEa.js → CreatedOnDcom-pt-br-DkualVhm.js} +3 -3
  14. package/lib/src/{CreatedOnDcom-pt-pt-CWhA8Vla.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-logo-settings/AdminLogoSettings.mixin.d.ts +3 -3
  35. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +170 -181
  36. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +0 -3
  37. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.js +0 -1
  38. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +12 -12
  39. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.stories.js +2 -2
  40. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-payment.js +7 -0
  41. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +149 -148
  42. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +21 -21
  43. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.js +1 -1
  44. package/lib/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.d.ts +2 -4
  45. package/lib/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.js +0 -1
  46. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.d.ts +2 -4
  47. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.js +0 -1
  48. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.d.ts +2 -5
  49. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.js +0 -1
  50. package/lib/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.d.ts +2 -4
  51. package/lib/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.js +0 -1
  52. package/lib/src/brand-page-maker/components/device/Device.mixin.d.ts +2 -4
  53. package/lib/src/brand-page-maker/components/device/Device.mixin.js +0 -1
  54. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.d.ts +2 -4
  55. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.js +0 -1
  56. package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +3 -3
  57. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +11 -11
  58. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +25 -27
  59. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.js +0 -1
  60. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +27 -27
  61. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.js +1 -1
  62. package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +12 -17
  63. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +12 -12
  64. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +32 -30
  65. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.js +5 -16
  66. package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +11 -11
  67. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +6 -1
  68. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +1 -1
  69. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +6 -6
  70. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +2 -2
  71. package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +6 -6
  72. package/lib/src/brand-page-maker/constants/config-settings-constant.js +1 -1
  73. package/lib/src/brand-page-maker/convertors/text-image-display-style.convertor.d.ts +1 -1
  74. package/lib/src/brand-page-maker/convertors/text-image-display-style.convertor.js +1 -1
  75. package/lib/src/brand-page-maker/models/content-settings.d.ts +1 -1
  76. package/lib/src/brand-page-maker/models/navigation-style-configs.js +1 -1
  77. package/lib/src/brand-page-maker/routing/brand-page-maker-router.d.ts +2 -1
  78. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +378 -366
  79. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +4 -5
  80. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.js +5 -8
  81. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +1 -3
  82. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +3 -7
  83. package/lib/src/brand-page-maker/stores/history/history-store.d.ts +15 -15
  84. package/lib/src/brand-page-maker/stores/ui/ui-store.d.ts +0 -6
  85. package/lib/src/brand-page-maker/stores/ui/ui-store.js +0 -8
  86. package/lib/src/brand-page-maker/utils/content-settings.util.js +1 -1
  87. package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +1 -1
  88. package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +4 -4
  89. package/lib/src/clients/brand-page-client.d.ts +15 -16
  90. package/lib/src/clients/design-template-client.d.ts +0 -3
  91. package/lib/src/clients/media-client.d.ts +2 -2
  92. package/lib/src/clients/models.d.ts +0 -2
  93. package/lib/src/composables/useSnapshot.js +18 -18
  94. package/lib/src/css/library.brand-page-brandCrowd.min.css +324 -342
  95. package/lib/src/css/library.brand-page-brandPage.min.css +324 -620
  96. package/lib/src/css/library.brand-page-designCom.min.css +324 -342
  97. package/lib/src/css/library.brand-page-preview.min.css +324 -598
  98. package/lib/src/index.d.ts +1 -1
  99. package/lib/src/index.mjs +15 -16
  100. package/lib/src/{lib-yEV1yYI5.js → lib-Dy7MYyqz.js} +33242 -36445
  101. package/lib/src/lib.js +1 -1
  102. package/lib/src/metadata-builder/builders/footer-builder.js +62 -105
  103. package/lib/src/metadata-builder/builders/item-id-utils.d.ts +54 -0
  104. package/lib/src/metadata-builder/builders/item-id-utils.js +96 -0
  105. package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.js +57 -68
  106. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +58 -93
  107. package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +66 -99
  108. package/lib/src/metadata-builder/builders/section-builders/social-links-builder.js +57 -17
  109. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +51 -85
  110. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +49 -74
  111. package/lib/src/metadata-builder/builders/section-field-utils.d.ts +0 -7
  112. package/lib/src/metadata-builder/builders/section-field-utils.js +1 -1
  113. package/lib/src/metadata-builder/builders/shape-color-utils.js +1 -1
  114. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +16 -7
  115. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +66 -48
  116. package/lib/src/plugins/google-maps-plugin/google-maps-plugin.d.ts +1 -1
  117. package/lib/src/plugins/google-maps-plugin/google-maps-plugin.js +8 -8
  118. package/lib/src/shared/background-settings/components/background-shapes/BackgroundShapeSettings.mixin.d.ts +13 -13
  119. package/lib/src/shared/background-settings/store/background-settings-store.d.ts +3 -3
  120. package/lib/src/shared/color-picker/components/ColorPicker.mixin.d.ts +2 -4
  121. package/lib/src/shared/color-picker/components/ColorPicker.mixin.js +2 -2
  122. package/lib/src/shared/color-picker/components/ColorPickerSwatch.mixin.d.ts +2 -4
  123. package/lib/src/shared/color-picker/components/ColorPickerSwatch.mixin.js +0 -1
  124. package/lib/src/shared/confirm-modal/ConfirmModal.mixin.d.ts +2 -5
  125. package/lib/src/shared/confirm-modal/ConfirmModal.mixin.js +0 -1
  126. package/lib/src/shared/content-settings/components/GenericTextInput.mixin.d.ts +1 -0
  127. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +129 -131
  128. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +1 -2
  129. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +110 -111
  130. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +81 -84
  131. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.js +0 -5
  132. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +109 -117
  133. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +14 -1
  134. package/lib/src/shared/content-settings/components/email-field/EmailField.mixin.d.ts +1 -0
  135. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +70 -72
  136. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.js +3 -4
  137. package/lib/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.d.ts +4 -4
  138. package/lib/src/shared/content-settings/components/icon-library/IconLibrary.mixin.d.ts +1 -3
  139. package/lib/src/shared/content-settings/components/icon-library/IconLibrary.mixin.js +0 -1
  140. package/lib/src/shared/content-settings/components/images-field/ImagesField.mixin.d.ts +2 -2
  141. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.d.ts +3 -4
  142. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.js +1 -1
  143. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +40 -40
  144. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigOptionField.mixin.d.ts +6 -5
  145. package/lib/src/shared/content-settings/components/shape-field/ShapeField.mixin.d.ts +1 -0
  146. package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.d.ts +2 -2
  147. package/lib/src/shared/content-settings/components/tel-field/TelField.mixin.d.ts +1 -0
  148. package/lib/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.d.ts +2 -1
  149. package/lib/src/shared/content-settings/components/text-field/TextField.mixin.d.ts +1 -0
  150. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.d.ts +2 -1
  151. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +1 -1
  152. package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.d.ts +28 -28
  153. package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +1 -0
  154. package/lib/src/shared/content-settings/components/toggle-field/ToggleField.mixin.d.ts +2 -2
  155. package/lib/src/shared/content-settings/components/url-field/UrlField.mixin.d.ts +1 -0
  156. package/lib/src/shared/content-settings/components/youtube-video-field/YoutubeVideoField.mixin.d.ts +1 -0
  157. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +39 -39
  158. package/lib/src/shared/content-settings/utils.js +1 -0
  159. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.d.ts +4 -6
  160. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.js +0 -1
  161. package/lib/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.d.ts +2 -4
  162. package/lib/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.js +0 -1
  163. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +21 -29
  164. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.js +1 -1
  165. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +51 -50
  166. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.d.ts +4 -6
  167. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.js +0 -1
  168. package/lib/src/shared/logo-settings/store/editable-logo-store.js +1 -1
  169. package/lib/src/shared/logo-settings/store/logo-settings-store.d.ts +1 -1
  170. package/lib/src/shared/logo-versions/LogoVersions.mixin.d.ts +5 -13
  171. package/lib/src/shared/logo-versions/LogoVersions.mixin.js +0 -1
  172. package/lib/src/shared/models.d.ts +0 -2
  173. package/lib/src/shared/my-designs/MyDesigns.mixin.d.ts +6 -14
  174. package/lib/src/shared/my-designs/MyDesigns.mixin.js +0 -1
  175. package/lib/src/shared/my-uploads/MyMedia.mixin.d.ts +5 -14
  176. package/lib/src/shared/my-uploads/MyMedia.mixin.js +0 -1
  177. package/lib/src/shared/my-uploads/MyUploads.mixin.d.ts +5 -14
  178. package/lib/src/shared/my-uploads/MyUploads.mixin.js +0 -1
  179. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.d.ts +3 -5
  180. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.js +0 -1
  181. package/lib/src/shared/navigation-style-settings/store/index.d.ts +2 -2
  182. package/lib/src/shared/page-navigation/store/page-navigation-store.d.ts +2 -2
  183. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.d.ts +28 -27
  184. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.js +2 -0
  185. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +179 -188
  186. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +177 -181
  187. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.js +1 -1
  188. package/lib/src/shared/page-settings/store/page-settings-store.d.ts +9 -9
  189. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +39 -39
  190. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.js +1 -0
  191. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +18 -18
  192. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +6 -6
  193. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +60 -66
  194. package/lib/src/shared/style-settings/store/style-settings-store.d.ts +1 -1
  195. package/lib/src/shared/style-settings/store/style-settings-store.js +1 -1
  196. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +450 -20
  197. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.js +2 -2
  198. package/lib/src/shared/template-settings/models.d.ts +0 -1
  199. package/lib/src/shared/template-settings/store/template-settings-store.d.ts +0 -4
  200. package/lib/src/shared/template-settings/store/template-settings-store.js +11 -79
  201. package/lib/src/shared/unsplash-library/UnsplashLibrary.mixin.d.ts +4 -9
  202. package/lib/src/utils/minify-brand-page-metadata.d.ts +2 -0
  203. package/lib/src/utils/minify-brand-page-metadata.js +8 -1
  204. package/package.json +57 -61
  205. package/src/brand-page/components/about-section/AboutSection.vue.test.ts +5 -7
  206. package/src/brand-page/components/brand-page-footer/BrandPageFooter.vue +1 -1
  207. package/src/brand-page/components/image/Image.mixin.ts +1 -1
  208. package/src/brand-page/components/image/Image.test.ts +1 -1
  209. package/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.ts +2 -1
  210. package/src/brand-page/components/images-section/ImagesSection.vue +1 -0
  211. package/src/brand-page/components/logo/LogoRender.vue +188 -188
  212. package/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.ts +0 -1
  213. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.ts +6 -15
  214. package/src/brand-page/components/page-footer/PageFooter.vue +0 -1
  215. package/src/brand-page/components/page-header/HeaderLayout.vue +6 -12
  216. package/src/brand-page/components/page-header/PageHeader.vue +0 -1
  217. package/src/brand-page/components/shapes-section/ShapesSection.vue +1 -1
  218. package/src/brand-page/components/shop/CartModal.vue +3 -1
  219. package/src/brand-page/components/shop/FeaturedDisplay.vue +2 -2
  220. package/src/brand-page/components/shop/PaymentModal.vue +5 -1
  221. package/src/brand-page/components/shop/ProductDetailModal.vue +1 -1
  222. package/src/brand-page/components/shop/Shop.vue +1 -1
  223. package/src/brand-page/components/shop/TextDisplay.vue +1 -1
  224. package/src/brand-page/components/shop/ThumbnailDisplay.vue +2 -2
  225. package/src/brand-page/components/testimonial-section/TestimonialSection.vue +3 -3
  226. package/src/brand-page/components/text-wrapper/TextWrapper.vue +1 -3
  227. package/src/brand-page/constants/sections/footer-display.constants.ts +1 -1
  228. package/src/brand-page/models/index.ts +12 -4
  229. package/src/brand-page/models/payment.model.ts +1 -2
  230. package/src/brand-page/models/shop.model.ts +2 -0
  231. package/src/brand-page/models/user-personalisation.model.ts +2 -1
  232. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +0 -3
  233. package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +0 -1
  234. package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +0 -2
  235. package/src/brand-page/utils/migration/migration-01_1.ts +1 -1
  236. package/src/brand-page/utils/migration/migration-02.ts +1 -0
  237. package/src/brand-page/utils/migration/migration-03.ts +1 -0
  238. package/src/brand-page/utils/migration/migration-04.ts +1 -0
  239. package/src/brand-page/utils/migration/migration-05.ts +5 -1
  240. package/src/brand-page/utils/migration/migration-05_2.ts +1 -1
  241. package/src/brand-page/utils/migration/migration-08.test.ts +1 -1
  242. package/src/brand-page/utils/personalisation.util.test.ts +0 -35
  243. package/src/brand-page/utils/personalisation.util.ts +23 -119
  244. package/src/brand-page/view-models.ts +56 -38
  245. package/src/brand-page-maker/assessors/banner-section-description-visibility.assessor.ts +6 -6
  246. package/src/brand-page-maker/assessors/color-replacement-icon-visibility.assessor.ts +2 -2
  247. package/src/brand-page-maker/assessors/color-replacement-profile-visibility.assessor.ts +2 -2
  248. package/src/brand-page-maker/assessors/color-replacement-visibility.assessor.ts +2 -2
  249. package/src/brand-page-maker/assessors/contact-form-visibility.assessor.ts +14 -14
  250. package/src/brand-page-maker/components/action-bar/ActionBar.mixin.ts +0 -1
  251. package/src/brand-page-maker/components/ai-text-edit/TextBubble.vue +0 -1
  252. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +1 -5
  253. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.ts +0 -1
  254. package/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.stories.ts +5 -2
  255. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +5 -0
  256. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-payment.ts +8 -0
  257. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-site-template.examples.ts +2 -0
  258. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.vue +0 -1
  259. package/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.ts +1 -1
  260. package/src/brand-page-maker/components/color-palette/BpColorPalette.vue +2 -1
  261. package/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.ts +0 -1
  262. package/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.ts +0 -1
  263. package/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.ts +0 -1
  264. package/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.ts +0 -1
  265. package/src/brand-page-maker/components/device/Device.mixin.ts +0 -1
  266. package/src/brand-page-maker/components/navigation/Navigation.mixin.ts +0 -1
  267. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +1 -3
  268. package/src/brand-page-maker/components/sensitive-content/SensitiveContent.vue +4 -1
  269. package/src/brand-page-maker/components/seo-settings/DeleteDomainModal.vue +1 -1
  270. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.ts +0 -1
  271. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.vue +1 -1
  272. package/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.ts +1 -0
  273. package/src/brand-page-maker/components/seo-settings/UrlSettings.vue +1 -0
  274. package/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.vue +5 -1
  275. package/src/brand-page-maker/components/shop/AddOrEditProductContainer.vue +1 -1
  276. package/src/brand-page-maker/components/shop/ReplaceImageSettingsForShop.vue +1 -1
  277. package/src/brand-page-maker/components/social-share/SocialShare.vue +1 -1
  278. package/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.ts +8 -22
  279. package/src/brand-page-maker/components/template-preview/TemplatePreview.vue +10 -5
  280. package/src/brand-page-maker/components/video-play/VideoPlayButton.vue +1 -1
  281. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +7 -1
  282. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +6 -6
  283. package/src/brand-page-maker/constants/config-settings-constant.ts +3 -3
  284. package/src/brand-page-maker/convertors/text-image-display-style.convertor.ts +1 -1
  285. package/src/brand-page-maker/models/button-styles-config.ts +2 -4
  286. package/src/brand-page-maker/models/content-settings-configs.ts +2 -4
  287. package/src/brand-page-maker/models/navigation-style-configs.ts +6 -5
  288. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.ts +1 -0
  289. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.ts +5 -8
  290. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +3 -1
  291. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +4 -12
  292. package/src/brand-page-maker/stores/ui/ui-store.ts +0 -16
  293. package/src/brand-page-maker/utils/content-settings.util.ts +1 -1
  294. package/src/brand-page-maker/utils/rich-text-editor.util.ts +4 -4
  295. package/src/clients/design-template-client.ts +0 -3
  296. package/src/clients/models.ts +0 -2
  297. package/src/composables/useSnapshot.ts +22 -19
  298. package/src/lib.ts +0 -1
  299. package/src/metadata-builder/builders/footer-builder.test.ts +229 -130
  300. package/src/metadata-builder/builders/footer-builder.ts +90 -155
  301. package/src/metadata-builder/builders/item-id-utils.test.ts +184 -0
  302. package/src/metadata-builder/builders/item-id-utils.ts +117 -0
  303. package/src/metadata-builder/builders/section-builders/image-gallery-builder.ts +62 -88
  304. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +66 -129
  305. package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +105 -160
  306. package/src/metadata-builder/builders/section-builders/social-links-builder.ts +65 -20
  307. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +83 -146
  308. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +70 -122
  309. package/src/metadata-builder/builders/section-field-utils.ts +1 -1
  310. package/src/metadata-builder/builders/shape-color-utils.ts +2 -2
  311. package/src/metadata-builder/parsers/ai-toolcall-parser.ts +16 -7
  312. package/src/metadata-builder/parsers/section-tool-arguments.ts +66 -48
  313. package/src/plugins/google-maps-plugin/google-maps-plugin.ts +8 -8
  314. package/src/shared/background-settings/components/BackgroundSettings.vue +1 -1
  315. package/src/shared/background-settings/components/background-color/BackgroundColorSettings.vue +1 -1
  316. package/src/shared/color-picker/components/ColorPicker.mixin.ts +7 -2
  317. package/src/shared/color-picker/components/ColorPickerSwatch.mixin.ts +0 -1
  318. package/src/shared/common/NumberInput.vue +0 -1
  319. package/src/shared/common/SideBarSettingsHeader.vue +2 -2
  320. package/src/shared/confirm-modal/ConfirmModal.mixin.ts +0 -1
  321. package/src/shared/content-settings/components/booking-url-field/BookingUrlField.vue +0 -1
  322. package/src/shared/content-settings/components/button-configuration-field/ButtonConfigurationField.vue +0 -1
  323. package/src/shared/content-settings/components/color-field/ColorField.vue +10 -3
  324. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +1 -1
  325. package/src/shared/content-settings/components/content-settings/ContentSettingsLockedButton.vue +0 -1
  326. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.ts +0 -5
  327. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +14 -1
  328. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.ts +6 -4
  329. package/src/shared/content-settings/components/icon-library/IconLibrary.mixin.ts +0 -1
  330. package/src/shared/content-settings/components/items-field/ItemsField.mixin.ts +1 -1
  331. package/src/shared/content-settings/components/logo-selection-field/LogoSelectionField.vue +1 -1
  332. package/src/shared/content-settings/components/logo-size-field/LogoSizeSliderField.vue +1 -1
  333. package/src/shared/content-settings/components/page-dropdown-field/PageDropdownField.vue +1 -1
  334. package/src/shared/content-settings/components/personalisation-role-field/PersonalisationRoleField.vue +4 -4
  335. package/src/shared/content-settings/components/text-image-field/TextImageField.vue +8 -2
  336. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +1 -1
  337. package/src/shared/content-settings/models.ts +2 -3
  338. package/src/shared/content-settings/utils.ts +1 -0
  339. package/src/shared/dropzone-image-uploader/components/DropzoneImageUploader.vue +0 -1
  340. package/src/shared/ecommerce-settings/store/cart-store.test.ts +1 -1
  341. package/src/shared/font-family-selector/FontFamilySelector.mixin.ts +0 -1
  342. package/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.ts +0 -1
  343. package/src/shared/logo-settings/components/EditLogoSettings.mixin.ts +1 -1
  344. package/src/shared/logo-settings/components/LogoSettings.mixin.ts +1 -0
  345. package/src/shared/logo-settings/components/LogoSettingsHeader.mixin.ts +0 -1
  346. package/src/shared/logo-settings/components/LogoStyleSettingsWithState.vue +2 -2
  347. package/src/shared/logo-settings/components/LogoTemplateSearch.vue +1 -1
  348. package/src/shared/logo-settings/store/editable-logo-store.ts +1 -1
  349. package/src/shared/logo-settings/store/logo-settings-store.test.ts +4 -4
  350. package/src/shared/logo-versions/LogoVersions.mixin.ts +0 -1
  351. package/src/shared/models.ts +0 -6
  352. package/src/shared/my-designs/MyDesigns.mixin.ts +0 -1
  353. package/src/shared/my-uploads/MyMedia.mixin.ts +0 -1
  354. package/src/shared/my-uploads/MyMediaSelectionItem.vue +1 -2
  355. package/src/shared/my-uploads/MyUploads.mixin.ts +0 -1
  356. package/src/shared/my-uploads/models.ts +2 -1
  357. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.ts +0 -1
  358. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.vue +1 -1
  359. package/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.ts +3 -0
  360. package/src/shared/page-settings/components/page-settings/NestedDraggable.vue +1 -1
  361. package/src/shared/page-settings/components/page-settings/PageSettings.vue +2 -1
  362. package/src/shared/page-settings/components/page-settings-section-styles/HeaderDisplayStyle.vue +1 -1
  363. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.ts +1 -1
  364. package/src/shared/page-settings/store/page-settings-store.test.ts +8 -4
  365. package/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.ts +1 -0
  366. package/src/shared/shape-library/ShapeLibrary.vue +2 -2
  367. package/src/shared/style-settings/store/style-settings-store.ts +1 -1
  368. package/src/shared/template-settings/components/TemplatesSettings.mixin.ts +2 -2
  369. package/src/shared/template-settings/models.ts +0 -1
  370. package/src/shared/template-settings/store/template-settings-store.ts +18 -105
  371. package/src/shared/unsplash-library/UnsplashLibrary.vue +6 -2
  372. package/src/shared/video-library/VideoLibrary.vue +1 -1
  373. package/src/utils/minify-brand-page-metadata.ts +14 -2
  374. package/lib/src/brand-page/components/banner-section/BannerSection.mixin.d.ts +0 -103
  375. package/lib/src/brand-page/components/banner-section/BannerSection.mixin.js +0 -178
  376. package/src/brand-page/components/banner-section/BannerSection.mixin.ts +0 -210
  377. 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;
@@ -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
  };
@@ -164,6 +164,7 @@ const minifyContent = (content, editor, assets) => {
164
164
  ...(Array.isArray(c.items) && {
165
165
  items: c.items.map((item, index) => ({
166
166
  position: index + 1,
167
+ ...(item.id && { id: item.id }),
167
168
  ...st('name', item.name, editor),
168
169
  ...st('jobTitle', item.position, editor),
169
170
  ...st('testimonials', item.testimonials, editor),
@@ -191,6 +192,7 @@ const minifyContent = (content, editor, assets) => {
191
192
  ...(Array.isArray(c.items) && {
192
193
  items: c.items.map((item, index) => ({
193
194
  position: index + 1,
195
+ ...(item.id && { id: item.id }),
194
196
  ...includeImageWithKey(item.imageUrl),
195
197
  ...st('title', item.title, editor),
196
198
  ...st('paragraph', item.paragraph, editor),
@@ -220,6 +222,7 @@ const minifyContent = (content, editor, assets) => {
220
222
  ...(Array.isArray(c.textItems) && {
221
223
  textItems: c.textItems.map((item, index) => ({
222
224
  position: index + 1,
225
+ ...(item.id && { id: item.id }),
223
226
  ...st('text', item.text, editor),
224
227
  ...(includeStyle(item.textStyle) && { textStyle: item.textStyle }),
225
228
  })),
@@ -300,6 +303,7 @@ const minifyContent = (content, editor, assets) => {
300
303
  ...(Array.isArray(c.links) && {
301
304
  links: c.links.map((link, index) => ({
302
305
  position: index + 1,
306
+ ...(link.id && { id: link.id }),
303
307
  ...(includeString(link.url) && { url: link.url }),
304
308
  ...includeImageWithKey(link.imageUrl),
305
309
  })),
@@ -339,6 +343,7 @@ const minifyContent = (content, editor, assets) => {
339
343
  ...(Array.isArray(c.images) && {
340
344
  images: c.images.map((img, index) => ({
341
345
  position: index + 1,
346
+ ...(img.id && { id: img.id }),
342
347
  ...includeImageWithKey(img.imageUrl),
343
348
  ...st('imageTitle', img.imageTitle, editor),
344
349
  })),
@@ -379,7 +384,9 @@ const minifyFooter = (footer, logoAssetKey) => {
379
384
  logoImageWidth: footer.logoImageWidth || undefined,
380
385
  ...(logoAssetKey && { logoAssetKey }),
381
386
  socialLinks: footer.socialLinks?.length
382
- ? footer.socialLinks.map((l) => ({
387
+ ? footer.socialLinks.map((l, index) => ({
388
+ position: index + 1,
389
+ ...(l.id && { id: l.id }),
383
390
  imageUrl: l.imageUrl || '',
384
391
  url: l.url || '',
385
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": "5.19.1-error-html2canvas-3",
4
+ "version": "5.19.1-id-based-items-2",
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
  }
@@ -248,4 +244,4 @@
248
244
  "public"
249
245
  ]
250
246
  }
251
- }
247
+ }
@@ -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';