@riverbankcms/sdk 0.84.0 → 0.84.1

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 (78) hide show
  1. package/dist/{PreviewEditorSidebar-HML67UDA.mjs → PreviewEditorSidebar-X7RLMEI6.mjs} +2 -2
  2. package/dist/{PreviewEditorUI-I4BQUU6K.mjs → PreviewEditorUI-CT67N4O3.mjs} +2 -2
  3. package/dist/SdkPreviewModeRuntime-EIMQ3S2V.mjs +8 -0
  4. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -4
  5. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -6
  6. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
  7. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +0 -2
  8. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/constants.d.ts +1 -0
  9. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +275 -0
  10. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.override.d.ts +10 -0
  11. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +22 -0
  12. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.state.d.ts +3 -303
  13. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +9 -1
  14. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +8 -6
  15. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +6 -4
  16. package/dist/_dts/sdk/src/version.d.ts +1 -1
  17. package/dist/{chunk-MSHZO4SL.mjs → chunk-O62NDCTI.mjs} +268 -186
  18. package/dist/{chunk-HFMGVJCE.mjs → chunk-QRKJDWT7.mjs} +5 -5
  19. package/dist/{chunk-6X2OVO3S.mjs → chunk-RCTJAZSK.mjs} +1 -1
  20. package/dist/{chunk-5E33VO6J.mjs → chunk-X5ZCSU6F.mjs} +1 -1
  21. package/dist/cli/index.mjs +323 -35
  22. package/dist/cli/init-docs/content/agents-section.md +5 -0
  23. package/dist/cli/init-docs/content/cli-reference.md +13 -0
  24. package/dist/cli/init-docs/content/content-management.md +31 -0
  25. package/dist/cli/init-docs/content/getting-started.md +12 -0
  26. package/dist/cli/init-docs/content/workflow-add-block.md +3 -1
  27. package/dist/cli/init-docs/content/workflow-agent-safe-sync.md +81 -0
  28. package/dist/cli/init-docs/content/workflow-create-page.md +13 -3
  29. package/dist/cli/init-docs/content/workflow-custom-block.md +9 -0
  30. package/dist/cli/init-docs/content/workflow-templates.md +14 -0
  31. package/dist/client/{accordion-ESY65T56.mjs → accordion-2UZPBMYM.mjs} +1 -1
  32. package/dist/client/{bookingForm-JRFNZUHD.mjs → bookingForm-DYXT6YB6.mjs} +3 -3
  33. package/dist/client/bookings.mjs +155 -134
  34. package/dist/client/{carousel-CPR5VWIP.mjs → carousel-QH77HR6X.mjs} +2 -2
  35. package/dist/client/{cart-ZUX5BA7O.mjs → cart-X4YK4FTW.mjs} +5 -5
  36. package/dist/client/{checkout-RULGBADZ.mjs → checkout-OM2BEPWD.mjs} +5 -5
  37. package/dist/client/{chunk-BT6AEIKN.mjs → chunk-3DTWLTXM.mjs} +1 -1
  38. package/dist/client/{chunk-JWEYB4V6.mjs → chunk-4OXKTA3D.mjs} +1 -1
  39. package/dist/client/{chunk-URQCZD5W.mjs → chunk-52CGCQ7B.mjs} +4 -4
  40. package/dist/client/{chunk-52I7BGEK.mjs → chunk-7UCLJ5SP.mjs} +1 -1
  41. package/dist/client/{chunk-Z5OBQ5I4.mjs → chunk-F5VRX5Y6.mjs} +1 -1
  42. package/dist/client/{chunk-RDJFCPY3.mjs → chunk-UHDWIXVR.mjs} +31 -115
  43. package/dist/client/{chunk-HXPWP5EN.mjs → chunk-VGDBVNOO.mjs} +175 -14
  44. package/dist/client/{chunk-5ZEAZ33K.mjs → chunk-ZKUO52W3.mjs} +1 -1
  45. package/dist/client/client.mjs +337 -217
  46. package/dist/client/{courseRegistration-QTUDC35T.mjs → courseRegistration-YBOGURTA.mjs} +3 -3
  47. package/dist/client/{eventCalendar-Q7NS4XLD.mjs → eventCalendar-K4QJVCMD.mjs} +5 -5
  48. package/dist/client/{eventCombined-QAO7VUO5.mjs → eventCombined-MTXGMTCZ.mjs} +5 -5
  49. package/dist/client/{eventDetails-WTNNU6Q3.mjs → eventDetails-3PC4NL3U.mjs} +5 -5
  50. package/dist/client/{eventListing-5TA2ELDT.mjs → eventListing-TFJET6DN.mjs} +5 -5
  51. package/dist/client/{eventRegistration-M6USZGRF.mjs → eventRegistration-QGPBGJTW.mjs} +5 -5
  52. package/dist/client/{form-DGVGXLMH.mjs → form-MDKR4FNB.mjs} +1 -1
  53. package/dist/client/{headerSection-O2AGMPCU.mjs → headerSection-Y5TMR3TW.mjs} +2 -2
  54. package/dist/client/hooks.mjs +315 -35
  55. package/dist/client/{locationMap-EJRNRIKJ.mjs → locationMap-RH2LG7FZ.mjs} +1 -1
  56. package/dist/client/{newsletterForm-7NTC2DTR.mjs → newsletterForm-ZR5UDGBT.mjs} +1 -1
  57. package/dist/client/{productDetail-HH4LP53D.mjs → productDetail-OIGDR4YE.mjs} +5 -5
  58. package/dist/client/{productList-YVHYM2AF.mjs → productList-4MA5S2CX.mjs} +5 -5
  59. package/dist/client/rendering/client.mjs +310 -190
  60. package/dist/client/rendering/islands.mjs +18 -18
  61. package/dist/client/rendering.mjs +310 -190
  62. package/dist/client/{shop-UIFX7XRK.mjs → shop-WXSYV5QO.mjs} +5 -5
  63. package/dist/preview-next/client/runtime.mjs +3 -3
  64. package/dist/{sdk-runtime-ZENAOYMN.mjs → sdk-runtime-7HJYPRWQ.mjs} +4 -4
  65. package/dist/server/components.mjs +188 -61
  66. package/dist/server/config-validation.mjs +313 -33
  67. package/dist/server/config.mjs +313 -33
  68. package/dist/server/data.mjs +315 -35
  69. package/dist/server/index.mjs +1 -1
  70. package/dist/server/next.mjs +189 -62
  71. package/dist/server/page-converter.mjs +315 -35
  72. package/dist/server/prebuild.mjs +1 -1
  73. package/dist/server/rendering/server.mjs +188 -61
  74. package/dist/server/rendering.mjs +188 -61
  75. package/dist/server/routing.mjs +334 -34
  76. package/dist/server/server.mjs +322 -42
  77. package/package.json +1 -1
  78. package/dist/SdkPreviewModeRuntime-MCKMVDTK.mjs +0 -8
