@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
@@ -988,12 +988,29 @@ function defineFrameCapability(capability) {
988
988
  function defineBlockDesignCapability(capability) {
989
989
  return {
990
990
  ...capability,
991
- kind: "designed"
991
+ kind: "designed",
992
+ sectionHeights: capability.sectionHeights ?? ["default"],
993
+ imageSurfaceTreatments: capability.imageSurfaceTreatments ?? ["none"],
994
+ imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
995
+ testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"]
992
996
  };
993
997
  }
994
998
 
995
999
  // ../theme-core/src/site-styles/appearancePresets.ts
1000
+ function assertValidOptionGroups(preset) {
1001
+ preset.optionGroups?.forEach((group) => {
1002
+ const selectedOption = group.options.find(
1003
+ (option) => option.id === group.selectedOptionId
1004
+ );
1005
+ if (!selectedOption) {
1006
+ throw new Error(
1007
+ `Appearance preset "${preset.id}" option group "${group.id}" selects missing option "${group.selectedOptionId}".`
1008
+ );
1009
+ }
1010
+ });
1011
+ }
996
1012
  function defineBlockAppearancePreset(preset) {
1013
+ assertValidOptionGroups(preset);
997
1014
  return preset;
998
1015
  }
999
1016
  function defineSiteChromeAppearancePreset(preset) {
@@ -1006,13 +1023,122 @@ var appearancePresets = [
1006
1023
  target: "hero",
1007
1024
  label: "Immersive image hero",
1008
1025
  blockKinds: ["block.hero"],
1026
+ constraints: {
1027
+ layoutFamilies: ["centered", "compact"]
1028
+ },
1009
1029
  design: {
1010
1030
  sectionSurface: "hero-image",
1011
1031
  contentFrame: plainFrame,
1012
1032
  itemSurface: "none",
1013
1033
  transitionAfter: "soft-fade-short",
1014
1034
  emphasis: "high",
1015
- heroLegibility: "scrim-gradient"
1035
+ sectionHeight: "hero",
1036
+ imageSurfaceTreatment: { kind: "neutral-wash" }
1037
+ }
1038
+ }),
1039
+ defineBlockAppearancePreset({
1040
+ kind: "block-design",
1041
+ id: "hero-brand-scrim",
1042
+ target: "hero",
1043
+ label: "Brand scrim image hero",
1044
+ blockKinds: ["block.hero"],
1045
+ constraints: {
1046
+ layoutFamilies: ["centered", "compact"]
1047
+ },
1048
+ optionGroups: [
1049
+ {
1050
+ id: "image-surface-treatment",
1051
+ label: "Treatment",
1052
+ selectedOptionId: "brand-scrim-primary",
1053
+ options: [
1054
+ {
1055
+ id: "brand-scrim-primary",
1056
+ label: "Brand scrim",
1057
+ designPatch: {
1058
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
1059
+ }
1060
+ },
1061
+ {
1062
+ id: "neutral-scrim",
1063
+ label: "Neutral scrim",
1064
+ designPatch: {
1065
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
1066
+ }
1067
+ }
1068
+ ]
1069
+ }
1070
+ ],
1071
+ layoutPatches: [
1072
+ {
1073
+ constraints: {
1074
+ layoutVariantKeys: ["micro"]
1075
+ },
1076
+ designPatch: {
1077
+ sectionHeight: "banner"
1078
+ }
1079
+ }
1080
+ ],
1081
+ design: {
1082
+ sectionSurface: "hero-image",
1083
+ contentFrame: plainFrame,
1084
+ itemSurface: "none",
1085
+ transitionAfter: "soft-fade-short",
1086
+ emphasis: "high",
1087
+ sectionHeight: "immersive",
1088
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
1089
+ }
1090
+ }),
1091
+ defineBlockAppearancePreset({
1092
+ kind: "block-design",
1093
+ id: "hero-brand-scrim-fixed-frame",
1094
+ target: "hero",
1095
+ label: "Fixed-frame brand scrim hero",
1096
+ blockKinds: ["block.hero"],
1097
+ constraints: {
1098
+ layoutFamilies: ["centered", "compact"]
1099
+ },
1100
+ optionGroups: [
1101
+ {
1102
+ id: "image-surface-treatment",
1103
+ label: "Treatment",
1104
+ selectedOptionId: "brand-scrim-primary",
1105
+ options: [
1106
+ {
1107
+ id: "brand-scrim-primary",
1108
+ label: "Brand scrim",
1109
+ designPatch: {
1110
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
1111
+ }
1112
+ },
1113
+ {
1114
+ id: "neutral-scrim",
1115
+ label: "Neutral scrim",
1116
+ designPatch: {
1117
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
1118
+ }
1119
+ }
1120
+ ]
1121
+ }
1122
+ ],
1123
+ layoutPatches: [
1124
+ {
1125
+ constraints: {
1126
+ layoutVariantKeys: ["micro"]
1127
+ },
1128
+ designPatch: {
1129
+ sectionHeight: "banner"
1130
+ }
1131
+ }
1132
+ ],
1133
+ design: {
1134
+ sectionSurface: "hero-image",
1135
+ contentFrame: plainFrame,
1136
+ itemSurface: "none",
1137
+ transitionAfter: "soft-fade-short",
1138
+ emphasis: "high",
1139
+ sectionHeight: "immersive",
1140
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
1141
+ imageSurfaceMotion: "fixed-frame"
1016
1142
  }
1017
1143
  }),
1018
1144
  defineBlockAppearancePreset({
@@ -1029,17 +1155,26 @@ var appearancePresets = [
1029
1155
  emphasis: "high"
1030
1156
  }
1031
1157
  }),
1158
+ defineBlockAppearancePreset({
1159
+ kind: "block-design",
1160
+ id: "body-text-editorial-intro",
1161
+ target: "body-text",
1162
+ label: "Editorial intro copy",
1163
+ blockKinds: ["block.body-text"],
1164
+ design: {
1165
+ sectionSurface: "base",
1166
+ contentFrame: plainFrame,
1167
+ itemSurface: "none",
1168
+ transitionAfter: "soft-fade-short",
1169
+ emphasis: "high"
1170
+ }
1171
+ }),
1032
1172
  defineBlockAppearancePreset({
1033
1173
  kind: "block-design",
1034
1174
  id: "offerings-calm-list",
1035
1175
  target: "offerings",
1036
1176
  label: "Calm offerings list",
1037
- blockKinds: [
1038
- "block.event-listing",
1039
- "block.event-calendar",
1040
- "block.event-spotlight",
1041
- "block.product-list"
1042
- ],
1177
+ blockKinds: ["block.event-listing", "block.event-calendar", "block.event-spotlight", "block.product-list"],
1043
1178
  design: {
1044
1179
  sectionSurface: "muted-band",
1045
1180
  contentFrame: plainFrame,
@@ -1118,6 +1253,35 @@ var appearancePresets = [
1118
1253
  emphasis: "high"
1119
1254
  }
1120
1255
  }),
1256
+ defineBlockAppearancePreset({
1257
+ kind: "block-design",
1258
+ id: "testimonials-dark-proof",
1259
+ target: "testimonials",
1260
+ label: "Dark proof panel",
1261
+ blockKinds: ["block.testimonials"],
1262
+ design: {
1263
+ sectionSurface: "accent-band",
1264
+ contentFrame: panelFrame("raised"),
1265
+ itemSurface: "raised",
1266
+ transitionAfter: "soft-fade-short",
1267
+ emphasis: "high"
1268
+ }
1269
+ }),
1270
+ defineBlockAppearancePreset({
1271
+ kind: "block-design",
1272
+ id: "testimonials-accent-quote-proof",
1273
+ target: "testimonials",
1274
+ label: "Accent quote proof",
1275
+ blockKinds: ["block.testimonials"],
1276
+ design: {
1277
+ sectionSurface: "accent-band",
1278
+ contentFrame: plainFrame,
1279
+ itemSurface: "raised",
1280
+ transitionAfter: "soft-fade-short",
1281
+ emphasis: "high",
1282
+ testimonialCardTreatment: "accent-quote"
1283
+ }
1284
+ }),
1121
1285
  defineBlockAppearancePreset({
1122
1286
  kind: "block-design",
1123
1287
  id: "faq-contained-help",
@@ -1146,6 +1310,20 @@ var appearancePresets = [
1146
1310
  emphasis: "medium"
1147
1311
  }
1148
1312
  }),
1313
+ defineBlockAppearancePreset({
1314
+ kind: "block-design",
1315
+ id: "contact-form-dark-card",
1316
+ target: "contact-form",
1317
+ label: "Dark form card",
1318
+ blockKinds: ["block.form"],
1319
+ design: {
1320
+ sectionSurface: "accent-band",
1321
+ contentFrame: panelFrame("raised"),
1322
+ itemSurface: "none",
1323
+ transitionAfter: "soft-fade-short",
1324
+ emphasis: "high"
1325
+ }
1326
+ }),
1149
1327
  defineBlockAppearancePreset({
1150
1328
  kind: "block-design",
1151
1329
  id: "cta-accent-band",
@@ -1165,9 +1343,33 @@ var appearancePresets = [
1165
1343
  id: "header-clean-base",
1166
1344
  target: "site-header",
1167
1345
  label: "Clean base header",
1168
- chrome: {
1169
- surface: "base",
1170
- emphasis: "medium"
1346
+ header: {
1347
+ surface: {
1348
+ kind: "neutral-solid",
1349
+ token: "surface",
1350
+ textColorToken: "text"
1351
+ },
1352
+ navTreatment: "minimal",
1353
+ dropdownTreatment: "surface",
1354
+ ctaTreatment: "default",
1355
+ behavior: "default"
1356
+ }
1357
+ }),
1358
+ defineSiteChromeAppearancePreset({
1359
+ kind: "site-chrome",
1360
+ id: "site-header-brand-solid-inverted-cta",
1361
+ target: "site-header",
1362
+ label: "Brand solid header with inverted CTA",
1363
+ header: {
1364
+ surface: {
1365
+ kind: "brand-solid",
1366
+ token: "primary",
1367
+ textColorToken: "primaryForeground"
1368
+ },
1369
+ navTreatment: "uppercase-underline",
1370
+ dropdownTreatment: "matched-solid",
1371
+ ctaTreatment: "inverted",
1372
+ behavior: "sticky-shrink"
1171
1373
  }
1172
1374
  }),
1173
1375
  defineSiteChromeAppearancePreset({
@@ -1175,10 +1377,31 @@ var appearancePresets = [
1175
1377
  id: "footer-muted-grounding",
1176
1378
  target: "site-footer",
1177
1379
  label: "Muted grounding footer",
1178
- chrome: {
1380
+ footer: {
1381
+ kind: "grounding",
1179
1382
  surface: "muted-band",
1180
1383
  emphasis: "low"
1181
1384
  }
1385
+ }),
1386
+ defineSiteChromeAppearancePreset({
1387
+ kind: "site-chrome",
1388
+ id: "site-footer-brand-two-band",
1389
+ target: "site-footer",
1390
+ label: "Two-band brand footer",
1391
+ footer: {
1392
+ kind: "brand-two-band",
1393
+ surface: {
1394
+ token: "primary",
1395
+ shade: "800",
1396
+ textColorToken: "primaryForeground"
1397
+ },
1398
+ bottomBand: {
1399
+ token: "primary",
1400
+ shade: "900",
1401
+ textColorToken: "primaryForeground"
1402
+ },
1403
+ emphasis: "high"
1404
+ }
1182
1405
  })
1183
1406
  ];
1184
1407
 
@@ -1838,6 +2061,111 @@ var pebble = defineButtonPersonality({
1838
2061
  }
1839
2062
  });
1840
2063
 
2064
+ // ../theme-core/src/buttons/personalities/showtime-pill.ts
2065
+ var showtimePill = defineButtonPersonality({
2066
+ id: "showtime-pill",
2067
+ name: "Showtime Pill",
2068
+ description: "Bold pill buttons with uppercase labels, generous padding, and a playful pop.",
2069
+ tags: { tone: "bold", energy: "vibrant", motion: "expressive", era: "modern" },
2070
+ buttonSystem: {
2071
+ global: {
2072
+ cornerStyle: "pill",
2073
+ shadow: "low",
2074
+ textTransform: "uppercase",
2075
+ fontWeight: 700,
2076
+ borderWidth: 2,
2077
+ hoverTransform: "lift",
2078
+ hoverColor: "darken",
2079
+ typography: "body",
2080
+ paddingPreset: "spacious",
2081
+ italic: false
2082
+ },
2083
+ sizes: {
2084
+ sm: { padding: "0.625rem 1.25rem", fontSize: "0.875rem" },
2085
+ md: { padding: "0.875rem 1.75rem", fontSize: "1rem" },
2086
+ lg: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" },
2087
+ xl: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" }
2088
+ },
2089
+ variants: [
2090
+ {
2091
+ id: "primary",
2092
+ name: "Primary",
2093
+ enabled: true,
2094
+ priority: 1,
2095
+ background: { type: "solid", colorToken: "primary" },
2096
+ textColorToken: "background",
2097
+ borderRadius: "rounded-full",
2098
+ effects: {
2099
+ hover: [{ effectId: "pop" }]
2100
+ }
2101
+ },
2102
+ {
2103
+ id: "secondary",
2104
+ name: "Secondary",
2105
+ enabled: true,
2106
+ priority: 2,
2107
+ background: { type: "transparent" },
2108
+ textColorToken: "primary",
2109
+ borderRadius: "rounded-full",
2110
+ border: { widthClass: "border-2", colorToken: "primary" },
2111
+ effects: {
2112
+ hover: [{ effectId: "pop" }]
2113
+ }
2114
+ },
2115
+ {
2116
+ id: "hero",
2117
+ name: "Hero",
2118
+ enabled: true,
2119
+ priority: 1,
2120
+ background: { type: "solid", colorToken: "secondary" },
2121
+ textColorToken: "primary",
2122
+ borderRadius: "rounded-full",
2123
+ effects: {
2124
+ hover: [{ effectId: "pop" }]
2125
+ }
2126
+ },
2127
+ {
2128
+ id: "header",
2129
+ name: "Header",
2130
+ enabled: true,
2131
+ priority: 2,
2132
+ background: { type: "solid", colorToken: "background" },
2133
+ textColorToken: "primary",
2134
+ borderRadius: "rounded-full",
2135
+ border: { widthClass: "border-2", colorToken: "primary" },
2136
+ effects: {
2137
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
2138
+ }
2139
+ },
2140
+ {
2141
+ id: "outline",
2142
+ name: "Outline",
2143
+ enabled: true,
2144
+ priority: 3,
2145
+ background: { type: "transparent" },
2146
+ textColorToken: "primary",
2147
+ borderRadius: "rounded-full",
2148
+ border: { widthClass: "border-2", colorToken: "primary" },
2149
+ effects: {
2150
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
2151
+ }
2152
+ },
2153
+ {
2154
+ id: "ghost",
2155
+ name: "Ghost",
2156
+ enabled: true,
2157
+ priority: 3,
2158
+ background: { type: "transparent" },
2159
+ textColorToken: "primary",
2160
+ borderRadius: "rounded-full",
2161
+ effects: {
2162
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
2163
+ }
2164
+ }
2165
+ ]
2166
+ }
2167
+ });
2168
+
1841
2169
  // ../theme-core/src/buttons/personalities/soft-pill.ts
1842
2170
  var softPill = defineButtonPersonality({
1843
2171
  id: "soft-pill",
@@ -1918,7 +2246,8 @@ var buttonPersonalities = [
1918
2246
  editorialLink,
1919
2247
  pebble,
1920
2248
  inkStamp,
1921
- brushedWash
2249
+ brushedWash,
2250
+ showtimePill
1922
2251
  ];
1923
2252
  var personalitiesById = new Map(
1924
2253
  buttonPersonalities.map((p) => [p.id, p])
@@ -2449,14 +2778,7 @@ var proseLinkStyleSchema = z16.object({
2449
2778
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
2450
2779
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
2451
2780
  });
2452
- var semanticSpacingSchema = z16.enum([
2453
- "none",
2454
- "compact",
2455
- "cozy",
2456
- "medium",
2457
- "comfortable",
2458
- "spacious"
2459
- ]);
2781
+ var semanticSpacingSchema = z16.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
2460
2782
  var boxRoundedSchema = z16.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
2461
2783
  var boxBackgroundOverlaySchema = z16.object({
2462
2784
  type: z16.enum(["none", "color", "gradient"]).nullable().optional(),
@@ -2473,6 +2795,7 @@ var boxBackgroundSchema = z16.object({
2473
2795
  scale: z16.string().nullable().optional(),
2474
2796
  position: z16.string().nullable().optional(),
2475
2797
  opacity: z16.number().min(0).max(1).nullable().optional(),
2798
+ motion: z16.enum(["static", "fixed-frame"]).nullable().optional(),
2476
2799
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
2477
2800
  textColor: z16.string().nullable().optional(),
2478
2801
  headingColor: z16.string().nullable().optional()
@@ -2480,7 +2803,7 @@ var boxBackgroundSchema = z16.object({
2480
2803
  var sectionStylesOverrideSchema = z16.object({
2481
2804
  background: boxBackgroundSchema.nullable().optional(),
2482
2805
  spacing: semanticSpacingSchema.nullable().optional(),
2483
- minHeight: z16.enum(["none", "hero", "immersive"]).nullable().optional()
2806
+ minHeight: z16.enum(["none", "banner", "hero", "immersive"]).nullable().optional()
2484
2807
  });
2485
2808
  var containerStylesOverrideSchema = z16.object({
2486
2809
  background: boxBackgroundSchema.nullable().optional(),
@@ -2499,7 +2822,8 @@ var cardStylesOverrideSchema = z16.object({
2499
2822
  border: cardBorderOverrideSchema.nullable().optional(),
2500
2823
  spacing: semanticSpacingSchema.nullable().optional(),
2501
2824
  raised: z16.boolean().nullable().optional(),
2502
- rounded: boxRoundedSchema.nullable().optional()
2825
+ rounded: boxRoundedSchema.nullable().optional(),
2826
+ treatment: z16.enum(["accent-quote"]).nullable().optional()
2503
2827
  });
2504
2828
  var blockStyleOverridesSchema = z16.object({
2505
2829
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
@@ -2574,15 +2898,7 @@ var inputStyle = z16.object({
2574
2898
  });
2575
2899
  var headerVariant = z16.enum(["classic", "centered", "transparent", "floating", "editorial"]);
2576
2900
  var headerPositioning = z16.enum(["static", "sticky", "fixed"]);
2577
- var headerNavStyle = z16.enum([
2578
- "minimal",
2579
- "underline",
2580
- "underline-grow",
2581
- "capsule",
2582
- "scale",
2583
- "frosted",
2584
- "solid"
2585
- ]);
2901
+ var headerNavStyle = z16.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
2586
2902
  var navFontWeight = z16.enum(["regular", "medium", "semibold", "bold"]);
2587
2903
  var headerMaxWidth = z16.enum(["container", "full"]);
2588
2904
  var headerContainerSchema = z16.object({
@@ -2636,6 +2952,7 @@ var dropdownStyleSchema = z16.object({
2636
2952
  // optional = no override (browser default)
2637
2953
  }).optional();
2638
2954
  var headerCtaGapSchema = z16.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
2955
+ var headerCtaTreatmentSchema = z16.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
2639
2956
  var navContainerSchema = z16.object({
2640
2957
  type: z16.enum(["none", "pill", "glass"]).default("none"),
2641
2958
  tint: z16.string().nullable().optional(),
@@ -2654,7 +2971,10 @@ var headerSchema = z16.object({
2654
2971
  shrinkOnScroll: z16.boolean(),
2655
2972
  maxWidth: headerMaxWidth,
2656
2973
  logoOverride: mediaSchema.nullable().optional(),
2657
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
2974
+ background: headerBackgroundSchema.default({
2975
+ type: "color",
2976
+ color: "surface"
2977
+ }),
2658
2978
  textColor: z16.string().nullable().optional(),
2659
2979
  // Site title and general header text
2660
2980
  navStyle: headerNavStyle,
@@ -2674,6 +2994,13 @@ var headerSchema = z16.object({
2674
2994
  navLinkStyle: navLinkStyleSchema.optional(),
2675
2995
  // CTA button spacing (desktop left margin)
2676
2996
  ctaGap: headerCtaGapSchema.optional(),
2997
+ // Semantic CTA treatment for header/nav CTA buttons. The Theme V2 compiler
2998
+ // materializes this to ctaVariant against the active button personality.
2999
+ ctaTreatment: headerCtaTreatmentSchema.optional(),
3000
+ // Optional theme-level CTA variant for header/nav CTA buttons.
3001
+ // Internal runtime bridge for the block renderer; prefer ctaTreatment in
3002
+ // authored Theme V2 concepts.
3003
+ ctaVariant: z16.string().min(1).optional(),
2677
3004
  // Dropdown menu styling (nav dropdowns and mobile drawer)
2678
3005
  dropdownStyle: dropdownStyleSchema
2679
3006
  });
@@ -2730,7 +3057,10 @@ var footerSchema = z16.object({
2730
3057
  variant: footerVariant,
2731
3058
  maxWidth: footerMaxWidth,
2732
3059
  showLogoText: z16.boolean().optional(),
2733
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
3060
+ background: headerBackgroundSchema.default({
3061
+ type: "color",
3062
+ color: "surface"
3063
+ }),
2734
3064
  // Footer nav styling (independent from header)
2735
3065
  navStyle: headerNavStyle.default("minimal"),
2736
3066
  navColor: z16.string().nullable().optional(),
@@ -2752,17 +3082,7 @@ var layoutSchema = z16.object({
2752
3082
  desktop: containerPaddingPresetSchema.optional()
2753
3083
  }).optional()
2754
3084
  }).optional();
2755
- var heroTypographySizeSchema = z16.enum([
2756
- "sm",
2757
- "base",
2758
- "lg",
2759
- "xl",
2760
- "2xl",
2761
- "3xl",
2762
- "4xl",
2763
- "5xl",
2764
- "6xl"
2765
- ]);
3085
+ var heroTypographySizeSchema = z16.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
2766
3086
  var heroTypographyLineHeightSchema = z16.enum(["tight", "snug", "normal", "relaxed"]);
2767
3087
  var heroResponsiveTypographySchema = z16.object({
2768
3088
  headlineSize: heroTypographySizeSchema.optional(),
@@ -2787,6 +3107,13 @@ var heroTypographySchema = z16.object({
2787
3107
  var heroSchema = z16.object({
2788
3108
  typography: heroTypographySchema.optional()
2789
3109
  }).optional();
3110
+ var bodyTextIntroTypographySizeSchema = z16.enum(["default", "editorial"]);
3111
+ var bodyTextSchema = z16.object({
3112
+ intro: z16.object({
3113
+ paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
3114
+ headingSize: bodyTextIntroTypographySizeSchema.optional()
3115
+ }).optional()
3116
+ }).optional();
2790
3117
  var gradientsSchema = z16.object({
2791
3118
  button: z16.string().min(1).nullable().optional(),
2792
3119
  hero: z16.string().min(1).nullable().optional(),
@@ -2808,6 +3135,7 @@ var themeSchema = z16.object({
2808
3135
  gradients: gradientsSchema.optional(),
2809
3136
  layout: layoutSchema,
2810
3137
  hero: heroSchema,
3138
+ bodyText: bodyTextSchema,
2811
3139
  header: headerSchema,
2812
3140
  footer: footerSchema,
2813
3141
  buttons: buttonSystemSchema.optional(),
@@ -2831,10 +3159,7 @@ var themeSchema = z16.object({
2831
3159
  ).optional(),
2832
3160
  // Structured block-kind theme overrides (v1: typography prose-link style only)
2833
3161
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
2834
- blockOverrides: z16.record(
2835
- z16.string(),
2836
- blockThemeOverrideSchema
2837
- ).optional(),
3162
+ blockOverrides: z16.record(z16.string(), blockThemeOverrideSchema).optional(),
2838
3163
  // Structured custom CSS rules
2839
3164
  // Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
2840
3165
  customCssRules: customCssRulesSchema,
@@ -3005,6 +3330,28 @@ var brandLedJewel = definePaletteVariant({
3005
3330
  { name: "border", hex: "#a8a29e" }
3006
3331
  ]
3007
3332
  });
3333
+ var brandLedBurgundyGold = definePaletteVariant({
3334
+ id: "brand-led-burgundy-gold",
3335
+ name: "Brand-led \u2014 Burgundy Gold",
3336
+ description: "Deep burgundy with warm gold accents and soft neutral grounds.",
3337
+ tags: { tone: "bold", energy: "vibrant", era: "modern" },
3338
+ mode: "light",
3339
+ colors: [
3340
+ { name: "primary", hex: "#7c2e38" },
3341
+ { name: "secondary", hex: "#d4af37" },
3342
+ { name: "accent", hex: "#b8e19a" },
3343
+ { name: "success", hex: "#10b981" },
3344
+ { name: "warning", hex: "#f59e0b" },
3345
+ { name: "destructive", hex: "#ef4444" },
3346
+ { name: "background", hex: "#f1dfd0" },
3347
+ { name: "surface", hex: "#f5e6db" },
3348
+ { name: "surfaceAlt", hex: "#f8ece3" },
3349
+ { name: "muted", hex: "#c9b8a8" },
3350
+ { name: "text", hex: "#400000" },
3351
+ { name: "primaryForeground", hex: "#ffffff" },
3352
+ { name: "border", hex: "#c9b8a8" }
3353
+ ]
3354
+ });
3008
3355
 
3009
3356
  // ../theme-core/src/palette/variants/high-contrast.ts
3010
3357
  var highContrastInk = definePaletteVariant({
@@ -3216,6 +3563,7 @@ var paletteVariants = [
3216
3563
  brandLedCool,
3217
3564
  brandLedWarm,
3218
3565
  brandLedJewel,
3566
+ brandLedBurgundyGold,
3219
3567
  // Warm-neutral family
3220
3568
  warmNeutralClay,
3221
3569
  warmNeutralCream,
@@ -3291,7 +3639,8 @@ var curatedSiteStyleIdValues = [
3291
3639
  "site-style:quiet-luxury",
3292
3640
  "site-style:practical-services",
3293
3641
  "site-style:modern-wellness",
3294
- "site-style:bold-launch"
3642
+ "site-style:bold-launch",
3643
+ "site-style:south-west-twerk-school"
3295
3644
  ];
3296
3645
  var quietBudget = {
3297
3646
  accentDensity: "low",
@@ -3346,6 +3695,8 @@ function defineCuratedSiteStyle(input) {
3346
3695
  supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
3347
3696
  supportedTransitions: generatedDesignOptionCatalog.transitions
3348
3697
  },
3698
+ ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
3699
+ recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
3349
3700
  buttonPersonalityChoices: input.buttonPersonalityChoices,
3350
3701
  paletteVariantChoices: input.paletteVariantChoices
3351
3702
  };
@@ -3592,6 +3943,101 @@ var curatedSiteStyles = [
3592
3943
  paletteChoice("brand-led-jewel"),
3593
3944
  paletteChoice("brand-led-warm")
3594
3945
  ]
3946
+ }),
3947
+ defineCuratedSiteStyle({
3948
+ id: "site-style:south-west-twerk-school",
3949
+ name: "South West Twerk School",
3950
+ description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
3951
+ 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.",
3952
+ selectionKeywords: [
3953
+ "dance",
3954
+ "classes",
3955
+ "workshop",
3956
+ "school",
3957
+ "movement",
3958
+ "performance",
3959
+ "community"
3960
+ ],
3961
+ tokenRecipes: {
3962
+ palette: "brand-led",
3963
+ contrast: "maximum",
3964
+ radius: "soft",
3965
+ shadow: "layered",
3966
+ typography: "clean-sans",
3967
+ spacing: "airy",
3968
+ motion: "expressive"
3969
+ },
3970
+ compositionBudget: expressiveBudget,
3971
+ themeOverrides: {
3972
+ typography: {
3973
+ body: {
3974
+ family: "Manrope, system-ui, sans-serif",
3975
+ size: "lg",
3976
+ weight: "regular",
3977
+ lineHeight: "relaxed",
3978
+ letterSpacing: "normal"
3979
+ },
3980
+ headings: {
3981
+ default: {
3982
+ family: '"TAN - PEARL", sans-serif',
3983
+ weight: "bold",
3984
+ lineHeight: "normal",
3985
+ letterSpacing: "tight",
3986
+ colorToken: "primary",
3987
+ italic: null,
3988
+ case: null
3989
+ },
3990
+ h1: {
3991
+ size: "xl",
3992
+ weight: "bold",
3993
+ lineHeight: "normal",
3994
+ letterSpacing: "tight",
3995
+ italic: null
3996
+ },
3997
+ h2: {
3998
+ size: "lg",
3999
+ weight: "bold",
4000
+ lineHeight: "normal",
4001
+ letterSpacing: "normal",
4002
+ italic: null
4003
+ },
4004
+ h3: {
4005
+ size: "md",
4006
+ weight: "bold",
4007
+ lineHeight: "normal",
4008
+ letterSpacing: "normal",
4009
+ italic: null
4010
+ }
4011
+ },
4012
+ scale: "balanced"
4013
+ },
4014
+ bodyText: {
4015
+ intro: {
4016
+ paragraphSize: "editorial",
4017
+ headingSize: "editorial"
4018
+ }
4019
+ }
4020
+ },
4021
+ recommendedAppearancePresetIds: [
4022
+ "site-header-brand-solid-inverted-cta",
4023
+ "site-footer-brand-two-band",
4024
+ "hero-brand-scrim-fixed-frame",
4025
+ "body-text-editorial-intro",
4026
+ "testimonials-accent-quote-proof",
4027
+ "contact-form-dark-card"
4028
+ ],
4029
+ buttonPersonalityChoices: [
4030
+ buttonChoice("showtime-pill"),
4031
+ buttonChoice("confident-chip"),
4032
+ buttonChoice("ink-stamp"),
4033
+ buttonChoice("brushed-wash")
4034
+ ],
4035
+ paletteVariantChoices: [
4036
+ paletteChoice("brand-led-burgundy-gold"),
4037
+ paletteChoice("brand-led-jewel"),
4038
+ paletteChoice("brand-led-warm"),
4039
+ paletteChoice("high-contrast-ink")
4040
+ ]
3595
4041
  })
3596
4042
  ];
3597
4043
  var curatedSiteStylesById = new Map(
@@ -3636,6 +4082,40 @@ var heroLegibilityStrategySchema = z18.enum([
3636
4082
  "scrim-gradient",
3637
4083
  "solid-panel"
3638
4084
  ]);
4085
+ var sectionHeightIntentSchema = z18.enum([
4086
+ "default",
4087
+ "banner",
4088
+ "hero",
4089
+ "immersive"
4090
+ ]);
4091
+ var imageSurfaceTreatmentIntensitySchema = z18.enum(["soft", "balanced", "strong"]);
4092
+ var imageSurfaceMotionSchema = z18.enum(["static", "fixed-frame"]);
4093
+ var imageSurfaceTreatmentSchema = z18.discriminatedUnion("kind", [
4094
+ z18.object({ kind: z18.literal("none") }).strict(),
4095
+ z18.object({
4096
+ kind: z18.literal("brand-scrim"),
4097
+ token: z18.enum(["primary", "secondary", "accent"]),
4098
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
4099
+ }).strict(),
4100
+ z18.object({
4101
+ kind: z18.literal("brand-wash"),
4102
+ token: z18.enum(["primary", "secondary", "accent"]),
4103
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
4104
+ }).strict(),
4105
+ z18.object({
4106
+ kind: z18.literal("neutral-scrim"),
4107
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
4108
+ }).strict(),
4109
+ z18.object({
4110
+ kind: z18.literal("neutral-wash"),
4111
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
4112
+ }).strict(),
4113
+ z18.object({
4114
+ kind: z18.literal("solid-panel"),
4115
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
4116
+ }).strict()
4117
+ ]);
4118
+ var testimonialCardTreatmentSchema = z18.enum(["default", "accent-quote"]);
3639
4119
  function uniqueNonEmpty(values) {
3640
4120
  const uniqueValues = [...new Set(values)];
3641
4121
  const firstValue = uniqueValues[0];
@@ -3674,7 +4154,11 @@ var blockDesignPlanSchema = z18.object({
3674
4154
  itemSurface: z18.enum(userDesignOptionCatalog.itemSurfaces),
3675
4155
  transitionAfter: z18.enum(userDesignOptionCatalog.transitions),
3676
4156
  emphasis: z18.enum(userDesignOptionCatalog.emphases),
3677
- heroLegibility: heroLegibilityStrategySchema.optional()
4157
+ sectionHeight: sectionHeightIntentSchema.optional(),
4158
+ heroLegibility: heroLegibilityStrategySchema.optional(),
4159
+ imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
4160
+ imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
4161
+ testimonialCardTreatment: testimonialCardTreatmentSchema.optional()
3678
4162
  }).strict();
3679
4163
  var styleAuthoritySchema = z18.discriminatedUnion("kind", [
3680
4164
  z18.object({
@@ -5783,23 +6267,6 @@ function styledCard(children, opts, ...mods) {
5783
6267
  );
5784
6268
  }
5785
6269
 
5786
- // ../blocks/src/system/node/fragments/typography.ts
5787
- function mergeClassName(base, extra) {
5788
- return [base, extra ?? ""].filter(Boolean).join(" ");
5789
- }
5790
- function captionText(opts, ...mods) {
5791
- const {
5792
- as: asProp,
5793
- className: classNameProp,
5794
- color,
5795
- ...rest
5796
- } = opts ?? {};
5797
- const as = asProp ?? "p";
5798
- const className = mergeClassName("rb-caption", classNameProp);
5799
- const style = textColorStyle(color ?? "mutedText");
5800
- return text({ ...rest, as, className, style }, ...mods);
5801
- }
5802
-
5803
6270
  // ../blocks/src/system/node/fragments/feedbackCallout.ts
5804
6271
  function joinClasses(...parts) {
5805
6272
  return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
@@ -6698,18 +7165,17 @@ function buildAttributionNodes() {
6698
7165
  const name = text(
6699
7166
  {
6700
7167
  as: "strong",
6701
- className: "rb-block",
6702
- style: textColorStyle("text")
7168
+ className: "rb-block"
6703
7169
  },
6704
7170
  bind("testimonial.content.name", { fallback: "Anonymous" })
6705
7171
  );
6706
- const jobTitle = captionText(
6707
- null,
7172
+ const jobTitle = text(
7173
+ { as: "p", className: "rb-caption" },
6708
7174
  when("testimonial.content.jobTitle"),
6709
7175
  bind("testimonial.content.jobTitle")
6710
7176
  );
6711
- const company = captionText(
6712
- null,
7177
+ const company = text(
7178
+ { as: "p", className: "rb-caption" },
6713
7179
  when("testimonial.content.company"),
6714
7180
  bind("testimonial.content.company")
6715
7181
  );
@@ -6743,8 +7209,7 @@ function buildTestimonialCard(...mods) {
6743
7209
  );
6744
7210
  const body = richText(
6745
7211
  {
6746
- className: "rb-prose rb-max-w-none",
6747
- style: textColorStyle("text")
7212
+ className: "rb-prose rb-max-w-none"
6748
7213
  },
6749
7214
  bind("testimonial.content.body"),
6750
7215
  when("testimonial.content.body")
@@ -8374,6 +8839,7 @@ function heroContentCard(children, gap) {
8374
8839
  return styledContainer({
8375
8840
  bindFrom: "_contentCardStyles",
8376
8841
  constrainWidth: false,
8842
+ baseClassName: "rb-relative rb-isolate",
8377
8843
  rootType: "stack",
8378
8844
  rootProps: {
8379
8845
  gap
@@ -8404,6 +8870,7 @@ function heroContentWrapper(children, gap, fallbackClassName) {
8404
8870
  function heroContainerStack(children, gap) {
8405
8871
  return styledContainer({
8406
8872
  rootType: "stack",
8873
+ baseClassName: "rb-relative rb-isolate",
8407
8874
  rootProps: {
8408
8875
  gap: "none",
8409
8876
  justify: {
@@ -9519,7 +9986,7 @@ var createNavRow = (className, align = "end") => navRow({
9519
9986
  var headerCta = ctaButton({
9520
9987
  basePath: "menu.ctaItem",
9521
9988
  whenPath: "menu.ctaItem.label",
9522
- variantPath: "menu.ctaItem.variant",
9989
+ variantPath: "$root.theme.header.ctaVariant",
9523
9990
  linkPath: "menu.ctaItem.link",
9524
9991
  sizeFallback: "sm",
9525
9992
  className: `header-cta ${desktopOnlyDisplay("inline-flex")} rb-ml-6`
@@ -9527,7 +9994,7 @@ var headerCta = ctaButton({
9527
9994
  var mobileCta = ctaButton({
9528
9995
  basePath: "menu.ctaItem",
9529
9996
  whenPath: "menu.ctaItem.label",
9530
- variantPath: "menu.ctaItem.variant",
9997
+ variantPath: "$root.theme.header.ctaVariant",
9531
9998
  linkPath: "menu.ctaItem.link",
9532
9999
  sizeFallback: "md",
9533
10000
  className: "nav-mobile-cta rb-w-full"
@@ -9988,7 +10455,13 @@ var splitFooterLayout = stack(
9988
10455
  [
9989
10456
  inline(
9990
10457
  {
9991
- 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"
10458
+ className: {
10459
+ $bind: {
10460
+ from: "$root.theme.footer.logo",
10461
+ transforms: [{ id: "layout.footerSplitMainClass" }],
10462
+ 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"
10463
+ }
10464
+ }
9992
10465
  },
9993
10466
  [
9994
10467
  stack(
@@ -12076,7 +12549,8 @@ var courseEntrySubrouteContextSchema = z37.union([
12076
12549
  run: z37.object({
12077
12550
  courseId: z37.string(),
12078
12551
  seriesId: z37.string(),
12079
- runSlug: z37.string()
12552
+ runSlug: z37.string(),
12553
+ runName: z37.string().nullable()
12080
12554
  })
12081
12555
  }),
12082
12556
  z37.object({
@@ -17947,6 +18421,34 @@ function panelCapable() {
17947
18421
  itemSurfaces: "unsupported"
17948
18422
  });
17949
18423
  }
18424
+ var heroSectionHeights = [
18425
+ "default",
18426
+ "banner",
18427
+ "hero",
18428
+ "immersive"
18429
+ ];
18430
+ var heroImageSurfaceTreatments = [
18431
+ "none",
18432
+ "brand-scrim",
18433
+ "brand-wash",
18434
+ "neutral-scrim",
18435
+ "neutral-wash",
18436
+ "solid-panel"
18437
+ ];
18438
+ var heroImageSurfaceMotions = [
18439
+ "static",
18440
+ "fixed-frame"
18441
+ ];
18442
+ function heroCapable() {
18443
+ return declareBlockDesignCapability({
18444
+ sectionSurfaces: "supported",
18445
+ contentFrames: ["plain", "panel"],
18446
+ itemSurfaces: "unsupported",
18447
+ sectionHeights: heroSectionHeights,
18448
+ imageSurfaceTreatments: heroImageSurfaceTreatments,
18449
+ imageSurfaceMotions: heroImageSurfaceMotions
18450
+ });
18451
+ }
17950
18452
  function plainItemsCapable() {
17951
18453
  return declareBlockDesignCapability({
17952
18454
  sectionSurfaces: "supported",
@@ -18063,7 +18565,7 @@ function withDesignCapability(blockKind, definition, designCapability, designMet
18063
18565
  };
18064
18566
  }
18065
18567
  var systemBlockDefinitionsRaw = [
18066
- withDesignCapability("block.hero", heroBlockDefinition, panelCapable(), defineBlockDesignMetadata({
18568
+ withDesignCapability("block.hero", heroBlockDefinition, heroCapable(), defineBlockDesignMetadata({
18067
18569
  flow: heroFlow,
18068
18570
  layoutProfiles: [
18069
18571
  layoutProfile({
@@ -18167,7 +18669,12 @@ var systemBlockDefinitionsRaw = [
18167
18669
  flow: siteChromeFlow,
18168
18670
  layoutProfiles: []
18169
18671
  })),
18170
- withDesignCapability("block.testimonials", testimonialsBlockDefinition, panelAndItemsCapable(), defineBlockDesignMetadata({
18672
+ withDesignCapability("block.testimonials", testimonialsBlockDefinition, declareBlockDesignCapability({
18673
+ sectionSurfaces: "supported",
18674
+ contentFrames: ["plain", "panel"],
18675
+ itemSurfaces: "supported",
18676
+ testimonialCardTreatments: ["default", "accent-quote"]
18677
+ }), defineBlockDesignMetadata({
18171
18678
  flow: proofFlow,
18172
18679
  layoutProfiles: [
18173
18680
  layoutProfile({