@designcrowd/library.brand-page 6.1.1 → 6.1.2-color-v2-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/src/{CreatedOnBrandCrowd-de-de-B5B5ThJ6.js → CreatedOnBrandCrowd-de-de-dmDPJ3B5.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-en-us-a48CaORy.js → CreatedOnBrandCrowd-en-us-enXUVsBp.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-es-es-xpuZ317-.js → CreatedOnBrandCrowd-es-es-C3MEil9A.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-fr-V-iUMArW.js → CreatedOnBrandCrowd-fr-ca-BZTF6RtW.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-ca-V-iUMArW.js → CreatedOnBrandCrowd-fr-fr-BZTF6RtW.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-pt-DZ0NKSAy.js → CreatedOnBrandCrowd-pt-br-0mwjA9fv.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-br-DZ0NKSAy.js → CreatedOnBrandCrowd-pt-pt-0mwjA9fv.js} +1 -1
- package/lib/src/{CreatedOnDcom-de-de-_950cgGp.js → CreatedOnDcom-de-de-Bk2_qT2O.js} +1 -1
- package/lib/src/{CreatedOnDcom-en-us-DogKzH-g.js → CreatedOnDcom-en-us-Ddfk_ipz.js} +1 -1
- package/lib/src/{CreatedOnDcom-es-es-CmGM3IPX.js → CreatedOnDcom-es-es-5bvFd1op.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-ca-BonEDkWZ.js → CreatedOnDcom-fr-ca-BwLVAwM8.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-fr-DQHtKrd_.js → CreatedOnDcom-fr-fr-BVT4iQTJ.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-br-CtYJSBjs.js → CreatedOnDcom-pt-br-BX-jIWSe.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-pt-DoO9r4lA.js → CreatedOnDcom-pt-pt-VvU6cH6q.js} +1 -1
- package/lib/src/brand-page/components/background-shape/BackgroundShape.mixin.d.ts +1 -0
- package/lib/src/brand-page/components/background-shape/BackgroundShape.mixin.js +18 -3
- package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +2 -1
- package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +8 -3
- package/lib/src/brand-page/components/media/Shape.mixin.d.ts +1 -0
- package/lib/src/brand-page/components/media/Shape.mixin.js +20 -2
- package/lib/src/brand-page/components/page/Page.mixin.d.ts +2 -0
- package/lib/src/brand-page/components/page/Page.mixin.js +21 -2
- package/lib/src/brand-page/models/index.d.ts +47 -26
- package/lib/src/brand-page/models/index.js +4 -0
- package/lib/src/brand-page/utils/color-palette.util.d.ts +179 -0
- package/lib/src/brand-page/utils/color-palette.util.js +372 -0
- package/lib/src/brand-page/utils/color.util.js +18 -0
- package/lib/src/brand-page/utils/index.d.ts +2 -0
- package/lib/src/brand-page/utils/index.js +2 -0
- package/lib/src/brand-page/utils/migration/migration-13.js +2 -2
- package/lib/src/brand-page/utils/migration/migration-20.d.ts +2 -0
- package/lib/src/brand-page/utils/migration/migration-20.js +85 -0
- package/lib/src/brand-page/utils/migration/migration-21.d.ts +2 -0
- package/lib/src/brand-page/utils/migration/migration-21.js +332 -0
- package/lib/src/brand-page/utils/migration/migration-22.d.ts +2 -0
- package/lib/src/brand-page/utils/migration/migration-22.js +177 -0
- package/lib/src/brand-page/utils/migration.util.d.ts +2 -1
- package/lib/src/brand-page/utils/migration.util.js +39 -0
- package/lib/src/brand-page/utils/style.util.d.ts +14 -1
- package/lib/src/brand-page/utils/style.util.js +48 -7
- package/lib/src/brand-page/utils/text-style.util.d.ts +41 -0
- package/lib/src/brand-page/utils/text-style.util.js +37 -0
- package/lib/src/brand-page/utils/text.util.d.ts +13 -1
- package/lib/src/brand-page/utils/text.util.js +64 -0
- package/lib/src/brand-page/utils/vcard.util.js +4 -4
- package/lib/src/brand-page/utils/view-model.util.d.ts +1 -0
- package/lib/src/brand-page/utils/view-model.util.js +90 -42
- package/lib/src/brand-page/view-models.d.ts +4 -3
- package/lib/src/brand-page-maker/__fixtures__/complex-rte.fixture.d.ts +22 -0
- package/lib/src/brand-page-maker/__fixtures__/complex-rte.fixture.js +22 -0
- package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +2 -0
- package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.js +18 -14
- package/lib/src/brand-page-maker/components/color-picker/components/GradientColorSlider.mixin.d.ts +1 -1
- package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.js +17 -14
- package/lib/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.d.ts +0 -1
- package/lib/src/brand-page-maker/composables/rich-text-editor/bubbleMenu.d.ts +2 -9
- package/lib/src/brand-page-maker/composables/rich-text-editor/bubbleMenu.js +6 -10
- package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/FontFamily.d.ts +14 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/FontFamily.js +39 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/getRteExtensions.d.ts +28 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/getRteExtensions.js +117 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +1 -1
- package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +44 -108
- package/lib/src/brand-page-maker/constants/sidebar-constant.d.ts +1 -0
- package/lib/src/brand-page-maker/constants/sidebar-constant.js +12 -0
- package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +30 -0
- package/lib/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.js +43 -35
- package/lib/src/brand-page-maker/utils/apply-color-strategy.d.ts +61 -0
- package/lib/src/brand-page-maker/utils/apply-color-strategy.js +136 -0
- package/lib/src/brand-page-maker/utils/index.d.ts +2 -1
- package/lib/src/brand-page-maker/utils/index.js +2 -13
- package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +68 -5
- package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +112 -57
- package/lib/src/brand-page-maker/utils/rte-field-pairs.d.ts +24 -0
- package/lib/src/brand-page-maker/utils/rte-field-pairs.js +84 -0
- package/lib/src/brand-page-maker/utils/rte-render.util.d.ts +63 -0
- package/lib/src/brand-page-maker/utils/rte-render.util.js +106 -0
- package/lib/src/brand-page-maker/utils/rte-sanitize.util.d.ts +18 -0
- package/lib/src/brand-page-maker/utils/rte-sanitize.util.js +168 -0
- package/lib/src/brand-page-maker/validators/field.validator.js +10 -2
- package/lib/src/bundled-translations-Cdaimg3K.js +177 -0
- package/lib/src/bundled-translations.de-DE--RgmAzqM.js +177 -0
- package/lib/src/bundled-translations.es-ES-CdwBqPR4.js +177 -0
- package/lib/src/bundled-translations.fr-CA-TlHb3mW5.js +177 -0
- package/lib/src/bundled-translations.fr-FR-CUgtJXTn.js +177 -0
- package/lib/src/bundled-translations.pt-BR-BFtnOkWA.js +177 -0
- package/lib/src/bundled-translations.pt-PT-D-csapLA.js +177 -0
- package/lib/src/bundles/bundled-translations.de-DE.json +3 -4
- package/lib/src/bundles/bundled-translations.es-ES.json +3 -4
- package/lib/src/bundles/bundled-translations.fr-CA.json +3 -4
- package/lib/src/bundles/bundled-translations.fr-FR.json +3 -4
- package/lib/src/bundles/bundled-translations.json +10 -5
- package/lib/src/bundles/bundled-translations.pt-BR.json +3 -4
- package/lib/src/bundles/bundled-translations.pt-PT.json +3 -4
- package/lib/src/css/library.brand-page-brandCrowd.min.css +150 -89
- package/lib/src/css/library.brand-page-brandPage.min.css +150 -89
- package/lib/src/css/library.brand-page-designCom.min.css +150 -89
- package/lib/src/css/library.brand-page-preview.min.css +150 -89
- package/lib/src/index.d.ts +1 -0
- package/lib/src/index.mjs +145 -140
- package/lib/src/{lib-DtalJKI3.js → lib-D3mtUOE0.js} +59486 -55061
- package/lib/src/lib.js +2 -0
- package/lib/src/metadata-builder/ai-metadata-executor.d.ts +0 -1
- package/lib/src/metadata-builder/ai-metadata-executor.js +0 -19
- package/lib/src/metadata-builder/builders/section-builders/about-section-builder.js +2 -3
- package/lib/src/metadata-builder/builders/section-builders/banner-section-builder.js +2 -3
- package/lib/src/metadata-builder/builders/section-builders/booking-section-builder.js +2 -3
- package/lib/src/metadata-builder/builders/section-builders/contact-form-builder.js +3 -4
- package/lib/src/metadata-builder/builders/section-builders/images-section-builder.js +2 -3
- package/lib/src/metadata-builder/builders/section-builders/mailing-list-builder.js +1 -2
- package/lib/src/metadata-builder/builders/section-builders/mailing-list-section-builder.js +1 -2
- package/lib/src/metadata-builder/builders/section-builders/profile-section-builder.js +3 -4
- package/lib/src/metadata-builder/builders/section-builders/shapes-section-builder.js +2 -3
- package/lib/src/metadata-builder/builders/section-builders/testimonial-section-builder.js +1 -2
- package/lib/src/metadata-builder/builders/section-builders/text-section-builder.js +15 -11
- package/lib/src/metadata-builder/helpers/rte.helpers.d.ts +11 -13
- package/lib/src/metadata-builder/helpers/rte.helpers.js +14 -73
- package/lib/src/metadata-builder/metadata-executor.js +0 -4
- package/lib/src/metadata-builder/models.d.ts +0 -2
- package/lib/src/metadata-builder/models.js +0 -2
- package/lib/src/metadata-builder/parsers/ai-toolcall-parser.d.ts +0 -19
- package/lib/src/metadata-builder/parsers/ai-toolcall-parser.js +0 -4
- package/lib/src/metadata-builder/sanitizers/rte-schema-check.d.ts +7 -8
- package/lib/src/metadata-builder/sanitizers/rte-schema-check.js +21 -52
- package/lib/src/shared/background-settings/composables/useSingleBackgroundShape.js +5 -7
- package/lib/src/shared/background-settings/shape-color.util.d.ts +16 -0
- package/lib/src/shared/background-settings/shape-color.util.js +26 -0
- package/lib/src/shared/color-palette/color-match-state.d.ts +57 -0
- package/lib/src/shared/color-palette/color-match-state.js +48 -0
- package/lib/src/shared/color-palette/store/color-palette-store.d.ts +92 -0
- package/lib/src/shared/color-palette/store/color-palette-store.js +171 -0
- package/lib/src/shared/color-palette/store/index.d.ts +1 -0
- package/lib/src/shared/color-palette/store/index.js +1 -0
- package/lib/src/shared/color-picker/components/ColorPicker.mixin.d.ts +30 -1
- package/lib/src/shared/color-picker/components/ColorPicker.mixin.js +76 -6
- package/lib/src/shared/color-picker/models.d.ts +2 -0
- package/lib/src/shared/color-strategies/color-strategies.d.ts +143 -0
- package/lib/src/shared/color-strategies/color-strategies.js +276 -0
- package/lib/src/shared/color-strategies/models.d.ts +149 -0
- package/lib/src/shared/color-strategies/models.js +5 -0
- package/lib/src/shared/color-strategies/page-anchors.d.ts +38 -0
- package/lib/src/shared/color-strategies/page-anchors.js +24 -0
- package/lib/src/shared/color-strategies/rte-color.d.ts +16 -0
- package/lib/src/shared/color-strategies/rte-color.js +96 -0
- package/lib/src/shared/content-settings/components/GenericTextInput.mixin.d.ts +1 -1
- package/lib/src/shared/content-settings/components/GenericTextInput.mixin.js +35 -10
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +3 -0
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.js +32 -0
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +12 -3
- package/lib/src/shared/content-settings/components/email-field/EmailField.mixin.d.ts +1 -1
- package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +3 -0
- package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.js +38 -0
- package/lib/src/shared/content-settings/components/tel-field/TelField.mixin.d.ts +1 -1
- package/lib/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.d.ts +3 -2
- package/lib/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.js +10 -3
- package/lib/src/shared/content-settings/components/text-field/TextField.mixin.d.ts +1 -1
- package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.d.ts +2 -1
- package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +4 -1
- package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.d.ts +9 -0
- package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.js +27 -0
- package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +1 -1
- package/lib/src/shared/content-settings/components/url-field/UrlField.mixin.d.ts +1 -1
- package/lib/src/shared/content-settings/components/youtube-video-field/YoutubeVideoField.mixin.d.ts +1 -1
- package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.d.ts +0 -5
- package/lib/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.js +3 -50
- package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +44 -53
- package/lib/src/shared/style-settings/components/StyleSettings.mixin.js +11 -56
- package/lib/src/shared/style-settings/models.d.ts +0 -1
- package/lib/src/utils/minify-brand-page-metadata.js +4 -1
- package/package.json +17 -15
- package/src/brand-page/components/background-shape/BackgroundShape.mixin.ts +23 -3
- package/src/brand-page/components/contact-form/ContactForm.mixin.ts +10 -5
- package/src/brand-page/components/media/Shape.mixin.ts +25 -2
- package/src/brand-page/components/page/Page.mixin.ts +28 -2
- package/src/brand-page/components/page/Page.vue +6 -0
- package/src/brand-page/components/text-wrapper/TextWrapper.vue +17 -6
- package/src/brand-page/models/index.ts +53 -26
- package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +108 -27
- package/src/brand-page/utils/__snapshots__/migration2.util.test.ts.snap +1 -0
- package/src/brand-page/utils/__snapshots__/model.util.test.ts.snap +2 -0
- package/src/brand-page/utils/color-palette.util.test.ts +554 -0
- package/src/brand-page/utils/color-palette.util.ts +520 -0
- package/src/brand-page/utils/color.util.test.ts +35 -0
- package/src/brand-page/utils/color.util.ts +24 -0
- package/src/brand-page/utils/index.ts +2 -0
- package/src/brand-page/utils/migration/migration-13.ts +2 -2
- package/src/brand-page/utils/migration/migration-20.server.test.ts +125 -0
- package/src/brand-page/utils/migration/migration-20.test.ts +93 -0
- package/src/brand-page/utils/migration/migration-20.ts +112 -0
- package/src/brand-page/utils/migration/migration-21.test.ts +762 -0
- package/src/brand-page/utils/migration/migration-21.ts +437 -0
- package/src/brand-page/utils/migration/migration-22.test.ts +367 -0
- package/src/brand-page/utils/migration/migration-22.ts +245 -0
- package/src/brand-page/utils/migration.util.ts +50 -1
- package/src/brand-page/utils/style.util.test.ts +105 -0
- package/src/brand-page/utils/style.util.ts +62 -9
- package/src/brand-page/utils/text-style.util.ts +45 -0
- package/src/brand-page/utils/text.util.test.ts +106 -0
- package/src/brand-page/utils/text.util.ts +83 -4
- package/src/brand-page/utils/vcard.util.ts +6 -4
- package/src/brand-page/utils/view-model.pageid-rte.test.ts +104 -0
- package/src/brand-page/utils/view-model.util.test.ts +186 -3
- package/src/brand-page/utils/view-model.util.ts +116 -48
- package/src/brand-page/view-models.ts +5 -2
- package/src/brand-page-maker/__fixtures__/complex-rte.fixture.ts +23 -0
- package/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.vue +2 -5
- package/src/brand-page-maker/components/admin-settings/AdminSettings.vue +54 -0
- package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +2 -0
- package/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.ts +21 -15
- package/src/brand-page-maker/components/color-palette/BpColorPalette.vue +75 -6
- package/src/brand-page-maker/components/color-palette/BpColorPicker.vue +91 -20
- package/src/brand-page-maker/components/color-palette/i18n/color-palette.de-DE.json +2 -1
- package/src/brand-page-maker/components/color-palette/i18n/color-palette.es-ES.json +2 -1
- package/src/brand-page-maker/components/color-palette/i18n/color-palette.fr-CA.json +2 -1
- package/src/brand-page-maker/components/color-palette/i18n/color-palette.fr-FR.json +2 -1
- package/src/brand-page-maker/components/color-palette/i18n/color-palette.json +2 -1
- package/src/brand-page-maker/components/color-palette/i18n/color-palette.pt-BR.json +2 -1
- package/src/brand-page-maker/components/color-palette/i18n/color-palette.pt-PT.json +2 -1
- package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +9 -25
- package/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.ts +17 -14
- package/src/brand-page-maker/composables/ai-chat/useAiMetadataBuilder.ts +0 -1
- package/src/brand-page-maker/composables/rich-text-editor/bubbleMenu.ts +6 -10
- package/src/brand-page-maker/composables/rich-text-editor/extensions/FontFamily.test.ts +52 -0
- package/src/brand-page-maker/composables/rich-text-editor/extensions/FontFamily.ts +42 -0
- package/src/brand-page-maker/composables/rich-text-editor/getRteExtensions.ts +162 -0
- package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +52 -116
- package/src/brand-page-maker/constants/sidebar-constant.ts +12 -0
- package/src/brand-page-maker/stores/brandpage-maker/__snapshots__/brandpage-maker-store.test.ts.snap +3 -3
- package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.test.ts +80 -9
- package/src/brand-page-maker/stores/brandpage-maker/brandpage-maker-store.ts +47 -62
- package/src/brand-page-maker/utils/__snapshots__/apply-color-strategy.golden.test.ts.snap +26599 -0
- package/src/brand-page-maker/utils/__snapshots__/rte-render-parity.test.ts.snap +202 -0
- package/src/brand-page-maker/utils/apply-color-strategy.golden.test.ts +164 -0
- package/src/brand-page-maker/utils/apply-color-strategy.test.ts +1185 -0
- package/src/brand-page-maker/utils/apply-color-strategy.ts +240 -0
- package/src/brand-page-maker/utils/index.ts +2 -18
- package/src/brand-page-maker/utils/rich-text-editor.util.test.ts +170 -3
- package/src/brand-page-maker/utils/rich-text-editor.util.ts +142 -67
- package/src/brand-page-maker/utils/rte-features.test.ts +415 -0
- package/src/brand-page-maker/utils/rte-field-pairs.test.ts +50 -0
- package/src/brand-page-maker/utils/rte-field-pairs.ts +98 -0
- package/src/brand-page-maker/utils/rte-render-parity.test.ts +167 -0
- package/src/brand-page-maker/utils/rte-render.util.ts +179 -0
- package/src/brand-page-maker/utils/rte-sanitize-json.test.ts +225 -0
- package/src/brand-page-maker/utils/rte-sanitize.util.ts +209 -0
- package/src/brand-page-maker/validators/field.validator.test.ts +55 -0
- package/src/brand-page-maker/validators/field.validator.ts +10 -2
- package/src/bundles/bundled-translations.de-DE.json +3 -4
- package/src/bundles/bundled-translations.es-ES.json +3 -4
- package/src/bundles/bundled-translations.fr-CA.json +3 -4
- package/src/bundles/bundled-translations.fr-FR.json +3 -4
- package/src/bundles/bundled-translations.json +10 -5
- package/src/bundles/bundled-translations.pt-BR.json +3 -4
- package/src/bundles/bundled-translations.pt-PT.json +3 -4
- package/src/lib.ts +9 -0
- package/src/metadata-builder/ai-metadata-executor.ts +0 -26
- package/src/metadata-builder/builders/section-builders/about-section-builder.ts +2 -3
- package/src/metadata-builder/builders/section-builders/banner-section-builder.ts +2 -3
- package/src/metadata-builder/builders/section-builders/booking-section-builder.ts +2 -5
- package/src/metadata-builder/builders/section-builders/contact-form-builder.ts +3 -4
- package/src/metadata-builder/builders/section-builders/images-section-builder.ts +2 -3
- package/src/metadata-builder/builders/section-builders/mailing-list-builder.ts +1 -2
- package/src/metadata-builder/builders/section-builders/mailing-list-section-builder.ts +1 -2
- package/src/metadata-builder/builders/section-builders/profile-section-builder.ts +3 -6
- package/src/metadata-builder/builders/section-builders/shapes-section-builder.ts +2 -3
- package/src/metadata-builder/builders/section-builders/testimonial-section-builder.ts +1 -2
- package/src/metadata-builder/builders/section-builders/text-section-builder.ts +19 -13
- package/src/metadata-builder/helpers/rte.helpers.ts +15 -101
- package/src/metadata-builder/metadata-executor.ts +0 -5
- package/src/metadata-builder/models.ts +0 -3
- package/src/metadata-builder/parsers/ai-toolcall-parser.ts +0 -27
- package/src/metadata-builder/sanitizers/rte-schema-check.ts +24 -53
- package/src/shared/background-settings/components/BackgroundSettings.vue +0 -1
- package/src/shared/background-settings/components/MultiBackgroundShapes.vue +4 -10
- package/src/shared/background-settings/components/SingleBackgroundShape.vue +0 -2
- package/src/shared/background-settings/components/background-color/BackgroundColorSettings.vue +5 -26
- package/src/shared/background-settings/composables/useSingleBackgroundShape.ts +5 -8
- package/src/shared/background-settings/shape-color.util.test.ts +35 -0
- package/src/shared/background-settings/shape-color.util.ts +28 -0
- package/src/shared/color-palette/color-match-state.test.ts +153 -0
- package/src/shared/color-palette/color-match-state.ts +109 -0
- package/src/shared/color-palette/store/color-palette-store.test.ts +325 -0
- package/src/shared/color-palette/store/color-palette-store.ts +251 -0
- package/src/shared/color-palette/store/index.ts +1 -0
- package/src/shared/color-picker/components/ColorPicker.mixin.ts +81 -7
- package/src/shared/color-picker/models.ts +7 -0
- package/src/shared/color-strategies/color-strategies.test.ts +548 -0
- package/src/shared/color-strategies/color-strategies.ts +359 -0
- package/src/shared/color-strategies/models.ts +173 -0
- package/src/shared/color-strategies/page-anchors.ts +45 -0
- package/src/shared/color-strategies/rte-color.test.ts +209 -0
- package/src/shared/color-strategies/rte-color.ts +116 -0
- package/src/shared/content-settings/components/GenericTextInput.mixin.ts +42 -11
- package/src/shared/content-settings/components/color-field/ColorField.test.ts +209 -0
- package/src/shared/content-settings/components/color-field/ColorField.vue +181 -122
- package/src/shared/content-settings/components/color-field/i18n/color-field.json +4 -1
- package/src/shared/content-settings/components/color-match-indicator/ColorMatchIndicator.test.ts +109 -0
- package/src/shared/content-settings/components/color-match-indicator/ColorMatchIndicator.vue +146 -0
- package/src/shared/content-settings/components/color-replacements-field/ColorReplacementsField.test.ts +112 -0
- package/src/shared/content-settings/components/color-replacements-field/ColorReplacementsField.vue +8 -87
- package/src/shared/content-settings/components/color-replacements-field/i18n/color-replacement-field.de-DE.json +1 -3
- package/src/shared/content-settings/components/color-replacements-field/i18n/color-replacement-field.es-ES.json +1 -3
- package/src/shared/content-settings/components/color-replacements-field/i18n/color-replacement-field.fr-CA.json +1 -3
- package/src/shared/content-settings/components/color-replacements-field/i18n/color-replacement-field.fr-FR.json +1 -3
- package/src/shared/content-settings/components/color-replacements-field/i18n/color-replacement-field.json +1 -3
- package/src/shared/content-settings/components/color-replacements-field/i18n/color-replacement-field.pt-BR.json +1 -3
- package/src/shared/content-settings/components/color-replacements-field/i18n/color-replacement-field.pt-PT.json +1 -3
- package/src/shared/content-settings/components/color-strategy-panel/ColorStrategyPanel.test.ts +131 -0
- package/src/shared/content-settings/components/color-strategy-panel/ColorStrategyPanel.vue +98 -0
- package/src/shared/content-settings/components/color-strategy-panel/color-strategy-gate.test.ts +113 -0
- package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.ts +45 -0
- package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.vue +15 -0
- package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +16 -3
- package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.vue +0 -1
- package/src/shared/content-settings/components/draggable-item-list/DraggableItemList.vue +0 -1
- package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.ts +53 -0
- package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.vue +10 -0
- package/src/shared/content-settings/components/shape-field/ShapeField.vue +100 -101
- package/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.ts +13 -4
- package/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.vue +227 -226
- package/src/shared/content-settings/components/text-image-field/TextImageField.vue +6 -4
- package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +6 -1
- package/src/shared/content-settings/components/text-items-field/TextItemsField.vue +1 -1
- package/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.test.ts +96 -0
- package/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.ts +29 -0
- package/src/shared/content-settings/components/text-style-field/TextStyleField.vue +9 -15
- package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.mixin.ts +3 -64
- package/src/shared/navigation-style-settings/components/navigation-style-settings/NavigationStyleSettings.vue +18 -66
- package/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.vue +0 -4
- package/src/shared/side-bar/components/SideBar.tabs.test.ts +64 -0
- package/src/shared/style-settings/components/StyleSettings.mixin.ts +14 -67
- package/src/shared/style-settings/components/StyleSettings.vue +32 -213
- package/src/shared/style-settings/components/color-palette-settings-with-state/ColorPaletteSettingsWithState.vue +85 -0
- package/src/shared/style-settings/components/i18n/style-settings.json +3 -0
- package/src/shared/style-settings/components/style-option-color-field-with-state/StyleOptionColorFieldWithState.test.ts +105 -0
- package/src/shared/style-settings/components/style-option-color-field-with-state/StyleOptionColorFieldWithState.vue +80 -0
- package/src/shared/style-settings/models.ts +0 -1
- package/src/utils/minify-brand-page-metadata.ts +4 -1
- package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/FontSize.d.ts +0 -20
- package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/FontSize.js +0 -44
- package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/LineHeight.d.ts +0 -27
- package/lib/src/brand-page-maker/composables/rich-text-editor/extensions/LineHeight.js +0 -44
- package/lib/src/bundled-translations-2HkRBbBD.js +0 -177
- package/lib/src/bundled-translations.de-DE-CL9ZEhU2.js +0 -177
- package/lib/src/bundled-translations.es-ES-uj7Sliu0.js +0 -177
- package/lib/src/bundled-translations.fr-CA-BMnBtr_w.js +0 -177
- package/lib/src/bundled-translations.fr-FR-9PEZedzq.js +0 -177
- package/lib/src/bundled-translations.pt-BR-B3oNDkoe.js +0 -177
- package/lib/src/bundled-translations.pt-PT-DM7Vsf-h.js +0 -177
- package/lib/src/metadata-builder/builders/update-content-text-builder.d.ts +0 -17
- package/lib/src/metadata-builder/builders/update-content-text-builder.js +0 -103
- package/lib/src/metadata-builder/builders/update-content-text-style-builder.d.ts +0 -16
- package/lib/src/metadata-builder/builders/update-content-text-style-builder.js +0 -216
- package/lib/src/shared/background-settings/components/background-shapes/BackgroundShapeSettings.mixin.d.ts +0 -286
- package/lib/src/shared/background-settings/components/background-shapes/BackgroundShapeSettings.mixin.js +0 -60
- package/src/brand-page-maker/composables/rich-text-editor/extensions/FontSize.ts +0 -73
- package/src/brand-page-maker/composables/rich-text-editor/extensions/LineHeight.ts +0 -85
- package/src/metadata-builder/builders/update-content-text-builder.ts +0 -148
- package/src/metadata-builder/builders/update-content-text-style-builder.ts +0 -352
- package/src/shared/background-settings/components/background-shapes/BackgroundShapeSettings.mixin.ts +0 -66
- package/src/shared/background-settings/components/background-shapes/BackgroundShapeSettings.vue +0 -28
|
@@ -16,6 +16,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
16
16
|
backgroundShapesStyle(): BrandPageCssStyle;
|
|
17
17
|
isFullBackground(): boolean;
|
|
18
18
|
objectUrl(): string;
|
|
19
|
+
resolvedShapeColor(): string;
|
|
19
20
|
}, {
|
|
20
21
|
isValidSvgUrl(url: string): boolean;
|
|
21
22
|
applySvgAttributes(svgData: string): string;
|
|
@@ -2,6 +2,7 @@ import { defineComponent } from 'vue';
|
|
|
2
2
|
import ComponentCommonMixin from '../mixins/component-common.mixin';
|
|
3
3
|
import axios from 'axios';
|
|
4
4
|
import { applyColorToSvgString } from '@brand-page/utils/svg-color.util';
|
|
5
|
+
import { resolveColorReference, } from '@brand-page/utils/color-palette.util';
|
|
5
6
|
import { isURL } from '../../../utils/validator.util';
|
|
6
7
|
import { PROXY_SHAPE_URL_REGEX } from '@brand-page/constants';
|
|
7
8
|
import { getRegexToMatchAttributeInSvgTag } from '@brand-page/utils/svg.util';
|
|
@@ -17,6 +18,11 @@ export default defineComponent({
|
|
|
17
18
|
required: true,
|
|
18
19
|
},
|
|
19
20
|
},
|
|
21
|
+
inject: {
|
|
22
|
+
// BP-5886: getter for the page palette (provided by <Page>) to resolve
|
|
23
|
+
// `var(--id)` fills.
|
|
24
|
+
getPaletteColors: { default: undefined },
|
|
25
|
+
},
|
|
20
26
|
data() {
|
|
21
27
|
return {
|
|
22
28
|
svgData: '',
|
|
@@ -48,9 +54,18 @@ export default defineComponent({
|
|
|
48
54
|
}
|
|
49
55
|
return this.viewModel.name;
|
|
50
56
|
},
|
|
57
|
+
// BP-5886: the shape's colour with any palette `var(--id)` resolved to its
|
|
58
|
+
// concrete value — `var()` can't resolve inside the <img>-embedded SVG.
|
|
59
|
+
resolvedShapeColor() {
|
|
60
|
+
const getColors = this.getPaletteColors;
|
|
61
|
+
const colors = getColors?.() ?? [];
|
|
62
|
+
return resolveColorReference(this.viewModel?.style?.color, colors);
|
|
63
|
+
},
|
|
51
64
|
},
|
|
52
65
|
watch: {
|
|
53
|
-
|
|
66
|
+
// BP-5886: re-render when the resolved colour changes — covers both a direct
|
|
67
|
+
// colour edit and an edit to a referenced palette role.
|
|
68
|
+
resolvedShapeColor: {
|
|
54
69
|
handler() {
|
|
55
70
|
this.render();
|
|
56
71
|
},
|
|
@@ -146,8 +161,8 @@ export default defineComponent({
|
|
|
146
161
|
else {
|
|
147
162
|
this.originalSvgData = this.viewModel.name;
|
|
148
163
|
}
|
|
149
|
-
if (this.
|
|
150
|
-
this.svgData = applyColorToSvgString(this.originalSvgData, this.
|
|
164
|
+
if (this.resolvedShapeColor) {
|
|
165
|
+
this.svgData = applyColorToSvgString(this.originalSvgData, this.resolvedShapeColor);
|
|
151
166
|
}
|
|
152
167
|
else {
|
|
153
168
|
this.svgData = this.originalSvgData;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { PropType } from 'vue';
|
|
2
2
|
import type { ContactFormViewModel } from '@brand-page/view-models';
|
|
3
3
|
import type { BrandPageContext, FormField, FormFieldType } from '@brand-page/models';
|
|
4
|
+
import { type RichTextValue } from '@brand-page-maker/utils';
|
|
4
5
|
export interface FieldValue {
|
|
5
6
|
value: string;
|
|
6
7
|
error?: string;
|
|
@@ -62,7 +63,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
62
63
|
hasFormError(): boolean;
|
|
63
64
|
hasSubmitError(): boolean;
|
|
64
65
|
isSubmitButtonVisible(): boolean;
|
|
65
|
-
title():
|
|
66
|
+
title(): RichTextValue;
|
|
66
67
|
renderText(): string;
|
|
67
68
|
renderSuccessText(): string;
|
|
68
69
|
successMessageColorStyle(): BrandPageCssStyle;
|
|
@@ -120,9 +120,14 @@ export default defineComponent({
|
|
|
120
120
|
isEmail(this.viewModel.responseEmail));
|
|
121
121
|
},
|
|
122
122
|
title() {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
// Render exactly what's in the data — no render-time default. The block
|
|
124
|
+
// factory seeds a localised title (contentSettingsTr('contactUsTitle')) on
|
|
125
|
+
// creation and it flows through the translation pipeline, so a hardcoded
|
|
126
|
+
// 'Contact Us' fallback here would (a) override a user who deliberately
|
|
127
|
+
// cleared the title and (b) paint untranslated English on non-English
|
|
128
|
+
// sites. This is also the one section that had such a fallback — every
|
|
129
|
+
// other section renders its data title directly (BP-5787).
|
|
130
|
+
return this.viewModel.title;
|
|
126
131
|
},
|
|
127
132
|
renderText() {
|
|
128
133
|
if (!this.viewModel.description) {
|
|
@@ -30,6 +30,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
30
30
|
originalSvgData: string;
|
|
31
31
|
}, {
|
|
32
32
|
useObjectElement(): boolean;
|
|
33
|
+
resolvedColorReplacements(): ColorReplacement[];
|
|
33
34
|
objectStyle(): {
|
|
34
35
|
width?: undefined;
|
|
35
36
|
height?: undefined;
|
|
@@ -2,6 +2,7 @@ import { defineComponent } from 'vue';
|
|
|
2
2
|
import ComponentCommonMixin from '../mixins/component-common.mixin';
|
|
3
3
|
import axios from 'axios';
|
|
4
4
|
import { applyColorReplacementsToSvgString } from '@brand-page/utils/svg-color.util';
|
|
5
|
+
import { resolveColorReference, } from '@brand-page/utils/color-palette.util';
|
|
5
6
|
import { PROXY_SHAPE_URL_REGEX } from '@brand-page/constants';
|
|
6
7
|
import { getRegexToMatchAttributeInSvgTag } from '@brand-page/utils/svg.util';
|
|
7
8
|
export default defineComponent({
|
|
@@ -31,6 +32,11 @@ export default defineComponent({
|
|
|
31
32
|
default: undefined,
|
|
32
33
|
},
|
|
33
34
|
},
|
|
35
|
+
inject: {
|
|
36
|
+
// BP-5886: getter for the page palette (provided by <Page>) — used to resolve
|
|
37
|
+
// `var(--id)` fills to concrete colours before the SVG is built.
|
|
38
|
+
getPaletteColors: { default: undefined },
|
|
39
|
+
},
|
|
34
40
|
data() {
|
|
35
41
|
return { svgData: '', svgDataObjectUrl: '', originalSvgData: '' };
|
|
36
42
|
},
|
|
@@ -38,6 +44,16 @@ export default defineComponent({
|
|
|
38
44
|
useObjectElement() {
|
|
39
45
|
return !!this.imageUrl.match(PROXY_SHAPE_URL_REGEX);
|
|
40
46
|
},
|
|
47
|
+
// BP-5886: colour replacements with any palette `var(--id)` resolved to its
|
|
48
|
+
// concrete value — `var()` can't resolve inside the <img>-embedded SVG.
|
|
49
|
+
resolvedColorReplacements() {
|
|
50
|
+
const getColors = this.getPaletteColors;
|
|
51
|
+
const colors = getColors?.() ?? [];
|
|
52
|
+
return (this.colorReplacements ?? []).map((c) => ({
|
|
53
|
+
...c,
|
|
54
|
+
replacementColor: resolveColorReference(c.replacementColor, colors),
|
|
55
|
+
}));
|
|
56
|
+
},
|
|
41
57
|
objectStyle() {
|
|
42
58
|
if (!this.size) {
|
|
43
59
|
return {};
|
|
@@ -60,7 +76,9 @@ export default defineComponent({
|
|
|
60
76
|
},
|
|
61
77
|
},
|
|
62
78
|
watch: {
|
|
63
|
-
|
|
79
|
+
// BP-5886: watch the RESOLVED replacements so the shape re-renders both when
|
|
80
|
+
// its own colours change and when a referenced palette colour is edited.
|
|
81
|
+
resolvedColorReplacements: {
|
|
64
82
|
handler(newVal, oldVal) {
|
|
65
83
|
if (newVal &&
|
|
66
84
|
oldVal &&
|
|
@@ -136,7 +154,7 @@ export default defineComponent({
|
|
|
136
154
|
if (!this.originalSvgData) {
|
|
137
155
|
return;
|
|
138
156
|
}
|
|
139
|
-
this.svgData = applyColorReplacementsToSvgString(this.originalSvgData, this.
|
|
157
|
+
this.svgData = applyColorReplacementsToSvgString(this.originalSvgData, this.resolvedColorReplacements);
|
|
140
158
|
this.svgData = this.applySvgAttributes(this.svgData);
|
|
141
159
|
const blob = new Blob([this.svgData], { type: 'image/svg+xml' });
|
|
142
160
|
const oldSvgDataObjectUrl = this.svgDataObjectUrl;
|
|
@@ -52,6 +52,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
52
52
|
styles: {};
|
|
53
53
|
}, {
|
|
54
54
|
brandPageToken(): string | null;
|
|
55
|
+
shouldEmitPaletteRoot(): boolean;
|
|
56
|
+
paletteRootStyleHtml(): string;
|
|
55
57
|
contents(): ContentViewModel[];
|
|
56
58
|
backgroundShapes(): BackgroundShape[];
|
|
57
59
|
rootElementStyles(): BrandPageCssStyle;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defineComponent } from 'vue';
|
|
1
|
+
import { defineComponent, provide } from 'vue';
|
|
2
2
|
import { DEFAULT_FONT_FAMILY_KEY, FALLBACK_FONT_FAMILIES, FONT_FAMILY_CONFIGS, } from '../../constants';
|
|
3
|
-
import { getSlugFromContext, getPageHeadingText } from '@brand-page/utils';
|
|
3
|
+
import { getSlugFromContext, getPageHeadingText, buildPaletteRootCss, } from '@brand-page/utils';
|
|
4
4
|
import { findNavItemByRelativePath } from '@brand-page/utils/route.util';
|
|
5
5
|
import { BRAND_PAGE_TYPES } from '@brand-page/models';
|
|
6
6
|
import { hasProfileContent as checkHasProfileContent } from '@brand-page/utils/vcard.util';
|
|
@@ -59,6 +59,14 @@ export default defineComponent({
|
|
|
59
59
|
'save-contact-widget-click',
|
|
60
60
|
],
|
|
61
61
|
setup(props) {
|
|
62
|
+
// BP-5886: shapes render as <img>-embedded SVG, an isolated document the
|
|
63
|
+
// `:root` palette block can't reach, so a `var(--id)` fill won't resolve.
|
|
64
|
+
// Provide the palette as a getter so the shape mixins can resolve their refs
|
|
65
|
+
// to concrete colours before building the SVG. A getter (not a provided ref)
|
|
66
|
+
// sidesteps Options-API inject ref-unwrapping ambiguity and stays reactive:
|
|
67
|
+
// calling it inside a shape's computed tracks `viewModel.styles.colors`, so
|
|
68
|
+
// shapes recolour when a referenced palette colour is edited.
|
|
69
|
+
provide('getPaletteColors', () => props.viewModel?.styles?.colors ?? []);
|
|
62
70
|
return {
|
|
63
71
|
fluidText: JSON.stringify({
|
|
64
72
|
default: props.context.brandPageType === BRAND_PAGE_TYPES.brandSite
|
|
@@ -77,6 +85,17 @@ export default defineComponent({
|
|
|
77
85
|
brandPageToken() {
|
|
78
86
|
return this.viewModel?.brandPageToken || null;
|
|
79
87
|
},
|
|
88
|
+
// BP-5886 — global colour palette emitted as a single `:root` block.
|
|
89
|
+
// Only the published single-document surfaces emit the global block:
|
|
90
|
+
// template-grid cards get scoped vars (TemplatePreview) and the maker main
|
|
91
|
+
// preview emits from BrandPageMakerPage, so guard those out to avoid a
|
|
92
|
+
// duplicate / colliding `:root`.
|
|
93
|
+
shouldEmitPaletteRoot() {
|
|
94
|
+
return !this.context?.isTemplate && !this.context?.isPreview;
|
|
95
|
+
},
|
|
96
|
+
paletteRootStyleHtml() {
|
|
97
|
+
return buildPaletteRootCss(this.viewModel?.styles?.colors ?? []);
|
|
98
|
+
},
|
|
80
99
|
contents() {
|
|
81
100
|
return this.pageViewModel?.contents || [];
|
|
82
101
|
},
|
|
@@ -7,6 +7,14 @@ import { TextStyles } from './styles.model';
|
|
|
7
7
|
import { LogoStyles } from './logo.model';
|
|
8
8
|
import type { LogoImageModel, LogoTemplateImageModel } from './logo.model';
|
|
9
9
|
import type { BrandPagePaymentConfig } from './payment.model';
|
|
10
|
+
import type { JSONContent } from '@tiptap/vue-3';
|
|
11
|
+
/**
|
|
12
|
+
* BP-5787 — a rich-text field is either a legacy inline-HTML string or a
|
|
13
|
+
* Tiptap JSON document. Typing RTE content fields as RichTextValue (instead of
|
|
14
|
+
* `string`) forces every consumer to handle both forms — surfacing at compile
|
|
15
|
+
* time any code that assumes a plain string (e.g. `.replace`, `.length`).
|
|
16
|
+
*/
|
|
17
|
+
export type RichTextValue = string | JSONContent;
|
|
10
18
|
export * from './brand-page-context.model';
|
|
11
19
|
export * from './payment.model';
|
|
12
20
|
export * from './content.model';
|
|
@@ -53,6 +61,7 @@ export declare class PageStyles {
|
|
|
53
61
|
logoStyles: LogoStyles;
|
|
54
62
|
textStyles: TextStyles;
|
|
55
63
|
galleryStyles: GalleryStyles;
|
|
64
|
+
colors: ColorItem[];
|
|
56
65
|
constructor(option?: Partial<Omit<PageStyles, 'logoStyles' | 'buttonStyles' | 'backgroundStyles' | 'textStyles'>> & {
|
|
57
66
|
logoStyles?: Partial<LogoStyles>;
|
|
58
67
|
buttonStyles?: Partial<ButtonStyles>;
|
|
@@ -148,7 +157,7 @@ export interface TextContent extends Content {
|
|
|
148
157
|
/**
|
|
149
158
|
* For BrandPage/BrandContact only
|
|
150
159
|
*/
|
|
151
|
-
text:
|
|
160
|
+
text: RichTextValue;
|
|
152
161
|
/**
|
|
153
162
|
* For BrandSite
|
|
154
163
|
*/
|
|
@@ -171,9 +180,9 @@ export interface TextContent extends Content {
|
|
|
171
180
|
}
|
|
172
181
|
export interface ProfileContent extends Content {
|
|
173
182
|
avatarImageUrl: string;
|
|
174
|
-
name:
|
|
175
|
-
title:
|
|
176
|
-
description:
|
|
183
|
+
name: RichTextValue;
|
|
184
|
+
title: RichTextValue;
|
|
185
|
+
description: RichTextValue;
|
|
177
186
|
backgroundColor: BrandPageCssStyle;
|
|
178
187
|
colorReplacements: ColorReplacement[];
|
|
179
188
|
mediaType?: string;
|
|
@@ -191,7 +200,7 @@ export interface MapContent extends Content {
|
|
|
191
200
|
}
|
|
192
201
|
export interface MailingListContent extends Content {
|
|
193
202
|
acceptedFields?: 'emailOnly' | 'nameAndEmail';
|
|
194
|
-
title:
|
|
203
|
+
title: RichTextValue;
|
|
195
204
|
buttonText: string;
|
|
196
205
|
titleStyle: TextStyleDeclaration;
|
|
197
206
|
buttonTextStyle: TextStyleDeclaration;
|
|
@@ -243,10 +252,10 @@ export interface FormField {
|
|
|
243
252
|
export interface ContactFormContent extends Content {
|
|
244
253
|
type: 'contact-form';
|
|
245
254
|
displayStyle: string;
|
|
246
|
-
title:
|
|
247
|
-
description:
|
|
255
|
+
title: RichTextValue;
|
|
256
|
+
description: RichTextValue;
|
|
248
257
|
buttonText: string;
|
|
249
|
-
successMessage:
|
|
258
|
+
successMessage: RichTextValue;
|
|
250
259
|
fields: FormField[];
|
|
251
260
|
responseEmail: string;
|
|
252
261
|
imageUrl?: string;
|
|
@@ -265,8 +274,8 @@ export interface ContactFormContent extends Content {
|
|
|
265
274
|
export interface BannerSectionContent extends Content {
|
|
266
275
|
type: 'banner-section';
|
|
267
276
|
imageUrl: string;
|
|
268
|
-
title:
|
|
269
|
-
description:
|
|
277
|
+
title: RichTextValue;
|
|
278
|
+
description: RichTextValue;
|
|
270
279
|
buttonText: string | false;
|
|
271
280
|
url: string;
|
|
272
281
|
email?: string;
|
|
@@ -293,8 +302,8 @@ export declare const MEDIA_TYPES: {
|
|
|
293
302
|
};
|
|
294
303
|
export type MediaType = keyof typeof MEDIA_TYPES;
|
|
295
304
|
export interface TextMediaItem extends ImageItem {
|
|
296
|
-
title:
|
|
297
|
-
paragraph:
|
|
305
|
+
title: RichTextValue;
|
|
306
|
+
paragraph: RichTextValue;
|
|
298
307
|
itemsId: number;
|
|
299
308
|
buttonText?: string | false;
|
|
300
309
|
buttonPageId?: string;
|
|
@@ -313,8 +322,8 @@ export interface TextShapeItem extends TextMediaItem {
|
|
|
313
322
|
export interface ShapeItem extends ImageItem {
|
|
314
323
|
colorReplacements: ColorReplacement[];
|
|
315
324
|
mediaType: MediaType;
|
|
316
|
-
title?:
|
|
317
|
-
paragraph?:
|
|
325
|
+
title?: RichTextValue;
|
|
326
|
+
paragraph?: RichTextValue;
|
|
318
327
|
titleOverride?: string;
|
|
319
328
|
paragraphOverride?: string;
|
|
320
329
|
}
|
|
@@ -322,9 +331,9 @@ export interface TestimonialItems {
|
|
|
322
331
|
/** Stable per-item identifier. See ImageItem.id. */
|
|
323
332
|
id: string;
|
|
324
333
|
imageUrl: string;
|
|
325
|
-
name:
|
|
326
|
-
position:
|
|
327
|
-
testimonials:
|
|
334
|
+
name: RichTextValue;
|
|
335
|
+
position: RichTextValue;
|
|
336
|
+
testimonials: RichTextValue;
|
|
328
337
|
colorReplacements: ColorReplacement[];
|
|
329
338
|
mediaType: string;
|
|
330
339
|
size?: string;
|
|
@@ -337,7 +346,7 @@ export interface TestimonialItems {
|
|
|
337
346
|
export interface TextItem {
|
|
338
347
|
/** Stable per-item identifier. See ImageItem.id. */
|
|
339
348
|
id: string;
|
|
340
|
-
text:
|
|
349
|
+
text: RichTextValue;
|
|
341
350
|
textStyle: TextStyleDeclaration;
|
|
342
351
|
textOverride?: string;
|
|
343
352
|
}
|
|
@@ -354,8 +363,8 @@ export interface ImagesSectionContent extends Content, MediaSection {
|
|
|
354
363
|
enablePopup: boolean;
|
|
355
364
|
}
|
|
356
365
|
export interface MediaSection extends Content {
|
|
357
|
-
title:
|
|
358
|
-
description:
|
|
366
|
+
title: RichTextValue;
|
|
367
|
+
description: RichTextValue;
|
|
359
368
|
displayStyle: ImagesSectionContentDisplayStyle;
|
|
360
369
|
items: TextShapeItem[] | TextMediaItem[];
|
|
361
370
|
titleStyle: TextStyleDeclaration;
|
|
@@ -370,9 +379,21 @@ export interface ColorReplacement {
|
|
|
370
379
|
originalColor: string;
|
|
371
380
|
replacementColor: string;
|
|
372
381
|
}
|
|
382
|
+
/**
|
|
383
|
+
* A single entry in the global colour palette (BP-5886).
|
|
384
|
+
* `id` is the CSS-variable name emitted at :root (`--<id>`); elements reference
|
|
385
|
+
* the colour via `var(--<id>)`. `value` is a concrete literal (rgb/#hex or a
|
|
386
|
+
* gradient string). `palette` = the 4 static brand roles (`palette-0`…`palette-3`);
|
|
387
|
+
* `custom` = one-off colours chosen on elements (`palette-custom-<uuid>`).
|
|
388
|
+
*/
|
|
389
|
+
export interface ColorItem {
|
|
390
|
+
id: string;
|
|
391
|
+
value: string;
|
|
392
|
+
type: 'palette' | 'custom';
|
|
393
|
+
}
|
|
373
394
|
export interface TestimonialSectionContent extends Content {
|
|
374
395
|
type: 'testimonial-section';
|
|
375
|
-
title:
|
|
396
|
+
title: RichTextValue;
|
|
376
397
|
displayStyle: string;
|
|
377
398
|
items: TestimonialItems[];
|
|
378
399
|
titleStyle: TextStyleDeclaration;
|
|
@@ -386,8 +407,8 @@ export interface TestimonialSectionContent extends Content {
|
|
|
386
407
|
export interface AboutSectionContent extends Content {
|
|
387
408
|
type: 'about-section';
|
|
388
409
|
imageUrl: string;
|
|
389
|
-
title:
|
|
390
|
-
paragraph:
|
|
410
|
+
title: RichTextValue;
|
|
411
|
+
paragraph: RichTextValue;
|
|
391
412
|
displayStyle: string;
|
|
392
413
|
titleStyle: TextStyleDeclaration;
|
|
393
414
|
paragraphStyle: TextStyleDeclaration;
|
|
@@ -411,7 +432,7 @@ export declare const SOCIAL_LINKS_ICON_DISPLAY_STYLES: {
|
|
|
411
432
|
export type SocialLinksIconDisplayStyle = keyof typeof SOCIAL_LINKS_ICON_DISPLAY_STYLES;
|
|
412
433
|
export interface SocialLinksContent extends Content {
|
|
413
434
|
type: 'social-links';
|
|
414
|
-
title:
|
|
435
|
+
title: RichTextValue;
|
|
415
436
|
links: LinksItem[];
|
|
416
437
|
iconDisplayStyle: SocialLinksIconDisplayStyle;
|
|
417
438
|
iconFillStyles: BrandPageCssStyle;
|
|
@@ -434,8 +455,8 @@ export interface DividerSectionContent extends Content {
|
|
|
434
455
|
}
|
|
435
456
|
export interface BookingSectionContent extends Content {
|
|
436
457
|
type: 'booking-section';
|
|
437
|
-
title:
|
|
438
|
-
description:
|
|
458
|
+
title: RichTextValue;
|
|
459
|
+
description: RichTextValue;
|
|
439
460
|
buttonText: string;
|
|
440
461
|
url: string;
|
|
441
462
|
email?: string;
|
|
@@ -85,6 +85,9 @@ export class PageStyles {
|
|
|
85
85
|
logoStyles;
|
|
86
86
|
textStyles;
|
|
87
87
|
galleryStyles;
|
|
88
|
+
// BP-5886 global colour palette. Non-nullable (default []) per the model
|
|
89
|
+
// reactivity rule; old persisted `styles` that omit it hydrate to [].
|
|
90
|
+
colors;
|
|
88
91
|
constructor(option = {}) {
|
|
89
92
|
this.backgroundStyles = new BackgroundStyles(option.backgroundStyles || {
|
|
90
93
|
backgroundImageUrl: '',
|
|
@@ -109,6 +112,7 @@ export class PageStyles {
|
|
|
109
112
|
? new TextStyles(option.textStyles)
|
|
110
113
|
: TextStyles.GetDefaultTextStyle();
|
|
111
114
|
this.galleryStyles = new GalleryStyles(option.galleryStyles);
|
|
115
|
+
this.colors = option.colors ? option.colors.map((c) => ({ ...c })) : [];
|
|
112
116
|
}
|
|
113
117
|
}
|
|
114
118
|
export const ASPECT_RATIOS = {
|