@riverbankcms/sdk 0.81.0 → 0.84.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 (525) hide show
  1. package/README.md +81 -3
  2. package/dist/{PreviewEditorSidebar-RDCMEXIJ.mjs → PreviewEditorSidebar-HML67UDA.mjs} +367 -507
  3. package/dist/{PreviewEditorSidebar-O4NDX5TP.css → PreviewEditorSidebar-JA4VIPSZ.css} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-PBGALTMK.css → PreviewEditorUI-36T7QYV4.css} +1 -1
  5. package/dist/{PreviewEditorUI-NYGQ6K7B.mjs → PreviewEditorUI-I4BQUU6K.mjs} +4 -6
  6. package/dist/{PreviewEditorUI-4JVDBZBS.css → SdkPreviewModeRuntime-FXKI6XNL.css} +1 -1
  7. package/dist/SdkPreviewModeRuntime-MCKMVDTK.mjs +8 -0
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +1038 -262
  9. package/dist/_dts/altcha/src/AltchaWidget.d.ts +1 -1
  10. package/dist/_dts/api/src/analytics.d.ts +1 -1
  11. package/dist/_dts/api/src/blocks.d.ts +36 -0
  12. package/dist/_dts/api/src/bookingConfig.d.ts +4 -0
  13. package/dist/_dts/api/src/contentRuntime.d.ts +49 -3
  14. package/dist/_dts/api/src/courses.d.ts +1 -1
  15. package/dist/_dts/api/src/endpoints.d.ts +40 -0
  16. package/dist/_dts/api/src/event-destination-policy.d.ts +17 -0
  17. package/dist/_dts/api/src/index.d.ts +6 -2
  18. package/dist/_dts/api/src/navigation/boundaries.d.ts +64 -0
  19. package/dist/_dts/api/src/navigation.d.ts +2 -0
  20. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +6 -54
  21. package/dist/_dts/api/src/sdk-event-pricing.d.ts +61 -0
  22. package/dist/_dts/api/src/sdk-event-schedule.d.ts +52 -0
  23. package/dist/_dts/api/src/sdk-event-upsert.d.ts +50 -0
  24. package/dist/_dts/api/src/sdkContracts.d.ts +67 -33
  25. package/dist/_dts/api/src/shared-contracts.d.ts +13 -0
  26. package/dist/_dts/api/src/siteGeneration.d.ts +1 -1
  27. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +29 -42
  28. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +46 -1
  29. package/dist/_dts/api/src/types.d.ts +1 -1
  30. package/dist/_dts/block-form/src/backend/useBackendWatch.d.ts +6 -1
  31. package/dist/_dts/block-form/src/context/BlockContext.d.ts +1 -1
  32. package/dist/_dts/block-form/src/context/DisplayLabelResolverContext.d.ts +1 -1
  33. package/dist/_dts/block-form/src/context/FieldPreviewResolverContext.d.ts +2 -2
  34. package/dist/_dts/block-form/src/manifest/ManifestForm.d.ts +1 -1
  35. package/dist/_dts/block-form/src/palette/PaletteContext.d.ts +1 -1
  36. package/dist/_dts/block-form/src/sdk-config/SdkConfigContext.d.ts +1 -1
  37. package/dist/_dts/block-form/src/utils/evaluateVisibility.d.ts +3 -2
  38. package/dist/_dts/block-form/src/utils/visibleWhen.d.ts +7 -0
  39. package/dist/_dts/block-form/src/widgets/BackgroundColorWidget/BackgroundColorWidget.d.ts +2 -1
  40. package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientWidget.d.ts +1 -1
  41. package/dist/_dts/block-form/src/widgets/BooleanField/BooleanField.d.ts +1 -1
  42. package/dist/_dts/block-form/src/widgets/DateField/datePickerPopover.d.ts +1 -1
  43. package/dist/_dts/block-form/src/widgets/Field.d.ts +2 -2
  44. package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +3 -3
  45. package/dist/_dts/block-form/src/widgets/NumberField/NumberField.d.ts +1 -1
  46. package/dist/_dts/block-form/src/widgets/PresetOrCustomField/PresetOrCustomField.d.ts +1 -1
  47. package/dist/_dts/block-form/src/widgets/SdkSelectField/SdkSelectField.d.ts +1 -1
  48. package/dist/_dts/block-form/src/widgets/SelectField/SelectField.d.ts +1 -1
  49. package/dist/_dts/block-form/src/widgets/SelectWidget.d.ts +1 -1
  50. package/dist/_dts/block-form/src/widgets/SliderField/SliderField.d.ts +1 -1
  51. package/dist/_dts/block-form/src/widgets/TextField/TextField.d.ts +1 -1
  52. package/dist/_dts/block-form/src/widgets/TextInputWidget.d.ts +1 -1
  53. package/dist/_dts/block-form/src/widgets/ToggleWidget.d.ts +1 -1
  54. package/dist/_dts/block-form/src/widgets/stringDefaultValue.d.ts +1 -0
  55. package/dist/_dts/blocks/src/PageRenderer.d.ts +12 -1
  56. package/dist/_dts/blocks/src/bindings/index.d.ts +1 -1
  57. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -1
  58. package/dist/_dts/blocks/src/client.d.ts +4 -0
  59. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +24 -20
  60. package/dist/_dts/blocks/src/index.d.ts +2 -2
  61. package/dist/_dts/blocks/src/portal/types.d.ts +1 -1
  62. package/dist/_dts/blocks/src/primitives/content/components/Button.d.ts +7 -7
  63. package/dist/_dts/blocks/src/primitives/content/components/RichText.d.ts +2 -1
  64. package/dist/_dts/blocks/src/primitives/content/components/Text.d.ts +2 -1
  65. package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +3 -0
  66. package/dist/_dts/blocks/src/primitives/layout/Grid.d.ts +2 -1
  67. package/dist/_dts/blocks/src/primitives/layout/Inline.d.ts +2 -1
  68. package/dist/_dts/blocks/src/primitives/layout/Stack.d.ts +2 -1
  69. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +880 -2608
  70. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +880 -2608
  71. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +880 -2608
  72. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +880 -2608
  73. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +880 -2608
  74. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +171 -0
  75. package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +1 -1
  76. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +302 -151
  77. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +6 -20
  78. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +880 -2608
  79. package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +1 -1
  80. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +880 -2608
  81. package/dist/_dts/blocks/src/system/blocks/hero.d.ts +3 -2
  82. package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +3 -0
  83. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  84. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +4 -10
  85. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +2608 -225
  86. package/dist/_dts/blocks/src/system/blocks/offerings-preview/index.d.ts +4 -2
  87. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +28 -0
  88. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +880 -2618
  89. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +880 -2620
  90. package/dist/_dts/blocks/src/system/blocks/products/shared.d.ts +0 -4
  91. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +880 -2608
  92. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +36 -3
  93. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +4 -4
  94. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +3 -0
  95. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  96. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +6 -2
  97. package/dist/_dts/blocks/src/system/customize/facets.d.ts +2 -2
  98. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
  99. package/dist/_dts/blocks/src/system/data/linkedContentEntries.d.ts +38 -0
  100. package/dist/_dts/blocks/src/system/defineBlock.d.ts +3 -1
  101. package/dist/_dts/blocks/src/system/fields/aspectRatio.d.ts +4 -1
  102. package/dist/_dts/blocks/src/system/fields/imageShape.d.ts +30 -0
  103. package/dist/_dts/blocks/src/system/fragments/library/heroLayoutControls.d.ts +25 -0
  104. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +106 -217
  105. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +1 -1
  106. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +36 -30
  107. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +18 -15
  108. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +33 -0
  109. package/dist/_dts/blocks/src/system/runtime/nodes/ImageResolveContext.d.ts +2 -2
  110. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +3 -0
  111. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
  112. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -1
  113. package/dist/_dts/blocks/src/system/runtime/nodes/carousel.shared.d.ts +2 -1
  114. package/dist/_dts/blocks/src/system/runtime/nodes/cart.client.d.ts +2 -1
  115. package/dist/_dts/blocks/src/system/runtime/nodes/cart.server.d.ts +1 -1
  116. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.client.d.ts +2 -1
  117. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +1 -1
  118. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +1 -5
  119. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/view.d.ts +10 -13
  120. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/view.d.ts +3 -2
  121. package/dist/_dts/blocks/src/system/runtime/nodes/course-details.server.d.ts +2 -2
  122. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/BookingModeStep.d.ts +1 -1
  123. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/CourseRegistrationWizard.d.ts +2 -1
  124. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/ErrorStep.d.ts +1 -1
  125. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/MembershipHero.d.ts +1 -1
  126. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/PaymentFailedStep.d.ts +1 -1
  127. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/PortalAuthSidebar.d.ts +1 -1
  128. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/StepIndicator.d.ts +1 -1
  129. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/SuccessStep.d.ts +1 -1
  130. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/VerifyingTimeoutStep.d.ts +1 -1
  131. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/WaitlistStep.d.ts +1 -1
  132. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/components.d.ts +5 -4
  133. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.client.d.ts +3 -2
  134. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.server.d.ts +1 -1
  135. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/CoursePricingDisplay.d.ts +2 -1
  136. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/view.d.ts +1 -1
  137. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.client.d.ts +2 -2
  138. package/dist/_dts/blocks/src/system/runtime/nodes/event-details.server.d.ts +1 -1
  139. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSummaryBar.d.ts +2 -1
  140. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +2 -1
  141. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardActions.d.ts +2 -1
  142. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardContent.d.ts +2 -1
  143. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventSelectionStep.d.ts +2 -0
  144. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/OrderSummary.d.ts +1 -1
  145. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PastOccurrenceNotice.d.ts +2 -1
  146. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SelectableOptionCard.d.ts +1 -1
  147. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/StepIndicator.d.ts +1 -1
  148. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.state.d.ts +303 -0
  149. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationDerivations.d.ts +1 -1
  150. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +1 -2
  151. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +20 -1
  152. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -3
  153. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/utils.d.ts +2 -1
  154. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +38 -11
  155. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +1 -1
  156. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.view.d.ts +1 -1
  157. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DateTimeTile.d.ts +2 -1
  158. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  159. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventDetailModal.d.ts +2 -1
  160. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/pricing.d.ts +14 -0
  161. package/dist/_dts/blocks/src/system/runtime/nodes/gifting.client.d.ts +2 -1
  162. package/dist/_dts/blocks/src/system/runtime/nodes/gifting.server.d.ts +2 -1
  163. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.client.d.ts +2 -2
  164. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.server.d.ts +1 -1
  165. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.shared.d.ts +4 -4
  166. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.view.d.ts +1 -1
  167. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +2 -1
  168. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +4 -2
  169. package/dist/_dts/blocks/src/system/runtime/nodes/product-detail.client.d.ts +2 -1
  170. package/dist/_dts/blocks/src/system/runtime/nodes/product-detail.server.d.ts +1 -1
  171. package/dist/_dts/blocks/src/system/runtime/nodes/product-list.client.d.ts +2 -1
  172. package/dist/_dts/blocks/src/system/runtime/nodes/product-list.server.d.ts +1 -1
  173. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +2 -1
  174. package/dist/_dts/blocks/src/system/runtime/nodes/shop-add-feedback.d.ts +1 -1
  175. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.d.ts +5 -4
  176. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.server.d.ts +5 -4
  177. package/dist/_dts/blocks/src/system/runtime/nodes/shop.client.d.ts +2 -1
  178. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +0 -17
  179. package/dist/_dts/blocks/src/system/runtime/nodes/shop.server.d.ts +1 -1
  180. package/dist/_dts/blocks/src/system/runtime/nodes/shop.types.d.ts +0 -1
  181. package/dist/_dts/blocks/src/system/runtime/nodes/spinner.d.ts +1 -1
  182. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +6 -0
  183. package/dist/_dts/blocks/src/system/runtime/shared/components/ActionRow.d.ts +1 -1
  184. package/dist/_dts/blocks/src/system/runtime/shared/components/CheckIcon.d.ts +1 -1
  185. package/dist/_dts/blocks/src/system/runtime/shared/components/ClockIcon.d.ts +1 -1
  186. package/dist/_dts/blocks/src/system/runtime/shared/components/CrossIcon.d.ts +1 -1
  187. package/dist/_dts/blocks/src/system/runtime/shared/components/FeedbackMessage.d.ts +1 -1
  188. package/dist/_dts/blocks/src/system/runtime/shared/components/FieldValidationMessage.d.ts +1 -1
  189. package/dist/_dts/blocks/src/system/runtime/shared/components/MembershipHero.d.ts +1 -1
  190. package/dist/_dts/blocks/src/system/runtime/shared/components/StateIcon.d.ts +1 -1
  191. package/dist/_dts/blocks/src/system/runtime/shared/components/StepIndicator.d.ts +1 -1
  192. package/dist/_dts/blocks/src/system/runtime/shared/components/TerminalPanel.d.ts +1 -1
  193. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  194. package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +1 -1
  195. package/dist/_dts/content-editor/src/components/EditableBlockProvider.d.ts +1 -1
  196. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -2
  197. package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +1 -1
  198. package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +1 -1
  199. package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +1 -1
  200. package/dist/_dts/content-editor/src/controller/useInvalidBlockRecovery.d.ts +1 -1
  201. package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +7 -1
  202. package/dist/_dts/content-editor/src/primitives/PreviewTextEditor.d.ts +7 -1
  203. package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +2 -0
  204. package/dist/_dts/content-editor/src/primitives/shared/index.d.ts +1 -1
  205. package/dist/_dts/content-editor/src/primitives/shared/storeBinding.d.ts +3 -1
  206. package/dist/_dts/content-editor/src/primitives/shared/types.d.ts +5 -0
  207. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +7 -2
  208. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +0 -40
  209. package/dist/_dts/content-model/src/content-types/builtins.d.ts +0 -40
  210. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  211. package/dist/_dts/content-model/src/entry-slots/types.d.ts +356 -0
  212. package/dist/_dts/content-model/src/index.d.ts +1 -0
  213. package/dist/_dts/content-model/src/templates/defaults.d.ts +7 -1
  214. package/dist/_dts/core/src/event-pricing.d.ts +72 -0
  215. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +127 -7
  216. package/dist/_dts/db/src/schemas/forms.d.ts +4 -4
  217. package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +1 -1
  218. package/dist/_dts/editor/src/inline/InlineTextEditor.d.ts +1 -1
  219. package/dist/_dts/editor/src/primitives/EditorPrimitivesProvider.d.ts +1 -1
  220. package/dist/_dts/editor/src/primitives/InlineFieldContext.d.ts +1 -1
  221. package/dist/_dts/editor/src/primitives/SaveContext.d.ts +1 -1
  222. package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +1 -1
  223. package/dist/_dts/editor/src/primitives/rich-text/RichTextToolbar.d.ts +1 -1
  224. package/dist/_dts/editor/src/primitives/rich-text/toolbar/BlockTypeDropdown.d.ts +1 -1
  225. package/dist/_dts/editor/src/primitives/rich-text/toolbar/LinkPopover.d.ts +1 -1
  226. package/dist/_dts/editor/src/primitives/rich-text/toolbar/ToolbarIconButton.d.ts +1 -1
  227. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +6 -1
  228. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +3 -2
  229. package/dist/_dts/editor-blocks/src/FormProvider.d.ts +1 -1
  230. package/dist/_dts/editor-blocks/src/block-editor/AddBlockDivider.d.ts +1 -1
  231. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
  232. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +1 -1
  233. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +1 -1
  234. package/dist/_dts/editor-blocks/src/block-editor/BlockListContext.d.ts +1 -1
  235. package/dist/_dts/editor-blocks/src/block-editor/BlockPickerDialog.d.ts +1 -1
  236. package/dist/_dts/editor-blocks/src/block-editor/BlockThumbnail.d.ts +1 -1
  237. package/dist/_dts/editor-blocks/src/block-editor/BlockTile.d.ts +2 -2
  238. package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +1 -1
  239. package/dist/_dts/editor-blocks/src/block-editor/EnhancedBlockPickerDialog.d.ts +1 -1
  240. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +1 -1
  241. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +1 -1
  242. package/dist/_dts/editor-blocks/src/block-editor/HeaderActions.d.ts +1 -1
  243. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +2 -2
  244. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +3 -2
  245. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +3 -2
  246. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockReorder.d.ts +3 -2
  247. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +27 -0
  248. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +1 -0
  249. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  250. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +2 -2
  251. package/dist/_dts/editor-blocks/src/widgets/button/ButtonField.d.ts +1 -1
  252. package/dist/_dts/editor-blocks/src/widgets/button/ButtonVariantField.d.ts +1 -1
  253. package/dist/_dts/editor-blocks/src/widgets/button/context.d.ts +1 -1
  254. package/dist/_dts/editor-blocks/src/widgets/content-type-select/ContentTypeSelectField.d.ts +1 -1
  255. package/dist/_dts/editor-blocks/src/widgets/content-type-select/ContentTypeWidgetProvider.d.ts +1 -1
  256. package/dist/_dts/editor-blocks/src/widgets/entry-picker/EntryPickerField.d.ts +1 -1
  257. package/dist/_dts/editor-blocks/src/widgets/entry-picker/EntryPickerWidgetProvider.d.ts +1 -1
  258. package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
  259. package/dist/_dts/editor-blocks/src/widgets/index.d.ts +1 -0
  260. package/dist/_dts/editor-blocks/src/widgets/link/LinkPicker.d.ts +1 -1
  261. package/dist/_dts/editor-blocks/src/widgets/link/LinkPickerDialog.d.ts +1 -1
  262. package/dist/_dts/editor-blocks/src/widgets/link/LinkSummary.d.ts +1 -1
  263. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidget.d.ts +1 -1
  264. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidgetContext.d.ts +1 -1
  265. package/dist/_dts/editor-blocks/src/widgets/offerings-preview/OfferingsPreviewGroupOrderField.d.ts +2 -0
  266. package/dist/_dts/editor-blocks/src/widgets/offerings-preview/OfferingsPreviewWidgetProvider.d.ts +10 -0
  267. package/dist/_dts/editor-blocks/src/widgets/offerings-preview/index.d.ts +3 -0
  268. package/dist/_dts/editor-blocks/src/widgets/offerings-preview/orderDomain.d.ts +29 -0
  269. package/dist/_dts/editor-blocks/src/widgets/reference/ReferenceField.d.ts +1 -1
  270. package/dist/_dts/editor-blocks/src/widgets/reference/ReferenceWidgetProvider.d.ts +1 -1
  271. package/dist/_dts/editor-blocks/src/widgets/rich-text/RichTextField.d.ts +1 -1
  272. package/dist/_dts/editor-blocks/src/widgets/rich-text/RichTextWidgetProvider.d.ts +1 -1
  273. package/dist/_dts/editor-blocks/src/widgets/rich-text/useImagePicker.d.ts +1 -1
  274. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/SiteOptionPickerField.d.ts +1 -1
  275. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/SiteOptionWidgetProvider.d.ts +1 -1
  276. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +8 -0
  277. package/dist/_dts/media-core/src/mediaUsageProjection.d.ts +37 -3
  278. package/dist/_dts/media-editor/src/CropDialog.d.ts +1 -1
  279. package/dist/_dts/media-editor/src/CropDialogShell.d.ts +1 -1
  280. package/dist/_dts/media-editor/src/FileAssetPreview.d.ts +1 -1
  281. package/dist/_dts/media-editor/src/MediaEditor.d.ts +1 -1
  282. package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +1 -1
  283. package/dist/_dts/media-editor/src/MediaPreview.d.ts +1 -1
  284. package/dist/_dts/media-editor/src/context.d.ts +1 -1
  285. package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -1
  286. package/dist/_dts/media-editor/src/provider.d.ts +1 -1
  287. package/dist/_dts/media-react/src/components/AuthenticatedImage.d.ts +1 -1
  288. package/dist/_dts/media-react/src/components/MediaLibrary.d.ts +1 -1
  289. package/dist/_dts/media-react/src/components/MediaPickerMini.d.ts +1 -1
  290. package/dist/_dts/preview-next/src/client/PreviewShellSmoke.d.ts +2 -1
  291. package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +5 -3
  292. package/dist/_dts/preview-next/src/client/blocks/BoundaryControl.d.ts +2 -1
  293. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +2 -2
  294. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +4 -2
  295. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeControlPlan.d.ts +2 -2
  296. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  297. package/dist/_dts/preview-next/src/client/layout/PreviewLayoutContext.d.ts +1 -1
  298. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +4 -2
  299. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +19 -0
  300. package/dist/_dts/preview-next/src/client/preview/MaintenanceModeBadge.d.ts +1 -1
  301. package/dist/_dts/preview-next/src/client/preview/OnboardingThemeSwitcher.d.ts +2 -1
  302. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +4 -3
  303. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +2 -2
  304. package/dist/_dts/preview-next/src/client/preview/PreviewAuthBanner.d.ts +2 -1
  305. package/dist/_dts/preview-next/src/client/preview/PreviewAuthInit.d.ts +1 -1
  306. package/dist/_dts/preview-next/src/client/preview/PreviewBlockCustomizeSelectionContext.d.ts +2 -2
  307. package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +3 -3
  308. package/dist/_dts/preview-next/src/client/preview/PreviewConfirmationDialog.d.ts +2 -1
  309. package/dist/_dts/preview-next/src/client/preview/PreviewDesignCoordinatorContext.d.ts +2 -2
  310. package/dist/_dts/preview-next/src/client/preview/PreviewDesignHistoryOrderContext.d.ts +2 -2
  311. package/dist/_dts/preview-next/src/client/preview/PreviewEditorGuidanceCard.d.ts +2 -1
  312. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +4 -3
  313. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +2 -2
  314. package/dist/_dts/preview-next/src/client/preview/PreviewOpenEditorButton.d.ts +2 -1
  315. package/dist/_dts/preview-next/src/client/preview/PreviewQueryProvider.d.ts +2 -2
  316. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +4 -3
  317. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +4 -3
  318. package/dist/_dts/preview-next/src/client/preview/PreviewSidebarSection.d.ts +2 -2
  319. package/dist/_dts/preview-next/src/client/preview/PreviewViewportControls.d.ts +1 -1
  320. package/dist/_dts/preview-next/src/client/preview/PreviewZoomControls.d.ts +1 -1
  321. package/dist/_dts/preview-next/src/client/preview/SelectedBlockCustomizePanel.d.ts +2 -1
  322. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +10 -1
  323. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +17 -3
  324. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +2 -1
  325. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +1 -1
  326. package/dist/_dts/preview-next/src/client/preview/SubrouteNoticePanel.d.ts +2 -1
  327. package/dist/_dts/preview-next/src/client/preview/linkedEntryEditEvents.d.ts +14 -1
  328. package/dist/_dts/preview-next/src/client/preview/previewChromePlacement.d.ts +5 -0
  329. package/dist/_dts/preview-next/src/client/preview/previewCustomizeControls.d.ts +11 -10
  330. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +10 -1
  331. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +29 -6
  332. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +3 -2
  333. package/dist/_dts/preview-next/src/client/preview/themeOverlay.d.ts +2 -2
  334. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewModeRuntime.d.ts +2 -1
  335. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +5 -3
  336. package/dist/_dts/sdk/src/__mocks__/next-cache.d.ts +4 -3
  337. package/dist/_dts/sdk/src/bookings/index.d.ts +5 -4
  338. package/dist/_dts/sdk/src/bookings/types.d.ts +2 -2
  339. package/dist/_dts/sdk/src/cli/commands/pull-dry-run.d.ts +1 -1
  340. package/dist/_dts/sdk/src/cli/content/reader.d.ts +15 -22
  341. package/dist/_dts/sdk/src/cli/content/writer.d.ts +6 -1
  342. package/dist/_dts/sdk/src/cli/helpers.d.ts +10 -5
  343. package/dist/_dts/sdk/src/cli/merge-remote/entryLocal.d.ts +2 -2
  344. package/dist/_dts/sdk/src/cli/merge-remote/entryMerge.d.ts +2 -1
  345. package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +2 -2
  346. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +1 -1
  347. package/dist/_dts/sdk/src/cli/site-commands/localBlockManifestResolver.d.ts +31 -0
  348. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +2 -2
  349. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +1 -1
  350. package/dist/_dts/sdk/src/cli/sync/validation.d.ts +7 -7
  351. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
  352. package/dist/_dts/sdk/src/client/management/types.d.ts +40 -10
  353. package/dist/_dts/sdk/src/client/types.d.ts +36 -4
  354. package/dist/_dts/sdk/src/client.d.ts +1 -1
  355. package/dist/_dts/sdk/src/config/content-types.d.ts +3 -14
  356. package/dist/_dts/sdk/src/config/content-validation.d.ts +9 -214
  357. package/dist/_dts/sdk/src/config/field-definitions.d.ts +13 -7
  358. package/dist/_dts/sdk/src/config/types.d.ts +9 -0
  359. package/dist/_dts/sdk/src/config/validation.d.ts +21 -21
  360. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +28 -5
  361. package/dist/_dts/sdk/src/index.d.ts +1 -1
  362. package/dist/_dts/sdk/src/preview-next/client/index.d.ts +6 -6
  363. package/dist/_dts/sdk/src/preview-next/client/runtime.d.ts +4 -3
  364. package/dist/_dts/sdk/src/public-api/contracts.d.ts +42 -37
  365. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
  366. package/dist/_dts/sdk/src/rendering/components/Block.d.ts +1 -1
  367. package/dist/_dts/sdk/src/rendering/components/Block.server.d.ts +1 -1
  368. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +1 -1
  369. package/dist/_dts/sdk/src/rendering/components/Page.d.ts +1 -1
  370. package/dist/_dts/sdk/src/rendering/components/Page.server.d.ts +1 -1
  371. package/dist/_dts/sdk/src/rendering/components/PageHydrationBootstrap.d.ts +1 -1
  372. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +6 -1
  373. package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +10 -9
  374. package/dist/_dts/sdk/src/rendering/islands/enhancers/routeIslandApiConfig.d.ts +9 -0
  375. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +6 -57
  376. package/dist/_dts/sdk/src/rendering/overrides.d.ts +6 -1
  377. package/dist/_dts/sdk/src/rendering/primitives/RichText.d.ts +2 -1
  378. package/dist/_dts/sdk/src/server.d.ts +1 -1
  379. package/dist/_dts/sdk/src/theme-bridge/ThemeBridgeProvider.d.ts +1 -1
  380. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  381. package/dist/_dts/sdk/src/version.d.ts +1 -1
  382. package/dist/_dts/site-commands/src/commands.d.ts +84 -21
  383. package/dist/_dts/theme-core/src/ClientThemeScope.d.ts +1 -1
  384. package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +3 -2
  385. package/dist/_dts/theme-core/src/ThemeScope.d.ts +1 -1
  386. package/dist/_dts/theme-core/src/ThemeScopeCore.d.ts +1 -1
  387. package/dist/_dts/theme-core/src/accordions/types.d.ts +6 -6
  388. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  389. package/dist/_dts/theme-core/src/buttons/personalities/ornate-ritual.d.ts +16 -0
  390. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +8 -8
  391. package/dist/_dts/theme-core/src/buttons/types.d.ts +20 -20
  392. package/dist/_dts/theme-core/src/cards/types.d.ts +20 -20
  393. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  394. package/dist/_dts/theme-core/src/inputs/types.d.ts +3 -3
  395. package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
  396. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +234 -225
  397. package/dist/_dts/theme-core/src/mock-themes/components/PaletteCard.d.ts +1 -1
  398. package/dist/_dts/theme-core/src/mock-themes/components/swatch.d.ts +1 -1
  399. package/dist/_dts/theme-core/src/navigation/presets.d.ts +1 -1
  400. package/dist/_dts/theme-core/src/navigation/types.d.ts +1 -1
  401. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  402. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +6 -6
  403. package/dist/_dts/theme-core/src/palette/variants/warm-dark.d.ts +16 -0
  404. package/dist/_dts/theme-core/src/schema.d.ts +263 -248
  405. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +2 -2
  406. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +27 -0
  407. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +141 -1
  408. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +16 -14
  409. package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +110 -5
  410. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +11 -9
  411. package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
  412. package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +4 -4
  413. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  414. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +2 -0
  415. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +5 -1
  416. package/dist/_dts/theme-core/src/site-styles/siteChromeBackgrounds.d.ts +30 -0
  417. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  418. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +2 -2
  419. package/dist/_dts/theme-core/src/site-styles/types.d.ts +3 -1
  420. package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +16 -1
  421. package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +1 -0
  422. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +3 -3
  423. package/dist/_dts/theme-core/src/utils/colorStyles.d.ts +6 -6
  424. package/dist/_dts/ui/src/async-boundary.d.ts +1 -1
  425. package/dist/_dts/ui/src/badge.d.ts +1 -1
  426. package/dist/_dts/ui/src/button-group.d.ts +3 -3
  427. package/dist/_dts/ui/src/calendar.d.ts +2 -2
  428. package/dist/_dts/ui/src/card.d.ts +6 -6
  429. package/dist/_dts/ui/src/combobox.d.ts +1 -1
  430. package/dist/_dts/ui/src/command-multi-select.d.ts +1 -1
  431. package/dist/_dts/ui/src/content-spinner.d.ts +1 -1
  432. package/dist/_dts/ui/src/delayed-spinner.d.ts +1 -1
  433. package/dist/_dts/ui/src/dev-toolbar.d.ts +1 -1
  434. package/dist/_dts/ui/src/dialog.d.ts +10 -10
  435. package/dist/_dts/ui/src/dropdown-menu.d.ts +1 -1
  436. package/dist/_dts/ui/src/editor-drawer.d.ts +1 -1
  437. package/dist/_dts/ui/src/empty-state.d.ts +1 -1
  438. package/dist/_dts/ui/src/filter-button-group.d.ts +1 -1
  439. package/dist/_dts/ui/src/fixed-bottom-surface.d.ts +1 -1
  440. package/dist/_dts/ui/src/form.d.ts +7 -7
  441. package/dist/_dts/ui/src/label.d.ts +1 -1
  442. package/dist/_dts/ui/src/menubar.d.ts +16 -16
  443. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -2
  444. package/dist/_dts/ui/src/number-input.d.ts +1 -1
  445. package/dist/_dts/ui/src/palette/ColorChooserDialog.d.ts +1 -1
  446. package/dist/_dts/ui/src/palette/ColorSlotButton.d.ts +1 -1
  447. package/dist/_dts/ui/src/palette/ColorSwatchButton.d.ts +1 -1
  448. package/dist/_dts/ui/src/palette/PaletteTokenEditor.d.ts +1 -1
  449. package/dist/_dts/ui/src/resizable-split-pane.d.ts +1 -1
  450. package/dist/_dts/ui/src/select.d.ts +10 -10
  451. package/dist/_dts/ui/src/separator.d.ts +1 -1
  452. package/dist/_dts/ui/src/sheet.d.ts +9 -9
  453. package/dist/_dts/ui/src/spinner.d.ts +1 -1
  454. package/dist/_dts/ui/src/tooltip.d.ts +4 -4
  455. package/dist/{chunk-4T5JIPWY.mjs → chunk-3LXFQS7T.mjs} +1 -1
  456. package/dist/{chunk-3QWQ2MUQ.mjs → chunk-5E33VO6J.mjs} +3128 -2300
  457. package/dist/{chunk-3VT7LZY2.mjs → chunk-6X2OVO3S.mjs} +2 -2
  458. package/dist/{chunk-3PTVPAT4.mjs → chunk-HFMGVJCE.mjs} +388 -56
  459. package/dist/{chunk-E3NZYEKF.mjs → chunk-LBBPD2IW.mjs} +53 -2
  460. package/dist/{chunk-WUHKQBB6.mjs → chunk-MSHZO4SL.mjs} +23773 -18556
  461. package/dist/cli/index.mjs +6062 -3246
  462. package/dist/cli/init-docs/content/getting-started.md +2 -0
  463. package/dist/cli/init-docs/content/workflow-custom-block.md +5 -0
  464. package/dist/cli/init-docs/content/workflow-templates.md +93 -2
  465. package/dist/client/{accordion-SFIIZWNH.mjs → accordion-ESY65T56.mjs} +2 -2
  466. package/dist/client/{bookingForm-CFKZVWGA.mjs → bookingForm-JRFNZUHD.mjs} +12 -12
  467. package/dist/client/bookings.mjs +3568 -299
  468. package/dist/client/{carousel-ELXWSBLA.mjs → carousel-CPR5VWIP.mjs} +3 -3
  469. package/dist/client/{cart-6SSCPYY5.mjs → cart-ZUX5BA7O.mjs} +8 -7
  470. package/dist/client/{checkout-UFQ34HPV.mjs → checkout-RULGBADZ.mjs} +8 -7
  471. package/dist/client/{chunk-PA2LJH2M.mjs → chunk-52I7BGEK.mjs} +5 -4
  472. package/dist/client/{chunk-IUEDYLFJ.mjs → chunk-5ZEAZ33K.mjs} +1 -1
  473. package/dist/client/{chunk-V6XI4M2Q.mjs → chunk-BT6AEIKN.mjs} +1 -1
  474. package/dist/client/{chunk-3PEDD5KJ.mjs → chunk-DVNUDUVT.mjs} +1 -1
  475. package/dist/client/{chunk-YLMKMCSJ.mjs → chunk-GFSQNTRW.mjs} +1 -3
  476. package/dist/client/{chunk-NX6X3GRF.mjs → chunk-HXPWP5EN.mjs} +492 -201
  477. package/dist/client/{chunk-G56BSZAM.mjs → chunk-JWEYB4V6.mjs} +3 -3
  478. package/dist/client/chunk-L4J5Y62O.mjs +18 -0
  479. package/dist/client/{chunk-76JUETXQ.mjs → chunk-RDJFCPY3.mjs} +358 -157
  480. package/dist/client/{chunk-RMWMT3ZD.mjs → chunk-SYIJ5JO2.mjs} +1 -1
  481. package/dist/client/{chunk-NP47RHIX.mjs → chunk-URQCZD5W.mjs} +17 -34
  482. package/dist/client/{chunk-TCJS3NY5.mjs → chunk-Z5OBQ5I4.mjs} +1 -1
  483. package/dist/client/{chunk-7BXX7WXH.mjs → chunk-ZE5G642V.mjs} +60 -2
  484. package/dist/client/client.mjs +75121 -72133
  485. package/dist/client/{courseRegistration-HJIISAAG.mjs → courseRegistration-QTUDC35T.mjs} +13 -12
  486. package/dist/client/{eventCalendar-F6YVUCZR.mjs → eventCalendar-Q7NS4XLD.mjs} +14 -14
  487. package/dist/client/{eventCombined-B5DSTIOK.mjs → eventCombined-QAO7VUO5.mjs} +14 -14
  488. package/dist/client/{eventDetails-SEJDDHQC.mjs → eventDetails-WTNNU6Q3.mjs} +9 -9
  489. package/dist/client/{eventListing-TPMWIIBO.mjs → eventListing-5TA2ELDT.mjs} +14 -14
  490. package/dist/client/{eventRegistration-QU6W2PV6.mjs → eventRegistration-M6USZGRF.mjs} +17 -15
  491. package/dist/client/{form-LVTYNTDE.mjs → form-DGVGXLMH.mjs} +3 -3
  492. package/dist/client/{headerSection-SO3MFC4U.mjs → headerSection-O2AGMPCU.mjs} +4 -4
  493. package/dist/client/hooks.mjs +7289 -5663
  494. package/dist/client/{locationMap-5E5FLAKO.mjs → locationMap-EJRNRIKJ.mjs} +2 -2
  495. package/dist/client/{newsletterForm-GN32JEBQ.mjs → newsletterForm-7NTC2DTR.mjs} +3 -3
  496. package/dist/client/{productDetail-Q346KSVR.mjs → productDetail-HH4LP53D.mjs} +8 -7
  497. package/dist/client/{productList-DTDMQYGZ.mjs → productList-YVHYM2AF.mjs} +8 -7
  498. package/dist/client/rendering/client.mjs +3818 -2234
  499. package/dist/client/rendering/islands.mjs +19 -19
  500. package/dist/client/rendering.mjs +17370 -14360
  501. package/dist/client/{shop-OFUW7KPN.mjs → shop-UIFX7XRK.mjs} +8 -7
  502. package/dist/client/spam-protection.mjs +3 -5
  503. package/dist/preview-next/before-render.mjs +40 -0
  504. package/dist/preview-next/client/runtime.css +1 -1
  505. package/dist/preview-next/client/runtime.mjs +5 -5
  506. package/dist/preview-next/middleware.mjs +40 -0
  507. package/dist/{sdk-runtime-EEMNSB7J.css → sdk-runtime-JD4A6SU6.css} +1 -1
  508. package/dist/{sdk-runtime-2GIX6I7X.mjs → sdk-runtime-ZENAOYMN.mjs} +6 -6
  509. package/dist/server/components.mjs +13473 -11321
  510. package/dist/server/config-validation.mjs +7017 -5489
  511. package/dist/server/config.mjs +7017 -5489
  512. package/dist/server/data.mjs +7295 -5669
  513. package/dist/server/index.mjs +149 -56
  514. package/dist/server/next.mjs +14431 -12060
  515. package/dist/server/page-converter.mjs +8062 -5399
  516. package/dist/server/prebuild.mjs +2 -1
  517. package/dist/server/rendering/server.mjs +13510 -11263
  518. package/dist/server/rendering.mjs +13613 -11293
  519. package/dist/server/routing.mjs +30919 -29206
  520. package/dist/server/server.mjs +27669 -25919
  521. package/dist/server/theme-bridge.mjs +1288 -146
  522. package/dist/server/theme.mjs +221 -131
  523. package/dist/styles/index.css +416 -96
  524. package/package.json +16 -16
  525. package/dist/SdkPreviewModeRuntime-AKCSCZEC.mjs +0 -8
