@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
@@ -6378,6 +6378,171 @@ var ENDPOINT_DEFINITIONS = {
6378
6378
  }
6379
6379
  };
6380
6380
 
6381
+ // ../core/src/result.ts
6382
+ function ok(value) {
6383
+ return { ok: true, value };
6384
+ }
6385
+ function err(error) {
6386
+ return { ok: false, error };
6387
+ }
6388
+
6389
+ // ../core/src/event-pricing.ts
6390
+ function publicEventPricingType(pricing) {
6391
+ switch (pricing.kind) {
6392
+ case "drop_in":
6393
+ case "free_registration":
6394
+ return "free";
6395
+ case "single_paid":
6396
+ case "ticket_types":
6397
+ case "course":
6398
+ return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
6399
+ }
6400
+ }
6401
+ function isFreePublicEventPriceDisplay(display) {
6402
+ switch (display.kind) {
6403
+ case "free":
6404
+ return true;
6405
+ case "course":
6406
+ return display.display.kind === "free";
6407
+ case "exact":
6408
+ case "from":
6409
+ case "mixed":
6410
+ case "unavailable":
6411
+ return false;
6412
+ }
6413
+ }
6414
+
6415
+ // ../core/src/booking-date-time.ts
6416
+ var DEFAULT_LOCALE = "en-US";
6417
+ var FALLBACK_TIMEZONE = "UTC";
6418
+ function isValidTimeZone(timeZone) {
6419
+ try {
6420
+ new Intl.DateTimeFormat(DEFAULT_LOCALE, { timeZone }).format(/* @__PURE__ */ new Date());
6421
+ return true;
6422
+ } catch {
6423
+ return false;
6424
+ }
6425
+ }
6426
+ function getSafeTimeZone(timeZone) {
6427
+ const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
6428
+ return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6429
+ }
6430
+ function parseStrictBookingTimeZone(timeZone) {
6431
+ const normalized = timeZone.trim();
6432
+ if (!normalized || !isValidTimeZone(normalized)) {
6433
+ return null;
6434
+ }
6435
+ return normalized;
6436
+ }
6437
+ function formatParseError(error) {
6438
+ switch (error.reason) {
6439
+ case "invalid_starts_at":
6440
+ return `Expected a valid UTC/offset-aware ISO datetime in startsAt, received "${error.value}"`;
6441
+ case "invalid_ends_at":
6442
+ return `Expected a valid UTC/offset-aware ISO datetime in endsAt, received "${error.value ?? ""}"`;
6443
+ case "invalid_time_zone":
6444
+ return `Expected a valid IANA timezone in timeZone, received "${error.value}"`;
6445
+ }
6446
+ }
6447
+ function formatToPartsLookup(date, locale, timeZone, format) {
6448
+ return new Map(
6449
+ new Intl.DateTimeFormat(locale, {
6450
+ ...format,
6451
+ timeZone
6452
+ }).formatToParts(date).map((part) => [part.type, part.value])
6453
+ );
6454
+ }
6455
+ function getZonedDateTimeParts(date, timeZone) {
6456
+ const parts = formatToPartsLookup(date, "en-GB", timeZone, {
6457
+ year: "numeric",
6458
+ month: "2-digit",
6459
+ day: "2-digit",
6460
+ hour: "2-digit",
6461
+ minute: "2-digit",
6462
+ second: "2-digit",
6463
+ hour12: false
6464
+ });
6465
+ const read = (type) => Number(parts.get(type) ?? "");
6466
+ return {
6467
+ year: read("year"),
6468
+ month: read("month"),
6469
+ day: read("day"),
6470
+ hour: read("hour"),
6471
+ minute: read("minute"),
6472
+ second: read("second")
6473
+ };
6474
+ }
6475
+ function formatDateKey(date) {
6476
+ const year = String(date.year).padStart(4, "0");
6477
+ const month = String(date.month).padStart(2, "0");
6478
+ const day = String(date.day).padStart(2, "0");
6479
+ return `${year}-${month}-${day}`;
6480
+ }
6481
+ function parseUtcIsoDateTimeString(value) {
6482
+ const normalized = value.trim();
6483
+ const hasUtcSuffix = normalized.endsWith("Z");
6484
+ const hasExplicitOffset = /[+-]\d{2}:\d{2}$/u.test(normalized);
6485
+ if (!hasUtcSuffix && !hasExplicitOffset) {
6486
+ return err("missing-timezone-offset");
6487
+ }
6488
+ const date = new Date(normalized);
6489
+ if (Number.isNaN(date.getTime())) {
6490
+ return err("invalid-date-time");
6491
+ }
6492
+ return ok(date.toISOString());
6493
+ }
6494
+ function toUtcIsoDateTimeString(value) {
6495
+ const parsed = parseUtcIsoDateTimeString(value);
6496
+ if (!parsed.ok) {
6497
+ const message = parsed.error === "missing-timezone-offset" ? `Expected an offset-aware ISO datetime, received "${value}"` : `Expected a valid ISO datetime, received "${value}"`;
6498
+ throw new Error(message);
6499
+ }
6500
+ return parsed.value;
6501
+ }
6502
+ function parseScheduledBookingDateTime(input) {
6503
+ try {
6504
+ const startsAt = toUtcIsoDateTimeString(input.startsAt);
6505
+ const timeZone = parseStrictBookingTimeZone(input.timeZone);
6506
+ if (!timeZone) {
6507
+ return {
6508
+ ok: false,
6509
+ field: "timeZone",
6510
+ reason: "invalid_time_zone",
6511
+ value: input.timeZone
6512
+ };
6513
+ }
6514
+ return {
6515
+ ok: true,
6516
+ value: {
6517
+ startsAt,
6518
+ timeZone,
6519
+ locale: input.locale
6520
+ }
6521
+ };
6522
+ } catch {
6523
+ return {
6524
+ ok: false,
6525
+ field: "startsAt",
6526
+ reason: "invalid_starts_at",
6527
+ value: input.startsAt
6528
+ };
6529
+ }
6530
+ }
6531
+ function toScheduledBookingDateTime(input) {
6532
+ const result = parseScheduledBookingDateTime(input);
6533
+ if (result.ok) {
6534
+ return result.value;
6535
+ }
6536
+ throw new Error(formatParseError(result));
6537
+ }
6538
+ function getBookingLocalDateKey(input) {
6539
+ return formatDateKey(getLocalScheduleDate(new Date(input.startsAt), input.timeZone));
6540
+ }
6541
+ function getLocalScheduleDate(date, timeZone) {
6542
+ const parts = getZonedDateTimeParts(date, getSafeTimeZone(timeZone));
6543
+ return { year: parts.year, month: parts.month, day: parts.day };
6544
+ }
6545
+
6381
6546
  // ../core/src/location.ts
