@riverbankcms/sdk 0.111.0 → 0.119.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 (196) hide show
  1. package/dist/{PreviewEditorSidebar-CTR6LUhN.mjs → PreviewEditorSidebar-C7TXFitV.mjs} +4 -4
  2. package/dist/{PreviewEditorUI-DZg15Zip.mjs → PreviewEditorUI-_1JIHTXS.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-kkmjklLG.mjs → PreviewQueryProvider-nKUT4TL-.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-DeOTAFvR.mjs → SdkPreviewModeRuntime-CvJTVgWa.mjs} +2579 -34325
  5. package/dist/{SiteChromeCustomizeContext-DOSDLCiJ.mjs → SiteChromeCustomizeContext-66QfCbAS.mjs} +64625 -32791
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +5211 -639
  7. package/dist/_dts/ai/src/designer/themePatch.d.ts +1 -1
  8. package/dist/_dts/api/src/bookingAdjustments.d.ts +30 -36
  9. package/dist/_dts/api/src/bookingConfig.d.ts +26 -1
  10. package/dist/_dts/api/src/bookingRecords.d.ts +6 -74
  11. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +3 -3
  12. package/dist/_dts/api/src/contentRuntime.d.ts +5 -1
  13. package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +4 -4
  14. package/dist/_dts/api/src/endpoints.d.ts +35 -0
  15. package/dist/_dts/api/src/event-presentation.d.ts +4 -0
  16. package/dist/_dts/api/src/index.d.ts +4 -4
  17. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +4 -1
  18. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +2 -2
  19. package/dist/_dts/api/src/sdk-event-upsert.d.ts +2 -2
  20. package/dist/_dts/api/src/sdkContracts.d.ts +85 -7
  21. package/dist/_dts/api/src/siteBanner.d.ts +8 -8
  22. package/dist/_dts/api/src/siteOperations.d.ts +1 -1
  23. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +32 -4
  24. package/dist/_dts/block-form/src/widgets/RichTextField/richTextFieldDefaults.d.ts +3 -12
  25. package/dist/_dts/block-form/src/widgets/RichTextField/richTextFieldSchema.d.ts +1 -5
  26. package/dist/_dts/blocks/src/bindings/index.d.ts +1 -10
  27. package/dist/_dts/blocks/src/index.d.ts +3 -6
  28. package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +2 -2
  29. package/dist/_dts/blocks/src/system/blocks/body-text.d.ts +2 -2
  30. package/dist/_dts/blocks/src/system/blocks/events/recurring-schedule.d.ts +2 -2
  31. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +2 -8
  32. package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +2 -2
  33. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +3 -3
  34. package/dist/_dts/blocks/src/system/blocks/form.d.ts +2 -15
  35. package/dist/_dts/blocks/src/system/blocks/intro.d.ts +2 -2
  36. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +66 -66
  37. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +2 -16
  38. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +0 -3
  39. package/dist/_dts/blocks/src/system/fragments/index.d.ts +0 -1
  40. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +19 -2
  41. package/dist/_dts/blocks/src/system/manifest/richTextSchema.d.ts +8 -70
  42. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +1 -0
  43. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +6 -0
  44. package/dist/_dts/blocks/src/system/node/schema.d.ts +4 -4
  45. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +1 -10
  46. package/dist/_dts/blocks/src/system/runtime/nodes/buttonAffordance.d.ts +5 -21
  47. package/dist/_dts/blocks/src/system/runtime/nodes/richText-coerce.d.ts +14 -2
  48. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  49. package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +1 -1
  50. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +17 -1
  51. package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +1 -1
  52. package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +1 -1
  53. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -2
  54. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +2 -2
  55. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +1 -1
  56. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +1 -1
  57. package/dist/_dts/content-model/src/content-types/builtins.d.ts +3 -15
  58. package/dist/_dts/content-model/src/content-types/entryValidation.d.ts +2 -0
  59. package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
  60. package/dist/_dts/content-model/src/templates/defaults.d.ts +1 -21
  61. package/dist/_dts/core/src/editor-state.d.ts +14 -1
  62. package/dist/_dts/core/src/footer-composition.d.ts +2 -1
  63. package/dist/_dts/core/src/index.d.ts +1 -0
  64. package/dist/_dts/core/src/rich-text.d.ts +16 -0
  65. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +189 -86
  66. package/dist/_dts/editor/src/index.d.ts +1 -1
  67. package/dist/_dts/editor/src/primitives/rich-text/utils.d.ts +3 -5
  68. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +1 -1
  69. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +2 -1
  70. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +2 -1
  71. package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +15 -0
  72. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +3 -7
  73. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +12 -0
  74. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +1 -0
  75. package/dist/_dts/editor-blocks/src/block-editor/utils.d.ts +1 -1
  76. package/dist/_dts/editor-blocks/src/index.d.ts +6 -5
  77. package/dist/_dts/editor-blocks/src/widgets/rich-text/RichTextField.d.ts +2 -2
  78. package/dist/_dts/media-core/src/contentMediaAudit.d.ts +104 -0
  79. package/dist/_dts/media-core/src/contentMediaAuditFieldAdapter.d.ts +8 -0
  80. package/dist/_dts/media-core/src/contentMediaSnapshotAudit.d.ts +22 -0
  81. package/dist/_dts/media-core/src/index.d.ts +3 -1
  82. package/dist/_dts/sdk/src/cli/commands/event.d.ts +18 -1
  83. package/dist/_dts/sdk/src/cli/commands/push/execute/theme.d.ts +2 -16
  84. package/dist/_dts/sdk/src/cli/content/reader.d.ts +8 -5
  85. package/dist/_dts/sdk/src/client/management/events.d.ts +2 -1
  86. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
  87. package/dist/_dts/sdk/src/client/management/types.d.ts +36 -9
  88. package/dist/_dts/sdk/src/config/typed-entries.d.ts +7 -7
  89. package/dist/_dts/sdk/src/config/validation.d.ts +7 -7
  90. package/dist/_dts/sdk/src/contracts/content.d.ts +5 -15
  91. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  92. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +12 -25
  93. package/dist/_dts/sdk/src/contracts/theme.d.ts +2 -18
  94. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +1 -1
  95. package/dist/_dts/sdk/src/manifest/three-pass-converter.d.ts +4 -4
  96. package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +1 -2
  97. package/dist/_dts/sdk/src/rendering/helpers/index.d.ts +1 -1
  98. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -13
  99. package/dist/_dts/sdk/src/theme/index.d.ts +0 -29
  100. package/dist/_dts/sdk/src/version.d.ts +1 -1
  101. package/dist/_dts/site-commands/src/commands.d.ts +31 -18
  102. package/dist/_dts/theme-core/src/buttons/affordanceIcons.d.ts +2 -2
  103. package/dist/_dts/theme-core/src/buttons/core.d.ts +0 -1
  104. package/dist/_dts/theme-core/src/buttons/effectClassification.d.ts +22 -9
  105. package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -2
  106. package/dist/_dts/theme-core/src/buttons/effects/presets/border.d.ts +1 -2
  107. package/dist/_dts/theme-core/src/buttons/effects/presets/overlay.d.ts +3 -1
  108. package/dist/_dts/theme-core/src/buttons/effects/presets/shadow.d.ts +2 -2
  109. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +8 -18
  110. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +2 -2
  111. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +5 -5
  112. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -4
  113. package/dist/_dts/theme-core/src/buttons/parseThemeForPersistence.d.ts +36 -0
  114. package/dist/_dts/theme-core/src/buttons/types.d.ts +1638 -93
  115. package/dist/_dts/theme-core/src/cards/types.d.ts +13 -13
  116. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +969 -69
  117. package/dist/_dts/theme-core/src/navigation/types.d.ts +2 -2
  118. package/dist/_dts/theme-core/src/recommend/generateThemes.d.ts +0 -1
  119. package/dist/_dts/theme-core/src/schema.d.ts +1100 -116
  120. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  121. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +14 -14
  122. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
  123. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +4 -4
  124. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +6 -0
  125. package/dist/cli/index.mjs +5706 -4852
  126. package/dist/cli/init-docs/content/cli-reference.md +40 -1
  127. package/dist/cli/init-docs/content/content-management.md +6 -0
  128. package/dist/client/{DiscountCodeDisclosure-C4xvTBux.mjs → DiscountCodeDisclosure-DIWj-P9v.mjs} +1 -1
  129. package/dist/client/{EventCombined.client-Cr7G131j.mjs → EventCombined.client-De8YWBSr.mjs} +2 -2
  130. package/dist/client/{EventListing.client-CAjbseNy.mjs → EventListing.client-seHTjimY.mjs} +2 -2
  131. package/dist/client/{LeafletStaticMap-BMlWfwz3.mjs → LeafletStaticMap-BmQxFcJW.mjs} +1 -1
  132. package/dist/client/{MagicLinkForm-ChdFz96y.mjs → MagicLinkForm-OoJAIUIj.mjs} +1 -1
  133. package/dist/client/{StepIndicator-7D3GaBeM.mjs → StepIndicator-CiZ8kdPk.mjs} +2 -2
  134. package/dist/client/{accordion-D8JTs2Si.mjs → accordion-6lnN__XJ.mjs} +1 -1
  135. package/dist/client/{bookingForm-H3DCRBHs.mjs → bookingForm-5uyqhONU.mjs} +6 -6
  136. package/dist/client/bookings.mjs +2219 -527
  137. package/dist/client/{carousel-DMr_QWlz.mjs → carousel-Dtnifil_.mjs} +1 -1
  138. package/dist/client/{cart-DWMbfBdR.mjs → cart-5Tc5S7NV.mjs} +3 -3
  139. package/dist/client/{checkout-zmfdkXLx.mjs → checkout-CYKKN5Hr.mjs} +3 -3
  140. package/dist/client/client.mjs +2498 -2384
  141. package/dist/client/{colorTokenParts-FSS3al6l.mjs → colorStyles-BWpj_h4C.mjs} +88 -1
  142. package/dist/client/{courseRegistration-Z_mn18jy.mjs → courseRegistration-CxCBybB4.mjs} +6 -6
  143. package/dist/client/{eventCalendar-CYp0YJGF.mjs → eventCalendar-Xj2jZS9X.mjs} +4 -4
  144. package/dist/client/{eventCombined-rKyYZUa9.mjs → eventCombined-CgcMoOgM.mjs} +2 -2
  145. package/dist/client/{eventDetails-X0ZaUuMj.mjs → eventDetails-CEAH8Edc.mjs} +3 -3
  146. package/dist/client/{eventListing-W1SuL7EP.mjs → eventListing-qyPVQ0wP.mjs} +2 -2
  147. package/dist/client/{eventRegistration-ClWricui.mjs → eventRegistration-DDu79CtL.mjs} +6 -6
  148. package/dist/client/{form--eKPwAAD.mjs → form-Bc7JKI7I.mjs} +1 -1
  149. package/dist/client/{headerSection-BSeGr-FS.mjs → headerSection-vTku_LEl.mjs} +2 -2
  150. package/dist/client/hooks.mjs +373 -555
  151. package/dist/client/{locationMap-BpOrtNYn.mjs → locationMap-Bg7X4Jna.mjs} +3 -3
  152. package/dist/client/{media-DoF0dcVx.mjs → media-CNE1Z-wb.mjs} +1 -2
  153. package/dist/client/{newsletterForm-Bt7it7Dy.mjs → newsletterForm-lpylVdp5.mjs} +1 -1
  154. package/dist/client/{pricing-BTjSDDr4.mjs → pricing-DE8fjJiT.mjs} +1 -1
  155. package/dist/client/{productDetail-ICnVTcCg.mjs → productDetail-D7Bo2RMH.mjs} +3 -3
  156. package/dist/client/{productList-ZHr6D604.mjs → productList-VjnZqiqN.mjs} +3 -3
  157. package/dist/client/{propsDecoder-wWN0tBDF.mjs → propsDecoder-DreFXjNP.mjs} +2212 -621
  158. package/dist/client/rendering/client.mjs +21612 -21646
  159. package/dist/client/rendering/islands.mjs +20 -20
  160. package/dist/client/rendering.mjs +1571 -1547
  161. package/dist/client/{shop-C1u_BUn0.mjs → shop-IRsHHbf7.mjs} +5 -5
  162. package/dist/client/{shop-commerce-CleZdRha.mjs → shop-commerce-gnI8PieZ.mjs} +27 -10
  163. package/dist/client/{shop-commerce-store-ycnoB2Ce.mjs → shop-commerce-store-BTbrhObn.mjs} +1 -1
  164. package/dist/client/{shopShared-CPhByt2a.mjs → shopShared-D6KS2_qk.mjs} +3 -3
  165. package/dist/client/{useDiscountCodeUi-cStSQI6C.mjs → useDiscountCodeUi-DCccGCxV.mjs} +1 -1
  166. package/dist/client/{useEventFilters-DKPN7hSY.mjs → useEventFilters-eGs3rPZQ.mjs} +3 -104
  167. package/dist/client/{usePolling-BKAd6pkZ.mjs → usePolling-CvSU2sur.mjs} +2 -2
  168. package/dist/preview-next/before-render.mjs +57 -0
  169. package/dist/preview-next/client/runtime.mjs +4 -4
  170. package/dist/preview-next/middleware.mjs +57 -0
  171. package/dist/{previewAuthStore-BkT1D06A.mjs → previewAuthStore-DN7vcRsv.mjs} +57 -0
  172. package/dist/{sdk-runtime-hu3wr3ng.mjs → sdk-runtime-DaOiA7ct.mjs} +2 -2
  173. package/dist/{separator-Bln8izQ9.mjs → separator-CqRhcCxD.mjs} +1 -1
  174. package/dist/server/components.mjs +4092 -4108
  175. package/dist/server/config-template-validation.mjs +4 -23
  176. package/dist/server/config-validation.mjs +373 -555
  177. package/dist/server/config.mjs +410 -558
  178. package/dist/server/data.mjs +373 -555
  179. package/dist/server/index.mjs +58 -1
  180. package/dist/server/next.mjs +32958 -32926
  181. package/dist/server/page-converter.mjs +369 -526
  182. package/dist/server/prebuild.mjs +1 -1
  183. package/dist/server/rendering/server.mjs +5371 -3174
  184. package/dist/server/rendering.mjs +4099 -4124
  185. package/dist/server/routing.mjs +758 -966
  186. package/dist/server/server.mjs +448 -632
  187. package/dist/server/theme-bridge.mjs +472 -525
  188. package/dist/server/theme.mjs +1074 -392
  189. package/package.json +1 -1
  190. package/dist/_dts/blocks/src/primitives/content/components/Button.d.ts +0 -40
  191. package/dist/_dts/blocks/src/system/fragments/library/footerBottomText.d.ts +0 -19
  192. package/dist/_dts/media-core/src/legacyMediaValue.d.ts +0 -11
  193. package/dist/_dts/theme-core/src/styles/buttons.d.ts +0 -27
  194. package/dist/_dts/theme-core/src/styles/buttonsLibrary.d.ts +0 -2
  195. package/dist/_dts/theme-core/src/styles/glow.d.ts +0 -3
  196. package/dist/client/colorStyles-gcTh5yZT.mjs +0 -89
