@riverbankcms/sdk 0.140.0 → 0.141.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 (112) hide show
  1. package/dist/{PreviewEditorSidebar-CUyTzd5z.mjs → PreviewEditorSidebar-Q-fy9GYw.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-Agkw4v5i.mjs → PreviewEditorUI-LYGzgk85.mjs} +2 -2
  3. package/dist/{SdkPreviewModeRuntime-DdbeAdS8.mjs → SdkPreviewModeRuntime-CoPYI5Jq.mjs} +72 -46
  4. package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-D8LePX8x.mjs} +681 -196
  5. package/dist/_dts/api/src/contentRuntime.d.ts +12 -31
  6. package/dist/_dts/api/src/domainConnection.d.ts +4 -0
  7. package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
  8. package/dist/_dts/api/src/index.d.ts +1 -1
  9. package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
  10. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
  11. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -26
  12. package/dist/_dts/api/src/siteOnboarding.d.ts +7 -0
  13. package/dist/_dts/billing/src/site-arrangements.d.ts +12 -3
  14. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -0
  15. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  16. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
  17. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
  18. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
  19. package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
  20. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  21. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  22. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +5 -0
  23. package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
  24. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
  25. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -180
  26. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -90
  27. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
  28. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +5 -1
  29. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
  30. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
  31. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
  32. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
  33. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
  34. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -5
  35. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
  36. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
  37. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
  38. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +11 -101
  39. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +7 -2
  40. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
  41. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
  42. package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
  43. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3 -0
  44. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
  45. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -1
  46. package/dist/_dts/sdk/src/version.d.ts +1 -1
  47. package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
  48. package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
  49. package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
  50. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
  51. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
  52. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
  53. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  54. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
  55. package/dist/_dts/theme-core/src/index.d.ts +1 -1
  56. package/dist/client/{BookingConsentAgreement-CuKa82V4.mjs → BookingConsentAgreement-xJeYNdnb.mjs} +2 -2
  57. package/dist/client/{DiscountCodeDisclosure-BbYieKWB.mjs → DiscountCodeDisclosure-DdT6uzl9.mjs} +1 -1
  58. package/dist/client/{EventCombined.client-LTfR1Aby.mjs → EventCombined.client-Cp28uYuM.mjs} +11 -15
  59. package/dist/client/{EventListing.client-DUHpYSuo.mjs → EventListing.client-CD6AJsMr.mjs} +4 -17
  60. package/dist/client/{LeafletStaticMap-CHRupL6m.mjs → LeafletStaticMap-DBsAi9-e.mjs} +1 -1
  61. package/dist/client/{accordion-6HiIFxNL.mjs → accordion-6dwbOKYR.mjs} +1 -1
  62. package/dist/client/{bookingForm-Dlmid43H.mjs → bookingForm-CZE9_qPQ.mjs} +5 -5
  63. package/dist/client/bookings.mjs +175 -93
  64. package/dist/client/{carousel-DmkZRRq_.mjs → carousel-7VHGQARz.mjs} +1 -1
  65. package/dist/client/{cart-CIC24330.mjs → cart-Qg_mvQhh.mjs} +3 -3
  66. package/dist/client/{checkout-D1Zw9imo.mjs → checkout-D84rpgdr.mjs} +3 -3
  67. package/dist/client/client.mjs +602 -139
  68. package/dist/client/{context-Cy1OayHx.mjs → context-Ctp3T0Wr.mjs} +1 -1
  69. package/dist/client/{dates-aDcfoLHr.mjs → dates-DJKFcI_N.mjs} +2 -2
  70. package/dist/client/{eventCalendar-FQxMPAjf.mjs → eventCalendar-CK31z3vs.mjs} +11 -7
  71. package/dist/client/{eventCombined-Dr3ac6Hb.mjs → eventCombined-DiXd-ewn.mjs} +3 -3
  72. package/dist/client/{eventDetails-D-AzUHFQ.mjs → eventDetails-CTRgt2DK.mjs} +4 -4
  73. package/dist/client/{eventListing-B3XxBf3i.mjs → eventListing-Dy9vi_j_.mjs} +3 -3
  74. package/dist/client/{eventRegistration-I6EaokFD.mjs → eventRegistration-CnalYMr2.mjs} +124 -31
  75. package/dist/client/{form-BbWckVWY.mjs → form-eUiMveTT.mjs} +2 -2
  76. package/dist/client/{headerSection-C9qU4Y7x.mjs → headerSection-Dy9kQpB1.mjs} +2 -2
  77. package/dist/client/hooks.mjs +247 -32
  78. package/dist/client/{locationMap-CLCShvlG.mjs → locationMap-DalCmWU0.mjs} +2 -2
  79. package/dist/client/{newsletterForm-Briukxzi.mjs → newsletterForm-SDDPvhS0.mjs} +23 -10
  80. package/dist/client/{pricing-Copadu-2.mjs → pricing-OcMz4SnX.mjs} +1 -1
  81. package/dist/client/{productDetail-oujlRd-r.mjs → productDetail-BQrgHElM.mjs} +3 -3
  82. package/dist/client/{productList-BRiIRUcd.mjs → productList-OnPn_UJj.mjs} +3 -3
  83. package/dist/client/{propsDecoder-CB2KS_ko.mjs → propsDecoder-zBdsnS-N.mjs} +38 -8
  84. package/dist/client/rendering/client.mjs +446 -121
  85. package/dist/client/rendering/islands.mjs +17 -17
  86. package/dist/client/rendering.mjs +601 -138
  87. package/dist/client/{scrollToBlock-B1IS1_ua.mjs → scrollToBlock-BNM4Ob2Y.mjs} +28 -11
  88. package/dist/client/{shop-Vn6yNFED.mjs → shop-Bv1fPTwQ.mjs} +6 -6
  89. package/dist/client/{shop-commerce-BVTqipYp.mjs → shop-commerce-D4KNGaW8.mjs} +5 -5
  90. package/dist/client/{shop-commerce-store-BVnJVy7v.mjs → shop-commerce-store-2N5EV0Rc.mjs} +1 -1
  91. package/dist/client/{shopShared-COIeK77T.mjs → shopShared-DvJGdHTV.mjs} +3 -3
  92. package/dist/client/{useEventFilters-DzIUcS9n.mjs → useEventFilters-BBBvGDHQ.mjs} +17 -11
  93. package/dist/preview-next/client/runtime.mjs +3 -3
  94. package/dist/preview-next/editor-chrome.css +4 -8
  95. package/dist/{sdk-runtime-CnCLvZRv.mjs → sdk-runtime-Defnbfzw.mjs} +1 -1
  96. package/dist/{separator-DKDRJ1oH.mjs → separator-CZXO3Sb0.mjs} +1 -1
  97. package/dist/server/components.mjs +384 -62
  98. package/dist/server/config-validation.mjs +232 -26
  99. package/dist/server/config.mjs +232 -26
  100. package/dist/server/data.mjs +247 -32
  101. package/dist/server/index.mjs +1 -1
  102. package/dist/server/next.mjs +400 -69
  103. package/dist/server/page-converter.mjs +189 -25
  104. package/dist/server/prebuild.mjs +1 -1
  105. package/dist/server/rendering/server.mjs +399 -68
  106. package/dist/server/rendering.mjs +399 -68
  107. package/dist/server/routing.mjs +261 -33
  108. package/dist/server/server.mjs +248 -33
  109. package/dist/server/theme-bridge.mjs +47 -15
  110. package/dist/server/theme.mjs +1 -1
  111. package/dist/styles/index.css +28 -2
  112. package/package.json +1 -1
