designmaxxing 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +220 -0
  3. package/dist/cli/cleanup.d.ts +5 -0
  4. package/dist/cli/cleanup.d.ts.map +1 -0
  5. package/dist/cli/cleanup.js +8 -0
  6. package/dist/cli/cleanup.js.map +1 -0
  7. package/dist/cli/extract.d.ts +3 -0
  8. package/dist/cli/extract.d.ts.map +1 -0
  9. package/dist/cli/extract.js +105 -0
  10. package/dist/cli/extract.js.map +1 -0
  11. package/dist/cli/index.d.ts +3 -0
  12. package/dist/cli/index.d.ts.map +1 -0
  13. package/dist/cli/index.js +44 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/cli/install-claude.d.ts +3 -0
  16. package/dist/cli/install-claude.d.ts.map +1 -0
  17. package/dist/cli/install-claude.js +39 -0
  18. package/dist/cli/install-claude.js.map +1 -0
  19. package/dist/cli/report.d.ts +3 -0
  20. package/dist/cli/report.d.ts.map +1 -0
  21. package/dist/cli/report.js +115 -0
  22. package/dist/cli/report.js.map +1 -0
  23. package/dist/cli/tokens.d.ts +3 -0
  24. package/dist/cli/tokens.d.ts.map +1 -0
  25. package/dist/cli/tokens.js +111 -0
  26. package/dist/cli/tokens.js.map +1 -0
  27. package/dist/cli/verify.d.ts +3 -0
  28. package/dist/cli/verify.d.ts.map +1 -0
  29. package/dist/cli/verify.js +95 -0
  30. package/dist/cli/verify.js.map +1 -0
  31. package/dist/extractors/animations.d.ts +6 -0
  32. package/dist/extractors/animations.d.ts.map +1 -0
  33. package/dist/extractors/animations.js +7 -0
  34. package/dist/extractors/animations.js.map +1 -0
  35. package/dist/extractors/assets.d.ts +6 -0
  36. package/dist/extractors/assets.d.ts.map +1 -0
  37. package/dist/extractors/assets.js +7 -0
  38. package/dist/extractors/assets.js.map +1 -0
  39. package/dist/extractors/base.d.ts +13 -0
  40. package/dist/extractors/base.d.ts.map +1 -0
  41. package/dist/extractors/base.js +27 -0
  42. package/dist/extractors/base.js.map +1 -0
  43. package/dist/extractors/behavior.d.ts +6 -0
  44. package/dist/extractors/behavior.d.ts.map +1 -0
  45. package/dist/extractors/behavior.js +7 -0
  46. package/dist/extractors/behavior.js.map +1 -0
  47. package/dist/extractors/components.d.ts +6 -0
  48. package/dist/extractors/components.d.ts.map +1 -0
  49. package/dist/extractors/components.js +7 -0
  50. package/dist/extractors/components.js.map +1 -0
  51. package/dist/extractors/framework.d.ts +6 -0
  52. package/dist/extractors/framework.d.ts.map +1 -0
  53. package/dist/extractors/framework.js +7 -0
  54. package/dist/extractors/framework.js.map +1 -0
  55. package/dist/extractors/layout.d.ts +6 -0
  56. package/dist/extractors/layout.d.ts.map +1 -0
  57. package/dist/extractors/layout.js +7 -0
  58. package/dist/extractors/layout.js.map +1 -0
  59. package/dist/extractors/network.d.ts +6 -0
  60. package/dist/extractors/network.d.ts.map +1 -0
  61. package/dist/extractors/network.js +7 -0
  62. package/dist/extractors/network.js.map +1 -0
  63. package/dist/extractors/orchestrator.d.ts +4 -0
  64. package/dist/extractors/orchestrator.d.ts.map +1 -0
  65. package/dist/extractors/orchestrator.js +96 -0
  66. package/dist/extractors/orchestrator.js.map +1 -0
  67. package/dist/extractors/typography.d.ts +6 -0
  68. package/dist/extractors/typography.d.ts.map +1 -0
  69. package/dist/extractors/typography.js +7 -0
  70. package/dist/extractors/typography.js.map +1 -0
  71. package/dist/extractors/visual.d.ts +6 -0
  72. package/dist/extractors/visual.d.ts.map +1 -0
  73. package/dist/extractors/visual.js +7 -0
  74. package/dist/extractors/visual.js.map +1 -0
  75. package/dist/generators/component-inventory.d.ts +4 -0
  76. package/dist/generators/component-inventory.d.ts.map +1 -0
  77. package/dist/generators/component-inventory.js +218 -0
  78. package/dist/generators/component-inventory.js.map +1 -0
  79. package/dist/generators/design-tokens.d.ts +5 -0
  80. package/dist/generators/design-tokens.d.ts.map +1 -0
  81. package/dist/generators/design-tokens.js +384 -0
  82. package/dist/generators/design-tokens.js.map +1 -0
  83. package/dist/generators/layout-blueprint.d.ts +4 -0
  84. package/dist/generators/layout-blueprint.d.ts.map +1 -0
  85. package/dist/generators/layout-blueprint.js +86 -0
  86. package/dist/generators/layout-blueprint.js.map +1 -0
  87. package/dist/generators/report.d.ts +3 -0
  88. package/dist/generators/report.d.ts.map +1 -0
  89. package/dist/generators/report.js +215 -0
  90. package/dist/generators/report.js.map +1 -0
  91. package/dist/index.d.ts +4 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +3 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/scripts/detect-framework.d.ts +2 -0
  96. package/dist/scripts/detect-framework.d.ts.map +1 -0
  97. package/dist/scripts/detect-framework.js +2 -0
  98. package/dist/scripts/detect-framework.js.map +1 -0
  99. package/dist/scripts/extract-components.d.ts +2 -0
  100. package/dist/scripts/extract-components.d.ts.map +1 -0
  101. package/dist/scripts/extract-components.js +2 -0
  102. package/dist/scripts/extract-components.js.map +1 -0
  103. package/dist/scripts/extract-layout.d.ts +2 -0
  104. package/dist/scripts/extract-layout.d.ts.map +1 -0
  105. package/dist/scripts/extract-layout.js +2 -0
  106. package/dist/scripts/extract-layout.js.map +1 -0
  107. package/dist/scripts/extract-styles.d.ts +2 -0
  108. package/dist/scripts/extract-styles.d.ts.map +1 -0
  109. package/dist/scripts/extract-styles.js +2 -0
  110. package/dist/scripts/extract-styles.js.map +1 -0
  111. package/dist/scripts/extract-typography.d.ts +2 -0
  112. package/dist/scripts/extract-typography.d.ts.map +1 -0
  113. package/dist/scripts/extract-typography.js +2 -0
  114. package/dist/scripts/extract-typography.js.map +1 -0
  115. package/dist/types/config.d.ts +80 -0
  116. package/dist/types/config.d.ts.map +1 -0
  117. package/dist/types/config.js +37 -0
  118. package/dist/types/config.js.map +1 -0
  119. package/dist/types/extraction.d.ts +204 -0
  120. package/dist/types/extraction.d.ts.map +1 -0
  121. package/dist/types/extraction.js +2 -0
  122. package/dist/types/extraction.js.map +1 -0
  123. package/dist/types/index.d.ts +5 -0
  124. package/dist/types/index.d.ts.map +1 -0
  125. package/dist/types/index.js +5 -0
  126. package/dist/types/index.js.map +1 -0
  127. package/dist/types/report.d.ts +18 -0
  128. package/dist/types/report.d.ts.map +1 -0
  129. package/dist/types/report.js +2 -0
  130. package/dist/types/report.js.map +1 -0
  131. package/dist/types/tokens.d.ts +62 -0
  132. package/dist/types/tokens.d.ts.map +1 -0
  133. package/dist/types/tokens.js +2 -0
  134. package/dist/types/tokens.js.map +1 -0
  135. package/dist/utils/color.d.ts +21 -0
  136. package/dist/utils/color.d.ts.map +1 -0
  137. package/dist/utils/color.js +107 -0
  138. package/dist/utils/color.js.map +1 -0
  139. package/dist/utils/css-parser.d.ts +31 -0
  140. package/dist/utils/css-parser.d.ts.map +1 -0
  141. package/dist/utils/css-parser.js +77 -0
  142. package/dist/utils/css-parser.js.map +1 -0
  143. package/dist/utils/dedup.d.ts +12 -0
  144. package/dist/utils/dedup.d.ts.map +1 -0
  145. package/dist/utils/dedup.js +44 -0
  146. package/dist/utils/dedup.js.map +1 -0
  147. package/dist/utils/fs.d.ts +6 -0
  148. package/dist/utils/fs.d.ts.map +1 -0
  149. package/dist/utils/fs.js +17 -0
  150. package/dist/utils/fs.js.map +1 -0
  151. package/dist/utils/screenshot-diff.d.ts +7 -0
  152. package/dist/utils/screenshot-diff.d.ts.map +1 -0
  153. package/dist/utils/screenshot-diff.js +43 -0
  154. package/dist/utils/screenshot-diff.js.map +1 -0
  155. package/package.json +60 -0