@@ -4,7 +4,8 @@ export type { BlockEditorOwner } from './block-editor/owner';
4
4
  export { createCustomBlockRegistry, mergeBlockDescriptorsWithRegistry, mergeBlockDescriptors, getBlockManifestFromSdkConfig, transformSdkBlockToManifest, transformSdkBlockToDefinition, transformToBlockDescriptor, } from './block-editor/sdkBlockMerger';
5
5
  export type { CustomBlockManifestSource, CustomBlockRegistry, CustomBlockRegistryEntry, ResolvedCustomBlockManifest, SdkCustomBlock, SdkConfigForBlockPicker, } from './block-editor/sdkBlockMerger';
6
6
  export type { BlockEditorHandle, BlockFocusRequest, BlockFocusTarget, BlockItem, } from './block-editor/types';
7
- export { useBlockListContext, useBlockListContextOptional, BlockListProvider } from './block-editor/BlockListContext';
7
+ export { buildBlockDraftBaselineSeed, type BlockDraftBaselineSeed, type BlockFieldExtensions, } from './block-editor/blockDraftBaselineSeed';
8
+ export { useBlockListContext, useBlockListContextOptional, BlockListProvider, } from './block-editor/BlockListContext';
8
9
  export type { BlockListContextValue } from './block-editor/BlockListContext';
