@netbirdio/explain 0.1.0 → 0.1.1
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/README.md +12 -12
- package/dist/client/AIAssistantProvider.d.ts +6 -2
- package/dist/client/AIAssistantProvider.d.ts.map +1 -1
- package/dist/client/AIAssistantProvider.js +33 -12
- package/dist/client/AIAssistantProvider.js.map +1 -1
- package/dist/client/AIChatBot.d.ts +3 -1
- package/dist/client/AIChatBot.d.ts.map +1 -1
- package/dist/client/AIChatBot.js +2 -2
- package/dist/client/AIChatBot.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/styles.d.ts +1 -0
- package/dist/client/styles.d.ts.map +1 -1
- package/dist/client/styles.js +8 -0
- package/dist/client/styles.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/client/AIAssistantProvider.tsx +56 -24
- package/src/client/AIChatBot.tsx +7 -3
- package/src/client/index.ts +1 -1
- package/src/client/styles.ts +9 -0
- package/src/types.ts +8 -0
package/README.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @netbirdio/explain
|
|
2
2
|
|
|
3
3
|
AI-powered "Explain" assistant for React apps. Users click on UI elements and get contextual AI explanations via a chat panel.
|
|
4
4
|
|
|
5
5
|
The package has two entry points:
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
7
|
+
- `@netbirdio/explain/client` — React components (provider, chat panel, floating button)
|
|
8
|
+
- `@netbirdio/explain/server` — Node.js handler that proxies requests to Anthropic or OpenAI
|
|
9
9
|
|
|
10
10
|
No CSS framework required — the package is fully self-contained with inline styles and CSS custom properties.
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
npm install
|
|
15
|
+
npm install @netbirdio/explain
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
Peer dependencies: `react >=18`, `react-dom >=18`.
|
|
@@ -22,7 +22,7 @@ For local development as a workspace package, add it to your `package.json`:
|
|
|
22
22
|
```json
|
|
23
23
|
{
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"
|
|
25
|
+
"@netbirdio/explain": "file:./packages/@netbirdio/explain"
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
```
|
|
@@ -31,7 +31,7 @@ If you're using Next.js, add to `next.config.js`:
|
|
|
31
31
|
|
|
32
32
|
```js
|
|
33
33
|
module.exports = {
|
|
34
|
-
transpilePackages: ["
|
|
34
|
+
transpilePackages: ["@netbirdio/explain"],
|
|
35
35
|
};
|
|
36
36
|
```
|
|
37
37
|
|
|
@@ -44,7 +44,7 @@ module.exports = {
|
|
|
44
44
|
Wrap your app with `AIAssistantProvider`:
|
|
45
45
|
|
|
46
46
|
```tsx
|
|
47
|
-
import { AIAssistantProvider } from "
|
|
47
|
+
import { AIAssistantProvider } from "@netbirdio/explain/client";
|
|
48
48
|
|
|
49
49
|
export default function App({ children }) {
|
|
50
50
|
return (
|
|
@@ -112,7 +112,7 @@ Use `data-nb-explain-ignore` to prevent an element from being selectable in expl
|
|
|
112
112
|
Use the `useAIAssistant` hook to provide context that gets included in every query:
|
|
113
113
|
|
|
114
114
|
```tsx
|
|
115
|
-
import { useAIAssistant } from "
|
|
115
|
+
import { useAIAssistant } from "@netbirdio/explain/client";
|
|
116
116
|
|
|
117
117
|
function MyModal() {
|
|
118
118
|
const { setExplainContext, clearExplainContext } = useAIAssistant();
|
|
@@ -222,7 +222,7 @@ The server module provides a framework-agnostic handler that proxies chat reques
|
|
|
222
222
|
|
|
223
223
|
```ts
|
|
224
224
|
import express from "express";
|
|
225
|
-
import { createAssistant } from "
|
|
225
|
+
import { createAssistant } from "@netbirdio/explain/server";
|
|
226
226
|
|
|
227
227
|
const assistant = createAssistant({
|
|
228
228
|
provider: "anthropic",
|
|
@@ -243,7 +243,7 @@ app.listen(3080);
|
|
|
243
243
|
|
|
244
244
|
```ts
|
|
245
245
|
import http from "http";
|
|
246
|
-
import { createAssistant } from "
|
|
246
|
+
import { createAssistant } from "@netbirdio/explain/server";
|
|
247
247
|
|
|
248
248
|
const assistant = createAssistant({
|
|
249
249
|
provider: "openai",
|
|
@@ -341,7 +341,7 @@ Environment variables:
|
|
|
341
341
|
|
|
342
342
|
```tsx
|
|
343
343
|
// layout.tsx — wrap app with provider
|
|
344
|
-
import { AIAssistantProvider } from "
|
|
344
|
+
import { AIAssistantProvider } from "@netbirdio/explain/client";
|
|
345
345
|
|
|
346
346
|
export default function Layout({ children }) {
|
|
347
347
|
return (
|
|
@@ -357,7 +357,7 @@ export default function Layout({ children }) {
|
|
|
357
357
|
|
|
358
358
|
```tsx
|
|
359
359
|
// MyModal.tsx — add explain support to a modal
|
|
360
|
-
import { useAIAssistant } from "
|
|
360
|
+
import { useAIAssistant } from "@netbirdio/explain/client";
|
|
361
361
|
import { Sparkles } from "lucide-react";
|
|
362
362
|
|
|
363
363
|
function MyModal() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { ExplainContext } from "../types";
|
|
2
|
+
import type { ExplainContext, ExplainEvent } from "../types";
|
|
3
3
|
type AIAssistantContextType = {
|
|
4
4
|
openChat: (selectedText?: string) => void;
|
|
5
5
|
closeChat: () => void;
|
|
@@ -15,7 +15,11 @@ type AIAssistantProviderProps = {
|
|
|
15
15
|
endpoint: string;
|
|
16
16
|
apiKey?: string;
|
|
17
17
|
children: React.ReactNode;
|
|
18
|
+
title?: string;
|
|
19
|
+
subtitle?: string;
|
|
20
|
+
onExplain?: (event: ExplainEvent) => void;
|
|
21
|
+
showChat?: boolean;
|
|
18
22
|
};
|
|
19
|
-
export default function AIAssistantProvider({ endpoint, apiKey, children, }: AIAssistantProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export default function AIAssistantProvider({ endpoint, apiKey, children, title, subtitle, onExplain, showChat, }: AIAssistantProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
20
24
|
export {};
|
|
21
25
|
//# sourceMappingURL=AIAssistantProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIAssistantProvider.d.ts","sourceRoot":"","sources":["../../src/client/AIAssistantProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"AIAssistantProvider.d.ts","sourceRoot":"","sources":["../../src/client/AIAssistantProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAK7D,KAAK,sBAAsB,GAAG;IAC5B,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,iBAAiB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IACjD,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC,CAAC;AAaF,eAAO,MAAM,cAAc,8BAAuC,CAAC;AAEnE,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAyEF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAe,GAChB,EAAE,wBAAwB,2CAgM1B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { createContext, useCallback, useContext, useEffect, useState, } from "react";
|
|
4
4
|
import AIChatBot from "./AIChatBot";
|
|
5
5
|
import AIFloatingButton from "./AIFloatingButton";
|
|
@@ -82,7 +82,7 @@ function buildQuery(label, ctx, elementDocs) {
|
|
|
82
82
|
}
|
|
83
83
|
return parts.join("\n");
|
|
84
84
|
}
|
|
85
|
-
export default function AIAssistantProvider({ endpoint, apiKey, children, }) {
|
|
85
|
+
export default function AIAssistantProvider({ endpoint, apiKey, children, title, subtitle, onExplain, showChat = true, }) {
|
|
86
86
|
const [isChatOpen, setIsChatOpen] = useState(false);
|
|
87
87
|
const [initialQuery, setInitialQuery] = useState("");
|
|
88
88
|
const [explainMode, setExplainMode] = useState(false);
|
|
@@ -142,7 +142,14 @@ export default function AIAssistantProvider({ endpoint, apiKey, children, }) {
|
|
|
142
142
|
: extractLabel(explainable);
|
|
143
143
|
const elementDocs = findExplainDocs(explainable);
|
|
144
144
|
const query = buildQuery(label, explainCtx, elementDocs);
|
|
145
|
-
|
|
145
|
+
if (onExplain) {
|
|
146
|
+
onExplain({ label, query, context: explainCtx, docs: elementDocs, element: explainable });
|
|
147
|
+
setExplainMode(false);
|
|
148
|
+
setHoveredEl(null);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
openChat(query);
|
|
152
|
+
}
|
|
146
153
|
};
|
|
147
154
|
const handleKeyDown = (e) => {
|
|
148
155
|
if (e.key === "Escape") {
|
|
@@ -159,7 +166,7 @@ export default function AIAssistantProvider({ endpoint, apiKey, children, }) {
|
|
|
159
166
|
document.removeEventListener("click", handleClick, true);
|
|
160
167
|
document.removeEventListener("keydown", handleKeyDown);
|
|
161
168
|
};
|
|
162
|
-
}, [explainMode, explainCtx, openChat, exitExplainMode]);
|
|
169
|
+
}, [explainMode, explainCtx, openChat, exitExplainMode, onExplain]);
|
|
163
170
|
// Apply/remove highlight on hovered explainable element via CSS class
|
|
164
171
|
useEffect(() => {
|
|
165
172
|
if (!hoveredEl)
|
|
@@ -177,6 +184,20 @@ export default function AIAssistantProvider({ endpoint, apiKey, children, }) {
|
|
|
177
184
|
});
|
|
178
185
|
}
|
|
179
186
|
}, [explainMode]);
|
|
187
|
+
// Inject global styles via DOM to avoid SSR hydration mismatch
|
|
188
|
+
// (inline <style> tags with quotes get HTML-escaped differently on server vs client)
|
|
189
|
+
useEffect(() => {
|
|
190
|
+
const id = "nb-explain-styles";
|
|
191
|
+
if (document.getElementById(id))
|
|
192
|
+
return;
|
|
193
|
+
const style = document.createElement("style");
|
|
194
|
+
style.id = id;
|
|
195
|
+
style.textContent = S.CSS_VARS + S.ANIMATIONS + S.HIGHLIGHT_STYLES;
|
|
196
|
+
document.head.appendChild(style);
|
|
197
|
+
return () => {
|
|
198
|
+
style.remove();
|
|
199
|
+
};
|
|
200
|
+
}, []);
|
|
180
201
|
return (_jsxs(AIAssistantContext.Provider, { value: {
|
|
181
202
|
openChat,
|
|
182
203
|
closeChat,
|
|
@@ -186,13 +207,13 @@ export default function AIAssistantProvider({ endpoint, apiKey, children, }) {
|
|
|
186
207
|
exitExplainMode,
|
|
187
208
|
setExplainContext,
|
|
188
209
|
clearExplainContext,
|
|
189
|
-
}, children: [
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
210
|
+
}, children: [children, explainMode && (_jsxs("div", { "data-nb-explain-banner": true, style: S.banner, children: [_jsx("span", { children: "Click on a highlighted element to explain it" }), _jsx("button", { onClick: () => exitExplainMode(), style: S.bannerCancel, children: "Cancel" })] })), showChat && (_jsxs(_Fragment, { children: [_jsx(AIFloatingButton, { isOpen: isChatOpen, onClick: () => {
|
|
211
|
+
if (isChatOpen) {
|
|
212
|
+
closeChat();
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
openChat();
|
|
216
|
+
}
|
|
217
|
+
} }), _jsx(AIChatBot, { open: isChatOpen, onClose: closeChat, initialQuery: initialQuery, endpoint: endpoint, apiKey: apiKey, title: title, subtitle: subtitle })] }))] }));
|
|
197
218
|
}
|
|
198
219
|
//# sourceMappingURL=AIAssistantProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIAssistantProvider.js","sourceRoot":"","sources":["../../src/client/AIAssistantProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,GACT,MAAM,OAAO,CAAC;AAEf,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAa9B,MAAM,kBAAkB,GAAG,aAAa,CAAyB;IAC/D,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;IAClB,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;IACnB,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,KAAK;IAClB,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC;IAC1B,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;IACzB,iBAAiB,EAAE,GAAG,EAAE,GAAE,CAAC;IAC3B,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"AIAssistantProvider.js","sourceRoot":"","sources":["../../src/client/AIAssistantProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,9 @@ type Props = {
|
|
|
4
4
|
initialQuery: string;
|
|
5
5
|
endpoint: string;
|
|
6
6
|
apiKey?: string;
|
|
7
|
+
title?: string;
|
|
8
|
+
subtitle?: string;
|
|
7
9
|
};
|
|
8
|
-
export default function AIChatBot({ open, onClose, initialQuery, endpoint, apiKey, }: Props): import("react/jsx-runtime").JSX.Element | null;
|
|
10
|
+
export default function AIChatBot({ open, onClose, initialQuery, endpoint, apiKey, title, subtitle, }: Props): import("react/jsx-runtime").JSX.Element | null;
|
|
9
11
|
export {};
|
|
10
12
|
//# sourceMappingURL=AIChatBot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIChatBot.d.ts","sourceRoot":"","sources":["../../src/client/AIChatBot.tsx"],"names":[],"mappings":"AAcA,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AIChatBot.d.ts","sourceRoot":"","sources":["../../src/client/AIChatBot.tsx"],"names":[],"mappings":"AAcA,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAkCF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,KAAsB,EACtB,QAAyB,GAC1B,EAAE,KAAK,kDAwPP"}
|
package/dist/client/AIChatBot.js
CHANGED
|
@@ -27,7 +27,7 @@ async function fetchAIResponse(endpoint, apiKey, messages) {
|
|
|
27
27
|
const data = await response.json();
|
|
28
28
|
return data.reply;
|
|
29
29
|
}
|
|
30
|
-
export default function AIChatBot({ open, onClose, initialQuery, endpoint, apiKey, }) {
|
|
30
|
+
export default function AIChatBot({ open, onClose, initialQuery, endpoint, apiKey, title = "AI Assistant", subtitle = "Ask anything", }) {
|
|
31
31
|
const [messages, setMessages] = useState([]);
|
|
32
32
|
const [input, setInput] = useState("");
|
|
33
33
|
const [isTyping, setIsTyping] = useState(false);
|
|
@@ -126,7 +126,7 @@ export default function AIChatBot({ open, onClose, initialQuery, endpoint, apiKe
|
|
|
126
126
|
if (!open)
|
|
127
127
|
return null;
|
|
128
128
|
const active = !!input.trim() && !isTyping;
|
|
129
|
-
return (_jsxs("div", { style: S.chatPanel, children: [_jsxs("div", { style: S.chatHeader, children: [_jsxs("div", { style: S.chatHeaderLeft, children: [_jsx("div", { style: S.chatHeaderIcon, children: _jsx(Sparkles, { size: 15, style: { color: "var(--nb-explain-accent)" } }) }), _jsxs("div", { children: [_jsx("h3", { style: S.chatHeaderTitle, children:
|
|
129
|
+
return (_jsxs("div", { style: S.chatPanel, children: [_jsxs("div", { style: S.chatHeader, children: [_jsxs("div", { style: S.chatHeaderLeft, children: [_jsx("div", { style: S.chatHeaderIcon, children: _jsx(Sparkles, { size: 15, style: { color: "var(--nb-explain-accent)" } }) }), _jsxs("div", { style: S.chatHeaderText, children: [_jsx("h3", { style: S.chatHeaderTitle, children: title }), _jsx("span", { style: S.chatHeaderSubtitle, children: subtitle })] })] }), _jsx("button", { onClick: onClose, style: S.chatCloseBtn, onMouseEnter: (e) => {
|
|
130
130
|
e.currentTarget.style.color = "var(--nb-explain-text)";
|
|
131
131
|
e.currentTarget.style.background = "var(--nb-explain-bg-hover)";
|
|
132
132
|
}, onMouseLeave: (e) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIChatBot.js","sourceRoot":"","sources":["../../src/client/AIChatBot.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EACL,GAAG,EACH,qBAAqB,EACrB,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,CAAC,GACF,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExE,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"AIChatBot.js","sourceRoot":"","sources":["../../src/client/AIChatBot.tsx"],"names":[],"mappings":"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"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { default as AIAssistantProvider, useAIAssistant } from "./AIAssistantProvider";
|
|
2
2
|
export { default as AIChatBot } from "./AIChatBot";
|
|
3
3
|
export { default as AIFloatingButton } from "./AIFloatingButton";
|
|
4
|
-
export type { Message, ExplainContext } from "../types";
|
|
4
|
+
export type { Message, ExplainContext, ExplainEvent } from "../types";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/client/styles.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export declare const chatPanel: React.CSSProperties;
|
|
|
22
22
|
export declare const chatHeader: React.CSSProperties;
|
|
23
23
|
export declare const chatHeaderLeft: React.CSSProperties;
|
|
24
24
|
export declare const chatHeaderIcon: React.CSSProperties;
|
|
25
|
+
export declare const chatHeaderText: React.CSSProperties;
|
|
25
26
|
export declare const chatHeaderTitle: React.CSSProperties;
|
|
26
27
|
export declare const chatHeaderSubtitle: React.CSSProperties;
|
|
27
28
|
export declare const chatCloseBtn: React.CSSProperties;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,QAAQ,69BAwBpB,CAAC;AAIF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,aAgB7B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,aAM9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,aAIlC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,QAAQ,69BAwBpB,CAAC;AAIF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,aAgB7B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,aAM9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,aAIlC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,aASlC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,aAIlC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAMnC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,aAKtC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,aAUhC,CAAC;AAIF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,aAOhC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,aAS9B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,aAKnC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,aAIlC,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,aAGhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,aASrC,CAAC;AAGF,eAAO,MAAM,UAAU,GAAI,QAAQ,OAAO,KAAG,KAAK,CAAC,aAIjD,CAAC;AAEH,eAAO,MAAM,aAAa,GAAI,QAAQ,OAAO,KAAG,KAAK,CAAC,aAUpD,CAAC;AAEH,eAAO,MAAM,aAAa,GAAI,QAAQ,OAAO,KAAG,KAAK,CAAC,aASpD,CAAC;AAEH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,aAG/B,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,aAG7B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,aAMhC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,aAK7B,CAAC;AAIF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,aAG7B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,aAO5B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,aAQ9B,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,QAAQ,OAAO,KAAG,KAAK,CAAC,aAW9C,CAAC;AAEH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,aAK/B,CAAC;AAIF,eAAO,MAAM,GAAG,GAAI,QAAQ,OAAO,KAAG,KAAK,CAAC,aAmB1C,CAAC;AAIH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,aAkB1B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,aAShC,CAAC;AAIF,eAAO,MAAM,UAAU,kuBAgBtB,CAAC;AAEF,eAAO,MAAM,gBAAgB,mMAO5B,CAAC"}
|
package/dist/client/styles.js
CHANGED
|
@@ -80,6 +80,12 @@ export const chatHeaderIcon = {
|
|
|
80
80
|
display: "flex",
|
|
81
81
|
alignItems: "center",
|
|
82
82
|
justifyContent: "center",
|
|
83
|
+
flexShrink: 0,
|
|
84
|
+
};
|
|
85
|
+
export const chatHeaderText = {
|
|
86
|
+
display: "flex",
|
|
87
|
+
flexDirection: "column",
|
|
88
|
+
justifyContent: "center",
|
|
83
89
|
};
|
|
84
90
|
export const chatHeaderTitle = {
|
|
85
91
|
fontSize: 14,
|
|
@@ -91,6 +97,8 @@ export const chatHeaderTitle = {
|
|
|
91
97
|
export const chatHeaderSubtitle = {
|
|
92
98
|
fontSize: 11,
|
|
93
99
|
color: "var(--nb-explain-text-dim)",
|
|
100
|
+
lineHeight: 1,
|
|
101
|
+
marginTop: 2,
|
|
94
102
|
};
|
|
95
103
|
export const chatCloseBtn = {
|
|
96
104
|
padding: 6,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBvB,CAAC;AAEF,qBAAqB;AAErB,MAAM,CAAC,MAAM,SAAS,GAAwB;IAC5C,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,YAAY,EAAE,0BAA0B;IACxC,MAAM,EAAE,oCAAoC;IAC5C,UAAU,EAAE,sBAAsB;IAClC,SAAS,EAAE,0BAA0B;IACrC,UAAU,EAAE,wBAAwB;IACpC,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,mCAAmC;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAwB;IAC7C,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,eAAe;IAC/B,OAAO,EAAE,WAAW;IACpB,YAAY,EAAE,oCAAoC;CACnD,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAwB;IACjD,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,GAAG,EAAE,EAAE;CACR,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAwB;IACjD,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,YAAY,EAAE,6BAA6B;IAC3C,UAAU,EAAE,+BAA+B;IAC3C,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAwB;IAClD,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,GAAG;IACf,KAAK,EAAE,wBAAwB;IAC/B,UAAU,EAAE,CAAC;IACb,MAAM,EAAE,CAAC;CACV,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,4BAA4B;
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -8,4 +8,11 @@ export type ExplainContext = {
|
|
|
8
8
|
pageName?: string;
|
|
9
9
|
docsUrls?: string[];
|
|
10
10
|
};
|
|
11
|
+
export type ExplainEvent = {
|
|
12
|
+
label: string;
|
|
13
|
+
query: string;
|
|
14
|
+
context: ExplainContext | null;
|
|
15
|
+
docs: string[];
|
|
16
|
+
element: HTMLElement;
|
|
17
|
+
};
|
|
11
18
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC"}
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@ import React, {
|
|
|
7
7
|
useEffect,
|
|
8
8
|
useState,
|
|
9
9
|
} from "react";
|
|
10
|
-
import type { ExplainContext } from "../types";
|
|
10
|
+
import type { ExplainContext, ExplainEvent } from "../types";
|
|
11
11
|
import AIChatBot from "./AIChatBot";
|
|
12
12
|
import AIFloatingButton from "./AIFloatingButton";
|
|
13
13
|
import * as S from "./styles";
|
|
@@ -40,6 +40,10 @@ type AIAssistantProviderProps = {
|
|
|
40
40
|
endpoint: string;
|
|
41
41
|
apiKey?: string;
|
|
42
42
|
children: React.ReactNode;
|
|
43
|
+
title?: string;
|
|
44
|
+
subtitle?: string;
|
|
45
|
+
onExplain?: (event: ExplainEvent) => void;
|
|
46
|
+
showChat?: boolean;
|
|
43
47
|
};
|
|
44
48
|
|
|
45
49
|
/**
|
|
@@ -117,6 +121,10 @@ export default function AIAssistantProvider({
|
|
|
117
121
|
endpoint,
|
|
118
122
|
apiKey,
|
|
119
123
|
children,
|
|
124
|
+
title,
|
|
125
|
+
subtitle,
|
|
126
|
+
onExplain,
|
|
127
|
+
showChat = true,
|
|
120
128
|
}: AIAssistantProviderProps) {
|
|
121
129
|
const [isChatOpen, setIsChatOpen] = useState(false);
|
|
122
130
|
const [initialQuery, setInitialQuery] = useState("");
|
|
@@ -194,7 +202,14 @@ export default function AIAssistantProvider({
|
|
|
194
202
|
|
|
195
203
|
const elementDocs = findExplainDocs(explainable);
|
|
196
204
|
const query = buildQuery(label, explainCtx, elementDocs);
|
|
197
|
-
|
|
205
|
+
|
|
206
|
+
if (onExplain) {
|
|
207
|
+
onExplain({ label, query, context: explainCtx, docs: elementDocs, element: explainable });
|
|
208
|
+
setExplainMode(false);
|
|
209
|
+
setHoveredEl(null);
|
|
210
|
+
} else {
|
|
211
|
+
openChat(query);
|
|
212
|
+
}
|
|
198
213
|
};
|
|
199
214
|
|
|
200
215
|
const handleKeyDown = (e: KeyboardEvent) => {
|
|
@@ -214,7 +229,7 @@ export default function AIAssistantProvider({
|
|
|
214
229
|
document.removeEventListener("click", handleClick, true);
|
|
215
230
|
document.removeEventListener("keydown", handleKeyDown);
|
|
216
231
|
};
|
|
217
|
-
}, [explainMode, explainCtx, openChat, exitExplainMode]);
|
|
232
|
+
}, [explainMode, explainCtx, openChat, exitExplainMode, onExplain]);
|
|
218
233
|
|
|
219
234
|
// Apply/remove highlight on hovered explainable element via CSS class
|
|
220
235
|
useEffect(() => {
|
|
@@ -234,6 +249,20 @@ export default function AIAssistantProvider({
|
|
|
234
249
|
}
|
|
235
250
|
}, [explainMode]);
|
|
236
251
|
|
|
252
|
+
// Inject global styles via DOM to avoid SSR hydration mismatch
|
|
253
|
+
// (inline <style> tags with quotes get HTML-escaped differently on server vs client)
|
|
254
|
+
useEffect(() => {
|
|
255
|
+
const id = "nb-explain-styles";
|
|
256
|
+
if (document.getElementById(id)) return;
|
|
257
|
+
const style = document.createElement("style");
|
|
258
|
+
style.id = id;
|
|
259
|
+
style.textContent = S.CSS_VARS + S.ANIMATIONS + S.HIGHLIGHT_STYLES;
|
|
260
|
+
document.head.appendChild(style);
|
|
261
|
+
return () => {
|
|
262
|
+
style.remove();
|
|
263
|
+
};
|
|
264
|
+
}, []);
|
|
265
|
+
|
|
237
266
|
return (
|
|
238
267
|
<AIAssistantContext.Provider
|
|
239
268
|
value={{
|
|
@@ -247,9 +276,6 @@ export default function AIAssistantProvider({
|
|
|
247
276
|
clearExplainContext,
|
|
248
277
|
}}
|
|
249
278
|
>
|
|
250
|
-
{/* Inject CSS custom properties, animations, and highlight styles */}
|
|
251
|
-
<style>{S.CSS_VARS + S.ANIMATIONS + S.HIGHLIGHT_STYLES}</style>
|
|
252
|
-
|
|
253
279
|
{children}
|
|
254
280
|
|
|
255
281
|
{/* Explain mode banner */}
|
|
@@ -265,24 +291,30 @@ export default function AIAssistantProvider({
|
|
|
265
291
|
</div>
|
|
266
292
|
)}
|
|
267
293
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
294
|
+
{showChat && (
|
|
295
|
+
<>
|
|
296
|
+
<AIFloatingButton
|
|
297
|
+
isOpen={isChatOpen}
|
|
298
|
+
onClick={() => {
|
|
299
|
+
if (isChatOpen) {
|
|
300
|
+
closeChat();
|
|
301
|
+
} else {
|
|
302
|
+
openChat();
|
|
303
|
+
}
|
|
304
|
+
}}
|
|
305
|
+
/>
|
|
306
|
+
|
|
307
|
+
<AIChatBot
|
|
308
|
+
open={isChatOpen}
|
|
309
|
+
onClose={closeChat}
|
|
310
|
+
initialQuery={initialQuery}
|
|
311
|
+
endpoint={endpoint}
|
|
312
|
+
apiKey={apiKey}
|
|
313
|
+
title={title}
|
|
314
|
+
subtitle={subtitle}
|
|
315
|
+
/>
|
|
316
|
+
</>
|
|
317
|
+
)}
|
|
286
318
|
</AIAssistantContext.Provider>
|
|
287
319
|
);
|
|
288
320
|
}
|
package/src/client/AIChatBot.tsx
CHANGED
|
@@ -18,6 +18,8 @@ type Props = {
|
|
|
18
18
|
initialQuery: string;
|
|
19
19
|
endpoint: string;
|
|
20
20
|
apiKey?: string;
|
|
21
|
+
title?: string;
|
|
22
|
+
subtitle?: string;
|
|
21
23
|
};
|
|
22
24
|
|
|
23
25
|
async function fetchAIResponse(
|
|
@@ -58,6 +60,8 @@ export default function AIChatBot({
|
|
|
58
60
|
initialQuery,
|
|
59
61
|
endpoint,
|
|
60
62
|
apiKey,
|
|
63
|
+
title = "AI Assistant",
|
|
64
|
+
subtitle = "Ask anything",
|
|
61
65
|
}: Props) {
|
|
62
66
|
const [messages, setMessages] = useState<Message[]>([]);
|
|
63
67
|
const [input, setInput] = useState("");
|
|
@@ -182,9 +186,9 @@ export default function AIChatBot({
|
|
|
182
186
|
<div style={S.chatHeaderIcon}>
|
|
183
187
|
<Sparkles size={15} style={{ color: "var(--nb-explain-accent)" }} />
|
|
184
188
|
</div>
|
|
185
|
-
<div>
|
|
186
|
-
<h3 style={S.chatHeaderTitle}>
|
|
187
|
-
<span style={S.chatHeaderSubtitle}>
|
|
189
|
+
<div style={S.chatHeaderText}>
|
|
190
|
+
<h3 style={S.chatHeaderTitle}>{title}</h3>
|
|
191
|
+
<span style={S.chatHeaderSubtitle}>{subtitle}</span>
|
|
188
192
|
</div>
|
|
189
193
|
</div>
|
|
190
194
|
<button
|
package/src/client/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { default as AIAssistantProvider, useAIAssistant } from "./AIAssistantProvider";
|
|
2
2
|
export { default as AIChatBot } from "./AIChatBot";
|
|
3
3
|
export { default as AIFloatingButton } from "./AIFloatingButton";
|
|
4
|
-
export type { Message, ExplainContext } from "../types";
|
|
4
|
+
export type { Message, ExplainContext, ExplainEvent } from "../types";
|
package/src/client/styles.ts
CHANGED
|
@@ -86,6 +86,13 @@ export const chatHeaderIcon: React.CSSProperties = {
|
|
|
86
86
|
display: "flex",
|
|
87
87
|
alignItems: "center",
|
|
88
88
|
justifyContent: "center",
|
|
89
|
+
flexShrink: 0,
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const chatHeaderText: React.CSSProperties = {
|
|
93
|
+
display: "flex",
|
|
94
|
+
flexDirection: "column",
|
|
95
|
+
justifyContent: "center",
|
|
89
96
|
};
|
|
90
97
|
|
|
91
98
|
export const chatHeaderTitle: React.CSSProperties = {
|
|
@@ -99,6 +106,8 @@ export const chatHeaderTitle: React.CSSProperties = {
|
|
|
99
106
|
export const chatHeaderSubtitle: React.CSSProperties = {
|
|
100
107
|
fontSize: 11,
|
|
101
108
|
color: "var(--nb-explain-text-dim)",
|
|
109
|
+
lineHeight: 1,
|
|
110
|
+
marginTop: 2,
|
|
102
111
|
};
|
|
103
112
|
|
|
104
113
|
export const chatCloseBtn: React.CSSProperties = {
|
package/src/types.ts
CHANGED
|
@@ -8,4 +8,12 @@ export type ExplainContext = {
|
|
|
8
8
|
modalName?: string;
|
|
9
9
|
pageName?: string;
|
|
10
10
|
docsUrls?: string[];
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export type ExplainEvent = {
|
|
14
|
+
label: string;
|
|
15
|
+
query: string;
|
|
16
|
+
context: ExplainContext | null;
|
|
17
|
+
docs: string[];
|
|
18
|
+
element: HTMLElement;
|
|
11
19
|
};
|