@@ -0,0 +1,204 @@
1
+ export interface ExtractionManifest {
2
+ readonly url: string;
3
+ readonly timestamp: string;
4
+ readonly breakpoints: readonly number[];
5
+ readonly modules: readonly string[];
6
+ readonly outputDir: string;
7
+ readonly framework: FrameworkDetection | null;
8
+ readonly results: Record<string, string>;
9
+ }
10
+ export interface ElementSelector {
11
+ readonly tag: string;
12
+ readonly classes: string;
13
+ readonly id: string;
14
+ readonly depth: number;
15
+ readonly path: string;
16
+ }
17
+ export interface ComputedStyleEntry {
18
+ readonly selector: ElementSelector;
19
+ readonly display: string;
20
+ readonly position: string;
21
+ readonly width: string;
22
+ readonly height: string;
23
+ readonly margin: string;
24
+ readonly padding: string;
25
+ readonly gap: string;
26
+ readonly fontSize: string;
27
+ readonly fontWeight: string;
28
+ readonly fontFamily: string;
29
+ readonly lineHeight: string;
30
+ readonly letterSpacing: string;
31
+ readonly color: string;
32
+ readonly backgroundColor: string;
33
+ readonly borderRadius: string;
34
+ readonly boxShadow: string;
35
+ readonly opacity: string;
36
+ readonly zIndex: string;
37
+ readonly overflow: string;
38
+ readonly textTransform: string;
39
+ }
40
+ export interface ColorEntry {
41
+ readonly hex: string;
42
+ readonly rgb: string;
43
+ readonly hsl: string;
44
+ readonly usageCount: number;
45
+ readonly properties: readonly string[];
46
+ readonly sampleElements: readonly string[];
47
+ }
48
+ export interface TypographyEntry {
49
+ readonly fontFamily: string;
50
+ readonly fontSize: string;
51
+ readonly fontWeight: string;
52
+ readonly lineHeight: string;
53
+ readonly letterSpacing: string;
54
+ readonly textTransform: string;
55
+ readonly sampleText: string;
56
+ readonly usageCount: number;
57
+ }
58
+ export interface FontFaceEntry {
59
+ readonly family: string;
60
+ readonly weight: string;
61
+ readonly style: string;
62
+ readonly src: string;
63
+ readonly format: string;
64
+ readonly display: string;
65
+ readonly unicodeRange: string;
66
+ }
67
+ export interface LayoutEntry {
68
+ readonly selector: string;
69
+ readonly display: string;
70
+ readonly flexDirection: string;
71
+ readonly flexWrap: string;
72
+ readonly justifyContent: string;
73
+ readonly alignItems: string;
74
+ readonly gap: string;
75
+ readonly gridTemplateColumns: string;
76
+ readonly gridTemplateRows: string;
77
+ readonly maxWidth: string;
78
+ readonly children: readonly LayoutEntry[];
79
+ }
80
+ export interface BreakpointEntry {
81
+ readonly query: string;
82
+ readonly minWidth: number | null;
83
+ readonly maxWidth: number | null;
84
+ readonly source: string;
85
+ }
86
+ export interface ComponentEntry {
87
+ readonly name: string;
88
+ readonly selector: string;
89
+ readonly html: string;
90
+ readonly states: Record<string, Record<string, string>>;
91
+ readonly dimensions: {
92
+ readonly width: string;
93
+ readonly height: string;
94
+ };
95
+ readonly children: readonly ComponentEntry[];
96
+ readonly framework: string | null;
97
+ }
98
+ export interface AssetEntry {
99
+ readonly type: 'image' | 'svg' | 'font' | 'icon';
100
+ readonly src: string;
101
+ readonly localPath: string | null;
102
+ readonly dimensions: {
103
+ readonly width: number;
104
+ readonly height: number;
105
+ } | null;
106
+ readonly format: string;
107
+ readonly metadata: Record<string, string>;
108
+ }
109
+ export interface AnimationEntry {
110
+ readonly selector: string;
111
+ readonly type: 'transition' | 'keyframes';
112
+ readonly property: string;
113
+ readonly duration: string;
114
+ readonly timingFunction: string;
115
+ readonly delay: string;
116
+ readonly keyframes: readonly KeyframeEntry[] | null;
117
+ }
118
+ export interface KeyframeEntry {
119
+ readonly offset: string;
120
+ readonly styles: Record<string, string>;
121
+ }
122
+ export interface BehaviorEntry {
123
+ readonly selector: string;
124
+ readonly events: readonly string[];
125
+ readonly scrollBehavior: string | null;
126
+ readonly position: string | null;
127
+ readonly formValidation: FormValidationEntry | null;
128
+ }
129
+ export interface FormValidationEntry {
130
+ readonly type: string;
131
+ readonly required: boolean;
132
+ readonly pattern: string | null;
133
+ readonly minLength: number | null;
134
+ readonly maxLength: number | null;
135
+ readonly min: string | null;
136
+ readonly max: string | null;
137
+ }
138
+ export interface FrameworkDetection {
139
+ readonly frameworks: readonly FrameworkEntry[];
140
+ readonly cssMethodology: readonly CSSMethodologyEntry[];
141
+ readonly componentLibrary: readonly ComponentLibraryEntry[];
142
+ }
143
+ export interface FrameworkEntry {
144
+ readonly name: string;
145
+ readonly version: string | null;
146
+ readonly confidence: number;
147
+ readonly signals: readonly string[];
148
+ }
149
+ export interface CSSMethodologyEntry {
150
+ readonly name: string;
151
+ readonly confidence: number;
152
+ readonly signals: readonly string[];
153
+ }
154
+ export interface ComponentLibraryEntry {
155
+ readonly name: string;
156
+ readonly confidence: number;
157
+ readonly signals: readonly string[];
158
+ }
159
+ export interface VisualExtractionResult {
160
+ readonly styles: readonly ComputedStyleEntry[];
161
+ readonly colors: readonly ColorEntry[];
162
+ readonly shadows: readonly string[];
163
+ readonly borderRadii: readonly string[];
164
+ }
165
+ export interface TypographyExtractionResult {
166
+ readonly scale: readonly TypographyEntry[];
167
+ readonly fontFaces: readonly FontFaceEntry[];
168
+ readonly fontLoadStrategy: string | null;
169
+ }
170
+ export interface LayoutExtractionResult {
171
+ readonly containers: readonly LayoutEntry[];
172
+ readonly breakpoints: readonly BreakpointEntry[];
173
+ readonly rootMaxWidth: string | null;
174
+ }
175
+ export interface ComponentExtractionResult {
176
+ readonly components: readonly ComponentEntry[];
177
+ readonly totalElements: number;
178
+ }
179
+ export interface AssetExtractionResult {
180
+ readonly assets: readonly AssetEntry[];
181
+ readonly downloadedCount: number;
182
+ readonly failedDownloads: readonly string[];
183
+ }
184
+ export interface AnimationExtractionResult {
185
+ readonly transitions: readonly AnimationEntry[];
186
+ readonly keyframes: readonly AnimationEntry[];
187
+ }
188
+ export interface BehaviorExtractionResult {
189
+ readonly interactions: readonly BehaviorEntry[];
190
+ readonly scrollBehaviors: readonly BehaviorEntry[];
191
+ readonly forms: readonly BehaviorEntry[];
192
+ }
193
+ export interface NetworkExtractionResult {
194
+ readonly endpoints: readonly NetworkEndpoint[];
195
+ readonly harPath: string | null;
196
+ }
197
+ export interface NetworkEndpoint {
198
+ readonly method: string;
199
+ readonly url: string;
200
+ readonly status: number;
201
+ readonly contentType: string;
202
+ readonly payloadSize: number;
203
+ }
204
+ //# sourceMappingURL=extraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/types/extraction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=extraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/types/extraction.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export * from './extraction.js';
2
+ export * from './tokens.js';
3
+ export * from './config.js';
4
+ export * from './report.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './extraction.js';
2
+ export * from './tokens.js';
3
+ export * from './config.js';
4
+ export * from './report.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,18 @@
1
+ import type { ExtractionManifest, FrameworkDetection, VisualExtractionResult, TypographyExtractionResult, LayoutExtractionResult, ComponentExtractionResult, AnimationExtractionResult } from './extraction.js';
2
+ import type { DesignTokens } from './tokens.js';
3
+ export interface ReportData {
4
+ readonly manifest: ExtractionManifest;
5
+ readonly tokens: DesignTokens | null;
6
+ readonly visual: VisualExtractionResult | null;
7
+ readonly typography: TypographyExtractionResult | null;
8
+ readonly layout: LayoutExtractionResult | null;
9
+ readonly components: ComponentExtractionResult | null;
10
+ readonly animations: AnimationExtractionResult | null;
11
+ readonly screenshotPaths: Record<number, string>;
12
+ readonly frameworkReport: FrameworkDetection | null;
13
+ readonly assetCount: number;
14
+ readonly endpointCount: number;
15
+ readonly includeScreenshots: boolean;
16
+ }
17
+ export type ReportFormat = 'html' | 'markdown';
18
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/types/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC/M,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE,0BAA0B,GAAG,IAAI,CAAA;IACtD,QAAQ,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IACrD,QAAQ,CAAC,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IACrD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChD,QAAQ,CAAC,eAAe,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;CACrC;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/types/report.ts"],"names":[],"mappings":""}
@@ -0,0 +1,62 @@
1
+ export interface DesignTokens {
2
+ readonly colors: Record<string, string>;
3
+ readonly typography: Record<string, TypographyToken>;
4
+ readonly spacing: Record<string, string>;
5
+ readonly borderRadius: Record<string, string>;
6
+ readonly shadows: Record<string, string>;
7
+ readonly breakpoints: Record<string, string>;
8
+ readonly transitions: Record<string, string>;
9
+ readonly zIndex: Record<string, number>;
10
+ }
11
+ export interface TypographyToken {
12
+ readonly fontFamily: string;
13
+ readonly fontSize: string;
14
+ readonly fontWeight: string;
15
+ readonly lineHeight: string;
16
+ readonly letterSpacing: string;
17
+ }
18
+ export type TokenOutputFormat = 'json' | 'css' | 'tailwind' | 'scss';
19
+ export type ComponentCategory = 'button' | 'input' | 'card' | 'navigation' | 'layout' | 'typography' | 'media' | 'other';
20
+ export interface ComponentInventoryEntry {
21
+ readonly name: string;
22
+ readonly category: ComponentCategory;
23
+ readonly selector: string;
24
+ readonly html: string;
25
+ readonly tokenMappings: Record<string, string>;
26
+ readonly states: Record<string, Record<string, string>>;
27
+ readonly dimensions: {
28
+ readonly width: string;
29
+ readonly height: string;
30
+ };
31
+ }
32
+ export interface ComponentInventory {
33
+ readonly components: readonly ComponentInventoryEntry[];
34
+ readonly categories: Record<ComponentCategory, number>;
35
+ readonly totalComponents: number;
36
+ }
37
+ export interface LayoutNode {
38
+ readonly selector: string;
39
+ readonly display: string;
40
+ readonly direction: string;
41
+ readonly justify: string;
42
+ readonly align: string;
43
+ readonly gap: string;
44
+ readonly gridColumns: string;
45
+ readonly gridRows: string;
46
+ readonly maxWidth: string;
47
+ readonly children: readonly LayoutNode[];
48
+ readonly depth: number;
49
+ }
50
+ export interface BreakpointSummary {
51
+ readonly name: string;
52
+ readonly minWidth: number | null;
53
+ readonly maxWidth: number | null;
54
+ readonly query: string;
55
+ }
56
+ export interface LayoutBlueprint {
57
+ readonly tree: readonly LayoutNode[];
58
+ readonly breakpoints: readonly BreakpointSummary[];
59
+ readonly rootMaxWidth: string | null;
60
+ readonly ascii: string;
61
+ }
62
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/types/tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/types/tokens.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ export interface RgbColor {
2
+ r: number;
3
+ g: number;
4
+ b: number;
5
+ a: number;
6
+ }
7
+ export declare function parseRgb(rgb: string): RgbColor;
8
+ export declare function rgbToHex(rgb: string): string;
9
+ export declare function rgbToHsl(rgb: string): string;
10
+ export declare function hexToRgb(hex: string): {
11
+ r: number;
12
+ g: number;
13
+ b: number;
14
+ };
15
+ /**
16
+ * CIE76 deltaE — perceptual color distance.
17
+ * Accepts rgb() or hex strings.
18
+ */
19
+ export declare function deltaE(color1: string, color2: string): number;
20
+ export declare function clusterColors(colors: string[], threshold: number): string[][];
21
+ //# sourceMappingURL=color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/utils/color.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAS9C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO5C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA2B5C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAWzE;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAmC7D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAoB7E"}
@@ -0,0 +1,107 @@
1
+ export function parseRgb(rgb) {
2
+ const match = rgb.match(/rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)(?:\s*,\s*([\d.]+))?\s*\)/);
3
+ if (!match)
4
+ return { r: 0, g: 0, b: 0, a: 1 };
5
+ return {
6
+ r: Math.round(Number(match[1])),
7
+ g: Math.round(Number(match[2])),
8
+ b: Math.round(Number(match[3])),
9
+ a: match[4] !== undefined ? Number(match[4]) : 1,
10
+ };
11
+ }
12
+ export function rgbToHex(rgb) {
13
+ const { r, g, b, a } = parseRgb(rgb);
14
+ const hex = `#${[r, g, b].map(c => c.toString(16).padStart(2, '0')).join('')}`;
15
+ if (a < 1) {
16
+ return hex + Math.round(a * 255).toString(16).padStart(2, '0');
17
+ }
18
+ return hex;
19
+ }
20
+ export function rgbToHsl(rgb) {
21
+ const { r, g, b, a } = parseRgb(rgb);
22
+ const rn = r / 255;
23
+ const gn = g / 255;
24
+ const bn = b / 255;
25
+ const max = Math.max(rn, gn, bn);
26
+ const min = Math.min(rn, gn, bn);
27
+ const l = (max + min) / 2;
28
+ if (max === min) {
29
+ return a < 1 ? `hsla(0, 0%, ${Math.round(l * 100)}%, ${a})` : `hsl(0, 0%, ${Math.round(l * 100)}%)`;
30
+ }
31
+ const d = max - min;
32
+ const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
33
+ let h = 0;
34
+ if (max === rn)
35
+ h = ((gn - bn) / d + (gn < bn ? 6 : 0)) / 6;
36
+ else if (max === gn)
37
+ h = ((bn - rn) / d + 2) / 6;
38
+ else
39
+ h = ((rn - gn) / d + 4) / 6;
40
+ const hDeg = Math.round(h * 360);
41
+ const sPct = Math.round(s * 100);
42
+ const lPct = Math.round(l * 100);
43
+ return a < 1 ? `hsla(${hDeg}, ${sPct}%, ${lPct}%, ${a})` : `hsl(${hDeg}, ${sPct}%, ${lPct}%)`;
44
+ }
45
+ export function hexToRgb(hex) {
46
+ const cleaned = hex.replace('#', '');
47
+ const full = cleaned.length === 3
48
+ ? cleaned.split('').map(c => c + c).join('')
49
+ : cleaned.slice(0, 6);
50
+ return {
51
+ r: parseInt(full.slice(0, 2), 16),
52
+ g: parseInt(full.slice(2, 4), 16),
53
+ b: parseInt(full.slice(4, 6), 16),
54
+ };
55
+ }
56
+ /**
57
+ * CIE76 deltaE — perceptual color distance.
58
+ * Accepts rgb() or hex strings.
59
+ */
60
+ export function deltaE(color1, color2) {
61
+ const toLab = (rgb) => {
62
+ let r = rgb.r / 255, g = rgb.g / 255, b = rgb.b / 255;
63
+ r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;
64
+ g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;
65
+ b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;
66
+ let x = (r * 0.4124564 + g * 0.3575761 + b * 0.1804375) / 0.95047;
67
+ let y = (r * 0.2126729 + g * 0.7151522 + b * 0.0721750) / 1.00000;
68
+ let z = (r * 0.0193339 + g * 0.1191920 + b * 0.9503041) / 1.08883;
69
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + 16 / 116;
70
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + 16 / 116;
71
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + 16 / 116;
72
+ return { L: (116 * y) - 16, a: 500 * (x - y), b: 200 * (y - z) };
73
+ };
74
+ const parseColor = (c) => {
75
+ if (c.startsWith('#')) {
76
+ const { r, g, b } = hexToRgb(c);
77
+ return { r, g, b, a: 1 };
78
+ }
79
+ return parseRgb(c);
80
+ };
81
+ const lab1 = toLab(parseColor(color1));
82
+ const lab2 = toLab(parseColor(color2));
83
+ return Math.sqrt(Math.pow(lab2.L - lab1.L, 2) +
84
+ Math.pow(lab2.a - lab1.a, 2) +
85
+ Math.pow(lab2.b - lab1.b, 2));
86
+ }
87
+ export function clusterColors(colors, threshold) {
88
+ const clusters = [];
89
+ const assigned = new Set();
90
+ for (let i = 0; i < colors.length; i++) {
91
+ if (assigned.has(i))
92
+ continue;
93
+ const cluster = [colors[i]];
94
+ assigned.add(i);
95
+ for (let j = i + 1; j < colors.length; j++) {
96
+ if (assigned.has(j))
97
+ continue;
98
+ if (deltaE(colors[i], colors[j]) < threshold) {
99
+ cluster.push(colors[j]);
100
+ assigned.add(j);
101
+ }
102
+ }
103
+ clusters.push(cluster);
104
+ }
105
+ return clusters;
106
+ }
107
+ //# sourceMappingURL=color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/utils/color.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export interface BoxShadowPart {
2
+ color: string;
3
+ offsetX: string;
4
+ offsetY: string;
5
+ blur: string;
6
+ spread: string;
7
+ }
8
+ export interface MarginPaddingPart {
9
+ top: string;
10
+ right: string;
11
+ bottom: string;
12
+ left: string;
13
+ }
14
+ export interface FontShorthandPart {
15
+ family: string;
16
+ size: string;
17
+ weight: string;
18
+ lineHeight: string;
19
+ }
20
+ export interface TransitionPart {
21
+ property: string;
22
+ duration: string;
23
+ timingFunction: string;
24
+ delay: string;
25
+ }
26
+ export declare function parseBoxShadow(value: string): BoxShadowPart[];
27
+ export declare function parseMarginPadding(value: string): MarginPaddingPart;
28
+ export declare function parseFontShorthand(value: string): FontShorthandPart;
29
+ export declare function parseTransition(value: string): TransitionPart[];
30
+ export declare function extractNumericValue(value: string): number | null;
31
+ //# sourceMappingURL=css-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-parser.d.ts","sourceRoot":"","sources":["../../src/utils/css-parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAyB7D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAUnE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAyBnE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAY/D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKhE"}
@@ -0,0 +1,77 @@
1
+ export function parseBoxShadow(value) {
2
+ if (!value || value === 'none')
3
+ return [];
4
+ const shadows = [];
5
+ // Split on commas that are not inside parentheses
6
+ const parts = value.split(/,(?![^(]*\))/).map(s => s.trim());
7
+ for (const part of parts) {
8
+ const colorMatch = part.match(/(rgba?\([^)]+\)|hsla?\([^)]+\)|#[\da-fA-F]{3,8}|\b\w+\b)$/i)
9
+ || part.match(/^(rgba?\([^)]+\)|hsla?\([^)]+\)|#[\da-fA-F]{3,8}|\b[a-z]+\b)/i);
10
+ const color = colorMatch ? colorMatch[1] : '';
11
+ const withoutColor = part.replace(color, '').trim();
12
+ const values = withoutColor.split(/\s+/).filter(Boolean);
13
+ shadows.push({
14
+ offsetX: values[0] || '0',
15
+ offsetY: values[1] || '0',
16
+ blur: values[2] || '0',
17
+ spread: values[3] || '0',
18
+ color,
19
+ });
20
+ }
21
+ return shadows;
22
+ }
23
+ export function parseMarginPadding(value) {
24
+ const parts = value.split(/\s+/).filter(Boolean);
25
+ switch (parts.length) {
26
+ case 1: return { top: parts[0], right: parts[0], bottom: parts[0], left: parts[0] };
27
+ case 2: return { top: parts[0], right: parts[1], bottom: parts[0], left: parts[1] };
28
+ case 3: return { top: parts[0], right: parts[1], bottom: parts[2], left: parts[1] };
29
+ case 4: return { top: parts[0], right: parts[1], bottom: parts[2], left: parts[3] };
30
+ default: return { top: '0', right: '0', bottom: '0', left: '0' };
31
+ }
32
+ }
33
+ export function parseFontShorthand(value) {
34
+ // CSS font shorthand: [style] [variant] [weight] size[/lineHeight] family
35
+ const parts = value.split(/\s+/);
36
+ const result = { family: '', size: '', weight: '400', lineHeight: 'normal' };
37
+ // Find the size (contains digits + unit), everything after is family
38
+ for (let i = 0; i < parts.length; i++) {
39
+ const sizeMatch = parts[i].match(/^([\d.]+(?:px|rem|em|pt|%))(?:\/([\d.]+(?:px|rem|em|%|[\d.]+)?))?$/);
40
+ if (sizeMatch) {
41
+ result.size = sizeMatch[1];
42
+ if (sizeMatch[2])
43
+ result.lineHeight = sizeMatch[2];
44
+ result.family = parts.slice(i + 1).join(' ').replace(/["']/g, '');
45
+ // Everything before size is weight/style/variant
46
+ for (let j = 0; j < i; j++) {
47
+ const w = parts[j];
48
+ if (/^\d{3}$/.test(w) || ['bold', 'bolder', 'lighter', 'normal'].includes(w)) {
49
+ result.weight = w;
50
+ }
51
+ }
52
+ break;
53
+ }
54
+ }
55
+ return result;
56
+ }
57
+ export function parseTransition(value) {
58
+ if (!value || value === 'none')
59
+ return [];
60
+ return value.split(/,(?![^(]*\))/).map(part => {
61
+ const tokens = part.trim().split(/\s+/);
62
+ return {
63
+ property: tokens[0] || 'all',
64
+ duration: tokens[1] || '0s',
65
+ timingFunction: tokens[2] || 'ease',
66
+ delay: tokens[3] || '0s',
67
+ };
68
+ });
69
+ }
70
+ export function extractNumericValue(value) {
71
+ const match = value.match(/^(-?[\d.]+)/);
72
+ if (!match)
73
+ return null;
74
+ const num = parseFloat(match[1]);
75
+ return isNaN(num) ? null : num;
76
+ }
77
+ //# sourceMappingURL=css-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-parser.js","sourceRoot":"","sources":["../../src/utils/css-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface ValueCount {
2
+ value: string;
3
+ count: number;
4
+ }
5
+ export declare function deduplicateValues(values: string[]): ValueCount[];
6
+ export interface ScaleDetection {
7
+ base: number;
8
+ multipliers: number[];
9
+ }
10
+ export declare function detectScale(values: number[]): ScaleDetection | null;
11
+ export declare function suggestTokenName(value: string, scale: string[]): string;
12
+ //# sourceMappingURL=dedup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedup.d.ts","sourceRoot":"","sources":["../../src/utils/dedup.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAUhE;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,GAAG,IAAI,CA0BnE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAWvE"}