Styled-Components

Styled-Components is a well known library to stylize components and works very well when augmented with style-genie.

Setup

Here we will try to show the basics of how to get a theme going in styled-components.

Note: These are just examples, you can adapt them to work with your setup in however way you like and there is no 'single way' to work with style-genie.

You will want to have a theme object so you can eventually pass it into ThemeProvider

const theme = {
  palette: {
    primary: generateColor('hsl(200, 50%, 70%)'),
    background: generateColor('hsl(180, 50%, 10%)'),
    text: generateColor('#d8d8d8'),
  },
  breakpoint: generateBreakpoint(),
  spacing: generateSpacing(),
  transition: generateTransition(),
}

The ThemeProvider will simply accept the theme object we created above.

<ThemeProvider theme={theme}>
  <YourApp />
</ThemeProvider>

Which will allow you to use theme inside any styled-component prop.

Typescript

If using typescript, you might want to create a declaration merging to help you in auto-completion inside components and such.

You can read styled-component's own step-by-step here if you want. But it is basically declaring the shape of your theme object in a .d.ts file.

Style-genie exports all the types you will need for this. Most types are static, except Breakpoint which is generic and can accept an object type of signature { [key: string]: number } in case you are using custom breakpoints.

And that is it. You shall have auto-complete and in-code tips when using the theme prop inside any styled component.

Last updated

Was this helpful?