# Flavors
The standard teleport-component-generator
can be customized with mappings, plugins and post-processors. Each flavor of component generation is just an instance of the generic generator with preloaded plugins and post-processors. Additionally, each flavor defins its own mapping, corresponding to the particularities of the framework.
Below you can find the official list of teleport
component generator packages:
TIP
You can play with the different code ouputs in our online REPL (opens new window)
# React
The teleport-component-generator-react
package loads all the different style plugins and allows you to pick the preferred styling via a input parameter called variation
.
The bulk of the package is this function that configures the generator:
const stylePlugins = {
InlineStyles: inlineStylesPlugin,
StyledComponents: reactStyledComponentsPlugin,
StyledJSX: reactStyledJSXPlugin,
CSSModules: cssModulesPlugin,
CSS: cssPlugin,
JSS: reactJSSPlugin,
}
export const createReactComponentGenerator = (
variation: string = 'CSS',
mapping: Mapping = {}
): ComponentGenerator => {
const stylePlugin = stylePlugins[variation] || cssPlugin
const generator = createComponentGenerator()
generator.addMapping(reactMapping)
generator.addMapping(mapping)
generator.addPlugin(reactComponentPlugin)
generator.addPlugin(stylePlugin)
generator.addPlugin(propTypesPlugin)
generator.addPlugin(importStatementsPlugin)
generator.addPostProcessor(prettierJS)
return generator
}
# Install
npm install @teleporthq/teleport-component-generator-react
or
yarn add @teleporthq/teleport-component-generator-react
# Usage
import { createReactComponentGenerator } from '@teleporthq/teleport-component-generator-react'
// other style options: "CSS" - default, "StyledComponents", "StyledJSX", "JSS", "InlineStyles"
const reactGenerator = createReactComponentGenerator('CSSModules')
const result = await reactGenerator.generateComponent(uidl)
Additionally, you can pass a GeneratorOptions
object as a second parameter:
const reactGenerator = createReactComponentGenerator('CSSModules', { /*...*/ })
# Vue
In the teleport-component-generator-vue
there is no style variation, as the generator outputs .vue
files with scoped style.
The main file of the package configures the generator:
export const createVueComponentGenerator = (mapping: Mapping = {}): ComponentGenerator => {
const generator = createComponentGenerator()
generator.addMapping(vueMapping)
generator.addMapping(mapping)
generator.addPlugin(vueComponentPlugin)
generator.addPlugin(vueStylePlugin)
generator.addPlugin(importStatementsPlugin)
generator.addPostProcessor(prettierJS)
generator.addPostProcessor(prettierHTML)
generator.addPostProcessor(vueFile)
return generator
}
# Install
npm install @teleporthq/teleport-component-generator-vue
or
yarn add @teleporthq/teleport-component-generator-vue
# Usage
import { createVueComponentGenerator } from '@teleporthq/teleport-component-generator-vue'
const vueGenerator = createVueComponentGenerator()
const result = await vueGenerator.generateComponent(uidl)
# Angular
The official package for angular components is: teleport-component-generator-angular
. This generates separate files for the class component (.ts), the template (.html) and the style (.css).
The main file of the package configures the generator:
export const createAngularComponentGenerator = (mapping: Mapping = {}): ComponentGenerator => {
const generator = createComponentGenerator()
generator.addMapping(mapping)
generator.addMapping(angularMapping)
generator.addPlugin(angularComponentPlugin)
generator.addPlugin(importStatementsPlugin)
generator.addPlugin(stylePlugin)
generator.addPostProcessor(prettierJS)
generator.addPostProcessor(prettierHTML)
return generator
}
# Install
npm install @teleporthq/teleport-component-generator-angular
or
yarn add @teleporthq/teleport-component-generator-angular
# Usage
import { createAngularComponentGenerator } from '@teleporthq/teleport-component-generator-angular'
const angularGenerator = createAngularComponentGenerator()
const result = await angularGenerator.generateComponent(uidl)
# Stencil
The official package for stencil components is: teleport-component-generator-stencil
. This generates typescript based .tsx
files for components as well as separate .css
files for styling. The component is generated with the shadow
: true
flag.
The main file of the package configures the generator:
export const createStencilComponentGenerator = (mapping: Mapping = {}): ComponentGenerator => {
const generator = createComponentGenerator()
generator.addMapping(stencilMapping)
generator.addMapping(mapping)
generator.addPlugin(stencilComponentPlugin)
generator.addPlugin(stencilStylePlugin)
generator.addPlugin(importStatementsPlugin)
generator.addPostProcessor(prettierJS)
return generator
}
# Install
npm install @teleporthq/teleport-component-generator-stencil
or
yarn add @teleporthq/teleport-component-generator-stencil
# Usage
import { createStencilComponentGenerator } from '@teleporthq/teleport-component-generator-stencil'
const stencilGenerator = createStencilComponentGenerator()
const result = await stencilGenerator.generateComponent(uidl)
# Preact
The official package for preact
components is similar to the react
one: teleport-component-generator-preact
. When creating the generator, you can pass a parameter to specify different styling variations. Based on that, the generator loads a different style plugin.
The main file of the package configures the generator:
const stylePlugins = {
InlineStyles: inlineStylesPlugin,
CSSModules: cssModulesPlugin,
CSS: cssPlugin,
}
export const createPreactComponentGenerator = (
variation: string = 'CSS',
mapping: Mapping = {}
): ComponentGenerator => {
const generator = createComponentGenerator()
const stylePlugin = stylePlugins[variation] || cssPlugin
generator.addMapping(preactMapping)
generator.addMapping(mapping)
generator.addPlugin(preactComponentPlugin)
generator.addPlugin(stylePlugin)
generator.addPlugin(proptypesPlugin)
generator.addPlugin(importStatementsPlugin)
generator.addPostProcessor(prettierJS)
return generator
}
# Install
npm install @teleporthq/teleport-component-generator-preact
or
yarn add @teleporthq/teleport-component-generator-preact
# Usage
import { createPreactComponentGenerator } from '@teleporthq/teleport-component-generator-preact'
// other style options: "CSS" - default, "InlineStyles"
const preactGenerator = createPreactComponentGenerator('CSSModules')
const result = await preactGenerator.generateComponent(uidl)