@riverbankcms/sdk 0.147.0 → 0.149.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/CHANGELOG.md +16 -0
- package/README.md +1 -1
- package/dist/{PreviewEditorSidebar-DtpB3_sS.mjs → PreviewEditorSidebar-DBKln68M.mjs} +301 -205
- package/dist/{PreviewEditorUI-DxTLgaHo.mjs → PreviewEditorUI-DpRX4Mum.mjs} +68 -63
- package/dist/{PreviewQueryProvider-Dd4dxOiU.mjs → PreviewQueryProvider-C0mndwHB.mjs} +3 -3
- package/dist/{SdkPreviewModeRuntime-DMMNCngt.mjs → SdkPreviewModeRuntime-DJPmPY-r.mjs} +1247 -541
- package/dist/{SiteChromeCustomizeContext-DQXZXiqS.mjs → SiteChromeCustomizeContext-JYA0cJ_Z.mjs} +209720 -204978
- package/dist/_dts/ai/src/contracts/proposals.d.ts +0 -33
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +0 -3
- package/dist/_dts/api/src/accessAdmin.d.ts +0 -4
- package/dist/_dts/api/src/accountApi.d.ts +1 -1
- package/dist/_dts/api/src/admin.d.ts +22 -22
- package/dist/_dts/api/src/aiPatch.d.ts +2 -2
- package/dist/_dts/api/src/aiPlayground.d.ts +1 -0
- package/dist/_dts/api/src/analytics.d.ts +2 -2
- package/dist/_dts/api/src/apiEndpointTypes.d.ts +2 -0
- package/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
- package/dist/_dts/api/src/auth.d.ts +10 -10
- package/dist/_dts/api/src/availability.d.ts +6 -6
- package/dist/_dts/api/src/billing.d.ts +42 -15
- package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +8 -0
- package/dist/_dts/api/src/billingEndpointTypes.d.ts +15 -6
- package/dist/_dts/api/src/blocks.d.ts +15 -14
- package/dist/_dts/api/src/blocksKeys.d.ts +2 -0
- package/dist/_dts/api/src/bookingConfig.d.ts +33 -50
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +2 -6
- package/dist/_dts/api/src/bookingOperations.d.ts +9 -11
- package/dist/_dts/api/src/bookingRecords.d.ts +16 -11
- package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +5 -5
- package/dist/_dts/api/src/bookings.d.ts +7 -7
- package/dist/_dts/api/src/calendar.d.ts +9 -9
- package/dist/_dts/api/src/clientErrorReporting.d.ts +11 -0
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +7 -8
- package/dist/_dts/api/src/common/cancellation.d.ts +23 -0
- package/dist/_dts/api/src/common/envelope.d.ts +2 -2
- package/dist/_dts/api/src/content-editor.d.ts +2 -2
- package/dist/_dts/api/src/contentEntries.d.ts +17 -48
- package/dist/_dts/api/src/contentRuntime.d.ts +51 -37
- package/dist/_dts/api/src/contentTypes.d.ts +11 -11
- package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +6 -6
- package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +1 -1
- package/dist/_dts/api/src/documentLifecycle.d.ts +67 -0
- package/dist/_dts/api/src/domains.d.ts +16 -16
- package/dist/_dts/api/src/editLeaseEndpoints.d.ts +72 -0
- package/dist/_dts/api/src/emailSettings.d.ts +4 -4
- package/dist/_dts/api/src/endpoints.d.ts +135 -51
- package/dist/_dts/api/src/eventEmailTemplates.d.ts +2 -2
- package/dist/_dts/api/src/eventManagementContracts.d.ts +29 -7
- package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +0 -8
- package/dist/_dts/api/src/eventPageWords.d.ts +7 -12
- package/dist/_dts/api/src/footerSettings.d.ts +6 -6
- package/dist/_dts/api/src/index.d.ts +8 -7
- package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -0
- package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
- package/dist/_dts/api/src/navigation.d.ts +5 -5
- package/dist/_dts/api/src/pageSurfaceEditorEndpoints.d.ts +55 -0
- package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +28 -7
- package/dist/_dts/api/src/pages.d.ts +7 -7
- package/dist/_dts/api/src/performance.d.ts +1 -1
- package/dist/_dts/api/src/public/index.d.ts +1 -1
- package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +4 -2
- package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +6 -29
- package/dist/_dts/api/src/redirects.d.ts +3 -3
- package/dist/_dts/api/src/request.d.ts +11 -2
- package/dist/_dts/api/src/resources.d.ts +4 -4
- package/dist/_dts/api/src/routes.d.ts +8 -3
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +1 -2
- package/dist/_dts/api/src/sdkBlockUpsertContracts.d.ts +21 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +5 -28
- package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +1 -1
- package/dist/_dts/api/src/sdkEventOccurrenceRequestContracts.d.ts +43 -0
- package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +4 -2
- package/dist/_dts/api/src/sdkPullEventContracts.d.ts +9 -2
- package/dist/_dts/api/src/seo.d.ts +4 -4
- package/dist/_dts/api/src/services.d.ts +4 -4
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +15 -8
- package/dist/_dts/api/src/siteMembers.d.ts +10 -10
- package/dist/_dts/api/src/siteOnboarding.d.ts +14 -0
- package/dist/_dts/api/src/siteOperations.d.ts +6 -2
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -3
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +5 -12
- package/dist/_dts/api/src/siteRuntimeEntry.d.ts +31 -0
- package/dist/_dts/billing/src/checkout/platform.d.ts +77 -0
- package/dist/_dts/billing/src/components/index.d.ts +25 -40
- package/dist/_dts/billing/src/membership/index.d.ts +1 -3
- package/dist/_dts/billing/src/plans/entitlements.d.ts +80 -0
- package/dist/_dts/billing/src/plans/registry.d.ts +16 -16
- package/dist/_dts/billing/src/plans/standing.d.ts +9 -2
- package/dist/_dts/billing/src/plans/types.d.ts +5 -15
- package/dist/_dts/billing/src/site-arrangements.d.ts +2 -2
- package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +2 -4
- package/dist/_dts/billing/src/subscriptions/store.d.ts +17 -11
- package/dist/_dts/block-form/src/backend/store-backend.d.ts +6 -7
- package/dist/_dts/block-form/src/backend/types.d.ts +7 -0
- package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +3 -1
- package/dist/_dts/blocks/src/client/events.d.ts +3 -0
- package/dist/_dts/blocks/src/contracts/index.d.ts +1 -1
- package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +2 -2
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +54 -14
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +4 -13
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
- package/dist/_dts/blocks/src/portal/types.d.ts +9 -8
- package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +3 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +28 -28
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +7 -2
- package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +84 -160
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +31 -4
- package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -2
- package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +4 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +72 -12
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +36 -6
- package/dist/_dts/blocks/src/system/runtime/hooks/useBookingNowIso.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/usePolling.d.ts +7 -48
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.checkout-return-context.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.payment-confirmation.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +17 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-actions.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +9 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +14 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +4 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +37 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.client.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +16 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCardPresentations.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +29 -29
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -14
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +54 -6
- package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptions.d.ts +7 -2
- package/dist/_dts/blocks/src/system/runtime/shared/components/DemoBookingPortalAccess.d.ts +22 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/DemoPortalSignInLink.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/shared/utils/demoBookingPassStorage.d.ts +10 -0
- package/dist/_dts/blocks/src/system/runtime/shared/utils/demoPortalMagicLink.d.ts +29 -0
- package/dist/_dts/commerce/src/purchase/bookingPaymentSelection.d.ts +54 -0
- package/dist/_dts/commerce/src/purchase/checkoutCommitPlan.d.ts +58 -13
- package/dist/_dts/commerce/src/purchase/checkoutErrorCodes.d.ts +1 -1
- package/dist/_dts/commerce/src/purchase/checkoutPaymentPlanPlanning.d.ts +16 -21
- package/dist/_dts/commerce/src/purchase/checkoutPaymentTerms.d.ts +23 -40
- package/dist/_dts/commerce/src/purchase/checkoutSessionMetadata.d.ts +2 -2
- package/dist/_dts/commerce/src/purchase/checkoutStripeSessionPlanning.d.ts +5 -4
- package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
- package/dist/_dts/commerce/src/purchase/index.d.ts +1 -3
- package/dist/_dts/commerce/src/purchase/membershipOrderItemMetadata.d.ts +4 -0
- package/dist/_dts/commerce/src/purchase/oneTimeCheckoutPlanning.d.ts +9 -4
- package/dist/_dts/commerce/src/purchase/orderInstalmentClosure.d.ts +13 -1
- package/dist/_dts/commerce/src/purchase/orderInstalmentLifecycle.d.ts +5 -0
- package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +3 -1
- package/dist/_dts/commerce/src/purchase/orderTypes.d.ts +7 -1
- package/dist/_dts/commerce/src/purchase/refundRailSplit.d.ts +1 -1
- package/dist/_dts/commerce/src/purchase/stateTransitions.d.ts +2 -2
- package/dist/_dts/commerce/src/purchase/stripeMinimumCharge.d.ts +6 -0
- package/dist/_dts/commerce/src/purchase/types.d.ts +2 -1
- package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +2 -7
- package/dist/_dts/content-editor/src/controller/EditLeaseController.d.ts +39 -0
- package/dist/_dts/content-editor/src/controller/EditorWriteGate.d.ts +38 -0
- package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +25 -61
- package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseBanner.d.ts +7 -0
- package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseControllers.d.ts +14 -0
- package/dist/_dts/content-editor/src/controller/deriveEditorUnpublishedState.d.ts +6 -0
- package/dist/_dts/content-editor/src/controller/documentValueBaseline.d.ts +25 -0
- package/dist/_dts/content-editor/src/controller/editLeaseHandover.d.ts +30 -0
- package/dist/_dts/content-editor/src/controller/editLeaseLossSignal.d.ts +6 -0
- package/dist/_dts/content-editor/src/controller/editLeaseNotice.d.ts +28 -0
- package/dist/_dts/content-editor/src/controller/editorClientId.d.ts +2 -0
- package/dist/_dts/content-editor/src/controller/editorEditability.d.ts +38 -0
- package/dist/_dts/content-editor/src/controller/editorLeaseParticipation.d.ts +34 -0
- package/dist/_dts/content-editor/src/controller/normalizedMetadataBaseline.d.ts +29 -0
- package/dist/_dts/content-editor/src/controller/pageSurfaceDocumentBaselines.d.ts +14 -0
- package/dist/_dts/content-editor/src/controller/pageSurfaceLifecycle.d.ts +11 -0
- package/dist/_dts/content-editor/src/controller/planDocumentBaselineRefresh.d.ts +19 -0
- package/dist/_dts/content-editor/src/controller/readDocumentLeaseBaselines.d.ts +19 -0
- package/dist/_dts/content-editor/src/controller/refreshDocumentLeaseBaseline.d.ts +12 -0
- package/dist/_dts/content-editor/src/controller/refreshLinkedEntry.d.ts +17 -0
- package/dist/_dts/content-editor/src/controller/replayRestoredEditorEffects.d.ts +2 -3
- package/dist/_dts/content-editor/src/controller/routeWrites.d.ts +26 -0
- package/dist/_dts/content-editor/src/controller/useAutosaveTriggers.d.ts +16 -17
- package/dist/_dts/content-editor/src/controller/useBlockedPublishPlan.d.ts +6 -2
- package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +3 -3
- package/dist/_dts/content-editor/src/controller/useEntryValueAutosaves.d.ts +21 -0
- package/dist/_dts/content-editor/src/controller/useInitialEditorUiStore.d.ts +24 -0
- package/dist/_dts/content-editor/src/controller/useServerBaselineReconciliation.d.ts +17 -0
- package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +1 -1
- package/dist/_dts/content-editor/src/hooks/applyBlockedPublishPlan.d.ts +5 -1
- package/dist/_dts/content-editor/src/hooks/blockDraftLifecycle.d.ts +8 -47
- package/dist/_dts/content-editor/src/hooks/editLeaseMachine.d.ts +120 -0
- package/dist/_dts/content-editor/src/hooks/publishability.d.ts +6 -10
- package/dist/_dts/content-editor/src/hooks/useAutosaveStatus.d.ts +3 -0
- package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +5 -15
- package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +7 -5
- package/dist/_dts/content-editor/src/hooks/useEditLease.d.ts +28 -0
- package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +25 -39
- package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +17 -19
- package/dist/_dts/content-editor/src/hooks/useLinkedEntryAutosave.d.ts +5 -8
- package/dist/_dts/content-editor/src/hooks/useValueAutosave.d.ts +64 -0
- package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +0 -7
- package/dist/_dts/content-editor/src/index.d.ts +26 -7
- package/dist/_dts/content-editor/src/lib/browserStorage.d.ts +5 -0
- package/dist/_dts/content-editor/src/linkedEntries/domain.d.ts +12 -0
- package/dist/_dts/content-editor/src/linkedEntries/owner.d.ts +9 -0
- package/dist/_dts/content-editor/src/liveDrafts/draftProjection.d.ts +66 -0
- package/dist/_dts/content-editor/src/liveDrafts/linkedSaveHandovers.d.ts +37 -0
- package/dist/_dts/content-editor/src/liveDrafts/remoteDraftOverlay.d.ts +113 -0
- package/dist/_dts/content-editor/src/liveDrafts/useLiveDrafts.d.ts +32 -0
- package/dist/_dts/content-editor/src/liveDrafts/useRetentionTicks.d.ts +7 -0
- package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +6 -0
- package/dist/_dts/content-editor/src/primitives/shared/storeBinding.d.ts +1 -0
- package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +96 -19
- package/dist/_dts/content-editor/src/services/editorApiClient.d.ts +13 -0
- package/dist/_dts/content-editor/src/services/index.d.ts +2 -0
- package/dist/_dts/content-editor/src/services/pageSurfaceEditorServices.d.ts +23 -0
- package/dist/_dts/content-editor/src/sync/flushValues.d.ts +13 -0
- package/dist/_dts/content-editor/src/sync/lifecycleFailure.d.ts +51 -0
- package/dist/_dts/content-editor/src/sync/runLifecycle.d.ts +64 -0
- package/dist/_dts/content-editor/src/sync/schedulerValues.d.ts +27 -0
- package/dist/_dts/content-editor/src/sync/sendPlanning.d.ts +104 -0
- package/dist/_dts/content-editor/src/sync/valueSync.d.ts +114 -0
- package/dist/_dts/content-editor/src/ui/blockCollection.d.ts +8 -0
- package/dist/_dts/content-editor/src/ui/documentLifecycle.d.ts +18 -0
- package/dist/_dts/content-editor/src/ui/editorLeaseUiState.d.ts +7 -0
- package/dist/_dts/content-editor/src/ui/editorRefresh.d.ts +82 -0
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +102 -127
- package/dist/_dts/content-editor/src/ui/editorTransactionState.d.ts +1 -1
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +126 -72
- package/dist/_dts/content-editor/src/ui/editorValueSnapshot.d.ts +18 -0
- package/dist/_dts/content-editor/src/ui/serverBlockAdmission.d.ts +26 -0
- package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +16 -27
- package/dist/_dts/content-editor/src/ui/stores/blockVersionsStore.d.ts +24 -0
- package/dist/_dts/content-editor/src/ui/stores/linkedEntryLeaseStore.d.ts +54 -0
- package/dist/_dts/content-editor/src/ui/stores/linkedSaveHandoversStore.d.ts +11 -0
- package/dist/_dts/content-editor/src/ui/stores/remoteDraftsStore.d.ts +10 -0
- package/dist/_dts/content-editor/src/ui/stores/types.d.ts +63 -3
- package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +2 -2
- package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +1 -1
- package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +4 -4
- package/dist/_dts/content-model/src/content-types/builtins.d.ts +4 -4
- package/dist/_dts/content-model/src/definitions/shared.d.ts +11 -2
- package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
- package/dist/_dts/content-model/src/entry-slots/serializeAllowedBlocks.d.ts +2 -0
- package/dist/_dts/content-model/src/metadataConfig.d.ts +10 -38
- package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -1
- package/dist/_dts/content-model/src/types.d.ts +0 -1
- package/dist/_dts/core/src/block-content-identity.d.ts +49 -1
- package/dist/_dts/core/src/booking-flexible-balance.d.ts +2 -2
- package/dist/_dts/core/src/booking-instalment-deposit.d.ts +20 -0
- package/dist/_dts/core/src/booking-live-payment-terms.d.ts +72 -0
- package/dist/_dts/core/src/booking-payment-options.d.ts +24 -0
- package/dist/_dts/core/src/booking-payment-schemas.d.ts +522 -0
- package/dist/_dts/core/src/branded.d.ts +15 -0
- package/dist/_dts/core/src/currency-format.d.ts +8 -2
- package/dist/_dts/core/src/demo-lifecycle-status.d.ts +2 -2
- package/dist/_dts/core/src/demo-warm-pool-target.d.ts +8 -0
- package/dist/_dts/core/src/edit-lease.d.ts +60 -0
- package/dist/_dts/core/src/editor-state.d.ts +38 -13
- package/dist/_dts/core/src/editor-value-sync.d.ts +79 -0
- package/dist/_dts/core/src/html-entities.d.ts +6 -0
- package/dist/_dts/core/src/index.d.ts +7 -0
- package/dist/_dts/core/src/uuid.d.ts +7 -5
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +456 -189
- package/dist/_dts/editor/src/EditorProvider.d.ts +5 -0
- package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +14 -0
- package/dist/_dts/editor/src/chrome/EditorStatusBar.d.ts +1 -0
- package/dist/_dts/editor/src/chrome/statusBarPresentation.d.ts +0 -1
- package/dist/_dts/editor/src/index.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +10 -9
- package/dist/_dts/editor-blocks/src/BlockForm.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardFrame.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/applyExtendedFieldDefaults.d.ts +3 -4
- package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +4 -8
- package/dist/_dts/editor-blocks/src/block-editor/editorBlockItem.d.ts +23 -0
- package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +2 -7
- package/dist/_dts/editor-blocks/src/block-editor/hooks/applyBlockStructureChange.d.ts +4 -0
- package/dist/_dts/editor-blocks/src/block-editor/hooks/buildInsertBlockHistoryCommand.d.ts +14 -5
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +21 -19
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -10
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +8 -16
- package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +6 -16
- package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +37 -9
- package/dist/_dts/editor-blocks/src/index.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +3 -2
- package/dist/_dts/media-core/src/fileStorage.d.ts +4 -0
- package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +3 -1
- package/dist/_dts/media-editor/src/MediaPickerMiniDialog.d.ts +10 -0
- package/dist/_dts/media-editor/src/context.d.ts +1 -1
- package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -2
- package/dist/_dts/media-editor/src/index.d.ts +2 -0
- package/dist/_dts/media-editor/src/provider.d.ts +3 -2
- package/dist/_dts/media-react/src/hooks/internal/classification.d.ts +1 -1
- package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +3 -1
- package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +8 -3
- package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +6 -3
- package/dist/_dts/preview-next/src/client/blocks/linkedEntryRenderOverlay.d.ts +22 -2
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/entryFieldRebinding.d.ts +13 -0
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +11 -1
- package/dist/_dts/preview-next/src/client/blocks/renderPrecedence.d.ts +17 -0
- package/dist/_dts/preview-next/src/client/blocks/useLinkedSaveHandoverRetention.d.ts +20 -0
- package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
- package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewAccessBanners.d.ts +7 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +23 -14
- package/dist/_dts/preview-next/src/client/preview/PreviewLeaseEditingMode.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeAutosave.d.ts +5 -0
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +3 -4
- package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/usePreviewCustomizeWorkflowState.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/previewAuthStore.d.ts +7 -0
- package/dist/_dts/preview-next/src/constants.d.ts +4 -0
- package/dist/_dts/preview-next/src/keepAlive.d.ts +1 -0
- package/dist/_dts/realtime/src/client.d.ts +3 -0
- package/dist/_dts/realtime/src/draftChannel.d.ts +91 -0
- package/dist/_dts/realtime/src/drafts.d.ts +210 -0
- package/dist/_dts/realtime/src/index.d.ts +3 -0
- package/dist/_dts/realtime/src/leaseChangeSubscriptions.d.ts +8 -0
- package/dist/_dts/realtime/src/types.d.ts +113 -0
- package/dist/_dts/realtime/src/useDraftChannel.d.ts +34 -0
- package/dist/_dts/realtime/src/useSiteRealtimeReload.d.ts +27 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -55
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +1 -0
- package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -12
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/surfaces/src/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +0 -5
- package/dist/_dts/ui/src/color-picker.d.ts +1 -1
- package/dist/_dts/ui/src/palette/useHexDraft.d.ts +7 -0
- package/dist/client/{BookingMailingListNote-1n4Ch_u_.mjs → BookingMailingListNote-Cr3EeTP5.mjs} +504 -163
- package/dist/client/DemoBookingPortalAccess-BFGB1Fay.mjs +344 -0
- package/dist/client/{EventCombined.client-C0pgma9y.mjs → EventCombined.client-DKYV0_ft.mjs} +6 -6
- package/dist/client/{EventListing.client-4fhLOvHP.mjs → EventListing.client-B9UIcEYc.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-DScC4F3w.mjs → LeafletStaticMap-CFLPkP0K.mjs} +1 -1
- package/dist/client/{TerminalPanel-B5ZUsYhe.mjs → TerminalPanel-JjmgxEsR.mjs} +1 -1
- package/dist/client/{ThemedButton-DoVIV1Ao.mjs → ThemedButton-CKV1Jh2m.mjs} +1 -1
- package/dist/client/{accordion-CoT5g7zo.mjs → accordion-DXWIfT3T.mjs} +1 -1
- package/dist/client/{bookingForm-BWxB46xD.mjs → bookingForm-CjZgHNvv.mjs} +216 -63
- package/dist/client/bookings.mjs +1187 -692
- package/dist/client/{carousel-DtNYWFd3.mjs → carousel-DSLikmvZ.mjs} +1 -1
- package/dist/client/{cart-z4qZih1Y.mjs → cart-HDjWReFt.mjs} +3 -3
- package/dist/client/{checkout-DpL7euFH.mjs → checkout-CUvRZA3W.mjs} +3 -3
- package/dist/client/{checkoutUrls-BEfR7kVu.mjs → checkoutUrls-CXhko2Rv.mjs} +1 -1
- package/dist/client/client.mjs +2711 -1684
- package/dist/client/{context-C8TinPJc.mjs → context-DFmaZa-Q.mjs} +4 -3
- package/dist/client/{dates-vwwxTeB0.mjs → dates-BBep1JnF.mjs} +56 -11
- package/dist/client/{eventCalendar-DIbHfJXO.mjs → eventCalendar-zEobhxo4.mjs} +9 -9
- package/dist/client/{eventCombined-DoGMJ6cg.mjs → eventCombined-Dp7bz5k-.mjs} +4 -4
- package/dist/client/{eventDetails-BjN9v6a1.mjs → eventDetails-FE-zqTt7.mjs} +4 -4
- package/dist/client/{eventListing-DajjWgOv.mjs → eventListing-BMt5snal.mjs} +4 -4
- package/dist/client/{eventRegistration-DMq9gMA-.mjs → eventRegistration-O6ZxHfOb.mjs} +422 -570
- package/dist/client/{form-Qf6qTbos.mjs → form-DFa1D8vt.mjs} +3 -3
- package/dist/client/{headerSection-D7qJrqFX.mjs → headerSection-CmjHLR-N.mjs} +3 -3
- package/dist/client/hooks.mjs +414 -182
- package/dist/client/{locationMap-CCF9-t_0.mjs → locationMap-BXKP_lGh.mjs} +3 -3
- package/dist/client/{media-CwBGetqC.mjs → media-Cl38iOMI.mjs} +10 -3
- package/dist/client/{newsletterForm-DzCLSP4S.mjs → newsletterForm-CU-HmxGx.mjs} +3 -3
- package/dist/client/{pricing-Cgxv2KLC.mjs → pricing-KEAEsibq.mjs} +1 -1
- package/dist/client/{productDetail-ru9w5GHx.mjs → productDetail-Ckp7MGnt.mjs} +3 -3
- package/dist/client/{productList-zaapKSl-.mjs → productList-D91V0sYa.mjs} +3 -3
- package/dist/client/{propsDecoder-CwvvNOHx.mjs → propsDecoder-DZd6RJeA.mjs} +244 -94
- package/dist/client/rendering/client.mjs +2656 -1705
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +3430 -2352
- package/dist/client/{routeIslandApiConfig-BwVFo0Y4.mjs → routeIslandApiConfig-E1EkhhYY.mjs} +1 -1
- package/dist/client/{shop-mktkXvbV.mjs → shop-4F2jLQPI.mjs} +131 -85
- package/dist/client/{shop-commerce-De7gEnkA.mjs → shop-commerce-BbfCJjB3.mjs} +25 -13
- package/dist/client/{shop-commerce-store-B3MCxIBW.mjs → shop-commerce-store-vicweP2K.mjs} +1 -1
- package/dist/client/{shopShared-TqExh235.mjs → shopShared-DlONJt0T.mjs} +4 -4
- package/dist/client/{useEventFilters-n_OjkIjX.mjs → useEventFilters-COYyL3m7.mjs} +32 -17
- package/dist/preview-next/before-render.mjs +207 -105
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/constants.mjs +5 -1
- package/dist/preview-next/index.mjs +5 -1
- package/dist/preview-next/keepAlive.mjs +341 -165
- package/dist/preview-next/middleware.mjs +207 -105
- package/dist/{previewAuthStore-C_EHQ5XA.mjs → previewAuthStore-BBmV7UsW.mjs} +243 -112
- package/dist/{sdk-runtime-BIkJg5y1.mjs → sdk-runtime-CwvFFjB-.mjs} +2 -2
- package/dist/{separator-C9qDP95Z.mjs → separator-ByL72zUT.mjs} +1 -1
- package/dist/server/components.mjs +1839 -1475
- package/dist/server/config-validation.mjs +381 -166
- package/dist/server/config.mjs +381 -166
- package/dist/server/data.mjs +381 -166
- package/dist/server/index.mjs +214 -110
- package/dist/server/next.mjs +663 -351
- package/dist/server/page-converter.mjs +198 -79
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1536 -1169
- package/dist/server/rendering.mjs +2432 -2068
- package/dist/server/routing.mjs +456 -173
- package/dist/server/server.mjs +447 -267
- package/package.json +1 -1
- package/dist/_dts/api/src/bookingPaymentTermSchemas.d.ts +0 -123
- package/dist/_dts/billing/src/plans/display.d.ts +0 -15
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +0 -3
- package/dist/_dts/commerce/src/purchase/checkoutPaymentTermPlanning.d.ts +0 -10
- package/dist/_dts/commerce/src/purchase/checkoutValidatedItemPlanning.d.ts +0 -55
- package/dist/_dts/commerce/src/purchase/orderInstalmentPayoff.d.ts +0 -24
- package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +0 -4
- package/dist/_dts/content-editor/src/controller/buildPublishSuccessTransition.d.ts +0 -16
- package/dist/_dts/content-editor/src/controller/driver.d.ts +0 -14
- package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +0 -7
- package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +0 -29
- package/dist/_dts/content-editor/src/hooks/autosaveScopePlanning.d.ts +0 -26
- package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +0 -64
- package/dist/_dts/content-editor/src/hooks/useStoreAutosave.d.ts +0 -48
- package/dist/_dts/content-editor/src/types.d.ts +0 -44
- package/dist/client/DiscountCodeDisclosure-CKJtz0mY.mjs +0 -137
|
@@ -1,27 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { $ as FooterComposerPanel, $i as
|
|
3
|
-
import {
|
|
4
|
-
import { t as Separator } from "./separator-
|
|
5
|
-
import {
|
|
2
|
+
import { $ as FooterComposerPanel, $i as VARIANT_ROLES, $o as syncStateOf, $t as createStoreBackend, A as markApplySaving, Ai as curatedSiteStyles, An as listPageSurfaceContentSlots, B as setPaletteColors, Ba as CalloutDescription, Bn as resolvePageRouteSlug, C as cancelPreview, D as isPreviewingChange, Do as Maximize2, E as dismissWarnings, Eo as Monitor, F as previewFooterLook, Fa as SelectContent, Fn as routeLifecycleContext, Fo as ChevronDown, Ga as Input, Gi as curatedPalettes, H as syncStyleConfiguratorState, Ha as Popover, Hn as useEditorUiStore, I as previewHeaderLayout, Ia as SelectItem, Ii as resolveSdkFooterMode, Io as Check, Ja as TabsList, Ji as findButtonStyleRecipe, Jt as BlockEditor, Ka as Tabs, Ki as buttonStyleHoverPreferenceValue, L as previewHeaderStyle, La as SelectTrigger, Li as findFooterLook, Ln as isAdapterReferenceKind, Lo as Button, M as palettePreviewProjection, Mi as getCuratedSiteStyle, N as previewButtonStyle, No as ChevronRight, O as markApplyFailed, On as createManifestValidation, Oo as LoaderCircle, P as previewCuratedPalette, Pa as Select, Po as ChevronLeft, Q as resolvePreviewSidebarTab, Qi as buttonStyleSelectionKey, Qo as displayedValues, Qt as FormRenderer, R as previewSiteStyle, Ra as SelectValue, Ri as getHeaderLayout, S as applyTypographyDraftPatch, T as deriveStyleConfiguratorCapabilities, U as toggleRow, Ua as PopoverContent, Un as useEditorUiStoreInstance, Uo as canWriteLinkedEntry, V as styleConfiguratorHistoryEntryForPersistedSelection, Va as SearchInput, Vn as resolveContentTitle, Vo as isEdited, Wa as PopoverTrigger, X as resolveStyleConfiguratorInitialSnapshot, Xi as updateButtonStyleHoverPreference, Ya as TabsTrigger, Yi as resolveButtonStyleSelection, Z as createOptimisticActionRunner, Zi as updateButtonStyleSelectionChoice, Zt as ManifestForm, _ as reportPreviewDesignError, _a as paletteColorEntries, _o as Tablet, ao as Surface, at as ContentFieldsForm, b as planSiteChromeSelection, bo as SlidersHorizontal, c as selectionSnapshotFromApplySiteStyleSelectionResponse, co as DropdownMenuItem, do as DropdownMenuTrigger, es as valueStatus, f as usePreviewDesignCoordinator, ft as useAutosaveStatus, g as PREVIEW_DESIGN_SAVE_ERROR_MESSAGE, io as CollapsibleTrigger, ir as toEditorBlockItem, j as openRow, jn as blocksKeys, jr as ThemedButtonSpecimen, k as markApplySaved, kn as listEntryPageContentSlots, l as deriveSiteStylePreviewUpdate, lo as DropdownMenuLabel, lt as useEntryController, n as useSiteChromeCustomizeOptional, no as Collapsible, ns as assertNever$1, oo as DropdownMenu, ot as useUISelector, po as X$1, qa as TabsContent, qi as buttonStyleSelectionParameterValue, ro as CollapsibleContent, s as buildApplySiteStyleSelectionBody, so as DropdownMenuContent, sr as ThemeScope, u as planConfiguratorPreview, uo as DropdownMenuSeparator, v as buildSiteChromeSelectionModels, va as paletteColorsSchema, vt as LinkedEntryLeaseBanner, w as createStyleConfiguratorState, x as applyResolvedSelections, y as cycleSiteChromeSelectionId, yo as Smartphone, z as resetTypographyToSaved, za as Callout, zi as getHeaderStyle, zn as deriveRouteMetadataPresentation, zo as cn } from "./SiteChromeCustomizeContext-JYA0cJ_Z.mjs";
|
|
3
|
+
import { a as usePreviewAuth, m as getDashboardUrl, p as unwrapResponse } from "./previewAuthStore-BBmV7UsW.mjs";
|
|
4
|
+
import { t as Separator } from "./separator-ByL72zUT.mjs";
|
|
5
|
+
import { C as getSiteFontsStorageUrl, S as generateFontFaceCss, _ as useBlockCustomizeControls, b as previewWidgetOverrides, d as canInspectSiteStyle, f as buildPreviewDashboardSetupUrl, g as usePreviewSiteFontStorageUrl, h as resolvePreviewSidebarChromeModel, m as resolvePreviewEditorGuidanceModel, p as resolvePreviewDashboardSetupHandoff, v as usePreviewBlockCustomizeSelectionOptional, x as buildFontPreviewUrl, y as PreviewFormProvider } from "./SdkPreviewModeRuntime-DJPmPY-r.mjs";
|
|
6
6
|
import React, { createContext, forwardRef, useCallback, useContext, useEffect, useId, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, useTransition } from "react";
|
|
7
7
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
9
9
|
import { useRouter } from "next/navigation.js";
|
|
10
|
-
//#region ../preview-next/src/client/preview/footerInspection.ts
|
|
11
|
-
/** Shared by sidebar routing and the footer panel's initial editing target. */
|
|
12
|
-
function resolveFooterInspection(inspection) {
|
|
13
|
-
return inspection?.kind === "footer" || inspection?.kind === "footer-module" ? inspection : null;
|
|
14
|
-
}
|
|
15
|
-
function footerComposerInspectionProps(inspection) {
|
|
16
|
-
return {
|
|
17
|
-
initialTarget: inspection?.kind === "footer-module" ? {
|
|
18
|
-
kind: "module",
|
|
19
|
-
moduleId: inspection.moduleId
|
|
20
|
-
} : { kind: "overview" },
|
|
21
|
-
initialTargetRequestId: inspection?.requestId
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
//#endregion
|
|
25
10
|
//#region ../../node_modules/.pnpm/react-colorful@5.7.0_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/react-colorful/dist/index.mjs
|
|
26
11
|
function u() {
|
|
27
12
|
return (u = Object.assign || function(e) {
|
|
@@ -362,6 +347,88 @@ var R, U = "undefined" != typeof window ? useLayoutEffect : useEffect, V = funct
|
|
|
362
347
|
return React.createElement(Q, u({}, r, { colorModel: W }));
|
|
363
348
|
};
|
|
364
349
|
//#endregion
|
|
350
|
+
//#region ../ui/src/palette/hex.ts
|
|
351
|
+
/**
|
|
352
|
+
* Hex colour helpers shared by every palette-editing surface (Macadamia
|
|
353
|
+
* onboarding swatches, the LiveThemeEditor, the Style configurator advanced
|
|
354
|
+
* row). Consolidates three prior duplicates: `normalizeColorPickerValue` in
|
|
355
|
+
* Macadamia, `normalizeHex` + `contrastRatio` formerly in
|
|
356
|
+
* `theme-editor/utils.ts`, and the inline regex in `updateColorRole`.
|
|
357
|
+
*
|
|
358
|
+
* Pure functions; no DOM, no React.
|
|
359
|
+
*/
|
|
360
|
+
/**
|
|
361
|
+
* Coerces user input into a canonical lowercase `#RRGGBB` form. Accepts
|
|
362
|
+
* 3-digit shorthand, case-insensitive 6-digit hex, and the same forms with or
|
|
363
|
+
* without a leading `#`; returns `fallback` for any other shape (empty
|
|
364
|
+
* string, garbage, characters outside `[0-9a-f]`, wrong length, etc.). Pass
|
|
365
|
+
* a `fallback` to make the fallback explicit at the call site — defaulting
|
|
366
|
+
* to `'#000000'` preserves the former theme-editor helper semantics.
|
|
367
|
+
*/
|
|
368
|
+
function normalizeHex(input, fallback = "#000000") {
|
|
369
|
+
if (!input) return fallback;
|
|
370
|
+
const trimmed = input.trim().replace(/^#/, "").toLowerCase();
|
|
371
|
+
const expanded = trimmed.length === 3 ? trimmed.split("").map((char) => char + char).join("") : trimmed;
|
|
372
|
+
if (!/^[0-9a-f]{6}$/i.test(expanded)) return fallback;
|
|
373
|
+
return `#${expanded}`;
|
|
374
|
+
}
|
|
375
|
+
function hexToRgb(hex) {
|
|
376
|
+
const match = normalizeHex(hex).replace("#", "").match(/.{2}/g);
|
|
377
|
+
if (!match || match.length < 3) return null;
|
|
378
|
+
const [r, g, b] = match.map((value) => parseInt(value, 16));
|
|
379
|
+
return [
|
|
380
|
+
r,
|
|
381
|
+
g,
|
|
382
|
+
b
|
|
383
|
+
];
|
|
384
|
+
}
|
|
385
|
+
function luminanceChannel(raw) {
|
|
386
|
+
const channel = raw / 255;
|
|
387
|
+
return channel <= .03928 ? channel / 12.92 : Math.pow((channel + .055) / 1.055, 2.4);
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* WCAG relative luminance + contrast ratio. Rounded to 2 decimal places so
|
|
391
|
+
* the result is stable for UI display.
|
|
392
|
+
*/
|
|
393
|
+
function contrastRatio(hexA, hexB) {
|
|
394
|
+
const rgbA = hexToRgb(hexA);
|
|
395
|
+
const rgbB = hexToRgb(hexB);
|
|
396
|
+
if (!rgbA || !rgbB) return 1;
|
|
397
|
+
const lumA = .2126 * luminanceChannel(rgbA[0]) + .7152 * luminanceChannel(rgbA[1]) + .0722 * luminanceChannel(rgbA[2]);
|
|
398
|
+
const lumB = .2126 * luminanceChannel(rgbB[0]) + .7152 * luminanceChannel(rgbB[1]) + .0722 * luminanceChannel(rgbB[2]);
|
|
399
|
+
const brighter = Math.max(lumA, lumB);
|
|
400
|
+
const darker = Math.min(lumA, lumB);
|
|
401
|
+
return Number(((brighter + .05) / (darker + .05)).toFixed(2));
|
|
402
|
+
}
|
|
403
|
+
//#endregion
|
|
404
|
+
//#region ../ui/src/palette/useHexDraft.ts
|
|
405
|
+
/** Keeps incomplete text local while sending only complete colors to consumers. */
|
|
406
|
+
function useHexDraft(value, onChange) {
|
|
407
|
+
const [draft, setDraft] = useState(value);
|
|
408
|
+
useEffect(() => {
|
|
409
|
+
setDraft(value);
|
|
410
|
+
}, [value]);
|
|
411
|
+
const changeDraft = (next) => {
|
|
412
|
+
setDraft(next);
|
|
413
|
+
if (/^#?[0-9a-fA-F]{6}$/.test(next.trim())) onChange(normalizeHex(next));
|
|
414
|
+
};
|
|
415
|
+
const finishDraft = () => {
|
|
416
|
+
if (/^#?[0-9a-fA-F]{3}$/.test(draft.trim())) {
|
|
417
|
+
const normalized = normalizeHex(draft);
|
|
418
|
+
setDraft(normalized);
|
|
419
|
+
onChange(normalized);
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
if (!normalizeHex(draft, "")) setDraft(value);
|
|
423
|
+
};
|
|
424
|
+
return {
|
|
425
|
+
draft,
|
|
426
|
+
changeDraft,
|
|
427
|
+
finishDraft,
|
|
428
|
+
setDraft
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
//#endregion
|
|
365
432
|
//#region ../ui/src/color-picker.tsx
|
|
366
433
|
function useForwardedRef(ref) {
|
|
367
434
|
const innerRef = useRef(null);
|
|
@@ -378,6 +445,7 @@ const ColorPicker = forwardRef(({ disabled, value, onChange, onBlur, name, class
|
|
|
378
445
|
const parsedValue = useMemo(() => {
|
|
379
446
|
return value || "#FFFFFF";
|
|
380
447
|
}, [value]);
|
|
448
|
+
const { draft, changeDraft, finishDraft, setDraft } = useHexDraft(parsedValue, onChange);
|
|
381
449
|
return /* @__PURE__ */ jsxs("div", {
|
|
382
450
|
className: cn("inline-block", props.style ? "" : ""),
|
|
383
451
|
children: [/* @__PURE__ */ jsxs(Popover, {
|
|
@@ -406,14 +474,17 @@ const ColorPicker = forwardRef(({ disabled, value, onChange, onBlur, name, class
|
|
|
406
474
|
className: "w-full",
|
|
407
475
|
children: [/* @__PURE__ */ jsx(Z, {
|
|
408
476
|
color: parsedValue,
|
|
409
|
-
onChange
|
|
477
|
+
onChange: (next) => {
|
|
478
|
+
setDraft(next);
|
|
479
|
+
onChange(next);
|
|
480
|
+
}
|
|
410
481
|
}), /* @__PURE__ */ jsx(Input, {
|
|
482
|
+
"aria-label": "Hex colour",
|
|
411
483
|
maxLength: 7,
|
|
412
|
-
onChange: (
|
|
413
|
-
|
|
414
|
-
},
|
|
484
|
+
onChange: (event) => changeDraft(event.currentTarget.value),
|
|
485
|
+
onBlur: finishDraft,
|
|
415
486
|
ref,
|
|
416
|
-
value:
|
|
487
|
+
value: draft
|
|
417
488
|
})]
|
|
418
489
|
})]
|
|
419
490
|
}), label ? /* @__PURE__ */ jsx("div", {
|
|
@@ -818,6 +889,21 @@ function normalizeFieldUi(value) {
|
|
|
818
889
|
return value;
|
|
819
890
|
}
|
|
820
891
|
//#endregion
|
|
892
|
+
//#region ../preview-next/src/client/preview/footerInspection.ts
|
|
893
|
+
/** Shared by sidebar routing and the footer panel's initial editing target. */
|
|
894
|
+
function resolveFooterInspection(inspection) {
|
|
895
|
+
return inspection?.kind === "footer" || inspection?.kind === "footer-module" ? inspection : null;
|
|
896
|
+
}
|
|
897
|
+
function footerComposerInspectionProps(inspection) {
|
|
898
|
+
return {
|
|
899
|
+
initialTarget: inspection?.kind === "footer-module" ? {
|
|
900
|
+
kind: "module",
|
|
901
|
+
moduleId: inspection.moduleId
|
|
902
|
+
} : { kind: "overview" },
|
|
903
|
+
initialTargetRequestId: inspection?.requestId
|
|
904
|
+
};
|
|
905
|
+
}
|
|
906
|
+
//#endregion
|
|
821
907
|
//#region ../preview-next/src/client/preview/PreviewZoomControls.tsx
|
|
822
908
|
function PreviewZoomControls({ zoom, onZoomChange, disabled }) {
|
|
823
909
|
return /* @__PURE__ */ jsxs(Select, {
|
|
@@ -1075,13 +1161,37 @@ function resolveSubrouteNotice(ctx, args) {
|
|
|
1075
1161
|
const EMPTY_BLOCKS = [];
|
|
1076
1162
|
const EMPTY_SLOTS = [];
|
|
1077
1163
|
const EMPTY_SELECTION = { kind: "none" };
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1164
|
+
/**
|
|
1165
|
+
* The shared slot-list keys, so the controller's refreshes (a lease grant, a
|
|
1166
|
+
* discard that reverts sections) re-read this panel's slots.
|
|
1167
|
+
*/
|
|
1168
|
+
function pageContentSlotsKey(siteId, typeKey, entryId, pageSurfaceId) {
|
|
1169
|
+
return pageSurfaceId ? blocksKeys.surfaceSlots(siteId, pageSurfaceId) : blocksKeys.entrySlots(siteId, typeKey, entryId);
|
|
1170
|
+
}
|
|
1171
|
+
function loadContentSlots(apiClient, siteId, typeKey, entryId, pageSurfaceId) {
|
|
1172
|
+
return pageSurfaceId ? listPageSurfaceContentSlots(apiClient, {
|
|
1081
1173
|
siteId,
|
|
1082
|
-
|
|
1174
|
+
pageSurfaceId
|
|
1175
|
+
}) : listEntryPageContentSlots(apiClient, {
|
|
1176
|
+
siteId,
|
|
1177
|
+
type: typeKey,
|
|
1083
1178
|
entryId
|
|
1084
|
-
|
|
1179
|
+
});
|
|
1180
|
+
}
|
|
1181
|
+
function slotOwner(slot, typeKey, entryId, pageSurfaceId) {
|
|
1182
|
+
if (!pageSurfaceId) return {
|
|
1183
|
+
kind: "entry-slot",
|
|
1184
|
+
type: typeKey,
|
|
1185
|
+
entryId,
|
|
1186
|
+
slotKey: slot.slotKey
|
|
1187
|
+
};
|
|
1188
|
+
if (!("compositionHash" in slot)) throw new Error("Page surface slot is missing its revision");
|
|
1189
|
+
return {
|
|
1190
|
+
kind: "surface-slot",
|
|
1191
|
+
pageSurfaceId,
|
|
1192
|
+
slotKey: slot.slotKey,
|
|
1193
|
+
compositionHash: slot.compositionHash
|
|
1194
|
+
};
|
|
1085
1195
|
}
|
|
1086
1196
|
function getAllowedBlockKinds(slot) {
|
|
1087
1197
|
return slot.allowedBlocks.blockKinds;
|
|
@@ -1126,26 +1236,23 @@ function updateBlocksWithSavedContent(blocks, blockId, content) {
|
|
|
1126
1236
|
function getErrorMessage(error) {
|
|
1127
1237
|
return error instanceof Error ? error.message : "Unable to load Page Content.";
|
|
1128
1238
|
}
|
|
1129
|
-
function EntrySlotBlockEditorPanel({ siteId, dashboardBaseUrl, typeKey, entryId, theme = null, apiClient, sdkConfig = null, widgets }) {
|
|
1239
|
+
function EntrySlotBlockEditorPanel({ siteId, dashboardBaseUrl, typeKey, entryId, pageSurfaceId, theme = null, apiClient, sdkConfig = null, widgets }) {
|
|
1130
1240
|
const router = useRouter();
|
|
1131
1241
|
const queryClient = useQueryClient();
|
|
1132
1242
|
const uiStore = useEditorUiStoreInstance();
|
|
1133
1243
|
const blockEditorRef = useRef(null);
|
|
1134
1244
|
const focusRequest = useEditorUiStore((state) => state.focusRequest);
|
|
1135
|
-
const blockAutosaveStatus =
|
|
1245
|
+
const blockAutosaveStatus = useAutosaveStatus("blocks").status;
|
|
1136
1246
|
const [slotSelection, setSlotSelection] = useState(EMPTY_SELECTION);
|
|
1137
|
-
const queryKey = useMemo(() =>
|
|
1247
|
+
const queryKey = useMemo(() => pageContentSlotsKey(siteId, typeKey, entryId, pageSurfaceId), [
|
|
1138
1248
|
entryId,
|
|
1249
|
+
pageSurfaceId,
|
|
1139
1250
|
siteId,
|
|
1140
1251
|
typeKey
|
|
1141
1252
|
]);
|
|
1142
1253
|
const slotsQuery = useQuery({
|
|
1143
1254
|
queryKey,
|
|
1144
|
-
queryFn: () =>
|
|
1145
|
-
siteId,
|
|
1146
|
-
type: typeKey,
|
|
1147
|
-
entryId
|
|
1148
|
-
}),
|
|
1255
|
+
queryFn: () => loadContentSlots(apiClient, siteId, typeKey, entryId, pageSurfaceId),
|
|
1149
1256
|
staleTime: 3e4
|
|
1150
1257
|
});
|
|
1151
1258
|
const handleBlockSave = useCallback((blockId, content) => {
|
|
@@ -1175,7 +1282,17 @@ function EntrySlotBlockEditorPanel({ siteId, dashboardBaseUrl, typeKey, entryId,
|
|
|
1175
1282
|
const warnings = slotsQuery.data?.warnings ?? [];
|
|
1176
1283
|
const selection = useMemo(() => resolveSlotSelection(slotSelection, slots), [slotSelection, slots]);
|
|
1177
1284
|
const selectedSlot = useMemo(() => findSelectedSlot(selection, slots), [selection, slots]);
|
|
1178
|
-
const selectedBlocks = selectedSlot?.blocks ?? EMPTY_BLOCKS;
|
|
1285
|
+
const selectedBlocks = useMemo(() => (selectedSlot?.blocks ?? EMPTY_BLOCKS).map(toEditorBlockItem), [selectedSlot]);
|
|
1286
|
+
const collectionReads = useMemo(() => slots.map((slot) => ({
|
|
1287
|
+
owner: slotOwner(slot, typeKey, entryId, pageSurfaceId),
|
|
1288
|
+
currentBlockIds: slot.blocks.map((block) => block.id),
|
|
1289
|
+
publishedBlockIds: slot.publishedBlockIds
|
|
1290
|
+
})), [
|
|
1291
|
+
slots,
|
|
1292
|
+
typeKey,
|
|
1293
|
+
entryId,
|
|
1294
|
+
pageSurfaceId
|
|
1295
|
+
]);
|
|
1179
1296
|
const focusRequestedBlockField = useCallback((editor) => {
|
|
1180
1297
|
if (!editor) return false;
|
|
1181
1298
|
if (!focusRequest?.blockId) return false;
|
|
@@ -1227,13 +1344,12 @@ function EntrySlotBlockEditorPanel({ siteId, dashboardBaseUrl, typeKey, entryId,
|
|
|
1227
1344
|
ref: handleBlockEditorRef,
|
|
1228
1345
|
siteId,
|
|
1229
1346
|
dashboardBaseUrl,
|
|
1230
|
-
owner:
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
slotKey: selectedSlot.slotKey
|
|
1347
|
+
owner: slotOwner(selectedSlot, typeKey, entryId, pageSurfaceId),
|
|
1348
|
+
source: {
|
|
1349
|
+
kind: "server",
|
|
1350
|
+
blocks: selectedBlocks
|
|
1235
1351
|
},
|
|
1236
|
-
|
|
1352
|
+
collectionReads,
|
|
1237
1353
|
apiClient,
|
|
1238
1354
|
uiStore,
|
|
1239
1355
|
theme,
|
|
@@ -1263,7 +1379,11 @@ function EntrySlotBlockEditorPanel({ siteId, dashboardBaseUrl, typeKey, entryId,
|
|
|
1263
1379
|
value: selectedSlot.slotKey,
|
|
1264
1380
|
onValueChange: async (nextSlotKey) => {
|
|
1265
1381
|
if (blockAutosaveStatus === "saving") return;
|
|
1266
|
-
|
|
1382
|
+
const blockKeys = uiStore.getState().drafts.inspect().map((draft) => ({
|
|
1383
|
+
kind: "block",
|
|
1384
|
+
blockId: draft.id
|
|
1385
|
+
}));
|
|
1386
|
+
await uiStore.getState().autosave.flushValues("save-draft", { keys: blockKeys }).catch(() => null);
|
|
1267
1387
|
setSlotSelection({
|
|
1268
1388
|
kind: "selected",
|
|
1269
1389
|
slotKey: nextSlotKey
|
|
@@ -1285,7 +1405,7 @@ function EntrySlotBlockEditorPanel({ siteId, dashboardBaseUrl, typeKey, entryId,
|
|
|
1285
1405
|
}
|
|
1286
1406
|
//#endregion
|
|
1287
1407
|
//#region ../preview-next/src/client/preview/EntryEditorPanel.tsx
|
|
1288
|
-
function EntryEditorPanel({ siteId, dashboardBaseUrl, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, apiClient, entrySubrouteContext, metadataPanel, linkedEntrySection, widgets, sdkConfig, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange }) {
|
|
1408
|
+
function EntryEditorPanel({ siteId, dashboardBaseUrl, entryData, pageSurfaceId, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, apiClient, entrySubrouteContext, metadataPanel, linkedEntrySection, widgets, sdkConfig, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange }) {
|
|
1289
1409
|
const [contentOpen, setContentOpen] = useState(true);
|
|
1290
1410
|
const [pageContentOpen, setPageContentOpen] = useState(false);
|
|
1291
1411
|
const [templateOpen, setTemplateOpen] = useState(false);
|
|
@@ -1350,7 +1470,6 @@ function EntryEditorPanel({ siteId, dashboardBaseUrl, entryData, contentTypeSche
|
|
|
1350
1470
|
theme: theme ?? null,
|
|
1351
1471
|
previewClient: apiClient,
|
|
1352
1472
|
children: /* @__PURE__ */ jsx(ContentFieldsForm, {
|
|
1353
|
-
siteId,
|
|
1354
1473
|
form: contentFormSpec,
|
|
1355
1474
|
initialValues: contentInitialValues,
|
|
1356
1475
|
widgets
|
|
@@ -1387,6 +1506,7 @@ function EntryEditorPanel({ siteId, dashboardBaseUrl, entryData, contentTypeSche
|
|
|
1387
1506
|
dashboardBaseUrl,
|
|
1388
1507
|
typeKey: entryData.type,
|
|
1389
1508
|
entryId: entryData.id,
|
|
1509
|
+
pageSurfaceId,
|
|
1390
1510
|
theme,
|
|
1391
1511
|
apiClient,
|
|
1392
1512
|
sdkConfig: sdkConfig ?? null,
|
|
@@ -1753,7 +1873,7 @@ function PageBlockEditorPanel(props) {
|
|
|
1753
1873
|
kind: "page",
|
|
1754
1874
|
pageId: props.pageId
|
|
1755
1875
|
},
|
|
1756
|
-
|
|
1876
|
+
source: { kind: "mounted" },
|
|
1757
1877
|
uiStore: props.uiStoreForBlockEditor,
|
|
1758
1878
|
apiClient: props.apiClient,
|
|
1759
1879
|
onBlocksChange: props.onBlocksChange,
|
|
@@ -1906,60 +2026,6 @@ function PreviewEditorGuidanceCard({ guidance, completeSetupDisabled, onComplete
|
|
|
1906
2026
|
});
|
|
1907
2027
|
}
|
|
1908
2028
|
//#endregion
|
|
1909
|
-
//#region ../ui/src/palette/hex.ts
|
|
1910
|
-
/**
|
|
1911
|
-
* Hex colour helpers shared by every palette-editing surface (Macadamia
|
|
1912
|
-
* onboarding swatches, the LiveThemeEditor, the Style configurator advanced
|
|
1913
|
-
* row). Consolidates three prior duplicates: `normalizeColorPickerValue` in
|
|
1914
|
-
* Macadamia, `normalizeHex` + `contrastRatio` formerly in
|
|
1915
|
-
* `theme-editor/utils.ts`, and the inline regex in `updateColorRole`.
|
|
1916
|
-
*
|
|
1917
|
-
* Pure functions; no DOM, no React.
|
|
1918
|
-
*/
|
|
1919
|
-
/**
|
|
1920
|
-
* Coerces user input into a canonical lowercase `#RRGGBB` form. Accepts
|
|
1921
|
-
* 3-digit shorthand, case-insensitive 6-digit hex, and the same forms with or
|
|
1922
|
-
* without a leading `#`; returns `fallback` for any other shape (empty
|
|
1923
|
-
* string, garbage, characters outside `[0-9a-f]`, wrong length, etc.). Pass
|
|
1924
|
-
* a `fallback` to make the fallback explicit at the call site — defaulting
|
|
1925
|
-
* to `'#000000'` preserves the former theme-editor helper semantics.
|
|
1926
|
-
*/
|
|
1927
|
-
function normalizeHex(input, fallback = "#000000") {
|
|
1928
|
-
if (!input) return fallback;
|
|
1929
|
-
const trimmed = input.trim().replace(/^#/, "").toLowerCase();
|
|
1930
|
-
const expanded = trimmed.length === 3 ? trimmed.split("").map((char) => char + char).join("") : trimmed;
|
|
1931
|
-
if (!/^[0-9a-f]{6}$/i.test(expanded)) return fallback;
|
|
1932
|
-
return `#${expanded}`;
|
|
1933
|
-
}
|
|
1934
|
-
function hexToRgb(hex) {
|
|
1935
|
-
const match = normalizeHex(hex).replace("#", "").match(/.{2}/g);
|
|
1936
|
-
if (!match || match.length < 3) return null;
|
|
1937
|
-
const [r, g, b] = match.map((value) => parseInt(value, 16));
|
|
1938
|
-
return [
|
|
1939
|
-
r,
|
|
1940
|
-
g,
|
|
1941
|
-
b
|
|
1942
|
-
];
|
|
1943
|
-
}
|
|
1944
|
-
function luminanceChannel(raw) {
|
|
1945
|
-
const channel = raw / 255;
|
|
1946
|
-
return channel <= .03928 ? channel / 12.92 : Math.pow((channel + .055) / 1.055, 2.4);
|
|
1947
|
-
}
|
|
1948
|
-
/**
|
|
1949
|
-
* WCAG relative luminance + contrast ratio. Rounded to 2 decimal places so
|
|
1950
|
-
* the result is stable for UI display.
|
|
1951
|
-
*/
|
|
1952
|
-
function contrastRatio(hexA, hexB) {
|
|
1953
|
-
const rgbA = hexToRgb(hexA);
|
|
1954
|
-
const rgbB = hexToRgb(hexB);
|
|
1955
|
-
if (!rgbA || !rgbB) return 1;
|
|
1956
|
-
const lumA = .2126 * luminanceChannel(rgbA[0]) + .7152 * luminanceChannel(rgbA[1]) + .0722 * luminanceChannel(rgbA[2]);
|
|
1957
|
-
const lumB = .2126 * luminanceChannel(rgbB[0]) + .7152 * luminanceChannel(rgbB[1]) + .0722 * luminanceChannel(rgbB[2]);
|
|
1958
|
-
const brighter = Math.max(lumA, lumB);
|
|
1959
|
-
const darker = Math.min(lumA, lumB);
|
|
1960
|
-
return Number(((brighter + .05) / (darker + .05)).toFixed(2));
|
|
1961
|
-
}
|
|
1962
|
-
//#endregion
|
|
1963
2029
|
//#region ../ui/src/palette/PaletteTokenEditor.tsx
|
|
1964
2030
|
const DEFAULT_BRAND_ROLES = [
|
|
1965
2031
|
{
|
|
@@ -2115,6 +2181,7 @@ function ColorRoleGroup({ title, roles, getColor, onChange, disabled }) {
|
|
|
2115
2181
|
function ColorRoleField({ role, value, onChange, disabled }) {
|
|
2116
2182
|
const inputId = useId();
|
|
2117
2183
|
const colorPickerLabel = `${role.label} colour picker`;
|
|
2184
|
+
const { draft, changeDraft, finishDraft, setDraft } = useHexDraft(value, (hex) => onChange(role.key, hex));
|
|
2118
2185
|
return /* @__PURE__ */ jsxs("div", {
|
|
2119
2186
|
className: "rounded-lg bg-muted p-3 space-y-2",
|
|
2120
2187
|
children: [
|
|
@@ -2126,7 +2193,10 @@ function ColorRoleField({ role, value, onChange, disabled }) {
|
|
|
2126
2193
|
/* @__PURE__ */ jsx(ColorPicker, {
|
|
2127
2194
|
value,
|
|
2128
2195
|
onChange: (next) => {
|
|
2129
|
-
if (typeof next === "string")
|
|
2196
|
+
if (typeof next === "string") {
|
|
2197
|
+
setDraft(next);
|
|
2198
|
+
onChange(role.key, next);
|
|
2199
|
+
}
|
|
2130
2200
|
},
|
|
2131
2201
|
className: "w-full",
|
|
2132
2202
|
"aria-label": colorPickerLabel,
|
|
@@ -2134,8 +2204,9 @@ function ColorRoleField({ role, value, onChange, disabled }) {
|
|
|
2134
2204
|
}),
|
|
2135
2205
|
/* @__PURE__ */ jsx(Input, {
|
|
2136
2206
|
id: inputId,
|
|
2137
|
-
value,
|
|
2138
|
-
onChange: (event) =>
|
|
2207
|
+
value: draft,
|
|
2208
|
+
onChange: (event) => changeDraft(event.target.value),
|
|
2209
|
+
onBlur: finishDraft,
|
|
2139
2210
|
className: "font-mono text-xs uppercase",
|
|
2140
2211
|
placeholder: "#000000",
|
|
2141
2212
|
disabled
|
|
@@ -4441,7 +4512,10 @@ function isRecord(value) {
|
|
|
4441
4512
|
}
|
|
4442
4513
|
//#endregion
|
|
4443
4514
|
//#region ../preview-next/src/client/preview/PreviewEditorSidebar.tsx
|
|
4444
|
-
function
|
|
4515
|
+
function assistantTabAvailable(input) {
|
|
4516
|
+
return input.enabled && Boolean(input.pageId && input.bearerToken && input.canEdit);
|
|
4517
|
+
}
|
|
4518
|
+
function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl = null, pageId, pageNodeType, entryData, contentTypeSchema, referenceContentTypeKeys = [], draftContent, currentTemplate, theme, themeId = null, themeSelectionId = null, themeSelectionVersion = null, themeSelectionUpdatedAt = null, themeSelectionButtonStyleSelection = null, themeSelectionButtonStyleRepairs, themeSelectionHeaderSelection = null, themeSelectionFooterLookId = null, themeSelectionHeaderLogo, apiClient, bearerToken, entrySubrouteContext, assistantPanel, sdkConfig, bookingOfferingPresets, siteStyleAccess = { kind: "hidden" }, activeTab, onTabChange, onClose, onFooterSaved, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange }) {
|
|
4445
4519
|
const controller = useEntryController();
|
|
4446
4520
|
const controllerBlocks = controller.blocks;
|
|
4447
4521
|
const uiStore = useEditorUiStoreInstance();
|
|
@@ -4467,28 +4541,16 @@ function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl = null, page
|
|
|
4467
4541
|
surfaceId
|
|
4468
4542
|
]);
|
|
4469
4543
|
const showAssistantTab = Boolean(assistantPanel);
|
|
4470
|
-
const assistantAvailable =
|
|
4544
|
+
const assistantAvailable = assistantTabAvailable({
|
|
4545
|
+
enabled: showAssistantTab,
|
|
4546
|
+
pageId,
|
|
4547
|
+
bearerToken,
|
|
4548
|
+
canEdit
|
|
4549
|
+
});
|
|
4471
4550
|
const effectiveActiveTab = showAssistantTab ? resolvePreviewSidebarTab(activeTab) : "editor";
|
|
4472
4551
|
const blockItems = useMemo(() => controllerBlocks.list, [controllerBlocks.list]);
|
|
4473
4552
|
const blockEditorRef = useRef(null);
|
|
4474
4553
|
const contentFormWidgets = useMemo(() => previewWidgetOverrides, []);
|
|
4475
|
-
const handleBlocksChange = useCallback((nextItems) => {
|
|
4476
|
-
controllerBlocks.actions.setList(nextItems);
|
|
4477
|
-
const drafts = uiStore.getState().drafts;
|
|
4478
|
-
const extractData = (content) => {
|
|
4479
|
-
if (!content || typeof content !== "object") return null;
|
|
4480
|
-
const obj = content;
|
|
4481
|
-
if ("data" in obj && obj.data && typeof obj.data === "object") return obj.data;
|
|
4482
|
-
return obj;
|
|
4483
|
-
};
|
|
4484
|
-
for (const block of nextItems) {
|
|
4485
|
-
if (!block.id) continue;
|
|
4486
|
-
const baseline = extractData(block.content ?? block.draftContent ?? block.publishedContent ?? null);
|
|
4487
|
-
const blockId = unsafeAsEditorBlockId(block.id);
|
|
4488
|
-
if (drafts.getBlockSnapshot(blockId)) drafts.updateBlockBaseline(blockId, baseline, { kind: block.kind });
|
|
4489
|
-
else drafts.initNewBlock(blockId, baseline, { kind: block.kind });
|
|
4490
|
-
}
|
|
4491
|
-
}, [controllerBlocks.actions, uiStore]);
|
|
4492
4554
|
useEffect(() => {
|
|
4493
4555
|
if (entryData) return;
|
|
4494
4556
|
const req = focusRequest;
|
|
@@ -4506,10 +4568,12 @@ function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl = null, page
|
|
|
4506
4568
|
return /* @__PURE__ */ jsx(PreviewMetadataPanel, {
|
|
4507
4569
|
ownerKind: entryData ? "content" : "page",
|
|
4508
4570
|
contentTypeKey: entryData?.type ?? null,
|
|
4509
|
-
entry: controller.entry
|
|
4571
|
+
entry: controller.entry,
|
|
4572
|
+
statusMessage: controller.toolbar.publishedMessage ?? null
|
|
4510
4573
|
});
|
|
4511
4574
|
}, [
|
|
4512
4575
|
controller.entry,
|
|
4576
|
+
controller.toolbar.publishedMessage,
|
|
4513
4577
|
entryData,
|
|
4514
4578
|
pageId
|
|
4515
4579
|
]);
|
|
@@ -4543,6 +4607,7 @@ function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl = null, page
|
|
|
4543
4607
|
siteId,
|
|
4544
4608
|
dashboardBaseUrl,
|
|
4545
4609
|
entryData,
|
|
4610
|
+
pageSurfaceId: pageNodeType === "page_surface" ? pageId : null,
|
|
4546
4611
|
contentTypeSchema,
|
|
4547
4612
|
referenceContentTypeKeys,
|
|
4548
4613
|
draftContent,
|
|
@@ -4569,7 +4634,7 @@ function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl = null, page
|
|
|
4569
4634
|
blockItems,
|
|
4570
4635
|
uiStoreForBlockEditor,
|
|
4571
4636
|
blockEditorRef,
|
|
4572
|
-
onBlocksChange:
|
|
4637
|
+
onBlocksChange: controllerBlocks.actions.setList,
|
|
4573
4638
|
metadataPanel: metadataSectionContent,
|
|
4574
4639
|
designTakeoverActive,
|
|
4575
4640
|
designPanel: canInspectSiteStyle(siteStyleAccess) ? /* @__PURE__ */ jsx(StyleConfigurator, {
|
|
@@ -4669,10 +4734,33 @@ function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl = null, page
|
|
|
4669
4734
|
})
|
|
4670
4735
|
});
|
|
4671
4736
|
}
|
|
4672
|
-
function PreviewMetadataPanel({ ownerKind, contentTypeKey, entry }) {
|
|
4673
|
-
const
|
|
4737
|
+
function PreviewMetadataPanel({ ownerKind, contentTypeKey, entry, statusMessage }) {
|
|
4738
|
+
const metadataPresentation = usePreviewMetadataPresentation(ownerKind, contentTypeKey, entry);
|
|
4739
|
+
const manifest = metadataPresentation.manifest;
|
|
4740
|
+
const backend = usePreviewMetadataBackend(manifest, routeLifecycleContext(entry)?.draftStatus ?? "draft");
|
|
4741
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
4742
|
+
className: "space-y-4",
|
|
4743
|
+
children: [
|
|
4744
|
+
metadataPresentation.kind === "page-homepage" ? /* @__PURE__ */ jsx("div", {
|
|
4745
|
+
className: "inline-flex rounded-md bg-muted px-2 py-1 text-xs font-medium text-muted-foreground",
|
|
4746
|
+
children: "Homepage"
|
|
4747
|
+
}) : null,
|
|
4748
|
+
statusMessage ? /* @__PURE__ */ jsx("p", {
|
|
4749
|
+
className: "text-xs text-muted-foreground",
|
|
4750
|
+
"data-testid": "preview-metadata-status",
|
|
4751
|
+
children: statusMessage
|
|
4752
|
+
}) : null,
|
|
4753
|
+
/* @__PURE__ */ jsx(ManifestForm, {
|
|
4754
|
+
manifest,
|
|
4755
|
+
backend,
|
|
4756
|
+
className: "space-y-4"
|
|
4757
|
+
})
|
|
4758
|
+
]
|
|
4759
|
+
});
|
|
4760
|
+
}
|
|
4761
|
+
function usePreviewMetadataPresentation(ownerKind, contentTypeKey, entry) {
|
|
4674
4762
|
const currentSlug = useEditorUiStore((state) => state.metadata.getAtPath("draftSlug")) ?? void 0;
|
|
4675
|
-
|
|
4763
|
+
return useMemo(() => {
|
|
4676
4764
|
if (ownerKind === "content") return deriveRouteMetadataPresentation({
|
|
4677
4765
|
kind: "content",
|
|
4678
4766
|
typeKey: contentTypeKey
|
|
@@ -4689,33 +4777,89 @@ function PreviewMetadataPanel({ ownerKind, contentTypeKey, entry }) {
|
|
|
4689
4777
|
entry,
|
|
4690
4778
|
ownerKind
|
|
4691
4779
|
]);
|
|
4692
|
-
|
|
4693
|
-
|
|
4780
|
+
}
|
|
4781
|
+
/** The metadata form's backend; slug auto-generation reads the snapshot's status from its read-only context (row SL1). */
|
|
4782
|
+
function usePreviewMetadataBackend(manifest, draftStatus) {
|
|
4783
|
+
const uiStore = useEditorUiStoreInstance();
|
|
4694
4784
|
const validation = useMemo(() => createManifestValidation(manifest), [manifest]);
|
|
4695
|
-
|
|
4785
|
+
return useMemo(() => createStoreBackend({
|
|
4696
4786
|
scope: "metadata",
|
|
4697
4787
|
store: uiStore,
|
|
4788
|
+
context: { draftStatus },
|
|
4698
4789
|
validateFn: (values) => {
|
|
4699
4790
|
const result = validation.schema.safeParse(values);
|
|
4700
|
-
|
|
4701
|
-
return [];
|
|
4791
|
+
return result.success ? [] : result.error.issues;
|
|
4702
4792
|
}
|
|
4703
|
-
}), [
|
|
4793
|
+
}), [
|
|
4794
|
+
draftStatus,
|
|
4795
|
+
uiStore,
|
|
4796
|
+
validation
|
|
4797
|
+
]);
|
|
4798
|
+
}
|
|
4799
|
+
function LinkedEntryEditorPanel({ siteId, apiClient, theme, widgets, entry, fields }) {
|
|
4800
|
+
const uiStore = useEditorUiStoreInstance();
|
|
4801
|
+
const canWrite = useUISelector(uiStore, (state) => canWriteLinkedEntry(state, entry.meta.entryId));
|
|
4802
|
+
const { manifest, backend } = useLinkedEntryForm(entry, fields, widgets);
|
|
4803
|
+
const syncState = syncStateOf(entry.sync);
|
|
4804
|
+
const errorMessage = syncState.kind === "failed" ? syncState.error : null;
|
|
4805
|
+
const dirty = isEdited(entry.sync);
|
|
4806
|
+
const isSaving = valueStatus(entry.sync) === "saving";
|
|
4807
|
+
const displayTitle = resolveContentTitle(displayedValues(entry.sync), entry.meta.titleField, entry.meta.title);
|
|
4704
4808
|
return /* @__PURE__ */ jsxs("div", {
|
|
4705
|
-
className: "
|
|
4706
|
-
children: [
|
|
4707
|
-
|
|
4708
|
-
|
|
4709
|
-
|
|
4710
|
-
|
|
4711
|
-
|
|
4712
|
-
|
|
4713
|
-
|
|
4809
|
+
className: "bg-muted/20",
|
|
4810
|
+
children: [
|
|
4811
|
+
/* @__PURE__ */ jsx(LinkedEntryLeaseBanner, { entryId: entry.meta.entryId }),
|
|
4812
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4813
|
+
className: "flex items-start justify-between gap-3 px-4 py-3",
|
|
4814
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
4815
|
+
className: "min-w-0",
|
|
4816
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
4817
|
+
className: "truncate text-sm font-medium",
|
|
4818
|
+
children: displayTitle
|
|
4819
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
4820
|
+
className: "mt-1 text-xs leading-5 text-muted-foreground",
|
|
4821
|
+
children: "Changes update this linked entry wherever it appears."
|
|
4822
|
+
})]
|
|
4823
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
4824
|
+
className: "flex shrink-0 items-center gap-2",
|
|
4825
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
4826
|
+
type: "button",
|
|
4827
|
+
variant: "outline",
|
|
4828
|
+
size: "sm",
|
|
4829
|
+
onClick: () => {
|
|
4830
|
+
if (dirty) uiStore.getState().linkedEntries.discard(entry.meta.entryId);
|
|
4831
|
+
else uiStore.getState().linkedEntries.close();
|
|
4832
|
+
},
|
|
4833
|
+
children: dirty ? "Discard" : "Close"
|
|
4834
|
+
})
|
|
4835
|
+
})]
|
|
4836
|
+
}),
|
|
4837
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4838
|
+
className: "px-4 pb-4",
|
|
4839
|
+
inert: !canWrite,
|
|
4840
|
+
children: [errorMessage ? /* @__PURE__ */ jsx("div", {
|
|
4841
|
+
className: "mb-3 rounded-md border border-red-500 bg-red-50 px-3 py-2 text-sm text-red-700",
|
|
4842
|
+
children: errorMessage
|
|
4843
|
+
}) : isSaving ? /* @__PURE__ */ jsx("div", {
|
|
4844
|
+
className: "mb-3 rounded-md border border-sky-500 bg-sky-50 px-3 py-2 text-sm text-sky-700",
|
|
4845
|
+
children: "Saving changes"
|
|
4846
|
+
}) : null, /* @__PURE__ */ jsx(PreviewFormProvider, {
|
|
4847
|
+
siteId,
|
|
4848
|
+
theme: theme ?? null,
|
|
4849
|
+
previewClient: apiClient,
|
|
4850
|
+
children: /* @__PURE__ */ jsx(ManifestForm, {
|
|
4851
|
+
manifest,
|
|
4852
|
+
backend,
|
|
4853
|
+
widgetOverrides: widgets,
|
|
4854
|
+
className: "space-y-4"
|
|
4855
|
+
})
|
|
4856
|
+
})]
|
|
4857
|
+
})
|
|
4858
|
+
]
|
|
4714
4859
|
});
|
|
4715
4860
|
}
|
|
4716
|
-
function
|
|
4861
|
+
function useLinkedEntryForm(entry, fields, widgets) {
|
|
4717
4862
|
const uiStore = useEditorUiStoreInstance();
|
|
4718
|
-
const linkedEntriesAutosave = useUISelector(uiStore, (state) => state.autosave.linkedEntries);
|
|
4719
4863
|
const manifest = useMemo(() => ({
|
|
4720
4864
|
name: `linked-content-${entry.meta.contentTypeKey}`,
|
|
4721
4865
|
version: "1.0",
|
|
@@ -4730,65 +4874,17 @@ function LinkedEntryEditorPanel({ siteId, apiClient, theme, widgets, entry, fiel
|
|
|
4730
4874
|
fields
|
|
4731
4875
|
]);
|
|
4732
4876
|
const validation = useMemo(() => createManifestValidation(manifest, { widgets }), [manifest, widgets]);
|
|
4733
|
-
|
|
4734
|
-
|
|
4735
|
-
|
|
4736
|
-
|
|
4737
|
-
|
|
4738
|
-
|
|
4739
|
-
|
|
4740
|
-
|
|
4741
|
-
|
|
4742
|
-
|
|
4743
|
-
|
|
4744
|
-
const isSaving = linkedEntriesAutosave.status === "saving" && dirty;
|
|
4745
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
4746
|
-
className: "bg-muted/20",
|
|
4747
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
4748
|
-
className: "flex items-start justify-between gap-3 px-4 py-3",
|
|
4749
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
4750
|
-
className: "min-w-0",
|
|
4751
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
4752
|
-
className: "truncate text-sm font-medium",
|
|
4753
|
-
children: resolveContentTitle(entry.current ?? entry.baseline ?? null, entry.meta.titleField, entry.meta.title)
|
|
4754
|
-
}), /* @__PURE__ */ jsx("p", {
|
|
4755
|
-
className: "mt-1 text-xs leading-5 text-muted-foreground",
|
|
4756
|
-
children: "Changes update this linked entry wherever it appears."
|
|
4757
|
-
})]
|
|
4758
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
4759
|
-
className: "flex shrink-0 items-center gap-2",
|
|
4760
|
-
children: /* @__PURE__ */ jsx(Button, {
|
|
4761
|
-
type: "button",
|
|
4762
|
-
variant: "outline",
|
|
4763
|
-
size: "sm",
|
|
4764
|
-
onClick: () => {
|
|
4765
|
-
if (dirty) uiStore.getState().linkedEntries.discard(entry.meta.entryId);
|
|
4766
|
-
else uiStore.getState().linkedEntries.close();
|
|
4767
|
-
},
|
|
4768
|
-
children: dirty ? "Discard" : "Close"
|
|
4769
|
-
})
|
|
4770
|
-
})]
|
|
4771
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
4772
|
-
className: "px-4 pb-4",
|
|
4773
|
-
children: [errorMessage ? /* @__PURE__ */ jsx("div", {
|
|
4774
|
-
className: "mb-3 rounded-md border border-red-500 bg-red-50 px-3 py-2 text-sm text-red-700",
|
|
4775
|
-
children: errorMessage
|
|
4776
|
-
}) : isSaving ? /* @__PURE__ */ jsx("div", {
|
|
4777
|
-
className: "mb-3 rounded-md border border-sky-500 bg-sky-50 px-3 py-2 text-sm text-sky-700",
|
|
4778
|
-
children: "Saving changes"
|
|
4779
|
-
}) : null, /* @__PURE__ */ jsx(PreviewFormProvider, {
|
|
4780
|
-
siteId,
|
|
4781
|
-
theme: theme ?? null,
|
|
4782
|
-
previewClient: apiClient,
|
|
4783
|
-
children: /* @__PURE__ */ jsx(ManifestForm, {
|
|
4784
|
-
manifest,
|
|
4785
|
-
backend,
|
|
4786
|
-
widgetOverrides: widgets,
|
|
4787
|
-
className: "space-y-4"
|
|
4788
|
-
})
|
|
4789
|
-
})]
|
|
4790
|
-
})]
|
|
4791
|
-
});
|
|
4877
|
+
return {
|
|
4878
|
+
manifest,
|
|
4879
|
+
backend: useMemo(() => createStoreBackend({
|
|
4880
|
+
scope: "linkedContent",
|
|
4881
|
+
store: uiStore,
|
|
4882
|
+
validateFn: (values) => {
|
|
4883
|
+
const result = validation.schema.safeParse(values);
|
|
4884
|
+
return result.success ? [] : result.error.issues;
|
|
4885
|
+
}
|
|
4886
|
+
}), [uiStore, validation])
|
|
4887
|
+
};
|
|
4792
4888
|
}
|
|
4793
4889
|
function buildLinkedEntrySidebarSection(input) {
|
|
4794
4890
|
const { snapshot, inspection, renderContent } = input;
|