@riverbankcms/sdk 0.108.0 → 0.109.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 (189) hide show
  1. package/README.md +21 -1
  2. package/dist/{PreviewEditorSidebar-BBT-kZAM.mjs → PreviewEditorSidebar-DWqwfy3_.mjs} +7 -22
  3. package/dist/{PreviewEditorUI-D69xNKT2.mjs → PreviewEditorUI-B7OL4sfR.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-RRu7wyQ5.mjs → PreviewQueryProvider-D0y2l8JN.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-CuDjXH6o.mjs → SdkPreviewModeRuntime-D8Gt9Gbe.mjs} +212 -153
  6. package/dist/{SiteChromeCustomizeContext-BQUY2dEk.mjs → SiteChromeCustomizeContext-DUpalEdL.mjs} +1919 -1032
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +11244 -10741
  8. package/dist/_dts/api/src/bookingAdjustments.d.ts +5 -0
  9. package/dist/_dts/api/src/bookingOperations.d.ts +4 -0
  10. package/dist/_dts/api/src/bookingRecords.d.ts +2 -17
  11. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +6 -6
  12. package/dist/_dts/api/src/common/envelope.d.ts +7 -0
  13. package/dist/_dts/api/src/courses.d.ts +1 -0
  14. package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +5 -5
  15. package/dist/_dts/api/src/endpoints.d.ts +35 -0
  16. package/dist/_dts/api/src/index.d.ts +2 -2
  17. package/dist/_dts/api/src/participantMessaging.d.ts +18 -12
  18. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +1 -0
  19. package/dist/_dts/api/src/sdkContracts.d.ts +247 -1
  20. package/dist/_dts/api/src/siteInfrastructure.d.ts +13 -0
  21. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +1 -5
  22. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +29 -1
  23. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +33 -27
  24. package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientField.d.ts +9 -0
  25. package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientWidget.d.ts +3 -4
  26. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -4
  27. package/dist/_dts/blocks/src/index.d.ts +1 -1
  28. package/dist/_dts/blocks/src/system/blocks/audio-player.d.ts +3 -0
  29. package/dist/_dts/blocks/src/system/blocks/body-text.d.ts +3 -0
  30. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +3 -0
  31. package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +1 -22
  32. package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +3 -0
  33. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +1 -22
  34. package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +3 -0
  35. package/dist/_dts/blocks/src/system/blocks/form.d.ts +3 -0
  36. package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +3 -0
  37. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +3 -0
  38. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +3 -0
  39. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +3 -0
  40. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
  41. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +3 -0
  42. package/dist/_dts/blocks/src/system/blocks/video-grid.d.ts +3 -0
  43. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  44. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +16 -6
  45. package/dist/_dts/blocks/src/system/defineBlock.d.ts +9 -1
  46. package/dist/_dts/blocks/src/system/fields/ctas.d.ts +8 -0
  47. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +31 -0
  48. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -6
  49. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
  50. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +1 -1
  51. package/dist/_dts/content-model/src/content-types/entryValidation.d.ts +31 -0
  52. package/dist/_dts/content-model/src/content-types/scaffold.d.ts +58 -0
  53. package/dist/_dts/content-model/src/content-types/sentinels.d.ts +36 -0
  54. package/dist/_dts/content-model/src/index.d.ts +3 -0
  55. package/dist/_dts/core/src/booking-date-time.d.ts +8 -0
  56. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3071 -3157
  57. package/dist/_dts/media-core/src/fileMimeDetection.d.ts +16 -0
  58. package/dist/_dts/media-core/src/fileStorage.d.ts +8 -0
  59. package/dist/_dts/media-core/src/storagePathDomain.d.ts +2 -0
  60. package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +3 -0
  61. package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +2 -0
  62. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +1 -0
  63. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -1
  64. package/dist/_dts/sdk/src/cli/commands/audit.d.ts +1 -1
  65. package/dist/_dts/sdk/src/cli/commands/compare.d.ts +1 -1
  66. package/dist/_dts/sdk/src/cli/commands/deploy.d.ts +1 -1
  67. package/dist/_dts/sdk/src/cli/commands/drafts.d.ts +18 -0
  68. package/dist/_dts/sdk/src/cli/commands/entry.d.ts +15 -0
  69. package/dist/_dts/sdk/src/cli/commands/init-docs.d.ts +2 -2
  70. package/dist/_dts/sdk/src/cli/commands/publish-all.d.ts +1 -1
  71. package/dist/_dts/sdk/src/cli/commands/pull.d.ts +1 -0
  72. package/dist/_dts/sdk/src/cli/commands/push/execute/diff.d.ts +1 -1
  73. package/dist/_dts/sdk/src/cli/commands/push/options.d.ts +3 -0
  74. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +12 -1
  75. package/dist/_dts/sdk/src/cli/commands/setup.d.ts +1 -0
  76. package/dist/_dts/sdk/src/cli/commands/verify.d.ts +1 -0
  77. package/dist/_dts/sdk/src/cli/helpers.d.ts +22 -1
  78. package/dist/_dts/sdk/src/cli/index.d.ts +4 -0
  79. package/dist/_dts/sdk/src/cli/output.d.ts +88 -0
  80. package/dist/_dts/sdk/src/cli/program.d.ts +29 -0
  81. package/dist/_dts/sdk/src/cli/push-config.d.ts +1 -1
  82. package/dist/_dts/sdk/src/client/management/catalog.d.ts +10 -0
  83. package/dist/_dts/sdk/src/client/management/http.d.ts +7 -1
  84. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
  85. package/dist/_dts/sdk/src/client/management/types.d.ts +43 -19
  86. package/dist/_dts/sdk/src/date-time/index.d.ts +68 -0
  87. package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -0
  88. package/dist/_dts/sdk/src/version.d.ts +1 -1
  89. package/dist/_dts/site-commands/src/commands.d.ts +893 -823
  90. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
  91. package/dist/_dts/theme-core/src/buttons/core.d.ts +15 -46
  92. package/dist/_dts/theme-core/src/buttons/effectClassification.d.ts +147 -0
  93. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +2 -3
  94. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +1 -1
  95. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  96. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +44 -32
  97. package/dist/_dts/theme-core/src/buttons/presets.d.ts +4 -25
  98. package/dist/_dts/theme-core/src/buttons/resolveButtonColourStates.d.ts +100 -0
  99. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +16 -0
  100. package/dist/_dts/theme-core/src/buttons/types.d.ts +101 -83
  101. package/dist/_dts/theme-core/src/cards/types.d.ts +16 -16
  102. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  103. package/dist/_dts/theme-core/src/gradients/presets.d.ts +200 -8
  104. package/dist/_dts/theme-core/src/gradients/utils.d.ts +6 -2
  105. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +87 -126
  106. package/dist/_dts/theme-core/src/mock-themes/modern-minimal.d.ts +1 -1
  107. package/dist/_dts/theme-core/src/navigation/types.d.ts +2 -2
  108. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +2 -2
  109. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +5 -8
  110. package/dist/_dts/theme-core/src/palette/index.d.ts +0 -1
  111. package/dist/_dts/theme-core/src/schema.d.ts +112 -138
  112. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  113. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +10 -10
  114. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +3 -2
  115. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +13 -6
  116. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +29 -8
  117. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +2 -2
  118. package/dist/cli/index.mjs +67956 -66745
  119. package/dist/cli/init-docs/content/cli-reference.md +50 -7
  120. package/dist/cli/init-docs/content/content-management.md +7 -4
  121. package/dist/cli/init-docs/content/workflow-publish.md +5 -1
  122. package/dist/client/{DiscountCodeDisclosure-D6TOf6Hi.mjs → DiscountCodeDisclosure-DU1ygxU2.mjs} +1 -1
  123. package/dist/client/{EventCombined.client-Dao3zxRk.mjs → EventCombined.client-DB5zagCo.mjs} +3 -3
  124. package/dist/client/{EventListing.client-B2NNt4y1.mjs → EventListing.client-CTX9JHBL.mjs} +2 -2
  125. package/dist/client/{LeafletStaticMap-BhwFo16w.mjs → LeafletStaticMap-BYImhgiB.mjs} +1 -1
  126. package/dist/client/{MagicLinkForm-BWnB7cMR.mjs → MagicLinkForm-CRkw_M3l.mjs} +2 -2
  127. package/dist/client/{StepIndicator-TzRiQ0BY.mjs → StepIndicator-BnmVBJJh.mjs} +2 -2
  128. package/dist/client/{accordion-BPy-AJ4_.mjs → accordion-CeGreumd.mjs} +1 -1
  129. package/dist/client/{bookingForm-BL4PGZds.mjs → bookingForm-CSzFNrpN.mjs} +6 -6
  130. package/dist/client/bookings.mjs +512 -252
  131. package/dist/client/{buttons-EBjyslaX.mjs → buttons-DoFV7KDL.mjs} +493 -230
  132. package/dist/client/{carousel-C2b7Cn9-.mjs → carousel-B2jDtogf.mjs} +1 -1
  133. package/dist/client/{cart-BQcbXIVD.mjs → cart-D-jZ-vaY.mjs} +3 -3
  134. package/dist/client/{checkout-DEmpGRJu.mjs → checkout-Dza-LA7N.mjs} +3 -3
  135. package/dist/client/client.mjs +1673 -785
  136. package/dist/client/{colorStyles-jZS6KfkP.mjs → colorStyles-CrgzoXsm.mjs} +1 -30
  137. package/dist/client/{courseRegistration-BqRZPmsq.mjs → courseRegistration-TYkNychb.mjs} +7 -7
  138. package/dist/client/{eventCalendar-B8N_tSl5.mjs → eventCalendar-BI_90SsT.mjs} +5 -5
  139. package/dist/client/{eventCombined-Gjn6gtq7.mjs → eventCombined-mNrpryE9.mjs} +2 -2
  140. package/dist/client/{eventDetails-M-VCxA-r.mjs → eventDetails-D4GVlCIY.mjs} +3 -3
  141. package/dist/client/{eventListing-DR19hqYi.mjs → eventListing-YhKN018y.mjs} +2 -2
  142. package/dist/client/{eventRegistration-BR02a0k3.mjs → eventRegistration-CdHGtilr.mjs} +7 -7
  143. package/dist/client/foregroundContract-xICPq59x.mjs +31 -0
  144. package/dist/client/{form-LY2xIbwg.mjs → form-AcAL45rA.mjs} +2 -2
  145. package/dist/client/{headerSection-CYwwXJfh.mjs → headerSection-uEC52ueD.mjs} +3 -3
  146. package/dist/client/hooks.mjs +890 -497
  147. package/dist/client/{locationMap-DWnBXrFq.mjs → locationMap-_wJDSUYe.mjs} +3 -3
  148. package/dist/client/{media-DHtSxS5V.mjs → media-BK0O3b-U.mjs} +3 -2
  149. package/dist/client/{newsletterForm-D9s-fQ2P.mjs → newsletterForm-DrArsb2B.mjs} +2 -2
  150. package/dist/client/{pricing-DDq80oYc.mjs → pricing-BSYVghwo.mjs} +1 -1
  151. package/dist/client/{productDetail-B0SbWd45.mjs → productDetail-Dyk90sMs.mjs} +3 -3
  152. package/dist/client/{productList-PwYlZn0y.mjs → productList-BCKThwAI.mjs} +3 -3
  153. package/dist/client/{propsDecoder-BRWBiH7i.mjs → propsDecoder-CkXxkdSR.mjs} +63 -24
  154. package/dist/client/rendering/client.mjs +1034 -486
  155. package/dist/client/rendering/islands.mjs +19 -19
  156. package/dist/client/rendering.mjs +1832 -760
  157. package/dist/client/{shop-CMwZPYME.mjs → shop-DeltVH10.mjs} +6 -6
  158. package/dist/client/{shop-commerce-BuxsFate.mjs → shop-commerce-BD9Jsm2Z.mjs} +6 -6
  159. package/dist/client/{shop-commerce-store-boYlEJ91.mjs → shop-commerce-store-CmXD6FDS.mjs} +1 -1
  160. package/dist/client/{shopShared-D2naaOes.mjs → shopShared-B8v-lH_F.mjs} +2 -2
  161. package/dist/client/{useDiscountCodeUi-D9RHpVoj.mjs → useDiscountCodeUi-DbWJN8ld.mjs} +1 -1
  162. package/dist/client/{useEventFilters-igGiK1re.mjs → useEventFilters-EJIMUnqT.mjs} +46 -69
  163. package/dist/client/{usePolling-CI7MbsFB.mjs → usePolling-Cmh14fc7.mjs} +2 -2
  164. package/dist/preview-next/before-render.mjs +35 -0
  165. package/dist/preview-next/client/runtime.mjs +4 -4
  166. package/dist/preview-next/middleware.mjs +35 -0
  167. package/dist/{previewAuthStore-a_cBD28m.mjs → previewAuthStore-CTO7CRPk.mjs} +35 -0
  168. package/dist/{sdk-runtime-MBzD-GmP.mjs → sdk-runtime-Dou0GAav.mjs} +2 -2
  169. package/dist/{separator-5ahRBC85.mjs → separator-CI5wZNXT.mjs} +1 -1
  170. package/dist/server/components.mjs +1832 -784
  171. package/dist/server/config-validation.mjs +890 -497
  172. package/dist/server/config.mjs +890 -497
  173. package/dist/server/data.mjs +890 -497
  174. package/dist/server/date-time.mjs +386 -0
  175. package/dist/server/index.mjs +36 -1
  176. package/dist/server/next.mjs +1868 -785
  177. package/dist/server/page-converter.mjs +849 -285
  178. package/dist/server/prebuild.mjs +1 -1
  179. package/dist/server/rendering/server.mjs +1553 -718
  180. package/dist/server/rendering.mjs +1832 -784
  181. package/dist/server/routing.mjs +933 -522
  182. package/dist/server/server.mjs +929 -501
  183. package/dist/server/theme-bridge.mjs +1408 -392
  184. package/dist/server/theme.mjs +471 -228
  185. package/dist/styles/index.css +5 -0
  186. package/package.json +7 -1
  187. package/dist/_dts/theme-core/src/buttons/presets/types.d.ts +0 -88
  188. package/dist/_dts/theme-core/src/buttons/utils/contrast.d.ts +0 -38
  189. package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +0 -57
