@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
@@ -1360,7 +1360,7 @@ function rgbColorValue(token) {
1360
1360
  if (alpha === void 0) {
1361
1361
  return `rgb(var(${cssVar}))`;
1362
1362
  }
1363
- return `rgba(var(${cssVar}), ${alpha})`;
1363
+ return `rgb(var(${cssVar}) / ${alpha})`;
1364
1364
  }
1365
1365
  function backgroundColorStyle(token) {
1366
1366
  return { backgroundColor: rgbColorValue(token) };
@@ -2461,6 +2461,102 @@ var init_joy_stamp = __esm({
2461
2461
  }
2462
2462
  });
2463
2463
 
2464
+ // ../theme-core/src/buttons/personalities/ornate-ritual.ts
2465
+ var ornateRitual;
2466
+ var init_ornate_ritual = __esm({
2467
+ "../theme-core/src/buttons/personalities/ornate-ritual.ts"() {
2468
+ "use strict";
2469
+ init_types2();
2470
+ ornateRitual = defineButtonPersonality({
2471
+ id: "ornate-ritual",
2472
+ name: "Ornate Ritual",
2473
+ description: "Ceremonial framed buttons with jewel-toned fills and quiet color-change hover states.",
2474
+ tags: { tone: "classic", energy: "vibrant", motion: "subtle", era: "organic" },
2475
+ buttonSystem: {
2476
+ global: {
2477
+ cornerStyle: "rounded",
2478
+ shadow: "none",
2479
+ textTransform: "uppercase",
2480
+ fontWeight: 600,
2481
+ borderWidth: 1,
2482
+ hoverTransform: "none",
2483
+ hoverColor: "none",
2484
+ letterSpacing: "loose"
2485
+ },
2486
+ sizes: {
2487
+ sm: { padding: "0.5625rem 1.25rem", fontSize: "text-xs" },
2488
+ md: { padding: "0.75rem 1.75rem", fontSize: "text-xs" },
2489
+ lg: { padding: "0.875rem 2.25rem", fontSize: "text-sm" },
2490
+ xl: { padding: "1rem 2.75rem", fontSize: "text-base" }
2491
+ },
2492
+ variants: [
2493
+ {
2494
+ id: "primary",
2495
+ name: "Primary",
2496
+ enabled: true,
2497
+ priority: 1,
2498
+ background: { type: "solid", colorToken: "primary" },
2499
+ textColorToken: "primaryForeground",
2500
+ borderRadius: "rounded-md",
2501
+ border: { widthClass: "border", colorToken: "primary" },
2502
+ shadow: { elevation: "none", softness: null, position: "bottom" },
2503
+ effects: {
2504
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "primary-100" } }],
2505
+ active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
2506
+ }
2507
+ },
2508
+ {
2509
+ id: "secondary",
2510
+ name: "Secondary",
2511
+ enabled: true,
2512
+ priority: 2,
2513
+ background: { type: "solid", colorToken: "secondary" },
2514
+ textColorToken: "primaryForeground",
2515
+ borderRadius: "rounded-md",
2516
+ border: { widthClass: "border", colorToken: "primary" },
2517
+ shadow: { elevation: "none", softness: null, position: "bottom" },
2518
+ effects: {
2519
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
2520
+ }
2521
+ },
2522
+ {
2523
+ id: "outline",
2524
+ name: "Outline",
2525
+ enabled: true,
2526
+ priority: 3,
2527
+ background: { type: "transparent" },
2528
+ textColorToken: "primary",
2529
+ borderRadius: "rounded-md",
2530
+ border: { widthClass: "border", colorToken: "primary" },
2531
+ shadow: { elevation: "none", softness: null, position: "bottom" },
2532
+ effects: {
2533
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "muted" } }]
2534
+ }
2535
+ },
2536
+ {
2537
+ id: "ghost",
2538
+ name: "Ghost",
2539
+ enabled: true,
2540
+ priority: 3,
2541
+ background: { type: "transparent" },
2542
+ textColorToken: "accent",
2543
+ borderRadius: "rounded-none",
2544
+ sizes: {
2545
+ sm: { padding: "0.375rem 0", fontSize: "text-xs" },
2546
+ md: { padding: "0.5rem 0", fontSize: "text-sm" },
2547
+ lg: { padding: "0.625rem 0", fontSize: "text-base" },
2548
+ xl: { padding: "0.75rem 0", fontSize: "text-lg" }
2549
+ },
2550
+ effects: {
2551
+ base: [{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }]
2552
+ }
2553
+ }
2554
+ ]
2555
+ }
2556
+ });
2557
+ }
2558
+ });
2559
+
2464
2560
  // ../theme-core/src/buttons/personalities/pebble.ts
2465
2561
  var pebble;
