@riverbankcms/sdk 0.140.0 → 0.142.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.
Files changed (145) hide show
  1. package/dist/{PreviewEditorSidebar-CUyTzd5z.mjs → PreviewEditorSidebar-Dk6Dt11f.mjs} +24 -15
  2. package/dist/{PreviewEditorUI-Agkw4v5i.mjs → PreviewEditorUI-D6EQTsCA.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-CN0ewic5.mjs → PreviewQueryProvider-CC-EPkyQ.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-DdbeAdS8.mjs → SdkPreviewModeRuntime-DH1n4ytY.mjs} +85 -54
  5. package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-DunIzY0K.mjs} +797 -216
  6. package/dist/_dts/api/src/billing.d.ts +6 -1
  7. package/dist/_dts/api/src/bookingConfig.d.ts +1 -1
  8. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
  9. package/dist/_dts/api/src/contentRuntime.d.ts +12 -31
  10. package/dist/_dts/api/src/domainConnection.d.ts +4 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +0 -27
  12. package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
  13. package/dist/_dts/api/src/index.d.ts +2 -2
  14. package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
  15. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
  16. package/dist/_dts/api/src/publicBookingService.d.ts +1 -0
  17. package/dist/_dts/api/src/sdkConfig/layout.d.ts +13 -0
  18. package/dist/_dts/api/src/sdkContracts.d.ts +3 -8
  19. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -26
  20. package/dist/_dts/api/src/siteOnboarding.d.ts +7 -0
  21. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -31
  22. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -1
  23. package/dist/_dts/billing/src/site-arrangements.d.ts +18 -5
  24. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -0
  25. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  26. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
  27. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
  28. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
  29. package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
  30. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +56 -0
  31. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +8 -0
  32. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  33. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  34. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +5 -0
  35. package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
  37. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -180
  38. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -90
  39. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
  40. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +5 -1
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
  45. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -5
  47. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
  48. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
  49. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
  50. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +11 -101
  51. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +63 -2
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
  53. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
  54. package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
  55. package/dist/_dts/commerce/src/purchase/stripeCommissionMetadata.d.ts +1 -2
  56. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3102 -3122
  57. package/dist/_dts/editor-blocks/src/block-editor/ColourFieldOptionsProvider.d.ts +7 -0
  58. package/dist/_dts/editor-blocks/src/block-editor/colourFieldVisibility.d.ts +7 -0
  59. package/dist/_dts/editor-blocks/src/block-editor/preparedManifest.d.ts +2 -0
  60. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  61. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
  62. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -2
  63. package/dist/_dts/preview-next/src/client/preview/PreviewFooterEditorPanel.d.ts +3 -6
  64. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -2
  65. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -2
  66. package/dist/_dts/preview-next/src/client/preview/footerInspection.d.ts +16 -0
  67. package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +6 -0
  68. package/dist/_dts/sdk/src/config/types.d.ts +2 -18
  69. package/dist/_dts/sdk/src/config/validation.d.ts +6 -0
  70. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -1
  71. package/dist/_dts/sdk/src/version.d.ts +1 -1
  72. package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
  73. package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
  74. package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
  75. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
  76. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
  77. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
  78. package/dist/_dts/theme-core/src/footer/mode.d.ts +10 -1
  79. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  80. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
  81. package/dist/_dts/theme-core/src/index.d.ts +1 -1
  82. package/dist/_dts/theme-core/src/schema.d.ts +1 -7
  83. package/dist/_dts/theme-core/src/site-styles/effectivePageDesign.d.ts +32 -0
  84. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  85. package/dist/client/{BookingConsentAgreement-CuKa82V4.mjs → BookingConsentAgreement-CnJeq3_r.mjs} +2 -2
  86. package/dist/client/{DiscountCodeDisclosure-BbYieKWB.mjs → DiscountCodeDisclosure-BINEO6J9.mjs} +1 -1
  87. package/dist/client/{EventCombined.client-LTfR1Aby.mjs → EventCombined.client-srxNQ6sZ.mjs} +11 -15
  88. package/dist/client/{EventListing.client-DUHpYSuo.mjs → EventListing.client-DbyVyGkX.mjs} +4 -17
  89. package/dist/client/{LeafletStaticMap-CHRupL6m.mjs → LeafletStaticMap-B-wpijzL.mjs} +1 -1
  90. package/dist/client/{accordion-6HiIFxNL.mjs → accordion-B-iUXU7n.mjs} +1 -1
  91. package/dist/client/{bookingForm-Dlmid43H.mjs → bookingForm-BXYPke5q.mjs} +5 -5
  92. package/dist/client/bookings.mjs +194 -102
  93. package/dist/client/{carousel-DmkZRRq_.mjs → carousel-Cr4aj63H.mjs} +1 -1
  94. package/dist/client/{cart-CIC24330.mjs → cart-DibP9WWa.mjs} +3 -3
  95. package/dist/client/{checkout-D1Zw9imo.mjs → checkout-CrSBVnL8.mjs} +3 -3
  96. package/dist/client/client.mjs +643 -192
  97. package/dist/client/{context-Cy1OayHx.mjs → context-Ces-AgdR.mjs} +1 -1
  98. package/dist/client/{dates-aDcfoLHr.mjs → dates-BXyNeNhB.mjs} +2 -2
  99. package/dist/client/{eventCalendar-FQxMPAjf.mjs → eventCalendar-HwpPeqrH.mjs} +11 -7
  100. package/dist/client/{eventCombined-Dr3ac6Hb.mjs → eventCombined-BpFUkuEI.mjs} +3 -3
  101. package/dist/client/{eventDetails-D-AzUHFQ.mjs → eventDetails-DK_agiWy.mjs} +4 -4
  102. package/dist/client/{eventListing-B3XxBf3i.mjs → eventListing-DhzHqP1c.mjs} +3 -3
  103. package/dist/client/{eventRegistration-I6EaokFD.mjs → eventRegistration-BdQ_Dn2d.mjs} +124 -32
  104. package/dist/client/{form-BbWckVWY.mjs → form-B1frcuzy.mjs} +2 -2
  105. package/dist/client/{headerSection-C9qU4Y7x.mjs → headerSection-CT5z460s.mjs} +2 -2
  106. package/dist/client/hooks.mjs +274 -45
  107. package/dist/client/{locationMap-CLCShvlG.mjs → locationMap-CIQXB9i2.mjs} +2 -2
  108. package/dist/client/{newsletterForm-Briukxzi.mjs → newsletterForm-BYNYZSes.mjs} +23 -10
  109. package/dist/client/{pricing-Copadu-2.mjs → pricing-CbTlAsmt.mjs} +1 -1
  110. package/dist/client/{productDetail-oujlRd-r.mjs → productDetail-CR7Z3yjS.mjs} +3 -3
  111. package/dist/client/{productList-BRiIRUcd.mjs → productList-DXj00vzR.mjs} +3 -3
  112. package/dist/client/{propsDecoder-CB2KS_ko.mjs → propsDecoder-DiLiBdek.mjs} +57 -16
  113. package/dist/client/rendering/client.mjs +476 -132
  114. package/dist/client/rendering/islands.mjs +17 -17
  115. package/dist/client/rendering.mjs +686 -195
  116. package/dist/client/{scrollToBlock-B1IS1_ua.mjs → scrollToBlock-CrcbBf0h.mjs} +28 -11
  117. package/dist/client/{shop-Vn6yNFED.mjs → shop-DgqiB_1b.mjs} +6 -6
  118. package/dist/client/{shop-commerce-BVTqipYp.mjs → shop-commerce-D_J781in.mjs} +5 -5
  119. package/dist/client/{shop-commerce-store-BVnJVy7v.mjs → shop-commerce-store-PGUbDwqe.mjs} +1 -1
  120. package/dist/client/{shopShared-COIeK77T.mjs → shopShared-C_Bb2zwG.mjs} +3 -3
  121. package/dist/client/{useEventFilters-DzIUcS9n.mjs → useEventFilters-CM17Xpr1.mjs} +17 -11
  122. package/dist/preview-next/before-render.mjs +0 -37
  123. package/dist/preview-next/client/runtime.mjs +4 -4
  124. package/dist/preview-next/editor-chrome.css +4 -8
  125. package/dist/preview-next/keepAlive.mjs +0 -37
  126. package/dist/preview-next/middleware.mjs +0 -37
  127. package/dist/{previewAuthStore-Gjb6r6vz.mjs → previewAuthStore-oVttoRDO.mjs} +0 -37
  128. package/dist/{sdk-runtime-CnCLvZRv.mjs → sdk-runtime-DhmuRhIX.mjs} +2 -2
  129. package/dist/{separator-DKDRJ1oH.mjs → separator-C3hlg9LH.mjs} +1 -1
  130. package/dist/server/components.mjs +452 -111
  131. package/dist/server/config-validation.mjs +263 -40
  132. package/dist/server/config.mjs +263 -40
  133. package/dist/server/data.mjs +274 -45
  134. package/dist/server/index.mjs +1 -38
  135. package/dist/server/next.mjs +427 -119
  136. package/dist/server/page-converter.mjs +208 -33
  137. package/dist/server/prebuild.mjs +1 -1
  138. package/dist/server/rendering/server.mjs +467 -119
  139. package/dist/server/rendering.mjs +467 -117
  140. package/dist/server/routing.mjs +301 -50
  141. package/dist/server/server.mjs +275 -83
  142. package/dist/server/theme-bridge.mjs +57 -23
  143. package/dist/server/theme.mjs +11 -9
  144. package/dist/styles/index.css +28 -2
  145. package/package.json +1 -1
