@riverbankcms/sdk 0.82.0 → 0.84.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 (194) hide show
  1. package/README.md +16 -0
  2. package/dist/{PreviewEditorSidebar-LHGK6RIO.mjs → PreviewEditorSidebar-HML67UDA.mjs} +330 -11
  3. package/dist/{PreviewEditorUI-AXZG2SDC.mjs → PreviewEditorUI-I4BQUU6K.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-MCKMVDTK.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +200 -0
  6. package/dist/_dts/api/src/blocks.d.ts +36 -0
  7. package/dist/_dts/api/src/contentRuntime.d.ts +46 -0
  8. package/dist/_dts/api/src/endpoints.d.ts +40 -0
  9. package/dist/_dts/api/src/index.d.ts +2 -2
  10. package/dist/_dts/api/src/sdk-event-pricing.d.ts +61 -0
  11. package/dist/_dts/api/src/sdk-event-schedule.d.ts +52 -0
  12. package/dist/_dts/api/src/sdk-event-upsert.d.ts +50 -0
  13. package/dist/_dts/api/src/sdkContracts.d.ts +67 -33
  14. package/dist/_dts/api/src/shared-contracts.d.ts +13 -0
  15. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +22 -36
  16. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +46 -1
  17. package/dist/_dts/block-form/src/backend/useBackendWatch.d.ts +6 -1
  18. package/dist/_dts/block-form/src/utils/evaluateVisibility.d.ts +3 -2
  19. package/dist/_dts/block-form/src/utils/visibleWhen.d.ts +7 -0
  20. package/dist/_dts/blocks/src/PageRenderer.d.ts +11 -0
  21. package/dist/_dts/blocks/src/bindings/index.d.ts +1 -1
  22. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -1
  23. package/dist/_dts/blocks/src/client.d.ts +4 -0
  24. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +16 -4
  25. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -2016
  26. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -2016
  27. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -2016
  28. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -2016
  29. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -2016
  30. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +171 -0
  31. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +288 -2016
  32. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -2016
  33. package/dist/_dts/blocks/src/system/blocks/hero.d.ts +3 -2
  34. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  35. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -7
  36. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +2534 -151
  37. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -2016
  38. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -2016
  39. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -2016
  40. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +36 -3
  41. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +2 -2
  42. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  43. package/dist/_dts/blocks/src/system/fields/aspectRatio.d.ts +4 -1
  44. package/dist/_dts/blocks/src/system/fields/imageShape.d.ts +30 -0
  45. package/dist/_dts/blocks/src/system/fragments/library/heroLayoutControls.d.ts +25 -0
  46. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +35 -161
  47. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +24 -6
  48. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +12 -3
  49. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +33 -0
  50. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.state.d.ts +303 -0
  51. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +20 -1
  52. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -3
  53. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/utils.d.ts +1 -1
  54. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +26 -6
  55. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/pricing.d.ts +14 -0
  56. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +1 -1
  57. package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +1 -1
  58. package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +1 -1
  59. package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +1 -1
  60. package/dist/_dts/content-editor/src/controller/useInvalidBlockRecovery.d.ts +1 -1
  61. package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +2 -1
  62. package/dist/_dts/content-editor/src/primitives/PreviewTextEditor.d.ts +1 -0
  63. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  64. package/dist/_dts/content-model/src/entry-slots/types.d.ts +356 -0
  65. package/dist/_dts/content-model/src/index.d.ts +1 -0
  66. package/dist/_dts/content-model/src/templates/defaults.d.ts +7 -0
  67. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +100 -5
  68. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +6 -1
  69. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +1 -1
  70. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +3 -2
  71. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +3 -2
  72. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockReorder.d.ts +3 -2
  73. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +27 -0
  74. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  75. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +8 -0
  76. package/dist/_dts/media-core/src/mediaUsageProjection.d.ts +37 -3
  77. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +4 -2
  78. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  79. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +3 -1
  80. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +19 -0
  81. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +8 -0
  82. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -1
  83. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +1 -1
  84. package/dist/_dts/preview-next/src/client/preview/linkedEntryEditEvents.d.ts +9 -0
  85. package/dist/_dts/preview-next/src/client/preview/previewCustomizeControls.d.ts +9 -8
  86. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +10 -1
  87. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +5 -1
  88. package/dist/_dts/sdk/src/bookings/index.d.ts +5 -4
  89. package/dist/_dts/sdk/src/bookings/types.d.ts +2 -2
  90. package/dist/_dts/sdk/src/cli/content/reader.d.ts +9 -8
  91. package/dist/_dts/sdk/src/cli/content/writer.d.ts +6 -1
  92. package/dist/_dts/sdk/src/cli/helpers.d.ts +10 -5
  93. package/dist/_dts/sdk/src/cli/merge-remote/entryLocal.d.ts +2 -2
  94. package/dist/_dts/sdk/src/cli/merge-remote/entryMerge.d.ts +2 -1
  95. package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +2 -2
  96. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
  97. package/dist/_dts/sdk/src/client/management/types.d.ts +40 -10
  98. package/dist/_dts/sdk/src/config/field-definitions.d.ts +13 -7
  99. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +26 -3
  100. package/dist/_dts/sdk/src/public-api/contracts.d.ts +13 -0
  101. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
  102. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +6 -1
  103. package/dist/_dts/sdk/src/rendering/overrides.d.ts +6 -1
  104. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  105. package/dist/_dts/sdk/src/version.d.ts +1 -1
  106. package/dist/_dts/site-commands/src/commands.d.ts +15 -0
  107. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
  108. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  109. package/dist/_dts/theme-core/src/buttons/personalities/ornate-ritual.d.ts +16 -0
  110. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +1 -1
  111. package/dist/_dts/theme-core/src/buttons/types.d.ts +3 -3
  112. package/dist/_dts/theme-core/src/cards/types.d.ts +15 -15
  113. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  114. package/dist/_dts/theme-core/src/inputs/types.d.ts +1 -1
  115. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +33 -33
  116. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  117. package/dist/_dts/theme-core/src/palette/variants/warm-dark.d.ts +16 -0
  118. package/dist/_dts/theme-core/src/schema.d.ts +30 -25
  119. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  120. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +141 -1
  121. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -0
  122. package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +110 -5
  123. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  124. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  125. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +5 -1
  126. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  127. package/dist/_dts/theme-core/src/site-styles/types.d.ts +1 -1
  128. package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +16 -1
  129. package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +1 -0
  130. package/dist/_dts/theme-core/src/utils/colorStyles.d.ts +6 -6
  131. package/dist/{chunk-2BUMISSH.mjs → chunk-3LXFQS7T.mjs} +1 -1
  132. package/dist/{chunk-G35HOQEN.mjs → chunk-5E33VO6J.mjs} +132 -46
  133. package/dist/{chunk-HKB6XVIP.mjs → chunk-6X2OVO3S.mjs} +2 -2
  134. package/dist/{chunk-6FWNF3DJ.mjs → chunk-HFMGVJCE.mjs} +158 -20
  135. package/dist/{chunk-FIREV57T.mjs → chunk-LBBPD2IW.mjs} +40 -0
  136. package/dist/{chunk-XQR6THQJ.mjs → chunk-MSHZO4SL.mjs} +3193 -1216
  137. package/dist/cli/index.mjs +2635 -575
  138. package/dist/cli/init-docs/content/getting-started.md +2 -0
  139. package/dist/cli/init-docs/content/workflow-templates.md +93 -2
  140. package/dist/client/{accordion-G34C45TW.mjs → accordion-ESY65T56.mjs} +2 -2
  141. package/dist/client/{bookingForm-BLBVKSAQ.mjs → bookingForm-JRFNZUHD.mjs} +5 -5
  142. package/dist/client/bookings.mjs +3539 -269
  143. package/dist/client/{carousel-7ZVTBRMD.mjs → carousel-CPR5VWIP.mjs} +3 -3
  144. package/dist/client/{cart-Q6S6LZUO.mjs → cart-ZUX5BA7O.mjs} +6 -6
  145. package/dist/client/{checkout-5QJLDE4I.mjs → checkout-RULGBADZ.mjs} +6 -6
  146. package/dist/client/{chunk-CHAB5ACD.mjs → chunk-52I7BGEK.mjs} +2 -2
  147. package/dist/client/{chunk-CSZGLBYR.mjs → chunk-5ZEAZ33K.mjs} +1 -1
  148. package/dist/client/{chunk-ZF4XEWDM.mjs → chunk-BT6AEIKN.mjs} +1 -1
  149. package/dist/client/{chunk-RJHTCTCZ.mjs → chunk-HXPWP5EN.mjs} +268 -15
  150. package/dist/client/{chunk-5PQH4Y75.mjs → chunk-JWEYB4V6.mjs} +2 -2
  151. package/dist/client/{chunk-EQKYMX4N.mjs → chunk-RDJFCPY3.mjs} +158 -51
  152. package/dist/client/{chunk-SBBSMFFG.mjs → chunk-SYIJ5JO2.mjs} +1 -1
  153. package/dist/client/{chunk-WJFHDTYF.mjs → chunk-URQCZD5W.mjs} +5 -5
  154. package/dist/client/{chunk-U2EW7RSR.mjs → chunk-Z5OBQ5I4.mjs} +1 -1
  155. package/dist/client/{chunk-S3MKFGOG.mjs → chunk-ZE5G642V.mjs} +1 -1
  156. package/dist/client/client.mjs +2391 -673
  157. package/dist/client/{courseRegistration-VUG2JJDB.mjs → courseRegistration-QTUDC35T.mjs} +5 -5
  158. package/dist/client/{eventCalendar-E7D2LD4N.mjs → eventCalendar-Q7NS4XLD.mjs} +7 -7
  159. package/dist/client/{eventCombined-FUZ2Z3CS.mjs → eventCombined-QAO7VUO5.mjs} +7 -7
  160. package/dist/client/{eventDetails-QRITJAOW.mjs → eventDetails-WTNNU6Q3.mjs} +7 -7
  161. package/dist/client/{eventListing-INMQMJZ5.mjs → eventListing-5TA2ELDT.mjs} +7 -7
  162. package/dist/client/{eventRegistration-TOOJD4WU.mjs → eventRegistration-M6USZGRF.mjs} +7 -7
  163. package/dist/client/{form-BOWN7ZNQ.mjs → form-DGVGXLMH.mjs} +2 -2
  164. package/dist/client/{headerSection-HFQNZOUU.mjs → headerSection-O2AGMPCU.mjs} +3 -3
  165. package/dist/client/hooks.mjs +1636 -385
  166. package/dist/client/{locationMap-VUZGC7Y5.mjs → locationMap-EJRNRIKJ.mjs} +2 -2
  167. package/dist/client/{newsletterForm-X2XQTPCB.mjs → newsletterForm-7NTC2DTR.mjs} +2 -2
  168. package/dist/client/{productDetail-TA7D2G2B.mjs → productDetail-HH4LP53D.mjs} +6 -6
  169. package/dist/client/{productList-AZOLOZKM.mjs → productList-YVHYM2AF.mjs} +6 -6
  170. package/dist/client/rendering/client.mjs +2303 -1068
  171. package/dist/client/rendering/islands.mjs +19 -19
  172. package/dist/client/rendering.mjs +2587 -796
  173. package/dist/client/{shop-ZDLO7IIG.mjs → shop-UIFX7XRK.mjs} +6 -6
  174. package/dist/preview-next/before-render.mjs +40 -0
  175. package/dist/preview-next/client/runtime.mjs +5 -5
  176. package/dist/preview-next/middleware.mjs +40 -0
  177. package/dist/{sdk-runtime-CTWKNBDQ.mjs → sdk-runtime-ZENAOYMN.mjs} +6 -6
  178. package/dist/server/components.mjs +2028 -457
  179. package/dist/server/config-validation.mjs +1629 -377
  180. package/dist/server/config.mjs +1629 -377
  181. package/dist/server/data.mjs +1636 -385
  182. package/dist/server/index.mjs +42 -1
  183. package/dist/server/next.mjs +2215 -571
  184. package/dist/server/page-converter.mjs +2068 -884
  185. package/dist/server/prebuild.mjs +1 -1
  186. package/dist/server/rendering/server.mjs +2040 -469
  187. package/dist/server/rendering.mjs +2119 -475
  188. package/dist/server/routing.mjs +1711 -419
  189. package/dist/server/server.mjs +1718 -394
  190. package/dist/server/theme-bridge.mjs +1180 -101
  191. package/dist/server/theme.mjs +92 -1
  192. package/dist/styles/index.css +292 -36
  193. package/package.json +1 -1
  194. package/dist/SdkPreviewModeRuntime-RNVRHFFR.mjs +0 -8
@@ -3270,6 +3270,46 @@ var init_endpoints = __esm({
3270
3270
  auth: "user",
3271
3271
  responseKind: "json"
3272
3272
  },
3273
+ listEntrySlotBlocks: {
3274
+ path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks",
3275
+ method: "GET",
3276
+ tags: ["site-{siteId}", "content-entry-{entryId}", "entry-slot-{slotKey}", "blocks"],
3277
+ auth: "user",
3278
+ responseKind: "json",
3279
+ errors: ["resource:not_found"]
3280
+ },
3281
+ listEntryPageContentSlots: {
3282
+ path: "/sites/{siteId}/content/{type}/{entryId}/slots",
3283
+ method: "GET",
3284
+ tags: ["site-{siteId}", "content-entry-{entryId}", "entry-slots", "blocks"],
3285
+ auth: "user",
3286
+ responseKind: "json",
3287
+ errors: ["resource:not_found"]
3288
+ },
3289
+ createEntrySlotBlock: {
3290
+ path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks",
3291
+ method: "POST",
3292
+ tags: ["site-{siteId}", "content-entry-{entryId}", "entry-slot-{slotKey}", "blocks"],
3293
+ auth: "user",
3294
+ responseKind: "json",
3295
+ errors: ["validation:invalid_input", "resource:not_found"]
3296
+ },
3297
+ reorderEntrySlotBlocks: {
3298
+ path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks/reorder",
3299
+ method: "POST",
3300
+ tags: ["site-{siteId}", "content-entry-{entryId}", "entry-slot-{slotKey}", "blocks"],
3301
+ auth: "user",
3302
+ responseKind: "json",
3303
+ errors: ["validation:invalid_input", "resource:not_found"]
3304
+ },
3305
+ deleteEntrySlotBlock: {
3306
+ path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks/{blockId}",
3307
+ method: "DELETE",
3308
+ tags: ["site-{siteId}", "content-entry-{entryId}", "entry-slot-{slotKey}", "blocks"],
3309
+ auth: "user",
3310
+ responseKind: "json",
3311
+ errors: ["resource:not_found"]
3312
+ },
3273
3313
  createBlock: {
3274
3314
  path: "/sites/{siteId}/pages/{pageId}/blocks",
3275
3315
  method: "POST",
@@ -7837,7 +7877,7 @@ function createSdkSelectField(input) {
7837
7877
  })
7838
7878
  );
7839
7879
  }
