@riverbankcms/sdk 0.77.0 → 0.78.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 (237) hide show
  1. package/README.md +69 -0
  2. package/dist/{PreviewEditorSidebar-XSX7QKHQ.mjs → PreviewEditorSidebar-RIKFQ72L.mjs} +4916 -4847
  3. package/dist/{PreviewEditorUI-YZNEZ3QD.mjs → PreviewEditorUI-XO7TUWKK.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +194 -184
  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/demoDashboardMutationSurfaces.d.ts +46 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  12. package/dist/_dts/api/src/index.d.ts +14 -2
  13. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +87 -0
  14. package/dist/_dts/api/src/navigation/dashboardDemoNav.d.ts +5 -0
  15. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +45 -0
  16. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +42 -0
  17. package/dist/_dts/api/src/navigation/dashboardTeamMemberNav.d.ts +24 -0
  18. package/dist/_dts/api/src/navigation/linkUrlType.d.ts +3 -0
  19. package/dist/_dts/api/src/navigation.d.ts +12 -0
  20. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +55 -26
  21. package/dist/_dts/api/src/staffAccess.d.ts +79 -0
  22. package/dist/_dts/api/src/types.d.ts +3 -1
  23. package/dist/_dts/api/src/workflows/automaticWorkflowTriggers.d.ts +21 -0
  24. package/dist/_dts/blocks/src/client/site-chrome.d.ts +4 -1
  25. package/dist/_dts/blocks/src/customBlockRegistry.d.ts +20 -1
  26. package/dist/_dts/blocks/src/index.d.ts +3 -2
  27. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
  28. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
  29. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
  30. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
  31. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
  32. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -2
  33. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +294 -289
  34. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
  35. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +21 -21
  37. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
  38. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
  39. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
  40. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +2 -2
  41. package/dist/_dts/blocks/src/system/data/index.d.ts +5 -3
  42. package/dist/_dts/blocks/src/system/data/previewResolvedDataState.d.ts +45 -0
  43. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
  44. package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +5 -0
  45. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +5 -0
  46. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -29
  47. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +10 -0
  48. package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
  49. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +9 -0
  50. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +3 -2
  51. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  52. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  53. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +43 -8
  54. package/dist/_dts/blocks/src/system/runtime/components/multi-step/runtimeFormValidation.d.ts +28 -0
  55. package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +8 -7
  56. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCompactRow.d.ts +1 -4
  57. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -8
  59. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -9
  60. package/dist/_dts/blocks/src/system/runtime/nodes/shop-cart-discount-ui.d.ts +5 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +76 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout.state.d.ts +1 -4
  63. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce-store.d.ts +2 -0
  64. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.shared.d.ts +1 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/shop-discount-apply.state.d.ts +52 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +2 -4
  67. package/dist/_dts/blocks/src/system/runtime/nodes/useDiscountApply.d.ts +21 -0
  68. package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +54 -0
  69. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  70. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  71. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +4 -4
  72. package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
  73. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  74. package/dist/_dts/content-editor/src/contentTypeEditorContentState.d.ts +26 -0
  75. package/dist/_dts/content-editor/src/definitions/factory.d.ts +75 -0
  76. package/dist/_dts/content-editor/src/entryWorkflows.d.ts +2 -0
  77. package/dist/_dts/content-editor/src/footerBlocksEditorState.d.ts +76 -0
  78. package/dist/_dts/content-editor/src/index.d.ts +5 -0
  79. package/dist/_dts/content-editor/src/pageWorkflowContent.d.ts +29 -0
  80. package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
  81. package/dist/_dts/content-model/src/index.d.ts +1 -0
  82. package/dist/_dts/content-model/src/routeTemplate.d.ts +4 -0
  83. package/dist/_dts/content-model/src/templates/editorState.d.ts +25 -0
  84. package/dist/_dts/core/src/csv-cells.d.ts +10 -0
  85. package/dist/_dts/core/src/csv-date-filter.d.ts +27 -0
  86. package/dist/_dts/core/src/csv-escape.d.ts +1 -0
  87. package/dist/_dts/core/src/csv-filename.d.ts +18 -0
  88. package/dist/_dts/core/src/csv-render.d.ts +4 -0
  89. package/dist/_dts/core/src/csv-types.d.ts +116 -0
  90. package/dist/_dts/core/src/currency-format.d.ts +4 -0
  91. package/dist/_dts/core/src/demo-capability-policy.d.ts +29 -0
  92. package/dist/_dts/core/src/demo-claim-access.d.ts +14 -0
  93. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +11 -0
  94. package/dist/_dts/core/src/demo-runtime.d.ts +47 -0
  95. package/dist/_dts/core/src/duration.d.ts +14 -0
  96. package/dist/_dts/core/src/email-format.d.ts +10 -0
  97. package/dist/_dts/core/src/field-errors.d.ts +1 -0
  98. package/dist/_dts/core/src/form-submission-preview.d.ts +24 -0
  99. package/dist/_dts/core/src/index.d.ts +20 -0
  100. package/dist/_dts/core/src/number-input.d.ts +22 -0
  101. package/dist/_dts/core/src/public-url-validation.d.ts +12 -0
  102. package/dist/_dts/core/src/slug.d.ts +39 -0
  103. package/dist/_dts/core/src/string.d.ts +19 -0
  104. package/dist/_dts/core/src/uuid.d.ts +6 -0
  105. package/dist/_dts/db/src/schemas/forms.d.ts +50 -50
  106. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +34 -0
  107. package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +24 -0
  108. package/dist/_dts/media-core/src/canonicalCropReview.d.ts +66 -0
  109. package/dist/_dts/media-core/src/classifyAllPlanning.d.ts +48 -0
  110. package/dist/_dts/media-core/src/filename.d.ts +1 -0
  111. package/dist/_dts/media-core/src/index.d.ts +10 -0
  112. package/dist/_dts/media-core/src/mediaAssetUsageStatus.d.ts +47 -0
  113. package/dist/_dts/media-core/src/mediaSettingsState.d.ts +3 -0
  114. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +38 -0
  115. package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +28 -0
  116. package/dist/_dts/media-core/src/videoAssetRepair.d.ts +38 -0
  117. package/dist/_dts/media-editor/src/mediaEditorDebug.d.ts +1 -0
  118. package/dist/_dts/path-utils/src/index.d.ts +8 -0
  119. package/dist/_dts/path-utils/src/redirectPaths.d.ts +26 -0
  120. package/dist/_dts/path-utils/src/safeAppPath.d.ts +26 -0
  121. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +2 -1
  122. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -0
  123. package/dist/_dts/preview-next/src/client/preview/previewDocumentFrame.d.ts +31 -0
  124. package/dist/_dts/sdk/src/client/error.d.ts +3 -0
  125. package/dist/_dts/sdk/src/client/index.d.ts +2 -2
  126. package/dist/_dts/sdk/src/client/types.d.ts +37 -19
  127. package/dist/_dts/sdk/src/contracts/theme.d.ts +1 -1
  128. package/dist/_dts/sdk/src/index.d.ts +2 -2
  129. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +16 -16
  130. package/dist/_dts/sdk/src/next/content-load-failure.d.ts +51 -0
  131. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  132. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  133. package/dist/_dts/sdk/src/portal/redirects.d.ts +1 -1
  134. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -2
  135. package/dist/_dts/sdk/src/routing/index.d.ts +3 -2
  136. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +71 -6
  137. package/dist/_dts/sdk/src/version.d.ts +1 -1
  138. package/dist/_dts/site-commands/src/commands.d.ts +12 -12
  139. package/dist/_dts/site-commands/src/index.d.ts +1 -0
  140. package/dist/_dts/site-commands/src/pagePaths.d.ts +6 -0
  141. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +26 -0
  142. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -0
  143. package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +1 -0
  144. package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -0
  145. package/dist/_dts/theme-core/src/fonts/uploadFormat.d.ts +44 -0
  146. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  147. package/dist/_dts/theme-core/src/index.d.ts +3 -1
  148. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +63 -51
  149. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +6 -1
  150. package/dist/_dts/theme-core/src/navigation/types.d.ts +12 -0
  151. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  152. package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +7 -0
  153. package/dist/_dts/theme-core/src/schema.d.ts +90 -48
  154. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +214 -34
  155. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -2
  156. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +214 -34
  157. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -1
  158. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +35 -7
  159. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
  160. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +96 -34
  161. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +4 -2
  162. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -1
  163. package/dist/_dts/theme-core/src/site-styles/types.d.ts +27 -2
  164. package/dist/_dts/theme-core/src/siteChrome.d.ts +17 -34
  165. package/dist/_dts/theme-core/src/siteChromeOverlayClearance.d.ts +22 -0
  166. package/dist/_dts/theme-core/src/siteChromePlacement.d.ts +22 -0
  167. package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +32 -0
  168. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
  169. package/dist/{chunk-EAWHBECW.mjs → chunk-F7RTCZYN.mjs} +229 -50
  170. package/dist/{chunk-GSQX43EZ.mjs → chunk-NIDXI46P.mjs} +22 -41
  171. package/dist/{chunk-WLQBJN2Z.mjs → chunk-OECWLDHN.mjs} +4538 -1911
  172. package/dist/{chunk-VX7B5VAC.mjs → chunk-SVMMM2NA.mjs} +8 -0
  173. package/dist/{chunk-6SMUFTXD.mjs → chunk-SXOLGNMX.mjs} +1 -1
  174. package/dist/{chunk-ANKDYZ2E.mjs → chunk-TXDES5P2.mjs} +2 -2
  175. package/dist/cli/index.mjs +2036 -594
  176. package/dist/client/{accordion-RZMQSYLR.mjs → accordion-EVDEOUPR.mjs} +2 -2
  177. package/dist/client/{bookingForm-NF4ASVNV.mjs → bookingForm-DIHBLC64.mjs} +27 -30
  178. package/dist/client/bookings.mjs +3707 -259
  179. package/dist/client/{carousel-LDX47ZIK.mjs → carousel-FEBQHIWI.mjs} +3 -4
  180. package/dist/client/{cart-RGXDS5F4.mjs → cart-7CKSXAE4.mjs} +8 -8
  181. package/dist/client/{checkout-P7WWSNNY.mjs → checkout-WKYCANLV.mjs} +8 -8
  182. package/dist/client/{chunk-JNC7CGHX.mjs → chunk-2SAVKN2M.mjs} +2 -2
  183. package/dist/client/{chunk-TQ5MSPDX.mjs → chunk-36WJCERQ.mjs} +1 -1
  184. package/dist/client/{chunk-R56FQ3RR.mjs → chunk-65F47D7Y.mjs} +280 -71
  185. package/dist/client/{chunk-L3DNHIJX.mjs → chunk-GUK2FPXQ.mjs} +23 -45
  186. package/dist/client/{chunk-PMAIXMAB.mjs → chunk-IVNCUVAV.mjs} +26 -21
  187. package/dist/client/{chunk-II7O4XN3.mjs → chunk-OFMSCGNY.mjs} +2 -2
  188. package/dist/client/chunk-PD6NBCEY.mjs +66 -0
  189. package/dist/client/{chunk-GMVTOKYG.mjs → chunk-RV6FX7UH.mjs} +510 -64
  190. package/dist/client/{chunk-E2TDNXCL.mjs → chunk-RZDWX7QW.mjs} +2 -1
  191. package/dist/client/{chunk-M3L3KYYR.mjs → chunk-UDNSI5PY.mjs} +12 -0
  192. package/dist/client/{chunk-JEZECJ3W.mjs → chunk-VPPMNXCF.mjs} +129 -3
  193. package/dist/client/{chunk-UFSWADAO.mjs → chunk-YDSEG6GZ.mjs} +5 -66
  194. package/dist/client/client.mjs +8983 -6152
  195. package/dist/client/{courseRegistration-7F65K5ZR.mjs → courseRegistration-5QF2PHKM.mjs} +14 -11
  196. package/dist/client/{eventCalendar-GLSC5KTL.mjs → eventCalendar-4ZOSETDU.mjs} +9 -9
  197. package/dist/client/{eventCombined-ZHK4WKUR.mjs → eventCombined-WQGU7JUX.mjs} +9 -9
  198. package/dist/client/{eventDetails-E3PJYBIN.mjs → eventDetails-AYWVUJ5Y.mjs} +9 -9
  199. package/dist/client/{eventListing-EMS3WC3E.mjs → eventListing-NT7C6UT5.mjs} +9 -9
  200. package/dist/client/{eventRegistration-NZOTVNPI.mjs → eventRegistration-OH24F4ZJ.mjs} +9 -9
  201. package/dist/client/{form-ETFZFATW.mjs → form-7L42SRBB.mjs} +6 -6
  202. package/dist/client/{headerSection-4LBP7ULT.mjs → headerSection-OZRZNZ52.mjs} +3 -3
  203. package/dist/client/hooks.mjs +1388 -427
  204. package/dist/client/{locationMap-5M655YSJ.mjs → locationMap-ZBXRPQ7C.mjs} +2 -2
  205. package/dist/client/{newsletterForm-QOUYW44O.mjs → newsletterForm-SNAGFF2I.mjs} +3 -3
  206. package/dist/client/{productDetail-O4DOCWQG.mjs → productDetail-I46BOFGV.mjs} +8 -8
  207. package/dist/client/{productList-A5RO5WIS.mjs → productList-BOYHTYI6.mjs} +8 -8
  208. package/dist/client/rendering/client.mjs +7090 -2645
  209. package/dist/client/rendering/islands.mjs +19 -19
  210. package/dist/client/rendering.mjs +7395 -4767
  211. package/dist/client/{shop-L4MZH4I2.mjs → shop-XTXPZTKR.mjs} +8 -8
  212. package/dist/preview-next/before-render.mjs +8 -0
  213. package/dist/preview-next/client/runtime.mjs +5 -5
  214. package/dist/preview-next/editor-chrome.css +10 -0
  215. package/dist/preview-next/middleware.mjs +8 -0
  216. package/dist/{sdk-runtime-Q6MTR4KL.mjs → sdk-runtime-ZJLKC6DR.mjs} +6 -6
  217. package/dist/server/components.mjs +4175 -2480
  218. package/dist/server/config-validation.mjs +1619 -658
  219. package/dist/server/config.mjs +1619 -658
  220. package/dist/server/data.mjs +1388 -427
  221. package/dist/server/index.mjs +488 -246
  222. package/dist/server/next.mjs +5607 -3354
  223. package/dist/server/page-converter.mjs +912 -259
  224. package/dist/server/prebuild.mjs +1 -1
  225. package/dist/server/rendering/server.mjs +4176 -2481
  226. package/dist/server/rendering.mjs +4194 -2486
  227. package/dist/server/routing.mjs +2078 -639
  228. package/dist/server/server.mjs +1886 -685
  229. package/dist/server/theme-bridge.mjs +4441 -1300
  230. package/dist/server/theme.mjs +89 -12
  231. package/dist/styles/index.css +1576 -1083
  232. package/package.json +2 -1
  233. package/dist/SdkPreviewModeRuntime-5FS5E6BI.mjs +0 -8
  234. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/DiscountCodeSection.d.ts +0 -7
  235. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +0 -4
  236. package/dist/client/chunk-OJPZEZU2.mjs +0 -31
  237. package/dist/client/chunk-RTZ3JKKX.mjs +0 -178
@@ -364,13 +364,13 @@ export declare const formFieldSchema: z.ZodObject<{
364
364
  date: "date";
365
365
  time: "time";
366
366
  email: "email";
367
- url: "url";
368
- select: "select";
369
- textarea: "textarea";
370
367
  text: "text";
371
- tel: "tel";
372
- radio: "radio";
368
+ textarea: "textarea";
369
+ select: "select";
373
370
  checkbox: "checkbox";
371
+ radio: "radio";
372
+ url: "url";
373
+ tel: "tel";
374
374
  consent: "consent";
375
375
  }>;
376
376
  required: z.ZodDefault<z.ZodBoolean>;
@@ -425,13 +425,13 @@ declare const bookingQuestionScalarFieldSchema: z.ZodObject<{
425
425
  date: "date";
426
426
  time: "time";
427
427
  email: "email";
428
- url: "url";
429
- select: "select";
430
- textarea: "textarea";
431
428
  text: "text";
432
- tel: "tel";
433
- radio: "radio";
429
+ textarea: "textarea";
430
+ select: "select";
434
431
  checkbox: "checkbox";
432
+ radio: "radio";
433
+ url: "url";
434
+ tel: "tel";
435
435
  }>;
436
436
  }, z.core.$strict>;
