@riverbankcms/sdk 0.85.0 → 0.88.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 (135) hide show
  1. package/dist/{PreviewEditorSidebar-4PH35ZIE.mjs → PreviewEditorSidebar-EVRS3C7T.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-WHMCRJGM.mjs → PreviewEditorUI-54WD4IGE.mjs} +3 -3
  3. package/dist/SdkPreviewModeRuntime-ZALZDJEK.mjs +8 -0
  4. package/dist/_dts/api/src/endpoints.d.ts +58 -14
  5. package/dist/_dts/api/src/index.d.ts +3 -0
  6. package/dist/_dts/api/src/launchReadiness.d.ts +3 -3
  7. package/dist/_dts/api/src/mailchimpIntegration.d.ts +215 -0
  8. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +35 -15
  9. package/dist/_dts/api/src/siteInfrastructure.d.ts +0 -14
  10. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -13
  11. package/dist/_dts/api/src/types.d.ts +6 -3
  12. package/dist/_dts/blocks/src/PageRenderer.d.ts +1 -0
  13. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -0
  14. package/dist/_dts/blocks/src/index.d.ts +2 -1
  15. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
  16. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
  17. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
  18. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
  19. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
  20. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
  21. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
  22. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +288 -288
  23. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
  24. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  25. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +42 -42
  26. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +300 -0
  27. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +63 -3
  28. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
  29. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
  30. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
  31. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +53 -1
  32. package/dist/_dts/blocks/src/system/manifest/richTextSchema.d.ts +27 -0
  33. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +23 -23
  34. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +10 -2
  35. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +24 -0
  36. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +12 -0
  37. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +1 -0
  38. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +4 -0
  39. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +1 -1
  40. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +11 -1
  41. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +15 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  43. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +32 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +5 -1
  45. package/dist/_dts/blocks/src/system/runtime/shared/components/ModalShell.d.ts +5 -1
  46. package/dist/_dts/blocks/src/system/runtime/shared/utils/formatting.d.ts +1 -1
  47. package/dist/_dts/content-model/src/referenceFields.d.ts +1 -1
  48. package/dist/_dts/core/src/currency-format.d.ts +37 -2
  49. package/dist/_dts/core/src/event-pricing.d.ts +24 -0
  50. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +549 -18
  51. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +3 -1
  52. package/dist/_dts/sdk/src/client/types.d.ts +9 -0
  53. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  54. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +3 -0
  55. package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +3 -9
  56. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +1 -1
  57. package/dist/_dts/sdk/src/manifest/three-pass-converter.d.ts +7 -18
  58. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  59. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -1
  60. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +7 -3
  61. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +4 -24
  62. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +45 -0
  63. package/dist/_dts/sdk/src/version.d.ts +1 -1
  64. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  65. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +9 -9
  66. package/dist/_dts/theme-core/src/schema.d.ts +11 -11
  67. package/dist/{chunk-ZR2GQK2A.mjs → chunk-7KOO7RPP.mjs} +953 -315
  68. package/dist/{chunk-OCGTXHSO.mjs → chunk-ER4UIW4X.mjs} +7 -7
  69. package/dist/{chunk-WFPYN7KA.mjs → chunk-HVOBXA3Y.mjs} +2 -2
  70. package/dist/{chunk-NFWGLRZZ.mjs → chunk-K3JWH6HE.mjs} +37 -3
  71. package/dist/{chunk-4QNLOTES.mjs → chunk-O4LVYUVH.mjs} +58 -14
  72. package/dist/{chunk-PYDHOMEO.mjs → chunk-YDMBIIS5.mjs} +1 -1
  73. package/dist/cli/index.mjs +408 -109
  74. package/dist/client/{accordion-2UZPBMYM.mjs → accordion-PT5CGW5N.mjs} +2 -2
  75. package/dist/client/{bookingForm-36CWQUMV.mjs → bookingForm-2HLRTEYS.mjs} +7 -7
  76. package/dist/client/bookings.mjs +51 -6
  77. package/dist/client/{carousel-QH77HR6X.mjs → carousel-Z2LKYSWA.mjs} +3 -3
  78. package/dist/client/cart-ND5IK4A6.mjs +18 -0
  79. package/dist/client/checkout-EYUSGAY7.mjs +18 -0
  80. package/dist/client/{chunk-SYIJ5JO2.mjs → chunk-6DVPO44G.mjs} +1 -1
  81. package/dist/client/{chunk-3C2VTPWI.mjs → chunk-BAWHZ5GM.mjs} +176 -13
  82. package/dist/client/{chunk-52CGCQ7B.mjs → chunk-BL66UWGD.mjs} +10 -80
  83. package/dist/client/{chunk-VGDBVNOO.mjs → chunk-DIRW2LNG.mjs} +241 -210
  84. package/dist/client/{chunk-UDNSI5PY.mjs → chunk-GOFO7HRH.mjs} +1 -2
  85. package/dist/client/{chunk-ZKUO52W3.mjs → chunk-H4MHEXYS.mjs} +1 -1
  86. package/dist/client/{chunk-ZE5G642V.mjs → chunk-LI2C6M5O.mjs} +75 -1
  87. package/dist/client/{chunk-3DTWLTXM.mjs → chunk-MHBEWDT7.mjs} +117 -3
  88. package/dist/client/{chunk-4OXKTA3D.mjs → chunk-O5JNI3E4.mjs} +2 -2
  89. package/dist/client/{chunk-XSV6KW4D.mjs → chunk-S4G65LGR.mjs} +1 -1
  90. package/dist/client/{chunk-DVNUDUVT.mjs → chunk-WBQG7VJA.mjs} +4 -1
  91. package/dist/client/{chunk-F5VRX5Y6.mjs → chunk-WCVK4MBJ.mjs} +1 -1
  92. package/dist/client/{chunk-7UCLJ5SP.mjs → chunk-X7GVFB7Y.mjs} +4 -7
  93. package/dist/client/client.mjs +2125 -1403
  94. package/dist/client/{courseRegistration-TMKU6ABO.mjs → courseRegistration-H3AZBUEG.mjs} +7 -7
  95. package/dist/client/{eventCalendar-G6TI32X6.mjs → eventCalendar-FPKJGLGS.mjs} +10 -11
  96. package/dist/client/{eventCombined-SCKEMNAR.mjs → eventCombined-QCGIZBUY.mjs} +10 -11
  97. package/dist/client/{eventDetails-XPIFXXPK.mjs → eventDetails-HIT3BJWU.mjs} +10 -11
  98. package/dist/client/{eventListing-7QFMEMGT.mjs → eventListing-R4HNWJDN.mjs} +10 -11
  99. package/dist/client/{eventRegistration-TOODSZUI.mjs → eventRegistration-Q7BYY5HF.mjs} +10 -11
  100. package/dist/client/{form-MTCMVCZT.mjs → form-NI6YOG6S.mjs} +3 -3
  101. package/dist/client/{headerSection-Y5TMR3TW.mjs → headerSection-SDYGII36.mjs} +4 -4
  102. package/dist/client/hooks.mjs +1682 -1412
  103. package/dist/client/{locationMap-RH2LG7FZ.mjs → locationMap-BDETEUQD.mjs} +3 -4
  104. package/dist/client/{newsletterForm-PCAIPFMA.mjs → newsletterForm-EKYIU67X.mjs} +70 -22
  105. package/dist/client/{productDetail-OIGDR4YE.mjs → productDetail-5UTGNN76.mjs} +8 -9
  106. package/dist/client/{productList-4MA5S2CX.mjs → productList-7YA5KXZQ.mjs} +8 -9
  107. package/dist/client/rendering/client.mjs +753 -329
  108. package/dist/client/rendering/islands.mjs +19 -19
  109. package/dist/client/rendering.mjs +3786 -3034
  110. package/dist/client/shop-AIMUMZYC.mjs +20 -0
  111. package/dist/preview-next/before-render.mjs +58 -14
  112. package/dist/preview-next/client/runtime.mjs +5 -5
  113. package/dist/preview-next/editor-chrome.css +56 -9
  114. package/dist/preview-next/middleware.mjs +58 -14
  115. package/dist/{sdk-runtime-QLOCYKVU.mjs → sdk-runtime-NW472WNT.mjs} +6 -6
  116. package/dist/server/components.mjs +1518 -1015
  117. package/dist/server/config-validation.mjs +1719 -1461
  118. package/dist/server/config.mjs +1719 -1461
  119. package/dist/server/data.mjs +1683 -1413
  120. package/dist/server/index.mjs +79 -17
  121. package/dist/server/next.mjs +1902 -1311
  122. package/dist/server/page-converter.mjs +2193 -1169
  123. package/dist/server/prebuild.mjs +1 -1
  124. package/dist/server/rendering/server.mjs +1709 -1209
  125. package/dist/server/rendering.mjs +1894 -1347
  126. package/dist/server/routing.mjs +1872 -1499
  127. package/dist/server/server.mjs +1571 -1264
  128. package/dist/server/theme-bridge.mjs +234 -0
  129. package/dist/styles/index.css +232 -0
  130. package/package.json +1 -1
  131. package/dist/SdkPreviewModeRuntime-4FGSVUYI.mjs +0 -8
  132. package/dist/client/cart-X4YK4FTW.mjs +0 -19
  133. package/dist/client/checkout-OM2BEPWD.mjs +0 -19
  134. package/dist/client/chunk-I2MMZO53.mjs +0 -6
  135. package/dist/client/shop-WXSYV5QO.mjs +0 -21
@@ -56,6 +56,43 @@ function err(error) {
56
56
  return { ok: false, error };
57
57
  }
58
58
 
59
+ // ../core/src/currency-format.ts
60
+ var CURRENCY_LOCALE_BY_CODE = {
61
+ USD: "en-US",
62
+ GBP: "en-GB",
63
+ EUR: "de-DE",
64
+ AUD: "en-AU",
65
+ CAD: "en-CA",
66
+ NZD: "en-NZ",
67
+ JPY: "ja-JP",
68
+ CNY: "zh-CN",
69
+ CHF: "de-CH"
70
+ };
71
+ function resolveCurrencyLocale(currencyCode, override) {
72
+ return override ?? CURRENCY_LOCALE_BY_CODE[currencyCode] ?? "en";
73
+ }
74
+ function formatCurrencyAmount(amountCents, currency, options) {
75
+ const currencyCode = currency.toUpperCase();
76
+ const locale = resolveCurrencyLocale(currencyCode, options?.locale);
77
+ try {
78
+ const exactFormatter = new Intl.NumberFormat(locale, {
79
+ style: "currency",
80
+ currency: currencyCode
81
+ });
82
+ const fractionDigits = options?.decimals === "auto" ? {
83
+ minimumFractionDigits: 0,
84
+ maximumFractionDigits: exactFormatter.resolvedOptions().maximumFractionDigits
85
+ } : {};
86
+ return new Intl.NumberFormat(locale, {
87
+ style: "currency",
88
+ currency: currencyCode,
89
+ ...fractionDigits
90
+ }).format(amountCents / 100);
91
+ } catch {
92
+ return `${(amountCents / 100).toFixed(2)} ${currencyCode}`;
93
+ }
94
+ }
95
+
59
96
  // ../core/src/event-pricing.ts
