@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.
- package/lib/src/{CreatedOnBrandCrowd-de-de-DDcraD5S.js → CreatedOnBrandCrowd-de-de-BtVKllNQ.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-en-us-DtOeaisf.js → CreatedOnBrandCrowd-en-us-CX5V0v8u.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-es-es-BZpmJPew.js → CreatedOnBrandCrowd-es-es-CbA02PCL.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-fr-CqRwC4e7.js → CreatedOnBrandCrowd-fr-ca-BQAKruBF.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-ca-CqRwC4e7.js → CreatedOnBrandCrowd-fr-fr-BQAKruBF.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-pt-DId9Dfjh.js → CreatedOnBrandCrowd-pt-br-Yk_yzB3s.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-br-DId9Dfjh.js → CreatedOnBrandCrowd-pt-pt-Yk_yzB3s.js} +1 -1
- package/lib/src/{CreatedOnDcom-de-de-BTDfmOcm.js → CreatedOnDcom-de-de-DJZQbPSD.js} +1 -1
- package/lib/src/{CreatedOnDcom-en-us-CeAu9Ayx.js → CreatedOnDcom-en-us-BJvNAa4l.js} +1 -1
- package/lib/src/{CreatedOnDcom-es-es-WCv0K41H.js → CreatedOnDcom-es-es-CUwB1FRY.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-ca-BlfevQDY.js → CreatedOnDcom-fr-ca-CK54U4oh.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-fr-Cvt7MHPZ.js → CreatedOnDcom-fr-fr-DuUNBGrM.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-br-DipZuylv.js → CreatedOnDcom-pt-br-BfODpFNV.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-pt-BCw4lcKN.js → CreatedOnDcom-pt-pt-Cf6u2GCg.js} +1 -1
- package/lib/src/brand-page/__fixtures__/production-text-style-resolver.fixture.d.ts +16 -0
- package/lib/src/brand-page/__fixtures__/production-text-style-resolver.fixture.js +35 -0
- package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +3 -0
- package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +19 -13
- package/lib/src/brand-page/components/mailing-list/MailingList.mixin.d.ts +3 -1
- package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +17 -2
- package/lib/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.mixin.d.ts +11 -3
- package/lib/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.mixin.js +35 -1
- package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.d.ts +8 -2
- package/lib/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.js +27 -3
- package/lib/src/brand-page/components/page/Page.mixin.d.ts +5 -2
- package/lib/src/brand-page/components/page/Page.mixin.js +33 -27
- package/lib/src/brand-page/components/page-footer/PageFooter.mixin.d.ts +7 -2
- package/lib/src/brand-page/components/page-footer/PageFooter.mixin.js +21 -1
- package/lib/src/brand-page/components/payment/Payment.mixin.d.ts +5 -2
- package/lib/src/brand-page/components/payment/Payment.mixin.js +22 -2
- package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.d.ts +6 -2
- package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.js +32 -1
- package/lib/src/brand-page/components/social-links/SocialLinks.stories.js +0 -3
- package/lib/src/brand-page/components/testimonial-section/__fixtures__/data.js +0 -3
- package/lib/src/brand-page/components/text/Text.stories.js +0 -17
- package/lib/src/brand-page/constants/font.constants.d.ts +62 -0
- package/lib/src/brand-page/constants/font.constants.js +35 -0
- package/lib/src/brand-page/models/index.d.ts +23 -24
- package/lib/src/brand-page/models/index.js +20 -7
- package/lib/src/brand-page/models/navigation-styles.model.d.ts +1 -1
- package/lib/src/brand-page/models/navigation-styles.model.js +17 -8
- package/lib/src/brand-page/models/payment.model.d.ts +11 -6
- package/lib/src/brand-page/models/styles.model.d.ts +53 -7
- package/lib/src/brand-page/models/styles.model.js +115 -27
- package/lib/src/brand-page/utils/color-palette.util.d.ts +43 -23
- package/lib/src/brand-page/utils/color-palette.util.js +65 -27
- package/lib/src/brand-page/utils/color.util.d.ts +13 -9
- package/lib/src/brand-page/utils/color.util.js +56 -15
- package/lib/src/brand-page/utils/container-text-color.util.d.ts +46 -13
- package/lib/src/brand-page/utils/container-text-color.util.js +321 -41
- package/lib/src/brand-page/utils/index.d.ts +1 -0
- package/lib/src/brand-page/utils/index.js +1 -0
- package/lib/src/brand-page/utils/migration/migration-20.js +6 -2
- package/lib/src/brand-page/utils/migration/migration-21.js +34 -6
- package/lib/src/brand-page/utils/migration/migration-22.d.ts +99 -0
- package/lib/src/brand-page/utils/migration/migration-22.js +909 -0
- package/lib/src/brand-page/utils/migration.util.js +17 -0
- package/lib/src/brand-page/utils/model.util.d.ts +4 -0
- package/lib/src/brand-page/utils/model.util.js +4 -0
- package/lib/src/brand-page/utils/personalisation.util.js +9 -1
- package/lib/src/brand-page/utils/rte-role-lift.util.d.ts +72 -0
- package/lib/src/brand-page/utils/rte-role-lift.util.js +275 -0
- package/lib/src/brand-page/utils/style.util.d.ts +5 -1
- package/lib/src/brand-page/utils/style.util.js +34 -11
- package/lib/src/brand-page/utils/text-role-css.util.d.ts +19 -0
- package/lib/src/brand-page/utils/text-role-css.util.js +186 -0
- package/lib/src/brand-page/utils/text-role-reconnect.util.d.ts +90 -0
- package/lib/src/brand-page/utils/text-role-reconnect.util.js +434 -0
- package/lib/src/brand-page/utils/text-style.util.d.ts +53 -23
- package/lib/src/brand-page/utils/text-style.util.js +122 -22
- package/lib/src/brand-page/utils/view-model.util.d.ts +9 -1
- package/lib/src/brand-page/utils/view-model.util.js +124 -111
- package/lib/src/brand-page/view-models.d.ts +1 -0
- package/lib/src/brand-page-maker/components/action-bar/ActionBar.mixin.d.ts +4 -1
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +13 -2
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +4 -4
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMakerTemplateSettings.mixin.d.ts +4 -1
- package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.js +0 -10
- package/lib/src/brand-page-maker/components/brand-page-maker/__fixtures__/content-settings-items.fixture.js +0 -1
- package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +23 -138
- package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.js +0 -28
- package/lib/src/brand-page-maker/components/brandpage-settings/ReplaceImageSettingsForBrandPageSettings.mixin.d.ts +4 -1
- package/lib/src/brand-page-maker/components/navigation/Navigation.mixin.d.ts +1 -1
- package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +5 -2
- package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +4 -1
- package/lib/src/brand-page-maker/components/social-share/SocialShare.mixin.d.ts +4 -1
- package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +4 -1
- package/lib/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.d.ts +1 -0
- package/lib/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.js +1 -0
- package/lib/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.js +1 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/RoleTypographyFill.d.ts +16 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/RoleTypographyFill.js +61 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/RteClipboard.d.ts +11 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/RteClipboard.js +236 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/font.d.ts +2 -1
- package/lib/src/brand-page-maker/composables/rich-text-editor/font.js +25 -6
- package/lib/src/brand-page-maker/composables/rich-text-editor/formatting.d.ts +17 -4
- package/lib/src/brand-page-maker/composables/rich-text-editor/formatting.js +204 -17
- package/lib/src/brand-page-maker/composables/rich-text-editor/hyperlink.d.ts +1 -1
- package/lib/src/brand-page-maker/composables/rich-text-editor/hyperlink.js +29 -31
- package/lib/src/brand-page-maker/composables/rich-text-editor/keepMarksOnEmpty.d.ts +20 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/keepMarksOnEmpty.js +60 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/spacing.d.ts +2 -1
- package/lib/src/brand-page-maker/composables/rich-text-editor/spacing.js +22 -6
- package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +10 -4
- package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +319 -275
- package/lib/src/brand-page-maker/constants/config-settings-constant.js +1 -5
- package/lib/src/brand-page-maker/convertors/text-css-style-options.convertor.js +6 -2
- package/lib/src/brand-page-maker/convertors/text-size-value.convertor.d.ts +1 -1
- package/lib/src/brand-page-maker/convertors/text-size-value.convertor.js +3 -1
- package/lib/src/brand-page-maker/default-getters/payment-text-and-border-color.default-getter.js +7 -14
- package/lib/src/brand-page-maker/default-getters/text-color.default-getter.js +6 -13
- package/lib/src/brand-page-maker/models/content-settings.d.ts +8 -0
- package/lib/src/brand-page-maker/models/content-settings.js +112 -81
- package/lib/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.d.ts +2 -2
- package/lib/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.js +5 -2
- package/lib/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.js +4 -3
- package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +1257 -117
- package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.d.ts +6 -1
- package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +17 -9
- package/lib/src/brand-page-maker/stores/history/history-store.d.ts +59 -5
- package/lib/src/brand-page-maker/stores/history/history-store.js +22 -2
- package/lib/src/brand-page-maker/utils/apply-color-strategy.js +26 -8
- package/lib/src/brand-page-maker/utils/index.d.ts +2 -1
- package/lib/src/brand-page-maker/utils/index.js +2 -1
- package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +117 -15
- package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +435 -281
- package/lib/src/brand-page-maker/utils/rte-authoring.util.d.ts +4 -0
- package/lib/src/brand-page-maker/utils/rte-authoring.util.js +101 -0
- package/lib/src/brand-page-maker/utils/rte-clipboard.util.d.ts +126 -0
- package/lib/src/brand-page-maker/utils/rte-clipboard.util.js +307 -0
- package/lib/src/brand-page-maker/utils/rte-sanitize.util.js +13 -3
- package/lib/src/{bundled-translations-zfiA5Tsw.js → bundled-translations-yGrvPE5i.js} +17 -17
- package/lib/src/{bundled-translations.de-DE-ChsdSyAP.js → bundled-translations.de-DE-L4Znf8Hs.js} +17 -17
- package/lib/src/{bundled-translations.es-ES-DflsWQK0.js → bundled-translations.es-ES-D6iticrK.js} +15 -15
- package/lib/src/{bundled-translations.fr-CA-fpDRuZ52.js → bundled-translations.fr-CA-BgAVE-9k.js} +25 -25
- package/lib/src/{bundled-translations.fr-FR-Bub73Zt-.js → bundled-translations.fr-FR-B8GbyqxQ.js} +17 -17
- package/lib/src/{bundled-translations.pt-BR-BlnWE9TB.js → bundled-translations.pt-BR-DjPU3Db7.js} +25 -25
- package/lib/src/{bundled-translations.pt-PT-DmzXlnaS.js → bundled-translations.pt-PT-BaepaDpr.js} +23 -23
- package/lib/src/bundles/bundled-translations.de-DE.json +21 -2
- package/lib/src/bundles/bundled-translations.es-ES.json +21 -2
- package/lib/src/bundles/bundled-translations.fr-CA.json +21 -2
- package/lib/src/bundles/bundled-translations.fr-FR.json +21 -2
- package/lib/src/bundles/bundled-translations.json +21 -2
- package/lib/src/bundles/bundled-translations.pt-BR.json +21 -2
- package/lib/src/bundles/bundled-translations.pt-PT.json +21 -2
- package/lib/src/clients/ai-assistant-client.d.ts +1 -0
- package/lib/src/composables/useTranslate.d.ts +1 -1
- package/lib/src/composables/useTranslate.js +1 -1
- package/lib/src/css/library.brand-page-brandCrowd.min.css +303 -207
- package/lib/src/css/library.brand-page-brandPage.min.css +303 -207
- package/lib/src/css/library.brand-page-designCom.min.css +303 -207
- package/lib/src/css/library.brand-page-preview.min.css +303 -207
- package/lib/src/index.d.ts +2 -1
- package/lib/src/index.mjs +195 -191
- package/lib/src/{lib-1AqtEmvQ.js → lib-kGRlD3_P.js} +36855 -33893
- package/lib/src/lib.js +2 -1
- package/lib/src/metadata-builder/builders/footer-builder.js +4 -5
- package/lib/src/metadata-builder/builders/global-role-propagation.d.ts +58 -0
- package/lib/src/metadata-builder/builders/global-role-propagation.js +246 -0
- package/lib/src/metadata-builder/builders/global-styles-builder.d.ts +1 -0
- package/lib/src/metadata-builder/builders/global-styles-builder.js +116 -45
- package/lib/src/metadata-builder/builders/header-builder.js +13 -4
- package/lib/src/metadata-builder/builders/section-builders/about-section-builder.js +3 -3
- package/lib/src/metadata-builder/builders/section-builders/banner-section-builder.js +3 -3
- package/lib/src/metadata-builder/builders/section-builders/booking-section-builder.js +3 -3
- package/lib/src/metadata-builder/builders/section-builders/contact-form-builder.js +4 -4
- package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +3 -3
- package/lib/src/metadata-builder/builders/section-builders/mailing-list-builder.js +2 -2
- package/lib/src/metadata-builder/builders/section-builders/mailing-list-section-builder.js +2 -2
- package/lib/src/metadata-builder/builders/section-builders/profile-section-builder.js +4 -4
- package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +3 -3
- package/lib/src/metadata-builder/builders/section-builders/social-links-builder.js +8 -2
- package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +2 -2
- package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +60 -29
- package/lib/src/metadata-builder/builders/section-field-maps.js +1 -0
- package/lib/src/metadata-builder/builders/section-field-utils.d.ts +48 -19
- package/lib/src/metadata-builder/builders/section-field-utils.js +128 -52
- package/lib/src/metadata-builder/builders/section-rules/global-styles.rules.d.ts +4 -2
- package/lib/src/metadata-builder/builders/section-rules/global-styles.rules.js +28 -12
- package/lib/src/metadata-builder/builders/section-rules/social-links.rules.js +5 -1
- package/lib/src/metadata-builder/helpers/rte.helpers.d.ts +1 -1
- package/lib/src/metadata-builder/helpers/rte.helpers.js +97 -40
- package/lib/src/metadata-builder/metadata-executor.js +23 -1
- package/lib/src/metadata-builder/models.d.ts +2 -0
- package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +18 -19
- package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +18 -1
- package/lib/src/metadata-builder/sanitizers/rte-schema-check.js +1 -1
- package/lib/src/metadata-builder/sanitizers/sanitizer-rules.d.ts +0 -1
- package/lib/src/metadata-builder/sanitizers/sanitizer-rules.js +5 -8
- package/lib/src/metadata-builder/sanitizers/section-args-validator.d.ts +7 -16
- package/lib/src/metadata-builder/sanitizers/section-args-validator.js +95 -22
- package/lib/src/shared/color-palette/section-color-matches.js +9 -25
- package/lib/src/shared/color-strategies/color-strategies.d.ts +15 -0
- package/lib/src/shared/color-strategies/color-strategies.js +31 -0
- package/lib/src/shared/color-strategies/rte-color.d.ts +8 -0
- package/lib/src/shared/color-strategies/rte-color.js +16 -0
- package/lib/src/shared/color-strategies/rte-field-pairs.d.ts +23 -0
- package/lib/src/shared/color-strategies/rte-field-pairs.js +28 -0
- package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +9 -135
- package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.js +1 -27
- package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +12 -2
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +7 -0
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +75 -6
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +18 -7
- package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +6 -1
- package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.js +0 -7
- package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +1 -0
- package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +8 -4
- package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.d.ts +1255 -26
- package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.js +203 -59
- package/lib/src/shared/content-settings/store/content-settings-store.d.ts +6 -0
- package/lib/src/shared/content-settings/store/content-settings-store.js +105 -8
- package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +5 -1
- package/lib/src/shared/navigation-style-settings/store/index.d.ts +7 -3
- package/lib/src/shared/navigation-style-settings/store/index.js +40 -15
- package/lib/src/shared/page-settings/components/delete-page-modal/DeletePageModal.mixin.d.ts +1 -1
- package/lib/src/shared/page-settings/components/new-page-modal/NewPageModal.mixin.d.ts +1 -0
- package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +17 -5
- package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +70 -13
- package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.js +10 -2
- package/lib/src/shared/page-settings/store/page-settings-store.d.ts +2 -1
- package/lib/src/shared/page-settings/store/page-settings-store.js +17 -0
- package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +4 -1
- package/lib/src/shared/rte-extensions/AutoLink.d.ts +17 -0
- package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/AutoLink.js +67 -51
- package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/MaxLength.js +4 -1
- package/lib/src/shared/rte-extensions/TextEffects.d.ts +28 -0
- package/lib/src/shared/rte-extensions/TextEffects.js +96 -0
- package/lib/src/shared/rte-extensions/ViewDomParser.d.ts +2 -0
- package/lib/src/shared/rte-extensions/ViewDomParser.js +21 -0
- package/lib/src/shared/rte-extensions.util.d.ts +25 -0
- package/lib/src/{brand-page-maker/composables/rich-text-editor/getRteExtensions.js → shared/rte-extensions.util.js} +62 -7
- package/lib/src/shared/rte-link.util.d.ts +1 -0
- package/lib/src/shared/rte-link.util.js +1 -0
- package/lib/src/shared/rte-render.util.d.ts +112 -0
- package/lib/src/shared/rte-render.util.js +255 -0
- package/lib/src/shared/rte-shape.util.d.ts +6 -0
- package/lib/src/shared/rte-shape.util.js +18 -0
- package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +2 -1
- package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +1 -0
- package/lib/src/shared/side-bar/store/side-bar-store.d.ts +2 -0
- package/lib/src/shared/side-bar/store/side-bar-store.js +9 -0
- package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +155 -15
- package/lib/src/shared/style-settings/components/StyleSettings.mixin.js +7 -1
- package/lib/src/shared/style-settings/store/style-settings-store.d.ts +1 -9
- package/lib/src/shared/style-settings/store/style-settings-store.js +3 -33
- package/lib/src/shared/style-settings/text-style-size-order.d.ts +2 -0
- package/lib/src/shared/style-settings/text-style-size-order.js +13 -0
- package/lib/src/shared/text-role-typography.util.d.ts +64 -0
- package/lib/src/shared/text-role-typography.util.js +183 -0
- package/lib/src/utils/minify-brand-page-metadata.d.ts +16 -1
- package/lib/src/utils/minify-brand-page-metadata.js +31 -9
- package/package.json +1 -1
- package/src/brand-page/__fixtures__/migration-22-v21/edited-brandsite-sections.v21.json +982 -0
- package/src/brand-page/__fixtures__/migration-22-v21/new-brandcontact-every-section.v21.json +1231 -0
- package/src/brand-page/__fixtures__/migration-22-v21/new-brandpage-every-section.v21.json +1231 -0
- package/src/brand-page/__fixtures__/migration-22-v21/new-brandsite-every-section.v21.json +1243 -0
- package/src/brand-page/__fixtures__/migration-22-v21/real-brandcontact.v21.json +755 -0
- package/src/brand-page/__fixtures__/migration-22-v21/real-brandpage-general-link.v21.json +527 -0
- package/src/brand-page/__fixtures__/migration-22-v21/real-brandpage-links.v21.json +755 -0
- package/src/brand-page/__fixtures__/migration-22-v21/real-brandpage-social-links.v21.json +514 -0
- package/src/brand-page/__fixtures__/migration-22-v21/real-brandsite-about.v21.json +459 -0
- package/src/brand-page/__fixtures__/migration-22-v21/real-brandsite-footer.v21.json +469 -0
- package/src/brand-page/__fixtures__/migration-22-v21/real-brandsite-header-banner.v21.json +481 -0
- package/src/brand-page/__fixtures__/migration-22-v21/real-brandsite-sections.v21.json +800 -0
- package/src/brand-page/__fixtures__/production-text-style-resolver.fixture.ts +52 -0
- package/src/brand-page/components/about-section/AboutSection.vue.test.ts +0 -10
- package/src/brand-page/components/contact-form/ContactForm.mixin.test.ts +127 -0
- package/src/brand-page/components/contact-form/ContactForm.mixin.ts +31 -14
- package/src/brand-page/components/contact-form/ContactForm.vue +26 -12
- package/src/brand-page/components/contact-form/ContactForm.vue.test.ts +60 -0
- package/src/brand-page/components/mailing-list/MailingList.mixin.test.ts +92 -0
- package/src/brand-page/components/mailing-list/MailingList.mixin.ts +28 -3
- package/src/brand-page/components/mailing-list/MailingList.vue +9 -4
- package/src/brand-page/components/mailing-list/MailingList.vue.test.ts +63 -0
- package/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.mixin.ts +51 -1
- package/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.test.ts +114 -0
- package/src/brand-page/components/navigation/button-carousel/ButtonCarouselNavigation.vue +8 -2
- package/src/brand-page/components/navigation/navigation-carousel/NavigationCarousel.test.ts +182 -0
- package/src/brand-page/components/navigation/navigation-carousel/NavigationCarousel.vue +59 -12
- package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.mixin.ts +40 -3
- package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.vue +15 -7
- package/src/brand-page/components/navigation/navigation-side-menu/NavigationSideMenu.vue.test.ts +133 -3
- package/src/brand-page/components/page/Page.mixin.ts +41 -34
- package/src/brand-page/components/page/Page.vue +17 -6
- package/src/brand-page/components/page/Page.vue.test.ts +91 -1
- package/src/brand-page/components/page-footer/PageFooter.mixin.ts +32 -2
- package/src/brand-page/components/page-footer/PageFooter.test.ts +79 -0
- package/src/brand-page/components/page-footer/PageFooter.vue +12 -4
- package/src/brand-page/components/payment/Payment.mixin.ts +34 -2
- package/src/brand-page/components/payment/Payment.test.ts +188 -0
- package/src/brand-page/components/payment/Payment.vue +12 -5
- package/src/brand-page/components/payment/RequestPaymentStripe.vue +1 -0
- package/src/brand-page/components/payment/support-me/SupportMe.mixin.ts +49 -2
- package/src/brand-page/components/payment/support-me/SupportMe.test.ts +100 -0
- package/src/brand-page/components/payment/support-me/SupportMe.vue +7 -1
- package/src/brand-page/components/payment/support-me/SupportMe.vue.test.ts +66 -0
- package/src/brand-page/components/save-contact/SaveContactWidget.test.ts +100 -0
- package/src/brand-page/components/save-contact/SaveContactWidget.vue +6 -3
- package/src/brand-page/components/shop/PaymentModal.vue +2 -6
- package/src/brand-page/components/shop/PaymentShippingAddress.vue +6 -0
- package/src/brand-page/components/shop/Shop.vue +15 -2
- package/src/brand-page/components/shop/Shop.vue.test.ts +74 -2
- package/src/brand-page/components/social-links/SocialLinks.stories.ts +0 -3
- package/src/brand-page/components/social-links/SocialLinks.vue.test.ts +0 -3
- package/src/brand-page/components/testimonial-section/__fixtures__/data.ts +0 -3
- package/src/brand-page/components/text/Text.stories.ts +0 -17
- package/src/brand-page/components/text-wrapper/TextWrapper.parity.test.ts +136 -0
- package/src/brand-page/components/text-wrapper/TextWrapper.test.ts +358 -0
- package/src/brand-page/components/text-wrapper/TextWrapper.vue +82 -22
- package/src/brand-page/constants/font.constants.ts +37 -0
- package/src/brand-page/models/footer-icon-color.test.ts +22 -0
- package/src/brand-page/models/index.ts +50 -28
- package/src/brand-page/models/navigation-styles.model.test.ts +77 -1
- package/src/brand-page/models/navigation-styles.model.ts +26 -9
- package/src/brand-page/models/payment.model.ts +15 -6
- package/src/brand-page/models/styles.model.test.ts +104 -0
- package/src/brand-page/models/styles.model.ts +181 -47
- package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +619 -115
- package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +150 -9
- package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +300 -18
- package/src/brand-page/utils/color-palette.util.test.ts +126 -1
- package/src/brand-page/utils/color-palette.util.ts +92 -26
- package/src/brand-page/utils/color.util.test.ts +62 -29
- package/src/brand-page/utils/color.util.ts +77 -14
- package/src/brand-page/utils/container-text-color.util.test.ts +672 -26
- package/src/brand-page/utils/container-text-color.util.ts +472 -46
- package/src/brand-page/utils/index.ts +1 -0
- package/src/brand-page/utils/migration/__snapshots__/migration-22-output/edited-brandsite-sections.v22.json +1191 -0
- package/src/brand-page/utils/migration/__snapshots__/migration-22-output/new-brandcontact-every-section.v22.json +2026 -0
- package/src/brand-page/utils/migration/__snapshots__/migration-22-output/new-brandpage-every-section.v22.json +2017 -0
- package/src/brand-page/utils/migration/__snapshots__/migration-22-output/new-brandsite-every-section.v22.json +2031 -0
- package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandcontact.v22.json +1145 -0
- package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandpage-general-link.v22.json +645 -0
- package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandpage-links.v22.json +1136 -0
- package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandpage-social-links.v22.json +662 -0
- package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-about.v22.json +638 -0
- package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-footer.v22.json +610 -0
- package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-header-banner.v22.json +660 -0
- package/src/brand-page/utils/migration/__snapshots__/migration-22-output/real-brandsite-sections.v22.json +1132 -0
- package/src/brand-page/utils/migration/migration-01.ts +293 -237
- package/src/brand-page/utils/migration/migration-02.ts +8 -1
- package/src/brand-page/utils/migration/migration-20.ts +6 -3
- package/src/brand-page/utils/migration/migration-20_5.test.ts +5 -2
- package/src/brand-page/utils/migration/migration-21.test.ts +34 -0
- package/src/brand-page/utils/migration/migration-21.ts +46 -10
- package/src/brand-page/utils/migration/migration-22.fixed-input.test.ts +43 -0
- package/src/brand-page/utils/migration/migration-22.test.ts +4103 -0
- package/src/brand-page/utils/migration/migration-22.text-font-family.test.ts +72 -0
- package/src/brand-page/utils/migration/migration-22.ts +1336 -0
- package/src/brand-page/utils/migration.util.test.ts +146 -32
- package/src/brand-page/utils/migration.util.ts +18 -0
- package/src/brand-page/utils/model.util.ts +4 -0
- package/src/brand-page/utils/personalisation.util.test.ts +148 -3
- package/src/brand-page/utils/personalisation.util.ts +9 -1
- package/src/brand-page/utils/rte-role-lift.util.ts +409 -0
- package/src/brand-page/utils/style.util.test.ts +35 -2
- package/src/brand-page/utils/style.util.ts +45 -11
- package/src/brand-page/utils/text-role-css.util.test.ts +525 -0
- package/src/brand-page/utils/text-role-css.util.ts +321 -0
- package/src/brand-page/utils/text-role-reconnect.util.test.ts +604 -0
- package/src/brand-page/utils/text-role-reconnect.util.ts +727 -0
- package/src/brand-page/utils/text-style.util.test.ts +305 -0
- package/src/brand-page/utils/text-style.util.ts +198 -24
- package/src/brand-page/utils/view-model.page-data.test.ts +232 -0
- package/src/brand-page/utils/view-model.util.test.ts +954 -133
- package/src/brand-page/utils/view-model.util.ts +187 -139
- package/src/brand-page/view-models.ts +4 -0
- package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.blank-site.test.ts +57 -0
- package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +9 -5
- package/src/brand-page-maker/components/brand-page-maker/__fixtures__/brand-page-examples.ts +0 -10
- package/src/brand-page-maker/components/brand-page-maker/__fixtures__/content-settings-items.fixture.ts +0 -1
- package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.ts +0 -44
- package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +253 -200
- package/src/brand-page-maker/components/shop/AddOrEditProductContainer.vue +1 -0
- package/src/brand-page-maker/components/template-preview/TemplatePreview.vue +1 -0
- package/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.ts +2 -0
- package/src/brand-page-maker/composables/ai-chat/useAiWebsiteBuilderChat.ts +1 -0
- package/src/brand-page-maker/composables/rich-text-editor/block-typography.test.ts +519 -0
- package/src/brand-page-maker/composables/rich-text-editor/extensions/FontFamily.test.ts +1 -1
- package/src/brand-page-maker/composables/rich-text-editor/extensions/MaxLength.test.ts +26 -1
- package/src/brand-page-maker/composables/rich-text-editor/extensions/RoleTypographyFill.test.ts +110 -0
- package/src/brand-page-maker/composables/rich-text-editor/extensions/RoleTypographyFill.ts +99 -0
- package/src/brand-page-maker/composables/rich-text-editor/extensions/RteClipboard.ts +397 -0
- package/src/brand-page-maker/composables/rich-text-editor/extensions/ViewDomParser.test.ts +139 -0
- package/src/brand-page-maker/composables/rich-text-editor/font.ts +36 -5
- package/src/brand-page-maker/composables/rich-text-editor/formatting.test.ts +375 -1
- package/src/brand-page-maker/composables/rich-text-editor/formatting.ts +301 -17
- package/src/brand-page-maker/composables/rich-text-editor/hyperlink.test.ts +82 -1
- package/src/brand-page-maker/composables/rich-text-editor/hyperlink.ts +28 -34
- package/src/brand-page-maker/composables/rich-text-editor/keepMarksOnEmpty.test.ts +80 -0
- package/src/brand-page-maker/composables/rich-text-editor/keepMarksOnEmpty.ts +75 -0
- package/src/brand-page-maker/composables/rich-text-editor/spacing.ts +31 -6
- package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.test.ts +2485 -0
- package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +435 -337
- package/src/brand-page-maker/constants/config-settings-constant.ts +0 -6
- package/src/brand-page-maker/convertors/text-css-style-options.convertor.test.ts +43 -0
- package/src/brand-page-maker/convertors/text-css-style-options.convertor.ts +6 -2
- package/src/brand-page-maker/convertors/text-size-value.convertor.test.ts +24 -0
- package/src/brand-page-maker/convertors/text-size-value.convertor.ts +17 -13
- package/src/brand-page-maker/default-getters/payment-text-and-border-color.default-getter.ts +7 -22
- package/src/brand-page-maker/default-getters/text-color.default-getter.ts +5 -21
- package/src/brand-page-maker/models/content-settings.test.ts +708 -0
- package/src/brand-page-maker/models/content-settings.ts +133 -82
- package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.test.ts +63 -1
- package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.ts +16 -3
- package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.test.ts +34 -0
- package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store.ts +4 -2
- package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +185 -1
- package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +22 -34
- package/src/brand-page-maker/stores/history/history-store.ts +35 -2
- package/src/brand-page-maker/utils/__snapshots__/apply-color-strategy.golden.test.ts.snap +528 -0
- package/src/brand-page-maker/utils/__snapshots__/rte-render-parity.test.ts.snap +12 -0
- package/src/brand-page-maker/utils/apply-color-strategy.golden.test.ts +2 -0
- package/src/brand-page-maker/utils/apply-color-strategy.test.ts +181 -3
- package/src/brand-page-maker/utils/apply-color-strategy.ts +36 -4
- package/src/brand-page-maker/utils/index.ts +2 -1
- package/src/brand-page-maker/utils/rich-text-editor.util.test.ts +447 -410
- package/src/brand-page-maker/utils/rich-text-editor.util.ts +610 -506
- package/src/brand-page-maker/utils/rte-authoring.util.test.ts +244 -0
- package/src/brand-page-maker/utils/rte-authoring.util.ts +175 -0
- package/src/brand-page-maker/utils/rte-clipboard.util.test.ts +558 -0
- package/src/brand-page-maker/utils/rte-clipboard.util.ts +473 -0
- package/src/brand-page-maker/utils/rte-features.test.ts +99 -3
- package/src/brand-page-maker/utils/rte-render-parity.test.ts +1 -1
- package/src/brand-page-maker/utils/rte-render.util.test.ts +230 -0
- package/src/brand-page-maker/utils/rte-sanitize-json.test.ts +1 -1
- package/src/brand-page-maker/utils/rte-sanitize.util.ts +14 -3
- package/src/brand-page-maker/utils/rte-schema-version.test.ts +102 -0
- package/src/bundles/bundled-translations.de-DE.json +21 -2
- package/src/bundles/bundled-translations.es-ES.json +21 -2
- package/src/bundles/bundled-translations.fr-CA.json +21 -2
- package/src/bundles/bundled-translations.fr-FR.json +21 -2
- package/src/bundles/bundled-translations.json +21 -2
- package/src/bundles/bundled-translations.pt-BR.json +21 -2
- package/src/bundles/bundled-translations.pt-PT.json +21 -2
- package/src/clients/ai-assistant-client.ts +1 -0
- package/src/composables/useTranslate.ts +2 -1
- package/src/lib.ts +2 -2
- package/src/metadata-builder/builders/footer-builder.test.ts +70 -45
- package/src/metadata-builder/builders/footer-builder.ts +4 -8
- package/src/metadata-builder/builders/global-role-propagation.test.ts +907 -0
- package/src/metadata-builder/builders/global-role-propagation.ts +430 -0
- package/src/metadata-builder/builders/global-styles-builder.test.ts +1020 -0
- package/src/metadata-builder/builders/global-styles-builder.ts +194 -48
- package/src/metadata-builder/builders/header-builder.test.ts +112 -40
- package/src/metadata-builder/builders/header-builder.ts +18 -8
- package/src/metadata-builder/builders/section-builders/about-section-builder.ts +5 -3
- package/src/metadata-builder/builders/section-builders/banner-section-builder.ts +5 -3
- package/src/metadata-builder/builders/section-builders/booking-section-builder.ts +5 -3
- package/src/metadata-builder/builders/section-builders/contact-form-builder.ts +7 -4
- package/src/metadata-builder/builders/section-builders/images-section-builder.ts +5 -3
- package/src/metadata-builder/builders/section-builders/mailing-list-builder.ts +3 -2
- package/src/metadata-builder/builders/section-builders/mailing-list-section-builder.ts +3 -2
- package/src/metadata-builder/builders/section-builders/profile-section-builder.ts +7 -7
- package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +5 -3
- package/src/metadata-builder/builders/section-builders/social-links-builder.test.ts +2 -2
- package/src/metadata-builder/builders/section-builders/social-links-builder.ts +21 -10
- package/src/metadata-builder/builders/section-builders/support-me-builder.test.ts +10 -0
- package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +3 -2
- package/src/metadata-builder/builders/section-builders/text-section-builder.ts +111 -61
- package/src/metadata-builder/builders/section-field-maps.ts +1 -0
- package/src/metadata-builder/builders/section-field-utils.test.ts +545 -2
- package/src/metadata-builder/builders/section-field-utils.ts +202 -69
- package/src/metadata-builder/builders/section-rules/global-styles.rules.ts +38 -13
- package/src/metadata-builder/builders/section-rules/social-links.rules.ts +5 -0
- package/src/metadata-builder/helpers/rte.helpers.test.ts +101 -0
- package/src/metadata-builder/helpers/rte.helpers.ts +129 -43
- package/src/metadata-builder/metadata-executor.test.ts +167 -0
- package/src/metadata-builder/metadata-executor.ts +34 -1
- package/src/metadata-builder/models.ts +2 -0
- package/src/metadata-builder/parsers/ai-toolcall-parser.ts +23 -7
- package/src/metadata-builder/parsers/section-tool-arguments.ts +21 -1
- package/src/metadata-builder/sanitizers/__tests__/section-args-validator.test.ts +215 -0
- package/src/metadata-builder/sanitizers/rte-schema-check.ts +1 -1
- package/src/metadata-builder/sanitizers/sanitizer-rules.ts +4 -8
- package/src/metadata-builder/sanitizers/section-args-validator.ts +136 -53
- package/src/shared/color-palette/section-color-matches.test.ts +15 -11
- package/src/shared/color-palette/section-color-matches.ts +9 -28
- package/src/shared/color-strategies/color-strategies.ts +35 -0
- package/src/shared/color-strategies/rte-color.test.ts +1 -1
- package/src/shared/color-strategies/rte-color.ts +19 -0
- package/src/shared/color-strategies/rte-field-pairs.test.ts +26 -5
- package/src/shared/color-strategies/rte-field-pairs.ts +33 -0
- package/src/shared/content-settings/components/color-matches-panel/ColorMatchesPanel.test.ts +43 -66
- package/src/shared/content-settings/components/color-matches-panel/ColorMatchesPanel.vue +7 -1
- package/src/shared/content-settings/components/content-settings/ContentSettings.mixin.ts +1 -48
- package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +33 -7
- package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.test.ts +128 -1
- package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.vue +1 -0
- package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.ts +0 -6
- package/src/shared/content-settings/components/logo-selection-field/LogoSelection.vue +3 -0
- package/src/shared/content-settings/components/logo-size-field/LogoSizeSlider.vue +3 -0
- package/src/shared/content-settings/components/logo-size-field/LogoSizeSliderField.vue +1 -0
- package/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.vue +1 -0
- package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.test.ts +56 -3
- package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +11 -4
- package/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.test.ts +335 -25
- package/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.ts +248 -70
- package/src/shared/content-settings/components/text-style-field/TextStyleField.vue +113 -25
- package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.de-DE.json +17 -10
- package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.es-ES.json +17 -10
- package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.fr-CA.json +17 -10
- package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.fr-FR.json +17 -10
- package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.json +8 -1
- package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.pt-BR.json +17 -10
- package/src/shared/content-settings/components/text-style-field/i18n/text-style-field.pt-PT.json +17 -10
- package/src/shared/content-settings/components/text-style-role-dropdown/TextStyleRoleDropdown.test.ts +141 -0
- package/src/shared/content-settings/components/text-style-role-dropdown/TextStyleRoleDropdown.vue +136 -0
- package/src/shared/content-settings/store/content-settings-store.test.ts +491 -6
- package/src/shared/content-settings/store/content-settings-store.ts +159 -17
- package/src/shared/logo-settings/components/EditLogoSettings.vue +1 -0
- package/src/shared/logo-settings/components/LogoVariations.vue +1 -0
- package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.vue +1 -0
- package/src/shared/navigation-style-settings/store/index.test.ts +295 -0
- package/src/shared/navigation-style-settings/store/index.ts +65 -15
- package/src/shared/page-settings/components/header-settings-panel/HeaderSettingsPanel.vue +2 -0
- package/src/shared/page-settings/components/page-settings/PageElement.vue +1 -0
- package/src/shared/page-settings/components/page-settings-section-styles/HeaderButtonSettings.test.ts +44 -4
- package/src/shared/page-settings/components/page-settings-section-styles/HeaderButtonSettings.vue +13 -4
- package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.navigation.test.ts +89 -0
- package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.text-style.test.ts +91 -0
- package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.ts +14 -2
- package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.vue +2 -0
- package/src/shared/page-settings/store/page-settings-store.text-style.test.ts +84 -0
- package/src/shared/page-settings/store/page-settings-store.ts +30 -1
- package/src/shared/rte-extensions/AutoLink.test.ts +98 -0
- package/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/AutoLink.ts +87 -58
- package/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/MaxLength.ts +4 -1
- package/src/shared/rte-extensions/TextEffects.ts +151 -0
- package/src/shared/rte-extensions/ViewDomParser.ts +27 -0
- package/src/{brand-page-maker/composables/rich-text-editor/getRteExtensions.ts → shared/rte-extensions.util.ts} +66 -9
- package/src/shared/rte-link.util.ts +2 -0
- package/src/shared/rte-render.util.ts +385 -0
- package/src/shared/rte-shape.util.ts +29 -0
- package/src/shared/side-bar/store/side-bar-store.test.ts +27 -1
- package/src/shared/side-bar/store/side-bar-store.ts +11 -0
- package/src/shared/style-settings/components/StyleSettings.mixin.ts +7 -3
- package/src/shared/style-settings/components/StyleSettings.test.ts +116 -0
- package/src/shared/style-settings/components/StyleSettings.vue +75 -25
- package/src/shared/style-settings/components/i18n/style-settings.de-DE.json +32 -20
- package/src/shared/style-settings/components/i18n/style-settings.es-ES.json +32 -20
- package/src/shared/style-settings/components/i18n/style-settings.fr-CA.json +32 -20
- package/src/shared/style-settings/components/i18n/style-settings.fr-FR.json +32 -20
- package/src/shared/style-settings/components/i18n/style-settings.json +13 -3
- package/src/shared/style-settings/components/i18n/style-settings.pt-BR.json +32 -20
- package/src/shared/style-settings/components/i18n/style-settings.pt-PT.json +32 -20
- package/src/shared/style-settings/components/text-style-options-settings-with-state/TextStyleOptionsSettingsWithState.vue +14 -34
- package/src/shared/style-settings/store/style-settings-store.ts +3 -49
- package/src/shared/style-settings/text-style-size-order.test.ts +76 -0
- package/src/shared/style-settings/text-style-size-order.ts +28 -0
- package/src/shared/template-settings/components/TemplatesSettings.vue +4 -0
- package/src/shared/text-role-typography.util.ts +277 -0
- package/src/utils/minify-brand-page-metadata.test.ts +102 -7
- package/src/utils/minify-brand-page-metadata.ts +62 -8
- package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/AutoLink.d.ts +0 -2
- package/lib/src/brand-page-maker/composables/rich-text-editor/getRteExtensions.d.ts +0 -28
- package/lib/src/brand-page-maker/utils/rte-render.util.d.ts +0 -63
- package/lib/src/brand-page-maker/utils/rte-render.util.js +0 -106
- package/lib/src/brand-page-maker/utils/rte-shape.d.ts +0 -18
- package/lib/src/brand-page-maker/utils/rte-shape.js +0 -21
- package/lib/src/metadata-builder/builders/global-font-propagation.d.ts +0 -41
- package/lib/src/metadata-builder/builders/global-font-propagation.js +0 -146
- package/src/brand-page-maker/utils/rte-render.util.ts +0 -179
- package/src/brand-page-maker/utils/rte-shape.ts +0 -29
- package/src/metadata-builder/builders/global-font-propagation.test.ts +0 -401
- package/src/metadata-builder/builders/global-font-propagation.ts +0 -238
- package/src/shared/style-settings/components/StyleSettingsSection.vue +0 -8
- /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/FontFamily.d.ts +0 -0
- /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/FontFamily.js +0 -0
- /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/LetterSpacing.d.ts +0 -0
- /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/LetterSpacing.js +0 -0
- /package/lib/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/MaxLength.d.ts +0 -0
- /package/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/FontFamily.ts +0 -0
- /package/src/{brand-page-maker/composables/rich-text-editor/extensions → shared/rte-extensions}/LetterSpacing.ts +0 -0
|
@@ -15,8 +15,6 @@ import {
|
|
|
15
15
|
SUPPORT_ME_CUSTOM_PRODUCT_NAME,
|
|
16
16
|
DEFAULT_LOGO_HEIGHT,
|
|
17
17
|
DEFAULT_LOGO_WIDTH,
|
|
18
|
-
FONT_SIZE_BODY,
|
|
19
|
-
LINE_HEIGHT_BODY,
|
|
20
18
|
TEXT_STYLE_TYPES,
|
|
21
19
|
TEXT_COLUMNS,
|
|
22
20
|
DEFAULT_LOGO_BACKGROUND_COLOR_RGB,
|
|
@@ -53,6 +51,8 @@ import type {
|
|
|
53
51
|
SupportMeContent,
|
|
54
52
|
ShopContent,
|
|
55
53
|
BookingSectionContent,
|
|
54
|
+
TextStyleDeclaration,
|
|
55
|
+
TextStyleType,
|
|
56
56
|
} from '@brand-page';
|
|
57
57
|
import * as uuid from 'uuid';
|
|
58
58
|
import type { CreateInitialContentFunction } from './content-settings-configs';
|
|
@@ -62,6 +62,8 @@ import {
|
|
|
62
62
|
} from '@brand-page/utils';
|
|
63
63
|
import type { CreateInitialContentOptions } from '@shared/content-settings/models';
|
|
64
64
|
import { contentSettingsTr } from '@src/composables/useTranslate';
|
|
65
|
+
import { rteDoc } from '@shared/rte-render.util';
|
|
66
|
+
import { omitTypography } from '@shared/text-role-typography.util';
|
|
65
67
|
|
|
66
68
|
export const createInitialButtonContent =
|
|
67
69
|
(type: ContentType, iconUrl: string, options?: CreateInitialContentOptions) =>
|
|
@@ -118,7 +120,7 @@ export const createInitialButtonContent =
|
|
|
118
120
|
title,
|
|
119
121
|
titleStyle: {
|
|
120
122
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
121
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
123
|
+
textStyleType: TEXT_STYLE_TYPES.button,
|
|
122
124
|
textAlign: 'center',
|
|
123
125
|
},
|
|
124
126
|
url: '',
|
|
@@ -149,7 +151,7 @@ export const createInitialGeneralLinkContent =
|
|
|
149
151
|
page: '',
|
|
150
152
|
titleStyle: {
|
|
151
153
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
152
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
154
|
+
textStyleType: TEXT_STYLE_TYPES.button,
|
|
153
155
|
textAlign: 'center',
|
|
154
156
|
},
|
|
155
157
|
fieldRole: 'button',
|
|
@@ -199,27 +201,27 @@ export const createInitialProfileContent = (
|
|
|
199
201
|
): ProfileContent => {
|
|
200
202
|
return {
|
|
201
203
|
id: uuid.v4(),
|
|
202
|
-
description: contentSettingsTr(`defaultDescription`),
|
|
204
|
+
description: rteDoc(contentSettingsTr(`defaultDescription`)),
|
|
203
205
|
avatarImageUrl: '',
|
|
204
|
-
name: contentSettingsTr(`nameTitle`),
|
|
205
|
-
title: contentSettingsTr(`titleTitle`),
|
|
206
|
+
name: rteDoc(contentSettingsTr(`nameTitle`)),
|
|
207
|
+
title: rteDoc(contentSettingsTr(`titleTitle`)),
|
|
206
208
|
type: 'profile',
|
|
207
209
|
backgroundColor: {},
|
|
208
210
|
colorReplacements: [],
|
|
209
211
|
mediaType: 'image',
|
|
210
212
|
titleStyle: {
|
|
211
213
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
212
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
214
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
213
215
|
textAlign: 'center',
|
|
214
216
|
},
|
|
215
217
|
descriptionStyle: {
|
|
216
218
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
217
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
219
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
218
220
|
textAlign: 'center',
|
|
219
221
|
},
|
|
220
222
|
nameStyle: {
|
|
221
223
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
222
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
224
|
+
textStyleType: TEXT_STYLE_TYPES.heading5,
|
|
223
225
|
textAlign: 'center',
|
|
224
226
|
},
|
|
225
227
|
};
|
|
@@ -231,19 +233,18 @@ export const createInitialTextContent = (
|
|
|
231
233
|
return {
|
|
232
234
|
iconUrl: '',
|
|
233
235
|
id: uuid.v4(),
|
|
234
|
-
text: contentSettingsTr(`defaultTextValue`),
|
|
236
|
+
text: rteDoc(contentSettingsTr(`defaultTextValue`)),
|
|
235
237
|
textItems:
|
|
236
238
|
options?.brandPageType === 'brandSite'
|
|
237
239
|
? [
|
|
238
240
|
{
|
|
239
241
|
id: uuid.v4(),
|
|
240
|
-
text: contentSettingsTr(`defaultTextValue`),
|
|
242
|
+
text: rteDoc(contentSettingsTr(`defaultTextValue`)),
|
|
241
243
|
textStyle: {
|
|
242
244
|
applyAutoScale:
|
|
243
245
|
options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
244
|
-
fontSize: FONT_SIZE_BODY,
|
|
245
246
|
textAlign: 'left',
|
|
246
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
247
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
247
248
|
},
|
|
248
249
|
},
|
|
249
250
|
]
|
|
@@ -253,13 +254,9 @@ export const createInitialTextContent = (
|
|
|
253
254
|
topPadding: options?.brandPageType === BRAND_PAGE_TYPES.brandSite ? 12 : 0,
|
|
254
255
|
bottomPadding:
|
|
255
256
|
options?.brandPageType === BRAND_PAGE_TYPES.brandSite ? 12 : 0,
|
|
256
|
-
textSize: {
|
|
257
|
-
fontSize: FONT_SIZE_BODY,
|
|
258
|
-
lineHeight: LINE_HEIGHT_BODY,
|
|
259
|
-
},
|
|
260
257
|
textStyle: {
|
|
261
258
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
262
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
259
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
263
260
|
textAlign: 'center',
|
|
264
261
|
},
|
|
265
262
|
columnStyle: TEXT_COLUMNS[1],
|
|
@@ -309,17 +306,17 @@ export const createInitialMailingListContent = (
|
|
|
309
306
|
type: 'mailing-list',
|
|
310
307
|
topPadding: 0,
|
|
311
308
|
bottomPadding: 0,
|
|
312
|
-
title: contentSettingsTr(`mailingListTitle`),
|
|
309
|
+
title: rteDoc(contentSettingsTr(`mailingListTitle`)),
|
|
313
310
|
buttonText: contentSettingsTr(`subscribePlaceholder`),
|
|
314
311
|
acceptedFields: 'emailOnly',
|
|
315
312
|
titleStyle: {
|
|
316
313
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
317
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
314
|
+
textStyleType: TEXT_STYLE_TYPES.heading5,
|
|
318
315
|
textAlign: 'center',
|
|
319
316
|
},
|
|
320
317
|
buttonTextStyle: {
|
|
321
318
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
322
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
319
|
+
textStyleType: TEXT_STYLE_TYPES.button,
|
|
323
320
|
textAlign: 'center',
|
|
324
321
|
},
|
|
325
322
|
// Card surface defaults to the neutral-light role — a light panel any global text
|
|
@@ -334,7 +331,7 @@ export const createInitialRequestPaymentContent = (
|
|
|
334
331
|
): RequestPaymentContent => {
|
|
335
332
|
return {
|
|
336
333
|
id: uuid.v4(),
|
|
337
|
-
description: '',
|
|
334
|
+
description: rteDoc(''),
|
|
338
335
|
displayStyle: DISPLAY_STYLE_PREVIEW,
|
|
339
336
|
requestPaymentConfig: {
|
|
340
337
|
paymentOptions: [],
|
|
@@ -344,7 +341,7 @@ export const createInitialRequestPaymentContent = (
|
|
|
344
341
|
paymentOptionImageType: PAYMENT_OPTION_IMAGE_TYPES.auto,
|
|
345
342
|
},
|
|
346
343
|
successMessage: '',
|
|
347
|
-
title: contentSettingsTr(`buyNowTitle`),
|
|
344
|
+
title: rteDoc(contentSettingsTr(`buyNowTitle`)),
|
|
348
345
|
type: 'request-payment',
|
|
349
346
|
topPadding: 0,
|
|
350
347
|
bottomPadding: 0,
|
|
@@ -353,22 +350,25 @@ export const createInitialRequestPaymentContent = (
|
|
|
353
350
|
selectedBorderColor: {},
|
|
354
351
|
titleStyle: {
|
|
355
352
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
356
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
353
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
357
354
|
textAlign: 'center',
|
|
358
355
|
},
|
|
359
356
|
descriptionStyle: {
|
|
360
357
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
361
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
358
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
362
359
|
textAlign: 'center',
|
|
363
360
|
},
|
|
361
|
+
successMessageStyle: {
|
|
362
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
363
|
+
},
|
|
364
364
|
itemTextStyle: {
|
|
365
365
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
366
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
366
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
367
367
|
textAlign: 'left',
|
|
368
368
|
},
|
|
369
369
|
buttonTextStyle: {
|
|
370
370
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
371
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
371
|
+
textStyleType: TEXT_STYLE_TYPES.button,
|
|
372
372
|
textAlign: 'center',
|
|
373
373
|
},
|
|
374
374
|
// Card surface defaults to the neutral-light role — a light panel any global text
|
|
@@ -383,35 +383,38 @@ export const createInitialShopContent = (
|
|
|
383
383
|
): ShopContent => {
|
|
384
384
|
return {
|
|
385
385
|
id: uuid.v4(),
|
|
386
|
-
description: '',
|
|
386
|
+
description: rteDoc(''),
|
|
387
387
|
topPadding: 16,
|
|
388
388
|
bottomPadding: 16,
|
|
389
389
|
products: [],
|
|
390
390
|
displayStyle: PAYMENT_OPTION_DISPLAY_TYPES.thumbnail,
|
|
391
391
|
aspectRatio: PAYMENT_OPTION_IMAGE_TYPES.auto,
|
|
392
|
-
title: contentSettingsTr(`shopTitle`),
|
|
392
|
+
title: rteDoc(contentSettingsTr(`shopTitle`)),
|
|
393
393
|
type: 'shop-section',
|
|
394
394
|
fillColor: {},
|
|
395
395
|
successMessage: '',
|
|
396
396
|
defaultBorderColor: {},
|
|
397
397
|
titleStyle: {
|
|
398
398
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
399
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
399
|
+
textStyleType: TEXT_STYLE_TYPES.heading4,
|
|
400
400
|
textAlign: 'center',
|
|
401
401
|
},
|
|
402
402
|
descriptionStyle: {
|
|
403
403
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
404
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
404
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
405
405
|
textAlign: 'center',
|
|
406
406
|
},
|
|
407
|
+
successMessageStyle: {
|
|
408
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
409
|
+
},
|
|
407
410
|
itemTextStyle: {
|
|
408
411
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
409
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
412
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
410
413
|
textAlign: 'left',
|
|
411
414
|
},
|
|
412
415
|
buttonTextStyle: {
|
|
413
416
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
414
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
417
|
+
textStyleType: TEXT_STYLE_TYPES.button,
|
|
415
418
|
textAlign: 'center',
|
|
416
419
|
},
|
|
417
420
|
backgroundStyle: {},
|
|
@@ -441,35 +444,38 @@ export const createInitialSupportMeContent = (
|
|
|
441
444
|
isCustomerMessageEnabled: true,
|
|
442
445
|
},
|
|
443
446
|
displayStyle: DISPLAY_STYLE_PREVIEW,
|
|
444
|
-
title: contentSettingsTr(`supportMeTitle`),
|
|
447
|
+
title: rteDoc(contentSettingsTr(`supportMeTitle`)),
|
|
445
448
|
successMessage: contentSettingsTr(`successSupportPlaceholder`),
|
|
446
|
-
description: contentSettingsTr(`makeADonationDescription`),
|
|
449
|
+
description: rteDoc(contentSettingsTr(`makeADonationDescription`)),
|
|
447
450
|
type: 'support-me',
|
|
448
451
|
topPadding: 0,
|
|
449
452
|
bottomPadding: 0,
|
|
450
453
|
titleStyle: {
|
|
451
454
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
452
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
455
|
+
textStyleType: TEXT_STYLE_TYPES.heading5,
|
|
453
456
|
textAlign: 'center',
|
|
454
457
|
},
|
|
455
458
|
headingStyle: {
|
|
456
459
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
457
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
460
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
458
461
|
textAlign: 'center',
|
|
459
462
|
},
|
|
460
463
|
descriptionStyle: {
|
|
461
464
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
462
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
465
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
463
466
|
textAlign: 'center',
|
|
464
467
|
},
|
|
468
|
+
successMessageStyle: {
|
|
469
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
470
|
+
},
|
|
465
471
|
itemTextStyle: {
|
|
466
472
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
467
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
473
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
468
474
|
textAlign: 'center',
|
|
469
475
|
},
|
|
470
476
|
buttonTextStyle: {
|
|
471
477
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
472
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
478
|
+
textStyleType: TEXT_STYLE_TYPES.button,
|
|
473
479
|
textAlign: 'center',
|
|
474
480
|
},
|
|
475
481
|
// Card surface defaults to the neutral-light role — a light panel any global text
|
|
@@ -497,8 +503,8 @@ export const createInitialContactFormContent: CreateInitialContentFunction<
|
|
|
497
503
|
|
|
498
504
|
return {
|
|
499
505
|
id: uuid.v4(),
|
|
500
|
-
title: contentSettingsTr(`contactUsTitle`),
|
|
501
|
-
description: '',
|
|
506
|
+
title: rteDoc(contentSettingsTr(`contactUsTitle`)),
|
|
507
|
+
description: rteDoc(''),
|
|
502
508
|
buttonText: contentSettingsTr(`sendPlaceholder`),
|
|
503
509
|
displayStyle: DISPLAY_STYLE_PREVIEW,
|
|
504
510
|
layoutStyle,
|
|
@@ -563,7 +569,7 @@ export const createInitialContactFormContent: CreateInitialContentFunction<
|
|
|
563
569
|
type: 'text',
|
|
564
570
|
},
|
|
565
571
|
],
|
|
566
|
-
successMessage: contentSettingsTr(`formSuccessMessage`),
|
|
572
|
+
successMessage: rteDoc(contentSettingsTr(`formSuccessMessage`)),
|
|
567
573
|
responseEmail: options?.userState.emailAddress || '',
|
|
568
574
|
type: 'contact-form',
|
|
569
575
|
// brand-site: card layouts default to the logo bg. brand-page/brand-contact:
|
|
@@ -576,20 +582,20 @@ export const createInitialContactFormContent: CreateInitialContentFunction<
|
|
|
576
582
|
backgroundStyle: {},
|
|
577
583
|
titleStyle: {
|
|
578
584
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
579
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
585
|
+
textStyleType: TEXT_STYLE_TYPES.heading4,
|
|
580
586
|
textAlign: 'center',
|
|
581
587
|
},
|
|
582
588
|
descriptionStyle: {
|
|
583
589
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
584
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
590
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
585
591
|
textAlign: 'center',
|
|
586
592
|
},
|
|
587
593
|
successMessageStyle: {
|
|
588
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
594
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
589
595
|
},
|
|
590
596
|
buttonTextStyle: {
|
|
591
597
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
592
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
598
|
+
textStyleType: TEXT_STYLE_TYPES.button,
|
|
593
599
|
textAlign: 'center',
|
|
594
600
|
},
|
|
595
601
|
};
|
|
@@ -603,8 +609,12 @@ export const createInitialBannerSectionContent: CreateInitialContentFunction<
|
|
|
603
609
|
topPadding: 32,
|
|
604
610
|
bottomPadding: 32,
|
|
605
611
|
imageUrl: '',
|
|
606
|
-
|
|
607
|
-
|
|
612
|
+
// BP-5969: RTE fields are authored as Tiptap docs at their SOURCE (the factory), not plain
|
|
613
|
+
// strings that a later step converts. Colour + role typography are baked into the doc by the
|
|
614
|
+
// init step (applyTextContrast + authorContentRteFields); textAlign is stamped there from the
|
|
615
|
+
// style, so it isn't duplicated here. Empty description is still a doc (empty paragraph).
|
|
616
|
+
title: rteDoc(contentSettingsTr(`thisIsABannerTitle`)),
|
|
617
|
+
description: rteDoc(''),
|
|
608
618
|
buttonText: contentSettingsTr(`getStartedButtonText`),
|
|
609
619
|
url: '',
|
|
610
620
|
colorReplacements: [],
|
|
@@ -612,12 +622,12 @@ export const createInitialBannerSectionContent: CreateInitialContentFunction<
|
|
|
612
622
|
displayStyle: 'centered',
|
|
613
623
|
descriptionStyle: {
|
|
614
624
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
615
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
625
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
616
626
|
textAlign: 'center',
|
|
617
627
|
},
|
|
618
628
|
titleStyle: {
|
|
619
629
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
620
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
630
|
+
textStyleType: TEXT_STYLE_TYPES.heading4,
|
|
621
631
|
textAlign: 'center',
|
|
622
632
|
},
|
|
623
633
|
cardStyle: {
|
|
@@ -628,7 +638,7 @@ export const createInitialBannerSectionContent: CreateInitialContentFunction<
|
|
|
628
638
|
buttonLinkType: BUTTON_LINK_TYPE.url,
|
|
629
639
|
buttonTextStyle: {
|
|
630
640
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
631
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
641
|
+
textStyleType: TEXT_STYLE_TYPES.button,
|
|
632
642
|
textAlign: 'center',
|
|
633
643
|
},
|
|
634
644
|
overlayColor: {
|
|
@@ -643,8 +653,8 @@ export const createInitialBookingSectionContent: CreateInitialContentFunction<
|
|
|
643
653
|
> = (options?: CreateInitialContentOptions) => {
|
|
644
654
|
return {
|
|
645
655
|
id: uuid.v4(),
|
|
646
|
-
title: contentSettingsTr(`defaultBookingTitle`),
|
|
647
|
-
description: contentSettingsTr(`defaultBookingDescription`),
|
|
656
|
+
title: rteDoc(contentSettingsTr(`defaultBookingTitle`)),
|
|
657
|
+
description: rteDoc(contentSettingsTr(`defaultBookingDescription`)),
|
|
648
658
|
buttonText: contentSettingsTr(`bookNowLabel`),
|
|
649
659
|
url: '',
|
|
650
660
|
type: 'booking-section',
|
|
@@ -652,12 +662,12 @@ export const createInitialBookingSectionContent: CreateInitialContentFunction<
|
|
|
652
662
|
bottomPadding: 32,
|
|
653
663
|
descriptionStyle: {
|
|
654
664
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
655
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
665
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
656
666
|
textAlign: 'center',
|
|
657
667
|
},
|
|
658
668
|
titleStyle: {
|
|
659
669
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
660
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
670
|
+
textStyleType: TEXT_STYLE_TYPES.heading4,
|
|
661
671
|
textAlign: 'center',
|
|
662
672
|
},
|
|
663
673
|
backgroundStyle: {},
|
|
@@ -665,7 +675,7 @@ export const createInitialBookingSectionContent: CreateInitialContentFunction<
|
|
|
665
675
|
buttonLinkType: BUTTON_LINK_TYPE.url,
|
|
666
676
|
buttonTextStyle: {
|
|
667
677
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
668
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
678
|
+
textStyleType: TEXT_STYLE_TYPES.button,
|
|
669
679
|
textAlign: 'center',
|
|
670
680
|
},
|
|
671
681
|
};
|
|
@@ -676,8 +686,8 @@ export const createInitialImagesSectionContent: CreateInitialContentFunction<
|
|
|
676
686
|
> = (options?: CreateInitialContentOptions) => {
|
|
677
687
|
return {
|
|
678
688
|
id: uuid.v4(),
|
|
679
|
-
title: contentSettingsTr(`imagesTitle`),
|
|
680
|
-
description: '',
|
|
689
|
+
title: rteDoc(contentSettingsTr(`imagesTitle`)),
|
|
690
|
+
description: rteDoc(''),
|
|
681
691
|
type: 'images-section',
|
|
682
692
|
topPadding: 32,
|
|
683
693
|
bottomPadding: 32,
|
|
@@ -702,27 +712,27 @@ export const createInitialImagesSectionContent: CreateInitialContentFunction<
|
|
|
702
712
|
cardStyle: {},
|
|
703
713
|
titleStyle: {
|
|
704
714
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
705
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
715
|
+
textStyleType: TEXT_STYLE_TYPES.heading4,
|
|
706
716
|
textAlign: 'center',
|
|
707
717
|
},
|
|
708
718
|
descriptionStyle: {
|
|
709
719
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
710
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
720
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
711
721
|
textAlign: 'center',
|
|
712
722
|
},
|
|
713
723
|
headingStyle: {
|
|
714
724
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
715
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
725
|
+
textStyleType: TEXT_STYLE_TYPES.heading5,
|
|
716
726
|
textAlign: 'center',
|
|
717
727
|
},
|
|
718
728
|
paragraphStyle: {
|
|
719
729
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
720
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
730
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
721
731
|
textAlign: 'center',
|
|
722
732
|
},
|
|
723
733
|
buttonTextStyle: {
|
|
724
734
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
725
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
735
|
+
textStyleType: TEXT_STYLE_TYPES.button,
|
|
726
736
|
textAlign: 'center',
|
|
727
737
|
},
|
|
728
738
|
};
|
|
@@ -733,7 +743,7 @@ export const createInitialTestimonialSectionContent: CreateInitialContentFunctio
|
|
|
733
743
|
> = (options?: CreateInitialContentOptions) => {
|
|
734
744
|
return {
|
|
735
745
|
id: uuid.v4(),
|
|
736
|
-
title: contentSettingsTr(`testimonialsTitle`),
|
|
746
|
+
title: rteDoc(contentSettingsTr(`testimonialsTitle`)),
|
|
737
747
|
type: 'testimonial-section',
|
|
738
748
|
displayStyle: 'centered',
|
|
739
749
|
topPadding: TESTIMONIAL_DEFAULT_PADDING,
|
|
@@ -741,22 +751,22 @@ export const createInitialTestimonialSectionContent: CreateInitialContentFunctio
|
|
|
741
751
|
items: [],
|
|
742
752
|
titleStyle: {
|
|
743
753
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
744
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
754
|
+
textStyleType: TEXT_STYLE_TYPES.heading4,
|
|
745
755
|
textAlign: 'center',
|
|
746
756
|
},
|
|
747
757
|
testimonialStyle: {
|
|
748
758
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
749
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
759
|
+
textStyleType: TEXT_STYLE_TYPES.heading5,
|
|
750
760
|
textAlign: 'center',
|
|
751
761
|
},
|
|
752
762
|
nameStyle: {
|
|
753
763
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
754
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
764
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
755
765
|
textAlign: 'center',
|
|
756
766
|
},
|
|
757
767
|
positionStyle: {
|
|
758
768
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
759
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
769
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
760
770
|
textAlign: 'center',
|
|
761
771
|
},
|
|
762
772
|
backgroundStyle: {},
|
|
@@ -770,19 +780,19 @@ export const createInitialAboutSectionContent: CreateInitialContentFunction<
|
|
|
770
780
|
return {
|
|
771
781
|
id: uuid.v4(),
|
|
772
782
|
imageUrl: '',
|
|
773
|
-
title: contentSettingsTr(`aboutSectionTitle`),
|
|
783
|
+
title: rteDoc(contentSettingsTr(`aboutSectionTitle`)),
|
|
774
784
|
type: 'about-section',
|
|
775
785
|
displayStyle: 'centered',
|
|
776
|
-
paragraph: '',
|
|
786
|
+
paragraph: rteDoc(''),
|
|
777
787
|
colorReplacements: [],
|
|
778
788
|
titleStyle: {
|
|
779
789
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
780
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
790
|
+
textStyleType: TEXT_STYLE_TYPES.heading4,
|
|
781
791
|
textAlign: 'center',
|
|
782
792
|
},
|
|
783
793
|
paragraphStyle: {
|
|
784
794
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
785
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
795
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
786
796
|
textAlign: 'center',
|
|
787
797
|
},
|
|
788
798
|
backgroundStyle: {},
|
|
@@ -819,6 +829,47 @@ export const createDefaultLogoTheme = (): LogoTheme => {
|
|
|
819
829
|
};
|
|
820
830
|
};
|
|
821
831
|
|
|
832
|
+
/**
|
|
833
|
+
* Runs after migration on a blank site, so its header and footer text starts on its role with no
|
|
834
|
+
* typography of its own. The blank model has no version, so every migration runs on it and keeps the
|
|
835
|
+
* retired look as that text's own values; the model defaults can't change because released
|
|
836
|
+
* migrations read them. The Save Contact label (brand.contact only) joins the same pass: migration-22
|
|
837
|
+
* seeds it with typography of its own too.
|
|
838
|
+
*/
|
|
839
|
+
export const applyBlankSiteTextRoles = (model: BrandPageModel): void => {
|
|
840
|
+
const onRole = <T extends TextStyleDeclaration>(
|
|
841
|
+
style: T,
|
|
842
|
+
textStyleType: TextStyleType,
|
|
843
|
+
): T => ({ ...omitTypography(style), textStyleType }) as T;
|
|
844
|
+
|
|
845
|
+
for (const footer of [model.pageFooterDesktop, model.pageFooterMobile]) {
|
|
846
|
+
footer.copyrightStyle = onRole(
|
|
847
|
+
footer.copyrightStyle,
|
|
848
|
+
TEXT_STYLE_TYPES.paragraph2,
|
|
849
|
+
);
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
for (const header of [model.pageHeaderDesktop, model.pageHeaderMobile]) {
|
|
853
|
+
const { navigation } = header;
|
|
854
|
+
|
|
855
|
+
navigation.defaultButtonStyle = onRole(
|
|
856
|
+
navigation.defaultButtonStyle,
|
|
857
|
+
TEXT_STYLE_TYPES.paragraph1,
|
|
858
|
+
);
|
|
859
|
+
navigation.hamburgerMenuStyle.defaultButtonStyle = onRole(
|
|
860
|
+
navigation.hamburgerMenuStyle.defaultButtonStyle,
|
|
861
|
+
TEXT_STYLE_TYPES.button,
|
|
862
|
+
);
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
if (model.saveContactSettings?.buttonTextStyle) {
|
|
866
|
+
model.saveContactSettings.buttonTextStyle = onRole(
|
|
867
|
+
model.saveContactSettings.buttonTextStyle,
|
|
868
|
+
TEXT_STYLE_TYPES.button,
|
|
869
|
+
);
|
|
870
|
+
}
|
|
871
|
+
};
|
|
872
|
+
|
|
822
873
|
export const createInitialBrandPage = (
|
|
823
874
|
brandPageType: BrandPageType,
|
|
824
875
|
): BrandPageModel => {
|
|
@@ -852,7 +903,7 @@ export const createInitialSocialLinksContent = (
|
|
|
852
903
|
type: 'social-links',
|
|
853
904
|
topPadding: 32,
|
|
854
905
|
bottomPadding: 32,
|
|
855
|
-
title: contentSettingsTr(`followUsOnTitle`),
|
|
906
|
+
title: rteDoc(contentSettingsTr(`followUsOnTitle`)),
|
|
856
907
|
links: [
|
|
857
908
|
{
|
|
858
909
|
id: uuid.v4(),
|
|
@@ -894,7 +945,7 @@ export const createInitialSocialLinksContent = (
|
|
|
894
945
|
backgroundStyles: {},
|
|
895
946
|
titleStyle: {
|
|
896
947
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
897
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
948
|
+
textStyleType: TEXT_STYLE_TYPES.heading4,
|
|
898
949
|
textAlign: 'center',
|
|
899
950
|
},
|
|
900
951
|
};
|
|
@@ -905,8 +956,8 @@ export const createInitialShapesSectionContent: CreateInitialContentFunction<
|
|
|
905
956
|
> = (options?: CreateInitialContentOptions) => {
|
|
906
957
|
return {
|
|
907
958
|
id: uuid.v4(),
|
|
908
|
-
title: contentSettingsTr(`shapesTitle`),
|
|
909
|
-
description: '',
|
|
959
|
+
title: rteDoc(contentSettingsTr(`shapesTitle`)),
|
|
960
|
+
description: rteDoc(''),
|
|
910
961
|
type: 'shapes-section',
|
|
911
962
|
topPadding: 32,
|
|
912
963
|
bottomPadding: 32,
|
|
@@ -931,22 +982,22 @@ export const createInitialShapesSectionContent: CreateInitialContentFunction<
|
|
|
931
982
|
size: '4rem',
|
|
932
983
|
titleStyle: {
|
|
933
984
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
934
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
985
|
+
textStyleType: TEXT_STYLE_TYPES.heading4,
|
|
935
986
|
textAlign: 'center',
|
|
936
987
|
},
|
|
937
988
|
descriptionStyle: {
|
|
938
989
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
939
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
990
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
940
991
|
textAlign: 'center',
|
|
941
992
|
},
|
|
942
993
|
headingStyle: {
|
|
943
994
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
944
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
995
|
+
textStyleType: TEXT_STYLE_TYPES.heading5,
|
|
945
996
|
textAlign: 'center',
|
|
946
997
|
},
|
|
947
998
|
paragraphStyle: {
|
|
948
999
|
applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
|
|
949
|
-
textStyleType: TEXT_STYLE_TYPES.
|
|
1000
|
+
textStyleType: TEXT_STYLE_TYPES.paragraph2,
|
|
950
1001
|
textAlign: 'center',
|
|
951
1002
|
},
|
|
952
1003
|
};
|
package/src/brand-page-maker/stores/admin-logo-settings/admin-logo-settings-store-utils.test.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { describe, expect, test } from 'vitest';
|
|
2
2
|
import { mapAdminPreviewLogoTemplateModelToAdminLogoTemplateTemplate } from './admin-logo-settings-store-utils';
|
|
3
3
|
import type { AdminPreviewLogoTemplateModel } from './admin-logo-settings-store';
|
|
4
|
-
import { BRAND_PAGE_TYPES } from '@brand-page';
|
|
4
|
+
import { BRAND_PAGE_TYPES, TextStyles } from '@brand-page';
|
|
5
5
|
import type { ColorItem } from '@brand-page';
|
|
6
|
+
import { CANONICAL_TEXT_STYLE_TYPES } from '@brand-page/models/styles.model';
|
|
6
7
|
|
|
7
8
|
// rgba(0,0,0,1) → #000000 · rgba(241,176,74,1) → #f1b04a (canonicalSolidHex)
|
|
8
9
|
const previewModel = (
|
|
@@ -33,13 +34,27 @@ const paletteFixture = (): ColorItem[] => [
|
|
|
33
34
|
const mapWith = (
|
|
34
35
|
colors: ColorItem[],
|
|
35
36
|
templateModel: AdminPreviewLogoTemplateModel = previewModel(),
|
|
37
|
+
textStyles: TextStyles = new TextStyles(),
|
|
36
38
|
) =>
|
|
37
39
|
mapAdminPreviewLogoTemplateModelToAdminLogoTemplateTemplate(
|
|
38
40
|
[],
|
|
39
41
|
BRAND_PAGE_TYPES.default,
|
|
40
42
|
colors,
|
|
43
|
+
textStyles,
|
|
41
44
|
)(templateModel);
|
|
42
45
|
|
|
46
|
+
const ROLE = CANONICAL_TEXT_STYLE_TYPES[0];
|
|
47
|
+
|
|
48
|
+
const workingTextStyles = (): TextStyles => {
|
|
49
|
+
const textStyles = new TextStyles();
|
|
50
|
+
|
|
51
|
+
textStyles.textStyleOptions[ROLE].style.fontSize = '99px';
|
|
52
|
+
textStyles.textStyleOptions[ROLE].style.fontFamily = 'Pacifico';
|
|
53
|
+
textStyles.textStyleOptions[ROLE].isModified = true;
|
|
54
|
+
|
|
55
|
+
return textStyles;
|
|
56
|
+
};
|
|
57
|
+
|
|
43
58
|
const rolesById = (colors: ColorItem[] = []): Record<string, string> =>
|
|
44
59
|
Object.fromEntries(colors.map((c) => [c.id, c.value ?? '']));
|
|
45
60
|
|
|
@@ -112,4 +127,51 @@ describe('mapAdminPreviewLogoTemplateModelToAdminLogoTemplateTemplate', () => {
|
|
|
112
127
|
expect(custom).toBeDefined();
|
|
113
128
|
expect(working).not.toContain(custom);
|
|
114
129
|
});
|
|
130
|
+
|
|
131
|
+
// The card's scoped role block outranks the canvas's global one, so a card built on default
|
|
132
|
+
// roles paints default typography whatever the Style tab says.
|
|
133
|
+
test('carries the working text style roles, so a card paints the canvas typography', () => {
|
|
134
|
+
const { brandPageModel } = mapWith(
|
|
135
|
+
paletteFixture(),
|
|
136
|
+
previewModel(),
|
|
137
|
+
workingTextStyles(),
|
|
138
|
+
);
|
|
139
|
+
const role = brandPageModel.styles?.textStyles.textStyleOptions[ROLE];
|
|
140
|
+
|
|
141
|
+
expect(role?.style.fontSize).toBe('99px');
|
|
142
|
+
expect(role?.style.fontFamily).toBe('Pacifico');
|
|
143
|
+
expect(role?.isModified).toBe(true);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
test('every template over the same working roles agrees on them', () => {
|
|
147
|
+
const textStyles = workingTextStyles();
|
|
148
|
+
const first = mapWith(paletteFixture(), previewModel(), textStyles);
|
|
149
|
+
const second = mapWith(
|
|
150
|
+
paletteFixture(),
|
|
151
|
+
previewModel({ logoTemplateToken: 'logo-template-2' }),
|
|
152
|
+
textStyles,
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
expect(
|
|
156
|
+
first.brandPageModel.styles?.textStyles.textStyleOptions[ROLE].style,
|
|
157
|
+
).toEqual(
|
|
158
|
+
second.brandPageModel.styles?.textStyles.textStyleOptions[ROLE].style,
|
|
159
|
+
);
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
test('the card model does not share role style objects with the working roles', () => {
|
|
163
|
+
const working = workingTextStyles();
|
|
164
|
+
const { brandPageModel } = mapWith(
|
|
165
|
+
paletteFixture(),
|
|
166
|
+
previewModel(),
|
|
167
|
+
working,
|
|
168
|
+
);
|
|
169
|
+
const cardRole = brandPageModel.styles!.textStyles.textStyleOptions[ROLE];
|
|
170
|
+
|
|
171
|
+
expect(cardRole.style).not.toBe(working.textStyleOptions[ROLE].style);
|
|
172
|
+
|
|
173
|
+
cardRole.style.fontSize = '1px';
|
|
174
|
+
|
|
175
|
+
expect(working.textStyleOptions[ROLE].style.fontSize).toBe('99px');
|
|
176
|
+
});
|
|
115
177
|
});
|