437
437
  declare const bookingQuestionDocumentUploadFieldSchema: z.ZodObject<{
@@ -481,13 +481,13 @@ export declare const bookingQuestionFieldSchema: z.ZodDiscriminatedUnion<[z.ZodO
481
481
  date: "date";
482
482
  time: "time";
483
483
  email: "email";
484
- url: "url";
485
- select: "select";
486
- textarea: "textarea";
487
484
  text: "text";
488
- tel: "tel";
489
- radio: "radio";
485
+ textarea: "textarea";
486
+ select: "select";
490
487
  checkbox: "checkbox";
488
+ radio: "radio";
489
+ url: "url";
490
+ tel: "tel";
491
491
  }>;
492
492
  }, z.core.$strict>, z.ZodObject<{
493
493
  id: z.ZodString;
@@ -540,13 +540,13 @@ export declare const bookingQuestionsSectionSchema: z.ZodObject<{
540
540
  date: "date";
541
541
  time: "time";
542
542
  email: "email";
543
- url: "url";
544
- select: "select";
545
- textarea: "textarea";
546
543
  text: "text";
547
- tel: "tel";
548
- radio: "radio";
544
+ textarea: "textarea";
545
+ select: "select";
549
546
  checkbox: "checkbox";
547
+ radio: "radio";
548
+ url: "url";
549
+ tel: "tel";
550
550
  }>;
551
551
  }, z.core.$strict>, z.ZodObject<{
552
552
  id: z.ZodString;
@@ -602,13 +602,13 @@ export declare const bookingQuestionsDetailedSchemaSchema: z.ZodObject<{
602
602
  date: "date";
603
603
  time: "time";
604
604
  email: "email";
605
- url: "url";
606
- select: "select";
607
- textarea: "textarea";
608
605
  text: "text";
609
- tel: "tel";
610
- radio: "radio";
606
+ textarea: "textarea";
607
+ select: "select";
611
608
  checkbox: "checkbox";
609
+ radio: "radio";
610
+ url: "url";
611
+ tel: "tel";
612
612
  }>;
613
613
  }, z.core.$strict>, z.ZodObject<{
614
614
  id: z.ZodString;
@@ -646,13 +646,13 @@ export declare const formSchemaSchema: z.ZodObject<{
646
646
  date: "date";
647
647
  time: "time";
648
648
  email: "email";
649
- url: "url";
650
- select: "select";
651
- textarea: "textarea";
652
649
  text: "text";
653
- tel: "tel";
654
- radio: "radio";
650
+ textarea: "textarea";
651
+ select: "select";
655
652
  checkbox: "checkbox";
653
+ radio: "radio";
654
+ url: "url";
655
+ tel: "tel";
656
656
  consent: "consent";
657
657
  }>;
658
658
  required: z.ZodDefault<z.ZodBoolean>;
@@ -705,13 +705,13 @@ export declare const bookingQuestionsFlatSchemaSchema: z.ZodObject<{
705
705
  date: "date";
706
706
  time: "time";
707
707
  email: "email";
708
- url: "url";
709
- select: "select";
710
- textarea: "textarea";
711
708
  text: "text";
712
- tel: "tel";
713
- radio: "radio";
709
+ textarea: "textarea";
710
+ select: "select";
714
711
  checkbox: "checkbox";
712
+ radio: "radio";
713
+ url: "url";
714
+ tel: "tel";
715
715
  }>;
716
716
  }, z.core.$strict>, z.ZodObject<{
717
717
  id: z.ZodString;
@@ -763,13 +763,13 @@ export declare const bookingQuestionsStoredSchemaSchema: z.ZodUnion<readonly [z.
763
763
  date: "date";
764
764
  time: "time";
765
765
  email: "email";
766
- url: "url";
767
- select: "select";
768
- textarea: "textarea";
769
766
  text: "text";
770
- tel: "tel";
771
- radio: "radio";
767
+ textarea: "textarea";
768
+ select: "select";
772
769
  checkbox: "checkbox";
770
+ radio: "radio";
771
+ url: "url";
772
+ tel: "tel";
773
773
  }>;
774
774
  }, z.core.$strict>, z.ZodObject<{
775
775
  id: z.ZodString;
@@ -824,13 +824,13 @@ export declare const bookingQuestionsStoredSchemaSchema: z.ZodUnion<readonly [z.
824
824
  date: "date";
825
825
  time: "time";
826
826
  email: "email";
827
- url: "url";
828
- select: "select";
829
- textarea: "textarea";
830
827
  text: "text";
831
- tel: "tel";
832
- radio: "radio";
828
+ textarea: "textarea";
829
+ select: "select";
833
830
  checkbox: "checkbox";
831
+ radio: "radio";
832
+ url: "url";
833
+ tel: "tel";
834
834
  }>;
835
835
  }, z.core.$strict>, z.ZodObject<{
836
836
  id: z.ZodString;
@@ -900,13 +900,13 @@ export declare const createFormPayloadSchema: z.ZodObject<{
900
900
  date: "date";
901
901
  time: "time";
902
902
  email: "email";
903
- url: "url";
904
- select: "select";
905
- textarea: "textarea";
906
903
  text: "text";
907
- tel: "tel";
908
- radio: "radio";
904
+ textarea: "textarea";
905
+ select: "select";
909
906
  checkbox: "checkbox";
907
+ radio: "radio";
908
+ url: "url";
909
+ tel: "tel";
910
910
  consent: "consent";
911
911
  }>;
912
912
  required: z.ZodDefault<z.ZodBoolean>;
@@ -0,0 +1,34 @@
1
+ export type AssetsInUseStage = 'draft' | 'published';
2
+ export type AssetsInUseLocationLike = Readonly<{
3
+ kind: 'pageBlock';
4
+ pageDraftPath?: string | null;
5
+ pagePublishedPath?: string | null;
6
+ pageTitle?: string | null;
7
+ stage: AssetsInUseStage;
8
+ blockKind: string;
9
+ }> | Readonly<{
10
+ kind: 'contentEntry';
11
+ routeDraftPath?: string | null;
12
+ routePublishedPath?: string | null;
13
+ entryTitle: string;
14
+ stage: AssetsInUseStage;
15
+ }> | Readonly<{
16
+ kind: 'productFileDownload';
17
+ productTitle: string;
18
+ }>;
19
+ export type AssetsInUseItemLike = Readonly<{
20
+ usedCount: number;
21
+ }>;
22
+ export type AssetsInUseResponseLike<TItem extends AssetsInUseItemLike> = Readonly<{
23
+ items: readonly TItem[];
24
+ }>;
25
+ export type AssetsInUseSummary<TItem extends AssetsInUseItemLike> = Readonly<{
26
+ usedItems: readonly TItem[];
27
+ totalAssets: number;
28
+ totalLocations: number;
29
+ totalAssetLabel: 'item' | 'items';
30
+ totalLocationLabel: 'place' | 'places';
31
+ }>;
32
+ export declare function formatMediaUsageStage(stage: AssetsInUseStage): string;
33
+ export declare function mediaUsageLocationLabel(location: AssetsInUseLocationLike): string;
34
+ export declare function summarizeAssetsInUse<TItem extends AssetsInUseItemLike>(usage: AssetsInUseResponseLike<TItem> | null): AssetsInUseSummary<TItem>;
@@ -0,0 +1,24 @@
1
+ export type MediaUsageCheckItemWithCount = Readonly<{
2
+ usedCount: number;
3
+ }>;
4
+ export type MediaUsageCheckResponseWithCounts = Readonly<{
5
+ items: readonly MediaUsageCheckItemWithCount[];
6
+ }>;
7
+ export type BulkDeleteResultLike = Readonly<{
8
+ deleted: number;
9
+ failed: number;
10
+ }>;
11
+ export type BulkDeleteOptions = Readonly<{
12
+ deleteObjects?: boolean;
13
+ cascadeLabels?: boolean;
14
+ }>;
15
+ export declare const BULK_DELETE_IN_PROGRESS_MESSAGE = "Delete already in progress";
16
+ export type BulkDeleteCompletionToast = Readonly<{
17
+ kind: 'success';
18
+ message: string;
19
+ }> | Readonly<{
20
+ kind: 'error';
21
+ message: string;
22
+ }>;
23
+ export declare function hasMediaUsage(response: MediaUsageCheckResponseWithCounts): boolean;
24
+ export declare function planBulkDeleteCompletionToast(result: BulkDeleteResultLike): BulkDeleteCompletionToast;
@@ -0,0 +1,66 @@
1
+ export type UploadReviewTargetLike<TAsset> = Readonly<{
2
+ status: string;
3
+ asset?: TAsset | null;
4
+ }>;
5
+ export type CanonicalCropTarget<TAsset, TUpload> = Readonly<{
6
+ kind: 'upload';
7
+ upload: TUpload;
8
+ asset: TAsset;
9
+ }> | Readonly<{
10
+ kind: 'asset';
11
+ asset: TAsset;
12
+ }>;
13
+ type CanonicalCropDialogState<TAsset, TUpload> = Readonly<{
14
+ kind: 'closed';
15
+ }> | Readonly<{
16
+ kind: 'editing';
17
+ target: CanonicalCropTarget<TAsset, TUpload>;
18
+ }> | Readonly<{
19
+ kind: 'saving';
20
+ target: CanonicalCropTarget<TAsset, TUpload>;
21
+ }> | Readonly<{
22
+ kind: 'error';
23
+ target: CanonicalCropTarget<TAsset, TUpload>;
24
+ message: string;
25
+ }>;
26
+ export type CanonicalCropReviewState<TAsset, TUpload> = Readonly<{
27
+ reviewingIds: ReadonlySet<string>;
28
+ dialog: CanonicalCropDialogState<TAsset, TUpload>;
29
+ }>;
30
+ export type CanonicalCropDialogView<TAsset, TUpload> = Readonly<{
31
+ kind: 'closed';
32
+ asset: null;
33
+ error: null;
34
+ saving: false;
35
+ target: null;
36
+ }> | Readonly<{
37
+ kind: 'open';
38
+ asset: TAsset;
39
+ error: string | null;
40
+ saving: boolean;
41
+ target: CanonicalCropTarget<TAsset, TUpload>;
42
+ }>;
43
+ export type CanonicalCropReviewAction<TAsset, TUpload> = Readonly<{
44
+ type: 'mark-reviewing';
45
+ uploadId: string;
46
+ reviewing: boolean;
47
+ }> | Readonly<{
48
+ type: 'open-crop';
49
+ target: CanonicalCropTarget<TAsset, TUpload>;
50
+ }> | Readonly<{
51
+ type: 'close-crop';
52
+ }> | Readonly<{
53
+ type: 'submit-crop';
54
+ }> | Readonly<{
55
+ type: 'crop-failed';
56
+ message: string;
57
+ }> | Readonly<{
58
+ type: 'crop-completed';
59
+ }>;
60
+ export declare function createInitialCanonicalCropReviewState<TAsset, TUpload>(): CanonicalCropReviewState<TAsset, TUpload>;
61
+ export declare function isReviewReady<TAsset, TUpload extends UploadReviewTargetLike<TAsset>>(upload: TUpload): upload is TUpload & {
62
+ asset: TAsset;
63
+ };
64
+ export declare function canonicalCropReviewReducer<TAsset, TUpload>(state: CanonicalCropReviewState<TAsset, TUpload>, action: CanonicalCropReviewAction<TAsset, TUpload>): CanonicalCropReviewState<TAsset, TUpload>;
65
+ export declare function getCanonicalCropDialogView<TAsset, TUpload>(state: CanonicalCropReviewState<TAsset, TUpload>): CanonicalCropDialogView<TAsset, TUpload>;
66
+ export {};
@@ -0,0 +1,48 @@
1
+ export type MediaClassifyJobStatus = 'pending' | 'processing' | 'completed' | 'failed';
2
+ export type ClassifySummary = Readonly<{
3
+ processed: number;
4
+ skipped: number;
5
+ failures: number;
6
+ }>;
7
+ export declare const EMPTY_CLASSIFY_SUMMARY: ClassifySummary;
8
+ export type ClassifyJobState = Readonly<{
9
+ id: string;
10
+ status: MediaClassifyJobStatus;
11
+ summary: ClassifySummary;
12
+ completed: boolean;
13
+ }>;
14
+ export type ClassifyRunJobLike = Readonly<{
15
+ id: string;
16
+ status: MediaClassifyJobStatus;
17
+ }>;
18
+ export type ClassifyRunPayloadLike = Readonly<{
19
+ job?: ClassifyRunJobLike | null;
20
+ summary?: ClassifySummary | null;
21
+ completed?: boolean;
22
+ }>;
23
+ export type ClassifyWorkflowResult = Readonly<{
24
+ kind: 'nothingToClassify';
25
+ reason: string;
26
+ }> | Readonly<{
27
+ kind: 'completed';
28
+ summary: ClassifySummary;
29
+ job: ClassifyJobState;
30
+ }>;
31
+ export type ClassifyCompletionToast = Readonly<{
32
+ kind: 'none';
33
+ }> | Readonly<{
34
+ kind: 'success';
35
+ message: string;
36
+ }> | Readonly<{
37
+ kind: 'warning';
38
+ message: string;
39
+ }> | Readonly<{
40
+ kind: 'info';
41
+ message: string;
42
+ }>;
43
+ export declare function normalizeClassifySummary(summary: ClassifySummary | null | undefined): ClassifySummary;
44
+ export declare function createCompletedClassifyResult(input: {
45
+ fallbackJobId: string;
46
+ runPayload: ClassifyRunPayloadLike;
47
+ }): ClassifyWorkflowResult;
48
+ export declare function planClassifyCompletionToast(result: ClassifyWorkflowResult): ClassifyCompletionToast;
@@ -0,0 +1 @@
1
+ export declare function filenameExtension(filename: string): string | null;
@@ -14,7 +14,16 @@ export * from './fileDownloadResolution';
14
14
  export * from './fileAssetDeletion';
15
15
  export * from './fileAssetCompatibility';
16
16
  export * from './fileMimeDetection';
17
+ export * from './filename';
18
+ export * from './uploadVerificationContract';
17
19
  export * from './videoPrep';
20
+ export * from './videoAssetRepair';
21
+ export * from './canonicalCropReview';
22
+ export * from './mediaAssetUsageStatus';
23
+ export * from './assetsInUseSummary';
24
+ export * from './bulkDeletePlanning';
25
+ export * from './classifyAllPlanning';
26
+ export * from './mediaSettingsState';
18
27
  export * from './videoSlotPolicy';
19
28
  export * from './identifiers';
20
29
  export { getImageUrl, getDirectImageUrl, getDirectImageUrlForRelativePath, getDirectImageUrlForSiteScopedPath, getDirectImageUrlForBucketPath, getDirectImageUrlForStoragePath, getDirectImageUrlForMediaAsset, isRelativeDirectImageStoragePath, isSiteScopedDirectImageStoragePath, type DirectImageMediaAsset, type DirectImageUrlOptions, type DirectImageUrlPathTarget, type ImageProxyFit, type ImageProxyParams, } from './url';
@@ -32,3 +41,4 @@ export * from './mediaWriteNormalizer';
32
41
  export { walkAndCollectImageAttrs, pickFilenameFromUrl, type RichTextImageAttrsRef, } from './richTextImageCollector';
33
42
  export * from './richTextImageWriteNormalizer';
34
43
  export * from './mediaUsageProjection';
44
+ export * from './portableMediaReferences';
@@ -0,0 +1,47 @@
1
+ export type UsageCheckedAssetLike = Readonly<{
2
+ id: string;
3
+ mimeType: string;
4
+ }>;
5
+ export type MediaUsageCheckItemLike = Readonly<{
6
+ assetId: string;
7
+ usedCount: number;
8
+ }>;
9
+ export type MediaUsageCheckResponseLike = Readonly<{
10
+ items: readonly MediaUsageCheckItemLike[];
11
+ }>;
12
+ export type StoredAssetUsageStatus = Readonly<{
13
+ kind: 'unknown';
14
+ }> | Readonly<{
15
+ kind: 'checking';
16
+ }> | Readonly<{
17
+ kind: 'eligible';
18
+ usedCount: 0;
19
+ }> | Readonly<{
20
+ kind: 'ineligible';
21
+ usedCount: number;
22
+ }> | Readonly<{
23
+ kind: 'notApplicable';
24
+ }> | Readonly<{
25
+ kind: 'failed';
26
+ message: string;
27
+ }>;
28
+ export type StoredAssetUsageStatusByAssetId = Readonly<Record<string, StoredAssetUsageStatus>>;
29
+ export declare function getRasterAssetIds(assets: readonly UsageCheckedAssetLike[]): readonly string[];
30
+ export declare function getMissingAssetUsageIds(input: {
31
+ rasterAssetIds: readonly string[];
32
+ storedStatusByAssetId: StoredAssetUsageStatusByAssetId;
33
+ inFlightAssetIds: ReadonlySet<string>;
34
+ }): readonly string[];
35
+ export declare function markAssetUsageChecking(statusByAssetId: StoredAssetUsageStatusByAssetId, assetIds: readonly string[]): StoredAssetUsageStatusByAssetId;
36
+ export declare function applyAssetUsageResponse(input: {
37
+ statusByAssetId: StoredAssetUsageStatusByAssetId;
38
+ requestedAssetIds: readonly string[];
39
+ response: MediaUsageCheckResponseLike;
40
+ }): StoredAssetUsageStatusByAssetId;
41
+ export declare function applyAssetUsageFailure(input: {
42
+ statusByAssetId: StoredAssetUsageStatusByAssetId;
43
+ requestedAssetIds: readonly string[];
44
+ message: string;
45
+ }): StoredAssetUsageStatusByAssetId;
46
+ export declare function removeInFlightAssetIds(inFlightAssetIds: ReadonlySet<string>, completedAssetIds: readonly string[]): ReadonlySet<string>;
47
+ export declare function getStoredAssetUsageStatusForAsset(asset: UsageCheckedAssetLike, statusByAssetId: StoredAssetUsageStatusByAssetId): StoredAssetUsageStatus;
@@ -0,0 +1,3 @@
1
+ export declare function readPersistVariantsEnabled(settings: Readonly<{
2
+ persistVariants: boolean | null | undefined;
3
+ }>): boolean;
@@ -0,0 +1,38 @@
1
+ type PortableMediaReferenceSource = 'media-field' | 'rich-text-image';
2
+ export type PortableMediaReference = Readonly<{
3
+ kind: 'assetId';
4
+ assetId: string;
5
+ location: string;
6
+ source: PortableMediaReferenceSource;
7
+ } | {
8
+ kind: 'identifier';
9
+ identifier: string;
10
+ location: string;
11
+ source: PortableMediaReferenceSource;
12
+ }>;
13
+ export type PortableMediaReferenceSummary = Readonly<{
14
+ references: PortableMediaReference[];
15
+ assetIds: string[];
16
+ identifiers: string[];
17
+ }>;
18
+ type PortableMediaLookupAsset = Readonly<{
19
+ id: string;
20
+ identifier?: string | null;
21
+ }>;
22
+ type PortableMediaLookup<TAsset extends PortableMediaLookupAsset> = Readonly<{
23
+ byId: Map<string, TAsset>;
24
+ byIdentifier: Map<string, TAsset>;
25
+ }>;
26
+ export type PortableMediaResolution<TAsset extends PortableMediaLookupAsset> = Readonly<{
27
+ kind: 'resolved';
28
+ reference: PortableMediaReference;
29
+ asset: TAsset;
30
+ } | {
31
+ kind: 'missing';
32
+ reference: PortableMediaReference;
33
+ }>;
34
+ export declare function summarizePortableMediaReferences(references: readonly PortableMediaReference[]): PortableMediaReferenceSummary;
35
+ export declare function collectPortableMediaReferencesFromContent(content: unknown): PortableMediaReferenceSummary;
36
+ export declare function buildPortableMediaLookup<TAsset extends PortableMediaLookupAsset>(assets: readonly TAsset[]): PortableMediaLookup<TAsset>;
37
+ export declare function resolvePortableMediaReferences<TAsset extends PortableMediaLookupAsset>(references: readonly PortableMediaReference[], lookup: PortableMediaLookup<TAsset>): PortableMediaResolution<TAsset>[];
38
+ export {};
@@ -0,0 +1,28 @@
1
+ import { type FileKind, type UploadIntent } from './fileDomain';
2
+ /**
3
+ * Shared upload boundary contract derived from the caller-provided filename and
4
+ * declared MIME type. Accept surfaces, session creation, and finalization
5
+ * should all consult this module so file-kind acceptance and verification
6
+ * cannot drift apart.
7
+ */
8
+ export type UploadCandidateDescriptor = Readonly<{
9
+ name: string;
10
+ type?: string | null;
11
+ }>;
12
+ export type UploadVerificationStrategy = Readonly<{
13
+ tag: 'magic-only';
14
+ }> | Readonly<{
15
+ tag: 'text-fallback';
16
+ detectedMimeType: 'text/plain' | 'text/csv';
17
+ }> | Readonly<{
18
+ tag: 'rtf-fallback';
19
+ detectedMimeType: 'application/rtf';
20
+ }>;
21
+ export type AcceptedUploadKindContract = Readonly<{
22
+ kind: FileKind;
23
+ verification: UploadVerificationStrategy;
24
+ }>;
25
+ export declare const PRODUCT_FILE_EXTENSION_TAGS: readonly ["pdf", "docx", "txt", "rtf", "csv", "zip", "mp3", "m4a", "wav", "ogg", "flac", "webm", "mp4", "mov"];
26
+ export declare function resolveAcceptedUploadKindContract(candidate: UploadCandidateDescriptor): AcceptedUploadKindContract | undefined;
27
+ export declare function isUploadKindCompatibleWithIntent(intent: UploadIntent, kind: FileKind): boolean;
28
+ export declare function resolveVerifiedMimeTypeFromContract(buffer: Uint8Array | null, contract: AcceptedUploadKindContract | undefined): string | undefined;
@@ -0,0 +1,38 @@
1
+ import type { MediaAssetId } from '../../core/src/index';
2
+ export type VideoRepairAssetLike = Readonly<{
3
+ id: MediaAssetId;
4
+ filename: string;
5
+ siteId: string;
6
+ mimeType: string;
7
+ thumbnailAssetId?: string | null;
8
+ durationSeconds?: number | null;
9
+ width?: number | null;
10
+ height?: number | null;
11
+ }>;
12
+ export type VideoAssetRepairPlan = Readonly<{
13
+ tag: 'none';
14
+ }> | Readonly<{
15
+ tag: 'repair-metadata';
16
+ assetId: MediaAssetId;
17
+ filename: string;
18
+ siteId: string;
19
+ processingLabel: 'Reading video metadata';
20
+ processingText: 'Reading video metadata...';
21
+ }> | Readonly<{
22
+ tag: 'repair-thumbnail-and-metadata';
23
+ assetId: MediaAssetId;
24
+ filename: string;
25
+ siteId: string;
26
+ processingLabel: 'Generating thumbnail';
27
+ processingText: 'Generating thumbnail...';
28
+ }>;
29
+ export type RunnableVideoAssetRepairPlan = Exclude<VideoAssetRepairPlan, {
30
+ tag: 'none';
31
+ }>;
32
+ export type VideoAssetRepairQueueState = Readonly<{
33
+ isProcessing: boolean;
34
+ isCompleted: boolean;
35
+ isFailed: boolean;
36
+ }>;
37
+ export declare function planVideoAssetRepair(asset: VideoRepairAssetLike): VideoAssetRepairPlan;
38
+ export declare function shouldQueueVideoAssetRepair(plan: VideoAssetRepairPlan, queueState: VideoAssetRepairQueueState): plan is RunnableVideoAssetRepairPlan;
@@ -0,0 +1 @@
1
+ export declare function logMediaEditorDebug(event: string, payload: Record<string, unknown>): void;
@@ -0,0 +1,8 @@
1
+ export type PathSegment = string | number;
2
+ export declare function parsePath(path: string | Array<PathSegment>): Array<PathSegment>;
3
+ export declare function segmentsToPath(segments: Array<PathSegment>): string | undefined;
4
+ export declare function getAtPath<T = unknown>(source: unknown, path: string | Array<PathSegment>): T | undefined;
5
+ export declare function setAtPath(target: Record<string, unknown> | Array<unknown>, path: string | Array<PathSegment>, value: unknown): void;
6
+ export declare function toAbsolutePath(base: string | undefined | null, path: string): string;
7
+ export * from './redirectPaths';
8
+ export * from './safeAppPath';
@@ -0,0 +1,26 @@
1
+ export type RedirectPathParseError = {
2
+ tag: 'MISSING';
3
+ } | {
4
+ tag: 'EMPTY';
5
+ } | {
6
+ tag: 'CONTROL_CHAR';
7
+ } | {
8
+ tag: 'BACKSLASH';
9
+ } | {
10
+ tag: 'EXTERNAL_URL';
11
+ } | {
12
+ tag: 'INVALID_PATH';
13
+ } | {
14
+ tag: 'ENCODED_SEPARATOR';
15
+ };
16
+ export type RedirectPathParseResult = {
17
+ ok: true;
18
+ value: string;
19
+ } | {
20
+ ok: false;
21
+ error: RedirectPathParseError;
22
+ };
23
+ export declare function parseInternalRedirectPath(value: unknown): RedirectPathParseResult;
24
+ export declare function sanitizeInternalRedirectPath(value: unknown): string | null;
25
+ export declare function parseSameOriginRedirectPath(value: unknown, baseUrl: string | URL): RedirectPathParseResult;
26
+ export declare function sanitizeSameOriginRedirectPath(value: unknown, baseUrl: string | URL): string | null;
@@ -0,0 +1,26 @@
1
+ import { type RedirectPathParseError } from './redirectPaths';
2
+ declare const __brand: unique symbol;
3
+ type Brand<T, B extends string> = T & {
4
+ readonly [__brand]: B;
5
+ };
6
+ /**
7
+ * A redirect path that has been validated as a safe, same-origin relative path.
8
+ *
9
+ * Parse once at the boundary, then carry the branded value inward instead of
10
+ * re-validating ad hoc string inputs in every auth flow.
11
+ */
12
+ export type SafeAppPath = Brand<string, 'SafeAppPath'>;
13
+ export type SafeAppPathParseError = RedirectPathParseError;
14
+ export type SafeAppPathParseResult = {
15
+ ok: true;
16
+ value: SafeAppPath;
17
+ } | {
18
+ ok: false;
19
+ error: SafeAppPathParseError;
20
+ };
21
+ export declare function parseSafeAppPath(value: unknown): SafeAppPathParseResult;
22
+ export declare function sanitizeSafeAppPath(value: unknown): SafeAppPath | null;
23
+ export declare function assertSafeAppPath(value: string): SafeAppPath;
24
+ export declare function safeAppPathOrFallback(value: unknown, fallback: SafeAppPath): SafeAppPath;
25
+ export declare function buildSafeRedirectUrl(path: SafeAppPath, baseUrl: string | URL): URL;
26
+ export {};
@@ -1,4 +1,5 @@
1
1
  import type { SiteChromeEditableSurfaceKind } from './SiteChromeEditableSurface';
2
- export declare function SiteChromeCustomizeButton({ surface, }: {
2
+ export declare function SiteChromeCustomizeButton({ surface, containerClassName, }: {
3
3
  surface: SiteChromeEditableSurfaceKind;
4
+ containerClassName?: string;
4
5
  }): import("react/jsx-runtime").JSX.Element;
@@ -13,6 +13,9 @@ type SiteChromeCustomizeSurfaceState = Readonly<{
13
13
  kind: 'available';
14
14
  surface: 'header';
15
15
  label: string;
16
+ currentLayoutId: HeaderLayoutId;
17
+ currentLayoutLabel: string;
18
+ layoutOptions: readonly SiteChromeLookOption<HeaderLayoutId>[];
16
19
  currentId: HeaderStyleId;
17
20
  currentLabel: string;
18
21
  options: readonly SiteChromeLookOption<HeaderStyleId>[];
@@ -35,6 +38,7 @@ type SiteChromeCustomizeSurfaceState = Readonly<{
35
38
  type SiteChromeCustomizeContextValue = Readonly<{
36
39
  getSurfaceState: (surface: SiteChromeEditableSurfaceKind) => SiteChromeCustomizeSurfaceState;
37
40
  cycleSurfaceLook: (surface: SiteChromeEditableSurfaceKind, direction: 'prev' | 'next') => void;
41
+ cycleSurfaceLayout: (surface: SiteChromeEditableSurfaceKind, direction: 'prev' | 'next') => void;
38
42
  }>;
39
43
  export type SiteChromeCustomizeProviderProps = Readonly<{
40
44
  children: ReactNode;