@designcrowd/library.brand-page 6.2.11-builder-v2-1 → 6.2.12

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 (579) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-Dg2pOwbr.js → CreatedOnBrandCrowd-de-de-BtVKllNQ.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-BILs_hsB.js → CreatedOnBrandCrowd-en-us-CX5V0v8u.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-VpxQ0N5F.js → CreatedOnBrandCrowd-es-es-CbA02PCL.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-CFHWRHzi.js → CreatedOnBrandCrowd-fr-ca-BQAKruBF.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-CFHWRHzi.js → CreatedOnBrandCrowd-fr-fr-BQAKruBF.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-CZfs45s9.js → CreatedOnBrandCrowd-pt-br-Yk_yzB3s.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-CZfs45s9.js → CreatedOnBrandCrowd-pt-pt-Yk_yzB3s.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-DYMQ6sIF.js → CreatedOnDcom-de-de-DJZQbPSD.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-Dj5sdPid.js → CreatedOnDcom-en-us-BJvNAa4l.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-Cx9yNTro.js → CreatedOnDcom-es-es-CUwB1FRY.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-Bzr0SjGq.js → CreatedOnDcom-fr-ca-CK54U4oh.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-BgqKY35F.js → CreatedOnDcom-fr-fr-DuUNBGrM.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-CXK6qfvL.js → CreatedOnDcom-pt-br-BfODpFNV.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-B8SggNTQ.js → CreatedOnDcom-pt-pt-Cf6u2GCg.js} +1 -1
  15. package/lib/src/brand-page/__fixtures__/production-text-style-resolver.fixture.d.ts +16 -0
  16. package/lib/src/brand-page/__fixtures__/production-text-style-resolver.fixture.js +35 -0
  17. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +3 -0
  18. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +19 -13
  19. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.d.ts +3 -1
  20. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +17 -2
  21. package/lib/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.mixin.d.ts +11 -3
  22. package/lib/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.mixin.js +35 -1
  23. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.d.ts +8 -2
  24. package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.js +27 -3
  25. package/lib/src/brand-page/components/page/Page.mixin.d.ts +5 -2
  26. package/lib/src/brand-page/components/page/Page.mixin.js +33 -27
  27. package/lib/src/brand-page/components/page-footer/PageFooter.mixin.d.ts +7 -2
  28. package/lib/src/brand-page/components/page-footer/PageFooter.mixin.js +21 -1
  29. package/lib/src/brand-page/components/payment/Payment.mixin.d.ts +5 -2
  30. package/lib/src/brand-page/components/payment/Payment.mixin.js +22 -2
  31. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.d.ts +6 -2
  32. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.js +32 -1
  33. package/lib/src/brand-page/components/social-links/SocialLinks.stories.js +0 -3
  34. package/lib/src/brand-page/components/testimonial-section/__fixtures__/data.js +0 -3
  35. package/lib/src/brand-page/components/text/Text.stories.js +0 -17
  36. package/lib/src/brand-page/constants/font.constants.d.ts +62 -0
  37. package/lib/src/brand-page/constants/font.constants.js +35 -0
  38. package/lib/src/brand-page/models/brand-page-context.model.d.ts +2 -0
  39. package/lib/src/brand-page/models/brand-page-context.model.js +7 -0
  40. package/lib/src/brand-page/models/index.d.ts +23 -24
  41. package/lib/src/brand-page/models/index.js +20 -7
  42. package/lib/src/brand-page/models/navigation-styles.model.d.ts +1 -1
  43. package/lib/src/brand-page/models/navigation-styles.model.js +17 -8
  44. package/lib/src/brand-page/models/payment.model.d.ts +11 -6
  45. package/lib/src/brand-page/models/styles.model.d.ts +53 -7
  46. package/lib/src/brand-page/models/styles.model.js +115 -27
  47. package/lib/src/brand-page/utils/color-palette.util.d.ts +43 -23
  48. package/lib/src/brand-page/utils/color-palette.util.js +65 -27
  49. package/lib/src/brand-page/utils/color.util.d.ts +13 -9
  50. package/lib/src/brand-page/utils/color.util.js +56 -15
  51. package/lib/src/brand-page/utils/container-text-color.util.d.ts +46 -13
  52. package/lib/src/brand-page/utils/container-text-color.util.js +321 -41
  53. package/lib/src/brand-page/utils/index.d.ts +1 -0
  54. package/lib/src/brand-page/utils/index.js +1 -0
  55. package/lib/src/brand-page/utils/migration/migration-20.js +6 -2
  56. package/lib/src/brand-page/utils/migration/migration-21.js +34 -6
  57. package/lib/src/brand-page/utils/migration/migration-22.d.ts +99 -0
  58. package/lib/src/brand-page/utils/migration/migration-22.js +909 -0
  59. package/lib/src/brand-page/utils/migration.util.js +17 -0
  60. package/lib/src/brand-page/utils/model.util.d.ts +4 -0
  61. package/lib/src/brand-page/utils/model.util.js +4 -0
  62. package/lib/src/brand-page/utils/personalisation.util.js +9 -1
  63. package/lib/src/brand-page/utils/rte-role-lift.util.d.ts +72 -0
  64. package/lib/src/brand-page/utils/rte-role-lift.util.js +275 -0
  65. package/lib/src/brand-page/utils/style.util.d.ts +5 -1
  66. package/lib/src/brand-page/utils/style.util.js +34 -11
  67. package/lib/src/brand-page/utils/text-role-css.util.d.ts +19 -0
  68. package/lib/src/brand-page/utils/text-role-css.util.js +186 -0
  69. package/lib/src/brand-page/utils/text-role-reconnect.util.d.ts +90 -0
  70. package/lib/src/brand-page/utils/text-role-reconnect.util.js +434 -0
  71. package/lib/src/brand-page/utils/text-style.util.d.ts +53 -23
  72. package/lib/src/brand-page/utils/text-style.util.js +122 -22
  73. package/lib/src/brand-page/utils/view-model.util.d.ts +9 -1
  74. package/lib/src/brand-page/utils/view-model.util.js +124 -111
  75. package/lib/src/brand-page/view-models.d.ts +1 -0
  76. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +4 -1
  77. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +34 -2
  78. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +4 -4
  79. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +4 -1
  80. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.js +0 -10
  81. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/content-settings-items.fixture.js +0 -1
  82. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +44 -138
  83. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.js +0 -28
  84. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +4 -1
  85. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.d.ts +1 -1
  86. package/lib/src/brand-page-maker/components/preview/Preview.mixin.d.ts +7 -0
  87. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +21 -0
  88. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +25 -1
  89. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +25 -1
  90. package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +21 -0
  91. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +4 -1
  92. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +25 -1
  93. package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +21 -0
  94. package/lib/src/brand-page-maker/composables/ai-chat/ai-builder-experiment.d.ts +10 -0
  95. package/lib/src/brand-page-maker/composables/ai-chat/ai-builder-experiment.js +11 -0
  96. package/lib/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.d.ts +1 -0
  97. package/lib/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.js +1 -0
  98. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +14 -0
  99. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/RoleTypographyFill.d.ts +16 -0
  100. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/RoleTypographyFill.js +61 -0
  101. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/RteClipboard.d.ts +11 -0
  102. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/RteClipboard.js +236 -0
  103. package/lib/src/brand-page-maker/composables/rich-text-editor/font.d.ts +2 -1
  104. package/lib/src/brand-page-maker/composables/rich-text-editor/font.js +25 -6
  105. package/lib/src/brand-page-maker/composables/rich-text-editor/formatting.d.ts +17 -4
  106. package/lib/src/brand-page-maker/composables/rich-text-editor/formatting.js +204 -17
  107. package/lib/src/brand-page-maker/composables/rich-text-editor/hyperlink.d.ts +1 -1
  108. package/lib/src/brand-page-maker/composables/rich-text-editor/hyperlink.js +29 -31
  109. package/lib/src/brand-page-maker/composables/rich-text-editor/keepMarksOnEmpty.d.ts +20 -0
  110. package/lib/src/brand-page-maker/composables/rich-text-editor/keepMarksOnEmpty.js +60 -0
  111. package/lib/src/brand-page-maker/composables/rich-text-editor/spacing.d.ts +2 -1
  112. package/lib/src/brand-page-maker/composables/rich-text-editor/spacing.js +22 -6
  113. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +10 -4
  114. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +319 -275
  115. package/lib/src/brand-page-maker/constants/config-settings-constant.js +1 -5
  116. package/lib/src/brand-page-maker/convertors/text-css-style-options.convertor.js +6 -2
  117. package/lib/src/brand-page-maker/convertors/text-size-value.convertor.d.ts +1 -1
  118. package/lib/src/brand-page-maker/convertors/text-size-value.convertor.js +3 -1
  119. package/lib/src/brand-page-maker/default-getters/payment-text-and-border-color.default-getter.js +7 -14
  120. package/lib/src/brand-page-maker/default-getters/text-color.default-getter.js +6 -13
  121. package/lib/src/brand-page-maker/models/content-settings.d.ts +8 -0
  122. package/lib/src/brand-page-maker/models/content-settings.js +112 -81
  123. package/lib/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.d.ts +2 -2
  124. package/lib/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.js +5 -2
  125. package/lib/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.js +4 -3
  126. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +1257 -117
  127. package/lib/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.d.ts +9 -2
  128. package/lib/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.js +20 -0
  129. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +21 -0
  130. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +6 -1
  131. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +17 -9
  132. package/lib/src/brand-page-maker/stores/history/history-store.d.ts +59 -5
  133. package/lib/src/brand-page-maker/stores/history/history-store.js +22 -2
  134. package/lib/src/brand-page-maker/utils/apply-color-strategy.js +26 -8
  135. package/lib/src/brand-page-maker/utils/index.d.ts +2 -1
  136. package/lib/src/brand-page-maker/utils/index.js +2 -1
  137. package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +117 -15
  138. package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +435 -281
  139. package/lib/src/brand-page-maker/utils/rte-authoring.util.d.ts +4 -0
  140. package/lib/src/brand-page-maker/utils/rte-authoring.util.js +101 -0
  141. package/lib/src/brand-page-maker/utils/rte-clipboard.util.d.ts +126 -0
  142. package/lib/src/brand-page-maker/utils/rte-clipboard.util.js +307 -0
  143. package/lib/src/brand-page-maker/utils/rte-sanitize.util.js +13 -3
  144. package/lib/src/{bundled-translations-zfiA5Tsw.js → bundled-translations-yGrvPE5i.js} +17 -17
  145. package/lib/src/{bundled-translations.de-DE-ChsdSyAP.js → bundled-translations.de-DE-L4Znf8Hs.js} +17 -17
  146. package/lib/src/{bundled-translations.es-ES-DflsWQK0.js → bundled-translations.es-ES-D6iticrK.js} +15 -15
  147. package/lib/src/{bundled-translations.fr-CA-fpDRuZ52.js → bundled-translations.fr-CA-BgAVE-9k.js} +25 -25
  148. package/lib/src/{bundled-translations.fr-FR-Bub73Zt-.js → bundled-translations.fr-FR-B8GbyqxQ.js} +17 -17
  149. package/lib/src/{bundled-translations.pt-BR-BlnWE9TB.js → bundled-translations.pt-BR-DjPU3Db7.js} +25 -25
  150. package/lib/src/{bundled-translations.pt-PT-DmzXlnaS.js → bundled-translations.pt-PT-BaepaDpr.js} +23 -23
  151. package/lib/src/bundles/bundled-translations.de-DE.json +21 -2
  152. package/lib/src/bundles/bundled-translations.es-ES.json +21 -2
  153. package/lib/src/bundles/bundled-translations.fr-CA.json +21 -2
  154. package/lib/src/bundles/bundled-translations.fr-FR.json +21 -2
  155. package/lib/src/bundles/bundled-translations.json +21 -2
  156. package/lib/src/bundles/bundled-translations.pt-BR.json +21 -2
  157. package/lib/src/bundles/bundled-translations.pt-PT.json +21 -2
  158. package/lib/src/clients/ai-assistant-client.d.ts +7 -1
  159. package/lib/src/clients/ai-assistant-client.js +7 -15
  160. package/lib/src/composables/useTranslate.d.ts +1 -1
  161. package/lib/src/composables/useTranslate.js +1 -1
  162. package/lib/src/css/library.brand-page-brandCrowd.min.css +284 -188
  163. package/lib/src/css/library.brand-page-brandPage.min.css +284 -188
  164. package/lib/src/css/library.brand-page-designCom.min.css +284 -188
  165. package/lib/src/css/library.brand-page-preview.min.css +284 -188
  166. package/lib/src/index.d.ts +2 -1
  167. package/lib/src/index.mjs +195 -191
  168. package/lib/src/{lib-7gtW85nE.js → lib-kGRlD3_P.js} +39082 -36131
  169. package/lib/src/lib.js +2 -1
  170. package/lib/src/metadata-builder/builders/footer-builder.js +4 -5
  171. package/lib/src/metadata-builder/builders/global-role-propagation.d.ts +58 -0
  172. package/lib/src/metadata-builder/builders/global-role-propagation.js +246 -0
  173. package/lib/src/metadata-builder/builders/global-styles-builder.d.ts +1 -0
  174. package/lib/src/metadata-builder/builders/global-styles-builder.js +116 -45
  175. package/lib/src/metadata-builder/builders/header-builder.js +13 -4
  176. package/lib/src/metadata-builder/builders/section-builders/about-section-builder.js +3 -3
  177. package/lib/src/metadata-builder/builders/section-builders/banner-section-builder.js +3 -3
  178. package/lib/src/metadata-builder/builders/section-builders/booking-section-builder.js +3 -3
  179. package/lib/src/metadata-builder/builders/section-builders/contact-form-builder.js +4 -4
  180. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +3 -3
  181. package/lib/src/metadata-builder/builders/section-builders/mailing-list-builder.js +2 -2
  182. package/lib/src/metadata-builder/builders/section-builders/mailing-list-section-builder.js +2 -2
  183. package/lib/src/metadata-builder/builders/section-builders/profile-section-builder.js +4 -4
  184. package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +3 -3
  185. package/lib/src/metadata-builder/builders/section-builders/social-links-builder.js +8 -2
  186. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +2 -2
  187. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +60 -29
  188. package/lib/src/metadata-builder/builders/section-field-maps.js +1 -0
  189. package/lib/src/metadata-builder/builders/section-field-utils.d.ts +48 -19
  190. package/lib/src/metadata-builder/builders/section-field-utils.js +128 -52
  191. package/lib/src/metadata-builder/builders/section-rules/global-styles.rules.d.ts +4 -2
  192. package/lib/src/metadata-builder/builders/section-rules/global-styles.rules.js +28 -12
  193. package/lib/src/metadata-builder/builders/section-rules/social-links.rules.js +5 -1
  194. package/lib/src/metadata-builder/helpers/rte.helpers.d.ts +1 -1
  195. package/lib/src/metadata-builder/helpers/rte.helpers.js +97 -40
  196. package/lib/src/metadata-builder/metadata-executor.js +23 -1
  197. package/lib/src/metadata-builder/models.d.ts +2 -0
  198. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +18 -19
  199. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +18 -1
  200. package/lib/src/metadata-builder/sanitizers/rte-schema-check.js +1 -1
  201. package/lib/src/metadata-builder/sanitizers/sanitizer-rules.d.ts +0 -1
  202. package/lib/src/metadata-builder/sanitizers/sanitizer-rules.js +5 -8
  203. package/lib/src/metadata-builder/sanitizers/section-args-validator.d.ts +7 -16
  204. package/lib/src/metadata-builder/sanitizers/section-args-validator.js +95 -22
  205. package/lib/src/shared/color-palette/section-color-matches.js +9 -25
  206. package/lib/src/shared/color-strategies/color-strategies.d.ts +15 -0
  207. package/lib/src/shared/color-strategies/color-strategies.js +31 -0
  208. package/lib/src/shared/color-strategies/rte-color.d.ts +8 -0
  209. package/lib/src/shared/color-strategies/rte-color.js +16 -0
  210. package/lib/src/shared/color-strategies/rte-field-pairs.d.ts +23 -0
  211. package/lib/src/shared/color-strategies/rte-field-pairs.js +28 -0
  212. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +9 -135
  213. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +1 -27
  214. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +12 -2
  215. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +7 -0
  216. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +75 -6
  217. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +18 -7
  218. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +6 -1
  219. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.js +0 -7
  220. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +22 -0
  221. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +8 -4
  222. package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.d.ts +1255 -26
  223. package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.js +203 -59
  224. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +6 -0
  225. package/lib/src/shared/content-settings/store/content-settings-store.js +105 -8
  226. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +26 -1
  227. package/lib/src/shared/navigation-style-settings/store/index.d.ts +7 -3
  228. package/lib/src/shared/navigation-style-settings/store/index.js +40 -15
  229. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.d.ts +1 -0
  230. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +38 -5
  231. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +91 -13
  232. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.js +10 -2
  233. package/lib/src/shared/page-settings/store/page-settings-store.d.ts +2 -1
  234. package/lib/src/shared/page-settings/store/page-settings-store.js +17 -0
  235. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +32 -1
  236. package/lib/src/shared/rte-extensions/AutoLink.d.ts +17 -0
  237. package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/AutoLink.js +67 -51
  238. package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/MaxLength.js +4 -1
  239. package/lib/src/shared/rte-extensions/TextEffects.d.ts +28 -0
  240. package/lib/src/shared/rte-extensions/TextEffects.js +96 -0
  241. package/lib/src/shared/rte-extensions/ViewDomParser.d.ts +2 -0
  242. package/lib/src/shared/rte-extensions/ViewDomParser.js +21 -0
  243. package/lib/src/shared/rte-extensions.util.d.ts +25 -0
  244. package/lib/src/{brand-page-maker/composables/rich-text-editor/getRteExtensions.js → shared/rte-extensions.util.js} +62 -7
  245. package/lib/src/shared/rte-link.util.d.ts +1 -0
  246. package/lib/src/shared/rte-link.util.js +1 -0
  247. package/lib/src/shared/rte-render.util.d.ts +112 -0
  248. package/lib/src/shared/rte-render.util.js +255 -0
  249. package/lib/src/shared/rte-shape.util.d.ts +6 -0
  250. package/lib/src/shared/rte-shape.util.js +18 -0
  251. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +23 -1
  252. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +1 -0
  253. package/lib/src/shared/side-bar/store/side-bar-store.d.ts +2 -0
  254. package/lib/src/shared/side-bar/store/side-bar-store.js +9 -0
  255. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +176 -15
  256. package/lib/src/shared/style-settings/components/StyleSettings.mixin.js +7 -1
  257. package/lib/src/shared/style-settings/store/style-settings-store.d.ts +1 -9
  258. package/lib/src/shared/style-settings/store/style-settings-store.js +3 -33
  259. package/lib/src/shared/style-settings/text-style-size-order.d.ts +2 -0
  260. package/lib/src/shared/style-settings/text-style-size-order.js +13 -0
  261. package/lib/src/shared/text-role-typography.util.d.ts +64 -0
  262. package/lib/src/shared/text-role-typography.util.js +183 -0
  263. package/lib/src/utils/minify-brand-page-metadata.d.ts +16 -1
  264. package/lib/src/utils/minify-brand-page-metadata.js +31 -9
  265. package/package.json +1 -1
  266. package/src/brand-page/__fixtures__/migration-22-v21/edited-brandsite-sections.v21.json +982 -0
  267. package/src/brand-page/__fixtures__/migration-22-v21/new-brandcontact-every-section.v21.json +1231 -0
  268. package/src/brand-page/__fixtures__/migration-22-v21/new-brandpage-every-section.v21.json +1231 -0
  269. package/src/brand-page/__fixtures__/migration-22-v21/new-brandsite-every-section.v21.json +1243 -0
  270. package/src/brand-page/__fixtures__/migration-22-v21/real-brandcontact.v21.json +755 -0
  271. package/src/brand-page/__fixtures__/migration-22-v21/real-brandpage-general-link.v21.json +527 -0
  272. package/src/brand-page/__fixtures__/migration-22-v21/real-brandpage-links.v21.json +755 -0
  273. package/src/brand-page/__fixtures__/migration-22-v21/real-brandpage-social-links.v21.json +514 -0
  274. package/src/brand-page/__fixtures__/migration-22-v21/real-brandsite-about.v21.json +459 -0
  275. package/src/brand-page/__fixtures__/migration-22-v21/real-brandsite-footer.v21.json +469 -0
  276. package/src/brand-page/__fixtures__/migration-22-v21/real-brandsite-header-banner.v21.json +481 -0
  277. package/src/brand-page/__fixtures__/migration-22-v21/real-brandsite-sections.v21.json +800 -0
  278. package/src/brand-page/__fixtures__/production-text-style-resolver.fixture.ts +52 -0
  279. package/src/brand-page/components/about-section/AboutSection.vue.test.ts +0 -10
  280. package/src/brand-page/components/contact-form/ContactForm.mixin.test.ts +127 -0
  281. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +31 -14
  282. package/src/brand-page/components/contact-form/ContactForm.vue +26 -12
  283. package/src/brand-page/components/contact-form/ContactForm.vue.test.ts +60 -0
  284. package/src/brand-page/components/mailing-list/MailingList.mixin.test.ts +92 -0
  285. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +28 -3
  286. package/src/brand-page/components/mailing-list/MailingList.vue +9 -4
  287. package/src/brand-page/components/mailing-list/MailingList.vue.test.ts +63 -0
  288. package/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.mixin.ts +51 -1
  289. package/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.test.ts +114 -0
  290. package/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.vue +8 -2
  291. package/src/brand-page/components/navigation/navigation-carousel/NavigationCarousel.test.ts +182 -0
  292. package/src/brand-page/components/navigation/navigation-carousel/NavigationCarousel.vue +58 -12
  293. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.ts +40 -3
  294. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.vue +15 -7
  295. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.vue.test.ts +133 -3
  296. package/src/brand-page/components/page/Page.mixin.ts +41 -34
  297. package/src/brand-page/components/page/Page.vue +17 -6
  298. package/src/brand-page/components/page/Page.vue.test.ts +91 -1
  299. package/src/brand-page/components/page-footer/PageFooter.mixin.ts +32 -2
  300. package/src/brand-page/components/page-footer/PageFooter.test.ts +79 -0
  301. package/src/brand-page/components/page-footer/PageFooter.vue +12 -4
  302. package/src/brand-page/components/payment/Payment.mixin.ts +34 -2
  303. package/src/brand-page/components/payment/Payment.test.ts +188 -0
  304. package/src/brand-page/components/payment/Payment.vue +12 -5
  305. package/src/brand-page/components/payment/RequestPaymentStripe.vue +1 -0
  306. package/src/brand-page/components/payment/support-me/SupportMe.mixin.ts +49 -2
  307. package/src/brand-page/components/payment/support-me/SupportMe.test.ts +100 -0
  308. package/src/brand-page/components/payment/support-me/SupportMe.vue +7 -1
  309. package/src/brand-page/components/payment/support-me/SupportMe.vue.test.ts +66 -0
  310. package/src/brand-page/components/save-contact/SaveContactWidget.test.ts +100 -0
  311. package/src/brand-page/components/save-contact/SaveContactWidget.vue +6 -3
  312. package/src/brand-page/components/shop/PaymentModal.vue +2 -6
  313. package/src/brand-page/components/shop/PaymentShippingAddress.vue +6 -0
  314. package/src/brand-page/components/shop/Shop.vue +15 -2
  315. package/src/brand-page/components/shop/Shop.vue.test.ts +74 -2
  316. package/src/brand-page/components/social-links/SocialLinks.stories.ts +0 -3
  317. package/src/brand-page/components/social-links/SocialLinks.vue.test.ts +0 -3
  318. package/src/brand-page/components/testimonial-section/__fixtures__/data.ts +0 -3
  319. package/src/brand-page/components/text/Text.stories.ts +0 -17
  320. package/src/brand-page/components/text-wrapper/TextWrapper.parity.test.ts +136 -0
  321. package/src/brand-page/components/text-wrapper/TextWrapper.test.ts +358 -0
  322. package/src/brand-page/components/text-wrapper/TextWrapper.vue +82 -22
  323. package/src/brand-page/constants/font.constants.ts +37 -0
  324. package/src/brand-page/models/brand-page-context.model.ts +13 -0
  325. package/src/brand-page/models/footer-icon-color.test.ts +22 -0
  326. package/src/brand-page/models/index.ts +50 -28
  327. package/src/brand-page/models/navigation-styles.model.test.ts +77 -1
  328. package/src/brand-page/models/navigation-styles.model.ts +26 -9
  329. package/src/brand-page/models/payment.model.ts +15 -6
  330. package/src/brand-page/models/styles.model.test.ts +104 -0
  331. package/src/brand-page/models/styles.model.ts +181 -47
  332. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +619 -115
  333. package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +150 -9
  334. package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +300 -18
  335. package/src/brand-page/utils/color-palette.util.test.ts +126 -1
  336. package/src/brand-page/utils/color-palette.util.ts +92 -26
  337. package/src/brand-page/utils/color.util.test.ts +62 -29
  338. package/src/brand-page/utils/color.util.ts +77 -14
  339. package/src/brand-page/utils/container-text-color.util.test.ts +672 -26
  340. package/src/brand-page/utils/container-text-color.util.ts +472 -46
  341. package/src/brand-page/utils/index.ts +1 -0
  342. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/edited-brandsite-sections.v22.json +1191 -0
  343. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/new-brandcontact-every-section.v22.json +2026 -0
  344. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/new-brandpage-every-section.v22.json +2017 -0
  345. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/new-brandsite-every-section.v22.json +2031 -0
  346. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandcontact.v22.json +1145 -0
  347. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandpage-general-link.v22.json +645 -0
  348. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandpage-links.v22.json +1136 -0
  349. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandpage-social-links.v22.json +662 -0
  350. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-about.v22.json +638 -0
  351. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-footer.v22.json +610 -0
  352. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-header-banner.v22.json +660 -0
  353. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-sections.v22.json +1132 -0
  354. package/src/brand-page/utils/migration/migration-01.ts +293 -237
  355. package/src/brand-page/utils/migration/migration-02.ts +8 -1
  356. package/src/brand-page/utils/migration/migration-20.ts +6 -3
  357. package/src/brand-page/utils/migration/migration-20_5.test.ts +5 -2
  358. package/src/brand-page/utils/migration/migration-21.test.ts +34 -0
  359. package/src/brand-page/utils/migration/migration-21.ts +46 -10
  360. package/src/brand-page/utils/migration/migration-22.fixed-input.test.ts +43 -0
  361. package/src/brand-page/utils/migration/migration-22.test.ts +4103 -0
  362. package/src/brand-page/utils/migration/migration-22.text-font-family.test.ts +72 -0
  363. package/src/brand-page/utils/migration/migration-22.ts +1336 -0
  364. package/src/brand-page/utils/migration.util.test.ts +146 -32
  365. package/src/brand-page/utils/migration.util.ts +18 -0
  366. package/src/brand-page/utils/model.util.ts +4 -0
  367. package/src/brand-page/utils/personalisation.util.test.ts +148 -3
  368. package/src/brand-page/utils/personalisation.util.ts +9 -1
  369. package/src/brand-page/utils/rte-role-lift.util.ts +409 -0
  370. package/src/brand-page/utils/style.util.test.ts +35 -2
  371. package/src/brand-page/utils/style.util.ts +45 -11
  372. package/src/brand-page/utils/text-role-css.util.test.ts +525 -0
  373. package/src/brand-page/utils/text-role-css.util.ts +321 -0
  374. package/src/brand-page/utils/text-role-reconnect.util.test.ts +604 -0
  375. package/src/brand-page/utils/text-role-reconnect.util.ts +727 -0
  376. package/src/brand-page/utils/text-style.util.test.ts +305 -0
  377. package/src/brand-page/utils/text-style.util.ts +198 -24
  378. package/src/brand-page/utils/view-model.page-data.test.ts +232 -0
  379. package/src/brand-page/utils/view-model.util.test.ts +954 -133
  380. package/src/brand-page/utils/view-model.util.ts +187 -139
  381. package/src/brand-page/view-models.ts +4 -0
  382. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.blank-site.test.ts +57 -0
  383. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +9 -5
  384. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +0 -10
  385. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/content-settings-items.fixture.ts +0 -1
  386. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.ts +0 -44
  387. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +253 -200
  388. package/src/brand-page-maker/composables/ai-chat/ai-builder-experiment.test.ts +82 -0
  389. package/src/brand-page-maker/composables/ai-chat/ai-builder-experiment.ts +19 -0
  390. package/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.ts +2 -0
  391. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +19 -0
  392. package/src/brand-page-maker/composables/rich-text-editor/block-typography.test.ts +519 -0
  393. package/src/brand-page-maker/composables/rich-text-editor/extensions/FontFamily.test.ts +1 -1
  394. package/src/brand-page-maker/composables/rich-text-editor/extensions/MaxLength.test.ts +26 -1
  395. package/src/brand-page-maker/composables/rich-text-editor/extensions/RoleTypographyFill.test.ts +110 -0
  396. package/src/brand-page-maker/composables/rich-text-editor/extensions/RoleTypographyFill.ts +99 -0
  397. package/src/brand-page-maker/composables/rich-text-editor/extensions/RteClipboard.ts +397 -0
  398. package/src/brand-page-maker/composables/rich-text-editor/extensions/ViewDomParser.test.ts +139 -0
  399. package/src/brand-page-maker/composables/rich-text-editor/font.ts +36 -5
  400. package/src/brand-page-maker/composables/rich-text-editor/formatting.test.ts +375 -1
  401. package/src/brand-page-maker/composables/rich-text-editor/formatting.ts +301 -17
  402. package/src/brand-page-maker/composables/rich-text-editor/hyperlink.test.ts +82 -1
  403. package/src/brand-page-maker/composables/rich-text-editor/hyperlink.ts +28 -34
  404. package/src/brand-page-maker/composables/rich-text-editor/keepMarksOnEmpty.test.ts +80 -0
  405. package/src/brand-page-maker/composables/rich-text-editor/keepMarksOnEmpty.ts +75 -0
  406. package/src/brand-page-maker/composables/rich-text-editor/spacing.ts +31 -6
  407. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.test.ts +2485 -0
  408. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +435 -337
  409. package/src/brand-page-maker/constants/config-settings-constant.ts +0 -6
  410. package/src/brand-page-maker/convertors/text-css-style-options.convertor.test.ts +43 -0
  411. package/src/brand-page-maker/convertors/text-css-style-options.convertor.ts +6 -2
  412. package/src/brand-page-maker/convertors/text-size-value.convertor.test.ts +24 -0
  413. package/src/brand-page-maker/convertors/text-size-value.convertor.ts +17 -13
  414. package/src/brand-page-maker/default-getters/payment-text-and-border-color.default-getter.ts +7 -22
  415. package/src/brand-page-maker/default-getters/text-color.default-getter.ts +5 -21
  416. package/src/brand-page-maker/models/content-settings.test.ts +708 -0
  417. package/src/brand-page-maker/models/content-settings.ts +133 -82
  418. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.test.ts +63 -1
  419. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.ts +16 -3
  420. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.test.ts +34 -0
  421. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.ts +4 -2
  422. package/src/brand-page-maker/stores/ai-thread/ai-website-builder-thread-store.ts +30 -0
  423. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +185 -1
  424. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +22 -34
  425. package/src/brand-page-maker/stores/history/history-store.ts +35 -2
  426. package/src/brand-page-maker/utils/__snapshots__/apply-color-strategy.golden.test.ts.snap +528 -0
  427. package/src/brand-page-maker/utils/__snapshots__/rte-render-parity.test.ts.snap +12 -0
  428. package/src/brand-page-maker/utils/apply-color-strategy.golden.test.ts +2 -0
  429. package/src/brand-page-maker/utils/apply-color-strategy.test.ts +181 -3
  430. package/src/brand-page-maker/utils/apply-color-strategy.ts +36 -4
  431. package/src/brand-page-maker/utils/index.ts +2 -1
  432. package/src/brand-page-maker/utils/rich-text-editor.util.test.ts +447 -410
  433. package/src/brand-page-maker/utils/rich-text-editor.util.ts +610 -506
  434. package/src/brand-page-maker/utils/rte-authoring.util.test.ts +244 -0
  435. package/src/brand-page-maker/utils/rte-authoring.util.ts +175 -0
  436. package/src/brand-page-maker/utils/rte-clipboard.util.test.ts +558 -0
  437. package/src/brand-page-maker/utils/rte-clipboard.util.ts +473 -0
  438. package/src/brand-page-maker/utils/rte-features.test.ts +99 -3
  439. package/src/brand-page-maker/utils/rte-render-parity.test.ts +1 -1
  440. package/src/brand-page-maker/utils/rte-render.util.test.ts +230 -0
  441. package/src/brand-page-maker/utils/rte-sanitize-json.test.ts +1 -1
  442. package/src/brand-page-maker/utils/rte-sanitize.util.ts +14 -3
  443. package/src/brand-page-maker/utils/rte-schema-version.test.ts +102 -0
  444. package/src/bundles/bundled-translations.de-DE.json +21 -2
  445. package/src/bundles/bundled-translations.es-ES.json +21 -2
  446. package/src/bundles/bundled-translations.fr-CA.json +21 -2
  447. package/src/bundles/bundled-translations.fr-FR.json +21 -2
  448. package/src/bundles/bundled-translations.json +21 -2
  449. package/src/bundles/bundled-translations.pt-BR.json +21 -2
  450. package/src/bundles/bundled-translations.pt-PT.json +21 -2
  451. package/src/clients/ai-assistant-client.ts +13 -18
  452. package/src/composables/useTranslate.ts +2 -1
  453. package/src/lib.ts +2 -2
  454. package/src/metadata-builder/builders/footer-builder.test.ts +70 -45
  455. package/src/metadata-builder/builders/footer-builder.ts +4 -8
  456. package/src/metadata-builder/builders/global-role-propagation.test.ts +907 -0
  457. package/src/metadata-builder/builders/global-role-propagation.ts +430 -0
  458. package/src/metadata-builder/builders/global-styles-builder.test.ts +1020 -0
  459. package/src/metadata-builder/builders/global-styles-builder.ts +194 -48
  460. package/src/metadata-builder/builders/header-builder.test.ts +112 -40
  461. package/src/metadata-builder/builders/header-builder.ts +18 -8
  462. package/src/metadata-builder/builders/section-builders/about-section-builder.ts +5 -3
  463. package/src/metadata-builder/builders/section-builders/banner-section-builder.ts +5 -3
  464. package/src/metadata-builder/builders/section-builders/booking-section-builder.ts +5 -3
  465. package/src/metadata-builder/builders/section-builders/contact-form-builder.ts +7 -4
  466. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +5 -3
  467. package/src/metadata-builder/builders/section-builders/mailing-list-builder.ts +3 -2
  468. package/src/metadata-builder/builders/section-builders/mailing-list-section-builder.ts +3 -2
  469. package/src/metadata-builder/builders/section-builders/profile-section-builder.ts +7 -7
  470. package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +5 -3
  471. package/src/metadata-builder/builders/section-builders/social-links-builder.test.ts +2 -2
  472. package/src/metadata-builder/builders/section-builders/social-links-builder.ts +21 -10
  473. package/src/metadata-builder/builders/section-builders/support-me-builder.test.ts +10 -0
  474. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +3 -2
  475. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +111 -61
  476. package/src/metadata-builder/builders/section-field-maps.ts +1 -0
  477. package/src/metadata-builder/builders/section-field-utils.test.ts +545 -2
  478. package/src/metadata-builder/builders/section-field-utils.ts +202 -69
  479. package/src/metadata-builder/builders/section-rules/global-styles.rules.ts +38 -13
  480. package/src/metadata-builder/builders/section-rules/social-links.rules.ts +5 -0
  481. package/src/metadata-builder/helpers/rte.helpers.test.ts +101 -0
  482. package/src/metadata-builder/helpers/rte.helpers.ts +129 -43
  483. package/src/metadata-builder/metadata-executor.test.ts +167 -0
  484. package/src/metadata-builder/metadata-executor.ts +34 -1
  485. package/src/metadata-builder/models.ts +2 -0
  486. package/src/metadata-builder/parsers/ai-toolcall-parser.ts +23 -7
  487. package/src/metadata-builder/parsers/section-tool-arguments.ts +21 -1
  488. package/src/metadata-builder/sanitizers/__tests__/section-args-validator.test.ts +215 -0
  489. package/src/metadata-builder/sanitizers/rte-schema-check.ts +1 -1
  490. package/src/metadata-builder/sanitizers/sanitizer-rules.ts +4 -8
  491. package/src/metadata-builder/sanitizers/section-args-validator.ts +136 -53
  492. package/src/shared/color-palette/section-color-matches.test.ts +15 -11
  493. package/src/shared/color-palette/section-color-matches.ts +9 -28
  494. package/src/shared/color-strategies/color-strategies.ts +35 -0
  495. package/src/shared/color-strategies/rte-color.test.ts +1 -1
  496. package/src/shared/color-strategies/rte-color.ts +19 -0
  497. package/src/shared/color-strategies/rte-field-pairs.test.ts +26 -5
  498. package/src/shared/color-strategies/rte-field-pairs.ts +33 -0
  499. package/src/shared/content-settings/components/color-matches-panel/ColorMatchesPanel.test.ts +43 -66
  500. package/src/shared/content-settings/components/color-matches-panel/ColorMatchesPanel.vue +7 -1
  501. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +1 -48
  502. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +33 -7
  503. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.test.ts +128 -1
  504. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.ts +0 -6
  505. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.test.ts +56 -3
  506. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +11 -4
  507. package/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.test.ts +335 -25
  508. package/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.ts +248 -70
  509. package/src/shared/content-settings/components/text-style-field/TextStyleField.vue +113 -25
  510. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.de-DE.json +17 -10
  511. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.es-ES.json +17 -10
  512. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.fr-CA.json +17 -10
  513. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.fr-FR.json +17 -10
  514. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.json +8 -1
  515. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.pt-BR.json +17 -10
  516. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.pt-PT.json +17 -10
  517. package/src/shared/content-settings/components/text-style-role-dropdown/TextStyleRoleDropdown.test.ts +141 -0
  518. package/src/shared/content-settings/components/text-style-role-dropdown/TextStyleRoleDropdown.vue +136 -0
  519. package/src/shared/content-settings/store/content-settings-store.test.ts +491 -6
  520. package/src/shared/content-settings/store/content-settings-store.ts +159 -17
  521. package/src/shared/navigation-style-settings/store/index.test.ts +295 -0
  522. package/src/shared/navigation-style-settings/store/index.ts +65 -15
  523. package/src/shared/page-settings/components/page-settings-section-styles/HeaderButtonSettings.test.ts +44 -4
  524. package/src/shared/page-settings/components/page-settings-section-styles/HeaderButtonSettings.vue +13 -4
  525. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.navigation.test.ts +89 -0
  526. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.text-style.test.ts +91 -0
  527. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.ts +14 -2
  528. package/src/shared/page-settings/store/page-settings-store.text-style.test.ts +84 -0
  529. package/src/shared/page-settings/store/page-settings-store.ts +30 -1
  530. package/src/shared/rte-extensions/AutoLink.test.ts +98 -0
  531. package/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/AutoLink.ts +87 -58
  532. package/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/MaxLength.ts +4 -1
  533. package/src/shared/rte-extensions/TextEffects.ts +151 -0
  534. package/src/shared/rte-extensions/ViewDomParser.ts +27 -0
  535. package/src/{brand-page-maker/composables/rich-text-editor/getRteExtensions.ts → shared/rte-extensions.util.ts} +66 -9
  536. package/src/shared/rte-link.util.ts +2 -0
  537. package/src/shared/rte-render.util.ts +385 -0
  538. package/src/shared/rte-shape.util.ts +29 -0
  539. package/src/shared/side-bar/store/side-bar-store.test.ts +27 -1
  540. package/src/shared/side-bar/store/side-bar-store.ts +11 -0
  541. package/src/shared/style-settings/components/StyleSettings.mixin.ts +7 -3
  542. package/src/shared/style-settings/components/StyleSettings.test.ts +116 -0
  543. package/src/shared/style-settings/components/StyleSettings.vue +74 -25
  544. package/src/shared/style-settings/components/i18n/style-settings.de-DE.json +32 -20
  545. package/src/shared/style-settings/components/i18n/style-settings.es-ES.json +32 -20
  546. package/src/shared/style-settings/components/i18n/style-settings.fr-CA.json +32 -20
  547. package/src/shared/style-settings/components/i18n/style-settings.fr-FR.json +32 -20
  548. package/src/shared/style-settings/components/i18n/style-settings.json +13 -3
  549. package/src/shared/style-settings/components/i18n/style-settings.pt-BR.json +32 -20
  550. package/src/shared/style-settings/components/i18n/style-settings.pt-PT.json +32 -20
  551. package/src/shared/style-settings/components/text-style-options-settings-with-state/TextStyleOptionsSettingsWithState.vue +14 -34
  552. package/src/shared/style-settings/store/style-settings-store.ts +3 -49
  553. package/src/shared/style-settings/text-style-size-order.test.ts +76 -0
  554. package/src/shared/style-settings/text-style-size-order.ts +28 -0
  555. package/src/shared/text-role-typography.util.ts +277 -0
  556. package/src/utils/minify-brand-page-metadata.test.ts +102 -7
  557. package/src/utils/minify-brand-page-metadata.ts +62 -8
  558. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/AutoLink.d.ts +0 -2
  559. package/lib/src/brand-page-maker/composables/rich-text-editor/getRteExtensions.d.ts +0 -28
  560. package/lib/src/brand-page-maker/utils/rte-render.util.d.ts +0 -63
  561. package/lib/src/brand-page-maker/utils/rte-render.util.js +0 -106
  562. package/lib/src/brand-page-maker/utils/rte-shape.d.ts +0 -18
  563. package/lib/src/brand-page-maker/utils/rte-shape.js +0 -21
  564. package/lib/src/metadata-builder/builders/global-font-propagation.d.ts +0 -41
  565. package/lib/src/metadata-builder/builders/global-font-propagation.js +0 -146
  566. package/src/brand-page/models/brand-page-context.model.test.ts +0 -38
  567. package/src/brand-page-maker/utils/rte-render.util.ts +0 -179
  568. package/src/brand-page-maker/utils/rte-shape.ts +0 -29
  569. package/src/clients/ai-assistant-client.test.ts +0 -135
  570. package/src/metadata-builder/builders/global-font-propagation.test.ts +0 -401
  571. package/src/metadata-builder/builders/global-font-propagation.ts +0 -238
  572. package/src/shared/style-settings/components/StyleSettingsSection.vue +0 -8
  573. /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/FontFamily.d.ts +0 -0
  574. /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/FontFamily.js +0 -0
  575. /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/LetterSpacing.d.ts +0 -0
  576. /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/LetterSpacing.js +0 -0
  577. /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/MaxLength.d.ts +0 -0
  578. /package/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/FontFamily.ts +0 -0
  579. /package/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/LetterSpacing.ts +0 -0
