@riverbankcms/sdk 0.102.0 → 0.104.0

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 (203) hide show
  1. package/README.md +10 -2
  2. package/dist/{PreviewEditorSidebar-BKkhhkJk.mjs → PreviewEditorSidebar-ywqcYjTB.mjs} +217 -131
  3. package/dist/{PreviewEditorUI-DIvTqcqI.mjs → PreviewEditorUI-DApUNF6g.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-ZF6TXq5Q.mjs → PreviewQueryProvider-CStABBUh.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-CA2k7Z_T.mjs → SdkPreviewModeRuntime-DmHCcIMO.mjs} +1738 -815
  6. package/dist/{SiteChromeCustomizeContext-Bh9-DtMQ.mjs → SiteChromeCustomizeContext-BV9GU-3C.mjs} +3517 -2524
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +298 -298
  8. package/dist/_dts/api/src/contentRuntime.d.ts +6 -3
  9. package/dist/_dts/api/src/endpoints.d.ts +10 -3
  10. package/dist/_dts/api/src/index.d.ts +2 -2
  11. package/dist/_dts/api/src/navigation/contracts.d.ts +6 -6
  12. package/dist/_dts/api/src/siteBanner.d.ts +2 -2
  13. package/dist/_dts/api/src/siteIcons.d.ts +39 -43
  14. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -3
  15. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +36 -7
  16. package/dist/_dts/block-form/src/widgets/SliderField/SliderField.d.ts +3 -3
  17. package/dist/_dts/block-form/src/widgets/SliderField/sliderValue.d.ts +36 -0
  18. package/dist/_dts/block-form/src/widgets/utils/readNumericUiConfig.d.ts +3 -0
  19. package/dist/_dts/blocks/src/PageRenderer.d.ts +6 -1
  20. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  21. package/dist/_dts/blocks/src/index.d.ts +2 -2
  22. package/dist/_dts/blocks/src/server.d.ts +1 -1
  23. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +7 -7
  24. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +1 -1
  25. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +14 -14
  26. package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +29 -29
  27. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +1 -0
  28. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +8 -5
  29. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +362 -227
  30. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +1 -1
  31. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  32. package/dist/_dts/blocks/src/system/customize/facets.d.ts +2 -2
  33. package/dist/_dts/blocks/src/system/icons/generatedAssets.d.ts +28 -0
  34. package/dist/_dts/blocks/src/system/icons/index.d.ts +1 -0
  35. package/dist/_dts/blocks/src/system/icons/value.d.ts +3 -6
  36. package/dist/_dts/blocks/src/system/inlineText.d.ts +2 -2
  37. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +417 -177
  38. package/dist/_dts/blocks/src/system/node/schema.d.ts +1 -1
  39. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +1 -1
  40. package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +1 -0
  41. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +7 -7
  42. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  43. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +2 -0
  44. package/dist/_dts/content-editor/src/ui/stores/generatedIconAssetsStore.d.ts +9 -0
  45. package/dist/_dts/content-model/src/content-types/schema.d.ts +8 -8
  46. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +344 -0
  47. package/dist/_dts/db/src/schemas/forms.d.ts +15 -15
  48. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +7 -0
  49. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +2 -1
  50. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +4 -4
  51. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +2 -3
  52. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +4 -4
  53. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +4 -4
  54. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +3 -3
  55. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +2 -3
  56. package/dist/_dts/editor-blocks/src/block-editor/blockHeaderActionPlan.d.ts +1 -5
  57. package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +25 -19
  58. package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +32 -0
  59. package/dist/_dts/editor-blocks/src/widgets/icon-picker/GeneratedIconLibraryContext.d.ts +28 -0
  60. package/dist/_dts/editor-blocks/src/widgets/icon-picker/index.d.ts +2 -0
  61. package/dist/_dts/editor-blocks/src/widgets/icon-picker/loaders.d.ts +7 -0
  62. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +2 -1
  63. package/dist/_dts/preview-next/src/client/preview/CustomizeBackgroundControlRows.d.ts +15 -0
  64. package/dist/_dts/preview-next/src/client/preview/CustomizeColorTokenPicker.d.ts +27 -0
  65. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
  66. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
  67. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +3 -1
  68. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +4 -3
  69. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +4 -3
  70. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +4 -3
  71. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +13 -6
  72. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +5 -4
  73. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +44 -18
  74. package/dist/_dts/preview-next/src/client/preview/sidebarTabPreference.d.ts +1 -1
  75. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +16 -1
  76. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +3 -2
  77. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +4 -5
  78. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +22 -1
  79. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +12 -4
  80. package/dist/_dts/sdk/src/client/management/types.d.ts +3 -0
  81. package/dist/_dts/sdk/src/config/validation.d.ts +3 -3
  82. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  83. package/dist/_dts/sdk/src/contracts/page.d.ts +2 -0
  84. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +0 -1
  85. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +10 -10
  86. package/dist/_dts/sdk/src/next/revalidate.d.ts +14 -1
  87. package/dist/_dts/sdk/src/public-api/contracts.d.ts +9 -6
  88. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -1
  89. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -2
  90. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +3 -4
  91. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +1 -0
  92. package/dist/_dts/sdk/src/version.d.ts +1 -1
  93. package/dist/_dts/site-commands/src/commands.d.ts +19 -19
  94. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  95. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +3 -3
  96. package/dist/_dts/theme-core/src/buttons/types.d.ts +7 -7
  97. package/dist/_dts/theme-core/src/cards/types.d.ts +6 -6
  98. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  99. package/dist/_dts/theme-core/src/inputs/types.d.ts +4 -4
  100. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +156 -150
  101. package/dist/_dts/theme-core/src/navigation/types.d.ts +8 -6
  102. package/dist/_dts/theme-core/src/palette/colors.d.ts +84 -0
  103. package/dist/_dts/theme-core/src/palette/{variants → curated}/brand-led.d.ts +12 -24
  104. package/dist/_dts/theme-core/src/palette/{variants → curated}/high-contrast.d.ts +9 -18
  105. package/dist/_dts/theme-core/src/palette/{variants → curated}/index.d.ts +67 -119
  106. package/dist/_dts/theme-core/src/palette/{variants → curated}/soft-natural.d.ts +12 -24
  107. package/dist/_dts/theme-core/src/palette/{variants → curated}/types.d.ts +52 -62
  108. package/dist/_dts/theme-core/src/palette/{variants → curated}/warm-dark.d.ts +6 -12
  109. package/dist/_dts/theme-core/src/palette/{variants → curated}/warm-neutral.d.ts +12 -24
  110. package/dist/_dts/theme-core/src/palette/editorState.d.ts +45 -0
  111. package/dist/_dts/theme-core/src/palette/index.d.ts +25 -14
  112. package/dist/_dts/theme-core/src/palette/legacyRuntimeProjection.d.ts +38 -0
  113. package/dist/_dts/theme-core/src/palette/legacySelection.d.ts +34 -0
  114. package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +58 -0
  115. package/dist/_dts/theme-core/src/palette/paletteCompatibilityTransition.d.ts +241 -0
  116. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +118 -0
  117. package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +50 -0
  118. package/dist/_dts/theme-core/src/palette/selection.d.ts +72 -0
  119. package/dist/_dts/theme-core/src/palette/sitePalettePersistence.d.ts +34 -0
  120. package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +58 -0
  121. package/dist/_dts/theme-core/src/schema.d.ts +208 -169
  122. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  123. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +2 -1
  124. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +22 -22
  125. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +24 -24
  126. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
  127. package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
  128. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +35 -11
  129. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +48 -17
  130. package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +77 -0
  131. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +45 -0
  132. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  133. package/dist/_dts/theme-core/src/site-styles/themeParity.d.ts +21 -0
  134. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  135. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +3 -3
  136. package/dist/_dts/ui/src/badge.d.ts +1 -1
  137. package/dist/_dts/ui/src/button.d.ts +1 -1
  138. package/dist/_dts/ui/src/card.d.ts +1 -1
  139. package/dist/_dts/ui/src/palette/PaletteTokenEditor.d.ts +2 -1
  140. package/dist/_dts/ui/src/toggle.d.ts +2 -2
  141. package/dist/cli/index.mjs +7815 -7445
  142. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +9 -1
  143. package/dist/client/{DiscountCodeDisclosure-ChVZwVtS.mjs → DiscountCodeDisclosure-Dit2aItR.mjs} +1 -1
  144. package/dist/client/{EventCombined.client-PZtXbH6R.mjs → EventCombined.client-BnREyCjf.mjs} +3 -3
  145. package/dist/client/{EventListing.client-C4AMTXec.mjs → EventListing.client-0uHld51x.mjs} +2 -2
  146. package/dist/client/{LeafletStaticMap-B0w8_i0u.mjs → LeafletStaticMap-DJcvSfmj.mjs} +1 -1
  147. package/dist/client/{MagicLinkForm-DF0ZGhIu.mjs → MagicLinkForm-EAsIktfw.mjs} +2 -2
  148. package/dist/client/{StepIndicator-PccQ89Ct.mjs → StepIndicator-CRR17tYI.mjs} +2 -2
  149. package/dist/client/{accordion-CTNWT1lk.mjs → accordion-B47HIuuH.mjs} +1 -1
  150. package/dist/client/{bookingForm-DYixwPqP.mjs → bookingForm-I1E-8F9P.mjs} +6 -6
  151. package/dist/client/{buttons-CySQwlFs.mjs → buttons-BbPn8OKA.mjs} +1 -1
  152. package/dist/client/{carousel-W75iYR0M.mjs → carousel-OlM7SyBs.mjs} +1 -1
  153. package/dist/client/{cart-Ca_DGWQq.mjs → cart-BKpG5jz6.mjs} +3 -3
  154. package/dist/client/{checkout-STgKTsNh.mjs → checkout-Dmmr6qoU.mjs} +3 -3
  155. package/dist/client/client.mjs +9000 -8353
  156. package/dist/client/{courseRegistration-DQI1cu1u.mjs → courseRegistration-CflZiqGk.mjs} +7 -7
  157. package/dist/client/{eventCalendar-BJrHpofg.mjs → eventCalendar-BvoLWcp-.mjs} +5 -5
  158. package/dist/client/{eventCombined-DPtqBHaH.mjs → eventCombined-DsrO8t_t.mjs} +2 -2
  159. package/dist/client/{eventDetails-Brt31CDo.mjs → eventDetails-C3hxgcJm.mjs} +3 -3
  160. package/dist/client/{eventListing-BrClHJOq.mjs → eventListing-C-hb237X.mjs} +2 -2
  161. package/dist/client/{eventRegistration-DxlNlVUC.mjs → eventRegistration-B0gyzDGi.mjs} +7 -7
  162. package/dist/client/{form-Vp5cGzDF.mjs → form-C_RUi6oJ.mjs} +2 -2
  163. package/dist/client/{headerSection-DL2xjRgW.mjs → headerSection-IKQiD2U0.mjs} +3 -3
  164. package/dist/client/hooks.mjs +4792 -4606
  165. package/dist/client/{locationMap-B0EjoXQS.mjs → locationMap-8ZBrMzRJ.mjs} +2 -2
  166. package/dist/client/{newsletterForm-BlV9VRlq.mjs → newsletterForm-CYk3ucwj.mjs} +2 -2
  167. package/dist/client/{pricing-DmRD7Tjx.mjs → pricing-B5GmvfIH.mjs} +1 -1
  168. package/dist/client/{productDetail-BLTQsY2f.mjs → productDetail-BjS2Dqzo.mjs} +3 -3
  169. package/dist/client/{productList-R8lsMpRs.mjs → productList-BOHvC8My.mjs} +3 -3
  170. package/dist/client/{propsDecoder-DgAshF92.mjs → propsDecoder-WS6UEJwZ.mjs} +7 -0
  171. package/dist/client/rendering/client.mjs +3565 -3218
  172. package/dist/client/rendering/islands.mjs +18 -18
  173. package/dist/client/rendering.mjs +8919 -8279
  174. package/dist/client/{shop-DWjyje1s.mjs → shop-CON03-wN.mjs} +6 -6
  175. package/dist/client/{shop-commerce-CSKCR87d.mjs → shop-commerce-DlqrFgH8.mjs} +5 -5
  176. package/dist/client/{shop-commerce-store-DxPnE-iN.mjs → shop-commerce-store-l74-Kne6.mjs} +1 -1
  177. package/dist/client/{shopShared-OOeAkFq7.mjs → shopShared-CQheEXSg.mjs} +2 -2
  178. package/dist/client/{useDiscountCodeUi-Bp6X7XgG.mjs → useDiscountCodeUi-v6OluyWl.mjs} +1 -1
  179. package/dist/client/{useEventFilters-B489x9TO.mjs → useEventFilters-BqSTcNOf.mjs} +3 -3
  180. package/dist/client/{usePolling-BKP66stL.mjs → usePolling-DMfADjIF.mjs} +2 -2
  181. package/dist/preview-next/before-render.mjs +10 -3
  182. package/dist/preview-next/client/runtime.mjs +4 -4
  183. package/dist/preview-next/middleware.mjs +10 -3
  184. package/dist/{previewAuthStore-ByPPZqmp.mjs → previewAuthStore-CfquDtTh.mjs} +10 -3
  185. package/dist/{sdk-runtime-K8Oqj97H.mjs → sdk-runtime-DWb08Xaz.mjs} +2 -2
  186. package/dist/{separator-CRoP34pT.mjs → separator--6yjc914.mjs} +1 -1
  187. package/dist/server/components.mjs +10183 -9621
  188. package/dist/server/config-validation.mjs +4871 -4686
  189. package/dist/server/config.mjs +4871 -4686
  190. package/dist/server/data.mjs +4848 -4663
  191. package/dist/server/index.mjs +11 -4
  192. package/dist/server/next/revalidate.mjs +31 -1
  193. package/dist/server/next.mjs +9894 -9322
  194. package/dist/server/page-converter.mjs +4758 -4573
  195. package/dist/server/prebuild.mjs +1 -1
  196. package/dist/server/rendering/server.mjs +10099 -9619
  197. package/dist/server/rendering.mjs +10195 -9631
  198. package/dist/server/routing.mjs +4985 -4701
  199. package/dist/server/server.mjs +4823 -4629
  200. package/dist/server/theme-bridge.mjs +360 -146
  201. package/dist/server/theme.mjs +94 -91
  202. package/dist/styles/index.css +143 -30
  203. package/package.json +1 -1
