@riverbankcms/sdk 0.75.0 → 0.77.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 (177) hide show
  1. package/README.md +2 -0
  2. package/dist/{PreviewEditorSidebar-U2IHCBYN.mjs → PreviewEditorSidebar-XSX7QKHQ.mjs} +1179 -519
  3. package/dist/{PreviewEditorUI-ZGH2RQNP.mjs → PreviewEditorUI-YZNEZ3QD.mjs} +2 -2
  4. package/dist/SdkPreviewModeRuntime-5FS5E6BI.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +528 -20
  6. package/dist/_dts/api/src/bookingOperations.d.ts +12 -0
  7. package/dist/_dts/api/src/contentRuntime.d.ts +5 -0
  8. package/dist/_dts/api/src/index.d.ts +1 -1
  9. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +11 -3
  10. package/dist/_dts/api/src/siteAssets.d.ts +1 -0
  11. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +26 -2
  12. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +28 -1
  13. package/dist/_dts/block-form/src/client/index.d.ts +2 -2
  14. package/dist/_dts/block-form/src/index.d.ts +2 -1
  15. package/dist/_dts/block-form/src/manifest/utils.d.ts +24 -0
  16. package/dist/_dts/block-form/src/widgets/DateField/dateFieldSchema.d.ts +1 -1
  17. package/dist/_dts/block-form/src/widgets/DateTimeField/dateTimeFieldSchema.d.ts +1 -1
  18. package/dist/_dts/block-form/src/widgets/TimeField/timeFieldSchema.d.ts +1 -1
  19. package/dist/_dts/blocks/src/PageRenderer.d.ts +10 -10
  20. package/dist/_dts/blocks/src/client/events.d.ts +3 -1
  21. package/dist/_dts/blocks/src/client/site-chrome.d.ts +22 -0
  22. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -4
  23. package/dist/_dts/blocks/src/customBlockRegistry.d.ts +38 -0
  24. package/dist/_dts/blocks/src/index.d.ts +2 -0
  25. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +20 -2
  26. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +25 -0
  27. package/dist/_dts/blocks/src/system/blocks/index.d.ts +2 -0
  28. package/dist/_dts/blocks/src/system/blocks/intro.d.ts +24 -0
  29. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +3 -34
  30. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  31. package/dist/_dts/blocks/src/system/fields/aspectRatio.d.ts +30 -0
  32. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +4 -1
  33. package/dist/_dts/blocks/src/system/fields/ctas.d.ts +7 -0
  34. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +11 -2
  35. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -6
  37. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
  38. package/dist/_dts/blocks/src/system/runtime/nodes/accordion.d.ts +2 -0
  39. package/dist/_dts/blocks/src/system/runtime/nodes/accordion.server.d.ts +2 -0
  40. package/dist/_dts/blocks/src/system/runtime/nodes/accordionIconTreatment.d.ts +5 -0
  41. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +3 -27
  42. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +163 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +5 -5
  44. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +29 -0
  45. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +13 -0
  46. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +4 -0
  47. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +4 -3
  48. package/dist/_dts/blocks/src/system/runtime/shared/utils/bookingRoute.d.ts +20 -0
  49. package/dist/_dts/blocks/src/system/runtime/shared/utils/index.d.ts +2 -1
  50. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -0
  51. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +2 -1
  52. package/dist/_dts/blocks/src/system/types/link.d.ts +12 -0
  53. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -0
  54. package/dist/_dts/content-editor/src/hooks/blockDraftLifecycle.d.ts +48 -0
  55. package/dist/_dts/content-editor/src/hooks/invalidBlockSelectors.d.ts +4 -0
  56. package/dist/_dts/content-editor/src/hooks/publishability.d.ts +47 -0
  57. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  58. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +20 -0
  59. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -1
  60. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +3 -1
  61. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +3 -1
  62. package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +5 -1
  63. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +4 -1
  64. package/dist/_dts/editor-blocks/src/block-editor/actionControlMode.d.ts +2 -0
  65. package/dist/_dts/editor-blocks/src/block-editor/customBlockRegistry.d.ts +2 -0
  66. package/dist/_dts/editor-blocks/src/block-editor/sdkBlockMerger.d.ts +9 -37
  67. package/dist/_dts/editor-blocks/src/index.d.ts +3 -3
  68. package/dist/_dts/preview-next/src/client/index.d.ts +3 -0
  69. package/dist/_dts/preview-next/src/client/layout/PreviewLayoutContext.d.ts +5 -1
  70. package/dist/_dts/preview-next/src/client/preview/PreviewDesignCoordinatorContext.d.ts +20 -0
  71. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +7 -2
  72. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +7 -2
  73. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +7 -2
  74. package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +18 -0
  75. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +20 -3
  76. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +6 -1
  77. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +14 -4
  78. package/dist/_dts/preview-next/src/client/preview/previewDesignCoordinator.d.ts +73 -0
  79. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +12 -4
  80. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +46 -0
  81. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +6 -1
  82. package/dist/_dts/preview-next/src/client/preview/themeOverlay.d.ts +21 -3
  83. package/dist/_dts/preview-next/src/client/preview/typographySelectionInput.d.ts +14 -0
  84. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewModeRuntime.d.ts +1 -1
  85. package/dist/_dts/sdk/src/cli/commands/style.d.ts +8 -0
  86. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -1
  87. package/dist/_dts/sdk/src/client/types.d.ts +9 -0
  88. package/dist/_dts/sdk/src/client.d.ts +1 -1
  89. package/dist/_dts/sdk/src/components.d.ts +2 -2
  90. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +35 -0
  91. package/dist/_dts/sdk/src/index.d.ts +2 -1
  92. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -0
  93. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -2
  94. package/dist/_dts/sdk/src/rendering/overrideResolution.d.ts +6 -0
  95. package/dist/_dts/sdk/src/rendering/overrides.d.ts +21 -1
  96. package/dist/_dts/sdk/src/rendering/server.d.ts +4 -3
  97. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  98. package/dist/_dts/sdk/src/version.d.ts +1 -1
  99. package/dist/_dts/site-commands/src/commands.d.ts +15 -0
  100. package/dist/_dts/theme-core/src/buttons/personalities/earth-pill.d.ts +16 -0
  101. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  102. package/dist/_dts/theme-core/src/fonts/types.d.ts +1 -1
  103. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +45 -0
  104. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  105. package/dist/_dts/theme-core/src/palette/variants/warm-neutral.d.ts +16 -0
  106. package/dist/_dts/theme-core/src/schema.d.ts +280 -0
  107. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +81 -0
  108. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +6 -4
  109. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +81 -0
  110. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +118 -2
  111. package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +13 -0
  112. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  113. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +364 -5
  114. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +6 -0
  115. package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
  116. package/dist/_dts/theme-core/src/site-styles/persistedIdParseResult.d.ts +9 -0
  117. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +20 -4
  118. package/dist/_dts/theme-core/src/site-styles/types.d.ts +74 -2
  119. package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +189 -0
  120. package/dist/{chunk-Z7JLNTJR.mjs → chunk-6SMUFTXD.mjs} +2 -1
  121. package/dist/{chunk-ZSHFGFUG.mjs → chunk-ANKDYZ2E.mjs} +1 -1
  122. package/dist/{chunk-BGMNDF6T.mjs → chunk-EAWHBECW.mjs} +476 -153
  123. package/dist/{chunk-RWXQBRQZ.mjs → chunk-GSQX43EZ.mjs} +450 -63
  124. package/dist/{chunk-GFE74WRD.mjs → chunk-WLQBJN2Z.mjs} +3275 -435
  125. package/dist/cli/index.mjs +2023 -181
  126. package/dist/client/{accordion-T2UD2ZTH.mjs → accordion-RZMQSYLR.mjs} +1 -1
  127. package/dist/client/{bookingForm-GUP75FKN.mjs → bookingForm-NF4ASVNV.mjs} +3 -13
  128. package/dist/client/bookings.mjs +103 -11
  129. package/dist/client/{carousel-2NQA6V57.mjs → carousel-LDX47ZIK.mjs} +1 -1
  130. package/dist/client/{cart-5TFIAFDS.mjs → cart-RGXDS5F4.mjs} +4 -4
  131. package/dist/client/{checkout-TP4WAHZE.mjs → checkout-P7WWSNNY.mjs} +4 -4
  132. package/dist/client/{chunk-ZLMS67RR.mjs → chunk-E2TDNXCL.mjs} +1 -1
  133. package/dist/client/{chunk-NWOUL6JY.mjs → chunk-GMVTOKYG.mjs} +3 -3
  134. package/dist/client/{chunk-CY2ZTSE5.mjs → chunk-JNC7CGHX.mjs} +1 -1
  135. package/dist/client/{chunk-VUAOE3AG.mjs → chunk-L3DNHIJX.mjs} +4 -4
  136. package/dist/client/{chunk-FU2QRZMX.mjs → chunk-R56FQ3RR.mjs} +163 -24
  137. package/dist/client/{chunk-WJXXNDSE.mjs → chunk-UFSWADAO.mjs} +1 -1
  138. package/dist/client/client.mjs +4392 -2504
  139. package/dist/client/{courseRegistration-5DPU6PDY.mjs → courseRegistration-7F65K5ZR.mjs} +3 -3
  140. package/dist/client/{eventCalendar-F3GZGTEF.mjs → eventCalendar-GLSC5KTL.mjs} +5 -5
  141. package/dist/client/{eventCombined-BQOB6QMY.mjs → eventCombined-ZHK4WKUR.mjs} +5 -5
  142. package/dist/client/{eventDetails-PEM2EJWE.mjs → eventDetails-E3PJYBIN.mjs} +5 -5
  143. package/dist/client/{eventListing-YMIQPVME.mjs → eventListing-EMS3WC3E.mjs} +5 -5
  144. package/dist/client/{eventRegistration-4I6ZNDUF.mjs → eventRegistration-NZOTVNPI.mjs} +5 -5
  145. package/dist/client/{form-ZJVAYZ6G.mjs → form-ETFZFATW.mjs} +1 -1
  146. package/dist/client/{headerSection-TOT5MGTF.mjs → headerSection-4LBP7ULT.mjs} +2 -2
  147. package/dist/client/hooks.mjs +1918 -293
  148. package/dist/client/{locationMap-J66NZREU.mjs → locationMap-5M655YSJ.mjs} +1 -1
  149. package/dist/client/{newsletterForm-ET2XUMRO.mjs → newsletterForm-QOUYW44O.mjs} +1 -1
  150. package/dist/client/{productDetail-C2XIH7C5.mjs → productDetail-O4DOCWQG.mjs} +4 -4
  151. package/dist/client/{productList-T2AZLFTP.mjs → productList-A5RO5WIS.mjs} +4 -4
  152. package/dist/client/rendering/client.mjs +3328 -3177
  153. package/dist/client/rendering/islands.mjs +18 -18
  154. package/dist/client/rendering.mjs +5461 -3584
  155. package/dist/client/{shop-UZ6IUZXD.mjs → shop-L4MZH4I2.mjs} +4 -4
  156. package/dist/preview-next/chrome.css +1 -1
  157. package/dist/preview-next/client/runtime.mjs +4 -4
  158. package/dist/preview-next/editor-base.css +2 -148
  159. package/dist/preview-next/editor-chrome.css +179 -0
  160. package/dist/{sdk-runtime-JCUQM63Y.mjs → sdk-runtime-Q6MTR4KL.mjs} +5 -5
  161. package/dist/server/components.mjs +2983 -1093
  162. package/dist/server/config-validation.mjs +1921 -293
  163. package/dist/server/config.mjs +1921 -293
  164. package/dist/server/data.mjs +1918 -293
  165. package/dist/server/index.mjs +31 -2
  166. package/dist/server/next.mjs +2951 -1043
  167. package/dist/server/page-converter.mjs +1894 -281
  168. package/dist/server/prebuild.mjs +1 -1
  169. package/dist/server/rendering/server.mjs +2995 -1096
  170. package/dist/server/rendering.mjs +2988 -1098
  171. package/dist/server/routing.mjs +1963 -275
  172. package/dist/server/server.mjs +1932 -288
  173. package/dist/server/theme-bridge.mjs +158 -1
  174. package/dist/server/theme.mjs +158 -1
  175. package/package.json +1 -1
  176. package/dist/SdkPreviewModeRuntime-MTUGBTLQ.mjs +0 -8
  177. /package/dist/client/{chunk-2PHQZ666.mjs → chunk-JEZECJ3W.mjs} +0 -0
