@pillar-ai/react 0.1.8 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Pillar, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,98 +1,181 @@
1
1
  # @pillar-ai/react
2
2
 
3
- React bindings for the Pillar Embedded Help SDK.
3
+ React SDK for the [Pillar](https://trypillar.com) open-source AI copilot — embed a product assistant in your React or Next.js app that executes tasks, not just answers questions. [GitHub](https://github.com/pillarhq/pillar) · [Docs](https://trypillar.com/docs)
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@pillar-ai/react)](https://www.npmjs.com/package/@pillar-ai/react)
6
+ [![npm downloads](https://img.shields.io/npm/dm/@pillar-ai/react)](https://www.npmjs.com/package/@pillar-ai/react)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
+ [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue)](https://www.typescriptlang.org/)
9
+
10
+ ## What is Pillar?
11
+
12
+ Pillar is a product copilot for SaaS and web applications. Users say what they want, and Pillar uses your UI to make it happen — navigating pages, pre-filling forms, and calling your APIs.
13
+
14
+ For example, a user could ask:
15
+
16
+ > "Close the Walmart deal as won in Salesforce and notify implementation"
17
+
18
+ > "Add a weekly signups chart to my Amplitude dashboard"
19
+
20
+ > "Create a P1 bug in Linear for the checkout crash and add it to this sprint"
21
+
22
+ Pillar understands the intent, builds a multi-step plan, and executes it client-side with the user's session.
23
+
24
+ ## Features
25
+
26
+ - **Task Execution** — Navigate pages, pre-fill forms, call APIs on behalf of users
27
+ - **React Hooks** — `usePillar` and `useHelpPanel` for idiomatic React integration
28
+ - **Next.js Support** — Works with App Router and Pages Router
29
+ - **Multi-Step Plans** — Chain actions into workflows for complex tasks
30
+ - **Type-Safe Actions** — Full TypeScript support for action definitions
31
+ - **Custom Action Cards** — Render React components for confirmations and data input
32
+
33
+ ## Documentation
34
+
35
+ **[View Full Documentation](https://trypillar.com/docs)** | [React Guide](https://trypillar.com/docs/react/installation) | [API Reference](https://trypillar.com/docs/reference/react)
4
36
 
5
37
  ## Installation
6
38
 
7
39
  ```bash
8
40
  npm install @pillar-ai/react
41
+ # or
42
+ pnpm add @pillar-ai/react
43
+ # or
44
+ yarn add @pillar-ai/react
9
45
  ```
10
46
 
11
47
  ## Quick Start
12
48
 
13
- Wrap your app with `PillarProvider`:
49
+ ### 1. Get Your Product Key
50
+
51
+ > **⚠️ Beta Onboarding:** Cloud access is currently manual while we learn from early teams. Join the waitlist at [trypillar.com](https://trypillar.com), and we will reach out to onboard you.
52
+ >
53
+ > By default, you'll get an engineer from Pillar to help with setup. If you prefer onboarding without engineering support, include that in your waitlist request and we will support that too.
54
+
55
+ ### 2. Add the Provider
56
+
57
+ Wrap your app with `PillarProvider` and define actions:
14
58
 
15
59
  ```tsx
16
60
  import { PillarProvider } from '@pillar-ai/react';
17
61
 
62
+ const actions = {
63
+ export_to_csv: {
64
+ type: 'trigger' as const,
65
+ label: 'Export to CSV',
66
+ description: 'Export current data to CSV file',
67
+ },
68
+ go_to_settings: {
69
+ type: 'navigate' as const,
70
+ label: 'Open Settings',
71
+ description: 'Navigate to settings page',
72
+ path: '/settings',
73
+ },
74
+ };
75
+
18
76
  function App() {
19
77
  return (
20
- <PillarProvider helpCenter="your-help-center">
78
+ <PillarProvider
79
+ productKey="your-product-key"
80
+ actions={actions}
81
+ onTask={(actionName, data) => {
82
+ if (actionName === 'export_to_csv') {
83
+ downloadCSV();
84
+ }
85
+ }}
86
+ >
21
87
  <MyApp />
22
88
  </PillarProvider>
23
89
  );
24
90
  }
25
91
  ```
26
92
 
27
- ## Components
28
-
29
- ### PillarProvider
93
+ ### Next.js App Router
30
94
 
31
- The root provider that initializes the SDK and provides context to child components.
95
+ For Next.js App Router, create a client wrapper component:
32
96
 
33
97
  ```tsx
34
- <PillarProvider
35
- helpCenter="your-help-center"
36
- config={{
37
- panel: { position: 'right', mode: 'push' },
38
- edgeTrigger: { enabled: true },
39
- theme: { mode: 'auto' },
40
- }}
41
- >
42
- {children}
43
- </PillarProvider>
44
- ```
98
+ // providers/PillarClientProvider.tsx
99
+ 'use client';
45
100
 
46
- ### Custom Trigger Button
101
+ import { PillarProvider } from '@pillar-ai/react';
102
+ import { useRouter } from 'next/navigation';
47
103
 
48
- To use your own button instead of the built-in edge trigger:
104
+ const actions = {
105
+ go_to_settings: {
106
+ type: 'navigate' as const,
107
+ label: 'Open Settings',
108
+ description: 'Navigate to settings page',
109
+ },
110
+ };
49
111
 
50
- ```tsx
51
- <PillarProvider
52
- helpCenter="your-help-center"
53
- config={{ edgeTrigger: { enabled: false } }}
54
- >
55
- <MyApp />
56
- </PillarProvider>
112
+ export function PillarClientProvider({ children }: { children: React.ReactNode }) {
113
+ const router = useRouter();
57
114
 
58
- function HelpButton() {
59
- const { toggle } = useHelpPanel();
60
- return <button onClick={toggle}>Get Help</button>;
115
+ return (
116
+ <PillarProvider
117
+ productKey="your-product-key"
118
+ actions={actions}
119
+ onTask={(actionName, data) => {
120
+ if (actionName === 'go_to_settings') {
121
+ router.push('/settings');
122
+ }
123
+ }}
124
+ >
125
+ {children}
126
+ </PillarProvider>
127
+ );
61
128
  }
62
129
  ```
63
130
 
64
- ### Tooltip
65
-
66
- Attach contextual tooltips to any element:
67
-
68
131
  ```tsx
69
- import { Tooltip } from '@pillar-ai/react';
132
+ // app/layout.tsx
133
+ import { PillarClientProvider } from '@/providers/PillarClientProvider';
70
134
 
71
- <Tooltip tooltipId="welcome-tooltip">
72
- <button>Hover me for help</button>
73
- </Tooltip>;
135
+ export default function RootLayout({ children }) {
136
+ return (
137
+ <html>
138
+ <body>
139
+ <PillarClientProvider>{children}</PillarClientProvider>
140
+ </body>
141
+ </html>
142
+ );
143
+ }
74
144
  ```
75
145
 
76
- ### PillarPanel
146
+ ## Defining Actions
77
147
 
78
- For custom panel placement (when using `container: 'manual'`):
148
+ Actions define what your co-pilot can do. When users make requests, Pillar matches intent to actions:
79
149
 
80
150
  ```tsx
81
- import { PillarProvider, PillarPanel } from '@pillar-ai/react';
151
+ import type { ActionDefinitions } from '@pillar-ai/react';
82
152
 
83
- function App() {
84
- return (
85
- <PillarProvider
86
- helpCenter="your-help-center"
87
- config={{ panel: { container: 'manual' } }}
88
- >
89
- <div className="layout">
90
- <main>Your content</main>
91
- <PillarPanel className="sidebar-panel" />
92
- </div>
93
- </PillarProvider>
94
- );
95
- }
153
+ const actions = {
154
+ // Navigation actions
155
+ go_to_billing: {
156
+ type: 'navigate' as const,
157
+ label: 'Open Billing',
158
+ description: 'Navigate to billing and subscription settings',
159
+ },
160
+
161
+ // Trigger actions that execute code
162
+ export_report: {
163
+ type: 'trigger' as const,
164
+ label: 'Export Report',
165
+ description: 'Export the current report to PDF or CSV',
166
+ },
167
+
168
+ // Actions with data schemas (AI extracts parameters)
169
+ invite_team_member: {
170
+ type: 'trigger' as const,
171
+ label: 'Invite Team Member',
172
+ description: 'Send an invitation to join the team',
173
+ dataSchema: {
174
+ email: { type: 'string' as const, required: true },
175
+ role: { type: 'string' as const, enum: ['admin', 'member', 'viewer'] },
176
+ },
177
+ },
178
+ } satisfies ActionDefinitions;
96
179
  ```
97
180
 
98
181
  ## Hooks
@@ -109,69 +192,124 @@ function MyComponent() {
109
192
 
110
193
  if (!isReady) return <div>Loading...</div>;
111
194
 
112
- return <div>Panel is {isOpen ? 'open' : 'closed'}</div>;
195
+ return <div>Co-pilot is {isOpen ? 'open' : 'closed'}</div>;
113
196
  }
114
197
  ```
115
198
 
116
199
  ### useHelpPanel
117
200
 
118
- Control the help panel:
201
+ Control the co-pilot panel:
119
202
 
120
203
  ```tsx
121
204
  import { useHelpPanel } from '@pillar-ai/react';
122
205
 
123
- function HelpButton() {
206
+ function CopilotButton() {
124
207
  const { open, close, toggle, isOpen } = useHelpPanel();
125
208
 
126
209
  return (
127
- <button onClick={toggle}>{isOpen ? 'Close Help' : 'Get Help'}</button>
210
+ <button onClick={toggle}>
211
+ {isOpen ? 'Close Co-pilot' : 'Open Co-pilot'}
212
+ </button>
128
213
  );
129
214
  }
130
215
  ```
131
216
 
132
- ## Type-Safe Actions
217
+ ## Components
218
+
219
+ ### PillarProvider
133
220
 
134
- Define custom actions with full TypeScript support:
221
+ The root provider that initializes the SDK:
135
222
 
136
223
  ```tsx
137
- import { PillarProvider, usePillar } from '@pillar-ai/react';
138
- import type { ActionDefinitions } from '@pillar-ai/react';
224
+ <PillarProvider
225
+ productKey="your-product-key"
226
+ actions={actions}
227
+ onTask={(actionName, data) => { /* handle actions */ }}
228
+ config={{
229
+ panel: { position: 'right', mode: 'push' },
230
+ edgeTrigger: { enabled: true },
231
+ theme: { mode: 'auto' },
232
+ }}
233
+ >
234
+ {children}
235
+ </PillarProvider>
236
+ ```
139
237
 
140
- // Define your actions
141
- const actions = {
142
- openSettings: {
143
- type: 'navigate' as const,
144
- label: 'Open Settings',
145
- description: 'Navigate to settings page',
146
- },
147
- showNotification: {
148
- type: 'trigger' as const,
149
- label: 'Show Notification',
150
- description: 'Display a notification',
151
- dataSchema: {
152
- message: { type: 'string' as const, required: true },
153
- },
154
- },
155
- } satisfies ActionDefinitions;
238
+ ### PillarPanel
239
+
240
+ For custom panel placement:
241
+
242
+ ```tsx
243
+ import { PillarProvider, PillarPanel } from '@pillar-ai/react';
156
244
 
157
245
  function App() {
158
246
  return (
159
247
  <PillarProvider
160
- helpCenter="your-help-center"
161
- actions={actions}
162
- onTask={(type, data) => {
163
- // TypeScript knows the exact shape of data based on type
164
- if (type === 'showNotification') {
165
- console.log(data.message); // Typed!
166
- }
167
- }}
248
+ productKey="your-product-key"
249
+ config={{ panel: { container: 'manual' } }}
168
250
  >
169
- <MyApp />
251
+ <div className="layout">
252
+ <main>Your content</main>
253
+ <PillarPanel className="sidebar-panel" />
254
+ </div>
170
255
  </PillarProvider>
171
256
  );
172
257
  }
173
258
  ```
174
259
 
260
+ ### Tooltip
261
+
262
+ Attach contextual tooltips to elements:
263
+
264
+ ```tsx
265
+ import { Tooltip } from '@pillar-ai/react';
266
+
267
+ <Tooltip tooltipId="export-help">
268
+ <button>Export Data</button>
269
+ </Tooltip>
270
+ ```
271
+
272
+ ## Custom Action Cards
273
+
274
+ Render custom UI for inline actions:
275
+
276
+ ```tsx
277
+ import { PillarProvider } from '@pillar-ai/react';
278
+ import type { CardComponentProps } from '@pillar-ai/react';
279
+
280
+ function InviteCard({ data, onConfirm, onCancel }: CardComponentProps<{ email: string; role: string }>) {
281
+ return (
282
+ <div className="card">
283
+ <p>Invite {data.email} as {data.role}?</p>
284
+ <button onClick={() => onConfirm()}>Send Invite</button>
285
+ <button onClick={onCancel}>Cancel</button>
286
+ </div>
287
+ );
288
+ }
289
+
290
+ <PillarProvider
291
+ productKey="your-product-key"
292
+ cards={{
293
+ invite_team_member: InviteCard,
294
+ }}
295
+ >
296
+ {children}
297
+ </PillarProvider>
298
+ ```
299
+
300
+ ## Related Packages
301
+
302
+ | Package | Description |
303
+ |---------|-------------|
304
+ | [@pillar-ai/sdk](https://github.com/pillarhq/sdk) | Core vanilla JavaScript SDK |
305
+ | [@pillar-ai/vue](https://github.com/pillarhq/sdk-vue) | Vue 3 bindings |
306
+ | [@pillar-ai/svelte](https://github.com/pillarhq/sdk-svelte) | Svelte bindings |
307
+
308
+ ## Requirements
309
+
310
+ - React 17.0.0 or higher
311
+ - React DOM 17.0.0 or higher
312
+
175
313
  ## License
176
314
 
177
315
  MIT
@@ -20,8 +20,7 @@ export interface PillarPanelProps extends HTMLAttributes<HTMLDivElement> {
20
20
  * @example
21
21
  * ```tsx
22
22
  * <PillarProvider
23
- * helpCenter="my-help"
24
- * publicKey="pk_xxx"
23
+ * productKey="my-product-key"
25
24
  * config={{ panel: { container: 'manual' } }}
26
25
  * >
27
26
  * <div className="my-layout">
@@ -2,7 +2,7 @@
2
2
  * PillarProvider
3
3
  * Context provider that initializes and manages the Pillar SDK
4
4
  */
5
- import { Pillar, type PillarConfig, type PillarEvents, type PillarState, type TaskExecutePayload, type ThemeConfig } from "@pillar-ai/sdk";
5
+ import { Pillar, type CompactScanResult, type PillarConfig, type PillarEvents, type PillarState, type ScanOptions, type TaskExecutePayload, type ThemeConfig } from "@pillar-ai/sdk";
6
6
  import React, { type ComponentType, type ReactNode } from "react";
7
7
  /**
8
8
  * Props passed to custom card components.
@@ -53,12 +53,25 @@ export interface PillarContextValue {
53
53
  setTheme: (theme: Partial<ThemeConfig>) => void;
54
54
  /** Enable or disable the text selection "Ask AI" popover */
55
55
  setTextSelectionEnabled: (enabled: boolean) => void;
56
+ /** Enable or disable DOM scanning */
57
+ setDOMScanningEnabled: (enabled: boolean) => void;
58
+ /** Whether DOM scanning is enabled */
59
+ isDOMScanningEnabled: boolean;
60
+ /** Manually scan the page and get the compact result */
61
+ scanPage: (options?: ScanOptions) => CompactScanResult | null;
56
62
  /** Subscribe to SDK events */
57
63
  on: <K extends keyof PillarEvents>(event: K, callback: (data: PillarEvents[K]) => void) => () => void;
58
64
  }
59
65
  export interface PillarProviderProps {
60
- /** Help center subdomain or identifier */
61
- helpCenter: string;
66
+ /**
67
+ * Your product key from the Pillar app.
68
+ * Get it at app.trypillar.com
69
+ */
70
+ productKey?: string;
71
+ /**
72
+ * @deprecated Use `productKey` instead. Will be removed in v1.0.
73
+ */
74
+ helpCenter?: string;
62
75
  /**
63
76
  * Additional SDK configuration
64
77
  *
@@ -66,7 +79,7 @@ export interface PillarProviderProps {
66
79
  * - `panel.useShadowDOM`: Whether to isolate styles in Shadow DOM (default: false).
67
80
  * Set to false to let custom cards inherit your app's CSS (Tailwind, etc.)
68
81
  */
69
- config?: Omit<PillarConfig, "helpCenter">;
82
+ config?: Omit<PillarConfig, "productKey" | "helpCenter">;
70
83
  /**
71
84
  * Handler called when a task action is triggered from the chat.
72
85
  * Use this to handle AI-suggested actions like opening modals, navigating, etc.
@@ -74,7 +87,7 @@ export interface PillarProviderProps {
74
87
  * @example
75
88
  * ```tsx
76
89
  * <PillarProvider
77
- * helpCenter="my-app"
90
+ * productKey="my-product-key"
78
91
  * onTask={(task) => {
79
92
  * switch (task.name) {
80
93
  * case 'invite_team_member':
@@ -98,7 +111,7 @@ export interface PillarProviderProps {
98
111
  * import { InviteMembersCard } from './cards/InviteMembersCard';
99
112
  *
100
113
  * <PillarProvider
101
- * helpCenter="my-app"
114
+ * productKey="my-product-key"
102
115
  * cards={{
103
116
  * invite_members: InviteMembersCard,
104
117
  * confirm_delete: ConfirmDeleteCard,
@@ -107,8 +120,18 @@ export interface PillarProviderProps {
107
120
  * ```
108
121
  */
109
122
  cards?: Record<string, CardComponent>;
123
+ /**
124
+ * Enable DOM scanning to send page context with messages.
125
+ * When enabled, interactable elements and text content are captured and sent to the LLM.
126
+ * @default false
127
+ */
128
+ domScanning?: boolean;
129
+ /**
130
+ * Enable DOM scanning dev mode to preview the scanned page before sending.
131
+ * Shows a modal with the AST tree visualization before each message is sent.
132
+ * Useful for debugging what context will be sent to the LLM.
110
133
  /** Children components */
111
134
  children: ReactNode;
112
135
  }
113
- export declare function PillarProvider({ helpCenter, config, onTask, cards, children, }: PillarProviderProps): React.ReactElement;
136
+ export declare function PillarProvider({ productKey, helpCenter, config, onTask, cards, domScanning, children, }: PillarProviderProps): React.ReactElement;
114
137
  export declare function usePillarContext(): PillarContextValue;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Tooltip Component
3
+ * Wrapper component that adds tooltip functionality to children
4
+ */
5
+ import React, { type ReactNode, type CSSProperties } from 'react';
6
+ export interface TooltipProps {
7
+ /** Unique tooltip ID that matches a tooltip in your Pillar dashboard */
8
+ tooltipId: string;
9
+ /** Trigger behavior: hover, click, focus, or icon (shows info icon) */
10
+ trigger?: 'hover' | 'click' | 'focus' | 'icon';
11
+ /** Tooltip position relative to the target */
12
+ position?: 'top' | 'bottom' | 'left' | 'right' | 'auto';
13
+ /** Children elements to attach the tooltip to */
14
+ children: ReactNode;
15
+ /** Additional class name for the wrapper */
16
+ className?: string;
17
+ /** Additional inline styles for the wrapper */
18
+ style?: CSSProperties;
19
+ /** Whether the wrapper should be a span (inline) or div (block) */
20
+ inline?: boolean;
21
+ }
22
+ /**
23
+ * Tooltip wrapper component that adds Pillar tooltip functionality to children
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * <Tooltip tooltipId="feature-explanation" trigger="hover">
28
+ * <button>Learn More</button>
29
+ * </Tooltip>
30
+ * ```
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * <Tooltip tooltipId="input-help" trigger="icon">
35
+ * <label>Email Address</label>
36
+ * </Tooltip>
37
+ * ```
38
+ */
39
+ export declare function Tooltip({ tooltipId, trigger, position, children, className, style, inline, }: TooltipProps): React.ReactElement;
@@ -0,0 +1,73 @@
1
+ /**
2
+ * usePillarTool Hook
3
+ *
4
+ * Register one or more tools with co-located metadata and handlers.
5
+ * Tools are registered on mount and unregistered on unmount.
6
+ *
7
+ * @example Single tool
8
+ * ```tsx
9
+ * import { usePillarTool } from '@pillar-ai/react';
10
+ *
11
+ * function CartButton() {
12
+ * usePillarTool({
13
+ * name: 'add_to_cart',
14
+ * description: 'Add a product to the shopping cart',
15
+ * inputSchema: {
16
+ * type: 'object',
17
+ * properties: {
18
+ * productId: { type: 'string', description: 'Product ID' },
19
+ * quantity: { type: 'number', description: 'Quantity to add' },
20
+ * },
21
+ * required: ['productId', 'quantity'],
22
+ * },
23
+ * execute: async ({ productId, quantity }) => {
24
+ * await cartApi.add(productId, quantity);
25
+ * return { content: [{ type: 'text', text: 'Added to cart' }] };
26
+ * },
27
+ * });
28
+ *
29
+ * return <button>Cart</button>;
30
+ * }
31
+ * ```
32
+ *
33
+ * @example Multiple tools
34
+ * ```tsx
35
+ * import { usePillarTool } from '@pillar-ai/react';
36
+ *
37
+ * function BillingPage() {
38
+ * usePillarTool([
39
+ * {
40
+ * name: 'get_current_plan',
41
+ * description: 'Get the current billing plan',
42
+ * execute: async () => ({ plan: 'pro', price: 29 }),
43
+ * },
44
+ * {
45
+ * name: 'upgrade_plan',
46
+ * description: 'Upgrade to a higher plan',
47
+ * inputSchema: {
48
+ * type: 'object',
49
+ * properties: { planId: { type: 'string' } },
50
+ * required: ['planId'],
51
+ * },
52
+ * execute: async ({ planId }) => {
53
+ * await billingApi.upgrade(planId);
54
+ * return { content: [{ type: 'text', text: 'Upgraded!' }] };
55
+ * },
56
+ * },
57
+ * ]);
58
+ *
59
+ * return <div>Billing Content</div>;
60
+ * }
61
+ * ```
62
+ */
63
+ import type { ToolSchema } from '@pillar-ai/sdk';
64
+ /**
65
+ * Register a single Pillar tool with co-located metadata and handler.
66
+ */
67
+ export declare function usePillarTool<TInput = Record<string, unknown>>(schema: ToolSchema<TInput>): void;
68
+ /**
69
+ * Register multiple Pillar tools with co-located metadata and handlers.
70
+ */
71
+ export declare function usePillarTool(schemas: ToolSchema[]): void;
72
+ /** @deprecated Use usePillarTool instead */
73
+ export declare const usePillarAction: typeof usePillarTool;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @pillar-ai/react - React bindings for Pillar Embedded Help SDK
2
+ * @pillar-ai/react - React bindings for Pillar SDK
3
3
  *
4
4
  * @example
5
5
  * ```tsx
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * function App() {
9
9
  * return (
10
- * <PillarProvider helpCenter="your-help-center" publicKey="pk_live_xxx">
10
+ * <PillarProvider productKey="your-product-key">
11
11
  * <MyApp />
12
12
  * </PillarProvider>
13
13
  * );
@@ -20,7 +20,7 @@
20
20
  * return (
21
21
  * <div>
22
22
  * <h1>Welcome!</h1>
23
- * <button onClick={toggle}>Get Help</button>
23
+ * <button onClick={toggle}>Open Co-pilot</button>
24
24
  * </div>
25
25
  * );
26
26
  * }
@@ -29,8 +29,7 @@
29
29
  * function AppWithCustomPanel() {
30
30
  * return (
31
31
  * <PillarProvider
32
- * helpCenter="your-help-center"
33
- * publicKey="pk_live_xxx"
32
+ * productKey="your-product-key"
34
33
  * config={{ panel: { container: 'manual' } }}
35
34
  * >
36
35
  * <div className="layout">
@@ -46,4 +45,5 @@ export { PillarProvider, usePillarContext, type PillarContextValue, type PillarP
46
45
  export { PillarPanel, type PillarPanelProps } from './PillarPanel';
47
46
  export { useHelpPanel, type UseHelpPanelResult } from './hooks/useHelpPanel';
48
47
  export { usePillar, type UsePillarResult, type TypedUsePillarResult } from './hooks/usePillar';
49
- export type { EdgeTriggerConfig, MobileTriggerConfig, MobileTriggerPosition, MobileTriggerIcon, MobileTriggerSize, PanelConfig, PillarConfig, PillarEvents, PillarState, ResolvedConfig, ResolvedMobileTriggerConfig, ResolvedThemeConfig, TaskExecutePayload, TextSelectionConfig, ThemeColors, ThemeConfig, ThemeMode, CardCallbacks, CardRenderer, SidebarTabConfig, ActionDefinitions, SyncActionDefinitions, ActionDataType, ActionNames, ChatContext, } from '@pillar-ai/sdk';
48
+ export { usePillarTool, usePillarAction } from './hooks/usePillarTool';
49
+ export type { EdgeTriggerConfig, MobileTriggerConfig, MobileTriggerPosition, MobileTriggerIcon, MobileTriggerSize, PanelConfig, PillarConfig, PillarEvents, PillarState, ResolvedConfig, ResolvedMobileTriggerConfig, ResolvedThemeConfig, TaskExecutePayload, TextSelectionConfig, ThemeColors, ThemeConfig, ThemeMode, CardCallbacks, CardRenderer, SidebarTabConfig, ToolDefinitions, SyncToolDefinitions, ToolDataType, ToolNames, ToolExecuteResult, ToolSchema, ToolType, ActionDefinitions, SyncActionDefinitions, ActionDataType, ActionNames, ActionResult, ActionSchema, ActionType, ChatContext, DOMScanningConfig, ResolvedDOMScanningConfig, ScanOptions, CompactScanResult, InteractionType, scanPageDirect, } from '@pillar-ai/sdk';