@riverbankcms/sdk 0.60.16 → 0.62.2

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 (167) hide show
  1. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +41 -1
  2. package/dist/_dts/api/src/bookingRecords.d.ts +100 -3
  3. package/dist/_dts/api/src/bookings.d.ts +2 -1
  4. package/dist/_dts/api/src/endpoints.d.ts +96 -0
  5. package/dist/_dts/api/src/index.d.ts +5 -1
  6. package/dist/_dts/api/src/participantMessaging.d.ts +113 -0
  7. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +51 -47
  8. package/dist/_dts/api/src/types.d.ts +1 -0
  9. package/dist/_dts/blocks/src/index.d.ts +66 -62
  10. package/dist/_dts/blocks/src/lib/media.d.ts +60 -0
  11. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +2 -2
  12. package/dist/_dts/blocks/src/system/blocks/audio-player.d.ts +2 -2
  13. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +2 -2
  14. package/dist/_dts/blocks/src/system/blocks/blog-post.d.ts +0 -21
  15. package/dist/_dts/blocks/src/system/blocks/body-text.d.ts +2 -6
  16. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +2 -2
  17. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +2 -2
  18. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +0 -10
  19. package/dist/_dts/blocks/src/system/blocks/columns.d.ts +0 -10
  20. package/dist/_dts/blocks/src/system/blocks/course-details.d.ts +0 -20
  21. package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +0 -20
  22. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +15 -15
  23. package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +5 -10
  24. package/dist/_dts/blocks/src/system/blocks/embed.d.ts +0 -11
  25. package/dist/_dts/blocks/src/system/blocks/event-details.d.ts +0 -20
  26. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +0 -20
  27. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +43 -27
  28. package/dist/_dts/blocks/src/system/blocks/events/event-listing.d.ts +24 -15
  29. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -2
  30. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +132 -12
  31. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +3 -2
  32. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +2 -10
  33. package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +2 -2
  34. package/dist/_dts/blocks/src/system/blocks/form.d.ts +2 -24
  35. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +2 -2
  36. package/dist/_dts/blocks/src/system/blocks/hero.d.ts +2 -3
  37. package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +2 -2
  38. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +0 -13
  39. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +17 -17
  40. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +2 -10
  41. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +2 -2
  42. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +2 -2
  43. package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +9 -9
  44. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -2
  45. package/dist/_dts/blocks/src/system/blocks/single-button.d.ts +16 -15
  46. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +2 -6
  47. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +0 -11
  48. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -3
  49. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +2 -2
  50. package/dist/_dts/blocks/src/system/blocks/video-grid.d.ts +2 -2
  51. package/dist/_dts/blocks/src/system/constants/events.d.ts +18 -0
  52. package/dist/_dts/blocks/src/system/customize/facets.d.ts +105 -0
  53. package/dist/_dts/blocks/src/system/defineBlock.d.ts +29 -5
  54. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
  55. package/dist/_dts/blocks/src/system/fragments/library/blogFeaturedPost.d.ts +0 -24
  56. package/dist/_dts/blocks/src/system/fragments/library/bodyCopy.d.ts +0 -4
  57. package/dist/_dts/blocks/src/system/fragments/library/bookingForm.d.ts +0 -4
  58. package/dist/_dts/blocks/src/system/fragments/library/card.d.ts +0 -6
  59. package/dist/_dts/blocks/src/system/fragments/library/columnContent.d.ts +0 -6
  60. package/dist/_dts/blocks/src/system/fragments/library/ctaCopy.d.ts +0 -4
  61. package/dist/_dts/blocks/src/system/fragments/library/ctaRow.d.ts +0 -4
  62. package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +0 -4
  63. package/dist/_dts/blocks/src/system/fragments/library/faqHeading.d.ts +0 -4
  64. package/dist/_dts/blocks/src/system/fragments/library/feedbackCallout.d.ts +0 -6
  65. package/dist/_dts/blocks/src/system/fragments/library/footerBottomText.d.ts +0 -4
  66. package/dist/_dts/blocks/src/system/fragments/library/formCopy.d.ts +0 -4
  67. package/dist/_dts/blocks/src/system/fragments/library/formEmbed.d.ts +0 -18
  68. package/dist/_dts/blocks/src/system/fragments/library/headerCta.d.ts +0 -4
  69. package/dist/_dts/blocks/src/system/fragments/library/heading.d.ts +0 -6
  70. package/dist/_dts/blocks/src/system/fragments/library/heroCopy.d.ts +0 -4
  71. package/dist/_dts/blocks/src/system/fragments/library/heroCtaRow.d.ts +0 -4
  72. package/dist/_dts/blocks/src/system/fragments/library/heroLayoutControls.d.ts +0 -4
  73. package/dist/_dts/blocks/src/system/fragments/library/image.d.ts +0 -6
  74. package/dist/_dts/blocks/src/system/fragments/library/newsletterCopy.d.ts +0 -4
  75. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +0 -4
  76. package/dist/_dts/blocks/src/system/fragments/library/quote.d.ts +0 -6
  77. package/dist/_dts/blocks/src/system/fragments/library/richText.d.ts +0 -6
  78. package/dist/_dts/blocks/src/system/fragments/library/sectionState.d.ts +0 -6
  79. package/dist/_dts/blocks/src/system/fragments/library/singleButton.d.ts +0 -4
  80. package/dist/_dts/blocks/src/system/fragments/library/spinner.d.ts +0 -5
  81. package/dist/_dts/blocks/src/system/fragments/library/teamMember.d.ts +0 -6
  82. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +0 -31
  83. package/dist/_dts/blocks/src/system/fragments/library/testimonialsHeading.d.ts +0 -4
  84. package/dist/_dts/blocks/src/system/fragments/library/videoEmbed.d.ts +0 -6
  85. package/dist/_dts/blocks/src/system/fragments/types.d.ts +11 -3
  86. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +4 -0
  87. package/dist/_dts/blocks/src/system/index.d.ts +1 -0
  88. package/dist/_dts/blocks/src/system/manifest/derivedContent.d.ts +3 -3
  89. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +10 -10
  90. package/dist/_dts/blocks/src/system/media/constrainedVideoMedia.d.ts +13 -0
  91. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -0
  92. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +4 -0
  94. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +1 -0
  95. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +7 -0
  96. package/dist/_dts/content-model/src/contentManifest.d.ts +2 -2
  97. package/dist/_dts/content-model/src/referenceFields.d.ts +7 -1
  98. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +34 -6
  99. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +2 -0
  100. package/dist/_dts/editor-blocks/src/widgets/entry-picker/EntryPickerWidgetProvider.d.ts +3 -2
  101. package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +2 -1
  102. package/dist/_dts/editor-blocks/src/widgets/entry-picker/types.d.ts +2 -1
  103. package/dist/_dts/editor-blocks/src/widgets/link/LinkPicker.d.ts +2 -1
  104. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidget.d.ts +2 -1
  105. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidgetContext.d.ts +2 -1
  106. package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +2 -1
  107. package/dist/_dts/editor-blocks/src/widgets/link/types.d.ts +3 -2
  108. package/dist/_dts/editor-blocks/src/widgets/reference/dynamicAdapters.d.ts +9 -0
  109. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +5 -1
  110. package/dist/_dts/media-core/src/index.d.ts +1 -0
  111. package/dist/_dts/media-core/src/videoSlotPolicy.d.ts +38 -0
  112. package/dist/_dts/media-editor/src/MediaEditor.d.ts +3 -1
  113. package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +7 -0
  114. package/dist/_dts/preview-next/src/client/blocks/customizeFacetControls.d.ts +9 -0
  115. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +14 -0
  116. package/dist/_dts/preview-next/src/client/layout/PreviewLayoutContext.d.ts +9 -7
  117. package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +6 -3
  118. package/dist/_dts/preview-next/src/client/widgets/widgetAdapters.d.ts +1 -1
  119. package/dist/_dts/sdk/src/contracts/content.d.ts +10 -0
  120. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +1 -1
  121. package/dist/_dts/sdk/src/manifest/prompt/examples/features-grid.d.ts +1 -1
  122. package/dist/_dts/sdk/src/manifest/prompt/examples/pricing.d.ts +5 -5
  123. package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +1 -0
  124. package/dist/_dts/sdk/src/version.d.ts +1 -1
  125. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  126. package/dist/_dts/theme-core/src/index.d.ts +1 -0
  127. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -0
  128. package/dist/_dts/theme-core/src/schema.d.ts +25 -0
  129. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +515 -0
  130. package/dist/_dts/theme-core/src/site-styles/appearancePresetResolution.d.ts +12 -0
  131. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +119 -0
  132. package/dist/_dts/theme-core/src/site-styles/appearancePresets.d.ts +5 -563
  133. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +448 -0
  134. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +6 -0
  135. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +12 -0
  136. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -0
  137. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +8 -0
  138. package/dist/_dts/theme-core/src/site-styles/siteChromeAppearancePresets.d.ts +67 -0
  139. package/dist/_dts/theme-core/src/site-styles/sourceCatalogs.d.ts +6 -6
  140. package/dist/_dts/theme-core/src/site-styles/types.d.ts +22 -3
  141. package/dist/_dts/theme-core/src/siteChrome.d.ts +11 -0
  142. package/dist/cli/index.mjs +4310 -3464
  143. package/dist/client/bookings.mjs +310 -310
  144. package/dist/client/client.mjs +61329 -60359
  145. package/dist/client/hooks.mjs +1254 -731
  146. package/dist/client/rendering/client.mjs +5959 -5226
  147. package/dist/client/rendering/islands.mjs +3842 -3275
  148. package/dist/client/rendering.mjs +7495 -6519
  149. package/dist/preview-next/before-render.mjs +118 -0
  150. package/dist/preview-next/client/runtime.mjs +4489 -2773
  151. package/dist/preview-next/middleware.mjs +136 -0
  152. package/dist/server/components.mjs +1342 -765
  153. package/dist/server/config-validation.mjs +1256 -733
  154. package/dist/server/config.mjs +1256 -733
  155. package/dist/server/data.mjs +1254 -731
  156. package/dist/server/index.mjs +191 -18
  157. package/dist/server/next.mjs +1339 -760
  158. package/dist/server/page-converter.mjs +1088 -734
  159. package/dist/server/prebuild.mjs +1 -1
  160. package/dist/server/rendering/server.mjs +1338 -762
  161. package/dist/server/rendering.mjs +1351 -770
  162. package/dist/server/routing.mjs +1340 -754
  163. package/dist/server/server.mjs +1260 -734
  164. package/dist/server/theme-bridge.mjs +198 -34
  165. package/dist/server/theme.mjs +6 -0
  166. package/dist/styles/index.css +28 -9
  167. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import type { BlockManifest, BlockCategory, FieldDefinition, StyleTokenConfig, BehaviourConfig } from './manifest/schema';
