@riverbankcms/sdk 0.77.0 → 0.78.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 +69 -0
- package/dist/{PreviewEditorSidebar-XSX7QKHQ.mjs → PreviewEditorSidebar-RIKFQ72L.mjs} +4916 -4847
- package/dist/{PreviewEditorUI-YZNEZ3QD.mjs → PreviewEditorUI-XO7TUWKK.mjs} +3 -3
- package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +194 -184
- package/dist/_dts/api/src/accessAdmin.d.ts +5 -0
- package/dist/_dts/api/src/billing.d.ts +3 -26
- package/dist/_dts/api/src/bookingVerticals.d.ts +4 -0
- package/dist/_dts/api/src/content-editor.d.ts +1 -0
- package/dist/_dts/api/src/demoDashboardMutationSurfaces.d.ts +46 -0
- package/dist/_dts/api/src/endpoints.d.ts +8 -0
- package/dist/_dts/api/src/index.d.ts +14 -2
- package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +87 -0
- package/dist/_dts/api/src/navigation/dashboardDemoNav.d.ts +5 -0
- package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +45 -0
- package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +42 -0
- package/dist/_dts/api/src/navigation/dashboardTeamMemberNav.d.ts +24 -0
- package/dist/_dts/api/src/navigation/linkUrlType.d.ts +3 -0
- package/dist/_dts/api/src/navigation.d.ts +12 -0
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +55 -26
- package/dist/_dts/api/src/staffAccess.d.ts +79 -0
- package/dist/_dts/api/src/types.d.ts +3 -1
- package/dist/_dts/api/src/workflows/automaticWorkflowTriggers.d.ts +21 -0
- package/dist/_dts/blocks/src/client/site-chrome.d.ts +4 -1
- package/dist/_dts/blocks/src/customBlockRegistry.d.ts +20 -1
- package/dist/_dts/blocks/src/index.d.ts +3 -2
- package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/faq.d.ts +294 -289
- package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +21 -21
- package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +2 -2
- package/dist/_dts/blocks/src/system/data/index.d.ts +5 -3
- package/dist/_dts/blocks/src/system/data/previewResolvedDataState.d.ts +45 -0
- package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
- package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +5 -0
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +5 -0
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -29
- package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +10 -0
- package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +3 -2
- package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +43 -8
- package/dist/_dts/blocks/src/system/runtime/components/multi-step/runtimeFormValidation.d.ts +28 -0
- package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +8 -7
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCompactRow.d.ts +1 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -8
- package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -9
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-cart-discount-ui.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +76 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout.state.d.ts +1 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce-store.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.shared.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-discount-apply.state.d.ts +52 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +2 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/useDiscountApply.d.ts +21 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +54 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
- package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +4 -4
- package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
- package/dist/_dts/content-editor/src/contentTypeEditorContentState.d.ts +26 -0
- package/dist/_dts/content-editor/src/definitions/factory.d.ts +75 -0
- package/dist/_dts/content-editor/src/entryWorkflows.d.ts +2 -0
- package/dist/_dts/content-editor/src/footerBlocksEditorState.d.ts +76 -0
- package/dist/_dts/content-editor/src/index.d.ts +5 -0
- package/dist/_dts/content-editor/src/pageWorkflowContent.d.ts +29 -0
- package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
- package/dist/_dts/content-model/src/index.d.ts +1 -0
- package/dist/_dts/content-model/src/routeTemplate.d.ts +4 -0
- package/dist/_dts/content-model/src/templates/editorState.d.ts +25 -0
- package/dist/_dts/core/src/csv-cells.d.ts +10 -0
- package/dist/_dts/core/src/csv-date-filter.d.ts +27 -0
- package/dist/_dts/core/src/csv-escape.d.ts +1 -0
- package/dist/_dts/core/src/csv-filename.d.ts +18 -0
- package/dist/_dts/core/src/csv-render.d.ts +4 -0
- package/dist/_dts/core/src/csv-types.d.ts +116 -0
- package/dist/_dts/core/src/currency-format.d.ts +4 -0
- package/dist/_dts/core/src/demo-capability-policy.d.ts +29 -0
- package/dist/_dts/core/src/demo-claim-access.d.ts +14 -0
- package/dist/_dts/core/src/demo-lifecycle-status.d.ts +11 -0
- package/dist/_dts/core/src/demo-runtime.d.ts +47 -0
- package/dist/_dts/core/src/duration.d.ts +14 -0
- package/dist/_dts/core/src/email-format.d.ts +10 -0
- package/dist/_dts/core/src/field-errors.d.ts +1 -0
- package/dist/_dts/core/src/form-submission-preview.d.ts +24 -0
- package/dist/_dts/core/src/index.d.ts +20 -0
- package/dist/_dts/core/src/number-input.d.ts +22 -0
- package/dist/_dts/core/src/public-url-validation.d.ts +12 -0
- package/dist/_dts/core/src/slug.d.ts +39 -0
- package/dist/_dts/core/src/string.d.ts +19 -0
- package/dist/_dts/core/src/uuid.d.ts +6 -0
- package/dist/_dts/db/src/schemas/forms.d.ts +50 -50
- package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +34 -0
- package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +24 -0
- package/dist/_dts/media-core/src/canonicalCropReview.d.ts +66 -0
- package/dist/_dts/media-core/src/classifyAllPlanning.d.ts +48 -0
- package/dist/_dts/media-core/src/filename.d.ts +1 -0
- package/dist/_dts/media-core/src/index.d.ts +10 -0
- package/dist/_dts/media-core/src/mediaAssetUsageStatus.d.ts +47 -0
- package/dist/_dts/media-core/src/mediaSettingsState.d.ts +3 -0
- package/dist/_dts/media-core/src/portableMediaReferences.d.ts +38 -0
- package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +28 -0
- package/dist/_dts/media-core/src/videoAssetRepair.d.ts +38 -0
- package/dist/_dts/media-editor/src/mediaEditorDebug.d.ts +1 -0
- package/dist/_dts/path-utils/src/index.d.ts +8 -0
- package/dist/_dts/path-utils/src/redirectPaths.d.ts +26 -0
- package/dist/_dts/path-utils/src/safeAppPath.d.ts +26 -0
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/preview/previewDocumentFrame.d.ts +31 -0
- package/dist/_dts/sdk/src/client/error.d.ts +3 -0
- package/dist/_dts/sdk/src/client/index.d.ts +2 -2
- package/dist/_dts/sdk/src/client/types.d.ts +37 -19
- package/dist/_dts/sdk/src/contracts/theme.d.ts +1 -1
- package/dist/_dts/sdk/src/index.d.ts +2 -2
- package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +16 -16
- package/dist/_dts/sdk/src/next/content-load-failure.d.ts +51 -0
- package/dist/_dts/sdk/src/next/index.d.ts +2 -1
- package/dist/_dts/sdk/src/next/types.d.ts +19 -0
- package/dist/_dts/sdk/src/portal/redirects.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -2
- package/dist/_dts/sdk/src/routing/index.d.ts +3 -2
- package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +71 -6
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commands.d.ts +12 -12
- package/dist/_dts/site-commands/src/index.d.ts +1 -0
- package/dist/_dts/site-commands/src/pagePaths.d.ts +6 -0
- package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +26 -0
- package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -0
- package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/fonts/uploadFormat.d.ts +44 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/index.d.ts +3 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +63 -51
- package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +6 -1
- package/dist/_dts/theme-core/src/navigation/types.d.ts +12 -0
- package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
- package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +7 -0
- package/dist/_dts/theme-core/src/schema.d.ts +90 -48
- package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +214 -34
- package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -2
- package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +214 -34
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -1
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +35 -7
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +96 -34
- package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +4 -2
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -1
- package/dist/_dts/theme-core/src/site-styles/types.d.ts +27 -2
- package/dist/_dts/theme-core/src/siteChrome.d.ts +17 -34
- package/dist/_dts/theme-core/src/siteChromeOverlayClearance.d.ts +22 -0
- package/dist/_dts/theme-core/src/siteChromePlacement.d.ts +22 -0
- package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +32 -0
- package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
- package/dist/{chunk-EAWHBECW.mjs → chunk-F7RTCZYN.mjs} +229 -50
- package/dist/{chunk-GSQX43EZ.mjs → chunk-NIDXI46P.mjs} +22 -41
- package/dist/{chunk-WLQBJN2Z.mjs → chunk-OECWLDHN.mjs} +4538 -1911
- package/dist/{chunk-VX7B5VAC.mjs → chunk-SVMMM2NA.mjs} +8 -0
- package/dist/{chunk-6SMUFTXD.mjs → chunk-SXOLGNMX.mjs} +1 -1
- package/dist/{chunk-ANKDYZ2E.mjs → chunk-TXDES5P2.mjs} +2 -2
- package/dist/cli/index.mjs +2036 -594
- package/dist/client/{accordion-RZMQSYLR.mjs → accordion-EVDEOUPR.mjs} +2 -2
- package/dist/client/{bookingForm-NF4ASVNV.mjs → bookingForm-DIHBLC64.mjs} +27 -30
- package/dist/client/bookings.mjs +3707 -259
- package/dist/client/{carousel-LDX47ZIK.mjs → carousel-FEBQHIWI.mjs} +3 -4
- package/dist/client/{cart-RGXDS5F4.mjs → cart-7CKSXAE4.mjs} +8 -8
- package/dist/client/{checkout-P7WWSNNY.mjs → checkout-WKYCANLV.mjs} +8 -8
- package/dist/client/{chunk-JNC7CGHX.mjs → chunk-2SAVKN2M.mjs} +2 -2
- package/dist/client/{chunk-TQ5MSPDX.mjs → chunk-36WJCERQ.mjs} +1 -1
- package/dist/client/{chunk-R56FQ3RR.mjs → chunk-65F47D7Y.mjs} +280 -71
- package/dist/client/{chunk-L3DNHIJX.mjs → chunk-GUK2FPXQ.mjs} +23 -45
- package/dist/client/{chunk-PMAIXMAB.mjs → chunk-IVNCUVAV.mjs} +26 -21
- package/dist/client/{chunk-II7O4XN3.mjs → chunk-OFMSCGNY.mjs} +2 -2
- package/dist/client/chunk-PD6NBCEY.mjs +66 -0
- package/dist/client/{chunk-GMVTOKYG.mjs → chunk-RV6FX7UH.mjs} +510 -64
- package/dist/client/{chunk-E2TDNXCL.mjs → chunk-RZDWX7QW.mjs} +2 -1
- package/dist/client/{chunk-M3L3KYYR.mjs → chunk-UDNSI5PY.mjs} +12 -0
- package/dist/client/{chunk-JEZECJ3W.mjs → chunk-VPPMNXCF.mjs} +129 -3
- package/dist/client/{chunk-UFSWADAO.mjs → chunk-YDSEG6GZ.mjs} +5 -66
- package/dist/client/client.mjs +8983 -6152
- package/dist/client/{courseRegistration-7F65K5ZR.mjs → courseRegistration-5QF2PHKM.mjs} +14 -11
- package/dist/client/{eventCalendar-GLSC5KTL.mjs → eventCalendar-4ZOSETDU.mjs} +9 -9
- package/dist/client/{eventCombined-ZHK4WKUR.mjs → eventCombined-WQGU7JUX.mjs} +9 -9
- package/dist/client/{eventDetails-E3PJYBIN.mjs → eventDetails-AYWVUJ5Y.mjs} +9 -9
- package/dist/client/{eventListing-EMS3WC3E.mjs → eventListing-NT7C6UT5.mjs} +9 -9
- package/dist/client/{eventRegistration-NZOTVNPI.mjs → eventRegistration-OH24F4ZJ.mjs} +9 -9
- package/dist/client/{form-ETFZFATW.mjs → form-7L42SRBB.mjs} +6 -6
- package/dist/client/{headerSection-4LBP7ULT.mjs → headerSection-OZRZNZ52.mjs} +3 -3
- package/dist/client/hooks.mjs +1388 -427
- package/dist/client/{locationMap-5M655YSJ.mjs → locationMap-ZBXRPQ7C.mjs} +2 -2
- package/dist/client/{newsletterForm-QOUYW44O.mjs → newsletterForm-SNAGFF2I.mjs} +3 -3
- package/dist/client/{productDetail-O4DOCWQG.mjs → productDetail-I46BOFGV.mjs} +8 -8
- package/dist/client/{productList-A5RO5WIS.mjs → productList-BOYHTYI6.mjs} +8 -8
- package/dist/client/rendering/client.mjs +7090 -2645
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +7395 -4767
- package/dist/client/{shop-L4MZH4I2.mjs → shop-XTXPZTKR.mjs} +8 -8
- package/dist/preview-next/before-render.mjs +8 -0
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/preview-next/editor-chrome.css +10 -0
- package/dist/preview-next/middleware.mjs +8 -0
- package/dist/{sdk-runtime-Q6MTR4KL.mjs → sdk-runtime-ZJLKC6DR.mjs} +6 -6
- package/dist/server/components.mjs +4175 -2480
- package/dist/server/config-validation.mjs +1619 -658
- package/dist/server/config.mjs +1619 -658
- package/dist/server/data.mjs +1388 -427
- package/dist/server/index.mjs +488 -246
- package/dist/server/next.mjs +5607 -3354
- package/dist/server/page-converter.mjs +912 -259
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +4176 -2481
- package/dist/server/rendering.mjs +4194 -2486
- package/dist/server/routing.mjs +2078 -639
- package/dist/server/server.mjs +1886 -685
- package/dist/server/theme-bridge.mjs +4441 -1300
- package/dist/server/theme.mjs +89 -12
- package/dist/styles/index.css +1576 -1083
- package/package.json +2 -1
- package/dist/SdkPreviewModeRuntime-5FS5E6BI.mjs +0 -8
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/DiscountCodeSection.d.ts +0 -7
- package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +0 -4
- package/dist/client/chunk-OJPZEZU2.mjs +0 -31
- package/dist/client/chunk-RTZ3JKKX.mjs +0 -178
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/config/validation.ts
|
|
2
|
-
import { z as
|
|
2
|
+
import { z as z70 } from "zod";
|
|
3
3
|
|
|
4
4
|
// ../api/src/apiEndpointTypes.ts
|
|
5
5
|
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
@@ -3903,6 +3903,14 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
3903
3903
|
responseKind: "json",
|
|
3904
3904
|
errors: []
|
|
3905
3905
|
},
|
|
3906
|
+
applyDiscountCode: {
|
|
3907
|
+
path: "/public/sites/{siteId}/bookings/discounts/apply",
|
|
3908
|
+
method: "POST",
|
|
3909
|
+
tags: ["site-{siteId}", "booking-discounts"],
|
|
3910
|
+
auth: "public",
|
|
3911
|
+
responseKind: "json",
|
|
3912
|
+
errors: ["validation:invalid_input", "rate_limit:exceeded"]
|
|
3913
|
+
},
|
|
3906
3914
|
// Batch endpoint for block loader requests (reduces SSR fan-out)
|
|
3907
3915
|
batchBlockLoaders: {
|
|
3908
3916
|
path: "/public/sites/{siteId}/block-loaders/batch",
|
|
@@ -6242,6 +6250,27 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
6242
6250
|
}
|
|
6243
6251
|
};
|
|
6244
6252
|
|
|
6253
|
+
// ../core/src/location.ts
|
|
6254
|
+
function normalizeLocationAddressText(value) {
|
|
6255
|
+
if (typeof value !== "string") {
|
|
6256
|
+
return null;
|
|
6257
|
+
}
|
|
6258
|
+
const trimmed = value.trim();
|
|
6259
|
+
return trimmed ? trimmed : null;
|
|
6260
|
+
}
|
|
6261
|
+
function hasLocationCoordinates(value) {
|
|
6262
|
+
return typeof value?.lat === "number" && typeof value?.lng === "number";
|
|
6263
|
+
}
|
|
6264
|
+
function toLocationCoordinates(value) {
|
|
6265
|
+
if (!hasLocationCoordinates(value)) {
|
|
6266
|
+
return null;
|
|
6267
|
+
}
|
|
6268
|
+
return {
|
|
6269
|
+
lat: value.lat,
|
|
6270
|
+
lng: value.lng
|
|
6271
|
+
};
|
|
6272
|
+
}
|
|
6273
|
+
|
|
6245
6274
|
// ../api/src/accessAdmin.ts
|
|
6246
6275
|
import { z } from "zod";
|
|
6247
6276
|
var managedDomainAddOnPricingSnapshotSchema = z.object({
|
|
@@ -6384,27 +6413,6 @@ function formatKeyAsLabel(key) {
|
|
|
6384
6413
|
// ../blocks/src/system/manifest/schema.ts
|
|
6385
6414
|
import { z as z4 } from "zod";
|
|
6386
6415
|
|
|
6387
|
-
// ../core/src/location.ts
|
|
6388
|
-
function normalizeLocationAddressText(value) {
|
|
6389
|
-
if (typeof value !== "string") {
|
|
6390
|
-
return null;
|
|
6391
|
-
}
|
|
6392
|
-
const trimmed = value.trim();
|
|
6393
|
-
return trimmed ? trimmed : null;
|
|
6394
|
-
}
|
|
6395
|
-
function hasLocationCoordinates(value) {
|
|
6396
|
-
return typeof value?.lat === "number" && typeof value?.lng === "number";
|
|
6397
|
-
}
|
|
6398
|
-
function toLocationCoordinates(value) {
|
|
6399
|
-
if (!hasLocationCoordinates(value)) {
|
|
6400
|
-
return null;
|
|
6401
|
-
}
|
|
6402
|
-
return {
|
|
6403
|
-
lat: value.lat,
|
|
6404
|
-
lng: value.lng
|
|
6405
|
-
};
|
|
6406
|
-
}
|
|
6407
|
-
|
|
6408
6416
|
// ../media-core/src/transformRect.ts
|
|
6409
6417
|
function isValidTransformRectStructure(rect) {
|
|
6410
6418
|
if (!Array.isArray(rect) || rect.length !== 4) return false;
|
|
@@ -7529,6 +7537,9 @@ function makeBoundaryId(previousBlockId, nextBlockId) {
|
|
|
7529
7537
|
const next = encodeURIComponent(nextBlockId);
|
|
7530
7538
|
return asDesignBoundaryId(`boundary:${previous}:${next}`);
|
|
7531
7539
|
}
|
|
7540
|
+
function assertNever(value, message = "Unhandled Theme V2 variant") {
|
|
7541
|
+
throw new Error(`${message}: ${String(value)}`);
|
|
7542
|
+
}
|
|
7532
7543
|
function brandNonEmptyString(value, label) {
|
|
7533
7544
|
if (value.length === 0) {
|
|
7534
7545
|
throw new Error(`${label} must be a non-empty string.`);
|
|
@@ -7556,6 +7567,10 @@ var tileTreatmentValues = [
|
|
|
7556
7567
|
"quiet",
|
|
7557
7568
|
"brand-depth"
|
|
7558
7569
|
];
|
|
7570
|
+
var eventListTreatmentValues = [
|
|
7571
|
+
"plain",
|
|
7572
|
+
"lined-panel"
|
|
7573
|
+
];
|
|
7559
7574
|
var eyebrowTreatmentValues = [
|
|
7560
7575
|
"plain",
|
|
7561
7576
|
"pill",
|
|
@@ -7613,6 +7628,7 @@ function defineBlockDesignCapability(capability) {
|
|
|
7613
7628
|
imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
|
|
7614
7629
|
testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"],
|
|
7615
7630
|
tileTreatments: capability.tileTreatments ?? ["default"],
|
|
7631
|
+
eventListTreatments: capability.eventListTreatments ?? ["plain"],
|
|
7616
7632
|
eyebrowTreatments: capability.eyebrowTreatments ?? ["plain"],
|
|
7617
7633
|
...capability.headingDecorations ? { headingDecorations: capability.headingDecorations } : {},
|
|
7618
7634
|
...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
|
|
@@ -7637,9 +7653,98 @@ var blockAppearancePresets = [
|
|
|
7637
7653
|
transitionAfter: "soft-fade-short",
|
|
7638
7654
|
emphasis: "high",
|
|
7639
7655
|
sectionHeight: "hero",
|
|
7656
|
+
heroComposition: "center",
|
|
7657
|
+
heroTypographyScale: "display",
|
|
7640
7658
|
imageSurfaceTreatment: { kind: "neutral-wash" }
|
|
7641
7659
|
}
|
|
7642
7660
|
}),
|
|
7661
|
+
defineBlockAppearancePreset({
|
|
7662
|
+
kind: "block-design",
|
|
7663
|
+
id: "hero-bottom-left-panel",
|
|
7664
|
+
target: "hero",
|
|
7665
|
+
label: "Bottom-left panel hero",
|
|
7666
|
+
blockKinds: ["block.hero"],
|
|
7667
|
+
constraints: {
|
|
7668
|
+
layoutFamilies: ["centered", "compact"]
|
|
7669
|
+
},
|
|
7670
|
+
optionGroups: [
|
|
7671
|
+
{
|
|
7672
|
+
id: "image-surface-treatment",
|
|
7673
|
+
label: "Treatment",
|
|
7674
|
+
selectedOptionId: "neutral-scrim",
|
|
7675
|
+
options: [
|
|
7676
|
+
{
|
|
7677
|
+
id: "neutral-scrim",
|
|
7678
|
+
label: "Neutral scrim",
|
|
7679
|
+
designPatch: {
|
|
7680
|
+
imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
|
|
7681
|
+
}
|
|
7682
|
+
},
|
|
7683
|
+
{
|
|
7684
|
+
id: "brand-scrim-primary",
|
|
7685
|
+
label: "Brand scrim",
|
|
7686
|
+
designPatch: {
|
|
7687
|
+
imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "balanced" }
|
|
7688
|
+
}
|
|
7689
|
+
}
|
|
7690
|
+
]
|
|
7691
|
+
}
|
|
7692
|
+
],
|
|
7693
|
+
layoutPatches: [
|
|
7694
|
+
{
|
|
7695
|
+
constraints: {
|
|
7696
|
+
layoutVariantKeys: ["micro"]
|
|
7697
|
+
},
|
|
7698
|
+
designPatch: {
|
|
7699
|
+
sectionHeight: "banner",
|
|
7700
|
+
heroTypographyScale: "editorial"
|
|
7701
|
+
}
|
|
7702
|
+
}
|
|
7703
|
+
],
|
|
7704
|
+
design: {
|
|
7705
|
+
sectionSurface: "hero-image",
|
|
7706
|
+
contentFrame: panelFrame("raised"),
|
|
7707
|
+
itemSurface: "none",
|
|
7708
|
+
transitionAfter: "soft-fade-short",
|
|
7709
|
+
emphasis: "high",
|
|
7710
|
+
sectionHeight: "immersive",
|
|
7711
|
+
heroComposition: "bottom-left",
|
|
7712
|
+
heroTypographyScale: "display",
|
|
7713
|
+
imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
|
|
7714
|
+
}
|
|
7715
|
+
}),
|
|
7716
|
+
defineBlockAppearancePreset({
|
|
7717
|
+
kind: "block-design",
|
|
7718
|
+
id: "hero-poster-image",
|
|
7719
|
+
target: "hero",
|
|
7720
|
+
label: "Poster image hero",
|
|
7721
|
+
blockKinds: ["block.hero"],
|
|
7722
|
+
constraints: {
|
|
7723
|
+
layoutFamilies: ["centered", "compact"]
|
|
7724
|
+
},
|
|
7725
|
+
layoutPatches: [
|
|
7726
|
+
{
|
|
7727
|
+
constraints: {
|
|
7728
|
+
layoutVariantKeys: ["micro"]
|
|
7729
|
+
},
|
|
7730
|
+
designPatch: {
|
|
7731
|
+
sectionHeight: "banner",
|
|
7732
|
+
heroTypographyScale: "display"
|
|
7733
|
+
}
|
|
7734
|
+
}
|
|
7735
|
+
],
|
|
7736
|
+
design: {
|
|
7737
|
+
sectionSurface: "hero-image",
|
|
7738
|
+
contentFrame: plainFrame,
|
|
7739
|
+
itemSurface: "none",
|
|
7740
|
+
transitionAfter: "soft-fade-short",
|
|
7741
|
+
emphasis: "high",
|
|
7742
|
+
sectionHeight: "immersive",
|
|
7743
|
+
heroComposition: "center",
|
|
7744
|
+
heroTypographyScale: "poster",
|
|
7745
|
+
imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "strong" }
|
|
7746
|
+
}
|
|
7747
|
+
}),
|
|
7643
7748
|
defineBlockAppearancePreset({
|
|
7644
7749
|
kind: "block-design",
|
|
7645
7750
|
id: "hero-brand-scrim",
|
|
@@ -7689,6 +7794,8 @@ var blockAppearancePresets = [
|
|
|
7689
7794
|
transitionAfter: "soft-fade-short",
|
|
7690
7795
|
emphasis: "high",
|
|
7691
7796
|
sectionHeight: "immersive",
|
|
7797
|
+
heroComposition: "center",
|
|
7798
|
+
heroTypographyScale: "display",
|
|
7692
7799
|
imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
|
|
7693
7800
|
}
|
|
7694
7801
|
}),
|
|
@@ -7741,6 +7848,8 @@ var blockAppearancePresets = [
|
|
|
7741
7848
|
transitionAfter: "soft-fade-short",
|
|
7742
7849
|
emphasis: "high",
|
|
7743
7850
|
sectionHeight: "immersive",
|
|
7851
|
+
heroComposition: "center",
|
|
7852
|
+
heroTypographyScale: "display",
|
|
7744
7853
|
imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
|
|
7745
7854
|
imageSurfaceMotion: "fixed-frame",
|
|
7746
7855
|
eyebrowTreatment: "accent-pill-bounce"
|
|
@@ -7761,6 +7870,8 @@ var blockAppearancePresets = [
|
|
|
7761
7870
|
itemSurface: "none",
|
|
7762
7871
|
transitionAfter: "soft-fade-short",
|
|
7763
7872
|
emphasis: "high",
|
|
7873
|
+
heroComposition: "center",
|
|
7874
|
+
heroTypographyScale: "editorial",
|
|
7764
7875
|
eyebrowTreatment: "accent-pill-bounce"
|
|
7765
7876
|
}
|
|
7766
7877
|
}),
|
|
@@ -7775,7 +7886,82 @@ var blockAppearancePresets = [
|
|
|
7775
7886
|
contentFrame: panelFrame("inset"),
|
|
7776
7887
|
itemSurface: "none",
|
|
7777
7888
|
transitionAfter: "none",
|
|
7778
|
-
emphasis: "high"
|
|
7889
|
+
emphasis: "high",
|
|
7890
|
+
heroComposition: "center",
|
|
7891
|
+
heroTypographyScale: "editorial"
|
|
7892
|
+
}
|
|
7893
|
+
}),
|
|
7894
|
+
defineBlockAppearancePreset({
|
|
7895
|
+
kind: "block-design",
|
|
7896
|
+
id: "hero-split-editorial",
|
|
7897
|
+
target: "hero",
|
|
7898
|
+
label: "Editorial split hero",
|
|
7899
|
+
blockKinds: ["block.hero"],
|
|
7900
|
+
constraints: {
|
|
7901
|
+
layoutFamilies: ["split"]
|
|
7902
|
+
},
|
|
7903
|
+
design: {
|
|
7904
|
+
sectionSurface: "base",
|
|
7905
|
+
contentFrame: plainFrame,
|
|
7906
|
+
itemSurface: "none",
|
|
7907
|
+
transitionAfter: "soft-fade-short",
|
|
7908
|
+
emphasis: "high",
|
|
7909
|
+
heroTypographyScale: "editorial"
|
|
7910
|
+
}
|
|
7911
|
+
}),
|
|
7912
|
+
defineBlockAppearancePreset({
|
|
7913
|
+
kind: "block-design",
|
|
7914
|
+
id: "hero-split-brand",
|
|
7915
|
+
target: "hero",
|
|
7916
|
+
label: "Brand split hero",
|
|
7917
|
+
blockKinds: ["block.hero"],
|
|
7918
|
+
constraints: {
|
|
7919
|
+
layoutFamilies: ["split"]
|
|
7920
|
+
},
|
|
7921
|
+
design: {
|
|
7922
|
+
sectionSurface: "brand-depth-band",
|
|
7923
|
+
contentFrame: plainFrame,
|
|
7924
|
+
itemSurface: "none",
|
|
7925
|
+
transitionAfter: "soft-fade-short",
|
|
7926
|
+
emphasis: "high",
|
|
7927
|
+
heroTypographyScale: "display",
|
|
7928
|
+
eyebrowTreatment: "accent-pill-bounce"
|
|
7929
|
+
}
|
|
7930
|
+
}),
|
|
7931
|
+
defineBlockAppearancePreset({
|
|
7932
|
+
kind: "block-design",
|
|
7933
|
+
id: "hero-split-soft-panel",
|
|
7934
|
+
target: "hero",
|
|
7935
|
+
label: "Soft panel split hero",
|
|
7936
|
+
blockKinds: ["block.hero"],
|
|
7937
|
+
constraints: {
|
|
7938
|
+
layoutFamilies: ["split"]
|
|
7939
|
+
},
|
|
7940
|
+
design: {
|
|
7941
|
+
sectionSurface: "muted-band",
|
|
7942
|
+
contentFrame: panelFrame("raised"),
|
|
7943
|
+
itemSurface: "none",
|
|
7944
|
+
transitionAfter: "soft-fade-short",
|
|
7945
|
+
emphasis: "high",
|
|
7946
|
+
heroTypographyScale: "editorial"
|
|
7947
|
+
}
|
|
7948
|
+
}),
|
|
7949
|
+
defineBlockAppearancePreset({
|
|
7950
|
+
kind: "block-design",
|
|
7951
|
+
id: "hero-split-accent",
|
|
7952
|
+
target: "hero",
|
|
7953
|
+
label: "Accent split hero",
|
|
7954
|
+
blockKinds: ["block.hero"],
|
|
7955
|
+
constraints: {
|
|
7956
|
+
layoutFamilies: ["split"]
|
|
7957
|
+
},
|
|
7958
|
+
design: {
|
|
7959
|
+
sectionSurface: "accent-band",
|
|
7960
|
+
contentFrame: panelFrame("raised"),
|
|
7961
|
+
itemSurface: "none",
|
|
7962
|
+
transitionAfter: "soft-fade-short",
|
|
7963
|
+
emphasis: "high",
|
|
7964
|
+
heroTypographyScale: "display"
|
|
7779
7965
|
}
|
|
7780
7966
|
}),
|
|
7781
7967
|
defineBlockAppearancePreset({
|
|
@@ -7808,9 +7994,9 @@ var blockAppearancePresets = [
|
|
|
7808
7994
|
}),
|
|
7809
7995
|
defineBlockAppearancePreset({
|
|
7810
7996
|
kind: "block-design",
|
|
7811
|
-
id: "intro-
|
|
7997
|
+
id: "intro-organic-statement",
|
|
7812
7998
|
target: "intro",
|
|
7813
|
-
label: "
|
|
7999
|
+
label: "Organic intro statement",
|
|
7814
8000
|
blockKinds: ["block.intro"],
|
|
7815
8001
|
design: {
|
|
7816
8002
|
sectionSurface: "base",
|
|
@@ -7841,9 +8027,9 @@ var blockAppearancePresets = [
|
|
|
7841
8027
|
}),
|
|
7842
8028
|
defineBlockAppearancePreset({
|
|
7843
8029
|
kind: "block-design",
|
|
7844
|
-
id: "feature-cards-
|
|
8030
|
+
id: "feature-cards-raised-rule",
|
|
7845
8031
|
target: "feature-cards",
|
|
7846
|
-
label: "
|
|
8032
|
+
label: "Raised cards with rule",
|
|
7847
8033
|
blockKinds: ["block.feature-cards"],
|
|
7848
8034
|
design: {
|
|
7849
8035
|
sectionSurface: "base",
|
|
@@ -7872,6 +8058,21 @@ var blockAppearancePresets = [
|
|
|
7872
8058
|
emphasis: "medium"
|
|
7873
8059
|
}
|
|
7874
8060
|
}),
|
|
8061
|
+
defineBlockAppearancePreset({
|
|
8062
|
+
kind: "block-design",
|
|
8063
|
+
id: "events-lined-panel",
|
|
8064
|
+
target: "events",
|
|
8065
|
+
label: "Lined event panel",
|
|
8066
|
+
blockKinds: ["block.event-calendar", "block.event-listing"],
|
|
8067
|
+
design: {
|
|
8068
|
+
sectionSurface: "base",
|
|
8069
|
+
contentFrame: plainFrame,
|
|
8070
|
+
itemSurface: "none",
|
|
8071
|
+
transitionAfter: "none",
|
|
8072
|
+
emphasis: "medium",
|
|
8073
|
+
eventListTreatment: "lined-panel"
|
|
8074
|
+
}
|
|
8075
|
+
}),
|
|
7875
8076
|
defineBlockAppearancePreset({
|
|
7876
8077
|
kind: "block-design",
|
|
7877
8078
|
id: "schedule-details-accent-section",
|
|
@@ -7931,9 +8132,9 @@ var blockAppearancePresets = [
|
|
|
7931
8132
|
}),
|
|
7932
8133
|
defineBlockAppearancePreset({
|
|
7933
8134
|
kind: "block-design",
|
|
7934
|
-
id: "testimonials-
|
|
8135
|
+
id: "testimonials-simple-cards",
|
|
7935
8136
|
target: "testimonials",
|
|
7936
|
-
label: "
|
|
8137
|
+
label: "Simple testimonial cards",
|
|
7937
8138
|
blockKinds: ["block.testimonials"],
|
|
7938
8139
|
design: {
|
|
7939
8140
|
sectionSurface: "base",
|
|
@@ -7945,9 +8146,9 @@ var blockAppearancePresets = [
|
|
|
7945
8146
|
}),
|
|
7946
8147
|
defineBlockAppearancePreset({
|
|
7947
8148
|
kind: "block-design",
|
|
7948
|
-
id: "testimonials-
|
|
8149
|
+
id: "testimonials-raised-panel",
|
|
7949
8150
|
target: "testimonials",
|
|
7950
|
-
label: "
|
|
8151
|
+
label: "Raised testimonial panel",
|
|
7951
8152
|
blockKinds: ["block.testimonials"],
|
|
7952
8153
|
design: {
|
|
7953
8154
|
sectionSurface: "muted-band",
|
|
@@ -7959,9 +8160,9 @@ var blockAppearancePresets = [
|
|
|
7959
8160
|
}),
|
|
7960
8161
|
defineBlockAppearancePreset({
|
|
7961
8162
|
kind: "block-design",
|
|
7962
|
-
id: "testimonials-
|
|
8163
|
+
id: "testimonials-accent-panel",
|
|
7963
8164
|
target: "testimonials",
|
|
7964
|
-
label: "
|
|
8165
|
+
label: "Accent testimonial panel",
|
|
7965
8166
|
blockKinds: ["block.testimonials"],
|
|
7966
8167
|
design: {
|
|
7967
8168
|
sectionSurface: "accent-band",
|
|
@@ -7973,9 +8174,9 @@ var blockAppearancePresets = [
|
|
|
7973
8174
|
}),
|
|
7974
8175
|
defineBlockAppearancePreset({
|
|
7975
8176
|
kind: "block-design",
|
|
7976
|
-
id: "testimonials-accent-quote-
|
|
8177
|
+
id: "testimonials-accent-quote-cards",
|
|
7977
8178
|
target: "testimonials",
|
|
7978
|
-
label: "Accent quote
|
|
8179
|
+
label: "Accent quote cards",
|
|
7979
8180
|
blockKinds: ["block.testimonials"],
|
|
7980
8181
|
design: {
|
|
7981
8182
|
sectionSurface: "accent-band",
|
|
@@ -7988,9 +8189,9 @@ var blockAppearancePresets = [
|
|
|
7988
8189
|
}),
|
|
7989
8190
|
defineBlockAppearancePreset({
|
|
7990
8191
|
kind: "block-design",
|
|
7991
|
-
id: "testimonials-
|
|
8192
|
+
id: "testimonials-brand-background-quotes",
|
|
7992
8193
|
target: "testimonials",
|
|
7993
|
-
label: "
|
|
8194
|
+
label: "Brand background quotes",
|
|
7994
8195
|
blockKinds: ["block.testimonials"],
|
|
7995
8196
|
design: {
|
|
7996
8197
|
sectionSurface: "brand-depth-band",
|
|
@@ -8034,25 +8235,6 @@ var blockAppearancePresets = [
|
|
|
8034
8235
|
emphasis: "low"
|
|
8035
8236
|
}
|
|
8036
8237
|
}),
|
|
8037
|
-
defineBlockAppearancePreset({
|
|
8038
|
-
kind: "block-design",
|
|
8039
|
-
id: "faq-soft-earth-two-column",
|
|
8040
|
-
target: "faq",
|
|
8041
|
-
label: "Soft Earth two-column FAQ",
|
|
8042
|
-
blockKinds: ["block.faq"],
|
|
8043
|
-
design: {
|
|
8044
|
-
sectionSurface: "base",
|
|
8045
|
-
contentFrame: plainFrame,
|
|
8046
|
-
itemSurface: "flat",
|
|
8047
|
-
transitionAfter: "none",
|
|
8048
|
-
emphasis: "medium",
|
|
8049
|
-
accordionIconTreatment: {
|
|
8050
|
-
iconSet: "plus",
|
|
8051
|
-
colorToken: "primary",
|
|
8052
|
-
motion: "swap"
|
|
8053
|
-
}
|
|
8054
|
-
}
|
|
8055
|
-
}),
|
|
8056
8238
|
defineBlockAppearancePreset({
|
|
8057
8239
|
kind: "block-design",
|
|
8058
8240
|
id: "contact-form-panel",
|
|
@@ -9431,7 +9613,8 @@ var accordionSystemSchema = z12.object({
|
|
|
9431
9613
|
icon: z12.object({
|
|
9432
9614
|
style: accordionIconSchema,
|
|
9433
9615
|
position: z12.enum(["left", "right"]),
|
|
9434
|
-
size: z12.enum(["sm", "md", "lg"])
|
|
9616
|
+
size: z12.enum(["sm", "md", "lg"]),
|
|
9617
|
+
colorToken: themeColorTokenSchema.optional()
|
|
9435
9618
|
}),
|
|
9436
9619
|
// Trigger (question) styling
|
|
9437
9620
|
trigger: z12.object({
|
|
@@ -9565,6 +9748,7 @@ var navLinkPaddingXSchema = z16.enum(["none", "tight", "compact", "default", "re
|
|
|
9565
9748
|
var navLinkBorderRadiusSchema = z16.enum(["none", "sm", "md", "full"]);
|
|
9566
9749
|
var navLinkTextSizeSchema = z16.enum(["xs", "sm", "base", "lg"]);
|
|
9567
9750
|
var navLinkLetterSpacingSchema = z16.enum(["normal", "wide", "wider", "widest"]);
|
|
9751
|
+
var navLinkContrastTreatmentSchema = z16.enum(["none", "soft-glow"]);
|
|
9568
9752
|
var navLinkStyleSchema = z16.object({
|
|
9569
9753
|
/** Display name for the style */
|
|
9570
9754
|
name: z16.string().min(1).max(30).optional(),
|
|
@@ -9576,6 +9760,8 @@ var navLinkStyleSchema = z16.object({
|
|
|
9576
9760
|
textSize: navLinkTextSizeSchema.optional(),
|
|
9577
9761
|
/** Optional letter spacing override */
|
|
9578
9762
|
letterSpacing: navLinkLetterSpacingSchema.optional(),
|
|
9763
|
+
/** Optional text-only contrast treatment for transparent/overlay navigation */
|
|
9764
|
+
contrastTreatment: navLinkContrastTreatmentSchema.optional(),
|
|
9579
9765
|
/** Hover/active color token (for color-change effects) */
|
|
9580
9766
|
hoverColorToken: themeColorTokenSchema.nullable().optional(),
|
|
9581
9767
|
/** Padding preset */
|
|
@@ -9929,8 +10115,19 @@ var headingTypographyStyleSchema = typographyStyleSchema.extend({
|
|
|
9929
10115
|
colorToken: themeColorTokenSchema.nullable().optional()
|
|
9930
10116
|
});
|
|
9931
10117
|
var proseLinkUnderlineStyleSchema = z21.enum(["solid", "dotted", "dashed"]);
|
|
9932
|
-
var proseLinkUnderlineThicknessSchema = z21.enum([
|
|
9933
|
-
|
|
10118
|
+
var proseLinkUnderlineThicknessSchema = z21.enum([
|
|
10119
|
+
"auto",
|
|
10120
|
+
"fromFont",
|
|
10121
|
+
"thin",
|
|
10122
|
+
"medium",
|
|
10123
|
+
"thick"
|
|
10124
|
+
]);
|
|
10125
|
+
var proseLinkUnderlineOffsetSchema = z21.enum([
|
|
10126
|
+
"auto",
|
|
10127
|
+
"tight",
|
|
10128
|
+
"normal",
|
|
10129
|
+
"loose"
|
|
10130
|
+
]);
|
|
9934
10131
|
var proseLinkStyleSchema = z21.object({
|
|
9935
10132
|
colorToken: themeColorTokenSchema.optional(),
|
|
9936
10133
|
hoverColorToken: themeColorTokenSchema.optional(),
|
|
@@ -9941,7 +10138,14 @@ var proseLinkStyleSchema = z21.object({
|
|
|
9941
10138
|
underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
|
|
9942
10139
|
underlineOffset: proseLinkUnderlineOffsetSchema.optional()
|
|
9943
10140
|
});
|
|
9944
|
-
var semanticSpacingSchema = z21.enum([
|
|
10141
|
+
var semanticSpacingSchema = z21.enum([
|
|
10142
|
+
"none",
|
|
10143
|
+
"compact",
|
|
10144
|
+
"cozy",
|
|
10145
|
+
"medium",
|
|
10146
|
+
"comfortable",
|
|
10147
|
+
"spacious"
|
|
10148
|
+
]);
|
|
9945
10149
|
var boxRoundedSchema = z21.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
|
|
9946
10150
|
var boxBackgroundOverlaySchema = z21.object({
|
|
9947
10151
|
type: z21.enum(["none", "color", "gradient"]).nullable().optional(),
|
|
@@ -9987,6 +10191,7 @@ var sectionStylesOverrideSchema = z21.object({
|
|
|
9987
10191
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
9988
10192
|
minHeight: z21.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
|
|
9989
10193
|
tileTreatment: z21.enum(tileTreatmentValues).nullable().optional(),
|
|
10194
|
+
eventListTreatment: z21.enum(eventListTreatmentValues).nullable().optional(),
|
|
9990
10195
|
eyebrowTreatment: z21.enum(eyebrowTreatmentValues).nullable().optional(),
|
|
9991
10196
|
headingDecoration: headingDecorationSchema.nullable().optional(),
|
|
9992
10197
|
// Author-level override consumed by later block/editor rendering phases.
|
|
@@ -10085,9 +10290,17 @@ var inputStyle = z21.object({
|
|
|
10085
10290
|
focus: z21.enum(["glow", "ring", "underline"]),
|
|
10086
10291
|
label: z21.enum(["inside", "above"])
|
|
10087
10292
|
});
|
|
10088
|
-
var headerVariant = z21.enum(["classic", "centered", "transparent", "floating"
|
|
10293
|
+
var headerVariant = z21.enum(["classic", "centered", "transparent", "floating"]);
|
|
10089
10294
|
var headerPositioning = z21.enum(["static", "sticky", "fixed"]);
|
|
10090
|
-
var headerNavStyle = z21.enum([
|
|
10295
|
+
var headerNavStyle = z21.enum([
|
|
10296
|
+
"minimal",
|
|
10297
|
+
"underline",
|
|
10298
|
+
"underline-grow",
|
|
10299
|
+
"capsule",
|
|
10300
|
+
"scale",
|
|
10301
|
+
"frosted",
|
|
10302
|
+
"solid"
|
|
10303
|
+
]);
|
|
10091
10304
|
var navFontWeight = z21.enum(["regular", "medium", "semibold", "bold"]);
|
|
10092
10305
|
var headerMaxWidth = z21.enum(["container", "full"]);
|
|
10093
10306
|
var headerContainerSchema = z21.object({
|
|
@@ -10135,8 +10348,22 @@ var dropdownStyleSchema = z21.object({
|
|
|
10135
10348
|
textSize: z21.enum(["xs", "sm", "base", "lg"]).optional()
|
|
10136
10349
|
// optional = no override (browser default)
|
|
10137
10350
|
}).optional();
|
|
10138
|
-
var headerCtaGapSchema = z21.enum([
|
|
10139
|
-
|
|
10351
|
+
var headerCtaGapSchema = z21.enum([
|
|
10352
|
+
"none",
|
|
10353
|
+
"tight",
|
|
10354
|
+
"compact",
|
|
10355
|
+
"default",
|
|
10356
|
+
"relaxed",
|
|
10357
|
+
"spacious"
|
|
10358
|
+
]);
|
|
10359
|
+
var headerCtaTreatmentSchema = z21.enum([
|
|
10360
|
+
"default",
|
|
10361
|
+
"primary",
|
|
10362
|
+
"secondary",
|
|
10363
|
+
"inverted",
|
|
10364
|
+
"outline",
|
|
10365
|
+
"ghost"
|
|
10366
|
+
]);
|
|
10140
10367
|
var navContainerSchema = z21.object({
|
|
10141
10368
|
type: z21.enum(["none", "pill", "glass"]).default("none"),
|
|
10142
10369
|
tint: z21.string().nullable().optional(),
|
|
@@ -10191,7 +10418,14 @@ var footerMaxWidth = z21.enum(["container", "full"]);
|
|
|
10191
10418
|
var footerMode = z21.enum(["default", "blocks", "default+blocks", "none"]);
|
|
10192
10419
|
var footerNavLayoutMode = z21.enum(["stack", "inline", "inline-wrap"]);
|
|
10193
10420
|
var footerNavLayoutAlign = z21.enum(["start", "center", "end", "space-between"]);
|
|
10194
|
-
var footerSpacing = z21.enum([
|
|
10421
|
+
var footerSpacing = z21.enum([
|
|
10422
|
+
"none",
|
|
10423
|
+
"tight",
|
|
10424
|
+
"compact",
|
|
10425
|
+
"default",
|
|
10426
|
+
"relaxed",
|
|
10427
|
+
"spacious"
|
|
10428
|
+
]);
|
|
10195
10429
|
var footerLogoPlacement = z21.enum(["left", "right", "above", "below"]);
|
|
10196
10430
|
var footerLogoSize = z21.enum(["sm", "md", "lg", "xl"]);
|
|
10197
10431
|
var footerLogoMaxHeight = z21.enum(["sm", "md", "lg", "xl"]);
|
|
@@ -10256,7 +10490,12 @@ var footerSchema = z21.object({
|
|
|
10256
10490
|
logo: footerLogoSchema.optional(),
|
|
10257
10491
|
bottomBar: footerBottomBarSchema.optional()
|
|
10258
10492
|
});
|
|
10259
|
-
var containerPaddingPresetSchema = z21.enum([
|
|
10493
|
+
var containerPaddingPresetSchema = z21.enum([
|
|
10494
|
+
"tight",
|
|
10495
|
+
"compact",
|
|
10496
|
+
"default",
|
|
10497
|
+
"relaxed"
|
|
10498
|
+
]);
|
|
10260
10499
|
var layoutSchema = z21.object({
|
|
10261
10500
|
containerPadding: z21.object({
|
|
10262
10501
|
mobile: containerPaddingPresetSchema.optional(),
|
|
@@ -10264,8 +10503,24 @@ var layoutSchema = z21.object({
|
|
|
10264
10503
|
desktop: containerPaddingPresetSchema.optional()
|
|
10265
10504
|
}).optional()
|
|
10266
10505
|
}).optional();
|
|
10267
|
-
var heroTypographySizeSchema = z21.enum([
|
|
10268
|
-
|
|
10506
|
+
var heroTypographySizeSchema = z21.enum([
|
|
10507
|
+
"sm",
|
|
10508
|
+
"base",
|
|
10509
|
+
"lg",
|
|
10510
|
+
"xl",
|
|
10511
|
+
"2xl",
|
|
10512
|
+
"3xl",
|
|
10513
|
+
"4xl",
|
|
10514
|
+
"5xl",
|
|
10515
|
+
"6xl",
|
|
10516
|
+
"editorial"
|
|
10517
|
+
]);
|
|
10518
|
+
var heroTypographyLineHeightSchema = z21.enum([
|
|
10519
|
+
"tight",
|
|
10520
|
+
"snug",
|
|
10521
|
+
"normal",
|
|
10522
|
+
"relaxed"
|
|
10523
|
+
]);
|
|
10269
10524
|
var heroResponsiveTypographySchema = z21.object({
|
|
10270
10525
|
headlineSize: heroTypographySizeSchema.optional(),
|
|
10271
10526
|
headlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
@@ -10770,6 +11025,34 @@ var paletteVariantsById = new Map(
|
|
|
10770
11025
|
paletteVariants.map((v) => [v.id, v])
|
|
10771
11026
|
);
|
|
10772
11027
|
|
|
11028
|
+
// ../theme-core/src/accordions/siteStyleDefaults.ts
|
|
11029
|
+
var softEarthAccordionSystem = {
|
|
11030
|
+
background: {
|
|
11031
|
+
type: "solid",
|
|
11032
|
+
colorToken: "background"
|
|
11033
|
+
},
|
|
11034
|
+
spacing: "comfortable",
|
|
11035
|
+
corners: "square",
|
|
11036
|
+
border: null,
|
|
11037
|
+
shadow: null,
|
|
11038
|
+
icon: {
|
|
11039
|
+
style: "plus-minus",
|
|
11040
|
+
position: "right",
|
|
11041
|
+
size: "md",
|
|
11042
|
+
colorToken: "primary"
|
|
11043
|
+
},
|
|
11044
|
+
trigger: {
|
|
11045
|
+
textColorToken: "text",
|
|
11046
|
+
fontWeight: "medium"
|
|
11047
|
+
},
|
|
11048
|
+
hover: {
|
|
11049
|
+
textColorToken: "primary"
|
|
11050
|
+
},
|
|
11051
|
+
content: {
|
|
11052
|
+
textColorToken: "neutral-700"
|
|
11053
|
+
}
|
|
11054
|
+
};
|
|
11055
|
+
|
|
10773
11056
|
// ../theme-core/src/site-styles/headerLooks.ts
|
|
10774
11057
|
function asHeaderLookId(value) {
|
|
10775
11058
|
return value;
|
|
@@ -10819,23 +11102,13 @@ var headerLayoutCatalog = [
|
|
|
10819
11102
|
maxRecommendedNavItems: 5,
|
|
10820
11103
|
allowedLogoShapes: ["none", "text-only", "horizontal", "square"]
|
|
10821
11104
|
},
|
|
10822
|
-
{
|
|
10823
|
-
id: asHeaderLayoutId("editorial"),
|
|
10824
|
-
label: "Editorial",
|
|
10825
|
-
description: "A composed, magazine-like stacked header treatment.",
|
|
10826
|
-
structure: "editorial-stack",
|
|
10827
|
-
variant: "editorial",
|
|
10828
|
-
defaultPositioning: "static",
|
|
10829
|
-
shrinkOnScroll: false,
|
|
10830
|
-
maxRecommendedNavItems: 6
|
|
10831
|
-
},
|
|
10832
11105
|
{
|
|
10833
11106
|
id: asHeaderLayoutId("floating"),
|
|
10834
11107
|
label: "Floating",
|
|
10835
11108
|
description: "Detached header chrome that sits over the opening section.",
|
|
10836
11109
|
structure: "floating-shell",
|
|
10837
11110
|
variant: "floating",
|
|
10838
|
-
defaultPositioning: "
|
|
11111
|
+
defaultPositioning: "sticky",
|
|
10839
11112
|
shrinkOnScroll: true,
|
|
10840
11113
|
maxRecommendedNavItems: 5,
|
|
10841
11114
|
allowedLogoShapes: ["none", "text-only", "horizontal"]
|
|
@@ -10849,17 +11122,23 @@ var headerStyleCatalog = [
|
|
|
10849
11122
|
id: asHeaderStyleId("minimal"),
|
|
10850
11123
|
label: "Minimal",
|
|
10851
11124
|
description: "Quiet surface with simple color-change navigation.",
|
|
10852
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"
|
|
11125
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10853
11126
|
navInteraction: "color-change",
|
|
10854
|
-
surface: "neutral"
|
|
11127
|
+
surface: "neutral",
|
|
11128
|
+
defaultDepth: "none",
|
|
11129
|
+
navTypography: "plain",
|
|
11130
|
+
moods: ["calm", "professional", "editorial"]
|
|
10855
11131
|
},
|
|
10856
11132
|
{
|
|
10857
11133
|
id: asHeaderStyleId("fine-line"),
|
|
10858
11134
|
label: "Fine Line",
|
|
10859
11135
|
description: "Light surface with a crisp lower rule and underline hover.",
|
|
10860
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"
|
|
11136
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10861
11137
|
navInteraction: "underline-grow",
|
|
10862
|
-
surface: "bordered"
|
|
11138
|
+
surface: "bordered",
|
|
11139
|
+
defaultDepth: "line",
|
|
11140
|
+
navTypography: "plain",
|
|
11141
|
+
moods: ["calm", "professional", "editorial"]
|
|
10863
11142
|
},
|
|
10864
11143
|
{
|
|
10865
11144
|
id: asHeaderStyleId("soft-bar"),
|
|
@@ -10867,7 +11146,10 @@ var headerStyleCatalog = [
|
|
|
10867
11146
|
description: "Soft tinted surface with gentle pill hover states.",
|
|
10868
11147
|
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10869
11148
|
navInteraction: "pill-background",
|
|
10870
|
-
surface: "soft"
|
|
11149
|
+
surface: "soft",
|
|
11150
|
+
defaultDepth: "line",
|
|
11151
|
+
navTypography: "plain",
|
|
11152
|
+
moods: ["calm", "professional"]
|
|
10871
11153
|
},
|
|
10872
11154
|
{
|
|
10873
11155
|
id: asHeaderStyleId("pill-nav"),
|
|
@@ -10875,23 +11157,32 @@ var headerStyleCatalog = [
|
|
|
10875
11157
|
description: "A calm pill navigation rail over a neutral header.",
|
|
10876
11158
|
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10877
11159
|
navInteraction: "pill-background",
|
|
10878
|
-
surface: "soft"
|
|
11160
|
+
surface: "soft",
|
|
11161
|
+
defaultDepth: "none",
|
|
11162
|
+
navTypography: "plain",
|
|
11163
|
+
moods: ["calm"]
|
|
10879
11164
|
},
|
|
10880
11165
|
{
|
|
10881
11166
|
id: asHeaderStyleId("brand-bar"),
|
|
10882
11167
|
label: "Brand Bar",
|
|
10883
11168
|
description: "Solid brand surface with high-contrast navigation.",
|
|
10884
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"
|
|
11169
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10885
11170
|
navInteraction: "color-change",
|
|
10886
|
-
surface: "brand-solid"
|
|
11171
|
+
surface: "brand-solid",
|
|
11172
|
+
defaultDepth: "none",
|
|
11173
|
+
navTypography: "brand-caps",
|
|
11174
|
+
moods: ["professional", "expressive", "utility"]
|
|
10887
11175
|
},
|
|
10888
11176
|
{
|
|
10889
11177
|
id: asHeaderStyleId("brand-underline"),
|
|
10890
11178
|
label: "Brand Underline",
|
|
10891
11179
|
description: "Brand surface with underline-grow navigation.",
|
|
10892
|
-
supportedLayoutIds: supportedLayouts(["classic"
|
|
11180
|
+
supportedLayoutIds: supportedLayouts(["classic"]),
|
|
10893
11181
|
navInteraction: "underline-grow",
|
|
10894
|
-
surface: "brand-solid"
|
|
11182
|
+
surface: "brand-solid",
|
|
11183
|
+
defaultDepth: "none",
|
|
11184
|
+
navTypography: "brand-caps",
|
|
11185
|
+
moods: ["expressive"]
|
|
10895
11186
|
},
|
|
10896
11187
|
{
|
|
10897
11188
|
id: asHeaderStyleId("brand-pill"),
|
|
@@ -10899,41 +11190,54 @@ var headerStyleCatalog = [
|
|
|
10899
11190
|
description: "Solid brand surface with rounded active and hover states.",
|
|
10900
11191
|
supportedLayoutIds: supportedLayouts(["classic", "centered", "floating"]),
|
|
10901
11192
|
navInteraction: "pill-background",
|
|
10902
|
-
surface: "brand-solid"
|
|
11193
|
+
surface: "brand-solid",
|
|
11194
|
+
defaultDepth: "none",
|
|
11195
|
+
navTypography: "brand-caps",
|
|
11196
|
+
moods: ["expressive"]
|
|
10903
11197
|
},
|
|
10904
11198
|
{
|
|
10905
|
-
id: asHeaderStyleId("
|
|
10906
|
-
label: "
|
|
11199
|
+
id: asHeaderStyleId("serif-line"),
|
|
11200
|
+
label: "Serif Line",
|
|
10907
11201
|
description: "Typographic logo treatment with understated underline navigation.",
|
|
10908
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"
|
|
11202
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10909
11203
|
navInteraction: "underline-grow",
|
|
10910
|
-
surface: "bordered"
|
|
11204
|
+
surface: "bordered",
|
|
11205
|
+
defaultDepth: "line",
|
|
11206
|
+
navTypography: "heading",
|
|
11207
|
+
moods: ["editorial", "calm"]
|
|
10911
11208
|
},
|
|
10912
11209
|
{
|
|
10913
11210
|
id: asHeaderStyleId("flat-tabs"),
|
|
10914
11211
|
label: "Flat Tabs",
|
|
10915
11212
|
description: "Flat block hover and active states with a Swiss utility feel.",
|
|
10916
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"
|
|
11213
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10917
11214
|
navInteraction: "flat-block",
|
|
10918
|
-
surface: "bordered"
|
|
11215
|
+
surface: "bordered",
|
|
11216
|
+
defaultDepth: "shadow",
|
|
11217
|
+
navTypography: "quiet-caps",
|
|
11218
|
+
moods: ["professional", "utility", "expressive"]
|
|
10919
11219
|
},
|
|
10920
11220
|
{
|
|
10921
11221
|
id: asHeaderStyleId("glass"),
|
|
10922
11222
|
label: "Glass",
|
|
10923
|
-
description: "
|
|
11223
|
+
description: "Translucent chrome with frosted navigation backing.",
|
|
10924
11224
|
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
10925
11225
|
navInteraction: "glass-backed",
|
|
10926
11226
|
surface: "floating",
|
|
10927
|
-
|
|
11227
|
+
defaultDepth: "shadow",
|
|
11228
|
+
navTypography: "plain",
|
|
11229
|
+
moods: ["expressive", "calm"]
|
|
10928
11230
|
},
|
|
10929
11231
|
{
|
|
10930
11232
|
id: asHeaderStyleId("minimal-surface"),
|
|
10931
|
-
label: "
|
|
10932
|
-
description: "Floating
|
|
11233
|
+
label: "Clear Split",
|
|
11234
|
+
description: "Floating logo with transparent navigation and no shared shell.",
|
|
10933
11235
|
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
10934
11236
|
navInteraction: "color-change",
|
|
10935
11237
|
surface: "floating",
|
|
10936
|
-
|
|
11238
|
+
defaultDepth: "none",
|
|
11239
|
+
navTypography: "plain",
|
|
11240
|
+
moods: ["editorial", "calm"]
|
|
10937
11241
|
},
|
|
10938
11242
|
{
|
|
10939
11243
|
id: asHeaderStyleId("soft-shell"),
|
|
@@ -10942,7 +11246,31 @@ var headerStyleCatalog = [
|
|
|
10942
11246
|
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
10943
11247
|
navInteraction: "pill-background",
|
|
10944
11248
|
surface: "floating",
|
|
10945
|
-
|
|
11249
|
+
defaultDepth: "shadow",
|
|
11250
|
+
navTypography: "plain",
|
|
11251
|
+
moods: ["calm", "professional"]
|
|
11252
|
+
},
|
|
11253
|
+
{
|
|
11254
|
+
id: asHeaderStyleId("split-glass"),
|
|
11255
|
+
label: "Split Glass",
|
|
11256
|
+
description: "Logo floats independently while the navigation sits in a glass rail.",
|
|
11257
|
+
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
11258
|
+
navInteraction: "glass-backed",
|
|
11259
|
+
surface: "floating",
|
|
11260
|
+
defaultDepth: "shadow",
|
|
11261
|
+
navTypography: "quiet-caps",
|
|
11262
|
+
moods: ["expressive"]
|
|
11263
|
+
},
|
|
11264
|
+
{
|
|
11265
|
+
id: asHeaderStyleId("split-pill"),
|
|
11266
|
+
label: "Split Pill",
|
|
11267
|
+
description: "Logo floats independently with a soft pill-backed navigation rail.",
|
|
11268
|
+
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
11269
|
+
navInteraction: "pill-background",
|
|
11270
|
+
surface: "floating",
|
|
11271
|
+
defaultDepth: "shadow",
|
|
11272
|
+
navTypography: "heading",
|
|
11273
|
+
moods: ["calm", "editorial"]
|
|
10946
11274
|
}
|
|
10947
11275
|
];
|
|
10948
11276
|
var headerLayoutsById = new Map(
|
|
@@ -10962,7 +11290,7 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
|
|
|
10962
11290
|
"brand-bar",
|
|
10963
11291
|
"brand-underline",
|
|
10964
11292
|
"brand-pill",
|
|
10965
|
-
"
|
|
11293
|
+
"serif-line",
|
|
10966
11294
|
"flat-tabs"
|
|
10967
11295
|
])
|
|
10968
11296
|
],
|
|
@@ -10975,19 +11303,7 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
|
|
|
10975
11303
|
"pill-nav",
|
|
10976
11304
|
"brand-bar",
|
|
10977
11305
|
"brand-pill",
|
|
10978
|
-
"
|
|
10979
|
-
"flat-tabs"
|
|
10980
|
-
])
|
|
10981
|
-
],
|
|
10982
|
-
[
|
|
10983
|
-
asHeaderLayoutId("editorial"),
|
|
10984
|
-
headerStyleRepairChain([
|
|
10985
|
-
"minimal",
|
|
10986
|
-
"fine-line",
|
|
10987
|
-
"soft-bar",
|
|
10988
|
-
"brand-bar",
|
|
10989
|
-
"brand-underline",
|
|
10990
|
-
"editorial-line",
|
|
11306
|
+
"serif-line",
|
|
10991
11307
|
"flat-tabs"
|
|
10992
11308
|
])
|
|
10993
11309
|
],
|
|
@@ -10996,6 +11312,8 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
|
|
|
10996
11312
|
headerStyleRepairChain([
|
|
10997
11313
|
"glass",
|
|
10998
11314
|
"minimal-surface",
|
|
11315
|
+
"split-glass",
|
|
11316
|
+
"split-pill",
|
|
10999
11317
|
"soft-shell",
|
|
11000
11318
|
"brand-pill"
|
|
11001
11319
|
])
|
|
@@ -11004,20 +11322,69 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
|
|
|
11004
11322
|
function headerStyleRepairChain(values) {
|
|
11005
11323
|
return values.map(asHeaderStyleId);
|
|
11006
11324
|
}
|
|
11007
|
-
var headerStyleRepairOrder = /* @__PURE__ */ new Map(
|
|
11008
|
-
[
|
|
11009
|
-
|
|
11010
|
-
|
|
11011
|
-
|
|
11012
|
-
|
|
11013
|
-
|
|
11014
|
-
|
|
11015
|
-
|
|
11016
|
-
|
|
11017
|
-
|
|
11018
|
-
|
|
11019
|
-
|
|
11020
|
-
]
|
|
11325
|
+
var headerStyleRepairOrder = /* @__PURE__ */ new Map(
|
|
11326
|
+
[
|
|
11327
|
+
[
|
|
11328
|
+
asHeaderStyleId("brand-bar"),
|
|
11329
|
+
headerStyleRepairChain(["brand-bar", "brand-pill", "minimal"])
|
|
11330
|
+
],
|
|
11331
|
+
[
|
|
11332
|
+
asHeaderStyleId("brand-underline"),
|
|
11333
|
+
headerStyleRepairChain(["serif-line", "fine-line", "minimal"])
|
|
11334
|
+
],
|
|
11335
|
+
[
|
|
11336
|
+
asHeaderStyleId("brand-pill"),
|
|
11337
|
+
headerStyleRepairChain(["brand-pill", "brand-bar", "minimal"])
|
|
11338
|
+
],
|
|
11339
|
+
[
|
|
11340
|
+
asHeaderStyleId("pill-nav"),
|
|
11341
|
+
headerStyleRepairChain(["pill-nav", "soft-bar", "minimal"])
|
|
11342
|
+
],
|
|
11343
|
+
[
|
|
11344
|
+
asHeaderStyleId("flat-tabs"),
|
|
11345
|
+
headerStyleRepairChain(["flat-tabs", "pill-nav", "minimal"])
|
|
11346
|
+
],
|
|
11347
|
+
[
|
|
11348
|
+
asHeaderStyleId("serif-line"),
|
|
11349
|
+
headerStyleRepairChain(["serif-line", "fine-line", "minimal"])
|
|
11350
|
+
],
|
|
11351
|
+
[
|
|
11352
|
+
asHeaderStyleId("glass"),
|
|
11353
|
+
headerStyleRepairChain([
|
|
11354
|
+
"glass",
|
|
11355
|
+
"soft-shell",
|
|
11356
|
+
"fine-line",
|
|
11357
|
+
"minimal-surface",
|
|
11358
|
+
"minimal"
|
|
11359
|
+
])
|
|
11360
|
+
],
|
|
11361
|
+
[
|
|
11362
|
+
asHeaderStyleId("soft-shell"),
|
|
11363
|
+
headerStyleRepairChain(["soft-shell", "soft-bar", "minimal"])
|
|
11364
|
+
],
|
|
11365
|
+
[
|
|
11366
|
+
asHeaderStyleId("minimal-surface"),
|
|
11367
|
+
headerStyleRepairChain(["minimal-surface", "minimal"])
|
|
11368
|
+
],
|
|
11369
|
+
[
|
|
11370
|
+
asHeaderStyleId("split-glass"),
|
|
11371
|
+
headerStyleRepairChain(["split-glass", "glass", "minimal-surface"])
|
|
11372
|
+
],
|
|
11373
|
+
[
|
|
11374
|
+
asHeaderStyleId("split-pill"),
|
|
11375
|
+
headerStyleRepairChain(["split-pill", "soft-shell", "brand-pill"])
|
|
11376
|
+
],
|
|
11377
|
+
[
|
|
11378
|
+
asHeaderStyleId("fine-line"),
|
|
11379
|
+
headerStyleRepairChain(["fine-line", "minimal"])
|
|
11380
|
+
],
|
|
11381
|
+
[
|
|
11382
|
+
asHeaderStyleId("soft-bar"),
|
|
11383
|
+
headerStyleRepairChain(["soft-bar", "minimal"])
|
|
11384
|
+
],
|
|
11385
|
+
[asHeaderStyleId("minimal"), headerStyleRepairChain(["minimal"])]
|
|
11386
|
+
]
|
|
11387
|
+
);
|
|
11021
11388
|
var legacyHeaderLookAliases = [
|
|
11022
11389
|
{
|
|
11023
11390
|
lookId: asHeaderLookId("clean-base"),
|
|
@@ -11034,10 +11401,10 @@ var legacyHeaderLookAliases = [
|
|
|
11034
11401
|
}
|
|
11035
11402
|
},
|
|
11036
11403
|
{
|
|
11037
|
-
lookId: asHeaderLookId("
|
|
11404
|
+
lookId: asHeaderLookId("serif-line"),
|
|
11038
11405
|
selection: {
|
|
11039
|
-
layoutId: asHeaderLayoutId("
|
|
11040
|
-
styleId: asHeaderStyleId("
|
|
11406
|
+
layoutId: asHeaderLayoutId("centered"),
|
|
11407
|
+
styleId: asHeaderStyleId("serif-line")
|
|
11041
11408
|
}
|
|
11042
11409
|
},
|
|
11043
11410
|
{
|
|
@@ -11076,9 +11443,7 @@ var legacyHeaderLookAliases = [
|
|
|
11076
11443
|
}
|
|
11077
11444
|
}
|
|
11078
11445
|
];
|
|
11079
|
-
var legacyHeaderLookAliasesById = new Map(
|
|
11080
|
-
legacyHeaderLookAliases.map((alias) => [alias.lookId, alias])
|
|
11081
|
-
);
|
|
11446
|
+
var legacyHeaderLookAliasesById = new Map(legacyHeaderLookAliases.map((alias) => [alias.lookId, alias]));
|
|
11082
11447
|
function getHeaderStyle(id) {
|
|
11083
11448
|
return headerStylesById.get(id) ?? null;
|
|
11084
11449
|
}
|
|
@@ -11096,10 +11461,29 @@ function resolveLegacyHeaderLookAlias(lookId) {
|
|
|
11096
11461
|
return legacyHeaderLookAliasesById.get(lookId)?.selection ?? null;
|
|
11097
11462
|
}
|
|
11098
11463
|
function getCompatibleHeaderStyleIds(layoutId) {
|
|
11099
|
-
return (headerStyleCompatibilityOrder.get(layoutId) ?? []).filter(
|
|
11100
|
-
|
|
11101
|
-
|
|
11102
|
-
|
|
11464
|
+
return (headerStyleCompatibilityOrder.get(layoutId) ?? []).filter(
|
|
11465
|
+
(styleId) => {
|
|
11466
|
+
const style = getHeaderStyleOrThrow(styleId);
|
|
11467
|
+
return isHeaderStyleCompatibleWithLayout(style, layoutId);
|
|
11468
|
+
}
|
|
11469
|
+
);
|
|
11470
|
+
}
|
|
11471
|
+
function themedHeaderShadow(theme) {
|
|
11472
|
+
switch (theme.shadow.elevation) {
|
|
11473
|
+
case "none":
|
|
11474
|
+
return void 0;
|
|
11475
|
+
case "low":
|
|
11476
|
+
return { elevation: "sm" };
|
|
11477
|
+
case "medium":
|
|
11478
|
+
return { elevation: "md" };
|
|
11479
|
+
case "high":
|
|
11480
|
+
return { elevation: "lg" };
|
|
11481
|
+
default:
|
|
11482
|
+
return assertNever(
|
|
11483
|
+
theme.shadow.elevation,
|
|
11484
|
+
"Unhandled theme shadow elevation"
|
|
11485
|
+
);
|
|
11486
|
+
}
|
|
11103
11487
|
}
|
|
11104
11488
|
function solidBrandHeader(theme) {
|
|
11105
11489
|
const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
|
|
@@ -11130,8 +11514,14 @@ function solidBrandHeader(theme) {
|
|
|
11130
11514
|
borderRadius: "none",
|
|
11131
11515
|
effects: {
|
|
11132
11516
|
hover: [
|
|
11133
|
-
{
|
|
11134
|
-
|
|
11517
|
+
{
|
|
11518
|
+
effectId: "text-color-change",
|
|
11519
|
+
options: { hoverColorToken: "secondary" }
|
|
11520
|
+
},
|
|
11521
|
+
{
|
|
11522
|
+
effectId: "nav-underline",
|
|
11523
|
+
options: { style: "grow", colorToken: "secondary" }
|
|
11524
|
+
}
|
|
11135
11525
|
]
|
|
11136
11526
|
}
|
|
11137
11527
|
},
|
|
@@ -11187,10 +11577,10 @@ function cleanBaseHeader(theme) {
|
|
|
11187
11577
|
ctaGap: "default"
|
|
11188
11578
|
};
|
|
11189
11579
|
}
|
|
11190
|
-
function
|
|
11580
|
+
function serifLineHeader(theme) {
|
|
11191
11581
|
return {
|
|
11192
11582
|
...baseHeader(theme),
|
|
11193
|
-
variant: "
|
|
11583
|
+
variant: "centered",
|
|
11194
11584
|
positioning: "sticky",
|
|
11195
11585
|
shrinkOnScroll: false,
|
|
11196
11586
|
background: {
|
|
@@ -11244,9 +11634,7 @@ function practicalUtilityHeader(theme) {
|
|
|
11244
11634
|
navColor: "text",
|
|
11245
11635
|
navStyle: "solid",
|
|
11246
11636
|
navWeight: "semibold",
|
|
11247
|
-
shadow:
|
|
11248
|
-
elevation: "sm"
|
|
11249
|
-
},
|
|
11637
|
+
shadow: themedHeaderShadow(theme),
|
|
11250
11638
|
border: {
|
|
11251
11639
|
style: "solid",
|
|
11252
11640
|
width: "thin",
|
|
@@ -11315,6 +11703,7 @@ function floatingGlassHeader(theme) {
|
|
|
11315
11703
|
return {
|
|
11316
11704
|
...transparentOverlayHeader(theme),
|
|
11317
11705
|
variant: "floating",
|
|
11706
|
+
positioning: "sticky",
|
|
11318
11707
|
navStyle: "frosted",
|
|
11319
11708
|
navContainer: {
|
|
11320
11709
|
type: "glass",
|
|
@@ -11359,27 +11748,27 @@ var headerLookCatalog = [
|
|
|
11359
11748
|
compile: solidBrandHeader
|
|
11360
11749
|
},
|
|
11361
11750
|
{
|
|
11362
|
-
id: asHeaderLookId("
|
|
11363
|
-
label: "
|
|
11364
|
-
visualTreatment: "light-
|
|
11751
|
+
id: asHeaderLookId("serif-line"),
|
|
11752
|
+
label: "Serif line",
|
|
11753
|
+
visualTreatment: "light-serif",
|
|
11365
11754
|
layoutBehavior: "sticky",
|
|
11366
11755
|
configuration: {
|
|
11367
|
-
structure: "
|
|
11368
|
-
treatment: "light-
|
|
11756
|
+
structure: "centered-stack",
|
|
11757
|
+
treatment: "light-serif",
|
|
11369
11758
|
behavior: "sticky"
|
|
11370
11759
|
},
|
|
11371
11760
|
openingRequirement: "none",
|
|
11372
11761
|
maxRecommendedNavItems: 6,
|
|
11373
|
-
compile:
|
|
11762
|
+
compile: serifLineHeader
|
|
11374
11763
|
},
|
|
11375
11764
|
{
|
|
11376
11765
|
id: asHeaderLookId("centered-calm"),
|
|
11377
11766
|
label: "Centered calm",
|
|
11378
|
-
visualTreatment: "light-
|
|
11767
|
+
visualTreatment: "light-serif",
|
|
11379
11768
|
layoutBehavior: "normal-flow",
|
|
11380
11769
|
configuration: {
|
|
11381
11770
|
structure: "centered-stack",
|
|
11382
|
-
treatment: "light-
|
|
11771
|
+
treatment: "light-serif",
|
|
11383
11772
|
behavior: "normal-flow"
|
|
11384
11773
|
},
|
|
11385
11774
|
openingRequirement: "none",
|
|
@@ -11830,7 +12219,7 @@ var typographyPresets = [
|
|
|
11830
12219
|
heroTypography: {
|
|
11831
12220
|
headlineSize: "6xl",
|
|
11832
12221
|
headlineLineHeight: "tight",
|
|
11833
|
-
subheadlineSize: "
|
|
12222
|
+
subheadlineSize: "2xl",
|
|
11834
12223
|
subheadlineLineHeight: "normal",
|
|
11835
12224
|
microHeadlineSize: "6xl",
|
|
11836
12225
|
microHeadlineLineHeight: "tight",
|
|
@@ -11848,6 +12237,8 @@ var typographyPresetsById = new Map(
|
|
|
11848
12237
|
);
|
|
11849
12238
|
|
|
11850
12239
|
// ../theme-core/src/site-styles/curatedSiteStyles.ts
|
|
12240
|
+
var SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
|
|
12241
|
+
var SOFT_EARTH_SITE_STYLE_ID = asSiteStyleId(SOFT_EARTH_SITE_STYLE_ID_VALUE);
|
|
11851
12242
|
var curatedSiteStyleIdValues = [
|
|
11852
12243
|
"site-style:calm-studio",
|
|
11853
12244
|
"site-style:clear-professional",
|
|
@@ -11859,7 +12250,7 @@ var curatedSiteStyleIdValues = [
|
|
|
11859
12250
|
"site-style:personal-retreat-journal",
|
|
11860
12251
|
"site-style:tactile-workshop",
|
|
11861
12252
|
"site-style:modern-wellness",
|
|
11862
|
-
|
|
12253
|
+
SOFT_EARTH_SITE_STYLE_ID_VALUE,
|
|
11863
12254
|
"site-style:bold-launch",
|
|
11864
12255
|
"site-style:south-west-twerk-school"
|
|
11865
12256
|
];
|
|
@@ -11925,22 +12316,31 @@ var expressiveUnderlineInputs = {
|
|
|
11925
12316
|
}
|
|
11926
12317
|
};
|
|
11927
12318
|
function uniqueContentFrameKinds() {
|
|
11928
|
-
const kinds = [
|
|
11929
|
-
|
|
11930
|
-
|
|
12319
|
+
const kinds = [
|
|
12320
|
+
...new Set(
|
|
12321
|
+
generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
|
|
12322
|
+
)
|
|
12323
|
+
];
|
|
11931
12324
|
const firstKind = kinds[0];
|
|
11932
12325
|
if (!firstKind) {
|
|
11933
|
-
throw new Error(
|
|
12326
|
+
throw new Error(
|
|
12327
|
+
"Expected generated design option catalog to expose at least one content frame kind."
|
|
12328
|
+
);
|
|
11934
12329
|
}
|
|
11935
12330
|
return [firstKind, ...kinds.slice(1)];
|
|
11936
12331
|
}
|
|
11937
12332
|
var generatedContentFrameKinds = uniqueContentFrameKinds();
|
|
11938
12333
|
function defineCuratedSiteStyle(input) {
|
|
11939
12334
|
const legacyHeaderLookIds = input.recommendedHeaderLookIds ?? ["clean-base"];
|
|
11940
|
-
const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(
|
|
12335
|
+
const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(
|
|
12336
|
+
legacyHeaderLookIds,
|
|
12337
|
+
input.tokenRecipes
|
|
12338
|
+
);
|
|
11941
12339
|
const typographyPresetChoices = input.typographyPresetChoices ?? defaultTypographyPresetChoicesForRecipe(input.tokenRecipes.typography);
|
|
11942
12340
|
const defaultTypographyPresetId = input.defaultTypographyPresetId ? asTypographyPresetId(input.defaultTypographyPresetId) : typographyPresetChoices[0].id;
|
|
11943
|
-
if (!typographyPresetChoices.some(
|
|
12341
|
+
if (!typographyPresetChoices.some(
|
|
12342
|
+
(choice) => choice.id === defaultTypographyPresetId
|
|
12343
|
+
)) {
|
|
11944
12344
|
throw new Error(
|
|
11945
12345
|
`Default typography preset ${defaultTypographyPresetId} is not curated for site style ${input.id}.`
|
|
11946
12346
|
);
|
|
@@ -11951,9 +12351,13 @@ function defineCuratedSiteStyle(input) {
|
|
|
11951
12351
|
description: input.description,
|
|
11952
12352
|
generationBrief: input.generationBrief,
|
|
11953
12353
|
selectionKeywordRules: input.selectionKeywordRules ?? [],
|
|
11954
|
-
siteCreatorSelection: input.siteCreatorSelection ?? {
|
|
12354
|
+
siteCreatorSelection: input.siteCreatorSelection ?? {
|
|
12355
|
+
kind: "explicit_only"
|
|
12356
|
+
},
|
|
11955
12357
|
template: {
|
|
11956
|
-
id: asDesignSystemTemplateId(
|
|
12358
|
+
id: asDesignSystemTemplateId(
|
|
12359
|
+
`template:${input.id.replace("site-style:", "")}`
|
|
12360
|
+
),
|
|
11957
12361
|
name: input.name,
|
|
11958
12362
|
version: 1,
|
|
11959
12363
|
tokenRecipes: input.tokenRecipes,
|
|
@@ -11964,6 +12368,7 @@ function defineCuratedSiteStyle(input) {
|
|
|
11964
12368
|
supportedTransitions: generatedDesignOptionCatalog.transitions
|
|
11965
12369
|
},
|
|
11966
12370
|
...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
|
|
12371
|
+
...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
|
|
11967
12372
|
recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
|
|
11968
12373
|
defaultHeaderSelection: input.defaultHeaderSelection ? {
|
|
11969
12374
|
layoutId: asHeaderLayoutId(input.defaultHeaderSelection.layoutId),
|
|
@@ -11971,13 +12376,17 @@ function defineCuratedSiteStyle(input) {
|
|
|
11971
12376
|
} : inferredHeaderCuration.defaultHeaderSelection,
|
|
11972
12377
|
recommendedHeaderLayoutChoices: input.recommendedHeaderLayoutChoices ?? inferredHeaderCuration.recommendedHeaderLayoutChoices,
|
|
11973
12378
|
recommendedHeaderStyleChoicesByLayout: input.recommendedHeaderStyleChoicesByLayout ?? inferredHeaderCuration.recommendedHeaderStyleChoicesByLayout,
|
|
11974
|
-
discouragedHeaderSelections: input.discouragedHeaderSelections?.map(
|
|
11975
|
-
|
|
11976
|
-
|
|
11977
|
-
|
|
12379
|
+
discouragedHeaderSelections: input.discouragedHeaderSelections?.map(
|
|
12380
|
+
(selection) => ({
|
|
12381
|
+
layoutId: asHeaderLayoutId(selection.layoutId),
|
|
12382
|
+
styleId: asHeaderStyleId(selection.styleId)
|
|
12383
|
+
})
|
|
12384
|
+
),
|
|
11978
12385
|
recommendedHeaderLookIds: legacyHeaderLookIds.map(asHeaderLookId),
|
|
11979
12386
|
// Empty is intentional: resolveFooterLook always appends its guaranteed fallback.
|
|
11980
|
-
recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(
|
|
12387
|
+
recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(
|
|
12388
|
+
asFooterLookId
|
|
12389
|
+
),
|
|
11981
12390
|
buttonPersonalityChoices: input.buttonPersonalityChoices,
|
|
11982
12391
|
paletteVariantChoices: input.paletteVariantChoices,
|
|
11983
12392
|
typographyPresetChoices,
|
|
@@ -11996,7 +12405,7 @@ function headerLayoutChoice(id, note) {
|
|
|
11996
12405
|
function headerStyleChoice(id, note) {
|
|
11997
12406
|
return note ? { id: asHeaderStyleId(id), note } : { id: asHeaderStyleId(id) };
|
|
11998
12407
|
}
|
|
11999
|
-
function
|
|
12408
|
+
function unbrandHeaderLayoutId(id) {
|
|
12000
12409
|
return id;
|
|
12001
12410
|
}
|
|
12002
12411
|
function uniqueHeaderLayoutChoices(choices) {
|
|
@@ -12018,8 +12427,72 @@ function nonEmptyHeaderStyleChoices(choices, fallbackLayoutId) {
|
|
|
12018
12427
|
};
|
|
12019
12428
|
return [first, ...choices.slice(1)];
|
|
12020
12429
|
}
|
|
12021
|
-
function
|
|
12022
|
-
const
|
|
12430
|
+
function uniqueCompatibleHeaderStyleChoices(choices, fallbackLayoutId) {
|
|
12431
|
+
const compatible = new Set(getCompatibleHeaderStyleIds(fallbackLayoutId));
|
|
12432
|
+
const seen = /* @__PURE__ */ new Set();
|
|
12433
|
+
const unique = choices.filter((choice) => {
|
|
12434
|
+
if (!compatible.has(choice.id)) return false;
|
|
12435
|
+
if (seen.has(choice.id)) return false;
|
|
12436
|
+
seen.add(choice.id);
|
|
12437
|
+
return true;
|
|
12438
|
+
});
|
|
12439
|
+
return nonEmptyHeaderStyleChoices(unique, fallbackLayoutId);
|
|
12440
|
+
}
|
|
12441
|
+
function inferredHeaderStyleValuesForRecipes(layoutId, recipes) {
|
|
12442
|
+
switch (layoutId) {
|
|
12443
|
+
case "classic":
|
|
12444
|
+
if (isExpressiveRecipe(recipes)) {
|
|
12445
|
+
return [
|
|
12446
|
+
"brand-bar",
|
|
12447
|
+
"brand-underline",
|
|
12448
|
+
"flat-tabs",
|
|
12449
|
+
"brand-pill",
|
|
12450
|
+
"fine-line"
|
|
12451
|
+
];
|
|
12452
|
+
}
|
|
12453
|
+
if (recipes.spacing === "compact") {
|
|
12454
|
+
return ["flat-tabs", "fine-line", "minimal", "brand-bar"];
|
|
12455
|
+
}
|
|
12456
|
+
if (isSerifTypographyRecipe(recipes)) {
|
|
12457
|
+
return ["serif-line", "fine-line", "minimal", "soft-bar"];
|
|
12458
|
+
}
|
|
12459
|
+
if (recipes.radius === "rounded" || recipes.radius === "pill") {
|
|
12460
|
+
return ["soft-bar", "pill-nav", "fine-line", "minimal"];
|
|
12461
|
+
}
|
|
12462
|
+
return ["fine-line", "minimal", "soft-bar", "brand-bar"];
|
|
12463
|
+
case "centered":
|
|
12464
|
+
if (isSerifTypographyRecipe(recipes)) {
|
|
12465
|
+
return ["serif-line", "fine-line", "minimal", "soft-bar"];
|
|
12466
|
+
}
|
|
12467
|
+
if (isExpressiveRecipe(recipes)) {
|
|
12468
|
+
return ["brand-pill", "flat-tabs", "brand-bar", "fine-line"];
|
|
12469
|
+
}
|
|
12470
|
+
if (recipes.radius === "rounded" || recipes.radius === "pill") {
|
|
12471
|
+
return ["soft-bar", "pill-nav", "fine-line", "minimal"];
|
|
12472
|
+
}
|
|
12473
|
+
return ["minimal", "fine-line", "soft-bar"];
|
|
12474
|
+
case "floating":
|
|
12475
|
+
if (isExpressiveRecipe(recipes)) {
|
|
12476
|
+
return ["glass", "split-glass", "brand-pill", "soft-shell"];
|
|
12477
|
+
}
|
|
12478
|
+
if (isSerifTypographyRecipe(recipes)) {
|
|
12479
|
+
return ["split-pill", "minimal-surface", "soft-shell"];
|
|
12480
|
+
}
|
|
12481
|
+
return ["soft-shell", "minimal-surface", "glass"];
|
|
12482
|
+
default:
|
|
12483
|
+
return [];
|
|
12484
|
+
}
|
|
12485
|
+
}
|
|
12486
|
+
function isExpressiveRecipe(recipes) {
|
|
12487
|
+
return recipes.contrast === "maximum" || recipes.shadow === "layered" || recipes.motion === "expressive";
|
|
12488
|
+
}
|
|
12489
|
+
function isSerifTypographyRecipe(recipes) {
|
|
12490
|
+
return recipes.typography === "serif-editorial" || recipes.typography === "classic-serif";
|
|
12491
|
+
}
|
|
12492
|
+
function inferHeaderCurationFromLegacyLooks(lookIds, recipes) {
|
|
12493
|
+
const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter(
|
|
12494
|
+
(selection) => Boolean(selection)
|
|
12495
|
+
);
|
|
12023
12496
|
const defaultHeaderSelection = selections[0] ?? {
|
|
12024
12497
|
layoutId: asHeaderLayoutId("classic"),
|
|
12025
12498
|
styleId: asHeaderStyleId("minimal")
|
|
@@ -12029,9 +12502,13 @@ function inferHeaderCurationFromLegacyLooks(lookIds) {
|
|
|
12029
12502
|
);
|
|
12030
12503
|
const stylesByLayout = {};
|
|
12031
12504
|
for (const layoutChoice of layoutChoices) {
|
|
12032
|
-
const
|
|
12033
|
-
|
|
12034
|
-
|
|
12505
|
+
const legacyStyleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
|
|
12506
|
+
const inferredStyleChoices = inferredHeaderStyleValuesForRecipes(
|
|
12507
|
+
layoutChoice.id,
|
|
12508
|
+
recipes
|
|
12509
|
+
).map((styleId) => headerStyleChoice(styleId));
|
|
12510
|
+
stylesByLayout[unbrandHeaderLayoutId(layoutChoice.id)] = uniqueCompatibleHeaderStyleChoices(
|
|
12511
|
+
[...legacyStyleChoices, ...inferredStyleChoices],
|
|
12035
12512
|
layoutChoice.id
|
|
12036
12513
|
);
|
|
12037
12514
|
}
|
|
@@ -12088,7 +12565,11 @@ var curatedSiteStyles = [
|
|
|
12088
12565
|
motion: "subtle"
|
|
12089
12566
|
},
|
|
12090
12567
|
compositionBudget: quietBudget,
|
|
12091
|
-
recommendedHeaderLookIds: [
|
|
12568
|
+
recommendedHeaderLookIds: [
|
|
12569
|
+
"centered-calm",
|
|
12570
|
+
"minimal-transparent",
|
|
12571
|
+
"clean-base"
|
|
12572
|
+
],
|
|
12092
12573
|
buttonPersonalityChoices: [
|
|
12093
12574
|
buttonChoice("soft-pill"),
|
|
12094
12575
|
buttonChoice("pebble"),
|
|
@@ -12117,7 +12598,11 @@ var curatedSiteStyles = [
|
|
|
12117
12598
|
motion: "subtle"
|
|
12118
12599
|
},
|
|
12119
12600
|
compositionBudget: balancedBudget,
|
|
12120
|
-
recommendedHeaderLookIds: [
|
|
12601
|
+
recommendedHeaderLookIds: [
|
|
12602
|
+
"practical-utility",
|
|
12603
|
+
"brand-solid",
|
|
12604
|
+
"clean-base"
|
|
12605
|
+
],
|
|
12121
12606
|
buttonPersonalityChoices: [
|
|
12122
12607
|
buttonChoice("confident-chip"),
|
|
12123
12608
|
buttonChoice("soft-pill"),
|
|
@@ -12144,7 +12629,11 @@ var curatedSiteStyles = [
|
|
|
12144
12629
|
motion: "subtle"
|
|
12145
12630
|
},
|
|
12146
12631
|
compositionBudget: balancedBudget,
|
|
12147
|
-
recommendedHeaderLookIds: [
|
|
12632
|
+
recommendedHeaderLookIds: [
|
|
12633
|
+
"serif-line",
|
|
12634
|
+
"minimal-transparent",
|
|
12635
|
+
"centered-calm"
|
|
12636
|
+
],
|
|
12148
12637
|
buttonPersonalityChoices: [
|
|
12149
12638
|
buttonChoice("editorial-link"),
|
|
12150
12639
|
buttonChoice("soft-pill"),
|
|
@@ -12172,7 +12661,11 @@ var curatedSiteStyles = [
|
|
|
12172
12661
|
motion: "expressive"
|
|
12173
12662
|
},
|
|
12174
12663
|
compositionBudget: balancedBudget,
|
|
12175
|
-
recommendedHeaderLookIds: [
|
|
12664
|
+
recommendedHeaderLookIds: [
|
|
12665
|
+
"brand-solid",
|
|
12666
|
+
"practical-utility",
|
|
12667
|
+
"clean-base"
|
|
12668
|
+
],
|
|
12176
12669
|
buttonPersonalityChoices: [
|
|
12177
12670
|
buttonChoice("pebble"),
|
|
12178
12671
|
buttonChoice("brushed-wash"),
|
|
@@ -12189,7 +12682,10 @@ var curatedSiteStyles = [
|
|
|
12189
12682
|
name: "Quiet Luxury",
|
|
12190
12683
|
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
12191
12684
|
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
12192
|
-
siteCreatorSelection: {
|
|
12685
|
+
siteCreatorSelection: {
|
|
12686
|
+
kind: "site_creator_keyword_heuristic",
|
|
12687
|
+
priority: 20
|
|
12688
|
+
},
|
|
12193
12689
|
selectionKeywordRules: [
|
|
12194
12690
|
{ kind: "word", value: "luxury" },
|
|
12195
12691
|
{ kind: "word", value: "premium" },
|
|
@@ -12207,7 +12703,11 @@ var curatedSiteStyles = [
|
|
|
12207
12703
|
motion: "none"
|
|
12208
12704
|
},
|
|
12209
12705
|
compositionBudget: quietBudget,
|
|
12210
|
-
recommendedHeaderLookIds: [
|
|
12706
|
+
recommendedHeaderLookIds: [
|
|
12707
|
+
"minimal-transparent",
|
|
12708
|
+
"serif-line",
|
|
12709
|
+
"clean-base"
|
|
12710
|
+
],
|
|
12211
12711
|
buttonPersonalityChoices: [
|
|
12212
12712
|
buttonChoice("editorial-link"),
|
|
12213
12713
|
buttonChoice("confident-chip"),
|
|
@@ -12243,7 +12743,11 @@ var curatedSiteStyles = [
|
|
|
12243
12743
|
motion: "none"
|
|
12244
12744
|
},
|
|
12245
12745
|
compositionBudget: quietBudget,
|
|
12246
|
-
recommendedHeaderLookIds: [
|
|
12746
|
+
recommendedHeaderLookIds: [
|
|
12747
|
+
"practical-utility",
|
|
12748
|
+
"brand-solid",
|
|
12749
|
+
"clean-base"
|
|
12750
|
+
],
|
|
12247
12751
|
buttonPersonalityChoices: [
|
|
12248
12752
|
buttonChoice("confident-chip"),
|
|
12249
12753
|
buttonChoice("pebble"),
|
|
@@ -12270,7 +12774,11 @@ var curatedSiteStyles = [
|
|
|
12270
12774
|
motion: "subtle"
|
|
12271
12775
|
},
|
|
12272
12776
|
compositionBudget: balancedBudget,
|
|
12273
|
-
recommendedHeaderLookIds: [
|
|
12777
|
+
recommendedHeaderLookIds: [
|
|
12778
|
+
"centered-calm",
|
|
12779
|
+
"minimal-transparent",
|
|
12780
|
+
"clean-base"
|
|
12781
|
+
],
|
|
12274
12782
|
buttonPersonalityChoices: [
|
|
12275
12783
|
buttonChoice("soft-pill"),
|
|
12276
12784
|
buttonChoice("pebble"),
|
|
@@ -12287,7 +12795,10 @@ var curatedSiteStyles = [
|
|
|
12287
12795
|
name: "Quiet Practice",
|
|
12288
12796
|
description: "Grounded, calm, and practical for small appointment-first practices.",
|
|
12289
12797
|
generationBrief: "Make services, practitioner trust, preparation notes, and booking routes easy to scan. Keep the tone warm and specific, with quiet confidence rather than spa cliches or medical claims.",
|
|
12290
|
-
siteCreatorSelection: {
|
|
12798
|
+
siteCreatorSelection: {
|
|
12799
|
+
kind: "site_creator_keyword_heuristic",
|
|
12800
|
+
priority: 30
|
|
12801
|
+
},
|
|
12291
12802
|
selectionKeywordRules: [
|
|
12292
12803
|
{ kind: "substring", value: "massage" },
|
|
12293
12804
|
{ kind: "word", value: "bodywork" },
|
|
@@ -12308,7 +12819,11 @@ var curatedSiteStyles = [
|
|
|
12308
12819
|
motion: "subtle"
|
|
12309
12820
|
},
|
|
12310
12821
|
compositionBudget: quietBudget,
|
|
12311
|
-
recommendedHeaderLookIds: [
|
|
12822
|
+
recommendedHeaderLookIds: [
|
|
12823
|
+
"practical-utility",
|
|
12824
|
+
"clean-base",
|
|
12825
|
+
"centered-calm"
|
|
12826
|
+
],
|
|
12312
12827
|
buttonPersonalityChoices: [
|
|
12313
12828
|
buttonChoice("pebble"),
|
|
12314
12829
|
buttonChoice("soft-pill"),
|
|
@@ -12325,7 +12840,10 @@ var curatedSiteStyles = [
|
|
|
12325
12840
|
name: "Personal Retreat Journal",
|
|
12326
12841
|
description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
|
|
12327
12842
|
generationBrief: "Center the practitioner as the guide, then make private sessions, classes, retreats, and resources feel like clear pathways. Keep retreat copy grounded and practical, with enough editorial warmth for longer reading.",
|
|
12328
|
-
siteCreatorSelection: {
|
|
12843
|
+
siteCreatorSelection: {
|
|
12844
|
+
kind: "site_creator_keyword_heuristic",
|
|
12845
|
+
priority: 40
|
|
12846
|
+
},
|
|
12329
12847
|
selectionKeywordRules: [
|
|
12330
12848
|
{ kind: "substring", value: "retreat" },
|
|
12331
12849
|
{ kind: "phrase", value: "solo practitioner" },
|
|
@@ -12345,7 +12863,11 @@ var curatedSiteStyles = [
|
|
|
12345
12863
|
motion: "subtle"
|
|
12346
12864
|
},
|
|
12347
12865
|
compositionBudget: balancedBudget,
|
|
12348
|
-
recommendedHeaderLookIds: [
|
|
12866
|
+
recommendedHeaderLookIds: [
|
|
12867
|
+
"serif-line",
|
|
12868
|
+
"centered-calm",
|
|
12869
|
+
"minimal-transparent"
|
|
12870
|
+
],
|
|
12349
12871
|
buttonPersonalityChoices: [
|
|
12350
12872
|
buttonChoice("editorial-link"),
|
|
12351
12873
|
buttonChoice("soft-pill"),
|
|
@@ -12362,7 +12884,10 @@ var curatedSiteStyles = [
|
|
|
12362
12884
|
name: "Tactile Workshop",
|
|
12363
12885
|
description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
|
|
12364
12886
|
generationBrief: "Lead with objects, materials, studio process, and practical booking detail. Keep the tone warm and direct, with useful mess, clear dates, and enough gallery rhythm to feel like a real creative studio.",
|
|
12365
|
-
siteCreatorSelection: {
|
|
12887
|
+
siteCreatorSelection: {
|
|
12888
|
+
kind: "site_creator_keyword_heuristic",
|
|
12889
|
+
priority: 50
|
|
12890
|
+
},
|
|
12366
12891
|
selectionKeywordRules: [
|
|
12367
12892
|
{ kind: "substring", value: "ceramic" },
|
|
12368
12893
|
{ kind: "word", value: "pottery" },
|
|
@@ -12382,8 +12907,15 @@ var curatedSiteStyles = [
|
|
|
12382
12907
|
motion: "subtle"
|
|
12383
12908
|
},
|
|
12384
12909
|
compositionBudget: balancedBudget,
|
|
12385
|
-
recommendedHeaderLookIds: [
|
|
12386
|
-
|
|
12910
|
+
recommendedHeaderLookIds: [
|
|
12911
|
+
"brand-solid",
|
|
12912
|
+
"practical-utility",
|
|
12913
|
+
"clean-base"
|
|
12914
|
+
],
|
|
12915
|
+
recommendedFooterLookIds: [
|
|
12916
|
+
"site-footer-brand-two-band",
|
|
12917
|
+
"footer-muted-grounding"
|
|
12918
|
+
],
|
|
12387
12919
|
buttonPersonalityChoices: [
|
|
12388
12920
|
buttonChoice("pebble"),
|
|
12389
12921
|
buttonChoice("confident-chip"),
|
|
@@ -12398,11 +12930,14 @@ var curatedSiteStyles = [
|
|
|
12398
12930
|
]
|
|
12399
12931
|
}),
|
|
12400
12932
|
defineCuratedSiteStyle({
|
|
12401
|
-
id:
|
|
12933
|
+
id: SOFT_EARTH_SITE_STYLE_ID,
|
|
12402
12934
|
name: "Soft Earth",
|
|
12403
12935
|
description: "Warm, grounded, and editorial for yoga studios, retreats, and wellbeing communities.",
|
|
12404
|
-
generationBrief: "Use cream space, terracotta CTAs, olive
|
|
12405
|
-
siteCreatorSelection: {
|
|
12936
|
+
generationBrief: "Use cream space, terracotta CTAs, olive quote bands, natural imagery, generous but composed spacing, and editorial serif headings. Prefer a real intro section, image-led offering cards, warm community quotes, and an FAQ with a full-width intro above two columns of questions when content allows.",
|
|
12937
|
+
siteCreatorSelection: {
|
|
12938
|
+
kind: "site_creator_keyword_heuristic",
|
|
12939
|
+
priority: 45
|
|
12940
|
+
},
|
|
12406
12941
|
selectionKeywordRules: [
|
|
12407
12942
|
{ kind: "word", value: "meditation" },
|
|
12408
12943
|
{ kind: "word", value: "wellbeing" },
|
|
@@ -12468,18 +13003,29 @@ var curatedSiteStyles = [
|
|
|
12468
13003
|
paragraphSize: "default",
|
|
12469
13004
|
headingSize: "editorial"
|
|
12470
13005
|
}
|
|
12471
|
-
}
|
|
13006
|
+
},
|
|
13007
|
+
accordions: softEarthAccordionSystem
|
|
13008
|
+
},
|
|
13009
|
+
defaultBlockVariants: {
|
|
13010
|
+
"block.faq": "question-columns"
|
|
12472
13011
|
},
|
|
12473
13012
|
recommendedAppearancePresetIds: [
|
|
12474
13013
|
"hero-brand-scrim",
|
|
12475
|
-
"intro-
|
|
12476
|
-
"feature-cards-
|
|
12477
|
-
"
|
|
12478
|
-
"
|
|
13014
|
+
"intro-organic-statement",
|
|
13015
|
+
"feature-cards-raised-rule",
|
|
13016
|
+
"events-lined-panel",
|
|
13017
|
+
"testimonials-brand-background-quotes",
|
|
12479
13018
|
"contact-form-panel"
|
|
12480
13019
|
],
|
|
12481
|
-
recommendedHeaderLookIds: [
|
|
12482
|
-
|
|
13020
|
+
recommendedHeaderLookIds: [
|
|
13021
|
+
"centered-calm",
|
|
13022
|
+
"minimal-transparent",
|
|
13023
|
+
"serif-line"
|
|
13024
|
+
],
|
|
13025
|
+
recommendedFooterLookIds: [
|
|
13026
|
+
"footer-muted-grounding",
|
|
13027
|
+
"site-footer-brand-two-band"
|
|
13028
|
+
],
|
|
12483
13029
|
buttonPersonalityChoices: [
|
|
12484
13030
|
buttonChoice("earth-pill"),
|
|
12485
13031
|
buttonChoice("soft-pill"),
|
|
@@ -12498,7 +13044,10 @@ var curatedSiteStyles = [
|
|
|
12498
13044
|
name: "Bold Launch",
|
|
12499
13045
|
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
12500
13046
|
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
12501
|
-
siteCreatorSelection: {
|
|
13047
|
+
siteCreatorSelection: {
|
|
13048
|
+
kind: "site_creator_keyword_heuristic",
|
|
13049
|
+
priority: 10
|
|
13050
|
+
},
|
|
12502
13051
|
selectionKeywordRules: [
|
|
12503
13052
|
{ kind: "substring", value: "launch" },
|
|
12504
13053
|
{ kind: "substring", value: "campaign" },
|
|
@@ -12517,7 +13066,11 @@ var curatedSiteStyles = [
|
|
|
12517
13066
|
motion: "expressive"
|
|
12518
13067
|
},
|
|
12519
13068
|
compositionBudget: expressiveBudget,
|
|
12520
|
-
recommendedHeaderLookIds: [
|
|
13069
|
+
recommendedHeaderLookIds: [
|
|
13070
|
+
"transparent-overlay",
|
|
13071
|
+
"floating-glass",
|
|
13072
|
+
"brand-solid"
|
|
13073
|
+
],
|
|
12521
13074
|
buttonPersonalityChoices: [
|
|
12522
13075
|
buttonChoice("ink-stamp"),
|
|
12523
13076
|
buttonChoice("confident-chip"),
|
|
@@ -12565,11 +13118,18 @@ var curatedSiteStyles = [
|
|
|
12565
13118
|
"hero-brand-scrim-fixed-frame",
|
|
12566
13119
|
"body-text-editorial-intro",
|
|
12567
13120
|
"schedule-details-brand-depth",
|
|
12568
|
-
"testimonials-accent-quote-
|
|
13121
|
+
"testimonials-accent-quote-cards",
|
|
12569
13122
|
"contact-form-brand-depth-card"
|
|
12570
13123
|
],
|
|
12571
|
-
recommendedHeaderLookIds: [
|
|
12572
|
-
|
|
13124
|
+
recommendedHeaderLookIds: [
|
|
13125
|
+
"brand-solid",
|
|
13126
|
+
"transparent-overlay",
|
|
13127
|
+
"practical-utility"
|
|
13128
|
+
],
|
|
13129
|
+
recommendedFooterLookIds: [
|
|
13130
|
+
"site-footer-brand-two-band",
|
|
13131
|
+
"footer-muted-grounding"
|
|
13132
|
+
],
|
|
12573
13133
|
buttonPersonalityChoices: [
|
|
12574
13134
|
buttonChoice("showtime-pill"),
|
|
12575
13135
|
buttonChoice("confident-chip"),
|
|
@@ -12653,6 +13213,7 @@ var themeV2RuntimeStyleFieldNames = [
|
|
|
12653
13213
|
];
|
|
12654
13214
|
var themeV2BlockSpecificRawStyleFieldNames = [
|
|
12655
13215
|
"_contentCardStyles",
|
|
13216
|
+
"_heroLayoutStyles",
|
|
12656
13217
|
"_textCardStyles"
|
|
12657
13218
|
];
|
|
12658
13219
|
var themeV2NormalEditorRawStyleFieldNames = [
|
|
@@ -12662,6 +13223,10 @@ var themeV2NormalEditorRawStyleFieldNames = [
|
|
|
12662
13223
|
var themeV2NormalEditorRawStyleFieldNameSet = new Set(
|
|
12663
13224
|
themeV2NormalEditorRawStyleFieldNames
|
|
12664
13225
|
);
|
|
13226
|
+
var themeV2CompilerOwnedFieldNames = [
|
|
13227
|
+
...themeV2RuntimeStyleFieldNames,
|
|
13228
|
+
...themeV2BlockSpecificRawStyleFieldNames
|
|
13229
|
+
];
|
|
12665
13230
|
|
|
12666
13231
|
// ../theme-core/src/site-styles/designState.ts
|
|
12667
13232
|
var themeV2DesignStateSchemaVersion = 1;
|
|
@@ -12676,6 +13241,16 @@ var heroLegibilityStrategySchema = z23.enum([
|
|
|
12676
13241
|
"scrim-gradient",
|
|
12677
13242
|
"solid-panel"
|
|
12678
13243
|
]);
|
|
13244
|
+
var heroCompositionIntentSchema = z23.enum([
|
|
13245
|
+
"center",
|
|
13246
|
+
"bottom-left"
|
|
13247
|
+
]);
|
|
13248
|
+
var heroTypographyScaleIntentSchema = z23.enum([
|
|
13249
|
+
"quiet",
|
|
13250
|
+
"editorial",
|
|
13251
|
+
"display",
|
|
13252
|
+
"poster"
|
|
13253
|
+
]);
|
|
12679
13254
|
var sectionHeightIntentSchema = z23.enum([
|
|
12680
13255
|
"default",
|
|
12681
13256
|
"banner",
|
|
@@ -12711,6 +13286,7 @@ var imageSurfaceTreatmentSchema = z23.discriminatedUnion("kind", [
|
|
|
12711
13286
|
]);
|
|
12712
13287
|
var testimonialCardTreatmentSchema = z23.enum(["default", "accent-quote"]);
|
|
12713
13288
|
var tileTreatmentSchema = z23.enum(tileTreatmentValues);
|
|
13289
|
+
var eventListTreatmentSchema = z23.enum(eventListTreatmentValues);
|
|
12714
13290
|
var eyebrowTreatmentSchema = z23.enum(eyebrowTreatmentValues);
|
|
12715
13291
|
function uniqueNonEmpty(values) {
|
|
12716
13292
|
const uniqueValues = [...new Set(values)];
|
|
@@ -12752,10 +13328,13 @@ var blockDesignPlanSchema = z23.object({
|
|
|
12752
13328
|
emphasis: z23.enum(userDesignOptionCatalog.emphases),
|
|
12753
13329
|
sectionHeight: sectionHeightIntentSchema.optional(),
|
|
12754
13330
|
heroLegibility: heroLegibilityStrategySchema.optional(),
|
|
13331
|
+
heroComposition: heroCompositionIntentSchema.optional(),
|
|
13332
|
+
heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
|
|
12755
13333
|
imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
|
|
12756
13334
|
imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
|
|
12757
13335
|
testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
|
|
12758
13336
|
tileTreatment: tileTreatmentSchema.optional(),
|
|
13337
|
+
eventListTreatment: eventListTreatmentSchema.optional(),
|
|
12759
13338
|
eyebrowTreatment: eyebrowTreatmentSchema.optional()
|
|
12760
13339
|
}).strict();
|
|
12761
13340
|
var styleAuthoritySchema = z23.discriminatedUnion("kind", [
|
|
@@ -14155,6 +14734,7 @@ function styledSection(config) {
|
|
|
14155
14734
|
renderBackgroundImage = true,
|
|
14156
14735
|
backgroundImageLoading,
|
|
14157
14736
|
backgroundImageFetchPriority,
|
|
14737
|
+
allowOverflow = false,
|
|
14158
14738
|
fullWidthPath
|
|
14159
14739
|
} = config;
|
|
14160
14740
|
const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
|
|
@@ -14189,7 +14769,7 @@ function styledSection(config) {
|
|
|
14189
14769
|
// No fallback needed - transform handles all cases via defaultSpacing
|
|
14190
14770
|
}
|
|
14191
14771
|
},
|
|
14192
|
-
allowOverflow: {
|
|
14772
|
+
allowOverflow: allowOverflow ? true : {
|
|
14193
14773
|
$bind: {
|
|
14194
14774
|
from: `${bindFrom}.background`,
|
|
14195
14775
|
transforms: [{ id: "background.resolveAllowOverflow" }],
|
|
@@ -14873,6 +15453,14 @@ var tileTreatmentSet = new Set(tileTreatmentValues);
|
|
|
14873
15453
|
function isTileTreatment(value) {
|
|
14874
15454
|
return typeof value === "string" && tileTreatmentSet.has(value);
|
|
14875
15455
|
}
|
|
15456
|
+
var eventListTreatmentClassMap = {
|
|
15457
|
+
plain: "",
|
|
15458
|
+
"lined-panel": "rb-event-list-treatment-lined-panel"
|
|
15459
|
+
};
|
|
15460
|
+
var eventListTreatmentSet = new Set(eventListTreatmentValues);
|
|
15461
|
+
function isEventListTreatment(value) {
|
|
15462
|
+
return typeof value === "string" && eventListTreatmentSet.has(value);
|
|
15463
|
+
}
|
|
14876
15464
|
var sectionClassNameTransform = {
|
|
14877
15465
|
id: "sectionStyles.resolveClassName",
|
|
14878
15466
|
kind: "string",
|
|
@@ -14940,6 +15528,17 @@ var sectionClassNameTransform = {
|
|
|
14940
15528
|
`[sectionStyles] Invalid tileTreatment value in _sectionStyles: "${tileTreatment}". Expected one of: ${tileTreatmentValues.join(", ")}.`
|
|
14941
15529
|
);
|
|
14942
15530
|
}
|
|
15531
|
+
const eventListTreatment = input?.eventListTreatment;
|
|
15532
|
+
if (isEventListTreatment(eventListTreatment)) {
|
|
15533
|
+
const eventListTreatmentClass = eventListTreatmentClassMap[eventListTreatment];
|
|
15534
|
+
if (eventListTreatmentClass) {
|
|
15535
|
+
classes.push(eventListTreatmentClass);
|
|
15536
|
+
}
|
|
15537
|
+
} else if (typeof eventListTreatment === "string" && process.env.NODE_ENV !== "production") {
|
|
15538
|
+
console.warn(
|
|
15539
|
+
`[sectionStyles] Invalid eventListTreatment value in _sectionStyles: "${eventListTreatment}". Expected one of: ${eventListTreatmentValues.join(", ")}.`
|
|
15540
|
+
);
|
|
15541
|
+
}
|
|
14943
15542
|
if (hasFixedFrameBackgroundMotion(input)) {
|
|
14944
15543
|
classes.push(fixedFrameScopeClass);
|
|
14945
15544
|
}
|
|
@@ -15375,6 +15974,35 @@ function sectionState(opts) {
|
|
|
15375
15974
|
);
|
|
15376
15975
|
}
|
|
15377
15976
|
|
|
15977
|
+
// ../blocks/src/system/node/fragments/headingDecoration.ts
|
|
15978
|
+
var defaultBindFrom = "_sectionStyles.headingDecoration";
|
|
15979
|
+
function headingDecoration({
|
|
15980
|
+
bindFrom = defaultBindFrom,
|
|
15981
|
+
family,
|
|
15982
|
+
placement,
|
|
15983
|
+
className
|
|
15984
|
+
}) {
|
|
15985
|
+
return el(
|
|
15986
|
+
"div",
|
|
15987
|
+
{
|
|
15988
|
+
"aria-hidden": "true",
|
|
15989
|
+
className: {
|
|
15990
|
+
$bind: {
|
|
15991
|
+
from: bindFrom,
|
|
15992
|
+
transforms: [
|
|
15993
|
+
{
|
|
15994
|
+
id: "ui.headingDecorationClassName",
|
|
15995
|
+
options: { baseClass: className, family }
|
|
15996
|
+
}
|
|
15997
|
+
]
|
|
15998
|
+
}
|
|
15999
|
+
}
|
|
16000
|
+
},
|
|
16001
|
+
null,
|
|
16002
|
+
when(`${bindFrom}.placement`, { equals: placement })
|
|
16003
|
+
);
|
|
16004
|
+
}
|
|
16005
|
+
|
|
15378
16006
|
// ../blocks/src/system/fragments/types.ts
|
|
15379
16007
|
import { z as z27 } from "zod";
|
|
15380
16008
|
var FRAGMENT_ID_PATTERN = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/i;
|
|
@@ -16153,6 +16781,10 @@ var testimonialsHeadingFragment = defineFragment({
|
|
|
16153
16781
|
when("content.heading"),
|
|
16154
16782
|
bind("content.heading")
|
|
16155
16783
|
),
|
|
16784
|
+
headingDecoration({
|
|
16785
|
+
family: "short-center-rule",
|
|
16786
|
+
placement: "under-centered-heading"
|
|
16787
|
+
}),
|
|
16156
16788
|
text(
|
|
16157
16789
|
{
|
|
16158
16790
|
as: "p",
|
|
@@ -16824,6 +17456,41 @@ var faqHeadingFragment = defineFragment({
|
|
|
16824
17456
|
});
|
|
16825
17457
|
|
|
16826
17458
|
// ../blocks/src/system/fragments/library/faqAccordion.ts
|
|
17459
|
+
function createFaqAccordionLayout(options = {}) {
|
|
17460
|
+
return accordionList({
|
|
17461
|
+
collection: "content.items",
|
|
17462
|
+
itemName: "faqItem",
|
|
17463
|
+
indexName: "faqIndex",
|
|
17464
|
+
accordionProps: {
|
|
17465
|
+
className: options.rootClassName ?? "accordion-root",
|
|
17466
|
+
type: "single",
|
|
17467
|
+
collapsible: true
|
|
17468
|
+
},
|
|
17469
|
+
itemProps: {
|
|
17470
|
+
className: {
|
|
17471
|
+
$bind: {
|
|
17472
|
+
from: "content._cardStyles",
|
|
17473
|
+
transforms: [
|
|
17474
|
+
{
|
|
17475
|
+
id: "boxStyles.all",
|
|
17476
|
+
options: {
|
|
17477
|
+
axis: "all",
|
|
17478
|
+
includeSpacing: false,
|
|
17479
|
+
baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden"
|
|
17480
|
+
}
|
|
17481
|
+
}
|
|
17482
|
+
]
|
|
17483
|
+
},
|
|
17484
|
+
fallback: "rb-faq-item"
|
|
17485
|
+
},
|
|
17486
|
+
iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
|
|
17487
|
+
// Legacy theme accordion style
|
|
17488
|
+
iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
|
|
17489
|
+
},
|
|
17490
|
+
triggerFrom: "faqItem.question",
|
|
17491
|
+
contentFrom: "faqItem.answer"
|
|
17492
|
+
});
|
|
17493
|
+
}
|
|
16827
17494
|
var faqAccordionFragment = defineFragment({
|
|
16828
17495
|
id: "faqAccordion",
|
|
16829
17496
|
title: "FAQ Accordion",
|
|
@@ -16857,40 +17524,7 @@ var faqAccordionFragment = defineFragment({
|
|
|
16857
17524
|
}
|
|
16858
17525
|
}
|
|
16859
17526
|
],
|
|
16860
|
-
layout:
|
|
16861
|
-
collection: "content.items",
|
|
16862
|
-
itemName: "faqItem",
|
|
16863
|
-
indexName: "faqIndex",
|
|
16864
|
-
accordionProps: {
|
|
16865
|
-
className: "accordion-root",
|
|
16866
|
-
// CSS-first: all styling handled by theme CSS
|
|
16867
|
-
type: "single",
|
|
16868
|
-
collapsible: true
|
|
16869
|
-
},
|
|
16870
|
-
itemProps: {
|
|
16871
|
-
className: {
|
|
16872
|
-
$bind: {
|
|
16873
|
-
from: "content._cardStyles",
|
|
16874
|
-
transforms: [
|
|
16875
|
-
{
|
|
16876
|
-
id: "boxStyles.all",
|
|
16877
|
-
options: {
|
|
16878
|
-
axis: "all",
|
|
16879
|
-
includeSpacing: false,
|
|
16880
|
-
baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden rb-border"
|
|
16881
|
-
}
|
|
16882
|
-
}
|
|
16883
|
-
]
|
|
16884
|
-
},
|
|
16885
|
-
fallback: "rb-faq-item"
|
|
16886
|
-
},
|
|
16887
|
-
iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
|
|
16888
|
-
// Legacy theme accordion style
|
|
16889
|
-
iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
|
|
16890
|
-
},
|
|
16891
|
-
triggerFrom: "faqItem.question",
|
|
16892
|
-
contentFrom: "faqItem.answer"
|
|
16893
|
-
})
|
|
17527
|
+
layout: createFaqAccordionLayout()
|
|
16894
17528
|
});
|
|
16895
17529
|
|
|
16896
17530
|
// ../blocks/src/system/fragments/library/card.ts
|
|
@@ -17943,6 +18577,7 @@ var microLayout = styledSection({
|
|
|
17943
18577
|
function splitLayoutWith(children) {
|
|
17944
18578
|
return styledSection({
|
|
17945
18579
|
children: styledContainer({
|
|
18580
|
+
baseClassName: "rb-relative rb-isolate rb-overflow-visible",
|
|
17946
18581
|
children: {
|
|
17947
18582
|
type: "grid",
|
|
17948
18583
|
props: {
|
|
@@ -17967,6 +18602,7 @@ function splitLayoutWith(children) {
|
|
|
17967
18602
|
// The split variants render the image as a real grid column, so suppress
|
|
17968
18603
|
// the default absolute background image layer while keeping color/overlay.
|
|
17969
18604
|
renderBackgroundImage: false,
|
|
18605
|
+
allowOverflow: true,
|
|
17970
18606
|
baseClass: ""
|
|
17971
18607
|
});
|
|
17972
18608
|
}
|
|
@@ -18120,6 +18756,21 @@ function introHeading(className) {
|
|
|
18120
18756
|
bind("content.title")
|
|
18121
18757
|
);
|
|
18122
18758
|
}
|
|
18759
|
+
function introHeadingGroup(className) {
|
|
18760
|
+
return stack(
|
|
18761
|
+
{
|
|
18762
|
+
gap: "sm",
|
|
18763
|
+
className: "rb-intro-heading-group"
|
|
18764
|
+
},
|
|
18765
|
+
[
|
|
18766
|
+
introHeading(className),
|
|
18767
|
+
headingDecoration({
|
|
18768
|
+
family: "organic-squiggle",
|
|
18769
|
+
placement: "after-heading"
|
|
18770
|
+
})
|
|
18771
|
+
]
|
|
18772
|
+
);
|
|
18773
|
+
}
|
|
18123
18774
|
function introBody(className = "rb-prose rb-max-w-none") {
|
|
18124
18775
|
return richText({ className }, bind("content.body"));
|
|
18125
18776
|
}
|
|
@@ -18138,6 +18789,10 @@ function introCopyStack(options = {}) {
|
|
|
18138
18789
|
},
|
|
18139
18790
|
[
|
|
18140
18791
|
introHeading(options.headingClassName ?? "rb-intro-title"),
|
|
18792
|
+
headingDecoration({
|
|
18793
|
+
family: "organic-squiggle",
|
|
18794
|
+
placement: "after-heading"
|
|
18795
|
+
}),
|
|
18141
18796
|
introBody(options.bodyClassName),
|
|
18142
18797
|
introCtas(options.ctaJustify)
|
|
18143
18798
|
]
|
|
@@ -18177,7 +18832,7 @@ var statementCopyLayout = styledSection({
|
|
|
18177
18832
|
className: "rb-intro rb-intro-statement rb-grid rb-grid-cols-1 rb-gap-8 rb-md-grid-cols-2 rb-md-items-start"
|
|
18178
18833
|
},
|
|
18179
18834
|
[
|
|
18180
|
-
|
|
18835
|
+
introHeadingGroup("rb-intro-title rb-max-w-xl"),
|
|
18181
18836
|
stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
|
|
18182
18837
|
introBody(),
|
|
18183
18838
|
introCtas("start")
|
|
@@ -18198,7 +18853,7 @@ var statementMediaLayout = styledSection({
|
|
|
18198
18853
|
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"
|
|
18199
18854
|
},
|
|
18200
18855
|
[
|
|
18201
|
-
|
|
18856
|
+
introHeadingGroup("rb-intro-title rb-max-w-xl"),
|
|
18202
18857
|
stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
|
|
18203
18858
|
introBody(),
|
|
18204
18859
|
introCtas("start")
|
|
@@ -19200,6 +19855,9 @@ function isNodeDefinitionArray(layout) {
|
|
|
19200
19855
|
}
|
|
19201
19856
|
var headingLayout = fragmentLayoutNode(faqHeadingFragment.layout);
|
|
19202
19857
|
var accordionLayout = fragmentLayoutNode(faqAccordionFragment.layout);
|
|
19858
|
+
var questionColumnsAccordionLayout = createFaqAccordionLayout({
|
|
19859
|
+
rootClassName: "accordion-root rb-faq-question-columns rb-grid rb-grid-cols-1 rb-gap-4 rb-lg-grid-cols-2"
|
|
19860
|
+
});
|
|
19203
19861
|
var defaultLayout = styledSection({
|
|
19204
19862
|
children: styledContainer({
|
|
19205
19863
|
baseClassName: "rb-relative rb-isolate",
|
|
@@ -19213,11 +19871,24 @@ var twoColumnLayout = styledSection({
|
|
|
19213
19871
|
children: el(
|
|
19214
19872
|
"div",
|
|
19215
19873
|
{
|
|
19216
|
-
className: "rb-faq-
|
|
19874
|
+
className: "rb-faq-split-heading rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
|
|
19217
19875
|
},
|
|
19218
19876
|
[
|
|
19219
|
-
el("div", { className: "rb-faq-
|
|
19220
|
-
el("div", { className: "rb-faq-
|
|
19877
|
+
el("div", { className: "rb-faq-split-heading-copy" }, [headingLayout]),
|
|
19878
|
+
el("div", { className: "rb-faq-split-heading-accordion" }, [accordionLayout])
|
|
19879
|
+
]
|
|
19880
|
+
)
|
|
19881
|
+
}),
|
|
19882
|
+
baseClass: ""
|
|
19883
|
+
});
|
|
19884
|
+
var questionColumnsLayout = styledSection({
|
|
19885
|
+
children: styledContainer({
|
|
19886
|
+
baseClassName: "rb-relative rb-isolate",
|
|
19887
|
+
children: stack(
|
|
19888
|
+
{ gap: "xl", className: "rb-w-full" },
|
|
19889
|
+
[
|
|
19890
|
+
headingLayout,
|
|
19891
|
+
questionColumnsAccordionLayout
|
|
19221
19892
|
]
|
|
19222
19893
|
)
|
|
19223
19894
|
}),
|
|
@@ -19242,7 +19913,8 @@ var faqManifest = createBlockManifest({
|
|
|
19242
19913
|
layout: defaultLayout,
|
|
19243
19914
|
variants: {
|
|
19244
19915
|
default: defaultLayout,
|
|
19245
|
-
"two-column": twoColumnLayout
|
|
19916
|
+
"two-column": twoColumnLayout,
|
|
19917
|
+
"question-columns": questionColumnsLayout
|
|
19246
19918
|
},
|
|
19247
19919
|
defaultVariant: "default",
|
|
19248
19920
|
variantOptions: {
|
|
@@ -19253,6 +19925,10 @@ var faqManifest = createBlockManifest({
|
|
|
19253
19925
|
"two-column": {
|
|
19254
19926
|
label: "Two column",
|
|
19255
19927
|
description: "A left heading column with FAQ items on the right."
|
|
19928
|
+
},
|
|
19929
|
+
"question-columns": {
|
|
19930
|
+
label: "Question columns",
|
|
19931
|
+
description: "A full-width heading above FAQ items split into two columns."
|
|
19256
19932
|
}
|
|
19257
19933
|
},
|
|
19258
19934
|
description: "Accordion of frequently asked questions and answers.",
|
|
@@ -19374,9 +20050,21 @@ var eyebrowTreatmentClassMap = {
|
|
|
19374
20050
|
"accent-pill-bounce": "rb-eyebrow-treatment-pill rb-eyebrow-treatment-accent rb-eyebrow-treatment-pill-bounce"
|
|
19375
20051
|
};
|
|
19376
20052
|
var eyebrowTreatmentSet = new Set(eyebrowTreatmentValues);
|
|
20053
|
+
var headingDecorationFamilySet = new Set(visibleHeadingDecorationFamilyValues);
|
|
20054
|
+
var headingDecorationPlacementSet = new Set(visibleHeadingDecorationPlacementValues);
|
|
20055
|
+
var headingDecorationColorTokenSet = new Set(headingDecorationColorTokenValues);
|
|
19377
20056
|
function isEyebrowTreatment(value) {
|
|
19378
20057
|
return typeof value === "string" && eyebrowTreatmentSet.has(value);
|
|
19379
20058
|
}
|
|
20059
|
+
function isHeadingDecorationFamily(value) {
|
|
20060
|
+
return typeof value === "string" && headingDecorationFamilySet.has(value);
|
|
20061
|
+
}
|
|
20062
|
+
function isHeadingDecorationPlacement(value) {
|
|
20063
|
+
return typeof value === "string" && headingDecorationPlacementSet.has(value);
|
|
20064
|
+
}
|
|
20065
|
+
function isHeadingDecorationColorToken(value) {
|
|
20066
|
+
return typeof value === "string" && headingDecorationColorTokenSet.has(value);
|
|
20067
|
+
}
|
|
19380
20068
|
var imageGalleryCornerClassMap = {
|
|
19381
20069
|
none: "",
|
|
19382
20070
|
sm: "rb-rounded-sm",
|
|
@@ -19480,6 +20168,10 @@ var sectionStateToneTransform = {
|
|
|
19480
20168
|
summary: "Map semantic section-state kind to feedback tone",
|
|
19481
20169
|
run: (value) => sectionStateToneFromUnknown(value)
|
|
19482
20170
|
};
|
|
20171
|
+
var heroTitleLengthThresholds = {
|
|
20172
|
+
medium: { maxCharacters: 42, maxWords: 6 },
|
|
20173
|
+
long: { maxCharacters: 78, maxWords: 11 }
|
|
20174
|
+
};
|
|
19483
20175
|
function isPlainObject(value) {
|
|
19484
20176
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
19485
20177
|
}
|
|
@@ -19487,6 +20179,14 @@ function readString(obj, key) {
|
|
|
19487
20179
|
const v = obj[key];
|
|
19488
20180
|
return typeof v === "string" ? v : void 0;
|
|
19489
20181
|
}
|
|
20182
|
+
function resolveGeneratedHeroLayoutStyles(content) {
|
|
20183
|
+
const raw = content._heroLayoutStyles;
|
|
20184
|
+
return isPlainObject(raw) ? raw : null;
|
|
20185
|
+
}
|
|
20186
|
+
function readHeroLayoutString(content, generatedKey, fallbackKey = generatedKey) {
|
|
20187
|
+
const generated = resolveGeneratedHeroLayoutStyles(content);
|
|
20188
|
+
return generated && typeof generated[generatedKey] === "string" ? generated[generatedKey] : readString(content, fallbackKey);
|
|
20189
|
+
}
|
|
19490
20190
|
function resolveHeroVariant(content) {
|
|
19491
20191
|
const variant = readString(content, "variant");
|
|
19492
20192
|
if (variant && variant.trim()) return variant.trim();
|
|
@@ -19495,14 +20195,14 @@ function resolveHeroVariant(content) {
|
|
|
19495
20195
|
return null;
|
|
19496
20196
|
}
|
|
19497
20197
|
function resolveHeroContentAlignment(content) {
|
|
19498
|
-
const raw =
|
|
20198
|
+
const raw = readHeroLayoutString(content, "contentAlignment");
|
|
19499
20199
|
if (raw === "left" || raw === "center" || raw === "right") return raw;
|
|
19500
20200
|
const variant = resolveHeroVariant(content);
|
|
19501
20201
|
if (variant === "split" || variant === "splitReverse") return "left";
|
|
19502
20202
|
return "center";
|
|
19503
20203
|
}
|
|
19504
20204
|
function resolveHeroVerticalAlignment(content) {
|
|
19505
|
-
const raw =
|
|
20205
|
+
const raw = readHeroLayoutString(content, "verticalAlignment");
|
|
19506
20206
|
if (raw === "top" || raw === "center" || raw === "bottom") return raw;
|
|
19507
20207
|
const sectionStyles = asPartialObject(content._sectionStyles);
|
|
19508
20208
|
const minHeight = sectionStyles?.minHeight;
|
|
@@ -19512,11 +20212,29 @@ function resolveHeroVerticalAlignment(content) {
|
|
|
19512
20212
|
return "top";
|
|
19513
20213
|
}
|
|
19514
20214
|
function resolveHeroContentMaxWidth(content) {
|
|
19515
|
-
const raw =
|
|
20215
|
+
const raw = readHeroLayoutString(content, "contentMaxWidth");
|
|
19516
20216
|
if (raw === "default" || raw === "narrow" || raw === "medium" || raw === "wide")
|
|
19517
20217
|
return raw;
|
|
19518
20218
|
return "default";
|
|
19519
20219
|
}
|
|
20220
|
+
function resolveHeroTypographyScale(content) {
|
|
20221
|
+
const raw = readHeroLayoutString(
|
|
20222
|
+
content,
|
|
20223
|
+
"typographyScale",
|
|
20224
|
+
"heroTypographyScale"
|
|
20225
|
+
);
|
|
20226
|
+
if (raw === "quiet" || raw === "editorial" || raw === "display" || raw === "poster") {
|
|
20227
|
+
return raw;
|
|
20228
|
+
}
|
|
20229
|
+
return null;
|
|
20230
|
+
}
|
|
20231
|
+
function resolveHeroTitleLength(content) {
|
|
20232
|
+
const headline = readString(content, "headline")?.trim() ?? "";
|
|
20233
|
+
const wordCount = headline.length === 0 ? 0 : headline.split(/\s+/).length;
|
|
20234
|
+
if (headline.length > heroTitleLengthThresholds.long.maxCharacters || wordCount > heroTitleLengthThresholds.long.maxWords) return "long";
|
|
20235
|
+
if (headline.length > heroTitleLengthThresholds.medium.maxCharacters || wordCount > heroTitleLengthThresholds.medium.maxWords) return "medium";
|
|
20236
|
+
return "short";
|
|
20237
|
+
}
|
|
19520
20238
|
var heroContentWrapperClassSchema = z33.object({
|
|
19521
20239
|
base: z33.string().optional()
|
|
19522
20240
|
});
|
|
@@ -19529,6 +20247,8 @@ var heroContentWrapperClassTransform = {
|
|
|
19529
20247
|
const content = isPlainObject(value) ? value : isPlainObject(context.data) ? context.data : {};
|
|
19530
20248
|
const alignment = resolveHeroContentAlignment(content);
|
|
19531
20249
|
const maxWidth = resolveHeroContentMaxWidth(content);
|
|
20250
|
+
const typographyScale = resolveHeroTypographyScale(content);
|
|
20251
|
+
const titleLength = resolveHeroTitleLength(content);
|
|
19532
20252
|
const textAlignClass = alignment === "center" ? "rb-text-center" : alignment === "right" ? "rb-text-right" : "rb-text-left";
|
|
19533
20253
|
const maxWidthClass = maxWidth === "narrow" ? "rb-max-w-2xl" : maxWidth === "medium" ? "rb-max-w-3xl" : maxWidth === "wide" ? "rb-max-w-5xl" : "";
|
|
19534
20254
|
const positionClass = alignment === "center" ? "rb-mx-auto" : alignment === "right" ? "rb-ml-auto" : "";
|
|
@@ -19536,7 +20256,9 @@ var heroContentWrapperClassTransform = {
|
|
|
19536
20256
|
options?.base,
|
|
19537
20257
|
textAlignClass,
|
|
19538
20258
|
maxWidthClass,
|
|
19539
|
-
positionClass
|
|
20259
|
+
positionClass,
|
|
20260
|
+
typographyScale ? `rb-hero-typography-${typographyScale}` : "",
|
|
20261
|
+
`rb-hero-title-${titleLength}`
|
|
19540
20262
|
]);
|
|
19541
20263
|
}
|
|
19542
20264
|
};
|
|
@@ -19836,11 +20558,67 @@ var uiTransforms = [
|
|
|
19836
20558
|
const treatment = isEyebrowTreatment(value) ? value : "plain";
|
|
19837
20559
|
return joinClasses3([baseClass, eyebrowTreatmentClassMap[treatment]]);
|
|
19838
20560
|
}
|
|
20561
|
+
},
|
|
20562
|
+
{
|
|
20563
|
+
id: "ui.headingDecorationClassName",
|
|
20564
|
+
kind: "string",
|
|
20565
|
+
summary: "Apply constrained Theme V2 heading decoration classes",
|
|
20566
|
+
run: (value, options) => {
|
|
20567
|
+
const baseClass = typeof options?.baseClass === "string" && options.baseClass.trim() ? options.baseClass : "rb-heading-decoration";
|
|
20568
|
+
const decoration = asPartialObject(value);
|
|
20569
|
+
const family = isHeadingDecorationFamily(decoration?.family) ? decoration.family : null;
|
|
20570
|
+
const allowedFamily = isHeadingDecorationFamily(options?.family) ? options.family : null;
|
|
20571
|
+
const placement = isHeadingDecorationPlacement(decoration?.placement) ? decoration.placement : null;
|
|
20572
|
+
const colorToken = isHeadingDecorationColorToken(decoration?.colorToken) ? decoration.colorToken : "primary";
|
|
20573
|
+
if (!family || !placement) return "rb-hidden";
|
|
20574
|
+
if (allowedFamily && family !== allowedFamily) return "rb-hidden";
|
|
20575
|
+
return joinClasses3([
|
|
20576
|
+
baseClass,
|
|
20577
|
+
`rb-heading-decoration-${family}`,
|
|
20578
|
+
`rb-heading-decoration-placement-${placement}`,
|
|
20579
|
+
`rb-heading-decoration-color-${colorToken}`
|
|
20580
|
+
]);
|
|
20581
|
+
}
|
|
19839
20582
|
}
|
|
19840
20583
|
];
|
|
19841
20584
|
|
|
19842
20585
|
// ../blocks/src/system/transforms/registry/layout.ts
|
|
19843
20586
|
import { z as z34 } from "zod";
|
|
20587
|
+
|
|
20588
|
+
// ../theme-core/src/siteChromePlacement.ts
|
|
20589
|
+
var HEADER_POSITIONINGS = ["static", "sticky", "fixed"];
|
|
20590
|
+
function parseHeaderPositioning(value) {
|
|
20591
|
+
return isHeaderPositioning(value) ? value : "static";
|
|
20592
|
+
}
|
|
20593
|
+
function isHeaderPositioning(value) {
|
|
20594
|
+
return typeof value === "string" && HEADER_POSITIONINGS.includes(value);
|
|
20595
|
+
}
|
|
20596
|
+
function planSiteChromePlacement(positioning) {
|
|
20597
|
+
switch (positioning) {
|
|
20598
|
+
case "static":
|
|
20599
|
+
return {
|
|
20600
|
+
kind: "static",
|
|
20601
|
+
headerRootClassName: null,
|
|
20602
|
+
standaloneShellClassName: null
|
|
20603
|
+
};
|
|
20604
|
+
case "sticky":
|
|
20605
|
+
return {
|
|
20606
|
+
kind: "sticky",
|
|
20607
|
+
headerRootClassName: "rb-sticky rb-top-0",
|
|
20608
|
+
standaloneShellClassName: "sticky top-0 z-40 w-full"
|
|
20609
|
+
};
|
|
20610
|
+
case "fixed":
|
|
20611
|
+
return {
|
|
20612
|
+
kind: "fixed",
|
|
20613
|
+
headerRootClassName: "rb-fixed rb-top-0 rb-left-0 rb-right-0",
|
|
20614
|
+
standaloneShellClassName: "fixed left-0 right-0 top-0 z-40 w-full"
|
|
20615
|
+
};
|
|
20616
|
+
default:
|
|
20617
|
+
return assertNever(positioning);
|
|
20618
|
+
}
|
|
20619
|
+
}
|
|
20620
|
+
|
|
20621
|
+
// ../blocks/src/system/transforms/registry/layout.ts
|
|
19844
20622
|
var joinClasses4 = (parts) => parts.filter(
|
|
19845
20623
|
(part) => typeof part === "string" && part.trim().length > 0
|
|
19846
20624
|
).join(" ").replace(/\s+/g, " ").trim();
|
|
@@ -19956,32 +20734,35 @@ var headerRootClassTransform = {
|
|
|
19956
20734
|
...options
|
|
19957
20735
|
};
|
|
19958
20736
|
const content = asPartialObject(value) ?? {};
|
|
19959
|
-
const positioning =
|
|
20737
|
+
const positioning = parseHeaderPositioning(content.positioning);
|
|
20738
|
+
const placement = planSiteChromePlacement(positioning);
|
|
19960
20739
|
const shrinkOnScroll = Boolean(content.shrinkOnScroll);
|
|
19961
20740
|
const header = asPartialObject(value);
|
|
19962
20741
|
const visuals = resolveHeaderVisualStyles(header, context.theme);
|
|
19963
20742
|
const navContainerType = header?.navContainer?.type ?? "none";
|
|
19964
20743
|
const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
|
|
19965
20744
|
const backgroundClass = visuals.isTransparent || hasContainedNav ? "rb-bg-transparent" : null;
|
|
19966
|
-
const classes = [
|
|
19967
|
-
config.base,
|
|
19968
|
-
backgroundClass
|
|
19969
|
-
];
|
|
20745
|
+
const classes = [config.base, backgroundClass];
|
|
19970
20746
|
if (!hasContainedNav) {
|
|
19971
20747
|
if (config.blur) classes.push(config.blur);
|
|
19972
20748
|
if (config.blurSupport) classes.push(config.blurSupport);
|
|
19973
20749
|
}
|
|
19974
|
-
if (
|
|
20750
|
+
if (placement.kind === "sticky") {
|
|
19975
20751
|
classes.push(
|
|
19976
20752
|
visuals.isTransparent ? config.stickyTransparent : config.sticky
|
|
19977
20753
|
);
|
|
19978
|
-
} else if (
|
|
20754
|
+
} else if (placement.kind === "fixed") {
|
|
19979
20755
|
classes.push(config.fixed);
|
|
19980
20756
|
}
|
|
19981
|
-
if (shrinkOnScroll &&
|
|
20757
|
+
if (shrinkOnScroll && placement.kind !== "static") {
|
|
19982
20758
|
classes.push(config.shrink);
|
|
19983
20759
|
}
|
|
19984
|
-
const VALID_VARIANTS = [
|
|
20760
|
+
const VALID_VARIANTS = [
|
|
20761
|
+
"classic",
|
|
20762
|
+
"centered",
|
|
20763
|
+
"transparent",
|
|
20764
|
+
"floating"
|
|
20765
|
+
];
|
|
19985
20766
|
const variant = header?.variant;
|
|
19986
20767
|
if (variant && VALID_VARIANTS.includes(variant)) {
|
|
19987
20768
|
classes.push(`header-variant-${variant}`);
|
|
@@ -20505,6 +21286,10 @@ function desktopOnlyDisplay(display) {
|
|
|
20505
21286
|
return `rb-hidden ${LARGE_DISPLAY_CLASSES[display]}`;
|
|
20506
21287
|
}
|
|
20507
21288
|
|
|
21289
|
+
// ../theme-core/src/siteChromeOverlayClearance.ts
|
|
21290
|
+
var SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
|
|
21291
|
+
var SITE_CHROME_VISIBLE_HEADER_SELECTOR = `[${SITE_CHROME_VISIBLE_HEADER_ATTR}="true"]`;
|
|
21292
|
+
|
|
20508
21293
|
// ../blocks/src/system/blocks/site-header.ts
|
|
20509
21294
|
var logoRow = link(
|
|
20510
21295
|
{
|
|
@@ -20599,15 +21384,21 @@ var mobileCta = ctaButton({
|
|
|
20599
21384
|
var mobileToggleIcon = stack({ gap: "xs", className: "nav-mobile-icon" }, [
|
|
20600
21385
|
{
|
|
20601
21386
|
type: "div",
|
|
20602
|
-
props: {
|
|
21387
|
+
props: {
|
|
21388
|
+
className: "nav-mobile-bar nav-mobile-bar-top rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current"
|
|
21389
|
+
}
|
|
20603
21390
|
},
|
|
20604
21391
|
{
|
|
20605
21392
|
type: "div",
|
|
20606
|
-
props: {
|
|
21393
|
+
props: {
|
|
21394
|
+
className: "nav-mobile-bar nav-mobile-bar-middle rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current"
|
|
21395
|
+
}
|
|
20607
21396
|
},
|
|
20608
21397
|
{
|
|
20609
21398
|
type: "div",
|
|
20610
|
-
props: {
|
|
21399
|
+
props: {
|
|
21400
|
+
className: "nav-mobile-bar nav-mobile-bar-bottom rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current"
|
|
21401
|
+
}
|
|
20611
21402
|
}
|
|
20612
21403
|
]);
|
|
20613
21404
|
var mobileToggleButton = {
|
|
@@ -20771,6 +21562,7 @@ var transparentLayout = inline(
|
|
|
20771
21562
|
);
|
|
20772
21563
|
var floatingLayout = inline(
|
|
20773
21564
|
{
|
|
21565
|
+
[SITE_CHROME_VISIBLE_HEADER_ATTR]: "true",
|
|
20774
21566
|
className: bindProp("$root.theme.header.maxWidth", {
|
|
20775
21567
|
transforms: pipe(
|
|
20776
21568
|
tx("layout.maxWidthClass", {
|
|
@@ -20790,28 +21582,6 @@ var floatingLayout = inline(
|
|
|
20790
21582
|
],
|
|
20791
21583
|
when("$root.theme.header.variant", { equals: "floating" })
|
|
20792
21584
|
);
|
|
20793
|
-
var editorialLayout = stack(
|
|
20794
|
-
{
|
|
20795
|
-
gap: "md",
|
|
20796
|
-
align: "center",
|
|
20797
|
-
className: bindProp("$root.theme.header.maxWidth", {
|
|
20798
|
-
transforms: pipe(
|
|
20799
|
-
tx("layout.maxWidthClass", {
|
|
20800
|
-
base: `rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-flex-col rb-items-center rb-gap-6 rb-text-center`
|
|
20801
|
-
})
|
|
20802
|
-
),
|
|
20803
|
-
fallback: `rb-container rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-flex-col rb-items-center rb-gap-6 rb-text-center`
|
|
20804
|
-
})
|
|
20805
|
-
},
|
|
20806
|
-
[
|
|
20807
|
-
centeredLogoRow,
|
|
20808
|
-
createNavRow(
|
|
20809
|
-
`${desktopOnlyDisplay("flex")} rb-flex-wrap rb-justify-center rb-gap-x-8 rb-gap-y-3`,
|
|
20810
|
-
"center"
|
|
20811
|
-
)
|
|
20812
|
-
],
|
|
20813
|
-
when("$root.theme.header.variant", { equals: "editorial" })
|
|
20814
|
-
);
|
|
20815
21585
|
var headerLayout = headerSection(
|
|
20816
21586
|
{
|
|
20817
21587
|
background: bindProp("$root.theme.header", {
|
|
@@ -20825,10 +21595,7 @@ var headerLayout = headerSection(
|
|
|
20825
21595
|
}),
|
|
20826
21596
|
style: bindProp("$root.theme.header", {
|
|
20827
21597
|
transforms: pipe(tx("layout.headerRootStyle")),
|
|
20828
|
-
fallback: mergeStyles(
|
|
20829
|
-
textColorStyle("text"),
|
|
20830
|
-
borderColorStyle("border")
|
|
20831
|
-
)
|
|
21598
|
+
fallback: mergeStyles(textColorStyle("text"), borderColorStyle("border"))
|
|
20832
21599
|
})
|
|
20833
21600
|
},
|
|
20834
21601
|
[
|
|
@@ -20837,7 +21604,6 @@ var headerLayout = headerSection(
|
|
|
20837
21604
|
centeredLayout,
|
|
20838
21605
|
transparentLayout,
|
|
20839
21606
|
floatingLayout,
|
|
20840
|
-
editorialLayout,
|
|
20841
21607
|
mobileOverlay
|
|
20842
21608
|
],
|
|
20843
21609
|
props({
|
|
@@ -21742,6 +22508,10 @@ var sectionHeading = stack(
|
|
|
21742
22508
|
when("content.title"),
|
|
21743
22509
|
bind("content.title")
|
|
21744
22510
|
),
|
|
22511
|
+
headingDecoration({
|
|
22512
|
+
family: "short-center-rule",
|
|
22513
|
+
placement: "under-centered-heading"
|
|
22514
|
+
}),
|
|
21745
22515
|
richText(
|
|
21746
22516
|
{
|
|
21747
22517
|
className: "rb-feature-cards-description rb-prose rb-mx-auto rb-max-w-none",
|
|
@@ -24165,7 +24935,7 @@ var COLUMN_CLASSES = {
|
|
|
24165
24935
|
};
|
|
24166
24936
|
function getContainerClass(layout, columns) {
|
|
24167
24937
|
if (layout === "compact") {
|
|
24168
|
-
return "event-listing-compact-container rb-flex rb-flex-col
|
|
24938
|
+
return "event-listing-compact-container rb-flex rb-flex-col";
|
|
24169
24939
|
}
|
|
24170
24940
|
if (layout === "stack") {
|
|
24171
24941
|
return "rb-flex rb-flex-col rb-gap-6";
|
|
@@ -26993,6 +27763,7 @@ import { z as z53 } from "zod";
|
|
|
26993
27763
|
var storedProductCartItemSchema = z53.object({
|
|
26994
27764
|
kind: z53.literal("product"),
|
|
26995
27765
|
productId: z53.string().min(1),
|
|
27766
|
+
productCategoryId: z53.string().min(1).optional().nullable(),
|
|
26996
27767
|
variantId: z53.string().min(1).optional().nullable(),
|
|
26997
27768
|
title: z53.string().min(1),
|
|
26998
27769
|
variantTitle: z53.string().optional().nullable(),
|
|
@@ -29497,6 +30268,10 @@ var scheduleTileTreatments = [
|
|
|
29497
30268
|
"quiet",
|
|
29498
30269
|
"brand-depth"
|
|
29499
30270
|
];
|
|
30271
|
+
var eventListTreatments = [
|
|
30272
|
+
"plain",
|
|
30273
|
+
"lined-panel"
|
|
30274
|
+
];
|
|
29500
30275
|
function scheduleDetailsCapable() {
|
|
29501
30276
|
return declareBlockDesignCapability({
|
|
29502
30277
|
sectionSurfaces: "supported",
|
|
@@ -29505,6 +30280,14 @@ function scheduleDetailsCapable() {
|
|
|
29505
30280
|
tileTreatments: scheduleTileTreatments
|
|
29506
30281
|
});
|
|
29507
30282
|
}
|
|
30283
|
+
function eventListCapable() {
|
|
30284
|
+
return declareBlockDesignCapability({
|
|
30285
|
+
sectionSurfaces: "supported",
|
|
30286
|
+
contentFrames: ["plain"],
|
|
30287
|
+
itemSurfaces: "unsupported",
|
|
30288
|
+
eventListTreatments
|
|
30289
|
+
});
|
|
30290
|
+
}
|
|
29508
30291
|
function defaultBoundaryBias(visualWeight) {
|
|
29509
30292
|
return visualWeight === "featured" || visualWeight === "immersive" ? "clear" : "soft";
|
|
29510
30293
|
}
|
|
@@ -29724,7 +30507,8 @@ var systemBlockDefinitionsRaw = [
|
|
|
29724
30507
|
flow: bodyFlow,
|
|
29725
30508
|
layoutProfiles: [
|
|
29726
30509
|
layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
|
|
29727
|
-
layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" })
|
|
30510
|
+
layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
|
|
30511
|
+
layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
|
|
29728
30512
|
]
|
|
29729
30513
|
})),
|
|
29730
30514
|
withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
|
|
@@ -29818,11 +30602,11 @@ var systemBlockDefinitionsRaw = [
|
|
|
29818
30602
|
flow: offeringsFlow,
|
|
29819
30603
|
layoutProfiles: [layoutProfile({ variantKey: "default", family: "centered", weight: "featured" })]
|
|
29820
30604
|
})),
|
|
29821
|
-
withDesignCapability("block.event-listing", eventListingBlockDefinition,
|
|
30605
|
+
withDesignCapability("block.event-listing", eventListingBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
|
|
29822
30606
|
flow: offeringsFlow,
|
|
29823
30607
|
layoutProfiles: [layoutProfile({ variantKey: "default", family: "stack", weight: "standard" })]
|
|
29824
30608
|
})),
|
|
29825
|
-
withDesignCapability("block.event-calendar", eventCalendarBlockDefinition,
|
|
30609
|
+
withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
|
|
29826
30610
|
flow: offeringsFlow,
|
|
29827
30611
|
layoutProfiles: [
|
|
29828
30612
|
layoutProfile({ variantKey: "combined", family: "grid", weight: "standard" }),
|
|
@@ -30894,6 +31678,15 @@ ${root} {
|
|
|
30894
31678
|
`;
|
|
30895
31679
|
}
|
|
30896
31680
|
|
|
31681
|
+
// ../theme-core/src/runtime/themeCssVarNames.ts
|
|
31682
|
+
var THEME_RADIUS_CSS_VARS = {
|
|
31683
|
+
block: "--rb-block-radius",
|
|
31684
|
+
button: "--rb-button-radius",
|
|
31685
|
+
input: "--rb-input-radius",
|
|
31686
|
+
legacyCard: "--radius-card",
|
|
31687
|
+
legacyControl: "--radius-control"
|
|
31688
|
+
};
|
|
31689
|
+
|
|
30897
31690
|
// ../theme-core/src/blocks/vars/customer-portal.ts
|
|
30898
31691
|
function generateCustomerPortalVars({
|
|
30899
31692
|
themeId
|
|
@@ -30907,6 +31700,11 @@ ${root} {
|
|
|
30907
31700
|
--cp-muted: rgb(var(--tb-mutedText));
|
|
30908
31701
|
--cp-border: rgb(var(--tb-border));
|
|
30909
31702
|
--cp-shadow: var(--shadow-elev);
|
|
31703
|
+
--cp-primary: rgb(var(--tb-primary));
|
|
31704
|
+
--cp-primary-hover: rgb(var(--tb-primary-700, var(--tb-primary)));
|
|
31705
|
+
--cp-error: rgb(var(--tb-destructive));
|
|
31706
|
+
--cp-card-radius: var(${THEME_RADIUS_CSS_VARS.block}, var(${THEME_RADIUS_CSS_VARS.legacyCard}, 0.75rem));
|
|
31707
|
+
--cp-control-radius: var(${THEME_RADIUS_CSS_VARS.input}, var(${THEME_RADIUS_CSS_VARS.legacyControl}, 0.5rem));
|
|
30910
31708
|
|
|
30911
31709
|
/* Shared tab bar (underline style) */
|
|
30912
31710
|
--rb-tab-border-width: 1px;
|
|
@@ -30957,7 +31755,7 @@ ${root} {
|
|
|
30957
31755
|
--rb-modal-bg: var(--cp-card-bg);
|
|
30958
31756
|
--rb-modal-border: var(--cp-card-border);
|
|
30959
31757
|
--rb-modal-shadow: var(--shadow-lg, var(--shadow-elev));
|
|
30960
|
-
--rb-modal-radius: var(--
|
|
31758
|
+
--rb-modal-radius: var(--cp-card-radius);
|
|
30961
31759
|
--rb-modal-max-width: 560px;
|
|
30962
31760
|
|
|
30963
31761
|
/* Header */
|
|
@@ -32338,6 +33136,9 @@ import { jsx as jsx5 } from "react/jsx-runtime";
|
|
|
32338
33136
|
import * as React from "react";
|
|
32339
33137
|
import { Fragment, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
32340
33138
|
|
|
33139
|
+
// ../theme-core/src/fonts/uploadFormat.ts
|
|
33140
|
+
var MAX_FONT_UPLOAD_BYTES = 5 * 1024 * 1024;
|
|
33141
|
+
|
|
32341
33142
|
// ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
|
|
32342
33143
|
import { z as z60 } from "zod";
|
|
32343
33144
|
var themeBridgeConfigSchema = z60.object({
|
|
@@ -32784,6 +33585,7 @@ var COURSE_ENROLLMENT_REFUND_FAILED_CODES = [
|
|
|
32784
33585
|
];
|
|
32785
33586
|
|
|
32786
33587
|
// ../api/src/bookingVerticals.ts
|
|
33588
|
+
import { z as z63 } from "zod";
|
|
32787
33589
|
var VERTICAL_IDS = [
|
|
32788
33590
|
"yoga_wellness",
|
|
32789
33591
|
"fitness_pt",
|
|
@@ -32862,6 +33664,132 @@ var VERTICAL_ID_SET = new Set(VERTICAL_IDS);
|
|
|
32862
33664
|
var VERTICAL_PRESET_ID_SET = new Set(
|
|
32863
33665
|
VERTICAL_BOOKING_PRESETS.map((presetDefinition) => presetDefinition.id)
|
|
32864
33666
|
);
|
|
33667
|
+
function parseVerticalId(value) {
|
|
33668
|
+
return typeof value === "string" && VERTICAL_ID_SET.has(value) ? value : null;
|
|
33669
|
+
}
|
|
33670
|
+
function parseVerticalPresetId(value) {
|
|
33671
|
+
return typeof value === "string" && VERTICAL_PRESET_ID_SET.has(value) ? value : null;
|
|
33672
|
+
}
|
|
33673
|
+
function getVerticalPresetDefinition(presetId) {
|
|
33674
|
+
const definition = VERTICAL_BOOKING_PRESETS.find((presetDefinition) => presetDefinition.id === presetId);
|
|
33675
|
+
if (!definition) {
|
|
33676
|
+
throw new Error(`Unhandled vertical preset id: ${presetId}`);
|
|
33677
|
+
}
|
|
33678
|
+
return definition;
|
|
33679
|
+
}
|
|
33680
|
+
function toNonEmptyVerticalPresetIds(presetIds) {
|
|
33681
|
+
const firstPresetId = presetIds[0];
|
|
33682
|
+
return firstPresetId ? [firstPresetId, ...presetIds.slice(1)] : null;
|
|
33683
|
+
}
|
|
33684
|
+
function createConfiguredSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
|
|
33685
|
+
return {
|
|
33686
|
+
verticalId,
|
|
33687
|
+
selectedPresetIds
|
|
33688
|
+
};
|
|
33689
|
+
}
|
|
33690
|
+
function createSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
|
|
33691
|
+
const nonEmptyPresetIds = toNonEmptyVerticalPresetIds(selectedPresetIds);
|
|
33692
|
+
return nonEmptyPresetIds ? createConfiguredSiteVerticalBookingConfig(verticalId, nonEmptyPresetIds) : null;
|
|
33693
|
+
}
|
|
33694
|
+
function resolveSiteVerticalBookingConfig(rawConfig) {
|
|
33695
|
+
if (!rawConfig) {
|
|
33696
|
+
return { kind: "unconfigured", config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG };
|
|
33697
|
+
}
|
|
33698
|
+
const verticalId = parseVerticalId(rawConfig.verticalId);
|
|
33699
|
+
const rawPresetIds = Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : [];
|
|
33700
|
+
const selectedPresetIds = rawPresetIds.map(parseVerticalPresetId).filter((presetId) => Boolean(presetId));
|
|
33701
|
+
const config = {
|
|
33702
|
+
verticalId,
|
|
33703
|
+
selectedPresetIds
|
|
33704
|
+
};
|
|
33705
|
+
if (!verticalId && selectedPresetIds.length === 0) {
|
|
33706
|
+
return { kind: "unconfigured", config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG };
|
|
33707
|
+
}
|
|
33708
|
+
const issues = getSiteVerticalConfigIssues(rawConfig, config);
|
|
33709
|
+
if (issues.length > 0) {
|
|
33710
|
+
return { kind: "invalid", config, issues };
|
|
33711
|
+
}
|
|
33712
|
+
const configuredConfig = verticalId ? createSiteVerticalBookingConfig(verticalId, selectedPresetIds) : null;
|
|
33713
|
+
if (!configuredConfig) {
|
|
33714
|
+
return { kind: "invalid", config, issues: ["empty_selected_presets"] };
|
|
33715
|
+
}
|
|
33716
|
+
return {
|
|
33717
|
+
kind: "configured",
|
|
33718
|
+
config: configuredConfig,
|
|
33719
|
+
selectedPresets: configuredConfig.selectedPresetIds.map(getVerticalPresetDefinition)
|
|
33720
|
+
};
|
|
33721
|
+
}
|
|
33722
|
+
function getSiteVerticalConfigIssues(rawConfig, config) {
|
|
33723
|
+
const issues = /* @__PURE__ */ new Set();
|
|
33724
|
+
if (rawConfig.verticalId != null && !config.verticalId) {
|
|
33725
|
+
issues.add("unknown_vertical");
|
|
33726
|
+
}
|
|
33727
|
+
if (!config.verticalId && config.selectedPresetIds.length > 0) {
|
|
33728
|
+
issues.add("missing_vertical");
|
|
33729
|
+
}
|
|
33730
|
+
const rawPresetIds = Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : [];
|
|
33731
|
+
if (rawPresetIds.some((presetId) => parseVerticalPresetId(presetId) === null)) {
|
|
33732
|
+
issues.add("unknown_preset");
|
|
33733
|
+
}
|
|
33734
|
+
if (config.verticalId && config.selectedPresetIds.length === 0) {
|
|
33735
|
+
issues.add("empty_selected_presets");
|
|
33736
|
+
}
|
|
33737
|
+
const seenBehaviours = /* @__PURE__ */ new Set();
|
|
33738
|
+
for (const presetId of config.selectedPresetIds) {
|
|
33739
|
+
const presetDefinition = getVerticalPresetDefinition(presetId);
|
|
33740
|
+
if (config.verticalId && presetDefinition.verticalId !== config.verticalId) {
|
|
33741
|
+
issues.add("preset_vertical_mismatch");
|
|
33742
|
+
}
|
|
33743
|
+
if (presetDefinition.availability === "future") {
|
|
33744
|
+
issues.add("future_preset_selected");
|
|
33745
|
+
}
|
|
33746
|
+
if (seenBehaviours.has(presetDefinition.canonicalBehaviour)) {
|
|
33747
|
+
issues.add("duplicate_canonical_behaviour");
|
|
33748
|
+
}
|
|
33749
|
+
seenBehaviours.add(presetDefinition.canonicalBehaviour);
|
|
33750
|
+
}
|
|
33751
|
+
return [...issues];
|
|
33752
|
+
}
|
|
33753
|
+
var VerticalIdSchema = z63.string().trim().transform((value, ctx) => {
|
|
33754
|
+
const parsed = parseVerticalId(value);
|
|
33755
|
+
if (!parsed) {
|
|
33756
|
+
ctx.addIssue({
|
|
33757
|
+
code: z63.ZodIssueCode.custom,
|
|
33758
|
+
message: "Unknown booking vertical"
|
|
33759
|
+
});
|
|
33760
|
+
return z63.NEVER;
|
|
33761
|
+
}
|
|
33762
|
+
return parsed;
|
|
33763
|
+
});
|
|
33764
|
+
var VerticalPresetIdSchema = z63.string().trim().transform((value, ctx) => {
|
|
33765
|
+
const parsed = parseVerticalPresetId(value);
|
|
33766
|
+
if (!parsed) {
|
|
33767
|
+
ctx.addIssue({
|
|
33768
|
+
code: z63.ZodIssueCode.custom,
|
|
33769
|
+
message: "Unknown booking preset"
|
|
33770
|
+
});
|
|
33771
|
+
return z63.NEVER;
|
|
33772
|
+
}
|
|
33773
|
+
return parsed;
|
|
33774
|
+
});
|
|
33775
|
+
var BookingVerticalConfigSchema = z63.object({
|
|
33776
|
+
verticalId: VerticalIdSchema.nullable(),
|
|
33777
|
+
selectedPresetIds: z63.array(VerticalPresetIdSchema).max(20)
|
|
33778
|
+
}).transform((value, ctx) => {
|
|
33779
|
+
const resolved = resolveSiteVerticalBookingConfig(value);
|
|
33780
|
+
if (resolved.kind === "invalid") {
|
|
33781
|
+
ctx.addIssue({
|
|
33782
|
+
code: z63.ZodIssueCode.custom,
|
|
33783
|
+
message: `Invalid booking vertical config: ${resolved.issues.join(", ")}`
|
|
33784
|
+
});
|
|
33785
|
+
return z63.NEVER;
|
|
33786
|
+
}
|
|
33787
|
+
return resolved.config;
|
|
33788
|
+
});
|
|
33789
|
+
var DEFAULT_SITE_VERTICAL_BOOKING_CONFIG = {
|
|
33790
|
+
verticalId: null,
|
|
33791
|
+
selectedPresetIds: []
|
|
33792
|
+
};
|
|
32865
33793
|
function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, description, availability = "onboarding") {
|
|
32866
33794
|
return {
|
|
32867
33795
|
id,
|
|
@@ -32881,51 +33809,51 @@ function isRecord3(value) {
|
|
|
32881
33809
|
}
|
|
32882
33810
|
|
|
32883
33811
|
// ../api/src/appointmentSetup.ts
|
|
32884
|
-
import { z as
|
|
33812
|
+
import { z as z64 } from "zod";
|
|
32885
33813
|
var APPOINTMENT_SETUP_MAX_MINUTES = 1440;
|
|
32886
|
-
var appointmentSetupRefSchema =
|
|
32887
|
-
|
|
32888
|
-
|
|
33814
|
+
var appointmentSetupRefSchema = z64.discriminatedUnion("kind", [
|
|
33815
|
+
z64.object({ kind: z64.literal("existing"), id: z64.string().min(1) }),
|
|
33816
|
+
z64.object({ kind: z64.literal("new"), draftId: z64.string().min(1) })
|
|
32889
33817
|
]);
|
|
32890
|
-
var appointmentSetupVenueChoiceSchema =
|
|
32891
|
-
|
|
32892
|
-
|
|
32893
|
-
|
|
32894
|
-
kind:
|
|
32895
|
-
draftId:
|
|
32896
|
-
title:
|
|
32897
|
-
description:
|
|
32898
|
-
timezone:
|
|
32899
|
-
addressJson:
|
|
32900
|
-
locationJson:
|
|
33818
|
+
var appointmentSetupVenueChoiceSchema = z64.discriminatedUnion("kind", [
|
|
33819
|
+
z64.object({ kind: z64.literal("none") }),
|
|
33820
|
+
z64.object({ kind: z64.literal("existing"), venueId: z64.string().min(1) }),
|
|
33821
|
+
z64.object({
|
|
33822
|
+
kind: z64.literal("create"),
|
|
33823
|
+
draftId: z64.string().min(1),
|
|
33824
|
+
title: z64.string().trim().min(1),
|
|
33825
|
+
description: z64.string().nullable(),
|
|
33826
|
+
timezone: z64.string().trim().min(1).nullable(),
|
|
33827
|
+
addressJson: z64.record(z64.string(), z64.unknown()),
|
|
33828
|
+
locationJson: z64.object({ lat: z64.number(), lng: z64.number() }).nullable()
|
|
32901
33829
|
})
|
|
32902
33830
|
]);
|
|
32903
|
-
var appointmentSetupPaymentDraftSchema =
|
|
32904
|
-
priceType:
|
|
32905
|
-
});
|
|
32906
|
-
var appointmentSetupServiceAssignmentDraftSchema =
|
|
32907
|
-
|
|
32908
|
-
|
|
32909
|
-
kind:
|
|
32910
|
-
resourceRefs:
|
|
33831
|
+
var appointmentSetupPaymentDraftSchema = z64.object({
|
|
33832
|
+
priceType: z64.union([z64.literal("free"), z64.literal("paid")])
|
|
33833
|
+
});
|
|
33834
|
+
var appointmentSetupServiceAssignmentDraftSchema = z64.discriminatedUnion("kind", [
|
|
33835
|
+
z64.object({ kind: z64.literal("all_practitioners") }),
|
|
33836
|
+
z64.object({
|
|
33837
|
+
kind: z64.literal("selected_practitioners"),
|
|
33838
|
+
resourceRefs: z64.array(appointmentSetupRefSchema)
|
|
32911
33839
|
})
|
|
32912
33840
|
]);
|
|
32913
|
-
var appointmentSetupServiceDraftSchema =
|
|
33841
|
+
var appointmentSetupServiceDraftSchema = z64.object({
|
|
32914
33842
|
ref: appointmentSetupRefSchema,
|
|
32915
|
-
title:
|
|
32916
|
-
description:
|
|
32917
|
-
durationMinutes:
|
|
32918
|
-
prepMinutes:
|
|
32919
|
-
cleanupMinutes:
|
|
32920
|
-
priceAmount:
|
|
32921
|
-
isActive:
|
|
32922
|
-
locationType:
|
|
32923
|
-
|
|
32924
|
-
|
|
32925
|
-
|
|
33843
|
+
title: z64.string().trim().min(1),
|
|
33844
|
+
description: z64.string().nullable(),
|
|
33845
|
+
durationMinutes: z64.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
|
|
33846
|
+
prepMinutes: z64.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
|
|
33847
|
+
cleanupMinutes: z64.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
|
|
33848
|
+
priceAmount: z64.number().int().nonnegative().nullable(),
|
|
33849
|
+
isActive: z64.boolean(),
|
|
33850
|
+
locationType: z64.union([
|
|
33851
|
+
z64.literal("virtual"),
|
|
33852
|
+
z64.literal("in_person"),
|
|
33853
|
+
z64.literal("hybrid")
|
|
32926
33854
|
]),
|
|
32927
33855
|
venue: appointmentSetupVenueChoiceSchema,
|
|
32928
|
-
timezone:
|
|
33856
|
+
timezone: z64.string().trim().min(1).nullable(),
|
|
32929
33857
|
payment: appointmentSetupPaymentDraftSchema,
|
|
32930
33858
|
assignment: appointmentSetupServiceAssignmentDraftSchema
|
|
32931
33859
|
}).superRefine((service, ctx) => {
|
|
@@ -32944,49 +33872,49 @@ var appointmentSetupServiceDraftSchema = z63.object({
|
|
|
32944
33872
|
});
|
|
32945
33873
|
}
|
|
32946
33874
|
});
|
|
32947
|
-
var appointmentSetupPractitionerDraftSchema =
|
|
33875
|
+
var appointmentSetupPractitionerDraftSchema = z64.object({
|
|
32948
33876
|
ref: appointmentSetupRefSchema,
|
|
32949
|
-
displayName:
|
|
32950
|
-
bio:
|
|
32951
|
-
timezone:
|
|
32952
|
-
colorHex:
|
|
32953
|
-
});
|
|
32954
|
-
var appointmentSetupWeeklyWindowDraftSchema =
|
|
32955
|
-
weekday:
|
|
32956
|
-
startTime:
|
|
32957
|
-
endTime:
|
|
32958
|
-
});
|
|
32959
|
-
var appointmentSetupStartTimePolicyDraftSchema =
|
|
32960
|
-
|
|
32961
|
-
|
|
32962
|
-
kind:
|
|
32963
|
-
intervalMinutes:
|
|
32964
|
-
|
|
32965
|
-
|
|
32966
|
-
|
|
32967
|
-
|
|
32968
|
-
|
|
32969
|
-
|
|
33877
|
+
displayName: z64.string().trim().min(1),
|
|
33878
|
+
bio: z64.string().nullable(),
|
|
33879
|
+
timezone: z64.string().trim().min(1),
|
|
33880
|
+
colorHex: z64.string().nullable()
|
|
33881
|
+
});
|
|
33882
|
+
var appointmentSetupWeeklyWindowDraftSchema = z64.object({
|
|
33883
|
+
weekday: z64.number().int().min(0).max(6),
|
|
33884
|
+
startTime: z64.string(),
|
|
33885
|
+
endTime: z64.string()
|
|
33886
|
+
});
|
|
33887
|
+
var appointmentSetupStartTimePolicyDraftSchema = z64.discriminatedUnion("kind", [
|
|
33888
|
+
z64.object({ kind: z64.literal("automatic_spacing") }),
|
|
33889
|
+
z64.object({
|
|
33890
|
+
kind: z64.literal("regular_interval"),
|
|
33891
|
+
intervalMinutes: z64.union([
|
|
33892
|
+
z64.literal(10),
|
|
33893
|
+
z64.literal(15),
|
|
33894
|
+
z64.literal(20),
|
|
33895
|
+
z64.literal(30),
|
|
33896
|
+
z64.literal(45),
|
|
33897
|
+
z64.literal(60)
|
|
32970
33898
|
])
|
|
32971
33899
|
})
|
|
32972
33900
|
]);
|
|
32973
|
-
var appointmentSetupAvailabilityDraftSchema =
|
|
32974
|
-
kind:
|
|
33901
|
+
var appointmentSetupAvailabilityDraftSchema = z64.object({
|
|
33902
|
+
kind: z64.literal("weekly_windows"),
|
|
32975
33903
|
resourceRef: appointmentSetupRefSchema,
|
|
32976
33904
|
serviceRef: appointmentSetupRefSchema.nullable(),
|
|
32977
|
-
windows:
|
|
33905
|
+
windows: z64.array(appointmentSetupWeeklyWindowDraftSchema),
|
|
32978
33906
|
startTimePolicy: appointmentSetupStartTimePolicyDraftSchema.optional()
|
|
32979
33907
|
});
|
|
32980
33908
|
var APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
|
|
32981
33909
|
var APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
|
|
32982
|
-
var appointmentSetupBookingNoticeSchema =
|
|
32983
|
-
minLeadMinutes:
|
|
32984
|
-
maxBookingNoticeMinutes:
|
|
32985
|
-
});
|
|
32986
|
-
var applyAppointmentSetupRequestSchema =
|
|
32987
|
-
services:
|
|
32988
|
-
practitioners:
|
|
32989
|
-
availability:
|
|
33910
|
+
var appointmentSetupBookingNoticeSchema = z64.object({
|
|
33911
|
+
minLeadMinutes: z64.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
|
|
33912
|
+
maxBookingNoticeMinutes: z64.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
|
|
33913
|
+
});
|
|
33914
|
+
var applyAppointmentSetupRequestSchema = z64.object({
|
|
33915
|
+
services: z64.array(appointmentSetupServiceDraftSchema),
|
|
33916
|
+
practitioners: z64.array(appointmentSetupPractitionerDraftSchema),
|
|
33917
|
+
availability: z64.array(appointmentSetupAvailabilityDraftSchema),
|
|
32990
33918
|
bookingNotice: appointmentSetupBookingNoticeSchema
|
|
32991
33919
|
});
|
|
32992
33920
|
|
|
@@ -33019,24 +33947,24 @@ var STAFF_CANCELLATION_CONTEXT_CATEGORIES = [
|
|
|
33019
33947
|
];
|
|
33020
33948
|
|
|
33021
33949
|
// ../api/src/siteBanner.ts
|
|
33022
|
-
import { z as
|
|
33950
|
+
import { z as z65 } from "zod";
|
|
33023
33951
|
var SITE_BANNER_SCOPE_VALUES = ["homepage", "all-pages"];
|
|
33024
33952
|
var SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
|
|
33025
33953
|
var SITE_BANNER_MAX_TEXT_LENGTH = 320;
|
|
33026
33954
|
var SITE_BANNER_MAX_PARAGRAPHS = 2;
|
|
33027
|
-
var siteBannerScopeSchema =
|
|
33028
|
-
var siteBannerToneSchema =
|
|
33029
|
-
var siteBannerBodySchema =
|
|
33030
|
-
var siteBannerCtaSchema =
|
|
33031
|
-
label:
|
|
33955
|
+
var siteBannerScopeSchema = z65.enum(SITE_BANNER_SCOPE_VALUES);
|
|
33956
|
+
var siteBannerToneSchema = z65.enum(SITE_BANNER_TONE_VALUES);
|
|
33957
|
+
var siteBannerBodySchema = z65.unknown().transform(unwrapRichTextValue);
|
|
33958
|
+
var siteBannerCtaSchema = z65.object({
|
|
33959
|
+
label: z65.string().trim().min(1),
|
|
33032
33960
|
link: linkPayloadSchema
|
|
33033
33961
|
});
|
|
33034
|
-
var siteBannerSettingsSchema =
|
|
33035
|
-
|
|
33036
|
-
enabled:
|
|
33962
|
+
var siteBannerSettingsSchema = z65.discriminatedUnion("enabled", [
|
|
33963
|
+
z65.object({
|
|
33964
|
+
enabled: z65.literal(false)
|
|
33037
33965
|
}),
|
|
33038
|
-
|
|
33039
|
-
enabled:
|
|
33966
|
+
z65.object({
|
|
33967
|
+
enabled: z65.literal(true),
|
|
33040
33968
|
scope: siteBannerScopeSchema,
|
|
33041
33969
|
tone: siteBannerToneSchema,
|
|
33042
33970
|
body: siteBannerBodySchema,
|
|
@@ -33050,7 +33978,7 @@ var siteBannerSettingsInputSchema = siteBannerSettingsSchema.superRefine((value,
|
|
|
33050
33978
|
const analysis = analyzeSiteBannerBody(value.body);
|
|
33051
33979
|
for (const issue of analysis.issues) {
|
|
33052
33980
|
ctx.addIssue({
|
|
33053
|
-
code:
|
|
33981
|
+
code: z65.ZodIssueCode.custom,
|
|
33054
33982
|
path: ["body"],
|
|
33055
33983
|
message: siteBannerBodyIssueMessage(issue)
|
|
33056
33984
|
});
|
|
@@ -33318,76 +34246,109 @@ function isNavigationMenuValidationItem(value) {
|
|
|
33318
34246
|
return typeof value.label === "string";
|
|
33319
34247
|
}
|
|
33320
34248
|
|
|
34249
|
+
// ../api/src/navigation/dashboardSiteNav.ts
|
|
34250
|
+
var hiddenDemoSiteNavSurfaceIds = [
|
|
34251
|
+
"site.newsletter"
|
|
34252
|
+
];
|
|
34253
|
+
var hiddenDemoSiteNavIds = new Set(
|
|
34254
|
+
hiddenDemoSiteNavSurfaceIds
|
|
34255
|
+
);
|
|
34256
|
+
var websiteSurfaceIds = [
|
|
34257
|
+
"site.content",
|
|
34258
|
+
"site.footerBlocks",
|
|
34259
|
+
"site.navigation",
|
|
34260
|
+
"site.media",
|
|
34261
|
+
"site.style",
|
|
34262
|
+
"site.performance"
|
|
34263
|
+
];
|
|
34264
|
+
var websiteSurfaceIdSet = new Set(
|
|
34265
|
+
websiteSurfaceIds
|
|
34266
|
+
);
|
|
34267
|
+
|
|
34268
|
+
// ../api/src/navigation/dashboardSettingsNav.ts
|
|
34269
|
+
var hiddenDemoSettingsNavSurfaceIds = [
|
|
34270
|
+
"settings.features",
|
|
34271
|
+
"settings.domains",
|
|
34272
|
+
"settings.bookings",
|
|
34273
|
+
"settings.emails",
|
|
34274
|
+
"settings.team",
|
|
34275
|
+
"settings.billing",
|
|
34276
|
+
"settings.developer",
|
|
34277
|
+
"settings.apiKeys",
|
|
34278
|
+
"settings.backup"
|
|
34279
|
+
];
|
|
34280
|
+
var hiddenDemoSettingsNavIds = new Set(hiddenDemoSettingsNavSurfaceIds);
|
|
34281
|
+
|
|
33321
34282
|
// ../api/src/aiPlayground.ts
|
|
33322
|
-
import { z as
|
|
33323
|
-
var Rfc6902PatchOp =
|
|
34283
|
+
import { z as z66 } from "zod";
|
|
34284
|
+
var Rfc6902PatchOp = z66.discriminatedUnion("op", [
|
|
33324
34285
|
// Standard RFC-6902 operations
|
|
33325
|
-
|
|
33326
|
-
op:
|
|
33327
|
-
path:
|
|
33328
|
-
value:
|
|
34286
|
+
z66.object({
|
|
34287
|
+
op: z66.literal("add"),
|
|
34288
|
+
path: z66.string(),
|
|
34289
|
+
value: z66.unknown()
|
|
33329
34290
|
}),
|
|
33330
|
-
|
|
33331
|
-
op:
|
|
33332
|
-
path:
|
|
34291
|
+
z66.object({
|
|
34292
|
+
op: z66.literal("remove"),
|
|
34293
|
+
path: z66.string()
|
|
33333
34294
|
}),
|
|
33334
|
-
|
|
33335
|
-
op:
|
|
33336
|
-
path:
|
|
33337
|
-
value:
|
|
34295
|
+
z66.object({
|
|
34296
|
+
op: z66.literal("replace"),
|
|
34297
|
+
path: z66.string(),
|
|
34298
|
+
value: z66.unknown()
|
|
33338
34299
|
}),
|
|
33339
|
-
|
|
33340
|
-
op:
|
|
33341
|
-
from:
|
|
33342
|
-
path:
|
|
34300
|
+
z66.object({
|
|
34301
|
+
op: z66.literal("move"),
|
|
34302
|
+
from: z66.string(),
|
|
34303
|
+
path: z66.string()
|
|
33343
34304
|
}),
|
|
33344
|
-
|
|
33345
|
-
op:
|
|
33346
|
-
from:
|
|
33347
|
-
path:
|
|
34305
|
+
z66.object({
|
|
34306
|
+
op: z66.literal("copy"),
|
|
34307
|
+
from: z66.string(),
|
|
34308
|
+
path: z66.string()
|
|
33348
34309
|
}),
|
|
33349
34310
|
// Block-level operations (Phase 2)
|
|
33350
|
-
|
|
33351
|
-
op:
|
|
33352
|
-
blockKind:
|
|
33353
|
-
afterBlockId:
|
|
33354
|
-
content:
|
|
33355
|
-
rationale:
|
|
34311
|
+
z66.object({
|
|
34312
|
+
op: z66.literal("add_block"),
|
|
34313
|
+
blockKind: z66.string(),
|
|
34314
|
+
afterBlockId: z66.string().nullable(),
|
|
34315
|
+
content: z66.record(z66.string(), z66.unknown()),
|
|
34316
|
+
rationale: z66.string()
|
|
33356
34317
|
}),
|
|
33357
|
-
|
|
33358
|
-
op:
|
|
33359
|
-
blockId:
|
|
33360
|
-
rationale:
|
|
34318
|
+
z66.object({
|
|
34319
|
+
op: z66.literal("delete_block"),
|
|
34320
|
+
blockId: z66.string(),
|
|
34321
|
+
rationale: z66.string()
|
|
33361
34322
|
}),
|
|
33362
|
-
|
|
33363
|
-
op:
|
|
33364
|
-
blockId:
|
|
33365
|
-
afterBlockId:
|
|
33366
|
-
rationale:
|
|
34323
|
+
z66.object({
|
|
34324
|
+
op: z66.literal("reorder_block"),
|
|
34325
|
+
blockId: z66.string(),
|
|
34326
|
+
afterBlockId: z66.string().nullable(),
|
|
34327
|
+
rationale: z66.string()
|
|
33367
34328
|
})
|
|
33368
34329
|
]);
|
|
33369
|
-
var PlaygroundProposeRequest =
|
|
33370
|
-
request:
|
|
34330
|
+
var PlaygroundProposeRequest = z66.object({
|
|
34331
|
+
request: z66.string().min(1).max(2e3)
|
|
33371
34332
|
});
|
|
33372
|
-
var MultiPagePatchEnvelope =
|
|
33373
|
-
pageId:
|
|
33374
|
-
blockId:
|
|
34333
|
+
var MultiPagePatchEnvelope = z66.object({
|
|
34334
|
+
pageId: z66.string(),
|
|
34335
|
+
blockId: z66.string().optional(),
|
|
33375
34336
|
// Not present for page-level ops
|
|
33376
|
-
blockKind:
|
|
33377
|
-
blockPurpose:
|
|
33378
|
-
ops:
|
|
33379
|
-
rationale:
|
|
33380
|
-
currentContent:
|
|
34337
|
+
blockKind: z66.string().optional(),
|
|
34338
|
+
blockPurpose: z66.string().optional().nullable(),
|
|
34339
|
+
ops: z66.array(Rfc6902PatchOp),
|
|
34340
|
+
rationale: z66.string(),
|
|
34341
|
+
currentContent: z66.record(z66.string(), z66.unknown()).optional()
|
|
33381
34342
|
});
|
|
33382
|
-
var MultiPageUpdateResponse =
|
|
33383
|
-
patches:
|
|
33384
|
-
assistantMessage:
|
|
33385
|
-
pagesModified:
|
|
33386
|
-
toolCallsUsed:
|
|
34343
|
+
var MultiPageUpdateResponse = z66.object({
|
|
34344
|
+
patches: z66.array(MultiPagePatchEnvelope),
|
|
34345
|
+
assistantMessage: z66.string(),
|
|
34346
|
+
pagesModified: z66.number(),
|
|
34347
|
+
toolCallsUsed: z66.number()
|
|
33387
34348
|
});
|
|
33388
34349
|
|
|
33389
34350
|
// src/config/content-validation.ts
|
|
33390
|
-
import { z as
|
|
34351
|
+
import { z as z67 } from "zod";
|
|
33391
34352
|
|
|
33392
34353
|
// src/types/block-kinds.ts
|
|
33393
34354
|
var SYSTEM_BLOCK_KINDS = [
|
|
@@ -33541,32 +34502,32 @@ function describeInvalidBindingTransform(transform) {
|
|
|
33541
34502
|
}
|
|
33542
34503
|
|
|
33543
34504
|
// src/config/content-validation.ts
|
|
33544
|
-
var jsonDataSchema =
|
|
33545
|
-
var contentTypeKeySchema =
|
|
34505
|
+
var jsonDataSchema = z67.record(z67.string(), z67.any());
|
|
34506
|
+
var contentTypeKeySchema = z67.string().min(1).regex(
|
|
33546
34507
|
/^[a-z][a-z0-9-]*$/,
|
|
33547
34508
|
"Key must be lowercase, start with a letter, and contain only letters, numbers, and hyphens"
|
|
33548
34509
|
);
|
|
33549
|
-
var templateConfigSchemaForward =
|
|
33550
|
-
blocks:
|
|
33551
|
-
|
|
33552
|
-
identifier:
|
|
33553
|
-
kind:
|
|
33554
|
-
scope:
|
|
33555
|
-
bindings:
|
|
33556
|
-
content:
|
|
34510
|
+
var templateConfigSchemaForward = z67.object({
|
|
34511
|
+
blocks: z67.array(
|
|
34512
|
+
z67.object({
|
|
34513
|
+
identifier: z67.string().min(1),
|
|
34514
|
+
kind: z67.string(),
|
|
34515
|
+
scope: z67.enum(["entry", "template"]),
|
|
34516
|
+
bindings: z67.record(z67.string(), z67.any()).optional(),
|
|
34517
|
+
content: z67.record(z67.string(), z67.any()).optional()
|
|
33557
34518
|
})
|
|
33558
34519
|
)
|
|
33559
34520
|
}).optional();
|
|
33560
|
-
var contentTypeConfigSchema =
|
|
34521
|
+
var contentTypeConfigSchema = z67.object({
|
|
33561
34522
|
key: contentTypeKeySchema,
|
|
33562
|
-
name:
|
|
33563
|
-
description:
|
|
33564
|
-
hasPages:
|
|
33565
|
-
routePattern:
|
|
34523
|
+
name: z67.string().min(1),
|
|
34524
|
+
description: z67.string().optional(),
|
|
34525
|
+
hasPages: z67.boolean(),
|
|
34526
|
+
routePattern: z67.string().optional(),
|
|
33566
34527
|
// Fields are validated as unknown[] here - deep field validation happens in @riverbankcms/blocks
|
|
33567
|
-
fields:
|
|
33568
|
-
titleField:
|
|
33569
|
-
isSingleton:
|
|
34528
|
+
fields: z67.array(z67.any()).min(1, "At least one field is required"),
|
|
34529
|
+
titleField: z67.string().optional(),
|
|
34530
|
+
isSingleton: z67.boolean().optional().default(false),
|
|
33570
34531
|
template: templateConfigSchemaForward
|
|
33571
34532
|
}).refine(
|
|
33572
34533
|
(data) => {
|
|
@@ -33588,7 +34549,7 @@ var contentTypeConfigSchema = z66.object({
|
|
|
33588
34549
|
}
|
|
33589
34550
|
if (!data.routePattern) {
|
|
33590
34551
|
ctx.addIssue({
|
|
33591
|
-
code:
|
|
34552
|
+
code: z67.ZodIssueCode.custom,
|
|
33592
34553
|
path: ["routePattern"],
|
|
33593
34554
|
message: "routePattern is required when hasPages is true. Non-singleton types must include {slug} placeholder."
|
|
33594
34555
|
});
|
|
@@ -33597,7 +34558,7 @@ var contentTypeConfigSchema = z66.object({
|
|
|
33597
34558
|
const parseResult = safeParseRouteTemplate(data.routePattern);
|
|
33598
34559
|
if (!parseResult.success) {
|
|
33599
34560
|
ctx.addIssue({
|
|
33600
|
-
code:
|
|
34561
|
+
code: z67.ZodIssueCode.custom,
|
|
33601
34562
|
path: ["routePattern"],
|
|
33602
34563
|
message: describeRouteTemplateParseError(parseResult.error)
|
|
33603
34564
|
});
|
|
@@ -33605,44 +34566,44 @@ var contentTypeConfigSchema = z66.object({
|
|
|
33605
34566
|
}
|
|
33606
34567
|
if (!data.isSingleton && parseResult.routeTemplate.kind !== "slug-template") {
|
|
33607
34568
|
ctx.addIssue({
|
|
33608
|
-
code:
|
|
34569
|
+
code: z67.ZodIssueCode.custom,
|
|
33609
34570
|
path: ["routePattern"],
|
|
33610
34571
|
message: "routePattern is required when hasPages is true. Non-singleton types must include {slug} placeholder."
|
|
33611
34572
|
});
|
|
33612
34573
|
}
|
|
33613
34574
|
});
|
|
33614
|
-
var fieldBindingSchema =
|
|
33615
|
-
source:
|
|
33616
|
-
path:
|
|
34575
|
+
var fieldBindingSchema = z67.object({
|
|
34576
|
+
source: z67.literal("field"),
|
|
34577
|
+
path: z67.string().min(1, "Field path is required")
|
|
33617
34578
|
});
|
|
33618
|
-
var metaBindingSchema =
|
|
33619
|
-
source:
|
|
33620
|
-
path:
|
|
34579
|
+
var metaBindingSchema = z67.object({
|
|
34580
|
+
source: z67.literal("meta"),
|
|
34581
|
+
path: z67.enum(TEMPLATE_BINDING_META_PATHS, {
|
|
33621
34582
|
error: (issue) => describeInvalidTemplateBindingMetaPath(String(issue.input))
|
|
33622
34583
|
})
|
|
33623
34584
|
});
|
|
33624
|
-
var literalBindingSchema =
|
|
33625
|
-
source:
|
|
33626
|
-
value:
|
|
34585
|
+
var literalBindingSchema = z67.object({
|
|
34586
|
+
source: z67.literal("literal"),
|
|
34587
|
+
value: z67.unknown()
|
|
33627
34588
|
});
|
|
33628
|
-
var transformBindingSchema =
|
|
33629
|
-
source:
|
|
33630
|
-
path:
|
|
33631
|
-
transform:
|
|
34589
|
+
var transformBindingSchema = z67.object({
|
|
34590
|
+
source: z67.literal("transform"),
|
|
34591
|
+
path: z67.string().min(1, "Transform path is required"),
|
|
34592
|
+
transform: z67.enum(BINDING_TRANSFORM_VALUES, {
|
|
33632
34593
|
error: (issue) => describeInvalidBindingTransform(String(issue.input))
|
|
33633
34594
|
})
|
|
33634
34595
|
});
|
|
33635
|
-
var baseBindingSchema =
|
|
34596
|
+
var baseBindingSchema = z67.discriminatedUnion("source", [
|
|
33636
34597
|
fieldBindingSchema,
|
|
33637
34598
|
metaBindingSchema,
|
|
33638
34599
|
literalBindingSchema,
|
|
33639
34600
|
transformBindingSchema
|
|
33640
34601
|
]);
|
|
33641
|
-
var fallbackBindingSchema =
|
|
33642
|
-
source:
|
|
33643
|
-
sources:
|
|
34602
|
+
var fallbackBindingSchema = z67.object({
|
|
34603
|
+
source: z67.literal("fallback"),
|
|
34604
|
+
sources: z67.array(z67.lazy(() => bindingSourceSchema)).min(1, "Fallback must have at least one source")
|
|
33644
34605
|
});
|
|
33645
|
-
var bindingSourceSchema =
|
|
34606
|
+
var bindingSourceSchema = z67.union([
|
|
33646
34607
|
baseBindingSchema,
|
|
33647
34608
|
fallbackBindingSchema
|
|
33648
34609
|
]);
|
|
@@ -33656,12 +34617,12 @@ function isValidBlockKind(kind) {
|
|
|
33656
34617
|
return false;
|
|
33657
34618
|
}
|
|
33658
34619
|
var BLOCK_KIND_ERROR_MESSAGE = 'Block kind must be a system block (e.g., "block.hero") or a custom block (e.g., "custom.myBlock")';
|
|
33659
|
-
var blockKindSchema =
|
|
33660
|
-
var templateBlockConfigSchema =
|
|
33661
|
-
identifier:
|
|
34620
|
+
var blockKindSchema = z67.string().refine(isValidBlockKind, { message: BLOCK_KIND_ERROR_MESSAGE });
|
|
34621
|
+
var templateBlockConfigSchema = z67.object({
|
|
34622
|
+
identifier: z67.string().min(1, "Block identifier is required"),
|
|
33662
34623
|
kind: blockKindSchema,
|
|
33663
|
-
scope:
|
|
33664
|
-
bindings:
|
|
34624
|
+
scope: z67.enum(["entry", "template"]),
|
|
34625
|
+
bindings: z67.record(z67.string(), bindingSourceSchema).optional(),
|
|
33665
34626
|
content: jsonDataSchema.optional()
|
|
33666
34627
|
}).refine(
|
|
33667
34628
|
(data) => {
|
|
@@ -33680,8 +34641,8 @@ var templateBlockConfigSchema = z66.object({
|
|
|
33680
34641
|
},
|
|
33681
34642
|
{ message: "Template-scoped blocks should define static content, not bindings" }
|
|
33682
34643
|
);
|
|
33683
|
-
var templateConfigSchema =
|
|
33684
|
-
blocks:
|
|
34644
|
+
var templateConfigSchema = z67.object({
|
|
34645
|
+
blocks: z67.array(templateBlockConfigSchema).min(1, "Template must have at least one block")
|
|
33685
34646
|
}).refine(
|
|
33686
34647
|
(data) => {
|
|
33687
34648
|
const identifiers = data.blocks.map((b) => b.identifier);
|
|
@@ -33690,77 +34651,77 @@ var templateConfigSchema = z66.object({
|
|
|
33690
34651
|
},
|
|
33691
34652
|
{ message: "Template block identifiers must be unique" }
|
|
33692
34653
|
);
|
|
33693
|
-
var blockConfigSchema =
|
|
34654
|
+
var blockConfigSchema = z67.object({
|
|
33694
34655
|
kind: blockKindSchema,
|
|
33695
34656
|
content: jsonDataSchema,
|
|
33696
|
-
orderIndex:
|
|
33697
|
-
});
|
|
33698
|
-
var pageConfigSchema =
|
|
33699
|
-
identifier:
|
|
33700
|
-
title:
|
|
33701
|
-
path:
|
|
33702
|
-
purpose:
|
|
33703
|
-
blocks:
|
|
33704
|
-
status:
|
|
33705
|
-
metaTitle:
|
|
33706
|
-
metaDescription:
|
|
33707
|
-
});
|
|
33708
|
-
var entryConfigSchema =
|
|
33709
|
-
identifier:
|
|
33710
|
-
contentType:
|
|
34657
|
+
orderIndex: z67.number().optional()
|
|
34658
|
+
});
|
|
34659
|
+
var pageConfigSchema = z67.object({
|
|
34660
|
+
identifier: z67.string().min(1, "Identifier is required"),
|
|
34661
|
+
title: z67.string().min(1, "Title is required"),
|
|
34662
|
+
path: z67.string().regex(/^\//, "Path must start with /"),
|
|
34663
|
+
purpose: z67.string().default("content"),
|
|
34664
|
+
blocks: z67.array(blockConfigSchema).optional(),
|
|
34665
|
+
status: z67.enum(["draft", "published"]).default("draft"),
|
|
34666
|
+
metaTitle: z67.string().optional(),
|
|
34667
|
+
metaDescription: z67.string().optional()
|
|
34668
|
+
});
|
|
34669
|
+
var entryConfigSchema = z67.object({
|
|
34670
|
+
identifier: z67.string().min(1, "Identifier is required"),
|
|
34671
|
+
contentType: z67.string().min(1, "Content type is required"),
|
|
33711
34672
|
data: jsonDataSchema,
|
|
33712
|
-
status:
|
|
33713
|
-
slug:
|
|
33714
|
-
summary:
|
|
34673
|
+
status: z67.enum(["draft", "published"]).default("draft"),
|
|
34674
|
+
slug: z67.string().optional(),
|
|
34675
|
+
summary: z67.string().optional(),
|
|
33715
34676
|
// Hard remove legacy config-only titles: titles must live in entry `data`.
|
|
33716
|
-
title:
|
|
34677
|
+
title: z67.any().optional().refine((value) => value === void 0, {
|
|
33717
34678
|
message: "Entry titles are now derived from entry data. Remove `title` and move it into `data` (e.g. `data.title`, or your configured `titleField`). Run `riverbankcms migrate entries` for guided migration."
|
|
33718
34679
|
}),
|
|
33719
|
-
metaTitle:
|
|
33720
|
-
metaDescription:
|
|
34680
|
+
metaTitle: z67.string().optional(),
|
|
34681
|
+
metaDescription: z67.string().optional()
|
|
33721
34682
|
});
|
|
33722
|
-
var dropdownLinkSchema =
|
|
33723
|
-
kind:
|
|
34683
|
+
var dropdownLinkSchema = z67.object({
|
|
34684
|
+
kind: z67.literal("dropdown")
|
|
33724
34685
|
});
|
|
33725
|
-
var navigationLinkSchema =
|
|
34686
|
+
var navigationLinkSchema = z67.discriminatedUnion("kind", [
|
|
33726
34687
|
...navigationLinkInputSchemaOptions,
|
|
33727
34688
|
dropdownLinkSchema
|
|
33728
34689
|
]);
|
|
33729
|
-
var baseNavigationItemSchema =
|
|
33730
|
-
label:
|
|
34690
|
+
var baseNavigationItemSchema = z67.object({
|
|
34691
|
+
label: z67.string().min(1, "Label is required"),
|
|
33731
34692
|
link: navigationLinkSchema,
|
|
33732
|
-
isCta:
|
|
34693
|
+
isCta: z67.boolean().optional()
|
|
33733
34694
|
});
|
|
33734
34695
|
var navigationItemConfigSchema = baseNavigationItemSchema.extend({
|
|
33735
|
-
children:
|
|
33736
|
-
});
|
|
33737
|
-
var navigationMenuConfigSchema =
|
|
33738
|
-
identifier:
|
|
33739
|
-
name:
|
|
33740
|
-
isPrimary:
|
|
33741
|
-
isFooter:
|
|
33742
|
-
items:
|
|
34696
|
+
children: z67.lazy(() => z67.array(navigationItemConfigSchema)).optional()
|
|
34697
|
+
});
|
|
34698
|
+
var navigationMenuConfigSchema = z67.object({
|
|
34699
|
+
identifier: z67.string().min(1, "Identifier is required"),
|
|
34700
|
+
name: z67.string().min(1, "Name is required"),
|
|
34701
|
+
isPrimary: z67.boolean().optional(),
|
|
34702
|
+
isFooter: z67.boolean().optional(),
|
|
34703
|
+
items: z67.array(navigationItemConfigSchema)
|
|
33743
34704
|
}).superRefine((menu, ctx) => {
|
|
33744
34705
|
const portalStats = collectPortalLinkStats(
|
|
33745
34706
|
menu.items
|
|
33746
34707
|
);
|
|
33747
34708
|
if (portalStats.count > 1) {
|
|
33748
34709
|
ctx.addIssue({
|
|
33749
|
-
code:
|
|
34710
|
+
code: z67.ZodIssueCode.custom,
|
|
33750
34711
|
message: "Only one portal link is allowed per navigation menu",
|
|
33751
34712
|
path: ["items"]
|
|
33752
34713
|
});
|
|
33753
34714
|
}
|
|
33754
34715
|
if (portalStats.nestedLabels.length > 0) {
|
|
33755
34716
|
ctx.addIssue({
|
|
33756
|
-
code:
|
|
34717
|
+
code: z67.ZodIssueCode.custom,
|
|
33757
34718
|
message: `Portal links must be root-level items: ${portalStats.nestedLabels.join(", ")}`,
|
|
33758
34719
|
path: ["items"]
|
|
33759
34720
|
});
|
|
33760
34721
|
}
|
|
33761
34722
|
if (portalStats.withChildrenLabels.length > 0) {
|
|
33762
34723
|
ctx.addIssue({
|
|
33763
|
-
code:
|
|
34724
|
+
code: z67.ZodIssueCode.custom,
|
|
33764
34725
|
message: `Portal links cannot contain child items: ${portalStats.withChildrenLabels.join(", ")}`,
|
|
33765
34726
|
path: ["items"]
|
|
33766
34727
|
});
|
|
@@ -33770,44 +34731,44 @@ var navigationMenuConfigSchema = z66.object({
|
|
|
33770
34731
|
);
|
|
33771
34732
|
if (cartStats.nestedLabels.length > 0) {
|
|
33772
34733
|
ctx.addIssue({
|
|
33773
|
-
code:
|
|
34734
|
+
code: z67.ZodIssueCode.custom,
|
|
33774
34735
|
message: `Cart links must be root-level items: ${cartStats.nestedLabels.join(", ")}`,
|
|
33775
34736
|
path: ["items"]
|
|
33776
34737
|
});
|
|
33777
34738
|
}
|
|
33778
34739
|
if (cartStats.withChildrenLabels.length > 0) {
|
|
33779
34740
|
ctx.addIssue({
|
|
33780
|
-
code:
|
|
34741
|
+
code: z67.ZodIssueCode.custom,
|
|
33781
34742
|
message: `Cart links cannot contain child items: ${cartStats.withChildrenLabels.join(", ")}`,
|
|
33782
34743
|
path: ["items"]
|
|
33783
34744
|
});
|
|
33784
34745
|
}
|
|
33785
34746
|
if (cartStats.ctaLabels.length > 0) {
|
|
33786
34747
|
ctx.addIssue({
|
|
33787
|
-
code:
|
|
34748
|
+
code: z67.ZodIssueCode.custom,
|
|
33788
34749
|
message: `Cart links cannot be marked as CTA: ${cartStats.ctaLabels.join(", ")}`,
|
|
33789
34750
|
path: ["items"]
|
|
33790
34751
|
});
|
|
33791
34752
|
}
|
|
33792
34753
|
if (cartStats.missingVisibleTextLabels.length > 0) {
|
|
33793
34754
|
ctx.addIssue({
|
|
33794
|
-
code:
|
|
34755
|
+
code: z67.ZodIssueCode.custom,
|
|
33795
34756
|
message: `Cart links with icon-with-label must provide a visible label: ${cartStats.missingVisibleTextLabels.join(", ")}`,
|
|
33796
34757
|
path: ["items"]
|
|
33797
34758
|
});
|
|
33798
34759
|
}
|
|
33799
34760
|
});
|
|
33800
|
-
var siteSettingsConfigSchema =
|
|
33801
|
-
homepagePath:
|
|
33802
|
-
siteTitle:
|
|
33803
|
-
siteDescription:
|
|
33804
|
-
defaultTemplates:
|
|
34761
|
+
var siteSettingsConfigSchema = z67.object({
|
|
34762
|
+
homepagePath: z67.string().optional(),
|
|
34763
|
+
siteTitle: z67.string().optional(),
|
|
34764
|
+
siteDescription: z67.string().optional(),
|
|
34765
|
+
defaultTemplates: z67.record(z67.string(), z67.string()).optional()
|
|
33805
34766
|
});
|
|
33806
|
-
var contentConfigBaseSchema =
|
|
33807
|
-
contentTypes:
|
|
33808
|
-
entries:
|
|
33809
|
-
pages:
|
|
33810
|
-
navigationMenus:
|
|
34767
|
+
var contentConfigBaseSchema = z67.object({
|
|
34768
|
+
contentTypes: z67.array(contentTypeConfigSchema).optional(),
|
|
34769
|
+
entries: z67.array(entryConfigSchema).optional(),
|
|
34770
|
+
pages: z67.array(pageConfigSchema).optional(),
|
|
34771
|
+
navigationMenus: z67.array(navigationMenuConfigSchema).optional(),
|
|
33811
34772
|
settings: siteSettingsConfigSchema.optional()
|
|
33812
34773
|
});
|
|
33813
34774
|
var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
@@ -33816,7 +34777,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
33816
34777
|
const duplicateKeys = keys.filter((key, i) => keys.indexOf(key) !== i);
|
|
33817
34778
|
if (duplicateKeys.length > 0) {
|
|
33818
34779
|
ctx.addIssue({
|
|
33819
|
-
code:
|
|
34780
|
+
code: z67.ZodIssueCode.custom,
|
|
33820
34781
|
message: `Content type keys must be unique. Duplicates: ${duplicateKeys.join(", ")}`,
|
|
33821
34782
|
path: ["contentTypes"]
|
|
33822
34783
|
});
|
|
@@ -33827,7 +34788,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
33827
34788
|
const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
|
|
33828
34789
|
if (duplicateIds.length > 0) {
|
|
33829
34790
|
ctx.addIssue({
|
|
33830
|
-
code:
|
|
34791
|
+
code: z67.ZodIssueCode.custom,
|
|
33831
34792
|
message: `Page identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
|
|
33832
34793
|
path: ["pages"]
|
|
33833
34794
|
});
|
|
@@ -33836,7 +34797,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
33836
34797
|
const duplicatePaths = paths.filter((path, i) => paths.indexOf(path) !== i);
|
|
33837
34798
|
if (duplicatePaths.length > 0) {
|
|
33838
34799
|
ctx.addIssue({
|
|
33839
|
-
code:
|
|
34800
|
+
code: z67.ZodIssueCode.custom,
|
|
33840
34801
|
message: `Page paths must be unique. Duplicates: ${duplicatePaths.join(", ")}`,
|
|
33841
34802
|
path: ["pages"]
|
|
33842
34803
|
});
|
|
@@ -33847,7 +34808,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
33847
34808
|
const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
|
|
33848
34809
|
if (duplicateIds.length > 0) {
|
|
33849
34810
|
ctx.addIssue({
|
|
33850
|
-
code:
|
|
34811
|
+
code: z67.ZodIssueCode.custom,
|
|
33851
34812
|
message: `Entry identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
|
|
33852
34813
|
path: ["entries"]
|
|
33853
34814
|
});
|
|
@@ -33858,7 +34819,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
33858
34819
|
const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
|
|
33859
34820
|
if (duplicateIds.length > 0) {
|
|
33860
34821
|
ctx.addIssue({
|
|
33861
|
-
code:
|
|
34822
|
+
code: z67.ZodIssueCode.custom,
|
|
33862
34823
|
message: `Navigation menu identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
|
|
33863
34824
|
path: ["navigationMenus"]
|
|
33864
34825
|
});
|
|
@@ -33872,7 +34833,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
33872
34833
|
const entriesForType = data.entries.filter((e) => e.contentType === singletonKey);
|
|
33873
34834
|
if (entriesForType.length > 1) {
|
|
33874
34835
|
ctx.addIssue({
|
|
33875
|
-
code:
|
|
34836
|
+
code: z67.ZodIssueCode.custom,
|
|
33876
34837
|
message: `Singleton content type "${singletonKey}" cannot have more than one entry. Found ${entriesForType.length} entries.`,
|
|
33877
34838
|
path: ["entries"]
|
|
33878
34839
|
});
|
|
@@ -33985,18 +34946,18 @@ function validateLayout(layout) {
|
|
|
33985
34946
|
}
|
|
33986
34947
|
|
|
33987
34948
|
// src/config/dashboard-validation.ts
|
|
33988
|
-
import { z as
|
|
33989
|
-
var navIdListSchema2 =
|
|
34949
|
+
import { z as z68 } from "zod";
|
|
34950
|
+
var navIdListSchema2 = z68.preprocess((value) => {
|
|
33990
34951
|
if (!Array.isArray(value)) return void 0;
|
|
33991
34952
|
const filtered = value.filter((v) => typeof v === "string" && v.trim().length > 0);
|
|
33992
34953
|
return filtered.length > 0 ? filtered : void 0;
|
|
33993
|
-
},
|
|
33994
|
-
var dashboardNavVisibilityBaseSchema2 =
|
|
33995
|
-
mode:
|
|
34954
|
+
}, z68.array(z68.string()).max(200, "Maximum 200 nav IDs").optional());
|
|
34955
|
+
var dashboardNavVisibilityBaseSchema2 = z68.object({
|
|
34956
|
+
mode: z68.enum(["augment", "restrict"]).optional(),
|
|
33996
34957
|
allowIds: navIdListSchema2,
|
|
33997
34958
|
denyIds: navIdListSchema2
|
|
33998
34959
|
}).strip();
|
|
33999
|
-
var dashboardNavVisibilityRolesSchema2 =
|
|
34960
|
+
var dashboardNavVisibilityRolesSchema2 = z68.object({
|
|
34000
34961
|
administrator: dashboardNavVisibilityBaseSchema2.optional(),
|
|
34001
34962
|
editor: dashboardNavVisibilityBaseSchema2.optional(),
|
|
34002
34963
|
team_member: dashboardNavVisibilityBaseSchema2.optional()
|
|
@@ -34004,20 +34965,20 @@ var dashboardNavVisibilityRolesSchema2 = z67.object({
|
|
|
34004
34965
|
var dashboardNavVisibilitySchema2 = dashboardNavVisibilityBaseSchema2.extend({
|
|
34005
34966
|
roles: dashboardNavVisibilityRolesSchema2
|
|
34006
34967
|
}).strip();
|
|
34007
|
-
var dashboardNavigationConfigSchema2 =
|
|
34968
|
+
var dashboardNavigationConfigSchema2 = z68.object({
|
|
34008
34969
|
siteNav: dashboardNavVisibilitySchema2.optional(),
|
|
34009
34970
|
settingsNav: dashboardNavVisibilitySchema2.optional()
|
|
34010
34971
|
}).strip();
|
|
34011
|
-
var dashboardConfigSchema2 =
|
|
34012
|
-
previewEditingEnabled:
|
|
34972
|
+
var dashboardConfigSchema2 = z68.object({
|
|
34973
|
+
previewEditingEnabled: z68.boolean().optional(),
|
|
34013
34974
|
navigation: dashboardNavigationConfigSchema2.optional()
|
|
34014
34975
|
}).strip();
|
|
34015
34976
|
|
|
34016
34977
|
// src/zod/titleSourceSchema.ts
|
|
34017
|
-
import { z as
|
|
34018
|
-
var titleSourceValueSchema =
|
|
34019
|
-
|
|
34020
|
-
|
|
34978
|
+
import { z as z69 } from "zod";
|
|
34979
|
+
var titleSourceValueSchema = z69.union([
|
|
34980
|
+
z69.string().min(1),
|
|
34981
|
+
z69.array(z69.string().min(1)).min(1)
|
|
34021
34982
|
]);
|
|
34022
34983
|
|
|
34023
34984
|
// src/data/prefetchBlockData.ts
|
|
@@ -34036,11 +34997,11 @@ var SUPPORTED_LOADER_ENDPOINTS2 = [
|
|
|
34036
34997
|
];
|
|
34037
34998
|
|
|
34038
34999
|
// src/config/validation.ts
|
|
34039
|
-
var sdkThemePaletteSchema2 =
|
|
34040
|
-
var sdkThemeConfigSchema2 =
|
|
35000
|
+
var sdkThemePaletteSchema2 = z70.record(z70.string(), z70.string());
|
|
35001
|
+
var sdkThemeConfigSchema2 = z70.object({
|
|
34041
35002
|
palette: sdkThemePaletteSchema2
|
|
34042
35003
|
});
|
|
34043
|
-
var sdkSiteUrlSchema =
|
|
35004
|
+
var sdkSiteUrlSchema = z70.string().url("Must be a valid URL").refine((url) => {
|
|
34044
35005
|
try {
|
|
34045
35006
|
const parsed = new URL(url);
|
|
34046
35007
|
const isLocal = parsed.hostname === "localhost" || parsed.hostname.endsWith(".localhost") || parsed.hostname.endsWith(".local") || parsed.hostname.endsWith(".test");
|
|
@@ -34049,97 +35010,97 @@ var sdkSiteUrlSchema = z69.string().url("Must be a valid URL").refine((url) => {
|
|
|
34049
35010
|
return false;
|
|
34050
35011
|
}
|
|
34051
35012
|
}, { message: "Production URLs must use HTTPS" }).transform((url) => url.replace(/\/$/, ""));
|
|
34052
|
-
var sectionBackgroundSchema =
|
|
34053
|
-
id:
|
|
34054
|
-
label:
|
|
34055
|
-
token:
|
|
35013
|
+
var sectionBackgroundSchema = z70.object({
|
|
35014
|
+
id: z70.string(),
|
|
35015
|
+
label: z70.string(),
|
|
35016
|
+
token: z70.string()
|
|
34056
35017
|
// Reference to theme palette token
|
|
34057
35018
|
});
|
|
34058
|
-
var sectionSpacingSchema =
|
|
34059
|
-
var containerMaxWidthSchema =
|
|
34060
|
-
var containerAlignmentSchema =
|
|
34061
|
-
var sectionOptionsSchema =
|
|
34062
|
-
backgroundColor:
|
|
34063
|
-
backgroundImage:
|
|
34064
|
-
backgroundGradient:
|
|
34065
|
-
spacing:
|
|
34066
|
-
|
|
34067
|
-
|
|
35019
|
+
var sectionSpacingSchema = z70.enum(["compact", "default", "spacious"]);
|
|
35020
|
+
var containerMaxWidthSchema = z70.enum(["narrow", "default", "wide", "full"]);
|
|
35021
|
+
var containerAlignmentSchema = z70.enum(["left", "center", "right"]);
|
|
35022
|
+
var sectionOptionsSchema = z70.object({
|
|
35023
|
+
backgroundColor: z70.boolean().optional(),
|
|
35024
|
+
backgroundImage: z70.boolean().optional(),
|
|
35025
|
+
backgroundGradient: z70.boolean().optional(),
|
|
35026
|
+
spacing: z70.union([
|
|
35027
|
+
z70.array(sectionSpacingSchema),
|
|
35028
|
+
z70.boolean()
|
|
34068
35029
|
]).optional(),
|
|
34069
|
-
textColor:
|
|
35030
|
+
textColor: z70.boolean().optional()
|
|
34070
35031
|
}).optional();
|
|
34071
|
-
var containerOptionsSchema =
|
|
34072
|
-
maxWidth:
|
|
34073
|
-
|
|
34074
|
-
|
|
35032
|
+
var containerOptionsSchema = z70.object({
|
|
35033
|
+
maxWidth: z70.union([
|
|
35034
|
+
z70.array(containerMaxWidthSchema),
|
|
35035
|
+
z70.boolean()
|
|
34075
35036
|
]).optional(),
|
|
34076
|
-
alignment:
|
|
34077
|
-
|
|
34078
|
-
|
|
35037
|
+
alignment: z70.union([
|
|
35038
|
+
z70.array(containerAlignmentSchema),
|
|
35039
|
+
z70.boolean()
|
|
34079
35040
|
]).optional()
|
|
34080
35041
|
}).optional();
|
|
34081
|
-
var siteStyleConfigSchema =
|
|
34082
|
-
sectionBackgrounds:
|
|
35042
|
+
var siteStyleConfigSchema = z70.object({
|
|
35043
|
+
sectionBackgrounds: z70.array(sectionBackgroundSchema).optional(),
|
|
34083
35044
|
sectionOptions: sectionOptionsSchema,
|
|
34084
35045
|
containerOptions: containerOptionsSchema
|
|
34085
35046
|
}).optional();
|
|
34086
|
-
var sdkLoaderEndpointSchema2 =
|
|
35047
|
+
var sdkLoaderEndpointSchema2 = z70.enum(SUPPORTED_LOADER_ENDPOINTS2);
|
|
34087
35048
|
var allowedTransformIds = new Set(builtinTransformDefinitions.map((transform) => transform.id));
|
|
34088
|
-
var loaderTransformStepSchema =
|
|
34089
|
-
id:
|
|
35049
|
+
var loaderTransformStepSchema = z70.object({
|
|
35050
|
+
id: z70.string().refine((id) => allowedTransformIds.has(id), {
|
|
34090
35051
|
message: "Unknown transform id"
|
|
34091
35052
|
}),
|
|
34092
|
-
options:
|
|
35053
|
+
options: z70.record(z70.string(), z70.unknown()).optional()
|
|
34093
35054
|
});
|
|
34094
|
-
var loaderParamBindingSchema2 =
|
|
34095
|
-
$bind:
|
|
34096
|
-
from:
|
|
35055
|
+
var loaderParamBindingSchema2 = z70.object({
|
|
35056
|
+
$bind: z70.object({
|
|
35057
|
+
from: z70.string().min(1, "Binding path is required"),
|
|
34097
35058
|
// Loader params are ultimately string-normalized for query strings, so fallbacks should
|
|
34098
35059
|
// stay scalar. Use transforms (e.g. `value.jsonArray`) when you need to serialize
|
|
34099
35060
|
// more complex values into a string.
|
|
34100
|
-
fallback:
|
|
34101
|
-
transforms:
|
|
34102
|
-
pick:
|
|
34103
|
-
coerce:
|
|
35061
|
+
fallback: z70.union([z70.string(), z70.number(), z70.boolean(), z70.null()]).optional(),
|
|
35062
|
+
transforms: z70.array(loaderTransformStepSchema).default([]),
|
|
35063
|
+
pick: z70.enum(["value", "collection", "context"]).default("value"),
|
|
35064
|
+
coerce: z70.enum(["number", "boolean", "string"]).optional()
|
|
34104
35065
|
})
|
|
34105
35066
|
});
|
|
34106
|
-
var loaderParamValueSchema2 =
|
|
34107
|
-
|
|
34108
|
-
|
|
34109
|
-
|
|
35067
|
+
var loaderParamValueSchema2 = z70.union([
|
|
35068
|
+
z70.string(),
|
|
35069
|
+
z70.number(),
|
|
35070
|
+
z70.boolean(),
|
|
34110
35071
|
loaderParamBindingSchema2
|
|
34111
35072
|
]);
|
|
34112
|
-
var loaderWhenValueSchema =
|
|
34113
|
-
|
|
35073
|
+
var loaderWhenValueSchema = z70.union([
|
|
35074
|
+
z70.boolean(),
|
|
34114
35075
|
loaderParamBindingSchema2
|
|
34115
35076
|
]);
|
|
34116
|
-
var sdkConfigLoaderSchema2 =
|
|
35077
|
+
var sdkConfigLoaderSchema2 = z70.object({
|
|
34117
35078
|
endpoint: sdkLoaderEndpointSchema2,
|
|
34118
|
-
params:
|
|
34119
|
-
mode:
|
|
35079
|
+
params: z70.record(z70.string(), loaderParamValueSchema2),
|
|
35080
|
+
mode: z70.enum(["server", "client"]).default("server"),
|
|
34120
35081
|
when: loaderWhenValueSchema.optional()
|
|
34121
35082
|
});
|
|
34122
|
-
var sdkDataLoadersSchema2 =
|
|
35083
|
+
var sdkDataLoadersSchema2 = z70.record(z70.string(), sdkConfigLoaderSchema2).refine(
|
|
34123
35084
|
(loaders) => Object.keys(loaders).length <= 5,
|
|
34124
35085
|
{ message: "Maximum 5 data loaders per block" }
|
|
34125
35086
|
).optional();
|
|
34126
|
-
var fieldSelectOptionSchema =
|
|
34127
|
-
value:
|
|
34128
|
-
label:
|
|
35087
|
+
var fieldSelectOptionSchema = z70.object({
|
|
35088
|
+
value: z70.string().min(1, "Option value is required"),
|
|
35089
|
+
label: z70.string().min(1, "Option label is required")
|
|
34129
35090
|
});
|
|
34130
|
-
var blockFieldConfigSchema =
|
|
34131
|
-
options:
|
|
35091
|
+
var blockFieldConfigSchema = z70.object({
|
|
35092
|
+
options: z70.array(fieldSelectOptionSchema).min(1, "At least one option is required").optional()
|
|
34132
35093
|
});
|
|
34133
|
-
var blockFieldOptionsSchema =
|
|
34134
|
-
|
|
35094
|
+
var blockFieldOptionsSchema = z70.record(
|
|
35095
|
+
z70.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
|
|
34135
35096
|
message: "Block ID must be 'block.*' or 'custom.*' format"
|
|
34136
35097
|
}),
|
|
34137
|
-
|
|
34138
|
-
|
|
35098
|
+
z70.record(
|
|
35099
|
+
z70.string().min(1, "Field ID is required"),
|
|
34139
35100
|
blockFieldConfigSchema
|
|
34140
35101
|
)
|
|
34141
35102
|
).optional();
|
|
34142
|
-
var blockFieldExtensionSchema =
|
|
35103
|
+
var blockFieldExtensionSchema = z70.object({
|
|
34143
35104
|
fields: fieldSchema.array().min(1, "At least one field is required")
|
|
34144
35105
|
}).refine(
|
|
34145
35106
|
(data) => {
|
|
@@ -34153,10 +35114,10 @@ var blockFieldExtensionSchema = z69.object({
|
|
|
34153
35114
|
message: "Required fields must have a defaultValue to support existing blocks"
|
|
34154
35115
|
}
|
|
34155
35116
|
);
|
|
34156
|
-
var blockFieldExtensionsMapSchema =
|
|
35117
|
+
var blockFieldExtensionsMapSchema = z70.record(
|
|
34157
35118
|
// System blocks are kebab-case: block.body-text, block.event-calendar, ...
|
|
34158
35119
|
// Enforce: lowercase alphanumerics with single hyphens (no trailing hyphen, no consecutive hyphens).
|
|
34159
|
-
|
|
35120
|
+
z70.string().regex(/^block\.[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, {
|
|
34160
35121
|
message: "Block ID must be 'block.*' format (system blocks only)"
|
|
34161
35122
|
}),
|
|
34162
35123
|
blockFieldExtensionSchema
|
|
@@ -34172,7 +35133,7 @@ var blockFieldExtensionsMapSchema = z69.record(
|
|
|
34172
35133
|
(field) => field.id === collision.fieldId
|
|
34173
35134
|
);
|
|
34174
35135
|
ctx.addIssue({
|
|
34175
|
-
code:
|
|
35136
|
+
code: z70.ZodIssueCode.custom,
|
|
34176
35137
|
message: collision.message,
|
|
34177
35138
|
path: [
|
|
34178
35139
|
APPOINTMENT_BOOKING_BLOCK_ID,
|
|
@@ -34238,24 +35199,24 @@ function validateFieldIdConflicts(blockFieldExtensions) {
|
|
|
34238
35199
|
}
|
|
34239
35200
|
return conflicts;
|
|
34240
35201
|
}
|
|
34241
|
-
var syncConfigSchema =
|
|
34242
|
-
existingEntries:
|
|
35202
|
+
var syncConfigSchema = z70.object({
|
|
35203
|
+
existingEntries: z70.enum(["skip", "update"]).optional()
|
|
34243
35204
|
}).optional();
|
|
34244
|
-
var deployConfigSchema =
|
|
34245
|
-
verifyCommand:
|
|
34246
|
-
prebuildOutput:
|
|
35205
|
+
var deployConfigSchema = z70.object({
|
|
35206
|
+
verifyCommand: z70.string().optional(),
|
|
35207
|
+
prebuildOutput: z70.string().optional()
|
|
34247
35208
|
}).optional();
|
|
34248
|
-
var sdkCustomBlockSchema =
|
|
35209
|
+
var sdkCustomBlockSchema = z70.object({
|
|
34249
35210
|
// Block ID must start with 'custom.'
|
|
34250
|
-
id:
|
|
35211
|
+
id: z70.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
|
|
34251
35212
|
message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
|
|
34252
35213
|
}),
|
|
34253
|
-
title:
|
|
35214
|
+
title: z70.string().min(1, "Title is required"),
|
|
34254
35215
|
titleSource: titleSourceValueSchema.optional(),
|
|
34255
|
-
description:
|
|
35216
|
+
description: z70.string().optional(),
|
|
34256
35217
|
category: blockCategoryEnum,
|
|
34257
|
-
icon:
|
|
34258
|
-
tags:
|
|
35218
|
+
icon: z70.string().optional(),
|
|
35219
|
+
tags: z70.array(z70.string()).optional(),
|
|
34259
35220
|
// Reuse the exact field schema from @riverbankcms/blocks - all field types supported
|
|
34260
35221
|
fields: fieldSchema.array().min(1, "Custom blocks must have at least one field"),
|
|
34261
35222
|
// Data loaders for CMS endpoints
|
|
@@ -34263,14 +35224,14 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34263
35224
|
// Optional declarative layout - when present, block can render without React override
|
|
34264
35225
|
layout: NodeSchema.optional(),
|
|
34265
35226
|
// Optional variants system (preferred when a block has multiple structural layouts)
|
|
34266
|
-
variants:
|
|
34267
|
-
defaultVariant:
|
|
34268
|
-
variantOptions:
|
|
34269
|
-
|
|
34270
|
-
|
|
34271
|
-
label:
|
|
34272
|
-
description:
|
|
34273
|
-
icon:
|
|
35227
|
+
variants: z70.record(z70.string().min(1), NodeSchema).optional(),
|
|
35228
|
+
defaultVariant: z70.string().min(1).optional(),
|
|
35229
|
+
variantOptions: z70.record(
|
|
35230
|
+
z70.string().min(1),
|
|
35231
|
+
z70.object({
|
|
35232
|
+
label: z70.string().min(1).optional(),
|
|
35233
|
+
description: z70.string().min(1).optional(),
|
|
35234
|
+
icon: z70.string().min(1).optional()
|
|
34274
35235
|
})
|
|
34275
35236
|
).optional()
|
|
34276
35237
|
}).superRefine((data, ctx) => {
|
|
@@ -34281,7 +35242,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34281
35242
|
const exists = fields3.some((field) => field.id === source);
|
|
34282
35243
|
if (!exists) {
|
|
34283
35244
|
ctx.addIssue({
|
|
34284
|
-
code:
|
|
35245
|
+
code: z70.ZodIssueCode.custom,
|
|
34285
35246
|
message: `titleSource must reference a valid field ID (got "${source}")`,
|
|
34286
35247
|
path: Array.isArray(data.titleSource) ? ["titleSource", index] : ["titleSource"]
|
|
34287
35248
|
});
|
|
@@ -34290,7 +35251,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34290
35251
|
}
|
|
34291
35252
|
if (data.layout && data.variants) {
|
|
34292
35253
|
ctx.addIssue({
|
|
34293
|
-
code:
|
|
35254
|
+
code: z70.ZodIssueCode.custom,
|
|
34294
35255
|
message: "Custom block must define either `layout` or `variants`, not both",
|
|
34295
35256
|
path: ["variants"]
|
|
34296
35257
|
});
|
|
@@ -34300,7 +35261,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34300
35261
|
if (!result.valid) {
|
|
34301
35262
|
for (const error of result.errors) {
|
|
34302
35263
|
ctx.addIssue({
|
|
34303
|
-
code:
|
|
35264
|
+
code: z70.ZodIssueCode.custom,
|
|
34304
35265
|
message: error.message,
|
|
34305
35266
|
path: ["layout"]
|
|
34306
35267
|
});
|
|
@@ -34311,14 +35272,14 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34311
35272
|
const keys = Object.keys(data.variants);
|
|
34312
35273
|
if (keys.length === 0) {
|
|
34313
35274
|
ctx.addIssue({
|
|
34314
|
-
code:
|
|
35275
|
+
code: z70.ZodIssueCode.custom,
|
|
34315
35276
|
message: "`variants` must contain at least one variant key",
|
|
34316
35277
|
path: ["variants"]
|
|
34317
35278
|
});
|
|
34318
35279
|
}
|
|
34319
35280
|
if (data.defaultVariant && !Object.prototype.hasOwnProperty.call(data.variants, data.defaultVariant)) {
|
|
34320
35281
|
ctx.addIssue({
|
|
34321
|
-
code:
|
|
35282
|
+
code: z70.ZodIssueCode.custom,
|
|
34322
35283
|
message: "`defaultVariant` must be a key present in `variants`",
|
|
34323
35284
|
path: ["defaultVariant"]
|
|
34324
35285
|
});
|
|
@@ -34328,7 +35289,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34328
35289
|
if (!result.valid) {
|
|
34329
35290
|
for (const error of result.errors) {
|
|
34330
35291
|
ctx.addIssue({
|
|
34331
|
-
code:
|
|
35292
|
+
code: z70.ZodIssueCode.custom,
|
|
34332
35293
|
message: `${key}: ${error.message}`,
|
|
34333
35294
|
path: ["variants", key]
|
|
34334
35295
|
});
|
|
@@ -34339,7 +35300,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34339
35300
|
for (const key of Object.keys(data.variantOptions)) {
|
|
34340
35301
|
if (!Object.prototype.hasOwnProperty.call(data.variants, key)) {
|
|
34341
35302
|
ctx.addIssue({
|
|
34342
|
-
code:
|
|
35303
|
+
code: z70.ZodIssueCode.custom,
|
|
34343
35304
|
message: "`variantOptions` key must exist in `variants`",
|
|
34344
35305
|
path: ["variantOptions", key]
|
|
34345
35306
|
});
|
|
@@ -34348,58 +35309,58 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34348
35309
|
}
|
|
34349
35310
|
}
|
|
34350
35311
|
});
|
|
34351
|
-
var themeSourceSchema =
|
|
34352
|
-
var activeThemeSchema =
|
|
35312
|
+
var themeSourceSchema = z70.enum(["local", "cms"]).optional();
|
|
35313
|
+
var activeThemeSchema = z70.string().regex(/^[a-z0-9][a-z0-9-_]*$/, {
|
|
34353
35314
|
message: "Theme name must be lowercase alphanumeric with hyphens/underscores"
|
|
34354
35315
|
}).max(64, "Theme name too long").optional();
|
|
34355
35316
|
function isValidConfigBlockKind(kind) {
|
|
34356
35317
|
if (getBlockDefinition(kind)) return true;
|
|
34357
35318
|
return /^custom\.[a-z][a-z0-9-]*$/.test(kind);
|
|
34358
35319
|
}
|
|
34359
|
-
var layoutBlockKindSchema =
|
|
35320
|
+
var layoutBlockKindSchema = z70.string().refine(isValidConfigBlockKind, {
|
|
34360
35321
|
message: 'Block kind must be a system block (e.g., "block.hero") or a custom block (e.g., "custom.my-block")'
|
|
34361
35322
|
});
|
|
34362
|
-
var layoutFooterBlockSchema =
|
|
34363
|
-
id:
|
|
35323
|
+
var layoutFooterBlockSchema = z70.object({
|
|
35324
|
+
id: z70.string().min(1).optional(),
|
|
34364
35325
|
kind: layoutBlockKindSchema,
|
|
34365
35326
|
// Allow omitted content for blocks that rely on defaults.
|
|
34366
|
-
content:
|
|
35327
|
+
content: z70.record(z70.string(), z70.unknown()).optional()
|
|
34367
35328
|
}).strict();
|
|
34368
|
-
var layoutConfigSchema =
|
|
34369
|
-
footerBlocks:
|
|
35329
|
+
var layoutConfigSchema = z70.object({
|
|
35330
|
+
footerBlocks: z70.array(layoutFooterBlockSchema).optional()
|
|
34370
35331
|
}).strict();
|
|
34371
|
-
var sdkWorkflowIdSchema2 =
|
|
35332
|
+
var sdkWorkflowIdSchema2 = z70.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
|
|
34372
35333
|
message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens"
|
|
34373
35334
|
});
|
|
34374
|
-
var sdkWorkflowEndpointSchema2 =
|
|
34375
|
-
var sdkWorkflowTriggerSchema2 =
|
|
34376
|
-
|
|
35335
|
+
var sdkWorkflowEndpointSchema2 = z70.string().min(1).max(SDK_WORKFLOW_ENDPOINT_MAX_LENGTH).regex(SDK_WORKFLOW_ENDPOINT_PATTERN, { message: 'Workflow endpoint must be a site-relative path starting with "/"' });
|
|
35336
|
+
var sdkWorkflowTriggerSchema2 = z70.discriminatedUnion("type", [
|
|
35337
|
+
z70.object({ type: z70.literal("manual") }).strict()
|
|
34377
35338
|
]);
|
|
34378
|
-
var sdkWorkflowConfirmationSchema2 =
|
|
34379
|
-
title:
|
|
34380
|
-
body:
|
|
35339
|
+
var sdkWorkflowConfirmationSchema2 = z70.object({
|
|
35340
|
+
title: z70.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
|
|
35341
|
+
body: z70.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
|
|
34381
35342
|
}).strict();
|
|
34382
|
-
var sdkWorkflowConfigSchema2 =
|
|
35343
|
+
var sdkWorkflowConfigSchema2 = z70.object({
|
|
34383
35344
|
id: sdkWorkflowIdSchema2,
|
|
34384
|
-
title:
|
|
34385
|
-
description:
|
|
34386
|
-
contentType:
|
|
35345
|
+
title: z70.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
|
|
35346
|
+
description: z70.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
|
|
35347
|
+
contentType: z70.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
|
|
34387
35348
|
endpoint: sdkWorkflowEndpointSchema2,
|
|
34388
|
-
triggers:
|
|
35349
|
+
triggers: z70.array(sdkWorkflowTriggerSchema2).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
|
|
34389
35350
|
confirmation: sdkWorkflowConfirmationSchema2.optional()
|
|
34390
35351
|
}).strict();
|
|
34391
|
-
var sdkWorkflowsSchema2 =
|
|
35352
|
+
var sdkWorkflowsSchema2 = z70.array(sdkWorkflowConfigSchema2).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
|
|
34392
35353
|
const ids = workflows.map((workflow) => workflow.id);
|
|
34393
35354
|
return ids.length === new Set(ids).size;
|
|
34394
35355
|
}, { message: "Workflow IDs must be unique" }).optional();
|
|
34395
|
-
var riverbankSiteConfigSchema =
|
|
34396
|
-
siteId:
|
|
35356
|
+
var riverbankSiteConfigSchema = z70.object({
|
|
35357
|
+
siteId: z70.string().uuid(),
|
|
34397
35358
|
previewUrl: sdkSiteUrlSchema.optional(),
|
|
34398
35359
|
liveUrl: sdkSiteUrlSchema.optional(),
|
|
34399
35360
|
theme: sdkThemeConfigSchema2.optional(),
|
|
34400
35361
|
styles: siteStyleConfigSchema,
|
|
34401
35362
|
layout: layoutConfigSchema.optional(),
|
|
34402
|
-
customBlocks:
|
|
35363
|
+
customBlocks: z70.array(sdkCustomBlockSchema).max(100, "Maximum 100 custom blocks per site").refine(
|
|
34403
35364
|
// Ensure unique block IDs
|
|
34404
35365
|
(blocks) => {
|
|
34405
35366
|
const ids = blocks.map((b) => b.id);
|
|
@@ -34412,7 +35373,7 @@ var riverbankSiteConfigSchema = z69.object({
|
|
|
34412
35373
|
workflows: sdkWorkflowsSchema2,
|
|
34413
35374
|
content: contentConfigSchema.optional(),
|
|
34414
35375
|
// CLI-related configuration (Phase 4)
|
|
34415
|
-
contentDir:
|
|
35376
|
+
contentDir: z70.string().optional(),
|
|
34416
35377
|
sync: syncConfigSchema,
|
|
34417
35378
|
deploy: deployConfigSchema,
|
|
34418
35379
|
// Theme sync configuration (Phase 5)
|