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

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 (75) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-CIrk6Brm.js → CreatedOnBrandCrowd-de-de-BrIpxgMF.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-CvXk0moH.js → CreatedOnBrandCrowd-en-us-DQDv2DBf.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-BhtZbjjU.js → CreatedOnBrandCrowd-es-es-BadaUjK1.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-B6TD57O-.js → CreatedOnBrandCrowd-fr-ca-DbrUAAGP.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-B6TD57O-.js → CreatedOnBrandCrowd-fr-fr-DbrUAAGP.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-Bto0xOtS.js → CreatedOnBrandCrowd-pt-br-Cy41WPcW.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-Bto0xOtS.js → CreatedOnBrandCrowd-pt-pt-Cy41WPcW.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-2h2W3y5z.js → CreatedOnDcom-de-de-D6UvcWQ5.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-D6Jgk6yv.js → CreatedOnDcom-en-us-DKUOQjj3.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-sBCqYQIm.js → CreatedOnDcom-es-es-CftpM7Vk.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-C8hg5hTU.js → CreatedOnDcom-fr-ca-DcCQzJDA.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-_DP1Umyh.js → CreatedOnDcom-fr-fr-Bodcymjw.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-BdwYAy5p.js → CreatedOnDcom-pt-br-B1OmeM4X.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-Bm1NHVaH.js → CreatedOnDcom-pt-pt-CGx-k757.js} +1 -1
  15. package/lib/src/brand-page/components/button/decorative-button-styles.d.ts +5 -0
  16. package/lib/src/brand-page/components/button/decorative-button-styles.js +13 -0
  17. package/lib/src/brand-page/components/button/paper-button-mask.d.ts +1 -0
  18. package/lib/src/brand-page/components/button/paper-button-mask.js +8 -0
  19. package/lib/src/brand-page/components/collapsible/Collapsible.mixin.d.ts +11 -0
  20. package/lib/src/brand-page/components/collapsible/Collapsible.mixin.js +10 -0
  21. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +1 -0
  22. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +7 -0
  23. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +5 -0
  24. package/lib/src/brand-page/components/payment/Payment.mixin.js +5 -0
  25. package/lib/src/brand-page/models/index.d.ts +1 -0
  26. package/lib/src/brand-page/models/payment.model.d.ts +2 -0
  27. package/lib/src/brand-page/utils/migration/migration-19.d.ts +2 -0
  28. package/lib/src/brand-page/utils/migration/migration-19.js +48 -0
  29. package/lib/src/brand-page/utils/migration.util.js +9 -0
  30. package/lib/src/brand-page/utils/view-model.util.js +1 -0
  31. package/lib/src/brand-page-maker/constants/config-settings-constant.js +32 -1
  32. package/lib/src/brand-page-maker/default-getters/contact-form-background-color.default-getter.d.ts +8 -0
  33. package/lib/src/brand-page-maker/default-getters/contact-form-background-color.default-getter.js +16 -0
  34. package/lib/src/brand-page-maker/default-getters/index.d.ts +1 -0
  35. package/lib/src/brand-page-maker/default-getters/index.js +1 -0
  36. package/lib/src/brand-page-maker/models/button-styles-config.js +15 -3
  37. package/lib/src/brand-page-maker/models/content-settings.js +3 -0
  38. package/lib/src/css/library.brand-page-brandCrowd.min.css +72 -69
  39. package/lib/src/css/library.brand-page-brandPage.min.css +72 -69
  40. package/lib/src/css/library.brand-page-designCom.min.css +72 -69
  41. package/lib/src/css/library.brand-page-preview.min.css +72 -69
  42. package/lib/src/index.mjs +1 -1
  43. package/lib/src/{lib-CPTMajMv.js → lib-ce4Vsuiu.js} +30228 -30028
  44. package/lib/src/metadata-builder/builders/section-rules/banner-section.rules.js +6 -0
  45. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +1 -1
  46. package/package.json +1 -1
  47. package/src/brand-page/components/button/ButtonStyleWrapper.vue +92 -41
  48. package/src/brand-page/components/button/ButtonStyleWrapper.vue.test.ts +164 -0
  49. package/src/brand-page/components/button/decorative-button-styles.ts +16 -0
  50. package/src/brand-page/components/button/paper-button-mask.ts +8 -0
  51. package/src/brand-page/components/collapsible/Collapsible.mixin.ts +11 -0
  52. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +10 -0
  53. package/src/brand-page/components/contact-form/ContactForm.vue +88 -39
  54. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +6 -0
  55. package/src/brand-page/components/mailing-list/MailingList.vue +18 -10
  56. package/src/brand-page/components/payment/Payment.mixin.ts +6 -0
  57. package/src/brand-page/components/payment/Payment.vue +43 -24
  58. package/src/brand-page/components/payment/RequestPaymentStripe.vue +26 -22
  59. package/src/brand-page/components/shop/Shop.vue +15 -6
  60. package/src/brand-page/models/index.ts +1 -0
  61. package/src/brand-page/models/payment.model.ts +2 -0
  62. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +3 -3
  63. package/src/brand-page/utils/migration/migration-19.test.ts +120 -0
  64. package/src/brand-page/utils/migration/migration-19.ts +67 -0
  65. package/src/brand-page/utils/migration.util.ts +10 -0
  66. package/src/brand-page/utils/view-model.util.ts +1 -0
  67. package/src/brand-page-maker/constants/config-settings-constant.ts +32 -0
  68. package/src/brand-page-maker/default-getters/contact-form-background-color.default-getter.ts +23 -0
  69. package/src/brand-page-maker/default-getters/index.ts +1 -0
  70. package/src/brand-page-maker/models/button-styles-config.ts +15 -3
  71. package/src/brand-page-maker/models/content-settings.ts +3 -0
  72. package/src/metadata-builder/builders/section-rules/banner-section.rules.ts +6 -0
  73. package/src/metadata-builder/parsers/section-tool-arguments.ts +7 -1
  74. package/src/metadata-builder/sanitizers/__tests__/section-args-validator.test.ts +13 -0
  75. package/src/shared/style-settings/components/StyleSettings.vue +1 -0
