@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
@@ -6423,6 +6423,171 @@ var ENDPOINT_DEFINITIONS = {
6423
6423
  }
6424
6424
  };
6425
6425
 
6426
+ // ../core/src/result.ts
6427
+ function ok(value) {
6428
+ return { ok: true, value };
6429
+ }
6430
+ function err(error) {
6431
+ return { ok: false, error };
6432
+ }
6433
+
6434
+ // ../core/src/event-pricing.ts
6435
+ function publicEventPricingType(pricing) {
6436
+ switch (pricing.kind) {
6437
+ case "drop_in":
6438
+ case "free_registration":
6439
+ return "free";
6440
+ case "single_paid":
6441
+ case "ticket_types":
6442
+ case "course":
6443
+ return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
6444
+ }
6445
+ }
6446
+ function isFreePublicEventPriceDisplay(display) {
6447
+ switch (display.kind) {
6448
+ case "free":
6449
+ return true;
6450
+ case "course":
6451
+ return display.display.kind === "free";
6452
+ case "exact":
6453
+ case "from":
6454
+ case "mixed":
6455
+ case "unavailable":
6456
+ return false;
6457
+ }
6458
+ }
6459
+
6460
+ // ../core/src/booking-date-time.ts
6461
+ var DEFAULT_LOCALE = "en-US";
6462
+ var FALLBACK_TIMEZONE = "UTC";
6463
+ function isValidTimeZone(timeZone) {
6464
+ try {
6465
+ new Intl.DateTimeFormat(DEFAULT_LOCALE, { timeZone }).format(/* @__PURE__ */ new Date());
6466
+ return true;
6467
+ } catch {
6468
+ return false;
6469
+ }
6470
+ }
6471
+ function getSafeTimeZone(timeZone) {
6472
+ const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
6473
+ return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6474
+ }
6475
+ function parseStrictBookingTimeZone(timeZone) {
6476
+ const normalized = timeZone.trim();
6477
+ if (!normalized || !isValidTimeZone(normalized)) {
6478
+ return null;
6479
+ }
6480
+ return normalized;
6481
+ }
6482
+ function formatParseError(error) {
6483
+ switch (error.reason) {
6484
+ case "invalid_starts_at":
6485
+ return `Expected a valid UTC/offset-aware ISO datetime in startsAt, received "${error.value}"`;
6486
+ case "invalid_ends_at":
6487
+ return `Expected a valid UTC/offset-aware ISO datetime in endsAt, received "${error.value ?? ""}"`;
6488
+ case "invalid_time_zone":
6489
+ return `Expected a valid IANA timezone in timeZone, received "${error.value}"`;
6490
+ }
6491
+ }
6492
+ function formatToPartsLookup(date, locale, timeZone, format) {
6493
+ return new Map(
6494
+ new Intl.DateTimeFormat(locale, {
6495
+ ...format,
6496
+ timeZone
6497
+ }).formatToParts(date).map((part) => [part.type, part.value])
6498
+ );
6499
+ }
6500
+ function getZonedDateTimeParts(date, timeZone) {
6501
+ const parts = formatToPartsLookup(date, "en-GB", timeZone, {
6502
+ year: "numeric",
6503
+ month: "2-digit",
6504
+ day: "2-digit",
6505
+ hour: "2-digit",
6506
+ minute: "2-digit",
6507
+ second: "2-digit",
6508
+ hour12: false
6509
+ });
6510
+ const read = (type) => Number(parts.get(type) ?? "");
6511
+ return {
6512
+ year: read("year"),
6513
+ month: read("month"),
6514
+ day: read("day"),
6515
+ hour: read("hour"),
6516
+ minute: read("minute"),
6517
+ second: read("second")
6518
+ };
6519
+ }
6520
+ function formatDateKey(date) {
6521
+ const year = String(date.year).padStart(4, "0");
6522
+ const month = String(date.month).padStart(2, "0");
6523
+ const day = String(date.day).padStart(2, "0");
6524
+ return `${year}-${month}-${day}`;
6525
+ }
6526
+ function parseUtcIsoDateTimeString(value) {
6527
+ const normalized = value.trim();
6528
+ const hasUtcSuffix = normalized.endsWith("Z");
6529
+ const hasExplicitOffset = /[+-]\d{2}:\d{2}$/u.test(normalized);
6530
+ if (!hasUtcSuffix && !hasExplicitOffset) {
6531
+ return err("missing-timezone-offset");
6532
+ }
6533
+ const date = new Date(normalized);
6534
+ if (Number.isNaN(date.getTime())) {
6535
+ return err("invalid-date-time");
6536
+ }
6537
+ return ok(date.toISOString());
6538
+ }
6539
+ function toUtcIsoDateTimeString(value) {
6540
+ const parsed = parseUtcIsoDateTimeString(value);
6541
+ if (!parsed.ok) {
6542
+ const message = parsed.error === "missing-timezone-offset" ? `Expected an offset-aware ISO datetime, received "${value}"` : `Expected a valid ISO datetime, received "${value}"`;
6543
+ throw new Error(message);
6544
+ }
6545
+ return parsed.value;
6546
+ }
6547
+ function parseScheduledBookingDateTime(input) {
6548
+ try {
6549
+ const startsAt = toUtcIsoDateTimeString(input.startsAt);
6550
+ const timeZone = parseStrictBookingTimeZone(input.timeZone);
6551
+ if (!timeZone) {
6552
+ return {
6553
+ ok: false,
6554
+ field: "timeZone",
6555
+ reason: "invalid_time_zone",
6556
+ value: input.timeZone
6557
+ };
6558
+ }
6559
+ return {
6560
+ ok: true,
6561
+ value: {
6562
+ startsAt,
6563
+ timeZone,
6564
+ locale: input.locale
6565
+ }
6566
+ };
6567
+ } catch {
6568
+ return {
6569
+ ok: false,
6570
+ field: "startsAt",
6571
+ reason: "invalid_starts_at",
6572
+ value: input.startsAt
6573
+ };
6574
+ }
6575
+ }
6576
+ function toScheduledBookingDateTime(input) {
6577
+ const result = parseScheduledBookingDateTime(input);
6578
+ if (result.ok) {
6579
+ return result.value;
6580
+ }
6581
+ throw new Error(formatParseError(result));
6582
+ }
6583
+ function getBookingLocalDateKey(input) {
6584
+ return formatDateKey(getLocalScheduleDate(new Date(input.startsAt), input.timeZone));
6585
+ }
6586
+ function getLocalScheduleDate(date, timeZone) {
6587
+ const parts = getZonedDateTimeParts(date, getSafeTimeZone(timeZone));
6588
+ return { year: parts.year, month: parts.month, day: parts.day };
6589
+ }
6590
+
6426
6591
  // ../core/src/location.ts