@@ -5997,7 +5997,7 @@ const BUTTON_CONTRAST_POLICY = {
5997
5997
  nonTextMinimumRatio: 3,
5998
5998
  gradientSamplesPerSegment: 20,
5999
5999
  alphaBackgrounds: "reject-without-known-surface",
6000
- disabled: "retain-full-colour-contract"
6000
+ disabled: "validated-colour-pair-with-muted-control-opacity"
6001
6001
  };
6002
6002
  function validateButtonSurfaceContrast(input) {
6003
6003
  const ratio = contrastRatio(input.buttonPaint, input.surfaceHex);
@@ -16339,6 +16339,7 @@ function isDisplayMediaKind(kind) {
16339
16339
  }
16340
16340
  const siteOptionSources = [
16341
16341
  "eventCategories",
16342
+ "eventSeries",
16342
16343
  "venues",
16343
16344
  "staffMembers"
16344
16345
  ];
@@ -27209,7 +27210,8 @@ const appointmentServicesBlockDefinition = {
27209
27210
  el("appointment-services", {
27210
27211
  sectionHeading: { $bind: { from: "content.heading" } },
27211
27212
  services: { $bind: { from: "data.services" } },
27212
- pathname: { $bind: { from: "$root.pathname" } }
27213
+ pathname: { $bind: { from: "$root.pathname" } },
27214
+ servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
27213
27215
  })
27214
27216
  ], { gap: "lg" })
