@designcrowd/library.brand-page 6.1.1-ast-preview-5 → 6.1.1-json-prereq-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 (306) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-sVIjGbu6.js → CreatedOnBrandCrowd-de-de-r7USgAVD.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-B_0ppSv0.js → CreatedOnBrandCrowd-en-us-Cl9PeQVq.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-DqKj4e_p.js → CreatedOnBrandCrowd-es-es-JQgWL1oM.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-DiNXZwRd.js → CreatedOnBrandCrowd-fr-ca-MyYaZgId.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-DiNXZwRd.js → CreatedOnBrandCrowd-fr-fr-MyYaZgId.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-CuYkLGHc.js → CreatedOnBrandCrowd-pt-br-D6FStQU6.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-CuYkLGHc.js → CreatedOnBrandCrowd-pt-pt-D6FStQU6.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-Bd6MW0BB.js → CreatedOnDcom-de-de-BL1nZZE6.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-nOQGBiSc.js → CreatedOnDcom-en-us-C8R2eB3R.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-CYKmU876.js → CreatedOnDcom-es-es-Cw34v79P.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-BC1ylbfG.js → CreatedOnDcom-fr-ca-hQ7zuwhB.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-DpK26Wq1.js → CreatedOnDcom-fr-fr-DYO-y4Qs.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-P9Hfpokg.js → CreatedOnDcom-pt-br-D_-6VWMA.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-rgBJjIoZ.js → CreatedOnDcom-pt-pt-C0bg2qxu.js} +1 -1
  15. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +8 -7
  16. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +4 -6
  17. package/lib/src/brand-page/components/page-footer/PageFooter.mixin.d.ts +0 -1
  18. package/lib/src/brand-page/components/page-footer/PageFooter.mixin.js +1 -4
  19. package/lib/src/brand-page/components/payment/Payment.mixin.js +3 -4
  20. package/lib/src/brand-page/components/payment/__fixtures__/request-payment.d.ts +0 -1
  21. package/lib/src/brand-page/components/payment/__fixtures__/support-me.d.ts +0 -1
  22. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.d.ts +0 -1
  23. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.js +1 -4
  24. package/lib/src/brand-page/composables/consent.composable.d.ts +0 -2
  25. package/lib/src/brand-page/composables/consent.composable.js +3 -9
  26. package/lib/src/brand-page/models/brand-page-context.model.d.ts +0 -9
  27. package/lib/src/brand-page/models/brand-page-context.model.js +0 -12
  28. package/lib/src/brand-page/models/index.d.ts +34 -26
  29. package/lib/src/brand-page/utils/context.util.d.ts +0 -8
  30. package/lib/src/brand-page/utils/context.util.js +0 -8
  31. package/lib/src/brand-page/utils/migration/migration-20.d.ts +2 -0
  32. package/lib/src/brand-page/utils/migration/migration-20.js +66 -0
  33. package/lib/src/brand-page/utils/migration.util.js +11 -0
  34. package/lib/src/brand-page/utils/text.util.d.ts +1 -1
  35. package/lib/src/brand-page/utils/text.util.js +32 -0
  36. package/lib/src/brand-page/utils/vcard.util.js +4 -4
  37. package/lib/src/brand-page/utils/view-model.util.d.ts +1 -0
  38. package/lib/src/brand-page/utils/view-model.util.js +68 -20
  39. package/lib/src/brand-page/view-models.d.ts +3 -3
  40. package/lib/src/brand-page-maker/__fixtures__/complex-rte.fixture.d.ts +22 -0
  41. package/lib/src/brand-page-maker/__fixtures__/complex-rte.fixture.js +22 -0
  42. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +0 -2
  43. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.js +1 -14
  44. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +1 -135
  45. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +0 -50
  46. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +0 -130
  47. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.d.ts +0 -1
  48. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.js +0 -3
  49. package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +0 -14
  50. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +0 -130
  51. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +0 -130
  52. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +0 -130
  53. package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +0 -130
  54. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +0 -130
  55. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.js +18 -51
  56. package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +0 -130
  57. package/lib/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.d.ts +0 -1
  58. package/lib/src/brand-page-maker/composables/rich-text-editor/bubbleMenu.d.ts +2 -9
  59. package/lib/src/brand-page-maker/composables/rich-text-editor/bubbleMenu.js +6 -10
  60. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/FontFamily.d.ts +14 -0
  61. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/FontFamily.js +39 -0
  62. package/lib/src/brand-page-maker/composables/rich-text-editor/getRteExtensions.d.ts +28 -0
  63. package/lib/src/brand-page-maker/composables/rich-text-editor/getRteExtensions.js +117 -0
  64. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +1 -1
  65. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +24 -103
  66. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +0 -1
  67. package/lib/src/brand-page-maker/composables/useEventTracker.js +0 -1
  68. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +0 -132
  69. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.js +6 -30
  70. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +3 -9
  71. package/lib/src/brand-page-maker/stores/ui/ui-store.d.ts +1 -1
  72. package/lib/src/brand-page-maker/utils/index.d.ts +2 -0
  73. package/lib/src/brand-page-maker/utils/index.js +2 -0
  74. package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +28 -5
  75. package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +48 -5
  76. package/lib/src/brand-page-maker/utils/rte-render.util.d.ts +63 -0
  77. package/lib/src/brand-page-maker/utils/rte-render.util.js +95 -0
  78. package/lib/src/brand-page-maker/utils/rte-sanitize.util.d.ts +6 -0
  79. package/lib/src/brand-page-maker/utils/rte-sanitize.util.js +156 -0
  80. package/lib/src/brand-page-maker/validators/field.validator.js +10 -2
  81. package/lib/src/bundled-translations-2HkRBbBD.js +177 -0
  82. package/lib/src/bundled-translations.de-DE-CL9ZEhU2.js +177 -0
  83. package/lib/src/bundled-translations.es-ES-uj7Sliu0.js +177 -0
  84. package/lib/src/bundled-translations.fr-CA-BMnBtr_w.js +177 -0
  85. package/lib/src/bundled-translations.fr-FR-9PEZedzq.js +177 -0
  86. package/lib/src/bundled-translations.pt-BR-B3oNDkoe.js +177 -0
  87. package/lib/src/bundled-translations.pt-PT-DM7Vsf-h.js +177 -0
  88. package/lib/src/bundles/bundled-translations.de-DE.json +0 -5
  89. package/lib/src/bundles/bundled-translations.es-ES.json +0 -5
  90. package/lib/src/bundles/bundled-translations.fr-CA.json +0 -5
  91. package/lib/src/bundles/bundled-translations.fr-FR.json +0 -5
  92. package/lib/src/bundles/bundled-translations.json +0 -5
  93. package/lib/src/bundles/bundled-translations.pt-BR.json +0 -5
  94. package/lib/src/bundles/bundled-translations.pt-PT.json +0 -5
  95. package/lib/src/clients/brand-page-client.d.ts +0 -1
  96. package/lib/src/clients/models.d.ts +0 -2
  97. package/lib/src/composables/useTranslate.d.ts +1 -2
  98. package/lib/src/composables/useTranslate.js +1 -2
  99. package/lib/src/constants/brand-page-maker.d.ts +0 -2
  100. package/lib/src/constants/brand-page-maker.js +0 -5
  101. package/lib/src/css/library.brand-page-brandCrowd.min.css +209 -352
  102. package/lib/src/css/library.brand-page-brandPage.min.css +209 -356
  103. package/lib/src/css/library.brand-page-designCom.min.css +209 -352
  104. package/lib/src/css/library.brand-page-preview.min.css +209 -352
  105. package/lib/src/index.d.ts +2 -3
  106. package/lib/src/index.mjs +215 -215
  107. package/lib/src/{lib-C3x15Hyk.js → lib-B_8Foa76.js} +54753 -51680
  108. package/lib/src/lib.js +3 -3
  109. package/lib/src/metadata-builder/ai-metadata-executor.d.ts +0 -1
  110. package/lib/src/metadata-builder/ai-metadata-executor.js +0 -19
  111. package/lib/src/metadata-builder/builders/section-builders/about-section-builder.js +2 -3
  112. package/lib/src/metadata-builder/builders/section-builders/banner-section-builder.js +2 -3
  113. package/lib/src/metadata-builder/builders/section-builders/booking-section-builder.js +2 -3
  114. package/lib/src/metadata-builder/builders/section-builders/contact-form-builder.js +3 -4
  115. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +2 -3
  116. package/lib/src/metadata-builder/builders/section-builders/mailing-list-builder.js +1 -2
  117. package/lib/src/metadata-builder/builders/section-builders/mailing-list-section-builder.js +1 -2
  118. package/lib/src/metadata-builder/builders/section-builders/profile-section-builder.js +3 -4
  119. package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +2 -3
  120. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +1 -2
  121. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +15 -11
  122. package/lib/src/metadata-builder/helpers/rte.helpers.d.ts +11 -13
  123. package/lib/src/metadata-builder/helpers/rte.helpers.js +14 -73
  124. package/lib/src/metadata-builder/metadata-executor.js +0 -4
  125. package/lib/src/metadata-builder/models.d.ts +0 -2
  126. package/lib/src/metadata-builder/models.js +0 -2
  127. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +0 -19
  128. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.js +0 -4
  129. package/lib/src/metadata-builder/sanitizers/rte-schema-check.d.ts +7 -8
  130. package/lib/src/metadata-builder/sanitizers/rte-schema-check.js +21 -52
  131. package/lib/src/shared/content-settings/components/GenericTextInput.mixin.js +14 -1
  132. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +1 -1
  133. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +12 -3
  134. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +0 -130
  135. package/lib/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.d.ts +3 -2
  136. package/lib/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.js +10 -3
  137. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.d.ts +2 -1
  138. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +4 -1
  139. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +1 -1
  140. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +0 -130
  141. package/lib/src/shared/logo-versions/LogoVersions.mixin.d.ts +1 -1
  142. package/lib/src/shared/my-designs/MyDesigns.mixin.d.ts +1 -1
  143. package/lib/src/shared/my-uploads/MyMedia.mixin.d.ts +1 -1
  144. package/lib/src/shared/my-uploads/MyUploads.mixin.d.ts +1 -1
  145. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +1 -131
  146. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +1 -131
  147. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +0 -144
  148. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +0 -130
  149. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +1 -131
  150. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +1 -1
  151. package/lib/src/shared/template-settings/store/template-settings-store.d.ts +0 -2
  152. package/lib/src/shared/template-settings/store/template-settings-store.js +24 -72
  153. package/lib/src/shared/unsplash-library/UnsplashLibrary.mixin.d.ts +1 -1
  154. package/lib/src/tracker.mjs +1 -1
  155. package/lib/src/{useEventTracker-Dmc2jFdN.js → useEventTracker-DmQ6AkNn.js} +4 -5
  156. package/lib/src/utils/minify-brand-page-metadata.js +4 -1
  157. package/package.json +17 -15
  158. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +7 -9
  159. package/src/brand-page/components/cookie-consent/CookieConsent.vue +0 -1
  160. package/src/brand-page/components/image-gallery/masonry/MasonryGallery.vue +0 -1
  161. package/src/brand-page/components/images-section/ImagesSection.vue +0 -10
  162. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +3 -8
  163. package/src/brand-page/components/media/Video.vue +0 -4
  164. package/src/brand-page/components/navigation/navigation-carousel/NavigationCarousel.vue +1 -5
  165. package/src/brand-page/components/page-footer/PageFooter.mixin.ts +1 -4
  166. package/src/brand-page/components/page-footer/PageFooter.vue +1 -1
  167. package/src/brand-page/components/payment/Payment.mixin.ts +3 -4
  168. package/src/brand-page/components/payment/Payment.vue +0 -3
  169. package/src/brand-page/components/payment/request-payment/RequestPayment.mixin.ts +1 -8
  170. package/src/brand-page/components/payment/request-payment/RequestPayment.vue +1 -2
  171. package/src/brand-page/components/payment/support-me/SupportMe.vue +0 -3
  172. package/src/brand-page/components/save-contact/SaveContactWidget.vue +1 -2
  173. package/src/brand-page/components/shop/Shop.vue +3 -11
  174. package/src/brand-page/components/social-links/SocialLinks.vue +2 -5
  175. package/src/brand-page/components/testimonial-section/TestimonialSection.vue +460 -460
  176. package/src/brand-page/components/text-wrapper/TextWrapper.vue +17 -6
  177. package/src/brand-page/components/video/Video.vue +0 -3
  178. package/src/brand-page/composables/consent.composable.ts +4 -18
  179. package/src/brand-page/models/brand-page-context.model.ts +0 -30
  180. package/src/brand-page/models/index.ts +35 -26
  181. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +3 -3
  182. package/src/brand-page/utils/context.util.ts +0 -10
  183. package/src/brand-page/utils/migration/migration-20.server.test.ts +125 -0
  184. package/src/brand-page/utils/migration/migration-20.test.ts +72 -0
  185. package/src/brand-page/utils/migration/migration-20.ts +87 -0
  186. package/src/brand-page/utils/migration.util.ts +12 -0
  187. package/src/brand-page/utils/style.util.test.ts +51 -0
  188. package/src/brand-page/utils/text.util.test.ts +47 -0
  189. package/src/brand-page/utils/text.util.ts +43 -4
  190. package/src/brand-page/utils/vcard.util.ts +6 -4
  191. package/src/brand-page/utils/view-model.pageid-rte.test.ts +104 -0
  192. package/src/brand-page/utils/view-model.util.ts +94 -26
  193. package/src/brand-page/view-models.ts +3 -2
  194. package/src/brand-page-maker/__fixtures__/complex-rte.fixture.ts +23 -0
  195. package/src/brand-page-maker/components/action-bar/ActionBar.mixin.ts +0 -15
  196. package/src/brand-page-maker/components/action-bar/ActionBarNavigation.vue +4 -19
  197. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +0 -57
  198. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +1 -26
  199. package/src/brand-page-maker/components/navigation/Navigation.mixin.ts +0 -3
  200. package/src/brand-page-maker/components/navigation/Navigation.vue +0 -1
  201. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +21 -32
  202. package/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.ts +21 -62
  203. package/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.ts +0 -1
  204. package/src/brand-page-maker/composables/rich-text-editor/bubbleMenu.ts +6 -10
  205. package/src/brand-page-maker/composables/rich-text-editor/extensions/FontFamily.test.ts +52 -0
  206. package/src/brand-page-maker/composables/rich-text-editor/extensions/FontFamily.ts +42 -0
  207. package/src/brand-page-maker/composables/rich-text-editor/getRteExtensions.ts +162 -0
  208. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +27 -111
  209. package/src/brand-page-maker/composables/useEventTracker.ts +0 -1
  210. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.ts +8 -49
  211. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +3 -11
  212. package/src/brand-page-maker/stores/ui/ui-store.ts +1 -1
  213. package/src/brand-page-maker/utils/__snapshots__/rte-render-parity.test.ts.snap +202 -0
  214. package/src/brand-page-maker/utils/index.ts +2 -0
  215. package/src/brand-page-maker/utils/rich-text-editor.util.test.ts +37 -3
  216. package/src/brand-page-maker/utils/rich-text-editor.util.ts +66 -11
  217. package/src/brand-page-maker/utils/rte-features.test.ts +378 -0
  218. package/src/brand-page-maker/utils/rte-render-parity.test.ts +164 -0
  219. package/src/brand-page-maker/utils/rte-render.util.ts +165 -0
  220. package/src/brand-page-maker/utils/rte-sanitize-json.test.ts +172 -0
  221. package/src/brand-page-maker/utils/rte-sanitize.util.ts +192 -0
  222. package/src/brand-page-maker/validators/field.validator.test.ts +55 -0
  223. package/src/brand-page-maker/validators/field.validator.ts +10 -2
  224. package/src/bundles/bundled-translations.de-DE.json +0 -5
  225. package/src/bundles/bundled-translations.es-ES.json +0 -5
  226. package/src/bundles/bundled-translations.fr-CA.json +0 -5
  227. package/src/bundles/bundled-translations.fr-FR.json +0 -5
  228. package/src/bundles/bundled-translations.json +0 -5
  229. package/src/bundles/bundled-translations.pt-BR.json +0 -5
  230. package/src/bundles/bundled-translations.pt-PT.json +0 -5
  231. package/src/clients/brand-page-client.ts +0 -2
  232. package/src/clients/models.ts +0 -3
  233. package/src/composables/useTranslate.ts +0 -2
  234. package/src/constants/brand-page-maker.ts +0 -5
  235. package/src/lib.ts +10 -6
  236. package/src/metadata-builder/ai-metadata-executor.ts +0 -26
  237. package/src/metadata-builder/builders/section-builders/about-section-builder.ts +2 -3
  238. package/src/metadata-builder/builders/section-builders/banner-section-builder.ts +2 -3
  239. package/src/metadata-builder/builders/section-builders/booking-section-builder.ts +2 -5
  240. package/src/metadata-builder/builders/section-builders/contact-form-builder.ts +3 -4
  241. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +2 -3
  242. package/src/metadata-builder/builders/section-builders/mailing-list-builder.ts +1 -2
  243. package/src/metadata-builder/builders/section-builders/mailing-list-section-builder.ts +1 -2
  244. package/src/metadata-builder/builders/section-builders/profile-section-builder.ts +3 -6
  245. package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +2 -3
  246. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +1 -2
  247. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +19 -13
  248. package/src/metadata-builder/helpers/rte.helpers.ts +15 -101
  249. package/src/metadata-builder/metadata-executor.ts +0 -5
  250. package/src/metadata-builder/models.ts +0 -3
  251. package/src/metadata-builder/parsers/ai-toolcall-parser.ts +0 -27
  252. package/src/metadata-builder/sanitizers/rte-schema-check.ts +24 -53
  253. package/src/shared/common/i18n/common.de-DE.json +0 -1
  254. package/src/shared/common/i18n/common.es-ES.json +0 -1
  255. package/src/shared/common/i18n/common.fr-CA.json +0 -1
  256. package/src/shared/common/i18n/common.fr-FR.json +0 -1
  257. package/src/shared/common/i18n/common.json +0 -1
  258. package/src/shared/common/i18n/common.pt-BR.json +0 -1
  259. package/src/shared/common/i18n/common.pt-PT.json +0 -1
  260. package/src/shared/content-settings/components/GenericTextInput.mixin.ts +17 -1
  261. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +16 -3
  262. package/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.ts +13 -4
  263. package/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.vue +6 -4
  264. package/src/shared/content-settings/components/text-image-field/TextImageField.vue +6 -3
  265. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +6 -1
  266. package/src/shared/content-settings/components/text-items-field/TextItemsField.vue +1 -1
  267. package/src/shared/template-settings/store/template-settings-store.ts +27 -93
  268. package/src/utils/minify-brand-page-metadata.ts +4 -1
  269. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/FontSize.d.ts +0 -20
  270. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/FontSize.js +0 -44
  271. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/LineHeight.d.ts +0 -27
  272. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/LineHeight.js +0 -44
  273. package/lib/src/bundled-translations-D42tE0D2.js +0 -179
  274. package/lib/src/bundled-translations.de-DE-D9aWGgFt.js +0 -179
  275. package/lib/src/bundled-translations.es-ES-lk4B0xQ7.js +0 -179
  276. package/lib/src/bundled-translations.fr-CA-DhOBNt6q.js +0 -179
  277. package/lib/src/bundled-translations.fr-FR-CnpafQeG.js +0 -179
  278. package/lib/src/bundled-translations.pt-BR-C4PnKrd9.js +0 -179
  279. package/lib/src/bundled-translations.pt-PT-CfKDVQC-.js +0 -179
  280. package/lib/src/constants/live-preview.constants.d.ts +0 -15
  281. package/lib/src/constants/live-preview.constants.js +0 -15
  282. package/lib/src/metadata-builder/builders/update-content-text-builder.d.ts +0 -17
  283. package/lib/src/metadata-builder/builders/update-content-text-builder.js +0 -103
  284. package/lib/src/metadata-builder/builders/update-content-text-style-builder.d.ts +0 -16
  285. package/lib/src/metadata-builder/builders/update-content-text-style-builder.js +0 -216
  286. package/src/brand-page/utils/context.util.test.ts +0 -43
  287. package/src/brand-page-maker/components/action-bar/ActionBarNavigation.test.ts +0 -72
  288. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.preview-gate.test.ts +0 -48
  289. package/src/brand-page-maker/components/preview-modal/PreviewModal.test.ts +0 -162
  290. package/src/brand-page-maker/components/preview-modal/PreviewModal.vue +0 -345
  291. package/src/brand-page-maker/components/preview-modal/PreviewModalWithState.test.ts +0 -226
  292. package/src/brand-page-maker/components/preview-modal/PreviewModalWithState.vue +0 -149
  293. package/src/brand-page-maker/components/preview-modal/i18n/preview-modal.de-DE.json +0 -6
  294. package/src/brand-page-maker/components/preview-modal/i18n/preview-modal.es-ES.json +0 -6
  295. package/src/brand-page-maker/components/preview-modal/i18n/preview-modal.fr-CA.json +0 -6
  296. package/src/brand-page-maker/components/preview-modal/i18n/preview-modal.fr-FR.json +0 -6
  297. package/src/brand-page-maker/components/preview-modal/i18n/preview-modal.json +0 -6
  298. package/src/brand-page-maker/components/preview-modal/i18n/preview-modal.pt-BR.json +0 -6
  299. package/src/brand-page-maker/components/preview-modal/i18n/preview-modal.pt-PT.json +0 -6
  300. package/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.test.ts +0 -135
  301. package/src/brand-page-maker/composables/rich-text-editor/extensions/FontSize.ts +0 -73
  302. package/src/brand-page-maker/composables/rich-text-editor/extensions/LineHeight.ts +0 -85
  303. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.save.test.ts +0 -106
  304. package/src/constants/live-preview.constants.ts +0 -15
  305. package/src/metadata-builder/builders/update-content-text-builder.ts +0 -148
  306. package/src/metadata-builder/builders/update-content-text-style-builder.ts +0 -352
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-C3x15Hyk.js";
2
+ import { _ as t } from "./lib-B_8Foa76.js";
3
3
  const i = {}, h = {
4
4
  width: "275",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-C3x15Hyk.js";
2
+ import { _ as t } from "./lib-B_8Foa76.js";
3
3
  const i = {}, h = {
4
4
  width: "251",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-C3x15Hyk.js";
2
+ import { _ as t } from "./lib-B_8Foa76.js";
3
3
  const i = {}, h = {
4
4
  width: "250",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-C3x15Hyk.js";
2
+ import { _ as t } from "./lib-B_8Foa76.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-C3x15Hyk.js";
2
+ import { _ as t } from "./lib-B_8Foa76.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-C3x15Hyk.js";
2
+ import { _ as t } from "./lib-B_8Foa76.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-C3x15Hyk.js";
2
+ import { _ as t } from "./lib-B_8Foa76.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-C3x15Hyk.js";
2
+ import { _ as e } from "./lib-B_8Foa76.js";
3
3
  const M = {}, Z = {
4
4
  width: "242",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-C3x15Hyk.js";
2
+ import { _ as e } from "./lib-B_8Foa76.js";
3
3
  const i = {}, M = {
4
4
  width: "231",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-C3x15Hyk.js";
2
+ import { _ as e } from "./lib-B_8Foa76.js";
3
3
  const M = {}, Z = {
4
4
  width: "230",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-C3x15Hyk.js";
2
+ import { _ as e } from "./lib-B_8Foa76.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-C3x15Hyk.js";
2
+ import { _ as e } from "./lib-B_8Foa76.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-C3x15Hyk.js";
2
+ import { _ as M } from "./lib-B_8Foa76.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-C3x15Hyk.js";
2
+ import { _ as M } from "./lib-B_8Foa76.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -1,12 +1,12 @@
1
1
  import { defineComponent } from 'vue';
2
2
  import { FORM_FIELD_TYPES } from '@brand-page/models';
3
- import { getEmailValidationError, getMessageValidationError, getNameValidationError, getPhoneValidationError, isPreviewMode, } from '@brand-page/utils';
3
+ import { getEmailValidationError, getMessageValidationError, getNameValidationError, getPhoneValidationError, } from '@brand-page/utils';
4
4
  import { isDecorativeButtonStyle } from '../../utils/button.util';
5
5
  import brandPageClient from '../../clients/brand-page.client';
6
6
  import { isEmail } from '../../../utils/validator.util';
7
7
  import { ALIGN_CARD_CENTER, ALIGN_CARD_CENTER_IMAGE, ALIGN_CENTERED, ALIGN_LEFT_FULL_IMAGE, ALIGN_RIGHT_FULL_IMAGE, DISPLAY_STYLE_COLLAPSED, RECAPTCHA_ACTION_CONTACT_FORM, TEXT_ONLY, } from '../../constants';
8
8
  import { getRenderText, contentPaddingStyle as toContentPaddingStyle, mutedTextForBackground, backgroundColorFromStyle, } from '@brand-page/utils';
9
- import { hasRTEContent } from '@brand-page-maker/utils';
9
+ import { hasRTEContent, getPlainTextFromRTE } from '@brand-page-maker/utils';
10
10
  import { useReCaptcha } from '../../composables/recaptcha.composable';
11
11
  export default defineComponent({
12
12
  props: {
@@ -120,7 +120,10 @@ export default defineComponent({
120
120
  isEmail(this.viewModel.responseEmail));
121
121
  },
122
122
  title() {
123
- return this.viewModel.title && this.viewModel.title.trim() !== ''
123
+ // BP-5787: title may be RTE JSON (not a string), so `.trim()` would
124
+ // throw — read the visible text via getPlainTextFromRTE to decide
125
+ // whether to fall back to the default.
126
+ return getPlainTextFromRTE(this.viewModel.title)
124
127
  ? this.viewModel.title
125
128
  : 'Contact Us';
126
129
  },
@@ -193,9 +196,7 @@ export default defineComponent({
193
196
  }));
194
197
  },
195
198
  mounted() {
196
- if (this.context?.recaptchaSiteKey &&
197
- !isPreviewMode(this.context) &&
198
- this.recaptcha) {
199
+ if (this.context?.recaptchaSiteKey && !this.isPreview && this.recaptcha) {
199
200
  this.recaptcha.initialise({ siteKey: this.context.recaptchaSiteKey });
200
201
  }
201
202
  },
@@ -205,7 +206,7 @@ export default defineComponent({
205
206
  if (this.hasFormError) {
206
207
  return;
207
208
  }
208
- if (isPreviewMode(this.context) || !this.context.brandPageToken) {
209
+ if (this.isPreview || !this.context.brandPageToken) {
209
210
  if (process.env.NODE_ENV !== 'production' &&
210
211
  !this.context.brandPageSlug) {
211
212
  console.error('brandPageToken is not defined');
@@ -1,6 +1,6 @@
1
1
  import { defineComponent } from 'vue';
2
2
  import brandPageClient from '../../clients/brand-page.client';
3
- import { getEmailValidationError, contentPaddingStyle as toContentPaddingStyle, isPreviewMode, mutedTextForBackground, backgroundColorFromStyle, } from '@brand-page/utils';
3
+ import { getEmailValidationError, contentPaddingStyle as toContentPaddingStyle, mutedTextForBackground, backgroundColorFromStyle, } from '@brand-page/utils';
4
4
  import { contentSettingsTr, mailingListTr, } from '@src/composables/useTranslate';
5
5
  import { useReCaptcha } from '../../composables/recaptcha.composable';
6
6
  import { RECAPTCHA_ACTION_MAILING_LIST } from '../../constants';
@@ -46,9 +46,7 @@ export default defineComponent({
46
46
  },
47
47
  mounted() {
48
48
  this.show = true;
49
- if (this.context?.recaptchaSiteKey &&
50
- !isPreviewMode(this.context) &&
51
- this.recaptcha) {
49
+ if (this.context?.recaptchaSiteKey && !this.isPreview && this.recaptcha) {
52
50
  this.recaptcha.initialise({ siteKey: this.context.recaptchaSiteKey });
53
51
  }
54
52
  },
@@ -105,7 +103,7 @@ export default defineComponent({
105
103
  },
106
104
  isFormDisabled() {
107
105
  return (this.hasFormError ||
108
- isPreviewMode(this.context) ||
106
+ this.isPreview ||
109
107
  !this.brandPageToken ||
110
108
  this.isSubmitting);
111
109
  },
@@ -127,7 +125,7 @@ export default defineComponent({
127
125
  if (this.hasFormError) {
128
126
  return;
129
127
  }
130
- if (isPreviewMode(this.context) || !this.brandPageToken) {
128
+ if (this.isPreview || !this.brandPageToken) {
131
129
  return;
132
130
  }
133
131
  this.isSubmitting = true;
@@ -20,7 +20,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
20
20
  default: boolean;
21
21
  };
22
22
  }>, {}, {}, {
23
- isInPreviewMode(): boolean;
24
23
  containerStyle(): BrandPageCssStyle;
25
24
  socialLinksIconStyle(): BrandPageCssStyle;
26
25
  isDisplayStyleCentered(): boolean;
@@ -1,5 +1,5 @@
1
1
  import { defineComponent } from 'vue';
2
- import { getRenderText, isPreviewMode } from '@brand-page/utils';
2
+ import { getRenderText } from '@brand-page/utils';
3
3
  import { FOOTER_DISPLAY } from '../../constants';
4
4
  export default defineComponent({
5
5
  props: {
@@ -23,9 +23,6 @@ export default defineComponent({
23
23
  },
24
24
  emits: ['on-logo-click', 'footer-container-click'],
25
25
  computed: {
26
- isInPreviewMode() {
27
- return isPreviewMode(this.context);
28
- },
29
26
  containerStyle() {
30
27
  return this.viewModel.backgroundStyle;
31
28
  },
@@ -2,7 +2,6 @@ import { defineComponent } from 'vue';
2
2
  import brandPageClient from '../../clients/brand-page.client';
3
3
  import { DISPLAY_STYLE_COLLAPSED, DISPLAY_STYLE_PREVIEW, paymentProviders, } from '../../constants';
4
4
  import raygunUtil from '@brand-page/utils/raygun.util';
5
- import { isPreviewMode } from '@brand-page/utils';
6
5
  import { paymentTr } from '@src/composables/useTranslate';
7
6
  const DEFAULT_PAYMENT_SUCCESS_MESSAGE = paymentTr(`defaultPaymentSuccessMessage`);
8
7
  const PAYMENT_CONFIG_ACTIVE = 'Active';
@@ -61,10 +60,10 @@ export default defineComponent({
61
60
  }
62
61
  },
63
62
  canMakePayment() {
64
- return !isPreviewMode(this.context) && this.isPaymentConfigActive;
63
+ return !this.context.isPreview && this.isPaymentConfigActive;
65
64
  },
66
65
  showPaymentBlock() {
67
- return isPreviewMode(this.context) || this.isPaymentConfigActive;
66
+ return this.context.isPreview || this.isPaymentConfigActive;
68
67
  },
69
68
  paymentOptions() {
70
69
  return this.paymentConfig.paymentOptions;
@@ -148,7 +147,7 @@ export default defineComponent({
148
147
  this.state = paymentConfigId
149
148
  ? paymentState.PaymentOptionSelection
150
149
  : paymentState.IncompleteConfig;
151
- if (isPreviewMode(this.context) || !paymentConfigId) {
150
+ if (this.context.isPreview || !paymentConfigId) {
152
151
  return;
153
152
  }
154
153
  try {
@@ -3,7 +3,6 @@ export declare const context: {
3
3
  stripePublishableKey: string;
4
4
  isTemplate: boolean;
5
5
  isPreview: boolean;
6
- isLivePreview?: boolean;
7
6
  isMobile?: boolean;
8
7
  isDesignCom: boolean;
9
8
  isProduction: boolean;
@@ -3,7 +3,6 @@ export declare const context: {
3
3
  stripePublishableKey: string;
4
4
  isTemplate: boolean;
5
5
  isPreview: boolean;
6
- isLivePreview?: boolean;
7
6
  isMobile?: boolean;
8
7
  isDesignCom: boolean;
9
8
  isProduction: boolean;
@@ -21,7 +21,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
21
21
  selectedPaymentOptionIds: string[];
22
22
  imageType: string;
23
23
  }, {
24
- isInPreviewMode(): boolean;
25
24
  contentPaddingStyle(): {
26
25
  paddingTop: string;
27
26
  paddingBottom: string;
@@ -2,7 +2,7 @@ import { defineComponent } from 'vue';
2
2
  import { PAYMENT_OPTION_DISPLAY_TYPES, PAYMENT_OPTION_IMAGE_TYPES, } from '../../../models';
3
3
  import { DEFAULT_CURRENCY_SYMBOL } from '../../../constants';
4
4
  import { addOpacityToHex } from '../../../utils/color.util';
5
- import { contentPaddingStyle as toContentPaddingStyle, isPreviewMode, } from '../../../utils';
5
+ import { contentPaddingStyle as toContentPaddingStyle } from '../../../utils';
6
6
  import { RGBAtoHex } from '@utils/helpers';
7
7
  const MAX_CUSTOM_REQUEST_CHARS = 500;
8
8
  export default defineComponent({
@@ -29,9 +29,6 @@ export default defineComponent({
29
29
  };
30
30
  },
31
31
  computed: {
32
- isInPreviewMode() {
33
- return isPreviewMode(this.context);
34
- },
35
32
  contentPaddingStyle() {
36
33
  return toContentPaddingStyle(this.viewModel);
37
34
  },
@@ -4,10 +4,8 @@ export declare const useConsent: () => {
4
4
  updateConsent: import("vue").Ref<(c: ConsentType) => void, (c: ConsentType) => void>;
5
5
  featureEnabled: import("vue").Ref<boolean, boolean>;
6
6
  showConsentModal: import("vue").Ref<boolean, boolean>;
7
- persist: import("vue").Ref<boolean, boolean>;
8
7
  initialise: (options: {
9
8
  featureEnabled: boolean;
10
- persist?: boolean;
11
9
  }) => ConsentType;
12
10
  grant: (cb?: () => unknown) => void;
13
11
  deny: (cb?: () => unknown) => void;
@@ -28,7 +28,6 @@ const store = reactive({
28
28
  consent: undefined,
29
29
  featureEnabled: false,
30
30
  showConsentModal: false,
31
- persist: true,
32
31
  updateConsent(c) {
33
32
  this.consent = c;
34
33
  },
@@ -39,8 +38,7 @@ export const useConsent = () => {
39
38
  return undefined;
40
39
  }
41
40
  store.featureEnabled = options.featureEnabled;
42
- store.persist = options.persist ?? true;
43
- store.consent = store.persist ? getStoredConsent() : undefined;
41
+ store.consent = getStoredConsent();
44
42
  store.showConsentModal =
45
43
  options.featureEnabled && !accepted.value && !declined.value;
46
44
  return store.consent;
@@ -48,17 +46,13 @@ export const useConsent = () => {
48
46
  const accepted = computed(() => Boolean(store.consent && store.consent === 'granted'));
49
47
  const declined = computed(() => Boolean(store.consent && store.consent === 'denied'));
50
48
  const grant = (cb) => {
51
- if (store.persist) {
52
- storeConsent('granted');
53
- }
49
+ storeConsent('granted');
54
50
  store.updateConsent('granted');
55
51
  store.showConsentModal = store.featureEnabled && !accepted.value;
56
52
  cb && cb();
57
53
  };
58
54
  const deny = (cb) => {
59
- if (store.persist) {
60
- storeConsent('denied');
61
- }
55
+ storeConsent('denied');
62
56
  store.updateConsent('denied');
63
57
  store.showConsentModal = false;
64
58
  cb && cb();
@@ -37,8 +37,6 @@ export interface AbTestResult {
37
37
  export interface AbTest {
38
38
  bp_3926_freemium_watermark?: AbTestResult;
39
39
  bp_5245_ai_website_assistant?: AbTestResult;
40
- bp_5873_live_preview_prepurchase?: AbTestResult;
41
- bp_5873_live_preview_postpurchase?: AbTestResult;
42
40
  }
43
41
  export declare const MEDIA_SIZES: {
44
42
  readonly size1x: "size1x";
@@ -49,13 +47,6 @@ export type MediaSizes = keyof typeof MEDIA_SIZES;
49
47
  export interface BrandPageContext {
50
48
  isTemplate: boolean;
51
49
  isPreview: boolean;
52
- /**
53
- * Rendered as a customer-facing live preview (safe/inert actions, no
54
- * watermark, ephemeral consent). Distinct from the editor `isPreview`, which
55
- * also drives editor/thumbnail-only behaviour. Use `isPreviewMode()` to gate
56
- * inert-action behaviour that applies to both.
57
- */
58
- isLivePreview?: boolean;
59
50
  /** @deprecated should be used on maker only */
60
51
  isMobile?: boolean;
61
52
  isDesignCom: boolean;
@@ -25,11 +25,6 @@ export const AB_TEST_FLAG = {
25
25
  const AB_TEST_KEYS = {
26
26
  BP_3926_FREEMIUM_WATERMARK: 'bc-bp-3926-freemium-cta-in-website-editor',
27
27
  BP_5245_AI_WEBSITE_ASSISTANT: 'bc-bp-5245-ai-website-assistant-postpurchase',
28
- // Two separate live-preview experiments — bc-net sends only the one for the
29
- // current purchase state, and a user's value on each side is independent
30
- // (BP-5873). Keys must match `CampaignNames.LivePreview*Test` in bc-net.
31
- BP_5873_LIVE_PREVIEW_PREPURCHASE: 'bc-bp-5873-live-preview-prepurchase',
32
- BP_5873_LIVE_PREVIEW_POSTPURCHASE: 'bc-bp-5873-live-preview-postpurchase',
33
28
  };
34
29
  export const MEDIA_SIZES = {
35
30
  size1x: 'size1x',
@@ -55,12 +50,5 @@ export const getAbTestResults = (abtestKeyValues) => {
55
50
  if (abtestKeyValues[AB_TEST_KEYS.BP_5245_AI_WEBSITE_ASSISTANT]) {
56
51
  abTests.bp_5245_ai_website_assistant = getValueType(AB_TEST_KEYS.BP_5245_AI_WEBSITE_ASSISTANT, abtestKeyValues[AB_TEST_KEYS.BP_5245_AI_WEBSITE_ASSISTANT]);
57
52
  }
58
- // AB Test for BP-5873 - Live preview (pre- and post-purchase run separately)
59
- if (abtestKeyValues[AB_TEST_KEYS.BP_5873_LIVE_PREVIEW_PREPURCHASE]) {
60
- abTests.bp_5873_live_preview_prepurchase = getValueType(AB_TEST_KEYS.BP_5873_LIVE_PREVIEW_PREPURCHASE, abtestKeyValues[AB_TEST_KEYS.BP_5873_LIVE_PREVIEW_PREPURCHASE]);
61
- }
62
- if (abtestKeyValues[AB_TEST_KEYS.BP_5873_LIVE_PREVIEW_POSTPURCHASE]) {
63
- abTests.bp_5873_live_preview_postpurchase = getValueType(AB_TEST_KEYS.BP_5873_LIVE_PREVIEW_POSTPURCHASE, abtestKeyValues[AB_TEST_KEYS.BP_5873_LIVE_PREVIEW_POSTPURCHASE]);
64
- }
65
53
  return abTests;
66
54
  };
@@ -7,6 +7,14 @@ import { TextStyles } from './styles.model';
7
7
  import { LogoStyles } from './logo.model';
8
8
  import type { LogoImageModel, LogoTemplateImageModel } from './logo.model';
9
9
  import type { BrandPagePaymentConfig } from './payment.model';
10
+ import type { JSONContent } from '@tiptap/vue-3';
11
+ /**
12
+ * BP-5787 — a rich-text field is either a legacy inline-HTML string or a
13
+ * Tiptap JSON document. Typing RTE content fields as RichTextValue (instead of
14
+ * `string`) forces every consumer to handle both forms — surfacing at compile
15
+ * time any code that assumes a plain string (e.g. `.replace`, `.length`).
16
+ */
17
+ export type RichTextValue = string | JSONContent;
10
18
  export * from './brand-page-context.model';
11
19
  export * from './payment.model';
12
20
  export * from './content.model';
@@ -148,7 +156,7 @@ export interface TextContent extends Content {
148
156
  /**
149
157
  * For BrandPage/BrandContact only
150
158
  */
151
- text: string;
159
+ text: RichTextValue;
152
160
  /**
153
161
  * For BrandSite
154
162
  */
@@ -171,9 +179,9 @@ export interface TextContent extends Content {
171
179
  }
172
180
  export interface ProfileContent extends Content {
173
181
  avatarImageUrl: string;
174
- name: string;
175
- title: string;
176
- description: string;
182
+ name: RichTextValue;
183
+ title: RichTextValue;
184
+ description: RichTextValue;
177
185
  backgroundColor: BrandPageCssStyle;
178
186
  colorReplacements: ColorReplacement[];
179
187
  mediaType?: string;
@@ -191,7 +199,7 @@ export interface MapContent extends Content {
191
199
  }
192
200
  export interface MailingListContent extends Content {
193
201
  acceptedFields?: 'emailOnly' | 'nameAndEmail';
194
- title: string;
202
+ title: RichTextValue;
195
203
  buttonText: string;
196
204
  titleStyle: TextStyleDeclaration;
197
205
  buttonTextStyle: TextStyleDeclaration;
@@ -243,10 +251,10 @@ export interface FormField {
243
251
  export interface ContactFormContent extends Content {
244
252
  type: 'contact-form';
245
253
  displayStyle: string;
246
- title: string;
247
- description: string;
254
+ title: RichTextValue;
255
+ description: RichTextValue;
248
256
  buttonText: string;
249
- successMessage: string;
257
+ successMessage: RichTextValue;
250
258
  fields: FormField[];
251
259
  responseEmail: string;
252
260
  imageUrl?: string;
@@ -265,8 +273,8 @@ export interface ContactFormContent extends Content {
265
273
  export interface BannerSectionContent extends Content {
266
274
  type: 'banner-section';
267
275
  imageUrl: string;
268
- title: string;
269
- description: string;
276
+ title: RichTextValue;
277
+ description: RichTextValue;
270
278
  buttonText: string | false;
271
279
  url: string;
272
280
  email?: string;
@@ -293,8 +301,8 @@ export declare const MEDIA_TYPES: {
293
301
  };
294
302
  export type MediaType = keyof typeof MEDIA_TYPES;
295
303
  export interface TextMediaItem extends ImageItem {
296
- title: string;
297
- paragraph: string;
304
+ title: RichTextValue;
305
+ paragraph: RichTextValue;
298
306
  itemsId: number;
299
307
  buttonText?: string | false;
300
308
  buttonPageId?: string;
@@ -313,8 +321,8 @@ export interface TextShapeItem extends TextMediaItem {
313
321
  export interface ShapeItem extends ImageItem {
314
322
  colorReplacements: ColorReplacement[];
315
323
  mediaType: MediaType;
316
- title?: string;
317
- paragraph?: string;
324
+ title?: RichTextValue;
325
+ paragraph?: RichTextValue;
318
326
  titleOverride?: string;
319
327
  paragraphOverride?: string;
320
328
  }
@@ -322,9 +330,9 @@ export interface TestimonialItems {
322
330
  /** Stable per-item identifier. See ImageItem.id. */
323
331
  id: string;
324
332
  imageUrl: string;
325
- name: string;
326
- position: string;
327
- testimonials: string;
333
+ name: RichTextValue;
334
+ position: RichTextValue;
335
+ testimonials: RichTextValue;
328
336
  colorReplacements: ColorReplacement[];
329
337
  mediaType: string;
330
338
  size?: string;
@@ -337,7 +345,7 @@ export interface TestimonialItems {
337
345
  export interface TextItem {
338
346
  /** Stable per-item identifier. See ImageItem.id. */
339
347
  id: string;
340
- text: string;
348
+ text: RichTextValue;
341
349
  textStyle: TextStyleDeclaration;
342
350
  textOverride?: string;
343
351
  }
@@ -354,8 +362,8 @@ export interface ImagesSectionContent extends Content, MediaSection {
354
362
  enablePopup: boolean;
355
363
  }
356
364
  export interface MediaSection extends Content {
357
- title: string;
358
- description: string;
365
+ title: RichTextValue;
366
+ description: RichTextValue;
359
367
  displayStyle: ImagesSectionContentDisplayStyle;
360
368
  items: TextShapeItem[] | TextMediaItem[];
361
369
  titleStyle: TextStyleDeclaration;
@@ -372,7 +380,7 @@ export interface ColorReplacement {
372
380
  }
373
381
  export interface TestimonialSectionContent extends Content {
374
382
  type: 'testimonial-section';
375
- title: string;
383
+ title: RichTextValue;
376
384
  displayStyle: string;
377
385
  items: TestimonialItems[];
378
386
  titleStyle: TextStyleDeclaration;
@@ -386,8 +394,8 @@ export interface TestimonialSectionContent extends Content {
386
394
  export interface AboutSectionContent extends Content {
387
395
  type: 'about-section';
388
396
  imageUrl: string;
389
- title: string;
390
- paragraph: string;
397
+ title: RichTextValue;
398
+ paragraph: RichTextValue;
391
399
  displayStyle: string;
392
400
  titleStyle: TextStyleDeclaration;
393
401
  paragraphStyle: TextStyleDeclaration;
@@ -411,7 +419,7 @@ export declare const SOCIAL_LINKS_ICON_DISPLAY_STYLES: {
411
419
  export type SocialLinksIconDisplayStyle = keyof typeof SOCIAL_LINKS_ICON_DISPLAY_STYLES;
412
420
  export interface SocialLinksContent extends Content {
413
421
  type: 'social-links';
414
- title: string;
422
+ title: RichTextValue;
415
423
  links: LinksItem[];
416
424
  iconDisplayStyle: SocialLinksIconDisplayStyle;
417
425
  iconFillStyles: BrandPageCssStyle;
@@ -434,8 +442,8 @@ export interface DividerSectionContent extends Content {
434
442
  }
435
443
  export interface BookingSectionContent extends Content {
436
444
  type: 'booking-section';
437
- title: string;
438
- description: string;
445
+ title: RichTextValue;
446
+ description: RichTextValue;
439
447
  buttonText: string;
440
448
  url: string;
441
449
  email?: string;
@@ -1,10 +1,2 @@
1
1
  import type { BrandPageContext } from '../models';
2
2
  export declare const getSlugFromContext: (context: BrandPageContext) => string;
3
- /**
4
- * True when interactive actions must be inert and payment/shop blocks always
5
- * shown — i.e. the render is a preview, not a live site. Covers both the
6
- * editor preview (`isPreview`) and the customer live-preview
7
- * (`isLivePreview`). Editor-only artifacts (cursor, nav interception,
8
- * placeholders) must keep reading `context.isPreview` directly.
9
- */
10
- export declare const isPreviewMode: (context: BrandPageContext) => boolean;
@@ -4,11 +4,3 @@ export const getSlugFromContext = (context) => {
4
4
  }
5
5
  return context.brandPageSlug;
6
6
  };
7
- /**
8
- * True when interactive actions must be inert and payment/shop blocks always
9
- * shown — i.e. the render is a preview, not a live site. Covers both the
10
- * editor preview (`isPreview`) and the customer live-preview
11
- * (`isLivePreview`). Editor-only artifacts (cursor, nav interception,
12
- * placeholders) must keep reading `context.isPreview` directly.
13
- */
14
- export const isPreviewMode = (context) => !!(context.isPreview || context.isLivePreview);
@@ -0,0 +1,2 @@
1
+ import type { MigrationData } from '../migration.util';
2
+ export declare const migration20: (migrationResult: MigrationData) => Promise<MigrationData>;