@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
@@ -48,6 +48,171 @@ function formatKeyAsLabel(key) {
48
48
  // ../blocks/src/system/manifest/schema.ts
49
49
  import { z as z2 } from "zod";
50
50
 
51
+ // ../core/src/result.ts
52
+ function ok(value) {
53
+ return { ok: true, value };
54
+ }
55
+ function err(error) {
56
+ return { ok: false, error };
57
+ }
58
+
59
+ // ../core/src/event-pricing.ts
60
+ function publicEventPricingType(pricing) {
61
+ switch (pricing.kind) {
62
+ case "drop_in":
63
+ case "free_registration":
64
+ return "free";
65
+ case "single_paid":
66
+ case "ticket_types":
67
+ case "course":
68
+ return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
69
+ }
70
+ }
71
+ function isFreePublicEventPriceDisplay(display) {
72
+ switch (display.kind) {
73
+ case "free":
74
+ return true;
75
+ case "course":
76
+ return display.display.kind === "free";
77
+ case "exact":
78
+ case "from":
79
+ case "mixed":
80
+ case "unavailable":
81
+ return false;
82
+ }
83
+ }
84
+
85
+ // ../core/src/booking-date-time.ts
86
+ var DEFAULT_LOCALE = "en-US";
87
+ var FALLBACK_TIMEZONE = "UTC";
88
+ function isValidTimeZone(timeZone) {
89
+ try {
90
+ new Intl.DateTimeFormat(DEFAULT_LOCALE, { timeZone }).format(/* @__PURE__ */ new Date());
91
+ return true;
92
+ } catch {
93
+ return false;
94
+ }
95
+ }
96
+ function getSafeTimeZone(timeZone) {
97
+ const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
98
+ return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
99
+ }
100
+ function parseStrictBookingTimeZone(timeZone) {
101
+ const normalized = timeZone.trim();
102
+ if (!normalized || !isValidTimeZone(normalized)) {
103
+ return null;
104
+ }
105
+ return normalized;
106
+ }
107
+ function formatParseError(error) {
108
+ switch (error.reason) {
109
+ case "invalid_starts_at":
110
+ return `Expected a valid UTC/offset-aware ISO datetime in startsAt, received "${error.value}"`;
111
+ case "invalid_ends_at":
112
+ return `Expected a valid UTC/offset-aware ISO datetime in endsAt, received "${error.value ?? ""}"`;
113
+ case "invalid_time_zone":
114
+ return `Expected a valid IANA timezone in timeZone, received "${error.value}"`;
115
+ }
116
+ }
117
+ function formatToPartsLookup(date, locale, timeZone, format) {
118
+ return new Map(
119
+ new Intl.DateTimeFormat(locale, {
120
+ ...format,
121
+ timeZone
122
+ }).formatToParts(date).map((part) => [part.type, part.value])
123
+ );
124
+ }
125
+ function getZonedDateTimeParts(date, timeZone) {
126
+ const parts = formatToPartsLookup(date, "en-GB", timeZone, {
127
+ year: "numeric",
128
+ month: "2-digit",
129
+ day: "2-digit",
130
+ hour: "2-digit",
131
+ minute: "2-digit",
132
+ second: "2-digit",
133
+ hour12: false
134
+ });
135
+ const read = (type) => Number(parts.get(type) ?? "");
136
+ return {
137
+ year: read("year"),
138
+ month: read("month"),
139
+ day: read("day"),
140
+ hour: read("hour"),
141
+ minute: read("minute"),
142
+ second: read("second")
143
+ };
144
+ }
145
+ function formatDateKey(date) {
146
+ const year = String(date.year).padStart(4, "0");
147
+ const month = String(date.month).padStart(2, "0");
148
+ const day = String(date.day).padStart(2, "0");
149
+ return `${year}-${month}-${day}`;
150
+ }
151
+ function parseUtcIsoDateTimeString(value) {
152
+ const normalized = value.trim();
153
+ const hasUtcSuffix = normalized.endsWith("Z");
154
+ const hasExplicitOffset = /[+-]\d{2}:\d{2}$/u.test(normalized);
155
+ if (!hasUtcSuffix && !hasExplicitOffset) {
156
+ return err("missing-timezone-offset");
157
+ }
158
+ const date = new Date(normalized);
159
+ if (Number.isNaN(date.getTime())) {
160
+ return err("invalid-date-time");
161
+ }
162
+ return ok(date.toISOString());
163
+ }
164
+ function toUtcIsoDateTimeString(value) {
165
+ const parsed = parseUtcIsoDateTimeString(value);
166
+ if (!parsed.ok) {
167
+ const message = parsed.error === "missing-timezone-offset" ? `Expected an offset-aware ISO datetime, received "${value}"` : `Expected a valid ISO datetime, received "${value}"`;
168
+ throw new Error(message);
169
+ }
170
+ return parsed.value;
171
+ }
172
+ function parseScheduledBookingDateTime(input) {
173
+ try {
174
+ const startsAt = toUtcIsoDateTimeString(input.startsAt);
175
+ const timeZone = parseStrictBookingTimeZone(input.timeZone);
176
+ if (!timeZone) {
177
+ return {
178
+ ok: false,
179
+ field: "timeZone",
180
+ reason: "invalid_time_zone",
181
+ value: input.timeZone
182
+ };
183
+ }
184
+ return {
185
+ ok: true,
186
+ value: {
187
+ startsAt,
188
+ timeZone,
189
+ locale: input.locale
190
+ }
191
+ };
192
+ } catch {
193
+ return {
194
+ ok: false,
195
+ field: "startsAt",
196
+ reason: "invalid_starts_at",
197
+ value: input.startsAt
198
+ };
199
+ }
200
+ }
201
+ function toScheduledBookingDateTime(input) {
202
+ const result = parseScheduledBookingDateTime(input);
203
+ if (result.ok) {
204
+ return result.value;
205
+ }
206
+ throw new Error(formatParseError(result));
207
+ }
208
+ function getBookingLocalDateKey(input) {
209
+ return formatDateKey(getLocalScheduleDate(new Date(input.startsAt), input.timeZone));
210
+ }
211
+ function getLocalScheduleDate(date, timeZone) {
212
+ const parts = getZonedDateTimeParts(date, getSafeTimeZone(timeZone));
213
+ return { year: parts.year, month: parts.month, day: parts.day };
214
+ }
215
+
51
216
  // ../core/src/location.ts
52
217
  function normalizeLocationAddressText(value) {
53
218
  if (typeof value !== "string") {
@@ -2708,9 +2873,9 @@ var _Vibrant = class _Vibrant2 {
2708
2873
  }
2709
2874
  image.remove();
2710
2875
  return res;
2711
- } catch (err) {
2876
+ } catch (err2) {
2712
2877
  image.remove();
2713
- return Promise.reject(err);
2878
+ return Promise.reject(err2);
2714
2879
  }
2715
2880
  }
2716
2881
  async getPalettes() {
@@ -2724,9 +2889,9 @@ var _Vibrant = class _Vibrant2 {
2724
2889
  const res = result1.palettes;
2725
2890
  image.remove();
2726
2891
  return res;
2727
- } catch (err) {
2892
+ } catch (err2) {
2728
2893
  image.remove();
2729
- return Promise.reject(err);
2894
+ return Promise.reject(err2);
2730
2895
  }
2731
2896
  }
2732
2897
  };
