@riverbankcms/sdk 0.60.1 → 0.60.6

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 (97) hide show
  1. package/dist/_dts/api/src/bookingRecords.d.ts +7 -0
  2. package/dist/_dts/api/src/bookingVerticals.d.ts +1 -0
  3. package/dist/_dts/api/src/communications.d.ts +1 -0
  4. package/dist/_dts/api/src/contentRuntime.d.ts +8 -0
  5. package/dist/_dts/api/src/endpoints.d.ts +17 -0
  6. package/dist/_dts/api/src/index.d.ts +1 -1
  7. package/dist/_dts/api/src/media.d.ts +1 -1
  8. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -2
  9. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +26 -1
  10. package/dist/_dts/api/src/siteSettings.d.ts +7 -0
  11. package/dist/_dts/api/src/types.d.ts +1 -1
  12. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -0
  13. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +1 -0
  14. package/dist/_dts/blocks/src/system/node/fragments/ctaButton.d.ts +2 -0
  15. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.server.d.ts +4 -0
  16. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.shared.d.ts +38 -0
  17. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.view.d.ts +2 -1
  18. package/dist/_dts/blocks/src/system/runtime/shared/themedButtonClass.d.ts +11 -0
  19. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +10 -2
  20. package/dist/_dts/core/src/business-address.d.ts +38 -0
  21. package/dist/_dts/core/src/index.d.ts +1 -0
  22. package/dist/_dts/core/src/participants.d.ts +32 -1
  23. package/dist/_dts/core/src/rectification.d.ts +79 -0
  24. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +28 -6
  25. package/dist/_dts/preview-next/src/client/blocks/runOptimisticCustomizeAction.d.ts +44 -0
  26. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +7 -1
  27. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +12 -1
  28. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +6 -1
  29. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +20 -0
  30. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +101 -0
  31. package/dist/_dts/sdk/src/client/types.d.ts +1 -0
  32. package/dist/_dts/sdk/src/public-api/contracts.d.ts +11 -1
  33. package/dist/_dts/sdk/src/version.d.ts +1 -1
  34. package/dist/_dts/theme-core/src/buttons/constants.d.ts +9 -1
  35. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +16 -11
  36. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +9 -16
  37. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  38. package/dist/_dts/theme-core/src/buttons/personalities/brushed-wash.d.ts +16 -0
  39. package/dist/_dts/theme-core/src/buttons/personalities/confident-chip.d.ts +16 -0
  40. package/dist/_dts/theme-core/src/buttons/personalities/editorial-link.d.ts +16 -0
  41. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +95 -0
  42. package/dist/_dts/theme-core/src/buttons/personalities/ink-stamp.d.ts +16 -0
  43. package/dist/_dts/theme-core/src/buttons/personalities/pebble.d.ts +16 -0
  44. package/dist/_dts/theme-core/src/buttons/personalities/soft-pill.d.ts +16 -0
  45. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +268 -0
  46. package/dist/_dts/theme-core/src/buttons/types.d.ts +253 -72
  47. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +69 -15
  48. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
  49. package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +52 -0
  50. package/dist/_dts/theme-core/src/palette/variants/high-contrast.d.ts +52 -0
  51. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +213 -0
  52. package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +52 -0
  53. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +154 -0
  54. package/dist/_dts/theme-core/src/palette/variants/warm-neutral.d.ts +52 -0
  55. package/dist/_dts/theme-core/src/schema.d.ts +122 -10
  56. package/dist/_dts/theme-core/src/site-styles/curatedChoices.d.ts +27 -0
  57. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +48 -1
  58. package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
  59. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -0
  60. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +42 -3
  61. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +23 -1
  62. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +46 -0
  63. package/dist/_dts/ui/src/badge.d.ts +1 -1
  64. package/dist/_dts/ui/src/callout.d.ts +1 -1
  65. package/dist/_dts/ui/src/palette/ColorChooserDialog.d.ts +47 -0
  66. package/dist/_dts/ui/src/palette/ColorSlotButton.d.ts +15 -0
  67. package/dist/_dts/ui/src/palette/ColorSwatchButton.d.ts +15 -0
  68. package/dist/_dts/ui/src/palette/PaletteTokenEditor.d.ts +50 -0
  69. package/dist/_dts/ui/src/palette/hex.d.ts +23 -0
  70. package/dist/_dts/ui/src/palette/index.d.ts +14 -0
  71. package/dist/cli/index.mjs +2255 -947
  72. package/dist/client/bookings.mjs +294 -144
  73. package/dist/client/client.mjs +4053 -2600
  74. package/dist/client/hooks.mjs +3248 -2076
  75. package/dist/client/rendering/client.mjs +3377 -2165
  76. package/dist/client/rendering/islands.mjs +1911 -736
  77. package/dist/client/rendering.mjs +41897 -40445
  78. package/dist/preview-next/before-render.mjs +17 -0
  79. package/dist/preview-next/client/runtime.mjs +13511 -11313
  80. package/dist/preview-next/middleware.mjs +17 -0
  81. package/dist/server/components.mjs +4434 -3172
  82. package/dist/server/config-validation.mjs +3479 -2307
  83. package/dist/server/config.mjs +3479 -2307
  84. package/dist/server/data.mjs +3248 -2076
  85. package/dist/server/index.mjs +21 -3
  86. package/dist/server/next.mjs +3989 -2726
  87. package/dist/server/page-converter.mjs +3393 -2238
  88. package/dist/server/prebuild.mjs +1 -1
  89. package/dist/server/rendering/server.mjs +4434 -3172
  90. package/dist/server/rendering.mjs +4434 -3172
  91. package/dist/server/routing.mjs +3582 -2274
  92. package/dist/server/server.mjs +3252 -2079
  93. package/dist/server/theme-bridge.mjs +1454 -496
  94. package/dist/server/theme.mjs +1102 -505
  95. package/package.json +1 -1
  96. package/dist/_dts/preview-next/src/client/preview/PreviewSiteStyleSwitcher.d.ts +0 -11
  97. package/dist/_dts/preview-next/src/client/preview/PreviewSiteStyleSwitcher.state.d.ts +0 -43
@@ -46,172 +46,772 @@ function brandNonEmptyString(value, label) {
46
46
  return value;
47
47
  }
48
48
 
49
- // ../theme-core/src/schema.ts
50
- import { z as z12 } from "zod";
51
-
52
- // ../theme-core/src/lib/media.ts
53
- import z from "zod";
54
- var hotspotSchema = z.object({
55
- x: z.number().min(0).max(1),
56
- y: z.number().min(0).max(1),
57
- radius: z.number().optional()
58
- });
59
- var rotationSchema = z.union([z.literal(0), z.literal(90), z.literal(180), z.literal(270)]);
60
- var rectSchema = z.tuple([z.number(), z.number(), z.number(), z.number()]);
61
- var aspectCropSchema = z.object({
62
- aspect: z.preprocess((value) => value == null ? void 0 : value, z.string().optional()),
63
- rect: z.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
64
- hotspot: z.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
65
- rotation: z.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
66
- });
67
- var transformSchema = z.object({
68
- aspectCrops: z.preprocess((value) => {
69
- if (!value || typeof value !== "object" || Array.isArray(value)) {
70
- return void 0;
71
- }
72
- return value;
73
- }, z.record(z.string(), aspectCropSchema.catch({}))).optional(),
74
- rect: rectSchema.optional(),
75
- hotspot: hotspotSchema.optional(),
76
- rotation: rotationSchema.optional()
77
- });
78
- var mediaSchema = z.object({
79
- type: z.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
80
- purpose: z.string().optional(),
81
- placeholder: z.boolean().default(true).optional(),
82
- assetId: z.string().optional(),
83
- identifier: z.string().optional(),
84
- src: z.string().optional(),
85
- alt: z.string().optional(),
86
- filename: z.string().optional(),
87
- mimeType: z.string().optional(),
88
- width: z.number().optional(),
89
- height: z.number().optional(),
90
- storageBucket: z.string().optional(),
91
- storagePath: z.string().optional(),
92
- transform: transformSchema.optional()
93
- });
49
+ // ../theme-core/src/buttons/personalities/types.ts
50
+ import { z as z3 } from "zod";
94
51
 
95
52
  // ../theme-core/src/buttons/types.ts
