@riverbankcms/sdk 0.60.12 → 0.60.14

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 (91) hide show
  1. package/README.md +10 -7
  2. package/dist/_dts/api/src/bookingConfig.d.ts +31 -1
  3. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +38 -1
  4. package/dist/_dts/api/src/bookingOperations.d.ts +3 -0
  5. package/dist/_dts/api/src/bookingRecords.d.ts +45 -0
  6. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +4 -4
  7. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +1 -5
  8. package/dist/_dts/api/src/communications.d.ts +1 -1
  9. package/dist/_dts/api/src/contentRuntime.d.ts +1 -1
  10. package/dist/_dts/api/src/endpoints.d.ts +89 -9
  11. package/dist/_dts/api/src/index.d.ts +2 -1
  12. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +1 -0
  13. package/dist/_dts/api/src/seoEndpoints.d.ts +2 -0
  14. package/dist/_dts/api/src/siteAssets.d.ts +0 -10
  15. package/dist/_dts/api/src/types.d.ts +1 -1
  16. package/dist/_dts/blocks/src/PageRenderer.d.ts +1 -0
  17. package/dist/_dts/blocks/src/index.d.ts +1 -0
  18. package/dist/_dts/blocks/src/portal/types.d.ts +1 -1
  19. package/dist/_dts/blocks/src/server.d.ts +1 -0
  20. package/dist/_dts/blocks/src/subroutes/fold.d.ts +40 -0
  21. package/dist/_dts/blocks/src/subroutes/formatDate.d.ts +12 -0
  22. package/dist/_dts/blocks/src/subroutes/index.d.ts +3 -0
  23. package/dist/_dts/blocks/src/subroutes/kinds.d.ts +32 -0
  24. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +3 -1
  25. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +2 -0
  26. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/types.d.ts +1 -0
  27. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +1 -0
  28. package/dist/_dts/blocks/src/system/spacing.d.ts +2 -1
  29. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +5 -0
  30. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +5 -1
  31. package/dist/_dts/core/src/booking-refunds.d.ts +8 -0
  32. package/dist/_dts/core/src/participant-identity.d.ts +1 -73
  33. package/dist/_dts/core/src/participants.d.ts +19 -7
  34. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +188 -36
  35. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +3 -3
  36. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +3 -3
  37. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -3
  38. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -3
  39. package/dist/_dts/preview-next/src/client/preview/SubrouteNoticePanel.d.ts +13 -0
  40. package/dist/_dts/preview-next/src/client/preview/subrouteNotice.d.ts +26 -0
  41. package/dist/_dts/sdk/src/contracts/page.d.ts +1 -0
  42. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -0
  43. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +1 -0
  44. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +4 -5
  45. package/dist/_dts/sdk/src/version.d.ts +1 -1
  46. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  47. package/dist/_dts/theme-core/src/buttons/personalities/showtime-pill.d.ts +17 -0
  48. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -1
  49. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  50. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +66 -30
  51. package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +16 -0
  52. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  53. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  54. package/dist/_dts/theme-core/src/schema.d.ts +174 -6
  55. package/dist/_dts/theme-core/src/site-styles/appearancePresets.d.ts +328 -15
  56. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +54 -2
  57. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +124 -0
  58. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  59. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  60. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +21 -0
  61. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +2 -1
  62. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  63. package/dist/_dts/theme-core/src/site-styles/types.d.ts +135 -2
  64. package/dist/_dts/ui/src/badge.d.ts +1 -1
  65. package/dist/_dts/ui/src/button.d.ts +1 -1
  66. package/dist/cli/index.mjs +744 -176
  67. package/dist/client/bookings.mjs +115 -63
  68. package/dist/client/client.mjs +848 -227
  69. package/dist/client/hooks.mjs +737 -173
  70. package/dist/client/rendering/client.mjs +179 -100
  71. package/dist/client/rendering/islands.mjs +179 -99
  72. package/dist/client/rendering.mjs +847 -226
  73. package/dist/preview-next/before-render.mjs +103 -16
  74. package/dist/preview-next/client/runtime.mjs +1615 -319
  75. package/dist/preview-next/middleware.mjs +103 -16
  76. package/dist/server/components.mjs +838 -227
  77. package/dist/server/config-validation.mjs +737 -173
  78. package/dist/server/config.mjs +737 -173
  79. package/dist/server/data.mjs +737 -173
  80. package/dist/server/index.mjs +106 -79
  81. package/dist/server/next.mjs +841 -229
  82. package/dist/server/page-converter.mjs +589 -144
  83. package/dist/server/prebuild.mjs +1 -1
  84. package/dist/server/rendering/server.mjs +838 -227
  85. package/dist/server/rendering.mjs +838 -227
  86. package/dist/server/routing.mjs +771 -178
  87. package/dist/server/server.mjs +738 -174
  88. package/dist/server/theme-bridge.mjs +216 -39
  89. package/dist/server/theme.mjs +139 -37
  90. package/dist/styles/index.css +44 -2
  91. package/package.json +1 -1
@@ -197,70 +197,9 @@ var init_participants = __esm({
197
197
  });
198
198
 
199
199
  // ../core/src/participant-identity.ts
200
- var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD;
201
200
  var init_participant_identity = __esm({
202
201
  "../core/src/participant-identity.ts"() {
203
202
  init_assertNever();
204
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
205
- participant_id: {
206
- field: "participant_id",
207
- role: "canonical_link",
208
- canonicalSource: "booking_participants.id",
209
- contractAction: "tighten_in_839",
210
- notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
211
- },
212
- display_name: {
213
- field: "display_name",
214
- role: "contextual_snapshot",
215
- canonicalSource: "booking_participants.display_name for live identity",
216
- contractAction: "retain_as_snapshot",
217
- notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
218
- },
219
- email: {
220
- field: "email",
221
- role: "contextual_snapshot",
222
- canonicalSource: "booking_participants.email_normalized for live email identity",
223
- contractAction: "retain_as_snapshot",
224
- notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
225
- },
226
- email_normalized: {
227
- field: "email_normalized",
228
- role: "contextual_snapshot",
229
- canonicalSource: "booking_participants.email_normalized for live email identity",
230
- contractAction: "retain_as_snapshot",
231
- notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
232
- },
233
- phone: {
234
- field: "phone",
235
- role: "contextual_snapshot",
236
- canonicalSource: "booking_participants.phone for live phone identity",
237
- contractAction: "retain_as_snapshot",
238
- notes: "Participation-time phone context. Live identity belongs to the participant row."
239
- },
240
- identity_state: {
241
- field: "identity_state",
242
- role: "materialization_state",
243
- canonicalSource: "booking_participants.identity_state for subject state",
244
- contractAction: "review_for_later_contract_cleanup",
245
- notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
246
- },
247
- event_attendee_guest_id: {
248
- field: "event_attendee_guest_id",
249
- role: "compatibility_projection",
250
- canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
251
- contractAction: "retain_as_projection",
252
- notes: "Compatibility FK for event guest read models. It is not person identity authority."
253
- }
254
- };
255
- [
256
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
257
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
258
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
259
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
260
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
261
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
262
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
263
- ];
264
203
  }
265
204
  });
266
205
 
@@ -2248,6 +2187,117 @@ var init_pebble = __esm({
2248
2187
  }
2249
2188
  });
2250
2189
 
