@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.
Files changed (442) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -1
  3. package/dist/{PreviewEditorSidebar-DtpB3_sS.mjs → PreviewEditorSidebar-DBKln68M.mjs} +301 -205
  4. package/dist/{PreviewEditorUI-DxTLgaHo.mjs → PreviewEditorUI-DpRX4Mum.mjs} +68 -63
  5. package/dist/{PreviewQueryProvider-Dd4dxOiU.mjs → PreviewQueryProvider-C0mndwHB.mjs} +3 -3
  6. package/dist/{SdkPreviewModeRuntime-DMMNCngt.mjs → SdkPreviewModeRuntime-DJPmPY-r.mjs} +1247 -541
  7. package/dist/{SiteChromeCustomizeContext-DQXZXiqS.mjs → SiteChromeCustomizeContext-JYA0cJ_Z.mjs} +209720 -204978
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +0 -33
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +0 -3
  10. package/dist/_dts/api/src/accessAdmin.d.ts +0 -4
  11. package/dist/_dts/api/src/accountApi.d.ts +1 -1
  12. package/dist/_dts/api/src/admin.d.ts +22 -22
  13. package/dist/_dts/api/src/aiPatch.d.ts +2 -2
  14. package/dist/_dts/api/src/aiPlayground.d.ts +1 -0
  15. package/dist/_dts/api/src/analytics.d.ts +2 -2
  16. package/dist/_dts/api/src/apiEndpointTypes.d.ts +2 -0
  17. package/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
  18. package/dist/_dts/api/src/auth.d.ts +10 -10
  19. package/dist/_dts/api/src/availability.d.ts +6 -6
  20. package/dist/_dts/api/src/billing.d.ts +42 -15
  21. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +8 -0
  22. package/dist/_dts/api/src/billingEndpointTypes.d.ts +15 -6
  23. package/dist/_dts/api/src/blocks.d.ts +15 -14
  24. package/dist/_dts/api/src/blocksKeys.d.ts +2 -0
  25. package/dist/_dts/api/src/bookingConfig.d.ts +33 -50
  26. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +2 -6
  27. package/dist/_dts/api/src/bookingOperations.d.ts +9 -11
  28. package/dist/_dts/api/src/bookingRecords.d.ts +16 -11
  29. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +5 -5
  30. package/dist/_dts/api/src/bookings.d.ts +7 -7
  31. package/dist/_dts/api/src/calendar.d.ts +9 -9
  32. package/dist/_dts/api/src/clientErrorReporting.d.ts +11 -0
  33. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +7 -8
  34. package/dist/_dts/api/src/common/cancellation.d.ts +23 -0
  35. package/dist/_dts/api/src/common/envelope.d.ts +2 -2
  36. package/dist/_dts/api/src/content-editor.d.ts +2 -2
  37. package/dist/_dts/api/src/contentEntries.d.ts +17 -48
  38. package/dist/_dts/api/src/contentRuntime.d.ts +51 -37
  39. package/dist/_dts/api/src/contentTypes.d.ts +11 -11
  40. package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +6 -6
  41. package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +1 -1
  42. package/dist/_dts/api/src/documentLifecycle.d.ts +67 -0
  43. package/dist/_dts/api/src/domains.d.ts +16 -16
  44. package/dist/_dts/api/src/editLeaseEndpoints.d.ts +72 -0
  45. package/dist/_dts/api/src/emailSettings.d.ts +4 -4
  46. package/dist/_dts/api/src/endpoints.d.ts +135 -51
  47. package/dist/_dts/api/src/eventEmailTemplates.d.ts +2 -2
  48. package/dist/_dts/api/src/eventManagementContracts.d.ts +29 -7
  49. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +0 -8
  50. package/dist/_dts/api/src/eventPageWords.d.ts +7 -12
  51. package/dist/_dts/api/src/footerSettings.d.ts +6 -6
  52. package/dist/_dts/api/src/index.d.ts +8 -7
  53. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -0
  54. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  55. package/dist/_dts/api/src/navigation.d.ts +5 -5
  56. package/dist/_dts/api/src/pageSurfaceEditorEndpoints.d.ts +55 -0
  57. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +28 -7
  58. package/dist/_dts/api/src/pages.d.ts +7 -7
  59. package/dist/_dts/api/src/performance.d.ts +1 -1
  60. package/dist/_dts/api/src/public/index.d.ts +1 -1
  61. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +4 -2
  62. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +6 -29
  63. package/dist/_dts/api/src/redirects.d.ts +3 -3
  64. package/dist/_dts/api/src/request.d.ts +11 -2
  65. package/dist/_dts/api/src/resources.d.ts +4 -4
  66. package/dist/_dts/api/src/routes.d.ts +8 -3
  67. package/dist/_dts/api/src/sdk-event-upsert.d.ts +1 -2
  68. package/dist/_dts/api/src/sdkBlockUpsertContracts.d.ts +21 -0
  69. package/dist/_dts/api/src/sdkContracts.d.ts +5 -28
  70. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +1 -1
  71. package/dist/_dts/api/src/sdkEventOccurrenceRequestContracts.d.ts +43 -0
  72. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +4 -2
  73. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +9 -2
  74. package/dist/_dts/api/src/seo.d.ts +4 -4
  75. package/dist/_dts/api/src/services.d.ts +4 -4
  76. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +15 -8
  77. package/dist/_dts/api/src/siteMembers.d.ts +10 -10
  78. package/dist/_dts/api/src/siteOnboarding.d.ts +14 -0
  79. package/dist/_dts/api/src/siteOperations.d.ts +6 -2
  80. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -3
  81. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +5 -12
  82. package/dist/_dts/api/src/siteRuntimeEntry.d.ts +31 -0
  83. package/dist/_dts/billing/src/checkout/platform.d.ts +77 -0
  84. package/dist/_dts/billing/src/components/index.d.ts +25 -40
  85. package/dist/_dts/billing/src/membership/index.d.ts +1 -3
  86. package/dist/_dts/billing/src/plans/entitlements.d.ts +80 -0
  87. package/dist/_dts/billing/src/plans/registry.d.ts +16 -16
  88. package/dist/_dts/billing/src/plans/standing.d.ts +9 -2
  89. package/dist/_dts/billing/src/plans/types.d.ts +5 -15
  90. package/dist/_dts/billing/src/site-arrangements.d.ts +2 -2
  91. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +2 -4
  92. package/dist/_dts/billing/src/subscriptions/store.d.ts +17 -11
  93. package/dist/_dts/block-form/src/backend/store-backend.d.ts +6 -7
  94. package/dist/_dts/block-form/src/backend/types.d.ts +7 -0
  95. package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +3 -1
  96. package/dist/_dts/blocks/src/client/events.d.ts +3 -0
  97. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -1
  98. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +2 -2
  99. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +54 -14
  100. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +4 -13
  101. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  102. package/dist/_dts/blocks/src/portal/types.d.ts +9 -8
  103. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +2 -1
  104. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +3 -1
  105. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +28 -28
  106. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +7 -2
  107. package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +84 -160
  108. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -2
  109. package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +31 -4
  110. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -2
  111. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  112. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -2
  113. package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +3 -1
  114. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +6 -0
  115. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +6 -0
  116. package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +4 -0
  117. package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +4 -1
  118. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +72 -12
  119. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +36 -6
  120. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingNowIso.d.ts +8 -0
  121. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +3 -0
  122. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +2 -1
  123. package/dist/_dts/blocks/src/system/runtime/hooks/usePolling.d.ts +7 -48
  124. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.checkout-return-context.d.ts +7 -0
  125. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +3 -1
  126. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +4 -0
  127. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +9 -0
  128. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.payment-confirmation.d.ts +13 -0
  129. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +17 -2
  130. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-actions.d.ts +8 -0
  131. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +1 -0
  132. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +1 -0
  133. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +2 -1
  134. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +9 -2
  135. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +14 -2
  136. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
  137. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +5 -0
  138. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +2 -0
  139. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +4 -1
  140. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +3 -3
  141. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +2 -0
  142. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -5
  143. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -0
  144. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -5
  145. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +6 -0
  146. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +37 -3
  147. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.client.d.ts +1 -1
  148. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +16 -1
  149. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCardPresentations.d.ts +13 -0
  150. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +29 -29
  151. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -14
  152. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +12 -0
  153. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +54 -6
  154. package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptions.d.ts +7 -2
  155. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoBookingPortalAccess.d.ts +22 -0
  156. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoPortalSignInLink.d.ts +4 -0
  157. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  158. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoBookingPassStorage.d.ts +10 -0
  159. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoPortalMagicLink.d.ts +29 -0
  160. package/dist/_dts/commerce/src/purchase/bookingPaymentSelection.d.ts +54 -0
  161. package/dist/_dts/commerce/src/purchase/checkoutCommitPlan.d.ts +58 -13
  162. package/dist/_dts/commerce/src/purchase/checkoutErrorCodes.d.ts +1 -1
  163. package/dist/_dts/commerce/src/purchase/checkoutPaymentPlanPlanning.d.ts +16 -21
  164. package/dist/_dts/commerce/src/purchase/checkoutPaymentTerms.d.ts +23 -40
  165. package/dist/_dts/commerce/src/purchase/checkoutSessionMetadata.d.ts +2 -2
  166. package/dist/_dts/commerce/src/purchase/checkoutStripeSessionPlanning.d.ts +5 -4
  167. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  168. package/dist/_dts/commerce/src/purchase/index.d.ts +1 -3
  169. package/dist/_dts/commerce/src/purchase/membershipOrderItemMetadata.d.ts +4 -0
  170. package/dist/_dts/commerce/src/purchase/oneTimeCheckoutPlanning.d.ts +9 -4
  171. package/dist/_dts/commerce/src/purchase/orderInstalmentClosure.d.ts +13 -1
  172. package/dist/_dts/commerce/src/purchase/orderInstalmentLifecycle.d.ts +5 -0
  173. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +3 -1
  174. package/dist/_dts/commerce/src/purchase/orderTypes.d.ts +7 -1
  175. package/dist/_dts/commerce/src/purchase/refundRailSplit.d.ts +1 -1
  176. package/dist/_dts/commerce/src/purchase/stateTransitions.d.ts +2 -2
  177. package/dist/_dts/commerce/src/purchase/stripeMinimumCharge.d.ts +6 -0
  178. package/dist/_dts/commerce/src/purchase/types.d.ts +2 -1
  179. package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +2 -7
  180. package/dist/_dts/content-editor/src/controller/EditLeaseController.d.ts +39 -0
  181. package/dist/_dts/content-editor/src/controller/EditorWriteGate.d.ts +38 -0
  182. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +25 -61
  183. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseBanner.d.ts +7 -0
  184. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseControllers.d.ts +14 -0
  185. package/dist/_dts/content-editor/src/controller/deriveEditorUnpublishedState.d.ts +6 -0
  186. package/dist/_dts/content-editor/src/controller/documentValueBaseline.d.ts +25 -0
  187. package/dist/_dts/content-editor/src/controller/editLeaseHandover.d.ts +30 -0
  188. package/dist/_dts/content-editor/src/controller/editLeaseLossSignal.d.ts +6 -0
  189. package/dist/_dts/content-editor/src/controller/editLeaseNotice.d.ts +28 -0
  190. package/dist/_dts/content-editor/src/controller/editorClientId.d.ts +2 -0
  191. package/dist/_dts/content-editor/src/controller/editorEditability.d.ts +38 -0
  192. package/dist/_dts/content-editor/src/controller/editorLeaseParticipation.d.ts +34 -0
  193. package/dist/_dts/content-editor/src/controller/normalizedMetadataBaseline.d.ts +29 -0
  194. package/dist/_dts/content-editor/src/controller/pageSurfaceDocumentBaselines.d.ts +14 -0
  195. package/dist/_dts/content-editor/src/controller/pageSurfaceLifecycle.d.ts +11 -0
  196. package/dist/_dts/content-editor/src/controller/planDocumentBaselineRefresh.d.ts +19 -0
  197. package/dist/_dts/content-editor/src/controller/readDocumentLeaseBaselines.d.ts +19 -0
  198. package/dist/_dts/content-editor/src/controller/refreshDocumentLeaseBaseline.d.ts +12 -0
  199. package/dist/_dts/content-editor/src/controller/refreshLinkedEntry.d.ts +17 -0
  200. package/dist/_dts/content-editor/src/controller/replayRestoredEditorEffects.d.ts +2 -3
  201. package/dist/_dts/content-editor/src/controller/routeWrites.d.ts +26 -0
  202. package/dist/_dts/content-editor/src/controller/useAutosaveTriggers.d.ts +16 -17
  203. package/dist/_dts/content-editor/src/controller/useBlockedPublishPlan.d.ts +6 -2
  204. package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +3 -3
  205. package/dist/_dts/content-editor/src/controller/useEntryValueAutosaves.d.ts +21 -0
  206. package/dist/_dts/content-editor/src/controller/useInitialEditorUiStore.d.ts +24 -0
  207. package/dist/_dts/content-editor/src/controller/useServerBaselineReconciliation.d.ts +17 -0
  208. package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +1 -1
  209. package/dist/_dts/content-editor/src/hooks/applyBlockedPublishPlan.d.ts +5 -1
  210. package/dist/_dts/content-editor/src/hooks/blockDraftLifecycle.d.ts +8 -47
  211. package/dist/_dts/content-editor/src/hooks/editLeaseMachine.d.ts +120 -0
  212. package/dist/_dts/content-editor/src/hooks/publishability.d.ts +6 -10
  213. package/dist/_dts/content-editor/src/hooks/useAutosaveStatus.d.ts +3 -0
  214. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +5 -15
  215. package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +7 -5
  216. package/dist/_dts/content-editor/src/hooks/useEditLease.d.ts +28 -0
  217. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +25 -39
  218. package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +17 -19
  219. package/dist/_dts/content-editor/src/hooks/useLinkedEntryAutosave.d.ts +5 -8
  220. package/dist/_dts/content-editor/src/hooks/useValueAutosave.d.ts +64 -0
  221. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +0 -7
  222. package/dist/_dts/content-editor/src/index.d.ts +26 -7
  223. package/dist/_dts/content-editor/src/lib/browserStorage.d.ts +5 -0
  224. package/dist/_dts/content-editor/src/linkedEntries/domain.d.ts +12 -0
  225. package/dist/_dts/content-editor/src/linkedEntries/owner.d.ts +9 -0
  226. package/dist/_dts/content-editor/src/liveDrafts/draftProjection.d.ts +66 -0
  227. package/dist/_dts/content-editor/src/liveDrafts/linkedSaveHandovers.d.ts +37 -0
  228. package/dist/_dts/content-editor/src/liveDrafts/remoteDraftOverlay.d.ts +113 -0
  229. package/dist/_dts/content-editor/src/liveDrafts/useLiveDrafts.d.ts +32 -0
  230. package/dist/_dts/content-editor/src/liveDrafts/useRetentionTicks.d.ts +7 -0
  231. package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +6 -0
  232. package/dist/_dts/content-editor/src/primitives/shared/storeBinding.d.ts +1 -0
  233. package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +96 -19
  234. package/dist/_dts/content-editor/src/services/editorApiClient.d.ts +13 -0
  235. package/dist/_dts/content-editor/src/services/index.d.ts +2 -0
  236. package/dist/_dts/content-editor/src/services/pageSurfaceEditorServices.d.ts +23 -0
  237. package/dist/_dts/content-editor/src/sync/flushValues.d.ts +13 -0
  238. package/dist/_dts/content-editor/src/sync/lifecycleFailure.d.ts +51 -0
  239. package/dist/_dts/content-editor/src/sync/runLifecycle.d.ts +64 -0
  240. package/dist/_dts/content-editor/src/sync/schedulerValues.d.ts +27 -0
  241. package/dist/_dts/content-editor/src/sync/sendPlanning.d.ts +104 -0
  242. package/dist/_dts/content-editor/src/sync/valueSync.d.ts +114 -0
  243. package/dist/_dts/content-editor/src/ui/blockCollection.d.ts +8 -0
  244. package/dist/_dts/content-editor/src/ui/documentLifecycle.d.ts +18 -0
  245. package/dist/_dts/content-editor/src/ui/editorLeaseUiState.d.ts +7 -0
  246. package/dist/_dts/content-editor/src/ui/editorRefresh.d.ts +82 -0
  247. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +102 -127
  248. package/dist/_dts/content-editor/src/ui/editorTransactionState.d.ts +1 -1
  249. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +126 -72
  250. package/dist/_dts/content-editor/src/ui/editorValueSnapshot.d.ts +18 -0
  251. package/dist/_dts/content-editor/src/ui/serverBlockAdmission.d.ts +26 -0
  252. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +16 -27
  253. package/dist/_dts/content-editor/src/ui/stores/blockVersionsStore.d.ts +24 -0
  254. package/dist/_dts/content-editor/src/ui/stores/linkedEntryLeaseStore.d.ts +54 -0
  255. package/dist/_dts/content-editor/src/ui/stores/linkedSaveHandoversStore.d.ts +11 -0
  256. package/dist/_dts/content-editor/src/ui/stores/remoteDraftsStore.d.ts +10 -0
  257. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +63 -3
  258. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +2 -2
  259. package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +1 -1
  260. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +4 -4
  261. package/dist/_dts/content-model/src/content-types/builtins.d.ts +4 -4
  262. package/dist/_dts/content-model/src/definitions/shared.d.ts +11 -2
  263. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  264. package/dist/_dts/content-model/src/entry-slots/serializeAllowedBlocks.d.ts +2 -0
  265. package/dist/_dts/content-model/src/metadataConfig.d.ts +10 -38
  266. package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -1
  267. package/dist/_dts/content-model/src/types.d.ts +0 -1
  268. package/dist/_dts/core/src/block-content-identity.d.ts +49 -1
  269. package/dist/_dts/core/src/booking-flexible-balance.d.ts +2 -2
  270. package/dist/_dts/core/src/booking-instalment-deposit.d.ts +20 -0
  271. package/dist/_dts/core/src/booking-live-payment-terms.d.ts +72 -0
  272. package/dist/_dts/core/src/booking-payment-options.d.ts +24 -0
  273. package/dist/_dts/core/src/booking-payment-schemas.d.ts +522 -0
  274. package/dist/_dts/core/src/branded.d.ts +15 -0
  275. package/dist/_dts/core/src/currency-format.d.ts +8 -2
  276. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +2 -2
  277. package/dist/_dts/core/src/demo-warm-pool-target.d.ts +8 -0
  278. package/dist/_dts/core/src/edit-lease.d.ts +60 -0
  279. package/dist/_dts/core/src/editor-state.d.ts +38 -13
  280. package/dist/_dts/core/src/editor-value-sync.d.ts +79 -0
  281. package/dist/_dts/core/src/html-entities.d.ts +6 -0
  282. package/dist/_dts/core/src/index.d.ts +7 -0
  283. package/dist/_dts/core/src/uuid.d.ts +7 -5
  284. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +456 -189
  285. package/dist/_dts/editor/src/EditorProvider.d.ts +5 -0
  286. package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +14 -0
  287. package/dist/_dts/editor/src/chrome/EditorStatusBar.d.ts +1 -0
  288. package/dist/_dts/editor/src/chrome/statusBarPresentation.d.ts +0 -1
  289. package/dist/_dts/editor/src/index.d.ts +1 -1
  290. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +10 -9
  291. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +1 -1
  292. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
  293. package/dist/_dts/editor-blocks/src/block-editor/BlockCardFrame.d.ts +1 -1
  294. package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +1 -1
  295. package/dist/_dts/editor-blocks/src/block-editor/applyExtendedFieldDefaults.d.ts +3 -4
  296. package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +4 -8
  297. package/dist/_dts/editor-blocks/src/block-editor/editorBlockItem.d.ts +23 -0
  298. package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +2 -7
  299. package/dist/_dts/editor-blocks/src/block-editor/hooks/applyBlockStructureChange.d.ts +4 -0
  300. package/dist/_dts/editor-blocks/src/block-editor/hooks/buildInsertBlockHistoryCommand.d.ts +14 -5
  301. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +21 -19
  302. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -10
  303. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +8 -16
  304. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +6 -16
  305. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +37 -9
  306. package/dist/_dts/editor-blocks/src/index.d.ts +2 -1
  307. package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +1 -1
  308. package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +1 -1
  309. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +1 -1
  310. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +1 -1
  311. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +3 -2
  312. package/dist/_dts/media-core/src/fileStorage.d.ts +4 -0
  313. package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +3 -1
  314. package/dist/_dts/media-editor/src/MediaPickerMiniDialog.d.ts +10 -0
  315. package/dist/_dts/media-editor/src/context.d.ts +1 -1
  316. package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -2
  317. package/dist/_dts/media-editor/src/index.d.ts +2 -0
  318. package/dist/_dts/media-editor/src/provider.d.ts +3 -2
  319. package/dist/_dts/media-react/src/hooks/internal/classification.d.ts +1 -1
  320. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +3 -1
  321. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +8 -3
  322. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +6 -3
  323. package/dist/_dts/preview-next/src/client/blocks/linkedEntryRenderOverlay.d.ts +22 -2
  324. package/dist/_dts/preview-next/src/client/blocks/previewProjection/entryFieldRebinding.d.ts +13 -0
  325. package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +2 -1
  326. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +11 -1
  327. package/dist/_dts/preview-next/src/client/blocks/renderPrecedence.d.ts +17 -0
  328. package/dist/_dts/preview-next/src/client/blocks/useLinkedSaveHandoverRetention.d.ts +20 -0
  329. package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
  330. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
  331. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
  332. package/dist/_dts/preview-next/src/client/preview/PreviewAccessBanners.d.ts +7 -0
  333. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
  334. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +23 -14
  335. package/dist/_dts/preview-next/src/client/preview/PreviewLeaseEditingMode.d.ts +2 -0
  336. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -2
  337. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
  338. package/dist/_dts/preview-next/src/client/preview/previewCustomizeAutosave.d.ts +5 -0
  339. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +3 -4
  340. package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +1 -0
  341. package/dist/_dts/preview-next/src/client/preview/usePreviewCustomizeWorkflowState.d.ts +4 -0
  342. package/dist/_dts/preview-next/src/client/previewAuthStore.d.ts +7 -0
  343. package/dist/_dts/preview-next/src/constants.d.ts +4 -0
  344. package/dist/_dts/preview-next/src/keepAlive.d.ts +1 -0
  345. package/dist/_dts/realtime/src/client.d.ts +3 -0
  346. package/dist/_dts/realtime/src/draftChannel.d.ts +91 -0
  347. package/dist/_dts/realtime/src/drafts.d.ts +210 -0
  348. package/dist/_dts/realtime/src/index.d.ts +3 -0
  349. package/dist/_dts/realtime/src/leaseChangeSubscriptions.d.ts +8 -0
  350. package/dist/_dts/realtime/src/types.d.ts +113 -0
  351. package/dist/_dts/realtime/src/useDraftChannel.d.ts +34 -0
  352. package/dist/_dts/realtime/src/useSiteRealtimeReload.d.ts +27 -0
  353. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -55
  354. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
  355. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +1 -0
  356. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +2 -0
  357. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -12
  358. package/dist/_dts/sdk/src/version.d.ts +1 -1
  359. package/dist/_dts/surfaces/src/index.d.ts +1 -0
  360. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  361. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +0 -5
  362. package/dist/_dts/ui/src/color-picker.d.ts +1 -1
  363. package/dist/_dts/ui/src/palette/useHexDraft.d.ts +7 -0
  364. package/dist/client/{BookingMailingListNote-1n4Ch_u_.mjs → BookingMailingListNote-Cr3EeTP5.mjs} +504 -163
  365. package/dist/client/DemoBookingPortalAccess-BFGB1Fay.mjs +344 -0
  366. package/dist/client/{EventCombined.client-C0pgma9y.mjs → EventCombined.client-DKYV0_ft.mjs} +6 -6
  367. package/dist/client/{EventListing.client-4fhLOvHP.mjs → EventListing.client-B9UIcEYc.mjs} +2 -2
  368. package/dist/client/{LeafletStaticMap-DScC4F3w.mjs → LeafletStaticMap-CFLPkP0K.mjs} +1 -1
  369. package/dist/client/{TerminalPanel-B5ZUsYhe.mjs → TerminalPanel-JjmgxEsR.mjs} +1 -1
  370. package/dist/client/{ThemedButton-DoVIV1Ao.mjs → ThemedButton-CKV1Jh2m.mjs} +1 -1
  371. package/dist/client/{accordion-CoT5g7zo.mjs → accordion-DXWIfT3T.mjs} +1 -1
  372. package/dist/client/{bookingForm-BWxB46xD.mjs → bookingForm-CjZgHNvv.mjs} +216 -63
  373. package/dist/client/bookings.mjs +1187 -692
  374. package/dist/client/{carousel-DtNYWFd3.mjs → carousel-DSLikmvZ.mjs} +1 -1
  375. package/dist/client/{cart-z4qZih1Y.mjs → cart-HDjWReFt.mjs} +3 -3
  376. package/dist/client/{checkout-DpL7euFH.mjs → checkout-CUvRZA3W.mjs} +3 -3
  377. package/dist/client/{checkoutUrls-BEfR7kVu.mjs → checkoutUrls-CXhko2Rv.mjs} +1 -1
  378. package/dist/client/client.mjs +2711 -1684
  379. package/dist/client/{context-C8TinPJc.mjs → context-DFmaZa-Q.mjs} +4 -3
  380. package/dist/client/{dates-vwwxTeB0.mjs → dates-BBep1JnF.mjs} +56 -11
  381. package/dist/client/{eventCalendar-DIbHfJXO.mjs → eventCalendar-zEobhxo4.mjs} +9 -9
  382. package/dist/client/{eventCombined-DoGMJ6cg.mjs → eventCombined-Dp7bz5k-.mjs} +4 -4
  383. package/dist/client/{eventDetails-BjN9v6a1.mjs → eventDetails-FE-zqTt7.mjs} +4 -4
  384. package/dist/client/{eventListing-DajjWgOv.mjs → eventListing-BMt5snal.mjs} +4 -4
  385. package/dist/client/{eventRegistration-DMq9gMA-.mjs → eventRegistration-O6ZxHfOb.mjs} +422 -570
  386. package/dist/client/{form-Qf6qTbos.mjs → form-DFa1D8vt.mjs} +3 -3
  387. package/dist/client/{headerSection-D7qJrqFX.mjs → headerSection-CmjHLR-N.mjs} +3 -3
  388. package/dist/client/hooks.mjs +414 -182
  389. package/dist/client/{locationMap-CCF9-t_0.mjs → locationMap-BXKP_lGh.mjs} +3 -3
  390. package/dist/client/{media-CwBGetqC.mjs → media-Cl38iOMI.mjs} +10 -3
  391. package/dist/client/{newsletterForm-DzCLSP4S.mjs → newsletterForm-CU-HmxGx.mjs} +3 -3
  392. package/dist/client/{pricing-Cgxv2KLC.mjs → pricing-KEAEsibq.mjs} +1 -1
  393. package/dist/client/{productDetail-ru9w5GHx.mjs → productDetail-Ckp7MGnt.mjs} +3 -3
  394. package/dist/client/{productList-zaapKSl-.mjs → productList-D91V0sYa.mjs} +3 -3
  395. package/dist/client/{propsDecoder-CwvvNOHx.mjs → propsDecoder-DZd6RJeA.mjs} +244 -94
  396. package/dist/client/rendering/client.mjs +2656 -1705
  397. package/dist/client/rendering/islands.mjs +18 -18
  398. package/dist/client/rendering.mjs +3430 -2352
  399. package/dist/client/{routeIslandApiConfig-BwVFo0Y4.mjs → routeIslandApiConfig-E1EkhhYY.mjs} +1 -1
  400. package/dist/client/{shop-mktkXvbV.mjs → shop-4F2jLQPI.mjs} +131 -85
  401. package/dist/client/{shop-commerce-De7gEnkA.mjs → shop-commerce-BbfCJjB3.mjs} +25 -13
  402. package/dist/client/{shop-commerce-store-B3MCxIBW.mjs → shop-commerce-store-vicweP2K.mjs} +1 -1
  403. package/dist/client/{shopShared-TqExh235.mjs → shopShared-DlONJt0T.mjs} +4 -4
  404. package/dist/client/{useEventFilters-n_OjkIjX.mjs → useEventFilters-COYyL3m7.mjs} +32 -17
  405. package/dist/preview-next/before-render.mjs +207 -105
  406. package/dist/preview-next/client/runtime.mjs +4 -4
  407. package/dist/preview-next/constants.mjs +5 -1
  408. package/dist/preview-next/index.mjs +5 -1
  409. package/dist/preview-next/keepAlive.mjs +341 -165
  410. package/dist/preview-next/middleware.mjs +207 -105
  411. package/dist/{previewAuthStore-C_EHQ5XA.mjs → previewAuthStore-BBmV7UsW.mjs} +243 -112
  412. package/dist/{sdk-runtime-BIkJg5y1.mjs → sdk-runtime-CwvFFjB-.mjs} +2 -2
  413. package/dist/{separator-C9qDP95Z.mjs → separator-ByL72zUT.mjs} +1 -1
  414. package/dist/server/components.mjs +1839 -1475
  415. package/dist/server/config-validation.mjs +381 -166
  416. package/dist/server/config.mjs +381 -166
  417. package/dist/server/data.mjs +381 -166
  418. package/dist/server/index.mjs +214 -110
  419. package/dist/server/next.mjs +663 -351
  420. package/dist/server/page-converter.mjs +198 -79
  421. package/dist/server/prebuild.mjs +1 -1
  422. package/dist/server/rendering/server.mjs +1536 -1169
  423. package/dist/server/rendering.mjs +2432 -2068
  424. package/dist/server/routing.mjs +456 -173
  425. package/dist/server/server.mjs +447 -267
  426. package/package.json +1 -1
  427. package/dist/_dts/api/src/bookingPaymentTermSchemas.d.ts +0 -123
  428. package/dist/_dts/billing/src/plans/display.d.ts +0 -15
  429. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +0 -3
  430. package/dist/_dts/commerce/src/purchase/checkoutPaymentTermPlanning.d.ts +0 -10
  431. package/dist/_dts/commerce/src/purchase/checkoutValidatedItemPlanning.d.ts +0 -55
  432. package/dist/_dts/commerce/src/purchase/orderInstalmentPayoff.d.ts +0 -24
  433. package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +0 -4
  434. package/dist/_dts/content-editor/src/controller/buildPublishSuccessTransition.d.ts +0 -16
  435. package/dist/_dts/content-editor/src/controller/driver.d.ts +0 -14
  436. package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +0 -7
  437. package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +0 -29
  438. package/dist/_dts/content-editor/src/hooks/autosaveScopePlanning.d.ts +0 -26
  439. package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +0 -64
  440. package/dist/_dts/content-editor/src/hooks/useStoreAutosave.d.ts +0 -48
  441. package/dist/_dts/content-editor/src/types.d.ts +0 -44
  442. package/dist/client/DiscountCodeDisclosure-CKJtz0mY.mjs +0 -137