@@ -4,7 +4,7 @@ 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
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 { logoBackgroundColorDefaultGetter, paymentFillColorFieldDefaultGetter, paymentTextAndBorderColorFieldDefaultGetter, shopBorderColorFieldDefaultGetter, shopFillColorFieldDefaultGetter, textColorFieldDefaultGetter, } from '../default-getters';
7
+ import { contactFormBackgroundColorDefaultGetter, 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';
@@ -1463,6 +1463,16 @@ export const MAILING_LIST_CONTENT_SETTINGS_CONFIG = () => ({
1463
1463
  titleStyle: DEFAULT_TITLE_STYLE_SETTINGS_FILED_WITH_TITLE(),
1464
1464
  buttonTextStyle: DEFAULT_BUTTON_TEXT_STYLE_FIELD(),
1465
1465
  ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
1466
+ backgroundStyle: {
1467
+ type: 'color',
1468
+ groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.style,
1469
+ defaultValue: {},
1470
+ isInline: true,
1471
+ showToggle: false,
1472
+ title: contentSettingsTr(`backgroundColorTitle`),
1473
+ valueConvertor: backgroundColorConvertor,
1474
+ defaultGetter: paymentFillColorFieldDefaultGetter,
1475
+ },
1466
1476
  },
1467
1477
  isEnabled: true,
1468
1478
  isLocked: false,
@@ -1634,6 +1644,16 @@ export const REQUEST_PAYMENT_CONTENT_SETTINGS_CONFIG = () => ({
1634
1644
  label: contentSettingsTr(`buttonTextStyleLabel`),
1635
1645
  },
1636
1646
  ...PADDING_CONTROL_FIELDS(REQUEST_PAYMENT_GROUPS.style),
1647
+ backgroundStyle: {
1648
+ type: 'color',
1649
+ groupId: REQUEST_PAYMENT_GROUPS.style,
1650
+ defaultValue: {},
1651
+ isInline: true,
1652
+ showToggle: false,
1653
+ title: contentSettingsTr(`backgroundColorTitle`),
1654
+ valueConvertor: backgroundColorConvertor,
1655
+ defaultGetter: paymentFillColorFieldDefaultGetter,
1656
+ },
1637
1657
  },
1638
1658
  isEnabled: (features) => features.canAddRequestPaymentContents,
1639
1659
  isLocked: false,
@@ -1699,6 +1719,16 @@ export const SUPPORT_ME_CONTENT_SETTINGS_CONFIG = () => ({
1699
1719
  },
1700
1720
  buttonTextStyle: DEFAULT_BUTTON_TEXT_STYLE_FIELD(),
1701
1721
  ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
1722
+ backgroundStyle: {
1723
+ type: 'color',
1724
+ groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.style,
1725
+ defaultValue: {},
1726
+ isInline: true,
1727
+ showToggle: false,
1728
+ title: contentSettingsTr(`backgroundColorTitle`),
1729
+ valueConvertor: backgroundColorConvertor,
1730
+ defaultGetter: paymentFillColorFieldDefaultGetter,
1731
+ },
1702
1732
  },
1703
1733
  isEnabled: (features) => features.canAddRequestPaymentContents,
1704
1734
  isLocked: false,
@@ -1847,6 +1877,7 @@ export const CONTACT_FORM_SETTINGS_CONFIG = () => ({
1847
1877
  showToggle: false,
1848
1878
  title: contentSettingsTr(`backgroundColorTitle`),
1849
1879
  valueConvertor: backgroundColorConvertor,
1880
+ defaultGetter: contactFormBackgroundColorDefaultGetter,
1850
1881
  },
1851
1882
  },
1852
1883
  isEnabled: true,
@@ -0,0 +1,8 @@
1
+ import type { DefaultGetter } from '../models';
2
+ /**
3
+ * Contact-form "Background color" default (BP-5800). On brand-page/brand-contact the
4
+ * collapsible container takes the button fill, so default the picker to it. On
5
+ * brand-site the field is the section background behind the card (its own "Card color"),
6
+ * which stays transparent — so no default there.
7
+ */
8
+ export declare const contactFormBackgroundColorDefaultGetter: DefaultGetter<BrandPageCssStyle>;
@@ -0,0 +1,16 @@
1
+ import { RGBAtoHex } from '@utils/helpers';
2
+ import { BRAND_PAGE_TYPES } from '@brand-page';
3
+ /**
4
+ * Contact-form "Background color" default (BP-5800). On brand-page/brand-contact the
5
+ * collapsible container takes the button fill, so default the picker to it. On
6
+ * brand-site the field is the section background behind the card (its own "Card color"),
7
+ * which stays transparent — so no default there.
8
+ */
9
+ export const contactFormBackgroundColorDefaultGetter = (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,3 +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';
@@ -2,3 +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';
@@ -352,7 +352,11 @@ export const availableButtonStyleConfigs = [
352
352
  iconName: 'button-brushstroke',
353
353
  iconViewBox: '0 0 60 20',
354
354
  options: ['buttonFillColor', 'buttonIconColor'],
355
- brandPageType: [BRAND_PAGE_TYPES.default, BRAND_PAGE_TYPES.brandContact],
355
+ brandPageType: [
356
+ BRAND_PAGE_TYPES.default,
357
+ BRAND_PAGE_TYPES.brandContact,
358
+ BRAND_PAGE_TYPES.brandSite,
359
+ ],
356
360
  },
357
361
  {
358
362
  id: 'BUTTON_STYLE_20',
@@ -369,7 +373,11 @@ export const availableButtonStyleConfigs = [
369
373
  iconName: 'button-arrow',
370
374
  iconViewBox: '0 0 60 20',
371
375
  options: ['buttonFillColor', 'buttonIconColor'],
372
- brandPageType: [BRAND_PAGE_TYPES.default, BRAND_PAGE_TYPES.brandContact],
376
+ brandPageType: [
377
+ BRAND_PAGE_TYPES.default,
378
+ BRAND_PAGE_TYPES.brandContact,
379
+ BRAND_PAGE_TYPES.brandSite,
380
+ ],
373
381
  },
374
382
  {
375
383
  id: 'BUTTON_STYLE_21',
@@ -386,6 +394,10 @@ export const availableButtonStyleConfigs = [
386
394
  iconName: 'button-paper',
387
395
  iconViewBox: '0 0 60 20',
388
396
  options: ['buttonFillColor', 'buttonIconColor'],
389
- brandPageType: [BRAND_PAGE_TYPES.default, BRAND_PAGE_TYPES.brandContact],
397
+ brandPageType: [
398
+ BRAND_PAGE_TYPES.default,
399
+ BRAND_PAGE_TYPES.brandContact,
400
+ BRAND_PAGE_TYPES.brandSite,
401
+ ],
390
402
  },
391
403
  ];
@@ -232,6 +232,7 @@ export const createInitialMailingListContent = (options) => {
232
232
  textStyleType: TEXT_STYLE_TYPES.buttons,
233
233
  textAlign: 'center',
234
234
  },
235
+ backgroundStyle: {},
235
236
  };
236
237
  };
237
238
  export const createInitialRequestPaymentContent = (options) => {
@@ -274,6 +275,7 @@ export const createInitialRequestPaymentContent = (options) => {
274
275
  textStyleType: TEXT_STYLE_TYPES.buttons,
275
276
  textAlign: 'center',
276
277
  },
278
+ backgroundStyle: {},
277
279
  };
278
280
  };
279
281
  export const createInitialShopContent = (options) => {
@@ -365,6 +367,7 @@ export const createInitialSupportMeContent = (options) => {
365
367
  textStyleType: TEXT_STYLE_TYPES.buttons,
366
368
  textAlign: 'center',
367
369
  },
370
+ backgroundStyle: {},
368
371
  };
369
372
  };
