@designcrowd/library.brand-page 6.2.11 → 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 (576) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DDcraD5S.js → CreatedOnBrandCrowd-de-de-BtVKllNQ.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-DtOeaisf.js → CreatedOnBrandCrowd-en-us-CX5V0v8u.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-BZpmJPew.js → CreatedOnBrandCrowd-es-es-CbA02PCL.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-CqRwC4e7.js → CreatedOnBrandCrowd-fr-ca-BQAKruBF.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-CqRwC4e7.js → CreatedOnBrandCrowd-fr-fr-BQAKruBF.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-DId9Dfjh.js → CreatedOnBrandCrowd-pt-br-Yk_yzB3s.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-DId9Dfjh.js → CreatedOnBrandCrowd-pt-pt-Yk_yzB3s.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-BTDfmOcm.js → CreatedOnDcom-de-de-DJZQbPSD.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-CeAu9Ayx.js → CreatedOnDcom-en-us-BJvNAa4l.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-WCv0K41H.js → CreatedOnDcom-es-es-CUwB1FRY.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-BlfevQDY.js → CreatedOnDcom-fr-ca-CK54U4oh.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-Cvt7MHPZ.js → CreatedOnDcom-fr-fr-DuUNBGrM.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-DipZuylv.js → CreatedOnDcom-pt-br-BfODpFNV.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-BCw4lcKN.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/index.d.ts +23 -24
  39. package/lib/src/brand-page/models/index.js +20 -7
  40. package/lib/src/brand-page/models/navigation-styles.model.d.ts +1 -1
  41. package/lib/src/brand-page/models/navigation-styles.model.js +17 -8
  42. package/lib/src/brand-page/models/payment.model.d.ts +11 -6
  43. package/lib/src/brand-page/models/styles.model.d.ts +53 -7
  44. package/lib/src/brand-page/models/styles.model.js +115 -27
  45. package/lib/src/brand-page/utils/color-palette.util.d.ts +43 -23
  46. package/lib/src/brand-page/utils/color-palette.util.js +65 -27
  47. package/lib/src/brand-page/utils/color.util.d.ts +13 -9
  48. package/lib/src/brand-page/utils/color.util.js +56 -15
  49. package/lib/src/brand-page/utils/container-text-color.util.d.ts +46 -13
  50. package/lib/src/brand-page/utils/container-text-color.util.js +321 -41
  51. package/lib/src/brand-page/utils/index.d.ts +1 -0
  52. package/lib/src/brand-page/utils/index.js +1 -0
  53. package/lib/src/brand-page/utils/migration/migration-20.js +6 -2
  54. package/lib/src/brand-page/utils/migration/migration-21.js +34 -6
  55. package/lib/src/brand-page/utils/migration/migration-22.d.ts +99 -0
  56. package/lib/src/brand-page/utils/migration/migration-22.js +909 -0
  57. package/lib/src/brand-page/utils/migration.util.js +17 -0
  58. package/lib/src/brand-page/utils/model.util.d.ts +4 -0
  59. package/lib/src/brand-page/utils/model.util.js +4 -0
  60. package/lib/src/brand-page/utils/personalisation.util.js +9 -1
  61. package/lib/src/brand-page/utils/rte-role-lift.util.d.ts +72 -0
  62. package/lib/src/brand-page/utils/rte-role-lift.util.js +275 -0
  63. package/lib/src/brand-page/utils/style.util.d.ts +5 -1
  64. package/lib/src/brand-page/utils/style.util.js +34 -11
  65. package/lib/src/brand-page/utils/text-role-css.util.d.ts +19 -0
  66. package/lib/src/brand-page/utils/text-role-css.util.js +186 -0
  67. package/lib/src/brand-page/utils/text-role-reconnect.util.d.ts +90 -0
  68. package/lib/src/brand-page/utils/text-role-reconnect.util.js +434 -0
  69. package/lib/src/brand-page/utils/text-style.util.d.ts +53 -23
  70. package/lib/src/brand-page/utils/text-style.util.js +122 -22
  71. package/lib/src/brand-page/utils/view-model.util.d.ts +9 -1
  72. package/lib/src/brand-page/utils/view-model.util.js +124 -111
  73. package/lib/src/brand-page/view-models.d.ts +1 -0
  74. package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +4 -1
  75. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +13 -2
  76. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +4 -4
  77. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +4 -1
  78. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.js +0 -10
  79. package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/content-settings-items.fixture.js +0 -1
  80. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +23 -138
  81. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.js +0 -28
  82. package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +4 -1
  83. package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.d.ts +1 -1
  84. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +5 -2
  85. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +4 -1
  86. package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +4 -1
  87. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +4 -1
  88. package/lib/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.d.ts +1 -0
  89. package/lib/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.js +1 -0
  90. package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +1 -0
  91. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/RoleTypographyFill.d.ts +16 -0
  92. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/RoleTypographyFill.js +61 -0
  93. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/RteClipboard.d.ts +11 -0
  94. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/RteClipboard.js +236 -0
  95. package/lib/src/brand-page-maker/composables/rich-text-editor/font.d.ts +2 -1
  96. package/lib/src/brand-page-maker/composables/rich-text-editor/font.js +25 -6
  97. package/lib/src/brand-page-maker/composables/rich-text-editor/formatting.d.ts +17 -4
  98. package/lib/src/brand-page-maker/composables/rich-text-editor/formatting.js +204 -17
  99. package/lib/src/brand-page-maker/composables/rich-text-editor/hyperlink.d.ts +1 -1
  100. package/lib/src/brand-page-maker/composables/rich-text-editor/hyperlink.js +29 -31
  101. package/lib/src/brand-page-maker/composables/rich-text-editor/keepMarksOnEmpty.d.ts +20 -0
  102. package/lib/src/brand-page-maker/composables/rich-text-editor/keepMarksOnEmpty.js +60 -0
  103. package/lib/src/brand-page-maker/composables/rich-text-editor/spacing.d.ts +2 -1
  104. package/lib/src/brand-page-maker/composables/rich-text-editor/spacing.js +22 -6
  105. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +10 -4
  106. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +319 -275
  107. package/lib/src/brand-page-maker/constants/config-settings-constant.js +1 -5
  108. package/lib/src/brand-page-maker/convertors/text-css-style-options.convertor.js +6 -2
  109. package/lib/src/brand-page-maker/convertors/text-size-value.convertor.d.ts +1 -1
  110. package/lib/src/brand-page-maker/convertors/text-size-value.convertor.js +3 -1
  111. package/lib/src/brand-page-maker/default-getters/payment-text-and-border-color.default-getter.js +7 -14
  112. package/lib/src/brand-page-maker/default-getters/text-color.default-getter.js +6 -13
  113. package/lib/src/brand-page-maker/models/content-settings.d.ts +8 -0
  114. package/lib/src/brand-page-maker/models/content-settings.js +112 -81
  115. package/lib/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.d.ts +2 -2
  116. package/lib/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.js +5 -2
  117. package/lib/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.js +4 -3
  118. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +1257 -117
  119. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +6 -1
  120. package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +17 -9
  121. package/lib/src/brand-page-maker/stores/history/history-store.d.ts +59 -5
  122. package/lib/src/brand-page-maker/stores/history/history-store.js +22 -2
  123. package/lib/src/brand-page-maker/utils/apply-color-strategy.js +26 -8
  124. package/lib/src/brand-page-maker/utils/index.d.ts +2 -1
  125. package/lib/src/brand-page-maker/utils/index.js +2 -1
  126. package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +117 -15
  127. package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +435 -281
  128. package/lib/src/brand-page-maker/utils/rte-authoring.util.d.ts +4 -0
  129. package/lib/src/brand-page-maker/utils/rte-authoring.util.js +101 -0
  130. package/lib/src/brand-page-maker/utils/rte-clipboard.util.d.ts +126 -0
  131. package/lib/src/brand-page-maker/utils/rte-clipboard.util.js +307 -0
  132. package/lib/src/brand-page-maker/utils/rte-sanitize.util.js +13 -3
  133. package/lib/src/{bundled-translations-zfiA5Tsw.js → bundled-translations-yGrvPE5i.js} +17 -17
  134. package/lib/src/{bundled-translations.de-DE-ChsdSyAP.js → bundled-translations.de-DE-L4Znf8Hs.js} +17 -17
  135. package/lib/src/{bundled-translations.es-ES-DflsWQK0.js → bundled-translations.es-ES-D6iticrK.js} +15 -15
  136. package/lib/src/{bundled-translations.fr-CA-fpDRuZ52.js → bundled-translations.fr-CA-BgAVE-9k.js} +25 -25
  137. package/lib/src/{bundled-translations.fr-FR-Bub73Zt-.js → bundled-translations.fr-FR-B8GbyqxQ.js} +17 -17
  138. package/lib/src/{bundled-translations.pt-BR-BlnWE9TB.js → bundled-translations.pt-BR-DjPU3Db7.js} +25 -25
  139. package/lib/src/{bundled-translations.pt-PT-DmzXlnaS.js → bundled-translations.pt-PT-BaepaDpr.js} +23 -23
  140. package/lib/src/bundles/bundled-translations.de-DE.json +21 -2
  141. package/lib/src/bundles/bundled-translations.es-ES.json +21 -2
  142. package/lib/src/bundles/bundled-translations.fr-CA.json +21 -2
  143. package/lib/src/bundles/bundled-translations.fr-FR.json +21 -2
  144. package/lib/src/bundles/bundled-translations.json +21 -2
  145. package/lib/src/bundles/bundled-translations.pt-BR.json +21 -2
  146. package/lib/src/bundles/bundled-translations.pt-PT.json +21 -2
  147. package/lib/src/clients/ai-assistant-client.d.ts +1 -0
  148. package/lib/src/composables/useTranslate.d.ts +1 -1
  149. package/lib/src/composables/useTranslate.js +1 -1
  150. package/lib/src/css/library.brand-page-brandCrowd.min.css +303 -207
  151. package/lib/src/css/library.brand-page-brandPage.min.css +303 -207
  152. package/lib/src/css/library.brand-page-designCom.min.css +303 -207
  153. package/lib/src/css/library.brand-page-preview.min.css +303 -207
  154. package/lib/src/index.d.ts +2 -1
  155. package/lib/src/index.mjs +195 -191
  156. package/lib/src/{lib-1AqtEmvQ.js → lib-kGRlD3_P.js} +36855 -33893
  157. package/lib/src/lib.js +2 -1
  158. package/lib/src/metadata-builder/builders/footer-builder.js +4 -5
  159. package/lib/src/metadata-builder/builders/global-role-propagation.d.ts +58 -0
  160. package/lib/src/metadata-builder/builders/global-role-propagation.js +246 -0
  161. package/lib/src/metadata-builder/builders/global-styles-builder.d.ts +1 -0
  162. package/lib/src/metadata-builder/builders/global-styles-builder.js +116 -45
  163. package/lib/src/metadata-builder/builders/header-builder.js +13 -4
  164. package/lib/src/metadata-builder/builders/section-builders/about-section-builder.js +3 -3
  165. package/lib/src/metadata-builder/builders/section-builders/banner-section-builder.js +3 -3
  166. package/lib/src/metadata-builder/builders/section-builders/booking-section-builder.js +3 -3
  167. package/lib/src/metadata-builder/builders/section-builders/contact-form-builder.js +4 -4
  168. package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +3 -3
  169. package/lib/src/metadata-builder/builders/section-builders/mailing-list-builder.js +2 -2
  170. package/lib/src/metadata-builder/builders/section-builders/mailing-list-section-builder.js +2 -2
  171. package/lib/src/metadata-builder/builders/section-builders/profile-section-builder.js +4 -4
  172. package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +3 -3
  173. package/lib/src/metadata-builder/builders/section-builders/social-links-builder.js +8 -2
  174. package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +2 -2
  175. package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +60 -29
  176. package/lib/src/metadata-builder/builders/section-field-maps.js +1 -0
  177. package/lib/src/metadata-builder/builders/section-field-utils.d.ts +48 -19
  178. package/lib/src/metadata-builder/builders/section-field-utils.js +128 -52
  179. package/lib/src/metadata-builder/builders/section-rules/global-styles.rules.d.ts +4 -2
  180. package/lib/src/metadata-builder/builders/section-rules/global-styles.rules.js +28 -12
  181. package/lib/src/metadata-builder/builders/section-rules/social-links.rules.js +5 -1
  182. package/lib/src/metadata-builder/helpers/rte.helpers.d.ts +1 -1
  183. package/lib/src/metadata-builder/helpers/rte.helpers.js +97 -40
  184. package/lib/src/metadata-builder/metadata-executor.js +23 -1
  185. package/lib/src/metadata-builder/models.d.ts +2 -0
  186. package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +18 -19
  187. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +18 -1
  188. package/lib/src/metadata-builder/sanitizers/rte-schema-check.js +1 -1
  189. package/lib/src/metadata-builder/sanitizers/sanitizer-rules.d.ts +0 -1
  190. package/lib/src/metadata-builder/sanitizers/sanitizer-rules.js +5 -8
  191. package/lib/src/metadata-builder/sanitizers/section-args-validator.d.ts +7 -16
  192. package/lib/src/metadata-builder/sanitizers/section-args-validator.js +95 -22
  193. package/lib/src/shared/color-palette/section-color-matches.js +9 -25
  194. package/lib/src/shared/color-strategies/color-strategies.d.ts +15 -0
  195. package/lib/src/shared/color-strategies/color-strategies.js +31 -0
  196. package/lib/src/shared/color-strategies/rte-color.d.ts +8 -0
  197. package/lib/src/shared/color-strategies/rte-color.js +16 -0
  198. package/lib/src/shared/color-strategies/rte-field-pairs.d.ts +23 -0
  199. package/lib/src/shared/color-strategies/rte-field-pairs.js +28 -0
  200. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +9 -135
  201. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +1 -27
  202. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +12 -2
  203. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +7 -0
  204. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +75 -6
  205. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +18 -7
  206. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +6 -1
  207. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.js +0 -7
  208. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +1 -0
  209. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +8 -4
  210. package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.d.ts +1255 -26
  211. package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.js +203 -59
  212. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +6 -0
  213. package/lib/src/shared/content-settings/store/content-settings-store.js +105 -8
  214. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +5 -1
  215. package/lib/src/shared/navigation-style-settings/store/index.d.ts +7 -3
  216. package/lib/src/shared/navigation-style-settings/store/index.js +40 -15
  217. package/lib/src/shared/page-settings/components/delete-page-modal/DeletePageModal.mixin.d.ts +1 -1
  218. package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.d.ts +1 -0
  219. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +17 -5
  220. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +70 -13
  221. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.js +10 -2
  222. package/lib/src/shared/page-settings/store/page-settings-store.d.ts +2 -1
  223. package/lib/src/shared/page-settings/store/page-settings-store.js +17 -0
  224. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +4 -1
  225. package/lib/src/shared/rte-extensions/AutoLink.d.ts +17 -0
  226. package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/AutoLink.js +67 -51
  227. package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/MaxLength.js +4 -1
  228. package/lib/src/shared/rte-extensions/TextEffects.d.ts +28 -0
  229. package/lib/src/shared/rte-extensions/TextEffects.js +96 -0
  230. package/lib/src/shared/rte-extensions/ViewDomParser.d.ts +2 -0
  231. package/lib/src/shared/rte-extensions/ViewDomParser.js +21 -0
  232. package/lib/src/shared/rte-extensions.util.d.ts +25 -0
  233. package/lib/src/{brand-page-maker/composables/rich-text-editor/getRteExtensions.js → shared/rte-extensions.util.js} +62 -7
  234. package/lib/src/shared/rte-link.util.d.ts +1 -0
  235. package/lib/src/shared/rte-link.util.js +1 -0
  236. package/lib/src/shared/rte-render.util.d.ts +112 -0
  237. package/lib/src/shared/rte-render.util.js +255 -0
  238. package/lib/src/shared/rte-shape.util.d.ts +6 -0
  239. package/lib/src/shared/rte-shape.util.js +18 -0
  240. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +2 -1
  241. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +1 -0
  242. package/lib/src/shared/side-bar/store/side-bar-store.d.ts +2 -0
  243. package/lib/src/shared/side-bar/store/side-bar-store.js +9 -0
  244. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +155 -15
  245. package/lib/src/shared/style-settings/components/StyleSettings.mixin.js +7 -1
  246. package/lib/src/shared/style-settings/store/style-settings-store.d.ts +1 -9
  247. package/lib/src/shared/style-settings/store/style-settings-store.js +3 -33
  248. package/lib/src/shared/style-settings/text-style-size-order.d.ts +2 -0
  249. package/lib/src/shared/style-settings/text-style-size-order.js +13 -0
  250. package/lib/src/shared/text-role-typography.util.d.ts +64 -0
  251. package/lib/src/shared/text-role-typography.util.js +183 -0
  252. package/lib/src/utils/minify-brand-page-metadata.d.ts +16 -1
  253. package/lib/src/utils/minify-brand-page-metadata.js +31 -9
  254. package/package.json +1 -1
  255. package/src/brand-page/__fixtures__/migration-22-v21/edited-brandsite-sections.v21.json +982 -0
  256. package/src/brand-page/__fixtures__/migration-22-v21/new-brandcontact-every-section.v21.json +1231 -0
  257. package/src/brand-page/__fixtures__/migration-22-v21/new-brandpage-every-section.v21.json +1231 -0
  258. package/src/brand-page/__fixtures__/migration-22-v21/new-brandsite-every-section.v21.json +1243 -0
  259. package/src/brand-page/__fixtures__/migration-22-v21/real-brandcontact.v21.json +755 -0
  260. package/src/brand-page/__fixtures__/migration-22-v21/real-brandpage-general-link.v21.json +527 -0
  261. package/src/brand-page/__fixtures__/migration-22-v21/real-brandpage-links.v21.json +755 -0
  262. package/src/brand-page/__fixtures__/migration-22-v21/real-brandpage-social-links.v21.json +514 -0
  263. package/src/brand-page/__fixtures__/migration-22-v21/real-brandsite-about.v21.json +459 -0
  264. package/src/brand-page/__fixtures__/migration-22-v21/real-brandsite-footer.v21.json +469 -0
  265. package/src/brand-page/__fixtures__/migration-22-v21/real-brandsite-header-banner.v21.json +481 -0
  266. package/src/brand-page/__fixtures__/migration-22-v21/real-brandsite-sections.v21.json +800 -0
  267. package/src/brand-page/__fixtures__/production-text-style-resolver.fixture.ts +52 -0
  268. package/src/brand-page/components/about-section/AboutSection.vue.test.ts +0 -10
  269. package/src/brand-page/components/contact-form/ContactForm.mixin.test.ts +127 -0
  270. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +31 -14
  271. package/src/brand-page/components/contact-form/ContactForm.vue +26 -12
  272. package/src/brand-page/components/contact-form/ContactForm.vue.test.ts +60 -0
  273. package/src/brand-page/components/mailing-list/MailingList.mixin.test.ts +92 -0
  274. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +28 -3
  275. package/src/brand-page/components/mailing-list/MailingList.vue +9 -4
  276. package/src/brand-page/components/mailing-list/MailingList.vue.test.ts +63 -0
  277. package/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.mixin.ts +51 -1
  278. package/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.test.ts +114 -0
  279. package/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.vue +8 -2
  280. package/src/brand-page/components/navigation/navigation-carousel/NavigationCarousel.test.ts +182 -0
  281. package/src/brand-page/components/navigation/navigation-carousel/NavigationCarousel.vue +59 -12
  282. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.ts +40 -3
  283. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.vue +15 -7
  284. package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.vue.test.ts +133 -3
  285. package/src/brand-page/components/page/Page.mixin.ts +41 -34
  286. package/src/brand-page/components/page/Page.vue +17 -6
  287. package/src/brand-page/components/page/Page.vue.test.ts +91 -1
  288. package/src/brand-page/components/page-footer/PageFooter.mixin.ts +32 -2
  289. package/src/brand-page/components/page-footer/PageFooter.test.ts +79 -0
  290. package/src/brand-page/components/page-footer/PageFooter.vue +12 -4
  291. package/src/brand-page/components/payment/Payment.mixin.ts +34 -2
  292. package/src/brand-page/components/payment/Payment.test.ts +188 -0
  293. package/src/brand-page/components/payment/Payment.vue +12 -5
  294. package/src/brand-page/components/payment/RequestPaymentStripe.vue +1 -0
  295. package/src/brand-page/components/payment/support-me/SupportMe.mixin.ts +49 -2
  296. package/src/brand-page/components/payment/support-me/SupportMe.test.ts +100 -0
  297. package/src/brand-page/components/payment/support-me/SupportMe.vue +7 -1
  298. package/src/brand-page/components/payment/support-me/SupportMe.vue.test.ts +66 -0
  299. package/src/brand-page/components/save-contact/SaveContactWidget.test.ts +100 -0
  300. package/src/brand-page/components/save-contact/SaveContactWidget.vue +6 -3
  301. package/src/brand-page/components/shop/PaymentModal.vue +2 -6
  302. package/src/brand-page/components/shop/PaymentShippingAddress.vue +6 -0
  303. package/src/brand-page/components/shop/Shop.vue +15 -2
  304. package/src/brand-page/components/shop/Shop.vue.test.ts +74 -2
  305. package/src/brand-page/components/social-links/SocialLinks.stories.ts +0 -3
  306. package/src/brand-page/components/social-links/SocialLinks.vue.test.ts +0 -3
  307. package/src/brand-page/components/testimonial-section/__fixtures__/data.ts +0 -3
  308. package/src/brand-page/components/text/Text.stories.ts +0 -17
  309. package/src/brand-page/components/text-wrapper/TextWrapper.parity.test.ts +136 -0
  310. package/src/brand-page/components/text-wrapper/TextWrapper.test.ts +358 -0
  311. package/src/brand-page/components/text-wrapper/TextWrapper.vue +82 -22
  312. package/src/brand-page/constants/font.constants.ts +37 -0
  313. package/src/brand-page/models/footer-icon-color.test.ts +22 -0
  314. package/src/brand-page/models/index.ts +50 -28
  315. package/src/brand-page/models/navigation-styles.model.test.ts +77 -1
  316. package/src/brand-page/models/navigation-styles.model.ts +26 -9
  317. package/src/brand-page/models/payment.model.ts +15 -6
  318. package/src/brand-page/models/styles.model.test.ts +104 -0
  319. package/src/brand-page/models/styles.model.ts +181 -47
  320. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +619 -115
  321. package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +150 -9
  322. package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +300 -18
  323. package/src/brand-page/utils/color-palette.util.test.ts +126 -1
  324. package/src/brand-page/utils/color-palette.util.ts +92 -26
  325. package/src/brand-page/utils/color.util.test.ts +62 -29
  326. package/src/brand-page/utils/color.util.ts +77 -14
  327. package/src/brand-page/utils/container-text-color.util.test.ts +672 -26
  328. package/src/brand-page/utils/container-text-color.util.ts +472 -46
  329. package/src/brand-page/utils/index.ts +1 -0
  330. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/edited-brandsite-sections.v22.json +1191 -0
  331. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/new-brandcontact-every-section.v22.json +2026 -0
  332. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/new-brandpage-every-section.v22.json +2017 -0
  333. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/new-brandsite-every-section.v22.json +2031 -0
  334. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandcontact.v22.json +1145 -0
  335. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandpage-general-link.v22.json +645 -0
  336. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandpage-links.v22.json +1136 -0
  337. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandpage-social-links.v22.json +662 -0
  338. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-about.v22.json +638 -0
  339. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-footer.v22.json +610 -0
  340. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-header-banner.v22.json +660 -0
  341. package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-sections.v22.json +1132 -0
  342. package/src/brand-page/utils/migration/migration-01.ts +293 -237
  343. package/src/brand-page/utils/migration/migration-02.ts +8 -1
  344. package/src/brand-page/utils/migration/migration-20.ts +6 -3
  345. package/src/brand-page/utils/migration/migration-20_5.test.ts +5 -2
  346. package/src/brand-page/utils/migration/migration-21.test.ts +34 -0
  347. package/src/brand-page/utils/migration/migration-21.ts +46 -10
  348. package/src/brand-page/utils/migration/migration-22.fixed-input.test.ts +43 -0
  349. package/src/brand-page/utils/migration/migration-22.test.ts +4103 -0
  350. package/src/brand-page/utils/migration/migration-22.text-font-family.test.ts +72 -0
  351. package/src/brand-page/utils/migration/migration-22.ts +1336 -0
  352. package/src/brand-page/utils/migration.util.test.ts +146 -32
  353. package/src/brand-page/utils/migration.util.ts +18 -0
  354. package/src/brand-page/utils/model.util.ts +4 -0
  355. package/src/brand-page/utils/personalisation.util.test.ts +148 -3
  356. package/src/brand-page/utils/personalisation.util.ts +9 -1
  357. package/src/brand-page/utils/rte-role-lift.util.ts +409 -0
  358. package/src/brand-page/utils/style.util.test.ts +35 -2
  359. package/src/brand-page/utils/style.util.ts +45 -11
  360. package/src/brand-page/utils/text-role-css.util.test.ts +525 -0
  361. package/src/brand-page/utils/text-role-css.util.ts +321 -0
  362. package/src/brand-page/utils/text-role-reconnect.util.test.ts +604 -0
  363. package/src/brand-page/utils/text-role-reconnect.util.ts +727 -0
  364. package/src/brand-page/utils/text-style.util.test.ts +305 -0
  365. package/src/brand-page/utils/text-style.util.ts +198 -24
  366. package/src/brand-page/utils/view-model.page-data.test.ts +232 -0
  367. package/src/brand-page/utils/view-model.util.test.ts +954 -133
  368. package/src/brand-page/utils/view-model.util.ts +187 -139
  369. package/src/brand-page/view-models.ts +4 -0
  370. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.blank-site.test.ts +57 -0
  371. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +9 -5
  372. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +0 -10
  373. package/src/brand-page-maker/components/brand-page-maker/__fixtures__/content-settings-items.fixture.ts +0 -1
  374. package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.ts +0 -44
  375. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +253 -200
  376. package/src/brand-page-maker/components/shop/AddOrEditProductContainer.vue +1 -0
  377. package/src/brand-page-maker/components/template-preview/TemplatePreview.vue +1 -0
  378. package/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.ts +2 -0
  379. package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +1 -0
  380. package/src/brand-page-maker/composables/rich-text-editor/block-typography.test.ts +519 -0
  381. package/src/brand-page-maker/composables/rich-text-editor/extensions/FontFamily.test.ts +1 -1
  382. package/src/brand-page-maker/composables/rich-text-editor/extensions/MaxLength.test.ts +26 -1
  383. package/src/brand-page-maker/composables/rich-text-editor/extensions/RoleTypographyFill.test.ts +110 -0
  384. package/src/brand-page-maker/composables/rich-text-editor/extensions/RoleTypographyFill.ts +99 -0
  385. package/src/brand-page-maker/composables/rich-text-editor/extensions/RteClipboard.ts +397 -0
  386. package/src/brand-page-maker/composables/rich-text-editor/extensions/ViewDomParser.test.ts +139 -0
  387. package/src/brand-page-maker/composables/rich-text-editor/font.ts +36 -5
  388. package/src/brand-page-maker/composables/rich-text-editor/formatting.test.ts +375 -1
  389. package/src/brand-page-maker/composables/rich-text-editor/formatting.ts +301 -17
  390. package/src/brand-page-maker/composables/rich-text-editor/hyperlink.test.ts +82 -1
  391. package/src/brand-page-maker/composables/rich-text-editor/hyperlink.ts +28 -34
  392. package/src/brand-page-maker/composables/rich-text-editor/keepMarksOnEmpty.test.ts +80 -0
  393. package/src/brand-page-maker/composables/rich-text-editor/keepMarksOnEmpty.ts +75 -0
  394. package/src/brand-page-maker/composables/rich-text-editor/spacing.ts +31 -6
  395. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.test.ts +2485 -0
  396. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +435 -337
  397. package/src/brand-page-maker/constants/config-settings-constant.ts +0 -6
  398. package/src/brand-page-maker/convertors/text-css-style-options.convertor.test.ts +43 -0
  399. package/src/brand-page-maker/convertors/text-css-style-options.convertor.ts +6 -2
  400. package/src/brand-page-maker/convertors/text-size-value.convertor.test.ts +24 -0
  401. package/src/brand-page-maker/convertors/text-size-value.convertor.ts +17 -13
  402. package/src/brand-page-maker/default-getters/payment-text-and-border-color.default-getter.ts +7 -22
  403. package/src/brand-page-maker/default-getters/text-color.default-getter.ts +5 -21
  404. package/src/brand-page-maker/models/content-settings.test.ts +708 -0
  405. package/src/brand-page-maker/models/content-settings.ts +133 -82
  406. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.test.ts +63 -1
  407. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.ts +16 -3
  408. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.test.ts +34 -0
  409. package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.ts +4 -2
  410. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +185 -1
  411. package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +22 -34
  412. package/src/brand-page-maker/stores/history/history-store.ts +35 -2
  413. package/src/brand-page-maker/utils/__snapshots__/apply-color-strategy.golden.test.ts.snap +528 -0
  414. package/src/brand-page-maker/utils/__snapshots__/rte-render-parity.test.ts.snap +12 -0
  415. package/src/brand-page-maker/utils/apply-color-strategy.golden.test.ts +2 -0
  416. package/src/brand-page-maker/utils/apply-color-strategy.test.ts +181 -3
  417. package/src/brand-page-maker/utils/apply-color-strategy.ts +36 -4
  418. package/src/brand-page-maker/utils/index.ts +2 -1
  419. package/src/brand-page-maker/utils/rich-text-editor.util.test.ts +447 -410
  420. package/src/brand-page-maker/utils/rich-text-editor.util.ts +610 -506
  421. package/src/brand-page-maker/utils/rte-authoring.util.test.ts +244 -0
  422. package/src/brand-page-maker/utils/rte-authoring.util.ts +175 -0
  423. package/src/brand-page-maker/utils/rte-clipboard.util.test.ts +558 -0
  424. package/src/brand-page-maker/utils/rte-clipboard.util.ts +473 -0
  425. package/src/brand-page-maker/utils/rte-features.test.ts +99 -3
  426. package/src/brand-page-maker/utils/rte-render-parity.test.ts +1 -1
  427. package/src/brand-page-maker/utils/rte-render.util.test.ts +230 -0
  428. package/src/brand-page-maker/utils/rte-sanitize-json.test.ts +1 -1
  429. package/src/brand-page-maker/utils/rte-sanitize.util.ts +14 -3
  430. package/src/brand-page-maker/utils/rte-schema-version.test.ts +102 -0
  431. package/src/bundles/bundled-translations.de-DE.json +21 -2
  432. package/src/bundles/bundled-translations.es-ES.json +21 -2
  433. package/src/bundles/bundled-translations.fr-CA.json +21 -2
  434. package/src/bundles/bundled-translations.fr-FR.json +21 -2
  435. package/src/bundles/bundled-translations.json +21 -2
  436. package/src/bundles/bundled-translations.pt-BR.json +21 -2
  437. package/src/bundles/bundled-translations.pt-PT.json +21 -2
  438. package/src/clients/ai-assistant-client.ts +1 -0
  439. package/src/composables/useTranslate.ts +2 -1
  440. package/src/lib.ts +2 -2
  441. package/src/metadata-builder/builders/footer-builder.test.ts +70 -45
  442. package/src/metadata-builder/builders/footer-builder.ts +4 -8
  443. package/src/metadata-builder/builders/global-role-propagation.test.ts +907 -0
  444. package/src/metadata-builder/builders/global-role-propagation.ts +430 -0
  445. package/src/metadata-builder/builders/global-styles-builder.test.ts +1020 -0
  446. package/src/metadata-builder/builders/global-styles-builder.ts +194 -48
  447. package/src/metadata-builder/builders/header-builder.test.ts +112 -40
  448. package/src/metadata-builder/builders/header-builder.ts +18 -8
  449. package/src/metadata-builder/builders/section-builders/about-section-builder.ts +5 -3
  450. package/src/metadata-builder/builders/section-builders/banner-section-builder.ts +5 -3
  451. package/src/metadata-builder/builders/section-builders/booking-section-builder.ts +5 -3
  452. package/src/metadata-builder/builders/section-builders/contact-form-builder.ts +7 -4
  453. package/src/metadata-builder/builders/section-builders/images-section-builder.ts +5 -3
  454. package/src/metadata-builder/builders/section-builders/mailing-list-builder.ts +3 -2
  455. package/src/metadata-builder/builders/section-builders/mailing-list-section-builder.ts +3 -2
  456. package/src/metadata-builder/builders/section-builders/profile-section-builder.ts +7 -7
  457. package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +5 -3
  458. package/src/metadata-builder/builders/section-builders/social-links-builder.test.ts +2 -2
  459. package/src/metadata-builder/builders/section-builders/social-links-builder.ts +21 -10
  460. package/src/metadata-builder/builders/section-builders/support-me-builder.test.ts +10 -0
  461. package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +3 -2
  462. package/src/metadata-builder/builders/section-builders/text-section-builder.ts +111 -61
  463. package/src/metadata-builder/builders/section-field-maps.ts +1 -0
  464. package/src/metadata-builder/builders/section-field-utils.test.ts +545 -2
  465. package/src/metadata-builder/builders/section-field-utils.ts +202 -69
  466. package/src/metadata-builder/builders/section-rules/global-styles.rules.ts +38 -13
  467. package/src/metadata-builder/builders/section-rules/social-links.rules.ts +5 -0
  468. package/src/metadata-builder/helpers/rte.helpers.test.ts +101 -0
  469. package/src/metadata-builder/helpers/rte.helpers.ts +129 -43
  470. package/src/metadata-builder/metadata-executor.test.ts +167 -0
  471. package/src/metadata-builder/metadata-executor.ts +34 -1
  472. package/src/metadata-builder/models.ts +2 -0
  473. package/src/metadata-builder/parsers/ai-toolcall-parser.ts +23 -7
  474. package/src/metadata-builder/parsers/section-tool-arguments.ts +21 -1
  475. package/src/metadata-builder/sanitizers/__tests__/section-args-validator.test.ts +215 -0
  476. package/src/metadata-builder/sanitizers/rte-schema-check.ts +1 -1
  477. package/src/metadata-builder/sanitizers/sanitizer-rules.ts +4 -8
  478. package/src/metadata-builder/sanitizers/section-args-validator.ts +136 -53
  479. package/src/shared/color-palette/section-color-matches.test.ts +15 -11
  480. package/src/shared/color-palette/section-color-matches.ts +9 -28
  481. package/src/shared/color-strategies/color-strategies.ts +35 -0
  482. package/src/shared/color-strategies/rte-color.test.ts +1 -1
  483. package/src/shared/color-strategies/rte-color.ts +19 -0
  484. package/src/shared/color-strategies/rte-field-pairs.test.ts +26 -5
  485. package/src/shared/color-strategies/rte-field-pairs.ts +33 -0
  486. package/src/shared/content-settings/components/color-matches-panel/ColorMatchesPanel.test.ts +43 -66
  487. package/src/shared/content-settings/components/color-matches-panel/ColorMatchesPanel.vue +7 -1
  488. package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +1 -48
  489. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +33 -7
  490. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.test.ts +128 -1
  491. package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.vue +1 -0
  492. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.ts +0 -6
  493. package/src/shared/content-settings/components/logo-selection-field/LogoSelection.vue +3 -0
  494. package/src/shared/content-settings/components/logo-size-field/LogoSizeSlider.vue +3 -0
  495. package/src/shared/content-settings/components/logo-size-field/LogoSizeSliderField.vue +1 -0
  496. package/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.vue +1 -0
  497. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.test.ts +56 -3
  498. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +11 -4
  499. package/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.test.ts +335 -25
  500. package/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.ts +248 -70
  501. package/src/shared/content-settings/components/text-style-field/TextStyleField.vue +113 -25
  502. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.de-DE.json +17 -10
  503. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.es-ES.json +17 -10
  504. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.fr-CA.json +17 -10
  505. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.fr-FR.json +17 -10
  506. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.json +8 -1
  507. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.pt-BR.json +17 -10
  508. package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.pt-PT.json +17 -10
  509. package/src/shared/content-settings/components/text-style-role-dropdown/TextStyleRoleDropdown.test.ts +141 -0
  510. package/src/shared/content-settings/components/text-style-role-dropdown/TextStyleRoleDropdown.vue +136 -0
  511. package/src/shared/content-settings/store/content-settings-store.test.ts +491 -6
  512. package/src/shared/content-settings/store/content-settings-store.ts +159 -17
  513. package/src/shared/logo-settings/components/EditLogoSettings.vue +1 -0
  514. package/src/shared/logo-settings/components/LogoVariations.vue +1 -0
  515. package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.vue +1 -0
  516. package/src/shared/navigation-style-settings/store/index.test.ts +295 -0
  517. package/src/shared/navigation-style-settings/store/index.ts +65 -15
  518. package/src/shared/page-settings/components/header-settings-panel/HeaderSettingsPanel.vue +2 -0
  519. package/src/shared/page-settings/components/page-settings/PageElement.vue +1 -0
  520. package/src/shared/page-settings/components/page-settings-section-styles/HeaderButtonSettings.test.ts +44 -4
  521. package/src/shared/page-settings/components/page-settings-section-styles/HeaderButtonSettings.vue +13 -4
  522. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.navigation.test.ts +89 -0
  523. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.text-style.test.ts +91 -0
  524. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.ts +14 -2
  525. package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.vue +2 -0
  526. package/src/shared/page-settings/store/page-settings-store.text-style.test.ts +84 -0
  527. package/src/shared/page-settings/store/page-settings-store.ts +30 -1
  528. package/src/shared/rte-extensions/AutoLink.test.ts +98 -0
  529. package/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/AutoLink.ts +87 -58
  530. package/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/MaxLength.ts +4 -1
  531. package/src/shared/rte-extensions/TextEffects.ts +151 -0
  532. package/src/shared/rte-extensions/ViewDomParser.ts +27 -0
  533. package/src/{brand-page-maker/composables/rich-text-editor/getRteExtensions.ts → shared/rte-extensions.util.ts} +66 -9
  534. package/src/shared/rte-link.util.ts +2 -0
  535. package/src/shared/rte-render.util.ts +385 -0
  536. package/src/shared/rte-shape.util.ts +29 -0
  537. package/src/shared/side-bar/store/side-bar-store.test.ts +27 -1
  538. package/src/shared/side-bar/store/side-bar-store.ts +11 -0
  539. package/src/shared/style-settings/components/StyleSettings.mixin.ts +7 -3
  540. package/src/shared/style-settings/components/StyleSettings.test.ts +116 -0
  541. package/src/shared/style-settings/components/StyleSettings.vue +75 -25
  542. package/src/shared/style-settings/components/i18n/style-settings.de-DE.json +32 -20
  543. package/src/shared/style-settings/components/i18n/style-settings.es-ES.json +32 -20
  544. package/src/shared/style-settings/components/i18n/style-settings.fr-CA.json +32 -20
  545. package/src/shared/style-settings/components/i18n/style-settings.fr-FR.json +32 -20
  546. package/src/shared/style-settings/components/i18n/style-settings.json +13 -3
  547. package/src/shared/style-settings/components/i18n/style-settings.pt-BR.json +32 -20
  548. package/src/shared/style-settings/components/i18n/style-settings.pt-PT.json +32 -20
  549. package/src/shared/style-settings/components/text-style-options-settings-with-state/TextStyleOptionsSettingsWithState.vue +14 -34
  550. package/src/shared/style-settings/store/style-settings-store.ts +3 -49
  551. package/src/shared/style-settings/text-style-size-order.test.ts +76 -0
  552. package/src/shared/style-settings/text-style-size-order.ts +28 -0
  553. package/src/shared/template-settings/components/TemplatesSettings.vue +4 -0
  554. package/src/shared/text-role-typography.util.ts +277 -0
  555. package/src/utils/minify-brand-page-metadata.test.ts +102 -7
  556. package/src/utils/minify-brand-page-metadata.ts +62 -8
  557. package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/AutoLink.d.ts +0 -2
  558. package/lib/src/brand-page-maker/composables/rich-text-editor/getRteExtensions.d.ts +0 -28
  559. package/lib/src/brand-page-maker/utils/rte-render.util.d.ts +0 -63
  560. package/lib/src/brand-page-maker/utils/rte-render.util.js +0 -106
  561. package/lib/src/brand-page-maker/utils/rte-shape.d.ts +0 -18
  562. package/lib/src/brand-page-maker/utils/rte-shape.js +0 -21
  563. package/lib/src/metadata-builder/builders/global-font-propagation.d.ts +0 -41
  564. package/lib/src/metadata-builder/builders/global-font-propagation.js +0 -146
  565. package/src/brand-page-maker/utils/rte-render.util.ts +0 -179
  566. package/src/brand-page-maker/utils/rte-shape.ts +0 -29
  567. package/src/metadata-builder/builders/global-font-propagation.test.ts +0 -401
  568. package/src/metadata-builder/builders/global-font-propagation.ts +0 -238
  569. package/src/shared/style-settings/components/StyleSettingsSection.vue +0 -8
  570. /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/FontFamily.d.ts +0 -0
  571. /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/FontFamily.js +0 -0
  572. /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/LetterSpacing.d.ts +0 -0
  573. /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/LetterSpacing.js +0 -0
  574. /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/MaxLength.d.ts +0 -0
  575. /package/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/FontFamily.ts +0 -0
  576. /package/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/LetterSpacing.ts +0 -0