@@ -1,496 +1,13 @@
1
1
  "use client";
2
- import { resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSidebarChromeModel, resolvePreviewEditorGuidanceModel, SiteOptionPickerField, ButtonVariantField, IconPickerField, EntryPickerField, ReferenceField, RichTextField, MediaField, FileField, LinkField, canInspectSiteStyle, mapContentSchemaToFormFields, usePreviewBlockCustomizeSelectionOptional, BlockEditor, canApplySiteStyle, LinkWidgetProvider, ReferenceWidgetProvider, EntryPickerWidgetProvider, SiteOptionWidgetProvider, ButtonWidgetProvider, createSiteOptionWidgetAdapters, createSiteOptionApiLoader, BUILT_IN_REFERENCE_KINDS, useRichTextImagePicker, RichTextWidgetProvider, useBlockCustomizeControls, MAX_QUICK_MANIFEST_FIELDS, parseReferenceKind } from './chunk-3QWQ2MUQ.mjs';
3
- import { unwrapResponse, useEntryController, useEditorUiStoreInstance, useUISelector, resolvePreviewSidebarTab, BackgroundGradientField, BackgroundColorField, unsafeAsEditorBlockId, Tabs, TabsList, TabsTrigger, Button, X, TabsContent, useEditorUiStore, deriveRouteMetadataPresentation, resolvePageRouteSlug, createManifestValidation, createStoreBackend, ManifestForm, previewAssistantEnabled, Collapsible, CollapsibleTrigger, ChevronRight, CollapsibleContent, ContentFieldsForm, usePreviewDesignCoordinator, useSiteChromeCustomizeOptional, resolveStyleConfiguratorInitialSnapshot, createStyleConfiguratorState, isPreviewingChange, createOptimisticActionRunner, syncStyleConfiguratorState, getCuratedSiteStyle, planSiteStylePreviewChange, openRow, previewSiteStyle, applyResolvedSelections, previewButtonPersonality, previewHeaderLayout, previewHeaderStyle, planSiteChromeLookSelection, previewFooterLook, previewPaletteVariant, previewTypographyPreset, setTypographyBodyFontOverride, setTypographyHeadingFontOverride, clearTypographyFontOverrides, paletteOverridesSchema, setPaletteOverrides, toggleRow, cancelPreview, dismissWarnings, dismissNotices, deriveStyleConfiguratorCapabilities, buildApplySiteStyleSelectionBody, markApplyFailed, selectionSnapshotFromApplySiteStyleSelectionResponse, styleConfiguratorHistoryEntryForPersistedSelection, markApplySaved, markApplySaving, findButtonPersonality, findPaletteVariant, findTypographyPreset, buildSiteChromeLookModels, getHeaderLayout, getHeaderStyle, findFooterLook, cycleSiteChromeLookId, footerLookCatalog, resolveContentTitle, foldSubroute, SUBROUTE_KINDS, Smartphone, Tablet, Monitor, Maximize2, cn, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuItem, expectParsedBrandedId, parseSiteId, buildThemeRuntime, SdkConfigProvider, PaletteProvider, MediaEditorProvider, curatedSiteStyles, ChevronLeft, cycleableSiteChromeOptions, requireEntriesForCuratedChoices, buttonPersonalities, typographyPresets, paletteVariants, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, FormRenderer, evaluateTypographyFontSlot, Callout, CalloutDescription, Separator, Surface, ColorPicker, Input } from './chunk-WUHKQBB6.mjs';
4
- import { usePreviewAuth, getDashboardUrl } from './chunk-E3NZYEKF.mjs';
2
+ import { resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSidebarChromeModel, resolvePreviewEditorGuidanceModel, previewWidgetOverrides, canInspectSiteStyle, mapContentSchemaToFormFields, PreviewFormProvider, usePreviewBlockCustomizeSelectionOptional, BlockEditor, canApplySiteStyle, useBlockCustomizeControls, MAX_QUICK_MANIFEST_FIELDS } from './chunk-5E33VO6J.mjs';
3
+ import { useEntryController, useEditorUiStoreInstance, useUISelector, resolvePreviewSidebarTab, unsafeAsEditorBlockId, Tabs, TabsList, TabsTrigger, Button, X, TabsContent, useEditorUiStore, deriveRouteMetadataPresentation, resolvePageRouteSlug, createManifestValidation, createStoreBackend, ManifestForm, previewAssistantEnabled, Collapsible, CollapsibleTrigger, ChevronRight, CollapsibleContent, ContentFieldsForm, usePreviewDesignCoordinator, useSiteChromeCustomizeOptional, resolveStyleConfiguratorInitialSnapshot, createStyleConfiguratorState, isPreviewingChange, createOptimisticActionRunner, syncStyleConfiguratorState, getCuratedSiteStyle, planSiteStylePreviewChange, openRow, previewSiteStyle, applyResolvedSelections, previewButtonPersonality, previewHeaderLayout, previewHeaderStyle, planSiteChromeLookSelection, previewFooterLook, buildSiteChromeLookModels, planSiteChromeFooterLayoutSelection, previewPaletteVariant, previewTypographyPreset, setTypographyBodyFontOverride, setTypographyHeadingFontOverride, clearTypographyFontOverrides, paletteOverridesSchema, setPaletteOverrides, toggleRow, cancelPreview, dismissWarnings, dismissNotices, deriveStyleConfiguratorCapabilities, buildApplySiteStyleSelectionBody, markApplyFailed, selectionSnapshotFromApplySiteStyleSelectionResponse, styleConfiguratorHistoryEntryForPersistedSelection, markApplySaved, unwrapResponse, markApplySaving, findButtonPersonality, findPaletteVariant, findTypographyPreset, getHeaderLayout, getHeaderStyle, getFooterLayout, findFooterLook, cycleSiteChromeLookId, resolveContentTitle, foldSubroute, SUBROUTE_KINDS, Smartphone, Tablet, Monitor, Maximize2, cn, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuItem, listEntryPageContentSlots, ContentSpinner, Callout, CalloutDescription, curatedSiteStyles, ChevronLeft, cycleableSiteChromeOptions, requireEntriesForCuratedChoices, buttonPersonalities, typographyPresets, paletteVariants, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, FormRenderer, evaluateTypographyFontSlot, Separator, Surface, ColorPicker, Input } from './chunk-MSHZO4SL.mjs';
4
+ import { usePreviewAuth, getDashboardUrl } from './chunk-LBBPD2IW.mjs';
5
5
  import './chunk-R7POPVJR.mjs';
