@nghitrum/dsforge 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3222 @@
1
+ import { z } from 'zod';
2
+
3
+ type RawValue = string | number;
4
+ /**
5
+ * TokenValue: either a raw value or a "{layer.key}" reference string.
6
+ * The token resolver validates and expands references at runtime.
7
+ */
8
+ type TokenValue = RawValue;
9
+ type GlobalTokens = Record<string, RawValue>;
10
+ type SemanticTokens = Record<string, TokenValue>;
11
+ type ComponentTokens = Record<string, TokenValue>;
12
+ interface TokenLayers {
13
+ global?: GlobalTokens;
14
+ semantic?: SemanticTokens;
15
+ component?: ComponentTokens;
16
+ }
17
+ interface ColorSurface {
18
+ default: TokenValue;
19
+ subtle?: TokenValue;
20
+ overlay?: TokenValue;
21
+ inverse?: TokenValue;
22
+ }
23
+ interface ColorBorder {
24
+ default: TokenValue;
25
+ strong?: TokenValue;
26
+ focus?: TokenValue;
27
+ subtle?: TokenValue;
28
+ }
29
+ interface ColorText {
30
+ primary: TokenValue;
31
+ secondary?: TokenValue;
32
+ disabled?: TokenValue;
33
+ inverse?: TokenValue;
34
+ onColor?: TokenValue;
35
+ }
36
+ interface StatusColorSet {
37
+ bg: TokenValue;
38
+ fg: TokenValue;
39
+ border?: TokenValue;
40
+ }
41
+ interface ColorStatus {
42
+ success?: StatusColorSet;
43
+ warning?: StatusColorSet;
44
+ danger?: StatusColorSet;
45
+ info?: StatusColorSet;
46
+ }
47
+ interface InteractiveStateSet {
48
+ rest: TokenValue;
49
+ hover: TokenValue;
50
+ active: TokenValue;
51
+ disabled: TokenValue;
52
+ selected?: TokenValue;
53
+ }
54
+ interface ColorInteractive {
55
+ primary?: InteractiveStateSet;
56
+ secondary?: InteractiveStateSet;
57
+ danger?: InteractiveStateSet;
58
+ }
59
+ interface ColorConfig {
60
+ surface?: ColorSurface;
61
+ border?: ColorBorder;
62
+ text?: ColorText;
63
+ status?: ColorStatus;
64
+ interactive?: ColorInteractive;
65
+ }
66
+ interface TypographyRole {
67
+ size: number;
68
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
69
+ lineHeight: number;
70
+ letterSpacing?: string | number;
71
+ fontFamily?: string;
72
+ }
73
+ interface TypographyConfig {
74
+ fontFamily: string;
75
+ /** Semantic roles — the public API for type usage */
76
+ roles?: {
77
+ display?: TypographyRole;
78
+ h1?: TypographyRole;
79
+ h2?: TypographyRole;
80
+ h3?: TypographyRole;
81
+ body?: TypographyRole;
82
+ small?: TypographyRole;
83
+ caption?: TypographyRole;
84
+ label?: TypographyRole;
85
+ code?: TypographyRole;
86
+ };
87
+ /** Raw numeric scale — kept for legacy; prefer roles */
88
+ scale?: number[];
89
+ fontWeights?: number[];
90
+ }
91
+ /** Named numeric scale: { "1": 4, "2": 8, ... } */
92
+ type SpacingScale = Record<string, number>;
93
+ /** Semantic spacing tokens that reference scale values */
94
+ type SpacingSemantic = Record<string, TokenValue>;
95
+ interface SpacingConfig {
96
+ /** The raw numeric multiplier grid (e.g., base-4) */
97
+ baseUnit?: number;
98
+ /** Pre-computed named scale derived from baseUnit */
99
+ scale?: SpacingScale;
100
+ /** Intent-named tokens: component-padding-md, layout-gap-sm, etc. */
101
+ semantic?: SpacingSemantic;
102
+ }
103
+ interface RadiusConfig {
104
+ none?: number;
105
+ sm?: number;
106
+ md?: number;
107
+ lg?: number;
108
+ xl?: number;
109
+ full?: number;
110
+ [key: string]: number | undefined;
111
+ }
112
+ /** Named shadow levels. Key is level name ("0"–"4" or "none"/"sm"/"lg"). */
113
+ type ElevationConfig = Record<string, string>;
114
+ interface MotionDuration {
115
+ instant?: number;
116
+ fast?: number;
117
+ normal?: number;
118
+ slow?: number;
119
+ deliberate?: number;
120
+ [key: string]: number | undefined;
121
+ }
122
+ interface MotionEasing {
123
+ standard?: string;
124
+ decelerate?: string;
125
+ accelerate?: string;
126
+ spring?: string;
127
+ linear?: string;
128
+ [key: string]: string | undefined;
129
+ }
130
+ interface MotionConfig {
131
+ duration?: MotionDuration;
132
+ easing?: MotionEasing;
133
+ }
134
+ interface FocusRing {
135
+ color: TokenValue;
136
+ width: string;
137
+ offset: string;
138
+ style?: "solid" | "dashed" | "dotted";
139
+ }
140
+ interface StatesConfig {
141
+ hoverOpacity?: number;
142
+ activeOpacity?: number;
143
+ disabledOpacity?: number;
144
+ focusRing?: FocusRing;
145
+ }
146
+ type Breakpoints = {
147
+ sm?: number;
148
+ md?: number;
149
+ lg?: number;
150
+ xl?: number;
151
+ "2xl"?: number;
152
+ [key: string]: number | undefined;
153
+ };
154
+ interface GridColumns {
155
+ sm?: number;
156
+ md?: number;
157
+ lg?: number;
158
+ xl?: number;
159
+ [key: string]: number | undefined;
160
+ }
161
+ interface GridConfig {
162
+ columns?: GridColumns;
163
+ gutter?: number;
164
+ margin?: number;
165
+ }
166
+ interface LayoutConfig {
167
+ breakpoints?: Breakpoints;
168
+ grid?: GridConfig;
169
+ container?: Record<string, number>;
170
+ }
171
+ /**
172
+ * A theme is a flat map of semantic token overrides.
173
+ * At runtime, these become CSS custom property overrides on :root[data-theme="..."].
174
+ */
175
+ type ThemeOverrides = Record<string, RawValue>;
176
+ type ThemesConfig = Record<string, ThemeOverrides>;
177
+ interface PhilosophyConfig {
178
+ /** Component density: affects padding/spacing defaults */
179
+ density?: "compact" | "comfortable" | "spacious";
180
+ /** Shadow approach */
181
+ elevation?: "minimal" | "moderate" | "expressive";
182
+ /** Motion preference */
183
+ motion?: "none" | "reduced" | "full";
184
+ }
185
+ interface CustomizationConfig {
186
+ /**
187
+ * Package name to extend. Merged before applying local overrides.
188
+ * e.g. "@myorg/base-design-system"
189
+ */
190
+ extends?: string | null;
191
+ /**
192
+ * Deep-merged token overrides on top of resolved base config.
193
+ * Keys use dot-path notation: "tokens.semantic.color-action"
194
+ */
195
+ overrides?: Record<string, RawValue>;
196
+ }
197
+ /**
198
+ * The set of supported adapter target identifiers.
199
+ * Kept in sync with SUPPORTED_TARGETS in src/schema/config.schema.ts.
200
+ */
201
+ type OutputTarget = "react";
202
+ interface OutputConfig {
203
+ /**
204
+ * The framework adapter to use when generating component files.
205
+ *
206
+ * @default "react"
207
+ *
208
+ * Supported values: "react"
209
+ * Future values: "vue", "svelte", "angular", "react-native"
210
+ */
211
+ target?: OutputTarget;
212
+ }
213
+ interface MetaConfig {
214
+ name: string;
215
+ version: string;
216
+ description?: string;
217
+ /** Preset profile applied at init time */
218
+ preset?: "compact" | "comfortable" | "spacious";
219
+ /** The npm scope for publishing, e.g. "@myorg" */
220
+ npmScope?: string;
221
+ }
222
+ interface DesignSystemConfig {
223
+ meta: MetaConfig;
224
+ tokens?: TokenLayers;
225
+ themes?: ThemesConfig;
226
+ color?: ColorConfig;
227
+ typography?: TypographyConfig;
228
+ spacing?: SpacingConfig;
229
+ radius?: RadiusConfig;
230
+ elevation?: ElevationConfig;
231
+ motion?: MotionConfig;
232
+ states?: StatesConfig;
233
+ layout?: LayoutConfig;
234
+ philosophy?: PhilosophyConfig;
235
+ customization?: CustomizationConfig;
236
+ /** Output adapter configuration. Omitting this field defaults to React. */
237
+ output?: OutputConfig;
238
+ }
239
+ interface ComponentRule {
240
+ /** Allowed variant prop values */
241
+ allowedVariants?: string[];
242
+ /** Props that must always be provided */
243
+ requiredProps?: string[];
244
+ /** Max CSS width value */
245
+ maxWidth?: string;
246
+ /** Allowed borderRadius values (must exist in radius config) */
247
+ allowedRadius?: string[];
248
+ /** Allowed shadow levels (must exist in elevation config) */
249
+ allowedShadows?: string[];
250
+ /** Allowed color palette tokens for this component */
251
+ colorPalette?: string[];
252
+ /** Component-level token overrides */
253
+ tokens?: Record<string, TokenValue>;
254
+ /** Accessibility requirements */
255
+ a11y?: {
256
+ keyboard?: boolean;
257
+ focusRing?: boolean;
258
+ ariaLabel?: "required" | "optional" | "forbidden";
259
+ role?: string;
260
+ };
261
+ }
262
+ type RulesConfig = Record<string, ComponentRule>;
263
+ /** A fully resolved token map: all {refs} replaced with concrete values */
264
+ type ResolvedTokenMap = Record<string, string>;
265
+ interface ResolvedConfig {
266
+ /** The original config before resolution */
267
+ source: DesignSystemConfig;
268
+ /** All tokens resolved to concrete values, keyed by "layer.name" */
269
+ tokens: ResolvedTokenMap;
270
+ /** CSS custom property declarations per theme */
271
+ themes: Record<string, Record<string, string>>;
272
+ }
273
+ declare class TokenResolutionError extends Error {
274
+ readonly path: string;
275
+ readonly cause?: Error | undefined;
276
+ constructor(message: string, path: string, cause?: Error | undefined);
277
+ }
278
+ declare class CircularReferenceError extends TokenResolutionError {
279
+ readonly cycle: string[];
280
+ constructor(cycle: string[]);
281
+ }
282
+ declare class UnresolvedReferenceError extends TokenResolutionError {
283
+ readonly fromToken: string;
284
+ constructor(refPath: string, fromToken: string);
285
+ }
286
+ type IssueSeverity = "error" | "warning" | "info";
287
+ interface ValidationIssue {
288
+ severity: IssueSeverity;
289
+ code: string;
290
+ message: string;
291
+ path?: string;
292
+ suggestion?: string;
293
+ }
294
+ interface ValidationResult {
295
+ valid: boolean;
296
+ score: number;
297
+ maxScore: number;
298
+ issues: ValidationIssue[];
299
+ }
300
+
301
+ interface ResolutionResult {
302
+ /** Fully resolved token map: "layer.key" → concrete value */
303
+ tokens: ResolvedTokenMap;
304
+ /** Any non-fatal warnings encountered during resolution */
305
+ warnings: ResolutionWarning[];
306
+ }
307
+ interface ResolutionWarning {
308
+ type: "unresolved_ref" | "unexpected_type";
309
+ path: string;
310
+ message: string;
311
+ }
312
+ declare class TokenResolver {
313
+ private readonly config;
314
+ /** LRU-style cache: refPath → resolved concrete string */
315
+ private readonly cache;
316
+ /** Tracks the current resolution chain for cycle detection */
317
+ private readonly stack;
318
+ private readonly warnings;
319
+ constructor(config: DesignSystemConfig);
320
+ /**
321
+ * Resolve all tokens in the config.
322
+ * Returns a flat map of every token path to its concrete value.
323
+ *
324
+ * Resolution order ensures correct layering:
325
+ * global → semantic → component
326
+ */
327
+ resolve(): ResolutionResult;
328
+ /**
329
+ * Resolve a single value in isolation.
330
+ * Useful for one-off resolution outside the full config context.
331
+ */
332
+ resolveOneValue(value: string, contextPath?: string): string;
333
+ /**
334
+ * Resolve all {ref} patterns within a value string.
335
+ *
336
+ * Two modes:
337
+ * - SOLE reference: "{global.blue-600}" → return the resolved value directly
338
+ * (preserves numeric types when the referenced value is a number)
339
+ * - INTERPOLATED: "0 1px {shadow.color}" → replace refs inline, return string
340
+ */
341
+ private resolveValue;
342
+ /**
343
+ * Resolve a single reference path to its concrete value.
344
+ * Implements:
345
+ * - Cache lookup (avoid redundant resolution)
346
+ * - Cycle detection via the resolution stack
347
+ * - Recursive resolution (a ref can point to another ref)
348
+ */
349
+ private resolveRef;
350
+ private handleError;
351
+ }
352
+ /**
353
+ * Resolve all tokens in a DesignSystemConfig.
354
+ *
355
+ * @example
356
+ * const { tokens, warnings } = resolveTokens(config);
357
+ * console.log(tokens["semantic.color-action"]); // "#2563eb"
358
+ */
359
+ declare function resolveTokens(config: DesignSystemConfig): ResolutionResult;
360
+ /**
361
+ * Build CSS custom property output for a given theme.
362
+ *
363
+ * @example
364
+ * buildThemeCss(config, "dark")
365
+ * // `:root[data-theme="dark"] { --color-action: #60a5fa; ... }`
366
+ */
367
+ declare function buildThemeCss(config: DesignSystemConfig, themeName: string): string;
368
+ /**
369
+ * Extract all {ref} paths from a value string.
370
+ * Useful for static analysis and validation.
371
+ *
372
+ * @example
373
+ * extractRefs("0 1px {shadow.color} {radius.md}")
374
+ * // → ["shadow.color", "radius.md"]
375
+ */
376
+ declare function extractRefs(value: string): string[];
377
+ /**
378
+ * Check whether a value contains any unresolved {ref} patterns.
379
+ */
380
+ declare function hasRefs(value: string): boolean;
381
+
382
+ declare function validateConfig(config: DesignSystemConfig, rules: RulesConfig): ValidationResult;
383
+
384
+ type Preset = "compact" | "comfortable" | "spacious";
385
+ declare function buildInitialConfig(name: string, preset?: Preset): DesignSystemConfig;
386
+ declare function buildInitialRules(): RulesConfig;
387
+
388
+ /**
389
+ * CSS custom property emitter.
390
+ *
391
+ * Generates one .css file per theme, plus a base.css with all resolved tokens.
392
+ * Consumers import the appropriate theme file to activate that theme's tokens.
393
+ *
394
+ * Output format:
395
+ * :root[data-theme="light"] { --color-action: #2563eb; ... }
396
+ */
397
+
398
+ /**
399
+ * Emit base.css — all resolved semantic + component tokens as :root vars.
400
+ * This file is always safe to import regardless of theme.
401
+ */
402
+ declare function emitBaseCss(config: DesignSystemConfig, resolution: ResolutionResult): string;
403
+ /**
404
+ * Emit a theme-specific CSS file.
405
+ * The generated selector is :root[data-theme="themeName"].
406
+ */
407
+ declare function emitThemeCss(themeName: string, themeOverrides: Record<string, string | number>, config: DesignSystemConfig): string;
408
+ interface CssFile {
409
+ filename: string;
410
+ content: string;
411
+ }
412
+ /**
413
+ * Generate all CSS files from a resolved config.
414
+ * Returns an array of { filename, content } pairs ready to write to disk.
415
+ */
416
+ declare function generateCssFiles(config: DesignSystemConfig, resolution: ResolutionResult): CssFile[];
417
+
418
+ /**
419
+ * JS + TypeScript token emitter.
420
+ *
421
+ * Generates:
422
+ * tokens.js — CommonJS-compatible object literal (also valid ESM)
423
+ * tokens.d.ts — TypeScript type declarations
424
+ *
425
+ * Consumers can import individual tokens by name for use in
426
+ * CSS-in-JS, React Native, or anywhere that needs raw values at runtime.
427
+ */
428
+
429
+ /**
430
+ * Emit tokens.js — a flat ESM export of all resolved tokens.
431
+ */
432
+ declare function emitJsTokens(config: DesignSystemConfig, resolution: ResolutionResult): string;
433
+ /**
434
+ * Emit tailwind.config.js — a Tailwind CSS theme extension.
435
+ * Consumers spread this into their tailwind.config.js `theme.extend`.
436
+ */
437
+ declare function emitTailwindConfig(config: DesignSystemConfig): string;
438
+
439
+ /**
440
+ * Button component generator.
441
+ *
442
+ * Generates a fully typed, accessible React Button component
443
+ * using CSS custom properties for all visual tokens.
444
+ * Variant types and governance rules are derived from design-system.rules.json.
445
+ */
446
+
447
+ declare function generateButton(config: DesignSystemConfig, rule: ComponentRule | undefined): string;
448
+
449
+ /**
450
+ * Input component generator.
451
+ * Generates a typed, accessible React Input with label, error, and helper text slots.
452
+ */
453
+
454
+ declare function generateInput(config: DesignSystemConfig, rule: ComponentRule | undefined): string;
455
+
456
+ /**
457
+ * Card component generator.
458
+ * Generates a composable Card with Header, Body, and Footer slots.
459
+ */
460
+
461
+ declare function generateCard(config: DesignSystemConfig, rule: ComponentRule | undefined): string;
462
+
463
+ /**
464
+ * ThemeProvider + component barrel index generator.
465
+ *
466
+ * Generates:
467
+ * ThemeProvider.tsx — React context-based theme switcher
468
+ * index.ts — barrel export of all components
469
+ */
470
+
471
+ declare function generateThemeProvider(config: DesignSystemConfig): string;
472
+ declare function generateComponentIndex(config: DesignSystemConfig, componentNames: string[]): string;
473
+
474
+ /**
475
+ * AI-consumable metadata generator.
476
+ *
477
+ * Outputs one JSON file per component + an index.json registry.
478
+ * These files are read by AI coding assistants (Copilot, Cursor, Claude)
479
+ * to understand component contracts before generating UI code.
480
+ *
481
+ * Format is designed to be both human-readable and machine-parseable.
482
+ */
483
+
484
+ interface ComponentMetadata {
485
+ component: string;
486
+ version: string;
487
+ description: string;
488
+ role: string;
489
+ hierarchyLevel: "primary" | "secondary" | "tertiary" | "utility";
490
+ interactionModel: "synchronous" | "asynchronous" | "none";
491
+ layoutImpact: "inline" | "block" | "overlay" | "layout";
492
+ destructive: boolean;
493
+ allowedVariants: string[];
494
+ defaultVariant: string;
495
+ sizes?: string[];
496
+ requiredProps: string[];
497
+ optionalProps: string[];
498
+ tokens: Record<string, string>;
499
+ accessibilityContract: {
500
+ keyboard: boolean;
501
+ focusRing: boolean;
502
+ ariaLabel: "required" | "optional" | "forbidden";
503
+ role?: string;
504
+ announcements?: string[];
505
+ };
506
+ governanceRules: {
507
+ maxWidth?: string;
508
+ allowedRadius?: string[];
509
+ allowedShadows?: string[];
510
+ colorPalette?: string[];
511
+ };
512
+ }
513
+ interface MetadataFile {
514
+ filename: string;
515
+ content: string;
516
+ }
517
+ /**
518
+ * Generate all metadata JSON files.
519
+ * Returns { filename, content } pairs ready to write to disk.
520
+ */
521
+ declare function generateMetadata(config: DesignSystemConfig, rules: RulesConfig, tokenCount: number): MetadataFile[];
522
+
523
+ /**
524
+ * MDX documentation generator.
525
+ *
526
+ * Generates Storybook-ready MDX stories for each component.
527
+ * Stories demonstrate all variants, sizes, and states.
528
+ * Content is derived from metadata so docs always stay in sync.
529
+ */
530
+
531
+ interface DocFile {
532
+ filename: string;
533
+ content: string;
534
+ }
535
+ /**
536
+ * Generate all MDX documentation files.
537
+ */
538
+ declare function generateDocs(config: DesignSystemConfig, rules: RulesConfig, metadataMap: Record<string, ComponentMetadata>): DocFile[];
539
+
540
+ /**
541
+ * Package emitter.
542
+ *
543
+ * Generates the package.json and README.md for the published npm package.
544
+ * The published package is what consumers install — it's separate from the
545
+ * dsforge tool itself.
546
+ */
547
+
548
+ declare function generatePackageJson(config: DesignSystemConfig, componentNames: string[]): string;
549
+ declare function generateTsConfig(): string;
550
+ declare function generateReadme(config: DesignSystemConfig, componentNames: string[]): string;
551
+ declare function generateChangelog(config: DesignSystemConfig): string;
552
+
553
+ /**
554
+ * Calculate the contrast ratio between two hex color strings.
555
+ * Returns null if either color cannot be parsed.
556
+ */
557
+ declare function hexContrastRatio(foreground: string, background: string): number | null;
558
+ type WcagLevel = "AA" | "AAA";
559
+ type TextSize = "normal" | "large";
560
+ interface ContrastCheckResult {
561
+ ratio: number;
562
+ passes: boolean;
563
+ level: WcagLevel;
564
+ textSize: TextSize;
565
+ required: number;
566
+ /** Rounded to 2dp for display */
567
+ ratioDisplay: string;
568
+ }
569
+ /**
570
+ * Check whether a foreground/background color pair meets the WCAG threshold.
571
+ */
572
+ declare function checkContrast(foreground: string, background: string, level?: WcagLevel, textSize?: TextSize): ContrastCheckResult | null;
573
+ /**
574
+ * Given a hex color that fails contrast against a background,
575
+ * suggest a darker (or lighter) variant that passes AA.
576
+ *
577
+ * Strategy: darken/lighten in HSL space by small steps until threshold met.
578
+ * Returns the adjusted hex, or null if no adjustment found within 20 steps.
579
+ */
580
+ declare function suggestContrastFix(foreground: string, background: string, level?: WcagLevel, textSize?: TextSize): string | null;
581
+ /**
582
+ * Check whether a string looks like a parseable hex color.
583
+ */
584
+ declare function isHexColor(value: string): boolean;
585
+
586
+ /**
587
+ * src/adapters/types.ts
588
+ *
589
+ * The FrameworkAdapter contract.
590
+ *
591
+ * Every framework adapter — React (current), Vue, Angular, Svelte, React Native,
592
+ * or any future enterprise custom target — must satisfy this interface.
593
+ *
594
+ * Why this exists
595
+ * ───────────────
596
+ * The generate pipeline in src/cli/commands/generate.ts currently hard-codes
597
+ * calls to React-specific generators (generateButton, generateInput, etc.).
598
+ * This interface extracts the shape of those responsibilities so the pipeline
599
+ * can call adapter.generateComponent("Button", ...) instead, and each new
600
+ * framework becomes a single file that satisfies this contract.
601
+ *
602
+ * Scope: what lives in the adapter layer
603
+ * ───────────────────────────────────────
604
+ * Framework-specific outputs — things that change when you target Vue vs React:
605
+ * • Component source files (TSX → SFC .vue → Angular @Component)
606
+ * • Theme provider (React context vs Vue provide/inject vs Angular service)
607
+ * • Barrel index (re-export syntax differs across module formats)
608
+ * • Token files (CSS vars are universal; React Native needs a JS-only object)
609
+ * • Component documentation (MDX imports React; Vue Storybook is different)
610
+ * • Package manifest (peerDependencies, engines, and exports map differ)
611
+ *
612
+ * Framework-agnostic outputs — NOT in the adapter (stay in the core pipeline):
613
+ * • Token resolution (token-resolver.ts)
614
+ * • Validation and WCAG checks
615
+ * • AI metadata JSON (machine-readable; framework-neutral)
616
+ * • Diff engine and changelog
617
+ */
618
+
619
+ /**
620
+ * A single generated file, ready to be written to disk.
621
+ *
622
+ * Consolidates the ad-hoc { filename, content } shapes that appear throughout
623
+ * the codebase as CssFile, MetadataFile, DocFile, etc.
624
+ *
625
+ * `filename` is always relative to the adapter's output sub-directory.
626
+ * The pipeline is responsible for constructing the full absolute path.
627
+ *
628
+ * @example
629
+ * { filename: "Button.tsx", content: "import React from 'react'; ..." }
630
+ * { filename: "base.css", content: ":root { --color-action: #2563eb }" }
631
+ * { filename: "button.mdx", content: "---\ntitle: Button\n---\n..." }
632
+ */
633
+ interface GeneratedFile {
634
+ filename: string;
635
+ content: string;
636
+ }
637
+ /**
638
+ * The contract every framework adapter must satisfy.
639
+ *
640
+ * The generate pipeline calls these methods in order:
641
+ * 1. generateTokenFiles — tokens/
642
+ * 2. generateComponent — src/<Name>.<ext> (once per component)
643
+ * 3. generateThemeProvider — src/ThemeProvider.<ext>
644
+ * 4. generateComponentIndex — src/index.<ext>
645
+ * 5. generateDocs — docs/
646
+ * 6. generatePackageManifest — package.json
647
+ *
648
+ * Each method must be pure: given the same inputs it must produce the same
649
+ * outputs. No side effects, no disk I/O.
650
+ */
651
+ interface FrameworkAdapter {
652
+ /**
653
+ * Stable machine identifier for this adapter.
654
+ * Used in config (output.target), log messages, and test fixtures.
655
+ *
656
+ * Convention: lowercase, no spaces.
657
+ * @example "react" | "vue" | "angular" | "svelte" | "react-native"
658
+ */
659
+ readonly name: string;
660
+ /**
661
+ * File extension applied to every generated component file.
662
+ *
663
+ * The generate pipeline appends this to the component name to form the
664
+ * output filename, e.g. `Button` + `.tsx` → `Button.tsx`.
665
+ *
666
+ * @example "tsx" | "vue" | "component.ts" | "ts"
667
+ */
668
+ readonly componentExtension: string;
669
+ /**
670
+ * Generate the source file for a single named component.
671
+ *
672
+ * The pipeline iterates over all component names defined in the rules config
673
+ * and calls this method once per component. Unknown component names (ones
674
+ * without a specific implementation in the adapter) should fall back to a
675
+ * minimal compliant stub rather than throwing, so the pipeline stays
676
+ * resilient when new component names are added to rules.json.
677
+ *
678
+ * Contract:
679
+ * • `result.filename` must equal `<PascalCaseName>.<componentExtension>`
680
+ * • The generated file must compile cleanly for the target framework
681
+ * • All visual values must be sourced from CSS custom properties or the
682
+ * resolved token map — no hard-coded color/spacing literals
683
+ * • The component must satisfy the accessibility requirements in `rule.a11y`
684
+ *
685
+ * @param componentName PascalCase component name, e.g. "Button", "Input"
686
+ * @param config The full resolved design system configuration
687
+ * @param rule Governance rules for this component, or undefined if
688
+ * no rule was defined (adapter should use safe defaults)
689
+ */
690
+ generateComponent(componentName: string, config: DesignSystemConfig, rule: ComponentRule | undefined): GeneratedFile;
691
+ /**
692
+ * Generate the theme provider for this framework.
693
+ *
694
+ * The theme provider is responsible for:
695
+ * • Accepting a theme name at runtime (e.g. "light" | "dark")
696
+ * • Applying the correct CSS custom property overrides to a root element
697
+ * (or equivalent mechanism in the target framework)
698
+ * • Exposing a hook/composable/service for consumers to read + change the
699
+ * active theme
700
+ *
701
+ * Contract:
702
+ * • `result.filename` must equal `ThemeProvider.<componentExtension>`
703
+ * • Theme names must be derived from `Object.keys(config.themes ?? {})`
704
+ * • The default theme should be "light" if present, otherwise the first key
705
+ *
706
+ * @param config Full design system configuration, including themes map
707
+ */
708
+ generateThemeProvider(config: DesignSystemConfig): GeneratedFile;
709
+ /**
710
+ * Generate the barrel index that re-exports all generated components.
711
+ *
712
+ * Consumers import from the package root via this file:
713
+ * `import { Button, ThemeProvider } from "@myorg/my-ds"`
714
+ *
715
+ * Contract:
716
+ * • `result.filename` must equal `index.<componentExtension>`
717
+ * (or `index.ts` for frameworks that separate type and runtime exports)
718
+ * • All names in `componentNames` plus ThemeProvider must be re-exported
719
+ * • The file must not contain any implementation logic — only re-exports
720
+ *
721
+ * @param config Full design system configuration
722
+ * @param componentNames PascalCase component names that were successfully
723
+ * generated (may be a subset of rules keys if any
724
+ * generation step failed)
725
+ */
726
+ generateComponentIndex(config: DesignSystemConfig, componentNames: string[]): GeneratedFile;
727
+ /**
728
+ * Generate all token output files for this framework.
729
+ *
730
+ * The default React adapter produces:
731
+ * • tokens/base.css — all structural tokens as CSS custom properties
732
+ * • tokens/light.css — light theme overrides
733
+ * • tokens/dark.css — dark theme overrides
734
+ * • tokens/tokens.js — ESM export of all resolved tokens as JS consts
735
+ * • tokens/tailwind.js — Tailwind CSS theme extension object
736
+ *
737
+ * Other adapters may produce different formats. React Native would emit a
738
+ * tokens/tokens.ts with numeric values (no CSS vars); Angular might produce
739
+ * a SCSS variables file in addition to CSS custom properties.
740
+ *
741
+ * Contract:
742
+ * • All returned filenames must be relative to the `tokens/` subdirectory
743
+ * • At minimum, one file must carry the full resolved semantic token set
744
+ * in a format the adapter's components can consume at runtime
745
+ * • The token values must match `resolution.tokens` exactly — no
746
+ * re-resolution or value transformation in the adapter
747
+ *
748
+ * @param config Full design system configuration
749
+ * @param resolution Pre-resolved token map from the core token resolver
750
+ */
751
+ generateTokenFiles(config: DesignSystemConfig, resolution: ResolutionResult): GeneratedFile[];
752
+ /**
753
+ * Generate component documentation files for this framework.
754
+ *
755
+ * The React adapter produces MDX files with live React component previews.
756
+ * A Vue adapter would produce MDX with `<script setup>` examples. Angular
757
+ * might produce plain Markdown with Angular template snippets.
758
+ *
759
+ * Contract:
760
+ * • Must always produce at least one `index.<ext>` overview file
761
+ * • Per-component docs must be named `<componentName>.<ext>` matching the
762
+ * component names in `rules`
763
+ * • Code examples in docs must use the correct framework import syntax,
764
+ * pointing to the published package name from `config.meta`
765
+ * • Docs must be kept in sync with `metadataMap` — props, variants, and
766
+ * accessibility requirements must reflect the metadata, not be hardcoded
767
+ *
768
+ * @param config Full design system configuration
769
+ * @param rules Governance rules (source of truth for variants + props)
770
+ * @param metadataMap Pre-generated AI metadata per component (use as the
771
+ * single source of truth for component capabilities)
772
+ */
773
+ generateDocs(config: DesignSystemConfig, rules: RulesConfig, metadataMap: Record<string, ComponentMetadata>): GeneratedFile[];
774
+ /**
775
+ * Generate the package.json for the published design system package.
776
+ *
777
+ * The published package is what downstream consumers install — it is
778
+ * distinct from the dsforge tool itself.
779
+ *
780
+ * Framework differences here are significant:
781
+ * • React: peerDependencies: { react: ">=17", react-dom: ">=17" }
782
+ * • Vue: peerDependencies: { vue: ">=3" }
783
+ * • Angular: peerDependencies: { @angular/core: ">=15" }
784
+ * • React Native: peerDependencies: { react-native: ">=0.70" }
785
+ * • Svelte: peerDependencies: { svelte: ">=3" }
786
+ *
787
+ * The `exports` map should expose the correct entry points for the framework
788
+ * (e.g. Vue SFC consumers need `.vue` source files, not pre-compiled JS).
789
+ *
790
+ * Contract:
791
+ * • `result.filename` must equal `package.json`
792
+ * • `result.content` must be valid JSON parseable by `JSON.parse`
793
+ * • `name` field must be `${config.meta.npmScope}/${config.meta.name}`
794
+ * • `version` field must equal `config.meta.version`
795
+ *
796
+ * @param config Full design system configuration
797
+ * @param componentNames Names of all successfully generated components
798
+ */
799
+ generatePackageManifest(config: DesignSystemConfig, componentNames: string[]): GeneratedFile;
800
+ }
801
+ /**
802
+ * A lookup map of adapter name → adapter instance.
803
+ *
804
+ * The generate pipeline resolves the active adapter from this map using
805
+ * `config.output?.target ?? "react"` once Task 3 adds that config field.
806
+ *
807
+ * @example
808
+ * const registry: AdapterRegistry = {
809
+ * react: new ReactAdapter(),
810
+ * vue: new VueAdapter(),
811
+ * };
812
+ * const adapter = registry[config.output?.target ?? "react"];
813
+ */
814
+ type AdapterRegistry = Record<string, FrameworkAdapter>;
815
+
816
+ declare const TokenLayersSchema: z.ZodObject<{
817
+ global: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
818
+ semantic: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
819
+ component: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
820
+ }, "strip", z.ZodTypeAny, {
821
+ global?: Record<string, string | number> | undefined;
822
+ semantic?: Record<string, string | number> | undefined;
823
+ component?: Record<string, string | number> | undefined;
824
+ }, {
825
+ global?: Record<string, string | number> | undefined;
826
+ semantic?: Record<string, string | number> | undefined;
827
+ component?: Record<string, string | number> | undefined;
828
+ }>;
829
+ declare const ColorConfigSchema: z.ZodObject<{
830
+ surface: z.ZodOptional<z.ZodObject<{
831
+ default: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
832
+ subtle: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
833
+ overlay: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
834
+ inverse: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
835
+ }, "strip", z.ZodTypeAny, {
836
+ default: string | number;
837
+ subtle?: string | number | undefined;
838
+ overlay?: string | number | undefined;
839
+ inverse?: string | number | undefined;
840
+ }, {
841
+ default: string | number;
842
+ subtle?: string | number | undefined;
843
+ overlay?: string | number | undefined;
844
+ inverse?: string | number | undefined;
845
+ }>>;
846
+ border: z.ZodOptional<z.ZodObject<{
847
+ default: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
848
+ strong: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
849
+ focus: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
850
+ subtle: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
851
+ }, "strip", z.ZodTypeAny, {
852
+ default: string | number;
853
+ subtle?: string | number | undefined;
854
+ strong?: string | number | undefined;
855
+ focus?: string | number | undefined;
856
+ }, {
857
+ default: string | number;
858
+ subtle?: string | number | undefined;
859
+ strong?: string | number | undefined;
860
+ focus?: string | number | undefined;
861
+ }>>;
862
+ text: z.ZodOptional<z.ZodObject<{
863
+ primary: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
864
+ secondary: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
865
+ disabled: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
866
+ inverse: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
867
+ onColor: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
868
+ }, "strip", z.ZodTypeAny, {
869
+ primary: string | number;
870
+ inverse?: string | number | undefined;
871
+ secondary?: string | number | undefined;
872
+ disabled?: string | number | undefined;
873
+ onColor?: string | number | undefined;
874
+ }, {
875
+ primary: string | number;
876
+ inverse?: string | number | undefined;
877
+ secondary?: string | number | undefined;
878
+ disabled?: string | number | undefined;
879
+ onColor?: string | number | undefined;
880
+ }>>;
881
+ status: z.ZodOptional<z.ZodObject<{
882
+ success: z.ZodOptional<z.ZodObject<{
883
+ bg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
884
+ fg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
885
+ border: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
886
+ }, "strip", z.ZodTypeAny, {
887
+ bg: string | number;
888
+ fg: string | number;
889
+ border?: string | number | undefined;
890
+ }, {
891
+ bg: string | number;
892
+ fg: string | number;
893
+ border?: string | number | undefined;
894
+ }>>;
895
+ warning: z.ZodOptional<z.ZodObject<{
896
+ bg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
897
+ fg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
898
+ border: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
899
+ }, "strip", z.ZodTypeAny, {
900
+ bg: string | number;
901
+ fg: string | number;
902
+ border?: string | number | undefined;
903
+ }, {
904
+ bg: string | number;
905
+ fg: string | number;
906
+ border?: string | number | undefined;
907
+ }>>;
908
+ danger: z.ZodOptional<z.ZodObject<{
909
+ bg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
910
+ fg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
911
+ border: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
912
+ }, "strip", z.ZodTypeAny, {
913
+ bg: string | number;
914
+ fg: string | number;
915
+ border?: string | number | undefined;
916
+ }, {
917
+ bg: string | number;
918
+ fg: string | number;
919
+ border?: string | number | undefined;
920
+ }>>;
921
+ info: z.ZodOptional<z.ZodObject<{
922
+ bg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
923
+ fg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
924
+ border: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
925
+ }, "strip", z.ZodTypeAny, {
926
+ bg: string | number;
927
+ fg: string | number;
928
+ border?: string | number | undefined;
929
+ }, {
930
+ bg: string | number;
931
+ fg: string | number;
932
+ border?: string | number | undefined;
933
+ }>>;
934
+ }, "strip", z.ZodTypeAny, {
935
+ warning?: {
936
+ bg: string | number;
937
+ fg: string | number;
938
+ border?: string | number | undefined;
939
+ } | undefined;
940
+ info?: {
941
+ bg: string | number;
942
+ fg: string | number;
943
+ border?: string | number | undefined;
944
+ } | undefined;
945
+ success?: {
946
+ bg: string | number;
947
+ fg: string | number;
948
+ border?: string | number | undefined;
949
+ } | undefined;
950
+ danger?: {
951
+ bg: string | number;
952
+ fg: string | number;
953
+ border?: string | number | undefined;
954
+ } | undefined;
955
+ }, {
956
+ warning?: {
957
+ bg: string | number;
958
+ fg: string | number;
959
+ border?: string | number | undefined;
960
+ } | undefined;
961
+ info?: {
962
+ bg: string | number;
963
+ fg: string | number;
964
+ border?: string | number | undefined;
965
+ } | undefined;
966
+ success?: {
967
+ bg: string | number;
968
+ fg: string | number;
969
+ border?: string | number | undefined;
970
+ } | undefined;
971
+ danger?: {
972
+ bg: string | number;
973
+ fg: string | number;
974
+ border?: string | number | undefined;
975
+ } | undefined;
976
+ }>>;
977
+ interactive: z.ZodOptional<z.ZodObject<{
978
+ primary: z.ZodOptional<z.ZodObject<{
979
+ rest: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
980
+ hover: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
981
+ active: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
982
+ disabled: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
983
+ selected: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
984
+ }, "strip", z.ZodTypeAny, {
985
+ disabled: string | number;
986
+ rest: string | number;
987
+ hover: string | number;
988
+ active: string | number;
989
+ selected?: string | number | undefined;
990
+ }, {
991
+ disabled: string | number;
992
+ rest: string | number;
993
+ hover: string | number;
994
+ active: string | number;
995
+ selected?: string | number | undefined;
996
+ }>>;
997
+ secondary: z.ZodOptional<z.ZodObject<{
998
+ rest: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
999
+ hover: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1000
+ active: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1001
+ disabled: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1002
+ selected: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1003
+ }, "strip", z.ZodTypeAny, {
1004
+ disabled: string | number;
1005
+ rest: string | number;
1006
+ hover: string | number;
1007
+ active: string | number;
1008
+ selected?: string | number | undefined;
1009
+ }, {
1010
+ disabled: string | number;
1011
+ rest: string | number;
1012
+ hover: string | number;
1013
+ active: string | number;
1014
+ selected?: string | number | undefined;
1015
+ }>>;
1016
+ danger: z.ZodOptional<z.ZodObject<{
1017
+ rest: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1018
+ hover: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1019
+ active: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1020
+ disabled: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1021
+ selected: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1022
+ }, "strip", z.ZodTypeAny, {
1023
+ disabled: string | number;
1024
+ rest: string | number;
1025
+ hover: string | number;
1026
+ active: string | number;
1027
+ selected?: string | number | undefined;
1028
+ }, {
1029
+ disabled: string | number;
1030
+ rest: string | number;
1031
+ hover: string | number;
1032
+ active: string | number;
1033
+ selected?: string | number | undefined;
1034
+ }>>;
1035
+ }, "strip", z.ZodTypeAny, {
1036
+ primary?: {
1037
+ disabled: string | number;
1038
+ rest: string | number;
1039
+ hover: string | number;
1040
+ active: string | number;
1041
+ selected?: string | number | undefined;
1042
+ } | undefined;
1043
+ secondary?: {
1044
+ disabled: string | number;
1045
+ rest: string | number;
1046
+ hover: string | number;
1047
+ active: string | number;
1048
+ selected?: string | number | undefined;
1049
+ } | undefined;
1050
+ danger?: {
1051
+ disabled: string | number;
1052
+ rest: string | number;
1053
+ hover: string | number;
1054
+ active: string | number;
1055
+ selected?: string | number | undefined;
1056
+ } | undefined;
1057
+ }, {
1058
+ primary?: {
1059
+ disabled: string | number;
1060
+ rest: string | number;
1061
+ hover: string | number;
1062
+ active: string | number;
1063
+ selected?: string | number | undefined;
1064
+ } | undefined;
1065
+ secondary?: {
1066
+ disabled: string | number;
1067
+ rest: string | number;
1068
+ hover: string | number;
1069
+ active: string | number;
1070
+ selected?: string | number | undefined;
1071
+ } | undefined;
1072
+ danger?: {
1073
+ disabled: string | number;
1074
+ rest: string | number;
1075
+ hover: string | number;
1076
+ active: string | number;
1077
+ selected?: string | number | undefined;
1078
+ } | undefined;
1079
+ }>>;
1080
+ }, "strip", z.ZodTypeAny, {
1081
+ status?: {
1082
+ warning?: {
1083
+ bg: string | number;
1084
+ fg: string | number;
1085
+ border?: string | number | undefined;
1086
+ } | undefined;
1087
+ info?: {
1088
+ bg: string | number;
1089
+ fg: string | number;
1090
+ border?: string | number | undefined;
1091
+ } | undefined;
1092
+ success?: {
1093
+ bg: string | number;
1094
+ fg: string | number;
1095
+ border?: string | number | undefined;
1096
+ } | undefined;
1097
+ danger?: {
1098
+ bg: string | number;
1099
+ fg: string | number;
1100
+ border?: string | number | undefined;
1101
+ } | undefined;
1102
+ } | undefined;
1103
+ border?: {
1104
+ default: string | number;
1105
+ subtle?: string | number | undefined;
1106
+ strong?: string | number | undefined;
1107
+ focus?: string | number | undefined;
1108
+ } | undefined;
1109
+ surface?: {
1110
+ default: string | number;
1111
+ subtle?: string | number | undefined;
1112
+ overlay?: string | number | undefined;
1113
+ inverse?: string | number | undefined;
1114
+ } | undefined;
1115
+ text?: {
1116
+ primary: string | number;
1117
+ inverse?: string | number | undefined;
1118
+ secondary?: string | number | undefined;
1119
+ disabled?: string | number | undefined;
1120
+ onColor?: string | number | undefined;
1121
+ } | undefined;
1122
+ interactive?: {
1123
+ primary?: {
1124
+ disabled: string | number;
1125
+ rest: string | number;
1126
+ hover: string | number;
1127
+ active: string | number;
1128
+ selected?: string | number | undefined;
1129
+ } | undefined;
1130
+ secondary?: {
1131
+ disabled: string | number;
1132
+ rest: string | number;
1133
+ hover: string | number;
1134
+ active: string | number;
1135
+ selected?: string | number | undefined;
1136
+ } | undefined;
1137
+ danger?: {
1138
+ disabled: string | number;
1139
+ rest: string | number;
1140
+ hover: string | number;
1141
+ active: string | number;
1142
+ selected?: string | number | undefined;
1143
+ } | undefined;
1144
+ } | undefined;
1145
+ }, {
1146
+ status?: {
1147
+ warning?: {
1148
+ bg: string | number;
1149
+ fg: string | number;
1150
+ border?: string | number | undefined;
1151
+ } | undefined;
1152
+ info?: {
1153
+ bg: string | number;
1154
+ fg: string | number;
1155
+ border?: string | number | undefined;
1156
+ } | undefined;
1157
+ success?: {
1158
+ bg: string | number;
1159
+ fg: string | number;
1160
+ border?: string | number | undefined;
1161
+ } | undefined;
1162
+ danger?: {
1163
+ bg: string | number;
1164
+ fg: string | number;
1165
+ border?: string | number | undefined;
1166
+ } | undefined;
1167
+ } | undefined;
1168
+ border?: {
1169
+ default: string | number;
1170
+ subtle?: string | number | undefined;
1171
+ strong?: string | number | undefined;
1172
+ focus?: string | number | undefined;
1173
+ } | undefined;
1174
+ surface?: {
1175
+ default: string | number;
1176
+ subtle?: string | number | undefined;
1177
+ overlay?: string | number | undefined;
1178
+ inverse?: string | number | undefined;
1179
+ } | undefined;
1180
+ text?: {
1181
+ primary: string | number;
1182
+ inverse?: string | number | undefined;
1183
+ secondary?: string | number | undefined;
1184
+ disabled?: string | number | undefined;
1185
+ onColor?: string | number | undefined;
1186
+ } | undefined;
1187
+ interactive?: {
1188
+ primary?: {
1189
+ disabled: string | number;
1190
+ rest: string | number;
1191
+ hover: string | number;
1192
+ active: string | number;
1193
+ selected?: string | number | undefined;
1194
+ } | undefined;
1195
+ secondary?: {
1196
+ disabled: string | number;
1197
+ rest: string | number;
1198
+ hover: string | number;
1199
+ active: string | number;
1200
+ selected?: string | number | undefined;
1201
+ } | undefined;
1202
+ danger?: {
1203
+ disabled: string | number;
1204
+ rest: string | number;
1205
+ hover: string | number;
1206
+ active: string | number;
1207
+ selected?: string | number | undefined;
1208
+ } | undefined;
1209
+ } | undefined;
1210
+ }>;
1211
+ declare const TypographyConfigSchema: z.ZodObject<{
1212
+ fontFamily: z.ZodString;
1213
+ roles: z.ZodOptional<z.ZodObject<{
1214
+ display: z.ZodOptional<z.ZodObject<{
1215
+ size: z.ZodNumber;
1216
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
1217
+ lineHeight: z.ZodNumber;
1218
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1219
+ fontFamily: z.ZodOptional<z.ZodString>;
1220
+ }, "strip", z.ZodTypeAny, {
1221
+ size: number;
1222
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1223
+ lineHeight: number;
1224
+ letterSpacing?: string | number | undefined;
1225
+ fontFamily?: string | undefined;
1226
+ }, {
1227
+ size: number;
1228
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1229
+ lineHeight: number;
1230
+ letterSpacing?: string | number | undefined;
1231
+ fontFamily?: string | undefined;
1232
+ }>>;
1233
+ h1: z.ZodOptional<z.ZodObject<{
1234
+ size: z.ZodNumber;
1235
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
1236
+ lineHeight: z.ZodNumber;
1237
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1238
+ fontFamily: z.ZodOptional<z.ZodString>;
1239
+ }, "strip", z.ZodTypeAny, {
1240
+ size: number;
1241
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1242
+ lineHeight: number;
1243
+ letterSpacing?: string | number | undefined;
1244
+ fontFamily?: string | undefined;
1245
+ }, {
1246
+ size: number;
1247
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1248
+ lineHeight: number;
1249
+ letterSpacing?: string | number | undefined;
1250
+ fontFamily?: string | undefined;
1251
+ }>>;
1252
+ h2: z.ZodOptional<z.ZodObject<{
1253
+ size: z.ZodNumber;
1254
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
1255
+ lineHeight: z.ZodNumber;
1256
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1257
+ fontFamily: z.ZodOptional<z.ZodString>;
1258
+ }, "strip", z.ZodTypeAny, {
1259
+ size: number;
1260
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1261
+ lineHeight: number;
1262
+ letterSpacing?: string | number | undefined;
1263
+ fontFamily?: string | undefined;
1264
+ }, {
1265
+ size: number;
1266
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1267
+ lineHeight: number;
1268
+ letterSpacing?: string | number | undefined;
1269
+ fontFamily?: string | undefined;
1270
+ }>>;
1271
+ h3: z.ZodOptional<z.ZodObject<{
1272
+ size: z.ZodNumber;
1273
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
1274
+ lineHeight: z.ZodNumber;
1275
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1276
+ fontFamily: z.ZodOptional<z.ZodString>;
1277
+ }, "strip", z.ZodTypeAny, {
1278
+ size: number;
1279
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1280
+ lineHeight: number;
1281
+ letterSpacing?: string | number | undefined;
1282
+ fontFamily?: string | undefined;
1283
+ }, {
1284
+ size: number;
1285
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1286
+ lineHeight: number;
1287
+ letterSpacing?: string | number | undefined;
1288
+ fontFamily?: string | undefined;
1289
+ }>>;
1290
+ body: z.ZodOptional<z.ZodObject<{
1291
+ size: z.ZodNumber;
1292
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
1293
+ lineHeight: z.ZodNumber;
1294
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1295
+ fontFamily: z.ZodOptional<z.ZodString>;
1296
+ }, "strip", z.ZodTypeAny, {
1297
+ size: number;
1298
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1299
+ lineHeight: number;
1300
+ letterSpacing?: string | number | undefined;
1301
+ fontFamily?: string | undefined;
1302
+ }, {
1303
+ size: number;
1304
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1305
+ lineHeight: number;
1306
+ letterSpacing?: string | number | undefined;
1307
+ fontFamily?: string | undefined;
1308
+ }>>;
1309
+ small: z.ZodOptional<z.ZodObject<{
1310
+ size: z.ZodNumber;
1311
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
1312
+ lineHeight: z.ZodNumber;
1313
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1314
+ fontFamily: z.ZodOptional<z.ZodString>;
1315
+ }, "strip", z.ZodTypeAny, {
1316
+ size: number;
1317
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1318
+ lineHeight: number;
1319
+ letterSpacing?: string | number | undefined;
1320
+ fontFamily?: string | undefined;
1321
+ }, {
1322
+ size: number;
1323
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1324
+ lineHeight: number;
1325
+ letterSpacing?: string | number | undefined;
1326
+ fontFamily?: string | undefined;
1327
+ }>>;
1328
+ caption: z.ZodOptional<z.ZodObject<{
1329
+ size: z.ZodNumber;
1330
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
1331
+ lineHeight: z.ZodNumber;
1332
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1333
+ fontFamily: z.ZodOptional<z.ZodString>;
1334
+ }, "strip", z.ZodTypeAny, {
1335
+ size: number;
1336
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1337
+ lineHeight: number;
1338
+ letterSpacing?: string | number | undefined;
1339
+ fontFamily?: string | undefined;
1340
+ }, {
1341
+ size: number;
1342
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1343
+ lineHeight: number;
1344
+ letterSpacing?: string | number | undefined;
1345
+ fontFamily?: string | undefined;
1346
+ }>>;
1347
+ label: z.ZodOptional<z.ZodObject<{
1348
+ size: z.ZodNumber;
1349
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
1350
+ lineHeight: z.ZodNumber;
1351
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1352
+ fontFamily: z.ZodOptional<z.ZodString>;
1353
+ }, "strip", z.ZodTypeAny, {
1354
+ size: number;
1355
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1356
+ lineHeight: number;
1357
+ letterSpacing?: string | number | undefined;
1358
+ fontFamily?: string | undefined;
1359
+ }, {
1360
+ size: number;
1361
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1362
+ lineHeight: number;
1363
+ letterSpacing?: string | number | undefined;
1364
+ fontFamily?: string | undefined;
1365
+ }>>;
1366
+ code: z.ZodOptional<z.ZodObject<{
1367
+ size: z.ZodNumber;
1368
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
1369
+ lineHeight: z.ZodNumber;
1370
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1371
+ fontFamily: z.ZodOptional<z.ZodString>;
1372
+ }, "strip", z.ZodTypeAny, {
1373
+ size: number;
1374
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1375
+ lineHeight: number;
1376
+ letterSpacing?: string | number | undefined;
1377
+ fontFamily?: string | undefined;
1378
+ }, {
1379
+ size: number;
1380
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1381
+ lineHeight: number;
1382
+ letterSpacing?: string | number | undefined;
1383
+ fontFamily?: string | undefined;
1384
+ }>>;
1385
+ }, "strip", z.ZodTypeAny, {
1386
+ code?: {
1387
+ size: number;
1388
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1389
+ lineHeight: number;
1390
+ letterSpacing?: string | number | undefined;
1391
+ fontFamily?: string | undefined;
1392
+ } | undefined;
1393
+ display?: {
1394
+ size: number;
1395
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1396
+ lineHeight: number;
1397
+ letterSpacing?: string | number | undefined;
1398
+ fontFamily?: string | undefined;
1399
+ } | undefined;
1400
+ h1?: {
1401
+ size: number;
1402
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1403
+ lineHeight: number;
1404
+ letterSpacing?: string | number | undefined;
1405
+ fontFamily?: string | undefined;
1406
+ } | undefined;
1407
+ h2?: {
1408
+ size: number;
1409
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1410
+ lineHeight: number;
1411
+ letterSpacing?: string | number | undefined;
1412
+ fontFamily?: string | undefined;
1413
+ } | undefined;
1414
+ h3?: {
1415
+ size: number;
1416
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1417
+ lineHeight: number;
1418
+ letterSpacing?: string | number | undefined;
1419
+ fontFamily?: string | undefined;
1420
+ } | undefined;
1421
+ body?: {
1422
+ size: number;
1423
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1424
+ lineHeight: number;
1425
+ letterSpacing?: string | number | undefined;
1426
+ fontFamily?: string | undefined;
1427
+ } | undefined;
1428
+ small?: {
1429
+ size: number;
1430
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1431
+ lineHeight: number;
1432
+ letterSpacing?: string | number | undefined;
1433
+ fontFamily?: string | undefined;
1434
+ } | undefined;
1435
+ caption?: {
1436
+ size: number;
1437
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1438
+ lineHeight: number;
1439
+ letterSpacing?: string | number | undefined;
1440
+ fontFamily?: string | undefined;
1441
+ } | undefined;
1442
+ label?: {
1443
+ size: number;
1444
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1445
+ lineHeight: number;
1446
+ letterSpacing?: string | number | undefined;
1447
+ fontFamily?: string | undefined;
1448
+ } | undefined;
1449
+ }, {
1450
+ code?: {
1451
+ size: number;
1452
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1453
+ lineHeight: number;
1454
+ letterSpacing?: string | number | undefined;
1455
+ fontFamily?: string | undefined;
1456
+ } | undefined;
1457
+ display?: {
1458
+ size: number;
1459
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1460
+ lineHeight: number;
1461
+ letterSpacing?: string | number | undefined;
1462
+ fontFamily?: string | undefined;
1463
+ } | undefined;
1464
+ h1?: {
1465
+ size: number;
1466
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1467
+ lineHeight: number;
1468
+ letterSpacing?: string | number | undefined;
1469
+ fontFamily?: string | undefined;
1470
+ } | undefined;
1471
+ h2?: {
1472
+ size: number;
1473
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1474
+ lineHeight: number;
1475
+ letterSpacing?: string | number | undefined;
1476
+ fontFamily?: string | undefined;
1477
+ } | undefined;
1478
+ h3?: {
1479
+ size: number;
1480
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1481
+ lineHeight: number;
1482
+ letterSpacing?: string | number | undefined;
1483
+ fontFamily?: string | undefined;
1484
+ } | undefined;
1485
+ body?: {
1486
+ size: number;
1487
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1488
+ lineHeight: number;
1489
+ letterSpacing?: string | number | undefined;
1490
+ fontFamily?: string | undefined;
1491
+ } | undefined;
1492
+ small?: {
1493
+ size: number;
1494
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1495
+ lineHeight: number;
1496
+ letterSpacing?: string | number | undefined;
1497
+ fontFamily?: string | undefined;
1498
+ } | undefined;
1499
+ caption?: {
1500
+ size: number;
1501
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1502
+ lineHeight: number;
1503
+ letterSpacing?: string | number | undefined;
1504
+ fontFamily?: string | undefined;
1505
+ } | undefined;
1506
+ label?: {
1507
+ size: number;
1508
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1509
+ lineHeight: number;
1510
+ letterSpacing?: string | number | undefined;
1511
+ fontFamily?: string | undefined;
1512
+ } | undefined;
1513
+ }>>;
1514
+ /** Legacy — kept for backward compat; prefer roles */
1515
+ scale: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
1516
+ fontWeights: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>, "many">>;
1517
+ }, "strip", z.ZodTypeAny, {
1518
+ fontFamily: string;
1519
+ roles?: {
1520
+ code?: {
1521
+ size: number;
1522
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1523
+ lineHeight: number;
1524
+ letterSpacing?: string | number | undefined;
1525
+ fontFamily?: string | undefined;
1526
+ } | undefined;
1527
+ display?: {
1528
+ size: number;
1529
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1530
+ lineHeight: number;
1531
+ letterSpacing?: string | number | undefined;
1532
+ fontFamily?: string | undefined;
1533
+ } | undefined;
1534
+ h1?: {
1535
+ size: number;
1536
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1537
+ lineHeight: number;
1538
+ letterSpacing?: string | number | undefined;
1539
+ fontFamily?: string | undefined;
1540
+ } | undefined;
1541
+ h2?: {
1542
+ size: number;
1543
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1544
+ lineHeight: number;
1545
+ letterSpacing?: string | number | undefined;
1546
+ fontFamily?: string | undefined;
1547
+ } | undefined;
1548
+ h3?: {
1549
+ size: number;
1550
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1551
+ lineHeight: number;
1552
+ letterSpacing?: string | number | undefined;
1553
+ fontFamily?: string | undefined;
1554
+ } | undefined;
1555
+ body?: {
1556
+ size: number;
1557
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1558
+ lineHeight: number;
1559
+ letterSpacing?: string | number | undefined;
1560
+ fontFamily?: string | undefined;
1561
+ } | undefined;
1562
+ small?: {
1563
+ size: number;
1564
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1565
+ lineHeight: number;
1566
+ letterSpacing?: string | number | undefined;
1567
+ fontFamily?: string | undefined;
1568
+ } | undefined;
1569
+ caption?: {
1570
+ size: number;
1571
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1572
+ lineHeight: number;
1573
+ letterSpacing?: string | number | undefined;
1574
+ fontFamily?: string | undefined;
1575
+ } | undefined;
1576
+ label?: {
1577
+ size: number;
1578
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1579
+ lineHeight: number;
1580
+ letterSpacing?: string | number | undefined;
1581
+ fontFamily?: string | undefined;
1582
+ } | undefined;
1583
+ } | undefined;
1584
+ scale?: number[] | undefined;
1585
+ fontWeights?: (100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900)[] | undefined;
1586
+ }, {
1587
+ fontFamily: string;
1588
+ roles?: {
1589
+ code?: {
1590
+ size: number;
1591
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1592
+ lineHeight: number;
1593
+ letterSpacing?: string | number | undefined;
1594
+ fontFamily?: string | undefined;
1595
+ } | undefined;
1596
+ display?: {
1597
+ size: number;
1598
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1599
+ lineHeight: number;
1600
+ letterSpacing?: string | number | undefined;
1601
+ fontFamily?: string | undefined;
1602
+ } | undefined;
1603
+ h1?: {
1604
+ size: number;
1605
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1606
+ lineHeight: number;
1607
+ letterSpacing?: string | number | undefined;
1608
+ fontFamily?: string | undefined;
1609
+ } | undefined;
1610
+ h2?: {
1611
+ size: number;
1612
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1613
+ lineHeight: number;
1614
+ letterSpacing?: string | number | undefined;
1615
+ fontFamily?: string | undefined;
1616
+ } | undefined;
1617
+ h3?: {
1618
+ size: number;
1619
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1620
+ lineHeight: number;
1621
+ letterSpacing?: string | number | undefined;
1622
+ fontFamily?: string | undefined;
1623
+ } | undefined;
1624
+ body?: {
1625
+ size: number;
1626
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1627
+ lineHeight: number;
1628
+ letterSpacing?: string | number | undefined;
1629
+ fontFamily?: string | undefined;
1630
+ } | undefined;
1631
+ small?: {
1632
+ size: number;
1633
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1634
+ lineHeight: number;
1635
+ letterSpacing?: string | number | undefined;
1636
+ fontFamily?: string | undefined;
1637
+ } | undefined;
1638
+ caption?: {
1639
+ size: number;
1640
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1641
+ lineHeight: number;
1642
+ letterSpacing?: string | number | undefined;
1643
+ fontFamily?: string | undefined;
1644
+ } | undefined;
1645
+ label?: {
1646
+ size: number;
1647
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
1648
+ lineHeight: number;
1649
+ letterSpacing?: string | number | undefined;
1650
+ fontFamily?: string | undefined;
1651
+ } | undefined;
1652
+ } | undefined;
1653
+ scale?: number[] | undefined;
1654
+ fontWeights?: (100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900)[] | undefined;
1655
+ }>;
1656
+ declare const SpacingConfigSchema: z.ZodObject<{
1657
+ baseUnit: z.ZodOptional<z.ZodNumber>;
1658
+ scale: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1659
+ semantic: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1660
+ }, "strip", z.ZodTypeAny, {
1661
+ semantic?: Record<string, string | number> | undefined;
1662
+ scale?: Record<string, number> | undefined;
1663
+ baseUnit?: number | undefined;
1664
+ }, {
1665
+ semantic?: Record<string, string | number> | undefined;
1666
+ scale?: Record<string, number> | undefined;
1667
+ baseUnit?: number | undefined;
1668
+ }>;
1669
+ declare const RadiusConfigSchema: z.ZodRecord<z.ZodString, z.ZodNumber>;
1670
+ declare const ElevationConfigSchema: z.ZodRecord<z.ZodString, z.ZodString>;
1671
+ declare const MotionConfigSchema: z.ZodObject<{
1672
+ duration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1673
+ easing: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1674
+ }, "strip", z.ZodTypeAny, {
1675
+ duration?: Record<string, number> | undefined;
1676
+ easing?: Record<string, string> | undefined;
1677
+ }, {
1678
+ duration?: Record<string, number> | undefined;
1679
+ easing?: Record<string, string> | undefined;
1680
+ }>;
1681
+ declare const StatesConfigSchema: z.ZodObject<{
1682
+ hoverOpacity: z.ZodOptional<z.ZodNumber>;
1683
+ activeOpacity: z.ZodOptional<z.ZodNumber>;
1684
+ disabledOpacity: z.ZodOptional<z.ZodNumber>;
1685
+ focusRing: z.ZodOptional<z.ZodObject<{
1686
+ color: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1687
+ width: z.ZodString;
1688
+ offset: z.ZodString;
1689
+ style: z.ZodOptional<z.ZodEnum<["solid", "dashed", "dotted"]>>;
1690
+ }, "strip", z.ZodTypeAny, {
1691
+ color: string | number;
1692
+ width: string;
1693
+ offset: string;
1694
+ style?: "solid" | "dashed" | "dotted" | undefined;
1695
+ }, {
1696
+ color: string | number;
1697
+ width: string;
1698
+ offset: string;
1699
+ style?: "solid" | "dashed" | "dotted" | undefined;
1700
+ }>>;
1701
+ }, "strip", z.ZodTypeAny, {
1702
+ hoverOpacity?: number | undefined;
1703
+ activeOpacity?: number | undefined;
1704
+ disabledOpacity?: number | undefined;
1705
+ focusRing?: {
1706
+ color: string | number;
1707
+ width: string;
1708
+ offset: string;
1709
+ style?: "solid" | "dashed" | "dotted" | undefined;
1710
+ } | undefined;
1711
+ }, {
1712
+ hoverOpacity?: number | undefined;
1713
+ activeOpacity?: number | undefined;
1714
+ disabledOpacity?: number | undefined;
1715
+ focusRing?: {
1716
+ color: string | number;
1717
+ width: string;
1718
+ offset: string;
1719
+ style?: "solid" | "dashed" | "dotted" | undefined;
1720
+ } | undefined;
1721
+ }>;
1722
+ declare const LayoutConfigSchema: z.ZodObject<{
1723
+ breakpoints: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1724
+ grid: z.ZodOptional<z.ZodObject<{
1725
+ columns: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1726
+ gutter: z.ZodOptional<z.ZodNumber>;
1727
+ margin: z.ZodOptional<z.ZodNumber>;
1728
+ }, "strip", z.ZodTypeAny, {
1729
+ columns?: Record<string, number> | undefined;
1730
+ gutter?: number | undefined;
1731
+ margin?: number | undefined;
1732
+ }, {
1733
+ columns?: Record<string, number> | undefined;
1734
+ gutter?: number | undefined;
1735
+ margin?: number | undefined;
1736
+ }>>;
1737
+ container: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1738
+ }, "strip", z.ZodTypeAny, {
1739
+ breakpoints?: Record<string, number> | undefined;
1740
+ grid?: {
1741
+ columns?: Record<string, number> | undefined;
1742
+ gutter?: number | undefined;
1743
+ margin?: number | undefined;
1744
+ } | undefined;
1745
+ container?: Record<string, number> | undefined;
1746
+ }, {
1747
+ breakpoints?: Record<string, number> | undefined;
1748
+ grid?: {
1749
+ columns?: Record<string, number> | undefined;
1750
+ gutter?: number | undefined;
1751
+ margin?: number | undefined;
1752
+ } | undefined;
1753
+ container?: Record<string, number> | undefined;
1754
+ }>;
1755
+ declare const ThemesConfigSchema: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1756
+ /**
1757
+ * The set of framework adapter IDs the pipeline knows about.
1758
+ * Adding a new adapter here is the only schema change needed when a
1759
+ * new framework target ships.
1760
+ */
1761
+ declare const SUPPORTED_TARGETS: readonly ["react"];
1762
+ declare const OutputConfigSchema: z.ZodOptional<z.ZodObject<{
1763
+ /**
1764
+ * The framework adapter to use when generating component files.
1765
+ *
1766
+ * @default "react"
1767
+ *
1768
+ * Supported values: "react"
1769
+ * Future values: "vue", "svelte", "angular", "react-native"
1770
+ *
1771
+ * An unknown value here will fail validation with an actionable message
1772
+ * rather than silently generating incorrect output.
1773
+ */
1774
+ target: z.ZodDefault<z.ZodEnum<["react"]>>;
1775
+ }, "strip", z.ZodTypeAny, {
1776
+ target: "react";
1777
+ }, {
1778
+ target?: "react" | undefined;
1779
+ }>>;
1780
+ declare const DesignSystemConfigSchema: z.ZodObject<{
1781
+ meta: z.ZodObject<{
1782
+ name: z.ZodString;
1783
+ version: z.ZodString;
1784
+ description: z.ZodOptional<z.ZodString>;
1785
+ preset: z.ZodOptional<z.ZodEnum<["compact", "comfortable", "spacious"]>>;
1786
+ npmScope: z.ZodOptional<z.ZodString>;
1787
+ }, "strip", z.ZodTypeAny, {
1788
+ name: string;
1789
+ version: string;
1790
+ description?: string | undefined;
1791
+ preset?: "compact" | "comfortable" | "spacious" | undefined;
1792
+ npmScope?: string | undefined;
1793
+ }, {
1794
+ name: string;
1795
+ version: string;
1796
+ description?: string | undefined;
1797
+ preset?: "compact" | "comfortable" | "spacious" | undefined;
1798
+ npmScope?: string | undefined;
1799
+ }>;
1800
+ tokens: z.ZodOptional<z.ZodObject<{
1801
+ global: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1802
+ semantic: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1803
+ component: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1804
+ }, "strip", z.ZodTypeAny, {
1805
+ global?: Record<string, string | number> | undefined;
1806
+ semantic?: Record<string, string | number> | undefined;
1807
+ component?: Record<string, string | number> | undefined;
1808
+ }, {
1809
+ global?: Record<string, string | number> | undefined;
1810
+ semantic?: Record<string, string | number> | undefined;
1811
+ component?: Record<string, string | number> | undefined;
1812
+ }>>;
1813
+ themes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>>;
1814
+ color: z.ZodOptional<z.ZodObject<{
1815
+ surface: z.ZodOptional<z.ZodObject<{
1816
+ default: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1817
+ subtle: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1818
+ overlay: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1819
+ inverse: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1820
+ }, "strip", z.ZodTypeAny, {
1821
+ default: string | number;
1822
+ subtle?: string | number | undefined;
1823
+ overlay?: string | number | undefined;
1824
+ inverse?: string | number | undefined;
1825
+ }, {
1826
+ default: string | number;
1827
+ subtle?: string | number | undefined;
1828
+ overlay?: string | number | undefined;
1829
+ inverse?: string | number | undefined;
1830
+ }>>;
1831
+ border: z.ZodOptional<z.ZodObject<{
1832
+ default: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1833
+ strong: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1834
+ focus: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1835
+ subtle: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1836
+ }, "strip", z.ZodTypeAny, {
1837
+ default: string | number;
1838
+ subtle?: string | number | undefined;
1839
+ strong?: string | number | undefined;
1840
+ focus?: string | number | undefined;
1841
+ }, {
1842
+ default: string | number;
1843
+ subtle?: string | number | undefined;
1844
+ strong?: string | number | undefined;
1845
+ focus?: string | number | undefined;
1846
+ }>>;
1847
+ text: z.ZodOptional<z.ZodObject<{
1848
+ primary: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1849
+ secondary: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1850
+ disabled: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1851
+ inverse: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1852
+ onColor: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1853
+ }, "strip", z.ZodTypeAny, {
1854
+ primary: string | number;
1855
+ inverse?: string | number | undefined;
1856
+ secondary?: string | number | undefined;
1857
+ disabled?: string | number | undefined;
1858
+ onColor?: string | number | undefined;
1859
+ }, {
1860
+ primary: string | number;
1861
+ inverse?: string | number | undefined;
1862
+ secondary?: string | number | undefined;
1863
+ disabled?: string | number | undefined;
1864
+ onColor?: string | number | undefined;
1865
+ }>>;
1866
+ status: z.ZodOptional<z.ZodObject<{
1867
+ success: z.ZodOptional<z.ZodObject<{
1868
+ bg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1869
+ fg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1870
+ border: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1871
+ }, "strip", z.ZodTypeAny, {
1872
+ bg: string | number;
1873
+ fg: string | number;
1874
+ border?: string | number | undefined;
1875
+ }, {
1876
+ bg: string | number;
1877
+ fg: string | number;
1878
+ border?: string | number | undefined;
1879
+ }>>;
1880
+ warning: z.ZodOptional<z.ZodObject<{
1881
+ bg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1882
+ fg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1883
+ border: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1884
+ }, "strip", z.ZodTypeAny, {
1885
+ bg: string | number;
1886
+ fg: string | number;
1887
+ border?: string | number | undefined;
1888
+ }, {
1889
+ bg: string | number;
1890
+ fg: string | number;
1891
+ border?: string | number | undefined;
1892
+ }>>;
1893
+ danger: z.ZodOptional<z.ZodObject<{
1894
+ bg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1895
+ fg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1896
+ border: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1897
+ }, "strip", z.ZodTypeAny, {
1898
+ bg: string | number;
1899
+ fg: string | number;
1900
+ border?: string | number | undefined;
1901
+ }, {
1902
+ bg: string | number;
1903
+ fg: string | number;
1904
+ border?: string | number | undefined;
1905
+ }>>;
1906
+ info: z.ZodOptional<z.ZodObject<{
1907
+ bg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1908
+ fg: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1909
+ border: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1910
+ }, "strip", z.ZodTypeAny, {
1911
+ bg: string | number;
1912
+ fg: string | number;
1913
+ border?: string | number | undefined;
1914
+ }, {
1915
+ bg: string | number;
1916
+ fg: string | number;
1917
+ border?: string | number | undefined;
1918
+ }>>;
1919
+ }, "strip", z.ZodTypeAny, {
1920
+ warning?: {
1921
+ bg: string | number;
1922
+ fg: string | number;
1923
+ border?: string | number | undefined;
1924
+ } | undefined;
1925
+ info?: {
1926
+ bg: string | number;
1927
+ fg: string | number;
1928
+ border?: string | number | undefined;
1929
+ } | undefined;
1930
+ success?: {
1931
+ bg: string | number;
1932
+ fg: string | number;
1933
+ border?: string | number | undefined;
1934
+ } | undefined;
1935
+ danger?: {
1936
+ bg: string | number;
1937
+ fg: string | number;
1938
+ border?: string | number | undefined;
1939
+ } | undefined;
1940
+ }, {
1941
+ warning?: {
1942
+ bg: string | number;
1943
+ fg: string | number;
1944
+ border?: string | number | undefined;
1945
+ } | undefined;
1946
+ info?: {
1947
+ bg: string | number;
1948
+ fg: string | number;
1949
+ border?: string | number | undefined;
1950
+ } | undefined;
1951
+ success?: {
1952
+ bg: string | number;
1953
+ fg: string | number;
1954
+ border?: string | number | undefined;
1955
+ } | undefined;
1956
+ danger?: {
1957
+ bg: string | number;
1958
+ fg: string | number;
1959
+ border?: string | number | undefined;
1960
+ } | undefined;
1961
+ }>>;
1962
+ interactive: z.ZodOptional<z.ZodObject<{
1963
+ primary: z.ZodOptional<z.ZodObject<{
1964
+ rest: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1965
+ hover: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1966
+ active: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1967
+ disabled: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1968
+ selected: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1969
+ }, "strip", z.ZodTypeAny, {
1970
+ disabled: string | number;
1971
+ rest: string | number;
1972
+ hover: string | number;
1973
+ active: string | number;
1974
+ selected?: string | number | undefined;
1975
+ }, {
1976
+ disabled: string | number;
1977
+ rest: string | number;
1978
+ hover: string | number;
1979
+ active: string | number;
1980
+ selected?: string | number | undefined;
1981
+ }>>;
1982
+ secondary: z.ZodOptional<z.ZodObject<{
1983
+ rest: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1984
+ hover: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1985
+ active: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1986
+ disabled: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1987
+ selected: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1988
+ }, "strip", z.ZodTypeAny, {
1989
+ disabled: string | number;
1990
+ rest: string | number;
1991
+ hover: string | number;
1992
+ active: string | number;
1993
+ selected?: string | number | undefined;
1994
+ }, {
1995
+ disabled: string | number;
1996
+ rest: string | number;
1997
+ hover: string | number;
1998
+ active: string | number;
1999
+ selected?: string | number | undefined;
2000
+ }>>;
2001
+ danger: z.ZodOptional<z.ZodObject<{
2002
+ rest: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
2003
+ hover: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
2004
+ active: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
2005
+ disabled: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
2006
+ selected: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2007
+ }, "strip", z.ZodTypeAny, {
2008
+ disabled: string | number;
2009
+ rest: string | number;
2010
+ hover: string | number;
2011
+ active: string | number;
2012
+ selected?: string | number | undefined;
2013
+ }, {
2014
+ disabled: string | number;
2015
+ rest: string | number;
2016
+ hover: string | number;
2017
+ active: string | number;
2018
+ selected?: string | number | undefined;
2019
+ }>>;
2020
+ }, "strip", z.ZodTypeAny, {
2021
+ primary?: {
2022
+ disabled: string | number;
2023
+ rest: string | number;
2024
+ hover: string | number;
2025
+ active: string | number;
2026
+ selected?: string | number | undefined;
2027
+ } | undefined;
2028
+ secondary?: {
2029
+ disabled: string | number;
2030
+ rest: string | number;
2031
+ hover: string | number;
2032
+ active: string | number;
2033
+ selected?: string | number | undefined;
2034
+ } | undefined;
2035
+ danger?: {
2036
+ disabled: string | number;
2037
+ rest: string | number;
2038
+ hover: string | number;
2039
+ active: string | number;
2040
+ selected?: string | number | undefined;
2041
+ } | undefined;
2042
+ }, {
2043
+ primary?: {
2044
+ disabled: string | number;
2045
+ rest: string | number;
2046
+ hover: string | number;
2047
+ active: string | number;
2048
+ selected?: string | number | undefined;
2049
+ } | undefined;
2050
+ secondary?: {
2051
+ disabled: string | number;
2052
+ rest: string | number;
2053
+ hover: string | number;
2054
+ active: string | number;
2055
+ selected?: string | number | undefined;
2056
+ } | undefined;
2057
+ danger?: {
2058
+ disabled: string | number;
2059
+ rest: string | number;
2060
+ hover: string | number;
2061
+ active: string | number;
2062
+ selected?: string | number | undefined;
2063
+ } | undefined;
2064
+ }>>;
2065
+ }, "strip", z.ZodTypeAny, {
2066
+ status?: {
2067
+ warning?: {
2068
+ bg: string | number;
2069
+ fg: string | number;
2070
+ border?: string | number | undefined;
2071
+ } | undefined;
2072
+ info?: {
2073
+ bg: string | number;
2074
+ fg: string | number;
2075
+ border?: string | number | undefined;
2076
+ } | undefined;
2077
+ success?: {
2078
+ bg: string | number;
2079
+ fg: string | number;
2080
+ border?: string | number | undefined;
2081
+ } | undefined;
2082
+ danger?: {
2083
+ bg: string | number;
2084
+ fg: string | number;
2085
+ border?: string | number | undefined;
2086
+ } | undefined;
2087
+ } | undefined;
2088
+ border?: {
2089
+ default: string | number;
2090
+ subtle?: string | number | undefined;
2091
+ strong?: string | number | undefined;
2092
+ focus?: string | number | undefined;
2093
+ } | undefined;
2094
+ surface?: {
2095
+ default: string | number;
2096
+ subtle?: string | number | undefined;
2097
+ overlay?: string | number | undefined;
2098
+ inverse?: string | number | undefined;
2099
+ } | undefined;
2100
+ text?: {
2101
+ primary: string | number;
2102
+ inverse?: string | number | undefined;
2103
+ secondary?: string | number | undefined;
2104
+ disabled?: string | number | undefined;
2105
+ onColor?: string | number | undefined;
2106
+ } | undefined;
2107
+ interactive?: {
2108
+ primary?: {
2109
+ disabled: string | number;
2110
+ rest: string | number;
2111
+ hover: string | number;
2112
+ active: string | number;
2113
+ selected?: string | number | undefined;
2114
+ } | undefined;
2115
+ secondary?: {
2116
+ disabled: string | number;
2117
+ rest: string | number;
2118
+ hover: string | number;
2119
+ active: string | number;
2120
+ selected?: string | number | undefined;
2121
+ } | undefined;
2122
+ danger?: {
2123
+ disabled: string | number;
2124
+ rest: string | number;
2125
+ hover: string | number;
2126
+ active: string | number;
2127
+ selected?: string | number | undefined;
2128
+ } | undefined;
2129
+ } | undefined;
2130
+ }, {
2131
+ status?: {
2132
+ warning?: {
2133
+ bg: string | number;
2134
+ fg: string | number;
2135
+ border?: string | number | undefined;
2136
+ } | undefined;
2137
+ info?: {
2138
+ bg: string | number;
2139
+ fg: string | number;
2140
+ border?: string | number | undefined;
2141
+ } | undefined;
2142
+ success?: {
2143
+ bg: string | number;
2144
+ fg: string | number;
2145
+ border?: string | number | undefined;
2146
+ } | undefined;
2147
+ danger?: {
2148
+ bg: string | number;
2149
+ fg: string | number;
2150
+ border?: string | number | undefined;
2151
+ } | undefined;
2152
+ } | undefined;
2153
+ border?: {
2154
+ default: string | number;
2155
+ subtle?: string | number | undefined;
2156
+ strong?: string | number | undefined;
2157
+ focus?: string | number | undefined;
2158
+ } | undefined;
2159
+ surface?: {
2160
+ default: string | number;
2161
+ subtle?: string | number | undefined;
2162
+ overlay?: string | number | undefined;
2163
+ inverse?: string | number | undefined;
2164
+ } | undefined;
2165
+ text?: {
2166
+ primary: string | number;
2167
+ inverse?: string | number | undefined;
2168
+ secondary?: string | number | undefined;
2169
+ disabled?: string | number | undefined;
2170
+ onColor?: string | number | undefined;
2171
+ } | undefined;
2172
+ interactive?: {
2173
+ primary?: {
2174
+ disabled: string | number;
2175
+ rest: string | number;
2176
+ hover: string | number;
2177
+ active: string | number;
2178
+ selected?: string | number | undefined;
2179
+ } | undefined;
2180
+ secondary?: {
2181
+ disabled: string | number;
2182
+ rest: string | number;
2183
+ hover: string | number;
2184
+ active: string | number;
2185
+ selected?: string | number | undefined;
2186
+ } | undefined;
2187
+ danger?: {
2188
+ disabled: string | number;
2189
+ rest: string | number;
2190
+ hover: string | number;
2191
+ active: string | number;
2192
+ selected?: string | number | undefined;
2193
+ } | undefined;
2194
+ } | undefined;
2195
+ }>>;
2196
+ typography: z.ZodOptional<z.ZodObject<{
2197
+ fontFamily: z.ZodString;
2198
+ roles: z.ZodOptional<z.ZodObject<{
2199
+ display: z.ZodOptional<z.ZodObject<{
2200
+ size: z.ZodNumber;
2201
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
2202
+ lineHeight: z.ZodNumber;
2203
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2204
+ fontFamily: z.ZodOptional<z.ZodString>;
2205
+ }, "strip", z.ZodTypeAny, {
2206
+ size: number;
2207
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2208
+ lineHeight: number;
2209
+ letterSpacing?: string | number | undefined;
2210
+ fontFamily?: string | undefined;
2211
+ }, {
2212
+ size: number;
2213
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2214
+ lineHeight: number;
2215
+ letterSpacing?: string | number | undefined;
2216
+ fontFamily?: string | undefined;
2217
+ }>>;
2218
+ h1: z.ZodOptional<z.ZodObject<{
2219
+ size: z.ZodNumber;
2220
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
2221
+ lineHeight: z.ZodNumber;
2222
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2223
+ fontFamily: z.ZodOptional<z.ZodString>;
2224
+ }, "strip", z.ZodTypeAny, {
2225
+ size: number;
2226
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2227
+ lineHeight: number;
2228
+ letterSpacing?: string | number | undefined;
2229
+ fontFamily?: string | undefined;
2230
+ }, {
2231
+ size: number;
2232
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2233
+ lineHeight: number;
2234
+ letterSpacing?: string | number | undefined;
2235
+ fontFamily?: string | undefined;
2236
+ }>>;
2237
+ h2: z.ZodOptional<z.ZodObject<{
2238
+ size: z.ZodNumber;
2239
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
2240
+ lineHeight: z.ZodNumber;
2241
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2242
+ fontFamily: z.ZodOptional<z.ZodString>;
2243
+ }, "strip", z.ZodTypeAny, {
2244
+ size: number;
2245
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2246
+ lineHeight: number;
2247
+ letterSpacing?: string | number | undefined;
2248
+ fontFamily?: string | undefined;
2249
+ }, {
2250
+ size: number;
2251
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2252
+ lineHeight: number;
2253
+ letterSpacing?: string | number | undefined;
2254
+ fontFamily?: string | undefined;
2255
+ }>>;
2256
+ h3: z.ZodOptional<z.ZodObject<{
2257
+ size: z.ZodNumber;
2258
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
2259
+ lineHeight: z.ZodNumber;
2260
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2261
+ fontFamily: z.ZodOptional<z.ZodString>;
2262
+ }, "strip", z.ZodTypeAny, {
2263
+ size: number;
2264
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2265
+ lineHeight: number;
2266
+ letterSpacing?: string | number | undefined;
2267
+ fontFamily?: string | undefined;
2268
+ }, {
2269
+ size: number;
2270
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2271
+ lineHeight: number;
2272
+ letterSpacing?: string | number | undefined;
2273
+ fontFamily?: string | undefined;
2274
+ }>>;
2275
+ body: z.ZodOptional<z.ZodObject<{
2276
+ size: z.ZodNumber;
2277
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
2278
+ lineHeight: z.ZodNumber;
2279
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2280
+ fontFamily: z.ZodOptional<z.ZodString>;
2281
+ }, "strip", z.ZodTypeAny, {
2282
+ size: number;
2283
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2284
+ lineHeight: number;
2285
+ letterSpacing?: string | number | undefined;
2286
+ fontFamily?: string | undefined;
2287
+ }, {
2288
+ size: number;
2289
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2290
+ lineHeight: number;
2291
+ letterSpacing?: string | number | undefined;
2292
+ fontFamily?: string | undefined;
2293
+ }>>;
2294
+ small: z.ZodOptional<z.ZodObject<{
2295
+ size: z.ZodNumber;
2296
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
2297
+ lineHeight: z.ZodNumber;
2298
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2299
+ fontFamily: z.ZodOptional<z.ZodString>;
2300
+ }, "strip", z.ZodTypeAny, {
2301
+ size: number;
2302
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2303
+ lineHeight: number;
2304
+ letterSpacing?: string | number | undefined;
2305
+ fontFamily?: string | undefined;
2306
+ }, {
2307
+ size: number;
2308
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2309
+ lineHeight: number;
2310
+ letterSpacing?: string | number | undefined;
2311
+ fontFamily?: string | undefined;
2312
+ }>>;
2313
+ caption: z.ZodOptional<z.ZodObject<{
2314
+ size: z.ZodNumber;
2315
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
2316
+ lineHeight: z.ZodNumber;
2317
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2318
+ fontFamily: z.ZodOptional<z.ZodString>;
2319
+ }, "strip", z.ZodTypeAny, {
2320
+ size: number;
2321
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2322
+ lineHeight: number;
2323
+ letterSpacing?: string | number | undefined;
2324
+ fontFamily?: string | undefined;
2325
+ }, {
2326
+ size: number;
2327
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2328
+ lineHeight: number;
2329
+ letterSpacing?: string | number | undefined;
2330
+ fontFamily?: string | undefined;
2331
+ }>>;
2332
+ label: z.ZodOptional<z.ZodObject<{
2333
+ size: z.ZodNumber;
2334
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
2335
+ lineHeight: z.ZodNumber;
2336
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2337
+ fontFamily: z.ZodOptional<z.ZodString>;
2338
+ }, "strip", z.ZodTypeAny, {
2339
+ size: number;
2340
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2341
+ lineHeight: number;
2342
+ letterSpacing?: string | number | undefined;
2343
+ fontFamily?: string | undefined;
2344
+ }, {
2345
+ size: number;
2346
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2347
+ lineHeight: number;
2348
+ letterSpacing?: string | number | undefined;
2349
+ fontFamily?: string | undefined;
2350
+ }>>;
2351
+ code: z.ZodOptional<z.ZodObject<{
2352
+ size: z.ZodNumber;
2353
+ weight: z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>;
2354
+ lineHeight: z.ZodNumber;
2355
+ letterSpacing: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2356
+ fontFamily: z.ZodOptional<z.ZodString>;
2357
+ }, "strip", z.ZodTypeAny, {
2358
+ size: number;
2359
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2360
+ lineHeight: number;
2361
+ letterSpacing?: string | number | undefined;
2362
+ fontFamily?: string | undefined;
2363
+ }, {
2364
+ size: number;
2365
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2366
+ lineHeight: number;
2367
+ letterSpacing?: string | number | undefined;
2368
+ fontFamily?: string | undefined;
2369
+ }>>;
2370
+ }, "strip", z.ZodTypeAny, {
2371
+ code?: {
2372
+ size: number;
2373
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2374
+ lineHeight: number;
2375
+ letterSpacing?: string | number | undefined;
2376
+ fontFamily?: string | undefined;
2377
+ } | undefined;
2378
+ display?: {
2379
+ size: number;
2380
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2381
+ lineHeight: number;
2382
+ letterSpacing?: string | number | undefined;
2383
+ fontFamily?: string | undefined;
2384
+ } | undefined;
2385
+ h1?: {
2386
+ size: number;
2387
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2388
+ lineHeight: number;
2389
+ letterSpacing?: string | number | undefined;
2390
+ fontFamily?: string | undefined;
2391
+ } | undefined;
2392
+ h2?: {
2393
+ size: number;
2394
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2395
+ lineHeight: number;
2396
+ letterSpacing?: string | number | undefined;
2397
+ fontFamily?: string | undefined;
2398
+ } | undefined;
2399
+ h3?: {
2400
+ size: number;
2401
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2402
+ lineHeight: number;
2403
+ letterSpacing?: string | number | undefined;
2404
+ fontFamily?: string | undefined;
2405
+ } | undefined;
2406
+ body?: {
2407
+ size: number;
2408
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2409
+ lineHeight: number;
2410
+ letterSpacing?: string | number | undefined;
2411
+ fontFamily?: string | undefined;
2412
+ } | undefined;
2413
+ small?: {
2414
+ size: number;
2415
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2416
+ lineHeight: number;
2417
+ letterSpacing?: string | number | undefined;
2418
+ fontFamily?: string | undefined;
2419
+ } | undefined;
2420
+ caption?: {
2421
+ size: number;
2422
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2423
+ lineHeight: number;
2424
+ letterSpacing?: string | number | undefined;
2425
+ fontFamily?: string | undefined;
2426
+ } | undefined;
2427
+ label?: {
2428
+ size: number;
2429
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2430
+ lineHeight: number;
2431
+ letterSpacing?: string | number | undefined;
2432
+ fontFamily?: string | undefined;
2433
+ } | undefined;
2434
+ }, {
2435
+ code?: {
2436
+ size: number;
2437
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2438
+ lineHeight: number;
2439
+ letterSpacing?: string | number | undefined;
2440
+ fontFamily?: string | undefined;
2441
+ } | undefined;
2442
+ display?: {
2443
+ size: number;
2444
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2445
+ lineHeight: number;
2446
+ letterSpacing?: string | number | undefined;
2447
+ fontFamily?: string | undefined;
2448
+ } | undefined;
2449
+ h1?: {
2450
+ size: number;
2451
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2452
+ lineHeight: number;
2453
+ letterSpacing?: string | number | undefined;
2454
+ fontFamily?: string | undefined;
2455
+ } | undefined;
2456
+ h2?: {
2457
+ size: number;
2458
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2459
+ lineHeight: number;
2460
+ letterSpacing?: string | number | undefined;
2461
+ fontFamily?: string | undefined;
2462
+ } | undefined;
2463
+ h3?: {
2464
+ size: number;
2465
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2466
+ lineHeight: number;
2467
+ letterSpacing?: string | number | undefined;
2468
+ fontFamily?: string | undefined;
2469
+ } | undefined;
2470
+ body?: {
2471
+ size: number;
2472
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2473
+ lineHeight: number;
2474
+ letterSpacing?: string | number | undefined;
2475
+ fontFamily?: string | undefined;
2476
+ } | undefined;
2477
+ small?: {
2478
+ size: number;
2479
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2480
+ lineHeight: number;
2481
+ letterSpacing?: string | number | undefined;
2482
+ fontFamily?: string | undefined;
2483
+ } | undefined;
2484
+ caption?: {
2485
+ size: number;
2486
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2487
+ lineHeight: number;
2488
+ letterSpacing?: string | number | undefined;
2489
+ fontFamily?: string | undefined;
2490
+ } | undefined;
2491
+ label?: {
2492
+ size: number;
2493
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2494
+ lineHeight: number;
2495
+ letterSpacing?: string | number | undefined;
2496
+ fontFamily?: string | undefined;
2497
+ } | undefined;
2498
+ }>>;
2499
+ /** Legacy — kept for backward compat; prefer roles */
2500
+ scale: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
2501
+ fontWeights: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodLiteral<100>, z.ZodLiteral<200>, z.ZodLiteral<300>, z.ZodLiteral<400>, z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>, z.ZodLiteral<800>, z.ZodLiteral<900>]>, "many">>;
2502
+ }, "strip", z.ZodTypeAny, {
2503
+ fontFamily: string;
2504
+ roles?: {
2505
+ code?: {
2506
+ size: number;
2507
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2508
+ lineHeight: number;
2509
+ letterSpacing?: string | number | undefined;
2510
+ fontFamily?: string | undefined;
2511
+ } | undefined;
2512
+ display?: {
2513
+ size: number;
2514
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2515
+ lineHeight: number;
2516
+ letterSpacing?: string | number | undefined;
2517
+ fontFamily?: string | undefined;
2518
+ } | undefined;
2519
+ h1?: {
2520
+ size: number;
2521
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2522
+ lineHeight: number;
2523
+ letterSpacing?: string | number | undefined;
2524
+ fontFamily?: string | undefined;
2525
+ } | undefined;
2526
+ h2?: {
2527
+ size: number;
2528
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2529
+ lineHeight: number;
2530
+ letterSpacing?: string | number | undefined;
2531
+ fontFamily?: string | undefined;
2532
+ } | undefined;
2533
+ h3?: {
2534
+ size: number;
2535
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2536
+ lineHeight: number;
2537
+ letterSpacing?: string | number | undefined;
2538
+ fontFamily?: string | undefined;
2539
+ } | undefined;
2540
+ body?: {
2541
+ size: number;
2542
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2543
+ lineHeight: number;
2544
+ letterSpacing?: string | number | undefined;
2545
+ fontFamily?: string | undefined;
2546
+ } | undefined;
2547
+ small?: {
2548
+ size: number;
2549
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2550
+ lineHeight: number;
2551
+ letterSpacing?: string | number | undefined;
2552
+ fontFamily?: string | undefined;
2553
+ } | undefined;
2554
+ caption?: {
2555
+ size: number;
2556
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2557
+ lineHeight: number;
2558
+ letterSpacing?: string | number | undefined;
2559
+ fontFamily?: string | undefined;
2560
+ } | undefined;
2561
+ label?: {
2562
+ size: number;
2563
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2564
+ lineHeight: number;
2565
+ letterSpacing?: string | number | undefined;
2566
+ fontFamily?: string | undefined;
2567
+ } | undefined;
2568
+ } | undefined;
2569
+ scale?: number[] | undefined;
2570
+ fontWeights?: (100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900)[] | undefined;
2571
+ }, {
2572
+ fontFamily: string;
2573
+ roles?: {
2574
+ code?: {
2575
+ size: number;
2576
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2577
+ lineHeight: number;
2578
+ letterSpacing?: string | number | undefined;
2579
+ fontFamily?: string | undefined;
2580
+ } | undefined;
2581
+ display?: {
2582
+ size: number;
2583
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2584
+ lineHeight: number;
2585
+ letterSpacing?: string | number | undefined;
2586
+ fontFamily?: string | undefined;
2587
+ } | undefined;
2588
+ h1?: {
2589
+ size: number;
2590
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2591
+ lineHeight: number;
2592
+ letterSpacing?: string | number | undefined;
2593
+ fontFamily?: string | undefined;
2594
+ } | undefined;
2595
+ h2?: {
2596
+ size: number;
2597
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2598
+ lineHeight: number;
2599
+ letterSpacing?: string | number | undefined;
2600
+ fontFamily?: string | undefined;
2601
+ } | undefined;
2602
+ h3?: {
2603
+ size: number;
2604
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2605
+ lineHeight: number;
2606
+ letterSpacing?: string | number | undefined;
2607
+ fontFamily?: string | undefined;
2608
+ } | undefined;
2609
+ body?: {
2610
+ size: number;
2611
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2612
+ lineHeight: number;
2613
+ letterSpacing?: string | number | undefined;
2614
+ fontFamily?: string | undefined;
2615
+ } | undefined;
2616
+ small?: {
2617
+ size: number;
2618
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2619
+ lineHeight: number;
2620
+ letterSpacing?: string | number | undefined;
2621
+ fontFamily?: string | undefined;
2622
+ } | undefined;
2623
+ caption?: {
2624
+ size: number;
2625
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2626
+ lineHeight: number;
2627
+ letterSpacing?: string | number | undefined;
2628
+ fontFamily?: string | undefined;
2629
+ } | undefined;
2630
+ label?: {
2631
+ size: number;
2632
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2633
+ lineHeight: number;
2634
+ letterSpacing?: string | number | undefined;
2635
+ fontFamily?: string | undefined;
2636
+ } | undefined;
2637
+ } | undefined;
2638
+ scale?: number[] | undefined;
2639
+ fontWeights?: (100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900)[] | undefined;
2640
+ }>>;
2641
+ spacing: z.ZodOptional<z.ZodObject<{
2642
+ baseUnit: z.ZodOptional<z.ZodNumber>;
2643
+ scale: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
2644
+ semantic: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
2645
+ }, "strip", z.ZodTypeAny, {
2646
+ semantic?: Record<string, string | number> | undefined;
2647
+ scale?: Record<string, number> | undefined;
2648
+ baseUnit?: number | undefined;
2649
+ }, {
2650
+ semantic?: Record<string, string | number> | undefined;
2651
+ scale?: Record<string, number> | undefined;
2652
+ baseUnit?: number | undefined;
2653
+ }>>;
2654
+ radius: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
2655
+ elevation: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2656
+ motion: z.ZodOptional<z.ZodObject<{
2657
+ duration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
2658
+ easing: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2659
+ }, "strip", z.ZodTypeAny, {
2660
+ duration?: Record<string, number> | undefined;
2661
+ easing?: Record<string, string> | undefined;
2662
+ }, {
2663
+ duration?: Record<string, number> | undefined;
2664
+ easing?: Record<string, string> | undefined;
2665
+ }>>;
2666
+ states: z.ZodOptional<z.ZodObject<{
2667
+ hoverOpacity: z.ZodOptional<z.ZodNumber>;
2668
+ activeOpacity: z.ZodOptional<z.ZodNumber>;
2669
+ disabledOpacity: z.ZodOptional<z.ZodNumber>;
2670
+ focusRing: z.ZodOptional<z.ZodObject<{
2671
+ color: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
2672
+ width: z.ZodString;
2673
+ offset: z.ZodString;
2674
+ style: z.ZodOptional<z.ZodEnum<["solid", "dashed", "dotted"]>>;
2675
+ }, "strip", z.ZodTypeAny, {
2676
+ color: string | number;
2677
+ width: string;
2678
+ offset: string;
2679
+ style?: "solid" | "dashed" | "dotted" | undefined;
2680
+ }, {
2681
+ color: string | number;
2682
+ width: string;
2683
+ offset: string;
2684
+ style?: "solid" | "dashed" | "dotted" | undefined;
2685
+ }>>;
2686
+ }, "strip", z.ZodTypeAny, {
2687
+ hoverOpacity?: number | undefined;
2688
+ activeOpacity?: number | undefined;
2689
+ disabledOpacity?: number | undefined;
2690
+ focusRing?: {
2691
+ color: string | number;
2692
+ width: string;
2693
+ offset: string;
2694
+ style?: "solid" | "dashed" | "dotted" | undefined;
2695
+ } | undefined;
2696
+ }, {
2697
+ hoverOpacity?: number | undefined;
2698
+ activeOpacity?: number | undefined;
2699
+ disabledOpacity?: number | undefined;
2700
+ focusRing?: {
2701
+ color: string | number;
2702
+ width: string;
2703
+ offset: string;
2704
+ style?: "solid" | "dashed" | "dotted" | undefined;
2705
+ } | undefined;
2706
+ }>>;
2707
+ layout: z.ZodOptional<z.ZodObject<{
2708
+ breakpoints: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
2709
+ grid: z.ZodOptional<z.ZodObject<{
2710
+ columns: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
2711
+ gutter: z.ZodOptional<z.ZodNumber>;
2712
+ margin: z.ZodOptional<z.ZodNumber>;
2713
+ }, "strip", z.ZodTypeAny, {
2714
+ columns?: Record<string, number> | undefined;
2715
+ gutter?: number | undefined;
2716
+ margin?: number | undefined;
2717
+ }, {
2718
+ columns?: Record<string, number> | undefined;
2719
+ gutter?: number | undefined;
2720
+ margin?: number | undefined;
2721
+ }>>;
2722
+ container: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
2723
+ }, "strip", z.ZodTypeAny, {
2724
+ breakpoints?: Record<string, number> | undefined;
2725
+ grid?: {
2726
+ columns?: Record<string, number> | undefined;
2727
+ gutter?: number | undefined;
2728
+ margin?: number | undefined;
2729
+ } | undefined;
2730
+ container?: Record<string, number> | undefined;
2731
+ }, {
2732
+ breakpoints?: Record<string, number> | undefined;
2733
+ grid?: {
2734
+ columns?: Record<string, number> | undefined;
2735
+ gutter?: number | undefined;
2736
+ margin?: number | undefined;
2737
+ } | undefined;
2738
+ container?: Record<string, number> | undefined;
2739
+ }>>;
2740
+ philosophy: z.ZodOptional<z.ZodObject<{
2741
+ density: z.ZodOptional<z.ZodEnum<["compact", "comfortable", "spacious"]>>;
2742
+ elevation: z.ZodOptional<z.ZodEnum<["minimal", "moderate", "expressive"]>>;
2743
+ motion: z.ZodOptional<z.ZodEnum<["none", "reduced", "full"]>>;
2744
+ }, "strip", z.ZodTypeAny, {
2745
+ density?: "compact" | "comfortable" | "spacious" | undefined;
2746
+ elevation?: "minimal" | "moderate" | "expressive" | undefined;
2747
+ motion?: "none" | "full" | "reduced" | undefined;
2748
+ }, {
2749
+ density?: "compact" | "comfortable" | "spacious" | undefined;
2750
+ elevation?: "minimal" | "moderate" | "expressive" | undefined;
2751
+ motion?: "none" | "full" | "reduced" | undefined;
2752
+ }>>;
2753
+ customization: z.ZodOptional<z.ZodObject<{
2754
+ extends: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2755
+ overrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
2756
+ }, "strip", z.ZodTypeAny, {
2757
+ extends?: string | null | undefined;
2758
+ overrides?: Record<string, string | number> | undefined;
2759
+ }, {
2760
+ extends?: string | null | undefined;
2761
+ overrides?: Record<string, string | number> | undefined;
2762
+ }>>;
2763
+ output: z.ZodOptional<z.ZodObject<{
2764
+ /**
2765
+ * The framework adapter to use when generating component files.
2766
+ *
2767
+ * @default "react"
2768
+ *
2769
+ * Supported values: "react"
2770
+ * Future values: "vue", "svelte", "angular", "react-native"
2771
+ *
2772
+ * An unknown value here will fail validation with an actionable message
2773
+ * rather than silently generating incorrect output.
2774
+ */
2775
+ target: z.ZodDefault<z.ZodEnum<["react"]>>;
2776
+ }, "strip", z.ZodTypeAny, {
2777
+ target: "react";
2778
+ }, {
2779
+ target?: "react" | undefined;
2780
+ }>>;
2781
+ }, "strip", z.ZodTypeAny, {
2782
+ meta: {
2783
+ name: string;
2784
+ version: string;
2785
+ description?: string | undefined;
2786
+ preset?: "compact" | "comfortable" | "spacious" | undefined;
2787
+ npmScope?: string | undefined;
2788
+ };
2789
+ tokens?: {
2790
+ global?: Record<string, string | number> | undefined;
2791
+ semantic?: Record<string, string | number> | undefined;
2792
+ component?: Record<string, string | number> | undefined;
2793
+ } | undefined;
2794
+ color?: {
2795
+ status?: {
2796
+ warning?: {
2797
+ bg: string | number;
2798
+ fg: string | number;
2799
+ border?: string | number | undefined;
2800
+ } | undefined;
2801
+ info?: {
2802
+ bg: string | number;
2803
+ fg: string | number;
2804
+ border?: string | number | undefined;
2805
+ } | undefined;
2806
+ success?: {
2807
+ bg: string | number;
2808
+ fg: string | number;
2809
+ border?: string | number | undefined;
2810
+ } | undefined;
2811
+ danger?: {
2812
+ bg: string | number;
2813
+ fg: string | number;
2814
+ border?: string | number | undefined;
2815
+ } | undefined;
2816
+ } | undefined;
2817
+ border?: {
2818
+ default: string | number;
2819
+ subtle?: string | number | undefined;
2820
+ strong?: string | number | undefined;
2821
+ focus?: string | number | undefined;
2822
+ } | undefined;
2823
+ surface?: {
2824
+ default: string | number;
2825
+ subtle?: string | number | undefined;
2826
+ overlay?: string | number | undefined;
2827
+ inverse?: string | number | undefined;
2828
+ } | undefined;
2829
+ text?: {
2830
+ primary: string | number;
2831
+ inverse?: string | number | undefined;
2832
+ secondary?: string | number | undefined;
2833
+ disabled?: string | number | undefined;
2834
+ onColor?: string | number | undefined;
2835
+ } | undefined;
2836
+ interactive?: {
2837
+ primary?: {
2838
+ disabled: string | number;
2839
+ rest: string | number;
2840
+ hover: string | number;
2841
+ active: string | number;
2842
+ selected?: string | number | undefined;
2843
+ } | undefined;
2844
+ secondary?: {
2845
+ disabled: string | number;
2846
+ rest: string | number;
2847
+ hover: string | number;
2848
+ active: string | number;
2849
+ selected?: string | number | undefined;
2850
+ } | undefined;
2851
+ danger?: {
2852
+ disabled: string | number;
2853
+ rest: string | number;
2854
+ hover: string | number;
2855
+ active: string | number;
2856
+ selected?: string | number | undefined;
2857
+ } | undefined;
2858
+ } | undefined;
2859
+ } | undefined;
2860
+ elevation?: Record<string, string> | undefined;
2861
+ motion?: {
2862
+ duration?: Record<string, number> | undefined;
2863
+ easing?: Record<string, string> | undefined;
2864
+ } | undefined;
2865
+ themes?: Record<string, Record<string, string | number>> | undefined;
2866
+ typography?: {
2867
+ fontFamily: string;
2868
+ roles?: {
2869
+ code?: {
2870
+ size: number;
2871
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2872
+ lineHeight: number;
2873
+ letterSpacing?: string | number | undefined;
2874
+ fontFamily?: string | undefined;
2875
+ } | undefined;
2876
+ display?: {
2877
+ size: number;
2878
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2879
+ lineHeight: number;
2880
+ letterSpacing?: string | number | undefined;
2881
+ fontFamily?: string | undefined;
2882
+ } | undefined;
2883
+ h1?: {
2884
+ size: number;
2885
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2886
+ lineHeight: number;
2887
+ letterSpacing?: string | number | undefined;
2888
+ fontFamily?: string | undefined;
2889
+ } | undefined;
2890
+ h2?: {
2891
+ size: number;
2892
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2893
+ lineHeight: number;
2894
+ letterSpacing?: string | number | undefined;
2895
+ fontFamily?: string | undefined;
2896
+ } | undefined;
2897
+ h3?: {
2898
+ size: number;
2899
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2900
+ lineHeight: number;
2901
+ letterSpacing?: string | number | undefined;
2902
+ fontFamily?: string | undefined;
2903
+ } | undefined;
2904
+ body?: {
2905
+ size: number;
2906
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2907
+ lineHeight: number;
2908
+ letterSpacing?: string | number | undefined;
2909
+ fontFamily?: string | undefined;
2910
+ } | undefined;
2911
+ small?: {
2912
+ size: number;
2913
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2914
+ lineHeight: number;
2915
+ letterSpacing?: string | number | undefined;
2916
+ fontFamily?: string | undefined;
2917
+ } | undefined;
2918
+ caption?: {
2919
+ size: number;
2920
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2921
+ lineHeight: number;
2922
+ letterSpacing?: string | number | undefined;
2923
+ fontFamily?: string | undefined;
2924
+ } | undefined;
2925
+ label?: {
2926
+ size: number;
2927
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
2928
+ lineHeight: number;
2929
+ letterSpacing?: string | number | undefined;
2930
+ fontFamily?: string | undefined;
2931
+ } | undefined;
2932
+ } | undefined;
2933
+ scale?: number[] | undefined;
2934
+ fontWeights?: (100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900)[] | undefined;
2935
+ } | undefined;
2936
+ spacing?: {
2937
+ semantic?: Record<string, string | number> | undefined;
2938
+ scale?: Record<string, number> | undefined;
2939
+ baseUnit?: number | undefined;
2940
+ } | undefined;
2941
+ radius?: Record<string, number> | undefined;
2942
+ states?: {
2943
+ hoverOpacity?: number | undefined;
2944
+ activeOpacity?: number | undefined;
2945
+ disabledOpacity?: number | undefined;
2946
+ focusRing?: {
2947
+ color: string | number;
2948
+ width: string;
2949
+ offset: string;
2950
+ style?: "solid" | "dashed" | "dotted" | undefined;
2951
+ } | undefined;
2952
+ } | undefined;
2953
+ layout?: {
2954
+ breakpoints?: Record<string, number> | undefined;
2955
+ grid?: {
2956
+ columns?: Record<string, number> | undefined;
2957
+ gutter?: number | undefined;
2958
+ margin?: number | undefined;
2959
+ } | undefined;
2960
+ container?: Record<string, number> | undefined;
2961
+ } | undefined;
2962
+ philosophy?: {
2963
+ density?: "compact" | "comfortable" | "spacious" | undefined;
2964
+ elevation?: "minimal" | "moderate" | "expressive" | undefined;
2965
+ motion?: "none" | "full" | "reduced" | undefined;
2966
+ } | undefined;
2967
+ customization?: {
2968
+ extends?: string | null | undefined;
2969
+ overrides?: Record<string, string | number> | undefined;
2970
+ } | undefined;
2971
+ output?: {
2972
+ target: "react";
2973
+ } | undefined;
2974
+ }, {
2975
+ meta: {
2976
+ name: string;
2977
+ version: string;
2978
+ description?: string | undefined;
2979
+ preset?: "compact" | "comfortable" | "spacious" | undefined;
2980
+ npmScope?: string | undefined;
2981
+ };
2982
+ tokens?: {
2983
+ global?: Record<string, string | number> | undefined;
2984
+ semantic?: Record<string, string | number> | undefined;
2985
+ component?: Record<string, string | number> | undefined;
2986
+ } | undefined;
2987
+ color?: {
2988
+ status?: {
2989
+ warning?: {
2990
+ bg: string | number;
2991
+ fg: string | number;
2992
+ border?: string | number | undefined;
2993
+ } | undefined;
2994
+ info?: {
2995
+ bg: string | number;
2996
+ fg: string | number;
2997
+ border?: string | number | undefined;
2998
+ } | undefined;
2999
+ success?: {
3000
+ bg: string | number;
3001
+ fg: string | number;
3002
+ border?: string | number | undefined;
3003
+ } | undefined;
3004
+ danger?: {
3005
+ bg: string | number;
3006
+ fg: string | number;
3007
+ border?: string | number | undefined;
3008
+ } | undefined;
3009
+ } | undefined;
3010
+ border?: {
3011
+ default: string | number;
3012
+ subtle?: string | number | undefined;
3013
+ strong?: string | number | undefined;
3014
+ focus?: string | number | undefined;
3015
+ } | undefined;
3016
+ surface?: {
3017
+ default: string | number;
3018
+ subtle?: string | number | undefined;
3019
+ overlay?: string | number | undefined;
3020
+ inverse?: string | number | undefined;
3021
+ } | undefined;
3022
+ text?: {
3023
+ primary: string | number;
3024
+ inverse?: string | number | undefined;
3025
+ secondary?: string | number | undefined;
3026
+ disabled?: string | number | undefined;
3027
+ onColor?: string | number | undefined;
3028
+ } | undefined;
3029
+ interactive?: {
3030
+ primary?: {
3031
+ disabled: string | number;
3032
+ rest: string | number;
3033
+ hover: string | number;
3034
+ active: string | number;
3035
+ selected?: string | number | undefined;
3036
+ } | undefined;
3037
+ secondary?: {
3038
+ disabled: string | number;
3039
+ rest: string | number;
3040
+ hover: string | number;
3041
+ active: string | number;
3042
+ selected?: string | number | undefined;
3043
+ } | undefined;
3044
+ danger?: {
3045
+ disabled: string | number;
3046
+ rest: string | number;
3047
+ hover: string | number;
3048
+ active: string | number;
3049
+ selected?: string | number | undefined;
3050
+ } | undefined;
3051
+ } | undefined;
3052
+ } | undefined;
3053
+ elevation?: Record<string, string> | undefined;
3054
+ motion?: {
3055
+ duration?: Record<string, number> | undefined;
3056
+ easing?: Record<string, string> | undefined;
3057
+ } | undefined;
3058
+ themes?: Record<string, Record<string, string | number>> | undefined;
3059
+ typography?: {
3060
+ fontFamily: string;
3061
+ roles?: {
3062
+ code?: {
3063
+ size: number;
3064
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
3065
+ lineHeight: number;
3066
+ letterSpacing?: string | number | undefined;
3067
+ fontFamily?: string | undefined;
3068
+ } | undefined;
3069
+ display?: {
3070
+ size: number;
3071
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
3072
+ lineHeight: number;
3073
+ letterSpacing?: string | number | undefined;
3074
+ fontFamily?: string | undefined;
3075
+ } | undefined;
3076
+ h1?: {
3077
+ size: number;
3078
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
3079
+ lineHeight: number;
3080
+ letterSpacing?: string | number | undefined;
3081
+ fontFamily?: string | undefined;
3082
+ } | undefined;
3083
+ h2?: {
3084
+ size: number;
3085
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
3086
+ lineHeight: number;
3087
+ letterSpacing?: string | number | undefined;
3088
+ fontFamily?: string | undefined;
3089
+ } | undefined;
3090
+ h3?: {
3091
+ size: number;
3092
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
3093
+ lineHeight: number;
3094
+ letterSpacing?: string | number | undefined;
3095
+ fontFamily?: string | undefined;
3096
+ } | undefined;
3097
+ body?: {
3098
+ size: number;
3099
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
3100
+ lineHeight: number;
3101
+ letterSpacing?: string | number | undefined;
3102
+ fontFamily?: string | undefined;
3103
+ } | undefined;
3104
+ small?: {
3105
+ size: number;
3106
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
3107
+ lineHeight: number;
3108
+ letterSpacing?: string | number | undefined;
3109
+ fontFamily?: string | undefined;
3110
+ } | undefined;
3111
+ caption?: {
3112
+ size: number;
3113
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
3114
+ lineHeight: number;
3115
+ letterSpacing?: string | number | undefined;
3116
+ fontFamily?: string | undefined;
3117
+ } | undefined;
3118
+ label?: {
3119
+ size: number;
3120
+ weight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
3121
+ lineHeight: number;
3122
+ letterSpacing?: string | number | undefined;
3123
+ fontFamily?: string | undefined;
3124
+ } | undefined;
3125
+ } | undefined;
3126
+ scale?: number[] | undefined;
3127
+ fontWeights?: (100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900)[] | undefined;
3128
+ } | undefined;
3129
+ spacing?: {
3130
+ semantic?: Record<string, string | number> | undefined;
3131
+ scale?: Record<string, number> | undefined;
3132
+ baseUnit?: number | undefined;
3133
+ } | undefined;
3134
+ radius?: Record<string, number> | undefined;
3135
+ states?: {
3136
+ hoverOpacity?: number | undefined;
3137
+ activeOpacity?: number | undefined;
3138
+ disabledOpacity?: number | undefined;
3139
+ focusRing?: {
3140
+ color: string | number;
3141
+ width: string;
3142
+ offset: string;
3143
+ style?: "solid" | "dashed" | "dotted" | undefined;
3144
+ } | undefined;
3145
+ } | undefined;
3146
+ layout?: {
3147
+ breakpoints?: Record<string, number> | undefined;
3148
+ grid?: {
3149
+ columns?: Record<string, number> | undefined;
3150
+ gutter?: number | undefined;
3151
+ margin?: number | undefined;
3152
+ } | undefined;
3153
+ container?: Record<string, number> | undefined;
3154
+ } | undefined;
3155
+ philosophy?: {
3156
+ density?: "compact" | "comfortable" | "spacious" | undefined;
3157
+ elevation?: "minimal" | "moderate" | "expressive" | undefined;
3158
+ motion?: "none" | "full" | "reduced" | undefined;
3159
+ } | undefined;
3160
+ customization?: {
3161
+ extends?: string | null | undefined;
3162
+ overrides?: Record<string, string | number> | undefined;
3163
+ } | undefined;
3164
+ output?: {
3165
+ target?: "react" | undefined;
3166
+ } | undefined;
3167
+ }>;
3168
+ declare const RulesConfigSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
3169
+ allowedVariants: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3170
+ requiredProps: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3171
+ maxWidth: z.ZodOptional<z.ZodString>;
3172
+ allowedRadius: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3173
+ allowedShadows: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3174
+ colorPalette: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3175
+ tokens: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
3176
+ a11y: z.ZodOptional<z.ZodObject<{
3177
+ keyboard: z.ZodOptional<z.ZodBoolean>;
3178
+ focusRing: z.ZodOptional<z.ZodBoolean>;
3179
+ ariaLabel: z.ZodOptional<z.ZodEnum<["required", "optional", "forbidden"]>>;
3180
+ role: z.ZodOptional<z.ZodString>;
3181
+ }, "strip", z.ZodTypeAny, {
3182
+ focusRing?: boolean | undefined;
3183
+ keyboard?: boolean | undefined;
3184
+ ariaLabel?: "required" | "optional" | "forbidden" | undefined;
3185
+ role?: string | undefined;
3186
+ }, {
3187
+ focusRing?: boolean | undefined;
3188
+ keyboard?: boolean | undefined;
3189
+ ariaLabel?: "required" | "optional" | "forbidden" | undefined;
3190
+ role?: string | undefined;
3191
+ }>>;
3192
+ }, "strip", z.ZodTypeAny, {
3193
+ tokens?: Record<string, string | number> | undefined;
3194
+ allowedVariants?: string[] | undefined;
3195
+ requiredProps?: string[] | undefined;
3196
+ maxWidth?: string | undefined;
3197
+ allowedRadius?: string[] | undefined;
3198
+ allowedShadows?: string[] | undefined;
3199
+ colorPalette?: string[] | undefined;
3200
+ a11y?: {
3201
+ focusRing?: boolean | undefined;
3202
+ keyboard?: boolean | undefined;
3203
+ ariaLabel?: "required" | "optional" | "forbidden" | undefined;
3204
+ role?: string | undefined;
3205
+ } | undefined;
3206
+ }, {
3207
+ tokens?: Record<string, string | number> | undefined;
3208
+ allowedVariants?: string[] | undefined;
3209
+ requiredProps?: string[] | undefined;
3210
+ maxWidth?: string | undefined;
3211
+ allowedRadius?: string[] | undefined;
3212
+ allowedShadows?: string[] | undefined;
3213
+ colorPalette?: string[] | undefined;
3214
+ a11y?: {
3215
+ focusRing?: boolean | undefined;
3216
+ keyboard?: boolean | undefined;
3217
+ ariaLabel?: "required" | "optional" | "forbidden" | undefined;
3218
+ role?: string | undefined;
3219
+ } | undefined;
3220
+ }>>;
3221
+
3222
+ export { type AdapterRegistry, CircularReferenceError, type ColorConfig, ColorConfigSchema, type ComponentTokens, type DesignSystemConfig, DesignSystemConfigSchema, type ElevationConfig, ElevationConfigSchema, type FrameworkAdapter, type GeneratedFile, type GlobalTokens, type IssueSeverity, type LayoutConfig, LayoutConfigSchema, type MetaConfig, type MotionConfig, MotionConfigSchema, type OutputConfig, OutputConfigSchema, type OutputTarget, type RadiusConfig, RadiusConfigSchema, type RawValue, type ResolvedConfig, type ResolvedTokenMap, type RulesConfig, RulesConfigSchema, SUPPORTED_TARGETS, type SemanticTokens, type SpacingConfig, SpacingConfigSchema, type StatesConfig, StatesConfigSchema, type ThemesConfig, ThemesConfigSchema, type TokenLayers, TokenLayersSchema, TokenResolutionError, TokenResolver, type TokenValue, type TypographyConfig, TypographyConfigSchema, type TypographyRole, UnresolvedReferenceError, type ValidationIssue, type ValidationResult, buildInitialConfig, buildInitialRules, buildThemeCss, checkContrast, emitBaseCss, emitJsTokens, emitTailwindConfig, emitThemeCss, extractRefs, generateButton, generateCard, generateChangelog, generateComponentIndex, generateCssFiles, generateDocs, generateInput, generateMetadata, generatePackageJson, generateReadme, generateThemeProvider, generateTsConfig, hasRefs, hexContrastRatio, isHexColor, resolveTokens, suggestContrastFix, validateConfig };