370
373
  export const createInitialContactFormContent = (options) => {
@@ -1100,6 +1100,9 @@ a.maker-anchor {
1100
1100
  .tw-min-w-8 {
1101
1101
  min-width: 2rem
1102
1102
  }
1103
+ .tw-min-w-\[120px\] {
1104
+ min-width: 120px
1105
+ }
1103
1106
  .tw-min-w-\[310px\] {
1104
1107
  min-width: 310px
1105
1108
  }
@@ -1442,16 +1445,6 @@ a.maker-anchor {
1442
1445
  -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1443
1446
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
1444
1447
  }
1445
- .tw-translate-y-\[-10\%\] {
1446
- --tw-translate-y: -10%;
1447
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1448
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
1449
- }
1450
- .tw-translate-y-\[-4\%\] {
1451
- --tw-translate-y: -4%;
1452
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1453
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
1454
- }
1455
1448
  .tw-translate-y-px {
1456
1449
  --tw-translate-y: 1px;
1457
1450
  -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
@@ -3025,9 +3018,6 @@ a.maker-anchor {
3025
3018
  .tw-leading-tight {
3026
3019
  line-height: 1.25
3027
3020
  }
3028
- .tw-text-\[var\(--icon-color\)\] {
3029
- color: var(--icon-color)
3030
- }
3031
3021
  .tw-text-black {
3032
3022
  --tw-text-opacity: 1;
3033
3023
  color: rgb(0 0 0 / var(--tw-text-opacity))
@@ -5662,39 +5652,56 @@ input[data-v-4cd691db]::-webkit-inner-spin-button {
5662
5652
  max-height: 45vh;
5663
5653
  }
5664
5654
 
5665
- .bp-button-paper-top[data-v-604db8c6] {
5666
- --tw-translate-y: -10%;
5667
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
5668
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
5669
- color: var(--icon-color);
5655
+ /* Decorative styles on submit buttons render flush at the bottom. Zero the host
5656
+ button's own margins: its decoration is positioned relative to the WRAPPER, so a
5657
+ margin on the button itself shifts it out of alignment with the decoration. The
5658
+ top gap is instead applied to the wrapper (tw-mt-4 above) so the whole decorated
5659
+ unit moves together and stays flush at the container's bottom edge (BP-5800). */
5660
+ .bp-style-wrapper--no-margin[data-v-c2533ae5] button {
5661
+ margin-top: 0;
5662
+ margin-bottom: 0;
5670
5663
  }
5671
- .bp-button-paper-bottom[data-v-604db8c6] {
5672
- --tw-translate-y: -4%;
5673
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
5674
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
5675
- color: var(--icon-color);
5664
+
5665
+ /* The brushstroke ends are transformed over the button's left/right edges, so
5666
+ they must not capture clicks (BP-5882). */
5667
+ .bp-icon-brush-left[data-v-c2533ae5],
5668
+ .bp-icon-brush-right[data-v-c2533ae5] {
5669
+ pointer-events: none;
5676
5670
  }
5677
- .bp-button-paper-top[data-v-604db8c6] svg,
5678
- .bp-button-paper-bottom[data-v-604db8c6] svg {
5679
- width: 100%;
5680
- height: auto;
5671
+
5672
+ /* Torn-paper: clip the button itself to a torn silhouette via a CSS alpha mask
5673
+ (the button keeps its own fill). The mask stretches to the button box, so the
5674
+ torn shape always matches the button — it can't overhang neighbours, stretch
5675
+ past the button, or block clicks the way the old absolute overlay did
5676
+ (BP-5882/BP-5883). */
5677
+ .bp-button-paper[data-v-c2533ae5] button,
5678
+ .bp-button-paper[data-v-c2533ae5] a {
5679
+ -webkit-mask: var(--paper-mask) no-repeat center / 100% 100%;
5680
+ mask: var(--paper-mask) no-repeat center / 100% 100%;
5681
+ -webkit-mask-mode: alpha;
5682
+ mask-mode: alpha;
5681
5683
  }
5682
- .bp-icon-brush-left[data-v-604db8c6] svg {
5684
+ .bp-icon-brush-left[data-v-c2533ae5] svg {
5683
5685
  -webkit-transform: translateX(-99%);
5684
5686
  transform: translateX(-99%);
5685
5687
  width: auto;
5686
5688
  }
5687
- .bp-icon-brush-right[data-v-604db8c6] svg {
5689
+ .bp-icon-brush-right[data-v-c2533ae5] svg {
5688
5690
  width: auto;
5689
5691
  }
5690
- .bp-button-arrow[data-v-604db8c6],
5691
- .device-wrapper--mobile .bp-button-arrow[data-v-604db8c6] {
5692
- clip-path: polygon(5% 100%, 0% 50%, 5% 0%, 95% 0%, 100% 50%, 95% 100%);
5693
- }
5694
- @media (min-width: 767px) {
5695
- .bp-button-arrow[data-v-604db8c6] {
5696
- clip-path: polygon(3% 100%, 0% 50%, 3% 0%, 97% 0%, 100% 50%, 97% 100%);
5697
- }
5692
+ .bp-button-arrow[data-v-c2533ae5],
5693
+ .device-wrapper--mobile .bp-button-arrow[data-v-c2533ae5] {
5694
+ /* Fixed-px arrowhead (not %) so the chevron is equally sharp at any button
5695
+ width — a %-based point collapses on narrow buttons (e.g. the 120px contact
5696
+ form submit) and only reads as an arrow on wide ones. */
5697
+ clip-path: polygon(
5698
+ 12px 100%,
5699
+ 0 50%,
5700
+ 12px 0,
5701
+ calc(100% - 12px) 0,
5702
+ 100% 50%,
5703
+ calc(100% - 12px) 100%
5704
+ );
5698
5705
  }
5699
5706
 
5700
5707
  .empty-para[data-v-c90cc6bc] p:empty::after {
@@ -5808,7 +5815,7 @@ input[data-v-4cd691db]::-webkit-inner-spin-button {
5808
5815
  text-decoration: underline;
5809
5816
  }
5810
5817
 
5811
- .form-error[data-v-49b27af8] {
5818
+ .form-error[data-v-ef964594] {
5812
5819
  font-size: 0.875rem;
5813
5820
  line-height: 1.25rem;
5814
5821
  color: #f21b3f
@@ -6063,14 +6070,10 @@ select[data-v-14e7c7c7] {
6063
6070
  background-position: right 12px center;
6064
6071
  }
6065
6072
 
6066
- .form-error[data-v-7731d899] {
6073
+ .form-error[data-v-0cc4cbbd] {
6067
6074
  font-size: 0.75rem;
6068
6075
  line-height: 1rem;
6069
- color: #f21b3f;
6070
- }
6071
- .pay-button-disabled[data-v-7731d899] {
6072
- opacity: 0.5 !important;
6073
- pointer-events: none;
6076
+ color: #f21b3f
6074
6077
  }
6075
6078
 
6076
6079
  /* TODO: review CSS setup, scoped CSS will not work in slot */
@@ -6166,53 +6169,53 @@ select[data-v-14e7c7c7] {
6166
6169
  width: 100%;
6167
6170
  }
6168
6171
 
6169
- .form-error[data-v-d0a8cdec] {
6172
+ .form-error[data-v-a6dab4ce] {
6170
6173
  font-size: 0.875rem;
6171
6174
  line-height: 1.25rem;
6172
6175
  color: #f21b3f;
6173
6176
  }
6174
- .contact-container[data-v-d0a8cdec] {
6177
+ .contact-container[data-v-a6dab4ce] {
6175
6178
  max-width: var(--brandsite-max-width);
6176
6179
  margin: 0 auto;
6177
6180
  }
6178
- .c-text-padding[data-v-d0a8cdec] {
6181
+ .c-text-padding[data-v-a6dab4ce] {
6179
6182
  padding-left: 1rem;
6180
6183
  padding-right: 1rem;
6181
6184
  }
6182
- .device-wrapper--mobile .c-divided-container[data-v-d0a8cdec] {
6185
+ .device-wrapper--mobile .c-divided-container[data-v-a6dab4ce] {
6183
6186
  -webkit-box-orient: vertical;
6184
6187
  -webkit-box-direction: normal;
6185
6188
  -ms-flex-direction: column;
6186
6189
  flex-direction: column;
6187
6190
  }
6188
- .device-wrapper--mobile .c-divided-container-reverse[data-v-d0a8cdec] {
6191
+ .device-wrapper--mobile .c-divided-container-reverse[data-v-a6dab4ce] {
6189
6192
  -webkit-box-orient: vertical;
6190
6193
  -webkit-box-direction: reverse;
6191
6194
  -ms-flex-direction: column-reverse;
6192
6195
  flex-direction: column-reverse;
6193
6196
  }
6194
6197
  @media (max-width: 767px) {
6195
- .c-button-full[data-v-d0a8cdec] {
6198
+ .c-button-full[data-v-a6dab4ce] {
6196
6199
  width: 100%;
6197
6200
  }
6198
- .c-col-span-2[data-v-d0a8cdec] {
6201
+ .c-col-span-2[data-v-a6dab4ce] {
6199
6202
  grid-column: span 2 / span 2;
6200
6203
  }
6201
- .c-mobile-padding[data-v-d0a8cdec] {
6204
+ .c-mobile-padding[data-v-a6dab4ce] {
6202
6205
  padding: 1rem;
6203
6206
  }
6204
- .c-text-padding[data-v-d0a8cdec] {
6207
+ .c-text-padding[data-v-a6dab4ce] {
6205
6208
  grid-column: span 2 / span 2;
6206
6209
  padding-left: 0px;
6207
6210
  padding-right: 0px;
6208
6211
  }
6209
- .c-divided-container[data-v-d0a8cdec] {
6212
+ .c-divided-container[data-v-a6dab4ce] {
6210
6213
  -webkit-box-orient: vertical;
6211
6214
  -webkit-box-direction: normal;
6212
6215
  -ms-flex-direction: column;
6213
6216
  flex-direction: column;
6214
6217
  }
6215
- .c-divided-container-reverse[data-v-d0a8cdec] {
6218
+ .c-divided-container-reverse[data-v-a6dab4ce] {
6216
6219
  -webkit-box-orient: vertical;
6217
6220
  -webkit-box-direction: reverse;
6218
6221
  -ms-flex-direction: column-reverse;
@@ -6220,16 +6223,16 @@ select[data-v-14e7c7c7] {
6220
6223
  }
6221
6224
  }
6222
6225
  @media (min-width: 767px) {
6223
- .c-aspect-square[data-v-d0a8cdec] {
6226
+ .c-aspect-square[data-v-a6dab4ce] {
6224
6227
  aspect-ratio: 1 / 1;
6225
6228
  }
6226
- .c-divided-container[data-v-d0a8cdec] {
6229
+ .c-divided-container[data-v-a6dab4ce] {
6227
6230
  -webkit-box-orient: horizontal;
6228
6231
  -webkit-box-direction: normal;
6229
6232
  -ms-flex-direction: row;
6230
6233
  flex-direction: row;
6231
6234
  }
6232
- .c-divided-container-reverse[data-v-d0a8cdec] {
6235
+ .c-divided-container-reverse[data-v-a6dab4ce] {
6233
6236
  -webkit-box-orient: horizontal;
6234
6237
  -webkit-box-direction: reverse;
6235
6238
  -ms-flex-direction: row-reverse;
@@ -6861,44 +6864,44 @@ select[data-v-14e7c7c7] {
6861
6864
  color: #f21b3f;
6862
6865
  }
6863
6866
 
6864
- .inner-container[data-v-24954146] {
6867
+ .inner-container[data-v-c359b5e7] {
6865
6868
  max-width: var(--brandsite-max-width);
6866
6869
  margin: 0 auto;
6867
6870
  }
6868
- .outer-container[data-v-24954146] {
6871
+ .outer-container[data-v-c359b5e7] {
6869
6872
  padding-left: var(--page-padding);
6870
6873
  padding-right: var(--page-padding);
6871
6874
  }
6872
- .modal-cart[data-v-24954146] .cart-image {
6875
+ .modal-cart[data-v-c359b5e7] .cart-image {
6873
6876
  width: 3rem;
6874
6877
  }
6875
- .modal-cart[data-v-24954146] .cart-option {
6878
+ .modal-cart[data-v-c359b5e7] .cart-option {
6876
6879
  width: 100%;
6877
6880
  }
6878
- .success-bar-container[data-v-24954146] .tw-bg-success-500 {
6881
+ .success-bar-container[data-v-c359b5e7] .tw-bg-success-500 {
6879
6882
  --tw-bg-opacity: 1;
6880
6883
  background-color: rgb(36 168 16 / var(--tw-bg-opacity));
6881
6884
  }
6882
6885
  @media (min-width: 640px) {
6883
- .modal-product-detail[data-v-24954146] .modal {
6886
+ .modal-product-detail[data-v-c359b5e7] .modal {
6884
6887
  min-width: 100vh;
6885
6888
  }
6886
- .modal-cart[data-v-24954146] .modal {
6889
+ .modal-cart[data-v-c359b5e7] .modal {
6887
6890
  min-width: 90vh;
6888
6891
  max-height: 90vh;
6889
6892
  }
6890
- .modal-cart[data-v-24954146] .cart-image {
6893
+ .modal-cart[data-v-c359b5e7] .cart-image {
6891
6894
  width: 8rem;
6892
6895
  }
6893
- .modal-cart[data-v-24954146] .cart-option {
6896
+ .modal-cart[data-v-c359b5e7] .cart-option {
6894
6897
  width: 75%;
6895
6898
  }
6896
- .success-bar[data-v-24954146] {
6899
+ .success-bar[data-v-c359b5e7] {
6897
6900
  width: 50%;
6898
6901
  }
6899
6902
  }
6900
6903
  @media (max-width: 640px) {
6901
- .success-bar[data-v-24954146] {
6904
+ .success-bar[data-v-c359b5e7] {
6902
6905
  width: 91.666667%;
6903
6906
  }
6904
6907
  }