2190
+ // ../theme-core/src/buttons/personalities/showtime-pill.ts
2191
+ var showtimePill;
2192
+ var init_showtime_pill = __esm({
2193
+ "../theme-core/src/buttons/personalities/showtime-pill.ts"() {
2194
+ init_types3();
2195
+ showtimePill = defineButtonPersonality({
2196
+ id: "showtime-pill",
2197
+ name: "Showtime Pill",
2198
+ description: "Bold pill buttons with uppercase labels, generous padding, and a playful pop.",
2199
+ tags: { tone: "bold", energy: "vibrant", motion: "expressive", era: "modern" },
2200
+ buttonSystem: {
2201
+ global: {
2202
+ cornerStyle: "pill",
2203
+ shadow: "low",
2204
+ textTransform: "uppercase",
2205
+ fontWeight: 700,
2206
+ borderWidth: 2,
2207
+ hoverTransform: "lift",
2208
+ hoverColor: "darken",
2209
+ typography: "body",
2210
+ paddingPreset: "spacious",
2211
+ italic: false
2212
+ },
2213
+ sizes: {
2214
+ sm: { padding: "0.625rem 1.25rem", fontSize: "0.875rem" },
2215
+ md: { padding: "0.875rem 1.75rem", fontSize: "1rem" },
2216
+ lg: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" },
2217
+ xl: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" }
2218
+ },
2219
+ variants: [
2220
+ {
2221
+ id: "primary",
2222
+ name: "Primary",
2223
+ enabled: true,
2224
+ priority: 1,
2225
+ background: { type: "solid", colorToken: "primary" },
2226
+ textColorToken: "background",
2227
+ borderRadius: "rounded-full",
2228
+ effects: {
2229
+ hover: [{ effectId: "pop" }]
2230
+ }
2231
+ },
2232
+ {
2233
+ id: "secondary",
2234
+ name: "Secondary",
2235
+ enabled: true,
2236
+ priority: 2,
2237
+ background: { type: "transparent" },
2238
+ textColorToken: "primary",
2239
+ borderRadius: "rounded-full",
2240
+ border: { widthClass: "border-2", colorToken: "primary" },
2241
+ effects: {
2242
+ hover: [{ effectId: "pop" }]
2243
+ }
2244
+ },
2245
+ {
2246
+ id: "hero",
2247
+ name: "Hero",
2248
+ enabled: true,
2249
+ priority: 1,
2250
+ background: { type: "solid", colorToken: "secondary" },
2251
+ textColorToken: "primary",
2252
+ borderRadius: "rounded-full",
2253
+ effects: {
2254
+ hover: [{ effectId: "pop" }]
2255
+ }
2256
+ },
2257
+ {
2258
+ id: "header",
2259
+ name: "Header",
2260
+ enabled: true,
2261
+ priority: 2,
2262
+ background: { type: "solid", colorToken: "background" },
2263
+ textColorToken: "primary",
2264
+ borderRadius: "rounded-full",
2265
+ border: { widthClass: "border-2", colorToken: "primary" },
2266
+ effects: {
2267
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
2268
+ }
2269
+ },
2270
+ {
2271
+ id: "outline",
2272
+ name: "Outline",
2273
+ enabled: true,
2274
+ priority: 3,
2275
+ background: { type: "transparent" },
2276
+ textColorToken: "primary",
2277
+ borderRadius: "rounded-full",
2278
+ border: { widthClass: "border-2", colorToken: "primary" },
2279
+ effects: {
2280
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
2281
+ }
2282
+ },
2283
+ {
2284
+ id: "ghost",
2285
+ name: "Ghost",
2286
+ enabled: true,
2287
+ priority: 3,
2288
+ background: { type: "transparent" },
2289
+ textColorToken: "primary",
2290
+ borderRadius: "rounded-full",
2291
+ effects: {
2292
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
2293
+ }
2294
+ }
2295
+ ]
2296
+ }
2297
+ });
2298
+ }
2299
+ });
2300
+
2251
2301
  // ../theme-core/src/buttons/personalities/soft-pill.ts
2252
2302
  var softPill;