@@ -1,27 +1,12 @@
1
1
  "use client";
2
- import { $ as FooterComposerPanel, $i as resolveSdkFooterMode, A as markApplySaving, An as ThemeScope, Ar as getCuratedSiteStyle, B as setPaletteColors, Ba as DropdownMenu, Bi as findButtonStyleRecipe, Br as curatedPalettes, C as cancelPreview, Ca as PopoverContent, D as isPreviewingChange, Da as TabsContent, E as dismissWarnings, Ea as Tabs, Eo as assertNever$1, F as previewFooterLook, Ga as DropdownMenuTrigger, H as syncStyleConfiguratorState, Ha as DropdownMenuItem, Hi as updateButtonStyleHoverPreference, I as previewHeaderLayout, Ia as Collapsible, L as previewHeaderStyle, La as CollapsibleContent, Lt as BlockEditor, M as palettePreviewProjection, Mr as findFooterLook, N as previewButtonStyle, Nr as getHeaderLayout, O as markApplyFailed, Oa as TabsList, Or as curatedSiteStyles, P as previewCuratedPalette, Pr as getHeaderStyle, Q as resolvePreviewSidebarTab, R as previewSiteStyle, Ra as CollapsibleTrigger, Ri as buttonStyleHoverPreferenceValue, S as applyTypographyDraftPatch, Sa as Popover, T as deriveStyleConfiguratorCapabilities, Ta as Input, U as toggleRow, Ua as DropdownMenuLabel, Ui as updateButtonStyleSelectionChoice, Ut as useEditorUiStore, V as styleConfiguratorHistoryEntryForPersistedSelection, Va as DropdownMenuContent, Vi as resolveButtonStyleSelection, Wa as DropdownMenuSeparator, Wi as buttonStyleSelectionKey, Wt as useEditorUiStoreInstance, X as resolveStyleConfiguratorInitialSnapshot, Xa as X$1, Xi as paletteColorEntries, Ya as cn, Yi as VARIANT_ROLES, Z as createOptimisticActionRunner, Zi as paletteColorsSchema, _ as reportPreviewDesignError, _a as SelectTrigger, _n as createStoreBackend, _o as ChevronLeft, an as isAdapterReferenceKind, at as ContentFieldsForm, b as planSiteChromeSelection, ba as CalloutDescription, c as selectionSnapshotFromApplySiteStyleSelectionResponse, cn as resolvePageRouteSlug, do as LoaderCircle, eo as Tablet, f as usePreviewDesignCoordinator, fn as ManifestForm, g as PREVIEW_DESIGN_SAVE_ERROR_MESSAGE, ga as SelectItem, go as ChevronRight, ha as SelectContent, hn as FormRenderer, j as openRow, k as markApplySaved, ka as TabsTrigger, l as deriveSiteStylePreviewUpdate, li as ThemedButtonSpecimen, ln as resolveContentTitle, lo as Monitor, lt as useEntryController, ma as Select, mn as createManifestValidation, n as useSiteChromeCustomizeOptional, no as Smartphone, ot as useUISelector, qa as Button, ro as SlidersHorizontal, s as buildApplySiteStyleSelectionBody, sn as deriveRouteMetadataPresentation, u as planConfiguratorPreview, uo as Maximize2, v as buildSiteChromeSelectionModels, va as SelectValue, vo as ChevronDown, w as createStyleConfiguratorState, wa as PopoverTrigger, wo as unsafeAsEditorBlockId, x as applyResolvedSelections, xa as SearchInput, xn as listEntryPageContentSlots, y as cycleSiteChromeSelectionId, ya as Callout, yo as Check, z as resetTypographyToSaved, za as Surface, zi as buttonStyleSelectionParameterValue } from "./SiteChromeCustomizeContext-DQXZXiqS.mjs";
3
- import { d as unwrapResponse, f as getDashboardUrl, r as usePreviewAuth } from "./previewAuthStore-C_EHQ5XA.mjs";
4
- import { t as Separator } from "./separator-C9qDP95Z.mjs";
5
- import { S as getSiteFontsStorageUrl, _ as usePreviewBlockCustomizeSelectionOptional, b as buildFontPreviewUrl, d as buildPreviewDashboardSetupUrl, f as resolvePreviewDashboardSetupHandoff, g as useBlockCustomizeControls, h as usePreviewSiteFontStorageUrl, m as resolvePreviewSidebarChromeModel, p as resolvePreviewEditorGuidanceModel, u as canInspectSiteStyle, v as PreviewFormProvider, x as generateFontFaceCss, y as previewWidgetOverrides } from "./SdkPreviewModeRuntime-DMMNCngt.mjs";
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: (e) => {
413
- onChange(e?.currentTarget?.value);
414
- },
484
+ onChange: (event) => changeDraft(event.currentTarget.value),
485
+ onBlur: finishDraft,
415
486
  ref,
