@riverbankcms/sdk 0.60.11 → 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 (96) hide show
  1. package/README.md +10 -7
  2. package/dist/_dts/api/src/accessAdmin.d.ts +102 -0
  3. package/dist/_dts/api/src/bookingConfig.d.ts +31 -1
  4. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +38 -1
  5. package/dist/_dts/api/src/bookingOperations.d.ts +3 -0
  6. package/dist/_dts/api/src/bookingRecords.d.ts +45 -0
  7. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +4 -4
  8. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +1 -5
  9. package/dist/_dts/api/src/common/envelope.d.ts +1 -1
  10. package/dist/_dts/api/src/communications.d.ts +1 -1
  11. package/dist/_dts/api/src/contentRuntime.d.ts +1 -1
  12. package/dist/_dts/api/src/domains.d.ts +14 -13
  13. package/dist/_dts/api/src/endpoints.d.ts +121 -9
  14. package/dist/_dts/api/src/index.d.ts +3 -2
  15. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +1 -0
  16. package/dist/_dts/api/src/seoEndpoints.d.ts +2 -0
  17. package/dist/_dts/api/src/siteAssets.d.ts +0 -10
  18. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +15 -1
  19. package/dist/_dts/api/src/types.d.ts +1 -1
  20. package/dist/_dts/blocks/src/PageRenderer.d.ts +1 -0
  21. package/dist/_dts/blocks/src/index.d.ts +1 -0
  22. package/dist/_dts/blocks/src/portal/types.d.ts +1 -1
  23. package/dist/_dts/blocks/src/server.d.ts +1 -0
  24. package/dist/_dts/blocks/src/subroutes/fold.d.ts +40 -0
  25. package/dist/_dts/blocks/src/subroutes/formatDate.d.ts +12 -0
  26. package/dist/_dts/blocks/src/subroutes/index.d.ts +3 -0
  27. package/dist/_dts/blocks/src/subroutes/kinds.d.ts +32 -0
  28. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +3 -1
  29. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +2 -0
  30. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/types.d.ts +1 -0
  31. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +1 -0
  32. package/dist/_dts/blocks/src/system/spacing.d.ts +2 -1
  33. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +5 -0
  34. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +5 -1
  35. package/dist/_dts/core/src/booking-refunds.d.ts +8 -0
  36. package/dist/_dts/core/src/participant-identity.d.ts +1 -1
  37. package/dist/_dts/core/src/participants.d.ts +19 -7
  38. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +284 -96
  39. package/dist/_dts/db/src/schemas/forms.d.ts +135 -24
  40. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +3 -3
  41. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +3 -3
  42. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -3
  43. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -3
  44. package/dist/_dts/preview-next/src/client/preview/SubrouteNoticePanel.d.ts +13 -0
  45. package/dist/_dts/preview-next/src/client/preview/subrouteNotice.d.ts +26 -0
  46. package/dist/_dts/sdk/src/contracts/page.d.ts +1 -0
  47. package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -1
  48. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +1 -0
  49. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +4 -5
  50. package/dist/_dts/sdk/src/version.d.ts +1 -1
  51. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  52. package/dist/_dts/theme-core/src/buttons/personalities/showtime-pill.d.ts +17 -0
  53. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -1
  54. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  55. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +66 -30
  56. package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +16 -0
  57. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  58. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  59. package/dist/_dts/theme-core/src/schema.d.ts +174 -6
  60. package/dist/_dts/theme-core/src/site-styles/appearancePresets.d.ts +328 -15
  61. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +54 -2
  62. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +124 -0
  63. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  64. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  65. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +21 -0
  66. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +2 -1
  67. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  68. package/dist/_dts/theme-core/src/site-styles/types.d.ts +135 -2
  69. package/dist/_dts/ui/src/badge.d.ts +1 -1
  70. package/dist/_dts/ui/src/button.d.ts +1 -1
  71. package/dist/cli/index.mjs +801 -115
  72. package/dist/client/bookings.mjs +115 -1
  73. package/dist/client/client.mjs +905 -166
  74. package/dist/client/hooks.mjs +794 -111
  75. package/dist/client/rendering/client.mjs +179 -39
  76. package/dist/client/rendering/islands.mjs +179 -38
  77. package/dist/client/rendering.mjs +904 -165
  78. package/dist/preview-next/before-render.mjs +160 -16
  79. package/dist/preview-next/client/runtime.mjs +1674 -260
  80. package/dist/preview-next/middleware.mjs +160 -16
  81. package/dist/server/components.mjs +895 -165
  82. package/dist/server/config-validation.mjs +794 -111
  83. package/dist/server/config.mjs +794 -111
  84. package/dist/server/data.mjs +794 -111
  85. package/dist/server/index.mjs +163 -17
  86. package/dist/server/next.mjs +898 -167
  87. package/dist/server/page-converter.mjs +589 -82
  88. package/dist/server/prebuild.mjs +1 -1
  89. package/dist/server/rendering/server.mjs +895 -165
  90. package/dist/server/rendering.mjs +895 -165
  91. package/dist/server/routing.mjs +828 -117
  92. package/dist/server/server.mjs +795 -112
  93. package/dist/server/theme-bridge.mjs +216 -39
  94. package/dist/server/theme.mjs +139 -37
  95. package/dist/styles/index.css +44 -2
  96. package/package.json +1 -1
