@riverbankcms/sdk 0.75.0 → 0.77.0
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/README.md +2 -0
- package/dist/{PreviewEditorSidebar-U2IHCBYN.mjs → PreviewEditorSidebar-XSX7QKHQ.mjs} +1179 -519
- package/dist/{PreviewEditorUI-ZGH2RQNP.mjs → PreviewEditorUI-YZNEZ3QD.mjs} +2 -2
- package/dist/SdkPreviewModeRuntime-5FS5E6BI.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +528 -20
- package/dist/_dts/api/src/bookingOperations.d.ts +12 -0
- package/dist/_dts/api/src/contentRuntime.d.ts +5 -0
- package/dist/_dts/api/src/index.d.ts +1 -1
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +11 -3
- package/dist/_dts/api/src/siteAssets.d.ts +1 -0
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +26 -2
- package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +28 -1
- package/dist/_dts/block-form/src/client/index.d.ts +2 -2
- package/dist/_dts/block-form/src/index.d.ts +2 -1
- package/dist/_dts/block-form/src/manifest/utils.d.ts +24 -0
- package/dist/_dts/block-form/src/widgets/DateField/dateFieldSchema.d.ts +1 -1
- package/dist/_dts/block-form/src/widgets/DateTimeField/dateTimeFieldSchema.d.ts +1 -1
- package/dist/_dts/block-form/src/widgets/TimeField/timeFieldSchema.d.ts +1 -1
- package/dist/_dts/blocks/src/PageRenderer.d.ts +10 -10
- package/dist/_dts/blocks/src/client/events.d.ts +3 -1
- package/dist/_dts/blocks/src/client/site-chrome.d.ts +22 -0
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -4
- package/dist/_dts/blocks/src/customBlockRegistry.d.ts +38 -0
- package/dist/_dts/blocks/src/index.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/faq.d.ts +20 -2
- package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +25 -0
- package/dist/_dts/blocks/src/system/blocks/index.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/intro.d.ts +24 -0
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +3 -34
- package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
- package/dist/_dts/blocks/src/system/fields/aspectRatio.d.ts +30 -0
- package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +4 -1
- package/dist/_dts/blocks/src/system/fields/ctas.d.ts +7 -0
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +11 -2
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -6
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/accordion.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/accordion.server.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/accordionIconTreatment.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +3 -27
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +163 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +5 -5
- package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +29 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +4 -3
- package/dist/_dts/blocks/src/system/runtime/shared/utils/bookingRoute.d.ts +20 -0
- package/dist/_dts/blocks/src/system/runtime/shared/utils/index.d.ts +2 -1
- package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -0
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +2 -1
- package/dist/_dts/blocks/src/system/types/link.d.ts +12 -0
- package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -0
- package/dist/_dts/content-editor/src/hooks/blockDraftLifecycle.d.ts +48 -0
- package/dist/_dts/content-editor/src/hooks/invalidBlockSelectors.d.ts +4 -0
- package/dist/_dts/content-editor/src/hooks/publishability.d.ts +47 -0
- package/dist/_dts/content-editor/src/index.d.ts +1 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +20 -0
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +3 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +3 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +5 -1
- package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +4 -1
- package/dist/_dts/editor-blocks/src/block-editor/actionControlMode.d.ts +2 -0
- package/dist/_dts/editor-blocks/src/block-editor/customBlockRegistry.d.ts +2 -0
- package/dist/_dts/editor-blocks/src/block-editor/sdkBlockMerger.d.ts +9 -37
- package/dist/_dts/editor-blocks/src/index.d.ts +3 -3
- package/dist/_dts/preview-next/src/client/index.d.ts +3 -0
- package/dist/_dts/preview-next/src/client/layout/PreviewLayoutContext.d.ts +5 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewDesignCoordinatorContext.d.ts +20 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +7 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +7 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +7 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +18 -0
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +20 -3
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +6 -1
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +14 -4
- package/dist/_dts/preview-next/src/client/preview/previewDesignCoordinator.d.ts +73 -0
- package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +12 -4
- package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +46 -0
- package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +6 -1
- package/dist/_dts/preview-next/src/client/preview/themeOverlay.d.ts +21 -3
- package/dist/_dts/preview-next/src/client/preview/typographySelectionInput.d.ts +14 -0
- package/dist/_dts/preview-next/src/client/sdk/SdkPreviewModeRuntime.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/style.d.ts +8 -0
- package/dist/_dts/sdk/src/client/management/types.d.ts +6 -1
- package/dist/_dts/sdk/src/client/types.d.ts +9 -0
- package/dist/_dts/sdk/src/client.d.ts +1 -1
- package/dist/_dts/sdk/src/components.d.ts +2 -2
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +35 -0
- package/dist/_dts/sdk/src/index.d.ts +2 -1
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -0
- package/dist/_dts/sdk/src/rendering/index.d.ts +2 -2
- package/dist/_dts/sdk/src/rendering/overrideResolution.d.ts +6 -0
- package/dist/_dts/sdk/src/rendering/overrides.d.ts +21 -1
- package/dist/_dts/sdk/src/rendering/server.d.ts +4 -3
- package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commands.d.ts +15 -0
- package/dist/_dts/theme-core/src/buttons/personalities/earth-pill.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
- package/dist/_dts/theme-core/src/fonts/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +45 -0
- package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
- package/dist/_dts/theme-core/src/palette/variants/warm-neutral.d.ts +16 -0
- package/dist/_dts/theme-core/src/schema.d.ts +280 -0
- package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +81 -0
- package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +6 -4
- package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +81 -0
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +118 -2
- package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +13 -0
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +364 -5
- package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +6 -0
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/persistedIdParseResult.d.ts +9 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +20 -4
- package/dist/_dts/theme-core/src/site-styles/types.d.ts +74 -2
- package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +189 -0
- package/dist/{chunk-Z7JLNTJR.mjs → chunk-6SMUFTXD.mjs} +2 -1
- package/dist/{chunk-ZSHFGFUG.mjs → chunk-ANKDYZ2E.mjs} +1 -1
- package/dist/{chunk-BGMNDF6T.mjs → chunk-EAWHBECW.mjs} +476 -153
- package/dist/{chunk-RWXQBRQZ.mjs → chunk-GSQX43EZ.mjs} +450 -63
- package/dist/{chunk-GFE74WRD.mjs → chunk-WLQBJN2Z.mjs} +3275 -435
- package/dist/cli/index.mjs +2023 -181
- package/dist/client/{accordion-T2UD2ZTH.mjs → accordion-RZMQSYLR.mjs} +1 -1
- package/dist/client/{bookingForm-GUP75FKN.mjs → bookingForm-NF4ASVNV.mjs} +3 -13
- package/dist/client/bookings.mjs +103 -11
- package/dist/client/{carousel-2NQA6V57.mjs → carousel-LDX47ZIK.mjs} +1 -1
- package/dist/client/{cart-5TFIAFDS.mjs → cart-RGXDS5F4.mjs} +4 -4
- package/dist/client/{checkout-TP4WAHZE.mjs → checkout-P7WWSNNY.mjs} +4 -4
- package/dist/client/{chunk-ZLMS67RR.mjs → chunk-E2TDNXCL.mjs} +1 -1
- package/dist/client/{chunk-NWOUL6JY.mjs → chunk-GMVTOKYG.mjs} +3 -3
- package/dist/client/{chunk-CY2ZTSE5.mjs → chunk-JNC7CGHX.mjs} +1 -1
- package/dist/client/{chunk-VUAOE3AG.mjs → chunk-L3DNHIJX.mjs} +4 -4
- package/dist/client/{chunk-FU2QRZMX.mjs → chunk-R56FQ3RR.mjs} +163 -24
- package/dist/client/{chunk-WJXXNDSE.mjs → chunk-UFSWADAO.mjs} +1 -1
- package/dist/client/client.mjs +4392 -2504
- package/dist/client/{courseRegistration-5DPU6PDY.mjs → courseRegistration-7F65K5ZR.mjs} +3 -3
- package/dist/client/{eventCalendar-F3GZGTEF.mjs → eventCalendar-GLSC5KTL.mjs} +5 -5
- package/dist/client/{eventCombined-BQOB6QMY.mjs → eventCombined-ZHK4WKUR.mjs} +5 -5
- package/dist/client/{eventDetails-PEM2EJWE.mjs → eventDetails-E3PJYBIN.mjs} +5 -5
- package/dist/client/{eventListing-YMIQPVME.mjs → eventListing-EMS3WC3E.mjs} +5 -5
- package/dist/client/{eventRegistration-4I6ZNDUF.mjs → eventRegistration-NZOTVNPI.mjs} +5 -5
- package/dist/client/{form-ZJVAYZ6G.mjs → form-ETFZFATW.mjs} +1 -1
- package/dist/client/{headerSection-TOT5MGTF.mjs → headerSection-4LBP7ULT.mjs} +2 -2
- package/dist/client/hooks.mjs +1918 -293
- package/dist/client/{locationMap-J66NZREU.mjs → locationMap-5M655YSJ.mjs} +1 -1
- package/dist/client/{newsletterForm-ET2XUMRO.mjs → newsletterForm-QOUYW44O.mjs} +1 -1
- package/dist/client/{productDetail-C2XIH7C5.mjs → productDetail-O4DOCWQG.mjs} +4 -4
- package/dist/client/{productList-T2AZLFTP.mjs → productList-A5RO5WIS.mjs} +4 -4
- package/dist/client/rendering/client.mjs +3328 -3177
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +5461 -3584
- package/dist/client/{shop-UZ6IUZXD.mjs → shop-L4MZH4I2.mjs} +4 -4
- package/dist/preview-next/chrome.css +1 -1
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/editor-base.css +2 -148
- package/dist/preview-next/editor-chrome.css +179 -0
- package/dist/{sdk-runtime-JCUQM63Y.mjs → sdk-runtime-Q6MTR4KL.mjs} +5 -5
- package/dist/server/components.mjs +2983 -1093
- package/dist/server/config-validation.mjs +1921 -293
- package/dist/server/config.mjs +1921 -293
- package/dist/server/data.mjs +1918 -293
- package/dist/server/index.mjs +31 -2
- package/dist/server/next.mjs +2951 -1043
- package/dist/server/page-converter.mjs +1894 -281
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +2995 -1096
- package/dist/server/rendering.mjs +2988 -1098
- package/dist/server/routing.mjs +1963 -275
- package/dist/server/server.mjs +1932 -288
- package/dist/server/theme-bridge.mjs +158 -1
- package/dist/server/theme.mjs +158 -1
- package/package.json +1 -1
- package/dist/SdkPreviewModeRuntime-MTUGBTLQ.mjs +0 -8
- /package/dist/client/{chunk-2PHQZ666.mjs → chunk-JEZECJ3W.mjs} +0 -0
|
@@ -30402,6 +30402,9 @@ z.object({
|
|
|
30402
30402
|
var TEL_RE = /^[+()0-9\s-]{3,}$/;
|
|
30403
30403
|
var SLUG_PATTERN = /^(?:[a-z0-9]+(?:-[a-z0-9]+)*)(?:\/(?:[a-z0-9]+(?:-[a-z0-9]+)*))*$/;
|
|
30404
30404
|
var ALLOWED_URL_PROTOCOLS = ["http:", "https:"];
|
|
30405
|
+
var DATE_PATTERN = /^(?<year>[1-9]\d{3})-(?<month>\d{2})-(?<day>\d{2})$/;
|
|
30406
|
+
var TIME_PATTERN = /^(?<hours>[01]\d|2[0-3]):(?<minutes>[0-5]\d)$/;
|
|
30407
|
+
var DATETIME_PATTERN = /^(?<date>[1-9]\d{3}-\d{2}-\d{2})T(?<time>(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d)(?:\.\d+)?(?<offset>Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/;
|
|
30405
30408
|
function assertNever4(value) {
|
|
30406
30409
|
throw new Error(`Unhandled field validation variant: ${JSON.stringify(value)}`);
|
|
30407
30410
|
}
|
|
@@ -30434,6 +30437,12 @@ function fieldIssueToMessage(issue2) {
|
|
|
30434
30437
|
return "Check the format and try again";
|
|
30435
30438
|
case "invalidUrl":
|
|
30436
30439
|
return "Enter a valid web address";
|
|
30440
|
+
case "invalidDate":
|
|
30441
|
+
return "Choose a valid date";
|
|
30442
|
+
case "invalidTime":
|
|
30443
|
+
return "Choose a valid time";
|
|
30444
|
+
case "invalidDateTime":
|
|
30445
|
+
return "Choose a valid date and time";
|
|
30437
30446
|
case "invalidNumber":
|
|
30438
30447
|
return `${issue2.label} needs a number`;
|
|
30439
30448
|
case "tooSmall":
|
|
@@ -30470,12 +30479,16 @@ function deriveFieldValidationPlan(field, path = [field.id]) {
|
|
|
30470
30479
|
case "text": {
|
|
30471
30480
|
const inputType = field.ui?.inputType;
|
|
30472
30481
|
if (inputType === "number") {
|
|
30473
|
-
const constraints2 = commonConstraints(required, {
|
|
30482
|
+
const constraints2 = commonConstraints(required, {
|
|
30483
|
+
kind: "numberType"
|
|
30484
|
+
});
|
|
30474
30485
|
if (typeof field.ui?.min === "number") constraints2.push({ kind: "numberMin", minimum: field.ui.min });
|
|
30475
30486
|
if (typeof field.ui?.max === "number") constraints2.push({ kind: "numberMax", maximum: field.ui.max });
|
|
30476
30487
|
return makePlan("number", "number", field, path, required, constraints2);
|
|
30477
30488
|
}
|
|
30478
|
-
const constraints = commonConstraints(required, {
|
|
30489
|
+
const constraints = commonConstraints(required, {
|
|
30490
|
+
kind: "textType"
|
|
30491
|
+
});
|
|
30479
30492
|
if (inputType === "email") constraints.push({ kind: "emailFormat" });
|
|
30480
30493
|
if (inputType === "tel") constraints.push({ kind: "phoneFormat" });
|
|
30481
30494
|
if (field.ui?.pattern) constraints.push({ kind: "patternFormat", pattern: field.ui.pattern });
|
|
@@ -30483,7 +30496,9 @@ function deriveFieldValidationPlan(field, path = [field.id]) {
|
|
|
30483
30496
|
return makePlan("string", "string", field, path, required, constraints);
|
|
30484
30497
|
}
|
|
30485
30498
|
case "number": {
|
|
30486
|
-
const constraints = commonConstraints(required, {
|
|
30499
|
+
const constraints = commonConstraints(required, {
|
|
30500
|
+
kind: "numberType"
|
|
30501
|
+
});
|
|
30487
30502
|
if (typeof field.min === "number") constraints.push({ kind: "numberMin", minimum: field.min });
|
|
30488
30503
|
if (typeof field.max === "number") constraints.push({ kind: "numberMax", maximum: field.max });
|
|
30489
30504
|
return makePlan("number", "number", field, path, required, constraints);
|
|
@@ -30494,23 +30509,42 @@ function deriveFieldValidationPlan(field, path = [field.id]) {
|
|
|
30494
30509
|
return makePlan("string", "string", field, path, required, constraints);
|
|
30495
30510
|
}
|
|
30496
30511
|
case "url":
|
|
30497
|
-
return makePlan(
|
|
30512
|
+
return makePlan(
|
|
30513
|
+
"string",
|
|
30514
|
+
"string",
|
|
30515
|
+
field,
|
|
30516
|
+
path,
|
|
30498
30517
|
required,
|
|
30499
|
-
{ kind: "textType" },
|
|
30500
|
-
|
|
30501
|
-
));
|
|
30518
|
+
commonConstraints(required, { kind: "textType" }, { kind: "urlFormat", allowRelative: Boolean(field.allowRelative) })
|
|
30519
|
+
);
|
|
30502
30520
|
case "reference":
|
|
30503
30521
|
return makePlan("string", "string", field, path, required, commonConstraints(required, { kind: "referenceText" }));
|
|
30504
30522
|
case "date":
|
|
30523
|
+
return makePlan("string", "string", field, path, required, commonConstraints(required, { kind: "textType" }, { kind: "dateFormat" }));
|
|
30505
30524
|
case "time":
|
|
30525
|
+
return makePlan("string", "string", field, path, required, commonConstraints(required, { kind: "textType" }, { kind: "timeFormat" }));
|
|
30506
30526
|
case "datetime":
|
|
30507
|
-
return makePlan(
|
|
30527
|
+
return makePlan(
|
|
30528
|
+
"string",
|
|
30529
|
+
"string",
|
|
30530
|
+
field,
|
|
30531
|
+
path,
|
|
30532
|
+
required,
|
|
30533
|
+
commonConstraints(required, { kind: "textType" }, { kind: "datetimeFormat" })
|
|
30534
|
+
);
|
|
30508
30535
|
case "select":
|
|
30509
|
-
return makePlan(
|
|
30510
|
-
|
|
30511
|
-
|
|
30512
|
-
|
|
30513
|
-
|
|
30536
|
+
return makePlan(
|
|
30537
|
+
"select",
|
|
30538
|
+
"select",
|
|
30539
|
+
field,
|
|
30540
|
+
path,
|
|
30541
|
+
required,
|
|
30542
|
+
commonConstraints(required, {
|
|
30543
|
+
kind: "selectOption",
|
|
30544
|
+
source: resolveSelectConstraintSource(field),
|
|
30545
|
+
multiple: Boolean(field.multiple)
|
|
30546
|
+
})
|
|
30547
|
+
);
|
|
30514
30548
|
case "richText":
|
|
30515
30549
|
return makePlan("richText", "object", field, path, required, commonConstraints(required, { kind: "richTextDoc" }));
|
|
30516
30550
|
case "media":
|
|
@@ -30523,7 +30557,11 @@ function deriveFieldValidationPlan(field, path = [field.id]) {
|
|
|
30523
30557
|
case "repeater":
|
|
30524
30558
|
return {
|
|
30525
30559
|
...makePlan("repeater", "array", field, path, required, commonConstraints(required, { kind: "arrayType" })),
|
|
30526
|
-
...field.polymorphic && field.itemTypes ? {
|
|
30560
|
+
...field.polymorphic && field.itemTypes ? {
|
|
30561
|
+
repeatedItemVariants: deriveRepeatedItemVariants(field, [...path, 0])
|
|
30562
|
+
} : {
|
|
30563
|
+
repeatedItemPlan: deriveNestedFieldPlans(getRepeaterFields(field), [...path, 0])
|
|
30564
|
+
},
|
|
30527
30565
|
constraints: withRepeaterItemConstraints(field, commonConstraints(required, { kind: "arrayType" }))
|
|
30528
30566
|
};
|
|
30529
30567
|
case "group":
|
|
@@ -30608,7 +30646,10 @@ function resolveSelectConstraintSource(field) {
|
|
|
30608
30646
|
const source = normalizeSelectSource(field);
|
|
30609
30647
|
switch (source.kind) {
|
|
30610
30648
|
case "static":
|
|
30611
|
-
return {
|
|
30649
|
+
return {
|
|
30650
|
+
kind: "static",
|
|
30651
|
+
values: field.options.map((option) => option.value)
|
|
30652
|
+
};
|
|
30612
30653
|
case "site":
|
|
30613
30654
|
case "sdk":
|
|
30614
30655
|
return { kind: "runtime", source: source.kind };
|
|
@@ -30704,7 +30745,9 @@ function normalizeFieldValue(plan, value, ctx) {
|
|
|
30704
30745
|
}
|
|
30705
30746
|
function normalizeObjectChildren(children, value, ctx) {
|
|
30706
30747
|
if (!value || typeof value !== "object" || Array.isArray(value)) return value;
|
|
30707
|
-
const normalized = {
|
|
30748
|
+
const normalized = {
|
|
30749
|
+
...value
|
|
30750
|
+
};
|
|
30708
30751
|
for (const child of children) {
|
|
30709
30752
|
normalized[child.fieldId] = normalizeFieldValue(child, normalized[child.fieldId], ctx);
|
|
30710
30753
|
}
|
|
@@ -30798,6 +30841,12 @@ function validateStringConstraint(plan, constraint, value) {
|
|
|
30798
30841
|
}
|
|
30799
30842
|
case "urlFormat":
|
|
30800
30843
|
return isValidUrl(value, constraint.allowRelative) ? [] : [issue(plan, "invalidUrl")];
|
|
30844
|
+
case "dateFormat":
|
|
30845
|
+
return isValidDateString(value) ? [] : [issue(plan, "invalidDate")];
|
|
30846
|
+
case "timeFormat":
|
|
30847
|
+
return isValidTimeString(value) ? [] : [issue(plan, "invalidTime")];
|
|
30848
|
+
case "datetimeFormat":
|
|
30849
|
+
return isValidDateTimeInstantString(value) ? [] : [issue(plan, "invalidDateTime")];
|
|
30801
30850
|
case "slugFormat":
|
|
30802
30851
|
return SLUG_PATTERN.test(value) ? [] : [issue(plan, "invalidSlug")];
|
|
30803
30852
|
default:
|
|
@@ -30834,17 +30883,24 @@ function validateRepeaterPlan(plan, value, ctx) {
|
|
|
30834
30883
|
case "arrayType":
|
|
30835
30884
|
return [];
|
|
30836
30885
|
case "minItems":
|
|
30837
|
-
return value.length < constraint.minimum ? [
|
|
30886
|
+
return value.length < constraint.minimum ? [
|
|
30887
|
+
issue(plan, "tooFewItems", {
|
|
30888
|
+
minimum: constraint.minimum,
|
|
30889
|
+
itemLabel: "item"
|
|
30890
|
+
})
|
|
30891
|
+
] : [];
|
|
30838
30892
|
case "maxItems":
|
|
30839
|
-
return value.length > constraint.maximum ? [
|
|
30893
|
+
return value.length > constraint.maximum ? [
|
|
30894
|
+
issue(plan, "tooManyItems", {
|
|
30895
|
+
maximum: constraint.maximum,
|
|
30896
|
+
itemLabel: "item"
|
|
30897
|
+
})
|
|
30898
|
+
] : [];
|
|
30840
30899
|
default:
|
|
30841
30900
|
return assertNever4(constraint);
|
|
30842
30901
|
}
|
|
30843
30902
|
});
|
|
30844
|
-
return [
|
|
30845
|
-
...constraintIssues,
|
|
30846
|
-
...value.flatMap((item, index2) => validateRepeaterItem(plan, item, index2, ctx))
|
|
30847
|
-
];
|
|
30903
|
+
return [...constraintIssues, ...value.flatMap((item, index2) => validateRepeaterItem(plan, item, index2, ctx))];
|
|
30848
30904
|
}
|
|
30849
30905
|
function validateRepeaterItem(plan, item, index2, ctx) {
|
|
30850
30906
|
if (!isPlainObject(item)) return [];
|
|
@@ -30887,9 +30943,7 @@ function rebaseFieldPlanPath(plan, fromPrefix, toPrefix) {
|
|
|
30887
30943
|
}))
|
|
30888
30944
|
} : {},
|
|
30889
30945
|
...plan.repeatedItemPlan ? {
|
|
30890
|
-
repeatedItemPlan: plan.repeatedItemPlan.map(
|
|
30891
|
-
(fieldPlan) => rebaseFieldPlanPath(fieldPlan, fromPrefix, toPrefix)
|
|
30892
|
-
)
|
|
30946
|
+
repeatedItemPlan: plan.repeatedItemPlan.map((fieldPlan) => rebaseFieldPlanPath(fieldPlan, fromPrefix, toPrefix))
|
|
30893
30947
|
} : {}
|
|
30894
30948
|
};
|
|
30895
30949
|
case "string":
|
|
@@ -30976,6 +31030,9 @@ function addFieldIssueToZodContext(zodCtx, validationIssue, rootPath) {
|
|
|
30976
31030
|
case "invalidPhone":
|
|
30977
31031
|
case "invalidPattern":
|
|
30978
31032
|
case "invalidUrl":
|
|
31033
|
+
case "invalidDate":
|
|
31034
|
+
case "invalidTime":
|
|
31035
|
+
case "invalidDateTime":
|
|
30979
31036
|
case "invalidNumber":
|
|
30980
31037
|
case "tooSmall":
|
|
30981
31038
|
case "tooLarge":
|
|
@@ -31072,6 +31129,53 @@ function isValidUrl(value, allowRelative) {
|
|
|
31072
31129
|
return false;
|
|
31073
31130
|
}
|
|
31074
31131
|
}
|
|
31132
|
+
function isValidDateString(value) {
|
|
31133
|
+
const match2 = DATE_PATTERN.exec(value);
|
|
31134
|
+
if (!match2?.groups) return false;
|
|
31135
|
+
const year = Number(match2.groups.year);
|
|
31136
|
+
const month = Number(match2.groups.month);
|
|
31137
|
+
const day = Number(match2.groups.day);
|
|
31138
|
+
return isValidCalendarDate(year, month, day);
|
|
31139
|
+
}
|
|
31140
|
+
function isValidTimeString(value) {
|
|
31141
|
+
return TIME_PATTERN.test(value);
|
|
31142
|
+
}
|
|
31143
|
+
function isValidDateTimeInstantString(value) {
|
|
31144
|
+
const match2 = DATETIME_PATTERN.exec(value);
|
|
31145
|
+
if (!match2?.groups) return false;
|
|
31146
|
+
const datePart = match2.groups.date;
|
|
31147
|
+
if (!datePart || !isValidDateString(datePart)) return false;
|
|
31148
|
+
return !Number.isNaN(Date.parse(value));
|
|
31149
|
+
}
|
|
31150
|
+
function isValidCalendarDate(year, month, day) {
|
|
31151
|
+
if (!Number.isInteger(year) || !Number.isInteger(month) || !Number.isInteger(day)) return false;
|
|
31152
|
+
if (year < 1 || month < 1 || month > 12) return false;
|
|
31153
|
+
return day >= 1 && day <= daysInMonth(year, month);
|
|
31154
|
+
}
|
|
31155
|
+
function daysInMonth(year, month) {
|
|
31156
|
+
switch (month) {
|
|
31157
|
+
case 2:
|
|
31158
|
+
return isLeapYear(year) ? 29 : 28;
|
|
31159
|
+
case 4:
|
|
31160
|
+
case 6:
|
|
31161
|
+
case 9:
|
|
31162
|
+
case 11:
|
|
31163
|
+
return 30;
|
|
31164
|
+
case 1:
|
|
31165
|
+
case 3:
|
|
31166
|
+
case 5:
|
|
31167
|
+
case 7:
|
|
31168
|
+
case 8:
|
|
31169
|
+
case 10:
|
|
31170
|
+
case 12:
|
|
31171
|
+
return 31;
|
|
31172
|
+
default:
|
|
31173
|
+
return 0;
|
|
31174
|
+
}
|
|
31175
|
+
}
|
|
31176
|
+
function isLeapYear(year) {
|
|
31177
|
+
return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
|
31178
|
+
}
|
|
31075
31179
|
function isValidSelectValue(value, values, multiple) {
|
|
31076
31180
|
if (multiple) {
|
|
31077
31181
|
return Array.isArray(value) && value.every((item) => typeof item === "string" && values.includes(item));
|
|
@@ -31708,6 +31812,51 @@ var eyebrowTreatmentValues = [
|
|
|
31708
31812
|
"pill-bounce",
|
|
31709
31813
|
"accent-pill-bounce"
|
|
31710
31814
|
];
|
|
31815
|
+
var visibleHeadingDecorationFamilyValues = [
|
|
31816
|
+
"organic-squiggle",
|
|
31817
|
+
"short-center-rule"
|
|
31818
|
+
];
|
|
31819
|
+
var visibleHeadingDecorationPlacementValues = [
|
|
31820
|
+
"after-heading",
|
|
31821
|
+
"between-heading-and-body",
|
|
31822
|
+
"under-centered-heading"
|
|
31823
|
+
];
|
|
31824
|
+
var headingDecorationOverrideValues = [
|
|
31825
|
+
"site-default",
|
|
31826
|
+
"on",
|
|
31827
|
+
"off"
|
|
31828
|
+
];
|
|
31829
|
+
var headingDecorationColorTokenValues = [
|
|
31830
|
+
"text",
|
|
31831
|
+
"primary",
|
|
31832
|
+
"secondary",
|
|
31833
|
+
"accent",
|
|
31834
|
+
"border",
|
|
31835
|
+
"muted"
|
|
31836
|
+
];
|
|
31837
|
+
var noHeadingDecoration = {
|
|
31838
|
+
family: "none",
|
|
31839
|
+
placement: "none"
|
|
31840
|
+
};
|
|
31841
|
+
var accordionIconSetValues = [
|
|
31842
|
+
"plus",
|
|
31843
|
+
"chevron",
|
|
31844
|
+
"caret",
|
|
31845
|
+
"minimal-cross"
|
|
31846
|
+
];
|
|
31847
|
+
var accordionIconColorTokenValues = [
|
|
31848
|
+
"text",
|
|
31849
|
+
"muted",
|
|
31850
|
+
"primary",
|
|
31851
|
+
"secondary",
|
|
31852
|
+
"accent",
|
|
31853
|
+
"current"
|
|
31854
|
+
];
|
|
31855
|
+
var accordionIconMotionValues = [
|
|
31856
|
+
"none",
|
|
31857
|
+
"rotate",
|
|
31858
|
+
"swap"
|
|
31859
|
+
];
|
|
31711
31860
|
function defineBlockDesignCapability(capability) {
|
|
31712
31861
|
return {
|
|
31713
31862
|
...capability,
|
|
@@ -31717,7 +31866,9 @@ function defineBlockDesignCapability(capability) {
|
|
|
31717
31866
|
imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
|
|
31718
31867
|
testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"],
|
|
31719
31868
|
tileTreatments: capability.tileTreatments ?? ["default"],
|
|
31720
|
-
eyebrowTreatments: capability.eyebrowTreatments ?? ["plain"]
|
|
31869
|
+
eyebrowTreatments: capability.eyebrowTreatments ?? ["plain"],
|
|
31870
|
+
...capability.headingDecorations ? { headingDecorations: capability.headingDecorations } : {},
|
|
31871
|
+
...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
|
|
31721
31872
|
};
|
|
31722
31873
|
}
|
|
31723
31874
|
|
|
@@ -31908,6 +32059,25 @@ function defineBlockDesignCapability(capability) {
|
|
|
31908
32059
|
emphasis: "high"
|
|
31909
32060
|
}
|
|
31910
32061
|
}),
|
|
32062
|
+
defineBlockAppearancePreset({
|
|
32063
|
+
kind: "block-design",
|
|
32064
|
+
id: "intro-soft-earth-statement",
|
|
32065
|
+
target: "intro",
|
|
32066
|
+
label: "Soft Earth intro statement",
|
|
32067
|
+
blockKinds: ["block.intro"],
|
|
32068
|
+
design: {
|
|
32069
|
+
sectionSurface: "base",
|
|
32070
|
+
contentFrame: plainFrame,
|
|
32071
|
+
itemSurface: "none",
|
|
32072
|
+
transitionAfter: "soft-fade-short",
|
|
32073
|
+
emphasis: "high",
|
|
32074
|
+
headingDecoration: {
|
|
32075
|
+
family: "organic-squiggle",
|
|
32076
|
+
placement: "after-heading",
|
|
32077
|
+
colorToken: "primary"
|
|
32078
|
+
}
|
|
32079
|
+
}
|
|
32080
|
+
}),
|
|
31911
32081
|
defineBlockAppearancePreset({
|
|
31912
32082
|
kind: "block-design",
|
|
31913
32083
|
id: "offerings-calm-list",
|
|
@@ -31922,6 +32092,25 @@ function defineBlockDesignCapability(capability) {
|
|
|
31922
32092
|
emphasis: "medium"
|
|
31923
32093
|
}
|
|
31924
32094
|
}),
|
|
32095
|
+
defineBlockAppearancePreset({
|
|
32096
|
+
kind: "block-design",
|
|
32097
|
+
id: "feature-cards-soft-earth-offerings",
|
|
32098
|
+
target: "feature-cards",
|
|
32099
|
+
label: "Soft Earth offering cards",
|
|
32100
|
+
blockKinds: ["block.feature-cards"],
|
|
32101
|
+
design: {
|
|
32102
|
+
sectionSurface: "base",
|
|
32103
|
+
contentFrame: plainFrame,
|
|
32104
|
+
itemSurface: "raised",
|
|
32105
|
+
transitionAfter: "none",
|
|
32106
|
+
emphasis: "high",
|
|
32107
|
+
headingDecoration: {
|
|
32108
|
+
family: "short-center-rule",
|
|
32109
|
+
placement: "under-centered-heading",
|
|
32110
|
+
colorToken: "primary"
|
|
32111
|
+
}
|
|
32112
|
+
}
|
|
32113
|
+
}),
|
|
31925
32114
|
defineBlockAppearancePreset({
|
|
31926
32115
|
kind: "block-design",
|
|
31927
32116
|
id: "events-base-calendar",
|
|
@@ -32050,6 +32239,26 @@ function defineBlockDesignCapability(capability) {
|
|
|
32050
32239
|
testimonialCardTreatment: "accent-quote"
|
|
32051
32240
|
}
|
|
32052
32241
|
}),
|
|
32242
|
+
defineBlockAppearancePreset({
|
|
32243
|
+
kind: "block-design",
|
|
32244
|
+
id: "testimonials-soft-earth-proof-band",
|
|
32245
|
+
target: "testimonials",
|
|
32246
|
+
label: "Soft Earth proof band",
|
|
32247
|
+
blockKinds: ["block.testimonials"],
|
|
32248
|
+
design: {
|
|
32249
|
+
sectionSurface: "brand-depth-band",
|
|
32250
|
+
contentFrame: plainFrame,
|
|
32251
|
+
itemSurface: "none",
|
|
32252
|
+
transitionAfter: "soft-fade-short",
|
|
32253
|
+
emphasis: "high",
|
|
32254
|
+
testimonialCardTreatment: "accent-quote",
|
|
32255
|
+
headingDecoration: {
|
|
32256
|
+
family: "short-center-rule",
|
|
32257
|
+
placement: "under-centered-heading",
|
|
32258
|
+
colorToken: "border"
|
|
32259
|
+
}
|
|
32260
|
+
}
|
|
32261
|
+
}),
|
|
32053
32262
|
defineBlockAppearancePreset({
|
|
32054
32263
|
kind: "block-design",
|
|
32055
32264
|
id: "faq-base-accordion",
|
|
@@ -32078,6 +32287,25 @@ function defineBlockDesignCapability(capability) {
|
|
|
32078
32287
|
emphasis: "low"
|
|
32079
32288
|
}
|
|
32080
32289
|
}),
|
|
32290
|
+
defineBlockAppearancePreset({
|
|
32291
|
+
kind: "block-design",
|
|
32292
|
+
id: "faq-soft-earth-two-column",
|
|
32293
|
+
target: "faq",
|
|
32294
|
+
label: "Soft Earth two-column FAQ",
|
|
32295
|
+
blockKinds: ["block.faq"],
|
|
32296
|
+
design: {
|
|
32297
|
+
sectionSurface: "base",
|
|
32298
|
+
contentFrame: plainFrame,
|
|
32299
|
+
itemSurface: "flat",
|
|
32300
|
+
transitionAfter: "none",
|
|
32301
|
+
emphasis: "medium",
|
|
32302
|
+
accordionIconTreatment: {
|
|
32303
|
+
iconSet: "plus",
|
|
32304
|
+
colorToken: "primary",
|
|
32305
|
+
motion: "swap"
|
|
32306
|
+
}
|
|
32307
|
+
}
|
|
32308
|
+
}),
|
|
32081
32309
|
defineBlockAppearancePreset({
|
|
32082
32310
|
kind: "block-design",
|
|
32083
32311
|
id: "contact-form-panel",
|
|
@@ -32753,6 +32981,97 @@ var confidentChip = defineButtonPersonality({
|
|
|
32753
32981
|
}
|
|
32754
32982
|
});
|
|
32755
32983
|
|
|
32984
|
+
// ../theme-core/src/buttons/personalities/earth-pill.ts
|
|
32985
|
+
var earthPill = defineButtonPersonality({
|
|
32986
|
+
id: "earth-pill",
|
|
32987
|
+
name: "Earth Pill",
|
|
32988
|
+
description: "Compact terracotta pills with quiet primary-coloured ghost CTAs.",
|
|
32989
|
+
tags: { tone: "classic", energy: "calm", motion: "subtle", era: "organic" },
|
|
32990
|
+
buttonSystem: {
|
|
32991
|
+
global: {
|
|
32992
|
+
cornerStyle: "pill",
|
|
32993
|
+
shadow: "low",
|
|
32994
|
+
textTransform: "none",
|
|
32995
|
+
fontWeight: 500,
|
|
32996
|
+
borderWidth: 1,
|
|
32997
|
+
hoverTransform: "lift",
|
|
32998
|
+
hoverColor: "none",
|
|
32999
|
+
typography: "body",
|
|
33000
|
+
paddingPreset: "default"
|
|
33001
|
+
},
|
|
33002
|
+
sizes: {
|
|
33003
|
+
sm: { padding: "0.5rem 1rem", fontSize: "text-sm" },
|
|
33004
|
+
md: { padding: "0.625rem 1.35rem" },
|
|
33005
|
+
lg: { padding: "0.75rem 1.65rem", fontSize: "text-lg" },
|
|
33006
|
+
xl: { padding: "0.875rem 2rem", fontSize: "text-xl" }
|
|
33007
|
+
},
|
|
33008
|
+
variants: [
|
|
33009
|
+
{
|
|
33010
|
+
id: "primary",
|
|
33011
|
+
name: "Primary",
|
|
33012
|
+
enabled: true,
|
|
33013
|
+
priority: 1,
|
|
33014
|
+
background: { type: "solid", colorToken: "primary" },
|
|
33015
|
+
textColorToken: "primaryForeground",
|
|
33016
|
+
borderRadius: "rounded-full",
|
|
33017
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
33018
|
+
effects: {
|
|
33019
|
+
hover: [
|
|
33020
|
+
{ effectId: "lift", options: { translateY: "-1px" } },
|
|
33021
|
+
{ effectId: "background-on-hover", options: { colorToken: "accent" } }
|
|
33022
|
+
],
|
|
33023
|
+
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
33024
|
+
}
|
|
33025
|
+
},
|
|
33026
|
+
{
|
|
33027
|
+
id: "secondary",
|
|
33028
|
+
name: "Secondary",
|
|
33029
|
+
enabled: true,
|
|
33030
|
+
priority: 2,
|
|
33031
|
+
background: { type: "transparent" },
|
|
33032
|
+
textColorToken: "primary",
|
|
33033
|
+
borderRadius: "rounded-full",
|
|
33034
|
+
border: { widthClass: "border", colorToken: "primary" },
|
|
33035
|
+
effects: {
|
|
33036
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "muted" } }]
|
|
33037
|
+
}
|
|
33038
|
+
},
|
|
33039
|
+
{
|
|
33040
|
+
id: "outline",
|
|
33041
|
+
name: "Outline",
|
|
33042
|
+
enabled: true,
|
|
33043
|
+
priority: 3,
|
|
33044
|
+
background: { type: "transparent" },
|
|
33045
|
+
textColorToken: "text",
|
|
33046
|
+
borderRadius: "rounded-full",
|
|
33047
|
+
border: { widthClass: "border", colorToken: "border" },
|
|
33048
|
+
effects: {
|
|
33049
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surfaceAlt" } }]
|
|
33050
|
+
}
|
|
33051
|
+
},
|
|
33052
|
+
{
|
|
33053
|
+
id: "ghost",
|
|
33054
|
+
name: "Ghost",
|
|
33055
|
+
enabled: true,
|
|
33056
|
+
priority: 3,
|
|
33057
|
+
background: { type: "transparent" },
|
|
33058
|
+
textColorToken: "primary",
|
|
33059
|
+
borderRadius: "rounded-full",
|
|
33060
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
33061
|
+
sizes: {
|
|
33062
|
+
sm: { padding: "0.25rem 0", fontSize: "text-sm" },
|
|
33063
|
+
md: { padding: "0.375rem 0" },
|
|
33064
|
+
lg: { padding: "0.5rem 0", fontSize: "text-lg" },
|
|
33065
|
+
xl: { padding: "0.625rem 0", fontSize: "text-xl" }
|
|
33066
|
+
},
|
|
33067
|
+
effects: {
|
|
33068
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: 25 } }]
|
|
33069
|
+
}
|
|
33070
|
+
}
|
|
33071
|
+
]
|
|
33072
|
+
}
|
|
33073
|
+
});
|
|
33074
|
+
|
|
32756
33075
|
// ../theme-core/src/buttons/personalities/editorial-link.ts
|
|
32757
33076
|
var editorialLink = defineButtonPersonality({
|
|
32758
33077
|
id: "editorial-link",
|
|
@@ -33211,6 +33530,7 @@ var softPill = defineButtonPersonality({
|
|
|
33211
33530
|
// ../theme-core/src/buttons/personalities/index.ts
|
|
33212
33531
|
var buttonPersonalities = [
|
|
33213
33532
|
softPill,
|
|
33533
|
+
earthPill,
|
|
33214
33534
|
confidentChip,
|
|
33215
33535
|
editorialLink,
|
|
33216
33536
|
pebble,
|
|
@@ -35923,12 +36243,36 @@ var boxBackgroundSchema = z.object({
|
|
|
35923
36243
|
textColor: tokenOrCssColorValueSchema.nullable().optional(),
|
|
35924
36244
|
headingColor: tokenOrCssColorValueSchema.nullable().optional()
|
|
35925
36245
|
});
|
|
36246
|
+
var noHeadingDecorationSchema = z.object({
|
|
36247
|
+
family: z.literal("none"),
|
|
36248
|
+
placement: z.literal("none")
|
|
36249
|
+
});
|
|
36250
|
+
var visibleHeadingDecorationSchema = z.object({
|
|
36251
|
+
family: z.enum(visibleHeadingDecorationFamilyValues),
|
|
36252
|
+
placement: z.enum(visibleHeadingDecorationPlacementValues),
|
|
36253
|
+
colorToken: z.enum(headingDecorationColorTokenValues).optional()
|
|
36254
|
+
});
|
|
36255
|
+
var headingDecorationSchema = z.union([
|
|
36256
|
+
noHeadingDecorationSchema,
|
|
36257
|
+
visibleHeadingDecorationSchema
|
|
36258
|
+
]);
|
|
36259
|
+
var accordionIconTreatmentSchema = z.object({
|
|
36260
|
+
iconSet: z.enum(accordionIconSetValues),
|
|
36261
|
+
colorToken: z.enum(accordionIconColorTokenValues),
|
|
36262
|
+
openColorToken: z.enum(accordionIconColorTokenValues).optional(),
|
|
36263
|
+
motion: z.enum(accordionIconMotionValues)
|
|
36264
|
+
});
|
|
35926
36265
|
var sectionStylesOverrideSchema = z.object({
|
|
35927
36266
|
background: boxBackgroundSchema.nullable().optional(),
|
|
35928
36267
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
35929
36268
|
minHeight: z.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
|
|
35930
36269
|
tileTreatment: z.enum(tileTreatmentValues).nullable().optional(),
|
|
35931
|
-
eyebrowTreatment: z.enum(eyebrowTreatmentValues).nullable().optional()
|
|
36270
|
+
eyebrowTreatment: z.enum(eyebrowTreatmentValues).nullable().optional(),
|
|
36271
|
+
headingDecoration: headingDecorationSchema.nullable().optional(),
|
|
36272
|
+
// Author-level override consumed by later block/editor rendering phases.
|
|
36273
|
+
// Keeping it in section styles lets existing block save APIs persist it.
|
|
36274
|
+
headingDecorationOverride: z.enum(headingDecorationOverrideValues).nullable().optional(),
|
|
36275
|
+
accordionIconTreatment: accordionIconTreatmentSchema.nullable().optional()
|
|
35932
36276
|
});
|
|
35933
36277
|
var containerStylesOverrideSchema = z.object({
|
|
35934
36278
|
background: boxBackgroundSchema.nullable().optional(),
|
|
@@ -36636,6 +36980,28 @@ var warmNeutralCream = definePaletteVariant({
|
|
|
36636
36980
|
{ name: "border", hex: "#e0d2b8" }
|
|
36637
36981
|
]
|
|
36638
36982
|
});
|
|
36983
|
+
var warmNeutralSoftEarth = definePaletteVariant({
|
|
36984
|
+
id: "warm-neutral-soft-earth",
|
|
36985
|
+
name: "Warm Neutral \u2014 Soft Earth",
|
|
36986
|
+
description: "Cream ground with terracotta primary, clay accents, and olive depth.",
|
|
36987
|
+
tags: { tone: "classic", energy: "calm", era: "organic" },
|
|
36988
|
+
mode: "light",
|
|
36989
|
+
colors: [
|
|
36990
|
+
{ name: "primary", hex: "#a8573d" },
|
|
36991
|
+
{ name: "secondary", hex: "#72765c" },
|
|
36992
|
+
{ name: "accent", hex: "#c87557" },
|
|
36993
|
+
{ name: "success", hex: "#687854" },
|
|
36994
|
+
{ name: "warning", hex: "#b7863e" },
|
|
36995
|
+
{ name: "destructive", hex: "#a54b3c" },
|
|
36996
|
+
{ name: "background", hex: "#fbf6eb" },
|
|
36997
|
+
{ name: "surface", hex: "#fffdf7" },
|
|
36998
|
+
{ name: "surfaceAlt", hex: "#f0e4d3" },
|
|
36999
|
+
{ name: "muted", hex: "#eadbc6" },
|
|
37000
|
+
{ name: "text", hex: "#30281f" },
|
|
37001
|
+
{ name: "primaryForeground", hex: "#fffaf3" },
|
|
37002
|
+
{ name: "border", hex: "#d9c8b2" }
|
|
37003
|
+
]
|
|
37004
|
+
});
|
|
36639
37005
|
var warmNeutralForest = definePaletteVariant({
|
|
36640
37006
|
id: "warm-neutral-forest",
|
|
36641
37007
|
name: "Warm Neutral \u2014 Forest",
|
|
@@ -36669,6 +37035,7 @@ var paletteVariants = [
|
|
|
36669
37035
|
// Warm-neutral family
|
|
36670
37036
|
warmNeutralClay,
|
|
36671
37037
|
warmNeutralCream,
|
|
37038
|
+
warmNeutralSoftEarth,
|
|
36672
37039
|
warmNeutralForest,
|
|
36673
37040
|
// High-contrast family
|
|
36674
37041
|
highContrastInk,
|
|
@@ -36784,6 +37151,12 @@ function writePlanForLookCustomizationCommand(command2) {
|
|
|
36784
37151
|
function asHeaderLookId(value) {
|
|
36785
37152
|
return value;
|
|
36786
37153
|
}
|
|
37154
|
+
function asHeaderLayoutId(value) {
|
|
37155
|
+
return value;
|
|
37156
|
+
}
|
|
37157
|
+
function asHeaderStyleId(value) {
|
|
37158
|
+
return value;
|
|
37159
|
+
}
|
|
36787
37160
|
var defaultHeaderSelectionContext = {
|
|
36788
37161
|
openingSection: {
|
|
36789
37162
|
kind: "unknown",
|
|
@@ -36799,8 +37172,7 @@ var defaultHeaderSelectionContext = {
|
|
|
36799
37172
|
importance: "medium"
|
|
36800
37173
|
},
|
|
36801
37174
|
banner: {
|
|
36802
|
-
persistentVisibility: "possible"
|
|
36803
|
-
shellCanOffsetOverlayHeader: false
|
|
37175
|
+
persistentVisibility: "possible"
|
|
36804
37176
|
}
|
|
36805
37177
|
};
|
|
36806
37178
|
function mergeHeaderSelectionContext(context) {
|
|
@@ -36824,6 +37196,737 @@ function baseHeader(theme) {
|
|
|
36824
37196
|
navContainer: { type: "none", tint: null, opacity: 0.15 }
|
|
36825
37197
|
};
|
|
36826
37198
|
}
|
|
37199
|
+
var headerLayoutCatalog = [
|
|
37200
|
+
{
|
|
37201
|
+
id: asHeaderLayoutId("classic"),
|
|
37202
|
+
label: "Classic",
|
|
37203
|
+
description: "Logo and navigation in one practical horizontal row.",
|
|
37204
|
+
structure: "inline-classic",
|
|
37205
|
+
variant: "classic",
|
|
37206
|
+
defaultPositioning: "sticky",
|
|
37207
|
+
shrinkOnScroll: false
|
|
37208
|
+
},
|
|
37209
|
+
{
|
|
37210
|
+
id: asHeaderLayoutId("centered"),
|
|
37211
|
+
label: "Centered",
|
|
37212
|
+
description: "Logo centered above a balanced navigation row.",
|
|
37213
|
+
structure: "centered-stack",
|
|
37214
|
+
variant: "centered",
|
|
37215
|
+
defaultPositioning: "static",
|
|
37216
|
+
shrinkOnScroll: false,
|
|
37217
|
+
maxRecommendedNavItems: 5,
|
|
37218
|
+
allowedLogoShapes: ["none", "text-only", "horizontal", "square"]
|
|
37219
|
+
},
|
|
37220
|
+
{
|
|
37221
|
+
id: asHeaderLayoutId("editorial"),
|
|
37222
|
+
label: "Editorial",
|
|
37223
|
+
description: "A composed, magazine-like stacked header treatment.",
|
|
37224
|
+
structure: "editorial-stack",
|
|
37225
|
+
variant: "editorial",
|
|
37226
|
+
defaultPositioning: "static",
|
|
37227
|
+
shrinkOnScroll: false,
|
|
37228
|
+
maxRecommendedNavItems: 6
|
|
37229
|
+
},
|
|
37230
|
+
{
|
|
37231
|
+
id: asHeaderLayoutId("floating"),
|
|
37232
|
+
label: "Floating",
|
|
37233
|
+
description: "Detached header chrome that sits over the opening section.",
|
|
37234
|
+
structure: "floating-shell",
|
|
37235
|
+
variant: "floating",
|
|
37236
|
+
defaultPositioning: "fixed",
|
|
37237
|
+
shrinkOnScroll: true,
|
|
37238
|
+
maxRecommendedNavItems: 5,
|
|
37239
|
+
allowedLogoShapes: ["none", "text-only", "horizontal"]
|
|
37240
|
+
}
|
|
37241
|
+
];
|
|
37242
|
+
function supportedLayouts(ids2) {
|
|
37243
|
+
return ids2.map(asHeaderLayoutId);
|
|
37244
|
+
}
|
|
37245
|
+
var headerStyleCatalog = [
|
|
37246
|
+
{
|
|
37247
|
+
id: asHeaderStyleId("minimal"),
|
|
37248
|
+
label: "Minimal",
|
|
37249
|
+
description: "Quiet surface with simple color-change navigation.",
|
|
37250
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
|
|
37251
|
+
navInteraction: "color-change",
|
|
37252
|
+
surface: "neutral"
|
|
37253
|
+
},
|
|
37254
|
+
{
|
|
37255
|
+
id: asHeaderStyleId("fine-line"),
|
|
37256
|
+
label: "Fine Line",
|
|
37257
|
+
description: "Light surface with a crisp lower rule and underline hover.",
|
|
37258
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
|
|
37259
|
+
navInteraction: "underline-grow",
|
|
37260
|
+
surface: "bordered"
|
|
37261
|
+
},
|
|
37262
|
+
{
|
|
37263
|
+
id: asHeaderStyleId("soft-bar"),
|
|
37264
|
+
label: "Soft Bar",
|
|
37265
|
+
description: "Soft tinted surface with gentle pill hover states.",
|
|
37266
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
37267
|
+
navInteraction: "pill-background",
|
|
37268
|
+
surface: "soft"
|
|
37269
|
+
},
|
|
37270
|
+
{
|
|
37271
|
+
id: asHeaderStyleId("pill-nav"),
|
|
37272
|
+
label: "Pill Nav",
|
|
37273
|
+
description: "A calm pill navigation rail over a neutral header.",
|
|
37274
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
37275
|
+
navInteraction: "pill-background",
|
|
37276
|
+
surface: "soft"
|
|
37277
|
+
},
|
|
37278
|
+
{
|
|
37279
|
+
id: asHeaderStyleId("brand-bar"),
|
|
37280
|
+
label: "Brand Bar",
|
|
37281
|
+
description: "Solid brand surface with high-contrast navigation.",
|
|
37282
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
|
|
37283
|
+
navInteraction: "color-change",
|
|
37284
|
+
surface: "brand-solid"
|
|
37285
|
+
},
|
|
37286
|
+
{
|
|
37287
|
+
id: asHeaderStyleId("brand-underline"),
|
|
37288
|
+
label: "Brand Underline",
|
|
37289
|
+
description: "Brand surface with underline-grow navigation.",
|
|
37290
|
+
supportedLayoutIds: supportedLayouts(["classic", "editorial"]),
|
|
37291
|
+
navInteraction: "underline-grow",
|
|
37292
|
+
surface: "brand-solid"
|
|
37293
|
+
},
|
|
37294
|
+
{
|
|
37295
|
+
id: asHeaderStyleId("brand-pill"),
|
|
37296
|
+
label: "Brand Pill",
|
|
37297
|
+
description: "Solid brand surface with rounded active and hover states.",
|
|
37298
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered", "floating"]),
|
|
37299
|
+
navInteraction: "pill-background",
|
|
37300
|
+
surface: "brand-solid"
|
|
37301
|
+
},
|
|
37302
|
+
{
|
|
37303
|
+
id: asHeaderStyleId("editorial-line"),
|
|
37304
|
+
label: "Editorial Line",
|
|
37305
|
+
description: "Typographic logo treatment with understated underline navigation.",
|
|
37306
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
|
|
37307
|
+
navInteraction: "underline-grow",
|
|
37308
|
+
surface: "bordered"
|
|
37309
|
+
},
|
|
37310
|
+
{
|
|
37311
|
+
id: asHeaderStyleId("flat-tabs"),
|
|
37312
|
+
label: "Flat Tabs",
|
|
37313
|
+
description: "Flat block hover and active states with a Swiss utility feel.",
|
|
37314
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
|
|
37315
|
+
navInteraction: "flat-block",
|
|
37316
|
+
surface: "bordered"
|
|
37317
|
+
},
|
|
37318
|
+
{
|
|
37319
|
+
id: asHeaderStyleId("glass"),
|
|
37320
|
+
label: "Glass",
|
|
37321
|
+
description: "Floating translucent chrome with frosted navigation backing.",
|
|
37322
|
+
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
37323
|
+
navInteraction: "glass-backed",
|
|
37324
|
+
surface: "floating",
|
|
37325
|
+
requiresFloatingLayout: true
|
|
37326
|
+
},
|
|
37327
|
+
{
|
|
37328
|
+
id: asHeaderStyleId("minimal-surface"),
|
|
37329
|
+
label: "Minimal Surface",
|
|
37330
|
+
description: "Floating chrome with a restrained translucent surface.",
|
|
37331
|
+
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
37332
|
+
navInteraction: "color-change",
|
|
37333
|
+
surface: "floating",
|
|
37334
|
+
requiresFloatingLayout: true
|
|
37335
|
+
},
|
|
37336
|
+
{
|
|
37337
|
+
id: asHeaderStyleId("soft-shell"),
|
|
37338
|
+
label: "Soft Shell",
|
|
37339
|
+
description: "Floating rounded shell with soft pill navigation states.",
|
|
37340
|
+
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
37341
|
+
navInteraction: "pill-background",
|
|
37342
|
+
surface: "floating",
|
|
37343
|
+
requiresFloatingLayout: true
|
|
37344
|
+
}
|
|
37345
|
+
];
|
|
37346
|
+
var headerLayoutsById = new Map(
|
|
37347
|
+
headerLayoutCatalog.map((layout) => [layout.id, layout])
|
|
37348
|
+
);
|
|
37349
|
+
var headerStylesById = new Map(
|
|
37350
|
+
headerStyleCatalog.map((style2) => [style2.id, style2])
|
|
37351
|
+
);
|
|
37352
|
+
var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
|
|
37353
|
+
[
|
|
37354
|
+
asHeaderLayoutId("classic"),
|
|
37355
|
+
headerStyleRepairChain([
|
|
37356
|
+
"minimal",
|
|
37357
|
+
"fine-line",
|
|
37358
|
+
"soft-bar",
|
|
37359
|
+
"pill-nav",
|
|
37360
|
+
"brand-bar",
|
|
37361
|
+
"brand-underline",
|
|
37362
|
+
"brand-pill",
|
|
37363
|
+
"editorial-line",
|
|
37364
|
+
"flat-tabs"
|
|
37365
|
+
])
|
|
37366
|
+
],
|
|
37367
|
+
[
|
|
37368
|
+
asHeaderLayoutId("centered"),
|
|
37369
|
+
headerStyleRepairChain([
|
|
37370
|
+
"minimal",
|
|
37371
|
+
"fine-line",
|
|
37372
|
+
"soft-bar",
|
|
37373
|
+
"pill-nav",
|
|
37374
|
+
"brand-bar",
|
|
37375
|
+
"brand-pill",
|
|
37376
|
+
"editorial-line",
|
|
37377
|
+
"flat-tabs"
|
|
37378
|
+
])
|
|
37379
|
+
],
|
|
37380
|
+
[
|
|
37381
|
+
asHeaderLayoutId("editorial"),
|
|
37382
|
+
headerStyleRepairChain([
|
|
37383
|
+
"minimal",
|
|
37384
|
+
"fine-line",
|
|
37385
|
+
"soft-bar",
|
|
37386
|
+
"brand-bar",
|
|
37387
|
+
"brand-underline",
|
|
37388
|
+
"editorial-line",
|
|
37389
|
+
"flat-tabs"
|
|
37390
|
+
])
|
|
37391
|
+
],
|
|
37392
|
+
[
|
|
37393
|
+
asHeaderLayoutId("floating"),
|
|
37394
|
+
headerStyleRepairChain([
|
|
37395
|
+
"glass",
|
|
37396
|
+
"minimal-surface",
|
|
37397
|
+
"soft-shell",
|
|
37398
|
+
"brand-pill"
|
|
37399
|
+
])
|
|
37400
|
+
]
|
|
37401
|
+
]);
|
|
37402
|
+
function headerStyleRepairChain(values) {
|
|
37403
|
+
return values.map(asHeaderStyleId);
|
|
37404
|
+
}
|
|
37405
|
+
var headerStyleRepairOrder = /* @__PURE__ */ new Map([
|
|
37406
|
+
[asHeaderStyleId("brand-bar"), headerStyleRepairChain(["brand-bar", "brand-pill", "minimal"])],
|
|
37407
|
+
[asHeaderStyleId("brand-underline"), headerStyleRepairChain(["editorial-line", "fine-line", "minimal"])],
|
|
37408
|
+
[asHeaderStyleId("brand-pill"), headerStyleRepairChain(["brand-pill", "brand-bar", "minimal"])],
|
|
37409
|
+
[asHeaderStyleId("pill-nav"), headerStyleRepairChain(["pill-nav", "soft-bar", "minimal"])],
|
|
37410
|
+
[asHeaderStyleId("flat-tabs"), headerStyleRepairChain(["flat-tabs", "pill-nav", "minimal"])],
|
|
37411
|
+
[asHeaderStyleId("editorial-line"), headerStyleRepairChain(["editorial-line", "fine-line", "minimal"])],
|
|
37412
|
+
[asHeaderStyleId("glass"), headerStyleRepairChain(["glass", "minimal-surface", "minimal"])],
|
|
37413
|
+
[asHeaderStyleId("soft-shell"), headerStyleRepairChain(["soft-shell", "soft-bar", "minimal"])],
|
|
37414
|
+
[asHeaderStyleId("minimal-surface"), headerStyleRepairChain(["minimal-surface", "minimal"])],
|
|
37415
|
+
[asHeaderStyleId("fine-line"), headerStyleRepairChain(["fine-line", "minimal"])],
|
|
37416
|
+
[asHeaderStyleId("soft-bar"), headerStyleRepairChain(["soft-bar", "minimal"])],
|
|
37417
|
+
[asHeaderStyleId("minimal"), headerStyleRepairChain(["minimal"])]
|
|
37418
|
+
]);
|
|
37419
|
+
var legacyHeaderLookAliases = [
|
|
37420
|
+
{
|
|
37421
|
+
lookId: asHeaderLookId("clean-base"),
|
|
37422
|
+
selection: {
|
|
37423
|
+
layoutId: asHeaderLayoutId("classic"),
|
|
37424
|
+
styleId: asHeaderStyleId("minimal")
|
|
37425
|
+
}
|
|
37426
|
+
},
|
|
37427
|
+
{
|
|
37428
|
+
lookId: asHeaderLookId("brand-solid"),
|
|
37429
|
+
selection: {
|
|
37430
|
+
layoutId: asHeaderLayoutId("classic"),
|
|
37431
|
+
styleId: asHeaderStyleId("brand-bar")
|
|
37432
|
+
}
|
|
37433
|
+
},
|
|
37434
|
+
{
|
|
37435
|
+
lookId: asHeaderLookId("editorial-line"),
|
|
37436
|
+
selection: {
|
|
37437
|
+
layoutId: asHeaderLayoutId("editorial"),
|
|
37438
|
+
styleId: asHeaderStyleId("editorial-line")
|
|
37439
|
+
}
|
|
37440
|
+
},
|
|
37441
|
+
{
|
|
37442
|
+
lookId: asHeaderLookId("centered-calm"),
|
|
37443
|
+
selection: {
|
|
37444
|
+
layoutId: asHeaderLayoutId("centered"),
|
|
37445
|
+
styleId: asHeaderStyleId("minimal")
|
|
37446
|
+
}
|
|
37447
|
+
},
|
|
37448
|
+
{
|
|
37449
|
+
lookId: asHeaderLookId("practical-utility"),
|
|
37450
|
+
selection: {
|
|
37451
|
+
layoutId: asHeaderLayoutId("classic"),
|
|
37452
|
+
styleId: asHeaderStyleId("flat-tabs")
|
|
37453
|
+
}
|
|
37454
|
+
},
|
|
37455
|
+
{
|
|
37456
|
+
lookId: asHeaderLookId("minimal-transparent"),
|
|
37457
|
+
selection: {
|
|
37458
|
+
layoutId: asHeaderLayoutId("classic"),
|
|
37459
|
+
styleId: asHeaderStyleId("minimal")
|
|
37460
|
+
}
|
|
37461
|
+
},
|
|
37462
|
+
{
|
|
37463
|
+
lookId: asHeaderLookId("transparent-overlay"),
|
|
37464
|
+
selection: {
|
|
37465
|
+
layoutId: asHeaderLayoutId("floating"),
|
|
37466
|
+
styleId: asHeaderStyleId("glass")
|
|
37467
|
+
}
|
|
37468
|
+
},
|
|
37469
|
+
{
|
|
37470
|
+
lookId: asHeaderLookId("floating-glass"),
|
|
37471
|
+
selection: {
|
|
37472
|
+
layoutId: asHeaderLayoutId("floating"),
|
|
37473
|
+
styleId: asHeaderStyleId("glass")
|
|
37474
|
+
}
|
|
37475
|
+
}
|
|
37476
|
+
];
|
|
37477
|
+
var legacyHeaderLookAliasesById = new Map(
|
|
37478
|
+
legacyHeaderLookAliases.map((alias) => [alias.lookId, alias])
|
|
37479
|
+
);
|
|
37480
|
+
function getHeaderLayout(id) {
|
|
37481
|
+
return headerLayoutsById.get(id) ?? null;
|
|
37482
|
+
}
|
|
37483
|
+
function getHeaderStyle(id) {
|
|
37484
|
+
return headerStylesById.get(id) ?? null;
|
|
37485
|
+
}
|
|
37486
|
+
function isHeaderStyleCompatibleWithLayout(style2, layoutId) {
|
|
37487
|
+
return style2.supportedLayoutIds.includes(layoutId);
|
|
37488
|
+
}
|
|
37489
|
+
function getHeaderLayoutOrThrow(id) {
|
|
37490
|
+
const layout = getHeaderLayout(id);
|
|
37491
|
+
if (!layout) {
|
|
37492
|
+
throw new Error(`Unknown Theme V2 header layout: ${id}`);
|
|
37493
|
+
}
|
|
37494
|
+
return layout;
|
|
37495
|
+
}
|
|
37496
|
+
function getHeaderStyleOrThrow(id) {
|
|
37497
|
+
const style2 = getHeaderStyle(id);
|
|
37498
|
+
if (!style2) {
|
|
37499
|
+
throw new Error(`Unknown Theme V2 header style: ${id}`);
|
|
37500
|
+
}
|
|
37501
|
+
return style2;
|
|
37502
|
+
}
|
|
37503
|
+
function resolveLegacyHeaderLookAlias(lookId) {
|
|
37504
|
+
return legacyHeaderLookAliasesById.get(lookId)?.selection ?? null;
|
|
37505
|
+
}
|
|
37506
|
+
function findLegacyHeaderLookIdForSelection(selection) {
|
|
37507
|
+
return legacyHeaderLookAliases.find(
|
|
37508
|
+
(alias) => alias.selection.layoutId === selection.layoutId && alias.selection.styleId === selection.styleId
|
|
37509
|
+
)?.lookId ?? null;
|
|
37510
|
+
}
|
|
37511
|
+
function getCompatibleHeaderStyleIds(layoutId) {
|
|
37512
|
+
return (headerStyleCompatibilityOrder.get(layoutId) ?? []).filter((styleId) => {
|
|
37513
|
+
const style2 = getHeaderStyleOrThrow(styleId);
|
|
37514
|
+
return isHeaderStyleCompatibleWithLayout(style2, layoutId);
|
|
37515
|
+
});
|
|
37516
|
+
}
|
|
37517
|
+
function deriveNearestCompatibleHeaderStyle(styleId, layoutId) {
|
|
37518
|
+
const requestedStyle = getHeaderStyleOrThrow(styleId);
|
|
37519
|
+
if (isHeaderStyleCompatibleWithLayout(requestedStyle, layoutId)) {
|
|
37520
|
+
return requestedStyle.id;
|
|
37521
|
+
}
|
|
37522
|
+
for (const candidateStyleId of headerStyleRepairOrder.get(styleId) ?? []) {
|
|
37523
|
+
const candidate = getHeaderStyleOrThrow(candidateStyleId);
|
|
37524
|
+
if (isHeaderStyleCompatibleWithLayout(candidate, layoutId)) {
|
|
37525
|
+
return candidate.id;
|
|
37526
|
+
}
|
|
37527
|
+
}
|
|
37528
|
+
const fallback2 = getCompatibleHeaderStyleIds(layoutId)[0];
|
|
37529
|
+
if (!fallback2) {
|
|
37530
|
+
throw new Error(`No header styles are compatible with layout: ${layoutId}`);
|
|
37531
|
+
}
|
|
37532
|
+
return fallback2;
|
|
37533
|
+
}
|
|
37534
|
+
function resolveHeaderLayoutStyleSelection(selection) {
|
|
37535
|
+
const layout = getHeaderLayoutOrThrow(selection.layoutId);
|
|
37536
|
+
const style2 = getHeaderStyleOrThrow(selection.styleId);
|
|
37537
|
+
if (isHeaderStyleCompatibleWithLayout(style2, layout.id)) {
|
|
37538
|
+
return {
|
|
37539
|
+
kind: "valid",
|
|
37540
|
+
selection,
|
|
37541
|
+
layout,
|
|
37542
|
+
style: style2
|
|
37543
|
+
};
|
|
37544
|
+
}
|
|
37545
|
+
const resolvedStyleId = deriveNearestCompatibleHeaderStyle(style2.id, layout.id);
|
|
37546
|
+
const resolvedStyle = getHeaderStyleOrThrow(resolvedStyleId);
|
|
37547
|
+
const resolvedSelection = {
|
|
37548
|
+
layoutId: layout.id,
|
|
37549
|
+
styleId: resolvedStyle.id
|
|
37550
|
+
};
|
|
37551
|
+
return {
|
|
37552
|
+
kind: "repaired",
|
|
37553
|
+
selection: resolvedSelection,
|
|
37554
|
+
layout,
|
|
37555
|
+
style: resolvedStyle,
|
|
37556
|
+
repair: {
|
|
37557
|
+
requested: selection,
|
|
37558
|
+
resolved: resolvedSelection,
|
|
37559
|
+
reason: "style-incompatible-with-layout"
|
|
37560
|
+
}
|
|
37561
|
+
};
|
|
37562
|
+
}
|
|
37563
|
+
function headerForLayout(theme, layout) {
|
|
37564
|
+
return {
|
|
37565
|
+
...baseHeader(theme),
|
|
37566
|
+
variant: layout.variant,
|
|
37567
|
+
positioning: layout.defaultPositioning,
|
|
37568
|
+
shrinkOnScroll: layout.shrinkOnScroll,
|
|
37569
|
+
ctaGap: layout.id === asHeaderLayoutId("floating") ? "compact" : "default",
|
|
37570
|
+
logoText: layout.id === asHeaderLayoutId("classic") ? {
|
|
37571
|
+
mobileMaxWidth: "sm",
|
|
37572
|
+
mobileWrapLines: 1,
|
|
37573
|
+
hideOnShrink: false
|
|
37574
|
+
} : void 0
|
|
37575
|
+
};
|
|
37576
|
+
}
|
|
37577
|
+
function brandHeaderForeground() {
|
|
37578
|
+
return {
|
|
37579
|
+
textColor: "primaryForeground",
|
|
37580
|
+
navColor: "primaryForeground"
|
|
37581
|
+
};
|
|
37582
|
+
}
|
|
37583
|
+
function neutralDropdownStyle() {
|
|
37584
|
+
return {
|
|
37585
|
+
background: "surface",
|
|
37586
|
+
textColor: "text",
|
|
37587
|
+
borderColor: "border",
|
|
37588
|
+
shadow: "md",
|
|
37589
|
+
borderRadius: "md",
|
|
37590
|
+
textTransform: "none",
|
|
37591
|
+
letterSpacing: "normal"
|
|
37592
|
+
};
|
|
37593
|
+
}
|
|
37594
|
+
function brandDropdownStyle() {
|
|
37595
|
+
return {
|
|
37596
|
+
background: "primary-700",
|
|
37597
|
+
textColor: "primaryForeground",
|
|
37598
|
+
borderColor: null,
|
|
37599
|
+
shadow: "md",
|
|
37600
|
+
borderRadius: "md",
|
|
37601
|
+
hoverBackground: "primary-900",
|
|
37602
|
+
hoverTextColor: "secondary",
|
|
37603
|
+
textTransform: "uppercase",
|
|
37604
|
+
letterSpacing: "wider",
|
|
37605
|
+
fontWeight: "bold",
|
|
37606
|
+
textSize: "sm"
|
|
37607
|
+
};
|
|
37608
|
+
}
|
|
37609
|
+
function minimalNavLinkStyle(colorToken, hoverColorToken = "primary") {
|
|
37610
|
+
return {
|
|
37611
|
+
name: "Minimal",
|
|
37612
|
+
typography: "body",
|
|
37613
|
+
fontWeight: "medium",
|
|
37614
|
+
textTransform: "none",
|
|
37615
|
+
italic: false,
|
|
37616
|
+
colorToken,
|
|
37617
|
+
hoverColorToken,
|
|
37618
|
+
padding: "none",
|
|
37619
|
+
borderRadius: "none",
|
|
37620
|
+
effects: {
|
|
37621
|
+
hover: [
|
|
37622
|
+
{ effectId: "text-color-change", options: { hoverColorToken } }
|
|
37623
|
+
]
|
|
37624
|
+
}
|
|
37625
|
+
};
|
|
37626
|
+
}
|
|
37627
|
+
function underlineNavLinkStyle(colorToken, underlineColorToken) {
|
|
37628
|
+
return {
|
|
37629
|
+
name: "Underline grow",
|
|
37630
|
+
typography: "body",
|
|
37631
|
+
fontWeight: "medium",
|
|
37632
|
+
textTransform: "none",
|
|
37633
|
+
italic: false,
|
|
37634
|
+
colorToken,
|
|
37635
|
+
padding: "none",
|
|
37636
|
+
borderRadius: "none",
|
|
37637
|
+
effects: {
|
|
37638
|
+
hover: [
|
|
37639
|
+
{
|
|
37640
|
+
effectId: "nav-underline",
|
|
37641
|
+
options: {
|
|
37642
|
+
style: "grow",
|
|
37643
|
+
...underlineColorToken ? { colorToken: underlineColorToken } : {}
|
|
37644
|
+
}
|
|
37645
|
+
}
|
|
37646
|
+
]
|
|
37647
|
+
}
|
|
37648
|
+
};
|
|
37649
|
+
}
|
|
37650
|
+
function pillNavLinkStyle(colorToken, backgroundToken = "primary", opacity = 10) {
|
|
37651
|
+
return {
|
|
37652
|
+
name: "Pill",
|
|
37653
|
+
typography: "body",
|
|
37654
|
+
fontWeight: "medium",
|
|
37655
|
+
textTransform: "none",
|
|
37656
|
+
italic: false,
|
|
37657
|
+
colorToken,
|
|
37658
|
+
padding: "compact",
|
|
37659
|
+
borderRadius: "full",
|
|
37660
|
+
effects: {
|
|
37661
|
+
hover: [
|
|
37662
|
+
{
|
|
37663
|
+
effectId: "background-on-hover-alpha",
|
|
37664
|
+
options: { colorToken: backgroundToken, opacity }
|
|
37665
|
+
}
|
|
37666
|
+
],
|
|
37667
|
+
active: [
|
|
37668
|
+
{
|
|
37669
|
+
effectId: "background-on-hover-alpha",
|
|
37670
|
+
options: { colorToken: backgroundToken, opacity: opacity + 5 }
|
|
37671
|
+
}
|
|
37672
|
+
]
|
|
37673
|
+
}
|
|
37674
|
+
};
|
|
37675
|
+
}
|
|
37676
|
+
function flatTabNavLinkStyle(colorToken) {
|
|
37677
|
+
return {
|
|
37678
|
+
name: "Flat tabs",
|
|
37679
|
+
typography: "body",
|
|
37680
|
+
fontWeight: "semibold",
|
|
37681
|
+
textTransform: "none",
|
|
37682
|
+
italic: false,
|
|
37683
|
+
colorToken,
|
|
37684
|
+
padding: "compact",
|
|
37685
|
+
paddingX: "default",
|
|
37686
|
+
borderRadius: "none",
|
|
37687
|
+
effects: {
|
|
37688
|
+
hover: [
|
|
37689
|
+
{
|
|
37690
|
+
effectId: "background-on-hover-alpha",
|
|
37691
|
+
options: { colorToken: "primary", opacity: 10 }
|
|
37692
|
+
}
|
|
37693
|
+
],
|
|
37694
|
+
active: [
|
|
37695
|
+
{
|
|
37696
|
+
effectId: "background-on-hover-alpha",
|
|
37697
|
+
options: { colorToken: "primary", opacity: 16 }
|
|
37698
|
+
}
|
|
37699
|
+
]
|
|
37700
|
+
}
|
|
37701
|
+
};
|
|
37702
|
+
}
|
|
37703
|
+
function noHeaderBorder() {
|
|
37704
|
+
return { style: "solid", width: "none", position: "none" };
|
|
37705
|
+
}
|
|
37706
|
+
function bottomHeaderBorder() {
|
|
37707
|
+
return { style: "solid", width: "thin", position: "bottom", colorToken: "border" };
|
|
37708
|
+
}
|
|
37709
|
+
function colorHeaderBackground(color) {
|
|
37710
|
+
return { type: "color", color };
|
|
37711
|
+
}
|
|
37712
|
+
function neutralHeaderBase() {
|
|
37713
|
+
return {
|
|
37714
|
+
textColor: "text",
|
|
37715
|
+
navColor: "text",
|
|
37716
|
+
dropdownStyle: neutralDropdownStyle()
|
|
37717
|
+
};
|
|
37718
|
+
}
|
|
37719
|
+
function transparentHeaderBackground() {
|
|
37720
|
+
return colorHeaderBackground("transparent");
|
|
37721
|
+
}
|
|
37722
|
+
function floatingContainer(input) {
|
|
37723
|
+
return {
|
|
37724
|
+
rounded: input.rounded,
|
|
37725
|
+
border: true,
|
|
37726
|
+
shadow: true,
|
|
37727
|
+
padding: input.padding,
|
|
37728
|
+
tint: input.tint,
|
|
37729
|
+
opacity: input.opacity
|
|
37730
|
+
};
|
|
37731
|
+
}
|
|
37732
|
+
function brandSurfaceBase(theme, header) {
|
|
37733
|
+
const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
|
|
37734
|
+
return {
|
|
37735
|
+
...header,
|
|
37736
|
+
...brandHeaderForeground(),
|
|
37737
|
+
background: colorHeaderBackground("primary"),
|
|
37738
|
+
dropdownStyle: brandDropdownStyle(),
|
|
37739
|
+
border: noHeaderBorder(),
|
|
37740
|
+
ctaTreatment: "inverted",
|
|
37741
|
+
...ctaVariant ? { ctaVariant } : {}
|
|
37742
|
+
};
|
|
37743
|
+
}
|
|
37744
|
+
function floatingSurfaceBase(header) {
|
|
37745
|
+
return {
|
|
37746
|
+
...header,
|
|
37747
|
+
background: transparentHeaderBackground(),
|
|
37748
|
+
border: noHeaderBorder()
|
|
37749
|
+
};
|
|
37750
|
+
}
|
|
37751
|
+
function applyHeaderStyle(theme, header, style2) {
|
|
37752
|
+
const ctaVariant = (treatment) => resolveHeaderCtaVariant(theme, treatment);
|
|
37753
|
+
switch (style2.id) {
|
|
37754
|
+
case "minimal":
|
|
37755
|
+
return {
|
|
37756
|
+
...header,
|
|
37757
|
+
...neutralHeaderBase(),
|
|
37758
|
+
background: colorHeaderBackground("surface"),
|
|
37759
|
+
navStyle: "minimal",
|
|
37760
|
+
navWeight: "medium",
|
|
37761
|
+
navLinkStyle: minimalNavLinkStyle("text"),
|
|
37762
|
+
border: noHeaderBorder(),
|
|
37763
|
+
ctaTreatment: "default"
|
|
37764
|
+
};
|
|
37765
|
+
case "fine-line":
|
|
37766
|
+
return {
|
|
37767
|
+
...header,
|
|
37768
|
+
...neutralHeaderBase(),
|
|
37769
|
+
background: colorHeaderBackground("surface"),
|
|
37770
|
+
navStyle: "underline-grow",
|
|
37771
|
+
navWeight: "medium",
|
|
37772
|
+
navLinkStyle: underlineNavLinkStyle("text"),
|
|
37773
|
+
border: bottomHeaderBorder(),
|
|
37774
|
+
ctaTreatment: "outline",
|
|
37775
|
+
ctaVariant: ctaVariant("outline")
|
|
37776
|
+
};
|
|
37777
|
+
case "soft-bar":
|
|
37778
|
+
return {
|
|
37779
|
+
...header,
|
|
37780
|
+
...neutralHeaderBase(),
|
|
37781
|
+
background: colorHeaderBackground("surfaceAlt"),
|
|
37782
|
+
navStyle: "capsule",
|
|
37783
|
+
navWeight: "medium",
|
|
37784
|
+
navLinkStyle: pillNavLinkStyle("text", "primary", 8),
|
|
37785
|
+
border: bottomHeaderBorder(),
|
|
37786
|
+
ctaTreatment: "default"
|
|
37787
|
+
};
|
|
37788
|
+
case "pill-nav":
|
|
37789
|
+
return {
|
|
37790
|
+
...header,
|
|
37791
|
+
...neutralHeaderBase(),
|
|
37792
|
+
background: colorHeaderBackground("surface"),
|
|
37793
|
+
navStyle: "capsule",
|
|
37794
|
+
navWeight: "medium",
|
|
37795
|
+
navLinkStyle: pillNavLinkStyle("text"),
|
|
37796
|
+
navContainer: {
|
|
37797
|
+
type: "pill",
|
|
37798
|
+
tint: "surfaceAlt",
|
|
37799
|
+
opacity: 0.7
|
|
37800
|
+
},
|
|
37801
|
+
border: noHeaderBorder(),
|
|
37802
|
+
ctaTreatment: "default"
|
|
37803
|
+
};
|
|
37804
|
+
case "brand-bar":
|
|
37805
|
+
return {
|
|
37806
|
+
...brandSurfaceBase(theme, header),
|
|
37807
|
+
navStyle: "minimal",
|
|
37808
|
+
navWeight: "semibold",
|
|
37809
|
+
navLinkStyle: minimalNavLinkStyle("primaryForeground", "secondary")
|
|
37810
|
+
};
|
|
37811
|
+
case "brand-underline":
|
|
37812
|
+
return {
|
|
37813
|
+
...brandSurfaceBase(theme, header),
|
|
37814
|
+
navStyle: "underline-grow",
|
|
37815
|
+
navWeight: "bold",
|
|
37816
|
+
navLinkStyle: underlineNavLinkStyle("primaryForeground", "secondary")
|
|
37817
|
+
};
|
|
37818
|
+
case "brand-pill":
|
|
37819
|
+
return {
|
|
37820
|
+
...brandSurfaceBase(theme, header),
|
|
37821
|
+
...header.variant === "floating" ? {
|
|
37822
|
+
background: transparentHeaderBackground(),
|
|
37823
|
+
container: floatingContainer({
|
|
37824
|
+
rounded: "2xl",
|
|
37825
|
+
padding: "sm",
|
|
37826
|
+
tint: "primary",
|
|
37827
|
+
opacity: 0.95
|
|
37828
|
+
})
|
|
37829
|
+
} : {},
|
|
37830
|
+
navStyle: "capsule",
|
|
37831
|
+
navWeight: "semibold",
|
|
37832
|
+
navLinkStyle: pillNavLinkStyle("primaryForeground", "primaryForeground", 14)
|
|
37833
|
+
};
|
|
37834
|
+
case "editorial-line":
|
|
37835
|
+
return {
|
|
37836
|
+
...header,
|
|
37837
|
+
...neutralHeaderBase(),
|
|
37838
|
+
background: colorHeaderBackground("background"),
|
|
37839
|
+
navStyle: "underline-grow",
|
|
37840
|
+
navWeight: "medium",
|
|
37841
|
+
navLinkStyle: underlineNavLinkStyle("text"),
|
|
37842
|
+
border: bottomHeaderBorder(),
|
|
37843
|
+
logo: {
|
|
37844
|
+
fontFamily: "heading",
|
|
37845
|
+
letterSpacing: "wide",
|
|
37846
|
+
gradient: false
|
|
37847
|
+
},
|
|
37848
|
+
ctaTreatment: "outline",
|
|
37849
|
+
ctaVariant: ctaVariant("outline"),
|
|
37850
|
+
ctaGap: "relaxed"
|
|
37851
|
+
};
|
|
37852
|
+
case "flat-tabs":
|
|
37853
|
+
return {
|
|
37854
|
+
...header,
|
|
37855
|
+
...neutralHeaderBase(),
|
|
37856
|
+
background: colorHeaderBackground("surface"),
|
|
37857
|
+
navStyle: "solid",
|
|
37858
|
+
navWeight: "semibold",
|
|
37859
|
+
navLinkStyle: flatTabNavLinkStyle("text"),
|
|
37860
|
+
border: bottomHeaderBorder(),
|
|
37861
|
+
shadow: { elevation: "sm" },
|
|
37862
|
+
ctaTreatment: "primary",
|
|
37863
|
+
ctaVariant: ctaVariant("primary"),
|
|
37864
|
+
ctaGap: "compact"
|
|
37865
|
+
};
|
|
37866
|
+
case "glass":
|
|
37867
|
+
return {
|
|
37868
|
+
...floatingSurfaceBase(header),
|
|
37869
|
+
textColor: "background",
|
|
37870
|
+
navColor: "background",
|
|
37871
|
+
navStyle: "frosted",
|
|
37872
|
+
navWeight: "semibold",
|
|
37873
|
+
navLinkStyle: pillNavLinkStyle("background", "neutral-50", 10),
|
|
37874
|
+
navContainer: {
|
|
37875
|
+
type: "glass",
|
|
37876
|
+
tint: "text",
|
|
37877
|
+
opacity: 0.16
|
|
37878
|
+
},
|
|
37879
|
+
container: floatingContainer({
|
|
37880
|
+
rounded: "2xl",
|
|
37881
|
+
padding: "sm",
|
|
37882
|
+
tint: "background",
|
|
37883
|
+
opacity: 0.12
|
|
37884
|
+
}),
|
|
37885
|
+
ctaTreatment: "inverted",
|
|
37886
|
+
ctaVariant: ctaVariant("inverted")
|
|
37887
|
+
};
|
|
37888
|
+
case "minimal-surface":
|
|
37889
|
+
return {
|
|
37890
|
+
...floatingSurfaceBase(header),
|
|
37891
|
+
...neutralHeaderBase(),
|
|
37892
|
+
navStyle: "minimal",
|
|
37893
|
+
navWeight: "medium",
|
|
37894
|
+
navLinkStyle: minimalNavLinkStyle("text"),
|
|
37895
|
+
container: floatingContainer({
|
|
37896
|
+
rounded: "xl",
|
|
37897
|
+
padding: "sm",
|
|
37898
|
+
tint: "surface",
|
|
37899
|
+
opacity: 0.92
|
|
37900
|
+
}),
|
|
37901
|
+
ctaTreatment: "default"
|
|
37902
|
+
};
|
|
37903
|
+
case "soft-shell":
|
|
37904
|
+
return {
|
|
37905
|
+
...floatingSurfaceBase(header),
|
|
37906
|
+
...neutralHeaderBase(),
|
|
37907
|
+
navStyle: "capsule",
|
|
37908
|
+
navWeight: "medium",
|
|
37909
|
+
navLinkStyle: pillNavLinkStyle("text", "primary", 8),
|
|
37910
|
+
container: floatingContainer({
|
|
37911
|
+
rounded: "2xl",
|
|
37912
|
+
padding: "md",
|
|
37913
|
+
tint: "surfaceAlt",
|
|
37914
|
+
opacity: 0.95
|
|
37915
|
+
}),
|
|
37916
|
+
ctaTreatment: "default"
|
|
37917
|
+
};
|
|
37918
|
+
default:
|
|
37919
|
+
return assertNever5(style2.id, "Unhandled header style id");
|
|
37920
|
+
}
|
|
37921
|
+
}
|
|
37922
|
+
function compileHeaderLayoutStyleSelection(theme, selection) {
|
|
37923
|
+
const resolution = resolveHeaderLayoutStyleSelection(selection);
|
|
37924
|
+
return applyHeaderStyle(
|
|
37925
|
+
theme,
|
|
37926
|
+
headerForLayout(theme, resolution.layout),
|
|
37927
|
+
resolution.style
|
|
37928
|
+
);
|
|
37929
|
+
}
|
|
36827
37930
|
function solidBrandHeader(theme) {
|
|
36828
37931
|
const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
|
|
36829
37932
|
return {
|
|
@@ -37060,6 +38163,11 @@ var headerLookCatalog = [
|
|
|
37060
38163
|
label: "Clean base",
|
|
37061
38164
|
visualTreatment: "solid-neutral",
|
|
37062
38165
|
layoutBehavior: "sticky",
|
|
38166
|
+
configuration: {
|
|
38167
|
+
structure: "inline-classic",
|
|
38168
|
+
treatment: "solid-neutral",
|
|
38169
|
+
behavior: "sticky"
|
|
38170
|
+
},
|
|
37063
38171
|
openingRequirement: "none",
|
|
37064
38172
|
compile: cleanBaseHeader
|
|
37065
38173
|
},
|
|
@@ -37068,6 +38176,11 @@ var headerLookCatalog = [
|
|
|
37068
38176
|
label: "Brand solid",
|
|
37069
38177
|
visualTreatment: "solid-brand",
|
|
37070
38178
|
layoutBehavior: "sticky-shrink",
|
|
38179
|
+
configuration: {
|
|
38180
|
+
structure: "inline-classic",
|
|
38181
|
+
treatment: "solid-brand",
|
|
38182
|
+
behavior: "sticky-shrink"
|
|
38183
|
+
},
|
|
37071
38184
|
openingRequirement: "none",
|
|
37072
38185
|
compile: solidBrandHeader
|
|
37073
38186
|
},
|
|
@@ -37076,6 +38189,11 @@ var headerLookCatalog = [
|
|
|
37076
38189
|
label: "Editorial line",
|
|
37077
38190
|
visualTreatment: "light-editorial",
|
|
37078
38191
|
layoutBehavior: "sticky",
|
|
38192
|
+
configuration: {
|
|
38193
|
+
structure: "editorial-stack",
|
|
38194
|
+
treatment: "light-editorial",
|
|
38195
|
+
behavior: "sticky"
|
|
38196
|
+
},
|
|
37079
38197
|
openingRequirement: "none",
|
|
37080
38198
|
maxRecommendedNavItems: 6,
|
|
37081
38199
|
compile: editorialLineHeader
|
|
@@ -37085,6 +38203,11 @@ var headerLookCatalog = [
|
|
|
37085
38203
|
label: "Centered calm",
|
|
37086
38204
|
visualTreatment: "light-editorial",
|
|
37087
38205
|
layoutBehavior: "normal-flow",
|
|
38206
|
+
configuration: {
|
|
38207
|
+
structure: "centered-stack",
|
|
38208
|
+
treatment: "light-editorial",
|
|
38209
|
+
behavior: "normal-flow"
|
|
38210
|
+
},
|
|
37088
38211
|
openingRequirement: "none",
|
|
37089
38212
|
maxRecommendedNavItems: 5,
|
|
37090
38213
|
allowedLogoShapes: ["none", "text-only", "horizontal", "square"],
|
|
@@ -37095,6 +38218,11 @@ var headerLookCatalog = [
|
|
|
37095
38218
|
label: "Practical utility",
|
|
37096
38219
|
visualTreatment: "solid-neutral",
|
|
37097
38220
|
layoutBehavior: "sticky-shrink",
|
|
38221
|
+
configuration: {
|
|
38222
|
+
structure: "inline-classic",
|
|
38223
|
+
treatment: "solid-neutral",
|
|
38224
|
+
behavior: "sticky-shrink"
|
|
38225
|
+
},
|
|
37098
38226
|
openingRequirement: "none",
|
|
37099
38227
|
requiresProminentCta: true,
|
|
37100
38228
|
compile: practicalUtilityHeader
|
|
@@ -37104,6 +38232,11 @@ var headerLookCatalog = [
|
|
|
37104
38232
|
label: "Minimal transparent",
|
|
37105
38233
|
visualTreatment: "minimal-transparent",
|
|
37106
38234
|
layoutBehavior: "normal-flow",
|
|
38235
|
+
configuration: {
|
|
38236
|
+
structure: "inline-classic",
|
|
38237
|
+
treatment: "minimal-transparent",
|
|
38238
|
+
behavior: "normal-flow"
|
|
38239
|
+
},
|
|
37107
38240
|
openingRequirement: "reserved-space-ok",
|
|
37108
38241
|
compile: minimalTransparentHeader
|
|
37109
38242
|
},
|
|
@@ -37112,6 +38245,11 @@ var headerLookCatalog = [
|
|
|
37112
38245
|
label: "Transparent overlay",
|
|
37113
38246
|
visualTreatment: "transparent-overlay",
|
|
37114
38247
|
layoutBehavior: "fixed-overlay",
|
|
38248
|
+
configuration: {
|
|
38249
|
+
structure: "inline-classic",
|
|
38250
|
+
treatment: "transparent-overlay",
|
|
38251
|
+
behavior: "fixed-overlay"
|
|
38252
|
+
},
|
|
37115
38253
|
openingRequirement: "requires-image-hero-with-contrast-overlay",
|
|
37116
38254
|
maxRecommendedNavItems: 5,
|
|
37117
38255
|
allowedLogoShapes: ["none", "text-only", "horizontal"],
|
|
@@ -37122,6 +38260,11 @@ var headerLookCatalog = [
|
|
|
37122
38260
|
label: "Floating glass",
|
|
37123
38261
|
visualTreatment: "floating-glass",
|
|
37124
38262
|
layoutBehavior: "fixed-floating",
|
|
38263
|
+
configuration: {
|
|
38264
|
+
structure: "floating-shell",
|
|
38265
|
+
treatment: "floating-glass",
|
|
38266
|
+
behavior: "fixed-floating"
|
|
38267
|
+
},
|
|
37125
38268
|
openingRequirement: "requires-image-hero-with-contrast-overlay",
|
|
37126
38269
|
maxRecommendedNavItems: 5,
|
|
37127
38270
|
allowedLogoShapes: ["none", "text-only", "horizontal"],
|
|
@@ -37129,15 +38272,18 @@ var headerLookCatalog = [
|
|
|
37129
38272
|
}
|
|
37130
38273
|
];
|
|
37131
38274
|
var guaranteedFallbackHeaderLookId = asHeaderLookId("clean-base");
|
|
38275
|
+
new Set(
|
|
38276
|
+
headerLookCatalog.map((look) => headerConfigurationKey(look.configuration))
|
|
38277
|
+
);
|
|
37132
38278
|
var headerLooksById = new Map(
|
|
37133
38279
|
headerLookCatalog.map((look) => [look.id, look])
|
|
37134
38280
|
);
|
|
38281
|
+
function headerConfigurationKey(configuration) {
|
|
38282
|
+
return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
|
|
38283
|
+
}
|
|
37135
38284
|
function getHeaderLook(id) {
|
|
37136
38285
|
return headerLooksById.get(id) ?? null;
|
|
37137
38286
|
}
|
|
37138
|
-
function findHeaderLook(id) {
|
|
37139
|
-
return headerLooksById.get(id);
|
|
37140
|
-
}
|
|
37141
38287
|
function getHeaderLookOrThrow(id) {
|
|
37142
38288
|
const look = getHeaderLook(id);
|
|
37143
38289
|
if (!look) {
|
|
@@ -37145,35 +38291,8 @@ function getHeaderLookOrThrow(id) {
|
|
|
37145
38291
|
}
|
|
37146
38292
|
return look;
|
|
37147
38293
|
}
|
|
37148
|
-
function headerLookRequiresImageHeroOpening(look) {
|
|
37149
|
-
return look.openingRequirement === "requires-image-hero-with-contrast-overlay";
|
|
37150
|
-
}
|
|
37151
|
-
function headerLookUsesOverlayLayout(look) {
|
|
37152
|
-
return look.layoutBehavior === "fixed-overlay" || look.layoutBehavior === "fixed-floating";
|
|
37153
|
-
}
|
|
37154
|
-
function overlayRequirementReasons(look, context) {
|
|
37155
|
-
if (!headerLookRequiresImageHeroOpening(look)) {
|
|
37156
|
-
return [];
|
|
37157
|
-
}
|
|
37158
|
-
const opening = context.openingSection;
|
|
37159
|
-
if (opening.kind !== "image-hero") {
|
|
37160
|
-
return ["requires-image-hero-with-contrast-overlay"];
|
|
37161
|
-
}
|
|
37162
|
-
return [
|
|
37163
|
-
...!opening.hasContrastOverlay ? ["requires-image-hero-with-contrast-overlay"] : [],
|
|
37164
|
-
...!opening.hasTopSpacing ? ["requires-opening-section-top-spacing"] : []
|
|
37165
|
-
];
|
|
37166
|
-
}
|
|
37167
|
-
function bannerReasons(look, context) {
|
|
37168
|
-
if (!headerLookUsesOverlayLayout(look) || context.banner.persistentVisibility !== "visible") {
|
|
37169
|
-
return [];
|
|
37170
|
-
}
|
|
37171
|
-
return context.banner.shellCanOffsetOverlayHeader ? [] : ["requires-banner-offset-shell"];
|
|
37172
|
-
}
|
|
37173
38294
|
function rejectReasonsForLook(look, context) {
|
|
37174
38295
|
return [
|
|
37175
|
-
...overlayRequirementReasons(look, context),
|
|
37176
|
-
...bannerReasons(look, context),
|
|
37177
38296
|
...look.maxRecommendedNavItems !== void 0 && context.navigation.itemCount > look.maxRecommendedNavItems ? ["too-many-nav-items"] : [],
|
|
37178
38297
|
...look.allowedLogoShapes && !look.allowedLogoShapes.includes(context.logo.shape) ? ["logo-shape-incompatible"] : [],
|
|
37179
38298
|
...look.requiresProminentCta && context.cta.importance === "low" ? ["cta-treatment-unavailable"] : []
|
|
@@ -37196,24 +38315,6 @@ function resolveHeaderLook(input) {
|
|
|
37196
38315
|
rejected: result.rejected
|
|
37197
38316
|
};
|
|
37198
38317
|
}
|
|
37199
|
-
function headerLookRejectionReasonLabel(reason) {
|
|
37200
|
-
switch (reason) {
|
|
37201
|
-
case "requires-image-hero-with-contrast-overlay":
|
|
37202
|
-
return "Needs an opening image hero with a contrast overlay.";
|
|
37203
|
-
case "requires-opening-section-top-spacing":
|
|
37204
|
-
return "Needs enough top spacing in the opening section.";
|
|
37205
|
-
case "requires-banner-offset-shell":
|
|
37206
|
-
return "Needs the site banner to sit above overlay header chrome.";
|
|
37207
|
-
case "too-many-nav-items":
|
|
37208
|
-
return "Navigation has too many items for this header.";
|
|
37209
|
-
case "logo-shape-incompatible":
|
|
37210
|
-
return "Logo shape does not fit this header.";
|
|
37211
|
-
case "cta-treatment-unavailable":
|
|
37212
|
-
return "Needs a more prominent call-to-action treatment.";
|
|
37213
|
-
default:
|
|
37214
|
-
return assertNever5(reason, "Unhandled header Look rejection reason");
|
|
37215
|
-
}
|
|
37216
|
-
}
|
|
37217
38318
|
|
|
37218
38319
|
// ../theme-core/src/site-styles/footerLooks.ts
|
|
37219
38320
|
function asFooterLookId(value) {
|
|
@@ -37440,6 +38541,356 @@ var userDesignOptionCatalog = {
|
|
|
37440
38541
|
],
|
|
37441
38542
|
emphases: generatedDesignOptionCatalog.emphases};
|
|
37442
38543
|
|
|
38544
|
+
// ../theme-core/src/site-styles/typographyPresets.ts
|
|
38545
|
+
var typographyPresetIdValues = [
|
|
38546
|
+
"typography-preset:modern-sans",
|
|
38547
|
+
"typography-preset:warm-rounded",
|
|
38548
|
+
"typography-preset:editorial-serif",
|
|
38549
|
+
"typography-preset:classic-serif",
|
|
38550
|
+
"typography-preset:luxe-contrast",
|
|
38551
|
+
"typography-preset:bold-display"
|
|
38552
|
+
];
|
|
38553
|
+
var bodyReadablePolicy = {
|
|
38554
|
+
recommendedCategories: ["sans-serif", "serif"],
|
|
38555
|
+
allowedCategories: ["sans-serif", "serif"],
|
|
38556
|
+
requiresItalicForBody: true,
|
|
38557
|
+
requiresBoldForBody: true
|
|
38558
|
+
};
|
|
38559
|
+
var headingFlexiblePolicy = {
|
|
38560
|
+
recommendedCategories: ["sans-serif", "serif", "display"],
|
|
38561
|
+
allowedCategories: ["sans-serif", "serif", "display"]
|
|
38562
|
+
};
|
|
38563
|
+
var BOLD_WEIGHT_THRESHOLD = 700;
|
|
38564
|
+
var displayHeadingPolicy = {
|
|
38565
|
+
recommendedCategories: ["display", "sans-serif", "serif"],
|
|
38566
|
+
allowedCategories: ["display", "sans-serif", "serif"]
|
|
38567
|
+
};
|
|
38568
|
+
function asTypographyPresetId(value) {
|
|
38569
|
+
if (!value.startsWith("typography-preset:")) {
|
|
38570
|
+
throw new Error(`TypographyPresetId must start with "typography-preset:". Received: ${value}`);
|
|
38571
|
+
}
|
|
38572
|
+
return value;
|
|
38573
|
+
}
|
|
38574
|
+
function defineTypographyPreset(preset2) {
|
|
38575
|
+
return {
|
|
38576
|
+
...preset2,
|
|
38577
|
+
id: asTypographyPresetId(preset2.id)
|
|
38578
|
+
};
|
|
38579
|
+
}
|
|
38580
|
+
var modernSansTypography = {
|
|
38581
|
+
body: {
|
|
38582
|
+
family: "Inter, system-ui, sans-serif",
|
|
38583
|
+
size: "md",
|
|
38584
|
+
weight: "regular",
|
|
38585
|
+
lineHeight: "relaxed",
|
|
38586
|
+
letterSpacing: "normal"
|
|
38587
|
+
},
|
|
38588
|
+
headings: {
|
|
38589
|
+
default: {
|
|
38590
|
+
family: "Inter, system-ui, sans-serif",
|
|
38591
|
+
weight: "semibold",
|
|
38592
|
+
lineHeight: "normal",
|
|
38593
|
+
letterSpacing: "tight",
|
|
38594
|
+
italic: null,
|
|
38595
|
+
case: null
|
|
38596
|
+
},
|
|
38597
|
+
h1: { size: "xl", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null },
|
|
38598
|
+
h2: { size: "lg", weight: "semibold", lineHeight: "normal", letterSpacing: "tight", italic: null },
|
|
38599
|
+
h3: { size: "md", weight: "semibold", lineHeight: "normal", letterSpacing: "normal", italic: null }
|
|
38600
|
+
},
|
|
38601
|
+
scale: "balanced"
|
|
38602
|
+
};
|
|
38603
|
+
var warmRoundedTypography = {
|
|
38604
|
+
body: {
|
|
38605
|
+
family: "Nunito Sans, system-ui, sans-serif",
|
|
38606
|
+
size: "lg",
|
|
38607
|
+
weight: "regular",
|
|
38608
|
+
lineHeight: "relaxed",
|
|
38609
|
+
letterSpacing: "normal"
|
|
38610
|
+
},
|
|
38611
|
+
headings: {
|
|
38612
|
+
default: {
|
|
38613
|
+
family: "Nunito Sans, system-ui, sans-serif",
|
|
38614
|
+
weight: "bold",
|
|
38615
|
+
lineHeight: "normal",
|
|
38616
|
+
letterSpacing: "normal",
|
|
38617
|
+
italic: null,
|
|
38618
|
+
case: null
|
|
38619
|
+
},
|
|
38620
|
+
h1: { size: "xl", weight: "bold", lineHeight: "normal", letterSpacing: "normal", italic: null },
|
|
38621
|
+
h2: { size: "lg", weight: "bold", lineHeight: "normal", letterSpacing: "normal", italic: null },
|
|
38622
|
+
h3: { size: "md", weight: "semibold", lineHeight: "relaxed", letterSpacing: "normal", italic: null }
|
|
38623
|
+
},
|
|
38624
|
+
scale: "balanced"
|
|
38625
|
+
};
|
|
38626
|
+
var editorialSerifTypography = {
|
|
38627
|
+
body: {
|
|
38628
|
+
family: "Lora, Georgia, serif",
|
|
38629
|
+
size: "lg",
|
|
38630
|
+
weight: "regular",
|
|
38631
|
+
lineHeight: "loose",
|
|
38632
|
+
letterSpacing: "normal"
|
|
38633
|
+
},
|
|
38634
|
+
headings: {
|
|
38635
|
+
default: {
|
|
38636
|
+
family: "Playfair Display, Georgia, serif",
|
|
38637
|
+
weight: "semibold",
|
|
38638
|
+
lineHeight: "normal",
|
|
38639
|
+
letterSpacing: "tight",
|
|
38640
|
+
italic: null,
|
|
38641
|
+
case: null
|
|
38642
|
+
},
|
|
38643
|
+
h1: { size: "2xl", weight: "semibold", lineHeight: "normal", letterSpacing: "tight", italic: null },
|
|
38644
|
+
h2: { size: "xl", weight: "semibold", lineHeight: "normal", letterSpacing: "normal", italic: null },
|
|
38645
|
+
h3: { size: "md", weight: "semibold", lineHeight: "relaxed", letterSpacing: "normal", italic: true }
|
|
38646
|
+
},
|
|
38647
|
+
scale: "spacious"
|
|
38648
|
+
};
|
|
38649
|
+
var classicSerifTypography = {
|
|
38650
|
+
body: {
|
|
38651
|
+
family: "Libre Baskerville, Georgia, serif",
|
|
38652
|
+
size: "md",
|
|
38653
|
+
weight: "regular",
|
|
38654
|
+
lineHeight: "relaxed",
|
|
38655
|
+
letterSpacing: "normal"
|
|
38656
|
+
},
|
|
38657
|
+
headings: {
|
|
38658
|
+
default: {
|
|
38659
|
+
family: "Cormorant Garamond, Georgia, serif",
|
|
38660
|
+
weight: "semibold",
|
|
38661
|
+
lineHeight: "normal",
|
|
38662
|
+
letterSpacing: "normal",
|
|
38663
|
+
italic: null,
|
|
38664
|
+
case: null
|
|
38665
|
+
},
|
|
38666
|
+
h1: { size: "2xl", weight: "semibold", lineHeight: "normal", letterSpacing: "normal", italic: null },
|
|
38667
|
+
h2: { size: "xl", weight: "semibold", lineHeight: "normal", letterSpacing: "normal", italic: null },
|
|
38668
|
+
h3: { size: "md", weight: "medium", lineHeight: "relaxed", letterSpacing: "normal", italic: null }
|
|
38669
|
+
},
|
|
38670
|
+
scale: "balanced"
|
|
38671
|
+
};
|
|
38672
|
+
var luxeContrastTypography = {
|
|
38673
|
+
body: {
|
|
38674
|
+
family: "Manrope, system-ui, sans-serif",
|
|
38675
|
+
size: "md",
|
|
38676
|
+
weight: "regular",
|
|
38677
|
+
lineHeight: "relaxed",
|
|
38678
|
+
letterSpacing: "normal"
|
|
38679
|
+
},
|
|
38680
|
+
headings: {
|
|
38681
|
+
default: {
|
|
38682
|
+
family: "Cormorant Garamond, Georgia, serif",
|
|
38683
|
+
weight: "semibold",
|
|
38684
|
+
lineHeight: "normal",
|
|
38685
|
+
letterSpacing: "tight",
|
|
38686
|
+
italic: null,
|
|
38687
|
+
case: null
|
|
38688
|
+
},
|
|
38689
|
+
h1: { size: "2xl", weight: "semibold", lineHeight: "normal", letterSpacing: "tight", italic: null },
|
|
38690
|
+
h2: { size: "xl", weight: "semibold", lineHeight: "normal", letterSpacing: "tight", italic: null },
|
|
38691
|
+
h3: { size: "md", weight: "medium", lineHeight: "relaxed", letterSpacing: "normal", italic: null }
|
|
38692
|
+
},
|
|
38693
|
+
scale: "spacious"
|
|
38694
|
+
};
|
|
38695
|
+
var boldDisplayTypography = {
|
|
38696
|
+
body: {
|
|
38697
|
+
family: "Manrope, system-ui, sans-serif",
|
|
38698
|
+
size: "lg",
|
|
38699
|
+
weight: "regular",
|
|
38700
|
+
lineHeight: "relaxed",
|
|
38701
|
+
letterSpacing: "normal"
|
|
38702
|
+
},
|
|
38703
|
+
headings: {
|
|
38704
|
+
default: {
|
|
38705
|
+
family: '"TAN - PEARL", sans-serif',
|
|
38706
|
+
weight: "bold",
|
|
38707
|
+
lineHeight: "normal",
|
|
38708
|
+
letterSpacing: "tight",
|
|
38709
|
+
colorToken: "primary",
|
|
38710
|
+
italic: null,
|
|
38711
|
+
case: null
|
|
38712
|
+
},
|
|
38713
|
+
h1: { size: "xl", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null },
|
|
38714
|
+
h2: { size: "lg", weight: "bold", lineHeight: "normal", letterSpacing: "normal", italic: null },
|
|
38715
|
+
h3: { size: "md", weight: "bold", lineHeight: "normal", letterSpacing: "normal", italic: null }
|
|
38716
|
+
},
|
|
38717
|
+
scale: "balanced"
|
|
38718
|
+
};
|
|
38719
|
+
var typographyPresets = [
|
|
38720
|
+
defineTypographyPreset({
|
|
38721
|
+
id: "typography-preset:modern-sans",
|
|
38722
|
+
name: "Modern Sans",
|
|
38723
|
+
description: "Crisp, neutral type for clear service pages and practical editorial structure.",
|
|
38724
|
+
defaultFonts: { body: "Inter, system-ui, sans-serif", heading: "Inter, system-ui, sans-serif" },
|
|
38725
|
+
recommendedFonts: {
|
|
38726
|
+
body: ["Inter", "Source Sans 3", "IBM Plex Sans"],
|
|
38727
|
+
heading: ["Inter", "Manrope", "Source Sans 3"]
|
|
38728
|
+
},
|
|
38729
|
+
slotPolicies: { body: bodyReadablePolicy, heading: headingFlexiblePolicy },
|
|
38730
|
+
typography: modernSansTypography
|
|
38731
|
+
}),
|
|
38732
|
+
defineTypographyPreset({
|
|
38733
|
+
id: "typography-preset:warm-rounded",
|
|
38734
|
+
name: "Warm Rounded",
|
|
38735
|
+
description: "Soft, friendly type for welcoming studios, classes, and community businesses.",
|
|
38736
|
+
defaultFonts: { body: "Nunito Sans, system-ui, sans-serif", heading: "Nunito Sans, system-ui, sans-serif" },
|
|
38737
|
+
recommendedFonts: {
|
|
38738
|
+
body: ["Nunito Sans", "Atkinson Hyperlegible", "Lato"],
|
|
38739
|
+
heading: ["Nunito Sans", "Quicksand", "Manrope"]
|
|
38740
|
+
},
|
|
38741
|
+
slotPolicies: { body: bodyReadablePolicy, heading: headingFlexiblePolicy },
|
|
38742
|
+
typography: warmRoundedTypography
|
|
38743
|
+
}),
|
|
38744
|
+
defineTypographyPreset({
|
|
38745
|
+
id: "typography-preset:editorial-serif",
|
|
38746
|
+
name: "Editorial Serif",
|
|
38747
|
+
description: "Story-led type with warm reading rhythm and expressive headings.",
|
|
38748
|
+
defaultFonts: { body: "Lora, Georgia, serif", heading: "Playfair Display, Georgia, serif" },
|
|
38749
|
+
recommendedFonts: {
|
|
38750
|
+
body: ["Lora", "Source Serif 4", "Libre Baskerville"],
|
|
38751
|
+
heading: ["Playfair Display", "Cormorant Garamond", "Fraunces"]
|
|
38752
|
+
},
|
|
38753
|
+
slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
|
|
38754
|
+
typography: editorialSerifTypography
|
|
38755
|
+
}),
|
|
38756
|
+
defineTypographyPreset({
|
|
38757
|
+
id: "typography-preset:classic-serif",
|
|
38758
|
+
name: "Classic Serif",
|
|
38759
|
+
description: "Measured, polished type for premium and established offers.",
|
|
38760
|
+
defaultFonts: { body: "Libre Baskerville, Georgia, serif", heading: "Cormorant Garamond, Georgia, serif" },
|
|
38761
|
+
recommendedFonts: {
|
|
38762
|
+
body: ["Libre Baskerville", "Source Serif 4", "Lora"],
|
|
38763
|
+
heading: ["Cormorant Garamond", "Playfair Display", "Libre Baskerville"]
|
|
38764
|
+
},
|
|
38765
|
+
slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
|
|
38766
|
+
typography: classicSerifTypography
|
|
38767
|
+
}),
|
|
38768
|
+
defineTypographyPreset({
|
|
38769
|
+
id: "typography-preset:luxe-contrast",
|
|
38770
|
+
name: "Luxe Contrast",
|
|
38771
|
+
description: "A restrained sans body paired with elegant high-contrast headings.",
|
|
38772
|
+
defaultFonts: { body: "Manrope, system-ui, sans-serif", heading: "Cormorant Garamond, Georgia, serif" },
|
|
38773
|
+
recommendedFonts: {
|
|
38774
|
+
body: ["Manrope", "Inter", "Source Sans 3"],
|
|
38775
|
+
heading: ["Cormorant Garamond", "Playfair Display", "Bodoni Moda"]
|
|
38776
|
+
},
|
|
38777
|
+
slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
|
|
38778
|
+
typography: luxeContrastTypography
|
|
38779
|
+
}),
|
|
38780
|
+
defineTypographyPreset({
|
|
38781
|
+
id: "typography-preset:bold-display",
|
|
38782
|
+
name: "Bold Display",
|
|
38783
|
+
description: "Punchy display headings with readable sans body copy for branded launches.",
|
|
38784
|
+
defaultFonts: { body: "Manrope, system-ui, sans-serif", heading: '"TAN - PEARL", sans-serif' },
|
|
38785
|
+
recommendedFonts: {
|
|
38786
|
+
body: ["Manrope", "Inter", "Space Grotesk"],
|
|
38787
|
+
heading: ["Anton", "Bebas Neue", "Archivo Black"]
|
|
38788
|
+
},
|
|
38789
|
+
slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
|
|
38790
|
+
typography: boldDisplayTypography,
|
|
38791
|
+
heroTypography: {
|
|
38792
|
+
headlineSize: "6xl",
|
|
38793
|
+
headlineLineHeight: "tight",
|
|
38794
|
+
subheadlineSize: "editorial",
|
|
38795
|
+
subheadlineLineHeight: "normal",
|
|
38796
|
+
microHeadlineSize: "6xl",
|
|
38797
|
+
microHeadlineLineHeight: "tight",
|
|
38798
|
+
microSubheadlineSize: "xl",
|
|
38799
|
+
microSubheadlineLineHeight: "normal",
|
|
38800
|
+
responsive: {
|
|
38801
|
+
tablet: { headlineSize: "5xl" },
|
|
38802
|
+
mobile: { headlineSize: "4xl", subheadlineSize: "xl" }
|
|
38803
|
+
}
|
|
38804
|
+
}
|
|
38805
|
+
})
|
|
38806
|
+
];
|
|
38807
|
+
var typographyPresetsById = new Map(
|
|
38808
|
+
typographyPresets.map((preset2) => [preset2.id, preset2])
|
|
38809
|
+
);
|
|
38810
|
+
function findTypographyPreset(id) {
|
|
38811
|
+
return typographyPresetsById.get(id);
|
|
38812
|
+
}
|
|
38813
|
+
function parsePersistedTypographyPresetId(value) {
|
|
38814
|
+
if (!value) {
|
|
38815
|
+
return { kind: "empty" };
|
|
38816
|
+
}
|
|
38817
|
+
if (typographyPresetIdValues.includes(value)) {
|
|
38818
|
+
return { kind: "known", id: asTypographyPresetId(value) };
|
|
38819
|
+
}
|
|
38820
|
+
return { kind: "unknown", raw: value };
|
|
38821
|
+
}
|
|
38822
|
+
function compileTypographySelection(input) {
|
|
38823
|
+
if (input.selection?.kind === "custom") {
|
|
38824
|
+
return {
|
|
38825
|
+
themeTypography: input.selection.typography,
|
|
38826
|
+
resolvedSelection: { kind: "custom" }
|
|
38827
|
+
};
|
|
38828
|
+
}
|
|
38829
|
+
const presetId = input.selection?.presetId ?? input.defaultPresetId;
|
|
38830
|
+
const preset2 = findTypographyPreset(presetId);
|
|
38831
|
+
if (!preset2) {
|
|
38832
|
+
throw new Error(`Unknown typography preset: ${presetId}`);
|
|
38833
|
+
}
|
|
38834
|
+
return {
|
|
38835
|
+
themeTypography: applyTypographyFontOverrides(
|
|
38836
|
+
preset2.typography,
|
|
38837
|
+
input.selection?.bodyFontOverride ?? null,
|
|
38838
|
+
input.selection?.headingFontOverride ?? null
|
|
38839
|
+
),
|
|
38840
|
+
...preset2.heroTypography ? { heroTypography: preset2.heroTypography } : {},
|
|
38841
|
+
resolvedSelection: {
|
|
38842
|
+
kind: "preset",
|
|
38843
|
+
presetId: preset2.id,
|
|
38844
|
+
bodyFontOverride: input.selection?.bodyFontOverride ?? null,
|
|
38845
|
+
headingFontOverride: input.selection?.headingFontOverride ?? null
|
|
38846
|
+
}
|
|
38847
|
+
};
|
|
38848
|
+
}
|
|
38849
|
+
function applyTypographyFontOverrides(typography, bodyFontOverride, headingFontOverride) {
|
|
38850
|
+
return {
|
|
38851
|
+
...typography,
|
|
38852
|
+
body: {
|
|
38853
|
+
...typography.body,
|
|
38854
|
+
family: bodyFontOverride ?? typography.body.family
|
|
38855
|
+
},
|
|
38856
|
+
headings: {
|
|
38857
|
+
...typography.headings,
|
|
38858
|
+
default: {
|
|
38859
|
+
...typography.headings.default,
|
|
38860
|
+
family: headingFontOverride ?? typography.headings.default.family
|
|
38861
|
+
}
|
|
38862
|
+
}
|
|
38863
|
+
};
|
|
38864
|
+
}
|
|
38865
|
+
function evaluateTypographyFontSlot(input) {
|
|
38866
|
+
const { capability, policy, slot } = input;
|
|
38867
|
+
if (capability.category === "unknown") {
|
|
38868
|
+
return { kind: "unknown", reason: "This font has limited metadata, so we cannot judge the fit yet." };
|
|
38869
|
+
}
|
|
38870
|
+
if (!policy.allowedCategories.includes(capability.category)) {
|
|
38871
|
+
return slot === "body" ? { kind: "risky", reason: "This style of font can be hard to read in longer body copy." } : { kind: "limited", reason: "This font may need a simpler supporting body font." };
|
|
38872
|
+
}
|
|
38873
|
+
if (slot === "body" && policy.requiresBoldForBody && !hasBoldVariant(capability)) {
|
|
38874
|
+
return { kind: "limited", reason: "This font may not include enough weight for emphasis." };
|
|
38875
|
+
}
|
|
38876
|
+
if (slot === "body" && policy.requiresItalicForBody && !hasItalicVariant(capability)) {
|
|
38877
|
+
return { kind: "limited", reason: "This font may not include italic styles for body text." };
|
|
38878
|
+
}
|
|
38879
|
+
if (policy.recommendedCategories.includes(capability.category)) {
|
|
38880
|
+
return { kind: "recommended", reason: "This font matches the preset treatment." };
|
|
38881
|
+
}
|
|
38882
|
+
return { kind: "compatible", reason: "This font can work with this slot." };
|
|
38883
|
+
}
|
|
38884
|
+
function hasBoldVariant(capability) {
|
|
38885
|
+
if (capability.variableWeightRange && capability.variableWeightRange.max >= BOLD_WEIGHT_THRESHOLD) {
|
|
38886
|
+
return true;
|
|
38887
|
+
}
|
|
38888
|
+
return capability.variants.some((variant) => /(^|[^0-9])(700|800|900|bold)/iu.test(variant));
|
|
38889
|
+
}
|
|
38890
|
+
function hasItalicVariant(capability) {
|
|
38891
|
+
return capability.variants.some((variant) => variant.toLowerCase().includes("italic"));
|
|
38892
|
+
}
|
|
38893
|
+
|
|
37443
38894
|
// ../theme-core/src/site-styles/curatedSiteStyles.ts
|
|
37444
38895
|
var curatedSiteStyleIdValues = [
|
|
37445
38896
|
"site-style:calm-studio",
|
|
@@ -37452,6 +38903,7 @@ var curatedSiteStyleIdValues = [
|
|
|
37452
38903
|
"site-style:personal-retreat-journal",
|
|
37453
38904
|
"site-style:tactile-workshop",
|
|
37454
38905
|
"site-style:modern-wellness",
|
|
38906
|
+
"site-style:soft-earth",
|
|
37455
38907
|
"site-style:bold-launch",
|
|
37456
38908
|
"site-style:south-west-twerk-school"
|
|
37457
38909
|
];
|
|
@@ -37528,6 +38980,15 @@ function uniqueContentFrameKinds() {
|
|
|
37528
38980
|
}
|
|
37529
38981
|
var generatedContentFrameKinds = uniqueContentFrameKinds();
|
|
37530
38982
|
function defineCuratedSiteStyle(input) {
|
|
38983
|
+
const legacyHeaderLookIds = input.recommendedHeaderLookIds ?? ["clean-base"];
|
|
38984
|
+
const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(legacyHeaderLookIds);
|
|
38985
|
+
const typographyPresetChoices = input.typographyPresetChoices ?? defaultTypographyPresetChoicesForRecipe(input.tokenRecipes.typography);
|
|
38986
|
+
const defaultTypographyPresetId = input.defaultTypographyPresetId ? asTypographyPresetId(input.defaultTypographyPresetId) : typographyPresetChoices[0].id;
|
|
38987
|
+
if (!typographyPresetChoices.some((choice) => choice.id === defaultTypographyPresetId)) {
|
|
38988
|
+
throw new Error(
|
|
38989
|
+
`Default typography preset ${defaultTypographyPresetId} is not curated for site style ${input.id}.`
|
|
38990
|
+
);
|
|
38991
|
+
}
|
|
37531
38992
|
return {
|
|
37532
38993
|
id: asSiteStyleId(input.id),
|
|
37533
38994
|
name: input.name,
|
|
@@ -37548,11 +39009,23 @@ function defineCuratedSiteStyle(input) {
|
|
|
37548
39009
|
},
|
|
37549
39010
|
...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
|
|
37550
39011
|
recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
|
|
37551
|
-
|
|
39012
|
+
defaultHeaderSelection: input.defaultHeaderSelection ? {
|
|
39013
|
+
layoutId: asHeaderLayoutId(input.defaultHeaderSelection.layoutId),
|
|
39014
|
+
styleId: asHeaderStyleId(input.defaultHeaderSelection.styleId)
|
|
39015
|
+
} : inferredHeaderCuration.defaultHeaderSelection,
|
|
39016
|
+
recommendedHeaderLayoutChoices: input.recommendedHeaderLayoutChoices ?? inferredHeaderCuration.recommendedHeaderLayoutChoices,
|
|
39017
|
+
recommendedHeaderStyleChoicesByLayout: input.recommendedHeaderStyleChoicesByLayout ?? inferredHeaderCuration.recommendedHeaderStyleChoicesByLayout,
|
|
39018
|
+
discouragedHeaderSelections: input.discouragedHeaderSelections?.map((selection) => ({
|
|
39019
|
+
layoutId: asHeaderLayoutId(selection.layoutId),
|
|
39020
|
+
styleId: asHeaderStyleId(selection.styleId)
|
|
39021
|
+
})),
|
|
39022
|
+
recommendedHeaderLookIds: legacyHeaderLookIds.map(asHeaderLookId),
|
|
37552
39023
|
// Empty is intentional: resolveFooterLook always appends its guaranteed fallback.
|
|
37553
39024
|
recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(asFooterLookId),
|
|
37554
39025
|
buttonPersonalityChoices: input.buttonPersonalityChoices,
|
|
37555
|
-
paletteVariantChoices: input.paletteVariantChoices
|
|
39026
|
+
paletteVariantChoices: input.paletteVariantChoices,
|
|
39027
|
+
typographyPresetChoices,
|
|
39028
|
+
defaultTypographyPresetId
|
|
37556
39029
|
};
|
|
37557
39030
|
}
|
|
37558
39031
|
function buttonChoice(id, note) {
|
|
@@ -37561,6 +39034,88 @@ function buttonChoice(id, note) {
|
|
|
37561
39034
|
function paletteChoice(id, note) {
|
|
37562
39035
|
return { id: asPaletteVariantId(id) };
|
|
37563
39036
|
}
|
|
39037
|
+
function headerLayoutChoice(id, note) {
|
|
39038
|
+
return note ? { id: asHeaderLayoutId(id), note } : { id: asHeaderLayoutId(id) };
|
|
39039
|
+
}
|
|
39040
|
+
function headerStyleChoice(id, note) {
|
|
39041
|
+
return note ? { id: asHeaderStyleId(id), note } : { id: asHeaderStyleId(id) };
|
|
39042
|
+
}
|
|
39043
|
+
function headerLayoutRecordKey(id) {
|
|
39044
|
+
return id;
|
|
39045
|
+
}
|
|
39046
|
+
function uniqueHeaderLayoutChoices(choices) {
|
|
39047
|
+
const seen = /* @__PURE__ */ new Set();
|
|
39048
|
+
const unique = choices.filter((choice) => {
|
|
39049
|
+
if (seen.has(choice.id)) return false;
|
|
39050
|
+
seen.add(choice.id);
|
|
39051
|
+
return true;
|
|
39052
|
+
});
|
|
39053
|
+
const first2 = unique[0];
|
|
39054
|
+
if (!first2) {
|
|
39055
|
+
throw new Error("Expected at least one curated header layout choice.");
|
|
39056
|
+
}
|
|
39057
|
+
return [first2, ...unique.slice(1)];
|
|
39058
|
+
}
|
|
39059
|
+
function nonEmptyHeaderStyleChoices(choices, fallbackLayoutId) {
|
|
39060
|
+
const first2 = choices[0] ?? {
|
|
39061
|
+
id: getCompatibleHeaderStyleIds(fallbackLayoutId)[0] ?? asHeaderStyleId("minimal")
|
|
39062
|
+
};
|
|
39063
|
+
return [first2, ...choices.slice(1)];
|
|
39064
|
+
}
|
|
39065
|
+
function inferHeaderCurationFromLegacyLooks(lookIds) {
|
|
39066
|
+
const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter((selection) => Boolean(selection));
|
|
39067
|
+
const defaultHeaderSelection = selections[0] ?? {
|
|
39068
|
+
layoutId: asHeaderLayoutId("classic"),
|
|
39069
|
+
styleId: asHeaderStyleId("minimal")
|
|
39070
|
+
};
|
|
39071
|
+
const layoutChoices = uniqueHeaderLayoutChoices(
|
|
39072
|
+
selections.map((selection) => headerLayoutChoice(selection.layoutId))
|
|
39073
|
+
);
|
|
39074
|
+
const stylesByLayout = {};
|
|
39075
|
+
for (const layoutChoice of layoutChoices) {
|
|
39076
|
+
const styleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
|
|
39077
|
+
stylesByLayout[headerLayoutRecordKey(layoutChoice.id)] = nonEmptyHeaderStyleChoices(
|
|
39078
|
+
styleChoices,
|
|
39079
|
+
layoutChoice.id
|
|
39080
|
+
);
|
|
39081
|
+
}
|
|
39082
|
+
return {
|
|
39083
|
+
defaultHeaderSelection,
|
|
39084
|
+
recommendedHeaderLayoutChoices: layoutChoices,
|
|
39085
|
+
recommendedHeaderStyleChoicesByLayout: stylesByLayout
|
|
39086
|
+
};
|
|
39087
|
+
}
|
|
39088
|
+
function typographyChoice(id, note) {
|
|
39089
|
+
return { id: asTypographyPresetId(id) };
|
|
39090
|
+
}
|
|
39091
|
+
function defaultTypographyPresetChoicesForRecipe(recipe) {
|
|
39092
|
+
switch (recipe) {
|
|
39093
|
+
case "clean-sans":
|
|
39094
|
+
return [
|
|
39095
|
+
typographyChoice("typography-preset:modern-sans"),
|
|
39096
|
+
typographyChoice("typography-preset:luxe-contrast"),
|
|
39097
|
+
typographyChoice("typography-preset:bold-display")
|
|
39098
|
+
];
|
|
39099
|
+
case "friendly-sans":
|
|
39100
|
+
return [
|
|
39101
|
+
typographyChoice("typography-preset:warm-rounded"),
|
|
39102
|
+
typographyChoice("typography-preset:modern-sans"),
|
|
39103
|
+
typographyChoice("typography-preset:editorial-serif")
|
|
39104
|
+
];
|
|
39105
|
+
case "serif-editorial":
|
|
39106
|
+
return [
|
|
39107
|
+
typographyChoice("typography-preset:editorial-serif"),
|
|
39108
|
+
typographyChoice("typography-preset:classic-serif"),
|
|
39109
|
+
typographyChoice("typography-preset:warm-rounded")
|
|
39110
|
+
];
|
|
39111
|
+
case "classic-serif":
|
|
39112
|
+
return [
|
|
39113
|
+
typographyChoice("typography-preset:classic-serif"),
|
|
39114
|
+
typographyChoice("typography-preset:luxe-contrast"),
|
|
39115
|
+
typographyChoice("typography-preset:editorial-serif")
|
|
39116
|
+
];
|
|
39117
|
+
}
|
|
39118
|
+
}
|
|
37564
39119
|
var curatedSiteStyles = [
|
|
37565
39120
|
defineCuratedSiteStyle({
|
|
37566
39121
|
id: "site-style:calm-studio",
|
|
@@ -37886,6 +39441,102 @@ var curatedSiteStyles = [
|
|
|
37886
39441
|
paletteChoice("warm-neutral-clay")
|
|
37887
39442
|
]
|
|
37888
39443
|
}),
|
|
39444
|
+
defineCuratedSiteStyle({
|
|
39445
|
+
id: "site-style:soft-earth",
|
|
39446
|
+
name: "Soft Earth",
|
|
39447
|
+
description: "Warm, grounded, and editorial for yoga studios, retreats, and wellbeing communities.",
|
|
39448
|
+
generationBrief: "Use cream space, terracotta CTAs, olive proof bands, natural imagery, generous but composed spacing, and editorial serif headings. Prefer a real intro section, image-led offering cards, warm community proof, and a simple two-column FAQ when content allows.",
|
|
39449
|
+
siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 45 },
|
|
39450
|
+
selectionKeywordRules: [
|
|
39451
|
+
{ kind: "word", value: "meditation" },
|
|
39452
|
+
{ kind: "word", value: "wellbeing" },
|
|
39453
|
+
{ kind: "substring", value: "retreat" },
|
|
39454
|
+
{ kind: "phrase", value: "yoga studio" },
|
|
39455
|
+
{ kind: "phrase", value: "mindful movement" }
|
|
39456
|
+
],
|
|
39457
|
+
tokenRecipes: {
|
|
39458
|
+
palette: "warm-neutral",
|
|
39459
|
+
contrast: "standard",
|
|
39460
|
+
radius: "soft",
|
|
39461
|
+
shadow: "subtle",
|
|
39462
|
+
typography: "serif-editorial",
|
|
39463
|
+
spacing: "airy",
|
|
39464
|
+
motion: "subtle"
|
|
39465
|
+
},
|
|
39466
|
+
compositionBudget: balancedBudget,
|
|
39467
|
+
themeOverrides: {
|
|
39468
|
+
typography: {
|
|
39469
|
+
body: {
|
|
39470
|
+
family: "Inter, system-ui, sans-serif",
|
|
39471
|
+
size: "md",
|
|
39472
|
+
weight: "regular",
|
|
39473
|
+
lineHeight: "relaxed",
|
|
39474
|
+
letterSpacing: "normal"
|
|
39475
|
+
},
|
|
39476
|
+
headings: {
|
|
39477
|
+
default: {
|
|
39478
|
+
family: '"Cormorant Garamond", Georgia, serif',
|
|
39479
|
+
weight: "regular",
|
|
39480
|
+
lineHeight: "normal",
|
|
39481
|
+
letterSpacing: "normal",
|
|
39482
|
+
colorToken: "text",
|
|
39483
|
+
italic: null,
|
|
39484
|
+
case: null
|
|
39485
|
+
},
|
|
39486
|
+
h1: {
|
|
39487
|
+
size: "xl",
|
|
39488
|
+
weight: "regular",
|
|
39489
|
+
lineHeight: "normal",
|
|
39490
|
+
letterSpacing: "normal",
|
|
39491
|
+
italic: null
|
|
39492
|
+
},
|
|
39493
|
+
h2: {
|
|
39494
|
+
size: "lg",
|
|
39495
|
+
weight: "regular",
|
|
39496
|
+
lineHeight: "normal",
|
|
39497
|
+
letterSpacing: "normal",
|
|
39498
|
+
italic: null
|
|
39499
|
+
},
|
|
39500
|
+
h3: {
|
|
39501
|
+
size: "md",
|
|
39502
|
+
weight: "regular",
|
|
39503
|
+
lineHeight: "normal",
|
|
39504
|
+
letterSpacing: "normal",
|
|
39505
|
+
italic: null
|
|
39506
|
+
}
|
|
39507
|
+
},
|
|
39508
|
+
scale: "majorThird"
|
|
39509
|
+
},
|
|
39510
|
+
bodyText: {
|
|
39511
|
+
intro: {
|
|
39512
|
+
paragraphSize: "default",
|
|
39513
|
+
headingSize: "editorial"
|
|
39514
|
+
}
|
|
39515
|
+
}
|
|
39516
|
+
},
|
|
39517
|
+
recommendedAppearancePresetIds: [
|
|
39518
|
+
"hero-brand-scrim",
|
|
39519
|
+
"intro-soft-earth-statement",
|
|
39520
|
+
"feature-cards-soft-earth-offerings",
|
|
39521
|
+
"testimonials-soft-earth-proof-band",
|
|
39522
|
+
"faq-soft-earth-two-column",
|
|
39523
|
+
"contact-form-panel"
|
|
39524
|
+
],
|
|
39525
|
+
recommendedHeaderLookIds: ["centered-calm", "minimal-transparent", "editorial-line"],
|
|
39526
|
+
recommendedFooterLookIds: ["footer-muted-grounding", "site-footer-brand-two-band"],
|
|
39527
|
+
buttonPersonalityChoices: [
|
|
39528
|
+
buttonChoice("earth-pill"),
|
|
39529
|
+
buttonChoice("soft-pill"),
|
|
39530
|
+
buttonChoice("pebble"),
|
|
39531
|
+
buttonChoice("editorial-link")
|
|
39532
|
+
],
|
|
39533
|
+
paletteVariantChoices: [
|
|
39534
|
+
paletteChoice("warm-neutral-soft-earth"),
|
|
39535
|
+
paletteChoice("warm-neutral-clay"),
|
|
39536
|
+
paletteChoice("warm-neutral-forest"),
|
|
39537
|
+
paletteChoice("soft-natural-sage")
|
|
39538
|
+
]
|
|
39539
|
+
}),
|
|
37889
39540
|
defineCuratedSiteStyle({
|
|
37890
39541
|
id: "site-style:bold-launch",
|
|
37891
39542
|
name: "Bold Launch",
|
|
@@ -37939,49 +39590,13 @@ var curatedSiteStyles = [
|
|
|
37939
39590
|
motion: "expressive"
|
|
37940
39591
|
},
|
|
37941
39592
|
compositionBudget: expressiveBudget,
|
|
39593
|
+
typographyPresetChoices: [
|
|
39594
|
+
typographyChoice("typography-preset:bold-display"),
|
|
39595
|
+
typographyChoice("typography-preset:modern-sans"),
|
|
39596
|
+
typographyChoice("typography-preset:luxe-contrast")
|
|
39597
|
+
],
|
|
39598
|
+
defaultTypographyPresetId: "typography-preset:bold-display",
|
|
37942
39599
|
themeOverrides: {
|
|
37943
|
-
typography: {
|
|
37944
|
-
body: {
|
|
37945
|
-
family: "Manrope, system-ui, sans-serif",
|
|
37946
|
-
size: "lg",
|
|
37947
|
-
weight: "regular",
|
|
37948
|
-
lineHeight: "relaxed",
|
|
37949
|
-
letterSpacing: "normal"
|
|
37950
|
-
},
|
|
37951
|
-
headings: {
|
|
37952
|
-
default: {
|
|
37953
|
-
family: '"TAN - PEARL", sans-serif',
|
|
37954
|
-
weight: "bold",
|
|
37955
|
-
lineHeight: "normal",
|
|
37956
|
-
letterSpacing: "tight",
|
|
37957
|
-
colorToken: "primary",
|
|
37958
|
-
italic: null,
|
|
37959
|
-
case: null
|
|
37960
|
-
},
|
|
37961
|
-
h1: {
|
|
37962
|
-
size: "xl",
|
|
37963
|
-
weight: "bold",
|
|
37964
|
-
lineHeight: "normal",
|
|
37965
|
-
letterSpacing: "tight",
|
|
37966
|
-
italic: null
|
|
37967
|
-
},
|
|
37968
|
-
h2: {
|
|
37969
|
-
size: "lg",
|
|
37970
|
-
weight: "bold",
|
|
37971
|
-
lineHeight: "normal",
|
|
37972
|
-
letterSpacing: "normal",
|
|
37973
|
-
italic: null
|
|
37974
|
-
},
|
|
37975
|
-
h3: {
|
|
37976
|
-
size: "md",
|
|
37977
|
-
weight: "bold",
|
|
37978
|
-
lineHeight: "normal",
|
|
37979
|
-
letterSpacing: "normal",
|
|
37980
|
-
italic: null
|
|
37981
|
-
}
|
|
37982
|
-
},
|
|
37983
|
-
scale: "balanced"
|
|
37984
|
-
},
|
|
37985
39600
|
bodyText: {
|
|
37986
39601
|
intro: {
|
|
37987
39602
|
paragraphSize: "editorial",
|
|
@@ -38185,6 +39800,8 @@ var repairActionsByIssueKind = {
|
|
|
38185
39800
|
"unsupported-testimonial-card-treatment": ["fallback-testimonial-card-treatment"],
|
|
38186
39801
|
"unsupported-tile-treatment": ["fallback-tile-treatment"],
|
|
38187
39802
|
"unsupported-eyebrow-treatment": ["fallback-eyebrow-treatment"],
|
|
39803
|
+
"unsupported-heading-decoration": ["fallback-heading-decoration"],
|
|
39804
|
+
"unsupported-accordion-icon-treatment": ["fallback-accordion-icon-treatment"],
|
|
38188
39805
|
"image-surface-treatment-without-image-surface": ["fallback-image-surface-treatment"],
|
|
38189
39806
|
"image-surface-motion-without-image-surface": ["fallback-image-surface-motion"],
|
|
38190
39807
|
"hero-legibility-overridden-by-image-surface-treatment": ["remove-hero-legibility"],
|
|
@@ -38215,6 +39832,12 @@ function supportsTileTreatment(capability, treatment) {
|
|
|
38215
39832
|
function supportsEyebrowTreatment(capability, treatment) {
|
|
38216
39833
|
return capability.eyebrowTreatments.includes(treatment);
|
|
38217
39834
|
}
|
|
39835
|
+
function supportsHeadingDecoration(capability, headingDecoration) {
|
|
39836
|
+
return headingDecoration.family === "none" || Boolean(capability.headingDecorations?.includes(headingDecoration.family));
|
|
39837
|
+
}
|
|
39838
|
+
function supportsAccordionIconTreatment(capability, treatment) {
|
|
39839
|
+
return Boolean(capability.accordionIconSets?.includes(treatment.iconSet));
|
|
39840
|
+
}
|
|
38218
39841
|
function isDecorativeTransition(transition) {
|
|
38219
39842
|
return transition !== "none";
|
|
38220
39843
|
}
|
|
@@ -38229,7 +39852,9 @@ var blockDesignFallback = {
|
|
|
38229
39852
|
imageSurfaceMotion: "static",
|
|
38230
39853
|
testimonialCardTreatment: "default",
|
|
38231
39854
|
tileTreatment: "default",
|
|
38232
|
-
eyebrowTreatment: "plain"
|
|
39855
|
+
eyebrowTreatment: "plain",
|
|
39856
|
+
headingDecoration: noHeadingDecoration,
|
|
39857
|
+
accordionIconTreatment: null
|
|
38233
39858
|
};
|
|
38234
39859
|
function blockDesignRequest(block) {
|
|
38235
39860
|
return {
|
|
@@ -38243,7 +39868,9 @@ function blockDesignRequest(block) {
|
|
|
38243
39868
|
imageSurfaceMotion: block.imageSurfaceMotion,
|
|
38244
39869
|
testimonialCardTreatment: block.testimonialCardTreatment,
|
|
38245
39870
|
tileTreatment: block.tileTreatment,
|
|
38246
|
-
eyebrowTreatment: block.eyebrowTreatment
|
|
39871
|
+
eyebrowTreatment: block.eyebrowTreatment,
|
|
39872
|
+
headingDecoration: block.headingDecoration,
|
|
39873
|
+
accordionIconTreatment: block.accordionIconTreatment
|
|
38247
39874
|
};
|
|
38248
39875
|
}
|
|
38249
39876
|
function resolveBlockDesignPlan(input) {
|
|
@@ -38261,6 +39888,8 @@ function resolveBlockDesignPlan(input) {
|
|
|
38261
39888
|
let appliedTestimonialCardTreatment = block.testimonialCardTreatment ?? "default";
|
|
38262
39889
|
let appliedTileTreatment = block.tileTreatment ?? "default";
|
|
38263
39890
|
let appliedEyebrowTreatment = block.eyebrowTreatment ?? "plain";
|
|
39891
|
+
let appliedHeadingDecoration = block.headingDecoration ?? noHeadingDecoration;
|
|
39892
|
+
let appliedAccordionIconTreatment = block.accordionIconTreatment ?? null;
|
|
38264
39893
|
if (!capability) {
|
|
38265
39894
|
issues.push({
|
|
38266
39895
|
kind: "missing-block-design-capability",
|
|
@@ -38285,7 +39914,9 @@ function resolveBlockDesignPlan(input) {
|
|
|
38285
39914
|
appliedImageSurfaceMotion: blockDesignFallback.imageSurfaceMotion,
|
|
38286
39915
|
appliedTestimonialCardTreatment: blockDesignFallback.testimonialCardTreatment,
|
|
38287
39916
|
appliedTileTreatment: blockDesignFallback.tileTreatment,
|
|
38288
|
-
appliedEyebrowTreatment: blockDesignFallback.eyebrowTreatment
|
|
39917
|
+
appliedEyebrowTreatment: blockDesignFallback.eyebrowTreatment,
|
|
39918
|
+
appliedHeadingDecoration: blockDesignFallback.headingDecoration,
|
|
39919
|
+
appliedAccordionIconTreatment: blockDesignFallback.accordionIconTreatment
|
|
38289
39920
|
};
|
|
38290
39921
|
}
|
|
38291
39922
|
if (capability.kind === "not-designed") {
|
|
@@ -38313,7 +39944,9 @@ function resolveBlockDesignPlan(input) {
|
|
|
38313
39944
|
appliedImageSurfaceMotion: blockDesignFallback.imageSurfaceMotion,
|
|
38314
39945
|
appliedTestimonialCardTreatment: blockDesignFallback.testimonialCardTreatment,
|
|
38315
39946
|
appliedTileTreatment: blockDesignFallback.tileTreatment,
|
|
38316
|
-
appliedEyebrowTreatment: blockDesignFallback.eyebrowTreatment
|
|
39947
|
+
appliedEyebrowTreatment: blockDesignFallback.eyebrowTreatment,
|
|
39948
|
+
appliedHeadingDecoration: blockDesignFallback.headingDecoration,
|
|
39949
|
+
appliedAccordionIconTreatment: blockDesignFallback.accordionIconTreatment
|
|
38317
39950
|
};
|
|
38318
39951
|
}
|
|
38319
39952
|
if (capability.sectionSurfaces === "unsupported") {
|
|
@@ -38442,6 +40075,36 @@ function resolveBlockDesignPlan(input) {
|
|
|
38442
40075
|
allowedRepairActions: repairActionsForIssue("unsupported-eyebrow-treatment")
|
|
38443
40076
|
});
|
|
38444
40077
|
}
|
|
40078
|
+
if (!supportsHeadingDecoration(capability, appliedHeadingDecoration)) {
|
|
40079
|
+
const requested = appliedHeadingDecoration;
|
|
40080
|
+
appliedHeadingDecoration = noHeadingDecoration;
|
|
40081
|
+
issues.push({
|
|
40082
|
+
kind: "unsupported-heading-decoration",
|
|
40083
|
+
blockId: block.blockId,
|
|
40084
|
+
blockKind: block.blockKind,
|
|
40085
|
+
purpose: block.purpose,
|
|
40086
|
+
requested,
|
|
40087
|
+
fallback: appliedHeadingDecoration,
|
|
40088
|
+
policy: input.policy,
|
|
40089
|
+
severity: designIssueSeverityForPolicy(input.policy),
|
|
40090
|
+
allowedRepairActions: repairActionsForIssue("unsupported-heading-decoration")
|
|
40091
|
+
});
|
|
40092
|
+
}
|
|
40093
|
+
if (appliedAccordionIconTreatment && !supportsAccordionIconTreatment(capability, appliedAccordionIconTreatment)) {
|
|
40094
|
+
const requested = appliedAccordionIconTreatment;
|
|
40095
|
+
appliedAccordionIconTreatment = null;
|
|
40096
|
+
issues.push({
|
|
40097
|
+
kind: "unsupported-accordion-icon-treatment",
|
|
40098
|
+
blockId: block.blockId,
|
|
40099
|
+
blockKind: block.blockKind,
|
|
40100
|
+
purpose: block.purpose,
|
|
40101
|
+
requested,
|
|
40102
|
+
fallback: appliedAccordionIconTreatment,
|
|
40103
|
+
policy: input.policy,
|
|
40104
|
+
severity: designIssueSeverityForPolicy(input.policy),
|
|
40105
|
+
allowedRepairActions: repairActionsForIssue("unsupported-accordion-icon-treatment")
|
|
40106
|
+
});
|
|
40107
|
+
}
|
|
38445
40108
|
if (appliedSectionSurface !== "hero-image" && appliedImageSurfaceTreatment.kind !== "none") {
|
|
38446
40109
|
const requested = appliedImageSurfaceTreatment;
|
|
38447
40110
|
appliedImageSurfaceTreatment = { kind: "none" };
|
|
@@ -38513,7 +40176,9 @@ function resolveBlockDesignPlan(input) {
|
|
|
38513
40176
|
appliedImageSurfaceMotion,
|
|
38514
40177
|
appliedTestimonialCardTreatment,
|
|
38515
40178
|
appliedTileTreatment,
|
|
38516
|
-
appliedEyebrowTreatment
|
|
40179
|
+
appliedEyebrowTreatment,
|
|
40180
|
+
appliedHeadingDecoration,
|
|
40181
|
+
appliedAccordionIconTreatment
|
|
38517
40182
|
};
|
|
38518
40183
|
});
|
|
38519
40184
|
const transitionSafeBlocks = blocks.map((block, index2) => {
|
|
@@ -39132,7 +40797,9 @@ function compileSectionStyles(input) {
|
|
|
39132
40797
|
...background ? { background } : {},
|
|
39133
40798
|
...sectionMinHeightForIntent(input.sectionHeight, input.surface),
|
|
39134
40799
|
...tileTreatmentForSection(input.tileTreatment),
|
|
39135
|
-
...eyebrowTreatmentForSection(input.eyebrowTreatment)
|
|
40800
|
+
...eyebrowTreatmentForSection(input.eyebrowTreatment),
|
|
40801
|
+
...headingDecorationForSection(input.headingDecoration),
|
|
40802
|
+
...accordionIconTreatmentForSection(input.accordionIconTreatment)
|
|
39136
40803
|
});
|
|
39137
40804
|
}
|
|
39138
40805
|
function tileTreatmentForSection(tileTreatment) {
|
|
@@ -39141,6 +40808,12 @@ function tileTreatmentForSection(tileTreatment) {
|
|
|
39141
40808
|
function eyebrowTreatmentForSection(eyebrowTreatment) {
|
|
39142
40809
|
return eyebrowTreatment === "plain" ? {} : { eyebrowTreatment };
|
|
39143
40810
|
}
|
|
40811
|
+
function headingDecorationForSection(headingDecoration) {
|
|
40812
|
+
return !headingDecoration || headingDecoration.family === "none" ? {} : { headingDecoration };
|
|
40813
|
+
}
|
|
40814
|
+
function accordionIconTreatmentForSection(accordionIconTreatment) {
|
|
40815
|
+
return !accordionIconTreatment ? {} : { accordionIconTreatment };
|
|
40816
|
+
}
|
|
39144
40817
|
function sectionMinHeightForIntent(sectionHeight, surface) {
|
|
39145
40818
|
if (sectionHeight === "default") {
|
|
39146
40819
|
return surface === "hero-image" ? { minHeight: "hero" } : {};
|
|
@@ -39368,7 +41041,9 @@ function compileBlockRuntimeFields(input) {
|
|
|
39368
41041
|
imageSurfaceTreatment: input.block.appliedImageSurfaceTreatment,
|
|
39369
41042
|
imageSurfaceMotion: input.block.appliedImageSurfaceMotion,
|
|
39370
41043
|
tileTreatment: input.block.appliedTileTreatment,
|
|
39371
|
-
eyebrowTreatment: input.block.appliedEyebrowTreatment
|
|
41044
|
+
eyebrowTreatment: input.block.appliedEyebrowTreatment,
|
|
41045
|
+
headingDecoration: input.block.appliedHeadingDecoration,
|
|
41046
|
+
accordionIconTreatment: input.block.appliedAccordionIconTreatment
|
|
39372
41047
|
}),
|
|
39373
41048
|
...containerStyles ? { _containerStyles: containerStyles } : {},
|
|
39374
41049
|
...cardStyles ? { _cardStyles: cardStyles } : {},
|
|
@@ -39616,12 +41291,52 @@ function applySiteStyleThemeOverrides(theme, siteStyle) {
|
|
|
39616
41291
|
...overrides.inputs ? { inputs: overrides.inputs } : {}
|
|
39617
41292
|
});
|
|
39618
41293
|
}
|
|
39619
|
-
function
|
|
41294
|
+
function applyTypographySelectionToTheme(theme, compiledTypography) {
|
|
41295
|
+
return themeSchema.parse({
|
|
41296
|
+
...theme,
|
|
41297
|
+
typography: compiledTypography.themeTypography,
|
|
41298
|
+
...compiledTypography.heroTypography ? {
|
|
41299
|
+
hero: {
|
|
41300
|
+
...theme.hero,
|
|
41301
|
+
typography: mergeHeroTypographyOverride(
|
|
41302
|
+
theme.hero?.typography,
|
|
41303
|
+
compiledTypography.heroTypography
|
|
41304
|
+
)
|
|
41305
|
+
}
|
|
41306
|
+
} : {}
|
|
41307
|
+
});
|
|
41308
|
+
}
|
|
41309
|
+
function canonicalHeaderSelectionInput(layoutId, styleId) {
|
|
41310
|
+
if (layoutId === void 0 || layoutId === null || styleId === void 0 || styleId === null) {
|
|
41311
|
+
return { kind: "legacy" };
|
|
41312
|
+
}
|
|
41313
|
+
return {
|
|
41314
|
+
kind: "canonical",
|
|
41315
|
+
selection: { layoutId, styleId }
|
|
41316
|
+
};
|
|
41317
|
+
}
|
|
41318
|
+
function applySiteChromeLooks({
|
|
41319
|
+
theme,
|
|
41320
|
+
siteStyle,
|
|
41321
|
+
headerLookId,
|
|
41322
|
+
headerLayoutId,
|
|
41323
|
+
headerStyleId,
|
|
41324
|
+
footerLookId,
|
|
41325
|
+
headerSelectionContext,
|
|
41326
|
+
footerSelectionContext
|
|
41327
|
+
}) {
|
|
41328
|
+
const canonicalHeaderSelection = canonicalHeaderSelectionInput(headerLayoutId, headerStyleId);
|
|
39620
41329
|
const headerSelection = resolveHeaderLook({
|
|
39621
41330
|
theme,
|
|
39622
41331
|
recommendedLookIds: headerLookId ? [headerLookId] : siteStyle.recommendedHeaderLookIds,
|
|
39623
41332
|
context: headerSelectionContext
|
|
39624
41333
|
});
|
|
41334
|
+
const headerLayoutStyleSelection = canonicalHeaderSelection.kind === "canonical" ? resolveHeaderLayoutStyleSelection({
|
|
41335
|
+
layoutId: canonicalHeaderSelection.selection.layoutId,
|
|
41336
|
+
styleId: canonicalHeaderSelection.selection.styleId
|
|
41337
|
+
}).selection : resolveLegacyHeaderLookAlias(headerSelection.selectedLookId) ?? siteStyle.defaultHeaderSelection;
|
|
41338
|
+
const header = canonicalHeaderSelection.kind === "canonical" ? compileHeaderLayoutStyleSelection(theme, headerLayoutStyleSelection) : headerSelection.header;
|
|
41339
|
+
const resolvedHeaderLookId = canonicalHeaderSelection.kind === "canonical" ? findLegacyHeaderLookIdForSelection(headerLayoutStyleSelection) : headerSelection.selectedLookId;
|
|
39625
41340
|
const footerSelection = resolveFooterLook({
|
|
39626
41341
|
theme,
|
|
39627
41342
|
recommendedLookIds: footerLookId ? [footerLookId] : siteStyle.recommendedFooterLookIds,
|
|
@@ -39629,12 +41344,14 @@ function applySiteChromeLooks(theme, siteStyle, headerLookId, footerLookId, head
|
|
|
39629
41344
|
});
|
|
39630
41345
|
const themeWithChrome = themeSchema.parse({
|
|
39631
41346
|
...theme,
|
|
39632
|
-
header
|
|
41347
|
+
header,
|
|
39633
41348
|
footer: footerSelection.footer
|
|
39634
41349
|
});
|
|
39635
41350
|
return {
|
|
39636
41351
|
theme: themeWithChrome,
|
|
39637
41352
|
headerSelection,
|
|
41353
|
+
headerLayoutStyleSelection,
|
|
41354
|
+
resolvedHeaderLookId,
|
|
39638
41355
|
footerSelection
|
|
39639
41356
|
};
|
|
39640
41357
|
}
|
|
@@ -39644,7 +41361,13 @@ function compileSiteThemeFromSelections(input) {
|
|
|
39644
41361
|
buttonPersonalityId,
|
|
39645
41362
|
paletteVariantId,
|
|
39646
41363
|
paletteOverrides,
|
|
41364
|
+
typographyPresetId,
|
|
41365
|
+
typographyBodyFontOverride,
|
|
41366
|
+
typographyHeadingFontOverride,
|
|
41367
|
+
typographySelection,
|
|
39647
41368
|
headerLookId,
|
|
41369
|
+
headerLayoutId,
|
|
41370
|
+
headerStyleId,
|
|
39648
41371
|
footerLookId,
|
|
39649
41372
|
headerSelectionContext,
|
|
39650
41373
|
footerSelectionContext
|
|
@@ -39678,33 +41401,55 @@ function compileSiteThemeFromSelections(input) {
|
|
|
39678
41401
|
fellBackTo: paletteResult.resolved
|
|
39679
41402
|
});
|
|
39680
41403
|
}
|
|
41404
|
+
const typographyResult = resolveTypographySelection({
|
|
41405
|
+
siteStyle,
|
|
41406
|
+
typographyPresetId,
|
|
41407
|
+
typographyBodyFontOverride,
|
|
41408
|
+
typographyHeadingFontOverride,
|
|
41409
|
+
typographySelection
|
|
41410
|
+
});
|
|
41411
|
+
warnings.push(...typographyResult.warnings);
|
|
39681
41412
|
const theme = compileTokenRecipes(siteStyle.template.tokenRecipes, {
|
|
39682
41413
|
buttonPersonalityId: personalityResult.resolved,
|
|
39683
41414
|
paletteVariantId: paletteResult.resolved,
|
|
39684
41415
|
paletteOverrides: paletteOverrides ?? void 0
|
|
39685
41416
|
});
|
|
39686
|
-
const
|
|
41417
|
+
const themeWithTypography = applyTypographySelectionToTheme(
|
|
39687
41418
|
theme,
|
|
41419
|
+
typographyResult.compiled
|
|
41420
|
+
);
|
|
41421
|
+
const themeWithSiteStyleOverrides = applySiteStyleThemeOverrides(
|
|
41422
|
+
themeWithTypography,
|
|
39688
41423
|
siteStyle
|
|
39689
41424
|
);
|
|
39690
|
-
const siteChromeResult = applySiteChromeLooks(
|
|
39691
|
-
themeWithSiteStyleOverrides,
|
|
41425
|
+
const siteChromeResult = applySiteChromeLooks({
|
|
41426
|
+
theme: themeWithSiteStyleOverrides,
|
|
39692
41427
|
siteStyle,
|
|
39693
41428
|
headerLookId,
|
|
41429
|
+
headerLayoutId,
|
|
41430
|
+
headerStyleId,
|
|
39694
41431
|
footerLookId,
|
|
39695
41432
|
headerSelectionContext,
|
|
39696
41433
|
footerSelectionContext
|
|
39697
|
-
);
|
|
41434
|
+
});
|
|
39698
41435
|
return {
|
|
39699
41436
|
theme: withSiteStyleMetadata(siteChromeResult.theme, siteStyle),
|
|
39700
41437
|
requestedSelections: {
|
|
39701
41438
|
headerLookId: headerLookId ?? null,
|
|
41439
|
+
headerLayoutId: headerLayoutId ?? null,
|
|
41440
|
+
headerStyleId: headerStyleId ?? null,
|
|
39702
41441
|
footerLookId: footerLookId ?? null
|
|
39703
41442
|
},
|
|
39704
41443
|
resolvedSelections: {
|
|
39705
41444
|
buttonPersonalityId: personalityResult.resolved,
|
|
39706
41445
|
paletteVariantId: paletteResult.resolved,
|
|
39707
|
-
|
|
41446
|
+
typographySelection: typographyResult.compiled.resolvedSelection,
|
|
41447
|
+
typographyPresetId: typographyResult.compiled.resolvedSelection.kind === "preset" ? typographyResult.compiled.resolvedSelection.presetId : null,
|
|
41448
|
+
typographyBodyFontOverride: typographyResult.compiled.resolvedSelection.kind === "preset" ? typographyResult.compiled.resolvedSelection.bodyFontOverride : null,
|
|
41449
|
+
typographyHeadingFontOverride: typographyResult.compiled.resolvedSelection.kind === "preset" ? typographyResult.compiled.resolvedSelection.headingFontOverride : null,
|
|
41450
|
+
headerLookId: siteChromeResult.resolvedHeaderLookId,
|
|
41451
|
+
headerLayoutId: siteChromeResult.headerLayoutStyleSelection.layoutId,
|
|
41452
|
+
headerStyleId: siteChromeResult.headerLayoutStyleSelection.styleId,
|
|
39708
41453
|
footerLookId: siteChromeResult.footerSelection.selectedLookId
|
|
39709
41454
|
},
|
|
39710
41455
|
headerSelection: siteChromeResult.headerSelection,
|
|
@@ -39712,6 +41457,62 @@ function compileSiteThemeFromSelections(input) {
|
|
|
39712
41457
|
warnings
|
|
39713
41458
|
};
|
|
39714
41459
|
}
|
|
41460
|
+
function resolveTypographySelection(input) {
|
|
41461
|
+
if (input.typographySelection?.kind === "custom") {
|
|
41462
|
+
return {
|
|
41463
|
+
compiled: compileTypographySelection({
|
|
41464
|
+
selection: input.typographySelection,
|
|
41465
|
+
defaultPresetId: input.siteStyle.defaultTypographyPresetId
|
|
41466
|
+
}),
|
|
41467
|
+
warnings: []
|
|
41468
|
+
};
|
|
41469
|
+
}
|
|
41470
|
+
const requestedPresetId = input.typographySelection?.kind === "preset" ? input.typographySelection.presetId : input.typographyPresetId ?? null;
|
|
41471
|
+
const parsed = parsePersistedTypographyPresetId(requestedPresetId);
|
|
41472
|
+
const resolved = resolveTypographyPresetRequest(parsed, input.siteStyle);
|
|
41473
|
+
const selection = {
|
|
41474
|
+
kind: "preset",
|
|
41475
|
+
presetId: resolved.presetId,
|
|
41476
|
+
bodyFontOverride: input.typographySelection?.kind === "preset" ? input.typographySelection.bodyFontOverride : input.typographyBodyFontOverride ?? null,
|
|
41477
|
+
headingFontOverride: input.typographySelection?.kind === "preset" ? input.typographySelection.headingFontOverride : input.typographyHeadingFontOverride ?? null
|
|
41478
|
+
};
|
|
41479
|
+
return {
|
|
41480
|
+
compiled: compileTypographySelection({
|
|
41481
|
+
selection,
|
|
41482
|
+
defaultPresetId: input.siteStyle.defaultTypographyPresetId
|
|
41483
|
+
}),
|
|
41484
|
+
warnings: resolved.warning ? [resolved.warning] : []
|
|
41485
|
+
};
|
|
41486
|
+
}
|
|
41487
|
+
function resolveTypographyPresetRequest(parsed, siteStyle) {
|
|
41488
|
+
switch (parsed.kind) {
|
|
41489
|
+
case "empty":
|
|
41490
|
+
return { presetId: siteStyle.defaultTypographyPresetId, warning: null };
|
|
41491
|
+
case "unknown":
|
|
41492
|
+
return {
|
|
41493
|
+
presetId: siteStyle.defaultTypographyPresetId,
|
|
41494
|
+
warning: {
|
|
41495
|
+
kind: "rejected-typography-preset",
|
|
41496
|
+
requested: parsed.raw,
|
|
41497
|
+
fellBackTo: siteStyle.defaultTypographyPresetId,
|
|
41498
|
+
reason: "unknown"
|
|
41499
|
+
}
|
|
41500
|
+
};
|
|
41501
|
+
case "known":
|
|
41502
|
+
if (siteStyle.typographyPresetChoices.some((choice) => choice.id === parsed.id)) {
|
|
41503
|
+
return { presetId: parsed.id, warning: null };
|
|
41504
|
+
}
|
|
41505
|
+
return {
|
|
41506
|
+
presetId: siteStyle.defaultTypographyPresetId,
|
|
41507
|
+
warning: {
|
|
41508
|
+
kind: "rejected-typography-preset",
|
|
41509
|
+
requested: parsed.id,
|
|
41510
|
+
fellBackTo: siteStyle.defaultTypographyPresetId,
|
|
41511
|
+
reason: "not-curated-for-style"
|
|
41512
|
+
}
|
|
41513
|
+
};
|
|
41514
|
+
}
|
|
41515
|
+
}
|
|
39715
41516
|
function toCuratedRequest(parsed) {
|
|
39716
41517
|
switch (parsed.kind) {
|
|
39717
41518
|
case "known":
|
|
@@ -43857,8 +45658,9 @@ var faqAccordionFragment = defineFragment({
|
|
|
43857
45658
|
},
|
|
43858
45659
|
fallback: "rb-faq-item"
|
|
43859
45660
|
},
|
|
43860
|
-
iconStyle: { $bind: { from: "theme.accordions.icon.style" } }
|
|
43861
|
-
//
|
|
45661
|
+
iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
|
|
45662
|
+
// Legacy theme accordion style
|
|
45663
|
+
iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
|
|
43862
45664
|
},
|
|
43863
45665
|
triggerFrom: "faqItem.question",
|
|
43864
45666
|
contentFrom: "faqItem.answer"
|
|
@@ -45035,6 +46837,334 @@ var heroBlockDefinition = {
|
|
|
45035
46837
|
manifest: heroManifest
|
|
45036
46838
|
};
|
|
45037
46839
|
|
|
46840
|
+
// ../blocks/src/system/fields/aspectRatio.ts
|
|
46841
|
+
var standardAspectRatioOptions = [
|
|
46842
|
+
{ value: "auto", label: "Auto (original)" },
|
|
46843
|
+
{ value: "16/9", label: "16:9 (Landscape)" },
|
|
46844
|
+
{ value: "4/3", label: "4:3 (Standard)" },
|
|
46845
|
+
{ value: "1/1", label: "1:1 (Square)" },
|
|
46846
|
+
{ value: "3/4", label: "3:4 (Portrait)" }
|
|
46847
|
+
];
|
|
46848
|
+
function createAspectRatioField(options = {}) {
|
|
46849
|
+
return {
|
|
46850
|
+
id: options.id ?? "aspectRatio",
|
|
46851
|
+
type: "select",
|
|
46852
|
+
label: options.label ?? "Aspect ratio",
|
|
46853
|
+
...options.description ? { description: options.description } : {},
|
|
46854
|
+
required: false,
|
|
46855
|
+
defaultValue: options.defaultValue ?? "auto",
|
|
46856
|
+
multiple: false,
|
|
46857
|
+
options: [...standardAspectRatioOptions],
|
|
46858
|
+
ui: {
|
|
46859
|
+
intent: options.uiIntent ?? "display",
|
|
46860
|
+
...options.visibleWhen ? { visibleWhen: options.visibleWhen } : {}
|
|
46861
|
+
}
|
|
46862
|
+
};
|
|
46863
|
+
}
|
|
46864
|
+
|
|
46865
|
+
// ../blocks/src/system/fields/imageLayout.ts
|
|
46866
|
+
function createImageColSizeField(options = {}) {
|
|
46867
|
+
const {
|
|
46868
|
+
id = "imageColSize",
|
|
46869
|
+
label = "Image column size",
|
|
46870
|
+
description = "Controls how large the image/thumbnail column is at desktop breakpoints.",
|
|
46871
|
+
defaultValue: defaultValue2 = "1/3",
|
|
46872
|
+
uiIntent = "display",
|
|
46873
|
+
visibleWhen
|
|
46874
|
+
} = options;
|
|
46875
|
+
return {
|
|
46876
|
+
id,
|
|
46877
|
+
type: "select",
|
|
46878
|
+
label,
|
|
46879
|
+
description,
|
|
46880
|
+
required: false,
|
|
46881
|
+
defaultValue: defaultValue2,
|
|
46882
|
+
multiple: false,
|
|
46883
|
+
options: [
|
|
46884
|
+
{ value: "1/4", label: "Small (1/4)" },
|
|
46885
|
+
{ value: "1/3", label: "Medium (1/3)" },
|
|
46886
|
+
{ value: "2/5", label: "Large (2/5)" },
|
|
46887
|
+
{ value: "1/2", label: "Extra large (1/2)" },
|
|
46888
|
+
{ value: "2/3", label: "Huge (2/3)" }
|
|
46889
|
+
],
|
|
46890
|
+
ui: {
|
|
46891
|
+
intent: uiIntent,
|
|
46892
|
+
...visibleWhen ? { visibleWhen } : {}
|
|
46893
|
+
}
|
|
46894
|
+
};
|
|
46895
|
+
}
|
|
46896
|
+
function createImagePositionField(options = {}) {
|
|
46897
|
+
const {
|
|
46898
|
+
id = "imagePosition",
|
|
46899
|
+
label = "Image position",
|
|
46900
|
+
description = "Choose which side the image appears on.",
|
|
46901
|
+
defaultValue: defaultValue2 = "left",
|
|
46902
|
+
includeAlternate = false,
|
|
46903
|
+
uiIntent = "display",
|
|
46904
|
+
visibleWhen
|
|
46905
|
+
} = options;
|
|
46906
|
+
const positionOptions = [
|
|
46907
|
+
{ value: "left", label: "Left" },
|
|
46908
|
+
{ value: "right", label: "Right" },
|
|
46909
|
+
...includeAlternate ? [{ value: "alternate", label: "Alternate" }] : []
|
|
46910
|
+
];
|
|
46911
|
+
return {
|
|
46912
|
+
id,
|
|
46913
|
+
type: "select",
|
|
46914
|
+
label,
|
|
46915
|
+
description,
|
|
46916
|
+
required: false,
|
|
46917
|
+
defaultValue: defaultValue2,
|
|
46918
|
+
multiple: false,
|
|
46919
|
+
// Spread to get a mutable array type without unsafe casts.
|
|
46920
|
+
options: [...positionOptions],
|
|
46921
|
+
ui: {
|
|
46922
|
+
intent: uiIntent,
|
|
46923
|
+
...visibleWhen ? { visibleWhen } : {}
|
|
46924
|
+
}
|
|
46925
|
+
};
|
|
46926
|
+
}
|
|
46927
|
+
|
|
46928
|
+
// ../blocks/src/system/blocks/intro.ts
|
|
46929
|
+
function introHeading(className) {
|
|
46930
|
+
return text(
|
|
46931
|
+
{
|
|
46932
|
+
as: "h2",
|
|
46933
|
+
className
|
|
46934
|
+
},
|
|
46935
|
+
when("content.title"),
|
|
46936
|
+
bind("content.title")
|
|
46937
|
+
);
|
|
46938
|
+
}
|
|
46939
|
+
function introBody(className = "rb-prose rb-max-w-none") {
|
|
46940
|
+
return richText({ className }, bind("content.body"));
|
|
46941
|
+
}
|
|
46942
|
+
function introCtas(justify = "start") {
|
|
46943
|
+
return ctaRow({
|
|
46944
|
+
justify,
|
|
46945
|
+
gap: "md",
|
|
46946
|
+
containerClassName: "rb-mt-2"
|
|
46947
|
+
});
|
|
46948
|
+
}
|
|
46949
|
+
function introCopyStack(options = {}) {
|
|
46950
|
+
return stack(
|
|
46951
|
+
{
|
|
46952
|
+
gap: "md",
|
|
46953
|
+
className: options.className ?? "rb-intro-copy"
|
|
46954
|
+
},
|
|
46955
|
+
[
|
|
46956
|
+
introHeading(options.headingClassName ?? "rb-intro-title"),
|
|
46957
|
+
introBody(options.bodyClassName),
|
|
46958
|
+
introCtas(options.ctaJustify)
|
|
46959
|
+
]
|
|
46960
|
+
);
|
|
46961
|
+
}
|
|
46962
|
+
var introMedia = media(
|
|
46963
|
+
{
|
|
46964
|
+
className: "rb-intro-media rb-w-full rb-h-auto rb-object-cover",
|
|
46965
|
+
style: {
|
|
46966
|
+
aspectRatio: { $bind: { from: "content.aspectRatio" } }
|
|
46967
|
+
}
|
|
46968
|
+
},
|
|
46969
|
+
bind("content.media")
|
|
46970
|
+
);
|
|
46971
|
+
var centeredCopyLayout = styledSection({
|
|
46972
|
+
children: styledContainer({
|
|
46973
|
+
rootType: "stack",
|
|
46974
|
+
rootProps: { gap: "lg" },
|
|
46975
|
+
children: [
|
|
46976
|
+
introCopyStack({
|
|
46977
|
+
className: "rb-intro-copy rb-mx-auto rb-max-w-3xl rb-text-center",
|
|
46978
|
+
headingClassName: "rb-intro-title rb-text-center",
|
|
46979
|
+
bodyClassName: "rb-prose rb-mx-auto rb-max-w-none",
|
|
46980
|
+
ctaJustify: "center"
|
|
46981
|
+
})
|
|
46982
|
+
]
|
|
46983
|
+
}),
|
|
46984
|
+
baseClass: "",
|
|
46985
|
+
spacing: "medium"
|
|
46986
|
+
});
|
|
46987
|
+
var statementCopyLayout = styledSection({
|
|
46988
|
+
children: styledContainer({
|
|
46989
|
+
children: [
|
|
46990
|
+
el(
|
|
46991
|
+
"div",
|
|
46992
|
+
{
|
|
46993
|
+
className: "rb-intro rb-intro-statement rb-grid rb-grid-cols-1 rb-gap-8 rb-md-grid-cols-2 rb-md-items-start"
|
|
46994
|
+
},
|
|
46995
|
+
[
|
|
46996
|
+
introHeading("rb-intro-title rb-max-w-xl"),
|
|
46997
|
+
stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
|
|
46998
|
+
introBody(),
|
|
46999
|
+
introCtas("start")
|
|
47000
|
+
])
|
|
47001
|
+
]
|
|
47002
|
+
)
|
|
47003
|
+
]
|
|
47004
|
+
}),
|
|
47005
|
+
baseClass: "",
|
|
47006
|
+
spacing: "medium"
|
|
47007
|
+
});
|
|
47008
|
+
var statementMediaLayout = styledSection({
|
|
47009
|
+
children: styledContainer({
|
|
47010
|
+
children: [
|
|
47011
|
+
el(
|
|
47012
|
+
"div",
|
|
47013
|
+
{
|
|
47014
|
+
className: "rb-intro rb-intro-statement-media rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-3 rb-lg-items-center"
|
|
47015
|
+
},
|
|
47016
|
+
[
|
|
47017
|
+
introHeading("rb-intro-title rb-max-w-xl"),
|
|
47018
|
+
stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
|
|
47019
|
+
introBody(),
|
|
47020
|
+
introCtas("start")
|
|
47021
|
+
]),
|
|
47022
|
+
el("div", { className: "rb-intro-media-wrap rb-w-full" }, [introMedia], when("content.media"))
|
|
47023
|
+
]
|
|
47024
|
+
)
|
|
47025
|
+
]
|
|
47026
|
+
}),
|
|
47027
|
+
baseClass: "",
|
|
47028
|
+
spacing: "medium"
|
|
47029
|
+
});
|
|
47030
|
+
var mediaCopyLayout = styledSection({
|
|
47031
|
+
children: styledContainer({
|
|
47032
|
+
children: [
|
|
47033
|
+
responsiveTwoColumn({
|
|
47034
|
+
image: el("div", { className: "rb-intro-media-wrap rb-w-full" }, [introMedia]),
|
|
47035
|
+
text: introCopyStack({
|
|
47036
|
+
className: "rb-intro-copy rb-max-w-xl",
|
|
47037
|
+
headingClassName: "rb-intro-title"
|
|
47038
|
+
}),
|
|
47039
|
+
ratioFrom: "content.ratio",
|
|
47040
|
+
imagePositionFrom: "content.imagePosition",
|
|
47041
|
+
gapFrom: "content.gap",
|
|
47042
|
+
gapFallback: "comfortable",
|
|
47043
|
+
imageWrapperClassName: "rb-w-full rb-shrink-0",
|
|
47044
|
+
textWrapperClassName: "rb-w-full rb-min-w-0 rb-flex-1 rb-self-center"
|
|
47045
|
+
})
|
|
47046
|
+
]
|
|
47047
|
+
}),
|
|
47048
|
+
baseClass: "",
|
|
47049
|
+
spacing: "medium"
|
|
47050
|
+
});
|
|
47051
|
+
var introConfig = {
|
|
47052
|
+
id: "block.intro",
|
|
47053
|
+
title: "Intro",
|
|
47054
|
+
category: "layout",
|
|
47055
|
+
includeContainerStyles: true,
|
|
47056
|
+
titleSource: "title",
|
|
47057
|
+
additionalFields: [
|
|
47058
|
+
{
|
|
47059
|
+
id: "title",
|
|
47060
|
+
type: "text",
|
|
47061
|
+
label: "Statement",
|
|
47062
|
+
required: false,
|
|
47063
|
+
multiline: true,
|
|
47064
|
+
maxLength: 160
|
|
47065
|
+
},
|
|
47066
|
+
{
|
|
47067
|
+
id: "body",
|
|
47068
|
+
type: "richText",
|
|
47069
|
+
label: "Text",
|
|
47070
|
+
required: true,
|
|
47071
|
+
ui: {
|
|
47072
|
+
richTextVariant: "limited"
|
|
47073
|
+
}
|
|
47074
|
+
},
|
|
47075
|
+
{
|
|
47076
|
+
id: "media",
|
|
47077
|
+
type: "media",
|
|
47078
|
+
label: "Media",
|
|
47079
|
+
required: false,
|
|
47080
|
+
mediaKinds: ["image"],
|
|
47081
|
+
ui: {
|
|
47082
|
+
intent: "content",
|
|
47083
|
+
visibleWhen: { field: "variant", notEquals: "statement-copy" }
|
|
47084
|
+
}
|
|
47085
|
+
},
|
|
47086
|
+
createImagePositionField({
|
|
47087
|
+
id: "imagePosition",
|
|
47088
|
+
label: "Image position",
|
|
47089
|
+
defaultValue: "left",
|
|
47090
|
+
uiIntent: "display",
|
|
47091
|
+
visibleWhen: { field: "variant", equals: "media-copy" }
|
|
47092
|
+
}),
|
|
47093
|
+
{
|
|
47094
|
+
id: "gap",
|
|
47095
|
+
type: "select",
|
|
47096
|
+
label: "Gap between media and text",
|
|
47097
|
+
required: false,
|
|
47098
|
+
defaultValue: "comfortable",
|
|
47099
|
+
multiple: false,
|
|
47100
|
+
options: [
|
|
47101
|
+
{ value: "none", label: "None" },
|
|
47102
|
+
{ value: "compact", label: "Compact" },
|
|
47103
|
+
{ value: "cozy", label: "Cozy" },
|
|
47104
|
+
{ value: "medium", label: "Medium" },
|
|
47105
|
+
{ value: "comfortable", label: "Comfortable" },
|
|
47106
|
+
{ value: "spacious", label: "Spacious" }
|
|
47107
|
+
],
|
|
47108
|
+
ui: {
|
|
47109
|
+
intent: "display",
|
|
47110
|
+
visibleWhen: { field: "variant", equals: "media-copy" }
|
|
47111
|
+
}
|
|
47112
|
+
},
|
|
47113
|
+
createImageColSizeField({
|
|
47114
|
+
id: "ratio",
|
|
47115
|
+
label: "Media column size",
|
|
47116
|
+
defaultValue: "1/2",
|
|
47117
|
+
uiIntent: "display",
|
|
47118
|
+
visibleWhen: { field: "variant", equals: "media-copy" }
|
|
47119
|
+
}),
|
|
47120
|
+
createAspectRatioField({
|
|
47121
|
+
id: "aspectRatio",
|
|
47122
|
+
label: "Media aspect ratio",
|
|
47123
|
+
description: "Crop media to a consistent aspect ratio.",
|
|
47124
|
+
defaultValue: "auto",
|
|
47125
|
+
visibleWhen: { field: "media", notEquals: null }
|
|
47126
|
+
}),
|
|
47127
|
+
createCtasRepeater({
|
|
47128
|
+
label: "Calls to action",
|
|
47129
|
+
itemLabel: "CTA",
|
|
47130
|
+
maxItems: 2
|
|
47131
|
+
})
|
|
47132
|
+
],
|
|
47133
|
+
layout: centeredCopyLayout,
|
|
47134
|
+
variants: {
|
|
47135
|
+
"centered-copy": centeredCopyLayout,
|
|
47136
|
+
"statement-copy": statementCopyLayout,
|
|
47137
|
+
"statement-media": statementMediaLayout,
|
|
47138
|
+
"media-copy": mediaCopyLayout
|
|
47139
|
+
},
|
|
47140
|
+
defaultVariant: "statement-copy",
|
|
47141
|
+
variantOptions: {
|
|
47142
|
+
"centered-copy": {
|
|
47143
|
+
label: "Centered copy",
|
|
47144
|
+
description: "A focused intro with centered text and optional calls to action."
|
|
47145
|
+
},
|
|
47146
|
+
"statement-copy": {
|
|
47147
|
+
label: "Statement and copy",
|
|
47148
|
+
description: "A large statement on the left with supporting copy on the right."
|
|
47149
|
+
},
|
|
47150
|
+
"statement-media": {
|
|
47151
|
+
label: "Statement, copy and media",
|
|
47152
|
+
description: "A three-part intro with statement, copy and a small image."
|
|
47153
|
+
},
|
|
47154
|
+
"media-copy": {
|
|
47155
|
+
label: "Media and copy",
|
|
47156
|
+
description: "A compact media/text intro for softer transitions after a hero."
|
|
47157
|
+
}
|
|
47158
|
+
},
|
|
47159
|
+
description: "A flexible introductory section for statement copy, supporting text, media, and CTAs.",
|
|
47160
|
+
tags: ["intro", "introduction", "about", "welcome", "statement", "media", "text"],
|
|
47161
|
+
icon: "PanelTopOpen"
|
|
47162
|
+
};
|
|
47163
|
+
var introManifest = createBlockManifest(introConfig);
|
|
47164
|
+
var introBlockDefinition = {
|
|
47165
|
+
manifest: introManifest
|
|
47166
|
+
};
|
|
47167
|
+
|
|
45038
47168
|
// ../blocks/src/system/blocks/body-text.ts
|
|
45039
47169
|
var bodyCopyComposition = composeFragments([{ fragment: bodyCopyFragment }]);
|
|
45040
47170
|
var proseLayout = styledSection({
|
|
@@ -45786,6 +47916,37 @@ var faqComposition = composeFragments([
|
|
|
45786
47916
|
{ fragment: faqHeadingFragment, fieldPriority: 0 },
|
|
45787
47917
|
{ fragment: faqAccordionFragment, fieldPriority: 1 }
|
|
45788
47918
|
]);
|
|
47919
|
+
function fragmentLayoutNode(layout) {
|
|
47920
|
+
return isNodeDefinitionArray(layout) ? el("div", {}, [...layout]) : layout;
|
|
47921
|
+
}
|
|
47922
|
+
function isNodeDefinitionArray(layout) {
|
|
47923
|
+
return Array.isArray(layout);
|
|
47924
|
+
}
|
|
47925
|
+
var headingLayout = fragmentLayoutNode(faqHeadingFragment.layout);
|
|
47926
|
+
var accordionLayout = fragmentLayoutNode(faqAccordionFragment.layout);
|
|
47927
|
+
var defaultLayout = styledSection({
|
|
47928
|
+
children: styledContainer({
|
|
47929
|
+
baseClassName: "rb-relative rb-isolate",
|
|
47930
|
+
children: stack({ gap: "xl", className: "rb-w-full rb-max-w-4xl rb-mx-auto" }, faqComposition.layout)
|
|
47931
|
+
}),
|
|
47932
|
+
baseClass: ""
|
|
47933
|
+
});
|
|
47934
|
+
var twoColumnLayout = styledSection({
|
|
47935
|
+
children: styledContainer({
|
|
47936
|
+
baseClassName: "rb-relative rb-isolate",
|
|
47937
|
+
children: el(
|
|
47938
|
+
"div",
|
|
47939
|
+
{
|
|
47940
|
+
className: "rb-faq-two-column rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
|
|
47941
|
+
},
|
|
47942
|
+
[
|
|
47943
|
+
el("div", { className: "rb-faq-two-column-heading" }, [headingLayout]),
|
|
47944
|
+
el("div", { className: "rb-faq-two-column-accordion" }, [accordionLayout])
|
|
47945
|
+
]
|
|
47946
|
+
)
|
|
47947
|
+
}),
|
|
47948
|
+
baseClass: ""
|
|
47949
|
+
});
|
|
45789
47950
|
var faqManifest = createBlockManifest({
|
|
45790
47951
|
id: "block.faq",
|
|
45791
47952
|
title: "FAQ",
|
|
@@ -45802,13 +47963,22 @@ var faqManifest = createBlockManifest({
|
|
|
45802
47963
|
label: "FAQ item styles"
|
|
45803
47964
|
})
|
|
45804
47965
|
],
|
|
45805
|
-
layout:
|
|
45806
|
-
|
|
45807
|
-
|
|
45808
|
-
|
|
45809
|
-
|
|
45810
|
-
|
|
45811
|
-
|
|
47966
|
+
layout: defaultLayout,
|
|
47967
|
+
variants: {
|
|
47968
|
+
default: defaultLayout,
|
|
47969
|
+
"two-column": twoColumnLayout
|
|
47970
|
+
},
|
|
47971
|
+
defaultVariant: "default",
|
|
47972
|
+
variantOptions: {
|
|
47973
|
+
default: {
|
|
47974
|
+
label: "Default",
|
|
47975
|
+
description: "A centered heading above one FAQ accordion."
|
|
47976
|
+
},
|
|
47977
|
+
"two-column": {
|
|
47978
|
+
label: "Two column",
|
|
47979
|
+
description: "A left heading column with FAQ items on the right."
|
|
47980
|
+
}
|
|
47981
|
+
},
|
|
45812
47982
|
description: "Accordion of frequently asked questions and answers.",
|
|
45813
47983
|
tags: ["faq", "questions", "answers", "help", "support", "accordion", "q&a"],
|
|
45814
47984
|
icon: "HelpCircle"
|
|
@@ -46449,7 +48619,8 @@ function resolveBackgroundVisualStyles(backgroundColor, tokens, defaultToken = "
|
|
|
46449
48619
|
function resolveHeaderVisualStyles(header, tokens) {
|
|
46450
48620
|
const navContainerType = header?.navContainer?.type ?? "none";
|
|
46451
48621
|
const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
|
|
46452
|
-
|
|
48622
|
+
const hasTransparentVariant = header?.variant === "transparent" || header?.variant === "floating";
|
|
48623
|
+
if (hasContainedNav || hasTransparentVariant) {
|
|
46453
48624
|
return {
|
|
46454
48625
|
backgroundToken: "transparent",
|
|
46455
48626
|
paletteHex: null,
|
|
@@ -46578,6 +48749,17 @@ var headerRootStyleTransform = {
|
|
|
46578
48749
|
return mergeStyles(...styleParts);
|
|
46579
48750
|
}
|
|
46580
48751
|
};
|
|
48752
|
+
var headerSectionBackgroundTransform = {
|
|
48753
|
+
id: "layout.headerSectionBackground",
|
|
48754
|
+
kind: "string",
|
|
48755
|
+
summary: "Resolve the inner site-header section background token",
|
|
48756
|
+
run: (value) => {
|
|
48757
|
+
const header = asPartialObject(value);
|
|
48758
|
+
const navContainerType = header?.navContainer?.type ?? "none";
|
|
48759
|
+
const usesTransparentRoot = header?.variant === "transparent" || header?.variant === "floating" || navContainerType === "glass" || navContainerType === "pill";
|
|
48760
|
+
return usesTransparentRoot ? "raw:transparent" : "background";
|
|
48761
|
+
}
|
|
48762
|
+
};
|
|
46581
48763
|
var footerRootStyleTransform = {
|
|
46582
48764
|
id: "layout.footerRootStyle",
|
|
46583
48765
|
kind: "formatter",
|
|
@@ -46836,6 +49018,7 @@ var layoutTransforms = [
|
|
|
46836
49018
|
headerRootClassTransform,
|
|
46837
49019
|
footerRootClassTransform,
|
|
46838
49020
|
headerRootStyleTransform,
|
|
49021
|
+
headerSectionBackgroundTransform,
|
|
46839
49022
|
footerRootStyleTransform,
|
|
46840
49023
|
footerBottomBarClassTransform,
|
|
46841
49024
|
footerBottomBarContainerClassTransform,
|
|
@@ -47374,7 +49557,10 @@ var editorialLayout = stack(
|
|
|
47374
49557
|
);
|
|
47375
49558
|
var headerLayout = headerSection(
|
|
47376
49559
|
{
|
|
47377
|
-
background: "
|
|
49560
|
+
background: bindProp("$root.theme.header", {
|
|
49561
|
+
transforms: pipe(tx("layout.headerSectionBackground")),
|
|
49562
|
+
fallback: "background"
|
|
49563
|
+
}),
|
|
47378
49564
|
allowOverflow: true,
|
|
47379
49565
|
className: bindProp("$root.theme.header", {
|
|
47380
49566
|
transforms: pipe(tx("layout.headerRootClass")),
|
|
@@ -48284,6 +50470,225 @@ var collectionBlockDefinition = {
|
|
|
48284
50470
|
manifest: collectionManifest
|
|
48285
50471
|
};
|
|
48286
50472
|
|
|
50473
|
+
// ../blocks/src/system/blocks/feature-cards.ts
|
|
50474
|
+
function grid3(props2, children) {
|
|
50475
|
+
return el("grid", props2 ?? void 0, children ?? void 0);
|
|
50476
|
+
}
|
|
50477
|
+
var sectionHeading = stack(
|
|
50478
|
+
{ gap: "sm", className: "rb-feature-cards-heading rb-mx-auto rb-max-w-3xl rb-text-center" },
|
|
50479
|
+
[
|
|
50480
|
+
text(
|
|
50481
|
+
{
|
|
50482
|
+
as: "h2",
|
|
50483
|
+
className: "rb-feature-cards-title rb-text-center"
|
|
50484
|
+
},
|
|
50485
|
+
when("content.title"),
|
|
50486
|
+
bind("content.title")
|
|
50487
|
+
),
|
|
50488
|
+
richText(
|
|
50489
|
+
{
|
|
50490
|
+
className: "rb-feature-cards-description rb-prose rb-mx-auto rb-max-w-none",
|
|
50491
|
+
style: textColorStyle("mutedText")
|
|
50492
|
+
},
|
|
50493
|
+
when("content.description"),
|
|
50494
|
+
bind("content.description")
|
|
50495
|
+
)
|
|
50496
|
+
]
|
|
50497
|
+
);
|
|
50498
|
+
var featureCard = styledCard(
|
|
50499
|
+
[
|
|
50500
|
+
media(
|
|
50501
|
+
{
|
|
50502
|
+
className: "rb-feature-card-media rb-w-full rb-h-auto rb-object-cover",
|
|
50503
|
+
style: {
|
|
50504
|
+
aspectRatio: { $bind: { from: "card.aspectRatio" } }
|
|
50505
|
+
}
|
|
50506
|
+
},
|
|
50507
|
+
when("card.media"),
|
|
50508
|
+
bind("card.media")
|
|
50509
|
+
),
|
|
50510
|
+
stack({ gap: "sm", className: "rb-feature-card-content rb-flex-1 rb-p-6" }, [
|
|
50511
|
+
text(
|
|
50512
|
+
{
|
|
50513
|
+
as: "h3",
|
|
50514
|
+
className: "rb-feature-card-title"
|
|
50515
|
+
},
|
|
50516
|
+
bind("card.title")
|
|
50517
|
+
),
|
|
50518
|
+
richText(
|
|
50519
|
+
{
|
|
50520
|
+
className: "rb-feature-card-body rb-prose rb-max-w-none",
|
|
50521
|
+
style: textColorStyle("mutedText")
|
|
50522
|
+
},
|
|
50523
|
+
when("card.body"),
|
|
50524
|
+
bind("card.body")
|
|
50525
|
+
),
|
|
50526
|
+
ctaRow({
|
|
50527
|
+
collectionPath: "ctas",
|
|
50528
|
+
itemName: "cta",
|
|
50529
|
+
gap: "sm",
|
|
50530
|
+
justify: "start",
|
|
50531
|
+
containerClassName: "rb-mt-auto"
|
|
50532
|
+
})
|
|
50533
|
+
])
|
|
50534
|
+
],
|
|
50535
|
+
{
|
|
50536
|
+
stylesFrom: "content._cardStyles",
|
|
50537
|
+
backgroundFrom: "content._cardStyles.background",
|
|
50538
|
+
baseClassName: "rb-feature-card rb-relative rb-isolate rb-overflow-hidden rb-border rb-flex rb-h-full rb-flex-col"
|
|
50539
|
+
},
|
|
50540
|
+
repeat("content.cards", "card")
|
|
50541
|
+
);
|
|
50542
|
+
var cardsLayout = styledSection({
|
|
50543
|
+
children: styledContainer({
|
|
50544
|
+
rootType: "stack",
|
|
50545
|
+
rootProps: { gap: "xl" },
|
|
50546
|
+
children: [
|
|
50547
|
+
sectionHeading,
|
|
50548
|
+
grid3(
|
|
50549
|
+
{
|
|
50550
|
+
cols: {
|
|
50551
|
+
$bind: {
|
|
50552
|
+
from: "content.columns",
|
|
50553
|
+
fallback: 3,
|
|
50554
|
+
coerce: "number"
|
|
50555
|
+
}
|
|
50556
|
+
},
|
|
50557
|
+
gap: "lg"
|
|
50558
|
+
},
|
|
50559
|
+
[featureCard]
|
|
50560
|
+
)
|
|
50561
|
+
]
|
|
50562
|
+
}),
|
|
50563
|
+
baseClass: "",
|
|
50564
|
+
spacing: "medium"
|
|
50565
|
+
});
|
|
50566
|
+
var featureCardsConfig = {
|
|
50567
|
+
id: "block.feature-cards",
|
|
50568
|
+
title: "Feature Cards",
|
|
50569
|
+
category: "layout",
|
|
50570
|
+
includeContainerStyles: true,
|
|
50571
|
+
titleSource: "title",
|
|
50572
|
+
additionalFields: [
|
|
50573
|
+
{
|
|
50574
|
+
id: "title",
|
|
50575
|
+
type: "text",
|
|
50576
|
+
label: "Title",
|
|
50577
|
+
required: false,
|
|
50578
|
+
multiline: false,
|
|
50579
|
+
maxLength: 120
|
|
50580
|
+
},
|
|
50581
|
+
{
|
|
50582
|
+
id: "description",
|
|
50583
|
+
type: "richText",
|
|
50584
|
+
label: "Description",
|
|
50585
|
+
required: false,
|
|
50586
|
+
ui: {
|
|
50587
|
+
richTextVariant: "limited"
|
|
50588
|
+
}
|
|
50589
|
+
},
|
|
50590
|
+
{
|
|
50591
|
+
id: "columns",
|
|
50592
|
+
type: "select",
|
|
50593
|
+
label: "Columns",
|
|
50594
|
+
required: false,
|
|
50595
|
+
defaultValue: "3",
|
|
50596
|
+
multiple: false,
|
|
50597
|
+
options: [
|
|
50598
|
+
{ value: "2", label: "2 columns" },
|
|
50599
|
+
{ value: "3", label: "3 columns" },
|
|
50600
|
+
{ value: "4", label: "4 columns" }
|
|
50601
|
+
],
|
|
50602
|
+
ui: { intent: "display" }
|
|
50603
|
+
},
|
|
50604
|
+
{
|
|
50605
|
+
id: "cards",
|
|
50606
|
+
type: "repeater",
|
|
50607
|
+
label: "Cards",
|
|
50608
|
+
required: false,
|
|
50609
|
+
minItems: 1,
|
|
50610
|
+
maxItems: 8,
|
|
50611
|
+
itemLabel: "Card",
|
|
50612
|
+
itemLabelSource: "title",
|
|
50613
|
+
allowConversion: true,
|
|
50614
|
+
ui: {
|
|
50615
|
+
intent: "content"
|
|
50616
|
+
},
|
|
50617
|
+
schema: {
|
|
50618
|
+
fields: [
|
|
50619
|
+
{
|
|
50620
|
+
id: "media",
|
|
50621
|
+
type: "media",
|
|
50622
|
+
label: "Image",
|
|
50623
|
+
required: false,
|
|
50624
|
+
mediaKinds: ["image"]
|
|
50625
|
+
},
|
|
50626
|
+
createAspectRatioField({
|
|
50627
|
+
id: "aspectRatio",
|
|
50628
|
+
label: "Image aspect ratio",
|
|
50629
|
+
defaultValue: "4/3",
|
|
50630
|
+
visibleWhen: { field: "media", notEquals: null }
|
|
50631
|
+
}),
|
|
50632
|
+
{
|
|
50633
|
+
id: "title",
|
|
50634
|
+
type: "text",
|
|
50635
|
+
label: "Title",
|
|
50636
|
+
required: true,
|
|
50637
|
+
multiline: false,
|
|
50638
|
+
maxLength: 120
|
|
50639
|
+
},
|
|
50640
|
+
{
|
|
50641
|
+
id: "body",
|
|
50642
|
+
type: "richText",
|
|
50643
|
+
label: "Text",
|
|
50644
|
+
required: false,
|
|
50645
|
+
ui: {
|
|
50646
|
+
richTextVariant: "limited"
|
|
50647
|
+
}
|
|
50648
|
+
},
|
|
50649
|
+
createCtasRepeater({
|
|
50650
|
+
label: "Calls to action",
|
|
50651
|
+
itemLabel: "CTA",
|
|
50652
|
+
maxItems: 1,
|
|
50653
|
+
button: {
|
|
50654
|
+
variants: [
|
|
50655
|
+
{ value: "primary", label: "Primary" },
|
|
50656
|
+
{ value: "secondary", label: "Secondary" },
|
|
50657
|
+
{ value: "outline", label: "Outline" },
|
|
50658
|
+
{ value: "ghost", label: "Ghost" },
|
|
50659
|
+
{ value: "link", label: "Link" }
|
|
50660
|
+
],
|
|
50661
|
+
defaultVariant: "ghost"
|
|
50662
|
+
}
|
|
50663
|
+
})
|
|
50664
|
+
]
|
|
50665
|
+
}
|
|
50666
|
+
},
|
|
50667
|
+
cardStylesField({
|
|
50668
|
+
id: "_cardStyles",
|
|
50669
|
+
label: "Card styles"
|
|
50670
|
+
})
|
|
50671
|
+
],
|
|
50672
|
+
layout: cardsLayout,
|
|
50673
|
+
variants: {
|
|
50674
|
+
cards: cardsLayout
|
|
50675
|
+
},
|
|
50676
|
+
defaultVariant: "cards",
|
|
50677
|
+
variantOptions: {
|
|
50678
|
+
cards: {
|
|
50679
|
+
label: "Cards",
|
|
50680
|
+
description: "A responsive grid of image cards with optional calls to action."
|
|
50681
|
+
}
|
|
50682
|
+
},
|
|
50683
|
+
description: "A card grid for offerings, services, classes, benefits, or featured links.",
|
|
50684
|
+
tags: ["cards", "features", "offerings", "services", "classes", "grid", "links"],
|
|
50685
|
+
icon: "PanelsTopLeft"
|
|
50686
|
+
};
|
|
50687
|
+
var featureCardsManifest = createBlockManifest(featureCardsConfig);
|
|
50688
|
+
var featureCardsBlockDefinition = {
|
|
50689
|
+
manifest: featureCardsManifest
|
|
50690
|
+
};
|
|
50691
|
+
|
|
48287
50692
|
// ../blocks/src/system/fields/carousel.ts
|
|
48288
50693
|
var delayOptions = [
|
|
48289
50694
|
{ value: "3000", label: "3 seconds" },
|
|
@@ -48368,69 +50773,6 @@ function createCarouselBehaviorFields(options = {}) {
|
|
|
48368
50773
|
];
|
|
48369
50774
|
return fields3;
|
|
48370
50775
|
}
|
|
48371
|
-
|
|
48372
|
-
// ../blocks/src/system/fields/imageLayout.ts
|
|
48373
|
-
function createImageColSizeField(options = {}) {
|
|
48374
|
-
const {
|
|
48375
|
-
id = "imageColSize",
|
|
48376
|
-
label = "Image column size",
|
|
48377
|
-
description = "Controls how large the image/thumbnail column is at desktop breakpoints.",
|
|
48378
|
-
defaultValue: defaultValue2 = "1/3",
|
|
48379
|
-
uiIntent = "display",
|
|
48380
|
-
visibleWhen
|
|
48381
|
-
} = options;
|
|
48382
|
-
return {
|
|
48383
|
-
id,
|
|
48384
|
-
type: "select",
|
|
48385
|
-
label,
|
|
48386
|
-
description,
|
|
48387
|
-
required: false,
|
|
48388
|
-
defaultValue: defaultValue2,
|
|
48389
|
-
multiple: false,
|
|
48390
|
-
options: [
|
|
48391
|
-
{ value: "1/4", label: "Small (1/4)" },
|
|
48392
|
-
{ value: "1/3", label: "Medium (1/3)" },
|
|
48393
|
-
{ value: "2/5", label: "Large (2/5)" },
|
|
48394
|
-
{ value: "1/2", label: "Extra large (1/2)" },
|
|
48395
|
-
{ value: "2/3", label: "Huge (2/3)" }
|
|
48396
|
-
],
|
|
48397
|
-
ui: {
|
|
48398
|
-
intent: uiIntent,
|
|
48399
|
-
...visibleWhen ? { visibleWhen } : {}
|
|
48400
|
-
}
|
|
48401
|
-
};
|
|
48402
|
-
}
|
|
48403
|
-
function createImagePositionField(options = {}) {
|
|
48404
|
-
const {
|
|
48405
|
-
id = "imagePosition",
|
|
48406
|
-
label = "Image position",
|
|
48407
|
-
description = "Choose which side the image appears on.",
|
|
48408
|
-
defaultValue: defaultValue2 = "left",
|
|
48409
|
-
includeAlternate = false,
|
|
48410
|
-
uiIntent = "display",
|
|
48411
|
-
visibleWhen
|
|
48412
|
-
} = options;
|
|
48413
|
-
const positionOptions = [
|
|
48414
|
-
{ value: "left", label: "Left" },
|
|
48415
|
-
{ value: "right", label: "Right" },
|
|
48416
|
-
...includeAlternate ? [{ value: "alternate", label: "Alternate" }] : []
|
|
48417
|
-
];
|
|
48418
|
-
return {
|
|
48419
|
-
id,
|
|
48420
|
-
type: "select",
|
|
48421
|
-
label,
|
|
48422
|
-
description,
|
|
48423
|
-
required: false,
|
|
48424
|
-
defaultValue: defaultValue2,
|
|
48425
|
-
multiple: false,
|
|
48426
|
-
// Spread to get a mutable array type without unsafe casts.
|
|
48427
|
-
options: [...positionOptions],
|
|
48428
|
-
ui: {
|
|
48429
|
-
intent: uiIntent,
|
|
48430
|
-
...visibleWhen ? { visibleWhen } : {}
|
|
48431
|
-
}
|
|
48432
|
-
};
|
|
48433
|
-
}
|
|
48434
50776
|
var textCardStylesField = (() => {
|
|
48435
50777
|
const field = cardStylesField({
|
|
48436
50778
|
id: "_textCardStyles",
|
|
@@ -48548,26 +50890,13 @@ var mediaTextManifest = createBlockManifest({
|
|
|
48548
50890
|
},
|
|
48549
50891
|
ui: { intent: "behavior" }
|
|
48550
50892
|
}),
|
|
48551
|
-
{
|
|
50893
|
+
createAspectRatioField({
|
|
48552
50894
|
id: "aspectRatio",
|
|
48553
|
-
type: "select",
|
|
48554
50895
|
label: "Media aspect ratio",
|
|
48555
50896
|
description: "Crop media to a consistent aspect ratio.",
|
|
48556
|
-
required: false,
|
|
48557
50897
|
defaultValue: "auto",
|
|
48558
|
-
|
|
48559
|
-
|
|
48560
|
-
{ value: "auto", label: "Auto (original)" },
|
|
48561
|
-
{ value: "16/9", label: "16:9 (Landscape)" },
|
|
48562
|
-
{ value: "4/3", label: "4:3 (Standard)" },
|
|
48563
|
-
{ value: "1/1", label: "1:1 (Square)" },
|
|
48564
|
-
{ value: "3/4", label: "3:4 (Portrait)" }
|
|
48565
|
-
],
|
|
48566
|
-
ui: {
|
|
48567
|
-
intent: "display",
|
|
48568
|
-
visibleWhen: { field: "images", notEquals: null }
|
|
48569
|
-
}
|
|
48570
|
-
},
|
|
50898
|
+
visibleWhen: { field: "images", notEquals: null }
|
|
50899
|
+
}),
|
|
48571
50900
|
{
|
|
48572
50901
|
id: "text",
|
|
48573
50902
|
type: "richText",
|
|
@@ -48697,7 +51026,7 @@ var mediaTextManifest = createBlockManifest({
|
|
|
48697
51026
|
whenImagesLength(0)
|
|
48698
51027
|
);
|
|
48699
51028
|
const defaultInner = el("div", {}, [defaultImagesLayout, defaultTextOnlyLayout]);
|
|
48700
|
-
const
|
|
51029
|
+
const defaultLayout2 = styledSection({
|
|
48701
51030
|
children: styledContainer({
|
|
48702
51031
|
rootType: "stack",
|
|
48703
51032
|
rootProps: { gap: "lg" },
|
|
@@ -48729,9 +51058,9 @@ var mediaTextManifest = createBlockManifest({
|
|
|
48729
51058
|
spacing: "medium"
|
|
48730
51059
|
});
|
|
48731
51060
|
return {
|
|
48732
|
-
layout:
|
|
51061
|
+
layout: defaultLayout2,
|
|
48733
51062
|
variants: {
|
|
48734
|
-
default:
|
|
51063
|
+
default: defaultLayout2
|
|
48735
51064
|
},
|
|
48736
51065
|
defaultVariant: "default",
|
|
48737
51066
|
variantOptions: {
|
|
@@ -52689,6 +55018,37 @@ function pickReadableTextColor(background) {
|
|
|
52689
55018
|
return "rgb(var(--tb-onAccent, 255 255 255))";
|
|
52690
55019
|
}
|
|
52691
55020
|
}
|
|
55021
|
+
function BookingOptionCompactRow({
|
|
55022
|
+
option,
|
|
55023
|
+
buttonVariant = "primary"
|
|
55024
|
+
}) {
|
|
55025
|
+
const primaryMeta = option.primaryMeta?.filter((item) => item.length > 0) ?? [];
|
|
55026
|
+
const secondaryMeta = option.secondaryMeta?.filter((item) => item.label.length > 0) ?? [];
|
|
55027
|
+
const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "sm" });
|
|
55028
|
+
return /* @__PURE__ */ jsxs("div", { className: "event-compact-row", children: [
|
|
55029
|
+
/* @__PURE__ */ jsxs("div", { className: "event-compact-row-content", children: [
|
|
55030
|
+
/* @__PURE__ */ jsxs("div", { className: "event-compact-row-top", children: [
|
|
55031
|
+
/* @__PURE__ */ jsx("span", { className: "event-compact-row-title", children: option.title }),
|
|
55032
|
+
primaryMeta.length > 0 && /* @__PURE__ */ jsx("span", { className: "event-compact-row-datetime", children: primaryMeta.join(" \xB7 ") })
|
|
55033
|
+
] }),
|
|
55034
|
+
/* @__PURE__ */ jsxs("div", { className: "event-compact-row-bottom", children: [
|
|
55035
|
+
secondaryMeta.map((item) => /* @__PURE__ */ jsxs(
|
|
55036
|
+
"span",
|
|
55037
|
+
{
|
|
55038
|
+
className: item.className,
|
|
55039
|
+
children: [
|
|
55040
|
+
item.icon,
|
|
55041
|
+
item.label
|
|
55042
|
+
]
|
|
55043
|
+
},
|
|
55044
|
+
item.id ?? `${item.className ?? "meta"}:${item.label}`
|
|
55045
|
+
)),
|
|
55046
|
+
option.priceLabel && /* @__PURE__ */ jsx("span", { className: "event-compact-row-price", children: option.priceLabel })
|
|
55047
|
+
] })
|
|
55048
|
+
] }),
|
|
55049
|
+
option.action.kind === "status" ? /* @__PURE__ */ jsx("span", { className: "event-compact-row-status", children: option.action.label }) : /* @__PURE__ */ jsx("a", { href: option.action.href, className: `${buttonClass} event-compact-row-cta`, children: option.action.label })
|
|
55050
|
+
] });
|
|
55051
|
+
}
|
|
52692
55052
|
var EventCompactRow = ({
|
|
52693
55053
|
event,
|
|
52694
55054
|
buttonVariant = "primary",
|
|
@@ -52700,28 +55060,31 @@ var EventCompactRow = ({
|
|
|
52700
55060
|
const price = formatEventPrice(event);
|
|
52701
55061
|
const teacherLine = formatEventTeacherLine(event);
|
|
52702
55062
|
const cta = resolveEventCta(event, buttonText);
|
|
52703
|
-
const
|
|
52704
|
-
|
|
52705
|
-
|
|
52706
|
-
|
|
52707
|
-
|
|
52708
|
-
|
|
52709
|
-
|
|
52710
|
-
|
|
52711
|
-
|
|
52712
|
-
|
|
52713
|
-
|
|
52714
|
-
|
|
52715
|
-
|
|
52716
|
-
|
|
52717
|
-
|
|
52718
|
-
|
|
52719
|
-
|
|
52720
|
-
|
|
52721
|
-
|
|
52722
|
-
|
|
52723
|
-
|
|
52724
|
-
|
|
55063
|
+
const option = {
|
|
55064
|
+
id: event.occurrenceId ?? event.id,
|
|
55065
|
+
title: event.title,
|
|
55066
|
+
primaryMeta: [formattedDate, formattedTime],
|
|
55067
|
+
secondaryMeta: [
|
|
55068
|
+
...event.venue ? [
|
|
55069
|
+
{
|
|
55070
|
+
id: "venue",
|
|
55071
|
+
label: event.venue.name,
|
|
55072
|
+
icon: /* @__PURE__ */ jsx(MapPinIcon, { className: "rb-shrink-0" }),
|
|
55073
|
+
className: "event-compact-row-venue"
|
|
55074
|
+
}
|
|
55075
|
+
] : [],
|
|
55076
|
+
...teacherLine ? [
|
|
55077
|
+
{
|
|
55078
|
+
id: "teacher",
|
|
55079
|
+
label: teacherLine,
|
|
55080
|
+
className: "event-compact-row-teacher"
|
|
55081
|
+
}
|
|
55082
|
+
] : []
|
|
55083
|
+
],
|
|
55084
|
+
priceLabel: price,
|
|
55085
|
+
action: cta.hidden ? { kind: "status", label: cta.label } : { kind: "action", label: cta.label, href: cta.href }
|
|
55086
|
+
};
|
|
55087
|
+
return /* @__PURE__ */ jsx(BookingOptionCompactRow, { buttonVariant, option });
|
|
52725
55088
|
};
|
|
52726
55089
|
var EmptyState = ({
|
|
52727
55090
|
message: message2 = "No upcoming events scheduled.",
|
|
@@ -54216,7 +56579,7 @@ var embedBlockDefinition = {
|
|
|
54216
56579
|
};
|
|
54217
56580
|
|
|
54218
56581
|
// ../blocks/src/system/blocks/image-gallery.ts
|
|
54219
|
-
var
|
|
56582
|
+
var grid4 = (props2, children, ...mods) => el("grid", props2 ?? void 0, children ?? void 0, ...mods);
|
|
54220
56583
|
var galleryContainer = (children, opts) => {
|
|
54221
56584
|
const gap = opts?.gap;
|
|
54222
56585
|
const withExtraClass = (baseClass) => opts?.className ? `${baseClass} ${opts.className}` : baseClass;
|
|
@@ -54296,7 +56659,7 @@ var galleryItem = (options) => stack(
|
|
|
54296
56659
|
],
|
|
54297
56660
|
repeat("content.images", "item")
|
|
54298
56661
|
);
|
|
54299
|
-
var gridLayout3 =
|
|
56662
|
+
var gridLayout3 = grid4(
|
|
54300
56663
|
{
|
|
54301
56664
|
className: "rb-grid rb-grid-cols-1 rb-gap-4 rb-sm-grid-cols-2 rb-md-grid-cols-3"
|
|
54302
56665
|
},
|
|
@@ -54899,7 +57262,7 @@ var imageGalleryBlockDefinition = {
|
|
|
54899
57262
|
};
|
|
54900
57263
|
|
|
54901
57264
|
// ../blocks/src/system/blocks/video-grid.ts
|
|
54902
|
-
var
|
|
57265
|
+
var grid5 = (props2, children, ...mods) => el("grid", props2 ?? void 0, children ?? void 0, ...mods);
|
|
54903
57266
|
var videoItem = (options) => stack(
|
|
54904
57267
|
{ gap: "xs", className: options.containerClassName },
|
|
54905
57268
|
[
|
|
@@ -54949,7 +57312,7 @@ var gridColumnsClass = (columns) => {
|
|
|
54949
57312
|
return "rb-grid rb-grid-cols-1 rb-gap-6 rb-sm-grid-cols-2 rb-md-grid-cols-3";
|
|
54950
57313
|
}
|
|
54951
57314
|
};
|
|
54952
|
-
var createGridLayout = (columns) =>
|
|
57315
|
+
var createGridLayout = (columns) => grid5(
|
|
54953
57316
|
{
|
|
54954
57317
|
className: gridColumnsClass(columns)
|
|
54955
57318
|
},
|
|
@@ -58274,6 +60637,40 @@ var systemBlockDefinitionsRaw = [
|
|
|
58274
60637
|
})
|
|
58275
60638
|
]
|
|
58276
60639
|
})),
|
|
60640
|
+
withDesignCapability("block.intro", introBlockDefinition, declareBlockDesignCapability({
|
|
60641
|
+
sectionSurfaces: "supported",
|
|
60642
|
+
contentFrames: ["plain", "panel"],
|
|
60643
|
+
itemSurfaces: "unsupported",
|
|
60644
|
+
headingDecorations: ["organic-squiggle"]
|
|
60645
|
+
}), defineBlockDesignMetadata({
|
|
60646
|
+
flow: bodyFlow,
|
|
60647
|
+
layoutProfiles: [
|
|
60648
|
+
layoutProfile({
|
|
60649
|
+
variantKey: "centered-copy",
|
|
60650
|
+
family: "centered",
|
|
60651
|
+
weight: "featured",
|
|
60652
|
+
bias: "soft"
|
|
60653
|
+
}),
|
|
60654
|
+
layoutProfile({
|
|
60655
|
+
variantKey: "statement-copy",
|
|
60656
|
+
family: "split",
|
|
60657
|
+
weight: "featured",
|
|
60658
|
+
bias: "merge"
|
|
60659
|
+
}),
|
|
60660
|
+
layoutProfile({
|
|
60661
|
+
variantKey: "statement-media",
|
|
60662
|
+
family: "media-text",
|
|
60663
|
+
weight: "featured",
|
|
60664
|
+
bias: "soft"
|
|
60665
|
+
}),
|
|
60666
|
+
layoutProfile({
|
|
60667
|
+
variantKey: "media-copy",
|
|
60668
|
+
family: "media-text",
|
|
60669
|
+
weight: "featured",
|
|
60670
|
+
bias: "soft"
|
|
60671
|
+
})
|
|
60672
|
+
]
|
|
60673
|
+
})),
|
|
58277
60674
|
withDesignCapability("block.body-text", bodyTextBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
|
|
58278
60675
|
flow: bodyFlow,
|
|
58279
60676
|
layoutProfiles: [
|
|
@@ -58334,9 +60731,17 @@ var systemBlockDefinitionsRaw = [
|
|
|
58334
60731
|
flow: conversionFlow,
|
|
58335
60732
|
layoutProfiles: [layoutProfile({ variantKey: "default", family: "form", weight: "standard" })]
|
|
58336
60733
|
})),
|
|
58337
|
-
withDesignCapability("block.faq", faqBlockDefinition, withEyebrowCapability(
|
|
60734
|
+
withDesignCapability("block.faq", faqBlockDefinition, withEyebrowCapability(declareBlockDesignCapability({
|
|
60735
|
+
sectionSurfaces: "supported",
|
|
60736
|
+
contentFrames: ["plain", "panel"],
|
|
60737
|
+
itemSurfaces: "supported",
|
|
60738
|
+
accordionIconSets: ["plus", "chevron", "caret", "minimal-cross"]
|
|
60739
|
+
}), standardEyebrowTreatments), defineBlockDesignMetadata({
|
|
58338
60740
|
flow: bodyFlow,
|
|
58339
|
-
layoutProfiles: [
|
|
60741
|
+
layoutProfiles: [
|
|
60742
|
+
layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
|
|
60743
|
+
layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" })
|
|
60744
|
+
]
|
|
58340
60745
|
})),
|
|
58341
60746
|
withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
|
|
58342
60747
|
flow: siteChromeFlow,
|
|
@@ -58350,7 +60755,8 @@ var systemBlockDefinitionsRaw = [
|
|
|
58350
60755
|
sectionSurfaces: "supported",
|
|
58351
60756
|
contentFrames: ["plain", "panel"],
|
|
58352
60757
|
itemSurfaces: "supported",
|
|
58353
|
-
testimonialCardTreatments: ["default", "accent-quote"]
|
|
60758
|
+
testimonialCardTreatments: ["default", "accent-quote"],
|
|
60759
|
+
headingDecorations: ["short-center-rule"]
|
|
58354
60760
|
}), defineBlockDesignMetadata({
|
|
58355
60761
|
flow: proofFlow,
|
|
58356
60762
|
layoutProfiles: [
|
|
@@ -58376,6 +60782,22 @@ var systemBlockDefinitionsRaw = [
|
|
|
58376
60782
|
flow: offeringsFlow,
|
|
58377
60783
|
layoutProfiles: [layoutProfile({ variantKey: "default", family: "grid", weight: "standard" })]
|
|
58378
60784
|
})),
|
|
60785
|
+
withDesignCapability("block.feature-cards", featureCardsBlockDefinition, declareBlockDesignCapability({
|
|
60786
|
+
sectionSurfaces: "supported",
|
|
60787
|
+
contentFrames: ["plain", "panel"],
|
|
60788
|
+
itemSurfaces: "supported",
|
|
60789
|
+
headingDecorations: ["short-center-rule"]
|
|
60790
|
+
}), defineBlockDesignMetadata({
|
|
60791
|
+
flow: offeringsFlow,
|
|
60792
|
+
layoutProfiles: [
|
|
60793
|
+
layoutProfile({
|
|
60794
|
+
variantKey: "cards",
|
|
60795
|
+
family: "grid",
|
|
60796
|
+
weight: "standard",
|
|
60797
|
+
bias: "soft"
|
|
60798
|
+
})
|
|
60799
|
+
]
|
|
60800
|
+
})),
|
|
58379
60801
|
withDesignCapability("block.media-text", mediaTextBlockDefinition, mediaPanelCapable(), defineBlockDesignMetadata({
|
|
58380
60802
|
flow: mediaFlow,
|
|
58381
60803
|
layoutProfiles: [
|
|
@@ -60247,6 +62669,42 @@ function normalizeBoolean2(value) {
|
|
|
60247
62669
|
}
|
|
60248
62670
|
return Boolean(value);
|
|
60249
62671
|
}
|
|
62672
|
+
|
|
62673
|
+
// ../blocks/src/system/runtime/nodes/accordionIconTreatment.ts
|
|
62674
|
+
function resolveAccordionIconStyle(iconStyle, iconTreatment) {
|
|
62675
|
+
if (iconTreatment) {
|
|
62676
|
+
switch (iconTreatment.iconSet) {
|
|
62677
|
+
case "plus":
|
|
62678
|
+
return "plus-minus";
|
|
62679
|
+
case "chevron":
|
|
62680
|
+
return "chevron";
|
|
62681
|
+
case "caret":
|
|
62682
|
+
return "caret";
|
|
62683
|
+
case "minimal-cross":
|
|
62684
|
+
return "plus-minus";
|
|
62685
|
+
default:
|
|
62686
|
+
return assertNever7(iconTreatment.iconSet);
|
|
62687
|
+
}
|
|
62688
|
+
}
|
|
62689
|
+
return iconStyle && iconStyle in ICON_CONFIG ? iconStyle : "chevron";
|
|
62690
|
+
}
|
|
62691
|
+
function accordionIconColorStyle(iconTreatment) {
|
|
62692
|
+
const token = iconTreatment?.colorToken;
|
|
62693
|
+
if (!token || token === "current") return void 0;
|
|
62694
|
+
const themeToken = resolveIconColorToken(token);
|
|
62695
|
+
return {
|
|
62696
|
+
color: rgbColorValue(themeToken),
|
|
62697
|
+
...iconTreatment.openColorToken && iconTreatment.openColorToken !== "current" ? {
|
|
62698
|
+
"--accordion-icon-open-color": rgbColorValue(resolveIconColorToken(iconTreatment.openColorToken))
|
|
62699
|
+
} : {}
|
|
62700
|
+
};
|
|
62701
|
+
}
|
|
62702
|
+
function resolveIconColorToken(token) {
|
|
62703
|
+
return token === "muted" ? "mutedText" : token;
|
|
62704
|
+
}
|
|
62705
|
+
function assertNever7(value) {
|
|
62706
|
+
throw new Error(`Unhandled accordion icon set: ${String(value)}`);
|
|
62707
|
+
}
|
|
60250
62708
|
var ACCORDION_ICONS = {
|
|
60251
62709
|
Plus,
|
|
60252
62710
|
Minus,
|
|
@@ -60284,15 +62742,17 @@ var AccordionItemNodeSSR = ({
|
|
|
60284
62742
|
content,
|
|
60285
62743
|
question,
|
|
60286
62744
|
answer,
|
|
60287
|
-
iconStyle
|
|
62745
|
+
iconStyle,
|
|
62746
|
+
iconTreatment
|
|
60288
62747
|
}) => {
|
|
60289
62748
|
const resolvedValue = value !== void 0 && value !== null ? String(value) : void 0;
|
|
60290
62749
|
const triggerSource = trigger ?? question;
|
|
60291
62750
|
const contentSource = content ?? answer;
|
|
60292
|
-
const resolvedIconStyle = iconStyle
|
|
62751
|
+
const resolvedIconStyle = resolveAccordionIconStyle(iconStyle, iconTreatment);
|
|
60293
62752
|
const iconConfig = ICON_CONFIG[resolvedIconStyle];
|
|
60294
62753
|
const ClosedIconComponent = ACCORDION_ICONS[iconConfig.closedIcon];
|
|
60295
62754
|
const OpenIconComponent = iconConfig.openIcon ? ACCORDION_ICONS[iconConfig.openIcon] : null;
|
|
62755
|
+
const iconColorStyle = accordionIconColorStyle(iconTreatment);
|
|
60296
62756
|
return /* @__PURE__ */ jsxs(
|
|
60297
62757
|
"div",
|
|
60298
62758
|
{
|
|
@@ -60302,10 +62762,20 @@ var AccordionItemNodeSSR = ({
|
|
|
60302
62762
|
children: [
|
|
60303
62763
|
/* @__PURE__ */ jsxs("div", { className: "accordion-trigger", role: "button", tabIndex: 0, "aria-expanded": "false", children: [
|
|
60304
62764
|
/* @__PURE__ */ jsx("span", { className: "accordion-trigger-text", children: resolveNode(triggerSource) }),
|
|
60305
|
-
/* @__PURE__ */ jsxs(
|
|
60306
|
-
|
|
60307
|
-
|
|
60308
|
-
|
|
62765
|
+
/* @__PURE__ */ jsxs(
|
|
62766
|
+
"span",
|
|
62767
|
+
{
|
|
62768
|
+
className: "accordion-icon",
|
|
62769
|
+
"aria-hidden": "true",
|
|
62770
|
+
"data-accordion-icon-set": iconTreatment?.iconSet,
|
|
62771
|
+
"data-accordion-icon-motion": iconTreatment?.motion,
|
|
62772
|
+
style: iconColorStyle,
|
|
62773
|
+
children: [
|
|
62774
|
+
ClosedIconComponent && /* @__PURE__ */ jsx(ClosedIconComponent, { className: "accordion-icon-closed" }),
|
|
62775
|
+
OpenIconComponent && /* @__PURE__ */ jsx(OpenIconComponent, { className: "accordion-icon-open" })
|
|
62776
|
+
]
|
|
62777
|
+
}
|
|
62778
|
+
)
|
|
60309
62779
|
] }),
|
|
60310
62780
|
/* @__PURE__ */ jsx(
|
|
60311
62781
|
"div",
|
|
@@ -60460,7 +62930,7 @@ function okWith(data) {
|
|
|
60460
62930
|
function err2(error) {
|
|
60461
62931
|
return { ok: false, error };
|
|
60462
62932
|
}
|
|
60463
|
-
function
|
|
62933
|
+
function assertNever8(value, message2) {
|
|
60464
62934
|
throw new Error(`Unexpected value: ${String(value)}`);
|
|
60465
62935
|
}
|
|
60466
62936
|
|
|
@@ -60615,7 +63085,7 @@ function deriveBookingFormViewState(input) {
|
|
|
60615
63085
|
resourceName: input.verificationState.resourceName
|
|
60616
63086
|
};
|
|
60617
63087
|
default:
|
|
60618
|
-
return
|
|
63088
|
+
return assertNever8(input.verificationState);
|
|
60619
63089
|
}
|
|
60620
63090
|
}
|
|
60621
63091
|
function resolveBookingSiteId(siteId, form2) {
|
|
@@ -60785,7 +63255,7 @@ function getBookingServicePaymentSelectionMode(service) {
|
|
|
60785
63255
|
case "flexible_balance":
|
|
60786
63256
|
return "implicit_flexible_balance";
|
|
60787
63257
|
default:
|
|
60788
|
-
return
|
|
63258
|
+
return assertNever8(onlyKind);
|
|
60789
63259
|
}
|
|
60790
63260
|
}
|
|
60791
63261
|
if (allowedKinds.length === 2 && allowedKinds.includes("upfront") && (allowedKinds.includes("deferred_manual") || allowedKinds.includes("instalment_plan") || allowedKinds.includes("flexible_balance"))) {
|
|
@@ -60987,14 +63457,25 @@ function formatBookingSubmissionPreparationError(error) {
|
|
|
60987
63457
|
case "service-missing-duration":
|
|
60988
63458
|
return `Service "${error.serviceTitle}" is missing duration. Please update the service in the dashboard to include a duration (e.g., 30 minutes).`;
|
|
60989
63459
|
default:
|
|
60990
|
-
return
|
|
63460
|
+
return assertNever8(error);
|
|
60991
63461
|
}
|
|
60992
63462
|
}
|
|
60993
63463
|
function getBookingSuccessMessage(successMessage) {
|
|
60994
63464
|
return successMessage?.trim() || "Your appointment has been booked! Check your email for confirmation.";
|
|
60995
63465
|
}
|
|
60996
63466
|
|
|
60997
|
-
// ../
|
|
63467
|
+
// ../logger/src/noop.ts
|
|
63468
|
+
var noop = () => {
|
|
63469
|
+
};
|
|
63470
|
+
var logger = {
|
|
63471
|
+
debug: noop,
|
|
63472
|
+
info: noop,
|
|
63473
|
+
warn: noop,
|
|
63474
|
+
error: noop,
|
|
63475
|
+
withFields: (_2) => logger
|
|
63476
|
+
};
|
|
63477
|
+
|
|
63478
|
+
// ../blocks/src/system/runtime/nodes/booking-runtime-sources.ts
|
|
60998
63479
|
var bookingFieldOptionSchema = z.object({
|
|
60999
63480
|
value: z.string(),
|
|
61000
63481
|
label: z.string()
|
|
@@ -61048,6 +63529,8 @@ var bookingSourceFormSchema = z.object({
|
|
|
61048
63529
|
createdAt: z.string(),
|
|
61049
63530
|
updatedAt: z.string()
|
|
61050
63531
|
});
|
|
63532
|
+
|
|
63533
|
+
// ../blocks/src/system/runtime/nodes/booking-form.interactive.ts
|
|
61051
63534
|
var blockBookingPaymentTermsAvailabilitySchema = z.union([
|
|
61052
63535
|
z.object({
|
|
61053
63536
|
kind: z.literal("available"),
|
|
@@ -64455,6 +66938,47 @@ function makeDefaultBlockComponent(args) {
|
|
|
64455
66938
|
return result;
|
|
64456
66939
|
};
|
|
64457
66940
|
}
|
|
66941
|
+
function renderBlock(manifest, content, options = {}) {
|
|
66942
|
+
const layout = resolveBlockLayout(manifest, content);
|
|
66943
|
+
if (!layout) {
|
|
66944
|
+
throw new Error(`Block manifest "${manifest.name}" requires a layout definition`);
|
|
66945
|
+
}
|
|
66946
|
+
const variantKey = resolveBlockVariantKey(
|
|
66947
|
+
manifest,
|
|
66948
|
+
content
|
|
66949
|
+
);
|
|
66950
|
+
const Component4 = makeDefaultBlockComponent({ manifest });
|
|
66951
|
+
const resolvedRegistry = options.registry ?? getDefaultComponentRegistry();
|
|
66952
|
+
const resolvedTheme = options.theme ?? defaultThemeTokens;
|
|
66953
|
+
const cleanKind = manifest.name.replace(/^block\./, "");
|
|
66954
|
+
const componentElement = React63__default.createElement(Component4, {
|
|
66955
|
+
content,
|
|
66956
|
+
data: options.data,
|
|
66957
|
+
registry: resolvedRegistry,
|
|
66958
|
+
theme: resolvedTheme,
|
|
66959
|
+
themeConfig: options.themeConfig,
|
|
66960
|
+
transforms: options.transforms,
|
|
66961
|
+
viewModelOverrides: options.viewModelOverrides,
|
|
66962
|
+
pathBase: options.pathBase,
|
|
66963
|
+
blockId: null,
|
|
66964
|
+
blockKind: manifest.name
|
|
66965
|
+
});
|
|
66966
|
+
if (manifest.behaviours?.managesOwnWrapper) {
|
|
66967
|
+
return componentElement;
|
|
66968
|
+
}
|
|
66969
|
+
const styleGroup = typeof content.styleGroup === "string" ? content.styleGroup : void 0;
|
|
66970
|
+
return React63__default.createElement(
|
|
66971
|
+
"div",
|
|
66972
|
+
{
|
|
66973
|
+
className: `block-${cleanKind}`,
|
|
66974
|
+
"data-block": cleanKind,
|
|
66975
|
+
"data-block-kind": manifest.name,
|
|
66976
|
+
...variantKey ? { "data-block-variant": variantKey, "data-variant": variantKey } : {},
|
|
66977
|
+
...styleGroup ? { "data-style-group": styleGroup } : {}
|
|
66978
|
+
},
|
|
66979
|
+
componentElement
|
|
66980
|
+
);
|
|
66981
|
+
}
|
|
64458
66982
|
|
|
64459
66983
|
// ../theme-core/src/runtime/fontFamily.ts
|
|
64460
66984
|
var GENERIC_CSS_FAMILIES = [
|
|
@@ -67949,6 +70473,82 @@ function transformSdkBlockToDefinition(sdkBlock) {
|
|
|
67949
70473
|
// No content normalizer - SDK blocks use raw content
|
|
67950
70474
|
};
|
|
67951
70475
|
}
|
|
70476
|
+
|
|
70477
|
+
// ../blocks/src/customBlockRegistry.ts
|
|
70478
|
+
function isCustomBlockKind(blockKind) {
|
|
70479
|
+
return blockKind.startsWith("custom.");
|
|
70480
|
+
}
|
|
70481
|
+
function transformToBlockDescriptor(sdkBlock, source = "sdk") {
|
|
70482
|
+
return {
|
|
70483
|
+
name: sdkBlock.id,
|
|
70484
|
+
title: sdkBlock.title,
|
|
70485
|
+
description: sdkBlock.description,
|
|
70486
|
+
category: sdkBlock.category,
|
|
70487
|
+
tags: sdkBlock.tags,
|
|
70488
|
+
icon: sdkBlock.icon,
|
|
70489
|
+
definition: transformSdkBlockToDefinition(sdkBlock),
|
|
70490
|
+
source
|
|
70491
|
+
};
|
|
70492
|
+
}
|
|
70493
|
+
function toResolvedCustomBlock(manifest, source) {
|
|
70494
|
+
return {
|
|
70495
|
+
blockKind: manifest.id,
|
|
70496
|
+
manifest: transformSdkBlockToManifest(manifest),
|
|
70497
|
+
source,
|
|
70498
|
+
descriptor: transformToBlockDescriptor(
|
|
70499
|
+
manifest,
|
|
70500
|
+
source.kind === "managed-database" ? "database" : "sdk"
|
|
70501
|
+
)
|
|
70502
|
+
};
|
|
70503
|
+
}
|
|
70504
|
+
function createCustomBlockRegistry({
|
|
70505
|
+
sdkConfig,
|
|
70506
|
+
customBlocks = [],
|
|
70507
|
+
onConflict
|
|
70508
|
+
}) {
|
|
70509
|
+
const entriesByKind = /* @__PURE__ */ new Map();
|
|
70510
|
+
for (const sdkBlock of sdkConfig?.customBlocks ?? []) {
|
|
70511
|
+
entriesByKind.set(
|
|
70512
|
+
sdkBlock.id,
|
|
70513
|
+
toResolvedCustomBlock(sdkBlock, { kind: "sdk-config" })
|
|
70514
|
+
);
|
|
70515
|
+
}
|
|
70516
|
+
for (const customBlock of customBlocks) {
|
|
70517
|
+
const existing = entriesByKind.get(customBlock.manifest.id);
|
|
70518
|
+
if (existing) {
|
|
70519
|
+
onConflict?.(
|
|
70520
|
+
`Skipping DB custom block "${customBlock.manifest.id}" - conflicts with SDK config block`
|
|
70521
|
+
);
|
|
70522
|
+
continue;
|
|
70523
|
+
}
|
|
70524
|
+
entriesByKind.set(
|
|
70525
|
+
customBlock.manifest.id,
|
|
70526
|
+
toResolvedCustomBlock(customBlock.manifest, customBlock.source)
|
|
70527
|
+
);
|
|
70528
|
+
}
|
|
70529
|
+
return {
|
|
70530
|
+
entries: Array.from(entriesByKind.values()),
|
|
70531
|
+
findManifest: (blockKind) => {
|
|
70532
|
+
if (!isCustomBlockKind(blockKind)) return void 0;
|
|
70533
|
+
return entriesByKind.get(blockKind);
|
|
70534
|
+
}
|
|
70535
|
+
};
|
|
70536
|
+
}
|
|
70537
|
+
function mergeBlockDescriptorsWithRegistry(systemBlocks, registry, onConflict) {
|
|
70538
|
+
const existingNames = new Set(systemBlocks.map((block) => block.name));
|
|
70539
|
+
const result = [...systemBlocks];
|
|
70540
|
+
for (const entry of registry.entries) {
|
|
70541
|
+
if (existingNames.has(entry.blockKind)) {
|
|
70542
|
+
onConflict?.(
|
|
70543
|
+
`Skipping custom block "${entry.blockKind}" - conflicts with system block`
|
|
70544
|
+
);
|
|
70545
|
+
continue;
|
|
70546
|
+
}
|
|
70547
|
+
result.push(entry.descriptor);
|
|
70548
|
+
existingNames.add(entry.blockKind);
|
|
70549
|
+
}
|
|
70550
|
+
return result;
|
|
70551
|
+
}
|
|
67952
70552
|
function PageRenderer({
|
|
67953
70553
|
theme,
|
|
67954
70554
|
page,
|
|
@@ -68114,17 +70714,14 @@ var MemoBlockSection = React63.memo(
|
|
|
68114
70714
|
}
|
|
68115
70715
|
const OverrideComponent = getBlockOverride(block.kind, blockOverrides);
|
|
68116
70716
|
let definition = getBlockDefinition(block.kind);
|
|
68117
|
-
if (!definition && block.kind.startsWith("custom.")
|
|
68118
|
-
|
|
68119
|
-
|
|
68120
|
-
|
|
68121
|
-
|
|
68122
|
-
|
|
68123
|
-
|
|
68124
|
-
|
|
68125
|
-
if (dbBlock) {
|
|
68126
|
-
definition = transformSdkBlockToDefinition(dbBlock);
|
|
68127
|
-
}
|
|
70717
|
+
if (!definition && block.kind.startsWith("custom.")) {
|
|
70718
|
+
definition = createCustomBlockRegistry({
|
|
70719
|
+
sdkConfig,
|
|
70720
|
+
customBlocks: (customBlocks ?? []).map((manifest) => ({
|
|
70721
|
+
manifest,
|
|
70722
|
+
source: { kind: "managed-database" }
|
|
70723
|
+
}))
|
|
70724
|
+
}).findManifest(block.kind)?.descriptor.definition;
|
|
68128
70725
|
}
|
|
68129
70726
|
if (!definition) {
|
|
68130
70727
|
if (OverrideComponent) {
|
|
@@ -68151,13 +70748,16 @@ var MemoBlockSection = React63.memo(
|
|
|
68151
70748
|
}
|
|
68152
70749
|
if (block.kind.startsWith("custom.") && shouldDebugCustomBlocks()) {
|
|
68153
70750
|
try {
|
|
68154
|
-
console.warn(
|
|
68155
|
-
|
|
68156
|
-
|
|
68157
|
-
|
|
68158
|
-
|
|
68159
|
-
|
|
68160
|
-
|
|
70751
|
+
console.warn(
|
|
70752
|
+
"[blocks:PageRenderer] custom block definition missing",
|
|
70753
|
+
{
|
|
70754
|
+
blockId: block.id ?? null,
|
|
70755
|
+
blockKind: block.kind,
|
|
70756
|
+
hasOverride: Boolean(OverrideComponent),
|
|
70757
|
+
sdkCustomBlocksCount: sdkConfig?.customBlocks?.length ?? 0,
|
|
70758
|
+
dbCustomBlocksCount: customBlocks?.length ?? 0
|
|
70759
|
+
}
|
|
70760
|
+
);
|
|
68161
70761
|
} catch {
|
|
68162
70762
|
}
|
|
68163
70763
|
}
|
|
@@ -68171,12 +70771,15 @@ var MemoBlockSection = React63.memo(
|
|
|
68171
70771
|
if (!OverrideComponent && !manifestHasLayout) {
|
|
68172
70772
|
if (block.kind.startsWith("custom.") && shouldDebugCustomBlocks()) {
|
|
68173
70773
|
try {
|
|
68174
|
-
console.warn(
|
|
68175
|
-
|
|
68176
|
-
|
|
68177
|
-
|
|
68178
|
-
|
|
68179
|
-
|
|
70774
|
+
console.warn(
|
|
70775
|
+
"[blocks:PageRenderer] custom block has no layout/variants and no override",
|
|
70776
|
+
{
|
|
70777
|
+
blockId: block.id ?? null,
|
|
70778
|
+
blockKind: block.kind,
|
|
70779
|
+
hasOverride: false,
|
|
70780
|
+
manifestKeys: Object.keys(definition.manifest ?? {}).sort()
|
|
70781
|
+
}
|
|
70782
|
+
);
|
|
68180
70783
|
} catch {
|
|
68181
70784
|
}
|
|
68182
70785
|
}
|
|
@@ -68210,9 +70813,10 @@ var MemoBlockSection = React63.memo(
|
|
|
68210
70813
|
if (parsed.success) {
|
|
68211
70814
|
data = parsed.data;
|
|
68212
70815
|
} else if (usePlaceholders) {
|
|
68213
|
-
const relaxed = getCachedValidator(
|
|
68214
|
-
|
|
68215
|
-
|
|
70816
|
+
const relaxed = getCachedValidator(
|
|
70817
|
+
definition.manifest,
|
|
70818
|
+
"relaxed"
|
|
70819
|
+
).safeParse(content);
|
|
68216
70820
|
if (relaxed.success) {
|
|
68217
70821
|
data = relaxed.data;
|
|
68218
70822
|
} else {
|
|
@@ -79391,7 +81995,7 @@ function extractBlockData(content) {
|
|
|
79391
81995
|
}
|
|
79392
81996
|
|
|
79393
81997
|
// ../content-editor/src/utils/assertNever.ts
|
|
79394
|
-
function
|
|
81998
|
+
function assertNever9(value, message2) {
|
|
79395
81999
|
throw new Error(`Unexpected value: ${String(value)}`);
|
|
79396
82000
|
}
|
|
79397
82001
|
function cloneRecord(value) {
|
|
@@ -80042,7 +82646,7 @@ function applyEditorCommand(snapshot, command2) {
|
|
|
80042
82646
|
return nextSnapshot;
|
|
80043
82647
|
}
|
|
80044
82648
|
default:
|
|
80045
|
-
return
|
|
82649
|
+
return assertNever9(command2);
|
|
80046
82650
|
}
|
|
80047
82651
|
}
|
|
80048
82652
|
function applyUserOperation(snapshot, operation) {
|
|
@@ -80114,7 +82718,7 @@ function applySystemOperation(snapshot, operation) {
|
|
|
80114
82718
|
case "replace-block-list":
|
|
80115
82719
|
return replaceEditorBlockList(snapshot, operation.next);
|
|
80116
82720
|
default:
|
|
80117
|
-
return
|
|
82721
|
+
return assertNever9(operation);
|
|
80118
82722
|
}
|
|
80119
82723
|
}
|
|
80120
82724
|
function hydrateMetadataSnapshot(snapshot, baseline, current, published) {
|
|
@@ -80518,6 +83122,18 @@ function canRedoHistory(state) {
|
|
|
80518
83122
|
}
|
|
80519
83123
|
|
|
80520
83124
|
// ../block-form/src/blockDraftSaveability.ts
|
|
83125
|
+
function getResolvedBlockManifest(resolution) {
|
|
83126
|
+
switch (resolution.kind) {
|
|
83127
|
+
case "builtinManifest":
|
|
83128
|
+
case "sdkCustomManifest":
|
|
83129
|
+
case "managedCustomManifest":
|
|
83130
|
+
return resolution.manifest;
|
|
83131
|
+
case "unknownCustomBlock":
|
|
83132
|
+
case "unknownBuiltinBlock":
|
|
83133
|
+
case "invalidManifest":
|
|
83134
|
+
return null;
|
|
83135
|
+
}
|
|
83136
|
+
}
|
|
80521
83137
|
var unfinishedBlockCopy = {
|
|
80522
83138
|
title: "Fix this block to save it",
|
|
80523
83139
|
description: "Some fields need a quick check. Your changes are safe here for now."
|
|
@@ -80576,19 +83192,13 @@ function deriveBlockDraftSaveability(input) {
|
|
|
80576
83192
|
issues
|
|
80577
83193
|
};
|
|
80578
83194
|
}
|
|
80579
|
-
function withNormalizedManifestMessage(issue2) {
|
|
80580
|
-
return {
|
|
80581
|
-
...issue2,
|
|
80582
|
-
message: normalizeManifestIssueMessage(issue2)
|
|
80583
|
-
};
|
|
80584
|
-
}
|
|
80585
83195
|
function validateBlockManifestIssues(manifest, values, mode) {
|
|
80586
83196
|
const validator = getManifestValidation(manifest, mode);
|
|
80587
83197
|
const result = validator.safeParse(values);
|
|
80588
83198
|
if (result.success) {
|
|
80589
83199
|
return [];
|
|
80590
83200
|
}
|
|
80591
|
-
return result.error.issues
|
|
83201
|
+
return result.error.issues;
|
|
80592
83202
|
}
|
|
80593
83203
|
function validateBlockManifest(manifest, values, mode) {
|
|
80594
83204
|
const plans = getManifestValidationCacheEntry(manifest).plans;
|
|
@@ -80609,23 +83219,6 @@ function isValidationFieldVisibleInSidebar(descriptor) {
|
|
|
80609
83219
|
if (!descriptor) return true;
|
|
80610
83220
|
return descriptor.visibility.kind === "visible";
|
|
80611
83221
|
}
|
|
80612
|
-
function normalizeManifestIssueMessage(issue2) {
|
|
80613
|
-
switch (issue2.code) {
|
|
80614
|
-
case "invalid_type":
|
|
80615
|
-
return issue2.message;
|
|
80616
|
-
case "too_big":
|
|
80617
|
-
return issue2.origin === "string" ? `Use ${issue2.maximum} characters or fewer` : issue2.message;
|
|
80618
|
-
case "too_small":
|
|
80619
|
-
if (issue2.origin !== "string") return issue2.message;
|
|
80620
|
-
return issue2.minimum === 1 ? "This field is required" : `Use at least ${issue2.minimum} characters`;
|
|
80621
|
-
case "invalid_format":
|
|
80622
|
-
if (issue2.format === "email") return "Enter a valid email address";
|
|
80623
|
-
if (issue2.format === "url") return "Enter a valid web address";
|
|
80624
|
-
return "Check the format and try again";
|
|
80625
|
-
default:
|
|
80626
|
-
return issue2.message;
|
|
80627
|
-
}
|
|
80628
|
-
}
|
|
80629
83222
|
function getManifestValidation(manifest, mode) {
|
|
80630
83223
|
const cached = getManifestValidationCacheEntry(manifest);
|
|
80631
83224
|
const existing = cached.validators[mode];
|
|
@@ -82102,6 +84695,73 @@ async function mutateBlockContent(apiClient, args) {
|
|
|
82102
84695
|
}
|
|
82103
84696
|
}
|
|
82104
84697
|
|
|
84698
|
+
// ../content-editor/src/hooks/blockDraftLifecycle.ts
|
|
84699
|
+
function deriveBlockDraftLifecycle(input) {
|
|
84700
|
+
const { snapshot, saveability, autosaveStatus } = input;
|
|
84701
|
+
if (saveability.kind === "save_failed") {
|
|
84702
|
+
return {
|
|
84703
|
+
kind: "saveFailed",
|
|
84704
|
+
blockId: snapshot.id,
|
|
84705
|
+
error: saveability.error,
|
|
84706
|
+
issues: saveability.issues
|
|
84707
|
+
};
|
|
84708
|
+
}
|
|
84709
|
+
if (snapshot.syncState.kind === "failed") {
|
|
84710
|
+
return {
|
|
84711
|
+
kind: "saveFailed",
|
|
84712
|
+
blockId: snapshot.id,
|
|
84713
|
+
error: snapshot.syncState.error,
|
|
84714
|
+
issues: saveability.issues
|
|
84715
|
+
};
|
|
84716
|
+
}
|
|
84717
|
+
if (snapshot.syncState.kind === "baseline") {
|
|
84718
|
+
return {
|
|
84719
|
+
kind: "baseline",
|
|
84720
|
+
blockId: snapshot.id
|
|
84721
|
+
};
|
|
84722
|
+
}
|
|
84723
|
+
if (saveability.kind !== "saveable") {
|
|
84724
|
+
return {
|
|
84725
|
+
kind: "invalidPending",
|
|
84726
|
+
blockId: snapshot.id,
|
|
84727
|
+
issues: saveability.issues
|
|
84728
|
+
};
|
|
84729
|
+
}
|
|
84730
|
+
if (autosaveStatus === "saving") {
|
|
84731
|
+
return {
|
|
84732
|
+
kind: "saving",
|
|
84733
|
+
blockId: snapshot.id,
|
|
84734
|
+
version: snapshot.version
|
|
84735
|
+
};
|
|
84736
|
+
}
|
|
84737
|
+
return {
|
|
84738
|
+
kind: "validPending",
|
|
84739
|
+
blockId: snapshot.id,
|
|
84740
|
+
version: snapshot.version
|
|
84741
|
+
};
|
|
84742
|
+
}
|
|
84743
|
+
function deriveBlockDraftAutosaveDecision(input) {
|
|
84744
|
+
const { snapshot, lifecycle } = input;
|
|
84745
|
+
switch (lifecycle.kind) {
|
|
84746
|
+
case "validPending": {
|
|
84747
|
+
return {
|
|
84748
|
+
type: "save",
|
|
84749
|
+
blockId: snapshot.id,
|
|
84750
|
+
data: snapshot.current.data ?? snapshot.current,
|
|
84751
|
+
acknowledgedVersion: snapshot.version
|
|
84752
|
+
};
|
|
84753
|
+
}
|
|
84754
|
+
case "baseline":
|
|
84755
|
+
return { type: "skip", blockId: snapshot.id, reason: "baseline" };
|
|
84756
|
+
case "invalidPending":
|
|
84757
|
+
return { type: "skip", blockId: snapshot.id, reason: "invalid" };
|
|
84758
|
+
case "saving":
|
|
84759
|
+
return { type: "skip", blockId: snapshot.id, reason: "saving" };
|
|
84760
|
+
case "saveFailed":
|
|
84761
|
+
return { type: "skip", blockId: snapshot.id, reason: "saveFailed" };
|
|
84762
|
+
}
|
|
84763
|
+
}
|
|
84764
|
+
|
|
82105
84765
|
// ../content-editor/src/hooks/useBlockAutosave.ts
|
|
82106
84766
|
function isPlainRecord(value) {
|
|
82107
84767
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -82151,21 +84811,20 @@ function useBlockAutosave({
|
|
|
82151
84811
|
const drafts = state.drafts;
|
|
82152
84812
|
const allSnapshots = drafts.inspect();
|
|
82153
84813
|
const pending = allSnapshots.filter(isPendingWithCurrent);
|
|
82154
|
-
const saveablePending = pending.
|
|
84814
|
+
const saveablePending = pending.flatMap((snapshot) => {
|
|
82155
84815
|
const saveability = state.blockValidation.getBlockSaveability(snapshot.id);
|
|
82156
|
-
|
|
82157
|
-
|
|
82158
|
-
|
|
82159
|
-
|
|
82160
|
-
|
|
84816
|
+
const lifecycle = deriveBlockDraftLifecycle({
|
|
84817
|
+
snapshot,
|
|
84818
|
+
saveability,
|
|
84819
|
+
autosaveStatus: state.autosave.blocks.status
|
|
84820
|
+
});
|
|
84821
|
+
const decision = deriveBlockDraftAutosaveDecision({ snapshot, lifecycle });
|
|
84822
|
+
return decision.type === "save" ? [decision] : [];
|
|
82161
84823
|
});
|
|
82162
|
-
return saveablePending.map((
|
|
82163
|
-
blockId:
|
|
82164
|
-
|
|
82165
|
-
|
|
82166
|
-
// but the API expects just the content
|
|
82167
|
-
data: s2.current.data ?? s2.current,
|
|
82168
|
-
acknowledgedVersion: s2.version
|
|
84824
|
+
return saveablePending.map((decision) => ({
|
|
84825
|
+
blockId: decision.blockId,
|
|
84826
|
+
data: decision.data,
|
|
84827
|
+
acknowledgedVersion: decision.acknowledgedVersion
|
|
82169
84828
|
}));
|
|
82170
84829
|
}, [uiStore]);
|
|
82171
84830
|
const stableShouldSkip = useCallback(
|
|
@@ -82290,16 +84949,12 @@ function applyBlockedPublishPlan(uiStore, plan, setErrorMessage) {
|
|
|
82290
84949
|
// ../content-editor/src/hooks/validateBlocksForPublish.ts
|
|
82291
84950
|
function validateAllBlocks(uiStore) {
|
|
82292
84951
|
const errors = [];
|
|
82293
|
-
const
|
|
84952
|
+
const state = uiStore.getState();
|
|
84953
|
+
const draftsState = state.drafts;
|
|
82294
84954
|
const allBlocks = draftsState.inspect();
|
|
82295
84955
|
for (const snapshot of allBlocks) {
|
|
82296
84956
|
if (!snapshot.meta?.kind) continue;
|
|
82297
|
-
const
|
|
82298
|
-
const definition = getBlockDefinition(snapshot.meta.kind);
|
|
82299
|
-
if (!definition?.manifest) {
|
|
82300
|
-
continue;
|
|
82301
|
-
}
|
|
82302
|
-
const issues = validateBlockManifest(definition.manifest, content, "strict");
|
|
84957
|
+
const { issues, manifest } = getPublishValidationIssues(uiStore, snapshot);
|
|
82303
84958
|
if (issues.length > 0) {
|
|
82304
84959
|
for (const issue2 of issues) {
|
|
82305
84960
|
errors.push({
|
|
@@ -82309,7 +84964,7 @@ function validateAllBlocks(uiStore) {
|
|
|
82309
84964
|
fieldDescriptor: issue2.fieldDescriptor,
|
|
82310
84965
|
isFieldVisibleInSidebar: issue2.isFieldVisibleInSidebar,
|
|
82311
84966
|
fieldLabel: getFieldLabelFromManifest(
|
|
82312
|
-
|
|
84967
|
+
manifest,
|
|
82313
84968
|
issue2.path,
|
|
82314
84969
|
issue2.fieldDescriptor
|
|
82315
84970
|
),
|
|
@@ -82320,15 +84975,130 @@ function validateAllBlocks(uiStore) {
|
|
|
82320
84975
|
}
|
|
82321
84976
|
return errors;
|
|
82322
84977
|
}
|
|
84978
|
+
function getPublishValidationIssues(uiStore, snapshot) {
|
|
84979
|
+
const resolution = resolveClientBlockManifestForPublish(snapshot.meta.kind);
|
|
84980
|
+
const registryManifest = getResolvedBlockManifest(resolution);
|
|
84981
|
+
if (registryManifest) {
|
|
84982
|
+
const content = snapshot.current ?? snapshot.baseline ?? {};
|
|
84983
|
+
return {
|
|
84984
|
+
issues: validateBlockManifest(registryManifest, content, "strict"),
|
|
84985
|
+
manifest: registryManifest
|
|
84986
|
+
};
|
|
84987
|
+
}
|
|
84988
|
+
const saveability = uiStore.getState().blockValidation?.getBlockSaveability(snapshot.id);
|
|
84989
|
+
if (!saveability) {
|
|
84990
|
+
return { issues: [], manifest: null };
|
|
84991
|
+
}
|
|
84992
|
+
return getSaveabilityPublishValidationIssues(saveability);
|
|
84993
|
+
}
|
|
84994
|
+
function resolveClientBlockManifestForPublish(blockKind) {
|
|
84995
|
+
const definition = getBlockDefinition(blockKind);
|
|
84996
|
+
const registryManifest = definition?.manifest ?? null;
|
|
84997
|
+
if (registryManifest) {
|
|
84998
|
+
return {
|
|
84999
|
+
kind: "builtinManifest",
|
|
85000
|
+
blockKind,
|
|
85001
|
+
manifest: registryManifest
|
|
85002
|
+
};
|
|
85003
|
+
}
|
|
85004
|
+
if (blockKind.startsWith("custom.")) {
|
|
85005
|
+
return {
|
|
85006
|
+
kind: "unknownCustomBlock",
|
|
85007
|
+
blockKind
|
|
85008
|
+
};
|
|
85009
|
+
}
|
|
85010
|
+
return {
|
|
85011
|
+
kind: "unknownBuiltinBlock",
|
|
85012
|
+
blockKind
|
|
85013
|
+
};
|
|
85014
|
+
}
|
|
85015
|
+
function getSaveabilityPublishValidationIssues(saveability) {
|
|
85016
|
+
if (saveability.issues.length > 0) {
|
|
85017
|
+
return {
|
|
85018
|
+
issues: saveability.issues,
|
|
85019
|
+
manifest: null
|
|
85020
|
+
};
|
|
85021
|
+
}
|
|
85022
|
+
if (saveability.kind === "save_failed") {
|
|
85023
|
+
return {
|
|
85024
|
+
issues: [
|
|
85025
|
+
{
|
|
85026
|
+
code: "custom",
|
|
85027
|
+
path: [],
|
|
85028
|
+
fieldPath: "",
|
|
85029
|
+
fieldDescriptor: null,
|
|
85030
|
+
isFieldVisibleInSidebar: true,
|
|
85031
|
+
message: saveability.error
|
|
85032
|
+
}
|
|
85033
|
+
],
|
|
85034
|
+
manifest: null
|
|
85035
|
+
};
|
|
85036
|
+
}
|
|
85037
|
+
return { issues: [], manifest: null };
|
|
85038
|
+
}
|
|
82323
85039
|
function getFieldLabelFromManifest(manifest, path, descriptor) {
|
|
82324
85040
|
if (descriptor) return descriptor.label;
|
|
82325
85041
|
if (path.length === 0) return "Unknown field";
|
|
82326
85042
|
const fieldId = path[0];
|
|
82327
85043
|
if (typeof fieldId !== "string") return String(fieldId);
|
|
82328
|
-
const field = manifest
|
|
85044
|
+
const field = manifest?.fields?.find((f2) => f2.id === fieldId);
|
|
82329
85045
|
return field?.label ?? fieldId;
|
|
82330
85046
|
}
|
|
82331
85047
|
|
|
85048
|
+
// ../content-editor/src/hooks/publishability.ts
|
|
85049
|
+
function hasAutosaveFailure(autosave) {
|
|
85050
|
+
if (!autosave) return false;
|
|
85051
|
+
return autosave.metadata.status === "error" || autosave.content.status === "error" || autosave.blocks.status === "error" || autosave.metadata.hasFailedSaves || autosave.content.hasFailedSaves || autosave.blocks.hasFailedSaves;
|
|
85052
|
+
}
|
|
85053
|
+
function derivePublishability(input) {
|
|
85054
|
+
const blockedPublishPlan = deriveBlockedPublishPlan({
|
|
85055
|
+
validationErrors: input.validationErrors,
|
|
85056
|
+
drawerOpen: input.drawerOpen
|
|
85057
|
+
});
|
|
85058
|
+
if (blockedPublishPlan.type === "blocked") {
|
|
85059
|
+
return {
|
|
85060
|
+
kind: "blocked",
|
|
85061
|
+
canPublish: false,
|
|
85062
|
+
disablePublish: true,
|
|
85063
|
+
reason: "invalidBlocks",
|
|
85064
|
+
blockedPublishPlan
|
|
85065
|
+
};
|
|
85066
|
+
}
|
|
85067
|
+
if (input.hasInvalidBlockSummary) {
|
|
85068
|
+
return {
|
|
85069
|
+
kind: "blocked",
|
|
85070
|
+
canPublish: false,
|
|
85071
|
+
disablePublish: true,
|
|
85072
|
+
reason: "invalidBlockSummary",
|
|
85073
|
+
blockedPublishPlan
|
|
85074
|
+
};
|
|
85075
|
+
}
|
|
85076
|
+
if (input.includeAutosaveFailures && hasAutosaveFailure(input.autosave)) {
|
|
85077
|
+
return {
|
|
85078
|
+
kind: "blocked",
|
|
85079
|
+
canPublish: false,
|
|
85080
|
+
disablePublish: true,
|
|
85081
|
+
reason: "autosaveFailed",
|
|
85082
|
+
blockedPublishPlan
|
|
85083
|
+
};
|
|
85084
|
+
}
|
|
85085
|
+
if (input.unpublishedState.hasBeenPublishedBefore && !input.unpublishedState.hasUnpublishedChanges) {
|
|
85086
|
+
return {
|
|
85087
|
+
kind: "blocked",
|
|
85088
|
+
canPublish: false,
|
|
85089
|
+
disablePublish: true,
|
|
85090
|
+
reason: "noUnpublishedChanges",
|
|
85091
|
+
blockedPublishPlan
|
|
85092
|
+
};
|
|
85093
|
+
}
|
|
85094
|
+
return {
|
|
85095
|
+
kind: "allowed",
|
|
85096
|
+
canPublish: true,
|
|
85097
|
+
disablePublish: false,
|
|
85098
|
+
blockedPublishPlan
|
|
85099
|
+
};
|
|
85100
|
+
}
|
|
85101
|
+
|
|
82332
85102
|
// ../content-editor/src/debug/unpublishedChangesDebug.ts
|
|
82333
85103
|
function isBrowser() {
|
|
82334
85104
|
return typeof window !== "undefined";
|
|
@@ -82339,7 +85109,7 @@ function isUnpublishedChangesDebugEnabled() {
|
|
|
82339
85109
|
}
|
|
82340
85110
|
|
|
82341
85111
|
// ../content-editor/src/hooks/useEntryActions.ts
|
|
82342
|
-
async function waitForAutosavesComplete(uiStore, timeoutMs =
|
|
85112
|
+
async function waitForAutosavesComplete(uiStore, timeoutMs = 6e4) {
|
|
82343
85113
|
return new Promise((resolve, reject) => {
|
|
82344
85114
|
const getAutosaveStatuses = () => {
|
|
82345
85115
|
const state = uiStore.getState();
|
|
@@ -82440,24 +85210,50 @@ function useEntryActions({
|
|
|
82440
85210
|
}, [uiStore, hasRoute, setErrorMessage]);
|
|
82441
85211
|
const performPublish = useCallback(async (options) => {
|
|
82442
85212
|
setErrorMessage(null);
|
|
85213
|
+
const validationErrors = validateAllBlocks(uiStore);
|
|
85214
|
+
const publishability = derivePublishability({
|
|
85215
|
+
unpublishedState: uiStore.getState().getUnpublishedState(),
|
|
85216
|
+
validationErrors,
|
|
85217
|
+
drawerOpen: uiStore.getState().drawerOpen
|
|
85218
|
+
});
|
|
85219
|
+
if (publishability.kind === "blocked") {
|
|
85220
|
+
switch (publishability.reason) {
|
|
85221
|
+
case "invalidBlocks":
|
|
85222
|
+
applyBlockedPublishPlan(
|
|
85223
|
+
uiStore,
|
|
85224
|
+
publishability.blockedPublishPlan,
|
|
85225
|
+
setErrorMessage
|
|
85226
|
+
);
|
|
85227
|
+
return;
|
|
85228
|
+
case "noUnpublishedChanges":
|
|
85229
|
+
return;
|
|
85230
|
+
case "invalidBlockSummary":
|
|
85231
|
+
return;
|
|
85232
|
+
case "autosaveFailed":
|
|
85233
|
+
setErrorMessage("Cannot publish: failed to save draft changes.");
|
|
85234
|
+
throw new Error("Cannot publish: failed to save draft changes.");
|
|
85235
|
+
}
|
|
85236
|
+
}
|
|
82443
85237
|
const dirtyTypes = getDirtyAutosaveTypes(uiStore, hasRoute);
|
|
82444
85238
|
uiStore.getState().autosave.saveNow(dirtyTypes);
|
|
82445
85239
|
uiStore.getState().autosave.flushAllPending();
|
|
82446
85240
|
await waitForAutosavesComplete(uiStore);
|
|
82447
|
-
|
|
85241
|
+
const autosavePublishability = derivePublishability({
|
|
85242
|
+
unpublishedState: uiStore.getState().getUnpublishedState(),
|
|
85243
|
+
validationErrors: [],
|
|
85244
|
+
drawerOpen: uiStore.getState().drawerOpen,
|
|
85245
|
+
includeAutosaveFailures: true,
|
|
85246
|
+
autosave: {
|
|
85247
|
+
metadata: uiStore.getState().autosave.metadata,
|
|
85248
|
+
content: uiStore.getState().autosave.content,
|
|
85249
|
+
blocks: uiStore.getState().autosave.blocks
|
|
85250
|
+
}
|
|
85251
|
+
});
|
|
85252
|
+
if (autosavePublishability.kind === "blocked" && autosavePublishability.reason === "autosaveFailed") {
|
|
82448
85253
|
const message2 = "Cannot publish: failed to save draft changes.";
|
|
82449
85254
|
setErrorMessage(message2);
|
|
82450
85255
|
throw new Error(message2);
|
|
82451
85256
|
}
|
|
82452
|
-
const validationErrors = validateAllBlocks(uiStore);
|
|
82453
|
-
const blockedPublishPlan = deriveBlockedPublishPlan({
|
|
82454
|
-
validationErrors,
|
|
82455
|
-
drawerOpen: uiStore.getState().drawerOpen
|
|
82456
|
-
});
|
|
82457
|
-
if (blockedPublishPlan.type === "blocked") {
|
|
82458
|
-
applyBlockedPublishPlan(uiStore, blockedPublishPlan, setErrorMessage);
|
|
82459
|
-
return;
|
|
82460
|
-
}
|
|
82461
85257
|
uiStore.getState().autosave.setMetadataStatus({ status: "saving" });
|
|
82462
85258
|
try {
|
|
82463
85259
|
const values = uiStore.getState().metadata.getCurrentValues() || {};
|
|
@@ -83337,7 +86133,7 @@ function toDrainFailure(effect, error) {
|
|
|
83337
86133
|
case "persist-remove":
|
|
83338
86134
|
return { kind: effect.type, message: message2 };
|
|
83339
86135
|
default:
|
|
83340
|
-
return
|
|
86136
|
+
return assertNever9(effect);
|
|
83341
86137
|
}
|
|
83342
86138
|
}
|
|
83343
86139
|
async function drainEditorEffect(effect, context) {
|
|
@@ -83349,7 +86145,7 @@ async function drainEditorEffect(effect, context) {
|
|
|
83349
86145
|
case "persist-remove":
|
|
83350
86146
|
return drainPersistRemoveEffect(effect, context);
|
|
83351
86147
|
default:
|
|
83352
|
-
return
|
|
86148
|
+
return assertNever9(effect);
|
|
83353
86149
|
}
|
|
83354
86150
|
}
|
|
83355
86151
|
async function drainEditorEffects(effects, context) {
|
|
@@ -83733,7 +86529,8 @@ function useInternalValue(props2) {
|
|
|
83733
86529
|
initialEntry,
|
|
83734
86530
|
initialContent,
|
|
83735
86531
|
initialPublishedContent,
|
|
83736
|
-
onEntryUpdated
|
|
86532
|
+
onEntryUpdated,
|
|
86533
|
+
resolveBlockManifest
|
|
83737
86534
|
} = props2;
|
|
83738
86535
|
const saveMode = props2.saveMode ?? "auto";
|
|
83739
86536
|
const historyShortcutsEnabled = props2.historyShortcutsEnabled ?? true;
|
|
@@ -83782,9 +86579,11 @@ function useInternalValue(props2) {
|
|
|
83782
86579
|
});
|
|
83783
86580
|
const hasHydratedContentRef = useRef(false);
|
|
83784
86581
|
const historyShortcutRootRef = useRef(null);
|
|
86582
|
+
const resolveBlockManifestRef = useRef(resolveBlockManifest);
|
|
86583
|
+
resolveBlockManifestRef.current = resolveBlockManifest;
|
|
83785
86584
|
const uiStore = useMemo(() => {
|
|
83786
86585
|
const store = createEditorUiStore({
|
|
83787
|
-
resolveBlockManifest: (kind) => getBlockDefinition(kind)?.manifest ?? null
|
|
86586
|
+
resolveBlockManifest: (kind) => resolveBlockManifestRef.current?.(kind) ?? getBlockDefinition(kind)?.manifest ?? null
|
|
83788
86587
|
});
|
|
83789
86588
|
const metadataState = createMetadataStateFromSnapshot(entry);
|
|
83790
86589
|
const baseline = { ...metadataState.baseline };
|
|
@@ -90416,9 +93215,9 @@ var computePosition2 = (reference, floating, options) => {
|
|
|
90416
93215
|
});
|
|
90417
93216
|
};
|
|
90418
93217
|
var isClient = typeof document !== "undefined";
|
|
90419
|
-
var
|
|
93218
|
+
var noop2 = function noop3() {
|
|
90420
93219
|
};
|
|
90421
|
-
var index = isClient ? useLayoutEffect :
|
|
93220
|
+
var index = isClient ? useLayoutEffect : noop2;
|
|
90422
93221
|
function deepEqual4(a2, b2) {
|
|
90423
93222
|
if (a2 === b2) {
|
|
90424
93223
|
return true;
|
|
@@ -100659,8 +103458,8 @@ function addMonths2(date, amount, options) {
|
|
|
100659
103458
|
const dayOfMonth = _date.getDate();
|
|
100660
103459
|
const endOfDesiredMonth = constructFrom(date, _date.getTime());
|
|
100661
103460
|
endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);
|
|
100662
|
-
const
|
|
100663
|
-
if (dayOfMonth >=
|
|
103461
|
+
const daysInMonth2 = endOfDesiredMonth.getDate();
|
|
103462
|
+
if (dayOfMonth >= daysInMonth2) {
|
|
100664
103463
|
return endOfDesiredMonth;
|
|
100665
103464
|
} else {
|
|
100666
103465
|
_date.setFullYear(
|
|
@@ -102586,8 +105385,8 @@ function setMonth(date, month, options) {
|
|
|
102586
105385
|
const midMonth = constructFrom(date, 0);
|
|
102587
105386
|
midMonth.setFullYear(year, month, 15);
|
|
102588
105387
|
midMonth.setHours(0, 0, 0, 0);
|
|
102589
|
-
const
|
|
102590
|
-
_date.setMonth(month, Math.min(day,
|
|
105388
|
+
const daysInMonth2 = getDaysInMonth(midMonth);
|
|
105389
|
+
_date.setMonth(month, Math.min(day, daysInMonth2));
|
|
102591
105390
|
return _date;
|
|
102592
105391
|
}
|
|
102593
105392
|
|
|
@@ -105731,11 +108530,22 @@ function readSliderFieldUiConfig(ui) {
|
|
|
105731
108530
|
};
|
|
105732
108531
|
}
|
|
105733
108532
|
|
|
108533
|
+
// ../block-form/src/manifest/utils.ts
|
|
108534
|
+
function assertNever10(value) {
|
|
108535
|
+
throw new Error(`Unhandled manifest variant: ${JSON.stringify(value)}`);
|
|
108536
|
+
}
|
|
108537
|
+
function getGroupChildFields(field) {
|
|
108538
|
+
return field.schema?.fields ?? field.fields;
|
|
108539
|
+
}
|
|
108540
|
+
function getRepeaterChildFields(field) {
|
|
108541
|
+
return field.schema?.fields ?? field.fields ?? [];
|
|
108542
|
+
}
|
|
108543
|
+
|
|
105734
108544
|
// ../block-form/src/manifest/canonicalValidation.ts
|
|
105735
108545
|
function buildCanonicalFieldSchema(field) {
|
|
105736
108546
|
const manifestField = normalizeFieldForCanonicalValidation(field);
|
|
105737
108547
|
return fieldPlanToZod(deriveFieldValidationPlan(manifestField), {
|
|
105738
|
-
allowNull: !
|
|
108548
|
+
allowNull: !field.required
|
|
105739
108549
|
});
|
|
105740
108550
|
}
|
|
105741
108551
|
function normalizeFieldForCanonicalValidation(field) {
|
|
@@ -105779,7 +108589,7 @@ function toManifestFieldInput(field) {
|
|
|
105779
108589
|
case "entryPicker":
|
|
105780
108590
|
return field;
|
|
105781
108591
|
}
|
|
105782
|
-
return
|
|
108592
|
+
return assertNever10(field);
|
|
105783
108593
|
}
|
|
105784
108594
|
function numberFieldToManifestInput(field) {
|
|
105785
108595
|
const ui = readNumberFieldUiConfig(field.ui);
|
|
@@ -105795,7 +108605,7 @@ function groupFieldToManifestInput(field) {
|
|
|
105795
108605
|
...field,
|
|
105796
108606
|
schema: {
|
|
105797
108607
|
...field.schema,
|
|
105798
|
-
fields: (field
|
|
108608
|
+
fields: getGroupChildFields(field).map(toManifestFieldInput)
|
|
105799
108609
|
}
|
|
105800
108610
|
};
|
|
105801
108611
|
}
|
|
@@ -105827,13 +108637,10 @@ function repeaterFieldToManifestInput(field) {
|
|
|
105827
108637
|
...field,
|
|
105828
108638
|
schema: {
|
|
105829
108639
|
...field.schema,
|
|
105830
|
-
fields: (field
|
|
108640
|
+
fields: getRepeaterChildFields(field).map(toManifestFieldInput)
|
|
105831
108641
|
}
|
|
105832
108642
|
};
|
|
105833
108643
|
}
|
|
105834
|
-
function assertNever9(value) {
|
|
105835
|
-
throw new Error(`Unhandled field config variant: ${JSON.stringify(value)}`);
|
|
105836
|
-
}
|
|
105837
108644
|
|
|
105838
108645
|
// ../block-form/src/widgets/TextField/textFieldSchema.ts
|
|
105839
108646
|
function buildTextFieldSchema(field) {
|
|
@@ -106028,43 +108835,30 @@ function buildUrlFieldSchema(field) {
|
|
|
106028
108835
|
function getUrlFieldDefault(field) {
|
|
106029
108836
|
return field.defaultValue ?? "";
|
|
106030
108837
|
}
|
|
108838
|
+
|
|
108839
|
+
// ../block-form/src/widgets/TimeField/timeFieldSchema.ts
|
|
106031
108840
|
function buildTimeFieldSchema(field) {
|
|
106032
|
-
|
|
106033
|
-
if (field.required) {
|
|
106034
|
-
return base2.min(1, { message: `${field.label} is required` });
|
|
106035
|
-
}
|
|
106036
|
-
return z.union([base2, z.literal(""), z.null()]).optional().nullable();
|
|
108841
|
+
return buildCanonicalFieldSchema(field);
|
|
106037
108842
|
}
|
|
106038
108843
|
|
|
106039
108844
|
// ../block-form/src/widgets/TimeField/timeFieldDefaults.ts
|
|
106040
108845
|
function getTimeFieldDefault(field) {
|
|
106041
108846
|
return field.defaultValue ?? null;
|
|
106042
108847
|
}
|
|
108848
|
+
|
|
108849
|
+
// ../block-form/src/widgets/DateField/dateFieldSchema.ts
|
|
106043
108850
|
function buildDateFieldSchema(field) {
|
|
106044
|
-
|
|
106045
|
-
if (field.required) {
|
|
106046
|
-
return base2.min(1, { message: `${field.label} is required` });
|
|
106047
|
-
}
|
|
106048
|
-
return z.union([base2, z.literal(""), z.null()]).optional().nullable();
|
|
108851
|
+
return buildCanonicalFieldSchema(field);
|
|
106049
108852
|
}
|
|
106050
108853
|
|
|
106051
108854
|
// ../block-form/src/widgets/DateField/dateFieldDefaults.ts
|
|
106052
108855
|
function getDateFieldDefault(field) {
|
|
106053
108856
|
return field.defaultValue ?? null;
|
|
106054
108857
|
}
|
|
108858
|
+
|
|
108859
|
+
// ../block-form/src/widgets/DateTimeField/dateTimeFieldSchema.ts
|
|
106055
108860
|
function buildDateTimeFieldSchema(field) {
|
|
106056
|
-
|
|
106057
|
-
(val) => {
|
|
106058
|
-
if (!val) return true;
|
|
106059
|
-
const date = new Date(val);
|
|
106060
|
-
return !isNaN(date.getTime());
|
|
106061
|
-
},
|
|
106062
|
-
{ message: "Choose a valid date and time" }
|
|
106063
|
-
);
|
|
106064
|
-
if (field.required) {
|
|
106065
|
-
return base2.min(1, { message: "This field is required" });
|
|
106066
|
-
}
|
|
106067
|
-
return z.union([base2, z.literal(""), z.null()]).optional().nullable();
|
|
108861
|
+
return buildCanonicalFieldSchema(field);
|
|
106068
108862
|
}
|
|
106069
108863
|
|
|
106070
108864
|
// ../block-form/src/widgets/DateTimeField/dateTimeFieldDefaults.ts
|
|
@@ -106369,13 +109163,58 @@ function isFieldVisible(field, role) {
|
|
|
106369
109163
|
function buildValidationSchema(fields3) {
|
|
106370
109164
|
const shape = {};
|
|
106371
109165
|
const ctx = {
|
|
106372
|
-
getFieldSchema: (field) =>
|
|
109166
|
+
getFieldSchema: (field) => buildManifestFieldSchema(field, ctx)
|
|
106373
109167
|
};
|
|
106374
109168
|
for (const field of fields3) {
|
|
106375
|
-
shape[field.id] =
|
|
109169
|
+
shape[field.id] = buildManifestFieldSchema(field, ctx);
|
|
106376
109170
|
}
|
|
106377
109171
|
return z.object(shape).catchall(z.unknown()).passthrough();
|
|
106378
109172
|
}
|
|
109173
|
+
function buildManifestFieldSchema(field, ctx) {
|
|
109174
|
+
if (shouldUseCanonicalSchema(field)) {
|
|
109175
|
+
return buildCanonicalFieldSchema(field);
|
|
109176
|
+
}
|
|
109177
|
+
return buildFieldSchema(field, ctx);
|
|
109178
|
+
}
|
|
109179
|
+
function shouldUseCanonicalSchema(field) {
|
|
109180
|
+
switch (field.type) {
|
|
109181
|
+
case "text":
|
|
109182
|
+
case "number":
|
|
109183
|
+
case "select":
|
|
109184
|
+
case "boolean":
|
|
109185
|
+
case "url":
|
|
109186
|
+
case "slug":
|
|
109187
|
+
case "link":
|
|
109188
|
+
case "media":
|
|
109189
|
+
case "file":
|
|
109190
|
+
case "reference":
|
|
109191
|
+
return true;
|
|
109192
|
+
case "group":
|
|
109193
|
+
return getGroupChildFields(field).every(shouldUseCanonicalSchema);
|
|
109194
|
+
case "modal":
|
|
109195
|
+
return field.schema.fields.every(shouldUseCanonicalSchema);
|
|
109196
|
+
case "repeater":
|
|
109197
|
+
if (field.polymorphic) {
|
|
109198
|
+
return Object.values(field.itemTypes).every(
|
|
109199
|
+
(itemType) => itemType.fields.every(shouldUseCanonicalSchema)
|
|
109200
|
+
);
|
|
109201
|
+
}
|
|
109202
|
+
return getRepeaterChildFields(field).every(shouldUseCanonicalSchema);
|
|
109203
|
+
case "tabGroup":
|
|
109204
|
+
if (field.activeTabField) return false;
|
|
109205
|
+
return field.tabs.every((tab) => tab.fields.every(shouldUseCanonicalSchema));
|
|
109206
|
+
case "richText":
|
|
109207
|
+
case "date":
|
|
109208
|
+
case "time":
|
|
109209
|
+
case "datetime":
|
|
109210
|
+
case "presetOrCustom":
|
|
109211
|
+
case "contentTypeSelect":
|
|
109212
|
+
case "entryPicker":
|
|
109213
|
+
case "button":
|
|
109214
|
+
return false;
|
|
109215
|
+
}
|
|
109216
|
+
return assertNever10(field);
|
|
109217
|
+
}
|
|
106379
109218
|
function createManifestValidation(manifest, options) {
|
|
106380
109219
|
const { fields: fields3, schema } = createManifestFormAdapter(manifest, {
|
|
106381
109220
|
role: options?.role
|
|
@@ -108738,17 +111577,6 @@ function useBlockApi() {
|
|
|
108738
111577
|
}
|
|
108739
111578
|
return client;
|
|
108740
111579
|
}
|
|
108741
|
-
|
|
108742
|
-
// ../logger/src/noop.ts
|
|
108743
|
-
var noop3 = () => {
|
|
108744
|
-
};
|
|
108745
|
-
var logger = {
|
|
108746
|
-
debug: noop3,
|
|
108747
|
-
info: noop3,
|
|
108748
|
-
warn: noop3,
|
|
108749
|
-
error: noop3,
|
|
108750
|
-
withFields: (_2) => logger
|
|
108751
|
-
};
|
|
108752
111580
|
function AltchaWidget({
|
|
108753
111581
|
challengeUrl,
|
|
108754
111582
|
onSolutionChange,
|
|
@@ -109182,7 +112010,7 @@ function bookingSubmissionReducer(state, action) {
|
|
|
109182
112010
|
feedback: { tag: "idle" }
|
|
109183
112011
|
};
|
|
109184
112012
|
default:
|
|
109185
|
-
return
|
|
112013
|
+
return assertNever8(action);
|
|
109186
112014
|
}
|
|
109187
112015
|
}
|
|
109188
112016
|
function selectIsSubmitting(state) {
|
|
@@ -109488,7 +112316,7 @@ function buildBookingPaymentOptionViewModel(input) {
|
|
|
109488
112316
|
};
|
|
109489
112317
|
}
|
|
109490
112318
|
default:
|
|
109491
|
-
return
|
|
112319
|
+
return assertNever8(input.option);
|
|
109492
112320
|
}
|
|
109493
112321
|
}
|
|
109494
112322
|
function buildInstalmentSchedulePreview(input) {
|
|
@@ -109545,7 +112373,7 @@ function buildInstalmentSchedulePreview(input) {
|
|
|
109545
112373
|
})));
|
|
109546
112374
|
}
|
|
109547
112375
|
default:
|
|
109548
|
-
return
|
|
112376
|
+
return assertNever8(input.option.plan);
|
|
109549
112377
|
}
|
|
109550
112378
|
}
|
|
109551
112379
|
function getPaymentCadenceLabel(plan) {
|
|
@@ -109769,7 +112597,7 @@ function bookingFlowReducer(state, event) {
|
|
|
109769
112597
|
case "reset":
|
|
109770
112598
|
return event.initial;
|
|
109771
112599
|
default:
|
|
109772
|
-
return
|
|
112600
|
+
return assertNever8(event);
|
|
109773
112601
|
}
|
|
109774
112602
|
}
|
|
109775
112603
|
function clearAvailabilityFeedback(feedback) {
|
|
@@ -109898,7 +112726,7 @@ function validateBookingStep(input) {
|
|
|
109898
112726
|
return Object.keys(errors).length > 0 ? { ok: false, errors: createFieldBookingValidationErrors(errors) } : { ok: true };
|
|
109899
112727
|
}
|
|
109900
112728
|
default:
|
|
109901
|
-
return
|
|
112729
|
+
return assertNever8(input.stepId);
|
|
109902
112730
|
}
|
|
109903
112731
|
}
|
|
109904
112732
|
function validateBookingFields(input) {
|
|
@@ -110189,7 +113017,7 @@ function resolveAppointmentPackagesModel(input) {
|
|
|
110189
113017
|
};
|
|
110190
113018
|
}
|
|
110191
113019
|
default:
|
|
110192
|
-
return
|
|
113020
|
+
return assertNever8(input.state);
|
|
110193
113021
|
}
|
|
110194
113022
|
}
|
|
110195
113023
|
function toHeadlessEligibleAppointmentPackage(appointmentPackage) {
|
|
@@ -110899,7 +113727,7 @@ function pollingReducer(state, action) {
|
|
|
110899
113727
|
case "timeout":
|
|
110900
113728
|
return state;
|
|
110901
113729
|
default:
|
|
110902
|
-
return
|
|
113730
|
+
return assertNever8(state);
|
|
110903
113731
|
}
|
|
110904
113732
|
case "polling-timed-out":
|
|
110905
113733
|
return {
|
|
@@ -110908,7 +113736,7 @@ function pollingReducer(state, action) {
|
|
|
110908
113736
|
error: new Error("Polling timed out")
|
|
110909
113737
|
};
|
|
110910
113738
|
default:
|
|
110911
|
-
return
|
|
113739
|
+
return assertNever8(action);
|
|
110912
113740
|
}
|
|
110913
113741
|
}
|
|
110914
113742
|
|
|
@@ -111337,7 +114165,7 @@ function DefaultBookingStepContent({
|
|
|
111337
114165
|
case "custom-fields":
|
|
111338
114166
|
return /* @__PURE__ */ jsx(DefaultDynamicFields, { fields: booking.fields.items, booking });
|
|
111339
114167
|
default:
|
|
111340
|
-
return
|
|
114168
|
+
return assertNever8(stepId);
|
|
111341
114169
|
}
|
|
111342
114170
|
}
|
|
111343
114171
|
function DefaultServiceSelectionStep({
|
|
@@ -112929,7 +115757,7 @@ function eligibilityLookupReducer(state, action) {
|
|
|
112929
115757
|
error: action.message
|
|
112930
115758
|
};
|
|
112931
115759
|
default:
|
|
112932
|
-
return
|
|
115760
|
+
return assertNever8(action);
|
|
112933
115761
|
}
|
|
112934
115762
|
}
|
|
112935
115763
|
var initialExistingRegistrationLookupState = {
|
|
@@ -112951,7 +115779,7 @@ function existingRegistrationLookupReducer(state, action) {
|
|
|
112951
115779
|
registration: action.registration
|
|
112952
115780
|
};
|
|
112953
115781
|
default:
|
|
112954
|
-
return
|
|
115782
|
+
return assertNever8(action);
|
|
112955
115783
|
}
|
|
112956
115784
|
}
|
|
112957
115785
|
|
|
@@ -117851,7 +120679,7 @@ function shopPassesMembershipsReducer(state, action) {
|
|
|
117851
120679
|
returnNotice: null
|
|
117852
120680
|
};
|
|
117853
120681
|
default:
|
|
117854
|
-
return
|
|
120682
|
+
return assertNever8(action);
|
|
117855
120683
|
}
|
|
117856
120684
|
}
|
|
117857
120685
|
function getOpenCheckout(state) {
|
|
@@ -118721,7 +121549,7 @@ function shopCheckoutReducer(state, action) {
|
|
|
118721
121549
|
notice: action.notice
|
|
118722
121550
|
};
|
|
118723
121551
|
default:
|
|
118724
|
-
return
|
|
121552
|
+
return assertNever8(action);
|
|
118725
121553
|
}
|
|
118726
121554
|
}
|
|
118727
121555
|
var CHECKOUT_ANCHOR_ID = "shop-checkout";
|
|
@@ -119127,7 +121955,7 @@ function giftingClientReducer(state, action) {
|
|
|
119127
121955
|
purchaseNotice: action.notice
|
|
119128
121956
|
};
|
|
119129
121957
|
default:
|
|
119130
|
-
return
|
|
121958
|
+
return assertNever8(action);
|
|
119131
121959
|
}
|
|
119132
121960
|
}
|
|
119133
121961
|
function resolveGiftingPurchaseNotice(search, defaultSuccessMessage) {
|
|
@@ -119522,6 +122350,7 @@ var AccordionItemNode = ({
|
|
|
119522
122350
|
question,
|
|
119523
122351
|
answer,
|
|
119524
122352
|
iconStyle,
|
|
122353
|
+
iconTreatment,
|
|
119525
122354
|
blockId: _blockId,
|
|
119526
122355
|
blockKind: _blockKind,
|
|
119527
122356
|
blockContent: _blockContent,
|
|
@@ -119534,10 +122363,11 @@ var AccordionItemNode = ({
|
|
|
119534
122363
|
const triggerSource = trigger ?? question;
|
|
119535
122364
|
const contentSource = content ?? answer;
|
|
119536
122365
|
const resolvedTrigger = typeof triggerSource === "string" || typeof triggerSource === "number" ? String(triggerSource) : triggerSource;
|
|
119537
|
-
const resolvedIconStyle = iconStyle
|
|
122366
|
+
const resolvedIconStyle = resolveAccordionIconStyle(iconStyle, iconTreatment);
|
|
119538
122367
|
const iconConfig = ICON_CONFIG[resolvedIconStyle];
|
|
119539
122368
|
const ClosedIconComponent = ACCORDION_ICONS2[iconConfig.closedIcon];
|
|
119540
122369
|
const OpenIconComponent = iconConfig.openIcon ? ACCORDION_ICONS2[iconConfig.openIcon] : null;
|
|
122370
|
+
const iconColorStyle = accordionIconColorStyle(iconTreatment);
|
|
119541
122371
|
return /* @__PURE__ */ jsxs(
|
|
119542
122372
|
AccordionItem2,
|
|
119543
122373
|
{
|
|
@@ -119547,10 +122377,20 @@ var AccordionItemNode = ({
|
|
|
119547
122377
|
children: [
|
|
119548
122378
|
/* @__PURE__ */ jsxs(AccordionTrigger2, { className: "accordion-trigger", children: [
|
|
119549
122379
|
/* @__PURE__ */ jsx(Text, { as: "span", className: "accordion-trigger-text", children: resolvedTrigger }),
|
|
119550
|
-
/* @__PURE__ */ jsxs(
|
|
119551
|
-
|
|
119552
|
-
|
|
119553
|
-
|
|
122380
|
+
/* @__PURE__ */ jsxs(
|
|
122381
|
+
"span",
|
|
122382
|
+
{
|
|
122383
|
+
className: "accordion-icon",
|
|
122384
|
+
"aria-hidden": "true",
|
|
122385
|
+
"data-accordion-icon-set": iconTreatment?.iconSet,
|
|
122386
|
+
"data-accordion-icon-motion": iconTreatment?.motion,
|
|
122387
|
+
style: iconColorStyle,
|
|
122388
|
+
children: [
|
|
122389
|
+
ClosedIconComponent && /* @__PURE__ */ jsx(ClosedIconComponent, { className: "accordion-icon-closed" }),
|
|
122390
|
+
OpenIconComponent && /* @__PURE__ */ jsx(OpenIconComponent, { className: "accordion-icon-open" })
|
|
122391
|
+
]
|
|
122392
|
+
}
|
|
122393
|
+
)
|
|
119554
122394
|
] }),
|
|
119555
122395
|
/* @__PURE__ */ jsx(AccordionContent2, { className: "accordion-content", children: typeof contentSource === "string" || typeof contentSource === "number" ? /* @__PURE__ */ jsx("p", { children: String(contentSource) }) : contentSource ? (() => {
|
|
119556
122396
|
const doc3 = coerceRichTextDoc(contentSource);
|
|
@@ -122667,7 +125507,7 @@ function formSubmissionReducer(_state, action) {
|
|
|
122667
125507
|
case "submission-failed":
|
|
122668
125508
|
return { tag: "failed", message: action.message };
|
|
122669
125509
|
default:
|
|
122670
|
-
return
|
|
125510
|
+
return assertNever8(action);
|
|
122671
125511
|
}
|
|
122672
125512
|
}
|
|
122673
125513
|
|
|
@@ -123464,7 +126304,7 @@ function shouldHoistNestedGroupSettings(field) {
|
|
|
123464
126304
|
const ui = field.ui;
|
|
123465
126305
|
return ui?.hideLabel === true;
|
|
123466
126306
|
}
|
|
123467
|
-
function
|
|
126307
|
+
function getGroupChildFields2(field) {
|
|
123468
126308
|
if (field.type !== "group") return [];
|
|
123469
126309
|
if (Array.isArray(field.fields)) return field.fields;
|
|
123470
126310
|
if (Array.isArray(field.schema?.fields)) return field.schema.fields;
|
|
@@ -123472,7 +126312,7 @@ function getGroupChildFields(field) {
|
|
|
123472
126312
|
}
|
|
123473
126313
|
function hoistNestedGroupSettings(field) {
|
|
123474
126314
|
if (!shouldHoistNestedGroupSettings(field)) return [];
|
|
123475
|
-
const groupChildren =
|
|
126315
|
+
const groupChildren = getGroupChildFields2(field);
|
|
123476
126316
|
if (groupChildren.length === 0) return [];
|
|
123477
126317
|
const { display, behavior, style: style2 } = partitionFieldsByIntent(groupChildren);
|
|
123478
126318
|
const nestedSettings = [...display, ...behavior, ...style2];
|
|
@@ -134632,7 +137472,7 @@ var RectangleStencil = forwardRef(function(_a, ref) {
|
|
|
134632
137472
|
north: true,
|
|
134633
137473
|
east: true,
|
|
134634
137474
|
south: true
|
|
134635
|
-
} : _f, _g = _a.lineComponent, lineComponent = _g === void 0 ? SimpleLine : _g, _h = _a.lineClassNames, lineClassNames = _h === void 0 ? {} : _h, _j = _a.lineWrapperClassNames, lineWrapperClassNames = _j === void 0 ? {} : _j, _k = _a.resizable, resizable = _k === void 0 ? true : _k, _l = _a.movable, movable = _l === void 0 ? true : _l,
|
|
137475
|
+
} : _f, _g = _a.lineComponent, lineComponent = _g === void 0 ? SimpleLine : _g, _h = _a.lineClassNames, lineClassNames = _h === void 0 ? {} : _h, _j = _a.lineWrapperClassNames, lineWrapperClassNames = _j === void 0 ? {} : _j, _k = _a.resizable, resizable = _k === void 0 ? true : _k, _l = _a.movable, movable = _l === void 0 ? true : _l, grid6 = _a.grid, gridClassName = _a.gridClassName, className = _a.className, movingClassName = _a.movingClassName, resizingClassName = _a.resizingClassName, previewClassName = _a.previewClassName, boundingBoxClassName = _a.boundingBoxClassName, overlayClassName = _a.overlayClassName, draggableAreaClassName = _a.draggableAreaClassName, disabled = _a.disabled;
|
|
134636
137476
|
var state = cropper.getState();
|
|
134637
137477
|
var transitions = cropper.getTransitions();
|
|
134638
137478
|
var interactions = cropper.getInteractions();
|
|
@@ -134685,7 +137525,7 @@ var RectangleStencil = forwardRef(function(_a, ref) {
|
|
|
134685
137525
|
React63__default.createElement(
|
|
134686
137526
|
StencilOverlay,
|
|
134687
137527
|
{ className: (0, import_classnames.default)("advanced-cropper-rectangle-stencil__overlay", overlayClassName) },
|
|
134688
|
-
|
|
137528
|
+
grid6 && React63__default.createElement(StencilGrid, { visible: cropper.hasInteractions(), columns: interactions.transformImage.rotate ? 9 : 3, rows: interactions.transformImage.rotate ? 9 : 3, className: (0, import_classnames.default)("advanced-cropper-rectangle-stencil__grid", gridClassName) }),
|
|
134689
137529
|
React63__default.createElement("div", { className: (0, import_classnames.default)("advanced-cropper-rectangle-stencil__preview", previewClassName) })
|
|
134690
137530
|
)
|
|
134691
137531
|
)
|
|
@@ -135033,7 +137873,7 @@ var CircleStencil = forwardRef(function(_a, ref) {
|
|
|
135033
137873
|
north: true,
|
|
135034
137874
|
east: true,
|
|
135035
137875
|
south: true
|
|
135036
|
-
} : _f, _g = _a.lineComponent, lineComponent = _g === void 0 ? SimpleLine : _g, _h = _a.lineClassNames, lineClassNames = _h === void 0 ? {} : _h, _j = _a.lineWrapperClassNames, lineWrapperClassNames = _j === void 0 ? {} : _j, _k = _a.resizable, resizable = _k === void 0 ? true : _k, _l = _a.movable, movable = _l === void 0 ? true : _l,
|
|
137876
|
+
} : _f, _g = _a.lineComponent, lineComponent = _g === void 0 ? SimpleLine : _g, _h = _a.lineClassNames, lineClassNames = _h === void 0 ? {} : _h, _j = _a.lineWrapperClassNames, lineWrapperClassNames = _j === void 0 ? {} : _j, _k = _a.resizable, resizable = _k === void 0 ? true : _k, _l = _a.movable, movable = _l === void 0 ? true : _l, grid6 = _a.grid, gridClassName = _a.gridClassName, className = _a.className, movingClassName = _a.movingClassName, resizingClassName = _a.resizingClassName, previewClassName = _a.previewClassName, boundingBoxClassName = _a.boundingBoxClassName, overlayClassName = _a.overlayClassName, draggableAreaClassName = _a.draggableAreaClassName, disabled = _a.disabled;
|
|
135037
137877
|
var state = cropper.getState();
|
|
135038
137878
|
var transitions = cropper.getTransitions();
|
|
135039
137879
|
var interactions = cropper.getInteractions();
|
|
@@ -135084,7 +137924,7 @@ var CircleStencil = forwardRef(function(_a, ref) {
|
|
|
135084
137924
|
React63__default.createElement(
|
|
135085
137925
|
StencilOverlay,
|
|
135086
137926
|
{ className: (0, import_classnames.default)("advanced-cropper-circle-stencil__overlay", overlayClassName) },
|
|
135087
|
-
|
|
137927
|
+
grid6 && React63__default.createElement(StencilGrid, { visible: cropper.hasInteractions(), columns: interactions.transformImage.rotate ? 9 : 3, rows: interactions.transformImage.rotate ? 9 : 3, className: (0, import_classnames.default)("advanced-cropper-circle-stencil__grid", gridClassName) }),
|
|
135088
137928
|
React63__default.createElement("div", { className: (0, import_classnames.default)("advanced-cropper-circle-stencil__preview", previewClassName) })
|
|
135089
137929
|
)
|
|
135090
137930
|
)
|
|
@@ -161428,7 +164268,7 @@ function EditorStatusBar({
|
|
|
161428
164268
|
lastSavedLabel,
|
|
161429
164269
|
secondaryMessage
|
|
161430
164270
|
]);
|
|
161431
|
-
const disablePublish = isSaving || toolbar?.disablePublish || !hasChanges;
|
|
164271
|
+
const disablePublish = isSaving || toolbar?.disablePublish || !hasChanges && currentLifecycle !== "draft";
|
|
161432
164272
|
isSaving || toolbar?.disableDiscard || !hasChanges;
|
|
161433
164273
|
const statusClass = unsavedError || generalError ? "text-destructive" : "text-slate-600";
|
|
161434
164274
|
return /* @__PURE__ */ jsx(FixedBottomSurface, { variant: "light", children: /* @__PURE__ */ jsxs(
|
|
@@ -164927,4 +167767,4 @@ lucide-react/dist/esm/lucide-react.js:
|
|
|
164927
167767
|
*)
|
|
164928
167768
|
*/
|
|
164929
167769
|
|
|
164930
|
-
export { ArrowDown, ArrowUp, BackgroundColorField, BackgroundGradientField, Badge2 as Badge, BlockApiProvider, Box, Button, CSS2 as CSS, CTA_ICON_OPTIONS, Callout, CalloutDescription, CalloutTitle, Card, CardContent, CardHeader, CardTitle, Check, ChevronDown, ChevronLeft, ChevronRight, Collapsible2 as Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorPicker, Combobox, Content, ContentFieldsForm, Copy, DEFAULT_LAUNCH_READINESS_INPUT, Dialog2 as Dialog, DialogClose2 as DialogClose, DialogContent2 as DialogContent, DialogDescription2 as DialogDescription, DialogFooter, DialogHeader, DialogTitle2 as DialogTitle, DndContext, DropdownMenu2 as DropdownMenu, DropdownMenuContent2 as DropdownMenuContent, DropdownMenuItem2 as DropdownMenuItem, DropdownMenuLabel2 as DropdownMenuLabel, DropdownMenuSeparator2 as DropdownMenuSeparator, DropdownMenuTrigger2 as DropdownMenuTrigger, EMPTY_DOC, EditableBlockProvider, EditorChrome, EditorProvider, EmptyState2 as EmptyState, EntryControllerProvider, FieldFrame, FixedBottomSurface, FormRenderer, GripVertical, Input, KeyboardCode, Label4 as Label, List2 as List, LoaderCircle, ManifestForm, Maximize2, MediaEditor, MediaEditorProvider, MediaPickerDialog, MediaPickerMini, Monitor, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, PUBLIC_FILE_FIELD_KINDS, PageRenderer, Palette, PaletteProvider, Pencil, Plus, PointerSensor, PreviewRichTextEditor, PreviewTextEditor, ResizableSplitPane, RichText2 as RichText, RichTextEditorSurface, Root2, RotateCcw, SUBROUTE_KINDS, ScrollableDialogContent, Search, Select2 as Select, SelectContent2 as SelectContent, SelectItem2 as SelectItem, SelectTrigger2 as SelectTrigger, SelectValue2 as SelectValue, Separator2 as Separator, Settings, SiteDocumentLayout, Smartphone, Sparkles, Surface, Tablet, Tabs2 as Tabs, TabsContent2 as TabsContent, TabsList2 as TabsList, TabsTrigger2 as TabsTrigger, Text2 as Text, ThemeScope, Trash2, TriangleAlert, Trigger, X, applyCompiledRuntimeFieldsToContent, applyPageDesignEditorAction, asDesignBlockId, asEditorBlockId, asEditorBlockValues, asRecord, asSiteId, assertNever3 as assertNever, assertNever5 as assertNever2, augmentManifestWithStyleGroups, buildEditorModelRuntimeFieldsByBlockId, buildThemeRuntime, buttonPersonalities, canRedoHistory, canUndoHistory, classifyHistoryShortcut, clientComponentRegistry, closestCenter, cn, compileSiteThemeFromSelections, createBlock, createEditorInsertBlockCommand, createEditorRemoveBlockCommand, createEditorReorderBlocksCommand, createHistoryState, createManifestFormAdapter, createManifestValidation, createRoutingHelpers, createSnapshotFromPageRecord, createStoreBackend, curatedSiteStyles, deleteBlock, deriveLaunchReadiness, findButtonPersonality, findFooterLook,
|
|
167770
|
+
export { ArrowDown, ArrowUp, BackgroundColorField, BackgroundGradientField, Badge2 as Badge, BlockApiProvider, Box, Button, CSS2 as CSS, CTA_ICON_OPTIONS, Callout, CalloutDescription, CalloutTitle, Card, CardContent, CardHeader, CardTitle, Check, ChevronDown, ChevronLeft, ChevronRight, Collapsible2 as Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorPicker, Combobox, Content, ContentFieldsForm, Copy, DEFAULT_LAUNCH_READINESS_INPUT, Dialog2 as Dialog, DialogClose2 as DialogClose, DialogContent2 as DialogContent, DialogDescription2 as DialogDescription, DialogFooter, DialogHeader, DialogTitle2 as DialogTitle, DndContext, DropdownMenu2 as DropdownMenu, DropdownMenuContent2 as DropdownMenuContent, DropdownMenuItem2 as DropdownMenuItem, DropdownMenuLabel2 as DropdownMenuLabel, DropdownMenuSeparator2 as DropdownMenuSeparator, DropdownMenuTrigger2 as DropdownMenuTrigger, EMPTY_DOC, EditableBlockProvider, EditorChrome, EditorProvider, EllipsisVertical, EmptyState2 as EmptyState, EntryControllerProvider, FieldFrame, FixedBottomSurface, FormRenderer, GripVertical, Input, KeyboardCode, Label4 as Label, List2 as List, LoaderCircle, ManifestForm, Maximize2, MediaEditor, MediaEditorProvider, MediaPickerDialog, MediaPickerMini, Monitor, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, PUBLIC_FILE_FIELD_KINDS, PageRenderer, Palette, PaletteProvider, Pencil, Plus, PointerSensor, PreviewRichTextEditor, PreviewTextEditor, ResizableSplitPane, RichText2 as RichText, RichTextEditorSurface, Root2, RotateCcw, SUBROUTE_KINDS, ScrollableDialogContent, Search, Select2 as Select, SelectContent2 as SelectContent, SelectItem2 as SelectItem, SelectTrigger2 as SelectTrigger, SelectValue2 as SelectValue, Separator2 as Separator, Settings, SiteDocumentLayout, Smartphone, Sparkles, Surface, Tablet, Tabs2 as Tabs, TabsContent2 as TabsContent, TabsList2 as TabsList, TabsTrigger2 as TabsTrigger, Text2 as Text, ThemeScope, Trash2, TriangleAlert, Trigger, X, applyCompiledRuntimeFieldsToContent, applyPageDesignEditorAction, asDesignBlockId, asEditorBlockId, asEditorBlockValues, asRecord, asSiteId, assertNever3 as assertNever, assertNever5 as assertNever2, augmentManifestWithStyleGroups, buildEditorModelRuntimeFieldsByBlockId, buildThemeRuntime, buttonPersonalities, canRedoHistory, canUndoHistory, classifyHistoryShortcut, clientComponentRegistry, closestCenter, cn, compileSiteThemeFromSelections, createBlock, createCustomBlockRegistry, createEditorInsertBlockCommand, createEditorRemoveBlockCommand, createEditorReorderBlocksCommand, createHistoryState, createManifestFormAdapter, createManifestValidation, createRoutingHelpers, createSnapshotFromPageRecord, createStoreBackend, curatedSiteStyles, deleteBlock, deriveLaunchReadiness, deriveNearestCompatibleHeaderStyle, evaluateTypographyFontSlot, findButtonPersonality, findFooterLook, findLegacyHeaderLookIdForSelection, findPaletteVariant, findTypographyPreset, foldSubroute, footerLookCatalog, footerLookRejectionReasonLabel, getBlockDefinition, getClientRect, getCompatibleHeaderStyleIds, getCtaIconComponent, getCuratedSiteStyle, getDirectImageUrlForMediaAsset, getFieldIntent, getHeaderLayout, getHeaderStyle, getModalConfig, getPageDesignEditorState, getRichTextImagePositionFromTarget, getRouteMetadataManifestForType, headerLayoutCatalog, headerStyleCatalog, insertOrReplaceRichTextImage, isCtaIconName, isHeaderField, isInternalResolvedLinkValue, isKeyboardEvent, isNonEmptyValue, isObjectRecord2 as isObjectRecord, isSvgMimeType, isThemeV2NormalEditorRawStyleFieldName, isThemeV2NormalEditorRawStylePath, listBlockDescriptors, listContentTypes, lucide_react_exports, mergeBlockDescriptorsWithRegistry, mergeManifestWithSdkOptions, mutateBlockContent, normalEditorCuratedPromotedFieldPaths, normalizePickerSearchThreshold, omitRouteTitleFieldFromManifest, paletteOverridesSchema, paletteVariants, parseAspectRatioValue, planPageDesignLayoutLookCompatibility, planSiteDocument, previewAssistantEnabled, pushHistoryEntry, recoveryConflictCopy, redoHistory, renderBlock, reorderBlocks, requireEntriesForCuratedChoices, resolveBlockTitle, resolveImageUrlWithContext, resolveMediaSlotContract, resolvePickerSelectionLabel, resolvePreviewSidebarTab, resolveVisiblePromotedFieldPathsForEditorBlock, shouldShowPickerSearch, siteFooterManifest, siteHeaderManifest, siteStyleIdFromTheme, surfaceResolutionContextFromTheme, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetApplyContentPatch, systemCustomizeFacetCurrentValue, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetLabelForValue, systemCustomizeFacetNextValue, systemCustomizeFacetRollbackContentPatch, toRoutableLinkPayload, typographyPresets, undoHistory, unfinishedBlockCopy, unwrapResponse, useAsyncPickerOptions, useBackendWatch, useBlockContext, useCombinedRefs, useDebouncedLatestSave, useDndContext, useDraggable, useDroppable, useEditor2 as useEditor, useEditorUiStore, useEditorUiStoreInstance, useEntryController, useEntryEditorController, useField, useIsomorphicLayoutEffect3 as useIsomorphicLayoutEffect, useMediaEditor, useMediaEditorOptional, useMultiAutosave, useOptionalEditorUiStoreInstance, useRichTextEditor, useSdkConfig, useSensor, useSensors, useUISelector, useUniqueId, validateBlockManifestIssues, writePlanForLookCustomizationCommand };
|