@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
@@ -4191,6 +4191,118 @@ var init_pebble = __esm({
4191
4191
  }
4192
4192
  });
4193
4193
 
4194
+ // ../theme-core/src/buttons/personalities/showtime-pill.ts
4195
+ var showtimePill;
4196
+ var init_showtime_pill = __esm({
4197
+ "../theme-core/src/buttons/personalities/showtime-pill.ts"() {
4198
+ "use strict";
4199
+ init_types2();
4200
+ showtimePill = defineButtonPersonality({
4201
+ id: "showtime-pill",
4202
+ name: "Showtime Pill",
4203
+ description: "Bold pill buttons with uppercase labels, generous padding, and a playful pop.",
4204
+ tags: { tone: "bold", energy: "vibrant", motion: "expressive", era: "modern" },
4205
+ buttonSystem: {
4206
+ global: {
4207
+ cornerStyle: "pill",
4208
+ shadow: "low",
4209
+ textTransform: "uppercase",
4210
+ fontWeight: 700,
4211
+ borderWidth: 2,
4212
+ hoverTransform: "lift",
4213
+ hoverColor: "darken",
4214
+ typography: "body",
4215
+ paddingPreset: "spacious",
4216
+ italic: false
4217
+ },
4218
+ sizes: {
4219
+ sm: { padding: "0.625rem 1.25rem", fontSize: "0.875rem" },
4220
+ md: { padding: "0.875rem 1.75rem", fontSize: "1rem" },
4221
+ lg: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" },
4222
+ xl: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" }
4223
+ },
4224
+ variants: [
4225
+ {
4226
+ id: "primary",
4227
+ name: "Primary",
4228
+ enabled: true,
4229
+ priority: 1,
4230
+ background: { type: "solid", colorToken: "primary" },
4231
+ textColorToken: "background",
4232
+ borderRadius: "rounded-full",
4233
+ effects: {
4234
+ hover: [{ effectId: "pop" }]
4235
+ }
4236
+ },
4237
+ {
4238
+ id: "secondary",
4239
+ name: "Secondary",
4240
+ enabled: true,
4241
+ priority: 2,
4242
+ background: { type: "transparent" },
4243
+ textColorToken: "primary",
4244
+ borderRadius: "rounded-full",
4245
+ border: { widthClass: "border-2", colorToken: "primary" },
4246
+ effects: {
4247
+ hover: [{ effectId: "pop" }]
4248
+ }
4249
+ },
4250
+ {
4251
+ id: "hero",
4252
+ name: "Hero",
4253
+ enabled: true,
4254
+ priority: 1,
4255
+ background: { type: "solid", colorToken: "secondary" },
4256
+ textColorToken: "primary",
4257
+ borderRadius: "rounded-full",
4258
+ effects: {
4259
+ hover: [{ effectId: "pop" }]
4260
+ }
4261
+ },
4262
+ {
4263
+ id: "header",
4264
+ name: "Header",
4265
+ enabled: true,
4266
+ priority: 2,
4267
+ background: { type: "solid", colorToken: "background" },
4268
+ textColorToken: "primary",
4269
+ borderRadius: "rounded-full",
4270
+ border: { widthClass: "border-2", colorToken: "primary" },
4271
+ effects: {
4272
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
4273
+ }
4274
+ },
4275
+ {
4276
+ id: "outline",
4277
+ name: "Outline",
4278
+ enabled: true,
4279
+ priority: 3,
4280
+ background: { type: "transparent" },
4281
+ textColorToken: "primary",
4282
+ borderRadius: "rounded-full",
4283
+ border: { widthClass: "border-2", colorToken: "primary" },
4284
+ effects: {
4285
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
4286
+ }
4287
+ },
4288
+ {
4289
+ id: "ghost",
4290
+ name: "Ghost",
4291
+ enabled: true,
4292
+ priority: 3,
4293
+ background: { type: "transparent" },
4294
+ textColorToken: "primary",
4295
+ borderRadius: "rounded-full",
4296
+ effects: {
4297
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
4298
+ }
4299
+ }
4300
+ ]
4301
+ }
4302
+ });
4303
+ }
4304
+ });
4305
+
4194
4306
  // ../theme-core/src/buttons/personalities/soft-pill.ts
4195
4307
  var softPill;