@@ -6999,7 +6999,7 @@ var SimpleCache = class {
6999
6999
  };
7000
7000
 
7001
7001
  // src/version.ts
7002
- var SDK_VERSION = "0.84.0";
7002
+ var SDK_VERSION = "0.84.1";
7003
7003
 
7004
7004
  // src/client/error.ts
7005
7005
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -8475,6 +8475,171 @@ function createRiverbankClient(config) {
8475
8475
  };
8476
8476
  }
8477
8477
 
8478
+ // ../core/src/result.ts
8479
+ function ok(value) {
8480
+ return { ok: true, value };
8481
+ }
8482
+ function err(error) {
8483
+ return { ok: false, error };
8484
+ }
8485
+
8486
+ // ../core/src/event-pricing.ts
8487
+ function publicEventPricingType(pricing) {
8488
+ switch (pricing.kind) {
8489
+ case "drop_in":
8490
+ case "free_registration":
8491
+ return "free";
8492
+ case "single_paid":
8493
+ case "ticket_types":
8494
+ case "course":
8495
+ return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
8496
+ }
8497
+ }
8498
+ function isFreePublicEventPriceDisplay(display) {
8499
+ switch (display.kind) {
8500
+ case "free":
8501
+ return true;
8502
+ case "course":
8503
+ return display.display.kind === "free";
8504
+ case "exact":
8505
+ case "from":
8506
+ case "mixed":
8507
+ case "unavailable":
8508
+ return false;
8509
+ }
8510
+ }
8511
+
8512
+ // ../core/src/booking-date-time.ts
8513
+ var DEFAULT_LOCALE = "en-US";
8514
+ var FALLBACK_TIMEZONE = "UTC";
8515
+ function isValidTimeZone(timeZone) {
8516
+ try {
8517
+ new Intl.DateTimeFormat(DEFAULT_LOCALE, { timeZone }).format(/* @__PURE__ */ new Date());
8518
+ return true;
8519
+ } catch {
8520
+ return false;
8521
+ }
8522
+ }
8523
+ function getSafeTimeZone(timeZone) {
8524
+ const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
8525
+ return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
8526
+ }
8527
+ function parseStrictBookingTimeZone(timeZone) {
8528
+ const normalized = timeZone.trim();
8529
+ if (!normalized || !isValidTimeZone(normalized)) {
8530
+ return null;
8531
+ }
8532
+ return normalized;
8533
+ }
8534
+ function formatParseError(error) {
8535
+ switch (error.reason) {
8536
+ case "invalid_starts_at":
8537
+ return `Expected a valid UTC/offset-aware ISO datetime in startsAt, received "${error.value}"`;
8538
+ case "invalid_ends_at":
8539
+ return `Expected a valid UTC/offset-aware ISO datetime in endsAt, received "${error.value ?? ""}"`;
8540
+ case "invalid_time_zone":
8541
+ return `Expected a valid IANA timezone in timeZone, received "${error.value}"`;
8542
+ }
8543
+ }
8544
+ function formatToPartsLookup(date, locale, timeZone, format) {
8545
+ return new Map(
8546
+ new Intl.DateTimeFormat(locale, {
8547
+ ...format,
8548
+ timeZone
8549
+ }).formatToParts(date).map((part) => [part.type, part.value])
8550
+ );
8551
+ }
8552
+ function getZonedDateTimeParts(date, timeZone) {
8553
+ const parts = formatToPartsLookup(date, "en-GB", timeZone, {
8554
+ year: "numeric",
8555
+ month: "2-digit",
8556
+ day: "2-digit",
8557
+ hour: "2-digit",
8558
+ minute: "2-digit",
8559
+ second: "2-digit",
8560
+ hour12: false
8561
+ });
8562
+ const read = (type) => Number(parts.get(type) ?? "");
8563
+ return {
8564
+ year: read("year"),
8565
+ month: read("month"),
8566
+ day: read("day"),
8567
+ hour: read("hour"),
8568
+ minute: read("minute"),
8569
+ second: read("second")
8570
+ };
8571
+ }
8572
+ function formatDateKey(date) {
8573
+ const year = String(date.year).padStart(4, "0");
8574
+ const month = String(date.month).padStart(2, "0");
8575
+ const day = String(date.day).padStart(2, "0");
8576
+ return `${year}-${month}-${day}`;
8577
+ }
8578
+ function parseUtcIsoDateTimeString(value) {
8579
+ const normalized = value.trim();
8580
+ const hasUtcSuffix = normalized.endsWith("Z");
8581
+ const hasExplicitOffset = /[+-]\d{2}:\d{2}$/u.test(normalized);
8582
+ if (!hasUtcSuffix && !hasExplicitOffset) {
8583
+ return err("missing-timezone-offset");
8584
+ }
8585
+ const date = new Date(normalized);
8586
+ if (Number.isNaN(date.getTime())) {
8587
+ return err("invalid-date-time");
8588
+ }
8589
+ return ok(date.toISOString());
8590
+ }
8591
+ function toUtcIsoDateTimeString(value) {
8592
+ const parsed = parseUtcIsoDateTimeString(value);
8593
+ if (!parsed.ok) {
8594
+ const message = parsed.error === "missing-timezone-offset" ? `Expected an offset-aware ISO datetime, received "${value}"` : `Expected a valid ISO datetime, received "${value}"`;
8595
+ throw new Error(message);
8596
+ }
8597
+ return parsed.value;
8598
+ }
8599
+ function parseScheduledBookingDateTime(input) {
8600
+ try {
8601
+ const startsAt = toUtcIsoDateTimeString(input.startsAt);
8602
+ const timeZone = parseStrictBookingTimeZone(input.timeZone);
8603
+ if (!timeZone) {
8604
+ return {
8605
+ ok: false,
8606
+ field: "timeZone",
8607
+ reason: "invalid_time_zone",
8608
+ value: input.timeZone
8609
+ };
8610
+ }
8611
+ return {
8612
+ ok: true,
8613
+ value: {
8614
+ startsAt,
8615
+ timeZone,
8616
+ locale: input.locale
8617
+ }
8618
+ };
8619
+ } catch {
8620
+ return {
8621
+ ok: false,
8622
+ field: "startsAt",
8623
+ reason: "invalid_starts_at",
8624
+ value: input.startsAt
8625
+ };
8626
+ }
8627
+ }
8628
+ function toScheduledBookingDateTime(input) {
8629
+ const result = parseScheduledBookingDateTime(input);
8630
+ if (result.ok) {
8631
+ return result.value;
8632
+ }
8633
+ throw new Error(formatParseError(result));
8634
+ }
8635
+ function getBookingLocalDateKey(input) {
8636
+ return formatDateKey(getLocalScheduleDate(new Date(input.startsAt), input.timeZone));
8637
+ }
8638
+ function getLocalScheduleDate(date, timeZone) {
8639
+ const parts = getZonedDateTimeParts(date, getSafeTimeZone(timeZone));
8640
+ return { year: parts.year, month: parts.month, day: parts.day };
8641
+ }
8642
+
8478
8643
  // ../core/src/location.ts
