@riverbankcms/sdk 0.77.0 → 0.77.1

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 (46) hide show
  1. package/dist/{PreviewEditorSidebar-XSX7QKHQ.mjs → PreviewEditorSidebar-DVUG7GK4.mjs} +2 -2
  2. package/dist/{PreviewEditorUI-YZNEZ3QD.mjs → PreviewEditorUI-P7RN4CDS.mjs} +2 -2
  3. package/dist/SdkPreviewModeRuntime-KLPX47SE.mjs +8 -0
  4. package/dist/_dts/ai/src/contracts/proposals.d.ts +40 -30
  5. package/dist/_dts/blocks/src/customBlockRegistry.d.ts +20 -1
  6. package/dist/_dts/blocks/src/index.d.ts +2 -2
  7. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +2 -2
  8. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +5 -0
  9. package/dist/_dts/blocks/src/system/runtime/components/multi-step/runtimeFormValidation.d.ts +28 -0
  10. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +4 -4
  11. package/dist/_dts/sdk/src/contracts/theme.d.ts +1 -1
  12. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -2
  13. package/dist/_dts/sdk/src/version.d.ts +1 -1
  14. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  15. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +27 -27
  16. package/dist/_dts/theme-core/src/schema.d.ts +26 -30
  17. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +1 -1
  18. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +4 -4
  19. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +63 -33
  20. package/dist/{chunk-EAWHBECW.mjs → chunk-2SPENC5M.mjs} +5 -5
  21. package/dist/{chunk-GSQX43EZ.mjs → chunk-IENWFSLO.mjs} +22 -41
  22. package/dist/{chunk-WLQBJN2Z.mjs → chunk-KWJPDZH2.mjs} +1815 -1338
  23. package/dist/{chunk-ANKDYZ2E.mjs → chunk-ZYEJLCTN.mjs} +1 -1
  24. package/dist/cli/index.mjs +381 -176
  25. package/dist/client/client.mjs +1574 -1252
  26. package/dist/client/hooks.mjs +369 -170
  27. package/dist/client/rendering.mjs +1588 -1257
  28. package/dist/preview-next/client/runtime.mjs +3 -3
  29. package/dist/{sdk-runtime-Q6MTR4KL.mjs → sdk-runtime-6UT2S7KZ.mjs} +4 -4
  30. package/dist/server/components.mjs +1561 -1239
  31. package/dist/server/config-validation.mjs +369 -170
  32. package/dist/server/config.mjs +369 -170
  33. package/dist/server/data.mjs +369 -170
  34. package/dist/server/index.mjs +1 -1
  35. package/dist/server/next.mjs +1547 -1234
  36. package/dist/server/page-converter.mjs +362 -165
  37. package/dist/server/prebuild.mjs +1 -1
  38. package/dist/server/rendering/server.mjs +1561 -1239
  39. package/dist/server/rendering.mjs +1561 -1239
  40. package/dist/server/routing.mjs +370 -171
  41. package/dist/server/server.mjs +370 -171
  42. package/dist/server/theme-bridge.mjs +1156 -1035
  43. package/dist/server/theme.mjs +79 -11
  44. package/dist/styles/index.css +1081 -1028
  45. package/package.json +1 -1
  46. package/dist/SdkPreviewModeRuntime-5FS5E6BI.mjs +0 -8
@@ -9929,8 +9929,19 @@ var headingTypographyStyleSchema = typographyStyleSchema.extend({
9929
9929
  colorToken: themeColorTokenSchema.nullable().optional()
9930
9930
  });
9931
9931
  var proseLinkUnderlineStyleSchema = z21.enum(["solid", "dotted", "dashed"]);
