@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
@@ -3900,6 +3900,14 @@ var ENDPOINT_DEFINITIONS = {
3900
3900
  responseKind: "json",
3901
3901
  errors: []
3902
3902
  },
3903
+ applyDiscountCode: {
3904
+ path: "/public/sites/{siteId}/bookings/discounts/apply",
3905
+ method: "POST",
3906
+ tags: ["site-{siteId}", "booking-discounts"],
3907
+ auth: "public",
3908
+ responseKind: "json",
3909
+ errors: ["validation:invalid_input", "rate_limit:exceeded"]
3910
+ },
3903
3911
  // Batch endpoint for block loader requests (reduces SSR fan-out)
3904
3912
  batchBlockLoaders: {
3905
3913
  path: "/public/sites/{siteId}/block-loaders/batch",
@@ -6239,6 +6247,27 @@ var ENDPOINT_DEFINITIONS = {
6239
6247
  }
6240
6248
  };
6241
6249
 
6250
+ // ../core/src/location.ts
6251
+ function normalizeLocationAddressText(value) {
6252
+ if (typeof value !== "string") {
6253
+ return null;
6254
+ }
6255
+ const trimmed = value.trim();
6256
+ return trimmed ? trimmed : null;
6257
+ }
6258
+ function hasLocationCoordinates(value) {
6259
+ return typeof value?.lat === "number" && typeof value?.lng === "number";
6260
+ }
6261
+ function toLocationCoordinates(value) {
6262
+ if (!hasLocationCoordinates(value)) {
6263
+ return null;
6264
+ }
6265
+ return {
6266
+ lat: value.lat,
6267
+ lng: value.lng
6268
+ };
6269
+ }
6270
+
6242
6271
  // ../api/src/accessAdmin.ts
6243
6272
  import { z } from "zod";
