@riverbankcms/sdk 0.132.0 → 0.134.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 (159) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/{PreviewEditorSidebar-DKQ5eFK9.mjs → PreviewEditorSidebar-DfRhJPFQ.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-CNTcOjCC.mjs → PreviewEditorUI-Dppxcr_g.mjs} +2 -2
  4. package/dist/{SdkPreviewModeRuntime-DJu3qu33.mjs → SdkPreviewModeRuntime-8CyGCXir.mjs} +46 -15
  5. package/dist/{SiteChromeCustomizeContext-2TzT3vbj.mjs → SiteChromeCustomizeContext-DVMTMvqA.mjs} +497 -169
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +384 -384
  7. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +219 -219
  8. package/dist/_dts/api/src/accountApi.d.ts +5 -5
  9. package/dist/_dts/api/src/appointmentEndpointDefinitions.d.ts +1 -1
  10. package/dist/_dts/api/src/bookingOperations.d.ts +2 -14
  11. package/dist/_dts/api/src/bookings.d.ts +2 -2
  12. package/dist/_dts/api/src/contentRuntime.d.ts +1 -1
  13. package/dist/_dts/api/src/courseEndpointDefinitions.d.ts +2 -2
  14. package/dist/_dts/api/src/endpoints.d.ts +3 -3
  15. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  16. package/dist/_dts/api/src/navigation/contracts.d.ts +9 -6
  17. package/dist/_dts/api/src/navigation/linkResolver.d.ts +6 -2
  18. package/dist/_dts/api/src/navigation/types.d.ts +23 -6
  19. package/dist/_dts/api/src/navigation.d.ts +1 -1
  20. package/dist/_dts/api/src/publicBookingService.d.ts +15 -0
  21. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +3 -1
  22. package/dist/_dts/api/src/publicExperience/wholeSeriesEndpoints.d.ts +2 -0
  23. package/dist/_dts/api/src/sdk-event-upsert.d.ts +1 -1
  24. package/dist/_dts/api/src/sdkThemeWire.d.ts +50 -50
  25. package/dist/_dts/api/src/siteBanner.d.ts +4 -2
  26. package/dist/_dts/api/src/types.d.ts +1 -1
  27. package/dist/_dts/api/src/webhooks.d.ts +12 -12
  28. package/dist/_dts/blocks/src/client.d.ts +1 -1
  29. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +28 -72
  30. package/dist/_dts/blocks/src/index.d.ts +3 -2
  31. package/dist/_dts/blocks/src/primitives/content/components/RichText.d.ts +2 -2
  32. package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +1 -0
  33. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +36 -14
  34. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +3 -0
  35. package/dist/_dts/blocks/src/system/blocks/events/whole-series/schemas.d.ts +3 -3
  36. package/dist/_dts/blocks/src/system/blocks/events/whole-series/types.d.ts +3 -0
  37. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +4 -4
  38. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +148 -148
  39. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +2 -1
  40. package/dist/_dts/blocks/src/system/blocks/shared/bookingConsent.d.ts +36 -0
  41. package/dist/_dts/blocks/src/system/manifest/hydrateLinks.d.ts +9 -2
  42. package/dist/_dts/blocks/src/system/manifest/resolveBlockData.d.ts +8 -0
  43. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +79 -79
  44. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +2 -11
  45. package/dist/_dts/blocks/src/system/runtime/api/types/courses.d.ts +2 -0
  46. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +1 -0
  47. package/dist/_dts/blocks/src/system/runtime/components/multi-step/DynamicFormFields.d.ts +3 -19
  48. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +1 -1
  49. package/dist/_dts/blocks/src/system/runtime/hooks/useSelectedAppointmentConsentForm.d.ts +2 -0
  50. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.consent.d.ts +10 -0
  51. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.field-values.d.ts +4 -0
  52. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.fields.d.ts +21 -0
  53. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +2 -1
  54. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +38 -144
  55. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +5 -19
  56. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -2
  57. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +2 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +18 -1
  59. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -4
  60. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/validation.d.ts +2 -1
  61. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/components.d.ts +2 -1
  62. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/whole-series-registration.headless.contract.d.ts +2 -0
  63. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +34 -12
  64. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingConsentAgreement.d.ts +7 -0
  65. package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
  66. package/dist/_dts/blocks/src/system/types/link.d.ts +7 -1
  67. package/dist/_dts/content-model/src/content-types/schema.d.ts +4 -4
  68. package/dist/_dts/core/src/booking-consent.d.ts +8 -0
  69. package/dist/_dts/core/src/index.d.ts +1 -0
  70. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +9 -3
  71. package/dist/_dts/db/src/schemas/forms.d.ts +21 -21
  72. package/dist/_dts/db/src/types/jsonb.d.ts +1 -1
  73. package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +2 -1
  74. package/dist/_dts/editor/src/primitives/rich-text/config.d.ts +2 -1
  75. package/dist/_dts/editor/src/primitives/rich-text/toolbar/linkPopoverUtils.d.ts +3 -2
  76. package/dist/_dts/editor/src/primitives/rich-text/useRichTextEditor.d.ts +3 -4
  77. package/dist/_dts/media-core/src/usageScanner.d.ts +1 -1
  78. package/dist/_dts/sdk/src/bookings/types.d.ts +7 -89
  79. package/dist/_dts/sdk/src/config/validation.d.ts +30 -30
  80. package/dist/_dts/sdk/src/contracts/content.d.ts +10 -36
  81. package/dist/_dts/sdk/src/contracts/rendering.d.ts +1 -1
  82. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +9 -9
  83. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -19
  84. package/dist/_dts/sdk/src/version.d.ts +1 -1
  85. package/dist/_dts/theme-core/src/accordions/types.d.ts +2 -2
  86. package/dist/_dts/theme-core/src/buttons/types.d.ts +12 -12
  87. package/dist/_dts/theme-core/src/cards/types.d.ts +5 -5
  88. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +72 -72
  89. package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -4
  90. package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
  91. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +2 -2
  92. package/dist/_dts/theme-core/src/schema.d.ts +82 -82
  93. package/dist/_dts/theme-core/src/site-styles/cardRoleVocabulary.d.ts +1 -1
  94. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  95. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
  96. package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +4 -4
  97. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +1 -1
  98. package/dist/_dts/ui/src/badge.d.ts +1 -1
  99. package/dist/_dts/ui/src/button.d.ts +1 -1
  100. package/dist/_dts/ui/src/callout.d.ts +1 -1
  101. package/dist/_dts/ui/src/card.d.ts +1 -1
  102. package/dist/client/{StepIndicator-CGixP_LW.mjs → BookingConsentAgreement-BxgpGEFD.mjs} +26 -4
  103. package/dist/client/{DiscountCodeDisclosure-DO7llLxm.mjs → DiscountCodeDisclosure-CfuPOHD0.mjs} +1 -1
  104. package/dist/client/{EventCombined.client-xID7zN__.mjs → EventCombined.client-DB8Qfzi-.mjs} +3 -3
  105. package/dist/client/{EventListing.client-CriBslp0.mjs → EventListing.client-DD4X8hp4.mjs} +2 -2
  106. package/dist/client/{LeafletStaticMap-DYmHnM8g.mjs → LeafletStaticMap-QhgIBQbv.mjs} +1 -1
  107. package/dist/client/{WholeSeriesRegistrationWizard-BEjzSiOA.mjs → WholeSeriesRegistrationWizard-DwtC7bCs.mjs} +72 -22
  108. package/dist/client/{accordion-CgFbnnnQ.mjs → accordion-DFXpLvwg.mjs} +1 -1
  109. package/dist/client/{bookingForm-dUyGpbxc.mjs → bookingForm-sI05d3lk.mjs} +73 -47
  110. package/dist/client/bookings.mjs +989 -140
  111. package/dist/client/{carousel-BvBwkUzx.mjs → carousel-wjyWTZCh.mjs} +1 -1
  112. package/dist/client/{cart-DiZENT2E.mjs → cart-DCwdpA4i.mjs} +3 -3
  113. package/dist/client/{checkout-Dq13KIgR.mjs → checkout-DTDW3l0R.mjs} +3 -3
  114. package/dist/client/checkoutUrls-DQYC_Br-.mjs +187 -0
  115. package/dist/client/client.mjs +556 -237
  116. package/dist/client/{context-B83PiNzm.mjs → context-TSK1CGx8.mjs} +1 -14
  117. package/dist/client/{courseRegistration-CKC5NmyH.mjs → courseRegistration-A-Tg7qw_.mjs} +3 -3
  118. package/dist/client/{eventCalendar-BF0Jatfw.mjs → eventCalendar-B0Zg-i_w.mjs} +5 -5
  119. package/dist/client/{eventCombined-BuoCF8je.mjs → eventCombined-B8Y2wizd.mjs} +3 -3
  120. package/dist/client/{eventDetails-CKwh0S9s.mjs → eventDetails-DPDOwURJ.mjs} +3 -3
  121. package/dist/client/{eventListing-eUxaWFaB.mjs → eventListing-CjBcmSLn.mjs} +3 -3
  122. package/dist/client/{eventRegistration-CfkNOkPb.mjs → eventRegistration-CK30HsAq.mjs} +111 -64
  123. package/dist/client/{form-C17H1c_H.mjs → form-CUXfsABE.mjs} +2 -2
  124. package/dist/client/{headerSection-DEwUmrtt.mjs → headerSection-N-mN3rjr.mjs} +2 -2
  125. package/dist/client/hooks.mjs +106 -3
  126. package/dist/client/{locationMap-Pf2QwuvW.mjs → locationMap-oiIDQMBt.mjs} +2 -2
  127. package/dist/client/{newsletterForm-BWQAH5Sv.mjs → newsletterForm-CkQ2tTrM.mjs} +2 -2
  128. package/dist/client/{pricing-CVdvbopJ.mjs → pricing-Caa0QWzh.mjs} +1 -1
  129. package/dist/client/{productDetail-BZi1Fa_G.mjs → productDetail-CnidyrsN.mjs} +3 -3
  130. package/dist/client/{productList-qq-55DNk.mjs → productList-CttYcS_S.mjs} +3 -3
  131. package/dist/client/{propsDecoder-BxmqPKdP.mjs → propsDecoder-CeUMxI9a.mjs} +211 -100
  132. package/dist/client/rendering/client.mjs +428 -151
  133. package/dist/client/rendering/islands.mjs +18 -18
  134. package/dist/client/rendering.mjs +643 -324
  135. package/dist/client/{scrollToBlock-B3CcKdtG.mjs → scrollToBlock-lPr1oqxB.mjs} +1 -1
  136. package/dist/client/{shop-DNWJPut5.mjs → shop-DXQtMo2O.mjs} +6 -6
  137. package/dist/client/{shop-commerce-BhvQCosS.mjs → shop-commerce-quDL411J.mjs} +7 -164
  138. package/dist/client/{shop-commerce-store-B04sCNnW.mjs → shop-commerce-store-Dnu-8Iub.mjs} +1 -1
  139. package/dist/client/{shopShared-DNNgZlmW.mjs → shopShared-BWPUURvG.mjs} +3 -3
  140. package/dist/client/{useEventFilters-CUmhE24_.mjs → useEventFilters-DRhWp2_5.mjs} +3 -3
  141. package/dist/client/{usePolling-M5jG675x.mjs → usePolling-UN4WKnaM.mjs} +2 -2
  142. package/dist/preview-next/client/runtime.mjs +3 -3
  143. package/dist/{sdk-runtime-BEXb1wqo.mjs → sdk-runtime-Ca5RD78X.mjs} +1 -1
  144. package/dist/{separator-DGMuip1D.mjs → separator-CMhj6BTi.mjs} +1 -1
  145. package/dist/server/components.mjs +117 -37
  146. package/dist/server/config-validation.mjs +106 -3
  147. package/dist/server/config.mjs +106 -3
  148. package/dist/server/data.mjs +106 -3
  149. package/dist/server/index.mjs +1 -1
  150. package/dist/server/next.mjs +186 -106
  151. package/dist/server/page-converter.mjs +105 -2
  152. package/dist/server/prebuild.mjs +1 -1
  153. package/dist/server/rendering/server.mjs +119 -37
  154. package/dist/server/rendering.mjs +117 -37
  155. package/dist/server/routing.mjs +132 -73
  156. package/dist/server/server.mjs +107 -4
  157. package/dist/server/theme-bridge.mjs +4 -4
  158. package/package.json +2 -2
  159. package/dist/client/checkoutUrls-Ct8Mxna3.mjs +0 -26