9
10
  export { BlockThumbnail } from './block-editor/BlockThumbnail';
10
11
  export type { BlockThumbnailProps } from './block-editor/BlockThumbnail';
@@ -13,14 +14,14 @@ export { BlockForm } from './BlockForm';
13
14
  export { FormProvider } from './FormProvider';
14
15
  export type { FormProviderProps } from './FormProvider';
15
16
  export { buildBlockContentPayload, formatManifestIssues } from './blockPayload';
16
- export type { BlockContentPayloadResult, ManifestFieldIssue, BuildBlockContentPayloadOptions } from './blockPayload';
17
+ export type { BlockContentPayloadResult, ManifestFieldIssue, BuildBlockContentPayloadOptions, } from './blockPayload';
17
18
  export { deriveBlockDraftSaveability, formatUnfinishedBlocksSummary, shouldShowBlockFieldValidation, unfinishedBlockCopy, validateBlockManifestValues, } from '../../block-form/src/client/index';
18
- export type { BlockDraftSaveability, BlockDraftValidationIssue } from '../../block-form/src/client/index';
19
+ export type { BlockDraftSaveability, BlockDraftValidationIssue, } from '../../block-form/src/client/index';
19
20
  export { applyManifestIssuesToForm } from './manifestIssues';
20
21
  export { BlockPickerDialog } from './block-editor/BlockPickerDialog';
21
22
  export { FileField, MediaField } from './media/MediaField';
22
23
  export { hideThemeV2RawStyleFields, prepareBlockEditorManifest, } from './block-editor/preparedManifest';
23
- export { stripTopLevelRoutingUi, } from './block-editor/settingsIntent';
24
+ export { stripTopLevelRoutingUi } from './block-editor/settingsIntent';
24
25
  export * from './widgets/index';
25
- export { createBlockFormLogger, setBlockFormLoggerFactory, setBlockFormAppLogger } from './block-form/debug';
26
+ export { createBlockFormLogger, setBlockFormLoggerFactory, setBlockFormAppLogger, } from './block-form/debug';
26
27
  export type { BlockFormLogger } from './block-form/debug';
@@ -1,6 +1,6 @@
1
- import type { Content } from '@tiptap/react';
2
1
  import type { FieldWidgetProps } from '../../../../block-form/src/client/index';
3
2
  import type { RichTextFieldConfig } from '../../../../block-form/src/client/index';
4
- type RichTextValue = Content;
3
+ import { type RichTextDoc } from '../../../../blocks/src/system/manifest/richTextSchema';
4
+ type RichTextValue = RichTextDoc;
5
5
  export declare function RichTextField({ path, backend, config, }: FieldWidgetProps<RichTextValue, RichTextFieldConfig>): import("react").JSX.Element;
6
6
  export {};
