@riverbankcms/sdk 0.91.0 → 0.93.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 (118) hide show
  1. package/dist/{PreviewEditorSidebar-3TT47WCF.mjs → PreviewEditorSidebar-D3PAF7NW.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-ORCLLUNZ.mjs → PreviewEditorUI-G5JVJEIJ.mjs} +3 -3
  3. package/dist/SdkPreviewModeRuntime-NHTLRNQD.mjs +8 -0
  4. package/dist/_dts/api/src/bookingConfig.d.ts +13 -1
  5. package/dist/_dts/api/src/bookingOperations.d.ts +1 -0
  6. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +6 -6
  7. package/dist/_dts/api/src/common/envelope.d.ts +10 -0
  8. package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +4 -4
  9. package/dist/_dts/api/src/index.d.ts +2 -2
  10. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +6 -0
  11. package/dist/_dts/api/src/request.d.ts +1 -1
  12. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +32 -0
  13. package/dist/_dts/blocks/src/system/blocks/courses/shared/pricing.d.ts +12 -1
  14. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +12 -0
  15. package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +4 -1
  16. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +44 -0
  17. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +8 -0
  18. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +8 -1
  19. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -1
  20. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -0
  21. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +4 -0
  22. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +40 -0
  23. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
  24. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +29 -0
  25. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +1 -0
  26. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/components.d.ts +6 -0
  27. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationWizard.d.ts +8 -0
  28. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +8 -0
  29. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +1 -0
  30. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +1 -1
  31. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +1 -0
  32. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +9 -0
  33. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +14 -14
  34. package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +1 -1
  35. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +5 -15
  36. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +46 -0
  37. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +43 -36
  38. package/dist/_dts/content-model/src/entry-slots/types.d.ts +110 -2
  39. package/dist/_dts/core/src/branded.d.ts +3 -0
  40. package/dist/_dts/core/src/event-pricing.d.ts +18 -1
  41. package/dist/_dts/core/src/money-input.d.ts +34 -4
  42. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +70 -0
  43. package/dist/_dts/media-core/src/fileAssetCompatibility.d.ts +1 -1
  44. package/dist/_dts/media-core/src/filePersistence.d.ts +5 -1
  45. package/dist/_dts/media-core/src/fileStorage.d.ts +1 -0
  46. package/dist/_dts/media-core/src/fileUploadFinalization.d.ts +29 -1
  47. package/dist/_dts/media-core/src/index.d.ts +1 -0
  48. package/dist/_dts/media-core/src/legacyMediaValue.d.ts +11 -0
  49. package/dist/_dts/media-core/src/videoPrep.d.ts +15 -6
  50. package/dist/_dts/media-core/src/videoSlotPolicy.d.ts +5 -5
  51. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +2 -1
  52. package/dist/_dts/sdk/src/cli/commands/push/execute/diff.d.ts +2 -0
  53. package/dist/_dts/sdk/src/cli/commands/push/execute/localMediaReporting.d.ts +23 -0
  54. package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +54 -0
  55. package/dist/_dts/sdk/src/cli/commands/push/scopes/mediaPrep.d.ts +7 -2
  56. package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +6 -0
  57. package/dist/_dts/sdk/src/cli/media/local-sync.d.ts +35 -0
  58. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +23 -1
  59. package/dist/_dts/sdk/src/version.d.ts +1 -1
  60. package/dist/{chunk-GDT2QGIL.mjs → chunk-A63UXN3P.mjs} +21 -19
  61. package/dist/{chunk-U5YM4AWE.mjs → chunk-AJZGT6YG.mjs} +1 -1
  62. package/dist/{chunk-AFPMCLS7.mjs → chunk-AQ6RT6LZ.mjs} +2 -2
  63. package/dist/{chunk-ZA2S7H34.mjs → chunk-NT76QGIJ.mjs} +98 -1
  64. package/dist/{chunk-RQUZYSES.mjs → chunk-PCNCETBI.mjs} +1196 -426
  65. package/dist/{chunk-S3YHJWEU.mjs → chunk-XIK2HYI3.mjs} +7 -7
  66. package/dist/cli/index.mjs +749 -166
  67. package/dist/client/{accordion-AFX37652.mjs → accordion-RNQIPG55.mjs} +2 -2
  68. package/dist/client/{bookingForm-32V5QCOW.mjs → bookingForm-HYEEVRLP.mjs} +89 -14
  69. package/dist/client/bookings.mjs +243 -17
  70. package/dist/client/{carousel-TJGQJ7ER.mjs → carousel-W7DQ3YPU.mjs} +3 -3
  71. package/dist/client/{cart-JUU2JEW4.mjs → cart-PXJ3SXXO.mjs} +7 -7
  72. package/dist/client/{checkout-RD6BTFX4.mjs → checkout-X3JYSOXI.mjs} +7 -7
  73. package/dist/client/{chunk-MLBNVN4H.mjs → chunk-6SYGVVWA.mjs} +67 -4
  74. package/dist/client/{chunk-E6VIWZUG.mjs → chunk-DUOHLWLF.mjs} +3 -3
  75. package/dist/client/{chunk-6QZIBNGV.mjs → chunk-IXDSXF2D.mjs} +154 -16
  76. package/dist/client/{chunk-CKXEUWWA.mjs → chunk-J6TMMMXW.mjs} +3 -3
  77. package/dist/client/{chunk-PMNAV6LO.mjs → chunk-JNE6UI6U.mjs} +7 -6
  78. package/dist/client/{chunk-ISAUXU5R.mjs → chunk-OLAOAZEO.mjs} +1 -1
  79. package/dist/client/{chunk-RWYFG625.mjs → chunk-PCHACQEB.mjs} +30 -2
  80. package/dist/client/{chunk-FMZZHAIR.mjs → chunk-PICR3NTQ.mjs} +52 -5
  81. package/dist/client/{chunk-6RN62XBV.mjs → chunk-Q47XGAGS.mjs} +1 -1
  82. package/dist/client/{chunk-WHZQDPBZ.mjs → chunk-TNGL2WJF.mjs} +1 -0
  83. package/dist/client/{chunk-C4LP6BPG.mjs → chunk-WERRJXNJ.mjs} +1 -1
  84. package/dist/client/{chunk-RMOFBBNA.mjs → chunk-YYVGSYBO.mjs} +6 -6
  85. package/dist/client/client.mjs +641 -54
  86. package/dist/client/{courseRegistration-X63QAIVV.mjs → courseRegistration-QZ67PVHO.mjs} +111 -11
  87. package/dist/client/{eventCalendar-5T24GCZL.mjs → eventCalendar-V3BDHQNT.mjs} +9 -9
  88. package/dist/client/{eventCombined-AZVTF22X.mjs → eventCombined-XYFRN2RG.mjs} +9 -9
  89. package/dist/client/{eventDetails-7GPFNLGF.mjs → eventDetails-TFE5TWKV.mjs} +9 -9
  90. package/dist/client/{eventListing-QEUMTMUM.mjs → eventListing-IQ6AGWZ6.mjs} +9 -9
  91. package/dist/client/{eventRegistration-P2EDKCQZ.mjs → eventRegistration-WGJVFKQJ.mjs} +9 -9
  92. package/dist/client/{form-NUJ7H4IN.mjs → form-6UZY6RUA.mjs} +3 -3
  93. package/dist/client/{headerSection-JB7LECPL.mjs → headerSection-RSFXY6V3.mjs} +3 -3
  94. package/dist/client/hooks.mjs +57 -5
  95. package/dist/client/{locationMap-UEYWUCSW.mjs → locationMap-24FH67I4.mjs} +3 -3
  96. package/dist/client/{newsletterForm-S2YZQ2X7.mjs → newsletterForm-QVL3MLTN.mjs} +3 -3
  97. package/dist/client/{productDetail-H5MADGG7.mjs → productDetail-ZDYN3G4T.mjs} +7 -7
  98. package/dist/client/{productList-DK7YON7H.mjs → productList-4BMJLQHZ.mjs} +7 -7
  99. package/dist/client/rendering/client.mjs +503 -36
  100. package/dist/client/rendering/islands.mjs +19 -19
  101. package/dist/client/rendering.mjs +583 -39
  102. package/dist/client/{shop-6PA7RDRJ.mjs → shop-U5C634FF.mjs} +7 -7
  103. package/dist/preview-next/client/runtime.mjs +5 -5
  104. package/dist/{sdk-runtime-JP5347OB.mjs → sdk-runtime-VGV46WVB.mjs} +6 -6
  105. package/dist/server/components.mjs +287 -68
  106. package/dist/server/config-validation.mjs +58 -5
  107. package/dist/server/config.mjs +58 -5
  108. package/dist/server/data.mjs +57 -5
  109. package/dist/server/index.mjs +104 -29
  110. package/dist/server/next.mjs +347 -85
  111. package/dist/server/page-converter.mjs +22 -5
  112. package/dist/server/prebuild.mjs +1 -1
  113. package/dist/server/rendering/server.mjs +287 -68
  114. package/dist/server/rendering.mjs +287 -68
  115. package/dist/server/routing.mjs +131 -67
  116. package/dist/server/server.mjs +189 -94
  117. package/package.json +1 -1
  118. package/dist/SdkPreviewModeRuntime-GMCDQPZZ.mjs +0 -8