416
- value: parsedValue
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
- function entryPageContentSlotsKey(siteId, typeKey, entryId) {
1079
- return [
1080
- "preview-entry-page-content-slots",
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
- typeKey,
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 = useEditorUiStore((state) => state.autosave.blocks.status);
1245
+ const blockAutosaveStatus = useAutosaveStatus("blocks").status;
1136
1246
  const [slotSelection, setSlotSelection] = useState(EMPTY_SELECTION);
1137
- const queryKey = useMemo(() => entryPageContentSlotsKey(siteId, typeKey, entryId), [
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: () => listEntryPageContentSlots(apiClient, {
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
- kind: "entry-slot",
1232
- type: typeKey,
1233
- entryId,
1234
- slotKey: selectedSlot.slotKey
1347
+ owner: slotOwner(selectedSlot, typeKey, entryId, pageSurfaceId),
1348
+ source: {
1349
+ kind: "server",
1350
+ blocks: selectedBlocks
1235
1351
  },
1236
- blocks: [...selectedBlocks],
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
- await uiStore.getState().autosave.saveNow(["blocks"]);
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
- blocks: props.blockItems,
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") onChange(role.key, next);
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) => onChange(role.key, event.target.value),
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 PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl = null, pageId, 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 }) {
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 = showAssistantTab && Boolean(pageId && bearerToken && canEdit);
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: handleBlocksChange,
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 uiStore = useEditorUiStoreInstance();
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
- const metadataPresentation = useMemo(() => {
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
- const manifest = metadataPresentation.manifest;
4693
- const isHomepage = metadataPresentation.kind === "page-homepage";
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
- const backend = useMemo(() => createStoreBackend({
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
- if (!result.success) return result.error.issues;
4701
- return [];
4791
+ return result.success ? [] : result.error.issues;
4702
4792
  }
4703
- }), [uiStore, validation]);
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: "space-y-4",
4706
- children: [isHomepage ? /* @__PURE__ */ jsx("div", {
4707
- className: "inline-flex rounded-md bg-muted px-2 py-1 text-xs font-medium text-muted-foreground",
4708
- children: "Homepage"
4709
- }) : null, /* @__PURE__ */ jsx(ManifestForm, {
4710
- manifest,
4711
- backend,
4712
- className: "space-y-4"
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 LinkedEntryEditorPanel({ siteId, apiClient, theme, widgets, entry, fields }) {
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
- const backend = useMemo(() => createStoreBackend({
4734
- scope: "linkedContent",
4735
- store: uiStore,
4736
- validateFn: (values) => {
4737
- const result = validation.schema.safeParse(values);
4738
- return result.success ? [] : result.error.issues;
4739
- }
4740
- }), [uiStore, validation]);
4741
- const syncState = entry.syncState;
4742
- const errorMessage = syncState.kind === "failed" ? syncState.error : null;
4743
- const dirty = syncState.kind === "pending" || syncState.kind === "failed";
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;