All Projects → PayGreen → paygreen-ui

PayGreen / paygreen-ui

Licence: other
UI PayGreen Components: React, Styled Component

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to paygreen-ui

Meteor Apollo Starter Kit
Meteor, Apollo, React, PWA, Styled-Components boilerplate
Stars: ✭ 91 (+213.79%)
Mutual labels:  styled-components, storybook
2019 12
🎟 급증하는 트래픽에도 안정적인 예약 서비스, Atomic Pattern을 적용한 재사용 가능한 컴포넌트, 실용적인 Testing을 주제로 하는 이벤트 서비스
Stars: ✭ 169 (+482.76%)
Mutual labels:  styled-components, storybook
React95
A React components library with Win95 UI
Stars: ✭ 1,779 (+6034.48%)
Mutual labels:  styled-components, storybook
Quantum
The default pack of components and layout principles that dictates Catho Frontend applications.
Stars: ✭ 39 (+34.48%)
Mutual labels:  styled-components, storybook
Arc
React starter kit based on Atomic Design
Stars: ✭ 2,780 (+9486.21%)
Mutual labels:  styled-components, storybook
Moveit
🚀 NLW #4 | React+ TypeScript + NextJS + StyledComponents + Firebase + MongoDb +Axios
Stars: ✭ 39 (+34.48%)
Mutual labels:  styled-components, storybook
Storybook Addon Styled Component Theme
storybook addon
Stars: ✭ 168 (+479.31%)
Mutual labels:  styled-components, storybook
chic-ui
Lightweight CSS-in-JS styled UI Component Library for React
Stars: ✭ 39 (+34.48%)
Mutual labels:  styled-components, storybook
React Loading
Build a smooth and lightweight react component loading with css 🎉 .
Stars: ✭ 234 (+706.9%)
Mutual labels:  styled-components, storybook
Govuk React
An implementation of the GOV.UK Design System in React using CSSinJS
Stars: ✭ 219 (+655.17%)
Mutual labels:  styled-components, storybook
eleventy-react
Use React components in Eleventy.
Stars: ✭ 66 (+127.59%)
Mutual labels:  styled-components, storybook
react-library-starter
A library starter kit and bundler for your React projects, powered by Rollup. ⚡
Stars: ✭ 22 (-24.14%)
Mutual labels:  styled-components, storybook
personal-blog
✍️ 个人技术博客
Stars: ✭ 79 (+172.41%)
Mutual labels:  styled-components, storybook
Gatsby Starter Typescript Deluxe
A Gatsby starter with TypeScript, Storybook, Styled Components, Framer Motion, Jest, and more.
Stars: ✭ 50 (+72.41%)
Mutual labels:  styled-components, storybook
weather-styled-icon
⛅️☀️🌧🌨in ⚛️
Stars: ✭ 23 (-20.69%)
Mutual labels:  styled-components, storybook
Storybook Addon
Develop themable components with Emotion/Styled Components/Material-UI with help of Storybook & React Theming
Stars: ✭ 122 (+320.69%)
Mutual labels:  styled-components, storybook
react-component-library-lerna
Build your own React component library managed with lerna, presented with storybook and published in private npm registry.
Stars: ✭ 55 (+89.66%)
Mutual labels:  styled-components, storybook
storybook-styled-components
No description or website provided.
Stars: ✭ 76 (+162.07%)
Mutual labels:  styled-components, storybook
Lerna Yarn Workspaces Monorepo
🐉 A Monorepo with multiple packages and a shared build, test, and release process.
Stars: ✭ 201 (+593.1%)
Mutual labels:  styled-components, storybook
chicio.github.io
👻 Fabrizio Duroni (me 😄) personal website. Created using GatsbyJS, Styled Components, Storybook, Typescript, tsParticles, GitHub pages, Github Actions, Upptime.
Stars: ✭ 20 (-31.03%)
Mutual labels:  styled-components, storybook

PayGreen-UI

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

Test our components on our live demo or read our Docusaurus documentation.

Installation

PayGreen-UI is available as an npm package.

With NPM

npm install @paygreen/paygreen-ui

With Yarn

yarn add @paygreen/paygreen-ui

Please read our Docusaurus documentation for more information.

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

Pour développer directement sur la lib, veuillez consulter la documentation ci-dessous.

Use Storybook

git clone [email protected]:PayGreen/paygreen-ui.git
yarn install
yarn start

Storybook se lance automatiquement et se rafraîchit à chaque sauvegarde d'un fichier de la lib. Notez que pour les fichiers du dossier theme, un rafraîchissement manuel est requis pour appliquer les modifications.

Theme files