2
2
  import type { NodeDefinition } from './node';
3
- import { type FragmentDefinition } from './fragments';
3
+ import { type FragmentConfigInputOf, type FragmentDefinition } from './fragments';
4
4
  /**
5
5
  * Configuration for defining a block using the defineBlock helper.
6
6
  * Provides smart defaults and handles fragment composition automatically.
@@ -72,12 +72,35 @@ export type BlockConfig = {
72
72
  contentTypes?: readonly string[];
73
73
  };
74
74
  declare const BlockInput: unique symbol;
75
+ type PickConfigProperty<C, K extends keyof BlockConfig> = K extends keyof C ? {
76
+ readonly [P in K]: C[P];
77
+ } : {};
78
+ type FragmentInstanceContentShape<Instance> = Instance extends {
79
+ readonly fragment: infer Fragment;
80
+ } ? Omit<Instance, 'fragment'> & {
81
+ readonly fragment: FragmentConfigInputOf<Fragment> extends never ? Fragment : FragmentConfigInputOf<Fragment>;
82
+ } : Instance;
83
+ type FragmentInstancesContentShape<Fragments> = Fragments extends ReadonlyArray<unknown> ? {
84
+ readonly [Index in keyof Fragments]: FragmentInstanceContentShape<Fragments[Index]>;
85
+ } : Fragments;
86
+ type BlockFragmentsContentShape<C extends BlockConfig> = C extends {
87
+ readonly fragments: infer Fragments;
88
+ } ? {
89
+ readonly fragments: FragmentInstancesContentShape<Fragments>;
90
+ } : {};
91
+ /**
92
+ * The content derivation engine only needs fields, variant keys, and the
93
+ * style-field toggles that create synthetic fields. Keep the manifest phantom
94
+ * to that compact shape so exported block declarations do not have to carry
95
+ * enormous layout/data-loader trees.
96
+ */
97
+ export type BlockContentShapeInput<C extends BlockConfig> = BlockFragmentsContentShape<C> & PickConfigProperty<C, 'additionalFields'> & PickConfigProperty<C, 'variants'> & PickConfigProperty<C, 'includeContainerStyles'> & PickConfigProperty<C, 'skipSectionStyles'>;
75
98
  export type DefinedBlockManifest<C> = BlockManifest & {
76
- readonly [BlockInput]?: C;
99
+ readonly [BlockInput]: C;
77
100
  };
