@riverbankcms/sdk 0.78.0 → 0.79.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/README.md +125 -43
- package/dist/{PreviewEditorSidebar-RIKFQ72L.mjs → PreviewEditorSidebar-56NMJMIK.mjs} +750 -65
- package/dist/{PreviewEditorUI-XO7TUWKK.mjs → PreviewEditorUI-27KJVEET.mjs} +4 -4
- package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +72 -0
- package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
- package/dist/_dts/api/src/endpoints.d.ts +64 -0
- package/dist/_dts/api/src/index.d.ts +8 -6
- package/dist/_dts/api/src/media.d.ts +8 -1
- package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
- package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +8 -8
- package/dist/_dts/api/src/navigation/identity.d.ts +59 -0
- package/dist/_dts/api/src/navigation.d.ts +2 -0
- package/dist/_dts/api/src/public/types.d.ts +1 -1
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +4 -0
- package/dist/_dts/api/src/request.d.ts +3 -11
- package/dist/_dts/api/src/sdkConfig/contracts.d.ts +1 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +8 -1
- package/dist/_dts/api/src/siteIcons.d.ts +128 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +26 -0
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +8 -0
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +21 -20
- package/dist/_dts/api/src/types.d.ts +12 -27
- package/dist/_dts/api/src/webhooks.d.ts +239 -0
- package/dist/_dts/block-form/src/fields/types.d.ts +6 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +3 -2
- package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +6 -3
- package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +8 -3
- package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -1
- package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useLinearRepeaterDnd.d.ts +1 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterPointerDragCapability.d.ts +1 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useResolvedItemLabel.d.ts +7 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +1 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/utils/index.d.ts +3 -1
- package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterDndDomain.d.ts +1 -1
- package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterLabelSource.d.ts +15 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +50 -0
- package/dist/_dts/blocks/src/index.d.ts +4 -0
- package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/cart.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/collection.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/faq.d.ts +885 -289
- package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +57 -0
- package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +4 -0
- package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -1
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +69 -22
- package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
- package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +170 -0
- package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
- package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -1
- package/dist/_dts/blocks/src/system/icons/ids.d.ts +13 -0
- package/dist/_dts/blocks/src/system/icons/index.d.ts +6 -0
- package/dist/_dts/blocks/src/system/icons/presets.d.ts +4 -0
- package/dist/_dts/blocks/src/system/icons/registry.d.ts +18 -0
- package/dist/_dts/blocks/src/system/icons/semantic.d.ts +239 -0
- package/dist/_dts/blocks/src/system/icons/value.d.ts +94 -0
- package/dist/_dts/blocks/src/system/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +4 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +187 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +13 -0
- package/dist/_dts/content-editor/src/index.d.ts +1 -1
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -2
- package/dist/_dts/content-model/src/content-types/schema.d.ts +14 -0
- package/dist/_dts/content-model/src/contentManifest.d.ts +3 -1
- package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +3 -1
- package/dist/_dts/content-model/src/templates/bindingValidation.d.ts +10 -4
- package/dist/_dts/content-model/src/templates/fieldPaths.d.ts +20 -0
- package/dist/_dts/content-model/src/templates/manifestAdapter.d.ts +5 -2
- package/dist/_dts/core/src/branded.d.ts +114 -85
- package/dist/_dts/core/src/csv-types.d.ts +2 -2
- package/dist/_dts/core/src/editor-state.d.ts +7 -7
- package/dist/_dts/core/src/participants.d.ts +2 -2
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +202 -0
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +12 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +12 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +12 -2
- package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +21 -0
- package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +40 -0
- package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +11 -1
- package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +82 -0
- package/dist/_dts/editor-blocks/src/blockPayload.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
- package/dist/_dts/media-core/src/fileDomain.d.ts +8 -1
- package/dist/_dts/media-editor/src/MediaEditor.d.ts +5 -2
- package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -1
- package/dist/_dts/media-editor/src/fieldUi.d.ts +5 -0
- package/dist/_dts/media-editor/src/index.d.ts +1 -1
- package/dist/_dts/media-react/src/components/MediaLibrary.d.ts +2 -1
- package/dist/_dts/media-react/src/components/MediaPickerMini.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +17 -0
- package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +3 -2
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +6 -0
- package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +3 -3
- package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +7 -0
- package/dist/_dts/sdk/src/cli/commands/push.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +13 -0
- package/dist/_dts/sdk/src/cli/content/writer.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/helpers.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +11 -0
- package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +6 -6
- package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +5 -0
- package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +4 -0
- package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +4 -0
- package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +1 -0
- package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +5 -2
- package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +10 -1
- package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/sync/diff.d.ts +9 -0
- package/dist/_dts/sdk/src/client/management/types.d.ts +8 -0
- package/dist/_dts/sdk/src/client/types.d.ts +2 -2
- package/dist/_dts/sdk/src/config/content-types.d.ts +7 -0
- package/dist/_dts/sdk/src/config/field-definitions.d.ts +5 -1
- package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +19 -2
- package/dist/_dts/sdk/src/next/index.d.ts +1 -1
- package/dist/_dts/sdk/src/next/revalidate.d.ts +26 -5
- package/dist/_dts/sdk/src/next/static-params.d.ts +28 -3
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
- package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/sdk/src/webhooks/index.d.ts +1 -1
- package/dist/_dts/sdk/src/webhooks/verify.d.ts +6 -102
- package/dist/_dts/site-commands/src/commands.d.ts +6 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -3
- package/dist/_dts/theme-core/src/schema.d.ts +5 -5
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -2
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +5 -5
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -4
- package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -0
- package/dist/_dts/ui/src/combobox.d.ts +1 -0
- package/dist/{altcha-B5XGSXP5.mjs → altcha-EKUEQ4RP.mjs} +1 -1
- package/dist/{chunk-F7RTCZYN.mjs → chunk-4HCW7FHJ.mjs} +504 -63
- package/dist/{chunk-SXOLGNMX.mjs → chunk-A3HHFKVT.mjs} +1 -1
- package/dist/{chunk-TXDES5P2.mjs → chunk-GP555I66.mjs} +180 -10
- package/dist/{chunk-SVMMM2NA.mjs → chunk-K2IIF34C.mjs} +79 -5
- package/dist/{chunk-NIDXI46P.mjs → chunk-LCY32PXF.mjs} +1 -1
- package/dist/{chunk-XGB3TDIC.mjs → chunk-R7POPVJR.mjs} +2 -8
- package/dist/{chunk-OECWLDHN.mjs → chunk-V47ZU33I.mjs} +2762 -732
- package/dist/cli/index.mjs +1799 -345
- package/dist/cli/init-docs/content/cli-reference.md +3 -2
- package/dist/cli/init-docs/content/content-management.md +2 -2
- package/dist/cli/init-docs/content/workflow-editor-workflows.md +2 -0
- package/dist/cli/init-docs/content/workflow-isr-revalidation.md +138 -0
- package/dist/cli/init-docs/content/workflow-preview-mode.md +68 -2
- package/dist/client/{accordion-EVDEOUPR.mjs → accordion-QLA7KBYO.mjs} +2 -2
- package/dist/client/analytics.mjs +1 -1
- package/dist/client/{bookingForm-DIHBLC64.mjs → bookingForm-PYZIPA5G.mjs} +55 -48
- package/dist/client/bookings.mjs +172 -57
- package/dist/client/{carousel-FEBQHIWI.mjs → carousel-5EIULWBI.mjs} +3 -3
- package/dist/client/{cart-7CKSXAE4.mjs → cart-DOP3FNI4.mjs} +7 -7
- package/dist/client/{checkout-WKYCANLV.mjs → checkout-BVMF6FBV.mjs} +7 -7
- package/dist/client/{chunk-GUK2FPXQ.mjs → chunk-44K2U3QI.mjs} +37 -15
- package/dist/client/{chunk-IVNCUVAV.mjs → chunk-AUJ5DBZJ.mjs} +18 -18
- package/dist/client/{chunk-VPPMNXCF.mjs → chunk-CCNTDRCF.mjs} +2 -2
- package/dist/client/{chunk-36WJCERQ.mjs → chunk-CE7IBGVW.mjs} +3 -1
- package/dist/client/{chunk-2SAVKN2M.mjs → chunk-GG4M2NP6.mjs} +2 -2
- package/dist/client/{chunk-65F47D7Y.mjs → chunk-R5ESWNKX.mjs} +49 -39
- package/dist/client/{chunk-RZDWX7QW.mjs → chunk-TYONZMST.mjs} +1 -1
- package/dist/client/{chunk-OFMSCGNY.mjs → chunk-UDS3NTWA.mjs} +2 -2
- package/dist/client/{chunk-YDSEG6GZ.mjs → chunk-V6M5FCR5.mjs} +2 -2
- package/dist/client/{chunk-F7LHOKEH.mjs → chunk-XSV6KW4D.mjs} +1 -1
- package/dist/client/{chunk-RV6FX7UH.mjs → chunk-YLDYVRZL.mjs} +9 -9
- package/dist/client/{chunk-PD6NBCEY.mjs → chunk-ZFHRN6W2.mjs} +1 -1
- package/dist/client/client.mjs +21501 -19812
- package/dist/client/{courseRegistration-5QF2PHKM.mjs → courseRegistration-E6EAA6NL.mjs} +10 -10
- package/dist/client/{eventCalendar-4ZOSETDU.mjs → eventCalendar-HBG3HAK6.mjs} +9 -9
- package/dist/client/{eventCombined-WQGU7JUX.mjs → eventCombined-6K5ZZWAK.mjs} +9 -9
- package/dist/client/{eventDetails-AYWVUJ5Y.mjs → eventDetails-Q75ICXLT.mjs} +9 -9
- package/dist/client/{eventListing-NT7C6UT5.mjs → eventListing-27P5F7DZ.mjs} +9 -9
- package/dist/client/{eventRegistration-OH24F4ZJ.mjs → eventRegistration-IQ7AMASR.mjs} +9 -9
- package/dist/client/{form-7L42SRBB.mjs → form-JRTD65FN.mjs} +6 -3
- package/dist/client/{headerSection-OZRZNZ52.mjs → headerSection-7FPSSZHS.mjs} +3 -3
- package/dist/client/hooks.mjs +428 -83
- package/dist/client/{locationMap-ZBXRPQ7C.mjs → locationMap-7NGFNYBH.mjs} +3 -3
- package/dist/client/{newsletterForm-SNAGFF2I.mjs → newsletterForm-F3BADCI2.mjs} +2 -2
- package/dist/client/{productDetail-I46BOFGV.mjs → productDetail-V3HP7ITJ.mjs} +7 -7
- package/dist/client/{productList-BOYHTYI6.mjs → productList-L3EGJUF2.mjs} +7 -7
- package/dist/client/rendering/client.mjs +2886 -1513
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +2244 -564
- package/dist/client/{shop-XTXPZTKR.mjs → shop-DQUB5E2C.mjs} +7 -7
- package/dist/preview-next/before-render.mjs +65 -1
- package/dist/preview-next/client/runtime.mjs +6 -6
- package/dist/preview-next/middleware.mjs +65 -1
- package/dist/preview-next/tailwind-sources.css +1 -0
- package/dist/sdk-runtime-AF6KXJU4.mjs +8 -0
- package/dist/server/components.mjs +2270 -835
- package/dist/server/config-template-validation.mjs +221 -15
- package/dist/server/config-validation.mjs +426 -77
- package/dist/server/config.mjs +426 -77
- package/dist/server/data.mjs +427 -82
- package/dist/server/index.mjs +94 -10
- package/dist/server/next/revalidate.mjs +229 -34
- package/dist/server/next.mjs +2439 -888
- package/dist/server/page-converter.mjs +335 -74
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +2281 -846
- package/dist/server/rendering.mjs +2298 -860
- package/dist/server/routing.mjs +860 -113
- package/dist/server/server.mjs +452 -92
- package/dist/server/theme-bridge.mjs +164 -2
- package/dist/server/theme.mjs +2 -2
- package/dist/server/webhooks.mjs +129 -25
- package/dist/styles/index.css +55 -0
- package/package.json +2 -1
- package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +0 -8
- package/dist/sdk-runtime-ZJLKC6DR.mjs +0 -8
|
@@ -4,7 +4,10 @@ import { BlockForm } from '../BlockForm';
|
|
|
4
4
|
import type { ComponentProps } from 'react';
|
|
5
5
|
import type { BlockItem, BlockFocusRequest } from './types';
|
|
6
6
|
import type { FieldWidgetComponent } from '../../../block-form/src/client/index';
|
|
7
|
-
|
|
7
|
+
import type { SiteIconStyleGuideVersionId } from '../../../blocks/src/index';
|
|
8
|
+
import type { GeneratedIconSetGenerateResult, GeneratedIconSetPreview } from './GeneratedIconSetDialog';
|
|
9
|
+
import type { getFeatureCardIconDialogCards } from './featureCardIconActions';
|
|
10
|
+
export declare function BlockCardBody({ siteId, block, manifest, uiStore, hasRecoveryConflict, focusSignal, onFocusHandled, onBlockSave, theme, widgetOverrides, hideThemeV2RawStyleFields, pageDesignBlock, currentStyleGuideVersionId, iconStyleGuideSummary, iconStyleGuideEditHref, onGenerateIconSet, onApplyGeneratedIconSet, }: {
|
|
8
11
|
siteId: string;
|
|
9
12
|
block: BlockItem;
|
|
10
13
|
manifest: SystemBlockDefinition['manifest'];
|
|
@@ -17,4 +20,12 @@ export declare function BlockCardBody({ siteId, block, manifest, uiStore, hasRec
|
|
|
17
20
|
widgetOverrides?: Record<string, FieldWidgetComponent>;
|
|
18
21
|
hideThemeV2RawStyleFields?: boolean;
|
|
19
22
|
pageDesignBlock?: PageDesignEditorBlock | null;
|
|
23
|
+
currentStyleGuideVersionId?: SiteIconStyleGuideVersionId | null;
|
|
24
|
+
iconStyleGuideSummary?: string | null;
|
|
25
|
+
iconStyleGuideEditHref?: string | null;
|
|
26
|
+
onGenerateIconSet?: (input: Readonly<{
|
|
27
|
+
userStyleNote: string | null;
|
|
28
|
+
cards: ReturnType<typeof getFeatureCardIconDialogCards>;
|
|
29
|
+
}>) => Promise<GeneratedIconSetGenerateResult>;
|
|
30
|
+
onApplyGeneratedIconSet?: (preview: GeneratedIconSetPreview) => GeneratedIconSetPreview | void | Promise<GeneratedIconSetPreview | void>;
|
|
20
31
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import type { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities';
|
|
2
2
|
import type { FieldWidgetComponent } from '../../../block-form/src/client/index';
|
|
3
|
-
import { type SystemBlockDefinition, type Theme } from '../../../blocks/src/index';
|
|
3
|
+
import { type SiteIconStyleGuideVersionId, type SystemBlockDefinition, type Theme } from '../../../blocks/src/index';
|
|
4
4
|
import { type BlockActionControlMode } from './actionControlMode';
|
|
5
5
|
import type { ReorderControlMode } from './reorderControlMode';
|
|
6
6
|
import type { BlockItem, UiStore, DraftsSlice, ArrayKeysManager } from './types';
|
|
7
|
+
import { getFeatureCardIconDialogCards } from './featureCardIconActions';
|
|
8
|
+
import { type GeneratedIconSetGenerateResult, type GeneratedIconSetPreview } from './GeneratedIconSetDialog';
|
|
7
9
|
/** Drag listener props from dnd-kit */
|
|
8
10
|
type DragListeners = SyntheticListenerMap | undefined;
|
|
9
11
|
type BlockCardHeaderStore = UiStore<{
|
|
10
12
|
drafts: Pick<DraftsSlice, 'getBlockSnapshot' | 'getCurrentValues' | 'initNewBlock' | 'updateBlockBaseline' | 'clearError' | 'setAtPath' | 'getAtPath'>;
|
|
11
13
|
arrayKeys: ArrayKeysManager;
|
|
12
14
|
}>;
|
|
13
|
-
export declare function BlockCardHeader({ block, manifest, isFirst, isLast, isMoving, onMove, onDuplicate, onDelete, dragListeners, canReorder, collapsed, onToggleCollapsed, contentId, uiStore, widgetOverrides, theme, hideThemeV2RawStyleFields, reorderControlMode, actionControlMode, }: {
|
|
15
|
+
export declare function BlockCardHeader({ block, manifest, isFirst, isLast, isMoving, onMove, onDuplicate, onDelete, dragListeners, canReorder, collapsed, onToggleCollapsed, contentId, uiStore, widgetOverrides, theme, hideThemeV2RawStyleFields, reorderControlMode, actionControlMode, currentStyleGuideVersionId, iconStyleGuideSummary, iconStyleGuideEditHref, onGenerateIconSet, onApplyGeneratedIconSet, }: {
|
|
14
16
|
block: BlockItem;
|
|
15
17
|
manifest: SystemBlockDefinition['manifest'];
|
|
16
18
|
isFirst: boolean;
|
|
@@ -31,5 +33,13 @@ export declare function BlockCardHeader({ block, manifest, isFirst, isLast, isMo
|
|
|
31
33
|
hideThemeV2RawStyleFields?: boolean;
|
|
32
34
|
reorderControlMode?: ReorderControlMode;
|
|
33
35
|
actionControlMode?: BlockActionControlMode;
|
|
36
|
+
currentStyleGuideVersionId?: SiteIconStyleGuideVersionId | null;
|
|
37
|
+
iconStyleGuideSummary?: string | null;
|
|
38
|
+
iconStyleGuideEditHref?: string | null;
|
|
39
|
+
onGenerateIconSet?: (input: Readonly<{
|
|
40
|
+
userStyleNote: string | null;
|
|
41
|
+
cards: ReturnType<typeof getFeatureCardIconDialogCards>;
|
|
42
|
+
}>) => Promise<GeneratedIconSetGenerateResult>;
|
|
43
|
+
onApplyGeneratedIconSet?: (preview: GeneratedIconSetPreview) => GeneratedIconSetPreview | void | Promise<GeneratedIconSetPreview | void>;
|
|
34
44
|
}): import("react/jsx-runtime").JSX.Element;
|
|
35
45
|
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SiteIconStyleGuideVersionId } from '../../../blocks/src/index';
|
|
2
|
+
import type { BlockItem, DraftsSlice, UiStore } from './types';
|
|
3
|
+
import { getFeatureCardIconDialogCards } from './featureCardIconActions';
|
|
4
|
+
import { type GeneratedIconSetGenerateResult, type GeneratedIconSetPreview } from './GeneratedIconSetDialog';
|
|
5
|
+
type FeatureCardIconsPanelStore = UiStore<{
|
|
6
|
+
drafts: Pick<DraftsSlice, 'getCurrentValues' | 'setAtPath'>;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function supportsFeatureCardIconActions(blockKind: string): boolean;
|
|
9
|
+
export declare function FeatureCardIconsPanel({ block, uiStore, currentStyleGuideVersionId, iconStyleGuideSummary, iconStyleGuideEditHref, onGenerateIconSet, onApplyGeneratedIconSet, }: {
|
|
10
|
+
block: BlockItem;
|
|
11
|
+
uiStore: FeatureCardIconsPanelStore;
|
|
12
|
+
currentStyleGuideVersionId?: SiteIconStyleGuideVersionId | null;
|
|
13
|
+
iconStyleGuideSummary?: string | null;
|
|
14
|
+
iconStyleGuideEditHref?: string | null;
|
|
15
|
+
onGenerateIconSet?: (input: Readonly<{
|
|
16
|
+
userStyleNote: string | null;
|
|
17
|
+
cards: ReturnType<typeof getFeatureCardIconDialogCards>;
|
|
18
|
+
}>) => Promise<GeneratedIconSetGenerateResult>;
|
|
19
|
+
onApplyGeneratedIconSet?: (preview: GeneratedIconSetPreview) => GeneratedIconSetPreview | void | Promise<GeneratedIconSetPreview | void>;
|
|
20
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type GeneratedBlockIconValue } from '../../../blocks/src/index';
|
|
2
|
+
import type { GeneratedIconSetCandidate } from '../../../api/src/index';
|
|
3
|
+
import type { FeatureCardIconDialogCard } from './featureCardIconActions';
|
|
4
|
+
export type GeneratedIconSetPreviewAsset = Readonly<{
|
|
5
|
+
cardKey: string;
|
|
6
|
+
title: string;
|
|
7
|
+
src: string;
|
|
8
|
+
iconValue: GeneratedBlockIconValue;
|
|
9
|
+
}>;
|
|
10
|
+
export type GeneratedIconSetPreview = Readonly<{
|
|
11
|
+
setId: string;
|
|
12
|
+
styleGuideSummary: string;
|
|
13
|
+
candidate?: GeneratedIconSetCandidate;
|
|
14
|
+
assets: readonly GeneratedIconSetPreviewAsset[];
|
|
15
|
+
}>;
|
|
16
|
+
export type GeneratedIconSetGenerateResult = Readonly<{
|
|
17
|
+
kind: 'preview_ready';
|
|
18
|
+
preview: GeneratedIconSetPreview;
|
|
19
|
+
}> | Readonly<{
|
|
20
|
+
kind: 'failed';
|
|
21
|
+
message: string;
|
|
22
|
+
}>;
|
|
23
|
+
export type GeneratedIconSetApplyResult = Readonly<{
|
|
24
|
+
kind: 'applied';
|
|
25
|
+
}> | Readonly<{
|
|
26
|
+
kind: 'failed';
|
|
27
|
+
message: string;
|
|
28
|
+
}>;
|
|
29
|
+
export declare function GeneratedIconSetDialog({ open, onOpenChange, cards, styleGuideSummary, styleGuideEditHref, onGenerate, onApply, }: {
|
|
30
|
+
open: boolean;
|
|
31
|
+
onOpenChange: (open: boolean) => void;
|
|
32
|
+
cards: readonly FeatureCardIconDialogCard[];
|
|
33
|
+
styleGuideSummary?: string | null;
|
|
34
|
+
styleGuideEditHref?: string | null;
|
|
35
|
+
onGenerate?: (input: Readonly<{
|
|
36
|
+
userStyleNote: string | null;
|
|
37
|
+
cards: readonly FeatureCardIconDialogCard[];
|
|
38
|
+
}>) => Promise<GeneratedIconSetGenerateResult>;
|
|
39
|
+
onApply?: (preview: GeneratedIconSetPreview) => GeneratedIconSetApplyResult | void | Promise<GeneratedIconSetApplyResult | void>;
|
|
40
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ComponentProps } from 'react';
|
|
2
|
-
import { type Theme } from '../../../blocks/src/index';
|
|
2
|
+
import { type Theme, type SiteIconStyleGuideVersionId } from '../../../blocks/src/index';
|
|
3
3
|
import type { PageDesignEditorBlock } from '../../../theme-core/src/site-styles/index';
|
|
4
4
|
import type { BlockFocusRequest, BlockItem } from './types';
|
|
5
5
|
import { type CustomBlockRegistryEntry, type SdkConfigForBlockPicker } from './sdkBlockMerger';
|
|
@@ -7,6 +7,8 @@ import { BlockCard } from './BlockCard';
|
|
|
7
7
|
import type { FieldWidgetComponent } from '../../../block-form/src/client/index';
|
|
8
8
|
import { type BlockActionControlMode } from './actionControlMode';
|
|
9
9
|
import { type ReorderControlMode } from './reorderControlMode';
|
|
10
|
+
import type { GeneratedIconSetGenerateResult, GeneratedIconSetPreview } from './GeneratedIconSetDialog';
|
|
11
|
+
import type { getFeatureCardIconDialogCards } from './featureCardIconActions';
|
|
10
12
|
export declare const SortableBlockItem: import("react").NamedExoticComponent<{
|
|
11
13
|
siteId: string;
|
|
12
14
|
block: BlockItem;
|
|
@@ -33,4 +35,12 @@ export declare const SortableBlockItem: import("react").NamedExoticComponent<{
|
|
|
33
35
|
pageDesignBlock?: PageDesignEditorBlock | null;
|
|
34
36
|
reorderControlMode?: ReorderControlMode;
|
|
35
37
|
actionControlMode?: BlockActionControlMode;
|
|
38
|
+
currentStyleGuideVersionId?: SiteIconStyleGuideVersionId | null;
|
|
39
|
+
iconStyleGuideSummary?: string | null;
|
|
40
|
+
iconStyleGuideEditHref?: string | null;
|
|
41
|
+
onGenerateIconSet?: (input: Readonly<{
|
|
42
|
+
userStyleNote: string | null;
|
|
43
|
+
cards: ReturnType<typeof getFeatureCardIconDialogCards>;
|
|
44
|
+
}>) => Promise<GeneratedIconSetGenerateResult>;
|
|
45
|
+
onApplyGeneratedIconSet?: (preview: GeneratedIconSetPreview) => GeneratedIconSetPreview | void | Promise<GeneratedIconSetPreview | void>;
|
|
36
46
|
}>;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { applyFeatureCardIconSuggestions, type GeneratedBlockIconValue, type FeatureCardIconInputContent, type SemanticIconId, type SiteIconStyleGuideVersionId } from '../../../blocks/src/index';
|
|
2
|
+
import { type EditorBlockId } from '../../../core/src/index';
|
|
3
|
+
import type { DraftsSlice } from './types';
|
|
4
|
+
type FeatureCardIconActionDrafts = Pick<DraftsSlice, 'setAtPath'>;
|
|
5
|
+
export type FeatureCardIconActionResult = {
|
|
6
|
+
kind: 'applied';
|
|
7
|
+
appliedCount: number;
|
|
8
|
+
} | {
|
|
9
|
+
kind: 'no_cards';
|
|
10
|
+
} | {
|
|
11
|
+
kind: 'complete';
|
|
12
|
+
} | {
|
|
13
|
+
kind: 'plan_failed';
|
|
14
|
+
reason: Exclude<ReturnType<typeof applyFeatureCardIconSuggestions>['kind'], 'applied'>;
|
|
15
|
+
cardKey?: string;
|
|
16
|
+
iconId?: string;
|
|
17
|
+
};
|
|
18
|
+
export type FeatureCardGeneratedIconSetAssetInput = Readonly<{
|
|
19
|
+
cardKey: string;
|
|
20
|
+
iconValue: unknown;
|
|
21
|
+
}>;
|
|
22
|
+
export type FeatureCardGeneratedIconSetApplyPlan = Readonly<{
|
|
23
|
+
kind: 'applied';
|
|
24
|
+
appliedIcons: readonly Readonly<{
|
|
25
|
+
cardIndex: number;
|
|
26
|
+
cardKey: string;
|
|
27
|
+
iconValue: GeneratedBlockIconValue;
|
|
28
|
+
}>[];
|
|
29
|
+
}> | Readonly<{
|
|
30
|
+
kind: 'duplicate_asset_card_key';
|
|
31
|
+
cardKey: string;
|
|
32
|
+
}> | Readonly<{
|
|
33
|
+
kind: 'missing_asset_card_key';
|
|
34
|
+
cardKey: string;
|
|
35
|
+
}> | Readonly<{
|
|
36
|
+
kind: 'unknown_card_key';
|
|
37
|
+
cardKey: string;
|
|
38
|
+
}> | Readonly<{
|
|
39
|
+
kind: 'invalid_generated_icon';
|
|
40
|
+
cardKey: string;
|
|
41
|
+
}>;
|
|
42
|
+
export type FeatureCardGeneratedIconSetActionResult = Readonly<{
|
|
43
|
+
kind: 'applied';
|
|
44
|
+
appliedCount: number;
|
|
45
|
+
}> | Readonly<{
|
|
46
|
+
kind: 'no_cards';
|
|
47
|
+
}> | Readonly<{
|
|
48
|
+
kind: 'plan_failed';
|
|
49
|
+
reason: Exclude<FeatureCardGeneratedIconSetApplyPlan['kind'], 'applied'>;
|
|
50
|
+
cardKey?: string;
|
|
51
|
+
}>;
|
|
52
|
+
export type FeatureCardIconDialogCard = Readonly<{
|
|
53
|
+
cardKey: string;
|
|
54
|
+
title: string;
|
|
55
|
+
bodyText: string;
|
|
56
|
+
semanticIconId: SemanticIconId;
|
|
57
|
+
}>;
|
|
58
|
+
export type FeatureCardGeneratedIconStyleSummary = Readonly<{
|
|
59
|
+
kind: 'unavailable';
|
|
60
|
+
}> | Readonly<{
|
|
61
|
+
kind: 'available';
|
|
62
|
+
generatedCount: number;
|
|
63
|
+
staleCount: number;
|
|
64
|
+
invalidGeneratedCount: number;
|
|
65
|
+
}>;
|
|
66
|
+
export declare function getFeatureCards(content: Record<string, unknown> | null | undefined): FeatureCardIconInputContent[];
|
|
67
|
+
export declare function getFeatureCardIconStatus(content: Record<string, unknown> | null | undefined): import("../../../blocks/src/index").FeatureCardIconCompletion;
|
|
68
|
+
export declare function getFeatureCardIconDialogCards(content: Record<string, unknown> | null | undefined): readonly FeatureCardIconDialogCard[];
|
|
69
|
+
export declare function getFeatureCardGeneratedIconStyleSummary(content: Record<string, unknown> | null | undefined, currentStyleGuideVersionId: SiteIconStyleGuideVersionId | null | undefined): FeatureCardGeneratedIconStyleSummary;
|
|
70
|
+
export declare function applyCuratedFeatureCardIconSuggestions({ blockId, content, drafts, }: {
|
|
71
|
+
blockId: EditorBlockId;
|
|
72
|
+
content: Record<string, unknown> | null | undefined;
|
|
73
|
+
drafts: FeatureCardIconActionDrafts;
|
|
74
|
+
}): FeatureCardIconActionResult;
|
|
75
|
+
export declare function planGeneratedFeatureCardIconSetApply(cards: readonly FeatureCardIconInputContent[], assets: readonly FeatureCardGeneratedIconSetAssetInput[]): FeatureCardGeneratedIconSetApplyPlan;
|
|
76
|
+
export declare function applyGeneratedFeatureCardIconSet({ blockId, content, drafts, assets, }: {
|
|
77
|
+
blockId: EditorBlockId;
|
|
78
|
+
content: Record<string, unknown> | null | undefined;
|
|
79
|
+
drafts: FeatureCardIconActionDrafts;
|
|
80
|
+
assets: readonly FeatureCardGeneratedIconSetAssetInput[];
|
|
81
|
+
}): FeatureCardGeneratedIconSetActionResult;
|
|
82
|
+
export {};
|
|
@@ -5,7 +5,7 @@ export type ManifestFieldIssue = {
|
|
|
5
5
|
path: string;
|
|
6
6
|
segments: string[];
|
|
7
7
|
message: string;
|
|
8
|
-
code:
|
|
8
|
+
code: string;
|
|
9
9
|
};
|
|
10
10
|
export type BlockContentPayloadResult<TValues extends Record<string, unknown> = Record<string, unknown>> = {
|
|
11
11
|
data: TValues | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type FieldWidgetProps, type TextFieldConfig } from '../../../../block-form/src/client/index';
|
|
2
|
-
type IconPickerValue =
|
|
2
|
+
type IconPickerValue = unknown;
|
|
3
3
|
export declare function IconPickerField({ path, backend, config }: FieldWidgetProps<IconPickerValue, TextFieldConfig>): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
export {};
|
|
@@ -61,6 +61,9 @@ export type FileUse = {
|
|
|
61
61
|
} | {
|
|
62
62
|
readonly tag: 'site-brand-asset';
|
|
63
63
|
readonly brandUse: SiteBrandAssetUse;
|
|
64
|
+
} | {
|
|
65
|
+
readonly tag: 'site-background-asset';
|
|
66
|
+
readonly backgroundUse: SiteBackgroundAssetUse;
|
|
64
67
|
} | {
|
|
65
68
|
readonly tag: 'site-font-file';
|
|
66
69
|
readonly fontId: SiteFontId;
|
|
@@ -71,10 +74,14 @@ export type FileUse = {
|
|
|
71
74
|
export type FileUseTag = FileUse['tag'];
|
|
72
75
|
export type WorkflowInputKind = 'audio-enrichment' | 'generic-file-processing';
|
|
73
76
|
export type SiteBrandAssetUse = 'logo' | 'social-image';
|
|
77
|
+
export type AmbientBackgroundRole = 'light-texture' | 'proof-band-dark' | 'cta-wash' | 'footer-detail' | 'style-atmosphere-1' | 'style-atmosphere-2';
|
|
78
|
+
export type SiteBackgroundAssetUse = 'selected-background' | AmbientBackgroundRole;
|
|
74
79
|
export type TemporaryIngestionKind = 'backup-zip' | 'newsletter-csv' | 'instagram-zip';
|
|
75
|
-
export declare const FILE_USE_TAGS: readonly ["media-library", "content-download", "digital-product-file", "workflow-input", "booking-evidence", "site-brand-asset", "site-font-file", "temporary-ingestion"];
|
|
80
|
+
export declare const FILE_USE_TAGS: readonly ["media-library", "content-download", "digital-product-file", "workflow-input", "booking-evidence", "site-brand-asset", "site-background-asset", "site-font-file", "temporary-ingestion"];
|
|
76
81
|
export declare const WORKFLOW_INPUT_KINDS: readonly ["audio-enrichment", "generic-file-processing"];
|
|
77
82
|
export declare const SITE_BRAND_ASSET_USES: readonly ["logo", "social-image"];
|
|
83
|
+
export declare const AMBIENT_BACKGROUND_ROLES: readonly ["light-texture", "proof-band-dark", "cta-wash", "footer-detail", "style-atmosphere-1", "style-atmosphere-2"];
|
|
84
|
+
export declare const SITE_BACKGROUND_ASSET_USES: readonly ["selected-background", "light-texture", "proof-band-dark", "cta-wash", "footer-detail", "style-atmosphere-1", "style-atmosphere-2"];
|
|
78
85
|
export declare const TEMPORARY_INGESTION_KINDS: readonly ["backup-zip", "newsletter-csv", "instagram-zip"];
|
|
79
86
|
export type UploadIntent = {
|
|
80
87
|
readonly tag: 'media-library';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MediaKind } from '@riverbankcms/media-storage-supabase';
|
|
1
|
+
import type { MediaAssetWithLabels, MediaKind } from '@riverbankcms/media-storage-supabase';
|
|
2
2
|
import { type UploadIntentResolver, type VideoPrepIntentResolver } from '../../media-react/src/index';
|
|
3
3
|
import type { VideoPrepIntent } from '../../media-core/src/index';
|
|
4
4
|
import type { MediaValue } from './types';
|
|
@@ -19,8 +19,11 @@ export type MediaEditorProps = {
|
|
|
19
19
|
fullWidth?: boolean;
|
|
20
20
|
previewVariant?: 'default' | 'thumbnail';
|
|
21
21
|
showRemoveAction?: boolean;
|
|
22
|
+
previewMaxWidth?: 'xs' | 'sm' | 'md' | 'none';
|
|
23
|
+
preventPreviewUpscale?: boolean;
|
|
24
|
+
onUploadComplete?: (asset: MediaAssetWithLabels) => void;
|
|
22
25
|
uploadIntent?: UploadIntentResolver;
|
|
23
26
|
videoPrepIntent?: VideoPrepIntentResolver;
|
|
24
27
|
videoSelectionIntent?: VideoPrepIntent;
|
|
25
28
|
};
|
|
26
|
-
export declare const MediaEditor: ({ value, onChange, allowedKinds, previewAspectRatio, minSourceWidth, minSourceHeight, showAltInput, cropEditorMode, cropEditorAutoOpen, mediaPickerAutoOpen, showPreview, showActionOverlay, onEditDetails, fullWidth, previewVariant, showRemoveAction, uploadIntent, videoPrepIntent, videoSelectionIntent, }: MediaEditorProps) => import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export declare const MediaEditor: ({ value, onChange, allowedKinds, previewAspectRatio, minSourceWidth, minSourceHeight, showAltInput, cropEditorMode, cropEditorAutoOpen, mediaPickerAutoOpen, showPreview, showActionOverlay, onEditDetails, fullWidth, previewVariant, showRemoveAction, previewMaxWidth, preventPreviewUpscale, onUploadComplete, uploadIntent, videoPrepIntent, videoSelectionIntent, }: MediaEditorProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -10,5 +10,7 @@ export type MediaPreviewProps = {
|
|
|
10
10
|
variant?: 'default' | 'thumbnail';
|
|
11
11
|
showRemoveAction?: boolean;
|
|
12
12
|
showActionOverlay?: boolean;
|
|
13
|
+
previewMaxWidth?: 'xs' | 'sm' | 'md' | 'none';
|
|
14
|
+
preventUpscale?: boolean;
|
|
13
15
|
};
|
|
14
|
-
export declare const MediaPreview: ({ value, previewAspectRatio, onReplace, onEditCrop, onEditDetails, onRemove, fullWidth, variant, showRemoveAction, showActionOverlay, }: MediaPreviewProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare const MediaPreview: ({ value, previewAspectRatio, onReplace, onEditCrop, onEditDetails, onRemove, fullWidth, variant, showRemoveAction, showActionOverlay, previewMaxWidth, preventUpscale, }: MediaPreviewProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -7,6 +7,8 @@ type MediaEditorFieldUi = {
|
|
|
7
7
|
mediaPickerAutoOpen?: boolean;
|
|
8
8
|
showMediaPreview?: boolean;
|
|
9
9
|
showMediaOverlayActions?: boolean;
|
|
10
|
+
mediaPreviewMaxWidth?: 'xs' | 'sm' | 'md' | 'none';
|
|
11
|
+
preventMediaPreviewUpscale?: boolean;
|
|
10
12
|
} & Record<string, unknown>;
|
|
11
13
|
type MediaEditorFieldLike = {
|
|
12
14
|
type?: string;
|
|
@@ -17,4 +19,7 @@ export declare function withRepeaterThumbnailMediaFieldUi<T extends MediaEditorF
|
|
|
17
19
|
}): (T & {
|
|
18
20
|
ui: MediaEditorFieldUi;
|
|
19
21
|
}) | null;
|
|
22
|
+
export declare function withRepeaterStackMediaFieldUi<T extends MediaEditorFieldLike>(field: T): T & {
|
|
23
|
+
ui: MediaEditorFieldUi;
|
|
24
|
+
};
|
|
20
25
|
export {};
|
|
@@ -13,6 +13,6 @@ export { MediaEditorContextProvider, useMediaEditor, useMediaEditorOptional, typ
|
|
|
13
13
|
export { MediaEditorProvider } from './provider';
|
|
14
14
|
export type { MediaEditorProviderProps } from './provider';
|
|
15
15
|
export { createMediaEditorProvider } from './createMediaEditorProvider';
|
|
16
|
-
export { withRepeaterThumbnailMediaFieldUi } from './fieldUi';
|
|
16
|
+
export { withRepeaterStackMediaFieldUi, withRepeaterThumbnailMediaFieldUi } from './fieldUi';
|
|
17
17
|
export type { MediaValue, MediaTransform, MediaHotspot } from './types';
|
|
18
18
|
export { DEFAULT_HOTSPOT } from './utils';
|
|
@@ -28,6 +28,7 @@ export type MediaLibraryProps = {
|
|
|
28
28
|
uploader?: UseUploadsOptions['uploader'];
|
|
29
29
|
maxParallelUploads?: number;
|
|
30
30
|
getListOptions?: () => Partial<ListMediaAssetsOptions>;
|
|
31
|
+
onUploadComplete?: (asset: MediaAssetWithLabels) => void;
|
|
31
32
|
children: (props: MediaLibraryRenderProps) => ReactNode;
|
|
32
33
|
};
|
|
33
|
-
export declare const MediaLibrary: ({ siteId, repo, pageSize, allowMultiSelect, uploader, maxParallelUploads, children, getListOptions, }: MediaLibraryProps) => import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
export declare const MediaLibrary: ({ siteId, repo, pageSize, allowMultiSelect, uploader, maxParallelUploads, children, getListOptions, onUploadComplete, }: MediaLibraryProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -17,5 +17,6 @@ export type MediaPickerMiniProps = {
|
|
|
17
17
|
open?: boolean;
|
|
18
18
|
onOpenChange?: (value: boolean) => void;
|
|
19
19
|
getListOptions?: MediaLibraryProps['getListOptions'];
|
|
20
|
+
onUploadComplete?: MediaLibraryProps['onUploadComplete'];
|
|
20
21
|
};
|
|
21
|
-
export declare const MediaPickerMini: ({ siteId, repo, onPick, children, pageSize, uploader, autoCloseOnPick, open, onOpenChange, getListOptions, }: MediaPickerMiniProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export declare const MediaPickerMini: ({ siteId, repo, onPick, children, pageSize, uploader, autoCloseOnPick, open, onOpenChange, getListOptions, onUploadComplete, }: MediaPickerMiniProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AppearancePresetId, BoundaryOptionId, DesignBlockId, LayoutVariantKey, PageDesignEditorBlock, PageDesignEditorBoundary } from '../../../../theme-core/src/site-styles/index';
|
|
2
2
|
import { type SystemCustomizeFacetId, type SystemCustomizeFacetTransition, type SystemCustomizeFacetValue } from '../../../../blocks/src/system/customize/facets';
|
|
3
|
+
import { type BackgroundImagePoolItem, type BackgroundOverride } from '../../../../blocks/src/system/customize/backgrounds';
|
|
3
4
|
export type PreviewCustomizeCycleDirection = 'prev' | 'next';
|
|
4
5
|
export type PreviewCustomizeAction = Readonly<{
|
|
5
6
|
kind: 'set-layout';
|
|
@@ -15,6 +16,12 @@ export type PreviewCustomizeAction = Readonly<{
|
|
|
15
16
|
blockId: DesignBlockId;
|
|
16
17
|
baseContentId: string | null;
|
|
17
18
|
} & SystemCustomizeFacetTransition> | Readonly<{
|
|
19
|
+
kind: 'set-background';
|
|
20
|
+
blockId: DesignBlockId;
|
|
21
|
+
override: BackgroundOverride;
|
|
22
|
+
fromOverride: BackgroundOverride;
|
|
23
|
+
baseContentId: string | null;
|
|
24
|
+
}> | Readonly<{
|
|
18
25
|
kind: 'set-boundary';
|
|
19
26
|
previousBlockId: DesignBlockId;
|
|
20
27
|
nextBlockId: DesignBlockId;
|
|
@@ -33,6 +40,9 @@ type PreviewSetLookAction = Extract<PreviewCustomizeAction, {
|
|
|
33
40
|
type PreviewSetBlockFacetAction = Extract<PreviewCustomizeAction, {
|
|
34
41
|
kind: 'set-block-facet';
|
|
35
42
|
}>;
|
|
43
|
+
type PreviewSetBackgroundAction = Extract<PreviewCustomizeAction, {
|
|
44
|
+
kind: 'set-background';
|
|
45
|
+
}>;
|
|
36
46
|
type PreviewSetBoundaryAction = Extract<PreviewCustomizeAction, {
|
|
37
47
|
kind: 'set-boundary';
|
|
38
48
|
}>;
|
|
@@ -47,5 +57,12 @@ export declare function cyclePageDesignBlockFacet(input: Readonly<{
|
|
|
47
57
|
currentValue: SystemCustomizeFacetValue;
|
|
48
58
|
direction: PreviewCustomizeCycleDirection;
|
|
49
59
|
}>): PreviewSetBlockFacetAction | null;
|
|
60
|
+
export declare function setPageDesignBlockBackground(input: Readonly<{
|
|
61
|
+
block: PageDesignEditorBlock;
|
|
62
|
+
override: BackgroundOverride;
|
|
63
|
+
currentContent?: Record<string, unknown> | null;
|
|
64
|
+
fromOverride?: BackgroundOverride;
|
|
65
|
+
imagePool?: readonly BackgroundImagePoolItem[];
|
|
66
|
+
}>): PreviewSetBackgroundAction | null;
|
|
50
67
|
export declare function cyclePageDesignBoundaryBreak(boundary: PageDesignEditorBoundary, direction: PreviewCustomizeCycleDirection): PreviewSetBoundaryAction | PreviewResetBoundaryAction | null;
|
|
51
68
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
|
+
import type { BackgroundImagePoolItem } from '../../../../blocks/src/system/customize/backgrounds';
|
|
2
3
|
import { type ApiClient } from '../../../../api/src/request';
|
|
3
4
|
import type { PreviewCustomizeAction } from '../blocks/previewCustomizeActions';
|
|
4
5
|
import { type PreviewPageDesignEditorApplyOutcome, type PreviewPageDesignEditorState } from './previewCustomizeWorkflowState';
|
|
@@ -6,6 +7,9 @@ export type { PreviewPageDesignEditorApplyOutcome, PreviewPageDesignEditorState,
|
|
|
6
7
|
type PageDesignEditorStateContextValue = Readonly<{
|
|
7
8
|
state: PreviewPageDesignEditorState;
|
|
8
9
|
reload: () => void;
|
|
10
|
+
backgroundImagePool: readonly BackgroundImagePoolItem[];
|
|
11
|
+
backgroundImagePoolStatus: 'idle' | 'loading' | 'loaded' | 'failed';
|
|
12
|
+
loadBackgroundImagePool: () => Promise<readonly BackgroundImagePoolItem[]>;
|
|
9
13
|
applyAction: (action: PreviewCustomizeAction) => Promise<PreviewPageDesignEditorApplyOutcome>;
|
|
10
14
|
undo: () => Promise<PreviewPageDesignEditorApplyOutcome>;
|
|
11
15
|
redo: () => Promise<PreviewPageDesignEditorApplyOutcome>;
|
|
@@ -91,8 +91,9 @@ export declare function setPaletteOverrides(state: StyleConfiguratorState, palet
|
|
|
91
91
|
/**
|
|
92
92
|
* Records the post-compile resolved selection + any fallback warnings.
|
|
93
93
|
* Used after `compileSiteThemeFromSelections` runs against a new site style:
|
|
94
|
-
* the resolver may have auto-picked a different personality
|
|
95
|
-
*
|
|
94
|
+
* the resolver may have auto-picked a different personality if the user's
|
|
95
|
+
* previous selection is not offered for the new style, or a different palette
|
|
96
|
+
* if the persisted palette ID is no longer known.
|
|
96
97
|
*
|
|
97
98
|
* Palette overrides are scoped by palette variant. If the resolver moves the
|
|
98
99
|
* preview to a different palette, the current sparse overrides are stashed
|
|
@@ -2,6 +2,7 @@ import { type AppearancePresetId, type BoundaryOptionId, type DesignBlockId, typ
|
|
|
2
2
|
import { type HistoryState } from '../../../../content-editor/src/index';
|
|
3
3
|
import type { PreviewCustomizeAction } from '../blocks/previewCustomizeActions';
|
|
4
4
|
import type { SystemCustomizeFacetHistorySelection } from '../../../../blocks/src/system/customize/facets';
|
|
5
|
+
import { type BackgroundOverride } from '../../../../blocks/src/system/customize/backgrounds';
|
|
5
6
|
type PreviewLoadedEditorModel = PageDesignEditorReadModel;
|
|
6
7
|
export type PreviewCustomizeHistoryEntry = Readonly<{
|
|
7
8
|
kind: 'layout';
|
|
@@ -17,6 +18,11 @@ export type PreviewCustomizeHistoryEntry = Readonly<{
|
|
|
17
18
|
kind: 'block-facet';
|
|
18
19
|
blockId: PreviewCustomizeActionBlockId;
|
|
19
20
|
} & SystemCustomizeFacetHistorySelection> | Readonly<{
|
|
21
|
+
kind: 'background';
|
|
22
|
+
blockId: PreviewCustomizeActionBlockId;
|
|
23
|
+
fromOverride: BackgroundOverride;
|
|
24
|
+
toOverride: BackgroundOverride;
|
|
25
|
+
}> | Readonly<{
|
|
20
26
|
kind: 'boundary';
|
|
21
27
|
boundaryId: DesignBoundaryId;
|
|
22
28
|
previousBlockId: PreviewCustomizeActionBlockId;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const VALID_PUSH_SCOPES: readonly ["entries", "pages", "navigation", "forms", "theme", "footer", "venues", "event-categories", "events", "courses", "all"];
|
|
1
|
+
export declare const VALID_PUSH_SCOPES: readonly ["entries", "pages", "navigation", "forms", "settings", "theme", "footer", "venues", "event-categories", "events", "courses", "all"];
|
|
2
2
|
export type PushScope = (typeof VALID_PUSH_SCOPES)[number];
|
|
3
3
|
export declare function isValidPushScope(scope: string): scope is PushScope;
|
|
@@ -12,6 +12,8 @@ export interface MetadataUpdateFlags {
|
|
|
12
12
|
willUpdateNavigation: boolean;
|
|
13
13
|
/** Whether forms metadata should be updated (zero failures + some synced) */
|
|
14
14
|
willUpdateForms: boolean;
|
|
15
|
+
/** Whether settings metadata should be updated (zero failures + settings synced) */
|
|
16
|
+
willUpdateSettings: boolean;
|
|
15
17
|
/** Whether any metadata should be updated (at least one content type qualifies) */
|
|
16
18
|
shouldUpdateMetadata: boolean;
|
|
17
19
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { EntryMetadata, PagesMetadata, NavigationMetadata, FormsMetadata, LocalContent } from '../../content/reader';
|
|
1
|
+
import type { EntryMetadata, PagesMetadata, NavigationMetadata, FormsMetadata, LocalContent, SettingsMetadata } from '../../content/reader';
|
|
2
2
|
import type { PulledContent } from '../../../client/management/types';
|
|
3
|
-
export type StaleScope = 'entries' | 'pages' | 'navigation' | 'forms';
|
|
3
|
+
export type StaleScope = 'entries' | 'pages' | 'navigation' | 'settings' | 'forms';
|
|
4
4
|
export interface StaleItem {
|
|
5
5
|
scope: StaleScope;
|
|
6
6
|
/** Only set for entries — the content type slug */
|
|
@@ -14,4 +14,4 @@ export interface StaleItem {
|
|
|
14
14
|
* Check for stale content (remote is newer than local base)
|
|
15
15
|
* @internal Exported for testing
|
|
16
16
|
*/
|
|
17
|
-
export declare function checkForStaleContent(localContent: LocalContent, localMeta: Map<string, EntryMetadata>, pagesMeta: PagesMetadata | null, navigationMeta: NavigationMetadata | null, formsMeta: FormsMetadata | null, remoteContent: PulledContent): StaleItem[];
|
|
17
|
+
export declare function checkForStaleContent(localContent: LocalContent, localMeta: Map<string, EntryMetadata>, pagesMeta: PagesMetadata | null, navigationMeta: NavigationMetadata | null, formsMeta: FormsMetadata | null, remoteContent: PulledContent, settingsMeta?: SettingsMetadata | null): StaleItem[];
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { type EnvTarget } from '../helpers';
|
|
2
2
|
import type { OutputContext } from '../output';
|
|
3
|
+
import type { ContentSummary } from '../content/reader';
|
|
3
4
|
import { type JsonDiffMode } from '../sync';
|
|
4
5
|
import type { PushOptions } from './push/options';
|
|
5
6
|
import { type PushScope } from './push/consts';
|
|
6
7
|
export interface PushExecutionResult {
|
|
7
8
|
success: boolean;
|
|
8
9
|
}
|
|
10
|
+
export declare function noContentFoundWarningDetails(contentDir: string): Readonly<{
|
|
11
|
+
contentDir: string;
|
|
12
|
+
expectedFiles: readonly string[];
|
|
13
|
+
suggestion: string;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function contentSummaryHasPushableContent(summary: ContentSummary): boolean;
|
|
9
16
|
type MergeRemoteValidationInput = Readonly<{
|
|
10
17
|
target: EnvTarget;
|
|
11
18
|
pushScope: PushScope;
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* riverbankcms push pages # Push pages with blocks
|
|
12
12
|
* riverbankcms push pages home # Push specific page with blocks
|
|
13
13
|
* riverbankcms push navigation # Push navigation menus
|
|
14
|
+
* riverbankcms push settings # Push site settings
|
|
14
15
|
* riverbankcms push footer # Push footer content
|
|
15
16
|
* riverbankcms push theme # Push activeTheme from config (or 'current')
|
|
16
17
|
* riverbankcms push theme modern # Push specific theme file
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
* riverbankcms push --dry-run # Show what would be pushed
|
|
19
20
|
*/
|
|
20
21
|
import { Command } from 'commander';
|
|
22
|
+
export { contentSummaryHasPushableContent, noContentFoundWarningDetails } from './push-execute';
|
|
21
23
|
export { VALID_PUSH_SCOPES, isValidPushScope, type PushScope } from './push/consts';
|
|
22
24
|
export { calculateMetadataUpdates, type MetadataUpdateFlags } from './push/metadata';
|
|
23
25
|
export { filterLocalContent, type FilterResult } from './push/filter';
|
|
@@ -12,6 +12,7 @@ export interface LocalEntry {
|
|
|
12
12
|
status?: 'draft' | 'published';
|
|
13
13
|
hasUnpublishedChanges?: boolean;
|
|
14
14
|
slug?: string;
|
|
15
|
+
manualOrder?: number;
|
|
15
16
|
}
|
|
16
17
|
export declare class LegacyEntryTitleError extends Error {
|
|
17
18
|
readonly filePath: string;
|
|
@@ -376,6 +377,7 @@ export interface ContentSummary {
|
|
|
376
377
|
export declare function getContentSummary(contentDir: string): Promise<ContentSummary>;
|
|
377
378
|
export interface EntryMetadata {
|
|
378
379
|
pulledAt: string;
|
|
380
|
+
manualOrder?: string[];
|
|
379
381
|
entries: Record<string, {
|
|
380
382
|
id?: string;
|
|
381
383
|
createdAt?: string;
|
|
@@ -397,6 +399,10 @@ export interface NavigationMetadata {
|
|
|
397
399
|
updatedAt?: string;
|
|
398
400
|
}>;
|
|
399
401
|
}
|
|
402
|
+
export interface SettingsMetadata {
|
|
403
|
+
pulledAt: string;
|
|
404
|
+
updatedAt: string | null;
|
|
405
|
+
}
|
|
400
406
|
/**
|
|
401
407
|
* Read metadata for a content type from .meta/ directory
|
|
402
408
|
*
|
|
@@ -412,6 +418,13 @@ export declare function readEntriesMeta(contentDir: string, contentType: string)
|
|
|
412
418
|
* @returns Map of content type to metadata
|
|
413
419
|
*/
|
|
414
420
|
export declare function readAllMeta(contentDir: string): Promise<Map<string, EntryMetadata>>;
|
|
421
|
+
/**
|
|
422
|
+
* Read settings metadata from .meta/settings.json
|
|
423
|
+
*
|
|
424
|
+
* @param contentDir - Base content directory
|
|
425
|
+
* @returns Settings metadata or null if not found
|
|
426
|
+
*/
|
|
427
|
+
export declare function readSettingsMeta(contentDir: string): Promise<SettingsMetadata | null>;
|
|
415
428
|
/**
|
|
416
429
|
* Read pages metadata from .meta/pages.json
|
|
417
430
|
*
|
|
@@ -50,7 +50,7 @@ export declare function writeNavigation(contentDir: string, pulledNavigation: Pu
|
|
|
50
50
|
*
|
|
51
51
|
* Format: content/settings.json
|
|
52
52
|
*/
|
|
53
|
-
export declare function writeSettings(contentDir: string, pulledSettings: PulledSettings): Promise<string>;
|
|
53
|
+
export declare function writeSettings(contentDir: string, pulledSettings: PulledSettings, options?: WriterOptions): Promise<string>;
|
|
54
54
|
/**
|
|
55
55
|
* Write forms to content directory
|
|
56
56
|
*
|
|
@@ -195,6 +195,7 @@ export declare function updateMetadataAfterPush(contentDir: string, remoteConten
|
|
|
195
195
|
updatedAt: string;
|
|
196
196
|
createdAt?: string;
|
|
197
197
|
}>;
|
|
198
|
+
settingsUpdatedAt?: string | null;
|
|
198
199
|
forms?: Array<{
|
|
199
200
|
slug: string;
|
|
200
201
|
updatedAt: string;
|
|
@@ -97,6 +97,7 @@ export interface PulledEntryOutput {
|
|
|
97
97
|
slug?: string;
|
|
98
98
|
/** Resolved title (routable title when present, otherwise content title) */
|
|
99
99
|
title: string;
|
|
100
|
+
manualOrder?: number;
|
|
100
101
|
}
|
|
101
102
|
/**
|
|
102
103
|
* Map an entry from API response to pull output format.
|
|
@@ -109,6 +110,7 @@ export declare function mapEntryForOutput<T extends {
|
|
|
109
110
|
hasUnpublishedChanges: boolean;
|
|
110
111
|
slug?: string;
|
|
111
112
|
title: string;
|
|
113
|
+
manualOrder?: number;
|
|
112
114
|
}>(entry: T): PulledEntryOutput;
|
|
113
115
|
/**
|
|
114
116
|
* Parse pagination options from command flags.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { navigationMenuIdentity, type NavigationMenuIdentity, type NavigationMenuIdentityInput } from '../../../api/src/navigation';
|
|
2
|
+
import { type Result } from '../../../core/src/index';
|
|
3
|
+
export type NavigationIdentityInput = NavigationMenuIdentityInput;
|
|
4
|
+
export type DuplicateNavigationIdentityError = Readonly<{
|
|
5
|
+
code: 'duplicate_navigation_identity';
|
|
6
|
+
identity: NavigationMenuIdentity;
|
|
7
|
+
menuNames: readonly string[];
|
|
8
|
+
}>;
|
|
9
|
+
export declare const navigationIdentity: typeof navigationMenuIdentity;
|
|
10
|
+
export declare function navigationIdentityMap<T extends NavigationIdentityInput>(menus: readonly T[]): Result<ReadonlyMap<NavigationMenuIdentity, T>, DuplicateNavigationIdentityError>;
|
|
11
|
+
export declare function duplicateNavigationIdentityMessage(error: DuplicateNavigationIdentityError): string;
|
|
@@ -5,9 +5,9 @@ export type CliPageIdentifier = Brand<string, 'SdkCliPageIdentifier'>;
|
|
|
5
5
|
export type CliBlockIdentifier = Brand<string, 'SdkCliBlockIdentifier'>;
|
|
6
6
|
export type CliFormSlug = Brand<string, 'SdkCliFormSlug'>;
|
|
7
7
|
export type CliNavigationMenuName = Brand<string, 'SdkCliNavigationMenuName'>;
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const
|
|
10
|
-
export declare const
|
|
11
|
-
export declare const
|
|
12
|
-
export declare const
|
|
13
|
-
export declare const
|
|
8
|
+
export declare const unsafeAsCliContentTypeKey: (value: string) => CliContentTypeKey;
|
|
9
|
+
export declare const unsafeAsCliEntryIdentifier: (value: string) => CliEntryIdentifier;
|
|
10
|
+
export declare const unsafeAsCliPageIdentifier: (value: string) => CliPageIdentifier;
|
|
11
|
+
export declare const unsafeAsCliBlockIdentifier: (value: string) => CliBlockIdentifier;
|
|
12
|
+
export declare const unsafeAsCliFormSlug: (value: string) => CliFormSlug;
|
|
13
|
+
export declare const unsafeAsCliNavigationMenuName: (value: string) => CliNavigationMenuName;
|