@user-intent-detector/react
Version:
React bindings for the user-intent-detector core library, providing hooks and components to detect user intent like exit, conversion, hesitation, and confusion.
90 lines (69 loc) โข 3.22 kB
Markdown
React hook for detecting user intent signals like exit, idle, hesitation, confusion, engagement, and more โ powered by the core logic from `@user-intent-detector/core`.
- ๐ Detects user exit, idle, confusion, hesitation, and engagement
- ๐ง Returns confidence score and idle time
- โ๏ธ Configurable and extensible with callbacks
- ๐ฆ Lightweight and tree-shakable
- ๐งช Optional debug mode
```bash
npm install @user-intent-detector/react
yarn add @user-intent-detector/react
```
> โ ๏ธ This package depends on `@user-intent-detector/core`, which will be installed automatically.
```tsx
import { useUserIntent } from '@user-intent-detector/react';
function App() {
const intent = useUserIntent({
onExit: (data) => console.log('Exit intent!', data),
onIdle: (data) => console.log('User idle:', data),
onConfused: (data) => console.log('User confused:', data),
onHesitation: (data) => console.log('User hesitation:', data),
onEngaged: (data) => console.log('User engaged:', data),
debug: true,
});
return (
<div>
<h1>User Intent: {intent.intent}</h1>
<p>Confidence: {Math.round(intent.confidence * 100)}%</p>
<p>Idle Time: {intent.idleTime}ms</p>
</div>
);
}
```
```ts
function useUserIntent(options?: UseUserIntentOptions): IntentData
```
### `UseUserIntentOptions`
| Option | Type | Description |
|----------------|---------------------------|---------------------------------------------------------------------|
| `onExit` | `(data) => void` | Triggered when exit intent is detected |
| `onIdle` | `(data) => void` | Triggered when user goes idle (default 10s, configurable) |
| `onBrowsing` | `(data) => void` | Triggered when user resumes normal browsing |
| `onConfused` | `(data) => void` | Triggered when user is detected as confused |
| `onHesitation` | `(data) => void` | Triggered when user hesitates before clicking or action |
| `onEngaged` | `(data) => void` | Triggered when user shows strong engagement (scroll, click, etc.) |
| `idleTimeout` | `number` | Timeout (in ms) for idle detection. Default: `10000` (10s) |
| `debug` | `boolean` | Enable console logs for debugging |
### `IntentData`
```ts
interface IntentData {
intent: 'browsing' | 'idle' | 'exiting' | 'confused' | 'hesitation' | 'engaged';
confidence: number; // 0.0 to 1.0
idleTime: number; // In milliseconds
timestamp: number; // Unix timestamp in ms
}
```
- Show exit-intent popup before user leaves
- Save form state when idle detected
- Highlight buttons when hesitation is high
- Offer help when confusion is detected
- Trigger personalization on engagement
MIT ยฉ [Your Name or Org]
```