@riverbankcms/sdk 0.90.0 → 0.91.0

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 (90) hide show
  1. package/dist/{PreviewEditorSidebar-KVXNF3VW.mjs → PreviewEditorSidebar-3TT47WCF.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-J3JN5Z7T.mjs → PreviewEditorUI-ORCLLUNZ.mjs} +3 -3
  3. package/dist/SdkPreviewModeRuntime-GMCDQPZZ.mjs +8 -0
  4. package/dist/_dts/api/src/bookingConfig.d.ts +3 -0
  5. package/dist/_dts/api/src/event-listing-destination.d.ts +59 -0
  6. package/dist/_dts/api/src/index.d.ts +4 -0
  7. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +0 -1
  8. package/dist/_dts/api/src/navigation.d.ts +2 -0
  9. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +3 -1
  10. package/dist/_dts/api/src/settings/permissions.d.ts +273 -0
  11. package/dist/_dts/api/src/types.d.ts +1 -0
  12. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +60 -2
  13. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +12 -1
  14. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +9 -9
  15. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +1 -1
  16. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +17 -0
  17. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +5 -0
  18. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +24 -0
  19. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/destination.d.ts +8 -0
  20. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/pricing.d.ts +3 -0
  21. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
  22. package/dist/_dts/core/src/event-pricing.d.ts +12 -2
  23. package/dist/_dts/core/src/string.d.ts +12 -0
  24. package/dist/_dts/sdk/src/cli/sync/validation.d.ts +2 -2
  25. package/dist/_dts/sdk/src/public-api/contracts.d.ts +11 -1
  26. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +11 -1
  27. package/dist/_dts/sdk/src/version.d.ts +1 -1
  28. package/dist/{chunk-GSPFFUVB.mjs → chunk-AFPMCLS7.mjs} +2 -2
  29. package/dist/{chunk-RQ3XZ4SJ.mjs → chunk-GDT2QGIL.mjs} +1 -1
  30. package/dist/{chunk-PMBB6MQ7.mjs → chunk-RQUZYSES.mjs} +345 -153
  31. package/dist/{chunk-AEOYWPE4.mjs → chunk-S3YHJWEU.mjs} +7 -7
  32. package/dist/{chunk-UG7I7S7W.mjs → chunk-U5YM4AWE.mjs} +1 -1
  33. package/dist/{chunk-BOQXMCSP.mjs → chunk-ZA2S7H34.mjs} +3 -3
  34. package/dist/cli/index.mjs +363 -437
  35. package/dist/cli/init-docs/content/workflow-add-block.md +48 -0
  36. package/dist/cli/init-docs/content/workflow-custom-block.md +10 -0
  37. package/dist/client/{accordion-GXQNWQ6O.mjs → accordion-AFX37652.mjs} +2 -2
  38. package/dist/client/{bookingForm-STLUJ36H.mjs → bookingForm-32V5QCOW.mjs} +6 -6
  39. package/dist/client/bookings.mjs +1170 -571
  40. package/dist/client/{carousel-CVRN6EPP.mjs → carousel-TJGQJ7ER.mjs} +3 -3
  41. package/dist/client/{cart-IYIBA5CL.mjs → cart-JUU2JEW4.mjs} +6 -6
  42. package/dist/client/{checkout-O3BGM4GS.mjs → checkout-RD6BTFX4.mjs} +6 -6
  43. package/dist/client/{chunk-DAS5CIER.mjs → chunk-6QZIBNGV.mjs} +119 -21
  44. package/dist/client/{chunk-VFHZLZAC.mjs → chunk-6RN62XBV.mjs} +1 -1
  45. package/dist/client/{chunk-D3ETC2SU.mjs → chunk-C4LP6BPG.mjs} +1 -1
  46. package/dist/client/{chunk-NBFRJ5NB.mjs → chunk-CKXEUWWA.mjs} +2 -2
  47. package/dist/client/{chunk-4RTFGHZN.mjs → chunk-E6VIWZUG.mjs} +6 -3
  48. package/dist/client/{chunk-Z62JYS5O.mjs → chunk-FMZZHAIR.mjs} +2 -2
  49. package/dist/client/{chunk-FHU6PFPM.mjs → chunk-ISAUXU5R.mjs} +1 -1
  50. package/dist/client/{chunk-HIHOQGIP.mjs → chunk-LJCX6V7Q.mjs} +9 -9
  51. package/dist/client/{chunk-6DPXDOIL.mjs → chunk-MLBNVN4H.mjs} +99 -26
  52. package/dist/client/{chunk-7DH35FGA.mjs → chunk-PMNAV6LO.mjs} +1 -1
  53. package/dist/client/{chunk-MFPKS6QS.mjs → chunk-RMOFBBNA.mjs} +5 -5
  54. package/dist/client/{chunk-25W2EQUN.mjs → chunk-RWYFG625.mjs} +17 -8
  55. package/dist/client/client.mjs +305 -113
  56. package/dist/client/{courseRegistration-2D3ACMJR.mjs → courseRegistration-X63QAIVV.mjs} +6 -6
  57. package/dist/client/{eventCalendar-QY4UZUFF.mjs → eventCalendar-5T24GCZL.mjs} +9 -9
  58. package/dist/client/{eventCombined-RRCDKJC2.mjs → eventCombined-AZVTF22X.mjs} +9 -9
  59. package/dist/client/{eventDetails-YO335BUT.mjs → eventDetails-7GPFNLGF.mjs} +9 -9
  60. package/dist/client/{eventListing-PXA6GFQ3.mjs → eventListing-QEUMTMUM.mjs} +9 -9
  61. package/dist/client/{eventRegistration-2ZHEDDXO.mjs → eventRegistration-P2EDKCQZ.mjs} +9 -9
  62. package/dist/client/{form-ZS6KX4U2.mjs → form-NUJ7H4IN.mjs} +3 -3
  63. package/dist/client/{headerSection-QK5SLIIB.mjs → headerSection-JB7LECPL.mjs} +3 -3
  64. package/dist/client/hooks.mjs +93 -42
  65. package/dist/client/{locationMap-GFNIUD2X.mjs → locationMap-UEYWUCSW.mjs} +3 -3
  66. package/dist/client/{newsletterForm-PGLTTCUG.mjs → newsletterForm-S2YZQ2X7.mjs} +3 -3
  67. package/dist/client/{productDetail-OPBE5ZPI.mjs → productDetail-H5MADGG7.mjs} +6 -6
  68. package/dist/client/{productList-NI72Q62Z.mjs → productList-DK7YON7H.mjs} +6 -6
  69. package/dist/client/rendering/client.mjs +262 -70
  70. package/dist/client/rendering/islands.mjs +19 -19
  71. package/dist/client/rendering.mjs +306 -114
  72. package/dist/client/{shop-3ZQPEWYI.mjs → shop-6PA7RDRJ.mjs} +6 -6
  73. package/dist/client/spam-protection.mjs +10 -10
  74. package/dist/preview-next/client/runtime.mjs +5 -5
  75. package/dist/{sdk-runtime-FSHXCWDS.mjs → sdk-runtime-JP5347OB.mjs} +6 -6
  76. package/dist/server/components.mjs +149 -69
  77. package/dist/server/config-validation.mjs +85 -34
  78. package/dist/server/config.mjs +85 -34
  79. package/dist/server/data.mjs +93 -42
  80. package/dist/server/index.mjs +1 -1
  81. package/dist/server/navigation.mjs +2 -2
  82. package/dist/server/next.mjs +170 -90
  83. package/dist/server/page-converter.mjs +77 -26
  84. package/dist/server/prebuild.mjs +1 -1
  85. package/dist/server/rendering/server.mjs +161 -81
  86. package/dist/server/rendering.mjs +165 -85
  87. package/dist/server/routing.mjs +135 -58
  88. package/dist/server/server.mjs +102 -51
  89. package/package.json +2 -2
  90. package/dist/SdkPreviewModeRuntime-UBL6MSNP.mjs +0 -8
