@buoy-design/core 0.1.2 → 0.1.4

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,221 @@
1
+ /**
2
+ * Confidence scoring for fix suggestions
3
+ *
4
+ * Determines how confident we are that a fix is correct and safe to apply.
5
+ */
6
+ /**
7
+ * Score confidence for a color replacement
8
+ */
9
+ export function scoreColorConfidence(original, token) {
10
+ if (token.value.type !== 'color') {
11
+ return { level: 'low', score: 0, reason: 'Token is not a color' };
12
+ }
13
+ const normalizedOriginal = normalizeColor(original);
14
+ const tokenHex = token.value.hex.toLowerCase();
15
+ // Exact match
16
+ if (normalizedOriginal === tokenHex) {
17
+ return {
18
+ level: 'high',
19
+ score: 100,
20
+ reason: `Exact match to ${token.name}`,
21
+ };
22
+ }
23
+ // Calculate color distance
24
+ const distance = colorDistance(normalizedOriginal, tokenHex);
25
+ if (distance === 0) {
26
+ return {
27
+ level: 'high',
28
+ score: 100,
29
+ reason: `Exact match to ${token.name}`,
30
+ };
31
+ }
32
+ if (distance <= 5) {
33
+ // Very close colors (imperceptible difference)
34
+ const score = 98 - distance;
35
+ return {
36
+ level: 'high',
37
+ score,
38
+ reason: `Near-exact match to ${token.name} (deltaE: ${distance.toFixed(1)})`,
39
+ };
40
+ }
41
+ if (distance <= 15) {
42
+ // Close colors (slight difference)
43
+ const score = 90 - distance * 2;
44
+ return {
45
+ level: 'medium',
46
+ score: Math.max(70, score),
47
+ reason: `Close match to ${token.name} (deltaE: ${distance.toFixed(1)})`,
48
+ };
49
+ }
50
+ if (distance <= 30) {
51
+ // Somewhat similar colors
52
+ const score = 70 - distance;
53
+ return {
54
+ level: 'low',
55
+ score: Math.max(40, score),
56
+ reason: `Possible match to ${token.name} (deltaE: ${distance.toFixed(1)})`,
57
+ };
58
+ }
59
+ return {
60
+ level: 'low',
61
+ score: 20,
62
+ reason: `Weak match to ${token.name} (deltaE: ${distance.toFixed(1)})`,
63
+ };
64
+ }
65
+ /**
66
+ * Score confidence for a spacing replacement
67
+ */
68
+ export function scoreSpacingConfidence(original, token) {
69
+ if (token.value.type !== 'spacing') {
70
+ return { level: 'low', score: 0, reason: 'Token is not a spacing value' };
71
+ }
72
+ const originalPx = parseSpacingToPx(original);
73
+ if (originalPx === null) {
74
+ return { level: 'low', score: 0, reason: 'Could not parse original spacing' };
75
+ }
76
+ const tokenPx = convertToPx(token.value.value, token.value.unit);
77
+ // Exact match
78
+ if (originalPx === tokenPx) {
79
+ return {
80
+ level: 'high',
81
+ score: 100,
82
+ reason: `Exact match to ${token.name}`,
83
+ };
84
+ }
85
+ const diff = Math.abs(originalPx - tokenPx);
86
+ const percentDiff = (diff / Math.max(originalPx, tokenPx, 1)) * 100;
87
+ if (diff <= 1) {
88
+ // Within 1px (likely rounding)
89
+ return {
90
+ level: 'high',
91
+ score: 98,
92
+ reason: `Near-exact match to ${token.name} (${diff}px difference)`,
93
+ };
94
+ }
95
+ if (diff <= 2) {
96
+ // Within 2px
97
+ return {
98
+ level: 'high',
99
+ score: 95,
100
+ reason: `Close match to ${token.name} (${diff}px difference)`,
101
+ };
102
+ }
103
+ if (percentDiff <= 10) {
104
+ // Within 10% difference
105
+ const score = 90 - percentDiff;
106
+ return {
107
+ level: 'medium',
108
+ score: Math.max(70, score),
109
+ reason: `Approximate match to ${token.name} (${diff}px / ${percentDiff.toFixed(0)}% difference)`,
110
+ };
111
+ }
112
+ if (percentDiff <= 25) {
113
+ // Within 25% difference
114
+ const score = 70 - percentDiff;
115
+ return {
116
+ level: 'low',
117
+ score: Math.max(40, score),
118
+ reason: `Possible match to ${token.name} (${diff}px / ${percentDiff.toFixed(0)}% difference)`,
119
+ };
120
+ }
121
+ return {
122
+ level: 'low',
123
+ score: 20,
124
+ reason: `Weak match to ${token.name} (${diff}px difference)`,
125
+ };
126
+ }
127
+ /**
128
+ * Score confidence for any fix type
129
+ */
130
+ export function scoreConfidence(original, token, fixType) {
131
+ switch (fixType) {
132
+ case 'hardcoded-color':
133
+ return scoreColorConfidence(original, token);
134
+ case 'hardcoded-spacing':
135
+ case 'hardcoded-radius':
136
+ case 'hardcoded-font-size':
137
+ return scoreSpacingConfidence(original, token);
138
+ default:
139
+ return { level: 'low', score: 0, reason: 'Unknown fix type' };
140
+ }
141
+ }
142
+ // Helper functions
143
+ /**
144
+ * Normalize color to lowercase hex
145
+ */
146
+ function normalizeColor(color) {
147
+ const trimmed = color.trim().toLowerCase();
148
+ // Already hex
149
+ if (/^#[0-9a-f]{6}$/i.test(trimmed)) {
150
+ return trimmed;
151
+ }
152
+ if (/^#[0-9a-f]{3}$/i.test(trimmed)) {
153
+ // Expand shorthand
154
+ return `#${trimmed[1]}${trimmed[1]}${trimmed[2]}${trimmed[2]}${trimmed[3]}${trimmed[3]}`;
155
+ }
156
+ if (/^#[0-9a-f]{8}$/i.test(trimmed)) {
157
+ // Strip alpha
158
+ return trimmed.slice(0, 7);
159
+ }
160
+ // RGB/RGBA
161
+ const rgbMatch = trimmed.match(/rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);
162
+ if (rgbMatch) {
163
+ const r = parseInt(rgbMatch[1], 10).toString(16).padStart(2, '0');
164
+ const g = parseInt(rgbMatch[2], 10).toString(16).padStart(2, '0');
165
+ const b = parseInt(rgbMatch[3], 10).toString(16).padStart(2, '0');
166
+ return `#${r}${g}${b}`;
167
+ }
168
+ return trimmed;
169
+ }
170
+ /**
171
+ * Calculate color distance (simplified deltaE)
172
+ */
173
+ function colorDistance(hex1, hex2) {
174
+ const rgb1 = hexToRgb(hex1);
175
+ const rgb2 = hexToRgb(hex2);
176
+ if (!rgb1 || !rgb2)
177
+ return 100;
178
+ // Simple Euclidean distance in RGB space
179
+ const distance = Math.sqrt(Math.pow(rgb1.r - rgb2.r, 2) +
180
+ Math.pow(rgb1.g - rgb2.g, 2) +
181
+ Math.pow(rgb1.b - rgb2.b, 2));
182
+ // Normalize to 0-100 scale (max distance is ~441)
183
+ return (distance / 441) * 100;
184
+ }
185
+ /**
186
+ * Convert hex to RGB
187
+ */
188
+ function hexToRgb(hex) {
189
+ const match = hex.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);
190
+ if (!match)
191
+ return null;
192
+ return {
193
+ r: parseInt(match[1], 16),
194
+ g: parseInt(match[2], 16),
195
+ b: parseInt(match[3], 16),
196
+ };
197
+ }
198
+ /**
199
+ * Parse spacing value to pixels
200
+ */
201
+ function parseSpacingToPx(value) {
202
+ const match = value.trim().match(/^(-?[\d.]+)\s*(px|rem|em)?$/i);
203
+ if (!match)
204
+ return null;
205
+ const num = parseFloat(match[1]);
206
+ const unit = (match[2] || 'px').toLowerCase();
207
+ return convertToPx(num, unit);
208
+ }
209
+ /**
210
+ * Convert value to pixels
211
+ */
212
+ function convertToPx(value, unit) {
213
+ switch (unit) {
214
+ case 'rem':
215
+ case 'em':
216
+ return value * 16; // Assume 16px base
217
+ default:
218
+ return value;
219
+ }
220
+ }
221
+ //# sourceMappingURL=confidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confidence.js","sourceRoot":"","sources":["../../src/fix/confidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Fix Generator
3
+ *
4
+ * Generates Fix objects from DriftSignals by matching hardcoded values to design tokens.
5
+ */
6
+ import type { DriftSignal, DesignToken } from '../models/index.js';
7
+ import type { Fix, FixGeneratorOptions, ConfidenceLevel } from '../models/fix.js';
8
+ /**
9
+ * Generate fixes from drift signals
10
+ */
11
+ export declare function generateFixes(drifts: DriftSignal[], tokens: DesignToken[], options?: FixGeneratorOptions): Fix[];
12
+ /**
13
+ * Get summary of fixes grouped by type and confidence
14
+ */
15
+ export declare function summarizeFixes(fixes: Fix[]): {
16
+ total: number;
17
+ byConfidence: Record<ConfidenceLevel, number>;
18
+ byType: Record<string, number>;
19
+ highConfidenceCount: number;
20
+ };
21
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/fix/generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAgBlF;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,WAAW,EAAE,EACrB,OAAO,GAAE,mBAAwB,GAChC,GAAG,EAAE,CAoCP;AA6ND;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAqBA"}
@@ -0,0 +1,250 @@
1
+ /**
2
+ * Fix Generator
3
+ *
4
+ * Generates Fix objects from DriftSignals by matching hardcoded values to design tokens.
5
+ */
6
+ import { createFixId, meetsConfidenceThreshold } from '../models/fix.js';
7
+ import { scoreConfidence } from './confidence.js';
8
+ /**
9
+ * Supported fix types for V1
10
+ */
11
+ const SUPPORTED_FIX_TYPES = [
12
+ 'hardcoded-color',
13
+ 'hardcoded-spacing',
14
+ 'hardcoded-radius',
15
+ 'hardcoded-font-size',
16
+ ];
17
+ /**
18
+ * Generate fixes from drift signals
19
+ */
20
+ export function generateFixes(drifts, tokens, options = {}) {
21
+ const { types = [...SUPPORTED_FIX_TYPES], minConfidence = 'low', includeFiles = [], excludeFiles = [], } = options;
22
+ const fixes = [];
23
+ for (const drift of drifts) {
24
+ // Filter by drift type
25
+ if (!isSupportedFixType(drift.type))
26
+ continue;
27
+ if (!types.includes(drift.type))
28
+ continue;
29
+ // Filter by file patterns
30
+ const file = drift.source.location?.split(':')[0] || '';
31
+ if (!matchesFilePatterns(file, includeFiles, excludeFiles))
32
+ continue;
33
+ // Try to generate a fix
34
+ const fix = generateFixForDrift(drift, tokens);
35
+ if (!fix)
36
+ continue;
37
+ // Filter by confidence
38
+ if (!meetsConfidenceThreshold(fix.confidence, minConfidence))
39
+ continue;
40
+ fixes.push(fix);
41
+ }
42
+ // Sort by confidence (high first) then by file
43
+ return fixes.sort((a, b) => {
44
+ const confidenceOrder = { high: 0, medium: 1, low: 2 };
45
+ const confDiff = confidenceOrder[a.confidence] - confidenceOrder[b.confidence];
46
+ if (confDiff !== 0)
47
+ return confDiff;
48
+ return a.file.localeCompare(b.file);
49
+ });
50
+ }
51
+ /**
52
+ * Generate a fix for a single drift signal
53
+ */
54
+ function generateFixForDrift(drift, tokens) {
55
+ // Extract the hardcoded value from drift details
56
+ const hardcodedValue = getHardcodedValue(drift);
57
+ if (!hardcodedValue)
58
+ return null;
59
+ // Find the best matching token
60
+ const match = findBestTokenMatch(hardcodedValue, drift.type, tokens);
61
+ if (!match)
62
+ return null;
63
+ // Parse location
64
+ const location = parseLocation(drift.source.location);
65
+ if (!location)
66
+ return null;
67
+ // Generate replacement
68
+ const replacement = generateReplacement(match.token, drift.type);
69
+ if (!replacement)
70
+ return null;
71
+ return {
72
+ id: createFixId(location.file, location.line, location.column),
73
+ driftSignalId: drift.id,
74
+ confidence: match.confidence.level,
75
+ confidenceScore: match.confidence.score,
76
+ file: location.file,
77
+ line: location.line,
78
+ column: location.column,
79
+ original: hardcodedValue,
80
+ replacement,
81
+ reason: match.confidence.reason,
82
+ fixType: drift.type,
83
+ tokenName: match.token.name,
84
+ };
85
+ }
86
+ /**
87
+ * Check if drift type is supported for fixing
88
+ */
89
+ function isSupportedFixType(type) {
90
+ return SUPPORTED_FIX_TYPES.includes(type);
91
+ }
92
+ /**
93
+ * Check if file matches include/exclude patterns
94
+ */
95
+ function matchesFilePatterns(file, includePatterns, excludePatterns) {
96
+ // If no include patterns, include all
97
+ if (includePatterns.length > 0) {
98
+ const included = includePatterns.some((pattern) => simpleGlobMatch(file, pattern));
99
+ if (!included)
100
+ return false;
101
+ }
102
+ // Check exclude patterns
103
+ if (excludePatterns.length > 0) {
104
+ const excluded = excludePatterns.some((pattern) => simpleGlobMatch(file, pattern));
105
+ if (excluded)
106
+ return false;
107
+ }
108
+ return true;
109
+ }
110
+ /**
111
+ * Simple glob-like pattern matching
112
+ * Supports * (any chars except /) and ** (any chars including /)
113
+ */
114
+ function simpleGlobMatch(file, pattern) {
115
+ // Convert glob pattern to regex
116
+ const regexStr = pattern
117
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape special regex chars
118
+ .replace(/\*\*/g, '{{GLOBSTAR}}') // Placeholder for **
119
+ .replace(/\*/g, '[^/]*') // * matches anything except /
120
+ .replace(/{{GLOBSTAR}}/g, '.*'); // ** matches anything including /
121
+ const regex = new RegExp(`^${regexStr}$|/${regexStr}$|^${regexStr}/`);
122
+ return regex.test(file);
123
+ }
124
+ /**
125
+ * Extract hardcoded value from drift signal
126
+ */
127
+ function getHardcodedValue(drift) {
128
+ // Check details.actual first (the hardcoded value found)
129
+ if (drift.details?.actual && typeof drift.details.actual === 'string') {
130
+ return drift.details.actual;
131
+ }
132
+ // Try to extract from message
133
+ // Common patterns: "Found hardcoded color #ffffff", "value '#3b82f6'"
134
+ const hexMatch = drift.message.match(/#[0-9a-fA-F]{3,8}\b/);
135
+ if (hexMatch)
136
+ return hexMatch[0];
137
+ const rgbMatch = drift.message.match(/rgba?\s*\([^)]+\)/i);
138
+ if (rgbMatch)
139
+ return rgbMatch[0];
140
+ const pxMatch = drift.message.match(/\b\d+(?:\.\d+)?px\b/);
141
+ if (pxMatch)
142
+ return pxMatch[0];
143
+ return null;
144
+ }
145
+ /**
146
+ * Find the best matching token for a hardcoded value
147
+ */
148
+ function findBestTokenMatch(value, driftType, tokens) {
149
+ const relevantTokens = filterTokensByType(tokens, driftType);
150
+ if (relevantTokens.length === 0)
151
+ return null;
152
+ let bestMatch = null;
153
+ for (const token of relevantTokens) {
154
+ const confidence = scoreConfidence(value, token, driftType);
155
+ if (!bestMatch || confidence.score > bestMatch.confidence.score) {
156
+ bestMatch = { token, confidence };
157
+ }
158
+ }
159
+ // Only return if we have a reasonable match
160
+ if (bestMatch && bestMatch.confidence.score >= 40) {
161
+ return bestMatch;
162
+ }
163
+ return null;
164
+ }
165
+ /**
166
+ * Filter tokens by drift type
167
+ */
168
+ function filterTokensByType(tokens, driftType) {
169
+ switch (driftType) {
170
+ case 'hardcoded-color':
171
+ return tokens.filter((t) => t.category === 'color');
172
+ case 'hardcoded-spacing':
173
+ case 'hardcoded-radius':
174
+ return tokens.filter((t) => t.category === 'spacing');
175
+ case 'hardcoded-font-size':
176
+ return tokens.filter((t) => t.category === 'typography' || t.category === 'sizing');
177
+ default:
178
+ return [];
179
+ }
180
+ }
181
+ /**
182
+ * Generate replacement string for a token
183
+ */
184
+ function generateReplacement(token, driftType) {
185
+ // Default to CSS custom property
186
+ const cssVarName = tokenToCssVar(token.name);
187
+ switch (driftType) {
188
+ case 'hardcoded-color':
189
+ return `var(${cssVarName})`;
190
+ case 'hardcoded-spacing':
191
+ case 'hardcoded-radius':
192
+ case 'hardcoded-font-size':
193
+ return `var(${cssVarName})`;
194
+ default:
195
+ return null;
196
+ }
197
+ }
198
+ /**
199
+ * Convert token name to CSS custom property name
200
+ */
201
+ function tokenToCssVar(name) {
202
+ // If already has -- prefix, use as-is
203
+ if (name.startsWith('--'))
204
+ return name;
205
+ // Convert camelCase or dot notation to kebab-case
206
+ const kebab = name
207
+ .replace(/\./g, '-')
208
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
209
+ .toLowerCase();
210
+ return `--${kebab}`;
211
+ }
212
+ /**
213
+ * Parse location string into file, line, column
214
+ */
215
+ function parseLocation(location) {
216
+ if (!location)
217
+ return null;
218
+ // Format: "file/path.tsx:10:5" or "file/path.tsx:10"
219
+ const match = location.match(/^(.+?):(\d+)(?::(\d+))?$/);
220
+ if (!match)
221
+ return null;
222
+ return {
223
+ file: match[1],
224
+ line: parseInt(match[2], 10),
225
+ column: match[3] ? parseInt(match[3], 10) : 1,
226
+ };
227
+ }
228
+ /**
229
+ * Get summary of fixes grouped by type and confidence
230
+ */
231
+ export function summarizeFixes(fixes) {
232
+ const byConfidence = {
233
+ high: 0,
234
+ medium: 0,
235
+ low: 0,
236
+ };
237
+ const byType = {};
238
+ for (const fix of fixes) {
239
+ const conf = fix.confidence;
240
+ byConfidence[conf] = (byConfidence[conf] || 0) + 1;
241
+ byType[fix.fixType] = (byType[fix.fixType] || 0) + 1;
242
+ }
243
+ return {
244
+ total: fixes.length,
245
+ byConfidence,
246
+ byType,
247
+ highConfidenceCount: byConfidence.high || 0,
248
+ };
249
+ }
250
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/fix/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Fix module - generates and applies fixes for drift signals
3
+ */
4
+ export { scoreConfidence, scoreColorConfidence, scoreSpacingConfidence } from './confidence.js';
5
+ export type { ConfidenceResult } from './confidence.js';
6
+ export { generateFixes, summarizeFixes } from './generator.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fix/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAChG,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Fix module - generates and applies fixes for drift signals
3
+ */
4
+ // Re-export confidence scoring
5
+ export { scoreConfidence, scoreColorConfidence, scoreSpacingConfidence } from './confidence.js';
6
+ // Re-export fix generator
7
+ export { generateFixes, summarizeFixes } from './generator.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fix/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,+BAA+B;AAC/B,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGhG,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
@@ -132,4 +132,53 @@ export interface UsageInfo {
132
132
  }>;