6244
6273
  var managedDomainAddOnPricingSnapshotSchema = z.object({
@@ -6381,27 +6410,6 @@ function formatKeyAsLabel(key) {
6381
6410
  // ../blocks/src/system/manifest/schema.ts
6382
6411
  import { z as z4 } from "zod";
6383
6412
 
6384
- // ../core/src/location.ts
6385
- function normalizeLocationAddressText(value) {
6386
- if (typeof value !== "string") {
6387
- return null;
6388
- }
6389
- const trimmed = value.trim();
6390
- return trimmed ? trimmed : null;
6391
- }
6392
- function hasLocationCoordinates(value) {
6393
- return typeof value?.lat === "number" && typeof value?.lng === "number";
6394
- }
6395
- function toLocationCoordinates(value) {
6396
- if (!hasLocationCoordinates(value)) {
6397
- return null;
6398
- }
6399
- return {
6400
- lat: value.lat,
6401
- lng: value.lng
6402
- };
6403
- }
6404
-
6405
6413
  // ../media-core/src/transformRect.ts
6406
6414
  function isValidTransformRectStructure(rect) {
6407
6415
  if (!Array.isArray(rect) || rect.length !== 4) return false;
@@ -7426,6 +7434,9 @@ function makeBoundaryId(previousBlockId, nextBlockId) {
7426
7434
  const next = encodeURIComponent(nextBlockId);
7427
7435
  return asDesignBoundaryId(`boundary:${previous}:${next}`);
7428
7436
  }
7437
+ function assertNever(value, message = "Unhandled Theme V2 variant") {
7438
+ throw new Error(`${message}: ${String(value)}`);
7439
+ }
7429
7440
  function brandNonEmptyString(value, label) {
7430
7441
  if (value.length === 0) {
7431
7442
  throw new Error(`${label} must be a non-empty string.`);
@@ -7453,6 +7464,10 @@ var tileTreatmentValues = [
7453
7464
  "quiet",
7454
7465
  "brand-depth"
7455
7466
  ];
7467
+ var eventListTreatmentValues = [
7468
+ "plain",
7469
+ "lined-panel"
7470
+ ];
7456
7471
  var eyebrowTreatmentValues = [
7457
7472
  "plain",
7458
7473
  "pill",
@@ -7510,6 +7525,7 @@ function defineBlockDesignCapability(capability) {
7510
7525
  imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
7511
7526
  testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"],
7512
7527
  tileTreatments: capability.tileTreatments ?? ["default"],
7528
+ eventListTreatments: capability.eventListTreatments ?? ["plain"],
7513
7529
  eyebrowTreatments: capability.eyebrowTreatments ?? ["plain"],
7514
7530
  ...capability.headingDecorations ? { headingDecorations: capability.headingDecorations } : {},
7515
7531
  ...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
@@ -7534,9 +7550,98 @@ var blockAppearancePresets = [
7534
7550
  transitionAfter: "soft-fade-short",
7535
7551
  emphasis: "high",
7536
7552
  sectionHeight: "hero",
7553
+ heroComposition: "center",
7554
+ heroTypographyScale: "display",
7537
7555
  imageSurfaceTreatment: { kind: "neutral-wash" }
7538
7556
  }
7539
7557
  }),
7558
+ defineBlockAppearancePreset({
7559
+ kind: "block-design",
7560
+ id: "hero-bottom-left-panel",
7561
+ target: "hero",
7562
+ label: "Bottom-left panel hero",
7563
+ blockKinds: ["block.hero"],
7564
+ constraints: {
7565
+ layoutFamilies: ["centered", "compact"]
7566
+ },
7567
+ optionGroups: [
7568
+ {
7569
+ id: "image-surface-treatment",
7570
+ label: "Treatment",
7571
+ selectedOptionId: "neutral-scrim",
7572
+ options: [
7573
+ {
7574
+ id: "neutral-scrim",
7575
+ label: "Neutral scrim",
7576
+ designPatch: {
7577
+ imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
7578
+ }
7579
+ },
7580
+ {
7581
+ id: "brand-scrim-primary",
7582
+ label: "Brand scrim",
7583
+ designPatch: {
7584
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "balanced" }
7585
+ }
7586
+ }
7587
+ ]
7588
+ }
7589
+ ],
7590
+ layoutPatches: [
7591
+ {
7592
+ constraints: {
7593
+ layoutVariantKeys: ["micro"]
7594
+ },
7595
+ designPatch: {
7596
+ sectionHeight: "banner",
7597
+ heroTypographyScale: "editorial"
7598
+ }
7599
+ }
7600
+ ],
7601
+ design: {
7602
+ sectionSurface: "hero-image",
7603
+ contentFrame: panelFrame("raised"),
7604
+ itemSurface: "none",
7605
+ transitionAfter: "soft-fade-short",
7606
+ emphasis: "high",
7607
+ sectionHeight: "immersive",
7608
+ heroComposition: "bottom-left",
7609
+ heroTypographyScale: "display",
7610
+ imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
7611
+ }
7612
+ }),
7613
+ defineBlockAppearancePreset({
7614
+ kind: "block-design",
7615
+ id: "hero-poster-image",
7616
+ target: "hero",
7617
+ label: "Poster image hero",
7618
+ blockKinds: ["block.hero"],
7619
+ constraints: {
7620
+ layoutFamilies: ["centered", "compact"]
7621
+ },
7622
+ layoutPatches: [
7623
+ {
7624
+ constraints: {
7625
+ layoutVariantKeys: ["micro"]
7626
+ },
7627
+ designPatch: {
7628
+ sectionHeight: "banner",
7629
+ heroTypographyScale: "display"
7630
+ }
7631
+ }
7632
+ ],
7633
+ design: {
7634
+ sectionSurface: "hero-image",
7635
+ contentFrame: plainFrame,
7636
+ itemSurface: "none",
7637
+ transitionAfter: "soft-fade-short",
7638
+ emphasis: "high",
7639
+ sectionHeight: "immersive",
7640
+ heroComposition: "center",
7641
+ heroTypographyScale: "poster",
7642
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "strong" }
7643
+ }
7644
+ }),
7540
7645
  defineBlockAppearancePreset({
7541
7646
  kind: "block-design",
7542
7647
  id: "hero-brand-scrim",
@@ -7586,6 +7691,8 @@ var blockAppearancePresets = [
7586
7691
  transitionAfter: "soft-fade-short",
7587
7692
  emphasis: "high",
7588
7693
  sectionHeight: "immersive",
7694
+ heroComposition: "center",
7695
+ heroTypographyScale: "display",
7589
7696
  imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
7590
7697
  }
7591
7698
  }),
@@ -7638,6 +7745,8 @@ var blockAppearancePresets = [
7638
7745
  transitionAfter: "soft-fade-short",
7639
7746
  emphasis: "high",
7640
7747
  sectionHeight: "immersive",
7748
+ heroComposition: "center",
7749
+ heroTypographyScale: "display",
7641
7750
  imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
7642
7751
  imageSurfaceMotion: "fixed-frame",
7643
7752
  eyebrowTreatment: "accent-pill-bounce"
@@ -7658,6 +7767,8 @@ var blockAppearancePresets = [
7658
7767
  itemSurface: "none",
7659
7768
  transitionAfter: "soft-fade-short",
7660
7769
  emphasis: "high",
7770
+ heroComposition: "center",
7771
+ heroTypographyScale: "editorial",
7661
7772
  eyebrowTreatment: "accent-pill-bounce"
7662
7773
  }
7663
7774
  }),
@@ -7672,7 +7783,82 @@ var blockAppearancePresets = [
7672
7783
  contentFrame: panelFrame("inset"),
7673
7784
  itemSurface: "none",
7674
7785
  transitionAfter: "none",
7675
- emphasis: "high"
7786
+ emphasis: "high",
7787
+ heroComposition: "center",
7788
+ heroTypographyScale: "editorial"
7789
+ }
7790
+ }),
7791
+ defineBlockAppearancePreset({
7792
+ kind: "block-design",
7793
+ id: "hero-split-editorial",
7794
+ target: "hero",
7795
+ label: "Editorial split hero",
7796
+ blockKinds: ["block.hero"],
7797
+ constraints: {
7798
+ layoutFamilies: ["split"]
7799
+ },
7800
+ design: {
7801
+ sectionSurface: "base",
7802
+ contentFrame: plainFrame,
7803
+ itemSurface: "none",
7804
+ transitionAfter: "soft-fade-short",
7805
+ emphasis: "high",
7806
+ heroTypographyScale: "editorial"
7807
+ }
7808
+ }),
7809
+ defineBlockAppearancePreset({
7810
+ kind: "block-design",
7811
+ id: "hero-split-brand",
7812
+ target: "hero",
7813
+ label: "Brand split hero",
7814
+ blockKinds: ["block.hero"],
7815
+ constraints: {
7816
+ layoutFamilies: ["split"]
7817
+ },
7818
+ design: {
7819
+ sectionSurface: "brand-depth-band",
7820
+ contentFrame: plainFrame,
7821
+ itemSurface: "none",
7822
+ transitionAfter: "soft-fade-short",
7823
+ emphasis: "high",
7824
+ heroTypographyScale: "display",
7825
+ eyebrowTreatment: "accent-pill-bounce"
7826
+ }
7827
+ }),
7828
+ defineBlockAppearancePreset({
7829
+ kind: "block-design",
7830
+ id: "hero-split-soft-panel",
7831
+ target: "hero",
7832
+ label: "Soft panel split hero",
7833
+ blockKinds: ["block.hero"],
7834
+ constraints: {
7835
+ layoutFamilies: ["split"]
7836
+ },
7837
+ design: {
7838
+ sectionSurface: "muted-band",
7839
+ contentFrame: panelFrame("raised"),
7840
+ itemSurface: "none",
7841
+ transitionAfter: "soft-fade-short",
7842
+ emphasis: "high",
7843
+ heroTypographyScale: "editorial"
7844
+ }
7845
+ }),
7846
+ defineBlockAppearancePreset({
7847
+ kind: "block-design",
7848
+ id: "hero-split-accent",
7849
+ target: "hero",
7850
+ label: "Accent split hero",
7851
+ blockKinds: ["block.hero"],
7852
+ constraints: {
7853
+ layoutFamilies: ["split"]
7854
+ },
7855
+ design: {
7856
+ sectionSurface: "accent-band",
7857
+ contentFrame: panelFrame("raised"),
7858
+ itemSurface: "none",
7859
+ transitionAfter: "soft-fade-short",
7860
+ emphasis: "high",
7861
+ heroTypographyScale: "display"
7676
7862
  }
7677
7863
  }),
7678
7864
  defineBlockAppearancePreset({
@@ -7705,9 +7891,9 @@ var blockAppearancePresets = [
7705
7891
  }),
7706
7892
  defineBlockAppearancePreset({
7707
7893
  kind: "block-design",
7708
- id: "intro-soft-earth-statement",
7894
+ id: "intro-organic-statement",
7709
7895
  target: "intro",
7710
- label: "Soft Earth intro statement",
7896
+ label: "Organic intro statement",
7711
7897
  blockKinds: ["block.intro"],
7712
7898
  design: {
7713
7899
  sectionSurface: "base",
@@ -7738,9 +7924,9 @@ var blockAppearancePresets = [
7738
7924
  }),
7739
7925
  defineBlockAppearancePreset({
7740
7926
  kind: "block-design",
7741
- id: "feature-cards-soft-earth-offerings",
7927
+ id: "feature-cards-raised-rule",
7742
7928
  target: "feature-cards",
7743
- label: "Soft Earth offering cards",
7929
+ label: "Raised cards with rule",
7744
7930
  blockKinds: ["block.feature-cards"],
7745
7931
  design: {
7746
7932
  sectionSurface: "base",
@@ -7769,6 +7955,21 @@ var blockAppearancePresets = [
7769
7955
  emphasis: "medium"
7770
7956
  }
7771
7957
  }),
7958
+ defineBlockAppearancePreset({
7959
+ kind: "block-design",
7960
+ id: "events-lined-panel",
7961
+ target: "events",
7962
+ label: "Lined event panel",
7963
+ blockKinds: ["block.event-calendar", "block.event-listing"],
7964
+ design: {
7965
+ sectionSurface: "base",
7966
+ contentFrame: plainFrame,
7967
+ itemSurface: "none",
7968
+ transitionAfter: "none",
7969
+ emphasis: "medium",
7970
+ eventListTreatment: "lined-panel"
7971
+ }
7972
+ }),
7772
7973
  defineBlockAppearancePreset({
7773
7974
  kind: "block-design",
7774
7975
  id: "schedule-details-accent-section",
@@ -7828,9 +8029,9 @@ var blockAppearancePresets = [
7828
8029
  }),
7829
8030
  defineBlockAppearancePreset({
7830
8031
  kind: "block-design",
7831
- id: "testimonials-carded-proof",
8032
+ id: "testimonials-simple-cards",
7832
8033
  target: "testimonials",
7833
- label: "Carded social proof",
8034
+ label: "Simple testimonial cards",
7834
8035
  blockKinds: ["block.testimonials"],
7835
8036
  design: {
7836
8037
  sectionSurface: "base",
@@ -7842,9 +8043,9 @@ var blockAppearancePresets = [
7842
8043
  }),
7843
8044
  defineBlockAppearancePreset({
7844
8045
  kind: "block-design",
7845
- id: "testimonials-contained-proof",
8046
+ id: "testimonials-raised-panel",
7846
8047
  target: "testimonials",
7847
- label: "Contained social proof",
8048
+ label: "Raised testimonial panel",
7848
8049
  blockKinds: ["block.testimonials"],
7849
8050
  design: {
7850
8051
  sectionSurface: "muted-band",
@@ -7856,9 +8057,9 @@ var blockAppearancePresets = [
7856
8057
  }),
7857
8058
  defineBlockAppearancePreset({
7858
8059
  kind: "block-design",
7859
- id: "testimonials-dark-proof",
8060
+ id: "testimonials-accent-panel",
7860
8061
  target: "testimonials",
7861
- label: "Dark proof panel",
8062
+ label: "Accent testimonial panel",
7862
8063
  blockKinds: ["block.testimonials"],
7863
8064
  design: {
7864
8065
  sectionSurface: "accent-band",
@@ -7870,9 +8071,9 @@ var blockAppearancePresets = [
7870
8071
  }),
7871
8072
  defineBlockAppearancePreset({
7872
8073
  kind: "block-design",
7873
- id: "testimonials-accent-quote-proof",
8074
+ id: "testimonials-accent-quote-cards",
7874
8075
  target: "testimonials",
7875
- label: "Accent quote proof",
8076
+ label: "Accent quote cards",
7876
8077
  blockKinds: ["block.testimonials"],
7877
8078
  design: {
7878
8079
  sectionSurface: "accent-band",
@@ -7885,9 +8086,9 @@ var blockAppearancePresets = [
7885
8086
  }),
7886
8087
  defineBlockAppearancePreset({
7887
8088
  kind: "block-design",
7888
- id: "testimonials-soft-earth-proof-band",
8089
+ id: "testimonials-brand-background-quotes",
7889
8090
  target: "testimonials",
7890
- label: "Soft Earth proof band",
8091
+ label: "Brand background quotes",
7891
8092
  blockKinds: ["block.testimonials"],
7892
8093
  design: {
7893
8094
  sectionSurface: "brand-depth-band",
@@ -7931,25 +8132,6 @@ var blockAppearancePresets = [
7931
8132
  emphasis: "low"
7932
8133
  }
7933
8134
  }),
7934
- defineBlockAppearancePreset({
7935
- kind: "block-design",
7936
- id: "faq-soft-earth-two-column",
7937
- target: "faq",
7938
- label: "Soft Earth two-column FAQ",
7939
- blockKinds: ["block.faq"],
7940
- design: {
7941
- sectionSurface: "base",
7942
- contentFrame: plainFrame,
7943
- itemSurface: "flat",
7944
- transitionAfter: "none",
7945
- emphasis: "medium",
7946
- accordionIconTreatment: {
7947
- iconSet: "plus",
7948
- colorToken: "primary",
7949
- motion: "swap"
7950
- }
7951
- }
7952
- }),
7953
8135
  defineBlockAppearancePreset({
7954
8136
  kind: "block-design",
7955
8137
  id: "contact-form-panel",
@@ -9328,7 +9510,8 @@ var accordionSystemSchema = z12.object({
9328
9510
  icon: z12.object({
9329
9511
  style: accordionIconSchema,
9330
9512
  position: z12.enum(["left", "right"]),
9331
- size: z12.enum(["sm", "md", "lg"])
9513
+ size: z12.enum(["sm", "md", "lg"]),
9514
+ colorToken: themeColorTokenSchema.optional()
9332
9515
  }),
9333
9516
  // Trigger (question) styling
9334
9517
  trigger: z12.object({
@@ -9462,6 +9645,7 @@ var navLinkPaddingXSchema = z16.enum(["none", "tight", "compact", "default", "re
9462
9645
  var navLinkBorderRadiusSchema = z16.enum(["none", "sm", "md", "full"]);
9463
9646
  var navLinkTextSizeSchema = z16.enum(["xs", "sm", "base", "lg"]);
9464
9647
  var navLinkLetterSpacingSchema = z16.enum(["normal", "wide", "wider", "widest"]);
9648
+ var navLinkContrastTreatmentSchema = z16.enum(["none", "soft-glow"]);
9465
9649
  var navLinkStyleSchema = z16.object({
9466
9650
  /** Display name for the style */
9467
9651
  name: z16.string().min(1).max(30).optional(),
@@ -9473,6 +9657,8 @@ var navLinkStyleSchema = z16.object({
9473
9657
  textSize: navLinkTextSizeSchema.optional(),
9474
9658
  /** Optional letter spacing override */
9475
9659
  letterSpacing: navLinkLetterSpacingSchema.optional(),
9660
+ /** Optional text-only contrast treatment for transparent/overlay navigation */
9661
+ contrastTreatment: navLinkContrastTreatmentSchema.optional(),
9476
9662
  /** Hover/active color token (for color-change effects) */
9477
9663
  hoverColorToken: themeColorTokenSchema.nullable().optional(),
9478
9664
  /** Padding preset */
@@ -9902,6 +10088,7 @@ var sectionStylesOverrideSchema = z21.object({
9902
10088
  spacing: semanticSpacingSchema.nullable().optional(),
9903
10089
  minHeight: z21.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
9904
10090
  tileTreatment: z21.enum(tileTreatmentValues).nullable().optional(),
10091
+ eventListTreatment: z21.enum(eventListTreatmentValues).nullable().optional(),
9905
10092
  eyebrowTreatment: z21.enum(eyebrowTreatmentValues).nullable().optional(),
9906
10093
  headingDecoration: headingDecorationSchema.nullable().optional(),
9907
10094
  // Author-level override consumed by later block/editor rendering phases.
@@ -10735,6 +10922,34 @@ var paletteVariantsById = new Map(
10735
10922
  paletteVariants.map((v) => [v.id, v])
10736
10923
  );
10737
10924
 
10925
+ // ../theme-core/src/accordions/siteStyleDefaults.ts
10926
+ var softEarthAccordionSystem = {
10927
+ background: {
10928
+ type: "solid",
10929
+ colorToken: "background"
10930
+ },
10931
+ spacing: "comfortable",
10932
+ corners: "square",
10933
+ border: null,
10934
+ shadow: null,
10935
+ icon: {
10936
+ style: "plus-minus",
10937
+ position: "right",
10938
+ size: "md",
10939
+ colorToken: "primary"
10940
+ },
10941
+ trigger: {
10942
+ textColorToken: "text",
10943
+ fontWeight: "medium"
10944
+ },
10945
+ hover: {
10946
+ textColorToken: "primary"
10947
+ },
10948
+ content: {
10949
+ textColorToken: "neutral-700"
10950
+ }
10951
+ };
10952
+
10738
10953
  // ../theme-core/src/site-styles/headerLooks.ts
10739
10954
  function asHeaderLookId(value) {
10740
10955
  return value;
@@ -10790,7 +11005,7 @@ var headerLayoutCatalog = [
10790
11005
  description: "Detached header chrome that sits over the opening section.",
10791
11006
  structure: "floating-shell",
10792
11007
  variant: "floating",
10793
- defaultPositioning: "fixed",
11008
+ defaultPositioning: "sticky",
10794
11009
  shrinkOnScroll: true,
10795
11010
  maxRecommendedNavItems: 5,
10796
11011
  allowedLogoShapes: ["none", "text-only", "horizontal"]
@@ -10807,7 +11022,9 @@ var headerStyleCatalog = [
10807
11022
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10808
11023
  navInteraction: "color-change",
10809
11024
  surface: "neutral",
10810
- navTypography: "plain"
11025
+ defaultDepth: "none",
11026
+ navTypography: "plain",
11027
+ moods: ["calm", "professional", "editorial"]
10811
11028
  },
10812
11029
  {
10813
11030
  id: asHeaderStyleId("fine-line"),
@@ -10816,7 +11033,9 @@ var headerStyleCatalog = [
10816
11033
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10817
11034
  navInteraction: "underline-grow",
10818
11035
  surface: "bordered",
10819
- navTypography: "plain"
11036
+ defaultDepth: "line",
11037
+ navTypography: "plain",
11038
+ moods: ["calm", "professional", "editorial"]
10820
11039
  },
10821
11040
  {
10822
11041
  id: asHeaderStyleId("soft-bar"),
@@ -10825,7 +11044,9 @@ var headerStyleCatalog = [
10825
11044
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10826
11045
  navInteraction: "pill-background",
10827
11046
  surface: "soft",
10828
- navTypography: "plain"
11047
+ defaultDepth: "line",
11048
+ navTypography: "plain",
11049
+ moods: ["calm", "professional"]
10829
11050
  },
10830
11051
  {
10831
11052
  id: asHeaderStyleId("pill-nav"),
@@ -10834,7 +11055,9 @@ var headerStyleCatalog = [
10834
11055
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10835
11056
  navInteraction: "pill-background",
10836
11057
  surface: "soft",
10837
- navTypography: "plain"
11058
+ defaultDepth: "none",
11059
+ navTypography: "plain",
11060
+ moods: ["calm"]
10838
11061
  },
10839
11062
  {
10840
11063
  id: asHeaderStyleId("brand-bar"),
@@ -10843,7 +11066,9 @@ var headerStyleCatalog = [
10843
11066
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10844
11067
  navInteraction: "color-change",
10845
11068
  surface: "brand-solid",
10846
- navTypography: "brand-caps"
11069
+ defaultDepth: "none",
11070
+ navTypography: "brand-caps",
11071
+ moods: ["professional", "expressive", "utility"]
10847
11072
  },
10848
11073
  {
10849
11074
  id: asHeaderStyleId("brand-underline"),
@@ -10852,7 +11077,9 @@ var headerStyleCatalog = [
10852
11077
  supportedLayoutIds: supportedLayouts(["classic"]),
10853
11078
  navInteraction: "underline-grow",
10854
11079
  surface: "brand-solid",
10855
- navTypography: "brand-caps"
11080
+ defaultDepth: "none",
11081
+ navTypography: "brand-caps",
11082
+ moods: ["expressive"]
10856
11083
  },
10857
11084
  {
10858
11085
  id: asHeaderStyleId("brand-pill"),
@@ -10861,7 +11088,9 @@ var headerStyleCatalog = [
10861
11088
  supportedLayoutIds: supportedLayouts(["classic", "centered", "floating"]),
10862
11089
  navInteraction: "pill-background",
10863
11090
  surface: "brand-solid",
10864
- navTypography: "brand-caps"
11091
+ defaultDepth: "none",
11092
+ navTypography: "brand-caps",
11093
+ moods: ["expressive"]
10865
11094
  },
10866
11095
  {
10867
11096
  id: asHeaderStyleId("serif-line"),
@@ -10870,7 +11099,9 @@ var headerStyleCatalog = [
10870
11099
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10871
11100
  navInteraction: "underline-grow",
10872
11101
  surface: "bordered",
10873
- navTypography: "heading"
11102
+ defaultDepth: "line",
11103
+ navTypography: "heading",
11104
+ moods: ["editorial", "calm"]
10874
11105
  },
10875
11106
  {
10876
11107
  id: asHeaderStyleId("flat-tabs"),
@@ -10879,16 +11110,20 @@ var headerStyleCatalog = [
10879
11110
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10880
11111
  navInteraction: "flat-block",
10881
11112
  surface: "bordered",
10882
- navTypography: "quiet-caps"
11113
+ defaultDepth: "shadow",
11114
+ navTypography: "quiet-caps",
11115
+ moods: ["professional", "utility", "expressive"]
10883
11116
  },
10884
11117
  {
10885
11118
  id: asHeaderStyleId("glass"),
10886
11119
  label: "Glass",
10887
11120
  description: "Translucent chrome with frosted navigation backing.",
10888
- supportedLayoutIds: supportedLayouts(["classic", "floating"]),
11121
+ supportedLayoutIds: supportedLayouts(["floating"]),
10889
11122
  navInteraction: "glass-backed",
10890
11123
  surface: "floating",
10891
- navTypography: "plain"
11124
+ defaultDepth: "shadow",
11125
+ navTypography: "plain",
11126
+ moods: ["expressive", "calm"]
10892
11127
  },
10893
11128
  {
10894
11129
  id: asHeaderStyleId("minimal-surface"),
@@ -10897,7 +11132,9 @@ var headerStyleCatalog = [
10897
11132
  supportedLayoutIds: supportedLayouts(["floating"]),
10898
11133
  navInteraction: "color-change",
10899
11134
  surface: "floating",
10900
- navTypography: "plain"
11135
+ defaultDepth: "none",
11136
+ navTypography: "plain",
11137
+ moods: ["editorial", "calm"]
10901
11138
  },
10902
11139
  {
10903
11140
  id: asHeaderStyleId("soft-shell"),
@@ -10906,7 +11143,9 @@ var headerStyleCatalog = [
10906
11143
  supportedLayoutIds: supportedLayouts(["floating"]),
10907
11144
  navInteraction: "pill-background",
10908
11145
  surface: "floating",
10909
- navTypography: "plain"
11146
+ defaultDepth: "shadow",
11147
+ navTypography: "plain",
11148
+ moods: ["calm", "professional"]
10910
11149
  },
10911
11150
  {
10912
11151
  id: asHeaderStyleId("split-glass"),
@@ -10915,7 +11154,9 @@ var headerStyleCatalog = [
10915
11154
  supportedLayoutIds: supportedLayouts(["floating"]),
10916
11155
  navInteraction: "glass-backed",
10917
11156
  surface: "floating",
10918
- navTypography: "quiet-caps"
11157
+ defaultDepth: "shadow",
11158
+ navTypography: "quiet-caps",
11159
+ moods: ["expressive"]
10919
11160
  },
10920
11161
  {
10921
11162
  id: asHeaderStyleId("split-pill"),
@@ -10924,7 +11165,9 @@ var headerStyleCatalog = [
10924
11165
  supportedLayoutIds: supportedLayouts(["floating"]),
10925
11166
  navInteraction: "pill-background",
10926
11167
  surface: "floating",
10927
- navTypography: "heading"
11168
+ defaultDepth: "shadow",
11169
+ navTypography: "heading",
11170
+ moods: ["calm", "editorial"]
10928
11171
  }
10929
11172
  ];
10930
11173
  var headerLayoutsById = new Map(
@@ -10938,7 +11181,6 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
10938
11181
  asHeaderLayoutId("classic"),
10939
11182
  headerStyleRepairChain([
10940
11183
  "minimal",
10941
- "glass",
10942
11184
  "fine-line",
10943
11185
  "soft-bar",
10944
11186
  "pill-nav",
@@ -11005,7 +11247,13 @@ var headerStyleRepairOrder = /* @__PURE__ */ new Map(
11005
11247
  ],
11006
11248
  [
11007
11249
  asHeaderStyleId("glass"),
11008
- headerStyleRepairChain(["glass", "minimal-surface", "minimal"])
11250
+ headerStyleRepairChain([
11251
+ "glass",
11252
+ "soft-shell",
11253
+ "fine-line",
11254
+ "minimal-surface",
11255
+ "minimal"
11256
+ ])
11009
11257
  ],
11010
11258
  [
11011
11259
  asHeaderStyleId("soft-shell"),
@@ -11117,6 +11365,23 @@ function getCompatibleHeaderStyleIds(layoutId) {
11117
11365
  }
11118
11366
  );
11119
11367
  }
11368
+ function themedHeaderShadow(theme) {
11369
+ switch (theme.shadow.elevation) {
11370
+ case "none":
11371
+ return void 0;
11372
+ case "low":
11373
+ return { elevation: "sm" };
11374
+ case "medium":
11375
+ return { elevation: "md" };
11376
+ case "high":
11377
+ return { elevation: "lg" };
11378
+ default:
11379
+ return assertNever(
11380
+ theme.shadow.elevation,
11381
+ "Unhandled theme shadow elevation"
11382
+ );
11383
+ }
11384
+ }
11120
11385
  function solidBrandHeader(theme) {
11121
11386
  const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
11122
11387
  return {
@@ -11266,9 +11531,7 @@ function practicalUtilityHeader(theme) {
11266
11531
  navColor: "text",
11267
11532
  navStyle: "solid",
11268
11533
  navWeight: "semibold",
11269
- shadow: {
11270
- elevation: "sm"
11271
- },
11534
+ shadow: themedHeaderShadow(theme),
11272
11535
  border: {
11273
11536
  style: "solid",
11274
11537
  width: "thin",
@@ -11337,6 +11600,7 @@ function floatingGlassHeader(theme) {
11337
11600
  return {
11338
11601
  ...transparentOverlayHeader(theme),
11339
11602
  variant: "floating",
11603
+ positioning: "sticky",
11340
11604
  navStyle: "frosted",
11341
11605
  navContainer: {
11342
11606
  type: "glass",
@@ -11852,7 +12116,7 @@ var typographyPresets = [
11852
12116
  heroTypography: {
11853
12117
  headlineSize: "6xl",
11854
12118
  headlineLineHeight: "tight",
11855
- subheadlineSize: "editorial",
12119
+ subheadlineSize: "2xl",
11856
12120
  subheadlineLineHeight: "normal",
11857
12121
  microHeadlineSize: "6xl",
11858
12122
  microHeadlineLineHeight: "tight",
@@ -11870,6 +12134,8 @@ var typographyPresetsById = new Map(
11870
12134
  );
11871
12135
 
11872
12136
  // ../theme-core/src/site-styles/curatedSiteStyles.ts
12137
+ var SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
12138
+ var SOFT_EARTH_SITE_STYLE_ID = asSiteStyleId(SOFT_EARTH_SITE_STYLE_ID_VALUE);
11873
12139
  var curatedSiteStyleIdValues = [
11874
12140
  "site-style:calm-studio",
11875
12141
  "site-style:clear-professional",
@@ -11881,7 +12147,7 @@ var curatedSiteStyleIdValues = [
11881
12147
  "site-style:personal-retreat-journal",
11882
12148
  "site-style:tactile-workshop",
11883
12149
  "site-style:modern-wellness",
11884
- "site-style:soft-earth",
12150
+ SOFT_EARTH_SITE_STYLE_ID_VALUE,
11885
12151
  "site-style:bold-launch",
11886
12152
  "site-style:south-west-twerk-school"
11887
12153
  ];
@@ -11963,7 +12229,10 @@ function uniqueContentFrameKinds() {
11963
12229
  var generatedContentFrameKinds = uniqueContentFrameKinds();
11964
12230
  function defineCuratedSiteStyle(input) {
11965
12231
  const legacyHeaderLookIds = input.recommendedHeaderLookIds ?? ["clean-base"];
11966
- const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(legacyHeaderLookIds);
12232
+ const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(
12233
+ legacyHeaderLookIds,
12234
+ input.tokenRecipes
12235
+ );
11967
12236
  const typographyPresetChoices = input.typographyPresetChoices ?? defaultTypographyPresetChoicesForRecipe(input.tokenRecipes.typography);
11968
12237
  const defaultTypographyPresetId = input.defaultTypographyPresetId ? asTypographyPresetId(input.defaultTypographyPresetId) : typographyPresetChoices[0].id;
11969
12238
  if (!typographyPresetChoices.some(
@@ -11996,6 +12265,7 @@ function defineCuratedSiteStyle(input) {
11996
12265
  supportedTransitions: generatedDesignOptionCatalog.transitions
11997
12266
  },
11998
12267
  ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
12268
+ ...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
11999
12269
  recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
12000
12270
  defaultHeaderSelection: input.defaultHeaderSelection ? {
12001
12271
  layoutId: asHeaderLayoutId(input.defaultHeaderSelection.layoutId),
@@ -12054,7 +12324,69 @@ function nonEmptyHeaderStyleChoices(choices, fallbackLayoutId) {
12054
12324
  };
12055
12325
  return [first, ...choices.slice(1)];
12056
12326
  }
12057
- function inferHeaderCurationFromLegacyLooks(lookIds) {
12327
+ function uniqueCompatibleHeaderStyleChoices(choices, fallbackLayoutId) {
12328
+ const compatible = new Set(getCompatibleHeaderStyleIds(fallbackLayoutId));
12329
+ const seen = /* @__PURE__ */ new Set();
12330
+ const unique = choices.filter((choice) => {
12331
+ if (!compatible.has(choice.id)) return false;
12332
+ if (seen.has(choice.id)) return false;
12333
+ seen.add(choice.id);
12334
+ return true;
12335
+ });
12336
+ return nonEmptyHeaderStyleChoices(unique, fallbackLayoutId);
12337
+ }
12338
+ function inferredHeaderStyleValuesForRecipes(layoutId, recipes) {
12339
+ switch (layoutId) {
12340
+ case "classic":
12341
+ if (isExpressiveRecipe(recipes)) {
12342
+ return [
12343
+ "brand-bar",
12344
+ "brand-underline",
12345
+ "flat-tabs",
12346
+ "brand-pill",
12347
+ "fine-line"
12348
+ ];
12349
+ }
12350
+ if (recipes.spacing === "compact") {
12351
+ return ["flat-tabs", "fine-line", "minimal", "brand-bar"];
12352
+ }
12353
+ if (isSerifTypographyRecipe(recipes)) {
12354
+ return ["serif-line", "fine-line", "minimal", "soft-bar"];
12355
+ }
12356
+ if (recipes.radius === "rounded" || recipes.radius === "pill") {
12357
+ return ["soft-bar", "pill-nav", "fine-line", "minimal"];
12358
+ }
12359
+ return ["fine-line", "minimal", "soft-bar", "brand-bar"];
12360
+ case "centered":
12361
+ if (isSerifTypographyRecipe(recipes)) {
12362
+ return ["serif-line", "fine-line", "minimal", "soft-bar"];
12363
+ }
12364
+ if (isExpressiveRecipe(recipes)) {
12365
+ return ["brand-pill", "flat-tabs", "brand-bar", "fine-line"];
12366
+ }
12367
+ if (recipes.radius === "rounded" || recipes.radius === "pill") {
12368
+ return ["soft-bar", "pill-nav", "fine-line", "minimal"];
12369
+ }
12370
+ return ["minimal", "fine-line", "soft-bar"];
12371
+ case "floating":
12372
+ if (isExpressiveRecipe(recipes)) {
12373
+ return ["glass", "split-glass", "brand-pill", "soft-shell"];
12374
+ }
12375
+ if (isSerifTypographyRecipe(recipes)) {
12376
+ return ["split-pill", "minimal-surface", "soft-shell"];
12377
+ }
12378
+ return ["soft-shell", "minimal-surface", "glass"];
12379
+ default:
12380
+ return [];
12381
+ }
12382
+ }
12383
+ function isExpressiveRecipe(recipes) {
12384
+ return recipes.contrast === "maximum" || recipes.shadow === "layered" || recipes.motion === "expressive";
12385
+ }
12386
+ function isSerifTypographyRecipe(recipes) {
12387
+ return recipes.typography === "serif-editorial" || recipes.typography === "classic-serif";
12388
+ }
12389
+ function inferHeaderCurationFromLegacyLooks(lookIds, recipes) {
12058
12390
  const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter(
12059
12391
  (selection) => Boolean(selection)
12060
12392
  );
@@ -12067,8 +12399,15 @@ function inferHeaderCurationFromLegacyLooks(lookIds) {
12067
12399
  );
12068
12400
  const stylesByLayout = {};
12069
12401
  for (const layoutChoice of layoutChoices) {
12070
- const styleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
12071
- stylesByLayout[unbrandHeaderLayoutId(layoutChoice.id)] = nonEmptyHeaderStyleChoices(styleChoices, layoutChoice.id);
12402
+ const legacyStyleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
12403
+ const inferredStyleChoices = inferredHeaderStyleValuesForRecipes(
12404
+ layoutChoice.id,
12405
+ recipes
12406
+ ).map((styleId) => headerStyleChoice(styleId));
12407
+ stylesByLayout[unbrandHeaderLayoutId(layoutChoice.id)] = uniqueCompatibleHeaderStyleChoices(
12408
+ [...legacyStyleChoices, ...inferredStyleChoices],
12409
+ layoutChoice.id
12410
+ );
12072
12411
  }
12073
12412
  return {
12074
12413
  defaultHeaderSelection,
@@ -12488,10 +12827,10 @@ var curatedSiteStyles = [
12488
12827
  ]
12489
12828
  }),
12490
12829
  defineCuratedSiteStyle({
12491
- id: "site-style:soft-earth",
12830
+ id: SOFT_EARTH_SITE_STYLE_ID,
12492
12831
  name: "Soft Earth",
12493
12832
  description: "Warm, grounded, and editorial for yoga studios, retreats, and wellbeing communities.",
12494
- 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.",
12833
+ 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.",
12495
12834
  siteCreatorSelection: {
12496
12835
  kind: "site_creator_keyword_heuristic",
12497
12836
  priority: 45
@@ -12561,14 +12900,18 @@ var curatedSiteStyles = [
12561
12900
  paragraphSize: "default",
12562
12901
  headingSize: "editorial"
12563
12902
  }
12564
- }
12903
+ },
12904
+ accordions: softEarthAccordionSystem
12905
+ },
12906
+ defaultBlockVariants: {
12907
+ "block.faq": "question-columns"
12565
12908
  },
12566
12909
  recommendedAppearancePresetIds: [
12567
12910
  "hero-brand-scrim",
12568
- "intro-soft-earth-statement",
12569
- "feature-cards-soft-earth-offerings",
12570
- "testimonials-soft-earth-proof-band",
12571
- "faq-soft-earth-two-column",
12911
+ "intro-organic-statement",
12912
+ "feature-cards-raised-rule",
12913
+ "events-lined-panel",
12914
+ "testimonials-brand-background-quotes",
12572
12915
  "contact-form-panel"
12573
12916
  ],
12574
12917
  recommendedHeaderLookIds: [
@@ -12672,7 +13015,7 @@ var curatedSiteStyles = [
12672
13015
  "hero-brand-scrim-fixed-frame",
12673
13016
  "body-text-editorial-intro",
12674
13017
  "schedule-details-brand-depth",
12675
- "testimonials-accent-quote-proof",
13018
+ "testimonials-accent-quote-cards",
12676
13019
  "contact-form-brand-depth-card"
12677
13020
  ],
12678
13021
  recommendedHeaderLookIds: [
@@ -12767,6 +13110,7 @@ var themeV2RuntimeStyleFieldNames = [
12767
13110
  ];
12768
13111
  var themeV2BlockSpecificRawStyleFieldNames = [
12769
13112
  "_contentCardStyles",
13113
+ "_heroLayoutStyles",
12770
13114
  "_textCardStyles"
12771
13115
  ];
12772
13116
  var themeV2NormalEditorRawStyleFieldNames = [
@@ -12776,6 +13120,10 @@ var themeV2NormalEditorRawStyleFieldNames = [
12776
13120
  var themeV2NormalEditorRawStyleFieldNameSet = new Set(
12777
13121
  themeV2NormalEditorRawStyleFieldNames
12778
13122
  );
13123
+ var themeV2CompilerOwnedFieldNames = [
13124
+ ...themeV2RuntimeStyleFieldNames,
13125
+ ...themeV2BlockSpecificRawStyleFieldNames
13126
+ ];
12779
13127
 
12780
13128
  // ../theme-core/src/site-styles/designState.ts
12781
13129
  var themeV2DesignStateSchemaVersion = 1;
@@ -12790,6 +13138,16 @@ var heroLegibilityStrategySchema = z23.enum([
12790
13138
  "scrim-gradient",
12791
13139
  "solid-panel"
12792
13140
  ]);
13141
+ var heroCompositionIntentSchema = z23.enum([
13142
+ "center",
13143
+ "bottom-left"
13144
+ ]);
13145
+ var heroTypographyScaleIntentSchema = z23.enum([
13146
+ "quiet",
13147
+ "editorial",
13148
+ "display",
13149
+ "poster"
13150
+ ]);
12793
13151
  var sectionHeightIntentSchema = z23.enum([
12794
13152
  "default",
12795
13153
  "banner",
@@ -12825,6 +13183,7 @@ var imageSurfaceTreatmentSchema = z23.discriminatedUnion("kind", [
12825
13183
  ]);
12826
13184
  var testimonialCardTreatmentSchema = z23.enum(["default", "accent-quote"]);
12827
13185
  var tileTreatmentSchema = z23.enum(tileTreatmentValues);
13186
+ var eventListTreatmentSchema = z23.enum(eventListTreatmentValues);
12828
13187
  var eyebrowTreatmentSchema = z23.enum(eyebrowTreatmentValues);
12829
13188
  function uniqueNonEmpty(values) {
12830
13189
  const uniqueValues = [...new Set(values)];
@@ -12866,10 +13225,13 @@ var blockDesignPlanSchema = z23.object({
12866
13225
  emphasis: z23.enum(userDesignOptionCatalog.emphases),
12867
13226
  sectionHeight: sectionHeightIntentSchema.optional(),
12868
13227
  heroLegibility: heroLegibilityStrategySchema.optional(),
13228
+ heroComposition: heroCompositionIntentSchema.optional(),
13229
+ heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
12869
13230
  imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
12870
13231
  imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
12871
13232
  testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
12872
13233
  tileTreatment: tileTreatmentSchema.optional(),
13234
+ eventListTreatment: eventListTreatmentSchema.optional(),
12873
13235
  eyebrowTreatment: eyebrowTreatmentSchema.optional()
12874
13236
  }).strict();
12875
13237
  var styleAuthoritySchema = z23.discriminatedUnion("kind", [
@@ -14269,6 +14631,7 @@ function styledSection(config) {
14269
14631
  renderBackgroundImage = true,
14270
14632
  backgroundImageLoading,
14271
14633
  backgroundImageFetchPriority,
14634
+ allowOverflow = false,
14272
14635
  fullWidthPath
14273
14636
  } = config;
14274
14637
  const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
@@ -14303,7 +14666,7 @@ function styledSection(config) {
14303
14666
  // No fallback needed - transform handles all cases via defaultSpacing
14304
14667
  }
14305
14668
  },
14306
- allowOverflow: {
14669
+ allowOverflow: allowOverflow ? true : {
14307
14670
  $bind: {
14308
14671
  from: `${bindFrom}.background`,
14309
14672
  transforms: [{ id: "background.resolveAllowOverflow" }],
@@ -14998,6 +15361,14 @@ var tileTreatmentSet = new Set(tileTreatmentValues);
14998
15361
  function isTileTreatment(value) {
14999
15362
  return typeof value === "string" && tileTreatmentSet.has(value);
15000
15363
  }
15364
+ var eventListTreatmentClassMap = {
15365
+ plain: "",
15366
+ "lined-panel": "rb-event-list-treatment-lined-panel"
15367
+ };
15368
+ var eventListTreatmentSet = new Set(eventListTreatmentValues);
15369
+ function isEventListTreatment(value) {
15370
+ return typeof value === "string" && eventListTreatmentSet.has(value);
15371
+ }
15001
15372
  var sectionClassNameTransform = {
15002
15373
  id: "sectionStyles.resolveClassName",
15003
15374
  kind: "string",
@@ -15065,6 +15436,17 @@ var sectionClassNameTransform = {
15065
15436
  `[sectionStyles] Invalid tileTreatment value in _sectionStyles: "${tileTreatment}". Expected one of: ${tileTreatmentValues.join(", ")}.`
15066
15437
  );
15067
15438
  }
15439
+ const eventListTreatment = input?.eventListTreatment;
15440
+ if (isEventListTreatment(eventListTreatment)) {
15441
+ const eventListTreatmentClass = eventListTreatmentClassMap[eventListTreatment];
15442
+ if (eventListTreatmentClass) {
15443
+ classes.push(eventListTreatmentClass);
15444
+ }
15445
+ } else if (typeof eventListTreatment === "string" && process.env.NODE_ENV !== "production") {
15446
+ console.warn(
15447
+ `[sectionStyles] Invalid eventListTreatment value in _sectionStyles: "${eventListTreatment}". Expected one of: ${eventListTreatmentValues.join(", ")}.`
15448
+ );
15449
+ }
15068
15450
  if (hasFixedFrameBackgroundMotion(input)) {
15069
15451
  classes.push(fixedFrameScopeClass);
15070
15452
  }
@@ -15500,6 +15882,35 @@ function sectionState(opts) {
15500
15882
  );
15501
15883
  }
15502
15884
 
15885
+ // ../blocks/src/system/node/fragments/headingDecoration.ts
15886
+ var defaultBindFrom = "_sectionStyles.headingDecoration";
15887
+ function headingDecoration({
15888
+ bindFrom = defaultBindFrom,
15889
+ family,
15890
+ placement,
15891
+ className
15892
+ }) {
15893
+ return el(
15894
+ "div",
15895
+ {
15896
+ "aria-hidden": "true",
15897
+ className: {
15898
+ $bind: {
15899
+ from: bindFrom,
15900
+ transforms: [
15901
+ {
15902
+ id: "ui.headingDecorationClassName",
15903
+ options: { baseClass: className, family }
15904
+ }
15905
+ ]
15906
+ }
15907
+ }
15908
+ },
15909
+ null,
15910
+ when(`${bindFrom}.placement`, { equals: placement })
15911
+ );
15912
+ }
15913
+
15503
15914
  // ../blocks/src/system/fragments/types.ts
15504
15915
  import { z as z27 } from "zod";
15505
15916
  var FRAGMENT_ID_PATTERN = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/i;
@@ -16278,6 +16689,10 @@ var testimonialsHeadingFragment = defineFragment({
16278
16689
  when("content.heading"),
16279
16690
  bind("content.heading")
16280
16691
  ),
16692
+ headingDecoration({
16693
+ family: "short-center-rule",
16694
+ placement: "under-centered-heading"
16695
+ }),
16281
16696
  text(
16282
16697
  {
16283
16698
  as: "p",
@@ -16949,6 +17364,41 @@ var faqHeadingFragment = defineFragment({
16949
17364
  });
16950
17365
 
16951
17366
  // ../blocks/src/system/fragments/library/faqAccordion.ts
17367
+ function createFaqAccordionLayout(options = {}) {
17368
+ return accordionList({
17369
+ collection: "content.items",
17370
+ itemName: "faqItem",
17371
+ indexName: "faqIndex",
17372
+ accordionProps: {
17373
+ className: options.rootClassName ?? "accordion-root",
17374
+ type: "single",
17375
+ collapsible: true
17376
+ },
17377
+ itemProps: {
17378
+ className: {
17379
+ $bind: {
17380
+ from: "content._cardStyles",
17381
+ transforms: [
17382
+ {
17383
+ id: "boxStyles.all",
17384
+ options: {
17385
+ axis: "all",
17386
+ includeSpacing: false,
17387
+ baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden"
17388
+ }
17389
+ }
17390
+ ]
17391
+ },
17392
+ fallback: "rb-faq-item"
17393
+ },
17394
+ iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
17395
+ // Legacy theme accordion style
17396
+ iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
17397
+ },
17398
+ triggerFrom: "faqItem.question",
17399
+ contentFrom: "faqItem.answer"
17400
+ });
17401
+ }
16952
17402
  var faqAccordionFragment = defineFragment({
16953
17403
  id: "faqAccordion",
16954
17404
  title: "FAQ Accordion",
@@ -16982,40 +17432,7 @@ var faqAccordionFragment = defineFragment({
16982
17432
  }
16983
17433
  }
16984
17434
  ],
16985
- layout: accordionList({
16986
- collection: "content.items",
16987
- itemName: "faqItem",
16988
- indexName: "faqIndex",
16989
- accordionProps: {
16990
- className: "accordion-root",
16991
- // CSS-first: all styling handled by theme CSS
16992
- type: "single",
16993
- collapsible: true
16994
- },
16995
- itemProps: {
16996
- className: {
16997
- $bind: {
16998
- from: "content._cardStyles",
16999
- transforms: [
17000
- {
17001
- id: "boxStyles.all",
17002
- options: {
17003
- axis: "all",
17004
- includeSpacing: false,
17005
- baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden rb-border"
17006
- }
17007
- }
17008
- ]
17009
- },
17010
- fallback: "rb-faq-item"
17011
- },
17012
- iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
17013
- // Legacy theme accordion style
17014
- iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
17015
- },
17016
- triggerFrom: "faqItem.question",
17017
- contentFrom: "faqItem.answer"
17018
- })
17435
+ layout: createFaqAccordionLayout()
17019
17436
  });
17020
17437
 
17021
17438
  // ../blocks/src/system/fragments/library/card.ts
@@ -18068,6 +18485,7 @@ var microLayout = styledSection({
18068
18485
  function splitLayoutWith(children) {
18069
18486
  return styledSection({
18070
18487
  children: styledContainer({
18488
+ baseClassName: "rb-relative rb-isolate rb-overflow-visible",
18071
18489
  children: {
18072
18490
  type: "grid",
18073
18491
  props: {
@@ -18092,6 +18510,7 @@ function splitLayoutWith(children) {
18092
18510
  // The split variants render the image as a real grid column, so suppress
18093
18511
  // the default absolute background image layer while keeping color/overlay.
18094
18512
  renderBackgroundImage: false,
18513
+ allowOverflow: true,
18095
18514
  baseClass: ""
18096
18515
  });
18097
18516
  }
@@ -18245,6 +18664,21 @@ function introHeading(className) {
18245
18664
  bind("content.title")
18246
18665
  );
18247
18666
  }
18667
+ function introHeadingGroup(className) {
18668
+ return stack(
18669
+ {
18670
+ gap: "sm",
18671
+ className: "rb-intro-heading-group"
18672
+ },
18673
+ [
18674
+ introHeading(className),
18675
+ headingDecoration({
18676
+ family: "organic-squiggle",
18677
+ placement: "after-heading"
18678
+ })
18679
+ ]
18680
+ );
18681
+ }
18248
18682
  function introBody(className = "rb-prose rb-max-w-none") {
18249
18683
  return richText({ className }, bind("content.body"));
18250
18684
  }
@@ -18263,6 +18697,10 @@ function introCopyStack(options = {}) {
18263
18697
  },
18264
18698
  [
18265
18699
  introHeading(options.headingClassName ?? "rb-intro-title"),
18700
+ headingDecoration({
18701
+ family: "organic-squiggle",
18702
+ placement: "after-heading"
18703
+ }),
18266
18704
  introBody(options.bodyClassName),
18267
18705
  introCtas(options.ctaJustify)
18268
18706
  ]
@@ -18302,7 +18740,7 @@ var statementCopyLayout = styledSection({
18302
18740
  className: "rb-intro rb-intro-statement rb-grid rb-grid-cols-1 rb-gap-8 rb-md-grid-cols-2 rb-md-items-start"
18303
18741
  },
18304
18742
  [
18305
- introHeading("rb-intro-title rb-max-w-xl"),
18743
+ introHeadingGroup("rb-intro-title rb-max-w-xl"),
18306
18744
  stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
18307
18745
  introBody(),
18308
18746
  introCtas("start")
@@ -18323,7 +18761,7 @@ var statementMediaLayout = styledSection({
18323
18761
  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"
18324
18762
  },
18325
18763
  [
18326
- introHeading("rb-intro-title rb-max-w-xl"),
18764
+ introHeadingGroup("rb-intro-title rb-max-w-xl"),
18327
18765
  stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
18328
18766
  introBody(),
18329
18767
  introCtas("start")
@@ -19325,6 +19763,9 @@ function isNodeDefinitionArray(layout) {
19325
19763
  }
19326
19764
  var headingLayout = fragmentLayoutNode(faqHeadingFragment.layout);
19327
19765
  var accordionLayout = fragmentLayoutNode(faqAccordionFragment.layout);
19766
+ var questionColumnsAccordionLayout = createFaqAccordionLayout({
19767
+ rootClassName: "accordion-root rb-faq-question-columns rb-grid rb-grid-cols-1 rb-gap-4 rb-lg-grid-cols-2"
19768
+ });
19328
19769
  var defaultLayout = styledSection({
19329
19770
  children: styledContainer({
19330
19771
  baseClassName: "rb-relative rb-isolate",
@@ -19338,11 +19779,24 @@ var twoColumnLayout = styledSection({
19338
19779
  children: el(
19339
19780
  "div",
19340
19781
  {
19341
- className: "rb-faq-two-column rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
19782
+ className: "rb-faq-split-heading rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
19342
19783
  },
19343
19784
  [
19344
- el("div", { className: "rb-faq-two-column-heading" }, [headingLayout]),
19345
- el("div", { className: "rb-faq-two-column-accordion" }, [accordionLayout])
19785
+ el("div", { className: "rb-faq-split-heading-copy" }, [headingLayout]),
19786
+ el("div", { className: "rb-faq-split-heading-accordion" }, [accordionLayout])
19787
+ ]
19788
+ )
19789
+ }),
19790
+ baseClass: ""
19791
+ });
19792
+ var questionColumnsLayout = styledSection({
19793
+ children: styledContainer({
19794
+ baseClassName: "rb-relative rb-isolate",
19795
+ children: stack(
19796
+ { gap: "xl", className: "rb-w-full" },
19797
+ [
19798
+ headingLayout,
19799
+ questionColumnsAccordionLayout
19346
19800
  ]
19347
19801
  )
19348
19802
  }),
@@ -19367,7 +19821,8 @@ var faqManifest = createBlockManifest({
19367
19821
  layout: defaultLayout,
19368
19822
  variants: {
19369
19823
  default: defaultLayout,
19370
- "two-column": twoColumnLayout
19824
+ "two-column": twoColumnLayout,
19825
+ "question-columns": questionColumnsLayout
19371
19826
  },
19372
19827
  defaultVariant: "default",
19373
19828
  variantOptions: {
@@ -19378,6 +19833,10 @@ var faqManifest = createBlockManifest({
19378
19833
  "two-column": {
19379
19834
  label: "Two column",
19380
19835
  description: "A left heading column with FAQ items on the right."
19836
+ },
19837
+ "question-columns": {
19838
+ label: "Question columns",
19839
+ description: "A full-width heading above FAQ items split into two columns."
19381
19840
  }
19382
19841
  },
19383
19842
  description: "Accordion of frequently asked questions and answers.",
@@ -19499,9 +19958,21 @@ var eyebrowTreatmentClassMap = {
19499
19958
  "accent-pill-bounce": "rb-eyebrow-treatment-pill rb-eyebrow-treatment-accent rb-eyebrow-treatment-pill-bounce"
19500
19959
  };
19501
19960
  var eyebrowTreatmentSet = new Set(eyebrowTreatmentValues);
19961
+ var headingDecorationFamilySet = new Set(visibleHeadingDecorationFamilyValues);
19962
+ var headingDecorationPlacementSet = new Set(visibleHeadingDecorationPlacementValues);
19963
+ var headingDecorationColorTokenSet = new Set(headingDecorationColorTokenValues);
19502
19964
  function isEyebrowTreatment(value) {
19503
19965
  return typeof value === "string" && eyebrowTreatmentSet.has(value);
19504
19966
  }
19967
+ function isHeadingDecorationFamily(value) {
19968
+ return typeof value === "string" && headingDecorationFamilySet.has(value);
19969
+ }
19970
+ function isHeadingDecorationPlacement(value) {
19971
+ return typeof value === "string" && headingDecorationPlacementSet.has(value);
19972
+ }
19973
+ function isHeadingDecorationColorToken(value) {
19974
+ return typeof value === "string" && headingDecorationColorTokenSet.has(value);
19975
+ }
19505
19976
  var imageGalleryCornerClassMap = {
19506
19977
  none: "",
19507
19978
  sm: "rb-rounded-sm",
@@ -19605,6 +20076,10 @@ var sectionStateToneTransform = {
19605
20076
  summary: "Map semantic section-state kind to feedback tone",
19606
20077
  run: (value) => sectionStateToneFromUnknown(value)
19607
20078
  };
20079
+ var heroTitleLengthThresholds = {
20080
+ medium: { maxCharacters: 42, maxWords: 6 },
20081
+ long: { maxCharacters: 78, maxWords: 11 }
20082
+ };
19608
20083
  function isPlainObject(value) {
19609
20084
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
19610
20085
  }
@@ -19612,6 +20087,14 @@ function readString(obj, key) {
19612
20087
  const v = obj[key];
19613
20088
  return typeof v === "string" ? v : void 0;
19614
20089
  }
20090
+ function resolveGeneratedHeroLayoutStyles(content) {
20091
+ const raw = content._heroLayoutStyles;
20092
+ return isPlainObject(raw) ? raw : null;
20093
+ }
20094
+ function readHeroLayoutString(content, generatedKey, fallbackKey = generatedKey) {
20095
+ const generated = resolveGeneratedHeroLayoutStyles(content);
20096
+ return generated && typeof generated[generatedKey] === "string" ? generated[generatedKey] : readString(content, fallbackKey);
20097
+ }
19615
20098
  function resolveHeroVariant(content) {
19616
20099
  const variant = readString(content, "variant");
19617
20100
  if (variant && variant.trim()) return variant.trim();
@@ -19620,14 +20103,14 @@ function resolveHeroVariant(content) {
19620
20103
  return null;
19621
20104
  }
19622
20105
  function resolveHeroContentAlignment(content) {
19623
- const raw = readString(content, "contentAlignment");
20106
+ const raw = readHeroLayoutString(content, "contentAlignment");
19624
20107
  if (raw === "left" || raw === "center" || raw === "right") return raw;
19625
20108
  const variant = resolveHeroVariant(content);
19626
20109
  if (variant === "split" || variant === "splitReverse") return "left";
19627
20110
  return "center";
19628
20111
  }
19629
20112
  function resolveHeroVerticalAlignment(content) {
19630
- const raw = readString(content, "verticalAlignment");
20113
+ const raw = readHeroLayoutString(content, "verticalAlignment");
19631
20114
  if (raw === "top" || raw === "center" || raw === "bottom") return raw;
19632
20115
  const sectionStyles = asPartialObject(content._sectionStyles);
19633
20116
  const minHeight = sectionStyles?.minHeight;
@@ -19637,11 +20120,29 @@ function resolveHeroVerticalAlignment(content) {
19637
20120
  return "top";
19638
20121
  }
19639
20122
  function resolveHeroContentMaxWidth(content) {
19640
- const raw = readString(content, "contentMaxWidth");
20123
+ const raw = readHeroLayoutString(content, "contentMaxWidth");
19641
20124
  if (raw === "default" || raw === "narrow" || raw === "medium" || raw === "wide")
19642
20125
  return raw;
19643
20126
  return "default";
19644
20127
  }
20128
+ function resolveHeroTypographyScale(content) {
20129
+ const raw = readHeroLayoutString(
20130
+ content,
20131
+ "typographyScale",
20132
+ "heroTypographyScale"
20133
+ );
20134
+ if (raw === "quiet" || raw === "editorial" || raw === "display" || raw === "poster") {
20135
+ return raw;
20136
+ }
20137
+ return null;
20138
+ }
20139
+ function resolveHeroTitleLength(content) {
20140
+ const headline = readString(content, "headline")?.trim() ?? "";
20141
+ const wordCount = headline.length === 0 ? 0 : headline.split(/\s+/).length;
20142
+ if (headline.length > heroTitleLengthThresholds.long.maxCharacters || wordCount > heroTitleLengthThresholds.long.maxWords) return "long";
20143
+ if (headline.length > heroTitleLengthThresholds.medium.maxCharacters || wordCount > heroTitleLengthThresholds.medium.maxWords) return "medium";
20144
+ return "short";
20145
+ }
19645
20146
  var heroContentWrapperClassSchema = z33.object({
19646
20147
  base: z33.string().optional()
19647
20148
  });
@@ -19654,6 +20155,8 @@ var heroContentWrapperClassTransform = {
19654
20155
  const content = isPlainObject(value) ? value : isPlainObject(context.data) ? context.data : {};
19655
20156
  const alignment = resolveHeroContentAlignment(content);
19656
20157
  const maxWidth = resolveHeroContentMaxWidth(content);
20158
+ const typographyScale = resolveHeroTypographyScale(content);
20159
+ const titleLength = resolveHeroTitleLength(content);
19657
20160
  const textAlignClass = alignment === "center" ? "rb-text-center" : alignment === "right" ? "rb-text-right" : "rb-text-left";
19658
20161
  const maxWidthClass = maxWidth === "narrow" ? "rb-max-w-2xl" : maxWidth === "medium" ? "rb-max-w-3xl" : maxWidth === "wide" ? "rb-max-w-5xl" : "";
19659
20162
  const positionClass = alignment === "center" ? "rb-mx-auto" : alignment === "right" ? "rb-ml-auto" : "";
@@ -19661,7 +20164,9 @@ var heroContentWrapperClassTransform = {
19661
20164
  options?.base,
19662
20165
  textAlignClass,
19663
20166
  maxWidthClass,
19664
- positionClass
20167
+ positionClass,
20168
+ typographyScale ? `rb-hero-typography-${typographyScale}` : "",
20169
+ `rb-hero-title-${titleLength}`
19665
20170
  ]);
19666
20171
  }
19667
20172
  };
@@ -19961,11 +20466,67 @@ var uiTransforms = [
19961
20466
  const treatment = isEyebrowTreatment(value) ? value : "plain";
19962
20467
  return joinClasses3([baseClass, eyebrowTreatmentClassMap[treatment]]);
19963
20468
  }
20469
+ },
20470
+ {
20471
+ id: "ui.headingDecorationClassName",
20472
+ kind: "string",
20473
+ summary: "Apply constrained Theme V2 heading decoration classes",
20474
+ run: (value, options) => {
20475
+ const baseClass = typeof options?.baseClass === "string" && options.baseClass.trim() ? options.baseClass : "rb-heading-decoration";
20476
+ const decoration = asPartialObject(value);
20477
+ const family = isHeadingDecorationFamily(decoration?.family) ? decoration.family : null;
20478
+ const allowedFamily = isHeadingDecorationFamily(options?.family) ? options.family : null;
20479
+ const placement = isHeadingDecorationPlacement(decoration?.placement) ? decoration.placement : null;
20480
+ const colorToken = isHeadingDecorationColorToken(decoration?.colorToken) ? decoration.colorToken : "primary";
20481
+ if (!family || !placement) return "rb-hidden";
20482
+ if (allowedFamily && family !== allowedFamily) return "rb-hidden";
20483
+ return joinClasses3([
20484
+ baseClass,
20485
+ `rb-heading-decoration-${family}`,
20486
+ `rb-heading-decoration-placement-${placement}`,
20487
+ `rb-heading-decoration-color-${colorToken}`
20488
+ ]);
20489
+ }
19964
20490
  }
19965
20491
  ];
19966
20492
 
19967
20493
  // ../blocks/src/system/transforms/registry/layout.ts
19968
20494
  import { z as z34 } from "zod";
20495
+
20496
+ // ../theme-core/src/siteChromePlacement.ts
20497
+ var HEADER_POSITIONINGS = ["static", "sticky", "fixed"];
20498
+ function parseHeaderPositioning(value) {
20499
+ return isHeaderPositioning(value) ? value : "static";
20500
+ }
20501
+ function isHeaderPositioning(value) {
20502
+ return typeof value === "string" && HEADER_POSITIONINGS.includes(value);
20503
+ }
20504
+ function planSiteChromePlacement(positioning) {
20505
+ switch (positioning) {
20506
+ case "static":
20507
+ return {
20508
+ kind: "static",
20509
+ headerRootClassName: null,
20510
+ standaloneShellClassName: null
20511
+ };
20512
+ case "sticky":
20513
+ return {
20514
+ kind: "sticky",
20515
+ headerRootClassName: "rb-sticky rb-top-0",
20516
+ standaloneShellClassName: "sticky top-0 z-40 w-full"
20517
+ };
20518
+ case "fixed":
20519
+ return {
20520
+ kind: "fixed",
20521
+ headerRootClassName: "rb-fixed rb-top-0 rb-left-0 rb-right-0",
20522
+ standaloneShellClassName: "fixed left-0 right-0 top-0 z-40 w-full"
20523
+ };
20524
+ default:
20525
+ return assertNever(positioning);
20526
+ }
20527
+ }
20528
+
20529
+ // ../blocks/src/system/transforms/registry/layout.ts
19969
20530
  var joinClasses4 = (parts) => parts.filter(
19970
20531
  (part) => typeof part === "string" && part.trim().length > 0
19971
20532
  ).join(" ").replace(/\s+/g, " ").trim();
@@ -20081,7 +20642,8 @@ var headerRootClassTransform = {
20081
20642
  ...options
20082
20643
  };
20083
20644
  const content = asPartialObject(value) ?? {};
20084
- const positioning = typeof content.positioning === "string" ? content.positioning : "static";
20645
+ const positioning = parseHeaderPositioning(content.positioning);
20646
+ const placement = planSiteChromePlacement(positioning);
20085
20647
  const shrinkOnScroll = Boolean(content.shrinkOnScroll);
20086
20648
  const header = asPartialObject(value);
20087
20649
  const visuals = resolveHeaderVisualStyles(header, context.theme);
@@ -20093,14 +20655,14 @@ var headerRootClassTransform = {
20093
20655
  if (config.blur) classes.push(config.blur);
20094
20656
  if (config.blurSupport) classes.push(config.blurSupport);
20095
20657
  }
20096
- if (positioning === "sticky") {
20658
+ if (placement.kind === "sticky") {
20097
20659
  classes.push(
20098
20660
  visuals.isTransparent ? config.stickyTransparent : config.sticky
20099
20661
  );
20100
- } else if (positioning === "fixed") {
20662
+ } else if (placement.kind === "fixed") {
20101
20663
  classes.push(config.fixed);
20102
20664
  }
20103
- if (shrinkOnScroll && (positioning === "sticky" || positioning === "fixed")) {
20665
+ if (shrinkOnScroll && placement.kind !== "static") {
20104
20666
  classes.push(config.shrink);
20105
20667
  }
20106
20668
  const VALID_VARIANTS = [
@@ -20635,6 +21197,10 @@ function desktopOnlyDisplay(display) {
20635
21197
  return `rb-hidden ${LARGE_DISPLAY_CLASSES[display]}`;
20636
21198
  }
20637
21199
 
21200
+ // ../theme-core/src/siteChromeOverlayClearance.ts
21201
+ var SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
21202
+ var SITE_CHROME_VISIBLE_HEADER_SELECTOR = `[${SITE_CHROME_VISIBLE_HEADER_ATTR}="true"]`;
21203
+
20638
21204
  // ../blocks/src/system/blocks/site-header.ts
20639
21205
  var logoRow = link(
20640
21206
  {
@@ -20907,6 +21473,7 @@ var transparentLayout = inline(
20907
21473
  );
20908
21474
  var floatingLayout = inline(
20909
21475
  {
21476
+ [SITE_CHROME_VISIBLE_HEADER_ATTR]: "true",
20910
21477
  className: bindProp("$root.theme.header.maxWidth", {
20911
21478
  transforms: pipe(
20912
21479
  tx("layout.maxWidthClass", {
@@ -21852,6 +22419,10 @@ var sectionHeading = stack(
21852
22419
  when("content.title"),
21853
22420
  bind("content.title")
21854
22421
  ),
22422
+ headingDecoration({
22423
+ family: "short-center-rule",
22424
+ placement: "under-centered-heading"
22425
+ }),
21855
22426
  richText(
21856
22427
  {
21857
22428
  className: "rb-feature-cards-description rb-prose rb-mx-auto rb-max-w-none",
@@ -24275,7 +24846,7 @@ var COLUMN_CLASSES = {
24275
24846
  };
24276
24847
  function getContainerClass(layout, columns) {
24277
24848
  if (layout === "compact") {
24278
- return "event-listing-compact-container rb-flex rb-flex-col rb-gap-2";
24849
+ return "event-listing-compact-container rb-flex rb-flex-col";
24279
24850
  }
24280
24851
  if (layout === "stack") {
24281
24852
  return "rb-flex rb-flex-col rb-gap-6";
@@ -27103,6 +27674,7 @@ import { z as z53 } from "zod";
27103
27674
  var storedProductCartItemSchema = z53.object({
27104
27675
  kind: z53.literal("product"),
27105
27676
  productId: z53.string().min(1),
27677
+ productCategoryId: z53.string().min(1).optional().nullable(),
27106
27678
  variantId: z53.string().min(1).optional().nullable(),
27107
27679
  title: z53.string().min(1),
27108
27680
  variantTitle: z53.string().optional().nullable(),
@@ -29607,6 +30179,10 @@ var scheduleTileTreatments = [
29607
30179
  "quiet",
29608
30180
  "brand-depth"
29609
30181
  ];
30182
+ var eventListTreatments = [
30183
+ "plain",
30184
+ "lined-panel"
30185
+ ];
29610
30186
  function scheduleDetailsCapable() {
29611
30187
  return declareBlockDesignCapability({
29612
30188
  sectionSurfaces: "supported",
@@ -29615,6 +30191,14 @@ function scheduleDetailsCapable() {
29615
30191
  tileTreatments: scheduleTileTreatments
29616
30192
  });
29617
30193
  }
30194
+ function eventListCapable() {
30195
+ return declareBlockDesignCapability({
30196
+ sectionSurfaces: "supported",
30197
+ contentFrames: ["plain"],
30198
+ itemSurfaces: "unsupported",
30199
+ eventListTreatments
30200
+ });
30201
+ }
29618
30202
  function defaultBoundaryBias(visualWeight) {
29619
30203
  return visualWeight === "featured" || visualWeight === "immersive" ? "clear" : "soft";
29620
30204
  }
@@ -29834,7 +30418,8 @@ var systemBlockDefinitionsRaw = [
29834
30418
  flow: bodyFlow,
29835
30419
  layoutProfiles: [
29836
30420
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
29837
- layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" })
30421
+ layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
30422
+ layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
29838
30423
  ]
29839
30424
  })),
29840
30425
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -29928,11 +30513,11 @@ var systemBlockDefinitionsRaw = [
29928
30513
  flow: offeringsFlow,
29929
30514
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "centered", weight: "featured" })]
29930
30515
  })),
29931
- withDesignCapability("block.event-listing", eventListingBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
30516
+ withDesignCapability("block.event-listing", eventListingBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
29932
30517
  flow: offeringsFlow,
29933
30518
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "stack", weight: "standard" })]
29934
30519
  })),
29935
- withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
30520
+ withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
29936
30521
  flow: offeringsFlow,
29937
30522
  layoutProfiles: [
29938
30523
  layoutProfile({ variantKey: "combined", family: "grid", weight: "standard" }),
@@ -31029,6 +31614,15 @@ ${root} {
31029
31614
  `;
31030
31615
  }
31031
31616
 
31617
+ // ../theme-core/src/runtime/themeCssVarNames.ts
31618
+ var THEME_RADIUS_CSS_VARS = {
31619
+ block: "--rb-block-radius",
31620
+ button: "--rb-button-radius",
31621
+ input: "--rb-input-radius",
31622
+ legacyCard: "--radius-card",
31623
+ legacyControl: "--radius-control"
31624
+ };
31625
+
31032
31626
  // ../theme-core/src/blocks/vars/customer-portal.ts
31033
31627
  function generateCustomerPortalVars({
31034
31628
  themeId
@@ -31042,6 +31636,11 @@ ${root} {
31042
31636
  --cp-muted: rgb(var(--tb-mutedText));
31043
31637
  --cp-border: rgb(var(--tb-border));
31044
31638
  --cp-shadow: var(--shadow-elev);
31639
+ --cp-primary: rgb(var(--tb-primary));
31640
+ --cp-primary-hover: rgb(var(--tb-primary-700, var(--tb-primary)));
31641
+ --cp-error: rgb(var(--tb-destructive));
31642
+ --cp-card-radius: var(${THEME_RADIUS_CSS_VARS.block}, var(${THEME_RADIUS_CSS_VARS.legacyCard}, 0.75rem));
31643
+ --cp-control-radius: var(${THEME_RADIUS_CSS_VARS.input}, var(${THEME_RADIUS_CSS_VARS.legacyControl}, 0.5rem));
31045
31644
 
31046
31645
  /* Shared tab bar (underline style) */
31047
31646
  --rb-tab-border-width: 1px;
@@ -31092,7 +31691,7 @@ ${root} {
31092
31691
  --rb-modal-bg: var(--cp-card-bg);
31093
31692
  --rb-modal-border: var(--cp-card-border);
31094
31693
  --rb-modal-shadow: var(--shadow-lg, var(--shadow-elev));
31095
- --rb-modal-radius: var(--radius-card);
31694
+ --rb-modal-radius: var(--cp-card-radius);
31096
31695
  --rb-modal-max-width: 560px;
31097
31696
 
31098
31697
  /* Header */
@@ -32473,6 +33072,9 @@ import { jsx as jsx5 } from "react/jsx-runtime";
32473
33072
  import * as React from "react";
32474
33073
  import { Fragment, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
32475
33074
 
33075
+ // ../theme-core/src/fonts/uploadFormat.ts
33076
+ var MAX_FONT_UPLOAD_BYTES = 5 * 1024 * 1024;
33077
+
32476
33078
  // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
32477
33079
  import { z as z60 } from "zod";
32478
33080
  var themeBridgeConfigSchema = z60.object({
@@ -33253,6 +33855,7 @@ var COURSE_ENROLLMENT_REFUND_FAILED_CODES = [
33253
33855
  ];
33254
33856
 
33255
33857
  // ../api/src/bookingVerticals.ts
33858
+ import { z as z63 } from "zod";
33256
33859
  var VERTICAL_IDS = [
33257
33860
  "yoga_wellness",
33258
33861
  "fitness_pt",
@@ -33331,6 +33934,132 @@ var VERTICAL_ID_SET = new Set(VERTICAL_IDS);
33331
33934
  var VERTICAL_PRESET_ID_SET = new Set(
33332
33935
  VERTICAL_BOOKING_PRESETS.map((presetDefinition) => presetDefinition.id)
33333
33936
  );
33937
+ function parseVerticalId(value) {
33938
+ return typeof value === "string" && VERTICAL_ID_SET.has(value) ? value : null;
33939
+ }
33940
+ function parseVerticalPresetId(value) {
33941
+ return typeof value === "string" && VERTICAL_PRESET_ID_SET.has(value) ? value : null;
33942
+ }
33943
+ function getVerticalPresetDefinition(presetId) {
33944
+ const definition = VERTICAL_BOOKING_PRESETS.find((presetDefinition) => presetDefinition.id === presetId);
33945
+ if (!definition) {
33946
+ throw new Error(`Unhandled vertical preset id: ${presetId}`);
33947
+ }
33948
+ return definition;
33949
+ }
33950
+ function toNonEmptyVerticalPresetIds(presetIds) {
33951
+ const firstPresetId = presetIds[0];
33952
+ return firstPresetId ? [firstPresetId, ...presetIds.slice(1)] : null;
33953
+ }
33954
+ function createConfiguredSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
33955
+ return {
33956
+ verticalId,
33957
+ selectedPresetIds
33958
+ };
33959
+ }
33960
+ function createSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
33961
+ const nonEmptyPresetIds = toNonEmptyVerticalPresetIds(selectedPresetIds);
33962
+ return nonEmptyPresetIds ? createConfiguredSiteVerticalBookingConfig(verticalId, nonEmptyPresetIds) : null;
33963
+ }
33964
+ function resolveSiteVerticalBookingConfig(rawConfig) {
33965
+ if (!rawConfig) {
33966
+ return { kind: "unconfigured", config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG };
33967
+ }
33968
+ const verticalId = parseVerticalId(rawConfig.verticalId);
33969
+ const rawPresetIds = Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : [];
33970
+ const selectedPresetIds = rawPresetIds.map(parseVerticalPresetId).filter((presetId) => Boolean(presetId));
33971
+ const config = {
33972
+ verticalId,
33973
+ selectedPresetIds
33974
+ };
33975
+ if (!verticalId && selectedPresetIds.length === 0) {
33976
+ return { kind: "unconfigured", config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG };
33977
+ }
33978
+ const issues = getSiteVerticalConfigIssues(rawConfig, config);
33979
+ if (issues.length > 0) {
33980
+ return { kind: "invalid", config, issues };
33981
+ }
33982
+ const configuredConfig = verticalId ? createSiteVerticalBookingConfig(verticalId, selectedPresetIds) : null;
33983
+ if (!configuredConfig) {
33984
+ return { kind: "invalid", config, issues: ["empty_selected_presets"] };
33985
+ }
33986
+ return {
33987
+ kind: "configured",
33988
+ config: configuredConfig,
33989
+ selectedPresets: configuredConfig.selectedPresetIds.map(getVerticalPresetDefinition)
33990
+ };
33991
+ }
33992
+ function getSiteVerticalConfigIssues(rawConfig, config) {
33993
+ const issues = /* @__PURE__ */ new Set();
33994
+ if (rawConfig.verticalId != null && !config.verticalId) {
33995
+ issues.add("unknown_vertical");
33996
+ }
33997
+ if (!config.verticalId && config.selectedPresetIds.length > 0) {
33998
+ issues.add("missing_vertical");
33999
+ }
34000
+ const rawPresetIds = Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : [];
34001
+ if (rawPresetIds.some((presetId) => parseVerticalPresetId(presetId) === null)) {
34002
+ issues.add("unknown_preset");
34003
+ }
34004
+ if (config.verticalId && config.selectedPresetIds.length === 0) {
34005
+ issues.add("empty_selected_presets");
34006
+ }
34007
+ const seenBehaviours = /* @__PURE__ */ new Set();
34008
+ for (const presetId of config.selectedPresetIds) {
34009
+ const presetDefinition = getVerticalPresetDefinition(presetId);
34010
+ if (config.verticalId && presetDefinition.verticalId !== config.verticalId) {
34011
+ issues.add("preset_vertical_mismatch");
34012
+ }
34013
+ if (presetDefinition.availability === "future") {
34014
+ issues.add("future_preset_selected");
34015
+ }
34016
+ if (seenBehaviours.has(presetDefinition.canonicalBehaviour)) {
34017
+ issues.add("duplicate_canonical_behaviour");
34018
+ }
34019
+ seenBehaviours.add(presetDefinition.canonicalBehaviour);
34020
+ }
34021
+ return [...issues];
34022
+ }
34023
+ var VerticalIdSchema = z63.string().trim().transform((value, ctx) => {
34024
+ const parsed = parseVerticalId(value);
34025
+ if (!parsed) {
34026
+ ctx.addIssue({
34027
+ code: z63.ZodIssueCode.custom,
34028
+ message: "Unknown booking vertical"
34029
+ });
34030
+ return z63.NEVER;
34031
+ }
34032
+ return parsed;
34033
+ });
34034
+ var VerticalPresetIdSchema = z63.string().trim().transform((value, ctx) => {
34035
+ const parsed = parseVerticalPresetId(value);
34036
+ if (!parsed) {
34037
+ ctx.addIssue({
34038
+ code: z63.ZodIssueCode.custom,
34039
+ message: "Unknown booking preset"
34040
+ });
34041
+ return z63.NEVER;
34042
+ }
34043
+ return parsed;
34044
+ });
34045
+ var BookingVerticalConfigSchema = z63.object({
34046
+ verticalId: VerticalIdSchema.nullable(),
34047
+ selectedPresetIds: z63.array(VerticalPresetIdSchema).max(20)
34048
+ }).transform((value, ctx) => {
34049
+ const resolved = resolveSiteVerticalBookingConfig(value);
34050
+ if (resolved.kind === "invalid") {
34051
+ ctx.addIssue({
34052
+ code: z63.ZodIssueCode.custom,
34053
+ message: `Invalid booking vertical config: ${resolved.issues.join(", ")}`
34054
+ });
34055
+ return z63.NEVER;
34056
+ }
34057
+ return resolved.config;
34058
+ });
34059
+ var DEFAULT_SITE_VERTICAL_BOOKING_CONFIG = {
34060
+ verticalId: null,
34061
+ selectedPresetIds: []
34062
+ };
33334
34063
  function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, description, availability = "onboarding") {
33335
34064
  return {
33336
34065
  id,
@@ -33350,51 +34079,51 @@ function isRecord3(value) {
33350
34079
  }
33351
34080
 
33352
34081
  // ../api/src/appointmentSetup.ts
33353
- import { z as z63 } from "zod";
34082
+ import { z as z64 } from "zod";
33354
34083
  var APPOINTMENT_SETUP_MAX_MINUTES = 1440;
33355
- var appointmentSetupRefSchema = z63.discriminatedUnion("kind", [
33356
- z63.object({ kind: z63.literal("existing"), id: z63.string().min(1) }),
33357
- z63.object({ kind: z63.literal("new"), draftId: z63.string().min(1) })
34084
+ var appointmentSetupRefSchema = z64.discriminatedUnion("kind", [
34085
+ z64.object({ kind: z64.literal("existing"), id: z64.string().min(1) }),
34086
+ z64.object({ kind: z64.literal("new"), draftId: z64.string().min(1) })
33358
34087
  ]);
33359
- var appointmentSetupVenueChoiceSchema = z63.discriminatedUnion("kind", [
33360
- z63.object({ kind: z63.literal("none") }),
33361
- z63.object({ kind: z63.literal("existing"), venueId: z63.string().min(1) }),
33362
- z63.object({
33363
- kind: z63.literal("create"),
33364
- draftId: z63.string().min(1),
33365
- title: z63.string().trim().min(1),
33366
- description: z63.string().nullable(),
33367
- timezone: z63.string().trim().min(1).nullable(),
33368
- addressJson: z63.record(z63.string(), z63.unknown()),
33369
- locationJson: z63.object({ lat: z63.number(), lng: z63.number() }).nullable()
34088
+ var appointmentSetupVenueChoiceSchema = z64.discriminatedUnion("kind", [
34089
+ z64.object({ kind: z64.literal("none") }),
34090
+ z64.object({ kind: z64.literal("existing"), venueId: z64.string().min(1) }),
34091
+ z64.object({
34092
+ kind: z64.literal("create"),
34093
+ draftId: z64.string().min(1),
34094
+ title: z64.string().trim().min(1),
34095
+ description: z64.string().nullable(),
34096
+ timezone: z64.string().trim().min(1).nullable(),
34097
+ addressJson: z64.record(z64.string(), z64.unknown()),
34098
+ locationJson: z64.object({ lat: z64.number(), lng: z64.number() }).nullable()
33370
34099
  })
33371
34100
  ]);
33372
- var appointmentSetupPaymentDraftSchema = z63.object({
33373
- priceType: z63.union([z63.literal("free"), z63.literal("paid")])
33374
- });
33375
- var appointmentSetupServiceAssignmentDraftSchema = z63.discriminatedUnion("kind", [
33376
- z63.object({ kind: z63.literal("all_practitioners") }),
33377
- z63.object({
33378
- kind: z63.literal("selected_practitioners"),
33379
- resourceRefs: z63.array(appointmentSetupRefSchema)
34101
+ var appointmentSetupPaymentDraftSchema = z64.object({
34102
+ priceType: z64.union([z64.literal("free"), z64.literal("paid")])
34103
+ });
34104
+ var appointmentSetupServiceAssignmentDraftSchema = z64.discriminatedUnion("kind", [
34105
+ z64.object({ kind: z64.literal("all_practitioners") }),
34106
+ z64.object({
34107
+ kind: z64.literal("selected_practitioners"),
34108
+ resourceRefs: z64.array(appointmentSetupRefSchema)
33380
34109
  })
33381
34110
  ]);
33382
- var appointmentSetupServiceDraftSchema = z63.object({
34111
+ var appointmentSetupServiceDraftSchema = z64.object({
33383
34112
  ref: appointmentSetupRefSchema,
33384
- title: z63.string().trim().min(1),
33385
- description: z63.string().nullable(),
33386
- durationMinutes: z63.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
33387
- prepMinutes: z63.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
33388
- cleanupMinutes: z63.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
33389
- priceAmount: z63.number().int().nonnegative().nullable(),
33390
- isActive: z63.boolean(),
33391
- locationType: z63.union([
33392
- z63.literal("virtual"),
33393
- z63.literal("in_person"),
33394
- z63.literal("hybrid")
34113
+ title: z64.string().trim().min(1),
34114
+ description: z64.string().nullable(),
34115
+ durationMinutes: z64.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
34116
+ prepMinutes: z64.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
34117
+ cleanupMinutes: z64.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
34118
+ priceAmount: z64.number().int().nonnegative().nullable(),
34119
+ isActive: z64.boolean(),
34120
+ locationType: z64.union([
34121
+ z64.literal("virtual"),
34122
+ z64.literal("in_person"),
34123
+ z64.literal("hybrid")
33395
34124
  ]),
33396
34125
  venue: appointmentSetupVenueChoiceSchema,
33397
- timezone: z63.string().trim().min(1).nullable(),
34126
+ timezone: z64.string().trim().min(1).nullable(),
33398
34127
  payment: appointmentSetupPaymentDraftSchema,
33399
34128
  assignment: appointmentSetupServiceAssignmentDraftSchema
33400
34129
  }).superRefine((service, ctx) => {
@@ -33413,49 +34142,49 @@ var appointmentSetupServiceDraftSchema = z63.object({
33413
34142
  });
33414
34143
  }
33415
34144
  });
33416
- var appointmentSetupPractitionerDraftSchema = z63.object({
34145
+ var appointmentSetupPractitionerDraftSchema = z64.object({
33417
34146
  ref: appointmentSetupRefSchema,
33418
- displayName: z63.string().trim().min(1),
33419
- bio: z63.string().nullable(),
33420
- timezone: z63.string().trim().min(1),
33421
- colorHex: z63.string().nullable()
33422
- });
33423
- var appointmentSetupWeeklyWindowDraftSchema = z63.object({
33424
- weekday: z63.number().int().min(0).max(6),
33425
- startTime: z63.string(),
33426
- endTime: z63.string()
33427
- });
33428
- var appointmentSetupStartTimePolicyDraftSchema = z63.discriminatedUnion("kind", [
33429
- z63.object({ kind: z63.literal("automatic_spacing") }),
33430
- z63.object({
33431
- kind: z63.literal("regular_interval"),
33432
- intervalMinutes: z63.union([
33433
- z63.literal(10),
33434
- z63.literal(15),
33435
- z63.literal(20),
33436
- z63.literal(30),
33437
- z63.literal(45),
33438
- z63.literal(60)
34147
+ displayName: z64.string().trim().min(1),
34148
+ bio: z64.string().nullable(),
34149
+ timezone: z64.string().trim().min(1),
34150
+ colorHex: z64.string().nullable()
34151
+ });
34152
+ var appointmentSetupWeeklyWindowDraftSchema = z64.object({
34153
+ weekday: z64.number().int().min(0).max(6),
34154
+ startTime: z64.string(),
34155
+ endTime: z64.string()
34156
+ });
34157
+ var appointmentSetupStartTimePolicyDraftSchema = z64.discriminatedUnion("kind", [
34158
+ z64.object({ kind: z64.literal("automatic_spacing") }),
34159
+ z64.object({
34160
+ kind: z64.literal("regular_interval"),
34161
+ intervalMinutes: z64.union([
34162
+ z64.literal(10),
34163
+ z64.literal(15),
34164
+ z64.literal(20),
34165
+ z64.literal(30),
34166
+ z64.literal(45),
34167
+ z64.literal(60)
33439
34168
  ])
33440
34169
  })
33441
34170
  ]);
33442
- var appointmentSetupAvailabilityDraftSchema = z63.object({
33443
- kind: z63.literal("weekly_windows"),
34171
+ var appointmentSetupAvailabilityDraftSchema = z64.object({
34172
+ kind: z64.literal("weekly_windows"),
33444
34173
  resourceRef: appointmentSetupRefSchema,
33445
34174
  serviceRef: appointmentSetupRefSchema.nullable(),
33446
- windows: z63.array(appointmentSetupWeeklyWindowDraftSchema),
34175
+ windows: z64.array(appointmentSetupWeeklyWindowDraftSchema),
33447
34176
  startTimePolicy: appointmentSetupStartTimePolicyDraftSchema.optional()
33448
34177
  });
33449
34178
  var APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
33450
34179
  var APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
33451
- var appointmentSetupBookingNoticeSchema = z63.object({
33452
- minLeadMinutes: z63.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
33453
- maxBookingNoticeMinutes: z63.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
33454
- });
33455
- var applyAppointmentSetupRequestSchema = z63.object({
33456
- services: z63.array(appointmentSetupServiceDraftSchema),
33457
- practitioners: z63.array(appointmentSetupPractitionerDraftSchema),
33458
- availability: z63.array(appointmentSetupAvailabilityDraftSchema),
34180
+ var appointmentSetupBookingNoticeSchema = z64.object({
34181
+ minLeadMinutes: z64.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
34182
+ maxBookingNoticeMinutes: z64.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
34183
+ });
34184
+ var applyAppointmentSetupRequestSchema = z64.object({
34185
+ services: z64.array(appointmentSetupServiceDraftSchema),
34186
+ practitioners: z64.array(appointmentSetupPractitionerDraftSchema),
34187
+ availability: z64.array(appointmentSetupAvailabilityDraftSchema),
33459
34188
  bookingNotice: appointmentSetupBookingNoticeSchema
33460
34189
  });
33461
34190
 
@@ -33488,24 +34217,24 @@ var STAFF_CANCELLATION_CONTEXT_CATEGORIES = [
33488
34217
  ];
33489
34218
 
33490
34219
  // ../api/src/siteBanner.ts
33491
- import { z as z64 } from "zod";
34220
+ import { z as z65 } from "zod";
33492
34221
  var SITE_BANNER_SCOPE_VALUES = ["homepage", "all-pages"];
33493
34222
  var SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
33494
34223
  var SITE_BANNER_MAX_TEXT_LENGTH = 320;
33495
34224
  var SITE_BANNER_MAX_PARAGRAPHS = 2;
33496
- var siteBannerScopeSchema = z64.enum(SITE_BANNER_SCOPE_VALUES);
33497
- var siteBannerToneSchema = z64.enum(SITE_BANNER_TONE_VALUES);
33498
- var siteBannerBodySchema = z64.unknown().transform(unwrapRichTextValue);
33499
- var siteBannerCtaSchema = z64.object({
33500
- label: z64.string().trim().min(1),
34225
+ var siteBannerScopeSchema = z65.enum(SITE_BANNER_SCOPE_VALUES);
34226
+ var siteBannerToneSchema = z65.enum(SITE_BANNER_TONE_VALUES);
34227
+ var siteBannerBodySchema = z65.unknown().transform(unwrapRichTextValue);
34228
+ var siteBannerCtaSchema = z65.object({
34229
+ label: z65.string().trim().min(1),
33501
34230
  link: linkPayloadSchema
33502
34231
  });
33503
- var siteBannerSettingsSchema = z64.discriminatedUnion("enabled", [
33504
- z64.object({
33505
- enabled: z64.literal(false)
34232
+ var siteBannerSettingsSchema = z65.discriminatedUnion("enabled", [
34233
+ z65.object({
34234
+ enabled: z65.literal(false)
33506
34235
  }),
33507
- z64.object({
33508
- enabled: z64.literal(true),
34236
+ z65.object({
34237
+ enabled: z65.literal(true),
33509
34238
  scope: siteBannerScopeSchema,
33510
34239
  tone: siteBannerToneSchema,
33511
34240
  body: siteBannerBodySchema,
@@ -33519,7 +34248,7 @@ var siteBannerSettingsInputSchema = siteBannerSettingsSchema.superRefine((value,
33519
34248
  const analysis = analyzeSiteBannerBody(value.body);
33520
34249
  for (const issue of analysis.issues) {
33521
34250
  ctx.addIssue({
33522
- code: z64.ZodIssueCode.custom,
34251
+ code: z65.ZodIssueCode.custom,
33523
34252
  path: ["body"],
33524
34253
  message: siteBannerBodyIssueMessage(issue)
33525
34254
  });
@@ -33742,72 +34471,105 @@ function parsePublicProductCategorySelector(value) {
33742
34471
  return void 0;
33743
34472
  }
33744
34473
 
34474
+ // ../api/src/navigation/dashboardSiteNav.ts
34475
+ var hiddenDemoSiteNavSurfaceIds = [
34476
+ "site.newsletter"
34477
+ ];
34478
+ var hiddenDemoSiteNavIds = new Set(
34479
+ hiddenDemoSiteNavSurfaceIds
34480
+ );
34481
+ var websiteSurfaceIds = [
34482
+ "site.content",
34483
+ "site.footerBlocks",
34484
+ "site.navigation",
34485
+ "site.media",
34486
+ "site.style",
34487
+ "site.performance"
34488
+ ];
34489
+ var websiteSurfaceIdSet = new Set(
34490
+ websiteSurfaceIds
34491
+ );
34492
+
34493
+ // ../api/src/navigation/dashboardSettingsNav.ts
34494
+ var hiddenDemoSettingsNavSurfaceIds = [
34495
+ "settings.features",
34496
+ "settings.domains",
34497
+ "settings.bookings",
34498
+ "settings.emails",
34499
+ "settings.team",
34500
+ "settings.billing",
34501
+ "settings.developer",
34502
+ "settings.apiKeys",
34503
+ "settings.backup"
34504
+ ];
34505
+ var hiddenDemoSettingsNavIds = new Set(hiddenDemoSettingsNavSurfaceIds);
34506
+
33745
34507
  // ../api/src/aiPlayground.ts
33746
- import { z as z65 } from "zod";
33747
- var Rfc6902PatchOp = z65.discriminatedUnion("op", [
34508
+ import { z as z66 } from "zod";
34509
+ var Rfc6902PatchOp = z66.discriminatedUnion("op", [
33748
34510
  // Standard RFC-6902 operations
33749
- z65.object({
33750
- op: z65.literal("add"),
33751
- path: z65.string(),
33752
- value: z65.unknown()
34511
+ z66.object({
34512
+ op: z66.literal("add"),
34513
+ path: z66.string(),
34514
+ value: z66.unknown()
33753
34515
  }),
33754
- z65.object({
33755
- op: z65.literal("remove"),
33756
- path: z65.string()
34516
+ z66.object({
34517
+ op: z66.literal("remove"),
34518
+ path: z66.string()
33757
34519
  }),
33758
- z65.object({
33759
- op: z65.literal("replace"),
33760
- path: z65.string(),
33761
- value: z65.unknown()
34520
+ z66.object({
34521
+ op: z66.literal("replace"),
34522
+ path: z66.string(),
34523
+ value: z66.unknown()
33762
34524
  }),
33763
- z65.object({
33764
- op: z65.literal("move"),
33765
- from: z65.string(),
33766
- path: z65.string()
34525
+ z66.object({
34526
+ op: z66.literal("move"),
34527
+ from: z66.string(),
34528
+ path: z66.string()
33767
34529
  }),
33768
- z65.object({
33769
- op: z65.literal("copy"),
33770
- from: z65.string(),
33771
- path: z65.string()
34530
+ z66.object({
34531
+ op: z66.literal("copy"),
34532
+ from: z66.string(),
34533
+ path: z66.string()
33772
34534
  }),
33773
34535
  // Block-level operations (Phase 2)
33774
- z65.object({
33775
- op: z65.literal("add_block"),
33776
- blockKind: z65.string(),
33777
- afterBlockId: z65.string().nullable(),
33778
- content: z65.record(z65.string(), z65.unknown()),
33779
- rationale: z65.string()
34536
+ z66.object({
34537
+ op: z66.literal("add_block"),
34538
+ blockKind: z66.string(),
34539
+ afterBlockId: z66.string().nullable(),
34540
+ content: z66.record(z66.string(), z66.unknown()),
34541
+ rationale: z66.string()
33780
34542
  }),
33781
- z65.object({
33782
- op: z65.literal("delete_block"),
33783
- blockId: z65.string(),
33784
- rationale: z65.string()
34543
+ z66.object({
34544
+ op: z66.literal("delete_block"),
34545
+ blockId: z66.string(),
34546
+ rationale: z66.string()
33785
34547
  }),
33786
- z65.object({
33787
- op: z65.literal("reorder_block"),
33788
- blockId: z65.string(),
33789
- afterBlockId: z65.string().nullable(),
33790
- rationale: z65.string()
34548
+ z66.object({
34549
+ op: z66.literal("reorder_block"),
34550
+ blockId: z66.string(),
34551
+ afterBlockId: z66.string().nullable(),
34552
+ rationale: z66.string()
33791
34553
  })
33792
34554
  ]);
33793
- var PlaygroundProposeRequest = z65.object({
33794
- request: z65.string().min(1).max(2e3)
34555
+ var PlaygroundProposeRequest = z66.object({
34556
+ request: z66.string().min(1).max(2e3)
33795
34557
  });
33796
- var MultiPagePatchEnvelope = z65.object({
33797
- pageId: z65.string(),
33798
- blockId: z65.string().optional(),
34558
+ var MultiPagePatchEnvelope = z66.object({
34559
+ pageId: z66.string(),
34560
+ blockId: z66.string().optional(),
33799
34561
  // Not present for page-level ops
33800
- blockKind: z65.string().optional(),
33801
- blockPurpose: z65.string().optional().nullable(),
33802
- ops: z65.array(Rfc6902PatchOp),
33803
- rationale: z65.string(),
33804
- currentContent: z65.record(z65.string(), z65.unknown()).optional()
33805
- });
33806
- var MultiPageUpdateResponse = z65.object({
33807
- patches: z65.array(MultiPagePatchEnvelope),
33808
- assistantMessage: z65.string(),
33809
- pagesModified: z65.number(),
33810
- toolCallsUsed: z65.number()
34562
+ blockKind: z66.string().optional(),
34563
+ blockPurpose: z66.string().optional().nullable(),
34564
+ ops: z66.array(Rfc6902PatchOp),
34565
+ rationale: z66.string(),
34566
+ currentContent: z66.record(z66.string(), z66.unknown()).optional()
34567
+ });
34568
+ var MultiPageUpdateResponse = z66.object({
34569
+ patches: z66.array(MultiPagePatchEnvelope),
34570
+ assistantMessage: z66.string(),
34571
+ pagesModified: z66.number(),
34572
+ toolCallsUsed: z66.number()
33811
34573
  });
33812
34574
 
33813
34575
  // src/data/prefetchBlockData.ts