@@ -1,4 +1,4 @@
1
- export declare const SYSTEM_BLOCK_KINDS: readonly ["block.hero", "block.columns", "block.collection", "block.media-text", "block.cta-full", "block.single-button", "block.body-text", "block.location-map", "block.faq", "block.testimonials", "block.team-members", "block.embed", "block.blog-post", "block.blog-listing", "block.site-header", "block.site-footer", "block.form", "block.appointment-booking", "block.event-registration", "block.event-details", "block.course-registration", "block.course-details", "block.event-spotlight", "block.event-listing", "block.event-calendar", "block.shop", "block.product-list", "block.product-detail", "block.cart", "block.checkout", "block.gifting", "block.newsletter-signup", "block.image-gallery", "block.video-grid", "block.audio-player", "block.file-download"];
1
+ export declare const SYSTEM_BLOCK_KINDS: readonly ["block.hero", "block.intro", "block.columns", "block.collection", "block.feature-cards", "block.media-text", "block.cta-full", "block.single-button", "block.body-text", "block.location-map", "block.faq", "block.testimonials", "block.team-members", "block.embed", "block.blog-post", "block.blog-listing", "block.site-header", "block.site-footer", "block.form", "block.appointment-booking", "block.event-registration", "block.event-details", "block.course-registration", "block.course-details", "block.event-spotlight", "block.event-listing", "block.event-calendar", "block.shop", "block.product-list", "block.product-detail", "block.cart", "block.checkout", "block.gifting", "block.newsletter-signup", "block.image-gallery", "block.video-grid", "block.audio-player", "block.file-download"];
2
2
  export type SystemBlockKind = (typeof SYSTEM_BLOCK_KINDS)[number];
