Athenaeum - A React Component Library (RCL)
Table of Contents
- Purpose
- Install the NPM package
- Using the RCL locally
- Using an RCL component
- Running tests
- Finding your way around
- Adding New Icons
- Contributing
Purpose
The RCL is a tool to help create and maintain robust design systems, allowing a developer to roll out higher quality, more consistent User Interfaces (UI) faster.
To see it in action, visit: http://rcl.policygenius.com/latest/index.html
The RCL relies heavily on the following technologies. If you want to learn more about them and how to customize/configure the RCL, take a look at the documentation:
We use Babel to compile our JS, which allows us to use the latest features of the language.
Install the NPM package
The RCL is published as a package called "Athenaeum", which can be found here.
Install the package in your project with the package manager of your choice:
yarn add athenaeum
npm install athenaeum
Using the RCL locally
- Clone the repo:
git clone git@github.com:policygenius/athenaeum.git
- Install dependencies:
yarn
- Start the server:
yarn start
- Visit
http://localhost:6060
to view
Development with another project locally
If you want to work on the RCL and another repo simultaneously, you can symlink to Athenaeum from the repo you are working in.
- In your
athenaeum
repo, run:
yarn link && yarn build:publish:watch
- In the repo you are working in, run:
yarn link 'athenaeum'
- When you are finished, in the repo you are working in, run:
yarn unlink 'athenaeum' && yarn
- In your
athenaeum
repo, run:
yarn unlink
Using an RCL component
RCL components are React components, which are exported as a collection of modules you can import/require like you would any other JS dependency:
e.g.
import { TextComponent, Button, Layout, Col } from 'athenaeum';
function MyReactComponent( props ) {
return (
<div>
<Layout>
<TextComponent type={6}>I am a header!</TextComponent>
<Col>
I am a column!
</Col>
<Button>Submit!</Button>
</Layout>
</div>
)
}
export default MyReactComponent;
The RCL gets exported with a bundled JS file and a CSS file. To use the RCL stylesheet, you can either import them directly into your project:
import 'athenaeum/lib/assets/styles.css';
OR simply link to the latest version of the styles in your HTML:
<link href="http://rcl.policygenius.com/{{v5.5.2 or latest version}}/assets/styles.css" rel="stylesheet">
Running tests
Note: Test will be run automatically as part of a githook on git push
yarn test
OR
yarn test [filepath]
The RCL uses the following for testing. If you want to learn more about them and how to customize/configure the RCL, take a look at the documentation:
Finding your way around
/src
- atoms (Buttons, Icons, Text, etc.)
- molecules (Form Fields, Lists, Image Asides, etc.)
- organisms (Forms, Tables, etc.)
- templates (Headers, Navigators, Footers, etc.)
Our RCL is structured around the concepts put forth by Atomic Design. The smallest components are ATOMS, which are used to make MOLECULES, which are used to make ORGANISMS, which are lastly used to make TEMPLATES.
Adding New Icons
Upload the icons to our Google Cloud Bucket using these docs.
Add icon name to the list of possible icon values:
- Open
src/atoms/Icon/constants.js
- Add the name of your icon in alphabetical order
Contributing
For more information on Contributing and issues, please view the athenaeum
Github wiki.
The RCL and the Athenaeum project is a product by PolicyGenius.