133
133
  unusedSince?: Date;
134
134
  }
135
+ export interface DesignSystemDiagnosis {
136
+ /** Overall maturity score 0-100 */
137
+ maturityScore: number;
138
+ /** Maturity level based on score */
139
+ maturityLevel: 'none' | 'emerging' | 'defined' | 'managed' | 'optimized';
140
+ /** CSS analysis results */
141
+ cssAnalysis: {
142
+ uniqueColors: number;
143
+ uniqueSpacing: number;
144
+ uniqueFonts: number;
145
+ tokenizationScore: number;
146
+ hardcodedValues: number;
147
+ suggestedPalette: string[];
148
+ suggestedSpacingScale: number[];
149
+ };
150
+ /** Team analysis */
151
+ teamAnalysis: {
152
+ totalContributors: number;
153
+ activeContributors: number;
154
+ stylingContributors: number;
155
+ avgCommitsPerContributor: number;
156
+ };
157
+ /** Codebase analysis */
158
+ codebaseAnalysis: {
159
+ totalFiles: number;
160
+ cssFiles: number;
161
+ componentFiles: number;
162
+ frameworksDetected: string[];
163
+ };
164
+ /** Recommendations based on analysis */
165
+ recommendations: DesignSystemRecommendation[];
166
+ /** Suggested design tokens to create */
167
+ suggestedTokens: SuggestedToken[];
168
+ }
169
+ export interface DesignSystemRecommendation {
170
+ priority: 'high' | 'medium' | 'low';
171
+ category: 'tokens' | 'components' | 'documentation' | 'tooling' | 'process';
172
+ title: string;
173
+ description: string;
174
+ effort: 'small' | 'medium' | 'large';
175
+ impact: 'small' | 'medium' | 'large';
176
+ }
177
+ export interface SuggestedToken {
178
+ name: string;
179
+ value: string;
180
+ category: 'color' | 'spacing' | 'font' | 'border' | 'shadow';
181
+ usageCount: number;
182
+ replaces: string[];
183
+ }
135
184
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/graph/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/graph/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,4 +5,5 @@ export * from './tokenization/index.js';
5
5
  export * from './plugins/index.js';
