@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
@@ -15,215 +15,812 @@ function brandNonEmptyString(value, label) {
15
15
  return value;
16
16
  }
17
17
 
18
- // ../theme-core/src/schema.ts
19
- import { z as z12 } from "zod";
20
-
21
- // ../theme-core/src/lib/media.ts
22
- import z from "zod";
23
- var hotspotSchema = z.object({
24
- x: z.number().min(0).max(1),
25
- y: z.number().min(0).max(1),
26
- radius: z.number().optional()
27
- });
28
- var rotationSchema = z.union([z.literal(0), z.literal(90), z.literal(180), z.literal(270)]);
29
- var rectSchema = z.tuple([z.number(), z.number(), z.number(), z.number()]);
30
- var aspectCropSchema = z.object({
31
- aspect: z.preprocess((value) => value == null ? void 0 : value, z.string().optional()),
32
- rect: z.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
33
- hotspot: z.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
34
- rotation: z.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
35
- });
36
- var transformSchema = z.object({
37
- aspectCrops: z.preprocess((value) => {
38
- if (!value || typeof value !== "object" || Array.isArray(value)) {
39
- return void 0;
40
- }
41
- return value;
42
- }, z.record(z.string(), aspectCropSchema.catch({}))).optional(),
43
- rect: rectSchema.optional(),
44
- hotspot: hotspotSchema.optional(),
45
- rotation: rotationSchema.optional()
46
- });
47
- var mediaSchema = z.object({
48
- type: z.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
49
- purpose: z.string().optional(),
50
- placeholder: z.boolean().default(true).optional(),
51
- assetId: z.string().optional(),
52
- identifier: z.string().optional(),
53
- src: z.string().optional(),
54
- alt: z.string().optional(),
55
- filename: z.string().optional(),
56
- mimeType: z.string().optional(),
57
- width: z.number().optional(),
58
- height: z.number().optional(),
59
- storageBucket: z.string().optional(),
60
- storagePath: z.string().optional(),
61
- transform: transformSchema.optional()
62
- });
18
+ // ../theme-core/src/buttons/personalities/types.ts
19
+ import { z as z3 } from "zod";
63
20
 
64
21
  // ../theme-core/src/buttons/types.ts
