@uptrademedia/site-kit 1.2.0 → 1.2.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.
Files changed (93) hide show
  1. package/dist/analytics/index.d.mts +2 -2
  2. package/dist/analytics/index.d.ts +2 -2
  3. package/dist/analytics/index.js +6 -6
  4. package/dist/analytics/index.mjs +2 -2
  5. package/dist/{api-l44k92vp.d.mts → api-CWtoFJCO.d.mts} +1 -1
  6. package/dist/{api-l44k92vp.d.ts → api-CWtoFJCO.d.ts} +1 -1
  7. package/dist/blog/index.d.mts +2 -2
  8. package/dist/blog/index.d.ts +2 -2
  9. package/dist/blog/server.d.mts +1 -1
  10. package/dist/blog/server.d.ts +1 -1
  11. package/dist/{chunk-HEUULOSC.js → chunk-2MNLOYDD.js} +3 -3
  12. package/dist/{chunk-HEUULOSC.js.map → chunk-2MNLOYDD.js.map} +1 -1
  13. package/dist/{chunk-3LOFIO77.mjs → chunk-44OMJFCG.mjs} +187 -193
  14. package/dist/chunk-44OMJFCG.mjs.map +1 -0
  15. package/dist/{chunk-C5TQLU5U.js → chunk-47ZS7MKZ.js} +101 -78
  16. package/dist/chunk-47ZS7MKZ.js.map +1 -0
  17. package/dist/{chunk-VFJ3NNCY.js → chunk-DERI27QC.js} +187 -193
  18. package/dist/chunk-DERI27QC.js.map +1 -0
  19. package/dist/{chunk-RLO3QJ65.mjs → chunk-FHTQUJ4M.mjs} +100 -78
  20. package/dist/chunk-FHTQUJ4M.mjs.map +1 -0
  21. package/dist/{chunk-HGTTGJVZ.js → chunk-LBHEVL6U.js} +3 -3
  22. package/dist/{chunk-HGTTGJVZ.js.map → chunk-LBHEVL6U.js.map} +1 -1
  23. package/dist/{chunk-YT5SBY5W.mjs → chunk-MLJXNFUO.mjs} +3 -3
  24. package/dist/{chunk-YT5SBY5W.mjs.map → chunk-MLJXNFUO.mjs.map} +1 -1
  25. package/dist/{chunk-OW2C3ATV.mjs → chunk-R6V7DQ24.mjs} +3 -3
  26. package/dist/{chunk-OW2C3ATV.mjs.map → chunk-R6V7DQ24.mjs.map} +1 -1
  27. package/dist/cli/index.js +706 -706
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/cli/index.mjs +700 -700
  30. package/dist/cli/index.mjs.map +1 -1
  31. package/dist/commerce/index.d.mts +3 -3
  32. package/dist/commerce/index.d.ts +3 -3
  33. package/dist/commerce/server.d.mts +1 -1
  34. package/dist/commerce/server.d.ts +1 -1
  35. package/dist/engage/index.d.mts +2 -2
  36. package/dist/engage/index.d.ts +2 -2
  37. package/dist/engage/index.js +4 -4
  38. package/dist/engage/index.mjs +1 -1
  39. package/dist/images/index.d.mts +1 -1
  40. package/dist/images/index.d.ts +1 -1
  41. package/dist/index.d.mts +7 -7
  42. package/dist/index.d.ts +7 -7
  43. package/dist/index.js +4 -4
  44. package/dist/index.mjs +2 -2
  45. package/dist/llms/index.d.mts +2 -2
  46. package/dist/llms/index.d.ts +2 -2
  47. package/dist/{routing-D311WhuV.d.ts → routing-BI69sU8F.d.ts} +1 -1
  48. package/dist/{routing-bTjqOM8S.d.mts → routing-Bg1nr9N0.d.mts} +1 -1
  49. package/dist/{scanner-VNEXRTZF.mjs → scanner-7ZMUM2P5.mjs} +3 -3
  50. package/dist/{scanner-VNEXRTZF.mjs.map → scanner-7ZMUM2P5.mjs.map} +1 -1
  51. package/dist/{scanner-CVKYTPUO.js → scanner-OY7UF3WA.js} +14 -14
  52. package/dist/{scanner-CVKYTPUO.js.map → scanner-OY7UF3WA.js.map} +1 -1
  53. package/dist/seo/index.d.mts +3 -3
  54. package/dist/seo/index.d.ts +3 -3
  55. package/dist/seo/server.d.mts +2 -2
  56. package/dist/seo/server.d.ts +2 -2
  57. package/dist/setup/index.js +2 -2
  58. package/dist/setup/index.mjs +1 -1
  59. package/dist/setup/server.js +2 -2
  60. package/dist/setup/server.mjs +1 -1
  61. package/dist/sitemap/index.d.mts +1 -1
  62. package/dist/sitemap/index.d.ts +1 -1
  63. package/dist/{socket-loader-3FWQWPDQ.js → socket-loader-J26QHHOB.js} +2 -2
  64. package/dist/socket-loader-J26QHHOB.js.map +1 -0
  65. package/dist/{socket-loader-N5ETWMXW.mjs → socket-loader-R7S2YJ2J.mjs} +2 -2
  66. package/dist/socket-loader-R7S2YJ2J.mjs.map +1 -0
  67. package/dist/{types-C_pfGZhI.d.mts → types-Bsf5kX1n.d.mts} +1 -1
  68. package/dist/{types-C_pfGZhI.d.ts → types-Bsf5kX1n.d.ts} +1 -1
  69. package/dist/{types-DxhEH2tX.d.mts → types-CNZcDIoX.d.mts} +1 -1
  70. package/dist/{types-DxhEH2tX.d.ts → types-CNZcDIoX.d.ts} +1 -1
  71. package/dist/{types-Cl2SOKHd.d.mts → types-D8i7Alvv.d.mts} +1 -1
  72. package/dist/{types-Cl2SOKHd.d.ts → types-D8i7Alvv.d.ts} +1 -1
  73. package/dist/{types-DiZVgJKD.d.mts → types-DA_Kocle.d.mts} +1 -1
  74. package/dist/{types-DiZVgJKD.d.ts → types-DA_Kocle.d.ts} +1 -1
  75. package/dist/{types-CMNYdZwT.d.mts → types-DI0jnhjJ.d.mts} +1 -1
  76. package/dist/{types-CMNYdZwT.d.ts → types-DI0jnhjJ.d.ts} +1 -1
  77. package/dist/{types-BF2v5qX3.d.mts → types-wCtRFR0Y.d.mts} +1 -1
  78. package/dist/{types-BF2v5qX3.d.ts → types-wCtRFR0Y.d.ts} +1 -1
  79. package/dist/{useEventModal-x_RZRewW.d.mts → useEventModal-Bs0W9Iy_.d.mts} +2 -2
  80. package/dist/{useEventModal-5fIKdIaY.d.ts → useEventModal-Btu3uIjE.d.ts} +2 -2
  81. package/dist/{web-vitals-PW6MQOKS.js → web-vitals-444RLW3B.js} +3 -3
  82. package/dist/web-vitals-444RLW3B.js.map +1 -0
  83. package/dist/{web-vitals-YSIFBTH7.mjs → web-vitals-KPICZIEF.mjs} +3 -3
  84. package/dist/web-vitals-KPICZIEF.mjs.map +1 -0
  85. package/package.json +2 -1
  86. package/dist/chunk-3LOFIO77.mjs.map +0 -1
  87. package/dist/chunk-C5TQLU5U.js.map +0 -1
  88. package/dist/chunk-RLO3QJ65.mjs.map +0 -1
  89. package/dist/chunk-VFJ3NNCY.js.map +0 -1
  90. package/dist/socket-loader-3FWQWPDQ.js.map +0 -1
  91. package/dist/socket-loader-N5ETWMXW.mjs.map +0 -1
  92. package/dist/web-vitals-PW6MQOKS.js.map +0 -1
  93. package/dist/web-vitals-YSIFBTH7.mjs.map +0 -1