6
- import { useMemo, useRef, useCallback, useEffect, useState, useTransition, useSyncExternalStore, useId } from 'react';
6
+ import { useMemo, useRef, useCallback, useEffect, useState, useTransition, useLayoutEffect, useSyncExternalStore, useId } from 'react';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
8
  import { useRouter } from 'next/navigation';
9
+ import { useQueryClient, useQuery } from '@tanstack/react-query';
9
10
 
10
- // ../editor-blocks/src/widgets/entry-picker/loaders.ts
11
- function getStatusBadgeVariant(status) {
12
- switch (status) {
13
- case "published":
14
- return "default";
15
- case "draft":
16
- return "secondary";
17
- case "scheduled":
18
- return "outline";
19
- case "archived":
20
- return "destructive";
21
- default:
22
- return "secondary";
23
- }
24
- }
25
- function mapEntryPickerItems(entries, valueFrom) {
26
- return entries.map((entry) => ({
27
- value: valueFrom === "identifier" ? entry.identifier ?? entry.id : valueFrom === "slug" ? entry.slug ?? entry.id : entry.id,
28
- label: entry.draftTitle || entry.title || entry.slug || entry.id,
29
- id: entry.id,
30
- identifier: entry.identifier ?? null,
31
- slug: entry.slug ?? null,
32
- badge: {
33
- label: entry.status,
34
- variant: getStatusBadgeVariant(entry.status)
35
- }
36
- }));
37
- }
38
- async function loadEntryPickerItems({
39
- apiClient,
40
- siteId,
41
- contentType,
42
- valueFrom
43
- }) {
44
- const result = await apiClient({
45
- endpoint: "listContentEntries",
46
- params: { siteId, type: contentType }
47
- });
48
- const { entries } = unwrapResponse(result);
49
- return mapEntryPickerItems(entries, valueFrom);
50
- }
51
-
52
- // ../editor-blocks/src/widgets/link/loaders.ts
53
- async function loadRoutableContentItems({
54
- apiClient,
55
- siteId
56
- }) {
57
- const result = await apiClient({
58
- endpoint: "getRoutableContent",
59
- params: { siteId }
60
- });
61
- const payload = unwrapResponse(result);
62
- return Array.isArray(payload?.items) ? payload.items : [];
63
- }
64
-
65
- // ../editor-blocks/src/widgets/reference/dynamicAdapters.ts
66
- function createDynamicReferenceAdapters(staticAdapters, createDynamicContentAdapter) {
67
- return new Proxy(staticAdapters, {
68
- get(target, prop) {
69
- if (typeof prop !== "string") {
70
- return void 0;
71
- }
72
- if (prop in target) {
73
- return target[prop];
74
- }
75
- const parsed = parseReferenceKind(prop);
76
- if (parsed.kind === "dynamicContent") {
77
- return createDynamicContentAdapter(parsed.contentTypeKey);
78
- }
79
- return void 0;
80
- }
81
- });
82
- }
83
-
84
- // ../editor-blocks/src/widgets/reference/loaders.ts
85
- function defineReferenceLoader(referenceKind, loader) {
86
- return Object.assign(loader, { referenceKind });
87
- }
88
- function formatStatusBadge(status) {
89
- if (status === "published") {
90
- return { label: "Published", variant: "default" };
91
- }
92
- if (status === "scheduled") {
93
- return { label: "Scheduled", variant: "secondary" };
94
- }
95
- if (status === "archived") {
96
- return { label: "Archived", variant: "outline" };
97
- }
98
- return { label: "Draft", variant: "outline" };
99
- }
100
- function hasSlug(entry) {
101
- return entry.slug !== null;
102
- }
103
- var loadPostReferenceItems = defineReferenceLoader("post", async ({ apiClient, siteId }) => {
104
- const result = await apiClient({
105
- endpoint: "listContentEntries",
106
- params: { siteId, type: "post" }
107
- });
108
- const { entries } = unwrapResponse(result);
109
- return entries.filter(hasSlug).filter((entry) => entry.status === "published").map((entry) => ({
110
- value: entry.slug,
111
- label: entry.title || entry.slug || entry.id,
112
- badge: formatStatusBadge(entry.status)
113
- }));
114
- });
115
- var loadFormReferenceItems = defineReferenceLoader("form", async ({ apiClient, siteId }) => {
116
- const result = await apiClient({
117
- endpoint: "listForms",
118
- params: { siteId }
119
- });
120
- const { forms } = unwrapResponse(result);
121
- return forms.map((form) => ({
122
- value: form.slug,
123
- label: form.name
124
- }));
125
- });
126
- var loadBookingFormReferenceItems = defineReferenceLoader("bookingForm", async ({ apiClient, siteId }) => {
127
- const result = await apiClient({
128
- endpoint: "listBookingForms",
129
- params: { siteId }
130
- });
131
- const { forms } = unwrapResponse(result);
132
- return forms.map((form) => ({
133
- value: form.id,
134
- label: form.name
135
- }));
136
- });
137
- var loadAppointmentServiceReferenceItems = defineReferenceLoader(
138
- "appointmentService",
139
- async ({ apiClient, siteId }) => {
140
- const result = await apiClient({
141
- endpoint: "getAppointmentServicesReference",
142
- params: { siteId }
143
- });
144
- const { options } = unwrapResponse(result);
145
- return options.map((option) => ({
146
- value: option.id,
147
- label: option.label
148
- }));
149
- }
150
- );
151
- var loadAppointmentResourceReferenceItems = defineReferenceLoader(
152
- "appointmentResource",
153
- async ({ apiClient, siteId }) => {
154
- const result = await apiClient({
155
- endpoint: "getAppointmentResourcesReference",
156
- params: { siteId }
157
- });
158
- const { options } = unwrapResponse(result);
159
- return options.map((option) => ({
160
- value: option.id,
161
- label: option.label
162
- }));
163
- }
164
- );
165
- var loadPageReferenceItems = defineReferenceLoader("page", async ({ apiClient, siteId }) => {
166
- const result = await apiClient({
167
- endpoint: "getRoutableContent",
168
- params: { siteId }
169
- });
170
- const { items } = unwrapResponse(result);
171
- return items.filter((item) => item.entityType === "page").map((page) => ({
172
- value: page.entityId,
173
- label: page.title || "Untitled"
174
- }));
175
- });
176
- var loadNewsletterListReferenceItems = defineReferenceLoader(
177
- "newsletterList",
178
- async ({ apiClient, siteId }) => {
179
- const result = await apiClient({
180
- endpoint: "listNewsletterLists",
181
- params: { siteId }
182
- });
183
- const { lists } = unwrapResponse(result);
184
- return lists.map((list) => ({
185
- value: list.id,
186
- label: list.name
187
- }));
188
- }
189
- );
190
- async function loadDynamicContentReferenceItems({
191
- apiClient,
192
- siteId,
193
- contentTypeKey
194
- }) {
195
- const result = await apiClient({
196
- endpoint: "listContentEntries",
197
- params: { siteId, type: contentTypeKey }
198
- });
199
- const { entries } = unwrapResponse(result);
200
- return entries.filter((entry) => entry.status === "published").map((entry) => ({
201
- value: entry.id,
202
- label: entry.title || entry.slug || entry.id,
203
- badge: { label: "Published", variant: "default" }
204
- }));
205
- }
206
- var referenceLoaders = {
207
- post: loadPostReferenceItems,
208
- form: loadFormReferenceItems,
209
- bookingForm: loadBookingFormReferenceItems,
210
- appointmentService: loadAppointmentServiceReferenceItems,
211
- appointmentResource: loadAppointmentResourceReferenceItems,
212
- page: loadPageReferenceItems,
213
- newsletterList: loadNewsletterListReferenceItems
214
- };
215
-
216
- // ../preview-next/src/client/widgets/widgetAdapters.ts
217
- var routableContentCache = /* @__PURE__ */ new Map();
218
- var entryPickerCache = /* @__PURE__ */ new Map();
219
- var siteOptionItemsCache = /* @__PURE__ */ new Map();
220
- var referenceItemsCache = /* @__PURE__ */ new Map();
221
- var dynamicReferenceItemsCache = /* @__PURE__ */ new Map();
222
- var MAX_CACHE_ENTRIES = 50;
223
- function setBoundedCache(map, key, value) {
224
- if (!map.has(key) && map.size >= MAX_CACHE_ENTRIES) {
225
- const firstKey = map.keys().next().value;
226
- if (firstKey !== void 0) {
227
- map.delete(firstKey);
228
- }
229
- }
230
- map.set(key, value);
231
- }
232
- function createCachedDynamicContentReferenceAdapter(contentTypeKey, previewClient, fallbackSiteId) {
233
- return {
234
- labels: {
235
- loading: "Loading entries\u2026",
236
- select: "Select an entry",
237
- empty: "No entries found",
238
- emptySelection: "Select an entry to continue."
239
- },
240
- loadItems: async ({ siteId }) => {
241
- const resolvedSiteId = siteId || fallbackSiteId;
242
- if (!resolvedSiteId) {
243
- return [];
244
- }
245
- const cacheKey = `${resolvedSiteId}:content:${contentTypeKey}`;
246
- const cached = dynamicReferenceItemsCache.get(cacheKey);
247
- if (cached) return cached;
248
- const promise = (async () => {
249
- try {
250
- return await loadDynamicContentReferenceItems({
251
- apiClient: previewClient,
252
- siteId: resolvedSiteId,
253
- contentTypeKey
254
- });
255
- } catch (error) {
256
- dynamicReferenceItemsCache.delete(cacheKey);
257
- throw error;
258
- }
259
- })();
260
- setBoundedCache(dynamicReferenceItemsCache, cacheKey, promise);
261
- return promise;
262
- }
263
- };
264
- }
265
- function createCachedReferenceAdapterLoader(kind, loader, previewClient, fallbackSiteId) {
266
- return async ({ siteId }) => {
267
- const resolvedSiteId = siteId || fallbackSiteId;
268
- if (!resolvedSiteId) {
269
- return [];
270
- }
271
- const cacheKey = `${kind}:${resolvedSiteId}`;
272
- const cached = referenceItemsCache.get(cacheKey);
273
- if (cached) return cached;
274
- const promise = (async () => {
275
- try {
276
- return await loader({ apiClient: previewClient, siteId: resolvedSiteId });
277
- } catch (error) {
278
- referenceItemsCache.delete(cacheKey);
279
- throw error;
280
- }
281
- })();
282
- setBoundedCache(referenceItemsCache, cacheKey, promise);
283
- return promise;
284
- };
285
- }
286
- function createPreviewLinkAdapters(previewClient) {
287
- return {
288
- fetchRoutableContent: async (currentSiteId) => {
289
- const cached = routableContentCache.get(currentSiteId);
290
- if (cached) return cached;
291
- const promise = (async () => {
292
- try {
293
- return await loadRoutableContentItems({ apiClient: previewClient, siteId: currentSiteId });
294
- } catch (error) {
295
- routableContentCache.delete(currentSiteId);
296
- throw error;
297
- }
298
- })();
299
- setBoundedCache(routableContentCache, currentSiteId, promise);
300
- return promise;
301
- }
302
- };
303
- }
304
- function createPreviewEntryPickerAdapter(previewClient) {
305
- return {
306
- loadItems: async ({ siteId, contentType, valueFrom }) => {
307
- if (!siteId || !contentType) return [];
308
- const cacheKey = `${siteId}:${contentType}:${valueFrom ?? "id"}`;
309
- const cached = entryPickerCache.get(cacheKey);
310
- if (cached) return cached;
311
- const request = (async () => {
312
- try {
313
- return await loadEntryPickerItems({
314
- apiClient: previewClient,
315
- siteId,
316
- contentType,
317
- valueFrom
318
- });
319
- } catch (error) {
320
- entryPickerCache.delete(cacheKey);
321
- throw error;
322
- }
323
- })();
324
- setBoundedCache(entryPickerCache, cacheKey, request);
325
- return request;
326
- },
327
- labels: {
328
- loading: "Loading entries...",
329
- select: "Select an entry",
330
- empty: "No entries found",
331
- emptySelection: "Select an entry to embed.",
332
- noContentType: "Select a content type first."
333
- }
334
- };
335
- }
336
- function createCachedSiteOptionLoader(loadItems) {
337
- return async ({ siteId, source }) => {
338
- const cacheKey = `${source}:${siteId}`;
339
- const cached = siteOptionItemsCache.get(cacheKey);
340
- if (cached) return cached;
341
- const promise = (async () => {
342
- try {
343
- return await loadItems({ siteId, source });
344
- } catch (error) {
345
- siteOptionItemsCache.delete(cacheKey);
346
- throw error;
347
- }
348
- })();
349
- setBoundedCache(siteOptionItemsCache, cacheKey, promise);
350
- return promise;
351
- };
352
- }
353
- function createPreviewSiteOptionAdapters(previewClient) {
354
- return createSiteOptionWidgetAdapters({
355
- loadItems: createCachedSiteOptionLoader(createSiteOptionApiLoader(previewClient))
356
- });
357
- }
358
- var previewReferenceChrome = {
359
- post: {
360
- labels: {
361
- loading: "Loading posts\u2026",
362
- select: "Select a post",
363
- empty: "No posts found",
364
- emptySelection: "Select a post to continue."
365
- }
366
- },
367
- form: {
368
- labels: {
369
- loading: "Loading forms\u2026",
370
- select: "Select a form",
371
- empty: "No forms found",
372
- emptySelection: "Select a form to continue."
373
- }
374
- },
375
- bookingForm: {
376
- labels: {
377
- loading: "Loading booking forms\u2026",
378
- select: "Select a booking form",
379
- empty: "No booking forms yet",
380
- emptySelection: "Select a booking form to enable appointment booking."
381
- }
382
- },
383
- appointmentService: {
384
- labels: {
385
- loading: "Loading appointment services\u2026",
386
- select: "Select a service",
387
- empty: "No services available",
388
- emptySelection: "Select a service to enable booking."
389
- }
390
- },
391
- appointmentResource: {
392
- labels: {
393
- loading: "Loading resources\u2026",
394
- select: "Select a resource",
395
- empty: "No resources available",
396
- emptySelection: "Select a resource (optional)."
397
- }
398
- },
399
- page: {
400
- labels: {
401
- loading: "Loading pages\u2026",
402
- select: "Select a page",
403
- empty: "No pages available",
404
- emptySelection: "Select a page."
405
- }
406
- },
407
- newsletterList: {
408
- labels: {
409
- loading: "Loading lists\u2026",
410
- select: "Select a list",
411
- empty: "No lists yet",
412
- emptySelection: "Select a newsletter list to subscribe users to."
413
- }
414
- }
415
- };
416
- function createPreviewReferenceAdapters(previewClient, fallbackSiteId) {
417
- const brandedFallbackSiteId = void 0;
418
- const adapters = {};
419
- for (const kind of BUILT_IN_REFERENCE_KINDS) {
420
- adapters[kind] = {
421
- loadItems: createCachedReferenceAdapterLoader(
422
- kind,
423
- referenceLoaders[kind],
424
- previewClient,
425
- brandedFallbackSiteId
426
- ),
427
- labels: previewReferenceChrome[kind].labels
428
- };
429
- }
430
- return createDynamicReferenceAdapters(
431
- adapters,
432
- (contentTypeKey) => createCachedDynamicContentReferenceAdapter(contentTypeKey, previewClient, brandedFallbackSiteId)
433
- );
434
- }
435
- function PreviewFormProviderInner({ theme, children }) {
436
- const { onPickImage, picker } = useRichTextImagePicker();
437
- return /* @__PURE__ */ jsxs(Fragment, { children: [
438
- /* @__PURE__ */ jsx(RichTextWidgetProvider, { theme, onPickImage, children }),
439
- picker
440
- ] });
441
- }
442
- function PreviewFormProvider({
443
- siteId: rawSiteId,
444
- theme = null,
445
- previewClient,
446
- bearerToken,
447
- supabaseUrl,
448
- mediaAssets,
449
- sdkConfig,
450
- children
451
- }) {
452
- const siteId = useMemo(() => expectParsedBrandedId(parseSiteId(rawSiteId)), [rawSiteId]);
453
- const linkAdapters = useMemo(() => createPreviewLinkAdapters(previewClient), [previewClient]);
454
- const entryPickerAdapter = useMemo(() => createPreviewEntryPickerAdapter(previewClient), [previewClient]);
455
- const siteOptionAdapters = useMemo(() => createPreviewSiteOptionAdapters(previewClient), [previewClient]);
456
- const referenceAdapters = useMemo(
457
- () => createPreviewReferenceAdapters(previewClient),
458
- [previewClient]
459
- );
460
- const paletteTokens = useMemo(() => {
461
- if (!theme) return void 0;
462
- try {
463
- const runtime = buildThemeRuntime(theme);
464
- return runtime.paletteTokens;
465
- } catch {
466
- return void 0;
467
- }
468
- }, [theme]);
469
- return /* @__PURE__ */ jsx(SdkConfigProvider, { sdkConfig: sdkConfig ?? null, children: /* @__PURE__ */ jsx(PaletteProvider, { tokens: paletteTokens, children: /* @__PURE__ */ jsx(LinkWidgetProvider, { siteId, adapters: linkAdapters, children: /* @__PURE__ */ jsx(ReferenceWidgetProvider, { siteId, adapters: referenceAdapters, children: /* @__PURE__ */ jsx(EntryPickerWidgetProvider, { siteId, adapter: entryPickerAdapter, children: /* @__PURE__ */ jsx(SiteOptionWidgetProvider, { siteId, adapters: siteOptionAdapters, children: /* @__PURE__ */ jsx(
470
- MediaEditorProvider,
471
- {
472
- siteId,
473
- apiClient: previewClient,
474
- bearerToken,
475
- supabaseUrl,
476
- mediaAssets,
477
- children: /* @__PURE__ */ jsx(ButtonWidgetProvider, { buttonSystem: theme?.buttons ?? null, children: /* @__PURE__ */ jsx(PreviewFormProviderInner, { theme, children }) })
478
- }
479
- ) }) }) }) }) }) });
480
- }
481
- var previewWidgetOverrides = {
482
- link: LinkField,
483
- file: FileField,
484
- media: MediaField,
485
- richText: RichTextField,
486
- reference: ReferenceField,
487
- backgroundColor: BackgroundColorField,
488
- backgroundGradient: BackgroundGradientField,
489
- entryPicker: EntryPickerField,
490
- iconPicker: IconPickerField,
491
- buttonVariant: ButtonVariantField,
492
- siteOptionPicker: SiteOptionPickerField
493
- };
494
11
  function PreviewZoomControls({ zoom, onZoomChange, disabled }) {
495
12
  return /* @__PURE__ */ jsxs(
496
13
  Select,
@@ -638,6 +155,239 @@ function resolveSubrouteNotice(ctx, args) {
638
155
  "course-run": (run) => buildNoticeFromMeta(SUBROUTE_KINDS["course-run"], run, args.siteId)
639
156
  });
640
157
  }