@@ -2031,12 +2031,29 @@ function defineFrameCapability(capability) {
2031
2031
  function defineBlockDesignCapability(capability) {
2032
2032
  return {
2033
2033
  ...capability,
2034
- kind: "designed"
2034
+ kind: "designed",
2035
+ sectionHeights: capability.sectionHeights ?? ["default"],
2036
+ imageSurfaceTreatments: capability.imageSurfaceTreatments ?? ["none"],
2037
+ imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
2038
+ testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"]
2035
2039
  };
2036
2040
  }
2037
2041
 
2038
2042
  // ../theme-core/src/site-styles/appearancePresets.ts
2043
+ function assertValidOptionGroups(preset2) {
2044
+ preset2.optionGroups?.forEach((group) => {
2045
+ const selectedOption = group.options.find(
2046
+ (option) => option.id === group.selectedOptionId
2047
+ );
2048
+ if (!selectedOption) {
2049
+ throw new Error(
2050
+ `Appearance preset "${preset2.id}" option group "${group.id}" selects missing option "${group.selectedOptionId}".`
2051
+ );
2052
+ }
2053
+ });
2054
+ }
2039
2055
  function defineBlockAppearancePreset(preset2) {
2056
+ assertValidOptionGroups(preset2);
2040
2057
  return preset2;
2041
2058
  }
2042
2059
  function defineSiteChromeAppearancePreset(preset2) {
@@ -2049,13 +2066,122 @@ var appearancePresets = [
2049
2066
  target: "hero",
2050
2067
  label: "Immersive image hero",
2051
2068
  blockKinds: ["block.hero"],
2069
+ constraints: {
2070
+ layoutFamilies: ["centered", "compact"]
2071
+ },
2072
+ design: {
2073
+ sectionSurface: "hero-image",
2074
+ contentFrame: plainFrame,
2075
+ itemSurface: "none",
2076
+ transitionAfter: "soft-fade-short",
2077
+ emphasis: "high",
2078
+ sectionHeight: "hero",
2079
+ imageSurfaceTreatment: { kind: "neutral-wash" }
2080
+ }
2081
+ }),
2082
+ defineBlockAppearancePreset({
2083
+ kind: "block-design",
2084
+ id: "hero-brand-scrim",
2085
+ target: "hero",
2086
+ label: "Brand scrim image hero",
2087
+ blockKinds: ["block.hero"],
2088
+ constraints: {
2089
+ layoutFamilies: ["centered", "compact"]
2090
+ },
2091
+ optionGroups: [
2092
+ {
2093
+ id: "image-surface-treatment",
2094
+ label: "Treatment",
2095
+ selectedOptionId: "brand-scrim-primary",
2096
+ options: [
2097
+ {
2098
+ id: "brand-scrim-primary",
2099
+ label: "Brand scrim",
2100
+ designPatch: {
2101
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
2102
+ }
2103
+ },
2104
+ {
2105
+ id: "neutral-scrim",
2106
+ label: "Neutral scrim",
2107
+ designPatch: {
2108
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
2109
+ }
2110
+ }
2111
+ ]
2112
+ }
2113
+ ],
2114
+ layoutPatches: [
2115
+ {
2116
+ constraints: {
2117
+ layoutVariantKeys: ["micro"]
2118
+ },
2119
+ designPatch: {
2120
+ sectionHeight: "banner"
2121
+ }
2122
+ }
2123
+ ],
2124
+ design: {
2125
+ sectionSurface: "hero-image",
2126
+ contentFrame: plainFrame,
2127
+ itemSurface: "none",
2128
+ transitionAfter: "soft-fade-short",
2129
+ emphasis: "high",
2130
+ sectionHeight: "immersive",
2131
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
2132
+ }
2133
+ }),
2134
+ defineBlockAppearancePreset({
2135
+ kind: "block-design",
2136
+ id: "hero-brand-scrim-fixed-frame",
2137
+ target: "hero",
2138
+ label: "Fixed-frame brand scrim hero",
2139
+ blockKinds: ["block.hero"],
2140
+ constraints: {
2141
+ layoutFamilies: ["centered", "compact"]
2142
+ },
2143
+ optionGroups: [
2144
+ {
2145
+ id: "image-surface-treatment",
2146
+ label: "Treatment",
2147
+ selectedOptionId: "brand-scrim-primary",
2148
+ options: [
2149
+ {
2150
+ id: "brand-scrim-primary",
2151
+ label: "Brand scrim",
2152
+ designPatch: {
2153
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
2154
+ }
2155
+ },
2156
+ {
2157
+ id: "neutral-scrim",
2158
+ label: "Neutral scrim",
2159
+ designPatch: {
2160
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
2161
+ }
2162
+ }
2163
+ ]
2164
+ }
2165
+ ],
2166
+ layoutPatches: [
2167
+ {
2168
+ constraints: {
2169
+ layoutVariantKeys: ["micro"]
2170
+ },
2171
+ designPatch: {
2172
+ sectionHeight: "banner"
2173
+ }
2174
+ }
2175
+ ],
2052
2176
  design: {
2053
2177
  sectionSurface: "hero-image",
2054
2178
  contentFrame: plainFrame,
2055
2179
  itemSurface: "none",
2056
2180
  transitionAfter: "soft-fade-short",
2057
2181
  emphasis: "high",
2058
- heroLegibility: "scrim-gradient"
2182
+ sectionHeight: "immersive",
2183
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
2184
+ imageSurfaceMotion: "fixed-frame"
2059
2185
  }
2060
2186
  }),
2061
2187
  defineBlockAppearancePreset({
@@ -2072,17 +2198,26 @@ var appearancePresets = [
2072
2198
  emphasis: "high"
2073
2199
  }
2074
2200
  }),
2201
+ defineBlockAppearancePreset({
2202
+ kind: "block-design",
2203
+ id: "body-text-editorial-intro",
2204
+ target: "body-text",
2205
+ label: "Editorial intro copy",
2206
+ blockKinds: ["block.body-text"],
2207
+ design: {
2208
+ sectionSurface: "base",
2209
+ contentFrame: plainFrame,
2210
+ itemSurface: "none",
2211
+ transitionAfter: "soft-fade-short",
2212
+ emphasis: "high"
2213
+ }
2214
+ }),
2075
2215
  defineBlockAppearancePreset({
2076
2216
  kind: "block-design",
2077
2217
  id: "offerings-calm-list",
2078
2218
  target: "offerings",
2079
2219
  label: "Calm offerings list",
2080
- blockKinds: [
2081
- "block.event-listing",
2082
- "block.event-calendar",
2083
- "block.event-spotlight",
2084
- "block.product-list"
2085
- ],
2220
+ blockKinds: ["block.event-listing", "block.event-calendar", "block.event-spotlight", "block.product-list"],
2086
2221
  design: {
2087
2222
  sectionSurface: "muted-band",
2088
2223
  contentFrame: plainFrame,
@@ -2161,6 +2296,35 @@ var appearancePresets = [
2161
2296
  emphasis: "high"
2162
2297
  }
2163
2298
  }),
2299
+ defineBlockAppearancePreset({
2300
+ kind: "block-design",
2301
+ id: "testimonials-dark-proof",
2302
+ target: "testimonials",
2303
+ label: "Dark proof panel",
2304
+ blockKinds: ["block.testimonials"],
2305
+ design: {
2306
+ sectionSurface: "accent-band",
2307
+ contentFrame: panelFrame("raised"),
2308
+ itemSurface: "raised",
2309
+ transitionAfter: "soft-fade-short",
2310
+ emphasis: "high"
2311
+ }
2312
+ }),
2313
+ defineBlockAppearancePreset({
2314
+ kind: "block-design",
2315
+ id: "testimonials-accent-quote-proof",
2316
+ target: "testimonials",
2317
+ label: "Accent quote proof",
2318
+ blockKinds: ["block.testimonials"],
2319
+ design: {
2320
+ sectionSurface: "accent-band",
2321
+ contentFrame: plainFrame,
2322
+ itemSurface: "raised",
2323
+ transitionAfter: "soft-fade-short",
2324
+ emphasis: "high",
2325
+ testimonialCardTreatment: "accent-quote"
2326
+ }
2327
+ }),
2164
2328
  defineBlockAppearancePreset({
2165
2329
  kind: "block-design",
2166
2330
  id: "faq-contained-help",
@@ -2189,6 +2353,20 @@ var appearancePresets = [
2189
2353
  emphasis: "medium"
2190
2354
  }
2191
2355
  }),
2356
+ defineBlockAppearancePreset({
2357
+ kind: "block-design",
2358
+ id: "contact-form-dark-card",
2359
+ target: "contact-form",
2360
+ label: "Dark form card",
2361
+ blockKinds: ["block.form"],
2362
+ design: {
2363
+ sectionSurface: "accent-band",
2364
+ contentFrame: panelFrame("raised"),
2365
+ itemSurface: "none",
2366
+ transitionAfter: "soft-fade-short",
2367
+ emphasis: "high"
2368
+ }
2369
+ }),
2192
2370
  defineBlockAppearancePreset({
2193
2371
  kind: "block-design",
2194
2372
  id: "cta-accent-band",
@@ -2208,9 +2386,33 @@ var appearancePresets = [
2208
2386
  id: "header-clean-base",
2209
2387
  target: "site-header",
2210
2388
  label: "Clean base header",
2211
- chrome: {
2212
- surface: "base",
2213
- emphasis: "medium"
2389
+ header: {
2390
+ surface: {
2391
+ kind: "neutral-solid",
2392
+ token: "surface",
2393
+ textColorToken: "text"
2394
+ },
2395
+ navTreatment: "minimal",
2396
+ dropdownTreatment: "surface",
2397
+ ctaTreatment: "default",
2398
+ behavior: "default"
2399
+ }
2400
+ }),
2401
+ defineSiteChromeAppearancePreset({
2402
+ kind: "site-chrome",
2403
+ id: "site-header-brand-solid-inverted-cta",
2404
+ target: "site-header",
2405
+ label: "Brand solid header with inverted CTA",
2406
+ header: {
2407
+ surface: {
2408
+ kind: "brand-solid",
2409
+ token: "primary",
2410
+ textColorToken: "primaryForeground"
2411
+ },
2412
+ navTreatment: "uppercase-underline",
2413
+ dropdownTreatment: "matched-solid",
2414
+ ctaTreatment: "inverted",
2415
+ behavior: "sticky-shrink"
2214
2416
  }
2215
2417
  }),
2216
2418
  defineSiteChromeAppearancePreset({
@@ -2218,10 +2420,31 @@ var appearancePresets = [
2218
2420
  id: "footer-muted-grounding",
2219
2421
  target: "site-footer",
2220
2422
  label: "Muted grounding footer",
2221
- chrome: {
2423
+ footer: {
2424
+ kind: "grounding",
2222
2425
  surface: "muted-band",
2223
2426
  emphasis: "low"
2224
2427
  }
2428
+ }),
2429
+ defineSiteChromeAppearancePreset({
2430
+ kind: "site-chrome",
2431
+ id: "site-footer-brand-two-band",
2432
+ target: "site-footer",
2433
+ label: "Two-band brand footer",
2434
+ footer: {
2435
+ kind: "brand-two-band",
2436
+ surface: {
2437
+ token: "primary",
2438
+ shade: "800",
2439
+ textColorToken: "primaryForeground"
2440
+ },
2441
+ bottomBand: {
2442
+ token: "primary",
2443
+ shade: "900",
2444
+ textColorToken: "primaryForeground"
2445
+ },
2446
+ emphasis: "high"
2447
+ }
2225
2448
  })
2226
2449
  ];
2227
2450
 
@@ -2891,6 +3114,111 @@ var pebble = defineButtonPersonality({
2891
3114
  }
2892
3115
  });
2893
3116
 
3117
+ // ../theme-core/src/buttons/personalities/showtime-pill.ts
3118
+ var showtimePill = defineButtonPersonality({
3119
+ id: "showtime-pill",
3120
+ name: "Showtime Pill",
3121
+ description: "Bold pill buttons with uppercase labels, generous padding, and a playful pop.",
3122
+ tags: { tone: "bold", energy: "vibrant", motion: "expressive", era: "modern" },
3123
+ buttonSystem: {
3124
+ global: {
3125
+ cornerStyle: "pill",
3126
+ shadow: "low",
3127
+ textTransform: "uppercase",
3128
+ fontWeight: 700,
3129
+ borderWidth: 2,
3130
+ hoverTransform: "lift",
3131
+ hoverColor: "darken",
3132
+ typography: "body",
3133
+ paddingPreset: "spacious",
3134
+ italic: false
3135
+ },
3136
+ sizes: {
3137
+ sm: { padding: "0.625rem 1.25rem", fontSize: "0.875rem" },
3138
+ md: { padding: "0.875rem 1.75rem", fontSize: "1rem" },
3139
+ lg: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" },
3140
+ xl: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" }
3141
+ },
3142
+ variants: [
3143
+ {
3144
+ id: "primary",
3145
+ name: "Primary",
3146
+ enabled: true,
3147
+ priority: 1,
3148
+ background: { type: "solid", colorToken: "primary" },
3149
+ textColorToken: "background",
3150
+ borderRadius: "rounded-full",
3151
+ effects: {
3152
+ hover: [{ effectId: "pop" }]
3153
+ }
3154
+ },
3155
+ {
3156
+ id: "secondary",
3157
+ name: "Secondary",
3158
+ enabled: true,
3159
+ priority: 2,
3160
+ background: { type: "transparent" },
3161
+ textColorToken: "primary",
3162
+ borderRadius: "rounded-full",
3163
+ border: { widthClass: "border-2", colorToken: "primary" },
3164
+ effects: {
3165
+ hover: [{ effectId: "pop" }]
3166
+ }
3167
+ },
3168
+ {
3169
+ id: "hero",
3170
+ name: "Hero",
3171
+ enabled: true,
3172
+ priority: 1,
3173
+ background: { type: "solid", colorToken: "secondary" },
3174
+ textColorToken: "primary",
3175
+ borderRadius: "rounded-full",
3176
+ effects: {
3177
+ hover: [{ effectId: "pop" }]
3178
+ }
3179
+ },
3180
+ {
3181
+ id: "header",
3182
+ name: "Header",
3183
+ enabled: true,
3184
+ priority: 2,
3185
+ background: { type: "solid", colorToken: "background" },
3186
+ textColorToken: "primary",
3187
+ borderRadius: "rounded-full",
3188
+ border: { widthClass: "border-2", colorToken: "primary" },
3189
+ effects: {
3190
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
3191
+ }
3192
+ },
3193
+ {
3194
+ id: "outline",
3195
+ name: "Outline",
3196
+ enabled: true,
3197
+ priority: 3,
3198
+ background: { type: "transparent" },
3199
+ textColorToken: "primary",
3200
+ borderRadius: "rounded-full",
3201
+ border: { widthClass: "border-2", colorToken: "primary" },
3202
+ effects: {
3203
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
3204
+ }
3205
+ },
3206
+ {
3207
+ id: "ghost",
3208
+ name: "Ghost",
3209
+ enabled: true,
3210
+ priority: 3,
3211
+ background: { type: "transparent" },
3212
+ textColorToken: "primary",
3213
+ borderRadius: "rounded-full",
3214
+ effects: {
3215
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
3216
+ }
3217
+ }
3218
+ ]
3219
+ }
3220
+ });
3221
+
2894
3222
  // ../theme-core/src/buttons/personalities/soft-pill.ts
2895
3223
  var softPill = defineButtonPersonality({
2896
3224
  id: "soft-pill",
@@ -2971,7 +3299,8 @@ var buttonPersonalities = [
2971
3299
  editorialLink,
2972
3300
  pebble,
2973
3301
  inkStamp,
2974
- brushedWash
3302
+ brushedWash,
3303
+ showtimePill
2975
3304
  ];
2976
3305
  var personalitiesById = new Map(
2977
3306
  buttonPersonalities.map((p) => [p.id, p])
@@ -5560,14 +5889,7 @@ var proseLinkStyleSchema = z19.object({
5560
5889
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
5561
5890
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
5562
5891
  });
5563
- var semanticSpacingSchema = z19.enum([
5564
- "none",
5565
- "compact",
5566
- "cozy",
5567
- "medium",
5568
- "comfortable",
5569
- "spacious"
5570
- ]);
5892
+ var semanticSpacingSchema = z19.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
5571
5893
  var boxRoundedSchema = z19.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
5572
5894
  var boxBackgroundOverlaySchema = z19.object({
5573
5895
  type: z19.enum(["none", "color", "gradient"]).nullable().optional(),
@@ -5584,6 +5906,7 @@ var boxBackgroundSchema = z19.object({
5584
5906
  scale: z19.string().nullable().optional(),
5585
5907
  position: z19.string().nullable().optional(),
5586
5908
  opacity: z19.number().min(0).max(1).nullable().optional(),
5909
+ motion: z19.enum(["static", "fixed-frame"]).nullable().optional(),
5587
5910
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
5588
5911
  textColor: z19.string().nullable().optional(),
5589
5912
  headingColor: z19.string().nullable().optional()
@@ -5591,7 +5914,7 @@ var boxBackgroundSchema = z19.object({
5591
5914
  var sectionStylesOverrideSchema = z19.object({
5592
5915
  background: boxBackgroundSchema.nullable().optional(),
5593
5916
  spacing: semanticSpacingSchema.nullable().optional(),
5594
- minHeight: z19.enum(["none", "hero", "immersive"]).nullable().optional()
5917
+ minHeight: z19.enum(["none", "banner", "hero", "immersive"]).nullable().optional()
5595
5918
  });
5596
5919
  var containerStylesOverrideSchema = z19.object({
5597
5920
  background: boxBackgroundSchema.nullable().optional(),
@@ -5610,7 +5933,8 @@ var cardStylesOverrideSchema = z19.object({
5610
5933
  border: cardBorderOverrideSchema.nullable().optional(),
5611
5934
  spacing: semanticSpacingSchema.nullable().optional(),
5612
5935
  raised: z19.boolean().nullable().optional(),
5613
- rounded: boxRoundedSchema.nullable().optional()
5936
+ rounded: boxRoundedSchema.nullable().optional(),
5937
+ treatment: z19.enum(["accent-quote"]).nullable().optional()
5614
5938
  });
5615
5939
  var blockStyleOverridesSchema = z19.object({
5616
5940
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
@@ -5685,15 +6009,7 @@ var inputStyle = z19.object({
5685
6009
  });
5686
6010
  var headerVariant = z19.enum(["classic", "centered", "transparent", "floating", "editorial"]);
5687
6011
  var headerPositioning = z19.enum(["static", "sticky", "fixed"]);
5688
- var headerNavStyle = z19.enum([
5689
- "minimal",
5690
- "underline",
5691
- "underline-grow",
5692
- "capsule",
5693
- "scale",
5694
- "frosted",
5695
- "solid"
5696
- ]);
6012
+ var headerNavStyle = z19.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
5697
6013
  var navFontWeight = z19.enum(["regular", "medium", "semibold", "bold"]);
5698
6014
  var headerMaxWidth = z19.enum(["container", "full"]);
5699
6015
  var headerContainerSchema = z19.object({
@@ -5747,6 +6063,7 @@ var dropdownStyleSchema = z19.object({
5747
6063
  // optional = no override (browser default)
5748
6064
  }).optional();
5749
6065
  var headerCtaGapSchema = z19.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
6066
+ var headerCtaTreatmentSchema = z19.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
5750
6067
  var navContainerSchema = z19.object({
5751
6068
  type: z19.enum(["none", "pill", "glass"]).default("none"),
5752
6069
  tint: z19.string().nullable().optional(),
@@ -5765,7 +6082,10 @@ var headerSchema = z19.object({
5765
6082
  shrinkOnScroll: z19.boolean(),
5766
6083
  maxWidth: headerMaxWidth,
5767
6084
  logoOverride: mediaSchema.nullable().optional(),
5768
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
6085
+ background: headerBackgroundSchema.default({
6086
+ type: "color",
6087
+ color: "surface"
6088
+ }),
5769
6089
  textColor: z19.string().nullable().optional(),
5770
6090
  // Site title and general header text
5771
6091
  navStyle: headerNavStyle,
@@ -5785,6 +6105,13 @@ var headerSchema = z19.object({
5785
6105
  navLinkStyle: navLinkStyleSchema.optional(),
5786
6106
  // CTA button spacing (desktop left margin)
5787
6107
  ctaGap: headerCtaGapSchema.optional(),
6108
+ // Semantic CTA treatment for header/nav CTA buttons. The Theme V2 compiler
6109
+ // materializes this to ctaVariant against the active button personality.
6110
+ ctaTreatment: headerCtaTreatmentSchema.optional(),
6111
+ // Optional theme-level CTA variant for header/nav CTA buttons.
6112
+ // Internal runtime bridge for the block renderer; prefer ctaTreatment in
6113
+ // authored Theme V2 concepts.
6114
+ ctaVariant: z19.string().min(1).optional(),
5788
6115
  // Dropdown menu styling (nav dropdowns and mobile drawer)
5789
6116
  dropdownStyle: dropdownStyleSchema
5790
6117
  });
@@ -5841,7 +6168,10 @@ var footerSchema = z19.object({
5841
6168
  variant: footerVariant,
5842
6169
  maxWidth: footerMaxWidth,
5843
6170
  showLogoText: z19.boolean().optional(),
5844
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
6171
+ background: headerBackgroundSchema.default({
6172
+ type: "color",
6173
+ color: "surface"
6174
+ }),
5845
6175
  // Footer nav styling (independent from header)
5846
6176
  navStyle: headerNavStyle.default("minimal"),
5847
6177
  navColor: z19.string().nullable().optional(),
@@ -5863,17 +6193,7 @@ var layoutSchema = z19.object({
5863
6193
  desktop: containerPaddingPresetSchema.optional()
5864
6194
  }).optional()
5865
6195
  }).optional();
5866
- var heroTypographySizeSchema = z19.enum([
5867
- "sm",
5868
- "base",
5869
- "lg",
5870
- "xl",
5871
- "2xl",
5872
- "3xl",
5873
- "4xl",
5874
- "5xl",
5875
- "6xl"
5876
- ]);
6196
+ var heroTypographySizeSchema = z19.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
5877
6197
  var heroTypographyLineHeightSchema = z19.enum(["tight", "snug", "normal", "relaxed"]);
5878
6198
  var heroResponsiveTypographySchema = z19.object({
5879
6199
  headlineSize: heroTypographySizeSchema.optional(),
@@ -5898,6 +6218,13 @@ var heroTypographySchema = z19.object({
5898
6218
  var heroSchema = z19.object({
5899
6219
  typography: heroTypographySchema.optional()
5900
6220
  }).optional();
6221
+ var bodyTextIntroTypographySizeSchema = z19.enum(["default", "editorial"]);
6222
+ var bodyTextSchema = z19.object({
6223
+ intro: z19.object({
6224
+ paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
6225
+ headingSize: bodyTextIntroTypographySizeSchema.optional()
6226
+ }).optional()
6227
+ }).optional();
5901
6228
  var gradientsSchema = z19.object({
5902
6229
  button: z19.string().min(1).nullable().optional(),
5903
6230
  hero: z19.string().min(1).nullable().optional(),
@@ -5919,6 +6246,7 @@ var themeSchema = z19.object({
5919
6246
  gradients: gradientsSchema.optional(),
5920
6247
  layout: layoutSchema,
5921
6248
  hero: heroSchema,
6249
+ bodyText: bodyTextSchema,
5922
6250
  header: headerSchema,
5923
6251
  footer: footerSchema,
5924
6252
  buttons: buttonSystemSchema.optional(),
@@ -5942,10 +6270,7 @@ var themeSchema = z19.object({
5942
6270
  ).optional(),
5943
6271
  // Structured block-kind theme overrides (v1: typography prose-link style only)
5944
6272
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
5945
- blockOverrides: z19.record(
5946
- z19.string(),
5947
- blockThemeOverrideSchema
5948
- ).optional(),
6273
+ blockOverrides: z19.record(z19.string(), blockThemeOverrideSchema).optional(),
5949
6274
  // Structured custom CSS rules
5950
6275
  // Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
5951
6276
  customCssRules: customCssRulesSchema,
@@ -6116,6 +6441,28 @@ var brandLedJewel = definePaletteVariant({
6116
6441
  { name: "border", hex: "#a8a29e" }
6117
6442
  ]
6118
6443
  });
6444
+ var brandLedBurgundyGold = definePaletteVariant({
6445
+ id: "brand-led-burgundy-gold",
6446
+ name: "Brand-led \u2014 Burgundy Gold",
6447
+ description: "Deep burgundy with warm gold accents and soft neutral grounds.",
6448
+ tags: { tone: "bold", energy: "vibrant", era: "modern" },
6449
+ mode: "light",
6450
+ colors: [
6451
+ { name: "primary", hex: "#7c2e38" },
6452
+ { name: "secondary", hex: "#d4af37" },
6453
+ { name: "accent", hex: "#b8e19a" },
6454
+ { name: "success", hex: "#10b981" },
6455
+ { name: "warning", hex: "#f59e0b" },
6456
+ { name: "destructive", hex: "#ef4444" },
6457
+ { name: "background", hex: "#f1dfd0" },
6458
+ { name: "surface", hex: "#f5e6db" },
6459
+ { name: "surfaceAlt", hex: "#f8ece3" },
6460
+ { name: "muted", hex: "#c9b8a8" },
6461
+ { name: "text", hex: "#400000" },
6462
+ { name: "primaryForeground", hex: "#ffffff" },
6463
+ { name: "border", hex: "#c9b8a8" }
6464
+ ]
6465
+ });
6119
6466
 
6120
6467
  // ../theme-core/src/palette/variants/high-contrast.ts
6121
6468
  var highContrastInk = definePaletteVariant({
@@ -6327,6 +6674,7 @@ var paletteVariants = [
6327
6674
  brandLedCool,
6328
6675
  brandLedWarm,
6329
6676
  brandLedJewel,
6677
+ brandLedBurgundyGold,
6330
6678
  // Warm-neutral family
6331
6679
  warmNeutralClay,
6332
6680
  warmNeutralCream,
@@ -6402,7 +6750,8 @@ var curatedSiteStyleIdValues = [
6402
6750
  "site-style:quiet-luxury",
6403
6751
  "site-style:practical-services",
6404
6752
  "site-style:modern-wellness",
6405
- "site-style:bold-launch"
6753
+ "site-style:bold-launch",
6754
+ "site-style:south-west-twerk-school"
6406
6755
  ];
6407
6756
  var quietBudget = {
6408
6757
  accentDensity: "low",
@@ -6457,6 +6806,8 @@ function defineCuratedSiteStyle(input) {
6457
6806
  supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
6458
6807
  supportedTransitions: generatedDesignOptionCatalog.transitions
6459
6808
  },
6809
+ ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
6810
+ recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
6460
6811
  buttonPersonalityChoices: input.buttonPersonalityChoices,
6461
6812
  paletteVariantChoices: input.paletteVariantChoices
6462
6813
  };
@@ -6703,6 +7054,101 @@ var curatedSiteStyles = [
6703
7054
  paletteChoice("brand-led-jewel"),
6704
7055
  paletteChoice("brand-led-warm")
6705
7056
  ]
7057
+ }),
7058
+ defineCuratedSiteStyle({
7059
+ id: "site-style:south-west-twerk-school",
7060
+ name: "South West Twerk School",
7061
+ description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
7062
+ 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.",
7063
+ selectionKeywords: [
7064
+ "dance",
7065
+ "classes",
7066
+ "workshop",
7067
+ "school",
7068
+ "movement",
7069
+ "performance",
7070
+ "community"
7071
+ ],
7072
+ tokenRecipes: {
7073
+ palette: "brand-led",
7074
+ contrast: "maximum",
7075
+ radius: "soft",
7076
+ shadow: "layered",
7077
+ typography: "clean-sans",
7078
+ spacing: "airy",
7079
+ motion: "expressive"
7080
+ },
7081
+ compositionBudget: expressiveBudget,
7082
+ themeOverrides: {
7083
+ typography: {
7084
+ body: {
7085
+ family: "Manrope, system-ui, sans-serif",
7086
+ size: "lg",
7087
+ weight: "regular",
7088
+ lineHeight: "relaxed",
7089
+ letterSpacing: "normal"
7090
+ },
7091
+ headings: {
7092
+ default: {
7093
+ family: '"TAN - PEARL", sans-serif',
7094
+ weight: "bold",
7095
+ lineHeight: "normal",
7096
+ letterSpacing: "tight",
7097
+ colorToken: "primary",
7098
+ italic: null,
7099
+ case: null
7100
+ },
7101
+ h1: {
7102
+ size: "xl",
7103
+ weight: "bold",
7104
+ lineHeight: "normal",
7105
+ letterSpacing: "tight",
7106
+ italic: null
7107
+ },
7108
+ h2: {
7109
+ size: "lg",
7110
+ weight: "bold",
7111
+ lineHeight: "normal",
7112
+ letterSpacing: "normal",
7113
+ italic: null
7114
+ },
7115
+ h3: {
7116
+ size: "md",
7117
+ weight: "bold",
7118
+ lineHeight: "normal",
7119
+ letterSpacing: "normal",
7120
+ italic: null
7121
+ }
7122
+ },
7123
+ scale: "balanced"
7124
+ },
7125
+ bodyText: {
7126
+ intro: {
7127
+ paragraphSize: "editorial",
7128
+ headingSize: "editorial"
7129
+ }
7130
+ }
7131
+ },
7132
+ recommendedAppearancePresetIds: [
7133
+ "site-header-brand-solid-inverted-cta",
7134
+ "site-footer-brand-two-band",
7135
+ "hero-brand-scrim-fixed-frame",
7136
+ "body-text-editorial-intro",
7137
+ "testimonials-accent-quote-proof",
7138
+ "contact-form-dark-card"
7139
+ ],
7140
+ buttonPersonalityChoices: [
7141
+ buttonChoice("showtime-pill"),
7142
+ buttonChoice("confident-chip"),
7143
+ buttonChoice("ink-stamp"),
7144
+ buttonChoice("brushed-wash")
7145
+ ],
7146
+ paletteVariantChoices: [
7147
+ paletteChoice("brand-led-burgundy-gold"),
7148
+ paletteChoice("brand-led-jewel"),
7149
+ paletteChoice("brand-led-warm"),
7150
+ paletteChoice("high-contrast-ink")
7151
+ ]
6706
7152
  })
6707
7153
  ];
6708
7154
  var curatedSiteStylesById = new Map(
@@ -6747,6 +7193,40 @@ var heroLegibilityStrategySchema = z21.enum([
6747
7193
  "scrim-gradient",
6748
7194
  "solid-panel"
6749
7195
  ]);
7196
+ var sectionHeightIntentSchema = z21.enum([
7197
+ "default",
7198
+ "banner",
7199
+ "hero",
7200
+ "immersive"
7201
+ ]);
7202
+ var imageSurfaceTreatmentIntensitySchema = z21.enum(["soft", "balanced", "strong"]);
7203
+ var imageSurfaceMotionSchema = z21.enum(["static", "fixed-frame"]);
7204
+ var imageSurfaceTreatmentSchema = z21.discriminatedUnion("kind", [
7205
+ z21.object({ kind: z21.literal("none") }).strict(),
7206
+ z21.object({
7207
+ kind: z21.literal("brand-scrim"),
7208
+ token: z21.enum(["primary", "secondary", "accent"]),
7209
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
7210
+ }).strict(),
7211
+ z21.object({
7212
+ kind: z21.literal("brand-wash"),
7213
+ token: z21.enum(["primary", "secondary", "accent"]),
7214
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
7215
+ }).strict(),
7216
+ z21.object({
7217
+ kind: z21.literal("neutral-scrim"),
7218
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
7219
+ }).strict(),
7220
+ z21.object({
7221
+ kind: z21.literal("neutral-wash"),
7222
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
7223
+ }).strict(),
7224
+ z21.object({
7225
+ kind: z21.literal("solid-panel"),
7226
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
7227
+ }).strict()
7228
+ ]);
7229
+ var testimonialCardTreatmentSchema = z21.enum(["default", "accent-quote"]);
6750
7230
  function uniqueNonEmpty(values) {
6751
7231
  const uniqueValues = [...new Set(values)];
6752
7232
  const firstValue = uniqueValues[0];
@@ -6785,7 +7265,11 @@ var blockDesignPlanSchema = z21.object({
6785
7265
  itemSurface: z21.enum(userDesignOptionCatalog.itemSurfaces),
6786
7266
  transitionAfter: z21.enum(userDesignOptionCatalog.transitions),
6787
7267
  emphasis: z21.enum(userDesignOptionCatalog.emphases),
6788
- heroLegibility: heroLegibilityStrategySchema.optional()
7268
+ sectionHeight: sectionHeightIntentSchema.optional(),
7269
+ heroLegibility: heroLegibilityStrategySchema.optional(),
7270
+ imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
7271
+ imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
7272
+ testimonialCardTreatment: testimonialCardTreatmentSchema.optional()
6789
7273
  }).strict();
6790
7274
  var styleAuthoritySchema = z21.discriminatedUnion("kind", [
6791
7275
  z21.object({
@@ -8315,6 +8799,7 @@ var SEMANTIC_SPACING_VALUES = [
8315
8799
  ];
8316
8800
  var SECTION_MIN_HEIGHT_VALUES = [
8317
8801
  "none",
8802
+ "banner",
8318
8803
  "hero",
8319
8804
  "immersive"
8320
8805
  ];
@@ -8342,6 +8827,7 @@ var CONTAINER_SPACING_MAP = {
8342
8827
  };
8343
8828
  var SECTION_MIN_HEIGHT_MAP = {
8344
8829
  none: "",
8830
+ banner: "rb-section-min-h-banner",
8345
8831
  hero: "rb-section-min-h-hero",
8346
8832
  immersive: "rb-section-min-h-immersive"
8347
8833
  };
@@ -9132,6 +9618,9 @@ var boxStylesCompositeTransform = {
9132
9618
  classes.push(roundedResult);
9133
9619
  }
9134
9620
  }
9621
+ if (input.treatment === "accent-quote") {
9622
+ classes.push("rb-card-treatment-accent-quote");
9623
+ }
9135
9624
  return classes.join(" ").trim() || "";
9136
9625
  }
9137
9626
  };
@@ -9229,7 +9718,7 @@ var sectionClassNameTransform = {
9229
9718
  minHeight = input.minHeight;
9230
9719
  } else if (process.env.NODE_ENV !== "production") {
9231
9720
  console.warn(
9232
- `[sectionStyles] Invalid minHeight value in _sectionStyles: "${input.minHeight}". Expected one of: none, hero, immersive.`
9721
+ `[sectionStyles] Invalid minHeight value in _sectionStyles: "${input.minHeight}". Expected one of: none, banner, hero, immersive.`
9233
9722
  );
9234
9723
  }
9235
9724
  }
@@ -9552,23 +10041,6 @@ function styledCard(children, opts, ...mods) {
9552
10041
  );
9553
10042
  }
9554
10043
 
9555
- // ../blocks/src/system/node/fragments/typography.ts
9556
- function mergeClassName(base, extra) {
9557
- return [base, extra ?? ""].filter(Boolean).join(" ");
9558
- }
9559
- function captionText(opts, ...mods) {
9560
- const {
9561
- as: asProp,
9562
- className: classNameProp,
9563
- color,
9564
- ...rest
9565
- } = opts ?? {};
9566
- const as = asProp ?? "p";
9567
- const className = mergeClassName("rb-caption", classNameProp);
9568
- const style = textColorStyle(color ?? "mutedText");
9569
- return text({ ...rest, as, className, style }, ...mods);
9570
- }
9571
-
9572
10044
  // ../blocks/src/system/node/fragments/feedbackCallout.ts
9573
10045
  function joinClasses(...parts) {
9574
10046
  return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
@@ -10473,18 +10945,17 @@ function buildAttributionNodes() {
10473
10945
  const name = text(
10474
10946
  {
10475
10947
  as: "strong",
10476
- className: "rb-block",
10477
- style: textColorStyle("text")
10948
+ className: "rb-block"
10478
10949
  },
10479
10950
  bind("testimonial.content.name", { fallback: "Anonymous" })
10480
10951
  );
10481
- const jobTitle = captionText(
10482
- null,
10952
+ const jobTitle = text(
10953
+ { as: "p", className: "rb-caption" },
10483
10954
  when("testimonial.content.jobTitle"),
10484
10955
  bind("testimonial.content.jobTitle")
10485
10956
  );
10486
- const company = captionText(
10487
- null,
10957
+ const company = text(
10958
+ { as: "p", className: "rb-caption" },
10488
10959
  when("testimonial.content.company"),
10489
10960
  bind("testimonial.content.company")
10490
10961
  );
@@ -10518,8 +10989,7 @@ function buildTestimonialCard(...mods) {
10518
10989
  );
10519
10990
  const body = richText(
10520
10991
  {
10521
- className: "rb-prose rb-max-w-none",
10522
- style: textColorStyle("text")
10992
+ className: "rb-prose rb-max-w-none"
10523
10993
  },
10524
10994
  bind("testimonial.content.body"),
10525
10995
  when("testimonial.content.body")
@@ -12241,6 +12711,7 @@ function heroContentCard(children, gap) {
12241
12711
  return styledContainer({
12242
12712
  bindFrom: "_contentCardStyles",
12243
12713
  constrainWidth: false,
12714
+ baseClassName: "rb-relative rb-isolate",
12244
12715
  rootType: "stack",
12245
12716
  rootProps: {
12246
12717
  gap
@@ -12271,6 +12742,7 @@ function heroContentWrapper(children, gap, fallbackClassName) {
12271
12742
  function heroContainerStack(children, gap) {
12272
12743
  return styledContainer({
12273
12744
  rootType: "stack",
12745
+ baseClassName: "rb-relative rb-isolate",
12274
12746
  rootProps: {
12275
12747
  gap: "none",
12276
12748
  justify: {
@@ -13511,7 +13983,7 @@ function resolveHeroVerticalAlignment(content) {
13511
13983
  if (raw === "top" || raw === "center" || raw === "bottom") return raw;
13512
13984
  const sectionStyles = asPartialObject(content._sectionStyles);
13513
13985
  const minHeight = sectionStyles?.minHeight;
13514
- if (minHeight === "hero" || minHeight === "immersive") return "center";
13986
+ if (minHeight === "banner" || minHeight === "hero" || minHeight === "immersive") return "center";
13515
13987
  const variant = resolveHeroVariant(content);
13516
13988
  if (variant === "split" || variant === "splitReverse") return "center";
13517
13989
  return "top";
@@ -14313,6 +14785,26 @@ var footerSplitNavSingleClassTransform = {
14313
14785
  ]);
14314
14786
  }
14315
14787
  };
14788
+ var footerSplitMainClassSchema = z33.object({
14789
+ base: z33.string().optional(),
14790
+ reverseClass: z33.string().optional()
14791
+ });
14792
+ var footerSplitMainClassTransform = {
14793
+ id: "layout.footerSplitMainClass",
14794
+ kind: "string",
14795
+ summary: "Compose split-footer main row classes from footer logo placement",
14796
+ schema: footerSplitMainClassSchema,
14797
+ run: (value, options) => {
14798
+ const logo = asPartialObject(value);
14799
+ const placement = logo?.placement ?? "right";
14800
+ const shouldPlaceLogoFirst = placement === "left" || placement === "above";
14801
+ 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";
14802
+ return joinClasses4([
14803
+ options.base ?? baseClass,
14804
+ shouldPlaceLogoFirst ? options.reverseClass ?? "rb-md-flex-row-reverse" : null
14805
+ ]);
14806
+ }
14807
+ };
14316
14808
  var footerLogoClassSchema = z33.object({
14317
14809
  base: z33.string().optional()
14318
14810
  });
@@ -14323,14 +14815,11 @@ var footerLogoClassTransform = {
14323
14815
  schema: footerLogoClassSchema,
14324
14816
  run: (value, options) => {
14325
14817
  const logo = asPartialObject(value);
14326
- const placement = logo?.placement ?? "right";
14327
14818
  const align = logo?.align ?? "end";
14328
14819
  const hiddenClass = logo?.showLogo === false ? "rb-hidden" : null;
14329
- const orderClass = placement === "left" || placement === "above" ? "rb-md-order-first" : "rb-md-order-last";
14330
14820
  const selfAlignClass = align === "start" ? "rb-self-start rb-text-left" : align === "center" ? "rb-self-center rb-text-center" : "rb-self-end rb-text-right";
14331
14821
  return joinClasses4([
14332
14822
  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",
14333
- orderClass,
14334
14823
  selfAlignClass,
14335
14824
  hiddenClass
14336
14825
  ]);
@@ -14385,6 +14874,7 @@ var layoutTransforms = [
14385
14874
  footerBottomBarContainerClassTransform,
14386
14875
  footerBottomBarStyleTransform,
14387
14876
  footerSplitNavSingleClassTransform,
14877
+ footerSplitMainClassTransform,
14388
14878
  footerLogoClassTransform,
14389
14879
  footerLogoMediaClassTransform,
14390
14880
  footerLogoTextVisibleTransform
@@ -14692,7 +15182,7 @@ var createNavRow = (className, align = "end") => navRow({
14692
15182
  var headerCta = ctaButton({
14693
15183
  basePath: "menu.ctaItem",
14694
15184
  whenPath: "menu.ctaItem.label",
14695
- variantPath: "menu.ctaItem.variant",
15185
+ variantPath: "$root.theme.header.ctaVariant",
14696
15186
  linkPath: "menu.ctaItem.link",
14697
15187
  sizeFallback: "sm",
14698
15188
  className: `header-cta ${desktopOnlyDisplay("inline-flex")} rb-ml-6`
@@ -14700,7 +15190,7 @@ var headerCta = ctaButton({
14700
15190
  var mobileCta = ctaButton({
14701
15191
  basePath: "menu.ctaItem",
14702
15192
  whenPath: "menu.ctaItem.label",
14703
- variantPath: "menu.ctaItem.variant",
15193
+ variantPath: "$root.theme.header.ctaVariant",
14704
15194
  linkPath: "menu.ctaItem.link",
14705
15195
  sizeFallback: "md",
14706
15196
  className: "nav-mobile-cta rb-w-full"
@@ -15161,7 +15651,13 @@ var splitFooterLayout = stack(
15161
15651
  [
15162
15652
  inline(
15163
15653
  {
15164
- 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"
15654
+ className: {
15655
+ $bind: {
15656
+ from: "$root.theme.footer.logo",
15657
+ transforms: [{ id: "layout.footerSplitMainClass" }],
15658
+ 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"
15659
+ }
15660
+ }
15165
15661
  },
15166
15662
  [
15167
15663
  stack(
@@ -17394,7 +17890,8 @@ var courseEntrySubrouteContextSchema = z45.union([
17394
17890
  run: z45.object({
17395
17891
  courseId: z45.string(),
17396
17892
  seriesId: z45.string(),
17397
- runSlug: z45.string()
17893
+ runSlug: z45.string(),
17894
+ runName: z45.string().nullable()
17398
17895
  })
17399
17896
  }),
17400
17897
  z45.object({
@@ -25211,6 +25708,34 @@ function panelCapable() {
25211
25708
  itemSurfaces: "unsupported"
25212
25709
  });
25213
25710
  }
25711
+ var heroSectionHeights = [
25712
+ "default",
25713
+ "banner",
25714
+ "hero",
25715
+ "immersive"
25716
+ ];
25717
+ var heroImageSurfaceTreatments = [
25718
+ "none",
25719
+ "brand-scrim",
25720
+ "brand-wash",
25721
+ "neutral-scrim",
25722
+ "neutral-wash",
25723
+ "solid-panel"
25724
+ ];
25725
+ var heroImageSurfaceMotions = [
25726
+ "static",
25727
+ "fixed-frame"
25728
+ ];
25729
+ function heroCapable() {
25730
+ return declareBlockDesignCapability({
25731
+ sectionSurfaces: "supported",
25732
+ contentFrames: ["plain", "panel"],
25733
+ itemSurfaces: "unsupported",
25734
+ sectionHeights: heroSectionHeights,
25735
+ imageSurfaceTreatments: heroImageSurfaceTreatments,
25736
+ imageSurfaceMotions: heroImageSurfaceMotions
25737
+ });
25738
+ }
25214
25739
  function plainItemsCapable() {
25215
25740
  return declareBlockDesignCapability({
25216
25741
  sectionSurfaces: "supported",
@@ -25327,7 +25852,7 @@ function withDesignCapability(blockKind, definition, designCapability, designMet
25327
25852
  };
25328
25853
  }
25329
25854
  var systemBlockDefinitionsRaw = [
25330
- withDesignCapability("block.hero", heroBlockDefinition, panelCapable(), defineBlockDesignMetadata({
25855
+ withDesignCapability("block.hero", heroBlockDefinition, heroCapable(), defineBlockDesignMetadata({
25331
25856
  flow: heroFlow,
25332
25857
  layoutProfiles: [
25333
25858
  layoutProfile({
@@ -25431,7 +25956,12 @@ var systemBlockDefinitionsRaw = [
25431
25956
  flow: siteChromeFlow,
25432
25957
  layoutProfiles: []
25433
25958
  })),
25434
- withDesignCapability("block.testimonials", testimonialsBlockDefinition, panelAndItemsCapable(), defineBlockDesignMetadata({
25959
+ withDesignCapability("block.testimonials", testimonialsBlockDefinition, declareBlockDesignCapability({
25960
+ sectionSurfaces: "supported",
25961
+ contentFrames: ["plain", "panel"],
25962
+ itemSurfaces: "supported",
25963
+ testimonialCardTreatments: ["default", "accent-quote"]
25964
+ }), defineBlockDesignMetadata({
25435
25965
  flow: proofFlow,
25436
25966
  layoutProfiles: [
25437
25967
  layoutProfile({
@@ -25743,8 +26273,15 @@ function parseOpacity(value) {
25743
26273
  }
25744
26274
  return opacity <= 1 ? opacity : opacity / 100;
25745
26275
  }
25746
- function appendOptionalClasses(baseClassName, optionalClassName) {
25747
- return optionalClassName ? `${baseClassName} ${optionalClassName}` : baseClassName;
26276
+ function backgroundMotionClassNames(input) {
26277
+ return input.motion === "fixed-frame" ? "rb-bg-motion-fixed-frame" : "";
26278
+ }
26279
+ function appendBackgroundMediaClasses(baseClassName, input) {
26280
+ return [
26281
+ baseClassName,
26282
+ backgroundMotionClassNames(input),
26283
+ backgroundVideoMobileClassNames(input)
26284
+ ].filter(Boolean).join(" ");
25748
26285
  }
25749
26286
  var resolveImageStyleTransform = {
25750
26287
  id: "background.resolveImageStyle",
@@ -25821,9 +26358,9 @@ var resolveImageClassNameTransform = {
25821
26358
  const objectFit = isString(input.objectFit) ? input.objectFit.trim() : null;
25822
26359
  const position = isString(input.position) ? input.position.trim() : null;
25823
26360
  if (objectFit === "fill" || objectFit === "fit" || objectFit === null) {
25824
- return appendOptionalClasses(
26361
+ return appendBackgroundMediaClasses(
25825
26362
  `${baseClass} rb-inset-0 rb-h-full rb-w-full rb-object-${objectFit === "fit" ? "contain" : "cover"}`,
25826
- backgroundVideoMobileClassNames(input)
26363
+ input
25827
26364
  );
25828
26365
  }
25829
26366
  let needsAnchoring = false;
@@ -25836,18 +26373,18 @@ var resolveImageClassNameTransform = {
25836
26373
  }
25837
26374
  }
25838
26375
  if (!needsAnchoring) {
25839
- return appendOptionalClasses(
26376
+ return appendBackgroundMediaClasses(
25840
26377
  `${baseClass} rb-inset-0 rb-h-full rb-w-full`,
25841
- backgroundVideoMobileClassNames(input)
26378
+ input
25842
26379
  );
25843
26380
  }
25844
26381
  const isPreset = position && BACKGROUND_POSITION_PRESET_VALUES.includes(position);
25845
26382
  const isCustom = position && !isPreset;
25846
26383
  if (isCustom) {
25847
- return appendOptionalClasses(baseClass, backgroundVideoMobileClassNames(input));
26384
+ return appendBackgroundMediaClasses(baseClass, input);
25848
26385
  }
25849
26386
  const anchorClasses = getAnchorClasses(position);
25850
- return appendOptionalClasses(`${baseClass} ${anchorClasses}`, backgroundVideoMobileClassNames(input));
26387
+ return appendBackgroundMediaClasses(`${baseClass} ${anchorClasses}`, input);
25851
26388
  }
25852
26389
  };
25853
26390
  var resolveOverlayStyleTransform = {
@@ -32979,16 +33516,14 @@ function generateDropdownLinkStyles(header, themeId, tokens, theme) {
32979
33516
  };
32980
33517
  additionalRules.push(`letter-spacing: ${letterSpacingMap[letterSpacing]};`);
32981
33518
  }
32982
- const textSize = configuredDropdownStyle?.textSize;
32983
- if (textSize) {
32984
- const textSizeMap = {
32985
- "xs": "0.75rem",
32986
- "sm": "0.875rem",
32987
- "base": "1rem",
32988
- "lg": "1.125rem"
32989
- };
32990
- additionalRules.push(`font-size: ${textSizeMap[textSize]};`);
32991
- }
33519
+ const textSize = configuredDropdownStyle?.textSize ?? "sm";
33520
+ const textSizeMap = {
33521
+ "xs": "0.75rem",
33522
+ "sm": "0.875rem",
33523
+ "base": "1rem",
33524
+ "lg": "1.125rem"
33525
+ };
33526
+ additionalRules.push(`font-size: ${textSizeMap[textSize]};`);
32992
33527
  if (additionalRules.length > 0) {
32993
33528
  const selector = `:where([data-theme-scope="${themeId}"]) .nav-dropdown-link`;
32994
33529
  return baseCSS + `
@@ -33277,12 +33812,10 @@ ${selector} .rb-container-full`;
33277
33812
  ${rootRules.join("\n ")}
33278
33813
  }`);
33279
33814
  if (containerPadding?.mobile) {
33280
- cssChunks.push(
33281
- `${containerSelector} {
33815
+ cssChunks.push(`${containerSelector} {
33282
33816
  padding-left: ${toPaddingValue(containerPadding.mobile)};
33283
33817
  padding-right: ${toPaddingValue(containerPadding.mobile)};
33284
- }`
33285
- );
33818
+ }`);
33286
33819
  }
33287
33820
  if (containerPadding?.tablet) {
33288
33821
  cssChunks.push(
@@ -33308,6 +33841,10 @@ ${selector} .rb-container-full`;
33308
33841
  if (heroTypographyCss) {
33309
33842
  cssChunks.push(heroTypographyCss);
33310
33843
  }
33844
+ const bodyTextTypographyCss = generateBodyTextTypographyCss(themeId, theme);
33845
+ if (bodyTextTypographyCss) {
33846
+ cssChunks.push(bodyTextTypographyCss);
33847
+ }
33311
33848
  cssChunks.push(generateSiteStyleTransitionCss(themeId));
33312
33849
  return cssChunks.join("\n\n");
33313
33850
  }
@@ -33320,6 +33857,9 @@ function toPaddingValue(preset2) {
33320
33857
  };
33321
33858
  return map[preset2];
33322
33859
  }
33860
+ var waveTransitionMask = svgDataUrl(
33861
+ "<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>"
33862
+ );
33323
33863
  function generateSiteStyleTransitionCss(themeId) {
33324
33864
  const selector = `:where([data-theme-scope="${themeId}"])`;
33325
33865
  return `${selector} [data-style-group^='site-style-transition-'] {
@@ -33387,21 +33927,17 @@ ${selector} [data-style-group^='site-style-transition-angle-edge-'] > [data-slot
33387
33927
 
33388
33928
  ${selector} [data-style-group^='site-style-transition-wave-edge-'] > [data-slot='section']::after {
33389
33929
  background: var(--site-style-transition-to);
33390
- clip-path: polygon(
33391
- 0 42%,
33392
- 10% 34%,
33393
- 21% 42%,
33394
- 34% 31%,
33395
- 48% 39%,
33396
- 63% 29%,
33397
- 78% 37%,
33398
- 90% 30%,
33399
- 100% 36%,
33400
- 100% 100%,
33401
- 0 100%
33402
- );
33930
+ mask-image: url("${waveTransitionMask}");
33931
+ mask-repeat: no-repeat;
33932
+ mask-size: 100% 100%;
33933
+ -webkit-mask-image: url("${waveTransitionMask}");
33934
+ -webkit-mask-repeat: no-repeat;
33935
+ -webkit-mask-size: 100% 100%;
33403
33936
  }`;
33404
33937
  }
33938
+ function svgDataUrl(svg) {
33939
+ return `data:image/svg+xml,${encodeURIComponent(svg)}`;
33940
+ }
33405
33941
  function generateHeroTypographyCss(themeId, theme) {
33406
33942
  const typography = theme.hero?.typography;
33407
33943
  if (!typography) return "";
@@ -33424,33 +33960,21 @@ function generateHeroTypographyCss(themeId, theme) {
33424
33960
  ${subheadlineRules.join("\n ")}
33425
33961
  }`);
33426
33962
  }
33427
- const microHeadlineRules = buildTypographyRules(
33428
- typography.microHeadlineSize,
33429
- typography.microHeadlineLineHeight
33430
- );
33963
+ const microHeadlineRules = buildTypographyRules(typography.microHeadlineSize, typography.microHeadlineLineHeight);
33431
33964
  if (microHeadlineRules.length > 0) {
33432
33965
  chunks.push(`${microHeadlineSelector} {
33433
33966
  ${microHeadlineRules.join("\n ")}
33434
33967
  }`);
33435
33968
  }
33436
- const microSubheadlineRules = buildTypographyRules(
33437
- typography.microSubheadlineSize,
33438
- typography.microSubheadlineLineHeight
33439
- );
33969
+ const microSubheadlineRules = buildTypographyRules(typography.microSubheadlineSize, typography.microSubheadlineLineHeight);
33440
33970
  if (microSubheadlineRules.length > 0) {
33441
33971
  chunks.push(`${microSubheadlineSelector} {
33442
33972
  ${microSubheadlineRules.join("\n ")}
33443
33973
  }`);
33444
33974
  }
33445
33975
  if (typography.responsive?.tablet) {
33446
- const tabletHeadlineRules = buildTypographyRules(
33447
- typography.responsive.tablet.headlineSize,
33448
- typography.responsive.tablet.headlineLineHeight
33449
- );
33450
- const tabletSubheadlineRules = buildTypographyRules(
33451
- typography.responsive.tablet.subheadlineSize,
33452
- typography.responsive.tablet.subheadlineLineHeight
33453
- );
33976
+ const tabletHeadlineRules = buildTypographyRules(typography.responsive.tablet.headlineSize, typography.responsive.tablet.headlineLineHeight);
33977
+ const tabletSubheadlineRules = buildTypographyRules(typography.responsive.tablet.subheadlineSize, typography.responsive.tablet.subheadlineLineHeight);
33454
33978
  const tabletChunks = [];
33455
33979
  if (tabletHeadlineRules.length > 0) {
33456
33980
  tabletChunks.push(`${headlineSelector} {
@@ -33469,14 +33993,8 @@ function generateHeroTypographyCss(themeId, theme) {
33469
33993
  }
33470
33994
  }
33471
33995
  if (typography.responsive?.mobile) {
33472
- const mobileHeadlineRules = buildTypographyRules(
33473
- typography.responsive.mobile.headlineSize,
33474
- typography.responsive.mobile.headlineLineHeight
33475
- );
33476
- const mobileSubheadlineRules = buildTypographyRules(
33477
- typography.responsive.mobile.subheadlineSize,
33478
- typography.responsive.mobile.subheadlineLineHeight
33479
- );
33996
+ const mobileHeadlineRules = buildTypographyRules(typography.responsive.mobile.headlineSize, typography.responsive.mobile.headlineLineHeight);
33997
+ const mobileSubheadlineRules = buildTypographyRules(typography.responsive.mobile.subheadlineSize, typography.responsive.mobile.subheadlineLineHeight);
33480
33998
  const mobileChunks = [];
33481
33999
  if (mobileHeadlineRules.length > 0) {
33482
34000
  mobileChunks.push(`${headlineSelector} {
@@ -33506,6 +34024,27 @@ function buildTypographyRules(size, lineHeight) {
33506
34024
  }
33507
34025
  return rules;
33508
34026
  }
34027
+ function generateBodyTextTypographyCss(themeId, theme) {
34028
+ const intro = theme.bodyText?.intro;
34029
+ if (!intro) return "";
34030
+ const rootSelector = `:where([data-theme-scope="${themeId}"]) :where([data-block="body-text"][data-block-variant="intro"])`;
34031
+ const chunks = [];
34032
+ if (intro.headingSize === "editorial") {
34033
+ chunks.push(`${rootSelector} .body-copy-heading {
34034
+ font-size: clamp(1.75rem, 1.15rem + 2.2vw, 3rem);
34035
+ line-height: 1.08;
34036
+ }`);
34037
+ }
34038
+ if (intro.paragraphSize === "editorial") {
34039
+ chunks.push(`${rootSelector} .body-copy-body {
34040
+ --rb-prose-lg-font-size: clamp(1.35rem, 1.05rem + 1.3vw, 2rem);
34041
+ --rb-prose-lg-line-height: 1.55;
34042
+ --rb-prose-xl-sm-font-size: clamp(1.45rem, 1.1rem + 1.4vw, 2rem);
34043
+ --rb-prose-xl-sm-line-height: 1.55;
34044
+ }`);
34045
+ }
34046
+ return chunks.join("\n\n");
34047
+ }
33509
34048
  function toHeroSize(size) {
33510
34049
  const map = {
33511
34050
  sm: "0.875rem",
@@ -33516,7 +34055,8 @@ function toHeroSize(size) {
33516
34055
  "3xl": "1.875rem",
33517
34056
  "4xl": "2.25rem",
33518
34057
  "5xl": "3rem",
33519
- "6xl": "3.75rem"
34058
+ "6xl": "3.75rem",
34059
+ editorial: "clamp(1.25rem, 3vw, 2.25rem)"
33520
34060
  };
33521
34061
  return map[size];
33522
34062
  }
@@ -35838,12 +36378,16 @@ var containerResponsiveThemeCss = `/*
35838
36378
  .rb-h-full {
35839
36379
  height: 100%;
35840
36380
  }
36381
+ .rb-section-min-h-banner {
36382
+ min-height: clamp(16rem, 34svh, 24rem);
36383
+ }
35841
36384
  .rb-section-min-h-hero {
35842
36385
  min-height: clamp(32rem, 62svh, 44rem);
35843
36386
  }
35844
36387
  .rb-section-min-h-immersive {
35845
36388
  min-height: clamp(38rem, 78svh, 54rem);
35846
36389
  }
36390
+ .rb-section-min-h-banner > .rb-container,
35847
36391
  .rb-section-min-h-hero > .rb-container,
35848
36392
  .rb-section-min-h-immersive > .rb-container {
35849
36393
  min-height: inherit;
@@ -36953,6 +37497,19 @@ var containerResponsiveThemeCss = `/*
36953
37497
  .rb-object-contain {
36954
37498
  object-fit: contain;
36955
37499
  }
37500
+ .rb-bg-motion-fixed-frame {
37501
+ position: fixed;
37502
+ inset: 0;
37503
+ width: 100vw;
37504
+ height: 100svh;
37505
+ }
37506
+ @media (hover: none), (prefers-reduced-motion: reduce) {
37507
+ .rb-bg-motion-fixed-frame {
37508
+ position: absolute;
37509
+ width: 100%;
37510
+ height: 100%;
37511
+ }
37512
+ }
36956
37513
 
36957
37514
  /* Line clamp */
36958
37515
  .rb-line-clamp-2,
@@ -41463,13 +42020,13 @@ var containerResponsiveThemeCss = `/*
41463
42020
 
41464
42021
  /* Eyebrow - color only (typography via .rb-eyebrow) */
41465
42022
  :where(.theme-scope) :where([data-block="hero"]) .hero-eyebrow {
41466
- color: rgb(var(--tb-text));
42023
+ color: var(--section-text-color, rgb(var(--tb-text)));
41467
42024
  }
41468
42025
 
41469
42026
  /* Subheadline - supporting text below headline */
41470
42027
  :where(.theme-scope) :where([data-block="hero"]) .hero-subheadline {
41471
42028
  font-size: 1.125rem;
41472
- color: rgb(var(--tb-text));
42029
+ color: var(--section-text-color, rgb(var(--tb-text)));
41473
42030
  }
41474
42031
 
41475
42032
  @container rb-site (min-width: 640px) {
@@ -41543,6 +42100,20 @@ var containerResponsiveThemeCss = `/*
41543
42100
  max-width: 60rem;
41544
42101
  }
41545
42102
 
42103
+ :where(.theme-scope) :where([data-block="body-text"][data-block-variant="intro"]) .body-copy-body {
42104
+ font-size: var(--rb-prose-lg-font-size);
42105
+ line-height: var(--rb-prose-lg-line-height);
42106
+ }
42107
+
42108
+ @container rb-site (min-width: 640px) {
42109
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
42110
+ :where(.theme-scope) :where([data-block="body-text"][data-block-variant="intro"]) .body-copy-body {
42111
+ font-size: var(--rb-prose-xl-sm-font-size);
42112
+ line-height: var(--rb-prose-xl-sm-line-height);
42113
+ }
42114
+ }
42115
+ }
42116
+
41546
42117
  /* Variant: Narrow (left-aligned, shorter line length) */
41547
42118
  :where(.theme-scope) :where([data-block="body-text"][data-block-variant="narrow"]) .body-copy-container {
41548
42119
  max-width: 34rem;
@@ -42885,6 +43456,13 @@ var containerResponsiveThemeCss = `/*
42885
43456
  border-radius: var(--rb-block-radius);
42886
43457
  }
42887
43458
 
43459
+ :where(.theme-scope) :where([data-block="testimonials"]) .rb-testimonial-card.rb-card-treatment-accent-quote {
43460
+ border: 0;
43461
+ border-left: 5px solid rgb(var(--tb-secondary));
43462
+ border-radius: 0 calc(var(--rb-block-radius) * 3) 0 0;
43463
+ color: rgb(var(--tb-primaryForeground));
43464
+ }
43465
+
42888
43466
  :where(.theme-scope) :where([data-block="testimonials"]) .rb-testimonial-quote {
42889
43467
  font-size: var(--rb-testimonial-quote-size);
42890
43468
  line-height: 1;
@@ -42893,6 +43471,12 @@ var containerResponsiveThemeCss = `/*
42893
43471
  color: rgb(var(--tb-primary));
42894
43472
  }
42895
43473
 
43474
+ :where(.theme-scope) :where([data-block="testimonials"]) .rb-card-treatment-accent-quote .rb-testimonial-quote {
43475
+ color: rgb(var(--tb-secondary));
43476
+ font-size: calc(var(--rb-testimonial-quote-size) * 1.25);
43477
+ opacity: 1;
43478
+ }
43479
+
42896
43480
 
42897
43481
  /* Testimonials carousel tweaks: arrow styling + gutters + equal-height cards */
42898
43482
  :where(.theme-scope) :where([data-block="testimonials"]) .rb-testimonials-carousel.carousel-root .carousel-nav-btn {
@@ -47248,7 +47832,7 @@ var ENDPOINT_DEFINITIONS = {
47248
47832
  method: "GET",
47249
47833
  tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
47250
47834
  auth: "user",
47251
- responseKind: "text"
47835
+ responseKind: "blob"
47252
47836
  },
47253
47837
  getNewsletterSubscriber: {
47254
47838
  path: "/sites/{siteId}/newsletter/subscribers/{subscriberId}",
@@ -47579,12 +48163,7 @@ var ENDPOINT_DEFINITIONS = {
47579
48163
  ],
47580
48164
  auth: "user",
47581
48165
  responseKind: "json",
47582
- errors: [
47583
- "validation:invalid_input",
47584
- "resource:not_found",
47585
- "resource:conflict",
47586
- "server:internal_error"
47587
- ]
48166
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
47588
48167
  },
47589
48168
  unpublishTeamMemberProfile: {
47590
48169
  path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/unpublish",
@@ -47837,6 +48416,13 @@ var ENDPOINT_DEFINITIONS = {
47837
48416
  auth: "user",
47838
48417
  responseKind: "json"
47839
48418
  },
48419
+ exportBookingAppointmentsCsv: {
48420
+ path: "/sites/{siteId}/bookings/appointments/export.csv",
48421
+ method: "GET",
48422
+ auth: "user",
48423
+ errors: [],
48424
+ responseKind: "blob"
48425
+ },
47840
48426
  createAppointment: {
47841
48427
  path: "/sites/{siteId}/bookings/appointments",
47842
48428
  method: "POST",
@@ -47964,6 +48550,13 @@ var ENDPOINT_DEFINITIONS = {
47964
48550
  auth: "user",
47965
48551
  responseKind: "json"
47966
48552
  },
48553
+ exportCourseEnrollmentsCsv: {
48554
+ path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/export.csv",
48555
+ method: "GET",
48556
+ auth: "user",
48557
+ errors: [],
48558
+ responseKind: "blob"
48559
+ },
47967
48560
  listCourseWaitlist: {
47968
48561
  path: "/sites/{siteId}/bookings/courses/{courseId}/waitlist",
47969
48562
  method: "GET",
@@ -48722,6 +49315,63 @@ var ENDPOINT_DEFINITIONS = {
48722
49315
  auth: "user",
48723
49316
  responseKind: "json"
48724
49317
  },
49318
+ updateRegisteredDomainContact: {
49319
+ path: "/domains/{domainId}/registrar/contact",
49320
+ method: "POST",
49321
+ errors: [
49322
+ "validation:invalid_input",
49323
+ "resource:not_found",
49324
+ "auth:forbidden",
49325
+ "external:service_error",
49326
+ "external:registrar_orphaned_contact_profile",
49327
+ "server:internal_error"
49328
+ ],
49329
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
49330
+ auth: "user",
49331
+ responseKind: "json"
49332
+ },
49333
+ setRegisteredDomainPrivacy: {
49334
+ path: "/domains/{domainId}/registrar/privacy",
49335
+ method: "POST",
49336
+ errors: [
49337
+ "validation:invalid_input",
49338
+ "resource:not_found",
49339
+ "auth:forbidden",
49340
+ "external:service_error",
49341
+ "server:internal_error"
49342
+ ],
49343
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
49344
+ auth: "user",
49345
+ responseKind: "json"
49346
+ },
49347
+ setRegisteredDomainAutoRenew: {
49348
+ path: "/domains/{domainId}/registrar/auto-renew",
49349
+ method: "POST",
49350
+ errors: [
49351
+ "validation:invalid_input",
49352
+ "resource:not_found",
49353
+ "auth:forbidden",
49354
+ "external:service_error",
49355
+ "server:internal_error"
49356
+ ],
49357
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
49358
+ auth: "user",
49359
+ responseKind: "json"
49360
+ },
49361
+ getRegisteredDomainRenewalPosture: {
49362
+ path: "/domains/{domainId}/registrar/renewal",
49363
+ method: "GET",
49364
+ errors: [
49365
+ "validation:invalid_input",
49366
+ "resource:not_found",
49367
+ "auth:forbidden",
49368
+ "external:service_error",
49369
+ "server:internal_error"
49370
+ ],
49371
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
49372
+ auth: "user",
49373
+ responseKind: "json"
49374
+ },
48725
49375
  retryDomainVercel: {
48726
49376
  path: "/domains/{domainId}/vercel",
48727
49377
  method: "POST",
@@ -49269,6 +49919,14 @@ var ENDPOINT_DEFINITIONS = {
49269
49919
  auth: "user",
49270
49920
  responseKind: "json"
49271
49921
  },
49922
+ exportSeoPagesCsv: {
49923
+ path: "/sites/{siteId}/seo/pages",
49924
+ method: "GET",
49925
+ tags: ["site-{siteId}", "seo-pages-{siteId}"],
49926
+ auth: "user",
49927
+ responseKind: "blob",
49928
+ errors: []
49929
+ },
49272
49930
  getSeoQueries: {
49273
49931
  path: "/sites/{siteId}/seo/queries",
49274
49932
  method: "GET",
@@ -49277,6 +49935,14 @@ var ENDPOINT_DEFINITIONS = {
49277
49935
  auth: "user",
49278
49936
  responseKind: "json"
49279
49937
  },
49938
+ exportSeoQueriesCsv: {
49939
+ path: "/sites/{siteId}/seo/queries",
49940
+ method: "GET",
49941
+ tags: ["site-{siteId}", "seo-queries-{siteId}"],
49942
+ auth: "user",
49943
+ responseKind: "blob",
49944
+ errors: []
49945
+ },
49280
49946
  getPerformanceOverview: {
49281
49947
  path: "/sites/{siteId}/performance/overview",
49282
49948
  method: "GET",
@@ -49325,7 +49991,12 @@ var ENDPOINT_DEFINITIONS = {
49325
49991
  path: "/media/{assetId}/canonical-crop",
49326
49992
  method: "POST",
49327
49993
  tags: ["media", "media-{assetId}"],
49328
- errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"],
49994
+ errors: [
49995
+ "validation:invalid_input",
49996
+ "resource:not_found",
49997
+ "resource:conflict",
49998
+ "server:internal_error"
49999
+ ],
49329
50000
  auth: "user",
49330
50001
  responseKind: "json"
49331
50002
  },
@@ -49657,7 +50328,7 @@ var ENDPOINT_DEFINITIONS = {
49657
50328
  method: "GET",
49658
50329
  tags: [TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug],
49659
50330
  auth: "user",
49660
- responseKind: "text"
50331
+ responseKind: "blob"
49661
50332
  },
49662
50333
  // Public submit
49663
50334
  submitForm: {
@@ -50540,6 +51211,14 @@ var ENDPOINT_DEFINITIONS = {
50540
51211
  auth: "user",
50541
51212
  responseKind: "json"
50542
51213
  },
51214
+ exportEventSeriesAttendeesCsv: {
51215
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/attendees/export.csv",
51216
+ method: "GET",
51217
+ tags: ["site-{siteId}", "event-series-{seriesId}"],
51218
+ auth: "user",
51219
+ errors: [],
51220
+ responseKind: "blob"
51221
+ },
50543
51222
  listEventSeriesWaitlist: {
50544
51223
  path: "/sites/{siteId}/bookings/event-series/{seriesId}/waitlist",
50545
51224
  method: "GET",
@@ -51103,6 +51782,14 @@ var ENDPOINT_DEFINITIONS = {
51103
51782
  auth: "user",
51104
51783
  responseKind: "json"
51105
51784
  },
51785
+ exportBookingCustomersCsv: {
51786
+ path: "/sites/{siteId}/bookings/customers/export.csv",
51787
+ method: "GET",
51788
+ tags: ["site-{siteId}", "customers-{siteId}"],
51789
+ auth: "user",
51790
+ errors: [],
51791
+ responseKind: "blob"
51792
+ },
51106
51793
  createBookingCustomer: {
51107
51794
  path: "/sites/{siteId}/bookings/customers",
51108
51795
  method: "POST",
@@ -51130,6 +51817,21 @@ var ENDPOINT_DEFINITIONS = {
51130
51817
  "server:internal_error"
51131
51818
  ]
51132
51819
  },
51820
+ rectifyBookingParticipantIdentity: {
51821
+ path: "/sites/{siteId}/bookings/participants/{participantId}/identity",
51822
+ method: "PATCH",
51823
+ tags: ["site-{siteId}", "customers-{siteId}"],
51824
+ auth: "user",
51825
+ responseKind: "json",
51826
+ errors: [
51827
+ "validation:invalid_input",
51828
+ "auth:forbidden",
51829
+ "resource:not_found",
51830
+ "resource:already_exists",
51831
+ "resource:conflict",
51832
+ "server:internal_error"
51833
+ ]
51834
+ },
51133
51835
  listCustomerPasses: {
51134
51836
  path: "/sites/{siteId}/bookings/customers/{customerId}/passes",
51135
51837
  method: "GET",
@@ -51264,13 +51966,46 @@ var ENDPOINT_DEFINITIONS = {
51264
51966
  auth: "user",
51265
51967
  responseKind: "json"
51266
51968
  },
51969
+ exportMoneyPaymentsCsv: {
51970
+ path: "/sites/{siteId}/bookings/money/payments/export.csv",
51971
+ method: "GET",
51972
+ tags: ["site-{siteId}", "bookings", "money-payments-{siteId}"],
51973
+ errors: [],
51974
+ auth: "user",
51975
+ responseKind: "blob"
51976
+ },
51977
+ exportMoneyBreakdownsCsv: {
51978
+ path: "/sites/{siteId}/bookings/money/report/breakdowns/export.csv",
51979
+ method: "GET",
51980
+ tags: ["site-{siteId}", "bookings", "money-report-{siteId}"],
51981
+ errors: [],
51982
+ auth: "user",
51983
+ responseKind: "blob"
51984
+ },
51985
+ exportMoneyTimeSeriesCsv: {
51986
+ path: "/sites/{siteId}/bookings/money/report/time-series/export.csv",
51987
+ method: "GET",
51988
+ tags: ["site-{siteId}", "bookings", "money-report-{siteId}"],
51989
+ errors: [],
51990
+ auth: "user",
51991
+ responseKind: "blob"
51992
+ },
51267
51993
  listBookingActivity: {
51268
51994
  path: "/sites/{siteId}/bookings/activity",
51269
51995
  method: "GET",
51270
51996
  tags: ["site-{siteId}", "bookings", "activity-{siteId}"],
51997
+ errors: [],
51271
51998
  auth: "user",
51272
51999
  responseKind: "json"
51273
52000
  },
52001
+ exportBookingActivityCsv: {
52002
+ path: "/sites/{siteId}/bookings/activity/export.csv",
52003
+ method: "GET",
52004
+ tags: ["site-{siteId}", "bookings", "activity-{siteId}"],
52005
+ errors: [],
52006
+ auth: "user",
52007
+ responseKind: "blob"
52008
+ },
51274
52009
  // Site logs
51275
52010
  listSiteActivityLogs: {
51276
52011
  path: "/sites/{siteId}/logs/activity",
@@ -51422,13 +52157,6 @@ var ENDPOINT_DEFINITIONS = {
51422
52157
  auth: "user",
51423
52158
  responseKind: "blob"
51424
52159
  },
51425
- exportSeoCsv: {
51426
- path: "/sites/{siteId}/seo/export",
51427
- method: "GET",
51428
- tags: ["site-{siteId}", "seo"],
51429
- auth: "user",
51430
- responseKind: "blob"
51431
- },
51432
52160
  // Admin site cost (for admin panel)
51433
52161
  adminSiteCost: {
51434
52162
  path: "/admin/sites/{siteId}/cost",
@@ -52730,6 +53458,8 @@ var CUSTOMER_MEMBERSHIP_PAYMENT_REFUND_FAILED_CODES = [
52730
53458
  var STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
52731
53459
  "missing_amount",
52732
53460
  "amount_exceeds_remaining",
53461
+ "credit_refunds_disabled",
53462
+ "missing_credit_customer",
52733
53463
  "deposit_refund_override_required",
52734
53464
  "refund_revoke_requires_full_line_refund",
52735
53465
  "unified_order_link_required"