6382
6547
  function normalizeLocationAddressText(value) {
6383
6548
  if (typeof value !== "string") {
@@ -9328,9 +9493,9 @@ var _Vibrant = class _Vibrant2 {
9328
9493
  }
9329
9494
  image.remove();
9330
9495
  return res;
9331
- } catch (err) {
9496
+ } catch (err2) {
9332
9497
  image.remove();
9333
- return Promise.reject(err);
9498
+ return Promise.reject(err2);
9334
9499
  }
9335
9500
  }
9336
9501
  async getPalettes() {
@@ -9344,9 +9509,9 @@ var _Vibrant = class _Vibrant2 {
9344
9509
  const res = result1.palettes;
9345
9510
  image.remove();
9346
9511
  return res;
9347
- } catch (err) {
9512
+ } catch (err2) {
9348
9513
  image.remove();
9349
- return Promise.reject(err);
9514
+ return Promise.reject(err2);
9350
9515
  }
9351
9516
  }
9352
9517
  };
@@ -28151,6 +28316,26 @@ var occurrenceContextSchema = z43.object({
28151
28316
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
28152
28317
  import { z as z45 } from "zod";
28153
28318
 
28319
+ // ../blocks/src/system/constants/events.ts
28320
+ var EVENT_CONTENT_TYPE_SLUGS = ["event", "events"];
28321
+ var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
28322
+ var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
28323
+ var eventCalendarListLayoutOptions = [
28324
+ { id: "stack", label: "Stack" },
28325
+ { id: "grid", label: "Grid" },
28326
+ { id: "compact", label: "Compact" }
28327
+ ];
28328
+ function isEventCalendarDisplayMode(value) {
28329
+ return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
28330
+ }
28331
+ function isEventCalendarListLayout(value) {
28332
+ return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
28333
+ }
28334
+ function isEventContentType(slug) {
28335
+ if (!slug) return false;
28336
+ return EVENT_CONTENT_TYPE_SLUGS.includes(slug);
28337
+ }
28338
+
28154
28339
  // ../blocks/src/system/runtime/nodes/events/shared/pricing.ts
28155
28340
  var DEFAULT_EVENT_CURRENCY = "USD";
28156
28341
  function resolveRuntimeEventPricing(event) {
@@ -28273,23 +28458,6 @@ function readAmount(value) {
28273
28458
 
28274
28459
  // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
28275
28460
  import { z as z44 } from "zod";
28276
-
28277
- // ../blocks/src/system/constants/events.ts
28278
- var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
28279
- var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
28280
- var eventCalendarListLayoutOptions = [
28281
- { id: "stack", label: "Stack" },
28282
- { id: "grid", label: "Grid" },
28283
- { id: "compact", label: "Compact" }
28284
- ];
28285
- function isEventCalendarDisplayMode(value) {
28286
- return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
28287
- }
28288
- function isEventCalendarListLayout(value) {
28289
- return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
28290
- }
28291
-
28292
- // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
28293
28461
  var previewStageSchema = z44.enum(["preview", "published"]);
28294
28462
  var registrationButtonVariantSchema = z44.enum(["primary", "secondary", "outline"]);
28295
28463
  var eventButtonVariantSchema = z44.enum(["primary", "secondary", "outline", "link"]);
@@ -28300,13 +28468,64 @@ var weekStartSchema = z44.enum(["sunday", "monday"]);
28300
28468
  var filterAutoShowSchema = z44.enum(["auto", "always", "never"]);
28301
28469
  var calendarTabViewsSchema = z44.enum(["both", "month", "week"]);
28302
28470
 
28471
+ // ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
28472
+ function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
28473
+ const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : ["select-event", "select-tickets", "enter-details"];
28474
+ if (!needsPaymentStep) {
28475
+ return baseSteps;
28476
+ }
28477
+ return [...baseSteps, "select-payment"];
28478
+ }
28479
+
28480
+ // ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
28481
+ function eventMatchesOccurrenceId(event, occurrenceId) {
28482
+ return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
28483
+ }
28484
+ function findPreSelectedEvent(input) {
28485
+ const occurrenceContext = input.occurrenceContext;
28486
+ if (!occurrenceContext) {
28487
+ return null;
28488
+ }
28489
+ const contextDate = getBookingLocalDateKey(toScheduledBookingDateTime({
28490
+ startsAt: occurrenceContext.startsAt,
28491
+ timeZone: occurrenceContext.timeZone
28492
+ }));
28493
+ return input.scopedEvents.find(
28494
+ (event) => eventMatchesOccurrenceId(event, occurrenceContext.id) || getBookingLocalDateKey(toScheduledBookingDateTime({
28495
+ startsAt: event.startsAt,
28496
+ timeZone: event.timeZone
28497
+ })) === contextDate
28498
+ ) ?? null;
28499
+ }
28500
+ function resolveEventRequiresPayment(input) {
28501
+ if (input.eligibility) {
28502
+ return input.eligibility.requiresPayment;
28503
+ }
28504
+ if (input.selectedTicketType) {
28505
+ return input.selectedTicketType.priceAmount > 0;
28506
+ }
28507
+ if (!input.event) {
28508
+ return false;
28509
+ }
28510
+ return publicEventPricingType(resolveRuntimeEventPricing(input.event)) !== "free";
28511
+ }
28512
+
28513
+ // ../blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.ts
28514
+ function toRegistrationEvent(event) {
28515
+ return {
28516
+ ...event,
28517
+ pricing: resolveRuntimeEventPricing(event),
28518
+ publicEventId: event.id,
28519
+ registrationOccurrenceId: event.occurrenceId
28520
+ };
28521
+ }
28522
+ function toRegistrationEvents(events) {
28523
+ return events.map(toRegistrationEvent);
28524
+ }
28525
+
28303
28526
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
28304
28527
  var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
28305
- var [
28306
- eventRegistrationGenericDateStepLabel,
28307
- eventRegistrationGenericTicketsStepLabel,
28308
- eventRegistrationGenericDetailsStepLabel
28309
- ] = EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
28528
+ var EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
28310
28529
  var contentEntrySchema = z45.object({
28311
28530
  id: z45.string(),
28312
28531
  slug: z45.string(),
@@ -28342,11 +28561,7 @@ var eventRegistrationDisplaySchema = z45.object({
28342
28561
  className: z45.string().nullable(),
28343
28562
  titleText: z45.string(),
28344
28563
  bodyText: z45.string(),
28345
- stepLabels: z45.tuple([
28346
- z45.literal(eventRegistrationGenericDateStepLabel),
28347
- z45.literal(eventRegistrationGenericTicketsStepLabel),
28348
- z45.literal(eventRegistrationGenericDetailsStepLabel)
28349
- ]),
28564
+ stepLabels: z45.array(z45.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
28350
28565
  summaryButtonText: z45.string()
28351
28566
  });
28352
28567
  var eventRegistrationHydrationSchema = z45.object({
@@ -28381,16 +28596,81 @@ var eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
28381
28596
  "stage"
28382
28597
  );
28383
28598
  function buildEventRegistrationDisplay(source) {
28599
+ const stepLabels = buildEventRegistrationShellStepLabels(source);
28384
28600
  return {
28385
28601
  kind: "event-registration",
28386
28602
  state: "generic-shell",
28387
28603
  className: source.className ?? null,
28388
28604
  titleText: "Event registration",
28389
- bodyText: "Preparing dates, tickets, and booking details.",
28390
- stepLabels: EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS,
28605
+ bodyText: buildEventRegistrationShellBodyText(stepLabels),
28606
+ stepLabels,
28391
28607
  summaryButtonText: source.buttonText?.trim() || "Register"
28392
28608
  };
28393
28609
  }
28610
+ function buildEventRegistrationShellStepLabels(source) {
28611
+ const scopedEvents = scopeEventRegistrationEvents(source);
28612
+ if (scopedEvents.length === 0) {
28613
+ return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
28614
+ }
28615
+ const preSelectedEvent = findPreSelectedEvent({
28616
+ scopedEvents,
28617
+ occurrenceContext: source.occurrenceContext
28618
+ });
28619
+ const hasPreSelectedContext = Boolean(source.occurrenceContext || preSelectedEvent);
28620
+ const needsPaymentStep = hasPreSelectedContext && preSelectedEvent ? resolveEventRequiresPayment({
28621
+ eligibility: null,
28622
+ selectedTicketType: null,
28623
+ event: preSelectedEvent
28624
+ }) : false;
28625
+ return getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
28626
+ }
28627
+ function scopeEventRegistrationEvents(source) {
28628
+ const events = toRegistrationEvents(source.events ?? []);
28629
+ if (source.occurrenceContext?.seriesId) {
28630
+ return events.filter((event) => event.seriesId === source.occurrenceContext?.seriesId);
28631
+ }
28632
+ const entrySlug = source.contentEntry?.slug;
28633
+ const entryContentType = source.contentEntry?.contentTypeSlug;
28634
+ if (entrySlug && entryContentType && isEventContentType(entryContentType)) {
28635
+ return events.filter((event) => event.slug === entrySlug);
28636
+ }
28637
+ return events;
28638
+ }
28639
+ function shellLabelForRegistrationStep(step, events) {
28640
+ switch (step) {
28641
+ case "select-event":
28642
+ return isDateSelection(events) ? "Date" : "Event";
28643
+ case "select-tickets":
28644
+ return "Tickets";
28645
+ case "enter-details":
28646
+ return "Details";
28647
+ case "select-payment":
28648
+ return "Payment";
28649
+ case "error":
28650
+ case "success":
28651
+ case "submitting":
28652
+ case "redirecting":
28653
+ case "verifying-payment":
28654
+ case "verifying-timeout":
28655
+ case "payment-failed":
28656
+ return "Details";
28657
+ }
28658
+ }
28659
+ function isDateSelection(events) {
28660
+ const firstSeriesId = events[0]?.seriesId;
28661
+ return Boolean(
28662
+ events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId)
28663
+ );
28664
+ }
28665
+ function buildEventRegistrationShellBodyText(stepLabels) {
28666
+ if (stepLabels.includes("Payment")) {
28667
+ return "Preparing tickets, details, and payment options.";
28668
+ }
28669
+ if (stepLabels[0] === "Tickets") {
28670
+ return "Preparing tickets and booking details.";
28671
+ }
28672
+ return "Preparing dates, tickets, and booking details.";
28673
+ }
28394
28674
  var eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
28395
28675
  kind: "client-owned",
28396
28676
  contracts: {