3
3
  export type CustomBlockKind = `custom.${string}`;
4
4
  export type BlockKind = SystemBlockKind | CustomBlockKind;
@@ -0,0 +1,30 @@
1
+ import type { FieldDefinition } from '../manifest/schema';
2
+ export type StandardAspectRatio = 'auto' | '16/9' | '4/3' | '1/1' | '3/4';
3
+ type FieldUi = NonNullable<FieldDefinition['ui']>;
4
+ type FieldVisibleWhen = FieldUi['visibleWhen'];
5
+ export declare const standardAspectRatioOptions: readonly [{
6
+ readonly value: "auto";
7
+ readonly label: "Auto (original)";
8
+ }, {
9
+ readonly value: "16/9";
10
+ readonly label: "16:9 (Landscape)";
11
+ }, {
12
+ readonly value: "4/3";
13
+ readonly label: "4:3 (Standard)";
14
+ }, {
15
+ readonly value: "1/1";
16
+ readonly label: "1:1 (Square)";
17
+ }, {
18
+ readonly value: "3/4";
19
+ readonly label: "3:4 (Portrait)";
20
+ }];
21
+ type AspectRatioFieldOptions = Readonly<{
22
+ id?: string;
23
+ label?: string;
24
+ description?: string;
25
+ defaultValue?: StandardAspectRatio;
26
+ uiIntent?: 'display' | 'style';
27
+ visibleWhen?: FieldVisibleWhen;
28
+ }>;
29
+ export declare function createAspectRatioField(options?: AspectRatioFieldOptions): FieldDefinition;
30
+ export {};
@@ -1,5 +1,5 @@
1
1
  import type { ModalFieldDefinition } from '../manifest/schema';
2
- import type { EyebrowTreatment, TileTreatment } from '../../../../theme-core/src/site-styles/index';
2
+ import type { AccordionIconTreatment, EyebrowTreatment, HeadingDecoration, HeadingDecorationOverride, TileTreatment } from '../../../../theme-core/src/site-styles/index';
3
3
  import type { Media } from '../../lib/media';
4
4
  /**
5
5
  * Options for customizing a section styles field.
@@ -83,6 +83,9 @@ export type SectionStylesContent = {
83
83
  minHeight?: 'none' | 'banner' | 'hero' | 'immersive' | null;
84
84
  tileTreatment?: TileTreatment | null;
85
85
  eyebrowTreatment?: EyebrowTreatment | null;
86
+ headingDecoration?: HeadingDecoration | null;
87
+ headingDecorationOverride?: HeadingDecorationOverride | null;
88
+ accordionIconTreatment?: AccordionIconTreatment | null;
86
89
  } | null;
87
90
  export type CardStylesContent = {
88
91
  background?: Record<string, unknown> | null;
@@ -25,5 +25,12 @@ export type CtasRepeaterField<O extends CtasOptions = {}> = FieldDefinition & {
25
25
  ];
26
26
  };
27
27
  };
28
+ export type BlockCtaContent = {
29
+ label?: string | null;
30
+ href?: string | null;
31
+ link?: unknown;
32
+ variant?: string | null;
33
+ size?: string | null;
34
+ };
28
35
  export declare function createCtasRepeater<const O extends CtasOptions = {}>(options?: O): CtasRepeaterField<O>;
29
36
  export {};
@@ -43,6 +43,15 @@ type UrlFormatConstraint = Readonly<{
43
43
  kind: "urlFormat";
44
44
  allowRelative: boolean;
45
45
  }>;
46
+ type DateFormatConstraint = Readonly<{
47
+ kind: "dateFormat";
48
+ }>;
49
+ type TimeFormatConstraint = Readonly<{
50
+ kind: "timeFormat";
51
+ }>;
52
+ type DateTimeFormatConstraint = Readonly<{
53
+ kind: "datetimeFormat";
54
+ }>;
46
55
  type NumberTypeConstraint = Readonly<{
47
56
  kind: "numberType";
48
57
  }>;
@@ -85,7 +94,7 @@ type LinkObjectConstraint = Readonly<{
85
94
  type ReferenceTextConstraint = Readonly<{
86
95
  kind: "referenceText";
87
96
  }>;
88
- type StringConstraint = RequiredConstraint | TextTypeConstraint | MaxLengthConstraint | EmailFormatConstraint | PhoneFormatConstraint | PatternFormatConstraint | UrlFormatConstraint | SlugFormatConstraint | ReferenceTextConstraint;
97
+ type StringConstraint = RequiredConstraint | TextTypeConstraint | MaxLengthConstraint | EmailFormatConstraint | PhoneFormatConstraint | PatternFormatConstraint | UrlFormatConstraint | DateFormatConstraint | TimeFormatConstraint | DateTimeFormatConstraint | SlugFormatConstraint | ReferenceTextConstraint;
89
98
  type NumberConstraint = RequiredConstraint | NumberTypeConstraint | NumberMinConstraint | NumberMaxConstraint;
90
99
  type SelectConstraint = RequiredConstraint | SelectOptionConstraint;
91
100
  type ArrayConstraint = RequiredConstraint | ArrayTypeConstraint | MinItemsConstraint | MaxItemsConstraint;
@@ -105,7 +114,7 @@ export type FieldValidationIssue = BaseIssue<"required", {
105
114
  expected: string;
106
115
  }> | BaseIssue<"tooLong", {
107
116
  maximum: number;
108
- }> | BaseIssue<"invalidEmail"> | BaseIssue<"invalidPhone"> | BaseIssue<"invalidPattern"> | BaseIssue<"invalidUrl"> | BaseIssue<"invalidNumber"> | BaseIssue<"tooSmall", {
117
+ }> | BaseIssue<"invalidEmail"> | BaseIssue<"invalidPhone"> | BaseIssue<"invalidPattern"> | BaseIssue<"invalidUrl"> | BaseIssue<"invalidDate"> | BaseIssue<"invalidTime"> | BaseIssue<"invalidDateTime"> | BaseIssue<"invalidNumber"> | BaseIssue<"tooSmall", {
109
118
  minimum: number;
110
119
  }> | BaseIssue<"tooLarge", {
111
120
  maximum: number;
@@ -20,7 +20,7 @@ export type AllowedNodeType = (typeof ALLOWED_NODE_TYPES)[number];
20
20
  * $bind.transforms within custom block layouts. Transform IDs
21
21
  * not in this list will be rejected during validation.
22
22
  */