@@ -2535,6 +2535,17 @@ var init_src$3 = __esmMin((() => {
2535
2535
  init_contentMediaAudit();
2536
2536
  init_contentMediaAuditFieldAdapter();
2537
2537
  init_contentMediaSnapshotAudit();
2538
+ }));
2539
+ //#endregion
2540
+ //#region ../theme-core/src/footer/mode.ts
2541
+ var footerModeSchema;
2542
+ var init_mode = __esmMin((() => {
2543
+ footerModeSchema = z.enum([
2544
+ "default",
2545
+ "blocks",
2546
+ "default+blocks",
2547
+ "none"
2548
+ ]);
2538
2549
  })), hotspotSchema, rotationSchema, rectSchema, aspectCropSchema, transformSchema, mediaPosterSchema, mediaBaseSchema, mediaIdentifierSchema, imageMediaSchema, videoMediaSchema, audioMediaSchema, documentMediaSchema, spreadsheetMediaSchema, archiveMediaSchema, mediaSchema, persistableMediaBaseSchema;
2539
2550
  var init_media$4 = __esmMin((() => {
2540
2551
  hotspotSchema = z.object({
@@ -3646,7 +3657,7 @@ var init_buttonColourContract = __esmMin((() => {
3646
3657
  nonTextMinimumRatio: 3,
3647
3658
  gradientSamplesPerSegment: 20,
3648
3659
  alphaBackgrounds: "reject-without-known-surface",
3649
- disabled: "retain-full-colour-contract"
3660
+ disabled: "validated-colour-pair-with-muted-control-opacity"
3650
3661
  };
3651
3662
  }));
3652
3663
  //#endregion
@@ -8165,8 +8176,9 @@ var init_boxBackgroundSchema = __esmMin((() => {
8165
8176
  showVideoOnMobile: z.boolean().nullable().optional()
8166
8177
  })
8167
8178
  ]);
8168
- })), axesSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle, headerPositioningValues, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, testimonialQuoteTreatmentSchema, themeSchema;
8179
+ })), axesSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle, headerPositioningValues, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, testimonialQuoteTreatmentSchema, themeSchema;
8169
8180
  var init_schema$3 = __esmMin((() => {
8181
+ init_mode();
8170
8182
  init_media$4();
8171
8183
  init_schema$4();
8172
8184
  init_buttons();
@@ -8665,12 +8677,6 @@ var init_schema$3 = __esmMin((() => {
8665
8677
  "split"
8666
8678
  ]);
8667
8679
  footerMaxWidth = z.enum(["container", "full"]);
8668
- footerMode = z.enum([
8669
- "default",
8670
- "blocks",
8671
- "default+blocks",
8672
- "none"
8673
- ]);
8674
8680
  footerNavLayoutMode = z.enum([
8675
8681
  "stack",
8676
8682
  "inline",
@@ -8759,9 +8765,9 @@ var init_schema$3 = __esmMin((() => {
8759
8765
  /**
8760
8766
  * SDK-only footer rendering mode.
8761
8767
  *
8762
- * Backwards compatible: missing/undefined behaves as 'default'.
8768
+ * Historical persisted field; SDK rendering mode now lives in layout.footerMode.
8763
8769
  */
8764
- mode: footerMode.optional(),
8770
+ mode: footerModeSchema.optional(),
8765
8771
  variant: footerVariant,
8766
8772
  maxWidth: footerMaxWidth,
8767
8773
  showLogoText: z.boolean().optional(),
@@ -9332,6 +9338,15 @@ var init_schemas = __esmMin((() => {
9332
9338
  timeZone: z.string(),
9333
9339
  pricing: publicEventPricingSchema,
9334
9340
  paymentTerms: blockBookingPaymentTermsSchema,
9341
+ cancellationPolicy: z.object({ refunds: z.object({
9342
+ mode: z.enum([
9343
+ "never",
9344
+ "always",
9345
+ "cutoff"
9346
+ ]),
9347
+ cutoffHours: z.number(),
9348
+ method: z.enum(["original_payment_method", "site_credit"])
9349
+ }) }),
9335
9350
  consent: blockBookingConsentSchema.nullable(),
9336
9351
  accessRestriction: accessRestrictionSchema,
9337
9352
  allowedCategoryIds: z.array(z.string()),
@@ -9511,6 +9526,7 @@ var init_calendarWindow = __esmMin((() => {
9511
9526
  eventSurface: z.enum(eventSurfaceScopeValues).optional(),
9512
9527
  eventPresets: z.string().optional(),
9513
9528
  scheduleScope: z.enum(eventScheduleScopeValues).optional(),
9529
+ seriesIds: z.string().optional(),
9514
9530
  categoryIds: z.string().optional(),
9515
9531
  venueId: z.string().transform(normalizeCalendarFilterId).optional(),
9516
9532
  staffMemberId: z.string().transform(normalizeCalendarFilterId).optional()
@@ -19318,6 +19334,12 @@ var init_headerOpeningForeground = __esmMin((() => {
19318
19334
  init_tokens();
19319
19335
  }));
19320
19336
  //#endregion
19337
+ //#region ../theme-core/src/site-styles/effectivePageDesign.ts
19338
+ var init_effectivePageDesign = __esmMin((() => {
19339
+ init_pageDesignIntent();
19340
+ init_siteStyleBlockPolicies();
19341
+ }));
19342
+ //#endregion
19321
19343
  //#region ../theme-core/src/site-styles/pageDesignAuthority.ts
19322
19344
  function validateBlockSequence(snapshots, ctx) {
19323
19345
  for (const issue of collectBlockSequenceIssues(snapshots)) ctx.addIssue(issue);
@@ -19521,6 +19543,7 @@ var init_site_styles = __esmMin((() => {
19521
19543
  init_lookResolution();
19522
19544
  init_lookOptionGroups();
19523
19545
  init_logoBranding();
19546
+ init_effectivePageDesign();
19524
19547
  init_pageDesignAuthority();
19525
19548
  init_pageDesignEditorErrors();
19526
19549
  init_pageDesignEditorCapabilities();
@@ -19548,9 +19571,6 @@ var init_site_styles = __esmMin((() => {
19548
19571
  init_types$7();
19549
19572
  }));
19550
19573
  //#endregion
19551
- //#region ../theme-core/src/footer/mode.ts
19552
- var init_mode = __esmMin((() => {}));
19553
- //#endregion
19554
19574
  //#region ../theme-core/src/styles/shadow.ts
19555
19575
  var init_shadow = __esmMin((() => {
19556
19576
  init_colorStyles();
@@ -21021,6 +21041,7 @@ var init_schema = __esmMin((() => {
21021
21041
  ];
21022
21042
  siteOptionSources = [
21023
21043
  "eventCategories",
21044
+ "eventSeries",
21024
21045
  "venues",
21025
21046
  "staffMembers"
21026
21047
  ];
@@ -34505,7 +34526,8 @@ var init_appointment_services = __esmMin((() => {
34505
34526
  el$1("appointment-services", {
34506
34527
  sectionHeading: { $bind: { from: "content.heading" } },
34507
34528
  services: { $bind: { from: "data.services" } },
34508
- pathname: { $bind: { from: "$root.pathname" } }
34529
+ pathname: { $bind: { from: "$root.pathname" } },
34530
+ servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
34509
34531
  })
34510
34532
  ], { gap: "lg" })
34511
34533
  })]
@@ -36171,6 +36193,38 @@ var init_event_spotlight = __esmMin((() => {
36171
36193
  };
36172
36194
  }));
36173
36195
  //#endregion
36196
+ //#region ../blocks/src/system/blocks/events/shared/eventSelection.ts
36197
+ /** Invalid saved selections fail closed rather than widening discovery. */
36198
+ function resolveEventSelection(mode, value) {
36199
+ if (mode !== "selected") return { kind: "matching" };
36200
+ const candidates = Array.isArray(value) ? value : typeof value === "string" ? value.split(",").filter(Boolean) : [];
36201
+ const ids = [];
36202
+ for (const candidate of candidates) {
36203
+ if (typeof candidate !== "string") return {
36204
+ kind: "selected",
36205
+ seriesIds: []
36206
+ };
36207
+ const parsed = parseEventSeriesId(candidate.trim());
36208
+ if (!parsed.ok) return {
36209
+ kind: "selected",
36210
+ seriesIds: []
36211
+ };
36212
+ ids.push(parsed.value);
36213
+ }
36214
+ return {
36215
+ kind: "selected",
36216
+ seriesIds: [...new Set(ids)].sort()
36217
+ };
36218
+ }
36219
+ /** Undefined means discovery; an empty string is an explicitly empty selection. */
36220
+ function eventSeriesScopeCsv(value) {
36221
+ if (value == null) return void 0;
36222
+ return typeof value === "string" ? value : value.join(",");
36223
+ }
36224
+ var init_eventSelection = __esmMin((() => {
36225
+ init_src$4();
36226
+ }));
36227
+ //#endregion
36174
36228
  //#region ../blocks/src/system/runtime/nodes/events/shared/listingLayout.ts
36175
36229
  /**
36176
36230
  * Build container class based on layout mode
@@ -36284,11 +36338,15 @@ function buildEventCollectionDisplay(source) {
36284
36338
  };
36285
36339
  }
36286
36340
  function buildEventCollectionFilterDisplay(source) {
36287
- return {
36288
- showFilters: source.showFilters ?? true,
36289
- showCategoryFilter: source.showCategoryFilter ?? "auto",
36290
- showVenueFilter: source.showVenueFilter ?? false,
36291
- showStaffFilter: source.showStaffFilter ?? true,
36341
+ const selected = source.seriesIds != null;
36342
+ const matchingFilters = selected ? {
36343
+ eventSurface: "all",
36344
+ filterEventPresets: null,
36345
+ scheduleScope: "any",
36346
+ filterCategoryIds: null,
36347
+ filterStaffMemberId: null,
36348
+ filterVenueId: null
36349
+ } : {
36292
36350
  eventSurface: normalizeEventSurfaceScope(source.eventSurface),
36293
36351
  filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
36294
36352
  scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
@@ -36296,6 +36354,14 @@ function buildEventCollectionFilterDisplay(source) {
36296
36354
  filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
36297
36355
  filterVenueId: normalizeEventVenueId(source.filterVenueId)
36298
36356
  };
36357
+ return {
36358
+ seriesIds: eventSeriesScopeCsv(source.seriesIds),
36359
+ showFilters: selected ? false : source.showFilters ?? true,
36360
+ showCategoryFilter: source.showCategoryFilter ?? "auto",
36361
+ showVenueFilter: source.showVenueFilter ?? false,
36362
+ showStaffFilter: source.showStaffFilter ?? true,
36363
+ ...matchingFilters
36364
+ };
36299
36365
  }
36300
36366
  function buildEventCollectionPresentationDisplay(source) {
36301
36367
  return {
@@ -36310,14 +36376,15 @@ function buildEventCollectionPresentationDisplay(source) {
36310
36376
  }
36311
36377
  function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
36312
36378
  const timeZone = source.calendarWindow?.scope.timeZone ?? toBookingTimeZone(source.bookingTimeZone);
36379
+ const selected = source.seriesIds != null;
36313
36380
  return {
36314
36381
  calendarWindow: source.calendarWindow ?? void 0,
36315
36382
  siteId: source.siteId,
36316
36383
  stage: source.stage,
36317
36384
  prefetchedEvents: source.events != null,
36318
- eventSurface: normalizeEventSurfaceScope(source.eventSurface),
36319
- filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
36320
- scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
36385
+ eventSurface: selected ? "all" : normalizeEventSurfaceScope(source.eventSurface),
36386
+ filterEventPresets: selected ? null : normalizeEventSurfacePresetsCsv(source.filterEventPresets),
36387
+ scheduleScope: selected ? "any" : normalizeEventScheduleScope(source.scheduleScope),
36321
36388
  calendarContext: {
36322
36389
  timeZone,
36323
36390
  initialToday: source.calendarWindow?.initialToday ?? getLocalScheduleDate(now, timeZone)
@@ -36325,6 +36392,7 @@ function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date())
36325
36392
  };
36326
36393
  }
36327
36394
  var eventSurfaceScopeSchema$1, eventScheduleScopeSchema$1, eventCollectionFilterSourceSchemaShape, eventCollectionSourceSchemaShape, eventCollectionDisplaySchemaShape, eventCollectionHydrationSchema, init_eventCollectionContract = __esmMin((() => {
36395
+ init_eventSelection();
36328
36396
  init_calendarWindow();
36329
36397
  init_cards();
36330
36398
  init_src$4();
@@ -36342,6 +36410,7 @@ var eventSurfaceScopeSchema$1, eventScheduleScopeSchema$1, eventCollectionFilter
36342
36410
  eventSurface: eventSurfaceScopeSchema$1.nullable().optional(),
36343
36411
  filterEventPresets: z.union([z.string(), z.array(z.string())]).nullable().optional(),
36344
36412
  scheduleScope: eventScheduleScopeSchema$1.nullable().optional(),
36413
+ seriesIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
36345
36414
  filterCategoryIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
36346
36415
  filterStaffMemberId: z.string().nullable().optional(),
36347
36416
  filterVenueId: z.string().nullable().optional()
@@ -36388,6 +36457,7 @@ var eventSurfaceScopeSchema$1, eventScheduleScopeSchema$1, eventCollectionFilter
36388
36457
  eventSurface: eventSurfaceScopeSchema$1,
36389
36458
  filterEventPresets: z.string().nullable(),
36390
36459
  scheduleScope: eventScheduleScopeSchema$1,
36460
+ seriesIds: z.string().nullable().optional(),
36391
36461
  filterCategoryIds: z.string().nullable(),
36392
36462
  filterStaffMemberId: z.string().nullable(),
36393
36463
  filterVenueId: z.string().nullable(),
@@ -36418,6 +36488,7 @@ var eventSurfaceScopeSchema$1, eventScheduleScopeSchema$1, eventCollectionFilter
36418
36488
  });
36419
36489
  })), cardOrientationSchema, eventSurfaceScopeSchema, eventScheduleScopeSchema, eventListingSourceSchema, eventListingDisplaySchema, eventListingHydrationSchema, eventListingRenderSchema, eventListingBlockRuntime;
36420
36490
  var init_EventListing_interactive = __esmMin((() => {
36491
+ init_eventSelection();
36421
36492
  init_cards();
36422
36493
  init_schemas();
36423
36494
  init_shared$2();
@@ -36484,6 +36555,7 @@ var init_EventListing_interactive = __esmMin((() => {
36484
36555
  eventSurface: eventSurfaceScopeSchema,
36485
36556
  filterEventPresets: z.string().nullable(),
36486
36557
  scheduleScope: eventScheduleScopeSchema,
36558
+ seriesIds: z.string().nullable().optional(),
36487
36559
  filterCategoryIds: z.string().nullable().optional(),
36488
36560
  filterStaffMemberId: z.string().nullable().optional(),
36489
36561
  filterVenueId: z.string().nullable().optional(),
@@ -36544,6 +36616,7 @@ var init_EventListing_interactive = __esmMin((() => {
36544
36616
  eventSurface: normalizeEventSurfaceScope(source.eventSurface),
36545
36617
  filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
36546
36618
  scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
36619
+ seriesIds: eventSeriesScopeCsv(source.seriesIds),
36547
36620
  filterCategoryIds: normalizeEventCategoryIdsCsv(source.filterCategoryIds),
36548
36621
  filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
36549
36622
  filterVenueId: normalizeEventVenueId(source.filterVenueId),
@@ -36936,6 +37009,69 @@ var init_event_listing = __esmMin((() => {
36936
37009
  };
36937
37010
  }));
36938
37011
  //#endregion
37012
+ //#region ../blocks/src/system/blocks/events/eventSelectionFields.ts
37013
+ function withEventSelectionVisibility(field) {
37014
+ if (![
37015
+ "eventSurface",
37016
+ "filterEventPresets",
37017
+ "scheduleScope",
37018
+ "filterCategoryIds",
37019
+ "filterStaffMemberId",
37020
+ "filterVenueId",
37021
+ "showFilters",
37022
+ "showCategoryFilter",
37023
+ "showVenueFilter",
37024
+ "showStaffFilter"
37025
+ ].includes(field.id)) return field;
37026
+ const visibleWhen = field.ui?.visibleWhen;
37027
+ return {
37028
+ ...field,
37029
+ ui: {
37030
+ ...field.ui,
37031
+ visibleWhen: { allOf: [{
37032
+ field: "eventSelection",
37033
+ notEquals: "selected"
37034
+ }, ...visibleWhen ? [visibleWhen] : []] }
37035
+ }
37036
+ };
37037
+ }
37038
+ var eventSelectionFields;
37039
+ var init_eventSelectionFields = __esmMin((() => {
37040
+ init_schema();
37041
+ eventSelectionFields = [{
37042
+ id: "eventSelection",
37043
+ type: "select",
37044
+ label: "Events to show",
37045
+ required: false,
37046
+ multiple: false,
37047
+ defaultValue: "matching",
37048
+ options: [{
37049
+ value: "matching",
37050
+ label: "All matching events"
37051
+ }, {
37052
+ value: "selected",
37053
+ label: "Selected events"
37054
+ }],
37055
+ ui: { intent: "behavior" }
37056
+ }, createSiteOptionSelectField({
37057
+ id: "selectedEventSeriesIds",
37058
+ label: "Selected events",
37059
+ description: "Show upcoming dates for these events. Other event filters do not apply.",
37060
+ required: false,
37061
+ multiple: true,
37062
+ defaultValue: [],
37063
+ optionSource: "eventSeries",
37064
+ ui: {
37065
+ intent: "behavior",
37066
+ searchThreshold: 1,
37067
+ visibleWhen: {
37068
+ field: "eventSelection",
37069
+ equals: "selected"
37070
+ }
37071
+ }
37072
+ })];
37073
+ }));
37074
+ //#endregion
36939
37075
  //#region ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
36940
37076
  /**
36941
37077
  * Collapse an optional/blank string to `undefined` so downstream week-board
@@ -37029,19 +37165,59 @@ var init_eventCalendarDataLoaders = __esmMin((() => {
37029
37165
  init_calendarWindow();
37030
37166
  scopeParams = {
37031
37167
  siteId: { $bind: { from: "$root.siteId" } },
37168
+ seriesIds: { $bind: {
37169
+ from: "content",
37170
+ transforms: [{
37171
+ id: "events.calendarSelectionParam",
37172
+ options: { key: "seriesIds" }
37173
+ }]
37174
+ } },
37032
37175
  stage: { $bind: {
37033
37176
  from: "$root.previewStage",
37034
37177
  fallback: "published"
37035
37178
  } },
37036
- eventSurface: { $bind: { from: "content.eventSurface" } },
37179
+ eventSurface: { $bind: {
37180
+ from: "content",
37181
+ transforms: [{
37182
+ id: "events.calendarSelectionParam",
37183
+ options: { key: "eventSurface" }
37184
+ }, { id: "value.csv" }]
37185
+ } },
37037
37186
  eventPresets: { $bind: {
37038
- from: "content.filterEventPresets",
37039
- transforms: [{ id: "value.csv" }]
37187
+ from: "content",
37188
+ transforms: [{
37189
+ id: "events.calendarSelectionParam",
37190
+ options: { key: "filterEventPresets" }
37191
+ }, { id: "value.csv" }]
37192
+ } },
37193
+ scheduleScope: { $bind: {
37194
+ from: "content",
37195
+ transforms: [{
37196
+ id: "events.calendarSelectionParam",
37197
+ options: { key: "scheduleScope" }
37198
+ }, { id: "value.csv" }]
37040
37199
  } },
37041
- scheduleScope: { $bind: { from: "content.scheduleScope" } },
37042
- categoryIds: { $bind: { from: "content.filterCategoryIds" } },
37043
- staffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
37044
- venueId: { $bind: { from: "content.filterVenueId" } }
37200
+ categoryIds: { $bind: {
37201
+ from: "content",
37202
+ transforms: [{
37203
+ id: "events.calendarSelectionParam",
37204
+ options: { key: "filterCategoryIds" }
37205
+ }, { id: "value.csv" }]
37206
+ } },
37207
+ staffMemberId: { $bind: {
37208
+ from: "content",
37209
+ transforms: [{
37210
+ id: "events.calendarSelectionParam",
37211
+ options: { key: "filterStaffMemberId" }
37212
+ }, { id: "value.csv" }]
37213
+ } },
37214
+ venueId: { $bind: {
37215
+ from: "content",
37216
+ transforms: [{
37217
+ id: "events.calendarSelectionParam",
37218
+ options: { key: "filterVenueId" }
37219
+ }, { id: "value.csv" }]
37220
+ } }
37045
37221
  };
37046
37222
  eventCalendarDataLoaders = {
37047
37223
  events: {
@@ -37112,6 +37288,7 @@ function normalizeEventCalendarDefaultView(value) {
37112
37288
  }
37113
37289
  var eventCalendarLayout, eventCalendarAdditionalFields, eventCalendarVariants, eventCalendarContentShape, eventCalendarConfig, eventCalendarManifest, eventCalendarBlockDefinition;
37114
37290
  var init_event_calendar = __esmMin((() => {
37291
+ init_eventSelectionFields();
37115
37292
  init_schema();
37116
37293
  init_builder$1();
37117
37294
  init_styledSection();
@@ -37167,6 +37344,13 @@ var init_event_calendar = __esmMin((() => {
37167
37344
  from: "content.defaultCalendarView",
37168
37345
  fallback: "month"
37169
37346
  } },
37347
+ seriesIds: { $bind: {
37348
+ from: "content",
37349
+ transforms: [{
37350
+ id: "events.calendarSelectionParam",
37351
+ options: { key: "seriesIds" }
37352
+ }]
37353
+ } },
37170
37354
  showFilters: { $bind: {
37171
37355
  from: "content.showFilters",
37172
37356
  fallback: true
@@ -37188,17 +37372,47 @@ var init_event_calendar = __esmMin((() => {
37188
37372
  fallback: true
37189
37373
  } },
37190
37374
  eventSurface: { $bind: {
37191
- from: "content.eventSurface",
37192
- fallback: "all"
37375
+ from: "content",
37376
+ transforms: [{
37377
+ id: "events.calendarSelectionParam",
37378
+ options: { key: "eventSurface" }
37379
+ }]
37380
+ } },
37381
+ filterEventPresets: { $bind: {
37382
+ from: "content",
37383
+ transforms: [{
37384
+ id: "events.calendarSelectionParam",
37385
+ options: { key: "filterEventPresets" }
37386
+ }]
37193
37387
  } },
37194
- filterEventPresets: { $bind: { from: "content.filterEventPresets" } },
37195
37388
  scheduleScope: { $bind: {
37196
- from: "content.scheduleScope",
37197
- fallback: "any"
37389
+ from: "content",
37390
+ transforms: [{
37391
+ id: "events.calendarSelectionParam",
37392
+ options: { key: "scheduleScope" }
37393
+ }]
37394
+ } },
37395
+ filterCategoryIds: { $bind: {
37396
+ from: "content",
37397
+ transforms: [{
37398
+ id: "events.calendarSelectionParam",
37399
+ options: { key: "filterCategoryIds" }
37400
+ }]
37401
+ } },
37402
+ filterStaffMemberId: { $bind: {
37403
+ from: "content",
37404
+ transforms: [{
37405
+ id: "events.calendarSelectionParam",
37406
+ options: { key: "filterStaffMemberId" }
37407
+ }]
37408
+ } },
37409
+ filterVenueId: { $bind: {
37410
+ from: "content",
37411
+ transforms: [{
37412
+ id: "events.calendarSelectionParam",
37413
+ options: { key: "filterVenueId" }
37414
+ }]
37198
37415
  } },
37199
- filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
37200
- filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
37201
- filterVenueId: { $bind: { from: "content.filterVenueId" } },
37202
37416
  cardRole: { $bind: {
37203
37417
  from: "content._cardStyles.role",
37204
37418
  fallback: "default"
@@ -37702,6 +37916,7 @@ var init_event_calendar = __esmMin((() => {
37702
37916
  }
37703
37917
  }
37704
37918
  },
37919
+ ...eventSelectionFields,
37705
37920
  {
37706
37921
  id: "eventSurface",
37707
37922
  type: "select",
@@ -37910,7 +38125,7 @@ var init_event_calendar = __esmMin((() => {
37910
38125
  titleSource: "heading",
37911
38126
  description: "Display events with calendar, list, or combined views with filtering",
37912
38127
  skipSectionStyles: true,
37913
- additionalFields: eventCalendarAdditionalFields,
38128
+ additionalFields: eventCalendarAdditionalFields.map(withEventSelectionVisibility),
37914
38129
  styleTokens: {
37915
38130
  background: "surface",
37916
38131
  typography: "body",
@@ -44948,11 +45163,33 @@ var init_links = __esmMin((() => {
44948
45163
  }));
44949
45164
  //#endregion
44950
45165
  //#region ../blocks/src/system/transforms/registry/eventCalendar.ts
44951
- var readJobSchema, eventCalendarReadProfile, eventCalendarReadEnabled;
45166
+ var selectionParamSchema, eventCalendarSelectionParam, readJobSchema, eventCalendarReadProfile, eventCalendarReadEnabled;
44952
45167
  var init_eventCalendar = __esmMin((() => {
44953
45168
  init_events$1();
44954
45169
  init_core();
44955
45170
  init_calendarWindow();
45171
+ init_eventSelection();
45172
+ selectionParamSchema = z.object({ key: z.enum([
45173
+ "seriesIds",
45174
+ "eventSurface",
45175
+ "filterEventPresets",
45176
+ "scheduleScope",
45177
+ "filterCategoryIds",
45178
+ "filterStaffMemberId",
45179
+ "filterVenueId"
45180
+ ]) });
45181
+ eventCalendarSelectionParam = {
45182
+ id: "events.calendarSelectionParam",
45183
+ kind: "formatter",
45184
+ summary: "Resolve selected events instead of discovery filters",
45185
+ schema: selectionParamSchema,
45186
+ run(value, { key }) {
45187
+ const content = asPartialObject(value) ?? {};
45188
+ const selection = resolveEventSelection(content.eventSelection, content.selectedEventSeriesIds);
45189
+ if (selection.kind === "selected") return key === "seriesIds" ? selection.seriesIds : void 0;
45190
+ return key === "seriesIds" ? void 0 : content[key];
45191
+ }
45192
+ };
44956
45193
  readJobSchema = z.object({ job: z.enum(["list", "calendar"]) });
44957
45194
  eventCalendarReadProfile = {
44958
45195
  id: "events.calendarReadProfile",
@@ -44990,6 +45227,7 @@ var init_registry$2 = __esmMin((() => {
44990
45227
  init_eventCalendar();
44991
45228
  init_boxStyleClassNames();
44992
45229
  builtinTransformDefinitions = [
45230
+ eventCalendarSelectionParam,
44993
45231
  eventCalendarReadEnabled,
44994
45232
  eventCalendarReadProfile,
44995
45233
  ...formattingTransforms,
@@ -45448,12 +45686,12 @@ function normalizeContent(block) {
45448
45686
  }
45449
45687
  /**
45450
45688
  * Normalize params for API calls.
45451
- * Converts all values to strings.
45689
+ * Converts supplied values to strings, preserving absent versus explicitly empty params.
45452
45690
  */
45453
45691
  function normalizeParams(input) {
45454
45692
  if (!input || typeof input !== "object") return {};
45455
45693
  const output = {};
45456
- for (const [key, value] of Object.entries(input)) output[key] = coerceToString(value);
45694
+ for (const [key, value] of Object.entries(input)) if (value !== void 0 && value !== null) output[key] = coerceToString(value);
45457
45695
  return output;
45458
45696
  }
45459
45697
  function isNonArrayObject(value) {
@@ -45511,6 +45749,14 @@ var init_utils = __esmMin((() => {
45511
45749
  }));
45512
45750
  //#endregion
45513
45751
  //#region ../blocks/src/system/data/prefetchBlockData.ts
45752
+ function projectDataLoaders(loaders, shouldLoad, blockId, blockKind) {
45753
+ if (!shouldLoad) return [...loaders];
45754
+ return loaders.filter(({ key }) => shouldLoad({
45755
+ blockId,
45756
+ blockKind,
45757
+ loaderKey: key
45758
+ }));
45759
+ }
45514
45760
  function shouldSkipResolvedLoader(input) {
45515
45761
  if (input.loader.requiredParams?.some((param) => !input.params[param]?.trim())) return true;
45516
45762
  return Boolean(input.isValidEndpoint && !input.isValidEndpoint(input.endpoint));
@@ -45539,7 +45785,7 @@ async function prefetchBlockData$1(page, context, options) {
45539
45785
  return (await prefetchBlockDataWithFailures(page, context, options)).resolvedData;
45540
45786
  }
45541
45787
  async function prefetchBlockDataWithFailures(page, context, options) {
45542
- const { apiClient, isValidEndpoint, onError, getCustomBlockLoaders, getBlockDefinition: getBlockDefinition$1 = getBlockDefinition, resolveParamsBindings: resolveParamsBindings$1 = resolveParamsBindings } = options;
45788
+ const { apiClient, isValidEndpoint, onError, getCustomBlockLoaders, getBlockDefinition: getBlockDefinition$1 = getBlockDefinition, resolveParamsBindings: resolveParamsBindings$1 = resolveParamsBindings, shouldLoad } = options;
45543
45789
  const results = {};
45544
45790
  const loaderFailures = {};
45545
45791
  const tasks = [];
@@ -45556,6 +45802,7 @@ async function prefetchBlockDataWithFailures(page, context, options) {
45556
45802
  loader
45557
45803
  })) : [];
45558
45804
  } else loaders = [];
45805
+ loaders = projectDataLoaders(loaders, shouldLoad, blockId, block.kind);
45559
45806
  if (loaders.length === 0) continue;
45560
45807
  const root = {
45561
45808
  ...context.root ?? {},
@@ -45642,8 +45889,8 @@ function toStringParams(value) {
45642
45889
  for (const [k, v] of Object.entries(value)) if (typeof v === "string") out[k] = v;
45643
45890
  return out;
45644
45891
  }
45645
- function stripEmptyStringValues(params) {
45646
- for (const [key, value] of Object.entries(params)) if (value === "") delete params[key];
45892
+ function stripEmptyStringValues(params, endpoint) {
45893
+ for (const [key, value] of Object.entries(params)) if (value === "" && !(key === "seriesIds" && (endpoint === "listPublicEvents" || endpoint === "listPublicEventCalendarWindow"))) delete params[key];
45647
45894
  }
45648
45895
  function ensureSiteId(params, context) {
45649
45896
  if (!params.siteId && typeof context.siteId === "string" && context.siteId) params.siteId = context.siteId;
@@ -45656,7 +45903,7 @@ function ensureSiteId(params, context) {
45656
45903
  */
45657
45904
  function normalizeLoaderParams(endpoint, params, context) {
45658
45905
  const out = toStringParams(params);
45659
- stripEmptyStringValues(out);
45906
+ stripEmptyStringValues(out, endpoint);
45660
45907
  if (endpoint === "getPublicFormById") {
45661
45908
  ensureSiteId(out, context);
45662
45909
  if (!out.formId && out.formSlug) {
@@ -45769,6 +46016,7 @@ function unsafeRetypeZodSchema(schema) {
45769
46016
  }
45770
46017
  var navIdListSchema, dashboardNavVisibilityBaseSchema, dashboardNavVisibilityRolesSchema, dashboardNavVisibilitySchema, dashboardNavigationConfigSchema, dashboardConfigSchema, fieldDefinitionInputSchema, sdkLoaderEndpointSchema, loaderFallbackScalarSchema, loaderParamBindingSchema, loaderParamValueSchema, sdkConfigLoaderSchema, sdkDataLoadersSchema, sdkCustomBlockIdSchema, sdkCustomBlockInputSchema, sdkBlockFieldExtensionInputSchema, sdkBlockFieldExtensionsInputSchema, sdkThemePaletteSchema, sdkThemeConfigSchema, sdkSectionBackgroundSchema, sdkSectionOptionsConfigSchema, sdkContainerOptionsConfigSchema, sdkSiteStyleConfigSchema, sdkSiteLayoutConfigSchema, sdkFieldSelectOptionSchema, sdkBlockFieldConfigSchema, sdkBlockFieldOptionsMapSchema, sdkContentTypeTemplateConfigSchema, sdkContentTypeOrderingConfigSchema, sdkContentTypeConfigSchema, sdkContentConfigSchema, SDK_WORKFLOW_ID_PATTERN, SDK_WORKFLOW_ENDPOINT_PATTERN, sdkWorkflowIdSchema, sdkWorkflowEndpointSchema, sdkWorkflowManualTriggerSchema, sdkWorkflowTriggerFieldSchema, sdkWorkflowFieldChangedConditionSchema, sdkWorkflowFieldEmptyConditionSchema, sdkWorkflowEntryDraftUpdatedTriggerSchema, sdkWorkflowTriggerSchema, sdkWorkflowConfirmationSchema, sdkWorkflowConfigSchema, sdkWorkflowsSchema, riverbankSiteConfigInputSchema;
45771
46018
  var init_contracts = __esmMin((() => {
46019
+ init_mode();
45772
46020
  init_src$2();
45773
46021
  init_src$4();
45774
46022
  navIdListSchema = z.preprocess((value) => {
@@ -45911,11 +46159,14 @@ var init_contracts = __esmMin((() => {
45911
46159
  sectionOptions: sdkSectionOptionsConfigSchema.optional(),
45912
46160
  containerOptions: sdkContainerOptionsConfigSchema.optional()
45913
46161
  });
45914
- sdkSiteLayoutConfigSchema = z.object({ footerBlocks: z.array(z.object({
45915
- id: z.string().min(1).optional(),
45916
- kind: z.string().min(1),
45917
- content: z.record(z.string(), z.unknown()).optional()
45918
- })).optional() });
46162
+ sdkSiteLayoutConfigSchema = z.object({
46163
+ footerMode: footerModeSchema.optional(),
46164
+ footerBlocks: z.array(z.object({
46165
+ id: z.string().min(1).optional(),
46166
+ kind: z.string().min(1),
46167
+ content: z.record(z.string(), z.unknown()).optional()
46168
+ })).optional()
46169
+ });
45919
46170
  sdkFieldSelectOptionSchema = z.object({
45920
46171
  value: z.string(),
45921
46172
  label: z.string()