@designcrowd/library.brand-page 6.0.5 → 6.0.6-ast-bugs

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 (395) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DhzvKlTS.js → CreatedOnBrandCrowd-de-de-SHCspMwS.js} +3 -3
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-DKH4lmNV.js → CreatedOnBrandCrowd-en-us-C6lITAAT.js} +3 -3
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-RloPCLuV.js → CreatedOnBrandCrowd-es-es-Uh69c4vZ.js} +3 -3
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-Cu9e2H0K.js → CreatedOnBrandCrowd-fr-ca-Bb0rp7BV.js} +3 -3
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-Cu9e2H0K.js → CreatedOnBrandCrowd-fr-fr-Bb0rp7BV.js} +3 -3
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-CiCnjxBZ.js → CreatedOnBrandCrowd-pt-br-DsrQHcjs.js} +3 -3
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-CiCnjxBZ.js → CreatedOnBrandCrowd-pt-pt-DsrQHcjs.js} +3 -3
  8. package/lib/src/{CreatedOnDcom-de-de-CwlnedFV.js → CreatedOnDcom-de-de-BshZYzSp.js} +3 -3
  9. package/lib/src/{CreatedOnDcom-en-us-DFHex61v.js → CreatedOnDcom-en-us-CLu8mKUW.js} +3 -3
  10. package/lib/src/{CreatedOnDcom-es-es-BTxH6I4V.js → CreatedOnDcom-es-es-BZYhkONd.js} +3 -3
  11. package/lib/src/{CreatedOnDcom-fr-ca-BVw0KYxu.js → CreatedOnDcom-fr-ca-CIaBEp_9.js} +3 -3
  12. package/lib/src/{CreatedOnDcom-fr-fr-DaqNz1Er.js → CreatedOnDcom-fr-fr-dyF7hioJ.js} +3 -3
  13. package/lib/src/{CreatedOnDcom-pt-br-B4KsMI8W.js → CreatedOnDcom-pt-br-CUHjk2du.js} +3 -3
  14. package/lib/src/{CreatedOnDcom-pt-pt-CWoHEtOZ.js → CreatedOnDcom-pt-pt-CWDvQidv.js} +3 -3
  15. package/lib/src/brand-page/clients/brand-page.client.d.ts +9 -9
  16. package/lib/src/brand-page/components/banner-section/BannerSection.mixin.d.ts +103 -0
  17. package/lib/src/brand-page/components/banner-section/BannerSection.mixin.js +178 -0
  18. package/lib/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.d.ts +1 -2
  19. package/lib/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.d.ts +4 -2
  20. package/lib/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.js +1 -0
  21. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.d.ts +4 -2
  22. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.js +11 -5
  23. package/lib/src/brand-page/components/page/Page.mixin.d.ts +1 -1
  24. package/lib/src/brand-page/components/page/PageComponent.mixin.d.ts +1 -1
  25. package/lib/src/brand-page/components/payment/Payment.mixin.d.ts +3 -3
  26. package/lib/src/brand-page/components/payment/__fixtures__/request-payment.d.ts +13 -13
  27. package/lib/src/brand-page/components/payment/__fixtures__/support-me.d.ts +13 -13
  28. package/lib/src/brand-page/constants/sections/footer-display.constants.js +1 -1
  29. package/lib/src/brand-page/models/index.d.ts +2 -13
  30. package/lib/src/brand-page/models/index.js +3 -0
  31. package/lib/src/brand-page/models/payment.model.d.ts +1 -1
  32. package/lib/src/brand-page/utils/personalisation.util.js +72 -14
  33. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +21 -19
  34. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.js +1 -0
  35. package/lib/src/brand-page-maker/components/admin-background-settings/AdminBackgroundSettings.mixin.d.ts +16 -10
  36. package/lib/src/brand-page-maker/components/admin-background-settings/ShapePositionSlider.mixin.d.ts +1 -1
  37. package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.d.ts +3 -3
  38. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +181 -170
  39. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +3 -0
  40. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.js +1 -0
  41. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +12 -12
  42. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.stories.js +2 -2
  43. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-payment.js +0 -7
  44. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +148 -149
  45. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +21 -21
  46. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.js +1 -1
  47. package/lib/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.d.ts +4 -2
  48. package/lib/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.js +1 -0
  49. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.d.ts +4 -2
  50. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.js +1 -0
  51. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.d.ts +5 -2
  52. package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.js +1 -0
  53. package/lib/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.d.ts +4 -2
  54. package/lib/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.js +1 -0
  55. package/lib/src/brand-page-maker/components/device/Device.mixin.d.ts +4 -2
  56. package/lib/src/brand-page-maker/components/device/Device.mixin.js +1 -0
  57. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.d.ts +4 -2
  58. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.js +1 -0
  59. package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +3 -3
  60. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +11 -11
  61. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +27 -25
  62. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.js +1 -0
  63. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +27 -27
  64. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.js +1 -1
  65. package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +17 -12
  66. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +12 -12
  67. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +30 -32
  68. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.js +16 -5
  69. package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +11 -11
  70. package/lib/src/brand-page-maker/composables/ai-chat/types.d.ts +3 -0
  71. package/lib/src/brand-page-maker/composables/ai-chat/ui-actions.d.ts +29 -0
  72. package/lib/src/brand-page-maker/composables/ai-chat/ui-actions.js +32 -0
  73. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +204 -177
  74. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +1 -1
  75. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +6 -6
  76. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +3 -2
  77. package/lib/src/brand-page-maker/composables/useEventTracker.js +1 -0
  78. package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +6 -6
  79. package/lib/src/brand-page-maker/constants/config-settings-constant.js +3 -3
  80. package/lib/src/brand-page-maker/convertors/text-image-display-style.convertor.d.ts +1 -1
  81. package/lib/src/brand-page-maker/convertors/text-image-display-style.convertor.js +1 -1
  82. package/lib/src/brand-page-maker/models/content-settings.d.ts +1 -1
  83. package/lib/src/brand-page-maker/models/navigation-style-configs.js +1 -1
  84. package/lib/src/brand-page-maker/routing/brand-page-maker-router.d.ts +1 -2
  85. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +366 -378
  86. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +5 -4
  87. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.js +8 -5
  88. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +3 -1
  89. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +7 -3
  90. package/lib/src/brand-page-maker/stores/history/history-store.d.ts +15 -15
  91. package/lib/src/brand-page-maker/stores/ui/ui-store.d.ts +6 -0
  92. package/lib/src/brand-page-maker/stores/ui/ui-store.js +8 -0
  93. package/lib/src/brand-page-maker/utils/content-settings.util.js +1 -1
  94. package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +1 -1
  95. package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +4 -4
  96. package/lib/src/clients/ai-assistant-client.d.ts +7 -0
  97. package/lib/src/clients/brand-page-client.d.ts +16 -15
  98. package/lib/src/clients/design-template-client.d.ts +3 -0
  99. package/lib/src/clients/media-client.d.ts +2 -2
  100. package/lib/src/clients/models.d.ts +2 -0
  101. package/lib/src/composables/useSnapshot.js +18 -18
  102. package/lib/src/css/library.brand-page-brandCrowd.min.css +371 -344
  103. package/lib/src/css/library.brand-page-brandPage.min.css +649 -344
  104. package/lib/src/css/library.brand-page-designCom.min.css +371 -344
  105. package/lib/src/css/library.brand-page-preview.min.css +627 -344
  106. package/lib/src/index.d.ts +4 -0
  107. package/lib/src/index.mjs +107 -104
  108. package/lib/src/{lib-BPI8E2Ui.js → lib-COw-Rz05.js} +37005 -33761
  109. package/lib/src/lib.js +10 -0
  110. package/lib/src/metadata-builder/builders/footer-builder.js +105 -62
  111. package/lib/src/metadata-builder/builders/section-builders/image-gallery-builder.js +68 -57
  112. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +93 -58
  113. package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +99 -66
  114. package/lib/src/metadata-builder/builders/section-builders/social-links-builder.js +17 -57
  115. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +85 -51
  116. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +74 -49
  117. package/lib/src/metadata-builder/builders/section-field-utils.d.ts +7 -0
  118. package/lib/src/metadata-builder/builders/section-field-utils.js +1 -1
  119. package/lib/src/metadata-builder/builders/shape-color-utils.js +1 -1
  120. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +7 -16
  121. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +48 -66
  122. package/lib/src/plugins/google-maps-plugin/google-maps-plugin.d.ts +1 -1
  123. package/lib/src/plugins/google-maps-plugin/google-maps-plugin.js +8 -8
  124. package/lib/src/shared/background-settings/components/background-shapes/BackgroundShapeSettings.mixin.d.ts +13 -13
  125. package/lib/src/shared/background-settings/store/background-settings-store.d.ts +3 -3
  126. package/lib/src/shared/color-picker/components/ColorPicker.mixin.d.ts +4 -2
  127. package/lib/src/shared/color-picker/components/ColorPicker.mixin.js +2 -2
  128. package/lib/src/shared/color-picker/components/ColorPickerSwatch.mixin.d.ts +4 -2
  129. package/lib/src/shared/color-picker/components/ColorPickerSwatch.mixin.js +1 -0
  130. package/lib/src/shared/confirm-modal/ConfirmModal.mixin.d.ts +5 -2
  131. package/lib/src/shared/confirm-modal/ConfirmModal.mixin.js +1 -0
  132. package/lib/src/shared/content-settings/components/GenericTextInput.mixin.d.ts +0 -1
  133. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +131 -129
  134. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +2 -1
  135. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +111 -110
  136. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +84 -81
  137. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.js +5 -0
  138. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +117 -109
  139. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +1 -14
  140. package/lib/src/shared/content-settings/components/email-field/EmailField.mixin.d.ts +0 -1
  141. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +72 -70
  142. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.js +4 -3
  143. package/lib/src/shared/content-settings/components/form-fields-field/FormFieldsField.mixin.d.ts +4 -4
  144. package/lib/src/shared/content-settings/components/icon-library/IconLibrary.mixin.d.ts +3 -1
  145. package/lib/src/shared/content-settings/components/icon-library/IconLibrary.mixin.js +1 -0
  146. package/lib/src/shared/content-settings/components/images-field/ImagesField.mixin.d.ts +2 -2
  147. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.d.ts +4 -3
  148. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.js +1 -1
  149. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +40 -40
  150. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigOptionField.mixin.d.ts +5 -6
  151. package/lib/src/shared/content-settings/components/shape-field/ShapeField.mixin.d.ts +0 -1
  152. package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.d.ts +2 -2
  153. package/lib/src/shared/content-settings/components/tel-field/TelField.mixin.d.ts +0 -1
  154. package/lib/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.d.ts +1 -2
  155. package/lib/src/shared/content-settings/components/text-field/TextField.mixin.d.ts +0 -1
  156. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.d.ts +1 -2
  157. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +1 -1
  158. package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.d.ts +28 -28
  159. package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +0 -1
  160. package/lib/src/shared/content-settings/components/toggle-field/ToggleField.mixin.d.ts +2 -2
  161. package/lib/src/shared/content-settings/components/url-field/UrlField.mixin.d.ts +0 -1
  162. package/lib/src/shared/content-settings/components/youtube-video-field/YoutubeVideoField.mixin.d.ts +0 -1
  163. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +39 -39
  164. package/lib/src/shared/content-settings/utils.js +0 -1
  165. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.d.ts +6 -4
  166. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.js +1 -0
  167. package/lib/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.d.ts +4 -2
  168. package/lib/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.js +1 -0
  169. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +29 -21
  170. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.js +1 -1
  171. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +50 -51
  172. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.d.ts +6 -4
  173. package/lib/src/shared/logo-settings/components/LogoSettingsHeader.mixin.js +1 -0
  174. package/lib/src/shared/logo-settings/store/editable-logo-store.js +1 -1
  175. package/lib/src/shared/logo-settings/store/logo-settings-store.d.ts +1 -1
  176. package/lib/src/shared/logo-versions/LogoVersions.mixin.d.ts +13 -5
  177. package/lib/src/shared/logo-versions/LogoVersions.mixin.js +1 -0
  178. package/lib/src/shared/models.d.ts +2 -0
  179. package/lib/src/shared/my-designs/MyDesigns.mixin.d.ts +14 -6
  180. package/lib/src/shared/my-designs/MyDesigns.mixin.js +1 -0
  181. package/lib/src/shared/my-uploads/MyMedia.mixin.d.ts +14 -5
  182. package/lib/src/shared/my-uploads/MyMedia.mixin.js +1 -0
  183. package/lib/src/shared/my-uploads/MyUploads.mixin.d.ts +14 -5
  184. package/lib/src/shared/my-uploads/MyUploads.mixin.js +1 -0
  185. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.d.ts +5 -3
  186. package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.js +1 -0
  187. package/lib/src/shared/navigation-style-settings/store/index.d.ts +2 -2
  188. package/lib/src/shared/page-navigation/store/page-navigation-store.d.ts +2 -2
  189. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.d.ts +27 -28
  190. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.js +0 -2
  191. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +188 -179
  192. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +181 -177
  193. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.js +1 -1
  194. package/lib/src/shared/page-settings/store/page-settings-store.d.ts +9 -9
  195. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +39 -39
  196. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.js +0 -1
  197. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +18 -18
  198. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +6 -6
  199. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +66 -60
  200. package/lib/src/shared/style-settings/store/style-settings-store.d.ts +1 -1
  201. package/lib/src/shared/style-settings/store/style-settings-store.js +1 -1
  202. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +20 -450
  203. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.js +2 -2
  204. package/lib/src/shared/template-settings/models.d.ts +1 -0
  205. package/lib/src/shared/template-settings/store/template-settings-store.d.ts +4 -0
  206. package/lib/src/shared/template-settings/store/template-settings-store.js +79 -11
  207. package/lib/src/shared/unsplash-library/UnsplashLibrary.mixin.d.ts +9 -4
  208. package/lib/src/utils/build-asset-manifest.d.ts +4 -0
  209. package/lib/src/utils/build-asset-manifest.js +8 -0
  210. package/lib/src/utils/minify-brand-page-metadata.d.ts +0 -2
  211. package/lib/src/utils/minify-brand-page-metadata.js +2 -17
  212. package/package.json +60 -56
  213. package/src/brand-page/components/about-section/AboutSection.vue.test.ts +7 -5
  214. package/src/brand-page/components/banner-section/BannerSection.mixin.ts +210 -0
  215. package/src/brand-page/components/banner-section/BannerSection.vue +5 -1
  216. package/src/brand-page/components/brand-page-footer/BrandPageFooter.vue +1 -1
  217. package/src/brand-page/components/image/Image.mixin.ts +1 -1
  218. package/src/brand-page/components/image/Image.test.ts +1 -1
  219. package/src/brand-page/components/image-gallery/masonry/MasonryGallery.mixin.ts +1 -2
  220. package/src/brand-page/components/images-section/ImagesSection.vue +0 -1
  221. package/src/brand-page/components/logo/LogoRender.vue +188 -188
  222. package/src/brand-page/components/navigation/hamburger/HamburgerNavigation.mixin.ts +1 -0
  223. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.ts +25 -8
  224. package/src/brand-page/components/page-footer/PageFooter.vue +1 -0
  225. package/src/brand-page/components/page-header/HeaderLayout.vue +12 -6
  226. package/src/brand-page/components/page-header/PageHeader.vue +1 -0
  227. package/src/brand-page/components/shapes-section/ShapesSection.vue +1 -1
  228. package/src/brand-page/components/shop/CartModal.vue +1 -3
  229. package/src/brand-page/components/shop/FeaturedDisplay.vue +2 -2
  230. package/src/brand-page/components/shop/PaymentModal.vue +1 -5
  231. package/src/brand-page/components/shop/ProductDetailModal.vue +1 -1
  232. package/src/brand-page/components/shop/Shop.vue +1 -5
  233. package/src/brand-page/components/shop/TextDisplay.vue +1 -1
  234. package/src/brand-page/components/shop/ThumbnailDisplay.vue +2 -2
  235. package/src/brand-page/components/testimonial-section/TestimonialSection.vue +3 -3
  236. package/src/brand-page/components/text-wrapper/TextWrapper.vue +3 -1
  237. package/src/brand-page/constants/sections/footer-display.constants.ts +1 -1
  238. package/src/brand-page/models/index.ts +4 -12
  239. package/src/brand-page/models/payment.model.ts +2 -1
  240. package/src/brand-page/models/shop.model.ts +0 -2
  241. package/src/brand-page/models/user-personalisation.model.ts +1 -2
  242. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +3 -0
  243. package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +1 -0
  244. package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +2 -0
  245. package/src/brand-page/utils/migration/migration-01_1.ts +1 -1
  246. package/src/brand-page/utils/migration/migration-02.ts +0 -1
  247. package/src/brand-page/utils/migration/migration-03.ts +0 -1
  248. package/src/brand-page/utils/migration/migration-04.ts +0 -1
  249. package/src/brand-page/utils/migration/migration-05.ts +1 -5
  250. package/src/brand-page/utils/migration/migration-05_2.ts +1 -1
  251. package/src/brand-page/utils/migration/migration-08.test.ts +1 -1
  252. package/src/brand-page/utils/personalisation.util.test.ts +35 -0
  253. package/src/brand-page/utils/personalisation.util.ts +119 -23
  254. package/src/brand-page/view-models.ts +38 -56
  255. package/src/brand-page-maker/assessors/banner-section-description-visibility.assessor.ts +6 -6
  256. package/src/brand-page-maker/assessors/color-replacement-icon-visibility.assessor.ts +2 -2
  257. package/src/brand-page-maker/assessors/color-replacement-profile-visibility.assessor.ts +2 -2
  258. package/src/brand-page-maker/assessors/color-replacement-visibility.assessor.ts +2 -2
  259. package/src/brand-page-maker/assessors/contact-form-visibility.assessor.ts +14 -14
  260. package/src/brand-page-maker/components/action-bar/ActionBar.mixin.ts +1 -0
  261. package/src/brand-page-maker/components/ai-text-edit/AiActionButtons.vue +27 -12
  262. package/src/brand-page-maker/components/ai-text-edit/AiChatbox.vue +3 -2
  263. package/src/brand-page-maker/components/ai-text-edit/TextBubble.vue +8 -7
  264. package/src/brand-page-maker/components/ai-website-builder/AiWebsiteBuilder.vue +21 -1
  265. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +5 -1
  266. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.stories.ts +1 -0
  267. package/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.stories.ts +2 -5
  268. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +0 -5
  269. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-payment.ts +0 -8
  270. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-site-template.examples.ts +0 -2
  271. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.vue +1 -0
  272. package/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.ts +1 -1
  273. package/src/brand-page-maker/components/color-palette/BpColorPalette.vue +1 -2
  274. package/src/brand-page-maker/components/color-picker/components/ColorModeSelect.mixin.ts +1 -0
  275. package/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.ts +1 -0
  276. package/src/brand-page-maker/components/color-picker/components/GradientColorSliderHandler.mixin.ts +1 -0
  277. package/src/brand-page-maker/components/color-picker/components/GradientTypeSelector.mixin.ts +1 -0
  278. package/src/brand-page-maker/components/device/Device.mixin.ts +1 -0
  279. package/src/brand-page-maker/components/navigation/Navigation.mixin.ts +1 -0
  280. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +3 -1
  281. package/src/brand-page-maker/components/sensitive-content/SensitiveContent.vue +1 -4
  282. package/src/brand-page-maker/components/seo-settings/DeleteDomainModal.vue +1 -1
  283. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.ts +1 -0
  284. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.vue +1 -1
  285. package/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.ts +0 -1
  286. package/src/brand-page-maker/components/seo-settings/UrlSettings.vue +0 -1
  287. package/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.vue +1 -5
  288. package/src/brand-page-maker/components/shop/AddOrEditProductContainer.vue +1 -1
  289. package/src/brand-page-maker/components/shop/ReplaceImageSettingsForShop.vue +1 -1
  290. package/src/brand-page-maker/components/social-share/SocialShare.vue +1 -1
  291. package/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.ts +22 -8
  292. package/src/brand-page-maker/components/template-preview/TemplatePreview.vue +5 -10
  293. package/src/brand-page-maker/components/template-preview/TemplatePreviewAiBadge.vue +12 -0
  294. package/src/brand-page-maker/components/video-play/VideoPlayButton.vue +1 -1
  295. package/src/brand-page-maker/composables/ai-chat/types.ts +6 -0
  296. package/src/brand-page-maker/composables/ai-chat/ui-actions.test.ts +80 -0
  297. package/src/brand-page-maker/composables/ai-chat/ui-actions.ts +58 -0
  298. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +308 -262
  299. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +6 -6
  300. package/src/brand-page-maker/composables/useEventTracker.ts +1 -0
  301. package/src/brand-page-maker/constants/config-settings-constant.ts +5 -5
  302. package/src/brand-page-maker/convertors/text-image-display-style.convertor.ts +1 -1
  303. package/src/brand-page-maker/models/button-styles-config.ts +4 -2
  304. package/src/brand-page-maker/models/content-settings-configs.ts +4 -2
  305. package/src/brand-page-maker/models/navigation-style-configs.ts +5 -6
  306. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.ts +0 -1
  307. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.ts +8 -5
  308. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +1 -3
  309. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +12 -4
  310. package/src/brand-page-maker/stores/ui/ui-store.ts +16 -0
  311. package/src/brand-page-maker/utils/content-settings.util.ts +1 -1
  312. package/src/brand-page-maker/utils/rich-text-editor.util.ts +4 -4
  313. package/src/clients/ai-assistant-client.ts +7 -0
  314. package/src/clients/design-template-client.ts +3 -0
  315. package/src/clients/models.ts +2 -0
  316. package/src/composables/useSnapshot.ts +19 -22
  317. package/src/lib.ts +12 -0
  318. package/src/metadata-builder/builders/footer-builder.test.ts +130 -229
  319. package/src/metadata-builder/builders/footer-builder.ts +155 -90
  320. package/src/metadata-builder/builders/section-builders/image-gallery-builder.ts +88 -62
  321. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +129 -66
  322. package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +160 -105
  323. package/src/metadata-builder/builders/section-builders/social-links-builder.ts +20 -65
  324. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +146 -83
  325. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +122 -70
  326. package/src/metadata-builder/builders/section-field-utils.ts +1 -1
  327. package/src/metadata-builder/builders/shape-color-utils.ts +2 -2
  328. package/src/metadata-builder/parsers/ai-toolcall-parser.ts +7 -16
  329. package/src/metadata-builder/parsers/section-tool-arguments.ts +48 -66
  330. package/src/plugins/google-maps-plugin/google-maps-plugin.ts +8 -8
  331. package/src/shared/background-settings/components/BackgroundSettings.vue +1 -1
  332. package/src/shared/background-settings/components/background-color/BackgroundColorSettings.vue +1 -1
  333. package/src/shared/color-picker/components/ColorPicker.mixin.ts +2 -7
  334. package/src/shared/color-picker/components/ColorPickerSwatch.mixin.ts +1 -0
  335. package/src/shared/common/NumberInput.vue +1 -0
  336. package/src/shared/common/SideBarSettingsHeader.vue +2 -2
  337. package/src/shared/confirm-modal/ConfirmModal.mixin.ts +1 -0
  338. package/src/shared/content-settings/components/booking-url-field/BookingUrlField.vue +1 -0
  339. package/src/shared/content-settings/components/button-configuration-field/ButtonConfigurationField.vue +1 -0
  340. package/src/shared/content-settings/components/color-field/ColorField.vue +3 -10
  341. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +1 -1
  342. package/src/shared/content-settings/components/content-settings/ContentSettingsLockedButton.vue +1 -0
  343. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.ts +5 -0
  344. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +1 -14
  345. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.ts +4 -6
  346. package/src/shared/content-settings/components/icon-library/IconLibrary.mixin.ts +1 -0
  347. package/src/shared/content-settings/components/items-field/ItemsField.mixin.ts +1 -1
  348. package/src/shared/content-settings/components/logo-selection-field/LogoSelectionField.vue +1 -1
  349. package/src/shared/content-settings/components/logo-size-field/LogoSizeSliderField.vue +1 -1
  350. package/src/shared/content-settings/components/page-dropdown-field/PageDropdownField.vue +1 -1
  351. package/src/shared/content-settings/components/personalisation-role-field/PersonalisationRoleField.vue +4 -4
  352. package/src/shared/content-settings/components/text-image-field/TextImageField.vue +2 -8
  353. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +1 -1
  354. package/src/shared/content-settings/models.ts +3 -2
  355. package/src/shared/content-settings/utils.ts +0 -1
  356. package/src/shared/dropzone-image-uploader/components/DropzoneImageUploader.vue +1 -0
  357. package/src/shared/ecommerce-settings/store/cart-store.test.ts +1 -1
  358. package/src/shared/font-family-selector/FontFamilySelector.mixin.ts +1 -0
  359. package/src/shared/image-gallery-style-settings/ImageGalleryStyleSettings.mixin.ts +1 -0
  360. package/src/shared/logo-settings/components/EditLogoSettings.mixin.ts +1 -1
  361. package/src/shared/logo-settings/components/LogoSettings.mixin.ts +0 -1
  362. package/src/shared/logo-settings/components/LogoSettingsHeader.mixin.ts +1 -0
  363. package/src/shared/logo-settings/components/LogoStyleSettingsWithState.vue +2 -2
  364. package/src/shared/logo-settings/components/LogoTemplateSearch.vue +1 -1
  365. package/src/shared/logo-settings/store/editable-logo-store.ts +1 -1
  366. package/src/shared/logo-settings/store/logo-settings-store.test.ts +4 -4
  367. package/src/shared/logo-versions/LogoVersions.mixin.ts +1 -0
  368. package/src/shared/models.ts +6 -0
  369. package/src/shared/my-designs/MyDesigns.mixin.ts +1 -0
  370. package/src/shared/my-uploads/MyMedia.mixin.ts +1 -0
  371. package/src/shared/my-uploads/MyMediaSelectionItem.vue +2 -1
  372. package/src/shared/my-uploads/MyUploads.mixin.ts +1 -0
  373. package/src/shared/my-uploads/models.ts +1 -2
  374. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.ts +1 -0
  375. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.vue +1 -1
  376. package/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.ts +0 -3
  377. package/src/shared/page-settings/components/page-settings/NestedDraggable.vue +1 -1
  378. package/src/shared/page-settings/components/page-settings/PageSettings.vue +1 -2
  379. package/src/shared/page-settings/components/page-settings-section-styles/HeaderDisplayStyle.vue +1 -1
  380. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.ts +1 -1
  381. package/src/shared/page-settings/store/page-settings-store.test.ts +4 -8
  382. package/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.ts +0 -1
  383. package/src/shared/shape-library/ShapeLibrary.vue +2 -2
  384. package/src/shared/style-settings/store/style-settings-store.ts +1 -1
  385. package/src/shared/template-settings/components/TemplatesSettings.mixin.ts +2 -2
  386. package/src/shared/template-settings/models.ts +1 -0
  387. package/src/shared/template-settings/store/template-settings-store.ts +105 -18
  388. package/src/shared/unsplash-library/UnsplashLibrary.vue +2 -6
  389. package/src/shared/video-library/VideoLibrary.vue +1 -1
  390. package/src/utils/build-asset-manifest.ts +12 -0
  391. package/src/utils/minify-brand-page-metadata.ts +7 -27
  392. package/lib/src/metadata-builder/builders/item-id-utils.d.ts +0 -54
  393. package/lib/src/metadata-builder/builders/item-id-utils.js +0 -96
  394. package/src/metadata-builder/builders/item-id-utils.test.ts +0 -184
  395. package/src/metadata-builder/builders/item-id-utils.ts +0 -117