23
- export declare const ALLOWED_TRANSFORM_IDS: readonly ["string.uppercase", "value.fallback", "date.formatShort", "array.length", "value.jsonArray", "value.csv", "array.marqueeLoop", "layout.maxWidthClass", "layout.headerRootClass", "layout.footerRootClass", "layout.headerRootStyle", "layout.footerRootStyle", "ui.headerNavLinkClass", "ui.headingClassFromAlignment", "ui.bodyClassFromAlignment", "ui.stackAlignFromAlignment", "ui.sectionStateTone", "ui.heroContentWrapperClass", "ui.heroCtaJustify", "ui.heroStackJustifyFromVerticalAlignment", "ui.heroGridClassFromVerticalAlignment", "ui.conditionalClass", "ui.twoColumnContainerClass", "ui.twoColumnFlexBasis", "ui.imageGalleryFilterClass", "ui.imageGalleryTileClass", "ui.imageGalleryTileStyle", "ui.imageGalleryMarqueeTileStyle", "ui.imageGalleryMarqueeDuration", "ui.imageGalleryMarqueeDirection", "ui.imageFragmentClass", "ui.imageFragmentSize", "media.fromUrl", "background.resolveStyle", "background.resolveColorsStyle", "background.resolveAllowOverflow", "background.resolveImageStyle", "background.resolveImageClassName", "background.resolveOverlayStyle", "links.resolve", "links.label", "content.interpolateRichTextTokens", "boxStyles.spacing", "boxStyles.resolveRootClass", "boxStyles.resolveRootStyle", "boxStyles.semanticGap", "boxStyles.semanticGapValue", "containerStyles.resolveBoxClassName"];
23
+ export declare const ALLOWED_TRANSFORM_IDS: readonly ["string.uppercase", "value.fallback", "date.formatShort", "array.length", "value.jsonArray", "value.csv", "array.marqueeLoop", "layout.maxWidthClass", "layout.headerRootClass", "layout.footerRootClass", "layout.headerRootStyle", "layout.headerSectionBackground", "layout.footerRootStyle", "ui.headerNavLinkClass", "ui.headingClassFromAlignment", "ui.bodyClassFromAlignment", "ui.stackAlignFromAlignment", "ui.sectionStateTone", "ui.heroContentWrapperClass", "ui.heroCtaJustify", "ui.heroStackJustifyFromVerticalAlignment", "ui.heroGridClassFromVerticalAlignment", "ui.conditionalClass", "ui.twoColumnContainerClass", "ui.twoColumnFlexBasis", "ui.imageGalleryFilterClass", "ui.imageGalleryTileClass", "ui.imageGalleryTileStyle", "ui.imageGalleryMarqueeTileStyle", "ui.imageGalleryMarqueeDuration", "ui.imageGalleryMarqueeDirection", "ui.imageFragmentClass", "ui.imageFragmentSize", "media.fromUrl", "background.resolveStyle", "background.resolveColorsStyle", "background.resolveAllowOverflow", "background.resolveImageStyle", "background.resolveImageClassName", "background.resolveOverlayStyle", "links.resolve", "links.label", "content.interpolateRichTextTokens", "boxStyles.spacing", "boxStyles.resolveRootClass", "boxStyles.resolveRootStyle", "boxStyles.semanticGap", "boxStyles.semanticGapValue", "containerStyles.resolveBoxClassName"];
24
24
  export type AllowedTransformId = (typeof ALLOWED_TRANSFORM_IDS)[number];
