@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
@@ -3907,6 +3907,14 @@ var ENDPOINT_DEFINITIONS = {
3907
3907
  responseKind: "json",
3908
3908
  errors: []
3909
3909
  },
3910
+ applyDiscountCode: {
3911
+ path: "/public/sites/{siteId}/bookings/discounts/apply",
3912
+ method: "POST",
3913
+ tags: ["site-{siteId}", "booking-discounts"],
3914
+ auth: "public",
3915
+ responseKind: "json",
3916
+ errors: ["validation:invalid_input", "rate_limit:exceeded"]
3917
+ },
3910
3918
  // Batch endpoint for block loader requests (reduces SSR fan-out)
3911
3919
  batchBlockLoaders: {
3912
3920
  path: "/public/sites/{siteId}/block-loaders/batch",
@@ -6246,6 +6254,27 @@ var ENDPOINT_DEFINITIONS = {
6246
6254
  }
6247
6255
  };
6248
6256
 
6257
+ // ../core/src/location.ts
6258
+ function normalizeLocationAddressText(value) {
6259
+ if (typeof value !== "string") {
6260
+ return null;
6261
+ }
6262
+ const trimmed = value.trim();
6263
+ return trimmed ? trimmed : null;
6264
+ }
6265
+ function hasLocationCoordinates(value) {
6266
+ return typeof value?.lat === "number" && typeof value?.lng === "number";
6267
+ }
6268
+ function toLocationCoordinates(value) {
6269
+ if (!hasLocationCoordinates(value)) {
6270
+ return null;
6271
+ }
6272
+ return {
6273
+ lat: value.lat,
6274
+ lng: value.lng
6275
+ };
6276
+ }
6277
+
6249
6278
  // ../api/src/accessAdmin.ts
6250
6279
  import { z } from "zod";
