# Shipwell Web UI

Shipwell's core component and UI standards library.

## Setup

Install package dependencies:

```
npm install
```

```
npm run dev
```

## Development Guidlines

In order to keep this library organized and stable, we request the following guidelines:

### ESLint

This library enforces linting rules to help establish consistent code usage and formatting across all files. Enable your IDE or favorite text editor to show linting errors during development.

Shipwell's UI library currently conforms to a mix Airbnb's style guide and prettier.

**Run eslint command**

```
npm run lint
```

**Resources:**

-   **Airbnb JS Style Guide** - https://github.com/airbnb/javascript
-   **Prettier** - https://github.com/prettier

### Testing

In order to keep core component behavior predictable and consistent, tests are required for all new components, functionality changes and bug fixes.

**Run tests command**

```
npm run test
```

**Resources:**

-   **Jest** - https://jestjs.io/
-   **Enzyme** - https://airbnb.io/enzyme/

### Documentation

All new components and functionality should be reflected in the documentation. Docz is the current documentation tool that is used build and compile components and features into a readable documentation site.

**Run documentation locally**

```
npm run build
npm run docz
```

Note that a full docz build depends on an initial build of the app, so make sure to run `npm run build` first or have `npm run dev` running at the same time as the docz build. Once the docz dev server is running it will automatically include new changes to mdx files and their dependencies. `npm run build` is usually only necessary after pulling in new changes or switching brances.

**Resources**

-   **Docz** - https://github.com/pedronauck/docz
