@designcrowd/library.brand-page 6.0.19-ast-btns → 6.0.19-ast-btns-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/src/{CreatedOnBrandCrowd-de-de-BrIpxgMF.js → CreatedOnBrandCrowd-de-de-BI4rJV_V.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-en-us-DQDv2DBf.js → CreatedOnBrandCrowd-en-us-Crf-sBeO.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-es-es-BadaUjK1.js → CreatedOnBrandCrowd-es-es-DE_kK1yb.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-fr-DbrUAAGP.js → CreatedOnBrandCrowd-fr-ca-BXhEu1vY.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-ca-DbrUAAGP.js → CreatedOnBrandCrowd-fr-fr-BXhEu1vY.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-pt-Cy41WPcW.js → CreatedOnBrandCrowd-pt-br-DG1azcKI.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-br-Cy41WPcW.js → CreatedOnBrandCrowd-pt-pt-DG1azcKI.js} +1 -1
- package/lib/src/{CreatedOnDcom-de-de-D6UvcWQ5.js → CreatedOnDcom-de-de-BFL99-ya.js} +1 -1
- package/lib/src/{CreatedOnDcom-en-us-DKUOQjj3.js → CreatedOnDcom-en-us-DqWMpFgs.js} +1 -1
- package/lib/src/{CreatedOnDcom-es-es-CftpM7Vk.js → CreatedOnDcom-es-es-Ds0zIzXx.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-ca-DcCQzJDA.js → CreatedOnDcom-fr-ca-X-GSmpwv.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-fr-Bodcymjw.js → CreatedOnDcom-fr-fr-Cm1eyNiD.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-br-B1OmeM4X.js → CreatedOnDcom-pt-br-BUOePaaJ.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-pt-CGx-k757.js → CreatedOnDcom-pt-pt-CJSZsybQ.js} +1 -1
- package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +1 -1
- package/lib/src/brand-page/utils/button.util.d.ts +5 -0
- package/lib/src/brand-page/utils/button.util.js +13 -0
- package/lib/src/brand-page-maker/constants/config-settings-constant.js +9 -0
- package/lib/src/brand-page-maker/models/content-settings-configs.d.ts +1 -1
- package/lib/src/css/library.brand-page-brandCrowd.min.css +61 -36
- package/lib/src/css/library.brand-page-brandPage.min.css +61 -36
- package/lib/src/css/library.brand-page-designCom.min.css +61 -36
- package/lib/src/css/library.brand-page-preview.min.css +61 -36
- package/lib/src/index.mjs +1 -1
- package/lib/src/{lib-ce4Vsuiu.js → lib-CfENvLvt.js} +28317 -28187
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +5 -0
- package/package.json +2 -2
- package/src/brand-page/components/button/ButtonStyleWrapper.vue +46 -29
- package/src/brand-page/components/button/ButtonStyleWrapper.vue.test.ts +8 -5
- package/src/brand-page/components/contact-form/ContactForm.mixin.ts +1 -1
- package/src/brand-page/components/contact-form/ContactForm.vue +9 -3
- package/src/brand-page/utils/button.util.ts +17 -0
- package/src/brand-page-maker/constants/config-settings-constant.ts +12 -0
- package/src/brand-page-maker/models/content-settings-configs.ts +1 -1
- package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +6 -0
- package/lib/src/brand-page/components/button/decorative-button-styles.d.ts +0 -5
- package/lib/src/brand-page/components/button/decorative-button-styles.js +0 -13
- package/lib/src/brand-page/components/button/paper-button-mask.d.ts +0 -1
- package/lib/src/brand-page/components/button/paper-button-mask.js +0 -8
- package/src/brand-page/components/button/decorative-button-styles.ts +0 -16
- package/src/brand-page/components/button/paper-button-mask.ts +0 -8
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent } from 'vue';
|
|
2
2
|
import { FORM_FIELD_TYPES } from '@brand-page/models';
|
|
3
3
|
import { getEmailValidationError, getMessageValidationError, getNameValidationError, getPhoneValidationError, } from '@brand-page/utils';
|
|
4
|
-
import { isDecorativeButtonStyle } from '
|
|
4
|
+
import { isDecorativeButtonStyle } from '../../utils/button.util';
|
|
5
5
|
import brandPageClient from '../../clients/brand-page.client';
|
|
6
6
|
import { isEmail } from '../../../utils/validator.util';
|
|
7
7
|
import { ALIGN_CARD_CENTER, ALIGN_CARD_CENTER_IMAGE, ALIGN_CENTERED, ALIGN_LEFT_FULL_IMAGE, ALIGN_RIGHT_FULL_IMAGE, DISPLAY_STYLE_COLLAPSED, RECAPTCHA_ACTION_CONTACT_FORM, TEXT_ONLY, } from '../../constants';
|
|
@@ -5,3 +5,8 @@ import type { ButtonStyles } from '../models';
|
|
|
5
5
|
* @returns The calculated box shadow CSS value
|
|
6
6
|
*/
|
|
7
7
|
export declare const getBoxShadowValue: (buttonStyles: ButtonStyles) => string;
|
|
8
|
+
export declare const BUTTON_STYLE_BRUSHSTROKE = "BUTTON_STYLE_19";
|
|
9
|
+
export declare const BUTTON_STYLE_ARROW = "BUTTON_STYLE_20";
|
|
10
|
+
export declare const BUTTON_STYLE_PAPER = "BUTTON_STYLE_21";
|
|
11
|
+
export declare const DECORATIVE_BUTTON_STYLE_IDS: string[];
|
|
12
|
+
export declare const isDecorativeButtonStyle: (styleId?: string) => boolean;
|
|
@@ -27,3 +27,16 @@ export const getBoxShadowValue = (buttonStyles) => {
|
|
|
27
27
|
}
|
|
28
28
|
return boxShadowValue;
|
|
29
29
|
};
|
|
30
|
+
// The "decorative" button styles — brushstroke / arrow / torn-paper — whose visual
|
|
31
|
+
// is drawn by ButtonStyleWrapper rather than plain CSS. Their banner-like SVG
|
|
32
|
+
// decoration needs the button to be reasonably wide to render legibly, so narrow
|
|
33
|
+
// (w-fit) hosts should widen when one of these is active (BP-5800).
|
|
34
|
+
export const BUTTON_STYLE_BRUSHSTROKE = 'BUTTON_STYLE_19';
|
|
35
|
+
export const BUTTON_STYLE_ARROW = 'BUTTON_STYLE_20';
|
|
36
|
+
export const BUTTON_STYLE_PAPER = 'BUTTON_STYLE_21';
|
|
37
|
+
export const DECORATIVE_BUTTON_STYLE_IDS = [
|
|
38
|
+
BUTTON_STYLE_BRUSHSTROKE,
|
|
39
|
+
BUTTON_STYLE_ARROW,
|
|
40
|
+
BUTTON_STYLE_PAPER,
|
|
41
|
+
];
|
|
42
|
+
export const isDecorativeButtonStyle = (styleId) => !!styleId && DECORATIVE_BUTTON_STYLE_IDS.includes(styleId);
|
|
@@ -455,6 +455,10 @@ 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
|
+
const disableTransparentOffBrandSite = (brandPageType) => brandPageType !== BRAND_PAGE_TYPES.brandSite;
|
|
458
462
|
export const LOGO_SETTINGS_CONFIG = () => ({
|
|
459
463
|
createInitialContent: createInitialLogoContent,
|
|
460
464
|
type: 'logo',
|
|
@@ -1470,6 +1474,7 @@ export const MAILING_LIST_CONTENT_SETTINGS_CONFIG = () => ({
|
|
|
1470
1474
|
isInline: true,
|
|
1471
1475
|
showToggle: false,
|
|
1472
1476
|
title: contentSettingsTr(`backgroundColorTitle`),
|
|
1477
|
+
disableTransparent: disableTransparentOffBrandSite,
|
|
1473
1478
|
valueConvertor: backgroundColorConvertor,
|
|
1474
1479
|
defaultGetter: paymentFillColorFieldDefaultGetter,
|
|
1475
1480
|
},
|
|
@@ -1651,6 +1656,7 @@ export const REQUEST_PAYMENT_CONTENT_SETTINGS_CONFIG = () => ({
|
|
|
1651
1656
|
isInline: true,
|
|
1652
1657
|
showToggle: false,
|
|
1653
1658
|
title: contentSettingsTr(`backgroundColorTitle`),
|
|
1659
|
+
disableTransparent: disableTransparentOffBrandSite,
|
|
1654
1660
|
valueConvertor: backgroundColorConvertor,
|
|
1655
1661
|
defaultGetter: paymentFillColorFieldDefaultGetter,
|
|
1656
1662
|
},
|
|
@@ -1726,6 +1732,7 @@ export const SUPPORT_ME_CONTENT_SETTINGS_CONFIG = () => ({
|
|
|
1726
1732
|
isInline: true,
|
|
1727
1733
|
showToggle: false,
|
|
1728
1734
|
title: contentSettingsTr(`backgroundColorTitle`),
|
|
1735
|
+
disableTransparent: disableTransparentOffBrandSite,
|
|
1729
1736
|
valueConvertor: backgroundColorConvertor,
|
|
1730
1737
|
defaultGetter: paymentFillColorFieldDefaultGetter,
|
|
1731
1738
|
},
|
|
@@ -1876,6 +1883,7 @@ export const CONTACT_FORM_SETTINGS_CONFIG = () => ({
|
|
|
1876
1883
|
isInline: true,
|
|
1877
1884
|
showToggle: false,
|
|
1878
1885
|
title: contentSettingsTr(`backgroundColorTitle`),
|
|
1886
|
+
disableTransparent: disableTransparentOffBrandSite,
|
|
1879
1887
|
valueConvertor: backgroundColorConvertor,
|
|
1880
1888
|
defaultGetter: contactFormBackgroundColorDefaultGetter,
|
|
1881
1889
|
},
|
|
@@ -2694,6 +2702,7 @@ export const SHOP_SECTION_SETTINGS_CONFIG = () => ({
|
|
|
2694
2702
|
isInline: true,
|
|
2695
2703
|
showToggle: false,
|
|
2696
2704
|
title: contentSettingsTr(`backgroundColorTitle`),
|
|
2705
|
+
disableTransparent: disableTransparentOffBrandSite,
|
|
2697
2706
|
valueConvertor: backgroundColorConvertor,
|
|
2698
2707
|
},
|
|
2699
2708
|
},
|
|
@@ -90,7 +90,7 @@ export interface ContentSettingsField<TContent> {
|
|
|
90
90
|
variant?: VariantDisplayModes | ((brandPageType: BrandPageType) => VariantDisplayModes);
|
|
91
91
|
replaceImageSettings?: ContentReplaceImageSettings<TContent>;
|
|
92
92
|
showToggle?: boolean;
|
|
93
|
-
disableTransparent?: boolean;
|
|
93
|
+
disableTransparent?: boolean | ((brandPageType: BrandPageType) => boolean);
|
|
94
94
|
valueConvertor?: ValueConvertor<any, any>;
|
|
95
95
|
canReplace?: boolean;
|
|
96
96
|
placeholderAssessor?: PlaceholderTypeAssessor<TContent>;
|
|
@@ -1106,6 +1106,9 @@ a.maker-anchor {
|
|
|
1106
1106
|
.tw-min-w-\[310px\] {
|
|
1107
1107
|
min-width: 310px
|
|
1108
1108
|
}
|
|
1109
|
+
.tw-min-w-full {
|
|
1110
|
+
min-width: 100%
|
|
1111
|
+
}
|
|
1109
1112
|
.tw-max-w-0 {
|
|
1110
1113
|
max-width: 0px
|
|
1111
1114
|
}
|
|
@@ -5657,40 +5660,56 @@ input[data-v-4cd691db]::-webkit-inner-spin-button {
|
|
|
5657
5660
|
margin on the button itself shifts it out of alignment with the decoration. The
|
|
5658
5661
|
top gap is instead applied to the wrapper (tw-mt-4 above) so the whole decorated
|
|
5659
5662
|
unit moves together and stays flush at the container's bottom edge (BP-5800). */
|
|
5660
|
-
.bp-style-wrapper--no-margin[data-v-
|
|
5663
|
+
.bp-style-wrapper--no-margin[data-v-255edfd5] button {
|
|
5661
5664
|
margin-top: 0;
|
|
5662
5665
|
margin-bottom: 0;
|
|
5663
5666
|
}
|
|
5664
5667
|
|
|
5665
|
-
/*
|
|
5666
|
-
they must not capture clicks (BP-5882). */
|
|
5667
|
-
.bp-icon-brush-left[data-v-
|
|
5668
|
-
.bp-icon-brush-right[data-v-
|
|
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] {
|
|
5669
5672
|
pointer-events: none;
|
|
5670
5673
|
}
|
|
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;
|
|
5683
|
-
}
|
|
5684
|
-
.bp-icon-brush-left[data-v-c2533ae5] svg {
|
|
5674
|
+
.bp-icon-brush-left[data-v-255edfd5] svg {
|
|
5685
5675
|
-webkit-transform: translateX(-99%);
|
|
5686
5676
|
transform: translateX(-99%);
|
|
5687
5677
|
width: auto;
|
|
5688
5678
|
}
|
|
5689
|
-
.bp-icon-brush-right[data-v-
|
|
5679
|
+
.bp-icon-brush-right[data-v-255edfd5] svg {
|
|
5690
5680
|
width: auto;
|
|
5691
5681
|
}
|
|
5692
|
-
|
|
5693
|
-
|
|
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;
|
|
5690
|
+
}
|
|
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;
|
|
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] {
|
|
5694
5713
|
/* Fixed-px arrowhead (not %) so the chevron is equally sharp at any button
|
|
5695
5714
|
width — a %-based point collapses on narrow buttons (e.g. the 120px contact
|
|
5696
5715
|
form submit) and only reads as an arrow on wide ones. */
|
|
@@ -6169,53 +6188,59 @@ select[data-v-14e7c7c7] {
|
|
|
6169
6188
|
width: 100%;
|
|
6170
6189
|
}
|
|
6171
6190
|
|
|
6172
|
-
.form-error[data-v-
|
|
6191
|
+
.form-error[data-v-04e03cb2] {
|
|
6173
6192
|
font-size: 0.875rem;
|
|
6174
6193
|
line-height: 1.25rem;
|
|
6175
6194
|
color: #f21b3f;
|
|
6176
6195
|
}
|
|
6177
|
-
.contact-container[data-v-
|
|
6196
|
+
.contact-container[data-v-04e03cb2] {
|
|
6178
6197
|
max-width: var(--brandsite-max-width);
|
|
6179
6198
|
margin: 0 auto;
|
|
6180
6199
|
}
|
|
6181
|
-
.c-text-padding[data-v-
|
|
6200
|
+
.c-text-padding[data-v-04e03cb2] {
|
|
6182
6201
|
padding-left: 1rem;
|
|
6183
6202
|
padding-right: 1rem;
|
|
6184
6203
|
}
|
|
6185
|
-
.device-wrapper--mobile .c-divided-container[data-v-
|
|
6204
|
+
.device-wrapper--mobile .c-divided-container[data-v-04e03cb2] {
|
|
6186
6205
|
-webkit-box-orient: vertical;
|
|
6187
6206
|
-webkit-box-direction: normal;
|
|
6188
6207
|
-ms-flex-direction: column;
|
|
6189
6208
|
flex-direction: column;
|
|
6190
6209
|
}
|
|
6191
|
-
.device-wrapper--mobile .c-divided-container-reverse[data-v-
|
|
6210
|
+
.device-wrapper--mobile .c-divided-container-reverse[data-v-04e03cb2] {
|
|
6192
6211
|
-webkit-box-orient: vertical;
|
|
6193
6212
|
-webkit-box-direction: reverse;
|
|
6194
6213
|
-ms-flex-direction: column-reverse;
|
|
6195
6214
|
flex-direction: column-reverse;
|
|
6196
6215
|
}
|
|
6197
6216
|
@media (max-width: 767px) {
|
|
6198
|
-
.c-button-full[data-v-
|
|
6217
|
+
.c-button-full[data-v-04e03cb2] {
|
|
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-04e03cb2] .bp-style-wrapper {
|
|
6199
6224
|
width: 100%;
|
|
6200
6225
|
}
|
|
6201
|
-
.c-col-span-2[data-v-
|
|
6226
|
+
.c-col-span-2[data-v-04e03cb2] {
|
|
6202
6227
|
grid-column: span 2 / span 2;
|
|
6203
6228
|
}
|
|
6204
|
-
.c-mobile-padding[data-v-
|
|
6229
|
+
.c-mobile-padding[data-v-04e03cb2] {
|
|
6205
6230
|
padding: 1rem;
|
|
6206
6231
|
}
|
|
6207
|
-
.c-text-padding[data-v-
|
|
6232
|
+
.c-text-padding[data-v-04e03cb2] {
|
|
6208
6233
|
grid-column: span 2 / span 2;
|
|
6209
6234
|
padding-left: 0px;
|
|
6210
6235
|
padding-right: 0px;
|
|
6211
6236
|
}
|
|
6212
|
-
.c-divided-container[data-v-
|
|
6237
|
+
.c-divided-container[data-v-04e03cb2] {
|
|
6213
6238
|
-webkit-box-orient: vertical;
|
|
6214
6239
|
-webkit-box-direction: normal;
|
|
6215
6240
|
-ms-flex-direction: column;
|
|
6216
6241
|
flex-direction: column;
|
|
6217
6242
|
}
|
|
6218
|
-
.c-divided-container-reverse[data-v-
|
|
6243
|
+
.c-divided-container-reverse[data-v-04e03cb2] {
|
|
6219
6244
|
-webkit-box-orient: vertical;
|
|
6220
6245
|
-webkit-box-direction: reverse;
|
|
6221
6246
|
-ms-flex-direction: column-reverse;
|
|
@@ -6223,16 +6248,16 @@ select[data-v-14e7c7c7] {
|
|
|
6223
6248
|
}
|
|
6224
6249
|
}
|
|
6225
6250
|
@media (min-width: 767px) {
|
|
6226
|
-
.c-aspect-square[data-v-
|
|
6251
|
+
.c-aspect-square[data-v-04e03cb2] {
|
|
6227
6252
|
aspect-ratio: 1 / 1;
|
|
6228
6253
|
}
|
|
6229
|
-
.c-divided-container[data-v-
|
|
6254
|
+
.c-divided-container[data-v-04e03cb2] {
|
|
6230
6255
|
-webkit-box-orient: horizontal;
|
|
6231
6256
|
-webkit-box-direction: normal;
|
|
6232
6257
|
-ms-flex-direction: row;
|
|
6233
6258
|
flex-direction: row;
|
|
6234
6259
|
}
|
|
6235
|
-
.c-divided-container-reverse[data-v-
|
|
6260
|
+
.c-divided-container-reverse[data-v-04e03cb2] {
|
|
6236
6261
|
-webkit-box-orient: horizontal;
|
|
6237
6262
|
-webkit-box-direction: reverse;
|
|
6238
6263
|
-ms-flex-direction: row-reverse;
|
|
@@ -1527,6 +1527,9 @@ a.maker-anchor {
|
|
|
1527
1527
|
.tw-min-w-\[310px\] {
|
|
1528
1528
|
min-width: 310px;
|
|
1529
1529
|
}
|
|
1530
|
+
.tw-min-w-full {
|
|
1531
|
+
min-width: 100%;
|
|
1532
|
+
}
|
|
1530
1533
|
.tw-max-w-0 {
|
|
1531
1534
|
max-width: 0px;
|
|
1532
1535
|
}
|
|
@@ -6268,40 +6271,56 @@ input[data-v-4cd691db]::-webkit-inner-spin-button {
|
|
|
6268
6271
|
margin on the button itself shifts it out of alignment with the decoration. The
|
|
6269
6272
|
top gap is instead applied to the wrapper (tw-mt-4 above) so the whole decorated
|
|
6270
6273
|
unit moves together and stays flush at the container's bottom edge (BP-5800). */
|
|
6271
|
-
.bp-style-wrapper--no-margin[data-v-
|
|
6274
|
+
.bp-style-wrapper--no-margin[data-v-255edfd5] button {
|
|
6272
6275
|
margin-top: 0;
|
|
6273
6276
|
margin-bottom: 0;
|
|
6274
6277
|
}
|
|
6275
6278
|
|
|
6276
|
-
/*
|
|
6277
|
-
they must not capture clicks (BP-5882). */
|
|
6278
|
-
.bp-icon-brush-left[data-v-
|
|
6279
|
-
.bp-icon-brush-right[data-v-
|
|
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] {
|
|
6280
6283
|
pointer-events: none;
|
|
6281
6284
|
}
|
|
6282
|
-
|
|
6283
|
-
/* Torn-paper: clip the button itself to a torn silhouette via a CSS alpha mask
|
|
6284
|
-
(the button keeps its own fill). The mask stretches to the button box, so the
|
|
6285
|
-
torn shape always matches the button — it can't overhang neighbours, stretch
|
|
6286
|
-
past the button, or block clicks the way the old absolute overlay did
|
|
6287
|
-
(BP-5882/BP-5883). */
|
|
6288
|
-
.bp-button-paper[data-v-c2533ae5] button,
|
|
6289
|
-
.bp-button-paper[data-v-c2533ae5] a {
|
|
6290
|
-
-webkit-mask: var(--paper-mask) no-repeat center / 100% 100%;
|
|
6291
|
-
mask: var(--paper-mask) no-repeat center / 100% 100%;
|
|
6292
|
-
-webkit-mask-mode: alpha;
|
|
6293
|
-
mask-mode: alpha;
|
|
6294
|
-
}
|
|
6295
|
-
.bp-icon-brush-left[data-v-c2533ae5] svg {
|
|
6285
|
+
.bp-icon-brush-left[data-v-255edfd5] svg {
|
|
6296
6286
|
-webkit-transform: translateX(-99%);
|
|
6297
6287
|
transform: translateX(-99%);
|
|
6298
6288
|
width: auto;
|
|
6299
6289
|
}
|
|
6300
|
-
.bp-icon-brush-right[data-v-
|
|
6290
|
+
.bp-icon-brush-right[data-v-255edfd5] svg {
|
|
6301
6291
|
width: auto;
|
|
6302
6292
|
}
|
|
6303
|
-
|
|
6304
|
-
|
|
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;
|
|
6301
|
+
}
|
|
6302
|
+
.bp-icon-shape[data-v-255edfd5] {
|
|
6303
|
+
position: absolute;
|
|
6304
|
+
inset: 0;
|
|
6305
|
+
width: 100%;
|
|
6306
|
+
height: 100%;
|
|
6307
|
+
pointer-events: none;
|
|
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] {
|
|
6305
6324
|
/* Fixed-px arrowhead (not %) so the chevron is equally sharp at any button
|
|
6306
6325
|
width — a %-based point collapses on narrow buttons (e.g. the 120px contact
|
|
6307
6326
|
form submit) and only reads as an arrow on wide ones. */
|
|
@@ -6780,53 +6799,59 @@ select[data-v-14e7c7c7] {
|
|
|
6780
6799
|
width: 100%;
|
|
6781
6800
|
}
|
|
6782
6801
|
|
|
6783
|
-
.form-error[data-v-
|
|
6802
|
+
.form-error[data-v-04e03cb2] {
|
|
6784
6803
|
font-size: 0.875rem;
|
|
6785
6804
|
line-height: 1.25rem;
|
|
6786
6805
|
color: #f21b3f;
|
|
6787
6806
|
}
|
|
6788
|
-
.contact-container[data-v-
|
|
6807
|
+
.contact-container[data-v-04e03cb2] {
|
|
6789
6808
|
max-width: var(--brandsite-max-width);
|
|
6790
6809
|
margin: 0 auto;
|
|
6791
6810
|
}
|
|
6792
|
-
.c-text-padding[data-v-
|
|
6811
|
+
.c-text-padding[data-v-04e03cb2] {
|
|
6793
6812
|
padding-left: 1rem;
|
|
6794
6813
|
padding-right: 1rem;
|
|
6795
6814
|
}
|
|
6796
|
-
.device-wrapper--mobile .c-divided-container[data-v-
|
|
6815
|
+
.device-wrapper--mobile .c-divided-container[data-v-04e03cb2] {
|
|
6797
6816
|
-webkit-box-orient: vertical;
|
|
6798
6817
|
-webkit-box-direction: normal;
|
|
6799
6818
|
-ms-flex-direction: column;
|
|
6800
6819
|
flex-direction: column;
|
|
6801
6820
|
}
|
|
6802
|
-
.device-wrapper--mobile .c-divided-container-reverse[data-v-
|
|
6821
|
+
.device-wrapper--mobile .c-divided-container-reverse[data-v-04e03cb2] {
|
|
6803
6822
|
-webkit-box-orient: vertical;
|
|
6804
6823
|
-webkit-box-direction: reverse;
|
|
6805
6824
|
-ms-flex-direction: column-reverse;
|
|
6806
6825
|
flex-direction: column-reverse;
|
|
6807
6826
|
}
|
|
6808
6827
|
@media (max-width: 767px) {
|
|
6809
|
-
.c-button-full[data-v-
|
|
6828
|
+
.c-button-full[data-v-04e03cb2] {
|
|
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-04e03cb2] .bp-style-wrapper {
|
|
6810
6835
|
width: 100%;
|
|
6811
6836
|
}
|
|
6812
|
-
.c-col-span-2[data-v-
|
|
6837
|
+
.c-col-span-2[data-v-04e03cb2] {
|
|
6813
6838
|
grid-column: span 2 / span 2;
|
|
6814
6839
|
}
|
|
6815
|
-
.c-mobile-padding[data-v-
|
|
6840
|
+
.c-mobile-padding[data-v-04e03cb2] {
|
|
6816
6841
|
padding: 1rem;
|
|
6817
6842
|
}
|
|
6818
|
-
.c-text-padding[data-v-
|
|
6843
|
+
.c-text-padding[data-v-04e03cb2] {
|
|
6819
6844
|
grid-column: span 2 / span 2;
|
|
6820
6845
|
padding-left: 0px;
|
|
6821
6846
|
padding-right: 0px;
|
|
6822
6847
|
}
|
|
6823
|
-
.c-divided-container[data-v-
|
|
6848
|
+
.c-divided-container[data-v-04e03cb2] {
|
|
6824
6849
|
-webkit-box-orient: vertical;
|
|
6825
6850
|
-webkit-box-direction: normal;
|
|
6826
6851
|
-ms-flex-direction: column;
|
|
6827
6852
|
flex-direction: column;
|
|
6828
6853
|
}
|
|
6829
|
-
.c-divided-container-reverse[data-v-
|
|
6854
|
+
.c-divided-container-reverse[data-v-04e03cb2] {
|
|
6830
6855
|
-webkit-box-orient: vertical;
|
|
6831
6856
|
-webkit-box-direction: reverse;
|
|
6832
6857
|
-ms-flex-direction: column-reverse;
|
|
@@ -6834,16 +6859,16 @@ select[data-v-14e7c7c7] {
|
|
|
6834
6859
|
}
|
|
6835
6860
|
}
|
|
6836
6861
|
@media (min-width: 767px) {
|
|
6837
|
-
.c-aspect-square[data-v-
|
|
6862
|
+
.c-aspect-square[data-v-04e03cb2] {
|
|
6838
6863
|
aspect-ratio: 1 / 1;
|
|
6839
6864
|
}
|
|
6840
|
-
.c-divided-container[data-v-
|
|
6865
|
+
.c-divided-container[data-v-04e03cb2] {
|
|
6841
6866
|
-webkit-box-orient: horizontal;
|
|
6842
6867
|
-webkit-box-direction: normal;
|
|
6843
6868
|
-ms-flex-direction: row;
|
|
6844
6869
|
flex-direction: row;
|
|
6845
6870
|
}
|
|
6846
|
-
.c-divided-container-reverse[data-v-
|
|
6871
|
+
.c-divided-container-reverse[data-v-04e03cb2] {
|
|
6847
6872
|
-webkit-box-orient: horizontal;
|
|
6848
6873
|
-webkit-box-direction: reverse;
|
|
6849
6874
|
-ms-flex-direction: row-reverse;
|