@uptrademedia/site-kit 1.2.0 → 1.2.2
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/analytics/index.d.mts +2 -2
- package/dist/analytics/index.d.ts +2 -2
- package/dist/analytics/index.js +6 -6
- package/dist/analytics/index.mjs +2 -2
- package/dist/{api-l44k92vp.d.mts → api-CWtoFJCO.d.mts} +1 -1
- package/dist/{api-l44k92vp.d.ts → api-CWtoFJCO.d.ts} +1 -1
- package/dist/blog/index.d.mts +2 -2
- package/dist/blog/index.d.ts +2 -2
- package/dist/blog/server.d.mts +1 -1
- package/dist/blog/server.d.ts +1 -1
- package/dist/{chunk-HEUULOSC.js → chunk-2MNLOYDD.js} +3 -3
- package/dist/{chunk-HEUULOSC.js.map → chunk-2MNLOYDD.js.map} +1 -1
- package/dist/{chunk-3LOFIO77.mjs → chunk-44OMJFCG.mjs} +187 -193
- package/dist/chunk-44OMJFCG.mjs.map +1 -0
- package/dist/{chunk-C5TQLU5U.js → chunk-6LBLKQ5Q.js} +132 -85
- package/dist/chunk-6LBLKQ5Q.js.map +1 -0
- package/dist/{chunk-VFJ3NNCY.js → chunk-DERI27QC.js} +187 -193
- package/dist/chunk-DERI27QC.js.map +1 -0
- package/dist/{chunk-HGTTGJVZ.js → chunk-LBHEVL6U.js} +3 -3
- package/dist/{chunk-HGTTGJVZ.js.map → chunk-LBHEVL6U.js.map} +1 -1
- package/dist/{chunk-YT5SBY5W.mjs → chunk-MLJXNFUO.mjs} +3 -3
- package/dist/{chunk-YT5SBY5W.mjs.map → chunk-MLJXNFUO.mjs.map} +1 -1
- package/dist/{chunk-OW2C3ATV.mjs → chunk-R6V7DQ24.mjs} +3 -3
- package/dist/{chunk-OW2C3ATV.mjs.map → chunk-R6V7DQ24.mjs.map} +1 -1
- package/dist/{chunk-RLO3QJ65.mjs → chunk-TJBXNQ2W.mjs} +131 -85
- package/dist/chunk-TJBXNQ2W.mjs.map +1 -0
- package/dist/cli/index.js +706 -706
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +700 -700
- package/dist/cli/index.mjs.map +1 -1
- package/dist/commerce/index.d.mts +3 -3
- package/dist/commerce/index.d.ts +3 -3
- package/dist/commerce/server.d.mts +1 -1
- package/dist/commerce/server.d.ts +1 -1
- package/dist/engage/index.d.mts +2 -2
- package/dist/engage/index.d.ts +2 -2
- package/dist/engage/index.js +4 -4
- package/dist/engage/index.mjs +1 -1
- package/dist/images/index.d.mts +1 -1
- package/dist/images/index.d.ts +1 -1
- package/dist/index.d.mts +7 -7
- package/dist/index.d.ts +7 -7
- package/dist/index.js +4 -4
- package/dist/index.mjs +2 -2
- package/dist/llms/index.d.mts +2 -2
- package/dist/llms/index.d.ts +2 -2
- package/dist/{routing-D311WhuV.d.ts → routing-BI69sU8F.d.ts} +1 -1
- package/dist/{routing-bTjqOM8S.d.mts → routing-Bg1nr9N0.d.mts} +1 -1
- package/dist/{scanner-VNEXRTZF.mjs → scanner-7ZMUM2P5.mjs} +3 -3
- package/dist/{scanner-VNEXRTZF.mjs.map → scanner-7ZMUM2P5.mjs.map} +1 -1
- package/dist/{scanner-CVKYTPUO.js → scanner-OY7UF3WA.js} +14 -14
- package/dist/{scanner-CVKYTPUO.js.map → scanner-OY7UF3WA.js.map} +1 -1
- package/dist/seo/index.d.mts +3 -3
- package/dist/seo/index.d.ts +3 -3
- package/dist/seo/server.d.mts +2 -2
- package/dist/seo/server.d.ts +2 -2
- package/dist/setup/index.js +2 -2
- package/dist/setup/index.mjs +1 -1
- package/dist/setup/server.js +2 -2
- package/dist/setup/server.mjs +1 -1
- package/dist/sitemap/index.d.mts +1 -1
- package/dist/sitemap/index.d.ts +1 -1
- package/dist/{socket-loader-3FWQWPDQ.js → socket-loader-J26QHHOB.js} +2 -2
- package/dist/socket-loader-J26QHHOB.js.map +1 -0
- package/dist/{socket-loader-N5ETWMXW.mjs → socket-loader-R7S2YJ2J.mjs} +2 -2
- package/dist/socket-loader-R7S2YJ2J.mjs.map +1 -0
- package/dist/{types-C_pfGZhI.d.mts → types-Bsf5kX1n.d.mts} +1 -1
- package/dist/{types-C_pfGZhI.d.ts → types-Bsf5kX1n.d.ts} +1 -1
- package/dist/{types-DxhEH2tX.d.mts → types-CNZcDIoX.d.mts} +1 -1
- package/dist/{types-DxhEH2tX.d.ts → types-CNZcDIoX.d.ts} +1 -1
- package/dist/{types-Cl2SOKHd.d.mts → types-D8i7Alvv.d.mts} +1 -1
- package/dist/{types-Cl2SOKHd.d.ts → types-D8i7Alvv.d.ts} +1 -1
- package/dist/{types-DiZVgJKD.d.mts → types-DA_Kocle.d.mts} +1 -1
- package/dist/{types-DiZVgJKD.d.ts → types-DA_Kocle.d.ts} +1 -1
- package/dist/{types-CMNYdZwT.d.mts → types-DI0jnhjJ.d.mts} +1 -1
- package/dist/{types-CMNYdZwT.d.ts → types-DI0jnhjJ.d.ts} +1 -1
- package/dist/{types-BF2v5qX3.d.mts → types-wCtRFR0Y.d.mts} +1 -1
- package/dist/{types-BF2v5qX3.d.ts → types-wCtRFR0Y.d.ts} +1 -1
- package/dist/{useEventModal-x_RZRewW.d.mts → useEventModal-Bs0W9Iy_.d.mts} +2 -2
- package/dist/{useEventModal-5fIKdIaY.d.ts → useEventModal-Btu3uIjE.d.ts} +2 -2
- package/dist/{web-vitals-PW6MQOKS.js → web-vitals-444RLW3B.js} +3 -3
- package/dist/web-vitals-444RLW3B.js.map +1 -0
- package/dist/{web-vitals-YSIFBTH7.mjs → web-vitals-KPICZIEF.mjs} +3 -3
- package/dist/web-vitals-KPICZIEF.mjs.map +1 -0
- package/package.json +2 -1
- package/dist/chunk-3LOFIO77.mjs.map +0 -1
- package/dist/chunk-C5TQLU5U.js.map +0 -1
- package/dist/chunk-RLO3QJ65.mjs.map +0 -1
- package/dist/chunk-VFJ3NNCY.js.map +0 -1
- package/dist/socket-loader-3FWQWPDQ.js.map +0 -1
- package/dist/socket-loader-N5ETWMXW.mjs.map +0 -1
- package/dist/web-vitals-PW6MQOKS.js.map +0 -1
- package/dist/web-vitals-YSIFBTH7.mjs.map +0 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React2 = require('react');
|
|
4
|
+
var ReactMarkdown = require('react-markdown');
|
|
4
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
6
|
var navigation = require('next/navigation');
|
|
6
7
|
|
|
7
8
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
9
|
|
|
9
10
|
var React2__default = /*#__PURE__*/_interopDefault(React2);
|
|
11
|
+
var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
|
|
10
12
|
|
|
11
13
|
// src/engage/ChatWidget.tsx
|
|
12
14
|
function getApiConfig() {
|
|
@@ -25,6 +27,19 @@ function generateVisitorId() {
|
|
|
25
27
|
if (typeof localStorage !== "undefined") localStorage.setItem("engage_visitor_id", id);
|
|
26
28
|
return id;
|
|
27
29
|
}
|
|
30
|
+
function userRequestedHandoff(text) {
|
|
31
|
+
const lower = text.toLowerCase().trim();
|
|
32
|
+
const patterns = [
|
|
33
|
+
/\b(talk|speak)\s+(to|with)\s+(a\s+)?(person|human|agent|representative|someone)\b/,
|
|
34
|
+
/\b(real|live)\s+(person|human|agent|support)\b/,
|
|
35
|
+
/\bconnect\s+(me\s+)?(with|to)\s+(a\s+)?(person|human|agent)\b/,
|
|
36
|
+
/\b(need|want)\s+(to\s+)?(talk|speak)\s+(to|with)\s+(someone|a\s+person)\b/,
|
|
37
|
+
/\bhuman\s+(support|agent|help)\b/,
|
|
38
|
+
/\b(talk|speak)\s+to\s+(a\s+)?person\b/,
|
|
39
|
+
/\bget\s+(a\s+)?(person|human)\b/
|
|
40
|
+
];
|
|
41
|
+
return patterns.some((p) => p.test(lower));
|
|
42
|
+
}
|
|
28
43
|
function adjustColor(hex, amount) {
|
|
29
44
|
const num = parseInt(hex.replace("#", ""), 16);
|
|
30
45
|
const r = Math.min(255, Math.max(0, (num >> 16) + amount));
|
|
@@ -220,8 +235,9 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
220
235
|
const data = json?.data ?? json;
|
|
221
236
|
const aiContent = data?.content ?? data?.response ?? data?.message ?? "I'm sorry, I couldn't process that.";
|
|
222
237
|
const suggestions = data?.suggestions;
|
|
238
|
+
const offerHandoff = data?.offerHandoff === true || data?.offer_handoff === true;
|
|
223
239
|
const newConversationId = data?.conversationId ?? conversationId;
|
|
224
|
-
return { content: aiContent, suggestions, conversationId: newConversationId };
|
|
240
|
+
return { content: aiContent, suggestions, offerHandoff, conversationId: newConversationId };
|
|
225
241
|
},
|
|
226
242
|
[signalUrl, projectId, visitorId, fetchSiteContext]
|
|
227
243
|
);
|
|
@@ -280,7 +296,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
280
296
|
socketRef.current.disconnect();
|
|
281
297
|
socketRef.current = null;
|
|
282
298
|
}
|
|
283
|
-
const { createSocket } = await import('./socket-loader-
|
|
299
|
+
const { createSocket } = await import('./socket-loader-J26QHHOB.js');
|
|
284
300
|
const namespaceUrl = `${baseUrl.replace(/\/$/, "")}/engage/chat`;
|
|
285
301
|
const socket = await createSocket(namespaceUrl, {
|
|
286
302
|
query: { projectId, visitorId, sessionId: currentSessionId },
|
|
@@ -427,7 +443,8 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
427
443
|
{ id: `u-${Date.now()}`, role: "user", content: pending, timestamp: /* @__PURE__ */ new Date() }
|
|
428
444
|
]);
|
|
429
445
|
try {
|
|
430
|
-
const { content: aiContent, suggestions } = await sendToSignalApi(pending, id);
|
|
446
|
+
const { content: aiContent, suggestions, offerHandoff } = await sendToSignalApi(pending, id);
|
|
447
|
+
const userWantsHandoff = userRequestedHandoff(pending);
|
|
431
448
|
setMessages((prev) => [
|
|
432
449
|
...prev,
|
|
433
450
|
{
|
|
@@ -435,7 +452,8 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
435
452
|
role: "assistant",
|
|
436
453
|
content: aiContent,
|
|
437
454
|
timestamp: /* @__PURE__ */ new Date(),
|
|
438
|
-
...suggestions?.length ? { suggestions } : {}
|
|
455
|
+
...suggestions?.length ? { suggestions } : {},
|
|
456
|
+
...offerHandoff || userWantsHandoff ? { offerHandoff: true } : {}
|
|
439
457
|
}
|
|
440
458
|
]);
|
|
441
459
|
} catch (err) {
|
|
@@ -447,7 +465,8 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
447
465
|
role: "assistant",
|
|
448
466
|
content: "I apologize, but I encountered an error. Would you like to speak with a team member?",
|
|
449
467
|
timestamp: /* @__PURE__ */ new Date(),
|
|
450
|
-
suggestions: ["Talk to a person", "Try again"]
|
|
468
|
+
suggestions: ["Talk to a person", "Try again"],
|
|
469
|
+
offerHandoff: true
|
|
451
470
|
}
|
|
452
471
|
]);
|
|
453
472
|
} finally {
|
|
@@ -569,7 +588,8 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
569
588
|
setIsLoading(true);
|
|
570
589
|
if (widgetConfig?.signal_enabled && hasText) {
|
|
571
590
|
try {
|
|
572
|
-
const { content: aiContent, suggestions } = await sendToSignalApi(content, sessionId);
|
|
591
|
+
const { content: aiContent, suggestions, offerHandoff } = await sendToSignalApi(content, sessionId);
|
|
592
|
+
const lastUserContent = messages.filter((m) => m.role === "user").slice(-1)[0]?.content ?? "";
|
|
573
593
|
setMessages((prev) => [
|
|
574
594
|
...prev,
|
|
575
595
|
{
|
|
@@ -577,7 +597,8 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
577
597
|
role: "assistant",
|
|
578
598
|
content: aiContent,
|
|
579
599
|
timestamp: /* @__PURE__ */ new Date(),
|
|
580
|
-
...suggestions?.length ? { suggestions } : {}
|
|
600
|
+
...suggestions?.length ? { suggestions } : {},
|
|
601
|
+
...offerHandoff || userRequestedHandoff(lastUserContent) ? { offerHandoff: true } : {}
|
|
581
602
|
}
|
|
582
603
|
]);
|
|
583
604
|
} catch (err) {
|
|
@@ -589,7 +610,8 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
589
610
|
role: "assistant",
|
|
590
611
|
content: "I apologize, but I encountered an error. Would you like to speak with a team member?",
|
|
591
612
|
timestamp: /* @__PURE__ */ new Date(),
|
|
592
|
-
suggestions: ["Talk to a person", "Try again"]
|
|
613
|
+
suggestions: ["Talk to a person", "Try again"],
|
|
614
|
+
offerHandoff: true
|
|
593
615
|
}
|
|
594
616
|
]);
|
|
595
617
|
} finally {
|
|
@@ -1001,82 +1023,105 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1001
1023
|
{
|
|
1002
1024
|
style: { flex: 1, overflowY: "auto", padding: 16, display: "flex", flexDirection: "column", gap: 12, backgroundColor: "#f9fafb" },
|
|
1003
1025
|
children: [
|
|
1004
|
-
messages.map((message) =>
|
|
1005
|
-
"
|
|
1006
|
-
{
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
},
|
|
1046
|
-
|
|
1047
|
-
},
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
backgroundColor: "transparent",
|
|
1070
|
-
color: primaryColor,
|
|
1071
|
-
fontSize: 13,
|
|
1072
|
-
cursor: "pointer"
|
|
1026
|
+
messages.map((message) => {
|
|
1027
|
+
const isAssistant = message.role === "assistant" || message.role === "agent";
|
|
1028
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", justifyContent: message.role === "user" ? "flex-end" : "flex-start" }, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1029
|
+
"div",
|
|
1030
|
+
{
|
|
1031
|
+
style: {
|
|
1032
|
+
maxWidth: "80%",
|
|
1033
|
+
padding: message.role === "system" ? "8px 12px" : isAssistant ? "12px 16px" : "10px 14px",
|
|
1034
|
+
borderRadius: message.role === "user" ? "16px 16px 4px 16px" : message.role === "system" ? "8px" : "16px 16px 16px 4px",
|
|
1035
|
+
backgroundColor: message.role === "user" ? primaryColor : message.role === "system" ? "#e5e7eb" : "#ffffff",
|
|
1036
|
+
color: message.role === "user" ? isLightColor(primaryColor) ? "#1a1a1a" : "white" : message.role === "system" ? "#6b7280" : "#111827",
|
|
1037
|
+
boxShadow: message.role === "system" ? "none" : "0 1px 2px rgba(0,0,0,0.08)",
|
|
1038
|
+
fontSize: message.role === "system" ? 13 : 14,
|
|
1039
|
+
fontStyle: message.role === "system" ? "italic" : "normal",
|
|
1040
|
+
lineHeight: isAssistant ? 1.6 : 1.5,
|
|
1041
|
+
whiteSpace: isAssistant ? "normal" : "pre-wrap",
|
|
1042
|
+
wordBreak: "break-word",
|
|
1043
|
+
textAlign: isAssistant ? "left" : void 0,
|
|
1044
|
+
borderLeft: isAssistant ? `3px solid ${primaryColor}33` : void 0
|
|
1045
|
+
},
|
|
1046
|
+
children: [
|
|
1047
|
+
message.agentName && message.role === "agent" && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { fontSize: 12, opacity: 0.6, marginBottom: 4 }, children: message.agentName }),
|
|
1048
|
+
isAssistant ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "chatMessageContent", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1049
|
+
ReactMarkdown__default.default,
|
|
1050
|
+
{
|
|
1051
|
+
components: {
|
|
1052
|
+
p: ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("p", { style: { margin: "0 0 8px", lineHeight: 1.6 }, children }),
|
|
1053
|
+
strong: ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("strong", { style: { fontWeight: 600 }, children }),
|
|
1054
|
+
ul: ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("ul", { style: { margin: "4px 0 8px", paddingLeft: 20 }, children }),
|
|
1055
|
+
ol: ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("ol", { style: { margin: "4px 0 8px", paddingLeft: 20 }, children }),
|
|
1056
|
+
li: ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("li", { style: { marginBottom: 4 }, children }),
|
|
1057
|
+
h3: ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("h3", { style: { margin: "12px 0 6px", fontSize: 15, fontWeight: 600 }, children }),
|
|
1058
|
+
h4: ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("h4", { style: { margin: "8px 0 4px", fontSize: 14, fontWeight: 600 }, children })
|
|
1059
|
+
},
|
|
1060
|
+
children: message.content
|
|
1061
|
+
}
|
|
1062
|
+
) }) : message.content,
|
|
1063
|
+
message.attachments?.length ? /* @__PURE__ */ jsxRuntime.jsx("div", { style: { marginTop: 8, display: "flex", flexDirection: "column", gap: 6 }, children: message.attachments.map(
|
|
1064
|
+
(att, i) => att.mimeType?.startsWith("image/") ? /* @__PURE__ */ jsxRuntime.jsx("a", { href: att.url, target: "_blank", rel: "noopener noreferrer", style: { display: "block" }, children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: att.url, alt: att.name, style: { maxWidth: "100%", maxHeight: 200, borderRadius: 8, objectFit: "contain" } }) }, i) : /* @__PURE__ */ jsxRuntime.jsxs("a", { href: att.url, target: "_blank", rel: "noopener noreferrer", style: { fontSize: 13, wordBreak: "break-all", display: "flex", alignItems: "center", gap: 6 }, children: [
|
|
1065
|
+
/* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48" }) }),
|
|
1066
|
+
att.name
|
|
1067
|
+
] }, i)
|
|
1068
|
+
) }) : null,
|
|
1069
|
+
message.suggestions?.length ? /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 6, marginTop: 8 }, children: message.suggestions.map((s, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1070
|
+
"button",
|
|
1071
|
+
{
|
|
1072
|
+
type: "button",
|
|
1073
|
+
onClick: () => {
|
|
1074
|
+
if (/talk\s+to\s+(a\s+)?person/i.test(s)) {
|
|
1075
|
+
requestHandoff();
|
|
1076
|
+
} else {
|
|
1077
|
+
setInputValue(s);
|
|
1078
|
+
inputRef.current?.focus();
|
|
1079
|
+
}
|
|
1080
|
+
},
|
|
1081
|
+
style: {
|
|
1082
|
+
padding: "6px 12px",
|
|
1083
|
+
borderRadius: 16,
|
|
1084
|
+
border: `1px solid ${primaryColor}`,
|
|
1085
|
+
backgroundColor: `${primaryColor}10`,
|
|
1086
|
+
color: primaryColor,
|
|
1087
|
+
fontSize: 13,
|
|
1088
|
+
cursor: "pointer"
|
|
1089
|
+
},
|
|
1090
|
+
children: s
|
|
1073
1091
|
},
|
|
1074
|
-
|
|
1075
|
-
}
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1092
|
+
i
|
|
1093
|
+
)) }) : null,
|
|
1094
|
+
message.sendFailed && lastFailedSend && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { marginTop: 8 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1095
|
+
"button",
|
|
1096
|
+
{
|
|
1097
|
+
type: "button",
|
|
1098
|
+
onClick: retryFailedSend,
|
|
1099
|
+
style: { padding: "6px 12px", borderRadius: 6, border: "1px solid #ef4444", backgroundColor: "#fef2f2", color: "#dc2626", fontSize: 13, cursor: "pointer" },
|
|
1100
|
+
children: "Retry send"
|
|
1101
|
+
}
|
|
1102
|
+
) }),
|
|
1103
|
+
widgetConfig?.signal_enabled && message.role === "assistant" && widgetConfig?.handoff_enabled !== false && message.offerHandoff && !message.suggestions?.some((s) => /talk\s+to\s+(a\s+)?person/i.test(s)) && message.id === messages.filter((m) => m.role === "assistant").slice(-1)[0]?.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1104
|
+
"button",
|
|
1105
|
+
{
|
|
1106
|
+
onClick: requestHandoff,
|
|
1107
|
+
style: {
|
|
1108
|
+
display: "inline-block",
|
|
1109
|
+
marginTop: 8,
|
|
1110
|
+
padding: "6px 12px",
|
|
1111
|
+
borderRadius: 6,
|
|
1112
|
+
border: `1px solid ${primaryColor}`,
|
|
1113
|
+
backgroundColor: "transparent",
|
|
1114
|
+
color: primaryColor,
|
|
1115
|
+
fontSize: 13,
|
|
1116
|
+
cursor: "pointer"
|
|
1117
|
+
},
|
|
1118
|
+
children: "Talk to a person"
|
|
1119
|
+
}
|
|
1120
|
+
)
|
|
1121
|
+
]
|
|
1122
|
+
}
|
|
1123
|
+
) }, message.id);
|
|
1124
|
+
}),
|
|
1080
1125
|
(isLoading || agentTyping) && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", justifyContent: "flex-start" }, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1081
1126
|
"div",
|
|
1082
1127
|
{
|
|
@@ -1206,6 +1251,8 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
|
|
|
1206
1251
|
from { transform: scaleX(0); }
|
|
1207
1252
|
to { transform: scaleX(1); }
|
|
1208
1253
|
}
|
|
1254
|
+
.chatMessageContent p:first-child { margin-top: 0; }
|
|
1255
|
+
.chatMessageContent p:last-child { margin-bottom: 0; }
|
|
1209
1256
|
` })
|
|
1210
1257
|
]
|
|
1211
1258
|
}
|
|
@@ -1839,5 +1886,5 @@ function getDeviceType() {
|
|
|
1839
1886
|
exports.ChatWidget = ChatWidget;
|
|
1840
1887
|
exports.DesignRenderer = DesignRenderer;
|
|
1841
1888
|
exports.EngageWidget = EngageWidget;
|
|
1842
|
-
//# sourceMappingURL=chunk-
|
|
1843
|
-
//# sourceMappingURL=chunk-
|
|
1889
|
+
//# sourceMappingURL=chunk-6LBLKQ5Q.js.map
|
|
1890
|
+
//# sourceMappingURL=chunk-6LBLKQ5Q.js.map
|