@riverbankcms/sdk 0.103.0 → 0.104.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 (156) hide show
  1. package/dist/{PreviewEditorSidebar-DkNpCPja.mjs → PreviewEditorSidebar-CmaPXdKu.mjs} +148 -128
  2. package/dist/{PreviewEditorUI-DeNKtqk3.mjs → PreviewEditorUI-C5xRTh2b.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-ZF6TXq5Q.mjs → PreviewQueryProvider-CStABBUh.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-5bCsXK2y.mjs → SdkPreviewModeRuntime-Eks51NcN.mjs} +1204 -566
  5. package/dist/{SiteChromeCustomizeContext-CO1sTK_W.mjs → SiteChromeCustomizeContext-Bt8zb3qu.mjs} +5330 -4533
  6. package/dist/_dts/api/src/bookingVerticals.d.ts +64 -1
  7. package/dist/_dts/api/src/contentRuntime.d.ts +6 -3
  8. package/dist/_dts/api/src/endpoints.d.ts +10 -3
  9. package/dist/_dts/api/src/index.d.ts +1 -1
  10. package/dist/_dts/api/src/siteIcons.d.ts +39 -43
  11. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -3
  12. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +36 -7
  13. package/dist/_dts/block-form/src/widgets/SliderField/SliderField.d.ts +3 -3
  14. package/dist/_dts/block-form/src/widgets/SliderField/sliderValue.d.ts +36 -0
  15. package/dist/_dts/block-form/src/widgets/utils/readNumericUiConfig.d.ts +3 -0
  16. package/dist/_dts/blocks/src/index.d.ts +1 -1
  17. package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +29 -29
  18. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +1 -0
  19. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -0
  20. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +135 -0
  21. package/dist/_dts/blocks/src/system/icons/generatedAssets.d.ts +28 -0
  22. package/dist/_dts/blocks/src/system/icons/index.d.ts +1 -0
  23. package/dist/_dts/blocks/src/system/icons/value.d.ts +3 -6
  24. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +240 -0
  25. package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +1 -0
  26. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +2 -0
  27. package/dist/_dts/content-editor/src/ui/stores/generatedIconAssetsStore.d.ts +9 -0
  28. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +208 -0
  29. package/dist/_dts/editor/src/index.d.ts +3 -1
  30. package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +14 -6
  31. package/dist/_dts/editor/src/primitives/rich-text/RichTextToolbar.d.ts +23 -4
  32. package/dist/_dts/editor/src/primitives/rich-text/config.d.ts +6 -0
  33. package/dist/_dts/editor/src/primitives/rich-text/extensions/RichTextLink.d.ts +1 -0
  34. package/dist/_dts/editor/src/primitives/rich-text/paste.d.ts +10 -0
  35. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +7 -0
  36. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +2 -1
  37. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +4 -4
  38. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +2 -3
  39. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +4 -4
  40. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +4 -4
  41. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +3 -3
  42. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +2 -3
  43. package/dist/_dts/editor-blocks/src/block-editor/blockHeaderActionPlan.d.ts +1 -5
  44. package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +25 -19
  45. package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +32 -0
  46. package/dist/_dts/editor-blocks/src/widgets/icon-picker/GeneratedIconLibraryContext.d.ts +28 -0
  47. package/dist/_dts/editor-blocks/src/widgets/icon-picker/index.d.ts +2 -0
  48. package/dist/_dts/editor-blocks/src/widgets/icon-picker/loaders.d.ts +7 -0
  49. package/dist/_dts/preview-next/src/client/preview/CustomizeBackgroundControlRows.d.ts +15 -0
  50. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
  51. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
  52. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -1
  53. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +4 -3
  54. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +4 -3
  55. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +4 -3
  56. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +3 -4
  57. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +5 -4
  58. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +44 -18
  59. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +4 -5
  60. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +22 -1
  61. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +12 -4
  62. package/dist/_dts/sdk/src/client/management/types.d.ts +3 -0
  63. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +0 -1
  64. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -2
  65. package/dist/_dts/sdk/src/version.d.ts +1 -1
  66. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  67. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +9 -9
  68. package/dist/_dts/theme-core/src/navigation/types.d.ts +2 -0
  69. package/dist/_dts/theme-core/src/palette/colors.d.ts +84 -0
  70. package/dist/_dts/theme-core/src/palette/{variants → curated}/brand-led.d.ts +12 -24
  71. package/dist/_dts/theme-core/src/palette/{variants → curated}/high-contrast.d.ts +9 -18
  72. package/dist/_dts/theme-core/src/palette/{variants → curated}/index.d.ts +67 -119
  73. package/dist/_dts/theme-core/src/palette/{variants → curated}/soft-natural.d.ts +12 -24
  74. package/dist/_dts/theme-core/src/palette/{variants → curated}/types.d.ts +50 -60
  75. package/dist/_dts/theme-core/src/palette/{variants → curated}/warm-dark.d.ts +6 -12
  76. package/dist/_dts/theme-core/src/palette/{variants → curated}/warm-neutral.d.ts +12 -24
  77. package/dist/_dts/theme-core/src/palette/editorState.d.ts +45 -0
  78. package/dist/_dts/theme-core/src/palette/index.d.ts +25 -14
  79. package/dist/_dts/theme-core/src/palette/legacyRuntimeProjection.d.ts +55 -0
  80. package/dist/_dts/theme-core/src/palette/legacySelection.d.ts +34 -0
  81. package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +58 -0
  82. package/dist/_dts/theme-core/src/palette/paletteCompatibilityTransition.d.ts +232 -0
  83. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +118 -0
  84. package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +50 -0
  85. package/dist/_dts/theme-core/src/palette/selection.d.ts +72 -0
  86. package/dist/_dts/theme-core/src/palette/sitePalettePersistence.d.ts +34 -0
  87. package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +58 -0
  88. package/dist/_dts/theme-core/src/schema.d.ts +9 -0
  89. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +22 -22
  90. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  91. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +31 -9
  92. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +22 -16
  93. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +6 -5
  94. package/dist/_dts/theme-core/src/site-styles/themeParity.d.ts +21 -0
  95. package/dist/_dts/ui/src/palette/PaletteTokenEditor.d.ts +2 -1
  96. package/dist/cli/index.mjs +7805 -7449
  97. package/dist/client/{DiscountCodeDisclosure-ChVZwVtS.mjs → DiscountCodeDisclosure-Dit2aItR.mjs} +1 -1
  98. package/dist/client/{EventCombined.client-PZtXbH6R.mjs → EventCombined.client-BnREyCjf.mjs} +3 -3
  99. package/dist/client/{EventListing.client-C4AMTXec.mjs → EventListing.client-0uHld51x.mjs} +2 -2
  100. package/dist/client/{LeafletStaticMap-B0w8_i0u.mjs → LeafletStaticMap-DJcvSfmj.mjs} +1 -1
  101. package/dist/client/{MagicLinkForm-DF0ZGhIu.mjs → MagicLinkForm-EAsIktfw.mjs} +2 -2
  102. package/dist/client/{StepIndicator-PccQ89Ct.mjs → StepIndicator-CRR17tYI.mjs} +2 -2
  103. package/dist/client/{accordion-CTNWT1lk.mjs → accordion-B47HIuuH.mjs} +1 -1
  104. package/dist/client/{bookingForm-DYixwPqP.mjs → bookingForm-I1E-8F9P.mjs} +6 -6
  105. package/dist/client/{buttons-CySQwlFs.mjs → buttons-BbPn8OKA.mjs} +1 -1
  106. package/dist/client/{carousel-W75iYR0M.mjs → carousel-OlM7SyBs.mjs} +1 -1
  107. package/dist/client/{cart-Ca_DGWQq.mjs → cart-BKpG5jz6.mjs} +3 -3
  108. package/dist/client/{checkout-STgKTsNh.mjs → checkout-Dmmr6qoU.mjs} +3 -3
  109. package/dist/client/client.mjs +8706 -8320
  110. package/dist/client/{courseRegistration-DQI1cu1u.mjs → courseRegistration-CflZiqGk.mjs} +7 -7
  111. package/dist/client/{eventCalendar-BJrHpofg.mjs → eventCalendar-BvoLWcp-.mjs} +5 -5
  112. package/dist/client/{eventCombined-DPtqBHaH.mjs → eventCombined-DsrO8t_t.mjs} +2 -2
  113. package/dist/client/{eventDetails-Brt31CDo.mjs → eventDetails-C3hxgcJm.mjs} +3 -3
  114. package/dist/client/{eventListing-BrClHJOq.mjs → eventListing-C-hb237X.mjs} +2 -2
  115. package/dist/client/{eventRegistration-DxlNlVUC.mjs → eventRegistration-B0gyzDGi.mjs} +7 -7
  116. package/dist/client/{form-Vp5cGzDF.mjs → form-C_RUi6oJ.mjs} +2 -2
  117. package/dist/client/{headerSection-DL2xjRgW.mjs → headerSection-IKQiD2U0.mjs} +3 -3
  118. package/dist/client/hooks.mjs +4845 -4663
  119. package/dist/client/{locationMap-B0EjoXQS.mjs → locationMap-8ZBrMzRJ.mjs} +2 -2
  120. package/dist/client/{newsletterForm-BlV9VRlq.mjs → newsletterForm-CYk3ucwj.mjs} +2 -2
  121. package/dist/client/{pricing-DmRD7Tjx.mjs → pricing-B5GmvfIH.mjs} +1 -1
  122. package/dist/client/{productDetail-BLTQsY2f.mjs → productDetail-BjS2Dqzo.mjs} +3 -3
  123. package/dist/client/{productList-R8lsMpRs.mjs → productList-BOHvC8My.mjs} +3 -3
  124. package/dist/client/{propsDecoder-DgAshF92.mjs → propsDecoder-WS6UEJwZ.mjs} +7 -0
  125. package/dist/client/rendering/client.mjs +3606 -3281
  126. package/dist/client/rendering/islands.mjs +18 -18
  127. package/dist/client/rendering.mjs +8569 -8190
  128. package/dist/client/{shop-DWjyje1s.mjs → shop-CON03-wN.mjs} +6 -6
  129. package/dist/client/{shop-commerce-CSKCR87d.mjs → shop-commerce-DlqrFgH8.mjs} +5 -5
  130. package/dist/client/{shop-commerce-store-DxPnE-iN.mjs → shop-commerce-store-l74-Kne6.mjs} +1 -1
  131. package/dist/client/{shopShared-OOeAkFq7.mjs → shopShared-CQheEXSg.mjs} +2 -2
  132. package/dist/client/{useDiscountCodeUi-Bp6X7XgG.mjs → useDiscountCodeUi-v6OluyWl.mjs} +1 -1
  133. package/dist/client/{useEventFilters-B489x9TO.mjs → useEventFilters-BqSTcNOf.mjs} +3 -3
  134. package/dist/client/{usePolling-BKP66stL.mjs → usePolling-DMfADjIF.mjs} +2 -2
  135. package/dist/preview-next/before-render.mjs +10 -3
  136. package/dist/preview-next/client/runtime.mjs +4 -4
  137. package/dist/preview-next/middleware.mjs +10 -3
  138. package/dist/{previewAuthStore-ByPPZqmp.mjs → previewAuthStore-CfquDtTh.mjs} +10 -3
  139. package/dist/{sdk-runtime-C8whifOy.mjs → sdk-runtime-BUmJ0DaT.mjs} +2 -2
  140. package/dist/{separator-CM2C5Axs.mjs → separator-Dd-JYok7.mjs} +1 -1
  141. package/dist/server/components.mjs +9871 -9557
  142. package/dist/server/config-validation.mjs +4869 -4687
  143. package/dist/server/config.mjs +4869 -4687
  144. package/dist/server/data.mjs +4846 -4664
  145. package/dist/server/index.mjs +11 -4
  146. package/dist/server/next.mjs +8665 -8344
  147. package/dist/server/page-converter.mjs +4749 -4575
  148. package/dist/server/prebuild.mjs +1 -1
  149. package/dist/server/rendering/server.mjs +9816 -9586
  150. package/dist/server/rendering.mjs +9880 -9566
  151. package/dist/server/routing.mjs +4975 -4704
  152. package/dist/server/server.mjs +4819 -4630
  153. package/dist/server/theme-bridge.mjs +207 -114
  154. package/dist/server/theme.mjs +92 -91
  155. package/dist/styles/index.css +20 -0
  156. 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.