@@ -1,4 +1,5 @@
1
1
  import React2, { useState, useRef, useEffect, useCallback, createElement } from 'react';
2
+ import ReactMarkdown from 'react-markdown';
2
3
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
4
  import { usePathname } from 'next/navigation';
4
5
 
@@ -274,7 +275,7 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
274
275
  socketRef.current.disconnect();
275
276
  socketRef.current = null;
276
277
  }
277
- const { createSocket } = await import('./socket-loader-N5ETWMXW.mjs');
278
+ const { createSocket } = await import('./socket-loader-R7S2YJ2J.mjs');
278
279
  const namespaceUrl = `${baseUrl.replace(/\/$/, "")}/engage/chat`;
279
280
  const socket = await createSocket(namespaceUrl, {
280
281
  query: { projectId, visitorId, sessionId: currentSessionId },
@@ -995,82 +996,101 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
995
996
  {
996
997
  style: { flex: 1, overflowY: "auto", padding: 16, display: "flex", flexDirection: "column", gap: 12, backgroundColor: "#f9fafb" },
997
998
  children: [
998
- messages.map((message) => /* @__PURE__ */ jsx("div", { style: { display: "flex", justifyContent: message.role === "user" ? "flex-end" : "flex-start" }, children: /* @__PURE__ */ jsxs(
999
- "div",
1000
- {
1001
- style: {
1002
- maxWidth: "80%",
1003
- padding: message.role === "system" ? "8px 12px" : "10px 14px",
1004
- borderRadius: message.role === "user" ? "16px 16px 4px 16px" : message.role === "system" ? "8px" : "16px 16px 16px 4px",
1005
- backgroundColor: message.role === "user" ? primaryColor : message.role === "system" ? "#e5e7eb" : "#ffffff",
1006
- color: message.role === "user" ? isLightColor(primaryColor) ? "#1a1a1a" : "white" : message.role === "system" ? "#6b7280" : "#111827",
1007
- boxShadow: message.role === "system" ? "none" : "0 1px 2px rgba(0,0,0,0.08)",
1008
- fontSize: message.role === "system" ? 13 : 14,
1009
- fontStyle: message.role === "system" ? "italic" : "normal",
1010
- lineHeight: 1.5,
1011
- whiteSpace: "pre-wrap",
1012
- wordBreak: "break-word"
1013
- },
1014
- children: [
1015
- message.agentName && message.role === "agent" && /* @__PURE__ */ jsx("div", { style: { fontSize: 12, opacity: 0.6, marginBottom: 4 }, children: message.agentName }),
1016
- message.content,
1017
- message.attachments?.length ? /* @__PURE__ */ jsx("div", { style: { marginTop: 8, display: "flex", flexDirection: "column", gap: 6 }, children: message.attachments.map(
1018
- (att, i) => att.mimeType?.startsWith("image/") ? /* @__PURE__ */ jsx("a", { href: att.url, target: "_blank", rel: "noopener noreferrer", style: { display: "block" }, children: /* @__PURE__ */ jsx("img", { src: att.url, alt: att.name, style: { maxWidth: "100%", maxHeight: 200, borderRadius: 8, objectFit: "contain" } }) }, i) : /* @__PURE__ */ jsxs("a", { href: att.url, target: "_blank", rel: "noopener noreferrer", style: { fontSize: 13, wordBreak: "break-all" }, children: [
1019
- "\u{1F4CE} ",
1020
- att.name
1021
- ] }, i)
1022
- ) }) : null,
1023
- message.suggestions?.length ? /* @__PURE__ */ jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 6, marginTop: 8 }, children: message.suggestions.map((s, i) => /* @__PURE__ */ jsx(
1024
- "button",
1025
- {
1026
- type: "button",
1027
- onClick: () => {
1028
- setInputValue(s);
1029
- inputRef.current?.focus();
1030
- },
1031
- style: {
1032
- padding: "6px 12px",
1033
- borderRadius: 16,
1034
- border: `1px solid ${primaryColor}`,
1035
- backgroundColor: `${primaryColor}10`,
1036
- color: primaryColor,
1037
- fontSize: 13,
1038
- cursor: "pointer"
1039
- },
1040
- children: s
1041
- },
1042
- i
1043
- )) }) : null,
1044
- message.sendFailed && lastFailedSend && /* @__PURE__ */ jsx("div", { style: { marginTop: 8 }, children: /* @__PURE__ */ jsx(
1045
- "button",
1046
- {
1047
- type: "button",
1048
- onClick: retryFailedSend,
1049
- style: { padding: "6px 12px", borderRadius: 6, border: "1px solid #ef4444", backgroundColor: "#fef2f2", color: "#dc2626", fontSize: 13, cursor: "pointer" },
1050
- children: "Retry send"
1051
- }
1052
- ) }),
1053
- widgetConfig?.signal_enabled && message.role === "assistant" && !message.suggestions?.length && widgetConfig?.handoff_enabled !== false && messages.filter((m) => m.role === "user").length >= 2 && message.id === messages.filter((m) => m.role === "assistant").slice(-1)[0]?.id && /* @__PURE__ */ jsx(
1054
- "button",
1055
- {
1056
- onClick: requestHandoff,
1057
- style: {
1058
- display: "inline-block",
1059
- marginTop: 8,
1060
- padding: "6px 12px",
1061
- borderRadius: 6,
1062
- border: `1px solid ${primaryColor}`,
1063
- backgroundColor: "transparent",
1064
- color: primaryColor,
1065
- fontSize: 13,
1066
- cursor: "pointer"
999
+ messages.map((message) => {
1000
+ const isAssistant = message.role === "assistant" || message.role === "agent";
1001
+ return /* @__PURE__ */ jsx("div", { style: { display: "flex", justifyContent: message.role === "user" ? "flex-end" : "flex-start" }, children: /* @__PURE__ */ jsxs(
1002
+ "div",
1003
+ {
1004
+ style: {
1005
+ maxWidth: "80%",
1006
+ padding: message.role === "system" ? "8px 12px" : isAssistant ? "12px 16px" : "10px 14px",
1007
+ borderRadius: message.role === "user" ? "16px 16px 4px 16px" : message.role === "system" ? "8px" : "16px 16px 16px 4px",
1008
+ backgroundColor: message.role === "user" ? primaryColor : message.role === "system" ? "#e5e7eb" : "#ffffff",
1009
+ color: message.role === "user" ? isLightColor(primaryColor) ? "#1a1a1a" : "white" : message.role === "system" ? "#6b7280" : "#111827",
1010
+ boxShadow: message.role === "system" ? "none" : "0 1px 2px rgba(0,0,0,0.08)",
1011
+ fontSize: message.role === "system" ? 13 : 14,
1012
+ fontStyle: message.role === "system" ? "italic" : "normal",
1013
+ lineHeight: isAssistant ? 1.6 : 1.5,
1014
+ whiteSpace: isAssistant ? "normal" : "pre-wrap",
1015
+ wordBreak: "break-word",
1016
+ textAlign: isAssistant ? "left" : void 0,
1017
+ borderLeft: isAssistant ? `3px solid ${primaryColor}33` : void 0
1018
+ },
1019
+ children: [
1020
+ message.agentName && message.role === "agent" && /* @__PURE__ */ jsx("div", { style: { fontSize: 12, opacity: 0.6, marginBottom: 4 }, children: message.agentName }),
1021
+ isAssistant ? /* @__PURE__ */ jsx("div", { className: "chatMessageContent", children: /* @__PURE__ */ jsx(
1022
+ ReactMarkdown,
1023
+ {
1024
+ components: {
1025
+ p: ({ children }) => /* @__PURE__ */ jsx("p", { style: { margin: "0 0 8px", lineHeight: 1.6 }, children }),
1026
+ strong: ({ children }) => /* @__PURE__ */ jsx("strong", { style: { fontWeight: 600 }, children }),
1027
+ ul: ({ children }) => /* @__PURE__ */ jsx("ul", { style: { margin: "4px 0 8px", paddingLeft: 20 }, children }),
1028
+ ol: ({ children }) => /* @__PURE__ */ jsx("ol", { style: { margin: "4px 0 8px", paddingLeft: 20 }, children }),
1029
+ li: ({ children }) => /* @__PURE__ */ jsx("li", { style: { marginBottom: 4 }, children }),
1030
+ h3: ({ children }) => /* @__PURE__ */ jsx("h3", { style: { margin: "12px 0 6px", fontSize: 15, fontWeight: 600 }, children }),
1031
+ h4: ({ children }) => /* @__PURE__ */ jsx("h4", { style: { margin: "8px 0 4px", fontSize: 14, fontWeight: 600 }, children })
1032
+ },
1033
+ children: message.content
1034
+ }
1035
+ ) }) : message.content,
1036
+ message.attachments?.length ? /* @__PURE__ */ jsx("div", { style: { marginTop: 8, display: "flex", flexDirection: "column", gap: 6 }, children: message.attachments.map(
1037
+ (att, i) => att.mimeType?.startsWith("image/") ? /* @__PURE__ */ jsx("a", { href: att.url, target: "_blank", rel: "noopener noreferrer", style: { display: "block" }, children: /* @__PURE__ */ jsx("img", { src: att.url, alt: att.name, style: { maxWidth: "100%", maxHeight: 200, borderRadius: 8, objectFit: "contain" } }) }, i) : /* @__PURE__ */ jsxs("a", { href: att.url, target: "_blank", rel: "noopener noreferrer", style: { fontSize: 13, wordBreak: "break-all", display: "flex", alignItems: "center", gap: 6 }, children: [
1038
+ /* @__PURE__ */ jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ 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" }) }),
1039
+ att.name
1040
+ ] }, i)
1041
+ ) }) : null,
1042
+ message.suggestions?.length ? /* @__PURE__ */ jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 6, marginTop: 8 }, children: message.suggestions.map((s, i) => /* @__PURE__ */ jsx(
1043
+ "button",
1044
+ {
1045
+ type: "button",
1046
+ onClick: () => {
1047
+ setInputValue(s);
1048
+ inputRef.current?.focus();
1049
+ },
1050
+ style: {
1051
+ padding: "6px 12px",
1052
+ borderRadius: 16,
1053
+ border: `1px solid ${primaryColor}`,
1054
+ backgroundColor: `${primaryColor}10`,
1055
+ color: primaryColor,
1056
+ fontSize: 13,
1057
+ cursor: "pointer"
1058
+ },
1059
+ children: s
1067
1060
  },
1068
- children: "Talk to a person"
1069
- }
1070
- )
1071
- ]
1072
- }
1073
- ) }, message.id)),
1061
+ i
1062
+ )) }) : null,
1063
+ message.sendFailed && lastFailedSend && /* @__PURE__ */ jsx("div", { style: { marginTop: 8 }, children: /* @__PURE__ */ jsx(
1064
+ "button",
1065
+ {
1066
+ type: "button",
1067
+ onClick: retryFailedSend,
1068
+ style: { padding: "6px 12px", borderRadius: 6, border: "1px solid #ef4444", backgroundColor: "#fef2f2", color: "#dc2626", fontSize: 13, cursor: "pointer" },
1069
+ children: "Retry send"
1070
+ }
1071
+ ) }),
1072
+ widgetConfig?.signal_enabled && message.role === "assistant" && !message.suggestions?.length && widgetConfig?.handoff_enabled !== false && messages.filter((m) => m.role === "user").length >= 2 && message.id === messages.filter((m) => m.role === "assistant").slice(-1)[0]?.id && /* @__PURE__ */ jsx(
1073
+ "button",
1074
+ {
1075
+ onClick: requestHandoff,
1076
+ style: {
1077
+ display: "inline-block",
1078
+ marginTop: 8,
1079
+ padding: "6px 12px",
1080
+ borderRadius: 6,
1081
+ border: `1px solid ${primaryColor}`,
1082
+ backgroundColor: "transparent",
1083
+ color: primaryColor,
1084
+ fontSize: 13,
1085
+ cursor: "pointer"
1086
+ },
1087
+ children: "Talk to a person"
1088
+ }
1089
+ )
1090
+ ]
1091
+ }
1092
+ ) }, message.id);
1093
+ }),
1074
1094
  (isLoading || agentTyping) && /* @__PURE__ */ jsx("div", { style: { display: "flex", justifyContent: "flex-start" }, children: /* @__PURE__ */ jsxs(
1075
1095
  "div",
1076
1096
  {
@@ -1200,6 +1220,8 @@ function ChatWidget({ projectId: propProjectId, config, apiUrl: propApiUrl, sign
1200
1220
  from { transform: scaleX(0); }
1201
1221
  to { transform: scaleX(1); }
1202
1222
  }
1223
+ .chatMessageContent p:first-child { margin-top: 0; }
1224
+ .chatMessageContent p:last-child { margin-bottom: 0; }
1203
1225
  ` })
1204
1226
  ]
1205
1227
  }
@@ -1831,5 +1853,5 @@ function getDeviceType() {
1831
1853
  }
1832
1854
 
1833
1855
  export { ChatWidget, DesignRenderer, EngageWidget };
1834
- //# sourceMappingURL=chunk-RLO3QJ65.mjs.map
1835
- //# sourceMappingURL=chunk-RLO3QJ65.mjs.map
1856
+ //# sourceMappingURL=chunk-FHTQUJ4M.mjs.map
1857
+ //# sourceMappingURL=chunk-FHTQUJ4M.mjs.map