@designcrowd/library.brand-page 6.0.21 → 6.0.22

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 (82) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-C52IyXZu.js → CreatedOnBrandCrowd-de-de-BS8dQhaZ.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-DhTy_dEV.js → CreatedOnBrandCrowd-en-us-45ZyXSxn.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-BJelIAQ4.js → CreatedOnBrandCrowd-es-es-B1K3Ojw-.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-DwJohy0T.js → CreatedOnBrandCrowd-fr-ca-4v9c20Q9.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-DwJohy0T.js → CreatedOnBrandCrowd-fr-fr-4v9c20Q9.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-CMzKbxdG.js → CreatedOnBrandCrowd-pt-br-BdDmm1GE.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-CMzKbxdG.js → CreatedOnBrandCrowd-pt-pt-BdDmm1GE.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-DAy1GHrw.js → CreatedOnDcom-de-de-Dc8rOxAE.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-CgBDAkJN.js → CreatedOnDcom-en-us-Bq6rusW6.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-Ds9d5rem.js → CreatedOnDcom-es-es-C5gNEuoi.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-CZL0BQ-u.js → CreatedOnDcom-fr-ca-NL2KoADg.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-BVYh5Wvo.js → CreatedOnDcom-fr-fr-DZaLN0j-.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-1hsWNXfq.js → CreatedOnDcom-pt-br-DXZvo45o.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-DvM0N-3M.js → CreatedOnDcom-pt-pt-GUJ4aTM2.js} +1 -1
  15. package/lib/src/brand-page/components/collapsible/Collapsible.mixin.d.ts +11 -0
  16. package/lib/src/brand-page/components/collapsible/Collapsible.mixin.js +13 -1
  17. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +1 -0
  18. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +12 -3
  19. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +5 -0
  20. package/lib/src/brand-page/components/payment/Payment.mixin.js +5 -0
  21. package/lib/src/brand-page/models/index.d.ts +1 -0
  22. package/lib/src/brand-page/models/payment.model.d.ts +2 -0
  23. package/lib/src/brand-page/utils/button.util.d.ts +5 -0
  24. package/lib/src/brand-page/utils/button.util.js +13 -0
  25. package/lib/src/brand-page/utils/migration/migration-19.d.ts +2 -0
  26. package/lib/src/brand-page/utils/migration/migration-19.js +41 -0
  27. package/lib/src/brand-page/utils/migration.util.js +11 -0
  28. package/lib/src/brand-page/utils/view-model.util.js +1 -0
  29. package/lib/src/brand-page-maker/assessors/contact-form-visibility.assessor.d.ts +1 -0
  30. package/lib/src/brand-page-maker/assessors/contact-form-visibility.assessor.js +16 -7
  31. package/lib/src/brand-page-maker/constants/config-settings-constant.js +40 -3
  32. package/lib/src/brand-page-maker/default-getters/contact-form-card-color.default-getter.d.ts +8 -0
  33. package/lib/src/brand-page-maker/default-getters/contact-form-card-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-configs.d.ts +2 -1
  38. package/lib/src/brand-page-maker/models/content-settings.js +15 -3
  39. package/lib/src/css/library.brand-page-brandCrowd.min.css +96 -68
  40. package/lib/src/css/library.brand-page-brandPage.min.css +96 -68
  41. package/lib/src/css/library.brand-page-designCom.min.css +96 -68
  42. package/lib/src/css/library.brand-page-preview.min.css +96 -68
  43. package/lib/src/index.mjs +1 -1
  44. package/lib/src/{lib-CK2FPBv5.js → lib-Dh4vrmod.js} +18439 -18090
  45. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +5 -0
  46. package/lib/src/shared/content-settings/models.d.ts +1 -0
  47. package/lib/src/shared/content-settings/store/content-settings-store.js +3 -0
  48. package/package.json +2 -2
  49. package/src/brand-page/components/button/ButtonStyleWrapper.vue +112 -44
  50. package/src/brand-page/components/button/ButtonStyleWrapper.vue.test.ts +167 -0
  51. package/src/brand-page/components/collapsible/Collapsible.mixin.ts +14 -1
  52. package/src/brand-page/components/contact-form/ContactForm.mixin.test.ts +18 -0
  53. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +15 -3
  54. package/src/brand-page/components/contact-form/ContactForm.vue +97 -36
  55. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +6 -0
  56. package/src/brand-page/components/mailing-list/MailingList.vue +18 -10
  57. package/src/brand-page/components/payment/Payment.mixin.ts +6 -0
  58. package/src/brand-page/components/payment/Payment.vue +43 -24
  59. package/src/brand-page/components/payment/RequestPaymentStripe.vue +26 -22
  60. package/src/brand-page/components/shop/Shop.vue +15 -6
  61. package/src/brand-page/models/index.ts +1 -0
  62. package/src/brand-page/models/payment.model.ts +2 -0
  63. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +3 -3
  64. package/src/brand-page/utils/button.util.ts +17 -0
  65. package/src/brand-page/utils/migration/migration-19.test.ts +172 -0
  66. package/src/brand-page/utils/migration/migration-19.ts +65 -0
  67. package/src/brand-page/utils/migration.util.ts +12 -0
  68. package/src/brand-page/utils/view-model.util.ts +1 -0
  69. package/src/brand-page-maker/assessors/contact-form-visibility.assessor.ts +34 -26
  70. package/src/brand-page-maker/constants/config-settings-constant.ts +43 -2
  71. package/src/brand-page-maker/default-getters/contact-form-card-color.default-getter.ts +23 -0
  72. package/src/brand-page-maker/default-getters/index.ts +1 -0
  73. package/src/brand-page-maker/models/button-styles-config.ts +15 -3
  74. package/src/brand-page-maker/models/content-settings-configs.ts +4 -1
  75. package/src/brand-page-maker/models/content-settings.ts +16 -3
  76. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +6 -0
  77. package/src/shared/content-settings/models.ts +3 -0
  78. package/src/shared/content-settings/store/content-settings-store.ts +3 -0
  79. package/src/shared/style-settings/components/StyleSettings.vue +1 -0
  80. package/lib/src/metadata-builder/builders/reorder-pages-builder.d.ts +0 -13
  81. package/lib/src/metadata-builder/builders/reorder-pages-builder.js +0 -49
  82. package/src/metadata-builder/builders/reorder-pages-builder.ts +0 -80