@@ -1855,9 +1855,9 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
1855
1855
  readonly contentTypeField?: string | undefined;
1856
1856
  readonly valueFrom?: "id" | "identifier" | "slug" | undefined;
1857
1857
  } | {
1858
+ readonly label: string;
1858
1859
  readonly id: string;
1859
1860
  readonly type: "repeater";
1860
- readonly label: string;
1861
1861
  readonly required: boolean;
1862
1862
  readonly description?: string | undefined;
1863
1863
  readonly minItems: number;
@@ -1968,9 +1968,9 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
1968
1968
  };
1969
1969
  readonly itemTypes?: Record<string, import("..").ItemTypeDefinition>;
1970
1970
  } | {
1971
+ readonly label: string;
1971
1972
  readonly id: string;
1972
1973
  readonly type: "group";
1973
- readonly label: string;
1974
1974
  readonly required: boolean;
1975
1975
  readonly description?: string | undefined;
1976
1976
  readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
@@ -2071,9 +2071,9 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2071
2071
  fields: import("../../../../block-form/src/backend/index").FieldDefinition[];
2072
2072
  };
2073
2073
  } | {
2074
+ readonly label: string;
2074
2075
  readonly id: string;
2075
2076
  readonly type: "modal";
2076
- readonly label: string;
2077
2077
  readonly required: boolean;
2078
2078
  readonly description?: string | undefined;
2079
2079
  readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
@@ -2174,9 +2174,9 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2174
2174
  fields: import("../../../../block-form/src/backend/index").FieldDefinition[];
2175
2175
  };