158
+ var EMPTY_BLOCKS = [];
159
+ var EMPTY_SLOTS = [];
160
+ var EMPTY_SELECTION = { kind: "none" };
161
+ function entryPageContentSlotsKey(siteId, typeKey, entryId) {
162
+ return ["preview-entry-page-content-slots", siteId, typeKey, entryId];
163
+ }
164
+ function getAllowedBlockKinds(slot) {
165
+ return slot.allowedBlocks.blockKinds;
166
+ }
167
+ function resolveSlotSelection(current, slots) {
168
+ const firstSlotKey = slots[0]?.slotKey;
169
+ if (!firstSlotKey) return EMPTY_SELECTION;
170
+ if (current.kind === "selected" && slots.some((slot) => slot.slotKey === current.slotKey)) {
171
+ return current;
172
+ }
173
+ return { kind: "selected", slotKey: firstSlotKey };
174
+ }
175
+ function findSelectedSlot(selection, slots) {
176
+ if (selection.kind === "none") return null;
177
+ return slots.find((slot) => slot.slotKey === selection.slotKey) ?? null;
178
+ }
179
+ function selectionsEqual(left, right) {
180
+ if (left.kind !== right.kind) return false;
181
+ switch (left.kind) {
182
+ case "none":
183
+ return true;
184
+ case "selected":
185
+ return right.kind === "selected" && left.slotKey === right.slotKey;
186
+ }
187
+ }
188
+ function findSlotKeyForBlock(slots, blockId) {
189
+ if (!blockId) return null;
190
+ return slots.find((slot) => slot.blocks.some((block) => block.id === blockId))?.slotKey ?? null;
191
+ }
192
+ function updateBlocksWithSavedContent(blocks, blockId, content) {
193
+ let changed = false;
194
+ const nextBlocks = blocks.map((block) => {
195
+ if (block.id !== blockId) return block;
196
+ changed = true;
197
+ return {
198
+ ...block,
199
+ content,
200
+ draftContent: content
201
+ };
202
+ });
203
+ return changed ? nextBlocks : blocks;
204
+ }
205
+ function getErrorMessage(error) {
206
+ return error instanceof Error ? error.message : "Unable to load Page Content.";
207
+ }
208
+ function EntrySlotBlockEditorPanel({
209
+ siteId,
210
+ typeKey,
211
+ entryId,
212
+ theme = null,
213
+ apiClient,
214
+ bearerToken,
215
+ supabaseUrl,
216
+ sdkConfig = null,
217
+ mediaAssets,
218
+ widgets
219
+ }) {
220
+ const router = useRouter();
221
+ const queryClient = useQueryClient();
222
+ const uiStore = useEditorUiStoreInstance();
223
+ const blockEditorRef = useRef(null);
224
+ const focusRequest = useEditorUiStore((state) => state.focusRequest);
225
+ const blockAutosaveStatus = useEditorUiStore(
226
+ (state) => state.autosave.blocks.status
227
+ );
228
+ const [slotSelection, setSlotSelection] = useState(EMPTY_SELECTION);
229
+ const queryKey = useMemo(
230
+ () => entryPageContentSlotsKey(siteId, typeKey, entryId),
231
+ [entryId, siteId, typeKey]
232
+ );
233
+ const slotsQuery = useQuery({
234
+ queryKey,
235
+ queryFn: () => listEntryPageContentSlots(apiClient, {
236
+ siteId,
237
+ type: typeKey,
238
+ entryId
239
+ }),
240
+ staleTime: 3e4
241
+ });
242
+ const handleBlockSave = useCallback(
243
+ (blockId, content) => {
244
+ const structure = uiStore.getState().structure;
245
+ const currentBlocks = structure.getList();
246
+ const nextBlocks = updateBlocksWithSavedContent(currentBlocks, blockId, content);
247
+ if (nextBlocks !== currentBlocks) {
248
+ structure.replaceList(nextBlocks);
249
+ }
250
+ queryClient.setQueryData(
251
+ queryKey,
252
+ (current) => {
253
+ if (!current) return current;
254
+ return {
255
+ ...current,
256
+ slots: current.slots.map((slot) => ({
257
+ ...slot,
258
+ blocks: updateBlocksWithSavedContent(slot.blocks, blockId, content)
259
+ }))
260
+ };
261
+ }
262
+ );
263
+ void queryClient.invalidateQueries({ queryKey });
264
+ router.refresh();
265
+ },
266
+ [queryClient, queryKey, router, uiStore]
267
+ );
268
+ const slots = slotsQuery.data?.slots ?? EMPTY_SLOTS;
269
+ const warnings = slotsQuery.data?.warnings ?? [];
270
+ const selection = useMemo(
271
+ () => resolveSlotSelection(slotSelection, slots),
272
+ [slotSelection, slots]
273
+ );
274
+ const selectedSlot = useMemo(
275
+ () => findSelectedSlot(selection, slots),
276
+ [selection, slots]
277
+ );
278
+ const selectedBlocks = selectedSlot?.blocks ?? EMPTY_BLOCKS;
279
+ const focusRequestedBlockField = useCallback(
280
+ (editor) => {
281
+ if (!editor) return false;
282
+ if (!focusRequest?.blockId) return false;
283
+ if (!selectedBlocks.some((block) => block.id === focusRequest.blockId)) return false;
284
+ editor.focusField({
285
+ blockId: focusRequest.blockId,
286
+ fieldPath: focusRequest.fieldPath ?? void 0,
287
+ itemIndex: focusRequest.itemIndex ?? void 0
288
+ });
289
+ uiStore.getState().clearFocus();
290
+ return true;
291
+ },
292
+ [focusRequest, selectedBlocks, uiStore]
293
+ );
294
+ const handleBlockEditorRef = useCallback(
295
+ (editor) => {
296
+ blockEditorRef.current = editor;
297
+ focusRequestedBlockField(editor);
298
+ },
299
+ [focusRequestedBlockField]
300
+ );
301
+ useEffect(() => {
302
+ setSlotSelection(
303
+ (current) => selectionsEqual(current, selection) ? current : selection
304
+ );
305
+ }, [selection]);
306
+ useEffect(() => {
307
+ const focusedSlotKey = findSlotKeyForBlock(slots, focusRequest?.blockId);
308
+ if (!focusedSlotKey) return;
309
+ setSlotSelection({ kind: "selected", slotKey: focusedSlotKey });
310
+ }, [focusRequest?.blockId, slots]);
311
+ useLayoutEffect(() => {
312
+ focusRequestedBlockField(blockEditorRef.current);
313
+ }, [focusRequestedBlockField]);
314
+ if (slotsQuery.isLoading) {
315
+ return /* @__PURE__ */ jsx(ContentSpinner, { className: "py-8" });
316
+ }
317
+ if (slotsQuery.isError) {
318
+ return /* @__PURE__ */ jsx(Callout, { tone: "danger", role: "alert", className: "px-4 py-3", children: /* @__PURE__ */ jsx(CalloutDescription, { className: "mt-0", children: getErrorMessage(slotsQuery.error) }) });
319
+ }
320
+ if (!selectedSlot) {
321
+ return null;
322
+ }
323
+ const slotEditor = /* @__PURE__ */ jsx(
324
+ PreviewFormProvider,
325
+ {
326
+ siteId,
327
+ theme,
328
+ previewClient: apiClient,
329
+ bearerToken,
330
+ supabaseUrl,
331
+ mediaAssets,
332
+ sdkConfig,
333
+ children: /* @__PURE__ */ jsx(
334
+ BlockEditor,
335
+ {
336
+ ref: handleBlockEditorRef,
337
+ siteId,
338
+ owner: {
339
+ kind: "entry-slot",
340
+ type: typeKey,
341
+ entryId,
342
+ slotKey: selectedSlot.slotKey
343
+ },
344
+ blocks: [...selectedBlocks],
345
+ apiClient,
346
+ uiStore,
347
+ theme,
348
+ widgetOverrides: widgets,
349
+ allowedBlockKinds: getAllowedBlockKinds(selectedSlot),
350
+ emptyUnavailableMessage: "No blocks are available for this slot.",
351
+ sdkConfig,
352
+ initialCollapsed: false,
353
+ enableCreation: false,
354
+ enableDeletion: false,
355
+ enableReordering: false,
356
+ reorderControlMode: "drag-handle-only",
357
+ onBlockSave: handleBlockSave
358
+ },
359
+ selectedSlot.slotKey
360
+ )
361
+ }
362
+ );
363
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
364
+ warnings.map((warning) => /* @__PURE__ */ jsx(
365
+ Callout,
366
+ {
367
+ tone: "warning",
368
+ role: "status",
369
+ className: "px-4 py-3",
370
+ children: /* @__PURE__ */ jsx(CalloutDescription, { className: "mt-0", children: warning.message })
371
+ },
372
+ `${warning.kind}:${warning.slotKey}`
373
+ )),
374
+ slots.length > 1 ? /* @__PURE__ */ jsxs(
375
+ Tabs,
376
+ {
377
+ value: selectedSlot.slotKey,
378
+ onValueChange: (nextSlotKey) => {
379
+ if (blockAutosaveStatus === "saving") return;
380
+ uiStore.getState().autosave.saveNow(["blocks"]);
381
+ setSlotSelection({ kind: "selected", slotKey: nextSlotKey });
382
+ },
383
+ children: [
384
+ /* @__PURE__ */ jsx(TabsList, { className: "h-auto flex-wrap justify-start gap-1 bg-transparent p-0", children: slots.map((slot) => /* @__PURE__ */ jsx(TabsTrigger, { value: slot.slotKey, children: slot.label }, slot.slotKey)) }),
385
+ slots.map((slot) => /* @__PURE__ */ jsx(TabsContent, { value: slot.slotKey, className: "mt-4", children: slot.slotKey === selectedSlot.slotKey ? slotEditor : null }, slot.slotKey))
386
+ ]
387
+ }
388
+ ) : slotEditor
389
+ ] });
390
+ }
641
391
  function EntryEditorPanel({
642
392
  siteId,
643
393
  entryData,
@@ -654,6 +404,7 @@ function EntryEditorPanel({
654
404
  linkedEntrySection,
655
405
  mediaAssets,
656
406
  widgets,
407
+ sdkConfig,
657
408
  viewportMode,
658
409
  viewportWidth,
659
410
  zoom,
@@ -662,8 +413,15 @@ function EntryEditorPanel({
662
413
  onZoomChange
663
414
  }) {
664
415
  const [contentOpen, setContentOpen] = useState(true);
416
+ const [pageContentOpen, setPageContentOpen] = useState(false);
665
417
  const [templateOpen, setTemplateOpen] = useState(false);
666
418
  const [detailsOpen, setDetailsOpen] = useState(false);
419
+ const focusRequest = useEditorUiStore((state) => state.focusRequest);
420
+ useEffect(() => {
421
+ if (focusRequest?.blockId) {
422
+ setPageContentOpen(true);
423
+ }
424
+ }, [focusRequest?.blockId]);
667
425
  const contentFormFields = useMemo(
668
426
  // content-model keeps a source-local structural field type so it can typecheck natively
669
427
  // without importing @riverbankcms/blocks source. Preview is the integration boundary where
@@ -738,6 +496,27 @@ function EntryEditorPanel({
738
496
  }
739
497
  ) }) })
740
498
  ] }) }) : /* @__PURE__ */ jsx("div", { className: "border-b px-4 py-3", children: /* @__PURE__ */ jsx("div", { className: "rounded-md border border-dashed px-4 py-6 text-sm text-muted-foreground", children: "Content schema not available for this entry type." }) }),
