@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.
- package/dist/{PreviewEditorSidebar-CTR6LUhN.mjs → PreviewEditorSidebar-C7TXFitV.mjs} +4 -4
- package/dist/{PreviewEditorUI-DZg15Zip.mjs → PreviewEditorUI-_1JIHTXS.mjs} +3 -3
- package/dist/{PreviewQueryProvider-kkmjklLG.mjs → PreviewQueryProvider-nKUT4TL-.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-DeOTAFvR.mjs → SdkPreviewModeRuntime-CvJTVgWa.mjs} +2579 -34325
- package/dist/{SiteChromeCustomizeContext-DOSDLCiJ.mjs → SiteChromeCustomizeContext-66QfCbAS.mjs} +64625 -32791
- package/dist/_dts/ai/src/contracts/proposals.d.ts +5211 -639
- package/dist/_dts/ai/src/designer/themePatch.d.ts +1 -1
- package/dist/_dts/api/src/bookingAdjustments.d.ts +30 -36
- package/dist/_dts/api/src/bookingConfig.d.ts +26 -1
- package/dist/_dts/api/src/bookingRecords.d.ts +6 -74
- package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +3 -3
- package/dist/_dts/api/src/contentRuntime.d.ts +5 -1
- package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +4 -4
- package/dist/_dts/api/src/endpoints.d.ts +35 -0
- package/dist/_dts/api/src/event-presentation.d.ts +4 -0
- package/dist/_dts/api/src/index.d.ts +4 -4
- package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +4 -1
- package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +2 -2
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +2 -2
- package/dist/_dts/api/src/sdkContracts.d.ts +85 -7
- package/dist/_dts/api/src/siteBanner.d.ts +8 -8
- package/dist/_dts/api/src/siteOperations.d.ts +1 -1
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +32 -4
- package/dist/_dts/block-form/src/widgets/RichTextField/richTextFieldDefaults.d.ts +3 -12
- package/dist/_dts/block-form/src/widgets/RichTextField/richTextFieldSchema.d.ts +1 -5
- package/dist/_dts/blocks/src/bindings/index.d.ts +1 -10
- package/dist/_dts/blocks/src/index.d.ts +3 -6
- package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/body-text.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/events/recurring-schedule.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +2 -8
- package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +3 -3
- package/dist/_dts/blocks/src/system/blocks/form.d.ts +2 -15
- package/dist/_dts/blocks/src/system/blocks/intro.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +66 -66
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +2 -16
- package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +0 -3
- package/dist/_dts/blocks/src/system/fragments/index.d.ts +0 -1
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +19 -2
- package/dist/_dts/blocks/src/system/manifest/richTextSchema.d.ts +8 -70
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +1 -0
- package/dist/_dts/blocks/src/system/manifest/validation.d.ts +6 -0
- package/dist/_dts/blocks/src/system/node/schema.d.ts +4 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +1 -10
- package/dist/_dts/blocks/src/system/runtime/nodes/buttonAffordance.d.ts +5 -21
- package/dist/_dts/blocks/src/system/runtime/nodes/richText-coerce.d.ts +14 -2
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
- package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +1 -1
- package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +17 -1
- package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +1 -1
- package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +1 -1
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -2
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +2 -2
- package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +1 -1
- package/dist/_dts/content-editor/src/ui/stores/types.d.ts +1 -1
- package/dist/_dts/content-model/src/content-types/builtins.d.ts +3 -15
- package/dist/_dts/content-model/src/content-types/entryValidation.d.ts +2 -0
- package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
- package/dist/_dts/content-model/src/templates/defaults.d.ts +1 -21
- package/dist/_dts/core/src/editor-state.d.ts +14 -1
- package/dist/_dts/core/src/footer-composition.d.ts +2 -1
- package/dist/_dts/core/src/index.d.ts +1 -0
- package/dist/_dts/core/src/rich-text.d.ts +16 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +189 -86
- package/dist/_dts/editor/src/index.d.ts +1 -1
- package/dist/_dts/editor/src/primitives/rich-text/utils.d.ts +3 -5
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +15 -0
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +3 -7
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +12 -0
- package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/block-editor/utils.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/index.d.ts +6 -5
- package/dist/_dts/editor-blocks/src/widgets/rich-text/RichTextField.d.ts +2 -2
- package/dist/_dts/media-core/src/contentMediaAudit.d.ts +104 -0
- package/dist/_dts/media-core/src/contentMediaAuditFieldAdapter.d.ts +8 -0
- package/dist/_dts/media-core/src/contentMediaSnapshotAudit.d.ts +22 -0
- package/dist/_dts/media-core/src/index.d.ts +3 -1
- package/dist/_dts/sdk/src/cli/commands/event.d.ts +18 -1
- package/dist/_dts/sdk/src/cli/commands/push/execute/theme.d.ts +2 -16
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +8 -5
- package/dist/_dts/sdk/src/client/management/events.d.ts +2 -1
- package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
- package/dist/_dts/sdk/src/client/management/types.d.ts +36 -9
- package/dist/_dts/sdk/src/config/typed-entries.d.ts +7 -7
- package/dist/_dts/sdk/src/config/validation.d.ts +7 -7
- package/dist/_dts/sdk/src/contracts/content.d.ts +5 -15
- package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +12 -25
- package/dist/_dts/sdk/src/contracts/theme.d.ts +2 -18
- package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +1 -1
- package/dist/_dts/sdk/src/manifest/three-pass-converter.d.ts +4 -4
- package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +1 -2
- package/dist/_dts/sdk/src/rendering/helpers/index.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -13
- package/dist/_dts/sdk/src/theme/index.d.ts +0 -29
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commands.d.ts +31 -18
- package/dist/_dts/theme-core/src/buttons/affordanceIcons.d.ts +2 -2
- package/dist/_dts/theme-core/src/buttons/core.d.ts +0 -1
- package/dist/_dts/theme-core/src/buttons/effectClassification.d.ts +22 -9
- package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -2
- package/dist/_dts/theme-core/src/buttons/effects/presets/border.d.ts +1 -2
- package/dist/_dts/theme-core/src/buttons/effects/presets/overlay.d.ts +3 -1
- package/dist/_dts/theme-core/src/buttons/effects/presets/shadow.d.ts +2 -2
- package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +8 -18
- package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +2 -2
- package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +5 -5
- package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -4
- package/dist/_dts/theme-core/src/buttons/parseThemeForPersistence.d.ts +36 -0
- package/dist/_dts/theme-core/src/buttons/types.d.ts +1638 -93
- package/dist/_dts/theme-core/src/cards/types.d.ts +13 -13
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +969 -69
- package/dist/_dts/theme-core/src/navigation/types.d.ts +2 -2
- package/dist/_dts/theme-core/src/recommend/generateThemes.d.ts +0 -1
- package/dist/_dts/theme-core/src/schema.d.ts +1100 -116
- package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +14 -14
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +4 -4
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +6 -0
- package/dist/cli/index.mjs +5706 -4852
- package/dist/cli/init-docs/content/cli-reference.md +40 -1
- package/dist/cli/init-docs/content/content-management.md +6 -0
- package/dist/client/{DiscountCodeDisclosure-C4xvTBux.mjs → DiscountCodeDisclosure-DIWj-P9v.mjs} +1 -1
- package/dist/client/{EventCombined.client-Cr7G131j.mjs → EventCombined.client-De8YWBSr.mjs} +2 -2
- package/dist/client/{EventListing.client-CAjbseNy.mjs → EventListing.client-seHTjimY.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-BMlWfwz3.mjs → LeafletStaticMap-BmQxFcJW.mjs} +1 -1
- package/dist/client/{MagicLinkForm-ChdFz96y.mjs → MagicLinkForm-OoJAIUIj.mjs} +1 -1
- package/dist/client/{StepIndicator-7D3GaBeM.mjs → StepIndicator-CiZ8kdPk.mjs} +2 -2
- package/dist/client/{accordion-D8JTs2Si.mjs → accordion-6lnN__XJ.mjs} +1 -1
- package/dist/client/{bookingForm-H3DCRBHs.mjs → bookingForm-5uyqhONU.mjs} +6 -6
- package/dist/client/bookings.mjs +2219 -527
- package/dist/client/{carousel-DMr_QWlz.mjs → carousel-Dtnifil_.mjs} +1 -1
- package/dist/client/{cart-DWMbfBdR.mjs → cart-5Tc5S7NV.mjs} +3 -3
- package/dist/client/{checkout-zmfdkXLx.mjs → checkout-CYKKN5Hr.mjs} +3 -3
- package/dist/client/client.mjs +2498 -2384
- package/dist/client/{colorTokenParts-FSS3al6l.mjs → colorStyles-BWpj_h4C.mjs} +88 -1
- package/dist/client/{courseRegistration-Z_mn18jy.mjs → courseRegistration-CxCBybB4.mjs} +6 -6
- package/dist/client/{eventCalendar-CYp0YJGF.mjs → eventCalendar-Xj2jZS9X.mjs} +4 -4
- package/dist/client/{eventCombined-rKyYZUa9.mjs → eventCombined-CgcMoOgM.mjs} +2 -2
- package/dist/client/{eventDetails-X0ZaUuMj.mjs → eventDetails-CEAH8Edc.mjs} +3 -3
- package/dist/client/{eventListing-W1SuL7EP.mjs → eventListing-qyPVQ0wP.mjs} +2 -2
- package/dist/client/{eventRegistration-ClWricui.mjs → eventRegistration-DDu79CtL.mjs} +6 -6
- package/dist/client/{form--eKPwAAD.mjs → form-Bc7JKI7I.mjs} +1 -1
- package/dist/client/{headerSection-BSeGr-FS.mjs → headerSection-vTku_LEl.mjs} +2 -2
- package/dist/client/hooks.mjs +373 -555
- package/dist/client/{locationMap-BpOrtNYn.mjs → locationMap-Bg7X4Jna.mjs} +3 -3
- package/dist/client/{media-DoF0dcVx.mjs → media-CNE1Z-wb.mjs} +1 -2
- package/dist/client/{newsletterForm-Bt7it7Dy.mjs → newsletterForm-lpylVdp5.mjs} +1 -1
- package/dist/client/{pricing-BTjSDDr4.mjs → pricing-DE8fjJiT.mjs} +1 -1
- package/dist/client/{productDetail-ICnVTcCg.mjs → productDetail-D7Bo2RMH.mjs} +3 -3
- package/dist/client/{productList-ZHr6D604.mjs → productList-VjnZqiqN.mjs} +3 -3
- package/dist/client/{propsDecoder-wWN0tBDF.mjs → propsDecoder-DreFXjNP.mjs} +2212 -621
- package/dist/client/rendering/client.mjs +21612 -21646
- package/dist/client/rendering/islands.mjs +20 -20
- package/dist/client/rendering.mjs +1571 -1547
- package/dist/client/{shop-C1u_BUn0.mjs → shop-IRsHHbf7.mjs} +5 -5
- package/dist/client/{shop-commerce-CleZdRha.mjs → shop-commerce-gnI8PieZ.mjs} +27 -10
- package/dist/client/{shop-commerce-store-ycnoB2Ce.mjs → shop-commerce-store-BTbrhObn.mjs} +1 -1
- package/dist/client/{shopShared-CPhByt2a.mjs → shopShared-D6KS2_qk.mjs} +3 -3
- package/dist/client/{useDiscountCodeUi-cStSQI6C.mjs → useDiscountCodeUi-DCccGCxV.mjs} +1 -1
- package/dist/client/{useEventFilters-DKPN7hSY.mjs → useEventFilters-eGs3rPZQ.mjs} +3 -104
- package/dist/client/{usePolling-BKAd6pkZ.mjs → usePolling-CvSU2sur.mjs} +2 -2
- package/dist/preview-next/before-render.mjs +57 -0
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/middleware.mjs +57 -0
- package/dist/{previewAuthStore-BkT1D06A.mjs → previewAuthStore-DN7vcRsv.mjs} +57 -0
- package/dist/{sdk-runtime-hu3wr3ng.mjs → sdk-runtime-DaOiA7ct.mjs} +2 -2
- package/dist/{separator-Bln8izQ9.mjs → separator-CqRhcCxD.mjs} +1 -1
- package/dist/server/components.mjs +4092 -4108
- package/dist/server/config-template-validation.mjs +4 -23
- package/dist/server/config-validation.mjs +373 -555
- package/dist/server/config.mjs +410 -558
- package/dist/server/data.mjs +373 -555
- package/dist/server/index.mjs +58 -1
- package/dist/server/next.mjs +32958 -32926
- package/dist/server/page-converter.mjs +369 -526
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +5371 -3174
- package/dist/server/rendering.mjs +4099 -4124
- package/dist/server/routing.mjs +758 -966
- package/dist/server/server.mjs +448 -632
- package/dist/server/theme-bridge.mjs +472 -525
- package/dist/server/theme.mjs +1074 -392
- package/package.json +1 -1
- package/dist/_dts/blocks/src/primitives/content/components/Button.d.ts +0 -40
- package/dist/_dts/blocks/src/system/fragments/library/footerBottomText.d.ts +0 -19
- package/dist/_dts/media-core/src/legacyMediaValue.d.ts +0 -11
- package/dist/_dts/theme-core/src/styles/buttons.d.ts +0 -27
- package/dist/_dts/theme-core/src/styles/buttonsLibrary.d.ts +0 -2
- package/dist/_dts/theme-core/src/styles/glow.d.ts +0 -3
- package/dist/client/colorStyles-gcTh5yZT.mjs +0 -89
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Media } from "../../lib/media";
|
|
2
|
-
import type {
|
|
2
|
+
import type { RichTextDoc } 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";
|
|
@@ -127,14 +127,8 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
127
127
|
readonly id: string;
|
|
128
128
|
readonly label: string;
|
|
129
129
|
readonly required: boolean;
|
|
130
|
-
readonly type: "
|
|
131
|
-
readonly
|
|
132
|
-
value: string;
|
|
133
|
-
label: string;
|
|
134
|
-
description?: string | undefined;
|
|
135
|
-
icon?: string | undefined;
|
|
136
|
-
}[];
|
|
137
|
-
readonly multiple: boolean;
|
|
130
|
+
readonly type: "media";
|
|
131
|
+
readonly mediaKinds: ("image" | "video" | "audio")[];
|
|
138
132
|
readonly description?: string | undefined;
|
|
139
133
|
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
140
134
|
readonly defaultValue?: any;
|
|
@@ -233,20 +227,13 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
233
227
|
renderInHeader?: boolean | undefined;
|
|
234
228
|
intent?: "style" | "display" | "content" | "behavior" | undefined;
|
|
235
229
|
} | undefined;
|
|
236
|
-
readonly
|
|
237
|
-
kind: "static";
|
|
238
|
-
} | {
|
|
239
|
-
kind: "site";
|
|
240
|
-
optionSource: "venues" | "eventCategories" | "staffMembers";
|
|
241
|
-
} | {
|
|
242
|
-
kind: "sdk";
|
|
243
|
-
} | undefined;
|
|
230
|
+
readonly aspectRatio?: string | undefined;
|
|
244
231
|
} | {
|
|
245
232
|
readonly id: string;
|
|
246
233
|
readonly label: string;
|
|
247
234
|
readonly required: boolean;
|
|
248
|
-
readonly type: "
|
|
249
|
-
readonly
|
|
235
|
+
readonly type: "file";
|
|
236
|
+
readonly fileKinds: ("audio" | "document" | "spreadsheet" | "archive")[];
|
|
250
237
|
readonly description?: string | undefined;
|
|
251
238
|
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
252
239
|
readonly defaultValue?: any;
|
|
@@ -345,12 +332,18 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
345
332
|
renderInHeader?: boolean | undefined;
|
|
346
333
|
intent?: "style" | "display" | "content" | "behavior" | undefined;
|
|
347
334
|
} | undefined;
|
|
348
|
-
readonly maxLength?: number | undefined;
|
|
349
335
|
} | {
|
|
350
336
|
readonly id: string;
|
|
351
337
|
readonly label: string;
|
|
352
338
|
readonly required: boolean;
|
|
353
|
-
readonly type: "
|
|
339
|
+
readonly type: "select";
|
|
340
|
+
readonly options: {
|
|
341
|
+
value: string;
|
|
342
|
+
label: string;
|
|
343
|
+
description?: string | undefined;
|
|
344
|
+
icon?: string | undefined;
|
|
345
|
+
}[];
|
|
346
|
+
readonly multiple: boolean;
|
|
354
347
|
readonly description?: string | undefined;
|
|
355
348
|
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
356
349
|
readonly defaultValue?: any;
|
|
@@ -449,11 +442,20 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
449
442
|
renderInHeader?: boolean | undefined;
|
|
450
443
|
intent?: "style" | "display" | "content" | "behavior" | undefined;
|
|
451
444
|
} | undefined;
|
|
445
|
+
readonly source?: {
|
|
446
|
+
kind: "static";
|
|
447
|
+
} | {
|
|
448
|
+
kind: "site";
|
|
449
|
+
optionSource: "venues" | "eventCategories" | "staffMembers";
|
|
450
|
+
} | {
|
|
451
|
+
kind: "sdk";
|
|
452
|
+
} | undefined;
|
|
452
453
|
} | {
|
|
453
454
|
readonly id: string;
|
|
454
455
|
readonly label: string;
|
|
455
456
|
readonly required: boolean;
|
|
456
|
-
readonly type: "
|
|
457
|
+
readonly type: "text";
|
|
458
|
+
readonly multiline: boolean;
|
|
457
459
|
readonly description?: string | undefined;
|
|
458
460
|
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
459
461
|
readonly defaultValue?: any;
|
|
@@ -553,13 +555,11 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
553
555
|
intent?: "style" | "display" | "content" | "behavior" | undefined;
|
|
554
556
|
} | undefined;
|
|
555
557
|
readonly maxLength?: number | undefined;
|
|
556
|
-
readonly plainTextField?: string | undefined;
|
|
557
558
|
} | {
|
|
558
559
|
readonly id: string;
|
|
559
560
|
readonly label: string;
|
|
560
561
|
readonly required: boolean;
|
|
561
|
-
readonly type: "
|
|
562
|
-
readonly mediaKinds: ("image" | "video" | "audio")[];
|
|
562
|
+
readonly type: "richText";
|
|
563
563
|
readonly description?: string | undefined;
|
|
564
564
|
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
565
565
|
readonly defaultValue?: any;
|
|
@@ -658,13 +658,11 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
658
658
|
renderInHeader?: boolean | undefined;
|
|
659
659
|
intent?: "style" | "display" | "content" | "behavior" | undefined;
|
|
660
660
|
} | undefined;
|
|
661
|
-
readonly aspectRatio?: string | undefined;
|
|
662
661
|
} | {
|
|
663
662
|
readonly id: string;
|
|
664
663
|
readonly label: string;
|
|
665
664
|
readonly required: boolean;
|
|
666
|
-
readonly type: "
|
|
667
|
-
readonly fileKinds: ("audio" | "document" | "spreadsheet" | "archive")[];
|
|
665
|
+
readonly type: "inlineText";
|
|
668
666
|
readonly description?: string | undefined;
|
|
669
667
|
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
670
668
|
readonly defaultValue?: any;
|
|
@@ -763,6 +761,8 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
763
761
|
renderInHeader?: boolean | undefined;
|
|
764
762
|
intent?: "style" | "display" | "content" | "behavior" | undefined;
|
|
765
763
|
} | undefined;
|
|
764
|
+
readonly maxLength?: number | undefined;
|
|
765
|
+
readonly plainTextField?: string | undefined;
|
|
766
766
|
} | {
|
|
767
767
|
readonly id: string;
|
|
768
768
|
readonly label: string;
|
|
@@ -2027,10 +2027,6 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
2027
2027
|
readonly type: "repeater";
|
|
2028
2028
|
readonly required: boolean;
|
|
2029
2029
|
readonly description?: string | undefined;
|
|
2030
|
-
readonly minItems: number;
|
|
2031
|
-
readonly maxItems?: number | undefined;
|
|
2032
|
-
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
2033
|
-
readonly defaultValue?: any;
|
|
2034
2030
|
readonly ui?: {
|
|
2035
2031
|
widget?: string | undefined;
|
|
2036
2032
|
preset?: "disclosure" | undefined;
|
|
@@ -2126,6 +2122,10 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
2126
2122
|
renderInHeader?: boolean | undefined;
|
|
2127
2123
|
intent?: "style" | "display" | "content" | "behavior" | undefined;
|
|
2128
2124
|
} | undefined;
|
|
2125
|
+
readonly minItems: number;
|
|
2126
|
+
readonly maxItems?: number | undefined;
|
|
2127
|
+
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
2128
|
+
readonly defaultValue?: any;
|
|
2129
2129
|
readonly itemLabel: string;
|
|
2130
2130
|
readonly itemLabelSource?: string | undefined;
|
|
2131
2131
|
readonly showSummary?: boolean | undefined;
|
|
@@ -2143,8 +2143,6 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
2143
2143
|
readonly type: "group";
|
|
2144
2144
|
readonly required: boolean;
|
|
2145
2145
|
readonly description?: string | undefined;
|
|
2146
|
-
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
2147
|
-
readonly defaultValue?: any;
|
|
2148
2146
|
readonly ui?: {
|
|
2149
2147
|
widget?: string | undefined;
|
|
2150
2148
|
preset?: "disclosure" | undefined;
|
|
@@ -2240,6 +2238,8 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
2240
2238
|
renderInHeader?: boolean | undefined;
|
|
2241
2239
|
intent?: "style" | "display" | "content" | "behavior" | undefined;
|
|
2242
2240
|
} | undefined;
|
|
2241
|
+
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
2242
|
+
readonly defaultValue?: any;
|
|
2243
2243
|
readonly schema: {
|
|
2244
2244
|
fields: import("../../../../block-form/src/backend/index").FieldDefinition[];
|
|
2245
2245
|
};
|
|
@@ -2249,8 +2249,6 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
2249
2249
|
readonly type: "modal";
|
|
2250
2250
|
readonly required: boolean;
|
|
2251
2251
|
readonly description?: string | undefined;
|
|
2252
|
-
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
2253
|
-
readonly defaultValue?: any;
|
|
2254
2252
|
readonly ui?: {
|
|
2255
2253
|
widget?: string | undefined;
|
|
2256
2254
|
preset?: "disclosure" | undefined;
|
|
@@ -2346,6 +2344,8 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
2346
2344
|
renderInHeader?: boolean | undefined;
|
|
2347
2345
|
intent?: "style" | "display" | "content" | "behavior" | undefined;
|
|
2348
2346
|
} | undefined;
|
|
2347
|
+
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
2348
|
+
readonly defaultValue?: any;
|
|
2349
2349
|
readonly schema: {
|
|
2350
2350
|
fields: import("../../../../block-form/src/backend/index").FieldDefinition[];
|
|
2351
2351
|
};
|
|
@@ -2355,8 +2355,6 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
2355
2355
|
readonly type: "tabGroup";
|
|
2356
2356
|
readonly required: boolean;
|
|
2357
2357
|
readonly description?: string | undefined;
|
|
2358
|
-
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
2359
|
-
readonly defaultValue?: any;
|
|
2360
2358
|
readonly ui?: {
|
|
2361
2359
|
widget?: string | undefined;
|
|
2362
2360
|
preset?: "disclosure" | undefined;
|
|
@@ -2452,6 +2450,8 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
2452
2450
|
renderInHeader?: boolean | undefined;
|
|
2453
2451
|
intent?: "style" | "display" | "content" | "behavior" | undefined;
|
|
2454
2452
|
} | undefined;
|
|
2453
|
+
readonly visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
2454
|
+
readonly defaultValue?: any;
|
|
2455
2455
|
readonly activeTabField?: string | undefined;
|
|
2456
2456
|
readonly tabs: import("..").TabDefinition[];
|
|
2457
2457
|
}, ...({
|
|
@@ -2569,25 +2569,12 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
2569
2569
|
id: string;
|
|
2570
2570
|
label: string;
|
|
2571
2571
|
required: boolean;
|
|
2572
|
-
type: "
|
|
2573
|
-
|
|
2574
|
-
value: string;
|
|
2575
|
-
label: string;
|
|
2576
|
-
description?: string | undefined;
|
|
2577
|
-
icon?: string | undefined;
|
|
2578
|
-
}[];
|
|
2579
|
-
multiple: boolean;
|
|
2572
|
+
type: "media";
|
|
2573
|
+
mediaKinds: ("image" | "video" | "audio")[];
|
|
2580
2574
|
description?: string | undefined;
|
|
2581
2575
|
visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
2582
2576
|
defaultValue?: any;
|
|
2583
|
-
|
|
2584
|
-
kind: "static";
|
|
2585
|
-
} | {
|
|
2586
|
-
kind: "site";
|
|
2587
|
-
optionSource: "venues" | "eventCategories" | "staffMembers";
|
|
2588
|
-
} | {
|
|
2589
|
-
kind: "sdk";
|
|
2590
|
-
} | undefined;
|
|
2577
|
+
aspectRatio?: string | undefined;
|
|
2591
2578
|
} | {
|
|
2592
2579
|
ui: {
|
|
2593
2580
|
visibleWhen: {
|
|
@@ -2703,12 +2690,11 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
2703
2690
|
id: string;
|
|
2704
2691
|
label: string;
|
|
2705
2692
|
required: boolean;
|
|
2706
|
-
type: "
|
|
2707
|
-
|
|
2693
|
+
type: "file";
|
|
2694
|
+
fileKinds: ("audio" | "document" | "spreadsheet" | "archive")[];
|
|
2708
2695
|
description?: string | undefined;
|
|
2709
2696
|
visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
2710
2697
|
defaultValue?: any;
|
|
2711
|
-
maxLength?: number | undefined;
|
|
2712
2698
|
} | {
|
|
2713
2699
|
ui: {
|
|
2714
2700
|
visibleWhen: {
|
|
@@ -2824,10 +2810,25 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
2824
2810
|
id: string;
|
|
2825
2811
|
label: string;
|
|
2826
2812
|
required: boolean;
|
|
2827
|
-
type: "
|
|
2813
|
+
type: "select";
|
|
2814
|
+
options: {
|
|
2815
|
+
value: string;
|
|
2816
|
+
label: string;
|
|
2817
|
+
description?: string | undefined;
|
|
2818
|
+
icon?: string | undefined;
|
|
2819
|
+
}[];
|
|
2820
|
+
multiple: boolean;
|
|
2828
2821
|
description?: string | undefined;
|
|
2829
2822
|
visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
2830
2823
|
defaultValue?: any;
|
|
2824
|
+
source?: {
|
|
2825
|
+
kind: "static";
|
|
2826
|
+
} | {
|
|
2827
|
+
kind: "site";
|
|
2828
|
+
optionSource: "venues" | "eventCategories" | "staffMembers";
|
|
2829
|
+
} | {
|
|
2830
|
+
kind: "sdk";
|
|
2831
|
+
} | undefined;
|
|
2831
2832
|
} | {
|
|
2832
2833
|
ui: {
|
|
2833
2834
|
visibleWhen: {
|
|
@@ -2943,12 +2944,12 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
2943
2944
|
id: string;
|
|
2944
2945
|
label: string;
|
|
2945
2946
|
required: boolean;
|
|
2946
|
-
type: "
|
|
2947
|
+
type: "text";
|
|
2948
|
+
multiline: boolean;
|
|
2947
2949
|
description?: string | undefined;
|
|
2948
2950
|
visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
2949
2951
|
defaultValue?: any;
|
|
2950
2952
|
maxLength?: number | undefined;
|
|
2951
|
-
plainTextField?: string | undefined;
|
|
2952
2953
|
} | {
|
|
2953
2954
|
ui: {
|
|
2954
2955
|
visibleWhen: {
|
|
@@ -3064,12 +3065,10 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
3064
3065
|
id: string;
|
|
3065
3066
|
label: string;
|
|
3066
3067
|
required: boolean;
|
|
3067
|
-
type: "
|
|
3068
|
-
mediaKinds: ("image" | "video" | "audio")[];
|
|
3068
|
+
type: "richText";
|
|
3069
3069
|
description?: string | undefined;
|
|
3070
3070
|
visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
3071
3071
|
defaultValue?: any;
|
|
3072
|
-
aspectRatio?: string | undefined;
|
|
3073
3072
|
} | {
|
|
3074
3073
|
ui: {
|
|
3075
3074
|
visibleWhen: {
|
|
@@ -3185,11 +3184,12 @@ export declare const mediaTextManifest: import("..").DefinedBlockManifest<import
|
|
|
3185
3184
|
id: string;
|
|
3186
3185
|
label: string;
|
|
3187
3186
|
required: boolean;
|
|
3188
|
-
type: "
|
|
3189
|
-
fileKinds: ("audio" | "document" | "spreadsheet" | "archive")[];
|
|
3187
|
+
type: "inlineText";
|
|
3190
3188
|
description?: string | undefined;
|
|
3191
3189
|
visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
|
|
3192
3190
|
defaultValue?: any;
|
|
3191
|
+
maxLength?: number | undefined;
|
|
3192
|
+
plainTextField?: string | undefined;
|
|
3193
3193
|
} | {
|
|
3194
3194
|
ui: {
|
|
3195
3195
|
visibleWhen: {
|
|
@@ -5283,7 +5283,7 @@ export type MediaTextContent = {
|
|
|
5283
5283
|
carouselAutoplayDelay?: "3000" | "5000" | "7000" | "10000" | null;
|
|
5284
5284
|
carouselArrowVisibility?: "always" | "hover" | "never" | null;
|
|
5285
5285
|
showDots?: boolean | null;
|
|
5286
|
-
text:
|
|
5286
|
+
text: RichTextDoc;
|
|
5287
5287
|
wrapTextInCard?: boolean | null;
|
|
5288
5288
|
_textCardStyles?: unknown;
|
|
5289
5289
|
_frameStyles?: ContentFrameIntent | null;
|
|
@@ -2,6 +2,7 @@ import type { SystemBlockDefinition } from "../registry";
|
|
|
2
2
|
import type { SectionStylesContent } from "../fields/boxStyles";
|
|
3
3
|
import { newsletterFormBlockRuntime } from "../runtime/nodes/newsletter-form.interactive";
|
|
4
4
|
import type { NewsletterSignupAuthoringDestination, NewsletterSignupFieldPreset } from "./newsletter-signup-destination";
|
|
5
|
+
import type { RichTextDoc } from "../manifest/richTextSchema";
|
|
5
6
|
import type { BlockButtonRole } from "../constants/buttonRoles";
|
|
6
7
|
export declare const newsletterSignupManifest: import("..").DefinedBlockManifest<import("..").BlockContentShapeInput<{
|
|
7
8
|
readonly id: "block.newsletter-signup";
|
|
@@ -183,25 +184,10 @@ export declare const newsletterSignupManifest: import("..").DefinedBlockManifest
|
|
|
183
184
|
readonly tags: readonly ["newsletter", "signup", "email", "subscribe", "subscription", "mailchimp", "marketing", "lead-capture"];
|
|
184
185
|
readonly icon: "Mail";
|
|
185
186
|
}>>;
|
|
186
|
-
/**
|
|
187
|
-
* Rich text document structure (ProseMirror format)
|
|
188
|
-
*/
|
|
189
|
-
type NewsletterRichTextDoc = {
|
|
190
|
-
type: 'doc';
|
|
191
|
-
content?: Array<{
|
|
192
|
-
type: string;
|
|
193
|
-
content?: Array<{
|
|
194
|
-
type: string;
|
|
195
|
-
text?: string;
|
|
196
|
-
[key: string]: unknown;
|
|
197
|
-
}>;
|
|
198
|
-
[key: string]: unknown;
|
|
199
|
-
}>;
|
|
200
|
-
};
|
|
201
187
|
export type NewsletterSignupPreset = NewsletterSignupFieldPreset;
|
|
202
188
|
export type NewsletterSignupContent = {
|
|
203
189
|
title?: string | null;
|
|
204
|
-
subtitle?:
|
|
190
|
+
subtitle?: RichTextDoc | null;
|
|
205
191
|
listId?: string | null;
|
|
206
192
|
preset: NewsletterSignupPreset;
|
|
207
193
|
includePhone?: boolean | null;
|
|
@@ -5,9 +5,6 @@ export declare const siteFooterManifest: import("..").DefinedBlockManifest<{
|
|
|
5
5
|
}>;
|
|
6
6
|
export type SiteFooterVariant = 'simple' | 'columns' | 'split';
|
|
7
7
|
export type SiteFooterContent = Readonly<{
|
|
8
|
-
/** Legacy storage-only fields. The V1 runtime does not read these values. */
|
|
9
|
-
bodyText?: unknown;
|
|
10
|
-
bottomText?: unknown;
|
|
11
8
|
showBusinessAddress?: boolean | null;
|
|
12
9
|
footerRuntime?: FooterRuntimeViewModel | null;
|
|
13
10
|
}>;
|
|
@@ -14,7 +14,6 @@ export * from "./library/testimonialsCarousel";
|
|
|
14
14
|
export * from "./library/formCopy";
|
|
15
15
|
export * from "./library/formEmbed";
|
|
16
16
|
export * from "./library/bookingForm";
|
|
17
|
-
export * from "./library/footerBottomText";
|
|
18
17
|
export * from "./library/headerCta";
|
|
19
18
|
export * from "./library/singleButton";
|
|
20
19
|
export * from "./library/blogFeaturedPost";
|
|
@@ -201,7 +201,7 @@ export type InlineTextFieldValidationPlan = PlanBase<"inlineText", "array", Inli
|
|
|
201
201
|
}>;
|
|
202
202
|
export type MediaFieldValidationPlan = PlanBase<"media", "object", ObjectConstraint> & Readonly<{
|
|
203
203
|
fieldType: "media" | "file";
|
|
204
|
-
|
|
204
|
+
allowedMediaTypes: readonly string[];
|
|
205
205
|
}>;
|
|
206
206
|
export type LinkFieldValidationPlan = PlanBase<"link", "object", ObjectConstraint> & Readonly<{
|
|
207
207
|
fieldType: "link";
|
|
@@ -216,7 +216,17 @@ export type RepeaterFieldValidationPlan = PlanBase<"repeater", "array", ArrayCon
|
|
|
216
216
|
}>;
|
|
217
217
|
export type GroupFieldValidationPlan = PlanBase<"group", "object", ObjectConstraint> & Readonly<{
|
|
218
218
|
fieldType: "group" | "modal" | "tabGroup";
|
|
219
|
-
|
|
219
|
+
childSelection: Readonly<{
|
|
220
|
+
kind: "all";
|
|
221
|
+
fields: readonly FieldValidationPlan[];
|
|
222
|
+
}> | Readonly<{
|
|
223
|
+
kind: "discriminatedTabs";
|
|
224
|
+
activeTabField: string;
|
|
225
|
+
tabs: readonly Readonly<{
|
|
226
|
+
typeId: string;
|
|
227
|
+
fields: readonly FieldValidationPlan[];
|
|
228
|
+
}>[];
|
|
229
|
+
}>;
|
|
220
230
|
allowNullChildren?: boolean;
|
|
221
231
|
}>;
|
|
222
232
|
export type PassthroughFieldValidationPlan = PlanBase<"passthrough", "unknown", RequiredConstraint> & Readonly<{
|
|
@@ -241,6 +251,13 @@ export declare function deriveFieldValidationPlans(fields: readonly FieldDefinit
|
|
|
241
251
|
export declare function fieldPlanToNativeInputProps(plan: FieldValidationPlan): NativeInputValidationProps;
|
|
242
252
|
export declare function normalizeFieldInput(plan: FieldValidationPlan, value: unknown, options?: FieldValidationOptions): unknown;
|
|
243
253
|
export declare function normalizeStoredContentValues(plans: readonly FieldValidationPlan[], content: unknown, options?: FieldValidationOptions): Record<string, unknown>;
|
|
254
|
+
/**
|
|
255
|
+
* Produces the portable representation accepted by content persistence.
|
|
256
|
+
* Runtime-hydrated media fields are stripped only when a canonical identifier
|
|
257
|
+
* is already present; unresolved environment-specific references remain
|
|
258
|
+
* invalid and must be handled by the site-scoped media write normalizer first.
|
|
259
|
+
*/
|
|
260
|
+
export declare function normalizeManifestContentForWrite(plans: readonly FieldValidationPlan[], content: unknown, options?: FieldValidationOptions): Record<string, unknown>;
|
|
244
261
|
export declare function validateFieldValue(plan: FieldValidationPlan, value: unknown, options?: FieldValidationOptions): FieldValidationIssue[];
|
|
245
262
|
export declare function fieldPlanToZod(plan: FieldValidationPlan, options?: FieldValidationOptions): z.ZodTypeAny;
|
|
246
263
|
export declare function fieldPresenceForPlan(plan: Pick<FieldValidationPlan, "required">): FieldPresence;
|
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { RichTextDoc, TipTapNode } from '../../../../core/src/index';
|
|
3
|
+
export type { RichTextDoc, TipTapMark, TipTapNode, } from '../../../../core/src/index';
|
|
2
4
|
export declare const TipTapNodeSchema: z.ZodType<TipTapNode>;
|
|
3
|
-
/**
|
|
4
|
-
* Rich text value schema
|
|
5
|
-
*
|
|
6
|
-
* Producers MUST emit the canonical unwrapped form `{ type: 'doc', content: [...] }`.
|
|
7
|
-
* The wrapped form `{ doc: {...} }` is accepted only as a reading tolerance for data
|
|
8
|
-
* that pre-dates the unwrap migration (Supabase migrations `20251029173500_unwrap_richtext_format`
|
|
9
|
-
* and `20251029174000_update_template_bindings_unwrapped`). Do not introduce new
|
|
10
|
-
* producers of the wrapped shape.
|
|
11
|
-
*/
|
|
12
|
-
export declare const RichTextValueSchema: z.ZodUnion<readonly [z.ZodType<TipTapNode, unknown, z.core.$ZodTypeInternals<TipTapNode, unknown>>, z.ZodObject<{
|
|
13
|
-
doc: z.ZodType<TipTapNode, unknown, z.core.$ZodTypeInternals<TipTapNode, unknown>>;
|
|
14
|
-
}, z.core.$strip>]>;
|
|
15
5
|
/**
|
|
16
6
|
* Build Zod validation schema for rich text fields
|
|
17
7
|
*
|
|
@@ -28,24 +18,7 @@ export declare const RichTextValueSchema: z.ZodUnion<readonly [z.ZodType<TipTapN
|
|
|
28
18
|
* // Required field with custom label
|
|
29
19
|
* const schema = buildRichTextSchema({ required: true, label: 'Description' })
|
|
30
20
|
*/
|
|
31
|
-
/**
|
|
32
|
-
* TypeScript type for a TipTap document node
|
|
33
|
-
*
|
|
34
|
-
* Use this type for rich text content fields in block definitions.
|
|
35
|
-
* Defined explicitly (rather than inferred) because recursive Zod schemas
|
|
36
|
-
* require `z.ZodType<any>` which loses type information.
|
|
37
|
-
*/
|
|
38
|
-
export type TipTapNode = {
|
|
39
|
-
type: string;
|
|
40
|
-
content?: TipTapNode[];
|
|
41
|
-
text?: string;
|
|
42
|
-
attrs?: Record<string, unknown>;
|
|
43
|
-
marks?: TipTapMark[];
|
|
44
|
-
};
|
|
45
|
-
export type TipTapMark = {
|
|
46
|
-
type: string;
|
|
47
|
-
attrs?: Record<string, unknown>;
|
|
48
|
-
};
|
|
21
|
+
/** Narrow node variants used by the inline Markdown helpers below. */
|
|
49
22
|
export type RichTextTextNode = TipTapNode & {
|
|
50
23
|
type: 'text';
|
|
51
24
|
text: string;
|
|
@@ -65,49 +38,16 @@ export type RichTextInlineNode = RichTextTextNode | RichTextHardBreakNode;
|
|
|
65
38
|
* (dummy content, editor output, migrations) must emit, and the shape every
|
|
66
39
|
* non-legacy consumer can rely on.
|
|
67
40
|
*
|
|
68
|
-
* Legacy envelopes are read-tolerated by {@link RichTextValueSchema} but
|
|
69
|
-
* normalised before reaching anywhere typed as `RichTextDoc`.
|
|
70
41
|
*/
|
|
71
|
-
export declare const RichTextDocSchema: z.
|
|
72
|
-
type: z.ZodLiteral<"doc">;
|
|
73
|
-
content: z.ZodArray<z.ZodType<TipTapNode, unknown, z.core.$ZodTypeInternals<TipTapNode, unknown>>>;
|
|
74
|
-
}, z.core.$strip>;
|
|
75
|
-
/**
|
|
76
|
-
* A TipTap document root — the canonical shape for rich text content
|
|
77
|
-
* in this codebase. Derived from {@link RichTextDocSchema} so the type and
|
|
78
|
-
* its runtime validator can never drift.
|
|
79
|
-
*/
|
|
80
|
-
export type RichTextDoc = z.infer<typeof RichTextDocSchema>;
|
|
42
|
+
export declare const RichTextDocSchema: z.ZodType<RichTextDoc>;
|
|
81
43
|
/**
|
|
82
44
|
* Type guard for {@link RichTextDoc}.
|
|
83
45
|
*
|
|
84
|
-
* Returns `true` only for the canonical unwrapped form.
|
|
85
|
-
*
|
|
86
|
-
*
|
|
46
|
+
* Returns `true` only for the canonical unwrapped form. The shared structural
|
|
47
|
+
* contract lives in `@riverbankcms/core`; parity tests keep its dependency-free
|
|
48
|
+
* guard aligned with this detailed Zod validator.
|
|
87
49
|
*/
|
|
88
50
|
export declare function isRichTextDoc(value: unknown): value is RichTextDoc;
|
|
89
|
-
/**
|
|
90
|
-
* Permissive unwrap for a value known to be the root of a rich-text field.
|
|
91
|
-
*
|
|
92
|
-
* Producers should emit the canonical unwrapped form `{ type: 'doc', content: [...] }`,
|
|
93
|
-
* but two legacy shapes still appear in older data and pre-Phase-1 fixtures:
|
|
94
|
-
*
|
|
95
|
-
* - `{ doc: <typed-doc> }` — pre-migration DB storage.
|
|
96
|
-
* - `{ doc: <typed-doc>, html, plain }` — pre-Phase-1 dummy-content output.
|
|
97
|
-
*
|
|
98
|
-
* This helper is the single right place to tolerate either shape at a known
|
|
99
|
-
* rich-text root (transforms, coercion, validators that operate on rich text).
|
|
100
|
-
* The strictness sits on the inner node's `type === 'doc'`, which prevents
|
|
101
|
-
* misidentifying random objects that happen to carry a field named `doc`.
|
|
102
|
-
*
|
|
103
|
-
* Returns the inner doc node when the input matches a legacy shape, otherwise
|
|
104
|
-
* returns the input unchanged.
|
|
105
|
-
*
|
|
106
|
-
* For deep structural traversal where any nested key might be named `doc`
|
|
107
|
-
* (and unwrapping would be incorrect), use the strict `isDocWrapper` private
|
|
108
|
-
* helper inside `@riverbankcms/blocks/bindings`.
|
|
109
|
-
*/
|
|
110
|
-
export declare function unwrapRichTextRoot(value: unknown): unknown;
|
|
111
51
|
/**
|
|
112
52
|
* Build a canonical {@link RichTextDoc} from plain-text paragraphs.
|
|
113
53
|
*
|
|
@@ -141,6 +81,4 @@ export declare function createRichTextDocFromMarkdown(markdown: string): RichTex
|
|
|
141
81
|
export declare function buildRichTextSchema(options?: {
|
|
142
82
|
required?: boolean;
|
|
143
83
|
label?: string;
|
|
144
|
-
}): z.
|
|
145
|
-
doc: z.ZodType<TipTapNode, unknown, z.core.$ZodTypeInternals<TipTapNode, unknown>>;
|
|
146
|
-
}, z.core.$strip>]>;
|
|
84
|
+
}): z.ZodType<RichTextDoc, unknown, z.core.$ZodTypeInternals<RichTextDoc, unknown>>;
|
|
@@ -11,6 +11,7 @@ export declare const MEDIA_KINDS: readonly ["image", "video", "audio", "document
|
|
|
11
11
|
export type MediaKind = (typeof MEDIA_KINDS)[number];
|
|
12
12
|
export declare const DISPLAY_MEDIA_KINDS: readonly ["image", "video", "audio"];
|
|
13
13
|
export type DisplayMediaKind = (typeof DISPLAY_MEDIA_KINDS)[number];
|
|
14
|
+
export declare const DEFAULT_MEDIA_FIELD_KINDS: readonly ["image"];
|
|
14
15
|
export declare const PUBLIC_FILE_FIELD_KINDS: readonly ["document", "spreadsheet", "archive", "audio"];
|
|
15
16
|
export type FileFieldKind = (typeof PUBLIC_FILE_FIELD_KINDS)[number];
|
|
16
17
|
export declare const siteOptionSources: readonly ["eventCategories", "venues", "staffMembers"];
|
|
@@ -20,4 +20,10 @@ type ValidatorOptions = {
|
|
|
20
20
|
};
|
|
21
21
|
export declare function deriveContentZodFromManifest(manifestOrFields: BlockManifest | FieldDefinition[], options?: ValidatorOptions): z.ZodObject<FieldShape>;
|
|
22
22
|
export declare function createManifestValidator(manifestOrFields: BlockManifest | FieldDefinition[], options?: ValidatorOptions): z.ZodType<Record<string, unknown>>;
|
|
23
|
+
/**
|
|
24
|
+
* Validates content at a persistence boundary and returns identifier-only media
|
|
25
|
+
* values. Render-time validation intentionally uses createManifestValidator so
|
|
26
|
+
* hydrated projection fields remain available to renderers.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createManifestWriteValidator(manifestOrFields: BlockManifest | FieldDefinition[], options?: ValidatorOptions): z.ZodType<Record<string, unknown>>;
|
|
23
29
|
export {};
|
|
@@ -9,8 +9,8 @@ export declare const bindingSchema: z.ZodObject<{
|
|
|
9
9
|
}, z.core.$strip>>>;
|
|
10
10
|
pick: z.ZodDefault<z.ZodEnum<{
|
|
11
11
|
value: "value";
|
|
12
|
-
collection: "collection";
|
|
13
12
|
context: "context";
|
|
13
|
+
collection: "collection";
|
|
14
14
|
}>>;
|
|
15
15
|
coerce: z.ZodOptional<z.ZodEnum<{
|
|
16
16
|
string: "string";
|
|
@@ -29,8 +29,8 @@ export declare const repeatSchema: z.ZodObject<{
|
|
|
29
29
|
}, z.core.$strip>>>;
|
|
30
30
|
pick: z.ZodDefault<z.ZodEnum<{
|
|
31
31
|
value: "value";
|
|
32
|
-
collection: "collection";
|
|
33
32
|
context: "context";
|
|
33
|
+
collection: "collection";
|
|
34
34
|
}>>;
|
|
35
35
|
coerce: z.ZodOptional<z.ZodEnum<{
|
|
36
36
|
string: "string";
|
|
@@ -67,8 +67,8 @@ export declare const conditionSchema: z.ZodObject<{
|
|
|
67
67
|
}, z.core.$strip>>>;
|
|
68
68
|
pick: z.ZodDefault<z.ZodEnum<{
|
|
69
69
|
value: "value";
|
|
70
|
-
collection: "collection";
|
|
71
70
|
context: "context";
|
|
71
|
+
collection: "collection";
|
|
72
72
|
}>>;
|
|
73
73
|
coerce: z.ZodOptional<z.ZodEnum<{
|
|
74
74
|
string: "string";
|
|
@@ -97,8 +97,8 @@ export declare const dataScopeSchema: z.ZodObject<{
|
|
|
97
97
|
}, z.core.$strip>>>;
|
|
98
98
|
pick: z.ZodDefault<z.ZodEnum<{
|
|
99
99
|
value: "value";
|
|
100
|
-
collection: "collection";
|
|
101
100
|
context: "context";
|
|
101
|
+
collection: "collection";
|
|
102
102
|
}>>;
|
|
103
103
|
coerce: z.ZodOptional<z.ZodEnum<{
|
|
104
104
|
string: "string";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type ButtonSizeName } from '../../../../../theme-core/src/buttons/index';
|
|
3
|
-
import { type ButtonAffordance } from './buttonAffordance';
|
|
4
3
|
import type { PreviewLinkedEntryFieldBinding } from '../../data';
|
|
5
4
|
export type TextNodeProps = {
|
|
6
5
|
value?: unknown;
|
|
@@ -52,17 +51,9 @@ export type ButtonNodeProps = {
|
|
|
52
51
|
linkRequired?: boolean;
|
|
53
52
|
/**
|
|
54
53
|
* Optional trailing affordance icon (a registry icon id, e.g. `'ArrowRight'`)
|
|
55
|
-
* rendered after the label. Overrides any
|
|
54
|
+
* rendered after the label. Overrides any theme-owned affordance.
|
|
56
55
|
*/
|
|
57
56
|
trailingIcon?: string;
|
|
58
|
-
/** Optional palette token for the trailing icon colour (e.g. `'accent'`). */
|
|
59
|
-
trailingIconColorToken?: string;
|
|
60
|
-
/**
|
|
61
|
-
* Personality/variant affordance default, supplied by the theme so a variant
|
|
62
|
-
* can carry a trailing icon without per-node authoring. Node-level
|
|
63
|
-
* `trailingIcon` takes precedence.
|
|
64
|
-
*/
|
|
65
|
-
personalityAffordance?: ButtonAffordance;
|
|
66
57
|
};
|
|
67
58
|
export declare const ButtonNode: React.FC<ButtonNodeProps & {
|
|
68
59
|
blockId?: string;
|
|
@@ -1,33 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pure
|
|
2
|
+
* Pure normalization of a button node's authored trailing icon.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* 2. The active button style/variant (`affordance`), supplied by the
|
|
7
|
-
* theme so a variant carries an affordance without per-node authoring.
|
|
8
|
-
*
|
|
9
|
-
* Node-level wins over the personality default. When neither supplies one, the
|
|
10
|
-
* button renders no trailing icon (and the personality's CSS `::after`
|
|
11
|
-
* affordance, if any, is left to show through).
|
|
4
|
+
* Theme-owned affordances render through canonical button CSS and `currentColor`;
|
|
5
|
+
* they are not duplicated as a second runtime colour contract.
|
|
12
6
|
*/
|
|
13
|
-
export type
|
|
7
|
+
export type ResolvedButtonAffordance = {
|
|
14
8
|
iconId: string;
|
|
15
|
-
colorToken?: string;
|
|
16
9
|
};
|
|
17
10
|
export type ResolveButtonAffordanceInput = {
|
|
18
11
|
/** Node-level icon id (e.g. `'ArrowRight'`). Highest priority. */
|
|
19
12
|
trailingIcon?: string | null;
|
|
20
|
-
/** Node-level colour token for the node icon. */
|
|
21
|
-
trailingIconColorToken?: string | null;
|
|
22
|
-
/** Personality/variant affordance default (theme-supplied). */
|
|
23
|
-
personalityAffordance?: ButtonAffordance | null;
|
|
24
|
-
};
|
|
25
|
-
export type ResolvedButtonAffordance = ButtonAffordance & {
|
|
26
|
-
/** Where the affordance came from — useful for suppression decisions and tests. */
|
|
27
|
-
source: 'node' | 'personality';
|
|
28
13
|
};
|
|
29
14
|
/**
|
|
30
|
-
* Resolve the trailing affordance
|
|
31
|
-
* personality; returns `null` when nothing is configured.
|
|
15
|
+
* Resolve the node-authored trailing affordance, or `null` when no icon exists.
|
|
32
16
|
*/
|
|
33
17
|
export declare function resolveButtonAffordance(input: ResolveButtonAffordanceInput): ResolvedButtonAffordance | null;
|