@riverbankcms/sdk 0.78.0 → 0.79.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 (222) hide show
  1. package/README.md +125 -43
  2. package/dist/{PreviewEditorSidebar-RIKFQ72L.mjs → PreviewEditorSidebar-56NMJMIK.mjs} +750 -65
  3. package/dist/{PreviewEditorUI-XO7TUWKK.mjs → PreviewEditorUI-27KJVEET.mjs} +4 -4
  4. package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +72 -0
  6. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  7. package/dist/_dts/api/src/endpoints.d.ts +64 -0
  8. package/dist/_dts/api/src/index.d.ts +8 -6
  9. package/dist/_dts/api/src/media.d.ts +8 -1
  10. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  11. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +8 -8
  12. package/dist/_dts/api/src/navigation/identity.d.ts +59 -0
  13. package/dist/_dts/api/src/navigation.d.ts +2 -0
  14. package/dist/_dts/api/src/public/types.d.ts +1 -1
  15. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +4 -0
  16. package/dist/_dts/api/src/request.d.ts +3 -11
  17. package/dist/_dts/api/src/sdkConfig/contracts.d.ts +1 -0
  18. package/dist/_dts/api/src/sdkContracts.d.ts +8 -1
  19. package/dist/_dts/api/src/siteIcons.d.ts +128 -0
  20. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +26 -0
  21. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +8 -0
  22. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +21 -20
  23. package/dist/_dts/api/src/types.d.ts +12 -27
  24. package/dist/_dts/api/src/webhooks.d.ts +239 -0
  25. package/dist/_dts/block-form/src/fields/types.d.ts +6 -0
  26. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +3 -2
  27. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +6 -3
  28. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +8 -3
  29. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -1
  30. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useLinearRepeaterDnd.d.ts +1 -0
  31. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterPointerDragCapability.d.ts +1 -0
  32. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useResolvedItemLabel.d.ts +7 -0
  33. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +1 -0
  34. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/index.d.ts +3 -1
  35. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterDndDomain.d.ts +1 -1
  36. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterLabelSource.d.ts +15 -0
  37. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +50 -0
  38. package/dist/_dts/blocks/src/index.d.ts +4 -0
  39. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +879 -288
  40. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +879 -288
  41. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +879 -288
  42. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +879 -288
  43. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +879 -288
  44. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +885 -289
  45. package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +57 -0
  46. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +4 -0
  47. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +879 -288
  48. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  49. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -1
  50. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +69 -22
  51. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +879 -288
  52. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +879 -288
  53. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +879 -288
  54. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
  55. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
  56. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +170 -0
  57. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
  58. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -1
  59. package/dist/_dts/blocks/src/system/icons/ids.d.ts +13 -0
  60. package/dist/_dts/blocks/src/system/icons/index.d.ts +6 -0
  61. package/dist/_dts/blocks/src/system/icons/presets.d.ts +4 -0
  62. package/dist/_dts/blocks/src/system/icons/registry.d.ts +18 -0
  63. package/dist/_dts/blocks/src/system/icons/semantic.d.ts +239 -0
  64. package/dist/_dts/blocks/src/system/icons/value.d.ts +94 -0
  65. package/dist/_dts/blocks/src/system/index.d.ts +1 -0
  66. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +4 -1
  67. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +187 -0
  68. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -1
  69. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +1 -1
  70. package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +13 -0
  71. package/dist/_dts/content-editor/src/index.d.ts +1 -1
  72. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -2
  73. package/dist/_dts/content-model/src/content-types/schema.d.ts +14 -0
  74. package/dist/_dts/content-model/src/contentManifest.d.ts +3 -1
  75. package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +3 -1
  76. package/dist/_dts/content-model/src/templates/bindingValidation.d.ts +10 -4
  77. package/dist/_dts/content-model/src/templates/fieldPaths.d.ts +20 -0
  78. package/dist/_dts/content-model/src/templates/manifestAdapter.d.ts +5 -2
  79. package/dist/_dts/core/src/branded.d.ts +114 -85
  80. package/dist/_dts/core/src/csv-types.d.ts +2 -2
  81. package/dist/_dts/core/src/editor-state.d.ts +7 -7
  82. package/dist/_dts/core/src/participants.d.ts +2 -2
  83. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +202 -0
  84. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +12 -1
  85. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +12 -1
  86. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +12 -2
  87. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +21 -0
  88. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +40 -0
  89. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +11 -1
  90. package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +82 -0
  91. package/dist/_dts/editor-blocks/src/blockPayload.d.ts +1 -1
  92. package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
  93. package/dist/_dts/media-core/src/fileDomain.d.ts +8 -1
  94. package/dist/_dts/media-editor/src/MediaEditor.d.ts +5 -2
  95. package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -1
  96. package/dist/_dts/media-editor/src/fieldUi.d.ts +5 -0
  97. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  98. package/dist/_dts/media-react/src/components/MediaLibrary.d.ts +2 -1
  99. package/dist/_dts/media-react/src/components/MediaPickerMini.d.ts +2 -1
  100. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +17 -0
  101. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -0
  102. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +3 -2
  103. package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +6 -0
  104. package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +1 -1
  105. package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +2 -0
  106. package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +3 -3
  107. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +7 -0
  108. package/dist/_dts/sdk/src/cli/commands/push.d.ts +2 -0
  109. package/dist/_dts/sdk/src/cli/content/reader.d.ts +13 -0
  110. package/dist/_dts/sdk/src/cli/content/writer.d.ts +2 -1
  111. package/dist/_dts/sdk/src/cli/helpers.d.ts +2 -0
  112. package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +11 -0
  113. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +6 -6
  114. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +5 -0
  115. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +4 -0
  116. package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +4 -0
  117. package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +1 -0
  118. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +5 -2
  119. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +10 -1
  120. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +1 -1
  121. package/dist/_dts/sdk/src/cli/sync/diff.d.ts +9 -0
  122. package/dist/_dts/sdk/src/client/management/types.d.ts +8 -0
  123. package/dist/_dts/sdk/src/client/types.d.ts +2 -2
  124. package/dist/_dts/sdk/src/config/content-types.d.ts +7 -0
  125. package/dist/_dts/sdk/src/config/field-definitions.d.ts +5 -1
  126. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  127. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +19 -2
  128. package/dist/_dts/sdk/src/next/index.d.ts +1 -1
  129. package/dist/_dts/sdk/src/next/revalidate.d.ts +26 -5
  130. package/dist/_dts/sdk/src/next/static-params.d.ts +28 -3
  131. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
  132. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  133. package/dist/_dts/sdk/src/version.d.ts +1 -1
  134. package/dist/_dts/sdk/src/webhooks/index.d.ts +1 -1
  135. package/dist/_dts/sdk/src/webhooks/verify.d.ts +6 -102
  136. package/dist/_dts/site-commands/src/commands.d.ts +6 -0
  137. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  138. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -3
  139. package/dist/_dts/theme-core/src/schema.d.ts +5 -5
  140. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -2
  141. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +5 -5
  142. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  143. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -4
  144. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -0
  145. package/dist/_dts/ui/src/combobox.d.ts +1 -0
  146. package/dist/{altcha-B5XGSXP5.mjs → altcha-EKUEQ4RP.mjs} +1 -1
  147. package/dist/{chunk-F7RTCZYN.mjs → chunk-4HCW7FHJ.mjs} +504 -63
  148. package/dist/{chunk-SXOLGNMX.mjs → chunk-A3HHFKVT.mjs} +1 -1
  149. package/dist/{chunk-TXDES5P2.mjs → chunk-GP555I66.mjs} +180 -10
  150. package/dist/{chunk-SVMMM2NA.mjs → chunk-K2IIF34C.mjs} +79 -5
  151. package/dist/{chunk-NIDXI46P.mjs → chunk-LCY32PXF.mjs} +1 -1
  152. package/dist/{chunk-XGB3TDIC.mjs → chunk-R7POPVJR.mjs} +2 -8
  153. package/dist/{chunk-OECWLDHN.mjs → chunk-V47ZU33I.mjs} +2762 -732
  154. package/dist/cli/index.mjs +1799 -345
  155. package/dist/cli/init-docs/content/cli-reference.md +3 -2
  156. package/dist/cli/init-docs/content/content-management.md +2 -2
  157. package/dist/cli/init-docs/content/workflow-editor-workflows.md +2 -0
  158. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +138 -0
  159. package/dist/cli/init-docs/content/workflow-preview-mode.md +68 -2
  160. package/dist/client/{accordion-EVDEOUPR.mjs → accordion-QLA7KBYO.mjs} +2 -2
  161. package/dist/client/analytics.mjs +1 -1
  162. package/dist/client/{bookingForm-DIHBLC64.mjs → bookingForm-PYZIPA5G.mjs} +55 -48
  163. package/dist/client/bookings.mjs +172 -57
  164. package/dist/client/{carousel-FEBQHIWI.mjs → carousel-5EIULWBI.mjs} +3 -3
  165. package/dist/client/{cart-7CKSXAE4.mjs → cart-DOP3FNI4.mjs} +7 -7
  166. package/dist/client/{checkout-WKYCANLV.mjs → checkout-BVMF6FBV.mjs} +7 -7
  167. package/dist/client/{chunk-GUK2FPXQ.mjs → chunk-44K2U3QI.mjs} +37 -15
  168. package/dist/client/{chunk-IVNCUVAV.mjs → chunk-AUJ5DBZJ.mjs} +18 -18
  169. package/dist/client/{chunk-VPPMNXCF.mjs → chunk-CCNTDRCF.mjs} +2 -2
  170. package/dist/client/{chunk-36WJCERQ.mjs → chunk-CE7IBGVW.mjs} +3 -1
  171. package/dist/client/{chunk-2SAVKN2M.mjs → chunk-GG4M2NP6.mjs} +2 -2
  172. package/dist/client/{chunk-65F47D7Y.mjs → chunk-R5ESWNKX.mjs} +49 -39
  173. package/dist/client/{chunk-RZDWX7QW.mjs → chunk-TYONZMST.mjs} +1 -1
  174. package/dist/client/{chunk-OFMSCGNY.mjs → chunk-UDS3NTWA.mjs} +2 -2
  175. package/dist/client/{chunk-YDSEG6GZ.mjs → chunk-V6M5FCR5.mjs} +2 -2
  176. package/dist/client/{chunk-F7LHOKEH.mjs → chunk-XSV6KW4D.mjs} +1 -1
  177. package/dist/client/{chunk-RV6FX7UH.mjs → chunk-YLDYVRZL.mjs} +9 -9
  178. package/dist/client/{chunk-PD6NBCEY.mjs → chunk-ZFHRN6W2.mjs} +1 -1
  179. package/dist/client/client.mjs +21501 -19812
  180. package/dist/client/{courseRegistration-5QF2PHKM.mjs → courseRegistration-E6EAA6NL.mjs} +10 -10
  181. package/dist/client/{eventCalendar-4ZOSETDU.mjs → eventCalendar-HBG3HAK6.mjs} +9 -9
  182. package/dist/client/{eventCombined-WQGU7JUX.mjs → eventCombined-6K5ZZWAK.mjs} +9 -9
  183. package/dist/client/{eventDetails-AYWVUJ5Y.mjs → eventDetails-Q75ICXLT.mjs} +9 -9
  184. package/dist/client/{eventListing-NT7C6UT5.mjs → eventListing-27P5F7DZ.mjs} +9 -9
  185. package/dist/client/{eventRegistration-OH24F4ZJ.mjs → eventRegistration-IQ7AMASR.mjs} +9 -9
  186. package/dist/client/{form-7L42SRBB.mjs → form-JRTD65FN.mjs} +6 -3
  187. package/dist/client/{headerSection-OZRZNZ52.mjs → headerSection-7FPSSZHS.mjs} +3 -3
  188. package/dist/client/hooks.mjs +428 -83
  189. package/dist/client/{locationMap-ZBXRPQ7C.mjs → locationMap-7NGFNYBH.mjs} +3 -3
  190. package/dist/client/{newsletterForm-SNAGFF2I.mjs → newsletterForm-F3BADCI2.mjs} +2 -2
  191. package/dist/client/{productDetail-I46BOFGV.mjs → productDetail-V3HP7ITJ.mjs} +7 -7
  192. package/dist/client/{productList-BOYHTYI6.mjs → productList-L3EGJUF2.mjs} +7 -7
  193. package/dist/client/rendering/client.mjs +2886 -1513
  194. package/dist/client/rendering/islands.mjs +19 -19
  195. package/dist/client/rendering.mjs +2244 -564
  196. package/dist/client/{shop-XTXPZTKR.mjs → shop-DQUB5E2C.mjs} +7 -7
  197. package/dist/preview-next/before-render.mjs +65 -1
  198. package/dist/preview-next/client/runtime.mjs +6 -6
  199. package/dist/preview-next/middleware.mjs +65 -1
  200. package/dist/preview-next/tailwind-sources.css +1 -0
  201. package/dist/sdk-runtime-AF6KXJU4.mjs +8 -0
  202. package/dist/server/components.mjs +2270 -835
  203. package/dist/server/config-template-validation.mjs +221 -15
  204. package/dist/server/config-validation.mjs +426 -77
  205. package/dist/server/config.mjs +426 -77
  206. package/dist/server/data.mjs +427 -82
  207. package/dist/server/index.mjs +94 -10
  208. package/dist/server/next/revalidate.mjs +229 -34
  209. package/dist/server/next.mjs +2439 -888
  210. package/dist/server/page-converter.mjs +335 -74
  211. package/dist/server/prebuild.mjs +1 -1
  212. package/dist/server/rendering/server.mjs +2281 -846
  213. package/dist/server/rendering.mjs +2298 -860
  214. package/dist/server/routing.mjs +860 -113
  215. package/dist/server/server.mjs +452 -92
  216. package/dist/server/theme-bridge.mjs +164 -2
  217. package/dist/server/theme.mjs +2 -2
  218. package/dist/server/webhooks.mjs +129 -25
  219. package/dist/styles/index.css +55 -0
  220. package/package.json +2 -1
  221. package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +0 -8
  222. package/dist/sdk-runtime-ZJLKC6DR.mjs +0 -8
