figma-to-code-agent 0.4.0 → 0.6.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 (29) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/QUICKSTART.md +11 -1
  3. package/README.md +31 -9
  4. package/dist/generation/ReactGenerator.d.ts +11 -2
  5. package/dist/generation/ReactGenerator.d.ts.map +1 -1
  6. package/dist/generation/ReactGenerator.js +147 -24
  7. package/dist/generation/ReactGenerator.js.map +1 -1
  8. package/dist/generation/VueGenerator.d.ts +14 -0
  9. package/dist/generation/VueGenerator.d.ts.map +1 -1
  10. package/dist/generation/VueGenerator.js +139 -2
  11. package/dist/generation/VueGenerator.js.map +1 -1
  12. package/dist/transformation/transformers/AccessibilityEnhancer.d.ts +22 -0
  13. package/dist/transformation/transformers/AccessibilityEnhancer.d.ts.map +1 -0
  14. package/dist/transformation/transformers/AccessibilityEnhancer.js +113 -0
  15. package/dist/transformation/transformers/AccessibilityEnhancer.js.map +1 -0
  16. package/dist/transformation/transformers/PerformanceOptimizer.d.ts +24 -0
  17. package/dist/transformation/transformers/PerformanceOptimizer.d.ts.map +1 -0
  18. package/dist/transformation/transformers/PerformanceOptimizer.js +95 -0
  19. package/dist/transformation/transformers/PerformanceOptimizer.js.map +1 -0
  20. package/dist/transformation/transformers/ResponsiveMerger.d.ts +39 -0
  21. package/dist/transformation/transformers/ResponsiveMerger.d.ts.map +1 -0
  22. package/dist/transformation/transformers/ResponsiveMerger.js +114 -0
  23. package/dist/transformation/transformers/ResponsiveMerger.js.map +1 -0
  24. package/dist/transformation/transformers/StyleMerger.d.ts +18 -0
  25. package/dist/transformation/transformers/StyleMerger.d.ts.map +1 -0
  26. package/dist/transformation/transformers/StyleMerger.js +71 -0
  27. package/dist/transformation/transformers/StyleMerger.js.map +1 -0
  28. package/package.json +1 -1
  29. package/test-app/test-react/src/Component.module.css +16 -136
@@ -51,6 +51,13 @@ class VueGenerator {
51
51
  path: `${config.outputDir}/${this.toFileName(node.name)}.vue`,
52
52
  content: componentCode,
53
53
  });
54
+ // For css mode, also generate a standalone CSS file
55
+ if (config.styleMode === 'css') {
56
+ files.push({
57
+ path: `${config.outputDir}/${this.toFileName(node.name)}.css`,
58
+ content: this.generateStandaloneCSS(node),
59
+ });
60
+ }
54
61
  return files;
55
62
  }
56
63
  generateComponent(node, config) {
@@ -76,7 +83,9 @@ ${this.indent(inner, 2)}
76
83
  }
