@agentforge-io/chat-react 3.0.0 → 4.0.0
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/dist/index.d.ts +27 -8
- package/dist/index.js +29 -9
- package/dist/messenger/MessengerFooter.d.ts +22 -0
- package/dist/messenger/MessengerFooter.js +54 -0
- package/dist/messenger/MessengerHeader.d.ts +36 -0
- package/dist/messenger/MessengerHeader.js +61 -0
- package/dist/messenger/MessengerShell.d.ts +59 -0
- package/dist/messenger/MessengerShell.js +138 -0
- package/dist/messenger/adapters.d.ts +92 -0
- package/dist/messenger/adapters.js +13 -0
- package/dist/messenger/tabs/HelpTab.d.ts +21 -0
- package/dist/messenger/tabs/HelpTab.js +212 -0
- package/dist/messenger/tabs/HomeTab.d.ts +33 -0
- package/dist/messenger/tabs/HomeTab.js +73 -0
- package/dist/messenger/tabs/MessagesTab.d.ts +21 -0
- package/dist/messenger/tabs/MessagesTab.js +32 -0
- package/dist/messenger/tabs/NewsTab.d.ts +26 -0
- package/dist/messenger/tabs/NewsTab.js +175 -0
- package/dist/messenger/theme.d.ts +26 -0
- package/dist/messenger/theme.js +58 -0
- package/package.json +4 -4
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the extended ChatTheme into a flat set of CSS values the
|
|
4
|
+
* Messenger components use. Keeping the resolution in one place means
|
|
5
|
+
* the same source-of-truth defaults flow through Header / Footer / tabs
|
|
6
|
+
* — no component invents its own "what if primaryColor is missing".
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.resolveTheme = resolveTheme;
|
|
10
|
+
exports.hexToRgba = hexToRgba;
|
|
11
|
+
exports.shade = shade;
|
|
12
|
+
function resolveTheme(theme) {
|
|
13
|
+
const primary = theme?.primaryColor ?? '#7c5cff';
|
|
14
|
+
const primarySoft = hexToRgba(primary, 0.35);
|
|
15
|
+
const accent = theme?.accentColor ?? primary;
|
|
16
|
+
return {
|
|
17
|
+
primary,
|
|
18
|
+
primarySoft,
|
|
19
|
+
accent,
|
|
20
|
+
// Header gradient: prefer explicit override; otherwise derive a
|
|
21
|
+
// subtle purple-ish gradient from the primary. The derived form is
|
|
22
|
+
// intentionally muted (45° + 80% lightness on the top stop) so the
|
|
23
|
+
// greeting text stays legible regardless of the chosen primary.
|
|
24
|
+
headerBg: theme?.headerGradient ??
|
|
25
|
+
`linear-gradient(155deg, ${primary} 0%, ${shade(primary, -18)} 100%)`,
|
|
26
|
+
surface: theme?.surfaceColor ?? '#ffffff',
|
|
27
|
+
onHeader: theme?.foreground?.onHeader ?? '#ffffff',
|
|
28
|
+
onSurface: theme?.foreground?.onSurface ?? '#0f172a',
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** Same helper ChatPanel uses — duplicated locally to avoid coupling
|
|
32
|
+
* the messenger module to ChatPanel's internals. Tiny enough to copy. */
|
|
33
|
+
function hexToRgba(hex, alpha) {
|
|
34
|
+
const cleaned = hex.replace('#', '');
|
|
35
|
+
const r = parseInt(cleaned.slice(0, 2), 16);
|
|
36
|
+
const g = parseInt(cleaned.slice(2, 4), 16);
|
|
37
|
+
const b = parseInt(cleaned.slice(4, 6), 16);
|
|
38
|
+
if ([r, g, b].some((v) => Number.isNaN(v)))
|
|
39
|
+
return hex;
|
|
40
|
+
return `rgba(${r}, ${g}, ${b}, ${alpha})`;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Lighten/darken a hex color by a percentage. Negative = darker.
|
|
44
|
+
* Used only for the auto-derived header gradient — when the consumer
|
|
45
|
+
* supplies `headerGradient` we never hit this code path.
|
|
46
|
+
*/
|
|
47
|
+
function shade(hex, percent) {
|
|
48
|
+
const cleaned = hex.replace('#', '');
|
|
49
|
+
const num = parseInt(cleaned, 16);
|
|
50
|
+
const amt = Math.round(2.55 * percent);
|
|
51
|
+
let r = (num >> 16) + amt;
|
|
52
|
+
let g = ((num >> 8) & 0x00ff) + amt;
|
|
53
|
+
let b = (num & 0x0000ff) + amt;
|
|
54
|
+
r = Math.max(0, Math.min(255, r));
|
|
55
|
+
g = Math.max(0, Math.min(255, g));
|
|
56
|
+
b = Math.max(0, Math.min(255, b));
|
|
57
|
+
return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}`;
|
|
58
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentforge-io/chat-react",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "React + Next.js adapter for @agentforge-io/chat-sdk. Provider, hooks, and
|
|
3
|
+
"version": "4.0.0",
|
|
4
|
+
"description": "React + Next.js adapter for @agentforge-io/chat-sdk. Provider, hooks, ChatPanel and MessengerShell (multi-tab Home/Messages/Help/News).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"react": "^18.0.0 || ^19.0.0",
|
|
18
18
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
19
|
-
"@agentforge-io/chat-sdk": "^
|
|
19
|
+
"@agentforge-io/chat-sdk": "^4.0.0"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@agentforge-io/chat-sdk": "^
|
|
22
|
+
"@agentforge-io/chat-sdk": "^4.0.0"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/node": "^20.0.0",
|