A React UI Component Library With Styled Component

PayGreen-UI

A library of reusable React components powered by styled-components.

Installation

PayGreen-UI is available as an npm package.

// with npm
npm install @paygreen/paygreen-ui

// with yarn
yarn add @paygreen/paygreen-ui

Usage

import React from 'react';
import ReactDOM from 'react-dom';
import {
    PGThemeProvider,
    ThemeDefault,
    Card,
    Text,
    Title,
} from '@paygreen/paygreen-ui';

const App = () => (
    <PGThemeProvider theme={ThemeDefault}>
        <Card>
            <Title align="center">
                Hello <strong>World</strong>!
            </Title>

            <Text>
                A simple example of use for the component <strong>Card</strong>.
            </Text>
        </Card>
    </PGThemeProvider>
);

ReactDOM.render(<App />, document.getElementById('root'));

NB: don't forget to pass the PGThemeProvider as the highest component of your application. It will spread the Theme through all its children. Without it, PG-UI components cannot be rendered!

Storybook

We use Storybook during the development of our components to isolate them and get an organized and efficient display of our library. With Storybook, you can manipulate each component, modify the props it receives and analyze its behavior to fully understand how it works. But you can also take a look at the code to explore further more PayGreen-UI.

You can access the storybook of the latest version of PG-UI at our GitHub Pages.

Development process

To develop a new component for the library, create a sub-directory inside src/lib/ with the following structure:

.
+--_MyComponent
   +--_style
   |  +--_index.js
   +--_MyComponent.js
   +--_MyComponent.stories.js
   +--_MyComponent.test.js
  • Files inside the sub-directory style is used to contains the definition of a styled-component that will be used to style the main component.
  • The main file MyComponent.js must contains the definition of the React component with its PropTypes and defaultProps.
  • The file MyComponent.stories.js contains the definition of a story used by Storybook to display an example of use of the component.
  • The test file contains tests for the component. Tests are performed by Jest.

Deployment

The deployment of PayGreen-UI use the GitHub Actions to work on CI/CD. Each version of the library correspond to a tag pushed on the GitHub repository.