@@ -100,28 +100,7 @@ export declare const eventRegistrationManifest: import("..").DefinedBlockManifes
100
100
  readonly multiline: false;
101
101
  readonly defaultValue: "Complete Registration";
102
102
  readonly maxLength: 40;
103
- }, {
104
- readonly id: "buttonVariant";
105
- readonly type: "select";
106
- readonly label: "Button style";
107
- readonly description: "Choose a button style from your theme";
108
- readonly required: false;
109
- readonly multiple: false;
110
- readonly defaultValue: "primary";
111
- readonly options: [{
112
- readonly value: "primary";
113
- readonly label: "Primary";
114
- }, {
115
- readonly value: "secondary";
116
- readonly label: "Secondary";
117
- }, {
118
- readonly value: "outline";
119
- readonly label: "Outline";
120
- }];
121
- readonly ui: {
122
- readonly intent: "style";
123
- };
124
- }];
103
+ }, import("../../../../block-form/src/backend/index").FieldDefinition];
125
104
  }>;
126
105
  export type EventRegistrationContent = {
127
106
  heading?: string | null;
@@ -5,6 +5,9 @@ export declare const fileDownloadManifest: import("..").DefinedBlockManifest<imp
5
5
  readonly title: "File Download";
6
6
  readonly titleSource: ["title", "file.filename"];
7
7
  readonly category: "media";
8
+ readonly contentSource: {
9
+ readonly kind: "inline";
10
+ };
8
11
  readonly description: "Add a simple public download link for a document, ZIP, or audio file.";
9
12
  readonly tags: readonly ["file", "download", "document", "zip", "media"];
10
13
  readonly icon: "Download";
@@ -78,6 +78,9 @@ export declare const formManifest: import("..").DefinedBlockManifest<import(".."
78
78
  readonly paletteHidden: false;
79
79
  };
80
80
  readonly category: "interactive";
81
+ readonly contentSource: {
82
+ readonly kind: "inline";
83
+ };
81
84
  readonly tags: readonly ["form", "contact", "input", "submit", "fields", "signup", "lead-capture"];
82
85
  readonly icon: "FormInput";
83
86
  }>>;