@@ -232,6 +232,9 @@ export const createInitialMailingListContent = (options) => {
232
232
  textStyleType: TEXT_STYLE_TYPES.buttons,
233
233
  textAlign: 'center',
234
234
  },
235
+ // Detach the container background from the button fill by copying the current
236
+ // fill as this block's own colour at creation (BP-5800; matches migration-19).
237
+ backgroundStyle: { backgroundColor: options?.buttonFillColor },
235
238
  };
236
239
  };
237
240
  export const createInitialRequestPaymentContent = (options) => {
@@ -274,6 +277,9 @@ export const createInitialRequestPaymentContent = (options) => {
274
277
  textStyleType: TEXT_STYLE_TYPES.buttons,
275
278
  textAlign: 'center',
276
279
  },
280
+ // Detach the container background from the button fill by copying the current
281
+ // fill as this block's own colour at creation (BP-5800; matches migration-19).
282
+ backgroundStyle: { backgroundColor: options?.buttonFillColor },
277
283
  };
278
284
  };
279
285
  export const createInitialShopContent = (options) => {
@@ -365,6 +371,9 @@ export const createInitialSupportMeContent = (options) => {
365
371
  textStyleType: TEXT_STYLE_TYPES.buttons,
366
372
  textAlign: 'center',
367
373
  },
374
+ // Detach the container background from the button fill by copying the current
375
+ // fill as this block's own colour at creation (BP-5800; matches migration-19).
376
+ backgroundStyle: { backgroundColor: options?.buttonFillColor },
368
377
  };
369
378
  };