6427
6592
  function normalizeLocationAddressText(value) {
6428
6593
  if (typeof value !== "string") {
@@ -9373,9 +9538,9 @@ var _Vibrant = class _Vibrant2 {
9373
9538
  }
9374
9539
  image.remove();
9375
9540
  return res;
9376
- } catch (err) {
9541
+ } catch (err2) {
9377
9542
  image.remove();
9378
- return Promise.reject(err);
9543
+ return Promise.reject(err2);
9379
9544
  }
9380
9545
  }
9381
9546
  async getPalettes() {
@@ -9389,9 +9554,9 @@ var _Vibrant = class _Vibrant2 {
9389
9554
  const res = result1.palettes;
9390
9555
  image.remove();
9391
9556
  return res;
9392
- } catch (err) {
9557
+ } catch (err2) {
9393
9558
  image.remove();
9394
- return Promise.reject(err);
9559
+ return Promise.reject(err2);
9395
9560
  }
9396
9561
  }
9397
9562
  };
@@ -28196,6 +28361,26 @@ var occurrenceContextSchema = z43.object({
28196
28361
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
28197
28362
  import { z as z45 } from "zod";
28198
28363
 
28364
+ // ../blocks/src/system/constants/events.ts
28365
+ var EVENT_CONTENT_TYPE_SLUGS = ["event", "events"];
28366
+ var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
28367
+ var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
28368
+ var eventCalendarListLayoutOptions = [
28369
+ { id: "stack", label: "Stack" },
28370
+ { id: "grid", label: "Grid" },
28371
+ { id: "compact", label: "Compact" }
28372
+ ];
28373
+ function isEventCalendarDisplayMode(value) {
28374
+ return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
28375
+ }
28376
+ function isEventCalendarListLayout(value) {
28377
+ return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
28378
+ }
28379
+ function isEventContentType(slug) {
28380
+ if (!slug) return false;
28381
+ return EVENT_CONTENT_TYPE_SLUGS.includes(slug);
28382
+ }
28383
+
28199
28384
  // ../blocks/src/system/runtime/nodes/events/shared/pricing.ts
28200
28385
  var DEFAULT_EVENT_CURRENCY = "USD";
28201
28386
  function resolveRuntimeEventPricing(event) {
@@ -28318,23 +28503,6 @@ function readAmount(value) {
28318
28503
 
28319
28504
  // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
28320
28505
  import { z as z44 } from "zod";
28321
-
28322
- // ../blocks/src/system/constants/events.ts
28323
- var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
28324
- var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
28325
- var eventCalendarListLayoutOptions = [
28326
- { id: "stack", label: "Stack" },
28327
- { id: "grid", label: "Grid" },
28328
- { id: "compact", label: "Compact" }
28329
- ];
28330
- function isEventCalendarDisplayMode(value) {
28331
- return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
28332
- }
28333
- function isEventCalendarListLayout(value) {
28334
- return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
28335
- }
28336
-
28337
- // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
28338
28506
  var previewStageSchema = z44.enum(["preview", "published"]);
28339
28507
  var registrationButtonVariantSchema = z44.enum(["primary", "secondary", "outline"]);
28340
28508
  var eventButtonVariantSchema = z44.enum(["primary", "secondary", "outline", "link"]);
@@ -28345,13 +28513,64 @@ var weekStartSchema = z44.enum(["sunday", "monday"]);
28345
28513
  var filterAutoShowSchema = z44.enum(["auto", "always", "never"]);
28346
28514
  var calendarTabViewsSchema = z44.enum(["both", "month", "week"]);
28347
28515
 
28516
+ // ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
28517
+ function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
28518
+ const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : ["select-event", "select-tickets", "enter-details"];
28519
+ if (!needsPaymentStep) {
28520
+ return baseSteps;
28521
+ }
28522
+ return [...baseSteps, "select-payment"];
28523
+ }
28524
+
28525
+ // ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
28526
+ function eventMatchesOccurrenceId(event, occurrenceId) {
28527
+ return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
28528
+ }
28529
+ function findPreSelectedEvent(input) {
28530
+ const occurrenceContext = input.occurrenceContext;
28531
+ if (!occurrenceContext) {
28532
+ return null;
28533
+ }
28534
+ const contextDate = getBookingLocalDateKey(toScheduledBookingDateTime({
28535
+ startsAt: occurrenceContext.startsAt,
28536
+ timeZone: occurrenceContext.timeZone
28537
+ }));
28538
+ return input.scopedEvents.find(
28539
+ (event) => eventMatchesOccurrenceId(event, occurrenceContext.id) || getBookingLocalDateKey(toScheduledBookingDateTime({
28540
+ startsAt: event.startsAt,
28541
+ timeZone: event.timeZone
28542
+ })) === contextDate
28543
+ ) ?? null;
28544
+ }
28545
+ function resolveEventRequiresPayment(input) {
28546
+ if (input.eligibility) {
28547
+ return input.eligibility.requiresPayment;
28548
+ }
28549
+ if (input.selectedTicketType) {
28550
+ return input.selectedTicketType.priceAmount > 0;
28551
+ }
28552
+ if (!input.event) {
28553
+ return false;
28554
+ }
28555
+ return publicEventPricingType(resolveRuntimeEventPricing(input.event)) !== "free";
28556
+ }
28557
+
28558
+ // ../blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.ts
28559
+ function toRegistrationEvent(event) {
28560
+ return {
28561
+ ...event,
28562
+ pricing: resolveRuntimeEventPricing(event),
28563
+ publicEventId: event.id,
28564
+ registrationOccurrenceId: event.occurrenceId
28565
+ };
28566
+ }
28567
+ function toRegistrationEvents(events) {
28568
+ return events.map(toRegistrationEvent);
28569
+ }
28570
+
28348
28571
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
28349
28572
  var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
28350
- var [
28351
- eventRegistrationGenericDateStepLabel,
28352
- eventRegistrationGenericTicketsStepLabel,
28353
- eventRegistrationGenericDetailsStepLabel
28354
- ] = EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
28573
+ var EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
28355
28574
  var contentEntrySchema = z45.object({
28356
28575
  id: z45.string(),
28357
28576
  slug: z45.string(),
@@ -28387,11 +28606,7 @@ var eventRegistrationDisplaySchema = z45.object({
28387
28606
  className: z45.string().nullable(),
28388
28607
  titleText: z45.string(),
28389
28608
  bodyText: z45.string(),
28390
- stepLabels: z45.tuple([
28391
- z45.literal(eventRegistrationGenericDateStepLabel),
28392
- z45.literal(eventRegistrationGenericTicketsStepLabel),
28393
- z45.literal(eventRegistrationGenericDetailsStepLabel)
28394
- ]),
28609
+ stepLabels: z45.array(z45.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
28395
28610
  summaryButtonText: z45.string()
28396
28611
  });
28397
28612
  var eventRegistrationHydrationSchema = z45.object({
@@ -28426,16 +28641,81 @@ var eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
28426
28641
  "stage"
28427
28642
  );
28428
28643
  function buildEventRegistrationDisplay(source) {
28644
+ const stepLabels = buildEventRegistrationShellStepLabels(source);
28429
28645
  return {
28430
28646
  kind: "event-registration",
28431
28647
  state: "generic-shell",
28432
28648
  className: source.className ?? null,
28433
28649
  titleText: "Event registration",
28434
- bodyText: "Preparing dates, tickets, and booking details.",
28435
- stepLabels: EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS,
28650
+ bodyText: buildEventRegistrationShellBodyText(stepLabels),
28651
+ stepLabels,
28436
28652
  summaryButtonText: source.buttonText?.trim() || "Register"
28437
28653
  };
28438
28654
  }
28655
+ function buildEventRegistrationShellStepLabels(source) {
28656
+ const scopedEvents = scopeEventRegistrationEvents(source);
28657
+ if (scopedEvents.length === 0) {
28658
+ return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
28659
+ }
28660
+ const preSelectedEvent = findPreSelectedEvent({
28661
+ scopedEvents,
28662
+ occurrenceContext: source.occurrenceContext
28663
+ });
28664
+ const hasPreSelectedContext = Boolean(source.occurrenceContext || preSelectedEvent);
28665
+ const needsPaymentStep = hasPreSelectedContext && preSelectedEvent ? resolveEventRequiresPayment({
28666
+ eligibility: null,
28667
+ selectedTicketType: null,
28668
+ event: preSelectedEvent
28669
+ }) : false;
28670
+ return getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
28671
+ }
28672
+ function scopeEventRegistrationEvents(source) {
28673
+ const events = toRegistrationEvents(source.events ?? []);
28674
+ if (source.occurrenceContext?.seriesId) {
28675
+ return events.filter((event) => event.seriesId === source.occurrenceContext?.seriesId);
28676
+ }
28677
+ const entrySlug = source.contentEntry?.slug;
28678
+ const entryContentType = source.contentEntry?.contentTypeSlug;
28679
+ if (entrySlug && entryContentType && isEventContentType(entryContentType)) {
28680
+ return events.filter((event) => event.slug === entrySlug);
28681
+ }
28682
+ return events;
28683
+ }
28684
+ function shellLabelForRegistrationStep(step, events) {
28685
+ switch (step) {
28686
+ case "select-event":
28687
+ return isDateSelection(events) ? "Date" : "Event";
28688
+ case "select-tickets":
28689
+ return "Tickets";
28690
+ case "enter-details":
28691
+ return "Details";
28692
+ case "select-payment":
28693
+ return "Payment";
28694
+ case "error":
28695
+ case "success":
28696
+ case "submitting":
28697
+ case "redirecting":
28698
+ case "verifying-payment":
28699
+ case "verifying-timeout":
28700
+ case "payment-failed":
28701
+ return "Details";
28702
+ }
28703
+ }
28704
+ function isDateSelection(events) {
28705
+ const firstSeriesId = events[0]?.seriesId;
28706
+ return Boolean(
28707
+ events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId)
28708
+ );
28709
+ }
28710
+ function buildEventRegistrationShellBodyText(stepLabels) {
28711
+ if (stepLabels.includes("Payment")) {
28712
+ return "Preparing tickets, details, and payment options.";
28713
+ }
28714
+ if (stepLabels[0] === "Tickets") {
28715
+ return "Preparing tickets and booking details.";
28716
+ }
28717
+ return "Preparing dates, tickets, and booking details.";
28718
+ }
28439
28719
  var eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
28440
28720
  kind: "client-owned",
28441
28721
  contracts: {