78
101
  export type BlockConfigInputOf<M> = M extends {
79
- readonly [BlockInput]?: infer C;
80
- } ? C extends BlockConfig ? C : never : never;
102
+ readonly [BlockInput]: infer C;
103
+ } ? C : never;
81
104
  /**
82
105
  * Create a block manifest with smart defaults and automatic fragment composition.
83
106
  *
@@ -106,5 +129,6 @@ export type BlockConfigInputOf<M> = M extends {
106
129
  * });
107
130
  * ```
108
131
  */
109
- export declare function createBlockManifest<const C extends BlockConfig>(config: C): DefinedBlockManifest<C>;
132
+ export declare function createBlockManifest<const C extends BlockConfig>(config: C): DefinedBlockManifest<BlockContentShapeInput<C>>;
133
+ export declare function createBlockManifestWithContentShape<const C extends BlockConfig, const Shape>(config: C, _contentShape: Shape): DefinedBlockManifest<Shape>;
110
134
  export {};
@@ -1,5 +1,5 @@
1
1
  import type { ModalFieldDefinition } from '../manifest/schema';
2
- import type { EyebrowTreatment } from '@riverbankcms/theme-core/site-styles';
2
+ import type { EyebrowTreatment, TileTreatment } from '@riverbankcms/theme-core/site-styles';
3
3
  import type { Media } from '../../lib/media';