2176
2176
  } | {
2177
+ readonly label: string;
2177
2178
  readonly id: string;
2178
2179
  readonly type: "tabGroup";
2179
- readonly label: string;
2180
2180
  readonly required: boolean;
2181
2181
  readonly description?: string | undefined;
2182
2182
  readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
@@ -4398,9 +4398,9 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
4398
4398
  renderInHeader?: boolean | undefined;
4399
4399
  intent?: "style" | "display" | "content" | "behavior" | undefined;
4400
4400
  };
4401
+ label: string;
4401
4402
  id: string;
4402
4403
  type: "repeater";
4403
- label: string;
4404
4404
  required: boolean;
4405
4405
  description?: string | undefined;
4406
4406
  minItems: number;
@@ -4527,9 +4527,9 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
4527
4527
  renderInHeader?: boolean | undefined;
4528
4528
  intent?: "style" | "display" | "content" | "behavior" | undefined;
4529
4529
  };
4530
+ label: string;
4530
4531
  id: string;
4531
4532
  type: "group";
4532
- label: string;
4533
4533
  required: boolean;
4534
4534
  description?: string | undefined;
4535
4535
  visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
@@ -4646,9 +4646,9 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
4646
4646
  renderInHeader?: boolean | undefined;
4647
4647
  intent?: "style" | "display" | "content" | "behavior" | undefined;
4648
4648
  };
4649
+ label: string;
4649
4650
  id: string;
4650
4651
  type: "modal";
4651
- label: string;
4652
4652
  required: boolean;
4653
4653
  description?: string | undefined;
4654
4654
  visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
@@ -4765,9 +4765,9 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
4765
4765
  renderInHeader?: boolean | undefined;
4766
4766
  intent?: "style" | "display" | "content" | "behavior" | undefined;
4767
4767
  };
4768
+ label: string;
4768
4769
  id: string;
4769
4770
  type: "tabGroup";
4770
- label: string;
4771
4771
  required: boolean;
4772
4772
  description?: string | undefined;
4773
4773
  visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
@@ -4887,9 +4887,9 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
4887
4887
  searchThreshold?: number | undefined;
4888
4888
  renderInHeader?: boolean | undefined;
4889
4889
  };
4890
+ label: string;
4890
4891
  id: "_textCardStyles";
4891
4892
  type: "modal";
4892
- label: string;
4893
4893
  required: boolean;
4894
4894
  description?: string | undefined;
4895
4895
  visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
@@ -22,9 +22,9 @@ export declare const teamMembersManifest: import("..").DefinedBlockManifest<impo
22
22
  readonly equals: "manual";
23
23
  };
24
24
  };
25
+ readonly label: string;
25
26
  readonly id: string;
26
27
  readonly type: "repeater";
27
- readonly label: string;
28
28
  readonly required: boolean;
29
29
  readonly description?: string | undefined;
30
30
  readonly minItems: number;
@@ -134,6 +134,20 @@ type BaseIssue<K extends string, Extra extends object = Record<never, never>> =
134
134
  fieldId: string;
135
135
  label: string;
136
136
  }> & Readonly<Extra>;