65
- import { z as z2 } from "zod";
66
- var cornerStyleSchema = z2.enum(["square", "rounded", "pill"]);
67
- var shadowSizeSchema = z2.enum(["none", "low", "medium", "high"]);
68
- var textTransformSchema = z2.enum(["none", "uppercase", "lowercase", "capitalize"]);
69
- var fontWeightSchema = z2.union([z2.literal(500), z2.literal(600), z2.literal(700)]);
70
- var buttonTypographySchema = z2.enum(["body", "heading"]);
71
- var hoverTransformSchema = z2.enum(["none", "lift", "scale", "press"]);
72
- var hoverColorSchema = z2.enum(["none", "brighten", "darken", "saturate", "token"]);
73
- var buttonPaddingPresetSchema = z2.enum(["compact", "default", "spacious"]);
74
- var gradientStyleSchema = z2.enum(["linear", "radial", "conic"]);
75
- var gradientSharpnessSchema = z2.enum(["smooth", "medium", "hard"]);
76
- var buttonSizeNameSchema = z2.enum(["sm", "md", "lg", "xl"]);
77
- var buttonSizeConfigSchema = z2.object({
78
- padding: z2.string(),
79
- fontSize: z2.string().optional()
80
- });
81
- var buttonSizesSchema = z2.object({
22
+ import { z } from "zod";
23
+ var VARIANT_ROLES = [
24
+ "primary",
25
+ "secondary",
26
+ "outline",
27
+ "ghost",
28
+ "link",
29
+ "tertiary",
30
+ "accent"
31
+ ];
32
+ var cornerStyleSchema = z.enum(["square", "rounded", "pill"]);
33
+ var shadowSizeSchema = z.enum(["none", "low", "medium", "high"]);
34
+ var textTransformSchema = z.enum(["none", "uppercase", "lowercase", "capitalize"]);
35
+ var fontWeightSchema = z.union([z.literal(500), z.literal(600), z.literal(700)]);
36
+ var buttonTypographySchema = z.enum(["body", "heading"]);
37
+ var letterSpacingSchema = z.enum(["tight", "normal", "loose"]);
38
+ var hoverTransformSchema = z.enum(["none", "lift", "scale", "press"]);
39
+ var hoverColorSchema = z.enum(["none", "brighten", "darken", "saturate", "token"]);
40
+ var buttonPaddingPresetSchema = z.enum(["compact", "default", "spacious"]);
41
+ var gradientStyleSchema = z.enum(["linear", "radial", "conic"]);
42
+ var gradientSharpnessSchema = z.enum(["smooth", "medium", "hard"]);
43
+ var prioritySchema = z.union([z.literal(1), z.literal(2), z.literal(3)]);
44
+ var variantRoleSchema = z.enum(VARIANT_ROLES);
45
+ var buttonSizeNameSchema = z.enum(["sm", "md", "lg", "xl"]);
46
+ var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
47
+ var paddingShorthandSchema = z.string().refine(
48
+ (value) => {
49
+ const parts = value.split(/\s+/).filter(Boolean);
50
+ return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
51
+ },
52
+ {
53
+ message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
54
+ }
55
+ );
56
+ var buttonSizeConfigSchema = z.object({
57
+ padding: paddingShorthandSchema,
58
+ fontSize: z.string().optional()
59
+ });
60
+ var buttonSizesSchema = z.object({
82
61
  sm: buttonSizeConfigSchema,
83
62
  md: buttonSizeConfigSchema,
84
63
  lg: buttonSizeConfigSchema,
85
64
  xl: buttonSizeConfigSchema.optional()
86
- });
87
- var backgroundTreatmentSchema = z2.enum(["solid", "gradient", "outline", "ghost"]);
88
- var outlineHoverEffectSchema = z2.enum([
89
- "border-glow",
90
- "border-shift",
91
- "border-grow",
92
- "fill-transition",
93
- "border-trace"
94
- ]);
95
- var buttonGlobalSettingsSchema = z2.object({
65
+ }).transform(({ sm, md, lg, xl }) => ({
66
+ sm,
67
+ md,
68
+ lg,
69
+ xl: xl ?? lg
70
+ }));
71
+ var buttonGlobalSettingsSchema = z.object({
96
72
  cornerStyle: cornerStyleSchema,
97
- cornerRadius: z2.number().min(0).max(24).optional(),
73
+ cornerRadius: z.number().min(0).max(24).optional(),
98
74
  shadow: shadowSizeSchema,
99
75
  textTransform: textTransformSchema,
100
76
  fontWeight: fontWeightSchema,
101
- borderWidth: z2.union([z2.literal(1), z2.literal(2), z2.literal(3)]),
102
- // Typography source (body or heading)
77
+ /**
78
+ * @deprecated Set per-variant via `variant.border.widthClass` instead.
79
+ * Schema field is preserved so existing presets parse; the value is unread
80
+ * by the current generator and will be removed once the legacy
81
+ * `primitives/content/components/Button.tsx` slot exports are deleted.
82
+ */
83
+ borderWidth: z.union([z.literal(1), z.literal(2), z.literal(3)]),
84
+ // === Family-level typography ===
85
+ // Typography source (body or heading) — selects which theme typography pool to inherit
103
86
  typography: buttonTypographySchema.optional(),
87
+ // Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
88
+ // Sized variants get this as default; fixed variants inherit unless they override.
89
+ // Size class CSS may still override at run time for sized variants.
90
+ fontSize: z.string().optional(),
91
+ // Letter spacing applied to all variants
92
+ letterSpacing: letterSpacingSchema.optional(),
104
93
  // Italic style
105
- italic: z2.boolean().optional(),
106
- // Padding preset (applies to all variants unless overridden)
94
+ italic: z.boolean().optional(),
95
+ // Padding preset (applies to sized variants without a sizes config)
107
96
  paddingPreset: buttonPaddingPresetSchema.optional(),
108
97
  hoverTransform: hoverTransformSchema,
109
98
  hoverColor: hoverColorSchema,
110
99
  // When hoverColor is 'token', this specifies which token to use
111
- hoverColorToken: z2.string().optional(),
100
+ hoverColorToken: z.string().optional(),
112
101
  // Gradient settings (if any variant uses gradients)
113
102
  gradientStyle: gradientStyleSchema.optional(),
114
- gradientAngle: z2.number().min(0).max(360).optional(),
103
+ gradientAngle: z.number().min(0).max(360).optional(),
115
104
  gradientSharpness: gradientSharpnessSchema.optional()
116
105
  });
117
- var gradientDirectionSchema = z2.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
118
- var buttonBackgroundSchema = z2.discriminatedUnion("type", [
119
- z2.object({ type: z2.literal("solid"), colorToken: z2.string() }),
120
- z2.object({
121
- type: z2.literal("gradient"),
122
- stops: z2.array(z2.string()).min(2),
106
+ var gradientDirectionSchema = z.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
107
+ var buttonBackgroundSchema = z.discriminatedUnion("type", [
108
+ z.object({ type: z.literal("solid"), colorToken: z.string() }),
109
+ z.object({
110
+ type: z.literal("gradient"),
111
+ stops: z.array(z.string()).min(2),
123
112
  direction: gradientDirectionSchema
124
113
  }),
125
- z2.object({ type: z2.literal("transparent") })
114
+ z.object({ type: z.literal("transparent") })
126
115
  ]);
127
- var effectApplicationSchema = z2.object({
128
- effectId: z2.string(),
129
- options: z2.record(z2.string(), z2.any()).optional()
130
- });
131
- var buttonBorderSchema = z2.object({
132
- widthClass: z2.string(),
133
- colorToken: z2.string()
134
- });
135
- var buttonVariantLegacySchema = z2.object({
136
- id: z2.string(),
137
- name: z2.string().min(1).max(20),
138
- enabled: z2.boolean(),
139
- priority: z2.union([z2.literal(1), z2.literal(2), z2.literal(3)]),
140
- backgroundTreatment: backgroundTreatmentSchema,
141
- color: z2.string().optional(),
142
- gradientColors: z2.tuple([z2.string(), z2.string()]).optional(),
143
- borderColor: z2.string().optional(),
144
- outlineHoverEffect: outlineHoverEffectSchema.optional(),
145
- effectPreset: z2.string().optional()
146
- });
147
- var buttonVariantSchema = z2.object({
148
- id: z2.string(),
149
- name: z2.string().min(1).max(20),
150
- enabled: z2.boolean(),
151
- priority: z2.union([z2.literal(1), z2.literal(2), z2.literal(3)]),
116
+ var effectApplicationSchema = z.object({
117
+ effectId: z.string(),
118
+ options: z.record(z.string(), z.any()).optional()
119
+ });
120
+ var buttonBorderSchema = z.object({
121
+ widthClass: z.string(),
122
+ colorToken: z.string()
123
+ });
124
+ var variantShadowSchema = z.object({
125
+ elevation: z.enum(["none", "low", "medium", "high"]),
126
+ softness: z.enum(["crisp", "soft", "hard"]).nullable(),
127
+ position: z.enum(["bottom", "bottom-right"]).default("bottom")
128
+ });
129
+ var variantEffectsSchema = z.object({
130
+ base: z.array(effectApplicationSchema).optional(),
131
+ hover: z.array(effectApplicationSchema).optional(),
132
+ active: z.array(effectApplicationSchema).optional(),
133
+ focus: z.array(effectApplicationSchema).optional()
134
+ });
135
+ var variantSizeOverridesSchema = z.object({
136
+ sm: buttonSizeConfigSchema.optional(),
137
+ md: buttonSizeConfigSchema.optional(),
138
+ lg: buttonSizeConfigSchema.optional(),
139
+ xl: buttonSizeConfigSchema.optional()
140
+ });
141
+ var buttonVariantSchema = z.object({
142
+ id: z.string(),
143
+ name: z.string().min(1).max(20),
144
+ enabled: z.boolean(),
145
+ priority: prioritySchema,
152
146
  // Base appearance (token-based)
153
147
  background: buttonBackgroundSchema,
154
- textColorToken: z2.string(),
155
- borderRadius: z2.string(),
148
+ textColorToken: z.string(),
149
+ /** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
150
+ borderRadius: z.string().optional(),
156
151
  // Optional shadow override (uses theme.shadow if not specified)
157
- shadow: z2.object({
158
- elevation: z2.enum(["none", "low", "medium", "high"]),
159
- softness: z2.enum(["crisp", "soft", "hard"]).nullable(),
160
- position: z2.enum(["bottom", "bottom-right"]).default("bottom")
161
- }).optional(),
152
+ shadow: variantShadowSchema.optional(),
162
153
  // Border (optional)
163
154
  border: buttonBorderSchema.optional(),
164
- // Padding (optional, defaults to "0.5rem 1rem")
165
- padding: z2.string().optional(),
166
- // Font size (optional, Tailwind text size class)
167
- fontSize: z2.string().optional(),
168
155
  // Hover background token (per-variant override, takes precedence over global hoverColorToken)
169
- hoverBackgroundToken: z2.string().optional(),
156
+ hoverBackgroundToken: z.string().optional(),
170
157
  // Effect composition
171
- effects: z2.object({
172
- base: z2.array(effectApplicationSchema).optional(),
173
- hover: z2.array(effectApplicationSchema).optional(),
174
- active: z2.array(effectApplicationSchema).optional(),
175
- focus: z2.array(effectApplicationSchema).optional()
176
- }).optional()
158
+ effects: variantEffectsSchema.optional(),
159
+ // Per-variant size overrides — see VariantSizeOverrides
160
+ sizes: variantSizeOverridesSchema.optional()
177
161
  });
178
- var buttonSystemSchema = z2.object({
162
+ var buttonSystemSchema = z.object({
179
163
  global: buttonGlobalSettingsSchema,
180
- variants: z2.array(buttonVariantSchema).min(1).max(6),
164
+ variants: z.array(buttonVariantSchema).min(1).max(6),
181
165
  sizes: buttonSizesSchema.optional()
182
166
  });
183
167
 
168
+ // ../theme-core/src/site-styles/styleTags.ts
169
+ import { z as z2 } from "zod";
170
+ var STYLE_AXIS_VALUES = {
171
+ tone: ["minimal", "classic", "bold"],
172
+ energy: ["calm", "vibrant"],
173
+ motion: ["subtle", "standard", "expressive"],
174
+ era: ["editorial", "modern", "organic", "technical", "retro"]
175
+ };
176
+ var styleTagsSchema = z2.object({
177
+ tone: z2.enum(STYLE_AXIS_VALUES.tone).optional(),
178
+ energy: z2.enum(STYLE_AXIS_VALUES.energy).optional(),
179
+ motion: z2.enum(STYLE_AXIS_VALUES.motion).optional(),
180
+ era: z2.enum(STYLE_AXIS_VALUES.era).optional()
181
+ });
182
+
183
+ // ../theme-core/src/buttons/personalities/types.ts
184
+ function asButtonPersonalityId(value) {
185
+ if (value.length === 0) {
186
+ throw new Error("ButtonPersonalityId must be a non-empty string");
187
+ }
188
+ return value;
189
+ }
190
+ var buttonPersonalityIdSchema = z3.string().min(1).transform((value) => asButtonPersonalityId(value));
191
+ var buttonPersonalitySchema = z3.object({
192
+ id: buttonPersonalityIdSchema,
193
+ name: z3.string().min(1),
194
+ description: z3.string().min(1),
195
+ tags: styleTagsSchema,
196
+ buttonSystem: buttonSystemSchema
197
+ });
198
+ function defineButtonPersonality(input) {
199
+ return {
200
+ id: asButtonPersonalityId(input.id),
201
+ name: input.name,
202
+ description: input.description,
203
+ tags: input.tags,
204
+ buttonSystem: input.buttonSystem
205
+ };
206
+ }
207
+
208
+ // ../theme-core/src/buttons/personalities/brushed-wash.ts
209
+ var brushedWash = defineButtonPersonality({
210
+ id: "brushed-wash",
211
+ name: "Brushed Wash",
212
+ description: "Watercolour-gradient buttons with soft shadows and generous padding.",
213
+ tags: { tone: "classic", energy: "vibrant", motion: "standard", era: "organic" },
214
+ buttonSystem: {
215
+ global: {
216
+ cornerStyle: "rounded",
217
+ shadow: "low",
218
+ textTransform: "none",
219
+ fontWeight: 500,
220
+ borderWidth: 1,
221
+ hoverTransform: "none",
222
+ hoverColor: "none"
223
+ },
224
+ sizes: {
225
+ sm: { padding: "0.75rem 2rem", fontSize: "text-sm" },
226
+ md: { padding: "1rem 2.5rem" },
227
+ lg: { padding: "1.25rem 3rem", fontSize: "text-lg" },
228
+ xl: { padding: "1.625rem 3.75rem", fontSize: "text-xl" }
229
+ },
230
+ variants: [
231
+ {
232
+ id: "primary",
233
+ name: "Primary",
234
+ enabled: true,
235
+ priority: 1,
236
+ background: {
237
+ type: "gradient",
238
+ stops: ["primary", "accent"],
239
+ direction: "to-r"
240
+ },
241
+ textColorToken: "primaryForeground",
242
+ borderRadius: "rounded-lg",
243
+ shadow: { elevation: "low", softness: "soft", position: "bottom" },
244
+ effects: {
245
+ hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
246
+ }
247
+ },
248
+ {
249
+ id: "secondary",
250
+ name: "Secondary",
251
+ enabled: true,
252
+ priority: 2,
253
+ background: {
254
+ type: "gradient",
255
+ stops: ["secondary", "accent"],
256
+ direction: "to-br"
257
+ },
258
+ textColorToken: "primaryForeground",
259
+ borderRadius: "rounded-lg",
260
+ shadow: { elevation: "low", softness: "soft", position: "bottom" },
261
+ effects: {
262
+ hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
263
+ }
264
+ },
265
+ {
266
+ id: "outline",
267
+ name: "Outline",
268
+ enabled: true,
269
+ priority: 3,
270
+ background: { type: "transparent" },
271
+ textColorToken: "primary",
272
+ borderRadius: "rounded-lg",
273
+ border: { widthClass: "border", colorToken: "primary" },
274
+ effects: {
275
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
276
+ }
277
+ },
278
+ {
279
+ id: "ghost",
280
+ name: "Ghost",
281
+ enabled: true,
282
+ priority: 3,
283
+ background: { type: "transparent" },
284
+ textColorToken: "text",
285
+ borderRadius: "rounded-lg",
286
+ effects: {
287
+ hover: [
288
+ { effectId: "background-on-hover", options: { colorToken: "surface" } }
289
+ ]
290
+ }
291
+ }
292
+ ]
293
+ }
294
+ });
295
+
296
+ // ../theme-core/src/buttons/personalities/confident-chip.ts
297
+ var confidentChip = defineButtonPersonality({
298
+ id: "confident-chip",
299
+ name: "Confident Chip",
300
+ description: "Mid-radius solid buttons with a crisp hover.",
301
+ tags: { tone: "classic", energy: "calm", motion: "standard", era: "modern" },
302
+ buttonSystem: {
303
+ global: {
304
+ cornerStyle: "rounded",
305
+ shadow: "medium",
306
+ textTransform: "none",
307
+ fontWeight: 600,
308
+ borderWidth: 1,
309
+ hoverTransform: "none",
310
+ hoverColor: "none"
311
+ },
312
+ variants: [
313
+ {
314
+ id: "primary",
315
+ name: "Primary",
316
+ enabled: true,
317
+ priority: 1,
318
+ background: { type: "solid", colorToken: "primary" },
319
+ textColorToken: "primaryForeground",
320
+ borderRadius: "rounded-md",
321
+ shadow: { elevation: "medium", softness: "soft", position: "bottom" },
322
+ effects: {
323
+ hover: [{ effectId: "darken-background", options: { amount: 60 } }],
324
+ active: [{ effectId: "scale-down", options: { scale: "0.97" } }]
325
+ }
326
+ },
327
+ {
328
+ id: "secondary",
329
+ name: "Secondary",
330
+ enabled: true,
331
+ priority: 2,
332
+ background: { type: "solid", colorToken: "surface" },
333
+ textColorToken: "text",
334
+ borderRadius: "rounded-md",
335
+ border: { widthClass: "border", colorToken: "border" },
336
+ effects: {
337
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
338
+ }
339
+ },
340
+ {
341
+ id: "outline",
342
+ name: "Outline",
343
+ enabled: true,
344
+ priority: 3,
345
+ background: { type: "transparent" },
346
+ textColorToken: "primary",
347
+ borderRadius: "rounded-md",
348
+ border: { widthClass: "border", colorToken: "primary" },
349
+ effects: {
350
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
351
+ }
352
+ },
353
+ {
354
+ id: "ghost",
355
+ name: "Ghost",
356
+ enabled: true,
357
+ priority: 3,
358
+ background: { type: "transparent" },
359
+ textColorToken: "primary",
360
+ borderRadius: "rounded-md",
361
+ effects: {
362
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
363
+ }
364
+ }
365
+ ]
366
+ }
367
+ });
368
+
369
+ // ../theme-core/src/buttons/personalities/editorial-link.ts
370
+ var editorialLink = defineButtonPersonality({
371
+ id: "editorial-link",
372
+ name: "Editorial Link",
373
+ description: "Link-style with a growing underline. Refined, typographic.",
374
+ tags: { tone: "minimal", energy: "calm", motion: "subtle", era: "editorial" },
375
+ buttonSystem: {
376
+ global: {
377
+ cornerStyle: "square",
378
+ shadow: "none",
379
+ textTransform: "none",
380
+ fontWeight: 500,
381
+ borderWidth: 1,
382
+ hoverTransform: "none",
383
+ hoverColor: "none"
384
+ },
385
+ variants: [
386
+ {
387
+ id: "primary",
388
+ name: "Primary",
389
+ enabled: true,
390
+ priority: 1,
391
+ background: { type: "transparent" },
392
+ textColorToken: "text",
393
+ borderRadius: "rounded-none",
394
+ shadow: { elevation: "none", softness: null, position: "bottom" },
395
+ sizes: {
396
+ sm: { padding: "0.25rem 0" },
397
+ md: { padding: "0.5rem 0" },
398
+ lg: { padding: "0.625rem 0" },
399
+ xl: { padding: "0.75rem 0" }
400
+ },
401
+ effects: {
402
+ base: [
403
+ { effectId: "border-bottom-grow", options: { height: 2, colorToken: "text", origin: "left" } }
404
+ ]
405
+ }
406
+ },
407
+ {
408
+ id: "secondary",
409
+ name: "Secondary",
410
+ enabled: true,
411
+ priority: 2,
412
+ background: { type: "transparent" },
413
+ textColorToken: "mutedText",
414
+ borderRadius: "rounded-none",
415
+ shadow: { elevation: "none", softness: null, position: "bottom" },
416
+ sizes: {
417
+ sm: { padding: "0.25rem 0" },
418
+ md: { padding: "0.5rem 0" },
419
+ lg: { padding: "0.625rem 0" },
420
+ xl: { padding: "0.75rem 0" }
421
+ },
422
+ effects: {
423
+ base: [
424
+ { effectId: "border-bottom-grow", options: { height: 1, colorToken: "mutedText", origin: "left" } }
425
+ ]
426
+ }
427
+ },
428
+ {
429
+ id: "outline",
430
+ name: "Outline",
431
+ enabled: true,
432
+ priority: 3,
433
+ background: { type: "transparent" },
434
+ textColorToken: "accent",
435
+ borderRadius: "rounded-none",
436
+ shadow: { elevation: "none", softness: null, position: "bottom" },
437
+ sizes: {
438
+ sm: { padding: "0.25rem 0" },
439
+ md: { padding: "0.5rem 0" },
440
+ lg: { padding: "0.625rem 0" },
441
+ xl: { padding: "0.75rem 0" }
442
+ },
443
+ effects: {
444
+ base: [
445
+ { effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }
446
+ ]
447
+ }
448
+ },
449
+ {
450
+ id: "ghost",
451
+ name: "Ghost",
452
+ enabled: true,
453
+ priority: 3,
454
+ background: { type: "transparent" },
455
+ textColorToken: "mutedText",
456
+ borderRadius: "rounded-none",
457
+ shadow: { elevation: "none", softness: null, position: "bottom" },
458
+ sizes: {
459
+ sm: { padding: "0.25rem 0" },
460
+ md: { padding: "0.5rem 0" },
461
+ lg: { padding: "0.625rem 0" },
462
+ xl: { padding: "0.75rem 0" }
463
+ },
464
+ effects: {
465
+ hover: [{ effectId: "opacity-reduce", options: { reduction: -20 } }]
466
+ }
467
+ }
468
+ ]
469
+ }
470
+ });
471
+
472
+ // ../theme-core/src/buttons/personalities/ink-stamp.ts
473
+ var inkStamp = defineButtonPersonality({
474
+ id: "ink-stamp",
475
+ name: "Ink Stamp",
476
+ description: "Hand-stamped block-print buttons with a slight lift on hover.",
477
+ tags: { tone: "bold", energy: "vibrant", motion: "standard", era: "organic" },
478
+ buttonSystem: {
479
+ global: {
480
+ cornerStyle: "rounded",
481
+ shadow: "none",
482
+ textTransform: "uppercase",
483
+ fontWeight: 600,
484
+ borderWidth: 1,
485
+ hoverTransform: "none",
486
+ hoverColor: "none",
487
+ letterSpacing: "loose"
488
+ },
489
+ sizes: {
490
+ sm: { padding: "0.5rem 1.25rem", fontSize: "text-xs" },
491
+ md: { padding: "0.75rem 1.75rem", fontSize: "text-sm" },
492
+ lg: { padding: "0.875rem 2.25rem", fontSize: "text-base" },
493
+ xl: { padding: "1.125rem 2.75rem", fontSize: "text-lg" }
494
+ },
495
+ variants: [
496
+ {
497
+ id: "primary",
498
+ name: "Primary",
499
+ enabled: true,
500
+ priority: 1,
501
+ background: { type: "solid", colorToken: "primary" },
502
+ textColorToken: "primaryForeground",
503
+ borderRadius: "rounded-md",
504
+ effects: {
505
+ hover: [
506
+ { effectId: "drop-shadow", options: { intensity: "medium" } },
507
+ { effectId: "scale-up", options: { scale: "1.02" } }
508
+ ],
509
+ active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
510
+ }
511
+ },
512
+ {
513
+ id: "secondary",
514
+ name: "Secondary",
515
+ enabled: true,
516
+ priority: 2,
517
+ background: { type: "transparent" },
518
+ textColorToken: "primary",
519
+ borderRadius: "rounded-md",
520
+ border: { widthClass: "border-2", colorToken: "primary" },
521
+ effects: {
522
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
523
+ }
524
+ },
525
+ {
526
+ id: "outline",
527
+ name: "Outline",
528
+ enabled: true,
529
+ priority: 3,
530
+ background: { type: "transparent" },
531
+ textColorToken: "text",
532
+ borderRadius: "rounded-md",
533
+ border: { widthClass: "border-2", colorToken: "border" },
534
+ effects: {
535
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
536
+ }
537
+ },
538
+ {
539
+ id: "ghost",
540
+ name: "Ghost",
541
+ enabled: true,
542
+ priority: 3,
543
+ background: { type: "transparent" },
544
+ textColorToken: "accent",
545
+ borderRadius: "rounded-none",
546
+ sizes: {
547
+ sm: { padding: "0.375rem 0", fontSize: "text-xs" },
548
+ md: { padding: "0.5rem 0", fontSize: "text-sm" },
549
+ lg: { padding: "0.625rem 0", fontSize: "text-base" },
550
+ xl: { padding: "0.75rem 0", fontSize: "text-lg" }
551
+ },
552
+ effects: {
553
+ base: [{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }]
554
+ }
555
+ }
556
+ ]
557
+ }
558
+ });
559
+
560
+ // ../theme-core/src/buttons/personalities/pebble.ts
561
+ var pebble = defineButtonPersonality({
562
+ id: "pebble",
563
+ name: "Pebble",
564
+ description: "Generous pill buttons with a soft hover lift.",
565
+ tags: { tone: "classic", energy: "calm", motion: "standard", era: "organic" },
566
+ buttonSystem: {
567
+ global: {
568
+ cornerStyle: "pill",
569
+ shadow: "none",
570
+ textTransform: "none",
571
+ fontWeight: 500,
572
+ borderWidth: 2,
573
+ hoverTransform: "none",
574
+ hoverColor: "none"
575
+ },
576
+ sizes: {
577
+ sm: { padding: "0.625rem 1.75rem", fontSize: "text-sm" },
578
+ md: { padding: "0.875rem 2.25rem" },
579
+ lg: { padding: "1.125rem 2.75rem", fontSize: "text-lg" },
580
+ xl: { padding: "1.5rem 3.5rem", fontSize: "text-xl" }
581
+ },
582
+ variants: [
583
+ {
584
+ id: "primary",
585
+ name: "Primary",
586
+ enabled: true,
587
+ priority: 1,
588
+ background: { type: "solid", colorToken: "primary" },
589
+ textColorToken: "primaryForeground",
590
+ borderRadius: "rounded-full",
591
+ effects: {
592
+ hover: [
593
+ { effectId: "scale-up", options: { scale: "1.03" } },
594
+ { effectId: "drop-shadow", options: { intensity: "medium" } }
595
+ ]
596
+ }
597
+ },
598
+ {
599
+ id: "secondary",
600
+ name: "Secondary",
601
+ enabled: true,
602
+ priority: 2,
603
+ background: { type: "transparent" },
604
+ textColorToken: "primary",
605
+ borderRadius: "rounded-full",
606
+ border: { widthClass: "border-2", colorToken: "accent" },
607
+ effects: {
608
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "accent" } }]
609
+ }
610
+ },
611
+ {
612
+ id: "outline",
613
+ name: "Outline",
614
+ enabled: true,
615
+ priority: 3,
616
+ background: { type: "transparent" },
617
+ textColorToken: "text",
618
+ borderRadius: "rounded-full",
619
+ border: { widthClass: "border", colorToken: "border" },
620
+ effects: {
621
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
622
+ }
623
+ },
624
+ {
625
+ id: "ghost",
626
+ name: "Ghost",
627
+ enabled: true,
628
+ priority: 3,
629
+ background: { type: "transparent" },
630
+ textColorToken: "primary",
631
+ borderRadius: "rounded-full",
632
+ sizes: {
633
+ sm: { padding: "0.375rem 0.875rem", fontSize: "text-sm" },
634
+ md: { padding: "0.5rem 1rem" },
635
+ lg: { padding: "0.625rem 1.25rem", fontSize: "text-lg" },
636
+ xl: { padding: "0.75rem 1.5rem", fontSize: "text-xl" }
637
+ },
638
+ effects: {
639
+ hover: [{ effectId: "opacity-reduce", options: { reduction: 30 } }]
640
+ }
641
+ }
642
+ ]
643
+ }
644
+ });
645
+
646
+ // ../theme-core/src/buttons/personalities/soft-pill.ts
647
+ var softPill = defineButtonPersonality({
648
+ id: "soft-pill",
649
+ name: "Soft Pill",
650
+ description: "Rounded pills with a gentle lift on hover. Quietly modern.",
651
+ tags: { tone: "classic", energy: "calm", motion: "subtle", era: "organic" },
652
+ buttonSystem: {
653
+ global: {
654
+ cornerStyle: "pill",
655
+ shadow: "low",
656
+ textTransform: "none",
657
+ fontWeight: 500,
658
+ borderWidth: 2,
659
+ hoverTransform: "lift",
660
+ hoverColor: "none"
661
+ },
662
+ variants: [
663
+ {
664
+ id: "primary",
665
+ name: "Primary",
666
+ enabled: true,
667
+ priority: 1,
668
+ background: { type: "solid", colorToken: "primary" },
669
+ textColorToken: "primaryForeground",
670
+ borderRadius: "rounded-full",
671
+ shadow: { elevation: "low", softness: "soft", position: "bottom" },
672
+ effects: {
673
+ hover: [{ effectId: "lift", options: { translateY: "-1px" } }],
674
+ active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
675
+ }
676
+ },
677
+ {
678
+ id: "secondary",
679
+ name: "Secondary",
680
+ enabled: true,
681
+ priority: 2,
682
+ background: { type: "transparent" },
683
+ textColorToken: "primary",
684
+ borderRadius: "rounded-full",
685
+ border: { widthClass: "border-2", colorToken: "primary" },
686
+ effects: {
687
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
688
+ }
689
+ },
690
+ {
691
+ id: "outline",
692
+ name: "Outline",
693
+ enabled: true,
694
+ priority: 3,
695
+ background: { type: "transparent" },
696
+ textColorToken: "text",
697
+ borderRadius: "rounded-full",
698
+ border: { widthClass: "border", colorToken: "border" },
699
+ effects: {
700
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
701
+ }
702
+ },
703
+ {
704
+ id: "ghost",
705
+ name: "Ghost",
706
+ enabled: true,
707
+ priority: 3,
708
+ background: { type: "transparent" },
709
+ textColorToken: "text",
710
+ borderRadius: "rounded-full",
711
+ effects: {
712
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
713
+ }
714
+ }
715
+ ]
716
+ }
717
+ });
718
+
719
+ // ../theme-core/src/buttons/personalities/index.ts
720
+ var buttonPersonalities = [
721
+ softPill,
722
+ confidentChip,
723
+ editorialLink,
724
+ pebble,
725
+ inkStamp,
726
+ brushedWash
727
+ ];
728
+ var personalitiesById = new Map(
729
+ buttonPersonalities.map((p) => [p.id, p])
730
+ );
731
+
732
+ // ../theme-core/src/schema.ts
733
+ import { z as z14 } from "zod";
734
+
735
+ // ../theme-core/src/lib/media.ts
736
+ import z4 from "zod";
737
+ var hotspotSchema = z4.object({
738
+ x: z4.number().min(0).max(1),
739
+ y: z4.number().min(0).max(1),
740
+ radius: z4.number().optional()
741
+ });
742
+ var rotationSchema = z4.union([z4.literal(0), z4.literal(90), z4.literal(180), z4.literal(270)]);
743
+ var rectSchema = z4.tuple([z4.number(), z4.number(), z4.number(), z4.number()]);
744
+ var aspectCropSchema = z4.object({
745
+ aspect: z4.preprocess((value) => value == null ? void 0 : value, z4.string().optional()),
746
+ rect: z4.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
747
+ hotspot: z4.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
748
+ rotation: z4.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
749
+ });
750
+ var transformSchema = z4.object({
751
+ aspectCrops: z4.preprocess((value) => {
752
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
753
+ return void 0;
754
+ }
755
+ return value;
756
+ }, z4.record(z4.string(), aspectCropSchema.catch({}))).optional(),
757
+ rect: rectSchema.optional(),
758
+ hotspot: hotspotSchema.optional(),
759
+ rotation: rotationSchema.optional()
760
+ });
761
+ var mediaSchema = z4.object({
762
+ type: z4.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
763
+ purpose: z4.string().optional(),
764
+ placeholder: z4.boolean().default(true).optional(),
765
+ assetId: z4.string().optional(),
766
+ identifier: z4.string().optional(),
767
+ src: z4.string().optional(),
768
+ alt: z4.string().optional(),
769
+ filename: z4.string().optional(),
770
+ mimeType: z4.string().optional(),
771
+ width: z4.number().optional(),
772
+ height: z4.number().optional(),
773
+ storageBucket: z4.string().optional(),
774
+ storagePath: z4.string().optional(),
775
+ transform: transformSchema.optional()
776
+ });
777
+
778
+ // ../theme-core/src/buttons/generateButtonCss.ts
779
+ var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
780
+
184
781
  // ../theme-core/src/cards/types.ts
185
- import { z as z3 } from "zod";
186
- var cardSpacingSchema = z3.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
187
- var gradientDirectionSchema2 = z3.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
188
- var cardBackgroundSchema = z3.discriminatedUnion("type", [
189
- z3.object({ type: z3.literal("solid"), colorToken: z3.string() }),
190
- z3.object({
191
- type: z3.literal("gradient"),
192
- fromToken: z3.string(),
193
- toToken: z3.string(),
782
+ import { z as z5 } from "zod";
783
+ var cardSpacingSchema = z5.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
784
+ var gradientDirectionSchema2 = z5.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
785
+ var cardBackgroundSchema = z5.discriminatedUnion("type", [
786
+ z5.object({ type: z5.literal("solid"), colorToken: z5.string() }),
787
+ z5.object({
788
+ type: z5.literal("gradient"),
789
+ fromToken: z5.string(),
790
+ toToken: z5.string(),
194
791
  direction: gradientDirectionSchema2
195
792
  }),
196
- z3.object({ type: z3.literal("transparent") })
793
+ z5.object({ type: z5.literal("transparent") })
197
794
  ]);
198
- var cardBorderSchema = z3.object({
199
- widthClass: z3.string(),
200
- colorToken: z3.string()
201
- });
202
- var cardVariantSchema = z3.object({
203
- id: z3.string(),
204
- name: z3.string().min(1).max(20),
205
- enabled: z3.boolean(),
206
- priority: z3.union([z3.literal(1), z3.literal(2), z3.literal(3)]),
795
+ var cardBorderSchema = z5.object({
796
+ widthClass: z5.string(),
797
+ colorToken: z5.string()
798
+ });
799
+ var cardVariantSchema = z5.object({
800
+ id: z5.string(),
801
+ name: z5.string().min(1).max(20),
802
+ enabled: z5.boolean(),
803
+ priority: z5.union([z5.literal(1), z5.literal(2), z5.literal(3)]),
207
804
  // Appearance (token-based)
208
805
  background: cardBackgroundSchema,
209
806
  spacing: cardSpacingSchema,
210
807
  // Optional overrides (uses theme defaults if not specified)
211
- shadow: z3.object({
212
- elevation: z3.enum(["none", "low", "medium", "high"]),
213
- softness: z3.enum(["crisp", "soft", "hard"]).nullable(),
214
- position: z3.enum(["bottom", "bottom-right"]).default("bottom")
808
+ shadow: z5.object({
809
+ elevation: z5.enum(["none", "low", "medium", "high"]),
810
+ softness: z5.enum(["crisp", "soft", "hard"]).nullable(),
811
+ position: z5.enum(["bottom", "bottom-right"]).default("bottom")
215
812
  }).optional(),
216
- corners: z3.enum(["square", "soft", "rounded", "pill"]).optional(),
813
+ corners: z5.enum(["square", "soft", "rounded", "pill"]).optional(),
217
814
  // Border (optional)
218
815
  border: cardBorderSchema.optional()
219
816
  });
220
- var cardSystemSchema = z3.object({
221
- variants: z3.array(cardVariantSchema).min(1).max(3)
817
+ var cardSystemSchema = z5.object({
818
+ variants: z5.array(cardVariantSchema).min(1).max(3)
222
819
  });
223
820
 
224
821
  // ../theme-core/src/accordions/types.ts
225
- import { z as z4 } from "zod";
226
- var accordionIconSchema = z4.enum([
822
+ import { z as z6 } from "zod";
823
+ var accordionIconSchema = z6.enum([
227
824
  "plus-minus",
228
825
  // + becomes - (swap or rotate 90°)
229
826
  "chevron",
@@ -235,180 +832,180 @@ var accordionIconSchema = z4.enum([
235
832
  "circle-plus-minus"
236
833
  // ⊕ becomes ⊖ (swap with fade)
237
834
  ]);
238
- var accordionSystemSchema = z4.object({
835
+ var accordionSystemSchema = z6.object({
239
836
  // Visual styling (solid color only - gradients can be added later if needed)
240
- background: z4.object({
241
- type: z4.literal("solid"),
242
- colorToken: z4.string()
837
+ background: z6.object({
838
+ type: z6.literal("solid"),
839
+ colorToken: z6.string()
243
840
  }),
244
841
  // Spacing (padding inside items)
245
- spacing: z4.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
842
+ spacing: z6.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
246
843
  // Border radius (null = inherit from theme.corners)
247
- corners: z4.enum(["square", "soft", "rounded", "pill"]).nullable(),
844
+ corners: z6.enum(["square", "soft", "rounded", "pill"]).nullable(),
248
845
  // Border styling (null = inherit from theme.border)
249
- border: z4.object({
250
- widthClass: z4.string(),
846
+ border: z6.object({
847
+ widthClass: z6.string(),
251
848
  // e.g., 'border', 'border-2', 'border-0'
252
- colorToken: z4.string()
849
+ colorToken: z6.string()
253
850
  }).nullable(),
254
851
  // Shadow (null = inherit from theme.shadow)
255
- shadow: z4.object({
256
- elevation: z4.enum(["none", "low", "medium", "high"]),
257
- softness: z4.enum(["soft", "crisp", "hard"]).nullable(),
258
- position: z4.enum(["bottom", "bottom-right"])
852
+ shadow: z6.object({
853
+ elevation: z6.enum(["none", "low", "medium", "high"]),
854
+ softness: z6.enum(["soft", "crisp", "hard"]).nullable(),
855
+ position: z6.enum(["bottom", "bottom-right"])
259
856
  }).nullable(),
260
857
  // Icon style and animation
261
- icon: z4.object({
858
+ icon: z6.object({
262
859
  style: accordionIconSchema,
263
- position: z4.enum(["left", "right"]),
264
- size: z4.enum(["sm", "md", "lg"])
860
+ position: z6.enum(["left", "right"]),
861
+ size: z6.enum(["sm", "md", "lg"])
265
862
  }),
266
863
  // Trigger (question) styling
267
- trigger: z4.object({
268
- textColorToken: z4.string(),
269
- fontWeight: z4.enum(["regular", "medium", "semibold", "bold"]).nullable()
864
+ trigger: z6.object({
865
+ textColorToken: z6.string(),
866
+ fontWeight: z6.enum(["regular", "medium", "semibold", "bold"]).nullable()
270
867
  // null = inherit from theme
271
868
  }),
272
869
  // Hover state styling
273
- hover: z4.object({
274
- backgroundColorToken: z4.string().optional(),
275
- textColorToken: z4.string().optional(),
276
- borderColorToken: z4.string().optional()
870
+ hover: z6.object({
871
+ backgroundColorToken: z6.string().optional(),
872
+ textColorToken: z6.string().optional(),
873
+ borderColorToken: z6.string().optional()
277
874
  }),
278
875
  // Content (answer) styling
279
- content: z4.object({
280
- textColorToken: z4.string()
876
+ content: z6.object({
877
+ textColorToken: z6.string()
281
878
  })
282
879
  });
283
880
 
284
881
  // ../theme-core/src/inputs/types.ts
285
- import { z as z5 } from "zod";
286
- var inputSystemSchema = z5.object({
882
+ import { z as z7 } from "zod";
883
+ var inputSystemSchema = z7.object({
287
884
  // Base styling (applied to all inputs)
288
- base: z5.object({
289
- background: z5.union([
290
- z5.object({
291
- type: z5.literal("solid"),
292
- colorToken: z5.string()
885
+ base: z7.object({
886
+ background: z7.union([
887
+ z7.object({
888
+ type: z7.literal("solid"),
889
+ colorToken: z7.string()
293
890
  }),
294
- z5.object({
295
- type: z5.literal("transparent")
891
+ z7.object({
892
+ type: z7.literal("transparent")
296
893
  })
297
894
  ]),
298
- textColorToken: z5.string(),
299
- border: z5.object({
300
- widthClass: z5.string(),
895
+ textColorToken: z7.string(),
896
+ border: z7.object({
897
+ widthClass: z7.string(),
301
898
  // e.g., 'border', 'border-2'
302
- colorToken: z5.string(),
303
- style: z5.enum(["all", "underline"]).optional()
899
+ colorToken: z7.string(),
900
+ style: z7.enum(["all", "underline"]).optional()
304
901
  }),
305
- corners: z5.enum(["square", "soft", "rounded", "pill"]).nullable(),
902
+ corners: z7.enum(["square", "soft", "rounded", "pill"]).nullable(),
306
903
  // null = inherit from theme.corners
307
- shadow: z5.object({
308
- elevation: z5.enum(["none", "low", "medium"]),
309
- softness: z5.enum(["soft", "crisp", "hard"]).nullable()
904
+ shadow: z7.object({
905
+ elevation: z7.enum(["none", "low", "medium"]),
906
+ softness: z7.enum(["soft", "crisp", "hard"]).nullable()
310
907
  }).nullable(),
311
- spacing: z5.enum(["compact", "cozy", "medium", "comfortable"]),
908
+ spacing: z7.enum(["compact", "cozy", "medium", "comfortable"]),
312
909
  // padding inside inputs
313
- fontSize: z5.enum(["sm", "base", "lg"])
910
+ fontSize: z7.enum(["sm", "base", "lg"])
314
911
  }),
315
912
  // Label styling
316
- label: z5.object({
317
- textColorToken: z5.string(),
318
- fontWeight: z5.enum(["regular", "medium", "semibold", "bold", "black"]),
319
- fontSize: z5.enum(["2xs", "xs", "sm", "base"]),
320
- textTransform: z5.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
321
- letterSpacing: z5.enum(["normal", "wide", "wider", "widest"]).optional(),
322
- opacity: z5.number().min(0.2).max(1).optional()
913
+ label: z7.object({
914
+ textColorToken: z7.string(),
915
+ fontWeight: z7.enum(["regular", "medium", "semibold", "bold", "black"]),
916
+ fontSize: z7.enum(["2xs", "xs", "sm", "base"]),
917
+ textTransform: z7.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
918
+ letterSpacing: z7.enum(["normal", "wide", "wider", "widest"]).optional(),
919
+ opacity: z7.number().min(0.2).max(1).optional()
323
920
  }),
324
921
  // Focus state
325
- focus: z5.object({
326
- ringColorToken: z5.string(),
327
- ringWidth: z5.enum(["0", "1", "2", "3"]),
328
- borderColorToken: z5.string().optional()
922
+ focus: z7.object({
923
+ ringColorToken: z7.string(),
924
+ ringWidth: z7.enum(["0", "1", "2", "3"]),
925
+ borderColorToken: z7.string().optional()
329
926
  // Change border color on focus
330
927
  }),
331
928
  // Error state (for validation feedback)
332
- error: z5.object({
333
- borderColorToken: z5.string(),
334
- textColorToken: z5.string()
929
+ error: z7.object({
930
+ borderColorToken: z7.string(),
931
+ textColorToken: z7.string()
335
932
  }),
336
933
  // Disabled state
337
- disabled: z5.object({
338
- backgroundColorToken: z5.string(),
339
- textColorToken: z5.string(),
340
- opacity: z5.number().min(0.3).max(0.7)
934
+ disabled: z7.object({
935
+ backgroundColorToken: z7.string(),
936
+ textColorToken: z7.string(),
937
+ opacity: z7.number().min(0.3).max(0.7)
341
938
  })
342
939
  });
343
940
 
344
941
  // ../theme-core/src/gradients/types.ts
345
- import { z as z6 } from "zod";
346
- var gradientStopSchema = z6.object({
347
- color: z6.string(),
942
+ import { z as z8 } from "zod";
943
+ var gradientStopSchema = z8.object({
944
+ color: z8.string(),
348
945
  // Theme color token name (e.g., 'primary-500')
349
- position: z6.number().min(0).max(100)
946
+ position: z8.number().min(0).max(100)
350
947
  // Percentage 0-100
351
948
  });
352
- var gradientConfigSchema = z6.object({
353
- type: z6.enum(["linear", "radial"]),
354
- angle: z6.number().min(0).max(360).optional(),
949
+ var gradientConfigSchema = z8.object({
950
+ type: z8.enum(["linear", "radial"]),
951
+ angle: z8.number().min(0).max(360).optional(),
355
952
  // For linear gradients (degrees)
356
- position: z6.string().optional(),
953
+ position: z8.string().optional(),
357
954
  // For radial gradients ('center', 'top left', etc.)
358
- stops: z6.array(gradientStopSchema).min(2)
955
+ stops: z8.array(gradientStopSchema).min(2)
359
956
  });
360
957
 
361
958
  // ../theme-core/src/navigation/types.ts
362
- import { z as z8 } from "zod";
959
+ import { z as z10 } from "zod";
363
960
 
364
961
  // ../theme-core/src/interactive/baseSchema.ts
365
- import { z as z7 } from "zod";
366
- var interactiveTypographySchema = z7.object({
962
+ import { z as z9 } from "zod";
963
+ var interactiveTypographySchema = z9.object({
367
964
  /** Font family source */
368
- typography: z7.enum(["body", "heading"]).default("body"),
965
+ typography: z9.enum(["body", "heading"]).default("body"),
369
966
  /** Font weight */
370
- fontWeight: z7.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
967
+ fontWeight: z9.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
371
968
  /** Text transform */
372
- textTransform: z7.enum(["none", "uppercase", "capitalize"]).default("none"),
969
+ textTransform: z9.enum(["none", "uppercase", "capitalize"]).default("none"),
373
970
  /** Italic style */
374
- italic: z7.boolean().default(false)
971
+ italic: z9.boolean().default(false)
375
972
  });
376
- var effectApplicationSchema2 = z7.object({
973
+ var effectApplicationSchema2 = z9.object({
377
974
  /** Effect preset ID */
378
- effectId: z7.string(),
975
+ effectId: z9.string(),
379
976
  /** User-provided customization options */
380
- options: z7.record(z7.string(), z7.any()).optional()
977
+ options: z9.record(z9.string(), z9.any()).optional()
381
978
  });
382
- var effectCompositionSchema = z7.object({
979
+ var effectCompositionSchema = z9.object({
383
980
  /** Effects always applied */
384
- base: z7.array(effectApplicationSchema2).optional(),
981
+ base: z9.array(effectApplicationSchema2).optional(),
385
982
  /** Effects applied on hover */
386
- hover: z7.array(effectApplicationSchema2).optional(),
983
+ hover: z9.array(effectApplicationSchema2).optional(),
387
984
  /** Effects applied on active/pressed */
388
- active: z7.array(effectApplicationSchema2).optional(),
985
+ active: z9.array(effectApplicationSchema2).optional(),
389
986
  /** Effects applied on focus */
390
- focus: z7.array(effectApplicationSchema2).optional()
987
+ focus: z9.array(effectApplicationSchema2).optional()
391
988
  });
392
989
 
393
990
  // ../theme-core/src/navigation/types.ts
394
- var navLinkPaddingSchema = z8.enum(["none", "compact", "default"]);
395
- var navLinkPaddingXSchema = z8.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
396
- var navLinkBorderRadiusSchema = z8.enum(["none", "sm", "md", "full"]);
397
- var navLinkTextSizeSchema = z8.enum(["xs", "sm", "base", "lg"]);
398
- var navLinkLetterSpacingSchema = z8.enum(["normal", "wide", "wider", "widest"]);
399
- var navLinkStyleSchema = z8.object({
991
+ var navLinkPaddingSchema = z10.enum(["none", "compact", "default"]);
992
+ var navLinkPaddingXSchema = z10.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
993
+ var navLinkBorderRadiusSchema = z10.enum(["none", "sm", "md", "full"]);
994
+ var navLinkTextSizeSchema = z10.enum(["xs", "sm", "base", "lg"]);
995
+ var navLinkLetterSpacingSchema = z10.enum(["normal", "wide", "wider", "widest"]);
996
+ var navLinkStyleSchema = z10.object({
400
997
  /** Display name for the style */
401
- name: z8.string().min(1).max(30).optional(),
998
+ name: z10.string().min(1).max(30).optional(),
402
999
  /** Typography settings (inherited from interactive base) */
403
1000
  ...interactiveTypographySchema.shape,
404
1001
  /** Text color token */
405
- colorToken: z8.string().default("text"),
1002
+ colorToken: z10.string().default("text"),
406
1003
  /** Optional text size override */
407
1004
  textSize: navLinkTextSizeSchema.optional(),
408
1005
  /** Optional letter spacing override */
409
1006
  letterSpacing: navLinkLetterSpacingSchema.optional(),
410
1007
  /** Hover/active color token (for color-change effects) */
411
- hoverColorToken: z8.string().nullable().optional(),
1008
+ hoverColorToken: z10.string().nullable().optional(),
412
1009
  /** Padding preset */
413
1010
  padding: navLinkPaddingSchema.default("compact"),
414
1011
  /** Horizontal padding override (overrides horizontal component of padding preset) */
@@ -420,7 +1017,7 @@ var navLinkStyleSchema = z8.object({
420
1017
  });
421
1018
 
422
1019
  // ../theme-core/src/customCss/validation.ts
423
- import { z as z9 } from "zod";
1020
+ import { z as z11 } from "zod";
424
1021
  var FORBIDDEN_SELECTORS = [":root", "html", "body"];
425
1022
  var UNIVERSAL_SELECTOR = "*";
426
1023
  var REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
@@ -462,7 +1059,7 @@ function containsForbiddenSelector(selector) {
462
1059
  }
463
1060
  return false;
464
1061
  }
465
- var selectorSchema = z9.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
1062
+ var selectorSchema = z11.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
466
1063
  (s) => !containsForbiddenSelector(s),
467
1064
  { message: "Global selectors (:root, html, body, *) are not allowed" }
468
1065
  );
@@ -472,38 +1069,38 @@ function containsRemoteUrl(value) {
472
1069
  function containsJavascriptUrl(value) {
473
1070
  return JAVASCRIPT_URL_PATTERN.test(value);
474
1071
  }
475
- var declarationValueSchema = z9.string().max(500, "Declaration value too long (max 500 characters)").refine(
1072
+ var declarationValueSchema = z11.string().max(500, "Declaration value too long (max 500 characters)").refine(
476
1073
  (v) => !containsRemoteUrl(v),
477
1074
  { message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
478
1075
  ).refine(
479
1076
  (v) => !containsJavascriptUrl(v),
480
1077
  { message: "javascript: URLs are not allowed" }
481
1078
  );
482
- var declarationsSchema = z9.record(
483
- z9.string().min(1).max(100),
1079
+ var declarationsSchema = z11.record(
1080
+ z11.string().min(1).max(100),
484
1081
  // property name
485
1082
  declarationValueSchema
486
1083
  // property value
487
1084
  );
488
- var customCssRuleSchema = z9.object({
489
- id: z9.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
1085
+ var customCssRuleSchema = z11.object({
1086
+ id: z11.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
490
1087
  selector: selectorSchema,
491
1088
  declarations: declarationsSchema
492
1089
  });
493
1090
  var blockCustomCssRuleSchema = customCssRuleSchema.extend({
494
- blockKind: z9.string().min(1, "Block kind is required").max(50, "Block kind too long")
1091
+ blockKind: z11.string().min(1, "Block kind is required").max(50, "Block kind too long")
495
1092
  });
496
- var customCssRulesSchema = z9.array(customCssRuleSchema).optional();
497
- var blockCustomCssRulesSchema = z9.array(blockCustomCssRuleSchema).optional();
1093
+ var customCssRulesSchema = z11.array(customCssRuleSchema).optional();
1094
+ var blockCustomCssRulesSchema = z11.array(blockCustomCssRuleSchema).optional();
498
1095
 
499
1096
  // ../theme-core/src/customCss/atRuleValidation.ts
500
- import { z as z10 } from "zod";
1097
+ import { z as z12 } from "zod";
501
1098
  var KEYFRAME_OFFSET_PATTERN = /^(from|to|\d{1,3}%)$/i;
502
1099
  var ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
503
1100
  var BLOCKED_AT_RULES = ["@import", "@charset"];
504
1101
  var BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
505
- var ruleIdSchema = z10.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
506
- var nestedRuleSchema = z10.object({
1102
+ var ruleIdSchema = z12.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
1103
+ var nestedRuleSchema = z12.object({
507
1104
  selector: selectorSchema,
508
1105
  declarations: declarationsSchema
509
1106
  });
@@ -515,146 +1112,146 @@ function isValidKeyframeOffset(offset) {
515
1112
  const value = parseInt(match[1], 10);
516
1113
  return value >= 0 && value <= 100;
517
1114
  }
518
- var keyframeOffsetSchema = z10.string().transform((offset) => offset.trim()).refine(
1115
+ var keyframeOffsetSchema = z12.string().transform((offset) => offset.trim()).refine(
519
1116
  (offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
520
1117
  { message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
521
1118
  ).refine(
522
1119
  isValidKeyframeOffset,
523
1120
  { message: "Keyframe offset must be between 0% and 100%" }
524
1121
  );
525
- var animationNameSchema = z10.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
1122
+ var animationNameSchema = z12.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
526
1123
  (name) => ANIMATION_NAME_PATTERN.test(name),
527
1124
  { message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
528
1125
  );
529
- var keyframeSchema = z10.object({
1126
+ var keyframeSchema = z12.object({
530
1127
  offset: keyframeOffsetSchema,
531
1128
  declarations: declarationsSchema
532
1129
  });
533
- var keyframesAtRuleSchema = z10.object({
1130
+ var keyframesAtRuleSchema = z12.object({
534
1131
  id: ruleIdSchema,
535
- type: z10.literal("keyframes"),
1132
+ type: z12.literal("keyframes"),
536
1133
  name: animationNameSchema,
537
- frames: z10.array(keyframeSchema).min(1, "At least one keyframe is required")
1134
+ frames: z12.array(keyframeSchema).min(1, "At least one keyframe is required")
538
1135
  });
539
- var fontFaceDeclarationsSchema = z10.record(z10.string().min(1).max(100), declarationValueSchema).refine(
1136
+ var fontFaceDeclarationsSchema = z12.record(z12.string().min(1).max(100), declarationValueSchema).refine(
540
1137
  (decls) => "fontFamily" in decls || "font-family" in decls,
541
1138
  { message: "font-family is required in @font-face" }
542
1139
  );
543
- var fontFaceAtRuleSchema = z10.object({
1140
+ var fontFaceAtRuleSchema = z12.object({
544
1141
  id: ruleIdSchema,
545
- type: z10.literal("font-face"),
1142
+ type: z12.literal("font-face"),
546
1143
  declarations: fontFaceDeclarationsSchema
547
1144
  });
548
- var mediaQuerySchema = z10.string().min(1, "Media query is required").max(200, "Media query too long");
549
- var mediaAtRuleSchema = z10.object({
1145
+ var mediaQuerySchema = z12.string().min(1, "Media query is required").max(200, "Media query too long");
1146
+ var mediaAtRuleSchema = z12.object({
550
1147
  id: ruleIdSchema,
551
- type: z10.literal("media"),
1148
+ type: z12.literal("media"),
552
1149
  query: mediaQuerySchema,
553
- rules: z10.array(nestedRuleSchema).min(1, "At least one rule is required")
1150
+ rules: z12.array(nestedRuleSchema).min(1, "At least one rule is required")
554
1151
  });
555
- var supportsConditionSchema = z10.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
556
- var supportsAtRuleSchema = z10.object({
1152
+ var supportsConditionSchema = z12.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
1153
+ var supportsAtRuleSchema = z12.object({
557
1154
  id: ruleIdSchema,
558
- type: z10.literal("supports"),
1155
+ type: z12.literal("supports"),
559
1156
  condition: supportsConditionSchema,
560
- rules: z10.array(nestedRuleSchema).min(1, "At least one rule is required")
1157
+ rules: z12.array(nestedRuleSchema).min(1, "At least one rule is required")
561
1158
  });
562
1159
  function containsBlockedAtRule(css) {
563
1160
  return BLOCKED_AT_RULE_PATTERN.test(css);
564
1161
  }
565
- var rawCssSchema = z10.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
1162
+ var rawCssSchema = z12.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
566
1163
  (css) => css.trim().startsWith("@"),
567
1164
  { message: "Raw at-rule must start with @" }
568
1165
  ).refine(
569
1166
  (css) => !containsBlockedAtRule(css),
570
1167
  { message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
571
1168
  );
572
- var rawAtRuleSchema = z10.object({
1169
+ var rawAtRuleSchema = z12.object({
573
1170
  id: ruleIdSchema,
574
- type: z10.literal("raw"),
1171
+ type: z12.literal("raw"),
575
1172
  css: rawCssSchema
576
1173
  });
577
- var customCssAtRuleSchema = z10.discriminatedUnion("type", [
1174
+ var customCssAtRuleSchema = z12.discriminatedUnion("type", [
578
1175
  keyframesAtRuleSchema,
579
1176
  fontFaceAtRuleSchema,
580
1177
  mediaAtRuleSchema,
581
1178
  supportsAtRuleSchema,
582
1179
  rawAtRuleSchema
583
1180
  ]);
584
- var customCssAtRulesSchema = z10.array(customCssAtRuleSchema).optional();
1181
+ var customCssAtRulesSchema = z12.array(customCssAtRuleSchema).optional();
585
1182
 
586
1183
  // ../theme-core/src/shared/componentStyles.ts
587
- import { z as z11 } from "zod";
588
- var componentBorderSchema = z11.object({
589
- width: z11.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
590
- style: z11.enum(["solid", "dashed"]).default("solid"),
591
- colorToken: z11.string().optional()
1184
+ import { z as z13 } from "zod";
1185
+ var componentBorderSchema = z13.object({
1186
+ width: z13.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
1187
+ style: z13.enum(["solid", "dashed"]).default("solid"),
1188
+ colorToken: z13.string().optional()
592
1189
  // defaults to "border" if not set
593
1190
  });
594
- var componentShadowSchema = z11.object({
595
- elevation: z11.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
1191
+ var componentShadowSchema = z13.object({
1192
+ elevation: z13.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
596
1193
  });
597
1194
 
598
1195
  // ../theme-core/src/schema.ts
599
- var axesSchema = z12.object({
600
- tone: z12.enum(["minimal", "classic", "bold"]),
601
- energy: z12.enum(["calm", "vibrant"]),
602
- density: z12.enum(["airy", "regular", "compact"]),
603
- mediaBias: z12.enum(["text", "media", "mixed"]),
604
- conversionBias: z12.enum(["low", "med", "high"]),
605
- motion: z12.enum(["subtle", "standard", "expressive"])
606
- });
607
- var colourHexString = z12.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
608
- var paletteColorSchema = z12.object({
609
- name: z12.string().min(1),
1196
+ var axesSchema = z14.object({
1197
+ tone: z14.enum(["minimal", "classic", "bold"]),
1198
+ energy: z14.enum(["calm", "vibrant"]),
1199
+ density: z14.enum(["airy", "regular", "compact"]),
1200
+ mediaBias: z14.enum(["text", "media", "mixed"]),
1201
+ conversionBias: z14.enum(["low", "med", "high"]),
1202
+ motion: z14.enum(["subtle", "standard", "expressive"])
1203
+ });
1204
+ var colourHexString = z14.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
1205
+ var paletteColorSchema = z14.object({
1206
+ name: z14.string().min(1),
610
1207
  hex: colourHexString
611
1208
  });
612
- var paletteMetaSchema = z12.object({
613
- mode: z12.enum(["light", "dark"])
1209
+ var paletteMetaSchema = z14.object({
1210
+ mode: z14.enum(["light", "dark"])
614
1211
  });
615
- var paletteSchema = z12.object({
616
- colors: z12.array(paletteColorSchema),
1212
+ var paletteSchema = z14.object({
1213
+ colors: z14.array(paletteColorSchema),
617
1214
  meta: paletteMetaSchema
618
1215
  });
619
- var typographyStyleSchema = z12.object({
620
- family: z12.string().min(1),
621
- weight: z12.enum(["light", "regular", "medium", "semibold", "bold"]),
622
- letterSpacing: z12.enum(["tight", "normal", "loose"]),
623
- lineHeight: z12.enum(["normal", "relaxed", "loose"])
1216
+ var typographyStyleSchema = z14.object({
1217
+ family: z14.string().min(1),
1218
+ weight: z14.enum(["light", "regular", "medium", "semibold", "bold"]),
1219
+ letterSpacing: z14.enum(["tight", "normal", "loose"]),
1220
+ lineHeight: z14.enum(["normal", "relaxed", "loose"])
624
1221
  });
625
1222
  var bodyTypographyStyleSchema = typographyStyleSchema.extend({
626
- size: z12.enum(["md", "lg", "xl"])
1223
+ size: z14.enum(["md", "lg", "xl"])
627
1224
  });
628
- var headingSizeSchema = z12.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
629
- var headingTypographyOverridesSchema = z12.object({
630
- weight: z12.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
631
- letterSpacing: z12.enum(["tight", "normal", "loose"]).nullable().optional(),
1225
+ var headingSizeSchema = z14.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
1226
+ var headingTypographyOverridesSchema = z14.object({
1227
+ weight: z14.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
1228
+ letterSpacing: z14.enum(["tight", "normal", "loose"]).nullable().optional(),
632
1229
  size: headingSizeSchema.nullable().optional(),
633
- lineHeight: z12.enum(["normal", "relaxed", "loose"]).nullable().optional(),
634
- italic: z12.boolean().nullable().optional(),
635
- colorToken: z12.string().min(1).nullable().optional()
1230
+ lineHeight: z14.enum(["normal", "relaxed", "loose"]).nullable().optional(),
1231
+ italic: z14.boolean().nullable().optional(),
1232
+ colorToken: z14.string().min(1).nullable().optional()
636
1233
  // Palette token name for heading color
637
1234
  });
638
1235
  var headingTypographyStyleSchema = typographyStyleSchema.extend({
639
- case: z12.enum(["uppercase", "normal", "smallCaps"]).nullable(),
640
- italic: z12.boolean().nullable(),
641
- colorToken: z12.string().min(1).nullable().optional()
1236
+ case: z14.enum(["uppercase", "normal", "smallCaps"]).nullable(),
1237
+ italic: z14.boolean().nullable(),
1238
+ colorToken: z14.string().min(1).nullable().optional()
642
1239
  // Palette token name for heading color
643
1240
  });
644
- var proseLinkUnderlineStyleSchema = z12.enum(["solid", "dotted", "dashed"]);
645
- var proseLinkUnderlineThicknessSchema = z12.enum(["auto", "fromFont", "thin", "medium", "thick"]);
646
- var proseLinkUnderlineOffsetSchema = z12.enum(["auto", "tight", "normal", "loose"]);
647
- var proseLinkStyleSchema = z12.object({
648
- colorToken: z12.string().min(1).optional(),
649
- hoverColorToken: z12.string().min(1).optional(),
650
- underline: z12.boolean().optional(),
651
- decorationColorToken: z12.string().min(1).optional(),
652
- hoverDecorationColorToken: z12.string().min(1).optional(),
1241
+ var proseLinkUnderlineStyleSchema = z14.enum(["solid", "dotted", "dashed"]);
1242
+ var proseLinkUnderlineThicknessSchema = z14.enum(["auto", "fromFont", "thin", "medium", "thick"]);
1243
+ var proseLinkUnderlineOffsetSchema = z14.enum(["auto", "tight", "normal", "loose"]);
1244
+ var proseLinkStyleSchema = z14.object({
1245
+ colorToken: z14.string().min(1).optional(),
1246
+ hoverColorToken: z14.string().min(1).optional(),
1247
+ underline: z14.boolean().optional(),
1248
+ decorationColorToken: z14.string().min(1).optional(),
1249
+ hoverDecorationColorToken: z14.string().min(1).optional(),
653
1250
  underlineStyle: proseLinkUnderlineStyleSchema.optional(),
654
1251
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
655
1252
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
656
1253
  });
657
- var semanticSpacingSchema = z12.enum([
1254
+ var semanticSpacingSchema = z14.enum([
658
1255
  "none",
659
1256
  "compact",
660
1257
  "cozy",
@@ -662,62 +1259,62 @@ var semanticSpacingSchema = z12.enum([
662
1259
  "comfortable",
663
1260
  "spacious"
664
1261
  ]);
665
- var boxRoundedSchema = z12.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
666
- var boxBackgroundOverlaySchema = z12.object({
667
- type: z12.enum(["none", "color", "gradient"]).nullable().optional(),
668
- color: z12.string().nullable().optional(),
669
- gradient: z12.string().nullable().optional(),
670
- opacity: z12.number().min(0).max(1).nullable().optional()
671
- });
672
- var boxBackgroundSchema = z12.object({
673
- type: z12.enum(["color", "gradient", "image"]).optional(),
674
- color: z12.string().nullable().optional(),
675
- gradient: z12.string().nullable().optional(),
1262
+ var boxRoundedSchema = z14.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
1263
+ var boxBackgroundOverlaySchema = z14.object({
1264
+ type: z14.enum(["none", "color", "gradient"]).nullable().optional(),
1265
+ color: z14.string().nullable().optional(),
1266
+ gradient: z14.string().nullable().optional(),
1267
+ opacity: z14.number().min(0).max(1).nullable().optional()
1268
+ });
1269
+ var boxBackgroundSchema = z14.object({
1270
+ type: z14.enum(["color", "gradient", "image"]).optional(),
1271
+ color: z14.string().nullable().optional(),
1272
+ gradient: z14.string().nullable().optional(),
676
1273
  image: mediaSchema.nullable().optional(),
677
- objectFit: z12.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
678
- scale: z12.string().nullable().optional(),
679
- position: z12.string().nullable().optional(),
680
- opacity: z12.number().min(0).max(1).nullable().optional(),
1274
+ objectFit: z14.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
1275
+ scale: z14.string().nullable().optional(),
1276
+ position: z14.string().nullable().optional(),
1277
+ opacity: z14.number().min(0).max(1).nullable().optional(),
681
1278
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
682
- textColor: z12.string().nullable().optional(),
683
- headingColor: z12.string().nullable().optional()
1279
+ textColor: z14.string().nullable().optional(),
1280
+ headingColor: z14.string().nullable().optional()
684
1281
  });
685
- var sectionStylesOverrideSchema = z12.object({
1282
+ var sectionStylesOverrideSchema = z14.object({
686
1283
  background: boxBackgroundSchema.nullable().optional(),
687
1284
  spacing: semanticSpacingSchema.nullable().optional(),
688
- minHeight: z12.enum(["none", "hero", "immersive"]).nullable().optional()
1285
+ minHeight: z14.enum(["none", "hero", "immersive"]).nullable().optional()
689
1286
  });
690
- var containerStylesOverrideSchema = z12.object({
1287
+ var containerStylesOverrideSchema = z14.object({
691
1288
  background: boxBackgroundSchema.nullable().optional(),
692
1289
  spacing: semanticSpacingSchema.nullable().optional(),
693
- raised: z12.boolean().nullable().optional(),
1290
+ raised: z14.boolean().nullable().optional(),
694
1291
  rounded: boxRoundedSchema.nullable().optional(),
695
- fullWidth: z12.boolean().nullable().optional()
1292
+ fullWidth: z14.boolean().nullable().optional()
696
1293
  });
697
- var cardBorderOverrideSchema = z12.object({
698
- enabled: z12.boolean().nullable().optional(),
699
- width: z12.enum(["none", "1", "2", "3"]).nullable().optional(),
700
- colorToken: z12.string().nullable().optional()
1294
+ var cardBorderOverrideSchema = z14.object({
1295
+ enabled: z14.boolean().nullable().optional(),
1296
+ width: z14.enum(["none", "1", "2", "3"]).nullable().optional(),
1297
+ colorToken: z14.string().nullable().optional()
701
1298
  });
702
- var cardStylesOverrideSchema = z12.object({
1299
+ var cardStylesOverrideSchema = z14.object({
703
1300
  background: boxBackgroundSchema.nullable().optional(),
704
1301
  border: cardBorderOverrideSchema.nullable().optional(),
705
1302
  spacing: semanticSpacingSchema.nullable().optional(),
706
- raised: z12.boolean().nullable().optional(),
1303
+ raised: z14.boolean().nullable().optional(),
707
1304
  rounded: boxRoundedSchema.nullable().optional()
708
1305
  });
709
- var blockStyleOverridesSchema = z12.object({
1306
+ var blockStyleOverridesSchema = z14.object({
710
1307
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
711
1308
  containerStyles: containerStylesOverrideSchema.nullable().optional(),
712
1309
  cardStyles: cardStylesOverrideSchema.nullable().optional()
713
1310
  });
714
- var blockThemeOverrideSchema = z12.object({
715
- typography: z12.object({
1311
+ var blockThemeOverrideSchema = z14.object({
1312
+ typography: z14.object({
716
1313
  proseLinkStyle: proseLinkStyleSchema.optional()
717
1314
  }).optional(),
718
1315
  styles: blockStyleOverridesSchema.optional()
719
1316
  });
720
- var typographyScaleSchema = z12.enum([
1317
+ var typographyScaleSchema = z14.enum([
721
1318
  // New intuitive names
722
1319
  "compact",
723
1320
  // ratio 1.2 (was minorThird)
@@ -730,9 +1327,9 @@ var typographyScaleSchema = z12.enum([
730
1327
  "majorThird",
731
1328
  "perfectFourth"
732
1329
  ]);
733
- var typographySchema = z12.object({
1330
+ var typographySchema = z14.object({
734
1331
  body: bodyTypographyStyleSchema,
735
- headings: z12.object({
1332
+ headings: z14.object({
736
1333
  default: headingTypographyStyleSchema,
737
1334
  h1: headingTypographyOverridesSchema,
738
1335
  h2: headingTypographyOverridesSchema,
@@ -745,41 +1342,41 @@ var typographySchema = z12.object({
745
1342
  scale: typographyScaleSchema,
746
1343
  proseLinkStyle: proseLinkStyleSchema.optional()
747
1344
  });
748
- var spaceSchema = z12.enum(["comfortable", "standard", "dense"]);
749
- var corners = z12.enum(["square", "soft", "rounded", "pill"]);
750
- var shadow = z12.object({
751
- elevation: z12.enum(["none", "low", "medium", "high"]),
752
- softness: z12.enum(["crisp", "soft", "hard"]).nullable(),
753
- position: z12.enum(["bottom", "bottom-right"]).default("bottom")
1345
+ var spaceSchema = z14.enum(["comfortable", "standard", "dense"]);
1346
+ var corners = z14.enum(["square", "soft", "rounded", "pill"]);
1347
+ var shadow = z14.object({
1348
+ elevation: z14.enum(["none", "low", "medium", "high"]),
1349
+ softness: z14.enum(["crisp", "soft", "hard"]).nullable(),
1350
+ position: z14.enum(["bottom", "bottom-right"]).default("bottom")
754
1351
  });
755
- var border = z12.object({
756
- width: z12.enum(["none", "hairline", "thin", "thick"]),
757
- style: z12.enum(["solid", "dashed"])
1352
+ var border = z14.object({
1353
+ width: z14.enum(["none", "hairline", "thin", "thick"]),
1354
+ style: z14.enum(["solid", "dashed"])
758
1355
  });
759
- var motion = z12.object({
760
- level: z12.enum(["off", "low", "medium", "high"]),
761
- easing: z12.enum(["standard", "snappy", "gentle"]).nullable()
1356
+ var motion = z14.object({
1357
+ level: z14.enum(["off", "low", "medium", "high"]),
1358
+ easing: z14.enum(["standard", "snappy", "gentle"]).nullable()
762
1359
  });
763
- var buttonStyle = z12.object({
1360
+ var buttonStyle = z14.object({
764
1361
  shape: corners
765
1362
  // Used for --radius-control CSS variable
766
1363
  });
767
- var cardStyle = z12.object({
768
- elevation: z12.enum(["none", "low", "medium", "high"]),
769
- border: z12.enum(["none", "subtle", "defined"]),
1364
+ var cardStyle = z14.object({
1365
+ elevation: z14.enum(["none", "low", "medium", "high"]),
1366
+ border: z14.enum(["none", "subtle", "defined"]),
770
1367
  shape: corners,
771
- headerStyle: z12.enum(["plain", "accentBar", "subtleBg"]).nullable(),
772
- mediaTreatment: z12.enum(["square", "rounded", "bleed"]).nullable()
1368
+ headerStyle: z14.enum(["plain", "accentBar", "subtleBg"]).nullable(),
1369
+ mediaTreatment: z14.enum(["square", "rounded", "bleed"]).nullable()
773
1370
  });
774
- var inputStyle = z12.object({
1371
+ var inputStyle = z14.object({
775
1372
  shape: corners,
776
- border: z12.enum(["subtle", "defined", "underline"]),
777
- focus: z12.enum(["glow", "ring", "underline"]),
778
- label: z12.enum(["inside", "above"])
1373
+ border: z14.enum(["subtle", "defined", "underline"]),
1374
+ focus: z14.enum(["glow", "ring", "underline"]),
1375
+ label: z14.enum(["inside", "above"])
779
1376
  });
780
- var headerVariant = z12.enum(["classic", "centered", "transparent", "floating", "editorial"]);
781
- var headerPositioning = z12.enum(["static", "sticky", "fixed"]);
782
- var headerNavStyle = z12.enum([
1377
+ var headerVariant = z14.enum(["classic", "centered", "transparent", "floating", "editorial"]);
1378
+ var headerPositioning = z14.enum(["static", "sticky", "fixed"]);
1379
+ var headerNavStyle = z14.enum([
783
1380
  "minimal",
784
1381
  "underline",
785
1382
  "underline-grow",
@@ -788,82 +1385,82 @@ var headerNavStyle = z12.enum([
788
1385
  "frosted",
789
1386
  "solid"
790
1387
  ]);
791
- var navFontWeight = z12.enum(["regular", "medium", "semibold", "bold"]);
792
- var headerMaxWidth = z12.enum(["container", "full"]);
793
- var headerContainerSchema = z12.object({
794
- rounded: z12.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
795
- border: z12.boolean().default(true),
796
- shadow: z12.boolean().default(true),
797
- padding: z12.enum(["sm", "md", "lg"]).default("md"),
798
- tint: z12.string().nullable().optional(),
799
- opacity: z12.number().min(0).max(1).default(0.12)
1388
+ var navFontWeight = z14.enum(["regular", "medium", "semibold", "bold"]);
1389
+ var headerMaxWidth = z14.enum(["container", "full"]);
1390
+ var headerContainerSchema = z14.object({
1391
+ rounded: z14.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
1392
+ border: z14.boolean().default(true),
1393
+ shadow: z14.boolean().default(true),
1394
+ padding: z14.enum(["sm", "md", "lg"]).default("md"),
1395
+ tint: z14.string().nullable().optional(),
1396
+ opacity: z14.number().min(0).max(1).default(0.12)
800
1397
  }).optional();
801
1398
  var headerBorderSchema = componentBorderSchema.extend({
802
- position: z12.enum(["bottom", "top", "both", "none"]).default("bottom")
1399
+ position: z14.enum(["bottom", "top", "both", "none"]).default("bottom")
803
1400
  }).optional();
804
- var logoStyleSchema = z12.object({
805
- fontFamily: z12.enum(["heading", "body"]).default("heading"),
806
- letterSpacing: z12.enum(["normal", "wide", "wider", "widest"]).default("normal"),
807
- gradient: z12.boolean().default(false)
1401
+ var logoStyleSchema = z14.object({
1402
+ fontFamily: z14.enum(["heading", "body"]).default("heading"),
1403
+ letterSpacing: z14.enum(["normal", "wide", "wider", "widest"]).default("normal"),
1404
+ gradient: z14.boolean().default(false)
808
1405
  }).optional();
809
- var headerLogoTextSchema = z12.object({
810
- mobileWrapLines: z12.union([z12.literal(1), z12.literal(2)]).optional(),
811
- mobileMaxWidth: z12.enum(["xs", "sm", "md"]).optional(),
812
- hideOnShrink: z12.boolean().optional()
1406
+ var headerLogoTextSchema = z14.object({
1407
+ mobileWrapLines: z14.union([z14.literal(1), z14.literal(2)]).optional(),
1408
+ mobileMaxWidth: z14.enum(["xs", "sm", "md"]).optional(),
1409
+ hideOnShrink: z14.boolean().optional()
813
1410
  }).optional();
814
- var navEffectsSchema = z12.object({
815
- underlineGradient: z12.boolean().default(false),
816
- glow: z12.boolean().default(false),
817
- glowColor: z12.string().optional(),
818
- neumorphic: z12.boolean().default(false)
1411
+ var navEffectsSchema = z14.object({
1412
+ underlineGradient: z14.boolean().default(false),
1413
+ glow: z14.boolean().default(false),
1414
+ glowColor: z14.string().optional(),
1415
+ neumorphic: z14.boolean().default(false)
819
1416
  }).optional();
820
- var dropdownStyleSchema = z12.object({
1417
+ var dropdownStyleSchema = z14.object({
821
1418
  // Container styling
822
- background: z12.string().default("surface"),
1419
+ background: z14.string().default("surface"),
823
1420
  // color token
824
- textColor: z12.string().default("text"),
1421
+ textColor: z14.string().default("text"),
825
1422
  // color token
826
- borderColor: z12.string().nullable().default("border"),
1423
+ borderColor: z14.string().nullable().default("border"),
827
1424
  // null = no border
828
- shadow: z12.enum(["none", "sm", "md", "lg"]).default("md"),
829
- borderRadius: z12.enum(["none", "sm", "md", "lg"]).default("md"),
1425
+ shadow: z14.enum(["none", "sm", "md", "lg"]).default("md"),
1426
+ borderRadius: z14.enum(["none", "sm", "md", "lg"]).default("md"),
830
1427
  // Link hover states (explicit control)
831
- hoverBackground: z12.string().nullable().optional(),
1428
+ hoverBackground: z14.string().nullable().optional(),
832
1429
  // color token, null = transparent
833
- hoverTextColor: z12.string().nullable().optional(),
1430
+ hoverTextColor: z14.string().nullable().optional(),
834
1431
  // color token, null = inherit
835
1432
  // Typography
836
- textTransform: z12.enum(["none", "uppercase", "capitalize"]).default("none"),
837
- letterSpacing: z12.enum(["normal", "wide", "wider"]).default("normal"),
838
- fontWeight: z12.enum(["regular", "medium", "semibold", "bold"]).optional(),
1433
+ textTransform: z14.enum(["none", "uppercase", "capitalize"]).default("none"),
1434
+ letterSpacing: z14.enum(["normal", "wide", "wider"]).default("normal"),
1435
+ fontWeight: z14.enum(["regular", "medium", "semibold", "bold"]).optional(),
839
1436
  // optional = inherit from navWeight
840
- textSize: z12.enum(["xs", "sm", "base", "lg"]).optional()
1437
+ textSize: z14.enum(["xs", "sm", "base", "lg"]).optional()
841
1438
  // optional = no override (browser default)
842
1439
  }).optional();
843
- var headerCtaGapSchema = z12.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
844
- var navContainerSchema = z12.object({
845
- type: z12.enum(["none", "pill", "glass"]).default("none"),
846
- tint: z12.string().nullable().optional(),
847
- opacity: z12.number().min(0).max(1).default(0.15)
1440
+ var headerCtaGapSchema = z14.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1441
+ var navContainerSchema = z14.object({
1442
+ type: z14.enum(["none", "pill", "glass"]).default("none"),
1443
+ tint: z14.string().nullable().optional(),
1444
+ opacity: z14.number().min(0).max(1).default(0.15)
848
1445
  }).default({ type: "none", tint: null, opacity: 0.15 });
849
- var headerBackgroundSchema = z12.object({
850
- type: z12.enum(["color", "gradient", "image"]),
851
- color: z12.string().nullable().optional(),
1446
+ var headerBackgroundSchema = z14.object({
1447
+ type: z14.enum(["color", "gradient", "image"]),
1448
+ color: z14.string().nullable().optional(),
852
1449
  gradient: gradientConfigSchema.nullable().optional(),
853
1450
  image: mediaSchema.nullable().optional(),
854
- textColor: z12.string().nullable().optional()
1451
+ textColor: z14.string().nullable().optional()
855
1452
  });
856
- var headerSchema = z12.object({
1453
+ var headerSchema = z14.object({
857
1454
  variant: headerVariant,
858
1455
  positioning: headerPositioning,
859
- shrinkOnScroll: z12.boolean(),
1456
+ shrinkOnScroll: z14.boolean(),
860
1457
  maxWidth: headerMaxWidth,
861
1458
  logoOverride: mediaSchema.nullable().optional(),
862
1459
  background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
863
- textColor: z12.string().nullable().optional(),
1460
+ textColor: z14.string().nullable().optional(),
864
1461
  // Site title and general header text
865
1462
  navStyle: headerNavStyle,
866
- navColor: z12.string().nullable().optional(),
1463
+ navColor: z14.string().nullable().optional(),
867
1464
  // Nav links (inherits textColor if not set)
868
1465
  navWeight: navFontWeight.default("medium"),
869
1466
  // New fields for header system enhancement
@@ -882,50 +1479,50 @@ var headerSchema = z12.object({
882
1479
  // Dropdown menu styling (nav dropdowns and mobile drawer)
883
1480
  dropdownStyle: dropdownStyleSchema
884
1481
  });
885
- var footerVariant = z12.enum(["simple", "columns", "split"]);
886
- var footerMaxWidth = z12.enum(["container", "full"]);
887
- var footerMode = z12.enum(["default", "blocks", "default+blocks", "none"]);
888
- var footerNavLayoutMode = z12.enum(["stack", "inline", "inline-wrap"]);
889
- var footerNavLayoutAlign = z12.enum(["start", "center", "end", "space-between"]);
890
- var footerSpacing = z12.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
891
- var footerLogoPlacement = z12.enum(["left", "right", "above", "below"]);
892
- var footerLogoSize = z12.enum(["sm", "md", "lg", "xl"]);
893
- var footerLogoMaxHeight = z12.enum(["sm", "md", "lg", "xl"]);
894
- var footerBottomTextLinkStyleSchema = z12.object({
895
- colorToken: z12.string().optional(),
896
- hoverColorToken: z12.string().nullable().optional(),
897
- decorationColorToken: z12.string().nullable().optional(),
898
- underline: z12.boolean().optional()
899
- });
900
- var footerBottomBarSchema = z12.object({
901
- enabled: z12.boolean().optional(),
902
- fullBleed: z12.boolean().optional(),
1482
+ var footerVariant = z14.enum(["simple", "columns", "split"]);
1483
+ var footerMaxWidth = z14.enum(["container", "full"]);
1484
+ var footerMode = z14.enum(["default", "blocks", "default+blocks", "none"]);
1485
+ var footerNavLayoutMode = z14.enum(["stack", "inline", "inline-wrap"]);
1486
+ var footerNavLayoutAlign = z14.enum(["start", "center", "end", "space-between"]);
1487
+ var footerSpacing = z14.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1488
+ var footerLogoPlacement = z14.enum(["left", "right", "above", "below"]);
1489
+ var footerLogoSize = z14.enum(["sm", "md", "lg", "xl"]);
1490
+ var footerLogoMaxHeight = z14.enum(["sm", "md", "lg", "xl"]);
1491
+ var footerBottomTextLinkStyleSchema = z14.object({
1492
+ colorToken: z14.string().optional(),
1493
+ hoverColorToken: z14.string().nullable().optional(),
1494
+ decorationColorToken: z14.string().nullable().optional(),
1495
+ underline: z14.boolean().optional()
1496
+ });
1497
+ var footerBottomBarSchema = z14.object({
1498
+ enabled: z14.boolean().optional(),
1499
+ fullBleed: z14.boolean().optional(),
903
1500
  background: headerBackgroundSchema.optional(),
904
- textColor: z12.string().nullable().optional(),
905
- textAlign: z12.enum(["left", "center", "right"]).optional(),
1501
+ textColor: z14.string().nullable().optional(),
1502
+ textAlign: z14.enum(["left", "center", "right"]).optional(),
906
1503
  paddingY: footerSpacing.optional(),
907
1504
  paddingX: footerSpacing.optional(),
908
- borderTop: z12.object({
909
- colorToken: z12.string().nullable().optional(),
910
- width: z12.enum(["none", "thin", "medium", "thick"]).optional()
1505
+ borderTop: z14.object({
1506
+ colorToken: z14.string().nullable().optional(),
1507
+ width: z14.enum(["none", "thin", "medium", "thick"]).optional()
911
1508
  }).optional()
912
1509
  });
913
- var footerNavLayoutSchema = z12.object({
1510
+ var footerNavLayoutSchema = z14.object({
914
1511
  layout: footerNavLayoutMode.optional(),
915
1512
  align: footerNavLayoutAlign.optional(),
916
1513
  gapX: footerSpacing.optional(),
917
1514
  gapY: footerSpacing.optional(),
918
- columns: z12.number().int().min(1).max(6).optional()
1515
+ columns: z14.number().int().min(1).max(6).optional()
919
1516
  });
920
- var footerLogoSchema = z12.object({
921
- showLogo: z12.boolean().default(true),
922
- showLogoText: z12.boolean().optional(),
1517
+ var footerLogoSchema = z14.object({
1518
+ showLogo: z14.boolean().default(true),
1519
+ showLogoText: z14.boolean().optional(),
923
1520
  placement: footerLogoPlacement.optional(),
924
1521
  size: footerLogoSize.optional(),
925
1522
  maxHeight: footerLogoMaxHeight.optional(),
926
- align: z12.enum(["start", "center", "end"]).optional()
1523
+ align: z14.enum(["start", "center", "end"]).optional()
927
1524
  });
928
- var footerSchema = z12.object({
1525
+ var footerSchema = z14.object({
929
1526
  /**
930
1527
  * SDK-only footer rendering mode.
931
1528
  *
@@ -934,11 +1531,11 @@ var footerSchema = z12.object({
934
1531
  mode: footerMode.optional(),
935
1532
  variant: footerVariant,
936
1533
  maxWidth: footerMaxWidth,
937
- showLogoText: z12.boolean().optional(),
1534
+ showLogoText: z14.boolean().optional(),
938
1535
  background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
939
1536
  // Footer nav styling (independent from header)
940
1537
  navStyle: headerNavStyle.default("minimal"),
941
- navColor: z12.string().nullable().optional(),
1538
+ navColor: z14.string().nullable().optional(),
942
1539
  navWeight: navFontWeight.default("medium"),
943
1540
  // Full nav link customization (overrides navStyle if set)
944
1541
  navLinkStyle: navLinkStyleSchema.optional(),
@@ -949,15 +1546,15 @@ var footerSchema = z12.object({
949
1546
  logo: footerLogoSchema.optional(),
950
1547
  bottomBar: footerBottomBarSchema.optional()
951
1548
  });
952
- var containerPaddingPresetSchema = z12.enum(["tight", "compact", "default", "relaxed"]);
953
- var layoutSchema = z12.object({
954
- containerPadding: z12.object({
1549
+ var containerPaddingPresetSchema = z14.enum(["tight", "compact", "default", "relaxed"]);
1550
+ var layoutSchema = z14.object({
1551
+ containerPadding: z14.object({
955
1552
  mobile: containerPaddingPresetSchema.optional(),
956
1553
  tablet: containerPaddingPresetSchema.optional(),
957
1554
  desktop: containerPaddingPresetSchema.optional()
958
1555
  }).optional()
959
1556
  }).optional();
960
- var heroTypographySizeSchema = z12.enum([
1557
+ var heroTypographySizeSchema = z14.enum([
961
1558
  "sm",
962
1559
  "base",
963
1560
  "lg",
@@ -968,14 +1565,14 @@ var heroTypographySizeSchema = z12.enum([
968
1565
  "5xl",
969
1566
  "6xl"
970
1567
  ]);
971
- var heroTypographyLineHeightSchema = z12.enum(["tight", "snug", "normal", "relaxed"]);
972
- var heroResponsiveTypographySchema = z12.object({
1568
+ var heroTypographyLineHeightSchema = z14.enum(["tight", "snug", "normal", "relaxed"]);
1569
+ var heroResponsiveTypographySchema = z14.object({
973
1570
  headlineSize: heroTypographySizeSchema.optional(),
974
1571
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
975
1572
  subheadlineSize: heroTypographySizeSchema.optional(),
976
1573
  subheadlineLineHeight: heroTypographyLineHeightSchema.optional()
977
1574
  });
978
- var heroTypographySchema = z12.object({
1575
+ var heroTypographySchema = z14.object({
979
1576
  headlineSize: heroTypographySizeSchema.optional(),
980
1577
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
981
1578
  subheadlineSize: heroTypographySizeSchema.optional(),
@@ -984,24 +1581,24 @@ var heroTypographySchema = z12.object({
984
1581
  microHeadlineLineHeight: heroTypographyLineHeightSchema.optional(),
985
1582
  microSubheadlineSize: heroTypographySizeSchema.optional(),
986
1583
  microSubheadlineLineHeight: heroTypographyLineHeightSchema.optional(),
987
- responsive: z12.object({
1584
+ responsive: z14.object({
988
1585
  tablet: heroResponsiveTypographySchema.optional(),
989
1586
  mobile: heroResponsiveTypographySchema.optional()
990
1587
  }).optional()
991
1588
  });
992
- var heroSchema = z12.object({
1589
+ var heroSchema = z14.object({
993
1590
  typography: heroTypographySchema.optional()
994
1591
  }).optional();
995
- var gradientsSchema = z12.object({
996
- button: z12.string().min(1).nullable().optional(),
997
- hero: z12.string().min(1).nullable().optional(),
998
- background: z12.string().min(1).nullable().optional()
999
- });
1000
- var themeSchema = z12.object({
1001
- name: z12.string().min(1).max(30),
1002
- description: z12.string().min(1).max(400),
1003
- rationale: z12.string().min(1).max(400),
1004
- siteStyleId: z12.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
1592
+ var gradientsSchema = z14.object({
1593
+ button: z14.string().min(1).nullable().optional(),
1594
+ hero: z14.string().min(1).nullable().optional(),
1595
+ background: z14.string().min(1).nullable().optional()
1596
+ });
1597
+ var themeSchema = z14.object({
1598
+ name: z14.string().min(1).max(30),
1599
+ description: z14.string().min(1).max(400),
1600
+ rationale: z14.string().min(1).max(400),
1601
+ siteStyleId: z14.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
1005
1602
  axes: axesSchema,
1006
1603
  palette: paletteSchema,
1007
1604
  typography: typographySchema,
@@ -1028,16 +1625,16 @@ var themeSchema = z12.object({
1028
1625
  // Block-specific customization (Tier 3)
1029
1626
  // blockCustomVars: Per-block CSS variable overrides as bare values
1030
1627
  // Example: { "event-registration": { "--step-color": "#6d28d9" } }
1031
- blockCustomVars: z12.record(
1032
- z12.string(),
1628
+ blockCustomVars: z14.record(
1629
+ z14.string(),
1033
1630
  // block kind (matches data-block attribute)
1034
- z12.record(z12.string(), z12.string())
1631
+ z14.record(z14.string(), z14.string())
1035
1632
  // { '--var-name': 'value' }
1036
1633
  ).optional(),
1037
1634
  // Structured block-kind theme overrides (v1: typography prose-link style only)
1038
1635
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
1039
- blockOverrides: z12.record(
1040
- z12.string(),
1636
+ blockOverrides: z14.record(
1637
+ z14.string(),
1041
1638
  blockThemeOverrideSchema
1042
1639
  ).optional(),
1043
1640
  // Structured custom CSS rules
@@ -1073,11 +1670,11 @@ var themeSchema = z12.object({
1073
1670
  * }
1074
1671
  * ```
1075
1672
  */
1076
- styleGroups: z12.record(z12.string(), z12.array(z12.string())).optional()
1673
+ styleGroups: z14.record(z14.string(), z14.array(z14.string())).optional()
1077
1674
  });
1078
- var themesTurnSchema = z12.object({
1079
- message: z12.string().min(1),
1080
- themes: z12.array(themeSchema).length(3)
1675
+ var themesTurnSchema = z14.object({
1676
+ message: z14.string().min(1),
1677
+ themes: z14.array(themeSchema).length(3)
1081
1678
  });
1082
1679
 
1083
1680
  // src/theme/loader.ts