// component.tsx exports.component = name => `import React from 'react'; import * as styles from './${name}.module.scss'; export interface I${name}Props {} const ${name} = ({}: I${name}Props) => { return (
Hello 👋, I am a ${name} component.
) }; export default ${name}; `; // component.module.scss exports.sass = name => `@use '../../styles/design-system.scss' as *; .${name[0].toLowerCase() + name.slice(1)}Container{ } `; // component.module.scss.d.ts exports.sassType = name => `declare namespace ${name}Namespace { export interface I${name}Scss { ${name[0].toLowerCase() + name.slice(1)}Container: string; } } declare const ${name}ScssModule: ${name}Namespace.I${name}Scss & { /** WARNING: Only available when "css-loader" is used without "style-loader" or "mini-css-extract-plugin" */ locals: ${name}Namespace.I${name}Scss; }; export = ${name}ScssModule; `; // component.test.tsx exports.test = name => `import React from 'react'; import { render } from '@testing-library/react'; import {LocalizedComponent} from '../../test/testHelpers'; import ${name} from './${name}'; describe('rendering of ${name} Component', () => { const {asFragment} = render( <${name} /> , ); it('checks if component renders', () => { expect(asFragment()).toMatchSnapshot(); }); }); `; // index.ts exports.barrel = name => `import ${name} from './${name}'; export default ${name}; `;