96
- import { z as z2 } from "zod";
97
- var cornerStyleSchema = z2.enum(["square", "rounded", "pill"]);
98
- var shadowSizeSchema = z2.enum(["none", "low", "medium", "high"]);
99
- var textTransformSchema = z2.enum(["none", "uppercase", "lowercase", "capitalize"]);
100
- var fontWeightSchema = z2.union([z2.literal(500), z2.literal(600), z2.literal(700)]);
101
- var buttonTypographySchema = z2.enum(["body", "heading"]);
102
- var hoverTransformSchema = z2.enum(["none", "lift", "scale", "press"]);
103
- var hoverColorSchema = z2.enum(["none", "brighten", "darken", "saturate", "token"]);
104
- var buttonPaddingPresetSchema = z2.enum(["compact", "default", "spacious"]);
105
- var gradientStyleSchema = z2.enum(["linear", "radial", "conic"]);
106
- var gradientSharpnessSchema = z2.enum(["smooth", "medium", "hard"]);
107
- var buttonSizeNameSchema = z2.enum(["sm", "md", "lg", "xl"]);
108
- var buttonSizeConfigSchema = z2.object({
109
- padding: z2.string(),
110
- fontSize: z2.string().optional()
53
+ import { z } from "zod";
54
+ var VARIANT_ROLES = [
55
+ "primary",
56
+ "secondary",
57
+ "outline",
58
+ "ghost",
59
+ "link",
60
+ "tertiary",
61
+ "accent"
62
+ ];
63
+ var cornerStyleSchema = z.enum(["square", "rounded", "pill"]);
64
+ var shadowSizeSchema = z.enum(["none", "low", "medium", "high"]);
65
+ var textTransformSchema = z.enum(["none", "uppercase", "lowercase", "capitalize"]);
66
+ var fontWeightSchema = z.union([z.literal(500), z.literal(600), z.literal(700)]);
67
+ var buttonTypographySchema = z.enum(["body", "heading"]);
68
+ var letterSpacingSchema = z.enum(["tight", "normal", "loose"]);
69
+ var hoverTransformSchema = z.enum(["none", "lift", "scale", "press"]);
70
+ var hoverColorSchema = z.enum(["none", "brighten", "darken", "saturate", "token"]);
71
+ var buttonPaddingPresetSchema = z.enum(["compact", "default", "spacious"]);
72
+ var gradientStyleSchema = z.enum(["linear", "radial", "conic"]);
73
+ var gradientSharpnessSchema = z.enum(["smooth", "medium", "hard"]);
74
+ var prioritySchema = z.union([z.literal(1), z.literal(2), z.literal(3)]);
75
+ var variantRoleSchema = z.enum(VARIANT_ROLES);
76
+ var buttonSizeNameSchema = z.enum(["sm", "md", "lg", "xl"]);
77
+ var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
78
+ var paddingShorthandSchema = z.string().refine(
79
+ (value) => {
80
+ const parts = value.split(/\s+/).filter(Boolean);
81
+ return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
82
+ },
83
+ {
84
+ message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
85
+ }
86
+ );
87
+ var buttonSizeConfigSchema = z.object({
88
+ padding: paddingShorthandSchema,
89
+ fontSize: z.string().optional()
111
90
  });
112
- var buttonSizesSchema = z2.object({
91
+ var buttonSizesSchema = z.object({
113
92
  sm: buttonSizeConfigSchema,
114
93
  md: buttonSizeConfigSchema,
115
94
  lg: buttonSizeConfigSchema,
116
95
  xl: buttonSizeConfigSchema.optional()
117
- });
118
- var backgroundTreatmentSchema = z2.enum(["solid", "gradient", "outline", "ghost"]);
119
- var outlineHoverEffectSchema = z2.enum([
120
- "border-glow",
121
- "border-shift",
122
- "border-grow",
123
- "fill-transition",
124
- "border-trace"
125
- ]);
126
- var buttonGlobalSettingsSchema = z2.object({
96
+ }).transform(({ sm, md, lg, xl }) => ({
97
+ sm,
98
+ md,
99
+ lg,
100
+ xl: xl ?? lg
101
+ }));
102
+ var buttonGlobalSettingsSchema = z.object({
127
103
  cornerStyle: cornerStyleSchema,
128
- cornerRadius: z2.number().min(0).max(24).optional(),
104
+ cornerRadius: z.number().min(0).max(24).optional(),
129
105
  shadow: shadowSizeSchema,
130
106
  textTransform: textTransformSchema,
131
107
  fontWeight: fontWeightSchema,
132
- borderWidth: z2.union([z2.literal(1), z2.literal(2), z2.literal(3)]),
133
- // Typography source (body or heading)
108
+ /**
109
+ * @deprecated Set per-variant via `variant.border.widthClass` instead.
110
+ * Schema field is preserved so existing presets parse; the value is unread
111
+ * by the current generator and will be removed once the legacy
112
+ * `primitives/content/components/Button.tsx` slot exports are deleted.
113
+ */
114
+ borderWidth: z.union([z.literal(1), z.literal(2), z.literal(3)]),
115
+ // === Family-level typography ===
116
+ // Typography source (body or heading) — selects which theme typography pool to inherit
134
117
  typography: buttonTypographySchema.optional(),
118
+ // Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
119
+ // Sized variants get this as default; fixed variants inherit unless they override.
120
+ // Size class CSS may still override at run time for sized variants.
121
+ fontSize: z.string().optional(),
122
+ // Letter spacing applied to all variants
123
+ letterSpacing: letterSpacingSchema.optional(),
135
124
  // Italic style
136
- italic: z2.boolean().optional(),
137
- // Padding preset (applies to all variants unless overridden)
125
+ italic: z.boolean().optional(),
126
+ // Padding preset (applies to sized variants without a sizes config)
138
127
  paddingPreset: buttonPaddingPresetSchema.optional(),
139
128
  hoverTransform: hoverTransformSchema,
140
129
  hoverColor: hoverColorSchema,
141
130
  // When hoverColor is 'token', this specifies which token to use
142
- hoverColorToken: z2.string().optional(),
131
+ hoverColorToken: z.string().optional(),
143
132
  // Gradient settings (if any variant uses gradients)
144
133
  gradientStyle: gradientStyleSchema.optional(),
145
- gradientAngle: z2.number().min(0).max(360).optional(),
134
+ gradientAngle: z.number().min(0).max(360).optional(),
146
135
  gradientSharpness: gradientSharpnessSchema.optional()
147
136
  });
148
- var gradientDirectionSchema = z2.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
149
- var buttonBackgroundSchema = z2.discriminatedUnion("type", [
150
- z2.object({ type: z2.literal("solid"), colorToken: z2.string() }),
151
- z2.object({
152
- type: z2.literal("gradient"),
153
- stops: z2.array(z2.string()).min(2),
137
+ var gradientDirectionSchema = z.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
138
+ var buttonBackgroundSchema = z.discriminatedUnion("type", [
139
+ z.object({ type: z.literal("solid"), colorToken: z.string() }),
140
+ z.object({
141
+ type: z.literal("gradient"),
142
+ stops: z.array(z.string()).min(2),
154
143
  direction: gradientDirectionSchema
155
144
  }),
156
- z2.object({ type: z2.literal("transparent") })
145
+ z.object({ type: z.literal("transparent") })
157
146
  ]);
158
- var effectApplicationSchema = z2.object({
159
- effectId: z2.string(),
160
- options: z2.record(z2.string(), z2.any()).optional()
147
+ var effectApplicationSchema = z.object({
148
+ effectId: z.string(),
149
+ options: z.record(z.string(), z.any()).optional()
150
+ });
151
+ var buttonBorderSchema = z.object({
152
+ widthClass: z.string(),
153
+ colorToken: z.string()
154
+ });
155
+ var variantShadowSchema = z.object({
156
+ elevation: z.enum(["none", "low", "medium", "high"]),
157
+ softness: z.enum(["crisp", "soft", "hard"]).nullable(),
158
+ position: z.enum(["bottom", "bottom-right"]).default("bottom")
161
159
  });
162
- var buttonBorderSchema = z2.object({
163
- widthClass: z2.string(),
164
- colorToken: z2.string()
160
+ var variantEffectsSchema = z.object({
161
+ base: z.array(effectApplicationSchema).optional(),
162
+ hover: z.array(effectApplicationSchema).optional(),
163
+ active: z.array(effectApplicationSchema).optional(),
164
+ focus: z.array(effectApplicationSchema).optional()
165
165
  });
166
- var buttonVariantLegacySchema = z2.object({
167
- id: z2.string(),
168
- name: z2.string().min(1).max(20),
169
- enabled: z2.boolean(),
170
- priority: z2.union([z2.literal(1), z2.literal(2), z2.literal(3)]),
171
- backgroundTreatment: backgroundTreatmentSchema,
172
- color: z2.string().optional(),
173
- gradientColors: z2.tuple([z2.string(), z2.string()]).optional(),
174
- borderColor: z2.string().optional(),
175
- outlineHoverEffect: outlineHoverEffectSchema.optional(),
176
- effectPreset: z2.string().optional()
166
+ var variantSizeOverridesSchema = z.object({
167
+ sm: buttonSizeConfigSchema.optional(),
168
+ md: buttonSizeConfigSchema.optional(),
169
+ lg: buttonSizeConfigSchema.optional(),
170
+ xl: buttonSizeConfigSchema.optional()
177
171
  });
178
- var buttonVariantSchema = z2.object({
179
- id: z2.string(),
180
- name: z2.string().min(1).max(20),
181
- enabled: z2.boolean(),
182
- priority: z2.union([z2.literal(1), z2.literal(2), z2.literal(3)]),
172
+ var buttonVariantSchema = z.object({
173
+ id: z.string(),
174
+ name: z.string().min(1).max(20),
175
+ enabled: z.boolean(),
176
+ priority: prioritySchema,
183
177
  // Base appearance (token-based)
184
178
  background: buttonBackgroundSchema,
185
- textColorToken: z2.string(),
186
- borderRadius: z2.string(),
179
+ textColorToken: z.string(),
180
+ /** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
181
+ borderRadius: z.string().optional(),
187
182
  // Optional shadow override (uses theme.shadow if not specified)
188
- shadow: z2.object({
189
- elevation: z2.enum(["none", "low", "medium", "high"]),
190
- softness: z2.enum(["crisp", "soft", "hard"]).nullable(),
191
- position: z2.enum(["bottom", "bottom-right"]).default("bottom")
192
- }).optional(),
183
+ shadow: variantShadowSchema.optional(),
193
184
  // Border (optional)
194
185
  border: buttonBorderSchema.optional(),
195
- // Padding (optional, defaults to "0.5rem 1rem")
196
- padding: z2.string().optional(),
197
- // Font size (optional, Tailwind text size class)
198
- fontSize: z2.string().optional(),
199
186
  // Hover background token (per-variant override, takes precedence over global hoverColorToken)
200
- hoverBackgroundToken: z2.string().optional(),
187
+ hoverBackgroundToken: z.string().optional(),
201
188
  // Effect composition
202
- effects: z2.object({
203
- base: z2.array(effectApplicationSchema).optional(),
204
- hover: z2.array(effectApplicationSchema).optional(),
205
- active: z2.array(effectApplicationSchema).optional(),
206
- focus: z2.array(effectApplicationSchema).optional()
207
- }).optional()
189
+ effects: variantEffectsSchema.optional(),
190
+ // Per-variant size overrides — see VariantSizeOverrides
191
+ sizes: variantSizeOverridesSchema.optional()
208
192
  });
209
- var buttonSystemSchema = z2.object({
193
+ var buttonSystemSchema = z.object({
210
194
  global: buttonGlobalSettingsSchema,
211
- variants: z2.array(buttonVariantSchema).min(1).max(6),
195
+ variants: z.array(buttonVariantSchema).min(1).max(6),
212
196
  sizes: buttonSizesSchema.optional()
213
197
  });
214
198
 
199
+ // ../theme-core/src/site-styles/styleTags.ts
200
+ import { z as z2 } from "zod";
201
+ var STYLE_AXIS_VALUES = {
202
+ tone: ["minimal", "classic", "bold"],
203
+ energy: ["calm", "vibrant"],
204
+ motion: ["subtle", "standard", "expressive"],
205
+ era: ["editorial", "modern", "organic", "technical", "retro"]
206
+ };
207
+ var styleTagsSchema = z2.object({
208
+ tone: z2.enum(STYLE_AXIS_VALUES.tone).optional(),
209
+ energy: z2.enum(STYLE_AXIS_VALUES.energy).optional(),
210
+ motion: z2.enum(STYLE_AXIS_VALUES.motion).optional(),
211
+ era: z2.enum(STYLE_AXIS_VALUES.era).optional()
212
+ });
213
+
214
+ // ../theme-core/src/buttons/personalities/types.ts
215
+ function asButtonPersonalityId(value) {
216
+ if (value.length === 0) {
217
+ throw new Error("ButtonPersonalityId must be a non-empty string");
218
+ }
219
+ return value;
220
+ }
221
+ var buttonPersonalityIdSchema = z3.string().min(1).transform((value) => asButtonPersonalityId(value));
222
+ var buttonPersonalitySchema = z3.object({
223
+ id: buttonPersonalityIdSchema,
224
+ name: z3.string().min(1),
225
+ description: z3.string().min(1),
226
+ tags: styleTagsSchema,
227
+ buttonSystem: buttonSystemSchema
228
+ });
229
+ function defineButtonPersonality(input) {
230
+ return {
231
+ id: asButtonPersonalityId(input.id),
232
+ name: input.name,
233
+ description: input.description,
234
+ tags: input.tags,
235
+ buttonSystem: input.buttonSystem
236
+ };
237
+ }
238
+
239
+ // ../theme-core/src/buttons/personalities/brushed-wash.ts
240
+ var brushedWash = defineButtonPersonality({
241
+ id: "brushed-wash",
242
+ name: "Brushed Wash",
243
+ description: "Watercolour-gradient buttons with soft shadows and generous padding.",
244
+ tags: { tone: "classic", energy: "vibrant", motion: "standard", era: "organic" },
245
+ buttonSystem: {
246
+ global: {
247
+ cornerStyle: "rounded",
248
+ shadow: "low",
249
+ textTransform: "none",
250
+ fontWeight: 500,
251
+ borderWidth: 1,
252
+ hoverTransform: "none",
253
+ hoverColor: "none"
254
+ },
255
+ sizes: {
256
+ sm: { padding: "0.75rem 2rem", fontSize: "text-sm" },
257
+ md: { padding: "1rem 2.5rem" },
258
+ lg: { padding: "1.25rem 3rem", fontSize: "text-lg" },
259
+ xl: { padding: "1.625rem 3.75rem", fontSize: "text-xl" }
260
+ },
261
+ variants: [
262
+ {
263
+ id: "primary",
264
+ name: "Primary",
265
+ enabled: true,
266
+ priority: 1,
267
+ background: {
268
+ type: "gradient",
269
+ stops: ["primary", "accent"],
270
+ direction: "to-r"
271
+ },
272
+ textColorToken: "primaryForeground",
273
+ borderRadius: "rounded-lg",
274
+ shadow: { elevation: "low", softness: "soft", position: "bottom" },
275
+ effects: {
276
+ hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
277
+ }
278
+ },
279
+ {
280
+ id: "secondary",
281
+ name: "Secondary",
282
+ enabled: true,
283
+ priority: 2,
284
+ background: {
285
+ type: "gradient",
286
+ stops: ["secondary", "accent"],
287
+ direction: "to-br"
288
+ },
289
+ textColorToken: "primaryForeground",
290
+ borderRadius: "rounded-lg",
291
+ shadow: { elevation: "low", softness: "soft", position: "bottom" },
292
+ effects: {
293
+ hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
294
+ }
295
+ },
296
+ {
297
+ id: "outline",
298
+ name: "Outline",
299
+ enabled: true,
300
+ priority: 3,
301
+ background: { type: "transparent" },
302
+ textColorToken: "primary",
303
+ borderRadius: "rounded-lg",
304
+ border: { widthClass: "border", colorToken: "primary" },
305
+ effects: {
306
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
307
+ }
308
+ },
309
+ {
310
+ id: "ghost",
311
+ name: "Ghost",
312
+ enabled: true,
313
+ priority: 3,
314
+ background: { type: "transparent" },
315
+ textColorToken: "text",
316
+ borderRadius: "rounded-lg",
317
+ effects: {
318
+ hover: [
319
+ { effectId: "background-on-hover", options: { colorToken: "surface" } }
320
+ ]
321
+ }
322
+ }
323
+ ]
324
+ }
325
+ });
326
+
327
+ // ../theme-core/src/buttons/personalities/confident-chip.ts
328
+ var confidentChip = defineButtonPersonality({
329
+ id: "confident-chip",
330
+ name: "Confident Chip",
331
+ description: "Mid-radius solid buttons with a crisp hover.",
332
+ tags: { tone: "classic", energy: "calm", motion: "standard", era: "modern" },
333
+ buttonSystem: {
334
+ global: {
335
+ cornerStyle: "rounded",
336
+ shadow: "medium",
337
+ textTransform: "none",
338
+ fontWeight: 600,
339
+ borderWidth: 1,
340
+ hoverTransform: "none",
341
+ hoverColor: "none"
342
+ },
343
+ variants: [
344
+ {
345
+ id: "primary",
346
+ name: "Primary",
347
+ enabled: true,
348
+ priority: 1,
349
+ background: { type: "solid", colorToken: "primary" },
350
+ textColorToken: "primaryForeground",
351
+ borderRadius: "rounded-md",
352
+ shadow: { elevation: "medium", softness: "soft", position: "bottom" },
353
+ effects: {
354
+ hover: [{ effectId: "darken-background", options: { amount: 60 } }],
355
+ active: [{ effectId: "scale-down", options: { scale: "0.97" } }]
356
+ }
357
+ },
358
+ {
359
+ id: "secondary",
360
+ name: "Secondary",
361
+ enabled: true,
362
+ priority: 2,
363
+ background: { type: "solid", colorToken: "surface" },
364
+ textColorToken: "text",
365
+ borderRadius: "rounded-md",
366
+ border: { widthClass: "border", colorToken: "border" },
367
+ effects: {
368
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
369
+ }
370
+ },
371
+ {
372
+ id: "outline",
373
+ name: "Outline",
374
+ enabled: true,
375
+ priority: 3,
376
+ background: { type: "transparent" },
377
+ textColorToken: "primary",
378
+ borderRadius: "rounded-md",
379
+ border: { widthClass: "border", colorToken: "primary" },
380
+ effects: {
381
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
382
+ }
383
+ },
384
+ {
385
+ id: "ghost",
386
+ name: "Ghost",
387
+ enabled: true,
388
+ priority: 3,
389
+ background: { type: "transparent" },
390
+ textColorToken: "primary",
391
+ borderRadius: "rounded-md",
392
+ effects: {
393
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
394
+ }
395
+ }
396
+ ]
397
+ }
398
+ });
399
+
400
+ // ../theme-core/src/buttons/personalities/editorial-link.ts
401
+ var editorialLink = defineButtonPersonality({
402
+ id: "editorial-link",
403
+ name: "Editorial Link",
404
+ description: "Link-style with a growing underline. Refined, typographic.",
405
+ tags: { tone: "minimal", energy: "calm", motion: "subtle", era: "editorial" },
406
+ buttonSystem: {
407
+ global: {
408
+ cornerStyle: "square",
409
+ shadow: "none",
410
+ textTransform: "none",
411
+ fontWeight: 500,
412
+ borderWidth: 1,
413
+ hoverTransform: "none",
414
+ hoverColor: "none"
415
+ },
416
+ variants: [
417
+ {
418
+ id: "primary",
419
+ name: "Primary",
420
+ enabled: true,
421
+ priority: 1,
422
+ background: { type: "transparent" },
423
+ textColorToken: "text",
424
+ borderRadius: "rounded-none",
425
+ shadow: { elevation: "none", softness: null, position: "bottom" },
426
+ sizes: {
427
+ sm: { padding: "0.25rem 0" },
428
+ md: { padding: "0.5rem 0" },
429
+ lg: { padding: "0.625rem 0" },
430
+ xl: { padding: "0.75rem 0" }
431
+ },
432
+ effects: {
433
+ base: [
434
+ { effectId: "border-bottom-grow", options: { height: 2, colorToken: "text", origin: "left" } }
435
+ ]
436
+ }
437
+ },
438
+ {
439
+ id: "secondary",
440
+ name: "Secondary",
441
+ enabled: true,
442
+ priority: 2,
443
+ background: { type: "transparent" },
444
+ textColorToken: "mutedText",
445
+ borderRadius: "rounded-none",
446
+ shadow: { elevation: "none", softness: null, position: "bottom" },
447
+ sizes: {
448
+ sm: { padding: "0.25rem 0" },
449
+ md: { padding: "0.5rem 0" },
450
+ lg: { padding: "0.625rem 0" },
451
+ xl: { padding: "0.75rem 0" }
452
+ },
453
+ effects: {
454
+ base: [
455
+ { effectId: "border-bottom-grow", options: { height: 1, colorToken: "mutedText", origin: "left" } }
456
+ ]
457
+ }
458
+ },
459
+ {
460
+ id: "outline",
461
+ name: "Outline",
462
+ enabled: true,
463
+ priority: 3,
464
+ background: { type: "transparent" },
465
+ textColorToken: "accent",
466
+ borderRadius: "rounded-none",
467
+ shadow: { elevation: "none", softness: null, position: "bottom" },
468
+ sizes: {
469
+ sm: { padding: "0.25rem 0" },
470
+ md: { padding: "0.5rem 0" },
471
+ lg: { padding: "0.625rem 0" },
472
+ xl: { padding: "0.75rem 0" }
473
+ },
474
+ effects: {
475
+ base: [
476
+ { effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }
477
+ ]
478
+ }
479
+ },
480
+ {
481
+ id: "ghost",
482
+ name: "Ghost",
483
+ enabled: true,
484
+ priority: 3,
485
+ background: { type: "transparent" },
486
+ textColorToken: "mutedText",
487
+ borderRadius: "rounded-none",
488
+ shadow: { elevation: "none", softness: null, position: "bottom" },
489
+ sizes: {
490
+ sm: { padding: "0.25rem 0" },
491
+ md: { padding: "0.5rem 0" },
492
+ lg: { padding: "0.625rem 0" },
493
+ xl: { padding: "0.75rem 0" }
494
+ },
495
+ effects: {
496
+ hover: [{ effectId: "opacity-reduce", options: { reduction: -20 } }]
497
+ }
498
+ }
499
+ ]
500
+ }
501
+ });
502
+
503
+ // ../theme-core/src/buttons/personalities/ink-stamp.ts
504
+ var inkStamp = defineButtonPersonality({
505
+ id: "ink-stamp",
506
+ name: "Ink Stamp",
507
+ description: "Hand-stamped block-print buttons with a slight lift on hover.",
508
+ tags: { tone: "bold", energy: "vibrant", motion: "standard", era: "organic" },
509
+ buttonSystem: {
510
+ global: {
511
+ cornerStyle: "rounded",
512
+ shadow: "none",
513
+ textTransform: "uppercase",
514
+ fontWeight: 600,
515
+ borderWidth: 1,
516
+ hoverTransform: "none",
517
+ hoverColor: "none",
518
+ letterSpacing: "loose"
519
+ },
520
+ sizes: {
521
+ sm: { padding: "0.5rem 1.25rem", fontSize: "text-xs" },
522
+ md: { padding: "0.75rem 1.75rem", fontSize: "text-sm" },
523
+ lg: { padding: "0.875rem 2.25rem", fontSize: "text-base" },
524
+ xl: { padding: "1.125rem 2.75rem", fontSize: "text-lg" }
525
+ },
526
+ variants: [
527
+ {
528
+ id: "primary",
529
+ name: "Primary",
530
+ enabled: true,
531
+ priority: 1,
532
+ background: { type: "solid", colorToken: "primary" },
533
+ textColorToken: "primaryForeground",
534
+ borderRadius: "rounded-md",
535
+ effects: {
536
+ hover: [
537
+ { effectId: "drop-shadow", options: { intensity: "medium" } },
538
+ { effectId: "scale-up", options: { scale: "1.02" } }
539
+ ],
540
+ active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
541
+ }
542
+ },
543
+ {
544
+ id: "secondary",
545
+ name: "Secondary",
546
+ enabled: true,
547
+ priority: 2,
548
+ background: { type: "transparent" },
549
+ textColorToken: "primary",
550
+ borderRadius: "rounded-md",
551
+ border: { widthClass: "border-2", colorToken: "primary" },
552
+ effects: {
553
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
554
+ }
555
+ },
556
+ {
557
+ id: "outline",
558
+ name: "Outline",
559
+ enabled: true,
560
+ priority: 3,
561
+ background: { type: "transparent" },
562
+ textColorToken: "text",
563
+ borderRadius: "rounded-md",
564
+ border: { widthClass: "border-2", colorToken: "border" },
565
+ effects: {
566
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
567
+ }
568
+ },
569
+ {
570
+ id: "ghost",
571
+ name: "Ghost",
572
+ enabled: true,
573
+ priority: 3,
574
+ background: { type: "transparent" },
575
+ textColorToken: "accent",
576
+ borderRadius: "rounded-none",
577
+ sizes: {
578
+ sm: { padding: "0.375rem 0", fontSize: "text-xs" },
579
+ md: { padding: "0.5rem 0", fontSize: "text-sm" },
580
+ lg: { padding: "0.625rem 0", fontSize: "text-base" },
581
+ xl: { padding: "0.75rem 0", fontSize: "text-lg" }
582
+ },
583
+ effects: {
584
+ base: [{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }]
585
+ }
586
+ }
587
+ ]
588
+ }
589
+ });
590
+
591
+ // ../theme-core/src/buttons/personalities/pebble.ts
592
+ var pebble = defineButtonPersonality({
593
+ id: "pebble",
594
+ name: "Pebble",
595
+ description: "Generous pill buttons with a soft hover lift.",
596
+ tags: { tone: "classic", energy: "calm", motion: "standard", era: "organic" },
597
+ buttonSystem: {
598
+ global: {
599
+ cornerStyle: "pill",
600
+ shadow: "none",
601
+ textTransform: "none",
602
+ fontWeight: 500,
603
+ borderWidth: 2,
604
+ hoverTransform: "none",
605
+ hoverColor: "none"
606
+ },
607
+ sizes: {
608
+ sm: { padding: "0.625rem 1.75rem", fontSize: "text-sm" },
609
+ md: { padding: "0.875rem 2.25rem" },
610
+ lg: { padding: "1.125rem 2.75rem", fontSize: "text-lg" },
611
+ xl: { padding: "1.5rem 3.5rem", fontSize: "text-xl" }
612
+ },
613
+ variants: [
614
+ {
615
+ id: "primary",
616
+ name: "Primary",
617
+ enabled: true,
618
+ priority: 1,
619
+ background: { type: "solid", colorToken: "primary" },
620
+ textColorToken: "primaryForeground",
621
+ borderRadius: "rounded-full",
622
+ effects: {
623
+ hover: [
624
+ { effectId: "scale-up", options: { scale: "1.03" } },
625
+ { effectId: "drop-shadow", options: { intensity: "medium" } }
626
+ ]
627
+ }
628
+ },
629
+ {
630
+ id: "secondary",
631
+ name: "Secondary",
632
+ enabled: true,
633
+ priority: 2,
634
+ background: { type: "transparent" },
635
+ textColorToken: "primary",
636
+ borderRadius: "rounded-full",
637
+ border: { widthClass: "border-2", colorToken: "accent" },
638
+ effects: {
639
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "accent" } }]
640
+ }
641
+ },
642
+ {
643
+ id: "outline",
644
+ name: "Outline",
645
+ enabled: true,
646
+ priority: 3,
647
+ background: { type: "transparent" },
648
+ textColorToken: "text",
649
+ borderRadius: "rounded-full",
650
+ border: { widthClass: "border", colorToken: "border" },
651
+ effects: {
652
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
653
+ }
654
+ },
655
+ {
656
+ id: "ghost",
657
+ name: "Ghost",
658
+ enabled: true,
659
+ priority: 3,
660
+ background: { type: "transparent" },
661
+ textColorToken: "primary",
662
+ borderRadius: "rounded-full",
663
+ sizes: {
664
+ sm: { padding: "0.375rem 0.875rem", fontSize: "text-sm" },
665
+ md: { padding: "0.5rem 1rem" },
666
+ lg: { padding: "0.625rem 1.25rem", fontSize: "text-lg" },
667
+ xl: { padding: "0.75rem 1.5rem", fontSize: "text-xl" }
668
+ },
669
+ effects: {
670
+ hover: [{ effectId: "opacity-reduce", options: { reduction: 30 } }]
671
+ }
672
+ }
673
+ ]
674
+ }
675
+ });
676
+
677
+ // ../theme-core/src/buttons/personalities/soft-pill.ts
678
+ var softPill = defineButtonPersonality({
679
+ id: "soft-pill",
680
+ name: "Soft Pill",
681
+ description: "Rounded pills with a gentle lift on hover. Quietly modern.",
682
+ tags: { tone: "classic", energy: "calm", motion: "subtle", era: "organic" },
683
+ buttonSystem: {
684
+ global: {
685
+ cornerStyle: "pill",
686
+ shadow: "low",
687
+ textTransform: "none",
688
+ fontWeight: 500,
689
+ borderWidth: 2,
690
+ hoverTransform: "lift",
691
+ hoverColor: "none"
692
+ },
693
+ variants: [
694
+ {
695
+ id: "primary",
696
+ name: "Primary",
697
+ enabled: true,
698
+ priority: 1,
699
+ background: { type: "solid", colorToken: "primary" },
700
+ textColorToken: "primaryForeground",
701
+ borderRadius: "rounded-full",
702
+ shadow: { elevation: "low", softness: "soft", position: "bottom" },
703
+ effects: {
704
+ hover: [{ effectId: "lift", options: { translateY: "-1px" } }],
705
+ active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
706
+ }
707
+ },
708
+ {
709
+ id: "secondary",
710
+ name: "Secondary",
711
+ enabled: true,
712
+ priority: 2,
713
+ background: { type: "transparent" },
714
+ textColorToken: "primary",
715
+ borderRadius: "rounded-full",
716
+ border: { widthClass: "border-2", colorToken: "primary" },
717
+ effects: {
718
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
719
+ }
720
+ },
721
+ {
722
+ id: "outline",
723
+ name: "Outline",
724
+ enabled: true,
725
+ priority: 3,
726
+ background: { type: "transparent" },
727
+ textColorToken: "text",
728
+ borderRadius: "rounded-full",
729
+ border: { widthClass: "border", colorToken: "border" },
730
+ effects: {
731
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
732
+ }
733
+ },
734
+ {
735
+ id: "ghost",
736
+ name: "Ghost",
737
+ enabled: true,
738
+ priority: 3,
739
+ background: { type: "transparent" },
740
+ textColorToken: "text",
741
+ borderRadius: "rounded-full",
742
+ effects: {
743
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
744
+ }
745
+ }
746
+ ]
747
+ }
748
+ });
749
+
750
+ // ../theme-core/src/buttons/personalities/index.ts
751
+ var buttonPersonalities = [
752
+ softPill,
753
+ confidentChip,
754
+ editorialLink,
755
+ pebble,
756
+ inkStamp,
757
+ brushedWash
758
+ ];
759
+ var personalitiesById = new Map(
760
+ buttonPersonalities.map((p) => [p.id, p])
761
+ );
762
+
763
+ // ../theme-core/src/palette/variants/types.ts
764
+ import { z as z15 } from "zod";
765
+
766
+ // ../theme-core/src/schema.ts
767
+ import { z as z14 } from "zod";
768
+
769
+ // ../theme-core/src/lib/media.ts
770
+ import z4 from "zod";
771
+ var hotspotSchema = z4.object({
772
+ x: z4.number().min(0).max(1),
773
+ y: z4.number().min(0).max(1),
774
+ radius: z4.number().optional()
775
+ });
776
+ var rotationSchema = z4.union([z4.literal(0), z4.literal(90), z4.literal(180), z4.literal(270)]);
777
+ var rectSchema = z4.tuple([z4.number(), z4.number(), z4.number(), z4.number()]);
778
+ var aspectCropSchema = z4.object({
779
+ aspect: z4.preprocess((value) => value == null ? void 0 : value, z4.string().optional()),
780
+ rect: z4.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
781
+ hotspot: z4.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
782
+ rotation: z4.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
783
+ });
784
+ var transformSchema = z4.object({
785
+ aspectCrops: z4.preprocess((value) => {
786
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
787
+ return void 0;
788
+ }
789
+ return value;
790
+ }, z4.record(z4.string(), aspectCropSchema.catch({}))).optional(),
791
+ rect: rectSchema.optional(),
792
+ hotspot: hotspotSchema.optional(),
793
+ rotation: rotationSchema.optional()
794
+ });
795
+ var mediaSchema = z4.object({
796
+ type: z4.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
797
+ purpose: z4.string().optional(),
798
+ placeholder: z4.boolean().default(true).optional(),
799
+ assetId: z4.string().optional(),
800
+ identifier: z4.string().optional(),
801
+ src: z4.string().optional(),
802
+ alt: z4.string().optional(),
803
+ filename: z4.string().optional(),
804
+ mimeType: z4.string().optional(),
805
+ width: z4.number().optional(),
806
+ height: z4.number().optional(),
807
+ storageBucket: z4.string().optional(),
808
+ storagePath: z4.string().optional(),
809
+ transform: transformSchema.optional()
810
+ });
811
+
812
+ // ../theme-core/src/buttons/generateButtonCss.ts
813
+ var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
814
+
215
815
  // ../theme-core/src/buttons/core.ts
216
816
  var CORNER_RADIUS_MAP = {
217
817
  square: "0",
@@ -339,43 +939,43 @@ function getDefaultButtonVariants() {
339
939
  }
340
940
 
341
941
  // ../theme-core/src/cards/types.ts
342
- import { z as z3 } from "zod";
343
- var cardSpacingSchema = z3.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
344
- var gradientDirectionSchema2 = z3.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
345
- var cardBackgroundSchema = z3.discriminatedUnion("type", [
346
- z3.object({ type: z3.literal("solid"), colorToken: z3.string() }),
347
- z3.object({
348
- type: z3.literal("gradient"),
349
- fromToken: z3.string(),
350
- toToken: z3.string(),
942
+ import { z as z5 } from "zod";
943
+ var cardSpacingSchema = z5.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
944
+ var gradientDirectionSchema2 = z5.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
945
+ var cardBackgroundSchema = z5.discriminatedUnion("type", [
946
+ z5.object({ type: z5.literal("solid"), colorToken: z5.string() }),
947
+ z5.object({
948
+ type: z5.literal("gradient"),
949
+ fromToken: z5.string(),
950
+ toToken: z5.string(),
351
951
  direction: gradientDirectionSchema2
352
952
  }),
353
- z3.object({ type: z3.literal("transparent") })
953
+ z5.object({ type: z5.literal("transparent") })
354
954
  ]);
355
- var cardBorderSchema = z3.object({
356
- widthClass: z3.string(),
357
- colorToken: z3.string()
955
+ var cardBorderSchema = z5.object({
956
+ widthClass: z5.string(),
957
+ colorToken: z5.string()
358
958
  });
359
- var cardVariantSchema = z3.object({
360
- id: z3.string(),
361
- name: z3.string().min(1).max(20),
362
- enabled: z3.boolean(),
363
- priority: z3.union([z3.literal(1), z3.literal(2), z3.literal(3)]),
959
+ var cardVariantSchema = z5.object({
960
+ id: z5.string(),
961
+ name: z5.string().min(1).max(20),
962
+ enabled: z5.boolean(),
963
+ priority: z5.union([z5.literal(1), z5.literal(2), z5.literal(3)]),
364
964
  // Appearance (token-based)
365
965
  background: cardBackgroundSchema,
366
966
  spacing: cardSpacingSchema,
367
967
  // Optional overrides (uses theme defaults if not specified)
368
- shadow: z3.object({
369
- elevation: z3.enum(["none", "low", "medium", "high"]),
370
- softness: z3.enum(["crisp", "soft", "hard"]).nullable(),
371
- position: z3.enum(["bottom", "bottom-right"]).default("bottom")
968
+ shadow: z5.object({
969
+ elevation: z5.enum(["none", "low", "medium", "high"]),
970
+ softness: z5.enum(["crisp", "soft", "hard"]).nullable(),
971
+ position: z5.enum(["bottom", "bottom-right"]).default("bottom")
372
972
  }).optional(),
373
- corners: z3.enum(["square", "soft", "rounded", "pill"]).optional(),
973
+ corners: z5.enum(["square", "soft", "rounded", "pill"]).optional(),
374
974
  // Border (optional)
375
975
  border: cardBorderSchema.optional()
376
976
  });
377
- var cardSystemSchema = z3.object({
378
- variants: z3.array(cardVariantSchema).min(1).max(3)
977
+ var cardSystemSchema = z5.object({
978
+ variants: z5.array(cardVariantSchema).min(1).max(3)
379
979
  });
380
980
 
381
981
  // ../theme-core/src/cards/core.ts
@@ -497,8 +1097,8 @@ function getDefaultCardVariants() {
497
1097
  }
498
1098
 
499
1099
  // ../theme-core/src/accordions/types.ts
500
- import { z as z4 } from "zod";
501
- var accordionIconSchema = z4.enum([
1100
+ import { z as z6 } from "zod";
1101
+ var accordionIconSchema = z6.enum([
502
1102
  "plus-minus",
503
1103
  // + becomes - (swap or rotate 90°)
504
1104
  "chevron",
@@ -510,180 +1110,180 @@ var accordionIconSchema = z4.enum([
510
1110
  "circle-plus-minus"
511
1111
  // ⊕ becomes ⊖ (swap with fade)
512
1112
  ]);
513
- var accordionSystemSchema = z4.object({
1113
+ var accordionSystemSchema = z6.object({
514
1114
  // Visual styling (solid color only - gradients can be added later if needed)
515
- background: z4.object({
516
- type: z4.literal("solid"),
517
- colorToken: z4.string()
1115
+ background: z6.object({
1116
+ type: z6.literal("solid"),
1117
+ colorToken: z6.string()
518
1118
  }),
519
1119
  // Spacing (padding inside items)
520
- spacing: z4.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
1120
+ spacing: z6.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
521
1121
  // Border radius (null = inherit from theme.corners)
522
- corners: z4.enum(["square", "soft", "rounded", "pill"]).nullable(),
1122
+ corners: z6.enum(["square", "soft", "rounded", "pill"]).nullable(),
523
1123
  // Border styling (null = inherit from theme.border)
524
- border: z4.object({
525
- widthClass: z4.string(),
1124
+ border: z6.object({
1125
+ widthClass: z6.string(),
526
1126
  // e.g., 'border', 'border-2', 'border-0'
527
- colorToken: z4.string()
1127
+ colorToken: z6.string()
528
1128
  }).nullable(),
529
1129
  // Shadow (null = inherit from theme.shadow)
530
- shadow: z4.object({
531
- elevation: z4.enum(["none", "low", "medium", "high"]),
532
- softness: z4.enum(["soft", "crisp", "hard"]).nullable(),
533
- position: z4.enum(["bottom", "bottom-right"])
1130
+ shadow: z6.object({
1131
+ elevation: z6.enum(["none", "low", "medium", "high"]),
1132
+ softness: z6.enum(["soft", "crisp", "hard"]).nullable(),
1133
+ position: z6.enum(["bottom", "bottom-right"])
534
1134
  }).nullable(),
535
1135
  // Icon style and animation
536
- icon: z4.object({
1136
+ icon: z6.object({
537
1137
  style: accordionIconSchema,
538
- position: z4.enum(["left", "right"]),
539
- size: z4.enum(["sm", "md", "lg"])
1138
+ position: z6.enum(["left", "right"]),
1139
+ size: z6.enum(["sm", "md", "lg"])
540
1140
  }),
541
1141
  // Trigger (question) styling
542
- trigger: z4.object({
543
- textColorToken: z4.string(),
544
- fontWeight: z4.enum(["regular", "medium", "semibold", "bold"]).nullable()
1142
+ trigger: z6.object({
1143
+ textColorToken: z6.string(),
1144
+ fontWeight: z6.enum(["regular", "medium", "semibold", "bold"]).nullable()
545
1145
  // null = inherit from theme
546
1146
  }),
547
1147
  // Hover state styling
548
- hover: z4.object({
549
- backgroundColorToken: z4.string().optional(),
550
- textColorToken: z4.string().optional(),
551
- borderColorToken: z4.string().optional()
1148
+ hover: z6.object({
1149
+ backgroundColorToken: z6.string().optional(),
1150
+ textColorToken: z6.string().optional(),
1151
+ borderColorToken: z6.string().optional()
552
1152
  }),
553
1153
  // Content (answer) styling
554
- content: z4.object({
555
- textColorToken: z4.string()
1154
+ content: z6.object({
1155
+ textColorToken: z6.string()
556
1156
  })
557
1157
  });
558
1158
 
559
1159
  // ../theme-core/src/inputs/types.ts
560
- import { z as z5 } from "zod";
561
- var inputSystemSchema = z5.object({
1160
+ import { z as z7 } from "zod";
1161
+ var inputSystemSchema = z7.object({
562
1162
  // Base styling (applied to all inputs)
563
- base: z5.object({
564
- background: z5.union([
565
- z5.object({
566
- type: z5.literal("solid"),
567
- colorToken: z5.string()
1163
+ base: z7.object({
1164
+ background: z7.union([
1165
+ z7.object({
1166
+ type: z7.literal("solid"),
1167
+ colorToken: z7.string()
568
1168
  }),
569
- z5.object({
570
- type: z5.literal("transparent")
1169
+ z7.object({
1170
+ type: z7.literal("transparent")
571
1171
  })
572
1172
  ]),
573
- textColorToken: z5.string(),
574
- border: z5.object({
575
- widthClass: z5.string(),
1173
+ textColorToken: z7.string(),
1174
+ border: z7.object({
1175
+ widthClass: z7.string(),
576
1176
  // e.g., 'border', 'border-2'
577
- colorToken: z5.string(),
578
- style: z5.enum(["all", "underline"]).optional()
1177
+ colorToken: z7.string(),
1178
+ style: z7.enum(["all", "underline"]).optional()
579
1179
  }),
580
- corners: z5.enum(["square", "soft", "rounded", "pill"]).nullable(),
1180
+ corners: z7.enum(["square", "soft", "rounded", "pill"]).nullable(),
581
1181
  // null = inherit from theme.corners
582
- shadow: z5.object({
583
- elevation: z5.enum(["none", "low", "medium"]),
584
- softness: z5.enum(["soft", "crisp", "hard"]).nullable()
1182
+ shadow: z7.object({
1183
+ elevation: z7.enum(["none", "low", "medium"]),
1184
+ softness: z7.enum(["soft", "crisp", "hard"]).nullable()
585
1185
  }).nullable(),
586
- spacing: z5.enum(["compact", "cozy", "medium", "comfortable"]),
1186
+ spacing: z7.enum(["compact", "cozy", "medium", "comfortable"]),
587
1187
  // padding inside inputs
588
- fontSize: z5.enum(["sm", "base", "lg"])
1188
+ fontSize: z7.enum(["sm", "base", "lg"])
589
1189
  }),
590
1190
  // Label styling
591
- label: z5.object({
592
- textColorToken: z5.string(),
593
- fontWeight: z5.enum(["regular", "medium", "semibold", "bold", "black"]),
594
- fontSize: z5.enum(["2xs", "xs", "sm", "base"]),
595
- textTransform: z5.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
596
- letterSpacing: z5.enum(["normal", "wide", "wider", "widest"]).optional(),
597
- opacity: z5.number().min(0.2).max(1).optional()
1191
+ label: z7.object({
1192
+ textColorToken: z7.string(),
1193
+ fontWeight: z7.enum(["regular", "medium", "semibold", "bold", "black"]),
1194
+ fontSize: z7.enum(["2xs", "xs", "sm", "base"]),
1195
+ textTransform: z7.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
1196
+ letterSpacing: z7.enum(["normal", "wide", "wider", "widest"]).optional(),
1197
+ opacity: z7.number().min(0.2).max(1).optional()
598
1198
  }),
599
1199
  // Focus state
600
- focus: z5.object({
601
- ringColorToken: z5.string(),
602
- ringWidth: z5.enum(["0", "1", "2", "3"]),
603
- borderColorToken: z5.string().optional()
1200
+ focus: z7.object({
1201
+ ringColorToken: z7.string(),
1202
+ ringWidth: z7.enum(["0", "1", "2", "3"]),
1203
+ borderColorToken: z7.string().optional()
604
1204
  // Change border color on focus
605
1205
  }),
606
1206
  // Error state (for validation feedback)
607
- error: z5.object({
608
- borderColorToken: z5.string(),
609
- textColorToken: z5.string()
1207
+ error: z7.object({
1208
+ borderColorToken: z7.string(),
1209
+ textColorToken: z7.string()
610
1210
  }),
611
1211
  // Disabled state
612
- disabled: z5.object({
613
- backgroundColorToken: z5.string(),
614
- textColorToken: z5.string(),
615
- opacity: z5.number().min(0.3).max(0.7)
1212
+ disabled: z7.object({
1213
+ backgroundColorToken: z7.string(),
1214
+ textColorToken: z7.string(),
1215
+ opacity: z7.number().min(0.3).max(0.7)
616
1216
  })
617
1217
  });
618
1218
 
619
1219
  // ../theme-core/src/gradients/types.ts
620
- import { z as z6 } from "zod";
621
- var gradientStopSchema = z6.object({
622
- color: z6.string(),
1220
+ import { z as z8 } from "zod";
1221
+ var gradientStopSchema = z8.object({
1222
+ color: z8.string(),
623
1223
  // Theme color token name (e.g., 'primary-500')
624
- position: z6.number().min(0).max(100)
1224
+ position: z8.number().min(0).max(100)
625
1225
  // Percentage 0-100
626
1226
  });
627
- var gradientConfigSchema = z6.object({
628
- type: z6.enum(["linear", "radial"]),
629
- angle: z6.number().min(0).max(360).optional(),
1227
+ var gradientConfigSchema = z8.object({
1228
+ type: z8.enum(["linear", "radial"]),
1229
+ angle: z8.number().min(0).max(360).optional(),
630
1230
  // For linear gradients (degrees)
631
- position: z6.string().optional(),
1231
+ position: z8.string().optional(),
632
1232
  // For radial gradients ('center', 'top left', etc.)
633
- stops: z6.array(gradientStopSchema).min(2)
1233
+ stops: z8.array(gradientStopSchema).min(2)
634
1234
  });
635
1235
 
636
1236
  // ../theme-core/src/navigation/types.ts
637
- import { z as z8 } from "zod";
1237
+ import { z as z10 } from "zod";
638
1238
 
639
1239
  // ../theme-core/src/interactive/baseSchema.ts
640
- import { z as z7 } from "zod";
641
- var interactiveTypographySchema = z7.object({
1240
+ import { z as z9 } from "zod";
1241
+ var interactiveTypographySchema = z9.object({
642
1242
  /** Font family source */
643
- typography: z7.enum(["body", "heading"]).default("body"),
1243
+ typography: z9.enum(["body", "heading"]).default("body"),
644
1244
  /** Font weight */
645
- fontWeight: z7.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
1245
+ fontWeight: z9.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
646
1246
  /** Text transform */
647
- textTransform: z7.enum(["none", "uppercase", "capitalize"]).default("none"),
1247
+ textTransform: z9.enum(["none", "uppercase", "capitalize"]).default("none"),
648
1248
  /** Italic style */
649
- italic: z7.boolean().default(false)
1249
+ italic: z9.boolean().default(false)
650
1250
  });
651
- var effectApplicationSchema2 = z7.object({
1251
+ var effectApplicationSchema2 = z9.object({
652
1252
  /** Effect preset ID */
653
- effectId: z7.string(),
1253
+ effectId: z9.string(),
654
1254
  /** User-provided customization options */
655
- options: z7.record(z7.string(), z7.any()).optional()
1255
+ options: z9.record(z9.string(), z9.any()).optional()
656
1256
  });
657
- var effectCompositionSchema = z7.object({
1257
+ var effectCompositionSchema = z9.object({
658
1258
  /** Effects always applied */
659
- base: z7.array(effectApplicationSchema2).optional(),
1259
+ base: z9.array(effectApplicationSchema2).optional(),
660
1260
  /** Effects applied on hover */
661
- hover: z7.array(effectApplicationSchema2).optional(),
1261
+ hover: z9.array(effectApplicationSchema2).optional(),
662
1262
  /** Effects applied on active/pressed */
663
- active: z7.array(effectApplicationSchema2).optional(),
1263
+ active: z9.array(effectApplicationSchema2).optional(),
664
1264
  /** Effects applied on focus */
665
- focus: z7.array(effectApplicationSchema2).optional()
1265
+ focus: z9.array(effectApplicationSchema2).optional()
666
1266
  });
667
1267
 
668
1268
  // ../theme-core/src/navigation/types.ts
669
- var navLinkPaddingSchema = z8.enum(["none", "compact", "default"]);
670
- var navLinkPaddingXSchema = z8.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
671
- var navLinkBorderRadiusSchema = z8.enum(["none", "sm", "md", "full"]);
672
- var navLinkTextSizeSchema = z8.enum(["xs", "sm", "base", "lg"]);
673
- var navLinkLetterSpacingSchema = z8.enum(["normal", "wide", "wider", "widest"]);
674
- var navLinkStyleSchema = z8.object({
1269
+ var navLinkPaddingSchema = z10.enum(["none", "compact", "default"]);
1270
+ var navLinkPaddingXSchema = z10.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1271
+ var navLinkBorderRadiusSchema = z10.enum(["none", "sm", "md", "full"]);
1272
+ var navLinkTextSizeSchema = z10.enum(["xs", "sm", "base", "lg"]);
1273
+ var navLinkLetterSpacingSchema = z10.enum(["normal", "wide", "wider", "widest"]);
1274
+ var navLinkStyleSchema = z10.object({
675
1275
  /** Display name for the style */
676
- name: z8.string().min(1).max(30).optional(),
1276
+ name: z10.string().min(1).max(30).optional(),
677
1277
  /** Typography settings (inherited from interactive base) */
678
1278
  ...interactiveTypographySchema.shape,
679
1279
  /** Text color token */
680
- colorToken: z8.string().default("text"),
1280
+ colorToken: z10.string().default("text"),
681
1281
  /** Optional text size override */
682
1282
  textSize: navLinkTextSizeSchema.optional(),
683
1283
  /** Optional letter spacing override */
684
1284
  letterSpacing: navLinkLetterSpacingSchema.optional(),
685
1285
  /** Hover/active color token (for color-change effects) */
686
- hoverColorToken: z8.string().nullable().optional(),
1286
+ hoverColorToken: z10.string().nullable().optional(),
687
1287
  /** Padding preset */
688
1288
  padding: navLinkPaddingSchema.default("compact"),
689
1289
  /** Horizontal padding override (overrides horizontal component of padding preset) */
@@ -695,7 +1295,7 @@ var navLinkStyleSchema = z8.object({
695
1295
  });
696
1296
 
697
1297
  // ../theme-core/src/customCss/validation.ts
698
- import { z as z9 } from "zod";
1298
+ import { z as z11 } from "zod";
699
1299
  var FORBIDDEN_SELECTORS = [":root", "html", "body"];
700
1300
  var UNIVERSAL_SELECTOR = "*";
701
1301
  var REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
@@ -737,7 +1337,7 @@ function containsForbiddenSelector(selector) {
737
1337
  }
738
1338
  return false;
739
1339
  }
740
- var selectorSchema = z9.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
1340
+ var selectorSchema = z11.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
741
1341
  (s) => !containsForbiddenSelector(s),
742
1342
  { message: "Global selectors (:root, html, body, *) are not allowed" }
743
1343
  );
@@ -747,38 +1347,38 @@ function containsRemoteUrl(value) {
747
1347
  function containsJavascriptUrl(value) {
748
1348
  return JAVASCRIPT_URL_PATTERN.test(value);
749
1349
  }
750
- var declarationValueSchema = z9.string().max(500, "Declaration value too long (max 500 characters)").refine(
1350
+ var declarationValueSchema = z11.string().max(500, "Declaration value too long (max 500 characters)").refine(
751
1351
  (v) => !containsRemoteUrl(v),
752
1352
  { message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
753
1353
  ).refine(
754
1354
  (v) => !containsJavascriptUrl(v),
755
1355
  { message: "javascript: URLs are not allowed" }
756
1356
  );
757
- var declarationsSchema = z9.record(
758
- z9.string().min(1).max(100),
1357
+ var declarationsSchema = z11.record(
1358
+ z11.string().min(1).max(100),
759
1359
  // property name
760
1360
  declarationValueSchema
761
1361
  // property value
762
1362
  );
763
- var customCssRuleSchema = z9.object({
764
- id: z9.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
1363
+ var customCssRuleSchema = z11.object({
1364
+ id: z11.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
765
1365
  selector: selectorSchema,
766
1366
  declarations: declarationsSchema
767
1367
  });
768
1368
  var blockCustomCssRuleSchema = customCssRuleSchema.extend({
769
- blockKind: z9.string().min(1, "Block kind is required").max(50, "Block kind too long")
1369
+ blockKind: z11.string().min(1, "Block kind is required").max(50, "Block kind too long")
770
1370
  });
771
- var customCssRulesSchema = z9.array(customCssRuleSchema).optional();
772
- var blockCustomCssRulesSchema = z9.array(blockCustomCssRuleSchema).optional();
1371
+ var customCssRulesSchema = z11.array(customCssRuleSchema).optional();
1372
+ var blockCustomCssRulesSchema = z11.array(blockCustomCssRuleSchema).optional();
773
1373
 
774
1374
  // ../theme-core/src/customCss/atRuleValidation.ts
775
- import { z as z10 } from "zod";
1375
+ import { z as z12 } from "zod";
776
1376
  var KEYFRAME_OFFSET_PATTERN = /^(from|to|\d{1,3}%)$/i;
777
1377
  var ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
778
1378
  var BLOCKED_AT_RULES = ["@import", "@charset"];
779
1379
  var BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
780
- var ruleIdSchema = z10.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
781
- var nestedRuleSchema = z10.object({
1380
+ var ruleIdSchema = z12.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
1381
+ var nestedRuleSchema = z12.object({
782
1382
  selector: selectorSchema,
783
1383
  declarations: declarationsSchema
784
1384
  });
@@ -790,146 +1390,146 @@ function isValidKeyframeOffset(offset) {
790
1390
  const value = parseInt(match[1], 10);
791
1391
  return value >= 0 && value <= 100;
792
1392
  }
793
- var keyframeOffsetSchema = z10.string().transform((offset) => offset.trim()).refine(
1393
+ var keyframeOffsetSchema = z12.string().transform((offset) => offset.trim()).refine(
794
1394
  (offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
795
1395
  { message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
796
1396
  ).refine(
797
1397
  isValidKeyframeOffset,
798
1398
  { message: "Keyframe offset must be between 0% and 100%" }
799
1399
  );
800
- var animationNameSchema = z10.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
1400
+ var animationNameSchema = z12.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
801
1401
  (name) => ANIMATION_NAME_PATTERN.test(name),
802
1402
  { message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
803
1403
  );
804
- var keyframeSchema = z10.object({
1404
+ var keyframeSchema = z12.object({
805
1405
  offset: keyframeOffsetSchema,
806
1406
  declarations: declarationsSchema
807
1407
  });
808
- var keyframesAtRuleSchema = z10.object({
1408
+ var keyframesAtRuleSchema = z12.object({
809
1409
  id: ruleIdSchema,
810
- type: z10.literal("keyframes"),
1410
+ type: z12.literal("keyframes"),
811
1411
  name: animationNameSchema,
812
- frames: z10.array(keyframeSchema).min(1, "At least one keyframe is required")
1412
+ frames: z12.array(keyframeSchema).min(1, "At least one keyframe is required")
813
1413
  });
814
- var fontFaceDeclarationsSchema = z10.record(z10.string().min(1).max(100), declarationValueSchema).refine(
1414
+ var fontFaceDeclarationsSchema = z12.record(z12.string().min(1).max(100), declarationValueSchema).refine(
815
1415
  (decls) => "fontFamily" in decls || "font-family" in decls,
816
1416
  { message: "font-family is required in @font-face" }
817
1417
  );
818
- var fontFaceAtRuleSchema = z10.object({
1418
+ var fontFaceAtRuleSchema = z12.object({
819
1419
  id: ruleIdSchema,
820
- type: z10.literal("font-face"),
1420
+ type: z12.literal("font-face"),
821
1421
  declarations: fontFaceDeclarationsSchema
822
1422
  });
823
- var mediaQuerySchema = z10.string().min(1, "Media query is required").max(200, "Media query too long");
824
- var mediaAtRuleSchema = z10.object({
1423
+ var mediaQuerySchema = z12.string().min(1, "Media query is required").max(200, "Media query too long");
1424
+ var mediaAtRuleSchema = z12.object({
825
1425
  id: ruleIdSchema,
826
- type: z10.literal("media"),
1426
+ type: z12.literal("media"),
827
1427
  query: mediaQuerySchema,
828
- rules: z10.array(nestedRuleSchema).min(1, "At least one rule is required")
1428
+ rules: z12.array(nestedRuleSchema).min(1, "At least one rule is required")
829
1429
  });
830
- var supportsConditionSchema = z10.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
831
- var supportsAtRuleSchema = z10.object({
1430
+ var supportsConditionSchema = z12.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
1431
+ var supportsAtRuleSchema = z12.object({
832
1432
  id: ruleIdSchema,
833
- type: z10.literal("supports"),
1433
+ type: z12.literal("supports"),
834
1434
  condition: supportsConditionSchema,
835
- rules: z10.array(nestedRuleSchema).min(1, "At least one rule is required")
1435
+ rules: z12.array(nestedRuleSchema).min(1, "At least one rule is required")
836
1436
  });
837
1437
  function containsBlockedAtRule(css) {
838
1438
  return BLOCKED_AT_RULE_PATTERN.test(css);
839
1439
  }
840
- var rawCssSchema = z10.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
1440
+ var rawCssSchema = z12.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
841
1441
  (css) => css.trim().startsWith("@"),
842
1442
  { message: "Raw at-rule must start with @" }
843
1443
  ).refine(
844
1444
  (css) => !containsBlockedAtRule(css),
845
1445
  { message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
846
1446
  );
847
- var rawAtRuleSchema = z10.object({
1447
+ var rawAtRuleSchema = z12.object({
848
1448
  id: ruleIdSchema,
849
- type: z10.literal("raw"),
1449
+ type: z12.literal("raw"),
850
1450
  css: rawCssSchema
851
1451
  });
852
- var customCssAtRuleSchema = z10.discriminatedUnion("type", [
1452
+ var customCssAtRuleSchema = z12.discriminatedUnion("type", [
853
1453
  keyframesAtRuleSchema,
854
1454
  fontFaceAtRuleSchema,
855
1455
  mediaAtRuleSchema,
856
1456
  supportsAtRuleSchema,
857
1457
  rawAtRuleSchema
858
1458
  ]);
859
- var customCssAtRulesSchema = z10.array(customCssAtRuleSchema).optional();
1459
+ var customCssAtRulesSchema = z12.array(customCssAtRuleSchema).optional();
860
1460
 
861
1461
  // ../theme-core/src/shared/componentStyles.ts
862
- import { z as z11 } from "zod";
863
- var componentBorderSchema = z11.object({
864
- width: z11.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
865
- style: z11.enum(["solid", "dashed"]).default("solid"),
866
- colorToken: z11.string().optional()
1462
+ import { z as z13 } from "zod";
1463
+ var componentBorderSchema = z13.object({
1464
+ width: z13.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
1465
+ style: z13.enum(["solid", "dashed"]).default("solid"),
1466
+ colorToken: z13.string().optional()
867
1467
  // defaults to "border" if not set
868
1468
  });
869
- var componentShadowSchema = z11.object({
870
- elevation: z11.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
1469
+ var componentShadowSchema = z13.object({
1470
+ elevation: z13.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
871
1471
  });
872
1472
 
873
1473
  // ../theme-core/src/schema.ts
874
- var axesSchema = z12.object({
875
- tone: z12.enum(["minimal", "classic", "bold"]),
876
- energy: z12.enum(["calm", "vibrant"]),
877
- density: z12.enum(["airy", "regular", "compact"]),
878
- mediaBias: z12.enum(["text", "media", "mixed"]),
879
- conversionBias: z12.enum(["low", "med", "high"]),
880
- motion: z12.enum(["subtle", "standard", "expressive"])
1474
+ var axesSchema = z14.object({
1475
+ tone: z14.enum(["minimal", "classic", "bold"]),
1476
+ energy: z14.enum(["calm", "vibrant"]),
1477
+ density: z14.enum(["airy", "regular", "compact"]),
1478
+ mediaBias: z14.enum(["text", "media", "mixed"]),
1479
+ conversionBias: z14.enum(["low", "med", "high"]),
1480
+ motion: z14.enum(["subtle", "standard", "expressive"])
881
1481
  });
882
- var colourHexString = z12.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
883
- var paletteColorSchema = z12.object({
884
- name: z12.string().min(1),
1482
+ var colourHexString = z14.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
1483
+ var paletteColorSchema = z14.object({
1484
+ name: z14.string().min(1),
885
1485
  hex: colourHexString
886
1486
  });
887
- var paletteMetaSchema = z12.object({
888
- mode: z12.enum(["light", "dark"])
1487
+ var paletteMetaSchema = z14.object({
1488
+ mode: z14.enum(["light", "dark"])
889
1489
  });
890
- var paletteSchema = z12.object({
891
- colors: z12.array(paletteColorSchema),
1490
+ var paletteSchema = z14.object({
1491
+ colors: z14.array(paletteColorSchema),
892
1492
  meta: paletteMetaSchema
893
1493
  });
894
- var typographyStyleSchema = z12.object({
895
- family: z12.string().min(1),
896
- weight: z12.enum(["light", "regular", "medium", "semibold", "bold"]),
897
- letterSpacing: z12.enum(["tight", "normal", "loose"]),
898
- lineHeight: z12.enum(["normal", "relaxed", "loose"])
1494
+ var typographyStyleSchema = z14.object({
1495
+ family: z14.string().min(1),
1496
+ weight: z14.enum(["light", "regular", "medium", "semibold", "bold"]),
1497
+ letterSpacing: z14.enum(["tight", "normal", "loose"]),
1498
+ lineHeight: z14.enum(["normal", "relaxed", "loose"])
899
1499
  });
900
1500
  var bodyTypographyStyleSchema = typographyStyleSchema.extend({
901
- size: z12.enum(["md", "lg", "xl"])
1501
+ size: z14.enum(["md", "lg", "xl"])
902
1502
  });
903
- var headingSizeSchema = z12.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
904
- var headingTypographyOverridesSchema = z12.object({
905
- weight: z12.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
906
- letterSpacing: z12.enum(["tight", "normal", "loose"]).nullable().optional(),
1503
+ var headingSizeSchema = z14.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
1504
+ var headingTypographyOverridesSchema = z14.object({
1505
+ weight: z14.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
1506
+ letterSpacing: z14.enum(["tight", "normal", "loose"]).nullable().optional(),
907
1507
  size: headingSizeSchema.nullable().optional(),
908
- lineHeight: z12.enum(["normal", "relaxed", "loose"]).nullable().optional(),
909
- italic: z12.boolean().nullable().optional(),
910
- colorToken: z12.string().min(1).nullable().optional()
1508
+ lineHeight: z14.enum(["normal", "relaxed", "loose"]).nullable().optional(),
1509
+ italic: z14.boolean().nullable().optional(),
1510
+ colorToken: z14.string().min(1).nullable().optional()
911
1511
  // Palette token name for heading color
912
1512
  });
913
1513
  var headingTypographyStyleSchema = typographyStyleSchema.extend({
914
- case: z12.enum(["uppercase", "normal", "smallCaps"]).nullable(),
915
- italic: z12.boolean().nullable(),
916
- colorToken: z12.string().min(1).nullable().optional()
1514
+ case: z14.enum(["uppercase", "normal", "smallCaps"]).nullable(),
1515
+ italic: z14.boolean().nullable(),
1516
+ colorToken: z14.string().min(1).nullable().optional()
917
1517
  // Palette token name for heading color
918
1518
  });
919
- var proseLinkUnderlineStyleSchema = z12.enum(["solid", "dotted", "dashed"]);
920
- var proseLinkUnderlineThicknessSchema = z12.enum(["auto", "fromFont", "thin", "medium", "thick"]);
921
- var proseLinkUnderlineOffsetSchema = z12.enum(["auto", "tight", "normal", "loose"]);
922
- var proseLinkStyleSchema = z12.object({
923
- colorToken: z12.string().min(1).optional(),
924
- hoverColorToken: z12.string().min(1).optional(),
925
- underline: z12.boolean().optional(),
926
- decorationColorToken: z12.string().min(1).optional(),
927
- hoverDecorationColorToken: z12.string().min(1).optional(),
1519
+ var proseLinkUnderlineStyleSchema = z14.enum(["solid", "dotted", "dashed"]);
1520
+ var proseLinkUnderlineThicknessSchema = z14.enum(["auto", "fromFont", "thin", "medium", "thick"]);
1521
+ var proseLinkUnderlineOffsetSchema = z14.enum(["auto", "tight", "normal", "loose"]);
1522
+ var proseLinkStyleSchema = z14.object({
1523
+ colorToken: z14.string().min(1).optional(),
1524
+ hoverColorToken: z14.string().min(1).optional(),
1525
+ underline: z14.boolean().optional(),
1526
+ decorationColorToken: z14.string().min(1).optional(),
1527
+ hoverDecorationColorToken: z14.string().min(1).optional(),
928
1528
  underlineStyle: proseLinkUnderlineStyleSchema.optional(),
929
1529
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
930
1530
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
931
1531
  });
932
- var semanticSpacingSchema = z12.enum([
1532
+ var semanticSpacingSchema = z14.enum([
933
1533
  "none",
934
1534
  "compact",
935
1535
  "cozy",
@@ -937,62 +1537,62 @@ var semanticSpacingSchema = z12.enum([
937
1537
  "comfortable",
938
1538
  "spacious"
939
1539
  ]);
940
- var boxRoundedSchema = z12.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
941
- var boxBackgroundOverlaySchema = z12.object({
942
- type: z12.enum(["none", "color", "gradient"]).nullable().optional(),
943
- color: z12.string().nullable().optional(),
944
- gradient: z12.string().nullable().optional(),
945
- opacity: z12.number().min(0).max(1).nullable().optional()
1540
+ var boxRoundedSchema = z14.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
1541
+ var boxBackgroundOverlaySchema = z14.object({
1542
+ type: z14.enum(["none", "color", "gradient"]).nullable().optional(),
1543
+ color: z14.string().nullable().optional(),
1544
+ gradient: z14.string().nullable().optional(),
1545
+ opacity: z14.number().min(0).max(1).nullable().optional()
946
1546
  });
947
- var boxBackgroundSchema = z12.object({
948
- type: z12.enum(["color", "gradient", "image"]).optional(),
949
- color: z12.string().nullable().optional(),
950
- gradient: z12.string().nullable().optional(),
1547
+ var boxBackgroundSchema = z14.object({
1548
+ type: z14.enum(["color", "gradient", "image"]).optional(),
1549
+ color: z14.string().nullable().optional(),
1550
+ gradient: z14.string().nullable().optional(),
951
1551
  image: mediaSchema.nullable().optional(),
952
- objectFit: z12.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
953
- scale: z12.string().nullable().optional(),
954
- position: z12.string().nullable().optional(),
955
- opacity: z12.number().min(0).max(1).nullable().optional(),
1552
+ objectFit: z14.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
1553
+ scale: z14.string().nullable().optional(),
1554
+ position: z14.string().nullable().optional(),
1555
+ opacity: z14.number().min(0).max(1).nullable().optional(),
956
1556
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
957
- textColor: z12.string().nullable().optional(),
958
- headingColor: z12.string().nullable().optional()
1557
+ textColor: z14.string().nullable().optional(),
1558
+ headingColor: z14.string().nullable().optional()
959
1559
  });
960
- var sectionStylesOverrideSchema = z12.object({
1560
+ var sectionStylesOverrideSchema = z14.object({
961
1561
  background: boxBackgroundSchema.nullable().optional(),
962
1562
  spacing: semanticSpacingSchema.nullable().optional(),
963
- minHeight: z12.enum(["none", "hero", "immersive"]).nullable().optional()
1563
+ minHeight: z14.enum(["none", "hero", "immersive"]).nullable().optional()
964
1564
  });
965
- var containerStylesOverrideSchema = z12.object({
1565
+ var containerStylesOverrideSchema = z14.object({
966
1566
  background: boxBackgroundSchema.nullable().optional(),
967
1567
  spacing: semanticSpacingSchema.nullable().optional(),
968
- raised: z12.boolean().nullable().optional(),
1568
+ raised: z14.boolean().nullable().optional(),
969
1569
  rounded: boxRoundedSchema.nullable().optional(),
970
- fullWidth: z12.boolean().nullable().optional()
1570
+ fullWidth: z14.boolean().nullable().optional()
971
1571
  });
972
- var cardBorderOverrideSchema = z12.object({
973
- enabled: z12.boolean().nullable().optional(),
974
- width: z12.enum(["none", "1", "2", "3"]).nullable().optional(),
975
- colorToken: z12.string().nullable().optional()
1572
+ var cardBorderOverrideSchema = z14.object({
1573
+ enabled: z14.boolean().nullable().optional(),
1574
+ width: z14.enum(["none", "1", "2", "3"]).nullable().optional(),
1575
+ colorToken: z14.string().nullable().optional()
976
1576
  });
977
- var cardStylesOverrideSchema = z12.object({
1577
+ var cardStylesOverrideSchema = z14.object({
978
1578
  background: boxBackgroundSchema.nullable().optional(),
979
1579
  border: cardBorderOverrideSchema.nullable().optional(),
980
1580
  spacing: semanticSpacingSchema.nullable().optional(),
981
- raised: z12.boolean().nullable().optional(),
1581
+ raised: z14.boolean().nullable().optional(),
982
1582
  rounded: boxRoundedSchema.nullable().optional()
983
1583
  });
984
- var blockStyleOverridesSchema = z12.object({
1584
+ var blockStyleOverridesSchema = z14.object({
985
1585
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
986
1586
  containerStyles: containerStylesOverrideSchema.nullable().optional(),
987
1587
  cardStyles: cardStylesOverrideSchema.nullable().optional()
988
1588
  });
989
- var blockThemeOverrideSchema = z12.object({
990
- typography: z12.object({
1589
+ var blockThemeOverrideSchema = z14.object({
1590
+ typography: z14.object({
991
1591
  proseLinkStyle: proseLinkStyleSchema.optional()
992
1592
  }).optional(),
993
1593
  styles: blockStyleOverridesSchema.optional()
994
1594
  });
995
- var typographyScaleSchema = z12.enum([
1595
+ var typographyScaleSchema = z14.enum([
996
1596
  // New intuitive names
997
1597
  "compact",
998
1598
  // ratio 1.2 (was minorThird)
@@ -1005,9 +1605,9 @@ var typographyScaleSchema = z12.enum([
1005
1605
  "majorThird",
1006
1606
  "perfectFourth"
1007
1607
  ]);
1008
- var typographySchema = z12.object({
1608
+ var typographySchema = z14.object({
1009
1609
  body: bodyTypographyStyleSchema,
1010
- headings: z12.object({
1610
+ headings: z14.object({
1011
1611
  default: headingTypographyStyleSchema,
1012
1612
  h1: headingTypographyOverridesSchema,
1013
1613
  h2: headingTypographyOverridesSchema,
@@ -1020,41 +1620,41 @@ var typographySchema = z12.object({
1020
1620
  scale: typographyScaleSchema,
1021
1621
  proseLinkStyle: proseLinkStyleSchema.optional()
1022
1622
  });
1023
- var spaceSchema = z12.enum(["comfortable", "standard", "dense"]);
1024
- var corners = z12.enum(["square", "soft", "rounded", "pill"]);
1025
- var shadow = z12.object({
1026
- elevation: z12.enum(["none", "low", "medium", "high"]),
1027
- softness: z12.enum(["crisp", "soft", "hard"]).nullable(),
1028
- position: z12.enum(["bottom", "bottom-right"]).default("bottom")
1623
+ var spaceSchema = z14.enum(["comfortable", "standard", "dense"]);
1624
+ var corners = z14.enum(["square", "soft", "rounded", "pill"]);
1625
+ var shadow = z14.object({
1626
+ elevation: z14.enum(["none", "low", "medium", "high"]),
1627
+ softness: z14.enum(["crisp", "soft", "hard"]).nullable(),
1628
+ position: z14.enum(["bottom", "bottom-right"]).default("bottom")
1029
1629
  });
1030
- var border = z12.object({
1031
- width: z12.enum(["none", "hairline", "thin", "thick"]),
1032
- style: z12.enum(["solid", "dashed"])
1630
+ var border = z14.object({
1631
+ width: z14.enum(["none", "hairline", "thin", "thick"]),
1632
+ style: z14.enum(["solid", "dashed"])
1033
1633
  });
1034
- var motion = z12.object({
1035
- level: z12.enum(["off", "low", "medium", "high"]),
1036
- easing: z12.enum(["standard", "snappy", "gentle"]).nullable()
1634
+ var motion = z14.object({
1635
+ level: z14.enum(["off", "low", "medium", "high"]),
1636
+ easing: z14.enum(["standard", "snappy", "gentle"]).nullable()
1037
1637
  });
1038
- var buttonStyle = z12.object({
1638
+ var buttonStyle = z14.object({
1039
1639
  shape: corners
1040
1640
  // Used for --radius-control CSS variable
1041
1641
  });
1042
- var cardStyle = z12.object({
1043
- elevation: z12.enum(["none", "low", "medium", "high"]),
1044
- border: z12.enum(["none", "subtle", "defined"]),
1642
+ var cardStyle = z14.object({
1643
+ elevation: z14.enum(["none", "low", "medium", "high"]),
1644
+ border: z14.enum(["none", "subtle", "defined"]),
1045
1645
  shape: corners,
1046
- headerStyle: z12.enum(["plain", "accentBar", "subtleBg"]).nullable(),
1047
- mediaTreatment: z12.enum(["square", "rounded", "bleed"]).nullable()
1646
+ headerStyle: z14.enum(["plain", "accentBar", "subtleBg"]).nullable(),
1647
+ mediaTreatment: z14.enum(["square", "rounded", "bleed"]).nullable()
1048
1648
  });
1049
- var inputStyle = z12.object({
1649
+ var inputStyle = z14.object({
1050
1650
  shape: corners,
1051
- border: z12.enum(["subtle", "defined", "underline"]),
1052
- focus: z12.enum(["glow", "ring", "underline"]),
1053
- label: z12.enum(["inside", "above"])
1651
+ border: z14.enum(["subtle", "defined", "underline"]),
1652
+ focus: z14.enum(["glow", "ring", "underline"]),
1653
+ label: z14.enum(["inside", "above"])
1054
1654
  });
1055
- var headerVariant = z12.enum(["classic", "centered", "transparent", "floating", "editorial"]);
1056
- var headerPositioning = z12.enum(["static", "sticky", "fixed"]);
1057
- var headerNavStyle = z12.enum([
1655
+ var headerVariant = z14.enum(["classic", "centered", "transparent", "floating", "editorial"]);
1656
+ var headerPositioning = z14.enum(["static", "sticky", "fixed"]);
1657
+ var headerNavStyle = z14.enum([
1058
1658
  "minimal",
1059
1659
  "underline",
1060
1660
  "underline-grow",
@@ -1063,82 +1663,82 @@ var headerNavStyle = z12.enum([
1063
1663
  "frosted",
1064
1664
  "solid"
1065
1665
  ]);
1066
- var navFontWeight = z12.enum(["regular", "medium", "semibold", "bold"]);
1067
- var headerMaxWidth = z12.enum(["container", "full"]);
1068
- var headerContainerSchema = z12.object({
1069
- rounded: z12.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
1070
- border: z12.boolean().default(true),
1071
- shadow: z12.boolean().default(true),
1072
- padding: z12.enum(["sm", "md", "lg"]).default("md"),
1073
- tint: z12.string().nullable().optional(),
1074
- opacity: z12.number().min(0).max(1).default(0.12)
1666
+ var navFontWeight = z14.enum(["regular", "medium", "semibold", "bold"]);
1667
+ var headerMaxWidth = z14.enum(["container", "full"]);
1668
+ var headerContainerSchema = z14.object({
1669
+ rounded: z14.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
1670
+ border: z14.boolean().default(true),
1671
+ shadow: z14.boolean().default(true),
1672
+ padding: z14.enum(["sm", "md", "lg"]).default("md"),
1673
+ tint: z14.string().nullable().optional(),
1674
+ opacity: z14.number().min(0).max(1).default(0.12)
1075
1675
  }).optional();
1076
1676
  var headerBorderSchema = componentBorderSchema.extend({
1077
- position: z12.enum(["bottom", "top", "both", "none"]).default("bottom")
1677
+ position: z14.enum(["bottom", "top", "both", "none"]).default("bottom")
1078
1678
  }).optional();
1079
- var logoStyleSchema = z12.object({
1080
- fontFamily: z12.enum(["heading", "body"]).default("heading"),
1081
- letterSpacing: z12.enum(["normal", "wide", "wider", "widest"]).default("normal"),
1082
- gradient: z12.boolean().default(false)
1679
+ var logoStyleSchema = z14.object({
1680
+ fontFamily: z14.enum(["heading", "body"]).default("heading"),
1681
+ letterSpacing: z14.enum(["normal", "wide", "wider", "widest"]).default("normal"),
1682
+ gradient: z14.boolean().default(false)
1083
1683
  }).optional();
1084
- var headerLogoTextSchema = z12.object({
1085
- mobileWrapLines: z12.union([z12.literal(1), z12.literal(2)]).optional(),
1086
- mobileMaxWidth: z12.enum(["xs", "sm", "md"]).optional(),
1087
- hideOnShrink: z12.boolean().optional()
1684
+ var headerLogoTextSchema = z14.object({
1685
+ mobileWrapLines: z14.union([z14.literal(1), z14.literal(2)]).optional(),
1686
+ mobileMaxWidth: z14.enum(["xs", "sm", "md"]).optional(),
1687
+ hideOnShrink: z14.boolean().optional()
1088
1688
  }).optional();
1089
- var navEffectsSchema = z12.object({
1090
- underlineGradient: z12.boolean().default(false),
1091
- glow: z12.boolean().default(false),
1092
- glowColor: z12.string().optional(),
1093
- neumorphic: z12.boolean().default(false)
1689
+ var navEffectsSchema = z14.object({
1690
+ underlineGradient: z14.boolean().default(false),
1691
+ glow: z14.boolean().default(false),
1692
+ glowColor: z14.string().optional(),
1693
+ neumorphic: z14.boolean().default(false)
1094
1694
  }).optional();
1095
- var dropdownStyleSchema = z12.object({
1695
+ var dropdownStyleSchema = z14.object({
1096
1696
  // Container styling
1097
- background: z12.string().default("surface"),
1697
+ background: z14.string().default("surface"),
1098
1698
  // color token
1099
- textColor: z12.string().default("text"),
1699
+ textColor: z14.string().default("text"),
1100
1700
  // color token
1101
- borderColor: z12.string().nullable().default("border"),
1701
+ borderColor: z14.string().nullable().default("border"),
1102
1702
  // null = no border
1103
- shadow: z12.enum(["none", "sm", "md", "lg"]).default("md"),
1104
- borderRadius: z12.enum(["none", "sm", "md", "lg"]).default("md"),
1703
+ shadow: z14.enum(["none", "sm", "md", "lg"]).default("md"),
1704
+ borderRadius: z14.enum(["none", "sm", "md", "lg"]).default("md"),
1105
1705
  // Link hover states (explicit control)
1106
- hoverBackground: z12.string().nullable().optional(),
1706
+ hoverBackground: z14.string().nullable().optional(),
1107
1707
  // color token, null = transparent
1108
- hoverTextColor: z12.string().nullable().optional(),
1708
+ hoverTextColor: z14.string().nullable().optional(),
1109
1709
  // color token, null = inherit
1110
1710
  // Typography
1111
- textTransform: z12.enum(["none", "uppercase", "capitalize"]).default("none"),
1112
- letterSpacing: z12.enum(["normal", "wide", "wider"]).default("normal"),
1113
- fontWeight: z12.enum(["regular", "medium", "semibold", "bold"]).optional(),
1711
+ textTransform: z14.enum(["none", "uppercase", "capitalize"]).default("none"),
1712
+ letterSpacing: z14.enum(["normal", "wide", "wider"]).default("normal"),
1713
+ fontWeight: z14.enum(["regular", "medium", "semibold", "bold"]).optional(),
1114
1714
  // optional = inherit from navWeight
1115
- textSize: z12.enum(["xs", "sm", "base", "lg"]).optional()
1715
+ textSize: z14.enum(["xs", "sm", "base", "lg"]).optional()
1116
1716
  // optional = no override (browser default)
1117
1717
  }).optional();
1118
- var headerCtaGapSchema = z12.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1119
- var navContainerSchema = z12.object({
1120
- type: z12.enum(["none", "pill", "glass"]).default("none"),
1121
- tint: z12.string().nullable().optional(),
1122
- opacity: z12.number().min(0).max(1).default(0.15)
1718
+ var headerCtaGapSchema = z14.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1719
+ var navContainerSchema = z14.object({
1720
+ type: z14.enum(["none", "pill", "glass"]).default("none"),
1721
+ tint: z14.string().nullable().optional(),
1722
+ opacity: z14.number().min(0).max(1).default(0.15)
1123
1723
  }).default({ type: "none", tint: null, opacity: 0.15 });
1124
- var headerBackgroundSchema = z12.object({
1125
- type: z12.enum(["color", "gradient", "image"]),
1126
- color: z12.string().nullable().optional(),
1724
+ var headerBackgroundSchema = z14.object({
1725
+ type: z14.enum(["color", "gradient", "image"]),
1726
+ color: z14.string().nullable().optional(),
1127
1727
  gradient: gradientConfigSchema.nullable().optional(),
1128
1728
  image: mediaSchema.nullable().optional(),
1129
- textColor: z12.string().nullable().optional()
1729
+ textColor: z14.string().nullable().optional()
1130
1730
  });
1131
- var headerSchema = z12.object({
1731
+ var headerSchema = z14.object({
1132
1732
  variant: headerVariant,
1133
1733
  positioning: headerPositioning,
1134
- shrinkOnScroll: z12.boolean(),
1734
+ shrinkOnScroll: z14.boolean(),
1135
1735
  maxWidth: headerMaxWidth,
1136
1736
  logoOverride: mediaSchema.nullable().optional(),
1137
1737
  background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
1138
- textColor: z12.string().nullable().optional(),
1738
+ textColor: z14.string().nullable().optional(),
1139
1739
  // Site title and general header text
1140
1740
  navStyle: headerNavStyle,
1141
- navColor: z12.string().nullable().optional(),
1741
+ navColor: z14.string().nullable().optional(),
1142
1742
  // Nav links (inherits textColor if not set)
1143
1743
  navWeight: navFontWeight.default("medium"),
1144
1744
  // New fields for header system enhancement
@@ -1157,50 +1757,50 @@ var headerSchema = z12.object({
1157
1757
  // Dropdown menu styling (nav dropdowns and mobile drawer)
1158
1758
  dropdownStyle: dropdownStyleSchema
1159
1759
  });
1160
- var footerVariant = z12.enum(["simple", "columns", "split"]);
1161
- var footerMaxWidth = z12.enum(["container", "full"]);
1162
- var footerMode = z12.enum(["default", "blocks", "default+blocks", "none"]);
1163
- var footerNavLayoutMode = z12.enum(["stack", "inline", "inline-wrap"]);
1164
- var footerNavLayoutAlign = z12.enum(["start", "center", "end", "space-between"]);
1165
- var footerSpacing = z12.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1166
- var footerLogoPlacement = z12.enum(["left", "right", "above", "below"]);
1167
- var footerLogoSize = z12.enum(["sm", "md", "lg", "xl"]);
1168
- var footerLogoMaxHeight = z12.enum(["sm", "md", "lg", "xl"]);
1169
- var footerBottomTextLinkStyleSchema = z12.object({
1170
- colorToken: z12.string().optional(),
1171
- hoverColorToken: z12.string().nullable().optional(),
1172
- decorationColorToken: z12.string().nullable().optional(),
1173
- underline: z12.boolean().optional()
1760
+ var footerVariant = z14.enum(["simple", "columns", "split"]);
1761
+ var footerMaxWidth = z14.enum(["container", "full"]);
1762
+ var footerMode = z14.enum(["default", "blocks", "default+blocks", "none"]);
1763
+ var footerNavLayoutMode = z14.enum(["stack", "inline", "inline-wrap"]);
1764
+ var footerNavLayoutAlign = z14.enum(["start", "center", "end", "space-between"]);
1765
+ var footerSpacing = z14.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1766
+ var footerLogoPlacement = z14.enum(["left", "right", "above", "below"]);
1767
+ var footerLogoSize = z14.enum(["sm", "md", "lg", "xl"]);
1768
+ var footerLogoMaxHeight = z14.enum(["sm", "md", "lg", "xl"]);
1769
+ var footerBottomTextLinkStyleSchema = z14.object({
1770
+ colorToken: z14.string().optional(),
1771
+ hoverColorToken: z14.string().nullable().optional(),
1772
+ decorationColorToken: z14.string().nullable().optional(),
1773
+ underline: z14.boolean().optional()
1174
1774
  });
1175
- var footerBottomBarSchema = z12.object({
1176
- enabled: z12.boolean().optional(),
1177
- fullBleed: z12.boolean().optional(),
1775
+ var footerBottomBarSchema = z14.object({
1776
+ enabled: z14.boolean().optional(),
1777
+ fullBleed: z14.boolean().optional(),
1178
1778
  background: headerBackgroundSchema.optional(),
1179
- textColor: z12.string().nullable().optional(),
1180
- textAlign: z12.enum(["left", "center", "right"]).optional(),
1779
+ textColor: z14.string().nullable().optional(),
1780
+ textAlign: z14.enum(["left", "center", "right"]).optional(),
1181
1781
  paddingY: footerSpacing.optional(),
1182
1782
  paddingX: footerSpacing.optional(),
1183
- borderTop: z12.object({
1184
- colorToken: z12.string().nullable().optional(),
1185
- width: z12.enum(["none", "thin", "medium", "thick"]).optional()
1783
+ borderTop: z14.object({
1784
+ colorToken: z14.string().nullable().optional(),
1785
+ width: z14.enum(["none", "thin", "medium", "thick"]).optional()
1186
1786
  }).optional()
1187
1787
  });
1188
- var footerNavLayoutSchema = z12.object({
1788
+ var footerNavLayoutSchema = z14.object({
1189
1789
  layout: footerNavLayoutMode.optional(),
1190
1790
  align: footerNavLayoutAlign.optional(),
1191
1791
  gapX: footerSpacing.optional(),
1192
1792
  gapY: footerSpacing.optional(),
1193
- columns: z12.number().int().min(1).max(6).optional()
1793
+ columns: z14.number().int().min(1).max(6).optional()
1194
1794
  });
1195
- var footerLogoSchema = z12.object({
1196
- showLogo: z12.boolean().default(true),
1197
- showLogoText: z12.boolean().optional(),
1795
+ var footerLogoSchema = z14.object({
1796
+ showLogo: z14.boolean().default(true),
1797
+ showLogoText: z14.boolean().optional(),
1198
1798
  placement: footerLogoPlacement.optional(),
1199
1799
  size: footerLogoSize.optional(),
1200
1800
  maxHeight: footerLogoMaxHeight.optional(),
1201
- align: z12.enum(["start", "center", "end"]).optional()
1801
+ align: z14.enum(["start", "center", "end"]).optional()
1202
1802
  });
1203
- var footerSchema = z12.object({
1803
+ var footerSchema = z14.object({
1204
1804
  /**
1205
1805
  * SDK-only footer rendering mode.
1206
1806
  *
@@ -1209,11 +1809,11 @@ var footerSchema = z12.object({
1209
1809
  mode: footerMode.optional(),
1210
1810
  variant: footerVariant,
1211
1811
  maxWidth: footerMaxWidth,
1212
- showLogoText: z12.boolean().optional(),
1812
+ showLogoText: z14.boolean().optional(),
1213
1813
  background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
1214
1814
  // Footer nav styling (independent from header)
1215
1815
  navStyle: headerNavStyle.default("minimal"),
1216
- navColor: z12.string().nullable().optional(),
1816
+ navColor: z14.string().nullable().optional(),
1217
1817
  navWeight: navFontWeight.default("medium"),
1218
1818
  // Full nav link customization (overrides navStyle if set)
1219
1819
  navLinkStyle: navLinkStyleSchema.optional(),
@@ -1224,15 +1824,15 @@ var footerSchema = z12.object({
1224
1824
  logo: footerLogoSchema.optional(),
1225
1825
  bottomBar: footerBottomBarSchema.optional()
1226
1826
  });
1227
- var containerPaddingPresetSchema = z12.enum(["tight", "compact", "default", "relaxed"]);
1228
- var layoutSchema = z12.object({
1229
- containerPadding: z12.object({
1827
+ var containerPaddingPresetSchema = z14.enum(["tight", "compact", "default", "relaxed"]);
1828
+ var layoutSchema = z14.object({
1829
+ containerPadding: z14.object({
1230
1830
  mobile: containerPaddingPresetSchema.optional(),
1231
1831
  tablet: containerPaddingPresetSchema.optional(),
1232
1832
  desktop: containerPaddingPresetSchema.optional()
1233
1833
  }).optional()
1234
1834
  }).optional();
1235
- var heroTypographySizeSchema = z12.enum([
1835
+ var heroTypographySizeSchema = z14.enum([
1236
1836
  "sm",
1237
1837
  "base",
1238
1838
  "lg",
@@ -1243,14 +1843,14 @@ var heroTypographySizeSchema = z12.enum([
1243
1843
  "5xl",
1244
1844
  "6xl"
1245
1845
  ]);
1246
- var heroTypographyLineHeightSchema = z12.enum(["tight", "snug", "normal", "relaxed"]);
1247
- var heroResponsiveTypographySchema = z12.object({
1846
+ var heroTypographyLineHeightSchema = z14.enum(["tight", "snug", "normal", "relaxed"]);
1847
+ var heroResponsiveTypographySchema = z14.object({
1248
1848
  headlineSize: heroTypographySizeSchema.optional(),
1249
1849
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
1250
1850
  subheadlineSize: heroTypographySizeSchema.optional(),
1251
1851
  subheadlineLineHeight: heroTypographyLineHeightSchema.optional()
1252
1852
  });
1253
- var heroTypographySchema = z12.object({
1853
+ var heroTypographySchema = z14.object({
1254
1854
  headlineSize: heroTypographySizeSchema.optional(),
1255
1855
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
1256
1856
  subheadlineSize: heroTypographySizeSchema.optional(),
@@ -1259,24 +1859,24 @@ var heroTypographySchema = z12.object({
1259
1859
  microHeadlineLineHeight: heroTypographyLineHeightSchema.optional(),
1260
1860
  microSubheadlineSize: heroTypographySizeSchema.optional(),
1261
1861
  microSubheadlineLineHeight: heroTypographyLineHeightSchema.optional(),
1262
- responsive: z12.object({
1862
+ responsive: z14.object({
1263
1863
  tablet: heroResponsiveTypographySchema.optional(),
1264
1864
  mobile: heroResponsiveTypographySchema.optional()
1265
1865
  }).optional()
1266
1866
  });
1267
- var heroSchema = z12.object({
1867
+ var heroSchema = z14.object({
1268
1868
  typography: heroTypographySchema.optional()
1269
1869
  }).optional();
1270
- var gradientsSchema = z12.object({
1271
- button: z12.string().min(1).nullable().optional(),
1272
- hero: z12.string().min(1).nullable().optional(),
1273
- background: z12.string().min(1).nullable().optional()
1870
+ var gradientsSchema = z14.object({
1871
+ button: z14.string().min(1).nullable().optional(),
1872
+ hero: z14.string().min(1).nullable().optional(),
1873
+ background: z14.string().min(1).nullable().optional()
1274
1874
  });
1275
- var themeSchema = z12.object({
1276
- name: z12.string().min(1).max(30),
1277
- description: z12.string().min(1).max(400),
1278
- rationale: z12.string().min(1).max(400),
1279
- siteStyleId: z12.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
1875
+ var themeSchema = z14.object({
1876
+ name: z14.string().min(1).max(30),
1877
+ description: z14.string().min(1).max(400),
1878
+ rationale: z14.string().min(1).max(400),
1879
+ siteStyleId: z14.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
1280
1880
  axes: axesSchema,
1281
1881
  palette: paletteSchema,
1282
1882
  typography: typographySchema,
@@ -1303,16 +1903,16 @@ var themeSchema = z12.object({
1303
1903
  // Block-specific customization (Tier 3)
1304
1904
  // blockCustomVars: Per-block CSS variable overrides as bare values
1305
1905
  // Example: { "event-registration": { "--step-color": "#6d28d9" } }
1306
- blockCustomVars: z12.record(
1307
- z12.string(),
1906
+ blockCustomVars: z14.record(
1907
+ z14.string(),
1308
1908
  // block kind (matches data-block attribute)
1309
- z12.record(z12.string(), z12.string())
1909
+ z14.record(z14.string(), z14.string())
1310
1910
  // { '--var-name': 'value' }
1311
1911
  ).optional(),
1312
1912
  // Structured block-kind theme overrides (v1: typography prose-link style only)
1313
1913
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
1314
- blockOverrides: z12.record(
1315
- z12.string(),
1914
+ blockOverrides: z14.record(
1915
+ z14.string(),
1316
1916
  blockThemeOverrideSchema
1317
1917
  ).optional(),
1318
1918
  // Structured custom CSS rules
@@ -1348,13 +1948,371 @@ var themeSchema = z12.object({
1348
1948
  * }
1349
1949
  * ```
1350
1950
  */
1351
- styleGroups: z12.record(z12.string(), z12.array(z12.string())).optional()
1951
+ styleGroups: z14.record(z14.string(), z14.array(z14.string())).optional()
1952
+ });
1953
+ var themesTurnSchema = z14.object({
1954
+ message: z14.string().min(1),
1955
+ themes: z14.array(themeSchema).length(3)
1956
+ });
1957
+
1958
+ // ../theme-core/src/palette/variants/types.ts
1959
+ function asPaletteVariantId(value) {
1960
+ if (value.length === 0) {
1961
+ throw new Error("PaletteVariantId must be a non-empty string");
1962
+ }
1963
+ return value;
1964
+ }
1965
+ var paletteVariantIdSchema = z15.string().min(1).transform((value) => asPaletteVariantId(value));
1966
+ var PALETTE_TOKEN_NAMES = [
1967
+ "primary",
1968
+ "primaryForeground",
1969
+ "secondary",
1970
+ "accent",
1971
+ "success",
1972
+ "warning",
1973
+ "destructive",
1974
+ "background",
1975
+ "surface",
1976
+ "surfaceAlt",
1977
+ "muted",
1978
+ "text",
1979
+ "border"
1980
+ ];
1981
+ var paletteTokenNameSchema = z15.enum(PALETTE_TOKEN_NAMES);
1982
+ var HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
1983
+ var hexColorSchema = z15.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
1984
+ var variantPaletteColorSchema = paletteColorSchema.extend({
1985
+ name: paletteTokenNameSchema
1986
+ });
1987
+ var paletteVariantSchema = z15.object({
1988
+ id: paletteVariantIdSchema,
1989
+ name: z15.string().min(1),
1990
+ description: z15.string().min(1),
1991
+ tags: styleTagsSchema,
1992
+ mode: z15.enum(["light", "dark"]),
1993
+ colors: z15.array(variantPaletteColorSchema).min(1)
1994
+ });
1995
+ function definePaletteVariant(input) {
1996
+ return {
1997
+ id: asPaletteVariantId(input.id),
1998
+ name: input.name,
1999
+ description: input.description,
2000
+ tags: input.tags,
2001
+ mode: input.mode,
2002
+ colors: input.colors
2003
+ };
2004
+ }
2005
+ var paletteOverridesSchema = z15.object({
2006
+ primary: hexColorSchema.optional(),
2007
+ primaryForeground: hexColorSchema.optional(),
2008
+ secondary: hexColorSchema.optional(),
2009
+ accent: hexColorSchema.optional(),
2010
+ success: hexColorSchema.optional(),
2011
+ warning: hexColorSchema.optional(),
2012
+ destructive: hexColorSchema.optional(),
2013
+ background: hexColorSchema.optional(),
2014
+ surface: hexColorSchema.optional(),
2015
+ surfaceAlt: hexColorSchema.optional(),
2016
+ muted: hexColorSchema.optional(),
2017
+ text: hexColorSchema.optional(),
2018
+ border: hexColorSchema.optional()
2019
+ }).strict().transform((value) => value);
2020
+
2021
+ // ../theme-core/src/palette/variants/brand-led.ts
2022
+ var brandLedCool = definePaletteVariant({
2023
+ id: "brand-led-cool",
2024
+ name: "Brand-led \u2014 Cool",
2025
+ description: "Confident blue primary with slate neutrals.",
2026
+ tags: { tone: "classic", energy: "calm", era: "modern" },
2027
+ mode: "light",
2028
+ colors: [
2029
+ { name: "primary", hex: "#2563eb" },
2030
+ { name: "secondary", hex: "#64748b" },
2031
+ { name: "accent", hex: "#0f766e" },
2032
+ { name: "success", hex: "#16a34a" },
2033
+ { name: "warning", hex: "#d97706" },
2034
+ { name: "destructive", hex: "#dc2626" },
2035
+ { name: "background", hex: "#ffffff" },
2036
+ { name: "surface", hex: "#ffffff" },
2037
+ { name: "surfaceAlt", hex: "#f8fafc" },
2038
+ { name: "muted", hex: "#f1f5f9" },
2039
+ { name: "text", hex: "#0f172a" },
2040
+ { name: "primaryForeground", hex: "#ffffff" },
2041
+ { name: "border", hex: "#cbd5e1" }
2042
+ ]
2043
+ });
2044
+ var brandLedWarm = definePaletteVariant({
2045
+ id: "brand-led-warm",
2046
+ name: "Brand-led \u2014 Warm",
2047
+ description: "Sunset orange primary with warm grey neutrals.",
2048
+ tags: { tone: "classic", energy: "vibrant", era: "modern" },
2049
+ mode: "light",
2050
+ colors: [
2051
+ { name: "primary", hex: "#ea580c" },
2052
+ { name: "secondary", hex: "#78716c" },
2053
+ { name: "accent", hex: "#a16207" },
2054
+ { name: "success", hex: "#16a34a" },
2055
+ { name: "warning", hex: "#d97706" },
2056
+ { name: "destructive", hex: "#b91c1c" },
2057
+ { name: "background", hex: "#fffaf3" },
2058
+ { name: "surface", hex: "#ffffff" },
2059
+ { name: "surfaceAlt", hex: "#fbeee0" },
2060
+ { name: "muted", hex: "#f4e2cd" },
2061
+ { name: "text", hex: "#1c1917" },
2062
+ { name: "primaryForeground", hex: "#fffaf3" },
2063
+ { name: "border", hex: "#d6c4ad" }
2064
+ ]
2065
+ });
2066
+ var brandLedJewel = definePaletteVariant({
2067
+ id: "brand-led-jewel",
2068
+ name: "Brand-led \u2014 Jewel",
2069
+ description: "Deep emerald primary with rich neutrals.",
2070
+ tags: { tone: "bold", energy: "vibrant", era: "modern" },
2071
+ mode: "light",
2072
+ colors: [
2073
+ { name: "primary", hex: "#047857" },
2074
+ { name: "secondary", hex: "#4b5563" },
2075
+ { name: "accent", hex: "#7c3aed" },
2076
+ { name: "success", hex: "#15803d" },
2077
+ { name: "warning", hex: "#b45309" },
2078
+ { name: "destructive", hex: "#b91c1c" },
2079
+ { name: "background", hex: "#ffffff" },
2080
+ { name: "surface", hex: "#ffffff" },
2081
+ { name: "surfaceAlt", hex: "#f5f5f4" },
2082
+ { name: "muted", hex: "#e7e5e4" },
2083
+ { name: "text", hex: "#0c0a09" },
2084
+ { name: "primaryForeground", hex: "#ffffff" },
2085
+ { name: "border", hex: "#a8a29e" }
2086
+ ]
2087
+ });
2088
+
2089
+ // ../theme-core/src/palette/variants/high-contrast.ts
2090
+ var highContrastInk = definePaletteVariant({
2091
+ id: "high-contrast-ink",
2092
+ name: "High Contrast \u2014 Ink",
2093
+ description: "Near-black primary with cool greys.",
2094
+ tags: { tone: "bold", energy: "calm", era: "editorial" },
2095
+ mode: "light",
2096
+ colors: [
2097
+ { name: "primary", hex: "#111827" },
2098
+ { name: "secondary", hex: "#374151" },
2099
+ { name: "accent", hex: "#1d4ed8" },
2100
+ { name: "success", hex: "#047857" },
2101
+ { name: "warning", hex: "#b45309" },
2102
+ { name: "destructive", hex: "#b91c1c" },
2103
+ { name: "background", hex: "#ffffff" },
2104
+ { name: "surface", hex: "#ffffff" },
2105
+ { name: "surfaceAlt", hex: "#f3f4f6" },
2106
+ { name: "muted", hex: "#e5e7eb" },
2107
+ { name: "text", hex: "#030712" },
2108
+ { name: "primaryForeground", hex: "#ffffff" },
2109
+ { name: "border", hex: "#6b7280" }
2110
+ ]
2111
+ });
2112
+ var highContrastCharcoal = definePaletteVariant({
2113
+ id: "high-contrast-charcoal",
2114
+ name: "High Contrast \u2014 Charcoal",
2115
+ description: "Warm charcoal primary on a soft cream ground.",
2116
+ tags: { tone: "minimal", energy: "calm", era: "editorial" },
2117
+ mode: "light",
2118
+ colors: [
2119
+ { name: "primary", hex: "#1f2937" },
2120
+ { name: "secondary", hex: "#52525b" },
2121
+ { name: "accent", hex: "#a16207" },
2122
+ { name: "success", hex: "#15803d" },
2123
+ { name: "warning", hex: "#b45309" },
2124
+ { name: "destructive", hex: "#991b1b" },
2125
+ { name: "background", hex: "#fafaf9" },
2126
+ { name: "surface", hex: "#ffffff" },
2127
+ { name: "surfaceAlt", hex: "#f5f5f4" },
2128
+ { name: "muted", hex: "#e7e5e4" },
2129
+ { name: "text", hex: "#0c0a09" },
2130
+ { name: "primaryForeground", hex: "#fafaf9" },
2131
+ { name: "border", hex: "#a8a29e" }
2132
+ ]
1352
2133
  });
1353
- var themesTurnSchema = z12.object({
1354
- message: z12.string().min(1),
1355
- themes: z12.array(themeSchema).length(3)
2134
+ var highContrastMonochrome = definePaletteVariant({
2135
+ id: "high-contrast-monochrome",
2136
+ name: "High Contrast \u2014 Monochrome",
2137
+ description: "Pure black-on-white with a single saturated accent.",
2138
+ tags: { tone: "bold", energy: "vibrant", era: "editorial" },
2139
+ mode: "light",
2140
+ colors: [
2141
+ { name: "primary", hex: "#000000" },
2142
+ { name: "secondary", hex: "#404040" },
2143
+ { name: "accent", hex: "#dc2626" },
2144
+ { name: "success", hex: "#000000" },
2145
+ { name: "warning", hex: "#000000" },
2146
+ { name: "destructive", hex: "#dc2626" },
2147
+ { name: "background", hex: "#ffffff" },
2148
+ { name: "surface", hex: "#ffffff" },
2149
+ { name: "surfaceAlt", hex: "#f5f5f5" },
2150
+ { name: "muted", hex: "#e5e5e5" },
2151
+ { name: "text", hex: "#000000" },
2152
+ { name: "primaryForeground", hex: "#ffffff" },
2153
+ { name: "border", hex: "#525252" }
2154
+ ]
1356
2155
  });
1357
2156
 
2157
+ // ../theme-core/src/palette/variants/soft-natural.ts
2158
+ var softNaturalSage = definePaletteVariant({
2159
+ id: "soft-natural-sage",
2160
+ name: "Soft Natural \u2014 Sage",
2161
+ description: "Olive sage primary on an off-white ground.",
2162
+ tags: { tone: "classic", energy: "calm", era: "organic" },
2163
+ mode: "light",
2164
+ colors: [
2165
+ { name: "primary", hex: "#3f6212" },
2166
+ { name: "secondary", hex: "#6b7280" },
2167
+ { name: "accent", hex: "#0f766e" },
2168
+ { name: "success", hex: "#15803d" },
2169
+ { name: "warning", hex: "#a16207" },
2170
+ { name: "destructive", hex: "#b91c1c" },
2171
+ { name: "background", hex: "#fbfdf7" },
2172
+ { name: "surface", hex: "#ffffff" },
2173
+ { name: "surfaceAlt", hex: "#eef5e8" },
2174
+ { name: "muted", hex: "#e7efdf" },
2175
+ { name: "text", hex: "#1f2a1d" },
2176
+ { name: "primaryForeground", hex: "#ffffff" },
2177
+ { name: "border", hex: "#cbd8c0" }
2178
+ ]
2179
+ });
2180
+ var softNaturalStone = definePaletteVariant({
2181
+ id: "soft-natural-stone",
2182
+ name: "Soft Natural \u2014 Stone",
2183
+ description: "River-stone grey-green primary with cool neutrals.",
2184
+ tags: { tone: "minimal", energy: "calm", era: "organic" },
2185
+ mode: "light",
2186
+ colors: [
2187
+ { name: "primary", hex: "#5a7a5d" },
2188
+ { name: "secondary", hex: "#8a9a8c" },
2189
+ { name: "accent", hex: "#c9b88f" },
2190
+ { name: "success", hex: "#5a7a5d" },
2191
+ { name: "warning", hex: "#a89466" },
2192
+ { name: "destructive", hex: "#a3503e" },
2193
+ { name: "background", hex: "#faf6ec" },
2194
+ { name: "surface", hex: "#ffffff" },
2195
+ { name: "surfaceAlt", hex: "#f0ecdf" },
2196
+ { name: "muted", hex: "#e6e1d0" },
2197
+ { name: "text", hex: "#2f3d31" },
2198
+ { name: "primaryForeground", hex: "#faf6ec" },
2199
+ { name: "border", hex: "#c9c1ad" }
2200
+ ]
2201
+ });
2202
+ var softNaturalWatercolor = definePaletteVariant({
2203
+ id: "soft-natural-watercolor",
2204
+ name: "Soft Natural \u2014 Watercolor",
2205
+ description: "Soft sand primary with watercolour sage accents.",
2206
+ tags: { tone: "classic", energy: "vibrant", era: "organic" },
2207
+ mode: "light",
2208
+ colors: [
2209
+ { name: "primary", hex: "#a8825f" },
2210
+ { name: "secondary", hex: "#88a888" },
2211
+ { name: "accent", hex: "#c8a78e" },
2212
+ { name: "success", hex: "#7d8a5f" },
2213
+ { name: "warning", hex: "#c89a4d" },
2214
+ { name: "destructive", hex: "#a3503e" },
2215
+ { name: "background", hex: "#fefdfa" },
2216
+ { name: "surface", hex: "#ffffff" },
2217
+ { name: "surfaceAlt", hex: "#f6f1e6" },
2218
+ { name: "muted", hex: "#eee7d1" },
2219
+ { name: "text", hex: "#4a3d30" },
2220
+ { name: "primaryForeground", hex: "#fefdfa" },
2221
+ { name: "border", hex: "#d8c9a8" }
2222
+ ]
2223
+ });
2224
+
2225
+ // ../theme-core/src/palette/variants/warm-neutral.ts
2226
+ var warmNeutralClay = definePaletteVariant({
2227
+ id: "warm-neutral-clay",
2228
+ name: "Warm Neutral \u2014 Clay",
2229
+ description: "Terracotta primary on a cream ground.",
2230
+ tags: { tone: "classic", energy: "calm", era: "organic" },
2231
+ mode: "light",
2232
+ colors: [
2233
+ { name: "primary", hex: "#8b5e34" },
2234
+ { name: "secondary", hex: "#7c6f64" },
2235
+ { name: "accent", hex: "#a15c38" },
2236
+ { name: "success", hex: "#527853" },
2237
+ { name: "warning", hex: "#b7791f" },
2238
+ { name: "destructive", hex: "#b91c1c" },
2239
+ { name: "background", hex: "#fffaf3" },
2240
+ { name: "surface", hex: "#ffffff" },
2241
+ { name: "surfaceAlt", hex: "#f5eadc" },
2242
+ { name: "muted", hex: "#efe2d0" },
2243
+ { name: "text", hex: "#2f241c" },
2244
+ { name: "primaryForeground", hex: "#fffaf3" },
2245
+ { name: "border", hex: "#d8c6b3" }
2246
+ ]
2247
+ });
2248
+ var warmNeutralCream = definePaletteVariant({
2249
+ id: "warm-neutral-cream",
2250
+ name: "Warm Neutral \u2014 Cream",
2251
+ description: "Soft sand primary with pale cream surfaces.",
2252
+ tags: { tone: "minimal", energy: "calm", era: "organic" },
2253
+ mode: "light",
2254
+ colors: [
2255
+ { name: "primary", hex: "#b08864" },
2256
+ { name: "secondary", hex: "#9a8c7e" },
2257
+ { name: "accent", hex: "#c2956a" },
2258
+ { name: "success", hex: "#7d8a5f" },
2259
+ { name: "warning", hex: "#c89a4d" },
2260
+ { name: "destructive", hex: "#a3503e" },
2261
+ { name: "background", hex: "#fdf8ee" },
2262
+ { name: "surface", hex: "#ffffff" },
2263
+ { name: "surfaceAlt", hex: "#f4ebd9" },
2264
+ { name: "muted", hex: "#ede3cf" },
2265
+ { name: "text", hex: "#3b2f24" },
2266
+ { name: "primaryForeground", hex: "#fdf8ee" },
2267
+ { name: "border", hex: "#e0d2b8" }
2268
+ ]
2269
+ });
2270
+ var warmNeutralForest = definePaletteVariant({
2271
+ id: "warm-neutral-forest",
2272
+ name: "Warm Neutral \u2014 Forest",
2273
+ description: "Deep forest green primary with earthy neutrals.",
2274
+ tags: { tone: "classic", energy: "calm", era: "organic" },
2275
+ mode: "light",
2276
+ colors: [
2277
+ { name: "primary", hex: "#3d5840" },
2278
+ { name: "secondary", hex: "#7a6f5d" },
2279
+ { name: "accent", hex: "#b06b50" },
2280
+ { name: "success", hex: "#5a7a5d" },
2281
+ { name: "warning", hex: "#b7791f" },
2282
+ { name: "destructive", hex: "#b91c1c" },
2283
+ { name: "background", hex: "#fbf8f0" },
2284
+ { name: "surface", hex: "#ffffff" },
2285
+ { name: "surfaceAlt", hex: "#f2ecdb" },
2286
+ { name: "muted", hex: "#ebe3cc" },
2287
+ { name: "text", hex: "#2a2a2a" },
2288
+ { name: "primaryForeground", hex: "#fbf8f0" },
2289
+ { name: "border", hex: "#cdc1a4" }
2290
+ ]
2291
+ });
2292
+
2293
+ // ../theme-core/src/palette/variants/index.ts
2294
+ var paletteVariants = [
2295
+ // Brand-led family
2296
+ brandLedCool,
2297
+ brandLedWarm,
2298
+ brandLedJewel,
2299
+ // Warm-neutral family
2300
+ warmNeutralClay,
2301
+ warmNeutralCream,
2302
+ warmNeutralForest,
2303
+ // High-contrast family
2304
+ highContrastInk,
2305
+ highContrastCharcoal,
2306
+ highContrastMonochrome,
2307
+ // Soft-natural family
2308
+ softNaturalSage,
2309
+ softNaturalStone,
2310
+ softNaturalWatercolor
2311
+ ];
2312
+ var paletteVariantsById = new Map(
2313
+ paletteVariants.map((v) => [v.id, v])
2314
+ );
2315
+
1358
2316
  // ../theme-core/src/tokens/blockColorTokens.ts
1359
2317
  var blockColorTokenNames = [
1360
2318
  "text",