@@ -1,6 +1,7 @@
1
- import { defineComponent } from 'vue';
1
+ import { defineComponent, inject } from 'vue';
2
2
  import { getRenderText } from '@brand-page/utils';
3
3
  import { FOOTER_DISPLAY } from '../../constants';
4
+ import { TEXT_ROLE_OPTIONS_KEY, roleTypographyStyle, roleClassFor, roleStyleFor, } from '../../utils/text-role-css.util';
4
5
  export default defineComponent({
5
6
  props: {
6
7
  viewModel: {
@@ -22,6 +23,14 @@ export default defineComponent({
22
23
  },
23
24
  },
24
25
  emits: ['on-logo-click', 'footer-container-click'],
26
+ // A mixin's own `setup()` is never run by Vue's `mixins:` merge — `PageFooter.vue` invokes
27
+ // this one itself and spreads its return into its own `setup()`.
28
+ setup() {
29
+ const roleOptions = inject(TEXT_ROLE_OPTIONS_KEY, undefined);
30
+ return {
31
+ roleOptions,
32
+ };
33
+ },
25
34
  computed: {
26
35
  containerStyle() {
27
36
  return this.viewModel.backgroundStyle;
@@ -41,6 +50,17 @@ export default defineComponent({
41
50
  }
42
51
  return getRenderText(this.viewModel.copyrightText);
43
52
  },
53
+ copyrightRoleType() {
54
+ return this.viewModel.copyrightStyle?.textStyleType;
55
+ },
56
+ copyrightRoleClass() {
57
+ return roleClassFor(this.copyrightRoleType);
58
+ },
59
+ copyrightStyle() {
60
+ const own = this.viewModel.copyrightStyle;
61
+ const roleStyle = roleStyleFor(this.copyrightRoleType, this.roleOptions);
62
+ return { ...own, ...roleTypographyStyle(own, roleStyle) };
63
+ },
44
64
  },
45
65
  methods: {
46
66
  onFooterContainerClick() {
@@ -1,5 +1,5 @@
1
1
  import type { PropType } from 'vue';
2
- import type { BrandPageContext, CheckoutInformation, CreateCartResult, PaymentConfig, PaymentOption } from '@brand-page/models';
2
+ import type { BrandPageContext, CheckoutInformation, CreateCartResult, PaymentConfig, PaymentOption, TextStyleOptions } from '@brand-page/models';
3
3
  import type { RequestPaymentViewModel, SupportMeViewModel } from '@brand-page/view-models';
4
4
  export declare const paymentState: {
5
5
  readonly CreatingCart: "creating-cart";
@@ -34,7 +34,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
34
34
  type: PropType<PaymentRequestDetails>;
35
35
  required: true;
36
36
  };
37
- }>, {}, {
37
+ }>, {
38
+ roleOptions: import("vue").ComputedRef<TextStyleOptions | undefined> | undefined;
39
+ }, {
38
40
  paymentState: {
39
41
  readonly CreatingCart: "creating-cart";
40
42
  readonly IncompleteConfig: "incomplete-config";
@@ -48,6 +50,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
48
50
  state: State;
49
51
  }, {
50
52
  buttonStyle(): BrandPageCssStyle;
53
+ continueButtonRoleClass(): string | undefined;
51
54
  currencySymbol(): string;
52
55
  isPaymentOptionSelectionContinueEnabled(): boolean;
53
56
  isPaymentOptionsVisible(): boolean;
@@ -1,10 +1,11 @@
1
- import { defineComponent } from 'vue';
1
+ import { defineComponent, inject } 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
5
  import { isPreviewMode } from '@brand-page/utils';
6
6
  import { sectionFrameStyle } from '@brand-page/utils/button.util';
7
7
  import { paymentTr } from '@src/composables/useTranslate';
8
+ import { TEXT_ROLE_OPTIONS_KEY, roleTypographyStyle, roleClassFor, roleStyleFor, } from '@brand-page/utils/text-role-css.util';
8
9
  const DEFAULT_PAYMENT_SUCCESS_MESSAGE = paymentTr(`defaultPaymentSuccessMessage`);
9
10
  const PAYMENT_CONFIG_ACTIVE = 'Active';
10
11
  export const paymentState = {
@@ -33,6 +34,14 @@ export default defineComponent({
33
34
  required: true,
34
35
  },
35
36
  },
37
+ setup() {
38
+ // BP-5969: the live role options, provided by `Page`. Absent (rendered outside Page) →
39
+ // the button box bakes the button text style's own values, as before this change.
40
+ const roleOptions = inject(TEXT_ROLE_OPTIONS_KEY, undefined);
41
+ return {
42
+ roleOptions,
43
+ };
44
+ },
36
45
  data: () => ({
37
46
  paymentState,
38
47
  cart: undefined,
@@ -44,6 +53,9 @@ export default defineComponent({
44
53
  buttonStyle() {
45
54
  return this.viewModel.buttonStyles.style;
46
55
  },
56
+ continueButtonRoleClass() {
57
+ return roleClassFor(this.viewModel.buttonTextStyle?.textStyleType);
58
+ },
47
59
  currencySymbol() {
48
60
  return this.paymentConfig.paymentConfig?.defaultCurrencySymbol || '';
49
61
  },
@@ -90,7 +102,15 @@ export default defineComponent({
90
102
  buttonStyle.color = textColor;
91
103
  buttonStyle.backgroundColor = buttonStyle.backgroundColor;
92
104
  }
93
- return { ...buttonStyle, ...this.viewModel.buttonTextStyle };
105
+ // The label's TextWrapper applies the size; an em size here too would multiply.
106
+ const roleStyle = roleStyleFor(this.viewModel.buttonTextStyle?.textStyleType, this.roleOptions);
107
+ return {
108
+ ...buttonStyle,
109
+ ...roleTypographyStyle(this.viewModel.buttonTextStyle, roleStyle, {
110
+ omit: ['fontSize'],
111
+ }),
112
+ color: this.viewModel.buttonTextStyle?.color ?? buttonStyle.color,
113
+ };
94
114
  },
95
115
  paymentOptionButtonStyle() {
96
116
  const buttonStyle = { ...this.viewModel.buttonStyles?.style };
@@ -1,5 +1,5 @@
1
1
  import type { PropType } from 'vue';
2
- import type { BrandPageContext, PaymentOption } from '../../../models';
2
+ import type { BrandPageContext, PaymentOption, TextStyleOptions } from '../../../models';
3
3
  import type { SupportMeViewModel } from '../../../view-models';
4
4
  import type { PaymentRequestDetails } from '../Payment.mixin';
5
5
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
@@ -11,7 +11,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
11
11
  type: PropType<SupportMeViewModel>;
12
12
  required: true;
13
13
  };
14
- }>, {}, {
14
+ }>, {
15
+ roleOptions: import("vue").ComputedRef<TextStyleOptions | undefined> | undefined;
16
+ }, {
15
17
  customerMessage: string | undefined;
16
18
  selectedPaymentOptionIds: string[];
17
19
  prevCustomAmount: string;
@@ -30,6 +32,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
30
32
  currencySymbol(): string;
31
33
  currencyCodeDisplay(): string;
32
34
  paymentOptionButtonStyle(): BrandPageCssStyle;
35
+ customerMessageBlockRoleClass(): string | undefined;
36
+ customerMessageBlockStyle(): BrandPageCssStyle;
33
37
  tippingLabel(): string;
34
38
  customAmountLabel(): string;
35
39
  }, {
@@ -1,8 +1,9 @@
1
- import { defineComponent } from 'vue';
1
+ import { defineComponent, inject } from 'vue';
2
2
  import { SUPPORT_ME_CUSTOM_PRODUCT_NAME } from '../../../constants';
3
3
  import { isPaymentAmountValid, contentPaddingStyle as toContentPaddingStyle, } from '../../../utils';
4
4
  import { DEFAULT_CURRENCY_SYMBOL, DEFAULT_CURRENCY_CODE, } from '../../../constants';
5
5
  import { paymentTr } from '@src/composables/useTranslate';
6
+ import { TEXT_ROLE_OPTIONS_KEY, roleTypographyStyle, roleClassFor, roleStyleFor, } from '@brand-page/utils/text-role-css.util';
6
7
  const MAX_CUSTOM_MESSAGE_CHARS = 500;
7
8
  const MINIMUM_CUSTOM_AMOUNT = 0.1;
8
9
  export default defineComponent({
@@ -16,6 +17,14 @@ export default defineComponent({
16
17
  required: true,
17
18
  },
18
19
  },
20
+ setup() {
21
+ // BP-5969: the live role options, provided by `Page`. Absent (rendered outside Page) →
22
+ // the message block bakes its heading style's own values, as before this change.
23
+ const roleOptions = inject(TEXT_ROLE_OPTIONS_KEY, undefined);
24
+ return {
25
+ roleOptions,
26
+ };
27
+ },
19
28
  data() {
20
29
  return {
21
30
  customerMessage: undefined,
@@ -81,6 +90,28 @@ export default defineComponent({
81
90
  buttonStyle.borderWidth = undefined;
82
91
  return buttonStyle;
83
92
  },
93
+ customerMessageBlockRoleClass() {
94
+ return roleClassFor(this.viewModel.headingStyle?.textStyleType);
95
+ },
96
+ // The nested TextWrapper owns the label's size. The container retains the other heading
97
+ // properties so the input follows its surrounding visual treatment without compounding ems.
98
+ customerMessageBlockStyle() {
99
+ const roleStyle = roleStyleFor(this.viewModel.headingStyle?.textStyleType, this.roleOptions);
100
+ return {
101
+ ...roleTypographyStyle(this.viewModel.headingStyle, roleStyle, {
102
+ omit: ['fontSize'],
103
+ }),
104
+ ...(this.viewModel.headingStyle?.color
105
+ ? { color: this.viewModel.headingStyle.color }
106
+ : {}),
107
+ // The old template bound the whole heading style inline (`:style="headingStyle"`),
108
+ // which let a left/right heading alignment beat the block's static `tw-text-center` —
109
+ // `roleTypographyStyle` doesn't carry alignment, so it's kept here explicitly (S7).
110
+ ...(this.viewModel.headingStyle?.textAlign
111
+ ? { textAlign: this.viewModel.headingStyle.textAlign }
112
+ : {}),
113
+ };
114
+ },
84
115
  tippingLabel() {
85
116
  return paymentTr(`selectAnAmount`, {
86
117
  CURRENCY_CODE: this.currencyCodeDisplay,
@@ -49,9 +49,6 @@ const viewModel = {
49
49
  iconBackgroundStyles: {},
50
50
  backgroundStyles: {},
51
51
  titleStyle: {
52
- color: '#000000',
53
- fontSize: '2.25rem',
54
- fontWeight: 'bold',
55
52
  textAlign: 'center',
56
53
  },
57
54
  role: 'social-links',
@@ -37,9 +37,6 @@ export const viewModel = {
37
37
  },
38
38
  ],
39
39
  titleStyle: {
40
- color: 'rgba(0, 0, 0, 1)',
41
- fontSize: '2.25rem',
42
- fontWeight: 'bold',
43
40
  textAlign: 'center',
44
41
  },
45
42
  testimonialStyle: {
@@ -12,12 +12,7 @@ const BPviewModel = {
12
12
  textItems: [],
13
13
  type: 'text',
14
14
  textStyle: {
15
- fontSize: '1rem',
16
- lineHeight: '1.5rem',
17
- fontFamily: 'Lato',
18
15
  textAlign: 'left',
19
- overflowWrap: 'anywhere',
20
- wordBreak: 'normal',
21
16
  },
22
17
  columnStyle: '1',
23
18
  backgroundColor: {},
@@ -34,7 +29,6 @@ const BSviewModel = {
34
29
  id: 'text-item-1',
35
30
  text: 'lorem ipsum',
36
31
  textStyle: {
37
- fontSize: '1rem',
38
32
  textAlign: 'left',
39
33
  textStyleType: 'paragraphs',
40
34
  },
@@ -43,7 +37,6 @@ const BSviewModel = {
43
37
  id: 'text-item-2',
44
38
  text: 'lorem ipsum',
45
39
  textStyle: {
46
- fontSize: '1rem',
47
40
  textAlign: 'left',
48
41
  textStyleType: 'paragraphs',
49
42
  },
@@ -51,12 +44,7 @@ const BSviewModel = {
51
44
  ],
52
45
  type: 'text',
53
46
  textStyle: {
54
- fontSize: '1rem',
55
- lineHeight: '1.5rem',
56
- fontFamily: 'Lato',
57
47
  textAlign: 'left',
58
- overflowWrap: 'anywhere',
59
- wordBreak: 'normal',
60
48
  },
61
49
  columnStyle: '2',
62
50
  backgroundColor: {},
@@ -71,12 +59,7 @@ const BSEmptyTextItem = {
71
59
  textItems: [],
72
60
  type: 'text',
73
61
  textStyle: {
74
- fontSize: '1rem',
75
- lineHeight: '1.5rem',
76
- fontFamily: 'Lato',
77
62
  textAlign: 'left',
78
- overflowWrap: 'anywhere',
79
- wordBreak: 'normal',
80
63
  },
81
64
  columnStyle: '1',
82
65
  backgroundColor: {},
@@ -2,6 +2,16 @@ export declare const DISPLAY_TEXT_TITLE = "Titles";
2
2
  export declare const DISPLAY_TEXT_HEADINGS = "Headings";
3
3
  export declare const DISPLAY_TEXT_BODY = "Paragraphs";
4
4
  export declare const DISPlAY_TEXT_BUTTONS = "Button Texts";
5
+ export declare const DISPLAY_TEXT_HEADING_1 = "Heading 1";
6
+ export declare const DISPLAY_TEXT_HEADING_2 = "Heading 2";
7
+ export declare const DISPLAY_TEXT_HEADING_3 = "Heading 3";
8
+ export declare const DISPLAY_TEXT_HEADING_4 = "Heading 4";
9
+ export declare const DISPLAY_TEXT_HEADING_5 = "Heading 5";
10
+ export declare const DISPLAY_TEXT_HEADING_6 = "Heading 6";
11
+ export declare const DISPLAY_TEXT_PARAGRAPH_1 = "Paragraph 1";
12
+ export declare const DISPLAY_TEXT_PARAGRAPH_2 = "Paragraph 2";
13
+ export declare const DISPLAY_TEXT_PARAGRAPH_3 = "Paragraph 3";
14
+ export declare const DISPLAY_TEXT_BUTTON = "Button";
5
15
  export declare const DEFAULT_TEXT_DECORATION: undefined;
6
16
  export declare const DEFAULT_FONT_STYLE: undefined;
7
17
  export declare const FONT_SIZE_TITLE = "2.25em";
@@ -13,6 +23,58 @@ export declare const FONT_WEIGHT_NORMAL = "normal";
13
23
  export declare const LINE_HEIGHT_TITLE = "1.3";
14
24
  export declare const LINE_HEIGHT_HEADINGS = "1.4";
15
25
  export declare const LINE_HEIGHT_BODY = "1.5";
26
+ export declare const TEXT_ROLE_STYLE_DEFAULTS: {
27
+ readonly heading1: {
28
+ readonly fontSize: "6.875em";
29
+ readonly fontWeight: "bold";
30
+ readonly lineHeight: "1.2";
31
+ };
32
+ readonly heading2: {
33
+ readonly fontSize: "5.25em";
34
+ readonly fontWeight: "bold";
35
+ readonly lineHeight: "1.2";
36
+ };
37
+ readonly heading3: {
38
+ readonly fontSize: "3.1875em";
39
+ readonly fontWeight: "bold";
40
+ readonly lineHeight: "1.25";
41
+ };
42
+ readonly heading4: {
43
+ readonly fontSize: "2.1875em";
44
+ readonly fontWeight: "bold";
45
+ readonly lineHeight: "1.3";
46
+ };
47
+ readonly heading5: {
48
+ readonly fontSize: "1.4375em";
49
+ readonly fontWeight: "bold";
50
+ readonly lineHeight: "1.35";
51
+ };
52
+ readonly heading6: {
53
+ readonly fontSize: "1em";
54
+ readonly fontWeight: "bold";
55
+ readonly lineHeight: "1.4";
56
+ };
57
+ readonly paragraph1: {
58
+ readonly fontSize: "1.375em";
59
+ readonly fontWeight: "normal";
60
+ readonly lineHeight: "1.5";
61
+ };
62
+ readonly paragraph2: {
63
+ readonly fontSize: "1.125em";
64
+ readonly fontWeight: "normal";
65
+ readonly lineHeight: "1.5";
66
+ };
67
+ readonly paragraph3: {
68
+ readonly fontSize: "0.875em";
69
+ readonly fontWeight: "normal";
70
+ readonly lineHeight: "1.6";
71
+ };
72
+ readonly button: {
73
+ readonly fontSize: "1em";
74
+ readonly fontWeight: "normal";
75
+ readonly lineHeight: "1.2";
76
+ };
77
+ };
16
78
  export declare const DEFAULT_FONT_SIZE = 12;
17
79
  export declare const MIN_TEXT_SIZE_PX = 12;
18
80
  export declare const MAX_TEXT_SIZE_PX = 128;
@@ -3,6 +3,18 @@ export const DISPLAY_TEXT_TITLE = 'Titles';
3
3
  export const DISPLAY_TEXT_HEADINGS = 'Headings';
4
4
  export const DISPLAY_TEXT_BODY = 'Paragraphs';
5
5
  export const DISPlAY_TEXT_BUTTONS = 'Button Texts';
6
+ // BP-5969 — display names for the 10 global text roles (English fallback; the
7
+ // panel/picker use i18n `styleSettingsTr(<role>)`, these back it up).
8
+ export const DISPLAY_TEXT_HEADING_1 = 'Heading 1';
9
+ export const DISPLAY_TEXT_HEADING_2 = 'Heading 2';
10
+ export const DISPLAY_TEXT_HEADING_3 = 'Heading 3';
11
+ export const DISPLAY_TEXT_HEADING_4 = 'Heading 4';
12
+ export const DISPLAY_TEXT_HEADING_5 = 'Heading 5';
13
+ export const DISPLAY_TEXT_HEADING_6 = 'Heading 6';
14
+ export const DISPLAY_TEXT_PARAGRAPH_1 = 'Paragraph 1';
15
+ export const DISPLAY_TEXT_PARAGRAPH_2 = 'Paragraph 2';
16
+ export const DISPLAY_TEXT_PARAGRAPH_3 = 'Paragraph 3';
17
+ export const DISPLAY_TEXT_BUTTON = 'Button';
6
18
  export const DEFAULT_TEXT_DECORATION = undefined;
7
19
  export const DEFAULT_FONT_STYLE = undefined;
8
20
  export const FONT_SIZE_TITLE = '2.25em';
@@ -14,6 +26,29 @@ export const FONT_WEIGHT_NORMAL = 'normal';
14
26
  export const LINE_HEIGHT_TITLE = '1.3';
15
27
  export const LINE_HEIGHT_HEADINGS = '1.4';
16
28
  export const LINE_HEIGHT_BODY = '1.5';
29
+ // BP-5969 — §4 default typography for the 10 global text roles. Sizes in `em`
30
+ // (relative to the 16px root). Weights/letter-spacing are new: the legacy 4
31
+ // roles carried none, so these apply to new sites only — existing sites keep
32
+ // their persisted role definitions (migration-22 preserves appearance).
33
+ // Weight is strictly binary (BP-5969): headings default `bold`, body + button
34
+ // `normal`. No semibold tier — the RTE exposes only a normal/bold toggle, so the
35
+ // role defaults use the same `bold`/`normal` keywords that toggle (and every weight
36
+ // reader) speaks, not numeric weights.
37
+ //
38
+ // Sizes are a display scale in em @ 16px root; the px each em resolves to is noted
39
+ // inline. Headings anchor H1 110px → H6 16px; body runs 22/18/14; button stays 16px.
40
+ export const TEXT_ROLE_STYLE_DEFAULTS = {
41
+ heading1: { fontSize: '6.875em', fontWeight: 'bold', lineHeight: '1.2' }, // 110px
42
+ heading2: { fontSize: '5.25em', fontWeight: 'bold', lineHeight: '1.2' }, // 84px
43
+ heading3: { fontSize: '3.1875em', fontWeight: 'bold', lineHeight: '1.25' }, // 51px
44
+ heading4: { fontSize: '2.1875em', fontWeight: 'bold', lineHeight: '1.3' }, // 35px
45
+ heading5: { fontSize: '1.4375em', fontWeight: 'bold', lineHeight: '1.35' }, // 23px
46
+ heading6: { fontSize: '1em', fontWeight: 'bold', lineHeight: '1.4' }, // 16px
47
+ paragraph1: { fontSize: '1.375em', fontWeight: 'normal', lineHeight: '1.5' }, // 22px
48
+ paragraph2: { fontSize: '1.125em', fontWeight: 'normal', lineHeight: '1.5' }, // 18px
49
+ paragraph3: { fontSize: '0.875em', fontWeight: 'normal', lineHeight: '1.6' }, // 14px
50
+ button: { fontSize: '1em', fontWeight: 'normal', lineHeight: '1.2' }, // 16px
51
+ };
17
52
  export const DEFAULT_FONT_SIZE = 12;
18
53
  export const MIN_TEXT_SIZE_PX = 12;
19
54
  export const MAX_TEXT_SIZE_PX = 128;
@@ -36,9 +36,11 @@ export interface AbTestResult {
36
36
  }
37
37
  export declare const AB_TEST_KEYS: {
38
38
  BP_3926_FREEMIUM_WATERMARK: string;
39
+ BP_6136_V2_AI_BUILDER: string;
39
40
  };
40
41
  export interface AbTest {
41
42
  bp_3926_freemium_watermark?: AbTestResult;
43
+ bp_6136_v2_ai_builder?: AbTestResult;
42
44
  }
43
45
  export declare const MEDIA_SIZES: {
44
46
  readonly size1x: "size1x";
@@ -24,6 +24,9 @@ export const AB_TEST_FLAG = {
24
24
  };
25
25
  export const AB_TEST_KEYS = {
26
26
  BP_3926_FREEMIUM_WATERMARK: 'bc-bp-3926-freemium-cta-in-website-editor',
27
+ // V1 (control) vs V2 (variation-1) AI website builder, sent by bc-net in the editor
28
+ // payload at load. Key must match `Bp6136V2AiBuilderStrategy.CampaignKey`.
29
+ BP_6136_V2_AI_BUILDER: 'bc-bp-6136-v2-ai-builder',
27
30
  };
28
31
  export const MEDIA_SIZES = {
29
32
  size1x: 'size1x',
@@ -45,5 +48,9 @@ export const getAbTestResults = (abtestKeyValues) => {
45
48
  if (abtestKeyValues[AB_TEST_KEYS.BP_3926_FREEMIUM_WATERMARK]) {
46
49
  abTests.bp_3926_freemium_watermark = getValueType(AB_TEST_KEYS.BP_3926_FREEMIUM_WATERMARK, abtestKeyValues[AB_TEST_KEYS.BP_3926_FREEMIUM_WATERMARK]);
47
50
  }
51
+ // AB Test - V1 vs V2 AI website builder
52
+ if (abtestKeyValues[AB_TEST_KEYS.BP_6136_V2_AI_BUILDER]) {
53
+ abTests.bp_6136_v2_ai_builder = getValueType(AB_TEST_KEYS.BP_6136_V2_AI_BUILDER, abtestKeyValues[AB_TEST_KEYS.BP_6136_V2_AI_BUILDER]);
54
+ }
48
55
  return abTests;
49
56
  };
@@ -1,8 +1,8 @@
1
- import type { FontFamilyKey, ImagesSectionContentDisplayStyle, HeaderDisplayStyle, FooterDisplayStyle } from '../constants';
1
+ import type { ImagesSectionContentDisplayStyle, HeaderDisplayStyle, FooterDisplayStyle } from '../constants';
2
2
  import type { Content, PersonalisationRole } from './content.model';
3
3
  import type { BrandPageType, ViewportsType } from './brand-page-context.model';
4
4
  import { NavigationDesktop, NavigationMobile } from './navigation-styles.model';
5
- import type { TextStyleDeclaration, LegacyTextStylesInput } from './styles.model';
5
+ import type { TextStyleDeclaration, RteTextRole, LegacyTextStylesInput } from './styles.model';
6
6
  import { TextStyles } from './styles.model';
7
7
  import { LogoStyles } from './logo.model';
8
8
  import type { LogoImageModel, LogoTemplateImageModel } from './logo.model';
@@ -176,8 +176,8 @@ export interface TextContent extends Content {
176
176
  /**
177
177
  * @deprecated Use `textStyle` instead. For backward compatibility.
178
178
  */
179
- textSize: BrandPageCssStyle;
180
- textStyle: TextStyleDeclaration;
179
+ textSize?: BrandPageCssStyle;
180
+ textStyle: RteTextRole;
181
181
  /**
182
182
  * @deprecated Use `textStyle` instead. For backward compatibility.
183
183
  */
@@ -197,9 +197,9 @@ export interface ProfileContent extends Content {
197
197
  colorReplacements: ColorReplacement[];
198
198
  mediaType?: string;
199
199
  size?: string;
200
- descriptionStyle: TextStyleDeclaration;
201
- nameStyle: TextStyleDeclaration;
202
- titleStyle: TextStyleDeclaration;
200
+ descriptionStyle: RteTextRole;
201
+ nameStyle: RteTextRole;
202
+ titleStyle: RteTextRole;
203
203
  }
204
204
  export interface Address {
205
205
  formattedAddress: string;
@@ -212,7 +212,7 @@ export interface MailingListContent extends Content {
212
212
  acceptedFields?: 'emailOnly' | 'nameAndEmail';
213
213
  title: RichTextValue;
214
214
  buttonText: string;
215
- titleStyle: TextStyleDeclaration;
215
+ titleStyle: RteTextRole;
216
216
  buttonTextStyle: TextStyleDeclaration;
217
217
  backgroundStyle?: BrandPageCssStyle;
218
218
  }
@@ -270,11 +270,11 @@ export interface ContactFormContent extends Content {
270
270
  responseEmail: string;
271
271
  imageUrl?: string;
272
272
  layoutStyle?: string | null;
273
- titleStyle?: TextStyleDeclaration;
274
- descriptionStyle?: TextStyleDeclaration;
273
+ titleStyle?: RteTextRole;
274
+ descriptionStyle?: RteTextRole;
275
275
  buttonTextStyle?: TextStyleDeclaration;
276
276
  backgroundStyle?: BrandPageCssStyle;
277
- successMessageStyle?: TextStyleDeclaration;
277
+ successMessageStyle?: RteTextRole;
278
278
  cardStyle?: BrandPageCssStyle;
279
279
  colorReplacements?: ColorReplacement[];
280
280
  mediaType?: string;
@@ -291,8 +291,8 @@ export interface BannerSectionContent extends Content {
291
291
  email?: string;
292
292
  tel?: string;
293
293
  displayStyle: string;
294
- titleStyle: TextStyleDeclaration;
295
- descriptionStyle: TextStyleDeclaration;
294
+ titleStyle: RteTextRole;
295
+ descriptionStyle: RteTextRole;
296
296
  backgroundStyle: BrandPageCssStyle;
297
297
  cardStyle: BrandPageCssStyle;
298
298
  colorReplacements: ColorReplacement[];
@@ -357,7 +357,7 @@ export interface TextItem {
357
357
  /** Stable per-item identifier. See ImageItem.id. */
358
358
  id: string;
359
359
  text: RichTextValue;
360
- textStyle: TextStyleDeclaration;
360
+ textStyle: RteTextRole;
361
361
  textOverride?: string;
362
362
  }
363
363
  export interface ShapesSectionContent extends Content, MediaSection {
@@ -377,8 +377,8 @@ export interface MediaSection extends Content {
377
377
  description: RichTextValue;
378
378
  displayStyle: ImagesSectionContentDisplayStyle;
379
379
  items: TextShapeItem[] | TextMediaItem[];
380
- titleStyle: TextStyleDeclaration;
381
- descriptionStyle: TextStyleDeclaration;
380
+ titleStyle: RteTextRole;
381
+ descriptionStyle: RteTextRole;
382
382
  headingStyle: TextStyleDeclaration;
383
383
  paragraphStyle: TextStyleDeclaration;
384
384
  backgroundStyle: BrandPageCssStyle;
@@ -406,7 +406,7 @@ export interface TestimonialSectionContent extends Content {
406
406
  title: RichTextValue;
407
407
  displayStyle: string;
408
408
  items: TestimonialItems[];
409
- titleStyle: TextStyleDeclaration;
409
+ titleStyle: RteTextRole;
410
410
  testimonialStyle: TextStyleDeclaration;
411
411
  nameStyle: TextStyleDeclaration;
412
412
  positionStyle: TextStyleDeclaration;
@@ -420,8 +420,8 @@ export interface AboutSectionContent extends Content {
420
420
  title: RichTextValue;
421
421
  paragraph: RichTextValue;
422
422
  displayStyle: string;
423
- titleStyle: TextStyleDeclaration;
424
- paragraphStyle: TextStyleDeclaration;
423
+ titleStyle: RteTextRole;
424
+ paragraphStyle: RteTextRole;
425
425
  backgroundStyle: BrandPageCssStyle;
426
426
  colorReplacements: ColorReplacement[];
427
427
  mediaType?: string;
@@ -448,7 +448,7 @@ export interface SocialLinksContent extends Content {
448
448
  iconFillStyles: BrandPageCssStyle;
449
449
  iconBackgroundStyles: BrandPageCssStyle;
450
450
  backgroundStyles: BrandPageCssStyle;
451
- titleStyle: TextStyleDeclaration;
451
+ titleStyle: RteTextRole;
452
452
  }
453
453
  export declare const DIVIDER_STYLES: {
454
454
  readonly none: "none";
@@ -471,8 +471,8 @@ export interface BookingSectionContent extends Content {
471
471
  url: string;
472
472
  email?: string;
473
473
  tel?: string;
474
- titleStyle: TextStyleDeclaration;
475
- descriptionStyle: TextStyleDeclaration;
474
+ titleStyle: RteTextRole;
475
+ descriptionStyle: RteTextRole;
476
476
  backgroundStyle: BrandPageCssStyle;
477
477
  buttonPageId: string;
478
478
  buttonLinkType: ButtonLinkType;
@@ -566,8 +566,6 @@ export declare abstract class AbstractPageFooterStyles {
566
566
  logoTemplateImage: LogoTemplateImageModel | undefined;
567
567
  logoImageBase64Url?: string;
568
568
  socialLinks: LinksItem[];
569
- /** @deprecated For backward compatibility only */
570
- textFontFamily?: FontFamilyKey;
571
569
  viewport: ViewportsType;
572
570
  logoImageHeight: string | undefined;
573
571
  logoImageWidth: string | undefined;
@@ -601,6 +599,7 @@ export interface CookieOptions {
601
599
  export interface SaveContactOptions {
602
600
  isSavingEnabled: boolean;
603
601
  hideBranding: boolean;
602
+ buttonTextStyle?: TextStyleDeclaration;
604
603
  }
605
604
  export declare class BrandPageModel {
606
605
  v: number;
@@ -315,8 +315,6 @@ export class AbstractPageFooterStyles {
315
315
  logoTemplateImage;
316
316
  logoImageBase64Url;
317
317
  socialLinks;
318
- /** @deprecated For backward compatibility only */
319
- textFontFamily;
320
318
  viewport;
321
319
  logoImageHeight;
322
320
  logoImageWidth;
@@ -329,8 +327,8 @@ export class AbstractPageFooterStyles {
329
327
  this.copyrightText =
330
328
  options.copyrightText ??
331
329
  `© ${new Date(Date.now()).getFullYear()} by [Company Name]. All Rights Reserved.`;
330
+ // Migration-01 reads the legacy role only for v0 input; newer data must never mint `paragraphs`.
332
331
  this.copyrightStyle = options.copyrightStyle || {
333
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
334
332
  textAlign: 'center',
335
333
  };
336
334
  if (options.displayStyle) {
@@ -390,7 +388,13 @@ export class AbstractPageFooterStyles {
390
388
  // explicit black, a not-yet-migrated model renders the SVG default. Seeding a site
391
389
  // text colour here need not read against the footer band.
392
390
  this.iconStyle = options.iconStyle ? { ...options.iconStyle } : {};
393
- this.textFontFamily = options.textFontFamily;
391
+ // Retired (`0036-retire-text-font-family.md`): carried as stored, so construction keeps the
392
+ // released migrations' input unchanged (`legacy-migrations.md`); migration-22 deletes it.
393
+ const { textFontFamily } = options;
394
+ if (textFontFamily !== undefined) {
395
+ this['textFontFamily'] =
396
+ textFontFamily;
397
+ }
394
398
  }
395
399
  }
396
400
  export class AbstractMedia {
@@ -459,6 +463,15 @@ export class BrandPageModel {
459
463
  paymentConfig;
460
464
  constructor(options) {
461
465
  this.v = options.v || 0;
466
+ const footerOptions = (footer) => this.v < 22 && footer?.copyrightStyle === undefined
467
+ ? {
468
+ ...footer,
469
+ copyrightStyle: {
470
+ textStyleType: TEXT_STYLE_TYPES.paragraphs,
471
+ textAlign: 'center',
472
+ },
473
+ }
474
+ : footer;
462
475
  this.styles = new PageStyles(options.styles);
463
476
  // `textStyles.style` is retired, so it is read untyped here (the
464
477
  // deserialization boundary). The seeding it feeds must NOT change —
@@ -500,7 +513,7 @@ export class BrandPageModel {
500
513
  // so the seed rides migration-01's re-wrap into the modern pageFooter* and is
501
514
  // referencified by migration-21 — else legacy footer icons stay colourless.
502
515
  this.footerStyles = new PageFooterDesktop({
503
- ...options.footerStyles,
516
+ ...footerOptions(options.footerStyles),
504
517
  }, theme);
505
518
  this.footerStyles.logoImageUrl =
506
519
  options.footerStyles.logoImageUrl;
@@ -515,8 +528,8 @@ export class BrandPageModel {
515
528
  ...options.pageHeaderDesktop,
516
529
  navigation: new NavigationDesktop(options.pageHeaderDesktop?.navigation, theme),
517
530
  });
518
- this.pageFooterMobile = new PageFooterMobile(options.pageFooterMobile, theme);
519
- this.pageFooterDesktop = new PageFooterDesktop(options.pageFooterDesktop, theme);
531
+ this.pageFooterMobile = new PageFooterMobile(footerOptions(options.pageFooterMobile), theme);
532
+ this.pageFooterDesktop = new PageFooterDesktop(footerOptions(options.pageFooterDesktop), theme);
520
533
  }
521
534
  this.faviconUrl = options.faviconUrl;
522
535
  this.ogImageUrl = options.ogImageUrl;
@@ -1,6 +1,6 @@
1
1
  import { type NavigationDisplayType } from '../constants';
2
2
  import type { Theme, ViewportsType } from './index';
3
- import type { TextStyleDeclaration } from './styles.model';
3
+ import { type TextStyleDeclaration } from './styles.model';
4
4
  export declare class NavigationMenuStyles {
5
5
  defaultButtonStyle: TextStyleDeclaration;
6
6
  selectedButtonStyle: BrandPageCssStyle;