@riverbankcms/sdk 0.77.1 → 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-DVUG7GK4.mjs → PreviewEditorSidebar-RIKFQ72L.mjs} +4916 -4847
- package/dist/{PreviewEditorUI-P7RN4CDS.mjs → PreviewEditorUI-XO7TUWKK.mjs} +3 -3
- package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +154 -154
- 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/index.d.ts +1 -0
- 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/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/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/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/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/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/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 +36 -24
- 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 +64 -18
- 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 +24 -0
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +31 -3
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +33 -1
- 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-2SPENC5M.mjs → chunk-F7RTCZYN.mjs} +229 -50
- package/dist/{chunk-IENWFSLO.mjs → chunk-NIDXI46P.mjs} +1 -1
- package/dist/{chunk-KWJPDZH2.mjs → chunk-OECWLDHN.mjs} +2770 -620
- package/dist/{chunk-VX7B5VAC.mjs → chunk-SVMMM2NA.mjs} +8 -0
- package/dist/{chunk-6SMUFTXD.mjs → chunk-SXOLGNMX.mjs} +1 -1
- package/dist/{chunk-ZYEJLCTN.mjs → chunk-TXDES5P2.mjs} +2 -2
- package/dist/cli/index.mjs +1677 -440
- 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 +7070 -4561
- 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 +1040 -278
- 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 +6089 -3792
- 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-6UT2S7KZ.mjs → sdk-runtime-ZJLKC6DR.mjs} +6 -6
- package/dist/server/components.mjs +2635 -1262
- package/dist/server/config-validation.mjs +1271 -509
- package/dist/server/config.mjs +1271 -509
- package/dist/server/data.mjs +1040 -278
- package/dist/server/index.mjs +488 -246
- package/dist/server/next.mjs +4087 -2147
- package/dist/server/page-converter.mjs +571 -115
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +2636 -1263
- package/dist/server/rendering.mjs +2654 -1268
- package/dist/server/routing.mjs +1729 -489
- package/dist/server/server.mjs +1532 -530
- package/dist/server/theme-bridge.mjs +3151 -131
- package/dist/server/theme.mjs +10 -1
- package/dist/styles/index.css +488 -48
- package/package.json +2 -1
- package/dist/SdkPreviewModeRuntime-KLPX47SE.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
package/dist/server/config.mjs
CHANGED
|
@@ -44,7 +44,7 @@ function fallbackBinding(...sources) {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
// src/config/validation.ts
|
|
47
|
-
import { z as
|
|
47
|
+
import { z as z70 } from "zod";
|
|
48
48
|
|
|
49
49
|
// ../api/src/apiEndpointTypes.ts
|
|
50
50
|
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
@@ -3948,6 +3948,14 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
3948
3948
|
responseKind: "json",
|
|
3949
3949
|
errors: []
|
|
3950
3950
|
},
|
|
3951
|
+
applyDiscountCode: {
|
|
3952
|
+
path: "/public/sites/{siteId}/bookings/discounts/apply",
|
|
3953
|
+
method: "POST",
|
|
3954
|
+
tags: ["site-{siteId}", "booking-discounts"],
|
|
3955
|
+
auth: "public",
|
|
3956
|
+
responseKind: "json",
|
|
3957
|
+
errors: ["validation:invalid_input", "rate_limit:exceeded"]
|
|
3958
|
+
},
|
|
3951
3959
|
// Batch endpoint for block loader requests (reduces SSR fan-out)
|
|
3952
3960
|
batchBlockLoaders: {
|
|
3953
3961
|
path: "/public/sites/{siteId}/block-loaders/batch",
|
|
@@ -6287,6 +6295,27 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
6287
6295
|
}
|
|
6288
6296
|
};
|
|
6289
6297
|
|
|
6298
|
+
// ../core/src/location.ts
|
|
6299
|
+
function normalizeLocationAddressText(value) {
|
|
6300
|
+
if (typeof value !== "string") {
|
|
6301
|
+
return null;
|
|
6302
|
+
}
|
|
6303
|
+
const trimmed = value.trim();
|
|
6304
|
+
return trimmed ? trimmed : null;
|
|
6305
|
+
}
|
|
6306
|
+
function hasLocationCoordinates(value) {
|
|
6307
|
+
return typeof value?.lat === "number" && typeof value?.lng === "number";
|
|
6308
|
+
}
|
|
6309
|
+
function toLocationCoordinates(value) {
|
|
6310
|
+
if (!hasLocationCoordinates(value)) {
|
|
6311
|
+
return null;
|
|
6312
|
+
}
|
|
6313
|
+
return {
|
|
6314
|
+
lat: value.lat,
|
|
6315
|
+
lng: value.lng
|
|
6316
|
+
};
|
|
6317
|
+
}
|
|
6318
|
+
|
|
6290
6319
|
// ../api/src/accessAdmin.ts
|
|
6291
6320
|
import { z } from "zod";
|
|
6292
6321
|
var managedDomainAddOnPricingSnapshotSchema = z.object({
|
|
@@ -6429,27 +6458,6 @@ function formatKeyAsLabel(key) {
|
|
|
6429
6458
|
// ../blocks/src/system/manifest/schema.ts
|
|
6430
6459
|
import { z as z4 } from "zod";
|
|
6431
6460
|
|
|
6432
|
-
// ../core/src/location.ts
|
|
6433
|
-
function normalizeLocationAddressText(value) {
|
|
6434
|
-
if (typeof value !== "string") {
|
|
6435
|
-
return null;
|
|
6436
|
-
}
|
|
6437
|
-
const trimmed = value.trim();
|
|
6438
|
-
return trimmed ? trimmed : null;
|
|
6439
|
-
}
|
|
6440
|
-
function hasLocationCoordinates(value) {
|
|
6441
|
-
return typeof value?.lat === "number" && typeof value?.lng === "number";
|
|
6442
|
-
}
|
|
6443
|
-
function toLocationCoordinates(value) {
|
|
6444
|
-
if (!hasLocationCoordinates(value)) {
|
|
6445
|
-
return null;
|
|
6446
|
-
}
|
|
6447
|
-
return {
|
|
6448
|
-
lat: value.lat,
|
|
6449
|
-
lng: value.lng
|
|
6450
|
-
};
|
|
6451
|
-
}
|
|
6452
|
-
|
|
6453
6461
|
// ../media-core/src/transformRect.ts
|
|
6454
6462
|
function isValidTransformRectStructure(rect) {
|
|
6455
6463
|
if (!Array.isArray(rect) || rect.length !== 4) return false;
|
|
@@ -7574,6 +7582,9 @@ function makeBoundaryId(previousBlockId, nextBlockId) {
|
|
|
7574
7582
|
const next = encodeURIComponent(nextBlockId);
|
|
7575
7583
|
return asDesignBoundaryId(`boundary:${previous}:${next}`);
|
|
7576
7584
|
}
|
|
7585
|
+
function assertNever(value, message = "Unhandled Theme V2 variant") {
|
|
7586
|
+
throw new Error(`${message}: ${String(value)}`);
|
|
7587
|
+
}
|
|
7577
7588
|
function brandNonEmptyString(value, label) {
|
|
7578
7589
|
if (value.length === 0) {
|
|
7579
7590
|
throw new Error(`${label} must be a non-empty string.`);
|
|
@@ -7601,6 +7612,10 @@ var tileTreatmentValues = [
|
|
|
7601
7612
|
"quiet",
|
|
7602
7613
|
"brand-depth"
|
|
7603
7614
|
];
|
|
7615
|
+
var eventListTreatmentValues = [
|
|
7616
|
+
"plain",
|
|
7617
|
+
"lined-panel"
|
|
7618
|
+
];
|
|
7604
7619
|
var eyebrowTreatmentValues = [
|
|
7605
7620
|
"plain",
|
|
7606
7621
|
"pill",
|
|
@@ -7658,6 +7673,7 @@ function defineBlockDesignCapability(capability) {
|
|
|
7658
7673
|
imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
|
|
7659
7674
|
testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"],
|
|
7660
7675
|
tileTreatments: capability.tileTreatments ?? ["default"],
|
|
7676
|
+
eventListTreatments: capability.eventListTreatments ?? ["plain"],
|
|
7661
7677
|
eyebrowTreatments: capability.eyebrowTreatments ?? ["plain"],
|
|
7662
7678
|
...capability.headingDecorations ? { headingDecorations: capability.headingDecorations } : {},
|
|
7663
7679
|
...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
|
|
@@ -7682,9 +7698,98 @@ var blockAppearancePresets = [
|
|
|
7682
7698
|
transitionAfter: "soft-fade-short",
|
|
7683
7699
|
emphasis: "high",
|
|
7684
7700
|
sectionHeight: "hero",
|
|
7701
|
+
heroComposition: "center",
|
|
7702
|
+
heroTypographyScale: "display",
|
|
7685
7703
|
imageSurfaceTreatment: { kind: "neutral-wash" }
|
|
7686
7704
|
}
|
|
7687
7705
|
}),
|
|
7706
|
+
defineBlockAppearancePreset({
|
|
7707
|
+
kind: "block-design",
|
|
7708
|
+
id: "hero-bottom-left-panel",
|
|
7709
|
+
target: "hero",
|
|
7710
|
+
label: "Bottom-left panel hero",
|
|
7711
|
+
blockKinds: ["block.hero"],
|
|
7712
|
+
constraints: {
|
|
7713
|
+
layoutFamilies: ["centered", "compact"]
|
|
7714
|
+
},
|
|
7715
|
+
optionGroups: [
|
|
7716
|
+
{
|
|
7717
|
+
id: "image-surface-treatment",
|
|
7718
|
+
label: "Treatment",
|
|
7719
|
+
selectedOptionId: "neutral-scrim",
|
|
7720
|
+
options: [
|
|
7721
|
+
{
|
|
7722
|
+
id: "neutral-scrim",
|
|
7723
|
+
label: "Neutral scrim",
|
|
7724
|
+
designPatch: {
|
|
7725
|
+
imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
|
|
7726
|
+
}
|
|
7727
|
+
},
|
|
7728
|
+
{
|
|
7729
|
+
id: "brand-scrim-primary",
|
|
7730
|
+
label: "Brand scrim",
|
|
7731
|
+
designPatch: {
|
|
7732
|
+
imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "balanced" }
|
|
7733
|
+
}
|
|
7734
|
+
}
|
|
7735
|
+
]
|
|
7736
|
+
}
|
|
7737
|
+
],
|
|
7738
|
+
layoutPatches: [
|
|
7739
|
+
{
|
|
7740
|
+
constraints: {
|
|
7741
|
+
layoutVariantKeys: ["micro"]
|
|
7742
|
+
},
|
|
7743
|
+
designPatch: {
|
|
7744
|
+
sectionHeight: "banner",
|
|
7745
|
+
heroTypographyScale: "editorial"
|
|
7746
|
+
}
|
|
7747
|
+
}
|
|
7748
|
+
],
|
|
7749
|
+
design: {
|
|
7750
|
+
sectionSurface: "hero-image",
|
|
7751
|
+
contentFrame: panelFrame("raised"),
|
|
7752
|
+
itemSurface: "none",
|
|
7753
|
+
transitionAfter: "soft-fade-short",
|
|
7754
|
+
emphasis: "high",
|
|
7755
|
+
sectionHeight: "immersive",
|
|
7756
|
+
heroComposition: "bottom-left",
|
|
7757
|
+
heroTypographyScale: "display",
|
|
7758
|
+
imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
|
|
7759
|
+
}
|
|
7760
|
+
}),
|
|
7761
|
+
defineBlockAppearancePreset({
|
|
7762
|
+
kind: "block-design",
|
|
7763
|
+
id: "hero-poster-image",
|
|
7764
|
+
target: "hero",
|
|
7765
|
+
label: "Poster image hero",
|
|
7766
|
+
blockKinds: ["block.hero"],
|
|
7767
|
+
constraints: {
|
|
7768
|
+
layoutFamilies: ["centered", "compact"]
|
|
7769
|
+
},
|
|
7770
|
+
layoutPatches: [
|
|
7771
|
+
{
|
|
7772
|
+
constraints: {
|
|
7773
|
+
layoutVariantKeys: ["micro"]
|
|
7774
|
+
},
|
|
7775
|
+
designPatch: {
|
|
7776
|
+
sectionHeight: "banner",
|
|
7777
|
+
heroTypographyScale: "display"
|
|
7778
|
+
}
|
|
7779
|
+
}
|
|
7780
|
+
],
|
|
7781
|
+
design: {
|
|
7782
|
+
sectionSurface: "hero-image",
|
|
7783
|
+
contentFrame: plainFrame,
|
|
7784
|
+
itemSurface: "none",
|
|
7785
|
+
transitionAfter: "soft-fade-short",
|
|
7786
|
+
emphasis: "high",
|
|
7787
|
+
sectionHeight: "immersive",
|
|
7788
|
+
heroComposition: "center",
|
|
7789
|
+
heroTypographyScale: "poster",
|
|
7790
|
+
imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "strong" }
|
|
7791
|
+
}
|
|
7792
|
+
}),
|
|
7688
7793
|
defineBlockAppearancePreset({
|
|
7689
7794
|
kind: "block-design",
|
|
7690
7795
|
id: "hero-brand-scrim",
|
|
@@ -7734,6 +7839,8 @@ var blockAppearancePresets = [
|
|
|
7734
7839
|
transitionAfter: "soft-fade-short",
|
|
7735
7840
|
emphasis: "high",
|
|
7736
7841
|
sectionHeight: "immersive",
|
|
7842
|
+
heroComposition: "center",
|
|
7843
|
+
heroTypographyScale: "display",
|
|
7737
7844
|
imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
|
|
7738
7845
|
}
|
|
7739
7846
|
}),
|
|
@@ -7786,6 +7893,8 @@ var blockAppearancePresets = [
|
|
|
7786
7893
|
transitionAfter: "soft-fade-short",
|
|
7787
7894
|
emphasis: "high",
|
|
7788
7895
|
sectionHeight: "immersive",
|
|
7896
|
+
heroComposition: "center",
|
|
7897
|
+
heroTypographyScale: "display",
|
|
7789
7898
|
imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
|
|
7790
7899
|
imageSurfaceMotion: "fixed-frame",
|
|
7791
7900
|
eyebrowTreatment: "accent-pill-bounce"
|
|
@@ -7806,6 +7915,8 @@ var blockAppearancePresets = [
|
|
|
7806
7915
|
itemSurface: "none",
|
|
7807
7916
|
transitionAfter: "soft-fade-short",
|
|
7808
7917
|
emphasis: "high",
|
|
7918
|
+
heroComposition: "center",
|
|
7919
|
+
heroTypographyScale: "editorial",
|
|
7809
7920
|
eyebrowTreatment: "accent-pill-bounce"
|
|
7810
7921
|
}
|
|
7811
7922
|
}),
|
|
@@ -7820,7 +7931,82 @@ var blockAppearancePresets = [
|
|
|
7820
7931
|
contentFrame: panelFrame("inset"),
|
|
7821
7932
|
itemSurface: "none",
|
|
7822
7933
|
transitionAfter: "none",
|
|
7823
|
-
emphasis: "high"
|
|
7934
|
+
emphasis: "high",
|
|
7935
|
+
heroComposition: "center",
|
|
7936
|
+
heroTypographyScale: "editorial"
|
|
7937
|
+
}
|
|
7938
|
+
}),
|
|
7939
|
+
defineBlockAppearancePreset({
|
|
7940
|
+
kind: "block-design",
|
|
7941
|
+
id: "hero-split-editorial",
|
|
7942
|
+
target: "hero",
|
|
7943
|
+
label: "Editorial split hero",
|
|
7944
|
+
blockKinds: ["block.hero"],
|
|
7945
|
+
constraints: {
|
|
7946
|
+
layoutFamilies: ["split"]
|
|
7947
|
+
},
|
|
7948
|
+
design: {
|
|
7949
|
+
sectionSurface: "base",
|
|
7950
|
+
contentFrame: plainFrame,
|
|
7951
|
+
itemSurface: "none",
|
|
7952
|
+
transitionAfter: "soft-fade-short",
|
|
7953
|
+
emphasis: "high",
|
|
7954
|
+
heroTypographyScale: "editorial"
|
|
7955
|
+
}
|
|
7956
|
+
}),
|
|
7957
|
+
defineBlockAppearancePreset({
|
|
7958
|
+
kind: "block-design",
|
|
7959
|
+
id: "hero-split-brand",
|
|
7960
|
+
target: "hero",
|
|
7961
|
+
label: "Brand split hero",
|
|
7962
|
+
blockKinds: ["block.hero"],
|
|
7963
|
+
constraints: {
|
|
7964
|
+
layoutFamilies: ["split"]
|
|
7965
|
+
},
|
|
7966
|
+
design: {
|
|
7967
|
+
sectionSurface: "brand-depth-band",
|
|
7968
|
+
contentFrame: plainFrame,
|
|
7969
|
+
itemSurface: "none",
|
|
7970
|
+
transitionAfter: "soft-fade-short",
|
|
7971
|
+
emphasis: "high",
|
|
7972
|
+
heroTypographyScale: "display",
|
|
7973
|
+
eyebrowTreatment: "accent-pill-bounce"
|
|
7974
|
+
}
|
|
7975
|
+
}),
|
|
7976
|
+
defineBlockAppearancePreset({
|
|
7977
|
+
kind: "block-design",
|
|
7978
|
+
id: "hero-split-soft-panel",
|
|
7979
|
+
target: "hero",
|
|
7980
|
+
label: "Soft panel split hero",
|
|
7981
|
+
blockKinds: ["block.hero"],
|
|
7982
|
+
constraints: {
|
|
7983
|
+
layoutFamilies: ["split"]
|
|
7984
|
+
},
|
|
7985
|
+
design: {
|
|
7986
|
+
sectionSurface: "muted-band",
|
|
7987
|
+
contentFrame: panelFrame("raised"),
|
|
7988
|
+
itemSurface: "none",
|
|
7989
|
+
transitionAfter: "soft-fade-short",
|
|
7990
|
+
emphasis: "high",
|
|
7991
|
+
heroTypographyScale: "editorial"
|
|
7992
|
+
}
|
|
7993
|
+
}),
|
|
7994
|
+
defineBlockAppearancePreset({
|
|
7995
|
+
kind: "block-design",
|
|
7996
|
+
id: "hero-split-accent",
|
|
7997
|
+
target: "hero",
|
|
7998
|
+
label: "Accent split hero",
|
|
7999
|
+
blockKinds: ["block.hero"],
|
|
8000
|
+
constraints: {
|
|
8001
|
+
layoutFamilies: ["split"]
|
|
8002
|
+
},
|
|
8003
|
+
design: {
|
|
8004
|
+
sectionSurface: "accent-band",
|
|
8005
|
+
contentFrame: panelFrame("raised"),
|
|
8006
|
+
itemSurface: "none",
|
|
8007
|
+
transitionAfter: "soft-fade-short",
|
|
8008
|
+
emphasis: "high",
|
|
8009
|
+
heroTypographyScale: "display"
|
|
7824
8010
|
}
|
|
7825
8011
|
}),
|
|
7826
8012
|
defineBlockAppearancePreset({
|
|
@@ -7853,9 +8039,9 @@ var blockAppearancePresets = [
|
|
|
7853
8039
|
}),
|
|
7854
8040
|
defineBlockAppearancePreset({
|
|
7855
8041
|
kind: "block-design",
|
|
7856
|
-
id: "intro-
|
|
8042
|
+
id: "intro-organic-statement",
|
|
7857
8043
|
target: "intro",
|
|
7858
|
-
label: "
|
|
8044
|
+
label: "Organic intro statement",
|
|
7859
8045
|
blockKinds: ["block.intro"],
|
|
7860
8046
|
design: {
|
|
7861
8047
|
sectionSurface: "base",
|
|
@@ -7886,9 +8072,9 @@ var blockAppearancePresets = [
|
|
|
7886
8072
|
}),
|
|
7887
8073
|
defineBlockAppearancePreset({
|
|
7888
8074
|
kind: "block-design",
|
|
7889
|
-
id: "feature-cards-
|
|
8075
|
+
id: "feature-cards-raised-rule",
|
|
7890
8076
|
target: "feature-cards",
|
|
7891
|
-
label: "
|
|
8077
|
+
label: "Raised cards with rule",
|
|
7892
8078
|
blockKinds: ["block.feature-cards"],
|
|
7893
8079
|
design: {
|
|
7894
8080
|
sectionSurface: "base",
|
|
@@ -7917,6 +8103,21 @@ var blockAppearancePresets = [
|
|
|
7917
8103
|
emphasis: "medium"
|
|
7918
8104
|
}
|
|
7919
8105
|
}),
|
|
8106
|
+
defineBlockAppearancePreset({
|
|
8107
|
+
kind: "block-design",
|
|
8108
|
+
id: "events-lined-panel",
|
|
8109
|
+
target: "events",
|
|
8110
|
+
label: "Lined event panel",
|
|
8111
|
+
blockKinds: ["block.event-calendar", "block.event-listing"],
|
|
8112
|
+
design: {
|
|
8113
|
+
sectionSurface: "base",
|
|
8114
|
+
contentFrame: plainFrame,
|
|
8115
|
+
itemSurface: "none",
|
|
8116
|
+
transitionAfter: "none",
|
|
8117
|
+
emphasis: "medium",
|
|
8118
|
+
eventListTreatment: "lined-panel"
|
|
8119
|
+
}
|
|
8120
|
+
}),
|
|
7920
8121
|
defineBlockAppearancePreset({
|
|
7921
8122
|
kind: "block-design",
|
|
7922
8123
|
id: "schedule-details-accent-section",
|
|
@@ -7976,9 +8177,9 @@ var blockAppearancePresets = [
|
|
|
7976
8177
|
}),
|
|
7977
8178
|
defineBlockAppearancePreset({
|
|
7978
8179
|
kind: "block-design",
|
|
7979
|
-
id: "testimonials-
|
|
8180
|
+
id: "testimonials-simple-cards",
|
|
7980
8181
|
target: "testimonials",
|
|
7981
|
-
label: "
|
|
8182
|
+
label: "Simple testimonial cards",
|
|
7982
8183
|
blockKinds: ["block.testimonials"],
|
|
7983
8184
|
design: {
|
|
7984
8185
|
sectionSurface: "base",
|
|
@@ -7990,9 +8191,9 @@ var blockAppearancePresets = [
|
|
|
7990
8191
|
}),
|
|
7991
8192
|
defineBlockAppearancePreset({
|
|
7992
8193
|
kind: "block-design",
|
|
7993
|
-
id: "testimonials-
|
|
8194
|
+
id: "testimonials-raised-panel",
|
|
7994
8195
|
target: "testimonials",
|
|
7995
|
-
label: "
|
|
8196
|
+
label: "Raised testimonial panel",
|
|
7996
8197
|
blockKinds: ["block.testimonials"],
|
|
7997
8198
|
design: {
|
|
7998
8199
|
sectionSurface: "muted-band",
|
|
@@ -8004,9 +8205,9 @@ var blockAppearancePresets = [
|
|
|
8004
8205
|
}),
|
|
8005
8206
|
defineBlockAppearancePreset({
|
|
8006
8207
|
kind: "block-design",
|
|
8007
|
-
id: "testimonials-
|
|
8208
|
+
id: "testimonials-accent-panel",
|
|
8008
8209
|
target: "testimonials",
|
|
8009
|
-
label: "
|
|
8210
|
+
label: "Accent testimonial panel",
|
|
8010
8211
|
blockKinds: ["block.testimonials"],
|
|
8011
8212
|
design: {
|
|
8012
8213
|
sectionSurface: "accent-band",
|
|
@@ -8018,9 +8219,9 @@ var blockAppearancePresets = [
|
|
|
8018
8219
|
}),
|
|
8019
8220
|
defineBlockAppearancePreset({
|
|
8020
8221
|
kind: "block-design",
|
|
8021
|
-
id: "testimonials-accent-quote-
|
|
8222
|
+
id: "testimonials-accent-quote-cards",
|
|
8022
8223
|
target: "testimonials",
|
|
8023
|
-
label: "Accent quote
|
|
8224
|
+
label: "Accent quote cards",
|
|
8024
8225
|
blockKinds: ["block.testimonials"],
|
|
8025
8226
|
design: {
|
|
8026
8227
|
sectionSurface: "accent-band",
|
|
@@ -8033,9 +8234,9 @@ var blockAppearancePresets = [
|
|
|
8033
8234
|
}),
|
|
8034
8235
|
defineBlockAppearancePreset({
|
|
8035
8236
|
kind: "block-design",
|
|
8036
|
-
id: "testimonials-
|
|
8237
|
+
id: "testimonials-brand-background-quotes",
|
|
8037
8238
|
target: "testimonials",
|
|
8038
|
-
label: "
|
|
8239
|
+
label: "Brand background quotes",
|
|
8039
8240
|
blockKinds: ["block.testimonials"],
|
|
8040
8241
|
design: {
|
|
8041
8242
|
sectionSurface: "brand-depth-band",
|
|
@@ -8079,25 +8280,6 @@ var blockAppearancePresets = [
|
|
|
8079
8280
|
emphasis: "low"
|
|
8080
8281
|
}
|
|
8081
8282
|
}),
|
|
8082
|
-
defineBlockAppearancePreset({
|
|
8083
|
-
kind: "block-design",
|
|
8084
|
-
id: "faq-soft-earth-two-column",
|
|
8085
|
-
target: "faq",
|
|
8086
|
-
label: "Soft Earth two-column FAQ",
|
|
8087
|
-
blockKinds: ["block.faq"],
|
|
8088
|
-
design: {
|
|
8089
|
-
sectionSurface: "base",
|
|
8090
|
-
contentFrame: plainFrame,
|
|
8091
|
-
itemSurface: "flat",
|
|
8092
|
-
transitionAfter: "none",
|
|
8093
|
-
emphasis: "medium",
|
|
8094
|
-
accordionIconTreatment: {
|
|
8095
|
-
iconSet: "plus",
|
|
8096
|
-
colorToken: "primary",
|
|
8097
|
-
motion: "swap"
|
|
8098
|
-
}
|
|
8099
|
-
}
|
|
8100
|
-
}),
|
|
8101
8283
|
defineBlockAppearancePreset({
|
|
8102
8284
|
kind: "block-design",
|
|
8103
8285
|
id: "contact-form-panel",
|
|
@@ -9476,7 +9658,8 @@ var accordionSystemSchema = z12.object({
|
|
|
9476
9658
|
icon: z12.object({
|
|
9477
9659
|
style: accordionIconSchema,
|
|
9478
9660
|
position: z12.enum(["left", "right"]),
|
|
9479
|
-
size: z12.enum(["sm", "md", "lg"])
|
|
9661
|
+
size: z12.enum(["sm", "md", "lg"]),
|
|
9662
|
+
colorToken: themeColorTokenSchema.optional()
|
|
9480
9663
|
}),
|
|
9481
9664
|
// Trigger (question) styling
|
|
9482
9665
|
trigger: z12.object({
|
|
@@ -9610,6 +9793,7 @@ var navLinkPaddingXSchema = z16.enum(["none", "tight", "compact", "default", "re
|
|
|
9610
9793
|
var navLinkBorderRadiusSchema = z16.enum(["none", "sm", "md", "full"]);
|
|
9611
9794
|
var navLinkTextSizeSchema = z16.enum(["xs", "sm", "base", "lg"]);
|
|
9612
9795
|
var navLinkLetterSpacingSchema = z16.enum(["normal", "wide", "wider", "widest"]);
|
|
9796
|
+
var navLinkContrastTreatmentSchema = z16.enum(["none", "soft-glow"]);
|
|
9613
9797
|
var navLinkStyleSchema = z16.object({
|
|
9614
9798
|
/** Display name for the style */
|
|
9615
9799
|
name: z16.string().min(1).max(30).optional(),
|
|
@@ -9621,6 +9805,8 @@ var navLinkStyleSchema = z16.object({
|
|
|
9621
9805
|
textSize: navLinkTextSizeSchema.optional(),
|
|
9622
9806
|
/** Optional letter spacing override */
|
|
9623
9807
|
letterSpacing: navLinkLetterSpacingSchema.optional(),
|
|
9808
|
+
/** Optional text-only contrast treatment for transparent/overlay navigation */
|
|
9809
|
+
contrastTreatment: navLinkContrastTreatmentSchema.optional(),
|
|
9624
9810
|
/** Hover/active color token (for color-change effects) */
|
|
9625
9811
|
hoverColorToken: themeColorTokenSchema.nullable().optional(),
|
|
9626
9812
|
/** Padding preset */
|
|
@@ -10050,6 +10236,7 @@ var sectionStylesOverrideSchema = z21.object({
|
|
|
10050
10236
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
10051
10237
|
minHeight: z21.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
|
|
10052
10238
|
tileTreatment: z21.enum(tileTreatmentValues).nullable().optional(),
|
|
10239
|
+
eventListTreatment: z21.enum(eventListTreatmentValues).nullable().optional(),
|
|
10053
10240
|
eyebrowTreatment: z21.enum(eyebrowTreatmentValues).nullable().optional(),
|
|
10054
10241
|
headingDecoration: headingDecorationSchema.nullable().optional(),
|
|
10055
10242
|
// Author-level override consumed by later block/editor rendering phases.
|
|
@@ -10883,6 +11070,34 @@ var paletteVariantsById = new Map(
|
|
|
10883
11070
|
paletteVariants.map((v) => [v.id, v])
|
|
10884
11071
|
);
|
|
10885
11072
|
|
|
11073
|
+
// ../theme-core/src/accordions/siteStyleDefaults.ts
|
|
11074
|
+
var softEarthAccordionSystem = {
|
|
11075
|
+
background: {
|
|
11076
|
+
type: "solid",
|
|
11077
|
+
colorToken: "background"
|
|
11078
|
+
},
|
|
11079
|
+
spacing: "comfortable",
|
|
11080
|
+
corners: "square",
|
|
11081
|
+
border: null,
|
|
11082
|
+
shadow: null,
|
|
11083
|
+
icon: {
|
|
11084
|
+
style: "plus-minus",
|
|
11085
|
+
position: "right",
|
|
11086
|
+
size: "md",
|
|
11087
|
+
colorToken: "primary"
|
|
11088
|
+
},
|
|
11089
|
+
trigger: {
|
|
11090
|
+
textColorToken: "text",
|
|
11091
|
+
fontWeight: "medium"
|
|
11092
|
+
},
|
|
11093
|
+
hover: {
|
|
11094
|
+
textColorToken: "primary"
|
|
11095
|
+
},
|
|
11096
|
+
content: {
|
|
11097
|
+
textColorToken: "neutral-700"
|
|
11098
|
+
}
|
|
11099
|
+
};
|
|
11100
|
+
|
|
10886
11101
|
// ../theme-core/src/site-styles/headerLooks.ts
|
|
10887
11102
|
function asHeaderLookId(value) {
|
|
10888
11103
|
return value;
|
|
@@ -10938,7 +11153,7 @@ var headerLayoutCatalog = [
|
|
|
10938
11153
|
description: "Detached header chrome that sits over the opening section.",
|
|
10939
11154
|
structure: "floating-shell",
|
|
10940
11155
|
variant: "floating",
|
|
10941
|
-
defaultPositioning: "
|
|
11156
|
+
defaultPositioning: "sticky",
|
|
10942
11157
|
shrinkOnScroll: true,
|
|
10943
11158
|
maxRecommendedNavItems: 5,
|
|
10944
11159
|
allowedLogoShapes: ["none", "text-only", "horizontal"]
|
|
@@ -10955,7 +11170,9 @@ var headerStyleCatalog = [
|
|
|
10955
11170
|
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10956
11171
|
navInteraction: "color-change",
|
|
10957
11172
|
surface: "neutral",
|
|
10958
|
-
|
|
11173
|
+
defaultDepth: "none",
|
|
11174
|
+
navTypography: "plain",
|
|
11175
|
+
moods: ["calm", "professional", "editorial"]
|
|
10959
11176
|
},
|
|
10960
11177
|
{
|
|
10961
11178
|
id: asHeaderStyleId("fine-line"),
|
|
@@ -10964,7 +11181,9 @@ var headerStyleCatalog = [
|
|
|
10964
11181
|
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10965
11182
|
navInteraction: "underline-grow",
|
|
10966
11183
|
surface: "bordered",
|
|
10967
|
-
|
|
11184
|
+
defaultDepth: "line",
|
|
11185
|
+
navTypography: "plain",
|
|
11186
|
+
moods: ["calm", "professional", "editorial"]
|
|
10968
11187
|
},
|
|
10969
11188
|
{
|
|
10970
11189
|
id: asHeaderStyleId("soft-bar"),
|
|
@@ -10973,7 +11192,9 @@ var headerStyleCatalog = [
|
|
|
10973
11192
|
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10974
11193
|
navInteraction: "pill-background",
|
|
10975
11194
|
surface: "soft",
|
|
10976
|
-
|
|
11195
|
+
defaultDepth: "line",
|
|
11196
|
+
navTypography: "plain",
|
|
11197
|
+
moods: ["calm", "professional"]
|
|
10977
11198
|
},
|
|
10978
11199
|
{
|
|
10979
11200
|
id: asHeaderStyleId("pill-nav"),
|
|
@@ -10982,7 +11203,9 @@ var headerStyleCatalog = [
|
|
|
10982
11203
|
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10983
11204
|
navInteraction: "pill-background",
|
|
10984
11205
|
surface: "soft",
|
|
10985
|
-
|
|
11206
|
+
defaultDepth: "none",
|
|
11207
|
+
navTypography: "plain",
|
|
11208
|
+
moods: ["calm"]
|
|
10986
11209
|
},
|
|
10987
11210
|
{
|
|
10988
11211
|
id: asHeaderStyleId("brand-bar"),
|
|
@@ -10991,7 +11214,9 @@ var headerStyleCatalog = [
|
|
|
10991
11214
|
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10992
11215
|
navInteraction: "color-change",
|
|
10993
11216
|
surface: "brand-solid",
|
|
10994
|
-
|
|
11217
|
+
defaultDepth: "none",
|
|
11218
|
+
navTypography: "brand-caps",
|
|
11219
|
+
moods: ["professional", "expressive", "utility"]
|
|
10995
11220
|
},
|
|
10996
11221
|
{
|
|
10997
11222
|
id: asHeaderStyleId("brand-underline"),
|
|
@@ -11000,7 +11225,9 @@ var headerStyleCatalog = [
|
|
|
11000
11225
|
supportedLayoutIds: supportedLayouts(["classic"]),
|
|
11001
11226
|
navInteraction: "underline-grow",
|
|
11002
11227
|
surface: "brand-solid",
|
|
11003
|
-
|
|
11228
|
+
defaultDepth: "none",
|
|
11229
|
+
navTypography: "brand-caps",
|
|
11230
|
+
moods: ["expressive"]
|
|
11004
11231
|
},
|
|
11005
11232
|
{
|
|
11006
11233
|
id: asHeaderStyleId("brand-pill"),
|
|
@@ -11009,7 +11236,9 @@ var headerStyleCatalog = [
|
|
|
11009
11236
|
supportedLayoutIds: supportedLayouts(["classic", "centered", "floating"]),
|
|
11010
11237
|
navInteraction: "pill-background",
|
|
11011
11238
|
surface: "brand-solid",
|
|
11012
|
-
|
|
11239
|
+
defaultDepth: "none",
|
|
11240
|
+
navTypography: "brand-caps",
|
|
11241
|
+
moods: ["expressive"]
|
|
11013
11242
|
},
|
|
11014
11243
|
{
|
|
11015
11244
|
id: asHeaderStyleId("serif-line"),
|
|
@@ -11018,7 +11247,9 @@ var headerStyleCatalog = [
|
|
|
11018
11247
|
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
11019
11248
|
navInteraction: "underline-grow",
|
|
11020
11249
|
surface: "bordered",
|
|
11021
|
-
|
|
11250
|
+
defaultDepth: "line",
|
|
11251
|
+
navTypography: "heading",
|
|
11252
|
+
moods: ["editorial", "calm"]
|
|
11022
11253
|
},
|
|
11023
11254
|
{
|
|
11024
11255
|
id: asHeaderStyleId("flat-tabs"),
|
|
@@ -11027,16 +11258,20 @@ var headerStyleCatalog = [
|
|
|
11027
11258
|
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
11028
11259
|
navInteraction: "flat-block",
|
|
11029
11260
|
surface: "bordered",
|
|
11030
|
-
|
|
11261
|
+
defaultDepth: "shadow",
|
|
11262
|
+
navTypography: "quiet-caps",
|
|
11263
|
+
moods: ["professional", "utility", "expressive"]
|
|
11031
11264
|
},
|
|
11032
11265
|
{
|
|
11033
11266
|
id: asHeaderStyleId("glass"),
|
|
11034
11267
|
label: "Glass",
|
|
11035
11268
|
description: "Translucent chrome with frosted navigation backing.",
|
|
11036
|
-
supportedLayoutIds: supportedLayouts(["
|
|
11269
|
+
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
11037
11270
|
navInteraction: "glass-backed",
|
|
11038
11271
|
surface: "floating",
|
|
11039
|
-
|
|
11272
|
+
defaultDepth: "shadow",
|
|
11273
|
+
navTypography: "plain",
|
|
11274
|
+
moods: ["expressive", "calm"]
|
|
11040
11275
|
},
|
|
11041
11276
|
{
|
|
11042
11277
|
id: asHeaderStyleId("minimal-surface"),
|
|
@@ -11045,7 +11280,9 @@ var headerStyleCatalog = [
|
|
|
11045
11280
|
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
11046
11281
|
navInteraction: "color-change",
|
|
11047
11282
|
surface: "floating",
|
|
11048
|
-
|
|
11283
|
+
defaultDepth: "none",
|
|
11284
|
+
navTypography: "plain",
|
|
11285
|
+
moods: ["editorial", "calm"]
|
|
11049
11286
|
},
|
|
11050
11287
|
{
|
|
11051
11288
|
id: asHeaderStyleId("soft-shell"),
|
|
@@ -11054,7 +11291,9 @@ var headerStyleCatalog = [
|
|
|
11054
11291
|
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
11055
11292
|
navInteraction: "pill-background",
|
|
11056
11293
|
surface: "floating",
|
|
11057
|
-
|
|
11294
|
+
defaultDepth: "shadow",
|
|
11295
|
+
navTypography: "plain",
|
|
11296
|
+
moods: ["calm", "professional"]
|
|
11058
11297
|
},
|
|
11059
11298
|
{
|
|
11060
11299
|
id: asHeaderStyleId("split-glass"),
|
|
@@ -11063,7 +11302,9 @@ var headerStyleCatalog = [
|
|
|
11063
11302
|
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
11064
11303
|
navInteraction: "glass-backed",
|
|
11065
11304
|
surface: "floating",
|
|
11066
|
-
|
|
11305
|
+
defaultDepth: "shadow",
|
|
11306
|
+
navTypography: "quiet-caps",
|
|
11307
|
+
moods: ["expressive"]
|
|
11067
11308
|
},
|
|
11068
11309
|
{
|
|
11069
11310
|
id: asHeaderStyleId("split-pill"),
|
|
@@ -11072,7 +11313,9 @@ var headerStyleCatalog = [
|
|
|
11072
11313
|
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
11073
11314
|
navInteraction: "pill-background",
|
|
11074
11315
|
surface: "floating",
|
|
11075
|
-
|
|
11316
|
+
defaultDepth: "shadow",
|
|
11317
|
+
navTypography: "heading",
|
|
11318
|
+
moods: ["calm", "editorial"]
|
|
11076
11319
|
}
|
|
11077
11320
|
];
|
|
11078
11321
|
var headerLayoutsById = new Map(
|
|
@@ -11086,7 +11329,6 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
|
|
|
11086
11329
|
asHeaderLayoutId("classic"),
|
|
11087
11330
|
headerStyleRepairChain([
|
|
11088
11331
|
"minimal",
|
|
11089
|
-
"glass",
|
|
11090
11332
|
"fine-line",
|
|
11091
11333
|
"soft-bar",
|
|
11092
11334
|
"pill-nav",
|
|
@@ -11153,7 +11395,13 @@ var headerStyleRepairOrder = /* @__PURE__ */ new Map(
|
|
|
11153
11395
|
],
|
|
11154
11396
|
[
|
|
11155
11397
|
asHeaderStyleId("glass"),
|
|
11156
|
-
headerStyleRepairChain([
|
|
11398
|
+
headerStyleRepairChain([
|
|
11399
|
+
"glass",
|
|
11400
|
+
"soft-shell",
|
|
11401
|
+
"fine-line",
|
|
11402
|
+
"minimal-surface",
|
|
11403
|
+
"minimal"
|
|
11404
|
+
])
|
|
11157
11405
|
],
|
|
11158
11406
|
[
|
|
11159
11407
|
asHeaderStyleId("soft-shell"),
|
|
@@ -11265,6 +11513,23 @@ function getCompatibleHeaderStyleIds(layoutId) {
|
|
|
11265
11513
|
}
|
|
11266
11514
|
);
|
|
11267
11515
|
}
|
|
11516
|
+
function themedHeaderShadow(theme) {
|
|
11517
|
+
switch (theme.shadow.elevation) {
|
|
11518
|
+
case "none":
|
|
11519
|
+
return void 0;
|
|
11520
|
+
case "low":
|
|
11521
|
+
return { elevation: "sm" };
|
|
11522
|
+
case "medium":
|
|
11523
|
+
return { elevation: "md" };
|
|
11524
|
+
case "high":
|
|
11525
|
+
return { elevation: "lg" };
|
|
11526
|
+
default:
|
|
11527
|
+
return assertNever(
|
|
11528
|
+
theme.shadow.elevation,
|
|
11529
|
+
"Unhandled theme shadow elevation"
|
|
11530
|
+
);
|
|
11531
|
+
}
|
|
11532
|
+
}
|
|
11268
11533
|
function solidBrandHeader(theme) {
|
|
11269
11534
|
const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
|
|
11270
11535
|
return {
|
|
@@ -11414,9 +11679,7 @@ function practicalUtilityHeader(theme) {
|
|
|
11414
11679
|
navColor: "text",
|
|
11415
11680
|
navStyle: "solid",
|
|
11416
11681
|
navWeight: "semibold",
|
|
11417
|
-
shadow:
|
|
11418
|
-
elevation: "sm"
|
|
11419
|
-
},
|
|
11682
|
+
shadow: themedHeaderShadow(theme),
|
|
11420
11683
|
border: {
|
|
11421
11684
|
style: "solid",
|
|
11422
11685
|
width: "thin",
|
|
@@ -11485,6 +11748,7 @@ function floatingGlassHeader(theme) {
|
|
|
11485
11748
|
return {
|
|
11486
11749
|
...transparentOverlayHeader(theme),
|
|
11487
11750
|
variant: "floating",
|
|
11751
|
+
positioning: "sticky",
|
|
11488
11752
|
navStyle: "frosted",
|
|
11489
11753
|
navContainer: {
|
|
11490
11754
|
type: "glass",
|
|
@@ -12000,7 +12264,7 @@ var typographyPresets = [
|
|
|
12000
12264
|
heroTypography: {
|
|
12001
12265
|
headlineSize: "6xl",
|
|
12002
12266
|
headlineLineHeight: "tight",
|
|
12003
|
-
subheadlineSize: "
|
|
12267
|
+
subheadlineSize: "2xl",
|
|
12004
12268
|
subheadlineLineHeight: "normal",
|
|
12005
12269
|
microHeadlineSize: "6xl",
|
|
12006
12270
|
microHeadlineLineHeight: "tight",
|
|
@@ -12018,6 +12282,8 @@ var typographyPresetsById = new Map(
|
|
|
12018
12282
|
);
|
|
12019
12283
|
|
|
12020
12284
|
// ../theme-core/src/site-styles/curatedSiteStyles.ts
|
|
12285
|
+
var SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
|
|
12286
|
+
var SOFT_EARTH_SITE_STYLE_ID = asSiteStyleId(SOFT_EARTH_SITE_STYLE_ID_VALUE);
|
|
12021
12287
|
var curatedSiteStyleIdValues = [
|
|
12022
12288
|
"site-style:calm-studio",
|
|
12023
12289
|
"site-style:clear-professional",
|
|
@@ -12029,7 +12295,7 @@ var curatedSiteStyleIdValues = [
|
|
|
12029
12295
|
"site-style:personal-retreat-journal",
|
|
12030
12296
|
"site-style:tactile-workshop",
|
|
12031
12297
|
"site-style:modern-wellness",
|
|
12032
|
-
|
|
12298
|
+
SOFT_EARTH_SITE_STYLE_ID_VALUE,
|
|
12033
12299
|
"site-style:bold-launch",
|
|
12034
12300
|
"site-style:south-west-twerk-school"
|
|
12035
12301
|
];
|
|
@@ -12111,7 +12377,10 @@ function uniqueContentFrameKinds() {
|
|
|
12111
12377
|
var generatedContentFrameKinds = uniqueContentFrameKinds();
|
|
12112
12378
|
function defineCuratedSiteStyle(input) {
|
|
12113
12379
|
const legacyHeaderLookIds = input.recommendedHeaderLookIds ?? ["clean-base"];
|
|
12114
|
-
const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(
|
|
12380
|
+
const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(
|
|
12381
|
+
legacyHeaderLookIds,
|
|
12382
|
+
input.tokenRecipes
|
|
12383
|
+
);
|
|
12115
12384
|
const typographyPresetChoices = input.typographyPresetChoices ?? defaultTypographyPresetChoicesForRecipe(input.tokenRecipes.typography);
|
|
12116
12385
|
const defaultTypographyPresetId = input.defaultTypographyPresetId ? asTypographyPresetId(input.defaultTypographyPresetId) : typographyPresetChoices[0].id;
|
|
12117
12386
|
if (!typographyPresetChoices.some(
|
|
@@ -12144,6 +12413,7 @@ function defineCuratedSiteStyle(input) {
|
|
|
12144
12413
|
supportedTransitions: generatedDesignOptionCatalog.transitions
|
|
12145
12414
|
},
|
|
12146
12415
|
...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
|
|
12416
|
+
...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
|
|
12147
12417
|
recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
|
|
12148
12418
|
defaultHeaderSelection: input.defaultHeaderSelection ? {
|
|
12149
12419
|
layoutId: asHeaderLayoutId(input.defaultHeaderSelection.layoutId),
|
|
@@ -12202,7 +12472,69 @@ function nonEmptyHeaderStyleChoices(choices, fallbackLayoutId) {
|
|
|
12202
12472
|
};
|
|
12203
12473
|
return [first, ...choices.slice(1)];
|
|
12204
12474
|
}
|
|
12205
|
-
function
|
|
12475
|
+
function uniqueCompatibleHeaderStyleChoices(choices, fallbackLayoutId) {
|
|
12476
|
+
const compatible = new Set(getCompatibleHeaderStyleIds(fallbackLayoutId));
|
|
12477
|
+
const seen = /* @__PURE__ */ new Set();
|
|
12478
|
+
const unique = choices.filter((choice) => {
|
|
12479
|
+
if (!compatible.has(choice.id)) return false;
|
|
12480
|
+
if (seen.has(choice.id)) return false;
|
|
12481
|
+
seen.add(choice.id);
|
|
12482
|
+
return true;
|
|
12483
|
+
});
|
|
12484
|
+
return nonEmptyHeaderStyleChoices(unique, fallbackLayoutId);
|
|
12485
|
+
}
|
|
12486
|
+
function inferredHeaderStyleValuesForRecipes(layoutId, recipes) {
|
|
12487
|
+
switch (layoutId) {
|
|
12488
|
+
case "classic":
|
|
12489
|
+
if (isExpressiveRecipe(recipes)) {
|
|
12490
|
+
return [
|
|
12491
|
+
"brand-bar",
|
|
12492
|
+
"brand-underline",
|
|
12493
|
+
"flat-tabs",
|
|
12494
|
+
"brand-pill",
|
|
12495
|
+
"fine-line"
|
|
12496
|
+
];
|
|
12497
|
+
}
|
|
12498
|
+
if (recipes.spacing === "compact") {
|
|
12499
|
+
return ["flat-tabs", "fine-line", "minimal", "brand-bar"];
|
|
12500
|
+
}
|
|
12501
|
+
if (isSerifTypographyRecipe(recipes)) {
|
|
12502
|
+
return ["serif-line", "fine-line", "minimal", "soft-bar"];
|
|
12503
|
+
}
|
|
12504
|
+
if (recipes.radius === "rounded" || recipes.radius === "pill") {
|
|
12505
|
+
return ["soft-bar", "pill-nav", "fine-line", "minimal"];
|
|
12506
|
+
}
|
|
12507
|
+
return ["fine-line", "minimal", "soft-bar", "brand-bar"];
|
|
12508
|
+
case "centered":
|
|
12509
|
+
if (isSerifTypographyRecipe(recipes)) {
|
|
12510
|
+
return ["serif-line", "fine-line", "minimal", "soft-bar"];
|
|
12511
|
+
}
|
|
12512
|
+
if (isExpressiveRecipe(recipes)) {
|
|
12513
|
+
return ["brand-pill", "flat-tabs", "brand-bar", "fine-line"];
|
|
12514
|
+
}
|
|
12515
|
+
if (recipes.radius === "rounded" || recipes.radius === "pill") {
|
|
12516
|
+
return ["soft-bar", "pill-nav", "fine-line", "minimal"];
|
|
12517
|
+
}
|
|
12518
|
+
return ["minimal", "fine-line", "soft-bar"];
|
|
12519
|
+
case "floating":
|
|
12520
|
+
if (isExpressiveRecipe(recipes)) {
|
|
12521
|
+
return ["glass", "split-glass", "brand-pill", "soft-shell"];
|
|
12522
|
+
}
|
|
12523
|
+
if (isSerifTypographyRecipe(recipes)) {
|
|
12524
|
+
return ["split-pill", "minimal-surface", "soft-shell"];
|
|
12525
|
+
}
|
|
12526
|
+
return ["soft-shell", "minimal-surface", "glass"];
|
|
12527
|
+
default:
|
|
12528
|
+
return [];
|
|
12529
|
+
}
|
|
12530
|
+
}
|
|
12531
|
+
function isExpressiveRecipe(recipes) {
|
|
12532
|
+
return recipes.contrast === "maximum" || recipes.shadow === "layered" || recipes.motion === "expressive";
|
|
12533
|
+
}
|
|
12534
|
+
function isSerifTypographyRecipe(recipes) {
|
|
12535
|
+
return recipes.typography === "serif-editorial" || recipes.typography === "classic-serif";
|
|
12536
|
+
}
|
|
12537
|
+
function inferHeaderCurationFromLegacyLooks(lookIds, recipes) {
|
|
12206
12538
|
const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter(
|
|
12207
12539
|
(selection) => Boolean(selection)
|
|
12208
12540
|
);
|
|
@@ -12215,8 +12547,15 @@ function inferHeaderCurationFromLegacyLooks(lookIds) {
|
|
|
12215
12547
|
);
|
|
12216
12548
|
const stylesByLayout = {};
|
|
12217
12549
|
for (const layoutChoice of layoutChoices) {
|
|
12218
|
-
const
|
|
12219
|
-
|
|
12550
|
+
const legacyStyleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
|
|
12551
|
+
const inferredStyleChoices = inferredHeaderStyleValuesForRecipes(
|
|
12552
|
+
layoutChoice.id,
|
|
12553
|
+
recipes
|
|
12554
|
+
).map((styleId) => headerStyleChoice(styleId));
|
|
12555
|
+
stylesByLayout[unbrandHeaderLayoutId(layoutChoice.id)] = uniqueCompatibleHeaderStyleChoices(
|
|
12556
|
+
[...legacyStyleChoices, ...inferredStyleChoices],
|
|
12557
|
+
layoutChoice.id
|
|
12558
|
+
);
|
|
12220
12559
|
}
|
|
12221
12560
|
return {
|
|
12222
12561
|
defaultHeaderSelection,
|
|
@@ -12636,10 +12975,10 @@ var curatedSiteStyles = [
|
|
|
12636
12975
|
]
|
|
12637
12976
|
}),
|
|
12638
12977
|
defineCuratedSiteStyle({
|
|
12639
|
-
id:
|
|
12978
|
+
id: SOFT_EARTH_SITE_STYLE_ID,
|
|
12640
12979
|
name: "Soft Earth",
|
|
12641
12980
|
description: "Warm, grounded, and editorial for yoga studios, retreats, and wellbeing communities.",
|
|
12642
|
-
generationBrief: "Use cream space, terracotta CTAs, olive
|
|
12981
|
+
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.",
|
|
12643
12982
|
siteCreatorSelection: {
|
|
12644
12983
|
kind: "site_creator_keyword_heuristic",
|
|
12645
12984
|
priority: 45
|
|
@@ -12709,14 +13048,18 @@ var curatedSiteStyles = [
|
|
|
12709
13048
|
paragraphSize: "default",
|
|
12710
13049
|
headingSize: "editorial"
|
|
12711
13050
|
}
|
|
12712
|
-
}
|
|
13051
|
+
},
|
|
13052
|
+
accordions: softEarthAccordionSystem
|
|
13053
|
+
},
|
|
13054
|
+
defaultBlockVariants: {
|
|
13055
|
+
"block.faq": "question-columns"
|
|
12713
13056
|
},
|
|
12714
13057
|
recommendedAppearancePresetIds: [
|
|
12715
13058
|
"hero-brand-scrim",
|
|
12716
|
-
"intro-
|
|
12717
|
-
"feature-cards-
|
|
12718
|
-
"
|
|
12719
|
-
"
|
|
13059
|
+
"intro-organic-statement",
|
|
13060
|
+
"feature-cards-raised-rule",
|
|
13061
|
+
"events-lined-panel",
|
|
13062
|
+
"testimonials-brand-background-quotes",
|
|
12720
13063
|
"contact-form-panel"
|
|
12721
13064
|
],
|
|
12722
13065
|
recommendedHeaderLookIds: [
|
|
@@ -12820,7 +13163,7 @@ var curatedSiteStyles = [
|
|
|
12820
13163
|
"hero-brand-scrim-fixed-frame",
|
|
12821
13164
|
"body-text-editorial-intro",
|
|
12822
13165
|
"schedule-details-brand-depth",
|
|
12823
|
-
"testimonials-accent-quote-
|
|
13166
|
+
"testimonials-accent-quote-cards",
|
|
12824
13167
|
"contact-form-brand-depth-card"
|
|
12825
13168
|
],
|
|
12826
13169
|
recommendedHeaderLookIds: [
|
|
@@ -12915,6 +13258,7 @@ var themeV2RuntimeStyleFieldNames = [
|
|
|
12915
13258
|
];
|
|
12916
13259
|
var themeV2BlockSpecificRawStyleFieldNames = [
|
|
12917
13260
|
"_contentCardStyles",
|
|
13261
|
+
"_heroLayoutStyles",
|
|
12918
13262
|
"_textCardStyles"
|
|
12919
13263
|
];
|
|
12920
13264
|
var themeV2NormalEditorRawStyleFieldNames = [
|
|
@@ -12924,6 +13268,10 @@ var themeV2NormalEditorRawStyleFieldNames = [
|
|
|
12924
13268
|
var themeV2NormalEditorRawStyleFieldNameSet = new Set(
|
|
12925
13269
|
themeV2NormalEditorRawStyleFieldNames
|
|
12926
13270
|
);
|
|
13271
|
+
var themeV2CompilerOwnedFieldNames = [
|
|
13272
|
+
...themeV2RuntimeStyleFieldNames,
|
|
13273
|
+
...themeV2BlockSpecificRawStyleFieldNames
|
|
13274
|
+
];
|
|
12927
13275
|
|
|
12928
13276
|
// ../theme-core/src/site-styles/designState.ts
|
|
12929
13277
|
var themeV2DesignStateSchemaVersion = 1;
|
|
@@ -12938,6 +13286,16 @@ var heroLegibilityStrategySchema = z23.enum([
|
|
|
12938
13286
|
"scrim-gradient",
|
|
12939
13287
|
"solid-panel"
|
|
12940
13288
|
]);
|
|
13289
|
+
var heroCompositionIntentSchema = z23.enum([
|
|
13290
|
+
"center",
|
|
13291
|
+
"bottom-left"
|
|
13292
|
+
]);
|
|
13293
|
+
var heroTypographyScaleIntentSchema = z23.enum([
|
|
13294
|
+
"quiet",
|
|
13295
|
+
"editorial",
|
|
13296
|
+
"display",
|
|
13297
|
+
"poster"
|
|
13298
|
+
]);
|
|
12941
13299
|
var sectionHeightIntentSchema = z23.enum([
|
|
12942
13300
|
"default",
|
|
12943
13301
|
"banner",
|
|
@@ -12973,6 +13331,7 @@ var imageSurfaceTreatmentSchema = z23.discriminatedUnion("kind", [
|
|
|
12973
13331
|
]);
|
|
12974
13332
|
var testimonialCardTreatmentSchema = z23.enum(["default", "accent-quote"]);
|
|
12975
13333
|
var tileTreatmentSchema = z23.enum(tileTreatmentValues);
|
|
13334
|
+
var eventListTreatmentSchema = z23.enum(eventListTreatmentValues);
|
|
12976
13335
|
var eyebrowTreatmentSchema = z23.enum(eyebrowTreatmentValues);
|
|
12977
13336
|
function uniqueNonEmpty(values) {
|
|
12978
13337
|
const uniqueValues = [...new Set(values)];
|
|
@@ -13014,10 +13373,13 @@ var blockDesignPlanSchema = z23.object({
|
|
|
13014
13373
|
emphasis: z23.enum(userDesignOptionCatalog.emphases),
|
|
13015
13374
|
sectionHeight: sectionHeightIntentSchema.optional(),
|
|
13016
13375
|
heroLegibility: heroLegibilityStrategySchema.optional(),
|
|
13376
|
+
heroComposition: heroCompositionIntentSchema.optional(),
|
|
13377
|
+
heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
|
|
13017
13378
|
imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
|
|
13018
13379
|
imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
|
|
13019
13380
|
testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
|
|
13020
13381
|
tileTreatment: tileTreatmentSchema.optional(),
|
|
13382
|
+
eventListTreatment: eventListTreatmentSchema.optional(),
|
|
13021
13383
|
eyebrowTreatment: eyebrowTreatmentSchema.optional()
|
|
13022
13384
|
}).strict();
|
|
13023
13385
|
var styleAuthoritySchema = z23.discriminatedUnion("kind", [
|
|
@@ -14417,6 +14779,7 @@ function styledSection(config) {
|
|
|
14417
14779
|
renderBackgroundImage = true,
|
|
14418
14780
|
backgroundImageLoading,
|
|
14419
14781
|
backgroundImageFetchPriority,
|
|
14782
|
+
allowOverflow = false,
|
|
14420
14783
|
fullWidthPath
|
|
14421
14784
|
} = config;
|
|
14422
14785
|
const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
|
|
@@ -14451,7 +14814,7 @@ function styledSection(config) {
|
|
|
14451
14814
|
// No fallback needed - transform handles all cases via defaultSpacing
|
|
14452
14815
|
}
|
|
14453
14816
|
},
|
|
14454
|
-
allowOverflow: {
|
|
14817
|
+
allowOverflow: allowOverflow ? true : {
|
|
14455
14818
|
$bind: {
|
|
14456
14819
|
from: `${bindFrom}.background`,
|
|
14457
14820
|
transforms: [{ id: "background.resolveAllowOverflow" }],
|
|
@@ -15135,6 +15498,14 @@ var tileTreatmentSet = new Set(tileTreatmentValues);
|
|
|
15135
15498
|
function isTileTreatment(value) {
|
|
15136
15499
|
return typeof value === "string" && tileTreatmentSet.has(value);
|
|
15137
15500
|
}
|
|
15501
|
+
var eventListTreatmentClassMap = {
|
|
15502
|
+
plain: "",
|
|
15503
|
+
"lined-panel": "rb-event-list-treatment-lined-panel"
|
|
15504
|
+
};
|
|
15505
|
+
var eventListTreatmentSet = new Set(eventListTreatmentValues);
|
|
15506
|
+
function isEventListTreatment(value) {
|
|
15507
|
+
return typeof value === "string" && eventListTreatmentSet.has(value);
|
|
15508
|
+
}
|
|
15138
15509
|
var sectionClassNameTransform = {
|
|
15139
15510
|
id: "sectionStyles.resolveClassName",
|
|
15140
15511
|
kind: "string",
|
|
@@ -15202,6 +15573,17 @@ var sectionClassNameTransform = {
|
|
|
15202
15573
|
`[sectionStyles] Invalid tileTreatment value in _sectionStyles: "${tileTreatment}". Expected one of: ${tileTreatmentValues.join(", ")}.`
|
|
15203
15574
|
);
|
|
15204
15575
|
}
|
|
15576
|
+
const eventListTreatment = input?.eventListTreatment;
|
|
15577
|
+
if (isEventListTreatment(eventListTreatment)) {
|
|
15578
|
+
const eventListTreatmentClass = eventListTreatmentClassMap[eventListTreatment];
|
|
15579
|
+
if (eventListTreatmentClass) {
|
|
15580
|
+
classes.push(eventListTreatmentClass);
|
|
15581
|
+
}
|
|
15582
|
+
} else if (typeof eventListTreatment === "string" && process.env.NODE_ENV !== "production") {
|
|
15583
|
+
console.warn(
|
|
15584
|
+
`[sectionStyles] Invalid eventListTreatment value in _sectionStyles: "${eventListTreatment}". Expected one of: ${eventListTreatmentValues.join(", ")}.`
|
|
15585
|
+
);
|
|
15586
|
+
}
|
|
15205
15587
|
if (hasFixedFrameBackgroundMotion(input)) {
|
|
15206
15588
|
classes.push(fixedFrameScopeClass);
|
|
15207
15589
|
}
|
|
@@ -15637,6 +16019,35 @@ function sectionState(opts) {
|
|
|
15637
16019
|
);
|
|
15638
16020
|
}
|
|
15639
16021
|
|
|
16022
|
+
// ../blocks/src/system/node/fragments/headingDecoration.ts
|
|
16023
|
+
var defaultBindFrom = "_sectionStyles.headingDecoration";
|
|
16024
|
+
function headingDecoration({
|
|
16025
|
+
bindFrom = defaultBindFrom,
|
|
16026
|
+
family,
|
|
16027
|
+
placement,
|
|
16028
|
+
className
|
|
16029
|
+
}) {
|
|
16030
|
+
return el(
|
|
16031
|
+
"div",
|
|
16032
|
+
{
|
|
16033
|
+
"aria-hidden": "true",
|
|
16034
|
+
className: {
|
|
16035
|
+
$bind: {
|
|
16036
|
+
from: bindFrom,
|
|
16037
|
+
transforms: [
|
|
16038
|
+
{
|
|
16039
|
+
id: "ui.headingDecorationClassName",
|
|
16040
|
+
options: { baseClass: className, family }
|
|
16041
|
+
}
|
|
16042
|
+
]
|
|
16043
|
+
}
|
|
16044
|
+
}
|
|
16045
|
+
},
|
|
16046
|
+
null,
|
|
16047
|
+
when(`${bindFrom}.placement`, { equals: placement })
|
|
16048
|
+
);
|
|
16049
|
+
}
|
|
16050
|
+
|
|
15640
16051
|
// ../blocks/src/system/fragments/types.ts
|
|
15641
16052
|
import { z as z27 } from "zod";
|
|
15642
16053
|
var FRAGMENT_ID_PATTERN = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/i;
|
|
@@ -16415,6 +16826,10 @@ var testimonialsHeadingFragment = defineFragment({
|
|
|
16415
16826
|
when("content.heading"),
|
|
16416
16827
|
bind("content.heading")
|
|
16417
16828
|
),
|
|
16829
|
+
headingDecoration({
|
|
16830
|
+
family: "short-center-rule",
|
|
16831
|
+
placement: "under-centered-heading"
|
|
16832
|
+
}),
|
|
16418
16833
|
text(
|
|
16419
16834
|
{
|
|
16420
16835
|
as: "p",
|
|
@@ -17086,6 +17501,41 @@ var faqHeadingFragment = defineFragment({
|
|
|
17086
17501
|
});
|
|
17087
17502
|
|
|
17088
17503
|
// ../blocks/src/system/fragments/library/faqAccordion.ts
|
|
17504
|
+
function createFaqAccordionLayout(options = {}) {
|
|
17505
|
+
return accordionList({
|
|
17506
|
+
collection: "content.items",
|
|
17507
|
+
itemName: "faqItem",
|
|
17508
|
+
indexName: "faqIndex",
|
|
17509
|
+
accordionProps: {
|
|
17510
|
+
className: options.rootClassName ?? "accordion-root",
|
|
17511
|
+
type: "single",
|
|
17512
|
+
collapsible: true
|
|
17513
|
+
},
|
|
17514
|
+
itemProps: {
|
|
17515
|
+
className: {
|
|
17516
|
+
$bind: {
|
|
17517
|
+
from: "content._cardStyles",
|
|
17518
|
+
transforms: [
|
|
17519
|
+
{
|
|
17520
|
+
id: "boxStyles.all",
|
|
17521
|
+
options: {
|
|
17522
|
+
axis: "all",
|
|
17523
|
+
includeSpacing: false,
|
|
17524
|
+
baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden"
|
|
17525
|
+
}
|
|
17526
|
+
}
|
|
17527
|
+
]
|
|
17528
|
+
},
|
|
17529
|
+
fallback: "rb-faq-item"
|
|
17530
|
+
},
|
|
17531
|
+
iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
|
|
17532
|
+
// Legacy theme accordion style
|
|
17533
|
+
iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
|
|
17534
|
+
},
|
|
17535
|
+
triggerFrom: "faqItem.question",
|
|
17536
|
+
contentFrom: "faqItem.answer"
|
|
17537
|
+
});
|
|
17538
|
+
}
|
|
17089
17539
|
var faqAccordionFragment = defineFragment({
|
|
17090
17540
|
id: "faqAccordion",
|
|
17091
17541
|
title: "FAQ Accordion",
|
|
@@ -17119,40 +17569,7 @@ var faqAccordionFragment = defineFragment({
|
|
|
17119
17569
|
}
|
|
17120
17570
|
}
|
|
17121
17571
|
],
|
|
17122
|
-
layout:
|
|
17123
|
-
collection: "content.items",
|
|
17124
|
-
itemName: "faqItem",
|
|
17125
|
-
indexName: "faqIndex",
|
|
17126
|
-
accordionProps: {
|
|
17127
|
-
className: "accordion-root",
|
|
17128
|
-
// CSS-first: all styling handled by theme CSS
|
|
17129
|
-
type: "single",
|
|
17130
|
-
collapsible: true
|
|
17131
|
-
},
|
|
17132
|
-
itemProps: {
|
|
17133
|
-
className: {
|
|
17134
|
-
$bind: {
|
|
17135
|
-
from: "content._cardStyles",
|
|
17136
|
-
transforms: [
|
|
17137
|
-
{
|
|
17138
|
-
id: "boxStyles.all",
|
|
17139
|
-
options: {
|
|
17140
|
-
axis: "all",
|
|
17141
|
-
includeSpacing: false,
|
|
17142
|
-
baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden rb-border"
|
|
17143
|
-
}
|
|
17144
|
-
}
|
|
17145
|
-
]
|
|
17146
|
-
},
|
|
17147
|
-
fallback: "rb-faq-item"
|
|
17148
|
-
},
|
|
17149
|
-
iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
|
|
17150
|
-
// Legacy theme accordion style
|
|
17151
|
-
iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
|
|
17152
|
-
},
|
|
17153
|
-
triggerFrom: "faqItem.question",
|
|
17154
|
-
contentFrom: "faqItem.answer"
|
|
17155
|
-
})
|
|
17572
|
+
layout: createFaqAccordionLayout()
|
|
17156
17573
|
});
|
|
17157
17574
|
|
|
17158
17575
|
// ../blocks/src/system/fragments/library/card.ts
|
|
@@ -18205,6 +18622,7 @@ var microLayout = styledSection({
|
|
|
18205
18622
|
function splitLayoutWith(children) {
|
|
18206
18623
|
return styledSection({
|
|
18207
18624
|
children: styledContainer({
|
|
18625
|
+
baseClassName: "rb-relative rb-isolate rb-overflow-visible",
|
|
18208
18626
|
children: {
|
|
18209
18627
|
type: "grid",
|
|
18210
18628
|
props: {
|
|
@@ -18229,6 +18647,7 @@ function splitLayoutWith(children) {
|
|
|
18229
18647
|
// The split variants render the image as a real grid column, so suppress
|
|
18230
18648
|
// the default absolute background image layer while keeping color/overlay.
|
|
18231
18649
|
renderBackgroundImage: false,
|
|
18650
|
+
allowOverflow: true,
|
|
18232
18651
|
baseClass: ""
|
|
18233
18652
|
});
|
|
18234
18653
|
}
|
|
@@ -18382,6 +18801,21 @@ function introHeading(className) {
|
|
|
18382
18801
|
bind("content.title")
|
|
18383
18802
|
);
|
|
18384
18803
|
}
|
|
18804
|
+
function introHeadingGroup(className) {
|
|
18805
|
+
return stack(
|
|
18806
|
+
{
|
|
18807
|
+
gap: "sm",
|
|
18808
|
+
className: "rb-intro-heading-group"
|
|
18809
|
+
},
|
|
18810
|
+
[
|
|
18811
|
+
introHeading(className),
|
|
18812
|
+
headingDecoration({
|
|
18813
|
+
family: "organic-squiggle",
|
|
18814
|
+
placement: "after-heading"
|
|
18815
|
+
})
|
|
18816
|
+
]
|
|
18817
|
+
);
|
|
18818
|
+
}
|
|
18385
18819
|
function introBody(className = "rb-prose rb-max-w-none") {
|
|
18386
18820
|
return richText({ className }, bind("content.body"));
|
|
18387
18821
|
}
|
|
@@ -18400,6 +18834,10 @@ function introCopyStack(options = {}) {
|
|
|
18400
18834
|
},
|
|
18401
18835
|
[
|
|
18402
18836
|
introHeading(options.headingClassName ?? "rb-intro-title"),
|
|
18837
|
+
headingDecoration({
|
|
18838
|
+
family: "organic-squiggle",
|
|
18839
|
+
placement: "after-heading"
|
|
18840
|
+
}),
|
|
18403
18841
|
introBody(options.bodyClassName),
|
|
18404
18842
|
introCtas(options.ctaJustify)
|
|
18405
18843
|
]
|
|
@@ -18439,7 +18877,7 @@ var statementCopyLayout = styledSection({
|
|
|
18439
18877
|
className: "rb-intro rb-intro-statement rb-grid rb-grid-cols-1 rb-gap-8 rb-md-grid-cols-2 rb-md-items-start"
|
|
18440
18878
|
},
|
|
18441
18879
|
[
|
|
18442
|
-
|
|
18880
|
+
introHeadingGroup("rb-intro-title rb-max-w-xl"),
|
|
18443
18881
|
stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
|
|
18444
18882
|
introBody(),
|
|
18445
18883
|
introCtas("start")
|
|
@@ -18460,7 +18898,7 @@ var statementMediaLayout = styledSection({
|
|
|
18460
18898
|
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"
|
|
18461
18899
|
},
|
|
18462
18900
|
[
|
|
18463
|
-
|
|
18901
|
+
introHeadingGroup("rb-intro-title rb-max-w-xl"),
|
|
18464
18902
|
stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
|
|
18465
18903
|
introBody(),
|
|
18466
18904
|
introCtas("start")
|
|
@@ -19462,6 +19900,9 @@ function isNodeDefinitionArray(layout) {
|
|
|
19462
19900
|
}
|
|
19463
19901
|
var headingLayout = fragmentLayoutNode(faqHeadingFragment.layout);
|
|
19464
19902
|
var accordionLayout = fragmentLayoutNode(faqAccordionFragment.layout);
|
|
19903
|
+
var questionColumnsAccordionLayout = createFaqAccordionLayout({
|
|
19904
|
+
rootClassName: "accordion-root rb-faq-question-columns rb-grid rb-grid-cols-1 rb-gap-4 rb-lg-grid-cols-2"
|
|
19905
|
+
});
|
|
19465
19906
|
var defaultLayout = styledSection({
|
|
19466
19907
|
children: styledContainer({
|
|
19467
19908
|
baseClassName: "rb-relative rb-isolate",
|
|
@@ -19475,11 +19916,24 @@ var twoColumnLayout = styledSection({
|
|
|
19475
19916
|
children: el(
|
|
19476
19917
|
"div",
|
|
19477
19918
|
{
|
|
19478
|
-
className: "rb-faq-
|
|
19919
|
+
className: "rb-faq-split-heading rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
|
|
19479
19920
|
},
|
|
19480
19921
|
[
|
|
19481
|
-
el("div", { className: "rb-faq-
|
|
19482
|
-
el("div", { className: "rb-faq-
|
|
19922
|
+
el("div", { className: "rb-faq-split-heading-copy" }, [headingLayout]),
|
|
19923
|
+
el("div", { className: "rb-faq-split-heading-accordion" }, [accordionLayout])
|
|
19924
|
+
]
|
|
19925
|
+
)
|
|
19926
|
+
}),
|
|
19927
|
+
baseClass: ""
|
|
19928
|
+
});
|
|
19929
|
+
var questionColumnsLayout = styledSection({
|
|
19930
|
+
children: styledContainer({
|
|
19931
|
+
baseClassName: "rb-relative rb-isolate",
|
|
19932
|
+
children: stack(
|
|
19933
|
+
{ gap: "xl", className: "rb-w-full" },
|
|
19934
|
+
[
|
|
19935
|
+
headingLayout,
|
|
19936
|
+
questionColumnsAccordionLayout
|
|
19483
19937
|
]
|
|
19484
19938
|
)
|
|
19485
19939
|
}),
|
|
@@ -19504,7 +19958,8 @@ var faqManifest = createBlockManifest({
|
|
|
19504
19958
|
layout: defaultLayout,
|
|
19505
19959
|
variants: {
|
|
19506
19960
|
default: defaultLayout,
|
|
19507
|
-
"two-column": twoColumnLayout
|
|
19961
|
+
"two-column": twoColumnLayout,
|
|
19962
|
+
"question-columns": questionColumnsLayout
|
|
19508
19963
|
},
|
|
19509
19964
|
defaultVariant: "default",
|
|
19510
19965
|
variantOptions: {
|
|
@@ -19515,6 +19970,10 @@ var faqManifest = createBlockManifest({
|
|
|
19515
19970
|
"two-column": {
|
|
19516
19971
|
label: "Two column",
|
|
19517
19972
|
description: "A left heading column with FAQ items on the right."
|
|
19973
|
+
},
|
|
19974
|
+
"question-columns": {
|
|
19975
|
+
label: "Question columns",
|
|
19976
|
+
description: "A full-width heading above FAQ items split into two columns."
|
|
19518
19977
|
}
|
|
19519
19978
|
},
|
|
19520
19979
|
description: "Accordion of frequently asked questions and answers.",
|
|
@@ -19636,9 +20095,21 @@ var eyebrowTreatmentClassMap = {
|
|
|
19636
20095
|
"accent-pill-bounce": "rb-eyebrow-treatment-pill rb-eyebrow-treatment-accent rb-eyebrow-treatment-pill-bounce"
|
|
19637
20096
|
};
|
|
19638
20097
|
var eyebrowTreatmentSet = new Set(eyebrowTreatmentValues);
|
|
20098
|
+
var headingDecorationFamilySet = new Set(visibleHeadingDecorationFamilyValues);
|
|
20099
|
+
var headingDecorationPlacementSet = new Set(visibleHeadingDecorationPlacementValues);
|
|
20100
|
+
var headingDecorationColorTokenSet = new Set(headingDecorationColorTokenValues);
|
|
19639
20101
|
function isEyebrowTreatment(value) {
|
|
19640
20102
|
return typeof value === "string" && eyebrowTreatmentSet.has(value);
|
|
19641
20103
|
}
|
|
20104
|
+
function isHeadingDecorationFamily(value) {
|
|
20105
|
+
return typeof value === "string" && headingDecorationFamilySet.has(value);
|
|
20106
|
+
}
|
|
20107
|
+
function isHeadingDecorationPlacement(value) {
|
|
20108
|
+
return typeof value === "string" && headingDecorationPlacementSet.has(value);
|
|
20109
|
+
}
|
|
20110
|
+
function isHeadingDecorationColorToken(value) {
|
|
20111
|
+
return typeof value === "string" && headingDecorationColorTokenSet.has(value);
|
|
20112
|
+
}
|
|
19642
20113
|
var imageGalleryCornerClassMap = {
|
|
19643
20114
|
none: "",
|
|
19644
20115
|
sm: "rb-rounded-sm",
|
|
@@ -19742,6 +20213,10 @@ var sectionStateToneTransform = {
|
|
|
19742
20213
|
summary: "Map semantic section-state kind to feedback tone",
|
|
19743
20214
|
run: (value) => sectionStateToneFromUnknown(value)
|
|
19744
20215
|
};
|
|
20216
|
+
var heroTitleLengthThresholds = {
|
|
20217
|
+
medium: { maxCharacters: 42, maxWords: 6 },
|
|
20218
|
+
long: { maxCharacters: 78, maxWords: 11 }
|
|
20219
|
+
};
|
|
19745
20220
|
function isPlainObject(value) {
|
|
19746
20221
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
19747
20222
|
}
|
|
@@ -19749,6 +20224,14 @@ function readString(obj, key) {
|
|
|
19749
20224
|
const v = obj[key];
|
|
19750
20225
|
return typeof v === "string" ? v : void 0;
|
|
19751
20226
|
}
|
|
20227
|
+
function resolveGeneratedHeroLayoutStyles(content) {
|
|
20228
|
+
const raw = content._heroLayoutStyles;
|
|
20229
|
+
return isPlainObject(raw) ? raw : null;
|
|
20230
|
+
}
|
|
20231
|
+
function readHeroLayoutString(content, generatedKey, fallbackKey = generatedKey) {
|
|
20232
|
+
const generated = resolveGeneratedHeroLayoutStyles(content);
|
|
20233
|
+
return generated && typeof generated[generatedKey] === "string" ? generated[generatedKey] : readString(content, fallbackKey);
|
|
20234
|
+
}
|
|
19752
20235
|
function resolveHeroVariant(content) {
|
|
19753
20236
|
const variant = readString(content, "variant");
|
|
19754
20237
|
if (variant && variant.trim()) return variant.trim();
|
|
@@ -19757,14 +20240,14 @@ function resolveHeroVariant(content) {
|
|
|
19757
20240
|
return null;
|
|
19758
20241
|
}
|
|
19759
20242
|
function resolveHeroContentAlignment(content) {
|
|
19760
|
-
const raw =
|
|
20243
|
+
const raw = readHeroLayoutString(content, "contentAlignment");
|
|
19761
20244
|
if (raw === "left" || raw === "center" || raw === "right") return raw;
|
|
19762
20245
|
const variant = resolveHeroVariant(content);
|
|
19763
20246
|
if (variant === "split" || variant === "splitReverse") return "left";
|
|
19764
20247
|
return "center";
|
|
19765
20248
|
}
|
|
19766
20249
|
function resolveHeroVerticalAlignment(content) {
|
|
19767
|
-
const raw =
|
|
20250
|
+
const raw = readHeroLayoutString(content, "verticalAlignment");
|
|
19768
20251
|
if (raw === "top" || raw === "center" || raw === "bottom") return raw;
|
|
19769
20252
|
const sectionStyles = asPartialObject(content._sectionStyles);
|
|
19770
20253
|
const minHeight = sectionStyles?.minHeight;
|
|
@@ -19774,11 +20257,29 @@ function resolveHeroVerticalAlignment(content) {
|
|
|
19774
20257
|
return "top";
|
|
19775
20258
|
}
|
|
19776
20259
|
function resolveHeroContentMaxWidth(content) {
|
|
19777
|
-
const raw =
|
|
20260
|
+
const raw = readHeroLayoutString(content, "contentMaxWidth");
|
|
19778
20261
|
if (raw === "default" || raw === "narrow" || raw === "medium" || raw === "wide")
|
|
19779
20262
|
return raw;
|
|
19780
20263
|
return "default";
|
|
19781
20264
|
}
|
|
20265
|
+
function resolveHeroTypographyScale(content) {
|
|
20266
|
+
const raw = readHeroLayoutString(
|
|
20267
|
+
content,
|
|
20268
|
+
"typographyScale",
|
|
20269
|
+
"heroTypographyScale"
|
|
20270
|
+
);
|
|
20271
|
+
if (raw === "quiet" || raw === "editorial" || raw === "display" || raw === "poster") {
|
|
20272
|
+
return raw;
|
|
20273
|
+
}
|
|
20274
|
+
return null;
|
|
20275
|
+
}
|
|
20276
|
+
function resolveHeroTitleLength(content) {
|
|
20277
|
+
const headline = readString(content, "headline")?.trim() ?? "";
|
|
20278
|
+
const wordCount = headline.length === 0 ? 0 : headline.split(/\s+/).length;
|
|
20279
|
+
if (headline.length > heroTitleLengthThresholds.long.maxCharacters || wordCount > heroTitleLengthThresholds.long.maxWords) return "long";
|
|
20280
|
+
if (headline.length > heroTitleLengthThresholds.medium.maxCharacters || wordCount > heroTitleLengthThresholds.medium.maxWords) return "medium";
|
|
20281
|
+
return "short";
|
|
20282
|
+
}
|
|
19782
20283
|
var heroContentWrapperClassSchema = z33.object({
|
|
19783
20284
|
base: z33.string().optional()
|
|
19784
20285
|
});
|
|
@@ -19791,6 +20292,8 @@ var heroContentWrapperClassTransform = {
|
|
|
19791
20292
|
const content = isPlainObject(value) ? value : isPlainObject(context.data) ? context.data : {};
|
|
19792
20293
|
const alignment = resolveHeroContentAlignment(content);
|
|
19793
20294
|
const maxWidth = resolveHeroContentMaxWidth(content);
|
|
20295
|
+
const typographyScale = resolveHeroTypographyScale(content);
|
|
20296
|
+
const titleLength = resolveHeroTitleLength(content);
|
|
19794
20297
|
const textAlignClass = alignment === "center" ? "rb-text-center" : alignment === "right" ? "rb-text-right" : "rb-text-left";
|
|
19795
20298
|
const maxWidthClass = maxWidth === "narrow" ? "rb-max-w-2xl" : maxWidth === "medium" ? "rb-max-w-3xl" : maxWidth === "wide" ? "rb-max-w-5xl" : "";
|
|
19796
20299
|
const positionClass = alignment === "center" ? "rb-mx-auto" : alignment === "right" ? "rb-ml-auto" : "";
|
|
@@ -19798,7 +20301,9 @@ var heroContentWrapperClassTransform = {
|
|
|
19798
20301
|
options?.base,
|
|
19799
20302
|
textAlignClass,
|
|
19800
20303
|
maxWidthClass,
|
|
19801
|
-
positionClass
|
|
20304
|
+
positionClass,
|
|
20305
|
+
typographyScale ? `rb-hero-typography-${typographyScale}` : "",
|
|
20306
|
+
`rb-hero-title-${titleLength}`
|
|
19802
20307
|
]);
|
|
19803
20308
|
}
|
|
19804
20309
|
};
|
|
@@ -20098,11 +20603,67 @@ var uiTransforms = [
|
|
|
20098
20603
|
const treatment = isEyebrowTreatment(value) ? value : "plain";
|
|
20099
20604
|
return joinClasses3([baseClass, eyebrowTreatmentClassMap[treatment]]);
|
|
20100
20605
|
}
|
|
20606
|
+
},
|
|
20607
|
+
{
|
|
20608
|
+
id: "ui.headingDecorationClassName",
|
|
20609
|
+
kind: "string",
|
|
20610
|
+
summary: "Apply constrained Theme V2 heading decoration classes",
|
|
20611
|
+
run: (value, options) => {
|
|
20612
|
+
const baseClass = typeof options?.baseClass === "string" && options.baseClass.trim() ? options.baseClass : "rb-heading-decoration";
|
|
20613
|
+
const decoration = asPartialObject(value);
|
|
20614
|
+
const family = isHeadingDecorationFamily(decoration?.family) ? decoration.family : null;
|
|
20615
|
+
const allowedFamily = isHeadingDecorationFamily(options?.family) ? options.family : null;
|
|
20616
|
+
const placement = isHeadingDecorationPlacement(decoration?.placement) ? decoration.placement : null;
|
|
20617
|
+
const colorToken = isHeadingDecorationColorToken(decoration?.colorToken) ? decoration.colorToken : "primary";
|
|
20618
|
+
if (!family || !placement) return "rb-hidden";
|
|
20619
|
+
if (allowedFamily && family !== allowedFamily) return "rb-hidden";
|
|
20620
|
+
return joinClasses3([
|
|
20621
|
+
baseClass,
|
|
20622
|
+
`rb-heading-decoration-${family}`,
|
|
20623
|
+
`rb-heading-decoration-placement-${placement}`,
|
|
20624
|
+
`rb-heading-decoration-color-${colorToken}`
|
|
20625
|
+
]);
|
|
20626
|
+
}
|
|
20101
20627
|
}
|
|
20102
20628
|
];
|
|
20103
20629
|
|
|
20104
20630
|
// ../blocks/src/system/transforms/registry/layout.ts
|
|
20105
20631
|
import { z as z34 } from "zod";
|
|
20632
|
+
|
|
20633
|
+
// ../theme-core/src/siteChromePlacement.ts
|
|
20634
|
+
var HEADER_POSITIONINGS = ["static", "sticky", "fixed"];
|
|
20635
|
+
function parseHeaderPositioning(value) {
|
|
20636
|
+
return isHeaderPositioning(value) ? value : "static";
|
|
20637
|
+
}
|
|
20638
|
+
function isHeaderPositioning(value) {
|
|
20639
|
+
return typeof value === "string" && HEADER_POSITIONINGS.includes(value);
|
|
20640
|
+
}
|
|
20641
|
+
function planSiteChromePlacement(positioning) {
|
|
20642
|
+
switch (positioning) {
|
|
20643
|
+
case "static":
|
|
20644
|
+
return {
|
|
20645
|
+
kind: "static",
|
|
20646
|
+
headerRootClassName: null,
|
|
20647
|
+
standaloneShellClassName: null
|
|
20648
|
+
};
|
|
20649
|
+
case "sticky":
|
|
20650
|
+
return {
|
|
20651
|
+
kind: "sticky",
|
|
20652
|
+
headerRootClassName: "rb-sticky rb-top-0",
|
|
20653
|
+
standaloneShellClassName: "sticky top-0 z-40 w-full"
|
|
20654
|
+
};
|
|
20655
|
+
case "fixed":
|
|
20656
|
+
return {
|
|
20657
|
+
kind: "fixed",
|
|
20658
|
+
headerRootClassName: "rb-fixed rb-top-0 rb-left-0 rb-right-0",
|
|
20659
|
+
standaloneShellClassName: "fixed left-0 right-0 top-0 z-40 w-full"
|
|
20660
|
+
};
|
|
20661
|
+
default:
|
|
20662
|
+
return assertNever(positioning);
|
|
20663
|
+
}
|
|
20664
|
+
}
|
|
20665
|
+
|
|
20666
|
+
// ../blocks/src/system/transforms/registry/layout.ts
|
|
20106
20667
|
var joinClasses4 = (parts) => parts.filter(
|
|
20107
20668
|
(part) => typeof part === "string" && part.trim().length > 0
|
|
20108
20669
|
).join(" ").replace(/\s+/g, " ").trim();
|
|
@@ -20218,7 +20779,8 @@ var headerRootClassTransform = {
|
|
|
20218
20779
|
...options
|
|
20219
20780
|
};
|
|
20220
20781
|
const content = asPartialObject(value) ?? {};
|
|
20221
|
-
const positioning =
|
|
20782
|
+
const positioning = parseHeaderPositioning(content.positioning);
|
|
20783
|
+
const placement = planSiteChromePlacement(positioning);
|
|
20222
20784
|
const shrinkOnScroll = Boolean(content.shrinkOnScroll);
|
|
20223
20785
|
const header = asPartialObject(value);
|
|
20224
20786
|
const visuals = resolveHeaderVisualStyles(header, context.theme);
|
|
@@ -20230,14 +20792,14 @@ var headerRootClassTransform = {
|
|
|
20230
20792
|
if (config.blur) classes.push(config.blur);
|
|
20231
20793
|
if (config.blurSupport) classes.push(config.blurSupport);
|
|
20232
20794
|
}
|
|
20233
|
-
if (
|
|
20795
|
+
if (placement.kind === "sticky") {
|
|
20234
20796
|
classes.push(
|
|
20235
20797
|
visuals.isTransparent ? config.stickyTransparent : config.sticky
|
|
20236
20798
|
);
|
|
20237
|
-
} else if (
|
|
20799
|
+
} else if (placement.kind === "fixed") {
|
|
20238
20800
|
classes.push(config.fixed);
|
|
20239
20801
|
}
|
|
20240
|
-
if (shrinkOnScroll &&
|
|
20802
|
+
if (shrinkOnScroll && placement.kind !== "static") {
|
|
20241
20803
|
classes.push(config.shrink);
|
|
20242
20804
|
}
|
|
20243
20805
|
const VALID_VARIANTS = [
|
|
@@ -20769,6 +21331,10 @@ function desktopOnlyDisplay(display) {
|
|
|
20769
21331
|
return `rb-hidden ${LARGE_DISPLAY_CLASSES[display]}`;
|
|
20770
21332
|
}
|
|
20771
21333
|
|
|
21334
|
+
// ../theme-core/src/siteChromeOverlayClearance.ts
|
|
21335
|
+
var SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
|
|
21336
|
+
var SITE_CHROME_VISIBLE_HEADER_SELECTOR = `[${SITE_CHROME_VISIBLE_HEADER_ATTR}="true"]`;
|
|
21337
|
+
|
|
20772
21338
|
// ../blocks/src/system/blocks/site-header.ts
|
|
20773
21339
|
var logoRow = link(
|
|
20774
21340
|
{
|
|
@@ -21041,6 +21607,7 @@ var transparentLayout = inline(
|
|
|
21041
21607
|
);
|
|
21042
21608
|
var floatingLayout = inline(
|
|
21043
21609
|
{
|
|
21610
|
+
[SITE_CHROME_VISIBLE_HEADER_ATTR]: "true",
|
|
21044
21611
|
className: bindProp("$root.theme.header.maxWidth", {
|
|
21045
21612
|
transforms: pipe(
|
|
21046
21613
|
tx("layout.maxWidthClass", {
|
|
@@ -21986,6 +22553,10 @@ var sectionHeading = stack(
|
|
|
21986
22553
|
when("content.title"),
|
|
21987
22554
|
bind("content.title")
|
|
21988
22555
|
),
|
|
22556
|
+
headingDecoration({
|
|
22557
|
+
family: "short-center-rule",
|
|
22558
|
+
placement: "under-centered-heading"
|
|
22559
|
+
}),
|
|
21989
22560
|
richText(
|
|
21990
22561
|
{
|
|
21991
22562
|
className: "rb-feature-cards-description rb-prose rb-mx-auto rb-max-w-none",
|
|
@@ -24409,7 +24980,7 @@ var COLUMN_CLASSES = {
|
|
|
24409
24980
|
};
|
|
24410
24981
|
function getContainerClass(layout, columns) {
|
|
24411
24982
|
if (layout === "compact") {
|
|
24412
|
-
return "event-listing-compact-container rb-flex rb-flex-col
|
|
24983
|
+
return "event-listing-compact-container rb-flex rb-flex-col";
|
|
24413
24984
|
}
|
|
24414
24985
|
if (layout === "stack") {
|
|
24415
24986
|
return "rb-flex rb-flex-col rb-gap-6";
|
|
@@ -27237,6 +27808,7 @@ import { z as z53 } from "zod";
|
|
|
27237
27808
|
var storedProductCartItemSchema = z53.object({
|
|
27238
27809
|
kind: z53.literal("product"),
|
|
27239
27810
|
productId: z53.string().min(1),
|
|
27811
|
+
productCategoryId: z53.string().min(1).optional().nullable(),
|
|
27240
27812
|
variantId: z53.string().min(1).optional().nullable(),
|
|
27241
27813
|
title: z53.string().min(1),
|
|
27242
27814
|
variantTitle: z53.string().optional().nullable(),
|
|
@@ -29741,6 +30313,10 @@ var scheduleTileTreatments = [
|
|
|
29741
30313
|
"quiet",
|
|
29742
30314
|
"brand-depth"
|
|
29743
30315
|
];
|
|
30316
|
+
var eventListTreatments = [
|
|
30317
|
+
"plain",
|
|
30318
|
+
"lined-panel"
|
|
30319
|
+
];
|
|
29744
30320
|
function scheduleDetailsCapable() {
|
|
29745
30321
|
return declareBlockDesignCapability({
|
|
29746
30322
|
sectionSurfaces: "supported",
|
|
@@ -29749,6 +30325,14 @@ function scheduleDetailsCapable() {
|
|
|
29749
30325
|
tileTreatments: scheduleTileTreatments
|
|
29750
30326
|
});
|
|
29751
30327
|
}
|
|
30328
|
+
function eventListCapable() {
|
|
30329
|
+
return declareBlockDesignCapability({
|
|
30330
|
+
sectionSurfaces: "supported",
|
|
30331
|
+
contentFrames: ["plain"],
|
|
30332
|
+
itemSurfaces: "unsupported",
|
|
30333
|
+
eventListTreatments
|
|
30334
|
+
});
|
|
30335
|
+
}
|
|
29752
30336
|
function defaultBoundaryBias(visualWeight) {
|
|
29753
30337
|
return visualWeight === "featured" || visualWeight === "immersive" ? "clear" : "soft";
|
|
29754
30338
|
}
|
|
@@ -29968,7 +30552,8 @@ var systemBlockDefinitionsRaw = [
|
|
|
29968
30552
|
flow: bodyFlow,
|
|
29969
30553
|
layoutProfiles: [
|
|
29970
30554
|
layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
|
|
29971
|
-
layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" })
|
|
30555
|
+
layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
|
|
30556
|
+
layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
|
|
29972
30557
|
]
|
|
29973
30558
|
})),
|
|
29974
30559
|
withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
|
|
@@ -30062,11 +30647,11 @@ var systemBlockDefinitionsRaw = [
|
|
|
30062
30647
|
flow: offeringsFlow,
|
|
30063
30648
|
layoutProfiles: [layoutProfile({ variantKey: "default", family: "centered", weight: "featured" })]
|
|
30064
30649
|
})),
|
|
30065
|
-
withDesignCapability("block.event-listing", eventListingBlockDefinition,
|
|
30650
|
+
withDesignCapability("block.event-listing", eventListingBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
|
|
30066
30651
|
flow: offeringsFlow,
|
|
30067
30652
|
layoutProfiles: [layoutProfile({ variantKey: "default", family: "stack", weight: "standard" })]
|
|
30068
30653
|
})),
|
|
30069
|
-
withDesignCapability("block.event-calendar", eventCalendarBlockDefinition,
|
|
30654
|
+
withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
|
|
30070
30655
|
flow: offeringsFlow,
|
|
30071
30656
|
layoutProfiles: [
|
|
30072
30657
|
layoutProfile({ variantKey: "combined", family: "grid", weight: "standard" }),
|
|
@@ -31138,6 +31723,15 @@ ${root} {
|
|
|
31138
31723
|
`;
|
|
31139
31724
|
}
|
|
31140
31725
|
|
|
31726
|
+
// ../theme-core/src/runtime/themeCssVarNames.ts
|
|
31727
|
+
var THEME_RADIUS_CSS_VARS = {
|
|
31728
|
+
block: "--rb-block-radius",
|
|
31729
|
+
button: "--rb-button-radius",
|
|
31730
|
+
input: "--rb-input-radius",
|
|
31731
|
+
legacyCard: "--radius-card",
|
|
31732
|
+
legacyControl: "--radius-control"
|
|
31733
|
+
};
|
|
31734
|
+
|
|
31141
31735
|
// ../theme-core/src/blocks/vars/customer-portal.ts
|
|
31142
31736
|
function generateCustomerPortalVars({
|
|
31143
31737
|
themeId
|
|
@@ -31151,6 +31745,11 @@ ${root} {
|
|
|
31151
31745
|
--cp-muted: rgb(var(--tb-mutedText));
|
|
31152
31746
|
--cp-border: rgb(var(--tb-border));
|
|
31153
31747
|
--cp-shadow: var(--shadow-elev);
|
|
31748
|
+
--cp-primary: rgb(var(--tb-primary));
|
|
31749
|
+
--cp-primary-hover: rgb(var(--tb-primary-700, var(--tb-primary)));
|
|
31750
|
+
--cp-error: rgb(var(--tb-destructive));
|
|
31751
|
+
--cp-card-radius: var(${THEME_RADIUS_CSS_VARS.block}, var(${THEME_RADIUS_CSS_VARS.legacyCard}, 0.75rem));
|
|
31752
|
+
--cp-control-radius: var(${THEME_RADIUS_CSS_VARS.input}, var(${THEME_RADIUS_CSS_VARS.legacyControl}, 0.5rem));
|
|
31154
31753
|
|
|
31155
31754
|
/* Shared tab bar (underline style) */
|
|
31156
31755
|
--rb-tab-border-width: 1px;
|
|
@@ -31201,7 +31800,7 @@ ${root} {
|
|
|
31201
31800
|
--rb-modal-bg: var(--cp-card-bg);
|
|
31202
31801
|
--rb-modal-border: var(--cp-card-border);
|
|
31203
31802
|
--rb-modal-shadow: var(--shadow-lg, var(--shadow-elev));
|
|
31204
|
-
--rb-modal-radius: var(--
|
|
31803
|
+
--rb-modal-radius: var(--cp-card-radius);
|
|
31205
31804
|
--rb-modal-max-width: 560px;
|
|
31206
31805
|
|
|
31207
31806
|
/* Header */
|
|
@@ -32582,6 +33181,9 @@ import { jsx as jsx5 } from "react/jsx-runtime";
|
|
|
32582
33181
|
import * as React from "react";
|
|
32583
33182
|
import { Fragment, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
32584
33183
|
|
|
33184
|
+
// ../theme-core/src/fonts/uploadFormat.ts
|
|
33185
|
+
var MAX_FONT_UPLOAD_BYTES = 5 * 1024 * 1024;
|
|
33186
|
+
|
|
32585
33187
|
// ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
|
|
32586
33188
|
import { z as z60 } from "zod";
|
|
32587
33189
|
var themeBridgeConfigSchema = z60.object({
|
|
@@ -33028,6 +33630,7 @@ var COURSE_ENROLLMENT_REFUND_FAILED_CODES = [
|
|
|
33028
33630
|
];
|
|
33029
33631
|
|
|
33030
33632
|
// ../api/src/bookingVerticals.ts
|
|
33633
|
+
import { z as z63 } from "zod";
|
|
33031
33634
|
var VERTICAL_IDS = [
|
|
33032
33635
|
"yoga_wellness",
|
|
33033
33636
|
"fitness_pt",
|
|
@@ -33106,6 +33709,132 @@ var VERTICAL_ID_SET = new Set(VERTICAL_IDS);
|
|
|
33106
33709
|
var VERTICAL_PRESET_ID_SET = new Set(
|
|
33107
33710
|
VERTICAL_BOOKING_PRESETS.map((presetDefinition) => presetDefinition.id)
|
|
33108
33711
|
);
|
|
33712
|
+
function parseVerticalId(value) {
|
|
33713
|
+
return typeof value === "string" && VERTICAL_ID_SET.has(value) ? value : null;
|
|
33714
|
+
}
|
|
33715
|
+
function parseVerticalPresetId(value) {
|
|
33716
|
+
return typeof value === "string" && VERTICAL_PRESET_ID_SET.has(value) ? value : null;
|
|
33717
|
+
}
|
|
33718
|
+
function getVerticalPresetDefinition(presetId) {
|
|
33719
|
+
const definition = VERTICAL_BOOKING_PRESETS.find((presetDefinition) => presetDefinition.id === presetId);
|
|
33720
|
+
if (!definition) {
|
|
33721
|
+
throw new Error(`Unhandled vertical preset id: ${presetId}`);
|
|
33722
|
+
}
|
|
33723
|
+
return definition;
|
|
33724
|
+
}
|
|
33725
|
+
function toNonEmptyVerticalPresetIds(presetIds) {
|
|
33726
|
+
const firstPresetId = presetIds[0];
|
|
33727
|
+
return firstPresetId ? [firstPresetId, ...presetIds.slice(1)] : null;
|
|
33728
|
+
}
|
|
33729
|
+
function createConfiguredSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
|
|
33730
|
+
return {
|
|
33731
|
+
verticalId,
|
|
33732
|
+
selectedPresetIds
|
|
33733
|
+
};
|
|
33734
|
+
}
|
|
33735
|
+
function createSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
|
|
33736
|
+
const nonEmptyPresetIds = toNonEmptyVerticalPresetIds(selectedPresetIds);
|
|
33737
|
+
return nonEmptyPresetIds ? createConfiguredSiteVerticalBookingConfig(verticalId, nonEmptyPresetIds) : null;
|
|
33738
|
+
}
|
|
33739
|
+
function resolveSiteVerticalBookingConfig(rawConfig) {
|
|
33740
|
+
if (!rawConfig) {
|
|
33741
|
+
return { kind: "unconfigured", config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG };
|
|
33742
|
+
}
|
|
33743
|
+
const verticalId = parseVerticalId(rawConfig.verticalId);
|
|
33744
|
+
const rawPresetIds = Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : [];
|
|
33745
|
+
const selectedPresetIds = rawPresetIds.map(parseVerticalPresetId).filter((presetId) => Boolean(presetId));
|
|
33746
|
+
const config = {
|
|
33747
|
+
verticalId,
|
|
33748
|
+
selectedPresetIds
|
|
33749
|
+
};
|
|
33750
|
+
if (!verticalId && selectedPresetIds.length === 0) {
|
|
33751
|
+
return { kind: "unconfigured", config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG };
|
|
33752
|
+
}
|
|
33753
|
+
const issues = getSiteVerticalConfigIssues(rawConfig, config);
|
|
33754
|
+
if (issues.length > 0) {
|
|
33755
|
+
return { kind: "invalid", config, issues };
|
|
33756
|
+
}
|
|
33757
|
+
const configuredConfig = verticalId ? createSiteVerticalBookingConfig(verticalId, selectedPresetIds) : null;
|
|
33758
|
+
if (!configuredConfig) {
|
|
33759
|
+
return { kind: "invalid", config, issues: ["empty_selected_presets"] };
|
|
33760
|
+
}
|
|
33761
|
+
return {
|
|
33762
|
+
kind: "configured",
|
|
33763
|
+
config: configuredConfig,
|
|
33764
|
+
selectedPresets: configuredConfig.selectedPresetIds.map(getVerticalPresetDefinition)
|
|
33765
|
+
};
|
|
33766
|
+
}
|
|
33767
|
+
function getSiteVerticalConfigIssues(rawConfig, config) {
|
|
33768
|
+
const issues = /* @__PURE__ */ new Set();
|
|
33769
|
+
if (rawConfig.verticalId != null && !config.verticalId) {
|
|
33770
|
+
issues.add("unknown_vertical");
|
|
33771
|
+
}
|
|
33772
|
+
if (!config.verticalId && config.selectedPresetIds.length > 0) {
|
|
33773
|
+
issues.add("missing_vertical");
|
|
33774
|
+
}
|
|
33775
|
+
const rawPresetIds = Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : [];
|
|
33776
|
+
if (rawPresetIds.some((presetId) => parseVerticalPresetId(presetId) === null)) {
|
|
33777
|
+
issues.add("unknown_preset");
|
|
33778
|
+
}
|
|
33779
|
+
if (config.verticalId && config.selectedPresetIds.length === 0) {
|
|
33780
|
+
issues.add("empty_selected_presets");
|
|
33781
|
+
}
|
|
33782
|
+
const seenBehaviours = /* @__PURE__ */ new Set();
|
|
33783
|
+
for (const presetId of config.selectedPresetIds) {
|
|
33784
|
+
const presetDefinition = getVerticalPresetDefinition(presetId);
|
|
33785
|
+
if (config.verticalId && presetDefinition.verticalId !== config.verticalId) {
|
|
33786
|
+
issues.add("preset_vertical_mismatch");
|
|
33787
|
+
}
|
|
33788
|
+
if (presetDefinition.availability === "future") {
|
|
33789
|
+
issues.add("future_preset_selected");
|
|
33790
|
+
}
|
|
33791
|
+
if (seenBehaviours.has(presetDefinition.canonicalBehaviour)) {
|
|
33792
|
+
issues.add("duplicate_canonical_behaviour");
|
|
33793
|
+
}
|
|
33794
|
+
seenBehaviours.add(presetDefinition.canonicalBehaviour);
|
|
33795
|
+
}
|
|
33796
|
+
return [...issues];
|
|
33797
|
+
}
|
|
33798
|
+
var VerticalIdSchema = z63.string().trim().transform((value, ctx) => {
|
|
33799
|
+
const parsed = parseVerticalId(value);
|
|
33800
|
+
if (!parsed) {
|
|
33801
|
+
ctx.addIssue({
|
|
33802
|
+
code: z63.ZodIssueCode.custom,
|
|
33803
|
+
message: "Unknown booking vertical"
|
|
33804
|
+
});
|
|
33805
|
+
return z63.NEVER;
|
|
33806
|
+
}
|
|
33807
|
+
return parsed;
|
|
33808
|
+
});
|
|
33809
|
+
var VerticalPresetIdSchema = z63.string().trim().transform((value, ctx) => {
|
|
33810
|
+
const parsed = parseVerticalPresetId(value);
|
|
33811
|
+
if (!parsed) {
|
|
33812
|
+
ctx.addIssue({
|
|
33813
|
+
code: z63.ZodIssueCode.custom,
|
|
33814
|
+
message: "Unknown booking preset"
|
|
33815
|
+
});
|
|
33816
|
+
return z63.NEVER;
|
|
33817
|
+
}
|
|
33818
|
+
return parsed;
|
|
33819
|
+
});
|
|
33820
|
+
var BookingVerticalConfigSchema = z63.object({
|
|
33821
|
+
verticalId: VerticalIdSchema.nullable(),
|
|
33822
|
+
selectedPresetIds: z63.array(VerticalPresetIdSchema).max(20)
|
|
33823
|
+
}).transform((value, ctx) => {
|
|
33824
|
+
const resolved = resolveSiteVerticalBookingConfig(value);
|
|
33825
|
+
if (resolved.kind === "invalid") {
|
|
33826
|
+
ctx.addIssue({
|
|
33827
|
+
code: z63.ZodIssueCode.custom,
|
|
33828
|
+
message: `Invalid booking vertical config: ${resolved.issues.join(", ")}`
|
|
33829
|
+
});
|
|
33830
|
+
return z63.NEVER;
|
|
33831
|
+
}
|
|
33832
|
+
return resolved.config;
|
|
33833
|
+
});
|
|
33834
|
+
var DEFAULT_SITE_VERTICAL_BOOKING_CONFIG = {
|
|
33835
|
+
verticalId: null,
|
|
33836
|
+
selectedPresetIds: []
|
|
33837
|
+
};
|
|
33109
33838
|
function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, description, availability = "onboarding") {
|
|
33110
33839
|
return {
|
|
33111
33840
|
id,
|
|
@@ -33125,51 +33854,51 @@ function isRecord3(value) {
|
|
|
33125
33854
|
}
|
|
33126
33855
|
|
|
33127
33856
|
// ../api/src/appointmentSetup.ts
|
|
33128
|
-
import { z as
|
|
33857
|
+
import { z as z64 } from "zod";
|
|
33129
33858
|
var APPOINTMENT_SETUP_MAX_MINUTES = 1440;
|
|
33130
|
-
var appointmentSetupRefSchema =
|
|
33131
|
-
|
|
33132
|
-
|
|
33859
|
+
var appointmentSetupRefSchema = z64.discriminatedUnion("kind", [
|
|
33860
|
+
z64.object({ kind: z64.literal("existing"), id: z64.string().min(1) }),
|
|
33861
|
+
z64.object({ kind: z64.literal("new"), draftId: z64.string().min(1) })
|
|
33133
33862
|
]);
|
|
33134
|
-
var appointmentSetupVenueChoiceSchema =
|
|
33135
|
-
|
|
33136
|
-
|
|
33137
|
-
|
|
33138
|
-
kind:
|
|
33139
|
-
draftId:
|
|
33140
|
-
title:
|
|
33141
|
-
description:
|
|
33142
|
-
timezone:
|
|
33143
|
-
addressJson:
|
|
33144
|
-
locationJson:
|
|
33863
|
+
var appointmentSetupVenueChoiceSchema = z64.discriminatedUnion("kind", [
|
|
33864
|
+
z64.object({ kind: z64.literal("none") }),
|
|
33865
|
+
z64.object({ kind: z64.literal("existing"), venueId: z64.string().min(1) }),
|
|
33866
|
+
z64.object({
|
|
33867
|
+
kind: z64.literal("create"),
|
|
33868
|
+
draftId: z64.string().min(1),
|
|
33869
|
+
title: z64.string().trim().min(1),
|
|
33870
|
+
description: z64.string().nullable(),
|
|
33871
|
+
timezone: z64.string().trim().min(1).nullable(),
|
|
33872
|
+
addressJson: z64.record(z64.string(), z64.unknown()),
|
|
33873
|
+
locationJson: z64.object({ lat: z64.number(), lng: z64.number() }).nullable()
|
|
33145
33874
|
})
|
|
33146
33875
|
]);
|
|
33147
|
-
var appointmentSetupPaymentDraftSchema =
|
|
33148
|
-
priceType:
|
|
33149
|
-
});
|
|
33150
|
-
var appointmentSetupServiceAssignmentDraftSchema =
|
|
33151
|
-
|
|
33152
|
-
|
|
33153
|
-
kind:
|
|
33154
|
-
resourceRefs:
|
|
33876
|
+
var appointmentSetupPaymentDraftSchema = z64.object({
|
|
33877
|
+
priceType: z64.union([z64.literal("free"), z64.literal("paid")])
|
|
33878
|
+
});
|
|
33879
|
+
var appointmentSetupServiceAssignmentDraftSchema = z64.discriminatedUnion("kind", [
|
|
33880
|
+
z64.object({ kind: z64.literal("all_practitioners") }),
|
|
33881
|
+
z64.object({
|
|
33882
|
+
kind: z64.literal("selected_practitioners"),
|
|
33883
|
+
resourceRefs: z64.array(appointmentSetupRefSchema)
|
|
33155
33884
|
})
|
|
33156
33885
|
]);
|
|
33157
|
-
var appointmentSetupServiceDraftSchema =
|
|
33886
|
+
var appointmentSetupServiceDraftSchema = z64.object({
|
|
33158
33887
|
ref: appointmentSetupRefSchema,
|
|
33159
|
-
title:
|
|
33160
|
-
description:
|
|
33161
|
-
durationMinutes:
|
|
33162
|
-
prepMinutes:
|
|
33163
|
-
cleanupMinutes:
|
|
33164
|
-
priceAmount:
|
|
33165
|
-
isActive:
|
|
33166
|
-
locationType:
|
|
33167
|
-
|
|
33168
|
-
|
|
33169
|
-
|
|
33888
|
+
title: z64.string().trim().min(1),
|
|
33889
|
+
description: z64.string().nullable(),
|
|
33890
|
+
durationMinutes: z64.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
|
|
33891
|
+
prepMinutes: z64.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
|
|
33892
|
+
cleanupMinutes: z64.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
|
|
33893
|
+
priceAmount: z64.number().int().nonnegative().nullable(),
|
|
33894
|
+
isActive: z64.boolean(),
|
|
33895
|
+
locationType: z64.union([
|
|
33896
|
+
z64.literal("virtual"),
|
|
33897
|
+
z64.literal("in_person"),
|
|
33898
|
+
z64.literal("hybrid")
|
|
33170
33899
|
]),
|
|
33171
33900
|
venue: appointmentSetupVenueChoiceSchema,
|
|
33172
|
-
timezone:
|
|
33901
|
+
timezone: z64.string().trim().min(1).nullable(),
|
|
33173
33902
|
payment: appointmentSetupPaymentDraftSchema,
|
|
33174
33903
|
assignment: appointmentSetupServiceAssignmentDraftSchema
|
|
33175
33904
|
}).superRefine((service, ctx) => {
|
|
@@ -33188,49 +33917,49 @@ var appointmentSetupServiceDraftSchema = z63.object({
|
|
|
33188
33917
|
});
|
|
33189
33918
|
}
|
|
33190
33919
|
});
|
|
33191
|
-
var appointmentSetupPractitionerDraftSchema =
|
|
33920
|
+
var appointmentSetupPractitionerDraftSchema = z64.object({
|
|
33192
33921
|
ref: appointmentSetupRefSchema,
|
|
33193
|
-
displayName:
|
|
33194
|
-
bio:
|
|
33195
|
-
timezone:
|
|
33196
|
-
colorHex:
|
|
33197
|
-
});
|
|
33198
|
-
var appointmentSetupWeeklyWindowDraftSchema =
|
|
33199
|
-
weekday:
|
|
33200
|
-
startTime:
|
|
33201
|
-
endTime:
|
|
33202
|
-
});
|
|
33203
|
-
var appointmentSetupStartTimePolicyDraftSchema =
|
|
33204
|
-
|
|
33205
|
-
|
|
33206
|
-
kind:
|
|
33207
|
-
intervalMinutes:
|
|
33208
|
-
|
|
33209
|
-
|
|
33210
|
-
|
|
33211
|
-
|
|
33212
|
-
|
|
33213
|
-
|
|
33922
|
+
displayName: z64.string().trim().min(1),
|
|
33923
|
+
bio: z64.string().nullable(),
|
|
33924
|
+
timezone: z64.string().trim().min(1),
|
|
33925
|
+
colorHex: z64.string().nullable()
|
|
33926
|
+
});
|
|
33927
|
+
var appointmentSetupWeeklyWindowDraftSchema = z64.object({
|
|
33928
|
+
weekday: z64.number().int().min(0).max(6),
|
|
33929
|
+
startTime: z64.string(),
|
|
33930
|
+
endTime: z64.string()
|
|
33931
|
+
});
|
|
33932
|
+
var appointmentSetupStartTimePolicyDraftSchema = z64.discriminatedUnion("kind", [
|
|
33933
|
+
z64.object({ kind: z64.literal("automatic_spacing") }),
|
|
33934
|
+
z64.object({
|
|
33935
|
+
kind: z64.literal("regular_interval"),
|
|
33936
|
+
intervalMinutes: z64.union([
|
|
33937
|
+
z64.literal(10),
|
|
33938
|
+
z64.literal(15),
|
|
33939
|
+
z64.literal(20),
|
|
33940
|
+
z64.literal(30),
|
|
33941
|
+
z64.literal(45),
|
|
33942
|
+
z64.literal(60)
|
|
33214
33943
|
])
|
|
33215
33944
|
})
|
|
33216
33945
|
]);
|
|
33217
|
-
var appointmentSetupAvailabilityDraftSchema =
|
|
33218
|
-
kind:
|
|
33946
|
+
var appointmentSetupAvailabilityDraftSchema = z64.object({
|
|
33947
|
+
kind: z64.literal("weekly_windows"),
|
|
33219
33948
|
resourceRef: appointmentSetupRefSchema,
|
|
33220
33949
|
serviceRef: appointmentSetupRefSchema.nullable(),
|
|
33221
|
-
windows:
|
|
33950
|
+
windows: z64.array(appointmentSetupWeeklyWindowDraftSchema),
|
|
33222
33951
|
startTimePolicy: appointmentSetupStartTimePolicyDraftSchema.optional()
|
|
33223
33952
|
});
|
|
33224
33953
|
var APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
|
|
33225
33954
|
var APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
|
|
33226
|
-
var appointmentSetupBookingNoticeSchema =
|
|
33227
|
-
minLeadMinutes:
|
|
33228
|
-
maxBookingNoticeMinutes:
|
|
33229
|
-
});
|
|
33230
|
-
var applyAppointmentSetupRequestSchema =
|
|
33231
|
-
services:
|
|
33232
|
-
practitioners:
|
|
33233
|
-
availability:
|
|
33955
|
+
var appointmentSetupBookingNoticeSchema = z64.object({
|
|
33956
|
+
minLeadMinutes: z64.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
|
|
33957
|
+
maxBookingNoticeMinutes: z64.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
|
|
33958
|
+
});
|
|
33959
|
+
var applyAppointmentSetupRequestSchema = z64.object({
|
|
33960
|
+
services: z64.array(appointmentSetupServiceDraftSchema),
|
|
33961
|
+
practitioners: z64.array(appointmentSetupPractitionerDraftSchema),
|
|
33962
|
+
availability: z64.array(appointmentSetupAvailabilityDraftSchema),
|
|
33234
33963
|
bookingNotice: appointmentSetupBookingNoticeSchema
|
|
33235
33964
|
});
|
|
33236
33965
|
|
|
@@ -33263,24 +33992,24 @@ var STAFF_CANCELLATION_CONTEXT_CATEGORIES = [
|
|
|
33263
33992
|
];
|
|
33264
33993
|
|
|
33265
33994
|
// ../api/src/siteBanner.ts
|
|
33266
|
-
import { z as
|
|
33995
|
+
import { z as z65 } from "zod";
|
|
33267
33996
|
var SITE_BANNER_SCOPE_VALUES = ["homepage", "all-pages"];
|
|
33268
33997
|
var SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
|
|
33269
33998
|
var SITE_BANNER_MAX_TEXT_LENGTH = 320;
|
|
33270
33999
|
var SITE_BANNER_MAX_PARAGRAPHS = 2;
|
|
33271
|
-
var siteBannerScopeSchema =
|
|
33272
|
-
var siteBannerToneSchema =
|
|
33273
|
-
var siteBannerBodySchema =
|
|
33274
|
-
var siteBannerCtaSchema =
|
|
33275
|
-
label:
|
|
34000
|
+
var siteBannerScopeSchema = z65.enum(SITE_BANNER_SCOPE_VALUES);
|
|
34001
|
+
var siteBannerToneSchema = z65.enum(SITE_BANNER_TONE_VALUES);
|
|
34002
|
+
var siteBannerBodySchema = z65.unknown().transform(unwrapRichTextValue);
|
|
34003
|
+
var siteBannerCtaSchema = z65.object({
|
|
34004
|
+
label: z65.string().trim().min(1),
|
|
33276
34005
|
link: linkPayloadSchema
|
|
33277
34006
|
});
|
|
33278
|
-
var siteBannerSettingsSchema =
|
|
33279
|
-
|
|
33280
|
-
enabled:
|
|
34007
|
+
var siteBannerSettingsSchema = z65.discriminatedUnion("enabled", [
|
|
34008
|
+
z65.object({
|
|
34009
|
+
enabled: z65.literal(false)
|
|
33281
34010
|
}),
|
|
33282
|
-
|
|
33283
|
-
enabled:
|
|
34011
|
+
z65.object({
|
|
34012
|
+
enabled: z65.literal(true),
|
|
33284
34013
|
scope: siteBannerScopeSchema,
|
|
33285
34014
|
tone: siteBannerToneSchema,
|
|
33286
34015
|
body: siteBannerBodySchema,
|
|
@@ -33294,7 +34023,7 @@ var siteBannerSettingsInputSchema = siteBannerSettingsSchema.superRefine((value,
|
|
|
33294
34023
|
const analysis = analyzeSiteBannerBody(value.body);
|
|
33295
34024
|
for (const issue of analysis.issues) {
|
|
33296
34025
|
ctx.addIssue({
|
|
33297
|
-
code:
|
|
34026
|
+
code: z65.ZodIssueCode.custom,
|
|
33298
34027
|
path: ["body"],
|
|
33299
34028
|
message: siteBannerBodyIssueMessage(issue)
|
|
33300
34029
|
});
|
|
@@ -33562,76 +34291,109 @@ function isNavigationMenuValidationItem(value) {
|
|
|
33562
34291
|
return typeof value.label === "string";
|
|
33563
34292
|
}
|
|
33564
34293
|
|
|
34294
|
+
// ../api/src/navigation/dashboardSiteNav.ts
|
|
34295
|
+
var hiddenDemoSiteNavSurfaceIds = [
|
|
34296
|
+
"site.newsletter"
|
|
34297
|
+
];
|
|
34298
|
+
var hiddenDemoSiteNavIds = new Set(
|
|
34299
|
+
hiddenDemoSiteNavSurfaceIds
|
|
34300
|
+
);
|
|
34301
|
+
var websiteSurfaceIds = [
|
|
34302
|
+
"site.content",
|
|
34303
|
+
"site.footerBlocks",
|
|
34304
|
+
"site.navigation",
|
|
34305
|
+
"site.media",
|
|
34306
|
+
"site.style",
|
|
34307
|
+
"site.performance"
|
|
34308
|
+
];
|
|
34309
|
+
var websiteSurfaceIdSet = new Set(
|
|
34310
|
+
websiteSurfaceIds
|
|
34311
|
+
);
|
|
34312
|
+
|
|
34313
|
+
// ../api/src/navigation/dashboardSettingsNav.ts
|
|
34314
|
+
var hiddenDemoSettingsNavSurfaceIds = [
|
|
34315
|
+
"settings.features",
|
|
34316
|
+
"settings.domains",
|
|
34317
|
+
"settings.bookings",
|
|
34318
|
+
"settings.emails",
|
|
34319
|
+
"settings.team",
|
|
34320
|
+
"settings.billing",
|
|
34321
|
+
"settings.developer",
|
|
34322
|
+
"settings.apiKeys",
|
|
34323
|
+
"settings.backup"
|
|
34324
|
+
];
|
|
34325
|
+
var hiddenDemoSettingsNavIds = new Set(hiddenDemoSettingsNavSurfaceIds);
|
|
34326
|
+
|
|
33565
34327
|
// ../api/src/aiPlayground.ts
|
|
33566
|
-
import { z as
|
|
33567
|
-
var Rfc6902PatchOp =
|
|
34328
|
+
import { z as z66 } from "zod";
|
|
34329
|
+
var Rfc6902PatchOp = z66.discriminatedUnion("op", [
|
|
33568
34330
|
// Standard RFC-6902 operations
|
|
33569
|
-
|
|
33570
|
-
op:
|
|
33571
|
-
path:
|
|
33572
|
-
value:
|
|
34331
|
+
z66.object({
|
|
34332
|
+
op: z66.literal("add"),
|
|
34333
|
+
path: z66.string(),
|
|
34334
|
+
value: z66.unknown()
|
|
33573
34335
|
}),
|
|
33574
|
-
|
|
33575
|
-
op:
|
|
33576
|
-
path:
|
|
34336
|
+
z66.object({
|
|
34337
|
+
op: z66.literal("remove"),
|
|
34338
|
+
path: z66.string()
|
|
33577
34339
|
}),
|
|
33578
|
-
|
|
33579
|
-
op:
|
|
33580
|
-
path:
|
|
33581
|
-
value:
|
|
34340
|
+
z66.object({
|
|
34341
|
+
op: z66.literal("replace"),
|
|
34342
|
+
path: z66.string(),
|
|
34343
|
+
value: z66.unknown()
|
|
33582
34344
|
}),
|
|
33583
|
-
|
|
33584
|
-
op:
|
|
33585
|
-
from:
|
|
33586
|
-
path:
|
|
34345
|
+
z66.object({
|
|
34346
|
+
op: z66.literal("move"),
|
|
34347
|
+
from: z66.string(),
|
|
34348
|
+
path: z66.string()
|
|
33587
34349
|
}),
|
|
33588
|
-
|
|
33589
|
-
op:
|
|
33590
|
-
from:
|
|
33591
|
-
path:
|
|
34350
|
+
z66.object({
|
|
34351
|
+
op: z66.literal("copy"),
|
|
34352
|
+
from: z66.string(),
|
|
34353
|
+
path: z66.string()
|
|
33592
34354
|
}),
|
|
33593
34355
|
// Block-level operations (Phase 2)
|
|
33594
|
-
|
|
33595
|
-
op:
|
|
33596
|
-
blockKind:
|
|
33597
|
-
afterBlockId:
|
|
33598
|
-
content:
|
|
33599
|
-
rationale:
|
|
34356
|
+
z66.object({
|
|
34357
|
+
op: z66.literal("add_block"),
|
|
34358
|
+
blockKind: z66.string(),
|
|
34359
|
+
afterBlockId: z66.string().nullable(),
|
|
34360
|
+
content: z66.record(z66.string(), z66.unknown()),
|
|
34361
|
+
rationale: z66.string()
|
|
33600
34362
|
}),
|
|
33601
|
-
|
|
33602
|
-
op:
|
|
33603
|
-
blockId:
|
|
33604
|
-
rationale:
|
|
34363
|
+
z66.object({
|
|
34364
|
+
op: z66.literal("delete_block"),
|
|
34365
|
+
blockId: z66.string(),
|
|
34366
|
+
rationale: z66.string()
|
|
33605
34367
|
}),
|
|
33606
|
-
|
|
33607
|
-
op:
|
|
33608
|
-
blockId:
|
|
33609
|
-
afterBlockId:
|
|
33610
|
-
rationale:
|
|
34368
|
+
z66.object({
|
|
34369
|
+
op: z66.literal("reorder_block"),
|
|
34370
|
+
blockId: z66.string(),
|
|
34371
|
+
afterBlockId: z66.string().nullable(),
|
|
34372
|
+
rationale: z66.string()
|
|
33611
34373
|
})
|
|
33612
34374
|
]);
|
|
33613
|
-
var PlaygroundProposeRequest =
|
|
33614
|
-
request:
|
|
34375
|
+
var PlaygroundProposeRequest = z66.object({
|
|
34376
|
+
request: z66.string().min(1).max(2e3)
|
|
33615
34377
|
});
|
|
33616
|
-
var MultiPagePatchEnvelope =
|
|
33617
|
-
pageId:
|
|
33618
|
-
blockId:
|
|
34378
|
+
var MultiPagePatchEnvelope = z66.object({
|
|
34379
|
+
pageId: z66.string(),
|
|
34380
|
+
blockId: z66.string().optional(),
|
|
33619
34381
|
// Not present for page-level ops
|
|
33620
|
-
blockKind:
|
|
33621
|
-
blockPurpose:
|
|
33622
|
-
ops:
|
|
33623
|
-
rationale:
|
|
33624
|
-
currentContent:
|
|
34382
|
+
blockKind: z66.string().optional(),
|
|
34383
|
+
blockPurpose: z66.string().optional().nullable(),
|
|
34384
|
+
ops: z66.array(Rfc6902PatchOp),
|
|
34385
|
+
rationale: z66.string(),
|
|
34386
|
+
currentContent: z66.record(z66.string(), z66.unknown()).optional()
|
|
33625
34387
|
});
|
|
33626
|
-
var MultiPageUpdateResponse =
|
|
33627
|
-
patches:
|
|
33628
|
-
assistantMessage:
|
|
33629
|
-
pagesModified:
|
|
33630
|
-
toolCallsUsed:
|
|
34388
|
+
var MultiPageUpdateResponse = z66.object({
|
|
34389
|
+
patches: z66.array(MultiPagePatchEnvelope),
|
|
34390
|
+
assistantMessage: z66.string(),
|
|
34391
|
+
pagesModified: z66.number(),
|
|
34392
|
+
toolCallsUsed: z66.number()
|
|
33631
34393
|
});
|
|
33632
34394
|
|
|
33633
34395
|
// src/config/content-validation.ts
|
|
33634
|
-
import { z as
|
|
34396
|
+
import { z as z67 } from "zod";
|
|
33635
34397
|
|
|
33636
34398
|
// src/types/block-kinds.ts
|
|
33637
34399
|
var SYSTEM_BLOCK_KINDS = [
|
|
@@ -33773,32 +34535,32 @@ function describeInvalidBindingTransform(transform) {
|
|
|
33773
34535
|
}
|
|
33774
34536
|
|
|
33775
34537
|
// src/config/content-validation.ts
|
|
33776
|
-
var jsonDataSchema =
|
|
33777
|
-
var contentTypeKeySchema =
|
|
34538
|
+
var jsonDataSchema = z67.record(z67.string(), z67.any());
|
|
34539
|
+
var contentTypeKeySchema = z67.string().min(1).regex(
|
|
33778
34540
|
/^[a-z][a-z0-9-]*$/,
|
|
33779
34541
|
"Key must be lowercase, start with a letter, and contain only letters, numbers, and hyphens"
|
|
33780
34542
|
);
|
|
33781
|
-
var templateConfigSchemaForward =
|
|
33782
|
-
blocks:
|
|
33783
|
-
|
|
33784
|
-
identifier:
|
|
33785
|
-
kind:
|
|
33786
|
-
scope:
|
|
33787
|
-
bindings:
|
|
33788
|
-
content:
|
|
34543
|
+
var templateConfigSchemaForward = z67.object({
|
|
34544
|
+
blocks: z67.array(
|
|
34545
|
+
z67.object({
|
|
34546
|
+
identifier: z67.string().min(1),
|
|
34547
|
+
kind: z67.string(),
|
|
34548
|
+
scope: z67.enum(["entry", "template"]),
|
|
34549
|
+
bindings: z67.record(z67.string(), z67.any()).optional(),
|
|
34550
|
+
content: z67.record(z67.string(), z67.any()).optional()
|
|
33789
34551
|
})
|
|
33790
34552
|
)
|
|
33791
34553
|
}).optional();
|
|
33792
|
-
var contentTypeConfigSchema =
|
|
34554
|
+
var contentTypeConfigSchema = z67.object({
|
|
33793
34555
|
key: contentTypeKeySchema,
|
|
33794
|
-
name:
|
|
33795
|
-
description:
|
|
33796
|
-
hasPages:
|
|
33797
|
-
routePattern:
|
|
34556
|
+
name: z67.string().min(1),
|
|
34557
|
+
description: z67.string().optional(),
|
|
34558
|
+
hasPages: z67.boolean(),
|
|
34559
|
+
routePattern: z67.string().optional(),
|
|
33798
34560
|
// Fields are validated as unknown[] here - deep field validation happens in @riverbankcms/blocks
|
|
33799
|
-
fields:
|
|
33800
|
-
titleField:
|
|
33801
|
-
isSingleton:
|
|
34561
|
+
fields: z67.array(z67.any()).min(1, "At least one field is required"),
|
|
34562
|
+
titleField: z67.string().optional(),
|
|
34563
|
+
isSingleton: z67.boolean().optional().default(false),
|
|
33802
34564
|
template: templateConfigSchemaForward
|
|
33803
34565
|
}).refine(
|
|
33804
34566
|
(data) => {
|
|
@@ -33820,7 +34582,7 @@ var contentTypeConfigSchema = z66.object({
|
|
|
33820
34582
|
}
|
|
33821
34583
|
if (!data.routePattern) {
|
|
33822
34584
|
ctx.addIssue({
|
|
33823
|
-
code:
|
|
34585
|
+
code: z67.ZodIssueCode.custom,
|
|
33824
34586
|
path: ["routePattern"],
|
|
33825
34587
|
message: "routePattern is required when hasPages is true. Non-singleton types must include {slug} placeholder."
|
|
33826
34588
|
});
|
|
@@ -33829,7 +34591,7 @@ var contentTypeConfigSchema = z66.object({
|
|
|
33829
34591
|
const parseResult = safeParseRouteTemplate(data.routePattern);
|
|
33830
34592
|
if (!parseResult.success) {
|
|
33831
34593
|
ctx.addIssue({
|
|
33832
|
-
code:
|
|
34594
|
+
code: z67.ZodIssueCode.custom,
|
|
33833
34595
|
path: ["routePattern"],
|
|
33834
34596
|
message: describeRouteTemplateParseError(parseResult.error)
|
|
33835
34597
|
});
|
|
@@ -33837,44 +34599,44 @@ var contentTypeConfigSchema = z66.object({
|
|
|
33837
34599
|
}
|
|
33838
34600
|
if (!data.isSingleton && parseResult.routeTemplate.kind !== "slug-template") {
|
|
33839
34601
|
ctx.addIssue({
|
|
33840
|
-
code:
|
|
34602
|
+
code: z67.ZodIssueCode.custom,
|
|
33841
34603
|
path: ["routePattern"],
|
|
33842
34604
|
message: "routePattern is required when hasPages is true. Non-singleton types must include {slug} placeholder."
|
|
33843
34605
|
});
|
|
33844
34606
|
}
|
|
33845
34607
|
});
|
|
33846
|
-
var fieldBindingSchema =
|
|
33847
|
-
source:
|
|
33848
|
-
path:
|
|
34608
|
+
var fieldBindingSchema = z67.object({
|
|
34609
|
+
source: z67.literal("field"),
|
|
34610
|
+
path: z67.string().min(1, "Field path is required")
|
|
33849
34611
|
});
|
|
33850
|
-
var metaBindingSchema =
|
|
33851
|
-
source:
|
|
33852
|
-
path:
|
|
34612
|
+
var metaBindingSchema = z67.object({
|
|
34613
|
+
source: z67.literal("meta"),
|
|
34614
|
+
path: z67.enum(TEMPLATE_BINDING_META_PATHS, {
|
|
33853
34615
|
error: (issue) => describeInvalidTemplateBindingMetaPath(String(issue.input))
|
|
33854
34616
|
})
|
|
33855
34617
|
});
|
|
33856
|
-
var literalBindingSchema =
|
|
33857
|
-
source:
|
|
33858
|
-
value:
|
|
34618
|
+
var literalBindingSchema = z67.object({
|
|
34619
|
+
source: z67.literal("literal"),
|
|
34620
|
+
value: z67.unknown()
|
|
33859
34621
|
});
|
|
33860
|
-
var transformBindingSchema =
|
|
33861
|
-
source:
|
|
33862
|
-
path:
|
|
33863
|
-
transform:
|
|
34622
|
+
var transformBindingSchema = z67.object({
|
|
34623
|
+
source: z67.literal("transform"),
|
|
34624
|
+
path: z67.string().min(1, "Transform path is required"),
|
|
34625
|
+
transform: z67.enum(BINDING_TRANSFORM_VALUES, {
|
|
33864
34626
|
error: (issue) => describeInvalidBindingTransform(String(issue.input))
|
|
33865
34627
|
})
|
|
33866
34628
|
});
|
|
33867
|
-
var baseBindingSchema =
|
|
34629
|
+
var baseBindingSchema = z67.discriminatedUnion("source", [
|
|
33868
34630
|
fieldBindingSchema,
|
|
33869
34631
|
metaBindingSchema,
|
|
33870
34632
|
literalBindingSchema,
|
|
33871
34633
|
transformBindingSchema
|
|
33872
34634
|
]);
|
|
33873
|
-
var fallbackBindingSchema =
|
|
33874
|
-
source:
|
|
33875
|
-
sources:
|
|
34635
|
+
var fallbackBindingSchema = z67.object({
|
|
34636
|
+
source: z67.literal("fallback"),
|
|
34637
|
+
sources: z67.array(z67.lazy(() => bindingSourceSchema)).min(1, "Fallback must have at least one source")
|
|
33876
34638
|
});
|
|
33877
|
-
var bindingSourceSchema =
|
|
34639
|
+
var bindingSourceSchema = z67.union([
|
|
33878
34640
|
baseBindingSchema,
|
|
33879
34641
|
fallbackBindingSchema
|
|
33880
34642
|
]);
|
|
@@ -33888,12 +34650,12 @@ function isValidBlockKind(kind) {
|
|
|
33888
34650
|
return false;
|
|
33889
34651
|
}
|
|
33890
34652
|
var BLOCK_KIND_ERROR_MESSAGE = 'Block kind must be a system block (e.g., "block.hero") or a custom block (e.g., "custom.myBlock")';
|
|
33891
|
-
var blockKindSchema =
|
|
33892
|
-
var templateBlockConfigSchema =
|
|
33893
|
-
identifier:
|
|
34653
|
+
var blockKindSchema = z67.string().refine(isValidBlockKind, { message: BLOCK_KIND_ERROR_MESSAGE });
|
|
34654
|
+
var templateBlockConfigSchema = z67.object({
|
|
34655
|
+
identifier: z67.string().min(1, "Block identifier is required"),
|
|
33894
34656
|
kind: blockKindSchema,
|
|
33895
|
-
scope:
|
|
33896
|
-
bindings:
|
|
34657
|
+
scope: z67.enum(["entry", "template"]),
|
|
34658
|
+
bindings: z67.record(z67.string(), bindingSourceSchema).optional(),
|
|
33897
34659
|
content: jsonDataSchema.optional()
|
|
33898
34660
|
}).refine(
|
|
33899
34661
|
(data) => {
|
|
@@ -33912,8 +34674,8 @@ var templateBlockConfigSchema = z66.object({
|
|
|
33912
34674
|
},
|
|
33913
34675
|
{ message: "Template-scoped blocks should define static content, not bindings" }
|
|
33914
34676
|
);
|
|
33915
|
-
var templateConfigSchema =
|
|
33916
|
-
blocks:
|
|
34677
|
+
var templateConfigSchema = z67.object({
|
|
34678
|
+
blocks: z67.array(templateBlockConfigSchema).min(1, "Template must have at least one block")
|
|
33917
34679
|
}).refine(
|
|
33918
34680
|
(data) => {
|
|
33919
34681
|
const identifiers = data.blocks.map((b) => b.identifier);
|
|
@@ -33922,77 +34684,77 @@ var templateConfigSchema = z66.object({
|
|
|
33922
34684
|
},
|
|
33923
34685
|
{ message: "Template block identifiers must be unique" }
|
|
33924
34686
|
);
|
|
33925
|
-
var blockConfigSchema =
|
|
34687
|
+
var blockConfigSchema = z67.object({
|
|
33926
34688
|
kind: blockKindSchema,
|
|
33927
34689
|
content: jsonDataSchema,
|
|
33928
|
-
orderIndex:
|
|
33929
|
-
});
|
|
33930
|
-
var pageConfigSchema =
|
|
33931
|
-
identifier:
|
|
33932
|
-
title:
|
|
33933
|
-
path:
|
|
33934
|
-
purpose:
|
|
33935
|
-
blocks:
|
|
33936
|
-
status:
|
|
33937
|
-
metaTitle:
|
|
33938
|
-
metaDescription:
|
|
33939
|
-
});
|
|
33940
|
-
var entryConfigSchema =
|
|
33941
|
-
identifier:
|
|
33942
|
-
contentType:
|
|
34690
|
+
orderIndex: z67.number().optional()
|
|
34691
|
+
});
|
|
34692
|
+
var pageConfigSchema = z67.object({
|
|
34693
|
+
identifier: z67.string().min(1, "Identifier is required"),
|
|
34694
|
+
title: z67.string().min(1, "Title is required"),
|
|
34695
|
+
path: z67.string().regex(/^\//, "Path must start with /"),
|
|
34696
|
+
purpose: z67.string().default("content"),
|
|
34697
|
+
blocks: z67.array(blockConfigSchema).optional(),
|
|
34698
|
+
status: z67.enum(["draft", "published"]).default("draft"),
|
|
34699
|
+
metaTitle: z67.string().optional(),
|
|
34700
|
+
metaDescription: z67.string().optional()
|
|
34701
|
+
});
|
|
34702
|
+
var entryConfigSchema = z67.object({
|
|
34703
|
+
identifier: z67.string().min(1, "Identifier is required"),
|
|
34704
|
+
contentType: z67.string().min(1, "Content type is required"),
|
|
33943
34705
|
data: jsonDataSchema,
|
|
33944
|
-
status:
|
|
33945
|
-
slug:
|
|
33946
|
-
summary:
|
|
34706
|
+
status: z67.enum(["draft", "published"]).default("draft"),
|
|
34707
|
+
slug: z67.string().optional(),
|
|
34708
|
+
summary: z67.string().optional(),
|
|
33947
34709
|
// Hard remove legacy config-only titles: titles must live in entry `data`.
|
|
33948
|
-
title:
|
|
34710
|
+
title: z67.any().optional().refine((value) => value === void 0, {
|
|
33949
34711
|
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."
|
|
33950
34712
|
}),
|
|
33951
|
-
metaTitle:
|
|
33952
|
-
metaDescription:
|
|
34713
|
+
metaTitle: z67.string().optional(),
|
|
34714
|
+
metaDescription: z67.string().optional()
|
|
33953
34715
|
});
|
|
33954
|
-
var dropdownLinkSchema =
|
|
33955
|
-
kind:
|
|
34716
|
+
var dropdownLinkSchema = z67.object({
|
|
34717
|
+
kind: z67.literal("dropdown")
|
|
33956
34718
|
});
|
|
33957
|
-
var navigationLinkSchema =
|
|
34719
|
+
var navigationLinkSchema = z67.discriminatedUnion("kind", [
|
|
33958
34720
|
...navigationLinkInputSchemaOptions,
|
|
33959
34721
|
dropdownLinkSchema
|
|
33960
34722
|
]);
|
|
33961
|
-
var baseNavigationItemSchema =
|
|
33962
|
-
label:
|
|
34723
|
+
var baseNavigationItemSchema = z67.object({
|
|
34724
|
+
label: z67.string().min(1, "Label is required"),
|
|
33963
34725
|
link: navigationLinkSchema,
|
|
33964
|
-
isCta:
|
|
34726
|
+
isCta: z67.boolean().optional()
|
|
33965
34727
|
});
|
|
33966
34728
|
var navigationItemConfigSchema = baseNavigationItemSchema.extend({
|
|
33967
|
-
children:
|
|
33968
|
-
});
|
|
33969
|
-
var navigationMenuConfigSchema =
|
|
33970
|
-
identifier:
|
|
33971
|
-
name:
|
|
33972
|
-
isPrimary:
|
|
33973
|
-
isFooter:
|
|
33974
|
-
items:
|
|
34729
|
+
children: z67.lazy(() => z67.array(navigationItemConfigSchema)).optional()
|
|
34730
|
+
});
|
|
34731
|
+
var navigationMenuConfigSchema = z67.object({
|
|
34732
|
+
identifier: z67.string().min(1, "Identifier is required"),
|
|
34733
|
+
name: z67.string().min(1, "Name is required"),
|
|
34734
|
+
isPrimary: z67.boolean().optional(),
|
|
34735
|
+
isFooter: z67.boolean().optional(),
|
|
34736
|
+
items: z67.array(navigationItemConfigSchema)
|
|
33975
34737
|
}).superRefine((menu, ctx) => {
|
|
33976
34738
|
const portalStats = collectPortalLinkStats(
|
|
33977
34739
|
menu.items
|
|
33978
34740
|
);
|
|
33979
34741
|
if (portalStats.count > 1) {
|
|
33980
34742
|
ctx.addIssue({
|
|
33981
|
-
code:
|
|
34743
|
+
code: z67.ZodIssueCode.custom,
|
|
33982
34744
|
message: "Only one portal link is allowed per navigation menu",
|
|
33983
34745
|
path: ["items"]
|
|
33984
34746
|
});
|
|
33985
34747
|
}
|
|
33986
34748
|
if (portalStats.nestedLabels.length > 0) {
|
|
33987
34749
|
ctx.addIssue({
|
|
33988
|
-
code:
|
|
34750
|
+
code: z67.ZodIssueCode.custom,
|
|
33989
34751
|
message: `Portal links must be root-level items: ${portalStats.nestedLabels.join(", ")}`,
|
|
33990
34752
|
path: ["items"]
|
|
33991
34753
|
});
|
|
33992
34754
|
}
|
|
33993
34755
|
if (portalStats.withChildrenLabels.length > 0) {
|
|
33994
34756
|
ctx.addIssue({
|
|
33995
|
-
code:
|
|
34757
|
+
code: z67.ZodIssueCode.custom,
|
|
33996
34758
|
message: `Portal links cannot contain child items: ${portalStats.withChildrenLabels.join(", ")}`,
|
|
33997
34759
|
path: ["items"]
|
|
33998
34760
|
});
|
|
@@ -34002,44 +34764,44 @@ var navigationMenuConfigSchema = z66.object({
|
|
|
34002
34764
|
);
|
|
34003
34765
|
if (cartStats.nestedLabels.length > 0) {
|
|
34004
34766
|
ctx.addIssue({
|
|
34005
|
-
code:
|
|
34767
|
+
code: z67.ZodIssueCode.custom,
|
|
34006
34768
|
message: `Cart links must be root-level items: ${cartStats.nestedLabels.join(", ")}`,
|
|
34007
34769
|
path: ["items"]
|
|
34008
34770
|
});
|
|
34009
34771
|
}
|
|
34010
34772
|
if (cartStats.withChildrenLabels.length > 0) {
|
|
34011
34773
|
ctx.addIssue({
|
|
34012
|
-
code:
|
|
34774
|
+
code: z67.ZodIssueCode.custom,
|
|
34013
34775
|
message: `Cart links cannot contain child items: ${cartStats.withChildrenLabels.join(", ")}`,
|
|
34014
34776
|
path: ["items"]
|
|
34015
34777
|
});
|
|
34016
34778
|
}
|
|
34017
34779
|
if (cartStats.ctaLabels.length > 0) {
|
|
34018
34780
|
ctx.addIssue({
|
|
34019
|
-
code:
|
|
34781
|
+
code: z67.ZodIssueCode.custom,
|
|
34020
34782
|
message: `Cart links cannot be marked as CTA: ${cartStats.ctaLabels.join(", ")}`,
|
|
34021
34783
|
path: ["items"]
|
|
34022
34784
|
});
|
|
34023
34785
|
}
|
|
34024
34786
|
if (cartStats.missingVisibleTextLabels.length > 0) {
|
|
34025
34787
|
ctx.addIssue({
|
|
34026
|
-
code:
|
|
34788
|
+
code: z67.ZodIssueCode.custom,
|
|
34027
34789
|
message: `Cart links with icon-with-label must provide a visible label: ${cartStats.missingVisibleTextLabels.join(", ")}`,
|
|
34028
34790
|
path: ["items"]
|
|
34029
34791
|
});
|
|
34030
34792
|
}
|
|
34031
34793
|
});
|
|
34032
|
-
var siteSettingsConfigSchema =
|
|
34033
|
-
homepagePath:
|
|
34034
|
-
siteTitle:
|
|
34035
|
-
siteDescription:
|
|
34036
|
-
defaultTemplates:
|
|
34794
|
+
var siteSettingsConfigSchema = z67.object({
|
|
34795
|
+
homepagePath: z67.string().optional(),
|
|
34796
|
+
siteTitle: z67.string().optional(),
|
|
34797
|
+
siteDescription: z67.string().optional(),
|
|
34798
|
+
defaultTemplates: z67.record(z67.string(), z67.string()).optional()
|
|
34037
34799
|
});
|
|
34038
|
-
var contentConfigBaseSchema =
|
|
34039
|
-
contentTypes:
|
|
34040
|
-
entries:
|
|
34041
|
-
pages:
|
|
34042
|
-
navigationMenus:
|
|
34800
|
+
var contentConfigBaseSchema = z67.object({
|
|
34801
|
+
contentTypes: z67.array(contentTypeConfigSchema).optional(),
|
|
34802
|
+
entries: z67.array(entryConfigSchema).optional(),
|
|
34803
|
+
pages: z67.array(pageConfigSchema).optional(),
|
|
34804
|
+
navigationMenus: z67.array(navigationMenuConfigSchema).optional(),
|
|
34043
34805
|
settings: siteSettingsConfigSchema.optional()
|
|
34044
34806
|
});
|
|
34045
34807
|
var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
@@ -34048,7 +34810,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
34048
34810
|
const duplicateKeys = keys.filter((key, i) => keys.indexOf(key) !== i);
|
|
34049
34811
|
if (duplicateKeys.length > 0) {
|
|
34050
34812
|
ctx.addIssue({
|
|
34051
|
-
code:
|
|
34813
|
+
code: z67.ZodIssueCode.custom,
|
|
34052
34814
|
message: `Content type keys must be unique. Duplicates: ${duplicateKeys.join(", ")}`,
|
|
34053
34815
|
path: ["contentTypes"]
|
|
34054
34816
|
});
|
|
@@ -34059,7 +34821,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
34059
34821
|
const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
|
|
34060
34822
|
if (duplicateIds.length > 0) {
|
|
34061
34823
|
ctx.addIssue({
|
|
34062
|
-
code:
|
|
34824
|
+
code: z67.ZodIssueCode.custom,
|
|
34063
34825
|
message: `Page identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
|
|
34064
34826
|
path: ["pages"]
|
|
34065
34827
|
});
|
|
@@ -34068,7 +34830,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
34068
34830
|
const duplicatePaths = paths.filter((path, i) => paths.indexOf(path) !== i);
|
|
34069
34831
|
if (duplicatePaths.length > 0) {
|
|
34070
34832
|
ctx.addIssue({
|
|
34071
|
-
code:
|
|
34833
|
+
code: z67.ZodIssueCode.custom,
|
|
34072
34834
|
message: `Page paths must be unique. Duplicates: ${duplicatePaths.join(", ")}`,
|
|
34073
34835
|
path: ["pages"]
|
|
34074
34836
|
});
|
|
@@ -34079,7 +34841,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
34079
34841
|
const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
|
|
34080
34842
|
if (duplicateIds.length > 0) {
|
|
34081
34843
|
ctx.addIssue({
|
|
34082
|
-
code:
|
|
34844
|
+
code: z67.ZodIssueCode.custom,
|
|
34083
34845
|
message: `Entry identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
|
|
34084
34846
|
path: ["entries"]
|
|
34085
34847
|
});
|
|
@@ -34090,7 +34852,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
34090
34852
|
const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
|
|
34091
34853
|
if (duplicateIds.length > 0) {
|
|
34092
34854
|
ctx.addIssue({
|
|
34093
|
-
code:
|
|
34855
|
+
code: z67.ZodIssueCode.custom,
|
|
34094
34856
|
message: `Navigation menu identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
|
|
34095
34857
|
path: ["navigationMenus"]
|
|
34096
34858
|
});
|
|
@@ -34104,7 +34866,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
34104
34866
|
const entriesForType = data.entries.filter((e) => e.contentType === singletonKey);
|
|
34105
34867
|
if (entriesForType.length > 1) {
|
|
34106
34868
|
ctx.addIssue({
|
|
34107
|
-
code:
|
|
34869
|
+
code: z67.ZodIssueCode.custom,
|
|
34108
34870
|
message: `Singleton content type "${singletonKey}" cannot have more than one entry. Found ${entriesForType.length} entries.`,
|
|
34109
34871
|
path: ["entries"]
|
|
34110
34872
|
});
|
|
@@ -34217,18 +34979,18 @@ function validateLayout(layout) {
|
|
|
34217
34979
|
}
|
|
34218
34980
|
|
|
34219
34981
|
// src/config/dashboard-validation.ts
|
|
34220
|
-
import { z as
|
|
34221
|
-
var navIdListSchema2 =
|
|
34982
|
+
import { z as z68 } from "zod";
|
|
34983
|
+
var navIdListSchema2 = z68.preprocess((value) => {
|
|
34222
34984
|
if (!Array.isArray(value)) return void 0;
|
|
34223
34985
|
const filtered = value.filter((v) => typeof v === "string" && v.trim().length > 0);
|
|
34224
34986
|
return filtered.length > 0 ? filtered : void 0;
|
|
34225
|
-
},
|
|
34226
|
-
var dashboardNavVisibilityBaseSchema2 =
|
|
34227
|
-
mode:
|
|
34987
|
+
}, z68.array(z68.string()).max(200, "Maximum 200 nav IDs").optional());
|
|
34988
|
+
var dashboardNavVisibilityBaseSchema2 = z68.object({
|
|
34989
|
+
mode: z68.enum(["augment", "restrict"]).optional(),
|
|
34228
34990
|
allowIds: navIdListSchema2,
|
|
34229
34991
|
denyIds: navIdListSchema2
|
|
34230
34992
|
}).strip();
|
|
34231
|
-
var dashboardNavVisibilityRolesSchema2 =
|
|
34993
|
+
var dashboardNavVisibilityRolesSchema2 = z68.object({
|
|
34232
34994
|
administrator: dashboardNavVisibilityBaseSchema2.optional(),
|
|
34233
34995
|
editor: dashboardNavVisibilityBaseSchema2.optional(),
|
|
34234
34996
|
team_member: dashboardNavVisibilityBaseSchema2.optional()
|
|
@@ -34236,20 +34998,20 @@ var dashboardNavVisibilityRolesSchema2 = z67.object({
|
|
|
34236
34998
|
var dashboardNavVisibilitySchema2 = dashboardNavVisibilityBaseSchema2.extend({
|
|
34237
34999
|
roles: dashboardNavVisibilityRolesSchema2
|
|
34238
35000
|
}).strip();
|
|
34239
|
-
var dashboardNavigationConfigSchema2 =
|
|
35001
|
+
var dashboardNavigationConfigSchema2 = z68.object({
|
|
34240
35002
|
siteNav: dashboardNavVisibilitySchema2.optional(),
|
|
34241
35003
|
settingsNav: dashboardNavVisibilitySchema2.optional()
|
|
34242
35004
|
}).strip();
|
|
34243
|
-
var dashboardConfigSchema2 =
|
|
34244
|
-
previewEditingEnabled:
|
|
35005
|
+
var dashboardConfigSchema2 = z68.object({
|
|
35006
|
+
previewEditingEnabled: z68.boolean().optional(),
|
|
34245
35007
|
navigation: dashboardNavigationConfigSchema2.optional()
|
|
34246
35008
|
}).strip();
|
|
34247
35009
|
|
|
34248
35010
|
// src/zod/titleSourceSchema.ts
|
|
34249
|
-
import { z as
|
|
34250
|
-
var titleSourceValueSchema =
|
|
34251
|
-
|
|
34252
|
-
|
|
35011
|
+
import { z as z69 } from "zod";
|
|
35012
|
+
var titleSourceValueSchema = z69.union([
|
|
35013
|
+
z69.string().min(1),
|
|
35014
|
+
z69.array(z69.string().min(1)).min(1)
|
|
34253
35015
|
]);
|
|
34254
35016
|
|
|
34255
35017
|
// src/data/prefetchBlockData.ts
|
|
@@ -34268,11 +35030,11 @@ var SUPPORTED_LOADER_ENDPOINTS2 = [
|
|
|
34268
35030
|
];
|
|
34269
35031
|
|
|
34270
35032
|
// src/config/validation.ts
|
|
34271
|
-
var sdkThemePaletteSchema2 =
|
|
34272
|
-
var sdkThemeConfigSchema2 =
|
|
35033
|
+
var sdkThemePaletteSchema2 = z70.record(z70.string(), z70.string());
|
|
35034
|
+
var sdkThemeConfigSchema2 = z70.object({
|
|
34273
35035
|
palette: sdkThemePaletteSchema2
|
|
34274
35036
|
});
|
|
34275
|
-
var sdkSiteUrlSchema =
|
|
35037
|
+
var sdkSiteUrlSchema = z70.string().url("Must be a valid URL").refine((url) => {
|
|
34276
35038
|
try {
|
|
34277
35039
|
const parsed = new URL(url);
|
|
34278
35040
|
const isLocal = parsed.hostname === "localhost" || parsed.hostname.endsWith(".localhost") || parsed.hostname.endsWith(".local") || parsed.hostname.endsWith(".test");
|
|
@@ -34281,97 +35043,97 @@ var sdkSiteUrlSchema = z69.string().url("Must be a valid URL").refine((url) => {
|
|
|
34281
35043
|
return false;
|
|
34282
35044
|
}
|
|
34283
35045
|
}, { message: "Production URLs must use HTTPS" }).transform((url) => url.replace(/\/$/, ""));
|
|
34284
|
-
var sectionBackgroundSchema =
|
|
34285
|
-
id:
|
|
34286
|
-
label:
|
|
34287
|
-
token:
|
|
35046
|
+
var sectionBackgroundSchema = z70.object({
|
|
35047
|
+
id: z70.string(),
|
|
35048
|
+
label: z70.string(),
|
|
35049
|
+
token: z70.string()
|
|
34288
35050
|
// Reference to theme palette token
|
|
34289
35051
|
});
|
|
34290
|
-
var sectionSpacingSchema =
|
|
34291
|
-
var containerMaxWidthSchema =
|
|
34292
|
-
var containerAlignmentSchema =
|
|
34293
|
-
var sectionOptionsSchema =
|
|
34294
|
-
backgroundColor:
|
|
34295
|
-
backgroundImage:
|
|
34296
|
-
backgroundGradient:
|
|
34297
|
-
spacing:
|
|
34298
|
-
|
|
34299
|
-
|
|
35052
|
+
var sectionSpacingSchema = z70.enum(["compact", "default", "spacious"]);
|
|
35053
|
+
var containerMaxWidthSchema = z70.enum(["narrow", "default", "wide", "full"]);
|
|
35054
|
+
var containerAlignmentSchema = z70.enum(["left", "center", "right"]);
|
|
35055
|
+
var sectionOptionsSchema = z70.object({
|
|
35056
|
+
backgroundColor: z70.boolean().optional(),
|
|
35057
|
+
backgroundImage: z70.boolean().optional(),
|
|
35058
|
+
backgroundGradient: z70.boolean().optional(),
|
|
35059
|
+
spacing: z70.union([
|
|
35060
|
+
z70.array(sectionSpacingSchema),
|
|
35061
|
+
z70.boolean()
|
|
34300
35062
|
]).optional(),
|
|
34301
|
-
textColor:
|
|
35063
|
+
textColor: z70.boolean().optional()
|
|
34302
35064
|
}).optional();
|
|
34303
|
-
var containerOptionsSchema =
|
|
34304
|
-
maxWidth:
|
|
34305
|
-
|
|
34306
|
-
|
|
35065
|
+
var containerOptionsSchema = z70.object({
|
|
35066
|
+
maxWidth: z70.union([
|
|
35067
|
+
z70.array(containerMaxWidthSchema),
|
|
35068
|
+
z70.boolean()
|
|
34307
35069
|
]).optional(),
|
|
34308
|
-
alignment:
|
|
34309
|
-
|
|
34310
|
-
|
|
35070
|
+
alignment: z70.union([
|
|
35071
|
+
z70.array(containerAlignmentSchema),
|
|
35072
|
+
z70.boolean()
|
|
34311
35073
|
]).optional()
|
|
34312
35074
|
}).optional();
|
|
34313
|
-
var siteStyleConfigSchema =
|
|
34314
|
-
sectionBackgrounds:
|
|
35075
|
+
var siteStyleConfigSchema = z70.object({
|
|
35076
|
+
sectionBackgrounds: z70.array(sectionBackgroundSchema).optional(),
|
|
34315
35077
|
sectionOptions: sectionOptionsSchema,
|
|
34316
35078
|
containerOptions: containerOptionsSchema
|
|
34317
35079
|
}).optional();
|
|
34318
|
-
var sdkLoaderEndpointSchema2 =
|
|
35080
|
+
var sdkLoaderEndpointSchema2 = z70.enum(SUPPORTED_LOADER_ENDPOINTS2);
|
|
34319
35081
|
var allowedTransformIds = new Set(builtinTransformDefinitions.map((transform) => transform.id));
|
|
34320
|
-
var loaderTransformStepSchema =
|
|
34321
|
-
id:
|
|
35082
|
+
var loaderTransformStepSchema = z70.object({
|
|
35083
|
+
id: z70.string().refine((id) => allowedTransformIds.has(id), {
|
|
34322
35084
|
message: "Unknown transform id"
|
|
34323
35085
|
}),
|
|
34324
|
-
options:
|
|
35086
|
+
options: z70.record(z70.string(), z70.unknown()).optional()
|
|
34325
35087
|
});
|
|
34326
|
-
var loaderParamBindingSchema2 =
|
|
34327
|
-
$bind:
|
|
34328
|
-
from:
|
|
35088
|
+
var loaderParamBindingSchema2 = z70.object({
|
|
35089
|
+
$bind: z70.object({
|
|
35090
|
+
from: z70.string().min(1, "Binding path is required"),
|
|
34329
35091
|
// Loader params are ultimately string-normalized for query strings, so fallbacks should
|
|
34330
35092
|
// stay scalar. Use transforms (e.g. `value.jsonArray`) when you need to serialize
|
|
34331
35093
|
// more complex values into a string.
|
|
34332
|
-
fallback:
|
|
34333
|
-
transforms:
|
|
34334
|
-
pick:
|
|
34335
|
-
coerce:
|
|
35094
|
+
fallback: z70.union([z70.string(), z70.number(), z70.boolean(), z70.null()]).optional(),
|
|
35095
|
+
transforms: z70.array(loaderTransformStepSchema).default([]),
|
|
35096
|
+
pick: z70.enum(["value", "collection", "context"]).default("value"),
|
|
35097
|
+
coerce: z70.enum(["number", "boolean", "string"]).optional()
|
|
34336
35098
|
})
|
|
34337
35099
|
});
|
|
34338
|
-
var loaderParamValueSchema2 =
|
|
34339
|
-
|
|
34340
|
-
|
|
34341
|
-
|
|
35100
|
+
var loaderParamValueSchema2 = z70.union([
|
|
35101
|
+
z70.string(),
|
|
35102
|
+
z70.number(),
|
|
35103
|
+
z70.boolean(),
|
|
34342
35104
|
loaderParamBindingSchema2
|
|
34343
35105
|
]);
|
|
34344
|
-
var loaderWhenValueSchema =
|
|
34345
|
-
|
|
35106
|
+
var loaderWhenValueSchema = z70.union([
|
|
35107
|
+
z70.boolean(),
|
|
34346
35108
|
loaderParamBindingSchema2
|
|
34347
35109
|
]);
|
|
34348
|
-
var sdkConfigLoaderSchema2 =
|
|
35110
|
+
var sdkConfigLoaderSchema2 = z70.object({
|
|
34349
35111
|
endpoint: sdkLoaderEndpointSchema2,
|
|
34350
|
-
params:
|
|
34351
|
-
mode:
|
|
35112
|
+
params: z70.record(z70.string(), loaderParamValueSchema2),
|
|
35113
|
+
mode: z70.enum(["server", "client"]).default("server"),
|
|
34352
35114
|
when: loaderWhenValueSchema.optional()
|
|
34353
35115
|
});
|
|
34354
|
-
var sdkDataLoadersSchema2 =
|
|
35116
|
+
var sdkDataLoadersSchema2 = z70.record(z70.string(), sdkConfigLoaderSchema2).refine(
|
|
34355
35117
|
(loaders) => Object.keys(loaders).length <= 5,
|
|
34356
35118
|
{ message: "Maximum 5 data loaders per block" }
|
|
34357
35119
|
).optional();
|
|
34358
|
-
var fieldSelectOptionSchema =
|
|
34359
|
-
value:
|
|
34360
|
-
label:
|
|
35120
|
+
var fieldSelectOptionSchema = z70.object({
|
|
35121
|
+
value: z70.string().min(1, "Option value is required"),
|
|
35122
|
+
label: z70.string().min(1, "Option label is required")
|
|
34361
35123
|
});
|
|
34362
|
-
var blockFieldConfigSchema =
|
|
34363
|
-
options:
|
|
35124
|
+
var blockFieldConfigSchema = z70.object({
|
|
35125
|
+
options: z70.array(fieldSelectOptionSchema).min(1, "At least one option is required").optional()
|
|
34364
35126
|
});
|
|
34365
|
-
var blockFieldOptionsSchema =
|
|
34366
|
-
|
|
35127
|
+
var blockFieldOptionsSchema = z70.record(
|
|
35128
|
+
z70.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
|
|
34367
35129
|
message: "Block ID must be 'block.*' or 'custom.*' format"
|
|
34368
35130
|
}),
|
|
34369
|
-
|
|
34370
|
-
|
|
35131
|
+
z70.record(
|
|
35132
|
+
z70.string().min(1, "Field ID is required"),
|
|
34371
35133
|
blockFieldConfigSchema
|
|
34372
35134
|
)
|
|
34373
35135
|
).optional();
|
|
34374
|
-
var blockFieldExtensionSchema =
|
|
35136
|
+
var blockFieldExtensionSchema = z70.object({
|
|
34375
35137
|
fields: fieldSchema.array().min(1, "At least one field is required")
|
|
34376
35138
|
}).refine(
|
|
34377
35139
|
(data) => {
|
|
@@ -34385,10 +35147,10 @@ var blockFieldExtensionSchema = z69.object({
|
|
|
34385
35147
|
message: "Required fields must have a defaultValue to support existing blocks"
|
|
34386
35148
|
}
|
|
34387
35149
|
);
|
|
34388
|
-
var blockFieldExtensionsMapSchema =
|
|
35150
|
+
var blockFieldExtensionsMapSchema = z70.record(
|
|
34389
35151
|
// System blocks are kebab-case: block.body-text, block.event-calendar, ...
|
|
34390
35152
|
// Enforce: lowercase alphanumerics with single hyphens (no trailing hyphen, no consecutive hyphens).
|
|
34391
|
-
|
|
35153
|
+
z70.string().regex(/^block\.[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, {
|
|
34392
35154
|
message: "Block ID must be 'block.*' format (system blocks only)"
|
|
34393
35155
|
}),
|
|
34394
35156
|
blockFieldExtensionSchema
|
|
@@ -34404,7 +35166,7 @@ var blockFieldExtensionsMapSchema = z69.record(
|
|
|
34404
35166
|
(field) => field.id === collision.fieldId
|
|
34405
35167
|
);
|
|
34406
35168
|
ctx.addIssue({
|
|
34407
|
-
code:
|
|
35169
|
+
code: z70.ZodIssueCode.custom,
|
|
34408
35170
|
message: collision.message,
|
|
34409
35171
|
path: [
|
|
34410
35172
|
APPOINTMENT_BOOKING_BLOCK_ID,
|
|
@@ -34419,24 +35181,24 @@ var blockFieldExtensionsSchema = blockFieldExtensionsMapSchema.optional();
|
|
|
34419
35181
|
function collectAppointmentBookingExtensionReservedFieldCollisions(extension) {
|
|
34420
35182
|
return collectBookingReservedFieldCollisions(extension, { type: "booking" });
|
|
34421
35183
|
}
|
|
34422
|
-
var syncConfigSchema =
|
|
34423
|
-
existingEntries:
|
|
35184
|
+
var syncConfigSchema = z70.object({
|
|
35185
|
+
existingEntries: z70.enum(["skip", "update"]).optional()
|
|
34424
35186
|
}).optional();
|
|
34425
|
-
var deployConfigSchema =
|
|
34426
|
-
verifyCommand:
|
|
34427
|
-
prebuildOutput:
|
|
35187
|
+
var deployConfigSchema = z70.object({
|
|
35188
|
+
verifyCommand: z70.string().optional(),
|
|
35189
|
+
prebuildOutput: z70.string().optional()
|
|
34428
35190
|
}).optional();
|
|
34429
|
-
var sdkCustomBlockSchema =
|
|
35191
|
+
var sdkCustomBlockSchema = z70.object({
|
|
34430
35192
|
// Block ID must start with 'custom.'
|
|
34431
|
-
id:
|
|
35193
|
+
id: z70.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
|
|
34432
35194
|
message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
|
|
34433
35195
|
}),
|
|
34434
|
-
title:
|
|
35196
|
+
title: z70.string().min(1, "Title is required"),
|
|
34435
35197
|
titleSource: titleSourceValueSchema.optional(),
|
|
34436
|
-
description:
|
|
35198
|
+
description: z70.string().optional(),
|
|
34437
35199
|
category: blockCategoryEnum,
|
|
34438
|
-
icon:
|
|
34439
|
-
tags:
|
|
35200
|
+
icon: z70.string().optional(),
|
|
35201
|
+
tags: z70.array(z70.string()).optional(),
|
|
34440
35202
|
// Reuse the exact field schema from @riverbankcms/blocks - all field types supported
|
|
34441
35203
|
fields: fieldSchema.array().min(1, "Custom blocks must have at least one field"),
|
|
34442
35204
|
// Data loaders for CMS endpoints
|
|
@@ -34444,14 +35206,14 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34444
35206
|
// Optional declarative layout - when present, block can render without React override
|
|
34445
35207
|
layout: NodeSchema.optional(),
|
|
34446
35208
|
// Optional variants system (preferred when a block has multiple structural layouts)
|
|
34447
|
-
variants:
|
|
34448
|
-
defaultVariant:
|
|
34449
|
-
variantOptions:
|
|
34450
|
-
|
|
34451
|
-
|
|
34452
|
-
label:
|
|
34453
|
-
description:
|
|
34454
|
-
icon:
|
|
35209
|
+
variants: z70.record(z70.string().min(1), NodeSchema).optional(),
|
|
35210
|
+
defaultVariant: z70.string().min(1).optional(),
|
|
35211
|
+
variantOptions: z70.record(
|
|
35212
|
+
z70.string().min(1),
|
|
35213
|
+
z70.object({
|
|
35214
|
+
label: z70.string().min(1).optional(),
|
|
35215
|
+
description: z70.string().min(1).optional(),
|
|
35216
|
+
icon: z70.string().min(1).optional()
|
|
34455
35217
|
})
|
|
34456
35218
|
).optional()
|
|
34457
35219
|
}).superRefine((data, ctx) => {
|
|
@@ -34462,7 +35224,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34462
35224
|
const exists = fields3.some((field) => field.id === source);
|
|
34463
35225
|
if (!exists) {
|
|
34464
35226
|
ctx.addIssue({
|
|
34465
|
-
code:
|
|
35227
|
+
code: z70.ZodIssueCode.custom,
|
|
34466
35228
|
message: `titleSource must reference a valid field ID (got "${source}")`,
|
|
34467
35229
|
path: Array.isArray(data.titleSource) ? ["titleSource", index] : ["titleSource"]
|
|
34468
35230
|
});
|
|
@@ -34471,7 +35233,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34471
35233
|
}
|
|
34472
35234
|
if (data.layout && data.variants) {
|
|
34473
35235
|
ctx.addIssue({
|
|
34474
|
-
code:
|
|
35236
|
+
code: z70.ZodIssueCode.custom,
|
|
34475
35237
|
message: "Custom block must define either `layout` or `variants`, not both",
|
|
34476
35238
|
path: ["variants"]
|
|
34477
35239
|
});
|
|
@@ -34481,7 +35243,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34481
35243
|
if (!result.valid) {
|
|
34482
35244
|
for (const error of result.errors) {
|
|
34483
35245
|
ctx.addIssue({
|
|
34484
|
-
code:
|
|
35246
|
+
code: z70.ZodIssueCode.custom,
|
|
34485
35247
|
message: error.message,
|
|
34486
35248
|
path: ["layout"]
|
|
34487
35249
|
});
|
|
@@ -34492,14 +35254,14 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34492
35254
|
const keys = Object.keys(data.variants);
|
|
34493
35255
|
if (keys.length === 0) {
|
|
34494
35256
|
ctx.addIssue({
|
|
34495
|
-
code:
|
|
35257
|
+
code: z70.ZodIssueCode.custom,
|
|
34496
35258
|
message: "`variants` must contain at least one variant key",
|
|
34497
35259
|
path: ["variants"]
|
|
34498
35260
|
});
|
|
34499
35261
|
}
|
|
34500
35262
|
if (data.defaultVariant && !Object.prototype.hasOwnProperty.call(data.variants, data.defaultVariant)) {
|
|
34501
35263
|
ctx.addIssue({
|
|
34502
|
-
code:
|
|
35264
|
+
code: z70.ZodIssueCode.custom,
|
|
34503
35265
|
message: "`defaultVariant` must be a key present in `variants`",
|
|
34504
35266
|
path: ["defaultVariant"]
|
|
34505
35267
|
});
|
|
@@ -34509,7 +35271,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34509
35271
|
if (!result.valid) {
|
|
34510
35272
|
for (const error of result.errors) {
|
|
34511
35273
|
ctx.addIssue({
|
|
34512
|
-
code:
|
|
35274
|
+
code: z70.ZodIssueCode.custom,
|
|
34513
35275
|
message: `${key}: ${error.message}`,
|
|
34514
35276
|
path: ["variants", key]
|
|
34515
35277
|
});
|
|
@@ -34520,7 +35282,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34520
35282
|
for (const key of Object.keys(data.variantOptions)) {
|
|
34521
35283
|
if (!Object.prototype.hasOwnProperty.call(data.variants, key)) {
|
|
34522
35284
|
ctx.addIssue({
|
|
34523
|
-
code:
|
|
35285
|
+
code: z70.ZodIssueCode.custom,
|
|
34524
35286
|
message: "`variantOptions` key must exist in `variants`",
|
|
34525
35287
|
path: ["variantOptions", key]
|
|
34526
35288
|
});
|
|
@@ -34529,58 +35291,58 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34529
35291
|
}
|
|
34530
35292
|
}
|
|
34531
35293
|
});
|
|
34532
|
-
var themeSourceSchema =
|
|
34533
|
-
var activeThemeSchema =
|
|
35294
|
+
var themeSourceSchema = z70.enum(["local", "cms"]).optional();
|
|
35295
|
+
var activeThemeSchema = z70.string().regex(/^[a-z0-9][a-z0-9-_]*$/, {
|
|
34534
35296
|
message: "Theme name must be lowercase alphanumeric with hyphens/underscores"
|
|
34535
35297
|
}).max(64, "Theme name too long").optional();
|
|
34536
35298
|
function isValidConfigBlockKind(kind) {
|
|
34537
35299
|
if (getBlockDefinition(kind)) return true;
|
|
34538
35300
|
return /^custom\.[a-z][a-z0-9-]*$/.test(kind);
|
|
34539
35301
|
}
|
|
34540
|
-
var layoutBlockKindSchema =
|
|
35302
|
+
var layoutBlockKindSchema = z70.string().refine(isValidConfigBlockKind, {
|
|
34541
35303
|
message: 'Block kind must be a system block (e.g., "block.hero") or a custom block (e.g., "custom.my-block")'
|
|
34542
35304
|
});
|
|
34543
|
-
var layoutFooterBlockSchema =
|
|
34544
|
-
id:
|
|
35305
|
+
var layoutFooterBlockSchema = z70.object({
|
|
35306
|
+
id: z70.string().min(1).optional(),
|
|
34545
35307
|
kind: layoutBlockKindSchema,
|
|
34546
35308
|
// Allow omitted content for blocks that rely on defaults.
|
|
34547
|
-
content:
|
|
35309
|
+
content: z70.record(z70.string(), z70.unknown()).optional()
|
|
34548
35310
|
}).strict();
|
|
34549
|
-
var layoutConfigSchema =
|
|
34550
|
-
footerBlocks:
|
|
35311
|
+
var layoutConfigSchema = z70.object({
|
|
35312
|
+
footerBlocks: z70.array(layoutFooterBlockSchema).optional()
|
|
34551
35313
|
}).strict();
|
|
34552
|
-
var sdkWorkflowIdSchema2 =
|
|
35314
|
+
var sdkWorkflowIdSchema2 = z70.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
|
|
34553
35315
|
message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens"
|
|
34554
35316
|
});
|
|
34555
|
-
var sdkWorkflowEndpointSchema2 =
|
|
34556
|
-
var sdkWorkflowTriggerSchema2 =
|
|
34557
|
-
|
|
35317
|
+
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 "/"' });
|
|
35318
|
+
var sdkWorkflowTriggerSchema2 = z70.discriminatedUnion("type", [
|
|
35319
|
+
z70.object({ type: z70.literal("manual") }).strict()
|
|
34558
35320
|
]);
|
|
34559
|
-
var sdkWorkflowConfirmationSchema2 =
|
|
34560
|
-
title:
|
|
34561
|
-
body:
|
|
35321
|
+
var sdkWorkflowConfirmationSchema2 = z70.object({
|
|
35322
|
+
title: z70.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH),
|
|
35323
|
+
body: z70.string().trim().min(1).max(SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH).optional()
|
|
34562
35324
|
}).strict();
|
|
34563
|
-
var sdkWorkflowConfigSchema2 =
|
|
35325
|
+
var sdkWorkflowConfigSchema2 = z70.object({
|
|
34564
35326
|
id: sdkWorkflowIdSchema2,
|
|
34565
|
-
title:
|
|
34566
|
-
description:
|
|
34567
|
-
contentType:
|
|
35327
|
+
title: z70.string().trim().min(1).max(SDK_WORKFLOW_TITLE_MAX_LENGTH),
|
|
35328
|
+
description: z70.string().trim().min(1).max(SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH).optional(),
|
|
35329
|
+
contentType: z70.string().trim().min(1).max(SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH),
|
|
34568
35330
|
endpoint: sdkWorkflowEndpointSchema2,
|
|
34569
|
-
triggers:
|
|
35331
|
+
triggers: z70.array(sdkWorkflowTriggerSchema2).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
|
|
34570
35332
|
confirmation: sdkWorkflowConfirmationSchema2.optional()
|
|
34571
35333
|
}).strict();
|
|
34572
|
-
var sdkWorkflowsSchema2 =
|
|
35334
|
+
var sdkWorkflowsSchema2 = z70.array(sdkWorkflowConfigSchema2).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
|
|
34573
35335
|
const ids = workflows.map((workflow) => workflow.id);
|
|
34574
35336
|
return ids.length === new Set(ids).size;
|
|
34575
35337
|
}, { message: "Workflow IDs must be unique" }).optional();
|
|
34576
|
-
var riverbankSiteConfigSchema =
|
|
34577
|
-
siteId:
|
|
35338
|
+
var riverbankSiteConfigSchema = z70.object({
|
|
35339
|
+
siteId: z70.string().uuid(),
|
|
34578
35340
|
previewUrl: sdkSiteUrlSchema.optional(),
|
|
34579
35341
|
liveUrl: sdkSiteUrlSchema.optional(),
|
|
34580
35342
|
theme: sdkThemeConfigSchema2.optional(),
|
|
34581
35343
|
styles: siteStyleConfigSchema,
|
|
34582
35344
|
layout: layoutConfigSchema.optional(),
|
|
34583
|
-
customBlocks:
|
|
35345
|
+
customBlocks: z70.array(sdkCustomBlockSchema).max(100, "Maximum 100 custom blocks per site").refine(
|
|
34584
35346
|
// Ensure unique block IDs
|
|
34585
35347
|
(blocks) => {
|
|
34586
35348
|
const ids = blocks.map((b) => b.id);
|
|
@@ -34593,7 +35355,7 @@ var riverbankSiteConfigSchema = z69.object({
|
|
|
34593
35355
|
workflows: sdkWorkflowsSchema2,
|
|
34594
35356
|
content: contentConfigSchema.optional(),
|
|
34595
35357
|
// CLI-related configuration (Phase 4)
|
|
34596
|
-
contentDir:
|
|
35358
|
+
contentDir: z70.string().optional(),
|
|
34597
35359
|
sync: syncConfigSchema,
|
|
34598
35360
|
deploy: deployConfigSchema,
|
|
34599
35361
|
// Theme sync configuration (Phase 5)
|