@riverbankcms/sdk 0.126.0 → 0.128.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-DcYJxTgc.mjs → PreviewEditorSidebar-Dbvb7GIr.mjs} +64 -68
- package/dist/{PreviewEditorUI-Ctt1yTJr.mjs → PreviewEditorUI-e9O9l20X.mjs} +3 -3
- package/dist/{PreviewQueryProvider-DgFDIwvK.mjs → PreviewQueryProvider-B1kbhaJD.mjs} +1 -1
- package/dist/SdkPreviewModeRuntime-BZHt6e9w.mjs +11006 -0
- package/dist/{SiteChromeCustomizeContext-C87qlKWw.mjs → SiteChromeCustomizeContext-CvuGbHJX.mjs} +51247 -20733
- package/dist/_dts/ai/src/contracts/proposals.d.ts +486 -36
- package/dist/_dts/api/src/bookingClosures.d.ts +19 -3
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -3
- package/dist/_dts/api/src/bookingRecords.d.ts +0 -13
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
- package/dist/_dts/api/src/communications.d.ts +2 -1
- package/dist/_dts/api/src/contactFormSummary.d.ts +15 -0
- package/dist/_dts/api/src/contentRuntime.d.ts +3 -10
- package/dist/_dts/api/src/endpoints.d.ts +1 -1
- package/dist/_dts/api/src/footerSettings.d.ts +11 -0
- package/dist/_dts/api/src/index.d.ts +2 -1
- package/dist/_dts/api/src/occurrenceScheduling.d.ts +48 -0
- package/dist/_dts/api/src/participantMessaging.d.ts +5 -3
- package/dist/_dts/api/src/publicExperience/siteEndpoints.d.ts +7 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +7 -5
- package/dist/_dts/api/src/siteOperations.d.ts +12 -3
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +3 -2
- package/dist/_dts/block-form/src/backend/store-backend.d.ts +2 -1
- package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +1 -0
- package/dist/_dts/blocks/src/client/form.d.ts +1 -0
- package/dist/_dts/blocks/src/client/newsletter-form.d.ts +1 -0
- package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -0
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -8
- package/dist/_dts/blocks/src/index.d.ts +3 -2
- package/dist/_dts/blocks/src/lib/media.d.ts +267 -0
- package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +41 -0
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +14 -23
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +109 -23
- package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +0 -13
- package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -108
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -54
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +26 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +4 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +29 -78
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -6
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +27 -8
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
- package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +21 -0
- package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +3 -1
- package/dist/_dts/content-editor/src/FooterEngagementEditorFields.d.ts +31 -0
- package/dist/_dts/content-editor/src/FooterEngagementEditorPanel.d.ts +17 -0
- package/dist/_dts/content-editor/src/footerComposer.d.ts +3 -0
- package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +57 -0
- package/dist/_dts/content-editor/src/footerEngagementEditor.d.ts +11 -0
- package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +13 -0
- package/dist/_dts/content-editor/src/index.d.ts +1 -0
- package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +17 -0
- package/dist/_dts/content-editor/src/ui/blockValidationView.d.ts +1 -1
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -0
- package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +35 -0
- package/dist/_dts/core/src/footer-arrangement.d.ts +2 -0
- package/dist/_dts/core/src/footer-composition-types.d.ts +118 -0
- package/dist/_dts/core/src/footer-composition.d.ts +7 -116
- package/dist/_dts/core/src/footer-engagement.d.ts +30 -0
- package/dist/_dts/core/src/index.d.ts +4 -0
- package/dist/_dts/core/src/newsletter-signup-destination.d.ts +38 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +200 -159
- package/dist/_dts/db/src/index.d.ts +1 -0
- package/dist/_dts/db/src/schemas/forms.d.ts +72 -2
- package/dist/_dts/db/src/schemas/standard-contact.d.ts +114 -0
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -0
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +26 -0
- package/dist/_dts/editor-blocks/src/widgets/rich-text/imageInsert.d.ts +3 -3
- package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -2
- package/dist/_dts/media-editor/src/context.d.ts +1 -2
- package/dist/_dts/media-editor/src/index.d.ts +3 -1
- package/dist/_dts/media-editor/src/mediaSelection.d.ts +32 -0
- package/dist/_dts/media-editor/src/types.d.ts +3 -1
- package/dist/_dts/media-editor/src/useMediaSelection.d.ts +26 -0
- package/dist/_dts/preview-next/src/client/blocks/previewBatchLoaderParams.d.ts +6 -0
- package/dist/_dts/preview-next/src/client/index.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -5
- package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -5
- package/dist/_dts/preview-next/src/client/preview/HeaderMenuControls.d.ts +12 -0
- package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -4
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +13 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +8 -4
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -49
- package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +8 -0
- package/dist/_dts/preview-next/src/client/preview/previewThemeRoles.d.ts +15 -0
- package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +54 -0
- package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +13 -3
- package/dist/_dts/preview-next/src/client/preview/siteChromeNavQuickControlHistory.d.ts +3 -0
- package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +6 -3
- package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +6 -5
- package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +9 -0
- package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +10 -0
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +3 -5
- package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +15 -3
- package/dist/_dts/sdk/src/client/combineAbortSignals.d.ts +2 -0
- package/dist/_dts/sdk/src/client/management/types.d.ts +6 -15
- package/dist/_dts/sdk/src/client/types.d.ts +10 -2
- package/dist/_dts/sdk/src/client/wholeSeriesReadOperations.d.ts +11 -0
- package/dist/_dts/sdk/src/config/types.d.ts +1 -1
- package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
- package/dist/_dts/sdk/src/contracts/event-registration-content.d.ts +16 -0
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -15
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -18
- package/dist/_dts/sdk/src/public-api/teamMemberContracts.d.ts +17 -0
- package/dist/_dts/sdk/src/public-api/wholeSeriesContracts.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +7 -0
- package/dist/_dts/sdk/src/rendering/index.d.ts +5 -3
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -2
- package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +8 -2
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commandContract.d.ts +8 -1
- package/dist/_dts/site-commands/src/commands.d.ts +16 -2
- package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +0 -18
- package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -3
- package/dist/_dts/theme-core/src/header/containerSchema.d.ts +20 -0
- package/dist/_dts/theme-core/src/header/generateHeaderCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +14 -0
- package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +3 -0
- package/dist/_dts/theme-core/src/header/paintTargets.d.ts +31 -0
- package/dist/_dts/theme-core/src/header/scrollTreatment.d.ts +11 -0
- package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +8 -0
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +15 -0
- package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
- package/dist/_dts/theme-core/src/schema.d.ts +67 -19
- package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +3 -51
- package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +4 -11
- package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +3 -51
- package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +32 -0
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +19 -106
- package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +22 -0
- package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +4 -0
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
- package/dist/_dts/theme-core/src/site-styles/lookOptionGroups.d.ts +24 -0
- package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +1 -2
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -22
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorOptions.d.ts +21 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +4 -1
- package/dist/cli/index.mjs +6272 -5706
- package/dist/client/{courseRegistration-BcemLAdN.mjs → CourseRegistrationWizard-xRmA7REV.mjs} +329 -49
- package/dist/client/{DiscountCodeDisclosure-DS0AuFWW.mjs → DiscountCodeDisclosure-B9vriL5C.mjs} +1 -1
- package/dist/client/{EventCombined.client-DtMxLr7q.mjs → EventCombined.client-BgVnVTlz.mjs} +2 -2
- package/dist/client/{EventListing.client-BdLSRNg1.mjs → EventListing.client-CqdsO7jO.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-BrpC6vsT.mjs → LeafletStaticMap-CKPxot9M.mjs} +1 -1
- package/dist/client/{StepIndicator-CBYPFVoy.mjs → StepIndicator-DGCYuBJ1.mjs} +2 -2
- package/dist/client/{accordion-BqqwPJWM.mjs → accordion-BfN5Eqd-.mjs} +1 -1
- package/dist/client/{bookingForm-SneP3yxC.mjs → bookingForm-DOvCpBFP.mjs} +5 -5
- package/dist/client/bookings.mjs +126 -23
- package/dist/client/{carousel-BTIR9L3I.mjs → carousel-DPNmiH0f.mjs} +1 -1
- package/dist/client/{cart-bqiqd8SX.mjs → cart--egVXlrR.mjs} +3 -3
- package/dist/client/{checkout-WbTFV5v4.mjs → checkout-DywWtMcq.mjs} +3 -3
- package/dist/client/client.mjs +6111 -5794
- package/dist/client/courseRegistration-Dk9qFVwt.mjs +46 -0
- package/dist/client/{eventCalendar-CsxIw0V_.mjs → eventCalendar-Bkz2HjlS.mjs} +4 -4
- package/dist/client/{eventCombined-B6XMoHfa.mjs → eventCombined-D4kipYWg.mjs} +2 -2
- package/dist/client/{eventDetails-BJaoPPfo.mjs → eventDetails-Dz_5ix2Q.mjs} +56 -35
- package/dist/client/{eventListing-DgwdYHRT.mjs → eventListing-D0vm-zST.mjs} +2 -2
- package/dist/client/{eventRegistration-C0O3folu.mjs → eventRegistration-Cw1E4Q4p.mjs} +58 -6
- package/dist/client/{form-Bk9txGFt.mjs → form-C2Zf1n3K.mjs} +1 -1
- package/dist/client/{headerSection-yIBt0yTv.mjs → headerSection-CP05gzdc.mjs} +2 -2
- package/dist/client/hooks.mjs +1013 -935
- package/dist/client/{locationMap-C-3KIpv-.mjs → locationMap-Cl3x9PYJ.mjs} +2 -2
- package/dist/client/{newsletterForm-CzB8g8h2.mjs → newsletterForm-DyEJoClm.mjs} +26 -20
- package/dist/client/{pricing-C1QeDes_.mjs → pricing-DGuNR1W4.mjs} +1 -1
- package/dist/client/{productDetail-w7SBp5uc.mjs → productDetail-Cq-HrGew.mjs} +3 -3
- package/dist/client/{productList-D0tGKHGf.mjs → productList-DbB3jwqd.mjs} +3 -3
- package/dist/client/{propsDecoder-Bcin2DB3.mjs → propsDecoder-CiTuhUwY.mjs} +257 -142
- package/dist/client/rendering/client.mjs +1342 -1122
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +6622 -6321
- package/dist/client/{scrollToBlock-h-o_STf_.mjs → scrollToBlock-CShkRqab.mjs} +1 -1
- package/dist/client/{shop-BGzmL8O_.mjs → shop-Cu4Ib-ZA.mjs} +5 -5
- package/dist/client/{shop-commerce-lX8QxjX-.mjs → shop-commerce-BzpsOdh7.mjs} +4 -4
- package/dist/client/{shop-commerce-store-CEurARtu.mjs → shop-commerce-store-DaE7Fhj8.mjs} +1 -1
- package/dist/client/{shopShared-DXxH8xxw.mjs → shopShared-cF0c20vB.mjs} +2 -2
- package/dist/client/{useEventFilters-B591g9vd.mjs → useEventFilters-QZ3HMgaJ.mjs} +2 -2
- package/dist/client/{usePolling-BvnChV4m.mjs → usePolling-BKf0GcE-.mjs} +2 -2
- package/dist/preview-next/before-render.mjs +1 -1
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/middleware.mjs +1 -1
- package/dist/{previewAuthStore-Dev9CdG9.mjs → previewAuthStore-BesgU5Xu.mjs} +1 -1
- package/dist/{sdk-runtime-M__i3Jce.mjs → sdk-runtime-Cn_QSCOg.mjs} +2 -2
- package/dist/{separator-VSlnI9bc.mjs → separator-CEoGABRc.mjs} +1 -1
- package/dist/server/components.mjs +1750 -1614
- package/dist/server/config-validation.mjs +1010 -935
- package/dist/server/config.mjs +1010 -935
- package/dist/server/data.mjs +1013 -935
- package/dist/server/index.mjs +40 -16
- package/dist/server/next.mjs +1790 -1632
- package/dist/server/page-converter.mjs +1012 -938
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1746 -1601
- package/dist/server/rendering.mjs +1759 -1615
- package/dist/server/routing.mjs +1123 -975
- package/dist/server/server.mjs +1053 -951
- package/dist/server/theme-bridge.mjs +151 -118
- package/dist/server/theme.mjs +111 -23
- package/package.json +1 -1
- package/dist/SdkPreviewModeRuntime-CvW1vdQ4.mjs +0 -39468
- package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts +0 -8
- package/dist/client/MagicLinkForm-Bt3IuLMy.mjs +0 -327
|
@@ -1,22 +1,7 @@
|
|
|
1
1
|
import { type InteractiveIslandProps } from '../../../contracts/islands';
|
|
2
|
-
import { type
|
|
3
|
-
import { type NewsletterButtonVariant, type NewsletterFieldDef, type NewsletterPreset } from './newsletter-form.types';
|
|
4
|
-
export type NewsletterFormSourceProps =
|
|
5
|
-
blockId?: string | null;
|
|
6
|
-
siteId?: string;
|
|
7
|
-
apiBaseUrl?: string;
|
|
8
|
-
listId?: string | null;
|
|
9
|
-
destinationProvider?: NewsletterSignupDestinationProvider | null;
|
|
10
|
-
preset?: NewsletterPreset;
|
|
11
|
-
includePhone?: boolean;
|
|
12
|
-
buttonLabel?: string | null;
|
|
13
|
-
buttonVariant?: NewsletterButtonVariant | null;
|
|
14
|
-
successMessage?: string | null;
|
|
15
|
-
privacyNote?: string | null;
|
|
16
|
-
tags?: string | null;
|
|
17
|
-
spamProtectionEnabled?: boolean;
|
|
18
|
-
className?: string | null;
|
|
19
|
-
}>;
|
|
2
|
+
import { type NewsletterSignupPublicDestinationRef } from '../../blocks/newsletter-signup-destination';
|
|
3
|
+
import { type NewsletterButtonVariant, type NewsletterFieldDef, type NewsletterFormProps, type NewsletterPreset } from './newsletter-form.types';
|
|
4
|
+
export type NewsletterFormSourceProps = NewsletterFormProps;
|
|
20
5
|
export type NewsletterFormDisplay = Readonly<{
|
|
21
6
|
kind: 'newsletter-form';
|
|
22
7
|
className: string | null;
|
|
@@ -27,13 +12,28 @@ export type NewsletterFormDisplay = Readonly<{
|
|
|
27
12
|
fields: readonly NewsletterFieldDef[];
|
|
28
13
|
}>;
|
|
29
14
|
export type NewsletterFormHydration = Readonly<{
|
|
30
|
-
|
|
31
|
-
listId?: string | null;
|
|
15
|
+
target: NewsletterFormHydrationTarget;
|
|
32
16
|
preset: NewsletterPreset;
|
|
33
17
|
includePhone: boolean;
|
|
34
18
|
tags?: string | null;
|
|
35
19
|
spamProtectionEnabled?: boolean;
|
|
36
20
|
}>;
|
|
21
|
+
export type NewsletterFormHydrationTarget = Readonly<{
|
|
22
|
+
tag: 'block-source';
|
|
23
|
+
destinationRef: NewsletterSignupBlockDestinationRef | null;
|
|
24
|
+
}> | Readonly<{
|
|
25
|
+
tag: 'signed-footer-source';
|
|
26
|
+
destinationRef: NewsletterSignupSignedDestinationRef;
|
|
27
|
+
}> | Readonly<{
|
|
28
|
+
tag: 'legacy-direct-list';
|
|
29
|
+
listId: string | null;
|
|
30
|
+
}>;
|
|
31
|
+
type NewsletterSignupBlockDestinationRef = Extract<NewsletterSignupPublicDestinationRef, {
|
|
32
|
+
tag: 'block_ref';
|
|
33
|
+
}>;
|
|
34
|
+
type NewsletterSignupSignedDestinationRef = Extract<NewsletterSignupPublicDestinationRef, {
|
|
35
|
+
tag: 'signed_destination_ref';
|
|
36
|
+
}>;
|
|
37
37
|
type NewsletterIslandMeta = Readonly<{
|
|
38
38
|
siteId?: string;
|
|
39
39
|
apiBaseUrl?: string;
|
|
@@ -42,22 +42,7 @@ export declare function buildNewsletterDisplay(source: NewsletterFormSourceProps
|
|
|
42
42
|
export type NewsletterFormInteractiveIslandProps = InteractiveIslandProps<NewsletterIslandMeta, 'newsletter-form', typeof newsletterFormBlockRuntime>;
|
|
43
43
|
export declare const newsletterFormBlockRuntime: Readonly<{
|
|
44
44
|
kind: "progressive";
|
|
45
|
-
buildRender: (source: Readonly<{
|
|
46
|
-
blockId?: string | null;
|
|
47
|
-
siteId?: string;
|
|
48
|
-
apiBaseUrl?: string;
|
|
49
|
-
listId?: string | null;
|
|
50
|
-
destinationProvider?: NewsletterSignupDestinationProvider | null;
|
|
51
|
-
preset?: NewsletterPreset;
|
|
52
|
-
includePhone?: boolean;
|
|
53
|
-
buttonLabel?: string | null;
|
|
54
|
-
buttonVariant?: NewsletterButtonVariant | null;
|
|
55
|
-
successMessage?: string | null;
|
|
56
|
-
privacyNote?: string | null;
|
|
57
|
-
tags?: string | null;
|
|
58
|
-
spamProtectionEnabled?: boolean;
|
|
59
|
-
className?: string | null;
|
|
60
|
-
}>) => Readonly<{
|
|
45
|
+
buildRender: (source: NewsletterFormProps) => Readonly<{
|
|
61
46
|
display: Readonly<{
|
|
62
47
|
kind: "newsletter-form";
|
|
63
48
|
className: string | null;
|
|
@@ -68,8 +53,7 @@ export declare const newsletterFormBlockRuntime: Readonly<{
|
|
|
68
53
|
fields: readonly NewsletterFieldDef[];
|
|
69
54
|
}>;
|
|
70
55
|
hydration: Readonly<{
|
|
71
|
-
|
|
72
|
-
listId?: string | null;
|
|
56
|
+
target: NewsletterFormHydrationTarget;
|
|
73
57
|
preset: NewsletterPreset;
|
|
74
58
|
includePhone: boolean;
|
|
75
59
|
tags?: string | null;
|
|
@@ -78,38 +62,8 @@ export declare const newsletterFormBlockRuntime: Readonly<{
|
|
|
78
62
|
}>;
|
|
79
63
|
contracts: Readonly<{
|
|
80
64
|
source: Readonly<{
|
|
81
|
-
encode: (value:
|
|
82
|
-
|
|
83
|
-
siteId?: string;
|
|
84
|
-
apiBaseUrl?: string;
|
|
85
|
-
listId?: string | null;
|
|
86
|
-
destinationProvider?: NewsletterSignupDestinationProvider | null;
|
|
87
|
-
preset?: NewsletterPreset;
|
|
88
|
-
includePhone?: boolean;
|
|
89
|
-
buttonLabel?: string | null;
|
|
90
|
-
buttonVariant?: NewsletterButtonVariant | null;
|
|
91
|
-
successMessage?: string | null;
|
|
92
|
-
privacyNote?: string | null;
|
|
93
|
-
tags?: string | null;
|
|
94
|
-
spamProtectionEnabled?: boolean;
|
|
95
|
-
className?: string | null;
|
|
96
|
-
}>) => unknown;
|
|
97
|
-
decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
|
|
98
|
-
blockId?: string | null;
|
|
99
|
-
siteId?: string;
|
|
100
|
-
apiBaseUrl?: string;
|
|
101
|
-
listId?: string | null;
|
|
102
|
-
destinationProvider?: NewsletterSignupDestinationProvider | null;
|
|
103
|
-
preset?: NewsletterPreset;
|
|
104
|
-
includePhone?: boolean;
|
|
105
|
-
buttonLabel?: string | null;
|
|
106
|
-
buttonVariant?: NewsletterButtonVariant | null;
|
|
107
|
-
successMessage?: string | null;
|
|
108
|
-
privacyNote?: string | null;
|
|
109
|
-
tags?: string | null;
|
|
110
|
-
spamProtectionEnabled?: boolean;
|
|
111
|
-
className?: string | null;
|
|
112
|
-
}>>;
|
|
65
|
+
encode: (value: NewsletterFormProps) => unknown;
|
|
66
|
+
decode: (input: unknown) => import("../../../contracts").DecodeResult<NewsletterFormProps>;
|
|
113
67
|
}>;
|
|
114
68
|
render: Readonly<{
|
|
115
69
|
encode: (value: Readonly<{
|
|
@@ -123,8 +77,7 @@ export declare const newsletterFormBlockRuntime: Readonly<{
|
|
|
123
77
|
fields: readonly NewsletterFieldDef[];
|
|
124
78
|
}>;
|
|
125
79
|
hydration: Readonly<{
|
|
126
|
-
|
|
127
|
-
listId?: string | null;
|
|
80
|
+
target: NewsletterFormHydrationTarget;
|
|
128
81
|
preset: NewsletterPreset;
|
|
129
82
|
includePhone: boolean;
|
|
130
83
|
tags?: string | null;
|
|
@@ -142,8 +95,7 @@ export declare const newsletterFormBlockRuntime: Readonly<{
|
|
|
142
95
|
fields: readonly NewsletterFieldDef[];
|
|
143
96
|
}>;
|
|
144
97
|
hydration: Readonly<{
|
|
145
|
-
|
|
146
|
-
listId?: string | null;
|
|
98
|
+
target: NewsletterFormHydrationTarget;
|
|
147
99
|
preset: NewsletterPreset;
|
|
148
100
|
includePhone: boolean;
|
|
149
101
|
tags?: string | null;
|
|
@@ -153,6 +105,7 @@ export declare const newsletterFormBlockRuntime: Readonly<{
|
|
|
153
105
|
}>;
|
|
154
106
|
}>;
|
|
155
107
|
}>;
|
|
108
|
+
export declare function projectNewsletterFormHydrationTarget(source: NewsletterFormSourceProps): NewsletterFormHydrationTarget;
|
|
156
109
|
export declare const newsletterFormInteractiveIslandPropsCodec: Readonly<{
|
|
157
110
|
encode: (value: Readonly<Readonly<{
|
|
158
111
|
siteId?: string;
|
|
@@ -172,8 +125,7 @@ export declare const newsletterFormInteractiveIslandPropsCodec: Readonly<{
|
|
|
172
125
|
fields: readonly NewsletterFieldDef[];
|
|
173
126
|
}>;
|
|
174
127
|
hydration: Readonly<{
|
|
175
|
-
|
|
176
|
-
listId?: string | null;
|
|
128
|
+
target: NewsletterFormHydrationTarget;
|
|
177
129
|
preset: NewsletterPreset;
|
|
178
130
|
includePhone: boolean;
|
|
179
131
|
tags?: string | null;
|
|
@@ -199,8 +151,7 @@ export declare const newsletterFormInteractiveIslandPropsCodec: Readonly<{
|
|
|
199
151
|
fields: readonly NewsletterFieldDef[];
|
|
200
152
|
}>;
|
|
201
153
|
hydration: Readonly<{
|
|
202
|
-
|
|
203
|
-
listId?: string | null;
|
|
154
|
+
target: NewsletterFormHydrationTarget;
|
|
204
155
|
preset: NewsletterPreset;
|
|
205
156
|
includePhone: boolean;
|
|
206
157
|
tags?: string | null;
|
|
@@ -6,5 +6,5 @@ import type { NewsletterFormProps } from './newsletter-form.types';
|
|
|
6
6
|
* Renders the newsletter signup form for SSR with hydration support.
|
|
7
7
|
* Uses the islands architecture pattern to hydrate on the client.
|
|
8
8
|
*/
|
|
9
|
-
export declare function NewsletterFormSSR(
|
|
9
|
+
export declare function NewsletterFormSSR(props: NewsletterFormProps): React.JSX.Element;
|
|
10
10
|
export default NewsletterFormSSR;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { NewsletterSubscribeTarget } from '../api/types';
|
|
2
|
-
import type {
|
|
2
|
+
import type { NewsletterFormHydrationTarget } from './newsletter-form.interactive';
|
|
3
3
|
export type NewsletterFormRawSubmissionFields = Readonly<{
|
|
4
4
|
email: FormDataEntryValue | null;
|
|
5
5
|
firstName: FormDataEntryValue | null;
|
|
@@ -23,10 +23,7 @@ export type NewsletterSubmitTargetResolution = Readonly<{
|
|
|
23
23
|
target: NewsletterSubscribeTarget;
|
|
24
24
|
}> | Readonly<{
|
|
25
25
|
tag: 'unavailable';
|
|
26
|
-
reason: 'missing_legacy_list';
|
|
26
|
+
reason: 'missing_block_source' | 'missing_legacy_list';
|
|
27
27
|
}>;
|
|
28
28
|
export declare function mapNewsletterFormFieldsToSubscriberInput(fields: NewsletterFormRawSubmissionFields): NewsletterFormSubmissionFields;
|
|
29
|
-
export declare function resolveNewsletterSubmitTarget(input:
|
|
30
|
-
listId?: string | null;
|
|
31
|
-
destinationRef?: NewsletterSignupPublicDestinationRef | null;
|
|
32
|
-
}>): NewsletterSubmitTargetResolution;
|
|
29
|
+
export declare function resolveNewsletterSubmitTarget(input: NewsletterFormHydrationTarget): NewsletterSubmitTargetResolution;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Shared types for the newsletter form server and client components.
|
|
5
5
|
*/
|
|
6
|
-
import type { NewsletterSignupFieldPreset } from '../../blocks/newsletter-signup-destination';
|
|
6
|
+
import type { NewsletterSignupDestinationProvider, NewsletterSignupFieldPreset, NewsletterSignupPublicDestinationRef } from '../../blocks/newsletter-signup-destination';
|
|
7
7
|
import type { BlockButtonRole } from '../../constants/buttonRoles';
|
|
8
8
|
export type NewsletterPreset = NewsletterSignupFieldPreset;
|
|
9
9
|
export type NewsletterFieldDef = {
|
|
@@ -15,17 +15,11 @@ export type NewsletterFieldDef = {
|
|
|
15
15
|
};
|
|
16
16
|
export type NewsletterDestinationProvider = 'riverbank' | 'mailchimp';
|
|
17
17
|
export type NewsletterButtonVariant = BlockButtonRole;
|
|
18
|
-
|
|
19
|
-
/** Block ID for island hydration */
|
|
20
|
-
blockId?: string | null;
|
|
18
|
+
type NewsletterFormCommonProps = {
|
|
21
19
|
/** Site ID for API calls */
|
|
22
20
|
siteId?: string;
|
|
23
21
|
/** API base URL for client-side fetching */
|
|
24
22
|
apiBaseUrl?: string;
|
|
25
|
-
/** Newsletter list ID to subscribe users to */
|
|
26
|
-
listId?: string | null;
|
|
27
|
-
/** Active signup destination provider */
|
|
28
|
-
destinationProvider?: NewsletterDestinationProvider | null;
|
|
29
23
|
/** Field preset configuration */
|
|
30
24
|
preset?: NewsletterPreset;
|
|
31
25
|
/** Adds an optional phone field to the selected preset */
|
|
@@ -45,9 +39,34 @@ export type NewsletterFormProps = {
|
|
|
45
39
|
/** Additional CSS class */
|
|
46
40
|
className?: string | null;
|
|
47
41
|
};
|
|
42
|
+
type BlockNewsletterFormSource = Readonly<{
|
|
43
|
+
source: 'block';
|
|
44
|
+
blockId?: string | null;
|
|
45
|
+
destinationProvider?: NewsletterSignupDestinationProvider | null;
|
|
46
|
+
/** Authoring state only; public submission authority is always blockId. */
|
|
47
|
+
listId?: string | null;
|
|
48
|
+
}>;
|
|
49
|
+
type SignedFooterNewsletterFormSource = Readonly<{
|
|
50
|
+
source: 'signed-footer';
|
|
51
|
+
destinationRef: Extract<NewsletterSignupPublicDestinationRef, {
|
|
52
|
+
tag: 'signed_destination_ref';
|
|
53
|
+
}>;
|
|
54
|
+
blockId?: never;
|
|
55
|
+
destinationProvider?: never;
|
|
56
|
+
listId?: never;
|
|
57
|
+
}>;
|
|
58
|
+
type LegacyDirectListNewsletterFormSource = Readonly<{
|
|
59
|
+
source: 'legacy-direct-list';
|
|
60
|
+
listId: string | null;
|
|
61
|
+
blockId?: never;
|
|
62
|
+
destinationRef?: never;
|
|
63
|
+
destinationProvider?: never;
|
|
64
|
+
}>;
|
|
65
|
+
export type NewsletterFormProps = NewsletterFormCommonProps & (BlockNewsletterFormSource | SignedFooterNewsletterFormSource | LegacyDirectListNewsletterFormSource);
|
|
48
66
|
/**
|
|
49
67
|
* Get form fields based on preset configuration.
|
|
50
68
|
*/
|
|
51
69
|
export declare function getPresetFields(preset: NewsletterPreset, options?: {
|
|
52
70
|
includePhone?: boolean;
|
|
53
71
|
}): NewsletterFieldDef[];
|
|
72
|
+
export {};
|
|
@@ -10,13 +10,13 @@ export declare const registrationButtonVariantSchema: z.ZodEnum<{
|
|
|
10
10
|
secondary: "secondary";
|
|
11
11
|
ghost: "ghost";
|
|
12
12
|
}>;
|
|
13
|
-
export declare const eventButtonVariantSchema: z.
|
|
13
|
+
export declare const eventButtonVariantSchema: z.ZodEnum<{
|
|
14
14
|
outline: "outline";
|
|
15
15
|
accent: "accent";
|
|
16
16
|
primary: "primary";
|
|
17
17
|
secondary: "secondary";
|
|
18
18
|
ghost: "ghost";
|
|
19
|
-
}
|
|
19
|
+
}>;
|
|
20
20
|
export declare const eventLayoutSchema: z.ZodEnum<{
|
|
21
21
|
stack: "stack";
|
|
22
22
|
grid: "grid";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type FooterCompositionV1 } from '../../core/src/index';
|
|
2
|
+
import type { FooterRuntimeViewModel } from '../../blocks/src/client/site-chrome';
|
|
3
|
+
import { type FooterEditorTarget, type planFooterEditorView } from './footerComposer';
|
|
4
|
+
import type { SaveState } from './useFooterComposerState';
|
|
5
|
+
type FooterPlan = ReturnType<typeof planFooterEditorView>;
|
|
6
|
+
export declare function SaveBadge({ state }: {
|
|
7
|
+
state: SaveState;
|
|
8
|
+
}): import("react").JSX.Element | null;
|
|
9
|
+
export declare function FooterPreview({ runtime, }: {
|
|
10
|
+
runtime: FooterRuntimeViewModel;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
export declare function FooterOverview({ plan, composition, onTarget, onChange, manageLinksHref, manageSettingsHref, onEngagement, }: {
|
|
13
|
+
plan: FooterPlan;
|
|
14
|
+
composition: FooterCompositionV1;
|
|
15
|
+
onTarget: (target: FooterEditorTarget) => void;
|
|
16
|
+
onChange: (composition: FooterCompositionV1) => void;
|
|
17
|
+
manageLinksHref: string;
|
|
18
|
+
manageSettingsHref: string;
|
|
19
|
+
onEngagement: () => void;
|
|
20
|
+
}): import("react").JSX.Element;
|
|
21
|
+
export {};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import type { ApiClient } from '../../api/src/request';
|
|
3
3
|
import { type FooterEditorTarget } from './footerComposer';
|
|
4
|
-
export declare function FooterComposerPanel({ apiClient, siteId: rawSiteId, customFooterMode, manageLinksHref, manageSettingsHref, legalRegion, initialTarget, variant, canEdit, onSaved, loadingFallback, }: {
|
|
4
|
+
export declare function FooterComposerPanel({ apiClient, siteId: rawSiteId, customFooterMode, manageLinksHref, manageFormsHref, manageNewsletterHref, manageSettingsHref, legalRegion, initialTarget, variant, canEdit, onSaved, loadingFallback, }: {
|
|
5
5
|
apiClient: ApiClient;
|
|
6
6
|
siteId: string;
|
|
7
7
|
customFooterMode: 'default' | 'blocks' | 'default+blocks' | 'none';
|
|
8
8
|
manageLinksHref: string;
|
|
9
|
+
manageFormsHref?: string;
|
|
10
|
+
manageNewsletterHref?: string;
|
|
9
11
|
manageSettingsHref: string;
|
|
10
12
|
legalRegion?: 'integrated' | 'separate';
|
|
11
13
|
initialTarget?: FooterEditorTarget;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { FooterEngagementAuthoringOptions } from '../../api/src/footer-settings';
|
|
2
|
+
import type { FooterEngagementDraft, FooterEngagementDraftEvent } from './footerEngagementDraft';
|
|
3
|
+
type DispatchDraft = (event: FooterEngagementDraftEvent) => void;
|
|
4
|
+
export declare function EngagementKindChoice({ dispatch, kind, }: Readonly<{
|
|
5
|
+
dispatch: DispatchDraft;
|
|
6
|
+
kind: FooterEngagementDraft['kind'];
|
|
7
|
+
}>): import("react").JSX.Element;
|
|
8
|
+
export declare function EngagementCopyFields({ dispatch, draft, error, }: Readonly<{
|
|
9
|
+
dispatch: DispatchDraft;
|
|
10
|
+
draft: FooterEngagementDraft;
|
|
11
|
+
error: string | null;
|
|
12
|
+
}>): import("react").JSX.Element;
|
|
13
|
+
export declare function EngagementPlacementChoice({ dispatch, treatment, }: Readonly<{
|
|
14
|
+
dispatch: DispatchDraft;
|
|
15
|
+
treatment: FooterEngagementDraft['treatment'];
|
|
16
|
+
}>): import("react").JSX.Element;
|
|
17
|
+
export declare function StandardContactChoice({ dispatch, formId, manageFormsHref, options, }: Readonly<{
|
|
18
|
+
dispatch: DispatchDraft;
|
|
19
|
+
formId: string;
|
|
20
|
+
manageFormsHref: string;
|
|
21
|
+
options: FooterEngagementAuthoringOptions;
|
|
22
|
+
}>): import("react").JSX.Element;
|
|
23
|
+
export declare function MailingListChoice({ dispatch, draft, manageNewsletterHref, options, }: Readonly<{
|
|
24
|
+
dispatch: DispatchDraft;
|
|
25
|
+
draft: Extract<FooterEngagementDraft, {
|
|
26
|
+
kind: 'mailing-list';
|
|
27
|
+
}>;
|
|
28
|
+
manageNewsletterHref: string;
|
|
29
|
+
options: FooterEngagementAuthoringOptions;
|
|
30
|
+
}>): import("react").JSX.Element;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { FooterEngagementSection } from '../../core/src/index';
|
|
2
|
+
import type { FooterEngagementAuthoringOptions } from '../../api/src/footer-settings';
|
|
3
|
+
import type { FooterEngagementReadiness } from './footerEngagementEditor';
|
|
4
|
+
type FooterEngagementEditorPanelProps = Readonly<{
|
|
5
|
+
candidate: FooterEngagementSection | null;
|
|
6
|
+
current: FooterEngagementSection | null;
|
|
7
|
+
manageFormsHref: string;
|
|
8
|
+
manageNewsletterHref: string;
|
|
9
|
+
onApply: () => void;
|
|
10
|
+
onCancel: () => void;
|
|
11
|
+
onPreview: (candidate: FooterEngagementSection) => void;
|
|
12
|
+
onRemove: () => void;
|
|
13
|
+
options: FooterEngagementAuthoringOptions;
|
|
14
|
+
readiness: FooterEngagementReadiness;
|
|
15
|
+
}>;
|
|
16
|
+
export declare function FooterEngagementEditorPanel(props: FooterEngagementEditorPanelProps): import("react").JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -4,6 +4,8 @@ export type FooterEditorTarget = Readonly<{
|
|
|
4
4
|
}> | Readonly<{
|
|
5
5
|
kind: 'module';
|
|
6
6
|
moduleId: FooterModuleId;
|
|
7
|
+
}> | Readonly<{
|
|
8
|
+
kind: 'engagement';
|
|
7
9
|
}> | Readonly<{
|
|
8
10
|
kind: 'shared-profile';
|
|
9
11
|
section: 'contact' | 'opening-hours' | 'social-links';
|
|
@@ -48,6 +50,7 @@ type FooterEditorViewPlanInput = Readonly<{
|
|
|
48
50
|
hasLogo?: boolean;
|
|
49
51
|
hasMainNavigation?: boolean;
|
|
50
52
|
hasLegalPolicyNavigation?: boolean;
|
|
53
|
+
hasEngagementSource?: boolean;
|
|
51
54
|
canEdit: boolean;
|
|
52
55
|
legalRegion?: 'integrated' | 'separate';
|
|
53
56
|
}>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type FooterEngagementSection, type Result } from '../../core/src/index';
|
|
2
|
+
type FooterEngagementDraftBase = Readonly<{
|
|
3
|
+
treatment: FooterEngagementSection['treatment'];
|
|
4
|
+
heading: string;
|
|
5
|
+
intro: string;
|
|
6
|
+
}>;
|
|
7
|
+
type FooterMailingCopyDraft = Readonly<{
|
|
8
|
+
buttonLabel: string;
|
|
9
|
+
successMessage: string;
|
|
10
|
+
privacyNote: string;
|
|
11
|
+
}>;
|
|
12
|
+
export type FooterEngagementDraft = (FooterEngagementDraftBase & Readonly<{
|
|
13
|
+
kind: 'standard-contact';
|
|
14
|
+
formId: string;
|
|
15
|
+
}>) | (FooterEngagementDraftBase & FooterMailingCopyDraft & Readonly<{
|
|
16
|
+
kind: 'mailing-list';
|
|
17
|
+
destination: Readonly<{
|
|
18
|
+
provider: 'riverbank';
|
|
19
|
+
listId: string;
|
|
20
|
+
}> | Readonly<{
|
|
21
|
+
provider: 'mailchimp';
|
|
22
|
+
audienceId: string;
|
|
23
|
+
}>;
|
|
24
|
+
}>);
|
|
25
|
+
export type FooterEngagementDraftEvent = Readonly<{
|
|
26
|
+
type: 'select-kind';
|
|
27
|
+
kind: FooterEngagementDraft['kind'];
|
|
28
|
+
}> | Readonly<{
|
|
29
|
+
type: 'set-treatment';
|
|
30
|
+
treatment: FooterEngagementDraft['treatment'];
|
|
31
|
+
}> | Readonly<{
|
|
32
|
+
type: 'set-heading';
|
|
33
|
+
heading: string;
|
|
34
|
+
}> | Readonly<{
|
|
35
|
+
type: 'set-intro';
|
|
36
|
+
intro: string;
|
|
37
|
+
}> | Readonly<{
|
|
38
|
+
type: 'set-form';
|
|
39
|
+
formId: string;
|
|
40
|
+
}> | Readonly<{
|
|
41
|
+
type: 'select-mailing-provider';
|
|
42
|
+
provider: 'riverbank' | 'mailchimp';
|
|
43
|
+
}> | Readonly<{
|
|
44
|
+
type: 'set-mailing-destination';
|
|
45
|
+
id: string;
|
|
46
|
+
}> | Readonly<{
|
|
47
|
+
type: 'set-mailing-copy';
|
|
48
|
+
field: keyof FooterMailingCopyDraft;
|
|
49
|
+
value: string;
|
|
50
|
+
}>;
|
|
51
|
+
export declare function reduceFooterEngagementDraft(draft: FooterEngagementDraft, event: FooterEngagementDraftEvent): FooterEngagementDraft;
|
|
52
|
+
export declare function createFooterEngagementDraft(section: FooterEngagementSection | null): FooterEngagementDraft;
|
|
53
|
+
type DraftParseError = Readonly<{
|
|
54
|
+
message: string;
|
|
55
|
+
}>;
|
|
56
|
+
export declare function parseFooterEngagementDraft(draft: FooterEngagementDraft, currentId: string, mailchimpConnectionId: string): Result<FooterEngagementSection, DraftParseError>;
|
|
57
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FooterEngagementSection } from '../../core/src/index';
|
|
2
|
+
import type { FooterEngagementAuthoringOptions } from '../../api/src/footer-settings';
|
|
3
|
+
import type { FooterResolvedEngagement } from '../../blocks/src/client/site-chrome';
|
|
4
|
+
export type FooterEngagementReadiness = Readonly<{
|
|
5
|
+
kind: 'ready';
|
|
6
|
+
}> | Readonly<{
|
|
7
|
+
kind: 'needs-repair';
|
|
8
|
+
message: string;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function resolveFooterEngagementAuthoringState(section: FooterEngagementSection | null, options: FooterEngagementAuthoringOptions): FooterEngagementReadiness;
|
|
11
|
+
export declare function resolveFooterEngagementPreview(section: FooterEngagementSection | null, options: FooterEngagementAuthoringOptions): FooterResolvedEngagement;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type FooterResolvedEngagement, type FooterRuntimeViewModel } from '../../blocks/src/client/site-chrome';
|
|
2
|
+
import type { FooterCompositionV1, PublicProfile } from '../../core/src/index';
|
|
3
|
+
export type FooterPreviewRuntimeInput = Readonly<{
|
|
4
|
+
composition: FooterCompositionV1;
|
|
5
|
+
publicProfile: PublicProfile;
|
|
6
|
+
hasBusinessAddress: boolean;
|
|
7
|
+
hasLogo: boolean;
|
|
8
|
+
hasMainNavigation: boolean;
|
|
9
|
+
hasLegalPolicyNavigation: boolean;
|
|
10
|
+
legalRegion: 'integrated' | 'separate';
|
|
11
|
+
engagement: FooterResolvedEngagement;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function buildFooterPreviewRuntime(input: FooterPreviewRuntimeInput): FooterRuntimeViewModel;
|
|
@@ -25,6 +25,7 @@ export { PreviewRichTextEditor } from './primitives/PreviewRichTextEditor';
|
|
|
25
25
|
export { recordsEqual as editorValuesEqual } from './ui/stores/utils';
|
|
26
26
|
export { footerModuleLabel, planFooterEditorView, type FooterEditorSectionPlan, type FooterEditorSource, type FooterEditorTarget, type FooterEditorViewPlan, } from './footerComposer';
|
|
27
27
|
export { FooterComposerPanel } from './FooterComposerPanel';
|
|
28
|
+
export { resolveFooterEngagementAuthoringState, type FooterEngagementReadiness, } from './footerEngagementEditor';
|
|
28
29
|
export { useStoreBinding, parseEditorPath } from './primitives/shared';
|
|
29
30
|
export type { PathInfo } from './primitives/shared';
|
|
30
31
|
export * from './ai/overlayHelpers';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BlockManifest } from '../../../blocks/src/index';
|
|
2
|
+
import type { EditorBlockId } from '../../../core/src/index';
|
|
3
|
+
import type { ResolveBlockManifest } from './blockValidationView';
|
|
4
|
+
export type BlockValidationManifestEntry = Readonly<{
|
|
5
|
+
blockId: EditorBlockId;
|
|
6
|
+
manifest: BlockManifest;
|
|
7
|
+
}>;
|
|
8
|
+
export type BlockValidationManifestRegistry = Readonly<{
|
|
9
|
+
resolve: ResolveBlockManifest;
|
|
10
|
+
revision: () => number;
|
|
11
|
+
replace: (entries: readonly BlockValidationManifestEntry[]) => boolean;
|
|
12
|
+
delete: (blockId: EditorBlockId) => boolean;
|
|
13
|
+
clear: () => boolean;
|
|
14
|
+
remap: (fromBlockId: EditorBlockId, toBlockId: EditorBlockId) => boolean;
|
|
15
|
+
isEmpty: () => boolean;
|
|
16
|
+
}>;
|
|
17
|
+
export declare function createBlockValidationManifestRegistry(fallback: ResolveBlockManifest): BlockValidationManifestRegistry;
|
|
@@ -2,7 +2,7 @@ import type { BlockManifest } from "../../../blocks/src/index";
|
|
|
2
2
|
import { type BlockDraftSaveability, type BlockDraftValidationIssue } from "../../../block-form/src/blockDraftSaveability";
|
|
3
3
|
import type { EditorBlockId } from "../../../core/src/index";
|
|
4
4
|
import type { EditorDraftSnapshot } from "./editorHistory";
|
|
5
|
-
export type ResolveBlockManifest = (kind: string) => BlockManifest | null;
|
|
5
|
+
export type ResolveBlockManifest = (kind: string, blockId?: EditorBlockId) => BlockManifest | null;
|
|
6
6
|
export type FirstIncompleteBlock = Readonly<{
|
|
7
7
|
blockId: EditorBlockId;
|
|
8
8
|
kind: string;
|
|
@@ -137,6 +137,10 @@ export type BlockValidationState = {
|
|
|
137
137
|
hasMeaningfulEdit: (blockId: EditorBlockId) => boolean;
|
|
138
138
|
showAllValidation: (blockId: EditorBlockId) => boolean;
|
|
139
139
|
setShowAllValidation: (blockId: EditorBlockId, visible: boolean) => void;
|
|
140
|
+
setValidationManifests: (manifests: readonly Readonly<{
|
|
141
|
+
blockId: EditorBlockId;
|
|
142
|
+
manifest: import('../../../blocks/src/index').BlockManifest;
|
|
143
|
+
}>[]) => void;
|
|
140
144
|
clearBlock: (blockId: EditorBlockId) => void;
|
|
141
145
|
clearAll: () => void;
|
|
142
146
|
getTouchedPaths: (blockId: EditorBlockId) => ReadonlySet<string>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type FooterCompositionSnapshot, type PublicProfileSnapshot } from '../../api/src/footer-settings';
|
|
2
|
+
import type { ApiClient } from '../../api/src/request';
|
|
3
|
+
import { type FooterCompositionV1, type PublicProfile } from '../../core/src/index';
|
|
4
|
+
import type { FooterEditorTarget } from './footerComposer';
|
|
5
|
+
export type SaveState = 'idle' | 'saving' | 'saved' | 'conflict' | 'failed';
|
|
6
|
+
export type CompositionSaveOutcome = 'saved' | 'conflict' | 'failed';
|
|
7
|
+
type FooterComposerStateOptions = Readonly<{
|
|
8
|
+
apiClient: ApiClient;
|
|
9
|
+
canEdit: boolean;
|
|
10
|
+
initialTarget?: FooterEditorTarget;
|
|
11
|
+
onSaved?: () => void;
|
|
12
|
+
rawSiteId: string;
|
|
13
|
+
}>;
|
|
14
|
+
export declare function useFooterComposerState({ apiClient, canEdit, initialTarget, onSaved, rawSiteId, }: FooterComposerStateOptions): {
|
|
15
|
+
message: string | null;
|
|
16
|
+
saveComposition: (next: FooterCompositionV1, optimistic?: boolean) => Promise<CompositionSaveOutcome>;
|
|
17
|
+
saveProfile: (next: PublicProfile) => Promise<void>;
|
|
18
|
+
saveState: SaveState;
|
|
19
|
+
siteId: import("../../core/src/index").SiteId;
|
|
20
|
+
target: FooterEditorTarget;
|
|
21
|
+
setTarget: import("react").Dispatch<import("react").SetStateAction<FooterEditorTarget>>;
|
|
22
|
+
compositionSnapshot: FooterCompositionSnapshot | null;
|
|
23
|
+
engagementOptions: Readonly<{
|
|
24
|
+
forms: readonly import("../../api/src/footerSettings").FooterFormSummary[];
|
|
25
|
+
newsletterLists: readonly import("../../api/src/index").NewsletterListRecord[];
|
|
26
|
+
mailchimp: import("../../api/src/index").ListMailchimpAudiencesResponse;
|
|
27
|
+
}> | null;
|
|
28
|
+
load: () => Promise<void>;
|
|
29
|
+
loadError: string | null;
|
|
30
|
+
navigationMenus: import("../../api/src/index").NavigationMenuWithItems[] | null;
|
|
31
|
+
profileSnapshot: PublicProfileSnapshot | null;
|
|
32
|
+
setCompositionSnapshot: import("react").Dispatch<import("react").SetStateAction<FooterCompositionSnapshot | null>>;
|
|
33
|
+
setProfileSnapshot: import("react").Dispatch<import("react").SetStateAction<PublicProfileSnapshot | null>>;
|
|
34
|
+
};
|
|
35
|
+
export {};
|