@riverbankcms/sdk 0.77.1 → 0.78.2

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 (295) hide show
  1. package/README.md +114 -43
  2. package/dist/{PreviewEditorSidebar-DVUG7GK4.mjs → PreviewEditorSidebar-4DXLYX2V.mjs} +4962 -4885
  3. package/dist/{PreviewEditorUI-P7RN4CDS.mjs → PreviewEditorUI-CS5P4N3P.mjs} +4 -4
  4. package/dist/SdkPreviewModeRuntime-IJDHTW4W.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +190 -154
  6. package/dist/_dts/api/src/accessAdmin.d.ts +5 -0
  7. package/dist/_dts/api/src/billing.d.ts +3 -26
  8. package/dist/_dts/api/src/bookingVerticals.d.ts +4 -0
  9. package/dist/_dts/api/src/content-editor.d.ts +1 -0
  10. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  11. package/dist/_dts/api/src/demoDashboardMutationSurfaces.d.ts +46 -0
  12. package/dist/_dts/api/src/endpoints.d.ts +17 -0
  13. package/dist/_dts/api/src/index.d.ts +16 -4
  14. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +87 -0
  15. package/dist/_dts/api/src/navigation/dashboardDemoNav.d.ts +5 -0
  16. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +45 -0
  17. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +42 -0
  18. package/dist/_dts/api/src/navigation/dashboardTeamMemberNav.d.ts +24 -0
  19. package/dist/_dts/api/src/navigation/linkUrlType.d.ts +3 -0
  20. package/dist/_dts/api/src/navigation.d.ts +12 -0
  21. package/dist/_dts/api/src/public/types.d.ts +1 -1
  22. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +55 -26
  23. package/dist/_dts/api/src/request.d.ts +3 -11
  24. package/dist/_dts/api/src/sdkConfig/contracts.d.ts +1 -0
  25. package/dist/_dts/api/src/sdkContracts.d.ts +7 -1
  26. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -0
  27. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -0
  28. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +15 -19
  29. package/dist/_dts/api/src/staffAccess.d.ts +79 -0
  30. package/dist/_dts/api/src/types.d.ts +14 -27
  31. package/dist/_dts/api/src/workflows/automaticWorkflowTriggers.d.ts +21 -0
  32. package/dist/_dts/block-form/src/fields/types.d.ts +6 -0
  33. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +3 -2
  34. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +6 -3
  35. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +8 -3
  36. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -1
  37. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useLinearRepeaterDnd.d.ts +1 -0
  38. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterPointerDragCapability.d.ts +1 -0
  39. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useResolvedItemLabel.d.ts +7 -0
  40. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +1 -0
  41. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/index.d.ts +3 -1
  42. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterDndDomain.d.ts +1 -1
  43. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterLabelSource.d.ts +15 -0
  44. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +50 -0
  45. package/dist/_dts/blocks/src/client/site-chrome.d.ts +4 -1
  46. package/dist/_dts/blocks/src/index.d.ts +1 -0
  47. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +879 -288
  48. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +879 -288
  49. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +879 -288
  50. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +879 -288
  51. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +879 -288
  52. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -2
  53. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +885 -289
  54. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +879 -288
  55. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -1
  56. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +68 -21
  57. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +879 -288
  58. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +879 -288
  59. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +879 -288
  60. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
  61. package/dist/_dts/blocks/src/system/data/index.d.ts +5 -3
  62. package/dist/_dts/blocks/src/system/data/previewResolvedDataState.d.ts +45 -0
  63. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
  64. package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +5 -0
  65. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +193 -29
  66. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +10 -0
  67. package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
  68. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +9 -0
  69. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +3 -2
  70. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  71. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  72. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +43 -8
  73. package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +8 -7
  74. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -1
  75. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +1 -1
  76. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCompactRow.d.ts +1 -4
  77. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -8
  79. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -9
  80. package/dist/_dts/blocks/src/system/runtime/nodes/shop-cart-discount-ui.d.ts +5 -0
  81. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +76 -0
  82. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout.state.d.ts +1 -4
  83. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce-store.d.ts +2 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.shared.d.ts +1 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/shop-discount-apply.state.d.ts +52 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +2 -4
  87. package/dist/_dts/blocks/src/system/runtime/nodes/useDiscountApply.d.ts +21 -0
  88. package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +54 -0
  89. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  90. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  91. package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
  92. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  93. package/dist/_dts/content-editor/src/contentTypeEditorContentState.d.ts +26 -0
  94. package/dist/_dts/content-editor/src/definitions/factory.d.ts +75 -0
  95. package/dist/_dts/content-editor/src/entryWorkflows.d.ts +2 -0
  96. package/dist/_dts/content-editor/src/footerBlocksEditorState.d.ts +76 -0
  97. package/dist/_dts/content-editor/src/index.d.ts +6 -1
  98. package/dist/_dts/content-editor/src/pageWorkflowContent.d.ts +29 -0
  99. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -2
  100. package/dist/_dts/content-model/src/content-types/schema.d.ts +17 -3
  101. package/dist/_dts/content-model/src/index.d.ts +1 -0
  102. package/dist/_dts/content-model/src/routeTemplate.d.ts +4 -0
  103. package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +3 -1
  104. package/dist/_dts/content-model/src/templates/bindingValidation.d.ts +10 -4
  105. package/dist/_dts/content-model/src/templates/editorState.d.ts +25 -0
  106. package/dist/_dts/content-model/src/templates/fieldPaths.d.ts +20 -0
  107. package/dist/_dts/content-model/src/templates/manifestAdapter.d.ts +5 -2
  108. package/dist/_dts/core/src/branded.d.ts +108 -85
  109. package/dist/_dts/core/src/csv-cells.d.ts +10 -0
  110. package/dist/_dts/core/src/csv-date-filter.d.ts +27 -0
  111. package/dist/_dts/core/src/csv-escape.d.ts +1 -0
  112. package/dist/_dts/core/src/csv-filename.d.ts +18 -0
  113. package/dist/_dts/core/src/csv-render.d.ts +4 -0
  114. package/dist/_dts/core/src/csv-types.d.ts +116 -0
  115. package/dist/_dts/core/src/currency-format.d.ts +4 -0
  116. package/dist/_dts/core/src/demo-capability-policy.d.ts +29 -0
  117. package/dist/_dts/core/src/demo-claim-access.d.ts +14 -0
  118. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +11 -0
  119. package/dist/_dts/core/src/demo-runtime.d.ts +47 -0
  120. package/dist/_dts/core/src/duration.d.ts +14 -0
  121. package/dist/_dts/core/src/editor-state.d.ts +7 -7
  122. package/dist/_dts/core/src/email-format.d.ts +10 -0
  123. package/dist/_dts/core/src/field-errors.d.ts +1 -0
  124. package/dist/_dts/core/src/form-submission-preview.d.ts +24 -0
  125. package/dist/_dts/core/src/index.d.ts +20 -0
  126. package/dist/_dts/core/src/number-input.d.ts +22 -0
  127. package/dist/_dts/core/src/participants.d.ts +2 -2
  128. package/dist/_dts/core/src/public-url-validation.d.ts +12 -0
  129. package/dist/_dts/core/src/slug.d.ts +39 -0
  130. package/dist/_dts/core/src/string.d.ts +19 -0
  131. package/dist/_dts/core/src/uuid.d.ts +6 -0
  132. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +11 -0
  133. package/dist/_dts/db/src/schemas/forms.d.ts +50 -50
  134. package/dist/_dts/editor-blocks/src/blockPayload.d.ts +1 -1
  135. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +34 -0
  136. package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +24 -0
  137. package/dist/_dts/media-core/src/canonicalCropReview.d.ts +66 -0
  138. package/dist/_dts/media-core/src/classifyAllPlanning.d.ts +48 -0
  139. package/dist/_dts/media-core/src/filename.d.ts +1 -0
  140. package/dist/_dts/media-core/src/index.d.ts +10 -0
  141. package/dist/_dts/media-core/src/mediaAssetUsageStatus.d.ts +47 -0
  142. package/dist/_dts/media-core/src/mediaSettingsState.d.ts +3 -0
  143. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +38 -0
  144. package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +28 -0
  145. package/dist/_dts/media-core/src/videoAssetRepair.d.ts +38 -0
  146. package/dist/_dts/media-editor/src/MediaEditor.d.ts +3 -1
  147. package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -1
  148. package/dist/_dts/media-editor/src/fieldUi.d.ts +5 -0
  149. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  150. package/dist/_dts/media-editor/src/mediaEditorDebug.d.ts +1 -0
  151. package/dist/_dts/path-utils/src/index.d.ts +8 -0
  152. package/dist/_dts/path-utils/src/redirectPaths.d.ts +26 -0
  153. package/dist/_dts/path-utils/src/safeAppPath.d.ts +26 -0
  154. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +2 -1
  155. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -0
  156. package/dist/_dts/preview-next/src/client/preview/previewDocumentFrame.d.ts +31 -0
  157. package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +1 -1
  158. package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +2 -0
  159. package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +3 -3
  160. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +7 -0
  161. package/dist/_dts/sdk/src/cli/commands/push.d.ts +2 -0
  162. package/dist/_dts/sdk/src/cli/content/reader.d.ts +13 -0
  163. package/dist/_dts/sdk/src/cli/content/writer.d.ts +2 -1
  164. package/dist/_dts/sdk/src/cli/helpers.d.ts +2 -0
  165. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +6 -6
  166. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +5 -0
  167. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +4 -0
  168. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +5 -2
  169. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +10 -1
  170. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +1 -1
  171. package/dist/_dts/sdk/src/client/error.d.ts +3 -0
  172. package/dist/_dts/sdk/src/client/index.d.ts +2 -2
  173. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -0
  174. package/dist/_dts/sdk/src/client/types.d.ts +39 -21
  175. package/dist/_dts/sdk/src/config/content-types.d.ts +7 -0
  176. package/dist/_dts/sdk/src/config/field-definitions.d.ts +2 -0
  177. package/dist/_dts/sdk/src/index.d.ts +2 -2
  178. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +16 -16
  179. package/dist/_dts/sdk/src/next/content-load-failure.d.ts +51 -0
  180. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  181. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  182. package/dist/_dts/sdk/src/portal/redirects.d.ts +1 -1
  183. package/dist/_dts/sdk/src/routing/index.d.ts +3 -2
  184. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +71 -6
  185. package/dist/_dts/sdk/src/version.d.ts +1 -1
  186. package/dist/_dts/site-commands/src/commands.d.ts +15 -12
  187. package/dist/_dts/site-commands/src/index.d.ts +1 -0
  188. package/dist/_dts/site-commands/src/pagePaths.d.ts +6 -0
  189. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +26 -0
  190. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -0
  191. package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +1 -0
  192. package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -0
  193. package/dist/_dts/theme-core/src/fonts/uploadFormat.d.ts +44 -0
  194. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  195. package/dist/_dts/theme-core/src/index.d.ts +3 -1
  196. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +36 -24
  197. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +6 -1
  198. package/dist/_dts/theme-core/src/navigation/types.d.ts +12 -0
  199. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  200. package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +7 -0
  201. package/dist/_dts/theme-core/src/schema.d.ts +64 -18
  202. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +214 -34
  203. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -2
  204. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +214 -34
  205. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +24 -0
  206. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +31 -3
  207. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
  208. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +33 -1
  209. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +4 -2
  210. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -1
  211. package/dist/_dts/theme-core/src/site-styles/types.d.ts +27 -2
  212. package/dist/_dts/theme-core/src/siteChrome.d.ts +17 -34
  213. package/dist/_dts/theme-core/src/siteChromeOverlayClearance.d.ts +22 -0
  214. package/dist/_dts/theme-core/src/siteChromePlacement.d.ts +22 -0
  215. package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +32 -0
  216. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
  217. package/dist/{altcha-B5XGSXP5.mjs → altcha-EKUEQ4RP.mjs} +1 -1
  218. package/dist/{chunk-IENWFSLO.mjs → chunk-4QEGTLK6.mjs} +1 -1
  219. package/dist/{chunk-ZYEJLCTN.mjs → chunk-6HYXHRAI.mjs} +5 -5
  220. package/dist/{chunk-VX7B5VAC.mjs → chunk-CR5HKAGU.mjs} +32 -5
  221. package/dist/{chunk-KWJPDZH2.mjs → chunk-MCRQMPET.mjs} +3793 -1201
  222. package/dist/{chunk-6SMUFTXD.mjs → chunk-OKMBEAXY.mjs} +1 -1
  223. package/dist/{chunk-XGB3TDIC.mjs → chunk-R7POPVJR.mjs} +2 -8
  224. package/dist/{chunk-2SPENC5M.mjs → chunk-RGTOD4AJ.mjs} +242 -57
  225. package/dist/cli/index.mjs +2361 -668
  226. package/dist/cli/init-docs/content/cli-reference.md +3 -2
  227. package/dist/cli/init-docs/content/content-management.md +2 -2
  228. package/dist/cli/init-docs/content/workflow-preview-mode.md +68 -2
  229. package/dist/client/{accordion-RZMQSYLR.mjs → accordion-PLYNJIIM.mjs} +2 -2
  230. package/dist/client/analytics.mjs +1 -1
  231. package/dist/client/{bookingForm-NF4ASVNV.mjs → bookingForm-BXAP6AO7.mjs} +76 -72
  232. package/dist/client/bookings.mjs +3765 -310
  233. package/dist/client/{carousel-LDX47ZIK.mjs → carousel-TRBXDHGF.mjs} +3 -4
  234. package/dist/client/{cart-RGXDS5F4.mjs → cart-Z7H3HJRS.mjs} +8 -8
  235. package/dist/client/{checkout-P7WWSNNY.mjs → checkout-WAFCUBIX.mjs} +8 -8
  236. package/dist/client/{chunk-II7O4XN3.mjs → chunk-75OUS5MT.mjs} +2 -2
  237. package/dist/client/{chunk-PMAIXMAB.mjs → chunk-AUJ5DBZJ.mjs} +42 -37
  238. package/dist/client/{chunk-TQ5MSPDX.mjs → chunk-CE7IBGVW.mjs} +3 -1
  239. package/dist/client/{chunk-E2TDNXCL.mjs → chunk-CWGTG37I.mjs} +2 -1
  240. package/dist/client/{chunk-UFSWADAO.mjs → chunk-DNRGY432.mjs} +6 -67
  241. package/dist/client/{chunk-GMVTOKYG.mjs → chunk-FUXW6VW2.mjs} +512 -66
  242. package/dist/client/{chunk-R56FQ3RR.mjs → chunk-JGXPTEI2.mjs} +322 -106
  243. package/dist/client/{chunk-L3DNHIJX.mjs → chunk-JRDUHZCT.mjs} +53 -53
  244. package/dist/client/{chunk-M3L3KYYR.mjs → chunk-UDNSI5PY.mjs} +12 -0
  245. package/dist/client/{chunk-JEZECJ3W.mjs → chunk-UVQEJJTN.mjs} +129 -3
  246. package/dist/client/{chunk-F7LHOKEH.mjs → chunk-XSV6KW4D.mjs} +1 -1
  247. package/dist/client/chunk-ZFHRN6W2.mjs +66 -0
  248. package/dist/client/{chunk-JNC7CGHX.mjs → chunk-ZI3LLBPZ.mjs} +3 -3
  249. package/dist/client/client.mjs +7577 -4979
  250. package/dist/client/{courseRegistration-7F65K5ZR.mjs → courseRegistration-AHFQHWIJ.mjs} +19 -16
  251. package/dist/client/{eventCalendar-GLSC5KTL.mjs → eventCalendar-LDXTV5R7.mjs} +10 -10
  252. package/dist/client/{eventCombined-ZHK4WKUR.mjs → eventCombined-A4JGTNJO.mjs} +10 -10
  253. package/dist/client/{eventDetails-E3PJYBIN.mjs → eventDetails-4YXTZ7EG.mjs} +10 -10
  254. package/dist/client/{eventListing-EMS3WC3E.mjs → eventListing-P72TPFFM.mjs} +10 -10
  255. package/dist/client/{eventRegistration-NZOTVNPI.mjs → eventRegistration-LSYJHGMT.mjs} +10 -10
  256. package/dist/client/{form-ETFZFATW.mjs → form-AOPYOKOW.mjs} +10 -7
  257. package/dist/client/{headerSection-4LBP7ULT.mjs → headerSection-5TFYDFVQ.mjs} +3 -3
  258. package/dist/client/hooks.mjs +1119 -327
  259. package/dist/client/{locationMap-5M655YSJ.mjs → locationMap-QSZ3ZVAZ.mjs} +3 -3
  260. package/dist/client/{newsletterForm-QOUYW44O.mjs → newsletterForm-KTRHZY52.mjs} +3 -3
  261. package/dist/client/{productDetail-O4DOCWQG.mjs → productDetail-N4E775RG.mjs} +8 -8
  262. package/dist/client/{productList-A5RO5WIS.mjs → productList-UGUQ2S45.mjs} +8 -8
  263. package/dist/client/rendering/client.mjs +7262 -2775
  264. package/dist/client/rendering/islands.mjs +19 -19
  265. package/dist/client/rendering.mjs +6964 -4587
  266. package/dist/client/{shop-L4MZH4I2.mjs → shop-VHSZEEQ2.mjs} +8 -8
  267. package/dist/preview-next/before-render.mjs +18 -1
  268. package/dist/preview-next/client/runtime.mjs +6 -6
  269. package/dist/preview-next/editor-chrome.css +10 -0
  270. package/dist/preview-next/middleware.mjs +18 -1
  271. package/dist/preview-next/tailwind-sources.css +1 -0
  272. package/dist/sdk-runtime-WHPJEF5G.mjs +8 -0
  273. package/dist/server/components.mjs +2736 -1316
  274. package/dist/server/config-template-validation.mjs +221 -15
  275. package/dist/server/config-validation.mjs +1346 -550
  276. package/dist/server/config.mjs +1346 -550
  277. package/dist/server/data.mjs +1118 -326
  278. package/dist/server/index.mjs +514 -251
  279. package/dist/server/next.mjs +4446 -2444
  280. package/dist/server/page-converter.mjs +631 -155
  281. package/dist/server/prebuild.mjs +1 -1
  282. package/dist/server/rendering/server.mjs +2743 -1323
  283. package/dist/server/rendering.mjs +2764 -1328
  284. package/dist/server/routing.mjs +1860 -590
  285. package/dist/server/server.mjs +1622 -575
  286. package/dist/server/theme-bridge.mjs +3151 -131
  287. package/dist/server/theme.mjs +10 -1
  288. package/dist/styles/index.css +488 -48
  289. package/package.json +2 -1
  290. package/dist/SdkPreviewModeRuntime-KLPX47SE.mjs +0 -8
  291. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/DiscountCodeSection.d.ts +0 -7
  292. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +0 -4
  293. package/dist/client/chunk-OJPZEZU2.mjs +0 -31
  294. package/dist/client/chunk-RTZ3JKKX.mjs +0 -178
  295. package/dist/sdk-runtime-6UT2S7KZ.mjs +0 -8