4
4
  /**
5
5
  * Options for customizing a section styles field.
@@ -81,6 +81,7 @@ export type SectionStylesContent = {
81
81
  } | null;
82
82
  spacing?: string | null;
83
83
  minHeight?: 'none' | 'banner' | 'hero' | 'immersive' | null;
84
+ tileTreatment?: TileTreatment | null;
84
85
  eyebrowTreatment?: EyebrowTreatment | null;
85
86
  } | null;
86
87
  export type CardStylesContent = {
@@ -1,7 +1,4 @@
1
1
  export declare const blogFeaturedPostFragment: import("..").DefinedFragment<{
2
- readonly id: "blogFeaturedPost";
3
- readonly title: "Featured Blog Post";
4
- readonly description: "Featured blog post card with title and preview content.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "title";
7
4
  readonly type: "text";
@@ -21,25 +18,4 @@ export declare const blogFeaturedPostFragment: import("..").DefinedFragment<{
21
18
  readonly intent: "behavior";
22
19
  };
23
20
  }];
24
- readonly layout: readonly [import("../..").NodeDefinition];
25
- readonly data: {
26
- readonly key: "post";
27
- readonly loader: {
28
- readonly endpoint: "getPublishedEntryPreview";
29
- readonly params: {
30
- readonly type: "post";
31
- readonly slug: {
32
- readonly $bind: {
33
- readonly from: "postSlug";
34
- };
35
- };
36
- readonly siteId: {
37
- readonly $bind: {
38
- readonly from: "$root.siteId";
39
- };
40
- };
41
- };
42
- readonly mode: "server";
43
- };
44
- };
45
21
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const bodyCopyFragment: import("..").DefinedFragment<{
2
- readonly id: "bodyCopy";
3
- readonly title: "Body Copy";
4
- readonly description: "Heading, rich text body, and alignment controls.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "heading";
7
4
  readonly type: "text";
@@ -29,5 +26,4 @@ export declare const bodyCopyFragment: import("..").DefinedFragment<{
29
26
  readonly label: "Center";
30
27
  }];
31
28
  }];
32
- readonly layout: import("../..").NodeDefinition;
33
29
  }>;
@@ -8,9 +8,6 @@
8
8
  * - Submit a booking request
9
9
  */
10
10
  export declare const bookingFormFragment: import("..").DefinedFragment<{
11
- readonly id: "bookingForm";
12
- readonly title: "Booking Form";
13
- readonly description: "Interactive form for booking appointments with date/time selection.";
14
11
  readonly fields: readonly [{
15
12
  readonly id: "serviceId";
16
13
  readonly type: "reference";
@@ -46,5 +43,4 @@ export declare const bookingFormFragment: import("..").DefinedFragment<{
46
43
  readonly description: "Message shown after successful booking";
47
44
  readonly defaultValue: "Your appointment has been booked! Check your email for confirmation.";
48
45
  }];
49
- readonly layout: readonly [import("../..").NodeDefinition];
50
46
  }>;
@@ -16,11 +16,6 @@
16
16
  * This CSS-first approach eliminates runtime transforms for styling.
17
17
  */
18
18
  export declare const cardFragment: import("..").DefinedFragment<{
19
- readonly id: "card";
20
- readonly title: "Card";
21
- readonly description: "Content card with optional media, title, body, and action buttons";
22
- readonly category: "content";
23
- readonly icon: "LayoutCard";
24
19
  readonly fields: readonly [{
25
20
  readonly id: "media";
26
21
  readonly type: "media";
@@ -30812,5 +30807,4 @@ export declare const cardFragment: import("..").DefinedFragment<{
30812
30807
  readonly intent: "style";
30813
30808
  };
30814
30809
  }];
30815
- readonly layout: import("../..").NodeDefinition;
30816
30810
  }>;
@@ -3,11 +3,5 @@
3
3
  * Each column can contain a flexible stack of images, headings, and rich text.
4
4
  */
5
5
  export declare const columnContentFragment: import("..").DefinedFragment<{
6
- readonly id: "columnContent";
7
- readonly title: "Column";
8
- readonly description: "A single column with customizable content";
9
- readonly category: "layout";
10
- readonly icon: "RectangleVertical";
11
6
  readonly fields: readonly [import("../..").RepeaterFieldDefinition];
12
- readonly layout: import("../..").NodeDefinition;
13
7
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const ctaCopyFragment: import("..").DefinedFragment<{
2
- readonly id: "ctaCopy";
3
- readonly title: "CTA Copy";
4
- readonly description: "Eyebrow, title, and supporting rich text for CTA layouts.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "eyebrow";
7
4
  readonly type: "text";
@@ -20,5 +17,4 @@ export declare const ctaCopyFragment: import("..").DefinedFragment<{
20
17
  readonly label: "Copy";
21
18
  readonly description: "Short paragraph of supporting copy.";
22
19
  }];
23
- readonly layout: readonly [import("../..").NodeDefinition, import("../..").NodeDefinition];
24
20
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const ctaRowFragment: import("..").DefinedFragment<{
2
- readonly id: "ctaRow";
3
- readonly title: "CTA Row";
4
- readonly description: "Repeatable calls to action rendered inline.";
5
2
  readonly fields: readonly [Omit<{
6
3
  id: string;
7
4
  label: string;
@@ -30727,5 +30724,4 @@ export declare const ctaRowFragment: import("..").DefinedFragment<{
30727
30724
  }>];
30728
30725
  };
30729
30726
  }];
30730
- readonly layout: readonly [import("../..").NodeDefinition];
30731
30727
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const faqAccordionFragment: import("..").DefinedFragment<{
2
- readonly id: "faqAccordion";
3
- readonly title: "FAQ Accordion";
4
- readonly description: "Expandable list of question and answer pairs.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "items";
7
4
  readonly type: "repeater";
@@ -28,5 +25,4 @@ export declare const faqAccordionFragment: import("..").DefinedFragment<{
28
25
  }];
29
26
  };