2253
2303
  var init_soft_pill = __esm({
@@ -2336,6 +2386,7 @@ var init_personalities = __esm({
2336
2386
  init_editorial_link();
2337
2387
  init_ink_stamp();
2338
2388
  init_pebble();
2389
+ init_showtime_pill();
2339
2390
  init_soft_pill();
2340
2391
  init_types3();
2341
2392
  buttonPersonalities = [
@@ -2344,7 +2395,8 @@ var init_personalities = __esm({
2344
2395
  editorialLink,
2345
2396
  pebble,
2346
2397
  inkStamp,
2347
- brushedWash
2398
+ brushedWash,
2399
+ showtimePill
2348
2400
  ];
2349
2401
  new Map(
2350
2402
  buttonPersonalities.map((p) => [p.id, p])
@@ -3881,6 +3933,7 @@ var init_spacing = __esm({
3881
3933
  ];
3882
3934
  SECTION_MIN_HEIGHT_VALUES = [
3883
3935
  "none",
3936
+ "banner",
3884
3937
  "hero",
3885
3938
  "immersive"
3886
3939
  ];
@@ -3902,6 +3955,7 @@ var init_spacing = __esm({
3902
3955
  };
3903
3956
  SECTION_MIN_HEIGHT_MAP = {
3904
3957
  none: "",
3958
+ banner: "rb-section-min-h-banner",
3905
3959
  hero: "rb-section-min-h-hero",
3906
3960
  immersive: "rb-section-min-h-immersive"
3907
3961
  };
@@ -4767,6 +4821,9 @@ var init_boxStyles2 = __esm({
4767
4821
  classes.push(roundedResult);
4768
4822
  }
4769
4823
  }
4824
+ if (input.treatment === "accent-quote") {
4825
+ classes.push("rb-card-treatment-accent-quote");
4826
+ }
4770
4827
  return classes.join(" ").trim() || "";
4771
4828
  }
4772
4829
  };
@@ -4836,7 +4893,7 @@ var init_boxStyles2 = __esm({
4836
4893
  minHeight = input.minHeight;
4837
4894
  } else if (process.env.NODE_ENV !== "production") {
4838
4895
  console.warn(
4839
- `[sectionStyles] Invalid minHeight value in _sectionStyles: "${input.minHeight}". Expected one of: none, hero, immersive.`
4896
+ `[sectionStyles] Invalid minHeight value in _sectionStyles: "${input.minHeight}". Expected one of: none, banner, hero, immersive.`
4840
4897
  );
4841
4898
  }
4842
4899
  }
@@ -5173,24 +5230,8 @@ var init_styledCard = __esm({
5173
5230
  });
5174
5231
 
5175
5232
  // ../blocks/src/system/node/fragments/typography.ts
5176
- function mergeClassName(base, extra) {
5177
- return [base, extra ?? ""].filter(Boolean).join(" ");
5178
- }
5179
- function captionText(opts, ...mods) {
5180
- const {
5181
- as: asProp,
5182
- className: classNameProp,
5183
- color,
5184
- ...rest
5185
- } = {};
5186
- const as = asProp ?? "p";
5187
- const className = mergeClassName("rb-caption", classNameProp);
5188
- const style = textColorStyle(color ?? "mutedText");
5189
- return text({ ...rest, as, className, style }, ...mods);
5190
- }
5191
5233
  var init_typography = __esm({
5192
5234
  "../blocks/src/system/node/fragments/typography.ts"() {
5193
- init_builder();
5194
5235
  init_colorStyles();
5195
5236
  }
5196
5237
  });
@@ -6207,18 +6248,17 @@ function buildAttributionNodes() {
6207
6248
  const name = text(
6208
6249
  {
6209
6250
  as: "strong",
6210
- className: "rb-block",
6211
- style: textColorStyle("text")
6251
+ className: "rb-block"
6212
6252
  },
6213
6253
  bind("testimonial.content.name", { fallback: "Anonymous" })
6214
6254
  );
6215
- const jobTitle = captionText(
6216
- null,
6255
+ const jobTitle = text(
6256
+ { as: "p", className: "rb-caption" },
6217
6257
  when("testimonial.content.jobTitle"),
6218
6258
  bind("testimonial.content.jobTitle")
6219
6259
  );
6220
- const company = captionText(
6221
- null,
6260
+ const company = text(
6261
+ { as: "p", className: "rb-caption" },
6222
6262
  when("testimonial.content.company"),
6223
6263
  bind("testimonial.content.company")
6224
6264
  );
@@ -6252,8 +6292,7 @@ function buildTestimonialCard(...mods) {
6252
6292
  );
6253
6293
  const body = richText(
6254
6294
  {
6255
- className: "rb-prose rb-max-w-none",
6256
- style: textColorStyle("text")
6295
+ className: "rb-prose rb-max-w-none"
6257
6296
  },
6258
6297
  bind("testimonial.content.body"),
6259
6298
  when("testimonial.content.body")
@@ -6337,7 +6376,6 @@ var init_testimonialsCarousel = __esm({
6337
6376
  "../blocks/src/system/fragments/library/testimonialsCarousel.ts"() {
6338
6377
  init_types9();
6339
6378
  init_builder();
6340
- init_colorStyles();
6341
6379
  init_fragments();
6342
6380
  grid = (props2, children, ...mods) => el("grid", props2 ?? void 0, children ?? void 0, ...mods);
6343
6381
  testimonialsCarouselFragment = defineFragment({
@@ -9649,7 +9687,8 @@ var init_course_registration_interactive = __esm({
9649
9687
  run: z.object({
9650
9688
  courseId: z.string(),
9651
9689
  seriesId: z.string(),
9652
- runSlug: z.string()
9690
+ runSlug: z.string(),
9691
+ runName: z.string().nullable()
9653
9692
  })
9654
9693
  }),
9655
9694
  z.object({
@@ -13393,8 +13432,6 @@ var init_footer = __esm({
13393
13432
  init_generateFooterCss();
13394
13433
  }
13395
13434
  });
13396
-
13397
- // ../theme-core/src/layout/generateLayoutCss.ts
13398
13435
  var init_generateLayoutCss = __esm({
13399
13436
  "../theme-core/src/layout/generateLayoutCss.ts"() {
13400
13437
  init_breakpoints();
@@ -14772,7 +14809,7 @@ var ENDPOINT_DEFINITIONS = {
14772
14809
  method: "GET",
14773
14810
  tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
14774
14811
  auth: "user",
14775
- responseKind: "text"
14812
+ responseKind: "blob"
14776
14813
  },
14777
14814
  getNewsletterSubscriber: {
14778
14815
  path: "/sites/{siteId}/newsletter/subscribers/{subscriberId}",
@@ -15103,12 +15140,7 @@ var ENDPOINT_DEFINITIONS = {
15103
15140
  ],
15104
15141
  auth: "user",
15105
15142
  responseKind: "json",
15106
- errors: [
15107
- "validation:invalid_input",
15108
- "resource:not_found",
15109
- "resource:conflict",
15110
- "server:internal_error"
15111
- ]
15143
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
15112
15144
  },
15113
15145
  unpublishTeamMemberProfile: {
15114
15146
  path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/unpublish",
@@ -15361,6 +15393,13 @@ var ENDPOINT_DEFINITIONS = {
15361
15393
  auth: "user",
15362
15394
  responseKind: "json"
15363
15395
  },
15396
+ exportBookingAppointmentsCsv: {
15397
+ path: "/sites/{siteId}/bookings/appointments/export.csv",
15398
+ method: "GET",
15399
+ auth: "user",
15400
+ errors: [],
15401
+ responseKind: "blob"
15402
+ },
15364
15403
  createAppointment: {
15365
15404
  path: "/sites/{siteId}/bookings/appointments",
15366
15405
  method: "POST",
@@ -15488,6 +15527,13 @@ var ENDPOINT_DEFINITIONS = {
15488
15527
  auth: "user",
15489
15528
  responseKind: "json"
15490
15529
  },
15530
+ exportCourseEnrollmentsCsv: {
15531
+ path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/export.csv",
15532
+ method: "GET",
15533
+ auth: "user",
15534
+ errors: [],
15535
+ responseKind: "blob"
15536
+ },
15491
15537
  listCourseWaitlist: {
15492
15538
  path: "/sites/{siteId}/bookings/courses/{courseId}/waitlist",
15493
15539
  method: "GET",
@@ -16850,6 +16896,14 @@ var ENDPOINT_DEFINITIONS = {
16850
16896
  auth: "user",
16851
16897
  responseKind: "json"
16852
16898
  },
16899
+ exportSeoPagesCsv: {
16900
+ path: "/sites/{siteId}/seo/pages",
16901
+ method: "GET",
16902
+ tags: ["site-{siteId}", "seo-pages-{siteId}"],
16903
+ auth: "user",
16904
+ responseKind: "blob",
16905
+ errors: []
16906
+ },
16853
16907
  getSeoQueries: {
16854
16908
  path: "/sites/{siteId}/seo/queries",
16855
16909
  method: "GET",
@@ -16858,6 +16912,14 @@ var ENDPOINT_DEFINITIONS = {
16858
16912
  auth: "user",
16859
16913
  responseKind: "json"
16860
16914
  },
16915
+ exportSeoQueriesCsv: {
16916
+ path: "/sites/{siteId}/seo/queries",
16917
+ method: "GET",
16918
+ tags: ["site-{siteId}", "seo-queries-{siteId}"],
16919
+ auth: "user",
16920
+ responseKind: "blob",
16921
+ errors: []
16922
+ },
16861
16923
  getPerformanceOverview: {
16862
16924
  path: "/sites/{siteId}/performance/overview",
16863
16925
  method: "GET",
@@ -16906,7 +16968,12 @@ var ENDPOINT_DEFINITIONS = {
16906
16968
  path: "/media/{assetId}/canonical-crop",
16907
16969
  method: "POST",
16908
16970
  tags: ["media", "media-{assetId}"],
16909
- errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"],
16971
+ errors: [
16972
+ "validation:invalid_input",
16973
+ "resource:not_found",
16974
+ "resource:conflict",
16975
+ "server:internal_error"
16976
+ ],
16910
16977
  auth: "user",
16911
16978
  responseKind: "json"
16912
16979
  },
@@ -17238,7 +17305,7 @@ var ENDPOINT_DEFINITIONS = {
17238
17305
  method: "GET",
17239
17306
  tags: [TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug],
17240
17307
  auth: "user",
17241
- responseKind: "text"
17308
+ responseKind: "blob"
17242
17309
  },
17243
17310
  // Public submit
17244
17311
  submitForm: {
@@ -18121,6 +18188,14 @@ var ENDPOINT_DEFINITIONS = {
18121
18188
  auth: "user",
18122
18189
  responseKind: "json"
18123
18190
  },
18191
+ exportEventSeriesAttendeesCsv: {
18192
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/attendees/export.csv",
18193
+ method: "GET",
18194
+ tags: ["site-{siteId}", "event-series-{seriesId}"],
18195
+ auth: "user",
18196
+ errors: [],
18197
+ responseKind: "blob"
18198
+ },
18124
18199
  listEventSeriesWaitlist: {
18125
18200
  path: "/sites/{siteId}/bookings/event-series/{seriesId}/waitlist",
18126
18201
  method: "GET",
@@ -18684,6 +18759,14 @@ var ENDPOINT_DEFINITIONS = {
18684
18759
  auth: "user",
18685
18760
  responseKind: "json"
18686
18761
  },
18762
+ exportBookingCustomersCsv: {
18763
+ path: "/sites/{siteId}/bookings/customers/export.csv",
18764
+ method: "GET",
18765
+ tags: ["site-{siteId}", "customers-{siteId}"],
18766
+ auth: "user",
18767
+ errors: [],
18768
+ responseKind: "blob"
18769
+ },
18687
18770
  createBookingCustomer: {
18688
18771
  path: "/sites/{siteId}/bookings/customers",
18689
18772
  method: "POST",
@@ -18711,6 +18794,21 @@ var ENDPOINT_DEFINITIONS = {
18711
18794
  "server:internal_error"
18712
18795
  ]
18713
18796
  },
18797
+ rectifyBookingParticipantIdentity: {
18798
+ path: "/sites/{siteId}/bookings/participants/{participantId}/identity",
18799
+ method: "PATCH",
18800
+ tags: ["site-{siteId}", "customers-{siteId}"],
18801
+ auth: "user",
18802
+ responseKind: "json",
18803
+ errors: [
18804
+ "validation:invalid_input",
18805
+ "auth:forbidden",
18806
+ "resource:not_found",
18807
+ "resource:already_exists",
18808
+ "resource:conflict",
18809
+ "server:internal_error"
18810
+ ]
18811
+ },
18714
18812
  listCustomerPasses: {
18715
18813
  path: "/sites/{siteId}/bookings/customers/{customerId}/passes",
18716
18814
  method: "GET",
@@ -18845,13 +18943,46 @@ var ENDPOINT_DEFINITIONS = {
18845
18943
  auth: "user",
18846
18944
  responseKind: "json"
18847
18945
  },
18946
+ exportMoneyPaymentsCsv: {
18947
+ path: "/sites/{siteId}/bookings/money/payments/export.csv",
18948
+ method: "GET",
18949
+ tags: ["site-{siteId}", "bookings", "money-payments-{siteId}"],
18950
+ errors: [],
18951
+ auth: "user",
18952
+ responseKind: "blob"
18953
+ },
18954
+ exportMoneyBreakdownsCsv: {
18955
+ path: "/sites/{siteId}/bookings/money/report/breakdowns/export.csv",
18956
+ method: "GET",
18957
+ tags: ["site-{siteId}", "bookings", "money-report-{siteId}"],
18958
+ errors: [],
18959
+ auth: "user",
18960
+ responseKind: "blob"
18961
+ },
18962
+ exportMoneyTimeSeriesCsv: {
18963
+ path: "/sites/{siteId}/bookings/money/report/time-series/export.csv",
18964
+ method: "GET",
18965
+ tags: ["site-{siteId}", "bookings", "money-report-{siteId}"],
18966
+ errors: [],
18967
+ auth: "user",
18968
+ responseKind: "blob"
18969
+ },
18848
18970
  listBookingActivity: {
18849
18971
  path: "/sites/{siteId}/bookings/activity",
18850
18972
  method: "GET",
18851
18973
  tags: ["site-{siteId}", "bookings", "activity-{siteId}"],
18974
+ errors: [],
18852
18975
  auth: "user",
18853
18976
  responseKind: "json"
18854
18977
  },
18978
+ exportBookingActivityCsv: {
18979
+ path: "/sites/{siteId}/bookings/activity/export.csv",
18980
+ method: "GET",
18981
+ tags: ["site-{siteId}", "bookings", "activity-{siteId}"],
18982
+ errors: [],
18983
+ auth: "user",
18984
+ responseKind: "blob"
18985
+ },
18855
18986
  // Site logs
18856
18987
  listSiteActivityLogs: {
18857
18988
  path: "/sites/{siteId}/logs/activity",
@@ -19003,13 +19134,6 @@ var ENDPOINT_DEFINITIONS = {
19003
19134
  auth: "user",
19004
19135
  responseKind: "blob"
19005
19136
  },
19006
- exportSeoCsv: {
19007
- path: "/sites/{siteId}/seo/export",
19008
- method: "GET",
19009
- tags: ["site-{siteId}", "seo"],
19010
- auth: "user",
19011
- responseKind: "blob"
19012
- },
19013
19137
  // Admin site cost (for admin panel)
19014
19138
  adminSiteCost: {
19015
19139
  path: "/admin/sites/{siteId}/cost",
@@ -21945,12 +22069,29 @@ function flushPanelFrame(options) {
21945
22069
  function defineBlockDesignCapability(capability) {
21946
22070
  return {
21947
22071
  ...capability,
21948
- kind: "designed"
22072
+ kind: "designed",
22073
+ sectionHeights: capability.sectionHeights ?? ["default"],
22074
+ imageSurfaceTreatments: capability.imageSurfaceTreatments ?? ["none"],
22075
+ imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
22076
+ testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"]
21949
22077
  };
21950
22078
  }
21951
22079
 
21952
22080
  // ../theme-core/src/site-styles/appearancePresets.ts
22081
+ function assertValidOptionGroups(preset2) {
22082
+ preset2.optionGroups?.forEach((group) => {
22083
+ const selectedOption = group.options.find(
22084
+ (option) => option.id === group.selectedOptionId
22085
+ );
22086
+ if (!selectedOption) {
22087
+ throw new Error(
22088
+ `Appearance preset "${preset2.id}" option group "${group.id}" selects missing option "${group.selectedOptionId}".`
22089
+ );
22090
+ }
22091
+ });
22092
+ }
21953
22093
  function defineBlockAppearancePreset(preset2) {
22094
+ assertValidOptionGroups(preset2);
21954
22095
  return preset2;
21955
22096
  }
21956
22097
  function defineSiteChromeAppearancePreset(preset2) {
@@ -21963,13 +22104,122 @@ function defineSiteChromeAppearancePreset(preset2) {
21963
22104
  target: "hero",
21964
22105
  label: "Immersive image hero",
21965
22106
  blockKinds: ["block.hero"],
22107
+ constraints: {
22108
+ layoutFamilies: ["centered", "compact"]
22109
+ },
21966
22110
  design: {
21967
22111
  sectionSurface: "hero-image",
21968
22112
  contentFrame: plainFrame,
21969
22113
  itemSurface: "none",
21970
22114
  transitionAfter: "soft-fade-short",
21971
22115
  emphasis: "high",
21972
- heroLegibility: "scrim-gradient"
22116
+ sectionHeight: "hero",
22117
+ imageSurfaceTreatment: { kind: "neutral-wash" }
22118
+ }
22119
+ }),
22120
+ defineBlockAppearancePreset({
22121
+ kind: "block-design",
22122
+ id: "hero-brand-scrim",
22123
+ target: "hero",
22124
+ label: "Brand scrim image hero",
22125
+ blockKinds: ["block.hero"],
22126
+ constraints: {
22127
+ layoutFamilies: ["centered", "compact"]
22128
+ },
22129
+ optionGroups: [
22130
+ {
22131
+ id: "image-surface-treatment",
22132
+ label: "Treatment",
22133
+ selectedOptionId: "brand-scrim-primary",
22134
+ options: [
22135
+ {
22136
+ id: "brand-scrim-primary",
22137
+ label: "Brand scrim",
22138
+ designPatch: {
22139
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
22140
+ }
22141
+ },
22142
+ {
22143
+ id: "neutral-scrim",
22144
+ label: "Neutral scrim",
22145
+ designPatch: {
22146
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
22147
+ }
22148
+ }
22149
+ ]
22150
+ }
22151
+ ],
22152
+ layoutPatches: [
22153
+ {
22154
+ constraints: {
22155
+ layoutVariantKeys: ["micro"]
22156
+ },
22157
+ designPatch: {
22158
+ sectionHeight: "banner"
22159
+ }
22160
+ }
22161
+ ],
22162
+ design: {
22163
+ sectionSurface: "hero-image",
22164
+ contentFrame: plainFrame,
22165
+ itemSurface: "none",
22166
+ transitionAfter: "soft-fade-short",
22167
+ emphasis: "high",
22168
+ sectionHeight: "immersive",
22169
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
22170
+ }
22171
+ }),
22172
+ defineBlockAppearancePreset({
22173
+ kind: "block-design",
22174
+ id: "hero-brand-scrim-fixed-frame",
22175
+ target: "hero",
22176
+ label: "Fixed-frame brand scrim hero",
22177
+ blockKinds: ["block.hero"],
22178
+ constraints: {
22179
+ layoutFamilies: ["centered", "compact"]
22180
+ },
22181
+ optionGroups: [
22182
+ {
22183
+ id: "image-surface-treatment",
22184
+ label: "Treatment",
22185
+ selectedOptionId: "brand-scrim-primary",
22186
+ options: [
22187
+ {
22188
+ id: "brand-scrim-primary",
22189
+ label: "Brand scrim",
22190
+ designPatch: {
22191
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
22192
+ }
22193
+ },
22194
+ {
22195
+ id: "neutral-scrim",
22196
+ label: "Neutral scrim",
22197
+ designPatch: {
22198
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
22199
+ }
22200
+ }
22201
+ ]
22202
+ }
22203
+ ],
22204
+ layoutPatches: [
22205
+ {
22206
+ constraints: {
22207
+ layoutVariantKeys: ["micro"]
22208
+ },
22209
+ designPatch: {
22210
+ sectionHeight: "banner"
22211
+ }
22212
+ }
22213
+ ],
22214
+ design: {
22215
+ sectionSurface: "hero-image",
22216
+ contentFrame: plainFrame,
22217
+ itemSurface: "none",
22218
+ transitionAfter: "soft-fade-short",
22219
+ emphasis: "high",
22220
+ sectionHeight: "immersive",
22221
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
22222
+ imageSurfaceMotion: "fixed-frame"
21973
22223
  }
21974
22224
  }),
21975
22225
  defineBlockAppearancePreset({
@@ -21986,17 +22236,26 @@ function defineSiteChromeAppearancePreset(preset2) {
21986
22236
  emphasis: "high"
21987
22237
  }
21988
22238
  }),
22239
+ defineBlockAppearancePreset({
22240
+ kind: "block-design",
22241
+ id: "body-text-editorial-intro",
22242
+ target: "body-text",
22243
+ label: "Editorial intro copy",
22244
+ blockKinds: ["block.body-text"],
22245
+ design: {
22246
+ sectionSurface: "base",
22247
+ contentFrame: plainFrame,
22248
+ itemSurface: "none",
22249
+ transitionAfter: "soft-fade-short",
22250
+ emphasis: "high"
22251
+ }
22252
+ }),
21989
22253
  defineBlockAppearancePreset({
21990
22254
  kind: "block-design",
21991
22255
  id: "offerings-calm-list",
21992
22256
  target: "offerings",
21993
22257
  label: "Calm offerings list",
21994
- blockKinds: [
21995
- "block.event-listing",
21996
- "block.event-calendar",
21997
- "block.event-spotlight",
21998
- "block.product-list"
21999
- ],
22258
+ blockKinds: ["block.event-listing", "block.event-calendar", "block.event-spotlight", "block.product-list"],
22000
22259
  design: {
22001
22260
  sectionSurface: "muted-band",
22002
22261
  contentFrame: plainFrame,
@@ -22075,6 +22334,35 @@ function defineSiteChromeAppearancePreset(preset2) {
22075
22334
  emphasis: "high"
22076
22335
  }
22077
22336
  }),
22337
+ defineBlockAppearancePreset({
22338
+ kind: "block-design",
22339
+ id: "testimonials-dark-proof",
22340
+ target: "testimonials",
22341
+ label: "Dark proof panel",
22342
+ blockKinds: ["block.testimonials"],
22343
+ design: {
22344
+ sectionSurface: "accent-band",
22345
+ contentFrame: panelFrame("raised"),
22346
+ itemSurface: "raised",
22347
+ transitionAfter: "soft-fade-short",
22348
+ emphasis: "high"
22349
+ }
22350
+ }),
22351
+ defineBlockAppearancePreset({
22352
+ kind: "block-design",
22353
+ id: "testimonials-accent-quote-proof",
22354
+ target: "testimonials",
22355
+ label: "Accent quote proof",
22356
+ blockKinds: ["block.testimonials"],
22357
+ design: {
22358
+ sectionSurface: "accent-band",
22359
+ contentFrame: plainFrame,
22360
+ itemSurface: "raised",
22361
+ transitionAfter: "soft-fade-short",
22362
+ emphasis: "high",
22363
+ testimonialCardTreatment: "accent-quote"
22364
+ }
22365
+ }),
22078
22366
  defineBlockAppearancePreset({
22079
22367
  kind: "block-design",
22080
22368
  id: "faq-contained-help",
@@ -22103,6 +22391,20 @@ function defineSiteChromeAppearancePreset(preset2) {
22103
22391
  emphasis: "medium"
22104
22392
  }
22105
22393
  }),
22394
+ defineBlockAppearancePreset({
22395
+ kind: "block-design",
22396
+ id: "contact-form-dark-card",
22397
+ target: "contact-form",
22398
+ label: "Dark form card",
22399
+ blockKinds: ["block.form"],
22400
+ design: {
22401
+ sectionSurface: "accent-band",
22402
+ contentFrame: panelFrame("raised"),
22403
+ itemSurface: "none",
22404
+ transitionAfter: "soft-fade-short",
22405
+ emphasis: "high"
22406
+ }
22407
+ }),
22106
22408
  defineBlockAppearancePreset({
22107
22409
  kind: "block-design",
22108
22410
  id: "cta-accent-band",
@@ -22122,9 +22424,33 @@ function defineSiteChromeAppearancePreset(preset2) {
22122
22424
  id: "header-clean-base",
22123
22425
  target: "site-header",
22124
22426
  label: "Clean base header",
22125
- chrome: {
22126
- surface: "base",
22127
- emphasis: "medium"
22427
+ header: {
22428
+ surface: {
22429
+ kind: "neutral-solid",
22430
+ token: "surface",
22431
+ textColorToken: "text"
22432
+ },
22433
+ navTreatment: "minimal",
22434
+ dropdownTreatment: "surface",
22435
+ ctaTreatment: "default",
22436
+ behavior: "default"
22437
+ }
22438
+ }),
22439
+ defineSiteChromeAppearancePreset({
22440
+ kind: "site-chrome",
22441
+ id: "site-header-brand-solid-inverted-cta",
22442
+ target: "site-header",
22443
+ label: "Brand solid header with inverted CTA",
22444
+ header: {
22445
+ surface: {
22446
+ kind: "brand-solid",
22447
+ token: "primary",
22448
+ textColorToken: "primaryForeground"
22449
+ },
22450
+ navTreatment: "uppercase-underline",
22451
+ dropdownTreatment: "matched-solid",
22452
+ ctaTreatment: "inverted",
22453
+ behavior: "sticky-shrink"
22128
22454
  }
22129
22455
  }),
22130
22456
  defineSiteChromeAppearancePreset({
@@ -22132,10 +22458,31 @@ function defineSiteChromeAppearancePreset(preset2) {
22132
22458
  id: "footer-muted-grounding",
22133
22459
  target: "site-footer",
22134
22460
  label: "Muted grounding footer",
22135
- chrome: {
22461
+ footer: {
22462
+ kind: "grounding",
22136
22463
  surface: "muted-band",
22137
22464
  emphasis: "low"
22138
22465
  }
22466
+ }),
22467
+ defineSiteChromeAppearancePreset({
22468
+ kind: "site-chrome",
22469
+ id: "site-footer-brand-two-band",
22470
+ target: "site-footer",
22471
+ label: "Two-band brand footer",
22472
+ footer: {
22473
+ kind: "brand-two-band",
22474
+ surface: {
22475
+ token: "primary",
22476
+ shade: "800",
22477
+ textColorToken: "primaryForeground"
22478
+ },
22479
+ bottomBand: {
22480
+ token: "primary",
22481
+ shade: "900",
22482
+ textColorToken: "primaryForeground"
22483
+ },
22484
+ emphasis: "high"
22485
+ }
22139
22486
  })
22140
22487
  ];
22141
22488
 
@@ -22339,14 +22686,7 @@ var proseLinkStyleSchema = z.object({
22339
22686
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
22340
22687
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
22341
22688
  });
22342
- var semanticSpacingSchema = z.enum([
22343
- "none",
22344
- "compact",
22345
- "cozy",
22346
- "medium",
22347
- "comfortable",
22348
- "spacious"
22349
- ]);
22689
+ var semanticSpacingSchema = z.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
22350
22690
  var boxRoundedSchema = z.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
22351
22691
  var boxBackgroundOverlaySchema = z.object({
22352
22692
  type: z.enum(["none", "color", "gradient"]).nullable().optional(),
@@ -22363,6 +22703,7 @@ var boxBackgroundSchema = z.object({
22363
22703
  scale: z.string().nullable().optional(),
22364
22704
  position: z.string().nullable().optional(),
22365
22705
  opacity: z.number().min(0).max(1).nullable().optional(),
22706
+ motion: z.enum(["static", "fixed-frame"]).nullable().optional(),
22366
22707
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
22367
22708
  textColor: z.string().nullable().optional(),
22368
22709
  headingColor: z.string().nullable().optional()
@@ -22370,7 +22711,7 @@ var boxBackgroundSchema = z.object({
22370
22711
  var sectionStylesOverrideSchema = z.object({
22371
22712
  background: boxBackgroundSchema.nullable().optional(),
22372
22713
  spacing: semanticSpacingSchema.nullable().optional(),
22373
- minHeight: z.enum(["none", "hero", "immersive"]).nullable().optional()
22714
+ minHeight: z.enum(["none", "banner", "hero", "immersive"]).nullable().optional()
22374
22715
  });
22375
22716
  var containerStylesOverrideSchema = z.object({
22376
22717
  background: boxBackgroundSchema.nullable().optional(),
@@ -22389,7 +22730,8 @@ var cardStylesOverrideSchema = z.object({
22389
22730
  border: cardBorderOverrideSchema.nullable().optional(),
22390
22731
  spacing: semanticSpacingSchema.nullable().optional(),
22391
22732
  raised: z.boolean().nullable().optional(),
22392
- rounded: boxRoundedSchema.nullable().optional()
22733
+ rounded: boxRoundedSchema.nullable().optional(),
22734
+ treatment: z.enum(["accent-quote"]).nullable().optional()
22393
22735
  });
22394
22736
  var blockStyleOverridesSchema = z.object({
22395
22737
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
@@ -22464,15 +22806,7 @@ var inputStyle = z.object({
22464
22806
  });
22465
22807
  var headerVariant = z.enum(["classic", "centered", "transparent", "floating", "editorial"]);
22466
22808
  var headerPositioning = z.enum(["static", "sticky", "fixed"]);
22467
- var headerNavStyle = z.enum([
22468
- "minimal",
22469
- "underline",
22470
- "underline-grow",
22471
- "capsule",
22472
- "scale",
22473
- "frosted",
22474
- "solid"
22475
- ]);
22809
+ var headerNavStyle = z.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
22476
22810
  var navFontWeight = z.enum(["regular", "medium", "semibold", "bold"]);
22477
22811
  var headerMaxWidth = z.enum(["container", "full"]);
22478
22812
  var headerContainerSchema = z.object({
@@ -22526,6 +22860,7 @@ var dropdownStyleSchema = z.object({
22526
22860
  // optional = no override (browser default)
22527
22861
  }).optional();
22528
22862
  var headerCtaGapSchema = z.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
22863
+ var headerCtaTreatmentSchema = z.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
22529
22864
  var navContainerSchema = z.object({
22530
22865
  type: z.enum(["none", "pill", "glass"]).default("none"),
22531
22866
  tint: z.string().nullable().optional(),
@@ -22544,7 +22879,10 @@ var headerSchema = z.object({
22544
22879
  shrinkOnScroll: z.boolean(),
22545
22880
  maxWidth: headerMaxWidth,
22546
22881
  logoOverride: mediaSchema.nullable().optional(),
22547
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
22882
+ background: headerBackgroundSchema.default({
22883
+ type: "color",
22884
+ color: "surface"
22885
+ }),
22548
22886
  textColor: z.string().nullable().optional(),
22549
22887
  // Site title and general header text
22550
22888
  navStyle: headerNavStyle,
@@ -22564,6 +22902,13 @@ var headerSchema = z.object({
22564
22902
  navLinkStyle: navLinkStyleSchema.optional(),
22565
22903
  // CTA button spacing (desktop left margin)
22566
22904
  ctaGap: headerCtaGapSchema.optional(),
22905
+ // Semantic CTA treatment for header/nav CTA buttons. The Theme V2 compiler
22906
+ // materializes this to ctaVariant against the active button personality.
22907
+ ctaTreatment: headerCtaTreatmentSchema.optional(),
22908
+ // Optional theme-level CTA variant for header/nav CTA buttons.
22909
+ // Internal runtime bridge for the block renderer; prefer ctaTreatment in
22910
+ // authored Theme V2 concepts.
22911
+ ctaVariant: z.string().min(1).optional(),
22567
22912
  // Dropdown menu styling (nav dropdowns and mobile drawer)
22568
22913
  dropdownStyle: dropdownStyleSchema
22569
22914
  });
@@ -22620,7 +22965,10 @@ var footerSchema = z.object({
22620
22965
  variant: footerVariant,
22621
22966
  maxWidth: footerMaxWidth,
22622
22967
  showLogoText: z.boolean().optional(),
22623
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
22968
+ background: headerBackgroundSchema.default({
22969
+ type: "color",
22970
+ color: "surface"
22971
+ }),
22624
22972
  // Footer nav styling (independent from header)
22625
22973
  navStyle: headerNavStyle.default("minimal"),
22626
22974
  navColor: z.string().nullable().optional(),
@@ -22642,17 +22990,7 @@ var layoutSchema = z.object({
22642
22990
  desktop: containerPaddingPresetSchema.optional()
22643
22991
  }).optional()
22644
22992
  }).optional();
22645
- var heroTypographySizeSchema = z.enum([
22646
- "sm",
22647
- "base",
22648
- "lg",
22649
- "xl",
22650
- "2xl",
22651
- "3xl",
22652
- "4xl",
22653
- "5xl",
22654
- "6xl"
22655
- ]);
22993
+ var heroTypographySizeSchema = z.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
22656
22994
  var heroTypographyLineHeightSchema = z.enum(["tight", "snug", "normal", "relaxed"]);
22657
22995
  var heroResponsiveTypographySchema = z.object({
22658
22996
  headlineSize: heroTypographySizeSchema.optional(),
@@ -22677,6 +23015,13 @@ var heroTypographySchema = z.object({
22677
23015
  var heroSchema = z.object({
22678
23016
  typography: heroTypographySchema.optional()
22679
23017
  }).optional();
23018
+ var bodyTextIntroTypographySizeSchema = z.enum(["default", "editorial"]);
23019
+ var bodyTextSchema = z.object({
23020
+ intro: z.object({
23021
+ paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
23022
+ headingSize: bodyTextIntroTypographySizeSchema.optional()
23023
+ }).optional()
23024
+ }).optional();
22680
23025
  var gradientsSchema = z.object({
22681
23026
  button: z.string().min(1).nullable().optional(),
22682
23027
  hero: z.string().min(1).nullable().optional(),
@@ -22698,6 +23043,7 @@ var themeSchema = z.object({
22698
23043
  gradients: gradientsSchema.optional(),
22699
23044
  layout: layoutSchema,
22700
23045
  hero: heroSchema,
23046
+ bodyText: bodyTextSchema,
22701
23047
  header: headerSchema,
22702
23048
  footer: footerSchema,
22703
23049
  buttons: buttonSystemSchema.optional(),
@@ -22721,10 +23067,7 @@ var themeSchema = z.object({
22721
23067
  ).optional(),
22722
23068
  // Structured block-kind theme overrides (v1: typography prose-link style only)
22723
23069
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
22724
- blockOverrides: z.record(
22725
- z.string(),
22726
- blockThemeOverrideSchema
22727
- ).optional(),
23070
+ blockOverrides: z.record(z.string(), blockThemeOverrideSchema).optional(),
22728
23071
  // Structured custom CSS rules
22729
23072
  // Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
22730
23073
  customCssRules: customCssRulesSchema,
@@ -22895,6 +23238,28 @@ var brandLedJewel = definePaletteVariant({
22895
23238
  { name: "border", hex: "#a8a29e" }
22896
23239
  ]
22897
23240
  });
23241
+ var brandLedBurgundyGold = definePaletteVariant({
23242
+ id: "brand-led-burgundy-gold",
23243
+ name: "Brand-led \u2014 Burgundy Gold",
23244
+ description: "Deep burgundy with warm gold accents and soft neutral grounds.",
23245
+ tags: { tone: "bold", energy: "vibrant", era: "modern" },
23246
+ mode: "light",
23247
+ colors: [
23248
+ { name: "primary", hex: "#7c2e38" },
23249
+ { name: "secondary", hex: "#d4af37" },
23250
+ { name: "accent", hex: "#b8e19a" },
23251
+ { name: "success", hex: "#10b981" },
23252
+ { name: "warning", hex: "#f59e0b" },
23253
+ { name: "destructive", hex: "#ef4444" },
23254
+ { name: "background", hex: "#f1dfd0" },
23255
+ { name: "surface", hex: "#f5e6db" },
23256
+ { name: "surfaceAlt", hex: "#f8ece3" },
23257
+ { name: "muted", hex: "#c9b8a8" },
23258
+ { name: "text", hex: "#400000" },
23259
+ { name: "primaryForeground", hex: "#ffffff" },
23260
+ { name: "border", hex: "#c9b8a8" }
23261
+ ]
23262
+ });
22898
23263
 
22899
23264
  // ../theme-core/src/palette/variants/high-contrast.ts
22900
23265
  var highContrastInk = definePaletteVariant({
@@ -23106,6 +23471,7 @@ var paletteVariants = [
23106
23471
  brandLedCool,
23107
23472
  brandLedWarm,
23108
23473
  brandLedJewel,
23474
+ brandLedBurgundyGold,
23109
23475
  // Warm-neutral family
23110
23476
  warmNeutralClay,
23111
23477
  warmNeutralCream,
@@ -23166,7 +23532,8 @@ var curatedSiteStyleIdValues = [
23166
23532
  "site-style:quiet-luxury",
23167
23533
  "site-style:practical-services",
23168
23534
  "site-style:modern-wellness",
23169
- "site-style:bold-launch"
23535
+ "site-style:bold-launch",
23536
+ "site-style:south-west-twerk-school"
23170
23537
  ];
23171
23538
  var quietBudget = {
23172
23539
  accentDensity: "low",
@@ -23221,6 +23588,8 @@ function defineCuratedSiteStyle(input) {
23221
23588
  supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
23222
23589
  supportedTransitions: generatedDesignOptionCatalog.transitions
23223
23590
  },
23591
+ ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
23592
+ recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
23224
23593
  buttonPersonalityChoices: input.buttonPersonalityChoices,
23225
23594
  paletteVariantChoices: input.paletteVariantChoices
23226
23595
  };
@@ -23467,6 +23836,101 @@ var curatedSiteStyles = [
23467
23836
  paletteChoice("brand-led-jewel"),
23468
23837
  paletteChoice("brand-led-warm")
23469
23838
  ]
23839
+ }),
23840
+ defineCuratedSiteStyle({
23841
+ id: "site-style:south-west-twerk-school",
23842
+ name: "South West Twerk School",
23843
+ description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
23844
+ generationBrief: "Use confident rhythm, bold burgundy-and-gold accents, large editorial intro copy, strong booking routes, and dark feature sections where proof or forms need emphasis.",
23845
+ selectionKeywords: [
23846
+ "dance",
23847
+ "classes",
23848
+ "workshop",
23849
+ "school",
23850
+ "movement",
23851
+ "performance",
23852
+ "community"
23853
+ ],
23854
+ tokenRecipes: {
23855
+ palette: "brand-led",
23856
+ contrast: "maximum",
23857
+ radius: "soft",
23858
+ shadow: "layered",
23859
+ typography: "clean-sans",
23860
+ spacing: "airy",
23861
+ motion: "expressive"
23862
+ },
23863
+ compositionBudget: expressiveBudget,
23864
+ themeOverrides: {
23865
+ typography: {
23866
+ body: {
23867
+ family: "Manrope, system-ui, sans-serif",
23868
+ size: "lg",
23869
+ weight: "regular",
23870
+ lineHeight: "relaxed",
23871
+ letterSpacing: "normal"
23872
+ },
23873
+ headings: {
23874
+ default: {
23875
+ family: '"TAN - PEARL", sans-serif',
23876
+ weight: "bold",
23877
+ lineHeight: "normal",
23878
+ letterSpacing: "tight",
23879
+ colorToken: "primary",
23880
+ italic: null,
23881
+ case: null
23882
+ },
23883
+ h1: {
23884
+ size: "xl",
23885
+ weight: "bold",
23886
+ lineHeight: "normal",
23887
+ letterSpacing: "tight",
23888
+ italic: null
23889
+ },
23890
+ h2: {
23891
+ size: "lg",
23892
+ weight: "bold",
23893
+ lineHeight: "normal",
23894
+ letterSpacing: "normal",
23895
+ italic: null
23896
+ },
23897
+ h3: {
23898
+ size: "md",
23899
+ weight: "bold",
23900
+ lineHeight: "normal",
23901
+ letterSpacing: "normal",
23902
+ italic: null
23903
+ }
23904
+ },
23905
+ scale: "balanced"
23906
+ },
23907
+ bodyText: {
23908
+ intro: {
23909
+ paragraphSize: "editorial",
23910
+ headingSize: "editorial"
23911
+ }
23912
+ }
23913
+ },
23914
+ recommendedAppearancePresetIds: [
23915
+ "site-header-brand-solid-inverted-cta",
23916
+ "site-footer-brand-two-band",
23917
+ "hero-brand-scrim-fixed-frame",
23918
+ "body-text-editorial-intro",
23919
+ "testimonials-accent-quote-proof",
23920
+ "contact-form-dark-card"
23921
+ ],
23922
+ buttonPersonalityChoices: [
23923
+ buttonChoice("showtime-pill"),
23924
+ buttonChoice("confident-chip"),
23925
+ buttonChoice("ink-stamp"),
23926
+ buttonChoice("brushed-wash")
23927
+ ],
23928
+ paletteVariantChoices: [
23929
+ paletteChoice("brand-led-burgundy-gold"),
23930
+ paletteChoice("brand-led-jewel"),
23931
+ paletteChoice("brand-led-warm"),
23932
+ paletteChoice("high-contrast-ink")
23933
+ ]
23470
23934
  })
23471
23935
  ];
23472
23936
  new Map(
@@ -23508,6 +23972,40 @@ var heroLegibilityStrategySchema = z.enum([
23508
23972
  "scrim-gradient",
23509
23973
  "solid-panel"
23510
23974
  ]);
23975
+ var sectionHeightIntentSchema = z.enum([
23976
+ "default",
23977
+ "banner",
23978
+ "hero",
23979
+ "immersive"
23980
+ ]);
23981
+ var imageSurfaceTreatmentIntensitySchema = z.enum(["soft", "balanced", "strong"]);
23982
+ var imageSurfaceMotionSchema = z.enum(["static", "fixed-frame"]);
23983
+ var imageSurfaceTreatmentSchema = z.discriminatedUnion("kind", [
23984
+ z.object({ kind: z.literal("none") }).strict(),
23985
+ z.object({
23986
+ kind: z.literal("brand-scrim"),
23987
+ token: z.enum(["primary", "secondary", "accent"]),
23988
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
23989
+ }).strict(),
23990
+ z.object({
23991
+ kind: z.literal("brand-wash"),
23992
+ token: z.enum(["primary", "secondary", "accent"]),
23993
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
23994
+ }).strict(),
23995
+ z.object({
23996
+ kind: z.literal("neutral-scrim"),
23997
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
23998
+ }).strict(),
23999
+ z.object({
24000
+ kind: z.literal("neutral-wash"),
24001
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
24002
+ }).strict(),
24003
+ z.object({
24004
+ kind: z.literal("solid-panel"),
24005
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
24006
+ }).strict()
24007
+ ]);
24008
+ var testimonialCardTreatmentSchema = z.enum(["default", "accent-quote"]);
23511
24009
  function uniqueNonEmpty(values) {
23512
24010
  const uniqueValues = [...new Set(values)];
23513
24011
  const firstValue = uniqueValues[0];
@@ -23546,7 +24044,11 @@ var blockDesignPlanSchema = z.object({
23546
24044
  itemSurface: z.enum(userDesignOptionCatalog.itemSurfaces),
23547
24045
  transitionAfter: z.enum(userDesignOptionCatalog.transitions),
23548
24046
  emphasis: z.enum(userDesignOptionCatalog.emphases),
23549
- heroLegibility: heroLegibilityStrategySchema.optional()
24047
+ sectionHeight: sectionHeightIntentSchema.optional(),
24048
+ heroLegibility: heroLegibilityStrategySchema.optional(),
24049
+ imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
24050
+ imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
24051
+ testimonialCardTreatment: testimonialCardTreatmentSchema.optional()
23550
24052
  }).strict();
23551
24053
  var styleAuthoritySchema = z.discriminatedUnion("kind", [
23552
24054
  z.object({
@@ -23946,6 +24448,7 @@ function heroContentCard(children, gap) {
23946
24448
  return styledContainer({
23947
24449
  bindFrom: "_contentCardStyles",
23948
24450
  constrainWidth: false,
24451
+ baseClassName: "rb-relative rb-isolate",
23949
24452
  rootType: "stack",
23950
24453
  rootProps: {
23951
24454
  gap
@@ -23976,6 +24479,7 @@ function heroContentWrapper(children, gap, fallbackClassName) {
23976
24479
  function heroContainerStack(children, gap) {
23977
24480
  return styledContainer({
23978
24481
  rootType: "stack",
24482
+ baseClassName: "rb-relative rb-isolate",
23979
24483
  rootProps: {
23980
24484
  gap: "none",
23981
24485
  justify: {
@@ -24896,7 +25400,7 @@ function resolveHeroVerticalAlignment(content) {
24896
25400
  if (raw === "top" || raw === "center" || raw === "bottom") return raw;
24897
25401
  const sectionStyles = asPartialObject(content._sectionStyles);
24898
25402
  const minHeight = sectionStyles?.minHeight;
24899
- if (minHeight === "hero" || minHeight === "immersive") return "center";
25403
+ if (minHeight === "banner" || minHeight === "hero" || minHeight === "immersive") return "center";
24900
25404
  const variant = resolveHeroVariant(content);
24901
25405
  if (variant === "split" || variant === "splitReverse") return "center";
24902
25406
  return "top";
@@ -25589,6 +26093,26 @@ var footerSplitNavSingleClassTransform = {
25589
26093
  ]);
25590
26094
  }
25591
26095
  };
26096
+ var footerSplitMainClassSchema = z.object({
26097
+ base: z.string().optional(),
26098
+ reverseClass: z.string().optional()
26099
+ });
26100
+ var footerSplitMainClassTransform = {
26101
+ id: "layout.footerSplitMainClass",
26102
+ kind: "string",
26103
+ summary: "Compose split-footer main row classes from footer logo placement",
26104
+ schema: footerSplitMainClassSchema,
26105
+ run: (value, options) => {
26106
+ const logo = asPartialObject(value);
26107
+ const placement = logo?.placement ?? "right";
26108
+ const shouldPlaceLogoFirst = placement === "left" || placement === "above";
26109
+ const baseClass = shouldPlaceLogoFirst ? "rb-flex rb-w-full rb-flex-col rb-items-start rb-justify-end rb-gap-8 rb-md-flex-row rb-md-items-end" : "rb-flex rb-w-full rb-flex-col rb-items-start rb-justify-between rb-gap-8 rb-md-flex-row rb-md-items-end";
26110
+ return joinClasses4([
26111
+ options.base ?? baseClass,
26112
+ shouldPlaceLogoFirst ? options.reverseClass ?? "rb-md-flex-row-reverse" : null
26113
+ ]);
26114
+ }
26115
+ };
25592
26116
  var footerLogoClassSchema = z.object({
25593
26117
  base: z.string().optional()
25594
26118
  });
@@ -25599,14 +26123,11 @@ var footerLogoClassTransform = {
25599
26123
  schema: footerLogoClassSchema,
25600
26124
  run: (value, options) => {
25601
26125
  const logo = asPartialObject(value);
25602
- const placement = logo?.placement ?? "right";
25603
26126
  const align = logo?.align ?? "end";
25604
26127
  const hiddenClass = logo?.showLogo === false ? "rb-hidden" : null;
25605
- const orderClass = placement === "left" || placement === "above" ? "rb-md-order-first" : "rb-md-order-last";
25606
26128
  const selfAlignClass = align === "start" ? "rb-self-start rb-text-left" : align === "center" ? "rb-self-center rb-text-center" : "rb-self-end rb-text-right";
25607
26129
  return joinClasses4([
25608
26130
  options.base ?? "footer-logo rb-inline-flex rb-items-center rb-justify-end rb-gap-3 rb-no-underline rb-transition-opacity rb-hover-opacity-80",
25609
- orderClass,
25610
26131
  selfAlignClass,
25611
26132
  hiddenClass
25612
26133
  ]);
@@ -25661,6 +26182,7 @@ var layoutTransforms = [
25661
26182
  footerBottomBarContainerClassTransform,
25662
26183
  footerBottomBarStyleTransform,
25663
26184
  footerSplitNavSingleClassTransform,
26185
+ footerSplitMainClassTransform,
25664
26186
  footerLogoClassTransform,
25665
26187
  footerLogoMediaClassTransform,
25666
26188
  footerLogoTextVisibleTransform
@@ -25905,7 +26427,7 @@ var createNavRow = (className, align = "end") => navRow({
25905
26427
  var headerCta = ctaButton({
25906
26428
  basePath: "menu.ctaItem",
25907
26429
  whenPath: "menu.ctaItem.label",
25908
- variantPath: "menu.ctaItem.variant",
26430
+ variantPath: "$root.theme.header.ctaVariant",
25909
26431
  linkPath: "menu.ctaItem.link",
25910
26432
  sizeFallback: "sm",
25911
26433
  className: `header-cta ${desktopOnlyDisplay("inline-flex")} rb-ml-6`
@@ -25913,7 +26435,7 @@ var headerCta = ctaButton({
25913
26435
  var mobileCta = ctaButton({
25914
26436
  basePath: "menu.ctaItem",
25915
26437
  whenPath: "menu.ctaItem.label",
25916
- variantPath: "menu.ctaItem.variant",
26438
+ variantPath: "$root.theme.header.ctaVariant",
25917
26439
  linkPath: "menu.ctaItem.link",
25918
26440
  sizeFallback: "md",
25919
26441
  className: "nav-mobile-cta rb-w-full"
@@ -26383,7 +26905,13 @@ var splitFooterLayout = stack(
26383
26905
  [
26384
26906
  inline(
26385
26907
  {
26386
- className: "rb-flex rb-w-full rb-flex-col rb-items-start rb-justify-between rb-gap-8 rb-md-flex-row rb-md-items-end"
26908
+ className: {
26909
+ $bind: {
26910
+ from: "$root.theme.footer.logo",
26911
+ transforms: [{ id: "layout.footerSplitMainClass" }],
26912
+ fallback: "rb-flex rb-w-full rb-flex-col rb-items-start rb-justify-between rb-gap-8 rb-md-flex-row rb-md-items-end"
26913
+ }
26914
+ }
26387
26915
  },
26388
26916
  [
26389
26917
  stack(
@@ -30171,6 +30699,34 @@ function panelCapable() {
30171
30699
  itemSurfaces: "unsupported"
30172
30700
  });
30173
30701
  }
30702
+ var heroSectionHeights = [
30703
+ "default",
30704
+ "banner",
30705
+ "hero",
30706
+ "immersive"
30707
+ ];
30708
+ var heroImageSurfaceTreatments = [
30709
+ "none",
30710
+ "brand-scrim",
30711
+ "brand-wash",
30712
+ "neutral-scrim",
30713
+ "neutral-wash",
30714
+ "solid-panel"
30715
+ ];
30716
+ var heroImageSurfaceMotions = [
30717
+ "static",
30718
+ "fixed-frame"
30719
+ ];
30720
+ function heroCapable() {
30721
+ return declareBlockDesignCapability({
30722
+ sectionSurfaces: "supported",
30723
+ contentFrames: ["plain", "panel"],
30724
+ itemSurfaces: "unsupported",
30725
+ sectionHeights: heroSectionHeights,
30726
+ imageSurfaceTreatments: heroImageSurfaceTreatments,
30727
+ imageSurfaceMotions: heroImageSurfaceMotions
30728
+ });
30729
+ }
30174
30730
  function plainItemsCapable() {
30175
30731
  return declareBlockDesignCapability({
30176
30732
  sectionSurfaces: "supported",
@@ -30287,7 +30843,7 @@ function withDesignCapability(blockKind, definition, designCapability, designMet
30287
30843
  };
30288
30844
  }
30289
30845
  var systemBlockDefinitionsRaw = [
30290
- withDesignCapability("block.hero", heroBlockDefinition, panelCapable(), defineBlockDesignMetadata({
30846
+ withDesignCapability("block.hero", heroBlockDefinition, heroCapable(), defineBlockDesignMetadata({
30291
30847
  flow: heroFlow,
30292
30848
  layoutProfiles: [
30293
30849
  layoutProfile({
@@ -30391,7 +30947,12 @@ var systemBlockDefinitionsRaw = [
30391
30947
  flow: siteChromeFlow,
30392
30948
  layoutProfiles: []
30393
30949
  })),
30394
- withDesignCapability("block.testimonials", testimonialsBlockDefinition, panelAndItemsCapable(), defineBlockDesignMetadata({
30950
+ withDesignCapability("block.testimonials", testimonialsBlockDefinition, declareBlockDesignCapability({
30951
+ sectionSurfaces: "supported",
30952
+ contentFrames: ["plain", "panel"],
30953
+ itemSurfaces: "supported",
30954
+ testimonialCardTreatments: ["default", "accent-quote"]
30955
+ }), defineBlockDesignMetadata({
30395
30956
  flow: proofFlow,
30396
30957
  layoutProfiles: [
30397
30958
  layoutProfile({
@@ -30646,8 +31207,15 @@ function parseOpacity(value) {
30646
31207
  }
30647
31208
  return opacity <= 1 ? opacity : opacity / 100;
30648
31209
  }
30649
- function appendOptionalClasses(baseClassName, optionalClassName) {
30650
- return optionalClassName ? `${baseClassName} ${optionalClassName}` : baseClassName;
31210
+ function backgroundMotionClassNames(input) {
31211
+ return input.motion === "fixed-frame" ? "rb-bg-motion-fixed-frame" : "";
31212
+ }
31213
+ function appendBackgroundMediaClasses(baseClassName, input) {
31214
+ return [
31215
+ baseClassName,
31216
+ backgroundMotionClassNames(input),
31217
+ backgroundVideoMobileClassNames(input)
31218
+ ].filter(Boolean).join(" ");
30651
31219
  }
30652
31220
  var resolveImageStyleTransform = {
30653
31221
  id: "background.resolveImageStyle",
@@ -30724,9 +31292,9 @@ var resolveImageClassNameTransform = {
30724
31292
  const objectFit = isString(input.objectFit) ? input.objectFit.trim() : null;
30725
31293
  const position = isString(input.position) ? input.position.trim() : null;
30726
31294
  if (objectFit === "fill" || objectFit === "fit" || objectFit === null) {
30727
- return appendOptionalClasses(
31295
+ return appendBackgroundMediaClasses(
30728
31296
  `${baseClass} rb-inset-0 rb-h-full rb-w-full rb-object-${objectFit === "fit" ? "contain" : "cover"}`,
30729
- backgroundVideoMobileClassNames(input)
31297
+ input
30730
31298
  );
30731
31299
  }
30732
31300
  let needsAnchoring = false;
@@ -30739,18 +31307,18 @@ var resolveImageClassNameTransform = {
30739
31307
  }
30740
31308
  }
30741
31309
  if (!needsAnchoring) {
30742
- return appendOptionalClasses(
31310
+ return appendBackgroundMediaClasses(
30743
31311
  `${baseClass} rb-inset-0 rb-h-full rb-w-full`,
30744
- backgroundVideoMobileClassNames(input)
31312
+ input
30745
31313
  );
30746
31314
  }
30747
31315
  const isPreset = position && BACKGROUND_POSITION_PRESET_VALUES.includes(position);
30748
31316
  const isCustom = position && !isPreset;
30749
31317
  if (isCustom) {
30750
- return appendOptionalClasses(baseClass, backgroundVideoMobileClassNames(input));
31318
+ return appendBackgroundMediaClasses(baseClass, input);
30751
31319
  }
30752
31320
  const anchorClasses = getAnchorClasses(position);
30753
- return appendOptionalClasses(`${baseClass} ${anchorClasses}`, backgroundVideoMobileClassNames(input));
31321
+ return appendBackgroundMediaClasses(`${baseClass} ${anchorClasses}`, input);
30754
31322
  }
30755
31323
  };
30756
31324
  var resolveOverlayStyleTransform = {
@@ -44143,7 +44711,7 @@ var THEME_FIELD_CATEGORY_MAP = {
44143
44711
  "Core Fields": ["name", "description", "rationale", "siteStyleId"],
44144
44712
  "Design Axes": ["axes"],
44145
44713
  "Palette": ["palette"],
44146
- "Typography": ["typography"],
44714
+ "Typography": ["typography", "bodyText"],
44147
44715
  "Style Primitives": ["space", "border", "shadow", "motion", "corners", "gradients"],
44148
44716
  "Component Systems": ["buttons", "buttonSystem", "cards", "accordions", "inputs", "inputStyle", "blockOverrides"],
44149
44717
  "Layout": ["header", "footer", "layout", "hero"],
@@ -45537,7 +46105,7 @@ var SimpleCache = class {
45537
46105
  };
45538
46106
 
45539
46107
  // src/version.ts
45540
- var SDK_VERSION = "0.60.12";
46108
+ var SDK_VERSION = "0.60.14";
45541
46109
 
45542
46110
  // src/client/error.ts
45543
46111
  var RiverbankApiError = class _RiverbankApiError extends Error {