2466
2562
  var init_pebble = __esm({
@@ -2756,6 +2852,7 @@ var init_personalities = __esm({
2756
2852
  init_editorial_link();
2757
2853
  init_ink_stamp();
2758
2854
  init_joy_stamp();
2855
+ init_ornate_ritual();
2759
2856
  init_pebble();
2760
2857
  init_showtime_pill();
2761
2858
  init_soft_pill();
@@ -2769,7 +2866,8 @@ var init_personalities = __esm({
2769
2866
  inkStamp,
2770
2867
  brushedWash,
2771
2868
  showtimePill,
2772
- joyStamp
2869
+ joyStamp,
2870
+ ornateRitual
2773
2871
  ];
2774
2872
  personalitiesById = new Map(
2775
2873
  buttonPersonalities.map((p) => [p.id, p])
@@ -7461,6 +7559,9 @@ var init_types5 = __esm({
7461
7559
  function defineExactCatalog() {
7462
7560
  return (entries) => entries;
7463
7561
  }
7562
+ function asDesignBlockId(value) {
7563
+ return brandNonEmptyString(value, "DesignBlockId");
7564
+ }
7464
7565
  function asAppearancePresetId(value) {
7465
7566
  return brandNonEmptyString(value, "AppearancePresetId");
7466
7567
  }
@@ -7513,6 +7614,7 @@ var init_types6 = __esm({
7513
7614
  ];
7514
7615
  eyebrowTreatmentValues = [
7515
7616
  "plain",
7617
+ "accent",
7516
7618
  "pill",
7517
7619
  "accent-pill",
7518
7620
  "pill-bounce",
@@ -9049,6 +9151,132 @@ var init_shared = __esm({
9049
9151
  }
9050
9152
  });
9051
9153
 
9154
+ // ../blocks/src/system/runtime/nodes/events/shared/pricing.ts
9155
+ function resolveRuntimeEventPricing(event) {
9156
+ if (isPublicEventPricing(event.pricing)) {
9157
+ return event.pricing;
9158
+ }
9159
+ const legacy = event;
9160
+ const currency = readCurrency(legacy.currency);
9161
+ if (event.requiresRegistration === false) {
9162
+ return {
9163
+ kind: "drop_in",
9164
+ currency,
9165
+ display: { kind: "free", currency }
9166
+ };
9167
+ }
9168
+ if (legacy.pricingMode === "ticket_types") {
9169
+ const ticketTypes = Array.isArray(legacy.ticketTypes) ? legacy.ticketTypes.filter(isPublicEventTicketType) : [];
9170
+ return {
9171
+ kind: "ticket_types",
9172
+ currency,
9173
+ ticketTypes,
9174
+ display: readTicketTypePriceDisplay(legacy.priceDisplay, currency)
9175
+ };
9176
+ }
9177
+ const amount = typeof legacy.price === "number" ? legacy.price : 0;
9178
+ if (legacy.pricingType === "paid" && amount > 0) {
9179
+ return {
9180
+ kind: "single_paid",
9181
+ amount,
9182
+ currency,
9183
+ display: { kind: "exact", amount, currency }
9184
+ };
9185
+ }
9186
+ return {
9187
+ kind: "free_registration",
9188
+ currency,
9189
+ display: { kind: "free", currency }
9190
+ };
9191
+ }
9192
+ function readCurrency(value) {
9193
+ return typeof value === "string" && value.trim().length > 0 ? value : DEFAULT_EVENT_CURRENCY;
9194
+ }
9195
+ function isRecord6(value) {
9196
+ return typeof value === "object" && value !== null && !Array.isArray(value);
9197
+ }
9198
+ function isPublicEventPricing(value) {
9199
+ if (!isRecord6(value) || typeof value.kind !== "string") return false;
9200
+ return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "ticket_types" || value.kind === "course";
9201
+ }
9202
+ function isPublicEventTicketType(value) {
9203
+ return isRecord6(value) && typeof value.id === "string";
9204
+ }
9205
+ function readTicketTypePriceDisplay(value, currency) {
9206
+ const display = readLegacyPriceDisplay(value, currency);
9207
+ return display.kind === "course" ? { kind: "unavailable", currency } : display;
9208
+ }
9209
+ function readLegacyPriceDisplay(value, currency) {
9210
+ if (!isRecord6(value) || typeof value.kind !== "string") {
9211
+ return { kind: "unavailable", currency };
9212
+ }
9213
+ const displayCurrency = readCurrency(value.currency);
9214
+ switch (value.kind) {
9215
+ case "free":
9216
+ return { kind: "free", currency: displayCurrency };
9217
+ case "exact":
9218
+ return readAmount(value.amount) !== null ? {
9219
+ kind: "exact",
9220
+ amount: readAmount(value.amount) ?? 0,
9221
+ currency: displayCurrency
9222
+ } : { kind: "unavailable", currency };
9223
+ case "from":
9224
+ return readAmount(value.amount) !== null ? {
9225
+ kind: "from",
9226
+ amount: readAmount(value.amount) ?? 0,
9227
+ currency: displayCurrency
9228
+ } : { kind: "unavailable", currency };
9229
+ case "mixed":
9230
+ return readAmount(value.paidFromAmount) !== null ? {
9231
+ kind: "mixed",
9232
+ paidFromAmount: readAmount(value.paidFromAmount) ?? 0,
9233
+ currency: displayCurrency
9234
+ } : { kind: "unavailable", currency };
9235
+ case "unavailable":
9236
+ return { kind: "unavailable", currency: displayCurrency };
9237
+ case "course":
9238
+ return isRecord6(value.display) ? {
9239
+ kind: "course",
9240
+ display: readCoursePriceDisplay(value.display, displayCurrency)
9241
+ } : {
9242
+ kind: "course",
9243
+ display: { kind: "unavailable", currency: displayCurrency }
9244
+ };
9245
+ default:
9246
+ return { kind: "unavailable", currency };
9247
+ }
9248
+ }
9249
+ function readCoursePriceDisplay(value, currency) {
9250
+ switch (value.kind) {
9251
+ case "free":
9252
+ return { kind: "free", currency: readCurrency(value.currency) };
9253
+ case "exact":
9254
+ return readAmount(value.amount) !== null ? {
9255
+ kind: "exact",
9256
+ amount: readAmount(value.amount) ?? 0,
9257
+ currency: readCurrency(value.currency)
9258
+ } : { kind: "unavailable", currency };
9259
+ case "from":
9260
+ return readAmount(value.amount) !== null ? {
9261
+ kind: "from",
9262
+ amount: readAmount(value.amount) ?? 0,
9263
+ currency: readCurrency(value.currency)
9264
+ } : { kind: "unavailable", currency };
9265
+ default:
9266
+ return { kind: "unavailable", currency };
9267
+ }
9268
+ }
9269
+ function readAmount(value) {
9270
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
9271
+ }
9272
+ var DEFAULT_EVENT_CURRENCY;
9273
+ var init_pricing2 = __esm({
9274
+ "../blocks/src/system/runtime/nodes/events/shared/pricing.ts"() {
9275
+ "use strict";
9276
+ DEFAULT_EVENT_CURRENCY = "USD";
9277
+ }
9278
+ });
9279
+
9052
9280
  // ../calendar/src/grid.ts
9053
9281
  function formatDateKey2(date) {
9054
9282
  const year = date.getFullYear();
@@ -9765,7 +9993,9 @@ function formatPublicEventPriceDisplay(display) {
9765
9993
  }
9766
9994
  }
9767
9995
  function formatEventPrice(event) {
9768
- return formatPublicEventPriceDisplay(publicEventPricingDisplay(event.pricing));
9996
+ return formatPublicEventPriceDisplay(
9997
+ publicEventPricingDisplay(resolveRuntimeEventPricing(event))
9998
+ );
9769
9999
  }
9770
10000
  function resolveEventCta(event, buttonText) {
9771
10001
  const { isFull: isSoldOut } = getEventAvailability(event);
@@ -9786,6 +10016,7 @@ var init_utils = __esm({
9786
10016
  init_src3();
9787
10017
  init_shared();
9788
10018
  init_eventCapacity();
10019
+ init_pricing2();
9789
10020
  init_src3();
9790
10021
  init_src3();
9791
10022
  COLUMN_CLASSES = {
@@ -9881,8 +10112,9 @@ function EventDetailsView({
9881
10112
  priceCents: selected.course.priceCents,
9882
10113
  currency: selected.course.currency
9883
10114
  }) : null;
9884
- const eventPricingType = publicEventPricingType(selected.pricing);
9885
- const eventPricingCurrency = publicEventPricingCurrency(selected.pricing) ?? "USD";
10115
+ const eventPricing = resolveRuntimeEventPricing(selected);
10116
+ const eventPricingType = publicEventPricingType(eventPricing);
10117
+ const eventPricingCurrency = publicEventPricingCurrency(eventPricing) ?? "USD";
9886
10118
  const isPaid = eventPricingType === "paid";
9887
10119
  const shouldShowCoursePricing = showCost && !isDropIn && coursePricing !== null;
9888
10120
  const shouldShowEventCost = showCost && isPaid && !isDropIn && coursePricing === null;
@@ -9980,6 +10212,7 @@ var init_view = __esm({
9980
10212
  "use strict";
9981
10213
  init_src();
9982
10214
  init_shared();
10215
+ init_pricing2();
9983
10216
  init_utils();
9984
10217
  init_DateTimeTile();
9985
10218
  init_CoursePricingDisplay();
@@ -12435,6 +12668,15 @@ var init_onColor = __esm({
12435
12668
  }
12436
12669
  });
12437
12670
 
12671
+ // ../theme-core/src/site-styles/accessibleSurfaces.ts
12672
+ var init_accessibleSurfaces = __esm({
12673
+ "../theme-core/src/site-styles/accessibleSurfaces.ts"() {
12674
+ "use strict";
12675
+ init_contrast2();
12676
+ init_onColor();
12677
+ }
12678
+ });
12679
+
12438
12680
  // ../theme-core/src/site-styles/headerCtaVariants.ts
12439
12681
  function hasButtonVariant(theme, variantId) {
12440
12682
  return theme.buttons?.variants.some((variant) => variant.enabled && variant.id === variantId) ?? false;
@@ -12464,6 +12706,13 @@ var init_headerCtaVariants = __esm({
12464
12706
  }
12465
12707
  });
12466
12708
 
12709
+ // ../theme-core/src/mock-themes/modern-minimal.ts
12710
+ var init_modern_minimal = __esm({
12711
+ "../theme-core/src/mock-themes/modern-minimal.ts"() {
12712
+ "use strict";
12713
+ }
12714
+ });
12715
+
12467
12716
  // ../theme-core/src/palette/generateCssVars.ts
12468
12717
  var init_generateCssVars = __esm({
12469
12718
  "../theme-core/src/palette/generateCssVars.ts"() {
@@ -14094,7 +14343,7 @@ var init_warm_neutral = __esm({
14094
14343
  });
14095
14344
 
14096
14345
  // ../theme-core/src/palette/variants/warm-dark.ts
14097
- var warmDarkEmber;
14346
+ var warmDarkEmber, warmDarkKirtanGold;
14098
14347
  var init_warm_dark = __esm({
14099
14348
  "../theme-core/src/palette/variants/warm-dark.ts"() {
14100
14349
  "use strict";
@@ -14121,6 +14370,28 @@ var init_warm_dark = __esm({
14121
14370
  { name: "border", hex: "#894e31" }
14122
14371
  ]
14123
14372
  });
14373
+ warmDarkKirtanGold = definePaletteVariant({
14374
+ id: "warm-dark-kirtan-gold",
14375
+ name: "Warm Dark \u2014 Kirtan Gold",
14376
+ description: "Deep plum ground with pale gold primary, rose accent, and soft devotional text.",
14377
+ tags: { tone: "bold", energy: "calm", era: "editorial" },
14378
+ mode: "dark",
14379
+ colors: [
14380
+ { name: "primary", hex: "#ffcdb2" },
14381
+ { name: "secondary", hex: "#b5838d" },
14382
+ { name: "accent", hex: "#e5989b" },
14383
+ { name: "success", hex: "#8fbf8f" },
14384
+ { name: "warning", hex: "#f2b86b" },
14385
+ { name: "destructive", hex: "#d96b6b" },
14386
+ { name: "background", hex: "#403944" },
14387
+ { name: "surface", hex: "#403944" },
14388
+ { name: "surfaceAlt", hex: "#372f3b" },
14389
+ { name: "muted", hex: "#4d4550" },
14390
+ { name: "text", hex: "#e6d2d5" },
14391
+ { name: "primaryForeground", hex: "#403944" },
14392
+ { name: "border", hex: "#8d747a" }
14393
+ ]
14394
+ });
14124
14395
  }
14125
14396
  });
14126
14397
 
@@ -14156,7 +14427,8 @@ var init_variants = __esm({
14156
14427
  softNaturalWatercolor,
14157
14428
  softNaturalLilac,
14158
14429
  // Warm-dark family (dark mode)
14159
- warmDarkEmber
14430
+ warmDarkEmber,
14431
+ warmDarkKirtanGold
14160
14432
  ];
14161
14433
  paletteVariantsById = new Map(
14162
14434
  paletteVariants.map((v) => [v.id, v])
@@ -14183,6 +14455,13 @@ var init_tokens2 = __esm({
14183
14455
  }
14184
14456
  });
14185
14457
 
14458
+ // ../theme-core/src/site-styles/schemaVersionedJson.ts
14459
+ var init_schemaVersionedJson = __esm({
14460
+ "../theme-core/src/site-styles/schemaVersionedJson.ts"() {
14461
+ "use strict";
14462
+ }
14463
+ });
14464
+
14186
14465
  // ../theme-core/src/accordions/siteStyleDefaults.ts
14187
14466
  var editorialDividedAccordionSystem, quietUnderlinedAccordionSystem, calmPanelAccordionSystem, boldBorderedAccordionSystem, warmInsetAccordionSystem, softEarthAccordionSystem;
14188
14467
  var init_siteStyleDefaults = __esm({
@@ -15421,8 +15700,69 @@ var init_headerLooks = __esm({
15421
15700
  function asFooterLookId(value) {
15422
15701
  return value;
15423
15702
  }
15703
+ function asFooterLayoutId(value) {
15704
+ return value;
15705
+ }
15706
+ function asFooterStyleId(value) {
15707
+ return value;
15708
+ }
15709
+ function identityQuietFooter(theme) {
15710
+ return {
15711
+ ...theme.footer,
15712
+ variant: "simple",
15713
+ maxWidth: "container",
15714
+ background: {
15715
+ type: "color",
15716
+ color: "surface"
15717
+ },
15718
+ navStyle: "minimal",
15719
+ navWeight: "regular",
15720
+ navColor: "text",
15721
+ navLinkStyle: {
15722
+ typography: "body",
15723
+ fontWeight: "regular",
15724
+ textTransform: "none",
15725
+ italic: false,
15726
+ colorToken: "text",
15727
+ hoverColorToken: "primary",
15728
+ padding: "none",
15729
+ borderRadius: "none"
15730
+ },
15731
+ navLayout: {
15732
+ layout: "inline-wrap",
15733
+ align: "start",
15734
+ gapX: "default",
15735
+ gapY: "tight"
15736
+ },
15737
+ logo: {
15738
+ showLogo: true,
15739
+ showLogoText: true,
15740
+ placement: "left",
15741
+ size: "sm",
15742
+ align: "start"
15743
+ },
15744
+ bottomBar: {
15745
+ enabled: false,
15746
+ fullBleed: false,
15747
+ textAlign: "left",
15748
+ paddingX: "default",
15749
+ paddingY: "compact",
15750
+ borderTop: {
15751
+ width: "none"
15752
+ }
15753
+ }
15754
+ };
15755
+ }
15424
15756
  function mutedGroundingFooter(theme) {
15425
- return theme.footer;
15757
+ return {
15758
+ ...identityQuietFooter(theme),
15759
+ background: theme.footer.background,
15760
+ navStyle: theme.footer.navStyle,
15761
+ navColor: theme.footer.navColor,
15762
+ navWeight: theme.footer.navWeight,
15763
+ navLinkStyle: theme.footer.navLinkStyle,
15764
+ bottomTextLinkStyle: theme.footer.bottomTextLinkStyle
15765
+ };
15426
15766
  }
15427
15767
  function brandTwoBandFooter(theme) {
15428
15768
  return {
@@ -15527,6 +15867,53 @@ function centeredCalmFooter(theme) {
15527
15867
  }
15528
15868
  };
15529
15869
  }
15870
+ function splitEditorialFooter(theme) {
15871
+ return {
15872
+ ...theme.footer,
15873
+ variant: "split",
15874
+ maxWidth: "container",
15875
+ background: {
15876
+ type: "color",
15877
+ color: "surface"
15878
+ },
15879
+ navStyle: "minimal",
15880
+ navWeight: "regular",
15881
+ navColor: "text",
15882
+ navLinkStyle: {
15883
+ typography: "body",
15884
+ fontWeight: "regular",
15885
+ textTransform: "none",
15886
+ italic: false,
15887
+ colorToken: "text",
15888
+ hoverColorToken: "primary",
15889
+ padding: "none",
15890
+ borderRadius: "none"
15891
+ },
15892
+ navLayout: {
15893
+ layout: "inline-wrap",
15894
+ align: "start",
15895
+ gapX: "relaxed",
15896
+ gapY: "tight"
15897
+ },
15898
+ logo: {
15899
+ showLogo: true,
15900
+ showLogoText: true,
15901
+ placement: "right",
15902
+ size: "sm",
15903
+ align: "end"
15904
+ },
15905
+ bottomBar: {
15906
+ enabled: true,
15907
+ fullBleed: false,
15908
+ textAlign: "left",
15909
+ paddingX: "default",
15910
+ paddingY: "compact",
15911
+ borderTop: {
15912
+ width: "thin"
15913
+ }
15914
+ }
15915
+ };
15916
+ }
15530
15917
  function editorialColumnsFooter(theme) {
15531
15918
  return {
15532
15919
  ...theme.footer,
@@ -15568,33 +15955,110 @@ function editorialColumnsFooter(theme) {
15568
15955
  }
15569
15956
  };
15570
15957
  }
15571
- var guaranteedFallbackFooterLookId, footerLookCatalog, footerLooksById;
15958
+ var guaranteedFallbackFooterLookId, footerLayoutCatalog, footerStyleCatalog, footerLayoutsById, footerStylesById, footerLookCatalog, footerLooksById;
15572
15959
  var init_footerLooks = __esm({
15573
15960
  "../theme-core/src/site-styles/footerLooks.ts"() {
15574
15961
  "use strict";
15575
15962
  init_customizableSurfaces();
15576
15963
  init_types6();
15577
- guaranteedFallbackFooterLookId = asFooterLookId("footer-muted-grounding");
15964
+ guaranteedFallbackFooterLookId = asFooterLookId("footer-identity-quiet");
15965
+ footerLayoutCatalog = defineExactCatalog()([
15966
+ {
15967
+ id: asFooterLayoutId("identity"),
15968
+ label: "Identity",
15969
+ description: "Logo, site text, address, and legal copy without relying on footer navigation."
15970
+ },
15971
+ {
15972
+ id: asFooterLayoutId("centered"),
15973
+ label: "Centered",
15974
+ description: "A calm centered stack for identity, short copy, and optional compact navigation.",
15975
+ maxRecommendedNavDensity: "sparse"
15976
+ },
15977
+ {
15978
+ id: asFooterLayoutId("split"),
15979
+ label: "Split",
15980
+ description: "Navigation and brand signoff separated into a wider split footer.",
15981
+ requiresFooterNav: true,
15982
+ maxRecommendedNavDensity: "balanced"
15983
+ },
15984
+ {
15985
+ id: asFooterLayoutId("columns"),
15986
+ label: "Columns",
15987
+ description: "Grouped footer navigation columns with a supporting bottom line.",
15988
+ requiresFooterNav: true,
15989
+ requiresFooterNavGroups: true
15990
+ }
15991
+ ]);
15992
+ footerStyleCatalog = defineExactCatalog()([
15993
+ {
15994
+ id: asFooterStyleId("quiet"),
15995
+ label: "Quiet",
15996
+ description: "Lightweight, practical footer treatment."
15997
+ },
15998
+ {
15999
+ id: asFooterStyleId("calm"),
16000
+ label: "Calm",
16001
+ description: "Soft centered treatment with restrained dividers."
16002
+ },
16003
+ {
16004
+ id: asFooterStyleId("editorial"),
16005
+ label: "Editorial",
16006
+ description: "Text-forward treatment with fine-line structure."
16007
+ },
16008
+ {
16009
+ id: asFooterStyleId("brand-band"),
16010
+ label: "Brand band",
16011
+ description: "High-contrast brand treatment with a stronger bottom bar."
16012
+ }
16013
+ ]);
16014
+ footerLayoutsById = new Map(
16015
+ footerLayoutCatalog.map((layout) => [layout.id, layout])
16016
+ );
16017
+ footerStylesById = new Map(
16018
+ footerStyleCatalog.map((style) => [style.id, style])
16019
+ );
15578
16020
  footerLookCatalog = defineExactCatalog()([
16021
+ {
16022
+ id: asFooterLookId("footer-identity-quiet"),
16023
+ label: "Identity footer",
16024
+ layoutId: asFooterLayoutId("identity"),
16025
+ styleId: asFooterStyleId("quiet"),
16026
+ compile: identityQuietFooter
16027
+ },
15579
16028
  {
15580
16029
  id: asFooterLookId("footer-muted-grounding"),
15581
16030
  label: "Muted grounding footer",
16031
+ layoutId: asFooterLayoutId("identity"),
16032
+ styleId: asFooterStyleId("quiet"),
16033
+ hiddenFromLayoutStyleControls: true,
15582
16034
  compile: mutedGroundingFooter
15583
16035
  },
15584
16036
  {
15585
16037
  id: asFooterLookId("footer-centered-calm"),
15586
16038
  label: "Centered calm footer",
16039
+ layoutId: asFooterLayoutId("centered"),
16040
+ styleId: asFooterStyleId("calm"),
15587
16041
  compile: centeredCalmFooter
15588
16042
  },
16043
+ {
16044
+ id: asFooterLookId("footer-split-editorial"),
16045
+ label: "Split editorial footer",
16046
+ layoutId: asFooterLayoutId("split"),
16047
+ styleId: asFooterStyleId("editorial"),
16048
+ compile: splitEditorialFooter
16049
+ },
15589
16050
  {
15590
16051
  id: asFooterLookId("footer-editorial-columns"),
15591
16052
  label: "Editorial columns footer",
16053
+ layoutId: asFooterLayoutId("columns"),
16054
+ styleId: asFooterStyleId("editorial"),
15592
16055
  compile: editorialColumnsFooter
15593
16056
  },
15594
16057
  {
15595
16058
  id: asFooterLookId("site-footer-brand-two-band"),
15596
16059
  label: "Two-band brand footer",
15597
- maxRecommendedNavDensity: "balanced",
16060
+ layoutId: asFooterLayoutId("split"),
16061
+ styleId: asFooterStyleId("brand-band"),
15598
16062
  allowedContentPresence: ["default-footer", "default-and-blocks"],
15599
16063
  compile: brandTwoBandFooter
15600
16064
  }
@@ -15684,7 +16148,7 @@ function defineTypographyPreset(preset) {
15684
16148
  id: asTypographyPresetId(preset.id)
15685
16149
  };
15686
16150
  }
15687
- var bodyReadablePolicy, headingFlexiblePolicy, displayHeadingPolicy, modernSansTypography, warmRoundedTypography, editorialSerifTypography, classicSerifTypography, luxeContrastTypography, boldDisplayTypography, originalJoyTypography, typographyPresets, typographyPresetsById;
16151
+ var bodyReadablePolicy, headingFlexiblePolicy, displayHeadingPolicy, modernSansTypography, warmRoundedTypography, editorialSerifTypography, classicSerifTypography, luxeContrastTypography, kirtanOrnateTypography, boldDisplayTypography, originalJoyTypography, typographyPresets, typographyPresetsById;
15688
16152
  var init_typographyPresets = __esm({
15689
16153
  "../theme-core/src/site-styles/typographyPresets.ts"() {
15690
16154
  "use strict";
@@ -15817,6 +16281,30 @@ var init_typographyPresets = __esm({
15817
16281
  },
15818
16282
  scale: "spacious"
15819
16283
  };
16284
+ kirtanOrnateTypography = {
16285
+ body: {
16286
+ family: "Jost, system-ui, sans-serif",
16287
+ size: "md",
16288
+ weight: "regular",
16289
+ lineHeight: "relaxed",
16290
+ letterSpacing: "normal"
16291
+ },
16292
+ headings: {
16293
+ default: {
16294
+ family: "Marcellus, Georgia, serif",
16295
+ weight: "regular",
16296
+ lineHeight: "normal",
16297
+ letterSpacing: "normal",
16298
+ colorToken: "primary",
16299
+ italic: null,
16300
+ case: null
16301
+ },
16302
+ h1: { size: "2xl", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null },
16303
+ h2: { size: "xl", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null },
16304
+ h3: { size: "md", weight: "regular", lineHeight: "relaxed", letterSpacing: "normal", italic: null }
16305
+ },
16306
+ scale: "spacious"
16307
+ };
15820
16308
  boldDisplayTypography = {
15821
16309
  body: {
15822
16310
  family: "Manrope, system-ui, sans-serif",
@@ -15851,16 +16339,16 @@ var init_typographyPresets = __esm({
15851
16339
  },
15852
16340
  headings: {
15853
16341
  default: {
15854
- family: "Bricolage Grotesque, system-ui, sans-serif",
15855
- weight: "bold",
16342
+ family: "Lobster, cursive",
16343
+ weight: "regular",
15856
16344
  lineHeight: "normal",
15857
- letterSpacing: "tight",
16345
+ letterSpacing: "normal",
15858
16346
  italic: null,
15859
16347
  case: null
15860
16348
  },
15861
- h1: { size: "2xl", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null },
15862
- h2: { size: "xl", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null },
15863
- h3: { size: "lg", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null }
16349
+ h1: { size: "2xl", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null },
16350
+ h2: { size: "xl", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null },
16351
+ h3: { size: "lg", weight: "regular", lineHeight: "normal", letterSpacing: "normal", italic: null }
15864
16352
  },
15865
16353
  scale: "balanced"
15866
16354
  };
@@ -15925,6 +16413,32 @@ var init_typographyPresets = __esm({
15925
16413
  slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
15926
16414
  typography: luxeContrastTypography
15927
16415
  }),
16416
+ defineTypographyPreset({
16417
+ id: "typography-preset:kirtan-ornate",
16418
+ name: "Kirtan Ornate",
16419
+ description: "Marcellus devotional headings over a refined Jost body, matching dark ceremonial layouts.",
16420
+ defaultFonts: { body: "Jost, system-ui, sans-serif", heading: "Marcellus, Georgia, serif" },
16421
+ recommendedFonts: {
16422
+ body: ["Jost", "Manrope", "Inter"],
16423
+ heading: ["Marcellus", "Cormorant Garamond", "Playfair Display"]
16424
+ },
16425
+ slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
16426
+ typography: kirtanOrnateTypography,
16427
+ heroTypography: {
16428
+ headlineSize: "6xl",
16429
+ headlineLineHeight: "normal",
16430
+ subheadlineSize: "xl",
16431
+ subheadlineLineHeight: "relaxed",
16432
+ microHeadlineSize: "5xl",
16433
+ microHeadlineLineHeight: "normal",
16434
+ microSubheadlineSize: "lg",
16435
+ microSubheadlineLineHeight: "relaxed",
16436
+ responsive: {
16437
+ tablet: { headlineSize: "5xl" },
16438
+ mobile: { headlineSize: "4xl", subheadlineSize: "lg" }
16439
+ }
16440
+ }
16441
+ }),
15928
16442
  defineTypographyPreset({
15929
16443
  id: "typography-preset:bold-display",
15930
16444
  name: "Bold Display",
@@ -15954,11 +16468,11 @@ var init_typographyPresets = __esm({
15954
16468
  defineTypographyPreset({
15955
16469
  id: "typography-preset:original-joy",
15956
16470
  name: "Original Joy",
15957
- description: "Bold Bricolage Grotesque display headings over a clean DM Sans body, editorial and warm.",
15958
- defaultFonts: { body: "DM Sans, system-ui, sans-serif", heading: "Bricolage Grotesque, system-ui, sans-serif" },
16471
+ description: "Lobster display headings over a clean DM Sans body, expressive and warm.",
16472
+ defaultFonts: { body: "DM Sans, system-ui, sans-serif", heading: "Lobster, cursive" },
15959
16473
  recommendedFonts: {
15960
16474
  body: ["DM Sans", "Inter", "Manrope"],
15961
- heading: ["Bricolage Grotesque", "Space Grotesk", "Archivo"]
16475
+ heading: ["Lobster", "Bricolage Grotesque", "Space Grotesk"]
15962
16476
  },
15963
16477
  slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
15964
16478
  typography: originalJoyTypography,
@@ -15984,6 +16498,344 @@ var init_typographyPresets = __esm({
15984
16498
  }
15985
16499
  });
15986
16500
 
16501
+ // ../theme-core/src/site-styles/designState.ts
16502
+ import { z as z30 } from "zod";
16503
+ function uniqueNonEmpty(values) {
16504
+ const uniqueValues = [...new Set(values)];
16505
+ const firstValue = uniqueValues[0];
16506
+ if (!firstValue) {
16507
+ throw new Error("Expected at least one Theme V2 design state option.");
16508
+ }
16509
+ return [firstValue, ...uniqueValues.slice(1)];
16510
+ }
16511
+ var themeV2DesignStateSchemaVersion, designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, heroLegibilityStrategySchema, heroCompositionIntentSchema, heroTypographyScaleIntentSchema, sectionHeightIntentSchema, imageSurfaceTreatmentIntensitySchema, imageSurfaceMotionSchema, imageSurfaceTreatmentSchema, testimonialCardTreatmentSchema, tileTreatmentSchema, eventListTreatmentSchema, eyebrowTreatmentSchema, userPanelTreatments, userFlushTreatments, userFlushBleeds, contentFrameIntentSchema, blockDesignPlanSchema, styleAuthoritySchema, blockRuntimeStyleAuthoritySchema, persistedPageDesignStateV1Schema;
16512
+ var init_designState = __esm({
16513
+ "../theme-core/src/site-styles/designState.ts"() {
16514
+ "use strict";
16515
+ init_sourceCatalogs();
16516
+ init_types6();
16517
+ init_schemaVersionedJson();
16518
+ init_rawStyleFields();
16519
+ init_rawStyleFields();
16520
+ themeV2DesignStateSchemaVersion = 1;
16521
+ designResolutionPolicySchema = z30.enum(["generated", "user", "admin", "sdk"]);
16522
+ runtimeStyleFieldNameSchema = z30.enum(themeV2RuntimeStyleFieldNames);
16523
+ nonEmptyRuntimeStyleFieldNamesSchema = z30.array(runtimeStyleFieldNameSchema).min(1).transform((fields) => [
16524
+ fields[0],
16525
+ ...fields.slice(1)
16526
+ ]);
16527
+ heroLegibilityStrategySchema = z30.enum([
16528
+ "none",
16529
+ "scrim-gradient",
16530
+ "solid-panel"
16531
+ ]);
16532
+ heroCompositionIntentSchema = z30.enum([
16533
+ "center",
16534
+ "bottom-left"
16535
+ ]);
16536
+ heroTypographyScaleIntentSchema = z30.enum([
16537
+ "quiet",
16538
+ "editorial",
16539
+ "display",
16540
+ "poster"
16541
+ ]);
16542
+ sectionHeightIntentSchema = z30.enum([
16543
+ "default",
16544
+ "banner",
16545
+ "hero",
16546
+ "immersive"
16547
+ ]);
16548
+ imageSurfaceTreatmentIntensitySchema = z30.enum(["soft", "balanced", "strong"]);
16549
+ imageSurfaceMotionSchema = z30.enum(["static", "fixed-frame"]);
16550
+ imageSurfaceTreatmentSchema = z30.discriminatedUnion("kind", [
16551
+ z30.object({ kind: z30.literal("none") }).strict(),
16552
+ z30.object({
16553
+ kind: z30.literal("brand-scrim"),
16554
+ token: z30.enum(["primary", "secondary", "accent"]),
16555
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
16556
+ }).strict(),
16557
+ z30.object({
16558
+ kind: z30.literal("brand-wash"),
16559
+ token: z30.enum(["primary", "secondary", "accent"]),
16560
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
16561
+ }).strict(),
16562
+ z30.object({
16563
+ kind: z30.literal("neutral-scrim"),
16564
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
16565
+ }).strict(),
16566
+ z30.object({
16567
+ kind: z30.literal("neutral-wash"),
16568
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
16569
+ }).strict(),
16570
+ z30.object({
16571
+ kind: z30.literal("solid-panel"),
16572
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
16573
+ }).strict()
16574
+ ]);
16575
+ testimonialCardTreatmentSchema = z30.enum(["default", "accent-quote"]);
16576
+ tileTreatmentSchema = z30.enum(tileTreatmentValues);
16577
+ eventListTreatmentSchema = z30.enum(eventListTreatmentValues);
16578
+ eyebrowTreatmentSchema = z30.enum(eyebrowTreatmentValues);
16579
+ userPanelTreatments = uniqueNonEmpty(
16580
+ userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
16581
+ );
16582
+ userFlushTreatments = uniqueNonEmpty(
16583
+ userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
16584
+ );
16585
+ userFlushBleeds = uniqueNonEmpty(
16586
+ userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
16587
+ );
16588
+ contentFrameIntentSchema = z30.discriminatedUnion("kind", [
16589
+ z30.object({ kind: z30.literal("plain") }).strict(),
16590
+ z30.object({
16591
+ kind: z30.literal("panel"),
16592
+ treatment: z30.enum(userPanelTreatments)
16593
+ }).strict(),
16594
+ z30.object({
16595
+ kind: z30.literal("flush-panel"),
16596
+ treatment: z30.enum(userFlushTreatments),
16597
+ bleed: z30.enum(userFlushBleeds)
16598
+ }).strict()
16599
+ ]);
16600
+ blockDesignPlanSchema = z30.object({
16601
+ blockId: z30.string().min(1).transform(asDesignBlockId),
16602
+ blockKind: z30.string().min(1),
16603
+ purpose: z30.string().min(1),
16604
+ sectionSurface: z30.enum(userDesignOptionCatalog.sectionSurfaces),
16605
+ contentFrame: contentFrameIntentSchema,
16606
+ itemSurface: z30.enum(userDesignOptionCatalog.itemSurfaces),
16607
+ transitionAfter: z30.enum(userDesignOptionCatalog.transitions),
16608
+ emphasis: z30.enum(userDesignOptionCatalog.emphases),
16609
+ sectionHeight: sectionHeightIntentSchema.optional(),
16610
+ heroLegibility: heroLegibilityStrategySchema.optional(),
16611
+ heroComposition: heroCompositionIntentSchema.optional(),
16612
+ heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
16613
+ imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
16614
+ imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
16615
+ testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
16616
+ tileTreatment: tileTreatmentSchema.optional(),
16617
+ eventListTreatment: eventListTreatmentSchema.optional(),
16618
+ eyebrowTreatment: eyebrowTreatmentSchema.optional()
16619
+ }).strict();
16620
+ styleAuthoritySchema = z30.discriminatedUnion("kind", [
16621
+ z30.object({
16622
+ kind: z30.literal("theme-v2"),
16623
+ source: designResolutionPolicySchema,
16624
+ siteStyleId: z30.string().min(1).transform(asSiteStyleId),
16625
+ templateId: z30.string().min(1).transform(asDesignSystemTemplateId),
16626
+ templateVersion: z30.number().int().nonnegative(),
16627
+ resolverVersion: z30.number().int().nonnegative()
16628
+ }).strict(),
16629
+ z30.object({
16630
+ kind: z30.literal("legacy-raw"),
16631
+ reason: z30.enum(["pre-theme-v2", "manual-runtime-fields"])
16632
+ }).strict(),
16633
+ z30.object({
16634
+ kind: z30.literal("advanced-detached"),
16635
+ reason: z30.literal("detached-custom-runtime-fields")
16636
+ }).strict()
16637
+ ]);
16638
+ blockRuntimeStyleAuthoritySchema = z30.object({
16639
+ unit: z30.literal("block-runtime-fields"),
16640
+ blockId: z30.string().min(1).transform(asDesignBlockId),
16641
+ fields: nonEmptyRuntimeStyleFieldNamesSchema,
16642
+ authority: styleAuthoritySchema
16643
+ }).strict();
16644
+ persistedPageDesignStateV1Schema = z30.object({
16645
+ schemaVersion: z30.literal(themeV2DesignStateSchemaVersion),
16646
+ siteStyleId: z30.string().min(1).transform(asSiteStyleId),
16647
+ templateId: z30.string().min(1).transform(asDesignSystemTemplateId),
16648
+ templateVersion: z30.number().int().nonnegative(),
16649
+ resolverVersion: z30.number().int().nonnegative(),
16650
+ rhythmPresetId: z30.string().min(1),
16651
+ blocks: z30.array(blockDesignPlanSchema),
16652
+ styleAuthorities: z30.array(blockRuntimeStyleAuthoritySchema)
16653
+ }).strict();
16654
+ }
16655
+ });
16656
+
16657
+ // ../theme-core/src/site-styles/runtimeCompiler.ts
16658
+ function defineDesignRuntimeRules(rules) {
16659
+ return rules;
16660
+ }
16661
+ function defineComponentRuntimeRules(rules) {
16662
+ return rules;
16663
+ }
16664
+ function uniformSectionForeground(token) {
16665
+ return {
16666
+ textColor: token,
16667
+ headingColor: token,
16668
+ linkColor: token,
16669
+ supportingColor: token
16670
+ };
16671
+ }
16672
+ var defaultDesignRuntimeRules, defaultComponentRuntimeRules;
16673
+ var init_runtimeCompiler = __esm({
16674
+ "../theme-core/src/site-styles/runtimeCompiler.ts"() {
16675
+ "use strict";
16676
+ init_schema2();
16677
+ init_modern_minimal();
16678
+ init_expandPalette();
16679
+ init_personalities();
16680
+ init_variants();
16681
+ init_designState();
16682
+ init_types6();
16683
+ init_accessibleSurfaces();
16684
+ defaultDesignRuntimeRules = defineDesignRuntimeRules({
16685
+ sectionSurfaces: {
16686
+ base: {},
16687
+ "muted-band": {
16688
+ background: {
16689
+ type: "color",
16690
+ color: "muted"
16691
+ }
16692
+ },
16693
+ "accent-band": {
16694
+ background: {
16695
+ type: "color",
16696
+ color: "primary"
16697
+ }
16698
+ },
16699
+ "brand-depth-band": {
16700
+ background: {
16701
+ type: "color",
16702
+ color: "primary-800"
16703
+ }
16704
+ },
16705
+ "hero-image": {
16706
+ background: {
16707
+ type: "image",
16708
+ opacity: 1,
16709
+ position: "center center",
16710
+ ...uniformSectionForeground("text")
16711
+ }
16712
+ }
16713
+ },
16714
+ heroLegibility: {
16715
+ "scrim-gradient": {
16716
+ type: "gradient",
16717
+ gradient: "linear-gradient(180deg, rgba(255,255,255,0.38) 0%, rgba(244,241,234,0.62) 90%)",
16718
+ opacity: 1
16719
+ },
16720
+ "solid-panel": {
16721
+ type: "color",
16722
+ color: "surface",
16723
+ opacity: 0.88
16724
+ }
16725
+ },
16726
+ transitionClassName: (transition, fromSurface, toSurface) => transition === "none" ? null : `site-style-transition-${transition}-from-${fromSurface}-to-${toSurface}`
16727
+ });
16728
+ defaultComponentRuntimeRules = defineComponentRuntimeRules({
16729
+ panelFrames: {
16730
+ inset: {
16731
+ spacing: "comfortable",
16732
+ rounded: "xl",
16733
+ raised: false,
16734
+ background: {
16735
+ type: "color",
16736
+ color: "surfaceAlt",
16737
+ textColor: "text"
16738
+ }
16739
+ },
16740
+ raised: {
16741
+ spacing: "comfortable",
16742
+ rounded: "xl",
16743
+ raised: true,
16744
+ background: {
16745
+ type: "color",
16746
+ color: "surfaceAlt",
16747
+ textColor: "text"
16748
+ }
16749
+ },
16750
+ editorial: {
16751
+ spacing: "medium",
16752
+ rounded: "xl",
16753
+ raised: false,
16754
+ background: {
16755
+ type: "color",
16756
+ color: "surface",
16757
+ textColor: "text"
16758
+ }
16759
+ }
16760
+ },
16761
+ flushFrames: {
16762
+ "media-panel": {
16763
+ fullWidth: true,
16764
+ spacing: "none",
16765
+ rounded: "none",
16766
+ raised: false
16767
+ }
16768
+ },
16769
+ itemSurfaces: {
16770
+ none: null,
16771
+ default: {
16772
+ spacing: "medium",
16773
+ rounded: "lg",
16774
+ raised: false
16775
+ },
16776
+ flat: {
16777
+ spacing: "medium",
16778
+ rounded: "lg",
16779
+ raised: false
16780
+ },
16781
+ outlined: {
16782
+ spacing: "medium",
16783
+ rounded: "lg",
16784
+ raised: false,
16785
+ border: {
16786
+ enabled: true,
16787
+ width: "1",
16788
+ colorToken: "border"
16789
+ }
16790
+ },
16791
+ raised: {
16792
+ spacing: "medium",
16793
+ rounded: "xl",
16794
+ raised: true
16795
+ },
16796
+ inset: {
16797
+ treatment: "soft-panel",
16798
+ spacing: "comfortable",
16799
+ rounded: "xl",
16800
+ raised: false,
16801
+ border: {
16802
+ enabled: false
16803
+ },
16804
+ background: {
16805
+ type: "color",
16806
+ color: "surfaceAlt",
16807
+ textColor: "text"
16808
+ }
16809
+ },
16810
+ editorial: {
16811
+ // Boxless open column with a short rule on top; the visual treatment
16812
+ // lives in blocks-static/card-treatments.css.
16813
+ treatment: "editorial-rule",
16814
+ spacing: "none",
16815
+ rounded: "none",
16816
+ raised: false,
16817
+ border: {
16818
+ enabled: false
16819
+ }
16820
+ },
16821
+ "color-blocked": {
16822
+ // Bold, flat colour-blocked cards. The per-card background colour cycle
16823
+ // (by position) and staggered offset live in
16824
+ // blocks-static/card-treatments.css; here we set the shared shape:
16825
+ // generous padding, large radius, no border, flat (no shadow).
16826
+ treatment: "color-blocked",
16827
+ spacing: "spacious",
16828
+ rounded: "2xl",
16829
+ raised: false,
16830
+ border: {
16831
+ enabled: false
16832
+ }
16833
+ }
16834
+ }
16835
+ });
16836
+ }
16837
+ });
16838
+
15987
16839
  // ../theme-core/src/site-styles/curatedSiteStyles.ts
15988
16840
  function uniqueContentFrameKinds() {
15989
16841
  const kinds = [
@@ -16041,6 +16893,7 @@ function defineCuratedSiteStyle(input) {
16041
16893
  // clean/minimal styles default to none.
16042
16894
  headingDecoration: input.headingDecoration ?? noHeadingDecoration,
16043
16895
  ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
16896
+ ...input.designRuntimeRules ? { designRuntimeRules: input.designRuntimeRules } : {},
16044
16897
  ...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
16045
16898
  recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
16046
16899
  defaultHeaderSelection: input.defaultHeaderSelection ? {
@@ -16222,7 +17075,7 @@ function defaultTypographyPresetChoicesForRecipe(recipe) {
16222
17075
  ];
16223
17076
  }
16224
17077
  }
16225
- var SOFT_EARTH_SITE_STYLE_ID_VALUE, SOFT_EARTH_SITE_STYLE_ID, quietBudget, balancedBudget, expressiveBudget, expressiveUnderlineInputs, generatedContentFrameKinds, curatedSiteStyles, curatedSiteStylesById;
17078
+ var SOFT_EARTH_SITE_STYLE_ID_VALUE, SOFT_EARTH_SITE_STYLE_ID, quietBudget, balancedBudget, expressiveBudget, kirtanOrnateDesignRuntimeRules, expressiveUnderlineInputs, ornateDarkInputs, generatedContentFrameKinds, curatedSiteStyles, curatedSiteStylesById;
16226
17079
  var init_curatedSiteStyles = __esm({
16227
17080
  "../theme-core/src/site-styles/curatedSiteStyles.ts"() {
16228
17081
  "use strict";
@@ -16237,6 +17090,7 @@ var init_curatedSiteStyles = __esm({
16237
17090
  init_sourceCatalogs();
16238
17091
  init_types6();
16239
17092
  init_typographyPresets();
17093
+ init_runtimeCompiler();
16240
17094
  SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
16241
17095
  SOFT_EARTH_SITE_STYLE_ID = asSiteStyleId(SOFT_EARTH_SITE_STYLE_ID_VALUE);
16242
17096
  quietBudget = {
@@ -16263,6 +17117,50 @@ var init_curatedSiteStyles = __esm({
16263
17117
  mediaDensity: "high",
16264
17118
  decorativeRepetition: "medium"
16265
17119
  };
17120
+ kirtanOrnateDesignRuntimeRules = defineDesignRuntimeRules({
17121
+ ...defaultDesignRuntimeRules,
17122
+ defaultEyebrowTreatment: "accent",
17123
+ sectionSurfaces: {
17124
+ ...defaultDesignRuntimeRules.sectionSurfaces,
17125
+ "muted-band": {
17126
+ background: {
17127
+ type: "color",
17128
+ color: "muted"
17129
+ },
17130
+ foreground: {
17131
+ textColor: "text",
17132
+ headingColor: "primary",
17133
+ linkColor: "primary",
17134
+ supportingColor: "text"
17135
+ }
17136
+ },
17137
+ "brand-depth-band": {
17138
+ background: {
17139
+ type: "color",
17140
+ color: "primary-800"
17141
+ },
17142
+ foreground: {
17143
+ textColor: "text",
17144
+ headingColor: "primary",
17145
+ linkColor: "primary",
17146
+ supportingColor: "text"
17147
+ }
17148
+ },
17149
+ "hero-image": {
17150
+ background: {
17151
+ type: "image",
17152
+ opacity: 1,
17153
+ position: "center center"
17154
+ },
17155
+ foreground: {
17156
+ textColor: "text",
17157
+ headingColor: "primary",
17158
+ linkColor: "primary",
17159
+ supportingColor: "text"
17160
+ }
17161
+ }
17162
+ }
17163
+ });
16266
17164
  expressiveUnderlineInputs = {
16267
17165
  base: {
16268
17166
  background: { type: "transparent" },
@@ -16300,6 +17198,43 @@ var init_curatedSiteStyles = __esm({
16300
17198
  opacity: 0.6
16301
17199
  }
16302
17200
  };
17201
+ ornateDarkInputs = {
17202
+ base: {
17203
+ background: { type: "solid", colorToken: "surfaceAlt" },
17204
+ textColorToken: "text",
17205
+ border: {
17206
+ widthClass: "border",
17207
+ colorToken: "primary/45",
17208
+ style: "all"
17209
+ },
17210
+ corners: "square",
17211
+ shadow: null,
17212
+ spacing: "medium",
17213
+ fontSize: "base"
17214
+ },
17215
+ label: {
17216
+ textColorToken: "primary",
17217
+ fontWeight: "semibold",
17218
+ fontSize: "xs",
17219
+ textTransform: "uppercase",
17220
+ letterSpacing: "wider",
17221
+ opacity: 1
17222
+ },
17223
+ focus: {
17224
+ ringColorToken: "primary/18",
17225
+ ringWidth: "2",
17226
+ borderColorToken: "primary/70"
17227
+ },
17228
+ error: {
17229
+ borderColorToken: "destructive",
17230
+ textColorToken: "destructive"
17231
+ },
17232
+ disabled: {
17233
+ backgroundColorToken: "muted",
17234
+ textColorToken: "mutedText",
17235
+ opacity: 0.6
17236
+ }
17237
+ };
16303
17238
  generatedContentFrameKinds = uniqueContentFrameKinds();
16304
17239
  curatedSiteStyles = [
16305
17240
  defineCuratedSiteStyle({
@@ -17070,6 +18005,80 @@ var init_curatedSiteStyles = __esm({
17070
18005
  paletteChoice("high-contrast-ink")
17071
18006
  ]
17072
18007
  }),
18008
+ defineCuratedSiteStyle({
18009
+ id: "site-style:kirtan-ornate",
18010
+ name: "Kirtan Ornate",
18011
+ headingDecoration: { family: "short-center-rule", colorToken: "accent" },
18012
+ description: "Ceremonial, jewel-toned, and devotional: ornate frames, warm contrast, and composed rhythm for intimate music gatherings.",
18013
+ 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.",
18014
+ selectionKeywordRules: [
18015
+ { kind: "word", value: "kirtan" },
18016
+ { kind: "word", value: "chanting" },
18017
+ { kind: "word", value: "ceremony" },
18018
+ { kind: "word", value: "devotional" }
18019
+ ],
18020
+ tokenRecipes: {
18021
+ palette: "brand-led",
18022
+ contrast: "strong",
18023
+ radius: "soft",
18024
+ shadow: "subtle",
18025
+ typography: "serif-editorial",
18026
+ spacing: "airy",
18027
+ motion: "subtle"
18028
+ },
18029
+ compositionBudget: expressiveBudget,
18030
+ typographyPresetChoices: [
18031
+ typographyChoice("typography-preset:kirtan-ornate"),
18032
+ typographyChoice("typography-preset:luxe-contrast"),
18033
+ typographyChoice("typography-preset:editorial-serif")
18034
+ ],
18035
+ defaultTypographyPresetId: "typography-preset:kirtan-ornate",
18036
+ themeOverrides: {
18037
+ accordions: warmInsetAccordionSystem,
18038
+ cards: originalJoyCardSystem,
18039
+ testimonialQuote: serifDisplayQuote,
18040
+ bodyText: {
18041
+ intro: {
18042
+ paragraphSize: "editorial",
18043
+ headingSize: "editorial"
18044
+ }
18045
+ },
18046
+ inputs: ornateDarkInputs
18047
+ },
18048
+ designRuntimeRules: kirtanOrnateDesignRuntimeRules,
18049
+ recommendedAppearancePresetIds: [
18050
+ "hero-brand-scrim-fixed-frame",
18051
+ "media-text-quiet-story",
18052
+ "events-lined-panel",
18053
+ "schedule-details-brand-depth",
18054
+ "testimonials-statement-cards",
18055
+ "contact-form-panel"
18056
+ ],
18057
+ defaultHeaderSelection: { layoutId: "floating", styleId: "minimal-surface" },
18058
+ recommendedHeaderLayoutChoices: [headerLayoutChoice("floating")],
18059
+ recommendedHeaderStyleChoicesByLayout: {
18060
+ floating: [
18061
+ headerStyleChoice("minimal-surface"),
18062
+ headerStyleChoice("split-glass"),
18063
+ headerStyleChoice("glass")
18064
+ ]
18065
+ },
18066
+ recommendedHeaderLookIds: ["minimal-transparent"],
18067
+ recommendedFooterLookIds: [
18068
+ "site-footer-brand-two-band",
18069
+ "footer-muted-grounding"
18070
+ ],
18071
+ buttonPersonalityChoices: [
18072
+ buttonChoice("ornate-ritual"),
18073
+ buttonChoice("joy-stamp"),
18074
+ buttonChoice("ink-stamp")
18075
+ ],
18076
+ paletteVariantChoices: [
18077
+ paletteChoice("warm-dark-kirtan-gold"),
18078
+ paletteChoice("warm-dark-ember"),
18079
+ paletteChoice("brand-led-burgundy-gold")
18080
+ ]
18081
+ }),
17073
18082
  defineCuratedSiteStyle({
17074
18083
  id: "site-style:original-joy",
17075
18084
  name: "Original Joy",
@@ -18084,7 +19093,7 @@ var init_repeaterGrid = __esm({
18084
19093
  });
18085
19094
 
18086
19095
  // ../blocks/src/system/manifest/schema.ts
18087
- import { z as z30 } from "zod";
19096
+ import { z as z31 } from "zod";
18088
19097
  function isDisplayMediaKind(kind) {
18089
19098
  return DISPLAY_MEDIA_KINDS.includes(kind);
18090
19099
  }
@@ -18095,7 +19104,7 @@ function getFieldSchemaInternal() {
18095
19104
  if (_fieldSchemaInternal) {
18096
19105
  return _fieldSchemaInternal;
18097
19106
  }
18098
- _fieldSchemaInternal = z30.discriminatedUnion("type", [
19107
+ _fieldSchemaInternal = z31.discriminatedUnion("type", [
18099
19108
  textFieldSchema,
18100
19109
  richTextFieldSchema,
18101
19110
  mediaFieldSchema,
@@ -18148,7 +19157,7 @@ function createSiteOptionSelectField(input) {
18148
19157
  })
18149
19158
  );
18150
19159
  }
18151
- 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;
19160
+ 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;
18152
19161
  var init_schema3 = __esm({
18153
19162
  "../blocks/src/system/manifest/schema.ts"() {
18154
19163
  "use strict";
@@ -18181,92 +19190,101 @@ var init_schema3 = __esm({
18181
19190
  "venues",
18182
19191
  "staffMembers"
18183
19192
  ];
18184
- mediaDeliverySchema = z30.object({
18185
- sizes: z30.string().optional(),
18186
- widthCandidates: z30.array(z30.number().int().positive()).optional(),
18187
- maxCssWidth: z30.number().positive().optional(),
18188
- maxCssHeight: z30.number().positive().optional(),
18189
- strategy: z30.enum(["default", "columnsAuto", "imageGalleryVariant"]).optional(),
18190
- strategyOptions: z30.record(z30.string(), z30.unknown()).optional()
18191
- });
18192
- selectOptionSchema = z30.object({
18193
- value: z30.string(),
18194
- label: z30.string(),
18195
- description: z30.string().optional(),
18196
- icon: z30.string().optional()
18197
- });
18198
- selectSourceSchema = z30.discriminatedUnion("kind", [
18199
- z30.object({
18200
- kind: z30.literal("static")
19193
+ mediaDeliverySchema = z31.object({
19194
+ sizes: z31.string().optional(),
19195
+ widthCandidates: z31.array(z31.number().int().positive()).optional(),
19196
+ maxCssWidth: z31.number().positive().optional(),
19197
+ maxCssHeight: z31.number().positive().optional(),
19198
+ strategy: z31.enum(["default", "columnsAuto", "imageGalleryVariant"]).optional(),
19199
+ strategyOptions: z31.record(z31.string(), z31.unknown()).optional()
19200
+ });
19201
+ selectOptionSchema = z31.object({
19202
+ value: z31.string(),
19203
+ label: z31.string(),
19204
+ description: z31.string().optional(),
19205
+ icon: z31.string().optional()
19206
+ });
19207
+ selectSourceSchema = z31.discriminatedUnion("kind", [
19208
+ z31.object({
19209
+ kind: z31.literal("static")
18201
19210
  }),
18202
- z30.object({
18203
- kind: z30.literal("site"),
18204
- optionSource: z30.enum(siteOptionSources)
19211
+ z31.object({
19212
+ kind: z31.literal("site"),
19213
+ optionSource: z31.enum(siteOptionSources)
18205
19214
  }),
18206
- z30.object({
18207
- kind: z30.literal("sdk")
19215
+ z31.object({
19216
+ kind: z31.literal("sdk")
19217
+ })
19218
+ ]);
19219
+ visibleWhenPredicateSchema = z31.object({
19220
+ field: z31.string().min(1),
19221
+ equals: z31.any().optional(),
19222
+ notEquals: z31.any().optional(),
19223
+ oneOf: z31.array(z31.any()).optional(),
19224
+ notIn: z31.array(z31.any()).optional(),
19225
+ minItems: z31.number().int().nonnegative().optional(),
19226
+ maxItems: z31.number().int().nonnegative().optional()
19227
+ });
19228
+ visibleWhenSchema = z31.union([
19229
+ visibleWhenPredicateSchema,
19230
+ z31.object({
19231
+ allOf: z31.array(visibleWhenPredicateSchema).min(1)
18208
19232
  })
18209
19233
  ]);
18210
- uiSchema = z30.object({
18211
- widget: z30.string().optional(),
19234
+ uiSchema = z31.object({
19235
+ widget: z31.string().optional(),
18212
19236
  // Container/widget presets (used by Group/Repeater widgets themselves, not for widget selection)
18213
- preset: z30.enum(["disclosure"]).optional(),
18214
- flattenInRepeater: z30.boolean().optional(),
18215
- hidden: z30.boolean().optional(),
18216
- hideLabel: z30.boolean().optional(),
18217
- hideDescription: z30.boolean().optional(),
18218
- showCharCount: z30.union([
18219
- z30.number().int().positive(),
18220
- z30.object({ max: z30.number().int().positive() })
19237
+ preset: z31.enum(["disclosure"]).optional(),
19238
+ flattenInRepeater: z31.boolean().optional(),
19239
+ hidden: z31.boolean().optional(),
19240
+ hideLabel: z31.boolean().optional(),
19241
+ hideDescription: z31.boolean().optional(),
19242
+ showCharCount: z31.union([
19243
+ z31.number().int().positive(),
19244
+ z31.object({ max: z31.number().int().positive() })
18221
19245
  ]).optional(),
18222
- showSlugPreview: z30.boolean().optional(),
18223
- variant: z30.enum(["full", "inline", "limited", "media", "notes"]).optional(),
18224
- richTextVariant: z30.enum(["full", "inline", "limited", "media", "notes"]).optional(),
18225
- cropEditorMode: z30.enum(["dialog", "inline"]).optional(),
18226
- cropEditorAutoOpen: z30.boolean().optional(),
18227
- mediaPickerAutoOpen: z30.boolean().optional(),
18228
- showMediaPreview: z30.boolean().optional(),
18229
- showMediaOverlayActions: z30.boolean().optional(),
18230
- mediaPreviewMaxWidth: z30.enum(["xs", "sm", "md", "none"]).optional(),
18231
- preventMediaPreviewUpscale: z30.boolean().optional(),
19246
+ showSlugPreview: z31.boolean().optional(),
19247
+ variant: z31.enum(["full", "inline", "limited", "media", "notes"]).optional(),
19248
+ richTextVariant: z31.enum(["full", "inline", "limited", "media", "notes"]).optional(),
19249
+ cropEditorMode: z31.enum(["dialog", "inline"]).optional(),
19250
+ cropEditorAutoOpen: z31.boolean().optional(),
19251
+ mediaPickerAutoOpen: z31.boolean().optional(),
19252
+ showMediaPreview: z31.boolean().optional(),
19253
+ showMediaOverlayActions: z31.boolean().optional(),
19254
+ mediaPreviewMaxWidth: z31.enum(["xs", "sm", "md", "none"]).optional(),
19255
+ preventMediaPreviewUpscale: z31.boolean().optional(),
18232
19256
  mediaDelivery: mediaDeliverySchema.optional(),
18233
- mediaDeliveryByVariant: z30.record(z30.string(), mediaDeliverySchema).optional(),
19257
+ mediaDeliveryByVariant: z31.record(z31.string(), mediaDeliverySchema).optional(),
18234
19258
  // Optional input hints for validators/widgets
18235
- inputType: z30.enum(["text", "email", "tel", "number"]).optional(),
18236
- min: z30.number().optional(),
18237
- max: z30.number().optional(),
18238
- step: z30.number().optional(),
18239
- showValue: z30.boolean().optional(),
18240
- pattern: z30.string().optional(),
18241
- placeholder: z30.string().optional(),
18242
- visibleWhen: z30.object({
18243
- field: z30.string().min(1),
18244
- equals: z30.any().optional(),
18245
- notEquals: z30.any().optional(),
18246
- oneOf: z30.array(z30.any()).optional(),
18247
- notIn: z30.array(z30.any()).optional()
18248
- }).optional(),
19259
+ inputType: z31.enum(["text", "email", "tel", "number"]).optional(),
19260
+ min: z31.number().optional(),
19261
+ max: z31.number().optional(),
19262
+ step: z31.number().optional(),
19263
+ showValue: z31.boolean().optional(),
19264
+ pattern: z31.string().optional(),
19265
+ placeholder: z31.string().optional(),
19266
+ visibleWhen: visibleWhenSchema.optional(),
18249
19267
  // Modal configuration for modal and group fields
18250
- modalConfig: z30.object({
18251
- buttonLabel: z30.string().optional(),
18252
- description: z30.string().optional(),
18253
- buttonVariant: z30.enum(["default", "outline"]).optional(),
18254
- showCustomizedIndicator: z30.boolean().optional(),
18255
- maxWidth: z30.string().optional()
19268
+ modalConfig: z31.object({
19269
+ buttonLabel: z31.string().optional(),
19270
+ description: z31.string().optional(),
19271
+ buttonVariant: z31.enum(["default", "outline"]).optional(),
19272
+ showCustomizedIndicator: z31.boolean().optional(),
19273
+ maxWidth: z31.string().optional()
18256
19274
  }).optional(),
18257
19275
  // Background field configuration
18258
- allowedTypes: z30.array(z30.enum(["color", "gradient", "image"])).optional(),
19276
+ allowedTypes: z31.array(z31.enum(["color", "gradient", "image"])).optional(),
18259
19277
  // Tab group configuration
18260
- fullWidth: z30.boolean().optional(),
19278
+ fullWidth: z31.boolean().optional(),
18261
19279
  // Field layout configuration
18262
- row: z30.string().optional(),
18263
- colSpan: z30.number().int().min(1).max(4).optional(),
19280
+ row: z31.string().optional(),
19281
+ colSpan: z31.number().int().min(1).max(4).optional(),
18264
19282
  // Group layout configuration
18265
- layout: z30.enum(["stack", "grid"]).optional(),
18266
- columns: z30.number().int().min(2).max(4).optional(),
19283
+ layout: z31.enum(["stack", "grid"]).optional(),
19284
+ columns: z31.number().int().min(2).max(4).optional(),
18267
19285
  // Named grid presets for GroupField grid layout.
18268
19286
  // Use these for common responsive patterns to avoid embedding Tailwind strings in manifests.
18269
- gridColsPreset: z30.enum([
19287
+ gridColsPreset: z31.enum([
18270
19288
  "simple2",
18271
19289
  // base 1 col -> sm 2 cols
18272
19290
  "simple3",
@@ -18279,107 +19297,107 @@ var init_schema3 = __esm({
18279
19297
  // Responsive grid columns for GroupField grid layout (mobile-first).
18280
19298
  // Uses Tailwind breakpoints; when provided, GroupField will build the appropriate
18281
19299
  // `grid-cols-*` classes from this config.
18282
- gridColumns: z30.object({
18283
- base: z30.number().int().min(1).max(4).optional(),
18284
- sm: z30.number().int().min(1).max(4).optional(),
18285
- md: z30.number().int().min(1).max(4).optional(),
18286
- lg: z30.number().int().min(1).max(4).optional(),
18287
- xl: z30.number().int().min(1).max(4).optional()
19300
+ gridColumns: z31.object({
19301
+ base: z31.number().int().min(1).max(4).optional(),
19302
+ sm: z31.number().int().min(1).max(4).optional(),
19303
+ md: z31.number().int().min(1).max(4).optional(),
19304
+ lg: z31.number().int().min(1).max(4).optional(),
19305
+ xl: z31.number().int().min(1).max(4).optional()
18288
19306
  }).optional(),
18289
19307
  // Group grid override: allows custom responsive grid column classes (e.g. unequal column widths)
18290
- gridColsClassName: z30.string().optional(),
19308
+ gridColsClassName: z31.string().optional(),
18291
19309
  // Repeater presentation presets
18292
- repeaterPreset: z30.enum(["thumbnailGrid", "layoutGrid"]).optional(),
18293
- thumbnailField: z30.string().optional(),
18294
- thumbnailAltField: z30.string().optional(),
18295
- thumbnailLabelField: z30.string().optional(),
18296
- thumbnailAspectRatio: z30.string().optional(),
18297
- thumbnailCardDensity: z30.enum(["compact", "comfortable"]).optional(),
18298
- layoutGridColumnsFields: z30.object({
18299
- base: z30.string().optional(),
18300
- sm: z30.string().optional(),
18301
- md: z30.string().optional(),
18302
- lg: z30.string().min(1),
18303
- xl: z30.string().optional()
19310
+ repeaterPreset: z31.enum(["thumbnailGrid", "layoutGrid"]).optional(),
19311
+ thumbnailField: z31.string().optional(),
19312
+ thumbnailAltField: z31.string().optional(),
19313
+ thumbnailLabelField: z31.string().optional(),
19314
+ thumbnailAspectRatio: z31.string().optional(),
19315
+ thumbnailCardDensity: z31.enum(["compact", "comfortable"]).optional(),
19316
+ layoutGridColumnsFields: z31.object({
19317
+ base: z31.string().optional(),
19318
+ sm: z31.string().optional(),
19319
+ md: z31.string().optional(),
19320
+ lg: z31.string().min(1),
19321
+ xl: z31.string().optional()
18304
19322
  }).optional(),
18305
- layoutGridSpanField: z30.string().optional(),
18306
- layoutGridRowField: z30.string().optional(),
18307
- layoutGridColumnField: z30.string().optional(),
18308
- layoutGridMaxRows: z30.number().int().positive().optional(),
19323
+ layoutGridSpanField: z31.string().optional(),
19324
+ layoutGridRowField: z31.string().optional(),
19325
+ layoutGridColumnField: z31.string().optional(),
19326
+ layoutGridMaxRows: z31.number().int().positive().optional(),
18309
19327
  // Icon picker configuration (used when ui.widget === 'iconPicker')
18310
- iconPickerPreset: z30.enum(ICON_PICKER_PRESETS).optional(),
19328
+ iconPickerPreset: z31.enum(ICON_PICKER_PRESETS).optional(),
18311
19329
  // Entry picker configuration
18312
- contentTypeField: z30.string().optional(),
18313
- fixedContentType: z30.string().optional(),
18314
- valueFrom: z30.enum(["id", "identifier", "slug"]).optional(),
18315
- siteOptionSource: z30.enum(siteOptionSources).optional(),
18316
- searchThreshold: z30.number().int().positive().optional(),
19330
+ contentTypeField: z31.string().optional(),
19331
+ fixedContentType: z31.string().optional(),
19332
+ valueFrom: z31.enum(["id", "identifier", "slug"]).optional(),
19333
+ siteOptionSource: z31.enum(siteOptionSources).optional(),
19334
+ searchThreshold: z31.number().int().positive().optional(),
18317
19335
  // Render in block header instead of form body (used for section styles)
18318
- renderInHeader: z30.boolean().optional(),
19336
+ renderInHeader: z31.boolean().optional(),
18319
19337
  // Semantic field intent for content-first form routing and settings tab grouping
18320
- intent: z30.enum(["content", "display", "behavior", "style"]).optional()
19338
+ intent: z31.enum(["content", "display", "behavior", "style"]).optional()
18321
19339
  }).partial();
18322
- baseFieldSchema = z30.object({
18323
- id: z30.string().min(1, "Field id is required"),
18324
- label: z30.string().min(1, "Field label is required"),
18325
- description: z30.string().optional(),
18326
- visibleRoles: z30.array(z30.enum(visibilityLevels)).optional(),
18327
- defaultValue: z30.any().optional(),
18328
- required: z30.boolean().default(false),
19340
+ baseFieldSchema = z31.object({
19341
+ id: z31.string().min(1, "Field id is required"),
19342
+ label: z31.string().min(1, "Field label is required"),
19343
+ description: z31.string().optional(),
19344
+ visibleRoles: z31.array(z31.enum(visibilityLevels)).optional(),
19345
+ defaultValue: z31.any().optional(),
19346
+ required: z31.boolean().default(false),
18329
19347
  ui: uiSchema.optional()
18330
19348
  });
18331
19349
  textFieldSchema = baseFieldSchema.extend({
18332
- type: z30.literal("text"),
18333
- multiline: z30.boolean().default(false),
18334
- maxLength: z30.number().int().positive().optional()
19350
+ type: z31.literal("text"),
19351
+ multiline: z31.boolean().default(false),
19352
+ maxLength: z31.number().int().positive().optional()
18335
19353
  });
18336
19354
  richTextFieldSchema = baseFieldSchema.extend({
18337
- type: z30.literal("richText")
19355
+ type: z31.literal("richText")
18338
19356
  });
18339
19357
  mediaFieldSchema = baseFieldSchema.extend({
18340
- type: z30.literal("media"),
19358
+ type: z31.literal("media"),
18341
19359
  // Keep full MEDIA_KINDS parse compatibility for pre-file-field manifests.
18342
19360
  // New authoring surfaces should use `file.fileKinds` for document/archive
18343
19361
  // style assets, but old saved schemas must not fail to open.
18344
- mediaKinds: z30.array(z30.enum(MEDIA_KINDS)).default(["image"]).transform((kinds) => {
19362
+ mediaKinds: z31.array(z31.enum(MEDIA_KINDS)).default(["image"]).transform((kinds) => {
18345
19363
  const displayKinds = kinds.filter(isDisplayMediaKind);
18346
19364
  return displayKinds.length > 0 ? displayKinds : ["image"];
18347
19365
  }),
18348
- aspectRatio: z30.string().optional()
19366
+ aspectRatio: z31.string().optional()
18349
19367
  });
18350
19368
  fileFieldSchema = baseFieldSchema.extend({
18351
- type: z30.literal("file"),
18352
- fileKinds: z30.array(z30.enum(PUBLIC_FILE_FIELD_KINDS)).default([...PUBLIC_FILE_FIELD_KINDS])
19369
+ type: z31.literal("file"),
19370
+ fileKinds: z31.array(z31.enum(PUBLIC_FILE_FIELD_KINDS)).default([...PUBLIC_FILE_FIELD_KINDS])
18353
19371
  });
18354
19372
  booleanFieldSchema = baseFieldSchema.extend({
18355
- type: z30.literal("boolean")
19373
+ type: z31.literal("boolean")
18356
19374
  });
18357
19375
  dateFieldSchema = baseFieldSchema.extend({
18358
- type: z30.literal("date")
19376
+ type: z31.literal("date")
18359
19377
  });
18360
19378
  timeFieldSchema = baseFieldSchema.extend({
18361
- type: z30.literal("time")
19379
+ type: z31.literal("time")
18362
19380
  });
18363
19381
  dateTimeFieldSchema = baseFieldSchema.extend({
18364
- type: z30.literal("datetime")
19382
+ type: z31.literal("datetime")
18365
19383
  });
18366
19384
  slugFieldSchema = baseFieldSchema.extend({
18367
- type: z30.literal("slug"),
18368
- sourceFieldId: z30.string().min(1).optional(),
18369
- statusFieldId: z30.string().min(1).optional(),
18370
- maxLength: z30.number().int().positive().optional()
19385
+ type: z31.literal("slug"),
19386
+ sourceFieldId: z31.string().min(1).optional(),
19387
+ statusFieldId: z31.string().min(1).optional(),
19388
+ maxLength: z31.number().int().positive().optional()
18371
19389
  });
18372
19390
  urlFieldSchema = baseFieldSchema.extend({
18373
- type: z30.literal("url"),
18374
- allowRelative: z30.boolean().default(false)
19391
+ type: z31.literal("url"),
19392
+ allowRelative: z31.boolean().default(false)
18375
19393
  });
18376
19394
  linkFieldSchema = baseFieldSchema.extend({
18377
- type: z30.literal("link")
19395
+ type: z31.literal("link")
18378
19396
  });
18379
19397
  selectFieldSchema = baseFieldSchema.extend({
18380
- type: z30.literal("select"),
18381
- options: z30.array(selectOptionSchema),
18382
- multiple: z30.boolean().default(false),
19398
+ type: z31.literal("select"),
19399
+ options: z31.array(selectOptionSchema),
19400
+ multiple: z31.boolean().default(false),
18383
19401
  source: selectSourceSchema.optional()
18384
19402
  }).superRefine((field, ctx) => {
18385
19403
  const widget = field.ui?.widget;
@@ -18387,7 +19405,7 @@ var init_schema3 = __esm({
18387
19405
  if (!field.source) {
18388
19406
  if (siteOptionSource || widget === "sdkSelect") {
18389
19407
  ctx.addIssue({
18390
- code: z30.ZodIssueCode.custom,
19408
+ code: z31.ZodIssueCode.custom,
18391
19409
  message: "Runtime-backed select fields must declare source.kind explicitly",
18392
19410
  path: ["source"]
18393
19411
  });
@@ -18395,7 +19413,7 @@ var init_schema3 = __esm({
18395
19413
  }
18396
19414
  if (field.options.length === 0) {
18397
19415
  ctx.addIssue({
18398
- code: z30.ZodIssueCode.custom,
19416
+ code: z31.ZodIssueCode.custom,
18399
19417
  message: "Select fields require at least one option unless a runtime source is configured",
18400
19418
  path: ["options"]
18401
19419
  });
@@ -18406,14 +19424,14 @@ var init_schema3 = __esm({
18406
19424
  case "static":
18407
19425
  if (siteOptionSource || widget === "sdkSelect") {
18408
19426
  ctx.addIssue({
18409
- code: z30.ZodIssueCode.custom,
19427
+ code: z31.ZodIssueCode.custom,
18410
19428
  message: "Static select fields cannot declare runtime-backed UI metadata",
18411
19429
  path: ["ui"]
18412
19430
  });
18413
19431
  }
18414
19432
  if (field.options.length === 0) {
18415
19433
  ctx.addIssue({
18416
- code: z30.ZodIssueCode.custom,
19434
+ code: z31.ZodIssueCode.custom,
18417
19435
  message: "Static select fields require at least one option",
18418
19436
  path: ["options"]
18419
19437
  });
@@ -18422,21 +19440,21 @@ var init_schema3 = __esm({
18422
19440
  case "site":
18423
19441
  if (field.options.length > 0) {
18424
19442
  ctx.addIssue({
18425
- code: z30.ZodIssueCode.custom,
19443
+ code: z31.ZodIssueCode.custom,
18426
19444
  message: "Site-backed select fields must not define static options",
18427
19445
  path: ["options"]
18428
19446
  });
18429
19447
  }
18430
19448
  if (widget !== "siteOptionPicker") {
18431
19449
  ctx.addIssue({
18432
- code: z30.ZodIssueCode.custom,
19450
+ code: z31.ZodIssueCode.custom,
18433
19451
  message: "Site-backed select fields must use the siteOptionPicker widget",
18434
19452
  path: ["ui", "widget"]
18435
19453
  });
18436
19454
  }
18437
19455
  if (siteOptionSource !== field.source.optionSource) {
18438
19456
  ctx.addIssue({
18439
- code: z30.ZodIssueCode.custom,
19457
+ code: z31.ZodIssueCode.custom,
18440
19458
  message: "Site-backed select fields must keep ui.siteOptionSource in sync with source.optionSource",
18441
19459
  path: ["ui", "siteOptionSource"]
18442
19460
  });
@@ -18445,14 +19463,14 @@ var init_schema3 = __esm({
18445
19463
  case "sdk":
18446
19464
  if (widget !== "sdkSelect") {
18447
19465
  ctx.addIssue({
18448
- code: z30.ZodIssueCode.custom,
19466
+ code: z31.ZodIssueCode.custom,
18449
19467
  message: "SDK-backed select fields must use the sdkSelect widget",
18450
19468
  path: ["ui", "widget"]
18451
19469
  });
18452
19470
  }
18453
19471
  if (siteOptionSource) {
18454
19472
  ctx.addIssue({
18455
- code: z30.ZodIssueCode.custom,
19473
+ code: z31.ZodIssueCode.custom,
18456
19474
  message: "SDK-backed select fields cannot declare ui.siteOptionSource",
18457
19475
  path: ["ui", "siteOptionSource"]
18458
19476
  });
@@ -18463,36 +19481,36 @@ var init_schema3 = __esm({
18463
19481
  }
18464
19482
  });
18465
19483
  referenceFieldSchema = baseFieldSchema.extend({
18466
- type: z30.literal("reference"),
18467
- referenceKind: z30.string().min(1),
18468
- allowManualEntry: z30.boolean().default(false)
18469
- });
18470
- itemTypeSchema = z30.object({
18471
- label: z30.string().min(1),
18472
- icon: z30.string().optional(),
18473
- fields: z30.lazy(
19484
+ type: z31.literal("reference"),
19485
+ referenceKind: z31.string().min(1),
19486
+ allowManualEntry: z31.boolean().default(false)
19487
+ });
19488
+ itemTypeSchema = z31.object({
19489
+ label: z31.string().min(1),
19490
+ icon: z31.string().optional(),
19491
+ fields: z31.lazy(
18474
19492
  () => getFieldSchemaInternal().array().min(1, "Item type requires at least one field")
18475
19493
  )
18476
19494
  });
18477
19495
  repeaterFieldSchema = baseFieldSchema.extend({
18478
- type: z30.literal("repeater"),
18479
- itemLabel: z30.string().default("Item"),
18480
- itemLabelSource: z30.string().optional(),
18481
- showSummary: z30.boolean().optional(),
18482
- summaryFields: z30.string().array().optional(),
18483
- summaryMaxChars: z30.number().int().positive().optional(),
18484
- minItems: z30.number().int().min(0).default(0),
18485
- maxItems: z30.number().int().positive().optional(),
19496
+ type: z31.literal("repeater"),
19497
+ itemLabel: z31.string().default("Item"),
19498
+ itemLabelSource: z31.string().optional(),
19499
+ showSummary: z31.boolean().optional(),
19500
+ summaryFields: z31.string().array().optional(),
19501
+ summaryMaxChars: z31.number().int().positive().optional(),
19502
+ minItems: z31.number().int().min(0).default(0),
19503
+ maxItems: z31.number().int().positive().optional(),
18486
19504
  // Monomorphic mode
18487
- schema: z30.object({
18488
- fields: z30.lazy(
19505
+ schema: z31.object({
19506
+ fields: z31.lazy(
18489
19507
  () => getFieldSchemaInternal().array().min(1, "Repeater requires at least one field")
18490
19508
  )
18491
19509
  }).optional(),
18492
19510
  // Polymorphic mode
18493
- polymorphic: z30.boolean().optional(),
18494
- itemTypes: z30.record(z30.string(), itemTypeSchema).optional(),
18495
- allowConversion: z30.boolean().default(true)
19511
+ polymorphic: z31.boolean().optional(),
19512
+ itemTypes: z31.record(z31.string(), itemTypeSchema).optional(),
19513
+ allowConversion: z31.boolean().default(true)
18496
19514
  }).refine(
18497
19515
  (data) => {
18498
19516
  const hasSchema = data.schema !== void 0;
@@ -18584,71 +19602,71 @@ var init_schema3 = __esm({
18584
19602
  }
18585
19603
  );
18586
19604
  groupFieldSchema = baseFieldSchema.extend({
18587
- type: z30.literal("group"),
18588
- schema: z30.object({
18589
- fields: z30.lazy(
19605
+ type: z31.literal("group"),
19606
+ schema: z31.object({
19607
+ fields: z31.lazy(
18590
19608
  () => getFieldSchemaInternal().array().min(1, "Group requires at least one field")
18591
19609
  )
18592
19610
  })
18593
19611
  });
18594
19612
  modalFieldSchema = baseFieldSchema.extend({
18595
- type: z30.literal("modal"),
18596
- schema: z30.object({
18597
- fields: z30.lazy(
19613
+ type: z31.literal("modal"),
19614
+ schema: z31.object({
19615
+ fields: z31.lazy(
18598
19616
  () => getFieldSchemaInternal().array().min(1, "Modal requires at least one field")
18599
19617
  )
18600
19618
  })
18601
19619
  });
18602
19620
  numberFieldSchema = baseFieldSchema.extend({
18603
- type: z30.literal("number"),
18604
- min: z30.number().optional(),
18605
- max: z30.number().optional(),
18606
- step: z30.number().optional()
18607
- });
18608
- tabDefinitionSchema = z30.object({
18609
- id: z30.string().min(1),
18610
- label: z30.string().min(1),
18611
- icon: z30.string().optional(),
18612
- description: z30.string().optional(),
18613
- fields: z30.lazy(() => getFieldSchemaInternal().array()),
19621
+ type: z31.literal("number"),
19622
+ min: z31.number().optional(),
19623
+ max: z31.number().optional(),
19624
+ step: z31.number().optional()
19625
+ });
19626
+ tabDefinitionSchema = z31.object({
19627
+ id: z31.string().min(1),
19628
+ label: z31.string().min(1),
19629
+ icon: z31.string().optional(),
19630
+ description: z31.string().optional(),
19631
+ fields: z31.lazy(() => getFieldSchemaInternal().array()),
18614
19632
  /** SDK section option that controls tab visibility based on site config */
18615
- sdkSectionOption: z30.enum(["backgroundColor", "backgroundGradient", "backgroundImage"]).optional()
19633
+ sdkSectionOption: z31.enum(["backgroundColor", "backgroundGradient", "backgroundImage"]).optional()
18616
19634
  });
18617
19635
  tabGroupFieldSchema = baseFieldSchema.extend({
18618
- type: z30.literal("tabGroup"),
18619
- tabs: z30.array(tabDefinitionSchema).min(1, "TabGroup requires at least one tab"),
18620
- activeTabField: z30.string().optional()
19636
+ type: z31.literal("tabGroup"),
19637
+ tabs: z31.array(tabDefinitionSchema).min(1, "TabGroup requires at least one tab"),
19638
+ activeTabField: z31.string().optional()
18621
19639
  });
18622
- presetOptionSchema = z30.object({
18623
- value: z30.string(),
18624
- label: z30.string()
19640
+ presetOptionSchema = z31.object({
19641
+ value: z31.string(),
19642
+ label: z31.string()
18625
19643
  });
18626
19644
  presetOrCustomFieldSchema = baseFieldSchema.extend({
18627
- type: z30.literal("presetOrCustom"),
18628
- presets: z30.array(presetOptionSchema).min(1, "PresetOrCustom requires at least one preset"),
18629
- customInput: z30.object({
18630
- placeholder: z30.string().optional(),
18631
- pattern: z30.string().optional(),
18632
- helpText: z30.string().optional()
19645
+ type: z31.literal("presetOrCustom"),
19646
+ presets: z31.array(presetOptionSchema).min(1, "PresetOrCustom requires at least one preset"),
19647
+ customInput: z31.object({
19648
+ placeholder: z31.string().optional(),
19649
+ pattern: z31.string().optional(),
19650
+ helpText: z31.string().optional()
18633
19651
  }).optional()
18634
19652
  });
18635
19653
  contentTypeSelectFieldSchema = baseFieldSchema.extend({
18636
- type: z30.literal("contentTypeSelect"),
19654
+ type: z31.literal("contentTypeSelect"),
18637
19655
  /** Filter: all, routable (hasPages=true), nonRoutable (hasPages=false) */
18638
- filter: z30.enum(["all", "routable", "nonRoutable"]).default("all")
19656
+ filter: z31.enum(["all", "routable", "nonRoutable"]).default("all")
18639
19657
  });
18640
19658
  entryPickerFieldSchema = baseFieldSchema.extend({
18641
- type: z30.literal("entryPicker"),
19659
+ type: z31.literal("entryPicker"),
18642
19660
  // Note: these options also exist under `ui.*` (see uiSchema) because older manifests
18643
19661
  // and some authoring surfaces store widget-specific configuration there. We support
18644
19662
  // both locations so SDK/custom manifests can use the more ergonomic top-level fields
18645
19663
  // without breaking existing `ui.*` configs.
18646
19664
  /** Fixed content type to filter entries by (no sibling contentType field required) */
18647
- fixedContentType: z30.string().optional(),
19665
+ fixedContentType: z31.string().optional(),
18648
19666
  /** Field ID that contains the content type to filter entries by */
18649
- contentTypeField: z30.string().optional(),
19667
+ contentTypeField: z31.string().optional(),
18650
19668
  /** What value should be stored when an entry is selected */
18651
- valueFrom: z30.enum(["id", "identifier", "slug"]).optional()
19669
+ valueFrom: z31.enum(["id", "identifier", "slug"]).optional()
18652
19670
  });
18653
19671
  _fieldSchemaInternal = null;
18654
19672
  fieldSchema = new Proxy({}, {
@@ -18662,14 +19680,14 @@ var init_schema3 = __esm({
18662
19680
  return prop in getFieldSchemaInternal();
18663
19681
  }
18664
19682
  });
18665
- slotSchema = z30.object({
18666
- id: z30.string().min(1),
18667
- label: z30.string().min(1),
18668
- allowedKinds: z30.array(z30.string()).default([]),
18669
- min: z30.number().int().min(0).default(0),
18670
- max: z30.number().int().positive().optional(),
18671
- help: z30.string().optional(),
18672
- visibleRoles: z30.array(z30.enum(visibilityLevels)).optional()
19683
+ slotSchema = z31.object({
19684
+ id: z31.string().min(1),
19685
+ label: z31.string().min(1),
19686
+ allowedKinds: z31.array(z31.string()).default([]),
19687
+ min: z31.number().int().min(0).default(0),
19688
+ max: z31.number().int().positive().optional(),
19689
+ help: z31.string().optional(),
19690
+ visibleRoles: z31.array(z31.enum(visibilityLevels)).optional()
18673
19691
  });
18674
19692
  typographyTokens = [
18675
19693
  "display",
@@ -18687,29 +19705,29 @@ var init_schema3 = __esm({
18687
19705
  ];
18688
19706
  spacingTokens = ["none", "xs", "sm", "md", "lg", "xl"];
18689
19707
  radiusTokens = ["none", "sm", "md", "lg", "full"];
18690
- styleTokenSchema = z30.object({
18691
- background: z30.enum(colorTokens).optional(),
18692
- foreground: z30.enum(colorTokens).optional(),
18693
- border: z30.enum(colorTokens).optional(),
18694
- typography: z30.enum(typographyTokens).optional(),
18695
- spacing: z30.enum(spacingTokens).optional(),
18696
- radius: z30.enum(radiusTokens).optional()
18697
- });
18698
- behaviourSchema = z30.object({
18699
- supportsThemeSwitching: z30.boolean().default(true),
18700
- inlineEditing: z30.boolean().default(false),
18701
- animation: z30.boolean().default(false),
19708
+ styleTokenSchema = z31.object({
19709
+ background: z31.enum(colorTokens).optional(),
19710
+ foreground: z31.enum(colorTokens).optional(),
19711
+ border: z31.enum(colorTokens).optional(),
19712
+ typography: z31.enum(typographyTokens).optional(),
19713
+ spacing: z31.enum(spacingTokens).optional(),
19714
+ radius: z31.enum(radiusTokens).optional()
19715
+ });
19716
+ behaviourSchema = z31.object({
19717
+ supportsThemeSwitching: z31.boolean().default(true),
19718
+ inlineEditing: z31.boolean().default(false),
19719
+ animation: z31.boolean().default(false),
18702
19720
  // Hide from block picker palettes (e.g., header/footer system blocks)
18703
- paletteHidden: z30.boolean().default(false),
19721
+ paletteHidden: z31.boolean().default(false),
18704
19722
  // Block manages its own wrapper (for sticky/fixed positioning)
18705
- managesOwnWrapper: z30.boolean().optional()
19723
+ managesOwnWrapper: z31.boolean().optional()
18706
19724
  });
18707
- quickFieldPrioritySchema = z30.array(z30.string().min(1)).min(1).superRefine((fieldIds, ctx) => {
19725
+ quickFieldPrioritySchema = z31.array(z31.string().min(1)).min(1).superRefine((fieldIds, ctx) => {
18708
19726
  const seenFieldIds = /* @__PURE__ */ new Set();
18709
19727
  for (const [index, fieldId] of fieldIds.entries()) {
18710
19728
  if (seenFieldIds.has(fieldId)) {
18711
19729
  ctx.addIssue({
18712
- code: z30.ZodIssueCode.custom,
19730
+ code: z31.ZodIssueCode.custom,
18713
19731
  path: [index],
18714
19732
  message: `Duplicate quick-field priority "${fieldId}"`
18715
19733
  });
@@ -18717,10 +19735,10 @@ var init_schema3 = __esm({
18717
19735
  seenFieldIds.add(fieldId);
18718
19736
  }
18719
19737
  });
18720
- previewCustomizeManifestCurationSchema = z30.object({
19738
+ previewCustomizeManifestCurationSchema = z31.object({
18721
19739
  quickFieldPriority: quickFieldPrioritySchema
18722
19740
  });
18723
- blockCategoryEnum = z30.enum([
19741
+ blockCategoryEnum = z31.enum([
18724
19742
  "marketing",
18725
19743
  "content",
18726
19744
  "blog",
@@ -18728,13 +19746,13 @@ var init_schema3 = __esm({
18728
19746
  "layout",
18729
19747
  "interactive"
18730
19748
  ]);
18731
- manifestSchema = z30.object({
18732
- name: z30.string().min(1),
18733
- version: z30.string().min(1),
18734
- title: z30.string().min(1),
18735
- titleSource: z30.union([z30.string().min(1), z30.array(z30.string().min(1)).min(1)]).optional(),
18736
- description: z30.string().optional(),
18737
- component: z30.string().min(1),
19749
+ manifestSchema = z31.object({
19750
+ name: z31.string().min(1),
19751
+ version: z31.string().min(1),
19752
+ title: z31.string().min(1),
19753
+ titleSource: z31.union([z31.string().min(1), z31.array(z31.string().min(1)).min(1)]).optional(),
19754
+ description: z31.string().optional(),
19755
+ component: z31.string().min(1),
18738
19756
  fields: fieldSchema.array().default([]),
18739
19757
  slots: slotSchema.array().default([]),
18740
19758
  styleTokens: styleTokenSchema.optional(),
@@ -18748,29 +19766,29 @@ var init_schema3 = __esm({
18748
19766
  *
18749
19767
  * The original fields remain available in settings for power users.
18750
19768
  */
18751
- promotedFields: z30.array(z30.string().min(1)).optional(),
19769
+ promotedFields: z31.array(z31.string().min(1)).optional(),
18752
19770
  // Block variants system
18753
- variants: z30.record(z30.string(), NodeTreeSchema).optional(),
18754
- defaultVariant: z30.string().optional(),
18755
- variantOptions: z30.record(
18756
- z30.string(),
18757
- z30.object({
18758
- label: z30.string().optional(),
18759
- description: z30.string().optional(),
18760
- icon: z30.string().optional()
19771
+ variants: z31.record(z31.string(), NodeTreeSchema).optional(),
19772
+ defaultVariant: z31.string().optional(),
19773
+ variantOptions: z31.record(
19774
+ z31.string(),
19775
+ z31.object({
19776
+ label: z31.string().optional(),
19777
+ description: z31.string().optional(),
19778
+ icon: z31.string().optional()
18761
19779
  }).optional()
18762
19780
  ).optional(),
18763
19781
  // Discovery metadata
18764
19782
  category: blockCategoryEnum.optional(),
18765
- contentTypes: z30.array(z30.string()).optional(),
18766
- tags: z30.array(z30.string()).optional(),
18767
- icon: z30.string().optional()
19783
+ contentTypes: z31.array(z31.string()).optional(),
19784
+ tags: z31.array(z31.string()).optional(),
19785
+ icon: z31.string().optional()
18768
19786
  });
18769
19787
  }
18770
19788
  });
18771
19789
 
18772
19790
  // ../blocks/src/system/fragments/types.ts
18773
- import { z as z31 } from "zod";
19791
+ import { z as z32 } from "zod";
18774
19792
  function defineFragment(config) {
18775
19793
  const parsed = fragmentConfigSchema.parse(config);
18776
19794
  const fields = parseFieldDefinitions(parsed.fields);
@@ -18992,26 +20010,26 @@ var init_types15 = __esm({
18992
20010
  init_node();
18993
20011
  FRAGMENT_ID_PATTERN = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/i;
18994
20012
  FIELD_ID_PATTERN = /^[a-z][a-zA-Z0-9_-]*$/;
18995
- dataLoaderSchema = z31.object({
18996
- endpoint: z31.string().min(1, "Fragment data loader requires an endpoint"),
18997
- params: z31.record(z31.string(), z31.unknown()).default({}),
18998
- mode: z31.enum(["server", "client"]).default("server")
20013
+ dataLoaderSchema = z32.object({
20014
+ endpoint: z32.string().min(1, "Fragment data loader requires an endpoint"),
20015
+ params: z32.record(z32.string(), z32.unknown()).default({}),
20016
+ mode: z32.enum(["server", "client"]).default("server")
18999
20017
  });
19000
- fragmentDataSchema = z31.object({
19001
- key: z31.string().min(1, "Fragment data key is required"),
20018
+ fragmentDataSchema = z32.object({
20019
+ key: z32.string().min(1, "Fragment data key is required"),
19002
20020
  loader: dataLoaderSchema.optional()
19003
20021
  });
19004
- fragmentConfigSchema = z31.object({
19005
- id: z31.string().min(1, "Fragment id is required").regex(
20022
+ fragmentConfigSchema = z32.object({
20023
+ id: z32.string().min(1, "Fragment id is required").regex(
19006
20024
  FRAGMENT_ID_PATTERN,
19007
20025
  "Fragment id must be alphanumeric with optional . _ - separators"
19008
20026
  ),
19009
- title: z31.string().optional(),
19010
- description: z31.string().optional(),
19011
- category: z31.enum(["content", "media", "interactive", "layout"]).optional(),
19012
- icon: z31.string().optional(),
20027
+ title: z32.string().optional(),
20028
+ description: z32.string().optional(),
20029
+ category: z32.enum(["content", "media", "interactive", "layout"]).optional(),
20030
+ icon: z32.string().optional(),
19013
20031
  fields: fieldSchema.array().default([]),
19014
- layout: z31.union([NodeSchema, NodeSchema.array()]).transform(
20032
+ layout: z32.union([NodeSchema, NodeSchema.array()]).transform(
19015
20033
  (value) => Array.isArray(value) ? value : [value]
19016
20034
  ),
19017
20035
  data: fragmentDataSchema.optional()
@@ -20517,8 +21535,23 @@ var init_heroLayoutControls = __esm({
20517
21535
  heroLayoutControlsFragment = defineFragment({
20518
21536
  id: "heroLayoutControls",
20519
21537
  title: "Hero Layout",
20520
- description: "Alignment and content width controls for hero layouts.",
21538
+ description: "Title scale, alignment, and content width controls for hero layouts.",
20521
21539
  fields: [
21540
+ {
21541
+ id: "titleSize",
21542
+ type: "select",
21543
+ label: "Title size",
21544
+ description: "Adjust the visual scale of the hero title.",
21545
+ required: false,
21546
+ ui: { intent: "display" },
21547
+ options: [
21548
+ { value: "auto", label: "Auto" },
21549
+ { value: "quiet", label: "Normal" },
21550
+ { value: "editorial", label: "Large" },
21551
+ { value: "display", label: "Huge" },
21552
+ { value: "poster", label: "Poster" }
21553
+ ]
21554
+ },
20522
21555
  {
20523
21556
  id: "contentAlignment",
20524
21557
  type: "select",
@@ -21633,88 +22666,88 @@ var init_defineBlock = __esm({
21633
22666
  });
21634
22667
 
21635
22668
  // ../blocks/src/system/blocks/shop.shared.ts
21636
- import { z as z32 } from "zod";
22669
+ import { z as z33 } from "zod";
21637
22670
  var publicPassProductSchema, publicMembershipProductSchema;
21638
22671
  var init_shop_shared = __esm({
21639
22672
  "../blocks/src/system/blocks/shop.shared.ts"() {
21640
22673
  "use strict";
21641
- publicPassProductSchema = z32.object({
21642
- id: z32.string(),
21643
- productUseCase: z32.enum(["event_pass", "appointment_package"]).default("event_pass"),
21644
- name: z32.string(),
21645
- description: z32.string().nullable(),
21646
- price: z32.number(),
21647
- currency: z32.string(),
21648
- creditsTotal: z32.number(),
21649
- pricePerCredit: z32.number(),
21650
- validDays: z32.number().nullable(),
21651
- eligibleCategoryIds: z32.array(z32.string()),
21652
- eligibleCategoryNames: z32.array(z32.string())
22674
+ publicPassProductSchema = z33.object({
22675
+ id: z33.string(),
22676
+ productUseCase: z33.enum(["event_pass", "appointment_package"]).default("event_pass"),
22677
+ name: z33.string(),
22678
+ description: z33.string().nullable(),
22679
+ price: z33.number(),
22680
+ currency: z33.string(),
22681
+ creditsTotal: z33.number(),
22682
+ pricePerCredit: z33.number(),
22683
+ validDays: z33.number().nullable(),
22684
+ eligibleCategoryIds: z33.array(z33.string()),
22685
+ eligibleCategoryNames: z33.array(z33.string())
21653
22686
  });
21654
- publicMembershipProductSchema = z32.object({
21655
- id: z32.string(),
21656
- name: z32.string(),
21657
- description: z32.string().nullable(),
21658
- price: z32.number(),
21659
- currency: z32.string(),
21660
- billingInterval: z32.enum(["month", "year"]),
21661
- eligibleCategoryIds: z32.array(z32.string()),
21662
- eligibleCategoryNames: z32.array(z32.string())
22687
+ publicMembershipProductSchema = z33.object({
22688
+ id: z33.string(),
22689
+ name: z33.string(),
22690
+ description: z33.string().nullable(),
22691
+ price: z33.number(),
22692
+ currency: z33.string(),
22693
+ billingInterval: z33.enum(["month", "year"]),
22694
+ eligibleCategoryIds: z33.array(z33.string()),
22695
+ eligibleCategoryNames: z33.array(z33.string())
21663
22696
  });
21664
22697
  }
21665
22698
  });
21666
22699
 
21667
22700
  // ../blocks/src/system/blocks/products/shared.ts
21668
- import { z as z33 } from "zod";
22701
+ import { z as z34 } from "zod";
21669
22702
  var publicProductVariantSchema, publicProductSchema, publicProductsResponseSchema;
21670
22703
  var init_shared5 = __esm({
21671
22704
  "../blocks/src/system/blocks/products/shared.ts"() {
21672
22705
  "use strict";
21673
- publicProductVariantSchema = z33.object({
21674
- id: z33.string(),
21675
- title: z33.string(),
21676
- sku: z33.string().nullable(),
21677
- priceCents: z33.number(),
21678
- stockQuantity: z33.number().nullable(),
21679
- soldOut: z33.boolean()
21680
- });
21681
- publicProductSchema = z33.object({
21682
- id: z33.string(),
21683
- contentEntryId: z33.string().nullable(),
21684
- title: z33.string(),
21685
- slug: z33.string(),
21686
- path: z33.string().nullable(),
21687
- status: z33.enum(["draft", "active"]),
21688
- priceCents: z33.number(),
21689
- currency: z33.string(),
21690
- productType: z33.enum(["physical", "digital"]),
21691
- requiresShipping: z33.boolean(),
21692
- hasVariants: z33.boolean(),
21693
- trackInventory: z33.boolean(),
21694
- soldOut: z33.boolean(),
21695
- category: z33.object({
21696
- id: z33.string(),
21697
- name: z33.string(),
21698
- slug: z33.string()
22706
+ publicProductVariantSchema = z34.object({
22707
+ id: z34.string(),
22708
+ title: z34.string(),
22709
+ sku: z34.string().nullable(),
22710
+ priceCents: z34.number(),
22711
+ stockQuantity: z34.number().nullable(),
22712
+ soldOut: z34.boolean()
22713
+ });
22714
+ publicProductSchema = z34.object({
22715
+ id: z34.string(),
22716
+ contentEntryId: z34.string().nullable(),
22717
+ title: z34.string(),
22718
+ slug: z34.string(),
22719
+ path: z34.string().nullable(),
22720
+ status: z34.enum(["draft", "active"]),
22721
+ priceCents: z34.number(),
22722
+ currency: z34.string(),
22723
+ productType: z34.enum(["physical", "digital"]),
22724
+ requiresShipping: z34.boolean(),
22725
+ hasVariants: z34.boolean(),
22726
+ trackInventory: z34.boolean(),
22727
+ soldOut: z34.boolean(),
22728
+ category: z34.object({
22729
+ id: z34.string(),
22730
+ name: z34.string(),
22731
+ slug: z34.string()
21699
22732
  }).nullable(),
21700
- summary: z33.string().nullable(),
21701
- body: z33.unknown().nullable(),
21702
- gallery: z33.array(
21703
- z33.object({
21704
- url: z33.string(),
21705
- alt: z33.string().nullable()
22733
+ summary: z34.string().nullable(),
22734
+ body: z34.unknown().nullable(),
22735
+ gallery: z34.array(
22736
+ z34.object({
22737
+ url: z34.string(),
22738
+ alt: z34.string().nullable()
21706
22739
  })
21707
22740
  ),
21708
- variants: z33.array(publicProductVariantSchema)
22741
+ variants: z34.array(publicProductVariantSchema)
21709
22742
  });
21710
- publicProductsResponseSchema = z33.object({
21711
- products: z33.array(publicProductSchema)
22743
+ publicProductsResponseSchema = z34.object({
22744
+ products: z34.array(publicProductSchema)
21712
22745
  });
21713
22746
  }
21714
22747
  });
21715
22748
 
21716
22749
  // ../blocks/src/system/runtime/nodes/shop-commerce.shared.ts
21717
- import { z as z34 } from "zod";
22750
+ import { z as z35 } from "zod";
21718
22751
  function toPositiveInteger(value) {
21719
22752
  return Math.max(1, Math.floor(value));
21720
22753
  }
@@ -21872,26 +22905,26 @@ var init_shop_commerce_shared = __esm({
21872
22905
  "../blocks/src/system/runtime/nodes/shop-commerce.shared.ts"() {
21873
22906
  "use strict";
21874
22907
  EMPTY_COMMERCE_CART_STATE = { items: [] };
21875
- storedProductCartItemSchema = z34.object({
21876
- kind: z34.literal("product"),
21877
- productId: z34.string().min(1),
21878
- productCategoryId: z34.string().min(1).optional().nullable(),
21879
- variantId: z34.string().min(1).optional().nullable(),
21880
- title: z34.string().min(1),
21881
- variantTitle: z34.string().optional().nullable(),
21882
- quantity: z34.number().finite(),
21883
- unitPriceCents: z34.number().finite(),
21884
- currency: z34.string().min(1),
21885
- imageUrl: z34.string().optional().nullable(),
21886
- soldOut: z34.boolean().optional()
21887
- });
21888
- storedPassCartItemSchema = z34.object({
21889
- kind: z34.literal("pass"),
21890
- passId: z34.string().min(1),
21891
- title: z34.string().min(1),
21892
- quantity: z34.number().finite().optional(),
21893
- unitPriceCents: z34.number().finite(),
21894
- currency: z34.string().min(1)
22908
+ storedProductCartItemSchema = z35.object({
22909
+ kind: z35.literal("product"),
22910
+ productId: z35.string().min(1),
22911
+ productCategoryId: z35.string().min(1).optional().nullable(),
22912
+ variantId: z35.string().min(1).optional().nullable(),
22913
+ title: z35.string().min(1),
22914
+ variantTitle: z35.string().optional().nullable(),
22915
+ quantity: z35.number().finite(),
22916
+ unitPriceCents: z35.number().finite(),
22917
+ currency: z35.string().min(1),
22918
+ imageUrl: z35.string().optional().nullable(),
22919
+ soldOut: z35.boolean().optional()
22920
+ });
22921
+ storedPassCartItemSchema = z35.object({
22922
+ kind: z35.literal("pass"),
22923
+ passId: z35.string().min(1),
22924
+ title: z35.string().min(1),
22925
+ quantity: z35.number().finite().optional(),
22926
+ unitPriceCents: z35.number().finite(),
22927
+ currency: z35.string().min(1)
21895
22928
  });
21896
22929
  }
21897
22930
  });
@@ -22103,7 +23136,7 @@ var init_display = __esm({
22103
23136
  });
22104
23137
 
22105
23138
  // ../blocks/src/system/runtime/nodes/shop.interactive.ts
22106
- import { z as z35 } from "zod";
23139
+ import { z as z36 } from "zod";
22107
23140
  function resolveShowPricePerCredit(source) {
22108
23141
  return source.showPricePerCredit ?? true;
22109
23142
  }
@@ -22223,211 +23256,211 @@ var init_shop_interactive = __esm({
22223
23256
  init_islands();
22224
23257
  init_runtime();
22225
23258
  init_contract_schemas();
22226
- shopModeSchema = z35.enum(["passes-memberships", "product-list", "product-detail", "cart", "checkout"]);
22227
- contentEntrySchema = z35.object({
22228
- id: z35.string().nullable().optional(),
22229
- slug: z35.string().nullable().optional()
23259
+ shopModeSchema = z36.enum(["passes-memberships", "product-list", "product-detail", "cart", "checkout"]);
23260
+ contentEntrySchema = z36.object({
23261
+ id: z36.string().nullable().optional(),
23262
+ slug: z36.string().nullable().optional()
22230
23263
  }).nullable();
22231
- shopSourceSchema = z35.object({
22232
- className: z35.string().nullable().optional(),
23264
+ shopSourceSchema = z36.object({
23265
+ className: z36.string().nullable().optional(),
22233
23266
  mode: shopModeSchema.optional(),
22234
- heading: z35.string().nullable().optional(),
22235
- productSlug: z35.string().nullable().optional(),
22236
- showPasses: z35.boolean().optional(),
22237
- showMemberships: z35.boolean().optional(),
22238
- layout: z35.enum(["grid", "list"]).optional(),
22239
- columns: z35.string().optional(),
22240
- showDescriptions: z35.boolean().optional(),
22241
- showSummary: z35.boolean().optional(),
22242
- showBody: z35.boolean().optional(),
22243
- showPrices: z35.boolean().optional(),
22244
- showValidityPeriod: z35.boolean().optional(),
22245
- showPricePerCredit: z35.boolean().nullable().optional(),
22246
- passesHeading: z35.string().optional(),
22247
- membershipsHeading: z35.string().optional(),
22248
- buyButtonText: z35.string().optional(),
22249
- addButtonText: z35.string().optional(),
22250
- passPurchaseMode: z35.enum(["add_to_cart", "buy_now"]).optional(),
22251
- subscribeButtonText: z35.string().optional(),
22252
- emptyStateText: z35.string().optional(),
22253
- checkoutButtonText: z35.string().optional(),
22254
- clearButtonText: z35.string().optional(),
22255
- submitButtonText: z35.string().optional(),
23267
+ heading: z36.string().nullable().optional(),
23268
+ productSlug: z36.string().nullable().optional(),
23269
+ showPasses: z36.boolean().optional(),
23270
+ showMemberships: z36.boolean().optional(),
23271
+ layout: z36.enum(["grid", "list"]).optional(),
23272
+ columns: z36.string().optional(),
23273
+ showDescriptions: z36.boolean().optional(),
23274
+ showSummary: z36.boolean().optional(),
23275
+ showBody: z36.boolean().optional(),
23276
+ showPrices: z36.boolean().optional(),
23277
+ showValidityPeriod: z36.boolean().optional(),
23278
+ showPricePerCredit: z36.boolean().nullable().optional(),
23279
+ passesHeading: z36.string().optional(),
23280
+ membershipsHeading: z36.string().optional(),
23281
+ buyButtonText: z36.string().optional(),
23282
+ addButtonText: z36.string().optional(),
23283
+ passPurchaseMode: z36.enum(["add_to_cart", "buy_now"]).optional(),
23284
+ subscribeButtonText: z36.string().optional(),
23285
+ emptyStateText: z36.string().optional(),
23286
+ checkoutButtonText: z36.string().optional(),
23287
+ clearButtonText: z36.string().optional(),
23288
+ submitButtonText: z36.string().optional(),
22256
23289
  contentEntry: contentEntrySchema.optional(),
22257
- passes: z35.array(publicPassProductSchema).nullable().optional(),
22258
- memberships: z35.array(publicMembershipProductSchema).nullable().optional(),
22259
- products: z35.array(publicProductSchema).nullable().optional(),
22260
- siteId: z35.string().optional(),
22261
- apiBaseUrl: z35.string().optional(),
23290
+ passes: z36.array(publicPassProductSchema).nullable().optional(),
23291
+ memberships: z36.array(publicMembershipProductSchema).nullable().optional(),
23292
+ products: z36.array(publicProductSchema).nullable().optional(),
23293
+ siteId: z36.string().optional(),
23294
+ apiBaseUrl: z36.string().optional(),
22262
23295
  stage: previewStageSchema.optional()
22263
23296
  });
22264
- productVariantOptionDisplaySchema = z35.object({
22265
- id: z35.string(),
22266
- label: z35.string(),
22267
- soldOut: z35.boolean()
22268
- });
22269
- productCardDisplaySchema = z35.object({
22270
- productId: z35.string(),
22271
- title: z35.string(),
22272
- path: z35.string().nullable(),
22273
- summary: z35.string().nullable(),
22274
- priceLabel: z35.string().nullable(),
22275
- image: z35.object({
22276
- url: z35.string(),
22277
- alt: z35.string().nullable()
23297
+ productVariantOptionDisplaySchema = z36.object({
23298
+ id: z36.string(),
23299
+ label: z36.string(),
23300
+ soldOut: z36.boolean()
23301
+ });
23302
+ productCardDisplaySchema = z36.object({
23303
+ productId: z36.string(),
23304
+ title: z36.string(),
23305
+ path: z36.string().nullable(),
23306
+ summary: z36.string().nullable(),
23307
+ priceLabel: z36.string().nullable(),
23308
+ image: z36.object({
23309
+ url: z36.string(),
23310
+ alt: z36.string().nullable()
22278
23311
  }).nullable(),
22279
- variantOptions: z35.array(productVariantOptionDisplaySchema),
22280
- selectedVariantId: z35.string().nullable(),
22281
- selectionLabel: z35.string(),
22282
- actionLabel: z35.string(),
22283
- soldOut: z35.boolean()
22284
- });
22285
- productListDisplaySchema = z35.object({
22286
- kind: z35.literal("product-list"),
22287
- state: z35.enum(["empty", "ready"]),
22288
- heading: z35.string().nullable(),
22289
- className: z35.string().nullable(),
22290
- layout: z35.enum(["grid", "list"]),
22291
- columns: z35.string(),
22292
- emptyMessage: z35.string(),
22293
- cards: z35.array(productCardDisplaySchema)
22294
- });
22295
- productDetailDisplaySchema = z35.discriminatedUnion("state", [
22296
- z35.object({
22297
- kind: z35.literal("product-detail"),
22298
- state: z35.literal("empty"),
22299
- heading: z35.string().nullable(),
22300
- className: z35.string().nullable(),
22301
- emptyMessage: z35.string()
23312
+ variantOptions: z36.array(productVariantOptionDisplaySchema),
23313
+ selectedVariantId: z36.string().nullable(),
23314
+ selectionLabel: z36.string(),
23315
+ actionLabel: z36.string(),
23316
+ soldOut: z36.boolean()
23317
+ });
23318
+ productListDisplaySchema = z36.object({
23319
+ kind: z36.literal("product-list"),
23320
+ state: z36.enum(["empty", "ready"]),
23321
+ heading: z36.string().nullable(),
23322
+ className: z36.string().nullable(),
23323
+ layout: z36.enum(["grid", "list"]),
23324
+ columns: z36.string(),
23325
+ emptyMessage: z36.string(),
23326
+ cards: z36.array(productCardDisplaySchema)
23327
+ });
23328
+ productDetailDisplaySchema = z36.discriminatedUnion("state", [
23329
+ z36.object({
23330
+ kind: z36.literal("product-detail"),
23331
+ state: z36.literal("empty"),
23332
+ heading: z36.string().nullable(),
23333
+ className: z36.string().nullable(),
23334
+ emptyMessage: z36.string()
22302
23335
  }),
22303
- z35.object({
22304
- kind: z35.literal("product-detail"),
22305
- state: z35.literal("ready"),
22306
- heading: z35.string().nullable(),
22307
- className: z35.string().nullable(),
22308
- title: z35.string(),
22309
- priceLabel: z35.string(),
22310
- summary: z35.string().nullable(),
22311
- categoryLabel: z35.string().nullable(),
22312
- gallery: z35.array(z35.object({
22313
- url: z35.string(),
22314
- alt: z35.string().nullable()
23336
+ z36.object({
23337
+ kind: z36.literal("product-detail"),
23338
+ state: z36.literal("ready"),
23339
+ heading: z36.string().nullable(),
23340
+ className: z36.string().nullable(),
23341
+ title: z36.string(),
23342
+ priceLabel: z36.string(),
23343
+ summary: z36.string().nullable(),
23344
+ categoryLabel: z36.string().nullable(),
23345
+ gallery: z36.array(z36.object({
23346
+ url: z36.string(),
23347
+ alt: z36.string().nullable()
22315
23348
  })),
22316
- variantOptions: z35.array(productVariantOptionDisplaySchema),
22317
- selectedVariantId: z35.string().nullable(),
22318
- selectionLabel: z35.string(),
22319
- actionLabel: z35.string(),
22320
- soldOut: z35.boolean(),
22321
- body: z35.unknown().nullable()
23349
+ variantOptions: z36.array(productVariantOptionDisplaySchema),
23350
+ selectedVariantId: z36.string().nullable(),
23351
+ selectionLabel: z36.string(),
23352
+ actionLabel: z36.string(),
23353
+ soldOut: z36.boolean(),
23354
+ body: z36.unknown().nullable()
22322
23355
  })
22323
23356
  ]);
22324
- passCardDisplaySchema = z35.object({
22325
- id: z35.string(),
22326
- title: z35.string(),
22327
- description: z35.string().nullable(),
22328
- priceLabel: z35.string(),
22329
- creditsLabel: z35.string(),
22330
- perCreditLabel: z35.string().nullable(),
22331
- validityLabel: z35.string().nullable(),
22332
- actionLabel: z35.string()
22333
- });
22334
- membershipCardDisplaySchema = z35.object({
22335
- id: z35.string(),
22336
- title: z35.string(),
22337
- description: z35.string().nullable(),
22338
- priceLabel: z35.string(),
22339
- intervalLabel: z35.string(),
22340
- actionLabel: z35.string()
22341
- });
22342
- passesMembershipsDisplaySchema = z35.object({
22343
- kind: z35.literal("passes-memberships"),
22344
- state: z35.enum(["empty", "ready"]),
22345
- className: z35.string().nullable(),
22346
- layout: z35.enum(["grid", "list"]),
22347
- columns: z35.string(),
22348
- emptyMessage: z35.string(),
22349
- passesHeading: z35.string(),
22350
- membershipsHeading: z35.string(),
22351
- passes: z35.array(passCardDisplaySchema),
22352
- memberships: z35.array(membershipCardDisplaySchema)
22353
- });
22354
- cartLineDisplaySchema = z35.object({
22355
- key: z35.string(),
22356
- title: z35.string(),
22357
- priceLabel: z35.string(),
22358
- quantity: z35.number(),
22359
- quantityEditable: z35.boolean()
22360
- });
22361
- cartDisplaySchema = z35.object({
22362
- kind: z35.literal("cart"),
22363
- state: z35.enum(["empty", "ready"]),
22364
- heading: z35.string().nullable(),
22365
- className: z35.string().nullable(),
22366
- emptyMessage: z35.string(),
22367
- supportText: z35.string().nullable(),
22368
- items: z35.array(cartLineDisplaySchema),
22369
- subtotalLabel: z35.string().nullable(),
22370
- checkoutButtonText: z35.string(),
22371
- clearButtonText: z35.string()
22372
- });
22373
- checkoutDisplaySchema = z35.object({
22374
- kind: z35.literal("checkout"),
22375
- state: z35.enum(["empty", "blocked", "ready"]),
22376
- heading: z35.string().nullable(),
22377
- className: z35.string().nullable(),
22378
- message: z35.string().nullable(),
22379
- submitButtonText: z35.string()
22380
- });
22381
- passesMembershipsHydrationSchema = z35.object({
22382
- passes: z35.array(publicPassProductSchema),
22383
- memberships: z35.array(publicMembershipProductSchema),
22384
- passPurchaseMode: z35.enum(["add_to_cart", "buy_now"])
22385
- });
22386
- productListHydrationSchema = z35.object({
22387
- products: z35.array(publicProductSchema),
22388
- showSummary: z35.boolean(),
22389
- showPrices: z35.boolean(),
22390
- addButtonText: z35.string()
22391
- });
22392
- productDetailHydrationSchema = z35.object({
22393
- products: z35.array(publicProductSchema),
22394
- productId: z35.string().nullable(),
22395
- showSummary: z35.boolean(),
22396
- showBody: z35.boolean(),
22397
- addButtonText: z35.string()
22398
- });
22399
- cartHydrationSchema = z35.object({
22400
- emptyStateText: z35.string(),
22401
- checkoutButtonText: z35.string(),
22402
- clearButtonText: z35.string()
22403
- });
22404
- checkoutHydrationSchema = z35.object({
22405
- emptyStateText: z35.string(),
22406
- submitButtonText: z35.string()
22407
- });
22408
- passesMembershipsRenderSchema = z35.object({
23357
+ passCardDisplaySchema = z36.object({
23358
+ id: z36.string(),
23359
+ title: z36.string(),
23360
+ description: z36.string().nullable(),
23361
+ priceLabel: z36.string(),
23362
+ creditsLabel: z36.string(),
23363
+ perCreditLabel: z36.string().nullable(),
23364
+ validityLabel: z36.string().nullable(),
23365
+ actionLabel: z36.string()
23366
+ });
23367
+ membershipCardDisplaySchema = z36.object({
23368
+ id: z36.string(),
23369
+ title: z36.string(),
23370
+ description: z36.string().nullable(),
23371
+ priceLabel: z36.string(),
23372
+ intervalLabel: z36.string(),
23373
+ actionLabel: z36.string()
23374
+ });
23375
+ passesMembershipsDisplaySchema = z36.object({
23376
+ kind: z36.literal("passes-memberships"),
23377
+ state: z36.enum(["empty", "ready"]),
23378
+ className: z36.string().nullable(),
23379
+ layout: z36.enum(["grid", "list"]),
23380
+ columns: z36.string(),
23381
+ emptyMessage: z36.string(),
23382
+ passesHeading: z36.string(),
23383
+ membershipsHeading: z36.string(),
23384
+ passes: z36.array(passCardDisplaySchema),
23385
+ memberships: z36.array(membershipCardDisplaySchema)
23386
+ });
23387
+ cartLineDisplaySchema = z36.object({
23388
+ key: z36.string(),
23389
+ title: z36.string(),
23390
+ priceLabel: z36.string(),
23391
+ quantity: z36.number(),
23392
+ quantityEditable: z36.boolean()
23393
+ });
23394
+ cartDisplaySchema = z36.object({
23395
+ kind: z36.literal("cart"),
23396
+ state: z36.enum(["empty", "ready"]),
23397
+ heading: z36.string().nullable(),
23398
+ className: z36.string().nullable(),
23399
+ emptyMessage: z36.string(),
23400
+ supportText: z36.string().nullable(),
23401
+ items: z36.array(cartLineDisplaySchema),
23402
+ subtotalLabel: z36.string().nullable(),
23403
+ checkoutButtonText: z36.string(),
23404
+ clearButtonText: z36.string()
23405
+ });
23406
+ checkoutDisplaySchema = z36.object({
23407
+ kind: z36.literal("checkout"),
23408
+ state: z36.enum(["empty", "blocked", "ready"]),
23409
+ heading: z36.string().nullable(),
23410
+ className: z36.string().nullable(),
23411
+ message: z36.string().nullable(),
23412
+ submitButtonText: z36.string()
23413
+ });
23414
+ passesMembershipsHydrationSchema = z36.object({
23415
+ passes: z36.array(publicPassProductSchema),
23416
+ memberships: z36.array(publicMembershipProductSchema),
23417
+ passPurchaseMode: z36.enum(["add_to_cart", "buy_now"])
23418
+ });
23419
+ productListHydrationSchema = z36.object({
23420
+ products: z36.array(publicProductSchema),
23421
+ showSummary: z36.boolean(),
23422
+ showPrices: z36.boolean(),
23423
+ addButtonText: z36.string()
23424
+ });
23425
+ productDetailHydrationSchema = z36.object({
23426
+ products: z36.array(publicProductSchema),
23427
+ productId: z36.string().nullable(),
23428
+ showSummary: z36.boolean(),
23429
+ showBody: z36.boolean(),
23430
+ addButtonText: z36.string()
23431
+ });
23432
+ cartHydrationSchema = z36.object({
23433
+ emptyStateText: z36.string(),
23434
+ checkoutButtonText: z36.string(),
23435
+ clearButtonText: z36.string()
23436
+ });
23437
+ checkoutHydrationSchema = z36.object({
23438
+ emptyStateText: z36.string(),
23439
+ submitButtonText: z36.string()
23440
+ });
23441
+ passesMembershipsRenderSchema = z36.object({
22409
23442
  display: passesMembershipsDisplaySchema,
22410
23443
  hydration: passesMembershipsHydrationSchema
22411
23444
  });
22412
- productListRenderSchema = z35.object({
23445
+ productListRenderSchema = z36.object({
22413
23446
  display: productListDisplaySchema,
22414
23447
  hydration: productListHydrationSchema
22415
23448
  });
22416
- productDetailRenderSchema = z35.object({
23449
+ productDetailRenderSchema = z36.object({
22417
23450
  display: productDetailDisplaySchema,
22418
23451
  hydration: productDetailHydrationSchema
22419
23452
  });
22420
- cartRenderSchema = z35.object({
23453
+ cartRenderSchema = z36.object({
22421
23454
  display: cartDisplaySchema,
22422
23455
  hydration: cartHydrationSchema
22423
23456
  });
22424
- checkoutRenderSchema = z35.object({
23457
+ checkoutRenderSchema = z36.object({
22425
23458
  display: checkoutDisplaySchema,
22426
23459
  hydration: checkoutHydrationSchema
22427
23460
  });
22428
- shopIslandMetaCodec = createZodCodec(z35.object({
22429
- siteId: z35.string().optional(),
22430
- apiBaseUrl: z35.string().optional(),
23461
+ shopIslandMetaCodec = createZodCodec(z36.object({
23462
+ siteId: z36.string().optional(),
23463
+ apiBaseUrl: z36.string().optional(),
22431
23464
  stage: previewStageSchema.optional()
22432
23465
  }));
22433
23466
  shopIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "stage");
@@ -22599,25 +23632,25 @@ var init_shop_interactive = __esm({
22599
23632
  });
22600
23633
 
22601
23634
  // ../blocks/src/system/blocks/event-registration.shared.ts
22602
- import { z as z36 } from "zod";
23635
+ import { z as z37 } from "zod";
22603
23636
  var occurrenceContextSchema;
22604
23637
  var init_event_registration_shared = __esm({
22605
23638
  "../blocks/src/system/blocks/event-registration.shared.ts"() {
22606
23639
  "use strict";
22607
- occurrenceContextSchema = z36.object({
22608
- id: z36.string(),
22609
- seriesId: z36.string(),
22610
- startsAt: z36.string(),
22611
- endsAt: z36.string(),
22612
- timeZone: z36.string(),
22613
- capacityOverride: z36.number().nullable().optional(),
22614
- overrides: z36.record(z36.string(), z36.unknown()).nullable().optional()
23640
+ occurrenceContextSchema = z37.object({
23641
+ id: z37.string(),
23642
+ seriesId: z37.string(),
23643
+ startsAt: z37.string(),
23644
+ endsAt: z37.string(),
23645
+ timeZone: z37.string(),
23646
+ capacityOverride: z37.number().nullable().optional(),
23647
+ overrides: z37.record(z37.string(), z37.unknown()).nullable().optional()
22615
23648
  }).nullable();
22616
23649
  }
22617
23650
  });
22618
23651
 
22619
23652
  // ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
22620
- import { z as z37 } from "zod";
23653
+ import { z as z38 } from "zod";
22621
23654
  function buildCourseRegistrationDisplay(source) {
22622
23655
  return {
22623
23656
  kind: "course-registration",
@@ -22648,72 +23681,72 @@ var init_course_registration_interactive = __esm({
22648
23681
  init_islands();
22649
23682
  init_runtime();
22650
23683
  init_contract_schemas();
22651
- contentEntrySchema2 = z37.object({
22652
- id: z37.string(),
22653
- slug: z37.string(),
22654
- contentTypeSlug: z37.string()
22655
- });
22656
- courseEntrySubrouteContextSchema = z37.union([
22657
- z37.object({
22658
- kind: z37.literal("course-run"),
22659
- run: z37.object({
22660
- courseId: z37.string(),
22661
- seriesId: z37.string(),
22662
- runSlug: z37.string(),
22663
- runName: z37.string().nullable()
23684
+ contentEntrySchema2 = z38.object({
23685
+ id: z38.string(),
23686
+ slug: z38.string(),
23687
+ contentTypeSlug: z38.string()
23688
+ });
23689
+ courseEntrySubrouteContextSchema = z38.union([
23690
+ z38.object({
23691
+ kind: z38.literal("course-run"),
23692
+ run: z38.object({
23693
+ courseId: z38.string(),
23694
+ seriesId: z38.string(),
23695
+ runSlug: z38.string(),
23696
+ runName: z38.string().nullable()
22664
23697
  })
22665
23698
  }),
22666
- z37.object({
22667
- kind: z37.literal("event-occurrence"),
23699
+ z38.object({
23700
+ kind: z38.literal("event-occurrence"),
22668
23701
  occurrence: occurrenceContextSchema
22669
23702
  })
22670
23703
  ]);
22671
- courseRegistrationSourceSchema = z37.object({
22672
- siteId: z37.string().optional(),
22673
- apiBaseUrl: z37.string().optional(),
22674
- portalToken: z37.string().nullable().optional(),
23704
+ courseRegistrationSourceSchema = z38.object({
23705
+ siteId: z38.string().optional(),
23706
+ apiBaseUrl: z38.string().optional(),
23707
+ portalToken: z38.string().nullable().optional(),
22675
23708
  contentEntry: contentEntrySchema2.nullable().optional(),
22676
23709
  entrySubrouteContext: courseEntrySubrouteContextSchema.nullable().optional(),
22677
- courses: z37.array(publicCourseSchema).nullable().optional(),
22678
- className: z37.string().nullable().optional(),
22679
- showSessions: z37.boolean().optional(),
22680
- showPrice: z37.boolean().optional(),
22681
- showCapacity: z37.boolean().optional(),
22682
- showVenue: z37.boolean().optional(),
22683
- successMessage: z37.string().optional(),
22684
- waitlistMessage: z37.string().optional(),
22685
- membershipMessage: z37.string().optional(),
22686
- buttonText: z37.string().nullable().optional(),
23710
+ courses: z38.array(publicCourseSchema).nullable().optional(),
23711
+ className: z38.string().nullable().optional(),
23712
+ showSessions: z38.boolean().optional(),
23713
+ showPrice: z38.boolean().optional(),
23714
+ showCapacity: z38.boolean().optional(),
23715
+ showVenue: z38.boolean().optional(),
23716
+ successMessage: z38.string().optional(),
23717
+ waitlistMessage: z38.string().optional(),
23718
+ membershipMessage: z38.string().optional(),
23719
+ buttonText: z38.string().nullable().optional(),
22687
23720
  buttonVariant: registrationButtonVariantSchema.optional(),
22688
23721
  stage: previewStageSchema.optional()
22689
23722
  });
22690
- courseRegistrationDisplaySchema = z37.object({
22691
- kind: z37.literal("course-registration"),
22692
- state: z37.literal("shell"),
22693
- className: z37.string().nullable(),
22694
- summaryButtonText: z37.string()
23723
+ courseRegistrationDisplaySchema = z38.object({
23724
+ kind: z38.literal("course-registration"),
23725
+ state: z38.literal("shell"),
23726
+ className: z38.string().nullable(),
23727
+ summaryButtonText: z38.string()
22695
23728
  });
22696
- courseRegistrationHydrationSchema = z37.object({
23729
+ courseRegistrationHydrationSchema = z38.object({
22697
23730
  contentEntry: contentEntrySchema2.nullable().optional(),
22698
23731
  entrySubrouteContext: courseEntrySubrouteContextSchema.nullable().optional(),
22699
- courses: z37.array(publicCourseSchema).nullable().optional(),
22700
- showSessions: z37.boolean().optional(),
22701
- showPrice: z37.boolean().optional(),
22702
- showCapacity: z37.boolean().optional(),
22703
- showVenue: z37.boolean().optional(),
22704
- successMessage: z37.string().optional(),
22705
- waitlistMessage: z37.string().optional(),
22706
- membershipMessage: z37.string().optional(),
23732
+ courses: z38.array(publicCourseSchema).nullable().optional(),
23733
+ showSessions: z38.boolean().optional(),
23734
+ showPrice: z38.boolean().optional(),
23735
+ showCapacity: z38.boolean().optional(),
23736
+ showVenue: z38.boolean().optional(),
23737
+ successMessage: z38.string().optional(),
23738
+ waitlistMessage: z38.string().optional(),
23739
+ membershipMessage: z38.string().optional(),
22707
23740
  buttonVariant: registrationButtonVariantSchema.optional()
22708
23741
  });
22709
- courseRegistrationRenderSchema = z37.object({
23742
+ courseRegistrationRenderSchema = z38.object({
22710
23743
  display: courseRegistrationDisplaySchema,
22711
23744
  hydration: courseRegistrationHydrationSchema
22712
23745
  });
22713
- courseRegistrationIslandMetaCodec = createZodCodec(z37.object({
22714
- siteId: z37.string().optional(),
22715
- apiBaseUrl: z37.string().optional(),
22716
- portalToken: z37.string().nullable().optional(),
23746
+ courseRegistrationIslandMetaCodec = createZodCodec(z38.object({
23747
+ siteId: z38.string().optional(),
23748
+ apiBaseUrl: z38.string().optional(),
23749
+ portalToken: z38.string().nullable().optional(),
22717
23750
  stage: previewStageSchema.optional()
22718
23751
  }));
22719
23752
  courseRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
@@ -22761,7 +23794,7 @@ var init_course_registration_interactive = __esm({
22761
23794
  });
22762
23795
 
22763
23796
  // ../blocks/src/system/runtime/nodes/gifting.interactive.ts
22764
- import { z as z38 } from "zod";
23797
+ import { z as z39 } from "zod";
22765
23798
  function buildGiftingDisplay(source) {
22766
23799
  return {
22767
23800
  kind: "gifting",
@@ -22791,71 +23824,71 @@ var init_gifting_interactive = __esm({
22791
23824
  "use strict";
22792
23825
  init_islands();
22793
23826
  init_runtime();
22794
- publicGiftCardOfferSchema = z38.object({
22795
- id: z38.string(),
22796
- kind: z38.literal("gift_card"),
22797
- title: z38.string(),
22798
- description: z38.string().nullable(),
22799
- sortOrder: z38.number().int(),
22800
- giftCard: z38.object({
22801
- fixedDenominations: z38.array(z38.number().int().positive()),
22802
- customAmountEnabled: z38.boolean(),
22803
- customAmountMinCents: z38.number().int().positive(),
22804
- customAmountMaxCents: z38.number().int().positive()
23827
+ publicGiftCardOfferSchema = z39.object({
23828
+ id: z39.string(),
23829
+ kind: z39.literal("gift_card"),
23830
+ title: z39.string(),
23831
+ description: z39.string().nullable(),
23832
+ sortOrder: z39.number().int(),
23833
+ giftCard: z39.object({
23834
+ fixedDenominations: z39.array(z39.number().int().positive()),
23835
+ customAmountEnabled: z39.boolean(),
23836
+ customAmountMinCents: z39.number().int().positive(),
23837
+ customAmountMaxCents: z39.number().int().positive()
22805
23838
  }),
22806
- voucher: z38.null()
23839
+ voucher: z39.null()
22807
23840
  });
22808
- publicVoucherOfferSchema = z38.object({
22809
- id: z38.string(),
22810
- kind: z38.literal("voucher"),
22811
- title: z38.string(),
22812
- description: z38.string().nullable(),
22813
- sortOrder: z38.number().int(),
22814
- giftCard: z38.null(),
22815
- voucher: z38.object({
22816
- purchaseAmountCents: z38.number().int().positive()
23841
+ publicVoucherOfferSchema = z39.object({
23842
+ id: z39.string(),
23843
+ kind: z39.literal("voucher"),
23844
+ title: z39.string(),
23845
+ description: z39.string().nullable(),
23846
+ sortOrder: z39.number().int(),
23847
+ giftCard: z39.null(),
23848
+ voucher: z39.object({
23849
+ purchaseAmountCents: z39.number().int().positive()
22817
23850
  })
22818
23851
  });
22819
- publicGiftingOffersResponseSchema = z38.object({
22820
- currency: z38.string(),
22821
- giftCards: z38.array(publicGiftCardOfferSchema),
22822
- vouchers: z38.array(publicVoucherOfferSchema)
23852
+ publicGiftingOffersResponseSchema = z39.object({
23853
+ currency: z39.string(),
23854
+ giftCards: z39.array(publicGiftCardOfferSchema),
23855
+ vouchers: z39.array(publicVoucherOfferSchema)
22823
23856
  });
22824
- giftingSourceSchema = z38.object({
22825
- siteId: z38.string().optional(),
22826
- apiBaseUrl: z38.string().optional(),
23857
+ giftingSourceSchema = z39.object({
23858
+ siteId: z39.string().optional(),
23859
+ apiBaseUrl: z39.string().optional(),
22827
23860
  offers: publicGiftingOffersResponseSchema.nullable().optional(),
22828
- className: z38.string().nullable().optional(),
22829
- heading: z38.string().nullable().optional(),
22830
- intro: z38.string().nullable().optional(),
22831
- giftCardsHeading: z38.string().nullable().optional(),
22832
- vouchersHeading: z38.string().nullable().optional(),
22833
- emptyStateText: z38.string().nullable().optional(),
22834
- checkoutButtonText: z38.string().nullable().optional(),
22835
- successMessage: z38.string().nullable().optional()
22836
- });
22837
- giftingDisplaySchema = z38.object({
22838
- kind: z38.literal("gifting"),
22839
- state: z38.literal("ready"),
22840
- className: z38.string().nullable(),
22841
- heading: z38.string(),
22842
- intro: z38.string().nullable(),
22843
- giftCardsHeading: z38.string(),
22844
- vouchersHeading: z38.string(),
22845
- emptyStateText: z38.string()
23861
+ className: z39.string().nullable().optional(),
23862
+ heading: z39.string().nullable().optional(),
23863
+ intro: z39.string().nullable().optional(),
23864
+ giftCardsHeading: z39.string().nullable().optional(),
23865
+ vouchersHeading: z39.string().nullable().optional(),
23866
+ emptyStateText: z39.string().nullable().optional(),
23867
+ checkoutButtonText: z39.string().nullable().optional(),
23868
+ successMessage: z39.string().nullable().optional()
23869
+ });
23870
+ giftingDisplaySchema = z39.object({
23871
+ kind: z39.literal("gifting"),
23872
+ state: z39.literal("ready"),
23873
+ className: z39.string().nullable(),
23874
+ heading: z39.string(),
23875
+ intro: z39.string().nullable(),
23876
+ giftCardsHeading: z39.string(),
23877
+ vouchersHeading: z39.string(),
23878
+ emptyStateText: z39.string()
22846
23879
  });
22847
- giftingHydrationSchema = z38.object({
23880
+ giftingHydrationSchema = z39.object({
22848
23881
  offers: publicGiftingOffersResponseSchema.nullable(),
22849
- checkoutButtonText: z38.string(),
22850
- successMessage: z38.string()
23882
+ checkoutButtonText: z39.string(),
23883
+ successMessage: z39.string()
22851
23884
  });
22852
- giftingRenderSchema = z38.object({
23885
+ giftingRenderSchema = z39.object({
22853
23886
  display: giftingDisplaySchema,
22854
23887
  hydration: giftingHydrationSchema
22855
23888
  });
22856
- giftingIslandMetaCodec = createZodCodec(z38.object({
22857
- siteId: z38.string().optional(),
22858
- apiBaseUrl: z38.string().optional()
23889
+ giftingIslandMetaCodec = createZodCodec(z39.object({
23890
+ siteId: z39.string().optional(),
23891
+ apiBaseUrl: z39.string().optional()
22859
23892
  }));
22860
23893
  giftingIslandMetaKeys = defineInteractiveIslandMetaKeys(
22861
23894
  "siteId",
@@ -22890,15 +23923,30 @@ var init_gifting_interactive = __esm({
22890
23923
  });
22891
23924
 
22892
23925
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
22893
- import { z as z39 } from "zod";
23926
+ import { z as z40 } from "zod";
22894
23927
  function buildEventRegistrationDisplay(source) {
22895
23928
  return {
22896
23929
  kind: "event-registration",
22897
- state: "shell",
23930
+ state: "generic-shell",
22898
23931
  className: source.className ?? null,
23932
+ titleText: "Event registration",
23933
+ bodyText: "Preparing dates, tickets, and booking details.",
23934
+ stepLabels: EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS,
22899
23935
  summaryButtonText: source.buttonText?.trim() || "Register"
22900
23936
  };
22901
23937
  }
23938
+ function normalizeEventRegistrationEventInput(value) {
23939
+ if (!isRecord7(value)) {
23940
+ return value;
23941
+ }
23942
+ return {
23943
+ ...value,
23944
+ pricing: resolveRuntimeEventPricing(value)
23945
+ };
23946
+ }
23947
+ function isRecord7(value) {
23948
+ return typeof value === "object" && value !== null && !Array.isArray(value);
23949
+ }
22902
23950
  function buildEventRegistrationInteractiveIslandProps(props2) {
22903
23951
  return buildInteractiveIslandProps({
22904
23952
  runtime: eventRegistrationBlockRuntime,
@@ -22913,68 +23961,86 @@ function buildEventRegistrationInteractiveIslandProps(props2) {
22913
23961
  source: props2
22914
23962
  });
22915
23963
  }
22916
- var contentEntrySchema3, eventRegistrationSourceSchema, eventRegistrationDisplaySchema, eventRegistrationHydrationSchema, eventRegistrationRenderSchema, eventRegistrationIslandMetaCodec, eventRegistrationIslandMetaKeys, eventRegistrationBlockRuntime, eventRegistrationInteractiveIslandPropsCodec;
23964
+ var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS, eventRegistrationGenericDateStepLabel, eventRegistrationGenericTicketsStepLabel, eventRegistrationGenericDetailsStepLabel, contentEntrySchema3, eventRegistrationPublicEventSchema, eventRegistrationSourceSchema, eventRegistrationDisplaySchema, eventRegistrationHydrationSchema, eventRegistrationRenderSchema, eventRegistrationIslandMetaCodec, eventRegistrationIslandMetaKeys, eventRegistrationBlockRuntime, eventRegistrationInteractiveIslandPropsCodec;
22917
23965
  var init_event_registration_interactive = __esm({
22918
23966
  "../blocks/src/system/runtime/nodes/event-registration.interactive.ts"() {
22919
23967
  "use strict";
22920
23968
  init_schemas2();
22921
23969
  init_event_registration_shared();
23970
+ init_pricing2();
22922
23971
  init_islands();
22923
23972
  init_runtime();
22924
23973
  init_contract_schemas();
22925
- contentEntrySchema3 = z39.object({
22926
- id: z39.string(),
22927
- slug: z39.string(),
22928
- contentTypeSlug: z39.string()
22929
- });
22930
- eventRegistrationSourceSchema = z39.object({
22931
- siteId: z39.string().optional(),
22932
- apiBaseUrl: z39.string().optional(),
22933
- portalToken: z39.string().nullable().optional(),
22934
- previewToken: z39.string().nullable().optional(),
23974
+ EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
23975
+ [
23976
+ eventRegistrationGenericDateStepLabel,
23977
+ eventRegistrationGenericTicketsStepLabel,
23978
+ eventRegistrationGenericDetailsStepLabel
23979
+ ] = EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
23980
+ contentEntrySchema3 = z40.object({
23981
+ id: z40.string(),
23982
+ slug: z40.string(),
23983
+ contentTypeSlug: z40.string()
23984
+ });
23985
+ eventRegistrationPublicEventSchema = z40.preprocess(
23986
+ normalizeEventRegistrationEventInput,
23987
+ publicEventSchema
23988
+ );
23989
+ eventRegistrationSourceSchema = z40.object({
23990
+ siteId: z40.string().optional(),
23991
+ apiBaseUrl: z40.string().optional(),
23992
+ portalToken: z40.string().nullable().optional(),
23993
+ previewToken: z40.string().nullable().optional(),
22935
23994
  occurrenceContext: occurrenceContextSchema.optional(),
22936
23995
  contentEntry: contentEntrySchema3.nullable().optional(),
22937
- events: z39.array(publicEventSchema).nullable().optional(),
22938
- className: z39.string().nullable().optional(),
22939
- buttonText: z39.string().nullable().optional(),
22940
- maxTickets: z39.string().nullable().optional(),
22941
- showVenue: z39.boolean().optional(),
22942
- showCapacity: z39.boolean().optional(),
22943
- successMessage: z39.string().optional(),
22944
- waitlistMessage: z39.string().optional(),
23996
+ events: z40.array(eventRegistrationPublicEventSchema).nullable().optional(),
23997
+ className: z40.string().nullable().optional(),
23998
+ buttonText: z40.string().nullable().optional(),
23999
+ maxTickets: z40.string().nullable().optional(),
24000
+ showVenue: z40.boolean().optional(),
24001
+ showCapacity: z40.boolean().optional(),
24002
+ successMessage: z40.string().optional(),
24003
+ waitlistMessage: z40.string().optional(),
22945
24004
  buttonVariant: registrationButtonVariantSchema.optional(),
22946
- spamProtectionEnabled: z39.boolean().optional(),
24005
+ spamProtectionEnabled: z40.boolean().optional(),
22947
24006
  stage: previewStageSchema.optional(),
22948
- supportEmail: z39.string().optional()
22949
- });
22950
- eventRegistrationDisplaySchema = z39.object({
22951
- kind: z39.literal("event-registration"),
22952
- state: z39.literal("shell"),
22953
- className: z39.string().nullable(),
22954
- summaryButtonText: z39.string()
24007
+ supportEmail: z40.string().optional()
24008
+ });
24009
+ eventRegistrationDisplaySchema = z40.object({
24010
+ kind: z40.literal("event-registration"),
24011
+ state: z40.literal("generic-shell"),
24012
+ className: z40.string().nullable(),
24013
+ titleText: z40.string(),
24014
+ bodyText: z40.string(),
24015
+ stepLabels: z40.tuple([
24016
+ z40.literal(eventRegistrationGenericDateStepLabel),
24017
+ z40.literal(eventRegistrationGenericTicketsStepLabel),
24018
+ z40.literal(eventRegistrationGenericDetailsStepLabel)
24019
+ ]),
24020
+ summaryButtonText: z40.string()
22955
24021
  });
22956
- eventRegistrationHydrationSchema = z39.object({
24022
+ eventRegistrationHydrationSchema = z40.object({
22957
24023
  occurrenceContext: occurrenceContextSchema.optional(),
22958
24024
  contentEntry: contentEntrySchema3.nullable().optional(),
22959
- events: z39.array(publicEventSchema).nullable().optional(),
22960
- maxTickets: z39.string().optional(),
22961
- showVenue: z39.boolean().optional(),
22962
- showCapacity: z39.boolean().optional(),
22963
- successMessage: z39.string().optional(),
22964
- waitlistMessage: z39.string().optional(),
24025
+ events: z40.array(eventRegistrationPublicEventSchema).nullable().optional(),
24026
+ maxTickets: z40.string().optional(),
24027
+ showVenue: z40.boolean().optional(),
24028
+ showCapacity: z40.boolean().optional(),
24029
+ successMessage: z40.string().optional(),
24030
+ waitlistMessage: z40.string().optional(),
22965
24031
  buttonVariant: registrationButtonVariantSchema.optional(),
22966
- spamProtectionEnabled: z39.boolean().optional(),
22967
- supportEmail: z39.string().optional()
24032
+ spamProtectionEnabled: z40.boolean().optional(),
24033
+ supportEmail: z40.string().optional()
22968
24034
  });
22969
- eventRegistrationRenderSchema = z39.object({
24035
+ eventRegistrationRenderSchema = z40.object({
22970
24036
  display: eventRegistrationDisplaySchema,
22971
24037
  hydration: eventRegistrationHydrationSchema
22972
24038
  });
22973
- eventRegistrationIslandMetaCodec = createZodCodec(z39.object({
22974
- siteId: z39.string().optional(),
22975
- apiBaseUrl: z39.string().optional(),
22976
- portalToken: z39.string().nullable().optional(),
22977
- previewToken: z39.string().nullable().optional(),
24039
+ eventRegistrationIslandMetaCodec = createZodCodec(z40.object({
24040
+ siteId: z40.string().optional(),
24041
+ apiBaseUrl: z40.string().optional(),
24042
+ portalToken: z40.string().nullable().optional(),
24043
+ previewToken: z40.string().nullable().optional(),
22978
24044
  stage: previewStageSchema.optional()
22979
24045
  }));
22980
24046
  eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
@@ -23058,7 +24124,7 @@ var init_form_layout = __esm({
23058
24124
  });
23059
24125
 
23060
24126
  // ../blocks/src/system/runtime/nodes/form.interactive.ts
23061
- import { z as z41 } from "zod";
24127
+ import { z as z42 } from "zod";
23062
24128
  function buildFormDisplay(source) {
23063
24129
  const form2 = source.value ?? null;
23064
24130
  const fields = form2?.schemaJson?.fields;
@@ -23092,75 +24158,75 @@ var init_form_interactive = __esm({
23092
24158
  init_islands();
23093
24159
  init_runtime();
23094
24160
  init_form_layout();
23095
- formFieldSchema = z41.object({
23096
- id: z41.string(),
23097
- label: z41.string().optional(),
23098
- type: z41.string().optional(),
23099
- required: z41.boolean().optional(),
23100
- placeholder: z41.string().optional(),
23101
- helpText: z41.string().optional(),
23102
- layout: z41.object({
23103
- width: z41.enum(["full", "half"]).optional()
24161
+ formFieldSchema = z42.object({
24162
+ id: z42.string(),
24163
+ label: z42.string().optional(),
24164
+ type: z42.string().optional(),
24165
+ required: z42.boolean().optional(),
24166
+ placeholder: z42.string().optional(),
24167
+ helpText: z42.string().optional(),
24168
+ layout: z42.object({
24169
+ width: z42.enum(["full", "half"]).optional()
23104
24170
  }).optional(),
23105
- rows: z41.number().optional(),
23106
- options: z41.array(z41.object({
23107
- value: z41.string(),
23108
- label: z41.string()
24171
+ rows: z42.number().optional(),
24172
+ options: z42.array(z42.object({
24173
+ value: z42.string(),
24174
+ label: z42.string()
23109
24175
  })).optional(),
23110
- multiple: z41.boolean().optional(),
23111
- minLength: z41.number().optional(),
23112
- maxLength: z41.number().optional(),
23113
- pattern: z41.string().optional(),
23114
- min: z41.number().optional(),
23115
- max: z41.number().optional()
23116
- });
23117
- formRecordSchema = z41.object({
23118
- id: z41.string(),
23119
- schemaJson: z41.object({
23120
- fields: z41.array(formFieldSchema).optional()
24176
+ multiple: z42.boolean().optional(),
24177
+ minLength: z42.number().optional(),
24178
+ maxLength: z42.number().optional(),
24179
+ pattern: z42.string().optional(),
24180
+ min: z42.number().optional(),
24181
+ max: z42.number().optional()
24182
+ });
24183
+ formRecordSchema = z42.object({
24184
+ id: z42.string(),
24185
+ schemaJson: z42.object({
24186
+ fields: z42.array(formFieldSchema).optional()
23121
24187
  }).optional()
23122
24188
  });
23123
- formFieldGroupSchema = z41.discriminatedUnion("type", [
23124
- z41.object({
23125
- type: z41.literal("single"),
23126
- key: z41.string(),
24189
+ formFieldGroupSchema = z42.discriminatedUnion("type", [
24190
+ z42.object({
24191
+ type: z42.literal("single"),
24192
+ key: z42.string(),
23127
24193
  field: formFieldSchema
23128
24194
  }),
23129
- z41.object({
23130
- type: z41.literal("row"),
23131
- key: z41.string(),
23132
- fields: z41.tuple([formFieldSchema, formFieldSchema])
24195
+ z42.object({
24196
+ type: z42.literal("row"),
24197
+ key: z42.string(),
24198
+ fields: z42.tuple([formFieldSchema, formFieldSchema])
23133
24199
  })
23134
24200
  ]);
23135
- formSourceSchema = z41.object({
24201
+ formSourceSchema = z42.object({
23136
24202
  value: formRecordSchema.optional(),
23137
- siteId: z41.string().optional(),
23138
- apiBaseUrl: z41.string().optional(),
23139
- submitLabel: z41.string().optional(),
23140
- successMessage: z41.string().nullable().optional(),
23141
- className: z41.string().optional(),
23142
- spamProtectionEnabled: z41.boolean().optional()
23143
- });
23144
- formDisplaySchema = z41.object({
23145
- kind: z41.literal("form"),
23146
- state: z41.enum(["missing", "ready"]),
23147
- className: z41.string().nullable(),
23148
- formId: z41.string().nullable(),
23149
- submitLabel: z41.string(),
23150
- successMessage: z41.string().nullable(),
24203
+ siteId: z42.string().optional(),
24204
+ apiBaseUrl: z42.string().optional(),
24205
+ submitLabel: z42.string().optional(),
24206
+ successMessage: z42.string().nullable().optional(),
24207
+ className: z42.string().optional(),
24208
+ spamProtectionEnabled: z42.boolean().optional()
24209
+ });
24210
+ formDisplaySchema = z42.object({
24211
+ kind: z42.literal("form"),
24212
+ state: z42.enum(["missing", "ready"]),
24213
+ className: z42.string().nullable(),
24214
+ formId: z42.string().nullable(),
24215
+ submitLabel: z42.string(),
24216
+ successMessage: z42.string().nullable(),
23151
24217
  form: formRecordSchema.nullable(),
23152
- groups: z41.array(formFieldGroupSchema)
24218
+ groups: z42.array(formFieldGroupSchema)
23153
24219
  });
23154
- formHydrationSchema = z41.object({
23155
- spamProtectionEnabled: z41.boolean().optional()
24220
+ formHydrationSchema = z42.object({
24221
+ spamProtectionEnabled: z42.boolean().optional()
23156
24222
  });
23157
- formRenderSchema = z41.object({
24223
+ formRenderSchema = z42.object({
23158
24224
  display: formDisplaySchema,
23159
24225
  hydration: formHydrationSchema
23160
24226
  });
23161
- formIslandMetaCodec = createZodCodec(z41.object({
23162
- siteId: z41.string().optional(),
23163
- apiBaseUrl: z41.string().optional()
24227
+ formIslandMetaCodec = createZodCodec(z42.object({
24228
+ siteId: z42.string().optional(),
24229
+ apiBaseUrl: z42.string().optional()
23164
24230
  }));
23165
24231
  formIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl");
23166
24232
  formBlockRuntime = defineProgressiveBlockRuntime({
@@ -23190,7 +24256,7 @@ var init_form_interactive = __esm({
23190
24256
  });
23191
24257
 
23192
24258
  // ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
23193
- import { z as z43 } from "zod";
24259
+ import { z as z44 } from "zod";
23194
24260
  function buildEventCalendarDisplay(source) {
23195
24261
  const listLayout = source.listLayout ?? source.layout ?? "stack";
23196
24262
  return {
@@ -23306,14 +24372,14 @@ var init_EventCalendar_interactive = __esm({
23306
24372
  init_shared2();
23307
24373
  init_contract_schemas();
23308
24374
  init_listOptions();
23309
- eventBlockKindSchema2 = z43.enum(eventBlockKindValues);
23310
- eventSurfaceScopeSchema2 = z43.enum(eventSurfaceScopeValues);
23311
- eventScheduleScopeSchema3 = z43.enum(eventScheduleScopeValues);
23312
- eventCalendarSourceSchema = z43.object(
24375
+ eventBlockKindSchema2 = z44.enum(eventBlockKindValues);
24376
+ eventSurfaceScopeSchema2 = z44.enum(eventSurfaceScopeValues);
24377
+ eventScheduleScopeSchema3 = z44.enum(eventScheduleScopeValues);
24378
+ eventCalendarSourceSchema = z44.object(
23313
24379
  {
23314
- events: z43.array(publicEventSchema).nullable().optional(),
23315
- siteId: z43.string(),
23316
- apiBaseUrl: z43.string().optional(),
24380
+ events: z44.array(publicEventSchema).nullable().optional(),
24381
+ siteId: z44.string(),
24382
+ apiBaseUrl: z44.string().optional(),
23317
24383
  stage: previewStageSchema.optional(),
23318
24384
  variant: eventCalendarDisplayModeSchema.nullable().optional(),
23319
24385
  displayMode: eventCalendarDisplayModeSchema.nullable().optional(),
@@ -23321,78 +24387,78 @@ var init_EventCalendar_interactive = __esm({
23321
24387
  listColumns: columnOptionSchema.optional(),
23322
24388
  layout: eventLayoutSchema.optional(),
23323
24389
  columns: columnOptionSchema.optional(),
23324
- eventsPerPage: z43.string().optional(),
23325
- paginationMode: z43.enum(["loadMore", "seeAllLink"]).optional(),
23326
- seeAllUrl: z43.string().optional(),
23327
- loadMoreText: z43.string().optional(),
24390
+ eventsPerPage: z44.string().optional(),
24391
+ paginationMode: z44.enum(["loadMore", "seeAllLink"]).optional(),
24392
+ seeAllUrl: z44.string().optional(),
24393
+ loadMoreText: z44.string().optional(),
23328
24394
  startOfWeek: weekStartSchema.optional(),
23329
24395
  calendarTabViews: calendarTabViewsSchema.optional(),
23330
- showFilters: z43.boolean().nullable().optional(),
24396
+ showFilters: z44.boolean().nullable().optional(),
23331
24397
  showCategoryFilter: filterAutoShowSchema.optional(),
23332
- showVenueFilter: z43.boolean().nullable().optional(),
23333
- showStaffFilter: z43.boolean().nullable().optional(),
24398
+ showVenueFilter: z44.boolean().nullable().optional(),
24399
+ showStaffFilter: z44.boolean().nullable().optional(),
23334
24400
  kind: eventBlockKindSchema2.nullable().optional(),
23335
24401
  eventSurface: eventSurfaceScopeSchema2.nullable().optional(),
23336
- filterEventPresets: z43.union([z43.string(), z43.array(z43.string())]).nullable().optional(),
24402
+ filterEventPresets: z44.union([z44.string(), z44.array(z44.string())]).nullable().optional(),
23337
24403
  scheduleScope: eventScheduleScopeSchema3.nullable().optional(),
23338
- filterCategoryIds: z43.union([z43.string(), z43.array(z43.string())]).nullable().optional(),
23339
- filterStaffMemberId: z43.string().nullable().optional(),
23340
- filterVenueId: z43.string().nullable().optional(),
24404
+ filterCategoryIds: z44.union([z44.string(), z44.array(z44.string())]).nullable().optional(),
24405
+ filterStaffMemberId: z44.string().nullable().optional(),
24406
+ filterVenueId: z44.string().nullable().optional(),
23341
24407
  buttonVariant: eventButtonVariantSchema.optional(),
23342
- buttonText: z43.string().optional(),
23343
- showVenue: z43.boolean().nullable().optional(),
23344
- showMap: z43.boolean().nullable().optional(),
23345
- showCapacity: z43.boolean().nullable().optional(),
23346
- emptyMessage: z43.string().optional(),
23347
- className: z43.string().optional()
24408
+ buttonText: z44.string().optional(),
24409
+ showVenue: z44.boolean().nullable().optional(),
24410
+ showMap: z44.boolean().nullable().optional(),
24411
+ showCapacity: z44.boolean().nullable().optional(),
24412
+ emptyMessage: z44.string().optional(),
24413
+ className: z44.string().optional()
23348
24414
  }
23349
24415
  );
23350
- eventCalendarDisplaySchema = z43.object({
23351
- kind: z43.literal("event-calendar"),
24416
+ eventCalendarDisplaySchema = z44.object({
24417
+ kind: z44.literal("event-calendar"),
23352
24418
  displayMode: eventCalendarDisplayModeSchema,
23353
- className: z43.string().nullable(),
23354
- events: z43.array(publicEventSchema),
24419
+ className: z44.string().nullable(),
24420
+ events: z44.array(publicEventSchema),
23355
24421
  listLayout: eventLayoutSchema,
23356
24422
  listColumns: columnOptionSchema,
23357
24423
  eventsPerPage: eventPageSizeSchema,
23358
24424
  paginationAction: eventListPaginationActionSchema,
23359
24425
  startOfWeek: weekStartSchema,
23360
24426
  calendarTabViews: calendarTabViewsSchema,
23361
- showFilters: z43.boolean(),
24427
+ showFilters: z44.boolean(),
23362
24428
  showCategoryFilter: filterAutoShowSchema,
23363
- showVenueFilter: z43.boolean(),
23364
- showStaffFilter: z43.boolean(),
24429
+ showVenueFilter: z44.boolean(),
24430
+ showStaffFilter: z44.boolean(),
23365
24431
  eventKind: eventBlockKindSchema2,
23366
24432
  eventSurface: eventSurfaceScopeSchema2,
23367
- filterEventPresets: z43.string().nullable(),
24433
+ filterEventPresets: z44.string().nullable(),
23368
24434
  scheduleScope: eventScheduleScopeSchema3,
23369
- filterCategoryIds: z43.string().nullable(),
23370
- filterStaffMemberId: z43.string().nullable(),
23371
- filterVenueId: z43.string().nullable(),
24435
+ filterCategoryIds: z44.string().nullable(),
24436
+ filterStaffMemberId: z44.string().nullable(),
24437
+ filterVenueId: z44.string().nullable(),
23372
24438
  buttonVariant: eventButtonVariantSchema,
23373
- buttonText: z43.string(),
23374
- showVenue: z43.boolean(),
23375
- showMap: z43.boolean(),
23376
- showCapacity: z43.boolean(),
23377
- emptyMessage: z43.string()
23378
- });
23379
- eventCalendarHydrationSchema = z43.object({
23380
- siteId: z43.string(),
24439
+ buttonText: z44.string(),
24440
+ showVenue: z44.boolean(),
24441
+ showMap: z44.boolean(),
24442
+ showCapacity: z44.boolean(),
24443
+ emptyMessage: z44.string()
24444
+ });
24445
+ eventCalendarHydrationSchema = z44.object({
24446
+ siteId: z44.string(),
23381
24447
  stage: previewStageSchema.optional(),
23382
- prefetchedEvents: z43.boolean(),
24448
+ prefetchedEvents: z44.boolean(),
23383
24449
  eventKind: eventBlockKindSchema2,
23384
24450
  eventSurface: eventSurfaceScopeSchema2,
23385
- filterEventPresets: z43.string().nullable(),
24451
+ filterEventPresets: z44.string().nullable(),
23386
24452
  scheduleScope: eventScheduleScopeSchema3
23387
24453
  });
23388
- eventCalendarRenderSchema = z43.object({
24454
+ eventCalendarRenderSchema = z44.object({
23389
24455
  display: eventCalendarDisplaySchema,
23390
24456
  hydration: eventCalendarHydrationSchema
23391
24457
  });
23392
24458
  eventCalendarIslandMetaCodec = createZodCodec(
23393
- z43.object({
23394
- siteId: z43.string(),
23395
- apiBaseUrl: z43.string().optional(),
24459
+ z44.object({
24460
+ siteId: z44.string(),
24461
+ apiBaseUrl: z44.string().optional(),
23396
24462
  stage: previewStageSchema.optional()
23397
24463
  })
23398
24464
  );
@@ -23435,7 +24501,7 @@ var init_EventCalendar_interactive = __esm({
23435
24501
  });
23436
24502
 
23437
24503
  // ../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts
23438
- import { z as z44 } from "zod";
24504
+ import { z as z45 } from "zod";
23439
24505
  function buildEventListingInteractiveIslandProps(props2) {
23440
24506
  return buildInteractiveIslandProps({
23441
24507
  runtime: eventListingBlockRuntime,
@@ -23460,89 +24526,89 @@ var init_EventListing_interactive = __esm({
23460
24526
  init_shared2();
23461
24527
  init_contract_schemas();
23462
24528
  init_listOptions();
23463
- legacyEventCardVariantSchema = z44.enum(["variant1", "variant2"]);
23464
- eventCardVariantInputSchema = z44.union([
24529
+ legacyEventCardVariantSchema = z45.enum(["variant1", "variant2"]);
24530
+ eventCardVariantInputSchema = z45.union([
23465
24531
  cardVariantRoleSchema,
23466
24532
  legacyEventCardVariantSchema
23467
24533
  ]);
23468
- cardOrientationSchema = z44.enum(["vertical", "horizontal"]);
23469
- eventBlockKindSchema3 = z44.enum(eventBlockKindValues);
23470
- eventSurfaceScopeSchema3 = z44.enum(eventSurfaceScopeValues);
23471
- eventScheduleScopeSchema4 = z44.enum(eventScheduleScopeValues);
23472
- eventListingSourceSchema = z44.object({
23473
- events: z44.array(publicEventSchema).nullable().optional(),
23474
- siteId: z44.string(),
23475
- apiBaseUrl: z44.string().optional(),
24534
+ cardOrientationSchema = z45.enum(["vertical", "horizontal"]);
24535
+ eventBlockKindSchema3 = z45.enum(eventBlockKindValues);
24536
+ eventSurfaceScopeSchema3 = z45.enum(eventSurfaceScopeValues);
24537
+ eventScheduleScopeSchema4 = z45.enum(eventScheduleScopeValues);
24538
+ eventListingSourceSchema = z45.object({
24539
+ events: z45.array(publicEventSchema).nullable().optional(),
24540
+ siteId: z45.string(),
24541
+ apiBaseUrl: z45.string().optional(),
23476
24542
  stage: previewStageSchema.optional(),
23477
24543
  layout: eventLayoutSchema.optional(),
23478
24544
  columns: columnOptionSchema.optional(),
23479
- eventsPerPage: z44.string().optional(),
23480
- paginationMode: z44.enum(["loadMore", "seeAllLink"]).optional(),
23481
- seeAllUrl: z44.string().optional(),
23482
- loadMoreText: z44.string().optional(),
24545
+ eventsPerPage: z45.string().optional(),
24546
+ paginationMode: z45.enum(["loadMore", "seeAllLink"]).optional(),
24547
+ seeAllUrl: z45.string().optional(),
24548
+ loadMoreText: z45.string().optional(),
23483
24549
  cardVariant: eventCardVariantInputSchema.optional(),
23484
24550
  buttonVariant: eventButtonVariantSchema.optional(),
23485
- buttonText: z44.string().optional(),
23486
- showVenue: z44.boolean().optional(),
23487
- showMap: z44.boolean().optional(),
23488
- showCapacity: z44.boolean().optional(),
23489
- emptyMessage: z44.string().optional(),
23490
- className: z44.string().optional(),
23491
- showFilters: z44.boolean().nullable().optional(),
24551
+ buttonText: z45.string().optional(),
24552
+ showVenue: z45.boolean().optional(),
24553
+ showMap: z45.boolean().optional(),
24554
+ showCapacity: z45.boolean().optional(),
24555
+ emptyMessage: z45.string().optional(),
24556
+ className: z45.string().optional(),
24557
+ showFilters: z45.boolean().nullable().optional(),
23492
24558
  showCategoryFilter: filterAutoShowSchema.optional(),
23493
- showVenueFilter: z44.boolean().nullable().optional(),
23494
- showStaffFilter: z44.boolean().nullable().optional(),
24559
+ showVenueFilter: z45.boolean().nullable().optional(),
24560
+ showStaffFilter: z45.boolean().nullable().optional(),
23495
24561
  eventKind: eventBlockKindSchema3.nullable().optional(),
23496
24562
  eventSurface: eventSurfaceScopeSchema3.nullable().optional(),
23497
- filterEventPresets: z44.union([z44.string(), z44.array(z44.string())]).nullable().optional(),
24563
+ filterEventPresets: z45.union([z45.string(), z45.array(z45.string())]).nullable().optional(),
23498
24564
  scheduleScope: eventScheduleScopeSchema4.nullable().optional(),
23499
- filterCategoryIds: z44.string().nullable().optional(),
23500
- filterStaffMemberId: z44.string().nullable().optional(),
23501
- filterVenueId: z44.string().nullable().optional()
24565
+ filterCategoryIds: z45.string().nullable().optional(),
24566
+ filterStaffMemberId: z45.string().nullable().optional(),
24567
+ filterVenueId: z45.string().nullable().optional()
23502
24568
  });
23503
- eventListingDisplaySchema = z44.object({
23504
- kind: z44.literal("event-listing"),
23505
- state: z44.enum(["loading", "empty", "ready"]),
24569
+ eventListingDisplaySchema = z45.object({
24570
+ kind: z45.literal("event-listing"),
24571
+ state: z45.enum(["loading", "empty", "ready"]),
23506
24572
  listLayout: eventLayoutSchema,
23507
- className: z44.string().nullable(),
23508
- emptyMessage: z44.string(),
23509
- loadingMessage: z44.string(),
23510
- containerClass: z44.string(),
24573
+ className: z45.string().nullable(),
24574
+ emptyMessage: z45.string(),
24575
+ loadingMessage: z45.string(),
24576
+ containerClass: z45.string(),
23511
24577
  cardVariant: cardVariantRoleSchema,
23512
24578
  buttonVariant: eventButtonVariantSchema,
23513
- buttonText: z44.string(),
23514
- showVenue: z44.boolean(),
23515
- showMap: z44.boolean(),
23516
- showCapacity: z44.boolean(),
24579
+ buttonText: z45.string(),
24580
+ showVenue: z45.boolean(),
24581
+ showMap: z45.boolean(),
24582
+ showCapacity: z45.boolean(),
23517
24583
  orientation: cardOrientationSchema,
23518
- events: z44.array(publicEventSchema)
24584
+ events: z45.array(publicEventSchema)
23519
24585
  });
23520
- eventListingHydrationSchema = z44.object({
23521
- siteId: z44.string(),
24586
+ eventListingHydrationSchema = z45.object({
24587
+ siteId: z45.string(),
23522
24588
  stage: previewStageSchema.optional(),
23523
24589
  eventsPerPage: eventPageSizeSchema,
23524
24590
  paginationAction: eventListPaginationActionSchema,
23525
- showFilters: z44.boolean(),
24591
+ showFilters: z45.boolean(),
23526
24592
  showCategoryFilter: filterAutoShowSchema,
23527
- showVenueFilter: z44.boolean(),
23528
- showStaffFilter: z44.boolean(),
24593
+ showVenueFilter: z45.boolean(),
24594
+ showStaffFilter: z45.boolean(),
23529
24595
  eventKind: eventBlockKindSchema3,
23530
24596
  eventSurface: eventSurfaceScopeSchema3,
23531
- filterEventPresets: z44.string().nullable(),
24597
+ filterEventPresets: z45.string().nullable(),
23532
24598
  scheduleScope: eventScheduleScopeSchema4,
23533
- filterCategoryIds: z44.string().nullable().optional(),
23534
- filterStaffMemberId: z44.string().nullable().optional(),
23535
- filterVenueId: z44.string().nullable().optional(),
23536
- fetchInitialEventsOnMount: z44.boolean()
24599
+ filterCategoryIds: z45.string().nullable().optional(),
24600
+ filterStaffMemberId: z45.string().nullable().optional(),
24601
+ filterVenueId: z45.string().nullable().optional(),
24602
+ fetchInitialEventsOnMount: z45.boolean()
23537
24603
  });
23538
- eventListingRenderSchema = z44.object({
24604
+ eventListingRenderSchema = z45.object({
23539
24605
  display: eventListingDisplaySchema,
23540
24606
  hydration: eventListingHydrationSchema
23541
24607
  });
23542
24608
  eventListingIslandMetaCodec = createZodCodec(
23543
- z44.object({
23544
- siteId: z44.string(),
23545
- apiBaseUrl: z44.string().optional(),
24609
+ z45.object({
24610
+ siteId: z45.string(),
24611
+ apiBaseUrl: z45.string().optional(),
23546
24612
  stage: previewStageSchema.optional()
23547
24613
  })
23548
24614
  );
@@ -23682,7 +24748,7 @@ var init_newsletter_form_types = __esm({
23682
24748
  });
23683
24749
 
23684
24750
  // ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
23685
- import { z as z45 } from "zod";
24751
+ import { z as z46 } from "zod";
23686
24752
  function buildNewsletterDisplay(source) {
23687
24753
  const preset = source.preset ?? "emailOnly";
23688
24754
  const includePhone = source.includePhone ?? false;
@@ -23713,49 +24779,49 @@ var init_newsletter_form_interactive = __esm({
23713
24779
  init_islands();
23714
24780
  init_runtime();
23715
24781
  init_newsletter_form_types();
23716
- newsletterPresetSchema = z45.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
23717
- newsletterFieldSchema = z45.object({
23718
- id: z45.string(),
23719
- type: z45.enum(["email", "text"]),
23720
- label: z45.string(),
23721
- required: z45.boolean(),
23722
- placeholder: z45.string().optional()
23723
- });
23724
- newsletterSourceSchema = z45.object({
23725
- siteId: z45.string().optional(),
23726
- apiBaseUrl: z45.string().optional(),
23727
- listId: z45.string().nullable().optional(),
24782
+ newsletterPresetSchema = z46.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
24783
+ newsletterFieldSchema = z46.object({
24784
+ id: z46.string(),
24785
+ type: z46.enum(["email", "text"]),
24786
+ label: z46.string(),
24787
+ required: z46.boolean(),
24788
+ placeholder: z46.string().optional()
24789
+ });
24790
+ newsletterSourceSchema = z46.object({
24791
+ siteId: z46.string().optional(),
24792
+ apiBaseUrl: z46.string().optional(),
24793
+ listId: z46.string().nullable().optional(),
23728
24794
  preset: newsletterPresetSchema.optional(),
23729
- includePhone: z45.boolean().optional(),
23730
- buttonLabel: z45.string().nullable().optional(),
23731
- successMessage: z45.string().nullable().optional(),
23732
- privacyNote: z45.string().nullable().optional(),
23733
- tags: z45.string().nullable().optional(),
23734
- spamProtectionEnabled: z45.boolean().optional(),
23735
- className: z45.string().nullable().optional()
23736
- });
23737
- newsletterDisplaySchema = z45.object({
23738
- kind: z45.literal("newsletter-form"),
23739
- className: z45.string().nullable(),
23740
- buttonLabel: z45.string(),
23741
- successMessage: z45.string().nullable(),
23742
- privacyNote: z45.string().nullable(),
23743
- fields: z45.array(newsletterFieldSchema)
23744
- });
23745
- newsletterHydrationSchema = z45.object({
23746
- listId: z45.string().nullable().optional(),
24795
+ includePhone: z46.boolean().optional(),
24796
+ buttonLabel: z46.string().nullable().optional(),
24797
+ successMessage: z46.string().nullable().optional(),
24798
+ privacyNote: z46.string().nullable().optional(),
24799
+ tags: z46.string().nullable().optional(),
24800
+ spamProtectionEnabled: z46.boolean().optional(),
24801
+ className: z46.string().nullable().optional()
24802
+ });
24803
+ newsletterDisplaySchema = z46.object({
24804
+ kind: z46.literal("newsletter-form"),
24805
+ className: z46.string().nullable(),
24806
+ buttonLabel: z46.string(),
24807
+ successMessage: z46.string().nullable(),
24808
+ privacyNote: z46.string().nullable(),
24809
+ fields: z46.array(newsletterFieldSchema)
24810
+ });
24811
+ newsletterHydrationSchema = z46.object({
24812
+ listId: z46.string().nullable().optional(),
23747
24813
  preset: newsletterPresetSchema,
23748
- includePhone: z45.boolean(),
23749
- tags: z45.string().nullable().optional(),
23750
- spamProtectionEnabled: z45.boolean().optional()
24814
+ includePhone: z46.boolean(),
24815
+ tags: z46.string().nullable().optional(),
24816
+ spamProtectionEnabled: z46.boolean().optional()
23751
24817
  });
23752
- newsletterRenderSchema = z45.object({
24818
+ newsletterRenderSchema = z46.object({
23753
24819
  display: newsletterDisplaySchema,
23754
24820
  hydration: newsletterHydrationSchema
23755
24821
  });
23756
- newsletterIslandMetaCodec = createZodCodec(z45.object({
23757
- siteId: z45.string().optional(),
23758
- apiBaseUrl: z45.string().optional()
24822
+ newsletterIslandMetaCodec = createZodCodec(z46.object({
24823
+ siteId: z46.string().optional(),
24824
+ apiBaseUrl: z46.string().optional()
23759
24825
  }));
23760
24826
  newsletterIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl");
23761
24827
  newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
@@ -24193,7 +25259,7 @@ function ze() {
24193
25259
  /* @__PURE__ */ Te(P)
24194
25260
  );
24195
25261
  }
24196
- function z48(e) {
25262
+ function z49(e) {
24197
25263
  if (L) {
24198
25264
  if (/* @__PURE__ */ Te(P) !== null)
24199
25265
  throw Tt(), Je;
@@ -26222,12 +27288,12 @@ function ha(e, t) {
26222
27288
  var mt = we(Dr, 2);
26223
27289
  let Pr;
26224
27290
  var We = X2(mt);
26225
- en(We), We.__change = ui, z48(mt);
27291
+ en(We), We.__change = ui, z49(mt);
26226
27292
  var Ut = we(mt, 2), wi = X2(Ut);
26227
27293
  {
26228
27294
  var pi = (n) => {
26229
27295
  var u = na(), _ = Gr(u), y = X2(_);
26230
- Ge(y, () => c(re).verified), z48(_);
27296
+ Ge(y, () => c(re).verified), z49(_);
26231
27297
  var T = we(_, 2);
26232
27298
  en(T), Pe(() => {
26233
27299
  se(T, "name", V()), jo(T, c(Le));
@@ -26236,10 +27302,10 @@ function ha(e, t) {
26236
27302
  {
26237
27303
  var _ = (T) => {
26238
27304
  var E = ia(), p = X2(E);
26239
- Ge(p, () => c(re).verifying), z48(E), ne(T, E);
27305
+ Ge(p, () => c(re).verifying), z49(E), ne(T, E);
26240
27306
  }, y = (T) => {
26241
27307
  var E = oa(), p = X2(E);
26242
- Ge(p, () => c(re).label), z48(E), Pe(() => se(E, "for", c(cr))), ne(T, E);
27308
+ Ge(p, () => c(re).label), z49(E), Pe(() => se(E, "for", c(cr))), ne(T, E);
26243
27309
  };
26244
27310
  $e(
26245
27311
  n,
@@ -26254,18 +27320,18 @@ function ha(e, t) {
26254
27320
  c(C) === b.VERIFIED ? n(pi) : n(bi, false);
26255
27321
  });
26256
27322
  }
26257
- z48(Ut);
27323
+ z49(Ut);
26258
27324
  var yi = we(Ut, 2);
26259
27325
  {
26260
27326
  var Ei = (n) => {
26261
27327
  var u = aa(), _ = X2(u);
26262
- se(_, "href", sr), z48(u), Pe(() => se(_, "aria-label", c(re).ariaLinkLabel)), ne(n, u);
27328
+ se(_, "href", sr), z49(u), Pe(() => se(_, "aria-label", c(re).ariaLinkLabel)), ne(n, u);
26263
27329
  };
26264
27330
  $e(yi, (n) => {
26265
27331
  (N() !== true || c(Dt)) && n(Ei);
26266
27332
  });
26267
27333
  }
26268
- z48(Mt);
27334
+ z49(Mt);
26269
27335
  var Or = we(Mt, 2);
26270
27336
  {
26271
27337
  var xi = (n) => {
@@ -26273,16 +27339,16 @@ function ha(e, t) {
26273
27339
  {
26274
27340
  var y = (E) => {
26275
27341
  var p = la(), x = X2(p);
26276
- Ge(x, () => c(re).expired), z48(p), Pe(() => se(p, "title", c(He))), ne(E, p);
27342
+ Ge(x, () => c(re).expired), z49(p), Pe(() => se(p, "title", c(He))), ne(E, p);
26277
27343
  }, T = (E) => {
26278
27344
  var p = sa(), x = X2(p);
26279
- Ge(x, () => c(re).error), z48(p), Pe(() => se(p, "title", c(He))), ne(E, p);
27345
+ Ge(x, () => c(re).error), z49(p), Pe(() => se(p, "title", c(He))), ne(E, p);
26280
27346
  };
26281
27347
  $e(_, (E) => {
26282
27348
  c(C) === b.EXPIRED ? E(y) : E(T, false);
26283
27349
  });
26284
27350
  }
26285
- z48(u), ne(n, u);
27351
+ z49(u), ne(n, u);
26286
27352
  };
26287
27353
  $e(Or, (n) => {
26288
27354
  (c(He) || c(C) === b.EXPIRED) && n(xi);
@@ -26292,7 +27358,7 @@ function ha(e, t) {
26292
27358
  {
26293
27359
  var $i = (n) => {
26294
27360
  var u = ua(), _ = X2(u), y = X2(_);
26295
- Ge(y, () => c(re).footer), z48(_), z48(u), ne(n, u);
27361
+ Ge(y, () => c(re).footer), z49(_), z49(u), ne(n, u);
26296
27362
  };
26297
27363
  $e(Fr, (n) => {
26298
27364
  c(re).footer && (k() !== true || c(Dt)) && n($i);
@@ -26308,7 +27374,7 @@ function ha(e, t) {
26308
27374
  v() && n(Ci);
26309
27375
  });
26310
27376
  }
26311
- return z48(ot), nn(ot, (n) => D(B, n), () => c(B)), Pe(
27377
+ return z49(ot), nn(ot, (n) => D(B, n), () => c(B)), Pe(
26312
27378
  (n) => {
26313
27379
  se(ot, "data-state", c(C)), se(ot, "data-floating", v()), Pr = Fo(mt, 1, "altcha-checkbox", null, Pr, n), se(We, "id", c(cr)), We.required = r2() !== "onsubmit" && (!v() || r2() !== "off");
26314
27380
  },
@@ -31502,6 +32568,87 @@ var init_registrationStateMachine = __esm({
31502
32568
  }
31503
32569
  });
31504
32570
 
32571
+ // ../blocks/src/system/runtime/nodes/event-registration/event-registration.headless.state.ts
32572
+ function getRegistrableStatuses(isPreview) {
32573
+ return isPreview ? ["active", "draft"] : ["active"];
32574
+ }
32575
+ function normalizeEventRegistrationMaxTickets(value) {
32576
+ if (typeof value === "number" && Number.isFinite(value) && value > 0) {
32577
+ return Math.floor(value);
32578
+ }
32579
+ if (typeof value === "string") {
32580
+ const parsed = Number.parseInt(value, 10);
32581
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_EVENT_REGISTRATION_MAX_TICKETS;
32582
+ }
32583
+ return DEFAULT_EVENT_REGISTRATION_MAX_TICKETS;
32584
+ }
32585
+ function resolveEventRegistrationSubmitPlan(input) {
32586
+ const selection = input.paymentSelection.method ? input.paymentSelection : void 0;
32587
+ if (input.canJoinWaitlist) {
32588
+ return { ok: true, args: withOptionalSelection({ method: "free" }, selection) };
32589
+ }
32590
+ switch (input.paymentSelection.method) {
32591
+ case "pass":
32592
+ return input.paymentSelection.passId ? {
32593
+ ok: true,
32594
+ args: withOptionalSelection(
32595
+ { method: "pass", passId: input.paymentSelection.passId },
32596
+ selection
32597
+ )
32598
+ } : missingPaymentSelection();
32599
+ case "membership":
32600
+ return input.paymentSelection.membershipId ? {
32601
+ ok: true,
32602
+ args: withOptionalSelection(
32603
+ { method: "membership", membershipId: input.paymentSelection.membershipId },
32604
+ selection
32605
+ )
32606
+ } : missingPaymentSelection();
32607
+ case "free":
32608
+ return { ok: true, args: withOptionalSelection({ method: "free" }, selection) };
32609
+ case null:
32610
+ return input.eventRequiresPayment ? missingPaymentSelection() : { ok: true, args: { method: "free" } };
32611
+ case "pass_bundle":
32612
+ return input.paymentSelection.bundlePassId ? {
32613
+ ok: true,
32614
+ args: withOptionalSelection(
32615
+ { method: "pass_bundle", passId: input.paymentSelection.bundlePassId },
32616
+ selection
32617
+ )
32618
+ } : missingPaymentSelection();
32619
+ case "membership_bundle":
32620
+ return input.paymentSelection.bundleMembershipId ? {
32621
+ ok: true,
32622
+ args: withOptionalSelection(
32623
+ {
32624
+ method: "membership_bundle",
32625
+ membershipId: input.paymentSelection.bundleMembershipId
32626
+ },
32627
+ selection
32628
+ )
32629
+ } : missingPaymentSelection();
32630
+ case "stripe":
32631
+ return { ok: true, args: withOptionalSelection({ method: "stripe" }, selection) };
32632
+ }
32633
+ }
32634
+ function withOptionalSelection(args, selection) {
32635
+ return selection ? { ...args, selection } : args;
32636
+ }
32637
+ function missingPaymentSelection() {
32638
+ return {
32639
+ ok: false,
32640
+ reason: "payment-selection-required",
32641
+ message: "Select a payment option to continue."
32642
+ };
32643
+ }
32644
+ var DEFAULT_EVENT_REGISTRATION_MAX_TICKETS;
32645
+ var init_event_registration_headless_state = __esm({
32646
+ "../blocks/src/system/runtime/nodes/event-registration/event-registration.headless.state.ts"() {
32647
+ "use strict";
32648
+ DEFAULT_EVENT_REGISTRATION_MAX_TICKETS = 5;
32649
+ }
32650
+ });
32651
+
31505
32652
  // ../blocks/src/system/runtime/nodes/event-registration/types.ts
31506
32653
  var init_types17 = __esm({
31507
32654
  "../blocks/src/system/runtime/nodes/event-registration/types.ts"() {
@@ -31567,7 +32714,7 @@ function transformEligibilityResponse(response) {
31567
32714
  waitlistEnabled: eligibility.waitlistEnabled,
31568
32715
  canJoinWaitlist: eligibility.canJoinWaitlist,
31569
32716
  price: eligibility.eventPrice,
31570
- currency: eligibility.eventPriceCurrency ?? DEFAULT_EVENT_CURRENCY,
32717
+ currency: eligibility.eventPriceCurrency ?? DEFAULT_EVENT_CURRENCY2,
31571
32718
  requiresAuthForPasses: eligibility.requiresAuthForPasses,
31572
32719
  requiresAuthForMemberships: eligibility.requiresAuthForMemberships,
31573
32720
  eligiblePasses,
@@ -31598,7 +32745,7 @@ function getTicketTypeAvailabilityLabel(ticketType) {
31598
32745
  }
31599
32746
  function getVisibleTicketTypes(input) {
31600
32747
  const eligibilityTicketTypes = input.eligibility?.ticketTypes;
31601
- const eventTicketTypes = input.event ? publicEventTicketTypes(input.event.pricing) : [];
32748
+ const eventTicketTypes = input.event ? publicEventTicketTypes(resolveRuntimeEventPricing(input.event)) : [];
31602
32749
  const source = eligibilityTicketTypes && eligibilityTicketTypes.length > 0 ? eligibilityTicketTypes : eventTicketTypes;
31603
32750
  return source.filter(
31604
32751
  (ticketType) => ticketType.isActive && (!input.selectedAttendanceMode || (ticketType.attendanceScope ?? "both") === "both" || (ticketType.attendanceScope ?? "both") === input.selectedAttendanceMode)
@@ -31617,13 +32764,14 @@ function findSelectedTicketType(input) {
31617
32764
  selectedAttendanceMode: input.selectedAttendanceMode
31618
32765
  }).find((ticketType) => ticketType.id === input.selectedTicketTypeId) ?? null;
31619
32766
  }
31620
- var DEFAULT_EVENT_CURRENCY, ENTITLEMENT_SINGLE_TICKET_TOOLTIP;
32767
+ var DEFAULT_EVENT_CURRENCY2, ENTITLEMENT_SINGLE_TICKET_TOOLTIP;
31621
32768
  var init_utils3 = __esm({
31622
32769
  "../blocks/src/system/runtime/nodes/event-registration/utils.ts"() {
31623
32770
  "use strict";
31624
32771
  init_src();
32772
+ init_pricing2();
31625
32773
  init_shared6();
31626
- DEFAULT_EVENT_CURRENCY = "usd";
32774
+ DEFAULT_EVENT_CURRENCY2 = "usd";
31627
32775
  ENTITLEMENT_SINGLE_TICKET_TOOLTIP = "Only available for single-ticket bookings";
31628
32776
  }
31629
32777
  });
@@ -32199,6 +33347,7 @@ var init_TicketSelectionStep = __esm({
32199
33347
  "use strict";
32200
33348
  "use client";
32201
33349
  init_src();
33350
+ init_pricing2();
32202
33351
  init_utils3();
32203
33352
  TicketSelectionStep = ({
32204
33353
  event,
@@ -32218,8 +33367,9 @@ var init_TicketSelectionStep = __esm({
32218
33367
  const waitlistEnabled = selectedModeAvailability?.waitlistEnabled ?? event?.waitlistEnabled ?? false;
32219
33368
  const isSoldOut = availableSpots === 0;
32220
33369
  const canJoinWaitlist = isSoldOut && waitlistEnabled === true;
32221
- const eventPricingMode = event ? publicEventPricingMode(event.pricing) : void 0;
32222
- const eventPricingCurrency = event ? publicEventPricingCurrency(event.pricing) : null;
33370
+ const eventPricing = event ? resolveRuntimeEventPricing(event) : null;
33371
+ const eventPricingMode = eventPricing ? publicEventPricingMode(eventPricing) : void 0;
33372
+ const eventPricingCurrency = eventPricing ? publicEventPricingCurrency(eventPricing) : null;
32223
33373
  const usesTicketTypes = eventPricingMode === "ticket_types" && !canJoinWaitlist;
32224
33374
  const visibleTicketTypes = usesTicketTypes ? getVisibleTicketTypes({
32225
33375
  event,
@@ -32284,7 +33434,7 @@ var init_TicketSelectionStep = __esm({
32284
33434
  const availabilityLabel = getTicketTypeAvailabilityLabel(ticketType);
32285
33435
  const disabled = ticketType.availability.kind === "unavailable";
32286
33436
  const isSelected = selectedTicketTypeId === ticketType.id;
32287
- const priceLabel = ticketType.priceAmount > 0 ? formatPrice(ticketType.priceAmount, eventPricingCurrency ?? DEFAULT_EVENT_CURRENCY) : "Free";
33437
+ const priceLabel = ticketType.priceAmount > 0 ? formatPrice(ticketType.priceAmount, eventPricingCurrency ?? DEFAULT_EVENT_CURRENCY2) : "Free";
32288
33438
  return /* @__PURE__ */ jsx75("div", { role: "listitem", children: /* @__PURE__ */ jsxs51(
32289
33439
  "button",
32290
33440
  {
@@ -33333,18 +34483,8 @@ function EventRegistrationWizardActions(props2) {
33333
34483
  }
33334
34484
  case "select-payment": {
33335
34485
  const { status, canContinue, buttonText } = wizard.paymentStepState;
33336
- const selection = wizard.paymentSelection;
33337
34486
  const handlePaymentContinue = () => {
33338
- if (!selection.method) return;
33339
- if (selection.method === "free") {
33340
- void wizard.handlePaymentSelect("free");
33341
- return;
33342
- }
33343
- void wizard.handlePaymentSelect(
33344
- selection.method,
33345
- selection.passId ?? selection.bundlePassId,
33346
- selection.membershipId ?? selection.bundleMembershipId
33347
- );
34487
+ void wizard.handlePaymentSelect();
33348
34488
  };
33349
34489
  return /* @__PURE__ */ jsxs61("div", { className: "er-actions", children: [
33350
34490
  /* @__PURE__ */ jsx87("button", { type: "button", onClick: () => wizard.setStep("enter-details"), className: "er-back-btn", children: "\u2190 Back" }),
@@ -33385,7 +34525,7 @@ function EventRegistrationSummaryBar(props2) {
33385
34525
  const occurrenceOverrideTitle = wizard.occurrenceContext?.overrides?.title;
33386
34526
  const summaryTitle = occurrenceOverrideTitle ?? summaryEvent?.title ?? "";
33387
34527
  const summaryPrice = wizard.selectedTicketType?.priceAmount ?? wizard.eligibility?.price ?? (summaryEvent ? publicEventScalarPrice(summaryEvent.pricing) : null) ?? 0;
33388
- const summaryCurrency = (summaryEvent ? publicEventPricingCurrency(summaryEvent.pricing) : null) ?? DEFAULT_EVENT_CURRENCY;
34528
+ const summaryCurrency = (summaryEvent ? publicEventPricingCurrency(summaryEvent.pricing) : null) ?? DEFAULT_EVENT_CURRENCY2;
33389
34529
  const teamMemberNames = (summaryEvent?.teamMembers ?? []).map((teamMember) => teamMember.name).filter(Boolean);
33390
34530
  const subtotalCents = Math.max(0, summaryPrice * wizard.ticketsCount);
33391
34531
  const autoAppliedDiscount = wizard.discountCode.trim().length > 0 ? null : wizard.autoAppliedDiscount;
@@ -33408,7 +34548,7 @@ function EventRegistrationSummaryBar(props2) {
33408
34548
  ),
33409
34549
  wizard.paymentSelection.productInterval && /* @__PURE__ */ jsx88("div", { className: "er-summary-bar-product-detail", children: wizard.paymentSelection.productInterval })
33410
34550
  ] }),
33411
- /* @__PURE__ */ jsx88("div", { className: "er-summary-bar-product-price", children: wizard.paymentSelection.method === "pass" || wizard.paymentSelection.method === "membership" ? /* @__PURE__ */ jsx88("span", { className: "er-summary-bar-included", children: "Included" }) : wizard.paymentSelection.productPrice ? formatPrice(wizard.paymentSelection.productPrice, wizard.paymentSelection.productCurrency ?? DEFAULT_EVENT_CURRENCY) : null })
34551
+ /* @__PURE__ */ jsx88("div", { className: "er-summary-bar-product-price", children: wizard.paymentSelection.method === "pass" || wizard.paymentSelection.method === "membership" ? /* @__PURE__ */ jsx88("span", { className: "er-summary-bar-included", children: "Included" }) : wizard.paymentSelection.productPrice ? formatPrice(wizard.paymentSelection.productPrice, wizard.paymentSelection.productCurrency ?? DEFAULT_EVENT_CURRENCY2) : null })
33412
34552
  ] }),
33413
34553
  /* @__PURE__ */ jsxs62("div", { className: "er-summary-bar", children: [
33414
34554
  /* @__PURE__ */ jsxs62("div", { className: "er-summary-bar-info", children: [
@@ -33730,9 +34870,15 @@ var init_useEventRegistrationStripeReturn = __esm({
33730
34870
 
33731
34871
  // ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.ts
33732
34872
  function useEventRegistrationSubmit(options) {
33733
- return async (method, passId, membershipId, selection) => {
34873
+ return async (method, passId, membershipId, selection, submitOptions) => {
33734
34874
  const submitOccurrenceId = options.registrationTarget?.occurrenceId;
33735
- if (!submitOccurrenceId) return;
34875
+ if (!submitOccurrenceId) {
34876
+ return {
34877
+ ok: false,
34878
+ reason: "missing-target",
34879
+ message: "Select an event to continue."
34880
+ };
34881
+ }
33736
34882
  options.setStep("submitting");
33737
34883
  try {
33738
34884
  const isBundle = method === "pass_bundle" || method === "membership_bundle";
@@ -33800,7 +34946,7 @@ function useEventRegistrationSubmit(options) {
33800
34946
  if (checkoutResult.bypassed) {
33801
34947
  options.setRegistrationResult({ status: "confirmed" });
33802
34948
  options.setStep("success");
33803
- return;
34949
+ return { ok: true, outcome: { kind: "completed" } };
33804
34950
  }
33805
34951
  if (!checkoutResult.checkoutUrl) {
33806
34952
  throw new Error("Checkout URL missing");
@@ -33817,8 +34963,17 @@ function useEventRegistrationSubmit(options) {
33817
34963
  paymentSelection: selectionSnapshot
33818
34964
  });
33819
34965
  }
34966
+ if (submitOptions?.redirect === "manual") {
34967
+ return {
34968
+ ok: true,
34969
+ outcome: {
34970
+ kind: "checkout_redirect",
34971
+ checkoutUrl: checkoutResult.checkoutUrl
34972
+ }
34973
+ };
34974
+ }
33820
34975
  window.location.href = checkoutResult.checkoutUrl;
33821
- return;
34976
+ return { ok: true, outcome: { kind: "checkout_redirect", checkoutUrl: checkoutResult.checkoutUrl } };
33822
34977
  }
33823
34978
  if (result.alreadyRegistered) {
33824
34979
  const title = result.status === "waitlist" ? "Already waitlisted" : "Already registered";
@@ -33840,9 +34995,16 @@ function useEventRegistrationSubmit(options) {
33840
34995
  options.setRegistrationResult({ status: result.status });
33841
34996
  }
33842
34997
  options.setStep("success");
34998
+ return { ok: true, outcome: { kind: "completed" } };
33843
34999
  } catch (error) {
33844
- options.setErrorMessage(error instanceof Error ? error.message : "Registration failed");
35000
+ const message = error instanceof Error ? error.message : "Registration failed";
35001
+ options.setErrorMessage(message);
33845
35002
  options.setStep("error");
35003
+ return {
35004
+ ok: false,
35005
+ reason: "submission-failed",
35006
+ message
35007
+ };
33846
35008
  }
33847
35009
  };
33848
35010
  }
@@ -33897,7 +35059,7 @@ function resolveEventRequiresPayment(input) {
33897
35059
  if (!input.event) {
33898
35060
  return false;
33899
35061
  }
33900
- return publicEventPricingType(input.event.pricing) !== "free";
35062
+ return publicEventPricingType(resolveRuntimeEventPricing(input.event)) !== "free";
33901
35063
  }
33902
35064
  function resolveDiscountContext(input) {
33903
35065
  const selection = input.paymentSelection.method ? input.paymentSelection : null;
@@ -33927,6 +35089,7 @@ var init_registrationDerivations = __esm({
33927
35089
  "../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts"() {
33928
35090
  "use strict";
33929
35091
  init_src();
35092
+ init_pricing2();
33930
35093
  }
33931
35094
  });
33932
35095
 
@@ -33934,6 +35097,7 @@ var init_registrationDerivations = __esm({
33934
35097
  function toRegistrationEvent(event) {
33935
35098
  return {
33936
35099
  ...event,
35100
+ pricing: resolveRuntimeEventPricing(event),
33937
35101
  publicEventId: event.id,
33938
35102
  registrationOccurrenceId: event.occurrenceId
33939
35103
  };
@@ -33944,6 +35108,7 @@ function toRegistrationEvents(events) {
33944
35108
  var init_registrationEventAdapter = __esm({
33945
35109
  "../blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.ts"() {
33946
35110
  "use strict";
35111
+ init_pricing2();
33947
35112
  }
33948
35113
  });
33949
35114
 
@@ -34166,7 +35331,7 @@ function useEventRegistrationWizard(options) {
34166
35331
  );
34167
35332
  const ticketTypeSelectionRequired = useMemo7(() => {
34168
35333
  const event = selectedEvent ?? preSelectedEvent;
34169
- if (!event || publicEventPricingMode(event.pricing) !== "ticket_types") {
35334
+ if (!event || publicEventPricingMode(resolveRuntimeEventPricing(event)) !== "ticket_types") {
34170
35335
  return false;
34171
35336
  }
34172
35337
  if ((event.deliveryMode ?? "in_person") === "hybrid" && !selectedAttendanceMode) {
@@ -34181,7 +35346,7 @@ function useEventRegistrationWizard(options) {
34181
35346
  );
34182
35347
  useEffect14(() => {
34183
35348
  const event = selectedEvent ?? preSelectedEvent;
34184
- if (!event || publicEventPricingMode(event.pricing) !== "ticket_types") {
35349
+ if (!event || publicEventPricingMode(resolveRuntimeEventPricing(event)) !== "ticket_types") {
34185
35350
  if (selectedTicketTypeId !== null) {
34186
35351
  setSelectedTicketTypeId(null);
34187
35352
  }
@@ -34254,30 +35419,45 @@ function useEventRegistrationWizard(options) {
34254
35419
  setStep("error");
34255
35420
  return;
34256
35421
  }
34257
- if (eligibility?.canJoinWaitlist) {
34258
- await handleSubmit("free", void 0, void 0, paymentSelection.method ? paymentSelection : void 0);
34259
- return;
34260
- }
34261
- if (paymentSelection.method === "pass" && paymentSelection.passId) {
34262
- await handleSubmit("pass", paymentSelection.passId, void 0, paymentSelection);
35422
+ const shouldCollectPayment = !eligibility?.canJoinWaitlist && requiresPaymentStep({ eventRequiresPayment, paymentSelection });
35423
+ if (shouldCollectPayment) {
35424
+ setStep("select-payment");
34263
35425
  return;
34264
35426
  }
34265
- if (paymentSelection.method === "membership" && paymentSelection.membershipId) {
34266
- await handleSubmit("membership", void 0, paymentSelection.membershipId, paymentSelection);
35427
+ const submitPlan = resolveEventRegistrationSubmitPlan({
35428
+ paymentSelection,
35429
+ eventRequiresPayment,
35430
+ canJoinWaitlist: eligibility?.canJoinWaitlist
35431
+ });
35432
+ if (!submitPlan.ok) {
35433
+ setErrorMessage(submitPlan.message);
35434
+ setStep("error");
34267
35435
  return;
34268
35436
  }
34269
- if (paymentSelection.method === "free" || !eventRequiresPayment) {
34270
- await handleSubmit("free", void 0, void 0, paymentSelection.method ? paymentSelection : void 0);
35437
+ await handleSubmit(
35438
+ submitPlan.args.method,
35439
+ submitPlan.args.passId,
35440
+ submitPlan.args.membershipId,
35441
+ submitPlan.args.selection
35442
+ );
35443
+ };
35444
+ const handlePaymentSelect = async () => {
35445
+ const submitPlan = resolveEventRegistrationSubmitPlan({
35446
+ paymentSelection,
35447
+ eventRequiresPayment,
35448
+ canJoinWaitlist: eligibility?.canJoinWaitlist
35449
+ });
35450
+ if (!submitPlan.ok) {
35451
+ setErrorMessage(submitPlan.message);
35452
+ setStep("error");
34271
35453
  return;
34272
35454
  }
34273
- if (requiresPaymentStep({ eventRequiresPayment: true, paymentSelection })) {
34274
- setStep("select-payment");
34275
- } else {
34276
- await handleSubmit("stripe", void 0, void 0, paymentSelection.method ? paymentSelection : void 0);
34277
- }
34278
- };
34279
- const handlePaymentSelect = async (method, passId, membershipId) => {
34280
- await handleSubmit(method, passId, membershipId, paymentSelection.method ? paymentSelection : void 0);
35455
+ await handleSubmit(
35456
+ submitPlan.args.method,
35457
+ submitPlan.args.passId,
35458
+ submitPlan.args.membershipId,
35459
+ submitPlan.args.selection
35460
+ );
34281
35461
  };
34282
35462
  const handleUseCardInsteadOfPass = () => {
34283
35463
  dispatchFlow({ type: "use-card-instead-of-pass" });
@@ -34301,7 +35481,7 @@ function useEventRegistrationWizard(options) {
34301
35481
  const discountSubtotalCents = useMemo7(() => {
34302
35482
  if (discountContext?.type !== "event") return void 0;
34303
35483
  const event = selectedEvent ?? preSelectedEvent;
34304
- const eventPriceCents = selectedTicketType?.priceAmount ?? eligibility?.price ?? (event ? publicEventScalarPrice(event.pricing) : null) ?? 0;
35484
+ const eventPriceCents = selectedTicketType?.priceAmount ?? eligibility?.price ?? (event ? publicEventScalarPrice(resolveRuntimeEventPricing(event)) : null) ?? 0;
34305
35485
  return Math.max(0, eventPriceCents * ticketsCount);
34306
35486
  }, [discountContext, selectedTicketType, eligibility, selectedEvent, preSelectedEvent, ticketsCount]);
34307
35487
  const discountUi = useDiscountCodeUi({ api, discountContext, subtotalCents: discountSubtotalCents });
@@ -34389,6 +35569,7 @@ function useEventRegistrationWizard(options) {
34389
35569
  altchaSolution,
34390
35570
  setAltchaSolution,
34391
35571
  portalAuthState,
35572
+ portalProfile,
34392
35573
  showMagicLinkModal,
34393
35574
  setShowMagicLinkModal,
34394
35575
  handleLogout,
@@ -34403,6 +35584,7 @@ function useEventRegistrationWizard(options) {
34403
35584
  eligibilityError,
34404
35585
  existingRegistration: existingRegistrationResult.registration,
34405
35586
  existingRegistrationLoading: existingRegistrationResult.isLoading,
35587
+ existingRegistrationState: existingRegistrationResult.state,
34406
35588
  hasEligibility,
34407
35589
  hasMembershipEligibility,
34408
35590
  requireGuestDetails,
@@ -34433,6 +35615,7 @@ var init_useEventRegistrationWizard = __esm({
34433
35615
  init_src();
34434
35616
  init_api();
34435
35617
  init_events();
35618
+ init_pricing2();
34436
35619
  init_validation3();
34437
35620
  init_hooks();
34438
35621
  init_portalLogout();
@@ -34442,6 +35625,7 @@ var init_useEventRegistrationWizard = __esm({
34442
35625
  init_useDiscountCodeUi();
34443
35626
  init_utils3();
34444
35627
  init_registrationStateMachine();
35628
+ init_event_registration_headless_state();
34445
35629
  init_registrationDerivations();
34446
35630
  init_registrationEventAdapter();
34447
35631
  }
@@ -34568,7 +35752,7 @@ function EventRegistrationWizard(props2) {
34568
35752
  spamProtectionEnabled,
34569
35753
  supportEmail
34570
35754
  } = props2;
34571
- const maxTicketsNum = parseInt(maxTickets, 10) || 5;
35755
+ const maxTicketsNum = normalizeEventRegistrationMaxTickets(maxTickets);
34572
35756
  const showSpamProtection = spamProtectionEnabled ?? isSpamProtectionEnabled();
34573
35757
  const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
34574
35758
  const wizard = useEventRegistrationWizard({
@@ -34581,7 +35765,7 @@ function EventRegistrationWizard(props2) {
34581
35765
  if (wizard.scopedEvents.length === 0 && !wizard.occurrenceContext) {
34582
35766
  return /* @__PURE__ */ jsx90("div", { id: EVENT_REGISTRATION_ANCHOR_ID, className: `event-registration ${className || ""}`, "data-block": "event-registration", children: /* @__PURE__ */ jsx90("div", { className: "er-empty", children: /* @__PURE__ */ jsx90("p", { className: "er-empty__text", children: "No events available for registration." }) }) });
34583
35767
  }
34584
- const allowedStatuses = wizard.api.config.isPreview ? ["active", "draft"] : ["active"];
35768
+ const allowedStatuses = getRegistrableStatuses(wizard.api.config.isPreview);
34585
35769
  const hasRegistrableEvents = wizard.scopedEvents.some((event) => !event.status || allowedStatuses.includes(event.status));
34586
35770
  if (!hasRegistrableEvents && !wizard.occurrenceContext) {
34587
35771
  return /* @__PURE__ */ jsx90("div", { id: EVENT_REGISTRATION_ANCHOR_ID, className: `event-registration ${className || ""}`, "data-block": "event-registration", children: /* @__PURE__ */ jsx90("div", { className: "er-empty", children: /* @__PURE__ */ jsx90("p", { className: "er-empty__text", children: "Registration is not currently available for this event." }) }) });
@@ -34712,6 +35896,7 @@ var init_EventRegistrationWizard = __esm({
34712
35896
  init_StepIndicator2();
34713
35897
  init_wizardSteps2();
34714
35898
  init_registrationStateMachine();
35899
+ init_event_registration_headless_state();
34715
35900
  init_EventRegistrationWizardContent();
34716
35901
  init_EventRegistrationWizardActions();
34717
35902
  init_EventRegistrationSummaryBar();
@@ -38260,7 +39445,7 @@ var init_embla_carousel_autoplay_esm = __esm({
38260
39445
  function isObject(subject) {
38261
39446
  return Object.prototype.toString.call(subject) === "[object Object]";
38262
39447
  }
38263
- function isRecord6(subject) {
39448
+ function isRecord8(subject) {
38264
39449
  return isObject(subject) || Array.isArray(subject);
38265
39450
  }
38266
39451
  function canUseDOM() {
@@ -38277,7 +39462,7 @@ function areOptionsEqual(optionsA, optionsB) {
38277
39462
  const valueA = optionsA[key];
38278
39463
  const valueB = optionsB[key];
38279
39464
  if (typeof valueA === "function") return `${valueA}` === `${valueB}`;
38280
- if (!isRecord6(valueA) || !isRecord6(valueB)) return valueA === valueB;
39465
+ if (!isRecord8(valueA) || !isRecord8(valueB)) return valueA === valueB;
38281
39466
  return areOptionsEqual(valueA, valueB);
38282
39467
  });
38283
39468
  }
@@ -44665,7 +45850,7 @@ var init_newsletter_form_client = __esm({
44665
45850
  });
44666
45851
 
44667
45852
  // ../blocks/src/system/blocks/event-details.ts
44668
- import { z as z49 } from "zod";
45853
+ import { z as z50 } from "zod";
44669
45854
  var eventDetailsManifest, occurrenceContextSchema2, eventAutoApplyDiscountPreviewBaseSchema, eventAutoApplyDiscountPreviewSchema, eventDetailsBlockDefinition;
44670
45855
  var init_event_details = __esm({
44671
45856
  "../blocks/src/system/blocks/event-details.ts"() {
@@ -44808,40 +45993,40 @@ var init_event_details = __esm({
44808
45993
  })
44809
45994
  ]
44810
45995
  });
44811
- occurrenceContextSchema2 = z49.object({
44812
- id: z49.string(),
44813
- seriesId: z49.string(),
44814
- startsAt: z49.string(),
44815
- endsAt: z49.string(),
44816
- timeZone: z49.string(),
44817
- capacityOverride: z49.number().nullable().optional(),
44818
- overrides: z49.record(z49.string(), z49.unknown()).nullable().optional()
45996
+ occurrenceContextSchema2 = z50.object({
45997
+ id: z50.string(),
45998
+ seriesId: z50.string(),
45999
+ startsAt: z50.string(),
46000
+ endsAt: z50.string(),
46001
+ timeZone: z50.string(),
46002
+ capacityOverride: z50.number().nullable().optional(),
46003
+ overrides: z50.record(z50.string(), z50.unknown()).nullable().optional()
44819
46004
  }).nullable();
44820
- eventAutoApplyDiscountPreviewBaseSchema = z49.object({
44821
- id: z49.string(),
44822
- publicLabel: z49.string(),
44823
- description: z49.string().nullable(),
44824
- minTicketsRequired: z49.number().nullable()
46005
+ eventAutoApplyDiscountPreviewBaseSchema = z50.object({
46006
+ id: z50.string(),
46007
+ publicLabel: z50.string(),
46008
+ description: z50.string().nullable(),
46009
+ minTicketsRequired: z50.number().nullable()
44825
46010
  });
44826
- eventAutoApplyDiscountPreviewSchema = z49.discriminatedUnion("discountType", [
46011
+ eventAutoApplyDiscountPreviewSchema = z50.discriminatedUnion("discountType", [
44827
46012
  eventAutoApplyDiscountPreviewBaseSchema.extend({
44828
- discountType: z49.literal("percent"),
44829
- discountPercent: z49.number(),
44830
- discountAmountCents: z49.null()
46013
+ discountType: z50.literal("percent"),
46014
+ discountPercent: z50.number(),
46015
+ discountAmountCents: z50.null()
44831
46016
  }),
44832
46017
  eventAutoApplyDiscountPreviewBaseSchema.extend({
44833
- discountType: z49.literal("fixed"),
44834
- discountPercent: z49.null(),
44835
- discountAmountCents: z49.number()
46018
+ discountType: z50.literal("fixed"),
46019
+ discountPercent: z50.null(),
46020
+ discountAmountCents: z50.number()
44836
46021
  })
44837
46022
  ]);
44838
46023
  eventDetailsBlockDefinition = {
44839
46024
  manifest: eventDetailsManifest,
44840
46025
  dataSchemas: {
44841
- eventDetailsData: z49.object({
46026
+ eventDetailsData: z50.object({
44842
46027
  events: publicEventsArraySchema,
44843
- sitePasses: z49.object({ passes: z49.array(publicPassProductSchema) }),
44844
- siteMemberships: z49.object({ memberships: z49.array(publicMembershipProductSchema) }),
46028
+ sitePasses: z50.object({ passes: z50.array(publicPassProductSchema) }),
46029
+ siteMemberships: z50.object({ memberships: z50.array(publicMembershipProductSchema) }),
44845
46030
  autoApplyDiscount: eventAutoApplyDiscountPreviewSchema.nullable().optional().default(null)
44846
46031
  }).optional(),
44847
46032
  occurrenceContext: occurrenceContextSchema2.optional()
@@ -44865,7 +46050,7 @@ var init_event_details = __esm({
44865
46050
  });
44866
46051
 
44867
46052
  // ../blocks/src/contracts/non-block-islands.ts
44868
- import { z as z50 } from "zod";
46053
+ import { z as z51 } from "zod";
44869
46054
  var accordionIslandSchema, headerSectionIslandSchema, responsiveSlidesToShowSchema, carouselIslandSchema, eventDetailsOccurrenceContextSchema, eventDetailsContentEntrySchema, eventDetailsIslandSchema, locationMapIslandSchema, accordionIslandPropsCodec, headerSectionIslandPropsCodec, carouselIslandPropsCodec, eventDetailsIslandPropsCodec, locationMapIslandPropsCodec;
44870
46055
  var init_non_block_islands = __esm({
44871
46056
  "../blocks/src/contracts/non-block-islands.ts"() {
@@ -44874,71 +46059,71 @@ var init_non_block_islands = __esm({
44874
46059
  init_shop_shared();
44875
46060
  init_schemas2();
44876
46061
  init_event_details();
44877
- accordionIslandSchema = z50.object({
44878
- type: z50.enum(["single", "multiple"]).optional(),
44879
- defaultValue: z50.union([z50.string(), z50.array(z50.string())]).optional(),
44880
- collapsible: z50.boolean().optional()
44881
- });
44882
- headerSectionIslandSchema = z50.object({
44883
- enabled: z50.boolean().optional(),
44884
- scrollEnabled: z50.boolean().optional()
44885
- });
44886
- responsiveSlidesToShowSchema = z50.object({
44887
- mobile: z50.union([z50.number(), z50.string()]).optional(),
44888
- tablet: z50.union([z50.number(), z50.string()]).optional(),
44889
- desktop: z50.union([z50.number(), z50.string()]).optional()
44890
- });
44891
- carouselIslandSchema = z50.object({
44892
- slidesToShow: z50.union([z50.number(), z50.string(), responsiveSlidesToShowSchema]).optional(),
44893
- transition: z50.enum(["slide", "fade"]).optional(),
44894
- showControls: z50.union([z50.boolean(), z50.string()]).optional(),
44895
- showDots: z50.union([z50.boolean(), z50.string()]).optional(),
44896
- arrowVisibility: z50.enum(["always", "hover", "never"]).optional(),
44897
- autoplay: z50.union([z50.boolean(), z50.string()]).optional(),
44898
- autoplayDelay: z50.union([z50.number(), z50.string()]).optional(),
44899
- loop: z50.union([z50.boolean(), z50.string()]).optional()
44900
- });
44901
- eventDetailsOccurrenceContextSchema = z50.object({
44902
- id: z50.string(),
44903
- seriesId: z50.string(),
44904
- startsAt: z50.string(),
44905
- endsAt: z50.string(),
44906
- timeZone: z50.string()
44907
- });
44908
- eventDetailsContentEntrySchema = z50.object({
44909
- id: z50.string(),
44910
- slug: z50.string(),
44911
- contentTypeSlug: z50.string()
44912
- });
44913
- eventDetailsIslandSchema = z50.object({
46062
+ accordionIslandSchema = z51.object({
46063
+ type: z51.enum(["single", "multiple"]).optional(),
46064
+ defaultValue: z51.union([z51.string(), z51.array(z51.string())]).optional(),
46065
+ collapsible: z51.boolean().optional()
46066
+ });
46067
+ headerSectionIslandSchema = z51.object({
46068
+ enabled: z51.boolean().optional(),
46069
+ scrollEnabled: z51.boolean().optional()
46070
+ });
46071
+ responsiveSlidesToShowSchema = z51.object({
46072
+ mobile: z51.union([z51.number(), z51.string()]).optional(),
46073
+ tablet: z51.union([z51.number(), z51.string()]).optional(),
46074
+ desktop: z51.union([z51.number(), z51.string()]).optional()
46075
+ });
46076
+ carouselIslandSchema = z51.object({
46077
+ slidesToShow: z51.union([z51.number(), z51.string(), responsiveSlidesToShowSchema]).optional(),
46078
+ transition: z51.enum(["slide", "fade"]).optional(),
46079
+ showControls: z51.union([z51.boolean(), z51.string()]).optional(),
46080
+ showDots: z51.union([z51.boolean(), z51.string()]).optional(),
46081
+ arrowVisibility: z51.enum(["always", "hover", "never"]).optional(),
46082
+ autoplay: z51.union([z51.boolean(), z51.string()]).optional(),
46083
+ autoplayDelay: z51.union([z51.number(), z51.string()]).optional(),
46084
+ loop: z51.union([z51.boolean(), z51.string()]).optional()
46085
+ });
46086
+ eventDetailsOccurrenceContextSchema = z51.object({
46087
+ id: z51.string(),
46088
+ seriesId: z51.string(),
46089
+ startsAt: z51.string(),
46090
+ endsAt: z51.string(),
46091
+ timeZone: z51.string()
46092
+ });
46093
+ eventDetailsContentEntrySchema = z51.object({
46094
+ id: z51.string(),
46095
+ slug: z51.string(),
46096
+ contentTypeSlug: z51.string()
46097
+ });
46098
+ eventDetailsIslandSchema = z51.object({
44914
46099
  occurrenceContext: eventDetailsOccurrenceContextSchema.nullable().optional(),
44915
46100
  contentEntry: eventDetailsContentEntrySchema.nullable().optional(),
44916
- events: z50.array(publicEventSchema).nullable().optional(),
44917
- showVenue: z50.boolean().optional(),
44918
- showMap: z50.boolean().optional(),
44919
- showOtherDates: z50.boolean().optional(),
44920
- otherDatesLimit: z50.string().optional(),
44921
- showCost: z50.boolean().optional(),
44922
- showAcceptedPasses: z50.boolean().optional(),
44923
- showAcceptedMemberships: z50.boolean().optional(),
44924
- sitePasses: z50.object({ passes: z50.array(publicPassProductSchema) }).nullable().optional(),
44925
- siteMemberships: z50.object({ memberships: z50.array(publicMembershipProductSchema) }).nullable().optional(),
46101
+ events: z51.array(publicEventSchema).nullable().optional(),
46102
+ showVenue: z51.boolean().optional(),
46103
+ showMap: z51.boolean().optional(),
46104
+ showOtherDates: z51.boolean().optional(),
46105
+ otherDatesLimit: z51.string().optional(),
46106
+ showCost: z51.boolean().optional(),
46107
+ showAcceptedPasses: z51.boolean().optional(),
46108
+ showAcceptedMemberships: z51.boolean().optional(),
46109
+ sitePasses: z51.object({ passes: z51.array(publicPassProductSchema) }).nullable().optional(),
46110
+ siteMemberships: z51.object({ memberships: z51.array(publicMembershipProductSchema) }).nullable().optional(),
44926
46111
  autoApplyDiscount: eventAutoApplyDiscountPreviewSchema.nullable().optional(),
44927
- className: z50.string().nullable().optional(),
44928
- nowIso: z50.string().optional()
44929
- });
44930
- locationMapIslandSchema = z50.object({
44931
- location: z50.object({
44932
- addressText: z50.string().nullable(),
44933
- lat: z50.number().nullable(),
44934
- lng: z50.number().nullable()
46112
+ className: z51.string().nullable().optional(),
46113
+ nowIso: z51.string().optional()
46114
+ });
46115
+ locationMapIslandSchema = z51.object({
46116
+ location: z51.object({
46117
+ addressText: z51.string().nullable(),
46118
+ lat: z51.number().nullable(),
46119
+ lng: z51.number().nullable()
44935
46120
  }).nullable().optional(),
44936
- zoom: z50.number().nullable().optional(),
44937
- heightPx: z50.number().nullable().optional(),
44938
- showAddressText: z50.boolean().optional(),
44939
- showDirections: z50.boolean().optional(),
44940
- directionsLabel: z50.string().nullable().optional(),
44941
- className: z50.string().nullable().optional()
46121
+ zoom: z51.number().nullable().optional(),
46122
+ heightPx: z51.number().nullable().optional(),
46123
+ showAddressText: z51.boolean().optional(),
46124
+ showDirections: z51.boolean().optional(),
46125
+ directionsLabel: z51.string().nullable().optional(),
46126
+ className: z51.string().nullable().optional()
44942
46127
  });
44943
46128
  accordionIslandPropsCodec = createZodCodec(accordionIslandSchema);
44944
46129
  headerSectionIslandPropsCodec = createZodCodec(headerSectionIslandSchema);
@@ -49571,7 +50756,7 @@ init_shared3();
49571
50756
  init_defineBlock();
49572
50757
  init_event_registration_shared();
49573
50758
  init_event_registration_interactive();
49574
- import { z as z40 } from "zod";
50759
+ import { z as z41 } from "zod";
49575
50760
  var eventRegistrationManifest = createBlockManifest({
49576
50761
  id: "block.event-registration",
49577
50762
  version: "1.0.0",
@@ -49735,7 +50920,7 @@ var eventRegistrationBlockDefinition = {
49735
50920
  manifest: eventRegistrationManifest,
49736
50921
  runtime: eventRegistrationBlockRuntime,
49737
50922
  dataSchemas: {
49738
- events: z40.array(publicEventSchema).optional(),
50923
+ events: z41.array(publicEventSchema).optional(),
49739
50924
  occurrenceContext: occurrenceContextSchema.optional()
49740
50925
  },
49741
50926
  dataLoaders: {
@@ -49765,7 +50950,7 @@ init_defineBlock();
49765
50950
  init_fragments2();
49766
50951
  init_form_interactive();
49767
50952
  init_builder();
49768
- import { z as z42 } from "zod";
50953
+ import { z as z43 } from "zod";
49769
50954
  var formComposition = composeFragments([
49770
50955
  { fragment: formCopyFragment },
49771
50956
  { fragment: formEmbedFragment }
@@ -49858,16 +51043,16 @@ var formManifest = createBlockManifest({
49858
51043
  tags: ["form", "contact", "input", "submit", "fields", "signup", "lead-capture"],
49859
51044
  icon: "FormInput"
49860
51045
  });
49861
- var formDataSchema = z42.object({
49862
- id: z42.string(),
49863
- siteId: z42.string(),
49864
- userId: z42.string(),
49865
- name: z42.string(),
49866
- slug: z42.string(),
49867
- schemaJson: z42.any(),
49868
- settingsJson: z42.any().optional(),
49869
- createdAt: z42.string(),
49870
- updatedAt: z42.string()
51046
+ var formDataSchema = z43.object({
51047
+ id: z43.string(),
51048
+ siteId: z43.string(),
51049
+ userId: z43.string(),
51050
+ name: z43.string(),
51051
+ slug: z43.string(),
51052
+ schemaJson: z43.any(),
51053
+ settingsJson: z43.any().optional(),
51054
+ createdAt: z43.string(),
51055
+ updatedAt: z43.string()
49871
51056
  });
49872
51057
  var formBlockDefinition = {
49873
51058
  manifest: formManifest,
@@ -51016,7 +52201,7 @@ init_api_bindings();
51016
52201
  init_defineBlock();
51017
52202
  init_shop_interactive();
51018
52203
  init_shared5();
51019
- import { z as z46 } from "zod";
52204
+ import { z as z47 } from "zod";
51020
52205
  var productListManifest = createBlockManifest({
51021
52206
  id: "block.product-list",
51022
52207
  version: "1.0.0",
@@ -51149,7 +52334,7 @@ var productListBlockDefinition = {
51149
52334
  }
51150
52335
  }
51151
52336
  };
51152
- var productListDataSchema = z46.object({
52337
+ var productListDataSchema = z47.object({
51153
52338
  products: publicProductsResponseSchema.optional()
51154
52339
  });
51155
52340
 
@@ -51162,7 +52347,7 @@ init_api_bindings();
51162
52347
  init_defineBlock();
51163
52348
  init_shop_shared();
51164
52349
  init_shop_interactive();
51165
- import { z as z47 } from "zod";
52350
+ import { z as z48 } from "zod";
51166
52351
  var shopManifest = createBlockManifest({
51167
52352
  id: "block.shop",
51168
52353
  version: "1.0.0",
@@ -51358,9 +52543,9 @@ var shopBlockDefinition = {
51358
52543
  runtime: shopBlockRuntime,
51359
52544
  dataSchemas: {
51360
52545
  // listPublicPasses returns { passes: [...] }
51361
- passes: z47.object({ passes: z47.array(publicPassProductSchema) }).optional(),
52546
+ passes: z48.object({ passes: z48.array(publicPassProductSchema) }).optional(),
51362
52547
  // listPublicMemberships returns { memberships: [...] }
51363
- memberships: z47.object({ memberships: z47.array(publicMembershipProductSchema) }).optional()
52548
+ memberships: z48.object({ memberships: z48.array(publicMembershipProductSchema) }).optional()
51364
52549
  },
51365
52550
  dataLoaders: {
51366
52551
  // Load passes for display
@@ -52033,6 +53218,9 @@ var EventListingSSR = (props2) => {
52033
53218
  // ../blocks/src/system/runtime/nodes/event-registration.server.tsx
52034
53219
  init_event_registration_interactive();
52035
53220
  import { jsx as jsx47, jsxs as jsxs32 } from "react/jsx-runtime";
53221
+ function cx(...classes) {
53222
+ return classes.filter((className) => Boolean(className)).join(" ");
53223
+ }
52036
53224
  function EventRegistrationSSR({
52037
53225
  blockId,
52038
53226
  siteId,
@@ -52075,6 +53263,7 @@ function EventRegistrationSSR({
52075
53263
  stage,
52076
53264
  supportEmail
52077
53265
  });
53266
+ const display = islandProps.render.display;
52078
53267
  return /* @__PURE__ */ jsxs32(
52079
53268
  "div",
52080
53269
  {
@@ -52086,12 +53275,52 @@ function EventRegistrationSSR({
52086
53275
  ...getIslandRootProps("event-registration", blockId),
52087
53276
  children: [
52088
53277
  /* @__PURE__ */ jsx47(IslandPropsScript, { value: islandProps }),
52089
- /* @__PURE__ */ jsx47("div", { className: "event-registration__summary", children: /* @__PURE__ */ jsx47("strong", { children: "Loading booking options..." }) }),
53278
+ /* @__PURE__ */ jsx47(EventRegistrationShell, { display }),
52090
53279
  children
52091
53280
  ]
52092
53281
  }
52093
53282
  );
52094
53283
  }
53284
+ function EventRegistrationShell({
53285
+ display
53286
+ }) {
53287
+ return /* @__PURE__ */ jsx47("div", { className: "er-container er-registration-shell", "aria-busy": "true", role: "status", children: /* @__PURE__ */ jsxs32("div", { className: "er-payment-layout er-payment-layout--no-sidebar", children: [
53288
+ /* @__PURE__ */ jsxs32("div", { className: "er-payment-layout-main", children: [
53289
+ /* @__PURE__ */ jsx47("div", { className: "er-steps-nav er-registration-shell__steps", "aria-hidden": "true", children: /* @__PURE__ */ jsx47("ol", { className: "er-steps", children: display.stepLabels.map((label, index) => {
53290
+ const isActive = index === 0;
53291
+ return /* @__PURE__ */ jsxs32("li", { className: "er-step", children: [
53292
+ /* @__PURE__ */ jsx47("span", { className: cx("er-step-circle", isActive && "er-step-circle--active"), children: index + 1 }),
53293
+ /* @__PURE__ */ jsx47("span", { className: cx("er-step-label", isActive && "er-step-label--active"), children: label }),
53294
+ index < display.stepLabels.length - 1 ? /* @__PURE__ */ jsx47("span", { className: "er-step-connector" }) : null
53295
+ ] }, label);
53296
+ }) }) }),
53297
+ /* @__PURE__ */ jsxs32("div", { className: "er-stack", children: [
53298
+ /* @__PURE__ */ jsxs32("div", { children: [
53299
+ /* @__PURE__ */ jsx47("p", { className: "er-registration-shell__eyebrow", children: "Registration" }),
53300
+ /* @__PURE__ */ jsx47("h3", { className: "er-title er-registration-shell__title", children: display.titleText }),
53301
+ /* @__PURE__ */ jsx47("p", { className: "er-text er-text--muted er-registration-shell__copy", children: display.bodyText })
53302
+ ] }),
53303
+ /* @__PURE__ */ jsxs32("div", { className: "er-event-grid er-registration-shell__cards", "aria-hidden": "true", children: [
53304
+ /* @__PURE__ */ jsxs32("div", { className: "er-event-card er-registration-shell__card", children: [
53305
+ /* @__PURE__ */ jsx47("div", { className: "er-registration-shell__line er-registration-shell__line--lg" }),
53306
+ /* @__PURE__ */ jsx47("div", { className: "er-registration-shell__line er-registration-shell__line--sm" })
53307
+ ] }),
53308
+ /* @__PURE__ */ jsxs32("div", { className: "er-event-card er-registration-shell__card", children: [
53309
+ /* @__PURE__ */ jsx47("div", { className: "er-registration-shell__line er-registration-shell__line--md" }),
53310
+ /* @__PURE__ */ jsx47("div", { className: "er-registration-shell__line er-registration-shell__line--xs" })
53311
+ ] })
53312
+ ] })
53313
+ ] })
53314
+ ] }),
53315
+ /* @__PURE__ */ jsx47("div", { className: "er-payment-layout-footer", children: /* @__PURE__ */ jsxs32("div", { className: "er-summary-bar er-registration-shell__summary", "aria-hidden": "true", children: [
53316
+ /* @__PURE__ */ jsxs32("div", { className: "er-summary-bar-info", children: [
53317
+ /* @__PURE__ */ jsx47("div", { className: "er-registration-shell__line er-registration-shell__line--md" }),
53318
+ /* @__PURE__ */ jsx47("div", { className: "er-registration-shell__line er-registration-shell__line--xs" })
53319
+ ] }),
53320
+ /* @__PURE__ */ jsx47("div", { className: "er-registration-shell__button-placeholder", children: display.summaryButtonText })
53321
+ ] }) })
53322
+ ] }) });
53323
+ }
52095
53324
  var event_registration_server_default = EventRegistrationSSR;
52096
53325
 
52097
53326
  // ../blocks/src/system/runtime/nodes/form.server.tsx
@@ -54353,7 +55582,7 @@ var MediaNode = ({
54353
55582
 
54354
55583
  // ../blocks/src/system/runtime/components/registry.client.tsx
54355
55584
  init_newsletter_form_client();
54356
- function isRecord7(value) {
55585
+ function isRecord9(value) {
54357
55586
  return typeof value === "object" && value !== null;
54358
55587
  }
54359
55588
  function buildRenderFromLooseProps(runtime, mode, props2) {
@@ -54373,14 +55602,14 @@ function withRuntimeBackedEnvelope(source, runtime, render) {
54373
55602
  function normalizeLegacyInteractiveRenderProps(runtime, mode, props2) {
54374
55603
  const source = props2;
54375
55604
  const render = props2["render"];
54376
- if (!isRecord7(render)) {
55605
+ if (!isRecord9(render)) {
54377
55606
  return withRuntimeBackedEnvelope(
54378
55607
  source,
54379
55608
  runtime,
54380
55609
  buildRenderFromLooseProps(runtime, mode, props2)
54381
55610
  );
54382
55611
  }
54383
- if (isRecord7(render["hydration"])) {
55612
+ if (isRecord9(render["hydration"])) {
54384
55613
  return withRuntimeBackedEnvelope(
54385
55614
  source,
54386
55615
  runtime,
@@ -54390,7 +55619,7 @@ function normalizeLegacyInteractiveRenderProps(runtime, mode, props2) {
54390
55619
  }
54391
55620
  );
54392
55621
  }
54393
- if (!isRecord7(render["display"])) {
55622
+ if (!isRecord9(render["display"])) {
54394
55623
  return withRuntimeBackedEnvelope(
54395
55624
  source,
54396
55625
  runtime,
@@ -54520,6 +55749,7 @@ init_curatedSiteStyles();
54520
55749
  // ../theme-core/src/inputs/generateInputCss.ts
54521
55750
  init_types11();
54522
55751
  init_constants();
55752
+ init_colorStyles();
54523
55753
 
54524
55754
  // ../theme-core/src/header/generateHeaderCss.ts
54525
55755
  init_resolver();
@@ -54718,6 +55948,11 @@ ${root} {
54718
55948
  --er-event-card-bg: rgb(var(--tb-surface));
54719
55949
  --er-event-card-border-width: var(--rb-border-width, 1px);
54720
55950
  --er-event-card-hover-opacity: 1;
55951
+ --er-control-bg: rgb(var(--tb-background, var(--tb-surface)));
55952
+ --er-control-text: rgb(var(--tb-foreground, var(--tb-text)));
55953
+ --er-radius: var(--rb-block-radius);
55954
+ --er-surface-muted: rgba(var(--tb-muted, 241 245 249), 0.42);
55955
+ --er-shell-line: rgba(var(--tb-mutedText, 100 116 139), 0.22);
54721
55956
 
54722
55957
  /* Step indicator */
54723
55958
  --er-step-active: rgb(var(--tb-primary));