6
6
  export * from './tokens/index.js';
7
7
  export * from './graph/index.js';
8
+ export * from './fix/index.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAGlC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAGlC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -12,4 +12,6 @@ export * from './plugins/index.js';
12
12
  export * from './tokens/index.js';
13
13
  // Re-export graph
14
14
  export * from './graph/index.js';
15
+ // Re-export fix
16
+ export * from './fix/index.js';
15
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,cAAc,mBAAmB,CAAC;AAElC,qBAAqB;AACrB,cAAc,qBAAqB,CAAC;AAEpC,uBAAuB;AACvB,cAAc,uBAAuB,CAAC;AAEtC,yBAAyB;AACzB,cAAc,yBAAyB,CAAC;AAExC,oBAAoB;AACpB,cAAc,oBAAoB,CAAC;AAEnC,0BAA0B;AAC1B,cAAc,mBAAmB,CAAC;AAElC,kBAAkB;AAClB,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,cAAc,mBAAmB,CAAC;AAElC,qBAAqB;AACrB,cAAc,qBAAqB,CAAC;AAEpC,uBAAuB;AACvB,cAAc,uBAAuB,CAAC;AAEtC,yBAAyB;AACzB,cAAc,yBAAyB,CAAC;AAExC,oBAAoB;AACpB,cAAc,oBAAoB,CAAC;AAEnC,0BAA0B;AAC1B,cAAc,mBAAmB,CAAC;AAElC,kBAAkB;AAClB,cAAc,kBAAkB,CAAC;AAEjC,gBAAgB;AAChB,cAAc,gBAAgB,CAAC"}