9932
- var proseLinkUnderlineThicknessSchema = z21.enum(["auto", "fromFont", "thin", "medium", "thick"]);
9933
- var proseLinkUnderlineOffsetSchema = z21.enum(["auto", "tight", "normal", "loose"]);
9932
+ var proseLinkUnderlineThicknessSchema = z21.enum([
9933
+ "auto",
9934
+ "fromFont",
9935
+ "thin",
9936
+ "medium",
9937
+ "thick"
9938
+ ]);
9939
+ var proseLinkUnderlineOffsetSchema = z21.enum([
9940
+ "auto",
9941
+ "tight",
9942
+ "normal",
9943
+ "loose"
9944
+ ]);
9934
9945
  var proseLinkStyleSchema = z21.object({
9935
9946
  colorToken: themeColorTokenSchema.optional(),
9936
9947
  hoverColorToken: themeColorTokenSchema.optional(),
@@ -9941,7 +9952,14 @@ var proseLinkStyleSchema = z21.object({
9941
9952
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
9942
9953
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
9943
9954
  });
9944
- var semanticSpacingSchema = z21.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
9955
+ var semanticSpacingSchema = z21.enum([
9956
+ "none",
9957
+ "compact",
9958
+ "cozy",
9959
+ "medium",
9960
+ "comfortable",
9961
+ "spacious"
9962
+ ]);
9945
9963
  var boxRoundedSchema = z21.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
9946
9964
  var boxBackgroundOverlaySchema = z21.object({
9947
9965
  type: z21.enum(["none", "color", "gradient"]).nullable().optional(),
@@ -10085,9 +10103,17 @@ var inputStyle = z21.object({
10085
10103
  focus: z21.enum(["glow", "ring", "underline"]),
10086
10104
  label: z21.enum(["inside", "above"])
10087
10105
  });
10088
- var headerVariant = z21.enum(["classic", "centered", "transparent", "floating", "editorial"]);
10106
+ var headerVariant = z21.enum(["classic", "centered", "transparent", "floating"]);
10089
10107
  var headerPositioning = z21.enum(["static", "sticky", "fixed"]);
10090
- var headerNavStyle = z21.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
10108
+ var headerNavStyle = z21.enum([
10109
+ "minimal",
10110
+ "underline",
10111
+ "underline-grow",
10112
+ "capsule",
10113
+ "scale",
10114
+ "frosted",
10115
+ "solid"
10116
+ ]);
10091
10117
  var navFontWeight = z21.enum(["regular", "medium", "semibold", "bold"]);
10092
10118
  var headerMaxWidth = z21.enum(["container", "full"]);
10093
10119
  var headerContainerSchema = z21.object({
@@ -10135,8 +10161,22 @@ var dropdownStyleSchema = z21.object({
10135
10161
  textSize: z21.enum(["xs", "sm", "base", "lg"]).optional()
10136
10162
  // optional = no override (browser default)
10137
10163
  }).optional();
10138
- var headerCtaGapSchema = z21.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
10139
- var headerCtaTreatmentSchema = z21.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
10164
+ var headerCtaGapSchema = z21.enum([
10165
+ "none",
10166
+ "tight",
10167
+ "compact",
10168
+ "default",
10169
+ "relaxed",
10170
+ "spacious"
10171
+ ]);
10172
+ var headerCtaTreatmentSchema = z21.enum([
10173
+ "default",
10174
+ "primary",
10175
+ "secondary",
10176
+ "inverted",
10177
+ "outline",
10178
+ "ghost"
10179
+ ]);
10140
10180
  var navContainerSchema = z21.object({
10141
10181
  type: z21.enum(["none", "pill", "glass"]).default("none"),
10142
10182
  tint: z21.string().nullable().optional(),
@@ -10191,7 +10231,14 @@ var footerMaxWidth = z21.enum(["container", "full"]);
10191
10231
  var footerMode = z21.enum(["default", "blocks", "default+blocks", "none"]);
10192
10232
  var footerNavLayoutMode = z21.enum(["stack", "inline", "inline-wrap"]);
10193
10233
  var footerNavLayoutAlign = z21.enum(["start", "center", "end", "space-between"]);
10194
- var footerSpacing = z21.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
10234
+ var footerSpacing = z21.enum([
10235
+ "none",
10236
+ "tight",
10237
+ "compact",
10238
+ "default",
10239
+ "relaxed",
10240
+ "spacious"
10241
+ ]);
10195
10242
  var footerLogoPlacement = z21.enum(["left", "right", "above", "below"]);
10196
10243
  var footerLogoSize = z21.enum(["sm", "md", "lg", "xl"]);
10197
10244
  var footerLogoMaxHeight = z21.enum(["sm", "md", "lg", "xl"]);
@@ -10256,7 +10303,12 @@ var footerSchema = z21.object({
10256
10303
  logo: footerLogoSchema.optional(),
10257
10304
  bottomBar: footerBottomBarSchema.optional()
10258
10305
  });
10259
- var containerPaddingPresetSchema = z21.enum(["tight", "compact", "default", "relaxed"]);
10306
+ var containerPaddingPresetSchema = z21.enum([
10307
+ "tight",
10308
+ "compact",
10309
+ "default",
10310
+ "relaxed"
10311
+ ]);
10260
10312
  var layoutSchema = z21.object({
10261
10313
  containerPadding: z21.object({
10262
10314
  mobile: containerPaddingPresetSchema.optional(),
@@ -10264,8 +10316,24 @@ var layoutSchema = z21.object({
10264
10316
  desktop: containerPaddingPresetSchema.optional()
10265
10317
  }).optional()
10266
10318
  }).optional();
10267
- var heroTypographySizeSchema = z21.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
10268
- var heroTypographyLineHeightSchema = z21.enum(["tight", "snug", "normal", "relaxed"]);
10319
+ var heroTypographySizeSchema = z21.enum([
10320
+ "sm",
10321
+ "base",
10322
+ "lg",
10323
+ "xl",
10324
+ "2xl",
10325
+ "3xl",
10326
+ "4xl",
10327
+ "5xl",
10328
+ "6xl",
10329
+ "editorial"
10330
+ ]);
10331
+ var heroTypographyLineHeightSchema = z21.enum([
10332
+ "tight",
10333
+ "snug",
10334
+ "normal",
10335
+ "relaxed"
10336
+ ]);
10269
10337
  var heroResponsiveTypographySchema = z21.object({
10270
10338
  headlineSize: heroTypographySizeSchema.optional(),
10271
10339
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
@@ -10819,16 +10887,6 @@ var headerLayoutCatalog = [
10819
10887
  maxRecommendedNavItems: 5,
10820
10888
  allowedLogoShapes: ["none", "text-only", "horizontal", "square"]
10821
10889
  },
10822
- {
10823
- id: asHeaderLayoutId("editorial"),
10824
- label: "Editorial",
10825
- description: "A composed, magazine-like stacked header treatment.",
10826
- structure: "editorial-stack",
10827
- variant: "editorial",
10828
- defaultPositioning: "static",
10829
- shrinkOnScroll: false,
10830
- maxRecommendedNavItems: 6
10831
- },
10832
10890
  {
10833
10891
  id: asHeaderLayoutId("floating"),
10834
10892
  label: "Floating",
@@ -10849,17 +10907,19 @@ var headerStyleCatalog = [
10849
10907
  id: asHeaderStyleId("minimal"),
10850
10908
  label: "Minimal",
10851
10909
  description: "Quiet surface with simple color-change navigation.",
10852
- supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
10910
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10853
10911
  navInteraction: "color-change",
10854
- surface: "neutral"
10912
+ surface: "neutral",
10913
+ navTypography: "plain"
10855
10914
  },
10856
10915
  {
10857
10916
  id: asHeaderStyleId("fine-line"),
10858
10917
  label: "Fine Line",
10859
10918
  description: "Light surface with a crisp lower rule and underline hover.",
10860
- supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
10919
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10861
10920
  navInteraction: "underline-grow",
10862
- surface: "bordered"
10921
+ surface: "bordered",
10922
+ navTypography: "plain"
10863
10923
  },
10864
10924
  {
10865
10925
  id: asHeaderStyleId("soft-bar"),
@@ -10867,7 +10927,8 @@ var headerStyleCatalog = [
10867
10927
  description: "Soft tinted surface with gentle pill hover states.",
10868
10928
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10869
10929
  navInteraction: "pill-background",
10870
- surface: "soft"
10930
+ surface: "soft",
10931
+ navTypography: "plain"
10871
10932
  },
10872
10933
  {
10873
10934
  id: asHeaderStyleId("pill-nav"),
@@ -10875,23 +10936,26 @@ var headerStyleCatalog = [
10875
10936
  description: "A calm pill navigation rail over a neutral header.",
10876
10937
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10877
10938
  navInteraction: "pill-background",
10878
- surface: "soft"
10939
+ surface: "soft",
10940
+ navTypography: "plain"
10879
10941
  },
10880
10942
  {
10881
10943
  id: asHeaderStyleId("brand-bar"),
10882
10944
  label: "Brand Bar",
10883
10945
  description: "Solid brand surface with high-contrast navigation.",
10884
- supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
10946
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10885
10947
  navInteraction: "color-change",
10886
- surface: "brand-solid"
10948
+ surface: "brand-solid",
10949
+ navTypography: "brand-caps"
10887
10950
  },
10888
10951
  {
10889
10952
  id: asHeaderStyleId("brand-underline"),
10890
10953
  label: "Brand Underline",
10891
10954
  description: "Brand surface with underline-grow navigation.",
10892
- supportedLayoutIds: supportedLayouts(["classic", "editorial"]),
10955
+ supportedLayoutIds: supportedLayouts(["classic"]),
10893
10956
  navInteraction: "underline-grow",
10894
- surface: "brand-solid"
10957
+ surface: "brand-solid",
10958
+ navTypography: "brand-caps"
10895
10959
  },
10896
10960
  {
10897
10961
  id: asHeaderStyleId("brand-pill"),
@@ -10899,41 +10963,44 @@ var headerStyleCatalog = [
10899
10963
  description: "Solid brand surface with rounded active and hover states.",
10900
10964
  supportedLayoutIds: supportedLayouts(["classic", "centered", "floating"]),
10901
10965
  navInteraction: "pill-background",
10902
- surface: "brand-solid"
10966
+ surface: "brand-solid",
10967
+ navTypography: "brand-caps"
10903
10968
  },
10904
10969
  {
10905
- id: asHeaderStyleId("editorial-line"),
10906
- label: "Editorial Line",
10970
+ id: asHeaderStyleId("serif-line"),
10971
+ label: "Serif Line",
10907
10972
  description: "Typographic logo treatment with understated underline navigation.",
10908
- supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
10973
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10909
10974
  navInteraction: "underline-grow",
10910
- surface: "bordered"
10975
+ surface: "bordered",
10976
+ navTypography: "heading"
10911
10977
  },
10912
10978
  {
10913
10979
  id: asHeaderStyleId("flat-tabs"),
10914
10980
  label: "Flat Tabs",
10915
10981
  description: "Flat block hover and active states with a Swiss utility feel.",
10916
- supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
10982
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
10917
10983
  navInteraction: "flat-block",
10918
- surface: "bordered"
10984
+ surface: "bordered",
10985
+ navTypography: "quiet-caps"
10919
10986
  },
10920
10987
  {
10921
10988
  id: asHeaderStyleId("glass"),
10922
10989
  label: "Glass",
10923
- description: "Floating translucent chrome with frosted navigation backing.",
10924
- supportedLayoutIds: supportedLayouts(["floating"]),
10990
+ description: "Translucent chrome with frosted navigation backing.",
10991
+ supportedLayoutIds: supportedLayouts(["classic", "floating"]),
10925
10992
  navInteraction: "glass-backed",
10926
10993
  surface: "floating",
10927
- requiresFloatingLayout: true
10994
+ navTypography: "plain"
10928
10995
  },
10929
10996
  {
10930
10997
  id: asHeaderStyleId("minimal-surface"),
10931
- label: "Minimal Surface",
10932
- description: "Floating chrome with a restrained translucent surface.",
10998
+ label: "Clear Split",
10999
+ description: "Floating logo with transparent navigation and no shared shell.",
10933
11000
  supportedLayoutIds: supportedLayouts(["floating"]),
10934
11001
  navInteraction: "color-change",
10935
11002
  surface: "floating",
10936
- requiresFloatingLayout: true
11003
+ navTypography: "plain"
10937
11004
  },
10938
11005
  {
10939
11006
  id: asHeaderStyleId("soft-shell"),
@@ -10942,7 +11009,25 @@ var headerStyleCatalog = [
10942
11009
  supportedLayoutIds: supportedLayouts(["floating"]),
10943
11010
  navInteraction: "pill-background",
10944
11011
  surface: "floating",
10945
- requiresFloatingLayout: true
11012
+ navTypography: "plain"
11013
+ },
11014
+ {
11015
+ id: asHeaderStyleId("split-glass"),
11016
+ label: "Split Glass",
11017
+ description: "Logo floats independently while the navigation sits in a glass rail.",
11018
+ supportedLayoutIds: supportedLayouts(["floating"]),
11019
+ navInteraction: "glass-backed",
11020
+ surface: "floating",
11021
+ navTypography: "quiet-caps"
11022
+ },
11023
+ {
11024
+ id: asHeaderStyleId("split-pill"),
11025
+ label: "Split Pill",
11026
+ description: "Logo floats independently with a soft pill-backed navigation rail.",
11027
+ supportedLayoutIds: supportedLayouts(["floating"]),
11028
+ navInteraction: "pill-background",
11029
+ surface: "floating",
11030
+ navTypography: "heading"
10946
11031
  }
10947
11032
  ];
10948
11033
  var headerLayoutsById = new Map(
@@ -10956,13 +11041,14 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
10956
11041
  asHeaderLayoutId("classic"),
10957
11042
  headerStyleRepairChain([
10958
11043
  "minimal",
11044
+ "glass",
10959
11045
  "fine-line",
10960
11046
  "soft-bar",
10961
11047
  "pill-nav",
10962
11048
  "brand-bar",
10963
11049
  "brand-underline",
10964
11050
  "brand-pill",
10965
- "editorial-line",
11051
+ "serif-line",
10966
11052
  "flat-tabs"
10967
11053
  ])
10968
11054
  ],
@@ -10975,19 +11061,7 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
10975
11061
  "pill-nav",
10976
11062
  "brand-bar",
10977
11063
  "brand-pill",
10978
- "editorial-line",
10979
- "flat-tabs"
10980
- ])
10981
- ],
10982
- [
10983
- asHeaderLayoutId("editorial"),
10984
- headerStyleRepairChain([
10985
- "minimal",
10986
- "fine-line",
10987
- "soft-bar",
10988
- "brand-bar",
10989
- "brand-underline",
10990
- "editorial-line",
11064
+ "serif-line",
10991
11065
  "flat-tabs"
10992
11066
  ])
10993
11067
  ],
@@ -10996,6 +11070,8 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
10996
11070
  headerStyleRepairChain([
10997
11071
  "glass",
10998
11072
  "minimal-surface",
11073
+ "split-glass",
11074
+ "split-pill",
10999
11075
  "soft-shell",
11000
11076
  "brand-pill"
11001
11077
  ])
@@ -11004,20 +11080,63 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
11004
11080
  function headerStyleRepairChain(values) {
11005
11081
  return values.map(asHeaderStyleId);
11006
11082
  }
11007
- var headerStyleRepairOrder = /* @__PURE__ */ new Map([
11008
- [asHeaderStyleId("brand-bar"), headerStyleRepairChain(["brand-bar", "brand-pill", "minimal"])],
11009
- [asHeaderStyleId("brand-underline"), headerStyleRepairChain(["editorial-line", "fine-line", "minimal"])],
11010
- [asHeaderStyleId("brand-pill"), headerStyleRepairChain(["brand-pill", "brand-bar", "minimal"])],
11011
- [asHeaderStyleId("pill-nav"), headerStyleRepairChain(["pill-nav", "soft-bar", "minimal"])],
11012
- [asHeaderStyleId("flat-tabs"), headerStyleRepairChain(["flat-tabs", "pill-nav", "minimal"])],
11013
- [asHeaderStyleId("editorial-line"), headerStyleRepairChain(["editorial-line", "fine-line", "minimal"])],
11014
- [asHeaderStyleId("glass"), headerStyleRepairChain(["glass", "minimal-surface", "minimal"])],
11015
- [asHeaderStyleId("soft-shell"), headerStyleRepairChain(["soft-shell", "soft-bar", "minimal"])],
11016
- [asHeaderStyleId("minimal-surface"), headerStyleRepairChain(["minimal-surface", "minimal"])],
11017
- [asHeaderStyleId("fine-line"), headerStyleRepairChain(["fine-line", "minimal"])],
11018
- [asHeaderStyleId("soft-bar"), headerStyleRepairChain(["soft-bar", "minimal"])],
11019
- [asHeaderStyleId("minimal"), headerStyleRepairChain(["minimal"])]
11020
- ]);
11083
+ var headerStyleRepairOrder = /* @__PURE__ */ new Map(
11084
+ [
11085
+ [
11086
+ asHeaderStyleId("brand-bar"),
11087
+ headerStyleRepairChain(["brand-bar", "brand-pill", "minimal"])
11088
+ ],
11089
+ [
11090
+ asHeaderStyleId("brand-underline"),
11091
+ headerStyleRepairChain(["serif-line", "fine-line", "minimal"])
11092
+ ],
11093
+ [
11094
+ asHeaderStyleId("brand-pill"),
11095
+ headerStyleRepairChain(["brand-pill", "brand-bar", "minimal"])
11096
+ ],
11097
+ [
11098
+ asHeaderStyleId("pill-nav"),
11099
+ headerStyleRepairChain(["pill-nav", "soft-bar", "minimal"])
11100
+ ],
11101
+ [
11102
+ asHeaderStyleId("flat-tabs"),
11103
+ headerStyleRepairChain(["flat-tabs", "pill-nav", "minimal"])
11104
+ ],
11105
+ [
11106
+ asHeaderStyleId("serif-line"),
11107
+ headerStyleRepairChain(["serif-line", "fine-line", "minimal"])
11108
+ ],
11109
+ [
11110
+ asHeaderStyleId("glass"),
11111
+ headerStyleRepairChain(["glass", "minimal-surface", "minimal"])
11112
+ ],
11113
+ [
11114
+ asHeaderStyleId("soft-shell"),
11115
+ headerStyleRepairChain(["soft-shell", "soft-bar", "minimal"])
11116
+ ],
11117
+ [
11118
+ asHeaderStyleId("minimal-surface"),
11119
+ headerStyleRepairChain(["minimal-surface", "minimal"])
11120
+ ],
11121
+ [
11122
+ asHeaderStyleId("split-glass"),
11123
+ headerStyleRepairChain(["split-glass", "glass", "minimal-surface"])
11124
+ ],
11125
+ [
11126
+ asHeaderStyleId("split-pill"),
11127
+ headerStyleRepairChain(["split-pill", "soft-shell", "brand-pill"])
11128
+ ],
11129
+ [
11130
+ asHeaderStyleId("fine-line"),
11131
+ headerStyleRepairChain(["fine-line", "minimal"])
11132
+ ],
11133
+ [
11134
+ asHeaderStyleId("soft-bar"),
11135
+ headerStyleRepairChain(["soft-bar", "minimal"])
11136
+ ],
11137
+ [asHeaderStyleId("minimal"), headerStyleRepairChain(["minimal"])]
11138
+ ]
11139
+ );
11021
11140
  var legacyHeaderLookAliases = [
11022
11141
  {
11023
11142
  lookId: asHeaderLookId("clean-base"),
@@ -11034,10 +11153,10 @@ var legacyHeaderLookAliases = [
11034
11153
  }
11035
11154
  },
11036
11155
  {
11037
- lookId: asHeaderLookId("editorial-line"),
11156
+ lookId: asHeaderLookId("serif-line"),
11038
11157
  selection: {
11039
- layoutId: asHeaderLayoutId("editorial"),
11040
- styleId: asHeaderStyleId("editorial-line")
11158
+ layoutId: asHeaderLayoutId("centered"),
11159
+ styleId: asHeaderStyleId("serif-line")
11041
11160
  }
11042
11161
  },
11043
11162
  {
@@ -11076,9 +11195,7 @@ var legacyHeaderLookAliases = [
11076
11195
  }
11077
11196
  }
11078
11197
  ];
11079
- var legacyHeaderLookAliasesById = new Map(
11080
- legacyHeaderLookAliases.map((alias) => [alias.lookId, alias])
11081
- );
11198
+ var legacyHeaderLookAliasesById = new Map(legacyHeaderLookAliases.map((alias) => [alias.lookId, alias]));
11082
11199
  function getHeaderStyle(id) {
11083
11200
  return headerStylesById.get(id) ?? null;
11084
11201
  }
@@ -11096,10 +11213,12 @@ function resolveLegacyHeaderLookAlias(lookId) {
11096
11213
  return legacyHeaderLookAliasesById.get(lookId)?.selection ?? null;
11097
11214
  }
11098
11215
  function getCompatibleHeaderStyleIds(layoutId) {
11099
- return (headerStyleCompatibilityOrder.get(layoutId) ?? []).filter((styleId) => {
11100
- const style = getHeaderStyleOrThrow(styleId);
11101
- return isHeaderStyleCompatibleWithLayout(style, layoutId);
11102
- });
11216
+ return (headerStyleCompatibilityOrder.get(layoutId) ?? []).filter(
11217
+ (styleId) => {
11218
+ const style = getHeaderStyleOrThrow(styleId);
11219
+ return isHeaderStyleCompatibleWithLayout(style, layoutId);
11220
+ }
11221
+ );
11103
11222
  }
11104
11223
  function solidBrandHeader(theme) {
11105
11224
  const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
@@ -11130,8 +11249,14 @@ function solidBrandHeader(theme) {
11130
11249
  borderRadius: "none",
11131
11250
  effects: {
11132
11251
  hover: [
11133
- { effectId: "text-color-change", options: { hoverColorToken: "secondary" } },
11134
- { effectId: "nav-underline", options: { style: "grow", colorToken: "secondary" } }
11252
+ {
11253
+ effectId: "text-color-change",
11254
+ options: { hoverColorToken: "secondary" }
11255
+ },
11256
+ {
11257
+ effectId: "nav-underline",
11258
+ options: { style: "grow", colorToken: "secondary" }
11259
+ }
11135
11260
  ]
11136
11261
  }
11137
11262
  },
@@ -11187,10 +11312,10 @@ function cleanBaseHeader(theme) {
11187
11312
  ctaGap: "default"
11188
11313
  };
11189
11314
  }
11190
- function editorialLineHeader(theme) {
11315
+ function serifLineHeader(theme) {
11191
11316
  return {
11192
11317
  ...baseHeader(theme),
11193
- variant: "editorial",
11318
+ variant: "centered",
11194
11319
  positioning: "sticky",
11195
11320
  shrinkOnScroll: false,
11196
11321
  background: {
@@ -11359,27 +11484,27 @@ var headerLookCatalog = [
11359
11484
  compile: solidBrandHeader
11360
11485
  },
11361
11486
  {
11362
- id: asHeaderLookId("editorial-line"),
11363
- label: "Editorial line",
11364
- visualTreatment: "light-editorial",
11487
+ id: asHeaderLookId("serif-line"),
11488
+ label: "Serif line",
11489
+ visualTreatment: "light-serif",
11365
11490
  layoutBehavior: "sticky",
11366
11491
  configuration: {
11367
- structure: "editorial-stack",
11368
- treatment: "light-editorial",
11492
+ structure: "centered-stack",
11493
+ treatment: "light-serif",
11369
11494
  behavior: "sticky"
11370
11495
  },
11371
11496
  openingRequirement: "none",
11372
11497
  maxRecommendedNavItems: 6,
11373
- compile: editorialLineHeader
11498
+ compile: serifLineHeader
11374
11499
  },
11375
11500
  {
11376
11501
  id: asHeaderLookId("centered-calm"),
11377
11502
  label: "Centered calm",
11378
- visualTreatment: "light-editorial",
11503
+ visualTreatment: "light-serif",
11379
11504
  layoutBehavior: "normal-flow",
11380
11505
  configuration: {
11381
11506
  structure: "centered-stack",
11382
- treatment: "light-editorial",
11507
+ treatment: "light-serif",
11383
11508
  behavior: "normal-flow"
11384
11509
  },
11385
11510
  openingRequirement: "none",
@@ -11925,12 +12050,16 @@ var expressiveUnderlineInputs = {
11925
12050
  }
11926
12051
  };
11927
12052
  function uniqueContentFrameKinds() {
11928
- const kinds = [...new Set(
11929
- generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
11930
- )];
12053
+ const kinds = [
12054
+ ...new Set(
12055
+ generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
12056
+ )
12057
+ ];
11931
12058
  const firstKind = kinds[0];
11932
12059
  if (!firstKind) {
11933
- throw new Error("Expected generated design option catalog to expose at least one content frame kind.");
12060
+ throw new Error(
12061
+ "Expected generated design option catalog to expose at least one content frame kind."
12062
+ );
11934
12063
  }
11935
12064
  return [firstKind, ...kinds.slice(1)];
11936
12065
  }
@@ -11940,7 +12069,9 @@ function defineCuratedSiteStyle(input) {
11940
12069
  const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(legacyHeaderLookIds);
11941
12070
  const typographyPresetChoices = input.typographyPresetChoices ?? defaultTypographyPresetChoicesForRecipe(input.tokenRecipes.typography);
11942
12071
  const defaultTypographyPresetId = input.defaultTypographyPresetId ? asTypographyPresetId(input.defaultTypographyPresetId) : typographyPresetChoices[0].id;
11943
- if (!typographyPresetChoices.some((choice) => choice.id === defaultTypographyPresetId)) {
12072
+ if (!typographyPresetChoices.some(
12073
+ (choice) => choice.id === defaultTypographyPresetId
12074
+ )) {
11944
12075
  throw new Error(
11945
12076
  `Default typography preset ${defaultTypographyPresetId} is not curated for site style ${input.id}.`
11946
12077
  );
@@ -11951,9 +12082,13 @@ function defineCuratedSiteStyle(input) {
11951
12082
  description: input.description,
11952
12083
  generationBrief: input.generationBrief,
11953
12084
  selectionKeywordRules: input.selectionKeywordRules ?? [],
11954
- siteCreatorSelection: input.siteCreatorSelection ?? { kind: "explicit_only" },
12085
+ siteCreatorSelection: input.siteCreatorSelection ?? {
12086
+ kind: "explicit_only"
12087
+ },
11955
12088
  template: {
11956
- id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
12089
+ id: asDesignSystemTemplateId(
12090
+ `template:${input.id.replace("site-style:", "")}`
12091
+ ),
11957
12092
  name: input.name,
11958
12093
  version: 1,
11959
12094
  tokenRecipes: input.tokenRecipes,
@@ -11971,13 +12106,17 @@ function defineCuratedSiteStyle(input) {
11971
12106
  } : inferredHeaderCuration.defaultHeaderSelection,
11972
12107
  recommendedHeaderLayoutChoices: input.recommendedHeaderLayoutChoices ?? inferredHeaderCuration.recommendedHeaderLayoutChoices,
11973
12108
  recommendedHeaderStyleChoicesByLayout: input.recommendedHeaderStyleChoicesByLayout ?? inferredHeaderCuration.recommendedHeaderStyleChoicesByLayout,
11974
- discouragedHeaderSelections: input.discouragedHeaderSelections?.map((selection) => ({
11975
- layoutId: asHeaderLayoutId(selection.layoutId),
11976
- styleId: asHeaderStyleId(selection.styleId)
11977
- })),
12109
+ discouragedHeaderSelections: input.discouragedHeaderSelections?.map(
12110
+ (selection) => ({
12111
+ layoutId: asHeaderLayoutId(selection.layoutId),
12112
+ styleId: asHeaderStyleId(selection.styleId)
12113
+ })
12114
+ ),
11978
12115
  recommendedHeaderLookIds: legacyHeaderLookIds.map(asHeaderLookId),
11979
12116
  // Empty is intentional: resolveFooterLook always appends its guaranteed fallback.
11980
- recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(asFooterLookId),
12117
+ recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(
12118
+ asFooterLookId
12119
+ ),
11981
12120
  buttonPersonalityChoices: input.buttonPersonalityChoices,
11982
12121
  paletteVariantChoices: input.paletteVariantChoices,
11983
12122
  typographyPresetChoices,
@@ -11996,7 +12135,7 @@ function headerLayoutChoice(id, note) {
11996
12135
  function headerStyleChoice(id, note) {
11997
12136
  return note ? { id: asHeaderStyleId(id), note } : { id: asHeaderStyleId(id) };
11998
12137
  }
11999
- function headerLayoutRecordKey(id) {
12138
+ function unbrandHeaderLayoutId(id) {
12000
12139
  return id;
12001
12140
  }
12002
12141
  function uniqueHeaderLayoutChoices(choices) {
@@ -12019,7 +12158,9 @@ function nonEmptyHeaderStyleChoices(choices, fallbackLayoutId) {
12019
12158
  return [first, ...choices.slice(1)];
12020
12159
  }
12021
12160
  function inferHeaderCurationFromLegacyLooks(lookIds) {
12022
- const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter((selection) => Boolean(selection));
12161
+ const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter(
12162
+ (selection) => Boolean(selection)
12163
+ );
12023
12164
  const defaultHeaderSelection = selections[0] ?? {
12024
12165
  layoutId: asHeaderLayoutId("classic"),
12025
12166
  styleId: asHeaderStyleId("minimal")
@@ -12030,10 +12171,7 @@ function inferHeaderCurationFromLegacyLooks(lookIds) {
12030
12171
  const stylesByLayout = {};
12031
12172
  for (const layoutChoice of layoutChoices) {
12032
12173
  const styleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
12033
- stylesByLayout[headerLayoutRecordKey(layoutChoice.id)] = nonEmptyHeaderStyleChoices(
12034
- styleChoices,
12035
- layoutChoice.id
12036
- );
12174
+ stylesByLayout[unbrandHeaderLayoutId(layoutChoice.id)] = nonEmptyHeaderStyleChoices(styleChoices, layoutChoice.id);
12037
12175
  }
12038
12176
  return {
12039
12177
  defaultHeaderSelection,
@@ -12088,7 +12226,11 @@ var curatedSiteStyles = [
12088
12226
  motion: "subtle"
12089
12227
  },
12090
12228
  compositionBudget: quietBudget,
12091
- recommendedHeaderLookIds: ["centered-calm", "minimal-transparent", "clean-base"],
12229
+ recommendedHeaderLookIds: [
12230
+ "centered-calm",
12231
+ "minimal-transparent",
12232
+ "clean-base"
12233
+ ],
12092
12234
  buttonPersonalityChoices: [
12093
12235
  buttonChoice("soft-pill"),
12094
12236
  buttonChoice("pebble"),
@@ -12117,7 +12259,11 @@ var curatedSiteStyles = [
12117
12259
  motion: "subtle"
12118
12260
  },
12119
12261
  compositionBudget: balancedBudget,
12120
- recommendedHeaderLookIds: ["practical-utility", "brand-solid", "clean-base"],
12262
+ recommendedHeaderLookIds: [
12263
+ "practical-utility",
12264
+ "brand-solid",
12265
+ "clean-base"
12266
+ ],
12121
12267
  buttonPersonalityChoices: [
12122
12268
  buttonChoice("confident-chip"),
12123
12269
  buttonChoice("soft-pill"),
@@ -12144,7 +12290,11 @@ var curatedSiteStyles = [
12144
12290
  motion: "subtle"
12145
12291
  },
12146
12292
  compositionBudget: balancedBudget,
12147
- recommendedHeaderLookIds: ["editorial-line", "minimal-transparent", "centered-calm"],
12293
+ recommendedHeaderLookIds: [
12294
+ "serif-line",
12295
+ "minimal-transparent",
12296
+ "centered-calm"
12297
+ ],
12148
12298
  buttonPersonalityChoices: [
12149
12299
  buttonChoice("editorial-link"),
12150
12300
  buttonChoice("soft-pill"),
@@ -12172,7 +12322,11 @@ var curatedSiteStyles = [
12172
12322
  motion: "expressive"
12173
12323
  },
12174
12324
  compositionBudget: balancedBudget,
12175
- recommendedHeaderLookIds: ["brand-solid", "practical-utility", "clean-base"],
12325
+ recommendedHeaderLookIds: [
12326
+ "brand-solid",
12327
+ "practical-utility",
12328
+ "clean-base"
12329
+ ],
12176
12330
  buttonPersonalityChoices: [
12177
12331
  buttonChoice("pebble"),
12178
12332
  buttonChoice("brushed-wash"),
@@ -12189,7 +12343,10 @@ var curatedSiteStyles = [
12189
12343
  name: "Quiet Luxury",
12190
12344
  description: "Minimal, confident, and refined for premium experiences and private services.",
12191
12345
  generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
12192
- siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 20 },
12346
+ siteCreatorSelection: {
12347
+ kind: "site_creator_keyword_heuristic",
12348
+ priority: 20
12349
+ },
12193
12350
  selectionKeywordRules: [
12194
12351
  { kind: "word", value: "luxury" },
12195
12352
  { kind: "word", value: "premium" },
@@ -12207,7 +12364,11 @@ var curatedSiteStyles = [
12207
12364
  motion: "none"
12208
12365
  },
12209
12366
  compositionBudget: quietBudget,
12210
- recommendedHeaderLookIds: ["minimal-transparent", "editorial-line", "clean-base"],
12367
+ recommendedHeaderLookIds: [
12368
+ "minimal-transparent",
12369
+ "serif-line",
12370
+ "clean-base"
12371
+ ],
12211
12372
  buttonPersonalityChoices: [
12212
12373
  buttonChoice("editorial-link"),
12213
12374
  buttonChoice("confident-chip"),
@@ -12243,7 +12404,11 @@ var curatedSiteStyles = [
12243
12404
  motion: "none"
12244
12405
  },
12245
12406
  compositionBudget: quietBudget,
12246
- recommendedHeaderLookIds: ["practical-utility", "brand-solid", "clean-base"],
12407
+ recommendedHeaderLookIds: [
12408
+ "practical-utility",
12409
+ "brand-solid",
12410
+ "clean-base"
12411
+ ],
12247
12412
  buttonPersonalityChoices: [
12248
12413
  buttonChoice("confident-chip"),
12249
12414
  buttonChoice("pebble"),
@@ -12270,7 +12435,11 @@ var curatedSiteStyles = [
12270
12435
  motion: "subtle"
12271
12436
  },
12272
12437
  compositionBudget: balancedBudget,
12273
- recommendedHeaderLookIds: ["centered-calm", "minimal-transparent", "clean-base"],
12438
+ recommendedHeaderLookIds: [
12439
+ "centered-calm",
12440
+ "minimal-transparent",
12441
+ "clean-base"
12442
+ ],
12274
12443
  buttonPersonalityChoices: [
12275
12444
  buttonChoice("soft-pill"),
12276
12445
  buttonChoice("pebble"),
@@ -12287,7 +12456,10 @@ var curatedSiteStyles = [
12287
12456
  name: "Quiet Practice",
12288
12457
  description: "Grounded, calm, and practical for small appointment-first practices.",
12289
12458
  generationBrief: "Make services, practitioner trust, preparation notes, and booking routes easy to scan. Keep the tone warm and specific, with quiet confidence rather than spa cliches or medical claims.",
12290
- siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 30 },
12459
+ siteCreatorSelection: {
12460
+ kind: "site_creator_keyword_heuristic",
12461
+ priority: 30
12462
+ },
12291
12463
  selectionKeywordRules: [
12292
12464
  { kind: "substring", value: "massage" },
12293
12465
  { kind: "word", value: "bodywork" },
@@ -12308,7 +12480,11 @@ var curatedSiteStyles = [
12308
12480
  motion: "subtle"
12309
12481
  },
12310
12482
  compositionBudget: quietBudget,
12311
- recommendedHeaderLookIds: ["practical-utility", "clean-base", "centered-calm"],
12483
+ recommendedHeaderLookIds: [
12484
+ "practical-utility",
12485
+ "clean-base",
12486
+ "centered-calm"
12487
+ ],
12312
12488
  buttonPersonalityChoices: [
12313
12489
  buttonChoice("pebble"),
12314
12490
  buttonChoice("soft-pill"),
@@ -12325,7 +12501,10 @@ var curatedSiteStyles = [
12325
12501
  name: "Personal Retreat Journal",
12326
12502
  description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
12327
12503
  generationBrief: "Center the practitioner as the guide, then make private sessions, classes, retreats, and resources feel like clear pathways. Keep retreat copy grounded and practical, with enough editorial warmth for longer reading.",
12328
- siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 40 },
12504
+ siteCreatorSelection: {
12505
+ kind: "site_creator_keyword_heuristic",
12506
+ priority: 40
12507
+ },
12329
12508
  selectionKeywordRules: [
12330
12509
  { kind: "substring", value: "retreat" },
12331
12510
  { kind: "phrase", value: "solo practitioner" },
@@ -12345,7 +12524,11 @@ var curatedSiteStyles = [
12345
12524
  motion: "subtle"
12346
12525
  },
12347
12526
  compositionBudget: balancedBudget,
12348
- recommendedHeaderLookIds: ["editorial-line", "centered-calm", "minimal-transparent"],
12527
+ recommendedHeaderLookIds: [
12528
+ "serif-line",
12529
+ "centered-calm",
12530
+ "minimal-transparent"
12531
+ ],
12349
12532
  buttonPersonalityChoices: [
12350
12533
  buttonChoice("editorial-link"),
12351
12534
  buttonChoice("soft-pill"),
@@ -12362,7 +12545,10 @@ var curatedSiteStyles = [
12362
12545
  name: "Tactile Workshop",
12363
12546
  description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
12364
12547
  generationBrief: "Lead with objects, materials, studio process, and practical booking detail. Keep the tone warm and direct, with useful mess, clear dates, and enough gallery rhythm to feel like a real creative studio.",
12365
- siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 50 },
12548
+ siteCreatorSelection: {
12549
+ kind: "site_creator_keyword_heuristic",
12550
+ priority: 50
12551
+ },
12366
12552
  selectionKeywordRules: [
12367
12553
  { kind: "substring", value: "ceramic" },
12368
12554
  { kind: "word", value: "pottery" },
@@ -12382,8 +12568,15 @@ var curatedSiteStyles = [
12382
12568
  motion: "subtle"
12383
12569
  },
12384
12570
  compositionBudget: balancedBudget,
12385
- recommendedHeaderLookIds: ["brand-solid", "practical-utility", "clean-base"],
12386
- recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
12571
+ recommendedHeaderLookIds: [
12572
+ "brand-solid",
12573
+ "practical-utility",
12574
+ "clean-base"
12575
+ ],
12576
+ recommendedFooterLookIds: [
12577
+ "site-footer-brand-two-band",
12578
+ "footer-muted-grounding"
12579
+ ],
12387
12580
  buttonPersonalityChoices: [
12388
12581
  buttonChoice("pebble"),
12389
12582
  buttonChoice("confident-chip"),
@@ -12402,7 +12595,10 @@ var curatedSiteStyles = [
12402
12595
  name: "Soft Earth",
12403
12596
  description: "Warm, grounded, and editorial for yoga studios, retreats, and wellbeing communities.",
12404
12597
  generationBrief: "Use cream space, terracotta CTAs, olive proof bands, natural imagery, generous but composed spacing, and editorial serif headings. Prefer a real intro section, image-led offering cards, warm community proof, and a simple two-column FAQ when content allows.",
12405
- siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 45 },
12598
+ siteCreatorSelection: {
12599
+ kind: "site_creator_keyword_heuristic",
12600
+ priority: 45
12601
+ },
12406
12602
  selectionKeywordRules: [
12407
12603
  { kind: "word", value: "meditation" },
12408
12604
  { kind: "word", value: "wellbeing" },
@@ -12478,8 +12674,15 @@ var curatedSiteStyles = [
12478
12674
  "faq-soft-earth-two-column",
12479
12675
  "contact-form-panel"
12480
12676
  ],
12481
- recommendedHeaderLookIds: ["centered-calm", "minimal-transparent", "editorial-line"],
12482
- recommendedFooterLookIds: ["footer-muted-grounding", "site-footer-brand-two-band"],
12677
+ recommendedHeaderLookIds: [
12678
+ "centered-calm",
12679
+ "minimal-transparent",
12680
+ "serif-line"
12681
+ ],
12682
+ recommendedFooterLookIds: [
12683
+ "footer-muted-grounding",
12684
+ "site-footer-brand-two-band"
12685
+ ],
12483
12686
  buttonPersonalityChoices: [
12484
12687
  buttonChoice("earth-pill"),
12485
12688
  buttonChoice("soft-pill"),
@@ -12498,7 +12701,10 @@ var curatedSiteStyles = [
12498
12701
  name: "Bold Launch",
12499
12702
  description: "High-energy and punchy for launches, campaigns, and creative offers.",
12500
12703
  generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
12501
- siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 10 },
12704
+ siteCreatorSelection: {
12705
+ kind: "site_creator_keyword_heuristic",
12706
+ priority: 10
12707
+ },
12502
12708
  selectionKeywordRules: [
12503
12709
  { kind: "substring", value: "launch" },
12504
12710
  { kind: "substring", value: "campaign" },
@@ -12517,7 +12723,11 @@ var curatedSiteStyles = [
12517
12723
  motion: "expressive"
12518
12724
  },
12519
12725
  compositionBudget: expressiveBudget,
12520
- recommendedHeaderLookIds: ["transparent-overlay", "floating-glass", "brand-solid"],
12726
+ recommendedHeaderLookIds: [
12727
+ "transparent-overlay",
12728
+ "floating-glass",
12729
+ "brand-solid"
12730
+ ],
12521
12731
  buttonPersonalityChoices: [
12522
12732
  buttonChoice("ink-stamp"),
12523
12733
  buttonChoice("confident-chip"),
@@ -12568,8 +12778,15 @@ var curatedSiteStyles = [
12568
12778
  "testimonials-accent-quote-proof",
12569
12779
  "contact-form-brand-depth-card"
12570
12780
  ],
12571
- recommendedHeaderLookIds: ["brand-solid", "transparent-overlay", "practical-utility"],
12572
- recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
12781
+ recommendedHeaderLookIds: [
12782
+ "brand-solid",
12783
+ "transparent-overlay",
12784
+ "practical-utility"
12785
+ ],
12786
+ recommendedFooterLookIds: [
12787
+ "site-footer-brand-two-band",
12788
+ "footer-muted-grounding"
12789
+ ],
12573
12790
  buttonPersonalityChoices: [
12574
12791
  buttonChoice("showtime-pill"),
12575
12792
  buttonChoice("confident-chip"),
@@ -19963,10 +20180,7 @@ var headerRootClassTransform = {
19963
20180
  const navContainerType = header?.navContainer?.type ?? "none";
19964
20181
  const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
19965
20182
  const backgroundClass = visuals.isTransparent || hasContainedNav ? "rb-bg-transparent" : null;
19966
- const classes = [
19967
- config.base,
19968
- backgroundClass
19969
- ];
20183
+ const classes = [config.base, backgroundClass];
19970
20184
  if (!hasContainedNav) {
19971
20185
  if (config.blur) classes.push(config.blur);
19972
20186
  if (config.blurSupport) classes.push(config.blurSupport);
@@ -19981,7 +20195,12 @@ var headerRootClassTransform = {
19981
20195
  if (shrinkOnScroll && (positioning === "sticky" || positioning === "fixed")) {
19982
20196
  classes.push(config.shrink);
19983
20197
  }
19984
- const VALID_VARIANTS = ["classic", "centered", "transparent", "floating", "editorial"];
20198
+ const VALID_VARIANTS = [
20199
+ "classic",
20200
+ "centered",
20201
+ "transparent",
20202
+ "floating"
20203
+ ];
19985
20204
  const variant = header?.variant;
19986
20205
  if (variant && VALID_VARIANTS.includes(variant)) {
19987
20206
  classes.push(`header-variant-${variant}`);
@@ -20599,15 +20818,21 @@ var mobileCta = ctaButton({
20599
20818
  var mobileToggleIcon = stack({ gap: "xs", className: "nav-mobile-icon" }, [
20600
20819
  {
20601
20820
  type: "div",
20602
- props: { className: "nav-mobile-bar nav-mobile-bar-top rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current" }
20821
+ props: {
20822
+ className: "nav-mobile-bar nav-mobile-bar-top rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current"
20823
+ }
20603
20824
  },
20604
20825
  {
20605
20826
  type: "div",
20606
- props: { className: "nav-mobile-bar nav-mobile-bar-middle rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current" }
20827
+ props: {
20828
+ className: "nav-mobile-bar nav-mobile-bar-middle rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current"
20829
+ }
20607
20830
  },
20608
20831
  {
20609
20832
  type: "div",
20610
- props: { className: "nav-mobile-bar nav-mobile-bar-bottom rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current" }
20833
+ props: {
20834
+ className: "nav-mobile-bar nav-mobile-bar-bottom rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current"
20835
+ }
20611
20836
  }
20612
20837
  ]);
20613
20838
  var mobileToggleButton = {
@@ -20790,28 +21015,6 @@ var floatingLayout = inline(
20790
21015
  ],
20791
21016
  when("$root.theme.header.variant", { equals: "floating" })
20792
21017
  );
20793
- var editorialLayout = stack(
20794
- {
20795
- gap: "md",
20796
- align: "center",
20797
- className: bindProp("$root.theme.header.maxWidth", {
20798
- transforms: pipe(
20799
- tx("layout.maxWidthClass", {
20800
- base: `rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-flex-col rb-items-center rb-gap-6 rb-text-center`
20801
- })
20802
- ),
20803
- fallback: `rb-container rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-flex-col rb-items-center rb-gap-6 rb-text-center`
20804
- })
20805
- },
20806
- [
20807
- centeredLogoRow,
20808
- createNavRow(
20809
- `${desktopOnlyDisplay("flex")} rb-flex-wrap rb-justify-center rb-gap-x-8 rb-gap-y-3`,
20810
- "center"
20811
- )
20812
- ],
20813
- when("$root.theme.header.variant", { equals: "editorial" })
20814
- );
20815
21018
  var headerLayout = headerSection(
20816
21019
  {
20817
21020
  background: bindProp("$root.theme.header", {
@@ -20825,10 +21028,7 @@ var headerLayout = headerSection(
20825
21028
  }),
20826
21029
  style: bindProp("$root.theme.header", {
20827
21030
  transforms: pipe(tx("layout.headerRootStyle")),
20828
- fallback: mergeStyles(
20829
- textColorStyle("text"),
20830
- borderColorStyle("border")
20831
- )
21031
+ fallback: mergeStyles(textColorStyle("text"), borderColorStyle("border"))
20832
21032
  })
20833
21033
  },
20834
21034
  [
@@ -20837,7 +21037,6 @@ var headerLayout = headerSection(
20837
21037
  centeredLayout,
20838
21038
  transparentLayout,
20839
21039
  floatingLayout,
20840
- editorialLayout,
20841
21040
  mobileOverlay
20842
21041
  ],
20843
21042
  props({