25
25
  /**
26
26
  * Set for O(1) lookup of allowed node types.
@@ -2368,7 +2368,7 @@ export declare const runtimeBackedBlockClientEntries: {
2368
2368
  className: string | null;
2369
2369
  summaryButtonText: string;
2370
2370
  }>;
2371
- hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
2371
+ hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
2372
2372
  }>;
2373
2373
  contracts: Readonly<{
2374
2374
  source: Readonly<{
@@ -2427,7 +2427,7 @@ export declare const runtimeBackedBlockClientEntries: {
2427
2427
  className: string | null;
2428
2428
  summaryButtonText: string;
2429
2429
  }>;
2430
- hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
2430
+ hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
2431
2431
  }>) => unknown;
2432
2432
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
2433
2433
  display: Readonly<{
@@ -2436,7 +2436,7 @@ export declare const runtimeBackedBlockClientEntries: {
2436
2436
  className: string | null;
2437
2437
  summaryButtonText: string;
2438
2438
  }>;
2439
- hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
2439
+ hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
2440
2440
  }>>;
2441
2441
  }>;
2442
2442
  }>;
@@ -2475,7 +2475,7 @@ export declare const runtimeBackedBlockClientEntries: {
2475
2475
  className: string | null;
2476
2476
  summaryButtonText: string;
2477
2477
  }>;
2478
- hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
2478
+ hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
2479
2479
  }>;
2480
2480
  contracts: Readonly<{
2481
2481
  source: Readonly<{
@@ -2534,7 +2534,7 @@ export declare const runtimeBackedBlockClientEntries: {
2534
2534
  className: string | null;
2535
2535
  summaryButtonText: string;
2536
2536
  }>;
2537
- hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
2537
+ hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
2538
2538
  }>) => unknown;
2539
2539
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
2540
2540
  display: Readonly<{
@@ -2543,7 +2543,7 @@ export declare const runtimeBackedBlockClientEntries: {
2543
2543
  className: string | null;
2544
2544
  summaryButtonText: string;
2545
2545
  }>;
2546
- hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
2546
+ hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
2547
2547
  }>>;
2548
2548
  }>;
2549
2549
  }>;
@@ -1199,7 +1199,7 @@ export declare const runtimeBackedBlockServerEntries: {
1199
1199
  className: string | null;
1200
1200
  summaryButtonText: string;
1201
1201
  }>;
1202
- hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
1202
+ hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
1203
1203
  }>;
1204
1204
  contracts: Readonly<{
1205
1205
  source: Readonly<{
@@ -1258,7 +1258,7 @@ export declare const runtimeBackedBlockServerEntries: {
1258
1258
  className: string | null;
1259
1259
  summaryButtonText: string;
1260
1260
  }>;
1261
- hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
1261
+ hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
1262
1262
  }>) => unknown;
1263
1263
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
1264
1264
  display: Readonly<{
@@ -1267,7 +1267,7 @@ export declare const runtimeBackedBlockServerEntries: {
1267
1267
  className: string | null;
1268
1268
  summaryButtonText: string;
1269
1269
  }>;
1270
- hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
1270
+ hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
1271
1271
  }>>;
1272
1272
  }>;
1273
1273
  }>;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type AccordionIcon } from '../../../../../theme-core/src/accordions/types';
3
+ import type { AccordionIconTreatment } from '../../../../../theme-core/src/site-styles/index';
3
4
  type AccordionNodeBaseProps = {
4
5
  children?: React.ReactNode;
5
6
  className?: string;
@@ -31,6 +32,7 @@ export type AccordionItemNodeProps = {
31
32
  question?: unknown;
32
33
  answer?: unknown;
33
34
  iconStyle?: AccordionIcon | null;
35
+ iconTreatment?: AccordionIconTreatment | null;
34
36
  blockId?: string | null;
35
37
  blockKind?: string | null;
36
38
  blockContent?: unknown;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type AccordionIcon } from '../../../../../theme-core/src/accordions/types';
3
+ import type { AccordionIconTreatment } from '../../../../../theme-core/src/site-styles/index';
3
4
  type AccordionNodeProps = {
4
5
  blockId?: string | null;
5
6
  children?: React.ReactNode;
@@ -17,6 +18,7 @@ type AccordionItemNodeProps = {
17
18
  question?: unknown;
18
19
  answer?: unknown;
19
20
  iconStyle?: AccordionIcon | null;
21
+ iconTreatment?: AccordionIconTreatment | null;
20
22
  };
21
23
  export declare const AccordionItemNodeSSR: React.FC<AccordionItemNodeProps>;
22
24
  export default AccordionNodeSSR;
@@ -0,0 +1,5 @@
1
+ import { type AccordionIcon } from '../../../../../theme-core/src/accordions/types';
2
+ import type { AccordionIconTreatment } from '../../../../../theme-core/src/site-styles/index';
3
+ import type { CSSProperties } from 'react';
4
+ export declare function resolveAccordionIconStyle(iconStyle: AccordionIcon | null | undefined, iconTreatment: AccordionIconTreatment | null | undefined): AccordionIcon;
5
+ export declare function accordionIconColorStyle(iconTreatment: AccordionIconTreatment | null | undefined): CSSProperties | undefined;
@@ -1,30 +1,8 @@
1
- import { z } from "zod";
2
1
  import { type InteractiveIslandProps } from "../../../contracts/islands";
3
- import { type BookingFormService, type BookingFormConfig, type BookingFormServicesSource, type BookingFormSettings, type BookingFormSourceRecord } from "./booking-form.state";
2
+ import { type BookingFormService, type BookingFormConfig, type BookingFormServicesSource } from "./booking-form.state";
3
+ import { type BookingFormRebookContext, type BookingFormSourceProps } from "./booking-runtime-sources";
4
4
  export type { BookingFormConfig, BookingFormService };
5
- export type BookingFormRebookContext = Readonly<{
6
- kind: "portal_rebook";
7
- }>;
8
- export type BookingFormSourceProps = Readonly<{
9
- siteId?: string;
10
- apiBaseUrl?: string;
11
- portalToken?: string | null;
12
- formId?: string;
13
- serviceId?: string | null;
14
- resourceId?: string | null;
15
- initialData?: Readonly<Record<string, unknown>> | null;
16
- noticeMessage?: string | null;
17
- requiresServiceSelection?: boolean;
18
- requiresResourceSelection?: boolean;
19
- shouldAutoSelectSingleResource?: boolean;
20
- rebookContext?: BookingFormRebookContext | null;
21
- submitLabel?: string | null;
22
- successMessage?: string | null;
23
- form?: BookingFormSourceRecord | null;
24
- services?: BookingFormServicesSource | null;
25
- spamProtectionEnabled?: boolean;
26
- className?: string | null;
27
- }>;
5
+ export type { BookingFormRebookContext, BookingFormSourceProps };
28
6
  export type BookingFormDisplay = Readonly<{
29
7
  kind: "booking-form";
30
8
  state: "missing" | "ready";
@@ -47,8 +25,6 @@ export type BookingFormHydration = Readonly<{
47
25
  services: readonly BookingFormService[];
48
26
  spamProtectionEnabled?: boolean;
49
27
  }>;
50
- export declare const bookingSettingsSchema: z.ZodType<BookingFormSettings>;
51
- export declare const bookingSourceFormSchema: z.ZodType<BookingFormSourceRecord>;
52
28
  type BookingFormIslandMeta = Readonly<{
53
29
  siteId?: string;
54
30
  apiBaseUrl?: string;
@@ -0,0 +1,163 @@
1
+ import { z } from "zod";
2
+ import type { PublicEvent } from "../../blocks/events/shared/types";
3
+ import type { BookingFormField, BookingFormService, BookingFormServicesSource, BookingFormSettings, BookingFormSourceRecord } from "./booking-form.state";
4
+ import type { EventRegistrationContentEntry, EventRegistrationSourceProps } from "./event-registration.interactive";
5
+ export declare const APPOINTMENT_BOOKING_RUNTIME_FORM_ID = "booking-form";
6
+ export type BookingFormRebookContext = Readonly<{
7
+ kind: "portal_rebook";
8
+ }>;
9
+ export type BookingFormSourceProps = Readonly<{
10
+ siteId?: string;
11
+ apiBaseUrl?: string;
12
+ portalToken?: string | null;
13
+ formId?: string;
14
+ serviceId?: string | null;
15
+ resourceId?: string | null;
16
+ initialData?: Readonly<Record<string, unknown>> | null;
17
+ noticeMessage?: string | null;
18
+ requiresServiceSelection?: boolean;
19
+ requiresResourceSelection?: boolean;
20
+ shouldAutoSelectSingleResource?: boolean;
21
+ rebookContext?: BookingFormRebookContext | null;
22
+ submitLabel?: string | null;
23
+ successMessage?: string | null;
24
+ form?: BookingFormSourceRecord | null;
25
+ services?: BookingFormServicesSource | null;
26
+ spamProtectionEnabled?: boolean;
27
+ className?: string | null;
28
+ }>;
29
+ export declare const bookingFieldSchema: z.ZodType<BookingFormField>;
30
+ export declare const bookingSettingsSchema: z.ZodType<BookingFormSettings>;
31
+ export declare const bookingSourceFormSchema: z.ZodType<BookingFormSourceRecord>;
32
+ export type AppointmentBookingRuntimeTarget = Readonly<{
33
+ kind: "appointment-form";
34
+ formId: string;
35
+ requestedServiceId: string | null;
36
+ requestedResourceId: string | null;
37
+ rebookContext: BookingFormRebookContext | null;
38
+ }>;
39
+ export type EventRegistrationRuntimeTarget = Readonly<{
40
+ kind: "event-occurrence";
41
+ occurrenceId: string;
42
+ seriesId: string | null;
43
+ }> | Readonly<{
44
+ kind: "event-series";
45
+ seriesId: string;
46
+ }>;
47
+ export type BookingRuntimeTarget = AppointmentBookingRuntimeTarget | EventRegistrationRuntimeTarget;
48
+ export type BookingRuntimeSourceLoadError = Readonly<{
49
+ kind: "appointments-disabled";
50
+ target: AppointmentBookingRuntimeTarget;
51
+ }> | Readonly<{
52
+ kind: "source-not-found";
53
+ target: BookingRuntimeTarget;
54
+ source: "form" | "service" | "resource" | "event" | "occurrence";
55
+ }> | Readonly<{
56
+ kind: "source-unavailable";
57
+ target: BookingRuntimeTarget;
58
+ reason: "appointments-disabled" | "missing-form" | "missing-services" | "stale-service" | "stale-resource" | "event-unavailable" | "occurrence-unavailable";
59
+ }> | Readonly<{
60
+ kind: "invalid-source-data";
61
+ target: BookingRuntimeTarget;
62
+ issues: readonly string[];
63
+ }> | Readonly<{
64
+ kind: "unsupported-target";
65
+ target: BookingRuntimeTarget;
66
+ }>;
67
+ export type BookingRuntimeSourceLoader<TLoaded> = Readonly<{
68
+ load: (target: BookingRuntimeTarget) => Promise<Readonly<{
69
+ ok: true;
70
+ value: TLoaded;
71
+ }> | Readonly<{
72
+ ok: false;
73
+ error: BookingRuntimeSourceLoadError;
74
+ }>>;
75
+ }>;
76
+ export type AppointmentBookingFormSourceInput = Readonly<{
77
+ id: string;
78
+ name: string;
79
+ schemaJson: unknown;
80
+ settingsJson: unknown;
81
+ }>;
82
+ export type AppointmentBookingFormSourceValidation = Readonly<{
83
+ ok: true;
84
+ value: BookingFormSourceRecord;
85
+ }> | Readonly<{
86
+ ok: false;
87
+ issues: readonly string[];
88
+ }>;
89
+ export type AppointmentBookingServiceSourceInput = Readonly<{
90
+ id: string;
91
+ title: string;
92
+ description?: string | null;
93
+ durationMinutes?: number;
94
+ priceAmount?: number | null;
95
+ priceCurrency?: string | null;
96
+ paymentTerms?: BookingFormService["paymentTerms"];
97
+ paymentTermsAvailability?: BookingFormService["paymentTermsAvailability"];
98
+ }>;
99
+ export type AppointmentBookingSourceProps = BookingFormSourceProps & Readonly<{
100
+ siteId: string;
101
+ formId: string;
102
+ form: BookingFormSourceRecord;
103
+ services: BookingFormService[];
104
+ serviceId: string | null;
105
+ resourceId: string | null;
106
+ initialData: Readonly<Record<string, unknown>> | null;
107
+ noticeMessage: string | null;
108
+ requiresServiceSelection: boolean;
109
+ requiresResourceSelection: boolean;
110
+ shouldAutoSelectSingleResource: boolean;
111
+ rebookContext: BookingFormRebookContext | null;
112
+ }>;
113
+ export declare function buildAppointmentBookingRuntimeTarget(input: Readonly<{
114
+ formId?: string | null;
115
+ requestedServiceId?: string | null;
116
+ requestedResourceId?: string | null;
117
+ rebookContext?: BookingFormRebookContext | null;
118
+ }>): AppointmentBookingRuntimeTarget;
119
+ export declare function normalizeAppointmentBookingFormSource(input: Readonly<{
120
+ siteId: string;
121
+ form: AppointmentBookingFormSourceInput;
122
+ }>): BookingFormSourceRecord;
123
+ export declare function validateAppointmentBookingFormSource(input: Readonly<{
124
+ siteId: string;
125
+ form: AppointmentBookingFormSourceInput;
126
+ }>): AppointmentBookingFormSourceValidation;
127
+ export declare function normalizeAppointmentBookingServices(input: Readonly<{
128
+ siteId: string;
129
+ services: readonly AppointmentBookingServiceSourceInput[];
130
+ }>): BookingFormService[];
131
+ export declare function buildAppointmentBookingSourceProps(input: Readonly<{
132
+ siteId: string;
133
+ apiBaseUrl?: string;
134
+ portalToken?: string | null;
135
+ form: AppointmentBookingFormSourceInput;
136
+ services: readonly AppointmentBookingServiceSourceInput[];
137
+ serviceId: string | null;
138
+ resourceId: string | null;
139
+ initialData: Readonly<Record<string, unknown>> | null;
140
+ noticeMessage: string | null;
141
+ requiresServiceSelection: boolean;
142
+ requiresResourceSelection: boolean;
143
+ shouldAutoSelectSingleResource: boolean;
144
+ rebookContext: BookingFormRebookContext | null;
145
+ }>): AppointmentBookingSourceProps;
146
+ export declare function buildEventRegistrationRuntimeTarget(input: Readonly<{
147
+ kind: "event-occurrence";
148
+ occurrenceId: string;
149
+ seriesId?: string | null;
150
+ }> | Readonly<{
151
+ kind: "event-series";
152
+ seriesId: string;
153
+ }>): EventRegistrationRuntimeTarget;
154
+ export declare function buildEventRegistrationSourceProps(input: Readonly<{
155
+ siteId: string;
156
+ apiBaseUrl?: string;
157
+ portalToken?: string | null;
158
+ occurrenceContext?: EventRegistrationSourceProps["occurrenceContext"];
159
+ contentEntry?: EventRegistrationContentEntry | null;
160
+ events?: readonly PublicEvent[] | null;
161
+ stage?: EventRegistrationSourceProps["stage"];
162
+ supportEmail?: string;
163
+ }> & Omit<EventRegistrationSourceProps, "siteId" | "apiBaseUrl" | "portalToken" | "occurrenceContext" | "contentEntry" | "events" | "stage" | "supportEmail">): EventRegistrationSourceProps;
@@ -72,7 +72,7 @@ export declare const eventRegistrationBlockRuntime: Readonly<{
72
72
  className: string | null;
73
73
  summaryButtonText: string;
74
74
  }>;
75
- hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
75
+ hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
76
76
  }>;
77
77
  contracts: Readonly<{
78
78
  source: Readonly<{
@@ -131,7 +131,7 @@ export declare const eventRegistrationBlockRuntime: Readonly<{
131
131
  className: string | null;
132
132
  summaryButtonText: string;
133
133
  }>;
134
- hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
134
+ hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
135
135
  }>) => unknown;
136
136
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
137
137
  display: Readonly<{
@@ -140,7 +140,7 @@ export declare const eventRegistrationBlockRuntime: Readonly<{
140
140
  className: string | null;
141
141
  summaryButtonText: string;
142
142
  }>;
143
- hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
143
+ hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
144
144
  }>>;
145
145
  }>;
146
146
  }>;
@@ -162,7 +162,7 @@ export declare const eventRegistrationInteractiveIslandPropsCodec: Readonly<{
162
162
  className: string | null;
163
163
  summaryButtonText: string;
164
164
  }>;
165
- hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
165
+ hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
166
166
  }>>;
167
167
  }>) => unknown;
168
168
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<Readonly<{
@@ -181,7 +181,7 @@ export declare const eventRegistrationInteractiveIslandPropsCodec: Readonly<{
181
181
  className: string | null;
182
182
  summaryButtonText: string;
183
183
  }>;
184
- hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
184
+ hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
185
185
  }>>;
186
186
  }>>;
187
187
  }>;
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { type ThemeButtonVariantId } from '../../../../../../theme-core/src/buttons/index';
3
+ export type BookingOptionMetaItem = Readonly<{
4
+ id?: string;
5
+ label: string;
6
+ icon?: React.ReactNode;
7
+ className?: string;
8
+ }>;
9
+ export type BookingOptionCompactRowAction = Readonly<{
10
+ kind: 'action';
11
+ label: string;
12
+ href: string;
13
+ }> | Readonly<{
14
+ kind: 'status';
15
+ label: string;
16
+ }>;
17
+ export type BookingOptionCompactRowViewModel = Readonly<{
18
+ id: string;
19
+ title: string;
20
+ primaryMeta?: readonly string[];
21
+ secondaryMeta?: readonly BookingOptionMetaItem[];
22
+ priceLabel?: string | null;
23
+ action: BookingOptionCompactRowAction;
24
+ }>;
25
+ export type BookingOptionCompactRowProps = Readonly<{
26
+ option: BookingOptionCompactRowViewModel;
27
+ buttonVariant?: ThemeButtonVariantId;
28
+ }>;
29
+ export declare function BookingOptionCompactRow({ option, buttonVariant, }: BookingOptionCompactRowProps): React.ReactElement;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import type { ThemeButtonVariantId } from '../../../../../../theme-core/src/buttons/index';
3
+ import { type BookingOptionCompactRowViewModel } from './BookingOptionCompactRow';
4
+ export type BookingOptionGroupViewModel = Readonly<{
5
+ id: string;
6
+ title: string;
7
+ options: readonly BookingOptionCompactRowViewModel[];
8
+ }>;
9
+ export type BookingOptionListProps = Readonly<{
10
+ groups: readonly BookingOptionGroupViewModel[];
11
+ buttonVariant?: ThemeButtonVariantId;
12
+ }>;
13
+ export declare function BookingOptionList({ groups, buttonVariant, }: BookingOptionListProps): React.ReactElement;
@@ -6,6 +6,10 @@ export { ClockIcon } from './ClockIcon';
6
6
  export { CrossIcon } from './CrossIcon';
7
7
  export { ActionRow } from './ActionRow';
8
8
  export type { ActionRowProps } from './ActionRow';
9
+ export { BookingOptionCompactRow } from './BookingOptionCompactRow';
10
+ export type { BookingOptionCompactRowAction, BookingOptionCompactRowProps, BookingOptionCompactRowViewModel, BookingOptionMetaItem, } from './BookingOptionCompactRow';
11
+ export { BookingOptionList } from './BookingOptionList';
12
+ export type { BookingOptionGroupViewModel, BookingOptionListProps, } from './BookingOptionList';
9
13
  export { FieldValidationMessage, getFieldValidationControlProps, } from './FieldValidationMessage';
10
14
  export type { FieldValidationControlInput, FieldValidationControlProps, FieldValidationMessageProps, } from './FieldValidationMessage';
11
15
  export { FeedbackMessage } from './FeedbackMessage';
@@ -5,7 +5,8 @@
5
5
  */