27215
27217
  })]
@@ -29298,6 +29300,35 @@ const eventSpotlightBlockDefinition = {
29298
29300
  } }
29299
29301
  };
29300
29302
  //#endregion
29303
+ //#region ../blocks/src/system/blocks/events/shared/eventSelection.ts
29304
+ /** Invalid saved selections fail closed rather than widening discovery. */
29305
+ function resolveEventSelection(mode, value) {
29306
+ if (mode !== "selected") return { kind: "matching" };
29307
+ const candidates = Array.isArray(value) ? value : typeof value === "string" ? value.split(",").filter(Boolean) : [];
29308
+ const ids = [];
29309
+ for (const candidate of candidates) {
29310
+ if (typeof candidate !== "string") return {
29311
+ kind: "selected",
29312
+ seriesIds: []
29313
+ };
29314
+ const parsed = parseEventSeriesId(candidate.trim());
29315
+ if (!parsed.ok) return {
29316
+ kind: "selected",
29317
+ seriesIds: []
29318
+ };
29319
+ ids.push(parsed.value);
29320
+ }
29321
+ return {
29322
+ kind: "selected",
29323
+ seriesIds: [...new Set(ids)].sort()
29324
+ };
29325
+ }
29326
+ /** Undefined means discovery; an empty string is an explicitly empty selection. */
29327
+ function eventSeriesScopeCsv(value) {
29328
+ if (value == null) return void 0;
29329
+ return typeof value === "string" ? value : value.join(",");
29330
+ }
29331
+ //#endregion
29301
29332
  //#region ../blocks/src/system/runtime/nodes/events/shared/listingLayout.ts
