@designcrowd/library.brand-page 6.0.19-ast-btns-2 → 6.0.19-ast-btns-4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-BI4rJV_V.js → CreatedOnBrandCrowd-de-de-sjNsYRcW.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-Crf-sBeO.js → CreatedOnBrandCrowd-en-us-AzNub21R.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-DE_kK1yb.js → CreatedOnBrandCrowd-es-es-5JGE8i4f.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-BXhEu1vY.js → CreatedOnBrandCrowd-fr-ca-D_s0VxsF.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-BXhEu1vY.js → CreatedOnBrandCrowd-fr-fr-D_s0VxsF.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-DG1azcKI.js → CreatedOnBrandCrowd-pt-br-DNzVKTkD.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-DG1azcKI.js → CreatedOnBrandCrowd-pt-pt-DNzVKTkD.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-BFL99-ya.js → CreatedOnDcom-de-de-m9T1oefT.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-DqWMpFgs.js → CreatedOnDcom-en-us-DyN0S9k3.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-Ds0zIzXx.js → CreatedOnDcom-es-es-BvR812ln.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-X-GSmpwv.js → CreatedOnDcom-fr-ca-BcmRHpDd.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-Cm1eyNiD.js → CreatedOnDcom-fr-fr-BY7TQCJy.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-BUOePaaJ.js → CreatedOnDcom-pt-br-B_bocMtD.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-CJSZsybQ.js → CreatedOnDcom-pt-pt-Fg8JoWmO.js} +1 -1
  15. package/lib/src/brand-page/components/collapsible/Collapsible.mixin.js +3 -1
  16. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +5 -3
  17. package/lib/src/brand-page/utils/migration/migration-19.js +2 -10
  18. package/lib/src/brand-page/utils/migration/migration-20.d.ts +2 -0
  19. package/lib/src/brand-page/utils/migration/migration-20.js +24 -0
  20. package/lib/src/brand-page/utils/migration.util.js +7 -1
  21. package/lib/src/brand-page-maker/assessors/contact-form-visibility.assessor.d.ts +1 -0
  22. package/lib/src/brand-page-maker/assessors/contact-form-visibility.assessor.js +6 -0
  23. package/lib/src/brand-page-maker/constants/config-settings-constant.js +8 -11
  24. package/lib/src/brand-page-maker/default-getters/contact-form-card-color.default-getter.d.ts +8 -0
  25. package/lib/src/brand-page-maker/default-getters/contact-form-card-color.default-getter.js +16 -0
  26. package/lib/src/brand-page-maker/default-getters/index.d.ts +1 -1
  27. package/lib/src/brand-page-maker/default-getters/index.js +1 -1
  28. package/lib/src/brand-page-maker/models/content-settings.js +6 -3
  29. package/lib/src/css/library.brand-page-brandCrowd.min.css +15 -15
  30. package/lib/src/css/library.brand-page-brandPage.min.css +15 -15
  31. package/lib/src/css/library.brand-page-designCom.min.css +15 -15
  32. package/lib/src/css/library.brand-page-preview.min.css +15 -15
  33. package/lib/src/index.mjs +1 -1
  34. package/lib/src/{lib-CfENvLvt.js → lib-D_Zb6GIA.js} +10850 -10831
  35. package/package.json +1 -1
  36. package/src/brand-page/components/collapsible/Collapsible.mixin.ts +3 -1
  37. package/src/brand-page/components/contact-form/ContactForm.mixin.test.ts +18 -0
  38. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +5 -3
  39. package/src/brand-page/components/contact-form/ContactForm.vue +4 -1
  40. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +3 -3
  41. package/src/brand-page/utils/migration/migration-19.test.ts +2 -7
  42. package/src/brand-page/utils/migration/migration-19.ts +2 -13
  43. package/src/brand-page/utils/migration/migration-20.test.ts +118 -0
  44. package/src/brand-page/utils/migration/migration-20.ts +54 -0
  45. package/src/brand-page/utils/migration.util.ts +8 -1
  46. package/src/brand-page-maker/assessors/contact-form-visibility.assessor.ts +11 -0
  47. package/src/brand-page-maker/constants/config-settings-constant.ts +8 -11
  48. package/src/brand-page-maker/default-getters/{contact-form-background-color.default-getter.ts → contact-form-card-color.default-getter.ts} +5 -5
  49. package/src/brand-page-maker/default-getters/index.ts +1 -1
  50. package/src/brand-page-maker/models/content-settings.ts +7 -3
  51. package/lib/src/brand-page-maker/default-getters/contact-form-background-color.default-getter.d.ts +0 -8
  52. package/lib/src/brand-page-maker/default-getters/contact-form-background-color.default-getter.js +0 -16
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CfENvLvt.js";
2
+ import { _ as t } from "./lib-D_Zb6GIA.js";
3
3
  const i = {}, h = {
4
4
  width: "275",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CfENvLvt.js";
2
+ import { _ as t } from "./lib-D_Zb6GIA.js";
3
3
  const i = {}, h = {
4
4
  width: "251",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CfENvLvt.js";
2
+ import { _ as t } from "./lib-D_Zb6GIA.js";
3
3
  const i = {}, h = {
4
4
  width: "250",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CfENvLvt.js";
2
+ import { _ as t } from "./lib-D_Zb6GIA.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CfENvLvt.js";
2
+ import { _ as t } from "./lib-D_Zb6GIA.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CfENvLvt.js";
2
+ import { _ as t } from "./lib-D_Zb6GIA.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CfENvLvt.js";
2
+ import { _ as t } from "./lib-D_Zb6GIA.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-CfENvLvt.js";
2
+ import { _ as e } from "./lib-D_Zb6GIA.js";
3
3
  const M = {}, Z = {
4
4
  width: "242",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-CfENvLvt.js";
2
+ import { _ as e } from "./lib-D_Zb6GIA.js";
3
3
  const i = {}, M = {
4
4
  width: "231",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-CfENvLvt.js";
2
+ import { _ as e } from "./lib-D_Zb6GIA.js";
3
3
  const M = {}, Z = {
4
4
  width: "230",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-CfENvLvt.js";
2
+ import { _ as e } from "./lib-D_Zb6GIA.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-CfENvLvt.js";
2
+ import { _ as e } from "./lib-D_Zb6GIA.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-CfENvLvt.js";
2
+ import { _ as M } from "./lib-D_Zb6GIA.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-CfENvLvt.js";
2
+ import { _ as M } from "./lib-D_Zb6GIA.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -45,7 +45,9 @@ export default defineComponent({
45
45
  if (borderRadius === '9999px') {
46
46
  containerStyle.borderRadius = '26px';
47
47
  }
48
- if (this.cardStyle) {
48
+ // Guarded on backgroundColor so an empty {} never blanks the container
49
+ // (BP/BC contact-form card colour defaults to the button fill).
50
+ if (this.cardStyle?.backgroundColor) {
49
51
  containerStyle.backgroundColor = this.cardStyle.backgroundColor;
50
52
  }
51
53
  // Own background colour decouples the container from the button fill (BP-5800).
@@ -158,8 +158,8 @@ export default defineComponent({
158
158
  // differs by website type:
159
159
  // - brandSite: the card style (card + divided layouts) or the section
160
160
  // background (other layouts).
161
- // - brand.page / brand.contact: there's no section background, so the
162
- // coloured surface is the global button fill.
161
+ // - brand.page / brand.contact: the container is the collapsible, whose
162
+ // colour is the card colour (defaulting to the global button fill).
163
163
  // Falls back to the title colour when there's no solid colour to anchor to.
164
164
  const style = this.context.isBrandSite
165
165
  ? this.hasCard || this.isDividedContent
@@ -167,7 +167,9 @@ export default defineComponent({
167
167
  : this.hasBgColor
168
168
  ? this.viewModel.backgroundStyle
169
169
  : undefined
170
- : this.viewModel.buttonStyles?.style;
170
+ : this.viewModel.cardStyle?.backgroundColor
171
+ ? this.viewModel.cardStyle
172
+ : this.viewModel.buttonStyles?.style;
171
173
  return (mutedTextForBackground(backgroundColorFromStyle(style)) ??
172
174
  this.viewModel.titleStyle?.color);
173
175
  },
@@ -1,4 +1,3 @@
1
- import { BRAND_PAGE_TYPES } from '../../models';
2
1
  /**
3
2
  * BP-5800 — decouple the section container background from the global button fill.
4
3
  *
@@ -8,10 +7,10 @@ import { BRAND_PAGE_TYPES } from '../../models';
8
7
  * existing sites render identically while the colour becomes independently editable.
9
8
  *
10
9
  * runAlways + idempotent: only seeds when the colour is unset, so it never overrides
11
- * a colour the user has set.
10
+ * a colour the user has set. (contact-form is handled by migration-20 — its BP/BC
11
+ * container colour moved to `cardStyle`.)
12
12
  */
13
13
  const CONTAINER_BACKGROUND_TYPES = new Set([
14
- 'contact-form',
15
14
  'mailing-list',
16
15
  'request-payment',
17
16
  'support-me',
@@ -22,18 +21,11 @@ export const migration19 = async (migrationResult) => {
22
21
  if (buttonFill === undefined) {
23
22
  return migrationResult;
24
23
  }
25
- const isBrandSite = brandPageModel.brandPageType === BRAND_PAGE_TYPES.brandSite;
26
24
  brandPageModel.pages.forEach((page) => {
27
25
  page.contents.forEach((content) => {
28
26
  if (!CONTAINER_BACKGROUND_TYPES.has(content.type)) {
29
27
  return;
30
28
  }
31
- // contact-form already paints its own backgroundStyle on brand-site (default
32
- // transparent); only its BP/BC container takes the button fill. mailing-list /
33
- // payment use the button-fill container on every type, so they always seed.
34
- if (content.type === 'contact-form' && isBrandSite) {
35
- return;
36
- }
37
29
  const block = content;
38
30
  if (block.backgroundStyle?.backgroundColor !== undefined) {
39
31
  return;
@@ -0,0 +1,2 @@
1
+ import type { MigrationData } from '../migration.util';
2
+ export declare const migration20: (migrationResult: MigrationData) => Promise<MigrationData>;
@@ -0,0 +1,24 @@
1
+ import { BRAND_PAGE_TYPES } from '../../models';
2
+ export const migration20 = async (migrationResult) => {
3
+ const { brandPageModel } = migrationResult;
4
+ if (brandPageModel.brandPageType === BRAND_PAGE_TYPES.brandSite) {
5
+ return migrationResult;
6
+ }
7
+ const buttonFill = brandPageModel.styles?.buttonStyles?.style?.backgroundColor;
8
+ if (buttonFill === undefined) {
9
+ return migrationResult;
10
+ }
11
+ brandPageModel.pages.forEach((page) => {
12
+ page.contents.forEach((content) => {
13
+ if (content.type !== 'contact-form') {
14
+ return;
15
+ }
16
+ const block = content;
17
+ block.cardStyle = {
18
+ ...block.cardStyle,
19
+ backgroundColor: buttonFill,
20
+ };
21
+ });
22
+ });
23
+ return migrationResult;
24
+ };
@@ -22,6 +22,7 @@ import { migration16 } from './migration/migration-16';
22
22
  import { migration17 } from './migration/migration-17';
23
23
  import { migration18 } from './migration/migration-18';
24
24
  import { migration19 } from './migration/migration-19';
25
+ import { migration20 } from './migration/migration-20';
25
26
  const MIGRATION_TABLE = [
26
27
  {
27
28
  version: 1,
@@ -145,7 +146,12 @@ const MIGRATION_TABLE = [
145
146
  // runAlways: re-apply on every load so already-published sites pick up the seed
146
147
  // without a version bump. Idempotent — only seeds backgroundColor when unset.
147
148
  runAlways: true,
148
- description: 'BP-5800: seed own container backgroundStyle from the button fill colour for contact-form, mailing-list, request-payment and support-me so the container background is independent of the site button (existing sites render unchanged)',
149
+ description: 'BP-5800: seed own container backgroundStyle from the button fill colour for mailing-list, request-payment and support-me so the container background is independent of the site button (existing sites render unchanged)',
150
+ },
151
+ {
152
+ version: 20,
153
+ migrateFn: migration20,
154
+ description: 'BP-5800: contact-form BP/BC container colour moves to cardStyle — seed cardStyle from the button fill (its long-standing rendered colour) so existing sites render unchanged',
149
155
  },
150
156
  ];
151
157
  export const GetLatestModelVersion = () => Math.max(...MIGRATION_TABLE.map((x) => x.version));
@@ -1,6 +1,7 @@
1
1
  import { type ContactFormContent } from '@brand-page';
2
2
  import type { VisibilityAssessor } from '../models';
3
3
  export declare const contactCardDisplayTypeVisibilityAssessor: VisibilityAssessor<ContactFormContent | undefined>;
4
+ export declare const contactCardColorVisibilityAssessor: VisibilityAssessor<ContactFormContent | undefined>;
4
5
  export declare const displayTypeVisibilityAssessor: VisibilityAssessor<ContactFormContent | undefined>;
5
6
  export declare const imageUrlVisibilityAssessor: VisibilityAssessor<ContactFormContent | undefined>;
6
7
  export declare const contactBackgroundDisplayTypeVisibilityAssessor: VisibilityAssessor<ContactFormContent | undefined>;
@@ -9,6 +9,12 @@ export const contactCardDisplayTypeVisibilityAssessor = (content, context) => {
9
9
  ALIGN_RIGHT_FULL_IMAGE,
10
10
  ].includes(content?.layoutStyle)) && context.isBrandSite);
11
11
  };
12
+ // Card colour picker: on brand-page/brand-contact it's the collapsible container
13
+ // colour (shown for every layout); on brand-site it's the card in card layouts.
14
+ export const contactCardColorVisibilityAssessor = (content, context) => {
15
+ return (!context.isBrandSite ||
16
+ contactCardDisplayTypeVisibilityAssessor(content, context));
17
+ };
12
18
  export const displayTypeVisibilityAssessor = (content, context) => {
13
19
  return Boolean(content?.layoutStyle === '' || context.isBrandPage);
14
20
  };
@@ -3,8 +3,8 @@ import { createInitialButtonContent, createInitialImageContent, createInitialPro
3
3
  import * as uuid from 'uuid';
4
4
  import { colorConvertor, backgroundColorConvertor, borderColorConvertor, displayStyleConvertor, galleryTypeConvertor, imageAspectRatioConvertor, textAlignmentOptionsConvertor, videoContentStateConvertor, fillColorConvertor, bannerAlignDisplayStyleConvertor, aboutDisplayStyleConvertor, dividerStyleConvertor, shapeSizeOptionsConvertor, buttonLinkStyleConvertor, textSizeValueConvertor, textColumnStyleConvertor, contactLayoutStyleConvertor, paymentLinkDisplayStyleConvertor, shopDisplayConvertor, shopAspectRatioConvertor, } from '../convertors';
5
5
  import { ALIGN_CENTERED, DISPLAY_STYLE_COLLAPSED, DISPLAY_STYLE_PREVIEW, } from '@brand-page';
6
- import { imageFieldVisibilityAssessor, imageOptionVisibilityAssessor, imageGalleryFieldVisibilityAssessor, cardFillVisibilityAssessor, mediaSectionItemsFieldTypeAssessor, dividerToggleFieldVisibilityAssessor, shapeSectionItemsFieldTypeAssessor, colorReplacementVisibilityTypeAssessor, colorReplacementProfileVisibilityTypeAssessor, colorReplacementIconVisibilityTypeAssessor, imagesSectionCardStyleVisibilityAssessor, contactCardDisplayTypeVisibilityAssessor, imageUrlVisibilityAssessor, displayTypeVisibilityAssessor, logoFieldVisibilityAssessor, shapesSectionCardStyleVisibilityAssessor, shopImageOptionVisibilityAssessor, shopItemColorVisibility, personalisationOverrideVisibility, } from '../assessors';
7
- import { contactFormBackgroundColorDefaultGetter, logoBackgroundColorDefaultGetter, paymentFillColorFieldDefaultGetter, paymentTextAndBorderColorFieldDefaultGetter, shopBorderColorFieldDefaultGetter, shopFillColorFieldDefaultGetter, textColorFieldDefaultGetter, } from '../default-getters';
6
+ import { imageFieldVisibilityAssessor, imageOptionVisibilityAssessor, imageGalleryFieldVisibilityAssessor, cardFillVisibilityAssessor, mediaSectionItemsFieldTypeAssessor, dividerToggleFieldVisibilityAssessor, shapeSectionItemsFieldTypeAssessor, colorReplacementVisibilityTypeAssessor, colorReplacementProfileVisibilityTypeAssessor, colorReplacementIconVisibilityTypeAssessor, imagesSectionCardStyleVisibilityAssessor, contactCardColorVisibilityAssessor, imageUrlVisibilityAssessor, displayTypeVisibilityAssessor, logoFieldVisibilityAssessor, shapesSectionCardStyleVisibilityAssessor, shopImageOptionVisibilityAssessor, shopItemColorVisibility, personalisationOverrideVisibility, } from '../assessors';
7
+ import { contactFormCardColorDefaultGetter, logoBackgroundColorDefaultGetter, paymentFillColorFieldDefaultGetter, paymentTextAndBorderColorFieldDefaultGetter, shopBorderColorFieldDefaultGetter, shopFillColorFieldDefaultGetter, textColorFieldDefaultGetter, } from '../default-getters';
8
8
  import { socialLinksIconDisplayStyleConvertor } from '../convertors/social-links-icon-display-style.convertor';
9
9
  import { getTextMediaOptionsConverterByMediaType } from '../convertors/text-image-display-style.convertor';
10
10
  import { testimonialDisplayStyleConvertor } from '../convertors/testimonial-display-style-convertor';
@@ -455,9 +455,6 @@ const testimonialReplaceImageSettings = () => ({
455
455
  desiredWidth: undefined,
456
456
  mediaType: MEDIA_TYPES.image,
457
457
  });
458
- // Transparent bg is disallowed on the single-page side (brand-page /
459
- // brand-contact) so the added background colour stays a solid backdrop for the
460
- // decorative button styles (BP-5800); brand-site sections keep transparent.
461
458
  const disableTransparentOffBrandSite = (brandPageType) => brandPageType !== BRAND_PAGE_TYPES.brandSite;
462
459
  export const LOGO_SETTINGS_CONFIG = () => ({
463
460
  createInitialContent: createInitialLogoContent,
@@ -1474,7 +1471,7 @@ export const MAILING_LIST_CONTENT_SETTINGS_CONFIG = () => ({
1474
1471
  isInline: true,
1475
1472
  showToggle: false,
1476
1473
  title: contentSettingsTr(`backgroundColorTitle`),
1477
- disableTransparent: disableTransparentOffBrandSite,
1474
+ disableTransparent: true,
1478
1475
  valueConvertor: backgroundColorConvertor,
1479
1476
  defaultGetter: paymentFillColorFieldDefaultGetter,
1480
1477
  },
@@ -1656,7 +1653,7 @@ export const REQUEST_PAYMENT_CONTENT_SETTINGS_CONFIG = () => ({
1656
1653
  isInline: true,
1657
1654
  showToggle: false,
1658
1655
  title: contentSettingsTr(`backgroundColorTitle`),
1659
- disableTransparent: disableTransparentOffBrandSite,
1656
+ disableTransparent: true,
1660
1657
  valueConvertor: backgroundColorConvertor,
1661
1658
  defaultGetter: paymentFillColorFieldDefaultGetter,
1662
1659
  },
@@ -1732,7 +1729,7 @@ export const SUPPORT_ME_CONTENT_SETTINGS_CONFIG = () => ({
1732
1729
  isInline: true,
1733
1730
  showToggle: false,
1734
1731
  title: contentSettingsTr(`backgroundColorTitle`),
1735
- disableTransparent: disableTransparentOffBrandSite,
1732
+ disableTransparent: true,
1736
1733
  valueConvertor: backgroundColorConvertor,
1737
1734
  defaultGetter: paymentFillColorFieldDefaultGetter,
1738
1735
  },
@@ -1874,7 +1871,8 @@ export const CONTACT_FORM_SETTINGS_CONFIG = () => ({
1874
1871
  disableTransparent: true,
1875
1872
  title: contentSettingsTr(`cardColorTitle`),
1876
1873
  valueConvertor: backgroundColorConvertor,
1877
- visibilityAssessor: contactCardDisplayTypeVisibilityAssessor,
1874
+ visibilityAssessor: contactCardColorVisibilityAssessor,
1875
+ defaultGetter: contactFormCardColorDefaultGetter,
1878
1876
  },
1879
1877
  backgroundStyle: {
1880
1878
  type: 'color',
@@ -1885,7 +1883,7 @@ export const CONTACT_FORM_SETTINGS_CONFIG = () => ({
1885
1883
  title: contentSettingsTr(`backgroundColorTitle`),
1886
1884
  disableTransparent: disableTransparentOffBrandSite,
1887
1885
  valueConvertor: backgroundColorConvertor,
1888
- defaultGetter: contactFormBackgroundColorDefaultGetter,
1886
+ visibilityAssessor: brandSiteTypeVisibilityAssessor,
1889
1887
  },
1890
1888
  },
1891
1889
  isEnabled: true,
@@ -2702,7 +2700,6 @@ export const SHOP_SECTION_SETTINGS_CONFIG = () => ({
2702
2700
  isInline: true,
2703
2701
  showToggle: false,
2704
2702
  title: contentSettingsTr(`backgroundColorTitle`),
2705
- disableTransparent: disableTransparentOffBrandSite,
2706
2703
  valueConvertor: backgroundColorConvertor,
2707
2704
  },
2708
2705
  },
@@ -0,0 +1,8 @@
1
+ import type { DefaultGetter } from '../models';
2
+ /**
3
+ * Contact-form "Card color" default (BP-5800). On brand-page/brand-contact the
4
+ * collapsible container takes the button fill, so default the Card color picker to
5
+ * it. On brand-site the Card color applies to the card in card layouts and keeps its
6
+ * own seeded default — so no default here.
7
+ */
8
+ export declare const contactFormCardColorDefaultGetter: DefaultGetter<BrandPageCssStyle>;
@@ -0,0 +1,16 @@
1
+ import { RGBAtoHex } from '@utils/helpers';
2
+ import { BRAND_PAGE_TYPES } from '@brand-page';
3
+ /**
4
+ * Contact-form "Card color" default (BP-5800). On brand-page/brand-contact the
5
+ * collapsible container takes the button fill, so default the Card color picker to
6
+ * it. On brand-site the Card color applies to the card in card layouts and keeps its
7
+ * own seeded default — so no default here.
8
+ */
9
+ export const contactFormCardColorDefaultGetter = (brandPage) => {
10
+ if (brandPage.brandPageType === BRAND_PAGE_TYPES.brandSite) {
11
+ return {};
12
+ }
13
+ return {
14
+ backgroundColor: RGBAtoHex(brandPage.styles.buttonStyles.style.backgroundColor),
15
+ };
16
+ };
@@ -2,4 +2,4 @@ export * from './text-color.default-getter';
2
2
  export * from './payment-fill-color.default-getter';
3
3
  export * from './payment-text-and-border-color.default-getter';
4
4
  export * from './logo-background-fill.default-getter';
5
- export * from './contact-form-background-color.default-getter';
5
+ export * from './contact-form-card-color.default-getter';
@@ -2,4 +2,4 @@ export * from './text-color.default-getter';
2
2
  export * from './payment-fill-color.default-getter';
3
3
  export * from './payment-text-and-border-color.default-getter';
4
4
  export * from './logo-background-fill.default-getter';
5
- export * from './contact-form-background-color.default-getter';
5
+ export * from './contact-form-card-color.default-getter';
@@ -450,9 +450,12 @@ export const createInitialContactFormContent = (options) => {
450
450
  successMessage: contentSettingsTr(`formSuccessMessage`),
451
451
  responseEmail: options?.userState.emailAddress || '',
452
452
  type: 'contact-form',
453
- cardStyle: {
454
- backgroundColor: DEFAULT_LOGO_BACKGROUND_COLOR_RGB,
455
- },
453
+ // brand-site: card layouts default to the logo bg. brand-page/brand-contact:
454
+ // leave empty so the collapsible container keeps the button-fill default (the
455
+ // Card colour picker still surfaces button-fill via its defaultGetter).
456
+ cardStyle: options?.brandPageType === BRAND_PAGE_TYPES.brandSite
457
+ ? { backgroundColor: DEFAULT_LOGO_BACKGROUND_COLOR_RGB }
458
+ : {},
456
459
  backgroundStyle: {},
457
460
  titleStyle: {
458
461
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
@@ -6188,59 +6188,59 @@ select[data-v-14e7c7c7] {
6188
6188
  width: 100%;
6189
6189
  }
6190
6190
 
6191
- .form-error[data-v-04e03cb2] {
6191
+ .form-error[data-v-c29688a8] {
6192
6192
  font-size: 0.875rem;
6193
6193
  line-height: 1.25rem;
6194
6194
  color: #f21b3f;
6195
6195
  }
6196
- .contact-container[data-v-04e03cb2] {
6196
+ .contact-container[data-v-c29688a8] {
6197
6197
  max-width: var(--brandsite-max-width);
6198
6198
  margin: 0 auto;
6199
6199
  }
6200
- .c-text-padding[data-v-04e03cb2] {
6200
+ .c-text-padding[data-v-c29688a8] {
6201
6201
  padding-left: 1rem;
6202
6202
  padding-right: 1rem;
6203
6203
  }
6204
- .device-wrapper--mobile .c-divided-container[data-v-04e03cb2] {
6204
+ .device-wrapper--mobile .c-divided-container[data-v-c29688a8] {
6205
6205
  -webkit-box-orient: vertical;
6206
6206
  -webkit-box-direction: normal;
6207
6207
  -ms-flex-direction: column;
6208
6208
  flex-direction: column;
6209
6209
  }
6210
- .device-wrapper--mobile .c-divided-container-reverse[data-v-04e03cb2] {
6210
+ .device-wrapper--mobile .c-divided-container-reverse[data-v-c29688a8] {
6211
6211
  -webkit-box-orient: vertical;
6212
6212
  -webkit-box-direction: reverse;
6213
6213
  -ms-flex-direction: column-reverse;
6214
6214
  flex-direction: column-reverse;
6215
6215
  }
6216
6216
  @media (max-width: 767px) {
6217
- .c-button-full[data-v-04e03cb2] {
6217
+ .c-button-full[data-v-c29688a8] {
6218
6218
  width: 100%;
6219
6219
  }
6220
6220
  /* Match the button's full-width on published mobile. The maker uses the
6221
6221
  isMobileDevice prop for this; the renderer has no such state, so the
6222
6222
  decorative-button wrapper is widened here via the real viewport instead. */
6223
- [data-v-04e03cb2] .bp-style-wrapper {
6223
+ [data-v-c29688a8] .bp-style-wrapper {
6224
6224
  width: 100%;
6225
6225
  }
6226
- .c-col-span-2[data-v-04e03cb2] {
6226
+ .c-col-span-2[data-v-c29688a8] {
6227
6227
  grid-column: span 2 / span 2;
6228
6228
  }
6229
- .c-mobile-padding[data-v-04e03cb2] {
6229
+ .c-mobile-padding[data-v-c29688a8] {
6230
6230
  padding: 1rem;
6231
6231
  }
6232
- .c-text-padding[data-v-04e03cb2] {
6232
+ .c-text-padding[data-v-c29688a8] {
6233
6233
  grid-column: span 2 / span 2;
6234
6234
  padding-left: 0px;
6235
6235
  padding-right: 0px;
6236
6236
  }
6237
- .c-divided-container[data-v-04e03cb2] {
6237
+ .c-divided-container[data-v-c29688a8] {
6238
6238
  -webkit-box-orient: vertical;
6239
6239
  -webkit-box-direction: normal;
6240
6240
  -ms-flex-direction: column;
6241
6241
  flex-direction: column;
6242
6242
  }
6243
- .c-divided-container-reverse[data-v-04e03cb2] {
6243
+ .c-divided-container-reverse[data-v-c29688a8] {
6244
6244
  -webkit-box-orient: vertical;
6245
6245
  -webkit-box-direction: reverse;
6246
6246
  -ms-flex-direction: column-reverse;
@@ -6248,16 +6248,16 @@ select[data-v-14e7c7c7] {
6248
6248
  }
6249
6249
  }
6250
6250
  @media (min-width: 767px) {
6251
- .c-aspect-square[data-v-04e03cb2] {
6251
+ .c-aspect-square[data-v-c29688a8] {
6252
6252
  aspect-ratio: 1 / 1;
6253
6253
  }
6254
- .c-divided-container[data-v-04e03cb2] {
6254
+ .c-divided-container[data-v-c29688a8] {
6255
6255
  -webkit-box-orient: horizontal;
6256
6256
  -webkit-box-direction: normal;
6257
6257
  -ms-flex-direction: row;
6258
6258
  flex-direction: row;
6259
6259
  }
6260
- .c-divided-container-reverse[data-v-04e03cb2] {
6260
+ .c-divided-container-reverse[data-v-c29688a8] {
6261
6261
  -webkit-box-orient: horizontal;
6262
6262
  -webkit-box-direction: reverse;
6263
6263
  -ms-flex-direction: row-reverse;
@@ -6799,59 +6799,59 @@ select[data-v-14e7c7c7] {
6799
6799
  width: 100%;
6800
6800
  }
6801
6801
 
6802
- .form-error[data-v-04e03cb2] {
6802
+ .form-error[data-v-c29688a8] {
6803
6803
  font-size: 0.875rem;
6804
6804
  line-height: 1.25rem;
6805
6805
  color: #f21b3f;
6806
6806
  }
6807
- .contact-container[data-v-04e03cb2] {
6807
+ .contact-container[data-v-c29688a8] {
6808
6808
  max-width: var(--brandsite-max-width);
6809
6809
  margin: 0 auto;
6810
6810
  }
6811
- .c-text-padding[data-v-04e03cb2] {
6811
+ .c-text-padding[data-v-c29688a8] {
6812
6812
  padding-left: 1rem;
6813
6813
  padding-right: 1rem;
6814
6814
  }
6815
- .device-wrapper--mobile .c-divided-container[data-v-04e03cb2] {
6815
+ .device-wrapper--mobile .c-divided-container[data-v-c29688a8] {
6816
6816
  -webkit-box-orient: vertical;
6817
6817
  -webkit-box-direction: normal;
6818
6818
  -ms-flex-direction: column;
6819
6819
  flex-direction: column;
6820
6820
  }
6821
- .device-wrapper--mobile .c-divided-container-reverse[data-v-04e03cb2] {
6821
+ .device-wrapper--mobile .c-divided-container-reverse[data-v-c29688a8] {
6822
6822
  -webkit-box-orient: vertical;
6823
6823
  -webkit-box-direction: reverse;
6824
6824
  -ms-flex-direction: column-reverse;
6825
6825
  flex-direction: column-reverse;
6826
6826
  }
6827
6827
  @media (max-width: 767px) {
6828
- .c-button-full[data-v-04e03cb2] {
6828
+ .c-button-full[data-v-c29688a8] {
6829
6829
  width: 100%;
6830
6830
  }
6831
6831
  /* Match the button's full-width on published mobile. The maker uses the
6832
6832
  isMobileDevice prop for this; the renderer has no such state, so the
6833
6833
  decorative-button wrapper is widened here via the real viewport instead. */
6834
- [data-v-04e03cb2] .bp-style-wrapper {
6834
+ [data-v-c29688a8] .bp-style-wrapper {
6835
6835
  width: 100%;
6836
6836
  }
6837
- .c-col-span-2[data-v-04e03cb2] {
6837
+ .c-col-span-2[data-v-c29688a8] {
6838
6838
  grid-column: span 2 / span 2;
6839
6839
  }
6840
- .c-mobile-padding[data-v-04e03cb2] {
6840
+ .c-mobile-padding[data-v-c29688a8] {
6841
6841
  padding: 1rem;
6842
6842
  }
6843
- .c-text-padding[data-v-04e03cb2] {
6843
+ .c-text-padding[data-v-c29688a8] {
6844
6844
  grid-column: span 2 / span 2;
6845
6845
  padding-left: 0px;
6846
6846
  padding-right: 0px;
6847
6847
  }
6848
- .c-divided-container[data-v-04e03cb2] {
6848
+ .c-divided-container[data-v-c29688a8] {
6849
6849
  -webkit-box-orient: vertical;
6850
6850
  -webkit-box-direction: normal;
6851
6851
  -ms-flex-direction: column;
6852
6852
  flex-direction: column;
6853
6853
  }
6854
- .c-divided-container-reverse[data-v-04e03cb2] {
6854
+ .c-divided-container-reverse[data-v-c29688a8] {
6855
6855
  -webkit-box-orient: vertical;
6856
6856
  -webkit-box-direction: reverse;
6857
6857
  -ms-flex-direction: column-reverse;
@@ -6859,16 +6859,16 @@ select[data-v-14e7c7c7] {
6859
6859
  }
6860
6860
  }
6861
6861
  @media (min-width: 767px) {
6862
- .c-aspect-square[data-v-04e03cb2] {
6862
+ .c-aspect-square[data-v-c29688a8] {
6863
6863
  aspect-ratio: 1 / 1;
6864
6864
  }
6865
- .c-divided-container[data-v-04e03cb2] {
6865
+ .c-divided-container[data-v-c29688a8] {
6866
6866
  -webkit-box-orient: horizontal;
6867
6867
  -webkit-box-direction: normal;
6868
6868
  -ms-flex-direction: row;
6869
6869
  flex-direction: row;
6870
6870
  }
6871
- .c-divided-container-reverse[data-v-04e03cb2] {
6871
+ .c-divided-container-reverse[data-v-c29688a8] {
6872
6872
  -webkit-box-orient: horizontal;
6873
6873
  -webkit-box-direction: reverse;
6874
6874
  -ms-flex-direction: row-reverse;