4196
4308
  var init_soft_pill = __esm({
@@ -4281,6 +4393,7 @@ var init_personalities = __esm({
4281
4393
  init_editorial_link();
4282
4394
  init_ink_stamp();
4283
4395
  init_pebble();
4396
+ init_showtime_pill();
4284
4397
  init_soft_pill();
4285
4398
  init_types2();
4286
4399
  buttonPersonalities = [
@@ -4289,7 +4402,8 @@ var init_personalities = __esm({
4289
4402
  editorialLink,
4290
4403
  pebble,
4291
4404
  inkStamp,
4292
- brushedWash
4405
+ brushedWash,
4406
+ showtimePill
4293
4407
  ];
4294
4408
  personalitiesById = new Map(
4295
4409
  buttonPersonalities.map((p) => [p.id, p])
@@ -4966,71 +5080,10 @@ var init_participants = __esm({
4966
5080
  });
4967
5081
 
4968
5082
  // ../core/src/participant-identity.ts
4969
- var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD, PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS;
4970
5083
  var init_participant_identity = __esm({
4971
5084
  "../core/src/participant-identity.ts"() {
4972
5085
  "use strict";
4973
5086
  init_assertNever();
4974
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
4975
- participant_id: {
4976
- field: "participant_id",
4977
- role: "canonical_link",
4978
- canonicalSource: "booking_participants.id",
4979
- contractAction: "tighten_in_839",
4980
- notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
4981
- },
4982
- display_name: {
4983
- field: "display_name",
4984
- role: "contextual_snapshot",
4985
- canonicalSource: "booking_participants.display_name for live identity",
4986
- contractAction: "retain_as_snapshot",
4987
- notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
4988
- },
4989
- email: {
4990
- field: "email",
4991
- role: "contextual_snapshot",
4992
- canonicalSource: "booking_participants.email_normalized for live email identity",
4993
- contractAction: "retain_as_snapshot",
4994
- notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
4995
- },
4996
- email_normalized: {
4997
- field: "email_normalized",
4998
- role: "contextual_snapshot",
4999
- canonicalSource: "booking_participants.email_normalized for live email identity",
5000
- contractAction: "retain_as_snapshot",
5001
- notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
5002
- },
5003
- phone: {
5004
- field: "phone",
5005
- role: "contextual_snapshot",
5006
- canonicalSource: "booking_participants.phone for live phone identity",
5007
- contractAction: "retain_as_snapshot",
5008
- notes: "Participation-time phone context. Live identity belongs to the participant row."
5009
- },
5010
- identity_state: {
5011
- field: "identity_state",
5012
- role: "materialization_state",
5013
- canonicalSource: "booking_participants.identity_state for subject state",
5014
- contractAction: "review_for_later_contract_cleanup",
5015
- notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
5016
- },
5017
- event_attendee_guest_id: {
5018
- field: "event_attendee_guest_id",
5019
- role: "compatibility_projection",
5020
- canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
5021
- contractAction: "retain_as_projection",
5022
- notes: "Compatibility FK for event guest read models. It is not person identity authority."
5023
- }
5024
- };
5025
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
5026
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
5027
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
5028
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
5029
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
5030
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
5031
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
5032
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
5033
- ];
5034
5087
  }
5035
5088
  });
5036
5089
 
@@ -13139,6 +13192,7 @@ var init_spacing = __esm({
13139
13192
  ];
13140
13193
  SECTION_MIN_HEIGHT_VALUES = [
13141
13194
  "none",
13195
+ "banner",
13142
13196
  "hero",
13143
13197
  "immersive"
13144
13198
  ];
@@ -13160,6 +13214,7 @@ var init_spacing = __esm({
13160
13214
  };
13161
13215
  SECTION_MIN_HEIGHT_MAP = {
13162
13216
  none: "",
13217
+ banner: "rb-section-min-h-banner",
13163
13218
  hero: "rb-section-min-h-hero",
13164
13219
  immersive: "rb-section-min-h-immersive"
13165
13220
  };
@@ -14121,6 +14176,9 @@ var init_boxStyles = __esm({
14121
14176
  classes.push(roundedResult);
14122
14177
  }
14123
14178
  }
14179
+ if (input.treatment === "accent-quote") {
14180
+ classes.push("rb-card-treatment-accent-quote");
14181
+ }
14124
14182
  return classes.join(" ").trim() || "";
14125
14183
  }
14126
14184
  };
@@ -14190,7 +14248,7 @@ var init_boxStyles = __esm({
14190
14248
  minHeight = input.minHeight;
14191
14249
  } else if (true) {
14192
14250
  console.warn(
14193
- `[sectionStyles] Invalid minHeight value in _sectionStyles: "${input.minHeight}". Expected one of: none, hero, immersive.`
14251
+ `[sectionStyles] Invalid minHeight value in _sectionStyles: "${input.minHeight}". Expected one of: none, banner, hero, immersive.`
14194
14252
  );
14195
14253
  }
14196
14254
  }
@@ -14530,25 +14588,9 @@ var init_styledCard = __esm({
14530
14588
  });
14531
14589
 
14532
14590
  // ../blocks/src/system/node/fragments/typography.ts
14533
- function mergeClassName(base, extra) {
14534
- return [base, extra ?? ""].filter(Boolean).join(" ");
14535
- }
14536
- function captionText(opts, ...mods) {
14537
- const {
14538
- as: asProp,
14539
- className: classNameProp,
14540
- color,
14541
- ...rest
14542
- } = opts ?? {};
14543
- const as = asProp ?? "p";
14544
- const className = mergeClassName("rb-caption", classNameProp);
14545
- const style = textColorStyle(color ?? "mutedText");
14546
- return text({ ...rest, as, className, style }, ...mods);
14547
- }
14548
14591
  var init_typography = __esm({
14549
14592
  "../blocks/src/system/node/fragments/typography.ts"() {
14550
14593
  "use strict";
14551
- init_builder();
14552
14594
  init_colorStyles();
14553
14595
  }
14554
14596
  });
@@ -16826,18 +16868,17 @@ function buildAttributionNodes() {
16826
16868
  const name = text(
16827
16869
  {
16828
16870
  as: "strong",
16829
- className: "rb-block",
16830
- style: textColorStyle("text")
16871
+ className: "rb-block"
16831
16872
  },
16832
16873
  bind("testimonial.content.name", { fallback: "Anonymous" })
16833
16874
  );
16834
- const jobTitle = captionText(
16835
- null,
16875
+ const jobTitle = text(
16876
+ { as: "p", className: "rb-caption" },
16836
16877
  when("testimonial.content.jobTitle"),
16837
16878
  bind("testimonial.content.jobTitle")
16838
16879
  );
16839
- const company = captionText(
16840
- null,
16880
+ const company = text(
16881
+ { as: "p", className: "rb-caption" },
16841
16882
  when("testimonial.content.company"),
16842
16883
  bind("testimonial.content.company")
16843
16884
  );
@@ -16871,8 +16912,7 @@ function buildTestimonialCard(...mods) {
16871
16912
  );
16872
16913
  const body = richText(
16873
16914
  {
16874
- className: "rb-prose rb-max-w-none",
16875
- style: textColorStyle("text")
16915
+ className: "rb-prose rb-max-w-none"
16876
16916
  },
16877
16917
  bind("testimonial.content.body"),
16878
16918
  when("testimonial.content.body")
@@ -16957,7 +16997,6 @@ var init_testimonialsCarousel = __esm({
16957
16997
  "use strict";
16958
16998
  init_types9();
16959
16999
  init_builder();
16960
- init_colorStyles();
16961
17000
  init_fragments();
16962
17001
  grid = (props2, children, ...mods) => el("grid", props2 ?? void 0, children ?? void 0, ...mods);
16963
17002
  testimonialsCarouselFragment = defineFragment({
@@ -20321,7 +20360,8 @@ var init_course_registration_interactive = __esm({
20321
20360
  run: z20.object({
20322
20361
  courseId: z20.string(),
20323
20362
  seriesId: z20.string(),
20324
- runSlug: z20.string()
20363
+ runSlug: z20.string(),
20364
+ runName: z20.string().nullable()
20325
20365
  })
20326
20366
  }),
20327
20367
  z20.object({
@@ -46263,16 +46303,14 @@ function generateDropdownLinkStyles(header, themeId, tokens, theme) {
46263
46303
  };
46264
46304
  additionalRules.push(`letter-spacing: ${letterSpacingMap[letterSpacing]};`);
46265
46305
  }
46266
- const textSize = configuredDropdownStyle?.textSize;
46267
- if (textSize) {
46268
- const textSizeMap = {
46269
- "xs": "0.75rem",
46270
- "sm": "0.875rem",
46271
- "base": "1rem",
46272
- "lg": "1.125rem"
46273
- };
46274
- additionalRules.push(`font-size: ${textSizeMap[textSize]};`);
46275
- }
46306
+ const textSize = configuredDropdownStyle?.textSize ?? "sm";
46307
+ const textSizeMap = {
46308
+ "xs": "0.75rem",
46309
+ "sm": "0.875rem",
46310
+ "base": "1rem",
46311
+ "lg": "1.125rem"
46312
+ };
46313
+ additionalRules.push(`font-size: ${textSizeMap[textSize]};`);
46276
46314
  if (additionalRules.length > 0) {
46277
46315
  const selector = `:where([data-theme-scope="${themeId}"]) .nav-dropdown-link`;
46278
46316
  return baseCSS + `
@@ -46598,12 +46636,10 @@ ${selector} .rb-container-full`;
46598
46636
  ${rootRules.join("\n ")}
46599
46637
  }`);
46600
46638
  if (containerPadding?.mobile) {
46601
- cssChunks.push(
46602
- `${containerSelector} {
46639
+ cssChunks.push(`${containerSelector} {
46603
46640
  padding-left: ${toPaddingValue(containerPadding.mobile)};
46604
46641
  padding-right: ${toPaddingValue(containerPadding.mobile)};
46605
- }`
46606
- );
46642
+ }`);
46607
46643
  }
46608
46644
  if (containerPadding?.tablet) {
46609
46645
  cssChunks.push(
@@ -46629,6 +46665,10 @@ ${selector} .rb-container-full`;
46629
46665
  if (heroTypographyCss) {
46630
46666
  cssChunks.push(heroTypographyCss);
46631
46667
  }
46668
+ const bodyTextTypographyCss = generateBodyTextTypographyCss(themeId, theme);
46669
+ if (bodyTextTypographyCss) {
46670
+ cssChunks.push(bodyTextTypographyCss);
46671
+ }
46632
46672
  cssChunks.push(generateSiteStyleTransitionCss(themeId));
46633
46673
  return cssChunks.join("\n\n");
46634
46674
  }
@@ -46708,21 +46748,17 @@ ${selector} [data-style-group^='site-style-transition-angle-edge-'] > [data-slot
46708
46748
 
46709
46749
  ${selector} [data-style-group^='site-style-transition-wave-edge-'] > [data-slot='section']::after {
46710
46750
  background: var(--site-style-transition-to);
46711
- clip-path: polygon(
46712
- 0 42%,
46713
- 10% 34%,
46714
- 21% 42%,
46715
- 34% 31%,
46716
- 48% 39%,
46717
- 63% 29%,
46718
- 78% 37%,
46719
- 90% 30%,
46720
- 100% 36%,
46721
- 100% 100%,
46722
- 0 100%
46723
- );
46751
+ mask-image: url("${waveTransitionMask}");
46752
+ mask-repeat: no-repeat;
46753
+ mask-size: 100% 100%;
46754
+ -webkit-mask-image: url("${waveTransitionMask}");
46755
+ -webkit-mask-repeat: no-repeat;
46756
+ -webkit-mask-size: 100% 100%;
46724
46757
  }`;
46725
46758
  }
46759
+ function svgDataUrl(svg) {
46760
+ return `data:image/svg+xml,${encodeURIComponent(svg)}`;
46761
+ }
46726
46762
  function generateHeroTypographyCss(themeId, theme) {
46727
46763
  const typography = theme.hero?.typography;
46728
46764
  if (!typography) return "";
@@ -46745,33 +46781,21 @@ function generateHeroTypographyCss(themeId, theme) {
46745
46781
  ${subheadlineRules.join("\n ")}
46746
46782
  }`);
46747
46783
  }
46748
- const microHeadlineRules = buildTypographyRules(
46749
- typography.microHeadlineSize,
46750
- typography.microHeadlineLineHeight
46751
- );
46784
+ const microHeadlineRules = buildTypographyRules(typography.microHeadlineSize, typography.microHeadlineLineHeight);
46752
46785
  if (microHeadlineRules.length > 0) {
46753
46786
  chunks.push(`${microHeadlineSelector} {
46754
46787
  ${microHeadlineRules.join("\n ")}
46755
46788
  }`);
46756
46789
  }
46757
- const microSubheadlineRules = buildTypographyRules(
46758
- typography.microSubheadlineSize,
46759
- typography.microSubheadlineLineHeight
46760
- );
46790
+ const microSubheadlineRules = buildTypographyRules(typography.microSubheadlineSize, typography.microSubheadlineLineHeight);
46761
46791
  if (microSubheadlineRules.length > 0) {
46762
46792
  chunks.push(`${microSubheadlineSelector} {
46763
46793
  ${microSubheadlineRules.join("\n ")}
46764
46794
  }`);
46765
46795
  }
46766
46796
  if (typography.responsive?.tablet) {
46767
- const tabletHeadlineRules = buildTypographyRules(
46768
- typography.responsive.tablet.headlineSize,
46769
- typography.responsive.tablet.headlineLineHeight
46770
- );
46771
- const tabletSubheadlineRules = buildTypographyRules(
46772
- typography.responsive.tablet.subheadlineSize,
46773
- typography.responsive.tablet.subheadlineLineHeight
46774
- );
46797
+ const tabletHeadlineRules = buildTypographyRules(typography.responsive.tablet.headlineSize, typography.responsive.tablet.headlineLineHeight);
46798
+ const tabletSubheadlineRules = buildTypographyRules(typography.responsive.tablet.subheadlineSize, typography.responsive.tablet.subheadlineLineHeight);
46775
46799
  const tabletChunks = [];
46776
46800
  if (tabletHeadlineRules.length > 0) {
46777
46801
  tabletChunks.push(`${headlineSelector} {
@@ -46790,14 +46814,8 @@ function generateHeroTypographyCss(themeId, theme) {
46790
46814
  }
46791
46815
  }
46792
46816
  if (typography.responsive?.mobile) {
46793
- const mobileHeadlineRules = buildTypographyRules(
46794
- typography.responsive.mobile.headlineSize,
46795
- typography.responsive.mobile.headlineLineHeight
46796
- );
46797
- const mobileSubheadlineRules = buildTypographyRules(
46798
- typography.responsive.mobile.subheadlineSize,
46799
- typography.responsive.mobile.subheadlineLineHeight
46800
- );
46817
+ const mobileHeadlineRules = buildTypographyRules(typography.responsive.mobile.headlineSize, typography.responsive.mobile.headlineLineHeight);
46818
+ const mobileSubheadlineRules = buildTypographyRules(typography.responsive.mobile.subheadlineSize, typography.responsive.mobile.subheadlineLineHeight);
46801
46819
  const mobileChunks = [];
46802
46820
  if (mobileHeadlineRules.length > 0) {
46803
46821
  mobileChunks.push(`${headlineSelector} {
@@ -46827,6 +46845,27 @@ function buildTypographyRules(size, lineHeight) {
46827
46845
  }
46828
46846
  return rules;
46829
46847
  }
46848
+ function generateBodyTextTypographyCss(themeId, theme) {
46849
+ const intro = theme.bodyText?.intro;
46850
+ if (!intro) return "";
46851
+ const rootSelector = `:where([data-theme-scope="${themeId}"]) :where([data-block="body-text"][data-block-variant="intro"])`;
46852
+ const chunks = [];
46853
+ if (intro.headingSize === "editorial") {
46854
+ chunks.push(`${rootSelector} .body-copy-heading {
46855
+ font-size: clamp(1.75rem, 1.15rem + 2.2vw, 3rem);
46856
+ line-height: 1.08;
46857
+ }`);
46858
+ }
46859
+ if (intro.paragraphSize === "editorial") {
46860
+ chunks.push(`${rootSelector} .body-copy-body {
46861
+ --rb-prose-lg-font-size: clamp(1.35rem, 1.05rem + 1.3vw, 2rem);
46862
+ --rb-prose-lg-line-height: 1.55;
46863
+ --rb-prose-xl-sm-font-size: clamp(1.45rem, 1.1rem + 1.4vw, 2rem);
46864
+ --rb-prose-xl-sm-line-height: 1.55;
46865
+ }`);
46866
+ }
46867
+ return chunks.join("\n\n");
46868
+ }
46830
46869
  function toHeroSize(size) {
46831
46870
  const map = {
46832
46871
  sm: "0.875rem",
@@ -46837,7 +46876,8 @@ function toHeroSize(size) {
46837
46876
  "3xl": "1.875rem",
46838
46877
  "4xl": "2.25rem",
46839
46878
  "5xl": "3rem",
46840
- "6xl": "3.75rem"
46879
+ "6xl": "3.75rem",
46880
+ editorial: "clamp(1.25rem, 3vw, 2.25rem)"
46841
46881
  };
46842
46882
  return map[size];
46843
46883
  }
@@ -46850,10 +46890,14 @@ function toHeroLineHeight(lineHeight) {
46850
46890
  };
46851
46891
  return map[lineHeight];
46852
46892
  }
46893
+ var waveTransitionMask;
46853
46894
  var init_generateLayoutCss = __esm({
46854
46895
  "../theme-core/src/layout/generateLayoutCss.ts"() {
46855
46896
  "use strict";
46856
46897
  init_breakpoints();
46898
+ waveTransitionMask = svgDataUrl(
46899
+ "<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>"
46900
+ );
46857
46901
  }
46858
46902
  });
46859
46903
 
@@ -49204,12 +49248,16 @@ var init_containerResponsiveThemeCss = __esm({
49204
49248
  .rb-h-full {
49205
49249
  height: 100%;
49206
49250
  }
49251
+ .rb-section-min-h-banner {
49252
+ min-height: clamp(16rem, 34svh, 24rem);
49253
+ }
49207
49254
  .rb-section-min-h-hero {
49208
49255
  min-height: clamp(32rem, 62svh, 44rem);
49209
49256
  }
49210
49257
  .rb-section-min-h-immersive {
49211
49258
  min-height: clamp(38rem, 78svh, 54rem);
49212
49259
  }
49260
+ .rb-section-min-h-banner > .rb-container,
49213
49261
  .rb-section-min-h-hero > .rb-container,
49214
49262
  .rb-section-min-h-immersive > .rb-container {
49215
49263
  min-height: inherit;
@@ -50319,6 +50367,19 @@ var init_containerResponsiveThemeCss = __esm({
50319
50367
  .rb-object-contain {
50320
50368
  object-fit: contain;
50321
50369
  }
50370
+ .rb-bg-motion-fixed-frame {
50371
+ position: fixed;
50372
+ inset: 0;
50373
+ width: 100vw;
50374
+ height: 100svh;
50375
+ }
50376
+ @media (hover: none), (prefers-reduced-motion: reduce) {
50377
+ .rb-bg-motion-fixed-frame {
50378
+ position: absolute;
50379
+ width: 100%;
50380
+ height: 100%;
50381
+ }
50382
+ }
50322
50383
 
50323
50384
  /* Line clamp */
50324
50385
  .rb-line-clamp-2,
@@ -54829,13 +54890,13 @@ var init_containerResponsiveThemeCss = __esm({
54829
54890
 
54830
54891
  /* Eyebrow - color only (typography via .rb-eyebrow) */
54831
54892
  :where(.theme-scope) :where([data-block="hero"]) .hero-eyebrow {
54832
- color: rgb(var(--tb-text));
54893
+ color: var(--section-text-color, rgb(var(--tb-text)));
54833
54894
  }
54834
54895
 
54835
54896
  /* Subheadline - supporting text below headline */
54836
54897
  :where(.theme-scope) :where([data-block="hero"]) .hero-subheadline {
54837
54898
  font-size: 1.125rem;
54838
- color: rgb(var(--tb-text));
54899
+ color: var(--section-text-color, rgb(var(--tb-text)));
54839
54900
  }
54840
54901
 
54841
54902
  @container rb-site (min-width: 640px) {
@@ -54909,6 +54970,20 @@ var init_containerResponsiveThemeCss = __esm({
54909
54970
  max-width: 60rem;
54910
54971
  }
54911
54972
 
54973
+ :where(.theme-scope) :where([data-block="body-text"][data-block-variant="intro"]) .body-copy-body {
54974
+ font-size: var(--rb-prose-lg-font-size);
54975
+ line-height: var(--rb-prose-lg-line-height);
54976
+ }
54977
+
54978
+ @container rb-site (min-width: 640px) {
54979
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
54980
+ :where(.theme-scope) :where([data-block="body-text"][data-block-variant="intro"]) .body-copy-body {
54981
+ font-size: var(--rb-prose-xl-sm-font-size);
54982
+ line-height: var(--rb-prose-xl-sm-line-height);
54983
+ }
54984
+ }
54985
+ }
54986
+
54912
54987
  /* Variant: Narrow (left-aligned, shorter line length) */
54913
54988
  :where(.theme-scope) :where([data-block="body-text"][data-block-variant="narrow"]) .body-copy-container {
54914
54989
  max-width: 34rem;
@@ -56251,6 +56326,13 @@ var init_containerResponsiveThemeCss = __esm({
56251
56326
  border-radius: var(--rb-block-radius);
56252
56327
  }
56253
56328
 
56329
+ :where(.theme-scope) :where([data-block="testimonials"]) .rb-testimonial-card.rb-card-treatment-accent-quote {
56330
+ border: 0;
56331
+ border-left: 5px solid rgb(var(--tb-secondary));
56332
+ border-radius: 0 calc(var(--rb-block-radius) * 3) 0 0;
56333
+ color: rgb(var(--tb-primaryForeground));
56334
+ }
56335
+
56254
56336
  :where(.theme-scope) :where([data-block="testimonials"]) .rb-testimonial-quote {
56255
56337
  font-size: var(--rb-testimonial-quote-size);
56256
56338
  line-height: 1;
@@ -56259,6 +56341,12 @@ var init_containerResponsiveThemeCss = __esm({
56259
56341
  color: rgb(var(--tb-primary));
56260
56342
  }
56261
56343
 
56344
+ :where(.theme-scope) :where([data-block="testimonials"]) .rb-card-treatment-accent-quote .rb-testimonial-quote {
56345
+ color: rgb(var(--tb-secondary));
56346
+ font-size: calc(var(--rb-testimonial-quote-size) * 1.25);
56347
+ opacity: 1;
56348
+ }
56349
+
56262
56350
 
56263
56351
  /* Testimonials carousel tweaks: arrow styling + gutters + equal-height cards */
56264
56352
  :where(.theme-scope) :where([data-block="testimonials"]) .rb-testimonials-carousel.carousel-root .carousel-nav-btn {
@@ -59857,12 +59945,29 @@ function defineFrameCapability(capability) {
59857
59945
  function defineBlockDesignCapability(capability) {
59858
59946
  return {
59859
59947
  ...capability,
59860
- kind: "designed"
59948
+ kind: "designed",
59949
+ sectionHeights: capability.sectionHeights ?? ["default"],
59950
+ imageSurfaceTreatments: capability.imageSurfaceTreatments ?? ["none"],
59951
+ imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
59952
+ testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"]
59861
59953
  };
59862
59954
  }
59863
59955
 
59864
59956
  // ../theme-core/src/site-styles/appearancePresets.ts
59957
+ function assertValidOptionGroups(preset2) {
59958
+ preset2.optionGroups?.forEach((group) => {
59959
+ const selectedOption = group.options.find(
59960
+ (option) => option.id === group.selectedOptionId
59961
+ );
59962
+ if (!selectedOption) {
59963
+ throw new Error(
59964
+ `Appearance preset "${preset2.id}" option group "${group.id}" selects missing option "${group.selectedOptionId}".`
59965
+ );
59966
+ }
59967
+ });
59968
+ }
59865
59969
  function defineBlockAppearancePreset(preset2) {
59970
+ assertValidOptionGroups(preset2);
59866
59971
  return preset2;
59867
59972
  }
59868
59973
  function defineSiteChromeAppearancePreset(preset2) {
@@ -59875,13 +59980,122 @@ var appearancePresets = [
59875
59980
  target: "hero",
59876
59981
  label: "Immersive image hero",
59877
59982
  blockKinds: ["block.hero"],
59983
+ constraints: {
59984
+ layoutFamilies: ["centered", "compact"]
59985
+ },
59986
+ design: {
59987
+ sectionSurface: "hero-image",
59988
+ contentFrame: plainFrame,
59989
+ itemSurface: "none",
59990
+ transitionAfter: "soft-fade-short",
59991
+ emphasis: "high",
59992
+ sectionHeight: "hero",
59993
+ imageSurfaceTreatment: { kind: "neutral-wash" }
59994
+ }
59995
+ }),
59996
+ defineBlockAppearancePreset({
59997
+ kind: "block-design",
59998
+ id: "hero-brand-scrim",
59999
+ target: "hero",
60000
+ label: "Brand scrim image hero",
60001
+ blockKinds: ["block.hero"],
60002
+ constraints: {
60003
+ layoutFamilies: ["centered", "compact"]
60004
+ },
60005
+ optionGroups: [
60006
+ {
60007
+ id: "image-surface-treatment",
60008
+ label: "Treatment",
60009
+ selectedOptionId: "brand-scrim-primary",
60010
+ options: [
60011
+ {
60012
+ id: "brand-scrim-primary",
60013
+ label: "Brand scrim",
60014
+ designPatch: {
60015
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
60016
+ }
60017
+ },
60018
+ {
60019
+ id: "neutral-scrim",
60020
+ label: "Neutral scrim",
60021
+ designPatch: {
60022
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
60023
+ }
60024
+ }
60025
+ ]
60026
+ }
60027
+ ],
60028
+ layoutPatches: [
60029
+ {
60030
+ constraints: {
60031
+ layoutVariantKeys: ["micro"]
60032
+ },
60033
+ designPatch: {
60034
+ sectionHeight: "banner"
60035
+ }
60036
+ }
60037
+ ],
60038
+ design: {
60039
+ sectionSurface: "hero-image",
60040
+ contentFrame: plainFrame,
60041
+ itemSurface: "none",
60042
+ transitionAfter: "soft-fade-short",
60043
+ emphasis: "high",
60044
+ sectionHeight: "immersive",
60045
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
60046
+ }
60047
+ }),
60048
+ defineBlockAppearancePreset({
60049
+ kind: "block-design",
60050
+ id: "hero-brand-scrim-fixed-frame",
60051
+ target: "hero",
60052
+ label: "Fixed-frame brand scrim hero",
60053
+ blockKinds: ["block.hero"],
60054
+ constraints: {
60055
+ layoutFamilies: ["centered", "compact"]
60056
+ },
60057
+ optionGroups: [
60058
+ {
60059
+ id: "image-surface-treatment",
60060
+ label: "Treatment",
60061
+ selectedOptionId: "brand-scrim-primary",
60062
+ options: [
60063
+ {
60064
+ id: "brand-scrim-primary",
60065
+ label: "Brand scrim",
60066
+ designPatch: {
60067
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
60068
+ }
60069
+ },
60070
+ {
60071
+ id: "neutral-scrim",
60072
+ label: "Neutral scrim",
60073
+ designPatch: {
60074
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
60075
+ }
60076
+ }
60077
+ ]
60078
+ }
60079
+ ],
60080
+ layoutPatches: [
60081
+ {
60082
+ constraints: {
60083
+ layoutVariantKeys: ["micro"]
60084
+ },
60085
+ designPatch: {
60086
+ sectionHeight: "banner"
60087
+ }
60088
+ }
60089
+ ],
59878
60090
  design: {
59879
60091
  sectionSurface: "hero-image",
59880
60092
  contentFrame: plainFrame,
59881
60093
  itemSurface: "none",
59882
60094
  transitionAfter: "soft-fade-short",
59883
60095
  emphasis: "high",
59884
- heroLegibility: "scrim-gradient"
60096
+ sectionHeight: "immersive",
60097
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
60098
+ imageSurfaceMotion: "fixed-frame"
59885
60099
  }
59886
60100
  }),
59887
60101
  defineBlockAppearancePreset({
@@ -59898,17 +60112,26 @@ var appearancePresets = [
59898
60112
  emphasis: "high"
59899
60113
  }
59900
60114
  }),
60115
+ defineBlockAppearancePreset({
60116
+ kind: "block-design",
60117
+ id: "body-text-editorial-intro",
60118
+ target: "body-text",
60119
+ label: "Editorial intro copy",
60120
+ blockKinds: ["block.body-text"],
60121
+ design: {
60122
+ sectionSurface: "base",
60123
+ contentFrame: plainFrame,
60124
+ itemSurface: "none",
60125
+ transitionAfter: "soft-fade-short",
60126
+ emphasis: "high"
60127
+ }
60128
+ }),
59901
60129
  defineBlockAppearancePreset({
59902
60130
  kind: "block-design",
59903
60131
  id: "offerings-calm-list",
59904
60132
  target: "offerings",
59905
60133
  label: "Calm offerings list",
59906
- blockKinds: [
59907
- "block.event-listing",
59908
- "block.event-calendar",
59909
- "block.event-spotlight",
59910
- "block.product-list"
59911
- ],
60134
+ blockKinds: ["block.event-listing", "block.event-calendar", "block.event-spotlight", "block.product-list"],
59912
60135
  design: {
59913
60136
  sectionSurface: "muted-band",
59914
60137
  contentFrame: plainFrame,
@@ -59987,6 +60210,35 @@ var appearancePresets = [
59987
60210
  emphasis: "high"
59988
60211
  }
59989
60212
  }),
60213
+ defineBlockAppearancePreset({
60214
+ kind: "block-design",
60215
+ id: "testimonials-dark-proof",
60216
+ target: "testimonials",
60217
+ label: "Dark proof panel",
60218
+ blockKinds: ["block.testimonials"],
60219
+ design: {
60220
+ sectionSurface: "accent-band",
60221
+ contentFrame: panelFrame("raised"),
60222
+ itemSurface: "raised",
60223
+ transitionAfter: "soft-fade-short",
60224
+ emphasis: "high"
60225
+ }
60226
+ }),
60227
+ defineBlockAppearancePreset({
60228
+ kind: "block-design",
60229
+ id: "testimonials-accent-quote-proof",
60230
+ target: "testimonials",
60231
+ label: "Accent quote proof",
60232
+ blockKinds: ["block.testimonials"],
60233
+ design: {
60234
+ sectionSurface: "accent-band",
60235
+ contentFrame: plainFrame,
60236
+ itemSurface: "raised",
60237
+ transitionAfter: "soft-fade-short",
60238
+ emphasis: "high",
60239
+ testimonialCardTreatment: "accent-quote"
60240
+ }
60241
+ }),
59990
60242
  defineBlockAppearancePreset({
59991
60243
  kind: "block-design",
59992
60244
  id: "faq-contained-help",
@@ -60015,6 +60267,20 @@ var appearancePresets = [
60015
60267
  emphasis: "medium"
60016
60268
  }
60017
60269
  }),
60270
+ defineBlockAppearancePreset({
60271
+ kind: "block-design",
60272
+ id: "contact-form-dark-card",
60273
+ target: "contact-form",
60274
+ label: "Dark form card",
60275
+ blockKinds: ["block.form"],
60276
+ design: {
60277
+ sectionSurface: "accent-band",
60278
+ contentFrame: panelFrame("raised"),
60279
+ itemSurface: "none",
60280
+ transitionAfter: "soft-fade-short",
60281
+ emphasis: "high"
60282
+ }
60283
+ }),
60018
60284
  defineBlockAppearancePreset({
60019
60285
  kind: "block-design",
60020
60286
  id: "cta-accent-band",
@@ -60034,9 +60300,33 @@ var appearancePresets = [
60034
60300
  id: "header-clean-base",
60035
60301
  target: "site-header",
60036
60302
  label: "Clean base header",
60037
- chrome: {
60038
- surface: "base",
60039
- emphasis: "medium"
60303
+ header: {
60304
+ surface: {
60305
+ kind: "neutral-solid",
60306
+ token: "surface",
60307
+ textColorToken: "text"
60308
+ },
60309
+ navTreatment: "minimal",
60310
+ dropdownTreatment: "surface",
60311
+ ctaTreatment: "default",
60312
+ behavior: "default"
60313
+ }
60314
+ }),
60315
+ defineSiteChromeAppearancePreset({
60316
+ kind: "site-chrome",
60317
+ id: "site-header-brand-solid-inverted-cta",
60318
+ target: "site-header",
60319
+ label: "Brand solid header with inverted CTA",
60320
+ header: {
60321
+ surface: {
60322
+ kind: "brand-solid",
60323
+ token: "primary",
60324
+ textColorToken: "primaryForeground"
60325
+ },
60326
+ navTreatment: "uppercase-underline",
60327
+ dropdownTreatment: "matched-solid",
60328
+ ctaTreatment: "inverted",
60329
+ behavior: "sticky-shrink"
60040
60330
  }
60041
60331
  }),
60042
60332
  defineSiteChromeAppearancePreset({
@@ -60044,10 +60334,31 @@ var appearancePresets = [
60044
60334
  id: "footer-muted-grounding",
60045
60335
  target: "site-footer",
60046
60336
  label: "Muted grounding footer",
60047
- chrome: {
60337
+ footer: {
60338
+ kind: "grounding",
60048
60339
  surface: "muted-band",
60049
60340
  emphasis: "low"
60050
60341
  }
60342
+ }),
60343
+ defineSiteChromeAppearancePreset({
60344
+ kind: "site-chrome",
60345
+ id: "site-footer-brand-two-band",
60346
+ target: "site-footer",
60347
+ label: "Two-band brand footer",
60348
+ footer: {
60349
+ kind: "brand-two-band",
60350
+ surface: {
60351
+ token: "primary",
60352
+ shade: "800",
60353
+ textColorToken: "primaryForeground"
60354
+ },
60355
+ bottomBand: {
60356
+ token: "primary",
60357
+ shade: "900",
60358
+ textColorToken: "primaryForeground"
60359
+ },
60360
+ emphasis: "high"
60361
+ }
60051
60362
  })
60052
60363
  ];
60053
60364
 
@@ -60264,14 +60575,7 @@ var proseLinkStyleSchema = z45.object({
60264
60575
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
60265
60576
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
60266
60577
  });
60267
- var semanticSpacingSchema = z45.enum([
60268
- "none",
60269
- "compact",
60270
- "cozy",
60271
- "medium",
60272
- "comfortable",
60273
- "spacious"
60274
- ]);
60578
+ var semanticSpacingSchema = z45.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
60275
60579
  var boxRoundedSchema = z45.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
60276
60580
  var boxBackgroundOverlaySchema = z45.object({
60277
60581
  type: z45.enum(["none", "color", "gradient"]).nullable().optional(),
@@ -60288,6 +60592,7 @@ var boxBackgroundSchema = z45.object({
60288
60592
  scale: z45.string().nullable().optional(),
60289
60593
  position: z45.string().nullable().optional(),
60290
60594
  opacity: z45.number().min(0).max(1).nullable().optional(),
60595
+ motion: z45.enum(["static", "fixed-frame"]).nullable().optional(),
60291
60596
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
60292
60597
  textColor: z45.string().nullable().optional(),
60293
60598
  headingColor: z45.string().nullable().optional()
@@ -60295,7 +60600,7 @@ var boxBackgroundSchema = z45.object({
60295
60600
  var sectionStylesOverrideSchema = z45.object({
60296
60601
  background: boxBackgroundSchema.nullable().optional(),
60297
60602
  spacing: semanticSpacingSchema.nullable().optional(),
60298
- minHeight: z45.enum(["none", "hero", "immersive"]).nullable().optional()
60603
+ minHeight: z45.enum(["none", "banner", "hero", "immersive"]).nullable().optional()
60299
60604
  });
60300
60605
  var containerStylesOverrideSchema = z45.object({
60301
60606
  background: boxBackgroundSchema.nullable().optional(),
@@ -60314,7 +60619,8 @@ var cardStylesOverrideSchema = z45.object({
60314
60619
  border: cardBorderOverrideSchema.nullable().optional(),
60315
60620
  spacing: semanticSpacingSchema.nullable().optional(),
60316
60621
  raised: z45.boolean().nullable().optional(),
60317
- rounded: boxRoundedSchema.nullable().optional()
60622
+ rounded: boxRoundedSchema.nullable().optional(),
60623
+ treatment: z45.enum(["accent-quote"]).nullable().optional()
60318
60624
  });
60319
60625
  var blockStyleOverridesSchema = z45.object({
60320
60626
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
@@ -60389,15 +60695,7 @@ var inputStyle = z45.object({
60389
60695
  });
60390
60696
  var headerVariant = z45.enum(["classic", "centered", "transparent", "floating", "editorial"]);
60391
60697
  var headerPositioning = z45.enum(["static", "sticky", "fixed"]);
60392
- var headerNavStyle = z45.enum([
60393
- "minimal",
60394
- "underline",
60395
- "underline-grow",
60396
- "capsule",
60397
- "scale",
60398
- "frosted",
60399
- "solid"
60400
- ]);
60698
+ var headerNavStyle = z45.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
60401
60699
  var navFontWeight = z45.enum(["regular", "medium", "semibold", "bold"]);
60402
60700
  var headerMaxWidth = z45.enum(["container", "full"]);
60403
60701
  var headerContainerSchema = z45.object({
@@ -60451,6 +60749,7 @@ var dropdownStyleSchema = z45.object({
60451
60749
  // optional = no override (browser default)
60452
60750
  }).optional();
60453
60751
  var headerCtaGapSchema = z45.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
60752
+ var headerCtaTreatmentSchema = z45.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
60454
60753
  var navContainerSchema = z45.object({
60455
60754
  type: z45.enum(["none", "pill", "glass"]).default("none"),
60456
60755
  tint: z45.string().nullable().optional(),
@@ -60469,7 +60768,10 @@ var headerSchema = z45.object({
60469
60768
  shrinkOnScroll: z45.boolean(),
60470
60769
  maxWidth: headerMaxWidth,
60471
60770
  logoOverride: mediaSchema2.nullable().optional(),
60472
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
60771
+ background: headerBackgroundSchema.default({
60772
+ type: "color",
60773
+ color: "surface"
60774
+ }),
60473
60775
  textColor: z45.string().nullable().optional(),
60474
60776
  // Site title and general header text
60475
60777
  navStyle: headerNavStyle,
@@ -60489,6 +60791,13 @@ var headerSchema = z45.object({
60489
60791
  navLinkStyle: navLinkStyleSchema.optional(),
60490
60792
  // CTA button spacing (desktop left margin)
60491
60793
  ctaGap: headerCtaGapSchema.optional(),
60794
+ // Semantic CTA treatment for header/nav CTA buttons. The Theme V2 compiler
60795
+ // materializes this to ctaVariant against the active button personality.
60796
+ ctaTreatment: headerCtaTreatmentSchema.optional(),
60797
+ // Optional theme-level CTA variant for header/nav CTA buttons.
60798
+ // Internal runtime bridge for the block renderer; prefer ctaTreatment in
60799
+ // authored Theme V2 concepts.
60800
+ ctaVariant: z45.string().min(1).optional(),
60492
60801
  // Dropdown menu styling (nav dropdowns and mobile drawer)
60493
60802
  dropdownStyle: dropdownStyleSchema
60494
60803
  });
@@ -60545,7 +60854,10 @@ var footerSchema = z45.object({
60545
60854
  variant: footerVariant,
60546
60855
  maxWidth: footerMaxWidth,
60547
60856
  showLogoText: z45.boolean().optional(),
60548
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
60857
+ background: headerBackgroundSchema.default({
60858
+ type: "color",
60859
+ color: "surface"
60860
+ }),
60549
60861
  // Footer nav styling (independent from header)
60550
60862
  navStyle: headerNavStyle.default("minimal"),
60551
60863
  navColor: z45.string().nullable().optional(),
@@ -60567,17 +60879,7 @@ var layoutSchema = z45.object({
60567
60879
  desktop: containerPaddingPresetSchema.optional()
60568
60880
  }).optional()
60569
60881
  }).optional();
60570
- var heroTypographySizeSchema = z45.enum([
60571
- "sm",
60572
- "base",
60573
- "lg",
60574
- "xl",
60575
- "2xl",
60576
- "3xl",
60577
- "4xl",
60578
- "5xl",
60579
- "6xl"
60580
- ]);
60882
+ var heroTypographySizeSchema = z45.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
60581
60883
  var heroTypographyLineHeightSchema = z45.enum(["tight", "snug", "normal", "relaxed"]);
60582
60884
  var heroResponsiveTypographySchema = z45.object({
60583
60885
  headlineSize: heroTypographySizeSchema.optional(),
@@ -60602,6 +60904,13 @@ var heroTypographySchema = z45.object({
60602
60904
  var heroSchema = z45.object({
60603
60905
  typography: heroTypographySchema.optional()
60604
60906
  }).optional();
60907
+ var bodyTextIntroTypographySizeSchema = z45.enum(["default", "editorial"]);
60908
+ var bodyTextSchema = z45.object({
60909
+ intro: z45.object({
60910
+ paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
60911
+ headingSize: bodyTextIntroTypographySizeSchema.optional()
60912
+ }).optional()
60913
+ }).optional();
60605
60914
  var gradientsSchema = z45.object({
60606
60915
  button: z45.string().min(1).nullable().optional(),
60607
60916
  hero: z45.string().min(1).nullable().optional(),
@@ -60623,6 +60932,7 @@ var themeSchema = z45.object({
60623
60932
  gradients: gradientsSchema.optional(),
60624
60933
  layout: layoutSchema,
60625
60934
  hero: heroSchema,
60935
+ bodyText: bodyTextSchema,
60626
60936
  header: headerSchema,
60627
60937
  footer: footerSchema,
60628
60938
  buttons: buttonSystemSchema.optional(),
@@ -60646,10 +60956,7 @@ var themeSchema = z45.object({
60646
60956
  ).optional(),
60647
60957
  // Structured block-kind theme overrides (v1: typography prose-link style only)
60648
60958
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
60649
- blockOverrides: z45.record(
60650
- z45.string(),
60651
- blockThemeOverrideSchema
60652
- ).optional(),
60959
+ blockOverrides: z45.record(z45.string(), blockThemeOverrideSchema).optional(),
60653
60960
  // Structured custom CSS rules
60654
60961
  // Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
60655
60962
  customCssRules: customCssRulesSchema,
@@ -60820,6 +61127,28 @@ var brandLedJewel = definePaletteVariant({
60820
61127
  { name: "border", hex: "#a8a29e" }
60821
61128
  ]
60822
61129
  });
61130
+ var brandLedBurgundyGold = definePaletteVariant({
61131
+ id: "brand-led-burgundy-gold",
61132
+ name: "Brand-led \u2014 Burgundy Gold",
61133
+ description: "Deep burgundy with warm gold accents and soft neutral grounds.",
61134
+ tags: { tone: "bold", energy: "vibrant", era: "modern" },
61135
+ mode: "light",
61136
+ colors: [
61137
+ { name: "primary", hex: "#7c2e38" },
61138
+ { name: "secondary", hex: "#d4af37" },
61139
+ { name: "accent", hex: "#b8e19a" },
61140
+ { name: "success", hex: "#10b981" },
61141
+ { name: "warning", hex: "#f59e0b" },
61142
+ { name: "destructive", hex: "#ef4444" },
61143
+ { name: "background", hex: "#f1dfd0" },
61144
+ { name: "surface", hex: "#f5e6db" },
61145
+ { name: "surfaceAlt", hex: "#f8ece3" },
61146
+ { name: "muted", hex: "#c9b8a8" },
61147
+ { name: "text", hex: "#400000" },
61148
+ { name: "primaryForeground", hex: "#ffffff" },
61149
+ { name: "border", hex: "#c9b8a8" }
61150
+ ]
61151
+ });
60823
61152
 
60824
61153
  // ../theme-core/src/palette/variants/high-contrast.ts
60825
61154
  var highContrastInk = definePaletteVariant({
@@ -61031,6 +61360,7 @@ var paletteVariants = [
61031
61360
  brandLedCool,
61032
61361
  brandLedWarm,
61033
61362
  brandLedJewel,
61363
+ brandLedBurgundyGold,
61034
61364
  // Warm-neutral family
61035
61365
  warmNeutralClay,
61036
61366
  warmNeutralCream,
@@ -61106,7 +61436,8 @@ var curatedSiteStyleIdValues = [
61106
61436
  "site-style:quiet-luxury",
61107
61437
  "site-style:practical-services",
61108
61438
  "site-style:modern-wellness",
61109
- "site-style:bold-launch"
61439
+ "site-style:bold-launch",
61440
+ "site-style:south-west-twerk-school"
61110
61441
  ];
61111
61442
  var quietBudget = {
61112
61443
  accentDensity: "low",
@@ -61161,6 +61492,8 @@ function defineCuratedSiteStyle(input) {
61161
61492
  supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
61162
61493
  supportedTransitions: generatedDesignOptionCatalog.transitions
61163
61494
  },
61495
+ ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
61496
+ recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
61164
61497
  buttonPersonalityChoices: input.buttonPersonalityChoices,
61165
61498
  paletteVariantChoices: input.paletteVariantChoices
61166
61499
  };
@@ -61407,6 +61740,101 @@ var curatedSiteStyles = [
61407
61740
  paletteChoice("brand-led-jewel"),
61408
61741
  paletteChoice("brand-led-warm")
61409
61742
  ]
61743
+ }),
61744
+ defineCuratedSiteStyle({
61745
+ id: "site-style:south-west-twerk-school",
61746
+ name: "South West Twerk School",
61747
+ description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
61748
+ 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.",
61749
+ selectionKeywords: [
61750
+ "dance",
61751
+ "classes",
61752
+ "workshop",
61753
+ "school",
61754
+ "movement",
61755
+ "performance",
61756
+ "community"
61757
+ ],
61758
+ tokenRecipes: {
61759
+ palette: "brand-led",
61760
+ contrast: "maximum",
61761
+ radius: "soft",
61762
+ shadow: "layered",
61763
+ typography: "clean-sans",
61764
+ spacing: "airy",
61765
+ motion: "expressive"
61766
+ },
61767
+ compositionBudget: expressiveBudget,
61768
+ themeOverrides: {
61769
+ typography: {
61770
+ body: {
61771
+ family: "Manrope, system-ui, sans-serif",
61772
+ size: "lg",
61773
+ weight: "regular",
61774
+ lineHeight: "relaxed",
61775
+ letterSpacing: "normal"
61776
+ },
61777
+ headings: {
61778
+ default: {
61779
+ family: '"TAN - PEARL", sans-serif',
61780
+ weight: "bold",
61781
+ lineHeight: "normal",
61782
+ letterSpacing: "tight",
61783
+ colorToken: "primary",
61784
+ italic: null,
61785
+ case: null
61786
+ },
61787
+ h1: {
61788
+ size: "xl",
61789
+ weight: "bold",
61790
+ lineHeight: "normal",
61791
+ letterSpacing: "tight",
61792
+ italic: null
61793
+ },
61794
+ h2: {
61795
+ size: "lg",
61796
+ weight: "bold",
61797
+ lineHeight: "normal",
61798
+ letterSpacing: "normal",
61799
+ italic: null
61800
+ },
61801
+ h3: {
61802
+ size: "md",
61803
+ weight: "bold",
61804
+ lineHeight: "normal",
61805
+ letterSpacing: "normal",
61806
+ italic: null
61807
+ }
61808
+ },
61809
+ scale: "balanced"
61810
+ },
61811
+ bodyText: {
61812
+ intro: {
61813
+ paragraphSize: "editorial",
61814
+ headingSize: "editorial"
61815
+ }
61816
+ }
61817
+ },
61818
+ recommendedAppearancePresetIds: [
61819
+ "site-header-brand-solid-inverted-cta",
61820
+ "site-footer-brand-two-band",
61821
+ "hero-brand-scrim-fixed-frame",
61822
+ "body-text-editorial-intro",
61823
+ "testimonials-accent-quote-proof",
61824
+ "contact-form-dark-card"
61825
+ ],
61826
+ buttonPersonalityChoices: [
61827
+ buttonChoice("showtime-pill"),
61828
+ buttonChoice("confident-chip"),
61829
+ buttonChoice("ink-stamp"),
61830
+ buttonChoice("brushed-wash")
61831
+ ],
61832
+ paletteVariantChoices: [
61833
+ paletteChoice("brand-led-burgundy-gold"),
61834
+ paletteChoice("brand-led-jewel"),
61835
+ paletteChoice("brand-led-warm"),
61836
+ paletteChoice("high-contrast-ink")
61837
+ ]
61410
61838
  })
61411
61839
  ];
61412
61840
  var curatedSiteStylesById = new Map(
@@ -61451,6 +61879,40 @@ var heroLegibilityStrategySchema = z47.enum([
61451
61879
  "scrim-gradient",
61452
61880
  "solid-panel"
61453
61881
  ]);
61882
+ var sectionHeightIntentSchema = z47.enum([
61883
+ "default",
61884
+ "banner",
61885
+ "hero",
61886
+ "immersive"
61887
+ ]);
61888
+ var imageSurfaceTreatmentIntensitySchema = z47.enum(["soft", "balanced", "strong"]);
61889
+ var imageSurfaceMotionSchema = z47.enum(["static", "fixed-frame"]);
61890
+ var imageSurfaceTreatmentSchema = z47.discriminatedUnion("kind", [
61891
+ z47.object({ kind: z47.literal("none") }).strict(),
61892
+ z47.object({
61893
+ kind: z47.literal("brand-scrim"),
61894
+ token: z47.enum(["primary", "secondary", "accent"]),
61895
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
61896
+ }).strict(),
61897
+ z47.object({
61898
+ kind: z47.literal("brand-wash"),
61899
+ token: z47.enum(["primary", "secondary", "accent"]),
61900
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
61901
+ }).strict(),
61902
+ z47.object({
61903
+ kind: z47.literal("neutral-scrim"),
61904
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
61905
+ }).strict(),
61906
+ z47.object({
61907
+ kind: z47.literal("neutral-wash"),
61908
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
61909
+ }).strict(),
61910
+ z47.object({
61911
+ kind: z47.literal("solid-panel"),
61912
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
61913
+ }).strict()
61914
+ ]);
61915
+ var testimonialCardTreatmentSchema = z47.enum(["default", "accent-quote"]);
61454
61916
  function uniqueNonEmpty(values) {
61455
61917
  const uniqueValues = [...new Set(values)];
61456
61918
  const firstValue = uniqueValues[0];
@@ -61489,7 +61951,11 @@ var blockDesignPlanSchema = z47.object({
61489
61951
  itemSurface: z47.enum(userDesignOptionCatalog.itemSurfaces),
61490
61952
  transitionAfter: z47.enum(userDesignOptionCatalog.transitions),
61491
61953
  emphasis: z47.enum(userDesignOptionCatalog.emphases),
61492
- heroLegibility: heroLegibilityStrategySchema.optional()
61954
+ sectionHeight: sectionHeightIntentSchema.optional(),
61955
+ heroLegibility: heroLegibilityStrategySchema.optional(),
61956
+ imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
61957
+ imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
61958
+ testimonialCardTreatment: testimonialCardTreatmentSchema.optional()
61493
61959
  }).strict();
61494
61960
  var styleAuthoritySchema = z47.discriminatedUnion("kind", [
61495
61961
  z47.object({
@@ -62156,6 +62622,7 @@ function heroContentCard(children, gap) {
62156
62622
  return styledContainer({
62157
62623
  bindFrom: "_contentCardStyles",
62158
62624
  constrainWidth: false,
62625
+ baseClassName: "rb-relative rb-isolate",
62159
62626
  rootType: "stack",
62160
62627
  rootProps: {
62161
62628
  gap
@@ -62186,6 +62653,7 @@ function heroContentWrapper(children, gap, fallbackClassName) {
62186
62653
  function heroContainerStack(children, gap) {
62187
62654
  return styledContainer({
62188
62655
  rootType: "stack",
62656
+ baseClassName: "rb-relative rb-isolate",
62189
62657
  rootProps: {
62190
62658
  gap: "none",
62191
62659
  justify: {
@@ -63112,7 +63580,7 @@ function resolveHeroVerticalAlignment(content) {
63112
63580
  if (raw === "top" || raw === "center" || raw === "bottom") return raw;
63113
63581
  const sectionStyles = asPartialObject(content._sectionStyles);
63114
63582
  const minHeight = sectionStyles?.minHeight;
63115
- if (minHeight === "hero" || minHeight === "immersive") return "center";
63583
+ if (minHeight === "banner" || minHeight === "hero" || minHeight === "immersive") return "center";
63116
63584
  const variant = resolveHeroVariant(content);
63117
63585
  if (variant === "split" || variant === "splitReverse") return "center";
63118
63586
  return "top";
@@ -63806,6 +64274,26 @@ var footerSplitNavSingleClassTransform = {
63806
64274
  ]);
63807
64275
  }
63808
64276
  };
64277
+ var footerSplitMainClassSchema = z56.object({
64278
+ base: z56.string().optional(),
64279
+ reverseClass: z56.string().optional()
64280
+ });
64281
+ var footerSplitMainClassTransform = {
64282
+ id: "layout.footerSplitMainClass",
64283
+ kind: "string",
64284
+ summary: "Compose split-footer main row classes from footer logo placement",
64285
+ schema: footerSplitMainClassSchema,
64286
+ run: (value, options) => {
64287
+ const logo = asPartialObject(value);
64288
+ const placement = logo?.placement ?? "right";
64289
+ const shouldPlaceLogoFirst = placement === "left" || placement === "above";
64290
+ 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";
64291
+ return joinClasses7([
64292
+ options.base ?? baseClass,
64293
+ shouldPlaceLogoFirst ? options.reverseClass ?? "rb-md-flex-row-reverse" : null
64294
+ ]);
64295
+ }
64296
+ };
63809
64297
  var footerLogoClassSchema = z56.object({
63810
64298
  base: z56.string().optional()
63811
64299
  });
@@ -63816,14 +64304,11 @@ var footerLogoClassTransform = {
63816
64304
  schema: footerLogoClassSchema,
63817
64305
  run: (value, options) => {
63818
64306
  const logo = asPartialObject(value);
63819
- const placement = logo?.placement ?? "right";
63820
64307
  const align = logo?.align ?? "end";
63821
64308
  const hiddenClass = logo?.showLogo === false ? "rb-hidden" : null;
63822
- const orderClass = placement === "left" || placement === "above" ? "rb-md-order-first" : "rb-md-order-last";
63823
64309
  const selfAlignClass = align === "start" ? "rb-self-start rb-text-left" : align === "center" ? "rb-self-center rb-text-center" : "rb-self-end rb-text-right";
63824
64310
  return joinClasses7([
63825
64311
  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",
63826
- orderClass,
63827
64312
  selfAlignClass,
63828
64313
  hiddenClass
63829
64314
  ]);
@@ -63878,6 +64363,7 @@ var layoutTransforms = [
63878
64363
  footerBottomBarContainerClassTransform,
63879
64364
  footerBottomBarStyleTransform,
63880
64365
  footerSplitNavSingleClassTransform,
64366
+ footerSplitMainClassTransform,
63881
64367
  footerLogoClassTransform,
63882
64368
  footerLogoMediaClassTransform,
63883
64369
  footerLogoTextVisibleTransform
@@ -64126,7 +64612,7 @@ var createNavRow = (className, align = "end") => navRow({
64126
64612
  var headerCta = ctaButton({
64127
64613
  basePath: "menu.ctaItem",
64128
64614
  whenPath: "menu.ctaItem.label",
64129
- variantPath: "menu.ctaItem.variant",
64615
+ variantPath: "$root.theme.header.ctaVariant",
64130
64616
  linkPath: "menu.ctaItem.link",
64131
64617
  sizeFallback: "sm",
64132
64618
  className: `header-cta ${desktopOnlyDisplay("inline-flex")} rb-ml-6`
@@ -64134,7 +64620,7 @@ var headerCta = ctaButton({
64134
64620
  var mobileCta = ctaButton({
64135
64621
  basePath: "menu.ctaItem",
64136
64622
  whenPath: "menu.ctaItem.label",
64137
- variantPath: "menu.ctaItem.variant",
64623
+ variantPath: "$root.theme.header.ctaVariant",
64138
64624
  linkPath: "menu.ctaItem.link",
64139
64625
  sizeFallback: "md",
64140
64626
  className: "nav-mobile-cta rb-w-full"
@@ -64604,7 +65090,13 @@ var splitFooterLayout = stack(
64604
65090
  [
64605
65091
  inline(
64606
65092
  {
64607
- 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"
65093
+ className: {
65094
+ $bind: {
65095
+ from: "$root.theme.footer.logo",
65096
+ transforms: [{ id: "layout.footerSplitMainClass" }],
65097
+ 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"
65098
+ }
65099
+ }
64608
65100
  },
64609
65101
  [
64610
65102
  stack(
@@ -68403,6 +68895,34 @@ function panelCapable() {
68403
68895
  itemSurfaces: "unsupported"
68404
68896
  });
68405
68897
  }
68898
+ var heroSectionHeights = [
68899
+ "default",
68900
+ "banner",
68901
+ "hero",
68902
+ "immersive"
68903
+ ];
68904
+ var heroImageSurfaceTreatments = [
68905
+ "none",
68906
+ "brand-scrim",
68907
+ "brand-wash",
68908
+ "neutral-scrim",
68909
+ "neutral-wash",
68910
+ "solid-panel"
68911
+ ];
68912
+ var heroImageSurfaceMotions = [
68913
+ "static",
68914
+ "fixed-frame"
68915
+ ];
68916
+ function heroCapable() {
68917
+ return declareBlockDesignCapability({
68918
+ sectionSurfaces: "supported",
68919
+ contentFrames: ["plain", "panel"],
68920
+ itemSurfaces: "unsupported",
68921
+ sectionHeights: heroSectionHeights,
68922
+ imageSurfaceTreatments: heroImageSurfaceTreatments,
68923
+ imageSurfaceMotions: heroImageSurfaceMotions
68924
+ });
68925
+ }
68406
68926
  function plainItemsCapable() {
68407
68927
  return declareBlockDesignCapability({
68408
68928
  sectionSurfaces: "supported",
@@ -68519,7 +69039,7 @@ function withDesignCapability(blockKind, definition, designCapability, designMet
68519
69039
  };
68520
69040
  }
68521
69041
  var systemBlockDefinitionsRaw = [
68522
- withDesignCapability("block.hero", heroBlockDefinition, panelCapable(), defineBlockDesignMetadata({
69042
+ withDesignCapability("block.hero", heroBlockDefinition, heroCapable(), defineBlockDesignMetadata({
68523
69043
  flow: heroFlow,
68524
69044
  layoutProfiles: [
68525
69045
  layoutProfile({
@@ -68623,7 +69143,12 @@ var systemBlockDefinitionsRaw = [
68623
69143
  flow: siteChromeFlow,
68624
69144
  layoutProfiles: []
68625
69145
  })),
68626
- withDesignCapability("block.testimonials", testimonialsBlockDefinition, panelAndItemsCapable(), defineBlockDesignMetadata({
69146
+ withDesignCapability("block.testimonials", testimonialsBlockDefinition, declareBlockDesignCapability({
69147
+ sectionSurfaces: "supported",
69148
+ contentFrames: ["plain", "panel"],
69149
+ itemSurfaces: "supported",
69150
+ testimonialCardTreatments: ["default", "accent-quote"]
69151
+ }), defineBlockDesignMetadata({
68627
69152
  flow: proofFlow,
68628
69153
  layoutProfiles: [
68629
69154
  layoutProfile({
@@ -68874,8 +69399,15 @@ function parseOpacity(value) {
68874
69399
  }
68875
69400
  return opacity <= 1 ? opacity : opacity / 100;
68876
69401
  }
68877
- function appendOptionalClasses(baseClassName, optionalClassName) {
68878
- return optionalClassName ? `${baseClassName} ${optionalClassName}` : baseClassName;
69402
+ function backgroundMotionClassNames(input) {
69403
+ return input.motion === "fixed-frame" ? "rb-bg-motion-fixed-frame" : "";
69404
+ }
69405
+ function appendBackgroundMediaClasses(baseClassName, input) {
69406
+ return [
69407
+ baseClassName,
69408
+ backgroundMotionClassNames(input),
69409
+ backgroundVideoMobileClassNames(input)
69410
+ ].filter(Boolean).join(" ");
68879
69411
  }
68880
69412
  var resolveImageStyleTransform = {
68881
69413
  id: "background.resolveImageStyle",
@@ -68952,9 +69484,9 @@ var resolveImageClassNameTransform = {
68952
69484
  const objectFit = isString2(input.objectFit) ? input.objectFit.trim() : null;
68953
69485
  const position = isString2(input.position) ? input.position.trim() : null;
68954
69486
  if (objectFit === "fill" || objectFit === "fit" || objectFit === null) {
68955
- return appendOptionalClasses(
69487
+ return appendBackgroundMediaClasses(
68956
69488
  `${baseClass} rb-inset-0 rb-h-full rb-w-full rb-object-${objectFit === "fit" ? "contain" : "cover"}`,
68957
- backgroundVideoMobileClassNames(input)
69489
+ input
68958
69490
  );
68959
69491
  }
68960
69492
  let needsAnchoring = false;
@@ -68967,18 +69499,18 @@ var resolveImageClassNameTransform = {
68967
69499
  }
68968
69500
  }
68969
69501
  if (!needsAnchoring) {
68970
- return appendOptionalClasses(
69502
+ return appendBackgroundMediaClasses(
68971
69503
  `${baseClass} rb-inset-0 rb-h-full rb-w-full`,
68972
- backgroundVideoMobileClassNames(input)
69504
+ input
68973
69505
  );
68974
69506
  }
68975
69507
  const isPreset = position && BACKGROUND_POSITION_PRESET_VALUES.includes(position);
68976
69508
  const isCustom = position && !isPreset;
68977
69509
  if (isCustom) {
68978
- return appendOptionalClasses(baseClass, backgroundVideoMobileClassNames(input));
69510
+ return appendBackgroundMediaClasses(baseClass, input);
68979
69511
  }
68980
69512
  const anchorClasses = getAnchorClasses(position);
68981
- return appendOptionalClasses(`${baseClass} ${anchorClasses}`, backgroundVideoMobileClassNames(input));
69513
+ return appendBackgroundMediaClasses(`${baseClass} ${anchorClasses}`, input);
68982
69514
  }
68983
69515
  };
68984
69516
  var resolveOverlayStyleTransform = {
@@ -73722,7 +74254,7 @@ var ENDPOINT_DEFINITIONS = {
73722
74254
  method: "GET",
73723
74255
  tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
73724
74256
  auth: "user",
73725
- responseKind: "text"
74257
+ responseKind: "blob"
73726
74258
  },
73727
74259
  getNewsletterSubscriber: {
73728
74260
  path: "/sites/{siteId}/newsletter/subscribers/{subscriberId}",
@@ -74053,12 +74585,7 @@ var ENDPOINT_DEFINITIONS = {
74053
74585
  ],
74054
74586
  auth: "user",
74055
74587
  responseKind: "json",
74056
- errors: [
74057
- "validation:invalid_input",
74058
- "resource:not_found",
74059
- "resource:conflict",
74060
- "server:internal_error"
74061
- ]
74588
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
74062
74589
  },
74063
74590
  unpublishTeamMemberProfile: {
74064
74591
  path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/unpublish",
@@ -74311,6 +74838,13 @@ var ENDPOINT_DEFINITIONS = {
74311
74838
  auth: "user",
74312
74839
  responseKind: "json"
74313
74840
  },
74841
+ exportBookingAppointmentsCsv: {
74842
+ path: "/sites/{siteId}/bookings/appointments/export.csv",
74843
+ method: "GET",
74844
+ auth: "user",
74845
+ errors: [],
74846
+ responseKind: "blob"
74847
+ },
74314
74848
  createAppointment: {
74315
74849
  path: "/sites/{siteId}/bookings/appointments",
74316
74850
  method: "POST",
@@ -74438,6 +74972,13 @@ var ENDPOINT_DEFINITIONS = {
74438
74972
  auth: "user",
74439
74973
  responseKind: "json"
74440
74974
  },
74975
+ exportCourseEnrollmentsCsv: {
74976
+ path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/export.csv",
74977
+ method: "GET",
74978
+ auth: "user",
74979
+ errors: [],
74980
+ responseKind: "blob"
74981
+ },
74441
74982
  listCourseWaitlist: {
74442
74983
  path: "/sites/{siteId}/bookings/courses/{courseId}/waitlist",
74443
74984
  method: "GET",
@@ -75800,6 +76341,14 @@ var ENDPOINT_DEFINITIONS = {
75800
76341
  auth: "user",
75801
76342
  responseKind: "json"
75802
76343
  },
76344
+ exportSeoPagesCsv: {
76345
+ path: "/sites/{siteId}/seo/pages",
76346
+ method: "GET",
76347
+ tags: ["site-{siteId}", "seo-pages-{siteId}"],
76348
+ auth: "user",
76349
+ responseKind: "blob",
76350
+ errors: []
76351
+ },
75803
76352
  getSeoQueries: {
75804
76353
  path: "/sites/{siteId}/seo/queries",
75805
76354
  method: "GET",
@@ -75808,6 +76357,14 @@ var ENDPOINT_DEFINITIONS = {
75808
76357
  auth: "user",
75809
76358
  responseKind: "json"
75810
76359
  },
76360
+ exportSeoQueriesCsv: {
76361
+ path: "/sites/{siteId}/seo/queries",
76362
+ method: "GET",
76363
+ tags: ["site-{siteId}", "seo-queries-{siteId}"],
76364
+ auth: "user",
76365
+ responseKind: "blob",
76366
+ errors: []
76367
+ },
75811
76368
  getPerformanceOverview: {
75812
76369
  path: "/sites/{siteId}/performance/overview",
75813
76370
  method: "GET",
@@ -75856,7 +76413,12 @@ var ENDPOINT_DEFINITIONS = {
75856
76413
  path: "/media/{assetId}/canonical-crop",
75857
76414
  method: "POST",
75858
76415
  tags: ["media", "media-{assetId}"],
75859
- errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"],
76416
+ errors: [
76417
+ "validation:invalid_input",
76418
+ "resource:not_found",
76419
+ "resource:conflict",
76420
+ "server:internal_error"
76421
+ ],
75860
76422
  auth: "user",
75861
76423
  responseKind: "json"
75862
76424
  },
@@ -76188,7 +76750,7 @@ var ENDPOINT_DEFINITIONS = {
76188
76750
  method: "GET",
76189
76751
  tags: [TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug],
76190
76752
  auth: "user",
76191
- responseKind: "text"
76753
+ responseKind: "blob"
76192
76754
  },
76193
76755
  // Public submit
76194
76756
  submitForm: {
@@ -77071,6 +77633,14 @@ var ENDPOINT_DEFINITIONS = {
77071
77633
  auth: "user",
77072
77634
  responseKind: "json"
77073
77635
  },
77636
+ exportEventSeriesAttendeesCsv: {
77637
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/attendees/export.csv",
77638
+ method: "GET",
77639
+ tags: ["site-{siteId}", "event-series-{seriesId}"],
77640
+ auth: "user",
77641
+ errors: [],
77642
+ responseKind: "blob"
77643
+ },
77074
77644
  listEventSeriesWaitlist: {
77075
77645
  path: "/sites/{siteId}/bookings/event-series/{seriesId}/waitlist",
77076
77646
  method: "GET",
@@ -77634,6 +78204,14 @@ var ENDPOINT_DEFINITIONS = {
77634
78204
  auth: "user",
77635
78205
  responseKind: "json"
77636
78206
  },
78207
+ exportBookingCustomersCsv: {
78208
+ path: "/sites/{siteId}/bookings/customers/export.csv",
78209
+ method: "GET",
78210
+ tags: ["site-{siteId}", "customers-{siteId}"],
78211
+ auth: "user",
78212
+ errors: [],
78213
+ responseKind: "blob"
78214
+ },
77637
78215
  createBookingCustomer: {
77638
78216
  path: "/sites/{siteId}/bookings/customers",
77639
78217
  method: "POST",
@@ -77661,6 +78239,21 @@ var ENDPOINT_DEFINITIONS = {
77661
78239
  "server:internal_error"
77662
78240
  ]
77663
78241
  },
78242
+ rectifyBookingParticipantIdentity: {
78243
+ path: "/sites/{siteId}/bookings/participants/{participantId}/identity",
78244
+ method: "PATCH",
78245
+ tags: ["site-{siteId}", "customers-{siteId}"],
78246
+ auth: "user",
78247
+ responseKind: "json",
78248
+ errors: [
78249
+ "validation:invalid_input",
78250
+ "auth:forbidden",
78251
+ "resource:not_found",
78252
+ "resource:already_exists",
78253
+ "resource:conflict",
78254
+ "server:internal_error"
78255
+ ]
78256
+ },
77664
78257
  listCustomerPasses: {
77665
78258
  path: "/sites/{siteId}/bookings/customers/{customerId}/passes",
77666
78259
  method: "GET",
@@ -77795,13 +78388,46 @@ var ENDPOINT_DEFINITIONS = {
77795
78388
  auth: "user",
77796
78389
  responseKind: "json"
77797
78390
  },
78391
+ exportMoneyPaymentsCsv: {
78392
+ path: "/sites/{siteId}/bookings/money/payments/export.csv",
78393
+ method: "GET",
78394
+ tags: ["site-{siteId}", "bookings", "money-payments-{siteId}"],
78395
+ errors: [],
78396
+ auth: "user",
78397
+ responseKind: "blob"
78398
+ },
78399
+ exportMoneyBreakdownsCsv: {
78400
+ path: "/sites/{siteId}/bookings/money/report/breakdowns/export.csv",
78401
+ method: "GET",
78402
+ tags: ["site-{siteId}", "bookings", "money-report-{siteId}"],
78403
+ errors: [],
78404
+ auth: "user",
78405
+ responseKind: "blob"
78406
+ },
78407
+ exportMoneyTimeSeriesCsv: {
78408
+ path: "/sites/{siteId}/bookings/money/report/time-series/export.csv",
78409
+ method: "GET",
78410
+ tags: ["site-{siteId}", "bookings", "money-report-{siteId}"],
78411
+ errors: [],
78412
+ auth: "user",
78413
+ responseKind: "blob"
78414
+ },
77798
78415
  listBookingActivity: {
77799
78416
  path: "/sites/{siteId}/bookings/activity",
77800
78417
  method: "GET",
77801
78418
  tags: ["site-{siteId}", "bookings", "activity-{siteId}"],
78419
+ errors: [],
77802
78420
  auth: "user",
77803
78421
  responseKind: "json"
77804
78422
  },
78423
+ exportBookingActivityCsv: {
78424
+ path: "/sites/{siteId}/bookings/activity/export.csv",
78425
+ method: "GET",
78426
+ tags: ["site-{siteId}", "bookings", "activity-{siteId}"],
78427
+ errors: [],
78428
+ auth: "user",
78429
+ responseKind: "blob"
78430
+ },
77805
78431
  // Site logs
77806
78432
  listSiteActivityLogs: {
77807
78433
  path: "/sites/{siteId}/logs/activity",
@@ -77953,13 +78579,6 @@ var ENDPOINT_DEFINITIONS = {
77953
78579
  auth: "user",
77954
78580
  responseKind: "blob"
77955
78581
  },
77956
- exportSeoCsv: {
77957
- path: "/sites/{siteId}/seo/export",
77958
- method: "GET",
77959
- tags: ["site-{siteId}", "seo"],
77960
- auth: "user",
77961
- responseKind: "blob"
77962
- },
77963
78582
  // Admin site cost (for admin panel)
77964
78583
  adminSiteCost: {
77965
78584
  path: "/admin/sites/{siteId}/cost",
@@ -79263,6 +79882,8 @@ var CUSTOMER_MEMBERSHIP_PAYMENT_REFUND_FAILED_CODES = [
79263
79882
  var STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
79264
79883
  "missing_amount",
79265
79884
  "amount_exceeds_remaining",
79885
+ "credit_refunds_disabled",
79886
+ "missing_credit_customer",
79266
79887
  "deposit_refund_override_required",
79267
79888
  "refund_revoke_requires_full_line_refund",
79268
79889
  "unified_order_link_required"