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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DsoA9hc-.js → CreatedOnBrandCrowd-de-de-DmKe7W8L.js} +3 -3
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-BP6NEQ66.js → CreatedOnBrandCrowd-en-us-D2EeiNep.js} +3 -3
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-D424uM1Z.js → CreatedOnBrandCrowd-es-es-BqVwNY1D.js} +3 -3
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-CJvuLTkB.js → CreatedOnBrandCrowd-fr-ca-C756a27-.js} +3 -3
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-CJvuLTkB.js → CreatedOnBrandCrowd-fr-fr-C756a27-.js} +3 -3
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-Cc9L314u.js → CreatedOnBrandCrowd-pt-br-FNHAnZUw.js} +3 -3
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-Cc9L314u.js → CreatedOnBrandCrowd-pt-pt-FNHAnZUw.js} +3 -3
  8. package/lib/src/{CreatedOnDcom-de-de-CX-295FH.js → CreatedOnDcom-de-de-8AZZFmDt.js} +3 -3
  9. package/lib/src/{CreatedOnDcom-en-us-UFlORUgZ.js → CreatedOnDcom-en-us-DizTP32i.js} +3 -3
  10. package/lib/src/{CreatedOnDcom-es-es-D1tRpcq9.js → CreatedOnDcom-es-es-qnp9_n_A.js} +3 -3
  11. package/lib/src/{CreatedOnDcom-fr-ca-Dz_ry9uY.js → CreatedOnDcom-fr-ca-jUs352uK.js} +3 -3
  12. package/lib/src/{CreatedOnDcom-fr-fr-8Ydu6b1T.js → CreatedOnDcom-fr-fr-CTxXtHyk.js} +3 -3
  13. package/lib/src/{CreatedOnDcom-pt-br-COwvw5k4.js → CreatedOnDcom-pt-br-nQHj8P7d.js} +3 -3
  14. package/lib/src/{CreatedOnDcom-pt-pt-CB72-eaa.js → CreatedOnDcom-pt-pt-DJmVYQuL.js} +3 -3
  15. package/lib/src/brand-page/clients/brand-page.client.d.ts +9 -9
  16. package/lib/src/brand-page/components/{testimonial-section/TestimonialSection.mixin.d.ts → banner-section/BannerSection.mixin.d.ts} +43 -37
  17. package/lib/src/brand-page/components/banner-section/BannerSection.mixin.js +178 -0
  18. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +4 -0
  19. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +8 -4
  20. package/lib/src/brand-page/components/image-gallery/ImageGallery.mixin.d.ts +4 -0
  21. package/lib/src/brand-page/components/image-gallery/ImageGallery.mixin.js +4 -0
  22. package/lib/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.d.ts +0 -1
  23. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.d.ts +4 -0
  24. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +4 -1
  25. package/lib/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.d.ts +4 -2
  26. package/lib/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.js +1 -0
  27. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.d.ts +4 -2
  28. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.js +5 -4
  29. package/lib/src/brand-page/components/page/Page.mixin.d.ts +1 -1
  30. package/lib/src/brand-page/components/page/PageComponent.mixin.d.ts +1 -1
  31. package/lib/src/brand-page/components/payment/Payment.mixin.d.ts +3 -3
  32. package/lib/src/brand-page/components/payment/__fixtures__/request-payment.d.ts +13 -13
  33. package/lib/src/brand-page/components/payment/__fixtures__/support-me.d.ts +13 -13
  34. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.d.ts +4 -0
  35. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.js +4 -0
  36. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.d.ts +4 -0
  37. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.js +4 -1
  38. package/lib/src/brand-page/components/video/Video.mixin.d.ts +4 -0
  39. package/lib/src/brand-page/components/video/Video.mixin.js +4 -0
  40. package/lib/src/brand-page/constants/font.constants.d.ts +4 -4
  41. package/lib/src/brand-page/constants/font.constants.js +4 -4
  42. package/lib/src/brand-page/constants/misc.constants.d.ts +35 -0
  43. package/lib/src/brand-page/constants/misc.constants.js +51 -0
  44. package/lib/src/brand-page/constants/sections/footer-display.constants.js +1 -1
  45. package/lib/src/brand-page/models/content.model.d.ts +2 -0
  46. package/lib/src/brand-page/models/index.d.ts +2 -1
  47. package/lib/src/brand-page/models/index.js +3 -0
  48. package/lib/src/brand-page/models/payment.model.d.ts +1 -1
  49. package/lib/src/brand-page/utils/content-padding.util.d.ts +13 -0
  50. package/lib/src/brand-page/utils/content-padding.util.js +10 -0
  51. package/lib/src/brand-page/utils/index.d.ts +1 -0
  52. package/lib/src/brand-page/utils/index.js +1 -0
  53. package/lib/src/brand-page/utils/migration/migration-17.d.ts +2 -0
  54. package/lib/src/brand-page/utils/migration/migration-17.js +60 -0
  55. package/lib/src/brand-page/utils/migration.util.js +10 -0
  56. package/lib/src/brand-page/utils/personalisation.util.js +72 -14
  57. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +21 -19
  58. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.js +1 -0
  59. package/lib/src/brand-page-maker/components/admin-background-settings/AdminBackgroundSettings.mixin.d.ts +16 -10
  60. package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.d.ts +5 -3
  61. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +193 -170
  62. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +3 -0
  63. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.js +1 -0
  64. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +12 -12
  65. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.stories.js +2 -2
  66. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-payment.js +0 -7
  67. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +162 -149
  68. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +21 -21
  69. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.js +1 -1
  70. package/lib/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.d.ts +4 -2
  71. package/lib/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.js +1 -0
  72. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.d.ts +4 -2
  73. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.js +1 -0
  74. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.d.ts +5 -2
  75. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.js +1 -0
  76. package/lib/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.d.ts +4 -2
  77. package/lib/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.js +1 -0
  78. package/lib/src/brand-page-maker/components/device/Device.mixin.d.ts +4 -2
  79. package/lib/src/brand-page-maker/components/device/Device.mixin.js +1 -0
  80. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.d.ts +4 -2
  81. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.js +1 -0
  82. package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +3 -3
  83. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +11 -11
  84. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +27 -25
  85. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.js +1 -0
  86. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +27 -27
  87. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.js +1 -1
  88. package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +17 -12
  89. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +12 -12
  90. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +30 -32
  91. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.js +16 -5
  92. package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +11 -11
  93. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +1 -1
  94. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +1 -1
  95. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +6 -6
  96. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +2 -2
  97. package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +6 -6
  98. package/lib/src/brand-page-maker/constants/config-settings-constant.js +40 -1
  99. package/lib/src/brand-page-maker/convertors/about-display-style.convertor.js +9 -1
  100. package/lib/src/brand-page-maker/convertors/banner-align-display-style.convertor.js +7 -1
  101. package/lib/src/brand-page-maker/convertors/contact-layout-style.convertor.js +6 -1
  102. package/lib/src/brand-page-maker/convertors/text-image-display-style.convertor.d.ts +1 -1
  103. package/lib/src/brand-page-maker/convertors/text-image-display-style.convertor.js +1 -1
  104. package/lib/src/brand-page-maker/models/content-settings.d.ts +1 -1
  105. package/lib/src/brand-page-maker/models/content-settings.js +39 -2
  106. package/lib/src/brand-page-maker/models/navigation-style-configs.js +1 -1
  107. package/lib/src/brand-page-maker/routing/brand-page-maker-router.d.ts +1 -2
  108. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +378 -360
  109. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +5 -4
  110. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.js +8 -5
  111. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +3 -1
  112. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +7 -3
  113. package/lib/src/brand-page-maker/stores/history/history-store.d.ts +15 -15
  114. package/lib/src/brand-page-maker/stores/ui/ui-store.d.ts +6 -0
  115. package/lib/src/brand-page-maker/stores/ui/ui-store.js +8 -0
  116. package/lib/src/brand-page-maker/utils/content-settings.util.js +1 -1
  117. package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +1 -1
  118. package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +4 -4
  119. package/lib/src/{bundled-translations-D1q3rSEz.js → bundled-translations-BUyt4scr.js} +9 -9
  120. package/lib/src/{bundled-translations.de-DE-BxqLLwbh.js → bundled-translations.de-DE-DEw_OVai.js} +1 -1
  121. package/lib/src/{bundled-translations.es-ES-uh249NlJ.js → bundled-translations.es-ES-CFKWmkgY.js} +17 -17
  122. package/lib/src/{bundled-translations.fr-CA-BEQmv2fX.js → bundled-translations.fr-CA-DCl5LJS4.js} +1 -1
  123. package/lib/src/{bundled-translations.fr-FR-BnNuCojH.js → bundled-translations.fr-FR-B5BjgllA.js} +1 -1
  124. package/lib/src/{bundled-translations.pt-BR-CJUOxVlq.js → bundled-translations.pt-BR-5PWpMPuM.js} +1 -1
  125. package/lib/src/{bundled-translations.pt-PT-Ds9cMEqK.js → bundled-translations.pt-PT-B9_wN0HR.js} +9 -9
  126. package/lib/src/bundles/bundled-translations.de-DE.json +2 -0
  127. package/lib/src/bundles/bundled-translations.es-ES.json +2 -0
  128. package/lib/src/bundles/bundled-translations.fr-CA.json +2 -0
  129. package/lib/src/bundles/bundled-translations.fr-FR.json +2 -0
  130. package/lib/src/bundles/bundled-translations.json +2 -0
  131. package/lib/src/bundles/bundled-translations.pt-BR.json +2 -0
  132. package/lib/src/bundles/bundled-translations.pt-PT.json +2 -0
  133. package/lib/src/clients/brand-page-client.d.ts +16 -15
  134. package/lib/src/clients/design-template-client.d.ts +3 -0
  135. package/lib/src/clients/media-client.d.ts +2 -2
  136. package/lib/src/clients/models.d.ts +2 -0
  137. package/lib/src/composables/useSnapshot.js +18 -18
  138. package/lib/src/css/library.brand-page-brandCrowd.min.css +441 -437
  139. package/lib/src/css/library.brand-page-brandPage.min.css +719 -437
  140. package/lib/src/css/library.brand-page-designCom.min.css +441 -437
  141. package/lib/src/css/library.brand-page-preview.min.css +697 -437
  142. package/lib/src/index.d.ts +1 -1
  143. package/lib/src/index.mjs +16 -15
  144. package/lib/src/{lib-tHPi9EKk.js → lib-DityivZa.js} +37011 -33834
  145. package/lib/src/lib.js +1 -1
  146. package/lib/src/metadata-builder/builders/footer-builder.js +90 -65
  147. package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.js +1 -1
  148. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +1 -1
  149. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +1 -1
  150. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +1 -1
  151. package/lib/src/metadata-builder/builders/shape-color-utils.js +1 -1
  152. package/lib/src/plugins/google-maps-plugin/google-maps-plugin.d.ts +1 -1
  153. package/lib/src/plugins/google-maps-plugin/google-maps-plugin.js +8 -8
  154. package/lib/src/shared/background-settings/components/background-shapes/BackgroundShapeSettings.mixin.d.ts +13 -13
  155. package/lib/src/shared/background-settings/store/background-settings-store.d.ts +3 -3
  156. package/lib/src/shared/color-picker/components/ColorPicker.mixin.d.ts +4 -2
  157. package/lib/src/shared/color-picker/components/ColorPicker.mixin.js +2 -2
  158. package/lib/src/shared/color-picker/components/ColorPickerSwatch.mixin.d.ts +4 -2
  159. package/lib/src/shared/color-picker/components/ColorPickerSwatch.mixin.js +1 -0
  160. package/lib/src/shared/confirm-modal/ConfirmModal.mixin.d.ts +5 -2
  161. package/lib/src/shared/confirm-modal/ConfirmModal.mixin.js +1 -0
  162. package/lib/src/shared/content-settings/components/GenericTextInput.mixin.d.ts +0 -1
  163. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +145 -129
  164. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +2 -1
  165. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +125 -110
  166. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +96 -81
  167. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.js +5 -0
  168. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +129 -109
  169. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +1 -14
  170. package/lib/src/shared/content-settings/components/email-field/EmailField.mixin.d.ts +0 -1
  171. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +84 -70
  172. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.js +4 -3
  173. package/lib/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.d.ts +4 -4
  174. package/lib/src/shared/content-settings/components/icon-library/IconLibrary.mixin.d.ts +3 -1
  175. package/lib/src/shared/content-settings/components/icon-library/IconLibrary.mixin.js +1 -0
  176. package/lib/src/shared/content-settings/components/images-field/ImagesField.mixin.d.ts +2 -2
  177. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.d.ts +4 -3
  178. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.js +1 -1
  179. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +40 -40
  180. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigOptionField.mixin.d.ts +5 -6
  181. package/lib/src/shared/content-settings/components/shape-field/ShapeField.mixin.d.ts +0 -1
  182. package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.d.ts +2 -2
  183. package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.js +9 -0
  184. package/lib/src/shared/content-settings/components/tel-field/TelField.mixin.d.ts +0 -1
  185. package/lib/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.d.ts +1 -2
  186. package/lib/src/shared/content-settings/components/text-field/TextField.mixin.d.ts +0 -1
  187. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.d.ts +1 -2
  188. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +1 -1
  189. package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.d.ts +28 -28
  190. package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +0 -1
  191. package/lib/src/shared/content-settings/components/toggle-field/ToggleField.mixin.d.ts +2 -2
  192. package/lib/src/shared/content-settings/components/url-field/UrlField.mixin.d.ts +0 -1
  193. package/lib/src/shared/content-settings/components/youtube-video-field/YoutubeVideoField.mixin.d.ts +0 -1
  194. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +51 -39
  195. package/lib/src/shared/content-settings/utils.js +0 -1
  196. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.d.ts +6 -4
  197. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.js +1 -0
  198. package/lib/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.d.ts +4 -2
  199. package/lib/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.js +1 -0
  200. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +29 -21
  201. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.js +1 -1
  202. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +50 -51
  203. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.d.ts +6 -4
  204. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.js +1 -0
  205. package/lib/src/shared/logo-settings/store/editable-logo-store.js +1 -1
  206. package/lib/src/shared/logo-settings/store/logo-settings-store.d.ts +1 -1
  207. package/lib/src/shared/logo-versions/LogoVersions.mixin.d.ts +13 -5
  208. package/lib/src/shared/logo-versions/LogoVersions.mixin.js +1 -0
  209. package/lib/src/shared/models.d.ts +2 -0
  210. package/lib/src/shared/my-designs/MyDesigns.mixin.d.ts +14 -6
  211. package/lib/src/shared/my-designs/MyDesigns.mixin.js +1 -0
  212. package/lib/src/shared/my-uploads/MyMedia.mixin.d.ts +14 -5
  213. package/lib/src/shared/my-uploads/MyMedia.mixin.js +1 -0
  214. package/lib/src/shared/my-uploads/MyUploads.mixin.d.ts +14 -5
  215. package/lib/src/shared/my-uploads/MyUploads.mixin.js +1 -0
  216. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.d.ts +5 -3
  217. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.js +1 -0
  218. package/lib/src/shared/navigation-style-settings/store/index.d.ts +2 -2
  219. package/lib/src/shared/page-navigation/store/page-navigation-store.d.ts +2 -2
  220. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.d.ts +27 -28
  221. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.js +0 -2
  222. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +204 -177
  223. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +195 -175
  224. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.js +1 -1
  225. package/lib/src/shared/page-settings/store/page-settings-store.d.ts +9 -9
  226. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +39 -39
  227. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.js +0 -1
  228. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +18 -18
  229. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +6 -6
  230. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +66 -60
  231. package/lib/src/shared/style-settings/store/style-settings-store.d.ts +1 -1
  232. package/lib/src/shared/style-settings/store/style-settings-store.js +1 -1
  233. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +20 -450
  234. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.js +2 -2
  235. package/lib/src/shared/template-settings/models.d.ts +1 -0
  236. package/lib/src/shared/template-settings/store/template-settings-store.d.ts +4 -0
  237. package/lib/src/shared/template-settings/store/template-settings-store.js +79 -11
  238. package/lib/src/shared/unsplash-library/UnsplashLibrary.mixin.d.ts +9 -4
  239. package/lib/src/utils/minify-brand-page-metadata.js +11 -1
  240. package/package.json +61 -57
  241. package/src/brand-page/components/about-section/AboutSection.vue +10 -4
  242. package/src/brand-page/components/about-section/AboutSection.vue.test.ts +7 -5
  243. package/src/brand-page/components/banner-section/BannerSection.mixin.ts +210 -0
  244. package/src/brand-page/components/banner-section/BannerSection.vue +11 -4
  245. package/src/brand-page/components/booking-section/BookingSection.vue +11 -3
  246. package/src/brand-page/components/brand-page-footer/BrandPageFooter.vue +1 -1
  247. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +12 -6
  248. package/src/brand-page/components/contact-form/ContactForm.vue +105 -104
  249. package/src/brand-page/components/image/Image.mixin.ts +1 -1
  250. package/src/brand-page/components/image/Image.test.ts +1 -1
  251. package/src/brand-page/components/image-gallery/ImageGallery.mixin.ts +5 -0
  252. package/src/brand-page/components/image-gallery/ImageGallery.vue +1 -1
  253. package/src/brand-page/components/images-section/ImagesSection.vue +0 -1
  254. package/src/brand-page/components/logo/LogoRender.vue +188 -188
  255. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +8 -1
  256. package/src/brand-page/components/mailing-list/MailingList.vue +1 -1
  257. package/src/brand-page/components/map/Map.vue +5 -1
  258. package/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.ts +1 -0
  259. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.ts +15 -6
  260. package/src/brand-page/components/page-footer/PageFooter.vue +1 -0
  261. package/src/brand-page/components/page-header/HeaderLayout.vue +12 -6
  262. package/src/brand-page/components/page-header/PageHeader.vue +1 -0
  263. package/src/brand-page/components/payment/request-payment/RequestPayment.mixin.ts +5 -0
  264. package/src/brand-page/components/payment/request-payment/RequestPayment.vue +1 -0
  265. package/src/brand-page/components/payment/support-me/SupportMe.mixin.ts +8 -1
  266. package/src/brand-page/components/payment/support-me/SupportMe.vue +1 -0
  267. package/src/brand-page/components/shapes-section/ShapesSection.vue +1 -1
  268. package/src/brand-page/components/shop/CartModal.vue +1 -3
  269. package/src/brand-page/components/shop/FeaturedDisplay.vue +2 -2
  270. package/src/brand-page/components/shop/PaymentModal.vue +1 -5
  271. package/src/brand-page/components/shop/ProductDetailModal.vue +1 -1
  272. package/src/brand-page/components/shop/Shop.vue +8 -3
  273. package/src/brand-page/components/shop/TextDisplay.vue +1 -1
  274. package/src/brand-page/components/shop/ThumbnailDisplay.vue +2 -2
  275. package/src/brand-page/components/social-links/SocialLinks.vue +7 -3
  276. package/src/brand-page/components/testimonial-section/TestimonialSection.vue +120 -11
  277. package/src/brand-page/components/text/Text.vue +12 -5
  278. package/src/brand-page/components/text-media-section/TextMediaSection.vue +11 -3
  279. package/src/brand-page/components/text-wrapper/TextWrapper.vue +3 -1
  280. package/src/brand-page/components/video/Video.mixin.ts +5 -0
  281. package/src/brand-page/components/video/Video.vue +1 -1
  282. package/src/brand-page/constants/font.constants.ts +4 -4
  283. package/src/brand-page/constants/misc.constants.ts +58 -0
  284. package/src/brand-page/constants/sections/footer-display.constants.ts +1 -1
  285. package/src/brand-page/models/content.model.ts +2 -0
  286. package/src/brand-page/models/index.ts +4 -0
  287. package/src/brand-page/models/payment.model.ts +2 -1
  288. package/src/brand-page/models/shop.model.ts +0 -2
  289. package/src/brand-page/models/user-personalisation.model.ts +1 -2
  290. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +12 -3
  291. package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +7 -6
  292. package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +14 -12
  293. package/src/brand-page/utils/content-padding.util.test.ts +29 -0
  294. package/src/brand-page/utils/content-padding.util.ts +13 -0
  295. package/src/brand-page/utils/index.ts +1 -0
  296. package/src/brand-page/utils/migration/migration-01_1.ts +1 -1
  297. package/src/brand-page/utils/migration/migration-02.ts +0 -1
  298. package/src/brand-page/utils/migration/migration-03.ts +0 -1
  299. package/src/brand-page/utils/migration/migration-04.ts +0 -1
  300. package/src/brand-page/utils/migration/migration-05.ts +1 -5
  301. package/src/brand-page/utils/migration/migration-05_2.ts +1 -1
  302. package/src/brand-page/utils/migration/migration-08.test.ts +1 -1
  303. package/src/brand-page/utils/migration/migration-17.ts +77 -0
  304. package/src/brand-page/utils/migration.util.test.ts +290 -0
  305. package/src/brand-page/utils/migration.util.ts +11 -0
  306. package/src/brand-page/utils/personalisation.util.test.ts +35 -0
  307. package/src/brand-page/utils/personalisation.util.ts +119 -23
  308. package/src/brand-page/view-models.ts +38 -56
  309. package/src/brand-page-maker/assessors/banner-section-description-visibility.assessor.ts +6 -6
  310. package/src/brand-page-maker/assessors/color-replacement-icon-visibility.assessor.ts +2 -2
  311. package/src/brand-page-maker/assessors/color-replacement-profile-visibility.assessor.ts +2 -2
  312. package/src/brand-page-maker/assessors/color-replacement-visibility.assessor.ts +2 -2
  313. package/src/brand-page-maker/assessors/contact-form-visibility.assessor.ts +14 -14
  314. package/src/brand-page-maker/components/action-bar/ActionBar.mixin.ts +1 -0
  315. package/src/brand-page-maker/components/ai-text-edit/TextBubble.vue +1 -0
  316. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +5 -1
  317. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.ts +1 -0
  318. package/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.stories.ts +2 -5
  319. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +0 -5
  320. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-payment.ts +0 -8
  321. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-site-template.examples.ts +0 -2
  322. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.vue +1 -0
  323. package/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.ts +1 -1
  324. package/src/brand-page-maker/components/color-palette/BpColorPalette.vue +1 -2
  325. package/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.ts +1 -0
  326. package/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.ts +1 -0
  327. package/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.ts +1 -0
  328. package/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.ts +1 -0
  329. package/src/brand-page-maker/components/device/Device.mixin.ts +1 -0
  330. package/src/brand-page-maker/components/navigation/Navigation.mixin.ts +1 -0
  331. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +3 -1
  332. package/src/brand-page-maker/components/sensitive-content/SensitiveContent.vue +1 -4
  333. package/src/brand-page-maker/components/seo-settings/DeleteDomainModal.vue +1 -1
  334. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.ts +1 -0
  335. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.vue +1 -1
  336. package/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.ts +0 -1
  337. package/src/brand-page-maker/components/seo-settings/UrlSettings.vue +0 -1
  338. package/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.vue +1 -5
  339. package/src/brand-page-maker/components/shop/AddOrEditProductContainer.vue +1 -1
  340. package/src/brand-page-maker/components/shop/ReplaceImageSettingsForShop.vue +1 -1
  341. package/src/brand-page-maker/components/social-share/SocialShare.vue +1 -1
  342. package/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.ts +22 -8
  343. package/src/brand-page-maker/components/template-preview/TemplatePreview.vue +5 -10
  344. package/src/brand-page-maker/components/template-preview/TemplatePreviewAiBadge.vue +12 -0
  345. package/src/brand-page-maker/components/video-play/VideoPlayButton.vue +1 -1
  346. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +1 -1
  347. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +6 -6
  348. package/src/brand-page-maker/constants/config-settings-constant.ts +48 -3
  349. package/src/brand-page-maker/convertors/about-display-style.convertor.ts +10 -0
  350. package/src/brand-page-maker/convertors/banner-align-display-style.convertor.ts +8 -0
  351. package/src/brand-page-maker/convertors/contact-layout-style.convertor.test.ts +50 -0
  352. package/src/brand-page-maker/convertors/contact-layout-style.convertor.ts +8 -0
  353. package/src/brand-page-maker/convertors/text-image-display-style.convertor.ts +1 -1
  354. package/src/brand-page-maker/models/button-styles-config.ts +4 -2
  355. package/src/brand-page-maker/models/content-settings-configs.ts +4 -2
  356. package/src/brand-page-maker/models/content-settings.ts +43 -2
  357. package/src/brand-page-maker/models/navigation-style-configs.ts +5 -6
  358. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.ts +0 -1
  359. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.ts +8 -5
  360. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +1 -3
  361. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +12 -4
  362. package/src/brand-page-maker/stores/ui/ui-store.ts +16 -0
  363. package/src/brand-page-maker/utils/content-settings.util.ts +1 -1
  364. package/src/brand-page-maker/utils/rich-text-editor.util.ts +4 -4
  365. package/src/bundles/bundled-translations.de-DE.json +2 -0
  366. package/src/bundles/bundled-translations.es-ES.json +2 -0
  367. package/src/bundles/bundled-translations.fr-CA.json +2 -0
  368. package/src/bundles/bundled-translations.fr-FR.json +2 -0
  369. package/src/bundles/bundled-translations.json +2 -0
  370. package/src/bundles/bundled-translations.pt-BR.json +2 -0
  371. package/src/bundles/bundled-translations.pt-PT.json +2 -0
  372. package/src/clients/design-template-client.ts +3 -0
  373. package/src/clients/models.ts +2 -0
  374. package/src/composables/useSnapshot.ts +19 -22
  375. package/src/lib.ts +1 -0
  376. package/src/metadata-builder/builders/footer-builder.test.ts +137 -0
  377. package/src/metadata-builder/builders/footer-builder.ts +129 -89
  378. package/src/metadata-builder/builders/section-builders/image-gallery-builder.ts +1 -1
  379. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +1 -1
  380. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +1 -1
  381. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +1 -1
  382. package/src/metadata-builder/builders/shape-color-utils.ts +2 -2
  383. package/src/plugins/google-maps-plugin/google-maps-plugin.ts +8 -8
  384. package/src/shared/background-settings/components/BackgroundSettings.vue +1 -1
  385. package/src/shared/background-settings/components/background-color/BackgroundColorSettings.vue +1 -1
  386. package/src/shared/color-picker/components/ColorPicker.mixin.ts +2 -7
  387. package/src/shared/color-picker/components/ColorPickerSwatch.mixin.ts +1 -0
  388. package/src/shared/common/NumberInput.vue +1 -0
  389. package/src/shared/common/SideBarSettingsHeader.vue +2 -2
  390. package/src/shared/confirm-modal/ConfirmModal.mixin.ts +1 -0
  391. package/src/shared/content-settings/components/booking-url-field/BookingUrlField.vue +1 -0
  392. package/src/shared/content-settings/components/button-configuration-field/ButtonConfigurationField.vue +1 -0
  393. package/src/shared/content-settings/components/color-field/ColorField.vue +3 -10
  394. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +1 -1
  395. package/src/shared/content-settings/components/content-settings/ContentSettingsLockedButton.vue +1 -0
  396. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +2 -0
  397. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +2 -0
  398. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +2 -0
  399. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +2 -0
  400. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +2 -0
  401. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +2 -0
  402. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +2 -0
  403. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.ts +5 -0
  404. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.vue +1 -1
  405. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +1 -14
  406. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.ts +4 -6
  407. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.vue +2 -2
  408. package/src/shared/content-settings/components/icon-library/IconLibrary.mixin.ts +1 -0
  409. package/src/shared/content-settings/components/items-field/ItemsField.mixin.ts +1 -1
  410. package/src/shared/content-settings/components/logo-selection-field/LogoSelectionField.vue +1 -1
  411. package/src/shared/content-settings/components/logo-size-field/LogoSizeSliderField.vue +1 -1
  412. package/src/shared/content-settings/components/page-dropdown-field/PageDropdownField.vue +1 -1
  413. package/src/shared/content-settings/components/personalisation-role-field/PersonalisationRoleField.vue +4 -4
  414. package/src/shared/content-settings/components/slider-field/SliderField.mixin.ts +9 -0
  415. package/src/shared/content-settings/components/text-image-field/TextImageField.vue +2 -8
  416. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +1 -1
  417. package/src/shared/content-settings/models.ts +3 -2
  418. package/src/shared/content-settings/utils.ts +0 -1
  419. package/src/shared/dropzone-image-uploader/components/DropzoneImageUploader.vue +1 -0
  420. package/src/shared/ecommerce-settings/store/cart-store.test.ts +1 -1
  421. package/src/shared/font-family-selector/FontFamilySelector.mixin.ts +1 -0
  422. package/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.ts +1 -0
  423. package/src/shared/logo-settings/components/EditLogoSettings.mixin.ts +1 -1
  424. package/src/shared/logo-settings/components/LogoSettings.mixin.ts +0 -1
  425. package/src/shared/logo-settings/components/LogoSettingsHeader.mixin.ts +1 -0
  426. package/src/shared/logo-settings/components/LogoStyleSettingsWithState.vue +2 -2
  427. package/src/shared/logo-settings/components/LogoTemplateSearch.vue +1 -1
  428. package/src/shared/logo-settings/store/editable-logo-store.ts +1 -1
  429. package/src/shared/logo-settings/store/logo-settings-store.test.ts +4 -4
  430. package/src/shared/logo-versions/LogoVersions.mixin.ts +1 -0
  431. package/src/shared/models.ts +6 -0
  432. package/src/shared/my-designs/MyDesigns.mixin.ts +1 -0
  433. package/src/shared/my-uploads/MyMedia.mixin.ts +1 -0
  434. package/src/shared/my-uploads/MyMediaSelectionItem.vue +2 -1
  435. package/src/shared/my-uploads/MyUploads.mixin.ts +1 -0
  436. package/src/shared/my-uploads/models.ts +1 -2
  437. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.ts +1 -0
  438. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.vue +1 -1
  439. package/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.ts +0 -3
  440. package/src/shared/page-settings/components/page-settings/NestedDraggable.vue +1 -1
  441. package/src/shared/page-settings/components/page-settings/PageSettings.vue +1 -2
  442. package/src/shared/page-settings/components/page-settings-section-styles/HeaderDisplayStyle.vue +1 -1
  443. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.ts +1 -1
  444. package/src/shared/page-settings/store/page-settings-store.test.ts +4 -8
  445. package/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.ts +0 -1
  446. package/src/shared/shape-library/ShapeLibrary.vue +2 -2
  447. package/src/shared/style-settings/store/style-settings-store.ts +1 -1
  448. package/src/shared/template-settings/components/TemplatesSettings.mixin.ts +2 -2
  449. package/src/shared/template-settings/models.ts +1 -0
  450. package/src/shared/template-settings/store/template-settings-store.ts +105 -18
  451. package/src/shared/unsplash-library/UnsplashLibrary.vue +2 -6
  452. package/src/shared/video-library/VideoLibrary.vue +1 -1
  453. package/src/utils/minify-brand-page-metadata.ts +11 -1
  454. package/lib/src/brand-page/components/testimonial-section/TestimonialSection.mixin.js +0 -112
  455. package/src/brand-page/components/testimonial-section/TestimonialSection.mixin.ts +0 -132
