@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
@@ -1775,7 +1775,16 @@ var init_endpoints = __esm({
1775
1775
  revalidate: 60,
1776
1776
  tags: ["site-{siteId}", "content-{siteId}-{type}"],
1777
1777
  auth: "user",
1778
- responseKind: "json"
1778
+ responseKind: "json",
1779
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
1780
+ },
1781
+ reorderContentEntries: {
1782
+ path: "/sites/{siteId}/content/{type}/order",
1783
+ method: "POST",
1784
+ tags: ["site-{siteId}", "content-{siteId}-{type}"],
1785
+ auth: "user",
1786
+ responseKind: "json",
1787
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
1779
1788
  },
1780
1789
  getContentTemplate: {
1781
1790
  path: "/sites/{siteId}/content/types/{type}/template",
@@ -3927,6 +3936,14 @@ var init_endpoints = __esm({
3927
3936
  responseKind: "json",
3928
3937
  errors: []
3929
3938
  },
3939
+ applyDiscountCode: {
3940
+ path: "/public/sites/{siteId}/bookings/discounts/apply",
3941
+ method: "POST",
3942
+ tags: ["site-{siteId}", "booking-discounts"],
3943
+ auth: "public",
3944
+ responseKind: "json",
3945
+ errors: ["validation:invalid_input", "rate_limit:exceeded"]
3946
+ },
3930
3947
  // Batch endpoint for block loader requests (reduces SSR fan-out)
3931
3948
  batchBlockLoaders: {
3932
3949
  path: "/public/sites/{siteId}/block-loaders/batch",
@@ -6268,6 +6285,379 @@ var init_endpoints = __esm({
6268
6285
  }
6269
6286
  });
6270
6287
 
6288
+ // ../core/src/result.ts
6289
+ var init_result = __esm({
6290
+ "../core/src/result.ts"() {
6291
+ "use strict";
6292
+ }
6293
+ });
6294
+
6295
+ // ../core/src/branded.ts
6296
+ var unsafeAsStorageBucketName, unsafeAsPositiveByteCount, unsafeAsPositiveSeconds;
6297
+ var init_branded = __esm({
6298
+ "../core/src/branded.ts"() {
6299
+ "use strict";
6300
+ unsafeAsStorageBucketName = (value) => value;
6301
+ unsafeAsPositiveByteCount = (value) => value;
6302
+ unsafeAsPositiveSeconds = (value) => value;
6303
+ }
6304
+ });
6305
+
6306
+ // ../core/src/date-math.ts
6307
+ var init_date_math = __esm({
6308
+ "../core/src/date-math.ts"() {
6309
+ "use strict";
6310
+ }
6311
+ });
6312
+
6313
+ // ../core/src/duration.ts
6314
+ var DURATION_UNIT_MINUTES;
6315
+ var init_duration = __esm({
6316
+ "../core/src/duration.ts"() {
6317
+ "use strict";
6318
+ DURATION_UNIT_MINUTES = {
6319
+ minutes: 1,
6320
+ hours: 60,
6321
+ days: 60 * 24,
6322
+ weeks: 60 * 24 * 7
6323
+ };
6324
+ }
6325
+ });
6326
+
6327
+ // ../core/src/demo-capability-policy.ts
6328
+ var init_demo_capability_policy = __esm({
6329
+ "../core/src/demo-capability-policy.ts"() {
6330
+ "use strict";
6331
+ }
6332
+ });
6333
+
6334
+ // ../core/src/demo-claim-access.ts
6335
+ var init_demo_claim_access = __esm({
6336
+ "../core/src/demo-claim-access.ts"() {
6337
+ "use strict";
6338
+ }
6339
+ });
6340
+
6341
+ // ../core/src/demo-lifecycle-status.ts
6342
+ var init_demo_lifecycle_status = __esm({
6343
+ "../core/src/demo-lifecycle-status.ts"() {
6344
+ "use strict";
6345
+ }
6346
+ });
6347
+
6348
+ // ../core/src/demo-runtime.ts
6349
+ var init_demo_runtime = __esm({
6350
+ "../core/src/demo-runtime.ts"() {
6351
+ "use strict";
6352
+ }
6353
+ });
6354
+
6355
+ // ../core/src/collections.ts
6356
+ var init_collections = __esm({
6357
+ "../core/src/collections.ts"() {
6358
+ "use strict";
6359
+ }
6360
+ });
6361
+
6362
+ // ../core/src/event-pricing.ts
6363
+ var init_event_pricing = __esm({
6364
+ "../core/src/event-pricing.ts"() {
6365
+ "use strict";
6366
+ }
6367
+ });
6368
+
6369
+ // ../core/src/money-input.ts
6370
+ var init_money_input = __esm({
6371
+ "../core/src/money-input.ts"() {
6372
+ "use strict";
6373
+ }
6374
+ });
6375
+
6376
+ // ../core/src/booking-flexible-balance.ts
6377
+ var init_booking_flexible_balance = __esm({
6378
+ "../core/src/booking-flexible-balance.ts"() {
6379
+ "use strict";
6380
+ }
6381
+ });
6382
+
6383
+ // ../core/src/booking-refunds.ts
6384
+ var init_booking_refunds = __esm({
6385
+ "../core/src/booking-refunds.ts"() {
6386
+ "use strict";
6387
+ }
6388
+ });
6389
+
6390
+ // ../core/src/booking-instalments.ts
6391
+ var init_booking_instalments = __esm({
6392
+ "../core/src/booking-instalments.ts"() {
6393
+ "use strict";
6394
+ }
6395
+ });
6396
+
6397
+ // ../core/src/booking-date-time.ts
6398
+ var init_booking_date_time = __esm({
6399
+ "../core/src/booking-date-time.ts"() {
6400
+ "use strict";
6401
+ }
6402
+ });
6403
+
6404
+ // ../core/src/person-records.ts
6405
+ var init_person_records = __esm({
6406
+ "../core/src/person-records.ts"() {
6407
+ "use strict";
6408
+ }
6409
+ });
6410
+
6411
+ // ../core/src/rectification.ts
6412
+ var init_rectification = __esm({
6413
+ "../core/src/rectification.ts"() {
6414
+ "use strict";
6415
+ }
6416
+ });
6417
+
6418
+ // ../core/src/location.ts
6419
+ function normalizeLocationAddressText(value) {
6420
+ if (typeof value !== "string") {
6421
+ return null;
6422
+ }
6423
+ const trimmed = value.trim();
6424
+ return trimmed ? trimmed : null;
6425
+ }
6426
+ function hasLocationCoordinates(value) {
6427
+ return typeof value?.lat === "number" && typeof value?.lng === "number";
6428
+ }
6429
+ function toLocationCoordinates(value) {
6430
+ if (!hasLocationCoordinates(value)) {
6431
+ return null;
6432
+ }
6433
+ return {
6434
+ lat: value.lat,
6435
+ lng: value.lng
6436
+ };
6437
+ }
6438
+ var init_location = __esm({
6439
+ "../core/src/location.ts"() {
6440
+ "use strict";
6441
+ }
6442
+ });
6443
+
6444
+ // ../core/src/business-address.ts
6445
+ var init_business_address = __esm({
6446
+ "../core/src/business-address.ts"() {
6447
+ "use strict";
6448
+ }
6449
+ });
6450
+
6451
+ // ../core/src/narrow-result.ts
6452
+ var init_narrow_result = __esm({
6453
+ "../core/src/narrow-result.ts"() {
6454
+ "use strict";
6455
+ }
6456
+ });
6457
+
6458
+ // ../core/src/non-empty-array.ts
6459
+ var init_non_empty_array = __esm({
6460
+ "../core/src/non-empty-array.ts"() {
6461
+ "use strict";
6462
+ }
6463
+ });
6464
+
6465
+ // ../core/src/editor-state.ts
6466
+ var init_editor_state = __esm({
6467
+ "../core/src/editor-state.ts"() {
6468
+ "use strict";
6469
+ }
6470
+ });
6471
+
6472
+ // ../core/src/sensitive-collection.ts
6473
+ var init_sensitive_collection = __esm({
6474
+ "../core/src/sensitive-collection.ts"() {
6475
+ "use strict";
6476
+ }
6477
+ });
6478
+
6479
+ // ../core/src/assertNever.ts
6480
+ var init_assertNever = __esm({
6481
+ "../core/src/assertNever.ts"() {
6482
+ "use strict";
6483
+ }
6484
+ });
6485
+
6486
+ // ../core/src/participants.ts
6487
+ var init_participants = __esm({
6488
+ "../core/src/participants.ts"() {
6489
+ "use strict";
6490
+ }
6491
+ });
6492
+
6493
+ // ../core/src/participant-identity.ts
6494
+ var init_participant_identity = __esm({
6495
+ "../core/src/participant-identity.ts"() {
6496
+ "use strict";
6497
+ }
6498
+ });
6499
+
6500
+ // ../core/src/public-url-validation.ts
6501
+ var init_public_url_validation = __esm({
6502
+ "../core/src/public-url-validation.ts"() {
6503
+ "use strict";
6504
+ }
6505
+ });
6506
+
6507
+ // ../core/src/number-input.ts
6508
+ var init_number_input = __esm({
6509
+ "../core/src/number-input.ts"() {
6510
+ "use strict";
6511
+ }
6512
+ });
6513
+
6514
+ // ../core/src/field-errors.ts
6515
+ var init_field_errors = __esm({
6516
+ "../core/src/field-errors.ts"() {
6517
+ "use strict";
6518
+ }
6519
+ });
6520
+
6521
+ // ../core/src/form-submission-preview.ts
6522
+ var init_form_submission_preview = __esm({
6523
+ "../core/src/form-submission-preview.ts"() {
6524
+ "use strict";
6525
+ }
6526
+ });
6527
+
6528
+ // ../core/src/csv-cells.ts
6529
+ var init_csv_cells = __esm({
6530
+ "../core/src/csv-cells.ts"() {
6531
+ "use strict";
6532
+ }
6533
+ });
6534
+
6535
+ // ../core/src/csv-date-filter.ts
6536
+ var init_csv_date_filter = __esm({
6537
+ "../core/src/csv-date-filter.ts"() {
6538
+ "use strict";
6539
+ }
6540
+ });
6541
+
6542
+ // ../core/src/csv-escape.ts
6543
+ var init_csv_escape = __esm({
6544
+ "../core/src/csv-escape.ts"() {
6545
+ "use strict";
6546
+ }
6547
+ });
6548
+
6549
+ // ../core/src/csv-filename.ts
6550
+ var init_csv_filename = __esm({
6551
+ "../core/src/csv-filename.ts"() {
6552
+ "use strict";
6553
+ }
6554
+ });
6555
+
6556
+ // ../core/src/csv-render.ts
6557
+ var init_csv_render = __esm({
6558
+ "../core/src/csv-render.ts"() {
6559
+ "use strict";
6560
+ }
6561
+ });
6562
+
6563
+ // ../core/src/csv-types.ts
6564
+ var init_csv_types = __esm({
6565
+ "../core/src/csv-types.ts"() {
6566
+ "use strict";
6567
+ }
6568
+ });
6569
+
6570
+ // ../core/src/currency-format.ts
6571
+ var init_currency_format = __esm({
6572
+ "../core/src/currency-format.ts"() {
6573
+ "use strict";
6574
+ }
6575
+ });
6576
+
6577
+ // ../core/src/email-format.ts
6578
+ var init_email_format = __esm({
6579
+ "../core/src/email-format.ts"() {
6580
+ "use strict";
6581
+ }
6582
+ });
6583
+
6584
+ // ../core/src/slug.ts
6585
+ var init_slug = __esm({
6586
+ "../core/src/slug.ts"() {
6587
+ "use strict";
6588
+ }
6589
+ });
6590
+
6591
+ // ../core/src/string.ts
6592
+ var init_string = __esm({
6593
+ "../core/src/string.ts"() {
6594
+ "use strict";
6595
+ }
6596
+ });
6597
+
6598
+ // ../core/src/uuid.ts
6599
+ var init_uuid = __esm({
6600
+ "../core/src/uuid.ts"() {
6601
+ "use strict";
6602
+ }
6603
+ });
6604
+
6605
+ // ../core/src/index.ts
6606
+ var init_src = __esm({
6607
+ "../core/src/index.ts"() {
6608
+ "use strict";
6609
+ init_branded();
6610
+ init_date_math();
6611
+ init_duration();
6612
+ init_demo_capability_policy();
6613
+ init_demo_claim_access();
6614
+ init_demo_lifecycle_status();
6615
+ init_demo_runtime();
6616
+ init_collections();
6617
+ init_event_pricing();
6618
+ init_money_input();
6619
+ init_booking_flexible_balance();
6620
+ init_booking_refunds();
6621
+ init_booking_instalments();
6622
+ init_booking_date_time();
6623
+ init_person_records();
6624
+ init_rectification();
6625
+ init_location();
6626
+ init_business_address();
6627
+ init_result();
6628
+ init_narrow_result();
6629
+ init_non_empty_array();
6630
+ init_editor_state();
6631
+ init_sensitive_collection();
6632
+ init_assertNever();
6633
+ init_participants();
6634
+ init_participant_identity();
6635
+ init_public_url_validation();
6636
+ init_number_input();
6637
+ init_field_errors();
6638
+ init_form_submission_preview();
6639
+ init_csv_cells();
6640
+ init_csv_date_filter();
6641
+ init_csv_escape();
6642
+ init_csv_filename();
6643
+ init_csv_render();
6644
+ init_csv_types();
6645
+ init_currency_format();
6646
+ init_email_format();
6647
+ init_slug();
6648
+ init_string();
6649
+ init_uuid();
6650
+ }
6651
+ });
6652
+
6653
+ // ../api/src/demoDashboardMutationSurfaces.ts
6654
+ var init_demoDashboardMutationSurfaces = __esm({
6655
+ "../api/src/demoDashboardMutationSurfaces.ts"() {
6656
+ "use strict";
6657
+ init_endpoints();
6658
+ }
6659
+ });
6660
+
6271
6661
  // ../api/src/accessAdmin.ts
6272
6662
  import { z } from "zod";
6273
6663
  var managedDomainAddOnPricingSnapshotSchema;
@@ -6504,204 +6894,6 @@ var init_types = __esm({
6504
6894
  }
6505
6895
  });
6506
6896
 
6507
- // ../core/src/branded.ts
6508
- var asStorageBucketName, unsafeAsPositiveByteCount, unsafeAsPositiveSeconds;
6509
- var init_branded = __esm({
6510
- "../core/src/branded.ts"() {
6511
- "use strict";
6512
- asStorageBucketName = (value) => value;
6513
- unsafeAsPositiveByteCount = (value) => value;
6514
- unsafeAsPositiveSeconds = (value) => value;
6515
- }
6516
- });
6517
-
6518
- // ../core/src/date-math.ts
6519
- var init_date_math = __esm({
6520
- "../core/src/date-math.ts"() {
6521
- "use strict";
6522
- }
6523
- });
6524
-
6525
- // ../core/src/collections.ts
6526
- var init_collections = __esm({
6527
- "../core/src/collections.ts"() {
6528
- "use strict";
6529
- }
6530
- });
6531
-
6532
- // ../core/src/event-pricing.ts
6533
- var init_event_pricing = __esm({
6534
- "../core/src/event-pricing.ts"() {
6535
- "use strict";
6536
- }
6537
- });
6538
-
6539
- // ../core/src/money-input.ts
6540
- var init_money_input = __esm({
6541
- "../core/src/money-input.ts"() {
6542
- "use strict";
6543
- }
6544
- });
6545
-
6546
- // ../core/src/booking-flexible-balance.ts
6547
- var init_booking_flexible_balance = __esm({
6548
- "../core/src/booking-flexible-balance.ts"() {
6549
- "use strict";
6550
- }
6551
- });
6552
-
6553
- // ../core/src/booking-refunds.ts
6554
- var init_booking_refunds = __esm({
6555
- "../core/src/booking-refunds.ts"() {
6556
- "use strict";
6557
- }
6558
- });
6559
-
6560
- // ../core/src/booking-instalments.ts
6561
- var init_booking_instalments = __esm({
6562
- "../core/src/booking-instalments.ts"() {
6563
- "use strict";
6564
- }
6565
- });
6566
-
6567
- // ../core/src/result.ts
6568
- var init_result = __esm({
6569
- "../core/src/result.ts"() {
6570
- "use strict";
6571
- }
6572
- });
6573
-
6574
- // ../core/src/booking-date-time.ts
6575
- var init_booking_date_time = __esm({
6576
- "../core/src/booking-date-time.ts"() {
6577
- "use strict";
6578
- }
6579
- });
6580
-
6581
- // ../core/src/person-records.ts
6582
- var init_person_records = __esm({
6583
- "../core/src/person-records.ts"() {
6584
- "use strict";
6585
- }
6586
- });
6587
-
6588
- // ../core/src/rectification.ts
6589
- var init_rectification = __esm({
6590
- "../core/src/rectification.ts"() {
6591
- "use strict";
6592
- }
6593
- });
6594
-
6595
- // ../core/src/location.ts
6596
- function normalizeLocationAddressText(value) {
6597
- if (typeof value !== "string") {
6598
- return null;
6599
- }
6600
- const trimmed = value.trim();
6601
- return trimmed ? trimmed : null;
6602
- }
6603
- function hasLocationCoordinates(value) {
6604
- return typeof value?.lat === "number" && typeof value?.lng === "number";
6605
- }
6606
- function toLocationCoordinates(value) {
6607
- if (!hasLocationCoordinates(value)) {
6608
- return null;
6609
- }
6610
- return {
6611
- lat: value.lat,
6612
- lng: value.lng
6613
- };
6614
- }
6615
- var init_location = __esm({
6616
- "../core/src/location.ts"() {
6617
- "use strict";
6618
- }
6619
- });
6620
-
6621
- // ../core/src/business-address.ts
6622
- var init_business_address = __esm({
6623
- "../core/src/business-address.ts"() {
6624
- "use strict";
6625
- }
6626
- });
6627
-
6628
- // ../core/src/narrow-result.ts
6629
- var init_narrow_result = __esm({
6630
- "../core/src/narrow-result.ts"() {
6631
- "use strict";
6632
- }
6633
- });
6634
-
6635
- // ../core/src/non-empty-array.ts
6636
- var init_non_empty_array = __esm({
6637
- "../core/src/non-empty-array.ts"() {
6638
- "use strict";
6639
- }
6640
- });
6641
-
6642
- // ../core/src/editor-state.ts
6643
- var init_editor_state = __esm({
6644
- "../core/src/editor-state.ts"() {
6645
- "use strict";
6646
- }
6647
- });
6648
-
6649
- // ../core/src/sensitive-collection.ts
6650
- var init_sensitive_collection = __esm({
6651
- "../core/src/sensitive-collection.ts"() {
6652
- "use strict";
6653
- }
6654
- });
6655
-
6656
- // ../core/src/assertNever.ts
6657
- var init_assertNever = __esm({
6658
- "../core/src/assertNever.ts"() {
6659
- "use strict";
6660
- }
6661
- });
6662
-
6663
- // ../core/src/participants.ts
6664
- var init_participants = __esm({
6665
- "../core/src/participants.ts"() {
6666
- "use strict";
6667
- }
6668
- });
6669
-
6670
- // ../core/src/participant-identity.ts
6671
- var init_participant_identity = __esm({
6672
- "../core/src/participant-identity.ts"() {
6673
- "use strict";
6674
- }
6675
- });
6676
-
6677
- // ../core/src/index.ts
6678
- var init_src = __esm({
6679
- "../core/src/index.ts"() {
6680
- "use strict";
6681
- init_branded();
6682
- init_date_math();
6683
- init_collections();
6684
- init_event_pricing();
6685
- init_money_input();
6686
- init_booking_flexible_balance();
6687
- init_booking_refunds();
6688
- init_booking_instalments();
6689
- init_booking_date_time();
6690
- init_person_records();
6691
- init_rectification();
6692
- init_location();
6693
- init_business_address();
6694
- init_result();
6695
- init_narrow_result();
6696
- init_non_empty_array();
6697
- init_editor_state();
6698
- init_sensitive_collection();
6699
- init_assertNever();
6700
- init_participants();
6701
- init_participant_identity();
6702
- }
6703
- });
6704
-
6705
6897
  // ../media-core/src/fileSafety.ts
6706
6898
  var init_fileSafety = __esm({
6707
6899
  "../media-core/src/fileSafety.ts"() {
@@ -6739,15 +6931,15 @@ var init_fileStorage = __esm({
6739
6931
  "use strict";
6740
6932
  init_src();
6741
6933
  FILE_STORAGE_BUCKETS = {
6742
- publicSite: asStorageBucketName("media"),
6743
- privateSite: asStorageBucketName("site-files-private"),
6744
- temporary: asStorageBucketName("temp-uploads")
6934
+ publicSite: unsafeAsStorageBucketName("media"),
6935
+ privateSite: unsafeAsStorageBucketName("site-files-private"),
6936
+ temporary: unsafeAsStorageBucketName("temp-uploads")
6745
6937
  };
6746
6938
  PUBLIC_SITE_FILE_STORAGE_BUCKETS = [
6747
6939
  FILE_STORAGE_BUCKETS.publicSite,
6748
6940
  // Existing site logo and font uploads predate the unified file buckets.
6749
- asStorageBucketName("site-assets"),
6750
- asStorageBucketName("site-fonts")
6941
+ unsafeAsStorageBucketName("site-assets"),
6942
+ unsafeAsStorageBucketName("site-fonts")
6751
6943
  ];
6752
6944
  PRIVATE_SITE_FILE_BUCKET_MIME_TYPES = [
6753
6945
  "application/pdf",
@@ -6876,6 +7068,39 @@ var init_fileMimeDetection = __esm({
6876
7068
  }
6877
7069
  });
6878
7070
 
7071
+ // ../media-core/src/filename.ts
7072
+ var init_filename = __esm({
7073
+ "../media-core/src/filename.ts"() {
7074
+ "use strict";
7075
+ }
7076
+ });
7077
+
7078
+ // ../media-core/src/uploadVerificationContract.ts
7079
+ var PRODUCT_FILE_EXTENSION_TAGS, PRODUCT_FILE_EXTENSIONS, TEXT_FALLBACK_SCAN_BYTES;
7080
+ var init_uploadVerificationContract = __esm({
7081
+ "../media-core/src/uploadVerificationContract.ts"() {
7082
+ "use strict";
7083
+ PRODUCT_FILE_EXTENSION_TAGS = [
7084
+ "pdf",
7085
+ "docx",
7086
+ "txt",
7087
+ "rtf",
7088
+ "csv",
7089
+ "zip",
7090
+ "mp3",
7091
+ "m4a",
7092
+ "wav",
7093
+ "ogg",
7094
+ "flac",
7095
+ "webm",
7096
+ "mp4",
7097
+ "mov"
7098
+ ];
7099
+ PRODUCT_FILE_EXTENSIONS = new Set(PRODUCT_FILE_EXTENSION_TAGS);
7100
+ TEXT_FALLBACK_SCAN_BYTES = 4 * 1024;
7101
+ }
7102
+ });
7103
+
6879
7104
  // ../media-core/src/videoPrep.ts
6880
7105
  var VIDEO_PREP_LIMITS;
6881
7106
  var init_videoPrep = __esm({
@@ -6890,6 +7115,55 @@ var init_videoPrep = __esm({
6890
7115
  }
6891
7116
  });
6892
7117
 
7118
+ // ../media-core/src/videoAssetRepair.ts
7119
+ var init_videoAssetRepair = __esm({
7120
+ "../media-core/src/videoAssetRepair.ts"() {
7121
+ "use strict";
7122
+ }
7123
+ });
7124
+
7125
+ // ../media-core/src/canonicalCropReview.ts
7126
+ var init_canonicalCropReview = __esm({
7127
+ "../media-core/src/canonicalCropReview.ts"() {
7128
+ "use strict";
7129
+ }
7130
+ });
7131
+
7132
+ // ../media-core/src/mediaAssetUsageStatus.ts
7133
+ var init_mediaAssetUsageStatus = __esm({
7134
+ "../media-core/src/mediaAssetUsageStatus.ts"() {
7135
+ "use strict";
7136
+ }
7137
+ });
7138
+
7139
+ // ../media-core/src/assetsInUseSummary.ts
7140
+ var init_assetsInUseSummary = __esm({
7141
+ "../media-core/src/assetsInUseSummary.ts"() {
7142
+ "use strict";
7143
+ }
7144
+ });
7145
+
7146
+ // ../media-core/src/bulkDeletePlanning.ts
7147
+ var init_bulkDeletePlanning = __esm({
7148
+ "../media-core/src/bulkDeletePlanning.ts"() {
7149
+ "use strict";
7150
+ }
7151
+ });
7152
+
7153
+ // ../media-core/src/classifyAllPlanning.ts
7154
+ var init_classifyAllPlanning = __esm({
7155
+ "../media-core/src/classifyAllPlanning.ts"() {
7156
+ "use strict";
7157
+ }
7158
+ });
7159
+
7160
+ // ../media-core/src/mediaSettingsState.ts
7161
+ var init_mediaSettingsState = __esm({
7162
+ "../media-core/src/mediaSettingsState.ts"() {
7163
+ "use strict";
7164
+ }
7165
+ });
7166
+
6893
7167
  // ../media-core/src/videoSlotPolicy.ts
6894
7168
  var init_videoSlotPolicy = __esm({
6895
7169
  "../media-core/src/videoSlotPolicy.ts"() {
@@ -6998,14 +7272,14 @@ function rotateNormalizedPoint(point, rotation) {
6998
7272
  const x = point.x;
6999
7273
  const y = point.y;
7000
7274
  switch (rotation) {
7275
+ case 0:
7276
+ return { x, y };
7001
7277
  case 90:
7002
7278
  return { x: 1 - y, y: x };
7003
7279
  case 180:
7004
7280
  return { x: 1 - x, y: 1 - y };
7005
7281
  case 270:
7006
7282
  return { x: y, y: 1 - x };
7007
- default:
7008
- return { x, y };
7009
7283
  }
7010
7284
  }
7011
7285
  var init_rotation = __esm({
@@ -7035,6 +7309,13 @@ var init_mediaUsageProjection = __esm({
7035
7309
  }
7036
7310
  });
7037
7311
 
7312
+ // ../media-core/src/portableMediaReferences.ts
7313
+ var init_portableMediaReferences = __esm({
7314
+ "../media-core/src/portableMediaReferences.ts"() {
7315
+ "use strict";
7316
+ }
7317
+ });
7318
+
7038
7319
  // ../media-core/src/index.ts
7039
7320
  var init_src2 = __esm({
7040
7321
  "../media-core/src/index.ts"() {
@@ -7055,7 +7336,16 @@ var init_src2 = __esm({
7055
7336
  init_fileAssetDeletion();
7056
7337
  init_fileAssetCompatibility();
7057
7338
  init_fileMimeDetection();
7339
+ init_filename();
7340
+ init_uploadVerificationContract();
7058
7341
  init_videoPrep();
7342
+ init_videoAssetRepair();
7343
+ init_canonicalCropReview();
7344
+ init_mediaAssetUsageStatus();
7345
+ init_assetsInUseSummary();
7346
+ init_bulkDeletePlanning();
7347
+ init_classifyAllPlanning();
7348
+ init_mediaSettingsState();
7059
7349
  init_videoSlotPolicy();
7060
7350
  init_identifiers();
7061
7351
  init_aspectTransforms();
@@ -7063,6 +7353,7 @@ var init_src2 = __esm({
7063
7353
  init_mediaWriteNormalizer();
7064
7354
  init_richTextImageWriteNormalizer();
7065
7355
  init_mediaUsageProjection();
7356
+ init_portableMediaReferences();
7066
7357
  }
7067
7358
  });
7068
7359
 
@@ -7475,6 +7766,8 @@ var init_schema2 = __esm({
7475
7766
  mediaPickerAutoOpen: z5.boolean().optional(),
7476
7767
  showMediaPreview: z5.boolean().optional(),
7477
7768
  showMediaOverlayActions: z5.boolean().optional(),
7769
+ mediaPreviewMaxWidth: z5.enum(["xs", "sm", "md", "none"]).optional(),
7770
+ preventMediaPreviewUpscale: z5.boolean().optional(),
7478
7771
  mediaDelivery: mediaDeliverySchema.optional(),
7479
7772
  mediaDeliveryByVariant: z5.record(z5.string(), mediaDeliverySchema).optional(),
7480
7773
  // Optional input hints for validators/widgets
@@ -7724,6 +8017,9 @@ var init_schema2 = __esm({
7724
8017
  type: z5.literal("repeater"),
7725
8018
  itemLabel: z5.string().default("Item"),
7726
8019
  itemLabelSource: z5.string().optional(),
8020
+ showSummary: z5.boolean().optional(),
8021
+ summaryFields: z5.string().array().optional(),
8022
+ summaryMaxChars: z5.number().int().positive().optional(),
7727
8023
  minItems: z5.number().int().min(0).default(0),
7728
8024
  maxItems: z5.number().int().positive().optional(),
7729
8025
  // Monomorphic mode
@@ -8225,6 +8521,9 @@ function makeBoundaryId(previousBlockId, nextBlockId) {
8225
8521
  const next = encodeURIComponent(nextBlockId);
8226
8522
  return asDesignBoundaryId(`boundary:${previous}:${next}`);
8227
8523
  }
8524
+ function assertNever(value, message = "Unhandled Theme V2 variant") {
8525
+ throw new Error(`${message}: ${String(value)}`);
8526
+ }
8228
8527
  function brandNonEmptyString(value, label) {
8229
8528
  if (value.length === 0) {
8230
8529
  throw new Error(`${label} must be a non-empty string.`);
@@ -8253,12 +8552,13 @@ function defineBlockDesignCapability(capability) {
8253
8552
  imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
8254
8553
  testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"],
8255
8554
  tileTreatments: capability.tileTreatments ?? ["default"],
8555
+ eventListTreatments: capability.eventListTreatments ?? ["plain"],
8256
8556
  eyebrowTreatments: capability.eyebrowTreatments ?? ["plain"],
8257
8557
  ...capability.headingDecorations ? { headingDecorations: capability.headingDecorations } : {},
8258
8558
  ...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
8259
8559
  };
8260
8560
  }
8261
- var plainFrame, tileTreatmentValues, eyebrowTreatmentValues, visibleHeadingDecorationFamilyValues, visibleHeadingDecorationPlacementValues, headingDecorationOverrideValues, headingDecorationColorTokenValues, accordionIconSetValues, accordionIconColorTokenValues, accordionIconMotionValues;
8561
+ var plainFrame, tileTreatmentValues, eventListTreatmentValues, eyebrowTreatmentValues, visibleHeadingDecorationFamilyValues, visibleHeadingDecorationPlacementValues, headingDecorationOverrideValues, headingDecorationColorTokenValues, accordionIconSetValues, accordionIconColorTokenValues, accordionIconMotionValues;
8262
8562
  var init_types2 = __esm({
8263
8563
  "../theme-core/src/site-styles/types.ts"() {
8264
8564
  "use strict";
@@ -8270,6 +8570,10 @@ var init_types2 = __esm({
8270
8570
  "quiet",
8271
8571
  "brand-depth"
8272
8572
  ];
8573
+ eventListTreatmentValues = [
8574
+ "plain",
8575
+ "lined-panel"
8576
+ ];
8273
8577
  eyebrowTreatmentValues = [
8274
8578
  "plain",
8275
8579
  "pill",
@@ -8345,9 +8649,98 @@ var init_blockAppearancePresets = __esm({
8345
8649
  transitionAfter: "soft-fade-short",
8346
8650
  emphasis: "high",
8347
8651
  sectionHeight: "hero",
8652
+ heroComposition: "center",
8653
+ heroTypographyScale: "display",
8348
8654
  imageSurfaceTreatment: { kind: "neutral-wash" }
8349
8655
  }
8350
8656
  }),
8657
+ defineBlockAppearancePreset({
8658
+ kind: "block-design",
8659
+ id: "hero-bottom-left-panel",
8660
+ target: "hero",
8661
+ label: "Bottom-left panel hero",
8662
+ blockKinds: ["block.hero"],
8663
+ constraints: {
8664
+ layoutFamilies: ["centered", "compact"]
8665
+ },
8666
+ optionGroups: [
8667
+ {
8668
+ id: "image-surface-treatment",
8669
+ label: "Treatment",
8670
+ selectedOptionId: "neutral-scrim",
8671
+ options: [
8672
+ {
8673
+ id: "neutral-scrim",
8674
+ label: "Neutral scrim",
8675
+ designPatch: {
8676
+ imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
8677
+ }
8678
+ },
8679
+ {
8680
+ id: "brand-scrim-primary",
8681
+ label: "Brand scrim",
8682
+ designPatch: {
8683
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "balanced" }
8684
+ }
8685
+ }
8686
+ ]
8687
+ }
8688
+ ],
8689
+ layoutPatches: [
8690
+ {
8691
+ constraints: {
8692
+ layoutVariantKeys: ["micro"]
8693
+ },
8694
+ designPatch: {
8695
+ sectionHeight: "banner",
8696
+ heroTypographyScale: "editorial"
8697
+ }
8698
+ }
8699
+ ],
8700
+ design: {
8701
+ sectionSurface: "hero-image",
8702
+ contentFrame: panelFrame("raised"),
8703
+ itemSurface: "none",
8704
+ transitionAfter: "soft-fade-short",
8705
+ emphasis: "high",
8706
+ sectionHeight: "immersive",
8707
+ heroComposition: "bottom-left",
8708
+ heroTypographyScale: "display",
8709
+ imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
8710
+ }
8711
+ }),
8712
+ defineBlockAppearancePreset({
8713
+ kind: "block-design",
8714
+ id: "hero-poster-image",
8715
+ target: "hero",
8716
+ label: "Poster image hero",
8717
+ blockKinds: ["block.hero"],
8718
+ constraints: {
8719
+ layoutFamilies: ["centered", "compact"]
8720
+ },
8721
+ layoutPatches: [
8722
+ {
8723
+ constraints: {
8724
+ layoutVariantKeys: ["micro"]
8725
+ },
8726
+ designPatch: {
8727
+ sectionHeight: "banner",
8728
+ heroTypographyScale: "display"
8729
+ }
8730
+ }
8731
+ ],
8732
+ design: {
8733
+ sectionSurface: "hero-image",
8734
+ contentFrame: plainFrame,
8735
+ itemSurface: "none",
8736
+ transitionAfter: "soft-fade-short",
8737
+ emphasis: "high",
8738
+ sectionHeight: "immersive",
8739
+ heroComposition: "center",
8740
+ heroTypographyScale: "poster",
8741
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "strong" }
8742
+ }
8743
+ }),
8351
8744
  defineBlockAppearancePreset({
8352
8745
  kind: "block-design",
8353
8746
  id: "hero-brand-scrim",
@@ -8397,71 +8790,129 @@ var init_blockAppearancePresets = __esm({
8397
8790
  transitionAfter: "soft-fade-short",
8398
8791
  emphasis: "high",
8399
8792
  sectionHeight: "immersive",
8400
- imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
8793
+ heroComposition: "center",
8794
+ heroTypographyScale: "display",
8795
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
8796
+ }
8797
+ }),
8798
+ defineBlockAppearancePreset({
8799
+ kind: "block-design",
8800
+ id: "hero-brand-scrim-fixed-frame",
8801
+ target: "hero",
8802
+ label: "Fixed-frame brand scrim hero",
8803
+ blockKinds: ["block.hero"],
8804
+ constraints: {
8805
+ layoutFamilies: ["centered", "compact"]
8806
+ },
8807
+ optionGroups: [
8808
+ {
8809
+ id: "image-surface-treatment",
8810
+ label: "Treatment",
8811
+ selectedOptionId: "brand-scrim-primary",
8812
+ options: [
8813
+ {
8814
+ id: "brand-scrim-primary",
8815
+ label: "Brand scrim",
8816
+ designPatch: {
8817
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
8818
+ }
8819
+ },
8820
+ {
8821
+ id: "neutral-scrim",
8822
+ label: "Neutral scrim",
8823
+ designPatch: {
8824
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
8825
+ }
8826
+ }
8827
+ ]
8828
+ }
8829
+ ],
8830
+ layoutPatches: [
8831
+ {
8832
+ constraints: {
8833
+ layoutVariantKeys: ["micro"]
8834
+ },
8835
+ designPatch: {
8836
+ sectionHeight: "banner"
8837
+ }
8838
+ }
8839
+ ],
8840
+ design: {
8841
+ sectionSurface: "hero-image",
8842
+ contentFrame: plainFrame,
8843
+ itemSurface: "none",
8844
+ transitionAfter: "soft-fade-short",
8845
+ emphasis: "high",
8846
+ sectionHeight: "immersive",
8847
+ heroComposition: "center",
8848
+ heroTypographyScale: "display",
8849
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
8850
+ imageSurfaceMotion: "fixed-frame",
8851
+ eyebrowTreatment: "accent-pill-bounce"
8401
8852
  }
8402
8853
  }),
8403
8854
  defineBlockAppearancePreset({
8404
8855
  kind: "block-design",
8405
- id: "hero-brand-scrim-fixed-frame",
8856
+ id: "hero-brand-depth-expressive",
8406
8857
  target: "hero",
8407
- label: "Fixed-frame brand scrim hero",
8858
+ label: "Expressive brand-depth hero",
8408
8859
  blockKinds: ["block.hero"],
8409
8860
  constraints: {
8410
8861
  layoutFamilies: ["centered", "compact"]
8411
8862
  },
8412
- optionGroups: [
8413
- {
8414
- id: "image-surface-treatment",
8415
- label: "Treatment",
8416
- selectedOptionId: "brand-scrim-primary",
8417
- options: [
8418
- {
8419
- id: "brand-scrim-primary",
8420
- label: "Brand scrim",
8421
- designPatch: {
8422
- imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
8423
- }
8424
- },
8425
- {
8426
- id: "neutral-scrim",
8427
- label: "Neutral scrim",
8428
- designPatch: {
8429
- imageSurfaceTreatment: { kind: "neutral-scrim" }
8430
- }
8431
- }
8432
- ]
8433
- }
8434
- ],
8435
- layoutPatches: [
8436
- {
8437
- constraints: {
8438
- layoutVariantKeys: ["micro"]
8439
- },
8440
- designPatch: {
8441
- sectionHeight: "banner"
8442
- }
8443
- }
8444
- ],
8445
8863
  design: {
8446
- sectionSurface: "hero-image",
8864
+ sectionSurface: "brand-depth-band",
8447
8865
  contentFrame: plainFrame,
8448
8866
  itemSurface: "none",
8449
8867
  transitionAfter: "soft-fade-short",
8450
8868
  emphasis: "high",
8451
- sectionHeight: "immersive",
8452
- imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
8453
- imageSurfaceMotion: "fixed-frame",
8869
+ heroComposition: "center",
8870
+ heroTypographyScale: "editorial",
8454
8871
  eyebrowTreatment: "accent-pill-bounce"
8455
8872
  }
8456
8873
  }),
8457
8874
  defineBlockAppearancePreset({
8458
8875
  kind: "block-design",
8459
- id: "hero-brand-depth-expressive",
8876
+ id: "hero-contained-intro",
8460
8877
  target: "hero",
8461
- label: "Expressive brand-depth hero",
8878
+ label: "Contained intro hero",
8879
+ blockKinds: ["block.hero"],
8880
+ design: {
8881
+ sectionSurface: "muted-band",
8882
+ contentFrame: panelFrame("inset"),
8883
+ itemSurface: "none",
8884
+ transitionAfter: "none",
8885
+ emphasis: "high",
8886
+ heroComposition: "center",
8887
+ heroTypographyScale: "editorial"
8888
+ }
8889
+ }),
8890
+ defineBlockAppearancePreset({
8891
+ kind: "block-design",
8892
+ id: "hero-split-editorial",
8893
+ target: "hero",
8894
+ label: "Editorial split hero",
8462
8895
  blockKinds: ["block.hero"],
8463
8896
  constraints: {
8464
- layoutFamilies: ["centered", "compact"]
8897
+ layoutFamilies: ["split"]
8898
+ },
8899
+ design: {
8900
+ sectionSurface: "base",
8901
+ contentFrame: plainFrame,
8902
+ itemSurface: "none",
8903
+ transitionAfter: "soft-fade-short",
8904
+ emphasis: "high",
8905
+ heroTypographyScale: "editorial"
8906
+ }
8907
+ }),
8908
+ defineBlockAppearancePreset({
8909
+ kind: "block-design",
8910
+ id: "hero-split-brand",
8911
+ target: "hero",
8912
+ label: "Brand split hero",
8913
+ blockKinds: ["block.hero"],
8914
+ constraints: {
8915
+ layoutFamilies: ["split"]
8465
8916
  },
8466
8917
  design: {
8467
8918
  sectionSurface: "brand-depth-band",
@@ -8469,21 +8920,44 @@ var init_blockAppearancePresets = __esm({
8469
8920
  itemSurface: "none",
8470
8921
  transitionAfter: "soft-fade-short",
8471
8922
  emphasis: "high",
8923
+ heroTypographyScale: "display",
8472
8924
  eyebrowTreatment: "accent-pill-bounce"
8473
8925
  }
8474
8926
  }),
8475
8927
  defineBlockAppearancePreset({
8476
8928
  kind: "block-design",
8477
- id: "hero-contained-intro",
8929
+ id: "hero-split-soft-panel",
8478
8930
  target: "hero",
8479
- label: "Contained intro hero",
8931
+ label: "Soft panel split hero",
8480
8932
  blockKinds: ["block.hero"],
8933
+ constraints: {
8934
+ layoutFamilies: ["split"]
8935
+ },
8481
8936
  design: {
8482
8937
  sectionSurface: "muted-band",
8483
- contentFrame: panelFrame("inset"),
8938
+ contentFrame: panelFrame("raised"),
8484
8939
  itemSurface: "none",
8485
- transitionAfter: "none",
8486
- emphasis: "high"
8940
+ transitionAfter: "soft-fade-short",
8941
+ emphasis: "high",
8942
+ heroTypographyScale: "editorial"
8943
+ }
8944
+ }),
8945
+ defineBlockAppearancePreset({
8946
+ kind: "block-design",
8947
+ id: "hero-split-accent",
8948
+ target: "hero",
8949
+ label: "Accent split hero",
8950
+ blockKinds: ["block.hero"],
8951
+ constraints: {
8952
+ layoutFamilies: ["split"]
8953
+ },
8954
+ design: {
8955
+ sectionSurface: "accent-band",
8956
+ contentFrame: panelFrame("raised"),
8957
+ itemSurface: "none",
8958
+ transitionAfter: "soft-fade-short",
8959
+ emphasis: "high",
8960
+ heroTypographyScale: "display"
8487
8961
  }
8488
8962
  }),
8489
8963
  defineBlockAppearancePreset({
@@ -8516,9 +8990,9 @@ var init_blockAppearancePresets = __esm({
8516
8990
  }),
8517
8991
  defineBlockAppearancePreset({
8518
8992
  kind: "block-design",
8519
- id: "intro-soft-earth-statement",
8993
+ id: "intro-organic-statement",
8520
8994
  target: "intro",
8521
- label: "Soft Earth intro statement",
8995
+ label: "Organic intro statement",
8522
8996
  blockKinds: ["block.intro"],
8523
8997
  design: {
8524
8998
  sectionSurface: "base",
@@ -8549,9 +9023,9 @@ var init_blockAppearancePresets = __esm({
8549
9023
  }),
8550
9024
  defineBlockAppearancePreset({
8551
9025
  kind: "block-design",
8552
- id: "feature-cards-soft-earth-offerings",
9026
+ id: "feature-cards-raised-rule",
8553
9027
  target: "feature-cards",
8554
- label: "Soft Earth offering cards",
9028
+ label: "Raised cards with rule",
8555
9029
  blockKinds: ["block.feature-cards"],
8556
9030
  design: {
8557
9031
  sectionSurface: "base",
@@ -8580,6 +9054,21 @@ var init_blockAppearancePresets = __esm({
8580
9054
  emphasis: "medium"
8581
9055
  }
8582
9056
  }),
9057
+ defineBlockAppearancePreset({
9058
+ kind: "block-design",
9059
+ id: "events-lined-panel",
9060
+ target: "events",
9061
+ label: "Lined event panel",
9062
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9063
+ design: {
9064
+ sectionSurface: "base",
9065
+ contentFrame: plainFrame,
9066
+ itemSurface: "none",
9067
+ transitionAfter: "none",
9068
+ emphasis: "medium",
9069
+ eventListTreatment: "lined-panel"
9070
+ }
9071
+ }),
8583
9072
  defineBlockAppearancePreset({
8584
9073
  kind: "block-design",
8585
9074
  id: "schedule-details-accent-section",
@@ -8639,9 +9128,9 @@ var init_blockAppearancePresets = __esm({
8639
9128
  }),
8640
9129
  defineBlockAppearancePreset({
8641
9130
  kind: "block-design",
8642
- id: "testimonials-carded-proof",
9131
+ id: "testimonials-simple-cards",
8643
9132
  target: "testimonials",
8644
- label: "Carded social proof",
9133
+ label: "Simple testimonial cards",
8645
9134
  blockKinds: ["block.testimonials"],
8646
9135
  design: {
8647
9136
  sectionSurface: "base",
@@ -8653,9 +9142,9 @@ var init_blockAppearancePresets = __esm({
8653
9142
  }),
8654
9143
  defineBlockAppearancePreset({
8655
9144
  kind: "block-design",
8656
- id: "testimonials-contained-proof",
9145
+ id: "testimonials-raised-panel",
8657
9146
  target: "testimonials",
8658
- label: "Contained social proof",
9147
+ label: "Raised testimonial panel",
8659
9148
  blockKinds: ["block.testimonials"],
8660
9149
  design: {
8661
9150
  sectionSurface: "muted-band",
@@ -8667,9 +9156,9 @@ var init_blockAppearancePresets = __esm({
8667
9156
  }),
8668
9157
  defineBlockAppearancePreset({
8669
9158
  kind: "block-design",
8670
- id: "testimonials-dark-proof",
9159
+ id: "testimonials-accent-panel",
8671
9160
  target: "testimonials",
8672
- label: "Dark proof panel",
9161
+ label: "Accent testimonial panel",
8673
9162
  blockKinds: ["block.testimonials"],
8674
9163
  design: {
8675
9164
  sectionSurface: "accent-band",
@@ -8681,9 +9170,9 @@ var init_blockAppearancePresets = __esm({
8681
9170
  }),
8682
9171
  defineBlockAppearancePreset({
8683
9172
  kind: "block-design",
8684
- id: "testimonials-accent-quote-proof",
9173
+ id: "testimonials-accent-quote-cards",
8685
9174
  target: "testimonials",
8686
- label: "Accent quote proof",
9175
+ label: "Accent quote cards",
8687
9176
  blockKinds: ["block.testimonials"],
8688
9177
  design: {
8689
9178
  sectionSurface: "accent-band",
@@ -8696,9 +9185,9 @@ var init_blockAppearancePresets = __esm({
8696
9185
  }),
8697
9186
  defineBlockAppearancePreset({
8698
9187
  kind: "block-design",
8699
- id: "testimonials-soft-earth-proof-band",
9188
+ id: "testimonials-brand-background-quotes",
8700
9189
  target: "testimonials",
8701
- label: "Soft Earth proof band",
9190
+ label: "Brand background quotes",
8702
9191
  blockKinds: ["block.testimonials"],
8703
9192
  design: {
8704
9193
  sectionSurface: "brand-depth-band",
@@ -8742,25 +9231,6 @@ var init_blockAppearancePresets = __esm({
8742
9231
  emphasis: "low"
8743
9232
  }
8744
9233
  }),
8745
- defineBlockAppearancePreset({
8746
- kind: "block-design",
8747
- id: "faq-soft-earth-two-column",
8748
- target: "faq",
8749
- label: "Soft Earth two-column FAQ",
8750
- blockKinds: ["block.faq"],
8751
- design: {
8752
- sectionSurface: "base",
8753
- contentFrame: plainFrame,
8754
- itemSurface: "flat",
8755
- transitionAfter: "none",
8756
- emphasis: "medium",
8757
- accordionIconTreatment: {
8758
- iconSet: "plus",
8759
- colorToken: "primary",
8760
- motion: "swap"
8761
- }
8762
- }
8763
- }),
8764
9234
  defineBlockAppearancePreset({
8765
9235
  kind: "block-design",
8766
9236
  id: "contact-form-panel",
@@ -10563,7 +11033,8 @@ var init_types7 = __esm({
10563
11033
  icon: z15.object({
10564
11034
  style: accordionIconSchema,
10565
11035
  position: z15.enum(["left", "right"]),
10566
- size: z15.enum(["sm", "md", "lg"])
11036
+ size: z15.enum(["sm", "md", "lg"]),
11037
+ colorToken: themeColorTokenSchema.optional()
10567
11038
  }),
10568
11039
  // Trigger (question) styling
10569
11040
  trigger: z15.object({
@@ -10712,7 +11183,7 @@ var init_baseSchema = __esm({
10712
11183
 
10713
11184
  // ../theme-core/src/navigation/types.ts
10714
11185
  import { z as z19 } from "zod";
10715
- var navLinkPaddingSchema, navLinkPaddingXSchema, navLinkBorderRadiusSchema, navLinkTextSizeSchema, navLinkLetterSpacingSchema, navLinkStyleSchema;
11186
+ var navLinkPaddingSchema, navLinkPaddingXSchema, navLinkBorderRadiusSchema, navLinkTextSizeSchema, navLinkLetterSpacingSchema, navLinkContrastTreatmentSchema, navLinkStyleSchema;
10716
11187
  var init_types10 = __esm({
10717
11188
  "../theme-core/src/navigation/types.ts"() {
10718
11189
  "use strict";
@@ -10723,6 +11194,7 @@ var init_types10 = __esm({
10723
11194
  navLinkBorderRadiusSchema = z19.enum(["none", "sm", "md", "full"]);
10724
11195
  navLinkTextSizeSchema = z19.enum(["xs", "sm", "base", "lg"]);
10725
11196
  navLinkLetterSpacingSchema = z19.enum(["normal", "wide", "wider", "widest"]);
11197
+ navLinkContrastTreatmentSchema = z19.enum(["none", "soft-glow"]);
10726
11198
  navLinkStyleSchema = z19.object({
10727
11199
  /** Display name for the style */
10728
11200
  name: z19.string().min(1).max(30).optional(),
@@ -10734,6 +11206,8 @@ var init_types10 = __esm({
10734
11206
  textSize: navLinkTextSizeSchema.optional(),
10735
11207
  /** Optional letter spacing override */
10736
11208
  letterSpacing: navLinkLetterSpacingSchema.optional(),
11209
+ /** Optional text-only contrast treatment for transparent/overlay navigation */
11210
+ contrastTreatment: navLinkContrastTreatmentSchema.optional(),
10737
11211
  /** Hover/active color token (for color-change effects) */
10738
11212
  hoverColorToken: themeColorTokenSchema.nullable().optional(),
10739
11213
  /** Padding preset */
@@ -11225,6 +11699,7 @@ var init_schema3 = __esm({
11225
11699
  spacing: semanticSpacingSchema.nullable().optional(),
11226
11700
  minHeight: z24.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
11227
11701
  tileTreatment: z24.enum(tileTreatmentValues).nullable().optional(),
11702
+ eventListTreatment: z24.enum(eventListTreatmentValues).nullable().optional(),
11228
11703
  eyebrowTreatment: z24.enum(eyebrowTreatmentValues).nullable().optional(),
11229
11704
  headingDecoration: headingDecorationSchema.nullable().optional(),
11230
11705
  // Author-level override consumed by later block/editor rendering phases.
@@ -12109,6 +12584,40 @@ var init_variants = __esm({
12109
12584
  }
12110
12585
  });
12111
12586
 
12587
+ // ../theme-core/src/accordions/siteStyleDefaults.ts
12588
+ var softEarthAccordionSystem;
12589
+ var init_siteStyleDefaults = __esm({
12590
+ "../theme-core/src/accordions/siteStyleDefaults.ts"() {
12591
+ "use strict";
12592
+ softEarthAccordionSystem = {
12593
+ background: {
12594
+ type: "solid",
12595
+ colorToken: "background"
12596
+ },
12597
+ spacing: "comfortable",
12598
+ corners: "square",
12599
+ border: null,
12600
+ shadow: null,
12601
+ icon: {
12602
+ style: "plus-minus",
12603
+ position: "right",
12604
+ size: "md",
12605
+ colorToken: "primary"
12606
+ },
12607
+ trigger: {
12608
+ textColorToken: "text",
12609
+ fontWeight: "medium"
12610
+ },
12611
+ hover: {
12612
+ textColorToken: "primary"
12613
+ },
12614
+ content: {
12615
+ textColorToken: "neutral-700"
12616
+ }
12617
+ };
12618
+ }
12619
+ });
12620
+
12112
12621
  // ../theme-core/src/site-styles/customizableSurfaces.ts
12113
12622
  var init_customizableSurfaces = __esm({
12114
12623
  "../theme-core/src/site-styles/customizableSurfaces.ts"() {
@@ -12175,6 +12684,23 @@ function getCompatibleHeaderStyleIds(layoutId) {
12175
12684
  }
12176
12685
  );
12177
12686
  }
12687
+ function themedHeaderShadow(theme) {
12688
+ switch (theme.shadow.elevation) {
12689
+ case "none":
12690
+ return void 0;
12691
+ case "low":
12692
+ return { elevation: "sm" };
12693
+ case "medium":
12694
+ return { elevation: "md" };
12695
+ case "high":
12696
+ return { elevation: "lg" };
12697
+ default:
12698
+ return assertNever(
12699
+ theme.shadow.elevation,
12700
+ "Unhandled theme shadow elevation"
12701
+ );
12702
+ }
12703
+ }
12178
12704
  function solidBrandHeader(theme) {
12179
12705
  const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
12180
12706
  return {
@@ -12324,9 +12850,7 @@ function practicalUtilityHeader(theme) {
12324
12850
  navColor: "text",
12325
12851
  navStyle: "solid",
12326
12852
  navWeight: "semibold",
12327
- shadow: {
12328
- elevation: "sm"
12329
- },
12853
+ shadow: themedHeaderShadow(theme),
12330
12854
  border: {
12331
12855
  style: "solid",
12332
12856
  width: "thin",
@@ -12395,6 +12919,7 @@ function floatingGlassHeader(theme) {
12395
12919
  return {
12396
12920
  ...transparentOverlayHeader(theme),
12397
12921
  variant: "floating",
12922
+ positioning: "sticky",
12398
12923
  navStyle: "frosted",
12399
12924
  navContainer: {
12400
12925
  type: "glass",
@@ -12448,7 +12973,7 @@ var init_headerLooks = __esm({
12448
12973
  description: "Detached header chrome that sits over the opening section.",
12449
12974
  structure: "floating-shell",
12450
12975
  variant: "floating",
12451
- defaultPositioning: "fixed",
12976
+ defaultPositioning: "sticky",
12452
12977
  shrinkOnScroll: true,
12453
12978
  maxRecommendedNavItems: 5,
12454
12979
  allowedLogoShapes: ["none", "text-only", "horizontal"]
@@ -12462,7 +12987,9 @@ var init_headerLooks = __esm({
12462
12987
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12463
12988
  navInteraction: "color-change",
12464
12989
  surface: "neutral",
12465
- navTypography: "plain"
12990
+ defaultDepth: "none",
12991
+ navTypography: "plain",
12992
+ moods: ["calm", "professional", "editorial"]
12466
12993
  },
12467
12994
  {
12468
12995
  id: asHeaderStyleId("fine-line"),
@@ -12471,7 +12998,9 @@ var init_headerLooks = __esm({
12471
12998
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12472
12999
  navInteraction: "underline-grow",
12473
13000
  surface: "bordered",
12474
- navTypography: "plain"
13001
+ defaultDepth: "line",
13002
+ navTypography: "plain",
13003
+ moods: ["calm", "professional", "editorial"]
12475
13004
  },
12476
13005
  {
12477
13006
  id: asHeaderStyleId("soft-bar"),
@@ -12480,7 +13009,9 @@ var init_headerLooks = __esm({
12480
13009
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12481
13010
  navInteraction: "pill-background",
12482
13011
  surface: "soft",
12483
- navTypography: "plain"
13012
+ defaultDepth: "line",
13013
+ navTypography: "plain",
13014
+ moods: ["calm", "professional"]
12484
13015
  },
12485
13016
  {
12486
13017
  id: asHeaderStyleId("pill-nav"),
@@ -12489,7 +13020,9 @@ var init_headerLooks = __esm({
12489
13020
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12490
13021
  navInteraction: "pill-background",
12491
13022
  surface: "soft",
12492
- navTypography: "plain"
13023
+ defaultDepth: "none",
13024
+ navTypography: "plain",
13025
+ moods: ["calm"]
12493
13026
  },
12494
13027
  {
12495
13028
  id: asHeaderStyleId("brand-bar"),
@@ -12498,7 +13031,9 @@ var init_headerLooks = __esm({
12498
13031
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12499
13032
  navInteraction: "color-change",
12500
13033
  surface: "brand-solid",
12501
- navTypography: "brand-caps"
13034
+ defaultDepth: "none",
13035
+ navTypography: "brand-caps",
13036
+ moods: ["professional", "expressive", "utility"]
12502
13037
  },
12503
13038
  {
12504
13039
  id: asHeaderStyleId("brand-underline"),
@@ -12507,7 +13042,9 @@ var init_headerLooks = __esm({
12507
13042
  supportedLayoutIds: supportedLayouts(["classic"]),
12508
13043
  navInteraction: "underline-grow",
12509
13044
  surface: "brand-solid",
12510
- navTypography: "brand-caps"
13045
+ defaultDepth: "none",
13046
+ navTypography: "brand-caps",
13047
+ moods: ["expressive"]
12511
13048
  },
12512
13049
  {
12513
13050
  id: asHeaderStyleId("brand-pill"),
@@ -12516,7 +13053,9 @@ var init_headerLooks = __esm({
12516
13053
  supportedLayoutIds: supportedLayouts(["classic", "centered", "floating"]),
12517
13054
  navInteraction: "pill-background",
12518
13055
  surface: "brand-solid",
12519
- navTypography: "brand-caps"
13056
+ defaultDepth: "none",
13057
+ navTypography: "brand-caps",
13058
+ moods: ["expressive"]
12520
13059
  },
12521
13060
  {
12522
13061
  id: asHeaderStyleId("serif-line"),
@@ -12525,7 +13064,9 @@ var init_headerLooks = __esm({
12525
13064
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12526
13065
  navInteraction: "underline-grow",
12527
13066
  surface: "bordered",
12528
- navTypography: "heading"
13067
+ defaultDepth: "line",
13068
+ navTypography: "heading",
13069
+ moods: ["editorial", "calm"]
12529
13070
  },
12530
13071
  {
12531
13072
  id: asHeaderStyleId("flat-tabs"),
@@ -12534,16 +13075,20 @@ var init_headerLooks = __esm({
12534
13075
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12535
13076
  navInteraction: "flat-block",
12536
13077
  surface: "bordered",
12537
- navTypography: "quiet-caps"
13078
+ defaultDepth: "shadow",
13079
+ navTypography: "quiet-caps",
13080
+ moods: ["professional", "utility", "expressive"]
12538
13081
  },
12539
13082
  {
12540
13083
  id: asHeaderStyleId("glass"),
12541
13084
  label: "Glass",
12542
13085
  description: "Translucent chrome with frosted navigation backing.",
12543
- supportedLayoutIds: supportedLayouts(["classic", "floating"]),
13086
+ supportedLayoutIds: supportedLayouts(["floating"]),
12544
13087
  navInteraction: "glass-backed",
12545
13088
  surface: "floating",
12546
- navTypography: "plain"
13089
+ defaultDepth: "shadow",
13090
+ navTypography: "plain",
13091
+ moods: ["expressive", "calm"]
12547
13092
  },
12548
13093
  {
12549
13094
  id: asHeaderStyleId("minimal-surface"),
@@ -12552,7 +13097,9 @@ var init_headerLooks = __esm({
12552
13097
  supportedLayoutIds: supportedLayouts(["floating"]),
12553
13098
  navInteraction: "color-change",
12554
13099
  surface: "floating",
12555
- navTypography: "plain"
13100
+ defaultDepth: "none",
13101
+ navTypography: "plain",
13102
+ moods: ["editorial", "calm"]
12556
13103
  },
12557
13104
  {
12558
13105
  id: asHeaderStyleId("soft-shell"),
@@ -12561,7 +13108,9 @@ var init_headerLooks = __esm({
12561
13108
  supportedLayoutIds: supportedLayouts(["floating"]),
12562
13109
  navInteraction: "pill-background",
12563
13110
  surface: "floating",
12564
- navTypography: "plain"
13111
+ defaultDepth: "shadow",
13112
+ navTypography: "plain",
13113
+ moods: ["calm", "professional"]
12565
13114
  },
12566
13115
  {
12567
13116
  id: asHeaderStyleId("split-glass"),
@@ -12570,7 +13119,9 @@ var init_headerLooks = __esm({
12570
13119
  supportedLayoutIds: supportedLayouts(["floating"]),
12571
13120
  navInteraction: "glass-backed",
12572
13121
  surface: "floating",
12573
- navTypography: "quiet-caps"
13122
+ defaultDepth: "shadow",
13123
+ navTypography: "quiet-caps",
13124
+ moods: ["expressive"]
12574
13125
  },
12575
13126
  {
12576
13127
  id: asHeaderStyleId("split-pill"),
@@ -12579,7 +13130,9 @@ var init_headerLooks = __esm({
12579
13130
  supportedLayoutIds: supportedLayouts(["floating"]),
12580
13131
  navInteraction: "pill-background",
12581
13132
  surface: "floating",
12582
- navTypography: "heading"
13133
+ defaultDepth: "shadow",
13134
+ navTypography: "heading",
13135
+ moods: ["calm", "editorial"]
12583
13136
  }
12584
13137
  ];
12585
13138
  headerLayoutsById = new Map(
@@ -12593,7 +13146,6 @@ var init_headerLooks = __esm({
12593
13146
  asHeaderLayoutId("classic"),
12594
13147
  headerStyleRepairChain([
12595
13148
  "minimal",
12596
- "glass",
12597
13149
  "fine-line",
12598
13150
  "soft-bar",
12599
13151
  "pill-nav",
@@ -12657,7 +13209,13 @@ var init_headerLooks = __esm({
12657
13209
  ],
12658
13210
  [
12659
13211
  asHeaderStyleId("glass"),
12660
- headerStyleRepairChain(["glass", "minimal-surface", "minimal"])
13212
+ headerStyleRepairChain([
13213
+ "glass",
13214
+ "soft-shell",
13215
+ "fine-line",
13216
+ "minimal-surface",
13217
+ "minimal"
13218
+ ])
12661
13219
  ],
12662
13220
  [
12663
13221
  asHeaderStyleId("soft-shell"),
@@ -13269,7 +13827,7 @@ var init_typographyPresets = __esm({
13269
13827
  heroTypography: {
13270
13828
  headlineSize: "6xl",
13271
13829
  headlineLineHeight: "tight",
13272
- subheadlineSize: "editorial",
13830
+ subheadlineSize: "2xl",
13273
13831
  subheadlineLineHeight: "normal",
13274
13832
  microHeadlineSize: "6xl",
13275
13833
  microHeadlineLineHeight: "tight",
@@ -13305,7 +13863,10 @@ function uniqueContentFrameKinds() {
13305
13863
  }
13306
13864
  function defineCuratedSiteStyle(input) {
13307
13865
  const legacyHeaderLookIds = input.recommendedHeaderLookIds ?? ["clean-base"];
13308
- const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(legacyHeaderLookIds);
13866
+ const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(
13867
+ legacyHeaderLookIds,
13868
+ input.tokenRecipes
13869
+ );
13309
13870
  const typographyPresetChoices = input.typographyPresetChoices ?? defaultTypographyPresetChoicesForRecipe(input.tokenRecipes.typography);
13310
13871
  const defaultTypographyPresetId = input.defaultTypographyPresetId ? asTypographyPresetId(input.defaultTypographyPresetId) : typographyPresetChoices[0].id;
13311
13872
  if (!typographyPresetChoices.some(
@@ -13338,6 +13899,7 @@ function defineCuratedSiteStyle(input) {
13338
13899
  supportedTransitions: generatedDesignOptionCatalog.transitions
13339
13900
  },
13340
13901
  ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
13902
+ ...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
13341
13903
  recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
13342
13904
  defaultHeaderSelection: input.defaultHeaderSelection ? {
13343
13905
  layoutId: asHeaderLayoutId(input.defaultHeaderSelection.layoutId),
@@ -13396,7 +13958,69 @@ function nonEmptyHeaderStyleChoices(choices, fallbackLayoutId) {
13396
13958
  };
13397
13959
  return [first, ...choices.slice(1)];
13398
13960
  }
13399
- function inferHeaderCurationFromLegacyLooks(lookIds) {
13961
+ function uniqueCompatibleHeaderStyleChoices(choices, fallbackLayoutId) {
13962
+ const compatible = new Set(getCompatibleHeaderStyleIds(fallbackLayoutId));
13963
+ const seen = /* @__PURE__ */ new Set();
13964
+ const unique = choices.filter((choice) => {
13965
+ if (!compatible.has(choice.id)) return false;
13966
+ if (seen.has(choice.id)) return false;
13967
+ seen.add(choice.id);
13968
+ return true;
13969
+ });
13970
+ return nonEmptyHeaderStyleChoices(unique, fallbackLayoutId);
13971
+ }
13972
+ function inferredHeaderStyleValuesForRecipes(layoutId, recipes) {
13973
+ switch (layoutId) {
13974
+ case "classic":
13975
+ if (isExpressiveRecipe(recipes)) {
13976
+ return [
13977
+ "brand-bar",
13978
+ "brand-underline",
13979
+ "flat-tabs",
13980
+ "brand-pill",
13981
+ "fine-line"
13982
+ ];
13983
+ }
13984
+ if (recipes.spacing === "compact") {
13985
+ return ["flat-tabs", "fine-line", "minimal", "brand-bar"];
13986
+ }
13987
+ if (isSerifTypographyRecipe(recipes)) {
13988
+ return ["serif-line", "fine-line", "minimal", "soft-bar"];
13989
+ }
13990
+ if (recipes.radius === "rounded" || recipes.radius === "pill") {
13991
+ return ["soft-bar", "pill-nav", "fine-line", "minimal"];
13992
+ }
13993
+ return ["fine-line", "minimal", "soft-bar", "brand-bar"];
13994
+ case "centered":
13995
+ if (isSerifTypographyRecipe(recipes)) {
13996
+ return ["serif-line", "fine-line", "minimal", "soft-bar"];
13997
+ }
13998
+ if (isExpressiveRecipe(recipes)) {
13999
+ return ["brand-pill", "flat-tabs", "brand-bar", "fine-line"];
14000
+ }
14001
+ if (recipes.radius === "rounded" || recipes.radius === "pill") {
14002
+ return ["soft-bar", "pill-nav", "fine-line", "minimal"];
14003
+ }
14004
+ return ["minimal", "fine-line", "soft-bar"];
14005
+ case "floating":
14006
+ if (isExpressiveRecipe(recipes)) {
14007
+ return ["glass", "split-glass", "brand-pill", "soft-shell"];
14008
+ }
14009
+ if (isSerifTypographyRecipe(recipes)) {
14010
+ return ["split-pill", "minimal-surface", "soft-shell"];
14011
+ }
14012
+ return ["soft-shell", "minimal-surface", "glass"];
14013
+ default:
14014
+ return [];
14015
+ }
14016
+ }
14017
+ function isExpressiveRecipe(recipes) {
14018
+ return recipes.contrast === "maximum" || recipes.shadow === "layered" || recipes.motion === "expressive";
14019
+ }
14020
+ function isSerifTypographyRecipe(recipes) {
14021
+ return recipes.typography === "serif-editorial" || recipes.typography === "classic-serif";
14022
+ }
14023
+ function inferHeaderCurationFromLegacyLooks(lookIds, recipes) {
13400
14024
  const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter(
13401
14025
  (selection) => Boolean(selection)
13402
14026
  );
@@ -13409,8 +14033,15 @@ function inferHeaderCurationFromLegacyLooks(lookIds) {
13409
14033
  );
13410
14034
  const stylesByLayout = {};
13411
14035
  for (const layoutChoice of layoutChoices) {
13412
- const styleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
13413
- stylesByLayout[unbrandHeaderLayoutId(layoutChoice.id)] = nonEmptyHeaderStyleChoices(styleChoices, layoutChoice.id);
14036
+ const legacyStyleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
14037
+ const inferredStyleChoices = inferredHeaderStyleValuesForRecipes(
14038
+ layoutChoice.id,
14039
+ recipes
14040
+ ).map((styleId) => headerStyleChoice(styleId));
14041
+ stylesByLayout[unbrandHeaderLayoutId(layoutChoice.id)] = uniqueCompatibleHeaderStyleChoices(
14042
+ [...legacyStyleChoices, ...inferredStyleChoices],
14043
+ layoutChoice.id
14044
+ );
13414
14045
  }
13415
14046
  return {
13416
14047
  defaultHeaderSelection,
@@ -13449,18 +14080,21 @@ function defaultTypographyPresetChoicesForRecipe(recipe) {
13449
14080
  ];
13450
14081
  }
13451
14082
  }
13452
- var curatedSiteStyleIdValues, quietBudget, balancedBudget, expressiveBudget, expressiveUnderlineInputs, generatedContentFrameKinds, curatedSiteStyles, curatedSiteStylesById;
14083
+ var SOFT_EARTH_SITE_STYLE_ID_VALUE, SOFT_EARTH_SITE_STYLE_ID, curatedSiteStyleIdValues, quietBudget, balancedBudget, expressiveBudget, expressiveUnderlineInputs, generatedContentFrameKinds, curatedSiteStyles, curatedSiteStylesById;
13453
14084
  var init_curatedSiteStyles = __esm({
13454
14085
  "../theme-core/src/site-styles/curatedSiteStyles.ts"() {
13455
14086
  "use strict";
13456
14087
  init_personalities();
13457
14088
  init_variants();
14089
+ init_siteStyleDefaults();
13458
14090
  init_headerLooks();
13459
14091
  init_footerLooks();
13460
14092
  init_curatedChoices();
13461
14093
  init_sourceCatalogs();
13462
14094
  init_types2();
13463
14095
  init_typographyPresets();
14096
+ SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
14097
+ SOFT_EARTH_SITE_STYLE_ID = asSiteStyleId(SOFT_EARTH_SITE_STYLE_ID_VALUE);
13464
14098
  curatedSiteStyleIdValues = [
13465
14099
  "site-style:calm-studio",
13466
14100
  "site-style:clear-professional",
@@ -13472,7 +14106,7 @@ var init_curatedSiteStyles = __esm({
13472
14106
  "site-style:personal-retreat-journal",
13473
14107
  "site-style:tactile-workshop",
13474
14108
  "site-style:modern-wellness",
13475
- "site-style:soft-earth",
14109
+ SOFT_EARTH_SITE_STYLE_ID_VALUE,
13476
14110
  "site-style:bold-launch",
13477
14111
  "site-style:south-west-twerk-school"
13478
14112
  ];
@@ -13919,10 +14553,10 @@ var init_curatedSiteStyles = __esm({
13919
14553
  ]
13920
14554
  }),
13921
14555
  defineCuratedSiteStyle({
13922
- id: "site-style:soft-earth",
14556
+ id: SOFT_EARTH_SITE_STYLE_ID,
13923
14557
  name: "Soft Earth",
13924
14558
  description: "Warm, grounded, and editorial for yoga studios, retreats, and wellbeing communities.",
13925
- generationBrief: "Use cream space, terracotta CTAs, olive proof bands, natural imagery, generous but composed spacing, and editorial serif headings. Prefer a real intro section, image-led offering cards, warm community proof, and a simple two-column FAQ when content allows.",
14559
+ generationBrief: "Use cream space, terracotta CTAs, olive quote bands, natural imagery, generous but composed spacing, and editorial serif headings. Prefer a real intro section, image-led offering cards, warm community quotes, and an FAQ with a full-width intro above two columns of questions when content allows.",
13926
14560
  siteCreatorSelection: {
13927
14561
  kind: "site_creator_keyword_heuristic",
13928
14562
  priority: 45
@@ -13992,14 +14626,18 @@ var init_curatedSiteStyles = __esm({
13992
14626
  paragraphSize: "default",
13993
14627
  headingSize: "editorial"
13994
14628
  }
13995
- }
14629
+ },
14630
+ accordions: softEarthAccordionSystem
14631
+ },
14632
+ defaultBlockVariants: {
14633
+ "block.faq": "question-columns"
13996
14634
  },
13997
14635
  recommendedAppearancePresetIds: [
13998
14636
  "hero-brand-scrim",
13999
- "intro-soft-earth-statement",
14000
- "feature-cards-soft-earth-offerings",
14001
- "testimonials-soft-earth-proof-band",
14002
- "faq-soft-earth-two-column",
14637
+ "intro-organic-statement",
14638
+ "feature-cards-raised-rule",
14639
+ "events-lined-panel",
14640
+ "testimonials-brand-background-quotes",
14003
14641
  "contact-form-panel"
14004
14642
  ],
14005
14643
  recommendedHeaderLookIds: [
@@ -14103,7 +14741,7 @@ var init_curatedSiteStyles = __esm({
14103
14741
  "hero-brand-scrim-fixed-frame",
14104
14742
  "body-text-editorial-intro",
14105
14743
  "schedule-details-brand-depth",
14106
- "testimonials-accent-quote-proof",
14744
+ "testimonials-accent-quote-cards",
14107
14745
  "contact-form-brand-depth-card"
14108
14746
  ],
14109
14747
  recommendedHeaderLookIds: [
@@ -14268,7 +14906,7 @@ var init_expandPalette = __esm({
14268
14906
  });
14269
14907
 
14270
14908
  // ../theme-core/src/site-styles/rawStyleFields.ts
14271
- var themeV2RuntimeStyleFieldNames, themeV2BlockSpecificRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNameSet;
14909
+ var themeV2RuntimeStyleFieldNames, themeV2BlockSpecificRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNameSet, themeV2CompilerOwnedFieldNames;
14272
14910
  var init_rawStyleFields = __esm({
14273
14911
  "../theme-core/src/site-styles/rawStyleFields.ts"() {
14274
14912
  "use strict";
@@ -14283,6 +14921,7 @@ var init_rawStyleFields = __esm({
14283
14921
  ];
14284
14922
  themeV2BlockSpecificRawStyleFieldNames = [
14285
14923
  "_contentCardStyles",
14924
+ "_heroLayoutStyles",
14286
14925
  "_textCardStyles"
14287
14926
  ];
14288
14927
  themeV2NormalEditorRawStyleFieldNames = [
@@ -14292,6 +14931,10 @@ var init_rawStyleFields = __esm({
14292
14931
  themeV2NormalEditorRawStyleFieldNameSet = new Set(
14293
14932
  themeV2NormalEditorRawStyleFieldNames
14294
14933
  );
14934
+ themeV2CompilerOwnedFieldNames = [
14935
+ ...themeV2RuntimeStyleFieldNames,
14936
+ ...themeV2BlockSpecificRawStyleFieldNames
14937
+ ];
14295
14938
  }
14296
14939
  });
14297
14940
 
@@ -14305,7 +14948,7 @@ function uniqueNonEmpty(values) {
14305
14948
  }
14306
14949
  return [firstValue, ...uniqueValues.slice(1)];
14307
14950
  }
14308
- var themeV2DesignStateSchemaVersion, designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, heroLegibilityStrategySchema, sectionHeightIntentSchema, imageSurfaceTreatmentIntensitySchema, imageSurfaceMotionSchema, imageSurfaceTreatmentSchema, testimonialCardTreatmentSchema, tileTreatmentSchema, eyebrowTreatmentSchema, userPanelTreatments, userFlushTreatments, userFlushBleeds, contentFrameIntentSchema, blockDesignPlanSchema, styleAuthoritySchema, blockRuntimeStyleAuthoritySchema, persistedPageDesignStateV1Schema;
14951
+ var themeV2DesignStateSchemaVersion, designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, heroLegibilityStrategySchema, heroCompositionIntentSchema, heroTypographyScaleIntentSchema, sectionHeightIntentSchema, imageSurfaceTreatmentIntensitySchema, imageSurfaceMotionSchema, imageSurfaceTreatmentSchema, testimonialCardTreatmentSchema, tileTreatmentSchema, eventListTreatmentSchema, eyebrowTreatmentSchema, userPanelTreatments, userFlushTreatments, userFlushBleeds, contentFrameIntentSchema, blockDesignPlanSchema, styleAuthoritySchema, blockRuntimeStyleAuthoritySchema, persistedPageDesignStateV1Schema;
14309
14952
  var init_designState = __esm({
14310
14953
  "../theme-core/src/site-styles/designState.ts"() {
14311
14954
  "use strict";
@@ -14326,6 +14969,16 @@ var init_designState = __esm({
14326
14969
  "scrim-gradient",
14327
14970
  "solid-panel"
14328
14971
  ]);
14972
+ heroCompositionIntentSchema = z26.enum([
14973
+ "center",
14974
+ "bottom-left"
14975
+ ]);
14976
+ heroTypographyScaleIntentSchema = z26.enum([
14977
+ "quiet",
14978
+ "editorial",
14979
+ "display",
14980
+ "poster"
14981
+ ]);
14329
14982
  sectionHeightIntentSchema = z26.enum([
14330
14983
  "default",
14331
14984
  "banner",
@@ -14361,6 +15014,7 @@ var init_designState = __esm({
14361
15014
  ]);
14362
15015
  testimonialCardTreatmentSchema = z26.enum(["default", "accent-quote"]);
14363
15016
  tileTreatmentSchema = z26.enum(tileTreatmentValues);
15017
+ eventListTreatmentSchema = z26.enum(eventListTreatmentValues);
14364
15018
  eyebrowTreatmentSchema = z26.enum(eyebrowTreatmentValues);
14365
15019
  userPanelTreatments = uniqueNonEmpty(
14366
15020
  userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
@@ -14394,10 +15048,13 @@ var init_designState = __esm({
14394
15048
  emphasis: z26.enum(userDesignOptionCatalog.emphases),
14395
15049
  sectionHeight: sectionHeightIntentSchema.optional(),
14396
15050
  heroLegibility: heroLegibilityStrategySchema.optional(),
15051
+ heroComposition: heroCompositionIntentSchema.optional(),
15052
+ heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
14397
15053
  imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
14398
15054
  imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
14399
15055
  testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
14400
15056
  tileTreatment: tileTreatmentSchema.optional(),
15057
+ eventListTreatment: eventListTreatmentSchema.optional(),
14401
15058
  eyebrowTreatment: eyebrowTreatmentSchema.optional()
14402
15059
  }).strict();
14403
15060
  styleAuthoritySchema = z26.discriminatedUnion("kind", [
@@ -16057,6 +16714,7 @@ function styledSection(config) {
16057
16714
  renderBackgroundImage = true,
16058
16715
  backgroundImageLoading,
16059
16716
  backgroundImageFetchPriority,
16717
+ allowOverflow = false,
16060
16718
  fullWidthPath
16061
16719
  } = config;
16062
16720
  const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
@@ -16091,7 +16749,7 @@ function styledSection(config) {
16091
16749
  // No fallback needed - transform handles all cases via defaultSpacing
16092
16750
  }
16093
16751
  },
16094
- allowOverflow: {
16752
+ allowOverflow: allowOverflow ? true : {
16095
16753
  $bind: {
16096
16754
  from: `${bindFrom}.background`,
16097
16755
  transforms: [{ id: "background.resolveAllowOverflow" }],
@@ -16679,7 +17337,10 @@ function hasFixedFrameBackgroundMotion(value) {
16679
17337
  function isTileTreatment(value) {
16680
17338
  return typeof value === "string" && tileTreatmentSet.has(value);
16681
17339
  }
16682
- var spacingTransform, raisedTransform, roundedTransform, boxStylesCompositeTransform, boxStylesBorderColorTransform, fixedFrameScopeClass, tileTreatmentClassMap, tileTreatmentSet, sectionClassNameTransform, containerStylesResolveClassName, containerStylesResolveBoxClassName, sectionTextColorStyleTransform, sectionHeadingColorStyleTransform, sectionColorsStyleTransform, GAP_CLASS_MAP, GAP_VALUE_MAP, semanticGapTransform, semanticGapValueTransform, boxStylesTransforms;
17340
+ function isEventListTreatment(value) {
17341
+ return typeof value === "string" && eventListTreatmentSet.has(value);
17342
+ }
17343
+ var spacingTransform, raisedTransform, roundedTransform, boxStylesCompositeTransform, boxStylesBorderColorTransform, fixedFrameScopeClass, tileTreatmentClassMap, tileTreatmentSet, eventListTreatmentClassMap, eventListTreatmentSet, sectionClassNameTransform, containerStylesResolveClassName, containerStylesResolveBoxClassName, sectionTextColorStyleTransform, sectionHeadingColorStyleTransform, sectionColorsStyleTransform, GAP_CLASS_MAP, GAP_VALUE_MAP, semanticGapTransform, semanticGapValueTransform, boxStylesTransforms;
16683
17344
  var init_boxStyles2 = __esm({
16684
17345
  "../blocks/src/system/transforms/registry/boxStyles.ts"() {
16685
17346
  "use strict";
@@ -16854,6 +17515,11 @@ var init_boxStyles2 = __esm({
16854
17515
  "brand-depth": "rb-tile-treatment-brand-depth"
16855
17516
  };
16856
17517
  tileTreatmentSet = new Set(tileTreatmentValues);
17518
+ eventListTreatmentClassMap = {
17519
+ plain: "",
17520
+ "lined-panel": "rb-event-list-treatment-lined-panel"
17521
+ };
17522
+ eventListTreatmentSet = new Set(eventListTreatmentValues);
16857
17523
  sectionClassNameTransform = {
16858
17524
  id: "sectionStyles.resolveClassName",
16859
17525
  kind: "string",
@@ -16921,6 +17587,17 @@ var init_boxStyles2 = __esm({
16921
17587
  `[sectionStyles] Invalid tileTreatment value in _sectionStyles: "${tileTreatment}". Expected one of: ${tileTreatmentValues.join(", ")}.`
16922
17588
  );
16923
17589
  }
17590
+ const eventListTreatment = input?.eventListTreatment;
17591
+ if (isEventListTreatment(eventListTreatment)) {
17592
+ const eventListTreatmentClass = eventListTreatmentClassMap[eventListTreatment];
17593
+ if (eventListTreatmentClass) {
17594
+ classes.push(eventListTreatmentClass);
17595
+ }
17596
+ } else if (typeof eventListTreatment === "string" && process.env.NODE_ENV !== "production") {
17597
+ console.warn(
17598
+ `[sectionStyles] Invalid eventListTreatment value in _sectionStyles: "${eventListTreatment}". Expected one of: ${eventListTreatmentValues.join(", ")}.`
17599
+ );
17600
+ }
16924
17601
  if (hasFixedFrameBackgroundMotion(input)) {
16925
17602
  classes.push(fixedFrameScopeClass);
16926
17603
  }
@@ -17403,6 +18080,42 @@ var init_sectionState = __esm({
17403
18080
  }
17404
18081
  });
17405
18082
 
18083
+ // ../blocks/src/system/node/fragments/headingDecoration.ts
18084
+ function headingDecoration({
18085
+ bindFrom = defaultBindFrom,
18086
+ family,
18087
+ placement,
18088
+ className
18089
+ }) {
18090
+ return el(
18091
+ "div",
18092
+ {
18093
+ "aria-hidden": "true",
18094
+ className: {
18095
+ $bind: {
18096
+ from: bindFrom,
18097
+ transforms: [
18098
+ {
18099
+ id: "ui.headingDecorationClassName",
18100
+ options: { baseClass: className, family }
18101
+ }
18102
+ ]
18103
+ }
18104
+ }
18105
+ },
18106
+ null,
18107
+ when(`${bindFrom}.placement`, { equals: placement })
18108
+ );
18109
+ }
18110
+ var defaultBindFrom;
18111
+ var init_headingDecoration = __esm({
18112
+ "../blocks/src/system/node/fragments/headingDecoration.ts"() {
18113
+ "use strict";
18114
+ init_builder();
18115
+ defaultBindFrom = "_sectionStyles.headingDecoration";
18116
+ }
18117
+ });
18118
+
17406
18119
  // ../blocks/src/system/node/fragments/index.ts
17407
18120
  var init_fragments = __esm({
17408
18121
  "../blocks/src/system/node/fragments/index.ts"() {
@@ -17425,6 +18138,7 @@ var init_fragments = __esm({
17425
18138
  init_sectionState();
17426
18139
  init_classNameBinding();
17427
18140
  init_eyebrow();
18141
+ init_headingDecoration();
17428
18142
  }
17429
18143
  });
17430
18144
 
@@ -17481,47 +18195,48 @@ function validateFieldDefinitions(fields3, fragmentId) {
17481
18195
  function prefixFieldId(field, scope) {
17482
18196
  const cloned = cloneFieldDefinition2(field);
17483
18197
  cloned.id = `${scope}.${field.id}`;
17484
- cloned.defaultValue = cloneUnknown(cloned.defaultValue);
18198
+ const defaultValue = cloned.defaultValue;
18199
+ cloned.defaultValue = cloneUnknown(defaultValue);
17485
18200
  cloned.visibleRoles = cloned.visibleRoles ? [...cloned.visibleRoles] : void 0;
17486
18201
  cloned.ui = cloneUnknown(cloned.ui);
17487
18202
  return cloned;
17488
18203
  }
17489
18204
  function cloneFieldDefinition2(field) {
17490
- switch (field.type) {
17491
- case "repeater":
17492
- if (field.polymorphic && field.itemTypes) {
17493
- return {
17494
- ...field,
17495
- polymorphic: true,
17496
- itemTypes: Object.fromEntries(
17497
- Object.entries(field.itemTypes).map(([key, itemType]) => [
17498
- key,
17499
- {
17500
- ...itemType,
17501
- fields: itemType.fields.map(cloneFieldDefinition2)
17502
- }
17503
- ])
17504
- )
17505
- };
17506
- } else if (field.schema) {
17507
- return {
17508
- ...field,
17509
- schema: {
17510
- fields: field.schema.fields.map(cloneFieldDefinition2)
17511
- }
17512
- };
17513
- }
17514
- return { ...field };
17515
- case "group":
18205
+ if (field.type === "repeater") {
18206
+ if (field.polymorphic && field.itemTypes) {
18207
+ return {
18208
+ ...field,
18209
+ polymorphic: true,
18210
+ itemTypes: Object.fromEntries(
18211
+ Object.entries(field.itemTypes).map(([key, itemType]) => [
18212
+ key,
18213
+ {
18214
+ ...itemType,
18215
+ fields: itemType.fields.map(cloneFieldDefinition2)
18216
+ }
18217
+ ])
18218
+ )
18219
+ };
18220
+ }
18221
+ if (field.schema) {
17516
18222
  return {
17517
18223
  ...field,
17518
18224
  schema: {
17519
18225
  fields: field.schema.fields.map(cloneFieldDefinition2)
17520
18226
  }
17521
18227
  };
17522
- default:
17523
- return { ...field };
18228
+ }
18229
+ return { ...field };
17524
18230
  }
18231
+ if (field.type === "group") {
18232
+ return {
18233
+ ...field,
18234
+ schema: {
18235
+ fields: field.schema.fields.map(cloneFieldDefinition2)
18236
+ }
18237
+ };
18238
+ }
18239
+ return { ...field };
17525
18240
  }
17526
18241
  function cloneUnknown(value) {
17527
18242
  if (value == null || typeof value !== "object") {
@@ -18254,6 +18969,7 @@ var init_testimonialsHeading = __esm({
18254
18969
  "use strict";
18255
18970
  init_types13();
18256
18971
  init_builder();
18972
+ init_headingDecoration();
18257
18973
  init_colorStyles();
18258
18974
  testimonialsHeadingFragment = defineFragment({
18259
18975
  id: "testimonialsHeading",
@@ -18284,6 +19000,10 @@ var init_testimonialsHeading = __esm({
18284
19000
  when("content.heading"),
18285
19001
  bind("content.heading")
18286
19002
  ),
19003
+ headingDecoration({
19004
+ family: "short-center-rule",
19005
+ placement: "under-centered-heading"
19006
+ }),
18287
19007
  text(
18288
19008
  {
18289
19009
  as: "p",
@@ -19085,6 +19805,41 @@ var init_faqHeading = __esm({
19085
19805
  });
19086
19806
 
19087
19807
  // ../blocks/src/system/fragments/library/faqAccordion.ts
19808
+ function createFaqAccordionLayout(options = {}) {
19809
+ return accordionList({
19810
+ collection: "content.items",
19811
+ itemName: "faqItem",
19812
+ indexName: "faqIndex",
19813
+ accordionProps: {
19814
+ className: options.rootClassName ?? "accordion-root",
19815
+ type: "single",
19816
+ collapsible: true
19817
+ },
19818
+ itemProps: {
19819
+ className: {
19820
+ $bind: {
19821
+ from: "content._cardStyles",
19822
+ transforms: [
19823
+ {
19824
+ id: "boxStyles.all",
19825
+ options: {
19826
+ axis: "all",
19827
+ includeSpacing: false,
19828
+ baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden"
19829
+ }
19830
+ }
19831
+ ]
19832
+ },
19833
+ fallback: "rb-faq-item"
19834
+ },
19835
+ iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
19836
+ // Legacy theme accordion style
19837
+ iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
19838
+ },
19839
+ triggerFrom: "faqItem.question",
19840
+ contentFrom: "faqItem.answer"
19841
+ });
19842
+ }
19088
19843
  var faqAccordionFragment;
19089
19844
  var init_faqAccordion = __esm({
19090
19845
  "../blocks/src/system/fragments/library/faqAccordion.ts"() {
@@ -19124,40 +19879,7 @@ var init_faqAccordion = __esm({
19124
19879
  }
19125
19880
  }
19126
19881
  ],
19127
- layout: accordionList({
19128
- collection: "content.items",
19129
- itemName: "faqItem",
19130
- indexName: "faqIndex",
19131
- accordionProps: {
19132
- className: "accordion-root",
19133
- // CSS-first: all styling handled by theme CSS
19134
- type: "single",
19135
- collapsible: true
19136
- },
19137
- itemProps: {
19138
- className: {
19139
- $bind: {
19140
- from: "content._cardStyles",
19141
- transforms: [
19142
- {
19143
- id: "boxStyles.all",
19144
- options: {
19145
- axis: "all",
19146
- includeSpacing: false,
19147
- baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden rb-border"
19148
- }
19149
- }
19150
- ]
19151
- },
19152
- fallback: "rb-faq-item"
19153
- },
19154
- iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
19155
- // Legacy theme accordion style
19156
- iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
19157
- },
19158
- triggerFrom: "faqItem.question",
19159
- contentFrom: "faqItem.answer"
19160
- })
19882
+ layout: createFaqAccordionLayout()
19161
19883
  });
19162
19884
  }
19163
19885
  });
@@ -20482,7 +21204,8 @@ function createBlockManifestWithContentShape(config, _contentShape) {
20482
21204
  return createBlockManifest(config);
20483
21205
  }
20484
21206
  function normalizeBlockLayout(layout) {
20485
- return Array.isArray(layout) ? [...layout] : layout;
21207
+ const rawLayout = layout;
21208
+ return Array.isArray(rawLayout) ? rawLayout : rawLayout;
20486
21209
  }
20487
21210
  function deriveComponentName(id) {
20488
21211
  const base = id.replace(/^block\./, "");
@@ -20573,6 +21296,7 @@ function heroSplitImagePane() {
20573
21296
  function splitLayoutWith(children) {
20574
21297
  return styledSection({
20575
21298
  children: styledContainer({
21299
+ baseClassName: "rb-relative rb-isolate rb-overflow-visible",
20576
21300
  children: {
20577
21301
  type: "grid",
20578
21302
  props: {
@@ -20597,6 +21321,7 @@ function splitLayoutWith(children) {
20597
21321
  // The split variants render the image as a real grid column, so suppress
20598
21322
  // the default absolute background image layer while keeping color/overlay.
20599
21323
  renderBackgroundImage: false,
21324
+ allowOverflow: true,
20600
21325
  baseClass: ""
20601
21326
  });
20602
21327
  }
@@ -20797,6 +21522,21 @@ function introHeading(className) {
20797
21522
  bind("content.title")
20798
21523
  );
20799
21524
  }
21525
+ function introHeadingGroup(className) {
21526
+ return stack(
21527
+ {
21528
+ gap: "sm",
21529
+ className: "rb-intro-heading-group"
21530
+ },
21531
+ [
21532
+ introHeading(className),
21533
+ headingDecoration({
21534
+ family: "organic-squiggle",
21535
+ placement: "after-heading"
21536
+ })
21537
+ ]
21538
+ );
21539
+ }
20800
21540
  function introBody(className = "rb-prose rb-max-w-none") {
20801
21541
  return richText({ className }, bind("content.body"));
20802
21542
  }
@@ -20815,6 +21555,10 @@ function introCopyStack(options = {}) {
20815
21555
  },
20816
21556
  [
20817
21557
  introHeading(options.headingClassName ?? "rb-intro-title"),
21558
+ headingDecoration({
21559
+ family: "organic-squiggle",
21560
+ placement: "after-heading"
21561
+ }),
20818
21562
  introBody(options.bodyClassName),
20819
21563
  introCtas(options.ctaJustify)
20820
21564
  ]
@@ -20864,7 +21608,7 @@ var init_intro = __esm({
20864
21608
  className: "rb-intro rb-intro-statement rb-grid rb-grid-cols-1 rb-gap-8 rb-md-grid-cols-2 rb-md-items-start"
20865
21609
  },
20866
21610
  [
20867
- introHeading("rb-intro-title rb-max-w-xl"),
21611
+ introHeadingGroup("rb-intro-title rb-max-w-xl"),
20868
21612
  stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
20869
21613
  introBody(),
20870
21614
  introCtas("start")
@@ -20885,7 +21629,7 @@ var init_intro = __esm({
20885
21629
  className: "rb-intro rb-intro-statement-media rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-3 rb-lg-items-center"
20886
21630
  },
20887
21631
  [
20888
- introHeading("rb-intro-title rb-max-w-xl"),
21632
+ introHeadingGroup("rb-intro-title rb-max-w-xl"),
20889
21633
  stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
20890
21634
  introBody(),
20891
21635
  introCtas("start")
@@ -21966,7 +22710,7 @@ function fragmentLayoutNode(layout) {
21966
22710
  function isNodeDefinitionArray(layout) {
21967
22711
  return Array.isArray(layout);
21968
22712
  }
21969
- var faqComposition, headingLayout, accordionLayout, defaultLayout, twoColumnLayout, faqManifest, faqBlockDefinition;
22713
+ var faqComposition, headingLayout, accordionLayout, questionColumnsAccordionLayout, defaultLayout, twoColumnLayout, questionColumnsLayout, faqManifest, faqBlockDefinition;
21970
22714
  var init_faq = __esm({
21971
22715
  "../blocks/src/system/blocks/faq.ts"() {
21972
22716
  "use strict";
@@ -21974,6 +22718,7 @@ var init_faq = __esm({
21974
22718
  init_styledSection();
21975
22719
  init_defineBlock();
21976
22720
  init_fragments2();
22721
+ init_faqAccordion();
21977
22722
  init_builder();
21978
22723
  init_boxStyles();
21979
22724
  faqComposition = composeFragments([
@@ -21982,6 +22727,9 @@ var init_faq = __esm({
21982
22727
  ]);
21983
22728
  headingLayout = fragmentLayoutNode(faqHeadingFragment.layout);
21984
22729
  accordionLayout = fragmentLayoutNode(faqAccordionFragment.layout);
22730
+ questionColumnsAccordionLayout = createFaqAccordionLayout({
22731
+ rootClassName: "accordion-root rb-faq-question-columns rb-grid rb-grid-cols-1 rb-gap-4 rb-lg-grid-cols-2"
22732
+ });
21985
22733
  defaultLayout = styledSection({
21986
22734
  children: styledContainer({
21987
22735
  baseClassName: "rb-relative rb-isolate",
@@ -21995,11 +22743,24 @@ var init_faq = __esm({
21995
22743
  children: el(
21996
22744
  "div",
21997
22745
  {
21998
- className: "rb-faq-two-column rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
22746
+ className: "rb-faq-split-heading rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
21999
22747
  },
22000
22748
  [
22001
- el("div", { className: "rb-faq-two-column-heading" }, [headingLayout]),
22002
- el("div", { className: "rb-faq-two-column-accordion" }, [accordionLayout])
22749
+ el("div", { className: "rb-faq-split-heading-copy" }, [headingLayout]),
22750
+ el("div", { className: "rb-faq-split-heading-accordion" }, [accordionLayout])
22751
+ ]
22752
+ )
22753
+ }),
22754
+ baseClass: ""
22755
+ });
22756
+ questionColumnsLayout = styledSection({
22757
+ children: styledContainer({
22758
+ baseClassName: "rb-relative rb-isolate",
22759
+ children: stack(
22760
+ { gap: "xl", className: "rb-w-full" },
22761
+ [
22762
+ headingLayout,
22763
+ questionColumnsAccordionLayout
22003
22764
  ]
22004
22765
  )
22005
22766
  }),
@@ -22024,7 +22785,8 @@ var init_faq = __esm({
22024
22785
  layout: defaultLayout,
22025
22786
  variants: {
22026
22787
  default: defaultLayout,
22027
- "two-column": twoColumnLayout
22788
+ "two-column": twoColumnLayout,
22789
+ "question-columns": questionColumnsLayout
22028
22790
  },
22029
22791
  defaultVariant: "default",
22030
22792
  variantOptions: {
@@ -22035,6 +22797,10 @@ var init_faq = __esm({
22035
22797
  "two-column": {
22036
22798
  label: "Two column",
22037
22799
  description: "A left heading column with FAQ items on the right."
22800
+ },
22801
+ "question-columns": {
22802
+ label: "Question columns",
22803
+ description: "A full-width heading above FAQ items split into two columns."
22038
22804
  }
22039
22805
  },
22040
22806
  description: "Accordion of frequently asked questions and answers.",
@@ -22049,6 +22815,9 @@ var init_faq = __esm({
22049
22815
 
22050
22816
  // ../blocks/src/system/transforms/registry/formatting.ts
22051
22817
  import { z as z35 } from "zod";
22818
+ function toUnknownArray(value) {
22819
+ return Array.isArray(value) ? value : [];
22820
+ }
22052
22821
  var uppercaseTransform, fallbackTransform, dateFormatShort, arrayLengthTransform, jsonArrayTransform, csvTransform, marqueeLoopOptionsSchema, marqueeLoopTransform, formattingTransforms;
22053
22822
  var init_formatting = __esm({
22054
22823
  "../blocks/src/system/transforms/registry/formatting.ts"() {
@@ -22129,11 +22898,12 @@ var init_formatting = __esm({
22129
22898
  summary: "Repeat an array to a minimum length, then duplicate it for seamless marquee looping",
22130
22899
  schema: marqueeLoopOptionsSchema,
22131
22900
  run: (value, options) => {
22132
- if (!Array.isArray(value) || value.length === 0) return [];
22901
+ const items = toUnknownArray(value);
22902
+ if (items.length === 0) return [];
22133
22903
  const minItems = options?.minItems ?? 10;
22134
22904
  const base = [];
22135
22905
  while (base.length < minItems) {
22136
- base.push(...value);
22906
+ base.push(...items);
22137
22907
  if (base.length > 1e3) break;
22138
22908
  }
22139
22909
  return [...base, ...base];
@@ -22156,6 +22926,15 @@ import { z as z36 } from "zod";
22156
22926
  function isEyebrowTreatment(value) {
22157
22927
  return typeof value === "string" && eyebrowTreatmentSet.has(value);
22158
22928
  }
22929
+ function isHeadingDecorationFamily(value) {
22930
+ return typeof value === "string" && headingDecorationFamilySet.has(value);
22931
+ }
22932
+ function isHeadingDecorationPlacement(value) {
22933
+ return typeof value === "string" && headingDecorationPlacementSet.has(value);
22934
+ }
22935
+ function isHeadingDecorationColorToken(value) {
22936
+ return typeof value === "string" && headingDecorationColorTokenSet.has(value);
22937
+ }
22159
22938
  function resolveBorderColorValue(border2) {
22160
22939
  if (border2.enabled === false) return void 0;
22161
22940
  const rawColorToken = typeof border2.colorToken === "string" ? border2.colorToken.trim() : "";
@@ -22194,6 +22973,14 @@ function readString(obj, key) {
22194
22973
  const v = obj[key];
22195
22974
  return typeof v === "string" ? v : void 0;
22196
22975
  }
22976
+ function resolveGeneratedHeroLayoutStyles(content) {
22977
+ const raw = content._heroLayoutStyles;
22978
+ return isPlainObject(raw) ? raw : null;
22979
+ }
22980
+ function readHeroLayoutString(content, generatedKey, fallbackKey = generatedKey) {
22981
+ const generated = resolveGeneratedHeroLayoutStyles(content);
22982
+ return generated && typeof generated[generatedKey] === "string" ? generated[generatedKey] : readString(content, fallbackKey);
22983
+ }
22197
22984
  function resolveHeroVariant(content) {
22198
22985
  const variant = readString(content, "variant");
22199
22986
  if (variant && variant.trim()) return variant.trim();
@@ -22202,14 +22989,14 @@ function resolveHeroVariant(content) {
22202
22989
  return null;
22203
22990
  }
22204
22991
  function resolveHeroContentAlignment(content) {
22205
- const raw = readString(content, "contentAlignment");
22992
+ const raw = readHeroLayoutString(content, "contentAlignment");
22206
22993
  if (raw === "left" || raw === "center" || raw === "right") return raw;
22207
22994
  const variant = resolveHeroVariant(content);
22208
22995
  if (variant === "split" || variant === "splitReverse") return "left";
22209
22996
  return "center";
22210
22997
  }
22211
22998
  function resolveHeroVerticalAlignment(content) {
22212
- const raw = readString(content, "verticalAlignment");
22999
+ const raw = readHeroLayoutString(content, "verticalAlignment");
22213
23000
  if (raw === "top" || raw === "center" || raw === "bottom") return raw;
22214
23001
  const sectionStyles = asPartialObject(content._sectionStyles);
22215
23002
  const minHeight = sectionStyles?.minHeight;
@@ -22219,12 +23006,30 @@ function resolveHeroVerticalAlignment(content) {
22219
23006
  return "top";
22220
23007
  }
22221
23008
  function resolveHeroContentMaxWidth(content) {
22222
- const raw = readString(content, "contentMaxWidth");
23009
+ const raw = readHeroLayoutString(content, "contentMaxWidth");
22223
23010
  if (raw === "default" || raw === "narrow" || raw === "medium" || raw === "wide")
22224
23011
  return raw;
22225
23012
  return "default";
22226
23013
  }
22227
- var joinClasses3, eyebrowTreatmentClassMap, eyebrowTreatmentSet, imageGalleryCornerClassMap, parseRatio, ratioToHeightFactor, headerNavClassOptionsSchema, headerNavLinkClassTransform, headingClassFromAlignment, bodyClassFromAlignment, stackAlignFromAlignment, sectionStateToneTransform, heroContentWrapperClassSchema, heroContentWrapperClassTransform, heroCtaJustifyTransform, heroStackJustifyFromVerticalAlignmentTransform, heroGridClassFromVerticalAlignmentSchema, heroGridClassFromVerticalAlignmentTransform, imageFragmentClassOptionsSchema, imageFragmentClassTransform, imageFragmentSizeOptionsSchema, imageFragmentSizeTransform, conditionalClassOptionsSchema, conditionalClassTransform, twoColumnContainerClassOptionsSchema, twoColumnContainerClassTransform, twoColumnFlexBasisOptionsSchema, twoColumnFlexBasisTransform, columnsDesktopSpanClassOptionsSchema, columnsDesktopSpanClassTransform, resolveColumnsGridCols, columnsGridColsTransform, columnsColsAtTransform, ratioToHeightFactorTransform, uiTransforms;
23014
+ function resolveHeroTypographyScale(content) {
23015
+ const raw = readHeroLayoutString(
23016
+ content,
23017
+ "typographyScale",
23018
+ "heroTypographyScale"
23019
+ );
23020
+ if (raw === "quiet" || raw === "editorial" || raw === "display" || raw === "poster") {
23021
+ return raw;
23022
+ }
23023
+ return null;
23024
+ }
23025
+ function resolveHeroTitleLength(content) {
23026
+ const headline = readString(content, "headline")?.trim() ?? "";
23027
+ const wordCount = headline.length === 0 ? 0 : headline.split(/\s+/).length;
23028
+ if (headline.length > heroTitleLengthThresholds.long.maxCharacters || wordCount > heroTitleLengthThresholds.long.maxWords) return "long";
23029
+ if (headline.length > heroTitleLengthThresholds.medium.maxCharacters || wordCount > heroTitleLengthThresholds.medium.maxWords) return "medium";
23030
+ return "short";
23031
+ }
23032
+ var joinClasses3, eyebrowTreatmentClassMap, eyebrowTreatmentSet, headingDecorationFamilySet, headingDecorationPlacementSet, headingDecorationColorTokenSet, imageGalleryCornerClassMap, parseRatio, ratioToHeightFactor, headerNavClassOptionsSchema, headerNavLinkClassTransform, headingClassFromAlignment, bodyClassFromAlignment, stackAlignFromAlignment, sectionStateToneTransform, heroTitleLengthThresholds, heroContentWrapperClassSchema, heroContentWrapperClassTransform, heroCtaJustifyTransform, heroStackJustifyFromVerticalAlignmentTransform, heroGridClassFromVerticalAlignmentSchema, heroGridClassFromVerticalAlignmentTransform, imageFragmentClassOptionsSchema, imageFragmentClassTransform, imageFragmentSizeOptionsSchema, imageFragmentSizeTransform, conditionalClassOptionsSchema, conditionalClassTransform, twoColumnContainerClassOptionsSchema, twoColumnContainerClassTransform, twoColumnFlexBasisOptionsSchema, twoColumnFlexBasisTransform, columnsDesktopSpanClassOptionsSchema, columnsDesktopSpanClassTransform, resolveColumnsGridCols, columnsGridColsTransform, columnsColsAtTransform, ratioToHeightFactorTransform, uiTransforms;
22228
23033
  var init_ui = __esm({
22229
23034
  "../blocks/src/system/transforms/registry/ui.ts"() {
22230
23035
  "use strict";
@@ -22244,6 +23049,9 @@ var init_ui = __esm({
22244
23049
  "accent-pill-bounce": "rb-eyebrow-treatment-pill rb-eyebrow-treatment-accent rb-eyebrow-treatment-pill-bounce"
22245
23050
  };
22246
23051
  eyebrowTreatmentSet = new Set(eyebrowTreatmentValues);
23052
+ headingDecorationFamilySet = new Set(visibleHeadingDecorationFamilyValues);
23053
+ headingDecorationPlacementSet = new Set(visibleHeadingDecorationPlacementValues);
23054
+ headingDecorationColorTokenSet = new Set(headingDecorationColorTokenValues);
22247
23055
  imageGalleryCornerClassMap = {
22248
23056
  none: "",
22249
23057
  sm: "rb-rounded-sm",
@@ -22316,6 +23124,10 @@ var init_ui = __esm({
22316
23124
  summary: "Map semantic section-state kind to feedback tone",
22317
23125
  run: (value) => sectionStateToneFromUnknown(value)
22318
23126
  };
23127
+ heroTitleLengthThresholds = {
23128
+ medium: { maxCharacters: 42, maxWords: 6 },
23129
+ long: { maxCharacters: 78, maxWords: 11 }
23130
+ };
22319
23131
  heroContentWrapperClassSchema = z36.object({
22320
23132
  base: z36.string().optional()
22321
23133
  });
@@ -22328,6 +23140,8 @@ var init_ui = __esm({
22328
23140
  const content = isPlainObject(value) ? value : isPlainObject(context.data) ? context.data : {};
22329
23141
  const alignment = resolveHeroContentAlignment(content);
22330
23142
  const maxWidth = resolveHeroContentMaxWidth(content);
23143
+ const typographyScale = resolveHeroTypographyScale(content);
23144
+ const titleLength = resolveHeroTitleLength(content);
22331
23145
  const textAlignClass = alignment === "center" ? "rb-text-center" : alignment === "right" ? "rb-text-right" : "rb-text-left";
22332
23146
  const maxWidthClass = maxWidth === "narrow" ? "rb-max-w-2xl" : maxWidth === "medium" ? "rb-max-w-3xl" : maxWidth === "wide" ? "rb-max-w-5xl" : "";
22333
23147
  const positionClass = alignment === "center" ? "rb-mx-auto" : alignment === "right" ? "rb-ml-auto" : "";
@@ -22335,7 +23149,9 @@ var init_ui = __esm({
22335
23149
  options?.base,
22336
23150
  textAlignClass,
22337
23151
  maxWidthClass,
22338
- positionClass
23152
+ positionClass,
23153
+ typographyScale ? `rb-hero-typography-${typographyScale}` : "",
23154
+ `rb-hero-title-${titleLength}`
22339
23155
  ]);
22340
23156
  }
22341
23157
  };
@@ -22635,11 +23451,72 @@ var init_ui = __esm({
22635
23451
  const treatment = isEyebrowTreatment(value) ? value : "plain";
22636
23452
  return joinClasses3([baseClass, eyebrowTreatmentClassMap[treatment]]);
22637
23453
  }
23454
+ },
23455
+ {
23456
+ id: "ui.headingDecorationClassName",
23457
+ kind: "string",
23458
+ summary: "Apply constrained Theme V2 heading decoration classes",
23459
+ run: (value, options) => {
23460
+ const baseClass = typeof options?.baseClass === "string" && options.baseClass.trim() ? options.baseClass : "rb-heading-decoration";
23461
+ const decoration = asPartialObject(value);
23462
+ const family = isHeadingDecorationFamily(decoration?.family) ? decoration.family : null;
23463
+ const allowedFamily = isHeadingDecorationFamily(options?.family) ? options.family : null;
23464
+ const placement = isHeadingDecorationPlacement(decoration?.placement) ? decoration.placement : null;
23465
+ const colorToken = isHeadingDecorationColorToken(decoration?.colorToken) ? decoration.colorToken : "primary";
23466
+ if (!family || !placement) return "rb-hidden";
23467
+ if (allowedFamily && family !== allowedFamily) return "rb-hidden";
23468
+ return joinClasses3([
23469
+ baseClass,
23470
+ `rb-heading-decoration-${family}`,
23471
+ `rb-heading-decoration-placement-${placement}`,
23472
+ `rb-heading-decoration-color-${colorToken}`
23473
+ ]);
23474
+ }
22638
23475
  }
22639
23476
  ];
22640
23477
  }
22641
23478
  });
22642
23479
 
23480
+ // ../theme-core/src/siteChromePlacement.ts
23481
+ function parseHeaderPositioning(value) {
23482
+ return isHeaderPositioning(value) ? value : "static";
23483
+ }
23484
+ function isHeaderPositioning(value) {
23485
+ return typeof value === "string" && HEADER_POSITIONINGS.includes(value);
23486
+ }
23487
+ function planSiteChromePlacement(positioning) {
23488
+ switch (positioning) {
23489
+ case "static":
23490
+ return {
23491
+ kind: "static",
23492
+ headerRootClassName: null,
23493
+ standaloneShellClassName: null
23494
+ };
23495
+ case "sticky":
23496
+ return {
23497
+ kind: "sticky",
23498
+ headerRootClassName: "rb-sticky rb-top-0",
23499
+ standaloneShellClassName: "sticky top-0 z-40 w-full"
23500
+ };
23501
+ case "fixed":
23502
+ return {
23503
+ kind: "fixed",
23504
+ headerRootClassName: "rb-fixed rb-top-0 rb-left-0 rb-right-0",
23505
+ standaloneShellClassName: "fixed left-0 right-0 top-0 z-40 w-full"
23506
+ };
23507
+ default:
23508
+ return assertNever(positioning);
23509
+ }
23510
+ }
23511
+ var HEADER_POSITIONINGS;
23512
+ var init_siteChromePlacement = __esm({
23513
+ "../theme-core/src/siteChromePlacement.ts"() {
23514
+ "use strict";
23515
+ init_types2();
23516
+ HEADER_POSITIONINGS = ["static", "sticky", "fixed"];
23517
+ }
23518
+ });
23519
+
22643
23520
  // ../blocks/src/system/transforms/registry/layout.ts
22644
23521
  import { z as z37 } from "zod";
22645
23522
  function resolveBackgroundVisualStyles(backgroundColor, tokens, defaultToken = "surface") {
@@ -22734,6 +23611,7 @@ var init_layout = __esm({
22734
23611
  init_colorConversion();
22735
23612
  init_core3();
22736
23613
  init_colorStyles();
23614
+ init_siteChromePlacement();
22737
23615
  joinClasses4 = (parts) => parts.filter(
22738
23616
  (part) => typeof part === "string" && part.trim().length > 0
22739
23617
  ).join(" ").replace(/\s+/g, " ").trim();
@@ -22782,7 +23660,8 @@ var init_layout = __esm({
22782
23660
  ...options
22783
23661
  };
22784
23662
  const content = asPartialObject(value) ?? {};
22785
- const positioning = typeof content.positioning === "string" ? content.positioning : "static";
23663
+ const positioning = parseHeaderPositioning(content.positioning);
23664
+ const placement = planSiteChromePlacement(positioning);
22786
23665
  const shrinkOnScroll = Boolean(content.shrinkOnScroll);
22787
23666
  const header = asPartialObject(value);
22788
23667
  const visuals = resolveHeaderVisualStyles(header, context.theme);
@@ -22794,14 +23673,14 @@ var init_layout = __esm({
22794
23673
  if (config.blur) classes.push(config.blur);
22795
23674
  if (config.blurSupport) classes.push(config.blurSupport);
22796
23675
  }
22797
- if (positioning === "sticky") {
23676
+ if (placement.kind === "sticky") {
22798
23677
  classes.push(
22799
23678
  visuals.isTransparent ? config.stickyTransparent : config.sticky
22800
23679
  );
22801
- } else if (positioning === "fixed") {
23680
+ } else if (placement.kind === "fixed") {
22802
23681
  classes.push(config.fixed);
22803
23682
  }
22804
- if (shrinkOnScroll && (positioning === "sticky" || positioning === "fixed")) {
23683
+ if (shrinkOnScroll && placement.kind !== "static") {
22805
23684
  classes.push(config.shrink);
22806
23685
  }
22807
23686
  const VALID_VARIANTS = [
@@ -23351,10 +24230,21 @@ var init_responsiveDisplay = __esm({
23351
24230
  var init_shared2 = __esm({
23352
24231
  "../blocks/src/system/runtime/header/shared.ts"() {
23353
24232
  "use strict";
24233
+ init_siteChromePlacement();
23354
24234
  init_responsiveDisplay();
23355
24235
  }
23356
24236
  });
23357
24237
 
24238
+ // ../theme-core/src/siteChromeOverlayClearance.ts
24239
+ var SITE_CHROME_VISIBLE_HEADER_ATTR, SITE_CHROME_VISIBLE_HEADER_SELECTOR;
24240
+ var init_siteChromeOverlayClearance = __esm({
24241
+ "../theme-core/src/siteChromeOverlayClearance.ts"() {
24242
+ "use strict";
24243
+ SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
24244
+ SITE_CHROME_VISIBLE_HEADER_SELECTOR = `[${SITE_CHROME_VISIBLE_HEADER_ATTR}="true"]`;
24245
+ }
24246
+ });
24247
+
23358
24248
  // ../blocks/src/system/blocks/site-header.ts
23359
24249
  var logoRow, centeredLogoRow, createNavRow, headerCta, mobileCta, mobileToggleIcon, mobileToggleButton, mobileOverlayToggleButton, mobileNavList, mobileOverlayHeader, mobileOverlayBody, mobileOverlay, mobileHeaderBar, classicLayout2, centeredLayout, transparentLayout, floatingLayout, headerLayout, siteHeaderManifest, siteHeaderBlockDefinition;
23360
24250
  var init_site_header = __esm({
@@ -23366,6 +24256,7 @@ var init_site_header = __esm({
23366
24256
  init_defineBlock();
23367
24257
  init_shared2();
23368
24258
  init_colorStyles();
24259
+ init_siteChromeOverlayClearance();
23369
24260
  logoRow = link(
23370
24261
  {
23371
24262
  href: "/",
@@ -23637,6 +24528,7 @@ var init_site_header = __esm({
23637
24528
  );
23638
24529
  floatingLayout = inline(
23639
24530
  {
24531
+ [SITE_CHROME_VISIBLE_HEADER_ATTR]: "true",
23640
24532
  className: bindProp("$root.theme.header.maxWidth", {
23641
24533
  transforms: pipe(
23642
24534
  tx("layout.maxWidthClass", {
@@ -24659,6 +25551,10 @@ var init_feature_cards = __esm({
24659
25551
  when("content.title"),
24660
25552
  bind("content.title")
24661
25553
  ),
25554
+ headingDecoration({
25555
+ family: "short-center-rule",
25556
+ placement: "under-centered-heading"
25557
+ }),
24662
25558
  richText(
24663
25559
  {
24664
25560
  className: "rb-feature-cards-description rb-prose rb-mx-auto rb-max-w-none",
@@ -25936,10 +26832,10 @@ function normalizeEventCategoryIds(value) {
25936
26832
  if (Array.isArray(value)) {
25937
26833
  return normalizeIdList(
25938
26834
  value.filter((entry) => typeof entry === "string")
25939
- ).map(asEventCategoryId);
26835
+ ).map(unsafeAsEventCategoryId);
25940
26836
  }
25941
26837
  if (typeof value === "string") {
25942
- return normalizeIdList(value.split(",")).map(asEventCategoryId);
26838
+ return normalizeIdList(value.split(",")).map(unsafeAsEventCategoryId);
25943
26839
  }
25944
26840
  return [];
25945
26841
  }
@@ -25952,7 +26848,7 @@ function normalizeEventVenueId(value) {
25952
26848
  return null;
25953
26849
  }
25954
26850
  const trimmed = value.trim();
25955
- return trimmed ? asVenueId(trimmed) : null;
26851
+ return trimmed ? unsafeAsVenueId(trimmed) : null;
25956
26852
  }
25957
26853
  function normalizeEventStaffMemberId(value) {
25958
26854
  if (typeof value !== "string") {
@@ -25961,7 +26857,7 @@ function normalizeEventStaffMemberId(value) {
25961
26857
  const trimmed = value.trim();
25962
26858
  return trimmed ? trimmed : null;
25963
26859
  }
25964
- var eventBlockKindValues, eventSurfacePresetValues, eventSurfaceScopeValues, eventScheduleScopeValues, asEventCategoryId, asVenueId;
26860
+ var eventBlockKindValues, eventSurfacePresetValues, eventSurfaceScopeValues, eventScheduleScopeValues, unsafeAsEventCategoryId, unsafeAsVenueId;
25965
26861
  var init_filtering = __esm({
25966
26862
  "../blocks/src/system/blocks/events/shared/filtering.ts"() {
25967
26863
  "use strict";
@@ -25980,8 +26876,8 @@ var init_filtering = __esm({
25980
26876
  "custom"
25981
26877
  ];
25982
26878
  eventScheduleScopeValues = ["any", "recurring", "oneOff"];
25983
- asEventCategoryId = (value) => value;
25984
- asVenueId = (value) => value;
26879
+ unsafeAsEventCategoryId = (value) => value;
26880
+ unsafeAsVenueId = (value) => value;
25985
26881
  }
25986
26882
  });
25987
26883
 
@@ -27309,7 +28205,7 @@ var init_event_spotlight = __esm({
27309
28205
  // ../blocks/src/system/runtime/nodes/events/shared/utils.ts
27310
28206
  function getContainerClass(layout, columns) {
27311
28207
  if (layout === "compact") {
27312
- return "event-listing-compact-container rb-flex rb-flex-col rb-gap-2";
28208
+ return "event-listing-compact-container rb-flex rb-flex-col";
27313
28209
  }
27314
28210
  if (layout === "stack") {
27315
28211
  return "rb-flex rb-flex-col rb-gap-6";
@@ -30336,6 +31232,7 @@ var init_shop_commerce_shared = __esm({
30336
31232
  storedProductCartItemSchema = z56.object({
30337
31233
  kind: z56.literal("product"),
30338
31234
  productId: z56.string().min(1),
31235
+ productCategoryId: z56.string().min(1).optional().nullable(),
30339
31236
  variantId: z56.string().min(1).optional().nullable(),
30340
31237
  title: z56.string().min(1),
30341
31238
  variantTitle: z56.string().optional().nullable(),
@@ -32934,6 +33831,14 @@ function scheduleDetailsCapable() {
32934
33831
  tileTreatments: scheduleTileTreatments
32935
33832
  });
32936
33833
  }
33834
+ function eventListCapable() {
33835
+ return declareBlockDesignCapability({
33836
+ sectionSurfaces: "supported",
33837
+ contentFrames: ["plain"],
33838
+ itemSurfaces: "unsupported",
33839
+ eventListTreatments
33840
+ });
33841
+ }
32937
33842
  function defaultBoundaryBias(visualWeight) {
32938
33843
  return visualWeight === "featured" || visualWeight === "immersive" ? "clear" : "soft";
32939
33844
  }
@@ -32972,7 +33877,7 @@ function ensureSystemBlockDefinitionsRegistered() {
32972
33877
  registerBlockDefinition(definition);
32973
33878
  }
32974
33879
  }
32975
- var heroSectionHeights, heroImageSurfaceTreatments, heroImageSurfaceMotions, standardEyebrowTreatments, animatedEyebrowTreatments, allSectionSurfaces, heroSectionSurfaces, scheduleTileTreatments, heroFlow, bodyFlow, mediaFlow, proofFlow, offeringsFlow, conversionFlow, siteChromeFlow, transactionalFlow, utilityFlow, systemBlockDefinitionsRaw, systemBlockDefinitions, defaultsRegistered;
33880
+ var heroSectionHeights, heroImageSurfaceTreatments, heroImageSurfaceMotions, standardEyebrowTreatments, animatedEyebrowTreatments, allSectionSurfaces, heroSectionSurfaces, scheduleTileTreatments, eventListTreatments, heroFlow, bodyFlow, mediaFlow, proofFlow, offeringsFlow, conversionFlow, siteChromeFlow, transactionalFlow, utilityFlow, systemBlockDefinitionsRaw, systemBlockDefinitions, defaultsRegistered;
32976
33881
  var init_blocks = __esm({
32977
33882
  "../blocks/src/system/blocks/index.ts"() {
32978
33883
  "use strict";
@@ -33099,6 +34004,10 @@ var init_blocks = __esm({
33099
34004
  "quiet",
33100
34005
  "brand-depth"
33101
34006
  ];
34007
+ eventListTreatments = [
34008
+ "plain",
34009
+ "lined-panel"
34010
+ ];
33102
34011
  heroFlow = {
33103
34012
  defaultRole: "hero",
33104
34013
  defaultWeight: "dominant",
@@ -33289,7 +34198,8 @@ var init_blocks = __esm({
33289
34198
  flow: bodyFlow,
33290
34199
  layoutProfiles: [
33291
34200
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
33292
- layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" })
34201
+ layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
34202
+ layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
33293
34203
  ]
33294
34204
  })),
33295
34205
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -33383,11 +34293,11 @@ var init_blocks = __esm({
33383
34293
  flow: offeringsFlow,
33384
34294
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "centered", weight: "featured" })]
33385
34295
  })),
33386
- withDesignCapability("block.event-listing", eventListingBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
34296
+ withDesignCapability("block.event-listing", eventListingBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
33387
34297
  flow: offeringsFlow,
33388
34298
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "stack", weight: "standard" })]
33389
34299
  })),
33390
- withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
34300
+ withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
33391
34301
  flow: offeringsFlow,
33392
34302
  layoutProfiles: [
33393
34303
  layoutProfile({ variantKey: "combined", family: "grid", weight: "standard" }),
@@ -34177,6 +35087,14 @@ var init_runtime2 = __esm({
34177
35087
  }
34178
35088
  });
34179
35089
 
35090
+ // ../theme-core/src/accordions/defaults.ts
35091
+ var init_defaults = __esm({
35092
+ "../theme-core/src/accordions/defaults.ts"() {
35093
+ "use strict";
35094
+ init_curatedSiteStyles();
35095
+ }
35096
+ });
35097
+
34180
35098
  // ../theme-core/src/blockOverrides.ts
34181
35099
  var init_blockOverrides = __esm({
34182
35100
  "../theme-core/src/blockOverrides.ts"() {
@@ -34189,6 +35107,7 @@ import React2 from "react";
34189
35107
  var init_componentFactory = __esm({
34190
35108
  "../blocks/src/system/componentFactory.ts"() {
34191
35109
  "use strict";
35110
+ init_defaults();
34192
35111
  init_blockOverrides();
34193
35112
  }
34194
35113
  });
@@ -34314,13 +35233,6 @@ var init_generateAccordionCss = __esm({
34314
35233
  }
34315
35234
  });
34316
35235
 
34317
- // ../theme-core/src/accordions/defaults.ts
34318
- var init_defaults = __esm({
34319
- "../theme-core/src/accordions/defaults.ts"() {
34320
- "use strict";
34321
- }
34322
- });
34323
-
34324
35236
  // ../theme-core/src/inputs/generateInputCss.ts
34325
35237
  var init_generateInputCss = __esm({
34326
35238
  "../theme-core/src/inputs/generateInputCss.ts"() {
@@ -34350,6 +35262,8 @@ var init_generateNavLinkCSS = __esm({
34350
35262
  "../theme-core/src/navigation/generateNavLinkCSS.ts"() {
34351
35263
  "use strict";
34352
35264
  init_types10();
35265
+ init_expandPalette();
35266
+ init_colorConversion();
34353
35267
  init_generateBaseCSS();
34354
35268
  init_generateEffectsCSS();
34355
35269
  }
@@ -34927,6 +35841,21 @@ var init_form_block = __esm({
34927
35841
  }
34928
35842
  });
34929
35843
 
35844
+ // ../theme-core/src/runtime/themeCssVarNames.ts
35845
+ var THEME_RADIUS_CSS_VARS;
35846
+ var init_themeCssVarNames = __esm({
35847
+ "../theme-core/src/runtime/themeCssVarNames.ts"() {
35848
+ "use strict";
35849
+ THEME_RADIUS_CSS_VARS = {
35850
+ block: "--rb-block-radius",
35851
+ button: "--rb-button-radius",
35852
+ input: "--rb-input-radius",
35853
+ legacyCard: "--radius-card",
35854
+ legacyControl: "--radius-control"
35855
+ };
35856
+ }
35857
+ });
35858
+
34930
35859
  // ../theme-core/src/blocks/vars/customer-portal.ts
34931
35860
  function generateCustomerPortalVars({
34932
35861
  themeId
@@ -34940,6 +35869,11 @@ ${root} {
34940
35869
  --cp-muted: rgb(var(--tb-mutedText));
34941
35870
  --cp-border: rgb(var(--tb-border));
34942
35871
  --cp-shadow: var(--shadow-elev);
35872
+ --cp-primary: rgb(var(--tb-primary));
35873
+ --cp-primary-hover: rgb(var(--tb-primary-700, var(--tb-primary)));
35874
+ --cp-error: rgb(var(--tb-destructive));
35875
+ --cp-card-radius: var(${THEME_RADIUS_CSS_VARS.block}, var(${THEME_RADIUS_CSS_VARS.legacyCard}, 0.75rem));
35876
+ --cp-control-radius: var(${THEME_RADIUS_CSS_VARS.input}, var(${THEME_RADIUS_CSS_VARS.legacyControl}, 0.5rem));
34943
35877
 
34944
35878
  /* Shared tab bar (underline style) */
34945
35879
  --rb-tab-border-width: 1px;
@@ -34990,7 +35924,7 @@ ${root} {
34990
35924
  --rb-modal-bg: var(--cp-card-bg);
34991
35925
  --rb-modal-border: var(--cp-card-border);
34992
35926
  --rb-modal-shadow: var(--shadow-lg, var(--shadow-elev));
34993
- --rb-modal-radius: var(--radius-card);
35927
+ --rb-modal-radius: var(--cp-card-radius);
34994
35928
  --rb-modal-max-width: 560px;
34995
35929
 
34996
35930
  /* Header */
@@ -35005,6 +35939,7 @@ ${root} {
35005
35939
  var init_customer_portal = __esm({
35006
35940
  "../theme-core/src/blocks/vars/customer-portal.ts"() {
35007
35941
  "use strict";
35942
+ init_themeCssVarNames();
35008
35943
  }
35009
35944
  });
35010
35945
 
@@ -35171,6 +36106,7 @@ var init_vars = __esm({
35171
36106
  init_event_cards();
35172
36107
  init_appointment_booking2();
35173
36108
  init_form_block();
36109
+ init_customer_portal();
35174
36110
  init_testimonials2();
35175
36111
  init_course_details2();
35176
36112
  init_course_registration2();
@@ -35297,6 +36233,7 @@ var init_buildThemeRuntime = __esm({
35297
36233
  init_colorStyles();
35298
36234
  init_customCss();
35299
36235
  init_responsiveMode();
36236
+ init_themeCssVarNames();
35300
36237
  }
35301
36238
  });
35302
36239
 
@@ -37556,10 +38493,20 @@ var init_ThemeFontLoader = __esm({
37556
38493
  }
37557
38494
  });
37558
38495
 
38496
+ // ../theme-core/src/fonts/uploadFormat.ts
38497
+ var MAX_FONT_UPLOAD_BYTES;
38498
+ var init_uploadFormat = __esm({
38499
+ "../theme-core/src/fonts/uploadFormat.ts"() {
38500
+ "use strict";
38501
+ MAX_FONT_UPLOAD_BYTES = 5 * 1024 * 1024;
38502
+ }
38503
+ });
38504
+
37559
38505
  // ../theme-core/src/fonts/index.ts
37560
38506
  var init_fonts = __esm({
37561
38507
  "../theme-core/src/fonts/index.ts"() {
37562
38508
  "use strict";
38509
+ init_uploadFormat();
37563
38510
  init_types18();
37564
38511
  }
37565
38512
  });
@@ -37579,6 +38526,7 @@ var init_buildThemeRuntimeFromBridge = __esm({
37579
38526
  init_status();
37580
38527
  init_progress();
37581
38528
  init_blocks2();
38529
+ init_themeCssVarNames();
37582
38530
  themeBridgeConfigSchema = z64.object({
37583
38531
  tokens: z64.record(z64.string(), z64.string()),
37584
38532
  typography: z64.object({
@@ -37610,12 +38558,24 @@ var init_buildThemeRuntimeFromBridge = __esm({
37610
38558
  }
37611
38559
  });
37612
38560
 
38561
+ // ../theme-core/src/siteChromePlanning.ts
38562
+ var init_siteChromePlanning = __esm({
38563
+ "../theme-core/src/siteChromePlanning.ts"() {
38564
+ "use strict";
38565
+ init_siteChromePlacement();
38566
+ init_siteChromeOverlayClearance();
38567
+ }
38568
+ });
38569
+
37613
38570
  // ../theme-core/src/siteChrome.tsx
37614
38571
  import { Fragment as Fragment2, jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
37615
38572
  var init_siteChrome = __esm({
37616
38573
  "../theme-core/src/siteChrome.tsx"() {
37617
38574
  "use strict";
37618
38575
  init_types2();
38576
+ init_siteChromeOverlayClearance();
38577
+ init_siteChromePlanning();
38578
+ init_siteChromeOverlayClearance();
37619
38579
  }
37620
38580
  });
37621
38581
 
@@ -37790,11 +38750,11 @@ function normalizeContent(block) {
37790
38750
  }
37791
38751
  function normalizeParams(input) {
37792
38752
  if (!input || typeof input !== "object") return {};
37793
- const entries = Object.entries(input).map(([key, value]) => [
37794
- key,
37795
- coerceToString(value)
37796
- ]);
37797
- return Object.fromEntries(entries);
38753
+ const output = {};
38754
+ for (const [key, value] of Object.entries(input)) {
38755
+ output[key] = coerceToString(value);
38756
+ }
38757
+ return output;
37798
38758
  }
37799
38759
  function isNonArrayObject(value) {
37800
38760
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -38056,7 +39016,7 @@ import { z as z65 } from "zod";
38056
39016
  function unsafeRetypeZodSchema(schema) {
38057
39017
  return schema;
38058
39018
  }
38059
- var navIdListSchema, dashboardNavVisibilityBaseSchema, dashboardNavVisibilityRolesSchema, dashboardNavVisibilitySchema, dashboardNavigationConfigSchema, dashboardConfigSchema, fieldDefinitionInputSchema, nodeDefinitionSchema, sdkLoaderEndpointSchema, loaderParamBindingSchema, loaderParamValueSchema, sdkConfigLoaderSchema, sdkDataLoadersSchema, sdkCustomBlockIdSchema, sdkCustomBlockInputSchema, sdkBlockFieldExtensionInputSchema, sdkBlockFieldExtensionsInputSchema, sdkThemePaletteSchema, sdkThemeConfigSchema, sdkSectionBackgroundSchema, sdkSectionOptionsConfigSchema, sdkContainerOptionsConfigSchema, sdkSiteStyleConfigSchema, sdkSiteLayoutConfigSchema, sdkFieldSelectOptionSchema, sdkBlockFieldConfigSchema, sdkBlockFieldOptionsMapSchema, sdkContentTypeTemplateConfigSchema, sdkContentTypeConfigSchema, sdkContentConfigSchema, SDK_WORKFLOW_ID_MAX_LENGTH, SDK_WORKFLOW_TITLE_MAX_LENGTH, SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH, SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH, SDK_WORKFLOW_ENDPOINT_MAX_LENGTH, SDK_WORKFLOW_TRIGGER_MAX_COUNT, SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH, SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT, SDK_WORKFLOW_MAX_COUNT, SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH, SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH, SDK_WORKFLOW_ID_PATTERN, SDK_WORKFLOW_ENDPOINT_PATTERN, sdkWorkflowIdSchema, sdkWorkflowEndpointSchema, sdkWorkflowManualTriggerSchema, sdkWorkflowTriggerFieldSchema, sdkWorkflowFieldChangedConditionSchema, sdkWorkflowFieldEmptyConditionSchema, sdkWorkflowEntryDraftUpdatedTriggerSchema, sdkWorkflowTriggerSchema, sdkWorkflowConfirmationSchema, sdkWorkflowConfigSchema, sdkWorkflowsSchema, riverbankSiteConfigInputSchema, pushSdkConfigBodySchema;
39019
+ var navIdListSchema, dashboardNavVisibilityBaseSchema, dashboardNavVisibilityRolesSchema, dashboardNavVisibilitySchema, dashboardNavigationConfigSchema, dashboardConfigSchema, fieldDefinitionInputSchema, nodeDefinitionSchema, sdkLoaderEndpointSchema, loaderFallbackScalarSchema, loaderParamBindingSchema, loaderParamValueSchema, sdkConfigLoaderSchema, sdkDataLoadersSchema, sdkCustomBlockIdSchema, sdkCustomBlockInputSchema, sdkBlockFieldExtensionInputSchema, sdkBlockFieldExtensionsInputSchema, sdkThemePaletteSchema, sdkThemeConfigSchema, sdkSectionBackgroundSchema, sdkSectionOptionsConfigSchema, sdkContainerOptionsConfigSchema, sdkSiteStyleConfigSchema, sdkSiteLayoutConfigSchema, sdkFieldSelectOptionSchema, sdkBlockFieldConfigSchema, sdkBlockFieldOptionsMapSchema, sdkContentTypeTemplateConfigSchema, sdkContentTypeOrderingConfigSchema, sdkContentTypeConfigSchema, sdkContentConfigSchema, SDK_WORKFLOW_ID_MAX_LENGTH, SDK_WORKFLOW_TITLE_MAX_LENGTH, SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH, SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH, SDK_WORKFLOW_ENDPOINT_MAX_LENGTH, SDK_WORKFLOW_TRIGGER_MAX_COUNT, SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH, SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT, SDK_WORKFLOW_MAX_COUNT, SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH, SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH, SDK_WORKFLOW_ID_PATTERN, SDK_WORKFLOW_ENDPOINT_PATTERN, sdkWorkflowIdSchema, sdkWorkflowEndpointSchema, sdkWorkflowManualTriggerSchema, sdkWorkflowTriggerFieldSchema, sdkWorkflowFieldChangedConditionSchema, sdkWorkflowFieldEmptyConditionSchema, sdkWorkflowEntryDraftUpdatedTriggerSchema, sdkWorkflowTriggerSchema, sdkWorkflowConfirmationSchema, sdkWorkflowConfigSchema, sdkWorkflowsSchema, riverbankSiteConfigInputSchema, pushSdkConfigBodySchema;
38060
39020
  var init_contracts2 = __esm({
38061
39021
  "../api/src/sdkConfig/contracts.ts"() {
38062
39022
  "use strict";
@@ -38090,10 +39050,16 @@ var init_contracts2 = __esm({
38090
39050
  fieldDefinitionInputSchema = unsafeRetypeZodSchema(fieldSchema);
38091
39051
  nodeDefinitionSchema = unsafeRetypeZodSchema(NodeSchema);
38092
39052
  sdkLoaderEndpointSchema = z65.enum(SUPPORTED_LOADER_ENDPOINTS);
39053
+ loaderFallbackScalarSchema = z65.union([
39054
+ z65.string(),
39055
+ z65.number(),
39056
+ z65.boolean(),
39057
+ z65.null()
39058
+ ]);
38093
39059
  loaderParamBindingSchema = z65.object({
38094
39060
  $bind: z65.object({
38095
39061
  from: z65.string().min(1, "Binding path is required"),
38096
- fallback: z65.string().optional()
39062
+ fallback: loaderFallbackScalarSchema.optional()
38097
39063
  })
38098
39064
  });
38099
39065
  loaderParamValueSchema = z65.union([
@@ -38239,9 +39205,13 @@ var init_contracts2 = __esm({
38239
39205
  sdkContentTypeTemplateConfigSchema = z65.object({
38240
39206
  blocks: z65.array(z65.unknown())
38241
39207
  }).passthrough();
39208
+ sdkContentTypeOrderingConfigSchema = z65.object({
39209
+ mode: z65.enum(["default", "manual"]).optional()
39210
+ }).optional();
38242
39211
  sdkContentTypeConfigSchema = z65.object({
38243
39212
  key: z65.string().min(1),
38244
39213
  fields: z65.array(z65.unknown()),
39214
+ ordering: sdkContentTypeOrderingConfigSchema,
38245
39215
  template: sdkContentTypeTemplateConfigSchema.nullable().optional()
38246
39216
  }).passthrough();
38247
39217
  sdkContentConfigSchema = z65.object({
@@ -38544,6 +39514,93 @@ var init_bookingRefundOutcomes = __esm({
38544
39514
  });
38545
39515
 
38546
39516
  // ../api/src/bookingVerticals.ts
39517
+ import { z as z67 } from "zod";
39518
+ function parseVerticalId(value) {
39519
+ return typeof value === "string" && VERTICAL_ID_SET.has(value) ? value : null;
39520
+ }
39521
+ function parseVerticalPresetId(value) {
39522
+ return typeof value === "string" && VERTICAL_PRESET_ID_SET.has(value) ? value : null;
39523
+ }
39524
+ function getVerticalPresetDefinition(presetId) {
39525
+ const definition = VERTICAL_BOOKING_PRESETS.find((presetDefinition) => presetDefinition.id === presetId);
39526
+ if (!definition) {
39527
+ throw new Error(`Unhandled vertical preset id: ${presetId}`);
39528
+ }
39529
+ return definition;
39530
+ }
39531
+ function toNonEmptyVerticalPresetIds(presetIds) {
39532
+ const firstPresetId = presetIds[0];
39533
+ return firstPresetId ? [firstPresetId, ...presetIds.slice(1)] : null;
39534
+ }
39535
+ function createConfiguredSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
39536
+ return {
39537
+ verticalId,
39538
+ selectedPresetIds
39539
+ };
39540
+ }
39541
+ function createSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
39542
+ const nonEmptyPresetIds = toNonEmptyVerticalPresetIds(selectedPresetIds);
39543
+ return nonEmptyPresetIds ? createConfiguredSiteVerticalBookingConfig(verticalId, nonEmptyPresetIds) : null;
39544
+ }
39545
+ function resolveSiteVerticalBookingConfig(rawConfig) {
39546
+ if (!rawConfig) {
39547
+ return { kind: "unconfigured", config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG };
39548
+ }
39549
+ const verticalId = parseVerticalId(rawConfig.verticalId);
39550
+ const rawPresetIds = Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : [];
39551
+ const selectedPresetIds = rawPresetIds.map(parseVerticalPresetId).filter((presetId) => Boolean(presetId));
39552
+ const config = {
39553
+ verticalId,
39554
+ selectedPresetIds
39555
+ };
39556
+ if (!verticalId && selectedPresetIds.length === 0) {
39557
+ return { kind: "unconfigured", config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG };
39558
+ }
39559
+ const issues = getSiteVerticalConfigIssues(rawConfig, config);
39560
+ if (issues.length > 0) {
39561
+ return { kind: "invalid", config, issues };
39562
+ }
39563
+ const configuredConfig = verticalId ? createSiteVerticalBookingConfig(verticalId, selectedPresetIds) : null;
39564
+ if (!configuredConfig) {
39565
+ return { kind: "invalid", config, issues: ["empty_selected_presets"] };
39566
+ }
39567
+ return {
39568
+ kind: "configured",
39569
+ config: configuredConfig,
39570
+ selectedPresets: configuredConfig.selectedPresetIds.map(getVerticalPresetDefinition)
39571
+ };
39572
+ }
39573
+ function getSiteVerticalConfigIssues(rawConfig, config) {
39574
+ const issues = /* @__PURE__ */ new Set();
39575
+ if (rawConfig.verticalId != null && !config.verticalId) {
39576
+ issues.add("unknown_vertical");
39577
+ }
39578
+ if (!config.verticalId && config.selectedPresetIds.length > 0) {
39579
+ issues.add("missing_vertical");
39580
+ }
39581
+ const rawPresetIds = Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : [];
39582
+ if (rawPresetIds.some((presetId) => parseVerticalPresetId(presetId) === null)) {
39583
+ issues.add("unknown_preset");
39584
+ }
39585
+ if (config.verticalId && config.selectedPresetIds.length === 0) {
39586
+ issues.add("empty_selected_presets");
39587
+ }
39588
+ const seenBehaviours = /* @__PURE__ */ new Set();
39589
+ for (const presetId of config.selectedPresetIds) {
39590
+ const presetDefinition = getVerticalPresetDefinition(presetId);
39591
+ if (config.verticalId && presetDefinition.verticalId !== config.verticalId) {
39592
+ issues.add("preset_vertical_mismatch");
39593
+ }
39594
+ if (presetDefinition.availability === "future") {
39595
+ issues.add("future_preset_selected");
39596
+ }
39597
+ if (seenBehaviours.has(presetDefinition.canonicalBehaviour)) {
39598
+ issues.add("duplicate_canonical_behaviour");
39599
+ }
39600
+ seenBehaviours.add(presetDefinition.canonicalBehaviour);
39601
+ }
39602
+ return [...issues];
39603
+ }
38547
39604
  function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, description, availability = "onboarding") {
38548
39605
  return {
38549
39606
  id,
@@ -38556,7 +39613,7 @@ function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, descript
38556
39613
  description
38557
39614
  };
38558
39615
  }
38559
- var VERTICAL_IDS, BOOKING_ENGINE_BY_BEHAVIOUR, VERTICAL_BOOKING_PRESETS, VERTICAL_ID_SET, VERTICAL_PRESET_ID_SET;
39616
+ var VERTICAL_IDS, BOOKING_ENGINE_BY_BEHAVIOUR, VERTICAL_BOOKING_PRESETS, VERTICAL_ID_SET, VERTICAL_PRESET_ID_SET, VerticalIdSchema, VerticalPresetIdSchema, BookingVerticalConfigSchema, DEFAULT_SITE_VERTICAL_BOOKING_CONFIG;
38560
39617
  var init_bookingVerticals = __esm({
38561
39618
  "../api/src/bookingVerticals.ts"() {
38562
39619
  "use strict";
@@ -38638,6 +39695,46 @@ var init_bookingVerticals = __esm({
38638
39695
  VERTICAL_PRESET_ID_SET = new Set(
38639
39696
  VERTICAL_BOOKING_PRESETS.map((presetDefinition) => presetDefinition.id)
38640
39697
  );
39698
+ VerticalIdSchema = z67.string().trim().transform((value, ctx) => {
39699
+ const parsed = parseVerticalId(value);
39700
+ if (!parsed) {
39701
+ ctx.addIssue({
39702
+ code: z67.ZodIssueCode.custom,
39703
+ message: "Unknown booking vertical"
39704
+ });
39705
+ return z67.NEVER;
39706
+ }
39707
+ return parsed;
39708
+ });
39709
+ VerticalPresetIdSchema = z67.string().trim().transform((value, ctx) => {
39710
+ const parsed = parseVerticalPresetId(value);
39711
+ if (!parsed) {
39712
+ ctx.addIssue({
39713
+ code: z67.ZodIssueCode.custom,
39714
+ message: "Unknown booking preset"
39715
+ });
39716
+ return z67.NEVER;
39717
+ }
39718
+ return parsed;
39719
+ });
39720
+ BookingVerticalConfigSchema = z67.object({
39721
+ verticalId: VerticalIdSchema.nullable(),
39722
+ selectedPresetIds: z67.array(VerticalPresetIdSchema).max(20)
39723
+ }).transform((value, ctx) => {
39724
+ const resolved = resolveSiteVerticalBookingConfig(value);
39725
+ if (resolved.kind === "invalid") {
39726
+ ctx.addIssue({
39727
+ code: z67.ZodIssueCode.custom,
39728
+ message: `Invalid booking vertical config: ${resolved.issues.join(", ")}`
39729
+ });
39730
+ return z67.NEVER;
39731
+ }
39732
+ return resolved.config;
39733
+ });
39734
+ DEFAULT_SITE_VERTICAL_BOOKING_CONFIG = {
39735
+ verticalId: null,
39736
+ selectedPresetIds: []
39737
+ };
38641
39738
  }
38642
39739
  });
38643
39740
 
@@ -38661,7 +39758,7 @@ var init_error_propagation = __esm({
38661
39758
  });
38662
39759
 
38663
39760
  // ../api/src/appointmentSetup.ts
38664
- import { z as z67 } from "zod";
39761
+ import { z as z68 } from "zod";
38665
39762
  var APPOINTMENT_SETUP_MAX_MINUTES, appointmentSetupRefSchema, appointmentSetupVenueChoiceSchema, appointmentSetupPaymentDraftSchema, appointmentSetupServiceAssignmentDraftSchema, appointmentSetupServiceDraftSchema, appointmentSetupPractitionerDraftSchema, appointmentSetupWeeklyWindowDraftSchema, appointmentSetupStartTimePolicyDraftSchema, appointmentSetupAvailabilityDraftSchema, APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX, APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX, appointmentSetupBookingNoticeSchema, applyAppointmentSetupRequestSchema;
38666
39763
  var init_appointmentSetup = __esm({
38667
39764
  "../api/src/appointmentSetup.ts"() {
@@ -38669,49 +39766,49 @@ var init_appointmentSetup = __esm({
38669
39766
  init_envelope();
38670
39767
  init_error_propagation();
38671
39768
  APPOINTMENT_SETUP_MAX_MINUTES = 1440;
38672
- appointmentSetupRefSchema = z67.discriminatedUnion("kind", [
38673
- z67.object({ kind: z67.literal("existing"), id: z67.string().min(1) }),
38674
- z67.object({ kind: z67.literal("new"), draftId: z67.string().min(1) })
39769
+ appointmentSetupRefSchema = z68.discriminatedUnion("kind", [
39770
+ z68.object({ kind: z68.literal("existing"), id: z68.string().min(1) }),
39771
+ z68.object({ kind: z68.literal("new"), draftId: z68.string().min(1) })
38675
39772
  ]);
38676
- appointmentSetupVenueChoiceSchema = z67.discriminatedUnion("kind", [
38677
- z67.object({ kind: z67.literal("none") }),
38678
- z67.object({ kind: z67.literal("existing"), venueId: z67.string().min(1) }),
38679
- z67.object({
38680
- kind: z67.literal("create"),
38681
- draftId: z67.string().min(1),
38682
- title: z67.string().trim().min(1),
38683
- description: z67.string().nullable(),
38684
- timezone: z67.string().trim().min(1).nullable(),
38685
- addressJson: z67.record(z67.string(), z67.unknown()),
38686
- locationJson: z67.object({ lat: z67.number(), lng: z67.number() }).nullable()
39773
+ appointmentSetupVenueChoiceSchema = z68.discriminatedUnion("kind", [
39774
+ z68.object({ kind: z68.literal("none") }),
39775
+ z68.object({ kind: z68.literal("existing"), venueId: z68.string().min(1) }),
39776
+ z68.object({
39777
+ kind: z68.literal("create"),
39778
+ draftId: z68.string().min(1),
39779
+ title: z68.string().trim().min(1),
39780
+ description: z68.string().nullable(),
39781
+ timezone: z68.string().trim().min(1).nullable(),
39782
+ addressJson: z68.record(z68.string(), z68.unknown()),
39783
+ locationJson: z68.object({ lat: z68.number(), lng: z68.number() }).nullable()
38687
39784
  })
38688
39785
  ]);
38689
- appointmentSetupPaymentDraftSchema = z67.object({
38690
- priceType: z67.union([z67.literal("free"), z67.literal("paid")])
38691
- });
38692
- appointmentSetupServiceAssignmentDraftSchema = z67.discriminatedUnion("kind", [
38693
- z67.object({ kind: z67.literal("all_practitioners") }),
38694
- z67.object({
38695
- kind: z67.literal("selected_practitioners"),
38696
- resourceRefs: z67.array(appointmentSetupRefSchema)
39786
+ appointmentSetupPaymentDraftSchema = z68.object({
39787
+ priceType: z68.union([z68.literal("free"), z68.literal("paid")])
39788
+ });
39789
+ appointmentSetupServiceAssignmentDraftSchema = z68.discriminatedUnion("kind", [
39790
+ z68.object({ kind: z68.literal("all_practitioners") }),
39791
+ z68.object({
39792
+ kind: z68.literal("selected_practitioners"),
39793
+ resourceRefs: z68.array(appointmentSetupRefSchema)
38697
39794
  })
38698
39795
  ]);
38699
- appointmentSetupServiceDraftSchema = z67.object({
39796
+ appointmentSetupServiceDraftSchema = z68.object({
38700
39797
  ref: appointmentSetupRefSchema,
38701
- title: z67.string().trim().min(1),
38702
- description: z67.string().nullable(),
38703
- durationMinutes: z67.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
38704
- prepMinutes: z67.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
38705
- cleanupMinutes: z67.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
38706
- priceAmount: z67.number().int().nonnegative().nullable(),
38707
- isActive: z67.boolean(),
38708
- locationType: z67.union([
38709
- z67.literal("virtual"),
38710
- z67.literal("in_person"),
38711
- z67.literal("hybrid")
39798
+ title: z68.string().trim().min(1),
39799
+ description: z68.string().nullable(),
39800
+ durationMinutes: z68.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
39801
+ prepMinutes: z68.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
39802
+ cleanupMinutes: z68.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
39803
+ priceAmount: z68.number().int().nonnegative().nullable(),
39804
+ isActive: z68.boolean(),
39805
+ locationType: z68.union([
39806
+ z68.literal("virtual"),
39807
+ z68.literal("in_person"),
39808
+ z68.literal("hybrid")
38712
39809
  ]),
38713
39810
  venue: appointmentSetupVenueChoiceSchema,
38714
- timezone: z67.string().trim().min(1).nullable(),
39811
+ timezone: z68.string().trim().min(1).nullable(),
38715
39812
  payment: appointmentSetupPaymentDraftSchema,
38716
39813
  assignment: appointmentSetupServiceAssignmentDraftSchema
38717
39814
  }).superRefine((service, ctx) => {
@@ -38730,49 +39827,49 @@ var init_appointmentSetup = __esm({
38730
39827
  });
38731
39828
  }
38732
39829
  });
38733
- appointmentSetupPractitionerDraftSchema = z67.object({
39830
+ appointmentSetupPractitionerDraftSchema = z68.object({
38734
39831
  ref: appointmentSetupRefSchema,
38735
- displayName: z67.string().trim().min(1),
38736
- bio: z67.string().nullable(),
38737
- timezone: z67.string().trim().min(1),
38738
- colorHex: z67.string().nullable()
38739
- });
38740
- appointmentSetupWeeklyWindowDraftSchema = z67.object({
38741
- weekday: z67.number().int().min(0).max(6),
38742
- startTime: z67.string(),
38743
- endTime: z67.string()
38744
- });
38745
- appointmentSetupStartTimePolicyDraftSchema = z67.discriminatedUnion("kind", [
38746
- z67.object({ kind: z67.literal("automatic_spacing") }),
38747
- z67.object({
38748
- kind: z67.literal("regular_interval"),
38749
- intervalMinutes: z67.union([
38750
- z67.literal(10),
38751
- z67.literal(15),
38752
- z67.literal(20),
38753
- z67.literal(30),
38754
- z67.literal(45),
38755
- z67.literal(60)
39832
+ displayName: z68.string().trim().min(1),
39833
+ bio: z68.string().nullable(),
39834
+ timezone: z68.string().trim().min(1),
39835
+ colorHex: z68.string().nullable()
39836
+ });
39837
+ appointmentSetupWeeklyWindowDraftSchema = z68.object({
39838
+ weekday: z68.number().int().min(0).max(6),
39839
+ startTime: z68.string(),
39840
+ endTime: z68.string()
39841
+ });
39842
+ appointmentSetupStartTimePolicyDraftSchema = z68.discriminatedUnion("kind", [
39843
+ z68.object({ kind: z68.literal("automatic_spacing") }),
39844
+ z68.object({
39845
+ kind: z68.literal("regular_interval"),
39846
+ intervalMinutes: z68.union([
39847
+ z68.literal(10),
39848
+ z68.literal(15),
39849
+ z68.literal(20),
39850
+ z68.literal(30),
39851
+ z68.literal(45),
39852
+ z68.literal(60)
38756
39853
  ])
38757
39854
  })
38758
39855
  ]);
38759
- appointmentSetupAvailabilityDraftSchema = z67.object({
38760
- kind: z67.literal("weekly_windows"),
39856
+ appointmentSetupAvailabilityDraftSchema = z68.object({
39857
+ kind: z68.literal("weekly_windows"),
38761
39858
  resourceRef: appointmentSetupRefSchema,
38762
39859
  serviceRef: appointmentSetupRefSchema.nullable(),
38763
- windows: z67.array(appointmentSetupWeeklyWindowDraftSchema),
39860
+ windows: z68.array(appointmentSetupWeeklyWindowDraftSchema),
38764
39861
  startTimePolicy: appointmentSetupStartTimePolicyDraftSchema.optional()
38765
39862
  });
38766
39863
  APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
38767
39864
  APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
38768
- appointmentSetupBookingNoticeSchema = z67.object({
38769
- minLeadMinutes: z67.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
38770
- maxBookingNoticeMinutes: z67.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
38771
- });
38772
- applyAppointmentSetupRequestSchema = z67.object({
38773
- services: z67.array(appointmentSetupServiceDraftSchema),
38774
- practitioners: z67.array(appointmentSetupPractitionerDraftSchema),
38775
- availability: z67.array(appointmentSetupAvailabilityDraftSchema),
39865
+ appointmentSetupBookingNoticeSchema = z68.object({
39866
+ minLeadMinutes: z68.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
39867
+ maxBookingNoticeMinutes: z68.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
39868
+ });
39869
+ applyAppointmentSetupRequestSchema = z68.object({
39870
+ services: z68.array(appointmentSetupServiceDraftSchema),
39871
+ practitioners: z68.array(appointmentSetupPractitionerDraftSchema),
39872
+ availability: z68.array(appointmentSetupAvailabilityDraftSchema),
38776
39873
  bookingNotice: appointmentSetupBookingNoticeSchema
38777
39874
  });
38778
39875
  }
@@ -38822,6 +39919,24 @@ var init_siteAnalytics = __esm({
38822
39919
  }
38823
39920
  });
38824
39921
 
39922
+ // ../api/src/siteMembers.ts
39923
+ var init_siteMembers = __esm({
39924
+ "../api/src/siteMembers.ts"() {
39925
+ "use strict";
39926
+ init_envelope();
39927
+ init_error_propagation();
39928
+ }
39929
+ });
39930
+
39931
+ // ../api/src/staffAccess.ts
39932
+ var init_staffAccess = __esm({
39933
+ "../api/src/staffAccess.ts"() {
39934
+ "use strict";
39935
+ init_accessAdmin();
39936
+ init_siteMembers();
39937
+ }
39938
+ });
39939
+
38825
39940
  // ../api/src/common/cancellation.ts
38826
39941
  var STAFF_CANCELLATION_CONTEXT_UI_CATEGORIES, STAFF_CANCELLATION_CONTEXT_CATEGORIES;
38827
39942
  var init_cancellation = __esm({
@@ -38850,20 +39965,12 @@ var init_siteOperations = __esm({
38850
39965
  }
38851
39966
  });
38852
39967
 
38853
- // ../api/src/siteMembers.ts
38854
- var init_siteMembers = __esm({
38855
- "../api/src/siteMembers.ts"() {
38856
- "use strict";
38857
- init_envelope();
38858
- init_error_propagation();
38859
- }
38860
- });
38861
-
38862
39968
  // ../api/src/types.ts
38863
39969
  var init_types19 = __esm({
38864
39970
  "../api/src/types.ts"() {
38865
39971
  "use strict";
38866
39972
  init_accessAdmin();
39973
+ init_staffAccess();
38867
39974
  init_siteOperations();
38868
39975
  init_siteMembers();
38869
39976
  }
@@ -38877,7 +39984,7 @@ var init_eventAttendanceLabels = __esm({
38877
39984
  });
38878
39985
 
38879
39986
  // ../api/src/siteBanner.ts
38880
- import { z as z68 } from "zod";
39987
+ import { z as z69 } from "zod";
38881
39988
  function analyzeSiteBannerBody(body) {
38882
39989
  const sanitizedBody = sanitizeSiteBannerBodyInternal(body, { limitParagraphs: false });
38883
39990
  const paragraphs = collectParagraphs(sanitizedBody);
@@ -39060,19 +40167,19 @@ var init_siteBanner = __esm({
39060
40167
  SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
39061
40168
  SITE_BANNER_MAX_TEXT_LENGTH = 320;
39062
40169
  SITE_BANNER_MAX_PARAGRAPHS = 2;
39063
- siteBannerScopeSchema = z68.enum(SITE_BANNER_SCOPE_VALUES);
39064
- siteBannerToneSchema = z68.enum(SITE_BANNER_TONE_VALUES);
39065
- siteBannerBodySchema = z68.unknown().transform(unwrapRichTextValue);
39066
- siteBannerCtaSchema = z68.object({
39067
- label: z68.string().trim().min(1),
40170
+ siteBannerScopeSchema = z69.enum(SITE_BANNER_SCOPE_VALUES);
40171
+ siteBannerToneSchema = z69.enum(SITE_BANNER_TONE_VALUES);
40172
+ siteBannerBodySchema = z69.unknown().transform(unwrapRichTextValue);
40173
+ siteBannerCtaSchema = z69.object({
40174
+ label: z69.string().trim().min(1),
39068
40175
  link: linkPayloadSchema
39069
40176
  });
39070
- siteBannerSettingsSchema = z68.discriminatedUnion("enabled", [
39071
- z68.object({
39072
- enabled: z68.literal(false)
40177
+ siteBannerSettingsSchema = z69.discriminatedUnion("enabled", [
40178
+ z69.object({
40179
+ enabled: z69.literal(false)
39073
40180
  }),
39074
- z68.object({
39075
- enabled: z68.literal(true),
40181
+ z69.object({
40182
+ enabled: z69.literal(true),
39076
40183
  scope: siteBannerScopeSchema,
39077
40184
  tone: siteBannerToneSchema,
39078
40185
  body: siteBannerBodySchema,
@@ -39086,7 +40193,7 @@ var init_siteBanner = __esm({
39086
40193
  const analysis = analyzeSiteBannerBody(value.body);
39087
40194
  for (const issue of analysis.issues) {
39088
40195
  ctx.addIssue({
39089
- code: z68.ZodIssueCode.custom,
40196
+ code: z69.ZodIssueCode.custom,
39090
40197
  path: ["body"],
39091
40198
  message: siteBannerBodyIssueMessage(issue)
39092
40199
  });
@@ -39304,6 +40411,95 @@ var init_routableLink = __esm({
39304
40411
  }
39305
40412
  });
39306
40413
 
40414
+ // ../api/src/navigation/linkUrlType.ts
40415
+ var init_linkUrlType = __esm({
40416
+ "../api/src/navigation/linkUrlType.ts"() {
40417
+ "use strict";
40418
+ }
40419
+ });
40420
+
40421
+ // ../api/src/navigation/visibility.ts
40422
+ var init_visibility = __esm({
40423
+ "../api/src/navigation/visibility.ts"() {
40424
+ "use strict";
40425
+ init_types19();
40426
+ init_isRecord();
40427
+ }
40428
+ });
40429
+
40430
+ // ../api/src/navigation/dashboardSiteNav.ts
40431
+ var hiddenDemoSiteNavSurfaceIds, hiddenDemoSiteNavIds, websiteSurfaceIds, websiteSurfaceIdSet;
40432
+ var init_dashboardSiteNav = __esm({
40433
+ "../api/src/navigation/dashboardSiteNav.ts"() {
40434
+ "use strict";
40435
+ init_visibility();
40436
+ hiddenDemoSiteNavSurfaceIds = [
40437
+ "site.newsletter"
40438
+ ];
40439
+ hiddenDemoSiteNavIds = new Set(
40440
+ hiddenDemoSiteNavSurfaceIds
40441
+ );
40442
+ websiteSurfaceIds = [
40443
+ "site.content",
40444
+ "site.footerBlocks",
40445
+ "site.navigation",
40446
+ "site.media",
40447
+ "site.style",
40448
+ "site.performance"
40449
+ ];
40450
+ websiteSurfaceIdSet = new Set(
40451
+ websiteSurfaceIds
40452
+ );
40453
+ }
40454
+ });
40455
+
40456
+ // ../api/src/navigation/dashboardSettingsNav.ts
40457
+ var hiddenDemoSettingsNavSurfaceIds, hiddenDemoSettingsNavIds;
40458
+ var init_dashboardSettingsNav = __esm({
40459
+ "../api/src/navigation/dashboardSettingsNav.ts"() {
40460
+ "use strict";
40461
+ init_visibility();
40462
+ init_dashboardSiteNav();
40463
+ hiddenDemoSettingsNavSurfaceIds = [
40464
+ "settings.features",
40465
+ "settings.domains",
40466
+ "settings.bookings",
40467
+ "settings.emails",
40468
+ "settings.team",
40469
+ "settings.billing",
40470
+ "settings.developer",
40471
+ "settings.apiKeys",
40472
+ "settings.backup"
40473
+ ];
40474
+ hiddenDemoSettingsNavIds = new Set(hiddenDemoSettingsNavSurfaceIds);
40475
+ }
40476
+ });
40477
+
40478
+ // ../api/src/navigation/dashboardTeamMemberNav.ts
40479
+ var init_dashboardTeamMemberNav = __esm({
40480
+ "../api/src/navigation/dashboardTeamMemberNav.ts"() {
40481
+ "use strict";
40482
+ init_staffAccess();
40483
+ }
40484
+ });
40485
+
40486
+ // ../api/src/navigation/dashboardBookingsNav.ts
40487
+ var init_dashboardBookingsNav = __esm({
40488
+ "../api/src/navigation/dashboardBookingsNav.ts"() {
40489
+ "use strict";
40490
+ init_bookingVerticals();
40491
+ init_staffAccess();
40492
+ }
40493
+ });
40494
+
40495
+ // ../api/src/navigation/dashboardDemoNav.ts
40496
+ var init_dashboardDemoNav = __esm({
40497
+ "../api/src/navigation/dashboardDemoNav.ts"() {
40498
+ "use strict";
40499
+ init_dashboardSiteNav();
40500
+ }
40501
+ });
40502
+
39307
40503
  // ../api/src/navigation/linkValue.ts
39308
40504
  var init_linkValue = __esm({
39309
40505
  "../api/src/navigation/linkValue.ts"() {
@@ -39328,17 +40524,21 @@ var init_navigation = __esm({
39328
40524
  init_navigationMenuValidation();
39329
40525
  init_linkResolver();
39330
40526
  init_routableLink();
40527
+ init_linkUrlType();
40528
+ init_dashboardSiteNav();
40529
+ init_dashboardSettingsNav();
40530
+ init_dashboardTeamMemberNav();
40531
+ init_dashboardBookingsNav();
40532
+ init_dashboardDemoNav();
39331
40533
  init_linkValue();
39332
40534
  init_matcher();
39333
40535
  }
39334
40536
  });
39335
40537
 
39336
- // ../api/src/navigation/visibility.ts
39337
- var init_visibility = __esm({
39338
- "../api/src/navigation/visibility.ts"() {
40538
+ // ../api/src/workflows/automaticWorkflowTriggers.ts
40539
+ var init_automaticWorkflowTriggers = __esm({
40540
+ "../api/src/workflows/automaticWorkflowTriggers.ts"() {
39339
40541
  "use strict";
39340
- init_types19();
39341
- init_isRecord();
39342
40542
  }
39343
40543
  });
39344
40544
 
@@ -39369,75 +40569,75 @@ var init_aiPatch = __esm({
39369
40569
  });
39370
40570
 
39371
40571
  // ../api/src/aiPlayground.ts
39372
- import { z as z69 } from "zod";
40572
+ import { z as z70 } from "zod";
39373
40573
  var Rfc6902PatchOp, PlaygroundProposeRequest, MultiPagePatchEnvelope, MultiPageUpdateResponse;
39374
40574
  var init_aiPlayground = __esm({
39375
40575
  "../api/src/aiPlayground.ts"() {
39376
40576
  "use strict";
39377
- Rfc6902PatchOp = z69.discriminatedUnion("op", [
40577
+ Rfc6902PatchOp = z70.discriminatedUnion("op", [
39378
40578
  // Standard RFC-6902 operations
39379
- z69.object({
39380
- op: z69.literal("add"),
39381
- path: z69.string(),
39382
- value: z69.unknown()
40579
+ z70.object({
40580
+ op: z70.literal("add"),
40581
+ path: z70.string(),
40582
+ value: z70.unknown()
39383
40583
  }),
39384
- z69.object({
39385
- op: z69.literal("remove"),
39386
- path: z69.string()
40584
+ z70.object({
40585
+ op: z70.literal("remove"),
40586
+ path: z70.string()
39387
40587
  }),
39388
- z69.object({
39389
- op: z69.literal("replace"),
39390
- path: z69.string(),
39391
- value: z69.unknown()
40588
+ z70.object({
40589
+ op: z70.literal("replace"),
40590
+ path: z70.string(),
40591
+ value: z70.unknown()
39392
40592
  }),
39393
- z69.object({
39394
- op: z69.literal("move"),
39395
- from: z69.string(),
39396
- path: z69.string()
40593
+ z70.object({
40594
+ op: z70.literal("move"),
40595
+ from: z70.string(),
40596
+ path: z70.string()
39397
40597
  }),
39398
- z69.object({
39399
- op: z69.literal("copy"),
39400
- from: z69.string(),
39401
- path: z69.string()
40598
+ z70.object({
40599
+ op: z70.literal("copy"),
40600
+ from: z70.string(),
40601
+ path: z70.string()
39402
40602
  }),
39403
40603
  // Block-level operations (Phase 2)
39404
- z69.object({
39405
- op: z69.literal("add_block"),
39406
- blockKind: z69.string(),
39407
- afterBlockId: z69.string().nullable(),
39408
- content: z69.record(z69.string(), z69.unknown()),
39409
- rationale: z69.string()
40604
+ z70.object({
40605
+ op: z70.literal("add_block"),
40606
+ blockKind: z70.string(),
40607
+ afterBlockId: z70.string().nullable(),
40608
+ content: z70.record(z70.string(), z70.unknown()),
40609
+ rationale: z70.string()
39410
40610
  }),
39411
- z69.object({
39412
- op: z69.literal("delete_block"),
39413
- blockId: z69.string(),
39414
- rationale: z69.string()
40611
+ z70.object({
40612
+ op: z70.literal("delete_block"),
40613
+ blockId: z70.string(),
40614
+ rationale: z70.string()
39415
40615
  }),
39416
- z69.object({
39417
- op: z69.literal("reorder_block"),
39418
- blockId: z69.string(),
39419
- afterBlockId: z69.string().nullable(),
39420
- rationale: z69.string()
40616
+ z70.object({
40617
+ op: z70.literal("reorder_block"),
40618
+ blockId: z70.string(),
40619
+ afterBlockId: z70.string().nullable(),
40620
+ rationale: z70.string()
39421
40621
  })
39422
40622
  ]);
39423
- PlaygroundProposeRequest = z69.object({
39424
- request: z69.string().min(1).max(2e3)
40623
+ PlaygroundProposeRequest = z70.object({
40624
+ request: z70.string().min(1).max(2e3)
39425
40625
  });
39426
- MultiPagePatchEnvelope = z69.object({
39427
- pageId: z69.string(),
39428
- blockId: z69.string().optional(),
40626
+ MultiPagePatchEnvelope = z70.object({
40627
+ pageId: z70.string(),
40628
+ blockId: z70.string().optional(),
39429
40629
  // Not present for page-level ops
39430
- blockKind: z69.string().optional(),
39431
- blockPurpose: z69.string().optional().nullable(),
39432
- ops: z69.array(Rfc6902PatchOp),
39433
- rationale: z69.string(),
39434
- currentContent: z69.record(z69.string(), z69.unknown()).optional()
40630
+ blockKind: z70.string().optional(),
40631
+ blockPurpose: z70.string().optional().nullable(),
40632
+ ops: z70.array(Rfc6902PatchOp),
40633
+ rationale: z70.string(),
40634
+ currentContent: z70.record(z70.string(), z70.unknown()).optional()
39435
40635
  });
39436
- MultiPageUpdateResponse = z69.object({
39437
- patches: z69.array(MultiPagePatchEnvelope),
39438
- assistantMessage: z69.string(),
39439
- pagesModified: z69.number(),
39440
- toolCallsUsed: z69.number()
40636
+ MultiPageUpdateResponse = z70.object({
40637
+ patches: z70.array(MultiPagePatchEnvelope),
40638
+ assistantMessage: z70.string(),
40639
+ pagesModified: z70.number(),
40640
+ toolCallsUsed: z70.number()
39441
40641
  });
39442
40642
  }
39443
40643
  });
@@ -39500,6 +40700,7 @@ var init_src5 = __esm({
39500
40700
  "../api/src/index.ts"() {
39501
40701
  "use strict";
39502
40702
  init_endpoints();
40703
+ init_demoDashboardMutationSurfaces();
39503
40704
  init_accessAdmin();
39504
40705
  init_media();
39505
40706
  init_contracts();
@@ -39545,6 +40746,10 @@ var init_src5 = __esm({
39545
40746
  init_navigation();
39546
40747
  init_navigationMenuValidation();
39547
40748
  init_routableLink();
40749
+ init_linkUrlType();
40750
+ init_dashboardSiteNav();
40751
+ init_dashboardSettingsNav();
40752
+ init_automaticWorkflowTriggers();
39548
40753
  init_linkResolver();
39549
40754
  init_matcher();
39550
40755
  init_visibility();
@@ -39563,6 +40768,7 @@ var init_src5 = __esm({
39563
40768
  init_auth();
39564
40769
  init_types19();
39565
40770
  init_types19();
40771
+ init_types19();
39566
40772
  }
39567
40773
  });
39568
40774
 
@@ -39623,7 +40829,7 @@ async function prefetchBlockData2(page, context, client, options) {
39623
40829
  throw new Error("listPublishedEntries requires siteId and type params");
39624
40830
  }
39625
40831
  const parsedLimit = typeof limit === "string" ? Number.parseInt(limit, 10) : typeof limit === "number" ? limit : void 0;
39626
- const order = orderBy === "newest" || orderBy === "oldest" || orderBy === "title" || orderBy === "order" ? orderBy : void 0;
40832
+ const order = orderBy === "order" ? "manual" : orderBy === "newest" || orderBy === "oldest" || orderBy === "title" ? orderBy : void 0;
39627
40833
  const parsedEntryIds = mode === "manual" ? parseManualEntryIds(entryIds) : void 0;
39628
40834
  if (mode === "manual" && (!parsedEntryIds || parsedEntryIds.length === 0)) {
39629
40835
  return { entries: [] };
@@ -40350,6 +41556,26 @@ function inferKnownEntrySubrouteKind(args) {
40350
41556
  }
40351
41557
 
40352
41558
  // src/routing/resolvePageContent.ts
41559
+ var RiverbankContentLoadError = class _RiverbankContentLoadError extends Error {
41560
+ constructor(message, options) {
41561
+ super(message);
41562
+ this.name = "RiverbankContentLoadError";
41563
+ this.surface = options.surface;
41564
+ this.reason = options.reason ?? null;
41565
+ this.path = options.path ?? null;
41566
+ this.cause = options.cause;
41567
+ Object.setPrototypeOf(this, _RiverbankContentLoadError.prototype);
41568
+ }
41569
+ };
41570
+ function contentFound(content) {
41571
+ return { kind: "found", content };
41572
+ }
41573
+ function contentNotFound() {
41574
+ return { kind: "not_found" };
41575
+ }
41576
+ function contentLoadFailed(error) {
41577
+ return { kind: "failed", error };
41578
+ }
40353
41579
  async function resolvePageContent(options) {
40354
41580
  const {
40355
41581
  path,
@@ -40361,12 +41587,40 @@ async function resolvePageContent(options) {
40361
41587
  getEntryTypeKey,
40362
41588
  shouldAttemptEntrySubroute
40363
41589
  } = options;
41590
+ async function loadContentOrFailure(pathToLoad) {
41591
+ const result = await loadContent(pathToLoad);
41592
+ switch (result.kind) {
41593
+ case "found":
41594
+ return {
41595
+ found: true,
41596
+ content: result.content,
41597
+ entrySubrouteData: null,
41598
+ resolvedPath: pathToLoad
41599
+ };
41600
+ case "not_found":
41601
+ return null;
41602
+ case "failed":
41603
+ return {
41604
+ found: false,
41605
+ reason: "load-failed",
41606
+ failedPath: pathToLoad,
41607
+ error: result.error
41608
+ };
41609
+ }
41610
+ }
41611
+ function getContentFromResolution(resolution) {
41612
+ return resolution?.found ? resolution.content : null;
41613
+ }
40364
41614
  const detected = detectEntrySubrouteFromTypes(contentTypes, path);
40365
41615
  let detectedShouldAttempt = Boolean(detected);
40366
41616
  let detectedWasInvalidSubroute = false;
40367
41617
  if (detected && detected.precedence !== "content-first") {
40368
41618
  if (detectedShouldAttempt) {
40369
- const parentContent2 = await loadContent(detected.parentPath);
41619
+ const parentResolution2 = await loadContentOrFailure(detected.parentPath);
41620
+ if (parentResolution2 && !parentResolution2.found) {
41621
+ return parentResolution2;
41622
+ }
41623
+ const parentContent2 = getContentFromResolution(parentResolution2);
40370
41624
  if (parentContent2 && isEntry(parentContent2)) {
40371
41625
  const entryTypeKey = getEntryTypeKey(parentContent2) ?? detected.contentTypeKey;
40372
41626
  const subroute = await resolveEntrySubroute({
@@ -40387,7 +41641,11 @@ async function resolvePageContent(options) {
40387
41641
  }
40388
41642
  }
40389
41643
  }
40390
- const content = await loadContent(path);
41644
+ const contentResolution = await loadContentOrFailure(path);
41645
+ if (contentResolution && !contentResolution.found) {
41646
+ return contentResolution;
41647
+ }
41648
+ const content = getContentFromResolution(contentResolution);
40391
41649
  if (content) {
40392
41650
  return {
40393
41651
  found: true,
@@ -40398,7 +41656,11 @@ async function resolvePageContent(options) {
40398
41656
  }
40399
41657
  if (detected) {
40400
41658
  if (detected.precedence === "content-first") {
40401
- const parentContent2 = await loadContent(detected.parentPath);
41659
+ const parentResolution2 = await loadContentOrFailure(detected.parentPath);
41660
+ if (parentResolution2 && !parentResolution2.found) {
41661
+ return parentResolution2;
41662
+ }
41663
+ const parentContent2 = getContentFromResolution(parentResolution2);
40402
41664
  if (parentContent2 && isEntry(parentContent2)) {
40403
41665
  const entryTypeKey = getEntryTypeKey(parentContent2) ?? detected.contentTypeKey;
40404
41666
  const subroute = await resolveEntrySubroute({
@@ -40438,7 +41700,11 @@ async function resolvePageContent(options) {
40438
41700
  return { found: false, reason: "not-found" };
40439
41701
  }
40440
41702
  }
40441
- const parentContent = await loadContent(fallback.parentPath);
41703
+ const parentResolution = await loadContentOrFailure(fallback.parentPath);
41704
+ if (parentResolution && !parentResolution.found) {
41705
+ return parentResolution;
41706
+ }
41707
+ const parentContent = getContentFromResolution(parentResolution);
40442
41708
  if (parentContent && isEntry(parentContent)) {
40443
41709
  const entryTypeKey = getEntryTypeKey(parentContent);
40444
41710
  const shouldAttempt = shouldAttemptEntrySubroute?.({
@@ -40498,7 +41764,11 @@ async function resolveEntrySubrouteFromSegment(params) {
40498
41764
  }
40499
41765
  }
40500
41766
  export {
41767
+ RiverbankContentLoadError,
40501
41768
  checkRedirectForPath,
41769
+ contentFound,
41770
+ contentLoadFailed,
41771
+ contentNotFound,
40502
41772
  defaultShouldAttemptEntrySubroute,
40503
41773
  detectEntrySubrouteFromTypes,
40504
41774
  extractPotentialEntrySubroute,