@@ -1,7 +1,9 @@
1
- import { BrandPageModel, PageStyles, FORM_FIELD_IDS, PAYMENT_OPTION_DISPLAY_TYPES, PAYMENT_OPTION_IMAGE_TYPES, SOCIAL_LINKS_ICON_DISPLAY_STYLES, PageHeaderMobile, PageHeaderDesktop, PageFooterMobile, PageFooterDesktop, MEDIA_TYPES, BUTTON_LINK_TYPE, DISPLAY_STYLE_PREVIEW, SUPPORT_ME_CUSTOM_PRODUCT_NAME, DEFAULT_LOGO_HEIGHT, DEFAULT_LOGO_WIDTH, FONT_SIZE_BODY, LINE_HEIGHT_BODY, TEXT_STYLE_TYPES, TEXT_COLUMNS, DEFAULT_LOGO_BACKGROUND_COLOR_RGB, DEFAULT_LOGO_TEXT_COLOR_RGB, EMPTY_LOGO_IMAGE_MODEL, BRAND_PAGE_TYPES, SENSITIVE_CONTENT_TYPES, CONTACT_FORM_LAYOUT_DEFAULT_PADDING, TESTIMONIAL_DEFAULT_PADDING, } from '@brand-page';
1
+ import { BrandPageModel, PageStyles, FORM_FIELD_IDS, PAYMENT_OPTION_DISPLAY_TYPES, PAYMENT_OPTION_IMAGE_TYPES, SOCIAL_LINKS_ICON_DISPLAY_STYLES, PageHeaderMobile, PageHeaderDesktop, PageFooterMobile, PageFooterDesktop, MEDIA_TYPES, BUTTON_LINK_TYPE, DISPLAY_STYLE_PREVIEW, SUPPORT_ME_CUSTOM_PRODUCT_NAME, DEFAULT_LOGO_HEIGHT, DEFAULT_LOGO_WIDTH, TEXT_STYLE_TYPES, TEXT_COLUMNS, DEFAULT_LOGO_BACKGROUND_COLOR_RGB, DEFAULT_LOGO_TEXT_COLOR_RGB, EMPTY_LOGO_IMAGE_MODEL, BRAND_PAGE_TYPES, SENSITIVE_CONTENT_TYPES, CONTACT_FORM_LAYOUT_DEFAULT_PADDING, TESTIMONIAL_DEFAULT_PADDING, } from '@brand-page';
2
2
  import * as uuid from 'uuid';