Les fichiers de thème sont des fichiers transversaux, utilisés dans tous les composants, qui contiennent les tailles, couleurs, niveaux d'opacité et plein d'autres constantes qui permettent de conserver un style uniforme et facilement modifiable sur l'ensemble des composants de la librairie.

  • Le theme.base.js contient toutes les constantes communes au thème par défaut et au thème sombre : il s'agit de tout, sauf les couleurs et les images.
  • Le theme.default.js inclut le theme.base.js et les couleurs et images propres au thème par défaut (thème light).
  • Le theme.dark.js inclut le theme.base.js et les couleurs et images propres au thème sombre.

N'hésitez pas à consulter ces fichiers avant de faire du CSS : la majorité des valeurs que vous pourriez vouloir renseigner ou ajouter sont déjà présentes dans le thème !

Shared files

Les fichiers du dossier shared sont des utilitaires appelés par les composants ou leurs stories. Il contient également le style global appelé par les stories.

  • constants.js définit les valeurs acceptées dans certaines props des composants : elles sont utilisées dans leurs PropTypes, leurs styles et leurs stories.
  • global.js contient le style global appliqué aux stories.
  • labels.js contient les labels réutilisés plusieurs fois dans les stories, ce qui permet d'uniformiser le texte affiché en fonction des props désignées.
  • spaces.js contient des fonctions permettant de générer des espaces responsives (globalement parce que les propriétés CSS padding et margin sont vraiment pas très bien gérées pour le responsive, donc on est obligés d'avoir des fonctions pour ça).
  • tools.js contient des outils (actuellement, juste de quoi faire des arrondis sur des nombres avec trop de chiffres dedans).
  • Le dossier hook contient, comme son nom l'indique, des hooks utiles dans certains composants (du debounce, de quoi détecter un clic à l'extérieur d'un composant donné, et la détection de la taille de l'écran).

Add a new icon

Les icons sont des composants particuliers : leur création doit respecter les règles de Queen.

Avant d'ajouter un nouvel icon à la lib, vérifiez qu'il respecte la charte graphique, les règles de nommage, qu'il a été ajouté au Figma et au Google Drive, et qu'il ne s'agit pas d'un doublon.

Une fois toutes ces vérifications effectuées, vous pouvez ajouter votre icon à la lib en suivant les étapes suivantes (considérons que votre icon s'appelle horse.svg) :

  1. Dans lib/Icon/components, créez un nouveau fichier Horse.js (HorseBold.js s'il s'agit d'un icon bold).
  2. Ajoutez vos <path> SVG dans la structure ci-dessous :
import React from 'react';

const SvgHorse = props => (
    <svg viewBox="0 0 143 143" {...props}>
        <path d="your-path" />
        <path d="your-path-2" />
    </svg>
);

export default SvgHorse;
  1. Dans lib/Icon/Icon.js, importez Horse et exportez-le en tant que HorseIcon en suivant le modèle des autres icons (dans l'ordre alphabétique pour qu'on s'y retrouve).
  2. Dans lib/index.js, importez et exportez HorseIcon (toujours dans l'ordre alphabétique, sinon vous aurez bien compris qu'on vous arrachera la tête).
  3. Dans lib/Icon/Icon.stories.js, ajoutez HorseIcon à la première storie en suivant le modèle des autres icons (pas par ordre alphabétique, là ils sont rangés par genre, cf. l'orga des icons sur Figma pour savoir où mettre votre icon). Inutile de l'importer : il l'est déjà ! Vous pouvez admirer votre icon dans son milieu naturel avec tous ses petits copains.

Et voilà, votre icon est ajouté et votre tête toujours en place, félicitations !

Create a new component

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

/MyComponent
   /style
   |  base.js (optional)
   |  constants.js (optional)
   |  index.js
   MyComponent.js
   MyComponent.stories.js
   MyComponent.test.js
  • Files inside the sub-directory style are used to contains the definition of a styled-component that will be used to style the main component. index.js is the main style file, base.js is used for conditionnal or reusable styles, and constants.js defines specific constants for the 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 file MyComponent.test.js contains tests for the component. Tests are performed by Jest.

Don't forget to import and export your new component inside src/lib/index.js!

Create, update and run tests

Actuellement, les tests, c'est pas trop ça, mais on essaie au moins de créer un test de base pour chaque composant (comprendre : "est-ce que ce composant pète totalement, ou est-ce que ça va").

Pour lancer les tests sans modifier les snapshots, utiliser la commande suivante :

yarn test

Le plus utile actuellement reste tout de même de lancer les tests en leur permettant d'être mis à jour s'il y a eu un changement dans le composant :

yarn test-update

Les snapshots modifiés doivent être vérifiés et commités.

Create and update documentation

Développer un composant, c'est bien, mais le documenter, c'est encore mieux ! Pensez donc, pour tout nouveau composant OU pour un composant refondu, à créer la documentation sur le repo PayGreen/paygreen-ui-doc en suivant les instructions du README.

Pensez également à mettre à jour la doc existante pour les composants et éléments du thème que vous modifiez !

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].