6
6
  export type { FormData, ButtonVariant } from './types';
7
7
  export { DEFAULT_CURRENCY } from './types';
8
- export { buildCheckoutReturnUrls, resolveDedicatedBookingPath, formatPrice, scrollToBlock, consumeSearchParam, consumeSearchParams, validateFormData, getStepNumber, } from './utils';
8
+ export { BOOK_TARGET_PARAMS, buildCheckoutReturnUrls, resolveDedicatedBookingHref, resolveDedicatedBookingPath, resolveDedicatedBookingTarget, formatPrice, scrollToBlock, consumeSearchParam, consumeSearchParams, validateFormData, getStepNumber, } from './utils';
9
+ export type { DedicatedBookingTarget, UniversalBookingRouteTarget, } from './utils';
9
10
  export { createBodyThemePortalRoot } from './utils';
10
- export { ActionRow, CheckIcon, ClockIcon, CrossIcon, FieldValidationMessage, FeedbackMessage, getFieldValidationControlProps, MembershipHero, ModalShell, StateIcon, StepIndicator, TerminalPanel, } from './components';
11
- export type { ActionRowProps, FieldValidationControlInput, FieldValidationControlProps, FieldValidationMessageProps, FeedbackLiveMode, FeedbackMessageProps, FeedbackTone, ModalShellProps, StepIndicatorBaseProps, StepIndicatorProps, TerminalPanelProps, TerminalPanelTitleElement, } from './components';
11
+ export { ActionRow, BookingOptionCompactRow, BookingOptionList, CheckIcon, ClockIcon, CrossIcon, FieldValidationMessage, FeedbackMessage, getFieldValidationControlProps, MembershipHero, ModalShell, StateIcon, StepIndicator, TerminalPanel, } from './components';
12
+ export type { ActionRowProps, BookingOptionCompactRowAction, BookingOptionCompactRowProps, BookingOptionCompactRowViewModel, BookingOptionGroupViewModel, BookingOptionListProps, BookingOptionMetaItem, FieldValidationControlInput, FieldValidationControlProps, FieldValidationMessageProps, FeedbackLiveMode, FeedbackMessageProps, FeedbackTone, ModalShellProps, StepIndicatorBaseProps, StepIndicatorProps, TerminalPanelProps, TerminalPanelTitleElement, } from './components';
@@ -11,5 +11,25 @@ export type DedicatedBookingTarget = Readonly<{
11
11
  hostKey: string;
12
12
  siteIdentifier: string;
13
13
  }>;