137
+ export type ManifestContentRequiredScope = "topLevel" | "nested";
138
+ export type ManifestContentValidationIssue = Readonly<{
139
+ kind: FieldValidationIssue["kind"];
140
+ field: string;
141
+ message: string;
142
+ requiredScope: ManifestContentRequiredScope | null;
143
+ }>;
144
+ export type ManifestContentValidationResult = Readonly<{
145
+ kind: "valid";
146
+ issues: readonly [];
147
+ }> | Readonly<{
148
+ kind: "invalid";
149
+ issues: readonly ManifestContentValidationIssue[];
150
+ }>;
137
151
  type PlanBase<K extends string, ValueKind extends string, Constraints extends FieldConstraint> = Readonly<{
138
152
  kind: K;
139
153
  valueKind: ValueKind;
@@ -213,6 +227,9 @@ export declare function validateFieldValue(plan: FieldValidationPlan, value: unk
213
227
  export declare function fieldPlanToZod(plan: FieldValidationPlan, options?: FieldValidationOptions): z.ZodTypeAny;
214
228
  export declare function resolveFieldValidationDescriptor(plans: readonly FieldValidationPlan[], path: FieldPath): FieldValidationDescriptor | null;
215
229
  export declare function validateManifestValues(fields: readonly FieldDefinition[], values: Record<string, unknown>, options?: FieldValidationOptions): FieldValidationIssue[];
230
+ export declare function validateManifestContentForPush(fields: readonly FieldDefinition[], values: Record<string, unknown>, options?: FieldValidationOptions): ManifestContentValidationResult;
231
+ export declare function isTopLevelRequiredManifestContentIssue(issue: ManifestContentValidationIssue): boolean;
232
+ export declare function formatManifestContentValidationIssue(issue: ManifestContentValidationIssue): string;
216
233
  export declare function isCanonicalEmailValue(value: string): boolean;
217
234
  export declare function isCanonicalPhoneValue(value: string): boolean;
218
235
  export declare function isCanonicalUrlValue(value: string, options?: Readonly<{
@@ -1,4 +1,5 @@
1
1
  import type { DirectCheckoutCollectionOptionKind, PaymentMethod } from '../../api/types';
2
+ import type { EventRegistrationDirectPaymentOption, EventRegistrationDirectPaymentSelectionState } from './eventPaymentOptions';
2
3
  import type { EventRegistrationContentEntry } from '../event-registration.interactive';
3
4
  import type { EligibilityData, FormData, Guest, GuestErrors, OccurrenceContext, PaymentSelection, PaymentStepState, PublicEvent, RegistrationEvent, RegistrationResult } from './types';
4
5
  import type { SelectableEventTicketType } from './utils';
@@ -144,10 +145,14 @@ export type EventRegistrationPaymentSelection = Readonly<{
144
145
  export type EventRegistrationPaymentModel = Readonly<{
145
146
  kind: 'hidden';
146
147
  selection: EventRegistrationPaymentSelection;
148
+ directPaymentOptions: readonly EventRegistrationDirectPaymentOption[];
149
+ directPaymentSelectionState: EventRegistrationDirectPaymentSelectionState;
147
150
  stepState: PaymentStepState;
148
151
  }> | Readonly<{
149
152
  kind: 'loading' | 'error' | 'not-eligible' | 'ready';
150
153
  selection: EventRegistrationPaymentSelection;
154
+ directPaymentOptions: readonly EventRegistrationDirectPaymentOption[];
155
+ directPaymentSelectionState: EventRegistrationDirectPaymentSelectionState;
151
156
  stepState: PaymentStepState;
152
157
  eligibility: EligibilityData | null;
153
158
  eligibilityError: string | null | undefined;
@@ -1,6 +1,7 @@
1
1
  import type { DirectCheckoutCollectionOptionKind } from '../../api/types';
2
2
  import type { BlockBookingPaymentCollectionOption, BlockBookingPaymentTerms } from '../../../blocks/shared/bookingPaymentTerms';
3
3
  import { type BookingPaymentOptionViewModel } from '../../shared/bookingPaymentOptions';
4
+ import type { PaymentSelection } from './types';
4
5
  type SupportedEventDirectPaymentOption = Extract<BlockBookingPaymentCollectionOption, {
5
6
  kind: 'upfront' | 'flexible_balance';
6
7
  }>;
@@ -13,6 +14,21 @@ export type EventRegistrationPaymentOptionsViewModel = Readonly<{
13
14
  sectionTitle: string;
14
15
  options: readonly EventRegistrationDirectPaymentOption[];
15
16
  }>;
17
+ export type EventRegistrationStripePaymentSelection = Readonly<{
18
+ method: 'stripe';
19
+ collectionOptionKind: EventRegistrationDirectPaymentOption['kind'];
20
+ }>;
21
+ export type EventRegistrationDirectPaymentSelectionState = Readonly<{
22
+ kind: 'not-stripe';
23
+ }> | Readonly<{
24
+ kind: 'unavailable';
25
+ }> | Readonly<{
26
+ kind: 'valid';
27
+ selection: EventRegistrationStripePaymentSelection;
28
+ }> | Readonly<{
29
+ kind: 'invalid';
30
+ fallbackSelection: EventRegistrationStripePaymentSelection;
31
+ }>;
16
32
  export declare function buildEventRegistrationPaymentOptionsViewModel(input: Readonly<{
17
33
  eventTitle: string;
18
34
  paymentTerms?: BlockBookingPaymentTerms | null;
@@ -21,4 +37,12 @@ export declare function buildEventRegistrationPaymentOptionsViewModel(input: Rea
21
37
  startsAt?: string | null;
22
38
  locale?: string;
23
39
  }>): EventRegistrationPaymentOptionsViewModel;
40
+ export declare function resolveEventRegistrationDirectPaymentSelection(input: Readonly<{
41
+ options: readonly EventRegistrationDirectPaymentOption[];
42
+ selection: PaymentSelection;
43
+ }>): EventRegistrationDirectPaymentSelectionState;
44
+ export declare function normalizeEventRegistrationDirectPaymentSelection(input: Readonly<{
45
+ options: readonly EventRegistrationDirectPaymentOption[];
46
+ selection: PaymentSelection;
47
+ }>): PaymentSelection;
24
48
  export {};
@@ -0,0 +1,8 @@
1
+ import type { PublicEvent } from '../../../../blocks/events/shared/types';
2
+ type RuntimeEventDestinationSource = Readonly<{
3
+ destination?: unknown;
4
+ eventDestinationMode?: unknown;
5
+ path?: unknown;
6
+ }>;
7
+ export declare function resolveRuntimeEventDestination(event: RuntimeEventDestinationSource): PublicEvent['destination'];
8
+ export {};
@@ -1,6 +1,9 @@
1
1
  import type { PublicEventPricing } from '../../../../../../../core/src/index';
2
2
  import type { PublicEventTicketType } from '../../../../blocks/events/shared/types';
3
3
  type RuntimeEventPricingSource = {
4
+ destination?: unknown;
5
+ eventDestinationMode?: unknown;
6
+ path?: unknown;
4
7
  pricing?: unknown;
5
8
  requiresRegistration?: boolean | null;
6
9
  pricingType?: unknown;
@@ -79,9 +79,16 @@ export declare function formatEventPriceDisplay(pricing: PublicEventPricing<unkn
79
79
  export type ResolvedEventCta = {
80
80
  label: string;
81
81
  href: string;
82
+ external: boolean;
82
83
  /** True when the CTA should be hidden (e.g. sold-out events) */
83
84
  hidden: boolean;
84
85
  };
86
+ export declare function resolveEventHref(event: PublicEvent): string;
87
+ export declare function resolveEventLinkProps(event: PublicEvent): {
88
+ href: string;
89
+ target?: '_blank';
90
+ rel?: string;
91
+ };
85
92
  /**
86
93
  * Resolve the CTA state for an event.
87
94
  * Shared by EventCard and EventCompactRow to keep sold-out, registration-closed,
@@ -1,7 +1,7 @@
1
1
  import { type CurrencyDecimals } from "./currency-format";
2
2
  export declare const EVENT_PRICING_MODES: readonly ["single", "ticket_types"];
3
3
  export type EventPricingMode = (typeof EVENT_PRICING_MODES)[number];
4
- export type PublicEventPricingType = "free" | "paid";
4
+ export type PublicEventPricingType = "free" | "paid" | "external";
5
5
  export type PublicCoursePriceDisplay = Readonly<{
6
6
  kind: "free";
7
7
  currency: string;
@@ -26,6 +26,10 @@ export type PublicEventExactPriceDisplay = Readonly<{
26
26
  amount: number;
27
27
  currency: string;
28
28
  }>;
29
+ export type PublicEventExternalPriceDisplay = Readonly<{
30
+ kind: "external";
31
+ label: string;
32
+ }>;
29
33
  export type PublicEventTicketTypePriceDisplay = PublicEventFreePriceDisplay | PublicEventExactPriceDisplay | Readonly<{
30
34
  kind: "from";
31
35
  amount: number;
@@ -44,7 +48,7 @@ export type PublicEventTicketTypePriceDisplay = PublicEventFreePriceDisplay | Pu
44
48
  kind: "unavailable";
45
49
  currency: string;
46
50
  }>;
47
- export type PublicEventPriceDisplay = PublicEventTicketTypePriceDisplay | Readonly<{
51
+ export type PublicEventPriceDisplay = PublicEventTicketTypePriceDisplay | PublicEventExternalPriceDisplay | Readonly<{
48
52
  kind: "course";
49
53
  display: PublicCoursePriceDisplay;
50
54
  }>;
@@ -72,6 +76,12 @@ export type PublicEventPricing<TTicketType = never> = Readonly<{
72
76
  kind: "course";
73
77
  display: PublicCoursePriceDisplay;
74
78
  }>;
79
+ }> | Readonly<{
80
+ kind: "external";
81
+ display: Readonly<{
82
+ kind: "external";
83
+ label: string;
84
+ }>;
75
85
  }>;
76
86
  export declare function isEventPricingMode(value: unknown): value is EventPricingMode;
77
87
  export declare function publicEventPricingDisplay(pricing: PublicEventPricing<unknown>): PublicEventPriceDisplay;
@@ -9,6 +9,18 @@ export declare function asNullableString(value: unknown): string | null;
9
9
  * Return a non-empty string value, otherwise null.
10
10
  */
11
11
  export declare function asNonEmptyStringOrNull(value: unknown): string | null;
12
+ /**
13
+ * Narrow nullable values to the present value.
14
+ */
15
+ export declare function isPresent<T>(value: T | null | undefined): value is T;
16
+ /**
17
+ * Return true for string values that contain at least one character.
18
+ */
19
+ export declare function isNonEmptyString(value: unknown): value is string;
20
+ /**
21
+ * Narrow optional string values to non-empty strings.
22
+ */
23
+ export declare function hasText(value: string | null | undefined): value is string;
12
24
  /**
13
25
  * Trim a user-entered string and collapse blank values to null.
14
26
  */
@@ -39,10 +39,10 @@ export declare function extractFieldIds(fields: readonly FieldDefinition[]): Set
39
39
  */
40
40
  export declare function extractRequiredFieldIds(fields: readonly FieldDefinition[]): Set<string>;
41
41
  /**
42
- * Validate block content values against the manifest schema using Zod.
42
+ * Validate block content values against the shared manifest push policy.
43
43
  *
44
44
  * This catches type mismatches, malformed structures, and invalid values
45
- * that would cause runtime errors when rendering blocks.
45
+ * that would be rejected by SDK block writes.
46
46
  *
47
47
  * @param data - The block data to validate
48
48
  * @param manifest - The block manifest with field definitions
@@ -539,8 +539,18 @@ export type PublicEventTicketTypeRecord = {
539
539
  createdAt: string;
540
540
  updatedAt: string;
541
541
  };
542
+ export type PublicEventDestination = Readonly<{
543
+ kind: "native";
544
+ mode: "cms-managed" | "system-managed";
545
+ path: string;
546
+ }> | Readonly<{
547
+ kind: "external";
548
+ url: string;
549
+ label: string;
550
+ }>;
542
551
  export type PublicEventsResponse = Array<{
543
552
  kind?: "event" | "course_session";
553
+ destination: PublicEventDestination;
544
554
  id: string;
545
555
  occurrenceId: string;
546
556
  seriesId: string;
@@ -571,7 +581,7 @@ export type PublicEventsResponse = Array<{
571
581
  } | null;
572
582
  };
573
583
  slug: string;
574
- path: string;
584
+ path: string | null;
575
585
  requiresRegistration: boolean;
576
586
  startsAt: string;
577
587
  endsAt: string;
@@ -50,6 +50,15 @@ export type EventCategory = {
50
50
  export type PricingType = PublicEventPricingType;
51
51
  export type { PublicCoursePriceDisplay, PublicEventPriceDisplay, PublicEventPricing, };
52
52
  export type AccessRestriction = 'none' | 'category';
53
+ export type PublicEventDestination = Readonly<{
54
+ kind: 'native';
55
+ mode: 'cms-managed' | 'system-managed';
56
+ path: string;
57
+ }> | Readonly<{
58
+ kind: 'external';
59
+ url: string;
60
+ label: string;
61
+ }>;
53
62
  export type PublicEventTicketTypeAvailability = {
54
63
  kind: 'available';
55
64
  remainingCapacity: number | null;
@@ -121,6 +130,7 @@ export type BookingPricing = {
121
130
  };
122
131
  export type PublicEvent = {
123
132
  kind?: 'event' | 'course_session';
133
+ destination: PublicEventDestination;
124
134
  id: string;
125
135
  occurrenceId: string;
126
136
  seriesId: string;
@@ -132,7 +142,7 @@ export type PublicEvent = {
132
142
  image?: Media | null;
133
143
  };
134
144
  slug: string;
135
- path: string;
145
+ path: string | null;
136
146
  requiresRegistration: boolean;
137
147
  deliveryMode: 'in_person' | 'online' | 'hybrid';
138
148
  attendanceModes: PublicEventAttendanceModeAvailability[];
@@ -8,4 +8,4 @@
8
8
  * 1. This constant
9
9
  * 2. The "version" field in package.json
10
10
  */
11
- export declare const SDK_VERSION = "0.90.0";
11
+ export declare const SDK_VERSION = "0.91.0";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { assertNever2, usePreviewDesignHistoryOrder, useOptionalEditorUiStoreInstance, getPageDesignEditorState, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, unwrapResponse, useDebouncedLatestSave, AMBIENT_BACKGROUND_ROLES, applyPageDesignEditorAction, resolvePreviewSidebarTab, confirmAutosaveBatch, beginAutosaveBatch, enqueueTransaction, applyBackgroundOverrideContentPatch, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetRollbackContentPatch, systemCustomizeFacetApplyContentPatch, unsafeAsEditorBlockId, createHistoryState, rejectAutosaveBatch, redoHistory, undoHistory, pushHistoryEntry, idleEditorTransactionQueueState, canRedoHistory, deriveTransactionCapabilities, canUndoHistory, backgroundOverrideEquals, attachRenderableMediaAssetFields, planPageDesignLayoutLookCompatibility, unsafeAsEditorBlockValues } from './chunk-PMBB6MQ7.mjs';
3
- import { ApiRequestError, resolveSurfaceDocumentAttributes, SURFACE_DOCUMENT_DATA_ATTRIBUTE, SURFACE_IDS } from './chunk-BOQXMCSP.mjs';
2
+ import { assertNever2, usePreviewDesignHistoryOrder, useOptionalEditorUiStoreInstance, getPageDesignEditorState, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, unwrapResponse, useDebouncedLatestSave, AMBIENT_BACKGROUND_ROLES, applyPageDesignEditorAction, resolvePreviewSidebarTab, confirmAutosaveBatch, beginAutosaveBatch, enqueueTransaction, applyBackgroundOverrideContentPatch, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetRollbackContentPatch, systemCustomizeFacetApplyContentPatch, unsafeAsEditorBlockId, createHistoryState, rejectAutosaveBatch, redoHistory, undoHistory, pushHistoryEntry, idleEditorTransactionQueueState, canRedoHistory, deriveTransactionCapabilities, canUndoHistory, backgroundOverrideEquals, attachRenderableMediaAssetFields, planPageDesignLayoutLookCompatibility, unsafeAsEditorBlockValues } from './chunk-RQUZYSES.mjs';
3
+ import { ApiRequestError, resolveSurfaceDocumentAttributes, SURFACE_DOCUMENT_DATA_ATTRIBUTE, SURFACE_IDS } from './chunk-ZA2S7H34.mjs';
4
4
  import { createContext, useState, useRef, useEffect, useMemo, useLayoutEffect, useContext } from 'react';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
 
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { KeyboardCode, getBlockDefinition, CSS, useSdkConfig, unwrapResponse, parseSiteIconStyleGuideVersionId, parseBlockIconValue, listBlockDescriptors, useSensor, PointerSensor, useSensors, createEditorRemoveBlockCommand, unsafeAsEditorBlockId, DndContext, closestCenter, Button, Plus, useDroppable, useDraggable, useCombinedRefs, isKeyboardEvent, createCustomBlockRegistry, Card, cn, Collapsible, CollapsibleContent, listContentTypes, mergeBlockDescriptorsWithRegistry, createEditorReorderBlocksCommand, mutateBlockContent, deleteEntrySlotBlock, deleteBlock, useDndContext, useUniqueId, useIsomorphicLayoutEffect, EmptyState, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, Search, getClientRect, resolveBlockTitle, CardHeader, GripVertical, ChevronRight, CardTitle, ArrowUp, ArrowDown, DropdownMenu, DropdownMenuTrigger, EllipsisVertical, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuItem, Copy, Trash2, DialogFooter, DialogClose, CardContent, createEntrySlotBlock, createBlock, createEditorInsertBlockCommand, reorderEntrySlotBlocks, reorderBlocks, LoaderCircle, ChevronDown, getFeatureCardIconCompletion, toFeatureCardIconSuggestionInputs, getBlockIconSemanticFallbackId, suggestSemanticIconForFeatureCard, getGeneratedBlockIconStyleState, assertNever, createManifestFormAdapter, getModalConfig, createStoreBackend, validateBlockManifestIssues, isNonEmptyValue, Settings, ScrollableDialogContent, FormRenderer, Tabs, TabsList, TabsTrigger, TabsContent, RotateCcw, ImagePlus, Sparkles, Textarea, Callout, CalloutDescription, normalEditorCuratedPromotedFieldPaths, resolveVisiblePromotedFieldPathsForEditorBlock, CalloutTitle, unfinishedBlockCopy, recoveryConflictCopy, ManifestForm, unsafeAsEditorBlockValues, Box, mergeManifestWithSdkOptions, augmentManifestWithStyleGroups, suggestFeatureCardSemanticIcons, applyFeatureCardIconSuggestions, createFeatureCardIconKey, lucide_react_exports, isThemeV2NormalEditorRawStylePath, getFieldIntent, isHeaderField, isThemeV2NormalEditorRawStyleFieldName, BackgroundGradientField, BackgroundColorField, useField, FieldFrame, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, useMediaEditorOptional, useRichTextEditor, RichTextEditorSurface, ThemeScope, isObjectRecord, EMPTY_DOC, useAsyncPickerOptions, resolvePickerSelectionLabel, shouldShowPickerSearch, normalizePickerSearchThreshold, Combobox, Badge, useBlockContext, resolveMediaSlotContract, asRecord, parseAspectRatioValue, MediaEditor, PUBLIC_FILE_FIELD_KINDS, useBackendWatch, resolveIconPickerPreset, isIconPickerPreset, getIconPickerOptionsForPreset, isKnownIconName, getIconComponent, isOfferingsPreviewSourceKey, EyeOff, CommandMultiSelect, expectParsedBrandedId, parseSiteId, buildThemeRuntime, SdkConfigProvider, PaletteProvider, MediaEditorProvider, useEditorUiStoreInstance, useUISelector, getRichTextImagePositionFromTarget, insertOrReplaceRichTextImage, emitMediaCropDebug, Pencil, resolveVideoSelectionIntentForMediaField, resolveOfferingsPreviewGroupOrderEntries, normalizeOfferingsPreviewGroupOrder, inferLegacyOfferingsPreviewGroupOrder, siteOptionSources, evaluateVisibility, Root2, List, Trigger, Content, Input, Check, Label, isInternalResolvedLinkValue, resolveImageUrlWithContext, useMediaEditor, MediaPickerMini, MediaPickerDialog, toRoutableLinkPayload, classifyKnownMimeType, getDirectImageUrlForMediaAsset, isSvgMimeType } from './chunk-PMBB6MQ7.mjs';
2
+ import { KeyboardCode, getBlockDefinition, CSS, useSdkConfig, unwrapResponse, parseSiteIconStyleGuideVersionId, parseBlockIconValue, listBlockDescriptors, useSensor, PointerSensor, useSensors, createEditorRemoveBlockCommand, unsafeAsEditorBlockId, DndContext, closestCenter, Button, Plus, useDroppable, useDraggable, useCombinedRefs, isKeyboardEvent, createCustomBlockRegistry, Card, cn, Collapsible, CollapsibleContent, listContentTypes, mergeBlockDescriptorsWithRegistry, createEditorReorderBlocksCommand, mutateBlockContent, deleteEntrySlotBlock, deleteBlock, useDndContext, useUniqueId, useIsomorphicLayoutEffect, EmptyState, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, Search, getClientRect, resolveBlockTitle, CardHeader, GripVertical, ChevronRight, CardTitle, ArrowUp, ArrowDown, DropdownMenu, DropdownMenuTrigger, EllipsisVertical, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuItem, Copy, Trash2, DialogFooter, DialogClose, CardContent, createEntrySlotBlock, createBlock, createEditorInsertBlockCommand, reorderEntrySlotBlocks, reorderBlocks, LoaderCircle, ChevronDown, getFeatureCardIconCompletion, toFeatureCardIconSuggestionInputs, getBlockIconSemanticFallbackId, suggestSemanticIconForFeatureCard, getGeneratedBlockIconStyleState, assertNever, createManifestFormAdapter, getModalConfig, createStoreBackend, validateBlockManifestIssues, isNonEmptyValue, Settings, ScrollableDialogContent, FormRenderer, Tabs, TabsList, TabsTrigger, TabsContent, RotateCcw, ImagePlus, Sparkles, Textarea, Callout, CalloutDescription, normalEditorCuratedPromotedFieldPaths, resolveVisiblePromotedFieldPathsForEditorBlock, CalloutTitle, unfinishedBlockCopy, recoveryConflictCopy, ManifestForm, unsafeAsEditorBlockValues, Box, mergeManifestWithSdkOptions, augmentManifestWithStyleGroups, suggestFeatureCardSemanticIcons, applyFeatureCardIconSuggestions, createFeatureCardIconKey, lucide_react_exports, isThemeV2NormalEditorRawStylePath, getFieldIntent, isHeaderField, isThemeV2NormalEditorRawStyleFieldName, BackgroundGradientField, BackgroundColorField, useField, FieldFrame, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, useMediaEditorOptional, useRichTextEditor, RichTextEditorSurface, ThemeScope, isObjectRecord, EMPTY_DOC, useAsyncPickerOptions, resolvePickerSelectionLabel, shouldShowPickerSearch, normalizePickerSearchThreshold, Combobox, Badge, useBlockContext, resolveMediaSlotContract, asRecord, parseAspectRatioValue, MediaEditor, PUBLIC_FILE_FIELD_KINDS, useBackendWatch, resolveIconPickerPreset, isIconPickerPreset, getIconPickerOptionsForPreset, isKnownIconName, getIconComponent, isOfferingsPreviewSourceKey, EyeOff, CommandMultiSelect, expectParsedBrandedId, parseSiteId, buildThemeRuntime, SdkConfigProvider, PaletteProvider, MediaEditorProvider, useEditorUiStoreInstance, useUISelector, getRichTextImagePositionFromTarget, insertOrReplaceRichTextImage, emitMediaCropDebug, Pencil, resolveVideoSelectionIntentForMediaField, resolveOfferingsPreviewGroupOrderEntries, normalizeOfferingsPreviewGroupOrder, inferLegacyOfferingsPreviewGroupOrder, siteOptionSources, evaluateVisibility, Root2, List, Trigger, Content, Input, Check, Label, isInternalResolvedLinkValue, resolveImageUrlWithContext, useMediaEditor, MediaPickerMini, MediaPickerDialog, toRoutableLinkPayload, classifyKnownMimeType, getDirectImageUrlForMediaAsset, isSvgMimeType } from './chunk-RQUZYSES.mjs';
3
3
  import React, { createContext, memo, useMemo, useState, useRef, useEffect, forwardRef, useCallback, useImperativeHandle, useContext, useSyncExternalStore, useLayoutEffect, Fragment as Fragment$1, useReducer } from 'react';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5