@@ -11,6 +11,7 @@ import { aiComponentGenerator } from '../services/openAiService.js';
1111import componentJsTemplate from '../templates/component/componentJsTemplate.js' ;
1212import componentTsTemplate from '../templates/component/componentTsTemplate.js' ;
1313import componentCssTemplate from '../templates/component/componentCssTemplate.js' ;
14+ import componentStyledTemplate from '../templates/component/componentStyledTemplate.js' ;
1415import componentLazyTemplate from '../templates/component/componentLazyTemplate.js' ;
1516import componentTsLazyTemplate from '../templates/component/componentTsLazyTemplate.js' ;
1617import componentStoryTemplate from '../templates/component/componentStoryTemplate.js' ;
@@ -81,7 +82,7 @@ Please make sure you're pointing to the right custom template path in your gener
8182}
8283
8384function componentTemplateGenerator ( { cmd, componentName, cliConfigFile } ) {
84- const { cssPreprocessor, testLibrary, usesCssModule, usesTypeScript } = cliConfigFile ;
85+ const { usesStyledComponents , cssPreprocessor, testLibrary, usesCssModule, usesTypeScript } = cliConfigFile ;
8586 const { customTemplates } = cliConfigFile . component [ cmd . type ] ;
8687 let template = null ;
8788 let filename = null ;
@@ -113,16 +114,27 @@ function componentTemplateGenerator({ cmd, componentName, cliConfigFile }) {
113114 // --- If it has a corresponding stylesheet
114115
115116 if ( cmd . withStyle ) {
116- const module = usesCssModule ? '.module' : '' ;
117- const cssPath = `${ componentName } ${ module } .${ cssPreprocessor } ` ;
117+ if ( cliConfigFile . usesStyledComponents ) {
118+ const cssPath = `${ componentName } .styled` ;
119+ template = template . replace (
120+ `import styles from './TemplateName.module.css'` ,
121+ `import { TemplateNameWrapper } from './${ cssPath } '`
122+ ) ;
123+ template = template . replace ( ` className={styles.TemplateName}` , '' ) ;
124+ template = template . replace ( ` <div` , '<TemplateNameWrapper' ) ;
125+ template = template . replace ( ` </div>` , '</TemplateNameWrapper>' ) ;
126+ } else {
127+ const module = usesCssModule ? '.module' : '' ;
128+ const cssPath = `${ componentName } ${ module } .${ cssPreprocessor } ` ;
118129
119- // --- If the css module is true make sure to update the template accordingly
130+ // --- If the css module is true make sure to update the template accordingly
120131
121- if ( module . length ) {
122- template = template . replace ( `'./TemplateName.module.css'` , `'./${ cssPath } '` ) ;
123- } else {
124- template = template . replace ( `{styles.TemplateName}` , `"${ componentName } "` ) ;
125- template = template . replace ( `styles from './TemplateName.module.css'` , `'./${ cssPath } '` ) ;
132+ if ( module . length ) {
133+ template = template . replace ( `'./TemplateName.module.css'` , `'./${ cssPath } '` ) ;
134+ } else {
135+ template = template . replace ( `{styles.TemplateName}` , `"${ componentName } "` ) ;
136+ template = template . replace ( `styles from './TemplateName.module.css'` , `'./${ cssPath } '` ) ;
137+ }
126138 }
127139 } else {
128140 // --- If no stylesheet, remove className attribute and style import from jsTemplate
@@ -157,14 +169,19 @@ function componentStyleTemplateGenerator({ cliConfigFile, cmd, componentName })
157169 template = customTemplate ;
158170 filename = customTemplateFilename ;
159171 } else {
160- const { cssPreprocessor, usesCssModule } = cliConfigFile ;
161- const module = usesCssModule ? '.module' : '' ;
162- const cssFilename = `${ componentName } ${ module } .${ cssPreprocessor } ` ;
172+ const { usesTypeScript, usesStyledComponents, cssPreprocessor, usesCssModule } = cliConfigFile ;
173+ if ( usesStyledComponents ) {
174+ filename = usesTypeScript ? `${ componentName } .styled.ts` : `${ componentName } .styled.js` ;
175+ template = componentStyledTemplate ;
176+ } else {
177+ const module = usesCssModule ? '.module' : '' ;
178+ const cssFilename = `${ componentName } ${ module } .${ cssPreprocessor } ` ;
163179
164- // --- Else use GRC built-in style template
180+ // --- Else use GRC built-in style template
165181
166- template = componentCssTemplate ;
167- filename = cssFilename ;
182+ template = componentCssTemplate ;
183+ filename = cssFilename ;
184+ }
168185 }
169186
170187 return {
0 commit comments