370
379
  export const createInitialContactFormContent = (options) => {
@@ -447,9 +456,12 @@ export const createInitialContactFormContent = (options) => {
447
456
  successMessage: contentSettingsTr(`formSuccessMessage`),
448
457
  responseEmail: options?.userState.emailAddress || '',
449
458
  type: 'contact-form',
450
- cardStyle: {
451
- backgroundColor: DEFAULT_LOGO_BACKGROUND_COLOR_RGB,
452
- },
459
+ // brand-site: card layouts default to the logo bg. brand-page/brand-contact:
460
+ // copy the current button fill as the container's own colour so it renders
461
+ // like the button fill but is detached from it (BP-5800; matches migration-19).
462
+ cardStyle: options?.brandPageType === BRAND_PAGE_TYPES.brandSite
463
+ ? { backgroundColor: DEFAULT_LOGO_BACKGROUND_COLOR_RGB }
464
+ : { backgroundColor: options?.buttonFillColor },
453
465
  backgroundStyle: {},
454
466
  titleStyle: {
455
467
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
@@ -1100,9 +1100,15 @@ 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
  }
1109
+ .tw-min-w-full {
1110
+ min-width: 100%
1111
+ }
1106
1112
  .tw-max-w-0 {
1107
1113
  max-width: 0px
1108
1114
  }
@@ -1442,16 +1448,6 @@ a.maker-anchor {
1442
1448
  -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
1449
  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
1450
  }
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
1451
  .tw-translate-y-px {
1456
1452
  --tw-translate-y: 1px;
1457
1453
  -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 +3021,6 @@ a.maker-anchor {
3025
3021
  .tw-leading-tight {
3026
3022
  line-height: 1.25
3027
3023
  }
3028
- .tw-text-\[var\(--icon-color\)\] {
3029
- color: var(--icon-color)
3030
- }
3031
3024
  .tw-text-black {
3032
3025
  --tw-text-opacity: 1;
3033
3026
  color: rgb(0 0 0 / var(--tw-text-opacity))
@@ -5662,39 +5655,72 @@ input[data-v-4cd691db]::-webkit-inner-spin-button {
5662
5655
  max-height: 45vh;
5663
5656
  }
5664
5657
 
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);
5658
+ /* Decorative styles on submit buttons render flush at the bottom. Zero the host
5659
+ button's own margins: its decoration is positioned relative to the WRAPPER, so a
5660
+ margin on the button itself shifts it out of alignment with the decoration. The
5661
+ top gap is instead applied to the wrapper (tw-mt-4 above) so the whole decorated
5662
+ unit moves together and stays flush at the container's bottom edge (BP-5800). */
5663
+ .bp-style-wrapper--no-margin[data-v-255edfd5] button {
5664
+ margin-top: 0;
5665
+ margin-bottom: 0;
5670
5666
  }
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);
5676
- }
5677
- .bp-button-paper-top[data-v-604db8c6] svg,
5678
- .bp-button-paper-bottom[data-v-604db8c6] svg {
5679
- width: 100%;
5680
- height: auto;
5667
+
5668
+ /* Brushstroke: flanking brush-end icons are transformed over the button's
5669
+ left/right edges, so they must not capture clicks (BP-5882). */
5670
+ .bp-icon-brush-left[data-v-255edfd5],
5671
+ .bp-icon-brush-right[data-v-255edfd5] {
5672
+ pointer-events: none;
5681
5673
  }
5682
- .bp-icon-brush-left[data-v-604db8c6] svg {
5674
+ .bp-icon-brush-left[data-v-255edfd5] svg {
5683
5675
  -webkit-transform: translateX(-99%);
5684
5676
  transform: translateX(-99%);
5685
5677
  width: auto;
5686
5678
  }
5687
- .bp-icon-brush-right[data-v-604db8c6] svg {
5679
+ .bp-icon-brush-right[data-v-255edfd5] svg {
5688
5680
  width: auto;
5689
5681
  }
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%);
5682
+
5683
+ /* Torn-paper: the button-paper icon sits BEHIND the button as its shape. The
5684
+ wrapper is the positioning context; the icon is an inert inset layer that fills
5685
+ the button box exactly (inset:0 + preserveAspectRatio none) without inflating
5686
+ its size or capturing clicks (BP-5882/BP-5883). The button's own fill is made
5687
+ transparent so the icon's colour shows through. */
5688
+ .bp-button-shape[data-v-255edfd5] {
5689
+ position: relative;
5693
5690
  }
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%);
5691
+ .bp-icon-shape[data-v-255edfd5] {
5692
+ position: absolute;
5693
+ inset: 0;
5694
+ width: 100%;
5695
+ height: 100%;
5696
+ pointer-events: none;
5697
+ }
5698
+ .bp-button-shape[data-v-255edfd5] button,
5699
+ .bp-button-shape[data-v-255edfd5] a {
5700
+ position: relative; /* sit above the inert background */
5701
+ /* !important to override the host button's inline background-color. */
5702
+ background-color: transparent !important;
5697
5703
  }
5704
+ /* button-paper ships hardcoded fill="black"; recolour to the button's fill. CSS
5705
+ fill overrides the presentation attribute; clip-path rects are geometric so
5706
+ recolouring them is harmless. */
5707
+ .bp-icon-shape[data-v-255edfd5] path,
5708
+ .bp-icon-shape[data-v-255edfd5] rect {
5709
+ fill: currentColor;
5710
+ }
5711
+ .bp-button-arrow[data-v-255edfd5],
5712
+ .device-wrapper--mobile .bp-button-arrow[data-v-255edfd5] {
5713
+ /* Fixed-px arrowhead (not %) so the chevron is equally sharp at any button
5714
+ width — a %-based point collapses on narrow buttons (e.g. the 120px contact
5715
+ form submit) and only reads as an arrow on wide ones. */
5716
+ clip-path: polygon(
5717
+ 12px 100%,
5718
+ 0 50%,
5719
+ 12px 0,
5720
+ calc(100% - 12px) 0,
5721
+ 100% 50%,
5722
+ calc(100% - 12px) 100%
5723
+ );
5698
5724
  }
5699
5725
 
5700
5726
  .empty-para[data-v-2520851c] p:empty::after {
@@ -5808,7 +5834,7 @@ input[data-v-4cd691db]::-webkit-inner-spin-button {
5808
5834
  text-decoration: underline;
5809
5835
  }
5810
5836
 
5811
- .form-error[data-v-ddbacf5a] {
5837
+ .form-error[data-v-b7e55081] {
5812
5838
  font-size: 0.875rem;
5813
5839
  line-height: 1.25rem;
5814
5840
  color: #f21b3f
@@ -6063,14 +6089,10 @@ select[data-v-14e7c7c7] {
6063
6089
  background-position: right 12px center;
6064
6090
  }
6065
6091
 
6066
- .form-error[data-v-7731d899] {
6092
+ .form-error[data-v-0cc4cbbd] {
6067
6093
  font-size: 0.75rem;
6068
6094
  line-height: 1rem;
6069
- color: #f21b3f;
6070
- }
6071
- .pay-button-disabled[data-v-7731d899] {
6072
- opacity: 0.5 !important;
6073
- pointer-events: none;
6095
+ color: #f21b3f
6074
6096
  }
6075
6097
 
6076
6098
  /* TODO: review CSS setup, scoped CSS will not work in slot */
@@ -6166,53 +6188,59 @@ select[data-v-14e7c7c7] {
6166
6188
  width: 100%;
6167
6189
  }
6168
6190
 
6169
- .form-error[data-v-799d8060] {
6191
+ .form-error[data-v-109ad6ae] {
6170
6192
  font-size: 0.875rem;
6171
6193
  line-height: 1.25rem;
6172
6194
  color: #f21b3f;
6173
6195
  }
6174
- .contact-container[data-v-799d8060] {
6196
+ .contact-container[data-v-109ad6ae] {
6175
6197
  max-width: var(--brandsite-max-width);
6176
6198
  margin: 0 auto;
6177
6199
  }
6178
- .c-text-padding[data-v-799d8060] {
6200
+ .c-text-padding[data-v-109ad6ae] {
6179
6201
  padding-left: 1rem;
6180
6202
  padding-right: 1rem;
6181
6203
  }
6182
- .device-wrapper--mobile .c-divided-container[data-v-799d8060] {
6204
+ .device-wrapper--mobile .c-divided-container[data-v-109ad6ae] {
6183
6205
  -webkit-box-orient: vertical;
6184
6206
  -webkit-box-direction: normal;
6185
6207
  -ms-flex-direction: column;
6186
6208
  flex-direction: column;
6187
6209
  }
6188
- .device-wrapper--mobile .c-divided-container-reverse[data-v-799d8060] {
6210
+ .device-wrapper--mobile .c-divided-container-reverse[data-v-109ad6ae] {
6189
6211
  -webkit-box-orient: vertical;
6190
6212
  -webkit-box-direction: reverse;
6191
6213
  -ms-flex-direction: column-reverse;
6192
6214
  flex-direction: column-reverse;
6193
6215
  }
6194
6216
  @media (max-width: 767px) {
6195
- .c-button-full[data-v-799d8060] {
6217
+ .c-button-full[data-v-109ad6ae] {
6218
+ width: 100%;
6219
+ }
6220
+ /* Match the button's full-width on published mobile. The maker uses the
6221
+ isMobileDevice prop for this; the renderer has no such state, so the
6222
+ decorative-button wrapper is widened here via the real viewport instead. */
6223
+ [data-v-109ad6ae] .bp-style-wrapper {
6196
6224
  width: 100%;
6197
6225
  }
6198
- .c-col-span-2[data-v-799d8060] {
6226
+ .c-col-span-2[data-v-109ad6ae] {
6199
6227
  grid-column: span 2 / span 2;
6200
6228
  }
6201
- .c-mobile-padding[data-v-799d8060] {
6229
+ .c-mobile-padding[data-v-109ad6ae] {
6202
6230
  padding: 1rem;
6203
6231
  }
6204
- .c-text-padding[data-v-799d8060] {
6232
+ .c-text-padding[data-v-109ad6ae] {
6205
6233
  grid-column: span 2 / span 2;
6206
6234
  padding-left: 0px;
6207
6235
  padding-right: 0px;
6208
6236
  }
6209
- .c-divided-container[data-v-799d8060] {
6237
+ .c-divided-container[data-v-109ad6ae] {
6210
6238
  -webkit-box-orient: vertical;
6211
6239
  -webkit-box-direction: normal;
6212
6240
  -ms-flex-direction: column;
6213
6241
  flex-direction: column;
6214
6242
  }
6215
- .c-divided-container-reverse[data-v-799d8060] {
6243
+ .c-divided-container-reverse[data-v-109ad6ae] {
6216
6244
  -webkit-box-orient: vertical;
6217
6245
  -webkit-box-direction: reverse;
6218
6246
  -ms-flex-direction: column-reverse;
@@ -6220,16 +6248,16 @@ select[data-v-14e7c7c7] {
6220
6248
  }
6221
6249
  }
6222
6250
  @media (min-width: 767px) {
6223
- .c-aspect-square[data-v-799d8060] {
6251
+ .c-aspect-square[data-v-109ad6ae] {
6224
6252
  aspect-ratio: 1 / 1;
6225
6253
  }
6226
- .c-divided-container[data-v-799d8060] {
6254
+ .c-divided-container[data-v-109ad6ae] {
6227
6255
  -webkit-box-orient: horizontal;
6228
6256
  -webkit-box-direction: normal;
6229
6257
  -ms-flex-direction: row;
6230
6258
  flex-direction: row;
6231
6259
  }
6232
- .c-divided-container-reverse[data-v-799d8060] {
6260
+ .c-divided-container-reverse[data-v-109ad6ae] {
6233
6261
  -webkit-box-orient: horizontal;
6234
6262
  -webkit-box-direction: reverse;
6235
6263
  -ms-flex-direction: row-reverse;
@@ -6861,44 +6889,44 @@ select[data-v-14e7c7c7] {
6861
6889
  color: #f21b3f;
6862
6890
  }
6863
6891
 
6864
- .inner-container[data-v-24954146] {
6892
+ .inner-container[data-v-c359b5e7] {
6865
6893
  max-width: var(--brandsite-max-width);
6866
6894
  margin: 0 auto;
6867
6895
  }
6868
- .outer-container[data-v-24954146] {
6896
+ .outer-container[data-v-c359b5e7] {
6869
6897
  padding-left: var(--page-padding);
6870
6898
  padding-right: var(--page-padding);
6871
6899
  }
6872
- .modal-cart[data-v-24954146] .cart-image {
6900
+ .modal-cart[data-v-c359b5e7] .cart-image {
6873
6901
  width: 3rem;
6874
6902
  }
6875
- .modal-cart[data-v-24954146] .cart-option {
6903
+ .modal-cart[data-v-c359b5e7] .cart-option {
6876
6904
  width: 100%;
6877
6905
  }
6878
- .success-bar-container[data-v-24954146] .tw-bg-success-500 {
6906
+ .success-bar-container[data-v-c359b5e7] .tw-bg-success-500 {
6879
6907
  --tw-bg-opacity: 1;
6880
6908
  background-color: rgb(36 168 16 / var(--tw-bg-opacity));
6881
6909
  }
6882
6910
  @media (min-width: 640px) {
6883
- .modal-product-detail[data-v-24954146] .modal {
6911
+ .modal-product-detail[data-v-c359b5e7] .modal {
6884
6912
  min-width: 100vh;
6885
6913
  }
6886
- .modal-cart[data-v-24954146] .modal {
6914
+ .modal-cart[data-v-c359b5e7] .modal {
6887
6915
  min-width: 90vh;
6888
6916
  max-height: 90vh;
6889
6917
  }
6890
- .modal-cart[data-v-24954146] .cart-image {
6918
+ .modal-cart[data-v-c359b5e7] .cart-image {
6891
6919
  width: 8rem;
6892
6920
  }
6893
- .modal-cart[data-v-24954146] .cart-option {
6921
+ .modal-cart[data-v-c359b5e7] .cart-option {
6894
6922
  width: 75%;
6895
6923
  }
6896
- .success-bar[data-v-24954146] {
6924
+ .success-bar[data-v-c359b5e7] {
6897
6925
  width: 50%;
6898
6926
  }
6899
6927
  }
6900
6928
  @media (max-width: 640px) {
6901
- .success-bar[data-v-24954146] {
6929
+ .success-bar[data-v-c359b5e7] {
6902
6930
  width: 91.666667%;
6903
6931
  }
6904
6932
  }
@@ -1521,9 +1521,15 @@ a.maker-anchor {
1521
1521
  .tw-min-w-8 {
1522
1522
  min-width: 2rem;
1523
1523
  }
1524
+ .tw-min-w-\[120px\] {
1525
+ min-width: 120px;
1526
+ }
1524
1527
  .tw-min-w-\[310px\] {
1525
1528
  min-width: 310px;
1526
1529
  }
1530
+ .tw-min-w-full {
1531
+ min-width: 100%;
1532
+ }
1527
1533
  .tw-max-w-0 {
1528
1534
  max-width: 0px;
1529
1535
  }
@@ -1863,16 +1869,6 @@ a.maker-anchor {
1863
1869
  -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));
1864
1870
  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));
1865
1871
  }
1866
- .tw-translate-y-\[-10\%\] {
1867
- --tw-translate-y: -10%;
1868
- -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));
1869
- 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));
1870
- }
1871
- .tw-translate-y-\[-4\%\] {
1872
- --tw-translate-y: -4%;
1873
- -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));
1874
- 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));
1875
- }
1876
1872
  .tw-translate-y-px {
1877
1873
  --tw-translate-y: 1px;
1878
1874
  -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));
@@ -3448,9 +3444,6 @@ a.maker-anchor {
3448
3444
  .tw-leading-tight {
3449
3445
  line-height: 1.25;
3450
3446
  }
3451
- .tw-text-\[var\(--icon-color\)\] {
3452
- color: var(--icon-color);
3453
- }
3454
3447
  .tw-text-black {
3455
3448
  --tw-text-opacity: 1;
3456
3449
  color: rgb(0 0 0 / var(--tw-text-opacity));
@@ -6273,39 +6266,72 @@ input[data-v-4cd691db]::-webkit-inner-spin-button {
6273
6266
  max-height: 45vh;
6274
6267
  }
6275
6268
 
6276
- .bp-button-paper-top[data-v-604db8c6] {
6277
- --tw-translate-y: -10%;
6278
- -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));
6279
- 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));
6280
- color: var(--icon-color);
6281
- }
6282
- .bp-button-paper-bottom[data-v-604db8c6] {
6283
- --tw-translate-y: -4%;
6284
- -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));
6285
- 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));
6286
- color: var(--icon-color);
6269
+ /* Decorative styles on submit buttons render flush at the bottom. Zero the host
6270
+ button's own margins: its decoration is positioned relative to the WRAPPER, so a
6271
+ margin on the button itself shifts it out of alignment with the decoration. The
6272
+ top gap is instead applied to the wrapper (tw-mt-4 above) so the whole decorated
6273
+ unit moves together and stays flush at the container's bottom edge (BP-5800). */
6274
+ .bp-style-wrapper--no-margin[data-v-255edfd5] button {
6275
+ margin-top: 0;
6276
+ margin-bottom: 0;
6287
6277
  }
6288
- .bp-button-paper-top[data-v-604db8c6] svg,
6289
- .bp-button-paper-bottom[data-v-604db8c6] svg {
6290
- width: 100%;
6291
- height: auto;
6278
+
6279
+ /* Brushstroke: flanking brush-end icons are transformed over the button's
6280
+ left/right edges, so they must not capture clicks (BP-5882). */
6281
+ .bp-icon-brush-left[data-v-255edfd5],
6282
+ .bp-icon-brush-right[data-v-255edfd5] {
6283
+ pointer-events: none;
6292
6284
  }
6293
- .bp-icon-brush-left[data-v-604db8c6] svg {
6285
+ .bp-icon-brush-left[data-v-255edfd5] svg {
6294
6286
  -webkit-transform: translateX(-99%);
6295
6287
  transform: translateX(-99%);
6296
6288
  width: auto;
6297
6289
  }
6298
- .bp-icon-brush-right[data-v-604db8c6] svg {
6290
+ .bp-icon-brush-right[data-v-255edfd5] svg {
6299
6291
  width: auto;
6300
6292
  }
6301
- .bp-button-arrow[data-v-604db8c6],
6302
- .device-wrapper--mobile .bp-button-arrow[data-v-604db8c6] {
6303
- clip-path: polygon(5% 100%, 0% 50%, 5% 0%, 95% 0%, 100% 50%, 95% 100%);
6293
+
6294
+ /* Torn-paper: the button-paper icon sits BEHIND the button as its shape. The
6295
+ wrapper is the positioning context; the icon is an inert inset layer that fills
6296
+ the button box exactly (inset:0 + preserveAspectRatio none) without inflating
6297
+ its size or capturing clicks (BP-5882/BP-5883). The button's own fill is made
6298
+ transparent so the icon's colour shows through. */
6299
+ .bp-button-shape[data-v-255edfd5] {
6300
+ position: relative;
6304
6301
  }
6305
- @media (min-width: 767px) {
6306
- .bp-button-arrow[data-v-604db8c6] {
6307
- clip-path: polygon(3% 100%, 0% 50%, 3% 0%, 97% 0%, 100% 50%, 97% 100%);
6302
+ .bp-icon-shape[data-v-255edfd5] {
6303
+ position: absolute;
6304
+ inset: 0;
6305
+ width: 100%;
6306
+ height: 100%;
6307
+ pointer-events: none;
6308
6308
  }
6309
+ .bp-button-shape[data-v-255edfd5] button,
6310
+ .bp-button-shape[data-v-255edfd5] a {
6311
+ position: relative; /* sit above the inert background */
6312
+ /* !important to override the host button's inline background-color. */
6313
+ background-color: transparent !important;
6314
+ }
6315
+ /* button-paper ships hardcoded fill="black"; recolour to the button's fill. CSS
6316
+ fill overrides the presentation attribute; clip-path rects are geometric so
6317
+ recolouring them is harmless. */
6318
+ .bp-icon-shape[data-v-255edfd5] path,
6319
+ .bp-icon-shape[data-v-255edfd5] rect {
6320
+ fill: currentColor;
6321
+ }
6322
+ .bp-button-arrow[data-v-255edfd5],
6323
+ .device-wrapper--mobile .bp-button-arrow[data-v-255edfd5] {
6324
+ /* Fixed-px arrowhead (not %) so the chevron is equally sharp at any button
6325
+ width — a %-based point collapses on narrow buttons (e.g. the 120px contact
6326
+ form submit) and only reads as an arrow on wide ones. */
6327
+ clip-path: polygon(
6328
+ 12px 100%,
6329
+ 0 50%,
6330
+ 12px 0,
6331
+ calc(100% - 12px) 0,
6332
+ 100% 50%,
6333
+ calc(100% - 12px) 100%
6334
+ );
6309
6335
  }
6310
6336
 
6311
6337
  .empty-para[data-v-2520851c] p:empty::after {
@@ -6419,7 +6445,7 @@ input[data-v-4cd691db]::-webkit-inner-spin-button {
6419
6445
  text-decoration: underline;
6420
6446
  }
6421
6447
 
6422
- .form-error[data-v-ddbacf5a] {
6448
+ .form-error[data-v-b7e55081] {
6423
6449
  font-size: 0.875rem;
6424
6450
  line-height: 1.25rem;
6425
6451
  color: #f21b3f
@@ -6674,14 +6700,10 @@ select[data-v-14e7c7c7] {
6674
6700
  background-position: right 12px center;
6675
6701
  }
6676
6702
 
6677
- .form-error[data-v-7731d899] {
6703
+ .form-error[data-v-0cc4cbbd] {
6678
6704
  font-size: 0.75rem;
6679
6705
  line-height: 1rem;
6680
- color: #f21b3f;
6681
- }
6682
- .pay-button-disabled[data-v-7731d899] {
6683
- opacity: 0.5 !important;
6684
- pointer-events: none;
6706
+ color: #f21b3f
6685
6707
  }
6686
6708
 
6687
6709
  /* TODO: review CSS setup, scoped CSS will not work in slot */
@@ -6777,53 +6799,59 @@ select[data-v-14e7c7c7] {
6777
6799
  width: 100%;
6778
6800
  }
6779
6801
 
6780
- .form-error[data-v-799d8060] {
6802
+ .form-error[data-v-109ad6ae] {
6781
6803
  font-size: 0.875rem;
6782
6804
  line-height: 1.25rem;
6783
6805
  color: #f21b3f;
6784
6806
  }
6785
- .contact-container[data-v-799d8060] {
6807
+ .contact-container[data-v-109ad6ae] {
6786
6808
  max-width: var(--brandsite-max-width);
6787
6809
  margin: 0 auto;
6788
6810
  }
6789
- .c-text-padding[data-v-799d8060] {
6811
+ .c-text-padding[data-v-109ad6ae] {
6790
6812
  padding-left: 1rem;
6791
6813
  padding-right: 1rem;
6792
6814
  }
6793
- .device-wrapper--mobile .c-divided-container[data-v-799d8060] {
6815
+ .device-wrapper--mobile .c-divided-container[data-v-109ad6ae] {
6794
6816
  -webkit-box-orient: vertical;
6795
6817
  -webkit-box-direction: normal;
6796
6818
  -ms-flex-direction: column;
6797
6819
  flex-direction: column;
6798
6820
  }
6799
- .device-wrapper--mobile .c-divided-container-reverse[data-v-799d8060] {
6821
+ .device-wrapper--mobile .c-divided-container-reverse[data-v-109ad6ae] {
6800
6822
  -webkit-box-orient: vertical;
6801
6823
  -webkit-box-direction: reverse;
6802
6824
  -ms-flex-direction: column-reverse;
6803
6825
  flex-direction: column-reverse;
6804
6826
  }
6805
6827
  @media (max-width: 767px) {
6806
- .c-button-full[data-v-799d8060] {
6828
+ .c-button-full[data-v-109ad6ae] {
6829
+ width: 100%;
6830
+ }
6831
+ /* Match the button's full-width on published mobile. The maker uses the
6832
+ isMobileDevice prop for this; the renderer has no such state, so the
6833
+ decorative-button wrapper is widened here via the real viewport instead. */
6834
+ [data-v-109ad6ae] .bp-style-wrapper {
6807
6835
  width: 100%;
6808
6836
  }
6809
- .c-col-span-2[data-v-799d8060] {
6837
+ .c-col-span-2[data-v-109ad6ae] {
6810
6838
  grid-column: span 2 / span 2;
6811
6839
  }
6812
- .c-mobile-padding[data-v-799d8060] {
6840
+ .c-mobile-padding[data-v-109ad6ae] {
6813
6841
  padding: 1rem;
6814
6842
  }
6815
- .c-text-padding[data-v-799d8060] {
6843
+ .c-text-padding[data-v-109ad6ae] {
6816
6844
  grid-column: span 2 / span 2;
6817
6845
  padding-left: 0px;
6818
6846
  padding-right: 0px;
6819
6847
  }
6820
- .c-divided-container[data-v-799d8060] {
6848
+ .c-divided-container[data-v-109ad6ae] {
6821
6849
  -webkit-box-orient: vertical;
6822
6850
  -webkit-box-direction: normal;
6823
6851
  -ms-flex-direction: column;
6824
6852
  flex-direction: column;
6825
6853
  }
6826
- .c-divided-container-reverse[data-v-799d8060] {
6854
+ .c-divided-container-reverse[data-v-109ad6ae] {
6827
6855
  -webkit-box-orient: vertical;
6828
6856
  -webkit-box-direction: reverse;
6829
6857
  -ms-flex-direction: column-reverse;
@@ -6831,16 +6859,16 @@ select[data-v-14e7c7c7] {
6831
6859
  }
6832
6860
  }
6833
6861
  @media (min-width: 767px) {
6834
- .c-aspect-square[data-v-799d8060] {
6862
+ .c-aspect-square[data-v-109ad6ae] {
6835
6863
  aspect-ratio: 1 / 1;
6836
6864
  }
6837
- .c-divided-container[data-v-799d8060] {
6865
+ .c-divided-container[data-v-109ad6ae] {
6838
6866
  -webkit-box-orient: horizontal;
6839
6867
  -webkit-box-direction: normal;
6840
6868
  -ms-flex-direction: row;
6841
6869
  flex-direction: row;
6842
6870
  }
6843
- .c-divided-container-reverse[data-v-799d8060] {
6871
+ .c-divided-container-reverse[data-v-109ad6ae] {
6844
6872
  -webkit-box-orient: horizontal;
6845
6873
  -webkit-box-direction: reverse;
6846
6874
  -ms-flex-direction: row-reverse;
@@ -7472,44 +7500,44 @@ select[data-v-14e7c7c7] {
7472
7500
  color: #f21b3f;
7473
7501
  }
7474
7502
 
7475
- .inner-container[data-v-24954146] {
7503
+ .inner-container[data-v-c359b5e7] {
7476
7504
  max-width: var(--brandsite-max-width);
7477
7505
  margin: 0 auto;
7478
7506
  }
7479
- .outer-container[data-v-24954146] {
7507
+ .outer-container[data-v-c359b5e7] {
7480
7508
  padding-left: var(--page-padding);
7481
7509
  padding-right: var(--page-padding);
7482
7510
  }
7483
- .modal-cart[data-v-24954146] .cart-image {
7511
+ .modal-cart[data-v-c359b5e7] .cart-image {
7484
7512
  width: 3rem;
7485
7513
  }
7486
- .modal-cart[data-v-24954146] .cart-option {
7514
+ .modal-cart[data-v-c359b5e7] .cart-option {
7487
7515
  width: 100%;
7488
7516
  }
7489
- .success-bar-container[data-v-24954146] .tw-bg-success-500 {
7517
+ .success-bar-container[data-v-c359b5e7] .tw-bg-success-500 {
7490
7518
  --tw-bg-opacity: 1;
7491
7519
  background-color: rgb(36 168 16 / var(--tw-bg-opacity));
7492
7520
  }
7493
7521
  @media (min-width: 640px) {
7494
- .modal-product-detail[data-v-24954146] .modal {
7522
+ .modal-product-detail[data-v-c359b5e7] .modal {
7495
7523
  min-width: 100vh;
7496
7524
  }
7497
- .modal-cart[data-v-24954146] .modal {
7525
+ .modal-cart[data-v-c359b5e7] .modal {
7498
7526
  min-width: 90vh;
7499
7527
  max-height: 90vh;
7500
7528
  }
7501
- .modal-cart[data-v-24954146] .cart-image {
7529
+ .modal-cart[data-v-c359b5e7] .cart-image {
7502
7530
  width: 8rem;
7503
7531
  }
7504
- .modal-cart[data-v-24954146] .cart-option {
7532
+ .modal-cart[data-v-c359b5e7] .cart-option {
7505
7533
  width: 75%;
7506
7534
  }
7507
- .success-bar[data-v-24954146] {
7535
+ .success-bar[data-v-c359b5e7] {
7508
7536
  width: 50%;
7509
7537
  }
7510
7538
  }
7511
7539
  @media (max-width: 640px) {
7512
- .success-bar[data-v-24954146] {
7540
+ .success-bar[data-v-c359b5e7] {
7513
7541
  width: 91.666667%;
7514
7542
  }
7515
7543
  }