@riverbankcms/sdk 0.77.0 → 0.78.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -0
- package/dist/{PreviewEditorSidebar-XSX7QKHQ.mjs → PreviewEditorSidebar-RIKFQ72L.mjs} +4916 -4847
- package/dist/{PreviewEditorUI-YZNEZ3QD.mjs → PreviewEditorUI-XO7TUWKK.mjs} +3 -3
- package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +194 -184
- package/dist/_dts/api/src/accessAdmin.d.ts +5 -0
- package/dist/_dts/api/src/billing.d.ts +3 -26
- package/dist/_dts/api/src/bookingVerticals.d.ts +4 -0
- package/dist/_dts/api/src/content-editor.d.ts +1 -0
- package/dist/_dts/api/src/demoDashboardMutationSurfaces.d.ts +46 -0
- package/dist/_dts/api/src/endpoints.d.ts +8 -0
- package/dist/_dts/api/src/index.d.ts +14 -2
- package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +87 -0
- package/dist/_dts/api/src/navigation/dashboardDemoNav.d.ts +5 -0
- package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +45 -0
- package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +42 -0
- package/dist/_dts/api/src/navigation/dashboardTeamMemberNav.d.ts +24 -0
- package/dist/_dts/api/src/navigation/linkUrlType.d.ts +3 -0
- package/dist/_dts/api/src/navigation.d.ts +12 -0
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +55 -26
- package/dist/_dts/api/src/staffAccess.d.ts +79 -0
- package/dist/_dts/api/src/types.d.ts +3 -1
- package/dist/_dts/api/src/workflows/automaticWorkflowTriggers.d.ts +21 -0
- package/dist/_dts/blocks/src/client/site-chrome.d.ts +4 -1
- package/dist/_dts/blocks/src/customBlockRegistry.d.ts +20 -1
- package/dist/_dts/blocks/src/index.d.ts +3 -2
- package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/faq.d.ts +294 -289
- package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +21 -21
- package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
- package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +2 -2
- package/dist/_dts/blocks/src/system/data/index.d.ts +5 -3
- package/dist/_dts/blocks/src/system/data/previewResolvedDataState.d.ts +45 -0
- package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
- package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +5 -0
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +5 -0
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -29
- package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +10 -0
- package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +3 -2
- package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +43 -8
- package/dist/_dts/blocks/src/system/runtime/components/multi-step/runtimeFormValidation.d.ts +28 -0
- package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +8 -7
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCompactRow.d.ts +1 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -8
- package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -9
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-cart-discount-ui.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +76 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout.state.d.ts +1 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce-store.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.shared.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop-discount-apply.state.d.ts +52 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +2 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/useDiscountApply.d.ts +21 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +54 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
- package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +4 -4
- package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
- package/dist/_dts/content-editor/src/contentTypeEditorContentState.d.ts +26 -0
- package/dist/_dts/content-editor/src/definitions/factory.d.ts +75 -0
- package/dist/_dts/content-editor/src/entryWorkflows.d.ts +2 -0
- package/dist/_dts/content-editor/src/footerBlocksEditorState.d.ts +76 -0
- package/dist/_dts/content-editor/src/index.d.ts +5 -0
- package/dist/_dts/content-editor/src/pageWorkflowContent.d.ts +29 -0
- package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
- package/dist/_dts/content-model/src/index.d.ts +1 -0
- package/dist/_dts/content-model/src/routeTemplate.d.ts +4 -0
- package/dist/_dts/content-model/src/templates/editorState.d.ts +25 -0
- package/dist/_dts/core/src/csv-cells.d.ts +10 -0
- package/dist/_dts/core/src/csv-date-filter.d.ts +27 -0
- package/dist/_dts/core/src/csv-escape.d.ts +1 -0
- package/dist/_dts/core/src/csv-filename.d.ts +18 -0
- package/dist/_dts/core/src/csv-render.d.ts +4 -0
- package/dist/_dts/core/src/csv-types.d.ts +116 -0
- package/dist/_dts/core/src/currency-format.d.ts +4 -0
- package/dist/_dts/core/src/demo-capability-policy.d.ts +29 -0
- package/dist/_dts/core/src/demo-claim-access.d.ts +14 -0
- package/dist/_dts/core/src/demo-lifecycle-status.d.ts +11 -0
- package/dist/_dts/core/src/demo-runtime.d.ts +47 -0
- package/dist/_dts/core/src/duration.d.ts +14 -0
- package/dist/_dts/core/src/email-format.d.ts +10 -0
- package/dist/_dts/core/src/field-errors.d.ts +1 -0
- package/dist/_dts/core/src/form-submission-preview.d.ts +24 -0
- package/dist/_dts/core/src/index.d.ts +20 -0
- package/dist/_dts/core/src/number-input.d.ts +22 -0
- package/dist/_dts/core/src/public-url-validation.d.ts +12 -0
- package/dist/_dts/core/src/slug.d.ts +39 -0
- package/dist/_dts/core/src/string.d.ts +19 -0
- package/dist/_dts/core/src/uuid.d.ts +6 -0
- package/dist/_dts/db/src/schemas/forms.d.ts +50 -50
- package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +34 -0
- package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +24 -0
- package/dist/_dts/media-core/src/canonicalCropReview.d.ts +66 -0
- package/dist/_dts/media-core/src/classifyAllPlanning.d.ts +48 -0
- package/dist/_dts/media-core/src/filename.d.ts +1 -0
- package/dist/_dts/media-core/src/index.d.ts +10 -0
- package/dist/_dts/media-core/src/mediaAssetUsageStatus.d.ts +47 -0
- package/dist/_dts/media-core/src/mediaSettingsState.d.ts +3 -0
- package/dist/_dts/media-core/src/portableMediaReferences.d.ts +38 -0
- package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +28 -0
- package/dist/_dts/media-core/src/videoAssetRepair.d.ts +38 -0
- package/dist/_dts/media-editor/src/mediaEditorDebug.d.ts +1 -0
- package/dist/_dts/path-utils/src/index.d.ts +8 -0
- package/dist/_dts/path-utils/src/redirectPaths.d.ts +26 -0
- package/dist/_dts/path-utils/src/safeAppPath.d.ts +26 -0
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/preview/previewDocumentFrame.d.ts +31 -0
- package/dist/_dts/sdk/src/client/error.d.ts +3 -0
- package/dist/_dts/sdk/src/client/index.d.ts +2 -2
- package/dist/_dts/sdk/src/client/types.d.ts +37 -19
- package/dist/_dts/sdk/src/contracts/theme.d.ts +1 -1
- package/dist/_dts/sdk/src/index.d.ts +2 -2
- package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +16 -16
- package/dist/_dts/sdk/src/next/content-load-failure.d.ts +51 -0
- package/dist/_dts/sdk/src/next/index.d.ts +2 -1
- package/dist/_dts/sdk/src/next/types.d.ts +19 -0
- package/dist/_dts/sdk/src/portal/redirects.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -2
- package/dist/_dts/sdk/src/routing/index.d.ts +3 -2
- package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +71 -6
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commands.d.ts +12 -12
- package/dist/_dts/site-commands/src/index.d.ts +1 -0
- package/dist/_dts/site-commands/src/pagePaths.d.ts +6 -0
- package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +26 -0
- package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -0
- package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/fonts/uploadFormat.d.ts +44 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/index.d.ts +3 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +63 -51
- package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +6 -1
- package/dist/_dts/theme-core/src/navigation/types.d.ts +12 -0
- package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
- package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +7 -0
- package/dist/_dts/theme-core/src/schema.d.ts +90 -48
- package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +214 -34
- package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -2
- package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +214 -34
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -1
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +35 -7
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +96 -34
- package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +4 -2
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -1
- package/dist/_dts/theme-core/src/site-styles/types.d.ts +27 -2
- package/dist/_dts/theme-core/src/siteChrome.d.ts +17 -34
- package/dist/_dts/theme-core/src/siteChromeOverlayClearance.d.ts +22 -0
- package/dist/_dts/theme-core/src/siteChromePlacement.d.ts +22 -0
- package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +32 -0
- package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
- package/dist/{chunk-EAWHBECW.mjs → chunk-F7RTCZYN.mjs} +229 -50
- package/dist/{chunk-GSQX43EZ.mjs → chunk-NIDXI46P.mjs} +22 -41
- package/dist/{chunk-WLQBJN2Z.mjs → chunk-OECWLDHN.mjs} +4538 -1911
- package/dist/{chunk-VX7B5VAC.mjs → chunk-SVMMM2NA.mjs} +8 -0
- package/dist/{chunk-6SMUFTXD.mjs → chunk-SXOLGNMX.mjs} +1 -1
- package/dist/{chunk-ANKDYZ2E.mjs → chunk-TXDES5P2.mjs} +2 -2
- package/dist/cli/index.mjs +2036 -594
- package/dist/client/{accordion-RZMQSYLR.mjs → accordion-EVDEOUPR.mjs} +2 -2
- package/dist/client/{bookingForm-NF4ASVNV.mjs → bookingForm-DIHBLC64.mjs} +27 -30
- package/dist/client/bookings.mjs +3707 -259
- package/dist/client/{carousel-LDX47ZIK.mjs → carousel-FEBQHIWI.mjs} +3 -4
- package/dist/client/{cart-RGXDS5F4.mjs → cart-7CKSXAE4.mjs} +8 -8
- package/dist/client/{checkout-P7WWSNNY.mjs → checkout-WKYCANLV.mjs} +8 -8
- package/dist/client/{chunk-JNC7CGHX.mjs → chunk-2SAVKN2M.mjs} +2 -2
- package/dist/client/{chunk-TQ5MSPDX.mjs → chunk-36WJCERQ.mjs} +1 -1
- package/dist/client/{chunk-R56FQ3RR.mjs → chunk-65F47D7Y.mjs} +280 -71
- package/dist/client/{chunk-L3DNHIJX.mjs → chunk-GUK2FPXQ.mjs} +23 -45
- package/dist/client/{chunk-PMAIXMAB.mjs → chunk-IVNCUVAV.mjs} +26 -21
- package/dist/client/{chunk-II7O4XN3.mjs → chunk-OFMSCGNY.mjs} +2 -2
- package/dist/client/chunk-PD6NBCEY.mjs +66 -0
- package/dist/client/{chunk-GMVTOKYG.mjs → chunk-RV6FX7UH.mjs} +510 -64
- package/dist/client/{chunk-E2TDNXCL.mjs → chunk-RZDWX7QW.mjs} +2 -1
- package/dist/client/{chunk-M3L3KYYR.mjs → chunk-UDNSI5PY.mjs} +12 -0
- package/dist/client/{chunk-JEZECJ3W.mjs → chunk-VPPMNXCF.mjs} +129 -3
- package/dist/client/{chunk-UFSWADAO.mjs → chunk-YDSEG6GZ.mjs} +5 -66
- package/dist/client/client.mjs +8983 -6152
- package/dist/client/{courseRegistration-7F65K5ZR.mjs → courseRegistration-5QF2PHKM.mjs} +14 -11
- package/dist/client/{eventCalendar-GLSC5KTL.mjs → eventCalendar-4ZOSETDU.mjs} +9 -9
- package/dist/client/{eventCombined-ZHK4WKUR.mjs → eventCombined-WQGU7JUX.mjs} +9 -9
- package/dist/client/{eventDetails-E3PJYBIN.mjs → eventDetails-AYWVUJ5Y.mjs} +9 -9
- package/dist/client/{eventListing-EMS3WC3E.mjs → eventListing-NT7C6UT5.mjs} +9 -9
- package/dist/client/{eventRegistration-NZOTVNPI.mjs → eventRegistration-OH24F4ZJ.mjs} +9 -9
- package/dist/client/{form-ETFZFATW.mjs → form-7L42SRBB.mjs} +6 -6
- package/dist/client/{headerSection-4LBP7ULT.mjs → headerSection-OZRZNZ52.mjs} +3 -3
- package/dist/client/hooks.mjs +1388 -427
- package/dist/client/{locationMap-5M655YSJ.mjs → locationMap-ZBXRPQ7C.mjs} +2 -2
- package/dist/client/{newsletterForm-QOUYW44O.mjs → newsletterForm-SNAGFF2I.mjs} +3 -3
- package/dist/client/{productDetail-O4DOCWQG.mjs → productDetail-I46BOFGV.mjs} +8 -8
- package/dist/client/{productList-A5RO5WIS.mjs → productList-BOYHTYI6.mjs} +8 -8
- package/dist/client/rendering/client.mjs +7090 -2645
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +7395 -4767
- package/dist/client/{shop-L4MZH4I2.mjs → shop-XTXPZTKR.mjs} +8 -8
- package/dist/preview-next/before-render.mjs +8 -0
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/preview-next/editor-chrome.css +10 -0
- package/dist/preview-next/middleware.mjs +8 -0
- package/dist/{sdk-runtime-Q6MTR4KL.mjs → sdk-runtime-ZJLKC6DR.mjs} +6 -6
- package/dist/server/components.mjs +4175 -2480
- package/dist/server/config-validation.mjs +1619 -658
- package/dist/server/config.mjs +1619 -658
- package/dist/server/data.mjs +1388 -427
- package/dist/server/index.mjs +488 -246
- package/dist/server/next.mjs +5607 -3354
- package/dist/server/page-converter.mjs +912 -259
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +4176 -2481
- package/dist/server/rendering.mjs +4194 -2486
- package/dist/server/routing.mjs +2078 -639
- package/dist/server/server.mjs +1886 -685
- package/dist/server/theme-bridge.mjs +4441 -1300
- package/dist/server/theme.mjs +89 -12
- package/dist/styles/index.css +1576 -1083
- package/package.json +2 -1
- package/dist/SdkPreviewModeRuntime-5FS5E6BI.mjs +0 -8
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/DiscountCodeSection.d.ts +0 -7
- package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +0 -4
- package/dist/client/chunk-OJPZEZU2.mjs +0 -31
- package/dist/client/chunk-RTZ3JKKX.mjs +0 -178
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 */
|
|
@@ -9974,8 +10160,19 @@ var headingTypographyStyleSchema = typographyStyleSchema.extend({
|
|
|
9974
10160
|
colorToken: themeColorTokenSchema.nullable().optional()
|
|
9975
10161
|
});
|
|
9976
10162
|
var proseLinkUnderlineStyleSchema = z21.enum(["solid", "dotted", "dashed"]);
|
|
9977
|
-
var proseLinkUnderlineThicknessSchema = z21.enum([
|
|
9978
|
-
|
|
10163
|
+
var proseLinkUnderlineThicknessSchema = z21.enum([
|
|
10164
|
+
"auto",
|
|
10165
|
+
"fromFont",
|
|
10166
|
+
"thin",
|
|
10167
|
+
"medium",
|
|
10168
|
+
"thick"
|
|
10169
|
+
]);
|
|
10170
|
+
var proseLinkUnderlineOffsetSchema = z21.enum([
|
|
10171
|
+
"auto",
|
|
10172
|
+
"tight",
|
|
10173
|
+
"normal",
|
|
10174
|
+
"loose"
|
|
10175
|
+
]);
|
|
9979
10176
|
var proseLinkStyleSchema = z21.object({
|
|
9980
10177
|
colorToken: themeColorTokenSchema.optional(),
|
|
9981
10178
|
hoverColorToken: themeColorTokenSchema.optional(),
|
|
@@ -9986,7 +10183,14 @@ var proseLinkStyleSchema = z21.object({
|
|
|
9986
10183
|
underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
|
|
9987
10184
|
underlineOffset: proseLinkUnderlineOffsetSchema.optional()
|
|
9988
10185
|
});
|
|
9989
|
-
var semanticSpacingSchema = z21.enum([
|
|
10186
|
+
var semanticSpacingSchema = z21.enum([
|
|
10187
|
+
"none",
|
|
10188
|
+
"compact",
|
|
10189
|
+
"cozy",
|
|
10190
|
+
"medium",
|
|
10191
|
+
"comfortable",
|
|
10192
|
+
"spacious"
|
|
10193
|
+
]);
|
|
9990
10194
|
var boxRoundedSchema = z21.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
|
|
9991
10195
|
var boxBackgroundOverlaySchema = z21.object({
|
|
9992
10196
|
type: z21.enum(["none", "color", "gradient"]).nullable().optional(),
|
|
@@ -10032,6 +10236,7 @@ var sectionStylesOverrideSchema = z21.object({
|
|
|
10032
10236
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
10033
10237
|
minHeight: z21.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
|
|
10034
10238
|
tileTreatment: z21.enum(tileTreatmentValues).nullable().optional(),
|
|
10239
|
+
eventListTreatment: z21.enum(eventListTreatmentValues).nullable().optional(),
|
|
10035
10240
|
eyebrowTreatment: z21.enum(eyebrowTreatmentValues).nullable().optional(),
|
|
10036
10241
|
headingDecoration: headingDecorationSchema.nullable().optional(),
|
|
10037
10242
|
// Author-level override consumed by later block/editor rendering phases.
|
|
@@ -10130,9 +10335,17 @@ var inputStyle = z21.object({
|
|
|
10130
10335
|
focus: z21.enum(["glow", "ring", "underline"]),
|
|
10131
10336
|
label: z21.enum(["inside", "above"])
|
|
10132
10337
|
});
|
|
10133
|
-
var headerVariant = z21.enum(["classic", "centered", "transparent", "floating"
|
|
10338
|
+
var headerVariant = z21.enum(["classic", "centered", "transparent", "floating"]);
|
|
10134
10339
|
var headerPositioning = z21.enum(["static", "sticky", "fixed"]);
|
|
10135
|
-
var headerNavStyle = z21.enum([
|
|
10340
|
+
var headerNavStyle = z21.enum([
|
|
10341
|
+
"minimal",
|
|
10342
|
+
"underline",
|
|
10343
|
+
"underline-grow",
|
|
10344
|
+
"capsule",
|
|
10345
|
+
"scale",
|
|
10346
|
+
"frosted",
|
|
10347
|
+
"solid"
|
|
10348
|
+
]);
|
|
10136
10349
|
var navFontWeight = z21.enum(["regular", "medium", "semibold", "bold"]);
|
|
10137
10350
|
var headerMaxWidth = z21.enum(["container", "full"]);
|
|
10138
10351
|
var headerContainerSchema = z21.object({
|
|
@@ -10180,8 +10393,22 @@ var dropdownStyleSchema = z21.object({
|
|
|
10180
10393
|
textSize: z21.enum(["xs", "sm", "base", "lg"]).optional()
|
|
10181
10394
|
// optional = no override (browser default)
|
|
10182
10395
|
}).optional();
|
|
10183
|
-
var headerCtaGapSchema = z21.enum([
|
|
10184
|
-
|
|
10396
|
+
var headerCtaGapSchema = z21.enum([
|
|
10397
|
+
"none",
|
|
10398
|
+
"tight",
|
|
10399
|
+
"compact",
|
|
10400
|
+
"default",
|
|
10401
|
+
"relaxed",
|
|
10402
|
+
"spacious"
|
|
10403
|
+
]);
|
|
10404
|
+
var headerCtaTreatmentSchema = z21.enum([
|
|
10405
|
+
"default",
|
|
10406
|
+
"primary",
|
|
10407
|
+
"secondary",
|
|
10408
|
+
"inverted",
|
|
10409
|
+
"outline",
|
|
10410
|
+
"ghost"
|
|
10411
|
+
]);
|
|
10185
10412
|
var navContainerSchema = z21.object({
|
|
10186
10413
|
type: z21.enum(["none", "pill", "glass"]).default("none"),
|
|
10187
10414
|
tint: z21.string().nullable().optional(),
|
|
@@ -10236,7 +10463,14 @@ var footerMaxWidth = z21.enum(["container", "full"]);
|
|
|
10236
10463
|
var footerMode = z21.enum(["default", "blocks", "default+blocks", "none"]);
|
|
10237
10464
|
var footerNavLayoutMode = z21.enum(["stack", "inline", "inline-wrap"]);
|
|
10238
10465
|
var footerNavLayoutAlign = z21.enum(["start", "center", "end", "space-between"]);
|
|
10239
|
-
var footerSpacing = z21.enum([
|
|
10466
|
+
var footerSpacing = z21.enum([
|
|
10467
|
+
"none",
|
|
10468
|
+
"tight",
|
|
10469
|
+
"compact",
|
|
10470
|
+
"default",
|
|
10471
|
+
"relaxed",
|
|
10472
|
+
"spacious"
|
|
10473
|
+
]);
|
|
10240
10474
|
var footerLogoPlacement = z21.enum(["left", "right", "above", "below"]);
|
|
10241
10475
|
var footerLogoSize = z21.enum(["sm", "md", "lg", "xl"]);
|
|
10242
10476
|
var footerLogoMaxHeight = z21.enum(["sm", "md", "lg", "xl"]);
|
|
@@ -10301,7 +10535,12 @@ var footerSchema = z21.object({
|
|
|
10301
10535
|
logo: footerLogoSchema.optional(),
|
|
10302
10536
|
bottomBar: footerBottomBarSchema.optional()
|
|
10303
10537
|
});
|
|
10304
|
-
var containerPaddingPresetSchema = z21.enum([
|
|
10538
|
+
var containerPaddingPresetSchema = z21.enum([
|
|
10539
|
+
"tight",
|
|
10540
|
+
"compact",
|
|
10541
|
+
"default",
|
|
10542
|
+
"relaxed"
|
|
10543
|
+
]);
|
|
10305
10544
|
var layoutSchema = z21.object({
|
|
10306
10545
|
containerPadding: z21.object({
|
|
10307
10546
|
mobile: containerPaddingPresetSchema.optional(),
|
|
@@ -10309,8 +10548,24 @@ var layoutSchema = z21.object({
|
|
|
10309
10548
|
desktop: containerPaddingPresetSchema.optional()
|
|
10310
10549
|
}).optional()
|
|
10311
10550
|
}).optional();
|
|
10312
|
-
var heroTypographySizeSchema = z21.enum([
|
|
10313
|
-
|
|
10551
|
+
var heroTypographySizeSchema = z21.enum([
|
|
10552
|
+
"sm",
|
|
10553
|
+
"base",
|
|
10554
|
+
"lg",
|
|
10555
|
+
"xl",
|
|
10556
|
+
"2xl",
|
|
10557
|
+
"3xl",
|
|
10558
|
+
"4xl",
|
|
10559
|
+
"5xl",
|
|
10560
|
+
"6xl",
|
|
10561
|
+
"editorial"
|
|
10562
|
+
]);
|
|
10563
|
+
var heroTypographyLineHeightSchema = z21.enum([
|
|
10564
|
+
"tight",
|
|
10565
|
+
"snug",
|
|
10566
|
+
"normal",
|
|
10567
|
+
"relaxed"
|
|
10568
|
+
]);
|
|
10314
10569
|
var heroResponsiveTypographySchema = z21.object({
|
|
10315
10570
|
headlineSize: heroTypographySizeSchema.optional(),
|
|
10316
10571
|
headlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
@@ -10815,6 +11070,34 @@ var paletteVariantsById = new Map(
|
|
|
10815
11070
|
paletteVariants.map((v) => [v.id, v])
|
|
10816
11071
|
);
|
|
10817
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
|
+
|
|
10818
11101
|
// ../theme-core/src/site-styles/headerLooks.ts
|
|
10819
11102
|
function asHeaderLookId(value) {
|
|
10820
11103
|
return value;
|
|
@@ -10864,23 +11147,13 @@ var headerLayoutCatalog = [
|
|
|
10864
11147
|
maxRecommendedNavItems: 5,
|
|
10865
11148
|
allowedLogoShapes: ["none", "text-only", "horizontal", "square"]
|
|
10866
11149
|
},
|
|
10867
|
-
{
|
|
10868
|
-
id: asHeaderLayoutId("editorial"),
|
|
10869
|
-
label: "Editorial",
|
|
10870
|
-
description: "A composed, magazine-like stacked header treatment.",
|
|
10871
|
-
structure: "editorial-stack",
|
|
10872
|
-
variant: "editorial",
|
|
10873
|
-
defaultPositioning: "static",
|
|
10874
|
-
shrinkOnScroll: false,
|
|
10875
|
-
maxRecommendedNavItems: 6
|
|
10876
|
-
},
|
|
10877
11150
|
{
|
|
10878
11151
|
id: asHeaderLayoutId("floating"),
|
|
10879
11152
|
label: "Floating",
|
|
10880
11153
|
description: "Detached header chrome that sits over the opening section.",
|
|
10881
11154
|
structure: "floating-shell",
|
|
10882
11155
|
variant: "floating",
|
|
10883
|
-
defaultPositioning: "
|
|
11156
|
+
defaultPositioning: "sticky",
|
|
10884
11157
|
shrinkOnScroll: true,
|
|
10885
11158
|
maxRecommendedNavItems: 5,
|
|
10886
11159
|
allowedLogoShapes: ["none", "text-only", "horizontal"]
|
|
@@ -10894,17 +11167,23 @@ var headerStyleCatalog = [
|
|
|
10894
11167
|
id: asHeaderStyleId("minimal"),
|
|
10895
11168
|
label: "Minimal",
|
|
10896
11169
|
description: "Quiet surface with simple color-change navigation.",
|
|
10897
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"
|
|
11170
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10898
11171
|
navInteraction: "color-change",
|
|
10899
|
-
surface: "neutral"
|
|
11172
|
+
surface: "neutral",
|
|
11173
|
+
defaultDepth: "none",
|
|
11174
|
+
navTypography: "plain",
|
|
11175
|
+
moods: ["calm", "professional", "editorial"]
|
|
10900
11176
|
},
|
|
10901
11177
|
{
|
|
10902
11178
|
id: asHeaderStyleId("fine-line"),
|
|
10903
11179
|
label: "Fine Line",
|
|
10904
11180
|
description: "Light surface with a crisp lower rule and underline hover.",
|
|
10905
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"
|
|
11181
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10906
11182
|
navInteraction: "underline-grow",
|
|
10907
|
-
surface: "bordered"
|
|
11183
|
+
surface: "bordered",
|
|
11184
|
+
defaultDepth: "line",
|
|
11185
|
+
navTypography: "plain",
|
|
11186
|
+
moods: ["calm", "professional", "editorial"]
|
|
10908
11187
|
},
|
|
10909
11188
|
{
|
|
10910
11189
|
id: asHeaderStyleId("soft-bar"),
|
|
@@ -10912,7 +11191,10 @@ var headerStyleCatalog = [
|
|
|
10912
11191
|
description: "Soft tinted surface with gentle pill hover states.",
|
|
10913
11192
|
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10914
11193
|
navInteraction: "pill-background",
|
|
10915
|
-
surface: "soft"
|
|
11194
|
+
surface: "soft",
|
|
11195
|
+
defaultDepth: "line",
|
|
11196
|
+
navTypography: "plain",
|
|
11197
|
+
moods: ["calm", "professional"]
|
|
10916
11198
|
},
|
|
10917
11199
|
{
|
|
10918
11200
|
id: asHeaderStyleId("pill-nav"),
|
|
@@ -10920,23 +11202,32 @@ var headerStyleCatalog = [
|
|
|
10920
11202
|
description: "A calm pill navigation rail over a neutral header.",
|
|
10921
11203
|
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10922
11204
|
navInteraction: "pill-background",
|
|
10923
|
-
surface: "soft"
|
|
11205
|
+
surface: "soft",
|
|
11206
|
+
defaultDepth: "none",
|
|
11207
|
+
navTypography: "plain",
|
|
11208
|
+
moods: ["calm"]
|
|
10924
11209
|
},
|
|
10925
11210
|
{
|
|
10926
11211
|
id: asHeaderStyleId("brand-bar"),
|
|
10927
11212
|
label: "Brand Bar",
|
|
10928
11213
|
description: "Solid brand surface with high-contrast navigation.",
|
|
10929
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"
|
|
11214
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10930
11215
|
navInteraction: "color-change",
|
|
10931
|
-
surface: "brand-solid"
|
|
11216
|
+
surface: "brand-solid",
|
|
11217
|
+
defaultDepth: "none",
|
|
11218
|
+
navTypography: "brand-caps",
|
|
11219
|
+
moods: ["professional", "expressive", "utility"]
|
|
10932
11220
|
},
|
|
10933
11221
|
{
|
|
10934
11222
|
id: asHeaderStyleId("brand-underline"),
|
|
10935
11223
|
label: "Brand Underline",
|
|
10936
11224
|
description: "Brand surface with underline-grow navigation.",
|
|
10937
|
-
supportedLayoutIds: supportedLayouts(["classic"
|
|
11225
|
+
supportedLayoutIds: supportedLayouts(["classic"]),
|
|
10938
11226
|
navInteraction: "underline-grow",
|
|
10939
|
-
surface: "brand-solid"
|
|
11227
|
+
surface: "brand-solid",
|
|
11228
|
+
defaultDepth: "none",
|
|
11229
|
+
navTypography: "brand-caps",
|
|
11230
|
+
moods: ["expressive"]
|
|
10940
11231
|
},
|
|
10941
11232
|
{
|
|
10942
11233
|
id: asHeaderStyleId("brand-pill"),
|
|
@@ -10944,41 +11235,54 @@ var headerStyleCatalog = [
|
|
|
10944
11235
|
description: "Solid brand surface with rounded active and hover states.",
|
|
10945
11236
|
supportedLayoutIds: supportedLayouts(["classic", "centered", "floating"]),
|
|
10946
11237
|
navInteraction: "pill-background",
|
|
10947
|
-
surface: "brand-solid"
|
|
11238
|
+
surface: "brand-solid",
|
|
11239
|
+
defaultDepth: "none",
|
|
11240
|
+
navTypography: "brand-caps",
|
|
11241
|
+
moods: ["expressive"]
|
|
10948
11242
|
},
|
|
10949
11243
|
{
|
|
10950
|
-
id: asHeaderStyleId("
|
|
10951
|
-
label: "
|
|
11244
|
+
id: asHeaderStyleId("serif-line"),
|
|
11245
|
+
label: "Serif Line",
|
|
10952
11246
|
description: "Typographic logo treatment with understated underline navigation.",
|
|
10953
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"
|
|
11247
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10954
11248
|
navInteraction: "underline-grow",
|
|
10955
|
-
surface: "bordered"
|
|
11249
|
+
surface: "bordered",
|
|
11250
|
+
defaultDepth: "line",
|
|
11251
|
+
navTypography: "heading",
|
|
11252
|
+
moods: ["editorial", "calm"]
|
|
10956
11253
|
},
|
|
10957
11254
|
{
|
|
10958
11255
|
id: asHeaderStyleId("flat-tabs"),
|
|
10959
11256
|
label: "Flat Tabs",
|
|
10960
11257
|
description: "Flat block hover and active states with a Swiss utility feel.",
|
|
10961
|
-
supportedLayoutIds: supportedLayouts(["classic", "centered"
|
|
11258
|
+
supportedLayoutIds: supportedLayouts(["classic", "centered"]),
|
|
10962
11259
|
navInteraction: "flat-block",
|
|
10963
|
-
surface: "bordered"
|
|
11260
|
+
surface: "bordered",
|
|
11261
|
+
defaultDepth: "shadow",
|
|
11262
|
+
navTypography: "quiet-caps",
|
|
11263
|
+
moods: ["professional", "utility", "expressive"]
|
|
10964
11264
|
},
|
|
10965
11265
|
{
|
|
10966
11266
|
id: asHeaderStyleId("glass"),
|
|
10967
11267
|
label: "Glass",
|
|
10968
|
-
description: "
|
|
11268
|
+
description: "Translucent chrome with frosted navigation backing.",
|
|
10969
11269
|
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
10970
11270
|
navInteraction: "glass-backed",
|
|
10971
11271
|
surface: "floating",
|
|
10972
|
-
|
|
11272
|
+
defaultDepth: "shadow",
|
|
11273
|
+
navTypography: "plain",
|
|
11274
|
+
moods: ["expressive", "calm"]
|
|
10973
11275
|
},
|
|
10974
11276
|
{
|
|
10975
11277
|
id: asHeaderStyleId("minimal-surface"),
|
|
10976
|
-
label: "
|
|
10977
|
-
description: "Floating
|
|
11278
|
+
label: "Clear Split",
|
|
11279
|
+
description: "Floating logo with transparent navigation and no shared shell.",
|
|
10978
11280
|
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
10979
11281
|
navInteraction: "color-change",
|
|
10980
11282
|
surface: "floating",
|
|
10981
|
-
|
|
11283
|
+
defaultDepth: "none",
|
|
11284
|
+
navTypography: "plain",
|
|
11285
|
+
moods: ["editorial", "calm"]
|
|
10982
11286
|
},
|
|
10983
11287
|
{
|
|
10984
11288
|
id: asHeaderStyleId("soft-shell"),
|
|
@@ -10987,7 +11291,31 @@ var headerStyleCatalog = [
|
|
|
10987
11291
|
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
10988
11292
|
navInteraction: "pill-background",
|
|
10989
11293
|
surface: "floating",
|
|
10990
|
-
|
|
11294
|
+
defaultDepth: "shadow",
|
|
11295
|
+
navTypography: "plain",
|
|
11296
|
+
moods: ["calm", "professional"]
|
|
11297
|
+
},
|
|
11298
|
+
{
|
|
11299
|
+
id: asHeaderStyleId("split-glass"),
|
|
11300
|
+
label: "Split Glass",
|
|
11301
|
+
description: "Logo floats independently while the navigation sits in a glass rail.",
|
|
11302
|
+
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
11303
|
+
navInteraction: "glass-backed",
|
|
11304
|
+
surface: "floating",
|
|
11305
|
+
defaultDepth: "shadow",
|
|
11306
|
+
navTypography: "quiet-caps",
|
|
11307
|
+
moods: ["expressive"]
|
|
11308
|
+
},
|
|
11309
|
+
{
|
|
11310
|
+
id: asHeaderStyleId("split-pill"),
|
|
11311
|
+
label: "Split Pill",
|
|
11312
|
+
description: "Logo floats independently with a soft pill-backed navigation rail.",
|
|
11313
|
+
supportedLayoutIds: supportedLayouts(["floating"]),
|
|
11314
|
+
navInteraction: "pill-background",
|
|
11315
|
+
surface: "floating",
|
|
11316
|
+
defaultDepth: "shadow",
|
|
11317
|
+
navTypography: "heading",
|
|
11318
|
+
moods: ["calm", "editorial"]
|
|
10991
11319
|
}
|
|
10992
11320
|
];
|
|
10993
11321
|
var headerLayoutsById = new Map(
|
|
@@ -11007,7 +11335,7 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
|
|
|
11007
11335
|
"brand-bar",
|
|
11008
11336
|
"brand-underline",
|
|
11009
11337
|
"brand-pill",
|
|
11010
|
-
"
|
|
11338
|
+
"serif-line",
|
|
11011
11339
|
"flat-tabs"
|
|
11012
11340
|
])
|
|
11013
11341
|
],
|
|
@@ -11020,19 +11348,7 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
|
|
|
11020
11348
|
"pill-nav",
|
|
11021
11349
|
"brand-bar",
|
|
11022
11350
|
"brand-pill",
|
|
11023
|
-
"
|
|
11024
|
-
"flat-tabs"
|
|
11025
|
-
])
|
|
11026
|
-
],
|
|
11027
|
-
[
|
|
11028
|
-
asHeaderLayoutId("editorial"),
|
|
11029
|
-
headerStyleRepairChain([
|
|
11030
|
-
"minimal",
|
|
11031
|
-
"fine-line",
|
|
11032
|
-
"soft-bar",
|
|
11033
|
-
"brand-bar",
|
|
11034
|
-
"brand-underline",
|
|
11035
|
-
"editorial-line",
|
|
11351
|
+
"serif-line",
|
|
11036
11352
|
"flat-tabs"
|
|
11037
11353
|
])
|
|
11038
11354
|
],
|
|
@@ -11041,6 +11357,8 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
|
|
|
11041
11357
|
headerStyleRepairChain([
|
|
11042
11358
|
"glass",
|
|
11043
11359
|
"minimal-surface",
|
|
11360
|
+
"split-glass",
|
|
11361
|
+
"split-pill",
|
|
11044
11362
|
"soft-shell",
|
|
11045
11363
|
"brand-pill"
|
|
11046
11364
|
])
|
|
@@ -11049,20 +11367,69 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
|
|
|
11049
11367
|
function headerStyleRepairChain(values) {
|
|
11050
11368
|
return values.map(asHeaderStyleId);
|
|
11051
11369
|
}
|
|
11052
|
-
var headerStyleRepairOrder = /* @__PURE__ */ new Map(
|
|
11053
|
-
[
|
|
11054
|
-
|
|
11055
|
-
|
|
11056
|
-
|
|
11057
|
-
|
|
11058
|
-
|
|
11059
|
-
|
|
11060
|
-
|
|
11061
|
-
|
|
11062
|
-
|
|
11063
|
-
|
|
11064
|
-
|
|
11065
|
-
]
|
|
11370
|
+
var headerStyleRepairOrder = /* @__PURE__ */ new Map(
|
|
11371
|
+
[
|
|
11372
|
+
[
|
|
11373
|
+
asHeaderStyleId("brand-bar"),
|
|
11374
|
+
headerStyleRepairChain(["brand-bar", "brand-pill", "minimal"])
|
|
11375
|
+
],
|
|
11376
|
+
[
|
|
11377
|
+
asHeaderStyleId("brand-underline"),
|
|
11378
|
+
headerStyleRepairChain(["serif-line", "fine-line", "minimal"])
|
|
11379
|
+
],
|
|
11380
|
+
[
|
|
11381
|
+
asHeaderStyleId("brand-pill"),
|
|
11382
|
+
headerStyleRepairChain(["brand-pill", "brand-bar", "minimal"])
|
|
11383
|
+
],
|
|
11384
|
+
[
|
|
11385
|
+
asHeaderStyleId("pill-nav"),
|
|
11386
|
+
headerStyleRepairChain(["pill-nav", "soft-bar", "minimal"])
|
|
11387
|
+
],
|
|
11388
|
+
[
|
|
11389
|
+
asHeaderStyleId("flat-tabs"),
|
|
11390
|
+
headerStyleRepairChain(["flat-tabs", "pill-nav", "minimal"])
|
|
11391
|
+
],
|
|
11392
|
+
[
|
|
11393
|
+
asHeaderStyleId("serif-line"),
|
|
11394
|
+
headerStyleRepairChain(["serif-line", "fine-line", "minimal"])
|
|
11395
|
+
],
|
|
11396
|
+
[
|
|
11397
|
+
asHeaderStyleId("glass"),
|
|
11398
|
+
headerStyleRepairChain([
|
|
11399
|
+
"glass",
|
|
11400
|
+
"soft-shell",
|
|
11401
|
+
"fine-line",
|
|
11402
|
+
"minimal-surface",
|
|
11403
|
+
"minimal"
|
|
11404
|
+
])
|
|
11405
|
+
],
|
|
11406
|
+
[
|
|
11407
|
+
asHeaderStyleId("soft-shell"),
|
|
11408
|
+
headerStyleRepairChain(["soft-shell", "soft-bar", "minimal"])
|
|
11409
|
+
],
|
|
11410
|
+
[
|
|
11411
|
+
asHeaderStyleId("minimal-surface"),
|
|
11412
|
+
headerStyleRepairChain(["minimal-surface", "minimal"])
|
|
11413
|
+
],
|
|
11414
|
+
[
|
|
11415
|
+
asHeaderStyleId("split-glass"),
|
|
11416
|
+
headerStyleRepairChain(["split-glass", "glass", "minimal-surface"])
|
|
11417
|
+
],
|
|
11418
|
+
[
|
|
11419
|
+
asHeaderStyleId("split-pill"),
|
|
11420
|
+
headerStyleRepairChain(["split-pill", "soft-shell", "brand-pill"])
|
|
11421
|
+
],
|
|
11422
|
+
[
|
|
11423
|
+
asHeaderStyleId("fine-line"),
|
|
11424
|
+
headerStyleRepairChain(["fine-line", "minimal"])
|
|
11425
|
+
],
|
|
11426
|
+
[
|
|
11427
|
+
asHeaderStyleId("soft-bar"),
|
|
11428
|
+
headerStyleRepairChain(["soft-bar", "minimal"])
|
|
11429
|
+
],
|
|
11430
|
+
[asHeaderStyleId("minimal"), headerStyleRepairChain(["minimal"])]
|
|
11431
|
+
]
|
|
11432
|
+
);
|
|
11066
11433
|
var legacyHeaderLookAliases = [
|
|
11067
11434
|
{
|
|
11068
11435
|
lookId: asHeaderLookId("clean-base"),
|
|
@@ -11079,10 +11446,10 @@ var legacyHeaderLookAliases = [
|
|
|
11079
11446
|
}
|
|
11080
11447
|
},
|
|
11081
11448
|
{
|
|
11082
|
-
lookId: asHeaderLookId("
|
|
11449
|
+
lookId: asHeaderLookId("serif-line"),
|
|
11083
11450
|
selection: {
|
|
11084
|
-
layoutId: asHeaderLayoutId("
|
|
11085
|
-
styleId: asHeaderStyleId("
|
|
11451
|
+
layoutId: asHeaderLayoutId("centered"),
|
|
11452
|
+
styleId: asHeaderStyleId("serif-line")
|
|
11086
11453
|
}
|
|
11087
11454
|
},
|
|
11088
11455
|
{
|
|
@@ -11121,9 +11488,7 @@ var legacyHeaderLookAliases = [
|
|
|
11121
11488
|
}
|
|
11122
11489
|
}
|
|
11123
11490
|
];
|
|
11124
|
-
var legacyHeaderLookAliasesById = new Map(
|
|
11125
|
-
legacyHeaderLookAliases.map((alias) => [alias.lookId, alias])
|
|
11126
|
-
);
|
|
11491
|
+
var legacyHeaderLookAliasesById = new Map(legacyHeaderLookAliases.map((alias) => [alias.lookId, alias]));
|
|
11127
11492
|
function getHeaderStyle(id) {
|
|
11128
11493
|
return headerStylesById.get(id) ?? null;
|
|
11129
11494
|
}
|
|
@@ -11141,10 +11506,29 @@ function resolveLegacyHeaderLookAlias(lookId) {
|
|
|
11141
11506
|
return legacyHeaderLookAliasesById.get(lookId)?.selection ?? null;
|
|
11142
11507
|
}
|
|
11143
11508
|
function getCompatibleHeaderStyleIds(layoutId) {
|
|
11144
|
-
return (headerStyleCompatibilityOrder.get(layoutId) ?? []).filter(
|
|
11145
|
-
|
|
11146
|
-
|
|
11147
|
-
|
|
11509
|
+
return (headerStyleCompatibilityOrder.get(layoutId) ?? []).filter(
|
|
11510
|
+
(styleId) => {
|
|
11511
|
+
const style = getHeaderStyleOrThrow(styleId);
|
|
11512
|
+
return isHeaderStyleCompatibleWithLayout(style, layoutId);
|
|
11513
|
+
}
|
|
11514
|
+
);
|
|
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
|
+
}
|
|
11148
11532
|
}
|
|
11149
11533
|
function solidBrandHeader(theme) {
|
|
11150
11534
|
const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
|
|
@@ -11175,8 +11559,14 @@ function solidBrandHeader(theme) {
|
|
|
11175
11559
|
borderRadius: "none",
|
|
11176
11560
|
effects: {
|
|
11177
11561
|
hover: [
|
|
11178
|
-
{
|
|
11179
|
-
|
|
11562
|
+
{
|
|
11563
|
+
effectId: "text-color-change",
|
|
11564
|
+
options: { hoverColorToken: "secondary" }
|
|
11565
|
+
},
|
|
11566
|
+
{
|
|
11567
|
+
effectId: "nav-underline",
|
|
11568
|
+
options: { style: "grow", colorToken: "secondary" }
|
|
11569
|
+
}
|
|
11180
11570
|
]
|
|
11181
11571
|
}
|
|
11182
11572
|
},
|
|
@@ -11232,10 +11622,10 @@ function cleanBaseHeader(theme) {
|
|
|
11232
11622
|
ctaGap: "default"
|
|
11233
11623
|
};
|
|
11234
11624
|
}
|
|
11235
|
-
function
|
|
11625
|
+
function serifLineHeader(theme) {
|
|
11236
11626
|
return {
|
|
11237
11627
|
...baseHeader(theme),
|
|
11238
|
-
variant: "
|
|
11628
|
+
variant: "centered",
|
|
11239
11629
|
positioning: "sticky",
|
|
11240
11630
|
shrinkOnScroll: false,
|
|
11241
11631
|
background: {
|
|
@@ -11289,9 +11679,7 @@ function practicalUtilityHeader(theme) {
|
|
|
11289
11679
|
navColor: "text",
|
|
11290
11680
|
navStyle: "solid",
|
|
11291
11681
|
navWeight: "semibold",
|
|
11292
|
-
shadow:
|
|
11293
|
-
elevation: "sm"
|
|
11294
|
-
},
|
|
11682
|
+
shadow: themedHeaderShadow(theme),
|
|
11295
11683
|
border: {
|
|
11296
11684
|
style: "solid",
|
|
11297
11685
|
width: "thin",
|
|
@@ -11360,6 +11748,7 @@ function floatingGlassHeader(theme) {
|
|
|
11360
11748
|
return {
|
|
11361
11749
|
...transparentOverlayHeader(theme),
|
|
11362
11750
|
variant: "floating",
|
|
11751
|
+
positioning: "sticky",
|
|
11363
11752
|
navStyle: "frosted",
|
|
11364
11753
|
navContainer: {
|
|
11365
11754
|
type: "glass",
|
|
@@ -11404,27 +11793,27 @@ var headerLookCatalog = [
|
|
|
11404
11793
|
compile: solidBrandHeader
|
|
11405
11794
|
},
|
|
11406
11795
|
{
|
|
11407
|
-
id: asHeaderLookId("
|
|
11408
|
-
label: "
|
|
11409
|
-
visualTreatment: "light-
|
|
11796
|
+
id: asHeaderLookId("serif-line"),
|
|
11797
|
+
label: "Serif line",
|
|
11798
|
+
visualTreatment: "light-serif",
|
|
11410
11799
|
layoutBehavior: "sticky",
|
|
11411
11800
|
configuration: {
|
|
11412
|
-
structure: "
|
|
11413
|
-
treatment: "light-
|
|
11801
|
+
structure: "centered-stack",
|
|
11802
|
+
treatment: "light-serif",
|
|
11414
11803
|
behavior: "sticky"
|
|
11415
11804
|
},
|
|
11416
11805
|
openingRequirement: "none",
|
|
11417
11806
|
maxRecommendedNavItems: 6,
|
|
11418
|
-
compile:
|
|
11807
|
+
compile: serifLineHeader
|
|
11419
11808
|
},
|
|
11420
11809
|
{
|
|
11421
11810
|
id: asHeaderLookId("centered-calm"),
|
|
11422
11811
|
label: "Centered calm",
|
|
11423
|
-
visualTreatment: "light-
|
|
11812
|
+
visualTreatment: "light-serif",
|
|
11424
11813
|
layoutBehavior: "normal-flow",
|
|
11425
11814
|
configuration: {
|
|
11426
11815
|
structure: "centered-stack",
|
|
11427
|
-
treatment: "light-
|
|
11816
|
+
treatment: "light-serif",
|
|
11428
11817
|
behavior: "normal-flow"
|
|
11429
11818
|
},
|
|
11430
11819
|
openingRequirement: "none",
|
|
@@ -11875,7 +12264,7 @@ var typographyPresets = [
|
|
|
11875
12264
|
heroTypography: {
|
|
11876
12265
|
headlineSize: "6xl",
|
|
11877
12266
|
headlineLineHeight: "tight",
|
|
11878
|
-
subheadlineSize: "
|
|
12267
|
+
subheadlineSize: "2xl",
|
|
11879
12268
|
subheadlineLineHeight: "normal",
|
|
11880
12269
|
microHeadlineSize: "6xl",
|
|
11881
12270
|
microHeadlineLineHeight: "tight",
|
|
@@ -11893,6 +12282,8 @@ var typographyPresetsById = new Map(
|
|
|
11893
12282
|
);
|
|
11894
12283
|
|
|
11895
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);
|
|
11896
12287
|
var curatedSiteStyleIdValues = [
|
|
11897
12288
|
"site-style:calm-studio",
|
|
11898
12289
|
"site-style:clear-professional",
|
|
@@ -11904,7 +12295,7 @@ var curatedSiteStyleIdValues = [
|
|
|
11904
12295
|
"site-style:personal-retreat-journal",
|
|
11905
12296
|
"site-style:tactile-workshop",
|
|
11906
12297
|
"site-style:modern-wellness",
|
|
11907
|
-
|
|
12298
|
+
SOFT_EARTH_SITE_STYLE_ID_VALUE,
|
|
11908
12299
|
"site-style:bold-launch",
|
|
11909
12300
|
"site-style:south-west-twerk-school"
|
|
11910
12301
|
];
|
|
@@ -11970,22 +12361,31 @@ var expressiveUnderlineInputs = {
|
|
|
11970
12361
|
}
|
|
11971
12362
|
};
|
|
11972
12363
|
function uniqueContentFrameKinds() {
|
|
11973
|
-
const kinds = [
|
|
11974
|
-
|
|
11975
|
-
|
|
12364
|
+
const kinds = [
|
|
12365
|
+
...new Set(
|
|
12366
|
+
generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
|
|
12367
|
+
)
|
|
12368
|
+
];
|
|
11976
12369
|
const firstKind = kinds[0];
|
|
11977
12370
|
if (!firstKind) {
|
|
11978
|
-
throw new Error(
|
|
12371
|
+
throw new Error(
|
|
12372
|
+
"Expected generated design option catalog to expose at least one content frame kind."
|
|
12373
|
+
);
|
|
11979
12374
|
}
|
|
11980
12375
|
return [firstKind, ...kinds.slice(1)];
|
|
11981
12376
|
}
|
|
11982
12377
|
var generatedContentFrameKinds = uniqueContentFrameKinds();
|
|
11983
12378
|
function defineCuratedSiteStyle(input) {
|
|
11984
12379
|
const legacyHeaderLookIds = input.recommendedHeaderLookIds ?? ["clean-base"];
|
|
11985
|
-
const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(
|
|
12380
|
+
const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(
|
|
12381
|
+
legacyHeaderLookIds,
|
|
12382
|
+
input.tokenRecipes
|
|
12383
|
+
);
|
|
11986
12384
|
const typographyPresetChoices = input.typographyPresetChoices ?? defaultTypographyPresetChoicesForRecipe(input.tokenRecipes.typography);
|
|
11987
12385
|
const defaultTypographyPresetId = input.defaultTypographyPresetId ? asTypographyPresetId(input.defaultTypographyPresetId) : typographyPresetChoices[0].id;
|
|
11988
|
-
if (!typographyPresetChoices.some(
|
|
12386
|
+
if (!typographyPresetChoices.some(
|
|
12387
|
+
(choice) => choice.id === defaultTypographyPresetId
|
|
12388
|
+
)) {
|
|
11989
12389
|
throw new Error(
|
|
11990
12390
|
`Default typography preset ${defaultTypographyPresetId} is not curated for site style ${input.id}.`
|
|
11991
12391
|
);
|
|
@@ -11996,9 +12396,13 @@ function defineCuratedSiteStyle(input) {
|
|
|
11996
12396
|
description: input.description,
|
|
11997
12397
|
generationBrief: input.generationBrief,
|
|
11998
12398
|
selectionKeywordRules: input.selectionKeywordRules ?? [],
|
|
11999
|
-
siteCreatorSelection: input.siteCreatorSelection ?? {
|
|
12399
|
+
siteCreatorSelection: input.siteCreatorSelection ?? {
|
|
12400
|
+
kind: "explicit_only"
|
|
12401
|
+
},
|
|
12000
12402
|
template: {
|
|
12001
|
-
id: asDesignSystemTemplateId(
|
|
12403
|
+
id: asDesignSystemTemplateId(
|
|
12404
|
+
`template:${input.id.replace("site-style:", "")}`
|
|
12405
|
+
),
|
|
12002
12406
|
name: input.name,
|
|
12003
12407
|
version: 1,
|
|
12004
12408
|
tokenRecipes: input.tokenRecipes,
|
|
@@ -12009,6 +12413,7 @@ function defineCuratedSiteStyle(input) {
|
|
|
12009
12413
|
supportedTransitions: generatedDesignOptionCatalog.transitions
|
|
12010
12414
|
},
|
|
12011
12415
|
...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
|
|
12416
|
+
...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
|
|
12012
12417
|
recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
|
|
12013
12418
|
defaultHeaderSelection: input.defaultHeaderSelection ? {
|
|
12014
12419
|
layoutId: asHeaderLayoutId(input.defaultHeaderSelection.layoutId),
|
|
@@ -12016,13 +12421,17 @@ function defineCuratedSiteStyle(input) {
|
|
|
12016
12421
|
} : inferredHeaderCuration.defaultHeaderSelection,
|
|
12017
12422
|
recommendedHeaderLayoutChoices: input.recommendedHeaderLayoutChoices ?? inferredHeaderCuration.recommendedHeaderLayoutChoices,
|
|
12018
12423
|
recommendedHeaderStyleChoicesByLayout: input.recommendedHeaderStyleChoicesByLayout ?? inferredHeaderCuration.recommendedHeaderStyleChoicesByLayout,
|
|
12019
|
-
discouragedHeaderSelections: input.discouragedHeaderSelections?.map(
|
|
12020
|
-
|
|
12021
|
-
|
|
12022
|
-
|
|
12424
|
+
discouragedHeaderSelections: input.discouragedHeaderSelections?.map(
|
|
12425
|
+
(selection) => ({
|
|
12426
|
+
layoutId: asHeaderLayoutId(selection.layoutId),
|
|
12427
|
+
styleId: asHeaderStyleId(selection.styleId)
|
|
12428
|
+
})
|
|
12429
|
+
),
|
|
12023
12430
|
recommendedHeaderLookIds: legacyHeaderLookIds.map(asHeaderLookId),
|
|
12024
12431
|
// Empty is intentional: resolveFooterLook always appends its guaranteed fallback.
|
|
12025
|
-
recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(
|
|
12432
|
+
recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(
|
|
12433
|
+
asFooterLookId
|
|
12434
|
+
),
|
|
12026
12435
|
buttonPersonalityChoices: input.buttonPersonalityChoices,
|
|
12027
12436
|
paletteVariantChoices: input.paletteVariantChoices,
|
|
12028
12437
|
typographyPresetChoices,
|
|
@@ -12041,7 +12450,7 @@ function headerLayoutChoice(id, note) {
|
|
|
12041
12450
|
function headerStyleChoice(id, note) {
|
|
12042
12451
|
return note ? { id: asHeaderStyleId(id), note } : { id: asHeaderStyleId(id) };
|
|
12043
12452
|
}
|
|
12044
|
-
function
|
|
12453
|
+
function unbrandHeaderLayoutId(id) {
|
|
12045
12454
|
return id;
|
|
12046
12455
|
}
|
|
12047
12456
|
function uniqueHeaderLayoutChoices(choices) {
|
|
@@ -12063,8 +12472,72 @@ function nonEmptyHeaderStyleChoices(choices, fallbackLayoutId) {
|
|
|
12063
12472
|
};
|
|
12064
12473
|
return [first, ...choices.slice(1)];
|
|
12065
12474
|
}
|
|
12066
|
-
function
|
|
12067
|
-
const
|
|
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) {
|
|
12538
|
+
const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter(
|
|
12539
|
+
(selection) => Boolean(selection)
|
|
12540
|
+
);
|
|
12068
12541
|
const defaultHeaderSelection = selections[0] ?? {
|
|
12069
12542
|
layoutId: asHeaderLayoutId("classic"),
|
|
12070
12543
|
styleId: asHeaderStyleId("minimal")
|
|
@@ -12074,9 +12547,13 @@ function inferHeaderCurationFromLegacyLooks(lookIds) {
|
|
|
12074
12547
|
);
|
|
12075
12548
|
const stylesByLayout = {};
|
|
12076
12549
|
for (const layoutChoice of layoutChoices) {
|
|
12077
|
-
const
|
|
12078
|
-
|
|
12079
|
-
|
|
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],
|
|
12080
12557
|
layoutChoice.id
|
|
12081
12558
|
);
|
|
12082
12559
|
}
|
|
@@ -12133,7 +12610,11 @@ var curatedSiteStyles = [
|
|
|
12133
12610
|
motion: "subtle"
|
|
12134
12611
|
},
|
|
12135
12612
|
compositionBudget: quietBudget,
|
|
12136
|
-
recommendedHeaderLookIds: [
|
|
12613
|
+
recommendedHeaderLookIds: [
|
|
12614
|
+
"centered-calm",
|
|
12615
|
+
"minimal-transparent",
|
|
12616
|
+
"clean-base"
|
|
12617
|
+
],
|
|
12137
12618
|
buttonPersonalityChoices: [
|
|
12138
12619
|
buttonChoice("soft-pill"),
|
|
12139
12620
|
buttonChoice("pebble"),
|
|
@@ -12162,7 +12643,11 @@ var curatedSiteStyles = [
|
|
|
12162
12643
|
motion: "subtle"
|
|
12163
12644
|
},
|
|
12164
12645
|
compositionBudget: balancedBudget,
|
|
12165
|
-
recommendedHeaderLookIds: [
|
|
12646
|
+
recommendedHeaderLookIds: [
|
|
12647
|
+
"practical-utility",
|
|
12648
|
+
"brand-solid",
|
|
12649
|
+
"clean-base"
|
|
12650
|
+
],
|
|
12166
12651
|
buttonPersonalityChoices: [
|
|
12167
12652
|
buttonChoice("confident-chip"),
|
|
12168
12653
|
buttonChoice("soft-pill"),
|
|
@@ -12189,7 +12674,11 @@ var curatedSiteStyles = [
|
|
|
12189
12674
|
motion: "subtle"
|
|
12190
12675
|
},
|
|
12191
12676
|
compositionBudget: balancedBudget,
|
|
12192
|
-
recommendedHeaderLookIds: [
|
|
12677
|
+
recommendedHeaderLookIds: [
|
|
12678
|
+
"serif-line",
|
|
12679
|
+
"minimal-transparent",
|
|
12680
|
+
"centered-calm"
|
|
12681
|
+
],
|
|
12193
12682
|
buttonPersonalityChoices: [
|
|
12194
12683
|
buttonChoice("editorial-link"),
|
|
12195
12684
|
buttonChoice("soft-pill"),
|
|
@@ -12217,7 +12706,11 @@ var curatedSiteStyles = [
|
|
|
12217
12706
|
motion: "expressive"
|
|
12218
12707
|
},
|
|
12219
12708
|
compositionBudget: balancedBudget,
|
|
12220
|
-
recommendedHeaderLookIds: [
|
|
12709
|
+
recommendedHeaderLookIds: [
|
|
12710
|
+
"brand-solid",
|
|
12711
|
+
"practical-utility",
|
|
12712
|
+
"clean-base"
|
|
12713
|
+
],
|
|
12221
12714
|
buttonPersonalityChoices: [
|
|
12222
12715
|
buttonChoice("pebble"),
|
|
12223
12716
|
buttonChoice("brushed-wash"),
|
|
@@ -12234,7 +12727,10 @@ var curatedSiteStyles = [
|
|
|
12234
12727
|
name: "Quiet Luxury",
|
|
12235
12728
|
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
12236
12729
|
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
12237
|
-
siteCreatorSelection: {
|
|
12730
|
+
siteCreatorSelection: {
|
|
12731
|
+
kind: "site_creator_keyword_heuristic",
|
|
12732
|
+
priority: 20
|
|
12733
|
+
},
|
|
12238
12734
|
selectionKeywordRules: [
|
|
12239
12735
|
{ kind: "word", value: "luxury" },
|
|
12240
12736
|
{ kind: "word", value: "premium" },
|
|
@@ -12252,7 +12748,11 @@ var curatedSiteStyles = [
|
|
|
12252
12748
|
motion: "none"
|
|
12253
12749
|
},
|
|
12254
12750
|
compositionBudget: quietBudget,
|
|
12255
|
-
recommendedHeaderLookIds: [
|
|
12751
|
+
recommendedHeaderLookIds: [
|
|
12752
|
+
"minimal-transparent",
|
|
12753
|
+
"serif-line",
|
|
12754
|
+
"clean-base"
|
|
12755
|
+
],
|
|
12256
12756
|
buttonPersonalityChoices: [
|
|
12257
12757
|
buttonChoice("editorial-link"),
|
|
12258
12758
|
buttonChoice("confident-chip"),
|
|
@@ -12288,7 +12788,11 @@ var curatedSiteStyles = [
|
|
|
12288
12788
|
motion: "none"
|
|
12289
12789
|
},
|
|
12290
12790
|
compositionBudget: quietBudget,
|
|
12291
|
-
recommendedHeaderLookIds: [
|
|
12791
|
+
recommendedHeaderLookIds: [
|
|
12792
|
+
"practical-utility",
|
|
12793
|
+
"brand-solid",
|
|
12794
|
+
"clean-base"
|
|
12795
|
+
],
|
|
12292
12796
|
buttonPersonalityChoices: [
|
|
12293
12797
|
buttonChoice("confident-chip"),
|
|
12294
12798
|
buttonChoice("pebble"),
|
|
@@ -12315,7 +12819,11 @@ var curatedSiteStyles = [
|
|
|
12315
12819
|
motion: "subtle"
|
|
12316
12820
|
},
|
|
12317
12821
|
compositionBudget: balancedBudget,
|
|
12318
|
-
recommendedHeaderLookIds: [
|
|
12822
|
+
recommendedHeaderLookIds: [
|
|
12823
|
+
"centered-calm",
|
|
12824
|
+
"minimal-transparent",
|
|
12825
|
+
"clean-base"
|
|
12826
|
+
],
|
|
12319
12827
|
buttonPersonalityChoices: [
|
|
12320
12828
|
buttonChoice("soft-pill"),
|
|
12321
12829
|
buttonChoice("pebble"),
|
|
@@ -12332,7 +12840,10 @@ var curatedSiteStyles = [
|
|
|
12332
12840
|
name: "Quiet Practice",
|
|
12333
12841
|
description: "Grounded, calm, and practical for small appointment-first practices.",
|
|
12334
12842
|
generationBrief: "Make services, practitioner trust, preparation notes, and booking routes easy to scan. Keep the tone warm and specific, with quiet confidence rather than spa cliches or medical claims.",
|
|
12335
|
-
siteCreatorSelection: {
|
|
12843
|
+
siteCreatorSelection: {
|
|
12844
|
+
kind: "site_creator_keyword_heuristic",
|
|
12845
|
+
priority: 30
|
|
12846
|
+
},
|
|
12336
12847
|
selectionKeywordRules: [
|
|
12337
12848
|
{ kind: "substring", value: "massage" },
|
|
12338
12849
|
{ kind: "word", value: "bodywork" },
|
|
@@ -12353,7 +12864,11 @@ var curatedSiteStyles = [
|
|
|
12353
12864
|
motion: "subtle"
|
|
12354
12865
|
},
|
|
12355
12866
|
compositionBudget: quietBudget,
|
|
12356
|
-
recommendedHeaderLookIds: [
|
|
12867
|
+
recommendedHeaderLookIds: [
|
|
12868
|
+
"practical-utility",
|
|
12869
|
+
"clean-base",
|
|
12870
|
+
"centered-calm"
|
|
12871
|
+
],
|
|
12357
12872
|
buttonPersonalityChoices: [
|
|
12358
12873
|
buttonChoice("pebble"),
|
|
12359
12874
|
buttonChoice("soft-pill"),
|
|
@@ -12370,7 +12885,10 @@ var curatedSiteStyles = [
|
|
|
12370
12885
|
name: "Personal Retreat Journal",
|
|
12371
12886
|
description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
|
|
12372
12887
|
generationBrief: "Center the practitioner as the guide, then make private sessions, classes, retreats, and resources feel like clear pathways. Keep retreat copy grounded and practical, with enough editorial warmth for longer reading.",
|
|
12373
|
-
siteCreatorSelection: {
|
|
12888
|
+
siteCreatorSelection: {
|
|
12889
|
+
kind: "site_creator_keyword_heuristic",
|
|
12890
|
+
priority: 40
|
|
12891
|
+
},
|
|
12374
12892
|
selectionKeywordRules: [
|
|
12375
12893
|
{ kind: "substring", value: "retreat" },
|
|
12376
12894
|
{ kind: "phrase", value: "solo practitioner" },
|
|
@@ -12390,7 +12908,11 @@ var curatedSiteStyles = [
|
|
|
12390
12908
|
motion: "subtle"
|
|
12391
12909
|
},
|
|
12392
12910
|
compositionBudget: balancedBudget,
|
|
12393
|
-
recommendedHeaderLookIds: [
|
|
12911
|
+
recommendedHeaderLookIds: [
|
|
12912
|
+
"serif-line",
|
|
12913
|
+
"centered-calm",
|
|
12914
|
+
"minimal-transparent"
|
|
12915
|
+
],
|
|
12394
12916
|
buttonPersonalityChoices: [
|
|
12395
12917
|
buttonChoice("editorial-link"),
|
|
12396
12918
|
buttonChoice("soft-pill"),
|
|
@@ -12407,7 +12929,10 @@ var curatedSiteStyles = [
|
|
|
12407
12929
|
name: "Tactile Workshop",
|
|
12408
12930
|
description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
|
|
12409
12931
|
generationBrief: "Lead with objects, materials, studio process, and practical booking detail. Keep the tone warm and direct, with useful mess, clear dates, and enough gallery rhythm to feel like a real creative studio.",
|
|
12410
|
-
siteCreatorSelection: {
|
|
12932
|
+
siteCreatorSelection: {
|
|
12933
|
+
kind: "site_creator_keyword_heuristic",
|
|
12934
|
+
priority: 50
|
|
12935
|
+
},
|
|
12411
12936
|
selectionKeywordRules: [
|
|
12412
12937
|
{ kind: "substring", value: "ceramic" },
|
|
12413
12938
|
{ kind: "word", value: "pottery" },
|
|
@@ -12427,8 +12952,15 @@ var curatedSiteStyles = [
|
|
|
12427
12952
|
motion: "subtle"
|
|
12428
12953
|
},
|
|
12429
12954
|
compositionBudget: balancedBudget,
|
|
12430
|
-
recommendedHeaderLookIds: [
|
|
12431
|
-
|
|
12955
|
+
recommendedHeaderLookIds: [
|
|
12956
|
+
"brand-solid",
|
|
12957
|
+
"practical-utility",
|
|
12958
|
+
"clean-base"
|
|
12959
|
+
],
|
|
12960
|
+
recommendedFooterLookIds: [
|
|
12961
|
+
"site-footer-brand-two-band",
|
|
12962
|
+
"footer-muted-grounding"
|
|
12963
|
+
],
|
|
12432
12964
|
buttonPersonalityChoices: [
|
|
12433
12965
|
buttonChoice("pebble"),
|
|
12434
12966
|
buttonChoice("confident-chip"),
|
|
@@ -12443,11 +12975,14 @@ var curatedSiteStyles = [
|
|
|
12443
12975
|
]
|
|
12444
12976
|
}),
|
|
12445
12977
|
defineCuratedSiteStyle({
|
|
12446
|
-
id:
|
|
12978
|
+
id: SOFT_EARTH_SITE_STYLE_ID,
|
|
12447
12979
|
name: "Soft Earth",
|
|
12448
12980
|
description: "Warm, grounded, and editorial for yoga studios, retreats, and wellbeing communities.",
|
|
12449
|
-
generationBrief: "Use cream space, terracotta CTAs, olive
|
|
12450
|
-
siteCreatorSelection: {
|
|
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.",
|
|
12982
|
+
siteCreatorSelection: {
|
|
12983
|
+
kind: "site_creator_keyword_heuristic",
|
|
12984
|
+
priority: 45
|
|
12985
|
+
},
|
|
12451
12986
|
selectionKeywordRules: [
|
|
12452
12987
|
{ kind: "word", value: "meditation" },
|
|
12453
12988
|
{ kind: "word", value: "wellbeing" },
|
|
@@ -12513,18 +13048,29 @@ var curatedSiteStyles = [
|
|
|
12513
13048
|
paragraphSize: "default",
|
|
12514
13049
|
headingSize: "editorial"
|
|
12515
13050
|
}
|
|
12516
|
-
}
|
|
13051
|
+
},
|
|
13052
|
+
accordions: softEarthAccordionSystem
|
|
13053
|
+
},
|
|
13054
|
+
defaultBlockVariants: {
|
|
13055
|
+
"block.faq": "question-columns"
|
|
12517
13056
|
},
|
|
12518
13057
|
recommendedAppearancePresetIds: [
|
|
12519
13058
|
"hero-brand-scrim",
|
|
12520
|
-
"intro-
|
|
12521
|
-
"feature-cards-
|
|
12522
|
-
"
|
|
12523
|
-
"
|
|
13059
|
+
"intro-organic-statement",
|
|
13060
|
+
"feature-cards-raised-rule",
|
|
13061
|
+
"events-lined-panel",
|
|
13062
|
+
"testimonials-brand-background-quotes",
|
|
12524
13063
|
"contact-form-panel"
|
|
12525
13064
|
],
|
|
12526
|
-
recommendedHeaderLookIds: [
|
|
12527
|
-
|
|
13065
|
+
recommendedHeaderLookIds: [
|
|
13066
|
+
"centered-calm",
|
|
13067
|
+
"minimal-transparent",
|
|
13068
|
+
"serif-line"
|
|
13069
|
+
],
|
|
13070
|
+
recommendedFooterLookIds: [
|
|
13071
|
+
"footer-muted-grounding",
|
|
13072
|
+
"site-footer-brand-two-band"
|
|
13073
|
+
],
|
|
12528
13074
|
buttonPersonalityChoices: [
|
|
12529
13075
|
buttonChoice("earth-pill"),
|
|
12530
13076
|
buttonChoice("soft-pill"),
|
|
@@ -12543,7 +13089,10 @@ var curatedSiteStyles = [
|
|
|
12543
13089
|
name: "Bold Launch",
|
|
12544
13090
|
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
12545
13091
|
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
12546
|
-
siteCreatorSelection: {
|
|
13092
|
+
siteCreatorSelection: {
|
|
13093
|
+
kind: "site_creator_keyword_heuristic",
|
|
13094
|
+
priority: 10
|
|
13095
|
+
},
|
|
12547
13096
|
selectionKeywordRules: [
|
|
12548
13097
|
{ kind: "substring", value: "launch" },
|
|
12549
13098
|
{ kind: "substring", value: "campaign" },
|
|
@@ -12562,7 +13111,11 @@ var curatedSiteStyles = [
|
|
|
12562
13111
|
motion: "expressive"
|
|
12563
13112
|
},
|
|
12564
13113
|
compositionBudget: expressiveBudget,
|
|
12565
|
-
recommendedHeaderLookIds: [
|
|
13114
|
+
recommendedHeaderLookIds: [
|
|
13115
|
+
"transparent-overlay",
|
|
13116
|
+
"floating-glass",
|
|
13117
|
+
"brand-solid"
|
|
13118
|
+
],
|
|
12566
13119
|
buttonPersonalityChoices: [
|
|
12567
13120
|
buttonChoice("ink-stamp"),
|
|
12568
13121
|
buttonChoice("confident-chip"),
|
|
@@ -12610,11 +13163,18 @@ var curatedSiteStyles = [
|
|
|
12610
13163
|
"hero-brand-scrim-fixed-frame",
|
|
12611
13164
|
"body-text-editorial-intro",
|
|
12612
13165
|
"schedule-details-brand-depth",
|
|
12613
|
-
"testimonials-accent-quote-
|
|
13166
|
+
"testimonials-accent-quote-cards",
|
|
12614
13167
|
"contact-form-brand-depth-card"
|
|
12615
13168
|
],
|
|
12616
|
-
recommendedHeaderLookIds: [
|
|
12617
|
-
|
|
13169
|
+
recommendedHeaderLookIds: [
|
|
13170
|
+
"brand-solid",
|
|
13171
|
+
"transparent-overlay",
|
|
13172
|
+
"practical-utility"
|
|
13173
|
+
],
|
|
13174
|
+
recommendedFooterLookIds: [
|
|
13175
|
+
"site-footer-brand-two-band",
|
|
13176
|
+
"footer-muted-grounding"
|
|
13177
|
+
],
|
|
12618
13178
|
buttonPersonalityChoices: [
|
|
12619
13179
|
buttonChoice("showtime-pill"),
|
|
12620
13180
|
buttonChoice("confident-chip"),
|
|
@@ -12698,6 +13258,7 @@ var themeV2RuntimeStyleFieldNames = [
|
|
|
12698
13258
|
];
|
|
12699
13259
|
var themeV2BlockSpecificRawStyleFieldNames = [
|
|
12700
13260
|
"_contentCardStyles",
|
|
13261
|
+
"_heroLayoutStyles",
|
|
12701
13262
|
"_textCardStyles"
|
|
12702
13263
|
];
|
|
12703
13264
|
var themeV2NormalEditorRawStyleFieldNames = [
|
|
@@ -12707,6 +13268,10 @@ var themeV2NormalEditorRawStyleFieldNames = [
|
|
|
12707
13268
|
var themeV2NormalEditorRawStyleFieldNameSet = new Set(
|
|
12708
13269
|
themeV2NormalEditorRawStyleFieldNames
|
|
12709
13270
|
);
|
|
13271
|
+
var themeV2CompilerOwnedFieldNames = [
|
|
13272
|
+
...themeV2RuntimeStyleFieldNames,
|
|
13273
|
+
...themeV2BlockSpecificRawStyleFieldNames
|
|
13274
|
+
];
|
|
12710
13275
|
|
|
12711
13276
|
// ../theme-core/src/site-styles/designState.ts
|
|
12712
13277
|
var themeV2DesignStateSchemaVersion = 1;
|
|
@@ -12721,6 +13286,16 @@ var heroLegibilityStrategySchema = z23.enum([
|
|
|
12721
13286
|
"scrim-gradient",
|
|
12722
13287
|
"solid-panel"
|
|
12723
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
|
+
]);
|
|
12724
13299
|
var sectionHeightIntentSchema = z23.enum([
|
|
12725
13300
|
"default",
|
|
12726
13301
|
"banner",
|
|
@@ -12756,6 +13331,7 @@ var imageSurfaceTreatmentSchema = z23.discriminatedUnion("kind", [
|
|
|
12756
13331
|
]);
|
|
12757
13332
|
var testimonialCardTreatmentSchema = z23.enum(["default", "accent-quote"]);
|
|
12758
13333
|
var tileTreatmentSchema = z23.enum(tileTreatmentValues);
|
|
13334
|
+
var eventListTreatmentSchema = z23.enum(eventListTreatmentValues);
|
|
12759
13335
|
var eyebrowTreatmentSchema = z23.enum(eyebrowTreatmentValues);
|
|
12760
13336
|
function uniqueNonEmpty(values) {
|
|
12761
13337
|
const uniqueValues = [...new Set(values)];
|
|
@@ -12797,10 +13373,13 @@ var blockDesignPlanSchema = z23.object({
|
|
|
12797
13373
|
emphasis: z23.enum(userDesignOptionCatalog.emphases),
|
|
12798
13374
|
sectionHeight: sectionHeightIntentSchema.optional(),
|
|
12799
13375
|
heroLegibility: heroLegibilityStrategySchema.optional(),
|
|
13376
|
+
heroComposition: heroCompositionIntentSchema.optional(),
|
|
13377
|
+
heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
|
|
12800
13378
|
imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
|
|
12801
13379
|
imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
|
|
12802
13380
|
testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
|
|
12803
13381
|
tileTreatment: tileTreatmentSchema.optional(),
|
|
13382
|
+
eventListTreatment: eventListTreatmentSchema.optional(),
|
|
12804
13383
|
eyebrowTreatment: eyebrowTreatmentSchema.optional()
|
|
12805
13384
|
}).strict();
|
|
12806
13385
|
var styleAuthoritySchema = z23.discriminatedUnion("kind", [
|
|
@@ -14200,6 +14779,7 @@ function styledSection(config) {
|
|
|
14200
14779
|
renderBackgroundImage = true,
|
|
14201
14780
|
backgroundImageLoading,
|
|
14202
14781
|
backgroundImageFetchPriority,
|
|
14782
|
+
allowOverflow = false,
|
|
14203
14783
|
fullWidthPath
|
|
14204
14784
|
} = config;
|
|
14205
14785
|
const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
|
|
@@ -14234,7 +14814,7 @@ function styledSection(config) {
|
|
|
14234
14814
|
// No fallback needed - transform handles all cases via defaultSpacing
|
|
14235
14815
|
}
|
|
14236
14816
|
},
|
|
14237
|
-
allowOverflow: {
|
|
14817
|
+
allowOverflow: allowOverflow ? true : {
|
|
14238
14818
|
$bind: {
|
|
14239
14819
|
from: `${bindFrom}.background`,
|
|
14240
14820
|
transforms: [{ id: "background.resolveAllowOverflow" }],
|
|
@@ -14918,6 +15498,14 @@ var tileTreatmentSet = new Set(tileTreatmentValues);
|
|
|
14918
15498
|
function isTileTreatment(value) {
|
|
14919
15499
|
return typeof value === "string" && tileTreatmentSet.has(value);
|
|
14920
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
|
+
}
|
|
14921
15509
|
var sectionClassNameTransform = {
|
|
14922
15510
|
id: "sectionStyles.resolveClassName",
|
|
14923
15511
|
kind: "string",
|
|
@@ -14985,6 +15573,17 @@ var sectionClassNameTransform = {
|
|
|
14985
15573
|
`[sectionStyles] Invalid tileTreatment value in _sectionStyles: "${tileTreatment}". Expected one of: ${tileTreatmentValues.join(", ")}.`
|
|
14986
15574
|
);
|
|
14987
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
|
+
}
|
|
14988
15587
|
if (hasFixedFrameBackgroundMotion(input)) {
|
|
14989
15588
|
classes.push(fixedFrameScopeClass);
|
|
14990
15589
|
}
|
|
@@ -15420,6 +16019,35 @@ function sectionState(opts) {
|
|
|
15420
16019
|
);
|
|
15421
16020
|
}
|
|
15422
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
|
+
|
|
15423
16051
|
// ../blocks/src/system/fragments/types.ts
|
|
15424
16052
|
import { z as z27 } from "zod";
|
|
15425
16053
|
var FRAGMENT_ID_PATTERN = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/i;
|
|
@@ -16198,6 +16826,10 @@ var testimonialsHeadingFragment = defineFragment({
|
|
|
16198
16826
|
when("content.heading"),
|
|
16199
16827
|
bind("content.heading")
|
|
16200
16828
|
),
|
|
16829
|
+
headingDecoration({
|
|
16830
|
+
family: "short-center-rule",
|
|
16831
|
+
placement: "under-centered-heading"
|
|
16832
|
+
}),
|
|
16201
16833
|
text(
|
|
16202
16834
|
{
|
|
16203
16835
|
as: "p",
|
|
@@ -16869,6 +17501,41 @@ var faqHeadingFragment = defineFragment({
|
|
|
16869
17501
|
});
|
|
16870
17502
|
|
|
16871
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
|
+
}
|
|
16872
17539
|
var faqAccordionFragment = defineFragment({
|
|
16873
17540
|
id: "faqAccordion",
|
|
16874
17541
|
title: "FAQ Accordion",
|
|
@@ -16902,40 +17569,7 @@ var faqAccordionFragment = defineFragment({
|
|
|
16902
17569
|
}
|
|
16903
17570
|
}
|
|
16904
17571
|
],
|
|
16905
|
-
layout:
|
|
16906
|
-
collection: "content.items",
|
|
16907
|
-
itemName: "faqItem",
|
|
16908
|
-
indexName: "faqIndex",
|
|
16909
|
-
accordionProps: {
|
|
16910
|
-
className: "accordion-root",
|
|
16911
|
-
// CSS-first: all styling handled by theme CSS
|
|
16912
|
-
type: "single",
|
|
16913
|
-
collapsible: true
|
|
16914
|
-
},
|
|
16915
|
-
itemProps: {
|
|
16916
|
-
className: {
|
|
16917
|
-
$bind: {
|
|
16918
|
-
from: "content._cardStyles",
|
|
16919
|
-
transforms: [
|
|
16920
|
-
{
|
|
16921
|
-
id: "boxStyles.all",
|
|
16922
|
-
options: {
|
|
16923
|
-
axis: "all",
|
|
16924
|
-
includeSpacing: false,
|
|
16925
|
-
baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden rb-border"
|
|
16926
|
-
}
|
|
16927
|
-
}
|
|
16928
|
-
]
|
|
16929
|
-
},
|
|
16930
|
-
fallback: "rb-faq-item"
|
|
16931
|
-
},
|
|
16932
|
-
iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
|
|
16933
|
-
// Legacy theme accordion style
|
|
16934
|
-
iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
|
|
16935
|
-
},
|
|
16936
|
-
triggerFrom: "faqItem.question",
|
|
16937
|
-
contentFrom: "faqItem.answer"
|
|
16938
|
-
})
|
|
17572
|
+
layout: createFaqAccordionLayout()
|
|
16939
17573
|
});
|
|
16940
17574
|
|
|
16941
17575
|
// ../blocks/src/system/fragments/library/card.ts
|
|
@@ -17988,6 +18622,7 @@ var microLayout = styledSection({
|
|
|
17988
18622
|
function splitLayoutWith(children) {
|
|
17989
18623
|
return styledSection({
|
|
17990
18624
|
children: styledContainer({
|
|
18625
|
+
baseClassName: "rb-relative rb-isolate rb-overflow-visible",
|
|
17991
18626
|
children: {
|
|
17992
18627
|
type: "grid",
|
|
17993
18628
|
props: {
|
|
@@ -18012,6 +18647,7 @@ function splitLayoutWith(children) {
|
|
|
18012
18647
|
// The split variants render the image as a real grid column, so suppress
|
|
18013
18648
|
// the default absolute background image layer while keeping color/overlay.
|
|
18014
18649
|
renderBackgroundImage: false,
|
|
18650
|
+
allowOverflow: true,
|
|
18015
18651
|
baseClass: ""
|
|
18016
18652
|
});
|
|
18017
18653
|
}
|
|
@@ -18165,6 +18801,21 @@ function introHeading(className) {
|
|
|
18165
18801
|
bind("content.title")
|
|
18166
18802
|
);
|
|
18167
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
|
+
}
|
|
18168
18819
|
function introBody(className = "rb-prose rb-max-w-none") {
|
|
18169
18820
|
return richText({ className }, bind("content.body"));
|
|
18170
18821
|
}
|
|
@@ -18183,6 +18834,10 @@ function introCopyStack(options = {}) {
|
|
|
18183
18834
|
},
|
|
18184
18835
|
[
|
|
18185
18836
|
introHeading(options.headingClassName ?? "rb-intro-title"),
|
|
18837
|
+
headingDecoration({
|
|
18838
|
+
family: "organic-squiggle",
|
|
18839
|
+
placement: "after-heading"
|
|
18840
|
+
}),
|
|
18186
18841
|
introBody(options.bodyClassName),
|
|
18187
18842
|
introCtas(options.ctaJustify)
|
|
18188
18843
|
]
|
|
@@ -18222,7 +18877,7 @@ var statementCopyLayout = styledSection({
|
|
|
18222
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"
|
|
18223
18878
|
},
|
|
18224
18879
|
[
|
|
18225
|
-
|
|
18880
|
+
introHeadingGroup("rb-intro-title rb-max-w-xl"),
|
|
18226
18881
|
stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
|
|
18227
18882
|
introBody(),
|
|
18228
18883
|
introCtas("start")
|
|
@@ -18243,7 +18898,7 @@ var statementMediaLayout = styledSection({
|
|
|
18243
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"
|
|
18244
18899
|
},
|
|
18245
18900
|
[
|
|
18246
|
-
|
|
18901
|
+
introHeadingGroup("rb-intro-title rb-max-w-xl"),
|
|
18247
18902
|
stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
|
|
18248
18903
|
introBody(),
|
|
18249
18904
|
introCtas("start")
|
|
@@ -19245,6 +19900,9 @@ function isNodeDefinitionArray(layout) {
|
|
|
19245
19900
|
}
|
|
19246
19901
|
var headingLayout = fragmentLayoutNode(faqHeadingFragment.layout);
|
|
19247
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
|
+
});
|
|
19248
19906
|
var defaultLayout = styledSection({
|
|
19249
19907
|
children: styledContainer({
|
|
19250
19908
|
baseClassName: "rb-relative rb-isolate",
|
|
@@ -19258,11 +19916,24 @@ var twoColumnLayout = styledSection({
|
|
|
19258
19916
|
children: el(
|
|
19259
19917
|
"div",
|
|
19260
19918
|
{
|
|
19261
|
-
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"
|
|
19262
19920
|
},
|
|
19263
19921
|
[
|
|
19264
|
-
el("div", { className: "rb-faq-
|
|
19265
|
-
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
|
|
19266
19937
|
]
|
|
19267
19938
|
)
|
|
19268
19939
|
}),
|
|
@@ -19287,7 +19958,8 @@ var faqManifest = createBlockManifest({
|
|
|
19287
19958
|
layout: defaultLayout,
|
|
19288
19959
|
variants: {
|
|
19289
19960
|
default: defaultLayout,
|
|
19290
|
-
"two-column": twoColumnLayout
|
|
19961
|
+
"two-column": twoColumnLayout,
|
|
19962
|
+
"question-columns": questionColumnsLayout
|
|
19291
19963
|
},
|
|
19292
19964
|
defaultVariant: "default",
|
|
19293
19965
|
variantOptions: {
|
|
@@ -19298,6 +19970,10 @@ var faqManifest = createBlockManifest({
|
|
|
19298
19970
|
"two-column": {
|
|
19299
19971
|
label: "Two column",
|
|
19300
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."
|
|
19301
19977
|
}
|
|
19302
19978
|
},
|
|
19303
19979
|
description: "Accordion of frequently asked questions and answers.",
|
|
@@ -19419,9 +20095,21 @@ var eyebrowTreatmentClassMap = {
|
|
|
19419
20095
|
"accent-pill-bounce": "rb-eyebrow-treatment-pill rb-eyebrow-treatment-accent rb-eyebrow-treatment-pill-bounce"
|
|
19420
20096
|
};
|
|
19421
20097
|
var eyebrowTreatmentSet = new Set(eyebrowTreatmentValues);
|
|
20098
|
+
var headingDecorationFamilySet = new Set(visibleHeadingDecorationFamilyValues);
|
|
20099
|
+
var headingDecorationPlacementSet = new Set(visibleHeadingDecorationPlacementValues);
|
|
20100
|
+
var headingDecorationColorTokenSet = new Set(headingDecorationColorTokenValues);
|
|
19422
20101
|
function isEyebrowTreatment(value) {
|
|
19423
20102
|
return typeof value === "string" && eyebrowTreatmentSet.has(value);
|
|
19424
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
|
+
}
|
|
19425
20113
|
var imageGalleryCornerClassMap = {
|
|
19426
20114
|
none: "",
|
|
19427
20115
|
sm: "rb-rounded-sm",
|
|
@@ -19525,6 +20213,10 @@ var sectionStateToneTransform = {
|
|
|
19525
20213
|
summary: "Map semantic section-state kind to feedback tone",
|
|
19526
20214
|
run: (value) => sectionStateToneFromUnknown(value)
|
|
19527
20215
|
};
|
|
20216
|
+
var heroTitleLengthThresholds = {
|
|
20217
|
+
medium: { maxCharacters: 42, maxWords: 6 },
|
|
20218
|
+
long: { maxCharacters: 78, maxWords: 11 }
|
|
20219
|
+
};
|
|
19528
20220
|
function isPlainObject(value) {
|
|
19529
20221
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
19530
20222
|
}
|
|
@@ -19532,6 +20224,14 @@ function readString(obj, key) {
|
|
|
19532
20224
|
const v = obj[key];
|
|
19533
20225
|
return typeof v === "string" ? v : void 0;
|
|
19534
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
|
+
}
|
|
19535
20235
|
function resolveHeroVariant(content) {
|
|
19536
20236
|
const variant = readString(content, "variant");
|
|
19537
20237
|
if (variant && variant.trim()) return variant.trim();
|
|
@@ -19540,14 +20240,14 @@ function resolveHeroVariant(content) {
|
|
|
19540
20240
|
return null;
|
|
19541
20241
|
}
|
|
19542
20242
|
function resolveHeroContentAlignment(content) {
|
|
19543
|
-
const raw =
|
|
20243
|
+
const raw = readHeroLayoutString(content, "contentAlignment");
|
|
19544
20244
|
if (raw === "left" || raw === "center" || raw === "right") return raw;
|
|
19545
20245
|
const variant = resolveHeroVariant(content);
|
|
19546
20246
|
if (variant === "split" || variant === "splitReverse") return "left";
|
|
19547
20247
|
return "center";
|
|
19548
20248
|
}
|
|
19549
20249
|
function resolveHeroVerticalAlignment(content) {
|
|
19550
|
-
const raw =
|
|
20250
|
+
const raw = readHeroLayoutString(content, "verticalAlignment");
|
|
19551
20251
|
if (raw === "top" || raw === "center" || raw === "bottom") return raw;
|
|
19552
20252
|
const sectionStyles = asPartialObject(content._sectionStyles);
|
|
19553
20253
|
const minHeight = sectionStyles?.minHeight;
|
|
@@ -19557,11 +20257,29 @@ function resolveHeroVerticalAlignment(content) {
|
|
|
19557
20257
|
return "top";
|
|
19558
20258
|
}
|
|
19559
20259
|
function resolveHeroContentMaxWidth(content) {
|
|
19560
|
-
const raw =
|
|
20260
|
+
const raw = readHeroLayoutString(content, "contentMaxWidth");
|
|
19561
20261
|
if (raw === "default" || raw === "narrow" || raw === "medium" || raw === "wide")
|
|
19562
20262
|
return raw;
|
|
19563
20263
|
return "default";
|
|
19564
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
|
+
}
|
|
19565
20283
|
var heroContentWrapperClassSchema = z33.object({
|
|
19566
20284
|
base: z33.string().optional()
|
|
19567
20285
|
});
|
|
@@ -19574,6 +20292,8 @@ var heroContentWrapperClassTransform = {
|
|
|
19574
20292
|
const content = isPlainObject(value) ? value : isPlainObject(context.data) ? context.data : {};
|
|
19575
20293
|
const alignment = resolveHeroContentAlignment(content);
|
|
19576
20294
|
const maxWidth = resolveHeroContentMaxWidth(content);
|
|
20295
|
+
const typographyScale = resolveHeroTypographyScale(content);
|
|
20296
|
+
const titleLength = resolveHeroTitleLength(content);
|
|
19577
20297
|
const textAlignClass = alignment === "center" ? "rb-text-center" : alignment === "right" ? "rb-text-right" : "rb-text-left";
|
|
19578
20298
|
const maxWidthClass = maxWidth === "narrow" ? "rb-max-w-2xl" : maxWidth === "medium" ? "rb-max-w-3xl" : maxWidth === "wide" ? "rb-max-w-5xl" : "";
|
|
19579
20299
|
const positionClass = alignment === "center" ? "rb-mx-auto" : alignment === "right" ? "rb-ml-auto" : "";
|
|
@@ -19581,7 +20301,9 @@ var heroContentWrapperClassTransform = {
|
|
|
19581
20301
|
options?.base,
|
|
19582
20302
|
textAlignClass,
|
|
19583
20303
|
maxWidthClass,
|
|
19584
|
-
positionClass
|
|
20304
|
+
positionClass,
|
|
20305
|
+
typographyScale ? `rb-hero-typography-${typographyScale}` : "",
|
|
20306
|
+
`rb-hero-title-${titleLength}`
|
|
19585
20307
|
]);
|
|
19586
20308
|
}
|
|
19587
20309
|
};
|
|
@@ -19881,11 +20603,67 @@ var uiTransforms = [
|
|
|
19881
20603
|
const treatment = isEyebrowTreatment(value) ? value : "plain";
|
|
19882
20604
|
return joinClasses3([baseClass, eyebrowTreatmentClassMap[treatment]]);
|
|
19883
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
|
+
}
|
|
19884
20627
|
}
|
|
19885
20628
|
];
|
|
19886
20629
|
|
|
19887
20630
|
// ../blocks/src/system/transforms/registry/layout.ts
|
|
19888
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
|
|
19889
20667
|
var joinClasses4 = (parts) => parts.filter(
|
|
19890
20668
|
(part) => typeof part === "string" && part.trim().length > 0
|
|
19891
20669
|
).join(" ").replace(/\s+/g, " ").trim();
|
|
@@ -20001,32 +20779,35 @@ var headerRootClassTransform = {
|
|
|
20001
20779
|
...options
|
|
20002
20780
|
};
|
|
20003
20781
|
const content = asPartialObject(value) ?? {};
|
|
20004
|
-
const positioning =
|
|
20782
|
+
const positioning = parseHeaderPositioning(content.positioning);
|
|
20783
|
+
const placement = planSiteChromePlacement(positioning);
|
|
20005
20784
|
const shrinkOnScroll = Boolean(content.shrinkOnScroll);
|
|
20006
20785
|
const header = asPartialObject(value);
|
|
20007
20786
|
const visuals = resolveHeaderVisualStyles(header, context.theme);
|
|
20008
20787
|
const navContainerType = header?.navContainer?.type ?? "none";
|
|
20009
20788
|
const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
|
|
20010
20789
|
const backgroundClass = visuals.isTransparent || hasContainedNav ? "rb-bg-transparent" : null;
|
|
20011
|
-
const classes = [
|
|
20012
|
-
config.base,
|
|
20013
|
-
backgroundClass
|
|
20014
|
-
];
|
|
20790
|
+
const classes = [config.base, backgroundClass];
|
|
20015
20791
|
if (!hasContainedNav) {
|
|
20016
20792
|
if (config.blur) classes.push(config.blur);
|
|
20017
20793
|
if (config.blurSupport) classes.push(config.blurSupport);
|
|
20018
20794
|
}
|
|
20019
|
-
if (
|
|
20795
|
+
if (placement.kind === "sticky") {
|
|
20020
20796
|
classes.push(
|
|
20021
20797
|
visuals.isTransparent ? config.stickyTransparent : config.sticky
|
|
20022
20798
|
);
|
|
20023
|
-
} else if (
|
|
20799
|
+
} else if (placement.kind === "fixed") {
|
|
20024
20800
|
classes.push(config.fixed);
|
|
20025
20801
|
}
|
|
20026
|
-
if (shrinkOnScroll &&
|
|
20802
|
+
if (shrinkOnScroll && placement.kind !== "static") {
|
|
20027
20803
|
classes.push(config.shrink);
|
|
20028
20804
|
}
|
|
20029
|
-
const VALID_VARIANTS = [
|
|
20805
|
+
const VALID_VARIANTS = [
|
|
20806
|
+
"classic",
|
|
20807
|
+
"centered",
|
|
20808
|
+
"transparent",
|
|
20809
|
+
"floating"
|
|
20810
|
+
];
|
|
20030
20811
|
const variant = header?.variant;
|
|
20031
20812
|
if (variant && VALID_VARIANTS.includes(variant)) {
|
|
20032
20813
|
classes.push(`header-variant-${variant}`);
|
|
@@ -20550,6 +21331,10 @@ function desktopOnlyDisplay(display) {
|
|
|
20550
21331
|
return `rb-hidden ${LARGE_DISPLAY_CLASSES[display]}`;
|
|
20551
21332
|
}
|
|
20552
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
|
+
|
|
20553
21338
|
// ../blocks/src/system/blocks/site-header.ts
|
|
20554
21339
|
var logoRow = link(
|
|
20555
21340
|
{
|
|
@@ -20644,15 +21429,21 @@ var mobileCta = ctaButton({
|
|
|
20644
21429
|
var mobileToggleIcon = stack({ gap: "xs", className: "nav-mobile-icon" }, [
|
|
20645
21430
|
{
|
|
20646
21431
|
type: "div",
|
|
20647
|
-
props: {
|
|
21432
|
+
props: {
|
|
21433
|
+
className: "nav-mobile-bar nav-mobile-bar-top rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current"
|
|
21434
|
+
}
|
|
20648
21435
|
},
|
|
20649
21436
|
{
|
|
20650
21437
|
type: "div",
|
|
20651
|
-
props: {
|
|
21438
|
+
props: {
|
|
21439
|
+
className: "nav-mobile-bar nav-mobile-bar-middle rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current"
|
|
21440
|
+
}
|
|
20652
21441
|
},
|
|
20653
21442
|
{
|
|
20654
21443
|
type: "div",
|
|
20655
|
-
props: {
|
|
21444
|
+
props: {
|
|
21445
|
+
className: "nav-mobile-bar nav-mobile-bar-bottom rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current"
|
|
21446
|
+
}
|
|
20656
21447
|
}
|
|
20657
21448
|
]);
|
|
20658
21449
|
var mobileToggleButton = {
|
|
@@ -20816,6 +21607,7 @@ var transparentLayout = inline(
|
|
|
20816
21607
|
);
|
|
20817
21608
|
var floatingLayout = inline(
|
|
20818
21609
|
{
|
|
21610
|
+
[SITE_CHROME_VISIBLE_HEADER_ATTR]: "true",
|
|
20819
21611
|
className: bindProp("$root.theme.header.maxWidth", {
|
|
20820
21612
|
transforms: pipe(
|
|
20821
21613
|
tx("layout.maxWidthClass", {
|
|
@@ -20835,28 +21627,6 @@ var floatingLayout = inline(
|
|
|
20835
21627
|
],
|
|
20836
21628
|
when("$root.theme.header.variant", { equals: "floating" })
|
|
20837
21629
|
);
|
|
20838
|
-
var editorialLayout = stack(
|
|
20839
|
-
{
|
|
20840
|
-
gap: "md",
|
|
20841
|
-
align: "center",
|
|
20842
|
-
className: bindProp("$root.theme.header.maxWidth", {
|
|
20843
|
-
transforms: pipe(
|
|
20844
|
-
tx("layout.maxWidthClass", {
|
|
20845
|
-
base: `rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-flex-col rb-items-center rb-gap-6 rb-text-center`
|
|
20846
|
-
})
|
|
20847
|
-
),
|
|
20848
|
-
fallback: `rb-container rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-flex-col rb-items-center rb-gap-6 rb-text-center`
|
|
20849
|
-
})
|
|
20850
|
-
},
|
|
20851
|
-
[
|
|
20852
|
-
centeredLogoRow,
|
|
20853
|
-
createNavRow(
|
|
20854
|
-
`${desktopOnlyDisplay("flex")} rb-flex-wrap rb-justify-center rb-gap-x-8 rb-gap-y-3`,
|
|
20855
|
-
"center"
|
|
20856
|
-
)
|
|
20857
|
-
],
|
|
20858
|
-
when("$root.theme.header.variant", { equals: "editorial" })
|
|
20859
|
-
);
|
|
20860
21630
|
var headerLayout = headerSection(
|
|
20861
21631
|
{
|
|
20862
21632
|
background: bindProp("$root.theme.header", {
|
|
@@ -20870,10 +21640,7 @@ var headerLayout = headerSection(
|
|
|
20870
21640
|
}),
|
|
20871
21641
|
style: bindProp("$root.theme.header", {
|
|
20872
21642
|
transforms: pipe(tx("layout.headerRootStyle")),
|
|
20873
|
-
fallback: mergeStyles(
|
|
20874
|
-
textColorStyle("text"),
|
|
20875
|
-
borderColorStyle("border")
|
|
20876
|
-
)
|
|
21643
|
+
fallback: mergeStyles(textColorStyle("text"), borderColorStyle("border"))
|
|
20877
21644
|
})
|
|
20878
21645
|
},
|
|
20879
21646
|
[
|
|
@@ -20882,7 +21649,6 @@ var headerLayout = headerSection(
|
|
|
20882
21649
|
centeredLayout,
|
|
20883
21650
|
transparentLayout,
|
|
20884
21651
|
floatingLayout,
|
|
20885
|
-
editorialLayout,
|
|
20886
21652
|
mobileOverlay
|
|
20887
21653
|
],
|
|
20888
21654
|
props({
|
|
@@ -21787,6 +22553,10 @@ var sectionHeading = stack(
|
|
|
21787
22553
|
when("content.title"),
|
|
21788
22554
|
bind("content.title")
|
|
21789
22555
|
),
|
|
22556
|
+
headingDecoration({
|
|
22557
|
+
family: "short-center-rule",
|
|
22558
|
+
placement: "under-centered-heading"
|
|
22559
|
+
}),
|
|
21790
22560
|
richText(
|
|
21791
22561
|
{
|
|
21792
22562
|
className: "rb-feature-cards-description rb-prose rb-mx-auto rb-max-w-none",
|
|
@@ -24210,7 +24980,7 @@ var COLUMN_CLASSES = {
|
|
|
24210
24980
|
};
|
|
24211
24981
|
function getContainerClass(layout, columns) {
|
|
24212
24982
|
if (layout === "compact") {
|
|
24213
|
-
return "event-listing-compact-container rb-flex rb-flex-col
|
|
24983
|
+
return "event-listing-compact-container rb-flex rb-flex-col";
|
|
24214
24984
|
}
|
|
24215
24985
|
if (layout === "stack") {
|
|
24216
24986
|
return "rb-flex rb-flex-col rb-gap-6";
|
|
@@ -27038,6 +27808,7 @@ import { z as z53 } from "zod";
|
|
|
27038
27808
|
var storedProductCartItemSchema = z53.object({
|
|
27039
27809
|
kind: z53.literal("product"),
|
|
27040
27810
|
productId: z53.string().min(1),
|
|
27811
|
+
productCategoryId: z53.string().min(1).optional().nullable(),
|
|
27041
27812
|
variantId: z53.string().min(1).optional().nullable(),
|
|
27042
27813
|
title: z53.string().min(1),
|
|
27043
27814
|
variantTitle: z53.string().optional().nullable(),
|
|
@@ -29542,6 +30313,10 @@ var scheduleTileTreatments = [
|
|
|
29542
30313
|
"quiet",
|
|
29543
30314
|
"brand-depth"
|
|
29544
30315
|
];
|
|
30316
|
+
var eventListTreatments = [
|
|
30317
|
+
"plain",
|
|
30318
|
+
"lined-panel"
|
|
30319
|
+
];
|
|
29545
30320
|
function scheduleDetailsCapable() {
|
|
29546
30321
|
return declareBlockDesignCapability({
|
|
29547
30322
|
sectionSurfaces: "supported",
|
|
@@ -29550,6 +30325,14 @@ function scheduleDetailsCapable() {
|
|
|
29550
30325
|
tileTreatments: scheduleTileTreatments
|
|
29551
30326
|
});
|
|
29552
30327
|
}
|
|
30328
|
+
function eventListCapable() {
|
|
30329
|
+
return declareBlockDesignCapability({
|
|
30330
|
+
sectionSurfaces: "supported",
|
|
30331
|
+
contentFrames: ["plain"],
|
|
30332
|
+
itemSurfaces: "unsupported",
|
|
30333
|
+
eventListTreatments
|
|
30334
|
+
});
|
|
30335
|
+
}
|
|
29553
30336
|
function defaultBoundaryBias(visualWeight) {
|
|
29554
30337
|
return visualWeight === "featured" || visualWeight === "immersive" ? "clear" : "soft";
|
|
29555
30338
|
}
|
|
@@ -29769,7 +30552,8 @@ var systemBlockDefinitionsRaw = [
|
|
|
29769
30552
|
flow: bodyFlow,
|
|
29770
30553
|
layoutProfiles: [
|
|
29771
30554
|
layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
|
|
29772
|
-
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" })
|
|
29773
30557
|
]
|
|
29774
30558
|
})),
|
|
29775
30559
|
withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
|
|
@@ -29863,11 +30647,11 @@ var systemBlockDefinitionsRaw = [
|
|
|
29863
30647
|
flow: offeringsFlow,
|
|
29864
30648
|
layoutProfiles: [layoutProfile({ variantKey: "default", family: "centered", weight: "featured" })]
|
|
29865
30649
|
})),
|
|
29866
|
-
withDesignCapability("block.event-listing", eventListingBlockDefinition,
|
|
30650
|
+
withDesignCapability("block.event-listing", eventListingBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
|
|
29867
30651
|
flow: offeringsFlow,
|
|
29868
30652
|
layoutProfiles: [layoutProfile({ variantKey: "default", family: "stack", weight: "standard" })]
|
|
29869
30653
|
})),
|
|
29870
|
-
withDesignCapability("block.event-calendar", eventCalendarBlockDefinition,
|
|
30654
|
+
withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
|
|
29871
30655
|
flow: offeringsFlow,
|
|
29872
30656
|
layoutProfiles: [
|
|
29873
30657
|
layoutProfile({ variantKey: "combined", family: "grid", weight: "standard" }),
|
|
@@ -30939,6 +31723,15 @@ ${root} {
|
|
|
30939
31723
|
`;
|
|
30940
31724
|
}
|
|
30941
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
|
+
|
|
30942
31735
|
// ../theme-core/src/blocks/vars/customer-portal.ts
|
|
30943
31736
|
function generateCustomerPortalVars({
|
|
30944
31737
|
themeId
|
|
@@ -30952,6 +31745,11 @@ ${root} {
|
|
|
30952
31745
|
--cp-muted: rgb(var(--tb-mutedText));
|
|
30953
31746
|
--cp-border: rgb(var(--tb-border));
|
|
30954
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));
|
|
30955
31753
|
|
|
30956
31754
|
/* Shared tab bar (underline style) */
|
|
30957
31755
|
--rb-tab-border-width: 1px;
|
|
@@ -31002,7 +31800,7 @@ ${root} {
|
|
|
31002
31800
|
--rb-modal-bg: var(--cp-card-bg);
|
|
31003
31801
|
--rb-modal-border: var(--cp-card-border);
|
|
31004
31802
|
--rb-modal-shadow: var(--shadow-lg, var(--shadow-elev));
|
|
31005
|
-
--rb-modal-radius: var(--
|
|
31803
|
+
--rb-modal-radius: var(--cp-card-radius);
|
|
31006
31804
|
--rb-modal-max-width: 560px;
|
|
31007
31805
|
|
|
31008
31806
|
/* Header */
|
|
@@ -32383,6 +33181,9 @@ import { jsx as jsx5 } from "react/jsx-runtime";
|
|
|
32383
33181
|
import * as React from "react";
|
|
32384
33182
|
import { Fragment, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
32385
33183
|
|
|
33184
|
+
// ../theme-core/src/fonts/uploadFormat.ts
|
|
33185
|
+
var MAX_FONT_UPLOAD_BYTES = 5 * 1024 * 1024;
|
|
33186
|
+
|
|
32386
33187
|
// ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
|
|
32387
33188
|
import { z as z60 } from "zod";
|
|
32388
33189
|
var themeBridgeConfigSchema = z60.object({
|
|
@@ -32829,6 +33630,7 @@ var COURSE_ENROLLMENT_REFUND_FAILED_CODES = [
|
|
|
32829
33630
|
];
|
|
32830
33631
|
|
|
32831
33632
|
// ../api/src/bookingVerticals.ts
|
|
33633
|
+
import { z as z63 } from "zod";
|
|
32832
33634
|
var VERTICAL_IDS = [
|
|
32833
33635
|
"yoga_wellness",
|
|
32834
33636
|
"fitness_pt",
|
|
@@ -32907,6 +33709,132 @@ var VERTICAL_ID_SET = new Set(VERTICAL_IDS);
|
|
|
32907
33709
|
var VERTICAL_PRESET_ID_SET = new Set(
|
|
32908
33710
|
VERTICAL_BOOKING_PRESETS.map((presetDefinition) => presetDefinition.id)
|
|
32909
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
|
+
};
|
|
32910
33838
|
function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, description, availability = "onboarding") {
|
|
32911
33839
|
return {
|
|
32912
33840
|
id,
|
|
@@ -32926,51 +33854,51 @@ function isRecord3(value) {
|
|
|
32926
33854
|
}
|
|
32927
33855
|
|
|
32928
33856
|
// ../api/src/appointmentSetup.ts
|
|
32929
|
-
import { z as
|
|
33857
|
+
import { z as z64 } from "zod";
|
|
32930
33858
|
var APPOINTMENT_SETUP_MAX_MINUTES = 1440;
|
|
32931
|
-
var appointmentSetupRefSchema =
|
|
32932
|
-
|
|
32933
|
-
|
|
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) })
|
|
32934
33862
|
]);
|
|
32935
|
-
var appointmentSetupVenueChoiceSchema =
|
|
32936
|
-
|
|
32937
|
-
|
|
32938
|
-
|
|
32939
|
-
kind:
|
|
32940
|
-
draftId:
|
|
32941
|
-
title:
|
|
32942
|
-
description:
|
|
32943
|
-
timezone:
|
|
32944
|
-
addressJson:
|
|
32945
|
-
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()
|
|
32946
33874
|
})
|
|
32947
33875
|
]);
|
|
32948
|
-
var appointmentSetupPaymentDraftSchema =
|
|
32949
|
-
priceType:
|
|
32950
|
-
});
|
|
32951
|
-
var appointmentSetupServiceAssignmentDraftSchema =
|
|
32952
|
-
|
|
32953
|
-
|
|
32954
|
-
kind:
|
|
32955
|
-
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)
|
|
32956
33884
|
})
|
|
32957
33885
|
]);
|
|
32958
|
-
var appointmentSetupServiceDraftSchema =
|
|
33886
|
+
var appointmentSetupServiceDraftSchema = z64.object({
|
|
32959
33887
|
ref: appointmentSetupRefSchema,
|
|
32960
|
-
title:
|
|
32961
|
-
description:
|
|
32962
|
-
durationMinutes:
|
|
32963
|
-
prepMinutes:
|
|
32964
|
-
cleanupMinutes:
|
|
32965
|
-
priceAmount:
|
|
32966
|
-
isActive:
|
|
32967
|
-
locationType:
|
|
32968
|
-
|
|
32969
|
-
|
|
32970
|
-
|
|
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")
|
|
32971
33899
|
]),
|
|
32972
33900
|
venue: appointmentSetupVenueChoiceSchema,
|
|
32973
|
-
timezone:
|
|
33901
|
+
timezone: z64.string().trim().min(1).nullable(),
|
|
32974
33902
|
payment: appointmentSetupPaymentDraftSchema,
|
|
32975
33903
|
assignment: appointmentSetupServiceAssignmentDraftSchema
|
|
32976
33904
|
}).superRefine((service, ctx) => {
|
|
@@ -32989,49 +33917,49 @@ var appointmentSetupServiceDraftSchema = z63.object({
|
|
|
32989
33917
|
});
|
|
32990
33918
|
}
|
|
32991
33919
|
});
|
|
32992
|
-
var appointmentSetupPractitionerDraftSchema =
|
|
33920
|
+
var appointmentSetupPractitionerDraftSchema = z64.object({
|
|
32993
33921
|
ref: appointmentSetupRefSchema,
|
|
32994
|
-
displayName:
|
|
32995
|
-
bio:
|
|
32996
|
-
timezone:
|
|
32997
|
-
colorHex:
|
|
32998
|
-
});
|
|
32999
|
-
var appointmentSetupWeeklyWindowDraftSchema =
|
|
33000
|
-
weekday:
|
|
33001
|
-
startTime:
|
|
33002
|
-
endTime:
|
|
33003
|
-
});
|
|
33004
|
-
var appointmentSetupStartTimePolicyDraftSchema =
|
|
33005
|
-
|
|
33006
|
-
|
|
33007
|
-
kind:
|
|
33008
|
-
intervalMinutes:
|
|
33009
|
-
|
|
33010
|
-
|
|
33011
|
-
|
|
33012
|
-
|
|
33013
|
-
|
|
33014
|
-
|
|
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)
|
|
33015
33943
|
])
|
|
33016
33944
|
})
|
|
33017
33945
|
]);
|
|
33018
|
-
var appointmentSetupAvailabilityDraftSchema =
|
|
33019
|
-
kind:
|
|
33946
|
+
var appointmentSetupAvailabilityDraftSchema = z64.object({
|
|
33947
|
+
kind: z64.literal("weekly_windows"),
|
|
33020
33948
|
resourceRef: appointmentSetupRefSchema,
|
|
33021
33949
|
serviceRef: appointmentSetupRefSchema.nullable(),
|
|
33022
|
-
windows:
|
|
33950
|
+
windows: z64.array(appointmentSetupWeeklyWindowDraftSchema),
|
|
33023
33951
|
startTimePolicy: appointmentSetupStartTimePolicyDraftSchema.optional()
|
|
33024
33952
|
});
|
|
33025
33953
|
var APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
|
|
33026
33954
|
var APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
|
|
33027
|
-
var appointmentSetupBookingNoticeSchema =
|
|
33028
|
-
minLeadMinutes:
|
|
33029
|
-
maxBookingNoticeMinutes:
|
|
33030
|
-
});
|
|
33031
|
-
var applyAppointmentSetupRequestSchema =
|
|
33032
|
-
services:
|
|
33033
|
-
practitioners:
|
|
33034
|
-
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),
|
|
33035
33963
|
bookingNotice: appointmentSetupBookingNoticeSchema
|
|
33036
33964
|
});
|
|
33037
33965
|
|
|
@@ -33064,24 +33992,24 @@ var STAFF_CANCELLATION_CONTEXT_CATEGORIES = [
|
|
|
33064
33992
|
];
|
|
33065
33993
|
|
|
33066
33994
|
// ../api/src/siteBanner.ts
|
|
33067
|
-
import { z as
|
|
33995
|
+
import { z as z65 } from "zod";
|
|
33068
33996
|
var SITE_BANNER_SCOPE_VALUES = ["homepage", "all-pages"];
|
|
33069
33997
|
var SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
|
|
33070
33998
|
var SITE_BANNER_MAX_TEXT_LENGTH = 320;
|
|
33071
33999
|
var SITE_BANNER_MAX_PARAGRAPHS = 2;
|
|
33072
|
-
var siteBannerScopeSchema =
|
|
33073
|
-
var siteBannerToneSchema =
|
|
33074
|
-
var siteBannerBodySchema =
|
|
33075
|
-
var siteBannerCtaSchema =
|
|
33076
|
-
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),
|
|
33077
34005
|
link: linkPayloadSchema
|
|
33078
34006
|
});
|
|
33079
|
-
var siteBannerSettingsSchema =
|
|
33080
|
-
|
|
33081
|
-
enabled:
|
|
34007
|
+
var siteBannerSettingsSchema = z65.discriminatedUnion("enabled", [
|
|
34008
|
+
z65.object({
|
|
34009
|
+
enabled: z65.literal(false)
|
|
33082
34010
|
}),
|
|
33083
|
-
|
|
33084
|
-
enabled:
|
|
34011
|
+
z65.object({
|
|
34012
|
+
enabled: z65.literal(true),
|
|
33085
34013
|
scope: siteBannerScopeSchema,
|
|
33086
34014
|
tone: siteBannerToneSchema,
|
|
33087
34015
|
body: siteBannerBodySchema,
|
|
@@ -33095,7 +34023,7 @@ var siteBannerSettingsInputSchema = siteBannerSettingsSchema.superRefine((value,
|
|
|
33095
34023
|
const analysis = analyzeSiteBannerBody(value.body);
|
|
33096
34024
|
for (const issue of analysis.issues) {
|
|
33097
34025
|
ctx.addIssue({
|
|
33098
|
-
code:
|
|
34026
|
+
code: z65.ZodIssueCode.custom,
|
|
33099
34027
|
path: ["body"],
|
|
33100
34028
|
message: siteBannerBodyIssueMessage(issue)
|
|
33101
34029
|
});
|
|
@@ -33363,76 +34291,109 @@ function isNavigationMenuValidationItem(value) {
|
|
|
33363
34291
|
return typeof value.label === "string";
|
|
33364
34292
|
}
|
|
33365
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
|
+
|
|
33366
34327
|
// ../api/src/aiPlayground.ts
|
|
33367
|
-
import { z as
|
|
33368
|
-
var Rfc6902PatchOp =
|
|
34328
|
+
import { z as z66 } from "zod";
|
|
34329
|
+
var Rfc6902PatchOp = z66.discriminatedUnion("op", [
|
|
33369
34330
|
// Standard RFC-6902 operations
|
|
33370
|
-
|
|
33371
|
-
op:
|
|
33372
|
-
path:
|
|
33373
|
-
value:
|
|
34331
|
+
z66.object({
|
|
34332
|
+
op: z66.literal("add"),
|
|
34333
|
+
path: z66.string(),
|
|
34334
|
+
value: z66.unknown()
|
|
33374
34335
|
}),
|
|
33375
|
-
|
|
33376
|
-
op:
|
|
33377
|
-
path:
|
|
34336
|
+
z66.object({
|
|
34337
|
+
op: z66.literal("remove"),
|
|
34338
|
+
path: z66.string()
|
|
33378
34339
|
}),
|
|
33379
|
-
|
|
33380
|
-
op:
|
|
33381
|
-
path:
|
|
33382
|
-
value:
|
|
34340
|
+
z66.object({
|
|
34341
|
+
op: z66.literal("replace"),
|
|
34342
|
+
path: z66.string(),
|
|
34343
|
+
value: z66.unknown()
|
|
33383
34344
|
}),
|
|
33384
|
-
|
|
33385
|
-
op:
|
|
33386
|
-
from:
|
|
33387
|
-
path:
|
|
34345
|
+
z66.object({
|
|
34346
|
+
op: z66.literal("move"),
|
|
34347
|
+
from: z66.string(),
|
|
34348
|
+
path: z66.string()
|
|
33388
34349
|
}),
|
|
33389
|
-
|
|
33390
|
-
op:
|
|
33391
|
-
from:
|
|
33392
|
-
path:
|
|
34350
|
+
z66.object({
|
|
34351
|
+
op: z66.literal("copy"),
|
|
34352
|
+
from: z66.string(),
|
|
34353
|
+
path: z66.string()
|
|
33393
34354
|
}),
|
|
33394
34355
|
// Block-level operations (Phase 2)
|
|
33395
|
-
|
|
33396
|
-
op:
|
|
33397
|
-
blockKind:
|
|
33398
|
-
afterBlockId:
|
|
33399
|
-
content:
|
|
33400
|
-
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()
|
|
33401
34362
|
}),
|
|
33402
|
-
|
|
33403
|
-
op:
|
|
33404
|
-
blockId:
|
|
33405
|
-
rationale:
|
|
34363
|
+
z66.object({
|
|
34364
|
+
op: z66.literal("delete_block"),
|
|
34365
|
+
blockId: z66.string(),
|
|
34366
|
+
rationale: z66.string()
|
|
33406
34367
|
}),
|
|
33407
|
-
|
|
33408
|
-
op:
|
|
33409
|
-
blockId:
|
|
33410
|
-
afterBlockId:
|
|
33411
|
-
rationale:
|
|
34368
|
+
z66.object({
|
|
34369
|
+
op: z66.literal("reorder_block"),
|
|
34370
|
+
blockId: z66.string(),
|
|
34371
|
+
afterBlockId: z66.string().nullable(),
|
|
34372
|
+
rationale: z66.string()
|
|
33412
34373
|
})
|
|
33413
34374
|
]);
|
|
33414
|
-
var PlaygroundProposeRequest =
|
|
33415
|
-
request:
|
|
34375
|
+
var PlaygroundProposeRequest = z66.object({
|
|
34376
|
+
request: z66.string().min(1).max(2e3)
|
|
33416
34377
|
});
|
|
33417
|
-
var MultiPagePatchEnvelope =
|
|
33418
|
-
pageId:
|
|
33419
|
-
blockId:
|
|
34378
|
+
var MultiPagePatchEnvelope = z66.object({
|
|
34379
|
+
pageId: z66.string(),
|
|
34380
|
+
blockId: z66.string().optional(),
|
|
33420
34381
|
// Not present for page-level ops
|
|
33421
|
-
blockKind:
|
|
33422
|
-
blockPurpose:
|
|
33423
|
-
ops:
|
|
33424
|
-
rationale:
|
|
33425
|
-
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()
|
|
33426
34387
|
});
|
|
33427
|
-
var MultiPageUpdateResponse =
|
|
33428
|
-
patches:
|
|
33429
|
-
assistantMessage:
|
|
33430
|
-
pagesModified:
|
|
33431
|
-
toolCallsUsed:
|
|
34388
|
+
var MultiPageUpdateResponse = z66.object({
|
|
34389
|
+
patches: z66.array(MultiPagePatchEnvelope),
|
|
34390
|
+
assistantMessage: z66.string(),
|
|
34391
|
+
pagesModified: z66.number(),
|
|
34392
|
+
toolCallsUsed: z66.number()
|
|
33432
34393
|
});
|
|
33433
34394
|
|
|
33434
34395
|
// src/config/content-validation.ts
|
|
33435
|
-
import { z as
|
|
34396
|
+
import { z as z67 } from "zod";
|
|
33436
34397
|
|
|
33437
34398
|
// src/types/block-kinds.ts
|
|
33438
34399
|
var SYSTEM_BLOCK_KINDS = [
|
|
@@ -33574,32 +34535,32 @@ function describeInvalidBindingTransform(transform) {
|
|
|
33574
34535
|
}
|
|
33575
34536
|
|
|
33576
34537
|
// src/config/content-validation.ts
|
|
33577
|
-
var jsonDataSchema =
|
|
33578
|
-
var contentTypeKeySchema =
|
|
34538
|
+
var jsonDataSchema = z67.record(z67.string(), z67.any());
|
|
34539
|
+
var contentTypeKeySchema = z67.string().min(1).regex(
|
|
33579
34540
|
/^[a-z][a-z0-9-]*$/,
|
|
33580
34541
|
"Key must be lowercase, start with a letter, and contain only letters, numbers, and hyphens"
|
|
33581
34542
|
);
|
|
33582
|
-
var templateConfigSchemaForward =
|
|
33583
|
-
blocks:
|
|
33584
|
-
|
|
33585
|
-
identifier:
|
|
33586
|
-
kind:
|
|
33587
|
-
scope:
|
|
33588
|
-
bindings:
|
|
33589
|
-
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()
|
|
33590
34551
|
})
|
|
33591
34552
|
)
|
|
33592
34553
|
}).optional();
|
|
33593
|
-
var contentTypeConfigSchema =
|
|
34554
|
+
var contentTypeConfigSchema = z67.object({
|
|
33594
34555
|
key: contentTypeKeySchema,
|
|
33595
|
-
name:
|
|
33596
|
-
description:
|
|
33597
|
-
hasPages:
|
|
33598
|
-
routePattern:
|
|
34556
|
+
name: z67.string().min(1),
|
|
34557
|
+
description: z67.string().optional(),
|
|
34558
|
+
hasPages: z67.boolean(),
|
|
34559
|
+
routePattern: z67.string().optional(),
|
|
33599
34560
|
// Fields are validated as unknown[] here - deep field validation happens in @riverbankcms/blocks
|
|
33600
|
-
fields:
|
|
33601
|
-
titleField:
|
|
33602
|
-
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),
|
|
33603
34564
|
template: templateConfigSchemaForward
|
|
33604
34565
|
}).refine(
|
|
33605
34566
|
(data) => {
|
|
@@ -33621,7 +34582,7 @@ var contentTypeConfigSchema = z66.object({
|
|
|
33621
34582
|
}
|
|
33622
34583
|
if (!data.routePattern) {
|
|
33623
34584
|
ctx.addIssue({
|
|
33624
|
-
code:
|
|
34585
|
+
code: z67.ZodIssueCode.custom,
|
|
33625
34586
|
path: ["routePattern"],
|
|
33626
34587
|
message: "routePattern is required when hasPages is true. Non-singleton types must include {slug} placeholder."
|
|
33627
34588
|
});
|
|
@@ -33630,7 +34591,7 @@ var contentTypeConfigSchema = z66.object({
|
|
|
33630
34591
|
const parseResult = safeParseRouteTemplate(data.routePattern);
|
|
33631
34592
|
if (!parseResult.success) {
|
|
33632
34593
|
ctx.addIssue({
|
|
33633
|
-
code:
|
|
34594
|
+
code: z67.ZodIssueCode.custom,
|
|
33634
34595
|
path: ["routePattern"],
|
|
33635
34596
|
message: describeRouteTemplateParseError(parseResult.error)
|
|
33636
34597
|
});
|
|
@@ -33638,44 +34599,44 @@ var contentTypeConfigSchema = z66.object({
|
|
|
33638
34599
|
}
|
|
33639
34600
|
if (!data.isSingleton && parseResult.routeTemplate.kind !== "slug-template") {
|
|
33640
34601
|
ctx.addIssue({
|
|
33641
|
-
code:
|
|
34602
|
+
code: z67.ZodIssueCode.custom,
|
|
33642
34603
|
path: ["routePattern"],
|
|
33643
34604
|
message: "routePattern is required when hasPages is true. Non-singleton types must include {slug} placeholder."
|
|
33644
34605
|
});
|
|
33645
34606
|
}
|
|
33646
34607
|
});
|
|
33647
|
-
var fieldBindingSchema =
|
|
33648
|
-
source:
|
|
33649
|
-
path:
|
|
34608
|
+
var fieldBindingSchema = z67.object({
|
|
34609
|
+
source: z67.literal("field"),
|
|
34610
|
+
path: z67.string().min(1, "Field path is required")
|
|
33650
34611
|
});
|
|
33651
|
-
var metaBindingSchema =
|
|
33652
|
-
source:
|
|
33653
|
-
path:
|
|
34612
|
+
var metaBindingSchema = z67.object({
|
|
34613
|
+
source: z67.literal("meta"),
|
|
34614
|
+
path: z67.enum(TEMPLATE_BINDING_META_PATHS, {
|
|
33654
34615
|
error: (issue) => describeInvalidTemplateBindingMetaPath(String(issue.input))
|
|
33655
34616
|
})
|
|
33656
34617
|
});
|
|
33657
|
-
var literalBindingSchema =
|
|
33658
|
-
source:
|
|
33659
|
-
value:
|
|
34618
|
+
var literalBindingSchema = z67.object({
|
|
34619
|
+
source: z67.literal("literal"),
|
|
34620
|
+
value: z67.unknown()
|
|
33660
34621
|
});
|
|
33661
|
-
var transformBindingSchema =
|
|
33662
|
-
source:
|
|
33663
|
-
path:
|
|
33664
|
-
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, {
|
|
33665
34626
|
error: (issue) => describeInvalidBindingTransform(String(issue.input))
|
|
33666
34627
|
})
|
|
33667
34628
|
});
|
|
33668
|
-
var baseBindingSchema =
|
|
34629
|
+
var baseBindingSchema = z67.discriminatedUnion("source", [
|
|
33669
34630
|
fieldBindingSchema,
|
|
33670
34631
|
metaBindingSchema,
|
|
33671
34632
|
literalBindingSchema,
|
|
33672
34633
|
transformBindingSchema
|
|
33673
34634
|
]);
|
|
33674
|
-
var fallbackBindingSchema =
|
|
33675
|
-
source:
|
|
33676
|
-
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")
|
|
33677
34638
|
});
|
|
33678
|
-
var bindingSourceSchema =
|
|
34639
|
+
var bindingSourceSchema = z67.union([
|
|
33679
34640
|
baseBindingSchema,
|
|
33680
34641
|
fallbackBindingSchema
|
|
33681
34642
|
]);
|
|
@@ -33689,12 +34650,12 @@ function isValidBlockKind(kind) {
|
|
|
33689
34650
|
return false;
|
|
33690
34651
|
}
|
|
33691
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")';
|
|
33692
|
-
var blockKindSchema =
|
|
33693
|
-
var templateBlockConfigSchema =
|
|
33694
|
-
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"),
|
|
33695
34656
|
kind: blockKindSchema,
|
|
33696
|
-
scope:
|
|
33697
|
-
bindings:
|
|
34657
|
+
scope: z67.enum(["entry", "template"]),
|
|
34658
|
+
bindings: z67.record(z67.string(), bindingSourceSchema).optional(),
|
|
33698
34659
|
content: jsonDataSchema.optional()
|
|
33699
34660
|
}).refine(
|
|
33700
34661
|
(data) => {
|
|
@@ -33713,8 +34674,8 @@ var templateBlockConfigSchema = z66.object({
|
|
|
33713
34674
|
},
|
|
33714
34675
|
{ message: "Template-scoped blocks should define static content, not bindings" }
|
|
33715
34676
|
);
|
|
33716
|
-
var templateConfigSchema =
|
|
33717
|
-
blocks:
|
|
34677
|
+
var templateConfigSchema = z67.object({
|
|
34678
|
+
blocks: z67.array(templateBlockConfigSchema).min(1, "Template must have at least one block")
|
|
33718
34679
|
}).refine(
|
|
33719
34680
|
(data) => {
|
|
33720
34681
|
const identifiers = data.blocks.map((b) => b.identifier);
|
|
@@ -33723,77 +34684,77 @@ var templateConfigSchema = z66.object({
|
|
|
33723
34684
|
},
|
|
33724
34685
|
{ message: "Template block identifiers must be unique" }
|
|
33725
34686
|
);
|
|
33726
|
-
var blockConfigSchema =
|
|
34687
|
+
var blockConfigSchema = z67.object({
|
|
33727
34688
|
kind: blockKindSchema,
|
|
33728
34689
|
content: jsonDataSchema,
|
|
33729
|
-
orderIndex:
|
|
33730
|
-
});
|
|
33731
|
-
var pageConfigSchema =
|
|
33732
|
-
identifier:
|
|
33733
|
-
title:
|
|
33734
|
-
path:
|
|
33735
|
-
purpose:
|
|
33736
|
-
blocks:
|
|
33737
|
-
status:
|
|
33738
|
-
metaTitle:
|
|
33739
|
-
metaDescription:
|
|
33740
|
-
});
|
|
33741
|
-
var entryConfigSchema =
|
|
33742
|
-
identifier:
|
|
33743
|
-
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"),
|
|
33744
34705
|
data: jsonDataSchema,
|
|
33745
|
-
status:
|
|
33746
|
-
slug:
|
|
33747
|
-
summary:
|
|
34706
|
+
status: z67.enum(["draft", "published"]).default("draft"),
|
|
34707
|
+
slug: z67.string().optional(),
|
|
34708
|
+
summary: z67.string().optional(),
|
|
33748
34709
|
// Hard remove legacy config-only titles: titles must live in entry `data`.
|
|
33749
|
-
title:
|
|
34710
|
+
title: z67.any().optional().refine((value) => value === void 0, {
|
|
33750
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."
|
|
33751
34712
|
}),
|
|
33752
|
-
metaTitle:
|
|
33753
|
-
metaDescription:
|
|
34713
|
+
metaTitle: z67.string().optional(),
|
|
34714
|
+
metaDescription: z67.string().optional()
|
|
33754
34715
|
});
|
|
33755
|
-
var dropdownLinkSchema =
|
|
33756
|
-
kind:
|
|
34716
|
+
var dropdownLinkSchema = z67.object({
|
|
34717
|
+
kind: z67.literal("dropdown")
|
|
33757
34718
|
});
|
|
33758
|
-
var navigationLinkSchema =
|
|
34719
|
+
var navigationLinkSchema = z67.discriminatedUnion("kind", [
|
|
33759
34720
|
...navigationLinkInputSchemaOptions,
|
|
33760
34721
|
dropdownLinkSchema
|
|
33761
34722
|
]);
|
|
33762
|
-
var baseNavigationItemSchema =
|
|
33763
|
-
label:
|
|
34723
|
+
var baseNavigationItemSchema = z67.object({
|
|
34724
|
+
label: z67.string().min(1, "Label is required"),
|
|
33764
34725
|
link: navigationLinkSchema,
|
|
33765
|
-
isCta:
|
|
34726
|
+
isCta: z67.boolean().optional()
|
|
33766
34727
|
});
|
|
33767
34728
|
var navigationItemConfigSchema = baseNavigationItemSchema.extend({
|
|
33768
|
-
children:
|
|
33769
|
-
});
|
|
33770
|
-
var navigationMenuConfigSchema =
|
|
33771
|
-
identifier:
|
|
33772
|
-
name:
|
|
33773
|
-
isPrimary:
|
|
33774
|
-
isFooter:
|
|
33775
|
-
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)
|
|
33776
34737
|
}).superRefine((menu, ctx) => {
|
|
33777
34738
|
const portalStats = collectPortalLinkStats(
|
|
33778
34739
|
menu.items
|
|
33779
34740
|
);
|
|
33780
34741
|
if (portalStats.count > 1) {
|
|
33781
34742
|
ctx.addIssue({
|
|
33782
|
-
code:
|
|
34743
|
+
code: z67.ZodIssueCode.custom,
|
|
33783
34744
|
message: "Only one portal link is allowed per navigation menu",
|
|
33784
34745
|
path: ["items"]
|
|
33785
34746
|
});
|
|
33786
34747
|
}
|
|
33787
34748
|
if (portalStats.nestedLabels.length > 0) {
|
|
33788
34749
|
ctx.addIssue({
|
|
33789
|
-
code:
|
|
34750
|
+
code: z67.ZodIssueCode.custom,
|
|
33790
34751
|
message: `Portal links must be root-level items: ${portalStats.nestedLabels.join(", ")}`,
|
|
33791
34752
|
path: ["items"]
|
|
33792
34753
|
});
|
|
33793
34754
|
}
|
|
33794
34755
|
if (portalStats.withChildrenLabels.length > 0) {
|
|
33795
34756
|
ctx.addIssue({
|
|
33796
|
-
code:
|
|
34757
|
+
code: z67.ZodIssueCode.custom,
|
|
33797
34758
|
message: `Portal links cannot contain child items: ${portalStats.withChildrenLabels.join(", ")}`,
|
|
33798
34759
|
path: ["items"]
|
|
33799
34760
|
});
|
|
@@ -33803,44 +34764,44 @@ var navigationMenuConfigSchema = z66.object({
|
|
|
33803
34764
|
);
|
|
33804
34765
|
if (cartStats.nestedLabels.length > 0) {
|
|
33805
34766
|
ctx.addIssue({
|
|
33806
|
-
code:
|
|
34767
|
+
code: z67.ZodIssueCode.custom,
|
|
33807
34768
|
message: `Cart links must be root-level items: ${cartStats.nestedLabels.join(", ")}`,
|
|
33808
34769
|
path: ["items"]
|
|
33809
34770
|
});
|
|
33810
34771
|
}
|
|
33811
34772
|
if (cartStats.withChildrenLabels.length > 0) {
|
|
33812
34773
|
ctx.addIssue({
|
|
33813
|
-
code:
|
|
34774
|
+
code: z67.ZodIssueCode.custom,
|
|
33814
34775
|
message: `Cart links cannot contain child items: ${cartStats.withChildrenLabels.join(", ")}`,
|
|
33815
34776
|
path: ["items"]
|
|
33816
34777
|
});
|
|
33817
34778
|
}
|
|
33818
34779
|
if (cartStats.ctaLabels.length > 0) {
|
|
33819
34780
|
ctx.addIssue({
|
|
33820
|
-
code:
|
|
34781
|
+
code: z67.ZodIssueCode.custom,
|
|
33821
34782
|
message: `Cart links cannot be marked as CTA: ${cartStats.ctaLabels.join(", ")}`,
|
|
33822
34783
|
path: ["items"]
|
|
33823
34784
|
});
|
|
33824
34785
|
}
|
|
33825
34786
|
if (cartStats.missingVisibleTextLabels.length > 0) {
|
|
33826
34787
|
ctx.addIssue({
|
|
33827
|
-
code:
|
|
34788
|
+
code: z67.ZodIssueCode.custom,
|
|
33828
34789
|
message: `Cart links with icon-with-label must provide a visible label: ${cartStats.missingVisibleTextLabels.join(", ")}`,
|
|
33829
34790
|
path: ["items"]
|
|
33830
34791
|
});
|
|
33831
34792
|
}
|
|
33832
34793
|
});
|
|
33833
|
-
var siteSettingsConfigSchema =
|
|
33834
|
-
homepagePath:
|
|
33835
|
-
siteTitle:
|
|
33836
|
-
siteDescription:
|
|
33837
|
-
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()
|
|
33838
34799
|
});
|
|
33839
|
-
var contentConfigBaseSchema =
|
|
33840
|
-
contentTypes:
|
|
33841
|
-
entries:
|
|
33842
|
-
pages:
|
|
33843
|
-
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(),
|
|
33844
34805
|
settings: siteSettingsConfigSchema.optional()
|
|
33845
34806
|
});
|
|
33846
34807
|
var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
@@ -33849,7 +34810,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
33849
34810
|
const duplicateKeys = keys.filter((key, i) => keys.indexOf(key) !== i);
|
|
33850
34811
|
if (duplicateKeys.length > 0) {
|
|
33851
34812
|
ctx.addIssue({
|
|
33852
|
-
code:
|
|
34813
|
+
code: z67.ZodIssueCode.custom,
|
|
33853
34814
|
message: `Content type keys must be unique. Duplicates: ${duplicateKeys.join(", ")}`,
|
|
33854
34815
|
path: ["contentTypes"]
|
|
33855
34816
|
});
|
|
@@ -33860,7 +34821,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
33860
34821
|
const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
|
|
33861
34822
|
if (duplicateIds.length > 0) {
|
|
33862
34823
|
ctx.addIssue({
|
|
33863
|
-
code:
|
|
34824
|
+
code: z67.ZodIssueCode.custom,
|
|
33864
34825
|
message: `Page identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
|
|
33865
34826
|
path: ["pages"]
|
|
33866
34827
|
});
|
|
@@ -33869,7 +34830,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
33869
34830
|
const duplicatePaths = paths.filter((path, i) => paths.indexOf(path) !== i);
|
|
33870
34831
|
if (duplicatePaths.length > 0) {
|
|
33871
34832
|
ctx.addIssue({
|
|
33872
|
-
code:
|
|
34833
|
+
code: z67.ZodIssueCode.custom,
|
|
33873
34834
|
message: `Page paths must be unique. Duplicates: ${duplicatePaths.join(", ")}`,
|
|
33874
34835
|
path: ["pages"]
|
|
33875
34836
|
});
|
|
@@ -33880,7 +34841,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
33880
34841
|
const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
|
|
33881
34842
|
if (duplicateIds.length > 0) {
|
|
33882
34843
|
ctx.addIssue({
|
|
33883
|
-
code:
|
|
34844
|
+
code: z67.ZodIssueCode.custom,
|
|
33884
34845
|
message: `Entry identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
|
|
33885
34846
|
path: ["entries"]
|
|
33886
34847
|
});
|
|
@@ -33891,7 +34852,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
33891
34852
|
const duplicateIds = identifiers.filter((id, i) => identifiers.indexOf(id) !== i);
|
|
33892
34853
|
if (duplicateIds.length > 0) {
|
|
33893
34854
|
ctx.addIssue({
|
|
33894
|
-
code:
|
|
34855
|
+
code: z67.ZodIssueCode.custom,
|
|
33895
34856
|
message: `Navigation menu identifiers must be unique. Duplicates: ${duplicateIds.join(", ")}`,
|
|
33896
34857
|
path: ["navigationMenus"]
|
|
33897
34858
|
});
|
|
@@ -33905,7 +34866,7 @@ var contentConfigSchema = contentConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
33905
34866
|
const entriesForType = data.entries.filter((e) => e.contentType === singletonKey);
|
|
33906
34867
|
if (entriesForType.length > 1) {
|
|
33907
34868
|
ctx.addIssue({
|
|
33908
|
-
code:
|
|
34869
|
+
code: z67.ZodIssueCode.custom,
|
|
33909
34870
|
message: `Singleton content type "${singletonKey}" cannot have more than one entry. Found ${entriesForType.length} entries.`,
|
|
33910
34871
|
path: ["entries"]
|
|
33911
34872
|
});
|
|
@@ -34018,18 +34979,18 @@ function validateLayout(layout) {
|
|
|
34018
34979
|
}
|
|
34019
34980
|
|
|
34020
34981
|
// src/config/dashboard-validation.ts
|
|
34021
|
-
import { z as
|
|
34022
|
-
var navIdListSchema2 =
|
|
34982
|
+
import { z as z68 } from "zod";
|
|
34983
|
+
var navIdListSchema2 = z68.preprocess((value) => {
|
|
34023
34984
|
if (!Array.isArray(value)) return void 0;
|
|
34024
34985
|
const filtered = value.filter((v) => typeof v === "string" && v.trim().length > 0);
|
|
34025
34986
|
return filtered.length > 0 ? filtered : void 0;
|
|
34026
|
-
},
|
|
34027
|
-
var dashboardNavVisibilityBaseSchema2 =
|
|
34028
|
-
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(),
|
|
34029
34990
|
allowIds: navIdListSchema2,
|
|
34030
34991
|
denyIds: navIdListSchema2
|
|
34031
34992
|
}).strip();
|
|
34032
|
-
var dashboardNavVisibilityRolesSchema2 =
|
|
34993
|
+
var dashboardNavVisibilityRolesSchema2 = z68.object({
|
|
34033
34994
|
administrator: dashboardNavVisibilityBaseSchema2.optional(),
|
|
34034
34995
|
editor: dashboardNavVisibilityBaseSchema2.optional(),
|
|
34035
34996
|
team_member: dashboardNavVisibilityBaseSchema2.optional()
|
|
@@ -34037,20 +34998,20 @@ var dashboardNavVisibilityRolesSchema2 = z67.object({
|
|
|
34037
34998
|
var dashboardNavVisibilitySchema2 = dashboardNavVisibilityBaseSchema2.extend({
|
|
34038
34999
|
roles: dashboardNavVisibilityRolesSchema2
|
|
34039
35000
|
}).strip();
|
|
34040
|
-
var dashboardNavigationConfigSchema2 =
|
|
35001
|
+
var dashboardNavigationConfigSchema2 = z68.object({
|
|
34041
35002
|
siteNav: dashboardNavVisibilitySchema2.optional(),
|
|
34042
35003
|
settingsNav: dashboardNavVisibilitySchema2.optional()
|
|
34043
35004
|
}).strip();
|
|
34044
|
-
var dashboardConfigSchema2 =
|
|
34045
|
-
previewEditingEnabled:
|
|
35005
|
+
var dashboardConfigSchema2 = z68.object({
|
|
35006
|
+
previewEditingEnabled: z68.boolean().optional(),
|
|
34046
35007
|
navigation: dashboardNavigationConfigSchema2.optional()
|
|
34047
35008
|
}).strip();
|
|
34048
35009
|
|
|
34049
35010
|
// src/zod/titleSourceSchema.ts
|
|
34050
|
-
import { z as
|
|
34051
|
-
var titleSourceValueSchema =
|
|
34052
|
-
|
|
34053
|
-
|
|
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)
|
|
34054
35015
|
]);
|
|
34055
35016
|
|
|
34056
35017
|
// src/data/prefetchBlockData.ts
|
|
@@ -34069,11 +35030,11 @@ var SUPPORTED_LOADER_ENDPOINTS2 = [
|
|
|
34069
35030
|
];
|
|
34070
35031
|
|
|
34071
35032
|
// src/config/validation.ts
|
|
34072
|
-
var sdkThemePaletteSchema2 =
|
|
34073
|
-
var sdkThemeConfigSchema2 =
|
|
35033
|
+
var sdkThemePaletteSchema2 = z70.record(z70.string(), z70.string());
|
|
35034
|
+
var sdkThemeConfigSchema2 = z70.object({
|
|
34074
35035
|
palette: sdkThemePaletteSchema2
|
|
34075
35036
|
});
|
|
34076
|
-
var sdkSiteUrlSchema =
|
|
35037
|
+
var sdkSiteUrlSchema = z70.string().url("Must be a valid URL").refine((url) => {
|
|
34077
35038
|
try {
|
|
34078
35039
|
const parsed = new URL(url);
|
|
34079
35040
|
const isLocal = parsed.hostname === "localhost" || parsed.hostname.endsWith(".localhost") || parsed.hostname.endsWith(".local") || parsed.hostname.endsWith(".test");
|
|
@@ -34082,97 +35043,97 @@ var sdkSiteUrlSchema = z69.string().url("Must be a valid URL").refine((url) => {
|
|
|
34082
35043
|
return false;
|
|
34083
35044
|
}
|
|
34084
35045
|
}, { message: "Production URLs must use HTTPS" }).transform((url) => url.replace(/\/$/, ""));
|
|
34085
|
-
var sectionBackgroundSchema =
|
|
34086
|
-
id:
|
|
34087
|
-
label:
|
|
34088
|
-
token:
|
|
35046
|
+
var sectionBackgroundSchema = z70.object({
|
|
35047
|
+
id: z70.string(),
|
|
35048
|
+
label: z70.string(),
|
|
35049
|
+
token: z70.string()
|
|
34089
35050
|
// Reference to theme palette token
|
|
34090
35051
|
});
|
|
34091
|
-
var sectionSpacingSchema =
|
|
34092
|
-
var containerMaxWidthSchema =
|
|
34093
|
-
var containerAlignmentSchema =
|
|
34094
|
-
var sectionOptionsSchema =
|
|
34095
|
-
backgroundColor:
|
|
34096
|
-
backgroundImage:
|
|
34097
|
-
backgroundGradient:
|
|
34098
|
-
spacing:
|
|
34099
|
-
|
|
34100
|
-
|
|
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()
|
|
34101
35062
|
]).optional(),
|
|
34102
|
-
textColor:
|
|
35063
|
+
textColor: z70.boolean().optional()
|
|
34103
35064
|
}).optional();
|
|
34104
|
-
var containerOptionsSchema =
|
|
34105
|
-
maxWidth:
|
|
34106
|
-
|
|
34107
|
-
|
|
35065
|
+
var containerOptionsSchema = z70.object({
|
|
35066
|
+
maxWidth: z70.union([
|
|
35067
|
+
z70.array(containerMaxWidthSchema),
|
|
35068
|
+
z70.boolean()
|
|
34108
35069
|
]).optional(),
|
|
34109
|
-
alignment:
|
|
34110
|
-
|
|
34111
|
-
|
|
35070
|
+
alignment: z70.union([
|
|
35071
|
+
z70.array(containerAlignmentSchema),
|
|
35072
|
+
z70.boolean()
|
|
34112
35073
|
]).optional()
|
|
34113
35074
|
}).optional();
|
|
34114
|
-
var siteStyleConfigSchema =
|
|
34115
|
-
sectionBackgrounds:
|
|
35075
|
+
var siteStyleConfigSchema = z70.object({
|
|
35076
|
+
sectionBackgrounds: z70.array(sectionBackgroundSchema).optional(),
|
|
34116
35077
|
sectionOptions: sectionOptionsSchema,
|
|
34117
35078
|
containerOptions: containerOptionsSchema
|
|
34118
35079
|
}).optional();
|
|
34119
|
-
var sdkLoaderEndpointSchema2 =
|
|
35080
|
+
var sdkLoaderEndpointSchema2 = z70.enum(SUPPORTED_LOADER_ENDPOINTS2);
|
|
34120
35081
|
var allowedTransformIds = new Set(builtinTransformDefinitions.map((transform) => transform.id));
|
|
34121
|
-
var loaderTransformStepSchema =
|
|
34122
|
-
id:
|
|
35082
|
+
var loaderTransformStepSchema = z70.object({
|
|
35083
|
+
id: z70.string().refine((id) => allowedTransformIds.has(id), {
|
|
34123
35084
|
message: "Unknown transform id"
|
|
34124
35085
|
}),
|
|
34125
|
-
options:
|
|
35086
|
+
options: z70.record(z70.string(), z70.unknown()).optional()
|
|
34126
35087
|
});
|
|
34127
|
-
var loaderParamBindingSchema2 =
|
|
34128
|
-
$bind:
|
|
34129
|
-
from:
|
|
35088
|
+
var loaderParamBindingSchema2 = z70.object({
|
|
35089
|
+
$bind: z70.object({
|
|
35090
|
+
from: z70.string().min(1, "Binding path is required"),
|
|
34130
35091
|
// Loader params are ultimately string-normalized for query strings, so fallbacks should
|
|
34131
35092
|
// stay scalar. Use transforms (e.g. `value.jsonArray`) when you need to serialize
|
|
34132
35093
|
// more complex values into a string.
|
|
34133
|
-
fallback:
|
|
34134
|
-
transforms:
|
|
34135
|
-
pick:
|
|
34136
|
-
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()
|
|
34137
35098
|
})
|
|
34138
35099
|
});
|
|
34139
|
-
var loaderParamValueSchema2 =
|
|
34140
|
-
|
|
34141
|
-
|
|
34142
|
-
|
|
35100
|
+
var loaderParamValueSchema2 = z70.union([
|
|
35101
|
+
z70.string(),
|
|
35102
|
+
z70.number(),
|
|
35103
|
+
z70.boolean(),
|
|
34143
35104
|
loaderParamBindingSchema2
|
|
34144
35105
|
]);
|
|
34145
|
-
var loaderWhenValueSchema =
|
|
34146
|
-
|
|
35106
|
+
var loaderWhenValueSchema = z70.union([
|
|
35107
|
+
z70.boolean(),
|
|
34147
35108
|
loaderParamBindingSchema2
|
|
34148
35109
|
]);
|
|
34149
|
-
var sdkConfigLoaderSchema2 =
|
|
35110
|
+
var sdkConfigLoaderSchema2 = z70.object({
|
|
34150
35111
|
endpoint: sdkLoaderEndpointSchema2,
|
|
34151
|
-
params:
|
|
34152
|
-
mode:
|
|
35112
|
+
params: z70.record(z70.string(), loaderParamValueSchema2),
|
|
35113
|
+
mode: z70.enum(["server", "client"]).default("server"),
|
|
34153
35114
|
when: loaderWhenValueSchema.optional()
|
|
34154
35115
|
});
|
|
34155
|
-
var sdkDataLoadersSchema2 =
|
|
35116
|
+
var sdkDataLoadersSchema2 = z70.record(z70.string(), sdkConfigLoaderSchema2).refine(
|
|
34156
35117
|
(loaders) => Object.keys(loaders).length <= 5,
|
|
34157
35118
|
{ message: "Maximum 5 data loaders per block" }
|
|
34158
35119
|
).optional();
|
|
34159
|
-
var fieldSelectOptionSchema =
|
|
34160
|
-
value:
|
|
34161
|
-
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")
|
|
34162
35123
|
});
|
|
34163
|
-
var blockFieldConfigSchema =
|
|
34164
|
-
options:
|
|
35124
|
+
var blockFieldConfigSchema = z70.object({
|
|
35125
|
+
options: z70.array(fieldSelectOptionSchema).min(1, "At least one option is required").optional()
|
|
34165
35126
|
});
|
|
34166
|
-
var blockFieldOptionsSchema =
|
|
34167
|
-
|
|
35127
|
+
var blockFieldOptionsSchema = z70.record(
|
|
35128
|
+
z70.string().regex(/^(block\.|custom\.)[a-z][a-z0-9-]*$/, {
|
|
34168
35129
|
message: "Block ID must be 'block.*' or 'custom.*' format"
|
|
34169
35130
|
}),
|
|
34170
|
-
|
|
34171
|
-
|
|
35131
|
+
z70.record(
|
|
35132
|
+
z70.string().min(1, "Field ID is required"),
|
|
34172
35133
|
blockFieldConfigSchema
|
|
34173
35134
|
)
|
|
34174
35135
|
).optional();
|
|
34175
|
-
var blockFieldExtensionSchema =
|
|
35136
|
+
var blockFieldExtensionSchema = z70.object({
|
|
34176
35137
|
fields: fieldSchema.array().min(1, "At least one field is required")
|
|
34177
35138
|
}).refine(
|
|
34178
35139
|
(data) => {
|
|
@@ -34186,10 +35147,10 @@ var blockFieldExtensionSchema = z69.object({
|
|
|
34186
35147
|
message: "Required fields must have a defaultValue to support existing blocks"
|
|
34187
35148
|
}
|
|
34188
35149
|
);
|
|
34189
|
-
var blockFieldExtensionsMapSchema =
|
|
35150
|
+
var blockFieldExtensionsMapSchema = z70.record(
|
|
34190
35151
|
// System blocks are kebab-case: block.body-text, block.event-calendar, ...
|
|
34191
35152
|
// Enforce: lowercase alphanumerics with single hyphens (no trailing hyphen, no consecutive hyphens).
|
|
34192
|
-
|
|
35153
|
+
z70.string().regex(/^block\.[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, {
|
|
34193
35154
|
message: "Block ID must be 'block.*' format (system blocks only)"
|
|
34194
35155
|
}),
|
|
34195
35156
|
blockFieldExtensionSchema
|
|
@@ -34205,7 +35166,7 @@ var blockFieldExtensionsMapSchema = z69.record(
|
|
|
34205
35166
|
(field) => field.id === collision.fieldId
|
|
34206
35167
|
);
|
|
34207
35168
|
ctx.addIssue({
|
|
34208
|
-
code:
|
|
35169
|
+
code: z70.ZodIssueCode.custom,
|
|
34209
35170
|
message: collision.message,
|
|
34210
35171
|
path: [
|
|
34211
35172
|
APPOINTMENT_BOOKING_BLOCK_ID,
|
|
@@ -34220,24 +35181,24 @@ var blockFieldExtensionsSchema = blockFieldExtensionsMapSchema.optional();
|
|
|
34220
35181
|
function collectAppointmentBookingExtensionReservedFieldCollisions(extension) {
|
|
34221
35182
|
return collectBookingReservedFieldCollisions(extension, { type: "booking" });
|
|
34222
35183
|
}
|
|
34223
|
-
var syncConfigSchema =
|
|
34224
|
-
existingEntries:
|
|
35184
|
+
var syncConfigSchema = z70.object({
|
|
35185
|
+
existingEntries: z70.enum(["skip", "update"]).optional()
|
|
34225
35186
|
}).optional();
|
|
34226
|
-
var deployConfigSchema =
|
|
34227
|
-
verifyCommand:
|
|
34228
|
-
prebuildOutput:
|
|
35187
|
+
var deployConfigSchema = z70.object({
|
|
35188
|
+
verifyCommand: z70.string().optional(),
|
|
35189
|
+
prebuildOutput: z70.string().optional()
|
|
34229
35190
|
}).optional();
|
|
34230
|
-
var sdkCustomBlockSchema =
|
|
35191
|
+
var sdkCustomBlockSchema = z70.object({
|
|
34231
35192
|
// Block ID must start with 'custom.'
|
|
34232
|
-
id:
|
|
35193
|
+
id: z70.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
|
|
34233
35194
|
message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
|
|
34234
35195
|
}),
|
|
34235
|
-
title:
|
|
35196
|
+
title: z70.string().min(1, "Title is required"),
|
|
34236
35197
|
titleSource: titleSourceValueSchema.optional(),
|
|
34237
|
-
description:
|
|
35198
|
+
description: z70.string().optional(),
|
|
34238
35199
|
category: blockCategoryEnum,
|
|
34239
|
-
icon:
|
|
34240
|
-
tags:
|
|
35200
|
+
icon: z70.string().optional(),
|
|
35201
|
+
tags: z70.array(z70.string()).optional(),
|
|
34241
35202
|
// Reuse the exact field schema from @riverbankcms/blocks - all field types supported
|
|
34242
35203
|
fields: fieldSchema.array().min(1, "Custom blocks must have at least one field"),
|
|
34243
35204
|
// Data loaders for CMS endpoints
|
|
@@ -34245,14 +35206,14 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34245
35206
|
// Optional declarative layout - when present, block can render without React override
|
|
34246
35207
|
layout: NodeSchema.optional(),
|
|
34247
35208
|
// Optional variants system (preferred when a block has multiple structural layouts)
|
|
34248
|
-
variants:
|
|
34249
|
-
defaultVariant:
|
|
34250
|
-
variantOptions:
|
|
34251
|
-
|
|
34252
|
-
|
|
34253
|
-
label:
|
|
34254
|
-
description:
|
|
34255
|
-
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()
|
|
34256
35217
|
})
|
|
34257
35218
|
).optional()
|
|
34258
35219
|
}).superRefine((data, ctx) => {
|
|
@@ -34263,7 +35224,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34263
35224
|
const exists = fields3.some((field) => field.id === source);
|
|
34264
35225
|
if (!exists) {
|
|
34265
35226
|
ctx.addIssue({
|
|
34266
|
-
code:
|
|
35227
|
+
code: z70.ZodIssueCode.custom,
|
|
34267
35228
|
message: `titleSource must reference a valid field ID (got "${source}")`,
|
|
34268
35229
|
path: Array.isArray(data.titleSource) ? ["titleSource", index] : ["titleSource"]
|
|
34269
35230
|
});
|
|
@@ -34272,7 +35233,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34272
35233
|
}
|
|
34273
35234
|
if (data.layout && data.variants) {
|
|
34274
35235
|
ctx.addIssue({
|
|
34275
|
-
code:
|
|
35236
|
+
code: z70.ZodIssueCode.custom,
|
|
34276
35237
|
message: "Custom block must define either `layout` or `variants`, not both",
|
|
34277
35238
|
path: ["variants"]
|
|
34278
35239
|
});
|
|
@@ -34282,7 +35243,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34282
35243
|
if (!result.valid) {
|
|
34283
35244
|
for (const error of result.errors) {
|
|
34284
35245
|
ctx.addIssue({
|
|
34285
|
-
code:
|
|
35246
|
+
code: z70.ZodIssueCode.custom,
|
|
34286
35247
|
message: error.message,
|
|
34287
35248
|
path: ["layout"]
|
|
34288
35249
|
});
|
|
@@ -34293,14 +35254,14 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34293
35254
|
const keys = Object.keys(data.variants);
|
|
34294
35255
|
if (keys.length === 0) {
|
|
34295
35256
|
ctx.addIssue({
|
|
34296
|
-
code:
|
|
35257
|
+
code: z70.ZodIssueCode.custom,
|
|
34297
35258
|
message: "`variants` must contain at least one variant key",
|
|
34298
35259
|
path: ["variants"]
|
|
34299
35260
|
});
|
|
34300
35261
|
}
|
|
34301
35262
|
if (data.defaultVariant && !Object.prototype.hasOwnProperty.call(data.variants, data.defaultVariant)) {
|
|
34302
35263
|
ctx.addIssue({
|
|
34303
|
-
code:
|
|
35264
|
+
code: z70.ZodIssueCode.custom,
|
|
34304
35265
|
message: "`defaultVariant` must be a key present in `variants`",
|
|
34305
35266
|
path: ["defaultVariant"]
|
|
34306
35267
|
});
|
|
@@ -34310,7 +35271,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34310
35271
|
if (!result.valid) {
|
|
34311
35272
|
for (const error of result.errors) {
|
|
34312
35273
|
ctx.addIssue({
|
|
34313
|
-
code:
|
|
35274
|
+
code: z70.ZodIssueCode.custom,
|
|
34314
35275
|
message: `${key}: ${error.message}`,
|
|
34315
35276
|
path: ["variants", key]
|
|
34316
35277
|
});
|
|
@@ -34321,7 +35282,7 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34321
35282
|
for (const key of Object.keys(data.variantOptions)) {
|
|
34322
35283
|
if (!Object.prototype.hasOwnProperty.call(data.variants, key)) {
|
|
34323
35284
|
ctx.addIssue({
|
|
34324
|
-
code:
|
|
35285
|
+
code: z70.ZodIssueCode.custom,
|
|
34325
35286
|
message: "`variantOptions` key must exist in `variants`",
|
|
34326
35287
|
path: ["variantOptions", key]
|
|
34327
35288
|
});
|
|
@@ -34330,58 +35291,58 @@ var sdkCustomBlockSchema = z69.object({
|
|
|
34330
35291
|
}
|
|
34331
35292
|
}
|
|
34332
35293
|
});
|
|
34333
|
-
var themeSourceSchema =
|
|
34334
|
-
var activeThemeSchema =
|
|
35294
|
+
var themeSourceSchema = z70.enum(["local", "cms"]).optional();
|
|
35295
|
+
var activeThemeSchema = z70.string().regex(/^[a-z0-9][a-z0-9-_]*$/, {
|
|
34335
35296
|
message: "Theme name must be lowercase alphanumeric with hyphens/underscores"
|
|
34336
35297
|
}).max(64, "Theme name too long").optional();
|
|
34337
35298
|
function isValidConfigBlockKind(kind) {
|
|
34338
35299
|
if (getBlockDefinition(kind)) return true;
|
|
34339
35300
|
return /^custom\.[a-z][a-z0-9-]*$/.test(kind);
|
|
34340
35301
|
}
|
|
34341
|
-
var layoutBlockKindSchema =
|
|
35302
|
+
var layoutBlockKindSchema = z70.string().refine(isValidConfigBlockKind, {
|
|
34342
35303
|
message: 'Block kind must be a system block (e.g., "block.hero") or a custom block (e.g., "custom.my-block")'
|
|
34343
35304
|
});
|
|
34344
|
-
var layoutFooterBlockSchema =
|
|
34345
|
-
id:
|
|
35305
|
+
var layoutFooterBlockSchema = z70.object({
|
|
35306
|
+
id: z70.string().min(1).optional(),
|
|
34346
35307
|
kind: layoutBlockKindSchema,
|
|
34347
35308
|
// Allow omitted content for blocks that rely on defaults.
|
|
34348
|
-
content:
|
|
35309
|
+
content: z70.record(z70.string(), z70.unknown()).optional()
|
|
34349
35310
|
}).strict();
|
|
34350
|
-
var layoutConfigSchema =
|
|
34351
|
-
footerBlocks:
|
|
35311
|
+
var layoutConfigSchema = z70.object({
|
|
35312
|
+
footerBlocks: z70.array(layoutFooterBlockSchema).optional()
|
|
34352
35313
|
}).strict();
|
|
34353
|
-
var sdkWorkflowIdSchema2 =
|
|
35314
|
+
var sdkWorkflowIdSchema2 = z70.string().min(1).max(SDK_WORKFLOW_ID_MAX_LENGTH).regex(SDK_WORKFLOW_ID_PATTERN, {
|
|
34354
35315
|
message: "Workflow ID must start with a lowercase letter and use lowercase letters, numbers, dots, underscores, or hyphens"
|
|
34355
35316
|
});
|
|
34356
|
-
var sdkWorkflowEndpointSchema2 =
|
|
34357
|
-
var sdkWorkflowTriggerSchema2 =
|
|
34358
|
-
|
|
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()
|
|
34359
35320
|
]);
|
|
34360
|
-
var sdkWorkflowConfirmationSchema2 =
|
|
34361
|
-
title:
|
|
34362
|
-
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()
|
|
34363
35324
|
}).strict();
|
|
34364
|
-
var sdkWorkflowConfigSchema2 =
|
|
35325
|
+
var sdkWorkflowConfigSchema2 = z70.object({
|
|
34365
35326
|
id: sdkWorkflowIdSchema2,
|
|
34366
|
-
title:
|
|
34367
|
-
description:
|
|
34368
|
-
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),
|
|
34369
35330
|
endpoint: sdkWorkflowEndpointSchema2,
|
|
34370
|
-
triggers:
|
|
35331
|
+
triggers: z70.array(sdkWorkflowTriggerSchema2).min(1).max(SDK_WORKFLOW_TRIGGER_MAX_COUNT),
|
|
34371
35332
|
confirmation: sdkWorkflowConfirmationSchema2.optional()
|
|
34372
35333
|
}).strict();
|
|
34373
|
-
var sdkWorkflowsSchema2 =
|
|
35334
|
+
var sdkWorkflowsSchema2 = z70.array(sdkWorkflowConfigSchema2).max(SDK_WORKFLOW_MAX_COUNT, "Maximum 50 workflows per site").refine((workflows) => {
|
|
34374
35335
|
const ids = workflows.map((workflow) => workflow.id);
|
|
34375
35336
|
return ids.length === new Set(ids).size;
|
|
34376
35337
|
}, { message: "Workflow IDs must be unique" }).optional();
|
|
34377
|
-
var riverbankSiteConfigSchema =
|
|
34378
|
-
siteId:
|
|
35338
|
+
var riverbankSiteConfigSchema = z70.object({
|
|
35339
|
+
siteId: z70.string().uuid(),
|
|
34379
35340
|
previewUrl: sdkSiteUrlSchema.optional(),
|
|
34380
35341
|
liveUrl: sdkSiteUrlSchema.optional(),
|
|
34381
35342
|
theme: sdkThemeConfigSchema2.optional(),
|
|
34382
35343
|
styles: siteStyleConfigSchema,
|
|
34383
35344
|
layout: layoutConfigSchema.optional(),
|
|
34384
|
-
customBlocks:
|
|
35345
|
+
customBlocks: z70.array(sdkCustomBlockSchema).max(100, "Maximum 100 custom blocks per site").refine(
|
|
34385
35346
|
// Ensure unique block IDs
|
|
34386
35347
|
(blocks) => {
|
|
34387
35348
|
const ids = blocks.map((b) => b.id);
|
|
@@ -34394,7 +35355,7 @@ var riverbankSiteConfigSchema = z69.object({
|
|
|
34394
35355
|
workflows: sdkWorkflowsSchema2,
|
|
34395
35356
|
content: contentConfigSchema.optional(),
|
|
34396
35357
|
// CLI-related configuration (Phase 4)
|
|
34397
|
-
contentDir:
|
|
35358
|
+
contentDir: z70.string().optional(),
|
|
34398
35359
|
sync: syncConfigSchema,
|
|
34399
35360
|
deploy: deployConfigSchema,
|
|
34400
35361
|
// Theme sync configuration (Phase 5)
|