/athenaeum

The React Component Library with a living styleguide

Primary LanguageJavaScriptMIT LicenseMIT

Athenaeum - A React Component Library (RCL)

Table of Contents

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

  1. Clone the repo:
  git clone git@github.com:policygenius/athenaeum.git
  1. Install dependencies:
  yarn
  1. Start the server:
  yarn start
  1. 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.

  1. In your athenaeum repo, run:
  yarn link && yarn build:publish:watch
  1. In the repo you are working in, run:
  yarn link 'athenaeum'
  1. When you are finished, in the repo you are working in, run:
  yarn unlink 'athenaeum' && yarn
  1. 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:

  1. Open src/atoms/Icon/constants.js
  2. 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.

Resources