30
27
  }];
31
- readonly layout: import("../..").NodeDefinition;
32
28
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const faqHeadingFragment: import("..").DefinedFragment<{
2
- readonly id: "faqHeading";
3
- readonly title: "FAQ Heading";
4
- readonly description: "Optional eyebrow, title, and description for FAQ sections.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "eyebrow";
7
4
  readonly type: "text";
@@ -24,5 +21,4 @@ export declare const faqHeadingFragment: import("..").DefinedFragment<{
24
21
  readonly variant: "limited";
25
22
  };
26
23
  }];
27
- readonly layout: import("../..").NodeDefinition;
28
24
  }>;
@@ -1,9 +1,4 @@
1
1
  export declare const feedbackCalloutFragment: import("..").DefinedFragment<{
2
- readonly id: "feedbackCallout";
3
- readonly title: "Feedback Callout";
4
- readonly description: "Static authored callout for info, success, warning, and error messaging. For live validation or status updates, use runtime feedback primitives instead.";
5
- readonly category: "content";
6
- readonly icon: "MessageSquare";
7
2
  readonly fields: readonly [{
8
3
  readonly id: "tone";
9
4
  readonly type: "select";
@@ -30781,5 +30776,4 @@ export declare const feedbackCalloutFragment: import("..").DefinedFragment<{
30781
30776
  }>];
30782
30777
  };
30783
30778
  }];
30784
- readonly layout: readonly [import("../..").NodeDefinition];
30785
30779
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const footerBottomTextFragment: import("..").DefinedFragment<{
2
- readonly id: "footerBottomText";
3
- readonly title: "Footer Text";
4
- readonly description: "Rich text content for the main footer body and optional bottom bar.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "bodyText";
7
4
  readonly type: "richText";
@@ -19,5 +16,4 @@ export declare const footerBottomTextFragment: import("..").DefinedFragment<{
19
16
  readonly variant: "limited";
20
17
  };
21
18
  }];
22
- readonly layout: readonly [import("../..").NodeDefinition, import("../..").NodeDefinition];
23
19
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const formCopyFragment: import("..").DefinedFragment<{
2
- readonly id: "formCopy";
3
- readonly title: "Form Copy";
4
- readonly description: "Optional title and introduction content for form blocks.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "title";
7
4
  readonly type: "text";
@@ -12,5 +9,4 @@ export declare const formCopyFragment: import("..").DefinedFragment<{
12
9
  readonly label: "Intro";
13
10
  readonly description: "Optional introduction above the form.";
14
11
  }];
15
- readonly layout: readonly [import("../..").NodeDefinition, import("../..").NodeDefinition];
16
12
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const formEmbedFragment: import("..").DefinedFragment<{
2
- readonly id: "formEmbed";
3
- readonly title: "Form Embed";
4
- readonly description: "Embeds a saved form with configurable submit button copy.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "formSlug";
7
4
  readonly type: "reference";
@@ -24,19 +21,4 @@ export declare const formEmbedFragment: import("..").DefinedFragment<{
24
21
  readonly label: "Success message";
25
22
  readonly description: "Shown after successful submit (handled by page or block).";
26
23
  }];
27
- readonly layout: readonly [import("../..").NodeDefinition];
28
- readonly data: {
29
- readonly key: "form";
30
- readonly loader: {
31
- readonly endpoint: "getPublicFormById";
32
- readonly params: {
33
- readonly formSlug: {
34
- readonly $bind: {
35
- readonly from: "formSlug";
36
- };
37
- };
38
- };
39
- readonly mode: "server";
40
- };
41
- };
42
24
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const headerCtaFragment: import("..").DefinedFragment<{
2
- readonly id: "headerCta";
3
- readonly title: "Header CTA";
4
- readonly description: "Single call-to-action button for the site header.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "cta";
7
4
  readonly type: "group";
@@ -36,5 +33,4 @@ export declare const headerCtaFragment: import("..").DefinedFragment<{
36
33
  }];