3
3
  import { getColorShades, DEFAULT_CARD_SURFACE_REFERENCE, } from '@brand-page/utils';
4
4
  import { contentSettingsTr } from '@src/composables/useTranslate';
5
+ import { rteDoc } from '@shared/rte-render.util';
6
+ import { omitTypography } from '@shared/text-role-typography.util';
5
7
  export const createInitialButtonContent = (type, iconUrl, options) => () => {
6
8
  let translatedTitle = '';
7
9
  switch (type) {
@@ -51,7 +53,7 @@ export const createInitialButtonContent = (type, iconUrl, options) => () => {
51
53
  title,
52
54
  titleStyle: {
53
55
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
54
- textStyleType: TEXT_STYLE_TYPES.buttons,
56
+ textStyleType: TEXT_STYLE_TYPES.button,
55
57
  textAlign: 'center',
56
58
  },
57
59
  url: '',
@@ -76,7 +78,7 @@ export const createInitialGeneralLinkContent = (type, iconUrl, options) => () =>
76
78
  page: '',
77
79
  titleStyle: {
78
80
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
79
- textStyleType: TEXT_STYLE_TYPES.buttons,
81
+ textStyleType: TEXT_STYLE_TYPES.button,
80
82
  textAlign: 'center',
81
83
  },
82
84
  fieldRole: 'button',
@@ -120,27 +122,27 @@ export const createInitialVideoContent = () => {
120
122
  export const createInitialProfileContent = (options) => {
121
123
  return {
122
124
  id: uuid.v4(),
123
- description: contentSettingsTr(`defaultDescription`),
125
+ description: rteDoc(contentSettingsTr(`defaultDescription`)),
124
126
  avatarImageUrl: '',
125
- name: contentSettingsTr(`nameTitle`),
126
- title: contentSettingsTr(`titleTitle`),
127
+ name: rteDoc(contentSettingsTr(`nameTitle`)),
128
+ title: rteDoc(contentSettingsTr(`titleTitle`)),
127
129
  type: 'profile',
128
130
  backgroundColor: {},
129
131
  colorReplacements: [],
130
132
  mediaType: 'image',
131
133
  titleStyle: {
132
134
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
133
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
135
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
134
136
  textAlign: 'center',
135
137
  },
136
138
  descriptionStyle: {
137
139
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
138
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
140
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
139
141
  textAlign: 'center',
140
142
  },
141
143
  nameStyle: {
142
144
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
143
- textStyleType: TEXT_STYLE_TYPES.headings,
145
+ textStyleType: TEXT_STYLE_TYPES.heading5,
144
146
  textAlign: 'center',
145
147
  },
146
148
  };
@@ -149,17 +151,16 @@ export const createInitialTextContent = (options) => {
149
151
  return {
150
152
  iconUrl: '',
151
153
  id: uuid.v4(),
152
- text: contentSettingsTr(`defaultTextValue`),
154
+ text: rteDoc(contentSettingsTr(`defaultTextValue`)),
153
155
  textItems: options?.brandPageType === 'brandSite'
154
156
  ? [
155
157
  {
156
158
  id: uuid.v4(),
157
- text: contentSettingsTr(`defaultTextValue`),
159
+ text: rteDoc(contentSettingsTr(`defaultTextValue`)),
158
160
  textStyle: {
159
161
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
160
- fontSize: FONT_SIZE_BODY,
161
162
  textAlign: 'left',
162
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
163
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
163
164
  },
164
165
  },
165
166
  ]
@@ -168,13 +169,9 @@ export const createInitialTextContent = (options) => {
168
169
  // Brand Site text blocks sit in a 12px outer padding; Brand Page / Brand Contact use 0.
169
170
  topPadding: options?.brandPageType === BRAND_PAGE_TYPES.brandSite ? 12 : 0,
170
171
  bottomPadding: options?.brandPageType === BRAND_PAGE_TYPES.brandSite ? 12 : 0,
171
- textSize: {
172
- fontSize: FONT_SIZE_BODY,
173
- lineHeight: LINE_HEIGHT_BODY,
174
- },
175
172
  textStyle: {
176
173
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
177
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
174
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
178
175
  textAlign: 'center',
179
176
  },
180
177
  columnStyle: TEXT_COLUMNS[1],
@@ -219,17 +216,17 @@ export const createInitialMailingListContent = (options) => {
219
216
  type: 'mailing-list',
220
217
  topPadding: 0,
221
218
  bottomPadding: 0,
222
- title: contentSettingsTr(`mailingListTitle`),
219
+ title: rteDoc(contentSettingsTr(`mailingListTitle`)),
223
220
  buttonText: contentSettingsTr(`subscribePlaceholder`),
224
221
  acceptedFields: 'emailOnly',
225
222
  titleStyle: {
226
223
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
227
- textStyleType: TEXT_STYLE_TYPES.headings,
224
+ textStyleType: TEXT_STYLE_TYPES.heading5,
228
225
  textAlign: 'center',
229
226
  },
230
227
  buttonTextStyle: {
231
228
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
232
- textStyleType: TEXT_STYLE_TYPES.buttons,
229
+ textStyleType: TEXT_STYLE_TYPES.button,
233
230
  textAlign: 'center',
234
231
  },
235
232
  // Card surface defaults to the neutral-light role — a light panel any global text
@@ -241,7 +238,7 @@ export const createInitialMailingListContent = (options) => {
241
238
  export const createInitialRequestPaymentContent = (options) => {
242
239
  return {
243
240
  id: uuid.v4(),
244
- description: '',
241
+ description: rteDoc(''),
245
242
  displayStyle: DISPLAY_STYLE_PREVIEW,
246
243
  requestPaymentConfig: {
247
244
  paymentOptions: [],
@@ -251,7 +248,7 @@ export const createInitialRequestPaymentContent = (options) => {
251
248
  paymentOptionImageType: PAYMENT_OPTION_IMAGE_TYPES.auto,
252
249
  },
253
250
  successMessage: '',
254
- title: contentSettingsTr(`buyNowTitle`),
251
+ title: rteDoc(contentSettingsTr(`buyNowTitle`)),
255
252
  type: 'request-payment',
256
253
  topPadding: 0,
257
254
  bottomPadding: 0,
@@ -260,22 +257,25 @@ export const createInitialRequestPaymentContent = (options) => {
260
257
  selectedBorderColor: {},
261
258
  titleStyle: {
262
259
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
263
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
260
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
264
261
  textAlign: 'center',
265
262
  },
266
263
  descriptionStyle: {
267
264
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
268
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
265
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
269
266
  textAlign: 'center',
270
267
  },
268
+ successMessageStyle: {
269
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
270
+ },
271
271
  itemTextStyle: {
272
272
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
273
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
273
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
274
274
  textAlign: 'left',
275
275
  },
276
276
  buttonTextStyle: {
277
277
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
278
- textStyleType: TEXT_STYLE_TYPES.buttons,
278
+ textStyleType: TEXT_STYLE_TYPES.button,
279
279
  textAlign: 'center',
280
280
  },
281
281
  // Card surface defaults to the neutral-light role — a light panel any global text
@@ -287,35 +287,38 @@ export const createInitialRequestPaymentContent = (options) => {
287
287
  export const createInitialShopContent = (options) => {
288
288
  return {
289
289
  id: uuid.v4(),
290
- description: '',
290
+ description: rteDoc(''),
291
291
  topPadding: 16,
292
292
  bottomPadding: 16,
293
293
  products: [],
294
294
  displayStyle: PAYMENT_OPTION_DISPLAY_TYPES.thumbnail,
295
295
  aspectRatio: PAYMENT_OPTION_IMAGE_TYPES.auto,
296
- title: contentSettingsTr(`shopTitle`),
296
+ title: rteDoc(contentSettingsTr(`shopTitle`)),
297
297
  type: 'shop-section',
298
298
  fillColor: {},
299
299
  successMessage: '',
300
300
  defaultBorderColor: {},
301
301
  titleStyle: {
302
302
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
303
- textStyleType: TEXT_STYLE_TYPES.titles,
303
+ textStyleType: TEXT_STYLE_TYPES.heading4,
304
304
  textAlign: 'center',
305
305
  },
306
306
  descriptionStyle: {
307
307
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
308
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
308
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
309
309
  textAlign: 'center',
310
310
  },
311
+ successMessageStyle: {
312
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
313
+ },
311
314
  itemTextStyle: {
312
315
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
313
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
316
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
314
317
  textAlign: 'left',
315
318
  },
316
319
  buttonTextStyle: {
317
320
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
318
- textStyleType: TEXT_STYLE_TYPES.buttons,
321
+ textStyleType: TEXT_STYLE_TYPES.button,
319
322
  textAlign: 'center',
320
323
  },
321
324
  backgroundStyle: {},
@@ -342,35 +345,38 @@ export const createInitialSupportMeContent = (options) => {
342
345
  isCustomerMessageEnabled: true,
343
346
  },
344
347
  displayStyle: DISPLAY_STYLE_PREVIEW,
345
- title: contentSettingsTr(`supportMeTitle`),
348
+ title: rteDoc(contentSettingsTr(`supportMeTitle`)),
346
349
  successMessage: contentSettingsTr(`successSupportPlaceholder`),
347
- description: contentSettingsTr(`makeADonationDescription`),
350
+ description: rteDoc(contentSettingsTr(`makeADonationDescription`)),
348
351
  type: 'support-me',
349
352
  topPadding: 0,
350
353
  bottomPadding: 0,
351
354
  titleStyle: {
352
355
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
353
- textStyleType: TEXT_STYLE_TYPES.headings,
356
+ textStyleType: TEXT_STYLE_TYPES.heading5,
354
357
  textAlign: 'center',
355
358
  },
356
359
  headingStyle: {
357
360
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
358
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
361
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
359
362
  textAlign: 'center',
360
363
  },
361
364
  descriptionStyle: {
362
365
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
363
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
366
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
364
367
  textAlign: 'center',
365
368
  },
369
+ successMessageStyle: {
370
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
371
+ },
366
372
  itemTextStyle: {
367
373
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
368
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
374
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
369
375
  textAlign: 'center',
370
376
  },
371
377
  buttonTextStyle: {
372
378
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
373
- textStyleType: TEXT_STYLE_TYPES.buttons,
379
+ textStyleType: TEXT_STYLE_TYPES.button,
374
380
  textAlign: 'center',
375
381
  },
376
382
  // Card surface defaults to the neutral-light role — a light panel any global text
@@ -390,8 +396,8 @@ export const createInitialContactFormContent = (options) => {
390
396
  const padding = CONTACT_FORM_LAYOUT_DEFAULT_PADDING[layoutStyle] ?? 0;
391
397
  return {
392
398
  id: uuid.v4(),
393
- title: contentSettingsTr(`contactUsTitle`),
394
- description: '',
399
+ title: rteDoc(contentSettingsTr(`contactUsTitle`)),
400
+ description: rteDoc(''),
395
401
  buttonText: contentSettingsTr(`sendPlaceholder`),
396
402
  displayStyle: DISPLAY_STYLE_PREVIEW,
397
403
  layoutStyle,
@@ -456,7 +462,7 @@ export const createInitialContactFormContent = (options) => {
456
462
  type: 'text',
457
463
  },
458
464
  ],
459
- successMessage: contentSettingsTr(`formSuccessMessage`),
465
+ successMessage: rteDoc(contentSettingsTr(`formSuccessMessage`)),
460
466
  responseEmail: options?.userState.emailAddress || '',
461
467
  type: 'contact-form',
462
468
  // brand-site: card layouts default to the logo bg. brand-page/brand-contact:
@@ -468,20 +474,20 @@ export const createInitialContactFormContent = (options) => {
468
474
  backgroundStyle: {},
469
475
  titleStyle: {
470
476
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
471
- textStyleType: TEXT_STYLE_TYPES.titles,
477
+ textStyleType: TEXT_STYLE_TYPES.heading4,
472
478
  textAlign: 'center',
473
479
  },
474
480
  descriptionStyle: {
475
481
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
476
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
482
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
477
483
  textAlign: 'center',
478
484
  },
479
485
  successMessageStyle: {
480
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
486
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
481
487
  },
482
488
  buttonTextStyle: {
483
489
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
484
- textStyleType: TEXT_STYLE_TYPES.buttons,
490
+ textStyleType: TEXT_STYLE_TYPES.button,
485
491
  textAlign: 'center',
486
492
  },
487
493
  };
@@ -492,8 +498,12 @@ export const createInitialBannerSectionContent = (options) => {
492
498
  topPadding: 32,
493
499
  bottomPadding: 32,
494
500
  imageUrl: '',
495
- title: contentSettingsTr(`thisIsABannerTitle`),
496
- description: '',
501
+ // BP-5969: RTE fields are authored as Tiptap docs at their SOURCE (the factory), not plain
502
+ // strings that a later step converts. Colour + role typography are baked into the doc by the
503
+ // init step (applyTextContrast + authorContentRteFields); textAlign is stamped there from the
504
+ // style, so it isn't duplicated here. Empty description is still a doc (empty paragraph).
505
+ title: rteDoc(contentSettingsTr(`thisIsABannerTitle`)),
506
+ description: rteDoc(''),
497
507
  buttonText: contentSettingsTr(`getStartedButtonText`),
498
508
  url: '',
499
509
  colorReplacements: [],
@@ -501,12 +511,12 @@ export const createInitialBannerSectionContent = (options) => {
501
511
  displayStyle: 'centered',
502
512
  descriptionStyle: {
503
513
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
504
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
514
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
505
515
  textAlign: 'center',
506
516
  },
507
517
  titleStyle: {
508
518
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
509
- textStyleType: TEXT_STYLE_TYPES.titles,
519
+ textStyleType: TEXT_STYLE_TYPES.heading4,
510
520
  textAlign: 'center',
511
521
  },
512
522
  cardStyle: {
@@ -517,7 +527,7 @@ export const createInitialBannerSectionContent = (options) => {
517
527
  buttonLinkType: BUTTON_LINK_TYPE.url,
518
528
  buttonTextStyle: {
519
529
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
520
- textStyleType: TEXT_STYLE_TYPES.buttons,
530
+ textStyleType: TEXT_STYLE_TYPES.button,
521
531
  textAlign: 'center',
522
532
  },
523
533
  overlayColor: {
@@ -529,8 +539,8 @@ export const createInitialBannerSectionContent = (options) => {
529
539
  export const createInitialBookingSectionContent = (options) => {
530
540
  return {
531
541
  id: uuid.v4(),
532
- title: contentSettingsTr(`defaultBookingTitle`),
533
- description: contentSettingsTr(`defaultBookingDescription`),
542
+ title: rteDoc(contentSettingsTr(`defaultBookingTitle`)),
543
+ description: rteDoc(contentSettingsTr(`defaultBookingDescription`)),
534
544
  buttonText: contentSettingsTr(`bookNowLabel`),
535
545
  url: '',
536
546
  type: 'booking-section',
@@ -538,12 +548,12 @@ export const createInitialBookingSectionContent = (options) => {
538
548
  bottomPadding: 32,
539
549
  descriptionStyle: {
540
550
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
541
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
551
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
542
552
  textAlign: 'center',
543
553
  },
544
554
  titleStyle: {
545
555
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
546
- textStyleType: TEXT_STYLE_TYPES.titles,
556
+ textStyleType: TEXT_STYLE_TYPES.heading4,
547
557
  textAlign: 'center',
548
558
  },
549
559
  backgroundStyle: {},
@@ -551,7 +561,7 @@ export const createInitialBookingSectionContent = (options) => {
551
561
  buttonLinkType: BUTTON_LINK_TYPE.url,
552
562
  buttonTextStyle: {
553
563
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
554
- textStyleType: TEXT_STYLE_TYPES.buttons,
564
+ textStyleType: TEXT_STYLE_TYPES.button,
555
565
  textAlign: 'center',
556
566
  },
557
567
  };
@@ -559,8 +569,8 @@ export const createInitialBookingSectionContent = (options) => {
559
569
  export const createInitialImagesSectionContent = (options) => {
560
570
  return {
561
571
  id: uuid.v4(),
562
- title: contentSettingsTr(`imagesTitle`),
563
- description: '',
572
+ title: rteDoc(contentSettingsTr(`imagesTitle`)),
573
+ description: rteDoc(''),
564
574
  type: 'images-section',
565
575
  topPadding: 32,
566
576
  bottomPadding: 32,
@@ -585,27 +595,27 @@ export const createInitialImagesSectionContent = (options) => {
585
595
  cardStyle: {},
586
596
  titleStyle: {
587
597
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
588
- textStyleType: TEXT_STYLE_TYPES.titles,
598
+ textStyleType: TEXT_STYLE_TYPES.heading4,
589
599
  textAlign: 'center',
590
600
  },
591
601
  descriptionStyle: {
592
602
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
593
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
603
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
594
604
  textAlign: 'center',
595
605
  },
596
606
  headingStyle: {
597
607
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
598
- textStyleType: TEXT_STYLE_TYPES.headings,
608
+ textStyleType: TEXT_STYLE_TYPES.heading5,
599
609
  textAlign: 'center',
600
610
  },
601
611
  paragraphStyle: {
602
612
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
603
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
613
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
604
614
  textAlign: 'center',
605
615
  },
606
616
  buttonTextStyle: {
607
617
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
608
- textStyleType: TEXT_STYLE_TYPES.buttons,
618
+ textStyleType: TEXT_STYLE_TYPES.button,
609
619
  textAlign: 'center',
610
620
  },
611
621
  };
@@ -613,7 +623,7 @@ export const createInitialImagesSectionContent = (options) => {
613
623
  export const createInitialTestimonialSectionContent = (options) => {
614
624
  return {
615
625
  id: uuid.v4(),
616
- title: contentSettingsTr(`testimonialsTitle`),
626
+ title: rteDoc(contentSettingsTr(`testimonialsTitle`)),
617
627
  type: 'testimonial-section',
618
628
  displayStyle: 'centered',
619
629
  topPadding: TESTIMONIAL_DEFAULT_PADDING,
@@ -621,22 +631,22 @@ export const createInitialTestimonialSectionContent = (options) => {
621
631
  items: [],
622
632
  titleStyle: {
623
633
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
624
- textStyleType: TEXT_STYLE_TYPES.titles,
634
+ textStyleType: TEXT_STYLE_TYPES.heading4,
625
635
  textAlign: 'center',
626
636
  },
627
637
  testimonialStyle: {
628
638
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
629
- textStyleType: TEXT_STYLE_TYPES.headings,
639
+ textStyleType: TEXT_STYLE_TYPES.heading5,
630
640
  textAlign: 'center',
631
641
  },
632
642
  nameStyle: {
633
643
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
634
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
644
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
635
645
  textAlign: 'center',
636
646
  },
637
647
  positionStyle: {
638
648
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
639
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
649
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
640
650
  textAlign: 'center',
641
651
  },
642
652
  backgroundStyle: {},
@@ -647,19 +657,19 @@ export const createInitialAboutSectionContent = (options) => {
647
657
  return {
648
658
  id: uuid.v4(),
649
659
  imageUrl: '',
650
- title: contentSettingsTr(`aboutSectionTitle`),
660
+ title: rteDoc(contentSettingsTr(`aboutSectionTitle`)),
651
661
  type: 'about-section',
652
662
  displayStyle: 'centered',
653
- paragraph: '',
663
+ paragraph: rteDoc(''),
654
664
  colorReplacements: [],
655
665
  titleStyle: {
656
666
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
657
- textStyleType: TEXT_STYLE_TYPES.titles,
667
+ textStyleType: TEXT_STYLE_TYPES.heading4,
658
668
  textAlign: 'center',
659
669
  },
660
670
  paragraphStyle: {
661
671
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
662
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
672
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
663
673
  textAlign: 'center',
664
674
  },
665
675
  backgroundStyle: {},
@@ -691,6 +701,27 @@ export const createDefaultLogoTheme = () => {
691
701
  },
692
702
  };
693
703
  };
704
+ /**
705
+ * Runs after migration on a blank site, so its header and footer text starts on its role with no
706
+ * typography of its own. The blank model has no version, so every migration runs on it and keeps the
707
+ * retired look as that text's own values; the model defaults can't change because released
708
+ * migrations read them. The Save Contact label (brand.contact only) joins the same pass: migration-22
709
+ * seeds it with typography of its own too.
710
+ */
711
+ export const applyBlankSiteTextRoles = (model) => {
712
+ const onRole = (style, textStyleType) => ({ ...omitTypography(style), textStyleType });
713
+ for (const footer of [model.pageFooterDesktop, model.pageFooterMobile]) {
714
+ footer.copyrightStyle = onRole(footer.copyrightStyle, TEXT_STYLE_TYPES.paragraph2);
715
+ }
716
+ for (const header of [model.pageHeaderDesktop, model.pageHeaderMobile]) {
717
+ const { navigation } = header;
718
+ navigation.defaultButtonStyle = onRole(navigation.defaultButtonStyle, TEXT_STYLE_TYPES.paragraph1);
719
+ navigation.hamburgerMenuStyle.defaultButtonStyle = onRole(navigation.hamburgerMenuStyle.defaultButtonStyle, TEXT_STYLE_TYPES.button);
720
+ }
721
+ if (model.saveContactSettings?.buttonTextStyle) {
722
+ model.saveContactSettings.buttonTextStyle = onRole(model.saveContactSettings.buttonTextStyle, TEXT_STYLE_TYPES.button);
723
+ }
724
+ };
694
725
  export const createInitialBrandPage = (brandPageType) => {
695
726
  return new BrandPageModel({
696
727
  brandPageType: brandPageType,
@@ -719,7 +750,7 @@ export const createInitialSocialLinksContent = (options) => {
719
750
  type: 'social-links',
720
751
  topPadding: 32,
721
752
  bottomPadding: 32,
722
- title: contentSettingsTr(`followUsOnTitle`),
753
+ title: rteDoc(contentSettingsTr(`followUsOnTitle`)),
723
754
  links: [
724
755
  {
725
756
  id: uuid.v4(),
@@ -761,7 +792,7 @@ export const createInitialSocialLinksContent = (options) => {
761
792
  backgroundStyles: {},
762
793
  titleStyle: {
763
794
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
764
- textStyleType: TEXT_STYLE_TYPES.titles,
795
+ textStyleType: TEXT_STYLE_TYPES.heading4,
765
796
  textAlign: 'center',
766
797
  },
767
798
  };
@@ -769,8 +800,8 @@ export const createInitialSocialLinksContent = (options) => {
769
800
  export const createInitialShapesSectionContent = (options) => {
770
801
  return {
771
802
  id: uuid.v4(),
772
- title: contentSettingsTr(`shapesTitle`),
773
- description: '',
803
+ title: rteDoc(contentSettingsTr(`shapesTitle`)),
804
+ description: rteDoc(''),
774
805
  type: 'shapes-section',
775
806
  topPadding: 32,
776
807
  bottomPadding: 32,
@@ -795,22 +826,22 @@ export const createInitialShapesSectionContent = (options) => {
795
826
  size: '4rem',
796
827
  titleStyle: {
797
828
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
798
- textStyleType: TEXT_STYLE_TYPES.titles,
829
+ textStyleType: TEXT_STYLE_TYPES.heading4,
799
830
  textAlign: 'center',
800
831
  },
801
832
  descriptionStyle: {
802
833
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
803
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
834
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
804
835
  textAlign: 'center',
805
836
  },
806
837
  headingStyle: {
807
838
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
808
- textStyleType: TEXT_STYLE_TYPES.headings,
839
+ textStyleType: TEXT_STYLE_TYPES.heading5,
809
840
  textAlign: 'center',
810
841
  },
811
842
  paragraphStyle: {
812
843
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
813
- textStyleType: TEXT_STYLE_TYPES.paragraphs,
844
+ textStyleType: TEXT_STYLE_TYPES.paragraph2,
814
845
  textAlign: 'center',
815
846
  },
816
847
  };
@@ -1,3 +1,3 @@
1
1
  import type { AdminPreviewLogoTemplateModel, AdminPreviewLogoTemplateTemplate } from './admin-logo-settings-store';
2
- import type { BrandPageType, ColorItem, Content } from '@brand-page';
3
- export declare const mapAdminPreviewLogoTemplateModelToAdminLogoTemplateTemplate: (contents: Content[], brandPageType: BrandPageType, colors: ColorItem[]) => (templateModel: AdminPreviewLogoTemplateModel) => AdminPreviewLogoTemplateTemplate;
2
+ import type { BrandPageType, ColorItem, Content, TextStyles } from '@brand-page';
3
+ export declare const mapAdminPreviewLogoTemplateModelToAdminLogoTemplateTemplate: (contents: Content[], brandPageType: BrandPageType, colors: ColorItem[], textStyles: TextStyles) => (templateModel: AdminPreviewLogoTemplateModel) => AdminPreviewLogoTemplateTemplate;
@@ -1,13 +1,16 @@
1
1
  import { BrandPageModel, PageStyles } from '@brand-page';
2
2
  import { applyLogoThemeToBrandPageModel, parseLogoThemeToCssStyles, logoUtil, } from '@brand-page/utils';
3
- export const mapAdminPreviewLogoTemplateModelToAdminLogoTemplateTemplate = (contents, brandPageType, colors) => (templateModel) => {
3
+ export const mapAdminPreviewLogoTemplateModelToAdminLogoTemplateTemplate = (contents, brandPageType, colors, textStyles) => (templateModel) => {
4
4
  const logoTheme = parseLogoThemeToCssStyles(templateModel.logoTheme);
5
5
  // `contents` hold `var(--palette-…)` references, so the card model must carry
6
6
  // the palette that DEFINES those ids — without it the card's scoped var block
7
7
  // emits nothing and every reference falls back to the maker canvas's `:root`,
8
8
  // painting all cards the same. The bake then anchors it to this template's
9
9
  // logo: roles 0/1 from the logoTheme, neutrals re-derived, customs untouched.
10
- const { model } = applyLogoThemeToBrandPageModel(logoTheme, new BrandPageModel({ contents, styles: new PageStyles({ colors }) }));
10
+ const { model } = applyLogoThemeToBrandPageModel(logoTheme, new BrandPageModel({
11
+ contents,
12
+ styles: new PageStyles({ colors, textStyles }),
13
+ }));
11
14
  const templateModelLogoImage = logoUtil.safeGetLogoTemplateImageFromLogoTemplateImageUrl(templateModel.logoImageUrl);
12
15
  return {
13
16
  id: templateModel.logoTemplateToken,
@@ -5,6 +5,7 @@ import { useUiStore } from '../ui';
5
5
  import { useUiLogoSettingsStore, } from '@shared/logo-settings/store';
6
6
  import { useUiBackgroundSettingsStore } from '@shared/background-settings/store';
7
7
  import { useUiColorPaletteStore } from '@shared/color-palette/store';
8
+ import { useUiStyleSettingsStore } from '@shared/style-settings/store';
8
9
  import { parseLogoThemeToCssStyles, logoUtil } from '@brand-page/utils';
9
10
  import { mapAdminPreviewLogoTemplateModelToAdminLogoTemplateTemplate } from './admin-logo-settings-store-utils';
10
11
  import { useBrandPageMakerStore } from '../brandpage-maker';
@@ -84,9 +85,9 @@ export const useAdminLogoSettingsStore = defineStore('adminLogoSettings', {
84
85
  const brandPageMakerStore = useBrandPageMakerStore();
85
86
  const contents = contentSettingsStore.items.map((i) => i.settings.content);
86
87
  return this.previewLogoTemplateModels.map(mapAdminPreviewLogoTemplateModelToAdminLogoTemplateTemplate(contents, brandPageMakerStore.brandPageType,
87
- // Contents and their palette travel together — the card scope must
88
- // define every var(--id) the contents reference.
89
- useUiColorPaletteStore().colors));
88
+ // Contents travel with the styles they reference — the card scope must define
89
+ // every var(--id) and every role the contents use.
90
+ useUiColorPaletteStore().colors, useUiStyleSettingsStore().textStyles));
90
91
  },
91
92
  },
92
93
  });