@@ -6,6 +6,9 @@ export declare const imageGalleryManifest: import("..").DefinedBlockManifest<imp
6
6
  readonly id: "block.image-gallery";
7
7
  readonly title: "Image Gallery";
8
8
  readonly category: "content";
9
+ readonly contentSource: {
10
+ readonly kind: "inline";
11
+ };
9
12
  readonly previewCustomize: {
10
13
  readonly quickFieldPriority: ["aspectRatio", "slidesToShow", "fullBleed", "marqueeSpeed", "marqueePauseOnHover"];
11
14
  };
@@ -31,6 +31,9 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
31
31
  readonly id: "block.media-text";
32
32
  readonly title: "Media and Text";
33
33
  readonly category: "layout";
34
+ readonly contentSource: {
35
+ readonly kind: "inline";
36
+ };
34
37
  readonly includeContainerStyles: true;
35
38
  readonly titleSource: "title";
36
39
  readonly previewCustomize: {
@@ -8,6 +8,9 @@ export declare const newsletterSignupManifest: import("..").DefinedBlockManifest
8
8
  readonly titleSource: "title";
9
9
  readonly description: "Newsletter subscription form with configurable field presets.";
10
10
  readonly category: "interactive";
11
+ readonly contentSource: {
12
+ readonly kind: "inline";
13
+ };
11
14
  readonly fragments: readonly [{
12
15
  readonly fragment: import("..").DefinedFragment<{
13
16
  readonly fields: readonly [{
@@ -4,6 +4,9 @@ export declare const siteHeaderManifest: import("..").DefinedBlockManifest<impor
4
4
  readonly id: "block.site-header";
5
5
  readonly title: "Site Header";
6
6
  readonly category: "layout";
7
+ readonly contentSource: {
8
+ readonly kind: "inline";
9
+ };
7
10
  readonly additionalFields: readonly [{
8
11
  readonly id: "mode";
9
12
  readonly type: "select";
@@ -13,6 +13,9 @@ export declare const teamMembersManifest: import("..").DefinedBlockManifest<impo
13
13
  readonly id: "block.team-members";
14
14
  readonly title: "Team Members";
15
15
  readonly category: "content";
16
+ readonly contentSource: {
17
+ readonly kind: "mixed";
18
+ };
16
19
  readonly titleSource: "heading";
17
20
  readonly additionalFields: readonly [import("../../../../block-form/src/backend/index").FieldDefinition, import("../../../../block-form/src/backend/index").FieldDefinition, import("../../../../block-form/src/backend/index").FieldDefinition, import("../../../../block-form/src/backend/index").FieldDefinition, import("../../../../block-form/src/backend/index").FieldDefinition, import("../../../../block-form/src/backend/index").FieldDefinition, import("../../../../block-form/src/backend/index").FieldDefinition, import("../../../../block-form/src/backend/index").FieldDefinition, import("../../../../block-form/src/backend/index").FieldDefinition, import("../../../../block-form/src/backend/index").FieldDefinition, import("../../../../block-form/src/backend/index").FieldDefinition, {
18
21
  readonly ui: {
@@ -5,6 +5,9 @@ export declare const testimonialsManifest: import("..").DefinedBlockManifest<imp
5
5
  readonly id: "block.testimonials";
6
6
  readonly title: "Testimonials";
7
7
  readonly category: "marketing";
8
+ readonly contentSource: {
9
+ readonly kind: "inline";
10
+ };
8
11
  readonly includeContainerStyles: true;
9
12
  readonly previewCustomize: {
10
13
  readonly quickFieldPriority: ["avatarLayout", "gridColumns", "slidesToShow", "maxEntries", "autoplay"];
@@ -4,6 +4,9 @@ export declare const videoGridManifest: import("..").DefinedBlockManifest<import
4
4
  readonly id: "block.video-grid";
5
5
  readonly title: "Video Grid";
6
6
  readonly category: "media";
7
+ readonly contentSource: {
8
+ readonly kind: "inline";
9
+ };
7
10
  readonly skipSectionStyles: true;
8
11
  readonly additionalFields: import("../../../../block-form/src/backend/index").FieldDefinition[];
9
12
  readonly layout: NodeDefinition;
@@ -54,7 +54,7 @@ export declare const BACKGROUND_POSITION_PRESETS: readonly [{
54
54
  readonly value: "right bottom";
55
55
  readonly label: "Right Bottom";
56
56
  }];
57
- export declare const BACKGROUND_POSITION_PRESET_VALUES: ("bottom" | "left" | "right" | "top" | "center" | "right center" | "top left" | "top right" | "bottom left" | "bottom right" | "top center" | "bottom center" | "left center" | "left top" | "right top" | "left bottom" | "right bottom")[];
57
+ export declare const BACKGROUND_POSITION_PRESET_VALUES: ("left" | "right" | "bottom" | "top" | "center" | "right center" | "top center" | "top left" | "top right" | "bottom left" | "bottom right" | "bottom center" | "left center" | "left top" | "right top" | "left bottom" | "right bottom")[];
58
58
  /**
59
59
  * Maps position keywords to rb-* anchor positioning classes.
60
60
  * Used for positioning scaled/overflow images within their containers.
@@ -1,15 +1,14 @@
1
1
  import { type MediaAssetId } from '../../../../core/src/index';
2
2
  import { type ThemeBackgroundTextLegibilityPlan, type AppearancePresetId, type LayoutVariantKey, type PageDesignEditorBackgroundSupport } from '../../../../theme-core/src/site-styles/index';
3
3
  import type { ThemeColorToken } from '../../../../theme-core/src/tokens/index';
4
+ import { type GradientPresetId } from '../../../../theme-core/src/gradients/index';
4
5
  import type { RenderableMediaAsset } from '../../../../media-core/src/index';
6
+ export { isGradientPresetId, parseGradientPresetId, type GradientPresetId, } from '../../../../theme-core/src/gradients/index';
5
7
  export type BackgroundMode = 'default' | 'color' | 'gradient' | 'image';
6
8
  export type BackgroundModeCycleDirection = 'prev' | 'next';
7
9
  export type BackgroundColorToken = ThemeColorToken & {
8
10
  readonly __backgroundColorTokenBrand: 'BackgroundColorToken';
9
11
  };
10
- export type GradientPresetId = string & {
11
- readonly __brand: 'GradientPresetId';
12
- };
13
12
  export type BackgroundOverride = Readonly<{
14
13
  kind: 'default';
15
14
  }> | Readonly<{
@@ -31,6 +30,15 @@ export type ParsedBackgroundOverride = Readonly<{
31
30
  reason: LegacyBackgroundReason;
32
31
  background: Readonly<Record<string, unknown>>;
33
32
  }>;
33
+ export type CanonicalSectionBackground = Readonly<{
34
+ kind: 'none';
35
+ }> | Readonly<{
36
+ kind: 'block-authored';
37
+ background: Readonly<Record<string, unknown>>;
38
+ }> | Readonly<{
39
+ kind: 'page-design-override';
40
+ parsed: ParsedBackgroundOverride;
41
+ }>;
34
42
  export type BackgroundImagePoolSource = 'current' | 'generated-ambient' | 'previous-background' | 'general-media';
35
43
  export type BackgroundImagePoolMediaAsset = RenderableMediaAsset;
36
44
  type BaseBackgroundImagePoolItem = Readonly<{
@@ -169,8 +177,6 @@ export declare function isBackgroundColorToken(value: unknown): value is Backgro
169
177
  export declare function foregroundTokenForBackgroundColorToken(token: BackgroundColorToken): string;
170
178
  export declare function planBackgroundColorTextLegibility(token: BackgroundColorToken): ThemeBackgroundTextLegibilityPlan;
171
179
  export declare function dedupeBackgroundColorTokensByPalette(tokens: readonly BackgroundColorToken[], palette: BackgroundColorPalette): readonly BackgroundColorToken[];
172
- export declare function parseGradientPresetId(value: unknown): GradientPresetId | null;
173
- export declare function isGradientPresetId(value: unknown): value is GradientPresetId;
174
180
  export declare function backgroundModeForOverride(override: BackgroundOverride): BackgroundMode;
175
181
  export declare function backgroundOverrideEquals(left: BackgroundOverride, right: BackgroundOverride): boolean;
176
182
  export declare function imagePoolForOverride(override: BackgroundOverride): readonly BackgroundImagePoolItem[];
@@ -178,6 +184,11 @@ export declare function defaultBackgroundOverrideForMode(mode: BackgroundMode, c
178
184
  export declare function resolveBackgroundCapability(input: ResolveBackgroundCapabilityInput): BackgroundCapability;
179
185
  export declare function backgroundCapabilityFromModes(modeCapabilities: readonly BackgroundModeCapability[]): BackgroundCapability;
180
186
  export declare function parseBackgroundOverrideFromContent(content: BackgroundCustomizeContent): ParsedBackgroundOverride;
187
+ /**
188
+ * Classifies persisted content before runtime Look decoration is considered.
189
+ * Only the explicit owner marker can make a background a page-design override.
190
+ */
191
+ export declare function parseCanonicalSectionBackground(content: BackgroundCustomizeContent): CanonicalSectionBackground;
181
192
  export declare function parseBackgroundOverride(value: unknown): ParsedBackgroundOverride;
182
193
  export declare function serializeBackgroundOverride(override: BackgroundOverride): Record<string, unknown> | null;
183
194
  export declare function applyBackgroundOverrideContentPatch(content: BackgroundCustomizeContent, override: BackgroundOverride): BackgroundCustomizeContent;
@@ -187,4 +198,3 @@ export declare function rankBackgroundImagePoolItems(items: readonly BackgroundI
187
198
  export declare function enabledBackgroundModes(capability: BackgroundCapability): readonly BackgroundMode[];
188
199
  export declare function backgroundColorTokensForValueCycling(capability: BackgroundCapability): readonly BackgroundColorToken[];
189
200
  export declare function canCycleBackgroundOverrideValue(override: BackgroundOverride, capability: BackgroundCapability): boolean;
190
- export {};
@@ -1,4 +1,4 @@
1
- import type { BlockManifest, BlockCategory, PreviewCustomizeManifestCuration, StyleTokenConfig, BehaviourConfig } from './manifest/schema';
1
+ import type { BlockManifest, BlockCategory, BlockContentSource, PreviewCustomizeManifestCuration, StyleTokenConfig, BehaviourConfig } from './manifest/schema';
2
2
  import type { NodeDefinition } from './node';
3
3
  import { type FragmentFieldConfigInput, type FragmentConfigInputOf, type FragmentDefinition } from './fragments';
4
4
  /**
@@ -72,6 +72,14 @@ export type BlockConfig = {
72
72
  previewCustomize?: PreviewCustomizeManifestCuration;
73
73
  /** Content types this block is compatible with */
74
74
  contentTypes?: readonly string[];
75
+ /**
76
+ * Explicit content-source classification for this block: whether its rendered
77
+ * content is authored inline, comes from content-type entries, or both.
78
+ * Declared per block (not inferred) and REQUIRED — a system block cannot be
79
+ * defined without classifying itself, and a registry-wide test double-checks
80
+ * the assembled manifests.
81
+ */
82
+ contentSource: BlockContentSource;
75
83
  };
76
84
  declare const BlockInput: unique symbol;
77
85
  type PickConfigProperty<C, K extends keyof BlockConfig> = K extends keyof C ? {
@@ -7,6 +7,14 @@ type CtasOptions = {
7
7
  minItems?: number;
8
8
  maxItems?: number;
9
9
  button?: ButtonOptions;
10
+ /**
11
+ * Explicit default value for the repeater. Pass `[]` to guarantee the CTA
12
+ * repeater materializes with NO seeded row (see 8.1: onboarding must not leave
13
+ * placeholder `label:"Label"` CTA stubs). Without this the repeater still
14
+ * defaults to `[]` via `minItems: 0`, but declaring it makes the no-seed
15
+ * contract explicit and regression-proof against a future `minItems` change.
16
+ */
17
+ defaultValue?: readonly Record<string, unknown>[];
10
18
  };
11
19
  type CtasOptionId<O> = O extends {
12
20
  id: infer Id extends string;
@@ -4845,6 +4845,29 @@ export declare const blockCategoryEnum: z.ZodEnum<{
4845
4845
  interactive: "interactive";
4846
4846
  }>;
4847
4847
  export type BlockCategory = z.infer<typeof blockCategoryEnum>;
4848
+ /**
4849
+ * Explicit authoring classification of where a block's rendered content comes from.
4850
+ *
4851
+ * - `inline` — all content is authored inline in the block's own fields.
4852
+ * - `entries` — the block renders content-type entries; `contentType` names the backing type.
4853
+ * - `mixed` — the block has inline fields AND renders entries; `contentType` names the
4854
+ * backing type when a single one applies.
4855
+ *
4856
+ * This is EXPLICIT metadata declared on every block definition (not inferred from
4857
+ * dataLoaders/field types), so the catalog can classify entry-backed vs inline blocks
4858
+ * honestly. A registry-wide test asserts every registered block declares it.
4859
+ */
4860
+ export declare const blockContentSourceKinds: readonly ["inline", "entries", "mixed"];
4861
+ export type BlockContentSourceKind = (typeof blockContentSourceKinds)[number];
4862
+ export declare const blockContentSourceSchema: z.ZodObject<{
4863
+ kind: z.ZodEnum<{
4864
+ entries: "entries";
4865
+ mixed: "mixed";
4866
+ inline: "inline";
4867
+ }>;
4868
+ contentType: z.ZodOptional<z.ZodString>;
4869
+ }, z.core.$strip>;
4870
+ export type BlockContentSource = z.infer<typeof blockContentSourceSchema>;
4848
4871
  export declare const manifestSchema: z.ZodObject<{
4849
4872
  name: z.ZodString;
4850
4873
  version: z.ZodString;
@@ -4939,6 +4962,14 @@ export declare const manifestSchema: z.ZodObject<{
4939
4962
  interactive: "interactive";
4940
4963
  }>>;
4941
4964
  contentTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
4965
+ contentSource: z.ZodOptional<z.ZodObject<{
4966
+ kind: z.ZodEnum<{
4967
+ entries: "entries";
4968
+ mixed: "mixed";
4969
+ inline: "inline";
4970
+ }>;
4971
+ contentType: z.ZodOptional<z.ZodString>;
4972
+ }, z.core.$strip>>;
4942
4973
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
4943
4974
  icon: z.ZodOptional<z.ZodString>;
4944
4975
  }, z.core.$strip>;
@@ -2463,7 +2463,7 @@ export declare const runtimeBackedBlockClientEntries: {
2463
2463
  className: string | null;
2464
2464
  titleText: string;
2465
2465
  bodyText: string;
2466
- stepLabels: readonly ("Details" | "Date" | "Event" | "Tickets" | "Payment")[];
2466
+ stepLabels: readonly ("Date" | "Event" | "Tickets" | "Details" | "Payment")[];
2467
2467
  summaryButtonText: string;
2468
2468
  }>;
2469
2469
  hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
@@ -2543,7 +2543,7 @@ export declare const runtimeBackedBlockClientEntries: {
2543
2543
  className: string | null;
2544
2544
  titleText: string;
2545
2545
  bodyText: string;
2546
- stepLabels: readonly ("Details" | "Date" | "Event" | "Tickets" | "Payment")[];
2546
+ stepLabels: readonly ("Date" | "Event" | "Tickets" | "Details" | "Payment")[];
2547
2547
  summaryButtonText: string;
2548
2548
  }>;
2549
2549
  hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
@@ -2555,7 +2555,7 @@ export declare const runtimeBackedBlockClientEntries: {
2555
2555
  className: string | null;
2556
2556
  titleText: string;
2557
2557
  bodyText: string;
2558
- stepLabels: readonly ("Details" | "Date" | "Event" | "Tickets" | "Payment")[];
2558
+ stepLabels: readonly ("Date" | "Event" | "Tickets" | "Details" | "Payment")[];
2559
2559
  summaryButtonText: string;
2560
2560
  }>;
2561
2561
  hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
@@ -2606,7 +2606,7 @@ export declare const runtimeBackedBlockClientEntries: {
2606
2606
  className: string | null;
2607
2607
  titleText: string;
2608
2608
  bodyText: string;
2609
- stepLabels: readonly ("Details" | "Date" | "Event" | "Tickets" | "Payment")[];
2609
+ stepLabels: readonly ("Date" | "Event" | "Tickets" | "Details" | "Payment")[];
2610
2610
  summaryButtonText: string;
2611
2611
  }>;
2612
2612
  hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
@@ -2686,7 +2686,7 @@ export declare const runtimeBackedBlockClientEntries: {
2686
2686
  className: string | null;
2687
2687
  titleText: string;
2688
2688
  bodyText: string;
2689
- stepLabels: readonly ("Details" | "Date" | "Event" | "Tickets" | "Payment")[];
2689
+ stepLabels: readonly ("Date" | "Event" | "Tickets" | "Details" | "Payment")[];
2690
2690
  summaryButtonText: string;
2691
2691
  }>;
2692
2692
  hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
@@ -2698,7 +2698,7 @@ export declare const runtimeBackedBlockClientEntries: {
2698
2698
  className: string | null;
2699
2699
  titleText: string;
2700
2700
  bodyText: string;
2701
- stepLabels: readonly ("Details" | "Date" | "Event" | "Tickets" | "Payment")[];
2701
+ stepLabels: readonly ("Date" | "Event" | "Tickets" | "Details" | "Payment")[];
2702
2702
  summaryButtonText: string;
2703
2703
  }>;
2704
2704
  hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
@@ -1250,7 +1250,7 @@ export declare const runtimeBackedBlockServerEntries: {
1250
1250
  className: string | null;
1251
1251
  titleText: string;
1252
1252
  bodyText: string;
1253
- stepLabels: readonly ("Details" | "Date" | "Event" | "Tickets" | "Payment")[];
1253
+ stepLabels: readonly ("Date" | "Event" | "Tickets" | "Details" | "Payment")[];
1254
1254
  summaryButtonText: string;
1255
1255
  }>;
1256
1256
  hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
@@ -1330,7 +1330,7 @@ export declare const runtimeBackedBlockServerEntries: {
1330
1330
  className: string | null;
1331
1331
  titleText: string;
1332
1332
  bodyText: string;
1333
- stepLabels: readonly ("Details" | "Date" | "Event" | "Tickets" | "Payment")[];
1333
+ stepLabels: readonly ("Date" | "Event" | "Tickets" | "Details" | "Payment")[];
1334
1334
  summaryButtonText: string;
1335
1335
  }>;
1336
1336
  hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
@@ -1342,7 +1342,7 @@ export declare const runtimeBackedBlockServerEntries: {
1342
1342
  className: string | null;
1343
1343
  titleText: string;
1344
1344
  bodyText: string;
1345
- stepLabels: readonly ("Details" | "Date" | "Event" | "Tickets" | "Payment")[];
1345
+ stepLabels: readonly ("Date" | "Event" | "Tickets" | "Details" | "Payment")[];
1346
1346
  summaryButtonText: string;
1347
1347
  }>;
1348
1348
  hydration: Readonly<Omit<import("../nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
@@ -20,8 +20,8 @@ export declare const eventLayoutSchema: z.ZodEnum<{
20
20
  compact: "compact";
21
21
  }>;
22
22
  export declare const eventCalendarDisplayModeSchema: z.ZodEnum<{
23
- list: "list";
24
23
  calendar: "calendar";
24
+ list: "list";
25
25
  combined: "combined";
26
26
  timetable: "timetable";
27
27
  "week-board": "week-board";
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Entry-instance validator, compiled from the content-type field DSL.
3
+ *
4
+ * `ContentTypeSchemaZ` validates schema DOCUMENTS; this validates entry DATA
5
+ * against a schema: required-field presence, rejection of unfilled placeholder
6
+ * sentinels (shared vocabulary in `sentinels.ts`), and basic per-type shape
7
+ * checks. It is intentionally lightweight — enough to power scaffold diagnostics
8
+ * and a CLI pre-flight — not a replacement for server-side write validation.
9
+ */
10
+ import type { ContentTypeSchema } from './schema';
11
+ export type EntryValidationCode = 'missing_required' | 'unfilled_placeholder' | 'wrong_type' | 'invalid_option';
12
+ export interface EntryValidationError {
13
+ /** Dotted path to the offending value (e.g. `hero.cta.link`, `items[0].label`). */
14
+ path: string;
15
+ /** The field's DSL type. */
16
+ fieldType: string;
17
+ code: EntryValidationCode;
18
+ message: string;
19
+ }
20
+ export interface EntryValidationResult {
21
+ valid: boolean;
22
+ errors: EntryValidationError[];
23
+ }
24
+ /**
25
+ * Validate entry data against a content-type schema. Returns all errors so
26
+ * callers can list everything an agent must fix in one pass.
27
+ */
28
+ export declare function validateEntryInstance(input: {
29
+ schema: ContentTypeSchema;
30
+ data: Record<string, unknown>;
31
+ }): EntryValidationResult;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Entry scaffold emitter.
3
+ *
4
+ * Produces a MACHINE-READABLE template for a content type from its normalized
5
+ * field DSL ({@link ContentTypeSchema}): required fields are stubbed with explicit
6
+ * placeholder sentinels (`"<REQUIRED: text>"`, `"<REQUIRED: media-identifier>"`, …
7
+ * per field type, from the shared vocabulary in `sentinels.ts`), optional fields
8
+ * are omitted.
9
+ *
10
+ * The `diagnostics` list is derived from the entry-instance {@link
11
+ * validateEntryInstance} run against the emitted template, so it can never drift
12
+ * from what the validator actually rejects — plus a sentinel sweep so every
13
+ * emitted placeholder is reported even where the schema-walk can't recurse.
14
+ *
15
+ * This is NOT itself a validator: an unfilled template is not upsert-valid. The
16
+ * contract is: replace every placeholder with a valid value and `entry upsert`
17
+ * accepts the result without structural edits (enforced by the validator, used
18
+ * both here and as a CLI pre-flight).
19
+ */
20
+ import type { ContentTypeSchema } from './schema';
21
+ /** Which existing site resource a field points at (must exist before upsert). */
22
+ export type ScaffoldResourceKind = 'media' | 'file' | 'reference';
23
+ /** One required field an agent must fill before the template is upsert-valid. */
24
+ export interface EntryScaffoldDiagnostic {
25
+ /** Dotted path to the field within the entry data (e.g. `hero.cta.link`). */
26
+ path: string;
27
+ /** The field's DSL type. */
28
+ fieldType: string;
29
+ /** The site resource this field references, when applicable. */
30
+ needsResource?: ScaffoldResourceKind;
31
+ /** Short instruction for the agent. */
32
+ message: string;
33
+ }
34
+ export interface EntryScaffold {
35
+ /** Content-type key the template was generated for. */
36
+ contentType: string;
37
+ /**
38
+ * Template with required fields stubbed with placeholder sentinels and optional
39
+ * fields omitted. Replace every sentinel with a valid value before upsert.
40
+ */
41
+ template: Record<string, unknown>;
42
+ /** Required fields to fill, and which of them need existing site resources. */
43
+ diagnostics: EntryScaffoldDiagnostic[];
44
+ /**
45
+ * True when the template contains no placeholders (the type has no required
46
+ * fields) — such a template can be upserted structurally as-is.
47
+ */
48
+ ready: boolean;
49
+ }
50
+ /**
51
+ * Emit a placeholder template + diagnostics for a content type from its field DSL.
52
+ * Diagnostics come from the entry-instance validator run against the template,
53
+ * merged with a sentinel sweep so no emitted placeholder goes unreported.
54
+ */
55
+ export declare function buildEntryScaffold(input: {
56
+ key: string;
57
+ schema: ContentTypeSchema;
58
+ }): EntryScaffold;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Placeholder sentinel vocabulary — the SINGLE source of truth shared by the
3
+ * scaffold emitter and the entry-instance validator so the two can never drift.
4
+ *
5
+ * Every sentinel is a string of the closed form `"<REQUIRED: …>"`. The emitter
6
+ * produces them with {@link buildSentinel}; the validator rejects any value the
7
+ * shared {@link isPlaceholderSentinel} predicate recognizes. Both sides import
8
+ * from here, so adding a field type or changing the shape updates both at once.
9
+ */
10
+ import type { ContentFieldConfig } from './schema';
11
+ /** Leaf field types that receive a placeholder sentinel (containers recurse). */
12
+ export declare const SENTINEL_LEAF_TYPES: readonly ["text", "textarea", "richText", "number", "date", "datetime", "url", "link", "media", "file", "boolean", "select", "reference"];
13
+ export type SentinelLeafType = (typeof SENTINEL_LEAF_TYPES)[number];
14
+ /** Matches the closed sentinel shape `"<REQUIRED: …>"`. */
15
+ export declare const SENTINEL_PATTERN: RegExp;
16
+ /**
17
+ * True when a value is an unfilled placeholder sentinel. Shared by the emitter
18
+ * (self-check) and the validator (rejection) so recognition can't drift.
19
+ */
20
+ export declare function isPlaceholderSentinel(value: unknown): value is string;
21
+ /**
22
+ * The placeholder sentinel for a leaf field. Container types (group/button/
23
+ * repeater) do not have a leaf sentinel — they expand structurally — and calling
24
+ * this for them returns a generic marker only for completeness.
25
+ */
26
+ export declare function buildSentinel(field: ContentFieldConfig): string;
27
+ /** A placeholder sentinel found in entry data, with its dotted path. */
28
+ export interface UnfilledSentinel {
29
+ path: string;
30
+ value: string;
31
+ }
32
+ /**
33
+ * Deep-scan arbitrary entry data for any unfilled placeholder sentinels. Needs no
34
+ * schema, so it powers the CLI's pre-HTTP upsert pre-flight.
35
+ */
36
+ export declare function findUnfilledSentinels(data: unknown, pathPrefix?: string): UnfilledSentinel[];
@@ -7,6 +7,9 @@ export * from './routeTemplate';
7
7
  export * from './definitions/canonicalizePageRouteMetadata';
8
8
  export * from './definitions/shared';
9
9
  export * from './content-types/schema';
10
+ export * from './content-types/sentinels';
11
+ export * from './content-types/entryValidation';
12
+ export * from './content-types/scaffold';
10
13
  export * from './content-types/defaults';
11
14
  export * from './content-types/builtins';
12
15
  export * from './content-types/builtin-schemas';
@@ -108,6 +108,14 @@ export declare function toScheduledBookingDateRange(input: BookingRangeFormatInp
108
108
  export declare function formatBookingInstant(isoString: string, options: BookingInstantFormatOptions): string;
109
109
  export declare function formatBookingDate(input: ScheduledBookingDateTime, format?: Intl.DateTimeFormatOptions): string;
110
110
  export declare function formatBookingTime(input: ScheduledBookingDateTime, format?: Intl.DateTimeFormatOptions): string;
111
+ /**
112
+ * Formats the compact English event-time presentation used by public surfaces.
113
+ *
114
+ * This intentionally owns the lowercase day-period token and zero-minute
115
+ * omission instead of depending on locale-specific spacing or punctuation.
116
+ * Callers must only use it for an English presentation contract.
117
+ */
118
+ export declare function formatBookingCompactEnglishTime(input: ScheduledBookingDateTime): string;
111
119
  export declare function formatBookingDateTime(input: ScheduledBookingDateTime, format?: Intl.DateTimeFormatOptions): string;
112
120
  export declare function formatBookingDateParts(input: ScheduledBookingDateRange, options?: Readonly<{
113
121
  dateFormat?: Intl.DateTimeFormatOptions;