37
34
  };
38
35
  }];
39
- readonly layout: readonly [import("../..").NodeDefinition];
40
36
  }>;
@@ -2,11 +2,6 @@
2
2
  * Heading fragment - simple text heading with configurable level
3
3
  */
4
4
  export declare const headingFragment: import("..").DefinedFragment<{
5
- readonly id: "heading";
6
- readonly title: "Heading";
7
- readonly description: "Text heading";
8
- readonly category: "content";
9
- readonly icon: "Heading";
10
5
  readonly fields: readonly [{
11
6
  readonly id: "text";
12
7
  readonly type: "text";
@@ -32,5 +27,4 @@ export declare const headingFragment: import("..").DefinedFragment<{
32
27
  readonly label: "H3 (Small)";
33
28
  }];
34
29
  }];
35
- readonly layout: import("../..").NodeDefinition;
36
30
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const heroCopyFragment: import("..").DefinedFragment<{
2
- readonly id: "heroCopy";
3
- readonly title: "Hero Copy";
4
- readonly description: "Eyebrow, headline, and subheadline copy for hero layouts.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "eyebrow";
7
4
  readonly type: "text";
@@ -21,5 +18,4 @@ export declare const heroCopyFragment: import("..").DefinedFragment<{
21
18
  readonly multiline: true;
22
19
  readonly maxLength: 600;
23
20
  }];
24
- readonly layout: readonly [import("../..").NodeDefinition, import("../..").NodeDefinition, import("../..").NodeDefinition];
25
21
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const heroCtaRowFragment: import("..").DefinedFragment<{
2
- readonly id: "heroCtaRow";
3
- readonly title: "Hero CTAs";
4
- readonly description: "Repeatable hero calls to action rendered inline.";
5
2
  readonly fields: readonly [Omit<{
6
3
  id: string;
7
4
  label: string;
@@ -30744,5 +30741,4 @@ export declare const heroCtaRowFragment: import("..").DefinedFragment<{
30744
30741
  }>];
30745
30742
  };
30746
30743
  }];
30747
- readonly layout: readonly [import("../..").NodeDefinition];
30748
30744
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const heroLayoutControlsFragment: import("..").DefinedFragment<{
2
- readonly id: "heroLayoutControls";
3
- readonly title: "Hero Layout";
4
- readonly description: "Alignment and content width controls for hero layouts.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "contentAlignment";
7
4
  readonly type: "select";
@@ -63,5 +60,4 @@ export declare const heroLayoutControlsFragment: import("..").DefinedFragment<{
63
60
  readonly label: "Wide";
64
61
  }];
65
62
  }];
66
- readonly layout: readonly [];
67
63
  }>;
@@ -2,11 +2,6 @@
2
2
  * Image fragment - single image with optional caption and aspect ratio control
3
3
  */
4
4
  export declare const imageFragment: import("..").DefinedFragment<{
5
- readonly id: "image";
6
- readonly title: "Image";
7
- readonly description: "Image with optional caption";
8
- readonly category: "content";
9
- readonly icon: "Image";
10
5
  readonly fields: readonly [{
11
6
  readonly id: "image";
12
7
  readonly type: "media";
@@ -44,5 +39,4 @@ export declare const imageFragment: import("..").DefinedFragment<{
44
39
  readonly label: "3:4 (Portrait)";
45
40
  }];
46
41
  }];
47
- readonly layout: import("../..").NodeDefinition;
48
42
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const newsletterCopyFragment: import("..").DefinedFragment<{
2
- readonly id: "newsletterCopy";
3
- readonly title: "Newsletter Copy";
4
- readonly description: "Optional title and description for newsletter signup blocks.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "title";
7
4
  readonly type: "text";
@@ -13,5 +10,4 @@ export declare const newsletterCopyFragment: import("..").DefinedFragment<{
13
10
  readonly label: "Subtitle";
14
11
  readonly description: "Optional description below the title.";
15
12
  }];
16
- readonly layout: readonly [import("../..").NodeDefinition, import("../..").NodeDefinition];
17
13
  }>;
@@ -5,9 +5,6 @@
5
5
  * The form is rendered by the `newsletter-form` node component.
6
6
  */
