360dialog-connect-button
v1.0.1
Published
React component to trigger and consume the 360dialog Partner Integrated Onboarding process, as well as the 360dialog Permission Page.
Keywords
Readme
360dialog Partner Integrated Onboarding
This package provides a button component to quickly integrate the 360dialog Partner Integrated Onboarding process into your application. It supports React.js as an importable component and Vanilla JavaScript / plain HTML via a CDN-hosted web component (<dialog-connect-button>), so you can use it on any website without a build step. To learn more about this process and how to participate in this as a 360dialog Partner, please visit our documentation or contact your account manager. If you want to become a 360dialog Partner in order to enable your clients to use the WhatsApp Business API, please get in touch with us.
Prerequisites
In order to access the 360dialog Partner Integrated Onboarding process you need to set your partner_redirect_url via the Partner API. This will be used to redirect the client after the onboarding process is finished. Important: To use the ConnectButton component the redirect URL needs to match the route, that has the button integrated.
Installation
With yarn
yarn add 360dialog-connect-buttonWith NPM
npm install 360dialog-connect-buttonGetting started
React Usage
Add the connect button to your React app:
import { ConnectButton } from '360dialog-connect-button';
const App = () => {
const handleCallback = callbackObject => {
/* The callback function returns the client ID as well as all channel IDs, for which you're enabled to fetch the API key via the Partner API */
console.log('client ID: ' + callbackObject.client);
console.log('channel IDs: ' + callbackObject.channels);
};
return (
<div>
<ConnectButton partnerId={'your-partner-id'} callback={handleCallback} />
</div>
);
};Vanilla JavaScript / HTML Usage
You can also use the connect button on any website without React or npm! Simply include the script from a CDN and use the <dialog-connect-button> HTML element.
CDN Installation
<!-- From unpkg -->
<script src="https://unpkg.com/360dialog-connect-button/dist/dialog-connect-button.umd.js"></script>
<!-- From jsdelivr -->
<script src="https://cdn.jsdelivr.net/npm/360dialog-connect-button/dist/dialog-connect-button.umd.js"></script>Basic Example
<!DOCTYPE html>
<html>
<head>
<script src="https://unpkg.com/360dialog-connect-button/dist/dialog-connect-button.umd.js"></script>
</head>
<body>
<dialog-connect-button
partner-id="your-partner-id"
label="Connect WhatsApp Business"
>
</dialog-connect-button>
<script>
document.addEventListener('dialog-connect-callback', event => {
console.log('Client ID:', event.detail.client);
console.log('Channels:', event.detail.channels);
});
</script>
</body>
</html>For more detailed vanilla JavaScript usage examples and API documentation, see VANILLA-USAGE.md.
Properties
Following properties are supported by the button component:
| Property name | Type | Description | Required |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | -------- |
| partnerId | string | Your 360dialog Partner ID | ✅ |
| callback | (callbackObject: {client: string, channels: string[], revokedChannels?: string[]}) => void | Callback function, that receives the returned client ID as well as channel IDs | ✅ |
| requestedNumber | string | Optional parameter to request access for a specific phone number | |
| label | string | Optional parameter to provide a custom button label | |
| queryParameters | {email?: string, name?: string, state?: string, redirect_url?: string, next?: string, plan_selection?: string, flow?: string, io_signature?: string, io_timestamp?: string, preverified_phone_number_id?: string} | Optional query parameters that get passed to the sign up form for pre-filling | |
| version | 'v1' \| 'v2' | Hub version to connect to — v1 uses hub.360dialog.com, v2 uses app.360dialog.com (default: 'v1') | |
| useNewRedirect | boolean | Use the new CH IO redirect URL (default: false) | |
Styling
React Component Styling
The ConnectButton React component is an unstyled <button /> component. You can use any styling method, e.g. CSS-in-JS libraries such as styled-components.
import { ConnectButton } from '360dialog-connect-button';
const App = () => {
const StyledConnectButton = styled(ConnectButton)`
outline: none;
background: #ff4369;
color: white;
padding: 8px 16px;
border-radius: 3px;
margin-top: 32px;
border: none;
`;
return (
<div>
<StyledConnectButton
partnerId={'your-partner-id'}
callback={handleCallback}
/>
</div>
);
};Vanilla JavaScript Styling
The <dialog-connect-button> web component can be styled using CSS custom properties (CSS variables) or regular CSS targeting the element.
Using CSS Custom Properties (Recommended)
<style>
dialog-connect-button {
--dialog-connect-bg: #007bff;
--dialog-connect-color: white;
--dialog-connect-hover-bg: #0056b3;
--dialog-connect-padding: 12px 24px;
--dialog-connect-border-radius: 6px;
--dialog-connect-font-size: 16px;
}
</style>
<dialog-connect-button
partner-id="your-partner-id"
label="Connect WhatsApp Business"
>
</dialog-connect-button>Available CSS Custom Properties
| Property | Description | Default Value |
| --------------------------------- | ------------------------- | --------------- |
| --dialog-connect-bg | Background color | #007bff |
| --dialog-connect-color | Text color | white |
| --dialog-connect-border | Border style | none |
| --dialog-connect-padding | Button padding | 12px 24px |
| --dialog-connect-border-radius | Border radius | 4px |
| --dialog-connect-font-size | Font size | 14px |
| --dialog-connect-font-family | Font family | System fonts |
| --dialog-connect-transition | CSS transition | all 0.2s ease |
| --dialog-connect-hover-bg | Hover background color | Darker variant |
| --dialog-connect-hover-color | Hover text color | Same as base |
| --dialog-connect-active-bg | Active background color | Darker variant |
| --dialog-connect-disabled-bg | Disabled background color | #ccc |
| --dialog-connect-disabled-color | Disabled text color | #666 |
Using Regular CSS
<style>
.my-connect-button {
--dialog-connect-bg: #28a745;
--dialog-connect-hover-bg: #218838;
--dialog-connect-padding: 14px 28px;
--dialog-connect-font-size: 18px;
--dialog-connect-border-radius: 8px;
}
</style>
<dialog-connect-button
class="my-connect-button"
partner-id="your-partner-id"
label="🚀 Get Started"
>
</dialog-connect-button>