@@ -0,0 +1,104 @@
1
+ import type { SiteId } from '../../core/src/index';
2
+ import type { MediaIdentifier } from './identifiers';
3
+ export type ContentFieldPathSegment = string | number;
4
+ export type ContentFieldPath = readonly ContentFieldPathSegment[];
5
+ export type ContentMediaType = 'image' | 'video' | 'audio' | 'document' | 'spreadsheet' | 'archive';
6
+ export type AllowedContentMediaTypes = readonly [
7
+ ContentMediaType,
8
+ ...ContentMediaType[]
9
+ ];
10
+ export type ContentMediaAuditContext = Readonly<{
11
+ source: 'database' | 'backup' | 'snapshot';
12
+ table: string;
13
+ recordId: string;
14
+ siteId: SiteId;
15
+ ownerKind: string;
16
+ stage: string | null;
17
+ schemaKey: string;
18
+ }>;
19
+ export type ContentMediaAuditField = Readonly<{
20
+ kind: 'media';
21
+ id: string;
22
+ allowedMediaTypes: AllowedContentMediaTypes;
23
+ }> | Readonly<{
24
+ kind: 'object';
25
+ id: string;
26
+ fields: readonly ContentMediaAuditField[];
27
+ }> | Readonly<{
28
+ kind: 'repeater';
29
+ id: string;
30
+ mode: 'fields';
31
+ fields: readonly ContentMediaAuditField[];
32
+ }> | Readonly<{
33
+ kind: 'repeater';
34
+ id: string;
35
+ mode: 'variants';
36
+ variants: readonly Readonly<{
37
+ typeId: string;
38
+ fields: readonly ContentMediaAuditField[];
39
+ }>[];
40
+ discriminator?: string;
41
+ }>;
42
+ type LocatedFinding = Readonly<{
43
+ context: ContentMediaAuditContext;
44
+ path: ContentFieldPath;
45
+ valueSummary: string;
46
+ }>;
47
+ export type LegacyStringContentMediaFinding = LocatedFinding & Readonly<{
48
+ tag: 'legacy-string';
49
+ originalValue: string;
50
+ expectedMediaType: ContentMediaType;
51
+ allowedMediaTypes: AllowedContentMediaTypes;
52
+ }>;
53
+ export type ContentMediaAuditFinding = LegacyStringContentMediaFinding | (LocatedFinding & Readonly<{
54
+ tag: 'blank-string';
55
+ expectedMediaType: ContentMediaType;
56
+ }>) | (LocatedFinding & Readonly<{
57
+ tag: 'malformed-object';
58
+ expectedMediaType: ContentMediaType;
59
+ }>) | (LocatedFinding & Readonly<{
60
+ tag: 'missing-schema';
61
+ }>);
62
+ export type ContentMediaAuditInput = Readonly<{
63
+ context: ContentMediaAuditContext;
64
+ data: unknown;
65
+ fields: readonly ContentMediaAuditField[] | null;
66
+ }>;
67
+ export type LegacyMediaAssetCandidate = Readonly<{
68
+ siteId: SiteId;
69
+ identifier: MediaIdentifier;
70
+ mediaType: ContentMediaType;
71
+ legacyValues: readonly string[];
72
+ active: boolean;
73
+ }>;
74
+ export type ResolvedLegacyMediaMapping = Readonly<{
75
+ finding: LegacyStringContentMediaFinding;
76
+ identifier: MediaIdentifier;
77
+ mediaType: ContentMediaType;
78
+ }>;
79
+ export type LegacyMediaResolutionError = Readonly<{
80
+ tag: 'missing-asset';
81
+ finding: LegacyStringContentMediaFinding;
82
+ }> | Readonly<{
83
+ tag: 'ambiguous-asset';
84
+ finding: LegacyStringContentMediaFinding;
85
+ identifiers: readonly MediaIdentifier[];
86
+ }> | Readonly<{
87
+ tag: 'kind-mismatch';
88
+ finding: LegacyStringContentMediaFinding;
89
+ identifier: MediaIdentifier;
90
+ actualMediaType: ContentMediaType;
91
+ }>;
92
+ export type LegacyMediaResolutionResult = Readonly<{
93
+ ok: true;
94
+ value: ResolvedLegacyMediaMapping;
95
+ }> | Readonly<{
96
+ ok: false;
97
+ error: LegacyMediaResolutionError;
98
+ }>;
99
+ export declare function formatContentFieldPath(path: ContentFieldPath): string;
100
+ export declare function summarizeContentMediaValue(value: unknown): string;
101
+ export declare function auditContentMediaValues(input: ContentMediaAuditInput): readonly ContentMediaAuditFinding[];
102
+ export declare function resolveLegacyMediaFinding(finding: LegacyStringContentMediaFinding, assets: readonly LegacyMediaAssetCandidate[]): LegacyMediaResolutionResult;
103
+ export declare function resolveLegacyMediaFindings(findings: readonly ContentMediaAuditFinding[], assets: readonly LegacyMediaAssetCandidate[]): readonly LegacyMediaResolutionResult[];
104
+ export {};
@@ -0,0 +1,8 @@
1
+ import { type AllowedContentMediaTypes, type ContentMediaAuditField } from './contentMediaAudit';
2
+ /**
3
+ * Adapts content-type schemas and block manifests into the dependency-neutral
4
+ * field tree consumed by the pure audit walker. Unknown field kinds are ignored.
5
+ */
6
+ export declare function adaptContentMediaAuditFields(schemaOrFields: unknown, options?: Readonly<{
7
+ defaultFileKinds?: AllowedContentMediaTypes;
8
+ }>): readonly ContentMediaAuditField[] | null;
@@ -0,0 +1,22 @@
1
+ import { type ContentMediaAuditContext, type ContentMediaAuditFinding, type LegacyMediaResolutionResult } from './contentMediaAudit';
2
+ export type ContentMediaAuditSnapshotRecord = Readonly<Record<string, unknown>>;
3
+ export type ContentMediaAuditSnapshot = Readonly<{
4
+ contentVersions: readonly ContentMediaAuditSnapshotRecord[];
5
+ contentEntries: readonly ContentMediaAuditSnapshotRecord[];
6
+ contentTypes: readonly ContentMediaAuditSnapshotRecord[];
7
+ blocks: readonly ContentMediaAuditSnapshotRecord[];
8
+ customBlocks: readonly ContentMediaAuditSnapshotRecord[];
9
+ pageSurfaces: readonly ContentMediaAuditSnapshotRecord[];
10
+ mediaAssets: readonly ContentMediaAuditSnapshotRecord[];
11
+ sites?: readonly ContentMediaAuditSnapshotRecord[];
12
+ contentTemplates?: readonly ContentMediaAuditSnapshotRecord[];
13
+ contentTemplateBlocks?: readonly ContentMediaAuditSnapshotRecord[];
14
+ footerBlocks?: readonly ContentMediaAuditSnapshotRecord[];
15
+ }>;
16
+ export type ContentMediaAuditReport = Readonly<{
17
+ findings: readonly ContentMediaAuditFinding[];
18
+ resolutions: readonly LegacyMediaResolutionResult[];
19
+ counts: Readonly<Record<string, number>>;
20
+ }>;
21
+ export type ContentMediaAuditManifestMap = ReadonlyMap<string, unknown>;
22
+ export declare function auditContentMediaSnapshot(snapshot: ContentMediaAuditSnapshot, source: ContentMediaAuditContext['source'], builtInManifests: ContentMediaAuditManifestMap): ContentMediaAuditReport;
@@ -44,4 +44,6 @@ export * from './richTextImageWriteNormalizer';
44
44
  export * from './mediaUsageProjection';
45
45
  export * from './portableMediaReferences';
46
46
  export * from './renderableMediaAsset';
47
- export * from './legacyMediaValue';
47
+ export * from './contentMediaAudit';
48
+ export * from './contentMediaAuditFieldAdapter';
49
+ export * from './contentMediaSnapshotAudit';
@@ -1,6 +1,23 @@
1
1
  import { Command } from 'commander';
2
- import type { EventSeriesUpsertInput, ManagementEventSeries } from '../../client/management/types';
2
+ import type { EventOccurrenceCapacityIntent, EventOccurrenceScheduleInput, ManagementEventOccurrence, EventSeriesUpsertInput, ManagementEventSeries } from '../../client/management/types';
3
3
  export declare function toEventUpsertInput(identifier: string, raw: Record<string, unknown>): EventSeriesUpsertInput;
4
4
  export declare function buildCancelledEventUpsertInput(current: ManagementEventSeries): EventSeriesUpsertInput;
5
5
  export declare function canCancelEventStatus(status: ManagementEventSeries['status']): boolean;
6
+ type OccurrenceScheduleOptions = Readonly<{
7
+ startsAt?: string;
8
+ endsAt?: string;
9
+ durationMinutes?: string;
10
+ }>;
11
+ type OccurrenceCapacityOptions = Readonly<{
12
+ capacity?: string;
13
+ inheritCapacity?: boolean;
14
+ }>;
15
+ export declare function occurrenceScheduleFromOptions(options: OccurrenceScheduleOptions, required: true): EventOccurrenceScheduleInput;
16
+ export declare function occurrenceScheduleFromOptions(options: OccurrenceScheduleOptions, required: false): EventOccurrenceScheduleInput | undefined;
17
+ export declare function occurrenceCapacityFromOptions(options: OccurrenceCapacityOptions): EventOccurrenceCapacityIntent | undefined;
18
+ export declare function formatDeletionEligibility(occurrence: ManagementEventOccurrence): string;
19
+ export declare function occurrenceListJson(occurrences: readonly ManagementEventOccurrence[]): Readonly<{
20
+ occurrences: readonly ManagementEventOccurrence[];
21
+ }>;
6
22
  export declare const eventCommand: Command;