@@ -19392,6 +19557,26 @@ var occurrenceContextSchema = z36.object({
19392
19557
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
19393
19558
  import { z as z38 } from "zod";
19394
19559
 
19560
+ // ../blocks/src/system/constants/events.ts
19561
+ var EVENT_CONTENT_TYPE_SLUGS = ["event", "events"];
19562
+ var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
19563
+ var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
19564
+ var eventCalendarListLayoutOptions = [
19565
+ { id: "stack", label: "Stack" },
19566
+ { id: "grid", label: "Grid" },
19567
+ { id: "compact", label: "Compact" }
19568
+ ];
19569
+ function isEventCalendarDisplayMode(value) {
19570
+ return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
19571
+ }
19572
+ function isEventCalendarListLayout(value) {
19573
+ return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
19574
+ }
19575
+ function isEventContentType(slug) {
19576
+ if (!slug) return false;
19577
+ return EVENT_CONTENT_TYPE_SLUGS.includes(slug);
19578
+ }
19579
+
19395
19580
  // ../blocks/src/system/runtime/nodes/events/shared/pricing.ts
19396
19581
  var DEFAULT_EVENT_CURRENCY = "USD";
19397
19582
  function resolveRuntimeEventPricing(event) {
@@ -19514,23 +19699,6 @@ function readAmount(value) {
19514
19699
 
19515
19700
  // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
19516
19701
  import { z as z37 } from "zod";
19517
-
19518
- // ../blocks/src/system/constants/events.ts
19519
- var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
19520
- var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
19521
- var eventCalendarListLayoutOptions = [
19522
- { id: "stack", label: "Stack" },
19523
- { id: "grid", label: "Grid" },
19524
- { id: "compact", label: "Compact" }
19525
- ];
19526
- function isEventCalendarDisplayMode(value) {
19527
- return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
19528
- }
19529
- function isEventCalendarListLayout(value) {
19530
- return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
19531
- }
19532
-
19533
- // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
19534
19702
  var previewStageSchema = z37.enum(["preview", "published"]);
19535
19703
  var registrationButtonVariantSchema = z37.enum(["primary", "secondary", "outline"]);
19536
19704
  var eventButtonVariantSchema = z37.enum(["primary", "secondary", "outline", "link"]);
@@ -19541,13 +19709,64 @@ var weekStartSchema = z37.enum(["sunday", "monday"]);
19541
19709
  var filterAutoShowSchema = z37.enum(["auto", "always", "never"]);
19542
19710
  var calendarTabViewsSchema = z37.enum(["both", "month", "week"]);
19543
19711
 
19712
+ // ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
19713
+ function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
19714
+ const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : ["select-event", "select-tickets", "enter-details"];
19715
+ if (!needsPaymentStep) {
19716
+ return baseSteps;
19717
+ }
19718
+ return [...baseSteps, "select-payment"];
19719
+ }
19720
+
19721
+ // ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
19722
+ function eventMatchesOccurrenceId(event, occurrenceId) {
19723
+ return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
19724
+ }
19725
+ function findPreSelectedEvent(input) {
19726
+ const occurrenceContext = input.occurrenceContext;
19727
+ if (!occurrenceContext) {
19728
+ return null;
19729
+ }
19730
+ const contextDate = getBookingLocalDateKey(toScheduledBookingDateTime({
19731
+ startsAt: occurrenceContext.startsAt,
19732
+ timeZone: occurrenceContext.timeZone
19733
+ }));
19734
+ return input.scopedEvents.find(
19735
+ (event) => eventMatchesOccurrenceId(event, occurrenceContext.id) || getBookingLocalDateKey(toScheduledBookingDateTime({
19736
+ startsAt: event.startsAt,
19737
+ timeZone: event.timeZone
19738
+ })) === contextDate
19739
+ ) ?? null;
19740
+ }
19741
+ function resolveEventRequiresPayment(input) {
19742
+ if (input.eligibility) {
19743
+ return input.eligibility.requiresPayment;
19744
+ }
19745
+ if (input.selectedTicketType) {
19746
+ return input.selectedTicketType.priceAmount > 0;
19747
+ }
19748
+ if (!input.event) {
19749
+ return false;
19750
+ }
19751
+ return publicEventPricingType(resolveRuntimeEventPricing(input.event)) !== "free";
19752
+ }
19753
+
19754
+ // ../blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.ts
19755
+ function toRegistrationEvent(event) {
19756
+ return {
19757
+ ...event,
19758
+ pricing: resolveRuntimeEventPricing(event),
19759
+ publicEventId: event.id,
19760
+ registrationOccurrenceId: event.occurrenceId
19761
+ };
19762
+ }
19763
+ function toRegistrationEvents(events) {
19764
+ return events.map(toRegistrationEvent);
19765
+ }
19766
+
19544
19767
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
19545
19768
  var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
19546
- var [
19547
- eventRegistrationGenericDateStepLabel,
19548
- eventRegistrationGenericTicketsStepLabel,
19549
- eventRegistrationGenericDetailsStepLabel
19550
- ] = EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
19769
+ var EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
19551
19770
  var contentEntrySchema = z38.object({
19552
19771
  id: z38.string(),
19553
19772
  slug: z38.string(),
@@ -19583,11 +19802,7 @@ var eventRegistrationDisplaySchema = z38.object({
19583
19802
  className: z38.string().nullable(),
19584
19803
  titleText: z38.string(),
19585
19804
  bodyText: z38.string(),
19586
- stepLabels: z38.tuple([
19587
- z38.literal(eventRegistrationGenericDateStepLabel),
19588
- z38.literal(eventRegistrationGenericTicketsStepLabel),
19589
- z38.literal(eventRegistrationGenericDetailsStepLabel)
19590
- ]),
19805
+ stepLabels: z38.array(z38.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
19591
19806
  summaryButtonText: z38.string()
19592
19807
  });
19593
19808
  var eventRegistrationHydrationSchema = z38.object({
@@ -19622,16 +19837,81 @@ var eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
19622
19837
  "stage"
19623
19838
  );
19624
19839
  function buildEventRegistrationDisplay(source) {
19840
+ const stepLabels = buildEventRegistrationShellStepLabels(source);
19625
19841
  return {
19626
19842
  kind: "event-registration",
19627
19843
  state: "generic-shell",
19628
19844
  className: source.className ?? null,
19629
19845
  titleText: "Event registration",
19630
- bodyText: "Preparing dates, tickets, and booking details.",
19631
- stepLabels: EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS,
19846
+ bodyText: buildEventRegistrationShellBodyText(stepLabels),
19847
+ stepLabels,
19632
19848
  summaryButtonText: source.buttonText?.trim() || "Register"
19633
19849
  };
19634
19850
  }
19851
+ function buildEventRegistrationShellStepLabels(source) {
19852
+ const scopedEvents = scopeEventRegistrationEvents(source);
19853
+ if (scopedEvents.length === 0) {
19854
+ return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
19855
+ }
19856
+ const preSelectedEvent = findPreSelectedEvent({
19857
+ scopedEvents,
19858
+ occurrenceContext: source.occurrenceContext
19859
+ });
19860
+ const hasPreSelectedContext = Boolean(source.occurrenceContext || preSelectedEvent);
19861
+ const needsPaymentStep = hasPreSelectedContext && preSelectedEvent ? resolveEventRequiresPayment({
19862
+ eligibility: null,
19863
+ selectedTicketType: null,
19864
+ event: preSelectedEvent
19865
+ }) : false;
19866
+ return getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
19867
+ }
19868
+ function scopeEventRegistrationEvents(source) {
19869
+ const events = toRegistrationEvents(source.events ?? []);
19870
+ if (source.occurrenceContext?.seriesId) {
19871
+ return events.filter((event) => event.seriesId === source.occurrenceContext?.seriesId);
19872
+ }
19873
+ const entrySlug = source.contentEntry?.slug;
19874
+ const entryContentType = source.contentEntry?.contentTypeSlug;
19875
+ if (entrySlug && entryContentType && isEventContentType(entryContentType)) {
19876
+ return events.filter((event) => event.slug === entrySlug);
19877
+ }
19878
+ return events;
19879
+ }
19880
+ function shellLabelForRegistrationStep(step, events) {
19881
+ switch (step) {
19882
+ case "select-event":
19883
+ return isDateSelection(events) ? "Date" : "Event";
19884
+ case "select-tickets":
19885
+ return "Tickets";
19886
+ case "enter-details":
19887
+ return "Details";
19888
+ case "select-payment":
19889
+ return "Payment";
19890
+ case "error":
19891
+ case "success":
19892
+ case "submitting":
19893
+ case "redirecting":
19894
+ case "verifying-payment":
19895
+ case "verifying-timeout":
19896
+ case "payment-failed":
19897
+ return "Details";
19898
+ }
19899
+ }
19900
+ function isDateSelection(events) {
19901
+ const firstSeriesId = events[0]?.seriesId;
19902
+ return Boolean(
19903
+ events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId)
19904
+ );
19905
+ }
19906
+ function buildEventRegistrationShellBodyText(stepLabels) {
19907
+ if (stepLabels.includes("Payment")) {
19908
+ return "Preparing tickets, details, and payment options.";
19909
+ }
19910
+ if (stepLabels[0] === "Tickets") {
19911
+ return "Preparing tickets and booking details.";
19912
+ }
19913
+ return "Preparing dates, tickets, and booking details.";
19914
+ }
19635
19915
  var eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
19636
19916
  kind: "client-owned",
19637
19917
  contracts: {
@@ -27654,8 +27934,8 @@ async function getJsonFromAiText(ai, config, userMessage, schema) {
27654
27934
  let json;
27655
27935
  try {
27656
27936
  json = JSON.parse(textToParse);
27657
- } catch (err) {
27658
- const msg = err instanceof Error ? err.message : String(err);
27937
+ } catch (err2) {
27938
+ const msg = err2 instanceof Error ? err2.message : String(err2);
27659
27939
  throw new AiValidationError(`NON_JSON_RESPONSE: ${msg}`, rawText, null);
27660
27940
  }
27661
27941
  const result = schema.safeParse(json);
@@ -4,7 +4,7 @@ import * as path from "path";
4
4
  import * as crypto from "crypto";
5
5
 
6
6
  // src/version.ts
7
- var SDK_VERSION = "0.84.0";
7
+ var SDK_VERSION = "0.84.1";
8
8
 
9
9
  // src/constants.ts
10
10
  var PREBUILD_PAGE_SIZE = 50;