8479
8644
  function normalizeLocationAddressText(value) {
8480
8645
  if (typeof value !== "string") {
@@ -11328,9 +11493,9 @@ var _Vibrant = class _Vibrant2 {
11328
11493
  }
11329
11494
  image.remove();
11330
11495
  return res;
11331
- } catch (err2) {
11496
+ } catch (err3) {
11332
11497
  image.remove();
11333
- return Promise.reject(err2);
11498
+ return Promise.reject(err3);
11334
11499
  }
11335
11500
  }
11336
11501
  async getPalettes() {
@@ -11344,9 +11509,9 @@ var _Vibrant = class _Vibrant2 {
11344
11509
  const res = result1.palettes;
11345
11510
  image.remove();
11346
11511
  return res;
11347
- } catch (err2) {
11512
+ } catch (err3) {
11348
11513
  image.remove();
11349
- return Promise.reject(err2);
11514
+ return Promise.reject(err3);
11350
11515
  }
11351
11516
  }
11352
11517
  };
@@ -30235,6 +30400,26 @@ var occurrenceContextSchema = z43.object({
30235
30400
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
30236
30401
  import { z as z45 } from "zod";
30237
30402
 
30403
+ // ../blocks/src/system/constants/events.ts
30404
+ var EVENT_CONTENT_TYPE_SLUGS = ["event", "events"];
30405
+ var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
30406
+ var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
30407
+ var eventCalendarListLayoutOptions = [
30408
+ { id: "stack", label: "Stack" },
30409
+ { id: "grid", label: "Grid" },
30410
+ { id: "compact", label: "Compact" }
30411
+ ];
30412
+ function isEventCalendarDisplayMode(value) {
30413
+ return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
30414
+ }
30415
+ function isEventCalendarListLayout(value) {
30416
+ return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
30417
+ }
30418
+ function isEventContentType(slug) {
30419
+ if (!slug) return false;
30420
+ return EVENT_CONTENT_TYPE_SLUGS.includes(slug);
30421
+ }
30422
+
30238
30423
  // ../blocks/src/system/runtime/nodes/events/shared/pricing.ts
30239
30424
  var DEFAULT_EVENT_CURRENCY = "USD";
30240
30425
  function resolveRuntimeEventPricing(event) {
@@ -30357,23 +30542,6 @@ function readAmount(value) {
30357
30542
 
30358
30543
  // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
30359
30544
  import { z as z44 } from "zod";
30360
-
30361
- // ../blocks/src/system/constants/events.ts
30362
- var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
30363
- var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
30364
- var eventCalendarListLayoutOptions = [
30365
- { id: "stack", label: "Stack" },
30366
- { id: "grid", label: "Grid" },
30367
- { id: "compact", label: "Compact" }
30368
- ];
30369
- function isEventCalendarDisplayMode(value) {
30370
- return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
30371
- }
30372
- function isEventCalendarListLayout(value) {
30373
- return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
30374
- }
30375
-
30376
- // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
30377
30545
  var previewStageSchema = z44.enum(["preview", "published"]);
30378
30546
  var registrationButtonVariantSchema = z44.enum(["primary", "secondary", "outline"]);
30379
30547
  var eventButtonVariantSchema = z44.enum(["primary", "secondary", "outline", "link"]);
@@ -30384,13 +30552,64 @@ var weekStartSchema = z44.enum(["sunday", "monday"]);
30384
30552
  var filterAutoShowSchema = z44.enum(["auto", "always", "never"]);
30385
30553
  var calendarTabViewsSchema = z44.enum(["both", "month", "week"]);
30386
30554
 
30555
+ // ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
30556
+ function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
30557
+ const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : ["select-event", "select-tickets", "enter-details"];
30558
+ if (!needsPaymentStep) {
30559
+ return baseSteps;
30560
+ }
30561
+ return [...baseSteps, "select-payment"];
30562
+ }
30563
+
30564
+ // ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
30565
+ function eventMatchesOccurrenceId(event, occurrenceId) {
30566
+ return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
30567
+ }
30568
+ function findPreSelectedEvent(input) {
30569
+ const occurrenceContext = input.occurrenceContext;
30570
+ if (!occurrenceContext) {
30571
+ return null;
30572
+ }
30573
+ const contextDate = getBookingLocalDateKey(toScheduledBookingDateTime({
30574
+ startsAt: occurrenceContext.startsAt,
30575
+ timeZone: occurrenceContext.timeZone
30576
+ }));
30577
+ return input.scopedEvents.find(
30578
+ (event) => eventMatchesOccurrenceId(event, occurrenceContext.id) || getBookingLocalDateKey(toScheduledBookingDateTime({
30579
+ startsAt: event.startsAt,
30580
+ timeZone: event.timeZone
30581
+ })) === contextDate
30582
+ ) ?? null;
30583
+ }
30584
+ function resolveEventRequiresPayment(input) {
30585
+ if (input.eligibility) {
30586
+ return input.eligibility.requiresPayment;
30587
+ }
30588
+ if (input.selectedTicketType) {
30589
+ return input.selectedTicketType.priceAmount > 0;
30590
+ }
30591
+ if (!input.event) {
30592
+ return false;
30593
+ }
30594
+ return publicEventPricingType(resolveRuntimeEventPricing(input.event)) !== "free";
30595
+ }
30596
+
30597
+ // ../blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.ts
30598
+ function toRegistrationEvent(event) {
30599
+ return {
30600
+ ...event,
30601
+ pricing: resolveRuntimeEventPricing(event),
30602
+ publicEventId: event.id,
30603
+ registrationOccurrenceId: event.occurrenceId
30604
+ };
30605
+ }
30606
+ function toRegistrationEvents(events) {
30607
+ return events.map(toRegistrationEvent);
30608
+ }
30609
+
30387
30610
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
30388
30611
  var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
30389
- var [
30390
- eventRegistrationGenericDateStepLabel,
30391
- eventRegistrationGenericTicketsStepLabel,
30392
- eventRegistrationGenericDetailsStepLabel
30393
- ] = EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
30612
+ var EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
30394
30613
  var contentEntrySchema = z45.object({
30395
30614
  id: z45.string(),
30396
30615
  slug: z45.string(),
@@ -30426,11 +30645,7 @@ var eventRegistrationDisplaySchema = z45.object({
30426
30645
  className: z45.string().nullable(),
30427
30646
  titleText: z45.string(),
30428
30647
  bodyText: z45.string(),
30429
- stepLabels: z45.tuple([
30430
- z45.literal(eventRegistrationGenericDateStepLabel),
30431
- z45.literal(eventRegistrationGenericTicketsStepLabel),
30432
- z45.literal(eventRegistrationGenericDetailsStepLabel)
30433
- ]),
30648
+ stepLabels: z45.array(z45.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
30434
30649
  summaryButtonText: z45.string()
30435
30650
  });
30436
30651
  var eventRegistrationHydrationSchema = z45.object({
@@ -30465,16 +30680,81 @@ var eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
30465
30680
  "stage"
30466
30681
  );
30467
30682
  function buildEventRegistrationDisplay(source) {
30683
+ const stepLabels = buildEventRegistrationShellStepLabels(source);
30468
30684
  return {
30469
30685
  kind: "event-registration",
30470
30686
  state: "generic-shell",
30471
30687
  className: source.className ?? null,
30472
30688
  titleText: "Event registration",
30473
- bodyText: "Preparing dates, tickets, and booking details.",
30474
- stepLabels: EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS,
30689
+ bodyText: buildEventRegistrationShellBodyText(stepLabels),
30690
+ stepLabels,
30475
30691
  summaryButtonText: source.buttonText?.trim() || "Register"
30476
30692
  };
30477
30693
  }
30694
+ function buildEventRegistrationShellStepLabels(source) {
30695
+ const scopedEvents = scopeEventRegistrationEvents(source);
30696
+ if (scopedEvents.length === 0) {
30697
+ return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
30698
+ }
30699
+ const preSelectedEvent = findPreSelectedEvent({
30700
+ scopedEvents,
30701
+ occurrenceContext: source.occurrenceContext
30702
+ });
30703
+ const hasPreSelectedContext = Boolean(source.occurrenceContext || preSelectedEvent);
30704
+ const needsPaymentStep = hasPreSelectedContext && preSelectedEvent ? resolveEventRequiresPayment({
30705
+ eligibility: null,
30706
+ selectedTicketType: null,
30707
+ event: preSelectedEvent
30708
+ }) : false;
30709
+ return getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
30710
+ }
30711
+ function scopeEventRegistrationEvents(source) {
30712
+ const events = toRegistrationEvents(source.events ?? []);
30713
+ if (source.occurrenceContext?.seriesId) {
30714
+ return events.filter((event) => event.seriesId === source.occurrenceContext?.seriesId);
30715
+ }
30716
+ const entrySlug = source.contentEntry?.slug;
30717
+ const entryContentType = source.contentEntry?.contentTypeSlug;
30718
+ if (entrySlug && entryContentType && isEventContentType(entryContentType)) {
30719
+ return events.filter((event) => event.slug === entrySlug);
30720
+ }
30721
+ return events;
30722
+ }
30723
+ function shellLabelForRegistrationStep(step, events) {
30724
+ switch (step) {
30725
+ case "select-event":
30726
+ return isDateSelection(events) ? "Date" : "Event";
30727
+ case "select-tickets":
30728
+ return "Tickets";
30729
+ case "enter-details":
30730
+ return "Details";
30731
+ case "select-payment":
30732
+ return "Payment";
30733
+ case "error":
30734
+ case "success":
30735
+ case "submitting":
30736
+ case "redirecting":
30737
+ case "verifying-payment":
30738
+ case "verifying-timeout":
30739
+ case "payment-failed":
30740
+ return "Details";
30741
+ }
30742
+ }
30743
+ function isDateSelection(events) {
30744
+ const firstSeriesId = events[0]?.seriesId;
30745
+ return Boolean(
30746
+ events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId)
30747
+ );
30748
+ }
30749
+ function buildEventRegistrationShellBodyText(stepLabels) {
30750
+ if (stepLabels.includes("Payment")) {
30751
+ return "Preparing tickets, details, and payment options.";
30752
+ }
30753
+ if (stepLabels[0] === "Tickets") {
30754
+ return "Preparing tickets and booking details.";
30755
+ }
30756
+ return "Preparing dates, tickets, and booking details.";
30757
+ }
30478
30758
  var eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
30479
30759
  kind: "client-owned",
30480
30760
  contracts: {
@@ -39634,11 +39914,11 @@ function resolveParamsBindings(input, vm, meta) {
39634
39914
  return binding.fallback;
39635
39915
  }
39636
39916
  return resolved;
39637
- } catch (err2) {
39917
+ } catch (err3) {
39638
39918
  if (shouldLogWarnings) {
39639
39919
  console.warn(
39640
39920
  `bindings: failed to parse loader param binding for block "${meta?.blockKind ?? "unknown"}"`,
39641
- err2
39921
+ err3
39642
39922
  );
39643
39923
  }
39644
39924
  return void 0;
@@ -41691,10 +41971,10 @@ var normalizeBindingOutput2 = normalizeBindingOutput;
41691
41971
  var applyBindingsToContent2 = applyBindingsToContent;
41692
41972
 
41693
41973
  // ../content-model/src/entry-slots/types.ts
41694
- function ok(value) {
41974
+ function ok2(value) {
41695
41975
  return { ok: true, value };
41696
41976
  }
41697
- function err(error) {
41977
+ function err2(error) {
41698
41978
  return { ok: false, error };
41699
41979
  }
41700
41980
  var SLOT_KEY_PATTERN = /^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$/;
@@ -41702,13 +41982,13 @@ function unsafeAsSlotKey(value) {
41702
41982
  return value;
41703
41983
  }
41704
41984
  function parseSlotKey(value) {
41705
- if (typeof value !== "string") return err({ kind: "not-string" });
41985
+ if (typeof value !== "string") return err2({ kind: "not-string" });
41706
41986
  const normalized = value.trim();
41707
- if (!normalized) return err({ kind: "empty" });
41987
+ if (!normalized) return err2({ kind: "empty" });
41708
41988
  if (!SLOT_KEY_PATTERN.test(normalized)) {
41709
- return err({ kind: "invalid-format", value: normalized });
41989
+ return err2({ kind: "invalid-format", value: normalized });
41710
41990
  }
41711
- return ok(unsafeAsSlotKey(normalized));
41991
+ return ok2(unsafeAsSlotKey(normalized));
41712
41992
  }
41713
41993
  var SYSTEM_ENTRY_SLOT_BLOCK_KIND = "system.entry-slot";
41714
41994
  function selectBlocksForDeclaredEntrySlot(input) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riverbankcms/sdk",
3
- "version": "0.84.0",
3
+ "version": "0.84.1",
4
4
  "description": "Riverbank CMS SDK for headless content consumption",
5
5
  "main": "./dist/server/index.mjs",
6
6
  "module": "./dist/server/index.mjs",
@@ -1,8 +0,0 @@
1
- "use client";
2
- export { SdkPreviewModeRuntime } from './chunk-HFMGVJCE.mjs';
3
- import './chunk-3LXFQS7T.mjs';
4
- import './chunk-5E33VO6J.mjs';
5
- import './chunk-6X2OVO3S.mjs';
6
- import './chunk-MSHZO4SL.mjs';
7
- import './chunk-LBBPD2IW.mjs';
8
- import './chunk-R7POPVJR.mjs';