@@ -3,6 +3,7 @@ import { ResponsiveCodegen } from './codegen/responsive/ResponsiveCodegen'
33import { exportDevup , importDevup } from './commands/devup'
44import { exportAssets } from './commands/exportAssets'
55import { exportComponents } from './commands/exportComponents'
6+ import { getComponentName } from './utils'
67
78export function extractImports (
89 componentsCodes : ReadonlyArray < readonly [ string , string ] > ,
@@ -87,6 +88,27 @@ export function registerCodegen(ctx: typeof figma) {
8788 const codegen = new Codegen ( node )
8889 await codegen . run ( )
8990 const componentsCodes = codegen . getComponentsCodes ( )
91+
92+ // Generate responsive component codes if viewport variant exists
93+ let responsiveComponentsCodes : ReadonlyArray <
94+ readonly [ string , string ]
95+ > = [ ]
96+ if ( codegen . hasViewportVariant ( ) && node . type === 'COMPONENT_SET' ) {
97+ try {
98+ const componentName = getComponentName ( node )
99+ responsiveComponentsCodes =
100+ await ResponsiveCodegen . generateViewportResponsiveComponents (
101+ node ,
102+ componentName ,
103+ )
104+ } catch ( e ) {
105+ console . error (
106+ '[responsive] Error generating responsive component code:' ,
107+ e ,
108+ )
109+ }
110+ }
111+
90112 console . info ( `[benchmark] devup-ui end ${ Date . now ( ) - time } ms` )
91113
92114 const parentSection = ResponsiveCodegen . hasParentSection ( node )
@@ -144,6 +166,17 @@ export function registerCodegen(ctx: typeof figma) {
144166 } ,
145167 ] as const )
146168 : [ ] ) ,
169+ ...( responsiveComponentsCodes . length > 0
170+ ? [
171+ {
172+ title : `${ node . name } - Components Responsive` ,
173+ language : 'TYPESCRIPT' as const ,
174+ code : responsiveComponentsCodes
175+ . map ( ( code ) => code [ 1 ] )
176+ . join ( '\n\n' ) ,
177+ } ,
178+ ]
179+ : [ ] ) ,
147180 ...responsiveResult ,
148181 ]
149182 }
0 commit comments