# DeepVue DigiLocker React SDK

This SDK provides seamless integration for DigiLocker verification in your React application.

## Features

- DigiLocker eKYC flow
- Secure session management
- Modern, user-friendly UI

## Installation

```bash
npm install deepvue-digilocker-react-sdk
```

## Usage Example

To start the DigiLocker flow, import `FlowSelector` and `DigiLockerFlow` from the SDK. Use state to switch between the selector and the result UI. The SDK will handle the DigiLocker process and redirect the user to your provided `redirectUrl` after authentication:

```tsx
import { useState } from "react";
import { FlowSelector, DigiLockerFlow } from "deepvue-digilocker-react-sdk";

function App() {
  const [showDigiLocker, setShowDigiLocker] = useState(false);
  const apiKey = "";
  const clientId = "";
  const redirectUrl = "https://your_company.com";

  return (
    <>
      {!showDigiLocker ? (
        <FlowSelector
          apiKey={apiKey}
          clientId={clientId}
          singleFlow="digilocker"
          showFlowSelector={true}
          onSelectDigiLocker={() => setShowDigiLocker(true)}
        />
      ) : (
        <DigiLockerFlow
          apiKey={apiKey}
          clientId={clientId}
          redirectUrl={redirectUrl}
        />
      )}
    </>
  );
}

export default App;
```

## Callback Handling

- The `redirectUrl` prop should point to a page in your app (e.g., `/callback.html`) that can handle the DigiLocker callback.
- The SDK provides a sample `callback.html` that reads the DigiLocker response and stores it in `sessionStorage` for your app to complete the flow.
- After successful authentication, the user will be redirected to your `redirectUrl`.

## Components

- `FlowSelector`: Lets users start the DigiLocker flow. All logic and UI for DigiLocker eKYC is handled internally by the SDK.
- `DigiLockerFlow`: Renders the verification result UI after DigiLocker authentication.
  - **Props:**
    - `apiKey` (string, required): Your API key
    - `clientId` (string, required): Your client ID
    - `redirectUrl` (string, required): The URL to redirect to after DigiLocker authentication (should point to your callback handler)
    - `singleFlow` ("digilocker", required): Only DigiLocker is supported
    - `showFlowSelector` (boolean, optional): Show the selector UI (default: true)

## License

MIT
