@riverbankcms/sdk 0.77.1 → 0.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/README.md +69 -0
  2. package/dist/{PreviewEditorSidebar-DVUG7GK4.mjs → PreviewEditorSidebar-RIKFQ72L.mjs} +4916 -4847
  3. package/dist/{PreviewEditorUI-P7RN4CDS.mjs → PreviewEditorUI-XO7TUWKK.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +154 -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/demoDashboardMutationSurfaces.d.ts +46 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  12. package/dist/_dts/api/src/index.d.ts +14 -2
  13. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +87 -0
  14. package/dist/_dts/api/src/navigation/dashboardDemoNav.d.ts +5 -0
  15. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +45 -0
  16. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +42 -0
  17. package/dist/_dts/api/src/navigation/dashboardTeamMemberNav.d.ts +24 -0
  18. package/dist/_dts/api/src/navigation/linkUrlType.d.ts +3 -0
  19. package/dist/_dts/api/src/navigation.d.ts +12 -0
  20. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +55 -26
  21. package/dist/_dts/api/src/staffAccess.d.ts +79 -0
  22. package/dist/_dts/api/src/types.d.ts +3 -1
  23. package/dist/_dts/api/src/workflows/automaticWorkflowTriggers.d.ts +21 -0
  24. package/dist/_dts/blocks/src/client/site-chrome.d.ts +4 -1
  25. package/dist/_dts/blocks/src/index.d.ts +1 -0
  26. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
  27. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
  28. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
  29. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
  30. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
  31. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -2
  32. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +294 -289
  33. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
  34. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  35. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +21 -21
  36. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
  37. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
  38. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
  39. package/dist/_dts/blocks/src/system/data/index.d.ts +5 -3
  40. package/dist/_dts/blocks/src/system/data/previewResolvedDataState.d.ts +45 -0
  41. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
  42. package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +5 -0
  43. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -29
  44. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +10 -0
  45. package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
  46. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +9 -0
  47. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +3 -2
  48. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  49. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  50. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +43 -8
  51. package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +8 -7
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCompactRow.d.ts +1 -4
  53. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
  54. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -8
  55. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -9
  56. package/dist/_dts/blocks/src/system/runtime/nodes/shop-cart-discount-ui.d.ts +5 -0
  57. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +76 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout.state.d.ts +1 -4
  59. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce-store.d.ts +2 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.shared.d.ts +1 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/shop-discount-apply.state.d.ts +52 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +2 -4
  63. package/dist/_dts/blocks/src/system/runtime/nodes/useDiscountApply.d.ts +21 -0
  64. package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +54 -0
  65. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  66. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  67. package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
  68. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  69. package/dist/_dts/content-editor/src/contentTypeEditorContentState.d.ts +26 -0
  70. package/dist/_dts/content-editor/src/definitions/factory.d.ts +75 -0
  71. package/dist/_dts/content-editor/src/entryWorkflows.d.ts +2 -0
  72. package/dist/_dts/content-editor/src/footerBlocksEditorState.d.ts +76 -0
  73. package/dist/_dts/content-editor/src/index.d.ts +5 -0
  74. package/dist/_dts/content-editor/src/pageWorkflowContent.d.ts +29 -0
  75. package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
  76. package/dist/_dts/content-model/src/index.d.ts +1 -0
  77. package/dist/_dts/content-model/src/routeTemplate.d.ts +4 -0
  78. package/dist/_dts/content-model/src/templates/editorState.d.ts +25 -0
  79. package/dist/_dts/core/src/csv-cells.d.ts +10 -0
  80. package/dist/_dts/core/src/csv-date-filter.d.ts +27 -0
  81. package/dist/_dts/core/src/csv-escape.d.ts +1 -0
  82. package/dist/_dts/core/src/csv-filename.d.ts +18 -0
  83. package/dist/_dts/core/src/csv-render.d.ts +4 -0
  84. package/dist/_dts/core/src/csv-types.d.ts +116 -0
  85. package/dist/_dts/core/src/currency-format.d.ts +4 -0
  86. package/dist/_dts/core/src/demo-capability-policy.d.ts +29 -0
  87. package/dist/_dts/core/src/demo-claim-access.d.ts +14 -0
  88. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +11 -0
  89. package/dist/_dts/core/src/demo-runtime.d.ts +47 -0
  90. package/dist/_dts/core/src/duration.d.ts +14 -0
  91. package/dist/_dts/core/src/email-format.d.ts +10 -0
  92. package/dist/_dts/core/src/field-errors.d.ts +1 -0
  93. package/dist/_dts/core/src/form-submission-preview.d.ts +24 -0
  94. package/dist/_dts/core/src/index.d.ts +20 -0
  95. package/dist/_dts/core/src/number-input.d.ts +22 -0
  96. package/dist/_dts/core/src/public-url-validation.d.ts +12 -0
  97. package/dist/_dts/core/src/slug.d.ts +39 -0
  98. package/dist/_dts/core/src/string.d.ts +19 -0
  99. package/dist/_dts/core/src/uuid.d.ts +6 -0
  100. package/dist/_dts/db/src/schemas/forms.d.ts +50 -50
  101. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +34 -0
  102. package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +24 -0
  103. package/dist/_dts/media-core/src/canonicalCropReview.d.ts +66 -0
  104. package/dist/_dts/media-core/src/classifyAllPlanning.d.ts +48 -0
  105. package/dist/_dts/media-core/src/filename.d.ts +1 -0
  106. package/dist/_dts/media-core/src/index.d.ts +10 -0
  107. package/dist/_dts/media-core/src/mediaAssetUsageStatus.d.ts +47 -0
  108. package/dist/_dts/media-core/src/mediaSettingsState.d.ts +3 -0
  109. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +38 -0
  110. package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +28 -0
  111. package/dist/_dts/media-core/src/videoAssetRepair.d.ts +38 -0
  112. package/dist/_dts/media-editor/src/mediaEditorDebug.d.ts +1 -0
  113. package/dist/_dts/path-utils/src/index.d.ts +8 -0
  114. package/dist/_dts/path-utils/src/redirectPaths.d.ts +26 -0
  115. package/dist/_dts/path-utils/src/safeAppPath.d.ts +26 -0
  116. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +2 -1
  117. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -0
  118. package/dist/_dts/preview-next/src/client/preview/previewDocumentFrame.d.ts +31 -0
  119. package/dist/_dts/sdk/src/client/error.d.ts +3 -0
  120. package/dist/_dts/sdk/src/client/index.d.ts +2 -2
  121. package/dist/_dts/sdk/src/client/types.d.ts +37 -19
  122. package/dist/_dts/sdk/src/index.d.ts +2 -2
  123. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +16 -16
  124. package/dist/_dts/sdk/src/next/content-load-failure.d.ts +51 -0
  125. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  126. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  127. package/dist/_dts/sdk/src/portal/redirects.d.ts +1 -1
  128. package/dist/_dts/sdk/src/routing/index.d.ts +3 -2
  129. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +71 -6
  130. package/dist/_dts/sdk/src/version.d.ts +1 -1
  131. package/dist/_dts/site-commands/src/commands.d.ts +12 -12
  132. package/dist/_dts/site-commands/src/index.d.ts +1 -0
  133. package/dist/_dts/site-commands/src/pagePaths.d.ts +6 -0
  134. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +26 -0
  135. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -0
  136. package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +1 -0
  137. package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -0
  138. package/dist/_dts/theme-core/src/fonts/uploadFormat.d.ts +44 -0
  139. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  140. package/dist/_dts/theme-core/src/index.d.ts +3 -1
  141. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +36 -24
  142. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +6 -1
  143. package/dist/_dts/theme-core/src/navigation/types.d.ts +12 -0
  144. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  145. package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +7 -0
  146. package/dist/_dts/theme-core/src/schema.d.ts +64 -18
  147. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +214 -34
  148. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -2
  149. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +214 -34
  150. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +24 -0
  151. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +31 -3
  152. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
  153. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +33 -1
  154. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +4 -2
  155. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -1
  156. package/dist/_dts/theme-core/src/site-styles/types.d.ts +27 -2
  157. package/dist/_dts/theme-core/src/siteChrome.d.ts +17 -34
  158. package/dist/_dts/theme-core/src/siteChromeOverlayClearance.d.ts +22 -0
  159. package/dist/_dts/theme-core/src/siteChromePlacement.d.ts +22 -0
  160. package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +32 -0
  161. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
  162. package/dist/{chunk-2SPENC5M.mjs → chunk-F7RTCZYN.mjs} +229 -50
  163. package/dist/{chunk-IENWFSLO.mjs → chunk-NIDXI46P.mjs} +1 -1
  164. package/dist/{chunk-KWJPDZH2.mjs → chunk-OECWLDHN.mjs} +2770 -620
  165. package/dist/{chunk-VX7B5VAC.mjs → chunk-SVMMM2NA.mjs} +8 -0
  166. package/dist/{chunk-6SMUFTXD.mjs → chunk-SXOLGNMX.mjs} +1 -1
  167. package/dist/{chunk-ZYEJLCTN.mjs → chunk-TXDES5P2.mjs} +2 -2
  168. package/dist/cli/index.mjs +1677 -440
  169. package/dist/client/{accordion-RZMQSYLR.mjs → accordion-EVDEOUPR.mjs} +2 -2
  170. package/dist/client/{bookingForm-NF4ASVNV.mjs → bookingForm-DIHBLC64.mjs} +27 -30
  171. package/dist/client/bookings.mjs +3707 -259
  172. package/dist/client/{carousel-LDX47ZIK.mjs → carousel-FEBQHIWI.mjs} +3 -4
  173. package/dist/client/{cart-RGXDS5F4.mjs → cart-7CKSXAE4.mjs} +8 -8
  174. package/dist/client/{checkout-P7WWSNNY.mjs → checkout-WKYCANLV.mjs} +8 -8
  175. package/dist/client/{chunk-JNC7CGHX.mjs → chunk-2SAVKN2M.mjs} +2 -2
  176. package/dist/client/{chunk-TQ5MSPDX.mjs → chunk-36WJCERQ.mjs} +1 -1
  177. package/dist/client/{chunk-R56FQ3RR.mjs → chunk-65F47D7Y.mjs} +280 -71
  178. package/dist/client/{chunk-L3DNHIJX.mjs → chunk-GUK2FPXQ.mjs} +23 -45
  179. package/dist/client/{chunk-PMAIXMAB.mjs → chunk-IVNCUVAV.mjs} +26 -21
  180. package/dist/client/{chunk-II7O4XN3.mjs → chunk-OFMSCGNY.mjs} +2 -2
  181. package/dist/client/chunk-PD6NBCEY.mjs +66 -0
  182. package/dist/client/{chunk-GMVTOKYG.mjs → chunk-RV6FX7UH.mjs} +510 -64
  183. package/dist/client/{chunk-E2TDNXCL.mjs → chunk-RZDWX7QW.mjs} +2 -1
  184. package/dist/client/{chunk-M3L3KYYR.mjs → chunk-UDNSI5PY.mjs} +12 -0
  185. package/dist/client/{chunk-JEZECJ3W.mjs → chunk-VPPMNXCF.mjs} +129 -3
  186. package/dist/client/{chunk-UFSWADAO.mjs → chunk-YDSEG6GZ.mjs} +5 -66
  187. package/dist/client/client.mjs +7070 -4561
  188. package/dist/client/{courseRegistration-7F65K5ZR.mjs → courseRegistration-5QF2PHKM.mjs} +14 -11
  189. package/dist/client/{eventCalendar-GLSC5KTL.mjs → eventCalendar-4ZOSETDU.mjs} +9 -9
  190. package/dist/client/{eventCombined-ZHK4WKUR.mjs → eventCombined-WQGU7JUX.mjs} +9 -9
  191. package/dist/client/{eventDetails-E3PJYBIN.mjs → eventDetails-AYWVUJ5Y.mjs} +9 -9
  192. package/dist/client/{eventListing-EMS3WC3E.mjs → eventListing-NT7C6UT5.mjs} +9 -9
  193. package/dist/client/{eventRegistration-NZOTVNPI.mjs → eventRegistration-OH24F4ZJ.mjs} +9 -9
  194. package/dist/client/{form-ETFZFATW.mjs → form-7L42SRBB.mjs} +6 -6
  195. package/dist/client/{headerSection-4LBP7ULT.mjs → headerSection-OZRZNZ52.mjs} +3 -3
  196. package/dist/client/hooks.mjs +1040 -278
  197. package/dist/client/{locationMap-5M655YSJ.mjs → locationMap-ZBXRPQ7C.mjs} +2 -2
  198. package/dist/client/{newsletterForm-QOUYW44O.mjs → newsletterForm-SNAGFF2I.mjs} +3 -3
  199. package/dist/client/{productDetail-O4DOCWQG.mjs → productDetail-I46BOFGV.mjs} +8 -8
  200. package/dist/client/{productList-A5RO5WIS.mjs → productList-BOYHTYI6.mjs} +8 -8
  201. package/dist/client/rendering/client.mjs +7090 -2645
  202. package/dist/client/rendering/islands.mjs +19 -19
  203. package/dist/client/rendering.mjs +6089 -3792
  204. package/dist/client/{shop-L4MZH4I2.mjs → shop-XTXPZTKR.mjs} +8 -8
  205. package/dist/preview-next/before-render.mjs +8 -0
  206. package/dist/preview-next/client/runtime.mjs +5 -5
  207. package/dist/preview-next/editor-chrome.css +10 -0
  208. package/dist/preview-next/middleware.mjs +8 -0
  209. package/dist/{sdk-runtime-6UT2S7KZ.mjs → sdk-runtime-ZJLKC6DR.mjs} +6 -6
  210. package/dist/server/components.mjs +2635 -1262
  211. package/dist/server/config-validation.mjs +1271 -509
  212. package/dist/server/config.mjs +1271 -509
  213. package/dist/server/data.mjs +1040 -278
  214. package/dist/server/index.mjs +488 -246
  215. package/dist/server/next.mjs +4087 -2147
  216. package/dist/server/page-converter.mjs +571 -115
  217. package/dist/server/prebuild.mjs +1 -1
  218. package/dist/server/rendering/server.mjs +2636 -1263
  219. package/dist/server/rendering.mjs +2654 -1268
  220. package/dist/server/routing.mjs +1729 -489
  221. package/dist/server/server.mjs +1532 -530
  222. package/dist/server/theme-bridge.mjs +3151 -131
  223. package/dist/server/theme.mjs +10 -1
  224. package/dist/styles/index.css +488 -48
  225. package/package.json +2 -1
  226. package/dist/SdkPreviewModeRuntime-KLPX47SE.mjs +0 -8
  227. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/DiscountCodeSection.d.ts +0 -7
  228. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +0 -4
  229. package/dist/client/chunk-OJPZEZU2.mjs +0 -31
  230. package/dist/client/chunk-RTZ3JKKX.mjs +0 -178
@@ -3927,6 +3927,14 @@ var init_endpoints = __esm({
3927
3927
  responseKind: "json",
3928
3928
  errors: []
3929
3929
  },
3930
+ applyDiscountCode: {
3931
+ path: "/public/sites/{siteId}/bookings/discounts/apply",
3932
+ method: "POST",
3933
+ tags: ["site-{siteId}", "booking-discounts"],
3934
+ auth: "public",
3935
+ responseKind: "json",
3936
+ errors: ["validation:invalid_input", "rate_limit:exceeded"]
3937
+ },
3930
3938
  // Batch endpoint for block loader requests (reduces SSR fan-out)
3931
3939
  batchBlockLoaders: {
3932
3940
  path: "/public/sites/{siteId}/block-loaders/batch",
@@ -6268,6 +6276,379 @@ var init_endpoints = __esm({
6268
6276
  }
6269
6277
  });
6270
6278
 
6279
+ // ../core/src/branded.ts
6280
+ var asStorageBucketName, unsafeAsPositiveByteCount, unsafeAsPositiveSeconds;
6281
+ var init_branded = __esm({
6282
+ "../core/src/branded.ts"() {
6283
+ "use strict";
6284
+ asStorageBucketName = (value) => value;
6285
+ unsafeAsPositiveByteCount = (value) => value;
6286
+ unsafeAsPositiveSeconds = (value) => value;
6287
+ }
6288
+ });
6289
+
6290
+ // ../core/src/date-math.ts
6291
+ var init_date_math = __esm({
6292
+ "../core/src/date-math.ts"() {
6293
+ "use strict";
6294
+ }
6295
+ });
6296
+
6297
+ // ../core/src/duration.ts
6298
+ var DURATION_UNIT_MINUTES;
6299
+ var init_duration = __esm({
6300
+ "../core/src/duration.ts"() {
6301
+ "use strict";
6302
+ DURATION_UNIT_MINUTES = {
6303
+ minutes: 1,
6304
+ hours: 60,
6305
+ days: 60 * 24,
6306
+ weeks: 60 * 24 * 7
6307
+ };
6308
+ }
6309
+ });
6310
+
6311
+ // ../core/src/demo-capability-policy.ts
6312
+ var init_demo_capability_policy = __esm({
6313
+ "../core/src/demo-capability-policy.ts"() {
6314
+ "use strict";
6315
+ }
6316
+ });
6317
+
6318
+ // ../core/src/demo-claim-access.ts
6319
+ var init_demo_claim_access = __esm({
6320
+ "../core/src/demo-claim-access.ts"() {
6321
+ "use strict";
6322
+ }
6323
+ });
6324
+
6325
+ // ../core/src/demo-lifecycle-status.ts
6326
+ var init_demo_lifecycle_status = __esm({
6327
+ "../core/src/demo-lifecycle-status.ts"() {
6328
+ "use strict";
6329
+ }
6330
+ });
6331
+
6332
+ // ../core/src/demo-runtime.ts
6333
+ var init_demo_runtime = __esm({
6334
+ "../core/src/demo-runtime.ts"() {
6335
+ "use strict";
6336
+ }
6337
+ });
6338
+
6339
+ // ../core/src/collections.ts
6340
+ var init_collections = __esm({
6341
+ "../core/src/collections.ts"() {
6342
+ "use strict";
6343
+ }
6344
+ });
6345
+
6346
+ // ../core/src/event-pricing.ts
6347
+ var init_event_pricing = __esm({
6348
+ "../core/src/event-pricing.ts"() {
6349
+ "use strict";
6350
+ }
6351
+ });
6352
+
6353
+ // ../core/src/money-input.ts
6354
+ var init_money_input = __esm({
6355
+ "../core/src/money-input.ts"() {
6356
+ "use strict";
6357
+ }
6358
+ });
6359
+
6360
+ // ../core/src/booking-flexible-balance.ts
6361
+ var init_booking_flexible_balance = __esm({
6362
+ "../core/src/booking-flexible-balance.ts"() {
6363
+ "use strict";
6364
+ }
6365
+ });
6366
+
6367
+ // ../core/src/booking-refunds.ts
6368
+ var init_booking_refunds = __esm({
6369
+ "../core/src/booking-refunds.ts"() {
6370
+ "use strict";
6371
+ }
6372
+ });
6373
+
6374
+ // ../core/src/booking-instalments.ts
6375
+ var init_booking_instalments = __esm({
6376
+ "../core/src/booking-instalments.ts"() {
6377
+ "use strict";
6378
+ }
6379
+ });
6380
+
6381
+ // ../core/src/result.ts
6382
+ var init_result = __esm({
6383
+ "../core/src/result.ts"() {
6384
+ "use strict";
6385
+ }
6386
+ });
6387
+
6388
+ // ../core/src/booking-date-time.ts
6389
+ var init_booking_date_time = __esm({
6390
+ "../core/src/booking-date-time.ts"() {
6391
+ "use strict";
6392
+ }
6393
+ });
6394
+
6395
+ // ../core/src/person-records.ts
6396
+ var init_person_records = __esm({
6397
+ "../core/src/person-records.ts"() {
6398
+ "use strict";
6399
+ }
6400
+ });
6401
+
6402
+ // ../core/src/rectification.ts
6403
+ var init_rectification = __esm({
6404
+ "../core/src/rectification.ts"() {
6405
+ "use strict";
6406
+ }
6407
+ });
6408
+
6409
+ // ../core/src/location.ts
6410
+ function normalizeLocationAddressText(value) {
6411
+ if (typeof value !== "string") {
6412
+ return null;
6413
+ }
6414
+ const trimmed = value.trim();
6415
+ return trimmed ? trimmed : null;
6416
+ }
6417
+ function hasLocationCoordinates(value) {
6418
+ return typeof value?.lat === "number" && typeof value?.lng === "number";
6419
+ }
6420
+ function toLocationCoordinates(value) {
6421
+ if (!hasLocationCoordinates(value)) {
6422
+ return null;
6423
+ }
6424
+ return {
6425
+ lat: value.lat,
6426
+ lng: value.lng
6427
+ };
6428
+ }
6429
+ var init_location = __esm({
6430
+ "../core/src/location.ts"() {
6431
+ "use strict";
6432
+ }
6433
+ });
6434
+
6435
+ // ../core/src/business-address.ts
6436
+ var init_business_address = __esm({
6437
+ "../core/src/business-address.ts"() {
6438
+ "use strict";
6439
+ }
6440
+ });
6441
+
6442
+ // ../core/src/narrow-result.ts
6443
+ var init_narrow_result = __esm({
6444
+ "../core/src/narrow-result.ts"() {
6445
+ "use strict";
6446
+ }
6447
+ });
6448
+
6449
+ // ../core/src/non-empty-array.ts
6450
+ var init_non_empty_array = __esm({
6451
+ "../core/src/non-empty-array.ts"() {
6452
+ "use strict";
6453
+ }
6454
+ });
6455
+
6456
+ // ../core/src/editor-state.ts
6457
+ var init_editor_state = __esm({
6458
+ "../core/src/editor-state.ts"() {
6459
+ "use strict";
6460
+ }
6461
+ });
6462
+
6463
+ // ../core/src/sensitive-collection.ts
6464
+ var init_sensitive_collection = __esm({
6465
+ "../core/src/sensitive-collection.ts"() {
6466
+ "use strict";
6467
+ }
6468
+ });
6469
+
6470
+ // ../core/src/assertNever.ts
6471
+ var init_assertNever = __esm({
6472
+ "../core/src/assertNever.ts"() {
6473
+ "use strict";
6474
+ }
6475
+ });
6476
+
6477
+ // ../core/src/participants.ts
6478
+ var init_participants = __esm({
6479
+ "../core/src/participants.ts"() {
6480
+ "use strict";
6481
+ }
6482
+ });
6483
+
6484
+ // ../core/src/participant-identity.ts
6485
+ var init_participant_identity = __esm({
6486
+ "../core/src/participant-identity.ts"() {
6487
+ "use strict";
6488
+ }
6489
+ });
6490
+
6491
+ // ../core/src/public-url-validation.ts
6492
+ var init_public_url_validation = __esm({
6493
+ "../core/src/public-url-validation.ts"() {
6494
+ "use strict";
6495
+ }
6496
+ });
6497
+
6498
+ // ../core/src/number-input.ts
6499
+ var init_number_input = __esm({
6500
+ "../core/src/number-input.ts"() {
6501
+ "use strict";
6502
+ }
6503
+ });
6504
+
6505
+ // ../core/src/field-errors.ts
6506
+ var init_field_errors = __esm({
6507
+ "../core/src/field-errors.ts"() {
6508
+ "use strict";
6509
+ }
6510
+ });
6511
+
6512
+ // ../core/src/form-submission-preview.ts
6513
+ var init_form_submission_preview = __esm({
6514
+ "../core/src/form-submission-preview.ts"() {
6515
+ "use strict";
6516
+ }
6517
+ });
6518
+
6519
+ // ../core/src/csv-cells.ts
6520
+ var init_csv_cells = __esm({
6521
+ "../core/src/csv-cells.ts"() {
6522
+ "use strict";
6523
+ }
6524
+ });
6525
+
6526
+ // ../core/src/csv-date-filter.ts
6527
+ var init_csv_date_filter = __esm({
6528
+ "../core/src/csv-date-filter.ts"() {
6529
+ "use strict";
6530
+ }
6531
+ });
6532
+
6533
+ // ../core/src/csv-escape.ts
6534
+ var init_csv_escape = __esm({
6535
+ "../core/src/csv-escape.ts"() {
6536
+ "use strict";
6537
+ }
6538
+ });
6539
+
6540
+ // ../core/src/csv-filename.ts
6541
+ var init_csv_filename = __esm({
6542
+ "../core/src/csv-filename.ts"() {
6543
+ "use strict";
6544
+ }
6545
+ });
6546
+
6547
+ // ../core/src/csv-render.ts
6548
+ var init_csv_render = __esm({
6549
+ "../core/src/csv-render.ts"() {
6550
+ "use strict";
6551
+ }
6552
+ });
6553
+
6554
+ // ../core/src/csv-types.ts
6555
+ var init_csv_types = __esm({
6556
+ "../core/src/csv-types.ts"() {
6557
+ "use strict";
6558
+ }
6559
+ });
6560
+
6561
+ // ../core/src/currency-format.ts
6562
+ var init_currency_format = __esm({
6563
+ "../core/src/currency-format.ts"() {
6564
+ "use strict";
6565
+ }
6566
+ });
6567
+
6568
+ // ../core/src/email-format.ts
6569
+ var init_email_format = __esm({
6570
+ "../core/src/email-format.ts"() {
6571
+ "use strict";
6572
+ }
6573
+ });
6574
+
6575
+ // ../core/src/slug.ts
6576
+ var init_slug = __esm({
6577
+ "../core/src/slug.ts"() {
6578
+ "use strict";
6579
+ }
6580
+ });
6581
+
6582
+ // ../core/src/string.ts
6583
+ var init_string = __esm({
6584
+ "../core/src/string.ts"() {
6585
+ "use strict";
6586
+ }
6587
+ });
6588
+
6589
+ // ../core/src/uuid.ts
6590
+ var init_uuid = __esm({
6591
+ "../core/src/uuid.ts"() {
6592
+ "use strict";
6593
+ }
6594
+ });
6595
+
6596
+ // ../core/src/index.ts
6597
+ var init_src = __esm({
6598
+ "../core/src/index.ts"() {
6599
+ "use strict";
6600
+ init_branded();
6601
+ init_date_math();
6602
+ init_duration();
6603
+ init_demo_capability_policy();
6604
+ init_demo_claim_access();
6605
+ init_demo_lifecycle_status();
6606
+ init_demo_runtime();
6607
+ init_collections();
6608
+ init_event_pricing();
6609
+ init_money_input();
6610
+ init_booking_flexible_balance();
6611
+ init_booking_refunds();
6612
+ init_booking_instalments();
6613
+ init_booking_date_time();
6614
+ init_person_records();
6615
+ init_rectification();
6616
+ init_location();
6617
+ init_business_address();
6618
+ init_result();
6619
+ init_narrow_result();
6620
+ init_non_empty_array();
6621
+ init_editor_state();
6622
+ init_sensitive_collection();
6623
+ init_assertNever();
6624
+ init_participants();
6625
+ init_participant_identity();
6626
+ init_public_url_validation();
6627
+ init_number_input();
6628
+ init_field_errors();
6629
+ init_form_submission_preview();
6630
+ init_csv_cells();
6631
+ init_csv_date_filter();
6632
+ init_csv_escape();
6633
+ init_csv_filename();
6634
+ init_csv_render();
6635
+ init_csv_types();
6636
+ init_currency_format();
6637
+ init_email_format();
6638
+ init_slug();
6639
+ init_string();
6640
+ init_uuid();
6641
+ }
6642
+ });
6643
+
6644
+ // ../api/src/demoDashboardMutationSurfaces.ts
6645
+ var init_demoDashboardMutationSurfaces = __esm({
6646
+ "../api/src/demoDashboardMutationSurfaces.ts"() {
6647
+ "use strict";
6648
+ init_endpoints();
6649
+ }
6650
+ });
6651
+
6271
6652
  // ../api/src/accessAdmin.ts
6272
6653
  import { z } from "zod";
6273
6654
  var managedDomainAddOnPricingSnapshotSchema;
@@ -6504,204 +6885,6 @@ var init_types = __esm({
6504
6885
  }
6505
6886
  });
6506
6887
 
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
6888
  // ../media-core/src/fileSafety.ts
6706
6889
  var init_fileSafety = __esm({
6707
6890
  "../media-core/src/fileSafety.ts"() {
@@ -6876,6 +7059,39 @@ var init_fileMimeDetection = __esm({
6876
7059
  }
6877
7060
  });
6878
7061
 
7062
+ // ../media-core/src/filename.ts
7063
+ var init_filename = __esm({
7064
+ "../media-core/src/filename.ts"() {
7065
+ "use strict";
7066
+ }
7067
+ });
7068
+
7069
+ // ../media-core/src/uploadVerificationContract.ts
7070
+ var PRODUCT_FILE_EXTENSION_TAGS, PRODUCT_FILE_EXTENSIONS, TEXT_FALLBACK_SCAN_BYTES;
7071
+ var init_uploadVerificationContract = __esm({
7072
+ "../media-core/src/uploadVerificationContract.ts"() {
7073
+ "use strict";
7074
+ PRODUCT_FILE_EXTENSION_TAGS = [
7075
+ "pdf",
7076
+ "docx",
7077
+ "txt",
7078
+ "rtf",
7079
+ "csv",
7080
+ "zip",
7081
+ "mp3",
7082
+ "m4a",
7083
+ "wav",
7084
+ "ogg",
7085
+ "flac",
7086
+ "webm",
7087
+ "mp4",
7088
+ "mov"
7089
+ ];
7090
+ PRODUCT_FILE_EXTENSIONS = new Set(PRODUCT_FILE_EXTENSION_TAGS);
7091
+ TEXT_FALLBACK_SCAN_BYTES = 4 * 1024;
7092
+ }
7093
+ });
7094
+
6879
7095
  // ../media-core/src/videoPrep.ts
6880
7096
  var VIDEO_PREP_LIMITS;
6881
7097
  var init_videoPrep = __esm({
@@ -6890,6 +7106,55 @@ var init_videoPrep = __esm({
6890
7106
  }
6891
7107
  });
6892
7108
 
7109
+ // ../media-core/src/videoAssetRepair.ts
7110
+ var init_videoAssetRepair = __esm({
7111
+ "../media-core/src/videoAssetRepair.ts"() {
7112
+ "use strict";
7113
+ }
7114
+ });
7115
+
7116
+ // ../media-core/src/canonicalCropReview.ts
7117
+ var init_canonicalCropReview = __esm({
7118
+ "../media-core/src/canonicalCropReview.ts"() {
7119
+ "use strict";
7120
+ }
7121
+ });
7122
+
7123
+ // ../media-core/src/mediaAssetUsageStatus.ts
7124
+ var init_mediaAssetUsageStatus = __esm({
7125
+ "../media-core/src/mediaAssetUsageStatus.ts"() {
7126
+ "use strict";
7127
+ }
7128
+ });
7129
+
7130
+ // ../media-core/src/assetsInUseSummary.ts
7131
+ var init_assetsInUseSummary = __esm({
7132
+ "../media-core/src/assetsInUseSummary.ts"() {
7133
+ "use strict";
7134
+ }
7135
+ });
7136
+
7137
+ // ../media-core/src/bulkDeletePlanning.ts
7138
+ var init_bulkDeletePlanning = __esm({
7139
+ "../media-core/src/bulkDeletePlanning.ts"() {
7140
+ "use strict";
7141
+ }
7142
+ });
7143
+
7144
+ // ../media-core/src/classifyAllPlanning.ts
7145
+ var init_classifyAllPlanning = __esm({
7146
+ "../media-core/src/classifyAllPlanning.ts"() {
7147
+ "use strict";
7148
+ }
7149
+ });
7150
+
7151
+ // ../media-core/src/mediaSettingsState.ts
7152
+ var init_mediaSettingsState = __esm({
7153
+ "../media-core/src/mediaSettingsState.ts"() {
7154
+ "use strict";
7155
+ }
7156
+ });
7157
+
6893
7158
  // ../media-core/src/videoSlotPolicy.ts
6894
7159
  var init_videoSlotPolicy = __esm({
6895
7160
  "../media-core/src/videoSlotPolicy.ts"() {
@@ -7035,6 +7300,13 @@ var init_mediaUsageProjection = __esm({
7035
7300
  }
7036
7301
  });
7037
7302
 
7303
+ // ../media-core/src/portableMediaReferences.ts
7304
+ var init_portableMediaReferences = __esm({
7305
+ "../media-core/src/portableMediaReferences.ts"() {
7306
+ "use strict";
7307
+ }
7308
+ });
7309
+
7038
7310
  // ../media-core/src/index.ts
7039
7311
  var init_src2 = __esm({
7040
7312
  "../media-core/src/index.ts"() {
@@ -7055,7 +7327,16 @@ var init_src2 = __esm({
7055
7327
  init_fileAssetDeletion();
7056
7328
  init_fileAssetCompatibility();
7057
7329
  init_fileMimeDetection();
7330
+ init_filename();
7331
+ init_uploadVerificationContract();
7058
7332
  init_videoPrep();
7333
+ init_videoAssetRepair();
7334
+ init_canonicalCropReview();
7335
+ init_mediaAssetUsageStatus();
7336
+ init_assetsInUseSummary();
7337
+ init_bulkDeletePlanning();
7338
+ init_classifyAllPlanning();
7339
+ init_mediaSettingsState();
7059
7340
  init_videoSlotPolicy();
7060
7341
  init_identifiers();
7061
7342
  init_aspectTransforms();
@@ -7063,6 +7344,7 @@ var init_src2 = __esm({
7063
7344
  init_mediaWriteNormalizer();
7064
7345
  init_richTextImageWriteNormalizer();
7065
7346
  init_mediaUsageProjection();
7347
+ init_portableMediaReferences();
7066
7348
  }
7067
7349
  });
7068
7350
 
@@ -8225,6 +8507,9 @@ function makeBoundaryId(previousBlockId, nextBlockId) {
8225
8507
  const next = encodeURIComponent(nextBlockId);
8226
8508
  return asDesignBoundaryId(`boundary:${previous}:${next}`);
8227
8509
  }
8510
+ function assertNever(value, message = "Unhandled Theme V2 variant") {
8511
+ throw new Error(`${message}: ${String(value)}`);
8512
+ }
8228
8513
  function brandNonEmptyString(value, label) {
8229
8514
  if (value.length === 0) {
8230
8515
  throw new Error(`${label} must be a non-empty string.`);
@@ -8253,12 +8538,13 @@ function defineBlockDesignCapability(capability) {
8253
8538
  imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
8254
8539
  testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"],
8255
8540
  tileTreatments: capability.tileTreatments ?? ["default"],
8541
+ eventListTreatments: capability.eventListTreatments ?? ["plain"],
8256
8542
  eyebrowTreatments: capability.eyebrowTreatments ?? ["plain"],
8257
8543
  ...capability.headingDecorations ? { headingDecorations: capability.headingDecorations } : {},
8258
8544
  ...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
8259
8545
  };
8260
8546
  }
8261
- var plainFrame, tileTreatmentValues, eyebrowTreatmentValues, visibleHeadingDecorationFamilyValues, visibleHeadingDecorationPlacementValues, headingDecorationOverrideValues, headingDecorationColorTokenValues, accordionIconSetValues, accordionIconColorTokenValues, accordionIconMotionValues;
8547
+ var plainFrame, tileTreatmentValues, eventListTreatmentValues, eyebrowTreatmentValues, visibleHeadingDecorationFamilyValues, visibleHeadingDecorationPlacementValues, headingDecorationOverrideValues, headingDecorationColorTokenValues, accordionIconSetValues, accordionIconColorTokenValues, accordionIconMotionValues;
8262
8548
  var init_types2 = __esm({
8263
8549
  "../theme-core/src/site-styles/types.ts"() {
8264
8550
  "use strict";
@@ -8270,6 +8556,10 @@ var init_types2 = __esm({
8270
8556
  "quiet",
8271
8557
  "brand-depth"
8272
8558
  ];
8559
+ eventListTreatmentValues = [
8560
+ "plain",
8561
+ "lined-panel"
8562
+ ];
8273
8563
  eyebrowTreatmentValues = [
8274
8564
  "plain",
8275
8565
  "pill",
@@ -8345,9 +8635,98 @@ var init_blockAppearancePresets = __esm({
8345
8635
  transitionAfter: "soft-fade-short",
8346
8636
  emphasis: "high",
8347
8637
  sectionHeight: "hero",
8638
+ heroComposition: "center",
8639
+ heroTypographyScale: "display",
8348
8640
  imageSurfaceTreatment: { kind: "neutral-wash" }
8349
8641
  }
8350
8642
  }),
8643
+ defineBlockAppearancePreset({
8644
+ kind: "block-design",
8645
+ id: "hero-bottom-left-panel",
8646
+ target: "hero",
8647
+ label: "Bottom-left panel hero",
8648
+ blockKinds: ["block.hero"],
8649
+ constraints: {
8650
+ layoutFamilies: ["centered", "compact"]
8651
+ },
8652
+ optionGroups: [
8653
+ {
8654
+ id: "image-surface-treatment",
8655
+ label: "Treatment",
8656
+ selectedOptionId: "neutral-scrim",
8657
+ options: [
8658
+ {
8659
+ id: "neutral-scrim",
8660
+ label: "Neutral scrim",
8661
+ designPatch: {
8662
+ imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
8663
+ }
8664
+ },
8665
+ {
8666
+ id: "brand-scrim-primary",
8667
+ label: "Brand scrim",
8668
+ designPatch: {
8669
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "balanced" }
8670
+ }
8671
+ }
8672
+ ]
8673
+ }
8674
+ ],
8675
+ layoutPatches: [
8676
+ {
8677
+ constraints: {
8678
+ layoutVariantKeys: ["micro"]
8679
+ },
8680
+ designPatch: {
8681
+ sectionHeight: "banner",
8682
+ heroTypographyScale: "editorial"
8683
+ }
8684
+ }
8685
+ ],
8686
+ design: {
8687
+ sectionSurface: "hero-image",
8688
+ contentFrame: panelFrame("raised"),
8689
+ itemSurface: "none",
8690
+ transitionAfter: "soft-fade-short",
8691
+ emphasis: "high",
8692
+ sectionHeight: "immersive",
8693
+ heroComposition: "bottom-left",
8694
+ heroTypographyScale: "display",
8695
+ imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
8696
+ }
8697
+ }),
8698
+ defineBlockAppearancePreset({
8699
+ kind: "block-design",
8700
+ id: "hero-poster-image",
8701
+ target: "hero",
8702
+ label: "Poster image hero",
8703
+ blockKinds: ["block.hero"],
8704
+ constraints: {
8705
+ layoutFamilies: ["centered", "compact"]
8706
+ },
8707
+ layoutPatches: [
8708
+ {
8709
+ constraints: {
8710
+ layoutVariantKeys: ["micro"]
8711
+ },
8712
+ designPatch: {
8713
+ sectionHeight: "banner",
8714
+ heroTypographyScale: "display"
8715
+ }
8716
+ }
8717
+ ],
8718
+ design: {
8719
+ sectionSurface: "hero-image",
8720
+ contentFrame: plainFrame,
8721
+ itemSurface: "none",
8722
+ transitionAfter: "soft-fade-short",
8723
+ emphasis: "high",
8724
+ sectionHeight: "immersive",
8725
+ heroComposition: "center",
8726
+ heroTypographyScale: "poster",
8727
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "strong" }
8728
+ }
8729
+ }),
8351
8730
  defineBlockAppearancePreset({
8352
8731
  kind: "block-design",
8353
8732
  id: "hero-brand-scrim",
@@ -8397,6 +8776,8 @@ var init_blockAppearancePresets = __esm({
8397
8776
  transitionAfter: "soft-fade-short",
8398
8777
  emphasis: "high",
8399
8778
  sectionHeight: "immersive",
8779
+ heroComposition: "center",
8780
+ heroTypographyScale: "display",
8400
8781
  imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
8401
8782
  }
8402
8783
  }),
@@ -8449,6 +8830,8 @@ var init_blockAppearancePresets = __esm({
8449
8830
  transitionAfter: "soft-fade-short",
8450
8831
  emphasis: "high",
8451
8832
  sectionHeight: "immersive",
8833
+ heroComposition: "center",
8834
+ heroTypographyScale: "display",
8452
8835
  imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
8453
8836
  imageSurfaceMotion: "fixed-frame",
8454
8837
  eyebrowTreatment: "accent-pill-bounce"
@@ -8469,6 +8852,8 @@ var init_blockAppearancePresets = __esm({
8469
8852
  itemSurface: "none",
8470
8853
  transitionAfter: "soft-fade-short",
8471
8854
  emphasis: "high",
8855
+ heroComposition: "center",
8856
+ heroTypographyScale: "editorial",
8472
8857
  eyebrowTreatment: "accent-pill-bounce"
8473
8858
  }
8474
8859
  }),
@@ -8483,7 +8868,82 @@ var init_blockAppearancePresets = __esm({
8483
8868
  contentFrame: panelFrame("inset"),
8484
8869
  itemSurface: "none",
8485
8870
  transitionAfter: "none",
8486
- emphasis: "high"
8871
+ emphasis: "high",
8872
+ heroComposition: "center",
8873
+ heroTypographyScale: "editorial"
8874
+ }
8875
+ }),
8876
+ defineBlockAppearancePreset({
8877
+ kind: "block-design",
8878
+ id: "hero-split-editorial",
8879
+ target: "hero",
8880
+ label: "Editorial split hero",
8881
+ blockKinds: ["block.hero"],
8882
+ constraints: {
8883
+ layoutFamilies: ["split"]
8884
+ },
8885
+ design: {
8886
+ sectionSurface: "base",
8887
+ contentFrame: plainFrame,
8888
+ itemSurface: "none",
8889
+ transitionAfter: "soft-fade-short",
8890
+ emphasis: "high",
8891
+ heroTypographyScale: "editorial"
8892
+ }
8893
+ }),
8894
+ defineBlockAppearancePreset({
8895
+ kind: "block-design",
8896
+ id: "hero-split-brand",
8897
+ target: "hero",
8898
+ label: "Brand split hero",
8899
+ blockKinds: ["block.hero"],
8900
+ constraints: {
8901
+ layoutFamilies: ["split"]
8902
+ },
8903
+ design: {
8904
+ sectionSurface: "brand-depth-band",
8905
+ contentFrame: plainFrame,
8906
+ itemSurface: "none",
8907
+ transitionAfter: "soft-fade-short",
8908
+ emphasis: "high",
8909
+ heroTypographyScale: "display",
8910
+ eyebrowTreatment: "accent-pill-bounce"
8911
+ }
8912
+ }),
8913
+ defineBlockAppearancePreset({
8914
+ kind: "block-design",
8915
+ id: "hero-split-soft-panel",
8916
+ target: "hero",
8917
+ label: "Soft panel split hero",
8918
+ blockKinds: ["block.hero"],
8919
+ constraints: {
8920
+ layoutFamilies: ["split"]
8921
+ },
8922
+ design: {
8923
+ sectionSurface: "muted-band",
8924
+ contentFrame: panelFrame("raised"),
8925
+ itemSurface: "none",
8926
+ transitionAfter: "soft-fade-short",
8927
+ emphasis: "high",
8928
+ heroTypographyScale: "editorial"
8929
+ }
8930
+ }),
8931
+ defineBlockAppearancePreset({
8932
+ kind: "block-design",
8933
+ id: "hero-split-accent",
8934
+ target: "hero",
8935
+ label: "Accent split hero",
8936
+ blockKinds: ["block.hero"],
8937
+ constraints: {
8938
+ layoutFamilies: ["split"]
8939
+ },
8940
+ design: {
8941
+ sectionSurface: "accent-band",
8942
+ contentFrame: panelFrame("raised"),
8943
+ itemSurface: "none",
8944
+ transitionAfter: "soft-fade-short",
8945
+ emphasis: "high",
8946
+ heroTypographyScale: "display"
8487
8947
  }
8488
8948
  }),
8489
8949
  defineBlockAppearancePreset({
@@ -8516,9 +8976,9 @@ var init_blockAppearancePresets = __esm({
8516
8976
  }),
8517
8977
  defineBlockAppearancePreset({
8518
8978
  kind: "block-design",
8519
- id: "intro-soft-earth-statement",
8979
+ id: "intro-organic-statement",
8520
8980
  target: "intro",
8521
- label: "Soft Earth intro statement",
8981
+ label: "Organic intro statement",
8522
8982
  blockKinds: ["block.intro"],
8523
8983
  design: {
8524
8984
  sectionSurface: "base",
@@ -8549,9 +9009,9 @@ var init_blockAppearancePresets = __esm({
8549
9009
  }),
8550
9010
  defineBlockAppearancePreset({
8551
9011
  kind: "block-design",
8552
- id: "feature-cards-soft-earth-offerings",
9012
+ id: "feature-cards-raised-rule",
8553
9013
  target: "feature-cards",
8554
- label: "Soft Earth offering cards",
9014
+ label: "Raised cards with rule",
8555
9015
  blockKinds: ["block.feature-cards"],
8556
9016
  design: {
8557
9017
  sectionSurface: "base",
@@ -8580,6 +9040,21 @@ var init_blockAppearancePresets = __esm({
8580
9040
  emphasis: "medium"
8581
9041
  }
8582
9042
  }),
9043
+ defineBlockAppearancePreset({
9044
+ kind: "block-design",
9045
+ id: "events-lined-panel",
9046
+ target: "events",
9047
+ label: "Lined event panel",
9048
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9049
+ design: {
9050
+ sectionSurface: "base",
9051
+ contentFrame: plainFrame,
9052
+ itemSurface: "none",
9053
+ transitionAfter: "none",
9054
+ emphasis: "medium",
9055
+ eventListTreatment: "lined-panel"
9056
+ }
9057
+ }),
8583
9058
  defineBlockAppearancePreset({
8584
9059
  kind: "block-design",
8585
9060
  id: "schedule-details-accent-section",
@@ -8639,9 +9114,9 @@ var init_blockAppearancePresets = __esm({
8639
9114
  }),
8640
9115
  defineBlockAppearancePreset({
8641
9116
  kind: "block-design",
8642
- id: "testimonials-carded-proof",
9117
+ id: "testimonials-simple-cards",
8643
9118
  target: "testimonials",
8644
- label: "Carded social proof",
9119
+ label: "Simple testimonial cards",
8645
9120
  blockKinds: ["block.testimonials"],
8646
9121
  design: {
8647
9122
  sectionSurface: "base",
@@ -8653,9 +9128,9 @@ var init_blockAppearancePresets = __esm({
8653
9128
  }),
8654
9129
  defineBlockAppearancePreset({
8655
9130
  kind: "block-design",
8656
- id: "testimonials-contained-proof",
9131
+ id: "testimonials-raised-panel",
8657
9132
  target: "testimonials",
8658
- label: "Contained social proof",
9133
+ label: "Raised testimonial panel",
8659
9134
  blockKinds: ["block.testimonials"],
8660
9135
  design: {
8661
9136
  sectionSurface: "muted-band",
@@ -8667,9 +9142,9 @@ var init_blockAppearancePresets = __esm({
8667
9142
  }),
8668
9143
  defineBlockAppearancePreset({
8669
9144
  kind: "block-design",
8670
- id: "testimonials-dark-proof",
9145
+ id: "testimonials-accent-panel",
8671
9146
  target: "testimonials",
8672
- label: "Dark proof panel",
9147
+ label: "Accent testimonial panel",
8673
9148
  blockKinds: ["block.testimonials"],
8674
9149
  design: {
8675
9150
  sectionSurface: "accent-band",
@@ -8681,9 +9156,9 @@ var init_blockAppearancePresets = __esm({
8681
9156
  }),
8682
9157
  defineBlockAppearancePreset({
8683
9158
  kind: "block-design",
8684
- id: "testimonials-accent-quote-proof",
9159
+ id: "testimonials-accent-quote-cards",
8685
9160
  target: "testimonials",
8686
- label: "Accent quote proof",
9161
+ label: "Accent quote cards",
8687
9162
  blockKinds: ["block.testimonials"],
8688
9163
  design: {
8689
9164
  sectionSurface: "accent-band",
@@ -8696,9 +9171,9 @@ var init_blockAppearancePresets = __esm({
8696
9171
  }),
8697
9172
  defineBlockAppearancePreset({
8698
9173
  kind: "block-design",
8699
- id: "testimonials-soft-earth-proof-band",
9174
+ id: "testimonials-brand-background-quotes",
8700
9175
  target: "testimonials",
8701
- label: "Soft Earth proof band",
9176
+ label: "Brand background quotes",
8702
9177
  blockKinds: ["block.testimonials"],
8703
9178
  design: {
8704
9179
  sectionSurface: "brand-depth-band",
@@ -8742,25 +9217,6 @@ var init_blockAppearancePresets = __esm({
8742
9217
  emphasis: "low"
8743
9218
  }
8744
9219
  }),
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
9220
  defineBlockAppearancePreset({
8765
9221
  kind: "block-design",
8766
9222
  id: "contact-form-panel",
@@ -10563,7 +11019,8 @@ var init_types7 = __esm({
10563
11019
  icon: z15.object({
10564
11020
  style: accordionIconSchema,
10565
11021
  position: z15.enum(["left", "right"]),
10566
- size: z15.enum(["sm", "md", "lg"])
11022
+ size: z15.enum(["sm", "md", "lg"]),
11023
+ colorToken: themeColorTokenSchema.optional()
10567
11024
  }),
10568
11025
  // Trigger (question) styling
10569
11026
  trigger: z15.object({
@@ -10712,7 +11169,7 @@ var init_baseSchema = __esm({
10712
11169
 
10713
11170
  // ../theme-core/src/navigation/types.ts
10714
11171
  import { z as z19 } from "zod";
10715
- var navLinkPaddingSchema, navLinkPaddingXSchema, navLinkBorderRadiusSchema, navLinkTextSizeSchema, navLinkLetterSpacingSchema, navLinkStyleSchema;
11172
+ var navLinkPaddingSchema, navLinkPaddingXSchema, navLinkBorderRadiusSchema, navLinkTextSizeSchema, navLinkLetterSpacingSchema, navLinkContrastTreatmentSchema, navLinkStyleSchema;
10716
11173
  var init_types10 = __esm({
10717
11174
  "../theme-core/src/navigation/types.ts"() {
10718
11175
  "use strict";
@@ -10723,6 +11180,7 @@ var init_types10 = __esm({
10723
11180
  navLinkBorderRadiusSchema = z19.enum(["none", "sm", "md", "full"]);
10724
11181
  navLinkTextSizeSchema = z19.enum(["xs", "sm", "base", "lg"]);
10725
11182
  navLinkLetterSpacingSchema = z19.enum(["normal", "wide", "wider", "widest"]);
11183
+ navLinkContrastTreatmentSchema = z19.enum(["none", "soft-glow"]);
10726
11184
  navLinkStyleSchema = z19.object({
10727
11185
  /** Display name for the style */
10728
11186
  name: z19.string().min(1).max(30).optional(),
@@ -10734,6 +11192,8 @@ var init_types10 = __esm({
10734
11192
  textSize: navLinkTextSizeSchema.optional(),
10735
11193
  /** Optional letter spacing override */
10736
11194
  letterSpacing: navLinkLetterSpacingSchema.optional(),
11195
+ /** Optional text-only contrast treatment for transparent/overlay navigation */
11196
+ contrastTreatment: navLinkContrastTreatmentSchema.optional(),
10737
11197
  /** Hover/active color token (for color-change effects) */
10738
11198
  hoverColorToken: themeColorTokenSchema.nullable().optional(),
10739
11199
  /** Padding preset */
@@ -11225,6 +11685,7 @@ var init_schema3 = __esm({
11225
11685
  spacing: semanticSpacingSchema.nullable().optional(),
11226
11686
  minHeight: z24.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
11227
11687
  tileTreatment: z24.enum(tileTreatmentValues).nullable().optional(),
11688
+ eventListTreatment: z24.enum(eventListTreatmentValues).nullable().optional(),
11228
11689
  eyebrowTreatment: z24.enum(eyebrowTreatmentValues).nullable().optional(),
11229
11690
  headingDecoration: headingDecorationSchema.nullable().optional(),
11230
11691
  // Author-level override consumed by later block/editor rendering phases.
@@ -12109,6 +12570,40 @@ var init_variants = __esm({
12109
12570
  }
12110
12571
  });
12111
12572
 
12573
+ // ../theme-core/src/accordions/siteStyleDefaults.ts
12574
+ var softEarthAccordionSystem;
12575
+ var init_siteStyleDefaults = __esm({
12576
+ "../theme-core/src/accordions/siteStyleDefaults.ts"() {
12577
+ "use strict";
12578
+ softEarthAccordionSystem = {
12579
+ background: {
12580
+ type: "solid",
12581
+ colorToken: "background"
12582
+ },
12583
+ spacing: "comfortable",
12584
+ corners: "square",
12585
+ border: null,
12586
+ shadow: null,
12587
+ icon: {
12588
+ style: "plus-minus",
12589
+ position: "right",
12590
+ size: "md",
12591
+ colorToken: "primary"
12592
+ },
12593
+ trigger: {
12594
+ textColorToken: "text",
12595
+ fontWeight: "medium"
12596
+ },
12597
+ hover: {
12598
+ textColorToken: "primary"
12599
+ },
12600
+ content: {
12601
+ textColorToken: "neutral-700"
12602
+ }
12603
+ };
12604
+ }
12605
+ });
12606
+
12112
12607
  // ../theme-core/src/site-styles/customizableSurfaces.ts
12113
12608
  var init_customizableSurfaces = __esm({
12114
12609
  "../theme-core/src/site-styles/customizableSurfaces.ts"() {
@@ -12175,6 +12670,23 @@ function getCompatibleHeaderStyleIds(layoutId) {
12175
12670
  }
12176
12671
  );
12177
12672
  }
12673
+ function themedHeaderShadow(theme) {
12674
+ switch (theme.shadow.elevation) {
12675
+ case "none":
12676
+ return void 0;
12677
+ case "low":
12678
+ return { elevation: "sm" };
12679
+ case "medium":
12680
+ return { elevation: "md" };
12681
+ case "high":
12682
+ return { elevation: "lg" };
12683
+ default:
12684
+ return assertNever(
12685
+ theme.shadow.elevation,
12686
+ "Unhandled theme shadow elevation"
12687
+ );
12688
+ }
12689
+ }
12178
12690
  function solidBrandHeader(theme) {
12179
12691
  const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
12180
12692
  return {
@@ -12324,9 +12836,7 @@ function practicalUtilityHeader(theme) {
12324
12836
  navColor: "text",
12325
12837
  navStyle: "solid",
12326
12838
  navWeight: "semibold",
12327
- shadow: {
12328
- elevation: "sm"
12329
- },
12839
+ shadow: themedHeaderShadow(theme),
12330
12840
  border: {
12331
12841
  style: "solid",
12332
12842
  width: "thin",
@@ -12395,6 +12905,7 @@ function floatingGlassHeader(theme) {
12395
12905
  return {
12396
12906
  ...transparentOverlayHeader(theme),
12397
12907
  variant: "floating",
12908
+ positioning: "sticky",
12398
12909
  navStyle: "frosted",
12399
12910
  navContainer: {
12400
12911
  type: "glass",
@@ -12448,7 +12959,7 @@ var init_headerLooks = __esm({
12448
12959
  description: "Detached header chrome that sits over the opening section.",
12449
12960
  structure: "floating-shell",
12450
12961
  variant: "floating",
12451
- defaultPositioning: "fixed",
12962
+ defaultPositioning: "sticky",
12452
12963
  shrinkOnScroll: true,
12453
12964
  maxRecommendedNavItems: 5,
12454
12965
  allowedLogoShapes: ["none", "text-only", "horizontal"]
@@ -12462,7 +12973,9 @@ var init_headerLooks = __esm({
12462
12973
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12463
12974
  navInteraction: "color-change",
12464
12975
  surface: "neutral",
12465
- navTypography: "plain"
12976
+ defaultDepth: "none",
12977
+ navTypography: "plain",
12978
+ moods: ["calm", "professional", "editorial"]
12466
12979
  },
12467
12980
  {
12468
12981
  id: asHeaderStyleId("fine-line"),
@@ -12471,7 +12984,9 @@ var init_headerLooks = __esm({
12471
12984
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12472
12985
  navInteraction: "underline-grow",
12473
12986
  surface: "bordered",
12474
- navTypography: "plain"
12987
+ defaultDepth: "line",
12988
+ navTypography: "plain",
12989
+ moods: ["calm", "professional", "editorial"]
12475
12990
  },
12476
12991
  {
12477
12992
  id: asHeaderStyleId("soft-bar"),
@@ -12480,7 +12995,9 @@ var init_headerLooks = __esm({
12480
12995
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12481
12996
  navInteraction: "pill-background",
12482
12997
  surface: "soft",
12483
- navTypography: "plain"
12998
+ defaultDepth: "line",
12999
+ navTypography: "plain",
13000
+ moods: ["calm", "professional"]
12484
13001
  },
12485
13002
  {
12486
13003
  id: asHeaderStyleId("pill-nav"),
@@ -12489,7 +13006,9 @@ var init_headerLooks = __esm({
12489
13006
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12490
13007
  navInteraction: "pill-background",
12491
13008
  surface: "soft",
12492
- navTypography: "plain"
13009
+ defaultDepth: "none",
13010
+ navTypography: "plain",
13011
+ moods: ["calm"]
12493
13012
  },
12494
13013
  {
12495
13014
  id: asHeaderStyleId("brand-bar"),
@@ -12498,7 +13017,9 @@ var init_headerLooks = __esm({
12498
13017
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12499
13018
  navInteraction: "color-change",
12500
13019
  surface: "brand-solid",
12501
- navTypography: "brand-caps"
13020
+ defaultDepth: "none",
13021
+ navTypography: "brand-caps",
13022
+ moods: ["professional", "expressive", "utility"]
12502
13023
  },
12503
13024
  {
12504
13025
  id: asHeaderStyleId("brand-underline"),
@@ -12507,7 +13028,9 @@ var init_headerLooks = __esm({
12507
13028
  supportedLayoutIds: supportedLayouts(["classic"]),
12508
13029
  navInteraction: "underline-grow",
12509
13030
  surface: "brand-solid",
12510
- navTypography: "brand-caps"
13031
+ defaultDepth: "none",
13032
+ navTypography: "brand-caps",
13033
+ moods: ["expressive"]
12511
13034
  },
12512
13035
  {
12513
13036
  id: asHeaderStyleId("brand-pill"),
@@ -12516,7 +13039,9 @@ var init_headerLooks = __esm({
12516
13039
  supportedLayoutIds: supportedLayouts(["classic", "centered", "floating"]),
12517
13040
  navInteraction: "pill-background",
12518
13041
  surface: "brand-solid",
12519
- navTypography: "brand-caps"
13042
+ defaultDepth: "none",
13043
+ navTypography: "brand-caps",
13044
+ moods: ["expressive"]
12520
13045
  },
12521
13046
  {
12522
13047
  id: asHeaderStyleId("serif-line"),
@@ -12525,7 +13050,9 @@ var init_headerLooks = __esm({
12525
13050
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12526
13051
  navInteraction: "underline-grow",
12527
13052
  surface: "bordered",
12528
- navTypography: "heading"
13053
+ defaultDepth: "line",
13054
+ navTypography: "heading",
13055
+ moods: ["editorial", "calm"]
12529
13056
  },
12530
13057
  {
12531
13058
  id: asHeaderStyleId("flat-tabs"),
@@ -12534,16 +13061,20 @@ var init_headerLooks = __esm({
12534
13061
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
12535
13062
  navInteraction: "flat-block",
12536
13063
  surface: "bordered",
12537
- navTypography: "quiet-caps"
13064
+ defaultDepth: "shadow",
13065
+ navTypography: "quiet-caps",
13066
+ moods: ["professional", "utility", "expressive"]
12538
13067
  },
12539
13068
  {
12540
13069
  id: asHeaderStyleId("glass"),
12541
13070
  label: "Glass",
12542
13071
  description: "Translucent chrome with frosted navigation backing.",
12543
- supportedLayoutIds: supportedLayouts(["classic", "floating"]),
13072
+ supportedLayoutIds: supportedLayouts(["floating"]),
12544
13073
  navInteraction: "glass-backed",
12545
13074
  surface: "floating",
12546
- navTypography: "plain"
13075
+ defaultDepth: "shadow",
13076
+ navTypography: "plain",
13077
+ moods: ["expressive", "calm"]
12547
13078
  },
12548
13079
  {
12549
13080
  id: asHeaderStyleId("minimal-surface"),
@@ -12552,7 +13083,9 @@ var init_headerLooks = __esm({
12552
13083
  supportedLayoutIds: supportedLayouts(["floating"]),
12553
13084
  navInteraction: "color-change",
12554
13085
  surface: "floating",
12555
- navTypography: "plain"
13086
+ defaultDepth: "none",
13087
+ navTypography: "plain",
13088
+ moods: ["editorial", "calm"]
12556
13089
  },
12557
13090
  {
12558
13091
  id: asHeaderStyleId("soft-shell"),
@@ -12561,7 +13094,9 @@ var init_headerLooks = __esm({
12561
13094
  supportedLayoutIds: supportedLayouts(["floating"]),
12562
13095
  navInteraction: "pill-background",
12563
13096
  surface: "floating",
12564
- navTypography: "plain"
13097
+ defaultDepth: "shadow",
13098
+ navTypography: "plain",
13099
+ moods: ["calm", "professional"]
12565
13100
  },
12566
13101
  {
12567
13102
  id: asHeaderStyleId("split-glass"),
@@ -12570,7 +13105,9 @@ var init_headerLooks = __esm({
12570
13105
  supportedLayoutIds: supportedLayouts(["floating"]),
12571
13106
  navInteraction: "glass-backed",
12572
13107
  surface: "floating",
12573
- navTypography: "quiet-caps"
13108
+ defaultDepth: "shadow",
13109
+ navTypography: "quiet-caps",
13110
+ moods: ["expressive"]
12574
13111
  },
12575
13112
  {
12576
13113
  id: asHeaderStyleId("split-pill"),
@@ -12579,7 +13116,9 @@ var init_headerLooks = __esm({
12579
13116
  supportedLayoutIds: supportedLayouts(["floating"]),
12580
13117
  navInteraction: "pill-background",
12581
13118
  surface: "floating",
12582
- navTypography: "heading"
13119
+ defaultDepth: "shadow",
13120
+ navTypography: "heading",
13121
+ moods: ["calm", "editorial"]
12583
13122
  }
12584
13123
  ];
12585
13124
  headerLayoutsById = new Map(
@@ -12593,7 +13132,6 @@ var init_headerLooks = __esm({
12593
13132
  asHeaderLayoutId("classic"),
12594
13133
  headerStyleRepairChain([
12595
13134
  "minimal",
12596
- "glass",
12597
13135
  "fine-line",
12598
13136
  "soft-bar",
12599
13137
  "pill-nav",
@@ -12657,7 +13195,13 @@ var init_headerLooks = __esm({
12657
13195
  ],
12658
13196
  [
12659
13197
  asHeaderStyleId("glass"),
12660
- headerStyleRepairChain(["glass", "minimal-surface", "minimal"])
13198
+ headerStyleRepairChain([
13199
+ "glass",
13200
+ "soft-shell",
13201
+ "fine-line",
13202
+ "minimal-surface",
13203
+ "minimal"
13204
+ ])
12661
13205
  ],
12662
13206
  [
12663
13207
  asHeaderStyleId("soft-shell"),
@@ -13269,7 +13813,7 @@ var init_typographyPresets = __esm({
13269
13813
  heroTypography: {
13270
13814
  headlineSize: "6xl",
13271
13815
  headlineLineHeight: "tight",
13272
- subheadlineSize: "editorial",
13816
+ subheadlineSize: "2xl",
13273
13817
  subheadlineLineHeight: "normal",
13274
13818
  microHeadlineSize: "6xl",
13275
13819
  microHeadlineLineHeight: "tight",
@@ -13305,7 +13849,10 @@ function uniqueContentFrameKinds() {
13305
13849
  }
13306
13850
  function defineCuratedSiteStyle(input) {
13307
13851
  const legacyHeaderLookIds = input.recommendedHeaderLookIds ?? ["clean-base"];
13308
- const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(legacyHeaderLookIds);
13852
+ const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(
13853
+ legacyHeaderLookIds,
13854
+ input.tokenRecipes
13855
+ );
13309
13856
  const typographyPresetChoices = input.typographyPresetChoices ?? defaultTypographyPresetChoicesForRecipe(input.tokenRecipes.typography);
13310
13857
  const defaultTypographyPresetId = input.defaultTypographyPresetId ? asTypographyPresetId(input.defaultTypographyPresetId) : typographyPresetChoices[0].id;
13311
13858
  if (!typographyPresetChoices.some(
@@ -13338,6 +13885,7 @@ function defineCuratedSiteStyle(input) {
13338
13885
  supportedTransitions: generatedDesignOptionCatalog.transitions
13339
13886
  },
13340
13887
  ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
13888
+ ...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
13341
13889
  recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
13342
13890
  defaultHeaderSelection: input.defaultHeaderSelection ? {
13343
13891
  layoutId: asHeaderLayoutId(input.defaultHeaderSelection.layoutId),
@@ -13396,7 +13944,69 @@ function nonEmptyHeaderStyleChoices(choices, fallbackLayoutId) {
13396
13944
  };
13397
13945
  return [first, ...choices.slice(1)];
13398
13946
  }
13399
- function inferHeaderCurationFromLegacyLooks(lookIds) {
13947
+ function uniqueCompatibleHeaderStyleChoices(choices, fallbackLayoutId) {
13948
+ const compatible = new Set(getCompatibleHeaderStyleIds(fallbackLayoutId));
13949
+ const seen = /* @__PURE__ */ new Set();
13950
+ const unique = choices.filter((choice) => {
13951
+ if (!compatible.has(choice.id)) return false;
13952
+ if (seen.has(choice.id)) return false;
13953
+ seen.add(choice.id);
13954
+ return true;
13955
+ });
13956
+ return nonEmptyHeaderStyleChoices(unique, fallbackLayoutId);
13957
+ }
13958
+ function inferredHeaderStyleValuesForRecipes(layoutId, recipes) {
13959
+ switch (layoutId) {
13960
+ case "classic":
13961
+ if (isExpressiveRecipe(recipes)) {
13962
+ return [
13963
+ "brand-bar",
13964
+ "brand-underline",
13965
+ "flat-tabs",
13966
+ "brand-pill",
13967
+ "fine-line"
13968
+ ];
13969
+ }
13970
+ if (recipes.spacing === "compact") {
13971
+ return ["flat-tabs", "fine-line", "minimal", "brand-bar"];
13972
+ }
13973
+ if (isSerifTypographyRecipe(recipes)) {
13974
+ return ["serif-line", "fine-line", "minimal", "soft-bar"];
13975
+ }
13976
+ if (recipes.radius === "rounded" || recipes.radius === "pill") {
13977
+ return ["soft-bar", "pill-nav", "fine-line", "minimal"];
13978
+ }
13979
+ return ["fine-line", "minimal", "soft-bar", "brand-bar"];
13980
+ case "centered":
13981
+ if (isSerifTypographyRecipe(recipes)) {
13982
+ return ["serif-line", "fine-line", "minimal", "soft-bar"];
13983
+ }
13984
+ if (isExpressiveRecipe(recipes)) {
13985
+ return ["brand-pill", "flat-tabs", "brand-bar", "fine-line"];
13986
+ }
13987
+ if (recipes.radius === "rounded" || recipes.radius === "pill") {
13988
+ return ["soft-bar", "pill-nav", "fine-line", "minimal"];
13989
+ }
13990
+ return ["minimal", "fine-line", "soft-bar"];
13991
+ case "floating":
13992
+ if (isExpressiveRecipe(recipes)) {
13993
+ return ["glass", "split-glass", "brand-pill", "soft-shell"];
13994
+ }
13995
+ if (isSerifTypographyRecipe(recipes)) {
13996
+ return ["split-pill", "minimal-surface", "soft-shell"];
13997
+ }
13998
+ return ["soft-shell", "minimal-surface", "glass"];
13999
+ default:
14000
+ return [];
14001
+ }
14002
+ }
14003
+ function isExpressiveRecipe(recipes) {
14004
+ return recipes.contrast === "maximum" || recipes.shadow === "layered" || recipes.motion === "expressive";
14005
+ }
14006
+ function isSerifTypographyRecipe(recipes) {
14007
+ return recipes.typography === "serif-editorial" || recipes.typography === "classic-serif";
14008
+ }
14009
+ function inferHeaderCurationFromLegacyLooks(lookIds, recipes) {
13400
14010
  const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter(
13401
14011
  (selection) => Boolean(selection)
13402
14012
  );
@@ -13409,8 +14019,15 @@ function inferHeaderCurationFromLegacyLooks(lookIds) {
13409
14019
  );
13410
14020
  const stylesByLayout = {};
13411
14021
  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);
14022
+ const legacyStyleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
14023
+ const inferredStyleChoices = inferredHeaderStyleValuesForRecipes(
14024
+ layoutChoice.id,
14025
+ recipes
14026
+ ).map((styleId) => headerStyleChoice(styleId));
14027
+ stylesByLayout[unbrandHeaderLayoutId(layoutChoice.id)] = uniqueCompatibleHeaderStyleChoices(
14028
+ [...legacyStyleChoices, ...inferredStyleChoices],
14029
+ layoutChoice.id
14030
+ );
13414
14031
  }
13415
14032
  return {
13416
14033
  defaultHeaderSelection,
@@ -13449,18 +14066,21 @@ function defaultTypographyPresetChoicesForRecipe(recipe) {
13449
14066
  ];
13450
14067
  }
13451
14068
  }
13452
- var curatedSiteStyleIdValues, quietBudget, balancedBudget, expressiveBudget, expressiveUnderlineInputs, generatedContentFrameKinds, curatedSiteStyles, curatedSiteStylesById;
14069
+ var SOFT_EARTH_SITE_STYLE_ID_VALUE, SOFT_EARTH_SITE_STYLE_ID, curatedSiteStyleIdValues, quietBudget, balancedBudget, expressiveBudget, expressiveUnderlineInputs, generatedContentFrameKinds, curatedSiteStyles, curatedSiteStylesById;
13453
14070
  var init_curatedSiteStyles = __esm({
13454
14071
  "../theme-core/src/site-styles/curatedSiteStyles.ts"() {
13455
14072
  "use strict";
13456
14073
  init_personalities();
13457
14074
  init_variants();
14075
+ init_siteStyleDefaults();
13458
14076
  init_headerLooks();
13459
14077
  init_footerLooks();
13460
14078
  init_curatedChoices();
13461
14079
  init_sourceCatalogs();
13462
14080
  init_types2();
13463
14081
  init_typographyPresets();
14082
+ SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
14083
+ SOFT_EARTH_SITE_STYLE_ID = asSiteStyleId(SOFT_EARTH_SITE_STYLE_ID_VALUE);
13464
14084
  curatedSiteStyleIdValues = [
13465
14085
  "site-style:calm-studio",
13466
14086
  "site-style:clear-professional",
@@ -13472,7 +14092,7 @@ var init_curatedSiteStyles = __esm({
13472
14092
  "site-style:personal-retreat-journal",
13473
14093
  "site-style:tactile-workshop",
13474
14094
  "site-style:modern-wellness",
13475
- "site-style:soft-earth",
14095
+ SOFT_EARTH_SITE_STYLE_ID_VALUE,
13476
14096
  "site-style:bold-launch",
13477
14097
  "site-style:south-west-twerk-school"
13478
14098
  ];
@@ -13919,10 +14539,10 @@ var init_curatedSiteStyles = __esm({
13919
14539
  ]
13920
14540
  }),
13921
14541
  defineCuratedSiteStyle({
13922
- id: "site-style:soft-earth",
14542
+ id: SOFT_EARTH_SITE_STYLE_ID,
13923
14543
  name: "Soft Earth",
13924
14544
  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.",
14545
+ 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
14546
  siteCreatorSelection: {
13927
14547
  kind: "site_creator_keyword_heuristic",
13928
14548
  priority: 45
@@ -13992,14 +14612,18 @@ var init_curatedSiteStyles = __esm({
13992
14612
  paragraphSize: "default",
13993
14613
  headingSize: "editorial"
13994
14614
  }
13995
- }
14615
+ },
14616
+ accordions: softEarthAccordionSystem
14617
+ },
14618
+ defaultBlockVariants: {
14619
+ "block.faq": "question-columns"
13996
14620
  },
13997
14621
  recommendedAppearancePresetIds: [
13998
14622
  "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",
14623
+ "intro-organic-statement",
14624
+ "feature-cards-raised-rule",
14625
+ "events-lined-panel",
14626
+ "testimonials-brand-background-quotes",
14003
14627
  "contact-form-panel"
14004
14628
  ],
14005
14629
  recommendedHeaderLookIds: [
@@ -14103,7 +14727,7 @@ var init_curatedSiteStyles = __esm({
14103
14727
  "hero-brand-scrim-fixed-frame",
14104
14728
  "body-text-editorial-intro",
14105
14729
  "schedule-details-brand-depth",
14106
- "testimonials-accent-quote-proof",
14730
+ "testimonials-accent-quote-cards",
14107
14731
  "contact-form-brand-depth-card"
14108
14732
  ],
14109
14733
  recommendedHeaderLookIds: [
@@ -14268,7 +14892,7 @@ var init_expandPalette = __esm({
14268
14892
  });
14269
14893
 
14270
14894
  // ../theme-core/src/site-styles/rawStyleFields.ts
14271
- var themeV2RuntimeStyleFieldNames, themeV2BlockSpecificRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNameSet;
14895
+ var themeV2RuntimeStyleFieldNames, themeV2BlockSpecificRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNames, themeV2NormalEditorRawStyleFieldNameSet, themeV2CompilerOwnedFieldNames;
14272
14896
  var init_rawStyleFields = __esm({
14273
14897
  "../theme-core/src/site-styles/rawStyleFields.ts"() {
14274
14898
  "use strict";
@@ -14283,6 +14907,7 @@ var init_rawStyleFields = __esm({
14283
14907
  ];
14284
14908
  themeV2BlockSpecificRawStyleFieldNames = [
14285
14909
  "_contentCardStyles",
14910
+ "_heroLayoutStyles",
14286
14911
  "_textCardStyles"
14287
14912
  ];
14288
14913
  themeV2NormalEditorRawStyleFieldNames = [
@@ -14292,6 +14917,10 @@ var init_rawStyleFields = __esm({
14292
14917
  themeV2NormalEditorRawStyleFieldNameSet = new Set(
14293
14918
  themeV2NormalEditorRawStyleFieldNames
14294
14919
  );
14920
+ themeV2CompilerOwnedFieldNames = [
14921
+ ...themeV2RuntimeStyleFieldNames,
14922
+ ...themeV2BlockSpecificRawStyleFieldNames
14923
+ ];
14295
14924
  }
14296
14925
  });
14297
14926
 
@@ -14305,7 +14934,7 @@ function uniqueNonEmpty(values) {
14305
14934
  }
14306
14935
  return [firstValue, ...uniqueValues.slice(1)];
14307
14936
  }
14308
- var themeV2DesignStateSchemaVersion, designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, heroLegibilityStrategySchema, sectionHeightIntentSchema, imageSurfaceTreatmentIntensitySchema, imageSurfaceMotionSchema, imageSurfaceTreatmentSchema, testimonialCardTreatmentSchema, tileTreatmentSchema, eyebrowTreatmentSchema, userPanelTreatments, userFlushTreatments, userFlushBleeds, contentFrameIntentSchema, blockDesignPlanSchema, styleAuthoritySchema, blockRuntimeStyleAuthoritySchema, persistedPageDesignStateV1Schema;
14937
+ 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
14938
  var init_designState = __esm({
14310
14939
  "../theme-core/src/site-styles/designState.ts"() {
14311
14940
  "use strict";
@@ -14326,6 +14955,16 @@ var init_designState = __esm({
14326
14955
  "scrim-gradient",
14327
14956
  "solid-panel"
14328
14957
  ]);
14958
+ heroCompositionIntentSchema = z26.enum([
14959
+ "center",
14960
+ "bottom-left"
14961
+ ]);
14962
+ heroTypographyScaleIntentSchema = z26.enum([
14963
+ "quiet",
14964
+ "editorial",
14965
+ "display",
14966
+ "poster"
14967
+ ]);
14329
14968
  sectionHeightIntentSchema = z26.enum([
14330
14969
  "default",
14331
14970
  "banner",
@@ -14361,6 +15000,7 @@ var init_designState = __esm({
14361
15000
  ]);
14362
15001
  testimonialCardTreatmentSchema = z26.enum(["default", "accent-quote"]);
14363
15002
  tileTreatmentSchema = z26.enum(tileTreatmentValues);
15003
+ eventListTreatmentSchema = z26.enum(eventListTreatmentValues);
14364
15004
  eyebrowTreatmentSchema = z26.enum(eyebrowTreatmentValues);
14365
15005
  userPanelTreatments = uniqueNonEmpty(
14366
15006
  userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
@@ -14394,10 +15034,13 @@ var init_designState = __esm({
14394
15034
  emphasis: z26.enum(userDesignOptionCatalog.emphases),
14395
15035
  sectionHeight: sectionHeightIntentSchema.optional(),
14396
15036
  heroLegibility: heroLegibilityStrategySchema.optional(),
15037
+ heroComposition: heroCompositionIntentSchema.optional(),
15038
+ heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
14397
15039
  imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
14398
15040
  imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
14399
15041
  testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
14400
15042
  tileTreatment: tileTreatmentSchema.optional(),
15043
+ eventListTreatment: eventListTreatmentSchema.optional(),
14401
15044
  eyebrowTreatment: eyebrowTreatmentSchema.optional()
14402
15045
  }).strict();
14403
15046
  styleAuthoritySchema = z26.discriminatedUnion("kind", [
@@ -16057,6 +16700,7 @@ function styledSection(config) {
16057
16700
  renderBackgroundImage = true,
16058
16701
  backgroundImageLoading,
16059
16702
  backgroundImageFetchPriority,
16703
+ allowOverflow = false,
16060
16704
  fullWidthPath
16061
16705
  } = config;
16062
16706
  const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
@@ -16091,7 +16735,7 @@ function styledSection(config) {
16091
16735
  // No fallback needed - transform handles all cases via defaultSpacing
16092
16736
  }
16093
16737
  },
16094
- allowOverflow: {
16738
+ allowOverflow: allowOverflow ? true : {
16095
16739
  $bind: {
16096
16740
  from: `${bindFrom}.background`,
16097
16741
  transforms: [{ id: "background.resolveAllowOverflow" }],
@@ -16679,7 +17323,10 @@ function hasFixedFrameBackgroundMotion(value) {
16679
17323
  function isTileTreatment(value) {
16680
17324
  return typeof value === "string" && tileTreatmentSet.has(value);
16681
17325
  }
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;
17326
+ function isEventListTreatment(value) {
17327
+ return typeof value === "string" && eventListTreatmentSet.has(value);
17328
+ }
17329
+ 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
17330
  var init_boxStyles2 = __esm({
16684
17331
  "../blocks/src/system/transforms/registry/boxStyles.ts"() {
16685
17332
  "use strict";
@@ -16854,6 +17501,11 @@ var init_boxStyles2 = __esm({
16854
17501
  "brand-depth": "rb-tile-treatment-brand-depth"
16855
17502
  };
16856
17503
  tileTreatmentSet = new Set(tileTreatmentValues);
17504
+ eventListTreatmentClassMap = {
17505
+ plain: "",
17506
+ "lined-panel": "rb-event-list-treatment-lined-panel"
17507
+ };
17508
+ eventListTreatmentSet = new Set(eventListTreatmentValues);
16857
17509
  sectionClassNameTransform = {
16858
17510
  id: "sectionStyles.resolveClassName",
16859
17511
  kind: "string",
@@ -16921,6 +17573,17 @@ var init_boxStyles2 = __esm({
16921
17573
  `[sectionStyles] Invalid tileTreatment value in _sectionStyles: "${tileTreatment}". Expected one of: ${tileTreatmentValues.join(", ")}.`
16922
17574
  );
16923
17575
  }
17576
+ const eventListTreatment = input?.eventListTreatment;
17577
+ if (isEventListTreatment(eventListTreatment)) {
17578
+ const eventListTreatmentClass = eventListTreatmentClassMap[eventListTreatment];
17579
+ if (eventListTreatmentClass) {
17580
+ classes.push(eventListTreatmentClass);
17581
+ }
17582
+ } else if (typeof eventListTreatment === "string" && process.env.NODE_ENV !== "production") {
17583
+ console.warn(
17584
+ `[sectionStyles] Invalid eventListTreatment value in _sectionStyles: "${eventListTreatment}". Expected one of: ${eventListTreatmentValues.join(", ")}.`
17585
+ );
17586
+ }
16924
17587
  if (hasFixedFrameBackgroundMotion(input)) {
16925
17588
  classes.push(fixedFrameScopeClass);
16926
17589
  }
@@ -17403,6 +18066,42 @@ var init_sectionState = __esm({
17403
18066
  }
17404
18067
  });
17405
18068
 
18069
+ // ../blocks/src/system/node/fragments/headingDecoration.ts
18070
+ function headingDecoration({
18071
+ bindFrom = defaultBindFrom,
18072
+ family,
18073
+ placement,
18074
+ className
18075
+ }) {
18076
+ return el(
18077
+ "div",
18078
+ {
18079
+ "aria-hidden": "true",
18080
+ className: {
18081
+ $bind: {
18082
+ from: bindFrom,
18083
+ transforms: [
18084
+ {
18085
+ id: "ui.headingDecorationClassName",
18086
+ options: { baseClass: className, family }
18087
+ }
18088
+ ]
18089
+ }
18090
+ }
18091
+ },
18092
+ null,
18093
+ when(`${bindFrom}.placement`, { equals: placement })
18094
+ );
18095
+ }
18096
+ var defaultBindFrom;
18097
+ var init_headingDecoration = __esm({
18098
+ "../blocks/src/system/node/fragments/headingDecoration.ts"() {
18099
+ "use strict";
18100
+ init_builder();
18101
+ defaultBindFrom = "_sectionStyles.headingDecoration";
18102
+ }
18103
+ });
18104
+
17406
18105
  // ../blocks/src/system/node/fragments/index.ts
17407
18106
  var init_fragments = __esm({
17408
18107
  "../blocks/src/system/node/fragments/index.ts"() {
@@ -17425,6 +18124,7 @@ var init_fragments = __esm({
17425
18124
  init_sectionState();
17426
18125
  init_classNameBinding();
17427
18126
  init_eyebrow();
18127
+ init_headingDecoration();
17428
18128
  }
17429
18129
  });
17430
18130
 
@@ -18254,6 +18954,7 @@ var init_testimonialsHeading = __esm({
18254
18954
  "use strict";
18255
18955
  init_types13();
18256
18956
  init_builder();
18957
+ init_headingDecoration();
18257
18958
  init_colorStyles();
18258
18959
  testimonialsHeadingFragment = defineFragment({
18259
18960
  id: "testimonialsHeading",
@@ -18284,6 +18985,10 @@ var init_testimonialsHeading = __esm({
18284
18985
  when("content.heading"),
18285
18986
  bind("content.heading")
18286
18987
  ),
18988
+ headingDecoration({
18989
+ family: "short-center-rule",
18990
+ placement: "under-centered-heading"
18991
+ }),
18287
18992
  text(
18288
18993
  {
18289
18994
  as: "p",
@@ -19085,6 +19790,41 @@ var init_faqHeading = __esm({
19085
19790
  });
19086
19791
 
19087
19792
  // ../blocks/src/system/fragments/library/faqAccordion.ts
19793
+ function createFaqAccordionLayout(options = {}) {
19794
+ return accordionList({
19795
+ collection: "content.items",
19796
+ itemName: "faqItem",
19797
+ indexName: "faqIndex",
19798
+ accordionProps: {
19799
+ className: options.rootClassName ?? "accordion-root",
19800
+ type: "single",
19801
+ collapsible: true
19802
+ },
19803
+ itemProps: {
19804
+ className: {
19805
+ $bind: {
19806
+ from: "content._cardStyles",
19807
+ transforms: [
19808
+ {
19809
+ id: "boxStyles.all",
19810
+ options: {
19811
+ axis: "all",
19812
+ includeSpacing: false,
19813
+ baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden"
19814
+ }
19815
+ }
19816
+ ]
19817
+ },
19818
+ fallback: "rb-faq-item"
19819
+ },
19820
+ iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
19821
+ // Legacy theme accordion style
19822
+ iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
19823
+ },
19824
+ triggerFrom: "faqItem.question",
19825
+ contentFrom: "faqItem.answer"
19826
+ });
19827
+ }
19088
19828
  var faqAccordionFragment;
19089
19829
  var init_faqAccordion = __esm({
19090
19830
  "../blocks/src/system/fragments/library/faqAccordion.ts"() {
@@ -19124,40 +19864,7 @@ var init_faqAccordion = __esm({
19124
19864
  }
19125
19865
  }
19126
19866
  ],
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
- })
19867
+ layout: createFaqAccordionLayout()
19161
19868
  });
19162
19869
  }
19163
19870
  });
@@ -20573,6 +21280,7 @@ function heroSplitImagePane() {
20573
21280
  function splitLayoutWith(children) {
20574
21281
  return styledSection({
20575
21282
  children: styledContainer({
21283
+ baseClassName: "rb-relative rb-isolate rb-overflow-visible",
20576
21284
  children: {
20577
21285
  type: "grid",
20578
21286
  props: {
@@ -20597,6 +21305,7 @@ function splitLayoutWith(children) {
20597
21305
  // The split variants render the image as a real grid column, so suppress
20598
21306
  // the default absolute background image layer while keeping color/overlay.
20599
21307
  renderBackgroundImage: false,
21308
+ allowOverflow: true,
20600
21309
  baseClass: ""
20601
21310
  });
20602
21311
  }
@@ -20797,6 +21506,21 @@ function introHeading(className) {
20797
21506
  bind("content.title")
20798
21507
  );
20799
21508
  }
21509
+ function introHeadingGroup(className) {
21510
+ return stack(
21511
+ {
21512
+ gap: "sm",
21513
+ className: "rb-intro-heading-group"
21514
+ },
21515
+ [
21516
+ introHeading(className),
21517
+ headingDecoration({
21518
+ family: "organic-squiggle",
21519
+ placement: "after-heading"
21520
+ })
21521
+ ]
21522
+ );
21523
+ }
20800
21524
  function introBody(className = "rb-prose rb-max-w-none") {
20801
21525
  return richText({ className }, bind("content.body"));
20802
21526
  }
@@ -20815,6 +21539,10 @@ function introCopyStack(options = {}) {
20815
21539
  },
20816
21540
  [
20817
21541
  introHeading(options.headingClassName ?? "rb-intro-title"),
21542
+ headingDecoration({
21543
+ family: "organic-squiggle",
21544
+ placement: "after-heading"
21545
+ }),
20818
21546
  introBody(options.bodyClassName),
20819
21547
  introCtas(options.ctaJustify)
20820
21548
  ]
@@ -20864,7 +21592,7 @@ var init_intro = __esm({
20864
21592
  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
21593
  },
20866
21594
  [
20867
- introHeading("rb-intro-title rb-max-w-xl"),
21595
+ introHeadingGroup("rb-intro-title rb-max-w-xl"),
20868
21596
  stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
20869
21597
  introBody(),
20870
21598
  introCtas("start")
@@ -20885,7 +21613,7 @@ var init_intro = __esm({
20885
21613
  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
21614
  },
20887
21615
  [
20888
- introHeading("rb-intro-title rb-max-w-xl"),
21616
+ introHeadingGroup("rb-intro-title rb-max-w-xl"),
20889
21617
  stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
20890
21618
  introBody(),
20891
21619
  introCtas("start")
@@ -21966,7 +22694,7 @@ function fragmentLayoutNode(layout) {
21966
22694
  function isNodeDefinitionArray(layout) {
21967
22695
  return Array.isArray(layout);
21968
22696
  }
21969
- var faqComposition, headingLayout, accordionLayout, defaultLayout, twoColumnLayout, faqManifest, faqBlockDefinition;
22697
+ var faqComposition, headingLayout, accordionLayout, questionColumnsAccordionLayout, defaultLayout, twoColumnLayout, questionColumnsLayout, faqManifest, faqBlockDefinition;
21970
22698
  var init_faq = __esm({
21971
22699
  "../blocks/src/system/blocks/faq.ts"() {
21972
22700
  "use strict";
@@ -21974,6 +22702,7 @@ var init_faq = __esm({
21974
22702
  init_styledSection();
21975
22703
  init_defineBlock();
21976
22704
  init_fragments2();
22705
+ init_faqAccordion();
21977
22706
  init_builder();
21978
22707
  init_boxStyles();
21979
22708
  faqComposition = composeFragments([
@@ -21982,6 +22711,9 @@ var init_faq = __esm({
21982
22711
  ]);
21983
22712
  headingLayout = fragmentLayoutNode(faqHeadingFragment.layout);
21984
22713
  accordionLayout = fragmentLayoutNode(faqAccordionFragment.layout);
22714
+ questionColumnsAccordionLayout = createFaqAccordionLayout({
22715
+ rootClassName: "accordion-root rb-faq-question-columns rb-grid rb-grid-cols-1 rb-gap-4 rb-lg-grid-cols-2"
22716
+ });
21985
22717
  defaultLayout = styledSection({
21986
22718
  children: styledContainer({
21987
22719
  baseClassName: "rb-relative rb-isolate",
@@ -21995,11 +22727,24 @@ var init_faq = __esm({
21995
22727
  children: el(
21996
22728
  "div",
21997
22729
  {
21998
- className: "rb-faq-two-column rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
22730
+ className: "rb-faq-split-heading rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
21999
22731
  },
22000
22732
  [
22001
- el("div", { className: "rb-faq-two-column-heading" }, [headingLayout]),
22002
- el("div", { className: "rb-faq-two-column-accordion" }, [accordionLayout])
22733
+ el("div", { className: "rb-faq-split-heading-copy" }, [headingLayout]),
22734
+ el("div", { className: "rb-faq-split-heading-accordion" }, [accordionLayout])
22735
+ ]
22736
+ )
22737
+ }),
22738
+ baseClass: ""
22739
+ });
22740
+ questionColumnsLayout = styledSection({
22741
+ children: styledContainer({
22742
+ baseClassName: "rb-relative rb-isolate",
22743
+ children: stack(
22744
+ { gap: "xl", className: "rb-w-full" },
22745
+ [
22746
+ headingLayout,
22747
+ questionColumnsAccordionLayout
22003
22748
  ]
22004
22749
  )
22005
22750
  }),
@@ -22024,7 +22769,8 @@ var init_faq = __esm({
22024
22769
  layout: defaultLayout,
22025
22770
  variants: {
22026
22771
  default: defaultLayout,
22027
- "two-column": twoColumnLayout
22772
+ "two-column": twoColumnLayout,
22773
+ "question-columns": questionColumnsLayout
22028
22774
  },
22029
22775
  defaultVariant: "default",
22030
22776
  variantOptions: {
@@ -22035,6 +22781,10 @@ var init_faq = __esm({
22035
22781
  "two-column": {
22036
22782
  label: "Two column",
22037
22783
  description: "A left heading column with FAQ items on the right."
22784
+ },
22785
+ "question-columns": {
22786
+ label: "Question columns",
22787
+ description: "A full-width heading above FAQ items split into two columns."
22038
22788
  }
22039
22789
  },
22040
22790
  description: "Accordion of frequently asked questions and answers.",
@@ -22156,6 +22906,15 @@ import { z as z36 } from "zod";
22156
22906
  function isEyebrowTreatment(value) {
22157
22907
  return typeof value === "string" && eyebrowTreatmentSet.has(value);
22158
22908
  }
22909
+ function isHeadingDecorationFamily(value) {
22910
+ return typeof value === "string" && headingDecorationFamilySet.has(value);
22911
+ }
22912
+ function isHeadingDecorationPlacement(value) {
22913
+ return typeof value === "string" && headingDecorationPlacementSet.has(value);
22914
+ }
22915
+ function isHeadingDecorationColorToken(value) {
22916
+ return typeof value === "string" && headingDecorationColorTokenSet.has(value);
22917
+ }
22159
22918
  function resolveBorderColorValue(border2) {
22160
22919
  if (border2.enabled === false) return void 0;
22161
22920
  const rawColorToken = typeof border2.colorToken === "string" ? border2.colorToken.trim() : "";
@@ -22194,6 +22953,14 @@ function readString(obj, key) {
22194
22953
  const v = obj[key];
22195
22954
  return typeof v === "string" ? v : void 0;
22196
22955
  }
22956
+ function resolveGeneratedHeroLayoutStyles(content) {
22957
+ const raw = content._heroLayoutStyles;
22958
+ return isPlainObject(raw) ? raw : null;
22959
+ }
22960
+ function readHeroLayoutString(content, generatedKey, fallbackKey = generatedKey) {
22961
+ const generated = resolveGeneratedHeroLayoutStyles(content);
22962
+ return generated && typeof generated[generatedKey] === "string" ? generated[generatedKey] : readString(content, fallbackKey);
22963
+ }
22197
22964
  function resolveHeroVariant(content) {
22198
22965
  const variant = readString(content, "variant");
22199
22966
  if (variant && variant.trim()) return variant.trim();
@@ -22202,14 +22969,14 @@ function resolveHeroVariant(content) {
22202
22969
  return null;
22203
22970
  }
22204
22971
  function resolveHeroContentAlignment(content) {
22205
- const raw = readString(content, "contentAlignment");
22972
+ const raw = readHeroLayoutString(content, "contentAlignment");
22206
22973
  if (raw === "left" || raw === "center" || raw === "right") return raw;
22207
22974
  const variant = resolveHeroVariant(content);
22208
22975
  if (variant === "split" || variant === "splitReverse") return "left";
22209
22976
  return "center";
22210
22977
  }
22211
22978
  function resolveHeroVerticalAlignment(content) {
22212
- const raw = readString(content, "verticalAlignment");
22979
+ const raw = readHeroLayoutString(content, "verticalAlignment");
22213
22980
  if (raw === "top" || raw === "center" || raw === "bottom") return raw;
22214
22981
  const sectionStyles = asPartialObject(content._sectionStyles);
22215
22982
  const minHeight = sectionStyles?.minHeight;
@@ -22219,12 +22986,30 @@ function resolveHeroVerticalAlignment(content) {
22219
22986
  return "top";
22220
22987
  }
22221
22988
  function resolveHeroContentMaxWidth(content) {
22222
- const raw = readString(content, "contentMaxWidth");
22989
+ const raw = readHeroLayoutString(content, "contentMaxWidth");
22223
22990
  if (raw === "default" || raw === "narrow" || raw === "medium" || raw === "wide")
22224
22991
  return raw;
22225
22992
  return "default";
22226
22993
  }
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;
22994
+ function resolveHeroTypographyScale(content) {
22995
+ const raw = readHeroLayoutString(
22996
+ content,
22997
+ "typographyScale",
22998
+ "heroTypographyScale"
22999
+ );
23000
+ if (raw === "quiet" || raw === "editorial" || raw === "display" || raw === "poster") {
23001
+ return raw;
23002
+ }
23003
+ return null;
23004
+ }
23005
+ function resolveHeroTitleLength(content) {
23006
+ const headline = readString(content, "headline")?.trim() ?? "";
23007
+ const wordCount = headline.length === 0 ? 0 : headline.split(/\s+/).length;
23008
+ if (headline.length > heroTitleLengthThresholds.long.maxCharacters || wordCount > heroTitleLengthThresholds.long.maxWords) return "long";
23009
+ if (headline.length > heroTitleLengthThresholds.medium.maxCharacters || wordCount > heroTitleLengthThresholds.medium.maxWords) return "medium";
23010
+ return "short";
23011
+ }
23012
+ 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
23013
  var init_ui = __esm({
22229
23014
  "../blocks/src/system/transforms/registry/ui.ts"() {
22230
23015
  "use strict";
@@ -22244,6 +23029,9 @@ var init_ui = __esm({
22244
23029
  "accent-pill-bounce": "rb-eyebrow-treatment-pill rb-eyebrow-treatment-accent rb-eyebrow-treatment-pill-bounce"
22245
23030
  };
22246
23031
  eyebrowTreatmentSet = new Set(eyebrowTreatmentValues);
23032
+ headingDecorationFamilySet = new Set(visibleHeadingDecorationFamilyValues);
23033
+ headingDecorationPlacementSet = new Set(visibleHeadingDecorationPlacementValues);
23034
+ headingDecorationColorTokenSet = new Set(headingDecorationColorTokenValues);
22247
23035
  imageGalleryCornerClassMap = {
22248
23036
  none: "",
22249
23037
  sm: "rb-rounded-sm",
@@ -22316,6 +23104,10 @@ var init_ui = __esm({
22316
23104
  summary: "Map semantic section-state kind to feedback tone",
22317
23105
  run: (value) => sectionStateToneFromUnknown(value)
22318
23106
  };
23107
+ heroTitleLengthThresholds = {
23108
+ medium: { maxCharacters: 42, maxWords: 6 },
23109
+ long: { maxCharacters: 78, maxWords: 11 }
23110
+ };
22319
23111
  heroContentWrapperClassSchema = z36.object({
22320
23112
  base: z36.string().optional()
22321
23113
  });
@@ -22328,6 +23120,8 @@ var init_ui = __esm({
22328
23120
  const content = isPlainObject(value) ? value : isPlainObject(context.data) ? context.data : {};
22329
23121
  const alignment = resolveHeroContentAlignment(content);
22330
23122
  const maxWidth = resolveHeroContentMaxWidth(content);
23123
+ const typographyScale = resolveHeroTypographyScale(content);
23124
+ const titleLength = resolveHeroTitleLength(content);
22331
23125
  const textAlignClass = alignment === "center" ? "rb-text-center" : alignment === "right" ? "rb-text-right" : "rb-text-left";
22332
23126
  const maxWidthClass = maxWidth === "narrow" ? "rb-max-w-2xl" : maxWidth === "medium" ? "rb-max-w-3xl" : maxWidth === "wide" ? "rb-max-w-5xl" : "";
22333
23127
  const positionClass = alignment === "center" ? "rb-mx-auto" : alignment === "right" ? "rb-ml-auto" : "";
@@ -22335,7 +23129,9 @@ var init_ui = __esm({
22335
23129
  options?.base,
22336
23130
  textAlignClass,
22337
23131
  maxWidthClass,
22338
- positionClass
23132
+ positionClass,
23133
+ typographyScale ? `rb-hero-typography-${typographyScale}` : "",
23134
+ `rb-hero-title-${titleLength}`
22339
23135
  ]);
22340
23136
  }
22341
23137
  };
@@ -22635,11 +23431,72 @@ var init_ui = __esm({
22635
23431
  const treatment = isEyebrowTreatment(value) ? value : "plain";
22636
23432
  return joinClasses3([baseClass, eyebrowTreatmentClassMap[treatment]]);
22637
23433
  }
23434
+ },
23435
+ {
23436
+ id: "ui.headingDecorationClassName",
23437
+ kind: "string",
23438
+ summary: "Apply constrained Theme V2 heading decoration classes",
23439
+ run: (value, options) => {
23440
+ const baseClass = typeof options?.baseClass === "string" && options.baseClass.trim() ? options.baseClass : "rb-heading-decoration";
23441
+ const decoration = asPartialObject(value);
23442
+ const family = isHeadingDecorationFamily(decoration?.family) ? decoration.family : null;
23443
+ const allowedFamily = isHeadingDecorationFamily(options?.family) ? options.family : null;
23444
+ const placement = isHeadingDecorationPlacement(decoration?.placement) ? decoration.placement : null;
23445
+ const colorToken = isHeadingDecorationColorToken(decoration?.colorToken) ? decoration.colorToken : "primary";
23446
+ if (!family || !placement) return "rb-hidden";
23447
+ if (allowedFamily && family !== allowedFamily) return "rb-hidden";
23448
+ return joinClasses3([
23449
+ baseClass,
23450
+ `rb-heading-decoration-${family}`,
23451
+ `rb-heading-decoration-placement-${placement}`,
23452
+ `rb-heading-decoration-color-${colorToken}`
23453
+ ]);
23454
+ }
22638
23455
  }
22639
23456
  ];
22640
23457
  }
22641
23458
  });
22642
23459
 
23460
+ // ../theme-core/src/siteChromePlacement.ts
23461
+ function parseHeaderPositioning(value) {
23462
+ return isHeaderPositioning(value) ? value : "static";
23463
+ }
23464
+ function isHeaderPositioning(value) {
23465
+ return typeof value === "string" && HEADER_POSITIONINGS.includes(value);
23466
+ }
23467
+ function planSiteChromePlacement(positioning) {
23468
+ switch (positioning) {
23469
+ case "static":
23470
+ return {
23471
+ kind: "static",
23472
+ headerRootClassName: null,
23473
+ standaloneShellClassName: null
23474
+ };
23475
+ case "sticky":
23476
+ return {
23477
+ kind: "sticky",
23478
+ headerRootClassName: "rb-sticky rb-top-0",
23479
+ standaloneShellClassName: "sticky top-0 z-40 w-full"
23480
+ };
23481
+ case "fixed":
23482
+ return {
23483
+ kind: "fixed",
23484
+ headerRootClassName: "rb-fixed rb-top-0 rb-left-0 rb-right-0",
23485
+ standaloneShellClassName: "fixed left-0 right-0 top-0 z-40 w-full"
23486
+ };
23487
+ default:
23488
+ return assertNever(positioning);
23489
+ }
23490
+ }
23491
+ var HEADER_POSITIONINGS;
23492
+ var init_siteChromePlacement = __esm({
23493
+ "../theme-core/src/siteChromePlacement.ts"() {
23494
+ "use strict";
23495
+ init_types2();
23496
+ HEADER_POSITIONINGS = ["static", "sticky", "fixed"];
23497
+ }
23498
+ });
23499
+
22643
23500
  // ../blocks/src/system/transforms/registry/layout.ts
22644
23501
  import { z as z37 } from "zod";
22645
23502
  function resolveBackgroundVisualStyles(backgroundColor, tokens, defaultToken = "surface") {
@@ -22734,6 +23591,7 @@ var init_layout = __esm({
22734
23591
  init_colorConversion();
22735
23592
  init_core3();
22736
23593
  init_colorStyles();
23594
+ init_siteChromePlacement();
22737
23595
  joinClasses4 = (parts) => parts.filter(
22738
23596
  (part) => typeof part === "string" && part.trim().length > 0
22739
23597
  ).join(" ").replace(/\s+/g, " ").trim();
@@ -22782,7 +23640,8 @@ var init_layout = __esm({
22782
23640
  ...options
22783
23641
  };
22784
23642
  const content = asPartialObject(value) ?? {};
22785
- const positioning = typeof content.positioning === "string" ? content.positioning : "static";
23643
+ const positioning = parseHeaderPositioning(content.positioning);
23644
+ const placement = planSiteChromePlacement(positioning);
22786
23645
  const shrinkOnScroll = Boolean(content.shrinkOnScroll);
22787
23646
  const header = asPartialObject(value);
22788
23647
  const visuals = resolveHeaderVisualStyles(header, context.theme);
@@ -22794,14 +23653,14 @@ var init_layout = __esm({
22794
23653
  if (config.blur) classes.push(config.blur);
22795
23654
  if (config.blurSupport) classes.push(config.blurSupport);
22796
23655
  }
22797
- if (positioning === "sticky") {
23656
+ if (placement.kind === "sticky") {
22798
23657
  classes.push(
22799
23658
  visuals.isTransparent ? config.stickyTransparent : config.sticky
22800
23659
  );
22801
- } else if (positioning === "fixed") {
23660
+ } else if (placement.kind === "fixed") {
22802
23661
  classes.push(config.fixed);
22803
23662
  }
22804
- if (shrinkOnScroll && (positioning === "sticky" || positioning === "fixed")) {
23663
+ if (shrinkOnScroll && placement.kind !== "static") {
22805
23664
  classes.push(config.shrink);
22806
23665
  }
22807
23666
  const VALID_VARIANTS = [
@@ -23351,10 +24210,21 @@ var init_responsiveDisplay = __esm({
23351
24210
  var init_shared2 = __esm({
23352
24211
  "../blocks/src/system/runtime/header/shared.ts"() {
23353
24212
  "use strict";
24213
+ init_siteChromePlacement();
23354
24214
  init_responsiveDisplay();
23355
24215
  }
23356
24216
  });
23357
24217
 
24218
+ // ../theme-core/src/siteChromeOverlayClearance.ts
24219
+ var SITE_CHROME_VISIBLE_HEADER_ATTR, SITE_CHROME_VISIBLE_HEADER_SELECTOR;
24220
+ var init_siteChromeOverlayClearance = __esm({
24221
+ "../theme-core/src/siteChromeOverlayClearance.ts"() {
24222
+ "use strict";
24223
+ SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
24224
+ SITE_CHROME_VISIBLE_HEADER_SELECTOR = `[${SITE_CHROME_VISIBLE_HEADER_ATTR}="true"]`;
24225
+ }
24226
+ });
24227
+
23358
24228
  // ../blocks/src/system/blocks/site-header.ts
23359
24229
  var logoRow, centeredLogoRow, createNavRow, headerCta, mobileCta, mobileToggleIcon, mobileToggleButton, mobileOverlayToggleButton, mobileNavList, mobileOverlayHeader, mobileOverlayBody, mobileOverlay, mobileHeaderBar, classicLayout2, centeredLayout, transparentLayout, floatingLayout, headerLayout, siteHeaderManifest, siteHeaderBlockDefinition;
23360
24230
  var init_site_header = __esm({
@@ -23366,6 +24236,7 @@ var init_site_header = __esm({
23366
24236
  init_defineBlock();
23367
24237
  init_shared2();
23368
24238
  init_colorStyles();
24239
+ init_siteChromeOverlayClearance();
23369
24240
  logoRow = link(
23370
24241
  {
23371
24242
  href: "/",
@@ -23637,6 +24508,7 @@ var init_site_header = __esm({
23637
24508
  );
23638
24509
  floatingLayout = inline(
23639
24510
  {
24511
+ [SITE_CHROME_VISIBLE_HEADER_ATTR]: "true",
23640
24512
  className: bindProp("$root.theme.header.maxWidth", {
23641
24513
  transforms: pipe(
23642
24514
  tx("layout.maxWidthClass", {
@@ -24659,6 +25531,10 @@ var init_feature_cards = __esm({
24659
25531
  when("content.title"),
24660
25532
  bind("content.title")
24661
25533
  ),
25534
+ headingDecoration({
25535
+ family: "short-center-rule",
25536
+ placement: "under-centered-heading"
25537
+ }),
24662
25538
  richText(
24663
25539
  {
24664
25540
  className: "rb-feature-cards-description rb-prose rb-mx-auto rb-max-w-none",
@@ -27309,7 +28185,7 @@ var init_event_spotlight = __esm({
27309
28185
  // ../blocks/src/system/runtime/nodes/events/shared/utils.ts
27310
28186
  function getContainerClass(layout, columns) {
27311
28187
  if (layout === "compact") {
27312
- return "event-listing-compact-container rb-flex rb-flex-col rb-gap-2";
28188
+ return "event-listing-compact-container rb-flex rb-flex-col";
27313
28189
  }
27314
28190
  if (layout === "stack") {
27315
28191
  return "rb-flex rb-flex-col rb-gap-6";
@@ -30336,6 +31212,7 @@ var init_shop_commerce_shared = __esm({
30336
31212
  storedProductCartItemSchema = z56.object({
30337
31213
  kind: z56.literal("product"),
30338
31214
  productId: z56.string().min(1),
31215
+ productCategoryId: z56.string().min(1).optional().nullable(),
30339
31216
  variantId: z56.string().min(1).optional().nullable(),
30340
31217
  title: z56.string().min(1),
30341
31218
  variantTitle: z56.string().optional().nullable(),
@@ -32934,6 +33811,14 @@ function scheduleDetailsCapable() {
32934
33811
  tileTreatments: scheduleTileTreatments
32935
33812
  });
32936
33813
  }
33814
+ function eventListCapable() {
33815
+ return declareBlockDesignCapability({
33816
+ sectionSurfaces: "supported",
33817
+ contentFrames: ["plain"],
33818
+ itemSurfaces: "unsupported",
33819
+ eventListTreatments
33820
+ });
33821
+ }
32937
33822
  function defaultBoundaryBias(visualWeight) {
32938
33823
  return visualWeight === "featured" || visualWeight === "immersive" ? "clear" : "soft";
32939
33824
  }
@@ -32972,7 +33857,7 @@ function ensureSystemBlockDefinitionsRegistered() {
32972
33857
  registerBlockDefinition(definition);
32973
33858
  }
32974
33859
  }
32975
- var heroSectionHeights, heroImageSurfaceTreatments, heroImageSurfaceMotions, standardEyebrowTreatments, animatedEyebrowTreatments, allSectionSurfaces, heroSectionSurfaces, scheduleTileTreatments, heroFlow, bodyFlow, mediaFlow, proofFlow, offeringsFlow, conversionFlow, siteChromeFlow, transactionalFlow, utilityFlow, systemBlockDefinitionsRaw, systemBlockDefinitions, defaultsRegistered;
33860
+ var heroSectionHeights, heroImageSurfaceTreatments, heroImageSurfaceMotions, standardEyebrowTreatments, animatedEyebrowTreatments, allSectionSurfaces, heroSectionSurfaces, scheduleTileTreatments, eventListTreatments, heroFlow, bodyFlow, mediaFlow, proofFlow, offeringsFlow, conversionFlow, siteChromeFlow, transactionalFlow, utilityFlow, systemBlockDefinitionsRaw, systemBlockDefinitions, defaultsRegistered;
32976
33861
  var init_blocks = __esm({
32977
33862
  "../blocks/src/system/blocks/index.ts"() {
32978
33863
  "use strict";
@@ -33099,6 +33984,10 @@ var init_blocks = __esm({
33099
33984
  "quiet",
33100
33985
  "brand-depth"
33101
33986
  ];
33987
+ eventListTreatments = [
33988
+ "plain",
33989
+ "lined-panel"
33990
+ ];
33102
33991
  heroFlow = {
33103
33992
  defaultRole: "hero",
33104
33993
  defaultWeight: "dominant",
@@ -33289,7 +34178,8 @@ var init_blocks = __esm({
33289
34178
  flow: bodyFlow,
33290
34179
  layoutProfiles: [
33291
34180
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
33292
- layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" })
34181
+ layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
34182
+ layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
33293
34183
  ]
33294
34184
  })),
33295
34185
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -33383,11 +34273,11 @@ var init_blocks = __esm({
33383
34273
  flow: offeringsFlow,
33384
34274
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "centered", weight: "featured" })]
33385
34275
  })),
33386
- withDesignCapability("block.event-listing", eventListingBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
34276
+ withDesignCapability("block.event-listing", eventListingBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
33387
34277
  flow: offeringsFlow,
33388
34278
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "stack", weight: "standard" })]
33389
34279
  })),
33390
- withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
34280
+ withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
33391
34281
  flow: offeringsFlow,
33392
34282
  layoutProfiles: [
33393
34283
  layoutProfile({ variantKey: "combined", family: "grid", weight: "standard" }),
@@ -34177,6 +35067,14 @@ var init_runtime2 = __esm({
34177
35067
  }
34178
35068
  });
34179
35069
 
35070
+ // ../theme-core/src/accordions/defaults.ts
35071
+ var init_defaults = __esm({
35072
+ "../theme-core/src/accordions/defaults.ts"() {
35073
+ "use strict";
35074
+ init_curatedSiteStyles();
35075
+ }
35076
+ });
35077
+
34180
35078
  // ../theme-core/src/blockOverrides.ts
34181
35079
  var init_blockOverrides = __esm({
34182
35080
  "../theme-core/src/blockOverrides.ts"() {
@@ -34189,6 +35087,7 @@ import React2 from "react";
34189
35087
  var init_componentFactory = __esm({
34190
35088
  "../blocks/src/system/componentFactory.ts"() {
34191
35089
  "use strict";
35090
+ init_defaults();
34192
35091
  init_blockOverrides();
34193
35092
  }
34194
35093
  });
@@ -34314,13 +35213,6 @@ var init_generateAccordionCss = __esm({
34314
35213
  }
34315
35214
  });
34316
35215
 
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
35216
  // ../theme-core/src/inputs/generateInputCss.ts
34325
35217
  var init_generateInputCss = __esm({
34326
35218
  "../theme-core/src/inputs/generateInputCss.ts"() {
@@ -34350,6 +35242,8 @@ var init_generateNavLinkCSS = __esm({
34350
35242
  "../theme-core/src/navigation/generateNavLinkCSS.ts"() {
34351
35243
  "use strict";
34352
35244
  init_types10();
35245
+ init_expandPalette();
35246
+ init_colorConversion();
34353
35247
  init_generateBaseCSS();
34354
35248
  init_generateEffectsCSS();
34355
35249
  }
@@ -34927,6 +35821,21 @@ var init_form_block = __esm({
34927
35821
  }
34928
35822
  });
34929
35823
 
35824
+ // ../theme-core/src/runtime/themeCssVarNames.ts
35825
+ var THEME_RADIUS_CSS_VARS;
35826
+ var init_themeCssVarNames = __esm({
35827
+ "../theme-core/src/runtime/themeCssVarNames.ts"() {
35828
+ "use strict";
35829
+ THEME_RADIUS_CSS_VARS = {
35830
+ block: "--rb-block-radius",
35831
+ button: "--rb-button-radius",
35832
+ input: "--rb-input-radius",
35833
+ legacyCard: "--radius-card",
35834
+ legacyControl: "--radius-control"
35835
+ };
35836
+ }
35837
+ });
35838
+
34930
35839
  // ../theme-core/src/blocks/vars/customer-portal.ts
34931
35840
  function generateCustomerPortalVars({
34932
35841
  themeId
@@ -34940,6 +35849,11 @@ ${root} {
34940
35849
  --cp-muted: rgb(var(--tb-mutedText));
34941
35850
  --cp-border: rgb(var(--tb-border));
34942
35851
  --cp-shadow: var(--shadow-elev);
35852
+ --cp-primary: rgb(var(--tb-primary));
35853
+ --cp-primary-hover: rgb(var(--tb-primary-700, var(--tb-primary)));
35854
+ --cp-error: rgb(var(--tb-destructive));
35855
+ --cp-card-radius: var(${THEME_RADIUS_CSS_VARS.block}, var(${THEME_RADIUS_CSS_VARS.legacyCard}, 0.75rem));
35856
+ --cp-control-radius: var(${THEME_RADIUS_CSS_VARS.input}, var(${THEME_RADIUS_CSS_VARS.legacyControl}, 0.5rem));
34943
35857
 
34944
35858
  /* Shared tab bar (underline style) */
34945
35859
  --rb-tab-border-width: 1px;
@@ -34990,7 +35904,7 @@ ${root} {
34990
35904
  --rb-modal-bg: var(--cp-card-bg);
34991
35905
  --rb-modal-border: var(--cp-card-border);
34992
35906
  --rb-modal-shadow: var(--shadow-lg, var(--shadow-elev));
34993
- --rb-modal-radius: var(--radius-card);
35907
+ --rb-modal-radius: var(--cp-card-radius);
34994
35908
  --rb-modal-max-width: 560px;
34995
35909
 
34996
35910
  /* Header */
@@ -35005,6 +35919,7 @@ ${root} {
35005
35919
  var init_customer_portal = __esm({
35006
35920
  "../theme-core/src/blocks/vars/customer-portal.ts"() {
35007
35921
  "use strict";
35922
+ init_themeCssVarNames();
35008
35923
  }
35009
35924
  });
35010
35925
 
@@ -35171,6 +36086,7 @@ var init_vars = __esm({
35171
36086
  init_event_cards();
35172
36087
  init_appointment_booking2();
35173
36088
  init_form_block();
36089
+ init_customer_portal();
35174
36090
  init_testimonials2();
35175
36091
  init_course_details2();
35176
36092
  init_course_registration2();
@@ -35297,6 +36213,7 @@ var init_buildThemeRuntime = __esm({
35297
36213
  init_colorStyles();
35298
36214
  init_customCss();
35299
36215
  init_responsiveMode();
36216
+ init_themeCssVarNames();
35300
36217
  }
35301
36218
  });
35302
36219
 
@@ -37556,10 +38473,20 @@ var init_ThemeFontLoader = __esm({
37556
38473
  }
37557
38474
  });
37558
38475
 
38476
+ // ../theme-core/src/fonts/uploadFormat.ts
38477
+ var MAX_FONT_UPLOAD_BYTES;
38478
+ var init_uploadFormat = __esm({
38479
+ "../theme-core/src/fonts/uploadFormat.ts"() {
38480
+ "use strict";
38481
+ MAX_FONT_UPLOAD_BYTES = 5 * 1024 * 1024;
38482
+ }
38483
+ });
38484
+
37559
38485
  // ../theme-core/src/fonts/index.ts
37560
38486
  var init_fonts = __esm({
37561
38487
  "../theme-core/src/fonts/index.ts"() {
37562
38488
  "use strict";
38489
+ init_uploadFormat();
37563
38490
  init_types18();
37564
38491
  }
37565
38492
  });
@@ -37579,6 +38506,7 @@ var init_buildThemeRuntimeFromBridge = __esm({
37579
38506
  init_status();
37580
38507
  init_progress();
37581
38508
  init_blocks2();
38509
+ init_themeCssVarNames();
37582
38510
  themeBridgeConfigSchema = z64.object({
37583
38511
  tokens: z64.record(z64.string(), z64.string()),
37584
38512
  typography: z64.object({
@@ -37610,12 +38538,24 @@ var init_buildThemeRuntimeFromBridge = __esm({
37610
38538
  }
37611
38539
  });
37612
38540
 
38541
+ // ../theme-core/src/siteChromePlanning.ts
38542
+ var init_siteChromePlanning = __esm({
38543
+ "../theme-core/src/siteChromePlanning.ts"() {
38544
+ "use strict";
38545
+ init_siteChromePlacement();
38546
+ init_siteChromeOverlayClearance();
38547
+ }
38548
+ });
38549
+
37613
38550
  // ../theme-core/src/siteChrome.tsx
37614
38551
  import { Fragment as Fragment2, jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
37615
38552
  var init_siteChrome = __esm({
37616
38553
  "../theme-core/src/siteChrome.tsx"() {
37617
38554
  "use strict";
37618
38555
  init_types2();
38556
+ init_siteChromeOverlayClearance();
38557
+ init_siteChromePlanning();
38558
+ init_siteChromeOverlayClearance();
37619
38559
  }
37620
38560
  });
37621
38561
 
@@ -38544,6 +39484,93 @@ var init_bookingRefundOutcomes = __esm({
38544
39484
  });
38545
39485
 
38546
39486
  // ../api/src/bookingVerticals.ts
39487
+ import { z as z67 } from "zod";
39488
+ function parseVerticalId(value) {
39489
+ return typeof value === "string" && VERTICAL_ID_SET.has(value) ? value : null;
39490
+ }
39491
+ function parseVerticalPresetId(value) {
39492
+ return typeof value === "string" && VERTICAL_PRESET_ID_SET.has(value) ? value : null;
39493
+ }
39494
+ function getVerticalPresetDefinition(presetId) {
39495
+ const definition = VERTICAL_BOOKING_PRESETS.find((presetDefinition) => presetDefinition.id === presetId);
39496
+ if (!definition) {
39497
+ throw new Error(`Unhandled vertical preset id: ${presetId}`);
39498
+ }
39499
+ return definition;
39500
+ }
39501
+ function toNonEmptyVerticalPresetIds(presetIds) {
39502
+ const firstPresetId = presetIds[0];
39503
+ return firstPresetId ? [firstPresetId, ...presetIds.slice(1)] : null;
39504
+ }
39505
+ function createConfiguredSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
39506
+ return {
39507
+ verticalId,
39508
+ selectedPresetIds
39509
+ };
39510
+ }
39511
+ function createSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
39512
+ const nonEmptyPresetIds = toNonEmptyVerticalPresetIds(selectedPresetIds);
39513
+ return nonEmptyPresetIds ? createConfiguredSiteVerticalBookingConfig(verticalId, nonEmptyPresetIds) : null;
39514
+ }
39515
+ function resolveSiteVerticalBookingConfig(rawConfig) {
39516
+ if (!rawConfig) {
39517
+ return { kind: "unconfigured", config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG };
39518
+ }
39519
+ const verticalId = parseVerticalId(rawConfig.verticalId);
39520
+ const rawPresetIds = Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : [];
39521
+ const selectedPresetIds = rawPresetIds.map(parseVerticalPresetId).filter((presetId) => Boolean(presetId));
39522
+ const config = {
39523
+ verticalId,
39524
+ selectedPresetIds
39525
+ };
39526
+ if (!verticalId && selectedPresetIds.length === 0) {
39527
+ return { kind: "unconfigured", config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG };
39528
+ }
39529
+ const issues = getSiteVerticalConfigIssues(rawConfig, config);
39530
+ if (issues.length > 0) {
39531
+ return { kind: "invalid", config, issues };
39532
+ }
39533
+ const configuredConfig = verticalId ? createSiteVerticalBookingConfig(verticalId, selectedPresetIds) : null;
39534
+ if (!configuredConfig) {
39535
+ return { kind: "invalid", config, issues: ["empty_selected_presets"] };
39536
+ }
39537
+ return {
39538
+ kind: "configured",
39539
+ config: configuredConfig,
39540
+ selectedPresets: configuredConfig.selectedPresetIds.map(getVerticalPresetDefinition)
39541
+ };
39542
+ }
39543
+ function getSiteVerticalConfigIssues(rawConfig, config) {
39544
+ const issues = /* @__PURE__ */ new Set();
39545
+ if (rawConfig.verticalId != null && !config.verticalId) {
39546
+ issues.add("unknown_vertical");
39547
+ }
39548
+ if (!config.verticalId && config.selectedPresetIds.length > 0) {
39549
+ issues.add("missing_vertical");
39550
+ }
39551
+ const rawPresetIds = Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : [];
39552
+ if (rawPresetIds.some((presetId) => parseVerticalPresetId(presetId) === null)) {
39553
+ issues.add("unknown_preset");
39554
+ }
39555
+ if (config.verticalId && config.selectedPresetIds.length === 0) {
39556
+ issues.add("empty_selected_presets");
39557
+ }
39558
+ const seenBehaviours = /* @__PURE__ */ new Set();
39559
+ for (const presetId of config.selectedPresetIds) {
39560
+ const presetDefinition = getVerticalPresetDefinition(presetId);
39561
+ if (config.verticalId && presetDefinition.verticalId !== config.verticalId) {
39562
+ issues.add("preset_vertical_mismatch");
39563
+ }
39564
+ if (presetDefinition.availability === "future") {
39565
+ issues.add("future_preset_selected");
39566
+ }
39567
+ if (seenBehaviours.has(presetDefinition.canonicalBehaviour)) {
39568
+ issues.add("duplicate_canonical_behaviour");
39569
+ }
39570
+ seenBehaviours.add(presetDefinition.canonicalBehaviour);
39571
+ }
39572
+ return [...issues];
39573
+ }
38547
39574
  function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, description, availability = "onboarding") {
38548
39575
  return {
38549
39576
  id,
@@ -38556,7 +39583,7 @@ function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, descript
38556
39583
  description
38557
39584
  };
38558
39585
  }
38559
- var VERTICAL_IDS, BOOKING_ENGINE_BY_BEHAVIOUR, VERTICAL_BOOKING_PRESETS, VERTICAL_ID_SET, VERTICAL_PRESET_ID_SET;
39586
+ 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
39587
  var init_bookingVerticals = __esm({
38561
39588
  "../api/src/bookingVerticals.ts"() {
38562
39589
  "use strict";
@@ -38638,6 +39665,46 @@ var init_bookingVerticals = __esm({
38638
39665
  VERTICAL_PRESET_ID_SET = new Set(
38639
39666
  VERTICAL_BOOKING_PRESETS.map((presetDefinition) => presetDefinition.id)
38640
39667
  );
39668
+ VerticalIdSchema = z67.string().trim().transform((value, ctx) => {
39669
+ const parsed = parseVerticalId(value);
39670
+ if (!parsed) {
39671
+ ctx.addIssue({
39672
+ code: z67.ZodIssueCode.custom,
39673
+ message: "Unknown booking vertical"
39674
+ });
39675
+ return z67.NEVER;
39676
+ }
39677
+ return parsed;
39678
+ });
39679
+ VerticalPresetIdSchema = z67.string().trim().transform((value, ctx) => {
39680
+ const parsed = parseVerticalPresetId(value);
39681
+ if (!parsed) {
39682
+ ctx.addIssue({
39683
+ code: z67.ZodIssueCode.custom,
39684
+ message: "Unknown booking preset"
39685
+ });
39686
+ return z67.NEVER;
39687
+ }
39688
+ return parsed;
39689
+ });
39690
+ BookingVerticalConfigSchema = z67.object({
39691
+ verticalId: VerticalIdSchema.nullable(),
39692
+ selectedPresetIds: z67.array(VerticalPresetIdSchema).max(20)
39693
+ }).transform((value, ctx) => {
39694
+ const resolved = resolveSiteVerticalBookingConfig(value);
39695
+ if (resolved.kind === "invalid") {
39696
+ ctx.addIssue({
39697
+ code: z67.ZodIssueCode.custom,
39698
+ message: `Invalid booking vertical config: ${resolved.issues.join(", ")}`
39699
+ });
39700
+ return z67.NEVER;
39701
+ }
39702
+ return resolved.config;
39703
+ });
39704
+ DEFAULT_SITE_VERTICAL_BOOKING_CONFIG = {
39705
+ verticalId: null,
39706
+ selectedPresetIds: []
39707
+ };
38641
39708
  }
38642
39709
  });
38643
39710
 
@@ -38661,7 +39728,7 @@ var init_error_propagation = __esm({
38661
39728
  });
38662
39729
 
38663
39730
  // ../api/src/appointmentSetup.ts
38664
- import { z as z67 } from "zod";
39731
+ import { z as z68 } from "zod";
38665
39732
  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
39733
  var init_appointmentSetup = __esm({
38667
39734
  "../api/src/appointmentSetup.ts"() {
@@ -38669,49 +39736,49 @@ var init_appointmentSetup = __esm({
38669
39736
  init_envelope();
38670
39737
  init_error_propagation();
38671
39738
  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) })
39739
+ appointmentSetupRefSchema = z68.discriminatedUnion("kind", [
39740
+ z68.object({ kind: z68.literal("existing"), id: z68.string().min(1) }),
39741
+ z68.object({ kind: z68.literal("new"), draftId: z68.string().min(1) })
38675
39742
  ]);
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()
39743
+ appointmentSetupVenueChoiceSchema = z68.discriminatedUnion("kind", [
39744
+ z68.object({ kind: z68.literal("none") }),
39745
+ z68.object({ kind: z68.literal("existing"), venueId: z68.string().min(1) }),
39746
+ z68.object({
39747
+ kind: z68.literal("create"),
39748
+ draftId: z68.string().min(1),
39749
+ title: z68.string().trim().min(1),
39750
+ description: z68.string().nullable(),
39751
+ timezone: z68.string().trim().min(1).nullable(),
39752
+ addressJson: z68.record(z68.string(), z68.unknown()),
39753
+ locationJson: z68.object({ lat: z68.number(), lng: z68.number() }).nullable()
38687
39754
  })
38688
39755
  ]);
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)
39756
+ appointmentSetupPaymentDraftSchema = z68.object({
39757
+ priceType: z68.union([z68.literal("free"), z68.literal("paid")])
39758
+ });
39759
+ appointmentSetupServiceAssignmentDraftSchema = z68.discriminatedUnion("kind", [
39760
+ z68.object({ kind: z68.literal("all_practitioners") }),
39761
+ z68.object({
39762
+ kind: z68.literal("selected_practitioners"),
39763
+ resourceRefs: z68.array(appointmentSetupRefSchema)
38697
39764
  })
38698
39765
  ]);
38699
- appointmentSetupServiceDraftSchema = z67.object({
39766
+ appointmentSetupServiceDraftSchema = z68.object({
38700
39767
  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")
39768
+ title: z68.string().trim().min(1),
39769
+ description: z68.string().nullable(),
39770
+ durationMinutes: z68.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
39771
+ prepMinutes: z68.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
39772
+ cleanupMinutes: z68.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
39773
+ priceAmount: z68.number().int().nonnegative().nullable(),
39774
+ isActive: z68.boolean(),
39775
+ locationType: z68.union([
39776
+ z68.literal("virtual"),
39777
+ z68.literal("in_person"),
39778
+ z68.literal("hybrid")
38712
39779
  ]),
38713
39780
  venue: appointmentSetupVenueChoiceSchema,
38714
- timezone: z67.string().trim().min(1).nullable(),
39781
+ timezone: z68.string().trim().min(1).nullable(),
38715
39782
  payment: appointmentSetupPaymentDraftSchema,
38716
39783
  assignment: appointmentSetupServiceAssignmentDraftSchema
38717
39784
  }).superRefine((service, ctx) => {
@@ -38730,49 +39797,49 @@ var init_appointmentSetup = __esm({
38730
39797
  });
38731
39798
  }
38732
39799
  });
38733
- appointmentSetupPractitionerDraftSchema = z67.object({
39800
+ appointmentSetupPractitionerDraftSchema = z68.object({
38734
39801
  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)
39802
+ displayName: z68.string().trim().min(1),
39803
+ bio: z68.string().nullable(),
39804
+ timezone: z68.string().trim().min(1),
39805
+ colorHex: z68.string().nullable()
39806
+ });
39807
+ appointmentSetupWeeklyWindowDraftSchema = z68.object({
39808
+ weekday: z68.number().int().min(0).max(6),
39809
+ startTime: z68.string(),
39810
+ endTime: z68.string()
39811
+ });
39812
+ appointmentSetupStartTimePolicyDraftSchema = z68.discriminatedUnion("kind", [
39813
+ z68.object({ kind: z68.literal("automatic_spacing") }),
39814
+ z68.object({
39815
+ kind: z68.literal("regular_interval"),
39816
+ intervalMinutes: z68.union([
39817
+ z68.literal(10),
39818
+ z68.literal(15),
39819
+ z68.literal(20),
39820
+ z68.literal(30),
39821
+ z68.literal(45),
39822
+ z68.literal(60)
38756
39823
  ])
38757
39824
  })
38758
39825
  ]);
38759
- appointmentSetupAvailabilityDraftSchema = z67.object({
38760
- kind: z67.literal("weekly_windows"),
39826
+ appointmentSetupAvailabilityDraftSchema = z68.object({
39827
+ kind: z68.literal("weekly_windows"),
38761
39828
  resourceRef: appointmentSetupRefSchema,
38762
39829
  serviceRef: appointmentSetupRefSchema.nullable(),
38763
- windows: z67.array(appointmentSetupWeeklyWindowDraftSchema),
39830
+ windows: z68.array(appointmentSetupWeeklyWindowDraftSchema),
38764
39831
  startTimePolicy: appointmentSetupStartTimePolicyDraftSchema.optional()
38765
39832
  });
38766
39833
  APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
38767
39834
  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),
39835
+ appointmentSetupBookingNoticeSchema = z68.object({
39836
+ minLeadMinutes: z68.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
39837
+ maxBookingNoticeMinutes: z68.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
39838
+ });
39839
+ applyAppointmentSetupRequestSchema = z68.object({
39840
+ services: z68.array(appointmentSetupServiceDraftSchema),
39841
+ practitioners: z68.array(appointmentSetupPractitionerDraftSchema),
39842
+ availability: z68.array(appointmentSetupAvailabilityDraftSchema),
38776
39843
  bookingNotice: appointmentSetupBookingNoticeSchema
38777
39844
  });
38778
39845
  }
@@ -38822,6 +39889,24 @@ var init_siteAnalytics = __esm({
38822
39889
  }
38823
39890
  });
38824
39891
 
39892
+ // ../api/src/siteMembers.ts
39893
+ var init_siteMembers = __esm({
39894
+ "../api/src/siteMembers.ts"() {
39895
+ "use strict";
39896
+ init_envelope();
39897
+ init_error_propagation();
39898
+ }
39899
+ });
39900
+
39901
+ // ../api/src/staffAccess.ts
39902
+ var init_staffAccess = __esm({
39903
+ "../api/src/staffAccess.ts"() {
39904
+ "use strict";
39905
+ init_accessAdmin();
39906
+ init_siteMembers();
39907
+ }
39908
+ });
39909
+
38825
39910
  // ../api/src/common/cancellation.ts
38826
39911
  var STAFF_CANCELLATION_CONTEXT_UI_CATEGORIES, STAFF_CANCELLATION_CONTEXT_CATEGORIES;
38827
39912
  var init_cancellation = __esm({
@@ -38850,20 +39935,12 @@ var init_siteOperations = __esm({
38850
39935
  }
38851
39936
  });
38852
39937
 
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
39938
  // ../api/src/types.ts
38863
39939
  var init_types19 = __esm({
38864
39940
  "../api/src/types.ts"() {
38865
39941
  "use strict";
38866
39942
  init_accessAdmin();
39943
+ init_staffAccess();
38867
39944
  init_siteOperations();
38868
39945
  init_siteMembers();
38869
39946
  }
@@ -38877,7 +39954,7 @@ var init_eventAttendanceLabels = __esm({
38877
39954
  });
38878
39955
 
38879
39956
  // ../api/src/siteBanner.ts
38880
- import { z as z68 } from "zod";
39957
+ import { z as z69 } from "zod";
38881
39958
  function analyzeSiteBannerBody(body) {
38882
39959
  const sanitizedBody = sanitizeSiteBannerBodyInternal(body, { limitParagraphs: false });
38883
39960
  const paragraphs = collectParagraphs(sanitizedBody);
@@ -39060,19 +40137,19 @@ var init_siteBanner = __esm({
39060
40137
  SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
39061
40138
  SITE_BANNER_MAX_TEXT_LENGTH = 320;
39062
40139
  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),
40140
+ siteBannerScopeSchema = z69.enum(SITE_BANNER_SCOPE_VALUES);
40141
+ siteBannerToneSchema = z69.enum(SITE_BANNER_TONE_VALUES);
40142
+ siteBannerBodySchema = z69.unknown().transform(unwrapRichTextValue);
40143
+ siteBannerCtaSchema = z69.object({
40144
+ label: z69.string().trim().min(1),
39068
40145
  link: linkPayloadSchema
39069
40146
  });
39070
- siteBannerSettingsSchema = z68.discriminatedUnion("enabled", [
39071
- z68.object({
39072
- enabled: z68.literal(false)
40147
+ siteBannerSettingsSchema = z69.discriminatedUnion("enabled", [
40148
+ z69.object({
40149
+ enabled: z69.literal(false)
39073
40150
  }),
39074
- z68.object({
39075
- enabled: z68.literal(true),
40151
+ z69.object({
40152
+ enabled: z69.literal(true),
39076
40153
  scope: siteBannerScopeSchema,
39077
40154
  tone: siteBannerToneSchema,
39078
40155
  body: siteBannerBodySchema,
@@ -39086,7 +40163,7 @@ var init_siteBanner = __esm({
39086
40163
  const analysis = analyzeSiteBannerBody(value.body);
39087
40164
  for (const issue of analysis.issues) {
39088
40165
  ctx.addIssue({
39089
- code: z68.ZodIssueCode.custom,
40166
+ code: z69.ZodIssueCode.custom,
39090
40167
  path: ["body"],
39091
40168
  message: siteBannerBodyIssueMessage(issue)
39092
40169
  });
@@ -39304,6 +40381,95 @@ var init_routableLink = __esm({
39304
40381
  }
39305
40382
  });
39306
40383
 
40384
+ // ../api/src/navigation/linkUrlType.ts
40385
+ var init_linkUrlType = __esm({
40386
+ "../api/src/navigation/linkUrlType.ts"() {
40387
+ "use strict";
40388
+ }
40389
+ });
40390
+
40391
+ // ../api/src/navigation/visibility.ts
40392
+ var init_visibility = __esm({
40393
+ "../api/src/navigation/visibility.ts"() {
40394
+ "use strict";
40395
+ init_types19();
40396
+ init_isRecord();
40397
+ }
40398
+ });
40399
+
40400
+ // ../api/src/navigation/dashboardSiteNav.ts
40401
+ var hiddenDemoSiteNavSurfaceIds, hiddenDemoSiteNavIds, websiteSurfaceIds, websiteSurfaceIdSet;
40402
+ var init_dashboardSiteNav = __esm({
40403
+ "../api/src/navigation/dashboardSiteNav.ts"() {
40404
+ "use strict";
40405
+ init_visibility();
40406
+ hiddenDemoSiteNavSurfaceIds = [
40407
+ "site.newsletter"
40408
+ ];
40409
+ hiddenDemoSiteNavIds = new Set(
40410
+ hiddenDemoSiteNavSurfaceIds
40411
+ );
40412
+ websiteSurfaceIds = [
40413
+ "site.content",
40414
+ "site.footerBlocks",
40415
+ "site.navigation",
40416
+ "site.media",
40417
+ "site.style",
40418
+ "site.performance"
40419
+ ];
40420
+ websiteSurfaceIdSet = new Set(
40421
+ websiteSurfaceIds
40422
+ );
40423
+ }
40424
+ });
40425
+
40426
+ // ../api/src/navigation/dashboardSettingsNav.ts
40427
+ var hiddenDemoSettingsNavSurfaceIds, hiddenDemoSettingsNavIds;
40428
+ var init_dashboardSettingsNav = __esm({
40429
+ "../api/src/navigation/dashboardSettingsNav.ts"() {
40430
+ "use strict";
40431
+ init_visibility();
40432
+ init_dashboardSiteNav();
40433
+ hiddenDemoSettingsNavSurfaceIds = [
40434
+ "settings.features",
40435
+ "settings.domains",
40436
+ "settings.bookings",
40437
+ "settings.emails",
40438
+ "settings.team",
40439
+ "settings.billing",
40440
+ "settings.developer",
40441
+ "settings.apiKeys",
40442
+ "settings.backup"
40443
+ ];
40444
+ hiddenDemoSettingsNavIds = new Set(hiddenDemoSettingsNavSurfaceIds);
40445
+ }
40446
+ });
40447
+
40448
+ // ../api/src/navigation/dashboardTeamMemberNav.ts
40449
+ var init_dashboardTeamMemberNav = __esm({
40450
+ "../api/src/navigation/dashboardTeamMemberNav.ts"() {
40451
+ "use strict";
40452
+ init_staffAccess();
40453
+ }
40454
+ });
40455
+
40456
+ // ../api/src/navigation/dashboardBookingsNav.ts
40457
+ var init_dashboardBookingsNav = __esm({
40458
+ "../api/src/navigation/dashboardBookingsNav.ts"() {
40459
+ "use strict";
40460
+ init_bookingVerticals();
40461
+ init_staffAccess();
40462
+ }
40463
+ });
40464
+
40465
+ // ../api/src/navigation/dashboardDemoNav.ts
40466
+ var init_dashboardDemoNav = __esm({
40467
+ "../api/src/navigation/dashboardDemoNav.ts"() {
40468
+ "use strict";
40469
+ init_dashboardSiteNav();
40470
+ }
40471
+ });
40472
+
39307
40473
  // ../api/src/navigation/linkValue.ts
39308
40474
  var init_linkValue = __esm({
39309
40475
  "../api/src/navigation/linkValue.ts"() {
@@ -39328,17 +40494,21 @@ var init_navigation = __esm({
39328
40494
  init_navigationMenuValidation();
39329
40495
  init_linkResolver();
39330
40496
  init_routableLink();
40497
+ init_linkUrlType();
40498
+ init_dashboardSiteNav();
40499
+ init_dashboardSettingsNav();
40500
+ init_dashboardTeamMemberNav();
40501
+ init_dashboardBookingsNav();
40502
+ init_dashboardDemoNav();
39331
40503
  init_linkValue();
39332
40504
  init_matcher();
39333
40505
  }
39334
40506
  });
39335
40507
 
39336
- // ../api/src/navigation/visibility.ts
39337
- var init_visibility = __esm({
39338
- "../api/src/navigation/visibility.ts"() {
40508
+ // ../api/src/workflows/automaticWorkflowTriggers.ts
40509
+ var init_automaticWorkflowTriggers = __esm({
40510
+ "../api/src/workflows/automaticWorkflowTriggers.ts"() {
39339
40511
  "use strict";
39340
- init_types19();
39341
- init_isRecord();
39342
40512
  }
39343
40513
  });
39344
40514
 
@@ -39369,75 +40539,75 @@ var init_aiPatch = __esm({
39369
40539
  });
39370
40540
 
39371
40541
  // ../api/src/aiPlayground.ts
39372
- import { z as z69 } from "zod";
40542
+ import { z as z70 } from "zod";
39373
40543
  var Rfc6902PatchOp, PlaygroundProposeRequest, MultiPagePatchEnvelope, MultiPageUpdateResponse;
39374
40544
  var init_aiPlayground = __esm({
39375
40545
  "../api/src/aiPlayground.ts"() {
39376
40546
  "use strict";
39377
- Rfc6902PatchOp = z69.discriminatedUnion("op", [
40547
+ Rfc6902PatchOp = z70.discriminatedUnion("op", [
39378
40548
  // Standard RFC-6902 operations
39379
- z69.object({
39380
- op: z69.literal("add"),
39381
- path: z69.string(),
39382
- value: z69.unknown()
40549
+ z70.object({
40550
+ op: z70.literal("add"),
40551
+ path: z70.string(),
40552
+ value: z70.unknown()
39383
40553
  }),
39384
- z69.object({
39385
- op: z69.literal("remove"),
39386
- path: z69.string()
40554
+ z70.object({
40555
+ op: z70.literal("remove"),
40556
+ path: z70.string()
39387
40557
  }),
39388
- z69.object({
39389
- op: z69.literal("replace"),
39390
- path: z69.string(),
39391
- value: z69.unknown()
40558
+ z70.object({
40559
+ op: z70.literal("replace"),
40560
+ path: z70.string(),
40561
+ value: z70.unknown()
39392
40562
  }),
39393
- z69.object({
39394
- op: z69.literal("move"),
39395
- from: z69.string(),
39396
- path: z69.string()
40563
+ z70.object({
40564
+ op: z70.literal("move"),
40565
+ from: z70.string(),
40566
+ path: z70.string()
39397
40567
  }),
39398
- z69.object({
39399
- op: z69.literal("copy"),
39400
- from: z69.string(),
39401
- path: z69.string()
40568
+ z70.object({
40569
+ op: z70.literal("copy"),
40570
+ from: z70.string(),
40571
+ path: z70.string()
39402
40572
  }),
39403
40573
  // 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()
40574
+ z70.object({
40575
+ op: z70.literal("add_block"),
40576
+ blockKind: z70.string(),
40577
+ afterBlockId: z70.string().nullable(),
40578
+ content: z70.record(z70.string(), z70.unknown()),
40579
+ rationale: z70.string()
39410
40580
  }),
39411
- z69.object({
39412
- op: z69.literal("delete_block"),
39413
- blockId: z69.string(),
39414
- rationale: z69.string()
40581
+ z70.object({
40582
+ op: z70.literal("delete_block"),
40583
+ blockId: z70.string(),
40584
+ rationale: z70.string()
39415
40585
  }),
39416
- z69.object({
39417
- op: z69.literal("reorder_block"),
39418
- blockId: z69.string(),
39419
- afterBlockId: z69.string().nullable(),
39420
- rationale: z69.string()
40586
+ z70.object({
40587
+ op: z70.literal("reorder_block"),
40588
+ blockId: z70.string(),
40589
+ afterBlockId: z70.string().nullable(),
40590
+ rationale: z70.string()
39421
40591
  })
39422
40592
  ]);
39423
- PlaygroundProposeRequest = z69.object({
39424
- request: z69.string().min(1).max(2e3)
40593
+ PlaygroundProposeRequest = z70.object({
40594
+ request: z70.string().min(1).max(2e3)
39425
40595
  });
39426
- MultiPagePatchEnvelope = z69.object({
39427
- pageId: z69.string(),
39428
- blockId: z69.string().optional(),
40596
+ MultiPagePatchEnvelope = z70.object({
40597
+ pageId: z70.string(),
40598
+ blockId: z70.string().optional(),
39429
40599
  // 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()
40600
+ blockKind: z70.string().optional(),
40601
+ blockPurpose: z70.string().optional().nullable(),
40602
+ ops: z70.array(Rfc6902PatchOp),
40603
+ rationale: z70.string(),
40604
+ currentContent: z70.record(z70.string(), z70.unknown()).optional()
39435
40605
  });
39436
- MultiPageUpdateResponse = z69.object({
39437
- patches: z69.array(MultiPagePatchEnvelope),
39438
- assistantMessage: z69.string(),
39439
- pagesModified: z69.number(),
39440
- toolCallsUsed: z69.number()
40606
+ MultiPageUpdateResponse = z70.object({
40607
+ patches: z70.array(MultiPagePatchEnvelope),
40608
+ assistantMessage: z70.string(),
40609
+ pagesModified: z70.number(),
40610
+ toolCallsUsed: z70.number()
39441
40611
  });
39442
40612
  }
39443
40613
  });
@@ -39500,6 +40670,7 @@ var init_src5 = __esm({
39500
40670
  "../api/src/index.ts"() {
39501
40671
  "use strict";
39502
40672
  init_endpoints();
40673
+ init_demoDashboardMutationSurfaces();
39503
40674
  init_accessAdmin();
39504
40675
  init_media();
39505
40676
  init_contracts();
@@ -39545,6 +40716,10 @@ var init_src5 = __esm({
39545
40716
  init_navigation();
39546
40717
  init_navigationMenuValidation();
39547
40718
  init_routableLink();
40719
+ init_linkUrlType();
40720
+ init_dashboardSiteNav();
40721
+ init_dashboardSettingsNav();
40722
+ init_automaticWorkflowTriggers();
39548
40723
  init_linkResolver();
39549
40724
  init_matcher();
39550
40725
  init_visibility();
@@ -39563,6 +40738,7 @@ var init_src5 = __esm({
39563
40738
  init_auth();
39564
40739
  init_types19();
39565
40740
  init_types19();
40741
+ init_types19();
39566
40742
  }
39567
40743
  });
39568
40744
 
@@ -40350,6 +41526,26 @@ function inferKnownEntrySubrouteKind(args) {
40350
41526
  }
40351
41527
 
40352
41528
  // src/routing/resolvePageContent.ts
41529
+ var RiverbankContentLoadError = class _RiverbankContentLoadError extends Error {
41530
+ constructor(message, options) {
41531
+ super(message);
41532
+ this.name = "RiverbankContentLoadError";
41533
+ this.surface = options.surface;
41534
+ this.reason = options.reason ?? null;
41535
+ this.path = options.path ?? null;
41536
+ this.cause = options.cause;
41537
+ Object.setPrototypeOf(this, _RiverbankContentLoadError.prototype);
41538
+ }
41539
+ };
41540
+ function contentFound(content) {
41541
+ return { kind: "found", content };
41542
+ }
41543
+ function contentNotFound() {
41544
+ return { kind: "not_found" };
41545
+ }
41546
+ function contentLoadFailed(error) {
41547
+ return { kind: "failed", error };
41548
+ }
40353
41549
  async function resolvePageContent(options) {
40354
41550
  const {
40355
41551
  path,
@@ -40361,12 +41557,40 @@ async function resolvePageContent(options) {
40361
41557
  getEntryTypeKey,
40362
41558
  shouldAttemptEntrySubroute
40363
41559
  } = options;
41560
+ async function loadContentOrFailure(pathToLoad) {
41561
+ const result = await loadContent(pathToLoad);
41562
+ switch (result.kind) {
41563
+ case "found":
41564
+ return {
41565
+ found: true,
41566
+ content: result.content,
41567
+ entrySubrouteData: null,
41568
+ resolvedPath: pathToLoad
41569
+ };
41570
+ case "not_found":
41571
+ return null;
41572
+ case "failed":
41573
+ return {
41574
+ found: false,
41575
+ reason: "load-failed",
41576
+ failedPath: pathToLoad,
41577
+ error: result.error
41578
+ };
41579
+ }
41580
+ }
41581
+ function getContentFromResolution(resolution) {
41582
+ return resolution?.found ? resolution.content : null;
41583
+ }
40364
41584
  const detected = detectEntrySubrouteFromTypes(contentTypes, path);
40365
41585
  let detectedShouldAttempt = Boolean(detected);
40366
41586
  let detectedWasInvalidSubroute = false;
40367
41587
  if (detected && detected.precedence !== "content-first") {
40368
41588
  if (detectedShouldAttempt) {
40369
- const parentContent2 = await loadContent(detected.parentPath);
41589
+ const parentResolution2 = await loadContentOrFailure(detected.parentPath);
41590
+ if (parentResolution2 && !parentResolution2.found) {
41591
+ return parentResolution2;
41592
+ }
41593
+ const parentContent2 = getContentFromResolution(parentResolution2);
40370
41594
  if (parentContent2 && isEntry(parentContent2)) {
40371
41595
  const entryTypeKey = getEntryTypeKey(parentContent2) ?? detected.contentTypeKey;
40372
41596
  const subroute = await resolveEntrySubroute({
@@ -40387,7 +41611,11 @@ async function resolvePageContent(options) {
40387
41611
  }
40388
41612
  }
40389
41613
  }
40390
- const content = await loadContent(path);
41614
+ const contentResolution = await loadContentOrFailure(path);
41615
+ if (contentResolution && !contentResolution.found) {
41616
+ return contentResolution;
41617
+ }
41618
+ const content = getContentFromResolution(contentResolution);
40391
41619
  if (content) {
40392
41620
  return {
40393
41621
  found: true,
@@ -40398,7 +41626,11 @@ async function resolvePageContent(options) {
40398
41626
  }
40399
41627
  if (detected) {
40400
41628
  if (detected.precedence === "content-first") {
40401
- const parentContent2 = await loadContent(detected.parentPath);
41629
+ const parentResolution2 = await loadContentOrFailure(detected.parentPath);
41630
+ if (parentResolution2 && !parentResolution2.found) {
41631
+ return parentResolution2;
41632
+ }
41633
+ const parentContent2 = getContentFromResolution(parentResolution2);
40402
41634
  if (parentContent2 && isEntry(parentContent2)) {
40403
41635
  const entryTypeKey = getEntryTypeKey(parentContent2) ?? detected.contentTypeKey;
40404
41636
  const subroute = await resolveEntrySubroute({
@@ -40438,7 +41670,11 @@ async function resolvePageContent(options) {
40438
41670
  return { found: false, reason: "not-found" };
40439
41671
  }
40440
41672
  }
40441
- const parentContent = await loadContent(fallback.parentPath);
41673
+ const parentResolution = await loadContentOrFailure(fallback.parentPath);
41674
+ if (parentResolution && !parentResolution.found) {
41675
+ return parentResolution;
41676
+ }
41677
+ const parentContent = getContentFromResolution(parentResolution);
40442
41678
  if (parentContent && isEntry(parentContent)) {
40443
41679
  const entryTypeKey = getEntryTypeKey(parentContent);
40444
41680
  const shouldAttempt = shouldAttemptEntrySubroute?.({
@@ -40498,7 +41734,11 @@ async function resolveEntrySubrouteFromSegment(params) {
40498
41734
  }
40499
41735
  }
40500
41736
  export {
41737
+ RiverbankContentLoadError,
40501
41738
  checkRedirectForPath,
41739
+ contentFound,
41740
+ contentLoadFailed,
41741
+ contentNotFound,
40502
41742
  defaultShouldAttemptEntrySubroute,
40503
41743
  detectEntrySubrouteFromTypes,
40504
41744
  extractPotentialEntrySubroute,