Jynx logoJynx

Themes

Consistently and efficiently manage your styles through the use of a global theme

Overview

Themes work like design systems. They give you a place to store and access common style values, allowing you to create a more consistent and coherent visual experience.

Chances are, if you're using a CSS-in-JS library, it's going to supply you with a ThemeProvider component. This can be used to share a custom theme with the rest of your application through React's Context API.

Adding a custom theme

To get started, create a theme.ts/.js file that exports a theme object.

/* theme.ts */

export const theme = {}

From within the theme object, create a colors scale and add your color variables to it (or use the values below).

/* theme.ts */

export const theme = {
  colors: {
    red: '#F2335D',
    orange: '#FE8400',
    yellow: '#FFCC00',
    green: '#7CD420',
    blue: '#12A5EC',
    purple: '#7753F8'
  }
}

Then, in the root of your project, wrap your entire application with the ThemeProvider and pass it your custom theme.

/* App.ts */
import { ThemeProvider } from 'styled-components'
import { theme } from '../theme.ts'

const App: React.FC = props => (
    <ThemeProvider theme={theme}>
      {/* application content */}
    </ThemeProvider>
  )

export default App

Now, any prop that uses the colors scale will have access to your custom color values.

/* `theme.colors.red` */
<Component color='red' />


/* `theme.colors.green` */
<Component bgColor='green' />


/* Using responsive styles */
<Component color={['blue', 'orange', 'yellow']} />

<Component bgColor={{_: 'purple', sm: 'green', lg: 'blue'}} />

With your theme set up, you can now expand it to fit your needs. Head to the theme config page for details on taking your theme to the next level.