29302
29333
  /**
29303
29334
  * Layout classes for event listing containers and cards. Presentation
@@ -29426,6 +29457,7 @@ z.object({
29426
29457
  eventSurface: z.enum(eventSurfaceScopeValues).optional(),
29427
29458
  eventPresets: z.string().optional(),
29428
29459
  scheduleScope: z.enum(eventScheduleScopeValues).optional(),
29460
+ seriesIds: z.string().optional(),
29429
29461
  categoryIds: z.string().optional(),
29430
29462
  venueId: z.string().transform(normalizeCalendarFilterId).optional(),
29431
29463
  staffMemberId: z.string().transform(normalizeCalendarFilterId).optional()
@@ -29488,6 +29520,7 @@ const eventCollectionFilterSourceSchemaShape = {
29488
29520
  eventSurface: eventSurfaceScopeSchema$1.nullable().optional(),
29489
29521
  filterEventPresets: z.union([z.string(), z.array(z.string())]).nullable().optional(),
29490
29522
  scheduleScope: eventScheduleScopeSchema$1.nullable().optional(),
29523
+ seriesIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
29491
29524
  filterCategoryIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
29492
29525
  filterStaffMemberId: z.string().nullable().optional(),
29493
29526
  filterVenueId: z.string().nullable().optional()
@@ -29534,6 +29567,7 @@ const eventCollectionDisplaySchemaShape = {
29534
29567
  eventSurface: eventSurfaceScopeSchema$1,
29535
29568
  filterEventPresets: z.string().nullable(),
29536
29569
  scheduleScope: eventScheduleScopeSchema$1,
29570
+ seriesIds: z.string().nullable().optional(),
29537
29571
  filterCategoryIds: z.string().nullable(),
29538
29572
  filterStaffMemberId: z.string().nullable(),
29539
29573
  filterVenueId: z.string().nullable(),
@@ -29581,11 +29615,15 @@ function buildEventCollectionDisplay(source) {
29581
29615
  };
29582
29616
  }
29583
29617
  function buildEventCollectionFilterDisplay(source) {
29584
- return {
29585
- showFilters: source.showFilters ?? true,
29586
- showCategoryFilter: source.showCategoryFilter ?? "auto",
29587
- showVenueFilter: source.showVenueFilter ?? false,
29588
- showStaffFilter: source.showStaffFilter ?? true,
29618
+ const selected = source.seriesIds != null;
29619
+ const matchingFilters = selected ? {
29620
+ eventSurface: "all",
29621
+ filterEventPresets: null,
29622
+ scheduleScope: "any",
29623
+ filterCategoryIds: null,
29624
+ filterStaffMemberId: null,
29625
+ filterVenueId: null
29626
+ } : {
29589
29627
  eventSurface: normalizeEventSurfaceScope(source.eventSurface),
29590
29628
  filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
29591
29629
  scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
@@ -29593,6 +29631,14 @@ function buildEventCollectionFilterDisplay(source) {
29593
29631
  filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
29594
29632
  filterVenueId: normalizeEventVenueId(source.filterVenueId)
29595
29633
  };
29634
+ return {
29635
+ seriesIds: eventSeriesScopeCsv(source.seriesIds),
29636
+ showFilters: selected ? false : source.showFilters ?? true,
29637
+ showCategoryFilter: source.showCategoryFilter ?? "auto",
29638
+ showVenueFilter: source.showVenueFilter ?? false,
29639
+ showStaffFilter: source.showStaffFilter ?? true,
29640
+ ...matchingFilters
29641
+ };
29596
29642
  }
29597
29643
  function buildEventCollectionPresentationDisplay(source) {
29598
29644
  return {
@@ -29607,14 +29653,15 @@ function buildEventCollectionPresentationDisplay(source) {
29607
29653
  }
29608
29654
  function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
29609
29655
  const timeZone = source.calendarWindow?.scope.timeZone ?? toBookingTimeZone(source.bookingTimeZone);
29656
+ const selected = source.seriesIds != null;
29610
29657
  return {
29611
29658
  calendarWindow: source.calendarWindow ?? void 0,
29612
29659
  siteId: source.siteId,
29613
29660
  stage: source.stage,
29614
29661
  prefetchedEvents: source.events != null,
29615
- eventSurface: normalizeEventSurfaceScope(source.eventSurface),
29616
- filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
29617
- scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
29662
+ eventSurface: selected ? "all" : normalizeEventSurfaceScope(source.eventSurface),
29663
+ filterEventPresets: selected ? null : normalizeEventSurfacePresetsCsv(source.filterEventPresets),
29664
+ scheduleScope: selected ? "any" : normalizeEventScheduleScope(source.scheduleScope),
29618
29665
  calendarContext: {
29619
29666
  timeZone,
29620
29667
  initialToday: source.calendarWindow?.initialToday ?? getLocalScheduleDate(now, timeZone)
@@ -29680,6 +29727,7 @@ const eventListingHydrationSchema = z.object({
29680
29727
  eventSurface: eventSurfaceScopeSchema,
29681
29728
  filterEventPresets: z.string().nullable(),
29682
29729
  scheduleScope: eventScheduleScopeSchema,
29730
+ seriesIds: z.string().nullable().optional(),
29683
29731
  filterCategoryIds: z.string().nullable().optional(),
29684
29732
  filterStaffMemberId: z.string().nullable().optional(),
29685
29733
  filterVenueId: z.string().nullable().optional(),
@@ -29740,6 +29788,7 @@ const eventListingBlockRuntime = defineProgressiveBlockRuntime({
29740
29788
  eventSurface: normalizeEventSurfaceScope(source.eventSurface),
29741
29789
  filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
29742
29790
  scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
29791
+ seriesIds: eventSeriesScopeCsv(source.seriesIds),
29743
29792
  filterCategoryIds: normalizeEventCategoryIdsCsv(source.filterCategoryIds),
29744
29793
  filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
29745
29794
  filterVenueId: normalizeEventVenueId(source.filterVenueId),
@@ -30113,6 +30162,65 @@ const eventListingBlockDefinition = {
30113
30162
  } }
30114
30163
  };
30115
30164
  //#endregion
30165
+ //#region ../blocks/src/system/blocks/events/eventSelectionFields.ts
30166
+ const eventSelectionFields = [{
30167
+ id: "eventSelection",
30168
+ type: "select",
30169
+ label: "Events to show",
30170
+ required: false,
30171
+ multiple: false,
30172
+ defaultValue: "matching",
30173
+ options: [{
30174
+ value: "matching",
30175
+ label: "All matching events"
30176
+ }, {
30177
+ value: "selected",
30178
+ label: "Selected events"
30179
+ }],
30180
+ ui: { intent: "behavior" }
30181
+ }, createSiteOptionSelectField({
30182
+ id: "selectedEventSeriesIds",
30183
+ label: "Selected events",
30184
+ description: "Show upcoming dates for these events. Other event filters do not apply.",
30185
+ required: false,
30186
+ multiple: true,
30187
+ defaultValue: [],
30188
+ optionSource: "eventSeries",
30189
+ ui: {
30190
+ intent: "behavior",
30191
+ searchThreshold: 1,
30192
+ visibleWhen: {
30193
+ field: "eventSelection",
30194
+ equals: "selected"
30195
+ }
30196
+ }
30197
+ })];
30198
+ function withEventSelectionVisibility(field) {
30199
+ if (![
30200
+ "eventSurface",
30201
+ "filterEventPresets",
30202
+ "scheduleScope",
30203
+ "filterCategoryIds",
30204
+ "filterStaffMemberId",
30205
+ "filterVenueId",
30206
+ "showFilters",
30207
+ "showCategoryFilter",
30208
+ "showVenueFilter",
30209
+ "showStaffFilter"
30210
+ ].includes(field.id)) return field;
30211
+ const visibleWhen = field.ui?.visibleWhen;
30212
+ return {
30213
+ ...field,
30214
+ ui: {
30215
+ ...field.ui,
30216
+ visibleWhen: { allOf: [{
30217
+ field: "eventSelection",
30218
+ notEquals: "selected"
30219
+ }, ...visibleWhen ? [visibleWhen] : []] }
30220
+ }
30221
+ };
30222
+ }
30223
+ //#endregion
30116
30224
  //#region ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
30117
30225
  const eventCalendarSourceSchema = z.object({
30118
30226
  ...eventCollectionSourceSchemaShape,
@@ -30195,19 +30303,59 @@ const eventCalendarBlockRuntime = defineProgressiveBlockRuntime({
30195
30303
  //#region ../blocks/src/system/blocks/events/eventCalendarDataLoaders.ts
30196
30304
  const scopeParams = {
30197
30305
  siteId: { $bind: { from: "$root.siteId" } },
30306
+ seriesIds: { $bind: {
30307
+ from: "content",
30308
+ transforms: [{
30309
+ id: "events.calendarSelectionParam",
30310
+ options: { key: "seriesIds" }
30311
+ }]
30312
+ } },
30198
30313
  stage: { $bind: {
30199
30314
  from: "$root.previewStage",
30200
30315
  fallback: "published"
30201
30316
  } },
30202
- eventSurface: { $bind: { from: "content.eventSurface" } },
30317
+ eventSurface: { $bind: {
30318
+ from: "content",
30319
+ transforms: [{
30320
+ id: "events.calendarSelectionParam",
30321
+ options: { key: "eventSurface" }
30322
+ }, { id: "value.csv" }]
30323
+ } },
30203
30324
  eventPresets: { $bind: {
30204
- from: "content.filterEventPresets",
30205
- transforms: [{ id: "value.csv" }]
30325
+ from: "content",
30326
+ transforms: [{
30327
+ id: "events.calendarSelectionParam",
30328
+ options: { key: "filterEventPresets" }
30329
+ }, { id: "value.csv" }]
30330
+ } },
30331
+ scheduleScope: { $bind: {
30332
+ from: "content",
30333
+ transforms: [{
30334
+ id: "events.calendarSelectionParam",
30335
+ options: { key: "scheduleScope" }
30336
+ }, { id: "value.csv" }]
30206
30337
  } },
30207
- scheduleScope: { $bind: { from: "content.scheduleScope" } },
30208
- categoryIds: { $bind: { from: "content.filterCategoryIds" } },
30209
- staffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
30210
- venueId: { $bind: { from: "content.filterVenueId" } }
30338
+ categoryIds: { $bind: {
30339
+ from: "content",
30340
+ transforms: [{
30341
+ id: "events.calendarSelectionParam",
30342
+ options: { key: "filterCategoryIds" }
30343
+ }, { id: "value.csv" }]
30344
+ } },
30345
+ staffMemberId: { $bind: {
30346
+ from: "content",
30347
+ transforms: [{
30348
+ id: "events.calendarSelectionParam",
30349
+ options: { key: "filterStaffMemberId" }
30350
+ }, { id: "value.csv" }]
30351
+ } },
30352
+ venueId: { $bind: {
30353
+ from: "content",
30354
+ transforms: [{
30355
+ id: "events.calendarSelectionParam",
30356
+ options: { key: "filterVenueId" }
30357
+ }, { id: "value.csv" }]
30358
+ } }
30211
30359
  };
30212
30360
  /** Combined renders two jobs; calendar-only variants never pay for the list seed. */