package/lib/src/lib.js CHANGED
@@ -32,7 +32,7 @@ export { getOptimalLogoSize, calculateOptimizedLogoDimensions, applyLogoImageBas
32
32
  export { sanitizeRTEHtml } from './brand-page-maker/utils';
33
33
  export { getPageSlugFromPageTitle } from './brand-page-maker/utils/slug.util';
34
34
  // stores
35
- export { useBrandPageMakerStore, useBrandPageMakerUserStore, useUiStore, useBrandPageContainerStore, useEventManagerStore, useLocalisedRouteStore, useVideoStore, } from './brand-page-maker/stores';
35
+ export { useBrandPageMakerStore, useBrandPageMakerUserStore, useUiStore, useBrandPageContainerStore, useEventManagerStore, useLocalisedRouteStore, useVideoStore, useRouteStore, } from './brand-page-maker/stores';
36
36
  export { useShopConfigStore } from './shared/ecommerce-settings/store/shop-settings-store';
37
37
  // for jest, need to set active pinia in library.brand-page as well
38
38
  import { createPinia, setActivePinia } from 'pinia';
@@ -9,76 +9,88 @@ const normaliseSocialUrl = (url) => {
9
9
  }
10
10
  return url;
11
11
  };
12
- const applyGlobalFooterChanges = (footer, args, textStyleOptions) => {
13
- if (args.copyright_text !== undefined)
14
- footer.copyrightText = args.copyright_text;
15
- if (args.copyright_text_font_family !== undefined)
16
- footer.copyrightStyle = applyDetachedStyleOverride(footer.copyrightStyle, { fontFamily: args.copyright_text_font_family }, textStyleOptions);
17
- const links = args.social_links;
12
+ const makeSocialLink = (icon, url) => ({
13
+ imageUrl: icon || '',
14
+ url: normaliseSocialUrl(url || ''),
15
+ imageTitle: '',
16
+ width: 0,
17
+ height: 0,
18
+ imageLink: '',
19
+ });
20
+ const hasSocialLinkMutation = (args) => args._replace_social_links === true ||
21
+ (args._remove_social_link_indices?.length ?? 0) > 0 ||
22
+ (args._reorder_social_links?.length ?? 0) > 0 ||
23
+ (args.social_links?.length ?? 0) > 0;
24
+ /**
25
+ * Social links are a GLOBAL footer concern — one logical list that both
26
+ * viewports render identically. Derive the new list ONCE from the current one
27
+ * WITHOUT mutating the input, so the caller can assign an independent copy to
28
+ * each viewport.
29
+ *
30
+ * Why this can't mutate per-viewport in place: footers migrated from the legacy
31
+ * single `footerStyles` model (migration-01) share ONE `socialLinks` array
32
+ * reference across pageFooterDesktop and pageFooterMobile, and `cloneDeep`
33
+ * preserves that shared reference. Running an in-place `splice` once per
34
+ * viewport therefore applies it TWICE to the same array — e.g. one requested
35
+ * removal index drops two links. Compute-once + assign-fresh is correct for
36
+ * both shared (legacy) and independent (new-model) footers.
37
+ */
38
+ const computeSocialLinks = (current, args) => {
18
39
  // _replace_social_links: replace entire list (empty/absent social_links = clear all).
19
- // When replacing, all other social link mutations (remove, insert, reorder) are skipped —
20
- // they are superseded by the replacement and running them would cause duplicates.
40
+ // A replacement supersedes every other social link mutation.
21
41
  if (args._replace_social_links) {
22
- footer.socialLinks = (links ?? []).map((l) => ({
23
- imageUrl: l.social_link_icon || '',
24
- url: normaliseSocialUrl(l.url || ''),
25
- imageTitle: '',
26
- width: 0,
27
- height: 0,
28
- imageLink: '',
29
- }));
42
+ return (args.social_links ?? []).map((l) => makeSocialLink(l.social_link_icon, l.url));
30
43
  }
31
- else {
32
- // Targeted mutations — only run when NOT replacing the entire list.
33
- // item_index-based updates for existing links
34
- if (links?.length) {
35
- for (const link of links) {
36
- if (link.item_index === undefined)
37
- continue;
38
- const existing = footer.socialLinks?.[link.item_index];
39
- if (!existing)
40
- continue;
41
- if (link.social_link_icon !== undefined)
42
- existing.imageUrl = link.social_link_icon;
43
- if (link.url !== undefined)
44
- existing.url = normaliseSocialUrl(link.url);
45
- }
46
- }
47
- // Remove by index (descending order to preserve indices during splice)
48
- if (args._remove_social_link_indices?.length && footer.socialLinks) {
49
- const sorted = [...args._remove_social_link_indices].sort((a, b) => b - a);
50
- for (const idx of sorted) {
51
- if (idx >= 0 && idx < footer.socialLinks.length)
52
- footer.socialLinks.splice(idx, 1);
53
- }
54
- }
55
- // Insert new links (descending insert_at order to preserve positions during splice)
56
- const insertLinks = (links ?? []).filter((l) => l.insert_at !== undefined && l.item_index === undefined);
57
- const sortedInserts = [...insertLinks].sort((a, b) => b.insert_at - a.insert_at);
58
- for (const link of sortedInserts) {
59
- const pos = Math.max(0, Math.min(link.insert_at, footer.socialLinks?.length ?? 0));
60
- footer.socialLinks = footer.socialLinks ?? [];
61
- footer.socialLinks.splice(pos, 0, {
62
- imageUrl: link.social_link_icon || '',
63
- url: normaliseSocialUrl(link.url || ''),
64
- imageTitle: '',
65
- width: 0,
66
- height: 0,
67
- imageLink: '',
68
- });
44
+ const links = [...(current ?? [])];
45
+ // item_index-based updates for existing links — replace the item reference
46
+ // (never mutate the original object, which may be shared across viewports).
47
+ for (const link of args.social_links ?? []) {
48
+ if (link.item_index === undefined)
49
+ continue;
50
+ const existing = links[link.item_index];
51
+ if (!existing)
52
+ continue;
53
+ links[link.item_index] = {
54
+ ...existing,
55
+ ...(link.social_link_icon !== undefined
56
+ ? { imageUrl: link.social_link_icon }
57
+ : {}),
58
+ ...(link.url !== undefined ? { url: normaliseSocialUrl(link.url) } : {}),
59
+ };
60
+ }
61
+ // Remove by index (descending order to preserve indices during splice).
62
+ if (args._remove_social_link_indices?.length) {
63
+ const sorted = [...args._remove_social_link_indices].sort((a, b) => b - a);
64
+ for (const idx of sorted) {
65
+ if (idx >= 0 && idx < links.length)
66
+ links.splice(idx, 1);
69
67
  }
70
- // Reorder (requires ALL indices — partial reorder is not supported)
71
- if (args._reorder_social_links?.length && footer.socialLinks) {
72
- const newOrder = args._reorder_social_links;
73
- const unique = new Set(newOrder);
74
- if (unique.size === newOrder.length &&
75
- newOrder.every((idx) => idx >= 0 && idx < footer.socialLinks.length)) {
76
- const reordered = newOrder.map((idx) => footer.socialLinks[idx]);
77
- if (reordered.length === footer.socialLinks.length)
78
- footer.socialLinks = reordered;
79
- }
68
+ }
69
+ // Insert new links (descending insert_at order to preserve positions).
70
+ const insertLinks = (args.social_links ?? []).filter((l) => l.insert_at !== undefined && l.item_index === undefined);
71
+ const sortedInserts = [...insertLinks].sort((a, b) => b.insert_at - a.insert_at);
72
+ for (const link of sortedInserts) {
73
+ const pos = Math.max(0, Math.min(link.insert_at, links.length));
74
+ links.splice(pos, 0, makeSocialLink(link.social_link_icon, link.url));
75
+ }
76
+ // Reorder (requires ALL indices — partial reorder is not supported).
77
+ if (args._reorder_social_links?.length) {
78
+ const newOrder = args._reorder_social_links;
79
+ const unique = new Set(newOrder);
80
+ if (unique.size === newOrder.length &&
81
+ newOrder.every((idx) => idx >= 0 && idx < links.length)) {
82
+ const reordered = newOrder.map((idx) => links[idx]);
83
+ if (reordered.length === links.length)
84
+ return reordered;
80
85
  }
81
86
  }
87
+ return links;
88
+ };
89
+ const applyGlobalFooterChanges = (footer, args, textStyleOptions) => {
90
+ if (args.copyright_text !== undefined)
91
+ footer.copyrightText = args.copyright_text;
92
+ if (args.copyright_text_font_family !== undefined)
93
+ footer.copyrightStyle = applyDetachedStyleOverride(footer.copyrightStyle, { fontFamily: args.copyright_text_font_family }, textStyleOptions);
82
94
  };
83
95
  const applyViewportFooterChanges = (footer, overrides) => {
84
96
  if (overrides.display_style !== undefined)
@@ -136,11 +148,24 @@ export class FooterBuilder extends BaseMetadataBuilder {
136
148
  }
137
149
  const args = this.request.payload ?? {};
138
150
  const textStyleOptions = model.styles?.textStyles?.textStyleOptions;
139
- // Global fields (copyright_text, social links) always apply to both viewports.
151
+ // Global scalar/style fields (copyright text + font) apply to both
152
+ // viewports. These are idempotent assignments, safe to run per-viewport.
140
153
  if (model.pageFooterDesktop)
141
154
  applyGlobalFooterChanges(model.pageFooterDesktop, args, textStyleOptions);
142
155
  if (model.pageFooterMobile)
143
156
  applyGlobalFooterChanges(model.pageFooterMobile, args, textStyleOptions);
157
+ // Social links are a single global list. Derive the new list ONCE, then
158
+ // assign an INDEPENDENT copy to each viewport — never mutate a (possibly
159
+ // shared) viewport array in place. See computeSocialLinks.
160
+ if (hasSocialLinkMutation(args)) {
161
+ const current = model.pageFooterDesktop?.socialLinks ??
162
+ model.pageFooterMobile?.socialLinks;
163
+ const updated = computeSocialLinks(current, args);
164
+ if (model.pageFooterDesktop)
165
+ model.pageFooterDesktop.socialLinks = updated.map((l) => ({ ...l }));
166
+ if (model.pageFooterMobile)
167
+ model.pageFooterMobile.socialLinks = updated.map((l) => ({ ...l }));
168
+ }
144
169
  // Viewport-specific styling via explicit sub-objects.
145
170
  if (args.desktop && model.pageFooterDesktop)
146
171
  applyViewportFooterChanges(model.pageFooterDesktop, args.desktop);
@@ -23,7 +23,7 @@ const mergeGalleryImages = (content, images, replaceAll) => {
23
23
  const existing = content.images?.[index];
24
24
  const imageUrl = isValidUrl(img.image_url)
25
25
  ? img.image_url
26
- : existing?.imageUrl ?? '';
26
+ : (existing?.imageUrl ?? '');
27
27
  return {
28
28
  ...(existing || {}),
29
29
  imageUrl,
@@ -46,7 +46,7 @@ const mergeImageItems = (content, items, replaceAll) => {
46
46
  ...(existing || {}),
47
47
  imageUrl: isValidUrl(item.image_url)
48
48
  ? item.image_url
49
- : existing?.imageUrl ?? '',
49
+ : (existing?.imageUrl ?? ''),
50
50
  imageTitle: existing?.imageTitle ?? '',
51
51
  width: existing?.width ?? 0,
52
52
  height: existing?.height ?? 0,
@@ -67,7 +67,7 @@ const mergeTestimonialItemsAsync = async (content, items, replaceAll) => {
67
67
  ? 'shape'
68
68
  : item.avatar_image_url
69
69
  ? 'image'
70
- : existing?.mediaType ?? 'image';
70
+ : (existing?.mediaType ?? 'image');
71
71
  return {
72
72
  ...(existing || {}),
73
73
  imageUrl,
@@ -53,7 +53,7 @@ const mergeTextItems = (content, items, replaceAll, textStyleOptions) => {
53
53
  const baseStyle = existing?.textStyle || content.textStyle || {};
54
54
  const mergedStyle = (item.text_style ? { ...baseStyle, ...item.text_style } : baseStyle);
55
55
  const resolved = item.text !== undefined ? resolveText(item.text) : null;
56
- const text = resolved ? resolved.html : existing?.text ?? '';
56
+ const text = resolved ? resolved.html : (existing?.text ?? '');
57
57
  return {
58
58
  text,
59
59
  textStyle: clearTextStyleTypeIfTiptap(mergedStyle, resolved?.wasTiptap ?? false, textStyleOptions),
@@ -48,5 +48,5 @@ export const applyColorThemeToReplacements = (replacements, colorTheme) => repla
48
48
  ...r,
49
49
  replacementColor: replacements.length === 1
50
50
  ? colorTheme
51
- : getNewColorBasedOnTargetColorTheme(r.originalColor, colorTheme)?.toString() ?? colorTheme,
51
+ : (getNewColorBasedOnTargetColorTheme(r.originalColor, colorTheme)?.toString() ?? colorTheme),
52
52
  }));
@@ -15,7 +15,7 @@ export interface AddressDetails {
15
15
  export declare class GoogleMapsPlugin {
16
16
  private initialised;
17
17
  private initialising;
18
- private readonly _options;
18
+ private readonly options;
19
19
  constructor(options: GoogleMapsPluginOptions);
20
20
  private initialise;
21
21
  private getPlacesLibrary;
@@ -12,9 +12,9 @@ export const PLACE_ID_QUERY_PREFIX = 'place_id:';
12
12
  export class GoogleMapsPlugin {
13
13
  initialised = false;
14
14
  initialising = false;
15
- _options;
15
+ options;
16
16
  constructor(options) {
17
- this._options = options;
17
+ this.options = options;
18
18
  }
19
19
  async initialise() {
20
20
  if (this.initialised || this.initialising) {
@@ -71,7 +71,7 @@ export class GoogleMapsPlugin {
71
71
  async createPlaceAutocompleteElement(options) {
72
72
  const { PlaceAutocompleteElement } = await this.getPlacesLibrary();
73
73
  return new PlaceAutocompleteElement({
74
- requestedLanguage: this._options.locale,
74
+ requestedLanguage: this.options.locale,
75
75
  ...options,
76
76
  });
77
77
  }
@@ -97,15 +97,15 @@ export class GoogleMapsPlugin {
97
97
  return scriptElement;
98
98
  }
99
99
  getGoogleScriptUrl() {
100
- const baseUrl = `https://maps.googleapis.com/maps/api/js?key=${this._options.apiKey}&libraries=places&loading=async`;
101
- return this._options.locale
102
- ? `${baseUrl}&language=${this._options.locale}`
100
+ const baseUrl = `https://maps.googleapis.com/maps/api/js?key=${this.options.apiKey}&libraries=places&loading=async`;
101
+ return this.options.locale
102
+ ? `${baseUrl}&language=${this.options.locale}`
103
103
  : baseUrl;
104
104
  }
105
105
  getEmbedGoogleMapsSrc(options) {
106
106
  const mapMode = options.mapMode || MAP_MODE_PLACE;
107
- const locale = options.locale || this._options.locale;
108
- const baseUrl = `https://www.google.com/maps/embed/v1/${mapMode}?key=${this._options.apiKey}&q=${options.query}`;
107
+ const locale = options.locale || this.options.locale;
108
+ const baseUrl = `https://www.google.com/maps/embed/v1/${mapMode}?key=${this.options.apiKey}&q=${options.query}`;
109
109
  return locale ? `${baseUrl}&language=${locale}` : baseUrl;
110
110
  }
111
111
  }
@@ -148,7 +148,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
148
148
  wordBreak?: string | undefined;
149
149
  };
150
150
  }[];
151
- personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
151
+ personalisationRole?: import("../../../../brand-page").PersonalisationRole | undefined;
152
152
  media?: {
153
153
  type: import("../../../../brand-page").MediaTypes;
154
154
  } | undefined;
@@ -200,12 +200,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
200
200
  }>;
201
201
  userStore: import("pinia").Store<"brandPageMakerUser", import("@brand-page-maker/stores").UserState, {}, {
202
202
  setUserState(payload: {
203
- emailAddress?: string | undefined;
204
- userToken?: string | undefined;
205
- isAdmin?: boolean | undefined;
206
- hasPremiumSubscription?: boolean | undefined;
207
- brandPageCommissionPercentage?: number | undefined;
208
- features?: Partial<import("../../../../constants/ui").UIUserFeatures> | undefined;
203
+ emailAddress?: string;
204
+ userToken?: string;
205
+ isAdmin?: boolean;
206
+ hasPremiumSubscription?: boolean;
207
+ brandPageCommissionPercentage?: number;
208
+ features?: Partial<import("@brand-page-maker/stores").UserFeatures>;
209
209
  }): void;
210
210
  }>;
211
211
  backgroundSettingsStore: import("pinia").Store<"uiBackgroundSettings", import("../../store").BackgroundSettingsState, {
@@ -213,11 +213,11 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
213
213
  }, {
214
214
  onBackgroundChanged(): void;
215
215
  setBackgroundStyle({ backgroundStyle, }: {
216
- backgroundStyle: Partial<Omit<BrandPageCssStyle, "backgroundColor">>;
216
+ backgroundStyle: import("../../../../brand-page").BackgroundStyle;
217
217
  }): void;
218
218
  setBackgroundShapes(payload: import("../../../../brand-page").BackgroundShape[]): void;
219
219
  setBackgroundPersonalisationRole(payload: {
220
- personalisationRole: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
220
+ personalisationRole: import("../../../../brand-page").PersonalisationRole | undefined;
221
221
  }): void;
222
222
  setBackgroundShapeStyle(payload: BrandPageCssStyle): void;
223
223
  setPrimaryBackgroundShapeStyle(payload: BrandPageCssStyle): void;
@@ -226,9 +226,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
226
226
  }): void;
227
227
  addBackgroundShape({ shapeUrl, width, height, aspectRatio, }: {
228
228
  shapeUrl: string;
229
- width?: number | undefined;
230
- height?: number | undefined;
231
- aspectRatio?: number | undefined;
229
+ width?: number;
230
+ height?: number;
231
+ aspectRatio?: number;
232
232
  }): void;
233
233
  deleteBackgroundShape({ shapeIndex }: {
234
234
  shapeIndex: number;
@@ -243,7 +243,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
243
243
  setBackgroundShapeSettings(payload: import("../../background-settings-models").SetBackgroundShapeSettingsPayload): void;
244
244
  setRecommendedLogoColors(payload: import("../../background-settings-models").SetRecommendedLogoColorsPayload): void;
245
245
  setBackgroundMode(payload: {
246
- backgroundMode: "images" | "edit";
246
+ backgroundMode: import("@brand-page-maker/stores").BrandPageSettingsMode;
247
247
  }): void;
248
248
  setBackgroundMedia(payload: import("../../../my-uploads/models").MediaBaseSelectedPayload): void;
249
249
  removeBackgroundVideo(): void;
@@ -29,9 +29,9 @@ export declare const useUiBackgroundSettingsStore: import("pinia").StoreDefiniti
29
29
  }): void;
30
30
  addBackgroundShape({ shapeUrl, width, height, aspectRatio, }: {
31
31
  shapeUrl: string;
32
- width?: number | undefined;
33
- height?: number | undefined;
34
- aspectRatio?: number | undefined;
32
+ width?: number;
33
+ height?: number;
34
+ aspectRatio?: number;
35
35
  }): void;
36
36
  deleteBackgroundShape({ shapeIndex }: {
37
37
  shapeIndex: number;
@@ -52,7 +52,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
52
52
  deselectAllColors(): void;
53
53
  onV2ColorPickerChanged(): void;
54
54
  dispatch(color: ColorValue): void;
55
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
55
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "on-color-select"[], "on-color-select", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
56
56
  customGroups: {
57
57
  type: ArrayConstructor;
58
58
  required: false;
@@ -83,7 +83,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
83
83
  required: false;
84
84
  default: () => boolean;
85
85
  };
86
- }>> & Readonly<{}>, {
86
+ }>> & Readonly<{
87
+ "onOn-color-select"?: ((...args: any[]) => any) | undefined;
88
+ }>, {
87
89
  size: string;
88
90
  customGroups: unknown[];
89
91
  isNewColor: boolean;
@@ -2,10 +2,9 @@ import { defineComponent } from 'vue';
2
2
  import { Icon } from '@designcrowd/fe-shared-lib';
3
3
  import ColorPickerSwatch from './ColorPickerSwatch.vue';
4
4
  import { DEFAULT_COLORS, DEFAULT_GRADIENT_COLORS } from '../constants';
5
- import { RGBAtoHex, hexToRGB, arrayToLinearGradient, isRgbColor, } from '@utils/helpers';
5
+ import { RGBAtoHex, arrayToLinearGradient, isRgbColor } from '@utils/helpers';
6
6
  import { normalizeColorToHex, colorsMatch } from '@brand-page/utils/style.util';
7
7
  import { colorPickerTr } from '@src/composables/useTranslate';
8
- import { useUiStyleSettingsStore } from '../../style-settings/store';
9
8
  // Simple session storage for newColors (persists during browser session, clears on refresh)
10
9
  let sessionNewColors = [];
11
10
  export default defineComponent({
@@ -45,6 +44,7 @@ export default defineComponent({
45
44
  default: () => false,
46
45
  },
47
46
  },
47
+ emits: ['on-color-select'],
48
48
  data() {
49
49
  const groups = [];
50
50
  const newColors = [];
@@ -9,10 +9,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
9
9
  isTransparent(): boolean;
10
10
  }, {
11
11
  onClick(): void;
12
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
12
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "click"[], "click", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
13
13
  color: {
14
14
  type: ObjectConstructor;
15
15
  required: true;
16
16
  };
17
- }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
17
+ }>> & Readonly<{
18
+ onClick?: ((...args: any[]) => any) | undefined;
19
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
18
20
  export default _default;
@@ -6,6 +6,7 @@ export default defineComponent({
6
6
  required: true,
7
7
  },
8
8
  },
9
+ emits: ['click'],
9
10
  data() {
10
11
  const styles = this.color.styles;
11
12
  return {
@@ -14,7 +14,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
14
14
  }, {}, {}, {
15
15
  onCancel(): void;
16
16
  onConfirm(): void;
17
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
17
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("cancel" | "confirm")[], "cancel" | "confirm", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
18
18
  visible: {
19
19
  type: BooleanConstructor;
20
20
  default: boolean;
@@ -24,7 +24,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
24
24
  default: undefined;
25
25
  required: false;
26
26
  };
27
- }>> & Readonly<{}>, {
27
+ }>> & Readonly<{
28
+ onCancel?: ((...args: any[]) => any) | undefined;
29
+ onConfirm?: ((...args: any[]) => any) | undefined;
30
+ }>, {
28
31
  description: string;
29
32
  visible: boolean;
30
33
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -13,6 +13,7 @@ export default defineComponent({
13
13
  required: false,
14
14
  },
15
15
  },
16
+ emits: ['confirm', 'cancel'],
16
17
  setup() {
17
18
  const containerStore = useBrandPageContainerStore();
18
19
  return {
@@ -1,4 +1,3 @@
1
- /// <reference types="types/lodash-shims" />
2
1
  import type { DebounceHandle } from 'lodash.debounce';
3
2
  import type { PropType } from 'vue';
4
3
  import type { ContentItemFieldSettings } from '../models';