Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/futurenorthants/northants-design-system
Design system for West & North Northamptonshire Councils, two unitary councils serving Wellingborough, Corby, Daventry, East Northants, Kettering, Northampton, Northamptonshire County and South Northants
https://github.com/futurenorthants/northants-design-system
react storybook styled-components
Last synced: about 1 month ago
JSON representation
Design system for West & North Northamptonshire Councils, two unitary councils serving Wellingborough, Corby, Daventry, East Northants, Kettering, Northampton, Northamptonshire County and South Northants
- Host: GitHub
- URL: https://github.com/futurenorthants/northants-design-system
- Owner: FutureNorthants
- License: gpl-3.0
- Created: 2020-11-27T16:21:11.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-04-04T10:47:00.000Z (9 months ago)
- Last Synced: 2024-04-05T08:48:23.726Z (9 months ago)
- Topics: react, storybook, styled-components
- Language: TypeScript
- Homepage:
- Size: 19.7 MB
- Stars: 2
- Watchers: 3
- Forks: 3
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🎨 Northants Design Sytem
[![Netlify Status](https://api.netlify.com/api/v1/badges/19c44b04-97ec-4066-84f8-fd7106d00996/deploy-status)](https://app.netlify.com/sites/elated-pasteur-e85c66/deploys)
👉 **[You can view the design system here](https://northants-design-system.netlify.app)**
The design system for North Northamptonshire & West Northamptonshire, two brand new unitary councils encompassing Wellingborough, Corby, Daventry, East Northants, Kettering, Northampton, Northamptonshire County and South Northants.
## Requirements
Requires node v18 for Storybook v7. If you have nvm installed then you can run `nvm use` and it will autodetect the correct version of node to use.
## Installation
### Installation and development of the Design System
You need `node` and `npm` installed.
1. Clone the repo and `npm i`
2. `npm run dev` will start up the Storybook playground and start `rollup` watching for changes.### Installation using docker
This option is recommended if your using a windows machine
```sh
// build with no cache
docker-compose build --no-cache// start the services
docker-compose up// list the services
docker-compose ps// list the containers
docker ps// stop services
docker-compose stop
```## Documentation
This design system is made up from a combination of these libraries:
- [Rollup](https://github.com/rollup/rollup)
- [Storybook](https://storybook.js.org/) to help you create and show off your components
- [TypeScript](https://www.typescriptlang.org/)
- [Jest](https://jestjs.io/) and [React Testing Library](https://github.com/testing-library/react-testing-library) enabling testing of the components## Examples
👉 **[You can view the design system here](https://northants-design-system.netlify.app)**
This is a living documentation powered by [Storybook](https://storybook.js.org/), where you can see all the available components, their variations and documentation.
### Using the design system in your project
You can find the design system [here on NPM](https://www.npmjs.com/package/northants-design-system).
```
npm install northants-design-system// Install peer dependencies
npm install react react-dom styled-components @reach/router
```This design system uses theming - **it will not work without a theme wrapped around the components** - to use a theme you will need to include a `ThemeProvider` from styled components, [you can find out more about how this works here](https://styled-components.com/docs/advanced#theming). Then you will need to import one of the three themes from the design system, or create your own. The three avaliable are `GDS_theme` (a basic style based on the [GDS design system](https://design-system.service.gov.uk/)), `west_theme` and `north_theme` (themes for North and West Northamptonshire styled components).
This `ThemeProvider` can be wrapped around the entire app, or around a single component
```
import { ThemeProvider } from 'styled-components';
import { GDS_theme } from "northants-design-system";```
Import the components you'd like to use into your app. For example:
```
import React from "react"
import { Button } from "northants-design-system"const MyComponent = () =>
```Each component has documentation in the design system explaining the avaliable props, how to use it, and any guidance on using it.
We are also using a [CSS reset](http://meyerweb.com/eric/tools/css/reset/) which you should add to your frontend when using this design system, to ensure the styles are correct.
### Putting it all together
```
import React from "react"
import { Button } from "northants-design-system"
import { ThemeProvider } from 'styled-components';
import { GDS_theme } from "northants-design-system";const MyComponent = () =>
```## Documentation
### Creating and generating new components
There is a util file under `util` called `create-component.js`. Instead of copy pasting components to create a new component, you can just run this command to generate all the files you need to start building out a new component. To use it:
```
npm run generate NewComponentName
```This will generate:
```
/src
/NewComponentName
NewComponentName.tsx
NewComponentName.stories.tsx
NewComponentName.test.tsx
NewComponentName.types.ts
NewComponentName.styles.ts
```The default templates for each file can be modified under `util/templates`.
Don't forget to add the component to your `index.ts` exports if you want the library to export the component.
### How to publish a new version to NPM
First, make sure you have an NPM account and are [logged into NPM using the `npm login` command.](https://docs.npmjs.com/creating-a-new-npm-user-account)
1. **information about testing needed here**
2. If tests pass...
3. Increment the next version number in the `package.json` file.
4. `npm publish`. This will:
- Run the tests
- Bundle and transpile the code
- Create and publish a tarball to NPM
5. If you are wanting to utilise the updated design system you will then need to update the version number of the design system in the `package.json` file within that repo.### Installing component library locally for IE11 (or other uses) but this is easier and less buggy
https://www.viget.com/articles/how-to-use-local-unpublished-node-packages-as-project-dependencies/
Good article on this can be found [here](https://www.viget.com/articles/how-to-use-local-unpublished-node-packages-as-project-dependencies/)
Install yalc **globally**
Using NPM: `npm i yalc -g`
Using Yarn: `yarn global add yalc`In the **northants-design-system**
You will need node v14.17.3 > to build on windowsrun `yalc publish`
In **your other repository**
run `yalc add northants-design-system` then run `npm install` or `yarn`Then run `npm run start` to run the application.
You will need node v14.17.3 > to build on windows
Install yalc
Using NPM:`npm i yalc -g`
Using Yarn:
`yarn global add yalc`
run `yalc publish` in the design system folder
run `yalc add northants-design-system` in ie11-test-folder
`npm install`
to make changes and update them
in design system `yalc push` (this automatically updates all dependencies on all yalc files)
or `yalc publish` in design system and `yalc update` in your projects repo
### Installing Component Library Locally
Let's say you have another project (`test-app`) on your machine that you want to try installing the component library into without having to first publish the component library. In the `test-app` directory, you can run:
```
npm i --save ../react-component-library
```which will install the local component library as a dependency in `test-app`. It'll then appear as a dependency in `package.json` like:
```JSON
...
"dependencies": {
...
"react-component-library": "file:../react-component-library",
...
},
...
```Your components can then be imported and used in that project.