6251
6280
  var managedDomainAddOnPricingSnapshotSchema = z.object({
@@ -6388,27 +6417,6 @@ function formatKeyAsLabel(key) {
6388
6417
  // ../blocks/src/system/manifest/schema.ts
6389
6418
  import { z as z4 } from "zod";
6390
6419
 
6391
- // ../core/src/location.ts
6392
- function normalizeLocationAddressText(value) {
6393
- if (typeof value !== "string") {
6394
- return null;
6395
- }
6396
- const trimmed = value.trim();
6397
- return trimmed ? trimmed : null;
6398
- }
6399
- function hasLocationCoordinates(value) {
6400
- return typeof value?.lat === "number" && typeof value?.lng === "number";
6401
- }
6402
- function toLocationCoordinates(value) {
6403
- if (!hasLocationCoordinates(value)) {
6404
- return null;
6405
- }
6406
- return {
6407
- lat: value.lat,
6408
- lng: value.lng
6409
- };
6410
- }
6411
-
6412
6420
  // ../media-core/src/transformRect.ts
6413
6421
  function isValidTransformRectStructure(rect) {
6414
6422
  if (!Array.isArray(rect) || rect.length !== 4) return false;
@@ -7433,6 +7441,9 @@ function makeBoundaryId(previousBlockId, nextBlockId) {
7433
7441
  const next = encodeURIComponent(nextBlockId);
7434
7442
  return asDesignBoundaryId(`boundary:${previous}:${next}`);
7435
7443
  }
7444
+ function assertNever(value, message = "Unhandled Theme V2 variant") {
7445
+ throw new Error(`${message}: ${String(value)}`);
7446
+ }
7436
7447
  function brandNonEmptyString(value, label) {
7437
7448
  if (value.length === 0) {
7438
7449
  throw new Error(`${label} must be a non-empty string.`);
@@ -7460,6 +7471,10 @@ var tileTreatmentValues = [
7460
7471
  "quiet",
7461
7472
  "brand-depth"
7462
7473
  ];
7474
+ var eventListTreatmentValues = [
7475
+ "plain",
7476
+ "lined-panel"
7477
+ ];
7463
7478
  var eyebrowTreatmentValues = [
7464
7479
  "plain",
7465
7480
  "pill",
@@ -7517,6 +7532,7 @@ function defineBlockDesignCapability(capability) {
7517
7532
  imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
7518
7533
  testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"],
7519
7534
  tileTreatments: capability.tileTreatments ?? ["default"],
7535
+ eventListTreatments: capability.eventListTreatments ?? ["plain"],
7520
7536
  eyebrowTreatments: capability.eyebrowTreatments ?? ["plain"],
7521
7537
  ...capability.headingDecorations ? { headingDecorations: capability.headingDecorations } : {},
7522
7538
  ...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
@@ -7541,9 +7557,98 @@ var blockAppearancePresets = [
7541
7557
  transitionAfter: "soft-fade-short",
7542
7558
  emphasis: "high",
7543
7559
  sectionHeight: "hero",
7560
+ heroComposition: "center",
7561
+ heroTypographyScale: "display",
7544
7562
  imageSurfaceTreatment: { kind: "neutral-wash" }
7545
7563
  }
7546
7564
  }),
7565
+ defineBlockAppearancePreset({
7566
+ kind: "block-design",
7567
+ id: "hero-bottom-left-panel",
7568
+ target: "hero",
7569
+ label: "Bottom-left panel hero",
7570
+ blockKinds: ["block.hero"],
7571
+ constraints: {
7572
+ layoutFamilies: ["centered", "compact"]
7573
+ },
7574
+ optionGroups: [
7575
+ {
7576
+ id: "image-surface-treatment",
7577
+ label: "Treatment",
7578
+ selectedOptionId: "neutral-scrim",
7579
+ options: [
7580
+ {
7581
+ id: "neutral-scrim",
7582
+ label: "Neutral scrim",
7583
+ designPatch: {
7584
+ imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
7585
+ }
7586
+ },
7587
+ {
7588
+ id: "brand-scrim-primary",
7589
+ label: "Brand scrim",
7590
+ designPatch: {
7591
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "balanced" }
7592
+ }
7593
+ }
7594
+ ]
7595
+ }
7596
+ ],
7597
+ layoutPatches: [
7598
+ {
7599
+ constraints: {
7600
+ layoutVariantKeys: ["micro"]
7601
+ },
7602
+ designPatch: {
7603
+ sectionHeight: "banner",
7604
+ heroTypographyScale: "editorial"
7605
+ }
7606
+ }
7607
+ ],
7608
+ design: {
7609
+ sectionSurface: "hero-image",
7610
+ contentFrame: panelFrame("raised"),
7611
+ itemSurface: "none",
7612
+ transitionAfter: "soft-fade-short",
7613
+ emphasis: "high",
7614
+ sectionHeight: "immersive",
7615
+ heroComposition: "bottom-left",
7616
+ heroTypographyScale: "display",
7617
+ imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
7618
+ }
7619
+ }),
7620
+ defineBlockAppearancePreset({
7621
+ kind: "block-design",
7622
+ id: "hero-poster-image",
7623
+ target: "hero",
7624
+ label: "Poster image hero",
7625
+ blockKinds: ["block.hero"],
7626
+ constraints: {
7627
+ layoutFamilies: ["centered", "compact"]
7628
+ },
7629
+ layoutPatches: [
7630
+ {
7631
+ constraints: {
7632
+ layoutVariantKeys: ["micro"]
7633
+ },
7634
+ designPatch: {
7635
+ sectionHeight: "banner",
7636
+ heroTypographyScale: "display"
7637
+ }
7638
+ }
7639
+ ],
7640
+ design: {
7641
+ sectionSurface: "hero-image",
7642
+ contentFrame: plainFrame,
7643
+ itemSurface: "none",
7644
+ transitionAfter: "soft-fade-short",
7645
+ emphasis: "high",
7646
+ sectionHeight: "immersive",
7647
+ heroComposition: "center",
7648
+ heroTypographyScale: "poster",
7649
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "strong" }
7650
+ }
7651
+ }),
7547
7652
  defineBlockAppearancePreset({
7548
7653
  kind: "block-design",
7549
7654
  id: "hero-brand-scrim",
@@ -7593,6 +7698,8 @@ var blockAppearancePresets = [
7593
7698
  transitionAfter: "soft-fade-short",
7594
7699
  emphasis: "high",
7595
7700
  sectionHeight: "immersive",
7701
+ heroComposition: "center",
7702
+ heroTypographyScale: "display",
7596
7703
  imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
7597
7704
  }
7598
7705
  }),
@@ -7645,6 +7752,8 @@ var blockAppearancePresets = [
7645
7752
  transitionAfter: "soft-fade-short",
7646
7753
  emphasis: "high",
7647
7754
  sectionHeight: "immersive",
7755
+ heroComposition: "center",
7756
+ heroTypographyScale: "display",
7648
7757
  imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
7649
7758
  imageSurfaceMotion: "fixed-frame",
7650
7759
  eyebrowTreatment: "accent-pill-bounce"
@@ -7665,6 +7774,8 @@ var blockAppearancePresets = [
7665
7774
  itemSurface: "none",
7666
7775
  transitionAfter: "soft-fade-short",
7667
7776
  emphasis: "high",
7777
+ heroComposition: "center",
7778
+ heroTypographyScale: "editorial",
7668
7779
  eyebrowTreatment: "accent-pill-bounce"
7669
7780
  }
7670
7781
  }),
@@ -7679,7 +7790,82 @@ var blockAppearancePresets = [
7679
7790
  contentFrame: panelFrame("inset"),
7680
7791
  itemSurface: "none",
7681
7792
  transitionAfter: "none",
7682
- emphasis: "high"
7793
+ emphasis: "high",
7794
+ heroComposition: "center",
7795
+ heroTypographyScale: "editorial"
7796
+ }
7797
+ }),
7798
+ defineBlockAppearancePreset({
7799
+ kind: "block-design",
7800
+ id: "hero-split-editorial",
7801
+ target: "hero",
7802
+ label: "Editorial split hero",
7803
+ blockKinds: ["block.hero"],
7804
+ constraints: {
7805
+ layoutFamilies: ["split"]
7806
+ },
7807
+ design: {
7808
+ sectionSurface: "base",
7809
+ contentFrame: plainFrame,
7810
+ itemSurface: "none",
7811
+ transitionAfter: "soft-fade-short",
7812
+ emphasis: "high",
7813
+ heroTypographyScale: "editorial"
7814
+ }
7815
+ }),
7816
+ defineBlockAppearancePreset({
7817
+ kind: "block-design",
7818
+ id: "hero-split-brand",
7819
+ target: "hero",
7820
+ label: "Brand split hero",
7821
+ blockKinds: ["block.hero"],
7822
+ constraints: {
7823
+ layoutFamilies: ["split"]
7824
+ },
7825
+ design: {
7826
+ sectionSurface: "brand-depth-band",
7827
+ contentFrame: plainFrame,
7828
+ itemSurface: "none",
7829
+ transitionAfter: "soft-fade-short",
7830
+ emphasis: "high",
7831
+ heroTypographyScale: "display",
7832
+ eyebrowTreatment: "accent-pill-bounce"
7833
+ }
7834
+ }),
7835
+ defineBlockAppearancePreset({
7836
+ kind: "block-design",
7837
+ id: "hero-split-soft-panel",
7838
+ target: "hero",
7839
+ label: "Soft panel split hero",
7840
+ blockKinds: ["block.hero"],
7841
+ constraints: {
7842
+ layoutFamilies: ["split"]
7843
+ },
7844
+ design: {
7845
+ sectionSurface: "muted-band",
7846
+ contentFrame: panelFrame("raised"),
7847
+ itemSurface: "none",
7848
+ transitionAfter: "soft-fade-short",
7849
+ emphasis: "high",
7850
+ heroTypographyScale: "editorial"
7851
+ }
7852
+ }),
7853
+ defineBlockAppearancePreset({
7854
+ kind: "block-design",
7855
+ id: "hero-split-accent",
7856
+ target: "hero",
7857
+ label: "Accent split hero",
7858
+ blockKinds: ["block.hero"],
7859
+ constraints: {
7860
+ layoutFamilies: ["split"]
7861
+ },
7862
+ design: {
7863
+ sectionSurface: "accent-band",
7864
+ contentFrame: panelFrame("raised"),
7865
+ itemSurface: "none",
7866
+ transitionAfter: "soft-fade-short",
7867
+ emphasis: "high",
7868
+ heroTypographyScale: "display"
7683
7869
  }
7684
7870
  }),
7685
7871
  defineBlockAppearancePreset({
@@ -7712,9 +7898,9 @@ var blockAppearancePresets = [
7712
7898
  }),
7713
7899
  defineBlockAppearancePreset({
7714
7900
  kind: "block-design",
7715
- id: "intro-soft-earth-statement",
7901
+ id: "intro-organic-statement",
7716
7902
  target: "intro",
7717
- label: "Soft Earth intro statement",
7903
+ label: "Organic intro statement",
7718
7904
  blockKinds: ["block.intro"],
7719
7905
  design: {
7720
7906
  sectionSurface: "base",
@@ -7745,9 +7931,9 @@ var blockAppearancePresets = [
7745
7931
  }),
7746
7932
  defineBlockAppearancePreset({
7747
7933
  kind: "block-design",
7748
- id: "feature-cards-soft-earth-offerings",
7934
+ id: "feature-cards-raised-rule",
7749
7935
  target: "feature-cards",
7750
- label: "Soft Earth offering cards",
7936
+ label: "Raised cards with rule",
7751
7937
  blockKinds: ["block.feature-cards"],
7752
7938
  design: {
7753
7939
  sectionSurface: "base",
@@ -7776,6 +7962,21 @@ var blockAppearancePresets = [
7776
7962
  emphasis: "medium"
7777
7963
  }
7778
7964
  }),
7965
+ defineBlockAppearancePreset({
7966
+ kind: "block-design",
7967
+ id: "events-lined-panel",
7968
+ target: "events",
7969
+ label: "Lined event panel",
7970
+ blockKinds: ["block.event-calendar", "block.event-listing"],
7971
+ design: {
7972
+ sectionSurface: "base",
7973
+ contentFrame: plainFrame,
7974
+ itemSurface: "none",
7975
+ transitionAfter: "none",
7976
+ emphasis: "medium",
7977
+ eventListTreatment: "lined-panel"
7978
+ }
7979
+ }),
7779
7980
  defineBlockAppearancePreset({
7780
7981
  kind: "block-design",
7781
7982
  id: "schedule-details-accent-section",
@@ -7835,9 +8036,9 @@ var blockAppearancePresets = [
7835
8036
  }),
7836
8037
  defineBlockAppearancePreset({
7837
8038
  kind: "block-design",
7838
- id: "testimonials-carded-proof",
8039
+ id: "testimonials-simple-cards",
7839
8040
  target: "testimonials",
7840
- label: "Carded social proof",
8041
+ label: "Simple testimonial cards",
7841
8042
  blockKinds: ["block.testimonials"],
7842
8043
  design: {
7843
8044
  sectionSurface: "base",
@@ -7849,9 +8050,9 @@ var blockAppearancePresets = [
7849
8050
  }),
7850
8051
  defineBlockAppearancePreset({
7851
8052
  kind: "block-design",
7852
- id: "testimonials-contained-proof",
8053
+ id: "testimonials-raised-panel",
7853
8054
  target: "testimonials",
7854
- label: "Contained social proof",
8055
+ label: "Raised testimonial panel",
7855
8056
  blockKinds: ["block.testimonials"],
7856
8057
  design: {
7857
8058
  sectionSurface: "muted-band",
@@ -7863,9 +8064,9 @@ var blockAppearancePresets = [
7863
8064
  }),
7864
8065
  defineBlockAppearancePreset({
7865
8066
  kind: "block-design",
7866
- id: "testimonials-dark-proof",
8067
+ id: "testimonials-accent-panel",
7867
8068
  target: "testimonials",
7868
- label: "Dark proof panel",
8069
+ label: "Accent testimonial panel",
7869
8070
  blockKinds: ["block.testimonials"],
7870
8071
  design: {
7871
8072
  sectionSurface: "accent-band",
@@ -7877,9 +8078,9 @@ var blockAppearancePresets = [
7877
8078
  }),
7878
8079
  defineBlockAppearancePreset({
7879
8080
  kind: "block-design",
7880
- id: "testimonials-accent-quote-proof",
8081
+ id: "testimonials-accent-quote-cards",
7881
8082
  target: "testimonials",
7882
- label: "Accent quote proof",
8083
+ label: "Accent quote cards",
7883
8084
  blockKinds: ["block.testimonials"],
7884
8085
  design: {
7885
8086
  sectionSurface: "accent-band",
@@ -7892,9 +8093,9 @@ var blockAppearancePresets = [
7892
8093
  }),
7893
8094
  defineBlockAppearancePreset({
7894
8095
  kind: "block-design",
7895
- id: "testimonials-soft-earth-proof-band",
8096
+ id: "testimonials-brand-background-quotes",
7896
8097
  target: "testimonials",
7897
- label: "Soft Earth proof band",
8098
+ label: "Brand background quotes",
7898
8099
  blockKinds: ["block.testimonials"],
7899
8100
  design: {
7900
8101
  sectionSurface: "brand-depth-band",
@@ -7938,25 +8139,6 @@ var blockAppearancePresets = [
7938
8139
  emphasis: "low"
7939
8140
  }
7940
8141
  }),
7941
- defineBlockAppearancePreset({
7942
- kind: "block-design",
7943
- id: "faq-soft-earth-two-column",
7944
- target: "faq",
7945
- label: "Soft Earth two-column FAQ",
7946
- blockKinds: ["block.faq"],
7947
- design: {
7948
- sectionSurface: "base",
7949
- contentFrame: plainFrame,
7950
- itemSurface: "flat",
7951
- transitionAfter: "none",
7952
- emphasis: "medium",
7953
- accordionIconTreatment: {
7954
- iconSet: "plus",
7955
- colorToken: "primary",
7956
- motion: "swap"
7957
- }
7958
- }
7959
- }),
7960
8142
  defineBlockAppearancePreset({
7961
8143
  kind: "block-design",
7962
8144
  id: "contact-form-panel",
@@ -9335,7 +9517,8 @@ var accordionSystemSchema = z12.object({
9335
9517
  icon: z12.object({
9336
9518
  style: accordionIconSchema,
9337
9519
  position: z12.enum(["left", "right"]),
9338
- size: z12.enum(["sm", "md", "lg"])
9520
+ size: z12.enum(["sm", "md", "lg"]),
9521
+ colorToken: themeColorTokenSchema.optional()
9339
9522
  }),
9340
9523
  // Trigger (question) styling
9341
9524
  trigger: z12.object({
@@ -9469,6 +9652,7 @@ var navLinkPaddingXSchema = z16.enum(["none", "tight", "compact", "default", "re
9469
9652
  var navLinkBorderRadiusSchema = z16.enum(["none", "sm", "md", "full"]);
9470
9653
  var navLinkTextSizeSchema = z16.enum(["xs", "sm", "base", "lg"]);
9471
9654
  var navLinkLetterSpacingSchema = z16.enum(["normal", "wide", "wider", "widest"]);
9655
+ var navLinkContrastTreatmentSchema = z16.enum(["none", "soft-glow"]);
9472
9656
  var navLinkStyleSchema = z16.object({
9473
9657
  /** Display name for the style */
9474
9658
  name: z16.string().min(1).max(30).optional(),
@@ -9480,6 +9664,8 @@ var navLinkStyleSchema = z16.object({
9480
9664
  textSize: navLinkTextSizeSchema.optional(),
9481
9665
  /** Optional letter spacing override */
9482
9666
  letterSpacing: navLinkLetterSpacingSchema.optional(),
9667
+ /** Optional text-only contrast treatment for transparent/overlay navigation */
9668
+ contrastTreatment: navLinkContrastTreatmentSchema.optional(),
9483
9669
  /** Hover/active color token (for color-change effects) */
9484
9670
  hoverColorToken: themeColorTokenSchema.nullable().optional(),
9485
9671
  /** Padding preset */
@@ -9909,6 +10095,7 @@ var sectionStylesOverrideSchema = z21.object({
9909
10095
  spacing: semanticSpacingSchema.nullable().optional(),
9910
10096
  minHeight: z21.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
9911
10097
  tileTreatment: z21.enum(tileTreatmentValues).nullable().optional(),
10098
+ eventListTreatment: z21.enum(eventListTreatmentValues).nullable().optional(),
9912
10099
  eyebrowTreatment: z21.enum(eyebrowTreatmentValues).nullable().optional(),
9913
10100
  headingDecoration: headingDecorationSchema.nullable().optional(),
9914
10101
  // Author-level override consumed by later block/editor rendering phases.
@@ -10742,6 +10929,34 @@ var paletteVariantsById = new Map(
10742
10929
  paletteVariants.map((v) => [v.id, v])
10743
10930
  );
10744
10931
 
10932
+ // ../theme-core/src/accordions/siteStyleDefaults.ts
10933
+ var softEarthAccordionSystem = {
10934
+ background: {
10935
+ type: "solid",
10936
+ colorToken: "background"
10937
+ },
10938
+ spacing: "comfortable",
10939
+ corners: "square",
10940
+ border: null,
10941
+ shadow: null,
10942
+ icon: {
10943
+ style: "plus-minus",
10944
+ position: "right",
10945
+ size: "md",
10946
+ colorToken: "primary"
10947
+ },
10948
+ trigger: {
10949
+ textColorToken: "text",
10950
+ fontWeight: "medium"
10951
+ },
10952
+ hover: {
10953
+ textColorToken: "primary"
10954
+ },
10955
+ content: {
10956
+ textColorToken: "neutral-700"
10957
+ }
10958
+ };
10959
+
10745
10960
  // ../theme-core/src/site-styles/headerLooks.ts
10746
10961
  function asHeaderLookId(value) {
10747
10962
  return value;
@@ -10797,7 +11012,7 @@ var headerLayoutCatalog = [
10797
11012
  description: "Detached header chrome that sits over the opening section.",
10798
11013
  structure: "floating-shell",
10799
11014
  variant: "floating",
10800
- defaultPositioning: "fixed",
11015
+ defaultPositioning: "sticky",
10801
11016
  shrinkOnScroll: true,
10802
11017
  maxRecommendedNavItems: 5,
10803
11018
  allowedLogoShapes: ["none", "text-only", "horizontal"]
@@ -10814,7 +11029,9 @@ var headerStyleCatalog = [
10814
11029
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10815
11030
  navInteraction: "color-change",
10816
11031
  surface: "neutral",
10817
- navTypography: "plain"
11032
+ defaultDepth: "none",
11033
+ navTypography: "plain",
11034
+ moods: ["calm", "professional", "editorial"]
10818
11035
  },
10819
11036
  {
10820
11037
  id: asHeaderStyleId("fine-line"),
@@ -10823,7 +11040,9 @@ var headerStyleCatalog = [
10823
11040
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10824
11041
  navInteraction: "underline-grow",
10825
11042
  surface: "bordered",
10826
- navTypography: "plain"
11043
+ defaultDepth: "line",
11044
+ navTypography: "plain",
11045
+ moods: ["calm", "professional", "editorial"]
10827
11046
  },
10828
11047
  {
10829
11048
  id: asHeaderStyleId("soft-bar"),
@@ -10832,7 +11051,9 @@ var headerStyleCatalog = [
10832
11051
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10833
11052
  navInteraction: "pill-background",
10834
11053
  surface: "soft",
10835
- navTypography: "plain"
11054
+ defaultDepth: "line",
11055
+ navTypography: "plain",
11056
+ moods: ["calm", "professional"]
10836
11057
  },
10837
11058
  {
10838
11059
  id: asHeaderStyleId("pill-nav"),
@@ -10841,7 +11062,9 @@ var headerStyleCatalog = [
10841
11062
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10842
11063
  navInteraction: "pill-background",
10843
11064
  surface: "soft",
10844
- navTypography: "plain"
11065
+ defaultDepth: "none",
11066
+ navTypography: "plain",
11067
+ moods: ["calm"]
10845
11068
  },
10846
11069
  {
10847
11070
  id: asHeaderStyleId("brand-bar"),
@@ -10850,7 +11073,9 @@ var headerStyleCatalog = [
10850
11073
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10851
11074
  navInteraction: "color-change",
10852
11075
  surface: "brand-solid",
10853
- navTypography: "brand-caps"
11076
+ defaultDepth: "none",
11077
+ navTypography: "brand-caps",
11078
+ moods: ["professional", "expressive", "utility"]
10854
11079
  },
10855
11080
  {
10856
11081
  id: asHeaderStyleId("brand-underline"),
@@ -10859,7 +11084,9 @@ var headerStyleCatalog = [
10859
11084
  supportedLayoutIds: supportedLayouts(["classic"]),
10860
11085
  navInteraction: "underline-grow",
10861
11086
  surface: "brand-solid",
10862
- navTypography: "brand-caps"
11087
+ defaultDepth: "none",
11088
+ navTypography: "brand-caps",
11089
+ moods: ["expressive"]
10863
11090
  },
10864
11091
  {
10865
11092
  id: asHeaderStyleId("brand-pill"),
@@ -10868,7 +11095,9 @@ var headerStyleCatalog = [
10868
11095
  supportedLayoutIds: supportedLayouts(["classic", "centered", "floating"]),
10869
11096
  navInteraction: "pill-background",
10870
11097
  surface: "brand-solid",
10871
- navTypography: "brand-caps"
11098
+ defaultDepth: "none",
11099
+ navTypography: "brand-caps",
11100
+ moods: ["expressive"]
10872
11101
  },
10873
11102
  {
10874
11103
  id: asHeaderStyleId("serif-line"),
@@ -10877,7 +11106,9 @@ var headerStyleCatalog = [
10877
11106
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10878
11107
  navInteraction: "underline-grow",
10879
11108
  surface: "bordered",
10880
- navTypography: "heading"
11109
+ defaultDepth: "line",
11110
+ navTypography: "heading",
11111
+ moods: ["editorial", "calm"]
10881
11112
  },
10882
11113
  {
10883
11114
  id: asHeaderStyleId("flat-tabs"),
@@ -10886,16 +11117,20 @@ var headerStyleCatalog = [
10886
11117
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10887
11118
  navInteraction: "flat-block",
10888
11119
  surface: "bordered",
10889
- navTypography: "quiet-caps"
11120
+ defaultDepth: "shadow",
11121
+ navTypography: "quiet-caps",
11122
+ moods: ["professional", "utility", "expressive"]
10890
11123
  },
10891
11124
  {
10892
11125
  id: asHeaderStyleId("glass"),
10893
11126
  label: "Glass",
10894
11127
  description: "Translucent chrome with frosted navigation backing.",
10895
- supportedLayoutIds: supportedLayouts(["classic", "floating"]),
11128
+ supportedLayoutIds: supportedLayouts(["floating"]),
10896
11129
  navInteraction: "glass-backed",
10897
11130
  surface: "floating",
10898
- navTypography: "plain"
11131
+ defaultDepth: "shadow",
11132
+ navTypography: "plain",
11133
+ moods: ["expressive", "calm"]
10899
11134
  },
10900
11135
  {
10901
11136
  id: asHeaderStyleId("minimal-surface"),
@@ -10904,7 +11139,9 @@ var headerStyleCatalog = [
10904
11139
  supportedLayoutIds: supportedLayouts(["floating"]),
10905
11140
  navInteraction: "color-change",
10906
11141
  surface: "floating",
10907
- navTypography: "plain"
11142
+ defaultDepth: "none",
11143
+ navTypography: "plain",
11144
+ moods: ["editorial", "calm"]
10908
11145
  },
10909
11146
  {
10910
11147
  id: asHeaderStyleId("soft-shell"),
@@ -10913,7 +11150,9 @@ var headerStyleCatalog = [
10913
11150
  supportedLayoutIds: supportedLayouts(["floating"]),
10914
11151
  navInteraction: "pill-background",
10915
11152
  surface: "floating",
10916
- navTypography: "plain"
11153
+ defaultDepth: "shadow",
11154
+ navTypography: "plain",
11155
+ moods: ["calm", "professional"]
10917
11156
  },
10918
11157
  {
10919
11158
  id: asHeaderStyleId("split-glass"),
@@ -10922,7 +11161,9 @@ var headerStyleCatalog = [
10922
11161
  supportedLayoutIds: supportedLayouts(["floating"]),
10923
11162
  navInteraction: "glass-backed",
10924
11163
  surface: "floating",
10925
- navTypography: "quiet-caps"
11164
+ defaultDepth: "shadow",
11165
+ navTypography: "quiet-caps",
11166
+ moods: ["expressive"]
10926
11167
  },
10927
11168
  {
10928
11169
  id: asHeaderStyleId("split-pill"),
@@ -10931,7 +11172,9 @@ var headerStyleCatalog = [
10931
11172
  supportedLayoutIds: supportedLayouts(["floating"]),
10932
11173
  navInteraction: "pill-background",
10933
11174
  surface: "floating",
10934
- navTypography: "heading"
11175
+ defaultDepth: "shadow",
11176
+ navTypography: "heading",
11177
+ moods: ["calm", "editorial"]
10935
11178
  }
10936
11179
  ];
10937
11180
  var headerLayoutsById = new Map(
@@ -10945,7 +11188,6 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
10945
11188
  asHeaderLayoutId("classic"),
10946
11189
  headerStyleRepairChain([
10947
11190
  "minimal",
10948
- "glass",
10949
11191
  "fine-line",
10950
11192
  "soft-bar",
10951
11193
  "pill-nav",
@@ -11012,7 +11254,13 @@ var headerStyleRepairOrder = /* @__PURE__ */ new Map(
11012
11254
  ],
11013
11255
  [
11014
11256
  asHeaderStyleId("glass"),
11015
- headerStyleRepairChain(["glass", "minimal-surface", "minimal"])
11257
+ headerStyleRepairChain([
11258
+ "glass",
11259
+ "soft-shell",
11260
+ "fine-line",
11261
+ "minimal-surface",
11262
+ "minimal"
11263
+ ])
11016
11264
  ],
11017
11265
  [
11018
11266
  asHeaderStyleId("soft-shell"),
@@ -11124,6 +11372,23 @@ function getCompatibleHeaderStyleIds(layoutId) {
11124
11372
  }
11125
11373
  );
11126
11374
  }
11375
+ function themedHeaderShadow(theme) {
11376
+ switch (theme.shadow.elevation) {
11377
+ case "none":
11378
+ return void 0;
11379
+ case "low":
11380
+ return { elevation: "sm" };
11381
+ case "medium":
11382
+ return { elevation: "md" };
11383
+ case "high":
11384
+ return { elevation: "lg" };
11385
+ default:
11386
+ return assertNever(
11387
+ theme.shadow.elevation,
11388
+ "Unhandled theme shadow elevation"
11389
+ );
11390
+ }
11391
+ }
11127
11392
  function solidBrandHeader(theme) {
11128
11393
  const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
11129
11394
  return {
@@ -11273,9 +11538,7 @@ function practicalUtilityHeader(theme) {
11273
11538
  navColor: "text",
11274
11539
  navStyle: "solid",
11275
11540
  navWeight: "semibold",
11276
- shadow: {
11277
- elevation: "sm"
11278
- },
11541
+ shadow: themedHeaderShadow(theme),
11279
11542
  border: {
11280
11543
  style: "solid",
11281
11544
  width: "thin",
@@ -11344,6 +11607,7 @@ function floatingGlassHeader(theme) {
11344
11607
  return {
11345
11608
  ...transparentOverlayHeader(theme),
11346
11609
  variant: "floating",
11610
+ positioning: "sticky",
11347
11611
  navStyle: "frosted",
11348
11612
  navContainer: {
11349
11613
  type: "glass",
@@ -11859,7 +12123,7 @@ var typographyPresets = [
11859
12123
  heroTypography: {
11860
12124
  headlineSize: "6xl",
11861
12125
  headlineLineHeight: "tight",
11862
- subheadlineSize: "editorial",
12126
+ subheadlineSize: "2xl",
11863
12127
  subheadlineLineHeight: "normal",
11864
12128
  microHeadlineSize: "6xl",
11865
12129
  microHeadlineLineHeight: "tight",
@@ -11877,6 +12141,8 @@ var typographyPresetsById = new Map(
11877
12141
  );
11878
12142
 
11879
12143
  // ../theme-core/src/site-styles/curatedSiteStyles.ts
12144
+ var SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
12145
+ var SOFT_EARTH_SITE_STYLE_ID = asSiteStyleId(SOFT_EARTH_SITE_STYLE_ID_VALUE);
11880
12146
  var curatedSiteStyleIdValues = [
11881
12147
  "site-style:calm-studio",
11882
12148
  "site-style:clear-professional",
@@ -11888,7 +12154,7 @@ var curatedSiteStyleIdValues = [
11888
12154
  "site-style:personal-retreat-journal",
11889
12155
  "site-style:tactile-workshop",
11890
12156
  "site-style:modern-wellness",
11891
- "site-style:soft-earth",
12157
+ SOFT_EARTH_SITE_STYLE_ID_VALUE,
11892
12158
  "site-style:bold-launch",
11893
12159
  "site-style:south-west-twerk-school"
11894
12160
  ];
@@ -11970,7 +12236,10 @@ function uniqueContentFrameKinds() {
11970
12236
  var generatedContentFrameKinds = uniqueContentFrameKinds();
11971
12237
  function defineCuratedSiteStyle(input) {
11972
12238
  const legacyHeaderLookIds = input.recommendedHeaderLookIds ?? ["clean-base"];
11973
- const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(legacyHeaderLookIds);
12239
+ const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(
12240
+ legacyHeaderLookIds,
12241
+ input.tokenRecipes
12242
+ );
11974
12243
  const typographyPresetChoices = input.typographyPresetChoices ?? defaultTypographyPresetChoicesForRecipe(input.tokenRecipes.typography);
11975
12244
  const defaultTypographyPresetId = input.defaultTypographyPresetId ? asTypographyPresetId(input.defaultTypographyPresetId) : typographyPresetChoices[0].id;
11976
12245
  if (!typographyPresetChoices.some(
@@ -12003,6 +12272,7 @@ function defineCuratedSiteStyle(input) {
12003
12272
  supportedTransitions: generatedDesignOptionCatalog.transitions
12004
12273
  },
12005
12274
  ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
12275
+ ...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
12006
12276
  recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
12007
12277
  defaultHeaderSelection: input.defaultHeaderSelection ? {
12008
12278
  layoutId: asHeaderLayoutId(input.defaultHeaderSelection.layoutId),
@@ -12061,7 +12331,69 @@ function nonEmptyHeaderStyleChoices(choices, fallbackLayoutId) {
12061
12331
  };
12062
12332
  return [first, ...choices.slice(1)];
12063
12333
  }
12064
- function inferHeaderCurationFromLegacyLooks(lookIds) {
12334
+ function uniqueCompatibleHeaderStyleChoices(choices, fallbackLayoutId) {
12335
+ const compatible = new Set(getCompatibleHeaderStyleIds(fallbackLayoutId));
12336
+ const seen = /* @__PURE__ */ new Set();
12337
+ const unique = choices.filter((choice) => {
12338
+ if (!compatible.has(choice.id)) return false;
12339
+ if (seen.has(choice.id)) return false;
12340
+ seen.add(choice.id);
12341
+ return true;
12342
+ });
12343
+ return nonEmptyHeaderStyleChoices(unique, fallbackLayoutId);
12344
+ }
12345
+ function inferredHeaderStyleValuesForRecipes(layoutId, recipes) {
12346
+ switch (layoutId) {
12347
+ case "classic":
12348
+ if (isExpressiveRecipe(recipes)) {
12349
+ return [
12350
+ "brand-bar",
12351
+ "brand-underline",
12352
+ "flat-tabs",
12353
+ "brand-pill",
12354
+ "fine-line"
12355
+ ];
12356
+ }
12357
+ if (recipes.spacing === "compact") {
12358
+ return ["flat-tabs", "fine-line", "minimal", "brand-bar"];
12359
+ }
12360
+ if (isSerifTypographyRecipe(recipes)) {
12361
+ return ["serif-line", "fine-line", "minimal", "soft-bar"];
12362
+ }
12363
+ if (recipes.radius === "rounded" || recipes.radius === "pill") {
12364
+ return ["soft-bar", "pill-nav", "fine-line", "minimal"];
12365
+ }
12366
+ return ["fine-line", "minimal", "soft-bar", "brand-bar"];
12367
+ case "centered":
12368
+ if (isSerifTypographyRecipe(recipes)) {
12369
+ return ["serif-line", "fine-line", "minimal", "soft-bar"];
12370
+ }
12371
+ if (isExpressiveRecipe(recipes)) {
12372
+ return ["brand-pill", "flat-tabs", "brand-bar", "fine-line"];
12373
+ }
12374
+ if (recipes.radius === "rounded" || recipes.radius === "pill") {
12375
+ return ["soft-bar", "pill-nav", "fine-line", "minimal"];
12376
+ }
12377
+ return ["minimal", "fine-line", "soft-bar"];
12378
+ case "floating":
12379
+ if (isExpressiveRecipe(recipes)) {
12380
+ return ["glass", "split-glass", "brand-pill", "soft-shell"];
12381
+ }
12382
+ if (isSerifTypographyRecipe(recipes)) {
12383
+ return ["split-pill", "minimal-surface", "soft-shell"];
12384
+ }
12385
+ return ["soft-shell", "minimal-surface", "glass"];
12386
+ default:
12387
+ return [];
12388
+ }
12389
+ }
12390
+ function isExpressiveRecipe(recipes) {
12391
+ return recipes.contrast === "maximum" || recipes.shadow === "layered" || recipes.motion === "expressive";
12392
+ }
12393
+ function isSerifTypographyRecipe(recipes) {
12394
+ return recipes.typography === "serif-editorial" || recipes.typography === "classic-serif";
12395
+ }
12396
+ function inferHeaderCurationFromLegacyLooks(lookIds, recipes) {
12065
12397
  const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter(
12066
12398
  (selection) => Boolean(selection)
12067
12399
  );
@@ -12074,8 +12406,15 @@ function inferHeaderCurationFromLegacyLooks(lookIds) {
12074
12406
  );
12075
12407
  const stylesByLayout = {};
12076
12408
  for (const layoutChoice of layoutChoices) {
12077
- const styleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
12078
- stylesByLayout[unbrandHeaderLayoutId(layoutChoice.id)] = nonEmptyHeaderStyleChoices(styleChoices, layoutChoice.id);
12409
+ const legacyStyleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
12410
+ const inferredStyleChoices = inferredHeaderStyleValuesForRecipes(
12411
+ layoutChoice.id,
12412
+ recipes
12413
+ ).map((styleId) => headerStyleChoice(styleId));
12414
+ stylesByLayout[unbrandHeaderLayoutId(layoutChoice.id)] = uniqueCompatibleHeaderStyleChoices(
12415
+ [...legacyStyleChoices, ...inferredStyleChoices],
12416
+ layoutChoice.id
12417
+ );
12079
12418
  }
12080
12419
  return {
12081
12420
  defaultHeaderSelection,
@@ -12495,10 +12834,10 @@ var curatedSiteStyles = [
12495
12834
  ]
12496
12835
  }),
12497
12836
  defineCuratedSiteStyle({
12498
- id: "site-style:soft-earth",
12837
+ id: SOFT_EARTH_SITE_STYLE_ID,
12499
12838
  name: "Soft Earth",
12500
12839
  description: "Warm, grounded, and editorial for yoga studios, retreats, and wellbeing communities.",
12501
- 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.",
12840
+ 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.",
12502
12841
  siteCreatorSelection: {
12503
12842
  kind: "site_creator_keyword_heuristic",
12504
12843
  priority: 45
@@ -12568,14 +12907,18 @@ var curatedSiteStyles = [
12568
12907
  paragraphSize: "default",
12569
12908
  headingSize: "editorial"
12570
12909
  }
12571
- }
12910
+ },
12911
+ accordions: softEarthAccordionSystem
12912
+ },
12913
+ defaultBlockVariants: {
12914
+ "block.faq": "question-columns"
12572
12915
  },
12573
12916
  recommendedAppearancePresetIds: [
12574
12917
  "hero-brand-scrim",
12575
- "intro-soft-earth-statement",
12576
- "feature-cards-soft-earth-offerings",
12577
- "testimonials-soft-earth-proof-band",
12578
- "faq-soft-earth-two-column",
12918
+ "intro-organic-statement",
12919
+ "feature-cards-raised-rule",
12920
+ "events-lined-panel",
12921
+ "testimonials-brand-background-quotes",
12579
12922
  "contact-form-panel"
12580
12923
  ],
12581
12924
  recommendedHeaderLookIds: [
@@ -12679,7 +13022,7 @@ var curatedSiteStyles = [
12679
13022
  "hero-brand-scrim-fixed-frame",
12680
13023
  "body-text-editorial-intro",
12681
13024
  "schedule-details-brand-depth",
12682
- "testimonials-accent-quote-proof",
13025
+ "testimonials-accent-quote-cards",
12683
13026
  "contact-form-brand-depth-card"
12684
13027
  ],
12685
13028
  recommendedHeaderLookIds: [
@@ -12774,6 +13117,7 @@ var themeV2RuntimeStyleFieldNames = [
12774
13117
  ];
12775
13118
  var themeV2BlockSpecificRawStyleFieldNames = [
12776
13119
  "_contentCardStyles",
13120
+ "_heroLayoutStyles",
12777
13121
  "_textCardStyles"
12778
13122
  ];
12779
13123
  var themeV2NormalEditorRawStyleFieldNames = [
@@ -12783,6 +13127,10 @@ var themeV2NormalEditorRawStyleFieldNames = [
12783
13127
  var themeV2NormalEditorRawStyleFieldNameSet = new Set(
12784
13128
  themeV2NormalEditorRawStyleFieldNames
12785
13129
  );
13130
+ var themeV2CompilerOwnedFieldNames = [
13131
+ ...themeV2RuntimeStyleFieldNames,
13132
+ ...themeV2BlockSpecificRawStyleFieldNames
13133
+ ];
12786
13134
 
12787
13135
  // ../theme-core/src/site-styles/designState.ts
12788
13136
  var themeV2DesignStateSchemaVersion = 1;
@@ -12797,6 +13145,16 @@ var heroLegibilityStrategySchema = z23.enum([
12797
13145
  "scrim-gradient",
12798
13146
  "solid-panel"
12799
13147
  ]);
13148
+ var heroCompositionIntentSchema = z23.enum([
13149
+ "center",
13150
+ "bottom-left"
13151
+ ]);
13152
+ var heroTypographyScaleIntentSchema = z23.enum([
13153
+ "quiet",
13154
+ "editorial",
13155
+ "display",
13156
+ "poster"
13157
+ ]);
12800
13158
  var sectionHeightIntentSchema = z23.enum([
12801
13159
  "default",
12802
13160
  "banner",
@@ -12832,6 +13190,7 @@ var imageSurfaceTreatmentSchema = z23.discriminatedUnion("kind", [
12832
13190
  ]);
12833
13191
  var testimonialCardTreatmentSchema = z23.enum(["default", "accent-quote"]);
12834
13192
  var tileTreatmentSchema = z23.enum(tileTreatmentValues);
13193
+ var eventListTreatmentSchema = z23.enum(eventListTreatmentValues);
12835
13194
  var eyebrowTreatmentSchema = z23.enum(eyebrowTreatmentValues);
12836
13195
  function uniqueNonEmpty(values) {
12837
13196
  const uniqueValues = [...new Set(values)];
@@ -12873,10 +13232,13 @@ var blockDesignPlanSchema = z23.object({
12873
13232
  emphasis: z23.enum(userDesignOptionCatalog.emphases),
12874
13233
  sectionHeight: sectionHeightIntentSchema.optional(),
12875
13234
  heroLegibility: heroLegibilityStrategySchema.optional(),
13235
+ heroComposition: heroCompositionIntentSchema.optional(),
13236
+ heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
12876
13237
  imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
12877
13238
  imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
12878
13239
  testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
12879
13240
  tileTreatment: tileTreatmentSchema.optional(),
13241
+ eventListTreatment: eventListTreatmentSchema.optional(),
12880
13242
  eyebrowTreatment: eyebrowTreatmentSchema.optional()
12881
13243
  }).strict();
12882
13244
  var styleAuthoritySchema = z23.discriminatedUnion("kind", [
@@ -14276,6 +14638,7 @@ function styledSection(config) {
14276
14638
  renderBackgroundImage = true,
14277
14639
  backgroundImageLoading,
14278
14640
  backgroundImageFetchPriority,
14641
+ allowOverflow = false,
14279
14642
  fullWidthPath
14280
14643
  } = config;
14281
14644
  const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
@@ -14310,7 +14673,7 @@ function styledSection(config) {
14310
14673
  // No fallback needed - transform handles all cases via defaultSpacing
14311
14674
  }
14312
14675
  },
14313
- allowOverflow: {
14676
+ allowOverflow: allowOverflow ? true : {
14314
14677
  $bind: {
14315
14678
  from: `${bindFrom}.background`,
14316
14679
  transforms: [{ id: "background.resolveAllowOverflow" }],
@@ -15005,6 +15368,14 @@ var tileTreatmentSet = new Set(tileTreatmentValues);
15005
15368
  function isTileTreatment(value) {
15006
15369
  return typeof value === "string" && tileTreatmentSet.has(value);
15007
15370
  }
15371
+ var eventListTreatmentClassMap = {
15372
+ plain: "",
15373
+ "lined-panel": "rb-event-list-treatment-lined-panel"
15374
+ };
15375
+ var eventListTreatmentSet = new Set(eventListTreatmentValues);
15376
+ function isEventListTreatment(value) {
15377
+ return typeof value === "string" && eventListTreatmentSet.has(value);
15378
+ }
15008
15379
  var sectionClassNameTransform = {
15009
15380
  id: "sectionStyles.resolveClassName",
15010
15381
  kind: "string",
@@ -15072,6 +15443,17 @@ var sectionClassNameTransform = {
15072
15443
  `[sectionStyles] Invalid tileTreatment value in _sectionStyles: "${tileTreatment}". Expected one of: ${tileTreatmentValues.join(", ")}.`
15073
15444
  );
15074
15445
  }
15446
+ const eventListTreatment = input?.eventListTreatment;
15447
+ if (isEventListTreatment(eventListTreatment)) {
15448
+ const eventListTreatmentClass = eventListTreatmentClassMap[eventListTreatment];
15449
+ if (eventListTreatmentClass) {
15450
+ classes.push(eventListTreatmentClass);
15451
+ }
15452
+ } else if (typeof eventListTreatment === "string" && true) {
15453
+ console.warn(
15454
+ `[sectionStyles] Invalid eventListTreatment value in _sectionStyles: "${eventListTreatment}". Expected one of: ${eventListTreatmentValues.join(", ")}.`
15455
+ );
15456
+ }
15075
15457
  if (hasFixedFrameBackgroundMotion(input)) {
15076
15458
  classes.push(fixedFrameScopeClass);
15077
15459
  }
@@ -15507,6 +15889,35 @@ function sectionState(opts) {
15507
15889
  );
15508
15890
  }
15509
15891
 
15892
+ // ../blocks/src/system/node/fragments/headingDecoration.ts
15893
+ var defaultBindFrom = "_sectionStyles.headingDecoration";
15894
+ function headingDecoration({
15895
+ bindFrom = defaultBindFrom,
15896
+ family,
15897
+ placement,
15898
+ className
15899
+ }) {
15900
+ return el(
15901
+ "div",
15902
+ {
15903
+ "aria-hidden": "true",
15904
+ className: {
15905
+ $bind: {
15906
+ from: bindFrom,
15907
+ transforms: [
15908
+ {
15909
+ id: "ui.headingDecorationClassName",
15910
+ options: { baseClass: className, family }
15911
+ }
15912
+ ]
15913
+ }
15914
+ }
15915
+ },
15916
+ null,
15917
+ when(`${bindFrom}.placement`, { equals: placement })
15918
+ );
15919
+ }
15920
+
15510
15921
  // ../blocks/src/system/fragments/types.ts
15511
15922
  import { z as z27 } from "zod";
15512
15923
  var FRAGMENT_ID_PATTERN = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/i;
@@ -16285,6 +16696,10 @@ var testimonialsHeadingFragment = defineFragment({
16285
16696
  when("content.heading"),
16286
16697
  bind("content.heading")
16287
16698
  ),
16699
+ headingDecoration({
16700
+ family: "short-center-rule",
16701
+ placement: "under-centered-heading"
16702
+ }),
16288
16703
  text(
16289
16704
  {
16290
16705
  as: "p",
@@ -16956,6 +17371,41 @@ var faqHeadingFragment = defineFragment({
16956
17371
  });
16957
17372
 
16958
17373
  // ../blocks/src/system/fragments/library/faqAccordion.ts
17374
+ function createFaqAccordionLayout(options = {}) {
17375
+ return accordionList({
17376
+ collection: "content.items",
17377
+ itemName: "faqItem",
17378
+ indexName: "faqIndex",
17379
+ accordionProps: {
17380
+ className: options.rootClassName ?? "accordion-root",
17381
+ type: "single",
17382
+ collapsible: true
17383
+ },
17384
+ itemProps: {
17385
+ className: {
17386
+ $bind: {
17387
+ from: "content._cardStyles",
17388
+ transforms: [
17389
+ {
17390
+ id: "boxStyles.all",
17391
+ options: {
17392
+ axis: "all",
17393
+ includeSpacing: false,
17394
+ baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden"
17395
+ }
17396
+ }
17397
+ ]
17398
+ },
17399
+ fallback: "rb-faq-item"
17400
+ },
17401
+ iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
17402
+ // Legacy theme accordion style
17403
+ iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
17404
+ },
17405
+ triggerFrom: "faqItem.question",
17406
+ contentFrom: "faqItem.answer"
17407
+ });
17408
+ }
16959
17409
  var faqAccordionFragment = defineFragment({
16960
17410
  id: "faqAccordion",
16961
17411
  title: "FAQ Accordion",
@@ -16989,40 +17439,7 @@ var faqAccordionFragment = defineFragment({
16989
17439
  }
16990
17440
  }
16991
17441
  ],
16992
- layout: accordionList({
16993
- collection: "content.items",
16994
- itemName: "faqItem",
16995
- indexName: "faqIndex",
16996
- accordionProps: {
16997
- className: "accordion-root",
16998
- // CSS-first: all styling handled by theme CSS
16999
- type: "single",
17000
- collapsible: true
17001
- },
17002
- itemProps: {
17003
- className: {
17004
- $bind: {
17005
- from: "content._cardStyles",
17006
- transforms: [
17007
- {
17008
- id: "boxStyles.all",
17009
- options: {
17010
- axis: "all",
17011
- includeSpacing: false,
17012
- baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden rb-border"
17013
- }
17014
- }
17015
- ]
17016
- },
17017
- fallback: "rb-faq-item"
17018
- },
17019
- iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
17020
- // Legacy theme accordion style
17021
- iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
17022
- },
17023
- triggerFrom: "faqItem.question",
17024
- contentFrom: "faqItem.answer"
17025
- })
17442
+ layout: createFaqAccordionLayout()
17026
17443
  });
17027
17444
 
17028
17445
  // ../blocks/src/system/fragments/library/card.ts
@@ -18075,6 +18492,7 @@ var microLayout = styledSection({
18075
18492
  function splitLayoutWith(children) {
18076
18493
  return styledSection({
18077
18494
  children: styledContainer({
18495
+ baseClassName: "rb-relative rb-isolate rb-overflow-visible",
18078
18496
  children: {
18079
18497
  type: "grid",
18080
18498
  props: {
@@ -18099,6 +18517,7 @@ function splitLayoutWith(children) {
18099
18517
  // The split variants render the image as a real grid column, so suppress
18100
18518
  // the default absolute background image layer while keeping color/overlay.
18101
18519
  renderBackgroundImage: false,
18520
+ allowOverflow: true,
18102
18521
  baseClass: ""
18103
18522
  });
18104
18523
  }
@@ -18252,6 +18671,21 @@ function introHeading(className) {
18252
18671
  bind("content.title")
18253
18672
  );
18254
18673
  }
18674
+ function introHeadingGroup(className) {
18675
+ return stack(
18676
+ {
18677
+ gap: "sm",
18678
+ className: "rb-intro-heading-group"
18679
+ },
18680
+ [
18681
+ introHeading(className),
18682
+ headingDecoration({
18683
+ family: "organic-squiggle",
18684
+ placement: "after-heading"
18685
+ })
18686
+ ]
18687
+ );
18688
+ }
18255
18689
  function introBody(className = "rb-prose rb-max-w-none") {
18256
18690
  return richText({ className }, bind("content.body"));
18257
18691
  }
@@ -18270,6 +18704,10 @@ function introCopyStack(options = {}) {
18270
18704
  },
18271
18705
  [
18272
18706
  introHeading(options.headingClassName ?? "rb-intro-title"),
18707
+ headingDecoration({
18708
+ family: "organic-squiggle",
18709
+ placement: "after-heading"
18710
+ }),
18273
18711
  introBody(options.bodyClassName),
18274
18712
  introCtas(options.ctaJustify)
18275
18713
  ]
@@ -18309,7 +18747,7 @@ var statementCopyLayout = styledSection({
18309
18747
  className: "rb-intro rb-intro-statement rb-grid rb-grid-cols-1 rb-gap-8 rb-md-grid-cols-2 rb-md-items-start"
18310
18748
  },
18311
18749
  [
18312
- introHeading("rb-intro-title rb-max-w-xl"),
18750
+ introHeadingGroup("rb-intro-title rb-max-w-xl"),
18313
18751
  stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
18314
18752
  introBody(),
18315
18753
  introCtas("start")
@@ -18330,7 +18768,7 @@ var statementMediaLayout = styledSection({
18330
18768
  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"
18331
18769
  },
18332
18770
  [
18333
- introHeading("rb-intro-title rb-max-w-xl"),
18771
+ introHeadingGroup("rb-intro-title rb-max-w-xl"),
18334
18772
  stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
18335
18773
  introBody(),
18336
18774
  introCtas("start")
@@ -19332,6 +19770,9 @@ function isNodeDefinitionArray(layout) {
19332
19770
  }
19333
19771
  var headingLayout = fragmentLayoutNode(faqHeadingFragment.layout);
19334
19772
  var accordionLayout = fragmentLayoutNode(faqAccordionFragment.layout);
19773
+ var questionColumnsAccordionLayout = createFaqAccordionLayout({
19774
+ rootClassName: "accordion-root rb-faq-question-columns rb-grid rb-grid-cols-1 rb-gap-4 rb-lg-grid-cols-2"
19775
+ });
19335
19776
  var defaultLayout = styledSection({
19336
19777
  children: styledContainer({
19337
19778
  baseClassName: "rb-relative rb-isolate",
@@ -19345,11 +19786,24 @@ var twoColumnLayout = styledSection({
19345
19786
  children: el(
19346
19787
  "div",
19347
19788
  {
19348
- className: "rb-faq-two-column rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
19789
+ className: "rb-faq-split-heading rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
19349
19790
  },
19350
19791
  [
19351
- el("div", { className: "rb-faq-two-column-heading" }, [headingLayout]),
19352
- el("div", { className: "rb-faq-two-column-accordion" }, [accordionLayout])
19792
+ el("div", { className: "rb-faq-split-heading-copy" }, [headingLayout]),
19793
+ el("div", { className: "rb-faq-split-heading-accordion" }, [accordionLayout])
19794
+ ]
19795
+ )
19796
+ }),
19797
+ baseClass: ""
19798
+ });
19799
+ var questionColumnsLayout = styledSection({
19800
+ children: styledContainer({
19801
+ baseClassName: "rb-relative rb-isolate",
19802
+ children: stack(
19803
+ { gap: "xl", className: "rb-w-full" },
19804
+ [
19805
+ headingLayout,
19806
+ questionColumnsAccordionLayout
19353
19807
  ]
19354
19808
  )
19355
19809
  }),
@@ -19374,7 +19828,8 @@ var faqManifest = createBlockManifest({
19374
19828
  layout: defaultLayout,
19375
19829
  variants: {
19376
19830
  default: defaultLayout,
19377
- "two-column": twoColumnLayout
19831
+ "two-column": twoColumnLayout,
19832
+ "question-columns": questionColumnsLayout
19378
19833
  },
19379
19834
  defaultVariant: "default",
19380
19835
  variantOptions: {
@@ -19385,6 +19840,10 @@ var faqManifest = createBlockManifest({
19385
19840
  "two-column": {
19386
19841
  label: "Two column",
19387
19842
  description: "A left heading column with FAQ items on the right."
19843
+ },
19844
+ "question-columns": {
19845
+ label: "Question columns",
19846
+ description: "A full-width heading above FAQ items split into two columns."
19388
19847
  }
19389
19848
  },
19390
19849
  description: "Accordion of frequently asked questions and answers.",
@@ -19506,9 +19965,21 @@ var eyebrowTreatmentClassMap = {
19506
19965
  "accent-pill-bounce": "rb-eyebrow-treatment-pill rb-eyebrow-treatment-accent rb-eyebrow-treatment-pill-bounce"
19507
19966
  };
19508
19967
  var eyebrowTreatmentSet = new Set(eyebrowTreatmentValues);
19968
+ var headingDecorationFamilySet = new Set(visibleHeadingDecorationFamilyValues);
19969
+ var headingDecorationPlacementSet = new Set(visibleHeadingDecorationPlacementValues);
19970
+ var headingDecorationColorTokenSet = new Set(headingDecorationColorTokenValues);
19509
19971
  function isEyebrowTreatment(value) {
19510
19972
  return typeof value === "string" && eyebrowTreatmentSet.has(value);
19511
19973
  }
19974
+ function isHeadingDecorationFamily(value) {
19975
+ return typeof value === "string" && headingDecorationFamilySet.has(value);
19976
+ }
19977
+ function isHeadingDecorationPlacement(value) {
19978
+ return typeof value === "string" && headingDecorationPlacementSet.has(value);
19979
+ }
19980
+ function isHeadingDecorationColorToken(value) {
19981
+ return typeof value === "string" && headingDecorationColorTokenSet.has(value);
19982
+ }
19512
19983
  var imageGalleryCornerClassMap = {
19513
19984
  none: "",
19514
19985
  sm: "rb-rounded-sm",
@@ -19612,6 +20083,10 @@ var sectionStateToneTransform = {
19612
20083
  summary: "Map semantic section-state kind to feedback tone",
19613
20084
  run: (value) => sectionStateToneFromUnknown(value)
19614
20085
  };
20086
+ var heroTitleLengthThresholds = {
20087
+ medium: { maxCharacters: 42, maxWords: 6 },
20088
+ long: { maxCharacters: 78, maxWords: 11 }
20089
+ };
19615
20090
  function isPlainObject(value) {
19616
20091
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
19617
20092
  }
@@ -19619,6 +20094,14 @@ function readString(obj, key) {
19619
20094
  const v = obj[key];
19620
20095
  return typeof v === "string" ? v : void 0;
19621
20096
  }
20097
+ function resolveGeneratedHeroLayoutStyles(content) {
20098
+ const raw = content._heroLayoutStyles;
20099
+ return isPlainObject(raw) ? raw : null;
20100
+ }
20101
+ function readHeroLayoutString(content, generatedKey, fallbackKey = generatedKey) {
20102
+ const generated = resolveGeneratedHeroLayoutStyles(content);
20103
+ return generated && typeof generated[generatedKey] === "string" ? generated[generatedKey] : readString(content, fallbackKey);
20104
+ }
19622
20105
  function resolveHeroVariant(content) {
19623
20106
  const variant = readString(content, "variant");
19624
20107
  if (variant && variant.trim()) return variant.trim();
@@ -19627,14 +20110,14 @@ function resolveHeroVariant(content) {
19627
20110
  return null;
19628
20111
  }
19629
20112
  function resolveHeroContentAlignment(content) {
19630
- const raw = readString(content, "contentAlignment");
20113
+ const raw = readHeroLayoutString(content, "contentAlignment");
19631
20114
  if (raw === "left" || raw === "center" || raw === "right") return raw;
19632
20115
  const variant = resolveHeroVariant(content);
19633
20116
  if (variant === "split" || variant === "splitReverse") return "left";
19634
20117
  return "center";
19635
20118
  }
19636
20119
  function resolveHeroVerticalAlignment(content) {
19637
- const raw = readString(content, "verticalAlignment");
20120
+ const raw = readHeroLayoutString(content, "verticalAlignment");
19638
20121
  if (raw === "top" || raw === "center" || raw === "bottom") return raw;
19639
20122
  const sectionStyles = asPartialObject(content._sectionStyles);
19640
20123
  const minHeight = sectionStyles?.minHeight;
@@ -19644,11 +20127,29 @@ function resolveHeroVerticalAlignment(content) {
19644
20127
  return "top";
19645
20128
  }
19646
20129
  function resolveHeroContentMaxWidth(content) {
19647
- const raw = readString(content, "contentMaxWidth");
20130
+ const raw = readHeroLayoutString(content, "contentMaxWidth");
19648
20131
  if (raw === "default" || raw === "narrow" || raw === "medium" || raw === "wide")
19649
20132
  return raw;
19650
20133
  return "default";
19651
20134
  }
20135
+ function resolveHeroTypographyScale(content) {
20136
+ const raw = readHeroLayoutString(
20137
+ content,
20138
+ "typographyScale",
20139
+ "heroTypographyScale"
20140
+ );
20141
+ if (raw === "quiet" || raw === "editorial" || raw === "display" || raw === "poster") {
20142
+ return raw;
20143
+ }
20144
+ return null;
20145
+ }
20146
+ function resolveHeroTitleLength(content) {
20147
+ const headline = readString(content, "headline")?.trim() ?? "";
20148
+ const wordCount = headline.length === 0 ? 0 : headline.split(/\s+/).length;
20149
+ if (headline.length > heroTitleLengthThresholds.long.maxCharacters || wordCount > heroTitleLengthThresholds.long.maxWords) return "long";
20150
+ if (headline.length > heroTitleLengthThresholds.medium.maxCharacters || wordCount > heroTitleLengthThresholds.medium.maxWords) return "medium";
20151
+ return "short";
20152
+ }
19652
20153
  var heroContentWrapperClassSchema = z33.object({
19653
20154
  base: z33.string().optional()
19654
20155
  });
@@ -19661,6 +20162,8 @@ var heroContentWrapperClassTransform = {
19661
20162
  const content = isPlainObject(value) ? value : isPlainObject(context.data) ? context.data : {};
19662
20163
  const alignment = resolveHeroContentAlignment(content);
19663
20164
  const maxWidth = resolveHeroContentMaxWidth(content);
20165
+ const typographyScale = resolveHeroTypographyScale(content);
20166
+ const titleLength = resolveHeroTitleLength(content);
19664
20167
  const textAlignClass = alignment === "center" ? "rb-text-center" : alignment === "right" ? "rb-text-right" : "rb-text-left";
19665
20168
  const maxWidthClass = maxWidth === "narrow" ? "rb-max-w-2xl" : maxWidth === "medium" ? "rb-max-w-3xl" : maxWidth === "wide" ? "rb-max-w-5xl" : "";
19666
20169
  const positionClass = alignment === "center" ? "rb-mx-auto" : alignment === "right" ? "rb-ml-auto" : "";
@@ -19668,7 +20171,9 @@ var heroContentWrapperClassTransform = {
19668
20171
  options?.base,
19669
20172
  textAlignClass,
19670
20173
  maxWidthClass,
19671
- positionClass
20174
+ positionClass,
20175
+ typographyScale ? `rb-hero-typography-${typographyScale}` : "",
20176
+ `rb-hero-title-${titleLength}`
19672
20177
  ]);
19673
20178
  }
19674
20179
  };
@@ -19968,11 +20473,67 @@ var uiTransforms = [
19968
20473
  const treatment = isEyebrowTreatment(value) ? value : "plain";
19969
20474
  return joinClasses3([baseClass, eyebrowTreatmentClassMap[treatment]]);
19970
20475
  }
20476
+ },
20477
+ {
20478
+ id: "ui.headingDecorationClassName",
20479
+ kind: "string",
20480
+ summary: "Apply constrained Theme V2 heading decoration classes",
20481
+ run: (value, options) => {
20482
+ const baseClass = typeof options?.baseClass === "string" && options.baseClass.trim() ? options.baseClass : "rb-heading-decoration";
20483
+ const decoration = asPartialObject(value);
20484
+ const family = isHeadingDecorationFamily(decoration?.family) ? decoration.family : null;
20485
+ const allowedFamily = isHeadingDecorationFamily(options?.family) ? options.family : null;
20486
+ const placement = isHeadingDecorationPlacement(decoration?.placement) ? decoration.placement : null;
20487
+ const colorToken = isHeadingDecorationColorToken(decoration?.colorToken) ? decoration.colorToken : "primary";
20488
+ if (!family || !placement) return "rb-hidden";
20489
+ if (allowedFamily && family !== allowedFamily) return "rb-hidden";
20490
+ return joinClasses3([
20491
+ baseClass,
20492
+ `rb-heading-decoration-${family}`,
20493
+ `rb-heading-decoration-placement-${placement}`,
20494
+ `rb-heading-decoration-color-${colorToken}`
20495
+ ]);
20496
+ }
19971
20497
  }
19972
20498
  ];
19973
20499
 
19974
20500
  // ../blocks/src/system/transforms/registry/layout.ts
19975
20501
  import { z as z34 } from "zod";
20502
+
20503
+ // ../theme-core/src/siteChromePlacement.ts
20504
+ var HEADER_POSITIONINGS = ["static", "sticky", "fixed"];
20505
+ function parseHeaderPositioning(value) {
20506
+ return isHeaderPositioning(value) ? value : "static";
20507
+ }
20508
+ function isHeaderPositioning(value) {
20509
+ return typeof value === "string" && HEADER_POSITIONINGS.includes(value);
20510
+ }
20511
+ function planSiteChromePlacement(positioning) {
20512
+ switch (positioning) {
20513
+ case "static":
20514
+ return {
20515
+ kind: "static",
20516
+ headerRootClassName: null,
20517
+ standaloneShellClassName: null
20518
+ };
20519
+ case "sticky":
20520
+ return {
20521
+ kind: "sticky",
20522
+ headerRootClassName: "rb-sticky rb-top-0",
20523
+ standaloneShellClassName: "sticky top-0 z-40 w-full"
20524
+ };
20525
+ case "fixed":
20526
+ return {
20527
+ kind: "fixed",
20528
+ headerRootClassName: "rb-fixed rb-top-0 rb-left-0 rb-right-0",
20529
+ standaloneShellClassName: "fixed left-0 right-0 top-0 z-40 w-full"
20530
+ };
20531
+ default:
20532
+ return assertNever(positioning);
20533
+ }
20534
+ }
20535
+
20536
+ // ../blocks/src/system/transforms/registry/layout.ts
19976
20537
  var joinClasses4 = (parts) => parts.filter(
19977
20538
  (part) => typeof part === "string" && part.trim().length > 0
19978
20539
  ).join(" ").replace(/\s+/g, " ").trim();
@@ -20088,7 +20649,8 @@ var headerRootClassTransform = {
20088
20649
  ...options
20089
20650
  };
20090
20651
  const content = asPartialObject(value) ?? {};
20091
- const positioning = typeof content.positioning === "string" ? content.positioning : "static";
20652
+ const positioning = parseHeaderPositioning(content.positioning);
20653
+ const placement = planSiteChromePlacement(positioning);
20092
20654
  const shrinkOnScroll = Boolean(content.shrinkOnScroll);
20093
20655
  const header = asPartialObject(value);
20094
20656
  const visuals = resolveHeaderVisualStyles(header, context.theme);
@@ -20100,14 +20662,14 @@ var headerRootClassTransform = {
20100
20662
  if (config.blur) classes.push(config.blur);
20101
20663
  if (config.blurSupport) classes.push(config.blurSupport);
20102
20664
  }
20103
- if (positioning === "sticky") {
20665
+ if (placement.kind === "sticky") {
20104
20666
  classes.push(
20105
20667
  visuals.isTransparent ? config.stickyTransparent : config.sticky
20106
20668
  );
20107
- } else if (positioning === "fixed") {
20669
+ } else if (placement.kind === "fixed") {
20108
20670
  classes.push(config.fixed);
20109
20671
  }
20110
- if (shrinkOnScroll && (positioning === "sticky" || positioning === "fixed")) {
20672
+ if (shrinkOnScroll && placement.kind !== "static") {
20111
20673
  classes.push(config.shrink);
20112
20674
  }
20113
20675
  const VALID_VARIANTS = [
@@ -20642,6 +21204,10 @@ function desktopOnlyDisplay(display) {
20642
21204
  return `rb-hidden ${LARGE_DISPLAY_CLASSES[display]}`;
20643
21205
  }
20644
21206
 
21207
+ // ../theme-core/src/siteChromeOverlayClearance.ts
21208
+ var SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
21209
+ var SITE_CHROME_VISIBLE_HEADER_SELECTOR = `[${SITE_CHROME_VISIBLE_HEADER_ATTR}="true"]`;
21210
+
20645
21211
  // ../blocks/src/system/blocks/site-header.ts
20646
21212
  var logoRow = link(
20647
21213
  {
@@ -20914,6 +21480,7 @@ var transparentLayout = inline(
20914
21480
  );
20915
21481
  var floatingLayout = inline(
20916
21482
  {
21483
+ [SITE_CHROME_VISIBLE_HEADER_ATTR]: "true",
20917
21484
  className: bindProp("$root.theme.header.maxWidth", {
20918
21485
  transforms: pipe(
20919
21486
  tx("layout.maxWidthClass", {
@@ -21859,6 +22426,10 @@ var sectionHeading = stack(
21859
22426
  when("content.title"),
21860
22427
  bind("content.title")
21861
22428
  ),
22429
+ headingDecoration({
22430
+ family: "short-center-rule",
22431
+ placement: "under-centered-heading"
22432
+ }),
21862
22433
  richText(
21863
22434
  {
21864
22435
  className: "rb-feature-cards-description rb-prose rb-mx-auto rb-max-w-none",
@@ -24282,7 +24853,7 @@ var COLUMN_CLASSES = {
24282
24853
  };
24283
24854
  function getContainerClass(layout, columns) {
24284
24855
  if (layout === "compact") {
24285
- return "event-listing-compact-container rb-flex rb-flex-col rb-gap-2";
24856
+ return "event-listing-compact-container rb-flex rb-flex-col";
24286
24857
  }
24287
24858
  if (layout === "stack") {
24288
24859
  return "rb-flex rb-flex-col rb-gap-6";
@@ -27110,6 +27681,7 @@ import { z as z53 } from "zod";
27110
27681
  var storedProductCartItemSchema = z53.object({
27111
27682
  kind: z53.literal("product"),
27112
27683
  productId: z53.string().min(1),
27684
+ productCategoryId: z53.string().min(1).optional().nullable(),
27113
27685
  variantId: z53.string().min(1).optional().nullable(),
27114
27686
  title: z53.string().min(1),
27115
27687
  variantTitle: z53.string().optional().nullable(),
@@ -29614,6 +30186,10 @@ var scheduleTileTreatments = [
29614
30186
  "quiet",
29615
30187
  "brand-depth"
29616
30188
  ];
30189
+ var eventListTreatments = [
30190
+ "plain",
30191
+ "lined-panel"
30192
+ ];
29617
30193
  function scheduleDetailsCapable() {
29618
30194
  return declareBlockDesignCapability({
29619
30195
  sectionSurfaces: "supported",
@@ -29622,6 +30198,14 @@ function scheduleDetailsCapable() {
29622
30198
  tileTreatments: scheduleTileTreatments
29623
30199
  });
29624
30200
  }
30201
+ function eventListCapable() {
30202
+ return declareBlockDesignCapability({
30203
+ sectionSurfaces: "supported",
30204
+ contentFrames: ["plain"],
30205
+ itemSurfaces: "unsupported",
30206
+ eventListTreatments
30207
+ });
30208
+ }
29625
30209
  function defaultBoundaryBias(visualWeight) {
29626
30210
  return visualWeight === "featured" || visualWeight === "immersive" ? "clear" : "soft";
29627
30211
  }
@@ -29841,7 +30425,8 @@ var systemBlockDefinitionsRaw = [
29841
30425
  flow: bodyFlow,
29842
30426
  layoutProfiles: [
29843
30427
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
29844
- layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" })
30428
+ layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
30429
+ layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
29845
30430
  ]
29846
30431
  })),
29847
30432
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -29935,11 +30520,11 @@ var systemBlockDefinitionsRaw = [
29935
30520
  flow: offeringsFlow,
29936
30521
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "centered", weight: "featured" })]
29937
30522
  })),
29938
- withDesignCapability("block.event-listing", eventListingBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
30523
+ withDesignCapability("block.event-listing", eventListingBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
29939
30524
  flow: offeringsFlow,
29940
30525
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "stack", weight: "standard" })]
29941
30526
  })),
29942
- withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
30527
+ withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
29943
30528
  flow: offeringsFlow,
29944
30529
  layoutProfiles: [
29945
30530
  layoutProfile({ variantKey: "combined", family: "grid", weight: "standard" }),
@@ -31036,6 +31621,15 @@ ${root} {
31036
31621
  `;
31037
31622
  }
31038
31623
 
31624
+ // ../theme-core/src/runtime/themeCssVarNames.ts
31625
+ var THEME_RADIUS_CSS_VARS = {
31626
+ block: "--rb-block-radius",
31627
+ button: "--rb-button-radius",
31628
+ input: "--rb-input-radius",
31629
+ legacyCard: "--radius-card",
31630
+ legacyControl: "--radius-control"
31631
+ };
31632
+
31039
31633
  // ../theme-core/src/blocks/vars/customer-portal.ts
31040
31634
  function generateCustomerPortalVars({
31041
31635
  themeId
@@ -31049,6 +31643,11 @@ ${root} {
31049
31643
  --cp-muted: rgb(var(--tb-mutedText));
31050
31644
  --cp-border: rgb(var(--tb-border));
31051
31645
  --cp-shadow: var(--shadow-elev);
31646
+ --cp-primary: rgb(var(--tb-primary));
31647
+ --cp-primary-hover: rgb(var(--tb-primary-700, var(--tb-primary)));
31648
+ --cp-error: rgb(var(--tb-destructive));
31649
+ --cp-card-radius: var(${THEME_RADIUS_CSS_VARS.block}, var(${THEME_RADIUS_CSS_VARS.legacyCard}, 0.75rem));
31650
+ --cp-control-radius: var(${THEME_RADIUS_CSS_VARS.input}, var(${THEME_RADIUS_CSS_VARS.legacyControl}, 0.5rem));
31052
31651
 
31053
31652
  /* Shared tab bar (underline style) */
31054
31653
  --rb-tab-border-width: 1px;
@@ -31099,7 +31698,7 @@ ${root} {
31099
31698
  --rb-modal-bg: var(--cp-card-bg);
31100
31699
  --rb-modal-border: var(--cp-card-border);
31101
31700
  --rb-modal-shadow: var(--shadow-lg, var(--shadow-elev));
31102
- --rb-modal-radius: var(--radius-card);
31701
+ --rb-modal-radius: var(--cp-card-radius);
31103
31702
  --rb-modal-max-width: 560px;
31104
31703
 
31105
31704
  /* Header */
@@ -32480,6 +33079,9 @@ import { jsx as jsx5 } from "react/jsx-runtime";
32480
33079
  import * as React from "react";
32481
33080
  import { Fragment, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
32482
33081
 
33082
+ // ../theme-core/src/fonts/uploadFormat.ts
33083
+ var MAX_FONT_UPLOAD_BYTES = 5 * 1024 * 1024;
33084
+
32483
33085
  // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
32484
33086
  import { z as z60 } from "zod";
32485
33087
  var themeBridgeConfigSchema = z60.object({
@@ -33260,6 +33862,7 @@ var COURSE_ENROLLMENT_REFUND_FAILED_CODES = [
33260
33862
  ];
33261
33863
 
33262
33864
  // ../api/src/bookingVerticals.ts
33865
+ import { z as z63 } from "zod";
33263
33866
  var VERTICAL_IDS = [
33264
33867
  "yoga_wellness",
33265
33868
  "fitness_pt",
@@ -33338,6 +33941,132 @@ var VERTICAL_ID_SET = new Set(VERTICAL_IDS);
33338
33941
  var VERTICAL_PRESET_ID_SET = new Set(
33339
33942
  VERTICAL_BOOKING_PRESETS.map((presetDefinition) => presetDefinition.id)
33340
33943
  );
33944
+ function parseVerticalId(value) {
33945
+ return typeof value === "string" && VERTICAL_ID_SET.has(value) ? value : null;
33946
+ }
33947
+ function parseVerticalPresetId(value) {
33948
+ return typeof value === "string" && VERTICAL_PRESET_ID_SET.has(value) ? value : null;
33949
+ }
33950
+ function getVerticalPresetDefinition(presetId) {
33951
+ const definition = VERTICAL_BOOKING_PRESETS.find((presetDefinition) => presetDefinition.id === presetId);
33952
+ if (!definition) {
33953
+ throw new Error(`Unhandled vertical preset id: ${presetId}`);
33954
+ }
33955
+ return definition;
33956
+ }
33957
+ function toNonEmptyVerticalPresetIds(presetIds) {
33958
+ const firstPresetId = presetIds[0];
33959
+ return firstPresetId ? [firstPresetId, ...presetIds.slice(1)] : null;
33960
+ }
33961
+ function createConfiguredSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
33962
+ return {
33963
+ verticalId,
33964
+ selectedPresetIds
33965
+ };
33966
+ }
33967
+ function createSiteVerticalBookingConfig(verticalId, selectedPresetIds) {
33968
+ const nonEmptyPresetIds = toNonEmptyVerticalPresetIds(selectedPresetIds);
33969
+ return nonEmptyPresetIds ? createConfiguredSiteVerticalBookingConfig(verticalId, nonEmptyPresetIds) : null;
33970
+ }
33971
+ function resolveSiteVerticalBookingConfig(rawConfig) {
33972
+ if (!rawConfig) {
33973
+ return { kind: "unconfigured", config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG };
33974
+ }
33975
+ const verticalId = parseVerticalId(rawConfig.verticalId);
33976
+ const rawPresetIds = Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : [];
33977
+ const selectedPresetIds = rawPresetIds.map(parseVerticalPresetId).filter((presetId) => Boolean(presetId));
33978
+ const config = {
33979
+ verticalId,
33980
+ selectedPresetIds
33981
+ };
33982
+ if (!verticalId && selectedPresetIds.length === 0) {
33983
+ return { kind: "unconfigured", config: DEFAULT_SITE_VERTICAL_BOOKING_CONFIG };
33984
+ }
33985
+ const issues = getSiteVerticalConfigIssues(rawConfig, config);
33986
+ if (issues.length > 0) {
33987
+ return { kind: "invalid", config, issues };
33988
+ }
33989
+ const configuredConfig = verticalId ? createSiteVerticalBookingConfig(verticalId, selectedPresetIds) : null;
33990
+ if (!configuredConfig) {
33991
+ return { kind: "invalid", config, issues: ["empty_selected_presets"] };
33992
+ }
33993
+ return {
33994
+ kind: "configured",
33995
+ config: configuredConfig,
33996
+ selectedPresets: configuredConfig.selectedPresetIds.map(getVerticalPresetDefinition)
33997
+ };
33998
+ }
33999
+ function getSiteVerticalConfigIssues(rawConfig, config) {
34000
+ const issues = /* @__PURE__ */ new Set();
34001
+ if (rawConfig.verticalId != null && !config.verticalId) {
34002
+ issues.add("unknown_vertical");
34003
+ }
34004
+ if (!config.verticalId && config.selectedPresetIds.length > 0) {
34005
+ issues.add("missing_vertical");
34006
+ }
34007
+ const rawPresetIds = Array.isArray(rawConfig.selectedPresetIds) ? rawConfig.selectedPresetIds : [];
34008
+ if (rawPresetIds.some((presetId) => parseVerticalPresetId(presetId) === null)) {
34009
+ issues.add("unknown_preset");
34010
+ }
34011
+ if (config.verticalId && config.selectedPresetIds.length === 0) {
34012
+ issues.add("empty_selected_presets");
34013
+ }
34014
+ const seenBehaviours = /* @__PURE__ */ new Set();
34015
+ for (const presetId of config.selectedPresetIds) {
34016
+ const presetDefinition = getVerticalPresetDefinition(presetId);
34017
+ if (config.verticalId && presetDefinition.verticalId !== config.verticalId) {
34018
+ issues.add("preset_vertical_mismatch");
34019
+ }
34020
+ if (presetDefinition.availability === "future") {
34021
+ issues.add("future_preset_selected");
34022
+ }
34023
+ if (seenBehaviours.has(presetDefinition.canonicalBehaviour)) {
34024
+ issues.add("duplicate_canonical_behaviour");
34025
+ }
34026
+ seenBehaviours.add(presetDefinition.canonicalBehaviour);
34027
+ }
34028
+ return [...issues];
34029
+ }
34030
+ var VerticalIdSchema = z63.string().trim().transform((value, ctx) => {
34031
+ const parsed = parseVerticalId(value);
34032
+ if (!parsed) {
34033
+ ctx.addIssue({
34034
+ code: z63.ZodIssueCode.custom,
34035
+ message: "Unknown booking vertical"
34036
+ });
34037
+ return z63.NEVER;
34038
+ }
34039
+ return parsed;
34040
+ });
34041
+ var VerticalPresetIdSchema = z63.string().trim().transform((value, ctx) => {
34042
+ const parsed = parseVerticalPresetId(value);
34043
+ if (!parsed) {
34044
+ ctx.addIssue({
34045
+ code: z63.ZodIssueCode.custom,
34046
+ message: "Unknown booking preset"
34047
+ });
34048
+ return z63.NEVER;
34049
+ }
34050
+ return parsed;
34051
+ });
34052
+ var BookingVerticalConfigSchema = z63.object({
34053
+ verticalId: VerticalIdSchema.nullable(),
34054
+ selectedPresetIds: z63.array(VerticalPresetIdSchema).max(20)
34055
+ }).transform((value, ctx) => {
34056
+ const resolved = resolveSiteVerticalBookingConfig(value);
34057
+ if (resolved.kind === "invalid") {
34058
+ ctx.addIssue({
34059
+ code: z63.ZodIssueCode.custom,
34060
+ message: `Invalid booking vertical config: ${resolved.issues.join(", ")}`
34061
+ });
34062
+ return z63.NEVER;
34063
+ }
34064
+ return resolved.config;
34065
+ });
34066
+ var DEFAULT_SITE_VERTICAL_BOOKING_CONFIG = {
34067
+ verticalId: null,
34068
+ selectedPresetIds: []
34069
+ };
33341
34070
  function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, description, availability = "onboarding") {
33342
34071
  return {
33343
34072
  id,
@@ -33357,51 +34086,51 @@ function isRecord3(value) {
33357
34086
  }
33358
34087
 
33359
34088
  // ../api/src/appointmentSetup.ts
33360
- import { z as z63 } from "zod";
34089
+ import { z as z64 } from "zod";
33361
34090
  var APPOINTMENT_SETUP_MAX_MINUTES = 1440;
33362
- var appointmentSetupRefSchema = z63.discriminatedUnion("kind", [
33363
- z63.object({ kind: z63.literal("existing"), id: z63.string().min(1) }),
33364
- z63.object({ kind: z63.literal("new"), draftId: z63.string().min(1) })
34091
+ var appointmentSetupRefSchema = z64.discriminatedUnion("kind", [
34092
+ z64.object({ kind: z64.literal("existing"), id: z64.string().min(1) }),
34093
+ z64.object({ kind: z64.literal("new"), draftId: z64.string().min(1) })
33365
34094
  ]);
33366
- var appointmentSetupVenueChoiceSchema = z63.discriminatedUnion("kind", [
33367
- z63.object({ kind: z63.literal("none") }),
33368
- z63.object({ kind: z63.literal("existing"), venueId: z63.string().min(1) }),
33369
- z63.object({
33370
- kind: z63.literal("create"),
33371
- draftId: z63.string().min(1),
33372
- title: z63.string().trim().min(1),
33373
- description: z63.string().nullable(),
33374
- timezone: z63.string().trim().min(1).nullable(),
33375
- addressJson: z63.record(z63.string(), z63.unknown()),
33376
- locationJson: z63.object({ lat: z63.number(), lng: z63.number() }).nullable()
34095
+ var appointmentSetupVenueChoiceSchema = z64.discriminatedUnion("kind", [
34096
+ z64.object({ kind: z64.literal("none") }),
34097
+ z64.object({ kind: z64.literal("existing"), venueId: z64.string().min(1) }),
34098
+ z64.object({
34099
+ kind: z64.literal("create"),
34100
+ draftId: z64.string().min(1),
34101
+ title: z64.string().trim().min(1),
34102
+ description: z64.string().nullable(),
34103
+ timezone: z64.string().trim().min(1).nullable(),
34104
+ addressJson: z64.record(z64.string(), z64.unknown()),
34105
+ locationJson: z64.object({ lat: z64.number(), lng: z64.number() }).nullable()
33377
34106
  })
33378
34107
  ]);
33379
- var appointmentSetupPaymentDraftSchema = z63.object({
33380
- priceType: z63.union([z63.literal("free"), z63.literal("paid")])
33381
- });
33382
- var appointmentSetupServiceAssignmentDraftSchema = z63.discriminatedUnion("kind", [
33383
- z63.object({ kind: z63.literal("all_practitioners") }),
33384
- z63.object({
33385
- kind: z63.literal("selected_practitioners"),
33386
- resourceRefs: z63.array(appointmentSetupRefSchema)
34108
+ var appointmentSetupPaymentDraftSchema = z64.object({
34109
+ priceType: z64.union([z64.literal("free"), z64.literal("paid")])
34110
+ });
34111
+ var appointmentSetupServiceAssignmentDraftSchema = z64.discriminatedUnion("kind", [
34112
+ z64.object({ kind: z64.literal("all_practitioners") }),
34113
+ z64.object({
34114
+ kind: z64.literal("selected_practitioners"),
34115
+ resourceRefs: z64.array(appointmentSetupRefSchema)
33387
34116
  })
33388
34117
  ]);
33389
- var appointmentSetupServiceDraftSchema = z63.object({
34118
+ var appointmentSetupServiceDraftSchema = z64.object({
33390
34119
  ref: appointmentSetupRefSchema,
33391
- title: z63.string().trim().min(1),
33392
- description: z63.string().nullable(),
33393
- durationMinutes: z63.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
33394
- prepMinutes: z63.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
33395
- cleanupMinutes: z63.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
33396
- priceAmount: z63.number().int().nonnegative().nullable(),
33397
- isActive: z63.boolean(),
33398
- locationType: z63.union([
33399
- z63.literal("virtual"),
33400
- z63.literal("in_person"),
33401
- z63.literal("hybrid")
34120
+ title: z64.string().trim().min(1),
34121
+ description: z64.string().nullable(),
34122
+ durationMinutes: z64.number().int().positive().max(APPOINTMENT_SETUP_MAX_MINUTES),
34123
+ prepMinutes: z64.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
34124
+ cleanupMinutes: z64.number().int().nonnegative().max(APPOINTMENT_SETUP_MAX_MINUTES).default(0),
34125
+ priceAmount: z64.number().int().nonnegative().nullable(),
34126
+ isActive: z64.boolean(),
34127
+ locationType: z64.union([
34128
+ z64.literal("virtual"),
34129
+ z64.literal("in_person"),
34130
+ z64.literal("hybrid")
33402
34131
  ]),
33403
34132
  venue: appointmentSetupVenueChoiceSchema,
33404
- timezone: z63.string().trim().min(1).nullable(),
34133
+ timezone: z64.string().trim().min(1).nullable(),
33405
34134
  payment: appointmentSetupPaymentDraftSchema,
33406
34135
  assignment: appointmentSetupServiceAssignmentDraftSchema
33407
34136
  }).superRefine((service, ctx) => {
@@ -33420,49 +34149,49 @@ var appointmentSetupServiceDraftSchema = z63.object({
33420
34149
  });
33421
34150
  }
33422
34151
  });
33423
- var appointmentSetupPractitionerDraftSchema = z63.object({
34152
+ var appointmentSetupPractitionerDraftSchema = z64.object({
33424
34153
  ref: appointmentSetupRefSchema,
33425
- displayName: z63.string().trim().min(1),
33426
- bio: z63.string().nullable(),
33427
- timezone: z63.string().trim().min(1),
33428
- colorHex: z63.string().nullable()
33429
- });
33430
- var appointmentSetupWeeklyWindowDraftSchema = z63.object({
33431
- weekday: z63.number().int().min(0).max(6),
33432
- startTime: z63.string(),
33433
- endTime: z63.string()
33434
- });
33435
- var appointmentSetupStartTimePolicyDraftSchema = z63.discriminatedUnion("kind", [
33436
- z63.object({ kind: z63.literal("automatic_spacing") }),
33437
- z63.object({
33438
- kind: z63.literal("regular_interval"),
33439
- intervalMinutes: z63.union([
33440
- z63.literal(10),
33441
- z63.literal(15),
33442
- z63.literal(20),
33443
- z63.literal(30),
33444
- z63.literal(45),
33445
- z63.literal(60)
34154
+ displayName: z64.string().trim().min(1),
34155
+ bio: z64.string().nullable(),
34156
+ timezone: z64.string().trim().min(1),
34157
+ colorHex: z64.string().nullable()
34158
+ });
34159
+ var appointmentSetupWeeklyWindowDraftSchema = z64.object({
34160
+ weekday: z64.number().int().min(0).max(6),
34161
+ startTime: z64.string(),
34162
+ endTime: z64.string()
34163
+ });
34164
+ var appointmentSetupStartTimePolicyDraftSchema = z64.discriminatedUnion("kind", [
34165
+ z64.object({ kind: z64.literal("automatic_spacing") }),
34166
+ z64.object({
34167
+ kind: z64.literal("regular_interval"),
34168
+ intervalMinutes: z64.union([
34169
+ z64.literal(10),
34170
+ z64.literal(15),
34171
+ z64.literal(20),
34172
+ z64.literal(30),
34173
+ z64.literal(45),
34174
+ z64.literal(60)
33446
34175
  ])
33447
34176
  })
33448
34177
  ]);
33449
- var appointmentSetupAvailabilityDraftSchema = z63.object({
33450
- kind: z63.literal("weekly_windows"),
34178
+ var appointmentSetupAvailabilityDraftSchema = z64.object({
34179
+ kind: z64.literal("weekly_windows"),
33451
34180
  resourceRef: appointmentSetupRefSchema,
33452
34181
  serviceRef: appointmentSetupRefSchema.nullable(),
33453
- windows: z63.array(appointmentSetupWeeklyWindowDraftSchema),
34182
+ windows: z64.array(appointmentSetupWeeklyWindowDraftSchema),
33454
34183
  startTimePolicy: appointmentSetupStartTimePolicyDraftSchema.optional()
33455
34184
  });
33456
34185
  var APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX = 28 * 24 * 60;
33457
34186
  var APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX = 10 * 365 * 24 * 60;
33458
- var appointmentSetupBookingNoticeSchema = z63.object({
33459
- minLeadMinutes: z63.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
33460
- maxBookingNoticeMinutes: z63.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
33461
- });
33462
- var applyAppointmentSetupRequestSchema = z63.object({
33463
- services: z63.array(appointmentSetupServiceDraftSchema),
33464
- practitioners: z63.array(appointmentSetupPractitionerDraftSchema),
33465
- availability: z63.array(appointmentSetupAvailabilityDraftSchema),
34187
+ var appointmentSetupBookingNoticeSchema = z64.object({
34188
+ minLeadMinutes: z64.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MIN_LEAD_MINUTES_MAX),
34189
+ maxBookingNoticeMinutes: z64.number().int().nonnegative().max(APPOINTMENT_DEFAULT_MAX_BOOKING_NOTICE_MINUTES_MAX)
34190
+ });
34191
+ var applyAppointmentSetupRequestSchema = z64.object({
34192
+ services: z64.array(appointmentSetupServiceDraftSchema),
34193
+ practitioners: z64.array(appointmentSetupPractitionerDraftSchema),
34194
+ availability: z64.array(appointmentSetupAvailabilityDraftSchema),
33466
34195
  bookingNotice: appointmentSetupBookingNoticeSchema
33467
34196
  });
33468
34197
 
@@ -33495,24 +34224,24 @@ var STAFF_CANCELLATION_CONTEXT_CATEGORIES = [
33495
34224
  ];
33496
34225
 
33497
34226
  // ../api/src/siteBanner.ts
33498
- import { z as z64 } from "zod";
34227
+ import { z as z65 } from "zod";
33499
34228
  var SITE_BANNER_SCOPE_VALUES = ["homepage", "all-pages"];
33500
34229
  var SITE_BANNER_TONE_VALUES = ["announcement", "promotion", "notice", "warning"];
33501
34230
  var SITE_BANNER_MAX_TEXT_LENGTH = 320;
33502
34231
  var SITE_BANNER_MAX_PARAGRAPHS = 2;
33503
- var siteBannerScopeSchema = z64.enum(SITE_BANNER_SCOPE_VALUES);
33504
- var siteBannerToneSchema = z64.enum(SITE_BANNER_TONE_VALUES);
33505
- var siteBannerBodySchema = z64.unknown().transform(unwrapRichTextValue);
33506
- var siteBannerCtaSchema = z64.object({
33507
- label: z64.string().trim().min(1),
34232
+ var siteBannerScopeSchema = z65.enum(SITE_BANNER_SCOPE_VALUES);
34233
+ var siteBannerToneSchema = z65.enum(SITE_BANNER_TONE_VALUES);
34234
+ var siteBannerBodySchema = z65.unknown().transform(unwrapRichTextValue);
34235
+ var siteBannerCtaSchema = z65.object({
34236
+ label: z65.string().trim().min(1),
33508
34237
  link: linkPayloadSchema
33509
34238
  });
33510
- var siteBannerSettingsSchema = z64.discriminatedUnion("enabled", [
33511
- z64.object({
33512
- enabled: z64.literal(false)
34239
+ var siteBannerSettingsSchema = z65.discriminatedUnion("enabled", [
34240
+ z65.object({
34241
+ enabled: z65.literal(false)
33513
34242
  }),
33514
- z64.object({
33515
- enabled: z64.literal(true),
34243
+ z65.object({
34244
+ enabled: z65.literal(true),
33516
34245
  scope: siteBannerScopeSchema,
33517
34246
  tone: siteBannerToneSchema,
33518
34247
  body: siteBannerBodySchema,
@@ -33526,7 +34255,7 @@ var siteBannerSettingsInputSchema = siteBannerSettingsSchema.superRefine((value,
33526
34255
  const analysis = analyzeSiteBannerBody(value.body);
33527
34256
  for (const issue of analysis.issues) {
33528
34257
  ctx.addIssue({
33529
- code: z64.ZodIssueCode.custom,
34258
+ code: z65.ZodIssueCode.custom,
33530
34259
  path: ["body"],
33531
34260
  message: siteBannerBodyIssueMessage(issue)
33532
34261
  });
@@ -33749,72 +34478,105 @@ function parsePublicProductCategorySelector(value) {
33749
34478
  return void 0;
33750
34479
  }
33751
34480
 
34481
+ // ../api/src/navigation/dashboardSiteNav.ts
34482
+ var hiddenDemoSiteNavSurfaceIds = [
34483
+ "site.newsletter"
34484
+ ];
34485
+ var hiddenDemoSiteNavIds = new Set(
34486
+ hiddenDemoSiteNavSurfaceIds
34487
+ );
34488
+ var websiteSurfaceIds = [
34489
+ "site.content",
34490
+ "site.footerBlocks",
34491
+ "site.navigation",
34492
+ "site.media",
34493
+ "site.style",
34494
+ "site.performance"
34495
+ ];
34496
+ var websiteSurfaceIdSet = new Set(
34497
+ websiteSurfaceIds
34498
+ );
34499
+
34500
+ // ../api/src/navigation/dashboardSettingsNav.ts
34501
+ var hiddenDemoSettingsNavSurfaceIds = [
34502
+ "settings.features",
34503
+ "settings.domains",
34504
+ "settings.bookings",
34505
+ "settings.emails",
34506
+ "settings.team",
34507
+ "settings.billing",
34508
+ "settings.developer",
34509
+ "settings.apiKeys",
34510
+ "settings.backup"
34511
+ ];
34512
+ var hiddenDemoSettingsNavIds = new Set(hiddenDemoSettingsNavSurfaceIds);
34513
+
33752
34514
  // ../api/src/aiPlayground.ts
33753
- import { z as z65 } from "zod";
33754
- var Rfc6902PatchOp = z65.discriminatedUnion("op", [
34515
+ import { z as z66 } from "zod";
34516
+ var Rfc6902PatchOp = z66.discriminatedUnion("op", [
33755
34517
  // Standard RFC-6902 operations
33756
- z65.object({
33757
- op: z65.literal("add"),
33758
- path: z65.string(),
33759
- value: z65.unknown()
34518
+ z66.object({
34519
+ op: z66.literal("add"),
34520
+ path: z66.string(),
34521
+ value: z66.unknown()
33760
34522
  }),
33761
- z65.object({
33762
- op: z65.literal("remove"),
33763
- path: z65.string()
34523
+ z66.object({
34524
+ op: z66.literal("remove"),
34525
+ path: z66.string()
33764
34526
  }),
33765
- z65.object({
33766
- op: z65.literal("replace"),
33767
- path: z65.string(),
33768
- value: z65.unknown()
34527
+ z66.object({
34528
+ op: z66.literal("replace"),
34529
+ path: z66.string(),
34530
+ value: z66.unknown()
33769
34531
  }),
33770
- z65.object({
33771
- op: z65.literal("move"),
33772
- from: z65.string(),
33773
- path: z65.string()
34532
+ z66.object({
34533
+ op: z66.literal("move"),
34534
+ from: z66.string(),
34535
+ path: z66.string()
33774
34536
  }),
33775
- z65.object({
33776
- op: z65.literal("copy"),
33777
- from: z65.string(),
33778
- path: z65.string()
34537
+ z66.object({
34538
+ op: z66.literal("copy"),
34539
+ from: z66.string(),
34540
+ path: z66.string()
33779
34541
  }),
33780
34542
  // Block-level operations (Phase 2)
33781
- z65.object({
33782
- op: z65.literal("add_block"),
33783
- blockKind: z65.string(),
33784
- afterBlockId: z65.string().nullable(),
33785
- content: z65.record(z65.string(), z65.unknown()),
33786
- rationale: z65.string()
34543
+ z66.object({
34544
+ op: z66.literal("add_block"),
34545
+ blockKind: z66.string(),
34546
+ afterBlockId: z66.string().nullable(),
34547
+ content: z66.record(z66.string(), z66.unknown()),
34548
+ rationale: z66.string()
33787
34549
  }),
33788
- z65.object({
33789
- op: z65.literal("delete_block"),
33790
- blockId: z65.string(),
33791
- rationale: z65.string()
34550
+ z66.object({
34551
+ op: z66.literal("delete_block"),
34552
+ blockId: z66.string(),
34553
+ rationale: z66.string()
33792
34554
  }),
33793
- z65.object({
33794
- op: z65.literal("reorder_block"),
33795
- blockId: z65.string(),
33796
- afterBlockId: z65.string().nullable(),
33797
- rationale: z65.string()
34555
+ z66.object({
34556
+ op: z66.literal("reorder_block"),
34557
+ blockId: z66.string(),
34558
+ afterBlockId: z66.string().nullable(),
34559
+ rationale: z66.string()
33798
34560
  })
33799
34561
  ]);
33800
- var PlaygroundProposeRequest = z65.object({
33801
- request: z65.string().min(1).max(2e3)
34562
+ var PlaygroundProposeRequest = z66.object({
34563
+ request: z66.string().min(1).max(2e3)
33802
34564
  });
33803
- var MultiPagePatchEnvelope = z65.object({
33804
- pageId: z65.string(),
33805
- blockId: z65.string().optional(),
34565
+ var MultiPagePatchEnvelope = z66.object({
34566
+ pageId: z66.string(),
34567
+ blockId: z66.string().optional(),
33806
34568
  // Not present for page-level ops
33807
- blockKind: z65.string().optional(),
33808
- blockPurpose: z65.string().optional().nullable(),
33809
- ops: z65.array(Rfc6902PatchOp),
33810
- rationale: z65.string(),
33811
- currentContent: z65.record(z65.string(), z65.unknown()).optional()
33812
- });
33813
- var MultiPageUpdateResponse = z65.object({
33814
- patches: z65.array(MultiPagePatchEnvelope),
33815
- assistantMessage: z65.string(),
33816
- pagesModified: z65.number(),
33817
- toolCallsUsed: z65.number()
34569
+ blockKind: z66.string().optional(),
34570
+ blockPurpose: z66.string().optional().nullable(),
34571
+ ops: z66.array(Rfc6902PatchOp),
34572
+ rationale: z66.string(),
34573
+ currentContent: z66.record(z66.string(), z66.unknown()).optional()
34574
+ });
34575
+ var MultiPageUpdateResponse = z66.object({
34576
+ patches: z66.array(MultiPagePatchEnvelope),
34577
+ assistantMessage: z66.string(),
34578
+ pagesModified: z66.number(),
34579
+ toolCallsUsed: z66.number()
33818
34580
  });
33819
34581
 
33820
34582
  // src/data/prefetchBlockData.ts