@@ -2509,7 +2509,8 @@ const navLinkTextSizeSchema = z$1.enum([
2509
2509
  "xs",
2510
2510
  "sm",
2511
2511
  "base",
2512
- "lg"
2512
+ "lg",
2513
+ "xl"
2513
2514
  ]);
2514
2515
  /**
2515
2516
  * Letter spacing options for nav links.
@@ -2839,6 +2840,9 @@ function asDesignBlockId(value) {
2839
2840
  function asAppearancePresetId(value) {
2840
2841
  return brandNonEmptyString(value, "AppearancePresetId");
2841
2842
  }
2843
+ function asBoundaryOptionId(value) {
2844
+ return brandNonEmptyString(value, "BoundaryOptionId");
2845
+ }
2842
2846
  function asSiteStyleId(value) {
2843
2847
  const siteStyleId = brandNonEmptyString(value, "SiteStyleId");
2844
2848
  if (!siteStyleId.startsWith("site-style:")) throw new Error(`SiteStyleId must start with "site-style:". Received: ${value}`);
@@ -3609,6 +3613,8 @@ const headerSchema = z$1.object({
3609
3613
  navStyle: headerNavStyle,
3610
3614
  navColor: themeColorTokenSchema.nullable().optional(),
3611
3615
  navWeight: navFontWeight.default("medium"),
3616
+ navTypography: z$1.enum(["body", "heading"]).optional(),
3617
+ navTextSize: navLinkStyleSchema.shape.textSize,
3612
3618
  container: headerContainerSchema,
3613
3619
  border: headerBorderSchema,
3614
3620
  shadow: componentShadowSchema.optional(),
@@ -3973,36 +3979,108 @@ function generateShadowCssVars(theme) {
3973
3979
  };
3974
3980
  }
3975
3981
  //#endregion
3976
- //#region ../theme-core/src/palette/variants/types.ts
3977
- function asPaletteVariantId(value) {
3978
- if (value.length === 0) throw new Error("PaletteVariantId must be a non-empty string");
3982
+ //#region ../theme-core/src/palette/colors.ts
3983
+ const HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
3984
+ const NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
3985
+ const hexColorSchema = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
3986
+ const paletteModeSchema = z$1.enum(["light", "dark"]);
3987
+ z$1.string().regex(/^[0-9a-f]{64}$/, "Palette hash must be a lowercase SHA-256 value").transform((value) => value);
3988
+ const paletteColorsSchema = z$1.object({
3989
+ primary: hexColorSchema,
3990
+ primaryForeground: hexColorSchema,
3991
+ secondary: hexColorSchema,
3992
+ accent: hexColorSchema,
3993
+ success: hexColorSchema,
3994
+ warning: hexColorSchema,
3995
+ destructive: hexColorSchema,
3996
+ background: hexColorSchema,
3997
+ surface: hexColorSchema,
3998
+ surfaceAlt: hexColorSchema,
3999
+ muted: hexColorSchema,
4000
+ text: hexColorSchema,
4001
+ border: hexColorSchema
4002
+ }).strict().transform((value) => value);
4003
+ function normalizePaletteHex(value) {
4004
+ if (!NORMALIZABLE_HEX_REGEX.test(value)) return null;
4005
+ const normalized = value.toLowerCase();
4006
+ if (normalized.length === 7) return normalized;
4007
+ const triplet = normalized.slice(1);
4008
+ const red = triplet.charAt(0);
4009
+ const green = triplet.charAt(1);
4010
+ const blue = triplet.charAt(2);
4011
+ return `#${red}${red}${green}${green}${blue}${blue}`;
4012
+ }
4013
+ function paletteColorsFromEntries(entries) {
4014
+ const values = {};
4015
+ for (const entry of entries) {
4016
+ const parsedRole = paletteTokenNameSchema.safeParse(entry.name);
4017
+ if (!parsedRole.success) return {
4018
+ ok: false,
4019
+ error: {
4020
+ kind: "unknown-role",
4021
+ role: entry.name
4022
+ }
4023
+ };
4024
+ const role = parsedRole.data;
4025
+ if (values[role] !== void 0) return {
4026
+ ok: false,
4027
+ error: {
4028
+ kind: "duplicate-role",
4029
+ role
4030
+ }
4031
+ };
4032
+ const hex = normalizePaletteHex(entry.hex);
4033
+ if (!hex) return {
4034
+ ok: false,
4035
+ error: {
4036
+ kind: "invalid-color",
4037
+ role,
4038
+ value: entry.hex
4039
+ }
4040
+ };
4041
+ values[role] = hex;
4042
+ }
4043
+ const missing = PALETTE_TOKEN_NAMES.filter((role) => values[role] === void 0);
4044
+ if (missing.length > 0) return {
4045
+ ok: false,
4046
+ error: {
4047
+ kind: "missing-roles",
4048
+ roles: missing
4049
+ }
4050
+ };
4051
+ return {
4052
+ ok: true,
4053
+ colors: paletteColorsSchema.parse(values)
4054
+ };
4055
+ }
4056
+ function requirePaletteColorsFromEntries(entries) {
4057
+ const result = paletteColorsFromEntries(entries);
4058
+ if (result.ok) return result.colors;
4059
+ throw new Error(`Invalid complete palette: ${result.error.kind}`);
4060
+ }
4061
+ //#endregion
4062
+ //#region ../theme-core/src/palette/curated/types.ts
4063
+ function asCuratedPaletteId(value) {
4064
+ if (value.length === 0) throw new Error("CuratedPaletteId must be a non-empty string");
3979
4065
  return value;
3980
4066
  }
3981
- const paletteVariantIdSchema = z$1.string().min(1).transform((value) => asPaletteVariantId(value));
3982
- const hexColorSchema = z$1.string().regex(/^#[0-9a-f]{6}$/, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
3983
- /**
3984
- * Variant-local palette colour schema. Tightens `paletteColorSchema` (which
3985
- * accepts any non-empty `name`) so unknown token names like `'priamry'` cannot
3986
- * be parsed into a curated variant; the runtime contract and the static
3987
- * `PaletteColor` type now agree.
3988
- */
3989
- const variantPaletteColorSchema = paletteColorSchema.extend({ name: paletteTokenNameSchema });
4067
+ const curatedPaletteIdSchema = z$1.string().min(1).transform((value) => asCuratedPaletteId(value));
3990
4068
  z$1.object({
3991
- id: paletteVariantIdSchema,
4069
+ id: curatedPaletteIdSchema,
3992
4070
  name: z$1.string().min(1),
3993
4071
  description: z$1.string().min(1),
3994
4072
  tags: styleTagsSchema,
3995
- mode: z$1.enum(["light", "dark"]),
3996
- colors: z$1.array(variantPaletteColorSchema).min(1)
4073
+ mode: paletteModeSchema,
4074
+ colors: paletteColorsSchema
3997
4075
  });
