# blockauth-sdk-react

This is a SDK-react for the BlockAuth project. It is a React component library that uses the SDK
to interact with the BlockAuth smart contracts and Websocket server.

[![pipeline status](https://gitlab.com/blockauthio/blockauth-sdk-react/badges/main/pipeline.svg)](https://gitlab.com/blockauthio/blockauth-sdk-react/-/commits/main) [![coverage report](https://gitlab.com/blockauthio/blockauth-sdk-react/badges/main/coverage.svg)](https://gitlab.com/blockauthio/blockauth-sdk-react/-/commits/main) [![Latest Release](https://gitlab.com/blockauthio/blockauth-sdk-react/-/badges/release.svg)](https://gitlab.com/blockauthio/blockauth-sdk-react/-/releases)

# How to use?

Use the official documentation at [block-auth.io](https://docs.block-auth.io/) to learn how to use the SDK.

### Connecting using credentials

After picking your preferred client, you are ready to make your first call to the Protocol SDK. Below is an example of how to connect your users with the BlockAuth SDK using React. We will focus the example over 2 main components FlowBlockAuth and DropdownProfile that will help you to connect your users with the BlockAuth SDK.

#### User actions 1/3: Click on button

Component which starts the sign in/sign up flows <FlowBlockAuth />

[![blockauth-sdk-react](https://docs.block-auth.io/_next/static/media/sdk_react_flowblockauth_step1.14adeb04.png)](https://docs.block-auth.io/_next/static/media/sdk_react_flowblockauth_step1.14adeb04.png)


#### User actions 2/3: Connect with a service

| before connect | after connect |
| :-------- | :------- |
| [![blockauth-sdk-react](https://docs.block-auth.io/_next/static/media/sdk_react_flowblockauth_step2.9ac3afba.png)](https://docs.block-auth.io/_next/static/media/sdk_react_flowblockauth_step2.9ac3afba.png) | [![blockauth-sdk-react](https://docs.block-auth.io/_next/static/media/sdk_react_flowblockauth_step3.bd76b771.png)](https://docs.block-auth.io/_next/static/media/sdk_react_flowblockauth_step3.bd76b771.png) |

#### User actions 3/3: Authorize Log In

Component which shows the user profile and allows to log out <DropdownProfile />

[![blockauth-sdk-react](https://docs.block-auth.io/_next/static/media/sdk_react_flowblockauth_step4.dcc2a678.png)](https://docs.block-auth.io/_next/static/media/sdk_react_flowblockauth_step4.dcc2a678.png)

## Development

Install dependencies

```bash
  npm install
```

CI/CD

```bash
  npm run ci
```


Start the development server

```bash
  npm run dev
```


After making changes to the code, run the following command to format the code, run the linter, and start the development server:

```bash
  npm run css && npm run lint && npm run format && npm run dev
```


## NPM Scripts

| Script | Description |
| :-------- | :------- |
| `dev` | Starts the development server |
| `css` | Builds the CSS |
| `css:dev` | Builds the CSS in development mode |
| `test` | Runs the tests and generates a coverage report |
| `lint` | Runs the linter |
| `lint:fix` | Runs the linter and fixes the errors |
| `format` | Formats the code |
| `build` | Builds the app for production |
| `preview` | Builds the app for production and previews it locally |
| `ci` | Runs the tests, linter, and code formatter |
| `stories` | Starts the Storybook server |
| `stories:build` | Builds the Storybook app for production |
| `docs` | Starts the documentation server |
| `docs:build` | Builds the documentation app for production |
| `clean` | Removes `dist`, `dist-stories`, `dist-docs`, `package-lock.json`, `.coverage` and `node_modules` | 


## NPM Publish

```bash
  yarn publish
```

## Authors

Block-Auth.io Team