14
+ export type UniversalBookingRouteTarget = Readonly<{
15
+ kind: 'chooser';
16
+ }> | Readonly<{
17
+ kind: 'appointment_service';
18
+ serviceId: string;
19
+ resourceId?: string | null;
20
+ }> | Readonly<{
21
+ kind: 'event_occurrence';
22
+ occurrenceId: string;
23
+ }> | Readonly<{
24
+ kind: 'event_series';
25
+ eventId: string;
26
+ }>;
27
+ export declare const BOOK_TARGET_PARAMS: {
28
+ readonly service: "service";
29
+ readonly resource: "resource";
30
+ readonly occurrence: "occurrence";
31
+ readonly event: "event";
32
+ };
14
33
  export declare function resolveDedicatedBookingTarget(pathname: string): DedicatedBookingTarget;
15
34
  export declare function resolveDedicatedBookingPath(pathname: string): string;
35
+ export declare function resolveDedicatedBookingHref(pathname: string, bookingTarget?: UniversalBookingRouteTarget): string;
@@ -2,7 +2,8 @@
2
2
  * Shared Utilities Barrel Export
3
3
  */
4
4
  export { buildCheckoutReturnUrls } from './checkoutUrls';
5
- export { resolveDedicatedBookingPath } from './bookingRoute';
5
+ export { BOOK_TARGET_PARAMS, resolveDedicatedBookingHref, resolveDedicatedBookingPath, resolveDedicatedBookingTarget, } from './bookingRoute';
6
+ export type { DedicatedBookingTarget, UniversalBookingRouteTarget, } from './bookingRoute';
6
7
  export { resolveDedicatedCheckoutPath } from './checkoutRoute';
7
8
  export { formatPrice } from './formatting';
8
9
  export { logoutPortal } from './portalLogout';
@@ -67,6 +67,7 @@ declare const footerRootClassSchema: z.ZodObject<{
67
67
  }, z.core.$strip>;
68
68
  export declare const footerRootClassTransform: TransformDefinition<z.infer<typeof footerRootClassSchema>>;
69
69
  export declare const headerRootStyleTransform: TransformDefinition;
70
+ export declare const headerSectionBackgroundTransform: TransformDefinition;
70
71
  export declare const footerRootStyleTransform: TransformDefinition;
71
72
  declare const footerBottomBarClassSchema: z.ZodObject<{
72
73
  base: z.ZodOptional<z.ZodString>;