@@ -0,0 +1,210 @@
1
+ import { defineComponent } from 'vue';
2
+ import type { PropType } from 'vue';
3
+ import ComponentCommonMixin from '../mixins/component-common.mixin';
4
+ import type {
5
+ BannerSectionViewModel,
6
+ ButtonViewModel,
7
+ } from '@brand-page/view-models';
8
+ import { hasValidButton as shouldShowButtonUtil } from '../../../utils/validator.util';
9
+ import type { BrandPageContext } from '@brand-page/models';
10
+ import {
11
+ ALIGN_CENTERED,
12
+ ALIGN_LEFT_ALIGNED,
13
+ ALIGN_RIGHT_ALIGNED,
14
+ BIG_IMAGE,
15
+ ALIGN_LEFT_BIG_IMAGE,
16
+ ALIGN_RIGHT_FULL_IMAGE,
17
+ ALIGN_LEFT_FULL_IMAGE,
18
+ ALIGN_CARD_CENTER_IMAGE,
19
+ ALIGN_CARD_LEFT_IMAGE,
20
+ } from '../../constants';
21
+ import { getRenderText, escapeContentText } from '@brand-page/utils';
22
+ import { hasRTEContent } from '@brand-page-maker/utils';
23
+
24
+ export default defineComponent({
25
+ mixins: [ComponentCommonMixin],
26
+ props: {
27
+ viewModel: {
28
+ type: Object as PropType<BannerSectionViewModel>,
29
+ required: true,
30
+ },
31
+ context: {
32
+ type: Object as PropType<BrandPageContext>,
33
+ required: true,
34
+ },
35
+ containerClientWidth: {
36
+ type: Number as PropType<number | undefined>,
37
+ required: false,
38
+ default: undefined,
39
+ },
40
+ containerClientHeight: {
41
+ type: Number as PropType<number | undefined>,
42
+ required: false,
43
+ default: undefined,
44
+ },
45
+ contentIndex: {
46
+ type: Number,
47
+ required: false,
48
+ default: undefined,
49
+ },
50
+ },
51
+ data() {
52
+ return {
53
+ shouldStackOnTop: false,
54
+ };
55
+ },
56
+ mounted() {
57
+ this.$nextTick(() => {
58
+ window.addEventListener('resize', this.onResize);
59
+ });
60
+ },
61
+ unmounted() {
62
+ if (typeof window !== undefined) {
63
+ window.removeEventListener(`resize`, this.onResize);
64
+ }
65
+ },
66
+ computed: {
67
+ displayAlignClass() {
68
+ switch (this.viewModel.displayStyle) {
69
+ case ALIGN_CENTERED:
70
+ return 'tw-items-center tw-w-full';
71
+ case BIG_IMAGE:
72
+ return 'tw-items-center tw-w-full';
73
+ case ALIGN_LEFT_ALIGNED:
74
+ return 'tw-items-start tw-w-2/3';
75
+ case ALIGN_RIGHT_ALIGNED:
76
+ return 'tw-items-end tw-w-2/3';
77
+ case ALIGN_LEFT_BIG_IMAGE:
78
+ return 'tw-items-start tw-w-2/3';
79
+ case ALIGN_CARD_CENTER_IMAGE:
80
+ return 'tw-items-center tw-w-full';
81
+ case ALIGN_CARD_LEFT_IMAGE:
82
+ return 'tw-items-end';
83
+ default:
84
+ return '';
85
+ }
86
+ },
87
+ displayButtonClass() {
88
+ if (this.viewModel.buttonTextStyle) {
89
+ switch (this.viewModel.buttonTextStyle.textAlign) {
90
+ case 'left':
91
+ return 'tw-justify-start';
92
+ case 'center':
93
+ return 'tw-justify-center';
94
+ case 'right':
95
+ return 'tw-justify-end';
96
+ default:
97
+ return '';
98
+ }
99
+ } else {
100
+ return this.viewModel.displayStyle === ALIGN_CARD_CENTER_IMAGE ||
101
+ this.viewModel.displayStyle === ALIGN_CENTERED
102
+ ? 'tw-justify-center'
103
+ : 'tw-justify-start';
104
+ }
105
+ },
106
+ isLeftImageAligned(): boolean {
107
+ if (this.viewModel.displayStyle === ALIGN_LEFT_FULL_IMAGE) {
108
+ return true;
109
+ }
110
+
111
+ return false;
112
+ },
113
+ isRightImageAligned(): boolean {
114
+ if (this.viewModel.displayStyle === ALIGN_RIGHT_FULL_IMAGE) {
115
+ return true;
116
+ }
117
+
118
+ return false;
119
+ },
120
+
121
+ isDividedContent(): boolean {
122
+ if (
123
+ this.viewModel.displayStyle === ALIGN_RIGHT_FULL_IMAGE ||
124
+ this.viewModel.displayStyle === ALIGN_LEFT_FULL_IMAGE
125
+ ) {
126
+ return true;
127
+ }
128
+
129
+ return false;
130
+ },
131
+ isCardBannerContent(): boolean {
132
+ if (
133
+ this.viewModel.displayStyle === ALIGN_CARD_CENTER_IMAGE ||
134
+ this.viewModel.displayStyle === ALIGN_CARD_LEFT_IMAGE
135
+ ) {
136
+ return true;
137
+ }
138
+
139
+ return false;
140
+ },
141
+ isCardAlignedOnLeft() {
142
+ return this.viewModel.displayStyle === ALIGN_CARD_LEFT_IMAGE;
143
+ },
144
+ getbuttonViewModel(): ButtonViewModel {
145
+ const { buttonViewModel, buttonLinkType, pageSlug } = this.viewModel;
146
+
147
+ buttonViewModel.buttonLinkType = buttonLinkType;
148
+ buttonViewModel.pageSlug = pageSlug;
149
+
150
+ return buttonViewModel;
151
+ },
152
+
153
+ shouldShowButton(): boolean {
154
+ return shouldShowButtonUtil({
155
+ buttonText: this.viewModel.buttonText,
156
+ buttonViewModel: this.viewModel.buttonViewModel,
157
+ });
158
+ },
159
+
160
+ isHorizontalAligned(): boolean {
161
+ return (
162
+ this.viewModel.displayStyle === ALIGN_LEFT_ALIGNED ||
163
+ this.viewModel.displayStyle === ALIGN_RIGHT_ALIGNED ||
164
+ this.viewModel.displayStyle === ALIGN_LEFT_FULL_IMAGE ||
165
+ this.viewModel.displayStyle === ALIGN_RIGHT_FULL_IMAGE
166
+ );
167
+ },
168
+ isBigImageAligned(): boolean {
169
+ return (
170
+ this.viewModel.displayStyle === ALIGN_LEFT_BIG_IMAGE ||
171
+ this.viewModel.displayStyle === ALIGN_CARD_LEFT_IMAGE
172
+ );
173
+ },
174
+ renderText(): string {
175
+ if (!this.viewModel.description) {
176
+ return '';
177
+ }
178
+
179
+ if (hasRTEContent(this.viewModel.description)) {
180
+ return this.viewModel.description;
181
+ } else {
182
+ return getRenderText(this.viewModel.description);
183
+ }
184
+ },
185
+ hasDescriptionText(): boolean {
186
+ if (hasRTEContent(this.viewModel.description)) {
187
+ return escapeContentText(this.viewModel.description) !== '';
188
+ } else {
189
+ return this.viewModel?.description?.length > 0;
190
+ }
191
+ },
192
+ overlayColor(): BrandPageCssStyle {
193
+ return this.viewModel.overlayColor || 'rgb(0,0,0)';
194
+ },
195
+ opacity(): number {
196
+ return this.viewModel.overlayOpacity;
197
+ },
198
+ backgroundOverlay(): BrandPageCssStyle {
199
+ return {
200
+ background: this.overlayColor.backgroundColor,
201
+ opacity: `${this.opacity}%`,
202
+ };
203
+ },
204
+ },
205
+ methods: {
206
+ onResize() {
207
+ this.shouldStackOnTop = window.innerWidth < 640;
208
+ },
209
+ },
210
+ });
@@ -8,7 +8,10 @@
8
8
  'c_banner--with-image-overlay tw-flex tw-flex-col': isDividedContent,
