# React

## Basics

### Installing Widgets

Each widget comes with a Javascript and CSS file.  To add a widgets to your website, you will need to add its corresponding Javascript and CSS to the `public/index.html` of the react app.

**Example:**

```html
<head>
  ...
  <!--
    Manifold Widgets
  -->
  <script src="https://connect.manifoldxyz.dev/latest/connect.umd.js"></script>
  <link rel="stylesheet" href="https://connect.manifoldxyz.dev/latest/connect.css">
  ....
</head>
```

The uri for the Javascript and CSS for each widget is as follows:

```
https://<WIDGET_NAME>.manifoldxyz.dev/<WIDGET_VERSION>/<WIDGET_NAME>.umd.min.js
https://<WIDGET_NAME>.manifoldxyz.dev/<WIDGET_VERSION>/<WIDGET_NAME>.css
```

{% hint style="warning" %}
If you always want the latest version, use **latest** for the \<WIDGET\_VERSION>. However, due to the changing nature of the codebase, it is possible that the "newer" **latest** is no longer compatible with the "previous" **latest** used to develop the app. It is thus recommended that you use a specific version of a widget for consistent results.
{% endhint %}

You can find a list of widgets, versions and links [here](https://docs.manifold.xyz/manifold-for-developers/resources/widgets/directory).

### Using Widgets

To use a widget, simply add a `<div>` into each react component you wish to use it in.

**Example:**

<pre class="language-jsx"><code class="lang-jsx">function ManifoldConnect() {
  return (
    &#x3C;div className="ManifoldConnect">
      &#x3C;div  
        data-widget="m-connect"
        data-grant-type="&#x3C;your app grant type, `signature` or `token`>"
        data-client-id="&#x3C;your app client id>"  
        data-app-name="&#x3C;your app name>"  
        data-network="&#x3C;your desired network's chain id>"
      >
<strong>      &#x3C;/div>
</strong><strong>    &#x3C;/div>
</strong><strong>  );
</strong><strong>}
</strong></code></pre>

You can find a list of widgets, versions and links [here](https://docs.manifold.xyz/manifold-for-developers/resources/widgets/directory).

### Styling

Widgets are styled using standard CSS.

Some widgets may include links pointing to additional stylesheets. These additional stylesheets (usually named `<WIDGET_NAME>.manifold-light.css` or `<WIDGET_NAME>.manifold-dark.css`) build **on top of** the base stylesheet (usually named `<WIDGET_NAME>.css`), thus the additional stylesheets should be included **after** the base one.

## Examples

Examples of commonly used features can be found [here](https://github.com/manifoldxyz/manifold-templates/tree/main/react). Please feel free to use this as a starting point to building your own dApp.