@@ -304,6 +304,9 @@ function resolveRepeaterGridColumnFieldId(options) {
304
304
  return asNonEmptyString(options?.id) ?? DEFAULT_REPEATER_GRID_COLUMN_FIELD_ID;
305
305
  }
306
306
 
307
+ // ../blocks/src/system/icons/presets.ts
308
+ var ICON_PICKER_PRESETS = ["cta", "feature"];
309
+
307
310
  // ../blocks/src/system/manifest/schema.ts
308
311
  var visibilityLevels = ["admin", "designer", "author"];
309
312
  var MEDIA_KINDS = [
@@ -382,6 +385,8 @@ var uiSchema = z2.object({
382
385
  mediaPickerAutoOpen: z2.boolean().optional(),
383
386
  showMediaPreview: z2.boolean().optional(),
384
387
  showMediaOverlayActions: z2.boolean().optional(),
388
+ mediaPreviewMaxWidth: z2.enum(["xs", "sm", "md", "none"]).optional(),
389
+ preventMediaPreviewUpscale: z2.boolean().optional(),
385
390
  mediaDelivery: mediaDeliverySchema.optional(),
386
391
  mediaDeliveryByVariant: z2.record(z2.string(), mediaDeliverySchema).optional(),
387
392
  // Optional input hints for validators/widgets
@@ -460,7 +465,7 @@ var uiSchema = z2.object({
460
465
  layoutGridColumnField: z2.string().optional(),
461
466
  layoutGridMaxRows: z2.number().int().positive().optional(),
462
467
  // Icon picker configuration (used when ui.widget === 'iconPicker')
463
- iconPickerPreset: z2.enum(["cta"]).optional(),
468
+ iconPickerPreset: z2.enum(ICON_PICKER_PRESETS).optional(),
464
469
  // Entry picker configuration
465
470
  contentTypeField: z2.string().optional(),
466
471
  fixedContentType: z2.string().optional(),
@@ -631,6 +636,9 @@ var repeaterFieldSchema = baseFieldSchema.extend({
631
636
  type: z2.literal("repeater"),
632
637
  itemLabel: z2.string().default("Item"),
633
638
  itemLabelSource: z2.string().optional(),
639
+ showSummary: z2.boolean().optional(),
640
+ summaryFields: z2.string().array().optional(),
641
+ summaryMaxChars: z2.number().int().positive().optional(),
634
642
  minItems: z2.number().int().min(0).default(0),
635
643
  maxItems: z2.number().int().positive().optional(),
636
644
  // Monomorphic mode
@@ -2049,7 +2057,7 @@ var themeColorBaseTokenNames = [
2049
2057
  "accentForeground"
2050
2058
  ];
2051
2059
  var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
2052
- var SHADE_STEPS = [
2060
+ var themeColorShadeSteps = [
2053
2061
  "50",
2054
2062
  "100",
2055
2063
  "200",
@@ -2062,7 +2070,7 @@ var SHADE_STEPS = [
2062
2070
  "900",
2063
2071
  "950"
2064
2072
  ];
2065
- var shadeStepSet = new Set(SHADE_STEPS);
2073
+ var shadeStepSet = new Set(themeColorShadeSteps);
2066
2074
  function isKnownBaseToken(value) {
2067
2075
  return themeColorBaseTokenSet.has(value);
2068
2076
  }
@@ -5689,6 +5697,7 @@ var curatedSiteStyleIdValues = [
5689
5697
  "site-style:personal-retreat-journal",
5690
5698
  "site-style:tactile-workshop",
5691
5699
  "site-style:modern-wellness",
5700
+ "site-style:clarity-zen-blue",
5692
5701
  SOFT_EARTH_SITE_STYLE_ID_VALUE,
5693
5702
  "site-style:bold-launch",
5694
5703
  "site-style:south-west-twerk-school"
@@ -6274,6 +6283,114 @@ var curatedSiteStyles = [
6274
6283
  paletteChoice("warm-neutral-clay")
6275
6284
  ]
6276
6285
  }),
6286
+ defineCuratedSiteStyle({
6287
+ id: "site-style:clarity-zen-blue",
6288
+ name: "Clarity Zen",
6289
+ description: "Calm, editorial, and reassuring for therapy, counselling, and wellbeing support practices.",
6290
+ generationBrief: "Use a calm, soft palette, editorial serif headings, warm grounded copy, rounded cards, calm proof sections, and clear booking routes. Keep the tone compassionate and straightforward, with professional trust rather than hard-sell wellness language.",
6291
+ siteCreatorSelection: {
6292
+ kind: "site_creator_keyword_heuristic",
6293
+ priority: 25
6294
+ },
6295
+ selectionKeywordRules: [
6296
+ { kind: "substring", value: "psychotherap" },
6297
+ { kind: "phrase", value: "mental health" },
6298
+ { kind: "phrase", value: "talk therapy" },
6299
+ { kind: "phrase", value: "therapy and wellbeing" }
6300
+ ],
6301
+ tokenRecipes: {
6302
+ palette: "brand-led",
6303
+ contrast: "standard",
6304
+ radius: "rounded",
6305
+ shadow: "subtle",
6306
+ typography: "serif-editorial",
6307
+ spacing: "airy",
6308
+ motion: "subtle"
6309
+ },
6310
+ compositionBudget: balancedBudget,
6311
+ themeOverrides: {
6312
+ typography: {
6313
+ body: {
6314
+ family: "Inter, system-ui, sans-serif",
6315
+ size: "md",
6316
+ weight: "regular",
6317
+ lineHeight: "relaxed",
6318
+ letterSpacing: "normal"
6319
+ },
6320
+ headings: {
6321
+ default: {
6322
+ family: '"Cormorant Garamond", Georgia, serif',
6323
+ weight: "regular",
6324
+ lineHeight: "normal",
6325
+ letterSpacing: "normal",
6326
+ colorToken: "text",
6327
+ italic: null,
6328
+ case: null
6329
+ },
6330
+ h1: {
6331
+ size: "xl",
6332
+ weight: "regular",
6333
+ lineHeight: "normal",
6334
+ letterSpacing: "normal",
6335
+ italic: null
6336
+ },
6337
+ h2: {
6338
+ size: "lg",
6339
+ weight: "regular",
6340
+ lineHeight: "normal",
6341
+ letterSpacing: "normal",
6342
+ italic: null
6343
+ },
6344
+ h3: {
6345
+ size: "md",
6346
+ weight: "regular",
6347
+ lineHeight: "normal",
6348
+ letterSpacing: "normal",
6349
+ italic: null
6350
+ }
6351
+ },
6352
+ scale: "majorThird"
6353
+ },
6354
+ bodyText: {
6355
+ intro: {
6356
+ paragraphSize: "default",
6357
+ headingSize: "editorial"
6358
+ }
6359
+ }
6360
+ },
6361
+ defaultBlockVariants: {
6362
+ "block.faq": "split-heading-columns"
6363
+ },
6364
+ recommendedAppearancePresetIds: [
6365
+ "hero-split-editorial",
6366
+ "intro-organic-statement",
6367
+ "feature-cards-raised-rule",
6368
+ "media-text-quiet-story",
6369
+ "testimonials-brand-background-quotes",
6370
+ "faq-contained-help",
6371
+ "contact-form-panel"
6372
+ ],
6373
+ recommendedHeaderLookIds: [
6374
+ "centered-calm",
6375
+ "serif-line",
6376
+ "minimal-transparent"
6377
+ ],
6378
+ recommendedFooterLookIds: [
6379
+ "footer-muted-grounding",
6380
+ "site-footer-brand-two-band"
6381
+ ],
6382
+ buttonPersonalityChoices: [
6383
+ buttonChoice("soft-pill"),
6384
+ buttonChoice("pebble"),
6385
+ buttonChoice("editorial-link")
6386
+ ],
6387
+ paletteVariantChoices: [
6388
+ paletteChoice("brand-led-cool"),
6389
+ paletteChoice("soft-natural-watercolor"),
6390
+ paletteChoice("soft-natural-stone"),
6391
+ paletteChoice("warm-neutral-cream")
6392
+ ]
6393
+ }),
6277
6394
  defineCuratedSiteStyle({
6278
6395
  id: "site-style:personal-retreat-journal",
6279
6396
  name: "Personal Retreat Journal",
@@ -8964,47 +9081,48 @@ function validateFieldDefinitions(fields3, fragmentId) {
8964
9081
  function prefixFieldId(field, scope) {
8965
9082
  const cloned = cloneFieldDefinition2(field);
8966
9083
  cloned.id = `${scope}.${field.id}`;
8967
- cloned.defaultValue = cloneUnknown(cloned.defaultValue);
9084
+ const defaultValue = cloned.defaultValue;
9085
+ cloned.defaultValue = cloneUnknown(defaultValue);
8968
9086
  cloned.visibleRoles = cloned.visibleRoles ? [...cloned.visibleRoles] : void 0;
8969
9087
  cloned.ui = cloneUnknown(cloned.ui);
8970
9088
  return cloned;
8971
9089
  }
8972
9090
  function cloneFieldDefinition2(field) {
8973
- switch (field.type) {
8974
- case "repeater":
8975
- if (field.polymorphic && field.itemTypes) {
8976
- return {
8977
- ...field,
8978
- polymorphic: true,
8979
- itemTypes: Object.fromEntries(
8980
- Object.entries(field.itemTypes).map(([key, itemType]) => [
8981
- key,
8982
- {
8983
- ...itemType,
8984
- fields: itemType.fields.map(cloneFieldDefinition2)
8985
- }
8986
- ])
8987
- )
8988
- };
8989
- } else if (field.schema) {
8990
- return {
8991
- ...field,
8992
- schema: {
8993
- fields: field.schema.fields.map(cloneFieldDefinition2)
8994
- }
8995
- };
8996
- }
8997
- return { ...field };
8998
- case "group":
9091
+ if (field.type === "repeater") {
9092
+ if (field.polymorphic && field.itemTypes) {
9093
+ return {
9094
+ ...field,
9095
+ polymorphic: true,
9096
+ itemTypes: Object.fromEntries(
9097
+ Object.entries(field.itemTypes).map(([key, itemType]) => [
9098
+ key,
9099
+ {
9100
+ ...itemType,
9101
+ fields: itemType.fields.map(cloneFieldDefinition2)
9102
+ }
9103
+ ])
9104
+ )
9105
+ };
9106
+ }
9107
+ if (field.schema) {
8999
9108
  return {
9000
9109
  ...field,
9001
9110
  schema: {
9002
9111
  fields: field.schema.fields.map(cloneFieldDefinition2)
9003
9112
  }
9004
9113
  };
9005
- default:
9006
- return { ...field };
9114
+ }
9115
+ return { ...field };
9007
9116
  }
9117
+ if (field.type === "group") {
9118
+ return {
9119
+ ...field,
9120
+ schema: {
9121
+ fields: field.schema.fields.map(cloneFieldDefinition2)
9122
+ }
9123
+ };
9124
+ }
9125
+ return { ...field };
9008
9126
  }
9009
9127
  function cloneUnknown(value) {
9010
9128
  if (value == null || typeof value !== "object") {
@@ -9773,36 +9891,46 @@ function buildCarouselLayout() {
9773
9891
  [buildTestimonialCard(repeat("data.entries", "testimonial"))]
9774
9892
  );
9775
9893
  }
9894
+ function buildResponsiveGridCards() {
9895
+ return [
9896
+ // 2 columns
9897
+ grid(
9898
+ { gap: "lg", cols: { base: 1, sm: 2 } },
9899
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9900
+ when("gridColumns", { equals: "2" })
9901
+ ),
9902
+ // 3 columns (default when unset)
9903
+ grid(
9904
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
9905
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9906
+ when("gridColumns", { equals: "3" })
9907
+ ),
9908
+ // 4 columns
9909
+ grid(
9910
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
9911
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9912
+ when("gridColumns", { equals: "4" })
9913
+ ),
9914
+ // Fallback to 3 columns when gridColumns is not set
9915
+ grid(
9916
+ { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
9917
+ [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9918
+ when("gridColumns", { not: true })
9919
+ )
9920
+ ];
9921
+ }
9776
9922
  function buildGridLayout() {
9777
9923
  return el(
9778
9924
  "div",
9779
9925
  { className: "rb-mt-12 rb-testimonials-carousel" },
9780
- [
9781
- // 2 columns
9782
- grid(
9783
- { gap: "lg", cols: { base: 1, sm: 2 } },
9784
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9785
- when("gridColumns", { equals: "2" })
9786
- ),
9787
- // 3 columns (default when unset)
9788
- grid(
9789
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
9790
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9791
- when("gridColumns", { equals: "3" })
9792
- ),
9793
- // 4 columns
9794
- grid(
9795
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3, xl: 4 } },
9796
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9797
- when("gridColumns", { equals: "4" })
9798
- ),
9799
- // Fallback to 3 columns when gridColumns is not set
9800
- grid(
9801
- { gap: "lg", cols: { base: 1, sm: 2, lg: 3 } },
9802
- [buildTestimonialCard(repeat("data.entries", "testimonial"))],
9803
- when("gridColumns", { not: true })
9804
- )
9805
- ]
9926
+ buildResponsiveGridCards()
9927
+ );
9928
+ }
9929
+ function buildGridCardsLayout(className) {
9930
+ return el(
9931
+ "div",
9932
+ { className },
9933
+ buildResponsiveGridCards()
9806
9934
  );
9807
9935
  }
9808
9936
  var testimonialsCarouselFragment = defineFragment({
@@ -11347,7 +11475,8 @@ function createBlockManifestWithContentShape(config, _contentShape) {
11347
11475
  return createBlockManifest(config);
11348
11476
  }
11349
11477
  function normalizeBlockLayout(layout) {
11350
- return Array.isArray(layout) ? [...layout] : layout;
11478
+ const rawLayout = layout;
11479
+ return Array.isArray(rawLayout) ? rawLayout : rawLayout;
11351
11480
  }
11352
11481
  function deriveComponentName(id) {
11353
11482
  const base = id.replace(/^block\./, "");
@@ -12770,6 +12899,24 @@ var questionColumnsLayout = styledSection({
12770
12899
  }),
12771
12900
  baseClass: ""
12772
12901
  });
12902
+ var splitHeadingColumnsLayout = styledSection({
12903
+ children: styledContainer({
12904
+ baseClassName: "rb-relative rb-isolate",
12905
+ children: el(
12906
+ "div",
12907
+ {
12908
+ className: "rb-faq-split-heading-columns rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
12909
+ },
12910
+ [
12911
+ el("div", { className: "rb-faq-split-heading-columns-copy" }, [headingLayout]),
12912
+ el("div", { className: "rb-faq-split-heading-columns-accordion" }, [
12913
+ questionColumnsAccordionLayout
12914
+ ])
12915
+ ]
12916
+ )
12917
+ }),
12918
+ baseClass: ""
12919
+ });
12773
12920
  var faqManifest = createBlockManifest({
12774
12921
  id: "block.faq",
12775
12922
  title: "FAQ",
@@ -12790,7 +12937,8 @@ var faqManifest = createBlockManifest({
12790
12937
  variants: {
12791
12938
  default: defaultLayout,
12792
12939
  "two-column": twoColumnLayout,
12793
- "question-columns": questionColumnsLayout
12940
+ "question-columns": questionColumnsLayout,
12941
+ "split-heading-columns": splitHeadingColumnsLayout
12794
12942
  },
12795
12943
  defaultVariant: "default",
12796
12944
  variantOptions: {
@@ -12805,6 +12953,10 @@ var faqManifest = createBlockManifest({
12805
12953
  "question-columns": {
12806
12954
  label: "Question columns",
12807
12955
  description: "A full-width heading above FAQ items split into two columns."
12956
+ },
12957
+ "split-heading-columns": {
12958
+ label: "Split heading columns",
12959
+ description: "A left heading column with FAQ items split into two columns on the right."
12808
12960
  }
12809
12961
  },
12810
12962
  description: "Accordion of frequently asked questions and answers.",
@@ -13575,6 +13727,7 @@ var siteFooterBlockDefinition = {
13575
13727
  };
13576
13728
 
13577
13729
  // ../blocks/src/system/blocks/testimonials.tsx
13730
+ var backgroundImageClassName = "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50";
13578
13731
  var wrapVariant = (variantLayout) => styledSection({
13579
13732
  children: styledContainer({
13580
13733
  children: stack(
@@ -13588,10 +13741,53 @@ var wrapVariant = (variantLayout) => styledSection({
13588
13741
  // styledContainer (rb-container) already provides horizontal padding
13589
13742
  baseClass: "",
13590
13743
  spacing: "comfortable",
13591
- imageClassName: "rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-object-cover rb-opacity-50"
13744
+ imageClassName: backgroundImageClassName
13592
13745
  });
13593
13746
  var carouselLayout = wrapVariant(buildCarouselLayout());
13594
13747
  var gridLayout2 = wrapVariant(buildGridLayout());
13748
+ var splitHeading = stack(
13749
+ { gap: "md", className: "rb-testimonials-split-heading-copy rb-max-w-xl" },
13750
+ [
13751
+ text(
13752
+ { as: "h2" },
13753
+ when("content.heading"),
13754
+ bind("content.heading")
13755
+ ),
13756
+ headingDecoration({
13757
+ family: "short-center-rule",
13758
+ placement: "after-heading"
13759
+ }),
13760
+ text(
13761
+ {
13762
+ as: "p",
13763
+ className: "rb-prose",
13764
+ style: textColorStyle("mutedText")
13765
+ },
13766
+ when("content.subheading"),
13767
+ bind("content.subheading")
13768
+ )
13769
+ ]
13770
+ );
13771
+ var splitGridLayout = styledSection({
13772
+ children: styledContainer({
13773
+ baseClassName: "rb-relative rb-isolate",
13774
+ children: el(
13775
+ "div",
13776
+ {
13777
+ className: "rb-testimonials-split-grid rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
13778
+ },
13779
+ [
13780
+ el("div", { className: "rb-testimonials-split-grid-heading" }, [splitHeading]),
13781
+ el("div", { className: "rb-testimonials-split-grid-cards" }, [
13782
+ buildGridCardsLayout("rb-testimonials-split-grid-card-list")
13783
+ ])
13784
+ ]
13785
+ )
13786
+ }),
13787
+ baseClass: "",
13788
+ spacing: "comfortable",
13789
+ imageClassName: backgroundImageClassName
13790
+ });
13595
13791
  var additionalFields = parseFieldDefinitions([
13596
13792
  // Heading fields from fragment
13597
13793
  ...testimonialsHeadingFragment.fields,
@@ -13623,7 +13819,7 @@ var additionalFields = parseFieldDefinitions([
13623
13819
  ],
13624
13820
  ui: {
13625
13821
  intent: "display",
13626
- visibleWhen: { field: "variant", equals: "grid" }
13822
+ visibleWhen: { field: "variant", oneOf: ["grid", "split-grid"] }
13627
13823
  }
13628
13824
  },
13629
13825
  // Carousel-specific fields (from fragment)
@@ -13657,7 +13853,8 @@ var testimonialsManifest = createBlockManifest({
13657
13853
  // Variant system - enables the variant switcher control in the editor
13658
13854
  variants: {
13659
13855
  carousel: carouselLayout,
13660
- grid: gridLayout2
13856
+ grid: gridLayout2,
13857
+ "split-grid": splitGridLayout
13661
13858
  },
13662
13859
  defaultVariant: "carousel",
13663
13860
  variantOptions: {
@@ -13670,6 +13867,11 @@ var testimonialsManifest = createBlockManifest({
13670
13867
  label: "Grid",
13671
13868
  description: "Responsive grid layout",
13672
13869
  icon: "Grid"
13870
+ },
13871
+ "split-grid": {
13872
+ label: "Split grid",
13873
+ description: "Heading on the left with testimonial cards on the right",
13874
+ icon: "PanelLeft"
13673
13875
  }
13674
13876
  },
13675
13877
  // Fields (variant field is auto-generated by augmentManifest)
@@ -14062,6 +14264,13 @@ var collectionBlockDefinition = {
14062
14264
  manifest: collectionManifest
14063
14265
  };
14064
14266
 
14267
+ // ../blocks/src/system/blocks/feature-card-icons.ts
14268
+ var FEATURE_CARD_ICON_TREATMENTS = [
14269
+ "plain",
14270
+ "soft-badge",
14271
+ "utility-badge"
14272
+ ];
14273
+
14065
14274
  // ../blocks/src/system/blocks/feature-cards.ts
14066
14275
  function grid3(props2, children) {
14067
14276
  return el("grid", props2 ?? void 0, children ?? void 0);
@@ -14104,6 +14313,15 @@ var featureCard = styledCard(
14104
14313
  bind("card.media")
14105
14314
  ),
14106
14315
  stack({ gap: "sm", className: "rb-feature-card-content rb-flex-1 rb-p-6" }, [
14316
+ el(
14317
+ "feature-card-icon",
14318
+ {
14319
+ treatment: { $bind: { from: "content._iconTreatment", fallback: "soft-badge" } },
14320
+ generatedAssets: { $bind: { from: "data.generatedIconAssets" } }
14321
+ },
14322
+ null,
14323
+ bind("card.icon")
14324
+ ),
14107
14325
  text(
14108
14326
  {
14109
14327
  as: "h3",
@@ -14225,6 +14443,16 @@ var featureCardsConfig = {
14225
14443
  defaultValue: "4/3",
14226
14444
  visibleWhen: { field: "media", notEquals: null }
14227
14445
  }),
14446
+ {
14447
+ id: "icon",
14448
+ type: "text",
14449
+ label: "Icon",
14450
+ required: false,
14451
+ ui: {
14452
+ widget: "iconPicker",
14453
+ iconPickerPreset: "feature"
14454
+ }
14455
+ },
14228
14456
  {
14229
14457
  id: "title",
14230
14458
  type: "text",
@@ -14260,6 +14488,19 @@ var featureCardsConfig = {
14260
14488
  ]
14261
14489
  }
14262
14490
  },
14491
+ {
14492
+ id: "_iconTreatment",
14493
+ type: "select",
14494
+ label: "Icon style",
14495
+ required: false,
14496
+ defaultValue: "soft-badge",
14497
+ multiple: false,
14498
+ options: FEATURE_CARD_ICON_TREATMENTS.map((value) => ({
14499
+ value,
14500
+ label: value === "plain" ? "Plain" : value === "soft-badge" ? "Soft badge" : "Utility badge"
14501
+ })),
14502
+ ui: { intent: "display" }
14503
+ },
14263
14504
  cardStylesField({
14264
14505
  id: "_cardStyles",
14265
14506
  label: "Card styles"
@@ -15262,8 +15503,8 @@ var eventSurfaceScopeValues = [
15262
15503
  "custom"
15263
15504
  ];
15264
15505
  var eventScheduleScopeValues = ["any", "recurring", "oneOff"];
15265
- var asEventCategoryId = (value) => value;
15266
- var asVenueId = (value) => value;
15506
+ var unsafeAsEventCategoryId = (value) => value;
15507
+ var unsafeAsVenueId = (value) => value;
15267
15508
  function normalizeEventBlockKind(value) {
15268
15509
  return value === "courses" || value === "events" ? value : "all";
15269
15510
  }
@@ -15289,10 +15530,10 @@ function normalizeEventCategoryIds(value) {
15289
15530
  if (Array.isArray(value)) {
15290
15531
  return normalizeIdList(
15291
15532
  value.filter((entry) => typeof entry === "string")
15292
- ).map(asEventCategoryId);
15533
+ ).map(unsafeAsEventCategoryId);
15293
15534
  }
15294
15535
  if (typeof value === "string") {
15295
- return normalizeIdList(value.split(",")).map(asEventCategoryId);
15536
+ return normalizeIdList(value.split(",")).map(unsafeAsEventCategoryId);
15296
15537
  }
15297
15538
  return [];
15298
15539
  }
@@ -15305,7 +15546,7 @@ function normalizeEventVenueId(value) {
15305
15546
  return null;
15306
15547
  }
15307
15548
  const trimmed = value.trim();
15308
- return trimmed ? asVenueId(trimmed) : null;
15549
+ return trimmed ? unsafeAsVenueId(trimmed) : null;
15309
15550
  }
15310
15551
  function normalizeEventStaffMemberId(value) {
15311
15552
  if (typeof value !== "string") {
@@ -22001,7 +22242,8 @@ var systemBlockDefinitionsRaw = [
22001
22242
  layoutProfiles: [
22002
22243
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
22003
22244
  layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
22004
- layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
22245
+ layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" }),
22246
+ layoutProfile({ variantKey: "split-heading-columns", family: "split", weight: "standard" })
22005
22247
  ]
22006
22248
  })),
22007
22249
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -22032,6 +22274,12 @@ var systemBlockDefinitionsRaw = [
22032
22274
  family: "grid",
22033
22275
  weight: "standard",
22034
22276
  bias: "soft"
22277
+ }),
22278
+ layoutProfile({
22279
+ variantKey: "split-grid",
22280
+ family: "split",
22281
+ weight: "featured",
22282
+ bias: "soft"
22035
22283
  })
22036
22284
  ]
22037
22285
  })),
@@ -23749,11 +23997,14 @@ function collectFieldIds(fields3) {
23749
23997
  for (const field of fieldList) {
23750
23998
  ids.add(field.id);
23751
23999
  if (field.schema && typeof field.schema === "object" && "fields" in field.schema) {
23752
- collect(field.schema.fields);
24000
+ const nestedFields = field.schema.fields;
24001
+ if (isFieldIdRecordArray(nestedFields)) {
24002
+ collect(nestedFields);
24003
+ }
23753
24004
  }
23754
- if (field.tabs && Array.isArray(field.tabs)) {
24005
+ if (isRecordArray(field.tabs)) {
23755
24006
  for (const tab of field.tabs) {
23756
- if (tab.fields && Array.isArray(tab.fields)) {
24007
+ if (isFieldIdRecordArray(tab.fields)) {
23757
24008
  collect(tab.fields);
23758
24009
  }
23759
24010
  }
@@ -23770,6 +24021,12 @@ function collectFieldIds(fields3) {
23770
24021
  collect(fields3);
23771
24022
  return ids;
23772
24023
  }
24024
+ function isRecordArray(value) {
24025
+ return Array.isArray(value);
24026
+ }
24027
+ function isFieldIdRecordArray(value) {
24028
+ return Array.isArray(value) && value.every((item) => typeof item === "object" && item !== null && typeof item.id === "string");
24029
+ }
23773
24030
  var CONTENT_NODE_TYPES = ["text", "richText", "media", "button", "link"];
23774
24031
  function collectFieldInfo(fields3) {
23775
24032
  const topLevelFieldIds = /* @__PURE__ */ new Set();
@@ -25839,7 +26096,7 @@ async function convertHtmlToManifest(input, options) {
25839
26096
 
25840
26097
  // src/page-converter/passes/pass2-population.ts
25841
26098
  var builtinContentSchema = z59.object({
25842
- content: z59.any(),
26099
+ content: z59.unknown(),
25843
26100
  rationale: z59.string()
25844
26101
  });
25845
26102
  var SECTION_STYLES_ALLOWED_KEYS = /* @__PURE__ */ new Set(["background", "spacing"]);
@@ -25899,6 +26156,9 @@ function sanitizeExtractedContent(content) {
25899
26156
  }
25900
26157
  return result;
25901
26158
  }
26159
+ function isRecord2(value) {
26160
+ return typeof value === "object" && value !== null && !Array.isArray(value);
26161
+ }
25902
26162
  function isBoxStylesField(fieldId) {
25903
26163
  return fieldId === "_sectionStyles" || fieldId === "_containerStyles" || fieldId === "_cardStyles";
25904
26164
  }
@@ -26004,7 +26264,8 @@ async function populateBuiltinBlock(sectionIndex, section2, blockInfo, ctx) {
26004
26264
  );
26005
26265
  await ctx.debug.writeText(`pass2-builtin-${sectionIndex}-raw.txt`, rawText);
26006
26266
  await ctx.debug.writeJson(`pass2-builtin-${sectionIndex}-output.json`, result);
26007
- const sanitizedContent = result.content && typeof result.content === "object" ? sanitizeExtractedContent(result.content) : result.content;
26267
+ const rawContent = result.content;
26268
+ const sanitizedContent = isRecord2(rawContent) ? sanitizeExtractedContent(rawContent) : {};
26008
26269
  return {
26009
26270
  success: true,
26010
26271
  block: {
@@ -4,7 +4,7 @@ import * as path from "path";
4
4
  import * as crypto from "crypto";
5
5
 
6
6
  // src/version.ts
7
- var SDK_VERSION = "0.78.0";
7
+ var SDK_VERSION = "0.79.0";
8
8
 
9
9
  // src/constants.ts
10
10
  var PREBUILD_PAGE_SIZE = 50;