9
9
  'tw-px-6': !isDividedContent,
10
10
  }"
11
- :style="[viewModel.backgroundStyle, contentPaddingStyle]"
11
+ :style="[
12
+ viewModel.backgroundStyle,
13
+ viewModel.isBigImageType ? {} : contentPaddingStyle,
14
+ ]"
12
15
  style="container-type: inline-size"
13
16
  >
14
17
  <Media
@@ -130,6 +133,7 @@
130
133
  viewModel.displayStyle === 'right-aligned',
131
134
  }"
132
135
  class="tw-flex tw-gap-8 tw-w-full tw-h-full tw-items-center c_banner-container"
136
+ :style="viewModel.isBigImageType ? contentPaddingStyle : undefined"
133
137
  >
134
138
  <div
135
139
  v-if="isHorizontalAligned"
@@ -32,7 +32,7 @@
32
32
  </footer>
33
33
  </template>
34
34
  <script setup lang="ts">
35
- import { computed, onMounted, reactive, ref, watch, shallowRef } from 'vue';
35
+ import { computed, onMounted, reactive, 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, shallowMount } from '@vue/test-utils';
1
+ import { mount } from '@vue/test-utils';
2
2
  import { faker } from '@faker-js/faker';
3
3
  import Image from './Image.vue';
