@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
@@ -397,6 +397,7 @@ export type AppointmentService = {
397
397
  locationType: "virtual" | "in_person" | "hybrid";
398
398
  venueId: string | null;
399
399
  timezone: string | null;
400
+ onlineDetails: AppointmentServiceOnlineDetails | null;
400
401
  formId: string | null;
401
402
  cancellationPolicy: {
402
403
  refunds: {
@@ -407,6 +408,16 @@ export type AppointmentService = {
407
408
  createdAt: string;
408
409
  updatedAt: string;
409
410
  };
411
+ export type AppointmentServiceOnlineDetails = {
412
+ joinUrl: string;
413
+ accessCode: string | null;
414
+ notes: string | null;
415
+ };
416
+ export type AppointmentServiceOnlineDetailsInput = {
417
+ joinUrl: string;
418
+ accessCode?: string | null;
419
+ notes?: string | null;
420
+ };
410
421
  export type CreateAppointmentServiceRequest = {
411
422
  title: string;
412
423
  description?: string | null;
@@ -423,6 +434,7 @@ export type CreateAppointmentServiceRequest = {
423
434
  locationType?: "virtual" | "in_person" | "hybrid";
424
435
  venueId?: string | null;
425
436
  timezone?: string | null;
437
+ onlineDetails?: AppointmentServiceOnlineDetailsInput | null;
426
438
  formId?: string | null;
427
439
  cancellationPolicy?: AppointmentService["cancellationPolicy"];
428
440
  };
@@ -351,6 +351,11 @@ export type SiteBySlugResponse = {
351
351
  selectionButtonPersonalityId?: string | null;
352
352
  selectionPaletteVariantId?: string | null;
353
353
  selectionPaletteOverrides?: Record<string, string> | null;
354
+ selectionHeaderLayoutId?: string | null;
355
+ selectionHeaderStyleId?: string | null;
356
+ selectionTypographyPresetId?: string | null;
357
+ selectionTypographyBodyFontOverride?: string | null;
358
+ selectionTypographyHeadingFontOverride?: string | null;
354
359
  selectionHeaderLookId?: string | null;
355
360
  selectionFooterLookId?: string | null;
356
361
  navigation: NavigationMenuWithItems[];
@@ -46,7 +46,7 @@ export { createPage, deletePage, publishPageDraft, discardPageDraft, getPageDesi
46
46
  export { updateRouteMetadata } from "./routes";
47
47
  export type { RouteMetadataPayload, RouteMetadataResponse } from "./routes";
48
48
  export { getBookingSettingsRequest, updateBookingSettingsRequest, createAppointmentRequest, createCourseRequest, updateCourseRequest, deleteCourseRequest, deleteCourseProgramRequest, duplicateCourseRequest, addCourseEnrollmentRequest, addEventOccurrenceAttendeeRequest, updateCourseEnrollmentRequest, } from "./bookings";
49
- export type { AppointmentService } from "./bookingOperations";
49
+ export type { AppointmentService, AppointmentServiceOnlineDetails, AppointmentServiceOnlineDetailsInput, } from "./bookingOperations";
50
50
  export type { BookingPricing } from "./bookingConfig";
51
51
  export { DEFAULT_APPOINTMENT_STAFF_DIGEST_LOCAL_SEND_TIME } from "./bookingConfig";
52
52
  export { BOOKING_LEDGER_CANCELLATION_MODE_VALUES, BOOKING_LEDGER_DATE_BASIS_VALUES, BOOKING_LEDGER_KIND_VALUES, BOOKING_LEDGER_PERIOD_PRESET_VALUES, BOOKING_QUESTION_ANSWER_EXPORT_SCOPES, BOOKING_QUESTION_ANSWER_EXPORT_SCOPE_VALUES, CUSTOMER_MEMBERSHIP_STATUS_VALUES, CUSTOMER_PASS_STATUS_VALUES, } from "./bookingRecords";
@@ -1,5 +1,5 @@
1
1
  import type { APIEndpoint } from "./apiEndpointTypes";
2
- import type { BookingPaymentTermsConfig, BookingPricing, EventAttendanceMode, EventPricingMode, PublicEventEligibilityTicketTypeRecord, PublicEventTicketTypeRecord } from "./bookingConfig";
2
+ import type { BookingPaymentTermsConfig, BookingPricing, EventAttendanceMode, EventDeliveryMode, EventPricingMode, PublicEventEligibilityTicketTypeRecord, PublicEventTicketTypeRecord } from "./bookingConfig";
3
3
  import type { AutoAppliedDiscountPreview } from "./bookingRecords";
4
4
  import type { PublicCourseDetails } from "./courses";
5
5
  import type { PublicTeamMemberBlockItem, PublicTeamMemberSummary } from "./teamMembers";
@@ -77,6 +77,14 @@ export type PublicExperienceAPIEndpoints = {
77
77
  slug: string;
78
78
  path: string;
79
79
  requiresRegistration: boolean;
80
+ deliveryMode: EventDeliveryMode;
81
+ attendanceModes: Array<{
82
+ mode: EventAttendanceMode;
83
+ capacity: number | null;
84
+ registeredCount: number;
85
+ availableSpots: number | null;
86
+ waitlistEnabled: boolean;
87
+ }>;
80
88
  startsAt: string;
81
89
  endsAt: string;
82
90
  capacity: number | null;
@@ -87,7 +95,7 @@ export type PublicExperienceAPIEndpoints = {
87
95
  id: string;
88
96
  name: string;
89
97
  address: string | null;
90
- location?: {
98
+ location: {
91
99
  lat: number;
92
100
  lng: number;
93
101
  } | null;
@@ -108,7 +116,7 @@ export type PublicExperienceAPIEndpoints = {
108
116
  accessRestriction: "none" | "category";
109
117
  allowedCategoryIds: string[];
110
118
  requireGuestDetails?: boolean;
111
- timeZone?: string;
119
+ timeZone: string;
112
120
  acceptsPasses?: boolean;
113
121
  acceptsMemberships?: boolean;
114
122
  course?: {
@@ -12,6 +12,7 @@ export type FontRecord = {
12
12
  family: string;
13
13
  variants: string[];
14
14
  category: string;
15
+ popularity?: number;
15
16
  };
16
17
  export type SiteFontFileRecord = {
17
18
  storagePath: string;
@@ -1,7 +1,7 @@
1
1
  import type { SystemCustomizeFacetSelection, Theme } from '../../blocks/src/index';
2
2
  import type { ListMediaAssetsResult, MediaAssetWithLabels } from '@riverbankcms/media-storage-supabase';
3
3
  import type { DbJson } from '../../db/src/index';
4
- import type { PageDesignEditorReadModel, PageDesignIntent, AppearancePresetId, BoundaryOptionId, DesignBlockId, FooterLookId, HeaderLookId, LayoutVariantKey, SiteStyleId } from '../../theme-core/src/site-styles/index';
4
+ import type { PageDesignEditorReadModel, PageDesignIntent, AppearancePresetId, BoundaryOptionId, DesignBlockId, FooterLookId, HeaderLayoutId, HeaderLookId, HeaderStyleId, LayoutVariantKey, SiteStyleId, TypographyPresetId } from '../../theme-core/src/site-styles/index';
5
5
  import type { ButtonPersonalityId } from '../../theme-core/src/buttons/index';
6
6
  import type { PaletteOverrides, PaletteVariantId } from '../../theme-core/src/palette/index';
7
7
  import type { APIEndpoint } from './apiEndpointTypes';
@@ -23,6 +23,11 @@ export type SiteThemeSelectionsPayload = {
23
23
  buttonPersonalityId?: ButtonPersonalityId | null;
24
24
  paletteVariantId?: PaletteVariantId | null;
25
25
  paletteOverrides?: PaletteOverrides | null;
26
+ headerLayoutId?: HeaderLayoutId | null;
27
+ headerStyleId?: HeaderStyleId | null;
28
+ typographyPresetId?: TypographyPresetId | null;
29
+ typographyBodyFontOverride?: string | null;
30
+ typographyHeadingFontOverride?: string | null;
26
31
  headerLookId?: HeaderLookId | null;
27
32
  footerLookId?: FooterLookId | null;
28
33
  };
@@ -31,7 +36,12 @@ export type ApplySiteStyleSelectionBody = Readonly<{
31
36
  buttonPersonalityId: ButtonPersonalityId | null;
32
37
  paletteVariantId: PaletteVariantId | null;
33
38
  paletteOverrides: PaletteOverrides | null;
39
+ typographyPresetId?: TypographyPresetId | null;
40
+ typographyBodyFontOverride?: string | null;
41
+ typographyHeadingFontOverride?: string | null;
34
42
  headerLookId: HeaderLookId | null;
43
+ headerLayoutId?: HeaderLayoutId | null;
44
+ headerStyleId?: HeaderStyleId | null;
35
45
  footerLookId: FooterLookId | null;
36
46
  baseSelectionVersion: number;
37
47
  selectionId?: string | null;
@@ -48,12 +58,19 @@ export type ApplySiteStyleSelectionResponse = Readonly<{
48
58
  buttonPersonalityId: ButtonPersonalityId;
49
59
  paletteVariantId: PaletteVariantId;
50
60
  paletteOverrides: PaletteOverrides | null;
51
- headerLookId: HeaderLookId;
61
+ headerLayoutId: HeaderLayoutId;
62
+ headerStyleId: HeaderStyleId;
63
+ typographyPresetId: TypographyPresetId | null;
64
+ typographyBodyFontOverride: string | null;
65
+ typographyHeadingFontOverride: string | null;
66
+ headerLookId: HeaderLookId | null;
52
67
  footerLookId: FooterLookId;
53
68
  }>;
54
69
  export type SaveSiteChromeLookSelectionBody = Readonly<{
55
70
  surface: 'header';
56
71
  lookId: HeaderLookId | null;
72
+ layoutId?: HeaderLayoutId | null;
73
+ styleId?: HeaderStyleId | null;
57
74
  theme: Theme;
58
75
  themeId?: string | null;
59
76
  selectionId?: string | null;
@@ -74,6 +91,8 @@ export type SaveSiteChromeLookSelectionResponse = Readonly<{
74
91
  savedAt: string;
75
92
  theme: Theme;
76
93
  headerLookId: HeaderLookId | null;
94
+ headerLayoutId: HeaderLayoutId | null;
95
+ headerStyleId: HeaderStyleId | null;
77
96
  footerLookId: FooterLookId | null;
78
97
  }>;
79
98
  export type PageDesignRevisionToken = {
@@ -219,6 +238,11 @@ export type SiteRuntimeAPIEndpoints = {
219
238
  buttonPersonalityId: ButtonPersonalityId | null;
220
239
  paletteVariantId: PaletteVariantId | null;
221
240
  paletteOverrides: PaletteOverrides | null;
241
+ headerLayoutId: HeaderLayoutId | null;
242
+ headerStyleId: HeaderStyleId | null;
243
+ typographyPresetId: TypographyPresetId | null;
244
+ typographyBodyFontOverride: string | null;
245
+ typographyHeadingFontOverride: string | null;
222
246
  headerLookId: HeaderLookId | null;
223
247
  footerLookId: FooterLookId | null;
224
248
  }>;
@@ -25,6 +25,34 @@ export type BlockDraftSaveability = Readonly<{
25
25
  issues: readonly BlockDraftValidationIssue[];
26
26
  error: string;
27
27
  }>;
28
+ export type BlockManifestResolution = Readonly<{
29
+ kind: 'builtinManifest';
30
+ blockKind: string;
31
+ manifest: BlockManifest;
32
+ }> | Readonly<{
33
+ kind: 'sdkCustomManifest';
34
+ blockKind: string;
35
+ manifest: BlockManifest;
36
+ }> | Readonly<{
37
+ kind: 'managedCustomManifest';
38
+ blockKind: string;
39
+ manifest: BlockManifest;
40
+ }> | Readonly<{
41
+ kind: 'unknownCustomBlock';
42
+ blockKind: string;
43
+ }> | Readonly<{
44
+ kind: 'unknownBuiltinBlock';
45
+ blockKind: string;
46
+ }> | Readonly<{
47
+ kind: 'invalidManifest';
48
+ blockKind: string;
49
+ source: 'sdkCustom' | 'managedCustom';
50
+ reason: string;
51
+ }>;
52
+ export declare function getResolvedBlockManifest(resolution: BlockManifestResolution): BlockManifest | null;
53
+ export declare function isResolvedBlockManifest(resolution: BlockManifestResolution): resolution is Extract<BlockManifestResolution, {
54
+ kind: 'builtinManifest' | 'sdkCustomManifest' | 'managedCustomManifest';
55
+ }>;
28
56
  export declare const unfinishedBlockCopy: {
29
57
  readonly title: "Fix this block to save it";
30
58
  readonly description: "Some fields need a quick check. Your changes are safe here for now.";
@@ -69,5 +97,4 @@ export declare function validateBlockManifestValues(manifest: BlockManifest, val
69
97
  export declare function validateBlockManifestIssues(manifest: BlockManifest, values: Record<string, unknown>, mode: BlockManifestValidationMode): ManifestValidationIssue[];
70
98
  export declare function validateBlockManifest(manifest: BlockManifest, values: Record<string, unknown>, mode: BlockManifestValidationMode): BlockDraftValidationIssue[];
71
99
  export declare function isValidationFieldVisibleInSidebar(descriptor: FieldValidationDescriptor | null): boolean;
72
- export declare function normalizeManifestIssueMessage(issue: ManifestValidationIssue): string;
73
100
  export {};
@@ -8,8 +8,8 @@ export { createRHFBackend, createStoreBackend, useBackendWatch } from '../backen
8
8
  export type { FormBackend, FieldError, FieldState, SetValueOptions } from '../backend/types';
9
9
  export type { ManifestAdapterOptions, ManifestAdapterResult, ManifestFormSource, ManifestSchemaOptions, ManifestValidationResult, } from '../manifest/manifestFormAdapter';
10
10
  export { createManifestValidation } from '../manifest/manifestFormAdapter';
11
- export { formatPublishBlockedMessage, formatRecoveryConflictSummary, formatRecoveryConflictTitle, deriveBlockDraftSaveability, formatUnfinishedBlocksSummary, normalizeManifestIssueMessage, recoveryConflictCopy, shouldShowBlockFieldValidation, unfinishedBlockCopy, validateBlockManifest, validateBlockManifestIssues, validateBlockManifestValues, } from './blockDraftSaveability';
12
- export type { BlockDraftSaveability, BlockDraftValidationIssue, BlockManifestValidationMode, } from './blockDraftSaveability';
11
+ export { formatPublishBlockedMessage, formatRecoveryConflictSummary, formatRecoveryConflictTitle, deriveBlockDraftSaveability, formatUnfinishedBlocksSummary, getResolvedBlockManifest, isResolvedBlockManifest, recoveryConflictCopy, shouldShowBlockFieldValidation, unfinishedBlockCopy, validateBlockManifest, validateBlockManifestIssues, validateBlockManifestValues, } from './blockDraftSaveability';
12
+ export type { BlockDraftSaveability, BlockDraftValidationIssue, BlockManifestResolution, BlockManifestValidationMode, } from './blockDraftSaveability';
13
13
  export type { BaseFieldConfig, FieldConfig, TextFieldConfig, NumberFieldConfig, RichTextFieldConfig, MediaFieldConfig, FileFieldConfig, BooleanFieldConfig, DateFieldConfig, TimeFieldConfig, DateTimeFieldConfig, SlugFieldConfig, UrlFieldConfig, LinkFieldConfig, SelectFieldConfig, ReferenceFieldConfig, GroupFieldConfig, RepeaterFieldConfig, ButtonFieldConfig, ContentTypeSelectFieldConfig, EntryPickerFieldConfig, } from '../fields/types';
14
14
  export { createManifestFormAdapter } from '../manifest/manifestFormAdapter';
15
15
  export { PaletteProvider, usePalette } from '../palette/PaletteContext';
@@ -1,5 +1,6 @@
1
1
  export * from './client/index';
2
- export { formatPublishBlockedMessage, formatRecoveryConflictSummary, formatRecoveryConflictTitle, formatUnfinishedBlocksSummary, recoveryConflictCopy, unfinishedBlockCopy, } from './blockDraftSaveability';
2
+ export { formatPublishBlockedMessage, formatRecoveryConflictSummary, formatRecoveryConflictTitle, formatUnfinishedBlocksSummary, getResolvedBlockManifest, isResolvedBlockManifest, recoveryConflictCopy, unfinishedBlockCopy, } from './blockDraftSaveability';
3
+ export type { BlockManifestResolution } from './blockDraftSaveability';
3
4
  export { WIDGET_NAMES, type WidgetName } from './widgets';
4
5
  export { WidgetField, WidgetFieldMessage } from './widgets';
5
6
  export type { WidgetFieldProps, WidgetFieldMessageProps } from './widgets';
@@ -0,0 +1,24 @@
1
+ import type { FieldValues } from 'react-hook-form';
2
+ import type { FieldConfig, GroupFieldConfig, RepeaterFieldConfig } from '../fields/types';
3
+ export declare function assertNever(value: never): never;
4
+ export declare function getGroupChildFields(field: GroupFieldConfig): FieldConfig[];
5
+ export declare function getRepeaterChildFields(field: RepeaterFieldConfig): FieldConfig[];
6
+ export type VisibleWhenConfig = {
7
+ field: string;
8
+ equals?: unknown;
9
+ notEquals?: unknown;
10
+ oneOf?: unknown[];
11
+ notIn?: unknown[];
12
+ };
13
+ /**
14
+ * Determines whether the provided value satisfies the given visibility condition.
15
+ */
16
+ export declare function isVisibleWhenSatisfied(config: VisibleWhenConfig, current: unknown): boolean;
17
+ /**
18
+ * Utility to traverse the form error bag using a dotted path (supports array indices).
19
+ */
20
+ export declare function getErrorAtPath(errors: FieldValues | undefined, path: string): unknown;
21
+ /**
22
+ * Normalizes a dot/bracket notation path to an array of string segments.
23
+ */
24
+ export declare function normalizePath(path: string): string[];
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Date Field - Validation Schema
3
3
  */
4
- import { z } from 'zod';
4
+ import type { z } from 'zod';
5
5
  import type { DateFieldConfig } from '../../fields/types';
6
6
  /**
7
7
  * Build Zod validation schema for Date field
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * DateTime Field - Validation Schema
3
3
  */
4
- import { z } from 'zod';
4
+ import type { z } from 'zod';
5
5
  import type { DateTimeFieldConfig } from '../../fields/types';
6
6
  /**
7
7
  * Build Zod validation schema for DateTime field
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Time Field - Validation Schema
3
3
  */
4
- import { z } from 'zod';
4
+ import type { z } from 'zod';
5
5
  import type { TimeFieldConfig } from '../../fields/types';
6
6
  /**
7
7
  * Build Zod validation schema for Time field
@@ -1,11 +1,11 @@
1
- import * as React from "react";
2
- import type { ResolverContext } from "./system";
3
- import type { PageOutline } from "./structure/schema";
4
- import type { Theme } from "../../theme-core/src/schema";
5
- import type { SdkCustomBlock } from "./system/manifest/schema";
6
- import type { ThemeTokens } from "./system/theme";
7
- import type { RouteMap } from "./system/transforms";
8
- import { type MediaAssetIndexItem, type ResolveImageUrlContext, type ResolveImageUrlContextInput } from "./system/runtime/nodes/media";
1
+ import * as React from 'react';
2
+ import type { ResolverContext } from './system';
3
+ import type { PageOutline } from './structure/schema';
4
+ import type { Theme } from '../../theme-core/src/schema';
5
+ import type { SdkCustomBlock } from './system/manifest/schema';
6
+ import type { ThemeTokens } from './system/theme';
7
+ import type { RouteMap } from './system/transforms';
8
+ import { type MediaAssetIndexItem, type ResolveImageUrlContext, type ResolveImageUrlContextInput } from './system/runtime/nodes/media';
9
9
  /**
10
10
  * Occurrence context for event pages.
11
11
  * Passed through to blocks that need occurrence information (e.g., event-registration).
@@ -41,7 +41,7 @@ type PageRendererDataContext = {
41
41
  siteId?: string;
42
42
  pageId?: string;
43
43
  resolvedData?: Record<string, Record<string, unknown>>;
44
- previewStage?: "published" | "preview";
44
+ previewStage?: 'published' | 'preview';
45
45
  routes?: RouteMap;
46
46
  pagesByIdentifier?: Record<string, string>;
47
47
  entriesByIdentifier?: Record<string, Record<string, string>>;
@@ -152,7 +152,7 @@ interface PageRendererProps {
152
152
  dataContext?: PageRendererDataContext;
153
153
  routeMap?: RouteMap;
154
154
  wrapBlock?: (blockId: string, rendered: React.ReactNode) => React.ReactNode;
155
- registry?: ResolverContext["registry"];
155
+ registry?: ResolverContext['registry'];
156
156
  themeTokens?: ThemeTokens;
157
157
  blockOverrides?: BlockOverrides;
158
158
  sdkConfig?: SdkConfigForRenderer | null;
@@ -1,4 +1,6 @@
1
1
  export { BlockApiProvider, type BlockApiConfig, } from '../system/runtime/api';
2
2
  export { EventRegistrationIslandClient, type EventRegistrationIslandClientProps, } from '../system/runtime/nodes/event-registration.client';
3
3
  export { EventDetailsIslandClient, type EventDetailsIslandClientProps, } from '../system/runtime/nodes/event-details.client';
4
- export { EventCalendarClient, type EventCalendarClientProps, EventCombinedIslandClient, type EventCombinedClientProps, type EventCombinedIslandClientProps, EventListingClient, type EventListingClientProps, } from '../system/runtime/nodes/events';
4
+ export { EventCalendarClient, type EventCalendarClientProps, } from '../system/runtime/nodes/events/EventCalendar.client';
5
+ export { EventCombinedIslandClient, type EventCombinedClientProps, type EventCombinedIslandClientProps, } from '../system/runtime/nodes/events/EventCombined.client';
6
+ export { EventListingClient, type EventListingClientProps, } from '../system/runtime/nodes/events/EventListing.client';
@@ -0,0 +1,22 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { Theme } from '../../../theme-core/src/schema';
3
+ export type SiteChromeThemeConfigOverride = Readonly<{
4
+ header?: Partial<NonNullable<Theme['header']>>;
5
+ footer?: Partial<NonNullable<Theme['footer']>>;
6
+ }>;
7
+ export type SiteChromeBlockRenderSpec = Readonly<{
8
+ content: Record<string, unknown>;
9
+ viewModelOverrides: Record<string, unknown>;
10
+ themeConfigOverride?: SiteChromeThemeConfigOverride;
11
+ canRenderReactively?: boolean;
12
+ }>;
13
+ export type SiteChromeRenderModel = Readonly<{
14
+ header: SiteChromeBlockRenderSpec;
15
+ footer: SiteChromeBlockRenderSpec;
16
+ }>;
17
+ export declare function renderSiteChromeBlock(model: SiteChromeRenderModel, surface: 'header' | 'footer', theme: Theme): ReactNode;
18
+ export declare function SiteChromeBlockRenderer({ model, surface, theme, }: {
19
+ model: SiteChromeRenderModel;
20
+ surface: 'header' | 'footer';
21
+ theme: Theme;
22
+ }): ReactNode;
@@ -239,7 +239,7 @@ export declare const proofBlockIslandCodecs: {
239
239
  className: string | null;
240
240
  summaryButtonText: string;
241
241
  }>;
242
- hydration: Readonly<Omit<import("../system/runtime/nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
242
+ hydration: Readonly<Omit<import("../system/runtime/nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
243
243
  }>>;
244
244
  }>) => unknown;
245
245
  decode: (input: unknown) => import("./runtime").DecodeResult<Readonly<Readonly<{
@@ -258,7 +258,7 @@ export declare const proofBlockIslandCodecs: {
258
258
  className: string | null;
259
259
  summaryButtonText: string;
260
260
  }>;
261
- hydration: Readonly<Omit<import("../system/runtime/nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
261
+ hydration: Readonly<Omit<import("../system/runtime/nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
262
262
  }>>;
263
263
  }>>;
264
264
  }>;
@@ -1289,7 +1289,7 @@ export declare const runtimeIslandCodecs: {
1289
1289
  className: string | null;
1290
1290
  summaryButtonText: string;
1291
1291
  }>;
1292
- hydration: Readonly<Omit<import("../system/runtime/nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
1292
+ hydration: Readonly<Omit<import("../system/runtime/nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
1293
1293
  }>>;
1294
1294
  }>) => unknown;
1295
1295
  decode: (input: unknown) => import("./runtime").DecodeResult<Readonly<Readonly<{
@@ -1308,7 +1308,7 @@ export declare const runtimeIslandCodecs: {
1308
1308
  className: string | null;
1309
1309
  summaryButtonText: string;
1310
1310
  }>;
1311
- hydration: Readonly<Omit<import("../system/runtime/nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint">>;
1311
+ hydration: Readonly<Omit<import("../system/runtime/nodes/event-registration").EventRegistrationClientProps, "siteId" | "stage" | "className" | "registrationEndpoint" | "eligibilityEndpoint" | "checkoutEndpoint" | "buttonText">>;
1312
1312
  }>>;
1313
1313
  }>>;
1314
1314
  }>;
@@ -0,0 +1,38 @@
1
+ import type { BlockDescriptor } from './system/registry';
2
+ import type { BlockManifest, SdkCustomBlock } from './system/manifest/schema';
3
+ import { transformSdkBlockToDefinition, transformSdkBlockToManifest } from './sdkBlockTransform';
4
+ export type SdkConfigForBlockPicker = {
5
+ customBlocks?: SdkCustomBlock[];
6
+ };
7
+ export type CustomBlockManifestSource = {
8
+ kind: 'sdk-config';
9
+ } | {
10
+ kind: 'sdk-synced';
11
+ syncedAt: string | null;
12
+ contentHash: string | null;
13
+ } | {
14
+ kind: 'managed-database';
15
+ };
16
+ export type CustomBlockRegistryEntry = {
17
+ manifest: SdkCustomBlock;
18
+ source: CustomBlockManifestSource;
19
+ };
20
+ export type ResolvedCustomBlockManifest = {
21
+ blockKind: `custom.${string}`;
22
+ manifest: BlockManifest;
23
+ source: CustomBlockManifestSource;
24
+ descriptor: BlockDescriptor;
25
+ };
26
+ export type CustomBlockRegistry = {
27
+ entries: readonly ResolvedCustomBlockManifest[];
28
+ findManifest: (blockKind: string) => ResolvedCustomBlockManifest | undefined;
29
+ };
30
+ export type CustomBlockRegistryInput = {
31
+ sdkConfig?: SdkConfigForBlockPicker | null;
32
+ customBlocks?: readonly CustomBlockRegistryEntry[];
33
+ onConflict?: (message: string) => void;
34
+ };
35
+ declare function transformToBlockDescriptor(sdkBlock: SdkCustomBlock, source?: BlockDescriptor['source']): BlockDescriptor;
36
+ export declare function createCustomBlockRegistry({ sdkConfig, customBlocks, onConflict, }: CustomBlockRegistryInput): CustomBlockRegistry;
37
+ export declare function mergeBlockDescriptorsWithRegistry(systemBlocks: readonly BlockDescriptor[], registry: CustomBlockRegistry, onConflict?: (message: string) => void): BlockDescriptor[];
38
+ export { transformSdkBlockToManifest, transformSdkBlockToDefinition, transformToBlockDescriptor, };
@@ -1,4 +1,6 @@
1
1
  export { default as PageRenderer } from './PageRenderer';
2
+ export { createCustomBlockRegistry, mergeBlockDescriptorsWithRegistry, transformToBlockDescriptor, } from './customBlockRegistry';
3
+ export type { CustomBlockManifestSource, CustomBlockRegistry, CustomBlockRegistryEntry, ResolvedCustomBlockManifest, SdkConfigForBlockPicker, } from './customBlockRegistry';
2
4
  export type { BlockOverrideComponent, BlockOverrideProps, BlockOverrides, EntrySubrouteContextData, OccurrenceContextData, SdkConfigForRenderer, } from './PageRenderer';
3
5
  export * from './subroutes';
4
6
  export * from './primitives/content/components/Button';
@@ -1,5 +1,6 @@
1
1
  import type { SystemBlockDefinition } from "../registry";
2
- import { type CardStylesContent, type ContainerStylesContent } from "../fields/boxStyles";
2
+ import type { NodeDefinition } from "../node";
3
+ import { type CardStylesContent, type ContainerStylesContent, type SectionStylesContent } from "../fields/boxStyles";
3
4
  export declare const faqManifest: import("..").DefinedBlockManifest<import("..").BlockContentShapeInput<{
4
5
  readonly id: "block.faq";
5
6
  readonly title: "FAQ";
@@ -30783,7 +30784,22 @@ export declare const faqManifest: import("..").DefinedBlockManifest<import("..")
30783
30784
  id: "_cardStyles";
30784
30785
  readonly __boxStyleType?: "card" | undefined;
30785
30786
  }];
30786
- readonly layout: import("..").NodeDefinition;
30787
+ readonly layout: NodeDefinition;
30788
+ readonly variants: {
30789
+ readonly default: NodeDefinition;
30790
+ readonly "two-column": NodeDefinition;
30791
+ };
30792
+ readonly defaultVariant: "default";
30793
+ readonly variantOptions: {
30794
+ readonly default: {
30795
+ readonly label: "Default";
30796
+ readonly description: "A centered heading above one FAQ accordion.";
30797
+ };
30798
+ readonly "two-column": {
30799
+ readonly label: "Two column";
30800
+ readonly description: "A left heading column with FAQ items on the right.";
30801
+ };
30802
+ };
30787
30803
  readonly description: "Accordion of frequently asked questions and answers.";
30788
30804
  readonly tags: readonly ["faq", "questions", "answers", "help", "support", "accordion", "q&a"];
30789
30805
  readonly icon: "HelpCircle";
@@ -30793,10 +30809,12 @@ export type FaqItem = {
30793
30809
  answer: unknown;
30794
30810
  };
30795
30811
  export type FaqContent = {
30812
+ variant?: "default" | "two-column" | null;
30796
30813
  eyebrow?: string | null;
30797
30814
  title?: string | null;
30798
30815
  description?: unknown;
30799
30816
  items?: FaqItem[] | null;
30817
+ _sectionStyles?: SectionStylesContent;
30800
30818
  _containerStyles?: ContainerStylesContent;
30801
30819
  _cardStyles?: CardStylesContent;
30802
30820
  };
@@ -0,0 +1,25 @@
1
+ import type { Media } from "../../lib/media";
2
+ import type { TipTapNode } from "../manifest/richTextSchema";
3
+ import type { SystemBlockDefinition } from "../registry";
4
+ import { type BlockConfig, type BlockContentShapeInput, type DefinedBlockManifest } from "../defineBlock";
5
+ import { type StandardAspectRatio } from "../fields/aspectRatio";
6
+ import { type BlockCtaContent } from "../fields/ctas";
7
+ type FeatureCardsVariant = "cards";
8
+ type FeatureCardsColumns = "2" | "3" | "4";
9
+ export declare const featureCardsManifest: DefinedBlockManifest<BlockContentShapeInput<BlockConfig>>;
10
+ export type FeatureCard = {
11
+ media?: Media | null;
12
+ aspectRatio?: StandardAspectRatio | null;
13
+ title: string;
14
+ body?: TipTapNode | null;
15
+ ctas?: BlockCtaContent[] | null;
16
+ };
17
+ export type FeatureCardsContent = {
18
+ variant?: FeatureCardsVariant | null;
19
+ title?: string | null;
20
+ description?: TipTapNode | null;
21
+ columns?: FeatureCardsColumns | null;
22
+ cards?: FeatureCard[] | null;
23
+ };
24
+ export declare const featureCardsBlockDefinition: SystemBlockDefinition<FeatureCardsContent>;
25
+ export {};
@@ -17,6 +17,7 @@ export type { SystemBlockKind } from "../constants/blockKinds";
17
17
  export declare function ensureSystemBlockDefinitionsRegistered(): void;
18
18
  export declare function resetSystemBlockDefinitionRegistration(): void;
19
19
  export * from "./hero";
20
+ export * from "./intro";
20
21
  export * from "./body-text";
21
22
  export * from "./location-map";
22
23
  export * from "./blog-post";
@@ -30,6 +31,7 @@ export * from "./site-footer";
30
31
  export * from "./testimonials";
31
32
  export * from "./columns";
32
33
  export * from "./collection";
34
+ export * from "./feature-cards";
33
35
  export * from "./media-text";
34
36
  export * from "./appointment-booking";
35
37
  export * from "./event-registration";
@@ -0,0 +1,24 @@
1
+ import type { Media } from "../../lib/media";
2
+ import type { TipTapNode } from "../manifest/richTextSchema";
3
+ import type { SystemBlockDefinition } from "../registry";
4
+ import type { SemanticSpacing } from "../spacing";
5
+ import { type BlockConfig, type BlockContentShapeInput, type DefinedBlockManifest } from "../defineBlock";
6
+ import { type StandardAspectRatio } from "../fields/aspectRatio";
7
+ import { type BlockCtaContent } from "../fields/ctas";
8
+ import { type ImageColSize } from "../fields/imageLayout";
9
+ export type IntroVariant = "centered-copy" | "statement-copy" | "statement-media" | "media-copy";
10
+ type IntroImagePosition = "left" | "right";
11
+ export declare const introManifest: DefinedBlockManifest<BlockContentShapeInput<BlockConfig>>;
12
+ export type IntroContent = {
13
+ variant?: IntroVariant | null;
14
+ title?: string | null;
15
+ body: TipTapNode;
16
+ media?: Media | null;
17
+ imagePosition?: IntroImagePosition | null;
18
+ gap?: SemanticSpacing | null;
19
+ ratio?: ImageColSize | null;
20
+ aspectRatio?: StandardAspectRatio | null;
21
+ ctas?: BlockCtaContent[] | null;
22
+ };
23
+ export declare const introBlockDefinition: SystemBlockDefinition<IntroContent>;
24
+ export {};
@@ -3,10 +3,10 @@ import type { TipTapNode } from "../manifest/richTextSchema";
3
3
  import type { SystemBlockDefinition } from "../registry";
4
4
  import type { SemanticSpacing } from "../spacing";
5
5
  import { type ContentFrameIntent } from "../frame/frameStyles";
6
+ import { type StandardAspectRatio } from "../fields/aspectRatio";
6
7
  import { type ImageColSize } from "../fields/imageLayout";
7
8
  type MediaTextAlignment = "left" | "center";
8
9
  type MediaTextImagePosition = "left" | "right";
9
- type MediaTextAspectRatio = "auto" | "16/9" | "4/3" | "1/1" | "3/4";
10
10
  export declare const mediaTextFrameCapability: readonly ["plain", "panel", "flush-panel"];
11
11
  export declare const mediaTextManifest: import("..").DefinedBlockManifest<import("..").BlockContentShapeInput<{
12
12
  readonly description: "Two columns: media/carousel + rich text (with optional section title).";
@@ -2347,38 +2347,7 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
2347
2347
  } | undefined;
2348
2348
  readonly activeTabField?: string | undefined;
2349
2349
  readonly tabs: import("..").TabDefinition[];
2350
- }, ...import("../../../../block-form/src/backend/index").FieldDefinition[], {
2351
- readonly id: "aspectRatio";
2352
- readonly type: "select";
2353
- readonly label: "Media aspect ratio";
2354
- readonly description: "Crop media to a consistent aspect ratio.";
2355
- readonly required: false;
2356
- readonly defaultValue: "auto";
2357
- readonly multiple: false;
2358
- readonly options: [{
2359
- readonly value: "auto";
2360
- readonly label: "Auto (original)";
2361
- }, {
2362
- readonly value: "16/9";
2363
- readonly label: "16:9 (Landscape)";
2364
- }, {
2365
- readonly value: "4/3";
2366
- readonly label: "4:3 (Standard)";
2367
- }, {
2368
- readonly value: "1/1";
2369
- readonly label: "1:1 (Square)";
2370
- }, {
2371
- readonly value: "3/4";
2372
- readonly label: "3:4 (Portrait)";
2373
- }];
2374
- readonly ui: {
2375
- readonly intent: "display";
2376
- readonly visibleWhen: {
2377
- readonly field: "images";
2378
- readonly notEquals: null;
2379
- };
2380
- };
2381
- }, {
2350
+ }, ...import("../../../../block-form/src/backend/index").FieldDefinition[], import("../../../../block-form/src/backend/index").FieldDefinition, {
2382
2351
  readonly id: "text";
2383
2352
  readonly type: "richText";
2384
2353
  readonly label: "Text";
@@ -2508,7 +2477,7 @@ export type MediaTextContent = {
2508
2477
  imagePosition?: MediaTextImagePosition | null;
2509
2478
  gap?: SemanticSpacing | null;
2510
2479
  ratio?: ImageColSize | null;
2511
- aspectRatio?: MediaTextAspectRatio | null;
2480
+ aspectRatio?: StandardAspectRatio | null;
2512
2481
  images?: Array<{
2513
2482
  image: Media | null;
2514
2483
  }> | null;