@@ -3978,36 +3979,108 @@ function generateShadowCssVars(theme) {
3978
3979
  };
3979
3980
  }
3980
3981
  //#endregion
3981
- //#region ../theme-core/src/palette/variants/types.ts
3982
- function asPaletteVariantId(value) {
3983
- 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");
3984
4065
  return value;
3985
4066
  }
3986
- const paletteVariantIdSchema = z$1.string().min(1).transform((value) => asPaletteVariantId(value));
3987
- const hexColorSchema = z$1.string().regex(/^#[0-9a-f]{6}$/, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
3988
- /**
3989
- * Variant-local palette colour schema. Tightens `paletteColorSchema` (which
3990
- * accepts any non-empty `name`) so unknown token names like `'priamry'` cannot
3991
- * be parsed into a curated variant; the runtime contract and the static
3992
- * `PaletteColor` type now agree.
3993
- */
3994
- const variantPaletteColorSchema = paletteColorSchema.extend({ name: paletteTokenNameSchema });
4067
+ const curatedPaletteIdSchema = z$1.string().min(1).transform((value) => asCuratedPaletteId(value));
3995
4068
  z$1.object({
3996
- id: paletteVariantIdSchema,
4069
+ id: curatedPaletteIdSchema,
3997
4070
  name: z$1.string().min(1),
3998
4071
  description: z$1.string().min(1),
3999
4072
  tags: styleTagsSchema,
4000
- mode: z$1.enum(["light", "dark"]),
4001
- colors: z$1.array(variantPaletteColorSchema).min(1)
4073
+ mode: paletteModeSchema,
4074
+ colors: paletteColorsSchema
4002
4075
  });
4003
- function definePaletteVariant(input) {
4076
+ function defineCuratedPalette(input) {
4004
4077
  return {
4005
- id: asPaletteVariantId(input.id),
4078
+ id: asCuratedPaletteId(input.id),
4006
4079
  name: input.name,
4007
4080
  description: input.description,
4008
4081
  tags: input.tags,
4009
4082
  mode: input.mode,
4010
- colors: input.colors
4083
+ colors: requirePaletteColorsFromEntries(input.colors)
4011
4084
  };
4012
4085
  }
4013
4086
  z$1.object({
@@ -4026,12 +4099,12 @@ z$1.object({
4026
4099
  border: hexColorSchema.optional()
4027
4100
  }).strict().transform((value) => value);
4028
4101
  //#endregion
4029
- //#region ../theme-core/src/palette/variants/brand-led.ts
4102
+ //#region ../theme-core/src/palette/curated/brand-led.ts
4030
4103
  /**
4031
4104
  * Brand-led family — confident, modern, contemporary brand voices. Pairs
4032
4105
  * with Clear Professional, Bright Community, Practical Services site styles.
4033
4106
  */
4034
- const brandLedCool = definePaletteVariant({
4107
+ const brandLedCool = defineCuratedPalette({
4035
4108
  id: "brand-led-cool",
4036
4109
  name: "Brand-led — Cool",
4037
4110
  description: "Confident blue primary with slate neutrals.",
@@ -4096,7 +4169,7 @@ const brandLedCool = definePaletteVariant({
4096
4169
  }
4097
4170
  ]
4098
4171
  });
4099
- const brandLedWarm = definePaletteVariant({
4172
+ const brandLedWarm = defineCuratedPalette({
4100
4173
  id: "brand-led-warm",
4101
4174
  name: "Brand-led — Warm",
4102
4175
  description: "Sunset orange primary with warm grey neutrals.",
@@ -4161,7 +4234,7 @@ const brandLedWarm = definePaletteVariant({
4161
4234
  }
4162
4235
  ]
4163
4236
  });
4164
- const brandLedJewel = definePaletteVariant({
4237
+ const brandLedJewel = defineCuratedPalette({
4165
4238
  id: "brand-led-jewel",
4166
4239
  name: "Brand-led — Jewel",
4167
4240
  description: "Deep emerald primary with rich neutrals.",
@@ -4226,7 +4299,7 @@ const brandLedJewel = definePaletteVariant({
4226
4299
  }
4227
4300
  ]
4228
4301
  });
4229
- const brandLedBurgundyGold = definePaletteVariant({
4302
+ const brandLedBurgundyGold = defineCuratedPalette({
4230
4303
  id: "brand-led-burgundy-gold",
4231
4304
  name: "Brand-led — Burgundy Gold",
4232
4305
  description: "Deep burgundy with warm gold accents and soft neutral grounds.",
@@ -4292,12 +4365,12 @@ const brandLedBurgundyGold = definePaletteVariant({
4292
4365
  ]
4293
4366
  });
4294
4367
  //#endregion
4295
- //#region ../theme-core/src/palette/variants/high-contrast.ts
4368
+ //#region ../theme-core/src/palette/curated/high-contrast.ts
4296
4369
  /**
4297
4370
  * High-contrast family — editorial and minimal voices with high legibility.
4298
4371
  * Pairs with Quiet Luxury, Bold Launch, Practical Services site styles.
4299
4372
  */
4300
- const highContrastInk = definePaletteVariant({
4373
+ const highContrastInk = defineCuratedPalette({
4301
4374
  id: "high-contrast-ink",
4302
4375
  name: "High Contrast — Ink",
4303
4376
  description: "Near-black primary with cool greys.",
@@ -4362,7 +4435,7 @@ const highContrastInk = definePaletteVariant({
4362
4435
  }
4363
4436
  ]
4364
4437
  });
4365
- const highContrastCharcoal = definePaletteVariant({
4438
+ const highContrastCharcoal = defineCuratedPalette({
4366
4439
  id: "high-contrast-charcoal",
4367
4440
  name: "High Contrast — Charcoal",
4368
4441
  description: "Warm charcoal primary on a soft cream ground.",
@@ -4427,7 +4500,7 @@ const highContrastCharcoal = definePaletteVariant({
4427
4500
  }
4428
4501
  ]
4429
4502
  });
4430
- const highContrastMonochrome = definePaletteVariant({
4503
+ const highContrastMonochrome = defineCuratedPalette({
4431
4504
  id: "high-contrast-monochrome",
4432
4505
  name: "High Contrast — Monochrome",
4433
4506
  description: "Pure black-on-white with a single saturated accent.",
@@ -4493,12 +4566,12 @@ const highContrastMonochrome = definePaletteVariant({
4493
4566
  ]
4494
4567
  });
4495
4568
  //#endregion
4496
- //#region ../theme-core/src/palette/variants/soft-natural.ts
4569
+ //#region ../theme-core/src/palette/curated/soft-natural.ts
4497
4570
  /**
4498
4571
  * Soft-natural family — calm, organic, plant-led voices. Pairs with Calm
4499
4572
  * Studio, Modern Wellness, Warm Editorial site styles.
4500
4573
  */
4501
- const softNaturalSage = definePaletteVariant({
4574
+ const softNaturalSage = defineCuratedPalette({
4502
4575
  id: "soft-natural-sage",
4503
4576
  name: "Soft Natural — Sage",
4504
4577
  description: "Olive sage primary on an off-white ground.",
@@ -4563,7 +4636,7 @@ const softNaturalSage = definePaletteVariant({
4563
4636
  }
4564
4637
  ]
4565
4638
  });
4566
- const softNaturalStone = definePaletteVariant({
4639
+ const softNaturalStone = defineCuratedPalette({
4567
4640
  id: "soft-natural-stone",
4568
4641
  name: "Soft Natural — Stone",
4569
4642
  description: "River-stone grey-green primary with cool neutrals.",
@@ -4628,7 +4701,7 @@ const softNaturalStone = definePaletteVariant({
4628
4701
  }
4629
4702
  ]
4630
4703
  });
4631
- const softNaturalWatercolor = definePaletteVariant({
4704
+ const softNaturalWatercolor = defineCuratedPalette({
4632
4705
  id: "soft-natural-watercolor",
4633
4706
  name: "Soft Natural — Watercolor",
4634
4707
  description: "Soft sand primary with watercolour sage accents.",
@@ -4693,7 +4766,7 @@ const softNaturalWatercolor = definePaletteVariant({
4693
4766
  }
4694
4767
  ]
4695
4768
  });
4696
- const softNaturalLilac = definePaletteVariant({
4769
+ const softNaturalLilac = defineCuratedPalette({
4697
4770
  id: "soft-natural-lilac",
4698
4771
  name: "Soft Natural — Lilac",
4699
4772
  description: "Watercolour periwinkle-lilac primary with warm ivory grounds and a sage accent.",
@@ -4759,13 +4832,13 @@ const softNaturalLilac = definePaletteVariant({
4759
4832
  ]
4760
4833
  });
4761
4834
  //#endregion
4762
- //#region ../theme-core/src/palette/variants/index.ts
4763
- const paletteVariants = [
4835
+ //#region ../theme-core/src/palette/curated/index.ts
4836
+ const curatedPalettes = [
4764
4837
  brandLedCool,
4765
4838
  brandLedWarm,
4766
4839
  brandLedJewel,
4767
4840
  brandLedBurgundyGold,
4768
- definePaletteVariant({
4841
+ defineCuratedPalette({
4769
4842
  id: "warm-neutral-clay",
4770
4843
  name: "Warm Neutral — Clay",
4771
4844
  description: "Terracotta primary on a cream ground.",
@@ -4830,7 +4903,7 @@ const paletteVariants = [
4830
4903
  }
4831
4904
  ]
4832
4905
  }),
4833
- definePaletteVariant({
4906
+ defineCuratedPalette({
4834
4907
  id: "warm-neutral-cream",
4835
4908
  name: "Warm Neutral — Cream",
4836
4909
  description: "Soft sand primary with pale cream surfaces.",
@@ -4895,7 +4968,7 @@ const paletteVariants = [
4895
4968
  }
4896
4969
  ]
4897
4970
  }),
4898
- definePaletteVariant({
4971
+ defineCuratedPalette({
4899
4972
  id: "warm-neutral-soft-earth",
4900
4973
  name: "Warm Neutral — Soft Earth",
4901
4974
  description: "Cream ground with terracotta primary, clay accents, and olive depth.",
@@ -4960,7 +5033,7 @@ const paletteVariants = [
4960
5033
  }
4961
5034
  ]
4962
5035
  }),
4963
- definePaletteVariant({
5036
+ defineCuratedPalette({
4964
5037
  id: "warm-neutral-forest",
4965
5038
  name: "Warm Neutral — Forest",
4966
5039
  description: "Deep forest green primary with earthy neutrals.",
@@ -5032,7 +5105,7 @@ const paletteVariants = [
5032
5105
  softNaturalStone,
5033
5106
  softNaturalWatercolor,
5034
5107
  softNaturalLilac,
5035
- definePaletteVariant({
5108
+ defineCuratedPalette({
5036
5109
  id: "warm-dark-ember",
5037
5110
  name: "Warm Dark — Ember",
5038
5111
  description: "Deep clay-brown ground with burnt-orange accent and warm cream text.",
@@ -5097,7 +5170,7 @@ const paletteVariants = [
5097
5170
  }
5098
5171
  ]
5099
5172
  }),
5100
- definePaletteVariant({
5173
+ defineCuratedPalette({
5101
5174
  id: "warm-dark-kirtan-gold",
5102
5175
  name: "Warm Dark — Kirtan Gold",
5103
5176
  description: "Deep plum ground with pale gold primary, rose accent, and soft devotional text.",
@@ -5163,7 +5236,7 @@ const paletteVariants = [
5163
5236
  ]
5164
5237
  })
5165
5238
  ];
5166
- new Map(paletteVariants.map((v) => [v.id, v]));
5239
+ new Map(curatedPalettes.map((v) => [v.id, v]));
5167
5240
  //#endregion
5168
5241
  //#region ../theme-core/src/accordions/siteStyleDefaults.ts
5169
5242
  /**
@@ -7936,7 +8009,7 @@ function defineCuratedSiteStyle(input) {
7936
8009
  recommendedHeaderLookIds: legacyHeaderLookIds.map(asHeaderLookId),
7937
8010
  recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(asFooterLookId),
7938
8011
  buttonPersonalityChoices: input.buttonPersonalityChoices,
7939
- paletteVariantChoices: input.paletteVariantChoices,
8012
+ paletteRecommendations: input.paletteRecommendations,
7940
8013
  typographyPresetChoices,
7941
8014
  defaultTypographyPresetId
7942
8015
  };
@@ -7947,11 +8020,11 @@ function buttonChoice(id, note) {
7947
8020
  note
7948
8021
  } : { id: asButtonPersonalityId(id) };
7949
8022
  }
7950
- function paletteChoice(id, note) {
8023
+ function paletteRecommendation(id, note) {
7951
8024
  return note ? {
7952
- id: asPaletteVariantId(id),
8025
+ id: asCuratedPaletteId(id),
7953
8026
  note
7954
- } : { id: asPaletteVariantId(id) };
8027
+ } : { id: asCuratedPaletteId(id) };
7955
8028
  }
7956
8029
  function headerLayoutChoice(id, note) {
7957
8030
  return note ? {
@@ -8165,11 +8238,11 @@ const curatedSiteStyles = [
8165
8238
  buttonChoice("editorial-link"),
8166
8239
  buttonChoice("brushed-wash")
8167
8240
  ],
8168
- paletteVariantChoices: [
8169
- paletteChoice("soft-natural-sage"),
8170
- paletteChoice("soft-natural-stone"),
8171
- paletteChoice("warm-neutral-clay"),
8172
- 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")
8173
8246
  ]
8174
8247
  }),
8175
8248
  defineCuratedSiteStyle({
@@ -8201,10 +8274,10 @@ const curatedSiteStyles = [
8201
8274
  buttonChoice("soft-pill"),
8202
8275
  buttonChoice("editorial-link")
8203
8276
  ],
8204
- paletteVariantChoices: [
8205
- paletteChoice("brand-led-cool"),
8206
- paletteChoice("high-contrast-ink"),
8207
- paletteChoice("brand-led-jewel")
8277
+ paletteRecommendations: [
8278
+ paletteRecommendation("brand-led-cool"),
8279
+ paletteRecommendation("high-contrast-ink"),
8280
+ paletteRecommendation("brand-led-jewel")
8208
8281
  ]
8209
8282
  }),
8210
8283
  defineCuratedSiteStyle({
@@ -8240,11 +8313,11 @@ const curatedSiteStyles = [
8240
8313
  buttonChoice("soft-pill"),
8241
8314
  buttonChoice("brushed-wash")
8242
8315
  ],
8243
- paletteVariantChoices: [
8244
- paletteChoice("warm-neutral-cream"),
8245
- paletteChoice("warm-neutral-clay"),
8246
- paletteChoice("warm-neutral-forest"),
8247
- 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")
8248
8321
  ]
8249
8322
  }),
8250
8323
  defineCuratedSiteStyle({
@@ -8280,10 +8353,10 @@ const curatedSiteStyles = [
8280
8353
  buttonChoice("brushed-wash"),
8281
8354
  buttonChoice("confident-chip")
8282
8355
  ],
8283
- paletteVariantChoices: [
8284
- paletteChoice("brand-led-warm"),
8285
- paletteChoice("brand-led-jewel"),
8286
- paletteChoice("soft-natural-watercolor")
8356
+ paletteRecommendations: [
8357
+ paletteRecommendation("brand-led-warm"),
8358
+ paletteRecommendation("brand-led-jewel"),
8359
+ paletteRecommendation("soft-natural-watercolor")
8287
8360
  ]
8288
8361
  }),
8289
8362
  defineCuratedSiteStyle({
@@ -8341,10 +8414,10 @@ const curatedSiteStyles = [
8341
8414
  buttonChoice("confident-chip"),
8342
8415
  buttonChoice("soft-pill")
8343
8416
  ],
8344
- paletteVariantChoices: [
8345
- paletteChoice("high-contrast-charcoal"),
8346
- paletteChoice("high-contrast-ink"),
8347
- paletteChoice("warm-neutral-cream")
8417
+ paletteRecommendations: [
8418
+ paletteRecommendation("high-contrast-charcoal"),
8419
+ paletteRecommendation("high-contrast-ink"),
8420
+ paletteRecommendation("warm-neutral-cream")
8348
8421
  ]
8349
8422
  }),
8350
8423
  defineCuratedSiteStyle({
@@ -8403,10 +8476,10 @@ const curatedSiteStyles = [
8403
8476
  buttonChoice("pebble"),
8404
8477
  buttonChoice("ink-stamp")
8405
8478
  ],
8406
- paletteVariantChoices: [
8407
- paletteChoice("brand-led-cool"),
8408
- paletteChoice("high-contrast-ink"),
8409
- paletteChoice("brand-led-warm")
8479
+ paletteRecommendations: [
8480
+ paletteRecommendation("brand-led-cool"),
8481
+ paletteRecommendation("high-contrast-ink"),
8482
+ paletteRecommendation("brand-led-warm")
8410
8483
  ]
8411
8484
  }),
8412
8485
  defineCuratedSiteStyle({
@@ -8442,10 +8515,10 @@ const curatedSiteStyles = [
8442
8515
  buttonChoice("pebble"),
8443
8516
  buttonChoice("confident-chip")
8444
8517
  ],
8445
- paletteVariantChoices: [
8446
- paletteChoice("soft-natural-sage"),
8447
- paletteChoice("soft-natural-stone"),
8448
- paletteChoice("warm-neutral-forest")
8518
+ paletteRecommendations: [
8519
+ paletteRecommendation("soft-natural-sage"),
8520
+ paletteRecommendation("soft-natural-stone"),
8521
+ paletteRecommendation("warm-neutral-forest")
8449
8522
  ]
8450
8523
  }),
8451
8524
  defineCuratedSiteStyle({
@@ -8515,10 +8588,10 @@ const curatedSiteStyles = [
8515
8588
  buttonChoice("soft-pill"),
8516
8589
  buttonChoice("editorial-link")
8517
8590
  ],
8518
- paletteVariantChoices: [
8519
- paletteChoice("soft-natural-stone"),
8520
- paletteChoice("soft-natural-sage"),
8521
- paletteChoice("warm-neutral-clay")
8591
+ paletteRecommendations: [
8592
+ paletteRecommendation("soft-natural-stone"),
8593
+ paletteRecommendation("soft-natural-sage"),
8594
+ paletteRecommendation("warm-neutral-clay")
8522
8595
  ]
8523
8596
  }),
8524
8597
  defineCuratedSiteStyle({
@@ -8641,11 +8714,11 @@ const curatedSiteStyles = [
8641
8714
  buttonChoice("pebble"),
8642
8715
  buttonChoice("editorial-link")
8643
8716
  ],
8644
- paletteVariantChoices: [
8645
- paletteChoice("soft-natural-lilac"),
8646
- paletteChoice("soft-natural-watercolor"),
8647
- paletteChoice("soft-natural-stone"),
8648
- 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")
8649
8722
  ]
8650
8723
  }),
8651
8724
  defineCuratedSiteStyle({
@@ -8715,10 +8788,10 @@ const curatedSiteStyles = [
8715
8788
  buttonChoice("soft-pill"),
8716
8789
  buttonChoice("brushed-wash")
8717
8790
  ],
8718
- paletteVariantChoices: [
8719
- paletteChoice("warm-neutral-forest"),
8720
- paletteChoice("warm-neutral-clay"),
8721
- paletteChoice("soft-natural-stone")
8791
+ paletteRecommendations: [
8792
+ paletteRecommendation("warm-neutral-forest"),
8793
+ paletteRecommendation("warm-neutral-clay"),
8794
+ paletteRecommendation("soft-natural-stone")
8722
8795
  ]
8723
8796
  }),
8724
8797
  defineCuratedSiteStyle({
@@ -8790,11 +8863,11 @@ const curatedSiteStyles = [
8790
8863
  buttonChoice("ink-stamp"),
8791
8864
  buttonChoice("editorial-link")
8792
8865
  ],
8793
- paletteVariantChoices: [
8794
- paletteChoice("brand-led-warm"),
8795
- paletteChoice("brand-led-cool"),
8796
- paletteChoice("soft-natural-watercolor"),
8797
- 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")
8798
8871
  ]
8799
8872
  }),
8800
8873
  defineCuratedSiteStyle({
@@ -8913,11 +8986,11 @@ const curatedSiteStyles = [
8913
8986
  buttonChoice("pebble"),
8914
8987
  buttonChoice("editorial-link")
8915
8988
  ],
8916
- paletteVariantChoices: [
8917
- paletteChoice("warm-neutral-soft-earth"),
8918
- paletteChoice("warm-neutral-clay"),
8919
- paletteChoice("warm-neutral-forest"),
8920
- 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")
8921
8994
  ]
8922
8995
  }),
8923
8996
  defineCuratedSiteStyle({
@@ -8984,11 +9057,11 @@ const curatedSiteStyles = [
8984
9057
  buttonChoice("brushed-wash"),
8985
9058
  buttonChoice("pebble")
8986
9059
  ],
8987
- paletteVariantChoices: [
8988
- paletteChoice("high-contrast-monochrome"),
8989
- paletteChoice("high-contrast-ink"),
8990
- paletteChoice("brand-led-jewel"),
8991
- 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")
8992
9065
  ]
8993
9066
  }),
8994
9067
  defineCuratedSiteStyle({
@@ -9045,11 +9118,11 @@ const curatedSiteStyles = [
9045
9118
  buttonChoice("ink-stamp"),
9046
9119
  buttonChoice("brushed-wash")
9047
9120
  ],
9048
- paletteVariantChoices: [
9049
- paletteChoice("brand-led-burgundy-gold"),
9050
- paletteChoice("brand-led-jewel"),
9051
- paletteChoice("brand-led-warm"),
9052
- 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")
9053
9126
  ]
9054
9127
  }),
9055
9128
  defineCuratedSiteStyle({
@@ -9131,10 +9204,10 @@ const curatedSiteStyles = [
9131
9204
  buttonChoice("joy-stamp"),
9132
9205
  buttonChoice("ink-stamp")
9133
9206
  ],
9134
- paletteVariantChoices: [
9135
- paletteChoice("warm-dark-kirtan-gold"),
9136
- paletteChoice("warm-dark-ember"),
9137
- paletteChoice("brand-led-burgundy-gold")
9207
+ paletteRecommendations: [
9208
+ paletteRecommendation("warm-dark-kirtan-gold"),
9209
+ paletteRecommendation("warm-dark-ember"),
9210
+ paletteRecommendation("brand-led-burgundy-gold")
9138
9211
  ]
9139
9212
  }),
9140
9213
  defineCuratedSiteStyle({
@@ -9193,7 +9266,7 @@ const curatedSiteStyles = [
9193
9266
  buttonChoice("ink-stamp"),
9194
9267
  buttonChoice("showtime-pill")
9195
9268
  ],
9196
- paletteVariantChoices: [paletteChoice("warm-dark-ember")]
9269
+ paletteRecommendations: [paletteRecommendation("warm-dark-ember")]
9197
9270
  })
9198
9271
  ];
9199
9272
  new Map(curatedSiteStyles.map((style) => [style.id, style]));
@@ -20978,11 +21051,31 @@ const containerResponsiveThemeCss = `/*
20978
21051
  object-fit: contain;
20979
21052
  }
20980
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
+
20981
21068
  :where(.theme-scope) .rb-feature-card-icon-zone--plain .rb-feature-card-icon {
20982
21069
  width: 1.5rem;
20983
21070
  height: 1.5rem;
20984
21071
  }
20985
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
+
20986
21079
  /* --- Card marker mode (icons / numbers / none) -----------------------------
20987
21080
  *
20988
21081
  * The icon zone and the number zone both sit in the DOM; the grid's