@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
@@ -6405,6 +6405,12 @@ var init_endpoints = __esm({
6405
6405
  });
6406
6406
 
6407
6407
  // ../core/src/result.ts
6408
+ function ok(value) {
6409
+ return { ok: true, value };
6410
+ }
6411
+ function err(error) {
6412
+ return { ok: false, error };
6413
+ }
6408
6414
  var init_result = __esm({
6409
6415
  "../core/src/result.ts"() {
6410
6416
  "use strict";
@@ -6479,6 +6485,30 @@ var init_collections = __esm({
6479
6485
  });
6480
6486
 
6481
6487
  // ../core/src/event-pricing.ts
6488
+ function publicEventPricingType(pricing) {
6489
+ switch (pricing.kind) {
6490
+ case "drop_in":
6491
+ case "free_registration":
6492
+ return "free";
6493
+ case "single_paid":
6494
+ case "ticket_types":
6495
+ case "course":
6496
+ return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
6497
+ }
6498
+ }
6499
+ function isFreePublicEventPriceDisplay(display) {
6500
+ switch (display.kind) {
6501
+ case "free":
6502
+ return true;
6503
+ case "course":
6504
+ return display.display.kind === "free";
6505
+ case "exact":
6506
+ case "from":
6507
+ case "mixed":
6508
+ case "unavailable":
6509
+ return false;
6510
+ }
6511
+ }
6482
6512
  var init_event_pricing = __esm({
6483
6513
  "../core/src/event-pricing.ts"() {
6484
6514
  "use strict";
@@ -6514,9 +6544,140 @@ var init_booking_instalments = __esm({
6514
6544
  });
6515
6545
 
6516
6546
  // ../core/src/booking-date-time.ts
6547
+ function isValidTimeZone(timeZone) {
6548
+ try {
6549
+ new Intl.DateTimeFormat(DEFAULT_LOCALE, { timeZone }).format(/* @__PURE__ */ new Date());
6550
+ return true;
6551
+ } catch {
6552
+ return false;
6553
+ }
6554
+ }
6555
+ function getSafeTimeZone(timeZone) {
6556
+ const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
6557
+ return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6558
+ }
6559
+ function parseStrictBookingTimeZone(timeZone) {
6560
+ const normalized = timeZone.trim();
6561
+ if (!normalized || !isValidTimeZone(normalized)) {
6562
+ return null;
6563
+ }
6564
+ return normalized;
6565
+ }
6566
+ function formatParseError(error) {
6567
+ switch (error.reason) {
6568
+ case "invalid_starts_at":
6569
+ return `Expected a valid UTC/offset-aware ISO datetime in startsAt, received "${error.value}"`;
6570
+ case "invalid_ends_at":
6571
+ return `Expected a valid UTC/offset-aware ISO datetime in endsAt, received "${error.value ?? ""}"`;
6572
+ case "invalid_time_zone":
6573
+ return `Expected a valid IANA timezone in timeZone, received "${error.value}"`;
6574
+ }
6575
+ }
6576
+ function formatToPartsLookup(date, locale, timeZone, format) {
6577
+ return new Map(
6578
+ new Intl.DateTimeFormat(locale, {
6579
+ ...format,
6580
+ timeZone
6581
+ }).formatToParts(date).map((part) => [part.type, part.value])
6582
+ );
6583
+ }
6584
+ function getZonedDateTimeParts(date, timeZone) {
6585
+ const parts = formatToPartsLookup(date, "en-GB", timeZone, {
6586
+ year: "numeric",
6587
+ month: "2-digit",
6588
+ day: "2-digit",
6589
+ hour: "2-digit",
6590
+ minute: "2-digit",
6591
+ second: "2-digit",
6592
+ hour12: false
6593
+ });
6594
+ const read = (type) => Number(parts.get(type) ?? "");
6595
+ return {
6596
+ year: read("year"),
6597
+ month: read("month"),
6598
+ day: read("day"),
6599
+ hour: read("hour"),
6600
+ minute: read("minute"),
6601
+ second: read("second")
6602
+ };
6603
+ }
6604
+ function formatDateKey(date) {
6605
+ const year = String(date.year).padStart(4, "0");
6606
+ const month = String(date.month).padStart(2, "0");
6607
+ const day = String(date.day).padStart(2, "0");
6608
+ return `${year}-${month}-${day}`;
6609
+ }
6610
+ function parseUtcIsoDateTimeString(value) {
6611
+ const normalized = value.trim();
6612
+ const hasUtcSuffix = normalized.endsWith("Z");
6613
+ const hasExplicitOffset = /[+-]\d{2}:\d{2}$/u.test(normalized);
6614
+ if (!hasUtcSuffix && !hasExplicitOffset) {
6615
+ return err("missing-timezone-offset");
6616
+ }
6617
+ const date = new Date(normalized);
6618
+ if (Number.isNaN(date.getTime())) {
6619
+ return err("invalid-date-time");
6620
+ }
6621
+ return ok(date.toISOString());
6622
+ }
6623
+ function toUtcIsoDateTimeString(value) {
6624
+ const parsed = parseUtcIsoDateTimeString(value);
6625
+ if (!parsed.ok) {
6626
+ const message = parsed.error === "missing-timezone-offset" ? `Expected an offset-aware ISO datetime, received "${value}"` : `Expected a valid ISO datetime, received "${value}"`;
6627
+ throw new Error(message);
6628
+ }
6629
+ return parsed.value;
6630
+ }
6631
+ function parseScheduledBookingDateTime(input) {
6632
+ try {
6633
+ const startsAt = toUtcIsoDateTimeString(input.startsAt);
6634
+ const timeZone = parseStrictBookingTimeZone(input.timeZone);
6635
+ if (!timeZone) {
6636
+ return {
6637
+ ok: false,
6638
+ field: "timeZone",
6639
+ reason: "invalid_time_zone",
6640
+ value: input.timeZone
6641
+ };
6642
+ }
6643
+ return {
6644
+ ok: true,
6645
+ value: {
6646
+ startsAt,
6647
+ timeZone,
6648
+ locale: input.locale
6649
+ }
6650
+ };
6651
+ } catch {
6652
+ return {
6653
+ ok: false,
6654
+ field: "startsAt",
6655
+ reason: "invalid_starts_at",
6656
+ value: input.startsAt
6657
+ };
6658
+ }
6659
+ }
6660
+ function toScheduledBookingDateTime(input) {
6661
+ const result = parseScheduledBookingDateTime(input);
6662
+ if (result.ok) {
6663
+ return result.value;
6664
+ }
6665
+ throw new Error(formatParseError(result));
6666
+ }
6667
+ function getBookingLocalDateKey(input) {
6668
+ return formatDateKey(getLocalScheduleDate(new Date(input.startsAt), input.timeZone));
6669
+ }
6670
+ function getLocalScheduleDate(date, timeZone) {
6671
+ const parts = getZonedDateTimeParts(date, getSafeTimeZone(timeZone));
6672
+ return { year: parts.year, month: parts.month, day: parts.day };
6673
+ }
6674
+ var DEFAULT_LOCALE, FALLBACK_TIMEZONE;
6517
6675
  var init_booking_date_time = __esm({
6518
6676
  "../core/src/booking-date-time.ts"() {
6519
6677
  "use strict";
6678
+ init_result();
6679
+ DEFAULT_LOCALE = "en-US";
6680
+ FALLBACK_TIMEZONE = "UTC";
6520
6681
  }
6521
6682
  });
6522
6683
 
@@ -32315,6 +32476,32 @@ var init_event_registration_shared = __esm({
32315
32476
  }
32316
32477
  });
32317
32478
 
32479
+ // ../blocks/src/system/constants/events.ts
32480
+ function isEventCalendarDisplayMode(value) {
32481
+ return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
32482
+ }
32483
+ function isEventCalendarListLayout(value) {
32484
+ return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
32485
+ }
32486
+ function isEventContentType(slug) {
32487
+ if (!slug) return false;
32488
+ return EVENT_CONTENT_TYPE_SLUGS.includes(slug);
32489
+ }
32490
+ var EVENT_CONTENT_TYPE_SLUGS, eventCalendarDisplayModeValues, eventCalendarListLayoutValues, eventCalendarListLayoutOptions;
32491
+ var init_events = __esm({
32492
+ "../blocks/src/system/constants/events.ts"() {
32493
+ "use strict";
32494
+ EVENT_CONTENT_TYPE_SLUGS = ["event", "events"];
32495
+ eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
32496
+ eventCalendarListLayoutValues = ["stack", "grid", "compact"];
32497
+ eventCalendarListLayoutOptions = [
32498
+ { id: "stack", label: "Stack" },
32499
+ { id: "grid", label: "Grid" },
32500
+ { id: "compact", label: "Compact" }
32501
+ ];
32502
+ }
32503
+ });
32504
+
32318
32505
  // ../blocks/src/system/runtime/nodes/events/shared/pricing.ts
32319
32506
  function resolveRuntimeEventPricing(event) {
32320
32507
  if (isPublicEventPricing(event.pricing)) {
@@ -32441,27 +32628,6 @@ var init_pricing = __esm({
32441
32628
  }
32442
32629
  });
32443
32630
 
32444
- // ../blocks/src/system/constants/events.ts
32445
- function isEventCalendarDisplayMode(value) {
32446
- return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
32447
- }
32448
- function isEventCalendarListLayout(value) {
32449
- return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
32450
- }
32451
- var eventCalendarDisplayModeValues, eventCalendarListLayoutValues, eventCalendarListLayoutOptions;
32452
- var init_events = __esm({
32453
- "../blocks/src/system/constants/events.ts"() {
32454
- "use strict";
32455
- eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
32456
- eventCalendarListLayoutValues = ["stack", "grid", "compact"];
32457
- eventCalendarListLayoutOptions = [
32458
- { id: "stack", label: "Stack" },
32459
- { id: "grid", label: "Grid" },
32460
- { id: "compact", label: "Compact" }
32461
- ];
32462
- }
32463
- });
32464
-
32465
32631
  // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
32466
32632
  import { z as z47 } from "zod";
32467
32633
  var previewStageSchema, registrationButtonVariantSchema, eventButtonVariantSchema, eventLayoutSchema, eventCalendarDisplayModeSchema, columnOptionSchema, weekStartSchema, filterAutoShowSchema, calendarTabViewsSchema;
@@ -32481,19 +32647,157 @@ var init_contract_schemas = __esm({
32481
32647
  }
32482
32648
  });
32483
32649
 
32650
+ // ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
32651
+ function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
32652
+ const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : ["select-event", "select-tickets", "enter-details"];
32653
+ if (!needsPaymentStep) {
32654
+ return baseSteps;
32655
+ }
32656
+ return [...baseSteps, "select-payment"];
32657
+ }
32658
+ var init_wizardSteps = __esm({
32659
+ "../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts"() {
32660
+ "use strict";
32661
+ }
32662
+ });
32663
+
32664
+ // ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
32665
+ function eventMatchesOccurrenceId(event, occurrenceId) {
32666
+ return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
32667
+ }
32668
+ function findPreSelectedEvent(input) {
32669
+ const occurrenceContext = input.occurrenceContext;
32670
+ if (!occurrenceContext) {
32671
+ return null;
32672
+ }
32673
+ const contextDate = getBookingLocalDateKey(toScheduledBookingDateTime({
32674
+ startsAt: occurrenceContext.startsAt,
32675
+ timeZone: occurrenceContext.timeZone
32676
+ }));
32677
+ return input.scopedEvents.find(
32678
+ (event) => eventMatchesOccurrenceId(event, occurrenceContext.id) || getBookingLocalDateKey(toScheduledBookingDateTime({
32679
+ startsAt: event.startsAt,
32680
+ timeZone: event.timeZone
32681
+ })) === contextDate
32682
+ ) ?? null;
32683
+ }
32684
+ function resolveEventRequiresPayment(input) {
32685
+ if (input.eligibility) {
32686
+ return input.eligibility.requiresPayment;
32687
+ }
32688
+ if (input.selectedTicketType) {
32689
+ return input.selectedTicketType.priceAmount > 0;
32690
+ }
32691
+ if (!input.event) {
32692
+ return false;
32693
+ }
32694
+ return publicEventPricingType(resolveRuntimeEventPricing(input.event)) !== "free";
32695
+ }
32696
+ var init_registrationDerivations = __esm({
32697
+ "../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts"() {
32698
+ "use strict";
32699
+ init_src();
32700
+ init_pricing();
32701
+ }
32702
+ });
32703
+
32704
+ // ../blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.ts
32705
+ function toRegistrationEvent(event) {
32706
+ return {
32707
+ ...event,
32708
+ pricing: resolveRuntimeEventPricing(event),
32709
+ publicEventId: event.id,
32710
+ registrationOccurrenceId: event.occurrenceId
32711
+ };
32712
+ }
32713
+ function toRegistrationEvents(events) {
32714
+ return events.map(toRegistrationEvent);
32715
+ }
32716
+ var init_registrationEventAdapter = __esm({
32717
+ "../blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.ts"() {
32718
+ "use strict";
32719
+ init_pricing();
32720
+ }
32721
+ });
32722
+
32484
32723
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
32485
32724
  import { z as z48 } from "zod";
32486
32725
  function buildEventRegistrationDisplay(source) {
32726
+ const stepLabels = buildEventRegistrationShellStepLabels(source);
32487
32727
  return {
32488
32728
  kind: "event-registration",
32489
32729
  state: "generic-shell",
32490
32730
  className: source.className ?? null,
32491
32731
  titleText: "Event registration",
32492
- bodyText: "Preparing dates, tickets, and booking details.",
32493
- stepLabels: EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS,
32732
+ bodyText: buildEventRegistrationShellBodyText(stepLabels),
32733
+ stepLabels,
32494
32734
  summaryButtonText: source.buttonText?.trim() || "Register"
32495
32735
  };
32496
32736
  }
32737
+ function buildEventRegistrationShellStepLabels(source) {
32738
+ const scopedEvents = scopeEventRegistrationEvents(source);
32739
+ if (scopedEvents.length === 0) {
32740
+ return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
32741
+ }
32742
+ const preSelectedEvent = findPreSelectedEvent({
32743
+ scopedEvents,
32744
+ occurrenceContext: source.occurrenceContext
32745
+ });
32746
+ const hasPreSelectedContext = Boolean(source.occurrenceContext || preSelectedEvent);
32747
+ const needsPaymentStep = hasPreSelectedContext && preSelectedEvent ? resolveEventRequiresPayment({
32748
+ eligibility: null,
32749
+ selectedTicketType: null,
32750
+ event: preSelectedEvent
32751
+ }) : false;
32752
+ return getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
32753
+ }
32754
+ function scopeEventRegistrationEvents(source) {
32755
+ const events = toRegistrationEvents(source.events ?? []);
32756
+ if (source.occurrenceContext?.seriesId) {
32757
+ return events.filter((event) => event.seriesId === source.occurrenceContext?.seriesId);
32758
+ }
32759
+ const entrySlug = source.contentEntry?.slug;
32760
+ const entryContentType = source.contentEntry?.contentTypeSlug;
32761
+ if (entrySlug && entryContentType && isEventContentType(entryContentType)) {
32762
+ return events.filter((event) => event.slug === entrySlug);
32763
+ }
32764
+ return events;
32765
+ }
32766
+ function shellLabelForRegistrationStep(step, events) {
32767
+ switch (step) {
32768
+ case "select-event":
32769
+ return isDateSelection(events) ? "Date" : "Event";
32770
+ case "select-tickets":
32771
+ return "Tickets";
32772
+ case "enter-details":
32773
+ return "Details";
32774
+ case "select-payment":
32775
+ return "Payment";
32776
+ case "error":
32777
+ case "success":
32778
+ case "submitting":
32779
+ case "redirecting":
32780
+ case "verifying-payment":
32781
+ case "verifying-timeout":
32782
+ case "payment-failed":
32783
+ return "Details";
32784
+ }
32785
+ }
32786
+ function isDateSelection(events) {
32787
+ const firstSeriesId = events[0]?.seriesId;
32788
+ return Boolean(
32789
+ events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId)
32790
+ );
32791
+ }
32792
+ function buildEventRegistrationShellBodyText(stepLabels) {
32793
+ if (stepLabels.includes("Payment")) {
32794
+ return "Preparing tickets, details, and payment options.";
32795
+ }
32796
+ if (stepLabels[0] === "Tickets") {
32797
+ return "Preparing tickets and booking details.";
32798
+ }
32799
+ return "Preparing dates, tickets, and booking details.";
32800
+ }
32497
32801
  function normalizeEventRegistrationEventInput(value) {
32498
32802
  if (!isRecord4(value)) {
32499
32803
  return value;
@@ -32506,22 +32810,22 @@ function normalizeEventRegistrationEventInput(value) {
32506
32810
  function isRecord4(value) {
32507
32811
  return typeof value === "object" && value !== null && !Array.isArray(value);
32508
32812
  }
32509
- var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS, eventRegistrationGenericDateStepLabel, eventRegistrationGenericTicketsStepLabel, eventRegistrationGenericDetailsStepLabel, contentEntrySchema, eventRegistrationPublicEventSchema, eventRegistrationSourceSchema, eventRegistrationDisplaySchema, eventRegistrationHydrationSchema, eventRegistrationRenderSchema, eventRegistrationIslandMetaCodec, eventRegistrationIslandMetaKeys, eventRegistrationBlockRuntime, eventRegistrationInteractiveIslandPropsCodec;
32813
+ var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS, EVENT_REGISTRATION_SHELL_STEP_LABELS, contentEntrySchema, eventRegistrationPublicEventSchema, eventRegistrationSourceSchema, eventRegistrationDisplaySchema, eventRegistrationHydrationSchema, eventRegistrationRenderSchema, eventRegistrationIslandMetaCodec, eventRegistrationIslandMetaKeys, eventRegistrationBlockRuntime, eventRegistrationInteractiveIslandPropsCodec;
32510
32814
  var init_event_registration_interactive = __esm({
32511
32815
  "../blocks/src/system/runtime/nodes/event-registration.interactive.ts"() {
32512
32816
  "use strict";
32513
32817
  init_schemas2();
32514
32818
  init_event_registration_shared();
32819
+ init_events();
32515
32820
  init_pricing();
32516
32821
  init_islands();
32517
32822
  init_runtime();
32518
32823
  init_contract_schemas();
32824
+ init_wizardSteps();
32825
+ init_registrationDerivations();
32826
+ init_registrationEventAdapter();
32519
32827
  EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
32520
- [
32521
- eventRegistrationGenericDateStepLabel,
32522
- eventRegistrationGenericTicketsStepLabel,
32523
- eventRegistrationGenericDetailsStepLabel
32524
- ] = EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
32828
+ EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
32525
32829
  contentEntrySchema = z48.object({
32526
32830
  id: z48.string(),
32527
32831
  slug: z48.string(),
@@ -32557,11 +32861,7 @@ var init_event_registration_interactive = __esm({
32557
32861
  className: z48.string().nullable(),
32558
32862
  titleText: z48.string(),
32559
32863
  bodyText: z48.string(),
32560
- stepLabels: z48.tuple([
32561
- z48.literal(eventRegistrationGenericDateStepLabel),
32562
- z48.literal(eventRegistrationGenericTicketsStepLabel),
32563
- z48.literal(eventRegistrationGenericDetailsStepLabel)
32564
- ]),
32864
+ stepLabels: z48.array(z48.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
32565
32865
  summaryButtonText: z48.string()
32566
32866
  });
32567
32867
  eventRegistrationHydrationSchema = z48.object({