30213
30361
  const eventCalendarDataLoaders = {
@@ -30337,6 +30485,13 @@ const eventCalendarLayout = [styledSection({
30337
30485
  from: "content.defaultCalendarView",
30338
30486
  fallback: "month"
30339
30487
  } },
30488
+ seriesIds: { $bind: {
30489
+ from: "content",
30490
+ transforms: [{
30491
+ id: "events.calendarSelectionParam",
30492
+ options: { key: "seriesIds" }
30493
+ }]
30494
+ } },
30340
30495
  showFilters: { $bind: {
30341
30496
  from: "content.showFilters",
30342
30497
  fallback: true
@@ -30358,17 +30513,47 @@ const eventCalendarLayout = [styledSection({
30358
30513
  fallback: true
30359
30514
  } },
30360
30515
  eventSurface: { $bind: {
30361
- from: "content.eventSurface",
30362
- fallback: "all"
30516
+ from: "content",
30517
+ transforms: [{
30518
+ id: "events.calendarSelectionParam",
30519
+ options: { key: "eventSurface" }
30520
+ }]
30521
+ } },
30522
+ filterEventPresets: { $bind: {
30523
+ from: "content",
30524
+ transforms: [{
30525
+ id: "events.calendarSelectionParam",
30526
+ options: { key: "filterEventPresets" }
30527
+ }]
30363
30528
  } },
30364
- filterEventPresets: { $bind: { from: "content.filterEventPresets" } },
30365
30529
  scheduleScope: { $bind: {
30366
- from: "content.scheduleScope",
30367
- fallback: "any"
30530
+ from: "content",
30531
+ transforms: [{
30532
+ id: "events.calendarSelectionParam",
30533
+ options: { key: "scheduleScope" }
30534
+ }]
30535
+ } },
30536
+ filterCategoryIds: { $bind: {
30537
+ from: "content",
30538
+ transforms: [{
30539
+ id: "events.calendarSelectionParam",
30540
+ options: { key: "filterCategoryIds" }
30541
+ }]
30542
+ } },
30543
+ filterStaffMemberId: { $bind: {
30544
+ from: "content",
30545
+ transforms: [{
30546
+ id: "events.calendarSelectionParam",
30547
+ options: { key: "filterStaffMemberId" }
30548
+ }]
30549
+ } },
30550
+ filterVenueId: { $bind: {
30551
+ from: "content",
30552
+ transforms: [{
30553
+ id: "events.calendarSelectionParam",
30554
+ options: { key: "filterVenueId" }
30555
+ }]
30368
30556
  } },
30369
- filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
30370
- filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
30371
- filterVenueId: { $bind: { from: "content.filterVenueId" } },
30372
30557
  cardRole: { $bind: {
30373
30558
  from: "content._cardStyles.role",
30374
30559
  fallback: "default"
@@ -30872,6 +31057,7 @@ const eventCalendarAdditionalFields = [
30872
31057
  }
30873
31058
  }
30874
31059
  },
31060
+ ...eventSelectionFields,
30875
31061
  {
30876
31062
  id: "eventSurface",
30877
31063
  type: "select",
@@ -31081,7 +31267,7 @@ const eventCalendarBlockDefinition = {
31081
31267
  titleSource: "heading",
31082
31268
  description: "Display events with calendar, list, or combined views with filtering",
31083
31269
  skipSectionStyles: true,
31084
- additionalFields: eventCalendarAdditionalFields,
31270
+ additionalFields: eventCalendarAdditionalFields.map(withEventSelectionVisibility),
31085
31271
  styleTokens: {
31086
31272
  background: "surface",
31087
31273
  typography: "body",
@@ -37504,6 +37690,26 @@ const linksTransforms = [{
37504
37690
  //#endregion
37505
37691
  //#region ../blocks/src/system/transforms/registry/index.ts
37506
37692
  const builtinTransformDefinitions = [
37693
+ {
37694
+ id: "events.calendarSelectionParam",
37695
+ kind: "formatter",
37696
+ summary: "Resolve selected events instead of discovery filters",
37697
+ schema: z.object({ key: z.enum([
37698
+ "seriesIds",
37699
+ "eventSurface",
37700
+ "filterEventPresets",
37701
+ "scheduleScope",
37702
+ "filterCategoryIds",
37703
+ "filterStaffMemberId",
37704
+ "filterVenueId"
37705
+ ]) }),
37706
+ run(value, { key }) {
37707
+ const content = asPartialObject(value) ?? {};
37708
+ const selection = resolveEventSelection(content.eventSelection, content.selectedEventSeriesIds);
37709
+ if (selection.kind === "selected") return key === "seriesIds" ? selection.seriesIds : void 0;
37710
+ return key === "seriesIds" ? void 0 : content[key];
37711
+ }
37712
+ },
37507
37713
  {
37508
37714
  id: "events.calendarReadEnabled",
37509
37715
  kind: "formatter",