23
+ export {};
@@ -1,5 +1,5 @@
1
1
  import type { OutputContext } from '../../../output';
2
- import type { Theme } from '../../../../contracts';
2
+ import type { ValidatedThemeForPersistence } from '../../../../../../blocks/src/index';
3
3
  import type { ThemeUpsertUpdateInput } from '../../../../client/management/types';
4
4
  export type ThemePushClient = {
5
5
  theme: {
@@ -56,22 +56,8 @@ export declare function handleThemePushForAllScope(params: {
56
56
  };
57
57
  readTheme: (contentDir: string, themeName: string) => Promise<{
58
58
  name: string;
59
- theme: Theme;
59
+ theme: ValidatedThemeForPersistence;
60
60
  } | null>;
61
61
  readThemesMeta: (contentDir: string) => Promise<ThemesMetaFile | null>;
62
62
  writeThemesMeta: (contentDir: string, data: ThemesMetaFile) => Promise<void>;
63
- themeSchema: {
64
- safeParse: (value: unknown) => {
65
- success: true;
66
- data: ThemeUpsertUpdateInput['theme'];
67
- } | {
68
- success: false;
69
- error: {
70
- issues: Array<{
71
- path: Array<PropertyKey>;
72
- message: string;
73
- }>;
74
- };
75
- };
76
- };
77
63
  }): Promise<void>;
@@ -7,8 +7,9 @@
7
7
  import { type ContentMetadataTarget } from './metadataStore';
8
8
  import type { NavigationAuthoringLinkInput, NavigationLocalItemInput } from '../../../../api/src/navigation';
9
9
  import type { SdkEventPricingInput } from '../../../../api/src/sdk-event-pricing';
10
+ import { type ValidatedThemeForPersistence } from '../../../../blocks/src/index';
10
11
  import type { EventPaymentTermsInput } from '../../client/management/types';
11
- import type { Theme } from '../../contracts';
12
+ import { type RichTextDoc } from '../../../../core/src/index';
12
13
  export interface LocalEntry {
13
14
  identifier: string;
14
15
  data: Record<string, unknown>;
@@ -112,7 +113,7 @@ export interface LocalTheme {
112
113
  /** Filename without .json extension */
113
114
  name: string;
114
115
  /** Full theme object matching themeSchema */
115
- theme: Theme;
116
+ theme: ValidatedThemeForPersistence;
116
117
  }
117
118
  /**
118
119
  * Local footer content structure.
@@ -122,7 +123,7 @@ export interface LocalTheme {
122
123
  */
123
124
  export interface LocalFooterContent {
124
125
  /** Rich text content in ProseMirror JSON format. Set to null to clear. */
125
- bottomText?: Record<string, unknown> | null;
126
+ bottomText?: RichTextDoc | null;
126
127
  }
127
128
  export interface LocalVenueAddress {
128
129
  line1?: string | null;
@@ -164,8 +165,10 @@ export interface LocalEventSchedule {
164
165
  export type LocalEventPricing = SdkEventPricingInput;
165
166
  export interface LocalEventContent {
166
167
  summary?: string | null;
167
- body?: string | Record<string, unknown> | null;
168
- image?: string | Record<string, unknown> | null;
168
+ body?: string | RichTextDoc | null;
169
+ image?: (Record<string, unknown> & {
170
+ identifier: string;
171
+ }) | null;
169
172
  }
170
173
  export interface LocalEvent {
171
174
  identifier: string;
@@ -2,5 +2,6 @@
2
2
  * Event Operations for Management Client
3
3
  */
4
4
  import { type HttpClient } from './http';
5
- import type { EventOperations } from './types';
5
+ import type { EventOperations, EventOccurrenceOperations } from './types';
6
+ export declare function createEventOccurrenceOperations(http: HttpClient): EventOccurrenceOperations;
6
7
  export declare function createEventOperations(http: HttpClient): EventOperations;
@@ -36,7 +36,7 @@ import { CourseSessionConflictError } from './courses';
36
36
  * @returns ManagementClient instance
37
37
  */
38
38
  export declare function createManagementClient(config: ManagementClientConfig): ManagementClient;
39
- export type { ManagementClient, ManagementClientConfig, ManagementEntry, ManagementPage, ManagementBlock, ManagementNavigationMenu, ManagementNavigationItem, ManagementSettings, ManagementForm, ManagementFormField, ManagementFormSchema, ManagementFormSettings, ManagementVenue, VenueAddress, VenueLocation, VenueUpsertInput, ManagementEventCategory, EventCategoryUpsertInput, ManagementEventSeries, EventSchedule, EventScheduleUpsertInput, EventStartDurationSchedule, EventStartEndSchedule, EventPricing, EventPaymentTerms, EventPaymentTermsInput, EventContent, EventSeriesUpsertInput, ManagementCourseRun, CourseRunUpsertInput, CourseSession, CourseProgramContent, CourseSessionConflict, EntryUpsertInput, EntryPublishUpsertResult, UpsertedManagementEntry, PageUpsertInput, PagePublishUpsertResult, BlockUpsertInput, NavigationMenuUpsertInput, NavigationItemInput, FormUpsertInput, SiteStyleSelectionApplyCommand, SiteStyleSelectionApplyCommandInput, ThemeUpsertInitializeInput, ThemeUpsertInput, ThemeUpsertResult, ThemeUpsertUpdateInput, ThemeStyleSelectionApplyInput, ThemeStyleSelectionApplyResult, FooterContent, ManagementFooterContent, FooterContentUpsertInput, FooterOperations, PulledFooter, PulledEntries, PulledPages, PulledDrafts, PulledNavigation, PulledSettings, PulledForms, PulledTheme, PulledVenues, PulledEventCategories, PulledEvents, PulledCourses, PulledSiteInfo, PulledContentType, PulledContentTypes, PulledContent, PaginationOptions, PaginatedResult, EntryOperations, PageOperations, BlockOperations, NavigationOperations, SettingsOperations, SettingsUpdateInput, WebhookOperations, SetupRevalidationWebhookInput, SetupRevalidationWebhookResult, ManagementWebhookEndpoint, RevalidationWebhookPlannedEndpoint, FormOperations, ThemeOperations, VenueOperations, EventCategoryOperations, EventOperations, CourseOperations, PullOperations, CatalogOperations, PulledCatalogTheme, PulledCatalogBlocks, PulledCatalogContentTypes, Capabilities, DemoContent, IdentifiersOperations, BackfillResult, BackfillPageResult, BackfillBlockResult, BackfillEntryResult, MediaOperations, MediaUploadResult, } from './types';
39
+ export type { ManagementClient, ManagementClientConfig, ManagementEntry, ManagementPage, ManagementBlock, ManagementNavigationMenu, ManagementNavigationItem, ManagementSettings, ManagementForm, ManagementFormField, ManagementFormSchema, ManagementFormSettings, ManagementVenue, VenueAddress, VenueLocation, VenueUpsertInput, ManagementEventCategory, EventCategoryUpsertInput, ManagementEventSeries, ManagementEventOccurrence, EventOccurrenceScheduleInput, AddEventOccurrenceInput, EventOccurrenceCapacityIntent, EventSchedule, EventScheduleUpsertInput, EventStartDurationSchedule, EventStartEndSchedule, EventPricing, EventPaymentTerms, EventPaymentTermsInput, EventContent, EventSeriesUpsertInput, ManagementCourseRun, CourseRunUpsertInput, CourseSession, CourseProgramContent, CourseSessionConflict, EntryUpsertInput, EntryPublishUpsertResult, UpsertedManagementEntry, PageUpsertInput, PagePublishUpsertResult, BlockUpsertInput, NavigationMenuUpsertInput, NavigationItemInput, FormUpsertInput, SiteStyleSelectionApplyCommand, SiteStyleSelectionApplyCommandInput, ThemeUpsertInitializeInput, ThemeUpsertInput, ThemeUpsertResult, ThemeUpsertUpdateInput, ThemeStyleSelectionApplyInput, ThemeStyleSelectionApplyResult, FooterContent, ManagementFooterContent, FooterContentUpsertInput, FooterOperations, PulledFooter, PulledEntries, PulledPages, PulledDrafts, PulledNavigation, PulledSettings, PulledForms, PulledTheme, PulledVenues, PulledEventCategories, PulledEvents, PulledCourses, PulledSiteInfo, PulledContentType, PulledContentTypes, PulledContent, PaginationOptions, PaginatedResult, EntryOperations, PageOperations, BlockOperations, NavigationOperations, SettingsOperations, SettingsUpdateInput, WebhookOperations, SetupRevalidationWebhookInput, SetupRevalidationWebhookResult, ManagementWebhookEndpoint, RevalidationWebhookPlannedEndpoint, FormOperations, ThemeOperations, VenueOperations, EventCategoryOperations, EventOperations, EventOccurrenceOperations, CourseOperations, PullOperations, CatalogOperations, PulledCatalogTheme, PulledCatalogBlocks, PulledCatalogContentTypes, Capabilities, DemoContent, IdentifiersOperations, BackfillResult, BackfillPageResult, BackfillBlockResult, BackfillEntryResult, MediaOperations, MediaUploadResult, } from './types';
40
40
  export { ManagementApiError, type ManagementApiErrorRequest } from './http';
41
41
  export { BlockPatchStaleContentError, isBlockPatchStaleContentError, } from './blocks';
42
42
  export { applySiteStyleSelectionBodyFromCommand, buildApplySiteStyleSelectionCommand, } from './theme';
@@ -9,13 +9,14 @@ import type { SiteCommandOf } from '../../../../site-commands/src/index';
9
9
  import type { SdkEventPricing, SdkEventPricingInput, SdkEventTicketTypeInput } from '../../../../api/src/sdk-event-pricing';
10
10
  import type { SdkEventPaymentTerms, SdkEventPaymentTermsInput } from '../../../../api/src/sdk-event-payment-terms';
11
11
  import type { SdkEventUpsertBody } from '../../../../api/src/sdk-event-upsert';
12
- import type { SdkManagementEventSeries } from '../../../../api/src/sdkContracts';
12
+ import type { SdkAddEventOccurrenceRequest, SdkEventOccurrenceCapacityIntent, SdkEventOccurrenceScheduleInput, SdkManagementEventOccurrence, SdkManagementEventSeries } from '../../../../api/src/sdkContracts';
13
13
  import type { SdkPullTruncationMeta } from '../../../../api/src/sdkContracts';
14
14
  import type { SdkCapabilitiesResponse, SdkCatalogBlocksResponse, SdkCatalogContentTypesResponse, SdkCatalogThemeResponse, SdkDemoContentResponse } from '../../../../api/src/sdkContracts';
15
15
  import type { SdkEntryPublishErrorCode, SdkPagePublishErrorCode, SdkPublicationOutcome } from '../../../../api/src/sdkContracts';
16
16
  import type { PaletteSelection } from '../../../../theme-core/src/palette/index';
17
17
  import type { ButtonStyleSelection } from '../../../../theme-core/src/buttons/index';
18
18
  import type { Theme } from '../../contracts';
19
+ import type { RichTextDoc } from '../../../../core/src/index';
19
20
  export type SdkDeletePageResponse = NonNullable<APIEndpoints['sdkDeletePage']['response']>;
20
21
  export type SdkGetPageBlockResponse = NonNullable<APIEndpoints['sdkGetPageBlock']['response']>;
21
22
  export type SdkPatchPageBlockBody = NonNullable<APIEndpoints['sdkPatchPageBlock']['body']>;
@@ -457,11 +458,17 @@ export type EventPaymentTermsInput = SdkEventPaymentTermsInput;
457
458
  */
458
459
  export interface EventContent {
459
460
  summary?: string;
460
- body?: string | Record<string, unknown>;
461
- image?: string | Record<string, unknown>;
461
+ body?: string | RichTextDoc;
462
+ image?: Record<string, unknown> & {
463
+ identifier: string;
464
+ };
462
465
  [key: string]: unknown;
463
466
  }
464
467
  export type ManagementEventSeries = SdkManagementEventSeries;
468
+ export type ManagementEventOccurrence = SdkManagementEventOccurrence;
469
+ export type EventOccurrenceScheduleInput = SdkEventOccurrenceScheduleInput;
470
+ export type AddEventOccurrenceInput = SdkAddEventOccurrenceRequest;
471
+ export type EventOccurrenceCapacityIntent = SdkEventOccurrenceCapacityIntent;
465
472
  export type EventSeriesUpsertInput = SdkEventUpsertBody;
466
473
  export interface CourseSession {
467
474
  startsAt: string;
@@ -597,21 +604,21 @@ export interface ThemeStyleSelectionApplyResult {
597
604
  */
598
605
  export interface FooterContent {
599
606
  /** Rich text content in ProseMirror JSON format */
600
- bottomText?: Record<string, unknown>;
607
+ bottomText?: RichTextDoc;
601
608
  }
602
609
  /**
603
610
  * Footer content as returned from CMS.
604
611
  */
605
612
  export interface ManagementFooterContent {
606
613
  /** Rich text content in ProseMirror JSON format */
607
- bottomText: Record<string, unknown>;
614
+ bottomText: RichTextDoc;
608
615
  }
609
616
  /**
610
617
  * Input for upserting footer content.
611
618
  */
612
619
  export interface FooterContentUpsertInput {
613
620
  /** Set to null to clear. */
614
- bottomText?: Record<string, unknown> | null;
621
+ bottomText?: RichTextDoc | null;
615
622
  }
616
623
  export interface PulledFooter {
617
624
  footer: ManagementFooterContent | null;
@@ -1009,6 +1016,25 @@ export interface EventOperations {
1009
1016
  get(identifier: string): Promise<ManagementEventSeries | null>;
1010
1017
  upsert(input: EventSeriesUpsertInput): Promise<ManagementEventSeries>;
1011
1018
  delete(identifier: string): Promise<void>;
1019
+ occurrences: EventOccurrenceOperations;
1020
+ }
1021
+ export interface EventOccurrenceOperations {
1022
+ list(identifier: string, options?: Readonly<{
1023
+ all?: boolean;
1024
+ status?: ManagementEventOccurrence['status'];
1025
+ cursor?: string;
1026
+ limit?: number;
1027
+ }>): Promise<Readonly<{
1028
+ occurrences: ManagementEventOccurrence[];
1029
+ nextCursor: string | null;
1030
+ }>>;
1031
+ add(identifier: string, input: AddEventOccurrenceInput): Promise<ManagementEventOccurrence>;
1032
+ update(identifier: string, occurrenceId: string, input: Readonly<{
1033
+ schedule?: EventOccurrenceScheduleInput;
1034
+ capacity?: EventOccurrenceCapacityIntent;
1035
+ }>): Promise<ManagementEventOccurrence>;
1036
+ cancel(identifier: string, occurrenceId: string): Promise<ManagementEventOccurrence>;
1037
+ delete(identifier: string, occurrenceId: string): Promise<void>;
1012
1038
  }
1013
1039
  export interface CourseOperations {
1014
1040
  list(): Promise<ManagementCourseRun[]>;
@@ -1156,9 +1182,10 @@ export interface ManagementClient {
1156
1182
  */
1157
1183
  capabilities(): Promise<Capabilities>;
1158
1184
  /**
1159
- * Demo-seed provenance ledger: the resources demo recipe runs created on this
1160
- * site (plan 8.2), so an agent can distinguish placeholder demo content from
1161
- * authored content and drive cleanup.
1185
+ * Demo-seed provenance ledger: created and existing resource observations
1186
+ * from demo recipe runs (plan 8.2). Historical heuristic-era observations are
1187
+ * not cleanup-authoritative, and destructive cleanup remains disabled pending
1188
+ * an explicit trust cutoff or purge.
1162
1189
  */
1163
1190
  demoContent(): Promise<DemoContent>;
1164
1191
  }
@@ -31,9 +31,9 @@
31
31
  * ```
32
32
  */
33
33
  import type { BooleanFieldDefinition, ContentTypeSelectFieldDefinition, DateFieldDefinition, DateTimeFieldDefinition, EntryPickerFieldDefinition, FileFieldDefinition, FieldDefinition, GroupFieldDefinition, InlineTextFieldDefinition, LinkFieldDefinition, MediaFieldDefinition, ModalFieldDefinition, NumberFieldDefinition, PresetOrCustomFieldDefinition, ReferenceFieldDefinition, RepeaterFieldDefinition, RichTextFieldDefinition, SelectFieldDefinition, SlugFieldDefinition, TabGroupFieldDefinition, TextFieldDefinition, TimeFieldDefinition, UrlFieldDefinition } from './field-definitions';
34
- import type { InlineText, LinkValue, Media, TipTapNode } from '../contracts';
34
+ import type { InlineText, LinkValue, Media, RichTextDoc, TipTapNode } from '../contracts';
35
35
  import type { ContentTypeConfig, EntryConfig } from './content-types';
36
- export type { TipTapNode, Media, LinkValue, InternalLinkValue, ExternalLinkValue, CustomLinkValue, } from '../contracts';
36
+ export type { TipTapNode, RichTextDoc, Media, LinkValue, InternalLinkValue, ExternalLinkValue, CustomLinkValue, } from '../contracts';
37
37
  /**
38
38
  * Infers the data object shape from tabGroup tabs (flattens all tab fields).
39
39
  * TabGroup fields flatten all their tab fields into a single data object.
@@ -64,7 +64,7 @@ export type FieldValueType<F extends FieldDefinition> = F extends {
64
64
  type: 'number';
65
65
  } ? number : F extends {
66
66
  type: 'richText';
67
- } ? TipTapNode : F extends {
67
+ } ? RichTextDoc : F extends {
68
68
  type: 'inlineText';
69
69
  } ? InlineText : F extends {
70
70
  type: 'media';
@@ -95,7 +95,7 @@ export type FieldValueType<F extends FieldDefinition> = F extends {
95
95
  type: 'select';
96
96
  } ? string : F extends {
97
97
  type: 'entryPicker';
98
- } ? string | null : F extends TextFieldDefinition ? string : F extends BooleanFieldDefinition ? boolean : F extends NumberFieldDefinition ? number : F extends RichTextFieldDefinition ? TipTapNode : F extends InlineTextFieldDefinition ? InlineText : F extends MediaFieldDefinition ? Media | null : F extends FileFieldDefinition ? Media | null : F extends LinkFieldDefinition ? LinkValue | null : F extends DateFieldDefinition ? string : F extends TimeFieldDefinition ? string : F extends DateTimeFieldDefinition ? string : F extends SlugFieldDefinition ? string : F extends UrlFieldDefinition ? string : F extends ReferenceFieldDefinition ? string : F extends PresetOrCustomFieldDefinition ? string : F extends ContentTypeSelectFieldDefinition ? string : F extends SelectFieldDefinition & {
98
+ } ? string | null : F extends TextFieldDefinition ? string : F extends BooleanFieldDefinition ? boolean : F extends NumberFieldDefinition ? number : F extends RichTextFieldDefinition ? RichTextDoc : F extends InlineTextFieldDefinition ? InlineText : F extends MediaFieldDefinition ? Media | null : F extends FileFieldDefinition ? Media | null : F extends LinkFieldDefinition ? LinkValue | null : F extends DateFieldDefinition ? string : F extends TimeFieldDefinition ? string : F extends DateTimeFieldDefinition ? string : F extends SlugFieldDefinition ? string : F extends UrlFieldDefinition ? string : F extends ReferenceFieldDefinition ? string : F extends PresetOrCustomFieldDefinition ? string : F extends ContentTypeSelectFieldDefinition ? string : F extends SelectFieldDefinition & {
99
99
  multiple: true;
100
100
  } ? string[] : F extends SelectFieldDefinition ? string : F extends EntryPickerFieldDefinition ? string | null : F extends GroupFieldDefinition & {
101
101
  schema: {
@@ -243,21 +243,21 @@ export declare const tiptap: {
243
243
  *
244
244
  * @returns An empty TipTap document node
245
245
  */
246
- empty(): TipTapNode;
246
+ empty(): RichTextDoc;
247
247
  /**
248
248
  * Create a TipTap document with a single paragraph.
249
249
  *
250
250
  * @param text - The paragraph text content
251
251
  * @returns A TipTap document with one paragraph
252
252
  */
253
- paragraph(text: string): TipTapNode;
253
+ paragraph(text: string): RichTextDoc;
254
254
  /**
255
255
  * Create a TipTap document with custom content nodes.
256
256
  *
257
257
  * @param content - Array of TipTap nodes to include in the document
258
258
  * @returns A TipTap document wrapping the content
259
259
  */
260
- doc(content: TipTapNode[]): TipTapNode;
260
+ doc(content: TipTapNode[]): RichTextDoc;
261
261
  /**
262
262
  * Create a heading node.
263
263
  *
@@ -158,8 +158,8 @@ export declare const loaderParamBindingSchema: z.ZodObject<{
158
158
  }, z.core.$strip>>>;
159
159
  pick: z.ZodDefault<z.ZodEnum<{
160
160
  value: "value";
161
- collection: "collection";
162
161
  context: "context";
162
+ collection: "collection";
163
163
  }>>;
164
164
  coerce: z.ZodOptional<z.ZodEnum<{
165
165
  string: "string";
@@ -181,8 +181,8 @@ export declare const loaderParamValueSchema: z.ZodUnion<readonly [z.ZodString, z
181
181
  }, z.core.$strip>>>;
182
182
  pick: z.ZodDefault<z.ZodEnum<{
183
183
  value: "value";
184
- collection: "collection";
185
184
  context: "context";
185
+ collection: "collection";
186
186
  }>>;
187
187
  coerce: z.ZodOptional<z.ZodEnum<{
188
188
  string: "string";
@@ -205,8 +205,8 @@ export declare const loaderWhenValueSchema: z.ZodUnion<readonly [z.ZodBoolean, z
205
205
  }, z.core.$strip>>>;
206
206
  pick: z.ZodDefault<z.ZodEnum<{
207
207
  value: "value";
208
- collection: "collection";
209
208
  context: "context";
209
+ collection: "collection";
210
210
  }>>;
211
211
  coerce: z.ZodOptional<z.ZodEnum<{
212
212
  string: "string";
@@ -248,8 +248,8 @@ export declare const sdkConfigLoaderSchema: z.ZodObject<{
248
248
  }, z.core.$strip>>>;
249
249
  pick: z.ZodDefault<z.ZodEnum<{
250
250
  value: "value";
251
- collection: "collection";
252
251
  context: "context";
252
+ collection: "collection";
253
253
  }>>;
254
254
  coerce: z.ZodOptional<z.ZodEnum<{
255
255
  string: "string";
@@ -272,8 +272,8 @@ export declare const sdkConfigLoaderSchema: z.ZodObject<{
272
272
  }, z.core.$strip>>>;
273
273
  pick: z.ZodDefault<z.ZodEnum<{
274
274
  value: "value";
275
- collection: "collection";
276
275
  context: "context";
276
+ collection: "collection";
277
277
  }>>;
278
278
  coerce: z.ZodOptional<z.ZodEnum<{
279
279
  string: "string";
@@ -314,8 +314,8 @@ export declare const sdkDataLoadersSchema: z.ZodOptional<z.ZodRecord<z.ZodString
314
314
  }, z.core.$strip>>>;
315
315
  pick: z.ZodDefault<z.ZodEnum<{
316
316
  value: "value";
317
- collection: "collection";
318
317
  context: "context";
318
+ collection: "collection";
319
319
  }>>;
320
320
  coerce: z.ZodOptional<z.ZodEnum<{
321
321
  string: "string";
@@ -338,8 +338,8 @@ export declare const sdkDataLoadersSchema: z.ZodOptional<z.ZodRecord<z.ZodString
338
338
  }, z.core.$strip>>>;
339
339
  pick: z.ZodDefault<z.ZodEnum<{
340
340
  value: "value";
341
- collection: "collection";
342
341
  context: "context";
342
+ collection: "collection";
343
343
  }>>;
344
344
  coerce: z.ZodOptional<z.ZodEnum<{
345
345
  string: "string";
@@ -1,22 +1,12 @@
1
1
  /**
2
2
  * Public SDK content contracts.
3
3
  *
4
- * These types intentionally live in the SDK (not re-exported from internal
5
- * workspace packages) so external consumers can typecheck without installing
6
- * `@riverbankcms/blocks`.
4
+ * SDK consumers import these contracts from the SDK. Internally, rich text
5
+ * aliases the dependency-free core contract used by the runtime validator.
7
6
  */
8
7
  import type React from 'react';
9
- export type TipTapMark = {
10
- type: string;
11
- attrs?: Record<string, unknown>;
12
- };
13
- export type TipTapNode = {
14
- type: string;
15
- content?: TipTapNode[];
16
- text?: string;
17
- attrs?: Record<string, unknown>;
18
- marks?: TipTapMark[];
19
- };
8
+ import type { RichTextDoc } from '../../../core/src/index';
9
+ export type { RichTextDoc, TipTapMark, TipTapNode } from '../../../core/src/index';
20
10
  export type InlineTextAccentTone = 'accent' | 'brand' | 'contrast';
21
11
  export type InlineTextHighlightTone = 'soft' | 'accent' | 'brand';
22
12
  export type InlineTextMark = Readonly<{
@@ -126,7 +116,7 @@ export type RichTextPrimitiveProps = {
126
116
  as?: React.ElementType;
127
117
  className?: string;
128
118
  path?: string;
129
- doc?: TipTapNode | null;
119
+ doc?: RichTextDoc | null;
130
120
  variant?: RichTextVariant;
131
121
  blockData?: Record<string, unknown> | null;
132
122
  };
@@ -1,4 +1,4 @@
1
- export type { TipTapNode, TipTapMark, InlineText, InlineTextAccentTone, InlineTextHighlightTone, InlineTextMark, InlineTextRun, Media, LinkValue, InternalRouteOnlyLinkValue, InternalResolvedLinkValue, InternalLinkValue, ExternalLinkValue, CustomLinkValue, PageLinkValue, EntryLinkValue, RichTextPrimitiveProps, RichTextVariant, } from './content';
1
+ export type { TipTapNode, TipTapMark, RichTextDoc, InlineText, InlineTextAccentTone, InlineTextHighlightTone, InlineTextMark, InlineTextRun, Media, LinkValue, InternalRouteOnlyLinkValue, InternalResolvedLinkValue, InternalLinkValue, ExternalLinkValue, CustomLinkValue, PageLinkValue, EntryLinkValue, RichTextPrimitiveProps, RichTextVariant, } from './content';
2
2
  export type { AppointmentBookingContent, BlogListingContent, BlogPostContent, BodyTextAlignment, BodyTextContent, ButtonVariant, CalendarTabViews, CartContent, CardStylesContent, CheckoutContent, CollectionContent, ColumnsContent, ColumnOption, ContainerStylesContent, CourseDetailsContent, CourseRegistrationContent, CtaFullContent, DisplayMode, EmbedContent, EventCalendarContent, EventDetailsContent, EventLayout, EventListingContent, EventRegistrationContent, EventSpotlightContent, FaqContent, FaqItem, FilterAutoShow, FormBlockContent, GiftingContent, HeroContent, HeroCta, HeroCtaInput, HeroMedia, ImageColSize, ImageGalleryContent, LocationMapContent, LayoutAlign, LayoutWidth, MediaTextAlignment, MediaTextAspectRatio, MediaTextContent, MediaTextImagePosition, NewsletterSignupContent, NewsletterSignupPreset, ProductDetailContent, ProductListContent, RecurringScheduleContent, SectionStylesContent, SemanticIconId, SemanticSpacing, ShopContent, SingleButtonContent, SiteFooterContent, SiteHeaderContent, StackContentAlignment, StackImagePosition, SystemBlockContentByFullKind, SystemBlockContentByKind, SystemBlockContentFor, SystemBlockShortKind, TeamMembersContent, TestimonialEntryContent, TestimonialsBlockContent, ThumbnailPadding, ThumbnailShape, VideoGridContent, WeekStart, BlockIconValue, FeatureCardIconTreatment, } from './system-block-content';
3
3
  export type { PageOutline, PageRuntimeBoundary, BlockOutline, RouteMap, RouteMapEntry, OccurrenceContextData, EntrySubrouteContextData, } from './page';
4
4
  export type { Theme, ThemeTokens } from './theme';