60
97
  function publicEventPricingType(pricing) {
61
98
  switch (pricing.kind) {
@@ -76,6 +113,7 @@ function isFreePublicEventPriceDisplay(display) {
76
113
  return display.display.kind === "free";
77
114
  case "exact":
78
115
  case "from":
116
+ case "range":
79
117
  case "mixed":
80
118
  case "unavailable":
81
119
  return false;
@@ -14528,15 +14566,53 @@ var newsletterFormFragment = defineFragment({
14528
14566
  title: "Newsletter Form",
14529
14567
  description: "Newsletter subscription form with preset field configurations.",
14530
14568
  fields: [
14569
+ {
14570
+ id: "destinationProvider",
14571
+ type: "select",
14572
+ label: "Send signups to",
14573
+ description: "Choose where new subscribers from this form should go.",
14574
+ defaultValue: "riverbank",
14575
+ required: true,
14576
+ ui: { intent: "behavior" },
14577
+ options: [
14578
+ { value: "riverbank", label: "Riverbank newsletter" }
14579
+ ]
14580
+ },
14531
14581
  {
14532
14582
  id: "listId",
14533
14583
  type: "reference",
14534
14584
  label: "Newsletter list",
14535
14585
  description: "Select the list new subscribers should be added to.",
14536
- required: true,
14586
+ required: false,
14537
14587
  referenceKind: "newsletterList",
14538
14588
  allowManualEntry: false,
14539
- ui: { intent: "behavior" }
14589
+ ui: {
14590
+ intent: "behavior",
14591
+ visibleWhen: { field: "destinationProvider", equals: "riverbank" }
14592
+ }
14593
+ },
14594
+ {
14595
+ id: "mailchimpAudienceId",
14596
+ type: "reference",
14597
+ label: "Mailchimp audience",
14598
+ description: "Choose the Mailchimp audience for new subscribers.",
14599
+ required: false,
14600
+ referenceKind: "mailchimpAudience",
14601
+ allowManualEntry: false,
14602
+ ui: {
14603
+ intent: "behavior",
14604
+ visibleWhen: { field: "destinationProvider", equals: "mailchimp" }
14605
+ }
14606
+ },
14607
+ {
14608
+ id: "mailchimpTags",
14609
+ type: "text",
14610
+ label: "Mailchimp tags",
14611
+ description: "Optional tags to apply in Mailchimp, separated by commas or semicolons.",
14612
+ ui: {
14613
+ intent: "behavior",
14614
+ visibleWhen: { field: "destinationProvider", equals: "mailchimp" }
14615
+ }
14540
14616
  },
14541
14617
  {
14542
14618
  id: "preset",
@@ -14583,13 +14659,18 @@ var newsletterFormFragment = defineFragment({
14583
14659
  id: "tags",
14584
14660
  type: "text",
14585
14661
  label: "Tags (optional)",
14586
- description: "Optional tags to apply on subscribe (comma or semicolon separated)."
14662
+ description: "Optional tags to apply on subscribe (comma or semicolon separated).",
14663
+ ui: {
14664
+ intent: "behavior",
14665
+ visibleWhen: { field: "destinationProvider", equals: "riverbank" }
14666
+ }
14587
14667
  }
14588
14668
  ],
14589
14669
  layout: [
14590
14670
  el(
14591
14671
  "newsletter-form",
14592
14672
  withApiBindings({
14673
+ destinationProvider: { $bind: { from: "destinationProvider" } },
14593
14674
  listId: { $bind: { from: "listId" } },
14594
14675
  preset: { $bind: { from: "preset" } },
14595
14676
  includePhone: { $bind: { from: "includePhone" } },
@@ -18969,10 +19050,10 @@ var appointmentBookingBlockDefinition = {
18969
19050
  };
18970
19051
 
18971
19052
  // ../blocks/src/system/blocks/event-registration.ts
18972
- import { z as z39 } from "zod";
19053
+ import { z as z40 } from "zod";
18973
19054
 
18974
19055
  // ../blocks/src/system/blocks/events/shared/schemas.ts
18975
- import { z as z35 } from "zod";
19056
+ import { z as z36 } from "zod";
18976
19057
 
18977
19058
  // ../blocks/src/lib/media.ts
18978
19059
  import z32 from "zod";
@@ -19050,296 +19131,386 @@ var mediaSchema2 = z32.discriminatedUnion("type", [
19050
19131
  archiveMediaSchema
19051
19132
  ]);
19052
19133
 
19053
- // ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
19134
+ // ../blocks/src/system/manifest/richTextSchema.ts
19054
19135
  import { z as z33 } from "zod";
19055
- var bookingDepositRefundPolicySchema = z33.enum([
19136
+ var TipTapMarkSchema = z33.object({
19137
+ type: z33.string(),
19138
+ attrs: z33.record(z33.string(), z33.unknown()).optional()
19139
+ });
19140
+ var TipTapNodeSchema = z33.lazy(
19141
+ () => z33.object({
19142
+ type: z33.string(),
19143
+ content: z33.array(TipTapNodeSchema).optional(),
19144
+ text: z33.string().optional(),
19145
+ attrs: z33.record(z33.string(), z33.unknown()).optional(),
19146
+ marks: z33.array(TipTapMarkSchema).optional()
19147
+ })
19148
+ );
19149
+ var RichTextValueSchema = z33.union([
19150
+ // Canonical: TipTap document directly
19151
+ TipTapNodeSchema,
19152
+ // Legacy (read-tolerance only): wrapped in { doc: {...} }
19153
+ z33.object({
19154
+ doc: TipTapNodeSchema
19155
+ })
19156
+ ]);
19157
+ var RichTextDocSchema = z33.object({
19158
+ type: z33.literal("doc"),
19159
+ content: z33.array(TipTapNodeSchema)
19160
+ });
19161
+ function createHardBreakNode() {
19162
+ return { type: "hardBreak" };
19163
+ }
19164
+ function parseRichTextInlineMarkdown(text2) {
19165
+ const out = [];
19166
+ const pushText = (value, marks) => {
19167
+ if (!value) return;
19168
+ out.push(
19169
+ marks && marks.length > 0 ? { type: "text", text: value, marks } : { type: "text", text: value }
19170
+ );
19171
+ };
19172
+ let rest = text2;
19173
+ while (rest.length > 0) {
19174
+ const start = rest.indexOf("**");
19175
+ if (start === -1) {
19176
+ pushText(rest);
19177
+ break;
19178
+ }
19179
+ const end = rest.indexOf("**", start + 2);
19180
+ if (end === -1) {
19181
+ pushText(rest);
19182
+ break;
19183
+ }
19184
+ pushText(rest.slice(0, start));
19185
+ pushText(rest.slice(start + 2, end), [{ type: "bold" }]);
19186
+ rest = rest.slice(end + 2);
19187
+ }
19188
+ return out;
19189
+ }
19190
+ function parseRichTextParagraphInlineMarkdown(text2) {
19191
+ return text2.split("\n").flatMap((line, index) => {
19192
+ const lineNodes = parseRichTextInlineMarkdown(line.trim());
19193
+ return index === 0 ? lineNodes : [createHardBreakNode(), ...lineNodes];
19194
+ });
19195
+ }
19196
+ function createRichTextDocFromMarkdown(markdown) {
19197
+ const normalized = markdown.replace(/\r\n/g, "\n").trim();
19198
+ if (!normalized) return { type: "doc", content: [] };
19199
+ const paragraphs = normalized.split(/\n{2,}/).map((paragraph) => paragraph.trim()).filter(Boolean);
19200
+ return {
19201
+ type: "doc",
19202
+ content: paragraphs.map((paragraph) => {
19203
+ const inline2 = parseRichTextParagraphInlineMarkdown(paragraph);
19204
+ return inline2.length > 0 ? { type: "paragraph", content: inline2 } : { type: "paragraph" };
19205
+ })
19206
+ };
19207
+ }
19208
+
19209
+ // ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
19210
+ import { z as z34 } from "zod";
19211
+ var bookingDepositRefundPolicySchema = z34.enum([
19056
19212
  "refundable",
19057
19213
  "non_refundable"
19058
19214
  ]);
19059
- var bookingInstalmentPlanSchema = z33.union([
19060
- z33.object({
19061
- kind: z33.literal("deposit_plus_one_remainder"),
19062
- depositAmountCents: z33.number().int().min(0),
19215
+ var bookingInstalmentPlanSchema = z34.union([
19216
+ z34.object({
19217
+ kind: z34.literal("deposit_plus_one_remainder"),
19218
+ depositAmountCents: z34.number().int().min(0),
19063
19219
  depositRefundability: bookingDepositRefundPolicySchema,
19064
- remainderDueCount: z33.number().int().positive(),
19065
- intervalUnit: z33.enum(["day", "week", "month"])
19220
+ remainderDueCount: z34.number().int().positive(),
19221
+ intervalUnit: z34.enum(["day", "week", "month"])
19066
19222
  }),
19067
- z33.object({
19068
- kind: z33.literal("deposit_plus_scheduled_instalments"),
19069
- depositAmountCents: z33.number().int().min(0),
19223
+ z34.object({
19224
+ kind: z34.literal("deposit_plus_scheduled_instalments"),
19225
+ depositAmountCents: z34.number().int().min(0),
19070
19226
  depositRefundability: bookingDepositRefundPolicySchema,
19071
- instalmentCount: z33.number().int().positive(),
19072
- intervalCount: z33.number().int().positive(),
19073
- intervalUnit: z33.enum(["day", "week", "month"])
19227
+ instalmentCount: z34.number().int().positive(),
19228
+ intervalCount: z34.number().int().positive(),
19229
+ intervalUnit: z34.enum(["day", "week", "month"])
19074
19230
  }),
19075
- z33.object({
19076
- kind: z33.literal("equal_scheduled_instalments"),
19077
- instalmentCount: z33.number().int().positive(),
19078
- intervalCount: z33.number().int().positive(),
19079
- intervalUnit: z33.enum(["day", "week", "month"])
19231
+ z34.object({
19232
+ kind: z34.literal("equal_scheduled_instalments"),
19233
+ instalmentCount: z34.number().int().positive(),
19234
+ intervalCount: z34.number().int().positive(),
19235
+ intervalUnit: z34.enum(["day", "week", "month"])
19080
19236
  })
19081
19237
  ]);
19082
- var bookingFlexibleBalanceDueDateRuleSchema = z33.union([
19083
- z33.object({
19084
- kind: z33.literal("relative_to_start_date"),
19085
- daysBeforeStart: z33.number().int().positive()
19238
+ var bookingFlexibleBalanceDueDateRuleSchema = z34.union([
19239
+ z34.object({
19240
+ kind: z34.literal("relative_to_start_date"),
19241
+ daysBeforeStart: z34.number().int().positive()
19086
19242
  }),
19087
- z33.object({
19088
- kind: z33.literal("fixed_calendar_date"),
19089
- dueAt: z33.string().datetime()
19243
+ z34.object({
19244
+ kind: z34.literal("fixed_calendar_date"),
19245
+ dueAt: z34.string().datetime()
19090
19246
  })
19091
19247
  ]);
19092
- var bookingFlexibleBalanceConfigSchema = z33.object({
19093
- upfrontAmountCents: z33.number().int().min(0),
19248
+ var bookingFlexibleBalanceConfigSchema = z34.object({
19249
+ upfrontAmountCents: z34.number().int().min(0),
19094
19250
  dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
19095
19251
  depositRefundability: bookingDepositRefundPolicySchema
19096
19252
  });
19097
- var blockBookingPaymentCollectionOptionSchema = z33.union([
19098
- z33.object({
19099
- kind: z33.literal("upfront")
19253
+ var blockBookingPaymentCollectionOptionSchema = z34.union([
19254
+ z34.object({
19255
+ kind: z34.literal("upfront")
19100
19256
  }),
19101
- z33.object({
19102
- kind: z33.literal("deferred_manual")
19257
+ z34.object({
19258
+ kind: z34.literal("deferred_manual")
19103
19259
  }),
19104
- z33.object({
19105
- kind: z33.literal("instalment_plan"),
19260
+ z34.object({
19261
+ kind: z34.literal("instalment_plan"),
19106
19262
  plan: bookingInstalmentPlanSchema
19107
19263
  }),
19108
- z33.object({
19109
- kind: z33.literal("flexible_balance"),
19264
+ z34.object({
19265
+ kind: z34.literal("flexible_balance"),
19110
19266
  config: bookingFlexibleBalanceConfigSchema
19111
19267
  })
19112
19268
  ]);
19113
- var blockBookingPaymentTermsSchema = z33.object({
19114
- allowedOptions: z33.array(blockBookingPaymentCollectionOptionSchema).min(1)
19269
+ var blockBookingPaymentTermsSchema = z34.object({
19270
+ allowedOptions: z34.array(blockBookingPaymentCollectionOptionSchema).min(1)
19115
19271
  });
19116
19272
 
19117
19273
  // ../blocks/src/system/blocks/courses/shared/schemas.ts
19118
- import { z as z34 } from "zod";
19119
- var courseVenueSchema = z34.object({
19120
- id: z34.string(),
19121
- name: z34.string(),
19122
- address: z34.string().nullable()
19123
- });
19124
- var courseSessionSchema = z34.object({
19125
- id: z34.string(),
19126
- startsAt: z34.string(),
19127
- endsAt: z34.string(),
19128
- timeZone: z34.string(),
19129
- capacityOverride: z34.number().nullable().optional(),
19130
- overrides: z34.record(z34.string(), z34.unknown()).nullable().optional()
19131
- });
19132
- var courseTeamMemberSummarySchema = z34.object({
19133
- id: z34.string(),
19134
- name: z34.string(),
19135
- roleLabel: z34.string().nullable(),
19136
- summary: z34.string().nullable(),
19137
- profilePath: z34.string().nullable()
19138
- });
19139
- var coursePricingOptionSchema = z34.object({
19140
- id: z34.string(),
19141
- name: z34.string(),
19142
- description: z34.string().nullable(),
19143
- priceAmount: z34.number(),
19144
- isActive: z34.boolean(),
19145
- sortOrder: z34.number(),
19146
- capacityLimit: z34.number().nullable(),
19147
- saleStartsAt: z34.string().nullable(),
19148
- saleEndsAt: z34.string().nullable(),
19149
- attendanceScope: z34.enum(["in_person", "online", "both"]).nullable().optional()
19150
- });
19151
- var coursePricingSchema = z34.object({
19152
- bookingRequirement: z34.enum(["none", "required"]),
19153
- pricingStrategy: z34.enum(["free", "single", "tiered"]),
19154
- currency: z34.string(),
19155
- singlePriceAmount: z34.number().nullable(),
19274
+ import { z as z35 } from "zod";
19275
+ var courseVenueSchema = z35.object({
19276
+ id: z35.string(),
19277
+ name: z35.string(),
19278
+ address: z35.string().nullable()
19279
+ });
19280
+ var courseSessionSchema = z35.object({
19281
+ id: z35.string(),
19282
+ startsAt: z35.string(),
19283
+ endsAt: z35.string(),
19284
+ timeZone: z35.string(),
19285
+ capacityOverride: z35.number().nullable().optional(),
19286
+ overrides: z35.record(z35.string(), z35.unknown()).nullable().optional()
19287
+ });
19288
+ var courseTeamMemberSummarySchema = z35.object({
19289
+ id: z35.string(),
19290
+ name: z35.string(),
19291
+ roleLabel: z35.string().nullable(),
19292
+ summary: z35.string().nullable(),
19293
+ profilePath: z35.string().nullable()
19294
+ });
19295
+ var coursePricingOptionSchema = z35.object({
19296
+ id: z35.string(),
19297
+ name: z35.string(),
19298
+ description: z35.string().nullable(),
19299
+ priceAmount: z35.number(),
19300
+ isActive: z35.boolean(),
19301
+ sortOrder: z35.number(),
19302
+ capacityLimit: z35.number().nullable(),
19303
+ saleStartsAt: z35.string().nullable(),
19304
+ saleEndsAt: z35.string().nullable(),
19305
+ attendanceScope: z35.enum(["in_person", "online", "both"]).nullable().optional()
19306
+ });
19307
+ var coursePricingSchema = z35.object({
19308
+ bookingRequirement: z35.enum(["none", "required"]),
19309
+ pricingStrategy: z35.enum(["free", "single", "tiered"]),
19310
+ currency: z35.string(),
19311
+ singlePriceAmount: z35.number().nullable(),
19156
19312
  paymentTerms: blockBookingPaymentTermsSchema,
19157
- options: z34.array(coursePricingOptionSchema)
19158
- });
19159
- var publicCourseSchema = z34.object({
19160
- id: z34.string(),
19161
- title: z34.string(),
19162
- slug: z34.string(),
19163
- description: z34.unknown().nullable(),
19164
- teamMembers: z34.array(courseTeamMemberSummarySchema).optional(),
19165
- enrollmentOpen: z34.boolean(),
19313
+ options: z35.array(coursePricingOptionSchema)
19314
+ });
19315
+ var publicCourseSchema = z35.object({
19316
+ id: z35.string(),
19317
+ title: z35.string(),
19318
+ slug: z35.string(),
19319
+ description: z35.unknown().nullable(),
19320
+ teamMembers: z35.array(courseTeamMemberSummarySchema).optional(),
19321
+ enrollmentOpen: z35.boolean(),
19166
19322
  pricing: coursePricingSchema.optional(),
19167
- priceCents: z34.number().nullable(),
19168
- currency: z34.string(),
19323
+ priceCents: z35.number().nullable(),
19324
+ currency: z35.string(),
19169
19325
  paymentTerms: blockBookingPaymentTermsSchema,
19170
- enrollmentCapacity: z34.number().nullable(),
19171
- acceptsMemberships: z34.boolean(),
19172
- status: z34.enum(["active", "draft", "cancelled"]),
19173
- sessionsCount: z34.number(),
19174
- enrolledCount: z34.number(),
19175
- availableSpots: z34.number().nullable(),
19176
- sessions: z34.array(courseSessionSchema),
19326
+ enrollmentCapacity: z35.number().nullable(),
19327
+ acceptsMemberships: z35.boolean(),
19328
+ status: z35.enum(["active", "draft", "cancelled"]),
19329
+ sessionsCount: z35.number(),
19330
+ enrolledCount: z35.number(),
19331
+ availableSpots: z35.number().nullable(),
19332
+ sessions: z35.array(courseSessionSchema),
19177
19333
  venue: courseVenueSchema.nullable(),
19178
- contentEntryId: z34.string().nullable()
19334
+ contentEntryId: z35.string().nullable()
19179
19335
  });
19180
- var publicCoursesArraySchema = z34.array(publicCourseSchema);
19336
+ var publicCoursesArraySchema = z35.array(publicCourseSchema);
19181
19337
 
19182
19338
  // ../blocks/src/system/blocks/events/shared/schemas.ts
19183
- var eventPresetSchema = z35.enum(["event", "class", "workshop", "retreat", "performance"]);
19184
- var eventScheduleScopeSchema = z35.enum(["recurring", "oneOff"]);
19185
- var eventDestinationModeSchema = z35.enum(["cms-managed", "system-managed"]);
19186
- var eventVenueSchema = z35.object({
19187
- id: z35.string(),
19188
- name: z35.string(),
19189
- address: z35.string().nullable(),
19190
- location: z35.object({
19191
- lat: z35.number(),
19192
- lng: z35.number()
19339
+ var eventPresetSchema = z36.enum(["event", "class", "workshop", "retreat", "performance"]);
19340
+ var eventScheduleScopeSchema = z36.enum(["recurring", "oneOff"]);
19341
+ var eventDestinationModeSchema = z36.enum(["cms-managed", "system-managed"]);
19342
+ var eventVenueSchema = z36.object({
19343
+ id: z36.string(),
19344
+ name: z36.string(),
19345
+ address: z36.string().nullable(),
19346
+ location: z36.object({
19347
+ lat: z36.number(),
19348
+ lng: z36.number()
19193
19349
  }).nullable()
19194
19350
  });
19195
- var eventCategorySchema = z35.object({
19196
- id: z35.string(),
19197
- name: z35.string(),
19198
- color: z35.string().nullable()
19199
- });
19200
- var pricingTypeSchema = z35.enum(["free", "paid"]);
19201
- var accessRestrictionSchema = z35.enum(["none", "category"]);
19202
- var eventPricingModeSchema = z35.enum(["single", "ticket_types"]);
19203
- var publicCoursePriceDisplaySchema = z35.discriminatedUnion("kind", [
19204
- z35.object({ kind: z35.literal("free"), currency: z35.string() }),
19205
- z35.object({ kind: z35.literal("exact"), amount: z35.number(), currency: z35.string() }),
19206
- z35.object({ kind: z35.literal("from"), amount: z35.number(), currency: z35.string() }),
19207
- z35.object({ kind: z35.literal("unavailable"), currency: z35.string() })
19351
+ var eventCategorySchema = z36.object({
19352
+ id: z36.string(),
19353
+ name: z36.string(),
19354
+ color: z36.string().nullable()
19355
+ });
19356
+ var pricingTypeSchema = z36.enum(["free", "paid"]);
19357
+ var accessRestrictionSchema = z36.enum(["none", "category"]);
19358
+ var eventPricingModeSchema = z36.enum(["single", "ticket_types"]);
19359
+ var publicCoursePriceDisplaySchema = z36.discriminatedUnion("kind", [
19360
+ z36.object({ kind: z36.literal("free"), currency: z36.string() }),
19361
+ z36.object({ kind: z36.literal("exact"), amount: z36.number(), currency: z36.string() }),
19362
+ z36.object({ kind: z36.literal("from"), amount: z36.number(), currency: z36.string() }),
19363
+ z36.object({ kind: z36.literal("unavailable"), currency: z36.string() })
19208
19364
  ]);
19209
- var publicEventPriceDisplaySchema = z35.discriminatedUnion("kind", [
19210
- z35.object({ kind: z35.literal("free"), currency: z35.string() }),
19211
- z35.object({ kind: z35.literal("exact"), amount: z35.number(), currency: z35.string() }),
19212
- z35.object({ kind: z35.literal("from"), amount: z35.number(), currency: z35.string() }),
19213
- z35.object({ kind: z35.literal("mixed"), paidFromAmount: z35.number(), currency: z35.string() }),
19214
- z35.object({ kind: z35.literal("unavailable"), currency: z35.string() }),
19215
- z35.object({ kind: z35.literal("course"), display: publicCoursePriceDisplaySchema })
19365
+ var publicEventPriceDisplaySchema = z36.discriminatedUnion("kind", [
19366
+ z36.object({ kind: z36.literal("free"), currency: z36.string() }),
19367
+ z36.object({ kind: z36.literal("exact"), amount: z36.number(), currency: z36.string() }),
19368
+ z36.object({ kind: z36.literal("from"), amount: z36.number(), currency: z36.string() }),
19369
+ z36.object({ kind: z36.literal("range"), minAmount: z36.number(), maxAmount: z36.number(), currency: z36.string() }),
19370
+ z36.object({
19371
+ kind: z36.literal("mixed"),
19372
+ paidFromAmount: z36.number(),
19373
+ paidToAmount: z36.number(),
19374
+ currency: z36.string()
19375
+ }),
19376
+ z36.object({ kind: z36.literal("unavailable"), currency: z36.string() }),
19377
+ z36.object({ kind: z36.literal("course"), display: publicCoursePriceDisplaySchema })
19216
19378
  ]);
19217
- var publicEventTicketTypePriceDisplaySchema = z35.union([
19218
- z35.object({ kind: z35.literal("free"), currency: z35.string() }),
19219
- z35.object({ kind: z35.literal("exact"), amount: z35.number(), currency: z35.string() }),
19220
- z35.object({ kind: z35.literal("from"), amount: z35.number(), currency: z35.string() }),
19221
- z35.object({ kind: z35.literal("mixed"), paidFromAmount: z35.number(), currency: z35.string() }),
19222
- z35.object({ kind: z35.literal("unavailable"), currency: z35.string() })
19379
+ var publicEventTicketTypePriceDisplaySchema = z36.union([
19380
+ z36.object({ kind: z36.literal("free"), currency: z36.string() }),
19381
+ z36.object({ kind: z36.literal("exact"), amount: z36.number(), currency: z36.string() }),
19382
+ z36.object({ kind: z36.literal("from"), amount: z36.number(), currency: z36.string() }),
19383
+ z36.object({ kind: z36.literal("range"), minAmount: z36.number(), maxAmount: z36.number(), currency: z36.string() }),
19384
+ z36.object({
19385
+ kind: z36.literal("mixed"),
19386
+ paidFromAmount: z36.number(),
19387
+ paidToAmount: z36.number(),
19388
+ currency: z36.string()
19389
+ }),
19390
+ z36.object({ kind: z36.literal("unavailable"), currency: z36.string() })
19223
19391
  ]);
19224
- var publicEventAttendanceModeSchema = z35.enum(["in_person", "online"]);
19225
- var publicEventAttendanceModeAvailabilitySchema = z35.object({
19392
+ var publicEventAttendanceModeSchema = z36.enum(["in_person", "online"]);
19393
+ var publicEventAttendanceModeAvailabilitySchema = z36.object({
19226
19394
  mode: publicEventAttendanceModeSchema,
19227
- capacity: z35.number().nullable(),
19228
- registeredCount: z35.number(),
19229
- availableSpots: z35.number().nullable(),
19230
- waitlistEnabled: z35.boolean()
19231
- });
19232
- var publicEventTicketTypeAvailabilitySchema = z35.union([
19233
- z35.object({
19234
- kind: z35.literal("available"),
19235
- remainingCapacity: z35.number().nullable()
19395
+ capacity: z36.number().nullable(),
19396
+ registeredCount: z36.number(),
19397
+ availableSpots: z36.number().nullable(),
19398
+ waitlistEnabled: z36.boolean()
19399
+ });
19400
+ var publicEventTicketTypeAvailabilitySchema = z36.union([
19401
+ z36.object({
19402
+ kind: z36.literal("available"),
19403
+ remainingCapacity: z36.number().nullable()
19236
19404
  }),
19237
- z35.object({
19238
- kind: z35.literal("unavailable"),
19239
- reason: z35.enum(["inactive", "not_on_sale_yet", "sale_ended", "sold_out", "event_sold_out"]),
19240
- remainingCapacity: z35.number().nullable()
19405
+ z36.object({
19406
+ kind: z36.literal("unavailable"),
19407
+ reason: z36.enum(["inactive", "not_on_sale_yet", "sale_ended", "sold_out", "event_sold_out"]),
19408
+ remainingCapacity: z36.number().nullable()
19241
19409
  })
19242
19410
  ]);
19243
- var publicEventTicketTypeSchema = z35.object({
19244
- id: z35.string(),
19245
- siteId: z35.string(),
19246
- eventSeriesId: z35.string(),
19247
- name: z35.string(),
19248
- description: z35.string().nullable(),
19249
- priceAmount: z35.number(),
19250
- isActive: z35.boolean(),
19251
- sortOrder: z35.number(),
19252
- capacityMode: z35.enum(["limited", "unlimited"]),
19253
- capacityLimit: z35.number().nullable(),
19254
- attendanceScope: z35.enum(["in_person", "online", "both"]).optional(),
19255
- saleStartsAt: z35.string().nullable(),
19256
- saleEndsAt: z35.string().nullable(),
19411
+ var publicEventTicketTypeSchema = z36.object({
19412
+ id: z36.string(),
19413
+ siteId: z36.string(),
19414
+ eventSeriesId: z36.string(),
19415
+ name: z36.string(),
19416
+ description: z36.string().nullable(),
19417
+ priceAmount: z36.number(),
19418
+ isActive: z36.boolean(),
19419
+ sortOrder: z36.number(),
19420
+ capacityMode: z36.enum(["limited", "unlimited"]),
19421
+ capacityLimit: z36.number().nullable(),
19422
+ attendanceScope: z36.enum(["in_person", "online", "both"]).optional(),
19423
+ saleStartsAt: z36.string().nullable(),
19424
+ saleEndsAt: z36.string().nullable(),
19257
19425
  availability: publicEventTicketTypeAvailabilitySchema,
19258
- createdAt: z35.string(),
19259
- updatedAt: z35.string()
19260
- });
19261
- var publicEventPricingSchema = z35.discriminatedUnion("kind", [
19262
- z35.object({
19263
- kind: z35.literal("drop_in"),
19264
- currency: z35.string(),
19265
- display: z35.object({ kind: z35.literal("free"), currency: z35.string() })
19426
+ createdAt: z36.string(),
19427
+ updatedAt: z36.string()
19428
+ });
19429
+ var publicEventPricingSchema = z36.discriminatedUnion("kind", [
19430
+ z36.object({
19431
+ kind: z36.literal("drop_in"),
19432
+ currency: z36.string(),
19433
+ display: z36.object({ kind: z36.literal("free"), currency: z36.string() })
19266
19434
  }),
19267
- z35.object({
19268
- kind: z35.literal("free_registration"),
19269
- currency: z35.string(),
19270
- display: z35.object({ kind: z35.literal("free"), currency: z35.string() })
19435
+ z36.object({
19436
+ kind: z36.literal("free_registration"),
19437
+ currency: z36.string(),
19438
+ display: z36.object({ kind: z36.literal("free"), currency: z36.string() })
19271
19439
  }),
19272
- z35.object({
19273
- kind: z35.literal("single_paid"),
19274
- amount: z35.number(),
19275
- currency: z35.string(),
19276
- display: z35.object({ kind: z35.literal("exact"), amount: z35.number(), currency: z35.string() })
19440
+ z36.object({
19441
+ kind: z36.literal("single_paid"),
19442
+ amount: z36.number(),
19443
+ currency: z36.string(),
19444
+ display: z36.object({ kind: z36.literal("exact"), amount: z36.number(), currency: z36.string() })
19277
19445
  }),
19278
- z35.object({
19279
- kind: z35.literal("ticket_types"),
19280
- currency: z35.string(),
19281
- ticketTypes: z35.array(publicEventTicketTypeSchema),
19446
+ z36.object({
19447
+ kind: z36.literal("ticket_types"),
19448
+ currency: z36.string(),
19449
+ ticketTypes: z36.array(publicEventTicketTypeSchema),
19282
19450
  display: publicEventTicketTypePriceDisplaySchema
19283
19451
  }),
19284
- z35.object({
19285
- kind: z35.literal("course"),
19286
- display: z35.object({ kind: z35.literal("course"), display: publicCoursePriceDisplaySchema })
19452
+ z36.object({
19453
+ kind: z36.literal("course"),
19454
+ display: z36.object({ kind: z36.literal("course"), display: publicCoursePriceDisplaySchema })
19287
19455
  })
19288
19456
  ]);
19289
- var publicTeamMemberSummarySchema = z35.object({
19290
- id: z35.string(),
19291
- name: z35.string(),
19292
- roleLabel: z35.string().nullable(),
19293
- summary: z35.string().nullable(),
19294
- profilePath: z35.string().nullable()
19457
+ var publicTeamMemberSummarySchema = z36.object({
19458
+ id: z36.string(),
19459
+ name: z36.string(),
19460
+ roleLabel: z36.string().nullable(),
19461
+ summary: z36.string().nullable(),
19462
+ profilePath: z36.string().nullable()
19295
19463
  });
19296
- var publicEventSchema = z35.object({
19297
- kind: z35.enum(["event", "course_session"]).optional(),
19464
+ var publicEventSchema = z36.object({
19465
+ kind: z36.enum(["event", "course_session"]).optional(),
19298
19466
  eventPreset: eventPresetSchema.optional(),
19299
19467
  eventDestinationMode: eventDestinationModeSchema.optional(),
19300
19468
  scheduleScope: eventScheduleScopeSchema.optional(),
19301
- id: z35.string(),
19302
- occurrenceId: z35.string(),
19303
- seriesId: z35.string(),
19304
- title: z35.string(),
19305
- description: z35.string().nullable(),
19306
- presentation: z35.object({
19307
- cardTitleOverride: z35.string().nullable().optional(),
19308
- summary: z35.string().nullable().optional(),
19469
+ id: z36.string(),
19470
+ occurrenceId: z36.string(),
19471
+ seriesId: z36.string(),
19472
+ title: z36.string(),
19473
+ description: z36.string().nullable(),
19474
+ content: z36.object({
19475
+ body: RichTextDocSchema.nullable().optional()
19476
+ }).optional(),
19477
+ presentation: z36.object({
19478
+ cardTitleOverride: z36.string().nullable().optional(),
19479
+ summary: z36.string().nullable().optional(),
19309
19480
  image: mediaSchema2.nullable().optional()
19310
19481
  }).optional(),
19311
- slug: z35.string(),
19312
- path: z35.string(),
19313
- requiresRegistration: z35.boolean(),
19314
- deliveryMode: z35.enum(["in_person", "online", "hybrid"]),
19315
- attendanceModes: z35.array(publicEventAttendanceModeAvailabilitySchema),
19316
- startsAt: z35.string(),
19317
- endsAt: z35.string(),
19318
- capacity: z35.number().nullable(),
19319
- registeredCount: z35.number(),
19320
- availableSpots: z35.number().nullable(),
19321
- waitlistEnabled: z35.boolean(),
19482
+ slug: z36.string(),
19483
+ path: z36.string(),
19484
+ requiresRegistration: z36.boolean(),
19485
+ deliveryMode: z36.enum(["in_person", "online", "hybrid"]),
19486
+ attendanceModes: z36.array(publicEventAttendanceModeAvailabilitySchema),
19487
+ startsAt: z36.string(),
19488
+ endsAt: z36.string(),
19489
+ capacity: z36.number().nullable(),
19490
+ registeredCount: z36.number(),
19491
+ availableSpots: z36.number().nullable(),
19492
+ waitlistEnabled: z36.boolean(),
19322
19493
  venue: eventVenueSchema.nullable(),
19323
19494
  eventCategory: eventCategorySchema.nullable(),
19324
- teamMembers: z35.array(publicTeamMemberSummarySchema).optional(),
19325
- status: z35.enum(["active", "draft", "archived"]).optional(),
19326
- timeZone: z35.string(),
19495
+ teamMembers: z36.array(publicTeamMemberSummarySchema).optional(),
19496
+ status: z36.enum(["active", "draft", "archived"]).optional(),
19497
+ timeZone: z36.string(),
19327
19498
  pricing: publicEventPricingSchema,
19328
19499
  paymentTerms: blockBookingPaymentTermsSchema,
19329
19500
  accessRestriction: accessRestrictionSchema,
19330
- allowedCategoryIds: z35.array(z35.string()),
19331
- requireGuestDetails: z35.boolean().optional(),
19332
- acceptsPasses: z35.boolean().optional(),
19333
- acceptsMemberships: z35.boolean().optional(),
19334
- course: z35.object({
19335
- id: z35.string(),
19501
+ allowedCategoryIds: z36.array(z36.string()),
19502
+ requireGuestDetails: z36.boolean().optional(),
19503
+ acceptsPasses: z36.boolean().optional(),
19504
+ acceptsMemberships: z36.boolean().optional(),
19505
+ course: z36.object({
19506
+ id: z36.string(),
19336
19507
  pricing: coursePricingSchema.optional(),
19337
- priceCents: z35.number().nullable(),
19338
- currency: z35.string(),
19339
- enrollmentOpen: z35.boolean()
19508
+ priceCents: z36.number().nullable(),
19509
+ currency: z36.string(),
19510
+ enrollmentOpen: z36.boolean()
19340
19511
  }).nullable().optional()
19341
19512
  });
19342
- var publicEventsArraySchema = z35.array(publicEventSchema);
19513
+ var publicEventsArraySchema = z36.array(publicEventSchema);
19343
19514
 
19344
19515
  // ../blocks/src/system/blocks/events/shared/fields.ts
19345
19516
  var cardVariantOptions2 = cardVariantRoleValues.map((value) => ({
@@ -19543,19 +19714,19 @@ function normalizeEventStaffMemberId(value) {
19543
19714
  }
19544
19715
 
19545
19716
  // ../blocks/src/system/blocks/event-registration.shared.ts
19546
- import { z as z36 } from "zod";
19547
- var occurrenceContextSchema = z36.object({
19548
- id: z36.string(),
19549
- seriesId: z36.string(),
19550
- startsAt: z36.string(),
19551
- endsAt: z36.string(),
19552
- timeZone: z36.string(),
19553
- capacityOverride: z36.number().nullable().optional(),
19554
- overrides: z36.record(z36.string(), z36.unknown()).nullable().optional()
19717
+ import { z as z37 } from "zod";
19718
+ var occurrenceContextSchema = z37.object({
19719
+ id: z37.string(),
19720
+ seriesId: z37.string(),
19721
+ startsAt: z37.string(),
19722
+ endsAt: z37.string(),
19723
+ timeZone: z37.string(),
19724
+ capacityOverride: z37.number().nullable().optional(),
19725
+ overrides: z37.record(z37.string(), z37.unknown()).nullable().optional()
19555
19726
  }).nullable();
19556
19727
 
19557
19728
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
19558
- import { z as z38 } from "zod";
19729
+ import { z as z39 } from "zod";
19559
19730
 
19560
19731
  // ../blocks/src/system/constants/events.ts
19561
19732
  var EVENT_CONTENT_TYPE_SLUGS = ["event", "events"];
@@ -19653,10 +19824,21 @@ function readLegacyPriceDisplay(value, currency) {
19653
19824
  amount: readAmount(value.amount) ?? 0,
19654
19825
  currency: displayCurrency
19655
19826
  } : { kind: "unavailable", currency };
19827
+ case "range": {
19828
+ const minAmount = readAmount(value.minAmount);
19829
+ const maxAmount = readAmount(value.maxAmount);
19830
+ return minAmount !== null && maxAmount !== null ? {
19831
+ kind: "range",
19832
+ minAmount,
19833
+ maxAmount,
19834
+ currency: displayCurrency
19835
+ } : { kind: "unavailable", currency };
19836
+ }
19656
19837
  case "mixed":
19657
19838
  return readAmount(value.paidFromAmount) !== null ? {
19658
19839
  kind: "mixed",
19659
19840
  paidFromAmount: readAmount(value.paidFromAmount) ?? 0,
19841
+ paidToAmount: readAmount(value.paidToAmount) ?? readAmount(value.paidFromAmount) ?? 0,
19660
19842
  currency: displayCurrency
19661
19843
  } : { kind: "unavailable", currency };
19662
19844
  case "unavailable":
@@ -19698,16 +19880,16 @@ function readAmount(value) {
19698
19880
  }
19699
19881
 
19700
19882
  // ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
19701
- import { z as z37 } from "zod";
19702
- var previewStageSchema = z37.enum(["preview", "published"]);
19703
- var registrationButtonVariantSchema = z37.enum(["primary", "secondary", "outline"]);
19704
- var eventButtonVariantSchema = z37.enum(["primary", "secondary", "outline", "link"]);
19705
- var eventLayoutSchema = z37.enum(eventCalendarListLayoutValues);
19706
- var eventCalendarDisplayModeSchema = z37.enum(eventCalendarDisplayModeValues);
19707
- var columnOptionSchema = z37.enum(["2", "3", "4"]);
19708
- var weekStartSchema = z37.enum(["sunday", "monday"]);
19709
- var filterAutoShowSchema = z37.enum(["auto", "always", "never"]);
19710
- var calendarTabViewsSchema = z37.enum(["both", "month", "week"]);
19883
+ import { z as z38 } from "zod";
19884
+ var previewStageSchema = z38.enum(["preview", "published"]);
19885
+ var registrationButtonVariantSchema = z38.enum(["primary", "secondary", "outline"]);
19886
+ var eventButtonVariantSchema = z38.enum(["primary", "secondary", "outline", "link"]);
19887
+ var eventLayoutSchema = z38.enum(eventCalendarListLayoutValues);
19888
+ var eventCalendarDisplayModeSchema = z38.enum(eventCalendarDisplayModeValues);
19889
+ var columnOptionSchema = z38.enum(["2", "3", "4"]);
19890
+ var weekStartSchema = z38.enum(["sunday", "monday"]);
19891
+ var filterAutoShowSchema = z38.enum(["auto", "always", "never"]);
19892
+ var calendarTabViewsSchema = z38.enum(["both", "month", "week"]);
19711
19893
 
19712
19894
  // ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
19713
19895
  function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
@@ -19767,66 +19949,68 @@ function toRegistrationEvents(events) {
19767
19949
  // ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
19768
19950
  var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
19769
19951
  var EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
19770
- var contentEntrySchema = z38.object({
19771
- id: z38.string(),
19772
- slug: z38.string(),
19773
- contentTypeSlug: z38.string()
19952
+ var contentEntrySchema = z39.object({
19953
+ id: z39.string(),
19954
+ slug: z39.string(),
19955
+ contentTypeSlug: z39.string()
19774
19956
  });
19775
- var eventRegistrationPublicEventSchema = z38.preprocess(
19957
+ var eventRegistrationPublicEventSchema = z39.preprocess(
19776
19958
  normalizeEventRegistrationEventInput,
19777
19959
  publicEventSchema
19778
19960
  );
19779
- var eventRegistrationSourceSchema = z38.object({
19780
- siteId: z38.string().optional(),
19781
- apiBaseUrl: z38.string().optional(),
19782
- portalToken: z38.string().nullable().optional(),
19783
- previewToken: z38.string().nullable().optional(),
19961
+ var eventRegistrationSourceSchema = z39.object({
19962
+ siteId: z39.string().optional(),
19963
+ apiBaseUrl: z39.string().optional(),
19964
+ portalToken: z39.string().nullable().optional(),
19965
+ previewToken: z39.string().nullable().optional(),
19784
19966
  occurrenceContext: occurrenceContextSchema.optional(),
19785
19967
  contentEntry: contentEntrySchema.nullable().optional(),
19786
- events: z38.array(eventRegistrationPublicEventSchema).nullable().optional(),
19787
- className: z38.string().nullable().optional(),
19788
- buttonText: z38.string().nullable().optional(),
19789
- maxTickets: z38.string().nullable().optional(),
19790
- showVenue: z38.boolean().optional(),
19791
- showCapacity: z38.boolean().optional(),
19792
- successMessage: z38.string().optional(),
19793
- waitlistMessage: z38.string().optional(),
19968
+ events: z39.array(eventRegistrationPublicEventSchema).nullable().optional(),
19969
+ className: z39.string().nullable().optional(),
19970
+ buttonText: z39.string().nullable().optional(),
19971
+ maxTickets: z39.string().nullable().optional(),
19972
+ showVenue: z39.boolean().optional(),
19973
+ showCapacity: z39.boolean().optional(),
19974
+ successMessage: z39.string().optional(),
19975
+ waitlistMessage: z39.string().optional(),
19794
19976
  buttonVariant: registrationButtonVariantSchema.optional(),
19795
- spamProtectionEnabled: z38.boolean().optional(),
19977
+ overlayEnabled: z39.boolean().optional(),
19978
+ spamProtectionEnabled: z39.boolean().optional(),
19796
19979
  stage: previewStageSchema.optional(),
19797
- supportEmail: z38.string().optional()
19798
- });
19799
- var eventRegistrationDisplaySchema = z38.object({
19800
- kind: z38.literal("event-registration"),
19801
- state: z38.literal("generic-shell"),
19802
- className: z38.string().nullable(),
19803
- titleText: z38.string(),
19804
- bodyText: z38.string(),
19805
- stepLabels: z38.array(z38.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
19806
- summaryButtonText: z38.string()
19807
- });
19808
- var eventRegistrationHydrationSchema = z38.object({
19980
+ supportEmail: z39.string().optional()
19981
+ });
19982
+ var eventRegistrationDisplaySchema = z39.object({
19983
+ kind: z39.literal("event-registration"),
19984
+ state: z39.literal("generic-shell"),
19985
+ className: z39.string().nullable(),
19986
+ titleText: z39.string(),
19987
+ bodyText: z39.string(),
19988
+ stepLabels: z39.array(z39.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
19989
+ summaryButtonText: z39.string()
19990
+ });
19991
+ var eventRegistrationHydrationSchema = z39.object({
19809
19992
  occurrenceContext: occurrenceContextSchema.optional(),
19810
19993
  contentEntry: contentEntrySchema.nullable().optional(),
19811
- events: z38.array(eventRegistrationPublicEventSchema).nullable().optional(),
19812
- maxTickets: z38.string().optional(),
19813
- showVenue: z38.boolean().optional(),
19814
- showCapacity: z38.boolean().optional(),
19815
- successMessage: z38.string().optional(),
19816
- waitlistMessage: z38.string().optional(),
19994
+ events: z39.array(eventRegistrationPublicEventSchema).nullable().optional(),
19995
+ maxTickets: z39.string().optional(),
19996
+ showVenue: z39.boolean().optional(),
19997
+ showCapacity: z39.boolean().optional(),
19998
+ successMessage: z39.string().optional(),
19999
+ waitlistMessage: z39.string().optional(),
19817
20000
  buttonVariant: registrationButtonVariantSchema.optional(),
19818
- spamProtectionEnabled: z38.boolean().optional(),
19819
- supportEmail: z38.string().optional()
20001
+ overlayEnabled: z39.boolean().optional(),
20002
+ spamProtectionEnabled: z39.boolean().optional(),
20003
+ supportEmail: z39.string().optional()
19820
20004
  });
19821
- var eventRegistrationRenderSchema = z38.object({
20005
+ var eventRegistrationRenderSchema = z39.object({
19822
20006
  display: eventRegistrationDisplaySchema,
19823
20007
  hydration: eventRegistrationHydrationSchema
19824
20008
  });
19825
- var eventRegistrationIslandMetaCodec = createZodCodec(z38.object({
19826
- siteId: z38.string().optional(),
19827
- apiBaseUrl: z38.string().optional(),
19828
- portalToken: z38.string().nullable().optional(),
19829
- previewToken: z38.string().nullable().optional(),
20009
+ var eventRegistrationIslandMetaCodec = createZodCodec(z39.object({
20010
+ siteId: z39.string().optional(),
20011
+ apiBaseUrl: z39.string().optional(),
20012
+ portalToken: z39.string().nullable().optional(),
20013
+ previewToken: z39.string().nullable().optional(),
19830
20014
  stage: previewStageSchema.optional()
19831
20015
  }));
19832
20016
  var eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
@@ -19930,6 +20114,7 @@ var eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
19930
20114
  successMessage: source.successMessage,
19931
20115
  waitlistMessage: source.waitlistMessage,
19932
20116
  buttonVariant: source.buttonVariant,
20117
+ overlayEnabled: source.overlayEnabled,
19933
20118
  spamProtectionEnabled: source.spamProtectionEnabled,
19934
20119
  supportEmail: source.supportEmail
19935
20120
  }
@@ -20105,6 +20290,12 @@ var eventRegistrationManifest = createBlockManifest({
20105
20290
  buttonVariant: {
20106
20291
  $bind: { from: "content.buttonVariant", fallback: "primary" }
20107
20292
  },
20293
+ overlayEnabled: {
20294
+ $bind: {
20295
+ from: "$root.eventRegistrationOverlayEnabled",
20296
+ fallback: false
20297
+ }
20298
+ },
20108
20299
  // Event data from loader
20109
20300
  events: { $bind: { from: "data.events" } },
20110
20301
  // Stage for preview mode (allows registering for draft events)
@@ -20125,7 +20316,7 @@ var eventRegistrationBlockDefinition = {
20125
20316
  manifest: eventRegistrationManifest,
20126
20317
  runtime: eventRegistrationBlockRuntime,
20127
20318
  dataSchemas: {
20128
- events: z39.array(publicEventSchema).optional(),
20319
+ events: z40.array(publicEventSchema).optional(),
20129
20320
  occurrenceContext: occurrenceContextSchema.optional()
20130
20321
  },
20131
20322
  dataLoaders: {
@@ -20149,73 +20340,73 @@ var eventRegistrationBlockDefinition = {
20149
20340
  };
20150
20341
 
20151
20342
  // ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
20152
- import { z as z40 } from "zod";
20153
- var contentEntrySchema2 = z40.object({
20154
- id: z40.string(),
20155
- slug: z40.string(),
20156
- contentTypeSlug: z40.string()
20157
- });
20158
- var courseEntrySubrouteContextSchema = z40.union([
20159
- z40.object({
20160
- kind: z40.literal("course-run"),
20161
- run: z40.object({
20162
- courseId: z40.string(),
20163
- seriesId: z40.string(),
20164
- runSlug: z40.string(),
20165
- runName: z40.string().nullable()
20343
+ import { z as z41 } from "zod";
20344
+ var contentEntrySchema2 = z41.object({
20345
+ id: z41.string(),
20346
+ slug: z41.string(),
20347
+ contentTypeSlug: z41.string()
20348
+ });
20349
+ var courseEntrySubrouteContextSchema = z41.union([
20350
+ z41.object({
20351
+ kind: z41.literal("course-run"),
20352
+ run: z41.object({
20353
+ courseId: z41.string(),
20354
+ seriesId: z41.string(),
20355
+ runSlug: z41.string(),
20356
+ runName: z41.string().nullable()
20166
20357
  })
20167
20358
  }),
20168
- z40.object({
20169
- kind: z40.literal("event-occurrence"),
20359
+ z41.object({
20360
+ kind: z41.literal("event-occurrence"),
20170
20361
  occurrence: occurrenceContextSchema
20171
20362
  })
20172
20363
  ]);
20173
- var courseRegistrationSourceSchema = z40.object({
20174
- siteId: z40.string().optional(),
20175
- apiBaseUrl: z40.string().optional(),
20176
- portalToken: z40.string().nullable().optional(),
20364
+ var courseRegistrationSourceSchema = z41.object({
20365
+ siteId: z41.string().optional(),
20366
+ apiBaseUrl: z41.string().optional(),
20367
+ portalToken: z41.string().nullable().optional(),
20177
20368
  contentEntry: contentEntrySchema2.nullable().optional(),
20178
20369
  entrySubrouteContext: courseEntrySubrouteContextSchema.nullable().optional(),
20179
- courses: z40.array(publicCourseSchema).nullable().optional(),
20180
- className: z40.string().nullable().optional(),
20181
- showSessions: z40.boolean().optional(),
20182
- showPrice: z40.boolean().optional(),
20183
- showCapacity: z40.boolean().optional(),
20184
- showVenue: z40.boolean().optional(),
20185
- successMessage: z40.string().optional(),
20186
- waitlistMessage: z40.string().optional(),
20187
- membershipMessage: z40.string().optional(),
20188
- buttonText: z40.string().nullable().optional(),
20370
+ courses: z41.array(publicCourseSchema).nullable().optional(),
20371
+ className: z41.string().nullable().optional(),
20372
+ showSessions: z41.boolean().optional(),
20373
+ showPrice: z41.boolean().optional(),
20374
+ showCapacity: z41.boolean().optional(),
20375
+ showVenue: z41.boolean().optional(),
20376
+ successMessage: z41.string().optional(),
20377
+ waitlistMessage: z41.string().optional(),
20378
+ membershipMessage: z41.string().optional(),
20379
+ buttonText: z41.string().nullable().optional(),
20189
20380
  buttonVariant: registrationButtonVariantSchema.optional(),
20190
20381
  stage: previewStageSchema.optional()
20191
20382
  });
20192
- var courseRegistrationDisplaySchema = z40.object({
20193
- kind: z40.literal("course-registration"),
20194
- state: z40.literal("shell"),
20195
- className: z40.string().nullable(),
20196
- summaryButtonText: z40.string()
20383
+ var courseRegistrationDisplaySchema = z41.object({
20384
+ kind: z41.literal("course-registration"),
20385
+ state: z41.literal("shell"),
20386
+ className: z41.string().nullable(),
20387
+ summaryButtonText: z41.string()
20197
20388
  });
20198
- var courseRegistrationHydrationSchema = z40.object({
20389
+ var courseRegistrationHydrationSchema = z41.object({
20199
20390
  contentEntry: contentEntrySchema2.nullable().optional(),
20200
20391
  entrySubrouteContext: courseEntrySubrouteContextSchema.nullable().optional(),
20201
- courses: z40.array(publicCourseSchema).nullable().optional(),
20202
- showSessions: z40.boolean().optional(),
20203
- showPrice: z40.boolean().optional(),
20204
- showCapacity: z40.boolean().optional(),
20205
- showVenue: z40.boolean().optional(),
20206
- successMessage: z40.string().optional(),
20207
- waitlistMessage: z40.string().optional(),
20208
- membershipMessage: z40.string().optional(),
20392
+ courses: z41.array(publicCourseSchema).nullable().optional(),
20393
+ showSessions: z41.boolean().optional(),
20394
+ showPrice: z41.boolean().optional(),
20395
+ showCapacity: z41.boolean().optional(),
20396
+ showVenue: z41.boolean().optional(),
20397
+ successMessage: z41.string().optional(),
20398
+ waitlistMessage: z41.string().optional(),
20399
+ membershipMessage: z41.string().optional(),
20209
20400
  buttonVariant: registrationButtonVariantSchema.optional()
20210
20401
  });
20211
- var courseRegistrationRenderSchema = z40.object({
20402
+ var courseRegistrationRenderSchema = z41.object({
20212
20403
  display: courseRegistrationDisplaySchema,
20213
20404
  hydration: courseRegistrationHydrationSchema
20214
20405
  });
20215
- var courseRegistrationIslandMetaCodec = createZodCodec(z40.object({
20216
- siteId: z40.string().optional(),
20217
- apiBaseUrl: z40.string().optional(),
20218
- portalToken: z40.string().nullable().optional(),
20406
+ var courseRegistrationIslandMetaCodec = createZodCodec(z41.object({
20407
+ siteId: z41.string().optional(),
20408
+ apiBaseUrl: z41.string().optional(),
20409
+ portalToken: z41.string().nullable().optional(),
20219
20410
  stage: previewStageSchema.optional()
20220
20411
  }));
20221
20412
  var courseRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
@@ -20475,32 +20666,32 @@ var courseRegistrationBlockDefinition = {
20475
20666
  };
20476
20667
 
20477
20668
  // ../blocks/src/system/blocks/event-details.ts
20478
- import { z as z42 } from "zod";
20669
+ import { z as z43 } from "zod";
20479
20670
 
20480
20671
  // ../blocks/src/system/blocks/shop.shared.ts
20481
- import { z as z41 } from "zod";
20482
- var publicPassProductSchema = z41.object({
20483
- id: z41.string(),
20484
- productUseCase: z41.enum(["event_pass", "appointment_package"]).default("event_pass"),
20485
- name: z41.string(),
20486
- description: z41.string().nullable(),
20487
- price: z41.number(),
20488
- currency: z41.string(),
20489
- creditsTotal: z41.number(),
20490
- pricePerCredit: z41.number(),
20491
- validDays: z41.number().nullable(),
20492
- eligibleCategoryIds: z41.array(z41.string()),
20493
- eligibleCategoryNames: z41.array(z41.string())
20494
- });
20495
- var publicMembershipProductSchema = z41.object({
20496
- id: z41.string(),
20497
- name: z41.string(),
20498
- description: z41.string().nullable(),
20499
- price: z41.number(),
20500
- currency: z41.string(),
20501
- billingInterval: z41.enum(["month", "year"]),
20502
- eligibleCategoryIds: z41.array(z41.string()),
20503
- eligibleCategoryNames: z41.array(z41.string())
20672
+ import { z as z42 } from "zod";
20673
+ var publicPassProductSchema = z42.object({
20674
+ id: z42.string(),
20675
+ productUseCase: z42.enum(["event_pass", "appointment_package"]).default("event_pass"),
20676
+ name: z42.string(),
20677
+ description: z42.string().nullable(),
20678
+ price: z42.number(),
20679
+ currency: z42.string(),
20680
+ creditsTotal: z42.number(),
20681
+ pricePerCredit: z42.number(),
20682
+ validDays: z42.number().nullable(),
20683
+ eligibleCategoryIds: z42.array(z42.string()),
20684
+ eligibleCategoryNames: z42.array(z42.string())
20685
+ });
20686
+ var publicMembershipProductSchema = z42.object({
20687
+ id: z42.string(),
20688
+ name: z42.string(),
20689
+ description: z42.string().nullable(),
20690
+ price: z42.number(),
20691
+ currency: z42.string(),
20692
+ billingInterval: z42.enum(["month", "year"]),
20693
+ eligibleCategoryIds: z42.array(z42.string()),
20694
+ eligibleCategoryNames: z42.array(z42.string())
20504
20695
  });
20505
20696
 
20506
20697
  // ../blocks/src/system/blocks/event-details.ts
@@ -20635,40 +20826,40 @@ var eventDetailsManifest = createBlockManifest({
20635
20826
  })
20636
20827
  ]
20637
20828
  });
20638
- var occurrenceContextSchema2 = z42.object({
20639
- id: z42.string(),
20640
- seriesId: z42.string(),
20641
- startsAt: z42.string(),
20642
- endsAt: z42.string(),
20643
- timeZone: z42.string(),
20644
- capacityOverride: z42.number().nullable().optional(),
20645
- overrides: z42.record(z42.string(), z42.unknown()).nullable().optional()
20829
+ var occurrenceContextSchema2 = z43.object({
20830
+ id: z43.string(),
20831
+ seriesId: z43.string(),
20832
+ startsAt: z43.string(),
20833
+ endsAt: z43.string(),
20834
+ timeZone: z43.string(),
20835
+ capacityOverride: z43.number().nullable().optional(),
20836
+ overrides: z43.record(z43.string(), z43.unknown()).nullable().optional()
20646
20837
  }).nullable();
20647
- var eventAutoApplyDiscountPreviewBaseSchema = z42.object({
20648
- id: z42.string(),
20649
- publicLabel: z42.string(),
20650
- description: z42.string().nullable(),
20651
- minTicketsRequired: z42.number().nullable()
20838
+ var eventAutoApplyDiscountPreviewBaseSchema = z43.object({
20839
+ id: z43.string(),
20840
+ publicLabel: z43.string(),
20841
+ description: z43.string().nullable(),
20842
+ minTicketsRequired: z43.number().nullable()
20652
20843
  });
20653
- var eventAutoApplyDiscountPreviewSchema = z42.discriminatedUnion("discountType", [
20844
+ var eventAutoApplyDiscountPreviewSchema = z43.discriminatedUnion("discountType", [
20654
20845
  eventAutoApplyDiscountPreviewBaseSchema.extend({
20655
- discountType: z42.literal("percent"),
20656
- discountPercent: z42.number(),
20657
- discountAmountCents: z42.null()
20846
+ discountType: z43.literal("percent"),
20847
+ discountPercent: z43.number(),
20848
+ discountAmountCents: z43.null()
20658
20849
  }),
20659
20850
  eventAutoApplyDiscountPreviewBaseSchema.extend({
20660
- discountType: z42.literal("fixed"),
20661
- discountPercent: z42.null(),
20662
- discountAmountCents: z42.number()
20851
+ discountType: z43.literal("fixed"),
20852
+ discountPercent: z43.null(),
20853
+ discountAmountCents: z43.number()
20663
20854
  })
20664
20855
  ]);
20665
20856
  var eventDetailsBlockDefinition = {
20666
20857
  manifest: eventDetailsManifest,
20667
20858
  dataSchemas: {
20668
- eventDetailsData: z42.object({
20859
+ eventDetailsData: z43.object({
20669
20860
  events: publicEventsArraySchema,
20670
- sitePasses: z42.object({ passes: z42.array(publicPassProductSchema) }),
20671
- siteMemberships: z42.object({ memberships: z42.array(publicMembershipProductSchema) }),
20861
+ sitePasses: z43.object({ passes: z43.array(publicPassProductSchema) }),
20862
+ siteMemberships: z43.object({ memberships: z43.array(publicMembershipProductSchema) }),
20672
20863
  autoApplyDiscount: eventAutoApplyDiscountPreviewSchema.nullable().optional().default(null)
20673
20864
  }).optional(),
20674
20865
  occurrenceContext: occurrenceContextSchema2.optional()
@@ -20992,7 +21183,7 @@ var eventSpotlightBlockDefinition = {
20992
21183
  };
20993
21184
 
20994
21185
  // ../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts
20995
- import { z as z44 } from "zod";
21186
+ import { z as z45 } from "zod";
20996
21187
 
20997
21188
  // ../blocks/src/system/runtime/nodes/events/shared/utils.ts
20998
21189
  var COLUMN_CLASSES = {
@@ -21024,16 +21215,16 @@ function getCardOrientation(layout) {
21024
21215
  }
21025
21216
 
21026
21217
  // ../blocks/src/system/runtime/nodes/events/shared/listOptions.ts
21027
- import { z as z43 } from "zod";
21218
+ import { z as z44 } from "zod";
21028
21219
  var eventPageSizeValues = [3, 6, 10, 12, 20, 24, 30];
21029
- var eventPageSizeSchema = z43.union([
21030
- z43.literal(3),
21031
- z43.literal(6),
21032
- z43.literal(10),
21033
- z43.literal(12),
21034
- z43.literal(20),
21035
- z43.literal(24),
21036
- z43.literal(30)
21220
+ var eventPageSizeSchema = z44.union([
21221
+ z44.literal(3),
21222
+ z44.literal(6),
21223
+ z44.literal(10),
21224
+ z44.literal(12),
21225
+ z44.literal(20),
21226
+ z44.literal(24),
21227
+ z44.literal(30)
21037
21228
  ]);
21038
21229
  var eventPageSizeSet = new Set(eventPageSizeValues);
21039
21230
  function resolveEventPageSize(value, fallback = 12) {
@@ -21043,15 +21234,15 @@ function resolveEventPageSize(value, fallback = 12) {
21043
21234
  function resolveEventCalendarListPageSize(input) {
21044
21235
  return resolveEventPageSize(input.eventsPerPage);
21045
21236
  }
21046
- var eventListPaginationActionSchema = z43.discriminatedUnion("kind", [
21047
- z43.object({
21048
- kind: z43.literal("loadMore"),
21049
- label: z43.string()
21237
+ var eventListPaginationActionSchema = z44.discriminatedUnion("kind", [
21238
+ z44.object({
21239
+ kind: z44.literal("loadMore"),
21240
+ label: z44.string()
21050
21241
  }),
21051
- z43.object({
21052
- kind: z43.literal("seeAllLink"),
21053
- label: z43.string(),
21054
- href: z43.string()
21242
+ z44.object({
21243
+ kind: z44.literal("seeAllLink"),
21244
+ label: z44.string(),
21245
+ href: z44.string()
21055
21246
  })
21056
21247
  ]);
21057
21248
  function resolveEventListPaginationAction(input) {
@@ -21064,89 +21255,89 @@ function resolveEventListPaginationAction(input) {
21064
21255
  }
21065
21256
 
21066
21257
  // ../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts
21067
- var legacyEventCardVariantSchema = z44.enum(["variant1", "variant2"]);
21068
- var eventCardVariantInputSchema = z44.union([
21258
+ var legacyEventCardVariantSchema = z45.enum(["variant1", "variant2"]);
21259
+ var eventCardVariantInputSchema = z45.union([
21069
21260
  cardVariantRoleSchema,
21070
21261
  legacyEventCardVariantSchema
21071
21262
  ]);
21072
- var cardOrientationSchema = z44.enum(["vertical", "horizontal"]);
21073
- var eventBlockKindSchema = z44.enum(eventBlockKindValues);
21074
- var eventSurfaceScopeSchema = z44.enum(eventSurfaceScopeValues);
21075
- var eventScheduleScopeSchema2 = z44.enum(eventScheduleScopeValues);
21076
- var eventListingSourceSchema = z44.object({
21077
- events: z44.array(publicEventSchema).nullable().optional(),
21078
- siteId: z44.string(),
21079
- apiBaseUrl: z44.string().optional(),
21263
+ var cardOrientationSchema = z45.enum(["vertical", "horizontal"]);
21264
+ var eventBlockKindSchema = z45.enum(eventBlockKindValues);
21265
+ var eventSurfaceScopeSchema = z45.enum(eventSurfaceScopeValues);
21266
+ var eventScheduleScopeSchema2 = z45.enum(eventScheduleScopeValues);
21267
+ var eventListingSourceSchema = z45.object({
21268
+ events: z45.array(publicEventSchema).nullable().optional(),
21269
+ siteId: z45.string(),
21270
+ apiBaseUrl: z45.string().optional(),
21080
21271
  stage: previewStageSchema.optional(),
21081
21272
  layout: eventLayoutSchema.optional(),
21082
21273
  columns: columnOptionSchema.optional(),
21083
- eventsPerPage: z44.string().optional(),
21084
- paginationMode: z44.enum(["loadMore", "seeAllLink"]).optional(),
21085
- seeAllUrl: z44.string().optional(),
21086
- loadMoreText: z44.string().optional(),
21274
+ eventsPerPage: z45.string().optional(),
21275
+ paginationMode: z45.enum(["loadMore", "seeAllLink"]).optional(),
21276
+ seeAllUrl: z45.string().optional(),
21277
+ loadMoreText: z45.string().optional(),
21087
21278
  cardVariant: eventCardVariantInputSchema.optional(),
21088
21279
  buttonVariant: eventButtonVariantSchema.optional(),
21089
- buttonText: z44.string().optional(),
21090
- showVenue: z44.boolean().optional(),
21091
- showMap: z44.boolean().optional(),
21092
- showCapacity: z44.boolean().optional(),
21093
- emptyMessage: z44.string().optional(),
21094
- className: z44.string().optional(),
21095
- showFilters: z44.boolean().nullable().optional(),
21280
+ buttonText: z45.string().optional(),
21281
+ showVenue: z45.boolean().optional(),
21282
+ showMap: z45.boolean().optional(),
21283
+ showCapacity: z45.boolean().optional(),
21284
+ emptyMessage: z45.string().optional(),
21285
+ className: z45.string().optional(),
21286
+ showFilters: z45.boolean().nullable().optional(),
21096
21287
  showCategoryFilter: filterAutoShowSchema.optional(),
21097
- showVenueFilter: z44.boolean().nullable().optional(),
21098
- showStaffFilter: z44.boolean().nullable().optional(),
21288
+ showVenueFilter: z45.boolean().nullable().optional(),
21289
+ showStaffFilter: z45.boolean().nullable().optional(),
21099
21290
  eventKind: eventBlockKindSchema.nullable().optional(),
21100
21291
  eventSurface: eventSurfaceScopeSchema.nullable().optional(),
21101
- filterEventPresets: z44.union([z44.string(), z44.array(z44.string())]).nullable().optional(),
21292
+ filterEventPresets: z45.union([z45.string(), z45.array(z45.string())]).nullable().optional(),
21102
21293
  scheduleScope: eventScheduleScopeSchema2.nullable().optional(),
21103
- filterCategoryIds: z44.string().nullable().optional(),
21104
- filterStaffMemberId: z44.string().nullable().optional(),
21105
- filterVenueId: z44.string().nullable().optional()
21294
+ filterCategoryIds: z45.string().nullable().optional(),
21295
+ filterStaffMemberId: z45.string().nullable().optional(),
21296
+ filterVenueId: z45.string().nullable().optional()
21106
21297
  });
21107
- var eventListingDisplaySchema = z44.object({
21108
- kind: z44.literal("event-listing"),
21109
- state: z44.enum(["loading", "empty", "ready"]),
21298
+ var eventListingDisplaySchema = z45.object({
21299
+ kind: z45.literal("event-listing"),
21300
+ state: z45.enum(["loading", "empty", "ready"]),
21110
21301
  listLayout: eventLayoutSchema,
21111
- className: z44.string().nullable(),
21112
- emptyMessage: z44.string(),
21113
- loadingMessage: z44.string(),
21114
- containerClass: z44.string(),
21302
+ className: z45.string().nullable(),
21303
+ emptyMessage: z45.string(),
21304
+ loadingMessage: z45.string(),
21305
+ containerClass: z45.string(),
21115
21306
  cardVariant: cardVariantRoleSchema,
21116
21307
  buttonVariant: eventButtonVariantSchema,
21117
- buttonText: z44.string(),
21118
- showVenue: z44.boolean(),
21119
- showMap: z44.boolean(),
21120
- showCapacity: z44.boolean(),
21308
+ buttonText: z45.string(),
21309
+ showVenue: z45.boolean(),
21310
+ showMap: z45.boolean(),
21311
+ showCapacity: z45.boolean(),
21121
21312
  orientation: cardOrientationSchema,
21122
- events: z44.array(publicEventSchema)
21313
+ events: z45.array(publicEventSchema)
21123
21314
  });
21124
- var eventListingHydrationSchema = z44.object({
21125
- siteId: z44.string(),
21315
+ var eventListingHydrationSchema = z45.object({
21316
+ siteId: z45.string(),
21126
21317
  stage: previewStageSchema.optional(),
21127
21318
  eventsPerPage: eventPageSizeSchema,
21128
21319
  paginationAction: eventListPaginationActionSchema,
21129
- showFilters: z44.boolean(),
21320
+ showFilters: z45.boolean(),
21130
21321
  showCategoryFilter: filterAutoShowSchema,
21131
- showVenueFilter: z44.boolean(),
21132
- showStaffFilter: z44.boolean(),
21322
+ showVenueFilter: z45.boolean(),
21323
+ showStaffFilter: z45.boolean(),
21133
21324
  eventKind: eventBlockKindSchema,
21134
21325
  eventSurface: eventSurfaceScopeSchema,
21135
- filterEventPresets: z44.string().nullable(),
21326
+ filterEventPresets: z45.string().nullable(),
21136
21327
  scheduleScope: eventScheduleScopeSchema2,
21137
- filterCategoryIds: z44.string().nullable().optional(),
21138
- filterStaffMemberId: z44.string().nullable().optional(),
21139
- filterVenueId: z44.string().nullable().optional(),
21140
- fetchInitialEventsOnMount: z44.boolean()
21328
+ filterCategoryIds: z45.string().nullable().optional(),
21329
+ filterStaffMemberId: z45.string().nullable().optional(),
21330
+ filterVenueId: z45.string().nullable().optional(),
21331
+ fetchInitialEventsOnMount: z45.boolean()
21141
21332
  });
21142
- var eventListingRenderSchema = z44.object({
21333
+ var eventListingRenderSchema = z45.object({
21143
21334
  display: eventListingDisplaySchema,
21144
21335
  hydration: eventListingHydrationSchema
21145
21336
  });
21146
21337
  var eventListingIslandMetaCodec = createZodCodec(
21147
- z44.object({
21148
- siteId: z44.string(),
21149
- apiBaseUrl: z44.string().optional(),
21338
+ z45.object({
21339
+ siteId: z45.string(),
21340
+ apiBaseUrl: z45.string().optional(),
21150
21341
  stage: previewStageSchema.optional()
21151
21342
  })
21152
21343
  );
@@ -21513,15 +21704,15 @@ var eventListingBlockDefinition = {
21513
21704
  };
21514
21705
 
21515
21706
  // ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
21516
- import { z as z45 } from "zod";
21517
- var eventBlockKindSchema2 = z45.enum(eventBlockKindValues);
21518
- var eventSurfaceScopeSchema2 = z45.enum(eventSurfaceScopeValues);
21519
- var eventScheduleScopeSchema3 = z45.enum(eventScheduleScopeValues);
21520
- var eventCalendarSourceSchema = z45.object(
21707
+ import { z as z46 } from "zod";
21708
+ var eventBlockKindSchema2 = z46.enum(eventBlockKindValues);
21709
+ var eventSurfaceScopeSchema2 = z46.enum(eventSurfaceScopeValues);
21710
+ var eventScheduleScopeSchema3 = z46.enum(eventScheduleScopeValues);
21711
+ var eventCalendarSourceSchema = z46.object(
21521
21712
  {
21522
- events: z45.array(publicEventSchema).nullable().optional(),
21523
- siteId: z45.string(),
21524
- apiBaseUrl: z45.string().optional(),
21713
+ events: z46.array(publicEventSchema).nullable().optional(),
21714
+ siteId: z46.string(),
21715
+ apiBaseUrl: z46.string().optional(),
21525
21716
  stage: previewStageSchema.optional(),
21526
21717
  variant: eventCalendarDisplayModeSchema.nullable().optional(),
21527
21718
  displayMode: eventCalendarDisplayModeSchema.nullable().optional(),
@@ -21529,78 +21720,78 @@ var eventCalendarSourceSchema = z45.object(
21529
21720
  listColumns: columnOptionSchema.optional(),
21530
21721
  layout: eventLayoutSchema.optional(),
21531
21722
  columns: columnOptionSchema.optional(),
21532
- eventsPerPage: z45.string().optional(),
21533
- paginationMode: z45.enum(["loadMore", "seeAllLink"]).optional(),
21534
- seeAllUrl: z45.string().optional(),
21535
- loadMoreText: z45.string().optional(),
21723
+ eventsPerPage: z46.string().optional(),
21724
+ paginationMode: z46.enum(["loadMore", "seeAllLink"]).optional(),
21725
+ seeAllUrl: z46.string().optional(),
21726
+ loadMoreText: z46.string().optional(),
21536
21727
  startOfWeek: weekStartSchema.optional(),
21537
21728
  calendarTabViews: calendarTabViewsSchema.optional(),
21538
- showFilters: z45.boolean().nullable().optional(),
21729
+ showFilters: z46.boolean().nullable().optional(),
21539
21730
  showCategoryFilter: filterAutoShowSchema.optional(),
21540
- showVenueFilter: z45.boolean().nullable().optional(),
21541
- showStaffFilter: z45.boolean().nullable().optional(),
21731
+ showVenueFilter: z46.boolean().nullable().optional(),
21732
+ showStaffFilter: z46.boolean().nullable().optional(),
21542
21733
  kind: eventBlockKindSchema2.nullable().optional(),
21543
21734
  eventSurface: eventSurfaceScopeSchema2.nullable().optional(),
21544
- filterEventPresets: z45.union([z45.string(), z45.array(z45.string())]).nullable().optional(),
21735
+ filterEventPresets: z46.union([z46.string(), z46.array(z46.string())]).nullable().optional(),
21545
21736
  scheduleScope: eventScheduleScopeSchema3.nullable().optional(),
21546
- filterCategoryIds: z45.union([z45.string(), z45.array(z45.string())]).nullable().optional(),
21547
- filterStaffMemberId: z45.string().nullable().optional(),
21548
- filterVenueId: z45.string().nullable().optional(),
21737
+ filterCategoryIds: z46.union([z46.string(), z46.array(z46.string())]).nullable().optional(),
21738
+ filterStaffMemberId: z46.string().nullable().optional(),
21739
+ filterVenueId: z46.string().nullable().optional(),
21549
21740
  buttonVariant: eventButtonVariantSchema.optional(),
21550
- buttonText: z45.string().optional(),
21551
- showVenue: z45.boolean().nullable().optional(),
21552
- showMap: z45.boolean().nullable().optional(),
21553
- showCapacity: z45.boolean().nullable().optional(),
21554
- emptyMessage: z45.string().optional(),
21555
- className: z45.string().optional()
21741
+ buttonText: z46.string().optional(),
21742
+ showVenue: z46.boolean().nullable().optional(),
21743
+ showMap: z46.boolean().nullable().optional(),
21744
+ showCapacity: z46.boolean().nullable().optional(),
21745
+ emptyMessage: z46.string().optional(),
21746
+ className: z46.string().optional()
21556
21747
  }
21557
21748
  );
21558
- var eventCalendarDisplaySchema = z45.object({
21559
- kind: z45.literal("event-calendar"),
21749
+ var eventCalendarDisplaySchema = z46.object({
21750
+ kind: z46.literal("event-calendar"),
21560
21751
  displayMode: eventCalendarDisplayModeSchema,
21561
- className: z45.string().nullable(),
21562
- events: z45.array(publicEventSchema),
21752
+ className: z46.string().nullable(),
21753
+ events: z46.array(publicEventSchema),
21563
21754
  listLayout: eventLayoutSchema,
21564
21755
  listColumns: columnOptionSchema,
21565
21756
  eventsPerPage: eventPageSizeSchema,
21566
21757
  paginationAction: eventListPaginationActionSchema,
21567
21758
  startOfWeek: weekStartSchema,
21568
21759
  calendarTabViews: calendarTabViewsSchema,
21569
- showFilters: z45.boolean(),
21760
+ showFilters: z46.boolean(),
21570
21761
  showCategoryFilter: filterAutoShowSchema,
21571
- showVenueFilter: z45.boolean(),
21572
- showStaffFilter: z45.boolean(),
21762
+ showVenueFilter: z46.boolean(),
21763
+ showStaffFilter: z46.boolean(),
21573
21764
  eventKind: eventBlockKindSchema2,
21574
21765
  eventSurface: eventSurfaceScopeSchema2,
21575
- filterEventPresets: z45.string().nullable(),
21766
+ filterEventPresets: z46.string().nullable(),
21576
21767
  scheduleScope: eventScheduleScopeSchema3,
21577
- filterCategoryIds: z45.string().nullable(),
21578
- filterStaffMemberId: z45.string().nullable(),
21579
- filterVenueId: z45.string().nullable(),
21768
+ filterCategoryIds: z46.string().nullable(),
21769
+ filterStaffMemberId: z46.string().nullable(),
21770
+ filterVenueId: z46.string().nullable(),
21580
21771
  buttonVariant: eventButtonVariantSchema,
21581
- buttonText: z45.string(),
21582
- showVenue: z45.boolean(),
21583
- showMap: z45.boolean(),
21584
- showCapacity: z45.boolean(),
21585
- emptyMessage: z45.string()
21586
- });
21587
- var eventCalendarHydrationSchema = z45.object({
21588
- siteId: z45.string(),
21772
+ buttonText: z46.string(),
21773
+ showVenue: z46.boolean(),
21774
+ showMap: z46.boolean(),
21775
+ showCapacity: z46.boolean(),
21776
+ emptyMessage: z46.string()
21777
+ });
21778
+ var eventCalendarHydrationSchema = z46.object({
21779
+ siteId: z46.string(),
21589
21780
  stage: previewStageSchema.optional(),
21590
- prefetchedEvents: z45.boolean(),
21781
+ prefetchedEvents: z46.boolean(),
21591
21782
  eventKind: eventBlockKindSchema2,
21592
21783
  eventSurface: eventSurfaceScopeSchema2,
21593
- filterEventPresets: z45.string().nullable(),
21784
+ filterEventPresets: z46.string().nullable(),
21594
21785
  scheduleScope: eventScheduleScopeSchema3
21595
21786
  });
21596
- var eventCalendarRenderSchema = z45.object({
21787
+ var eventCalendarRenderSchema = z46.object({
21597
21788
  display: eventCalendarDisplaySchema,
21598
21789
  hydration: eventCalendarHydrationSchema
21599
21790
  });
21600
21791
  var eventCalendarIslandMetaCodec = createZodCodec(
21601
- z45.object({
21602
- siteId: z45.string(),
21603
- apiBaseUrl: z45.string().optional(),
21792
+ z46.object({
21793
+ siteId: z46.string(),
21794
+ apiBaseUrl: z46.string().optional(),
21604
21795
  stage: previewStageSchema.optional()
21605
21796
  })
21606
21797
  );
@@ -22309,7 +22500,7 @@ var eventCalendarBlockDefinition = {
22309
22500
  };
22310
22501
 
22311
22502
  // ../blocks/src/system/blocks/offerings-preview/index.ts
22312
- import { z as z46 } from "zod";
22503
+ import { z as z47 } from "zod";
22313
22504
 
22314
22505
  // ../blocks/src/system/blocks/offerings-preview/model.ts
22315
22506
  var OFFERINGS_PREVIEW_DEFAULT_ITEM_LIMIT = "3";
@@ -22401,13 +22592,13 @@ function isRecord4(value) {
22401
22592
  }
22402
22593
 
22403
22594
  // ../blocks/src/system/blocks/offerings-preview/index.ts
22404
- var publicRouteCandidatesSchema = z46.object({
22405
- routes: z46.array(z46.object({
22406
- entityId: z46.string(),
22407
- path: z46.string(),
22408
- title: z46.string(),
22409
- kind: z46.enum(["page", "content"]),
22410
- contentTypeKey: z46.string().nullable().optional()
22595
+ var publicRouteCandidatesSchema = z47.object({
22596
+ routes: z47.array(z47.object({
22597
+ entityId: z47.string(),
22598
+ path: z47.string(),
22599
+ title: z47.string(),
22600
+ kind: z47.enum(["page", "content"]),
22601
+ contentTypeKey: z47.string().nullable().optional()
22411
22602
  }))
22412
22603
  });
22413
22604
  var groupOverrideFields = [
@@ -22805,7 +22996,7 @@ function isRecord5(value) {
22805
22996
  }
22806
22997
 
22807
22998
  // ../blocks/src/system/blocks/embed.ts
22808
- import { z as z47 } from "zod";
22999
+ import { z as z48 } from "zod";
22809
23000
  var embedFields = [
22810
23001
  // Section heading
22811
23002
  parseFieldDefinition({
@@ -23036,18 +23227,18 @@ var embedManifest = createBlockManifest({
23036
23227
  spacing: "lg"
23037
23228
  }
23038
23229
  });
23039
- var embedEntrySchema = z47.object({
23040
- id: z47.string(),
23041
- identifier: z47.string(),
23042
- title: z47.string(),
23043
- slug: z47.string().nullable().optional(),
23044
- content: z47.record(z47.string(), z47.unknown()).optional(),
23045
- publishedAt: z47.string().nullable().optional()
23230
+ var embedEntrySchema = z48.object({
23231
+ id: z48.string(),
23232
+ identifier: z48.string(),
23233
+ title: z48.string(),
23234
+ slug: z48.string().nullable().optional(),
23235
+ content: z48.record(z48.string(), z48.unknown()).optional(),
23236
+ publishedAt: z48.string().nullable().optional()
23046
23237
  });
23047
23238
  var embedBlockDefinition = {
23048
23239
  manifest: embedManifest,
23049
23240
  dataSchemas: {
23050
- entries: z47.array(embedEntrySchema).optional()
23241
+ entries: z48.array(embedEntrySchema).optional()
23051
23242
  },
23052
23243
  dataLoaders: {
23053
23244
  entries: {
@@ -24231,52 +24422,52 @@ var fileDownloadBlockDefinition = {
24231
24422
  };
24232
24423
 
24233
24424
  // ../blocks/src/system/blocks/shop.ts
24234
- import { z as z51 } from "zod";
24425
+ import { z as z52 } from "zod";
24235
24426
 
24236
24427
  // ../blocks/src/system/runtime/nodes/shop.interactive.ts
24237
- import { z as z50 } from "zod";
24428
+ import { z as z51 } from "zod";
24238
24429
 
24239
24430
  // ../blocks/src/system/blocks/products/shared.ts
24240
- import { z as z48 } from "zod";
24241
- var publicProductVariantSchema = z48.object({
24242
- id: z48.string(),
24243
- title: z48.string(),
24244
- sku: z48.string().nullable(),
24245
- priceCents: z48.number(),
24246
- stockQuantity: z48.number().nullable(),
24247
- soldOut: z48.boolean()
24248
- });
24249
- var publicProductSchema = z48.object({
24250
- id: z48.string(),
24251
- contentEntryId: z48.string().nullable(),
24252
- title: z48.string(),
24253
- slug: z48.string(),
24254
- path: z48.string().nullable(),
24255
- status: z48.enum(["draft", "active"]),
24256
- priceCents: z48.number(),
24257
- currency: z48.string(),
24258
- productType: z48.enum(["physical", "digital"]),
24259
- requiresShipping: z48.boolean(),
24260
- hasVariants: z48.boolean(),
24261
- trackInventory: z48.boolean(),
24262
- soldOut: z48.boolean(),
24263
- category: z48.object({
24264
- id: z48.string(),
24265
- name: z48.string(),
24266
- slug: z48.string()
24431
+ import { z as z49 } from "zod";
24432
+ var publicProductVariantSchema = z49.object({
24433
+ id: z49.string(),
24434
+ title: z49.string(),
24435
+ sku: z49.string().nullable(),
24436
+ priceCents: z49.number(),
24437
+ stockQuantity: z49.number().nullable(),
24438
+ soldOut: z49.boolean()
24439
+ });
24440
+ var publicProductSchema = z49.object({
24441
+ id: z49.string(),
24442
+ contentEntryId: z49.string().nullable(),
24443
+ title: z49.string(),
24444
+ slug: z49.string(),
24445
+ path: z49.string().nullable(),
24446
+ status: z49.enum(["draft", "active"]),
24447
+ priceCents: z49.number(),
24448
+ currency: z49.string(),
24449
+ productType: z49.enum(["physical", "digital"]),
24450
+ requiresShipping: z49.boolean(),
24451
+ hasVariants: z49.boolean(),
24452
+ trackInventory: z49.boolean(),
24453
+ soldOut: z49.boolean(),
24454
+ category: z49.object({
24455
+ id: z49.string(),
24456
+ name: z49.string(),
24457
+ slug: z49.string()
24267
24458
  }).nullable(),
24268
- summary: z48.string().nullable(),
24269
- body: z48.unknown().nullable(),
24270
- gallery: z48.array(
24271
- z48.object({
24272
- url: z48.string(),
24273
- alt: z48.string().nullable()
24459
+ summary: z49.string().nullable(),
24460
+ body: z49.unknown().nullable(),
24461
+ gallery: z49.array(
24462
+ z49.object({
24463
+ url: z49.string(),
24464
+ alt: z49.string().nullable()
24274
24465
  })
24275
24466
  ),
24276
- variants: z48.array(publicProductVariantSchema)
24467
+ variants: z49.array(publicProductVariantSchema)
24277
24468
  });
24278
- var publicProductsResponseSchema = z48.object({
24279
- products: z48.array(publicProductSchema)
24469
+ var publicProductsResponseSchema = z49.object({
24470
+ products: z49.array(publicProductSchema)
24280
24471
  });
24281
24472
 
24282
24473
  // ../blocks/src/system/runtime/api/creditProducts.ts
@@ -24340,27 +24531,27 @@ function deriveCreditProductLabels(products, options = {}) {
24340
24531
  }
24341
24532
 
24342
24533
  // ../blocks/src/system/runtime/nodes/shop-commerce.shared.ts
24343
- import { z as z49 } from "zod";
24344
- var storedProductCartItemSchema = z49.object({
24345
- kind: z49.literal("product"),
24346
- productId: z49.string().min(1),
24347
- productCategoryId: z49.string().min(1).optional().nullable(),
24348
- variantId: z49.string().min(1).optional().nullable(),
24349
- title: z49.string().min(1),
24350
- variantTitle: z49.string().optional().nullable(),
24351
- quantity: z49.number().finite(),
24352
- unitPriceCents: z49.number().finite(),
24353
- currency: z49.string().min(1),
24354
- imageUrl: z49.string().optional().nullable(),
24355
- soldOut: z49.boolean().optional()
24356
- });
24357
- var storedPassCartItemSchema = z49.object({
24358
- kind: z49.literal("pass"),
24359
- passId: z49.string().min(1),
24360
- title: z49.string().min(1),
24361
- quantity: z49.number().finite().optional(),
24362
- unitPriceCents: z49.number().finite(),
24363
- currency: z49.string().min(1)
24534
+ import { z as z50 } from "zod";
24535
+ var storedProductCartItemSchema = z50.object({
24536
+ kind: z50.literal("product"),
24537
+ productId: z50.string().min(1),
24538
+ productCategoryId: z50.string().min(1).optional().nullable(),
24539
+ variantId: z50.string().min(1).optional().nullable(),
24540
+ title: z50.string().min(1),
24541
+ variantTitle: z50.string().optional().nullable(),
24542
+ quantity: z50.number().finite(),
24543
+ unitPriceCents: z50.number().finite(),
24544
+ currency: z50.string().min(1),
24545
+ imageUrl: z50.string().optional().nullable(),
24546
+ soldOut: z50.boolean().optional()
24547
+ });
24548
+ var storedPassCartItemSchema = z50.object({
24549
+ kind: z50.literal("pass"),
24550
+ passId: z50.string().min(1),
24551
+ title: z50.string().min(1),
24552
+ quantity: z50.number().finite().optional(),
24553
+ unitPriceCents: z50.number().finite(),
24554
+ currency: z50.string().min(1)
24364
24555
  });
24365
24556
  function deriveCommerceCheckoutState(state) {
24366
24557
  if (state.items.length === 0) {
@@ -24399,10 +24590,7 @@ function resolveSelectedProduct(products, contentEntry, productSlug) {
24399
24590
 
24400
24591
  // ../blocks/src/system/runtime/nodes/commerce/shared/display.ts
24401
24592
  function formatCommercePrice(cents, currency) {
24402
- return new Intl.NumberFormat("en-US", {
24403
- style: "currency",
24404
- currency: currency.toUpperCase()
24405
- }).format(cents / 100);
24593
+ return formatCurrencyAmount(cents, currency);
24406
24594
  }
24407
24595
  function getPassesHeading(passes, explicitHeading) {
24408
24596
  if (explicitHeading) return explicitHeading;
@@ -24597,214 +24785,214 @@ function formatValidity(days) {
24597
24785
  }
24598
24786
 
24599
24787
  // ../blocks/src/system/runtime/nodes/shop.interactive.ts
24600
- var shopModeSchema = z50.enum(["passes-memberships", "product-list", "product-detail", "cart", "checkout"]);
24601
- var contentEntrySchema3 = z50.object({
24602
- id: z50.string().nullable().optional(),
24603
- slug: z50.string().nullable().optional()
24788
+ var shopModeSchema = z51.enum(["passes-memberships", "product-list", "product-detail", "cart", "checkout"]);
24789
+ var contentEntrySchema3 = z51.object({
24790
+ id: z51.string().nullable().optional(),
24791
+ slug: z51.string().nullable().optional()
24604
24792
  }).nullable();
24605
- var shopSourceSchema = z50.object({
24606
- className: z50.string().nullable().optional(),
24793
+ var shopSourceSchema = z51.object({
24794
+ className: z51.string().nullable().optional(),
24607
24795
  mode: shopModeSchema.optional(),
24608
- heading: z50.string().nullable().optional(),
24609
- productSlug: z50.string().nullable().optional(),
24610
- showPasses: z50.boolean().optional(),
24611
- showMemberships: z50.boolean().optional(),
24612
- layout: z50.enum(["grid", "list"]).optional(),
24613
- columns: z50.string().optional(),
24614
- showDescriptions: z50.boolean().optional(),
24615
- showSummary: z50.boolean().optional(),
24616
- showBody: z50.boolean().optional(),
24617
- showPrices: z50.boolean().optional(),
24618
- showValidityPeriod: z50.boolean().optional(),
24619
- showPricePerCredit: z50.boolean().nullable().optional(),
24620
- passesHeading: z50.string().optional(),
24621
- membershipsHeading: z50.string().optional(),
24622
- buyButtonText: z50.string().optional(),
24623
- addButtonText: z50.string().optional(),
24624
- passPurchaseMode: z50.enum(["add_to_cart", "buy_now"]).optional(),
24625
- subscribeButtonText: z50.string().optional(),
24626
- emptyStateText: z50.string().optional(),
24627
- checkoutButtonText: z50.string().optional(),
24628
- clearButtonText: z50.string().optional(),
24629
- submitButtonText: z50.string().optional(),
24796
+ heading: z51.string().nullable().optional(),
24797
+ productSlug: z51.string().nullable().optional(),
24798
+ showPasses: z51.boolean().optional(),
24799
+ showMemberships: z51.boolean().optional(),
24800
+ layout: z51.enum(["grid", "list"]).optional(),
24801
+ columns: z51.string().optional(),
24802
+ showDescriptions: z51.boolean().optional(),
24803
+ showSummary: z51.boolean().optional(),
24804
+ showBody: z51.boolean().optional(),
24805
+ showPrices: z51.boolean().optional(),
24806
+ showValidityPeriod: z51.boolean().optional(),
24807
+ showPricePerCredit: z51.boolean().nullable().optional(),
24808
+ passesHeading: z51.string().optional(),
24809
+ membershipsHeading: z51.string().optional(),
24810
+ buyButtonText: z51.string().optional(),
24811
+ addButtonText: z51.string().optional(),
24812
+ passPurchaseMode: z51.enum(["add_to_cart", "buy_now"]).optional(),
24813
+ subscribeButtonText: z51.string().optional(),
24814
+ emptyStateText: z51.string().optional(),
24815
+ checkoutButtonText: z51.string().optional(),
24816
+ clearButtonText: z51.string().optional(),
24817
+ submitButtonText: z51.string().optional(),
24630
24818
  contentEntry: contentEntrySchema3.optional(),
24631
- passes: z50.array(publicPassProductSchema).nullable().optional(),
24632
- memberships: z50.array(publicMembershipProductSchema).nullable().optional(),
24633
- products: z50.array(publicProductSchema).nullable().optional(),
24634
- siteId: z50.string().optional(),
24635
- apiBaseUrl: z50.string().optional(),
24819
+ passes: z51.array(publicPassProductSchema).nullable().optional(),
24820
+ memberships: z51.array(publicMembershipProductSchema).nullable().optional(),
24821
+ products: z51.array(publicProductSchema).nullable().optional(),
24822
+ siteId: z51.string().optional(),
24823
+ apiBaseUrl: z51.string().optional(),
24636
24824
  stage: previewStageSchema.optional()
24637
24825
  });
24638
- var productVariantOptionDisplaySchema = z50.object({
24639
- id: z50.string(),
24640
- label: z50.string(),
24641
- soldOut: z50.boolean()
24642
- });
24643
- var productCardDisplaySchema = z50.object({
24644
- productId: z50.string(),
24645
- title: z50.string(),
24646
- path: z50.string().nullable(),
24647
- summary: z50.string().nullable(),
24648
- priceLabel: z50.string().nullable(),
24649
- image: z50.object({
24650
- url: z50.string(),
24651
- alt: z50.string().nullable()
24826
+ var productVariantOptionDisplaySchema = z51.object({
24827
+ id: z51.string(),
24828
+ label: z51.string(),
24829
+ soldOut: z51.boolean()
24830
+ });
24831
+ var productCardDisplaySchema = z51.object({
24832
+ productId: z51.string(),
24833
+ title: z51.string(),
24834
+ path: z51.string().nullable(),
24835
+ summary: z51.string().nullable(),
24836
+ priceLabel: z51.string().nullable(),
24837
+ image: z51.object({
24838
+ url: z51.string(),
24839
+ alt: z51.string().nullable()
24652
24840
  }).nullable(),
24653
- variantOptions: z50.array(productVariantOptionDisplaySchema),
24654
- selectedVariantId: z50.string().nullable(),
24655
- selectionLabel: z50.string(),
24656
- actionLabel: z50.string(),
24657
- soldOut: z50.boolean()
24658
- });
24659
- var productListDisplaySchema = z50.object({
24660
- kind: z50.literal("product-list"),
24661
- state: z50.enum(["empty", "ready"]),
24662
- heading: z50.string().nullable(),
24663
- className: z50.string().nullable(),
24664
- layout: z50.enum(["grid", "list"]),
24665
- columns: z50.string(),
24666
- emptyMessage: z50.string(),
24667
- cards: z50.array(productCardDisplaySchema)
24668
- });
24669
- var productDetailDisplaySchema = z50.discriminatedUnion("state", [
24670
- z50.object({
24671
- kind: z50.literal("product-detail"),
24672
- state: z50.literal("empty"),
24673
- heading: z50.string().nullable(),
24674
- className: z50.string().nullable(),
24675
- emptyMessage: z50.string()
24841
+ variantOptions: z51.array(productVariantOptionDisplaySchema),
24842
+ selectedVariantId: z51.string().nullable(),
24843
+ selectionLabel: z51.string(),
24844
+ actionLabel: z51.string(),
24845
+ soldOut: z51.boolean()
24846
+ });
24847
+ var productListDisplaySchema = z51.object({
24848
+ kind: z51.literal("product-list"),
24849
+ state: z51.enum(["empty", "ready"]),
24850
+ heading: z51.string().nullable(),
24851
+ className: z51.string().nullable(),
24852
+ layout: z51.enum(["grid", "list"]),
24853
+ columns: z51.string(),
24854
+ emptyMessage: z51.string(),
24855
+ cards: z51.array(productCardDisplaySchema)
24856
+ });
24857
+ var productDetailDisplaySchema = z51.discriminatedUnion("state", [
24858
+ z51.object({
24859
+ kind: z51.literal("product-detail"),
24860
+ state: z51.literal("empty"),
24861
+ heading: z51.string().nullable(),
24862
+ className: z51.string().nullable(),
24863
+ emptyMessage: z51.string()
24676
24864
  }),
24677
- z50.object({
24678
- kind: z50.literal("product-detail"),
24679
- state: z50.literal("ready"),
24680
- heading: z50.string().nullable(),
24681
- className: z50.string().nullable(),
24682
- title: z50.string(),
24683
- priceLabel: z50.string(),
24684
- summary: z50.string().nullable(),
24685
- categoryLabel: z50.string().nullable(),
24686
- gallery: z50.array(z50.object({
24687
- url: z50.string(),
24688
- alt: z50.string().nullable()
24865
+ z51.object({
24866
+ kind: z51.literal("product-detail"),
24867
+ state: z51.literal("ready"),
24868
+ heading: z51.string().nullable(),
24869
+ className: z51.string().nullable(),
24870
+ title: z51.string(),
24871
+ priceLabel: z51.string(),
24872
+ summary: z51.string().nullable(),
24873
+ categoryLabel: z51.string().nullable(),
24874
+ gallery: z51.array(z51.object({
24875
+ url: z51.string(),
24876
+ alt: z51.string().nullable()
24689
24877
  })),
24690
- variantOptions: z50.array(productVariantOptionDisplaySchema),
24691
- selectedVariantId: z50.string().nullable(),
24692
- selectionLabel: z50.string(),
24693
- actionLabel: z50.string(),
24694
- soldOut: z50.boolean(),
24695
- body: z50.unknown().nullable()
24878
+ variantOptions: z51.array(productVariantOptionDisplaySchema),
24879
+ selectedVariantId: z51.string().nullable(),
24880
+ selectionLabel: z51.string(),
24881
+ actionLabel: z51.string(),
24882
+ soldOut: z51.boolean(),
24883
+ body: z51.unknown().nullable()
24696
24884
  })
24697
24885
  ]);
24698
- var passCardDisplaySchema = z50.object({
24699
- id: z50.string(),
24700
- title: z50.string(),
24701
- description: z50.string().nullable(),
24702
- priceLabel: z50.string(),
24703
- creditsLabel: z50.string(),
24704
- perCreditLabel: z50.string().nullable(),
24705
- validityLabel: z50.string().nullable(),
24706
- actionLabel: z50.string()
24707
- });
24708
- var membershipCardDisplaySchema = z50.object({
24709
- id: z50.string(),
24710
- title: z50.string(),
24711
- description: z50.string().nullable(),
24712
- priceLabel: z50.string(),
24713
- intervalLabel: z50.string(),
24714
- actionLabel: z50.string()
24715
- });
24716
- var passesMembershipsDisplaySchema = z50.object({
24717
- kind: z50.literal("passes-memberships"),
24718
- state: z50.enum(["empty", "ready"]),
24719
- className: z50.string().nullable(),
24720
- layout: z50.enum(["grid", "list"]),
24721
- columns: z50.string(),
24722
- emptyMessage: z50.string(),
24723
- passesHeading: z50.string(),
24724
- membershipsHeading: z50.string(),
24725
- passes: z50.array(passCardDisplaySchema),
24726
- memberships: z50.array(membershipCardDisplaySchema)
24727
- });
24728
- var cartLineDisplaySchema = z50.object({
24729
- key: z50.string(),
24730
- title: z50.string(),
24731
- priceLabel: z50.string(),
24732
- quantity: z50.number(),
24733
- quantityEditable: z50.boolean()
24734
- });
24735
- var cartDisplaySchema = z50.object({
24736
- kind: z50.literal("cart"),
24737
- state: z50.enum(["empty", "ready"]),
24738
- heading: z50.string().nullable(),
24739
- className: z50.string().nullable(),
24740
- emptyMessage: z50.string(),
24741
- supportText: z50.string().nullable(),
24742
- items: z50.array(cartLineDisplaySchema),
24743
- subtotalLabel: z50.string().nullable(),
24744
- checkoutButtonText: z50.string(),
24745
- clearButtonText: z50.string()
24746
- });
24747
- var checkoutDisplaySchema = z50.object({
24748
- kind: z50.literal("checkout"),
24749
- state: z50.enum(["empty", "blocked", "ready"]),
24750
- heading: z50.string().nullable(),
24751
- className: z50.string().nullable(),
24752
- message: z50.string().nullable(),
24753
- submitButtonText: z50.string()
24754
- });
24755
- var passesMembershipsHydrationSchema = z50.object({
24756
- passes: z50.array(publicPassProductSchema),
24757
- memberships: z50.array(publicMembershipProductSchema),
24758
- passPurchaseMode: z50.enum(["add_to_cart", "buy_now"])
24759
- });
24760
- var productListHydrationSchema = z50.object({
24761
- products: z50.array(publicProductSchema),
24762
- showSummary: z50.boolean(),
24763
- showPrices: z50.boolean(),
24764
- addButtonText: z50.string()
24765
- });
24766
- var productDetailHydrationSchema = z50.object({
24767
- products: z50.array(publicProductSchema),
24768
- productId: z50.string().nullable(),
24769
- showSummary: z50.boolean(),
24770
- showBody: z50.boolean(),
24771
- addButtonText: z50.string()
24772
- });
24773
- var cartHydrationSchema = z50.object({
24774
- emptyStateText: z50.string(),
24775
- checkoutButtonText: z50.string(),
24776
- clearButtonText: z50.string()
24777
- });
24778
- var checkoutHydrationSchema = z50.object({
24779
- emptyStateText: z50.string(),
24780
- submitButtonText: z50.string()
24781
- });
24782
- var passesMembershipsRenderSchema = z50.object({
24886
+ var passCardDisplaySchema = z51.object({
24887
+ id: z51.string(),
24888
+ title: z51.string(),
24889
+ description: z51.string().nullable(),
24890
+ priceLabel: z51.string(),
24891
+ creditsLabel: z51.string(),
24892
+ perCreditLabel: z51.string().nullable(),
24893
+ validityLabel: z51.string().nullable(),
24894
+ actionLabel: z51.string()
24895
+ });
24896
+ var membershipCardDisplaySchema = z51.object({
24897
+ id: z51.string(),
24898
+ title: z51.string(),
24899
+ description: z51.string().nullable(),
24900
+ priceLabel: z51.string(),
24901
+ intervalLabel: z51.string(),
24902
+ actionLabel: z51.string()
24903
+ });
24904
+ var passesMembershipsDisplaySchema = z51.object({
24905
+ kind: z51.literal("passes-memberships"),
24906
+ state: z51.enum(["empty", "ready"]),
24907
+ className: z51.string().nullable(),
24908
+ layout: z51.enum(["grid", "list"]),
24909
+ columns: z51.string(),
24910
+ emptyMessage: z51.string(),
24911
+ passesHeading: z51.string(),
24912
+ membershipsHeading: z51.string(),
24913
+ passes: z51.array(passCardDisplaySchema),
24914
+ memberships: z51.array(membershipCardDisplaySchema)
24915
+ });
24916
+ var cartLineDisplaySchema = z51.object({
24917
+ key: z51.string(),
24918
+ title: z51.string(),
24919
+ priceLabel: z51.string(),
24920
+ quantity: z51.number(),
24921
+ quantityEditable: z51.boolean()
24922
+ });
24923
+ var cartDisplaySchema = z51.object({
24924
+ kind: z51.literal("cart"),
24925
+ state: z51.enum(["empty", "ready"]),
24926
+ heading: z51.string().nullable(),
24927
+ className: z51.string().nullable(),
24928
+ emptyMessage: z51.string(),
24929
+ supportText: z51.string().nullable(),
24930
+ items: z51.array(cartLineDisplaySchema),
24931
+ subtotalLabel: z51.string().nullable(),
24932
+ checkoutButtonText: z51.string(),
24933
+ clearButtonText: z51.string()
24934
+ });
24935
+ var checkoutDisplaySchema = z51.object({
24936
+ kind: z51.literal("checkout"),
24937
+ state: z51.enum(["empty", "blocked", "ready"]),
24938
+ heading: z51.string().nullable(),
24939
+ className: z51.string().nullable(),
24940
+ message: z51.string().nullable(),
24941
+ submitButtonText: z51.string()
24942
+ });
24943
+ var passesMembershipsHydrationSchema = z51.object({
24944
+ passes: z51.array(publicPassProductSchema),
24945
+ memberships: z51.array(publicMembershipProductSchema),
24946
+ passPurchaseMode: z51.enum(["add_to_cart", "buy_now"])
24947
+ });
24948
+ var productListHydrationSchema = z51.object({
24949
+ products: z51.array(publicProductSchema),
24950
+ showSummary: z51.boolean(),
24951
+ showPrices: z51.boolean(),
24952
+ addButtonText: z51.string()
24953
+ });
24954
+ var productDetailHydrationSchema = z51.object({
24955
+ products: z51.array(publicProductSchema),
24956
+ productId: z51.string().nullable(),
24957
+ showSummary: z51.boolean(),
24958
+ showBody: z51.boolean(),
24959
+ addButtonText: z51.string()
24960
+ });
24961
+ var cartHydrationSchema = z51.object({
24962
+ emptyStateText: z51.string(),
24963
+ checkoutButtonText: z51.string(),
24964
+ clearButtonText: z51.string()
24965
+ });
24966
+ var checkoutHydrationSchema = z51.object({
24967
+ emptyStateText: z51.string(),
24968
+ submitButtonText: z51.string()
24969
+ });
24970
+ var passesMembershipsRenderSchema = z51.object({
24783
24971
  display: passesMembershipsDisplaySchema,
24784
24972
  hydration: passesMembershipsHydrationSchema
24785
24973
  });
24786
- var productListRenderSchema = z50.object({
24974
+ var productListRenderSchema = z51.object({
24787
24975
  display: productListDisplaySchema,
24788
24976
  hydration: productListHydrationSchema
24789
24977
  });
24790
- var productDetailRenderSchema = z50.object({
24978
+ var productDetailRenderSchema = z51.object({
24791
24979
  display: productDetailDisplaySchema,
24792
24980
  hydration: productDetailHydrationSchema
24793
24981
  });
24794
- var cartRenderSchema = z50.object({
24982
+ var cartRenderSchema = z51.object({
24795
24983
  display: cartDisplaySchema,
24796
24984
  hydration: cartHydrationSchema
24797
24985
  });
24798
- var checkoutRenderSchema = z50.object({
24986
+ var checkoutRenderSchema = z51.object({
24799
24987
  display: checkoutDisplaySchema,
24800
24988
  hydration: checkoutHydrationSchema
24801
24989
  });
24802
24990
  function resolveShowPricePerCredit(source) {
24803
24991
  return source.showPricePerCredit ?? true;
24804
24992
  }
24805
- var shopIslandMetaCodec = createZodCodec(z50.object({
24806
- siteId: z50.string().optional(),
24807
- apiBaseUrl: z50.string().optional(),
24993
+ var shopIslandMetaCodec = createZodCodec(z51.object({
24994
+ siteId: z51.string().optional(),
24995
+ apiBaseUrl: z51.string().optional(),
24808
24996
  stage: previewStageSchema.optional()
24809
24997
  }));
24810
24998
  var shopIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "stage");
@@ -25182,9 +25370,9 @@ var shopBlockDefinition = {
25182
25370
  runtime: shopBlockRuntime,
25183
25371
  dataSchemas: {
25184
25372
  // listPublicPasses returns { passes: [...] }
25185
- passes: z51.object({ passes: z51.array(publicPassProductSchema) }).optional(),
25373
+ passes: z52.object({ passes: z52.array(publicPassProductSchema) }).optional(),
25186
25374
  // listPublicMemberships returns { memberships: [...] }
25187
- memberships: z51.object({ memberships: z51.array(publicMembershipProductSchema) }).optional()
25375
+ memberships: z52.object({ memberships: z52.array(publicMembershipProductSchema) }).optional()
25188
25376
  },
25189
25377
  dataLoaders: {
25190
25378
  // Load passes for display
@@ -25207,7 +25395,7 @@ var shopBlockDefinition = {
25207
25395
  };
25208
25396
 
25209
25397
  // ../blocks/src/system/blocks/product-list.ts
25210
- import { z as z52 } from "zod";
25398
+ import { z as z53 } from "zod";
25211
25399
  var productListManifest = createBlockManifest({
25212
25400
  id: "block.product-list",
25213
25401
  version: "1.0.0",
@@ -25340,7 +25528,7 @@ var productListBlockDefinition = {
25340
25528
  }
25341
25529
  }
25342
25530
  };
25343
- var productListDataSchema = z52.object({
25531
+ var productListDataSchema = z53.object({
25344
25532
  products: publicProductsResponseSchema.optional()
25345
25533
  });
25346
25534
 
@@ -25601,72 +25789,72 @@ var checkoutBlockDefinition = {
25601
25789
  };
25602
25790
 
25603
25791
  // ../blocks/src/system/runtime/nodes/gifting.interactive.ts
25604
- import { z as z53 } from "zod";
25605
- var publicGiftCardOfferSchema = z53.object({
25606
- id: z53.string(),
25607
- kind: z53.literal("gift_card"),
25608
- title: z53.string(),
25609
- description: z53.string().nullable(),
25610
- sortOrder: z53.number().int(),
25611
- giftCard: z53.object({
25612
- fixedDenominations: z53.array(z53.number().int().positive()),
25613
- customAmountEnabled: z53.boolean(),
25614
- customAmountMinCents: z53.number().int().positive(),
25615
- customAmountMaxCents: z53.number().int().positive()
25792
+ import { z as z54 } from "zod";
25793
+ var publicGiftCardOfferSchema = z54.object({
25794
+ id: z54.string(),
25795
+ kind: z54.literal("gift_card"),
25796
+ title: z54.string(),
25797
+ description: z54.string().nullable(),
25798
+ sortOrder: z54.number().int(),
25799
+ giftCard: z54.object({
25800
+ fixedDenominations: z54.array(z54.number().int().positive()),
25801
+ customAmountEnabled: z54.boolean(),
25802
+ customAmountMinCents: z54.number().int().positive(),
25803
+ customAmountMaxCents: z54.number().int().positive()
25616
25804
  }),
25617
- voucher: z53.null()
25618
- });
25619
- var publicVoucherOfferSchema = z53.object({
25620
- id: z53.string(),
25621
- kind: z53.literal("voucher"),
25622
- title: z53.string(),
25623
- description: z53.string().nullable(),
25624
- sortOrder: z53.number().int(),
25625
- giftCard: z53.null(),
25626
- voucher: z53.object({
25627
- purchaseAmountCents: z53.number().int().positive()
25805
+ voucher: z54.null()
25806
+ });
25807
+ var publicVoucherOfferSchema = z54.object({
25808
+ id: z54.string(),
25809
+ kind: z54.literal("voucher"),
25810
+ title: z54.string(),
25811
+ description: z54.string().nullable(),
25812
+ sortOrder: z54.number().int(),
25813
+ giftCard: z54.null(),
25814
+ voucher: z54.object({
25815
+ purchaseAmountCents: z54.number().int().positive()
25628
25816
  })
25629
25817
  });
25630
- var publicGiftingOffersResponseSchema = z53.object({
25631
- currency: z53.string(),
25632
- giftCards: z53.array(publicGiftCardOfferSchema),
25633
- vouchers: z53.array(publicVoucherOfferSchema)
25818
+ var publicGiftingOffersResponseSchema = z54.object({
25819
+ currency: z54.string(),
25820
+ giftCards: z54.array(publicGiftCardOfferSchema),
25821
+ vouchers: z54.array(publicVoucherOfferSchema)
25634
25822
  });
25635
- var giftingSourceSchema = z53.object({
25636
- siteId: z53.string().optional(),
25637
- apiBaseUrl: z53.string().optional(),
25823
+ var giftingSourceSchema = z54.object({
25824
+ siteId: z54.string().optional(),
25825
+ apiBaseUrl: z54.string().optional(),
25638
25826
  offers: publicGiftingOffersResponseSchema.nullable().optional(),
25639
- className: z53.string().nullable().optional(),
25640
- heading: z53.string().nullable().optional(),
25641
- intro: z53.string().nullable().optional(),
25642
- giftCardsHeading: z53.string().nullable().optional(),
25643
- vouchersHeading: z53.string().nullable().optional(),
25644
- emptyStateText: z53.string().nullable().optional(),
25645
- checkoutButtonText: z53.string().nullable().optional(),
25646
- successMessage: z53.string().nullable().optional()
25647
- });
25648
- var giftingDisplaySchema = z53.object({
25649
- kind: z53.literal("gifting"),
25650
- state: z53.literal("ready"),
25651
- className: z53.string().nullable(),
25652
- heading: z53.string(),
25653
- intro: z53.string().nullable(),
25654
- giftCardsHeading: z53.string(),
25655
- vouchersHeading: z53.string(),
25656
- emptyStateText: z53.string()
25657
- });
25658
- var giftingHydrationSchema = z53.object({
25827
+ className: z54.string().nullable().optional(),
25828
+ heading: z54.string().nullable().optional(),
25829
+ intro: z54.string().nullable().optional(),
25830
+ giftCardsHeading: z54.string().nullable().optional(),
25831
+ vouchersHeading: z54.string().nullable().optional(),
25832
+ emptyStateText: z54.string().nullable().optional(),
25833
+ checkoutButtonText: z54.string().nullable().optional(),
25834
+ successMessage: z54.string().nullable().optional()
25835
+ });
25836
+ var giftingDisplaySchema = z54.object({
25837
+ kind: z54.literal("gifting"),
25838
+ state: z54.literal("ready"),
25839
+ className: z54.string().nullable(),
25840
+ heading: z54.string(),
25841
+ intro: z54.string().nullable(),
25842
+ giftCardsHeading: z54.string(),
25843
+ vouchersHeading: z54.string(),
25844
+ emptyStateText: z54.string()
25845
+ });
25846
+ var giftingHydrationSchema = z54.object({
25659
25847
  offers: publicGiftingOffersResponseSchema.nullable(),
25660
- checkoutButtonText: z53.string(),
25661
- successMessage: z53.string()
25848
+ checkoutButtonText: z54.string(),
25849
+ successMessage: z54.string()
25662
25850
  });
25663
- var giftingRenderSchema = z53.object({
25851
+ var giftingRenderSchema = z54.object({
25664
25852
  display: giftingDisplaySchema,
25665
25853
  hydration: giftingHydrationSchema
25666
25854
  });
25667
- var giftingIslandMetaCodec = createZodCodec(z53.object({
25668
- siteId: z53.string().optional(),
25669
- apiBaseUrl: z53.string().optional()
25855
+ var giftingIslandMetaCodec = createZodCodec(z54.object({
25856
+ siteId: z54.string().optional(),
25857
+ apiBaseUrl: z54.string().optional()
25670
25858
  }));
25671
25859
  var giftingIslandMetaKeys = defineInteractiveIslandMetaKeys(
25672
25860
  "siteId",
@@ -25837,7 +26025,61 @@ var giftingBlockDefinition = {
25837
26025
  };
25838
26026
 
25839
26027
  // ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
25840
- import { z as z54 } from "zod";
26028
+ import { z as z55 } from "zod";
26029
+
26030
+ // ../blocks/src/system/blocks/newsletter-signup-destination.ts
26031
+ function parseNewsletterSignupBlockId(value) {
26032
+ const trimmed = parseTrimmedString(value);
26033
+ return trimmed && BLOCK_ID_PATTERN.test(trimmed) ? trimmed : null;
26034
+ }
26035
+ function parseSignedNewsletterDestinationRef(value) {
26036
+ const trimmed = parseTrimmedString(value);
26037
+ return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
26038
+ }
26039
+ function parseNewsletterSignupDestinationProvider(value) {
26040
+ return value === "riverbank" || value === "mailchimp" ? value : null;
26041
+ }
26042
+ function buildNewsletterSignupBlockRef(blockId) {
26043
+ const parsed = parseNewsletterSignupBlockId(blockId);
26044
+ return parsed ? { tag: "block_ref", blockId: parsed } : null;
26045
+ }
26046
+ function normalizeNewsletterSignupEditorValuesForDestination(values) {
26047
+ const destinationProvider = parseNewsletterSignupDestinationProvider(values.destinationProvider) ?? "riverbank";
26048
+ if (destinationProvider === "mailchimp") {
26049
+ return {
26050
+ destinationProvider,
26051
+ mailchimpAudienceId: values.mailchimpAudienceId,
26052
+ mailchimpTags: values.mailchimpTags
26053
+ };
26054
+ }
26055
+ return {
26056
+ destinationProvider,
26057
+ listId: values.listId,
26058
+ tags: values.tags
26059
+ };
26060
+ }
26061
+ function deriveNewsletterSignupRuntimeSource(values) {
26062
+ const normalized = normalizeNewsletterSignupEditorValuesForDestination(values);
26063
+ if (normalized.destinationProvider === "mailchimp") {
26064
+ return {
26065
+ destinationProvider: "mailchimp",
26066
+ listId: null,
26067
+ tags: null
26068
+ };
26069
+ }
26070
+ return {
26071
+ destinationProvider: "riverbank",
26072
+ listId: parseTrimmedString(normalized.listId),
26073
+ tags: parseTrimmedString(normalized.tags)
26074
+ };
26075
+ }
26076
+ var BLOCK_ID_PATTERN = /^[A-Za-z0-9._:-]{1,200}$/;
26077
+ var SIGNED_DESTINATION_REF_PATTERN = /^[A-Za-z0-9._~-]{16,1000}$/;
26078
+ function parseTrimmedString(value) {
26079
+ if (typeof value !== "string") return null;
26080
+ const trimmed = value.trim();
26081
+ return trimmed.length > 0 ? trimmed : null;
26082
+ }
25841
26083
 
25842
26084
  // ../blocks/src/system/runtime/nodes/newsletter-form.types.ts
25843
26085
  function getPresetFields(preset, options) {
@@ -25890,49 +26132,65 @@ function withOptionalPhone(fields3, includePhone) {
25890
26132
  }
25891
26133
 
25892
26134
  // ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
25893
- var newsletterPresetSchema = z54.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
25894
- var newsletterFieldSchema = z54.object({
25895
- id: z54.string(),
25896
- type: z54.enum(["email", "text"]),
25897
- label: z54.string(),
25898
- required: z54.boolean(),
25899
- placeholder: z54.string().optional()
25900
- });
25901
- var newsletterSourceSchema = z54.object({
25902
- siteId: z54.string().optional(),
25903
- apiBaseUrl: z54.string().optional(),
25904
- listId: z54.string().nullable().optional(),
26135
+ var newsletterPresetSchema = z55.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
26136
+ var newsletterDestinationProviderSchema = z55.enum(["riverbank", "mailchimp"]);
26137
+ var newsletterFieldSchema = z55.object({
26138
+ id: z55.string(),
26139
+ type: z55.enum(["email", "text"]),
26140
+ label: z55.string(),
26141
+ required: z55.boolean(),
26142
+ placeholder: z55.string().optional()
26143
+ });
26144
+ var newsletterSignupBlockIdSchema = z55.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
26145
+ var signedNewsletterDestinationRefSchema = z55.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
26146
+ var newsletterPublicDestinationRefSchema = z55.discriminatedUnion("tag", [
26147
+ z55.object({
26148
+ tag: z55.literal("block_ref"),
26149
+ blockId: newsletterSignupBlockIdSchema
26150
+ }),
26151
+ z55.object({
26152
+ tag: z55.literal("signed_destination_ref"),
26153
+ token: signedNewsletterDestinationRefSchema
26154
+ })
26155
+ ]);
26156
+ var newsletterSourceSchema = z55.object({
26157
+ blockId: z55.string().nullable().optional(),
26158
+ siteId: z55.string().optional(),
26159
+ apiBaseUrl: z55.string().optional(),
26160
+ listId: z55.string().nullable().optional(),
26161
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
25905
26162
  preset: newsletterPresetSchema.optional(),
25906
- includePhone: z54.boolean().optional(),
25907
- buttonLabel: z54.string().nullable().optional(),
25908
- successMessage: z54.string().nullable().optional(),
25909
- privacyNote: z54.string().nullable().optional(),
25910
- tags: z54.string().nullable().optional(),
25911
- spamProtectionEnabled: z54.boolean().optional(),
25912
- className: z54.string().nullable().optional()
25913
- });
25914
- var newsletterDisplaySchema = z54.object({
25915
- kind: z54.literal("newsletter-form"),
25916
- className: z54.string().nullable(),
25917
- buttonLabel: z54.string(),
25918
- successMessage: z54.string().nullable(),
25919
- privacyNote: z54.string().nullable(),
25920
- fields: z54.array(newsletterFieldSchema)
25921
- });
25922
- var newsletterHydrationSchema = z54.object({
25923
- listId: z54.string().nullable().optional(),
26163
+ includePhone: z55.boolean().optional(),
26164
+ buttonLabel: z55.string().nullable().optional(),
26165
+ successMessage: z55.string().nullable().optional(),
26166
+ privacyNote: z55.string().nullable().optional(),
26167
+ tags: z55.string().nullable().optional(),
26168
+ spamProtectionEnabled: z55.boolean().optional(),
26169
+ className: z55.string().nullable().optional()
26170
+ });
26171
+ var newsletterDisplaySchema = z55.object({
26172
+ kind: z55.literal("newsletter-form"),
26173
+ className: z55.string().nullable(),
26174
+ buttonLabel: z55.string(),
26175
+ successMessage: z55.string().nullable(),
26176
+ privacyNote: z55.string().nullable(),
26177
+ fields: z55.array(newsletterFieldSchema)
26178
+ });
26179
+ var newsletterHydrationSchema = z55.object({
26180
+ destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
26181
+ listId: z55.string().nullable().optional(),
25924
26182
  preset: newsletterPresetSchema,
25925
- includePhone: z54.boolean(),
25926
- tags: z54.string().nullable().optional(),
25927
- spamProtectionEnabled: z54.boolean().optional()
26183
+ includePhone: z55.boolean(),
26184
+ tags: z55.string().nullable().optional(),
26185
+ spamProtectionEnabled: z55.boolean().optional()
25928
26186
  });
25929
- var newsletterRenderSchema = z54.object({
26187
+ var newsletterRenderSchema = z55.object({
25930
26188
  display: newsletterDisplaySchema,
25931
26189
  hydration: newsletterHydrationSchema
25932
26190
  });
25933
- var newsletterIslandMetaCodec = createZodCodec(z54.object({
25934
- siteId: z54.string().optional(),
25935
- apiBaseUrl: z54.string().optional()
26191
+ var newsletterIslandMetaCodec = createZodCodec(z55.object({
26192
+ siteId: z55.string().optional(),
26193
+ apiBaseUrl: z55.string().optional()
25936
26194
  }));
25937
26195
  var newsletterIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl");
25938
26196
  function buildNewsletterDisplay(source) {
@@ -25953,16 +26211,20 @@ var newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
25953
26211
  source: createZodCodec(newsletterSourceSchema),
25954
26212
  render: createZodCodec(newsletterRenderSchema)
25955
26213
  },
25956
- buildRender: (source) => ({
25957
- display: buildNewsletterDisplay(source),
25958
- hydration: {
25959
- listId: source.listId,
25960
- preset: source.preset ?? "emailOnly",
25961
- includePhone: source.includePhone ?? false,
25962
- tags: source.tags ?? null,
25963
- spamProtectionEnabled: source.spamProtectionEnabled
25964
- }
25965
- })
26214
+ buildRender: (source) => {
26215
+ const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
26216
+ return {
26217
+ display: buildNewsletterDisplay(source),
26218
+ hydration: {
26219
+ destinationRef: buildNewsletterSignupBlockRef(source.blockId),
26220
+ listId: runtimeSource.listId,
26221
+ preset: source.preset ?? "emailOnly",
26222
+ includePhone: source.includePhone ?? false,
26223
+ tags: runtimeSource.tags,
26224
+ spamProtectionEnabled: source.spamProtectionEnabled
26225
+ }
26226
+ };
26227
+ }
25966
26228
  });
25967
26229
  var newsletterFormInteractiveIslandPropsCodec = createInteractiveIslandCodec({
25968
26230
  runtime: newsletterFormBlockRuntime,
@@ -25974,6 +26236,20 @@ var newsletterFormInteractiveIslandPropsCodec = createInteractiveIslandCodec({
25974
26236
  apiBaseUrl: value.apiBaseUrl
25975
26237
  })
25976
26238
  });
26239
+ function parseRequiredNewsletterSignupBlockId(value) {
26240
+ const parsed = parseNewsletterSignupBlockId(value);
26241
+ if (!parsed) {
26242
+ throw new Error("Newsletter signup block destination ref requires blockId");
26243
+ }
26244
+ return parsed;
26245
+ }
26246
+ function parseRequiredSignedNewsletterDestinationRef(value) {
26247
+ const parsed = parseSignedNewsletterDestinationRef(value);
26248
+ if (!parsed) {
26249
+ throw new Error("Newsletter signup signed destination ref requires token");
26250
+ }
26251
+ return parsed;
26252
+ }
25977
26253
 
25978
26254
  // ../blocks/src/system/blocks/newsletter-signup.ts
25979
26255
  var stackedComposition = composeFragments([
@@ -26053,23 +26329,23 @@ var newsletterSignupBlockDefinition = {
26053
26329
  };
26054
26330
 
26055
26331
  // ../blocks/src/system/blocks/team-members.ts
26056
- import { z as z55 } from "zod";
26332
+ import { z as z56 } from "zod";
26057
26333
  var ITEM_NAME2 = "member";
26058
26334
  var teamMemberPhotoSchema = mediaSchema2.refine((media2) => media2.type === "image", {
26059
26335
  message: "Team member photos must be image media"
26060
26336
  }).nullable();
26061
- var teamMemberDataSchema = z55.object({
26062
- _type: z55.literal("teamMember"),
26063
- id: z55.string(),
26064
- name: z55.string(),
26065
- role: z55.string().nullable(),
26066
- roleLabel: z55.string().nullable(),
26067
- bio: z55.string().nullable(),
26068
- summary: z55.string().nullable(),
26337
+ var teamMemberDataSchema = z56.object({
26338
+ _type: z56.literal("teamMember"),
26339
+ id: z56.string(),
26340
+ name: z56.string(),
26341
+ role: z56.string().nullable(),
26342
+ roleLabel: z56.string().nullable(),
26343
+ bio: z56.string().nullable(),
26344
+ summary: z56.string().nullable(),
26069
26345
  photo: teamMemberPhotoSchema,
26070
- profilePath: z55.string().nullable()
26346
+ profilePath: z56.string().nullable()
26071
26347
  });
26072
- var teamMembersDataSchema = z55.array(teamMemberDataSchema);
26348
+ var teamMembersDataSchema = z56.array(teamMemberDataSchema);
26073
26349
  var dynamicSourceWhen = { equals: "site_staff" };
26074
26350
  var manualSourceWhen = { equals: "site_staff", not: true };
26075
26351
  var headingNode = text(
@@ -27376,6 +27652,788 @@ function listBlockDescriptors() {
27376
27652
  }));
27377
27653
  }
27378
27654
 
27655
+ // ../theme-core/src/navigation/presets.ts
27656
+ var NAV_LINK_PRESETS = {
27657
+ /**
27658
+ * Minimal - subtle color change on hover
27659
+ */
27660
+ minimal: {
27661
+ name: "Minimal",
27662
+ typography: "body",
27663
+ fontWeight: "medium",
27664
+ textTransform: "none",
27665
+ italic: false,
27666
+ colorToken: "text",
27667
+ hoverColorToken: "primary",
27668
+ padding: "none",
27669
+ borderRadius: "none",
27670
+ effects: {
27671
+ hover: [
27672
+ { effectId: "text-color-change", options: { hoverColorToken: "primary" } }
27673
+ ]
27674
+ }
27675
+ },
27676
+ /**
27677
+ * Underline - static underline appears on hover
27678
+ */
27679
+ underline: {
27680
+ name: "Underline",
27681
+ typography: "body",
27682
+ fontWeight: "medium",
27683
+ textTransform: "none",
27684
+ italic: false,
27685
+ colorToken: "text",
27686
+ padding: "none",
27687
+ borderRadius: "none",
27688
+ effects: {
27689
+ hover: [{ effectId: "nav-underline", options: { style: "static" } }]
27690
+ }
27691
+ },
27692
+ /**
27693
+ * Underline Grow - animated underline grows from center on hover
27694
+ */
27695
+ "underline-grow": {
27696
+ name: "Underline Grow",
27697
+ typography: "body",
27698
+ fontWeight: "medium",
27699
+ textTransform: "none",
27700
+ italic: false,
27701
+ colorToken: "text",
27702
+ padding: "none",
27703
+ borderRadius: "none",
27704
+ effects: {
27705
+ hover: [{ effectId: "nav-underline", options: { style: "grow" } }]
27706
+ }
27707
+ },
27708
+ /**
27709
+ * Capsule - pill-shaped background on hover
27710
+ */
27711
+ capsule: {
27712
+ name: "Capsule",
27713
+ typography: "body",
27714
+ fontWeight: "medium",
27715
+ textTransform: "none",
27716
+ italic: false,
27717
+ colorToken: "text",
27718
+ padding: "compact",
27719
+ borderRadius: "full",
27720
+ effects: {
27721
+ hover: [
27722
+ {
27723
+ effectId: "background-on-hover-alpha",
27724
+ options: { colorToken: "primary", opacity: 10 }
27725
+ }
27726
+ ],
27727
+ active: [
27728
+ {
27729
+ effectId: "background-on-hover-alpha",
27730
+ options: { colorToken: "primary", opacity: 15 }
27731
+ }
27732
+ ]
27733
+ }
27734
+ },
27735
+ /**
27736
+ * Solid - solid background color on hover
27737
+ */
27738
+ solid: {
27739
+ name: "Solid",
27740
+ typography: "body",
27741
+ fontWeight: "medium",
27742
+ textTransform: "none",
27743
+ italic: false,
27744
+ colorToken: "text",
27745
+ padding: "compact",
27746
+ borderRadius: "none",
27747
+ effects: {
27748
+ hover: [
27749
+ {
27750
+ effectId: "background-on-hover",
27751
+ options: { colorToken: "primary", textColorToken: "primaryForeground" }
27752
+ }
27753
+ ],
27754
+ active: [
27755
+ {
27756
+ effectId: "background-on-hover",
27757
+ options: { colorToken: "primary", textColorToken: "primaryForeground" }
27758
+ }
27759
+ ]
27760
+ }
27761
+ },
27762
+ /**
27763
+ * Scale - gentle scale-up on hover
27764
+ */
27765
+ scale: {
27766
+ name: "Scale",
27767
+ typography: "body",
27768
+ fontWeight: "medium",
27769
+ textTransform: "none",
27770
+ italic: false,
27771
+ colorToken: "text",
27772
+ padding: "none",
27773
+ borderRadius: "none",
27774
+ effects: {
27775
+ hover: [{ effectId: "scale-up", options: { scale: 1.05 } }]
27776
+ }
27777
+ },
27778
+ /**
27779
+ * Frosted - semi-transparent glass-like background
27780
+ */
27781
+ frosted: {
27782
+ name: "Frosted",
27783
+ typography: "body",
27784
+ fontWeight: "medium",
27785
+ textTransform: "none",
27786
+ italic: false,
27787
+ colorToken: "text",
27788
+ padding: "compact",
27789
+ borderRadius: "md",
27790
+ effects: {
27791
+ base: [{ effectId: "nav-frosted-base" }],
27792
+ hover: [{ effectId: "nav-frosted-hover" }],
27793
+ active: [{ effectId: "nav-frosted-active" }]
27794
+ }
27795
+ }
27796
+ };
27797
+ var NAV_LINK_PRESET_IDS = Object.keys(NAV_LINK_PRESETS);
27798
+
27799
+ // ../theme-core/src/header/navDropdownSizing.ts
27800
+ var NAV_DROPDOWN_MIN_WIDTH_REM = 12;
27801
+ var NAV_DROPDOWN_MAX_WIDTH_REM = 22;
27802
+ var NAV_DROPDOWN_VIEWPORT_GUTTER_REM = 1;
27803
+ var NAV_DROPDOWN_SHIFT_PROPERTY = "--nav-dropdown-shift-x";
27804
+ var NAV_DROPDOWN_MAX_WIDTH_CSS = `min(${NAV_DROPDOWN_MAX_WIDTH_REM}rem, calc(100vw - ${NAV_DROPDOWN_VIEWPORT_GUTTER_REM * 2}rem))`;
27805
+ var NAV_DROPDOWN_CONTAINER_RAIL_CSS_RULES = [
27806
+ `min-width: ${NAV_DROPDOWN_MIN_WIDTH_REM}rem;`,
27807
+ `width: max-content;`,
27808
+ `max-width: ${NAV_DROPDOWN_MAX_WIDTH_CSS};`,
27809
+ `transform: translateX(var(${NAV_DROPDOWN_SHIFT_PROPERTY}, 0px));`
27810
+ ];
27811
+
27812
+ // ../theme-core/src/layout/generateLayoutCss.ts
27813
+ var classicWaveTransitionMask = svgDataUrl(
27814
+ "<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V46C130 55 260 24 420 30C590 36 690 62 860 42C1035 21 1160 47 1305 36C1365 31 1415 33 1440 38V72H0Z' fill='white'/></svg>"
27815
+ );
27816
+ var balancedWaveTransitionMask = svgDataUrl(
27817
+ "<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V42C120 24 240 24 360 42C480 60 600 60 720 42C840 24 960 24 1080 42C1200 60 1320 60 1440 42V72H0Z' fill='white'/></svg>"
27818
+ );
27819
+ var gentleWaveTransitionMask = svgDataUrl(
27820
+ "<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V43C180 32 300 32 480 43C660 54 780 54 960 43C1140 32 1260 32 1440 43V72H0Z' fill='white'/></svg>"
27821
+ );
27822
+ var boldWaveTransitionMask = svgDataUrl(
27823
+ "<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V44C90 14 270 14 360 44C450 74 630 74 720 44C810 14 990 14 1080 44C1170 74 1350 74 1440 44V72H0Z' fill='white'/></svg>"
27824
+ );
27825
+ var driftWaveTransitionMask = svgDataUrl(
27826
+ "<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V39C115 31 205 54 340 48C505 41 610 16 760 33C920 51 1015 64 1160 44C1280 27 1375 35 1440 50V72H0Z' fill='white'/></svg>"
27827
+ );
27828
+ function svgDataUrl(svg) {
27829
+ return `data:image/svg+xml,${encodeURIComponent(svg)}`;
27830
+ }
27831
+
27832
+ // ../theme-core/src/blocks/vars/event-registration.ts
27833
+ function generateEventRegistrationVars({
27834
+ themeId
27835
+ }) {
27836
+ const root = `:where([data-theme-scope="${themeId}"]) :where([data-block="event-registration"])`;
27837
+ return `
27838
+ ${root} {
27839
+ /* Event selection cards should remain surfaced form controls even when the
27840
+ theme defines a more opinionated shared tile treatment elsewhere. */
27841
+ --er-event-card-bg: rgb(var(--tb-surface));
27842
+ --er-event-card-border-width: var(--rb-border-width, 1px);
27843
+ --er-event-card-hover-opacity: 1;
27844
+ --er-control-bg: rgb(var(--tb-background, var(--tb-surface)));
27845
+ --er-control-text: rgb(var(--tb-foreground, var(--tb-text)));
27846
+ --er-radius: var(--rb-block-radius);
27847
+ --er-surface-muted: rgba(var(--tb-muted, 241 245 249), 0.42);
27848
+ --er-shell-line: rgba(var(--tb-mutedText, 100 116 139), 0.22);
27849
+
27850
+ /* Step indicator */
27851
+ --er-step-active: rgb(var(--tb-primary));
27852
+ --er-step-inactive: rgb(var(--tb-mutedText));
27853
+ --er-step-completed: rgb(var(--tb-success));
27854
+ --er-step-text: rgb(255 255 255);
27855
+ --er-step-text-active: rgb(var(--tb-primaryText, 255 255 255));
27856
+ --er-step-connector: rgba(var(--tb-border), 0.5);
27857
+
27858
+ /* Step title */
27859
+ --er-step-title-size: 1.5rem;
27860
+
27861
+ /* State backgrounds with alpha */
27862
+ --er-success-bg: rgba(var(--tb-success), 0.1);
27863
+ --er-success-text: rgb(var(--tb-success));
27864
+ --er-info-bg: rgba(var(--tb-primary), 0.1);
27865
+ --er-info-text: rgb(var(--tb-primary));
27866
+ --er-error-bg: rgba(var(--tb-destructive, 239 68 68), 0.1);
27867
+ --er-error-text: rgb(var(--tb-destructive, 239 68 68));
27868
+ --er-waitlist-bg: rgba(var(--tb-warning), 0.1);
27869
+ --er-waitlist-text: rgb(var(--tb-warning));
27870
+
27871
+ /* Capacity badges */
27872
+ --er-capacity-available-bg: rgba(var(--tb-success), 0.1);
27873
+ --er-capacity-available-text: rgb(var(--tb-success));
27874
+ --er-capacity-low-bg: rgba(var(--tb-warning), 0.1);
27875
+ --er-capacity-low-text: rgb(var(--tb-warning));
27876
+ --er-capacity-soldout-bg: rgba(var(--tb-destructive, 239 68 68), 0.1);
27877
+ --er-capacity-soldout-text: rgb(var(--tb-destructive, 239 68 68));
27878
+
27879
+ /* Borders */
27880
+ --er-border: rgb(var(--tb-border));
27881
+ --er-border-hover: rgba(var(--tb-primary), 0.5);
27882
+ --er-border-selected: rgb(var(--tb-primary));
27883
+ --er-border-error: rgb(var(--tb-destructive, 239 68 68));
27884
+
27885
+ /* Input focus */
27886
+ --er-focus-ring: rgba(var(--tb-primary), 0.3);
27887
+
27888
+ /* Required marker */
27889
+ --er-required: rgb(var(--tb-destructive, 239 68 68));
27890
+
27891
+ /* Payment option cards */
27892
+ --er-payment-border: rgb(var(--tb-border));
27893
+ --er-payment-border-hover: rgba(var(--tb-primary), 0.5);
27894
+ --er-payment-border-selected: rgb(var(--tb-primary));
27895
+ --er-payment-bg-selected: rgba(var(--tb-primary), 0.08);
27896
+
27897
+ /* Checkmark indicator */
27898
+ --er-check-bg: rgb(var(--tb-primary));
27899
+ --er-check-text: rgb(var(--tb-primaryText, 255 255 255));
27900
+
27901
+ /* Order summary */
27902
+ --er-summary-bg: rgba(var(--tb-primary), 0.1);
27903
+ --er-summary-border: rgb(var(--tb-border));
27904
+ }
27905
+ `;
27906
+ }
27907
+
27908
+ // ../theme-core/src/blocks/vars/event-card-vars.ts
27909
+ function getEventCardCssVars(indent = " ") {
27910
+ const lines = [
27911
+ "--rb-event-card-media-height: 20rem;",
27912
+ "--rb-event-card-image-hover-scale: 1.08;",
27913
+ "--rb-event-card-image-transition-duration: 700ms;",
27914
+ "--rb-event-card-hover-translate-y: 0px;",
27915
+ "--rb-event-card-overlay-color: rgb(var(--tb-primary));",
27916
+ "--rb-event-card-overlay-opacity: 0;",
27917
+ "--rb-event-card-overlay-hover-opacity: 0;",
27918
+ "--rb-event-card-overlay-blend-mode: multiply;",
27919
+ "--rb-event-card-horizontal-image-width: 33.333%;",
27920
+ "--rb-event-card-horizontal-gap: 1rem;"
27921
+ ];
27922
+ return lines.map((line) => `${indent}${line}`).join("\n");
27923
+ }
27924
+
27925
+ // ../theme-core/src/blocks/vars/event-calendar.ts
27926
+ function generateEventCalendarVars({
27927
+ themeId
27928
+ }) {
27929
+ const root = `:where([data-theme-scope="${themeId}"]) :where([data-block="event-calendar"])`;
27930
+ return `
27931
+ ${root} {
27932
+ /* Day cell states */
27933
+ --ec-today-bg: rgba(var(--tb-primary), 0.05);
27934
+ --ec-today-text: rgb(var(--tb-primary));
27935
+ --ec-other-month-opacity: 0.4;
27936
+
27937
+ /* Event items - subtle style (legacy) */
27938
+ --ec-event-bg: rgba(var(--tb-primary), 0.1);
27939
+ --ec-event-hover-bg: rgba(var(--tb-primary), 0.2);
27940
+
27941
+ /* Event items - solid style (default) */
27942
+ --ec-event-solid-bg: rgb(var(--tb-primary));
27943
+ --ec-event-solid-hover-bg: rgb(var(--tb-primary-600, var(--tb-primary)));
27944
+ --ec-event-solid-text: rgb(var(--tb-neutral-50, 255 255 255));
27945
+
27946
+ /* Navigation */
27947
+ --ec-nav-hover-bg: rgba(var(--tb-text), 0.1);
27948
+
27949
+ /* Day headers */
27950
+ --ec-header-bg: rgba(var(--tb-text), 0.05);
27951
+ --ec-header-opacity: 0.7;
27952
+
27953
+ /* Borders */
27954
+ --ec-border: rgb(var(--tb-border));
27955
+ --ec-border-subtle: rgba(var(--tb-border), 0.5);
27956
+
27957
+ /* Surface and text (for inputs/dropdowns) */
27958
+ --ec-surface: rgb(var(--tb-surface));
27959
+ --ec-text: rgb(var(--tb-text));
27960
+
27961
+ /* Text colors */
27962
+ --ec-day-number-opacity: 0.7;
27963
+ --ec-time-opacity: 0.7;
27964
+ --ec-more-opacity: 0.6;
27965
+ --ec-empty-opacity: 0.6;
27966
+
27967
+ /* Tab bar (List/Calendar tabs in Combined mode) */
27968
+ --ec-tab-border-width: 1px;
27969
+ --ec-tab-border-color: var(--ec-border);
27970
+ --ec-tab-active-border-width: 2px;
27971
+ --ec-tab-active-color: rgb(var(--tb-primary));
27972
+ --rb-tab-border-width: var(--ec-tab-border-width);
27973
+ --rb-tab-border-color: var(--ec-tab-border-color);
27974
+ --rb-tab-active-border-width: var(--ec-tab-active-border-width);
27975
+ --rb-tab-active-color: var(--ec-tab-active-color);
27976
+ --rb-tab-text: var(--ec-text);
27977
+ --rb-tab-opacity: 0.7;
27978
+
27979
+ /* Modal */
27980
+ --ec-modal-overlay-bg: rgba(0, 0, 0, 0.5);
27981
+ --ec-modal-bg: rgb(var(--tb-surface, 255 255 255));
27982
+ --ec-modal-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
27983
+
27984
+ /* Event cards (list/spotlight views rendered inside event-calendar) */
27985
+ ${getEventCardCssVars(" ")}
27986
+ }
27987
+ `;
27988
+ }
27989
+
27990
+ // ../theme-core/src/blocks/vars/event-cards.ts
27991
+ function generateEventCardVarsForBlock(themeId, blockKind) {
27992
+ const root = `:where([data-theme-scope="${themeId}"]) :where([data-block="${blockKind}"])`;
27993
+ return `
27994
+ ${root} {
27995
+ ${getEventCardCssVars(" ")}
27996
+ }
27997
+ `;
27998
+ }
27999
+ function generateEventListingVars({ themeId }) {
28000
+ return generateEventCardVarsForBlock(themeId, "event-listing");
28001
+ }
28002
+ function generateEventSpotlightVars({ themeId }) {
28003
+ return generateEventCardVarsForBlock(themeId, "event-spotlight");
28004
+ }
28005
+ function generateEventCombinedVars({ themeId }) {
28006
+ return generateEventCardVarsForBlock(themeId, "event-combined");
28007
+ }
28008
+
28009
+ // ../theme-core/src/blocks/vars/appointment-booking.ts
28010
+ function generateAppointmentBookingVars({
28011
+ themeId
28012
+ }) {
28013
+ const root = `:where([data-theme-scope="${themeId}"]) :where([data-block="appointment-booking"])`;
28014
+ return `
28015
+ ${root} {
28016
+ /* Selection cards (service/resource/time) */
28017
+ --ab-card-border: rgb(var(--tb-border));
28018
+ --ab-card-border-hover: rgba(var(--tb-primary), 0.5);
28019
+ --ab-card-border-selected: rgb(var(--tb-primary));
28020
+ --ab-card-bg-selected: rgba(var(--tb-primary), 0.05);
28021
+
28022
+ /* Checkmark indicator */
28023
+ --ab-check-bg: rgb(var(--tb-primary));
28024
+ --ab-check-text: rgb(var(--tb-background));
28025
+
28026
+ /* State backgrounds */
28027
+ --ab-success-bg: rgba(var(--tb-success), 0.1);
28028
+ --ab-success-text: rgb(var(--tb-success));
28029
+ --ab-error-bg: rgba(var(--tb-destructive), 0.1);
28030
+ --ab-error-text: rgb(var(--tb-destructive));
28031
+ --ab-warning-bg: rgba(var(--tb-warning), 0.1);
28032
+ --ab-warning-text: rgb(var(--tb-warning));
28033
+ --ab-info-bg: rgba(var(--tb-info), 0.1);
28034
+ --ab-info-text: rgb(var(--tb-info));
28035
+
28036
+ /* Loading/muted states */
28037
+ --ab-muted-bg: rgba(var(--tb-text), 0.05);
28038
+ --ab-muted-text: rgba(var(--tb-text), 0.6);
28039
+ --ab-spinner-color: rgb(var(--tb-primary));
28040
+
28041
+ /* Form elements */
28042
+ --ab-input-border: rgb(var(--tb-border));
28043
+ --ab-input-focus-ring: rgba(var(--tb-primary), 0.3);
28044
+
28045
+ /* Buttons */
28046
+ --ab-btn-primary-bg: rgb(var(--tb-primary));
28047
+ --ab-btn-primary-text: rgb(var(--tb-background));
28048
+ --ab-btn-primary-hover: rgba(var(--tb-primary), 0.9);
28049
+ --ab-btn-secondary-border: rgb(var(--tb-border));
28050
+ --ab-btn-secondary-hover: rgba(var(--tb-text), 0.05);
28051
+
28052
+ /* Text opacity levels */
28053
+ --ab-text-muted-opacity: 0.6;
28054
+ --ab-text-faint-opacity: 0.4;
28055
+ }
28056
+ `;
28057
+ }
28058
+
28059
+ // ../theme-core/src/blocks/vars/form-block.ts
28060
+ function generateFormBlockVars({
28061
+ themeId
28062
+ }) {
28063
+ const root = `:where([data-theme-scope="${themeId}"]) :where([data-block="form"])`;
28064
+ return `
28065
+ ${root} {
28066
+ /* Success state */
28067
+ --fb-success-bg: rgba(var(--tb-success), 0.1);
28068
+ --fb-success-text: rgb(var(--tb-success));
28069
+ --fb-success-border: rgba(var(--tb-success), 0.3);
28070
+
28071
+ /* Error state */
28072
+ --fb-error-bg: rgba(var(--tb-destructive), 0.1);
28073
+ --fb-error-text: rgb(var(--tb-destructive));
28074
+ --fb-error-border: rgba(var(--tb-destructive), 0.3);
28075
+
28076
+ /* Empty state */
28077
+ --fb-empty-bg: rgb(var(--tb-surface));
28078
+ --fb-empty-border: rgb(var(--tb-border));
28079
+ --fb-empty-text: rgb(var(--tb-mutedText));
28080
+
28081
+ /* Submit button inherits from button system */
28082
+ }
28083
+ `;
28084
+ }
28085
+
28086
+ // ../theme-core/src/runtime/themeCssVarNames.ts
28087
+ var THEME_RADIUS_CSS_VARS = {
28088
+ block: "--rb-block-radius",
28089
+ button: "--rb-button-radius",
28090
+ input: "--rb-input-radius",
28091
+ legacyCard: "--radius-card",
28092
+ legacyControl: "--radius-control"
28093
+ };
28094
+
28095
+ // ../theme-core/src/blocks/vars/customer-portal.ts
28096
+ function generateCustomerPortalVars({
28097
+ themeId
28098
+ }) {
28099
+ const root = `:where([data-theme-scope="${themeId}"]) :where([data-block="customer-portal"])`;
28100
+ return `
28101
+ ${root} {
28102
+ /* Container */
28103
+ --cp-bg: rgb(var(--tb-surface));
28104
+ --cp-text: rgb(var(--tb-text));
28105
+ --cp-muted: rgb(var(--tb-mutedText));
28106
+ --cp-border: rgb(var(--tb-border));
28107
+ --cp-shadow: var(--shadow-elev);
28108
+ --cp-primary: rgb(var(--tb-primary));
28109
+ --cp-primary-hover: rgb(var(--tb-primary-700, var(--tb-primary)));
28110
+ --cp-error: rgb(var(--tb-destructive));
28111
+ --cp-card-radius: var(${THEME_RADIUS_CSS_VARS.block}, var(${THEME_RADIUS_CSS_VARS.legacyCard}, 0.75rem));
28112
+ --cp-control-radius: var(${THEME_RADIUS_CSS_VARS.input}, var(${THEME_RADIUS_CSS_VARS.legacyControl}, 0.5rem));
28113
+
28114
+ /* Shared tab bar (underline style) */
28115
+ --rb-tab-border-width: 1px;
28116
+ --rb-tab-border-color: rgb(var(--tb-border));
28117
+ --rb-tab-active-border-width: 2px;
28118
+ --rb-tab-active-color: rgb(var(--tb-primary));
28119
+ --rb-tab-text: rgb(var(--tb-text));
28120
+ --rb-tab-opacity: 0.7;
28121
+
28122
+ /* Badge - Success (active, confirmed) */
28123
+ --cp-badge-success-bg: rgba(var(--tb-success), 0.1);
28124
+ --cp-badge-success-text: rgb(var(--tb-success));
28125
+
28126
+ /* Badge - Warning (paused, low credits, waitlist) */
28127
+ --cp-badge-warning-bg: rgba(var(--tb-warning), 0.1);
28128
+ --cp-badge-warning-text: rgb(var(--tb-warning));
28129
+
28130
+ /* Badge - Error (canceled, expired, past_due) */
28131
+ --cp-badge-error-bg: rgba(var(--tb-destructive), 0.1);
28132
+ --cp-badge-error-text: rgb(var(--tb-destructive));
28133
+
28134
+ /* Badge - Info (trialing, scheduled) */
28135
+ --cp-badge-info-bg: rgba(var(--tb-primary), 0.1);
28136
+ --cp-badge-info-text: rgb(var(--tb-primary));
28137
+
28138
+ /* Badge - Default (neutral states) */
28139
+ --cp-badge-default-bg: rgba(var(--tb-mutedText), 0.1);
28140
+ --cp-badge-default-text: rgb(var(--tb-mutedText));
28141
+
28142
+ /* Progress bar (for credit display) */
28143
+ --cp-progress-bg: rgb(var(--tb-border));
28144
+ --cp-progress-fill: rgb(var(--tb-primary));
28145
+
28146
+ /* Card styling */
28147
+ --cp-card-bg: rgb(var(--tb-surface));
28148
+ --cp-card-border: rgb(var(--tb-border));
28149
+
28150
+ /* Alert/notification */
28151
+ --cp-alert-success-bg: rgba(var(--tb-success), 0.1);
28152
+ --cp-alert-success-text: rgb(var(--tb-success));
28153
+ --cp-alert-success-border: rgb(var(--tb-success));
28154
+ --cp-alert-error-bg: rgba(var(--tb-destructive), 0.1);
28155
+ --cp-alert-error-text: rgb(var(--tb-destructive));
28156
+ --cp-alert-error-border: rgb(var(--tb-destructive));
28157
+
28158
+ /* Modal (shared rb-modal classes) */
28159
+ --rb-modal-overlay-bg: rgb(var(--tb-text, 0 0 0) / 0.35);
28160
+ --rb-modal-bg: var(--cp-card-bg);
28161
+ --rb-modal-border: var(--cp-card-border);
28162
+ --rb-modal-shadow: var(--shadow-lg, var(--shadow-elev));
28163
+ --rb-modal-radius: var(--cp-card-radius);
28164
+ --rb-modal-max-width: 560px;
28165
+
28166
+ /* Header */
28167
+ --cp-header-bg: transparent;
28168
+ --cp-header-border: rgb(var(--tb-border));
28169
+
28170
+ /* Section */
28171
+ --cp-section-bg: transparent;
28172
+ }
28173
+ `;
28174
+ }
28175
+
28176
+ // ../theme-core/src/blocks/vars/testimonials.ts
28177
+ var QUOTE_SCALE_SIZE = {
28178
+ sm: "2.5rem",
28179
+ md: "3.5rem",
28180
+ // 4.375rem == 3.5rem * 1.25, matching the legacy accent-quote mark size.
28181
+ lg: "4.375rem",
28182
+ xl: "clamp(3.5rem, 2rem + 4vw, 5.5rem)"
28183
+ };
28184
+ function resolveTestimonialQuoteVars(treatment) {
28185
+ if (!treatment) {
28186
+ return {
28187
+ size: QUOTE_SCALE_SIZE.md,
28188
+ opacity: "0.08",
28189
+ color: "rgb(var(--tb-primary))",
28190
+ font: "inherit",
28191
+ weight: "700",
28192
+ display: "block"
28193
+ };
28194
+ }
28195
+ if (treatment.style === "none") {
28196
+ return {
28197
+ size: QUOTE_SCALE_SIZE.md,
28198
+ opacity: "0",
28199
+ color: "rgb(var(--tb-primary))",
28200
+ font: "inherit",
28201
+ weight: "700",
28202
+ display: "none"
28203
+ };
28204
+ }
28205
+ const base = treatment.style === "serif-display" ? {
28206
+ fontFamily: "heading",
28207
+ scale: "xl",
28208
+ colorToken: "primary",
28209
+ opacity: 1
28210
+ } : {
28211
+ // accent-glyph
28212
+ fontFamily: "body",
28213
+ scale: "lg",
28214
+ colorToken: "secondary",
28215
+ opacity: 1
28216
+ };
28217
+ const fontFamily = treatment.fontFamily ?? base.fontFamily;
28218
+ const scale = treatment.scale ?? base.scale;
28219
+ const colorToken = treatment.colorToken ?? base.colorToken;
28220
+ const opacity = treatment.opacity ?? base.opacity;
28221
+ return {
28222
+ size: QUOTE_SCALE_SIZE[scale],
28223
+ opacity: String(opacity),
28224
+ color: rgbColorValue(colorToken),
28225
+ font: fontFamily === "heading" ? "var(--font-heading)" : "var(--font-body, inherit)",
28226
+ // Heading-font display marks render at the family's natural weight (Forum
28227
+ // ships a single 400) to avoid synthetic bold; glyph marks stay heavy.
28228
+ weight: fontFamily === "heading" ? "400" : "700",
28229
+ display: "block"
28230
+ };
28231
+ }
28232
+ function generateTestimonialsVars({
28233
+ themeId,
28234
+ theme
28235
+ }) {
28236
+ const root = `:where([data-theme-scope="${themeId}"]) :where([data-block="testimonials"])`;
28237
+ const quote = resolveTestimonialQuoteVars(theme.testimonialQuote);
28238
+ return `
28239
+ ${root} {
28240
+ --rb-testimonial-avatar-size: 3rem;
28241
+ --rb-testimonial-avatar-border-radius: 9999px;
28242
+ --rb-testimonial-quote-size: ${quote.size};
28243
+ --rb-testimonial-quote-opacity: ${quote.opacity};
28244
+ --rb-testimonial-quote-color: ${quote.color};
28245
+ --rb-testimonial-quote-font: ${quote.font};
28246
+ --rb-testimonial-quote-weight: ${quote.weight};
28247
+ --rb-testimonial-quote-display: ${quote.display};
28248
+
28249
+ /* Carousel arrows: use the secondary chip so accent-band sections retain contrast. */
28250
+ --rb-testimonial-carousel-arrow-bg: rgb(var(--tb-secondary));
28251
+ --rb-testimonial-carousel-arrow-bg-hover: color-mix(in oklab, rgb(var(--tb-secondary)), rgb(var(--tb-text)) 14%);
28252
+ --rb-testimonial-carousel-arrow-color: rgb(var(--tb-onSecondary));
28253
+ --rb-testimonial-carousel-arrow-border-color: rgba(var(--tb-onSecondary), 0.22);
28254
+ --rb-testimonial-carousel-arrow-size: 2.75rem;
28255
+ --rb-testimonial-carousel-arrow-icon-size: 1.25rem;
28256
+ --rb-testimonial-carousel-arrow-icon-stroke-width: 2.5;
28257
+
28258
+ /* Layout tuning */
28259
+ --rb-testimonial-carousel-shadow-pad: 0.5rem;
28260
+ }
28261
+ `;
28262
+ }
28263
+
28264
+ // ../theme-core/src/blocks/vars/course-details.ts
28265
+ function generateCourseDetailsVars({
28266
+ themeId
28267
+ }) {
28268
+ const root = `:where([data-theme-scope="${themeId}"]) :where([data-block="course-details"])`;
28269
+ return `
28270
+ ${root} {
28271
+ /* Enrollment status */
28272
+ --cd-enrollment-open-text: rgb(var(--tb-success));
28273
+ --cd-enrollment-closed-text: rgb(var(--tb-mutedText));
28274
+
28275
+ /* Capacity indicator */
28276
+ --cd-capacity-available-text: rgb(var(--tb-success));
28277
+ --cd-capacity-low-text: rgb(var(--tb-warning));
28278
+ --cd-capacity-full-text: rgb(var(--tb-destructive, 239 68 68));
28279
+
28280
+ /* Price styling */
28281
+ --cd-price-free-text: rgb(var(--tb-success));
28282
+ }
28283
+ `;
28284
+ }
28285
+
28286
+ // ../theme-core/src/blocks/vars/course-registration.ts
28287
+ function generateCourseRegistrationVars({
28288
+ themeId
28289
+ }) {
28290
+ const root = `:where([data-theme-scope="${themeId}"]) :where([data-block="course-registration"])`;
28291
+ return `
28292
+ ${root} {
28293
+ /* Step indicator */
28294
+ --cr-step-active: rgb(var(--tb-primary));
28295
+ --cr-step-inactive: rgb(var(--tb-mutedText));
28296
+ --cr-step-completed: rgb(var(--tb-success));
28297
+ --cr-step-text: rgb(255 255 255);
28298
+ --cr-step-text-active: rgb(var(--tb-primaryText, 255 255 255));
28299
+ --cr-step-connector: rgba(var(--tb-border), 0.5);
28300
+
28301
+ /* Step title */
28302
+ --cr-step-title-size: 1.5rem;
28303
+
28304
+ /* State backgrounds with alpha */
28305
+ --cr-success-bg: rgba(var(--tb-success), 0.1);
28306
+ --cr-success-text: rgb(var(--tb-success));
28307
+ --cr-error-bg: rgba(var(--tb-destructive, 239 68 68), 0.1);
28308
+ --cr-error-text: rgb(var(--tb-destructive, 239 68 68));
28309
+ --cr-waitlist-bg: rgba(var(--tb-warning), 0.1);
28310
+ --cr-waitlist-text: rgb(var(--tb-warning));
28311
+
28312
+ /* Capacity badges */
28313
+ --cr-capacity-available-bg: rgba(var(--tb-success), 0.1);
28314
+ --cr-capacity-available-text: rgb(var(--tb-success));
28315
+ --cr-capacity-low-bg: rgba(var(--tb-warning), 0.1);
28316
+ --cr-capacity-low-text: rgb(var(--tb-warning));
28317
+ --cr-capacity-soldout-bg: rgba(var(--tb-destructive, 239 68 68), 0.1);
28318
+ --cr-capacity-soldout-text: rgb(var(--tb-destructive, 239 68 68));
28319
+
28320
+ /* Borders */
28321
+ --cr-border: rgb(var(--tb-border));
28322
+ --cr-border-hover: rgba(var(--tb-primary), 0.5);
28323
+ --cr-border-selected: rgb(var(--tb-primary));
28324
+ --cr-border-error: rgb(var(--tb-destructive, 239 68 68));
28325
+
28326
+ /* Input focus */
28327
+ --cr-focus-ring: rgba(var(--tb-primary), 0.3);
28328
+
28329
+ /* Required marker */
28330
+ --cr-required: rgb(var(--tb-destructive, 239 68 68));
28331
+
28332
+ /* Payment option cards */
28333
+ --cr-payment-border: rgb(var(--tb-border));
28334
+ --cr-payment-border-hover: rgba(var(--tb-primary), 0.5);
28335
+ --cr-payment-border-selected: rgb(var(--tb-primary));
28336
+ --cr-payment-bg-selected: rgba(var(--tb-primary), 0.08);
28337
+
28338
+ /* Checkmark indicator */
28339
+ --cr-check-bg: rgb(var(--tb-primary));
28340
+ --cr-check-text: rgb(var(--tb-primaryText, 255 255 255));
28341
+
28342
+ /* Summary */
28343
+ --cr-summary-bg: rgba(var(--tb-primary), 0.1);
28344
+ --cr-summary-border: rgb(var(--tb-border));
28345
+ }
28346
+ `;
28347
+ }
28348
+
28349
+ // ../theme-core/src/blocks/registry.ts
28350
+ var blockVarRegistry = /* @__PURE__ */ new Map();
28351
+ blockVarRegistry.set("event-registration", generateEventRegistrationVars);
28352
+ blockVarRegistry.set("event-calendar", generateEventCalendarVars);
28353
+ blockVarRegistry.set("event-listing", generateEventListingVars);
28354
+ blockVarRegistry.set("event-spotlight", generateEventSpotlightVars);
28355
+ blockVarRegistry.set("event-combined", generateEventCombinedVars);
28356
+ blockVarRegistry.set("appointment-booking", generateAppointmentBookingVars);
28357
+ blockVarRegistry.set("form", generateFormBlockVars);
28358
+ blockVarRegistry.set("customer-portal", generateCustomerPortalVars);
28359
+ blockVarRegistry.set("testimonials", generateTestimonialsVars);
28360
+ blockVarRegistry.set("course-details", generateCourseDetailsVars);
28361
+ blockVarRegistry.set("course-registration", generateCourseRegistrationVars);
28362
+
28363
+ // ../theme-core/src/responsiveMode.ts
28364
+ var THEME_RESPONSIVE_MODE_ATTR = "data-rb-responsive-mode";
28365
+ function escapeRegExp(value) {
28366
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
28367
+ }
28368
+ var RESPONSIVE_SCOPE_RULE_PATTERN = new RegExp(
28369
+ buildResponsiveScopeRulePatternSource(),
28370
+ "g"
28371
+ );
28372
+ var RESPONSIVE_SCOPE_RULE_AT_PATTERN = new RegExp(
28373
+ buildResponsiveScopeRulePatternSource(),
28374
+ "y"
28375
+ );
28376
+ function buildResponsiveScopeRulePatternSource() {
28377
+ return [
28378
+ "@scope",
28379
+ "\\(\\[",
28380
+ escapeRegExp(THEME_RESPONSIVE_MODE_ATTR),
28381
+ '="(?:viewport|container)"\\]\\)',
28382
+ "to",
28383
+ "\\((?::scope )?\\[",
28384
+ escapeRegExp(THEME_RESPONSIVE_MODE_ATTR),
28385
+ "\\]\\)",
28386
+ "\\{"
28387
+ ].join("\\s*");
28388
+ }
28389
+
28390
+ // ../theme-core/src/ThemeScopeCore.tsx
28391
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
28392
+
28393
+ // ../theme-core/src/ThemeScope.tsx
28394
+ import { jsx as jsx4 } from "react/jsx-runtime";
28395
+
28396
+ // ../theme-core/src/ThemeFontLoader.tsx
28397
+ import * as React from "react";
28398
+ import { Fragment, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
28399
+
28400
+ // ../theme-core/src/fonts/uploadFormat.ts
28401
+ var MAX_FONT_UPLOAD_BYTES = 5 * 1024 * 1024;
28402
+
28403
+ // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
28404
+ import { z as z57 } from "zod";
28405
+ var themeBridgeConfigSchema = z57.object({
28406
+ tokens: z57.record(z57.string(), z57.string()),
28407
+ typography: z57.object({
28408
+ headingFamily: z57.string().optional(),
28409
+ bodyFamily: z57.string().optional(),
28410
+ headingWeight: z57.number().optional(),
28411
+ bodyWeight: z57.number().optional()
28412
+ }).optional(),
28413
+ spacing: z57.enum(["comfortable", "standard", "dense"]).optional(),
28414
+ corners: z57.enum(["square", "soft", "rounded", "pill"]).optional(),
28415
+ shadows: z57.enum(["none", "low", "medium", "high"]).optional(),
28416
+ components: z57.object({
28417
+ buttons: z57.union([
28418
+ z57.boolean(),
28419
+ z57.object({
28420
+ variants: z57.array(z57.enum(["primary", "secondary", "outline", "ghost"])).optional()
28421
+ })
28422
+ ]).optional(),
28423
+ cards: z57.union([
28424
+ z57.boolean(),
28425
+ z57.object({
28426
+ variants: z57.array(z57.enum(["default", "elevated", "outlined"])).optional()
28427
+ })
28428
+ ]).optional(),
28429
+ inputs: z57.boolean().optional()
28430
+ }).optional(),
28431
+ overrides: z57.record(z57.string(), z57.string()).optional()
28432
+ }).passthrough();
28433
+
28434
+ // ../theme-core/src/siteChrome.tsx
28435
+ import { Fragment as Fragment2, jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
28436
+
27379
28437
  // src/page-converter/block-summaries.ts
27380
28438
  function buildFieldSummary(input) {
27381
28439
  const nested = input.fields?.map((f) => buildFieldSummary(f));
@@ -27579,11 +28637,11 @@ function resolveModelForPass(passId, tierOverrides, passOverrides, globalModel)
27579
28637
  }
27580
28638
 
27581
28639
  // src/page-converter/passes/pass1-segmentation-matching.ts
27582
- import { z as z60 } from "zod";
28640
+ import { z as z62 } from "zod";
27583
28641
 
27584
28642
  // src/manifest/passes/pass1-fields.ts
27585
- import { z as z56 } from "zod";
27586
- var simpleFieldTypeEnum = z56.enum([
28643
+ import { z as z58 } from "zod";
28644
+ var simpleFieldTypeEnum = z58.enum([
27587
28645
  "text",
27588
28646
  "richText",
27589
28647
  "media",
@@ -27592,7 +28650,7 @@ var simpleFieldTypeEnum = z56.enum([
27592
28650
  "select",
27593
28651
  "number"
27594
28652
  ]);
27595
- var fieldTypeEnum = z56.enum([
28653
+ var fieldTypeEnum = z58.enum([
27596
28654
  "text",
27597
28655
  "richText",
27598
28656
  "media",
@@ -27603,109 +28661,109 @@ var fieldTypeEnum = z56.enum([
27603
28661
  "repeater",
27604
28662
  "group"
27605
28663
  ]);
27606
- var linkDefaultValue = z56.object({
27607
- label: z56.string().describe("The visible link text")
28664
+ var linkDefaultValue = z58.object({
28665
+ label: z58.string().describe("The visible link text")
27608
28666
  });
27609
- var mediaDefaultValue = z56.object({
27610
- src: z56.string().describe("Image/video source URL"),
27611
- alt: z56.string().describe("Alt text for accessibility (empty string if none)")
28667
+ var mediaDefaultValue = z58.object({
28668
+ src: z58.string().describe("Image/video source URL"),
28669
+ alt: z58.string().describe("Alt text for accessibility (empty string if none)")
27612
28670
  });
27613
- var nestedFieldSchema = z56.object({
27614
- id: z56.string().min(1).describe("camelCase field ID"),
28671
+ var nestedFieldSchema = z58.object({
28672
+ id: z58.string().min(1).describe("camelCase field ID"),
27615
28673
  type: simpleFieldTypeEnum,
27616
- label: z56.string().min(1),
27617
- required: z56.boolean().nullable()
28674
+ label: z58.string().min(1),
28675
+ required: z58.boolean().nullable()
27618
28676
  });
27619
- var simpleFieldSchema = z56.object({
27620
- id: z56.string().min(1).describe("camelCase field ID (e.g., headline, ctaButton)"),
28677
+ var simpleFieldSchema = z58.object({
28678
+ id: z58.string().min(1).describe("camelCase field ID (e.g., headline, ctaButton)"),
27621
28679
  type: simpleFieldTypeEnum,
27622
- label: z56.string().min(1),
27623
- required: z56.boolean(),
27624
- multiline: z56.boolean().nullable().describe("For text fields: true if multiple lines"),
27625
- defaultValue: z56.union([
27626
- z56.string(),
27627
- z56.number(),
27628
- z56.boolean(),
28680
+ label: z58.string().min(1),
28681
+ required: z58.boolean(),
28682
+ multiline: z58.boolean().nullable().describe("For text fields: true if multiple lines"),
28683
+ defaultValue: z58.union([
28684
+ z58.string(),
28685
+ z58.number(),
28686
+ z58.boolean(),
27629
28687
  linkDefaultValue,
27630
28688
  mediaDefaultValue,
27631
- z56.null()
28689
+ z58.null()
27632
28690
  ]).describe("Default content extracted from HTML"),
27633
- htmlContext: z56.string().describe("Brief description of where this appears in the HTML")
27634
- });
27635
- var repeaterFieldSchema2 = z56.object({
27636
- id: z56.string().min(1).describe("camelCase field ID (e.g., socialLinks, features)"),
27637
- type: z56.literal("repeater"),
27638
- label: z56.string().min(1),
27639
- required: z56.boolean(),
27640
- itemLabel: z56.string().min(1).describe('Singular label for each item (e.g., "Link", "Feature")'),
27641
- itemFields: z56.array(nestedFieldSchema).min(1).describe("Fields for each item in the repeater"),
27642
- htmlContext: z56.string().describe("Brief description of where this appears in the HTML")
27643
- });
27644
- var groupFieldSchema2 = z56.object({
27645
- id: z56.string().min(1).describe("camelCase field ID (e.g., contactInfo, seoSettings)"),
27646
- type: z56.literal("group"),
27647
- label: z56.string().min(1),
27648
- required: z56.boolean(),
27649
- groupFields: z56.array(nestedFieldSchema).min(1).describe("Fields within the group"),
27650
- htmlContext: z56.string().describe("Brief description of where this appears in the HTML")
27651
- });
27652
- var extractedFieldSchema = z56.union([
28691
+ htmlContext: z58.string().describe("Brief description of where this appears in the HTML")
28692
+ });
28693
+ var repeaterFieldSchema2 = z58.object({
28694
+ id: z58.string().min(1).describe("camelCase field ID (e.g., socialLinks, features)"),
28695
+ type: z58.literal("repeater"),
28696
+ label: z58.string().min(1),
28697
+ required: z58.boolean(),
28698
+ itemLabel: z58.string().min(1).describe('Singular label for each item (e.g., "Link", "Feature")'),
28699
+ itemFields: z58.array(nestedFieldSchema).min(1).describe("Fields for each item in the repeater"),
28700
+ htmlContext: z58.string().describe("Brief description of where this appears in the HTML")
28701
+ });
28702
+ var groupFieldSchema2 = z58.object({
28703
+ id: z58.string().min(1).describe("camelCase field ID (e.g., contactInfo, seoSettings)"),
28704
+ type: z58.literal("group"),
28705
+ label: z58.string().min(1),
28706
+ required: z58.boolean(),
28707
+ groupFields: z58.array(nestedFieldSchema).min(1).describe("Fields within the group"),
28708
+ htmlContext: z58.string().describe("Brief description of where this appears in the HTML")
28709
+ });
28710
+ var extractedFieldSchema = z58.union([
27653
28711
  simpleFieldSchema,
27654
28712
  repeaterFieldSchema2,
27655
28713
  groupFieldSchema2
27656
28714
  ]);
27657
- var extractedEntrySchema = z56.object({
27658
- identifier: z56.string().regex(/^[a-z0-9-]+$/).describe("Unique slug-safe identifier (e.g., wine-tasting-evening)"),
27659
- title: z56.string().min(1).describe("Entry title"),
28715
+ var extractedEntrySchema = z58.object({
28716
+ identifier: z58.string().regex(/^[a-z0-9-]+$/).describe("Unique slug-safe identifier (e.g., wine-tasting-evening)"),
28717
+ title: z58.string().min(1).describe("Entry title"),
27660
28718
  // Use passthrough() instead of record() - generates additionalProperties:true without propertyNames
27661
28719
  // which OpenAI's structured output accepts
27662
- data: z56.object({}).passthrough().describe("Entry data matching the content type schema")
27663
- });
27664
- var newContentTypeSchema = z56.object({
27665
- key: z56.string().regex(/^[a-z][a-z0-9-]*$/).describe("Content type key (e.g., testimonial, team-member)"),
27666
- name: z56.string().min(1).describe("Human-readable name"),
27667
- description: z56.string().nullable().describe("Description of this content type"),
27668
- fields: z56.array(z56.object({
27669
- id: z56.string().min(1),
27670
- type: z56.string().min(1),
27671
- label: z56.string().min(1),
27672
- required: z56.boolean().nullable(),
27673
- description: z56.string().nullable()
28720
+ data: z58.object({}).passthrough().describe("Entry data matching the content type schema")
28721
+ });
28722
+ var newContentTypeSchema = z58.object({
28723
+ key: z58.string().regex(/^[a-z][a-z0-9-]*$/).describe("Content type key (e.g., testimonial, team-member)"),
28724
+ name: z58.string().min(1).describe("Human-readable name"),
28725
+ description: z58.string().nullable().describe("Description of this content type"),
28726
+ fields: z58.array(z58.object({
28727
+ id: z58.string().min(1),
28728
+ type: z58.string().min(1),
28729
+ label: z58.string().min(1),
28730
+ required: z58.boolean().nullable(),
28731
+ description: z58.string().nullable()
27674
28732
  })).min(1),
27675
- isRouted: z56.boolean().describe("Whether entries have their own pages")
28733
+ isRouted: z58.boolean().describe("Whether entries have their own pages")
27676
28734
  });
27677
- var contentTypeApproachSchema = z56.discriminatedUnion("approach", [
28735
+ var contentTypeApproachSchema = z58.discriminatedUnion("approach", [
27678
28736
  // Use an existing content type
27679
- z56.object({
27680
- approach: z56.literal("existingContentType"),
27681
- contentTypeKey: z56.string().min(1).describe("Key of the existing content type to use"),
27682
- entries: z56.array(extractedEntrySchema).min(1).describe("Extracted entries"),
27683
- rationale: z56.string().describe("Why this content type fits")
28737
+ z58.object({
28738
+ approach: z58.literal("existingContentType"),
28739
+ contentTypeKey: z58.string().min(1).describe("Key of the existing content type to use"),
28740
+ entries: z58.array(extractedEntrySchema).min(1).describe("Extracted entries"),
28741
+ rationale: z58.string().describe("Why this content type fits")
27684
28742
  }),
27685
28743
  // Create a new content type
27686
- z56.object({
27687
- approach: z56.literal("newContentType"),
28744
+ z58.object({
28745
+ approach: z58.literal("newContentType"),
27688
28746
  contentType: newContentTypeSchema,
27689
- entries: z56.array(extractedEntrySchema).min(1).describe("Extracted entries"),
27690
- rationale: z56.string().describe("Why a new content type is needed")
28747
+ entries: z58.array(extractedEntrySchema).min(1).describe("Extracted entries"),
28748
+ rationale: z58.string().describe("Why a new content type is needed")
27691
28749
  }),
27692
28750
  // Use repeater field (page-specific data)
27693
- z56.object({
27694
- approach: z56.literal("repeater"),
27695
- rationale: z56.string().describe("Why repeater is preferred over content type")
28751
+ z58.object({
28752
+ approach: z58.literal("repeater"),
28753
+ rationale: z58.string().describe("Why repeater is preferred over content type")
27696
28754
  }),
27697
28755
  // No list data - standard field extraction
27698
- z56.object({
27699
- approach: z56.literal("none"),
27700
- rationale: z56.string().describe("Why this is not list data")
28756
+ z58.object({
28757
+ approach: z58.literal("none"),
28758
+ rationale: z58.string().describe("Why this is not list data")
27701
28759
  })
27702
28760
  ]);
27703
- var pass1OutputSchema = z56.object({
27704
- blockId: z56.string().regex(/^custom\.[a-z][a-z0-9-]*$/).describe("Block ID like custom.hero-section"),
27705
- blockTitle: z56.string().min(1),
27706
- blockDescription: z56.string().nullable(),
27707
- category: z56.enum(["marketing", "content", "blog", "media", "layout", "interactive"]),
27708
- fields: z56.array(extractedFieldSchema).min(1),
28761
+ var pass1OutputSchema = z58.object({
28762
+ blockId: z58.string().regex(/^custom\.[a-z][a-z0-9-]*$/).describe("Block ID like custom.hero-section"),
28763
+ blockTitle: z58.string().min(1),
28764
+ blockDescription: z58.string().nullable(),
28765
+ category: z58.enum(["marketing", "content", "blog", "media", "layout", "interactive"]),
28766
+ fields: z58.array(extractedFieldSchema).min(1),
27709
28767
  /**
27710
28768
  * Content type decision for list-like content.
27711
28769
  * When content types are available, the LLM may decide to use content entries
@@ -27773,11 +28831,12 @@ Your task: Analyze the HTML/JSX markup and identify ALL pieces of content that s
27773
28831
 
27774
28832
  1. **Use richText for formatted lists and multi-line content:**
27775
28833
  - Opening hours \u2192 single richText with formatted list (not 6 separate text fields)
27776
- - Address with line breaks \u2192 single richText (not address1, address2, city, postcode)
28834
+ - Address with line breaks \u2192 single richText with hard line breaks / Shift+Enter between lines (not address1, address2, city, postcode)
27777
28835
  - Feature lists, specs, ingredients \u2192 richText with bullet list
27778
28836
 
27779
- RichText supports: paragraphs, bold, italic, bullet lists, numbered lists, links.
28837
+ RichText supports: paragraphs, hard line breaks, bold, italic, bullet lists, numbered lists, links.
27780
28838
  The CMS editor can format content naturally without rigid field structure.
28839
+ For line-oriented content like addresses, opening hours, and contact details, keep one logical paragraph and use hard line breaks between lines. In the CMS editor, authors create those line breaks with Shift+Enter; Enter creates a new paragraph.
27781
28840
 
27782
28841
  2. **Use repeaters only when items need individual editing/reordering:**
27783
28842
  - Testimonials with avatar + name + quote \u2192 repeater (each item is distinct)
@@ -27789,8 +28848,8 @@ Your task: Analyze the HTML/JSX markup and identify ALL pieces of content that s
27789
28848
  \u274C socialInstagram, socialFacebook, socialTwitter (proliferating similar fields)
27790
28849
  \u274C address1, address2, city, state, zip (5 fields for one address)
27791
28850
 
27792
- \u2705 openingHours: single richText field with formatted content
27793
- \u2705 address: single richText field with line breaks
28851
+ \u2705 openingHours: single richText field with formatted content / hard line breaks
28852
+ \u2705 address: single richText field with hard line breaks (Shift+Enter in the editor)
27794
28853
  \u2705 socialLinks: repeater with { platform, url } IF user needs to add/remove links
27795
28854
 
27796
28855
  ## Field Type Rules
@@ -27820,7 +28879,7 @@ Your task: Analyze the HTML/JSX markup and identify ALL pieces of content that s
27820
28879
 
27821
28880
  ### When to use each type:
27822
28881
  - Single value \u2192 simple field (text, richText, media, link)
27823
- - Formatted list where structure is static \u2192 richText (opening hours, address)
28882
+ - Formatted list where structure is static \u2192 richText (opening hours, address; use hard line breaks / Shift+Enter for line-oriented text)
27824
28883
  - List where items can be added/removed/reordered \u2192 repeater
27825
28884
  - Related fields that belong together \u2192 group
27826
28885
 
@@ -27947,10 +29006,10 @@ async function getJsonFromAiText(ai, config, userMessage, schema) {
27947
29006
  }
27948
29007
 
27949
29008
  // src/manifest/passes/pass3-styling.ts
27950
- import { z as z59 } from "zod";
29009
+ import { z as z61 } from "zod";
27951
29010
 
27952
29011
  // src/manifest/validation/output-schema.ts
27953
- import { z as z58 } from "zod";
29012
+ import { z as z60 } from "zod";
27954
29013
 
27955
29014
  // src/manifest/validation/layout-utils.ts
27956
29015
  function collectLayoutNodeInfos(node, path2 = "layout", out = []) {
@@ -27991,14 +29050,14 @@ function collectLayoutClassNames(node, out = /* @__PURE__ */ new Set()) {
27991
29050
  }
27992
29051
 
27993
29052
  // src/zod/titleSourceSchema.ts
27994
- import { z as z57 } from "zod";
27995
- var titleSourceValueSchema = z57.union([
27996
- z57.string().min(1),
27997
- z57.array(z57.string().min(1)).min(1)
29053
+ import { z as z59 } from "zod";
29054
+ var titleSourceValueSchema = z59.union([
29055
+ z59.string().min(1),
29056
+ z59.array(z59.string().min(1)).min(1)
27998
29057
  ]);
27999
29058
 
28000
29059
  // src/manifest/validation/output-schema.ts
28001
- var blockCategoryEnum2 = z58.enum([
29060
+ var blockCategoryEnum2 = z60.enum([
28002
29061
  "marketing",
28003
29062
  "content",
28004
29063
  "blog",
@@ -28006,53 +29065,53 @@ var blockCategoryEnum2 = z58.enum([
28006
29065
  "layout",
28007
29066
  "interactive"
28008
29067
  ]);
28009
- var llmColorValue = z58.object({
28010
- name: z58.string(),
28011
- hex: z58.string()
28012
- });
28013
- var llmThemePrimitive = z58.union([
28014
- z58.string(),
28015
- z58.number(),
28016
- z58.boolean(),
28017
- z58.null()
29068
+ var llmColorValue = z60.object({
29069
+ name: z60.string(),
29070
+ hex: z60.string()
29071
+ });
29072
+ var llmThemePrimitive = z60.union([
29073
+ z60.string(),
29074
+ z60.number(),
29075
+ z60.boolean(),
29076
+ z60.null()
28018
29077
  ]);
28019
- var llmThemePatchValue = z58.union([
29078
+ var llmThemePatchValue = z60.union([
28020
29079
  llmThemePrimitive,
28021
29080
  llmColorValue,
28022
- z58.array(llmColorValue),
28023
- z58.array(llmThemePrimitive)
29081
+ z60.array(llmColorValue),
29082
+ z60.array(llmThemePrimitive)
28024
29083
  ]);
28025
- var llmThemePatchOpSchema = z58.discriminatedUnion("op", [
28026
- z58.object({
28027
- op: z58.literal("add"),
28028
- path: z58.string().min(1),
29084
+ var llmThemePatchOpSchema = z60.discriminatedUnion("op", [
29085
+ z60.object({
29086
+ op: z60.literal("add"),
29087
+ path: z60.string().min(1),
28029
29088
  value: llmThemePatchValue
28030
29089
  }),
28031
- z58.object({
28032
- op: z58.literal("replace"),
28033
- path: z58.string().min(1),
29090
+ z60.object({
29091
+ op: z60.literal("replace"),
29092
+ path: z60.string().min(1),
28034
29093
  value: llmThemePatchValue
28035
29094
  }),
28036
- z58.object({ op: z58.literal("remove"), path: z58.string().min(1) })
29095
+ z60.object({ op: z60.literal("remove"), path: z60.string().min(1) })
28037
29096
  ]);
28038
- var llmCssDeclaration = z58.object({
28039
- property: z58.string(),
28040
- value: z58.string()
29097
+ var llmCssDeclaration = z60.object({
29098
+ property: z60.string(),
29099
+ value: z60.string()
28041
29100
  });
28042
- var llmCustomCssRuleSchema = z58.object({
28043
- id: z58.string().min(1),
28044
- selector: z58.string().min(1),
28045
- declarations: z58.array(llmCssDeclaration)
29101
+ var llmCustomCssRuleSchema = z60.object({
29102
+ id: z60.string().min(1),
29103
+ selector: z60.string().min(1),
29104
+ declarations: z60.array(llmCssDeclaration)
28046
29105
  });
28047
- var llmNestedRuleSchema = z58.object({
28048
- selector: z58.string().min(1),
28049
- declarations: z58.array(llmCssDeclaration)
29106
+ var llmNestedRuleSchema = z60.object({
29107
+ selector: z60.string().min(1),
29108
+ declarations: z60.array(llmCssDeclaration)
28050
29109
  });
28051
- var llmMediaAtRuleSchema = z58.object({
28052
- id: z58.string().min(1),
28053
- type: z58.literal("media"),
28054
- query: z58.string().min(1),
28055
- rules: z58.array(llmNestedRuleSchema)
29110
+ var llmMediaAtRuleSchema = z60.object({
29111
+ id: z60.string().min(1),
29112
+ type: z60.literal("media"),
29113
+ query: z60.string().min(1),
29114
+ rules: z60.array(llmNestedRuleSchema)
28056
29115
  });
28057
29116
  function normalizeDeclarationsArrayToRecord(declarations) {
28058
29117
  const record = {};
@@ -28082,85 +29141,85 @@ function normalizeLlmMediaAtRule(atRule) {
28082
29141
  rules: atRule.rules.map(normalizeLlmNestedRule)
28083
29142
  };
28084
29143
  }
28085
- var jsonPrimitiveSchema = z58.union([
28086
- z58.string(),
28087
- z58.number(),
28088
- z58.boolean(),
28089
- z58.null()
29144
+ var jsonPrimitiveSchema = z60.union([
29145
+ z60.string(),
29146
+ z60.number(),
29147
+ z60.boolean(),
29148
+ z60.null()
28090
29149
  ]);
28091
- var jsonValueSchema = z58.union([
29150
+ var jsonValueSchema = z60.union([
28092
29151
  jsonPrimitiveSchema,
28093
- z58.array(jsonPrimitiveSchema)
29152
+ z60.array(jsonPrimitiveSchema)
28094
29153
  ]);
28095
- var llmBaseFieldSchema = z58.object({
28096
- id: z58.string().min(1),
28097
- label: z58.string().min(1),
28098
- description: z58.string().nullable(),
28099
- required: z58.boolean(),
29154
+ var llmBaseFieldSchema = z60.object({
29155
+ id: z60.string().min(1),
29156
+ label: z60.string().min(1),
29157
+ description: z60.string().nullable(),
29158
+ required: z60.boolean(),
28100
29159
  defaultValue: jsonValueSchema.nullable()
28101
29160
  });
28102
29161
  var llmTextFieldSchema = llmBaseFieldSchema.extend({
28103
- type: z58.literal("text"),
28104
- multiline: z58.boolean(),
28105
- maxLength: z58.number().int().positive().nullable()
29162
+ type: z60.literal("text"),
29163
+ multiline: z60.boolean(),
29164
+ maxLength: z60.number().int().positive().nullable()
28106
29165
  });
28107
29166
  var llmRichTextFieldSchema = llmBaseFieldSchema.extend({
28108
- type: z58.literal("richText")
29167
+ type: z60.literal("richText")
28109
29168
  });
28110
29169
  var llmMediaFieldSchema = llmBaseFieldSchema.extend({
28111
- type: z58.literal("media"),
28112
- mediaKinds: z58.array(z58.enum(["image", "video", "audio"])).nullable()
29170
+ type: z60.literal("media"),
29171
+ mediaKinds: z60.array(z60.enum(["image", "video", "audio"])).nullable()
28113
29172
  });
28114
29173
  var llmFileFieldSchema = llmBaseFieldSchema.extend({
28115
- type: z58.literal("file"),
28116
- fileKinds: z58.array(z58.enum(["document", "spreadsheet", "archive", "audio"])).nullable()
29174
+ type: z60.literal("file"),
29175
+ fileKinds: z60.array(z60.enum(["document", "spreadsheet", "archive", "audio"])).nullable()
28117
29176
  });
28118
29177
  var llmBooleanFieldSchema = llmBaseFieldSchema.extend({
28119
- type: z58.literal("boolean")
29178
+ type: z60.literal("boolean")
28120
29179
  });
28121
29180
  var llmLinkFieldSchema = llmBaseFieldSchema.extend({
28122
- type: z58.literal("link")
29181
+ type: z60.literal("link")
28123
29182
  });
28124
29183
  var llmSelectFieldSchema = llmBaseFieldSchema.extend({
28125
- type: z58.literal("select"),
28126
- options: z58.array(
28127
- z58.object({
28128
- value: z58.string(),
28129
- label: z58.string()
29184
+ type: z60.literal("select"),
29185
+ options: z60.array(
29186
+ z60.object({
29187
+ value: z60.string(),
29188
+ label: z60.string()
28130
29189
  })
28131
29190
  ),
28132
- multiple: z58.boolean().nullable()
29191
+ multiple: z60.boolean().nullable()
28133
29192
  });
28134
29193
  var llmNumberFieldSchema = llmBaseFieldSchema.extend({
28135
- type: z58.literal("number")
28136
- });
28137
- var llmNestedFieldSchema = z58.object({
28138
- id: z58.string(),
28139
- type: z58.string(),
28140
- label: z58.string(),
28141
- required: z58.boolean().nullable(),
28142
- multiline: z58.boolean().nullable(),
29194
+ type: z60.literal("number")
29195
+ });
29196
+ var llmNestedFieldSchema = z60.object({
29197
+ id: z60.string(),
29198
+ type: z60.string(),
29199
+ label: z60.string(),
29200
+ required: z60.boolean().nullable(),
29201
+ multiline: z60.boolean().nullable(),
28143
29202
  defaultValue: jsonValueSchema.nullable()
28144
29203
  }).passthrough();
28145
- var llmNestedFieldsSchema = z58.array(llmNestedFieldSchema);
29204
+ var llmNestedFieldsSchema = z60.array(llmNestedFieldSchema);
28146
29205
  var llmGroupFieldSchema = llmBaseFieldSchema.extend({
28147
- type: z58.literal("group"),
28148
- schema: z58.object({
29206
+ type: z60.literal("group"),
29207
+ schema: z60.object({
28149
29208
  fields: llmNestedFieldsSchema
28150
29209
  })
28151
29210
  });
28152
29211
  var llmRepeaterFieldSchema = llmBaseFieldSchema.extend({
28153
- type: z58.literal("repeater"),
28154
- itemLabel: z58.string(),
28155
- itemLabelSource: z58.string().nullable(),
28156
- minItems: z58.number().int().min(0),
28157
- maxItems: z58.number().int().positive().nullable(),
28158
- allowConversion: z58.boolean(),
28159
- schema: z58.object({
29212
+ type: z60.literal("repeater"),
29213
+ itemLabel: z60.string(),
29214
+ itemLabelSource: z60.string().nullable(),
29215
+ minItems: z60.number().int().min(0),
29216
+ maxItems: z60.number().int().positive().nullable(),
29217
+ allowConversion: z60.boolean(),
29218
+ schema: z60.object({
28160
29219
  fields: llmNestedFieldsSchema
28161
29220
  })
28162
29221
  });
28163
- var llmFieldSchema = z58.union([
29222
+ var llmFieldSchema = z60.union([
28164
29223
  llmTextFieldSchema,
28165
29224
  llmRichTextFieldSchema,
28166
29225
  llmMediaFieldSchema,
@@ -28172,66 +29231,66 @@ var llmFieldSchema = z58.union([
28172
29231
  llmGroupFieldSchema,
28173
29232
  llmRepeaterFieldSchema
28174
29233
  ]);
28175
- var llmBindingSchema = z58.object({
28176
- from: z58.string(),
28177
- fallback: z58.string().nullable(),
28178
- transforms: z58.array(
28179
- z58.object({
28180
- id: z58.string()
29234
+ var llmBindingSchema = z60.object({
29235
+ from: z60.string(),
29236
+ fallback: z60.string().nullable(),
29237
+ transforms: z60.array(
29238
+ z60.object({
29239
+ id: z60.string()
28181
29240
  })
28182
29241
  ).nullable()
28183
29242
  });
28184
- var llmRepeatSchema = z58.object({
28185
- collection: z58.object({ from: z58.string() }),
28186
- itemName: z58.string()
29243
+ var llmRepeatSchema = z60.object({
29244
+ collection: z60.object({ from: z60.string() }),
29245
+ itemName: z60.string()
28187
29246
  });
28188
- var llmPropsSchema = z58.object({}).passthrough().nullable();
29247
+ var llmPropsSchema = z60.object({}).passthrough().nullable();
28189
29248
  function buildLlmNodeSchema(maxDepth) {
28190
- const nodeBase = z58.object({
28191
- type: z58.string(),
29249
+ const nodeBase = z60.object({
29250
+ type: z60.string(),
28192
29251
  props: llmPropsSchema,
28193
29252
  $bind: llmBindingSchema.nullable(),
28194
29253
  $repeat: llmRepeatSchema.nullable(),
28195
- $when: z58.object({
28196
- condition: z58.object({ from: z58.string() })
29254
+ $when: z60.object({
29255
+ condition: z60.object({ from: z60.string() })
28197
29256
  }).nullable()
28198
29257
  });
28199
- let schema = nodeBase.extend({ children: z58.null() });
29258
+ let schema = nodeBase.extend({ children: z60.null() });
28200
29259
  for (let i = 0; i < maxDepth; i++) {
28201
- schema = nodeBase.extend({ children: z58.array(schema).nullable() });
29260
+ schema = nodeBase.extend({ children: z60.array(schema).nullable() });
28202
29261
  }
28203
29262
  return schema;
28204
29263
  }
28205
29264
  var MAX_LAYOUT_DEPTH = 6;
28206
29265
  var llmNodeSchema = buildLlmNodeSchema(MAX_LAYOUT_DEPTH);
28207
- var llmCustomBlockSchema = z58.object({
28208
- id: z58.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
29266
+ var llmCustomBlockSchema = z60.object({
29267
+ id: z60.string().min(8).regex(/^custom\.[a-z][a-z0-9-]*$/, {
28209
29268
  message: "Block ID must start with 'custom.' followed by lowercase letters, numbers, or hyphens"
28210
29269
  }),
28211
- title: z58.string().min(1, "Title is required"),
29270
+ title: z60.string().min(1, "Title is required"),
28212
29271
  // Keep in sync with `sdkCustomBlockSchema` and the system manifest schema:
28213
29272
  // - `null` used by OpenAI structured output for "optional" values
28214
29273
  // - array allows multi-part titles (e.g. ["navLabel", "title"])
28215
29274
  titleSource: titleSourceValueSchema.nullable(),
28216
- description: z58.string().nullable(),
29275
+ description: z60.string().nullable(),
28217
29276
  category: blockCategoryEnum2,
28218
- icon: z58.string().nullable(),
28219
- tags: z58.array(z58.string()).nullable(),
29277
+ icon: z60.string().nullable(),
29278
+ tags: z60.array(z60.string()).nullable(),
28220
29279
  // Use LLM-specific field schema (no z.any() for OpenAI compatibility)
28221
29280
  fields: llmFieldSchema.array().min(1, "Custom blocks must have at least one field"),
28222
29281
  // Use LLM-specific node schema (no z.any() for OpenAI compatibility)
28223
29282
  layout: llmNodeSchema
28224
29283
  });
28225
- var htmlToManifestOutputSchema = z58.object({
28226
- blocks: z58.array(llmCustomBlockSchema).min(1, "At least one block is required").max(10, "Maximum 10 blocks per conversion"),
28227
- themePatch: z58.array(llmThemePatchOpSchema).nullable(),
28228
- customCssRules: z58.array(llmCustomCssRuleSchema).nullable(),
28229
- customCssAtRules: z58.array(llmMediaAtRuleSchema).nullable(),
29284
+ var htmlToManifestOutputSchema = z60.object({
29285
+ blocks: z60.array(llmCustomBlockSchema).min(1, "At least one block is required").max(10, "Maximum 10 blocks per conversion"),
29286
+ themePatch: z60.array(llmThemePatchOpSchema).nullable(),
29287
+ customCssRules: z60.array(llmCustomCssRuleSchema).nullable(),
29288
+ customCssAtRules: z60.array(llmMediaAtRuleSchema).nullable(),
28230
29289
  /**
28231
29290
  * Explanation of fixes made when retrying after validation errors.
28232
29291
  * Should explain what changes were made and why.
28233
29292
  */
28234
- fixRationale: z58.string().nullable()
29293
+ fixRationale: z60.string().nullable()
28235
29294
  });
28236
29295
  function collectValidationErrors(output) {
28237
29296
  const errors = [];
@@ -29194,20 +30253,20 @@ function formatValidationFeedback(errors, output) {
29194
30253
  }
29195
30254
 
29196
30255
  // src/manifest/passes/pass3-styling.ts
29197
- var pass3aOutputSchema = z59.object({
29198
- classNamePatches: z59.array(
29199
- z59.object({
29200
- nodePath: z59.string(),
30256
+ var pass3aOutputSchema = z61.object({
30257
+ classNamePatches: z61.array(
30258
+ z61.object({
30259
+ nodePath: z61.string(),
29201
30260
  // "" for root, "children[0]", "children[0].children[1]" etc.
29202
- className: z59.string().min(1)
30261
+ className: z61.string().min(1)
29203
30262
  })
29204
30263
  ),
29205
- rationale: z59.string()
30264
+ rationale: z61.string()
29206
30265
  });
29207
- var pass3bOutputSchema = z59.object({
29208
- customCssRules: z59.array(llmCustomCssRuleSchema).nullable(),
29209
- customCssAtRules: z59.array(llmMediaAtRuleSchema).nullable(),
29210
- rationale: z59.string()
30266
+ var pass3bOutputSchema = z61.object({
30267
+ customCssRules: z61.array(llmCustomCssRuleSchema).nullable(),
30268
+ customCssAtRules: z61.array(llmMediaAtRuleSchema).nullable(),
30269
+ rationale: z61.string()
29211
30270
  });
29212
30271
  function getNodeAtPath(layout, path2) {
29213
30272
  if (path2 === "" || path2 === "root" || path2 === "layout") {
@@ -29514,38 +30573,38 @@ Do NOT include [data-block=...] in selectors - we add that automatically.
29514
30573
 
29515
30574
  // src/page-converter/passes/pass1-segmentation-matching.ts
29516
30575
  var SIZE_WARNING_BYTES = 100 * 1024;
29517
- var sectionTypeEnum = z60.enum(["header", "content", "footer"]);
29518
- var blockCategoryEnum3 = z60.enum(["marketing", "content", "blog", "media", "layout", "interactive"]);
29519
- var baseSectionSchema = z60.object({
29520
- html: z60.string().min(1),
29521
- purpose: z60.string().min(1),
30576
+ var sectionTypeEnum = z62.enum(["header", "content", "footer"]);
30577
+ var blockCategoryEnum3 = z62.enum(["marketing", "content", "blog", "media", "layout", "interactive"]);
30578
+ var baseSectionSchema = z62.object({
30579
+ html: z62.string().min(1),
30580
+ purpose: z62.string().min(1),
29522
30581
  sectionType: sectionTypeEnum
29523
30582
  });
29524
30583
  var builtinMatchSchema = baseSectionSchema.extend({
29525
- decision: z60.literal("builtin"),
29526
- matchedBlock: z60.string().min(1),
29527
- matchScore: z60.number().min(0).max(100),
29528
- matchRationale: z60.string().min(1)
30584
+ decision: z62.literal("builtin"),
30585
+ matchedBlock: z62.string().min(1),
30586
+ matchScore: z62.number().min(0).max(100),
30587
+ matchRationale: z62.string().min(1)
29529
30588
  });
29530
30589
  var customMatchSchema = baseSectionSchema.extend({
29531
- decision: z60.literal("custom"),
29532
- customBlockSuggestion: z60.object({
29533
- title: z60.string().min(1),
30590
+ decision: z62.literal("custom"),
30591
+ customBlockSuggestion: z62.object({
30592
+ title: z62.string().min(1),
29534
30593
  category: blockCategoryEnum3
29535
30594
  })
29536
30595
  });
29537
- var sectionMatchSchema = z60.discriminatedUnion("decision", [
30596
+ var sectionMatchSchema = z62.discriminatedUnion("decision", [
29538
30597
  builtinMatchSchema,
29539
30598
  customMatchSchema
29540
30599
  ]);
29541
- var skippedContentSchema = z60.object({
29542
- description: z60.string(),
29543
- reason: z60.string()
30600
+ var skippedContentSchema = z62.object({
30601
+ description: z62.string(),
30602
+ reason: z62.string()
29544
30603
  });
29545
- var combinedPassSchema = z60.object({
29546
- sections: z60.array(sectionMatchSchema).min(1),
29547
- skippedContent: z60.array(skippedContentSchema).nullable(),
29548
- rationale: z60.string()
30604
+ var combinedPassSchema = z62.object({
30605
+ sections: z62.array(sectionMatchSchema).min(1),
30606
+ skippedContent: z62.array(skippedContentSchema).nullable(),
30607
+ rationale: z62.string()
29549
30608
  });
29550
30609
  function buildSystemPrompt(availableBlocks, matchThreshold) {
29551
30610
  const blockCatalog = availableBlocks.map((b) => {
@@ -29752,10 +30811,10 @@ async function segmentAndMatchBlocks(html, availableBlocks, ctx) {
29752
30811
  }
29753
30812
 
29754
30813
  // src/page-converter/passes/pass2-population.ts
29755
- import { z as z62 } from "zod";
30814
+ import { z as z64 } from "zod";
29756
30815
 
29757
30816
  // src/manifest/three-pass-converter.ts
29758
- import { z as z61 } from "zod";
30817
+ import { z as z63 } from "zod";
29759
30818
 
29760
30819
  // src/manifest/prompt/theme-summary.ts
29761
30820
  var WEIGHT_MAP = {
@@ -29915,43 +30974,8 @@ function formatThemeSummaryForPrompt(summary) {
29915
30974
  }
29916
30975
 
29917
30976
  // src/manifest/three-pass-converter.ts
29918
- function parseInlineMarkdown(text2) {
29919
- const out = [];
29920
- const pushText = (value, marks) => {
29921
- if (!value) return;
29922
- out.push(
29923
- marks && marks.length > 0 ? { type: "text", text: value, marks } : { type: "text", text: value }
29924
- );
29925
- };
29926
- let rest = text2;
29927
- while (rest.length > 0) {
29928
- const start = rest.indexOf("**");
29929
- if (start === -1) {
29930
- pushText(rest);
29931
- break;
29932
- }
29933
- const end = rest.indexOf("**", start + 2);
29934
- if (end === -1) {
29935
- pushText(rest);
29936
- break;
29937
- }
29938
- pushText(rest.slice(0, start));
29939
- pushText(rest.slice(start + 2, end), [{ type: "bold" }]);
29940
- rest = rest.slice(end + 2);
29941
- }
29942
- return out;
29943
- }
29944
30977
  function stringToTipTapDoc(text2) {
29945
- const normalized = text2.replace(/\r\n/g, "\n").trim();
29946
- if (!normalized) return { type: "doc", content: [] };
29947
- const paragraphs = normalized.split(/\n{2,}/).map((p) => p.trim()).filter(Boolean);
29948
- return {
29949
- type: "doc",
29950
- content: paragraphs.map((p) => {
29951
- const inline2 = parseInlineMarkdown(p);
29952
- return inline2.length > 0 ? { type: "paragraph", content: inline2 } : { type: "paragraph" };
29953
- })
29954
- };
30978
+ return createRichTextDocFromMarkdown(text2);
29955
30979
  }
29956
30980
  function coerceRichTextDefaultValue(value) {
29957
30981
  if (value === null || value === void 0) {
@@ -30091,9 +31115,9 @@ function mapPass1FieldToOutputField(field) {
30091
31115
  maxLength: null
30092
31116
  };
30093
31117
  }
30094
- var pass2OutputSchema = z61.object({
31118
+ var pass2OutputSchema = z63.object({
30095
31119
  layout: llmNodeSchema,
30096
- rationale: z61.string().describe("Explain which node binds to which field")
31120
+ rationale: z63.string().describe("Explain which node binds to which field")
30097
31121
  });
30098
31122
  function buildPass2SystemPrompt(fields3, contentTypeApproach) {
30099
31123
  const fieldList = fields3.map((f) => {
@@ -30953,9 +31977,9 @@ async function convertHtmlToManifest(input, options) {
30953
31977
  }
30954
31978
 
30955
31979
  // src/page-converter/passes/pass2-population.ts
30956
- var builtinContentSchema = z62.object({
30957
- content: z62.unknown(),
30958
- rationale: z62.string()
31980
+ var builtinContentSchema = z64.object({
31981
+ content: z64.unknown(),
31982
+ rationale: z64.string()
30959
31983
  });
30960
31984
  var SECTION_STYLES_ALLOWED_KEYS = /* @__PURE__ */ new Set(["background", "spacing"]);
30961
31985
  var BOX_STYLES_ALLOWED_KEYS = /* @__PURE__ */ new Set(["background", "spacing", "raised", "rounded", "border", "fullWidth"]);