7
7
  export declare const newsletterFormFragment: import("..").DefinedFragment<{
8
- readonly id: "newsletterForm";
9
- readonly title: "Newsletter Form";
10
- readonly description: "Newsletter subscription form with preset field configurations.";
11
8
  readonly fields: readonly [{
12
9
  readonly id: "listId";
13
10
  readonly type: "reference";
@@ -72,5 +69,4 @@ export declare const newsletterFormFragment: import("..").DefinedFragment<{
72
69
  readonly label: "Tags (optional)";
73
70
  readonly description: "Optional tags to apply on subscribe (comma or semicolon separated).";
74
71
  }];
75
- readonly layout: readonly [import("../..").NodeDefinition];
76
72
  }>;
@@ -3,11 +3,6 @@
3
3
  * Useful in split layouts (for example quote + image columns).
4
4
  */
5
5
  export declare const quoteFragment: import("..").DefinedFragment<{
6
- readonly id: "quote";
7
- readonly title: "Quote";
8
- readonly description: "Quoted text with optional attribution";
9
- readonly category: "content";
10
- readonly icon: "MessageSquareQuote";
11
6
  readonly fields: readonly [{
12
7
  readonly id: "quote";
13
8
  readonly type: "richText";
@@ -26,5 +21,4 @@ export declare const quoteFragment: import("..").DefinedFragment<{
26
21
  readonly description: "Role, business name, or other context";
27
22
  readonly maxLength: 160;
28
23
  }];
29
- readonly layout: import("../..").NodeDefinition;
30
24
  }>;
@@ -2,16 +2,10 @@
2
2
  * Rich text fragment - formatted text content
3
3
  */
4
4
  export declare const richTextFragment: import("..").DefinedFragment<{
5
- readonly id: "richText";
6
- readonly title: "Rich Text";
7
- readonly description: "Formatted text with markdown";
8
- readonly category: "content";
9
- readonly icon: "FileText";
10
5
  readonly fields: readonly [{
11
6
  readonly id: "content";
12
7
  readonly type: "richText";
13
8
  readonly label: "Content";
14
9
  readonly required: true;
15
10
  }];
16
- readonly layout: import("../..").NodeDefinition;
17
11
  }>;
@@ -1,9 +1,4 @@
1
1
  export declare const sectionStateFragment: import("..").DefinedFragment<{
2
- readonly id: "sectionState";
3
- readonly title: "Section State";
4
- readonly description: "Narrow authored section helper for empty, unavailable, coming-soon, and no-results states. This is for static page messaging, not live workflow status.";
5
- readonly category: "content";
6
- readonly icon: "PanelTopInactive";
7
2
  readonly fields: readonly [{
8
3
  readonly id: "kind";
9
4
  readonly type: "select";
@@ -30772,5 +30767,4 @@ export declare const sectionStateFragment: import("..").DefinedFragment<{
30772
30767
  }>];
30773
30768
  };
30774
30769
  }];
30775
- readonly layout: readonly [import("../..").NodeDefinition];
30776
30770
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const singleButtonFragment: import("..").DefinedFragment<{
2
- readonly id: "singleButton";
3
- readonly title: "Single Button Content";
4
- readonly description: "Heading and primary button for the single button block.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "title";
7
4
  readonly type: "text";
@@ -14,5 +11,4 @@ export declare const singleButtonFragment: import("..").DefinedFragment<{
14
11
  readonly groupLabel: "Button";
15
12
  readonly flattenInRepeater: false;
16
13
  }>];
17
- readonly layout: readonly [import("../..").NodeDefinition, import("../..").NodeDefinition];
18
14
  }>;
@@ -1,8 +1,4 @@
1
1
  export declare const spinnerFragment: import("..").DefinedFragment<{
2
- readonly id: "spinner";
3
- readonly title: "Spinner";
4
- readonly description: "Loading indicator";
5
- readonly category: "interactive";
6
2
  readonly fields: readonly [{
7
3
  readonly id: "size";
8
4
  readonly type: "select";
@@ -49,5 +45,4 @@ export declare const spinnerFragment: import("..").DefinedFragment<{
49
45
  readonly required: false;
50
46
  readonly maxLength: 80;
51
47
  }];
52
- readonly layout: import("../..").NodeDefinition;
53
48
  }>;
@@ -1,9 +1,4 @@
1
1
  export declare const teamMemberFragment: import("..").DefinedFragment<{
2
- readonly id: "teamMember";
3
- readonly title: "Team member";
4
- readonly description: "Team member with photo, name, role, and bio.";
5
- readonly category: "content";
6
- readonly icon: "User";
7
2
  readonly fields: readonly [{
8
3
  readonly id: "photo";
9
4
  readonly type: "media";
@@ -31,5 +26,4 @@ export declare const teamMemberFragment: import("..").DefinedFragment<{
31
26
  readonly variant: "limited";
32
27
  };
33
28
  }];
34
- readonly layout: import("../..").NodeDefinition;
35
29
  }>;
@@ -28,9 +28,6 @@ export declare function buildGridLayout(): NodeDefinition;
28
28
  * functions combined with the variant system via createBlockManifest().
29
29
  */
30
30
  export declare const testimonialsCarouselFragment: import("..").DefinedFragment<{
31
- readonly id: "testimonialsCarousel";
32
- readonly title: "Testimonials";
33
- readonly description: "Testimonials layout with variant support (carousel, grid).";
34
31
  readonly fields: readonly [{
35
32
  readonly id: "slidesToShow";
36
33
  readonly type: "select";
@@ -210,32 +207,4 @@ export declare const testimonialsCarouselFragment: import("..").DefinedFragment<
210
207
  readonly label: "9 testimonials";
211
208
  }];
212
209
  }];