77
84
  generateElement(node, config, depth) {
78
85
  const tag = this.getHTMLTag(node);
79
- const className = this.nodeClassMap.get(node.id) || this.sanitizeCSSName(node.name);
86
+ const className = config.styleMode === 'tailwind'
87
+ ? this.generateTailwindClasses(node)
88
+ : this.nodeClassMap.get(node.id) || this.sanitizeCSSName(node.name);
80
89
  const layerName = node.name || 'unnamed';
81
90
  const comment = depth > 0 ? `<!-- ${layerName} -->\n` : '';
82
91
  // Text node
@@ -158,10 +167,89 @@ onUnmounted(() => {
158
167
  styles.push(`.responsive-wrapper {\n width: 100%;\n overflow: hidden;\n}`);
159
168
  styles.push(`.scale-container {\n width: ${designWidth}px;\n height: ${designHeight}px;\n transform-origin: top left;\n}`);
160
169
  this.collectStyles(node, styles);
170
+ // Deduplicate identical CSS rules
171
+ const deduped = this.deduplicateStyles(styles);
172
+ // Add responsive media queries
173
+ const mediaQueries = this.generateMediaQueries(node);
174
+ if (mediaQueries) {
175
+ deduped.push(mediaQueries);
176
+ }
161
177
  return `<style scoped>
162
- ${styles.join('\n\n')}
178
+ ${deduped.join('\n\n')}
163
179
  </style>`;
164
180
  }
181
+ /**
182
+ * Generate a standalone CSS file (for css mode).
183
+ */
184
+ generateStandaloneCSS(node) {
185
+ const styles = [];
186
+ const designWidth = Math.round(node.layout.size.width) || 1920;
187
+ const designHeight = Math.round(node.layout.size.height) || 1080;
188
+ styles.push(`.responsive-wrapper {\n width: 100%;\n overflow: hidden;\n}`);
189
+ styles.push(`.scale-container {\n width: ${designWidth}px;\n height: ${designHeight}px;\n transform-origin: top left;\n}`);
190
+ this.collectStyles(node, styles);
191
+ const deduped = this.deduplicateStyles(styles);
192
+ const mediaQueries = this.generateMediaQueries(node);
193
+ if (mediaQueries) {
194
+ deduped.push(mediaQueries);
195
+ }
196
+ return deduped.join('\n\n') + '\n';
197
+ }
198
+ /**
199
+ * Deduplicate CSS rules: merge selectors with identical rule bodies.
200
+ */
201
+ deduplicateStyles(styles) {
202
+ const ruleMap = new Map();
203
+ const ordered = [];
204
+ for (const block of styles) {
205
+ const braceIdx = block.indexOf('{');
206
+ if (braceIdx === -1) {
207
+ ordered.push(block);
208
+ continue;
209
+ }
210
+ const selector = block.substring(0, braceIdx).trim();
211
+ const body = block.substring(braceIdx).trim();
212
+ if (!ruleMap.has(body)) {
213
+ ruleMap.set(body, []);
214
+ ordered.push(body);
215
+ }
216
+ ruleMap.get(body).push(selector);
217
+ }
218
+ return ordered.map((body) => {
219
+ const selectors = ruleMap.get(body);
220
+ if (!selectors)
221
+ return body;
222
+ return `${selectors.join(',\n')} ${body}`;
223
+ });
224
+ }
225
+ /**
226
+ * Generate @media queries for responsive components.
227
+ */
228
+ generateMediaQueries(node) {
229
+ const queries = [];
230
+ this.collectMediaQueries(node, queries);
231
+ return queries.length > 0 ? queries.join('\n\n') : null;
232
+ }
233
+ collectMediaQueries(node, queries) {
234
+ const meta = node.metadata;
235
+ if (meta.responsive && Array.isArray(meta.breakpoints)) {
236
+ const className = this.nodeClassMap.get(node.id) || this.sanitizeCSSName(node.name);
237
+ for (const bp of meta.breakpoints) {
238
+ const minW = bp.width || bp.breakpoint?.minWidth;
239
+ if (minW && bp.layout) {
240
+ const rules = [];
241
+ if (bp.layout.size?.width)
242
+ rules.push(` width: ${Math.round(bp.layout.size.width)}px;`);
243
+ if (bp.layout.size?.height)
244
+ rules.push(` height: ${Math.round(bp.layout.size.height)}px;`);
245
+ if (rules.length > 0) {
246
+ queries.push(`@media (min-width: ${minW}px) {\n .${className} {\n ${rules.join('\n ')}\n }\n}`);
247
+ }
248
+ }
249
+ }
250
+ }
251
+ node.children.forEach((child) => this.collectMediaQueries(child, queries));
252
+ }
165
253
  collectStyles(node, styles, parentNode) {
166
254
  const className = this.nodeClassMap.get(node.id) || this.sanitizeCSSName(node.name);
167
255
  const cssRules = [];
@@ -311,13 +399,62 @@ ${styles.join('\n\n')}
311
399
  }
312
400
  generateTailwindClasses(node) {
313
401
  const classes = [];
402
+ // Layout
314
403
  if (node.layout.display === 'flex') {
315
404
  classes.push('flex');
316
405
  if (node.layout.flexDirection === 'column')
317
406
  classes.push('flex-col');
407
+ if (node.layout.justifyContent)
408
+ classes.push(`justify-${node.layout.justifyContent}`);
409
+ if (node.layout.alignItems)
410
+ classes.push(`items-${node.layout.alignItems}`);
411
+ if (node.layout.gap)
412
+ classes.push(`gap-${this.toTailwindSpacing(node.layout.gap)}`);
413
+ }
414
+ // Size
415
+ if (node.layout.size.width)
416
+ classes.push(`w-[${Math.round(node.layout.size.width)}px]`);
417
+ if (node.layout.size.height)
418
+ classes.push(`h-[${Math.round(node.layout.size.height)}px]`);
419
+ // Background color
420
+ if (node.styles.backgroundColor) {
421
+ const c = node.styles.backgroundColor;
422
+ classes.push(`bg-[rgba(${c.r},${c.g},${c.b},${c.a})]`);
423
+ }
424
+ // Border radius
425
+ if (node.styles.borderRadius) {
426
+ const radius = Array.isArray(node.styles.borderRadius)
427
+ ? node.styles.borderRadius[0]
428
+ : node.styles.borderRadius;
429
+ if (radius > 0) {
430
+ classes.push(radius >= 9999 ? 'rounded-full' : `rounded-[${radius}px]`);
431
+ }
432
+ }
433
+ // Opacity
434
+ if (node.styles.opacity !== undefined && node.styles.opacity !== 1) {
435
+ classes.push(`opacity-${Math.round(node.styles.opacity * 100)}`);
436
+ }
437
+ // Typography
438
+ if (node.type === 'Text' && node.styles.typography) {
439
+ const t = node.styles.typography;
440
+ classes.push(`text-[${t.fontSize}px]`);
441
+ classes.push(`font-[${t.fontWeight}]`);
442
+ if (t.textAlign && t.textAlign !== 'left')
443
+ classes.push(`text-${t.textAlign}`);
444
+ }
445
+ // Responsive breakpoint classes
446
+ const meta = node.metadata;
447
+ if (meta.responsive && meta.breakpoints) {
448
+ classes.push('responsive');
318
449
  }
319
450
  return classes.join(' ');
320
451
  }
452
+ toTailwindSpacing(px) {
453
+ const rounded = Math.round(px);
454
+ if (rounded % 4 === 0)
455
+ return String(rounded / 4);
456
+ return `[${rounded}px]`;
457
+ }
321
458
  toFileName(name) {
322
459
  let sanitized = name
323
460
  // eslint-disable-next-line no-control-regex
@@ -1 +1 @@
1
- {"version":3,"file":"VueGenerator.js","sourceRoot":"","sources":["../../src/generation/VueGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VueGenerator.js","sourceRoot":"","sources":["../../src/generation/VueGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { ASTNode } from '../types';
2
+ import type { Transformer } from '../TransformationPipeline';
3
+ /**
4
+ * Enhances AST nodes with accessibility attributes.
5
+ * - Adds ARIA roles based on node type and structure
6
+ * - Adds alt text hints for images
7
+ * - Adds landmark roles for navigation/header/footer patterns
8
+ * - Flags interactive elements that need keyboard support
9
+ */
10
+ export declare class AccessibilityEnhancer implements Transformer {
11
+ name: string;
12
+ transform(node: ASTNode): ASTNode;
13
+ private enhance;
14
+ private isNavigation;
15
+ private isHeader;
16
+ private isFooter;
17
+ private isButton;
18
+ private isList;
19
+ private generateAltText;
20
+ private generateAriaLabel;
21
+ }
22
+ //# sourceMappingURL=AccessibilityEnhancer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccessibilityEnhancer.d.ts","sourceRoot":"","sources":["../../../src/transformation/transformers/AccessibilityEnhancer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,WAAW;IACvD,IAAI,SAA4B;IAEhC,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAIjC,OAAO,CAAC,OAAO;IAyDf,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,iBAAiB;CAI1B"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccessibilityEnhancer = void 0;
4
+ /**
5
+ * Enhances AST nodes with accessibility attributes.
6
+ * - Adds ARIA roles based on node type and structure
7
+ * - Adds alt text hints for images
8
+ * - Adds landmark roles for navigation/header/footer patterns
9
+ * - Flags interactive elements that need keyboard support
10
+ */
11
+ class AccessibilityEnhancer {
12
+ constructor() {
13
+ this.name = 'accessibility-enhancer';
14
+ }
15
+ transform(node) {
16
+ return this.enhance(node);
17
+ }
18
+ enhance(node) {
19
+ const a11y = {};
20
+ // Image nodes need alt text
21
+ if (node.type === 'Image') {
22
+ a11y.role = 'img';
23
+ a11y.alt = this.generateAltText(node.name);
24
+ }
25
+ // Text nodes
26
+ if (node.type === 'Text') {
27
+ const fontSize = node.styles.typography?.fontSize;
28
+ if (fontSize && fontSize >= 24) {
29
+ a11y.role = 'heading';
30
+ a11y.ariaLevel = fontSize >= 32 ? '1' : fontSize >= 24 ? '2' : '3';
31
+ }
32
+ }
33
+ // Detect navigation patterns
34
+ if (this.isNavigation(node)) {
35
+ a11y.role = 'navigation';
36
+ a11y.ariaLabel = this.generateAriaLabel(node.name, 'navigation');
37
+ }
38
+ // Detect header patterns
39
+ if (this.isHeader(node)) {
40
+ a11y.role = 'banner';
41
+ }
42
+ // Detect footer patterns
43
+ if (this.isFooter(node)) {
44
+ a11y.role = 'contentinfo';
45
+ }
46
+ // Detect button-like elements
47
+ if (this.isButton(node)) {
48
+ a11y.role = 'button';
49
+ a11y.tabIndex = '0';
50
+ }
51
+ // Detect list patterns
52
+ if (this.isList(node)) {
53
+ a11y.role = 'list';
54
+ }
55
+ const hasA11y = Object.keys(a11y).length > 0;
56
+ return {
57
+ ...node,
58
+ metadata: {
59
+ ...node.metadata,
60
+ ...(hasA11y ? { accessibility: a11y } : {}),
61
+ },
62
+ children: node.children.map((child) => this.enhance(child)),
63
+ };
64
+ }
65
+ isNavigation(node) {
66
+ const name = node.name.toLowerCase();
67
+ return ((name.includes('nav') || name.includes('menu') || name.includes('toolbar')) &&
68
+ node.children.length >= 2);
69
+ }
70
+ isHeader(node) {
71
+ const name = node.name.toLowerCase();
72
+ return name.includes('header') || name.includes('top-bar') || name.includes('topbar');
73
+ }
74
+ isFooter(node) {
75
+ const name = node.name.toLowerCase();
76
+ return name.includes('footer') || name.includes('bottom-bar');
77
+ }
78
+ isButton(node) {
79
+ const name = node.name.toLowerCase();
80
+ if (name.includes('button') || name.includes('btn') || name.includes('cta')) {
81
+ return true;
82
+ }
83
+ // Small container with single text child and background color = likely a button
84
+ if (node.type === 'Container' &&
85
+ node.children.length === 1 &&
86
+ node.children[0].type === 'Text' &&
87
+ node.styles.backgroundColor &&
88
+ node.styles.borderRadius) {
89
+ return true;
90
+ }
91
+ return false;
92
+ }
93
+ isList(node) {
94
+ if (node.children.length < 3)
95
+ return false;
96
+ // Check if children have similar structure (same type and similar layout)
97
+ const types = node.children.map((c) => c.type);
98
+ const allSameType = types.every((t) => t === types[0]);
99
+ return allSameType && node.layout.display === 'flex';
100
+ }
101
+ generateAltText(name) {
102
+ return name
103
+ .replace(/[-_]+/g, ' ')
104
+ .replace(/\b\w/g, (c) => c.toUpperCase())
105
+ .trim() || 'Image';
106
+ }
107
+ generateAriaLabel(name, fallback) {
108
+ const cleaned = name.replace(/[-_]+/g, ' ').trim();
109
+ return cleaned || fallback;
110
+ }
111
+ }
112
+ exports.AccessibilityEnhancer = AccessibilityEnhancer;
113
+ //# sourceMappingURL=AccessibilityEnhancer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccessibilityEnhancer.js","sourceRoot":"","sources":["../../../src/transformation/transformers/AccessibilityEnhancer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { ASTNode } from '../types';
2
+ import type { Transformer } from '../TransformationPipeline';
3
+ /**
4
+ * Optimizes AST for better runtime performance.
5
+ * - Marks large images for lazy loading
6
+ * - Suggests code splitting for large component trees
7
+ * - Removes redundant wrapper nodes
8
+ * - Marks offscreen content for deferred rendering
9
+ */
10
+ export declare class PerformanceOptimizer implements Transformer {
11
+ name: string;
12
+ private readonly lazyLoadThreshold;
13
+ private readonly codeSplitThreshold;
14
+ constructor(lazyLoadThreshold?: number, codeSplitThreshold?: number);
15
+ transform(node: ASTNode): ASTNode;
16
+ private optimize;
17
+ /**
18
+ * Check if a node is a redundant wrapper (single child, no meaningful styles).
19
+ * Never unwrap the root node (no parent context to absorb it).
20
+ */
21
+ private isRedundantWrapper;
22
+ private countDescendants;
23
+ }
24
+ //# sourceMappingURL=PerformanceOptimizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerformanceOptimizer.d.ts","sourceRoot":"","sources":["../../../src/transformation/transformers/PerformanceOptimizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;;;;;GAMG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IACtD,IAAI,SAA2B;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;gBAEhC,iBAAiB,SAAM,EAAE,kBAAkB,SAAK;IAK5D,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAIjC,OAAO,CAAC,QAAQ;IAwDhB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,gBAAgB;CAOzB"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PerformanceOptimizer = void 0;
4
+ /**
5
+ * Optimizes AST for better runtime performance.
6
+ * - Marks large images for lazy loading
7
+ * - Suggests code splitting for large component trees
8
+ * - Removes redundant wrapper nodes
9
+ * - Marks offscreen content for deferred rendering
10
+ */
11
+ class PerformanceOptimizer {
12
+ constructor(lazyLoadThreshold = 200, codeSplitThreshold = 30) {
13
+ this.name = 'performance-optimizer';
14
+ this.lazyLoadThreshold = lazyLoadThreshold;
15
+ this.codeSplitThreshold = codeSplitThreshold;
16
+ }
17
+ transform(node) {
18
+ return this.optimize(node, 0);
19
+ }
20
+ optimize(node, viewportY) {
21
+ const hints = {};
22
+ // Mark images for lazy loading if below fold
23
+ if (node.type === 'Image') {
24
+ const isAboveFold = node.layout.position.y < this.lazyLoadThreshold;
25
+ if (!isAboveFold) {
26
+ hints.lazyLoad = true;
27
+ }
28
+ // Large images should have explicit dimensions
29
+ if (node.layout.size.width > 100 || node.layout.size.height > 100) {
30
+ hints.explicitDimensions = true;
31
+ }
32
+ }
33
+ // Suggest code splitting for large component subtrees
34
+ if (node.metadata.isComponent) {
35
+ const descendantCount = this.countDescendants(node);
36
+ if (descendantCount > this.codeSplitThreshold) {
37
+ hints.codeSplit = true;
38
+ hints.descendantCount = descendantCount;
39
+ }
40
+ }
41
+ // Remove redundant single-child wrapper containers
42
+ if (this.isRedundantWrapper(node)) {
43
+ const child = node.children[0];
44
+ return this.optimize({
45
+ ...child,
46
+ // Preserve parent's position if child doesn't have meaningful position
47
+ layout: {
48
+ ...child.layout,
49
+ position: child.layout.position.x === 0 && child.layout.position.y === 0
50
+ ? node.layout.position
51
+ : child.layout.position,
52
+ },
53
+ }, viewportY);
54
+ }
55
+ const hasHints = Object.keys(hints).length > 0;
56
+ return {
57
+ ...node,
58
+ metadata: {
59
+ ...node.metadata,
60
+ ...(hasHints ? { performance: hints } : {}),
61
+ },
62
+ children: node.children.map((child) => this.optimize(child, viewportY + child.layout.position.y)),
63
+ };
64
+ }
65
+ /**
66
+ * Check if a node is a redundant wrapper (single child, no meaningful styles).
67
+ * Never unwrap the root node (no parent context to absorb it).
68
+ */
69
+ isRedundantWrapper(node) {
70
+ if (node.type !== 'Container')
71
+ return false;
72
+ if (node.children.length !== 1)
73
+ return false;
74
+ if (node.metadata.isComponent)
75
+ return false;
76
+ // Don't unwrap if child is a leaf — wrapper may provide layout context
77
+ if (node.children[0].children.length === 0)
78
+ return false;
79
+ // Has meaningful styles? Keep it.
80
+ const s = node.styles;
81
+ if (s.backgroundColor || s.border || s.boxShadow?.length || s.borderRadius || s.opacity !== undefined) {
82
+ return false;
83
+ }
84
+ return true;
85
+ }
86
+ countDescendants(node) {
87
+ let count = 0;
88
+ for (const child of node.children) {
89
+ count += 1 + this.countDescendants(child);
90
+ }
91
+ return count;
92
+ }
93
+ }
94
+ exports.PerformanceOptimizer = PerformanceOptimizer;
95
+ //# sourceMappingURL=PerformanceOptimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerformanceOptimizer.js","sourceRoot":"","sources":["../../../src/transformation/transformers/PerformanceOptimizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { ASTNode } from '../types';
2
+ import type { Transformer } from '../TransformationPipeline';
3
+ /**
4
+ * Breakpoint definition for responsive design.
5
+ */
6
+ export interface Breakpoint {
7
+ name: string;
8
+ minWidth: number;
9
+ maxWidth: number;
10
+ }
11
+ /**
12
+ * Merges responsive breakpoint variants into a single component.
13
+ * Identifies frames with the same name but different widths as
14
+ * breakpoint variants and consolidates them.
15
+ */
16
+ export declare class ResponsiveMerger implements Transformer {
17
+ name: string;
18
+ private breakpoints;
19
+ constructor(breakpoints?: Breakpoint[]);
20
+ transform(node: ASTNode): ASTNode;
21
+ private mergeResponsiveVariants;
22
+ /**
23
+ * Check if a set of nodes are breakpoint variants (same name, different widths).
24
+ */
25
+ private areBreakpointVariants;
26
+ /**
27
+ * Create a merged responsive component from breakpoint variants.
28
+ */
29
+ private createResponsiveComponent;
30
+ /**
31
+ * Detect which breakpoint a width falls into.
32
+ */
33
+ private detectBreakpoint;
34
+ /**
35
+ * Extract base name by removing common breakpoint suffixes.
36
+ */
37
+ private extractBaseName;
38
+ }
39
+ //# sourceMappingURL=ResponsiveMerger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponsiveMerger.d.ts","sourceRoot":"","sources":["../../../src/transformation/transformers/ResponsiveMerger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAQD;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,WAAW;IAClD,IAAI,SAAuB;IAC3B,OAAO,CAAC,WAAW,CAAe;gBAEtB,WAAW,CAAC,EAAE,UAAU,EAAE;IAItC,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAIjC,OAAO,CAAC,uBAAuB;IA2C/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAyBjC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,eAAe;CAKxB"}