@@ -2823,6 +2823,9 @@ var init_booking_date_time = __esmMin((() => {
2823
2823
  dateTimeFormatterCache = /* @__PURE__ */ new Map();
2824
2824
  }));
2825
2825
  //#endregion
2826
+ //#region ../core/src/booking-consent.ts
2827
+ var init_booking_consent = __esmMin((() => {}));
2828
+ //#endregion
2826
2829
  //#region ../core/src/dated-offering-settlement.ts
2827
2830
  var init_dated_offering_settlement = __esmMin((() => {}));
2828
2831
  //#endregion
@@ -3337,6 +3340,7 @@ var init_src$4 = __esmMin((() => {
3337
3340
  init_booking_refunds();
3338
3341
  init_booking_instalments();
3339
3342
  init_booking_date_time();
3343
+ init_booking_consent();
3340
3344
  init_dated_offering_settlement();
3341
3345
  init_person_records();
3342
3346
  init_rectification();
@@ -3407,8 +3411,71 @@ var init_media$4 = __esmMin((() => {
3407
3411
  "style-atmosphere-2"
3408
3412
  ];
3409
3413
  [...AMBIENT_BACKGROUND_ROLES$1];
3410
- })), portalLinkPayloadSchema, cartLinkLabelConfigSchema, cartLinkPayloadSchema, internalLinkPayloadSchema, externalLinkSchema$1, customLinkSchema$1, pageLinkSchema$1, entryLinkSchema$1, linkPayloadSchema, navigationLinkInputSchemaOptions;
3414
+ })), nullableString, RESOLVED_INTERNAL_LINK_ENTITY_TYPES, resolvedInternalLinkKeys, internalRouteOnlyLinkSchema, internalResolvedLinkSchema, internalLinkSchema, externalLinkSchema$1, customLinkSchema$1, pageLinkSchema$1, entryLinkSchema$1;
3415
+ var init_link = __esmMin((() => {
3416
+ nullableString = z.union([z.string().min(1), z.null()]);
3417
+ RESOLVED_INTERNAL_LINK_ENTITY_TYPES = [
3418
+ "page",
3419
+ "content",
3420
+ "pageSurface"
3421
+ ];
3422
+ resolvedInternalLinkKeys = [
3423
+ "entityId",
3424
+ "entityType",
3425
+ "href",
3426
+ "title",
3427
+ "typeLabel"
3428
+ ];
3429
+ internalRouteOnlyLinkSchema = z.object({
3430
+ kind: z.literal("internal"),
3431
+ routeId: z.string().min(1)
3432
+ }).passthrough().superRefine((value, ctx) => {
3433
+ if (!resolvedInternalLinkKeys.some((key) => value[key] != null)) return;
3434
+ ctx.addIssue({
3435
+ code: "custom",
3436
+ message: "Internal links with resolved metadata must include entityId, entityType, href, title, and typeLabel"
3437
+ });
3438
+ });
3439
+ internalResolvedLinkSchema = z.object({
3440
+ kind: z.literal("internal"),
3441
+ routeId: z.string().min(1),
3442
+ entityId: z.string().min(1),
3443
+ entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
3444
+ href: z.string().min(1),
3445
+ title: z.string().min(1),
3446
+ typeLabel: z.string().min(1),
3447
+ contentTypeKey: nullableString.optional(),
3448
+ contentTypeName: nullableString.optional(),
3449
+ updatedAt: nullableString.optional()
3450
+ }).passthrough();
3451
+ internalLinkSchema = z.union([internalResolvedLinkSchema, internalRouteOnlyLinkSchema]);
3452
+ externalLinkSchema$1 = z.object({
3453
+ kind: z.literal("external"),
3454
+ href: z.string().min(1)
3455
+ }).passthrough();
3456
+ customLinkSchema$1 = z.object({
3457
+ kind: z.literal("url"),
3458
+ href: z.string().min(1)
3459
+ }).passthrough();
3460
+ pageLinkSchema$1 = z.object({
3461
+ kind: z.literal("page"),
3462
+ identifier: z.string().min(1)
3463
+ }).passthrough();
3464
+ entryLinkSchema$1 = z.object({
3465
+ kind: z.literal("entry"),
3466
+ contentType: z.string().min(1),
3467
+ identifier: z.string().min(1)
3468
+ }).passthrough();
3469
+ z.union([
3470
+ internalLinkSchema,
3471
+ externalLinkSchema$1,
3472
+ customLinkSchema$1,
3473
+ pageLinkSchema$1,
3474
+ entryLinkSchema$1
3475
+ ]);
3476
+ })), portalLinkPayloadSchema, cartLinkLabelConfigSchema, cartLinkPayloadSchema, internalLinkPayloadSchema, externalLinkSchema, customLinkSchema, pageLinkSchema, entryLinkSchema, linkPayloadSchema, navigationLinkInputSchemaOptions;
3411
3477
  var init_contracts$1 = __esmMin((() => {
3478
+ init_link();
3412
3479
  portalLinkPayloadSchema = z.object({
3413
3480
  kind: z.literal("portal"),
3414
3481
  path: z.string().trim().startsWith("/").optional(),
@@ -3430,7 +3497,7 @@ var init_contracts$1 = __esmMin((() => {
3430
3497
  kind: z.literal("internal"),
3431
3498
  routeId: z.string().uuid(),
3432
3499
  entityId: z.string().uuid(),
3433
- entityType: z.enum(["page", "content"]),
3500
+ entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
3434
3501
  href: z.string().min(1),
3435
3502
  title: z.string().min(1),
3436
3503
  typeLabel: z.string().min(1),
@@ -3438,37 +3505,37 @@ var init_contracts$1 = __esmMin((() => {
3438
3505
  contentTypeName: z.string().nullable().optional(),
3439
3506
  updatedAt: z.string().nullable().optional()
3440
3507
  }).passthrough();
3441
- externalLinkSchema$1 = z.object({
3508
+ externalLinkSchema = z.object({
3442
3509
  kind: z.literal("external"),
3443
3510
  href: z.string().url()
3444
3511
  });
3445
- customLinkSchema$1 = z.object({
3512
+ customLinkSchema = z.object({
3446
3513
  kind: z.literal("url"),
3447
3514
  href: z.string().min(1)
3448
3515
  });
3449
- pageLinkSchema$1 = z.object({
3516
+ pageLinkSchema = z.object({
3450
3517
  kind: z.literal("page"),
3451
3518
  identifier: z.string().min(1)
3452
3519
  });
3453
- entryLinkSchema$1 = z.object({
3520
+ entryLinkSchema = z.object({
3454
3521
  kind: z.literal("entry"),
3455
3522
  contentType: z.string().min(1),
3456
3523
  identifier: z.string().min(1)
3457
3524
  });
3458
3525
  linkPayloadSchema = z.discriminatedUnion("kind", [
3459
3526
  internalLinkPayloadSchema,
3460
- pageLinkSchema$1,
3461
- entryLinkSchema$1,
3462
- externalLinkSchema$1,
3463
- customLinkSchema$1,
3527
+ pageLinkSchema,
3528
+ entryLinkSchema,
3529
+ externalLinkSchema,
3530
+ customLinkSchema,
3464
3531
  portalLinkPayloadSchema,
3465
3532
  cartLinkPayloadSchema
3466
3533
  ]);
3467
3534
  navigationLinkInputSchemaOptions = [
3468
- pageLinkSchema$1,
3469
- entryLinkSchema$1,
3470
- externalLinkSchema$1,
3471
- customLinkSchema$1,
3535
+ pageLinkSchema,
3536
+ entryLinkSchema,
3537
+ externalLinkSchema,
3538
+ customLinkSchema,
3472
3539
  portalLinkPayloadSchema,
3473
3540
  cartLinkPayloadSchema
3474
3541
  ];
@@ -31916,6 +31983,24 @@ var init_bookingPaymentTerms = __esmMin((() => {
31916
31983
  })
31917
31984
  ]);
31918
31985
  blockBookingPaymentTermsSchema = z.object({ allowedOptions: z.array(blockBookingPaymentCollectionOptionSchema).min(1) });
31986
+ })), blockBookingConsentSchema, bookingRequirementConsentFieldSchema;
31987
+ var init_bookingConsent = __esmMin((() => {
31988
+ init_richTextSchema();
31989
+ blockBookingConsentSchema = z.object({
31990
+ requirementId: z.string(),
31991
+ title: z.string(),
31992
+ agreement: RichTextDocSchema,
31993
+ checkboxLabel: z.string()
31994
+ });
31995
+ bookingRequirementConsentFieldSchema = z.object({
31996
+ id: z.string(),
31997
+ label: z.string(),
31998
+ type: z.literal("booking_requirement_consent"),
31999
+ required: z.literal(true),
32000
+ agreement: RichTextDocSchema,
32001
+ checkboxLabel: z.string().min(1)
32002
+ });
32003
+ z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
31919
32004
  }));
31920
32005
  //#endregion
31921
32006
  //#region ../blocks/src/system/blocks/events/whole-series/pricing.ts
@@ -31925,6 +32010,7 @@ var init_pricing$2 = __esmMin((() => {}));
31925
32010
  var wholeSeriesVenueSchema, wholeSeriesSessionSchema, wholeSeriesTeamMemberSummarySchema, wholeSeriesPricingOptionSchema, wholeSeriesPricingSchema, publicWholeSeriesOfferingSchema, publicWholeSeriesOfferingsArraySchema;
31926
32011
  var init_schemas$2 = __esmMin((() => {
31927
32012
  init_bookingPaymentTerms();
32013
+ init_bookingConsent();
31928
32014
  wholeSeriesVenueSchema = z.object({
31929
32015
  id: z.string(),
31930
32016
  name: z.string(),
@@ -31988,6 +32074,7 @@ var init_schemas$2 = __esmMin((() => {
31988
32074
  pricing: wholeSeriesPricingSchema,
31989
32075
  currency: z.string(),
31990
32076
  paymentTerms: blockBookingPaymentTermsSchema,
32077
+ consent: blockBookingConsentSchema.nullable(),
31991
32078
  enrollmentCapacity: z.number().nullable(),
31992
32079
  acceptsMemberships: z.boolean(),
31993
32080
  status: z.enum([
@@ -32017,6 +32104,7 @@ var init_schemas$1 = __esmMin((() => {
32017
32104
  init_media$1();
32018
32105
  init_richTextSchema();
32019
32106
  init_bookingPaymentTerms();
32107
+ init_bookingConsent();
32020
32108
  init_whole_series();
32021
32109
  eventPresetSchema = z.enum([
32022
32110
  "event",
@@ -32307,6 +32395,7 @@ var init_schemas$1 = __esmMin((() => {
32307
32395
  timeZone: z.string(),
32308
32396
  pricing: publicEventPricingSchema,
32309
32397
  paymentTerms: blockBookingPaymentTermsSchema,
32398
+ consent: blockBookingConsentSchema.nullable(),
32310
32399
  accessRestriction: accessRestrictionSchema,
32311
32400
  allowedCategoryIds: z.array(z.string()),
32312
32401
  requireGuestDetails: z.boolean().optional(),
@@ -32661,6 +32750,28 @@ var init_eventScope = __esmMin((() => {
32661
32750
  });
32662
32751
  }));
32663
32752
  //#endregion
32753
+ //#region ../blocks/src/system/runtime/nodes/event-registration/registrationSurface.ts
32754
+ function planEventRegistrationScope(input) {
32755
+ const subject = input.subject;
32756
+ const selectedRunOffering = input.wholeSeriesOffering;
32757
+ if (subject?.kind !== "eventOffering" || !selectedRunOffering) return {
32758
+ kind: "context",
32759
+ events: resolveEventRegistrationScopedEvents(input.events, {
32760
+ occurrenceContext: input.occurrenceContext,
32761
+ subject
32762
+ })
32763
+ };
32764
+ if (!(selectedRunOffering.eventOfferingId === subject.eventOfferingId && subject.availableEventSeriesIds.some((seriesId) => seriesId === selectedRunOffering.eventSeriesId))) return { kind: "invalidSelectedRun" };
32765
+ return {
32766
+ kind: "selectedRun",
32767
+ events: input.events.filter((event) => event.seriesId === selectedRunOffering.eventSeriesId),
32768
+ offering: selectedRunOffering
32769
+ };
32770
+ }
32771
+ var init_registrationSurface = __esmMin((() => {
32772
+ init_eventScope();
32773
+ }));
32774
+ //#endregion
32664
32775
  //#region ../blocks/src/system/runtime/nodes/events/shared/destination.ts
32665
32776
  function isRecord$9(value) {
32666
32777
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -33022,10 +33133,13 @@ function buildEventRegistrationShellStepLabels(source) {
33022
33133
  }) : false).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
33023
33134
  }
33024
33135
  function scopeEventRegistrationEvents(source) {
33025
- return resolveEventRegistrationScopedEvents(toRegistrationEvents(source.events ?? []), {
33136
+ const scope = planEventRegistrationScope({
33137
+ events: toRegistrationEvents(source.events ?? []),
33138
+ wholeSeriesOffering: source.wholeSeriesOffering,
33026
33139
  occurrenceContext: source.occurrenceContext,
33027
33140
  subject: source.subject
33028
33141
  });
33142
+ return scope.kind === "invalidSelectedRun" ? [] : scope.events;
33029
33143
  }
33030
33144
  function shellLabelForRegistrationStep(step, events) {
33031
33145
  switch (step) {
@@ -33069,6 +33183,7 @@ var init_event_registration_interactive = __esmMin((() => {
33069
33183
  init_shop_shared();
33070
33184
  init_event_registration_shared();
33071
33185
  init_eventScope();
33186
+ init_registrationSurface();
33072
33187
  init_pricing$1();
33073
33188
  init_destination();
33074
33189
  init_islands();
@@ -36786,6 +36901,7 @@ function isRecord$5(value) {
36786
36901
  }
36787
36902
  var publicRouteCandidatesSchema, groupOverrideFields, offeringsPreviewFields, offeringsPreviewEventDataBindings, offeringsPreviewConfig, offeringsPreviewManifest, optionalPublicEventsArraySchema, offeringsPreviewEventDataSchemas, offeringsPreviewEventDataLoaders, offeringsPreviewBlockDefinition;
36788
36903
  var init_offerings_preview = __esmMin((() => {
36904
+ init_link();
36789
36905
  init_builder$1();
36790
36906
  init_styledSection();
36791
36907
  init_fragments$1();
@@ -36801,7 +36917,7 @@ var init_offerings_preview = __esmMin((() => {
36801
36917
  entityId: z.string(),
36802
36918
  path: z.string(),
36803
36919
  title: z.string(),
36804
- kind: z.enum(["page", "content"]),
36920
+ kind: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
36805
36921
  contentTypeKey: z.string().nullable().optional()
36806
36922
  })) });
36807
36923
  groupOverrideFields = [
@@ -43164,63 +43280,6 @@ var init_hints = __esmMin((() => {
43164
43280
  //#region ../blocks/src/system/ai/index.ts
43165
43281
  var init_ai = __esmMin((() => {
43166
43282
  init_hints();
43167
- })), nullableString, resolvedInternalLinkKeys, internalRouteOnlyLinkSchema, internalResolvedLinkSchema, internalLinkSchema, externalLinkSchema, customLinkSchema, pageLinkSchema, entryLinkSchema;
43168
- var init_link = __esmMin((() => {
43169
- nullableString = z.union([z.string().min(1), z.null()]);
43170
- resolvedInternalLinkKeys = [
43171
- "entityId",
43172
- "entityType",
43173
- "href",
43174
- "title",
43175
- "typeLabel"
43176
- ];
43177
- internalRouteOnlyLinkSchema = z.object({
43178
- kind: z.literal("internal"),
43179
- routeId: z.string().min(1)
43180
- }).passthrough().superRefine((value, ctx) => {
43181
- if (!resolvedInternalLinkKeys.some((key) => value[key] != null)) return;
43182
- ctx.addIssue({
43183
- code: "custom",
43184
- message: "Internal links with resolved metadata must include entityId, entityType, href, title, and typeLabel"
43185
- });
43186
- });
43187
- internalResolvedLinkSchema = z.object({
43188
- kind: z.literal("internal"),
43189
- routeId: z.string().min(1),
43190
- entityId: z.string().min(1),
43191
- entityType: z.enum(["page", "content"]),
43192
- href: z.string().min(1),
43193
- title: z.string().min(1),
43194
- typeLabel: z.string().min(1),
43195
- contentTypeKey: nullableString.optional(),
43196
- contentTypeName: nullableString.optional(),
43197
- updatedAt: nullableString.optional()
43198
- }).passthrough();
43199
- internalLinkSchema = z.union([internalResolvedLinkSchema, internalRouteOnlyLinkSchema]);
43200
- externalLinkSchema = z.object({
43201
- kind: z.literal("external"),
43202
- href: z.string().min(1)
43203
- }).passthrough();
43204
- customLinkSchema = z.object({
43205
- kind: z.literal("url"),
43206
- href: z.string().min(1)
43207
- }).passthrough();
43208
- pageLinkSchema = z.object({
43209
- kind: z.literal("page"),
43210
- identifier: z.string().min(1)
43211
- }).passthrough();
43212
- entryLinkSchema = z.object({
43213
- kind: z.literal("entry"),
43214
- contentType: z.string().min(1),
43215
- identifier: z.string().min(1)
43216
- }).passthrough();
43217
- z.union([
43218
- internalLinkSchema,
43219
- externalLinkSchema,
43220
- customLinkSchema,
43221
- pageLinkSchema,
43222
- entryLinkSchema
43223
- ]);
43224
43283
  }));
43225
43284
  //#endregion
43226
43285
  //#region ../blocks/src/system/media/constrainedVideoMedia.ts
@@ -8196,7 +8196,7 @@ var SimpleCache = class {
8196
8196
  * 1. This constant
8197
8197
  * 2. The "version" field in package.json
8198
8198
  */
8199
- const SDK_VERSION = "0.132.0";
8199
+ const SDK_VERSION = "0.134.0";
8200
8200
  //#endregion
8201
8201
  //#region src/client/error.ts
8202
8202
  let _Symbol$for;
@@ -11393,6 +11393,68 @@ z.object({
11393
11393
  monthlyCurrency: z.literal("gbp")
11394
11394
  });
11395
11395
  //#endregion
11396
+ //#region ../blocks/src/system/types/link.ts
11397
+ const nullableString = z.union([z.string().min(1), z.null()]);
11398
+ const RESOLVED_INTERNAL_LINK_ENTITY_TYPES = [
11399
+ "page",
11400
+ "content",
11401
+ "pageSurface"
11402
+ ];
11403
+ const resolvedInternalLinkKeys = [
11404
+ "entityId",
11405
+ "entityType",
11406
+ "href",
11407
+ "title",
11408
+ "typeLabel"
11409
+ ];
11410
+ const internalRouteOnlyLinkSchema = z.object({
11411
+ kind: z.literal("internal"),
11412
+ routeId: z.string().min(1)
11413
+ }).passthrough().superRefine((value, ctx) => {
11414
+ if (!resolvedInternalLinkKeys.some((key) => value[key] != null)) return;
11415
+ ctx.addIssue({
11416
+ code: "custom",
11417
+ message: "Internal links with resolved metadata must include entityId, entityType, href, title, and typeLabel"
11418
+ });
11419
+ });
11420
+ const internalResolvedLinkSchema = z.object({
11421
+ kind: z.literal("internal"),
11422
+ routeId: z.string().min(1),
11423
+ entityId: z.string().min(1),
11424
+ entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
11425
+ href: z.string().min(1),
11426
+ title: z.string().min(1),
11427
+ typeLabel: z.string().min(1),
11428
+ contentTypeKey: nullableString.optional(),
11429
+ contentTypeName: nullableString.optional(),
11430
+ updatedAt: nullableString.optional()
11431
+ }).passthrough();
11432
+ const internalLinkSchema = z.union([internalResolvedLinkSchema, internalRouteOnlyLinkSchema]);
11433
+ const externalLinkSchema$1 = z.object({
11434
+ kind: z.literal("external"),
11435
+ href: z.string().min(1)
11436
+ }).passthrough();
11437
+ const customLinkSchema$1 = z.object({
11438
+ kind: z.literal("url"),
11439
+ href: z.string().min(1)
11440
+ }).passthrough();
11441
+ const pageLinkSchema$1 = z.object({
11442
+ kind: z.literal("page"),
11443
+ identifier: z.string().min(1)
11444
+ }).passthrough();
11445
+ const entryLinkSchema$1 = z.object({
11446
+ kind: z.literal("entry"),
11447
+ contentType: z.string().min(1),
11448
+ identifier: z.string().min(1)
11449
+ }).passthrough();
11450
+ z.union([
11451
+ internalLinkSchema,
11452
+ externalLinkSchema$1,
11453
+ customLinkSchema$1,
11454
+ pageLinkSchema$1,
11455
+ entryLinkSchema$1
11456
+ ]);
11457
+ //#endregion
11396
11458
  //#region ../api/src/navigation/contracts.ts
11397
11459
  /**
11398
11460
  * Canonical navigation/link Zod contracts.
@@ -11422,7 +11484,7 @@ const internalLinkPayloadSchema = z.object({
11422
11484
  kind: z.literal("internal"),
11423
11485
  routeId: z.string().uuid(),
11424
11486
  entityId: z.string().uuid(),
11425
- entityType: z.enum(["page", "content"]),
11487
+ entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
11426
11488
  href: z.string().min(1),
11427
11489
  title: z.string().min(1),
11428
11490
  typeLabel: z.string().min(1),
@@ -35402,6 +35464,23 @@ const blockBookingPaymentCollectionOptionSchema = z.union([
35402
35464
  ]);
35403
35465
  const blockBookingPaymentTermsSchema = z.object({ allowedOptions: z.array(blockBookingPaymentCollectionOptionSchema).min(1) });
35404
35466
  //#endregion
35467
+ //#region ../blocks/src/system/blocks/shared/bookingConsent.ts
35468
+ const blockBookingConsentSchema = z.object({
35469
+ requirementId: z.string(),
35470
+ title: z.string(),
35471
+ agreement: RichTextDocSchema,
35472
+ checkboxLabel: z.string()
35473
+ });
35474
+ const bookingRequirementConsentFieldSchema = z.object({
35475
+ id: z.string(),
35476
+ label: z.string(),
35477
+ type: z.literal("booking_requirement_consent"),
35478
+ required: z.literal(true),
35479
+ agreement: RichTextDocSchema,
35480
+ checkboxLabel: z.string().min(1)
35481
+ });
35482
+ z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
35483
+ //#endregion
35405
35484
  //#region ../blocks/src/system/blocks/events/whole-series/schemas.ts
35406
35485
  const wholeSeriesVenueSchema = z.object({
35407
35486
  id: z.string(),
@@ -35466,6 +35545,7 @@ const publicWholeSeriesOfferingSchema = z.object({
35466
35545
  pricing: wholeSeriesPricingSchema,
35467
35546
  currency: z.string(),
35468
35547
  paymentTerms: blockBookingPaymentTermsSchema,
35548
+ consent: blockBookingConsentSchema.nullable(),
35469
35549
  enrollmentCapacity: z.number().nullable(),
35470
35550
  acceptsMemberships: z.boolean(),
35471
35551
  status: z.enum([
@@ -35783,6 +35863,7 @@ const publicEventSchema = z.object({
35783
35863
  timeZone: z.string(),
35784
35864
  pricing: publicEventPricingSchema,
35785
35865
  paymentTerms: blockBookingPaymentTermsSchema,
35866
+ consent: blockBookingConsentSchema.nullable(),
35786
35867
  accessRestriction: accessRestrictionSchema,
35787
35868
  allowedCategoryIds: z.array(z.string()),
35788
35869
  requireGuestDetails: z.boolean().optional(),
@@ -36131,6 +36212,25 @@ function resolveEventRegistrationScopedEvents(events, context) {
36131
36212
  return applyEventRegistrationScope(events, resolveEventRegistrationScope(context));
36132
36213
  }
36133
36214
  //#endregion
36215
+ //#region ../blocks/src/system/runtime/nodes/event-registration/registrationSurface.ts
36216
+ function planEventRegistrationScope(input) {
36217
+ const subject = input.subject;
36218
+ const selectedRunOffering = input.wholeSeriesOffering;
36219
+ if (subject?.kind !== "eventOffering" || !selectedRunOffering) return {
36220
+ kind: "context",
36221
+ events: resolveEventRegistrationScopedEvents(input.events, {
36222
+ occurrenceContext: input.occurrenceContext,
36223
+ subject
36224
+ })
36225
+ };
36226
+ if (!(selectedRunOffering.eventOfferingId === subject.eventOfferingId && subject.availableEventSeriesIds.some((seriesId) => seriesId === selectedRunOffering.eventSeriesId))) return { kind: "invalidSelectedRun" };
36227
+ return {
36228
+ kind: "selectedRun",
36229
+ events: input.events.filter((event) => event.seriesId === selectedRunOffering.eventSeriesId),
36230
+ offering: selectedRunOffering
36231
+ };
36232
+ }
36233
+ //#endregion
36134
36234
  //#region ../blocks/src/system/runtime/nodes/events/shared/destination.ts
36135
36235
  function isRecord$10(value) {
36136
36236
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -36544,10 +36644,13 @@ function buildEventRegistrationShellStepLabels(source) {
36544
36644
  }) : false).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
36545
36645
  }
36546
36646
  function scopeEventRegistrationEvents(source) {
36547
- return resolveEventRegistrationScopedEvents(toRegistrationEvents(source.events ?? []), {
36647
+ const scope = planEventRegistrationScope({
36648
+ events: toRegistrationEvents(source.events ?? []),
36649
+ wholeSeriesOffering: source.wholeSeriesOffering,
36548
36650
  occurrenceContext: source.occurrenceContext,
36549
36651
  subject: source.subject
36550
36652
  });
36653
+ return scope.kind === "invalidSelectedRun" ? [] : scope.events;
36551
36654
  }
36552
36655
  function shellLabelForRegistrationStep(step, events) {
36553
36656
  switch (step) {
@@ -39984,7 +40087,7 @@ const publicRouteCandidatesSchema = z.object({ routes: z.array(z.object({
39984
40087
  entityId: z.string(),
39985
40088
  path: z.string(),
39986
40089
  title: z.string(),
39987
- kind: z.enum(["page", "content"]),
40090
+ kind: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
39988
40091
  contentTypeKey: z.string().nullable().optional()
39989
40092
  })) });
39990
40093
  const groupOverrideFields = [
@@ -25729,8 +25729,8 @@ ${root} .form-select:disabled {
25729
25729
  }`);
25730
25730
  cssBlocks.push(`${root} .form-checkbox {
25731
25731
  appearance: none;
25732
- width: 1rem;
25733
- height: 1rem;
25732
+ width: 1.125rem;
25733
+ height: 1.125rem;
25734
25734
  flex-shrink: 0;
25735
25735
  border: ${borderWidth} solid rgb(var(--tb-${settings.borderToken}));
25736
25736
  border-radius: 0.25rem;
@@ -25740,8 +25740,8 @@ ${root} .form-select:disabled {
25740
25740
  }`);
25741
25741
  cssBlocks.push(`${root} .form-radio {
25742
25742
  appearance: none;
25743
- width: 1rem;
25744
- height: 1rem;
25743
+ width: 1.125rem;
25744
+ height: 1.125rem;
25745
25745
  flex-shrink: 0;
25746
25746
  border: ${borderWidth} solid rgb(var(--tb-${settings.borderToken}));
25747
25747
  border-radius: 9999px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riverbankcms/sdk",
3
- "version": "0.132.0",
3
+ "version": "0.134.0",
4
4
  "description": "Riverbank CMS SDK for headless content consumption",
5
5
  "main": "./dist/server/index.mjs",
6
6
  "module": "./dist/server/index.mjs",
@@ -295,7 +295,7 @@
295
295
  "eslint": "^9.39.2",
296
296
  "happy-dom": "^20.10.6",
297
297
  "lucide-react": "^1.21.0",
298
- "next": "^16.2.9",
298
+ "next": "^16.3.3",
299
299
  "typescript": "^6.0.3"
300
300
  },
301
301
  "repository": {
@@ -1,26 +0,0 @@
1
- //#region ../blocks/src/system/runtime/shared/utils/checkoutUrls.ts
2
- /**
3
- * Build return URLs for Stripe checkout redirect.
4
- *
5
- * Constructs success and cancel URLs that preserve existing query params
6
- * and include the block anchor hash for post-redirect scroll targeting.
7
- *
8
- * @param paramName - Query parameter name to add (e.g., 'enrollment', 'registration')
9
- * @param anchorId - Block anchor ID for hash fragment (e.g., 'course-registration')
10
- * @returns Object with success and cancel URLs
11
- */
12
- function buildCheckoutReturnUrls(paramName, anchorId) {
13
- const currentUrl = new URL(window.location.href);
14
- const hash = `#${anchorId}`;
15
- const successParams = new URLSearchParams(currentUrl.search);
16
- successParams.set(paramName, "success");
17
- const successUrl = `${currentUrl.origin}${currentUrl.pathname}?${successParams.toString()}${hash}`;
18
- const cancelParams = new URLSearchParams(currentUrl.search);
19
- cancelParams.set(paramName, "cancelled");
20
- return {
21
- successUrl,
22
- cancelUrl: `${currentUrl.origin}${currentUrl.pathname}?${cancelParams.toString()}${hash}`
23
- };
24
- }
25
- //#endregion
26
- export { buildCheckoutReturnUrls as t };