213
- readonly layout: readonly [];
214
- readonly data: {
215
- readonly key: "entries";
216
- readonly loader: {
217
- readonly endpoint: "listPublishedEntries";
218
- readonly params: {
219
- readonly type: "testimonial";
220
- readonly siteId: {
221
- readonly $bind: {
222
- readonly from: "$root.siteId";
223
- };
224
- };
225
- readonly limit: {
226
- readonly $bind: {
227
- readonly from: "maxEntries";
228
- readonly fallback: "6";
229
- };
230
- };
231
- readonly stage: {
232
- readonly $bind: {
233
- readonly from: "$root.previewStage";
234
- readonly fallback: "published";
235
- };
236
- };
237
- };
238
- readonly mode: "server";
239
- };
240
- };
241
210
  }>;
@@ -1,7 +1,4 @@
1
1
  export declare const testimonialsHeadingFragment: import("..").DefinedFragment<{
2
- readonly id: "testimonialsHeading";
3
- readonly title: "Testimonials Heading";
4
- readonly description: "Heading and subheading copy for testimonials section.";
5
2
  readonly fields: readonly [{
6
3
  readonly id: "heading";
7
4
  readonly type: "text";
@@ -14,5 +11,4 @@ export declare const testimonialsHeadingFragment: import("..").DefinedFragment<{
14
11
  readonly multiline: true;
15
12
  readonly description: "Optional supporting copy shown below the heading.";
16
13
  }];
17
- readonly layout: readonly [import("../..").NodeDefinition];
18
14
  }>;
@@ -2,11 +2,6 @@
2
2
  * Video embed fragment - YouTube/Vimeo/Instagram embed with optional caption
3
3
  */
4
4
  export declare const videoEmbedFragment: import("..").DefinedFragment<{
5
- readonly id: "videoEmbed";
6
- readonly title: "Video";
7
- readonly description: "YouTube, Vimeo, or Instagram embed";
8
- readonly category: "media";
9
- readonly icon: "Video";
10
5
  readonly fields: readonly [{
11
6
  readonly id: "url";
12
7
  readonly type: "url";
@@ -41,5 +36,4 @@ export declare const videoEmbedFragment: import("..").DefinedFragment<{
41
36
  readonly label: "21:9 (Ultrawide)";
42
37
  }];
43
38
  }];
44
- readonly layout: import("../..").NodeDefinition;
45
39
  }>;
@@ -30,16 +30,24 @@ export type FragmentDefinition = Omit<FragmentConfig, "fields" | "layout" | "dat
30
30
  data?: FragmentDataConfig;
31
31
  };
32
32
  declare const FragmentInput: unique symbol;
33
+ type PickFragmentProperty<C, K extends keyof FragmentConfig> = K extends keyof C ? {
34
+ readonly [P in K]: C[P];
35
+ } : {};
36
+ /**
37
+ * Content derivation needs only a fragment's declared fields. Layout and data
38
+ * loader details stay runtime-only, keeping block manifest phantoms compact.
39
+ */
40
+ export type FragmentContentShapeInput<C extends FragmentConfig> = PickFragmentProperty<C, "fields">;
33
41
  export type DefinedFragment<C> = FragmentDefinition & {
34
- readonly [FragmentInput]?: C;
42
+ readonly [FragmentInput]: C;
35
43
  };
36
44
  export type FragmentConfigInputOf<F> = F extends {
37
- readonly [FragmentInput]?: infer C;
45
+ readonly [FragmentInput]: infer C;
38
46
  } ? C : never;
39
47
  export declare class FragmentConfigError extends Error {
40
48
  constructor(message: string);
41
49
  }
42
- export declare function defineFragment<const C extends FragmentConfig>(config: C): DefinedFragment<C>;
50
+ export declare function defineFragment<const C extends FragmentConfig>(config: C): DefinedFragment<FragmentContentShapeInput<C>>;
43
51
  export declare function scopeFragmentFields(fragment: FragmentDefinition, scope: string): FieldDefinition[];
44
52
  export declare function scopeFragmentLayout(fragment: FragmentDefinition, scope: string): NodeDefinition[];
45
53
  export {};
@@ -72,6 +72,10 @@ export type ResolvedBackground = {
72
72
  width?: number;
73
73
  /** Original height */
74
74
  height?: number;
75
+ /** Poster URL for decorative video fallbacks */
76
+ poster?: string;
77
+ /** Poster URL to render as the mobile-only fallback layer */
78
+ mobileFallbackPoster?: string;
75
79
  } | null;
76
80
  /** Inline styles for the image/video element */
77
81
  imageStyle: React.CSSProperties;