@@ -6493,6 +6493,7 @@ function publicEventPricingType(pricing) {
6493
6493
  return "free";
6494
6494
  case "single_paid":
6495
6495
  case "ticket_types":
6496
+ case "sliding_scale":
6496
6497
  case "course":
6497
6498
  return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
6498
6499
  case "external":
@@ -6820,9 +6821,6 @@ function formatKeyAsLabel(key) {
6820
6821
  return key.replace(/([A-Z])/g, " $1").replace(/[-_]/g, " ").trim().split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
6821
6822
  }
6822
6823
 
6823
- // ../blocks/src/system/manifest/schema.ts
6824
- import { z as z4 } from "zod";
6825
-
6826
6824
  // ../media-core/src/transformRect.ts
6827
6825
  function isValidTransformRectStructure(rect) {
6828
6826
  if (!Array.isArray(rect) || rect.length !== 4) return false;
@@ -6916,6 +6914,9 @@ function rotateNormalizedPoint(point, rotation) {
6916
6914
  }
6917
6915
  }
6918
6916
 
6917
+ // ../blocks/src/system/manifest/schema.ts
6918
+ import { z as z4 } from "zod";
6919
+
6919
6920
  // ../blocks/src/system/node/schema.ts
6920
6921
  import { z as z3 } from "zod";
6921
6922
  var transformStepSchema = z3.object({
@@ -28058,9 +28059,12 @@ var coursePricingOptionSchema = z42.object({
28058
28059
  });
28059
28060
  var coursePricingSchema = z42.object({
28060
28061
  bookingRequirement: z42.enum(["none", "required"]),
28061
- pricingStrategy: z42.enum(["free", "single", "tiered"]),
28062
+ pricingStrategy: z42.enum(["free", "single", "tiered", "sliding_scale"]),
28062
28063
  currency: z42.string(),
28063
28064
  singlePriceAmount: z42.number().nullable(),
28065
+ slidingMinAmount: z42.number().nullable().optional(),
28066
+ slidingMaxAmount: z42.number().nullable().optional(),
28067
+ slidingSuggestedAmount: z42.number().nullable().optional(),
28064
28068
  paymentTerms: blockBookingPaymentTermsSchema,
28065
28069
  options: z42.array(coursePricingOptionSchema)
28066
28070
  });
@@ -28214,6 +28218,19 @@ var publicEventPricingSchema = z43.discriminatedUnion("kind", [
28214
28218
  ticketTypes: z43.array(publicEventTicketTypeSchema),
28215
28219
  display: publicEventTicketTypePriceDisplaySchema
28216
28220
  }),
28221
+ z43.object({
28222
+ kind: z43.literal("sliding_scale"),
28223
+ minAmount: z43.number(),
28224
+ maxAmount: z43.number(),
28225
+ suggestedAmount: z43.number().nullable(),
28226
+ currency: z43.string(),
28227
+ display: z43.object({
28228
+ kind: z43.literal("range"),
28229
+ minAmount: z43.number(),
28230
+ maxAmount: z43.number(),
28231
+ currency: z43.string()
28232
+ })
28233
+ }),
28217
28234
  z43.object({
28218
28235
  kind: z43.literal("course"),
28219
28236
  display: z43.object({ kind: z43.literal("course"), display: publicCoursePriceDisplaySchema })
@@ -28630,7 +28647,7 @@ function isRecord4(value) {
28630
28647
  }
28631
28648
  function isPublicEventPricing(value) {
28632
28649
  if (!isRecord4(value) || typeof value.kind !== "string") return false;
28633
- return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "ticket_types" || value.kind === "course" || value.kind === "external";
28650
+ return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "sliding_scale" || value.kind === "ticket_types" || value.kind === "course" || value.kind === "external";
28634
28651
  }
28635
28652
  function isPublicEventTicketType(value) {
28636
28653
  return isRecord4(value) && typeof value.id === "string";
@@ -37210,6 +37227,7 @@ var BOOKING_FORM_DATA_RESERVED_KEY_VALUES = [
37210
37227
  "selectedDate",
37211
37228
  "selectedSlot",
37212
37229
  "discountCode",
37230
+ "selectedSlidingAmountInput",
37213
37231
  "selectedCollectionOptionKind",
37214
37232
  "selectedAppointmentPackageId"
37215
37233
  ];
@@ -38382,6 +38400,38 @@ var NAMED_SURFACE_IDS = SURFACE_IDS.filter(
38382
38400
  (surfaceId) => surfaceId !== DEFAULT_SURFACE_ID
38383
38401
  );
38384
38402
 
38403
+ // ../api/src/common/envelope.ts
38404
+ var API_ERROR_CODES = [
38405
+ "auth:unauthenticated",
38406
+ "auth:token_expired",
38407
+ "auth:token_invalid",
38408
+ "auth:forbidden",
38409
+ "auth:mfa_required",
38410
+ "auth:sudo_required",
38411
+ "auth:insufficient_permissions",
38412
+ "auth:impersonation_restricted",
38413
+ "validation:invalid_input",
38414
+ "validation:missing_field",
38415
+ "validation:invalid_format",
38416
+ "validation:payload_too_large",
38417
+ "resource:not_found",
38418
+ "resource:already_exists",
38419
+ "resource:conflict",
38420
+ "resource:gone",
38421
+ "rate_limit:exceeded",
38422
+ "billing:payment_required",
38423
+ "billing:plan_limit_exceeded",
38424
+ "billing:pass_redemption_failed",
38425
+ "server:internal_error",
38426
+ "server:unavailable",
38427
+ "external:service_error",
38428
+ "external:registrar_orphaned_contact_profile",
38429
+ "network:connection_error",
38430
+ "network:timeout",
38431
+ "network:dns_error"
38432
+ ];
38433
+ var API_ERROR_CODE_SET = new Set(API_ERROR_CODES);
38434
+
38385
38435
  // ../api/src/customerMembershipOutcomes.ts
38386
38436
  var CANONICAL_REFUND_CONFLICT_CODES = [
38387
38437
  "already_refunded",
@@ -38391,6 +38441,7 @@ var CANONICAL_REFUND_CONFLICT_CODES = [
38391
38441
  ];
38392
38442
  var CANONICAL_REFUND_PLANNER_ERROR_CODES = [
38393
38443
  ...CANONICAL_REFUND_CONFLICT_CODES,
38444
+ "invalid_amount",
38394
38445
  "amount_exceeds_remaining",
38395
38446
  "pass_revoke_requires_full_refund",
38396
38447
  "refund_failed"
@@ -38417,6 +38468,7 @@ var CUSTOMER_MEMBERSHIP_PAYMENT_REFUND_FAILED_CODES = [
38417
38468
  // ../api/src/bookingRefundOutcomes.ts
38418
38469
  var STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
38419
38470
  "missing_amount",
38471
+ "invalid_amount",
38420
38472
  "amount_exceeds_remaining",
38421
38473
  "credit_refunds_disabled",
38422
38474
  "missing_credit_customer",
@@ -38431,6 +38483,7 @@ var EVENT_ATTENDEE_REFUND_INVALID_CODES = [
38431
38483
  var MANAGED_PRODUCT_REFUND_INVALID_CODES = [
38432
38484
  "credit_refunds_disabled",
38433
38485
  "not_refundable",
38486
+ "invalid_amount",
38434
38487
  "amount_exceeds_remaining"
38435
38488
  ];
38436
38489
  var CUSTOMER_PASS_REFUND_INVALID_CODES = [
@@ -6538,6 +6538,7 @@ function publicEventPricingType(pricing) {
6538
6538
  return "free";
6539
6539
  case "single_paid":
6540
6540
  case "ticket_types":
6541
+ case "sliding_scale":
6541
6542
  case "course":
6542
6543
  return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
6543
6544
  case "external":
@@ -6865,9 +6866,6 @@ function formatKeyAsLabel(key) {
6865
6866
  return key.replace(/([A-Z])/g, " $1").replace(/[-_]/g, " ").trim().split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
6866
6867
  }
6867
6868
 
6868
- // ../blocks/src/system/manifest/schema.ts
6869
- import { z as z4 } from "zod";
6870
-
6871
6869
  // ../media-core/src/transformRect.ts
6872
6870
  function isValidTransformRectStructure(rect) {
6873
6871
  if (!Array.isArray(rect) || rect.length !== 4) return false;
@@ -6961,6 +6959,9 @@ function rotateNormalizedPoint(point, rotation) {
6961
6959
  }
6962
6960
  }
6963
6961
 
6962
+ // ../blocks/src/system/manifest/schema.ts
6963
+ import { z as z4 } from "zod";
6964
+
6964
6965
  // ../blocks/src/system/node/schema.ts
6965
6966
  import { z as z3 } from "zod";
6966
6967
  var transformStepSchema = z3.object({
@@ -28103,9 +28104,12 @@ var coursePricingOptionSchema = z42.object({
28103
28104
  });
28104
28105
  var coursePricingSchema = z42.object({
28105
28106
  bookingRequirement: z42.enum(["none", "required"]),
28106
- pricingStrategy: z42.enum(["free", "single", "tiered"]),
28107
+ pricingStrategy: z42.enum(["free", "single", "tiered", "sliding_scale"]),
28107
28108
  currency: z42.string(),
28108
28109
  singlePriceAmount: z42.number().nullable(),
28110
+ slidingMinAmount: z42.number().nullable().optional(),
28111
+ slidingMaxAmount: z42.number().nullable().optional(),
28112
+ slidingSuggestedAmount: z42.number().nullable().optional(),
28109
28113
  paymentTerms: blockBookingPaymentTermsSchema,
28110
28114
  options: z42.array(coursePricingOptionSchema)
28111
28115
  });
@@ -28259,6 +28263,19 @@ var publicEventPricingSchema = z43.discriminatedUnion("kind", [
28259
28263
  ticketTypes: z43.array(publicEventTicketTypeSchema),
28260
28264
  display: publicEventTicketTypePriceDisplaySchema
28261
28265
  }),
28266
+ z43.object({
28267
+ kind: z43.literal("sliding_scale"),
28268
+ minAmount: z43.number(),
28269
+ maxAmount: z43.number(),
28270
+ suggestedAmount: z43.number().nullable(),
28271
+ currency: z43.string(),
28272
+ display: z43.object({
28273
+ kind: z43.literal("range"),
28274
+ minAmount: z43.number(),
28275
+ maxAmount: z43.number(),
28276
+ currency: z43.string()
28277
+ })
28278
+ }),
28262
28279
  z43.object({
28263
28280
  kind: z43.literal("course"),
28264
28281
  display: z43.object({ kind: z43.literal("course"), display: publicCoursePriceDisplaySchema })
@@ -28675,7 +28692,7 @@ function isRecord4(value) {
28675
28692
  }
28676
28693
  function isPublicEventPricing(value) {
28677
28694
  if (!isRecord4(value) || typeof value.kind !== "string") return false;
28678
- return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "ticket_types" || value.kind === "course" || value.kind === "external";
28695
+ return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "sliding_scale" || value.kind === "ticket_types" || value.kind === "course" || value.kind === "external";
28679
28696
  }
28680
28697
  function isPublicEventTicketType(value) {
28681
28698
  return isRecord4(value) && typeof value.id === "string";
@@ -37255,6 +37272,7 @@ var BOOKING_FORM_DATA_RESERVED_KEY_VALUES = [
37255
37272
  "selectedDate",
37256
37273
  "selectedSlot",
37257
37274
  "discountCode",
37275
+ "selectedSlidingAmountInput",
37258
37276
  "selectedCollectionOptionKind",
37259
37277
  "selectedAppointmentPackageId"
37260
37278
  ];
@@ -38427,6 +38445,38 @@ var NAMED_SURFACE_IDS = SURFACE_IDS.filter(
38427
38445
  (surfaceId) => surfaceId !== DEFAULT_SURFACE_ID
38428
38446
  );
38429
38447
 
38448
+ // ../api/src/common/envelope.ts
38449
+ var API_ERROR_CODES = [
38450
+ "auth:unauthenticated",
38451
+ "auth:token_expired",
38452
+ "auth:token_invalid",
38453
+ "auth:forbidden",
38454
+ "auth:mfa_required",
38455
+ "auth:sudo_required",
38456
+ "auth:insufficient_permissions",
38457
+ "auth:impersonation_restricted",
38458
+ "validation:invalid_input",
38459
+ "validation:missing_field",
38460
+ "validation:invalid_format",
38461
+ "validation:payload_too_large",
38462
+ "resource:not_found",
38463
+ "resource:already_exists",
38464
+ "resource:conflict",
38465
+ "resource:gone",
38466
+ "rate_limit:exceeded",
38467
+ "billing:payment_required",
38468
+ "billing:plan_limit_exceeded",
38469
+ "billing:pass_redemption_failed",
38470
+ "server:internal_error",
38471
+ "server:unavailable",
38472
+ "external:service_error",
38473
+ "external:registrar_orphaned_contact_profile",
38474
+ "network:connection_error",
38475
+ "network:timeout",
38476
+ "network:dns_error"
38477
+ ];
38478
+ var API_ERROR_CODE_SET = new Set(API_ERROR_CODES);
38479
+
38430
38480
  // ../api/src/customerMembershipOutcomes.ts
38431
38481
  var CANONICAL_REFUND_CONFLICT_CODES = [
38432
38482
  "already_refunded",
@@ -38436,6 +38486,7 @@ var CANONICAL_REFUND_CONFLICT_CODES = [
38436
38486
  ];
38437
38487
  var CANONICAL_REFUND_PLANNER_ERROR_CODES = [
38438
38488
  ...CANONICAL_REFUND_CONFLICT_CODES,
38489
+ "invalid_amount",
38439
38490
  "amount_exceeds_remaining",
38440
38491
  "pass_revoke_requires_full_refund",
38441
38492
  "refund_failed"
@@ -38462,6 +38513,7 @@ var CUSTOMER_MEMBERSHIP_PAYMENT_REFUND_FAILED_CODES = [
38462
38513
  // ../api/src/bookingRefundOutcomes.ts
38463
38514
  var STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
38464
38515
  "missing_amount",
38516
+ "invalid_amount",
38465
38517
  "amount_exceeds_remaining",
38466
38518
  "credit_refunds_disabled",
38467
38519
  "missing_credit_customer",
@@ -38476,6 +38528,7 @@ var EVENT_ATTENDEE_REFUND_INVALID_CODES = [
38476
38528
  var MANAGED_PRODUCT_REFUND_INVALID_CODES = [
38477
38529
  "credit_refunds_disabled",
38478
38530
  "not_refundable",
38531
+ "invalid_amount",
38479
38532
  "amount_exceeds_remaining"
38480
38533
  ];
38481
38534
  var CUSTOMER_PASS_REFUND_INVALID_CODES = [
@@ -6495,6 +6495,7 @@ function publicEventPricingType(pricing) {
6495
6495
  return "free";
6496
6496
  case "single_paid":
6497
6497
  case "ticket_types":
6498
+ case "sliding_scale":
6498
6499
  case "course":
6499
6500
  return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
6500
6501
  case "external":
@@ -6822,9 +6823,6 @@ function formatKeyAsLabel(key) {
6822
6823
  return key.replace(/([A-Z])/g, " $1").replace(/[-_]/g, " ").trim().split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
6823
6824
  }
6824
6825
 
6825
- // ../blocks/src/system/manifest/schema.ts
6826
- import { z as z4 } from "zod";
6827
-
6828
6826
  // ../media-core/src/transformRect.ts
6829
6827
  function isValidTransformRectStructure(rect) {
6830
6828
  if (!Array.isArray(rect) || rect.length !== 4) return false;
@@ -6918,6 +6916,9 @@ function rotateNormalizedPoint(point, rotation) {
6918
6916
  }
6919
6917
  }
6920
6918
 
6919
+ // ../blocks/src/system/manifest/schema.ts
6920
+ import { z as z4 } from "zod";
6921
+
6921
6922
  // ../blocks/src/system/node/schema.ts
6922
6923
  import { z as z3 } from "zod";
6923
6924
  var transformStepSchema = z3.object({
@@ -28042,9 +28043,12 @@ var coursePricingOptionSchema = z42.object({
28042
28043
  });
28043
28044
  var coursePricingSchema = z42.object({
28044
28045
  bookingRequirement: z42.enum(["none", "required"]),
28045
- pricingStrategy: z42.enum(["free", "single", "tiered"]),
28046
+ pricingStrategy: z42.enum(["free", "single", "tiered", "sliding_scale"]),
28046
28047
  currency: z42.string(),
28047
28048
  singlePriceAmount: z42.number().nullable(),
28049
+ slidingMinAmount: z42.number().nullable().optional(),
28050
+ slidingMaxAmount: z42.number().nullable().optional(),
28051
+ slidingSuggestedAmount: z42.number().nullable().optional(),
28048
28052
  paymentTerms: blockBookingPaymentTermsSchema,
28049
28053
  options: z42.array(coursePricingOptionSchema)
28050
28054
  });
@@ -28198,6 +28202,19 @@ var publicEventPricingSchema = z43.discriminatedUnion("kind", [
28198
28202
  ticketTypes: z43.array(publicEventTicketTypeSchema),
28199
28203
  display: publicEventTicketTypePriceDisplaySchema
28200
28204
  }),
28205
+ z43.object({
28206
+ kind: z43.literal("sliding_scale"),
28207
+ minAmount: z43.number(),
28208
+ maxAmount: z43.number(),
28209
+ suggestedAmount: z43.number().nullable(),
28210
+ currency: z43.string(),
28211
+ display: z43.object({
28212
+ kind: z43.literal("range"),
28213
+ minAmount: z43.number(),
28214
+ maxAmount: z43.number(),
28215
+ currency: z43.string()
28216
+ })
28217
+ }),
28201
28218
  z43.object({
28202
28219
  kind: z43.literal("course"),
28203
28220
  display: z43.object({ kind: z43.literal("course"), display: publicCoursePriceDisplaySchema })
@@ -28614,7 +28631,7 @@ function isRecord4(value) {
28614
28631
  }
28615
28632
  function isPublicEventPricing(value) {
28616
28633
  if (!isRecord4(value) || typeof value.kind !== "string") return false;
28617
- return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "ticket_types" || value.kind === "course" || value.kind === "external";
28634
+ return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "sliding_scale" || value.kind === "ticket_types" || value.kind === "course" || value.kind === "external";
28618
28635
  }
28619
28636
  function isPublicEventTicketType(value) {
28620
28637
  return isRecord4(value) && typeof value.id === "string";
@@ -38815,6 +38832,38 @@ var NAMED_SURFACE_IDS = SURFACE_IDS.filter(
38815
38832
  (surfaceId) => surfaceId !== DEFAULT_SURFACE_ID
38816
38833
  );
38817
38834
 
38835
+ // ../api/src/common/envelope.ts
38836
+ var API_ERROR_CODES = [
38837
+ "auth:unauthenticated",
38838
+ "auth:token_expired",
38839
+ "auth:token_invalid",
38840
+ "auth:forbidden",
38841
+ "auth:mfa_required",
38842
+ "auth:sudo_required",
38843
+ "auth:insufficient_permissions",
38844
+ "auth:impersonation_restricted",
38845
+ "validation:invalid_input",
38846
+ "validation:missing_field",
38847
+ "validation:invalid_format",
38848
+ "validation:payload_too_large",
38849
+ "resource:not_found",
38850
+ "resource:already_exists",
38851
+ "resource:conflict",
38852
+ "resource:gone",
38853
+ "rate_limit:exceeded",
38854
+ "billing:payment_required",
38855
+ "billing:plan_limit_exceeded",
38856
+ "billing:pass_redemption_failed",
38857
+ "server:internal_error",
38858
+ "server:unavailable",
38859
+ "external:service_error",
38860
+ "external:registrar_orphaned_contact_profile",
38861
+ "network:connection_error",
38862
+ "network:timeout",
38863
+ "network:dns_error"
38864
+ ];
38865
+ var API_ERROR_CODE_SET = new Set(API_ERROR_CODES);
38866
+
38818
38867
  // ../api/src/customerMembershipOutcomes.ts
38819
38868
  var CANONICAL_REFUND_CONFLICT_CODES = [
38820
38869
  "already_refunded",
@@ -38824,6 +38873,7 @@ var CANONICAL_REFUND_CONFLICT_CODES = [
38824
38873
  ];
38825
38874
  var CANONICAL_REFUND_PLANNER_ERROR_CODES = [
38826
38875
  ...CANONICAL_REFUND_CONFLICT_CODES,
38876
+ "invalid_amount",
38827
38877
  "amount_exceeds_remaining",
38828
38878
  "pass_revoke_requires_full_refund",
38829
38879
  "refund_failed"
@@ -38850,6 +38900,7 @@ var CUSTOMER_MEMBERSHIP_PAYMENT_REFUND_FAILED_CODES = [
38850
38900
  // ../api/src/bookingRefundOutcomes.ts
38851
38901
  var STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
38852
38902
  "missing_amount",
38903
+ "invalid_amount",
38853
38904
  "amount_exceeds_remaining",
38854
38905
  "credit_refunds_disabled",
38855
38906
  "missing_credit_customer",
@@ -38864,6 +38915,7 @@ var EVENT_ATTENDEE_REFUND_INVALID_CODES = [
38864
38915
  var MANAGED_PRODUCT_REFUND_INVALID_CODES = [
38865
38916
  "credit_refunds_disabled",
38866
38917
  "not_refundable",
38918
+ "invalid_amount",
38867
38919
  "amount_exceeds_remaining"
38868
38920
  ];
38869
38921
  var CUSTOMER_PASS_REFUND_INVALID_CODES = [
@@ -6512,6 +6512,104 @@ function resolveApiBaseUrl() {
6512
6512
  return getCmsApiUrl();
6513
6513
  }
6514
6514
 
6515
+ // ../api/src/common/envelope.ts
6516
+ var API_ERROR_CODES = [
6517
+ "auth:unauthenticated",
6518
+ "auth:token_expired",
6519
+ "auth:token_invalid",
6520
+ "auth:forbidden",
6521
+ "auth:mfa_required",
6522
+ "auth:sudo_required",
6523
+ "auth:insufficient_permissions",
6524
+ "auth:impersonation_restricted",
6525
+ "validation:invalid_input",
6526
+ "validation:missing_field",
6527
+ "validation:invalid_format",
6528
+ "validation:payload_too_large",
6529
+ "resource:not_found",
6530
+ "resource:already_exists",
6531
+ "resource:conflict",
6532
+ "resource:gone",
6533
+ "rate_limit:exceeded",
6534
+ "billing:payment_required",
6535
+ "billing:plan_limit_exceeded",
6536
+ "billing:pass_redemption_failed",
6537
+ "server:internal_error",
6538
+ "server:unavailable",
6539
+ "external:service_error",
6540
+ "external:registrar_orphaned_contact_profile",
6541
+ "network:connection_error",
6542
+ "network:timeout",
6543
+ "network:dns_error"
6544
+ ];
6545
+ var API_ERROR_CODE_SET = new Set(API_ERROR_CODES);
6546
+ function isApiErrorCode(value) {
6547
+ return typeof value === "string" && API_ERROR_CODE_SET.has(value);
6548
+ }
6549
+ function isApiError(result) {
6550
+ return result.success === false;
6551
+ }
6552
+ function isApiSuccess(result) {
6553
+ return result.success === true;
6554
+ }
6555
+ function isRecord(value) {
6556
+ return typeof value === "object" && value !== null && !Array.isArray(value);
6557
+ }
6558
+ function isFieldError(value) {
6559
+ return isRecord(value) && typeof value.field === "string" && typeof value.code === "string" && typeof value.message === "string";
6560
+ }
6561
+ function fieldErrorsFromUnknown(value) {
6562
+ if (!Array.isArray(value)) return null;
6563
+ return value.every(isFieldError) ? value : null;
6564
+ }
6565
+ function extractEnvelopeErrorObject(body) {
6566
+ if (!isRecord(body)) return null;
6567
+ const error = body.error;
6568
+ if (!isRecord(error)) return null;
6569
+ if ("success" in body && body.success !== false) {
6570
+ return null;
6571
+ }
6572
+ return error;
6573
+ }
6574
+ function extractApiEnvelopeErrorDetails(body) {
6575
+ const error = extractEnvelopeErrorObject(body);
6576
+ if (!error) {
6577
+ return {
6578
+ rawCode: null,
6579
+ code: null,
6580
+ message: null,
6581
+ status: null,
6582
+ fieldErrors: null
6583
+ };
6584
+ }
6585
+ const rawCode = typeof error.code === "string" ? error.code : null;
6586
+ const message = typeof error.message === "string" && error.message.trim().length > 0 ? error.message : null;
6587
+ return {
6588
+ rawCode,
6589
+ code: isApiErrorCode(rawCode) ? rawCode : null,
6590
+ message,
6591
+ status: typeof error.status === "number" && Number.isFinite(error.status) ? error.status : null,
6592
+ fieldErrors: fieldErrorsFromUnknown(error.fieldErrors)
6593
+ };
6594
+ }
6595
+ var ApiEnvelopeError = class extends Error {
6596
+ constructor(error) {
6597
+ super(error.message);
6598
+ this.name = "ApiEnvelopeError";
6599
+ this.code = error.code;
6600
+ this.requestId = error.requestId;
6601
+ this.timestamp = error.timestamp;
6602
+ this.status = error.status;
6603
+ this.fieldErrors = error.fieldErrors;
6604
+ }
6605
+ };
6606
+ function unwrapResponse(result) {
6607
+ if (isApiSuccess(result)) {
6608
+ return result.data;
6609
+ }
6610
+ throw new ApiEnvelopeError(result.error);
6611
+ }
6612
+
6515
6613
  // ../api/src/request.ts
6516
6614
  var revalidateTag = null;
6517
6615
  var revalidateTagResolved = false;
@@ -6890,6 +6988,7 @@ function createParsedClient(rawClient) {
6890
6988
  const auth = config.auth ?? "user";
6891
6989
  if (!response.ok) {
6892
6990
  const body = await parseErrorBody(response);
6991
+ const envelopeError = extractApiEnvelopeErrorDetails(body);
6893
6992
  const requestId = response.headers.get("x-request-id") ?? void 0;
6894
6993
  const retryAfterMs = parseRetryAfterHeader(response.headers.get("retry-after"));
6895
6994
  throw new ApiRequestError(
@@ -6901,6 +7000,7 @@ function createParsedClient(rawClient) {
6901
7000
  auth,
6902
7001
  requestId,
6903
7002
  body,
7003
+ errorCode: envelopeError.code ?? void 0,
6904
7004
  retryAfterMs
6905
7005
  }
6906
7006
  );
@@ -6921,31 +7021,6 @@ function createBearerAPIClient(token, baseUrl) {
6921
7021
  return createCMSClient(authHeaders, baseUrl);
6922
7022
  }
6923
7023
 
6924
- // ../api/src/common/envelope.ts
6925
- function isApiError(result) {
6926
- return result.success === false;
6927
- }
6928
- function isApiSuccess(result) {
6929
- return result.success === true;
6930
- }
6931
- var ApiEnvelopeError = class extends Error {
6932
- constructor(error) {
6933
- super(error.message);
6934
- this.name = "ApiEnvelopeError";
6935
- this.code = error.code;
6936
- this.requestId = error.requestId;
6937
- this.timestamp = error.timestamp;
6938
- this.status = error.status;
6939
- this.fieldErrors = error.fieldErrors;
6940
- }
6941
- };
6942
- function unwrapResponse(result) {
6943
- if (isApiSuccess(result)) {
6944
- return result.data;
6945
- }
6946
- throw new ApiEnvelopeError(result.error);
6947
- }
6948
-
6949
7024
  // src/client/cache.ts
6950
7025
  var SimpleCache = class {
6951
7026
  constructor(options = {}) {
@@ -7062,7 +7137,7 @@ var SimpleCache = class {
7062
7137
  };
7063
7138
 
7064
7139
  // src/version.ts
7065
- var SDK_VERSION = "0.91.0";
7140
+ var SDK_VERSION = "0.93.0";
7066
7141
 
7067
7142
  // src/client/error.ts
7068
7143
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -9636,20 +9711,20 @@ async function prebuildCache(options) {
9636
9711
  // src/prebuild/loader.ts
9637
9712
  import * as fs2 from "fs";
9638
9713
  import * as path2 from "path";
9639
- function isRecord(value) {
9714
+ function isRecord2(value) {
9640
9715
  return Boolean(value && typeof value === "object" && !Array.isArray(value));
9641
9716
  }
9642
9717
  function isStringArray(value) {
9643
9718
  return Array.isArray(value) && value.every((item) => typeof item === "string");
9644
9719
  }
9645
9720
  function isPrebuildManifest(value) {
9646
- if (!isRecord(value)) return false;
9721
+ if (!isRecord2(value)) return false;
9647
9722
  if (typeof value.version !== "string") return false;
9648
9723
  if (typeof value.generatedAt !== "string") return false;
9649
9724
  if (typeof value.checksum !== "string") return false;
9650
9725
  if (typeof value.siteId !== "string") return false;
9651
9726
  if (typeof value.sdkVersion !== "string") return false;
9652
- if (!isRecord(value.keyToFile)) return false;
9727
+ if (!isRecord2(value.keyToFile)) return false;
9653
9728
  if (!isStringArray(value.includedTypes)) return false;
9654
9729
  if (typeof value.fileCount !== "number") return false;
9655
9730
  if (typeof value.totalSize !== "number") return false;