@@ -30,6 +30,28 @@ export type PublicEventLoaderParams = {
30
30
  export type PublicEventScheduleScope = "any" | "recurring" | "oneOff";
31
31
  export type PublicEventSurfaceScope = "all" | "regularClassSchedule" | "specialDatedEvents" | "custom";
32
32
  export type PublicEventDetailsLoaderParams = Omit<PublicEventLoaderParams, "detailLevel" | "readProfile">;
33
+ type PublicDiscountContext = {
34
+ type: "event";
35
+ eventSeriesId: string;
36
+ eventCategoryId: string | null;
37
+ ticketsCount?: number;
38
+ } | {
39
+ type: "appointment";
40
+ serviceId: string;
41
+ } | {
42
+ type: "course";
43
+ courseId: string;
44
+ } | {
45
+ type: "pass";
46
+ passId: string;
47
+ } | {
48
+ type: "membership";
49
+ membershipId: string;
50
+ } | {
51
+ type: "product";
52
+ productId: string;
53
+ productCategoryId: string | null;
54
+ };
33
55
  export type PublicExperienceAPIEndpoints = {
34
56
  getPublicBookingCalendarFeedIcs: APIEndpoint<never, {
35
57
  siteId: string;
@@ -483,11 +505,14 @@ export type PublicExperienceAPIEndpoints = {
483
505
  }, {
484
506
  siteId: string;
485
507
  }, {
486
- checkoutUrl: string | null;
487
- sessionId: string | null;
488
- bypassed: boolean;
508
+ type: "redirect";
509
+ checkoutUrl: string;
510
+ sessionId: string;
511
+ } | {
512
+ type: "bypassed";
513
+ sessionId: null;
489
514
  } | {
490
- warning: "duplicate_membership";
515
+ type: "duplicate_membership_warning";
491
516
  message: string;
492
517
  existingMembership: {
493
518
  id: string;
@@ -559,28 +584,7 @@ export type PublicExperienceAPIEndpoints = {
559
584
  }>;
560
585
  getDiscountsAvailable: APIEndpoint<{
561
586
  subtotalCents?: number;
562
- context: {
563
- type: "event";
564
- eventSeriesId: string;
565
- eventCategoryId: string | null;
566
- ticketsCount?: number;
567
- } | {
568
- type: "appointment";
569
- serviceId: string;
570
- } | {
571
- type: "course";
572
- courseId: string;
573
- } | {
574
- type: "pass";
575
- passId: string;
576
- } | {
577
- type: "membership";
578
- membershipId: string;
579
- } | {
580
- type: "product";
581
- productId: string;
582
- productCategoryId: string | null;
583
- };
587
+ context: PublicDiscountContext;
584
588
  }, {
585
589
  siteId: string;
586
590
  }, {
@@ -588,6 +592,30 @@ export type PublicExperienceAPIEndpoints = {
588
592
  manualCodeEntryAllowed: boolean;
589
593
  autoAppliedDiscount: AutoAppliedDiscountPreview | null;
590
594
  }>;
595
+ applyDiscountCode: APIEndpoint<{
596
+ discountCode: string;
597
+ customerEmail: string;
598
+ lines: Array<{
599
+ context: PublicDiscountContext;
600
+ subtotalCents: number;
601
+ currency: string;
602
+ }>;
603
+ }, {
604
+ siteId: string;
605
+ }, {
606
+ type: "applied";
607
+ code: string;
608
+ publicLabel: string;
609
+ description: string | null;
610
+ discountCents: number;
611
+ subtotalCents: number;
612
+ totalAfterDiscountCents: number;
613
+ currency: string;
614
+ } | {
615
+ type: "rejected";
616
+ reason: "invalid_or_not_applicable" | "unavailable" | "unknown";
617
+ message: string;
618
+ }>;
591
619
  batchBlockLoaders: APIEndpoint<{
592
620
  requests: Array<{
593
621
  id: string;
@@ -854,3 +882,4 @@ export type PublicExperienceAPIEndpoints = {
854
882
  token: string;
855
883
  }, string>;
856
884
  };
885
+ export {};
@@ -2,7 +2,7 @@ import type { SupabaseClient } from "@supabase/supabase-js";
2
2
  import type { AuthHeaders } from "./token";
3
3
  import type * as ApiTypes from "./types";
4
4
  import type { ApiErrorCode, ApiResult } from "./common/envelope";
5
- export type { APICallParams, APICallParamsStrict, APIEndpoints, GetEndpoint, ApiAuthRequirement, ApiResponseKind, HTTPMethod, } from "./types";
5
+ export type { APICallParamsStrict, APIEndpoints, GetEndpoint, ApiAuthRequirement, ApiResponseKind, HTTPMethod, } from "./types";
6
6
  /**
7
7
  * Set the SDK version to be included in API request headers
8
8
  * Called by the SDK during initialization
@@ -12,22 +12,14 @@ export declare function setSdkVersion(version: string): void;
12
12
  * Get the currently set SDK version
13
13
  */
14
14
  export declare function getSdkVersion(): string | undefined;
15
- type AnyApiCallParams<E extends keyof ApiTypes.APIEndpoints> = ApiTypes.APICallParams<E> | ApiTypes.APICallParamsStrict<E>;
15
+ type ApiCallParams<E extends keyof ApiTypes.APIEndpoints> = ApiTypes.APICallParamsStrict<E>;
16
16
  type EndpointResponse<E extends keyof ApiTypes.APIEndpoints> = ApiTypes.APIEndpoints[E]['response'];
17
17
  type ApiResponseFor<E extends keyof ApiTypes.APIEndpoints> = EndpointResponse<E> extends undefined ? void : NonNullable<EndpointResponse<E>>;
18
18
  /**
19
19
  * API client that returns typed envelope responses.
20
20
  * Consumers must use isApiSuccess/isApiError type guards or unwrapResponse helper.
21
21
  */
22
- export type ApiClient = <E extends keyof ApiTypes.APIEndpoints>(params: AnyApiCallParams<E>) => Promise<ApiResult<ApiResponseFor<E>>>;
23
- /**
24
- * Opt-in strict client type for new code.
25
- *
26
- * Use this when you want the compiler to force `APICallParamsStrict` at call sites.
27
- * Existing clients (createInternalAPIClient, createBearerAPIClient, etc.) are still
28
- * runtime-compatible and can be annotated as ApiClientStrict.
29
- */
30
- export type ApiClientStrict = <E extends keyof ApiTypes.APIEndpoints>(params: ApiTypes.APICallParamsStrict<E>) => Promise<ApiResult<ApiResponseFor<E>>>;
22
+ export type ApiClient = <E extends keyof ApiTypes.APIEndpoints>(params: ApiCallParams<E>) => Promise<ApiResult<ApiResponseFor<E>>>;
31
23
  export interface ApiRequestErrorOptions {
32
24
  endpoint: keyof ApiTypes.APIEndpoints;
33
25
  status: number;
@@ -196,6 +196,7 @@ export declare const dashboardConfigSchema: z.ZodObject<{
196
196
  */
197
197
  export declare const fieldDefinitionInputSchema: z.ZodType<FieldDefinitionInput>;
198
198
  export declare const nodeDefinitionSchema: z.ZodType<NodeDefinition>;
199
+ export declare const loaderFallbackScalarSchema: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>;
199
200
  export declare const sdkCustomBlockInputSchema: z.ZodType<SdkCustomBlockInput>;
200
201
  export declare const sdkBlockFieldExtensionInputSchema: z.ZodType<SdkBlockFieldExtensionInput>;
201
202
  export declare const sdkBlockFieldExtensionsInputSchema: z.ZodType<SdkBlockFieldExtensionsInputMap>;
@@ -75,6 +75,9 @@ export interface SdkContentTypeTemplateConfig {
75
75
  export interface SdkContentTypeConfig {
76
76
  key: string;
77
77
  fields: unknown[];
78
+ ordering?: {
79
+ mode?: "default" | "manual";
80
+ };
78
81
  template?: SdkContentTypeTemplateConfig | null;
79
82
  }
80
83
  export interface SdkContentConfig {
@@ -370,7 +373,9 @@ export interface SdkPullSettings {
370
373
  export interface SdkPullSettingsResponse {
371
374
  settings: SdkPullSettings;
372
375
  warnings?: string[];
373
- meta: SdkPullMeta;
376
+ meta: SdkPullMeta & {
377
+ updatedAt: string | null;
378
+ };
374
379
  }
375
380
  export interface SdkPullFormField {
376
381
  id: string;
@@ -633,6 +638,7 @@ export interface SdkManagementEntry {
633
638
  createdAt: string;
634
639
  updatedAt: string;
635
640
  publishedAt: string | null;
641
+ manualOrder: number;
636
642
  }
637
643
  export type SdkManagementForm = SdkPullForm & {
638
644
  id: string;
@@ -134,6 +134,16 @@ export type SiteManagementAPIEndpoints = {
134
134
  entries: ContentEntrySummary[];
135
135
  contentType: SerializedContentTypeSummary;
136
136
  }>;
137
+ reorderContentEntries: APIEndpoint<{
138
+ orderedEntryIds: string[];
139
+ orderToken: string;
140
+ }, {
141
+ siteId: string;
142
+ type: string;
143
+ }, {
144
+ entries: ContentEntrySummary[];
145
+ orderToken: string;
146
+ }>;
137
147
  getContentTemplate: APIEndpoint<never, {
138
148
  siteId: string;
139
149
  type: string;
@@ -423,6 +423,7 @@ export type SitePlatformAPIEndpoints = {
423
423
  contentType: string;
424
424
  data: Record<string, unknown>;
425
425
  slug?: string;
426
+ manualOrder?: number;
426
427
  }, {
427
428
  siteId: string;
428
429
  }, SdkUpsertEntryResponse>;
@@ -5,7 +5,7 @@ import type { PageDesignEditorReadModel, PageDesignIntent, AppearancePresetId, B
5
5
  import type { ButtonPersonalityId } from '../../theme-core/src/buttons/index';
6
6
  import type { PaletteOverrides, PaletteVariantId } from '../../theme-core/src/palette/index';
7
7
  import type { APIEndpoint } from './apiEndpointTypes';
8
- import type { AnalyticsReportFilters, AnalyticsReportResponse } from './analytics';
8
+ import type { AnalyticsReportQuery, AnalyticsReportResponse } from './analytics';
9
9
  import type { CreateMediaAssetBody, MediaAssetResponse, MediaAssetFileFilterContract, MediaBulkDeleteResponse, MediaClassifyJobResponse, MediaJobSummaryResponse, MediaLabelSummary, MediaSettingsResponse } from './media';
10
10
  import type { MediaUsageCheckResponse } from './shared-contracts';
11
11
  import type { BlockWithContentResponse, BlockListItem, ContentEntryListStage, ListPublishedEntriesResponse, PageDraftRecord, PublishedBlockBaseline, PublishedContentEntryPreviewResponse, PublishedPostPreviewResponse, SdkBlockContent, SdkRuntimeContentByPathResponse, SdkTemplate, SiteBySlugResponse, ThemeGenerationTurn, ThemePreferencesRecord, ThemeRow } from './contentRuntime';
@@ -181,7 +181,7 @@ export type SiteRuntimeAPIEndpoints = {
181
181
  type: string;
182
182
  limit?: string;
183
183
  offset?: string;
184
- order?: 'published_at.asc' | 'published_at.desc' | 'title.asc' | 'title.desc' | 'updated_at.asc' | 'updated_at.desc';
184
+ order?: 'published_at.asc' | 'published_at.desc' | 'title.asc' | 'title.desc' | 'manual.asc' | 'updated_at.asc' | 'updated_at.desc';
185
185
  stage?: ContentEntryListStage;
186
186
  meta?: string;
187
187
  mode?: 'manual';
@@ -337,26 +337,24 @@ export type SiteRuntimeAPIEndpoints = {
337
337
  }>;
338
338
  }>;
339
339
  createInstagramZipUploadUrl: APIEndpoint<CreateInstagramZipUploadUrlRequest, never, CreateInstagramZipUploadUrlResponse>;
340
- getAnalyticsReport: APIEndpoint<AnalyticsReportFilters, {
341
- siteId: string;
342
- } & AnalyticsReportFilters, AnalyticsReportResponse>;
340
+ getAnalyticsReport: APIEndpoint<never, AnalyticsReportQuery, AnalyticsReportResponse>;
343
341
  createMediaAsset: APIEndpoint<CreateMediaAssetBody, undefined, MediaAssetResponse>;
344
- mediaList: APIEndpoint<{
342
+ mediaList: APIEndpoint<never, {
345
343
  siteId: string;
346
344
  q?: string;
347
345
  limit?: number;
348
346
  offset?: number;
349
347
  labels?: string;
350
348
  fileFilter?: MediaAssetFileFilterContract;
351
- }, never, ListMediaAssetsResult>;
352
- mediaProductFileList: APIEndpoint<{
349
+ }, ListMediaAssetsResult>;
350
+ mediaProductFileList: APIEndpoint<never, {
353
351
  siteId: string;
354
352
  q?: string;
355
353
  limit?: number;
356
354
  offset?: number;
357
355
  labels?: string;
358
356
  fileFilter?: MediaAssetFileFilterContract;
359
- }, never, ListMediaAssetsResult>;
357
+ }, ListMediaAssetsResult>;
360
358
  mediaGet: APIEndpoint<never, {
361
359
  assetId: string;
362
360
  }, MediaAssetWithLabels>;
@@ -544,17 +542,15 @@ export type SiteRuntimeAPIEndpoints = {
544
542
  siteId: string;
545
543
  pageId: string;
546
544
  }, ApplyPageDesignEditorActionResponse>;
547
- getContentByPath: APIEndpoint<{
545
+ getContentByPath: APIEndpoint<never, {
546
+ siteId: string;
548
547
  path: string;
549
548
  preview?: boolean;
550
- }, {
551
- siteId: string;
552
549
  }, SdkRuntimeContentByPathResponse>;
553
- getPageByPath: APIEndpoint<{
550
+ getPageByPath: APIEndpoint<never, {
551
+ siteId: string;
554
552
  path: string;
555
553
  preview?: boolean;
556
- }, {
557
- siteId: string;
558
554
  }, SdkRuntimeContentByPathResponse>;
559
555
  initSiteContent: APIEndpoint<{}, {
560
556
  siteId: string;
@@ -563,9 +559,9 @@ export type SiteRuntimeAPIEndpoints = {
563
559
  created: number;
564
560
  totalBlocks: number;
565
561
  }>;
566
- getMediaLabels: APIEndpoint<{
562
+ getMediaLabels: APIEndpoint<never, {
567
563
  siteId: string;
568
- }, never, {
564
+ }, {
569
565
  items: MediaLabelSummary[];
570
566
  }>;
571
567
  getMediaSettings: APIEndpoint<never, {
@@ -643,11 +639,11 @@ export type SiteRuntimeAPIEndpoints = {
643
639
  summary?: MediaJobSummaryResponse;
644
640
  }>;
645
641
  }>;
646
- mediaJobsStatus: APIEndpoint<{
642
+ mediaJobsStatus: APIEndpoint<never, {
647
643
  siteId: string;
648
644
  limit?: number;
649
645
  statuses?: string;
650
- }, never, {
646
+ }, {
651
647
  jobs: MediaClassifyJobResponse[];
652
648
  }>;
653
649
  devToolsImpersonateAdmin: APIEndpoint<undefined, never, DevToolsImpersonationResponse>;
@@ -0,0 +1,79 @@
1
+ import { type AppointmentResourceId, type StaffMemberId } from "../../core/src/index";
2
+ import { type StaffOperationalCapability } from "./accessAdmin";
3
+ import { type SiteRole } from "./siteMembers";
4
+ export type { StaffOperationalCapability };
5
+ export type StaffScope = Readonly<{
6
+ kind: "none";
7
+ }> | Readonly<{
8
+ kind: "staff_setup_required";
9
+ reason: "missing_staff_member" | "missing_capabilities";
10
+ }> | Readonly<{
11
+ kind: "appointments";
12
+ staffMemberId: StaffMemberId;
13
+ }> | Readonly<{
14
+ kind: "event_ops_only";
15
+ staffMemberId: StaffMemberId;
16
+ }> | Readonly<{
17
+ kind: "hybrid";
18
+ staffMemberId: StaffMemberId;
19
+ }>;
20
+ export type StaffMembershipInput = Readonly<{
21
+ id?: string;
22
+ membershipRole: SiteRole | null;
23
+ linkedStaffMemberId: string | null;
24
+ staffCapabilities?: readonly StaffOperationalCapability[] | null;
25
+ }>;
26
+ export type StaffSiteHomeDestination = Readonly<{
27
+ kind: "staff_appointments";
28
+ }> | Readonly<{
29
+ kind: "ops_site_events";
30
+ }> | Readonly<{
31
+ kind: "dashboard_site_home";
32
+ }>;
33
+ export type SiteListingDestination = StaffSiteHomeDestination | Readonly<{
34
+ kind: "dashboard_site_open";
35
+ }>;
36
+ export type SiteListingNavigationPlan = Readonly<{
37
+ canUseDashboard: boolean;
38
+ primaryDestination: SiteListingDestination;
39
+ manageDestination: SiteListingDestination;
40
+ manageLabel: "Manage" | "Appointments" | "Ops";
41
+ }>;
42
+ export type OpsLandingDestination = Readonly<{
43
+ kind: "ops_site_events";
44
+ siteId: string;
45
+ }> | Readonly<{
46
+ kind: "ops_home";
47
+ }>;
48
+ export type LinkedAppointmentIdentity = Readonly<{
49
+ kind: "none";
50
+ }> | Readonly<{
51
+ kind: "linked";
52
+ staffMemberId: StaffMemberId;
53
+ resourceId: AppointmentResourceId;
54
+ }>;
55
+ export declare function roleAtLeast(role: SiteRole, minimum: SiteRole): boolean;
56
+ export declare function roleAtLeastOrNone(role: SiteRole | null | undefined, minimum: SiteRole): boolean;
57
+ export declare function appointmentResourceIdFromStaffMemberId(staffMemberId: StaffMemberId): AppointmentResourceId;
58
+ export declare function deriveStaffScope(input: StaffMembershipInput): StaffScope;
59
+ export declare function isStaffScoped(scope: StaffScope): boolean;
60
+ export declare function isTeamMemberScope(scope: StaffScope): boolean;
61
+ export declare function hasAppointmentStaffAccess(scope: StaffScope): boolean;
62
+ export declare function hasEventOpsAccess(scope: StaffScope): boolean;
63
+ export declare function getLinkedStaffMemberId(scope: StaffScope): StaffMemberId | null;
64
+ export declare function getOwnAppointmentResourceId(scope: StaffScope): AppointmentResourceId | null;
65
+ export declare function canAccessOwnAppointmentResource(scope: StaffScope, resourceId: string | AppointmentResourceId): boolean;
66
+ export declare function deriveLinkedAppointmentIdentity(input: Readonly<{
67
+ membershipRole: SiteRole | null;
68
+ linkedStaffMemberId: string | null;
69
+ }>): LinkedAppointmentIdentity;
70
+ export declare function getIdentityStaffMemberId(identity: LinkedAppointmentIdentity): StaffMemberId | null;
71
+ export declare function getIdentityStaffMemberIdValue(identity: LinkedAppointmentIdentity): string | null;
72
+ export declare function getIdentityAppointmentResourceId(identity: LinkedAppointmentIdentity): AppointmentResourceId | null;
73
+ export declare function getIdentityAppointmentResourceIdValue(identity: LinkedAppointmentIdentity): string | null;
74
+ export declare function isLinkedAppointmentResource(identity: LinkedAppointmentIdentity, resourceId: AppointmentResourceId): boolean;
75
+ export declare function deriveStaffSiteHomeDestination(staffScope: StaffScope): StaffSiteHomeDestination;
76
+ export declare function isEventOpsOnlyUser(sites: readonly StaffMembershipInput[]): boolean;
77
+ export declare function deriveSiteListingNavigationPlan(site: StaffMembershipInput): SiteListingNavigationPlan;
78
+ export declare function shouldRedirectStaffScopeToOps(staffScope: StaffScope): boolean;
79
+ export declare function deriveOpsLandingDestination(sites: readonly StaffMembershipInput[]): OpsLandingDestination;
@@ -1,9 +1,12 @@
1
1
  import type { CamelizeKeys, DbDatabase, DbRow } from "../../db/src/index";
2
+ import type { APIEndpoint } from "./apiEndpointTypes";
2
3
  export type { AccessPolicyContract, AccessPolicyTag, CreateMediaAssetBody, EntitledCustomerAccessScopeContract, FileKindContract, FileKindTag, FileUseContract, FileUseTag, ImageFileFormat, MediaAssetResponse, MediaAssetFileFilterContract, MediaBulkDeleteAssetFailure, MediaBulkDeleteResponse, MediaClassifyJobResponse, MediaJobSummaryResponse, MediaLabelSummary, MediaSettingsResponse, RenderableFileKindTag, StorageClass, UploadIntentContract, UploadIntentTag, } from "./media";
3
4
  export type { AnalyticsPreset, AnalyticsReferrer, AnalyticsReportFilters, AnalyticsReportQuery, AnalyticsReportResponse, AnalyticsSeriesPoint, AnalyticsTopPage, AnalyticsTotals, } from "./analytics";
4
5
  export type { AIChatMessage, AiBriefTurn, JsonPrimitive, JsonValue, MediaUsageCheckItem, MediaUsageCheckResponse, MediaUsageLocation, } from "./shared-contracts";
5
6
  export type * from "./accessAdmin";
6
- export { STAFF_OPERATIONAL_CAPABILITIES } from "./accessAdmin";
7
+ export { STAFF_OPERATIONAL_CAPABILITIES, getDefaultStaffCapabilities, } from "./accessAdmin";
8
+ export type * from "./staffAccess";
9
+ export { appointmentResourceIdFromStaffMemberId, canAccessOwnAppointmentResource, deriveLinkedAppointmentIdentity, deriveOpsLandingDestination, deriveSiteListingNavigationPlan, deriveStaffScope, deriveStaffSiteHomeDestination, getIdentityAppointmentResourceId, getIdentityAppointmentResourceIdValue, getIdentityStaffMemberId, getIdentityStaffMemberIdValue, getLinkedStaffMemberId, getOwnAppointmentResourceId, hasAppointmentStaffAccess, hasEventOpsAccess, isEventOpsOnlyUser, isLinkedAppointmentResource, isStaffScoped, isTeamMemberScope, roleAtLeast, roleAtLeastOrNone, shouldRedirectStaffScopeToOps, } from "./staffAccess";
7
10
  export type * from "./aiEndpoints";
8
11
  export type * from "./apiEndpointTypes";
9
12
  export type * from "./bookingAdjustments";
@@ -119,48 +122,32 @@ type EndpointPath<E extends keyof APIEndpoints> = E extends keyof typeof API_END
119
122
  type PathParams<E extends keyof APIEndpoints> = ExtractPathParamNames<EndpointPath<E>> extends infer TParam ? [TParam] extends [never] ? {} : {
120
123
  [K in Extract<TParam, string>]: string;
121
124
  } : {};
122
- type QueryParams<E extends keyof APIEndpoints> = IsNonEmptyQuery<APIEndpoints[E]["query"]> extends false ? {} : QueryToStringParams<APIEndpoints[E]["query"]>;
125
+ type EndpointQuery<E extends keyof APIEndpoints> = APIEndpoints[E] extends APIEndpoint<unknown, infer TQuery, unknown> ? TQuery : never;
126
+ type QueryParams<E extends keyof APIEndpoints> = IsNonEmptyQuery<EndpointQuery<E>> extends false ? {} : QueryToStringParams<EndpointQuery<E>>;
123
127
  type HasPathParams<E extends keyof APIEndpoints> = keyof PathParams<E> extends never ? false : true;
124
128
  type ParamsPart<E extends keyof APIEndpoints> = HasPathParams<E> extends true ? {
125
129
  params: PathParams<E> & QueryParams<E>;
126
- } : IsNonEmptyQuery<APIEndpoints[E]["query"]> extends false ? {
130
+ } : IsNonEmptyQuery<EndpointQuery<E>> extends false ? {
127
131
  params?: Record<string, string>;
128
- } : HasRequiredKeys<APIEndpoints[E]["query"]> extends true ? {
132
+ } : HasRequiredKeys<EndpointQuery<E>> extends true ? {
129
133
  params: QueryParams<E>;
130
134
  } : {
131
135
  params?: QueryParams<E>;
132
136
  };
133
- export type APICallParams<E extends keyof APIEndpoints> = APIEndpoints[E] extends {
134
- method: "GET";
135
- } ? {
136
- endpoint: E;
137
- body?: APIEndpoints[E]["body"];
138
- options?: RequestInit;
139
- } & ParamsPart<E> : APIEndpoints[E] extends {
140
- method: "POST" | "PUT" | "PATCH";
141
- } ? {
142
- endpoint: E;
143
- body: APIEndpoints[E]["body"];
144
- options?: RequestInit;
145
- } & ParamsPart<E> : {
146
- endpoint: E;
147
- body?: APIEndpoints[E]["body"];
148
- options?: RequestInit;
149
- } & ParamsPart<E>;
150
137
  type EndpointMethod<E extends keyof APIEndpoints> = E extends keyof typeof API_ENDPOINTS ? (typeof API_ENDPOINTS)[E]["method"] : HTTPMethod;
151
- type EndpointBody<E extends keyof APIEndpoints> = APIEndpoints[E]["body"];
138
+ type EndpointBody<E extends keyof APIEndpoints> = APIEndpoints[E] extends APIEndpoint<infer TBody, unknown, unknown> ? TBody : never;
152
139
  type StrictBodyPart<E extends keyof APIEndpoints> = EndpointMethod<E> extends "GET" ? {
153
140
  body?: never;
154
141
  } : [EndpointBody<E>] extends [never | undefined] ? {
155
142
  body?: never;
143
+ } : undefined extends EndpointBody<E> ? {
144
+ body?: Exclude<EndpointBody<E>, undefined>;
156
145
  } : {
157
- body: NonNullable<EndpointBody<E>>;
146
+ body: EndpointBody<E>;
158
147
  };
159
148
  /**
160
- * Strict variant of APICallParams that uses endpoint metadata (method + body type)
161
- * to enforce whether `body` is required/forbidden.
162
- *
163
- * Intended for new code. Existing code can continue using APICallParams until migrated.
149
+ * API call parameters derived from endpoint metadata.
150
+ * Enforces whether `body` is required, optional, or forbidden for each endpoint.
164
151
  */
165
152
  export type APICallParamsStrict<E extends keyof APIEndpoints> = {
166
153
  endpoint: E;
@@ -0,0 +1,21 @@
1
+ import type { RiverbankSiteConfig, SdkWorkflowConfig } from "../sdkContracts";
2
+ export type EntryDraftUpdatedWorkflowTriggerSource = Readonly<{
3
+ type: "entry.draft.updated";
4
+ changedFields: readonly string[];
5
+ dedupeKey: string;
6
+ }>;
7
+ export type WorkflowTriggerSource = Readonly<{
8
+ type: "manual";
9
+ }> | EntryDraftUpdatedWorkflowTriggerSource;
10
+ export type AutomaticWorkflowCandidate = Readonly<{
11
+ workflow: SdkWorkflowConfig;
12
+ trigger: EntryDraftUpdatedWorkflowTriggerSource;
13
+ }>;
14
+ export type PlanEntryDraftUpdatedWorkflowTriggersInput = Readonly<{
15
+ sdkConfig: RiverbankSiteConfig | null | undefined;
16
+ contentType: string;
17
+ previousDraftContent: Record<string, unknown> | null | undefined;
18
+ nextDraftContent: Record<string, unknown>;
19
+ knownFieldIds?: readonly string[];
20
+ }>;
21
+ export declare function planEntryDraftUpdatedWorkflowTriggers(input: PlanEntryDraftUpdatedWorkflowTriggersInput): readonly AutomaticWorkflowCandidate[];
@@ -170,6 +170,12 @@ export type RepeaterFieldConfig = BaseFieldConfig & ({
170
170
  * Useful for complex constraints that aren't expressible via field-level config.
171
171
  */
172
172
  validation?: ZodTypeAny;
173
+ /** Whether compact row summaries should be rendered. Defaults to true. */
174
+ showSummary?: boolean;
175
+ /** Optional ordered field IDs to use for compact row summaries. */
176
+ summaryFields?: string[];
177
+ /** Optional positive max character count for compact row summaries. */
178
+ summaryMaxChars?: number;
173
179
  } & ({
174
180
  type: 'repeater';
175
181
  itemLabel?: string;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Repeater list - DnD context wrapper for sortable items
3
3
  */
4
- import type { ReactNode } from 'react';
4
+ import { type ReactNode, type RefObject } from 'react';
5
5
  import type { RepeaterFieldConfig, FieldConfig } from '../../../fields/types';
6
6
  import type { FormBackend } from '../../../backend/types';
7
7
  export interface RepeaterListProps {
@@ -15,5 +15,6 @@ export interface RepeaterListProps {
15
15
  onMove: (from: number, to: number) => void;
16
16
  onRemove: (index: number) => void;
17
17
  renderChild: (field: FieldConfig, path: string) => ReactNode;
18
+ focusFallbackRef?: RefObject<HTMLButtonElement | null>;
18
19
  }
19
- export declare function RepeaterList({ config, backend, basePath, items, minItems, onMove, onRemove, renderChild, }: RepeaterListProps): ReactNode;
20
+ export declare function RepeaterList({ config, backend, basePath, items, minItems, onMove, onRemove, renderChild, focusFallbackRef, }: RepeaterListProps): ReactNode;
@@ -4,9 +4,10 @@
4
4
  *
5
5
  * Routes non-content item fields into a settings modal in the row header.
6
6
  */
7
- import type { ReactNode } from 'react';
7
+ import type { ReactNode, Ref } from 'react';
8
8
  import type { RepeaterFieldConfig, FieldConfig } from '../../../fields/types';
9
9
  import type { FormBackend } from '../../../backend/types';
10
+ import type { RepeaterRowActionFocusTarget } from './RepeaterRowActions';
10
11
  export interface RepeaterRowProps {
11
12
  id: string;
12
13
  index: number;
@@ -15,9 +16,11 @@ export interface RepeaterRowProps {
15
16
  basePath: string;
16
17
  itemsLength: number;
17
18
  minItems: number;
18
- onMove: (from: number, to: number) => void;
19
+ containerWidth: number;
20
+ onMove: (from: number, to: number, focusTarget: RepeaterRowActionFocusTarget) => void;
19
21
  onRemove: (index: number) => void;
20
22
  renderChild: (field: FieldConfig, path: string) => ReactNode;
21
23
  canDrag: boolean;
24
+ actionControlRefs?: Partial<Record<RepeaterRowActionFocusTarget, Ref<HTMLButtonElement>>>;
22
25
  }
23
- export declare function RepeaterRow({ id, index, config, backend, basePath, itemsLength, minItems, onMove, onRemove, renderChild, canDrag, }: RepeaterRowProps): ReactNode;
26
+ export declare function RepeaterRow({ id, index, config, backend, basePath, itemsLength, minItems, containerWidth, onMove, onRemove, renderChild, canDrag, actionControlRefs, }: RepeaterRowProps): ReactNode;
@@ -1,16 +1,21 @@
1
1
  /**
2
- * Repeater row action buttons - move up/down, delete
2
+ * Repeater row action controls - direct reorder buttons plus compact menu.
3
3
  */
4
- import type { ReactNode } from 'react';
4
+ import type { ReactNode, Ref } from 'react';
5
5
  export interface RepeaterRowActionsProps {
6
6
  index: number;
7
7
  itemsLength: number;
8
8
  minItems: number;
9
+ containerWidth?: number;
10
+ actionPresentation?: 'auto' | 'wide' | 'compact';
11
+ itemLabel: string;
9
12
  onMoveUp: () => void;
10
13
  onMoveDown: () => void;
11
14
  onRemove: () => void;
15
+ actionControlRefs?: Partial<Record<RepeaterRowActionFocusTarget, Ref<HTMLButtonElement>>>;
12
16
  showReorderActions?: boolean;
13
17
  disableMoveUp?: boolean;
14
18
  disableMoveDown?: boolean;
15
19
  }
16
- export declare function RepeaterRowActions({ index, itemsLength, minItems, onMoveUp, onMoveDown, onRemove, showReorderActions, disableMoveUp, disableMoveDown, }: RepeaterRowActionsProps): ReactNode;
20
+ export type RepeaterRowActionFocusTarget = 'moveEarlier' | 'moveLater' | 'menu';
21
+ export declare function RepeaterRowActions({ index, itemsLength, minItems, containerWidth, actionPresentation, itemLabel, onMoveUp, onMoveDown, onRemove, actionControlRefs, showReorderActions, disableMoveUp, disableMoveDown, }: RepeaterRowActionsProps): ReactNode;
@@ -1,6 +1,6 @@
1
1
  export { useRepeaterVisibility } from './useRepeaterVisibility';
2
2
  export { useRepeaterRowErrors, type RowFieldError } from './useRepeaterRowErrors';
3
- export { useResolvedItemLabel } from './useResolvedItemLabel';
3
+ export { useResolvedItemLabel, useResolvedRepeaterItemLabel, type ResolvedRepeaterItemLabel, } from './useResolvedItemLabel';
4
4
  export { useLayoutGridCapacity } from './useLayoutGridCapacity';
5
5
  export { useLinearRepeaterDnd, type LinearRepeaterSortingStrategyKind } from './useLinearRepeaterDnd';
6
6
  export { useRepeaterPointerDragCapability } from './useRepeaterPointerDragCapability';
@@ -10,6 +10,7 @@ interface UseLinearRepeaterDndInput {
10
10
  }
11
11
  export interface UseLinearRepeaterDndResult {
12
12
  containerRef: ReturnType<typeof useRepeaterPointerDragCapability>['containerRef'];
13
+ containerWidth: ReturnType<typeof useRepeaterPointerDragCapability>['containerWidth'];
13
14
  breakpoint: ReturnType<typeof useRepeaterPointerDragCapability>['breakpoint'];
14
15
  pointerDragCapability: ReturnType<typeof useRepeaterPointerDragCapability>['pointerDragCapability'];
15
16
  canUsePointerDrag: boolean;
@@ -3,6 +3,7 @@ import { resolveRepeaterGridBreakpointForWidth } from '../../../../../blocks/src
3
3
  import { type RepeaterPointerDragCapability } from '../utils';
4
4
  export interface UseRepeaterPointerDragCapabilityResult {
5
5
  containerRef: RefObject<HTMLDivElement | null>;
6
+ containerWidth: number;
6
7
  breakpoint: ReturnType<typeof resolveRepeaterGridBreakpointForWidth>;
7
8
  pointerDragCapability: RepeaterPointerDragCapability;
8
9
  canUsePointerDrag: boolean;
@@ -1,5 +1,11 @@
1
1
  import type { RepeaterFieldConfig } from '../../../fields/types';
2
2
  import type { FormBackend } from '../../../backend/types';
3
+ import { type RepeaterLabelSource } from '../utils';
4
+ export type ResolvedRepeaterItemLabel = {
5
+ label: string;
6
+ sourceFieldId?: string;
7
+ labelSource: RepeaterLabelSource;
8
+ };
3
9
  /**
4
10
  * Resolves a display label for a repeater item.
5
11
  *
@@ -10,3 +16,4 @@ import type { FormBackend } from '../../../backend/types';
10
16
  * is returned.
11
17
  */
12
18
  export declare function useResolvedItemLabel(config: RepeaterFieldConfig, index: number, backend: FormBackend, basePath: string): string;
19
+ export declare function useResolvedRepeaterItemLabel(config: RepeaterFieldConfig, index: number, backend: FormBackend, basePath: string): ResolvedRepeaterItemLabel;
@@ -4,4 +4,5 @@
4
4
  */
5
5
  import type { RepeaterFieldConfig } from '../../../fields/types';
6
6
  import type { FormBackend } from '../../../backend/types';
7
+ export declare const DEFAULT_REPEATER_SUMMARY_MAX_CHARS = 96;
7
8
  export declare function buildSummary(field: RepeaterFieldConfig, index: number, backend: FormBackend, basePath: string): string;
@@ -1,8 +1,10 @@
1
1
  export { createDefaultItem } from './createDefaultItem';
2
2
  export { buildItemLabel } from './buildItemLabel';
3
- export { buildSummary } from './buildSummary';
3
+ export { buildSummary, DEFAULT_REPEATER_SUMMARY_MAX_CHARS, } from './buildSummary';
4
4
  export { getRepeaterItemFields } from './getRepeaterItemFields';
5
5
  export { getRepeaterItemFieldGroups } from './getRepeaterItemFieldGroups';
6
+ export { resolveRepeaterLabelSource, type RepeaterLabelSource, } from './repeaterLabelSource';
7
+ export { REPEATER_ROW_COMPACT_ACTIONS_WIDTH, isRepeaterRowActionDisabled, resolveRepeaterRowActionRenderPlan, type RepeaterRowActionAvailability, type RepeaterRowActionId, type RepeaterRowActionMenu, type RepeaterRowMenuAction, type RepeaterRowActionPresentation, type RepeaterRowActionRenderPlan, } from './repeaterRowActionsDomain';
6
8
  export { areLayoutGridCapacityContextsEqual } from './layoutGridCapacityContext';
7
9
  export { handleLinearRepeaterDragEnd, resolveLinearRepeaterMoveIntent, resolveRepeaterPointerDragCapability, type LinearRepeaterDragEndEvent, type LinearRepeaterMoveIntent, type RepeaterPointerDragCapability, } from './repeaterDndDomain';
8
10
  export { resolveRepeaterPresentation } from './repeaterPresentation';
@@ -5,7 +5,7 @@ export type RepeaterPointerDragCapability = {
5
5
  } | {
6
6
  kind: 'disabled';
7
7
  breakpoint: RepeaterGridBreakpoint;
8
- reason: 'insufficient-items' | 'small-breakpoint' | 'coarse-pointer';
8
+ reason: 'insufficient-items' | 'coarse-pointer';
9
9
  };
10
10
  export type LinearRepeaterMoveIntent = {
11
11
  kind: 'none';