4
4
  import {
@@ -7,8 +7,7 @@ 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 Omit<ImageGalleryItem, 'id'> {
11
- // Local rendering index, distinct from the stable string `id` on ImageItem.
10
+ interface IndexedImageGalleryItem extends ImageGalleryItem {
12
11
  id: number;
13
12
  }
14
13
 
@@ -57,7 +57,6 @@
57
57
  </template>
58
58
  <script setup lang="ts">
59
59
  import { computed, reactive, ref, watch } from 'vue';
60
- import type { PropType } from 'vue';
61
60
  import TextMediaSection from '../text-media-section/TextMediaSection.vue';
62
61
  import ImageGalleryModal from '../image-gallery/ImageGalleryModal.vue';
63
62
  import BpImage from '../image/Image.vue';
@@ -1,188 +1,188 @@
1
- <template>
2
- <div
3
- data-component="logo-render"
4
- :class="[
5
- 'logo tw-relative tw-h-full',
6
- isBrandSite ? 'brand-site' : 'brand-page',
7
- ]"
8
- >
9
- <figure
10
- v-if="logoImageUrl || !isPreview"
11
- class="logo__container"
12
- :class="{
13
- 'tw-mb-10': hasMarginBottom,
14
- }"
15
- :style="[logoBackgroundStyles, figureDimensions]"
16
- >
17
- <div
18
- :style="{
19
- ...(props.isBrandPageOrIsBrandContact &&
20
- !props.viewModel?.useOldLogoRenderSize
21
- ? {
22
- margin: 'var(--logo-spacing) auto',
23
- height: `${viewModel?.logoImageHeight || DEFAULT_LOGO_HEIGHT}`,
24
- maxWidth: logoMaxWidth,
25
- }
26
- : {
27
- height: '100%',
28
- width: '100%',
29
- }),
30
- }"
31
- >
32
- <img
33
- v-if="logoImageUrl"
34
- data-test-tag="logo"
35
- class="logo__image"
36
- :src="logoImageUrl"
37
- :alt="altText"
38
- :style="[logoStyle, marginStyle]"
39
- />
40
- </div>
41
- </figure>
42
- </div>
43
- </template>
44
- <script setup lang="ts">
45
- import { computed, ref, watch, onServerPrefetch, onMounted } from 'vue';
46
- import type { LogoViewModel } from '@brand-page/view-models';
47
- import { LogoCacheRepository } from '../../repositories';
48
- import {
49
- DEFAULT_LOGO_HEIGHT,
50
- DEFAULT_LOGO_WIDTH,
51
- LOGO_SLIDER_DESKTOP_MAX,
52
- LOGO_SLIDER_MOBILE_MAX,
53
- } from '../../constants';
54
- import type { ViewportsType } from '@brand-page/models';
55
-
56
- const props = withDefaults(
57
- defineProps<{
58
- isPreview: boolean;
59
- disableServerRender?: boolean;
60
- hasMarginBottom: boolean;
61
- isBrandSite: boolean;
62
- isBrandPageOrIsBrandContact: boolean;
63
- viewModel?: LogoViewModel;
64
- altText: string;
65
- isMobile?: boolean;
66
- }>(),
67
- {
68
- isPreview: false,
69
- hasMarginBottom: false,
70
- altText: '',
71
- disableServerRender: false,
72
- },
73
- );
74
-
75
- const logoImageSvgUrl = ref<string | undefined>(undefined);
76
-
77
- const logoImageBase64Url = computed(() => {
78
- return typeof props.viewModel?.logoImageBase64Url === 'string' &&
79
- props.viewModel.logoImageBase64Url
80
- ? props.viewModel.logoImageBase64Url
81
- : undefined;
82
- });
83
-
84
- const logoBackgroundStyles = computed(() => {
85
- return `background: ${props.viewModel?.styles.backgroundStyle.backgroundColor}`;
86
- });
87
-
88
- const figureDimensions = computed(() => {
89
- return !props.viewModel?.useOldLogoRenderSize
90
- ? {
91
- width: '100%',
92
- height: '100%',
93
- }
94
- : {};
95
- });
96
-
97
- const logoImageUrl = computed(() => {
98
- if (typeof logoImageBase64Url.value !== 'undefined') {
99
- return logoImageBase64Url.value;
100
- }
101
- return logoImageSvgUrl.value;
102
- });
103
-
104
- const logoHeight = computed(() => {
105
- return props.viewModel?.logoImageHeight || DEFAULT_LOGO_HEIGHT;
106
- });
107
-
108
- const logoWidth = computed(() => {
109
- return props.viewModel?.logoImageWidth || DEFAULT_LOGO_WIDTH;
110
- });
111
-
112
- const logoMaxWidth = computed(() => {
113
- if (props.isMobile) {
114
- return `${LOGO_SLIDER_MOBILE_MAX}rem`;
115
- }
116
- return `${LOGO_SLIDER_DESKTOP_MAX}rem`;
117
- });
118
-
119
- const logoStyle = computed(() => {
120
- return props.viewModel?.useOldLogoRenderSize
121
- ? {
122
- width: '100%',
123
- height: '100%',
124
- 'max-width': logoWidth.value,
125
- 'max-height': logoHeight.value,
126
- }
127
- : ({
128
- width: '100%',
129
- height: '100%',
130
- } as any);
131
- });
132
-
133
- const marginStyle = computed(() => {
134
- return props.viewModel?.useOldLogoRenderSize
135
- ? { margin: 'var(--logo-spacing) auto' }
136
- : {};
137
- });
138
-
139
- const updateLogoImageSvgUrlAsync = async () => {
140
- if (
141
- logoImageBase64Url.value ||
142
- (!props.viewModel?.logoTemplateImage?.logoTemplateToken &&
143
- !props.viewModel?.logoImage?.logoDraftToken)
144
- ) {
145
- return;
146
- }
147
-
148
- try {
149
- const logoCacheRepo = LogoCacheRepository.getInstance();
150
-
151
- logoImageSvgUrl.value = props.viewModel.logoTemplateImage?.logoTemplateToken
152
- ? await logoCacheRepo.getLogoSvgUrlByLogoTemplateImageAsync(
153
- props.viewModel.logoTemplateImage,
154
- )
155
- : await logoCacheRepo.getLogoSvgUrlByLogoImageAsync(
156
- props.viewModel.logoImage,
157
- );
158
- } catch (err) {
159
- console.error('unable to retrieve logo image svg data', err);
160
- }
161
- };
162
-
163
- watch(props, updateLogoImageSvgUrlAsync, { deep: true });
164
-
165
- onServerPrefetch(() => {
166
- if (!props.disableServerRender) {
167
- updateLogoImageSvgUrlAsync();
168
- }
169
- });
170
-
171
- onMounted(async () => {
172
- if (!logoImageSvgUrl.value) {
173
- await updateLogoImageSvgUrlAsync();
174
- }
175
- });
176
- </script>
177
- <style scoped>
178
- .logo__container {
179
- border: 0.125rem solid var(--logo-border-colour);
180
- border-radius: 0.75rem;
181
- }
182
-
183
- .logo__image {
184
- display: block;
185
- object-fit: contain;
186
- height: 6rem;
187
- }
188
- </style>
1
+ <template>
2
+ <div
3
+ data-component="logo-render"
4
+ :class="[
5
+ 'logo tw-relative tw-h-full',
6
+ isBrandSite ? 'brand-site' : 'brand-page',
7
+ ]"
8
+ >
9
+ <figure
10
+ v-if="logoImageUrl || !isPreview"
11
+ class="logo__container"
12
+ :class="{
13
+ 'tw-mb-10': hasMarginBottom,
14
+ }"
15
+ :style="[logoBackgroundStyles, figureDimensions]"
16
+ >
17
+ <div
18
+ :style="{
19
+ ...(props.isBrandPageOrIsBrandContact &&
20
+ !props.viewModel?.useOldLogoRenderSize
21
+ ? {
22
+ margin: 'var(--logo-spacing) auto',
23
+ height: `${viewModel?.logoImageHeight || DEFAULT_LOGO_HEIGHT}`,
24
+ maxWidth: logoMaxWidth,
25
+ }
26
+ : {
27
+ height: '100%',
28
+ width: '100%',
29
+ }),
30
+ }"
31
+ >
32
+ <img
33
+ v-if="logoImageUrl"
34
+ data-test-tag="logo"
35
+ class="logo__image"
36
+ :src="logoImageUrl"
37
+ :alt="altText"
38
+ :style="[logoStyle, marginStyle]"
39
+ />
40
+ </div>
41
+ </figure>
42
+ </div>
43
+ </template>
44
+ <script setup lang="ts">
45
+ import { computed, ref, watch, onServerPrefetch, onMounted } from 'vue';
46
+ import type { LogoViewModel } from '@brand-page/view-models';
47
+ import { LogoCacheRepository } from '../../repositories';
48
+ import {
49
+ DEFAULT_LOGO_HEIGHT,
50
+ DEFAULT_LOGO_WIDTH,
51
+ LOGO_SLIDER_DESKTOP_MAX,
52
+ LOGO_SLIDER_MOBILE_MAX,
53
+ } from '../../constants';
54
+
55
+ const props = withDefaults(
56
+ defineProps<{
57
+ isPreview: boolean;
58
+ disableServerRender?: boolean;
59
+ hasMarginBottom: boolean;
60
+ isBrandSite: boolean;
61
+ isBrandPageOrIsBrandContact: boolean;
62
+ viewModel?: LogoViewModel;
63
+ altText: string;
64
+ isMobile?: boolean;
65
+ }>(),
66
+ {
67
+ isPreview: false,
68
+ hasMarginBottom: false,
69
+ altText: '',
70
+ disableServerRender: false,
71
+ viewModel: undefined,
72
+ },
73
+ );
74
+
75
+ const logoImageSvgUrl = ref<string | undefined>(undefined);
76
+
77
+ const logoImageBase64Url = computed(() => {
78
+ return typeof props.viewModel?.logoImageBase64Url === 'string' &&
79
+ props.viewModel.logoImageBase64Url
80
+ ? props.viewModel.logoImageBase64Url
81
+ : undefined;
82
+ });
83
+
84
+ const logoBackgroundStyles = computed(() => {
85
+ return `background: ${props.viewModel?.styles.backgroundStyle.backgroundColor}`;
86
+ });
87
+
88
+ const figureDimensions = computed(() => {
89
+ return !props.viewModel?.useOldLogoRenderSize
90
+ ? {
91
+ width: '100%',
92
+ height: '100%',
93
+ }
94
+ : {};
95
+ });
96
+
97
+ const logoImageUrl = computed(() => {
98
+ if (typeof logoImageBase64Url.value !== 'undefined') {
99
+ return logoImageBase64Url.value;
100
+ }
101
+ return logoImageSvgUrl.value;
102
+ });
103
+
104
+ const logoHeight = computed(() => {
105
+ return props.viewModel?.logoImageHeight || DEFAULT_LOGO_HEIGHT;
106
+ });
107
+
108
+ const logoWidth = computed(() => {
109
+ return props.viewModel?.logoImageWidth || DEFAULT_LOGO_WIDTH;
110
+ });
111
+
112
+ const logoMaxWidth = computed(() => {
113
+ if (props.isMobile) {
114
+ return `${LOGO_SLIDER_MOBILE_MAX}rem`;
115
+ }
116
+ return `${LOGO_SLIDER_DESKTOP_MAX}rem`;
117
+ });
118
+
119
+ const logoStyle = computed(() => {
120
+ return props.viewModel?.useOldLogoRenderSize
121
+ ? {
122
+ width: '100%',
123
+ height: '100%',
124
+ 'max-width': logoWidth.value,
125
+ 'max-height': logoHeight.value,
126
+ }
127
+ : ({
128
+ width: '100%',
129
+ height: '100%',
130
+ } as any);
131
+ });
132
+
133
+ const marginStyle = computed(() => {
134
+ return props.viewModel?.useOldLogoRenderSize
135
+ ? { margin: 'var(--logo-spacing) auto' }
136
+ : {};
137
+ });
138
+
139
+ const updateLogoImageSvgUrlAsync = async () => {
140
+ if (
141
+ logoImageBase64Url.value ||
142
+ (!props.viewModel?.logoTemplateImage?.logoTemplateToken &&
143
+ !props.viewModel?.logoImage?.logoDraftToken)
144
+ ) {
145
+ return;
146
+ }
147
+
148
+ try {
149
+ const logoCacheRepo = LogoCacheRepository.getInstance();
150
+
151
+ logoImageSvgUrl.value = props.viewModel.logoTemplateImage?.logoTemplateToken
152
+ ? await logoCacheRepo.getLogoSvgUrlByLogoTemplateImageAsync(
153
+ props.viewModel.logoTemplateImage,
154
+ )
155
+ : await logoCacheRepo.getLogoSvgUrlByLogoImageAsync(
156
+ props.viewModel.logoImage,
157
+ );
158
+ } catch (err) {
159
+ console.error('unable to retrieve logo image svg data', err);
160
+ }
161
+ };
162
+
163
+ watch(props, updateLogoImageSvgUrlAsync, { deep: true });
164
+
165
+ onServerPrefetch(() => {
166
+ if (!props.disableServerRender) {
167
+ updateLogoImageSvgUrlAsync();
168
+ }
169
+ });
170
+
171
+ onMounted(async () => {
172
+ if (!logoImageSvgUrl.value) {
173
+ await updateLogoImageSvgUrlAsync();
174
+ }
175
+ });
176
+ </script>
177
+ <style scoped>
178
+ .logo__container {
179
+ border: 0.125rem solid var(--logo-border-colour);
180
+ border-radius: 0.75rem;
181
+ }
182
+
183
+ .logo__image {
184
+ display: block;
185
+ object-fit: contain;
186
+ height: 6rem;
187
+ }
188
+ </style>
@@ -10,6 +10,7 @@ export default defineComponent({
10
10
  required: true,
11
11
  },
12
12
  },
13
+ emits: ['open-side-menu'],
13
14
 
14
15
  computed: {
15
16
  iconStyle(): BrandPageCssStyle {