499
+ entryData.type ? /* @__PURE__ */ jsx(Collapsible, { open: pageContentOpen, onOpenChange: setPageContentOpen, children: /* @__PURE__ */ jsxs("div", { className: "border-b", children: [
500
+ /* @__PURE__ */ jsx(CollapsibleTrigger, { asChild: true, children: /* @__PURE__ */ jsxs("div", { className: "flex cursor-pointer items-center gap-2 px-4 py-3 hover:bg-accent/40", children: [
501
+ /* @__PURE__ */ jsx(ChevronRight, { className: `h-4 w-4 transition ${pageContentOpen ? "rotate-90" : ""}` }),
502
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold", children: "Page Content" })
503
+ ] }) }),
504
+ /* @__PURE__ */ jsx(CollapsibleContent, { children: /* @__PURE__ */ jsx("div", { className: "px-4 pb-4", "data-testid": "entry-page-content-editor", children: /* @__PURE__ */ jsx(
505
+ EntrySlotBlockEditorPanel,
506
+ {
507
+ siteId,
508
+ typeKey: entryData.type,
509
+ entryId: entryData.id,
510
+ theme,
511
+ apiClient,
512
+ bearerToken,
513
+ supabaseUrl,
514
+ sdkConfig: sdkConfig ?? null,
515
+ mediaAssets,
516
+ widgets
517
+ }
518
+ ) }) })
519
+ ] }) }) : null,
741
520
  currentTemplate && entryData.type ? /* @__PURE__ */ jsx(Collapsible, { open: templateOpen, onOpenChange: setTemplateOpen, children: /* @__PURE__ */ jsxs("div", { className: "border-b", children: [
742
521
  /* @__PURE__ */ jsx(CollapsibleTrigger, { asChild: true, children: /* @__PURE__ */ jsxs("div", { className: "flex cursor-pointer items-center gap-2 px-4 py-3 hover:bg-accent/40", children: [
743
522
  /* @__PURE__ */ jsx(ChevronRight, { className: `h-4 w-4 transition ${templateOpen ? "rotate-90" : ""}` }),
@@ -910,6 +689,7 @@ function PageBlockEditorPanel({
910
689
  designPanel,
911
690
  sdkConfig,
912
691
  mediaAssets,
692
+ bookingOfferingPresets,
913
693
  viewportMode,
914
694
  viewportWidth,
915
695
  zoom,
@@ -922,6 +702,7 @@ function PageBlockEditorPanel({
922
702
  const [customizeOpen, setCustomizeOpen] = useState(false);
923
703
  const [contentOpen, setContentOpen] = useState(true);
924
704
  const [detailsOpen, setDetailsOpen] = useState(false);
705
+ const customizeSectionRef = useRef(null);
925
706
  const selectionKind = customizeSelection?.selection.kind;
926
707
  const selectionRequestId = customizeSelection?.selection.kind === "selected" ? customizeSelection.selection.requestId : 0;
927
708
  const handleCustomizeBlock = useCallback(
@@ -938,6 +719,10 @@ function PageBlockEditorPanel({
938
719
  useEffect(() => {
939
720
  if (selectionKind === "selected") {
940
721
  setCustomizeOpen(true);
722
+ customizeSectionRef.current?.scrollIntoView({
723
+ block: "start",
724
+ behavior: "smooth"
725
+ });
941
726
  }
942
727
  }, [selectionKind, selectionRequestId]);
943
728
  return /* @__PURE__ */ jsxs("div", { className: "flex h-full min-h-0 flex-col overflow-hidden", children: [
@@ -961,6 +746,7 @@ function PageBlockEditorPanel({
961
746
  bearerToken,
962
747
  supabaseUrl,
963
748
  mediaAssets,
749
+ bookingOfferingPresets,
964
750
  sdkConfig: sdkConfig ?? null,
965
751
  children: /* @__PURE__ */ jsxs("div", { className: "min-h-0 flex-1 space-y-0 overflow-auto", children: [
966
752
  linkedEntrySection ? /* @__PURE__ */ jsx(
@@ -978,7 +764,7 @@ function PageBlockEditorPanel({
978
764
  ] }) }),
979
765
  /* @__PURE__ */ jsx(CollapsibleContent, { children: /* @__PURE__ */ jsx("div", { className: "px-4 pb-4", children: designPanel }) })
980
766
  ] }) }) : null,
981
- /* @__PURE__ */ jsx(Collapsible, { open: customizeOpen, onOpenChange: setCustomizeOpen, children: /* @__PURE__ */ jsxs("div", { className: "border-b", children: [
767
+ /* @__PURE__ */ jsx(Collapsible, { open: customizeOpen, onOpenChange: setCustomizeOpen, children: /* @__PURE__ */ jsxs("div", { ref: customizeSectionRef, className: "border-b", children: [
982
768
  /* @__PURE__ */ jsx(CollapsibleTrigger, { asChild: true, children: /* @__PURE__ */ jsxs("div", { className: "flex cursor-pointer items-center gap-2 px-4 py-3 hover:bg-accent/40", children: [
983
769
  /* @__PURE__ */ jsx(ChevronRight, { className: `h-4 w-4 transition ${customizeOpen ? "rotate-90" : ""}` }),
984
770
  /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold", children: "Customize" })
@@ -1003,7 +789,7 @@ function PageBlockEditorPanel({
1003
789
  {
1004
790
  ref: blockEditorRef,
1005
791
  siteId,
1006
- pageId,
792
+ owner: { kind: "page", pageId },
1007
793
  blocks: blockItems,
1008
794
  uiStore: uiStoreForBlockEditor,
1009
795
  apiClient,
@@ -1445,6 +1231,28 @@ function StyleConfigurator({
1445
1231
  (current) => current ? previewFooterLook(current, plan.next.footerLookId) : current
1446
1232
  );
1447
1233
  }, []);
1234
+ const handlePreviewFooterLayout = useCallback(
1235
+ (id) => {
1236
+ if (!id) return;
1237
+ setState((current) => {
1238
+ if (!current) return current;
1239
+ const siteStyle = getCuratedSiteStyle(current.previewed.siteStyleId);
1240
+ if (!siteStyle) return current;
1241
+ const models = buildSiteChromeLookModels({
1242
+ state: current,
1243
+ siteStyle,
1244
+ headerSelectionContext,
1245
+ footerSelectionContext
1246
+ });
1247
+ const nextLookId = planSiteChromeFooterLayoutSelection({
1248
+ layoutId: id,
1249
+ currentLookId: current.previewed.footerLookId ?? models.footer.renderedLookId
1250
+ });
1251
+ return nextLookId ? previewFooterLook(current, nextLookId) : current;
1252
+ });
1253
+ },
1254
+ [footerSelectionContext, headerSelectionContext]
1255
+ );
1448
1256
  const handlePreviewPalette = useCallback((id) => {
1449
1257
  setState(
1450
1258
  (current) => current ? previewPaletteVariant(current, id) : current
@@ -1624,6 +1432,9 @@ function StyleConfigurator({
1624
1432
  });
1625
1433
  const currentHeaderLayout = getHeaderLayout(state.previewed.headerLayoutId);
1626
1434
  const currentHeaderStyle = getHeaderStyle(state.previewed.headerStyleId);
1435
+ const currentFooterLayout = getFooterLayout(
1436
+ chromeLookModels.footerLayout.renderedLayoutId
1437
+ );
1627
1438
  const currentFooterLook = state.previewed.footerLookId ? findFooterLook(state.previewed.footerLookId) : findFooterLook(chromeLookModels.footer.renderedLookId);
1628
1439
  return /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
1629
1440
  state.warnings.length > 0 ? /* @__PURE__ */ jsx(
@@ -1703,10 +1514,34 @@ function StyleConfigurator({
1703
1514
  /* @__PURE__ */ jsx(
1704
1515
  SiteChromeLookRow,
1705
1516
  {
1706
- label: "Footer",
1707
- ariaLabel: "Footer",
1708
- defaultDescription: "Use the footer chosen for this site style.",
1709
- catalog: footerLookCatalog,
1517
+ label: "Footer layout",
1518
+ ariaLabel: "Footer layout",
1519
+ defaultDescription: "Choose the footer structure.",
1520
+ expanded: state.expandedRow === "footer-layout",
1521
+ onToggle: () => handleToggleRow("footer-layout"),
1522
+ currentId: chromeLookModels.footerLayout.renderedLayoutId,
1523
+ currentLabel: currentFooterLayout?.label ?? chromeLookModels.footerLayout.renderedLayoutId,
1524
+ scopeDescription: "Changes the footer structure on every page.",
1525
+ options: chromeLookModels.footerLayout.options,
1526
+ diagnostics: [],
1527
+ onCycle: (direction) => {
1528
+ const next = cycleSiteChromeLookId(
1529
+ chromeLookModels.footerLayout.options,
1530
+ chromeLookModels.footerLayout.renderedLayoutId,
1531
+ direction
1532
+ );
1533
+ if (next !== void 0) handlePreviewFooterLayout(next);
1534
+ },
1535
+ onPreview: handlePreviewFooterLayout,
1536
+ disabled: saving
1537
+ }
1538
+ ),
1539
+ /* @__PURE__ */ jsx(
1540
+ SiteChromeLookRow,
1541
+ {
1542
+ label: "Footer look",
1543
+ ariaLabel: "Footer look",
1544
+ defaultDescription: "Use the footer look chosen for this site style.",
1710
1545
  expanded: state.expandedRow === "footer",
1711
1546
  onToggle: () => handleToggleRow("footer"),
1712
1547
  currentId: state.previewed.footerLookId,
@@ -2700,6 +2535,7 @@ function PreviewEditorSidebar({
2700
2535
  assistantPanel,
2701
2536
  sdkConfig,
2702
2537
  mediaAssets,
2538
+ bookingOfferingPresets,
2703
2539
  siteStyleAccess = { kind: "hidden" },
2704
2540
  activeTab,
2705
2541
  onTabChange,
@@ -2785,6 +2621,7 @@ function PreviewEditorSidebar({
2785
2621
  [controllerBlocks.actions, uiStore]
2786
2622
  );
2787
2623
  useEffect(() => {
2624
+ if (entryData) return;
2788
2625
  const req = focusRequest;
2789
2626
  if (!req?.blockId) return;
2790
2627
  blockEditorRef.current?.focusField({
@@ -2793,7 +2630,7 @@ function PreviewEditorSidebar({
2793
2630
  itemIndex: req.itemIndex ?? void 0
2794
2631
  });
2795
2632
  uiStore.getState().clearFocus();
2796
- }, [focusRequest, uiStore]);
2633
+ }, [entryData, focusRequest, uiStore]);
2797
2634
  const metadataSectionContent = useMemo(() => {
2798
2635
  if (!pageId && !entryData) return null;
2799
2636
  return /* @__PURE__ */ jsx(
@@ -2819,7 +2656,7 @@ function PreviewEditorSidebar({
2819
2656
  mediaAssets,
2820
2657
  widgets: contentFormWidgets,
2821
2658
  entry: snapshot,
2822
- fields: findLinkedEntryFieldsFromSnapshot(snapshot)
2659
+ fields: findLinkedEntryManifestFieldsFromSnapshot(snapshot)
2823
2660
  }
2824
2661
  )
2825
2662
  });
@@ -2841,6 +2678,7 @@ function PreviewEditorSidebar({
2841
2678
  linkedEntrySection,
2842
2679
  mediaAssets,
2843
2680
  widgets: contentFormWidgets,
2681
+ sdkConfig: sdkConfig ?? null,
2844
2682
  viewportMode,
2845
2683
  viewportWidth,
2846
2684
  zoom,
@@ -2894,6 +2732,7 @@ function PreviewEditorSidebar({
2894
2732
  ) : null,
2895
2733
  sdkConfig: sdkConfig ?? null,
2896
2734
  mediaAssets,
2735
+ bookingOfferingPresets,
2897
2736
  linkedEntrySection,
2898
2737
  viewportMode,
2899
2738
  viewportWidth,
@@ -3056,10 +2895,7 @@ function LinkedEntryEditorPanel({
3056
2895
  title: entry.meta.contentTypeLabel,
3057
2896
  component: "content-form",
3058
2897
  description: "",
3059
- fields: fields.map((field) => ({
3060
- ...field,
3061
- label: fieldIdToLabel(field.id)
3062
- })),
2898
+ fields,
3063
2899
  slots: []
3064
2900
  }),
3065
2901
  [entry.meta.contentTypeKey, entry.meta.contentTypeLabel, fields]
@@ -3090,7 +2926,10 @@ function LinkedEntryEditorPanel({
3090
2926
  );
3091
2927
  return /* @__PURE__ */ jsxs("div", { className: "bg-muted/20", children: [
3092
2928
  /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3 px-4 py-3", children: [
3093
- /* @__PURE__ */ jsx("div", { className: "min-w-0", children: /* @__PURE__ */ jsx("div", { className: "truncate text-sm font-medium", children: displayTitle }) }),
2929
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
2930
+ /* @__PURE__ */ jsx("div", { className: "truncate text-sm font-medium", children: displayTitle }),
2931
+ /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs leading-5 text-muted-foreground", children: "Changes update this linked entry wherever it appears." })
2932
+ ] }),
3094
2933
  /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-2", children: /* @__PURE__ */ jsx(
3095
2934
  Button,
3096
2935
  {
@@ -3143,17 +2982,38 @@ function buildLinkedEntrySidebarSection(input) {
3143
2982
  content: renderContent(snapshot)
3144
2983
  };
3145
2984
  }
3146
- function findLinkedEntryFieldsFromSnapshot(snapshot) {
2985
+ function findLinkedEntryManifestFieldsFromSnapshot(snapshot) {
3147
2986
  return snapshot.meta.fields.flatMap((field) => {
3148
2987
  if (typeof field.id !== "string" || typeof field.type !== "string") {
3149
2988
  return [];
3150
2989
  }
3151
- return [{
2990
+ const base = {
3152
2991
  id: field.id,
3153
- type: field.type,
3154
- mediaKinds: Array.isArray(field.mediaKinds) ? field.mediaKinds.filter((item) => typeof item === "string") : null,
3155
- fileKinds: Array.isArray(field.fileKinds) ? field.fileKinds.filter((item) => typeof item === "string") : null
3156
- }];
2992
+ label: fieldIdToLabel(field.id),
2993
+ required: false
2994
+ };
2995
+ switch (field.type) {
2996
+ case "text":
2997
+ return [{ ...base, type: "text", multiline: false }];
2998
+ case "textarea":
2999
+ return [{ ...base, type: "text", multiline: true }];
3000
+ case "richText":
3001
+ return [{ ...base, type: "richText" }];
3002
+ case "number":
3003
+ return [{ ...base, type: "number" }];
3004
+ case "boolean":
3005
+ return [{ ...base, type: "boolean" }];
3006
+ case "date":
3007
+ return [{ ...base, type: "date" }];
3008
+ case "datetime":
3009
+ return [{ ...base, type: "datetime" }];
3010
+ case "url":
3011
+ return [{ ...base, type: "url", allowRelative: false }];
3012
+ case "link":
3013
+ return [{ ...base, type: "link" }];
3014
+ default:
3015
+ return [];
3016
+ }
3157
3017
  });
3158
3018
  }
3159
3019
  function fieldIdToLabel(fieldId) {