7840
- var visibilityLevels, MEDIA_KINDS, DISPLAY_MEDIA_KINDS, PUBLIC_FILE_FIELD_KINDS, siteOptionSources, mediaDeliverySchema, selectOptionSchema, selectSourceSchema, uiSchema, baseFieldSchema, textFieldSchema, richTextFieldSchema, mediaFieldSchema, fileFieldSchema, booleanFieldSchema, dateFieldSchema, timeFieldSchema, dateTimeFieldSchema, slugFieldSchema, urlFieldSchema, linkFieldSchema, selectFieldSchema, referenceFieldSchema, itemTypeSchema, repeaterFieldSchema, groupFieldSchema, modalFieldSchema, numberFieldSchema, tabDefinitionSchema, tabGroupFieldSchema, presetOptionSchema, presetOrCustomFieldSchema, contentTypeSelectFieldSchema, entryPickerFieldSchema, _fieldSchemaInternal, fieldSchema, slotSchema, typographyTokens, colorTokens, spacingTokens, radiusTokens, styleTokenSchema, behaviourSchema, quickFieldPrioritySchema, previewCustomizeManifestCurationSchema, blockCategoryEnum, manifestSchema;
7880
+ var visibilityLevels, MEDIA_KINDS, DISPLAY_MEDIA_KINDS, PUBLIC_FILE_FIELD_KINDS, siteOptionSources, mediaDeliverySchema, selectOptionSchema, selectSourceSchema, visibleWhenPredicateSchema, visibleWhenSchema, uiSchema, baseFieldSchema, textFieldSchema, richTextFieldSchema, mediaFieldSchema, fileFieldSchema, booleanFieldSchema, dateFieldSchema, timeFieldSchema, dateTimeFieldSchema, slugFieldSchema, urlFieldSchema, linkFieldSchema, selectFieldSchema, referenceFieldSchema, itemTypeSchema, repeaterFieldSchema, groupFieldSchema, modalFieldSchema, numberFieldSchema, tabDefinitionSchema, tabGroupFieldSchema, presetOptionSchema, presetOrCustomFieldSchema, contentTypeSelectFieldSchema, entryPickerFieldSchema, _fieldSchemaInternal, fieldSchema, slotSchema, typographyTokens, colorTokens, spacingTokens, radiusTokens, styleTokenSchema, behaviourSchema, quickFieldPrioritySchema, previewCustomizeManifestCurationSchema, blockCategoryEnum, manifestSchema;
7841
7881
  var init_schema2 = __esm({
7842
7882
  "../blocks/src/system/manifest/schema.ts"() {
7843
7883
  "use strict";
@@ -7896,6 +7936,21 @@ var init_schema2 = __esm({
7896
7936
  kind: z5.literal("sdk")
7897
7937
  })
7898
7938
  ]);
7939
+ visibleWhenPredicateSchema = z5.object({
7940
+ field: z5.string().min(1),
7941
+ equals: z5.any().optional(),
7942
+ notEquals: z5.any().optional(),
7943
+ oneOf: z5.array(z5.any()).optional(),
7944
+ notIn: z5.array(z5.any()).optional(),
7945
+ minItems: z5.number().int().nonnegative().optional(),
7946
+ maxItems: z5.number().int().nonnegative().optional()
7947
+ });
7948
+ visibleWhenSchema = z5.union([
7949
+ visibleWhenPredicateSchema,
7950
+ z5.object({
7951
+ allOf: z5.array(visibleWhenPredicateSchema).min(1)
7952
+ })
7953
+ ]);
7899
7954
  uiSchema = z5.object({
7900
7955
  widget: z5.string().optional(),
7901
7956
  // Container/widget presets (used by Group/Repeater widgets themselves, not for widget selection)
@@ -7928,13 +7983,7 @@ var init_schema2 = __esm({
7928
7983
  showValue: z5.boolean().optional(),
7929
7984
  pattern: z5.string().optional(),
7930
7985
  placeholder: z5.string().optional(),
7931
- visibleWhen: z5.object({
7932
- field: z5.string().min(1),
7933
- equals: z5.any().optional(),
7934
- notEquals: z5.any().optional(),
7935
- oneOf: z5.array(z5.any()).optional(),
7936
- notIn: z5.array(z5.any()).optional()
7937
- }).optional(),
7986
+ visibleWhen: visibleWhenSchema.optional(),
7938
7987
  // Modal configuration for modal and group fields
7939
7988
  modalConfig: z5.object({
7940
7989
  buttonLabel: z5.string().optional(),
@@ -9003,6 +9052,7 @@ var init_types2 = __esm({
9003
9052
  ];
9004
9053
  eyebrowTreatmentValues = [
9005
9054
  "plain",
9055
+ "accent",
9006
9056
  "pill",
9007
9057
  "accent-pill",
9008
9058
  "pill-bounce",
@@ -12791,6 +12841,102 @@ var init_joy_stamp = __esm({
12791
12841
  }
12792
12842
  });
12793
12843
 
12844
+ // ../theme-core/src/buttons/personalities/ornate-ritual.ts
12845
+ var ornateRitual;
12846
+ var init_ornate_ritual = __esm({
12847
+ "../theme-core/src/buttons/personalities/ornate-ritual.ts"() {
12848
+ "use strict";
12849
+ init_types5();
12850
+ ornateRitual = defineButtonPersonality({
12851
+ id: "ornate-ritual",
12852
+ name: "Ornate Ritual",
12853
+ description: "Ceremonial framed buttons with jewel-toned fills and quiet color-change hover states.",
12854
+ tags: { tone: "classic", energy: "vibrant", motion: "subtle", era: "organic" },
12855
+ buttonSystem: {
12856
+ global: {
12857
+ cornerStyle: "rounded",
12858
+ shadow: "none",
12859
+ textTransform: "uppercase",
12860
+ fontWeight: 600,
12861
+ borderWidth: 1,
12862
+ hoverTransform: "none",
12863
+ hoverColor: "none",
12864
+ letterSpacing: "loose"
12865
+ },
12866
+ sizes: {
12867
+ sm: { padding: "0.5625rem 1.25rem", fontSize: "text-xs" },
12868
+ md: { padding: "0.75rem 1.75rem", fontSize: "text-xs" },
12869
+ lg: { padding: "0.875rem 2.25rem", fontSize: "text-sm" },
12870
+ xl: { padding: "1rem 2.75rem", fontSize: "text-base" }
12871
+ },
12872
+ variants: [
12873
+ {
12874
+ id: "primary",
12875
+ name: "Primary",
12876
+ enabled: true,
12877
+ priority: 1,
12878
+ background: { type: "solid", colorToken: "primary" },
12879
+ textColorToken: "primaryForeground",
12880
+ borderRadius: "rounded-md",
12881
+ border: { widthClass: "border", colorToken: "primary" },
12882
+ shadow: { elevation: "none", softness: null, position: "bottom" },
12883
+ effects: {
12884
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "primary-100" } }],
12885
+ active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
12886
+ }
12887
+ },
12888
+ {
12889
+ id: "secondary",
12890
+ name: "Secondary",
12891
+ enabled: true,
12892
+ priority: 2,
12893
+ background: { type: "solid", colorToken: "secondary" },
12894
+ textColorToken: "primaryForeground",
12895
+ borderRadius: "rounded-md",
12896
+ border: { widthClass: "border", colorToken: "primary" },
12897
+ shadow: { elevation: "none", softness: null, position: "bottom" },
12898
+ effects: {
12899
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
12900
+ }
12901
+ },
12902
+ {
12903
+ id: "outline",
12904
+ name: "Outline",
12905
+ enabled: true,
12906
+ priority: 3,
12907
+ background: { type: "transparent" },
12908
+ textColorToken: "primary",
12909
+ borderRadius: "rounded-md",
12910
+ border: { widthClass: "border", colorToken: "primary" },
12911
+ shadow: { elevation: "none", softness: null, position: "bottom" },
12912
+ effects: {
12913
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "muted" } }]
12914
+ }
12915
+ },
12916
+ {
12917
+ id: "ghost",
12918
+ name: "Ghost",
12919
+ enabled: true,
12920
+ priority: 3,
12921
+ background: { type: "transparent" },
12922
+ textColorToken: "accent",
12923
+ borderRadius: "rounded-none",
12924
+ sizes: {
12925
+ sm: { padding: "0.375rem 0", fontSize: "text-xs" },
12926
+ md: { padding: "0.5rem 0", fontSize: "text-sm" },
12927
+ lg: { padding: "0.625rem 0", fontSize: "text-base" },
12928
+ xl: { padding: "0.75rem 0", fontSize: "text-lg" }
12929
+ },
12930
+ effects: {
12931
+ base: [{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }]
12932
+ }
12933
+ }
12934
+ ]
12935
+ }
12936
+ });
12937
+ }
12938
+ });
12939
+
12794
12940
  // ../theme-core/src/buttons/personalities/pebble.ts
12795
12941
  var pebble;
12796
12942
  var init_pebble = __esm({
@@ -13086,6 +13232,7 @@ var init_personalities = __esm({
13086
13232
  init_editorial_link();
13087
13233
  init_ink_stamp();
13088
13234
  init_joy_stamp();
13235
+ init_ornate_ritual();
13089
13236
  init_pebble();
13090
13237
  init_showtime_pill();
13091
13238
  init_soft_pill();
@@ -13099,7 +13246,8 @@ var init_personalities = __esm({
13099
13246
  inkStamp,
13100
13247
  brushedWash,
13101
13248
  showtimePill,
13102
- joyStamp
13249
+ joyStamp,
13250
+ ornateRitual
13103
13251
  ];
13104
13252
  personalitiesById = new Map(
13105
13253
  buttonPersonalities.map((p) => [p.id, p])
@@ -13883,7 +14031,7 @@ function rgbColorValue(token) {
13883
14031
  if (alpha === void 0) {
13884
14032
  return `rgb(var(${cssVar}))`;
13885
14033
  }
13886
- return `rgba(var(${cssVar}), ${alpha})`;
14034
+ return `rgb(var(${cssVar}) / ${alpha})`;
13887
14035
  }
13888
14036
  function backgroundColorStyle(token) {
13889
14037
  return { backgroundColor: rgbColorValue(token) };
@@ -15044,7 +15192,7 @@ var init_warm_neutral = __esm({
15044
15192
  });
15045
15193
 
15046
15194
  // ../theme-core/src/palette/variants/warm-dark.ts
15047
- var warmDarkEmber;
15195
+ var warmDarkEmber, warmDarkKirtanGold;
15048
15196
  var init_warm_dark = __esm({
15049
15197
  "../theme-core/src/palette/variants/warm-dark.ts"() {
15050
15198
  "use strict";
@@ -15071,6 +15219,28 @@ var init_warm_dark = __esm({
15071
15219
  { name: "border", hex: "#894e31" }
15072
15220
  ]
15073
15221
  });
15222
+ warmDarkKirtanGold = definePaletteVariant({
15223
+ id: "warm-dark-kirtan-gold",
15224
+ name: "Warm Dark \u2014 Kirtan Gold",
15225
+ description: "Deep plum ground with pale gold primary, rose accent, and soft devotional text.",
15226
+ tags: { tone: "bold", energy: "calm", era: "editorial" },
15227
+ mode: "dark",
15228
+ colors: [
15229
+ { name: "primary", hex: "#ffcdb2" },
15230
+ { name: "secondary", hex: "#b5838d" },
15231
+ { name: "accent", hex: "#e5989b" },
15232
+ { name: "success", hex: "#8fbf8f" },
15233
+ { name: "warning", hex: "#f2b86b" },
15234
+ { name: "destructive", hex: "#d96b6b" },
15235
+ { name: "background", hex: "#403944" },
15236
+ { name: "surface", hex: "#403944" },
15237
+ { name: "surfaceAlt", hex: "#372f3b" },
15238
+ { name: "muted", hex: "#4d4550" },
15239
+ { name: "text", hex: "#e6d2d5" },
15240
+ { name: "primaryForeground", hex: "#403944" },
15241
+ { name: "border", hex: "#8d747a" }
15242
+ ]
15243
+ });
15074
15244
  }
15075
15245
  });
15076
15246
 
@@ -15106,7 +15276,8 @@ var init_variants = __esm({
15106
15276
  softNaturalWatercolor,
15107
15277
  softNaturalLilac,
15108
15278
  // Warm-dark family (dark mode)
15109
- warmDarkEmber
15279
+ warmDarkEmber,
15280
+ warmDarkKirtanGold
15110
15281
  ];
15111
15282
  paletteVariantsById = new Map(
15112
15283
  paletteVariants.map((v) => [v.id, v])
@@ -16800,8 +16971,69 @@ var init_headerLooks = __esm({
16800
16971
  function asFooterLookId(value) {
16801
16972
  return value;
16802
16973
  }
16974
+ function asFooterLayoutId(value) {
16975
+ return value;
16976
+ }
16977
+ function asFooterStyleId(value) {
16978
+ return value;
16979
+ }
16980
+ function identityQuietFooter(theme) {
16981
+ return {
16982
+ ...theme.footer,
16983
+ variant: "simple",
16984
+ maxWidth: "container",
16985
+ background: {
16986
+ type: "color",
16987
+ color: "surface"
16988
+ },
16989
+ navStyle: "minimal",
16990
+ navWeight: "regular",
16991
+ navColor: "text",
16992
+ navLinkStyle: {
16993
+ typography: "body",
16994
+ fontWeight: "regular",
16995
+ textTransform: "none",
16996
+ italic: false,
16997
+ colorToken: "text",
16998
+ hoverColorToken: "primary",
16999
+ padding: "none",
17000
+ borderRadius: "none"
17001
+ },
17002
+ navLayout: {
17003
+ layout: "inline-wrap",
17004
+ align: "start",
17005
+ gapX: "default",
17006
+ gapY: "tight"
17007
+ },
17008
+ logo: {
17009
+ showLogo: true,
17010
+ showLogoText: true,
17011
+ placement: "left",
17012
+ size: "sm",
17013
+ align: "start"
17014
+ },
17015
+ bottomBar: {
17016
+ enabled: false,
17017
+ fullBleed: false,
17018
+ textAlign: "left",
17019
+ paddingX: "default",
17020
+ paddingY: "compact",
17021
+ borderTop: {
17022
+ width: "none"
17023
+ }
17024
+ }
17025
+ };
17026
+ }
16803
17027
  function mutedGroundingFooter(theme) {
16804
- return theme.footer;
17028
+ return {
17029
+ ...identityQuietFooter(theme),
17030
+ background: theme.footer.background,
17031
+ navStyle: theme.footer.navStyle,
17032
+ navColor: theme.footer.navColor,
17033
+ navWeight: theme.footer.navWeight,
17034
+ navLinkStyle: theme.footer.navLinkStyle,
17035
+ bottomTextLinkStyle: theme.footer.bottomTextLinkStyle
17036
+ };
16805
17037
  }
16806
17038
  function brandTwoBandFooter(theme) {
16807
17039
  return {
@@ -16906,6 +17138,53 @@ function centeredCalmFooter(theme) {
16906
17138
  }
16907
17139
  };
16908
17140
  }
17141
+ function splitEditorialFooter(theme) {
17142
+ return {
17143
+ ...theme.footer,
17144
+ variant: "split",
17145
+ maxWidth: "container",
17146
+ background: {
17147
+ type: "color",
17148
+ color: "surface"
17149
+ },
17150
+ navStyle: "minimal",
17151
+ navWeight: "regular",
17152
+ navColor: "text",
17153
+ navLinkStyle: {
17154
+ typography: "body",
17155
+ fontWeight: "regular",
17156
+ textTransform: "none",
17157
+ italic: false,
17158
+ colorToken: "text",
17159
+ hoverColorToken: "primary",
17160
+ padding: "none",
17161
+ borderRadius: "none"
17162
+ },
17163
+ navLayout: {
17164
+ layout: "inline-wrap",
17165
+ align: "start",
17166
+ gapX: "relaxed",
17167
+ gapY: "tight"
17168
+ },
17169
+ logo: {
17170
+ showLogo: true,
17171
+ showLogoText: true,
17172
+ placement: "right",
17173
+ size: "sm",
17174
+ align: "end"
17175
+ },
17176
+ bottomBar: {
17177
+ enabled: true,
17178
+ fullBleed: false,
17179
+ textAlign: "left",
17180
+ paddingX: "default",
17181
+ paddingY: "compact",
17182
+ borderTop: {
17183
+ width: "thin"
17184
+ }
17185
+ }
17186
+ };
17187
+ }
16909
17188
  function editorialColumnsFooter(theme) {
16910
17189
  return {
16911
17190
  ...theme.footer,
@@ -16947,33 +17226,110 @@ function editorialColumnsFooter(theme) {
16947
17226
  }
16948
17227
  };
16949
17228
  }
16950
- var guaranteedFallbackFooterLookId, footerLookCatalog, footerLooksById;
17229
+ var guaranteedFallbackFooterLookId, footerLayoutCatalog, footerStyleCatalog, footerLayoutsById, footerStylesById, footerLookCatalog, footerLooksById;
16951
17230
  var init_footerLooks = __esm({
16952
17231
  "../theme-core/src/site-styles/footerLooks.ts"() {
16953
17232
  "use strict";
16954
17233
  init_customizableSurfaces();
16955
17234
  init_types2();
16956
- guaranteedFallbackFooterLookId = asFooterLookId("footer-muted-grounding");
17235
+ guaranteedFallbackFooterLookId = asFooterLookId("footer-identity-quiet");
17236
+ footerLayoutCatalog = defineExactCatalog()([
17237
+ {
17238
+ id: asFooterLayoutId("identity"),
17239
+ label: "Identity",
17240
+ description: "Logo, site text, address, and legal copy without relying on footer navigation."
17241
+ },
17242
+ {
17243
+ id: asFooterLayoutId("centered"),
17244
+ label: "Centered",
17245
+ description: "A calm centered stack for identity, short copy, and optional compact navigation.",
17246
+ maxRecommendedNavDensity: "sparse"
17247
+ },
17248
+ {
17249
+ id: asFooterLayoutId("split"),
17250
+ label: "Split",
17251
+ description: "Navigation and brand signoff separated into a wider split footer.",
17252
+ requiresFooterNav: true,
17253
+ maxRecommendedNavDensity: "balanced"
17254
+ },
17255
+ {
17256
+ id: asFooterLayoutId("columns"),
17257
+ label: "Columns",
17258
+ description: "Grouped footer navigation columns with a supporting bottom line.",
17259
+ requiresFooterNav: true,
17260
+ requiresFooterNavGroups: true
17261
+ }
17262
+ ]);
17263
+ footerStyleCatalog = defineExactCatalog()([
17264
+ {
17265
+ id: asFooterStyleId("quiet"),
17266
+ label: "Quiet",
17267
+ description: "Lightweight, practical footer treatment."
17268
+ },
17269
+ {
17270
+ id: asFooterStyleId("calm"),
17271
+ label: "Calm",
17272
+ description: "Soft centered treatment with restrained dividers."
17273
+ },
17274
+ {
17275
+ id: asFooterStyleId("editorial"),
17276
+ label: "Editorial",
17277
+ description: "Text-forward treatment with fine-line structure."
17278
+ },
17279
+ {
17280
+ id: asFooterStyleId("brand-band"),
17281
+ label: "Brand band",
17282
+ description: "High-contrast brand treatment with a stronger bottom bar."
17283
+ }
17284
+ ]);
17285
+ footerLayoutsById = new Map(
17286
+ footerLayoutCatalog.map((layout) => [layout.id, layout])
17287
+ );
17288
+ footerStylesById = new Map(
17289
+ footerStyleCatalog.map((style) => [style.id, style])
17290
+ );
16957
17291
  footerLookCatalog = defineExactCatalog()([
17292
+ {
17293
+ id: asFooterLookId("footer-identity-quiet"),
17294
+ label: "Identity footer",
17295
+ layoutId: asFooterLayoutId("identity"),
17296
+ styleId: asFooterStyleId("quiet"),
17297
+ compile: identityQuietFooter
17298
+ },
16958
17299
  {
16959
17300
  id: asFooterLookId("footer-muted-grounding"),
16960
17301
  label: "Muted grounding footer",
17302
+ layoutId: asFooterLayoutId("identity"),
17303
+ styleId: asFooterStyleId("quiet"),
17304
+ hiddenFromLayoutStyleControls: true,
16961
17305
  compile: mutedGroundingFooter
16962
17306
  },
16963
17307
  {
16964
17308
  id: asFooterLookId("footer-centered-calm"),
16965
17309
  label: "Centered calm footer",
17310
+ layoutId: asFooterLayoutId("centered"),
17311
+ styleId: asFooterStyleId("calm"),
16966
17312
  compile: centeredCalmFooter
16967
17313
  },
17314
+ {
17315
+ id: asFooterLookId("footer-split-editorial"),
17316
+ label: "Split editorial footer",
17317
+ layoutId: asFooterLayoutId("split"),
17318
+ styleId: asFooterStyleId("editorial"),
17319
+ compile: splitEditorialFooter
17320
+ },
16968
17321
  {
16969
17322
  id: asFooterLookId("footer-editorial-columns"),
16970
17323
  label: "Editorial columns footer",
17324
+ layoutId: asFooterLayoutId("columns"),
17325
+ styleId: asFooterStyleId("editorial"),
16971
17326
  compile: editorialColumnsFooter
16972
17327
  },
16973
17328
  {
16974
17329
  id: asFooterLookId("site-footer-brand-two-band"),
16975
17330
  label: "Two-band brand footer",
16976
- maxRecommendedNavDensity: "balanced",
17331
+ layoutId: asFooterLayoutId("split"),
17332
+ styleId: asFooterStyleId("brand-band"),
16977
17333
  allowedContentPresence: ["default-footer", "default-and-blocks"],
16978
17334
  compile: brandTwoBandFooter
16979
17335
  }
@@ -17063,7 +17419,7 @@ function defineTypographyPreset(preset2) {
17063
17419
  id: asTypographyPresetId(preset2.id)
17064
17420
  };
17065
17421
  }
17066
- var bodyReadablePolicy, headingFlexiblePolicy, displayHeadingPolicy, modernSansTypography, warmRoundedTypography, editorialSerifTypography, classicSerifTypography, luxeContrastTypography, boldDisplayTypography, originalJoyTypography, typographyPresets, typographyPresetsById;
17422
+ var bodyReadablePolicy, headingFlexiblePolicy, displayHeadingPolicy, modernSansTypography, warmRoundedTypography, editorialSerifTypography, classicSerifTypography, luxeContrastTypography, kirtanOrnateTypography, boldDisplayTypography, originalJoyTypography, typographyPresets, typographyPresetsById;
17067
17423
  var init_typographyPresets = __esm({
17068
17424
  "../theme-core/src/site-styles/typographyPresets.ts"() {
17069
17425
  "use strict";
@@ -17196,6 +17552,30 @@ var init_typographyPresets = __esm({
17196
17552
  },
17197
17553
  scale: "spacious"
17198
17554
  };
17555
+ kirtanOrnateTypography = {
17556
+ body: {
17557
+ family: "Jost, system-ui, sans-serif",
17558
+ size: "md",
17559
+ weight: "regular",
17560
+ lineHeight: "relaxed",
17561
+ letterSpacing: "normal"
17562
+ },
17563
+ headings: {
17564
+ default: {
17565
+ family: "Marcellus, Georgia, serif",
17566
+ weight: "regular",
17567
+ lineHeight: "normal",
17568
+ letterSpacing: "normal",
17569
+ colorToken: "primary",
17570
+ italic: null,
17571
+ case: null
17572
+ },
17573
+ h1: { size: "2xl", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null },
17574
+ h2: { size: "xl", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null },
17575
+ h3: { size: "md", weight: "regular", lineHeight: "relaxed", letterSpacing: "normal", italic: null }
17576
+ },
17577
+ scale: "spacious"
17578
+ };
17199
17579
  boldDisplayTypography = {
17200
17580
  body: {
17201
17581
  family: "Manrope, system-ui, sans-serif",
@@ -17230,16 +17610,16 @@ var init_typographyPresets = __esm({
17230
17610
  },
17231
17611
  headings: {
17232
17612
  default: {
17233
- family: "Bricolage Grotesque, system-ui, sans-serif",
17234
- weight: "bold",
17613
+ family: "Lobster, cursive",
17614
+ weight: "regular",
17235
17615
  lineHeight: "normal",
17236
- letterSpacing: "tight",
17616
+ letterSpacing: "normal",
17237
17617
  italic: null,
17238
17618
  case: null
17239
17619
  },
17240
- h1: { size: "2xl", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null },
17241
- h2: { size: "xl", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null },
17242
- h3: { size: "lg", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null }
17620
+ h1: { size: "2xl", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null },
17621
+ h2: { size: "xl", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null },
17622
+ h3: { size: "lg", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null }
17243
17623
  },
17244
17624
  scale: "balanced"
17245
17625
  };
@@ -17304,6 +17684,32 @@ var init_typographyPresets = __esm({
17304
17684
  slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
17305
17685
  typography: luxeContrastTypography
17306
17686
  }),
17687
+ defineTypographyPreset({
17688
+ id: "typography-preset:kirtan-ornate",
17689
+ name: "Kirtan Ornate",
17690
+ description: "Marcellus devotional headings over a refined Jost body, matching dark ceremonial layouts.",
17691
+ defaultFonts: { body: "Jost, system-ui, sans-serif", heading: "Marcellus, Georgia, serif" },
17692
+ recommendedFonts: {
17693
+ body: ["Jost", "Manrope", "Inter"],
17694
+ heading: ["Marcellus", "Cormorant Garamond", "Playfair Display"]
17695
+ },
17696
+ slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
17697
+ typography: kirtanOrnateTypography,
17698
+ heroTypography: {
17699
+ headlineSize: "6xl",
17700
+ headlineLineHeight: "normal",
17701
+ subheadlineSize: "xl",
17702
+ subheadlineLineHeight: "relaxed",
17703
+ microHeadlineSize: "5xl",
17704
+ microHeadlineLineHeight: "normal",
17705
+ microSubheadlineSize: "lg",
17706
+ microSubheadlineLineHeight: "relaxed",
17707
+ responsive: {
17708
+ tablet: { headlineSize: "5xl" },
17709
+ mobile: { headlineSize: "4xl", subheadlineSize: "lg" }
17710
+ }
17711
+ }
17712
+ }),
17307
17713
  defineTypographyPreset({
17308
17714
  id: "typography-preset:bold-display",
17309
17715
  name: "Bold Display",
@@ -17333,11 +17739,11 @@ var init_typographyPresets = __esm({
17333
17739
  defineTypographyPreset({
17334
17740
  id: "typography-preset:original-joy",
17335
17741
  name: "Original Joy",
17336
- description: "Bold Bricolage Grotesque display headings over a clean DM Sans body, editorial and warm.",
17337
- defaultFonts: { body: "DM Sans, system-ui, sans-serif", heading: "Bricolage Grotesque, system-ui, sans-serif" },
17742
+ description: "Lobster display headings over a clean DM Sans body, expressive and warm.",
17743
+ defaultFonts: { body: "DM Sans, system-ui, sans-serif", heading: "Lobster, cursive" },
17338
17744
  recommendedFonts: {
17339
17745
  body: ["DM Sans", "Inter", "Manrope"],
17340
- heading: ["Bricolage Grotesque", "Space Grotesk", "Archivo"]
17746
+ heading: ["Lobster", "Bricolage Grotesque", "Space Grotesk"]
17341
17747
  },
17342
17748
  slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
17343
17749
  typography: originalJoyTypography,
@@ -17363,6 +17769,344 @@ var init_typographyPresets = __esm({
17363
17769
  }
17364
17770
  });
17365
17771
 
17772
+ // ../theme-core/src/site-styles/designState.ts
17773
+ import { z as z27 } from "zod";
17774
+ function uniqueNonEmpty(values) {
17775
+ const uniqueValues = [...new Set(values)];
17776
+ const firstValue = uniqueValues[0];
17777
+ if (!firstValue) {
17778
+ throw new Error("Expected at least one Theme V2 design state option.");
17779
+ }
17780
+ return [firstValue, ...uniqueValues.slice(1)];
17781
+ }
17782
+ var themeV2DesignStateSchemaVersion, designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, heroLegibilityStrategySchema, heroCompositionIntentSchema, heroTypographyScaleIntentSchema, sectionHeightIntentSchema, imageSurfaceTreatmentIntensitySchema, imageSurfaceMotionSchema, imageSurfaceTreatmentSchema, testimonialCardTreatmentSchema, tileTreatmentSchema, eventListTreatmentSchema, eyebrowTreatmentSchema, userPanelTreatments, userFlushTreatments, userFlushBleeds, contentFrameIntentSchema, blockDesignPlanSchema, styleAuthoritySchema, blockRuntimeStyleAuthoritySchema, persistedPageDesignStateV1Schema;
17783
+ var init_designState = __esm({
17784
+ "../theme-core/src/site-styles/designState.ts"() {
17785
+ "use strict";
17786
+ init_sourceCatalogs();
17787
+ init_types2();
17788
+ init_schemaVersionedJson();
17789
+ init_rawStyleFields();
17790
+ init_rawStyleFields();
17791
+ themeV2DesignStateSchemaVersion = 1;
17792
+ designResolutionPolicySchema = z27.enum(["generated", "user", "admin", "sdk"]);
17793
+ runtimeStyleFieldNameSchema = z27.enum(themeV2RuntimeStyleFieldNames);
17794
+ nonEmptyRuntimeStyleFieldNamesSchema = z27.array(runtimeStyleFieldNameSchema).min(1).transform((fields3) => [
17795
+ fields3[0],
17796
+ ...fields3.slice(1)
17797
+ ]);
17798
+ heroLegibilityStrategySchema = z27.enum([
17799
+ "none",
17800
+ "scrim-gradient",
17801
+ "solid-panel"
17802
+ ]);
17803
+ heroCompositionIntentSchema = z27.enum([
17804
+ "center",
17805
+ "bottom-left"
17806
+ ]);
17807
+ heroTypographyScaleIntentSchema = z27.enum([
17808
+ "quiet",
17809
+ "editorial",
17810
+ "display",
17811
+ "poster"
17812
+ ]);
17813
+ sectionHeightIntentSchema = z27.enum([
17814
+ "default",
17815
+ "banner",
17816
+ "hero",
17817
+ "immersive"
17818
+ ]);
17819
+ imageSurfaceTreatmentIntensitySchema = z27.enum(["soft", "balanced", "strong"]);
17820
+ imageSurfaceMotionSchema = z27.enum(["static", "fixed-frame"]);
17821
+ imageSurfaceTreatmentSchema = z27.discriminatedUnion("kind", [
17822
+ z27.object({ kind: z27.literal("none") }).strict(),
17823
+ z27.object({
17824
+ kind: z27.literal("brand-scrim"),
17825
+ token: z27.enum(["primary", "secondary", "accent"]),
17826
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
17827
+ }).strict(),
17828
+ z27.object({
17829
+ kind: z27.literal("brand-wash"),
17830
+ token: z27.enum(["primary", "secondary", "accent"]),
17831
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
17832
+ }).strict(),
17833
+ z27.object({
17834
+ kind: z27.literal("neutral-scrim"),
17835
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
17836
+ }).strict(),
17837
+ z27.object({
17838
+ kind: z27.literal("neutral-wash"),
17839
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
17840
+ }).strict(),
17841
+ z27.object({
17842
+ kind: z27.literal("solid-panel"),
17843
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
17844
+ }).strict()
17845
+ ]);
17846
+ testimonialCardTreatmentSchema = z27.enum(["default", "accent-quote"]);
17847
+ tileTreatmentSchema = z27.enum(tileTreatmentValues);
17848
+ eventListTreatmentSchema = z27.enum(eventListTreatmentValues);
17849
+ eyebrowTreatmentSchema = z27.enum(eyebrowTreatmentValues);
17850
+ userPanelTreatments = uniqueNonEmpty(
17851
+ userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
17852
+ );
17853
+ userFlushTreatments = uniqueNonEmpty(
17854
+ userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
17855
+ );
17856
+ userFlushBleeds = uniqueNonEmpty(
17857
+ userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
17858
+ );
17859
+ contentFrameIntentSchema = z27.discriminatedUnion("kind", [
17860
+ z27.object({ kind: z27.literal("plain") }).strict(),
17861
+ z27.object({
17862
+ kind: z27.literal("panel"),
17863
+ treatment: z27.enum(userPanelTreatments)
17864
+ }).strict(),
17865
+ z27.object({
17866
+ kind: z27.literal("flush-panel"),
17867
+ treatment: z27.enum(userFlushTreatments),
17868
+ bleed: z27.enum(userFlushBleeds)
17869
+ }).strict()
17870
+ ]);
17871
+ blockDesignPlanSchema = z27.object({
17872
+ blockId: z27.string().min(1).transform(asDesignBlockId),
17873
+ blockKind: z27.string().min(1),
17874
+ purpose: z27.string().min(1),
17875
+ sectionSurface: z27.enum(userDesignOptionCatalog.sectionSurfaces),
17876
+ contentFrame: contentFrameIntentSchema,
17877
+ itemSurface: z27.enum(userDesignOptionCatalog.itemSurfaces),
17878
+ transitionAfter: z27.enum(userDesignOptionCatalog.transitions),
17879
+ emphasis: z27.enum(userDesignOptionCatalog.emphases),
17880
+ sectionHeight: sectionHeightIntentSchema.optional(),
17881
+ heroLegibility: heroLegibilityStrategySchema.optional(),
17882
+ heroComposition: heroCompositionIntentSchema.optional(),
17883
+ heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
17884
+ imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
17885
+ imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
17886
+ testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
17887
+ tileTreatment: tileTreatmentSchema.optional(),
17888
+ eventListTreatment: eventListTreatmentSchema.optional(),
17889
+ eyebrowTreatment: eyebrowTreatmentSchema.optional()
17890
+ }).strict();
17891
+ styleAuthoritySchema = z27.discriminatedUnion("kind", [
17892
+ z27.object({
17893
+ kind: z27.literal("theme-v2"),
17894
+ source: designResolutionPolicySchema,
17895
+ siteStyleId: z27.string().min(1).transform(asSiteStyleId),
17896
+ templateId: z27.string().min(1).transform(asDesignSystemTemplateId),
17897
+ templateVersion: z27.number().int().nonnegative(),
17898
+ resolverVersion: z27.number().int().nonnegative()
17899
+ }).strict(),
17900
+ z27.object({
17901
+ kind: z27.literal("legacy-raw"),
17902
+ reason: z27.enum(["pre-theme-v2", "manual-runtime-fields"])
17903
+ }).strict(),
17904
+ z27.object({
17905
+ kind: z27.literal("advanced-detached"),
17906
+ reason: z27.literal("detached-custom-runtime-fields")
17907
+ }).strict()
17908
+ ]);
17909
+ blockRuntimeStyleAuthoritySchema = z27.object({
17910
+ unit: z27.literal("block-runtime-fields"),
17911
+ blockId: z27.string().min(1).transform(asDesignBlockId),
17912
+ fields: nonEmptyRuntimeStyleFieldNamesSchema,
17913
+ authority: styleAuthoritySchema
17914
+ }).strict();
17915
+ persistedPageDesignStateV1Schema = z27.object({
17916
+ schemaVersion: z27.literal(themeV2DesignStateSchemaVersion),
17917
+ siteStyleId: z27.string().min(1).transform(asSiteStyleId),
17918
+ templateId: z27.string().min(1).transform(asDesignSystemTemplateId),
17919
+ templateVersion: z27.number().int().nonnegative(),
17920
+ resolverVersion: z27.number().int().nonnegative(),
17921
+ rhythmPresetId: z27.string().min(1),
17922
+ blocks: z27.array(blockDesignPlanSchema),
17923
+ styleAuthorities: z27.array(blockRuntimeStyleAuthoritySchema)
17924
+ }).strict();
17925
+ }
17926
+ });
17927
+
17928
+ // ../theme-core/src/site-styles/runtimeCompiler.ts
17929
+ function defineDesignRuntimeRules(rules) {
17930
+ return rules;
17931
+ }
17932
+ function defineComponentRuntimeRules(rules) {
17933
+ return rules;
17934
+ }
17935
+ function uniformSectionForeground(token) {
17936
+ return {
17937
+ textColor: token,
17938
+ headingColor: token,
17939
+ linkColor: token,
17940
+ supportingColor: token
17941
+ };
17942
+ }
17943
+ var defaultDesignRuntimeRules, defaultComponentRuntimeRules;
17944
+ var init_runtimeCompiler = __esm({
17945
+ "../theme-core/src/site-styles/runtimeCompiler.ts"() {
17946
+ "use strict";
17947
+ init_schema3();
17948
+ init_modern_minimal();
17949
+ init_expandPalette();
17950
+ init_personalities();
17951
+ init_variants();
17952
+ init_designState();
17953
+ init_types2();
17954
+ init_accessibleSurfaces();
17955
+ defaultDesignRuntimeRules = defineDesignRuntimeRules({
17956
+ sectionSurfaces: {
17957
+ base: {},
17958
+ "muted-band": {
17959
+ background: {
17960
+ type: "color",
17961
+ color: "muted"
17962
+ }
17963
+ },
17964
+ "accent-band": {
17965
+ background: {
17966
+ type: "color",
17967
+ color: "primary"
17968
+ }
17969
+ },
17970
+ "brand-depth-band": {
17971
+ background: {
17972
+ type: "color",
17973
+ color: "primary-800"
17974
+ }
17975
+ },
17976
+ "hero-image": {
17977
+ background: {
17978
+ type: "image",
17979
+ opacity: 1,
17980
+ position: "center center",
17981
+ ...uniformSectionForeground("text")
17982
+ }
17983
+ }
17984
+ },
17985
+ heroLegibility: {
17986
+ "scrim-gradient": {
17987
+ type: "gradient",
17988
+ gradient: "linear-gradient(180deg, rgba(255,255,255,0.38) 0%, rgba(244,241,234,0.62) 90%)",
17989
+ opacity: 1
17990
+ },
17991
+ "solid-panel": {
17992
+ type: "color",
17993
+ color: "surface",
17994
+ opacity: 0.88
17995
+ }
17996
+ },
17997
+ transitionClassName: (transition, fromSurface, toSurface) => transition === "none" ? null : `site-style-transition-${transition}-from-${fromSurface}-to-${toSurface}`
17998
+ });
17999
+ defaultComponentRuntimeRules = defineComponentRuntimeRules({
18000
+ panelFrames: {
18001
+ inset: {
18002
+ spacing: "comfortable",
18003
+ rounded: "xl",
18004
+ raised: false,
18005
+ background: {
18006
+ type: "color",
18007
+ color: "surfaceAlt",
18008
+ textColor: "text"
18009
+ }
18010
+ },
18011
+ raised: {
18012
+ spacing: "comfortable",
18013
+ rounded: "xl",
18014
+ raised: true,
18015
+ background: {
18016
+ type: "color",
18017
+ color: "surfaceAlt",
18018
+ textColor: "text"
18019
+ }
18020
+ },
18021
+ editorial: {
18022
+ spacing: "medium",
18023
+ rounded: "xl",
18024
+ raised: false,
18025
+ background: {
18026
+ type: "color",
18027
+ color: "surface",
18028
+ textColor: "text"
18029
+ }
18030
+ }
18031
+ },
18032
+ flushFrames: {
18033
+ "media-panel": {
18034
+ fullWidth: true,
18035
+ spacing: "none",
18036
+ rounded: "none",
18037
+ raised: false
18038
+ }
18039
+ },
18040
+ itemSurfaces: {
18041
+ none: null,
18042
+ default: {
18043
+ spacing: "medium",
18044
+ rounded: "lg",
18045
+ raised: false
18046
+ },
18047
+ flat: {
18048
+ spacing: "medium",
18049
+ rounded: "lg",
18050
+ raised: false
18051
+ },
18052
+ outlined: {
18053
+ spacing: "medium",
18054
+ rounded: "lg",
18055
+ raised: false,
18056
+ border: {
18057
+ enabled: true,
18058
+ width: "1",
18059
+ colorToken: "border"
18060
+ }
18061
+ },
18062
+ raised: {
18063
+ spacing: "medium",
18064
+ rounded: "xl",
18065
+ raised: true
18066
+ },
18067
+ inset: {
18068
+ treatment: "soft-panel",
18069
+ spacing: "comfortable",
18070
+ rounded: "xl",
18071
+ raised: false,
18072
+ border: {
18073
+ enabled: false
18074
+ },
18075
+ background: {
18076
+ type: "color",
18077
+ color: "surfaceAlt",
18078
+ textColor: "text"
18079
+ }
18080
+ },
18081
+ editorial: {
18082
+ // Boxless open column with a short rule on top; the visual treatment
18083
+ // lives in blocks-static/card-treatments.css.
18084
+ treatment: "editorial-rule",
18085
+ spacing: "none",
18086
+ rounded: "none",
18087
+ raised: false,
18088
+ border: {
18089
+ enabled: false
18090
+ }
18091
+ },
18092
+ "color-blocked": {
18093
+ // Bold, flat colour-blocked cards. The per-card background colour cycle
18094
+ // (by position) and staggered offset live in
18095
+ // blocks-static/card-treatments.css; here we set the shared shape:
18096
+ // generous padding, large radius, no border, flat (no shadow).
18097
+ treatment: "color-blocked",
18098
+ spacing: "spacious",
18099
+ rounded: "2xl",
18100
+ raised: false,
18101
+ border: {
18102
+ enabled: false
18103
+ }
18104
+ }
18105
+ }
18106
+ });
18107
+ }
18108
+ });
18109
+
17366
18110
  // ../theme-core/src/site-styles/curatedSiteStyles.ts
17367
18111
  function uniqueContentFrameKinds() {
17368
18112
  const kinds = [
@@ -17420,6 +18164,7 @@ function defineCuratedSiteStyle(input) {
17420
18164
  // clean/minimal styles default to none.
17421
18165
  headingDecoration: input.headingDecoration ?? noHeadingDecoration,
17422
18166
  ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
18167
+ ...input.designRuntimeRules ? { designRuntimeRules: input.designRuntimeRules } : {},
17423
18168
  ...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
17424
18169
  recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
17425
18170
  defaultHeaderSelection: input.defaultHeaderSelection ? {
@@ -17601,7 +18346,7 @@ function defaultTypographyPresetChoicesForRecipe(recipe) {
17601
18346
  ];
17602
18347
  }
17603
18348
  }
17604
- var SOFT_EARTH_SITE_STYLE_ID_VALUE, SOFT_EARTH_SITE_STYLE_ID, curatedSiteStyleIdValues, quietBudget, balancedBudget, expressiveBudget, expressiveUnderlineInputs, generatedContentFrameKinds, curatedSiteStyles, curatedSiteStylesById;
18349
+ var SOFT_EARTH_SITE_STYLE_ID_VALUE, SOFT_EARTH_SITE_STYLE_ID, curatedSiteStyleIdValues, quietBudget, balancedBudget, expressiveBudget, kirtanOrnateDesignRuntimeRules, expressiveUnderlineInputs, ornateDarkInputs, generatedContentFrameKinds, curatedSiteStyles, curatedSiteStylesById;
17605
18350
  var init_curatedSiteStyles = __esm({
17606
18351
  "../theme-core/src/site-styles/curatedSiteStyles.ts"() {
17607
18352
  "use strict";
@@ -17616,6 +18361,7 @@ var init_curatedSiteStyles = __esm({
17616
18361
  init_sourceCatalogs();
17617
18362
  init_types2();
17618
18363
  init_typographyPresets();
18364
+ init_runtimeCompiler();
17619
18365
  SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
17620
18366
  SOFT_EARTH_SITE_STYLE_ID = asSiteStyleId(SOFT_EARTH_SITE_STYLE_ID_VALUE);
17621
18367
  curatedSiteStyleIdValues = [
@@ -17633,6 +18379,7 @@ var init_curatedSiteStyles = __esm({
17633
18379
  SOFT_EARTH_SITE_STYLE_ID_VALUE,
17634
18380
  "site-style:bold-launch",
17635
18381
  "site-style:south-west-twerk-school",
18382
+ "site-style:kirtan-ornate",
17636
18383
  "site-style:original-joy"
17637
18384
  ];
17638
18385
  quietBudget = {
@@ -17659,6 +18406,50 @@ var init_curatedSiteStyles = __esm({
17659
18406
  mediaDensity: "high",
17660
18407
  decorativeRepetition: "medium"
17661
18408
  };
18409
+ kirtanOrnateDesignRuntimeRules = defineDesignRuntimeRules({
18410
+ ...defaultDesignRuntimeRules,
18411
+ defaultEyebrowTreatment: "accent",
18412
+ sectionSurfaces: {
18413
+ ...defaultDesignRuntimeRules.sectionSurfaces,
18414
+ "muted-band": {
18415
+ background: {
18416
+ type: "color",
18417
+ color: "muted"
18418
+ },
18419
+ foreground: {
18420
+ textColor: "text",
18421
+ headingColor: "primary",
18422
+ linkColor: "primary",
18423
+ supportingColor: "text"
18424
+ }
18425
+ },
18426
+ "brand-depth-band": {
18427
+ background: {
18428
+ type: "color",
18429
+ color: "primary-800"
18430
+ },
18431
+ foreground: {
18432
+ textColor: "text",
18433
+ headingColor: "primary",
18434
+ linkColor: "primary",
18435
+ supportingColor: "text"
18436
+ }
18437
+ },
18438
+ "hero-image": {
18439
+ background: {
18440
+ type: "image",
18441
+ opacity: 1,
18442
+ position: "center center"
18443
+ },
18444
+ foreground: {
18445
+ textColor: "text",
18446
+ headingColor: "primary",
18447
+ linkColor: "primary",
18448
+ supportingColor: "text"
18449
+ }
18450
+ }
18451
+ }
18452
+ });
17662
18453
  expressiveUnderlineInputs = {
17663
18454
  base: {
17664
18455
  background: { type: "transparent" },
@@ -17696,6 +18487,43 @@ var init_curatedSiteStyles = __esm({
17696
18487
  opacity: 0.6
17697
18488
  }
17698
18489
  };
18490
+ ornateDarkInputs = {
18491
+ base: {
18492
+ background: { type: "solid", colorToken: "surfaceAlt" },
18493
+ textColorToken: "text",
18494
+ border: {
18495
+ widthClass: "border",
18496
+ colorToken: "primary/45",
18497
+ style: "all"
18498
+ },
18499
+ corners: "square",
18500
+ shadow: null,
18501
+ spacing: "medium",
18502
+ fontSize: "base"
18503
+ },
18504
+ label: {
18505
+ textColorToken: "primary",
18506
+ fontWeight: "semibold",
18507
+ fontSize: "xs",
18508
+ textTransform: "uppercase",
18509
+ letterSpacing: "wider",
18510
+ opacity: 1
18511
+ },
18512
+ focus: {
18513
+ ringColorToken: "primary/18",
18514
+ ringWidth: "2",
18515
+ borderColorToken: "primary/70"
18516
+ },
18517
+ error: {
18518
+ borderColorToken: "destructive",
18519
+ textColorToken: "destructive"
18520
+ },
18521
+ disabled: {
18522
+ backgroundColorToken: "muted",
18523
+ textColorToken: "mutedText",
18524
+ opacity: 0.6
18525
+ }
18526
+ };
17699
18527
  generatedContentFrameKinds = uniqueContentFrameKinds();
17700
18528
  curatedSiteStyles = [
17701
18529
  defineCuratedSiteStyle({
@@ -18466,6 +19294,80 @@ var init_curatedSiteStyles = __esm({
18466
19294
  paletteChoice("high-contrast-ink")
18467
19295
  ]
18468
19296
  }),
19297
+ defineCuratedSiteStyle({
19298
+ id: "site-style:kirtan-ornate",
19299
+ name: "Kirtan Ornate",
19300
+ headingDecoration: { family: "short-center-rule", colorToken: "accent" },
19301
+ description: "Ceremonial, jewel-toned, and devotional: ornate frames, warm contrast, and composed rhythm for intimate music gatherings.",
19302
+ generationBrief: "Use a deep plum ground with pale gold as the main brand color, rose accent details, cream text, spacious split hero sections, devotional editorial headings, compact event lists, and framed conversion sections. The mood should feel soulful and ceremonial, not gothic or theatrical.",
19303
+ selectionKeywordRules: [
19304
+ { kind: "word", value: "kirtan" },
19305
+ { kind: "word", value: "chanting" },
19306
+ { kind: "word", value: "ceremony" },
19307
+ { kind: "word", value: "devotional" }
19308
+ ],
19309
+ tokenRecipes: {
19310
+ palette: "brand-led",
19311
+ contrast: "strong",
19312
+ radius: "soft",
19313
+ shadow: "subtle",
19314
+ typography: "serif-editorial",
19315
+ spacing: "airy",
19316
+ motion: "subtle"
19317
+ },
19318
+ compositionBudget: expressiveBudget,
19319
+ typographyPresetChoices: [
19320
+ typographyChoice("typography-preset:kirtan-ornate"),
19321
+ typographyChoice("typography-preset:luxe-contrast"),
19322
+ typographyChoice("typography-preset:editorial-serif")
19323
+ ],
19324
+ defaultTypographyPresetId: "typography-preset:kirtan-ornate",
19325
+ themeOverrides: {
19326
+ accordions: warmInsetAccordionSystem,
19327
+ cards: originalJoyCardSystem,
19328
+ testimonialQuote: serifDisplayQuote,
19329
+ bodyText: {
19330
+ intro: {
19331
+ paragraphSize: "editorial",
19332
+ headingSize: "editorial"
19333
+ }
19334
+ },
19335
+ inputs: ornateDarkInputs
19336
+ },
19337
+ designRuntimeRules: kirtanOrnateDesignRuntimeRules,
19338
+ recommendedAppearancePresetIds: [
19339
+ "hero-brand-scrim-fixed-frame",
19340
+ "media-text-quiet-story",
19341
+ "events-lined-panel",
19342
+ "schedule-details-brand-depth",
19343
+ "testimonials-statement-cards",
19344
+ "contact-form-panel"
19345
+ ],
19346
+ defaultHeaderSelection: { layoutId: "floating", styleId: "minimal-surface" },
19347
+ recommendedHeaderLayoutChoices: [headerLayoutChoice("floating")],
19348
+ recommendedHeaderStyleChoicesByLayout: {
19349
+ floating: [
19350
+ headerStyleChoice("minimal-surface"),
19351
+ headerStyleChoice("split-glass"),
19352
+ headerStyleChoice("glass")
19353
+ ]
19354
+ },
19355
+ recommendedHeaderLookIds: ["minimal-transparent"],
19356
+ recommendedFooterLookIds: [
19357
+ "site-footer-brand-two-band",
19358
+ "footer-muted-grounding"
19359
+ ],
19360
+ buttonPersonalityChoices: [
19361
+ buttonChoice("ornate-ritual"),
19362
+ buttonChoice("joy-stamp"),
19363
+ buttonChoice("ink-stamp")
19364
+ ],
19365
+ paletteVariantChoices: [
19366
+ paletteChoice("warm-dark-kirtan-gold"),
19367
+ paletteChoice("warm-dark-ember"),
19368
+ paletteChoice("brand-led-burgundy-gold")
19369
+ ]
19370
+ }),
18469
19371
  defineCuratedSiteStyle({
18470
19372
  id: "site-style:original-joy",
18471
19373
  name: "Original Joy",
@@ -18612,344 +19514,6 @@ var init_resolver2 = __esm({
18612
19514
  }
18613
19515
  });
18614
19516
 
18615
- // ../theme-core/src/site-styles/designState.ts
18616
- import { z as z27 } from "zod";
18617
- function uniqueNonEmpty(values) {
18618
- const uniqueValues = [...new Set(values)];
18619
- const firstValue = uniqueValues[0];
18620
- if (!firstValue) {
18621
- throw new Error("Expected at least one Theme V2 design state option.");
18622
- }
18623
- return [firstValue, ...uniqueValues.slice(1)];
18624
- }
18625
- var themeV2DesignStateSchemaVersion, designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, heroLegibilityStrategySchema, heroCompositionIntentSchema, heroTypographyScaleIntentSchema, sectionHeightIntentSchema, imageSurfaceTreatmentIntensitySchema, imageSurfaceMotionSchema, imageSurfaceTreatmentSchema, testimonialCardTreatmentSchema, tileTreatmentSchema, eventListTreatmentSchema, eyebrowTreatmentSchema, userPanelTreatments, userFlushTreatments, userFlushBleeds, contentFrameIntentSchema, blockDesignPlanSchema, styleAuthoritySchema, blockRuntimeStyleAuthoritySchema, persistedPageDesignStateV1Schema;
18626
- var init_designState = __esm({
18627
- "../theme-core/src/site-styles/designState.ts"() {
18628
- "use strict";
18629
- init_sourceCatalogs();
18630
- init_types2();
18631
- init_schemaVersionedJson();
18632
- init_rawStyleFields();
18633
- init_rawStyleFields();
18634
- themeV2DesignStateSchemaVersion = 1;
18635
- designResolutionPolicySchema = z27.enum(["generated", "user", "admin", "sdk"]);
18636
- runtimeStyleFieldNameSchema = z27.enum(themeV2RuntimeStyleFieldNames);
18637
- nonEmptyRuntimeStyleFieldNamesSchema = z27.array(runtimeStyleFieldNameSchema).min(1).transform((fields3) => [
18638
- fields3[0],
18639
- ...fields3.slice(1)
18640
- ]);
18641
- heroLegibilityStrategySchema = z27.enum([
18642
- "none",
18643
- "scrim-gradient",
18644
- "solid-panel"
18645
- ]);
18646
- heroCompositionIntentSchema = z27.enum([
18647
- "center",
18648
- "bottom-left"
18649
- ]);
18650
- heroTypographyScaleIntentSchema = z27.enum([
18651
- "quiet",
18652
- "editorial",
18653
- "display",
18654
- "poster"
18655
- ]);
18656
- sectionHeightIntentSchema = z27.enum([
18657
- "default",
18658
- "banner",
18659
- "hero",
18660
- "immersive"
18661
- ]);
18662
- imageSurfaceTreatmentIntensitySchema = z27.enum(["soft", "balanced", "strong"]);
18663
- imageSurfaceMotionSchema = z27.enum(["static", "fixed-frame"]);
18664
- imageSurfaceTreatmentSchema = z27.discriminatedUnion("kind", [
18665
- z27.object({ kind: z27.literal("none") }).strict(),
18666
- z27.object({
18667
- kind: z27.literal("brand-scrim"),
18668
- token: z27.enum(["primary", "secondary", "accent"]),
18669
- intensity: imageSurfaceTreatmentIntensitySchema.optional()
18670
- }).strict(),
18671
- z27.object({
18672
- kind: z27.literal("brand-wash"),
18673
- token: z27.enum(["primary", "secondary", "accent"]),
18674
- intensity: imageSurfaceTreatmentIntensitySchema.optional()
18675
- }).strict(),
18676
- z27.object({
18677
- kind: z27.literal("neutral-scrim"),
18678
- intensity: imageSurfaceTreatmentIntensitySchema.optional()
18679
- }).strict(),
18680
- z27.object({
18681
- kind: z27.literal("neutral-wash"),
18682
- intensity: imageSurfaceTreatmentIntensitySchema.optional()
18683
- }).strict(),
18684
- z27.object({
18685
- kind: z27.literal("solid-panel"),
18686
- intensity: imageSurfaceTreatmentIntensitySchema.optional()
18687
- }).strict()
18688
- ]);
18689
- testimonialCardTreatmentSchema = z27.enum(["default", "accent-quote"]);
18690
- tileTreatmentSchema = z27.enum(tileTreatmentValues);
18691
- eventListTreatmentSchema = z27.enum(eventListTreatmentValues);
18692
- eyebrowTreatmentSchema = z27.enum(eyebrowTreatmentValues);
18693
- userPanelTreatments = uniqueNonEmpty(
18694
- userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
18695
- );
18696
- userFlushTreatments = uniqueNonEmpty(
18697
- userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
18698
- );
18699
- userFlushBleeds = uniqueNonEmpty(
18700
- userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
18701
- );
18702
- contentFrameIntentSchema = z27.discriminatedUnion("kind", [
18703
- z27.object({ kind: z27.literal("plain") }).strict(),
18704
- z27.object({
18705
- kind: z27.literal("panel"),
18706
- treatment: z27.enum(userPanelTreatments)
18707
- }).strict(),
18708
- z27.object({
18709
- kind: z27.literal("flush-panel"),
18710
- treatment: z27.enum(userFlushTreatments),
18711
- bleed: z27.enum(userFlushBleeds)
18712
- }).strict()
18713
- ]);
18714
- blockDesignPlanSchema = z27.object({
18715
- blockId: z27.string().min(1).transform(asDesignBlockId),
18716
- blockKind: z27.string().min(1),
18717
- purpose: z27.string().min(1),
18718
- sectionSurface: z27.enum(userDesignOptionCatalog.sectionSurfaces),
18719
- contentFrame: contentFrameIntentSchema,
18720
- itemSurface: z27.enum(userDesignOptionCatalog.itemSurfaces),
18721
- transitionAfter: z27.enum(userDesignOptionCatalog.transitions),
18722
- emphasis: z27.enum(userDesignOptionCatalog.emphases),
18723
- sectionHeight: sectionHeightIntentSchema.optional(),
18724
- heroLegibility: heroLegibilityStrategySchema.optional(),
18725
- heroComposition: heroCompositionIntentSchema.optional(),
18726
- heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
18727
- imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
18728
- imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
18729
- testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
18730
- tileTreatment: tileTreatmentSchema.optional(),
18731
- eventListTreatment: eventListTreatmentSchema.optional(),
18732
- eyebrowTreatment: eyebrowTreatmentSchema.optional()
18733
- }).strict();
18734
- styleAuthoritySchema = z27.discriminatedUnion("kind", [
18735
- z27.object({
18736
- kind: z27.literal("theme-v2"),
18737
- source: designResolutionPolicySchema,
18738
- siteStyleId: z27.string().min(1).transform(asSiteStyleId),
18739
- templateId: z27.string().min(1).transform(asDesignSystemTemplateId),
18740
- templateVersion: z27.number().int().nonnegative(),
18741
- resolverVersion: z27.number().int().nonnegative()
18742
- }).strict(),
18743
- z27.object({
18744
- kind: z27.literal("legacy-raw"),
18745
- reason: z27.enum(["pre-theme-v2", "manual-runtime-fields"])
18746
- }).strict(),
18747
- z27.object({
18748
- kind: z27.literal("advanced-detached"),
18749
- reason: z27.literal("detached-custom-runtime-fields")
18750
- }).strict()
18751
- ]);
18752
- blockRuntimeStyleAuthoritySchema = z27.object({
18753
- unit: z27.literal("block-runtime-fields"),
18754
- blockId: z27.string().min(1).transform(asDesignBlockId),
18755
- fields: nonEmptyRuntimeStyleFieldNamesSchema,
18756
- authority: styleAuthoritySchema
18757
- }).strict();
18758
- persistedPageDesignStateV1Schema = z27.object({
18759
- schemaVersion: z27.literal(themeV2DesignStateSchemaVersion),
18760
- siteStyleId: z27.string().min(1).transform(asSiteStyleId),
18761
- templateId: z27.string().min(1).transform(asDesignSystemTemplateId),
18762
- templateVersion: z27.number().int().nonnegative(),
18763
- resolverVersion: z27.number().int().nonnegative(),
18764
- rhythmPresetId: z27.string().min(1),
18765
- blocks: z27.array(blockDesignPlanSchema),
18766
- styleAuthorities: z27.array(blockRuntimeStyleAuthoritySchema)
18767
- }).strict();
18768
- }
18769
- });
18770
-
18771
- // ../theme-core/src/site-styles/runtimeCompiler.ts
18772
- function defineDesignRuntimeRules(rules) {
18773
- return rules;
18774
- }
18775
- function defineComponentRuntimeRules(rules) {
18776
- return rules;
18777
- }
18778
- function uniformSectionForeground(token) {
18779
- return {
18780
- textColor: token,
18781
- headingColor: token,
18782
- linkColor: token,
18783
- supportingColor: token
18784
- };
18785
- }
18786
- var defaultDesignRuntimeRules, defaultComponentRuntimeRules;
18787
- var init_runtimeCompiler = __esm({
18788
- "../theme-core/src/site-styles/runtimeCompiler.ts"() {
18789
- "use strict";
18790
- init_schema3();
18791
- init_modern_minimal();
18792
- init_expandPalette();
18793
- init_personalities();
18794
- init_variants();
18795
- init_designState();
18796
- init_types2();
18797
- init_accessibleSurfaces();
18798
- defaultDesignRuntimeRules = defineDesignRuntimeRules({
18799
- sectionSurfaces: {
18800
- base: {},
18801
- "muted-band": {
18802
- background: {
18803
- type: "color",
18804
- color: "muted"
18805
- }
18806
- },
18807
- "accent-band": {
18808
- background: {
18809
- type: "color",
18810
- color: "primary"
18811
- }
18812
- },
18813
- "brand-depth-band": {
18814
- background: {
18815
- type: "color",
18816
- color: "primary-800"
18817
- }
18818
- },
18819
- "hero-image": {
18820
- background: {
18821
- type: "image",
18822
- opacity: 1,
18823
- position: "center center",
18824
- ...uniformSectionForeground("text")
18825
- }
18826
- }
18827
- },
18828
- heroLegibility: {
18829
- "scrim-gradient": {
18830
- type: "gradient",
18831
- gradient: "linear-gradient(180deg, rgba(255,255,255,0.38) 0%, rgba(244,241,234,0.62) 90%)",
18832
- opacity: 1
18833
- },
18834
- "solid-panel": {
18835
- type: "color",
18836
- color: "surface",
18837
- opacity: 0.88
18838
- }
18839
- },
18840
- transitionClassName: (transition, fromSurface, toSurface) => transition === "none" ? null : `site-style-transition-${transition}-from-${fromSurface}-to-${toSurface}`
18841
- });
18842
- defaultComponentRuntimeRules = defineComponentRuntimeRules({
18843
- panelFrames: {
18844
- inset: {
18845
- spacing: "comfortable",
18846
- rounded: "xl",
18847
- raised: false,
18848
- background: {
18849
- type: "color",
18850
- color: "surfaceAlt",
18851
- textColor: "text"
18852
- }
18853
- },
18854
- raised: {
18855
- spacing: "comfortable",
18856
- rounded: "xl",
18857
- raised: true,
18858
- background: {
18859
- type: "color",
18860
- color: "surfaceAlt",
18861
- textColor: "text"
18862
- }
18863
- },
18864
- editorial: {
18865
- spacing: "medium",
18866
- rounded: "xl",
18867
- raised: false,
18868
- background: {
18869
- type: "color",
18870
- color: "surface",
18871
- textColor: "text"
18872
- }
18873
- }
18874
- },
18875
- flushFrames: {
18876
- "media-panel": {
18877
- fullWidth: true,
18878
- spacing: "none",
18879
- rounded: "none",
18880
- raised: false
18881
- }
18882
- },
18883
- itemSurfaces: {
18884
- none: null,
18885
- default: {
18886
- spacing: "medium",
18887
- rounded: "lg",
18888
- raised: false
18889
- },
18890
- flat: {
18891
- spacing: "medium",
18892
- rounded: "lg",
18893
- raised: false
18894
- },
18895
- outlined: {
18896
- spacing: "medium",
18897
- rounded: "lg",
18898
- raised: false,
18899
- border: {
18900
- enabled: true,
18901
- width: "1",
18902
- colorToken: "border"
18903
- }
18904
- },
18905
- raised: {
18906
- spacing: "medium",
18907
- rounded: "xl",
18908
- raised: true
18909
- },
18910
- inset: {
18911
- treatment: "soft-panel",
18912
- spacing: "comfortable",
18913
- rounded: "xl",
18914
- raised: false,
18915
- border: {
18916
- enabled: false
18917
- },
18918
- background: {
18919
- type: "color",
18920
- color: "surfaceAlt",
18921
- textColor: "text"
18922
- }
18923
- },
18924
- editorial: {
18925
- // Boxless open column with a short rule on top; the visual treatment
18926
- // lives in blocks-static/card-treatments.css.
18927
- treatment: "editorial-rule",
18928
- spacing: "none",
18929
- rounded: "none",
18930
- raised: false,
18931
- border: {
18932
- enabled: false
18933
- }
18934
- },
18935
- "color-blocked": {
18936
- // Bold, flat colour-blocked cards. The per-card background colour cycle
18937
- // (by position) and staggered offset live in
18938
- // blocks-static/card-treatments.css; here we set the shared shape:
18939
- // generous padding, large radius, no border, flat (no shadow).
18940
- treatment: "color-blocked",
18941
- spacing: "spacious",
18942
- rounded: "2xl",
18943
- raised: false,
18944
- border: {
18945
- enabled: false
18946
- }
18947
- }
18948
- }
18949
- });
18950
- }
18951
- });
18952
-
18953
19517
  // ../theme-core/src/site-styles/siteStyleThemeCompiler.ts
18954
19518
  var init_siteStyleThemeCompiler = __esm({
18955
19519
  "../theme-core/src/site-styles/siteStyleThemeCompiler.ts"() {
@@ -19141,6 +19705,7 @@ var init_generatedDesignPipeline = __esm({
19141
19705
  init_designState();
19142
19706
  init_generatedSchemas();
19143
19707
  init_siteStyleBlockPolicies();
19708
+ init_curatedSiteStyles();
19144
19709
  init_lookResolution();
19145
19710
  init_headerOpeningSection();
19146
19711
  init_resolver2();
@@ -19967,6 +20532,37 @@ var init_boxStyles = __esm({
19967
20532
  }
19968
20533
  });
19969
20534
 
20535
+ // ../blocks/src/system/fields/imageShape.ts
20536
+ function createImageShapeField(options = {}) {
20537
+ return {
20538
+ id: options.id ?? "imageShape",
20539
+ type: "select",
20540
+ label: options.label ?? "Image shape",
20541
+ ...options.description ? { description: options.description } : {},
20542
+ required: false,
20543
+ defaultValue: options.defaultValue ?? "default",
20544
+ multiple: false,
20545
+ options: [...standardImageShapeOptions],
20546
+ ui: {
20547
+ intent: options.uiIntent ?? "display",
20548
+ ...options.visibleWhen ? { visibleWhen: options.visibleWhen } : {}
20549
+ }
20550
+ };
20551
+ }
20552
+ var standardImageShapeOptions;
20553
+ var init_imageShape = __esm({
20554
+ "../blocks/src/system/fields/imageShape.ts"() {
20555
+ "use strict";
20556
+ standardImageShapeOptions = [
20557
+ { value: "default", label: "Default" },
20558
+ { value: "square", label: "Square corners" },
20559
+ { value: "rounded", label: "Rounded corners" },
20560
+ { value: "circle", label: "Circle" },
20561
+ { value: "arch", label: "Arch" }
20562
+ ];
20563
+ }
20564
+ });
20565
+
19970
20566
  // ../blocks/src/utils/env.ts
19971
20567
  function isDevEnvironment() {
19972
20568
  try {
@@ -20888,7 +21484,7 @@ function buildFooterNavAll(common) {
20888
21484
  return stack(
20889
21485
  { className: common.className, gap: common.gap, align: "stretch" },
20890
21486
  [item],
20891
- when(collectionPath)
21487
+ whenCollectionHasItems(collectionPath)
20892
21488
  );
20893
21489
  }
20894
21490
  function buildFooterNavLinksOnly(common) {
@@ -20921,7 +21517,7 @@ function buildFooterNavLinksOnly(common) {
20921
21517
  return stack(
20922
21518
  { className: common.className, gap: common.gap, align: "stretch" },
20923
21519
  [item],
20924
- when(collectionPath)
21520
+ whenCollectionHasItems(collectionPath)
20925
21521
  );
20926
21522
  }
20927
21523
  function buildFooterNavFlatten(common) {
@@ -20970,7 +21566,7 @@ function buildFooterNavFlatten(common) {
20970
21566
  return stack(
20971
21567
  { className: common.className, gap: common.gap, align: "stretch" },
20972
21568
  [item],
20973
- when(collectionPath)
21569
+ whenCollectionHasItems(collectionPath)
20974
21570
  );
20975
21571
  }
20976
21572
  function footerNav(opts) {
@@ -20992,10 +21588,22 @@ function footerNav(opts) {
20992
21588
  if (mode === "flatten") return buildFooterNavFlatten(common);
20993
21589
  return buildFooterNavAll(common);
20994
21590
  }
21591
+ var whenCollectionHasItems;
20995
21592
  var init_footerNav = __esm({
20996
21593
  "../blocks/src/system/node/fragments/footerNav.ts"() {
20997
21594
  "use strict";
20998
21595
  init_builder2();
21596
+ whenCollectionHasItems = (collectionPath) => (node) => ({
21597
+ ...node,
21598
+ $when: {
21599
+ when: {
21600
+ from: collectionPath,
21601
+ transforms: [{ id: "array.length" }]
21602
+ },
21603
+ equals: 0,
21604
+ not: true
21605
+ }
21606
+ });
20999
21607
  }
21000
21608
  });
21001
21609
 
@@ -23942,8 +24550,23 @@ var init_heroLayoutControls = __esm({
23942
24550
  heroLayoutControlsFragment = defineFragment({
23943
24551
  id: "heroLayoutControls",
23944
24552
  title: "Hero Layout",
23945
- description: "Alignment and content width controls for hero layouts.",
24553
+ description: "Title scale, alignment, and content width controls for hero layouts.",
23946
24554
  fields: [
24555
+ {
24556
+ id: "titleSize",
24557
+ type: "select",
24558
+ label: "Title size",
24559
+ description: "Adjust the visual scale of the hero title.",
24560
+ required: false,
24561
+ ui: { intent: "display" },
24562
+ options: [
24563
+ { value: "auto", label: "Auto" },
24564
+ { value: "quiet", label: "Normal" },
24565
+ { value: "editorial", label: "Large" },
24566
+ { value: "display", label: "Huge" },
24567
+ { value: "poster", label: "Poster" }
24568
+ ]
24569
+ },
23947
24570
  {
23948
24571
  id: "contentAlignment",
23949
24572
  type: "select",
@@ -25059,7 +25682,18 @@ function heroSplitImagePane() {
25059
25682
  return stack(
25060
25683
  {
25061
25684
  gap: "none",
25062
- className: "rb-relative rb-overflow-hidden rb-rounded-3xl",
25685
+ className: {
25686
+ $bind: {
25687
+ from: "content.imageShape",
25688
+ transforms: [
25689
+ {
25690
+ id: "ui.imageShapeClassName",
25691
+ options: { baseClass: "rb-relative rb-overflow-hidden rb-rounded-3xl" }
25692
+ }
25693
+ ],
25694
+ fallback: "rb-relative rb-overflow-hidden rb-rounded-3xl"
25695
+ }
25696
+ },
25063
25697
  style: {
25064
25698
  minHeight: "clamp(18rem, 36vw, 34rem)"
25065
25699
  }
@@ -25113,6 +25747,7 @@ var init_hero = __esm({
25113
25747
  "../blocks/src/system/blocks/hero.ts"() {
25114
25748
  "use strict";
25115
25749
  init_boxStyles();
25750
+ init_imageShape();
25116
25751
  init_fragments();
25117
25752
  init_styledSection();
25118
25753
  init_defineBlock();
@@ -25196,6 +25831,12 @@ var init_hero = __esm({
25196
25831
  label: "Content card",
25197
25832
  renderInHeader: true,
25198
25833
  intent: "style"
25834
+ }),
25835
+ createImageShapeField({
25836
+ id: "imageShape",
25837
+ label: "Image shape",
25838
+ defaultValue: "default",
25839
+ uiIntent: "display"
25199
25840
  })
25200
25841
  ],
25201
25842
  layout: classicLayout,
@@ -25210,6 +25851,15 @@ var init_hero = __esm({
25210
25851
  description: "Hero section with headline, subtitle, and repeatable CTAs.",
25211
25852
  tags: ["header", "banner", "landing", "introduction", "welcome", "splash", "headline"],
25212
25853
  icon: "Sparkles",
25854
+ previewCustomize: {
25855
+ quickFieldPriority: [
25856
+ "titleSize",
25857
+ "contentAlignment",
25858
+ "contentMaxWidth",
25859
+ "verticalAlignment",
25860
+ "imageShape"
25861
+ ]
25862
+ },
25213
25863
  styleTokens: {
25214
25864
  typography: "display",
25215
25865
  spacing: "xl"
@@ -25248,7 +25898,8 @@ var init_aspectRatio = __esm({
25248
25898
  { value: "16/9", label: "16:9 (Landscape)" },
25249
25899
  { value: "4/3", label: "4:3 (Standard)" },
25250
25900
  { value: "1/1", label: "1:1 (Square)" },
25251
- { value: "3/4", label: "3:4 (Portrait)" }
25901
+ { value: "3/4", label: "3:4 (Portrait)" },
25902
+ { value: "9/16", label: "9:16 (Tall portrait)" }
25252
25903
  ];
25253
25904
  }
25254
25905
  });
@@ -26555,6 +27206,270 @@ var init_form = __esm({
26555
27206
  }
26556
27207
  });
26557
27208
 
27209
+ // ../blocks/src/system/blocks/contact-newsletter.ts
27210
+ var contactNewsletterLayout, contactNewsletterManifest, contactNewsletterBlockDefinition;
27211
+ var init_contact_newsletter = __esm({
27212
+ "../blocks/src/system/blocks/contact-newsletter.ts"() {
27213
+ "use strict";
27214
+ init_fragments();
27215
+ init_styledSection();
27216
+ init_builder2();
27217
+ init_defineBlock();
27218
+ init_api_bindings();
27219
+ init_form();
27220
+ contactNewsletterLayout = styledSection({
27221
+ children: sectionContainer([
27222
+ el(
27223
+ "div",
27224
+ { className: "contact-newsletter-grid" },
27225
+ [
27226
+ el(
27227
+ "div",
27228
+ { className: "contact-newsletter-column contact-newsletter-contact" },
27229
+ [
27230
+ el(
27231
+ "div",
27232
+ { className: "contact-newsletter-copy" },
27233
+ [
27234
+ text(
27235
+ {
27236
+ as: "h2",
27237
+ className: "form-copy-title"
27238
+ },
27239
+ when("contactTitle"),
27240
+ bind("contactTitle")
27241
+ ),
27242
+ richText(
27243
+ {
27244
+ className: "form-copy-intro rb-prose rb-max-w-none"
27245
+ },
27246
+ when("contactIntro"),
27247
+ bind("contactIntro")
27248
+ )
27249
+ ]
27250
+ ),
27251
+ el(
27252
+ "form",
27253
+ withApiBindings({
27254
+ spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } },
27255
+ submitLabel: { $bind: { from: "contactSubmitLabel" } },
27256
+ successMessage: { $bind: { from: "contactSuccessMessage" } }
27257
+ }),
27258
+ [],
27259
+ bind("data.form")
27260
+ )
27261
+ ]
27262
+ ),
27263
+ el(
27264
+ "div",
27265
+ { className: "contact-newsletter-column contact-newsletter-info contact-newsletter-newsletter" },
27266
+ [
27267
+ el(
27268
+ "div",
27269
+ { className: "contact-newsletter-copy" },
27270
+ [
27271
+ text(
27272
+ {
27273
+ as: "h2",
27274
+ className: "newsletter-copy-title"
27275
+ },
27276
+ when("newsletterTitle"),
27277
+ bind("newsletterTitle")
27278
+ ),
27279
+ richText(
27280
+ {
27281
+ className: "newsletter-copy-subtitle rb-prose rb-max-w-none"
27282
+ },
27283
+ when("newsletterSubtitle"),
27284
+ bind("newsletterSubtitle")
27285
+ )
27286
+ ]
27287
+ ),
27288
+ el(
27289
+ "newsletter-form",
27290
+ withApiBindings({
27291
+ listId: { $bind: { from: "listId" } },
27292
+ preset: { $bind: { from: "preset" } },
27293
+ includePhone: { $bind: { from: "includePhone" } },
27294
+ buttonLabel: { $bind: { from: "newsletterButtonLabel" } },
27295
+ successMessage: { $bind: { from: "newsletterSuccessMessage" } },
27296
+ privacyNote: { $bind: { from: "newsletterPrivacyNote" } },
27297
+ tags: { $bind: { from: "newsletterTags" } },
27298
+ spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } }
27299
+ }),
27300
+ []
27301
+ )
27302
+ ]
27303
+ )
27304
+ ]
27305
+ )
27306
+ ], {
27307
+ className: "contact-newsletter-container"
27308
+ }),
27309
+ baseClass: "",
27310
+ spacing: "medium",
27311
+ background: "surface"
27312
+ });
27313
+ contactNewsletterManifest = createBlockManifest({
27314
+ id: "block.contact-newsletter",
27315
+ title: "Contact + Newsletter",
27316
+ titleSource: "contactTitle",
27317
+ description: "Two-column newsletter signup and contact form section.",
27318
+ category: "interactive",
27319
+ layout: contactNewsletterLayout,
27320
+ defaultVariant: "default",
27321
+ variants: {
27322
+ default: contactNewsletterLayout
27323
+ },
27324
+ variantOptions: {
27325
+ default: {
27326
+ label: "Two column",
27327
+ description: "Newsletter and contact form side by side.",
27328
+ icon: "Columns2"
27329
+ }
27330
+ },
27331
+ additionalFields: [
27332
+ {
27333
+ id: "newsletterTitle",
27334
+ type: "text",
27335
+ label: "Newsletter title",
27336
+ defaultValue: "Stay connected"
27337
+ },
27338
+ {
27339
+ id: "newsletterSubtitle",
27340
+ type: "richText",
27341
+ label: "Newsletter intro"
27342
+ },
27343
+ {
27344
+ id: "listId",
27345
+ type: "reference",
27346
+ label: "Newsletter list",
27347
+ description: "Select the list new subscribers should be added to.",
27348
+ required: true,
27349
+ referenceKind: "newsletterList",
27350
+ allowManualEntry: false,
27351
+ ui: { intent: "behavior" }
27352
+ },
27353
+ {
27354
+ id: "preset",
27355
+ type: "select",
27356
+ label: "Newsletter fields",
27357
+ defaultValue: "emailOnly",
27358
+ ui: { intent: "display" },
27359
+ options: [
27360
+ { value: "emailOnly", label: "Email only" },
27361
+ { value: "emailName", label: "Email + Name" },
27362
+ { value: "emailFirstLast", label: "Email + First/Last Name" },
27363
+ { value: "emailNameCompany", label: "Email + Name + Company (B2B)" }
27364
+ ]
27365
+ },
27366
+ {
27367
+ id: "includePhone",
27368
+ type: "boolean",
27369
+ label: "Include phone field",
27370
+ defaultValue: false,
27371
+ ui: { intent: "display" }
27372
+ },
27373
+ {
27374
+ id: "newsletterButtonLabel",
27375
+ type: "text",
27376
+ label: "Newsletter button label",
27377
+ defaultValue: "Subscribe",
27378
+ ui: { intent: "display" }
27379
+ },
27380
+ {
27381
+ id: "newsletterSuccessMessage",
27382
+ type: "text",
27383
+ label: "Newsletter success message",
27384
+ defaultValue: "Thanks for subscribing!",
27385
+ ui: { intent: "behavior" }
27386
+ },
27387
+ {
27388
+ id: "newsletterPrivacyNote",
27389
+ type: "text",
27390
+ label: "Privacy note",
27391
+ ui: { intent: "display" }
27392
+ },
27393
+ {
27394
+ id: "newsletterTags",
27395
+ type: "text",
27396
+ label: "Newsletter tags",
27397
+ description: "Optional tags to apply on subscribe, separated by comma or semicolon.",
27398
+ ui: { intent: "behavior" }
27399
+ },
27400
+ {
27401
+ id: "contactTitle",
27402
+ type: "text",
27403
+ label: "Contact title",
27404
+ defaultValue: "Get in touch"
27405
+ },
27406
+ {
27407
+ id: "contactIntro",
27408
+ type: "richText",
27409
+ label: "Contact intro"
27410
+ },
27411
+ {
27412
+ id: "formSlug",
27413
+ type: "reference",
27414
+ label: "Contact form",
27415
+ description: "Pick a saved form to render.",
27416
+ required: true,
27417
+ referenceKind: "form",
27418
+ allowManualEntry: false,
27419
+ ui: { intent: "behavior" }
27420
+ },
27421
+ {
27422
+ id: "contactSubmitLabel",
27423
+ type: "text",
27424
+ label: "Contact button label",
27425
+ defaultValue: "Send message",
27426
+ ui: { intent: "display" }
27427
+ },
27428
+ {
27429
+ id: "contactSuccessMessage",
27430
+ type: "text",
27431
+ label: "Contact success message",
27432
+ defaultValue: "Thanks - we received your message.",
27433
+ ui: { intent: "behavior" }
27434
+ }
27435
+ ],
27436
+ styleTokens: {
27437
+ background: "surface",
27438
+ typography: "body",
27439
+ spacing: "md"
27440
+ },
27441
+ behaviours: {
27442
+ supportsThemeSwitching: true,
27443
+ inlineEditing: true,
27444
+ animation: false,
27445
+ paletteHidden: false
27446
+ },
27447
+ tags: [
27448
+ "contact",
27449
+ "newsletter",
27450
+ "signup",
27451
+ "email",
27452
+ "form",
27453
+ "lead-capture"
27454
+ ],
27455
+ icon: "MailPlus"
27456
+ });
27457
+ contactNewsletterBlockDefinition = {
27458
+ manifest: contactNewsletterManifest,
27459
+ dataSchemas: { form: formDataSchema.optional() },
27460
+ dataLoaders: {
27461
+ form: {
27462
+ endpoint: "getPublicFormById",
27463
+ params: {
27464
+ formSlug: { $bind: { from: "formSlug" } }
27465
+ },
27466
+ mode: "server"
27467
+ }
27468
+ }
27469
+ };
27470
+ }
27471
+ });
27472
+
26558
27473
  // ../blocks/src/system/blocks/faq.ts
26559
27474
  function fragmentLayoutNode2(layout) {
26560
27475
  return isNodeDefinitionArray2(layout) ? el("div", {}, [...layout]) : layout;
@@ -26883,6 +27798,10 @@ function resolveHeroContentMaxWidth(content) {
26883
27798
  return "default";
26884
27799
  }
26885
27800
  function resolveHeroTypographyScale(content) {
27801
+ const titleSize = readString(content, "titleSize");
27802
+ if (titleSize === "quiet" || titleSize === "editorial" || titleSize === "display" || titleSize === "poster") {
27803
+ return titleSize;
27804
+ }
26886
27805
  const raw = readHeroLayoutString(
26887
27806
  content,
26888
27807
  "typographyScale",
@@ -26900,7 +27819,7 @@ function resolveHeroTitleLength(content) {
26900
27819
  if (headline.length > heroTitleLengthThresholds.medium.maxCharacters || wordCount > heroTitleLengthThresholds.medium.maxWords) return "medium";
26901
27820
  return "short";
26902
27821
  }
26903
- var joinClasses3, eyebrowTreatmentClassMap, eyebrowTreatmentSet, headingDecorationFamilySet, headingDecorationColorTokenSet, imageGalleryCornerClassMap, parseRatio, ratioToHeightFactor, headerNavClassOptionsSchema, headerNavLinkClassTransform, headingClassFromAlignment, bodyClassFromAlignment, stackAlignFromAlignment, sectionStateToneTransform, heroTitleLengthThresholds, heroContentWrapperClassSchema, heroContentWrapperClassTransform, heroCtaJustifyTransform, heroStackJustifyFromVerticalAlignmentTransform, heroGridClassFromVerticalAlignmentSchema, heroGridClassFromVerticalAlignmentTransform, imageFragmentClassOptionsSchema, imageFragmentClassTransform, imageFragmentSizeOptionsSchema, imageFragmentSizeTransform, conditionalClassOptionsSchema, conditionalClassTransform, twoColumnContainerClassOptionsSchema, twoColumnContainerClassTransform, twoColumnFlexBasisOptionsSchema, twoColumnFlexBasisTransform, columnsDesktopSpanClassOptionsSchema, columnsDesktopSpanClassTransform, resolveColumnsGridCols, columnsGridColsTransform, columnsColsAtTransform, ratioToHeightFactorTransform, uiTransforms;
27822
+ var joinClasses3, eyebrowTreatmentClassMap, eyebrowTreatmentSet, headingDecorationFamilySet, headingDecorationColorTokenSet, imageGalleryCornerClassMap, imageShapeClassMap, parseRatio, ratioToHeightFactor, headerNavClassOptionsSchema, headerNavLinkClassTransform, headingClassFromAlignment, bodyClassFromAlignment, stackAlignFromAlignment, sectionStateToneTransform, heroTitleLengthThresholds, heroContentWrapperClassSchema, heroContentWrapperClassTransform, heroCtaJustifyTransform, heroStackJustifyFromVerticalAlignmentTransform, heroGridClassFromVerticalAlignmentSchema, heroGridClassFromVerticalAlignmentTransform, imageFragmentClassOptionsSchema, imageFragmentClassTransform, imageFragmentSizeOptionsSchema, imageFragmentSizeTransform, conditionalClassOptionsSchema, conditionalClassTransform, twoColumnContainerClassOptionsSchema, twoColumnContainerClassTransform, twoColumnFlexBasisOptionsSchema, twoColumnFlexBasisTransform, columnsDesktopSpanClassOptionsSchema, columnsDesktopSpanClassTransform, resolveColumnsGridCols, columnsGridColsTransform, columnsColsAtTransform, ratioToHeightFactorTransform, uiTransforms;
26904
27823
  var init_ui = __esm({
26905
27824
  "../blocks/src/system/transforms/registry/ui.ts"() {
26906
27825
  "use strict";
@@ -26914,6 +27833,7 @@ var init_ui = __esm({
26914
27833
  ).join(" ").replace(/\s+/g, " ").trim();
26915
27834
  eyebrowTreatmentClassMap = {
26916
27835
  plain: "",
27836
+ accent: "rb-eyebrow-treatment-accent",
26917
27837
  pill: "rb-eyebrow-treatment-pill",
26918
27838
  "accent-pill": "rb-eyebrow-treatment-pill rb-eyebrow-treatment-accent",
26919
27839
  "pill-bounce": "rb-eyebrow-treatment-pill rb-eyebrow-treatment-pill-bounce",
@@ -26931,6 +27851,13 @@ var init_ui = __esm({
26931
27851
  "2xl": "rb-rounded-2xl",
26932
27852
  "3xl": "rb-rounded-3xl"
26933
27853
  };
27854
+ imageShapeClassMap = {
27855
+ default: "",
27856
+ square: "rb-media-shape-square",
27857
+ rounded: "rb-media-shape-rounded",
27858
+ circle: "rb-media-shape-circle",
27859
+ arch: "rb-media-shape-arch"
27860
+ };
26934
27861
  parseRatio = (raw) => {
26935
27862
  if (typeof raw !== "string") return null;
26936
27863
  const value = raw.trim();
@@ -27222,6 +28149,16 @@ var init_ui = __esm({
27222
28149
  heroGridClassFromVerticalAlignmentTransform,
27223
28150
  imageFragmentClassTransform,
27224
28151
  imageFragmentSizeTransform,
28152
+ {
28153
+ id: "ui.imageShapeClassName",
28154
+ kind: "string",
28155
+ summary: "Apply a constrained media shape class",
28156
+ run: (value, options) => {
28157
+ const baseClass = typeof options?.baseClass === "string" ? options.baseClass : "";
28158
+ const shape = typeof value === "string" ? value.trim() : "default";
28159
+ return joinClasses3([baseClass, imageShapeClassMap[shape] ?? ""]);
28160
+ }
28161
+ },
27225
28162
  conditionalClassTransform,
27226
28163
  twoColumnContainerClassTransform,
27227
28164
  twoColumnFlexBasisTransform,
@@ -28638,6 +29575,21 @@ var init_site_header = __esm({
28638
29575
  id: "block.site-header",
28639
29576
  title: "Site Header",
28640
29577
  category: "layout",
29578
+ additionalFields: [
29579
+ {
29580
+ id: "mode",
29581
+ type: "select",
29582
+ label: "Header display",
29583
+ required: false,
29584
+ multiple: false,
29585
+ defaultValue: "default",
29586
+ options: [
29587
+ { value: "default", label: "Show header" },
29588
+ { value: "hidden", label: "Hide header" }
29589
+ ],
29590
+ ui: { intent: "display" }
29591
+ }
29592
+ ],
28641
29593
  // Skip section styles - this block uses theme-based styling
28642
29594
  skipSectionStyles: true,
28643
29595
  // Block manages its own wrapper - enables sticky positioning
@@ -30127,6 +31079,7 @@ var init_media_text = __esm({
30127
31079
  init_aspectRatio();
30128
31080
  init_boxStyles();
30129
31081
  init_carousel();
31082
+ init_imageShape();
30130
31083
  init_imageLayout();
30131
31084
  mediaTextFrameCapability = defineFrameCapability([
30132
31085
  "plain",
@@ -30153,6 +31106,9 @@ var init_media_text = __esm({
30153
31106
  category: "layout",
30154
31107
  includeContainerStyles: true,
30155
31108
  titleSource: "title",
31109
+ previewCustomize: {
31110
+ quickFieldPriority: ["imagePosition", "ratio", "imageShape", "titleAlignment", "aspectRatio"]
31111
+ },
30156
31112
  additionalFields: [
30157
31113
  {
30158
31114
  id: "images",
@@ -30191,7 +31147,7 @@ var init_media_text = __esm({
30191
31147
  {
30192
31148
  id: "titleAlignment",
30193
31149
  type: "select",
30194
- label: "Title alignment",
31150
+ label: "Content alignment",
30195
31151
  required: false,
30196
31152
  defaultValue: "left",
30197
31153
  multiple: false,
@@ -30249,7 +31205,18 @@ var init_media_text = __esm({
30249
31205
  transition: "slide"
30250
31206
  },
30251
31207
  ui: { intent: "behavior" }
30252
- }),
31208
+ }).map((field) => ({
31209
+ ...field,
31210
+ ui: {
31211
+ ...field.ui ?? {},
31212
+ visibleWhen: field.id === "carouselAutoplayDelay" ? {
31213
+ allOf: [
31214
+ { field: "images", minItems: 2 },
31215
+ { field: "carouselAutoplay", equals: true }
31216
+ ]
31217
+ } : { field: "images", minItems: 2 }
31218
+ }
31219
+ })),
30253
31220
  createAspectRatioField({
30254
31221
  id: "aspectRatio",
30255
31222
  label: "Media aspect ratio",
@@ -30257,6 +31224,12 @@ var init_media_text = __esm({
30257
31224
  defaultValue: "auto",
30258
31225
  visibleWhen: { field: "images", notEquals: null }
30259
31226
  }),
31227
+ createImageShapeField({
31228
+ id: "imageShape",
31229
+ label: "Media shape",
31230
+ defaultValue: "default",
31231
+ visibleWhen: { field: "images", notEquals: null }
31232
+ }),
30260
31233
  {
30261
31234
  id: "text",
30262
31235
  type: "richText",
@@ -30290,6 +31263,30 @@ var init_media_text = __esm({
30290
31263
  ...options?.not ? { not: true } : {}
30291
31264
  }
30292
31265
  });
31266
+ const bodyClassNameFromAlignment = {
31267
+ $bind: {
31268
+ from: "content.titleAlignment",
31269
+ transforms: [
31270
+ {
31271
+ id: "ui.bodyClassFromAlignment",
31272
+ options: { base: "rb-prose rb-max-w-none" }
31273
+ }
31274
+ ],
31275
+ fallback: "rb-prose rb-max-w-none"
31276
+ }
31277
+ };
31278
+ const titleClassNameFromAlignment = {
31279
+ $bind: {
31280
+ from: "content.titleAlignment",
31281
+ transforms: [
31282
+ {
31283
+ id: "ui.headingClassFromAlignment",
31284
+ options: { base: "" }
31285
+ }
31286
+ ],
31287
+ fallback: ""
31288
+ }
31289
+ };
30293
31290
  const defaultTextColumn = el("div", {}, [
30294
31291
  styledCard(
30295
31292
  [
@@ -30314,8 +31311,55 @@ var init_media_text = __esm({
30314
31311
  bind("content.text")
30315
31312
  )
30316
31313
  ]);
31314
+ const bioTextColumn = el(
31315
+ "div",
31316
+ { className: "rb-flex rb-h-full rb-w-full rb-max-w-prose rb-flex-col rb-justify-center rb-gap-5" },
31317
+ [
31318
+ text(
31319
+ {
31320
+ as: "h2",
31321
+ className: titleClassNameFromAlignment
31322
+ },
31323
+ when("content.title"),
31324
+ bind("content.title")
31325
+ ),
31326
+ styledCard(
31327
+ [
31328
+ richText(
31329
+ {
31330
+ className: bodyClassNameFromAlignment
31331
+ },
31332
+ bind("content.text")
31333
+ )
31334
+ ],
31335
+ {
31336
+ stylesFrom: "content._textCardStyles",
31337
+ backgroundFrom: "content._textCardStyles.background"
31338
+ },
31339
+ when("content.wrapTextInCard")
31340
+ ),
31341
+ richText(
31342
+ {
31343
+ className: bodyClassNameFromAlignment
31344
+ },
31345
+ when("content.wrapTextInCard", { not: true }),
31346
+ bind("content.text")
31347
+ )
31348
+ ]
31349
+ );
30317
31350
  const defaultImageCommonProps = {
30318
- className: "rb-w-full rb-h-auto rb-object-cover",
31351
+ className: {
31352
+ $bind: {
31353
+ from: "content.imageShape",
31354
+ transforms: [
31355
+ {
31356
+ id: "ui.imageShapeClassName",
31357
+ options: { baseClass: "rb-w-full rb-h-auto rb-object-cover" }
31358
+ }
31359
+ ],
31360
+ fallback: "rb-w-full rb-h-auto rb-object-cover"
31361
+ }
31362
+ },
30319
31363
  style: {
30320
31364
  aspectRatio: { $bind: { from: "content.aspectRatio" } }
30321
31365
  }
@@ -30356,6 +31400,27 @@ var init_media_text = __esm({
30356
31400
  ],
30357
31401
  whenImagesLength(0, { not: true })
30358
31402
  );
31403
+ const bioImagesLayout = el(
31404
+ "div",
31405
+ {},
31406
+ [
31407
+ responsiveTwoColumn({
31408
+ image: el("div", {}, [
31409
+ el("div", {}, [defaultSingleImage], whenImagesLength(1)),
31410
+ el("div", {}, [defaultCarouselImages], whenImagesLength(1, { not: true }))
31411
+ ]),
31412
+ text: bioTextColumn,
31413
+ ratioFrom: "content.ratio",
31414
+ imagePositionFrom: "content.imagePosition",
31415
+ containerClassName: "rb-flex rb-flex-col rb-md-flex-row rb-md-items-center",
31416
+ gapFrom: "content.gap",
31417
+ gapFallback: "comfortable",
31418
+ imageWrapperClassName: "rb-w-full rb-shrink-0",
31419
+ textWrapperClassName: "rb-w-full rb-min-w-0 rb-flex-1 rb-self-stretch"
31420
+ })
31421
+ ],
31422
+ whenImagesLength(0, { not: true })
31423
+ );
30359
31424
  const defaultTextOnlyLayout = el(
30360
31425
  "div",
30361
31426
  {},
@@ -30385,7 +31450,45 @@ var init_media_text = __esm({
30385
31450
  ],
30386
31451
  whenImagesLength(0)
30387
31452
  );
31453
+ const bioTextOnlyLayout = el(
31454
+ "div",
31455
+ { className: "rb-flex rb-w-full rb-max-w-prose rb-flex-col rb-gap-5" },
31456
+ [
31457
+ text(
31458
+ {
31459
+ as: "h2",
31460
+ className: titleClassNameFromAlignment
31461
+ },
31462
+ when("content.title"),
31463
+ bind("content.title")
31464
+ ),
31465
+ styledCard(
31466
+ [
31467
+ richText(
31468
+ {
31469
+ className: bodyClassNameFromAlignment
31470
+ },
31471
+ bind("content.text")
31472
+ )
31473
+ ],
31474
+ {
31475
+ stylesFrom: "content._textCardStyles",
31476
+ backgroundFrom: "content._textCardStyles.background"
31477
+ },
31478
+ when("content.wrapTextInCard")
31479
+ ),
31480
+ richText(
31481
+ {
31482
+ className: bodyClassNameFromAlignment
31483
+ },
31484
+ when("content.wrapTextInCard", { not: true }),
31485
+ bind("content.text")
31486
+ )
31487
+ ],
31488
+ whenImagesLength(0)
31489
+ );
30388
31490
  const defaultInner = el("div", {}, [defaultImagesLayout, defaultTextOnlyLayout]);
31491
+ const bioInner = el("div", {}, [bioImagesLayout, bioTextOnlyLayout]);
30389
31492
  const defaultLayout2 = styledSection({
30390
31493
  children: styledContainer({
30391
31494
  rootType: "stack",
@@ -30394,18 +31497,7 @@ var init_media_text = __esm({
30394
31497
  text(
30395
31498
  {
30396
31499
  as: "h2",
30397
- className: {
30398
- $bind: {
30399
- from: "content.titleAlignment",
30400
- transforms: [
30401
- {
30402
- id: "ui.headingClassFromAlignment",
30403
- options: { base: "" }
30404
- }
30405
- ],
30406
- fallback: ""
30407
- }
30408
- }
31500
+ className: titleClassNameFromAlignment
30409
31501
  },
30410
31502
  when("content.title"),
30411
31503
  bind("content.title")
@@ -30417,14 +31509,28 @@ var init_media_text = __esm({
30417
31509
  baseClass: "",
30418
31510
  spacing: "medium"
30419
31511
  });
31512
+ const bioLayout = styledSection({
31513
+ children: styledContainer({
31514
+ rootType: "stack",
31515
+ rootProps: { gap: "lg" },
31516
+ children: [bioInner]
31517
+ }),
31518
+ baseClass: "",
31519
+ spacing: "medium"
31520
+ });
30420
31521
  return {
30421
31522
  layout: defaultLayout2,
30422
31523
  variants: {
30423
- default: defaultLayout2
31524
+ default: defaultLayout2,
31525
+ bio: bioLayout
30424
31526
  },
30425
31527
  defaultVariant: "default",
30426
31528
  variantOptions: {
30427
- default: { label: "Default" }
31529
+ default: { label: "Default" },
31530
+ bio: {
31531
+ label: "Bio",
31532
+ description: "Vertically centered title and copy beside media."
31533
+ }
30428
31534
  }
30429
31535
  };
30430
31536
  })(),
@@ -31209,6 +32315,132 @@ var init_event_registration_shared = __esm({
31209
32315
  }
31210
32316
  });
31211
32317
 
32318
+ // ../blocks/src/system/runtime/nodes/events/shared/pricing.ts
32319
+ function resolveRuntimeEventPricing(event) {
32320
+ if (isPublicEventPricing(event.pricing)) {
32321
+ return event.pricing;
32322
+ }
32323
+ const legacy = event;
32324
+ const currency = readCurrency(legacy.currency);
32325
+ if (event.requiresRegistration === false) {
32326
+ return {
32327
+ kind: "drop_in",
32328
+ currency,
32329
+ display: { kind: "free", currency }
32330
+ };
32331
+ }
32332
+ if (legacy.pricingMode === "ticket_types") {
32333
+ const ticketTypes = Array.isArray(legacy.ticketTypes) ? legacy.ticketTypes.filter(isPublicEventTicketType) : [];
32334
+ return {
32335
+ kind: "ticket_types",
32336
+ currency,
32337
+ ticketTypes,
32338
+ display: readTicketTypePriceDisplay(legacy.priceDisplay, currency)
32339
+ };
32340
+ }
32341
+ const amount = typeof legacy.price === "number" ? legacy.price : 0;
32342
+ if (legacy.pricingType === "paid" && amount > 0) {
32343
+ return {
32344
+ kind: "single_paid",
32345
+ amount,
32346
+ currency,
32347
+ display: { kind: "exact", amount, currency }
32348
+ };
32349
+ }
32350
+ return {
32351
+ kind: "free_registration",
32352
+ currency,
32353
+ display: { kind: "free", currency }
32354
+ };
32355
+ }
32356
+ function readCurrency(value) {
32357
+ return typeof value === "string" && value.trim().length > 0 ? value : DEFAULT_EVENT_CURRENCY;
32358
+ }
32359
+ function isRecord3(value) {
32360
+ return typeof value === "object" && value !== null && !Array.isArray(value);
32361
+ }
32362
+ function isPublicEventPricing(value) {
32363
+ if (!isRecord3(value) || typeof value.kind !== "string") return false;
32364
+ return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "ticket_types" || value.kind === "course";
32365
+ }
32366
+ function isPublicEventTicketType(value) {
32367
+ return isRecord3(value) && typeof value.id === "string";
32368
+ }
32369
+ function readTicketTypePriceDisplay(value, currency) {
32370
+ const display = readLegacyPriceDisplay(value, currency);
32371
+ return display.kind === "course" ? { kind: "unavailable", currency } : display;
32372
+ }
32373
+ function readLegacyPriceDisplay(value, currency) {
32374
+ if (!isRecord3(value) || typeof value.kind !== "string") {
32375
+ return { kind: "unavailable", currency };
32376
+ }
32377
+ const displayCurrency = readCurrency(value.currency);
32378
+ switch (value.kind) {
32379
+ case "free":
32380
+ return { kind: "free", currency: displayCurrency };
32381
+ case "exact":
32382
+ return readAmount(value.amount) !== null ? {
32383
+ kind: "exact",
32384
+ amount: readAmount(value.amount) ?? 0,
32385
+ currency: displayCurrency
32386
+ } : { kind: "unavailable", currency };
32387
+ case "from":
32388
+ return readAmount(value.amount) !== null ? {
32389
+ kind: "from",
32390
+ amount: readAmount(value.amount) ?? 0,
32391
+ currency: displayCurrency
32392
+ } : { kind: "unavailable", currency };
32393
+ case "mixed":
32394
+ return readAmount(value.paidFromAmount) !== null ? {
32395
+ kind: "mixed",
32396
+ paidFromAmount: readAmount(value.paidFromAmount) ?? 0,
32397
+ currency: displayCurrency
32398
+ } : { kind: "unavailable", currency };
32399
+ case "unavailable":
32400
+ return { kind: "unavailable", currency: displayCurrency };
32401
+ case "course":
32402
+ return isRecord3(value.display) ? {
32403
+ kind: "course",
32404
+ display: readCoursePriceDisplay(value.display, displayCurrency)
32405
+ } : {
32406
+ kind: "course",
32407
+ display: { kind: "unavailable", currency: displayCurrency }
32408
+ };
32409
+ default:
32410
+ return { kind: "unavailable", currency };
32411
+ }
32412
+ }
32413
+ function readCoursePriceDisplay(value, currency) {
32414
+ switch (value.kind) {
32415
+ case "free":
32416
+ return { kind: "free", currency: readCurrency(value.currency) };
32417
+ case "exact":
32418
+ return readAmount(value.amount) !== null ? {
32419
+ kind: "exact",
32420
+ amount: readAmount(value.amount) ?? 0,
32421
+ currency: readCurrency(value.currency)
32422
+ } : { kind: "unavailable", currency };
32423
+ case "from":
32424
+ return readAmount(value.amount) !== null ? {
32425
+ kind: "from",
32426
+ amount: readAmount(value.amount) ?? 0,
32427
+ currency: readCurrency(value.currency)
32428
+ } : { kind: "unavailable", currency };
32429
+ default:
32430
+ return { kind: "unavailable", currency };
32431
+ }
32432
+ }
32433
+ function readAmount(value) {
32434
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
32435
+ }
32436
+ var DEFAULT_EVENT_CURRENCY;
32437
+ var init_pricing = __esm({
32438
+ "../blocks/src/system/runtime/nodes/events/shared/pricing.ts"() {
32439
+ "use strict";
32440
+ DEFAULT_EVENT_CURRENCY = "USD";
32441
+ }
32442
+ });
32443
+
31212
32444
  // ../blocks/src/system/constants/events.ts
31213
32445
  function isEventCalendarDisplayMode(value) {
31214
32446
  return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
@@ -31254,25 +32486,51 @@ import { z as z48 } from "zod";
31254
32486
  function buildEventRegistrationDisplay(source) {
31255
32487
  return {
31256
32488
  kind: "event-registration",
31257
- state: "shell",
32489
+ state: "generic-shell",
31258
32490
  className: source.className ?? null,
32491
+ titleText: "Event registration",
32492
+ bodyText: "Preparing dates, tickets, and booking details.",
32493
+ stepLabels: EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS,
31259
32494
  summaryButtonText: source.buttonText?.trim() || "Register"
31260
32495
  };
31261
32496
  }
31262
- var contentEntrySchema, eventRegistrationSourceSchema, eventRegistrationDisplaySchema, eventRegistrationHydrationSchema, eventRegistrationRenderSchema, eventRegistrationIslandMetaCodec, eventRegistrationIslandMetaKeys, eventRegistrationBlockRuntime, eventRegistrationInteractiveIslandPropsCodec;
32497
+ function normalizeEventRegistrationEventInput(value) {
32498
+ if (!isRecord4(value)) {
32499
+ return value;
32500
+ }
32501
+ return {
32502
+ ...value,
32503
+ pricing: resolveRuntimeEventPricing(value)
32504
+ };
32505
+ }
32506
+ function isRecord4(value) {
32507
+ return typeof value === "object" && value !== null && !Array.isArray(value);
32508
+ }
32509
+ var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS, eventRegistrationGenericDateStepLabel, eventRegistrationGenericTicketsStepLabel, eventRegistrationGenericDetailsStepLabel, contentEntrySchema, eventRegistrationPublicEventSchema, eventRegistrationSourceSchema, eventRegistrationDisplaySchema, eventRegistrationHydrationSchema, eventRegistrationRenderSchema, eventRegistrationIslandMetaCodec, eventRegistrationIslandMetaKeys, eventRegistrationBlockRuntime, eventRegistrationInteractiveIslandPropsCodec;
31263
32510
  var init_event_registration_interactive = __esm({
31264
32511
  "../blocks/src/system/runtime/nodes/event-registration.interactive.ts"() {
31265
32512
  "use strict";
31266
32513
  init_schemas2();
31267
32514
  init_event_registration_shared();
32515
+ init_pricing();
31268
32516
  init_islands();
31269
32517
  init_runtime();
31270
32518
  init_contract_schemas();
32519
+ EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
32520
+ [
32521
+ eventRegistrationGenericDateStepLabel,
32522
+ eventRegistrationGenericTicketsStepLabel,
32523
+ eventRegistrationGenericDetailsStepLabel
32524
+ ] = EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
31271
32525
  contentEntrySchema = z48.object({
31272
32526
  id: z48.string(),
31273
32527
  slug: z48.string(),
31274
32528
  contentTypeSlug: z48.string()
31275
32529
  });
32530
+ eventRegistrationPublicEventSchema = z48.preprocess(
32531
+ normalizeEventRegistrationEventInput,
32532
+ publicEventSchema
32533
+ );
31276
32534
  eventRegistrationSourceSchema = z48.object({
31277
32535
  siteId: z48.string().optional(),
31278
32536
  apiBaseUrl: z48.string().optional(),
@@ -31280,7 +32538,7 @@ var init_event_registration_interactive = __esm({
31280
32538
  previewToken: z48.string().nullable().optional(),
31281
32539
  occurrenceContext: occurrenceContextSchema.optional(),
31282
32540
  contentEntry: contentEntrySchema.nullable().optional(),
31283
- events: z48.array(publicEventSchema).nullable().optional(),
32541
+ events: z48.array(eventRegistrationPublicEventSchema).nullable().optional(),
31284
32542
  className: z48.string().nullable().optional(),
31285
32543
  buttonText: z48.string().nullable().optional(),
31286
32544
  maxTickets: z48.string().nullable().optional(),
@@ -31295,14 +32553,21 @@ var init_event_registration_interactive = __esm({
31295
32553
  });
31296
32554
  eventRegistrationDisplaySchema = z48.object({
31297
32555
  kind: z48.literal("event-registration"),
31298
- state: z48.literal("shell"),
32556
+ state: z48.literal("generic-shell"),
31299
32557
  className: z48.string().nullable(),
32558
+ titleText: z48.string(),
32559
+ bodyText: z48.string(),
32560
+ stepLabels: z48.tuple([
32561
+ z48.literal(eventRegistrationGenericDateStepLabel),
32562
+ z48.literal(eventRegistrationGenericTicketsStepLabel),
32563
+ z48.literal(eventRegistrationGenericDetailsStepLabel)
32564
+ ]),
31300
32565
  summaryButtonText: z48.string()
31301
32566
  });
31302
32567
  eventRegistrationHydrationSchema = z48.object({
31303
32568
  occurrenceContext: occurrenceContextSchema.optional(),
31304
32569
  contentEntry: contentEntrySchema.nullable().optional(),
31305
- events: z48.array(publicEventSchema).nullable().optional(),
32570
+ events: z48.array(eventRegistrationPublicEventSchema).nullable().optional(),
31306
32571
  maxTickets: z48.string().optional(),
31307
32572
  showVenue: z48.boolean().optional(),
31308
32573
  showCapacity: z48.boolean().optional(),
@@ -31580,7 +32845,7 @@ var init_types16 = __esm({
31580
32845
  });
31581
32846
 
31582
32847
  // ../blocks/src/system/blocks/courses/shared/pricing.ts
31583
- var init_pricing = __esm({
32848
+ var init_pricing2 = __esm({
31584
32849
  "../blocks/src/system/blocks/courses/shared/pricing.ts"() {
31585
32850
  "use strict";
31586
32851
  }
@@ -31592,7 +32857,7 @@ var init_shared4 = __esm({
31592
32857
  "use strict";
31593
32858
  init_types16();
31594
32859
  init_schemas();
31595
- init_pricing();
32860
+ init_pricing2();
31596
32861
  }
31597
32862
  });
31598
32863
 
@@ -34017,7 +35282,7 @@ function inferLegacyOfferingsPreviewGroupOrder(overrides) {
34017
35282
  return keys.length >= 2 ? keys : [];
34018
35283
  }
34019
35284
  function normalizeOfferingsPreviewContentForWrite(value) {
34020
- if (!isRecord3(value)) return null;
35285
+ if (!isRecord5(value)) return null;
34021
35286
  const groupOrderValue = value.groupOrder;
34022
35287
  if (Array.isArray(groupOrderValue)) {
34023
35288
  const normalized = normalizeOfferingsPreviewGroupOrder(groupOrderValue);
@@ -34030,7 +35295,7 @@ function normalizeOfferingsPreviewContentForWrite(value) {
34030
35295
  return { ...value, groupOrder: [] };
34031
35296
  }
34032
35297
  const legacyOrder = inferLegacyOfferingsPreviewGroupOrder(
34033
- Array.isArray(value.groupOverrides) ? value.groupOverrides.filter(isRecord3) : []
35298
+ Array.isArray(value.groupOverrides) ? value.groupOverrides.filter(isRecord5) : []
34034
35299
  );
34035
35300
  return legacyOrder.length > 0 ? { ...value, groupOrder: legacyOrder } : value;
34036
35301
  }
@@ -34044,7 +35309,7 @@ function uniqueOfferingsPreviewSourceKeys(values) {
34044
35309
  }
34045
35310
  return keys;
34046
35311
  }
34047
- function isRecord3(value) {
35312
+ function isRecord5(value) {
34048
35313
  return typeof value === "object" && value !== null && !Array.isArray(value);
34049
35314
  }
34050
35315
  var OFFERINGS_PREVIEW_DEFAULT_ITEM_LIMIT, OFFERINGS_PREVIEW_DEFAULT_BUTTON_TEXT, OFFERINGS_PREVIEW_DEFAULT_EMPTY_MESSAGE, OFFERINGS_PREVIEW_EVENT_PRESET_DEFINITIONS, OFFERINGS_PREVIEW_EVENT_PRESETS, OFFERINGS_PREVIEW_AUTHORABLE_SOURCE_KEYS, OFFERINGS_PREVIEW_SOURCE_KEYS, eventPresetSourceByKey;
@@ -34167,7 +35432,7 @@ function isOfferingsPreviewItemLimit(value) {
34167
35432
  return value === "1" || value === "2" || value === "3" || value === "4" || value === "5" || value === "6" || value === null;
34168
35433
  }
34169
35434
  function normalizeOfferingsPreviewGroupOverride(value) {
34170
- if (!isRecord4(value)) return [];
35435
+ if (!isRecord6(value)) return [];
34171
35436
  const override = {};
34172
35437
  if (isOfferingsPreviewSourceKey(value.sourceKey) || value.sourceKey === null) {
34173
35438
  override.sourceKey = value.sourceKey;
@@ -34199,12 +35464,12 @@ function isButtonVariant(value) {
34199
35464
  return value === "primary" || value === "secondary" || value === "outline" || value === "link" || value === null;
34200
35465
  }
34201
35466
  function normalizeCardStylesContent(value) {
34202
- return isRecord4(value) || value === null ? value : void 0;
35467
+ return isRecord6(value) || value === null ? value : void 0;
34203
35468
  }
34204
35469
  function normalizeSectionStylesContent(value) {
34205
- return isRecord4(value) || value === null ? value : void 0;
35470
+ return isRecord6(value) || value === null ? value : void 0;
34206
35471
  }
34207
- function isRecord4(value) {
35472
+ function isRecord6(value) {
34208
35473
  return typeof value === "object" && value !== null && !Array.isArray(value);
34209
35474
  }
34210
35475
  var publicRouteCandidatesSchema, groupOverrideFields, offeringsPreviewFields, offeringsPreviewEventDataBindings, offeringsPreviewLayout, offeringsPreviewConfig, offeringsPreviewManifest, optionalPublicEventsArraySchema, offeringsPreviewEventDataSchemas, offeringsPreviewEventDataLoaders, offeringsPreviewBlockDefinition;
@@ -38789,6 +40054,7 @@ var init_blocks = __esm({
38789
40054
  init_cta_full();
38790
40055
  init_single_button();
38791
40056
  init_form();
40057
+ init_contact_newsletter();
38792
40058
  init_faq();
38793
40059
  init_site_header();
38794
40060
  init_site_footer();
@@ -38827,6 +40093,7 @@ var init_blocks = __esm({
38827
40093
  init_cta_full();
38828
40094
  init_single_button();
38829
40095
  init_form();
40096
+ init_contact_newsletter();
38830
40097
  init_faq();
38831
40098
  init_site_header();
38832
40099
  init_site_footer();
@@ -38875,11 +40142,13 @@ var init_blocks = __esm({
38875
40142
  ];
38876
40143
  standardEyebrowTreatments = [
38877
40144
  "plain",
40145
+ "accent",
38878
40146
  "pill",
38879
40147
  "accent-pill"
38880
40148
  ];
38881
40149
  animatedEyebrowTreatments = [
38882
40150
  "plain",
40151
+ "accent",
38883
40152
  "pill",
38884
40153
  "accent-pill",
38885
40154
  "pill-bounce",
@@ -39097,6 +40366,17 @@ var init_blocks = __esm({
39097
40366
  layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" })
39098
40367
  ]
39099
40368
  })),
40369
+ withDesignCapability("block.contact-newsletter", contactNewsletterBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
40370
+ flow: conversionFlow,
40371
+ layoutProfiles: [
40372
+ layoutProfile({
40373
+ variantKey: "default",
40374
+ family: "split",
40375
+ weight: "featured",
40376
+ bias: "soft"
40377
+ })
40378
+ ]
40379
+ })),
39100
40380
  withDesignCapability("block.faq", faqBlockDefinition, withEyebrowCapability(declareBlockDesignCapability({
39101
40381
  sectionSurfaces: "supported",
39102
40382
  contentFrames: ["plain", "panel"],
@@ -39188,6 +40468,12 @@ var init_blocks = __esm({
39188
40468
  family: "media-text",
39189
40469
  weight: "featured",
39190
40470
  bias: "soft"
40471
+ }),
40472
+ layoutProfile({
40473
+ variantKey: "bio",
40474
+ family: "media-text",
40475
+ weight: "featured",
40476
+ bias: "soft"
39191
40477
  })
39192
40478
  ]
39193
40479
  })),
@@ -40084,7 +41370,7 @@ var init_transforms = __esm({
40084
41370
 
40085
41371
  // ../blocks/src/system/data/linkedContentEntries.ts
40086
41372
  function coerceLinkedContentEntriesPayload(payload) {
40087
- if (!isRecord5(payload)) return payload;
41373
+ if (!isRecord7(payload)) return payload;
40088
41374
  const response = payload;
40089
41375
  if (!Array.isArray(response.entries)) return payload;
40090
41376
  const contentType = parsePublicContentTypeMeta(response.contentType);
@@ -40092,12 +41378,12 @@ function coerceLinkedContentEntriesPayload(payload) {
40092
41378
  return response.entries.map((entry) => enrichLinkedContentEntry(entry, contentType));
40093
41379
  }
40094
41380
  function enrichLinkedContentEntry(entry, contentType) {
40095
- if (!isRecord5(entry)) return entry;
41381
+ if (!isRecord7(entry)) return entry;
40096
41382
  const entryId = typeof entry.id === "string" ? entry.id : null;
40097
41383
  if (!entryId) return entry;
40098
41384
  const title = typeof entry.title === "string" && entry.title.trim().length > 0 ? entry.title : entryId;
40099
41385
  const optimisticHash = typeof entry.optimisticHash === "string" && entry.optimisticHash.length > 0 ? entry.optimisticHash : null;
40100
- const content = isRecord5(entry.content) ? entry.content : {};
41386
+ const content = isRecord7(entry.content) ? entry.content : {};
40101
41387
  const meta = {
40102
41388
  kind: "linked-content-entry",
40103
41389
  entryId,
@@ -40190,7 +41476,7 @@ function capitalize(value) {
40190
41476
  return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();
40191
41477
  }
40192
41478
  function parsePublicContentTypeMeta(value) {
40193
- if (!isRecord5(value)) return null;
41479
+ if (!isRecord7(value)) return null;
40194
41480
  if (typeof value.key !== "string" || value.key.trim().length === 0) return null;
40195
41481
  return {
40196
41482
  key: value.key,
@@ -40200,7 +41486,7 @@ function parsePublicContentTypeMeta(value) {
40200
41486
  };
40201
41487
  }
40202
41488
  function parsePublicContentTypeLinkedEntryEditing(value) {
40203
- if (!isRecord5(value) || typeof value.kind !== "string") return null;
41489
+ if (!isRecord7(value) || typeof value.kind !== "string") return null;
40204
41490
  switch (value.kind) {
40205
41491
  case "generic":
40206
41492
  return { kind: "generic" };
@@ -40214,7 +41500,7 @@ function parsePublicContentTypeLinkedEntryEditing(value) {
40214
41500
  }
40215
41501
  }
40216
41502
  function parsePublicContentTypeFieldMeta(value) {
40217
- if (!isRecord5(value)) return [];
41503
+ if (!isRecord7(value)) return [];
40218
41504
  if (typeof value.id !== "string" || typeof value.type !== "string") return [];
40219
41505
  return [{
40220
41506
  id: value.id,
@@ -40228,7 +41514,7 @@ function parseStringArray(value) {
40228
41514
  if (!Array.isArray(value)) return null;
40229
41515
  return value.filter((item) => typeof item === "string");
40230
41516
  }
40231
- function isRecord5(value) {
41517
+ function isRecord7(value) {
40232
41518
  return typeof value === "object" && value !== null && !Array.isArray(value);
40233
41519
  }
40234
41520
  var LINKED_CONTENT_ENTRY_META_KEY;
@@ -40493,6 +41779,7 @@ var init_generateInputCss = __esm({
40493
41779
  init_types9();
40494
41780
  init_constants();
40495
41781
  init_border2();
41782
+ init_colorStyles();
40496
41783
  }
40497
41784
  });
40498
41785
 
@@ -40837,6 +42124,11 @@ ${root} {
40837
42124
  --er-event-card-bg: rgb(var(--tb-surface));
40838
42125
  --er-event-card-border-width: var(--rb-border-width, 1px);
40839
42126
  --er-event-card-hover-opacity: 1;
42127
+ --er-control-bg: rgb(var(--tb-background, var(--tb-surface)));
42128
+ --er-control-text: rgb(var(--tb-foreground, var(--tb-text)));
42129
+ --er-radius: var(--rb-block-radius);
42130
+ --er-surface-muted: rgba(var(--tb-muted, 241 245 249), 0.42);
42131
+ --er-shell-line: rgba(var(--tb-mutedText, 100 116 139), 0.22);
40840
42132
 
40841
42133
  /* Step indicator */
40842
42134
  --er-step-active: rgb(var(--tb-primary));
@@ -43396,7 +44688,7 @@ var init_event_destination_policy = __esm({
43396
44688
  });
43397
44689
 
43398
44690
  // ../api/src/utils/isRecord.ts
43399
- function isRecord6(value) {
44691
+ function isRecord8(value) {
43400
44692
  return typeof value === "object" && value !== null && !Array.isArray(value);
43401
44693
  }
43402
44694
  var init_isRecord = __esm({
@@ -43760,7 +45052,7 @@ function sanitizeMarks(marks) {
43760
45052
  if (mark.type === "bold" || mark.type === "strong" || mark.type === "italic" || mark.type === "em") {
43761
45053
  return [{ type: mark.type }];
43762
45054
  }
43763
- if (mark.type === "link" && isRecord6(mark.attrs) && typeof mark.attrs.href === "string") {
45055
+ if (mark.type === "link" && isRecord8(mark.attrs) && typeof mark.attrs.href === "string") {
43764
45056
  const attrs = { href: mark.attrs.href };
43765
45057
  if (typeof mark.attrs.target === "string" && mark.attrs.target.trim().length > 0) {
43766
45058
  attrs.target = mark.attrs.target;
@@ -43775,10 +45067,10 @@ function sanitizeMarks(marks) {
43775
45067
  return sanitized.length > 0 ? sanitized : void 0;
43776
45068
  }
43777
45069
  function unwrapRichTextValue(value) {
43778
- if (isRecord6(value) && isRecord6(value.doc)) {
45070
+ if (isRecord8(value) && isRecord8(value.doc)) {
43779
45071
  return unwrapRichTextValue(value.doc);
43780
45072
  }
43781
- if (isRecord6(value) && value.type === "doc") {
45073
+ if (isRecord8(value) && value.type === "doc") {
43782
45074
  return {
43783
45075
  type: "doc",
43784
45076
  content: Array.isArray(value.content) ? value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) : []
@@ -43787,7 +45079,7 @@ function unwrapRichTextValue(value) {
43787
45079
  return EMPTY_SITE_BANNER_BODY;
43788
45080
  }
43789
45081
  function isTipTapNodeLike(value) {
43790
- return isRecord6(value) && typeof value.type === "string";
45082
+ return isRecord8(value) && typeof value.type === "string";
43791
45083
  }
43792
45084
  function coerceTipTapNode(value) {
43793
45085
  return {
@@ -43795,9 +45087,9 @@ function coerceTipTapNode(value) {
43795
45087
  ...Array.isArray(value.content) ? { content: value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) } : {},
43796
45088
  ...typeof value.text === "string" ? { text: value.text } : {},
43797
45089
  ...Array.isArray(value.marks) ? {
43798
- marks: value.marks.filter((mark) => isRecord6(mark) && typeof mark.type === "string").map((mark) => ({
45090
+ marks: value.marks.filter((mark) => isRecord8(mark) && typeof mark.type === "string").map((mark) => ({
43799
45091
  type: mark.type,
43800
- ...isRecord6(mark.attrs) ? { attrs: mark.attrs } : {}
45092
+ ...isRecord8(mark.attrs) ? { attrs: mark.attrs } : {}
43801
45093
  }))
43802
45094
  } : {}
43803
45095
  };
@@ -44449,7 +45741,7 @@ var init_src5 = __esm({
44449
45741
  function isSupportedLoaderEndpoint2(endpoint) {
44450
45742
  return SUPPORTED_LOADER_ENDPOINTS2.includes(endpoint);
44451
45743
  }
44452
- function isRecord7(value) {
45744
+ function isRecord9(value) {
44453
45745
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
44454
45746
  }
44455
45747
  function extractManualEntryRef(item) {
@@ -44457,7 +45749,7 @@ function extractManualEntryRef(item) {
44457
45749
  const trimmed = item.trim();
44458
45750
  return trimmed.length > 0 ? trimmed : null;
44459
45751
  }
44460
- if (!isRecord7(item)) return null;
45752
+ if (!isRecord9(item)) return null;
44461
45753
  for (const key of ENTRY_REF_KEYS) {
44462
45754
  const raw = item[key];
44463
45755
  if (typeof raw === "string" && raw.trim().length > 0) {