3998
- function definePaletteVariant(input) {
4076
+ function defineCuratedPalette(input) {
3999
4077
  return {
4000
- id: asPaletteVariantId(input.id),
4078
+ id: asCuratedPaletteId(input.id),
4001
4079
  name: input.name,
4002
4080
  description: input.description,
4003
4081
  tags: input.tags,
4004
4082
  mode: input.mode,
4005
- colors: input.colors
4083
+ colors: requirePaletteColorsFromEntries(input.colors)
4006
4084
  };
4007
4085
  }
4008
4086
  z$1.object({
@@ -4021,12 +4099,12 @@ z$1.object({
4021
4099
  border: hexColorSchema.optional()
4022
4100
  }).strict().transform((value) => value);
4023
4101
  //#endregion
4024
- //#region ../theme-core/src/palette/variants/brand-led.ts
4102
+ //#region ../theme-core/src/palette/curated/brand-led.ts
4025
4103
  /**
4026
4104
  * Brand-led family — confident, modern, contemporary brand voices. Pairs
4027
4105
  * with Clear Professional, Bright Community, Practical Services site styles.
4028
4106
  */
4029
- const brandLedCool = definePaletteVariant({
4107
+ const brandLedCool = defineCuratedPalette({
4030
4108
  id: "brand-led-cool",
4031
4109
  name: "Brand-led — Cool",
4032
4110
  description: "Confident blue primary with slate neutrals.",
@@ -4091,7 +4169,7 @@ const brandLedCool = definePaletteVariant({
4091
4169
  }
4092
4170
  ]
4093
4171
  });
4094
- const brandLedWarm = definePaletteVariant({
4172
+ const brandLedWarm = defineCuratedPalette({
4095
4173
  id: "brand-led-warm",
4096
4174
  name: "Brand-led — Warm",
4097
4175
  description: "Sunset orange primary with warm grey neutrals.",
@@ -4156,7 +4234,7 @@ const brandLedWarm = definePaletteVariant({
4156
4234
  }
4157
4235
  ]
4158
4236
  });
4159
- const brandLedJewel = definePaletteVariant({
4237
+ const brandLedJewel = defineCuratedPalette({
4160
4238
  id: "brand-led-jewel",
4161
4239
  name: "Brand-led — Jewel",
4162
4240
  description: "Deep emerald primary with rich neutrals.",
@@ -4221,7 +4299,7 @@ const brandLedJewel = definePaletteVariant({
4221
4299
  }
4222
4300
  ]
4223
4301
  });
4224
- const brandLedBurgundyGold = definePaletteVariant({
4302
+ const brandLedBurgundyGold = defineCuratedPalette({
4225
4303
  id: "brand-led-burgundy-gold",
4226
4304
  name: "Brand-led — Burgundy Gold",
4227
4305
  description: "Deep burgundy with warm gold accents and soft neutral grounds.",
@@ -4287,12 +4365,12 @@ const brandLedBurgundyGold = definePaletteVariant({
4287
4365
  ]
4288
4366
  });
4289
4367
  //#endregion
4290
- //#region ../theme-core/src/palette/variants/high-contrast.ts
4368
+ //#region ../theme-core/src/palette/curated/high-contrast.ts
4291
4369
  /**
4292
4370
  * High-contrast family — editorial and minimal voices with high legibility.
4293
4371
  * Pairs with Quiet Luxury, Bold Launch, Practical Services site styles.
4294
4372
  */
4295
- const highContrastInk = definePaletteVariant({
4373
+ const highContrastInk = defineCuratedPalette({
4296
4374
  id: "high-contrast-ink",
4297
4375
  name: "High Contrast — Ink",
4298
4376
  description: "Near-black primary with cool greys.",
@@ -4357,7 +4435,7 @@ const highContrastInk = definePaletteVariant({
4357
4435
  }
4358
4436
  ]
4359
4437
  });
4360
- const highContrastCharcoal = definePaletteVariant({
4438
+ const highContrastCharcoal = defineCuratedPalette({
4361
4439
  id: "high-contrast-charcoal",
4362
4440
  name: "High Contrast — Charcoal",
4363
4441
  description: "Warm charcoal primary on a soft cream ground.",
@@ -4422,7 +4500,7 @@ const highContrastCharcoal = definePaletteVariant({
4422
4500
  }
4423
4501
  ]
4424
4502
  });
4425
- const highContrastMonochrome = definePaletteVariant({
4503
+ const highContrastMonochrome = defineCuratedPalette({
4426
4504
  id: "high-contrast-monochrome",
4427
4505
  name: "High Contrast — Monochrome",
4428
4506
  description: "Pure black-on-white with a single saturated accent.",
@@ -4488,12 +4566,12 @@ const highContrastMonochrome = definePaletteVariant({
4488
4566
  ]
4489
4567
  });
4490
4568
  //#endregion
4491
- //#region ../theme-core/src/palette/variants/soft-natural.ts
4569
+ //#region ../theme-core/src/palette/curated/soft-natural.ts
4492
4570
  /**
4493
4571
  * Soft-natural family — calm, organic, plant-led voices. Pairs with Calm
4494
4572
  * Studio, Modern Wellness, Warm Editorial site styles.
4495
4573
  */
4496
- const softNaturalSage = definePaletteVariant({
4574
+ const softNaturalSage = defineCuratedPalette({
4497
4575
  id: "soft-natural-sage",
4498
4576
  name: "Soft Natural — Sage",
4499
4577
  description: "Olive sage primary on an off-white ground.",
@@ -4558,7 +4636,7 @@ const softNaturalSage = definePaletteVariant({
4558
4636
  }
4559
4637
  ]
4560
4638
  });
4561
- const softNaturalStone = definePaletteVariant({
4639
+ const softNaturalStone = defineCuratedPalette({
4562
4640
  id: "soft-natural-stone",
4563
4641
  name: "Soft Natural — Stone",
4564
4642
  description: "River-stone grey-green primary with cool neutrals.",
@@ -4623,7 +4701,7 @@ const softNaturalStone = definePaletteVariant({
4623
4701
  }
4624
4702
  ]
4625
4703
  });
4626
- const softNaturalWatercolor = definePaletteVariant({
4704
+ const softNaturalWatercolor = defineCuratedPalette({
4627
4705
  id: "soft-natural-watercolor",
4628
4706
  name: "Soft Natural — Watercolor",
4629
4707
  description: "Soft sand primary with watercolour sage accents.",
@@ -4688,7 +4766,7 @@ const softNaturalWatercolor = definePaletteVariant({
4688
4766
  }
4689
4767
  ]
4690
4768
  });
4691
- const softNaturalLilac = definePaletteVariant({
4769
+ const softNaturalLilac = defineCuratedPalette({
4692
4770
  id: "soft-natural-lilac",
4693
4771
  name: "Soft Natural — Lilac",
4694
4772
  description: "Watercolour periwinkle-lilac primary with warm ivory grounds and a sage accent.",
@@ -4754,13 +4832,13 @@ const softNaturalLilac = definePaletteVariant({
4754
4832
  ]
4755
4833
  });
4756
4834
  //#endregion
4757
- //#region ../theme-core/src/palette/variants/index.ts
4758
- const paletteVariants = [
4835
+ //#region ../theme-core/src/palette/curated/index.ts
4836
+ const curatedPalettes = [
4759
4837
  brandLedCool,
4760
4838
  brandLedWarm,
4761
4839
  brandLedJewel,
4762
4840
  brandLedBurgundyGold,
4763
- definePaletteVariant({
4841
+ defineCuratedPalette({
4764
4842
  id: "warm-neutral-clay",
4765
4843
  name: "Warm Neutral — Clay",
4766
4844
  description: "Terracotta primary on a cream ground.",
@@ -4825,7 +4903,7 @@ const paletteVariants = [
4825
4903
  }
4826
4904
  ]
4827
4905
  }),
4828
- definePaletteVariant({
4906
+ defineCuratedPalette({
4829
4907
  id: "warm-neutral-cream",
4830
4908
  name: "Warm Neutral — Cream",
4831
4909
  description: "Soft sand primary with pale cream surfaces.",
@@ -4890,7 +4968,7 @@ const paletteVariants = [
4890
4968
  }
4891
4969
  ]
4892
4970
  }),
4893
- definePaletteVariant({
4971
+ defineCuratedPalette({
4894
4972
  id: "warm-neutral-soft-earth",
4895
4973
  name: "Warm Neutral — Soft Earth",
4896
4974
  description: "Cream ground with terracotta primary, clay accents, and olive depth.",
@@ -4955,7 +5033,7 @@ const paletteVariants = [
4955
5033
  }
4956
5034
  ]
4957
5035
  }),
4958
- definePaletteVariant({
5036
+ defineCuratedPalette({
4959
5037
  id: "warm-neutral-forest",
4960
5038
  name: "Warm Neutral — Forest",
4961
5039
  description: "Deep forest green primary with earthy neutrals.",
@@ -5027,7 +5105,7 @@ const paletteVariants = [
5027
5105
  softNaturalStone,
5028
5106
  softNaturalWatercolor,
5029
5107
  softNaturalLilac,
5030
- definePaletteVariant({
5108
+ defineCuratedPalette({
5031
5109
  id: "warm-dark-ember",
5032
5110
  name: "Warm Dark — Ember",
5033
5111
  description: "Deep clay-brown ground with burnt-orange accent and warm cream text.",
@@ -5092,7 +5170,7 @@ const paletteVariants = [
5092
5170
  }
5093
5171
  ]
5094
5172
  }),
5095
- definePaletteVariant({
5173
+ defineCuratedPalette({
5096
5174
  id: "warm-dark-kirtan-gold",
5097
5175
  name: "Warm Dark — Kirtan Gold",
5098
5176
  description: "Deep plum ground with pale gold primary, rose accent, and soft devotional text.",
@@ -5158,7 +5236,7 @@ const paletteVariants = [
5158
5236
  ]
5159
5237
  })
5160
5238
  ];
5161
- new Map(paletteVariants.map((v) => [v.id, v]));
5239
+ new Map(curatedPalettes.map((v) => [v.id, v]));
5162
5240
  //#endregion
5163
5241
  //#region ../theme-core/src/accordions/siteStyleDefaults.ts
5164
5242
  /**
@@ -5696,7 +5774,7 @@ const overlayLogoAccommodations = [
5696
5774
  * optional nested styling fields that would otherwise leak from another Look.
5697
5775
  */
5698
5776
  function baseHeader(theme) {
5699
- const { navLinkStyle: _navLinkStyle, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
5777
+ const { navLinkStyle: _navLinkStyle, navTypography: _navTypography, navTextSize: _navTextSize, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
5700
5778
  return {
5701
5779
  ...header,
5702
5780
  navContainer: {
@@ -7661,6 +7739,29 @@ z$1.object({
7661
7739
  styleAuthorities: z$1.array(blockRuntimeStyleAuthoritySchema)
7662
7740
  }).strict();
7663
7741
  //#endregion
7742
+ //#region ../theme-core/src/site-styles/sectionTransitions.ts
7743
+ function boundaryRuntimeMetrics(family, size, heightExpression) {
7744
+ return {
7745
+ family,
7746
+ size,
7747
+ heightCss: heightExpression.includes(" ") ? `calc(${heightExpression})` : heightExpression,
7748
+ reserveCss: `calc((${heightExpression}) / 2)`
7749
+ };
7750
+ }
7751
+ boundaryRuntimeMetrics("gradient", "medium", "6rem + 2px"), boundaryRuntimeMetrics("gradient", "spacious", "10rem"), boundaryRuntimeMetrics("gradient", "expansive", "14rem"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("wave", "large", "7rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("angle", "large", "7rem + 2px");
7752
+ asBoundaryOptionId("break:none");
7753
+ asBoundaryOptionId("break:soft");
7754
+ asBoundaryOptionId("break:spacious");
7755
+ asBoundaryOptionId("break:expansive");
7756
+ asBoundaryOptionId("break:wave");
7757
+ asBoundaryOptionId("break:wave-balanced");
7758
+ asBoundaryOptionId("break:wave-gentle");
7759
+ asBoundaryOptionId("break:wave-bold");
7760
+ asBoundaryOptionId("break:wave-drift");
7761
+ asBoundaryOptionId("break:angle-subtle");
7762
+ asBoundaryOptionId("break:angle-balanced");
7763
+ asBoundaryOptionId("break:angle-steep");
7764
+ //#endregion
7664
7765
  //#region ../theme-core/src/site-styles/runtimeCompiler.ts
7665
7766
  function defineDesignRuntimeRules(rules) {
7666
7767
  return rules;
@@ -7908,7 +8009,7 @@ function defineCuratedSiteStyle(input) {
7908
8009
  recommendedHeaderLookIds: legacyHeaderLookIds.map(asHeaderLookId),
7909
8010
  recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(asFooterLookId),
7910
8011
  buttonPersonalityChoices: input.buttonPersonalityChoices,
7911
- paletteVariantChoices: input.paletteVariantChoices,
8012
+ paletteRecommendations: input.paletteRecommendations,
7912
8013
  typographyPresetChoices,
7913
8014
  defaultTypographyPresetId
7914
8015
  };
@@ -7919,11 +8020,11 @@ function buttonChoice(id, note) {
7919
8020
  note
7920
8021
  } : { id: asButtonPersonalityId(id) };
7921
8022
  }
7922
- function paletteChoice(id, note) {
8023
+ function paletteRecommendation(id, note) {
7923
8024
  return note ? {
7924
- id: asPaletteVariantId(id),
8025
+ id: asCuratedPaletteId(id),
7925
8026
  note
7926
- } : { id: asPaletteVariantId(id) };
8027
+ } : { id: asCuratedPaletteId(id) };
7927
8028
  }
7928
8029
  function headerLayoutChoice(id, note) {
7929
8030
  return note ? {
@@ -8137,11 +8238,11 @@ const curatedSiteStyles = [
8137
8238
  buttonChoice("editorial-link"),
8138
8239
  buttonChoice("brushed-wash")
8139
8240
  ],
8140
- paletteVariantChoices: [
8141
- paletteChoice("soft-natural-sage"),
8142
- paletteChoice("soft-natural-stone"),
8143
- paletteChoice("warm-neutral-clay"),
8144
- paletteChoice("soft-natural-watercolor")
8241
+ paletteRecommendations: [
8242
+ paletteRecommendation("soft-natural-sage"),
8243
+ paletteRecommendation("soft-natural-stone"),
8244
+ paletteRecommendation("warm-neutral-clay"),
8245
+ paletteRecommendation("soft-natural-watercolor")
8145
8246
  ]
8146
8247
  }),
8147
8248
  defineCuratedSiteStyle({
@@ -8173,10 +8274,10 @@ const curatedSiteStyles = [
8173
8274
  buttonChoice("soft-pill"),
8174
8275
  buttonChoice("editorial-link")
8175
8276
  ],
8176
- paletteVariantChoices: [
8177
- paletteChoice("brand-led-cool"),
8178
- paletteChoice("high-contrast-ink"),
8179
- paletteChoice("brand-led-jewel")
8277
+ paletteRecommendations: [
8278
+ paletteRecommendation("brand-led-cool"),
8279
+ paletteRecommendation("high-contrast-ink"),
8280
+ paletteRecommendation("brand-led-jewel")
8180
8281
  ]
8181
8282
  }),
8182
8283
  defineCuratedSiteStyle({
@@ -8212,11 +8313,11 @@ const curatedSiteStyles = [
8212
8313
  buttonChoice("soft-pill"),
8213
8314
  buttonChoice("brushed-wash")
8214
8315
  ],
8215
- paletteVariantChoices: [
8216
- paletteChoice("warm-neutral-cream"),
8217
- paletteChoice("warm-neutral-clay"),
8218
- paletteChoice("warm-neutral-forest"),
8219
- paletteChoice("soft-natural-stone")
8316
+ paletteRecommendations: [
8317
+ paletteRecommendation("warm-neutral-cream"),
8318
+ paletteRecommendation("warm-neutral-clay"),
8319
+ paletteRecommendation("warm-neutral-forest"),
8320
+ paletteRecommendation("soft-natural-stone")
8220
8321
  ]
8221
8322
  }),
8222
8323
  defineCuratedSiteStyle({
@@ -8252,10 +8353,10 @@ const curatedSiteStyles = [
8252
8353
  buttonChoice("brushed-wash"),
8253
8354
  buttonChoice("confident-chip")
8254
8355
  ],
8255
- paletteVariantChoices: [
8256
- paletteChoice("brand-led-warm"),
8257
- paletteChoice("brand-led-jewel"),
8258
- paletteChoice("soft-natural-watercolor")
8356
+ paletteRecommendations: [
8357
+ paletteRecommendation("brand-led-warm"),
8358
+ paletteRecommendation("brand-led-jewel"),
8359
+ paletteRecommendation("soft-natural-watercolor")
8259
8360
  ]
8260
8361
  }),
8261
8362
  defineCuratedSiteStyle({
@@ -8313,10 +8414,10 @@ const curatedSiteStyles = [
8313
8414
  buttonChoice("confident-chip"),
8314
8415
  buttonChoice("soft-pill")
8315
8416
  ],
8316
- paletteVariantChoices: [
8317
- paletteChoice("high-contrast-charcoal"),
8318
- paletteChoice("high-contrast-ink"),
8319
- paletteChoice("warm-neutral-cream")
8417
+ paletteRecommendations: [
8418
+ paletteRecommendation("high-contrast-charcoal"),
8419
+ paletteRecommendation("high-contrast-ink"),
8420
+ paletteRecommendation("warm-neutral-cream")
8320
8421
  ]
8321
8422
  }),
8322
8423
  defineCuratedSiteStyle({
@@ -8375,10 +8476,10 @@ const curatedSiteStyles = [
8375
8476
  buttonChoice("pebble"),
8376
8477
  buttonChoice("ink-stamp")
8377
8478
  ],
8378
- paletteVariantChoices: [
8379
- paletteChoice("brand-led-cool"),
8380
- paletteChoice("high-contrast-ink"),
8381
- paletteChoice("brand-led-warm")
8479
+ paletteRecommendations: [
8480
+ paletteRecommendation("brand-led-cool"),
8481
+ paletteRecommendation("high-contrast-ink"),
8482
+ paletteRecommendation("brand-led-warm")
8382
8483
  ]
8383
8484
  }),
8384
8485
  defineCuratedSiteStyle({
@@ -8414,10 +8515,10 @@ const curatedSiteStyles = [
8414
8515
  buttonChoice("pebble"),
8415
8516
  buttonChoice("confident-chip")
8416
8517
  ],
8417
- paletteVariantChoices: [
8418
- paletteChoice("soft-natural-sage"),
8419
- paletteChoice("soft-natural-stone"),
8420
- paletteChoice("warm-neutral-forest")
8518
+ paletteRecommendations: [
8519
+ paletteRecommendation("soft-natural-sage"),
8520
+ paletteRecommendation("soft-natural-stone"),
8521
+ paletteRecommendation("warm-neutral-forest")
8421
8522
  ]
8422
8523
  }),
8423
8524
  defineCuratedSiteStyle({
@@ -8487,10 +8588,10 @@ const curatedSiteStyles = [
8487
8588
  buttonChoice("soft-pill"),
8488
8589
  buttonChoice("editorial-link")
8489
8590
  ],
8490
- paletteVariantChoices: [
8491
- paletteChoice("soft-natural-stone"),
8492
- paletteChoice("soft-natural-sage"),
8493
- paletteChoice("warm-neutral-clay")
8591
+ paletteRecommendations: [
8592
+ paletteRecommendation("soft-natural-stone"),
8593
+ paletteRecommendation("soft-natural-sage"),
8594
+ paletteRecommendation("warm-neutral-clay")
8494
8595
  ]
8495
8596
  }),
8496
8597
  defineCuratedSiteStyle({
@@ -8613,11 +8714,11 @@ const curatedSiteStyles = [
8613
8714
  buttonChoice("pebble"),
8614
8715
  buttonChoice("editorial-link")
8615
8716
  ],
8616
- paletteVariantChoices: [
8617
- paletteChoice("soft-natural-lilac"),
8618
- paletteChoice("soft-natural-watercolor"),
8619
- paletteChoice("soft-natural-stone"),
8620
- paletteChoice("warm-neutral-cream")
8717
+ paletteRecommendations: [
8718
+ paletteRecommendation("soft-natural-lilac"),
8719
+ paletteRecommendation("soft-natural-watercolor"),
8720
+ paletteRecommendation("soft-natural-stone"),
8721
+ paletteRecommendation("warm-neutral-cream")
8621
8722
  ]
8622
8723
  }),
8623
8724
  defineCuratedSiteStyle({
@@ -8687,10 +8788,10 @@ const curatedSiteStyles = [
8687
8788
  buttonChoice("soft-pill"),
8688
8789
  buttonChoice("brushed-wash")
8689
8790
  ],
8690
- paletteVariantChoices: [
8691
- paletteChoice("warm-neutral-forest"),
8692
- paletteChoice("warm-neutral-clay"),
8693
- paletteChoice("soft-natural-stone")
8791
+ paletteRecommendations: [
8792
+ paletteRecommendation("warm-neutral-forest"),
8793
+ paletteRecommendation("warm-neutral-clay"),
8794
+ paletteRecommendation("soft-natural-stone")
8694
8795
  ]
8695
8796
  }),
8696
8797
  defineCuratedSiteStyle({
@@ -8762,11 +8863,11 @@ const curatedSiteStyles = [
8762
8863
  buttonChoice("ink-stamp"),
8763
8864
  buttonChoice("editorial-link")
8764
8865
  ],
8765
- paletteVariantChoices: [
8766
- paletteChoice("brand-led-warm"),
8767
- paletteChoice("brand-led-cool"),
8768
- paletteChoice("soft-natural-watercolor"),
8769
- paletteChoice("warm-neutral-clay")
8866
+ paletteRecommendations: [
8867
+ paletteRecommendation("brand-led-warm"),
8868
+ paletteRecommendation("brand-led-cool"),
8869
+ paletteRecommendation("soft-natural-watercolor"),
8870
+ paletteRecommendation("warm-neutral-clay")
8770
8871
  ]
8771
8872
  }),
8772
8873
  defineCuratedSiteStyle({
@@ -8885,11 +8986,11 @@ const curatedSiteStyles = [
8885
8986
  buttonChoice("pebble"),
8886
8987
  buttonChoice("editorial-link")
8887
8988
  ],
8888
- paletteVariantChoices: [
8889
- paletteChoice("warm-neutral-soft-earth"),
8890
- paletteChoice("warm-neutral-clay"),
8891
- paletteChoice("warm-neutral-forest"),
8892
- paletteChoice("soft-natural-sage")
8989
+ paletteRecommendations: [
8990
+ paletteRecommendation("warm-neutral-soft-earth"),
8991
+ paletteRecommendation("warm-neutral-clay"),
8992
+ paletteRecommendation("warm-neutral-forest"),
8993
+ paletteRecommendation("soft-natural-sage")
8893
8994
  ]
8894
8995
  }),
8895
8996
  defineCuratedSiteStyle({
@@ -8956,11 +9057,11 @@ const curatedSiteStyles = [
8956
9057
  buttonChoice("brushed-wash"),
8957
9058
  buttonChoice("pebble")
8958
9059
  ],
8959
- paletteVariantChoices: [
8960
- paletteChoice("high-contrast-monochrome"),
8961
- paletteChoice("high-contrast-ink"),
8962
- paletteChoice("brand-led-jewel"),
8963
- paletteChoice("brand-led-warm")
9060
+ paletteRecommendations: [
9061
+ paletteRecommendation("high-contrast-monochrome"),
9062
+ paletteRecommendation("high-contrast-ink"),
9063
+ paletteRecommendation("brand-led-jewel"),
9064
+ paletteRecommendation("brand-led-warm")
8964
9065
  ]
8965
9066
  }),
8966
9067
  defineCuratedSiteStyle({
@@ -9017,11 +9118,11 @@ const curatedSiteStyles = [
9017
9118
  buttonChoice("ink-stamp"),
9018
9119
  buttonChoice("brushed-wash")
9019
9120
  ],
9020
- paletteVariantChoices: [
9021
- paletteChoice("brand-led-burgundy-gold"),
9022
- paletteChoice("brand-led-jewel"),
9023
- paletteChoice("brand-led-warm"),
9024
- paletteChoice("high-contrast-ink")
9121
+ paletteRecommendations: [
9122
+ paletteRecommendation("brand-led-burgundy-gold"),
9123
+ paletteRecommendation("brand-led-jewel"),
9124
+ paletteRecommendation("brand-led-warm"),
9125
+ paletteRecommendation("high-contrast-ink")
9025
9126
  ]
9026
9127
  }),
9027
9128
  defineCuratedSiteStyle({
@@ -9103,10 +9204,10 @@ const curatedSiteStyles = [
9103
9204
  buttonChoice("joy-stamp"),
9104
9205
  buttonChoice("ink-stamp")
9105
9206
  ],
9106
- paletteVariantChoices: [
9107
- paletteChoice("warm-dark-kirtan-gold"),
9108
- paletteChoice("warm-dark-ember"),
9109
- paletteChoice("brand-led-burgundy-gold")
9207
+ paletteRecommendations: [
9208
+ paletteRecommendation("warm-dark-kirtan-gold"),
9209
+ paletteRecommendation("warm-dark-ember"),
9210
+ paletteRecommendation("brand-led-burgundy-gold")
9110
9211
  ]
9111
9212
  }),
9112
9213
  defineCuratedSiteStyle({
@@ -9165,7 +9266,7 @@ const curatedSiteStyles = [
9165
9266
  buttonChoice("ink-stamp"),
9166
9267
  buttonChoice("showtime-pill")
9167
9268
  ],
9168
- paletteVariantChoices: [paletteChoice("warm-dark-ember")]
9269
+ paletteRecommendations: [paletteRecommendation("warm-dark-ember")]
9169
9270
  })
9170
9271
  ];
9171
9272
  new Map(curatedSiteStyles.map((style) => [style.id, style]));
@@ -11709,52 +11810,53 @@ const containerResponsiveThemeCss = `/*
11709
11810
 
11710
11811
  /* Semantic spacing tokens (replaces Tailwind maps in src/system/spacing.ts) */
11711
11812
  .rb-section-pad-none {
11712
- padding-top: 0;
11713
- padding-bottom: 0;
11813
+ --rb-section-pad-y: 0rem;
11814
+ padding-top: var(--rb-section-pad-y);
11815
+ padding-bottom: var(--rb-section-pad-y);
11714
11816
  }
11715
11817
  .rb-section-pad-compact {
11716
- padding-top: 1.5rem;
11717
- padding-bottom: 1.5rem;
11818
+ --rb-section-pad-y: 1.5rem;
11819
+ padding-top: var(--rb-section-pad-y);
11820
+ padding-bottom: var(--rb-section-pad-y);
11718
11821
  }
11719
11822
  .rb-section-pad-cozy {
11720
- padding-top: 2.5rem;
11721
- padding-bottom: 2.5rem;
11823
+ --rb-section-pad-y: 2.5rem;
11824
+ padding-top: var(--rb-section-pad-y);
11825
+ padding-bottom: var(--rb-section-pad-y);
11722
11826
  }
11723
11827
  .rb-section-pad-medium {
11724
- padding-top: 3rem;
11725
- padding-bottom: 3rem;
11828
+ --rb-section-pad-y: 3rem;
11829
+ padding-top: var(--rb-section-pad-y);
11830
+ padding-bottom: var(--rb-section-pad-y);
11726
11831
  }
11727
11832
  .rb-section-pad-comfortable {
11728
- padding-top: 4rem;
11729
- padding-bottom: 4rem;
11833
+ --rb-section-pad-y: 4rem;
11834
+ padding-top: var(--rb-section-pad-y);
11835
+ padding-bottom: var(--rb-section-pad-y);
11730
11836
  }
11731
11837
  .rb-section-pad-spacious {
11732
- padding-top: 5rem;
11733
- padding-bottom: 5rem;
11838
+ --rb-section-pad-y: 5rem;
11839
+ padding-top: var(--rb-section-pad-y);
11840
+ padding-bottom: var(--rb-section-pad-y);
11734
11841
  }
11735
11842
 
11736
11843
  @container rb-site (min-width: 640px) {
11737
11844
 
11738
11845
  @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
11739
11846
  .rb-section-pad-compact {
11740
- padding-top: 2rem;
11741
- padding-bottom: 2rem;
11847
+ --rb-section-pad-y: 2rem;
11742
11848
  }
11743
11849
  .rb-section-pad-cozy {
11744
- padding-top: 3.5rem;
11745
- padding-bottom: 3.5rem;
11850
+ --rb-section-pad-y: 3.5rem;
11746
11851
  }
11747
11852
  .rb-section-pad-medium {
11748
- padding-top: 4rem;
11749
- padding-bottom: 4rem;
11853
+ --rb-section-pad-y: 4rem;
11750
11854
  }
11751
11855
  .rb-section-pad-comfortable {
11752
- padding-top: 5rem;
11753
- padding-bottom: 5rem;
11856
+ --rb-section-pad-y: 5rem;
11754
11857
  }
11755
11858
  .rb-section-pad-spacious {
11756
- padding-top: 7rem;
11757
- padding-bottom: 7rem;
11859
+ --rb-section-pad-y: 7rem;
11758
11860
  }
11759
11861
  }
11760
11862
 
@@ -13144,30 +13246,122 @@ const containerResponsiveThemeCss = `/*
13144
13246
  :where(.theme-scope) .header-logo-text {
13145
13247
  font-size: 1.125rem; /* matches rb-text-lg */
13146
13248
  line-height: 1.75rem;
13249
+ margin-inline: -0.18em;
13250
+ padding-inline: 0.18em;
13147
13251
  transition: font-size 300ms var(--motion-ease, ease);
13148
13252
  }
13149
13253
 
13150
- /* Mobile: reduce site title size (~30%) to keep header compact */
13254
+ /* Centered variant uses larger title */
13255
+ :where(.theme-scope) .header-variant-centered .header-logo-text {
13256
+ font-size: 1.25rem; /* matches rb-text-xl */
13257
+ line-height: 1.75rem;
13258
+ }
13259
+
13260
+ :where(.theme-scope) .header-logo-size-compact .header-logo-text {
13261
+ font-size: 0.95rem;
13262
+ line-height: 1.5rem;
13263
+ }
13264
+ :where(.theme-scope) .header-logo-size-standard .header-logo-text {
13265
+ font-size: 1.125rem;
13266
+ line-height: 1.75rem;
13267
+ }
13268
+ :where(.theme-scope) .header-logo-size-generous .header-logo-text {
13269
+ font-size: 1.35rem;
13270
+ line-height: 1.9rem;
13271
+ }
13272
+ :where(.theme-scope) .header-logo-size-display .header-logo-text {
13273
+ font-size: 1.75rem;
13274
+ line-height: 2.25rem;
13275
+ }
13276
+
13277
+ :where(.theme-scope)
13278
+ .header-variant-centered
13279
+ .header-logo-size-compact
13280
+ .header-logo-text {
13281
+ font-size: 1.125rem;
13282
+ line-height: 1.75rem;
13283
+ }
13284
+ :where(.theme-scope)
13285
+ .header-variant-centered
13286
+ .header-logo-size-standard
13287
+ .header-logo-text {
13288
+ font-size: 1.25rem;
13289
+ line-height: 1.75rem;
13290
+ }
13291
+ :where(.theme-scope)
13292
+ .header-variant-centered
13293
+ .header-logo-size-generous
13294
+ .header-logo-text {
13295
+ font-size: 1.6rem;
13296
+ line-height: 2rem;
13297
+ }
13298
+ :where(.theme-scope)
13299
+ .header-variant-centered
13300
+ .header-logo-size-display
13301
+ .header-logo-text {
13302
+ font-size: 2.1rem;
13303
+ line-height: 2.5rem;
13304
+ }
13305
+
13306
+ /* Mobile: reduce site title size to keep header compact */
13151
13307
  @container rb-site (max-width: 767px) {
13152
13308
  @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
13153
- :where(.theme-scope) .header-logo-text {
13309
+ :where(.theme-scope) .header-logo-text,
13310
+ :where(.theme-scope) .header-logo-size-standard .header-logo-text {
13154
13311
  font-size: 0.8rem;
13155
13312
  line-height: 1.25rem;
13156
13313
  }
13157
13314
 
13158
- :where(.theme-scope) .header-variant-centered .header-logo-text {
13315
+ :where(.theme-scope) .header-logo-size-compact .header-logo-text {
13316
+ font-size: 0.75rem;
13317
+ line-height: 1.15rem;
13318
+ }
13319
+
13320
+ :where(.theme-scope) .header-logo-size-generous .header-logo-text {
13321
+ font-size: 1rem;
13322
+ line-height: 1.4rem;
13323
+ }
13324
+
13325
+ :where(.theme-scope) .header-logo-size-display .header-logo-text {
13326
+ font-size: 1.25rem;
13327
+ line-height: 1.65rem;
13328
+ }
13329
+
13330
+ :where(.theme-scope) .header-variant-centered .header-logo-text,
13331
+ :where(.theme-scope)
13332
+ .header-variant-centered
13333
+ .header-logo-size-standard
13334
+ .header-logo-text {
13159
13335
  font-size: 0.875rem;
13160
13336
  line-height: 1.25rem;
13161
13337
  }
13338
+
13339
+ :where(.theme-scope)
13340
+ .header-variant-centered
13341
+ .header-logo-size-compact
13342
+ .header-logo-text {
13343
+ font-size: 0.8rem;
13344
+ line-height: 1.2rem;
13345
+ }
13346
+
13347
+ :where(.theme-scope)
13348
+ .header-variant-centered
13349
+ .header-logo-size-generous
13350
+ .header-logo-text {
13351
+ font-size: 1.125rem;
13352
+ line-height: 1.5rem;
13353
+ }
13354
+
13355
+ :where(.theme-scope)
13356
+ .header-variant-centered
13357
+ .header-logo-size-display
13358
+ .header-logo-text {
13359
+ font-size: 1.35rem;
13360
+ line-height: 1.75rem;
13361
+ }
13162
13362
  }
13163
13363
  }
13164
13364
 
13165
- /* Centered variant uses larger title */
13166
- :where(.theme-scope) .header-variant-centered .header-logo-text {
13167
- font-size: 1.25rem; /* matches rb-text-xl */
13168
- line-height: 1.75rem;
13169
- }
13170
-
13171
13365
  /* =================================================================
13172
13366
  Shrink on Scroll - Logo & Title
13173
13367
  ================================================================= */
@@ -20857,11 +21051,31 @@ const containerResponsiveThemeCss = `/*
20857
21051
  object-fit: contain;
20858
21052
  }
20859
21053
 
21054
+ :where(.theme-scope) .rb-feature-card-icon-zone--generated {
21055
+ align-self: center;
21056
+ inline-size: min(var(--rb-feature-card-generated-icon-size, 75px), 100%);
21057
+ max-inline-size: 100%;
21058
+ block-size: auto;
21059
+ aspect-ratio: 1;
21060
+ margin-inline: auto;
21061
+ padding: 0;
21062
+ border: 0;
21063
+ border-radius: 0;
21064
+ background: transparent;
21065
+ box-shadow: none;
21066
+ }
21067
+
20860
21068
  :where(.theme-scope) .rb-feature-card-icon-zone--plain .rb-feature-card-icon {
20861
21069
  width: 1.5rem;
20862
21070
  height: 1.5rem;
20863
21071
  }
20864
21072
 
21073
+ :where(.theme-scope) .rb-feature-card-icon-zone--generated .rb-feature-card-icon--generated {
21074
+ inline-size: 100%;
21075
+ max-inline-size: 100%;
21076
+ block-size: 100%;
21077
+ }
21078
+
20865
21079
  /* --- Card marker mode (icons / numbers / none) -----------------------------
20866
21080
  *
20867
21081
  * The icon zone and the number zone both sit in the DOM; the grid's