@openk9ui/openk9-chatbot 3.0.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 (39) hide show
  1. package/README.md +50 -0
  2. package/dist/SingleMessage-Dyc7W2JZ.js +13738 -0
  3. package/dist/assets/Chatbot.css +107 -0
  4. package/dist/components/Chatbot.js +399 -0
  5. package/dist/components/LanguageContext.js +53 -0
  6. package/dist/components/Search.js +91 -0
  7. package/dist/components/SingleMessage.js +9 -0
  8. package/dist/components/Translate.js +69 -0
  9. package/dist/components/client.js +119 -0
  10. package/dist/components/styled.js +21 -0
  11. package/dist/components/useFocusTrap.js +95 -0
  12. package/dist/components/useGenerateResponse.js +271 -0
  13. package/dist/components/useLanguage.js +12 -0
  14. package/dist/lib/components/Chatbot.js +168 -0
  15. package/dist/lib/components/LanguageContext.js +63 -0
  16. package/dist/lib/components/Search.js +56 -0
  17. package/dist/lib/components/SingleMessage.js +385 -0
  18. package/dist/lib/components/Translate.js +71 -0
  19. package/dist/lib/components/client.js +170 -0
  20. package/dist/lib/components/styled.js +14 -0
  21. package/dist/lib/components/useFocusTrap.js +85 -0
  22. package/dist/lib/components/useGenerateResponse.js +310 -0
  23. package/dist/lib/components/useLanguage.js +16 -0
  24. package/dist/lib/main.js +8 -0
  25. package/dist/main.js +4 -0
  26. package/dist/src/theme.js +52 -0
  27. package/dist/types/lib/components/Chatbot.d.ts +26 -0
  28. package/dist/types/lib/components/LanguageContext.d.ts +12 -0
  29. package/dist/types/lib/components/Search.d.ts +9 -0
  30. package/dist/types/lib/components/SingleMessage.d.ts +19 -0
  31. package/dist/types/lib/components/Translate.d.ts +5 -0
  32. package/dist/types/lib/components/client.d.ts +91 -0
  33. package/dist/types/lib/components/styled.d.ts +13 -0
  34. package/dist/types/lib/components/useFocusTrap.d.ts +5 -0
  35. package/dist/types/lib/components/useGenerateResponse.d.ts +33 -0
  36. package/dist/types/lib/components/useLanguage.d.ts +4 -0
  37. package/dist/types/lib/main.d.ts +2 -0
  38. package/dist/types/src/theme.d.ts +1 -0
  39. package/package.json +63 -0
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.useFocusTrap = exports.sortByTabIndex = exports.getTabIndexOfNode = exports.convertToIntOrFallback = void 0;
4
+ var react_1 = require("react");
5
+ function convertToIntOrFallback(stringToConvert) {
6
+ var parsed = parseInt(stringToConvert !== null && stringToConvert !== void 0 ? stringToConvert : "");
7
+ return isNaN(parsed) ? 0 : parsed;
8
+ }
9
+ exports.convertToIntOrFallback = convertToIntOrFallback;
10
+ function getTabIndexOfNode(targetNode) {
11
+ return convertToIntOrFallback(targetNode.getAttribute("tabindex"));
12
+ }
13
+ exports.getTabIndexOfNode = getTabIndexOfNode;
14
+ function sanitizeTabIndexInput(tabIndex, highestPositiveTabIndex) {
15
+ if (tabIndex < 0) {
16
+ throw new Error("Unable to sort given input. A negative value is not part of the tab order: ".concat(tabIndex));
17
+ }
18
+ return tabIndex === 0 ? highestPositiveTabIndex + 1 : tabIndex;
19
+ }
20
+ function sortByTabIndex(firstNode, secondNode) {
21
+ var tabIndexes = [firstNode, secondNode].map(function (node) {
22
+ return getTabIndexOfNode(node);
23
+ });
24
+ return tabIndexes
25
+ .map(function (tabIndexValue) {
26
+ return sanitizeTabIndexInput(tabIndexValue, Math.max.apply(Math, tabIndexes));
27
+ })
28
+ .reduce(function (previousValue, currentValue) { return previousValue - currentValue; });
29
+ }
30
+ exports.sortByTabIndex = sortByTabIndex;
31
+ var focusableElementsSelector = "a[href], area[href], input:not([disabled]):not([type=hidden]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]";
32
+ var TAB_KEY = 9;
33
+ function useFocusTrap(isActive) {
34
+ var trapRef = (0, react_1.useRef)(null);
35
+ var selectNextFocusableElem = (0, react_1.useCallback)(function (sortedFocusableElems, currentIndex, shiftKeyPressed, skipCount) {
36
+ var _a;
37
+ if (shiftKeyPressed === void 0) { shiftKeyPressed = false; }
38
+ if (skipCount === void 0) { skipCount = 0; }
39
+ if (skipCount > sortedFocusableElems.length) {
40
+ return;
41
+ }
42
+ var backwards = !!shiftKeyPressed;
43
+ var maxIndex = sortedFocusableElems.length - 1;
44
+ if (currentIndex === undefined) {
45
+ currentIndex =
46
+ (_a = sortedFocusableElems.indexOf(document.activeElement)) !== null && _a !== void 0 ? _a : 0;
47
+ }
48
+ var nextIndex = backwards ? currentIndex - 1 : currentIndex + 1;
49
+ if (nextIndex > maxIndex) {
50
+ nextIndex = 0;
51
+ }
52
+ if (nextIndex < 0) {
53
+ nextIndex = maxIndex;
54
+ }
55
+ var newFocusElem = sortedFocusableElems[nextIndex];
56
+ newFocusElem.focus();
57
+ if (document.activeElement !== newFocusElem) {
58
+ selectNextFocusableElem(sortedFocusableElems, nextIndex, shiftKeyPressed, skipCount + 1);
59
+ }
60
+ }, []);
61
+ var trapper = (0, react_1.useCallback)(function (evt) {
62
+ var trapRefElem = trapRef.current;
63
+ if (trapRefElem !== null) {
64
+ if (evt.which === TAB_KEY || evt.key === "Tab") {
65
+ evt.preventDefault();
66
+ var shiftKeyPressed = !!evt.shiftKey;
67
+ var focusableElems = Array.from(trapRefElem.querySelectorAll(focusableElementsSelector)).filter(function (focusableElement) { return getTabIndexOfNode(focusableElement) >= 0; });
68
+ focusableElems = focusableElems.sort(sortByTabIndex);
69
+ selectNextFocusableElem(focusableElems, undefined, shiftKeyPressed);
70
+ }
71
+ }
72
+ }, [selectNextFocusableElem]);
73
+ (0, react_1.useEffect)(function () {
74
+ if (isActive) {
75
+ window.addEventListener("keydown", trapper);
76
+ }
77
+ return function () {
78
+ if (isActive) {
79
+ window.removeEventListener("keydown", trapper);
80
+ }
81
+ };
82
+ }, [isActive, trapper]);
83
+ return [trapRef];
84
+ }
85
+ exports.useFocusTrap = useFocusTrap;
@@ -0,0 +1,310 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
+ return new (P || (P = Promise))(function (resolve, reject) {
39
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
43
+ });
44
+ };
45
+ var __generator = (this && this.__generator) || function (thisArg, body) {
46
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
47
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
+ function verb(n) { return function (v) { return step([n, v]); }; }
49
+ function step(op) {
50
+ if (f) throw new TypeError("Generator is already executing.");
51
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
52
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
53
+ if (y = 0, t) op = [op[0] & 2, t.value];
54
+ switch (op[0]) {
55
+ case 0: case 1: t = op; break;
56
+ case 4: _.label++; return { value: op[1], done: false };
57
+ case 5: _.label++; y = op[1]; op = [0]; continue;
58
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
+ default:
60
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
+ if (t[2]) _.ops.pop();
65
+ _.trys.pop(); continue;
66
+ }
67
+ op = body.call(thisArg, _);
68
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
+ }
71
+ };
72
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
73
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
74
+ if (ar || !(i in from)) {
75
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
76
+ ar[i] = from[i];
77
+ }
78
+ }
79
+ return to.concat(ar || Array.prototype.slice.call(from));
80
+ };
81
+ exports.__esModule = true;
82
+ var react_1 = __importStar(require("react"));
83
+ var uuid_1 = require("uuid");
84
+ var useLanguage_1 = require("./useLanguage");
85
+ var client_1 = require("./client");
86
+ var useGenerateResponse = function (_a) {
87
+ var initialMessages = _a.initialMessages, tenant = _a.tenant, callbackAuthorization = _a.callbackAuthorization;
88
+ var language = (0, useLanguage_1.useLanguage)().language;
89
+ var _b = (0, react_1.useState)(initialMessages), messages = _b[0], setMessages = _b[1];
90
+ var _c = (0, react_1.useState)(new Map()), abortControllers = _c[0], setAbortControllers = _c[1];
91
+ var _d = (0, react_1.useState)(false), isChatting = _d[0], setIsChatting = _d[1];
92
+ var _e = (0, react_1.useState)(null), isLoading = _e[0], setIsLoading = _e[1];
93
+ var client = react_1["default"].useMemo(function () { return (0, client_1.OpenK9Client)({ callbackAuthorization: callbackAuthorization }); }, [callbackAuthorization]);
94
+ var generateResponse = (0, react_1.useCallback)(function (query) { return __awaiter(void 0, void 0, void 0, function () {
95
+ var id, timestamp, nonLoggedUserId, chatHistory, controller, url, searchQuery, response_1, reader, decoder, done, buffer, _a, value, readerDone, boundaryIndex, _loop_1, error_1;
96
+ var _b, _c;
97
+ return __generator(this, function (_d) {
98
+ switch (_d.label) {
99
+ case 0:
100
+ id = (0, uuid_1.v4)();
101
+ setIsLoading({ id: id, isLoading: true });
102
+ timestamp = "" + Date.now();
103
+ nonLoggedUserId = "anonymous_".concat((0, uuid_1.v4)(), "_").concat(timestamp);
104
+ chatHistory = messages.map(function (msg) { return ({
105
+ question: msg.question,
106
+ answer: msg.answer,
107
+ title: "",
108
+ sources: msg.sources || [],
109
+ chat_id: nonLoggedUserId,
110
+ timestamp: msg.timestamp || "",
111
+ chat_sequence_number: msg.chat_sequence_number
112
+ }); });
113
+ setMessages(function (prevMessages) {
114
+ var _a;
115
+ var chat_sequence_number = (((_a = prevMessages[prevMessages.length - 1]) === null || _a === void 0 ? void 0 : _a.chat_sequence_number) || 0) +
116
+ 1;
117
+ var newMessage = {
118
+ id: id,
119
+ question: query,
120
+ answer: "",
121
+ sendTime: new Date().toISOString(),
122
+ status: "CHUNK",
123
+ sources: [],
124
+ chat_sequence_number: chat_sequence_number,
125
+ timestamp: timestamp
126
+ };
127
+ return __spreadArray(__spreadArray([], prevMessages, true), [newMessage], false);
128
+ });
129
+ setIsChatting(true);
130
+ controller = new AbortController();
131
+ setAbortControllers(function (prev) { return new Map(prev).set(id, controller); });
132
+ url = "".concat(tenant, "/api/rag/chat-tool");
133
+ searchQuery =
134
+ // keycloak.authenticated ? {
135
+ // searchText: query,
136
+ // chatId,
137
+ // chatSequenceNumber: messages[messages.length - 1]?.chat_sequence_number + 1 || 1,
138
+ // timestamp,
139
+ // // language,
140
+ // } :
141
+ {
142
+ searchText: query,
143
+ chatSequenceNumber: ((_b = messages[messages.length - 1]) === null || _b === void 0 ? void 0 : _b.chat_sequence_number) + 1 || 1,
144
+ timestamp: timestamp,
145
+ chatHistory: chatHistory
146
+ };
147
+ _d.label = 1;
148
+ case 1:
149
+ _d.trys.push([1, 8, , 9]);
150
+ return [4 /*yield*/, client.GenerateResponse({
151
+ controller: controller,
152
+ searchQuery: searchQuery,
153
+ url: url
154
+ })];
155
+ case 2:
156
+ response_1 = _d.sent();
157
+ if (!response_1.ok) return [3 /*break*/, 6];
158
+ reader = (_c = response_1.body) === null || _c === void 0 ? void 0 : _c.getReader();
159
+ decoder = new TextDecoder("utf-8");
160
+ done = false;
161
+ buffer = "";
162
+ _d.label = 3;
163
+ case 3:
164
+ if (!(!done && reader)) return [3 /*break*/, 5];
165
+ return [4 /*yield*/, reader.read()];
166
+ case 4:
167
+ _a = _d.sent(), value = _a.value, readerDone = _a.done;
168
+ done = readerDone;
169
+ buffer += decoder.decode(value, { stream: true });
170
+ boundaryIndex = void 0;
171
+ _loop_1 = function () {
172
+ var chunkStr = buffer.slice(0, boundaryIndex);
173
+ buffer = buffer.slice(boundaryIndex + 1);
174
+ if (chunkStr.trim().startsWith("data: ")) {
175
+ var dataStr = chunkStr.trim().slice(6);
176
+ try {
177
+ var data_1 = JSON.parse(dataStr);
178
+ switch (data_1.type) {
179
+ case "CHUNK":
180
+ setMessages(function (prev) {
181
+ return prev.map(function (msg) {
182
+ return msg.id === id
183
+ ? __assign(__assign({}, msg), { answer: msg.answer + data_1.chunk }) : msg;
184
+ });
185
+ });
186
+ break;
187
+ case "DOCUMENT":
188
+ setMessages(function (prev) {
189
+ return prev.map(function (msg) {
190
+ var _a;
191
+ return msg.id === id
192
+ ? __assign(__assign({}, msg), { sources: __spreadArray(__spreadArray([], ((_a = msg === null || msg === void 0 ? void 0 : msg.sources) !== null && _a !== void 0 ? _a : []), true), [data_1.chunk], false) }) : msg;
193
+ });
194
+ });
195
+ break;
196
+ case "START":
197
+ setIsLoading(null);
198
+ break;
199
+ case "ERROR":
200
+ setMessages(function (prev) {
201
+ return prev.map(function (msg) {
202
+ return msg.id === id
203
+ ? __assign(__assign({}, msg), { answer: data_1.chunk, status: "ERROR" }) : msg;
204
+ });
205
+ });
206
+ setIsChatting(false);
207
+ break;
208
+ case "END":
209
+ setMessages(function (prev) {
210
+ return prev.map(function (msg) {
211
+ return msg.id === id
212
+ ? __assign(__assign({}, msg), { status: "END" }) : msg;
213
+ });
214
+ });
215
+ setIsChatting(false);
216
+ break;
217
+ default:
218
+ console.warn("Tipo di chunk non riconosciuto:", data_1.type);
219
+ break;
220
+ }
221
+ }
222
+ catch (e) {
223
+ console.error("Errore nel parsing del JSON", e);
224
+ }
225
+ }
226
+ };
227
+ while ((boundaryIndex = buffer.indexOf("\n")) !== -1) {
228
+ _loop_1();
229
+ }
230
+ return [3 /*break*/, 3];
231
+ case 5: return [3 /*break*/, 7];
232
+ case 6:
233
+ console.error("Errore nel generare la risposta");
234
+ setMessages(function (prev) {
235
+ return prev.map(function (msg) {
236
+ return msg.id === id
237
+ ? __assign(__assign({}, msg), { status: "ERROR", answer: (response_1 === null || response_1 === void 0 ? void 0 : response_1.statusText) || "Error" }) : msg;
238
+ });
239
+ });
240
+ setIsChatting(false);
241
+ _d.label = 7;
242
+ case 7:
243
+ setIsChatting(false);
244
+ setIsLoading(null);
245
+ return [3 /*break*/, 9];
246
+ case 8:
247
+ error_1 = _d.sent();
248
+ console.error("Errore durante la richiesta", error_1);
249
+ setIsChatting(false);
250
+ return [3 /*break*/, 9];
251
+ case 9:
252
+ setAbortControllers(function (prev) {
253
+ var updated = new Map(prev);
254
+ updated["delete"](id);
255
+ return updated;
256
+ });
257
+ return [2 /*return*/];
258
+ }
259
+ });
260
+ }); }, [messages, client, tenant, language]);
261
+ var cancelResponse = function (id) {
262
+ var controller = abortControllers.get(id);
263
+ if (controller) {
264
+ controller.abort();
265
+ setIsLoading(null);
266
+ setMessages(function (prev) {
267
+ return prev.map(function (msg) {
268
+ return msg.id === id
269
+ ? __assign(__assign({}, msg), { status: "END", answer: "La risposta è stata annullata" }) : msg;
270
+ });
271
+ });
272
+ setAbortControllers(function (prev) {
273
+ var updated = new Map(prev);
274
+ updated["delete"](id);
275
+ return updated;
276
+ });
277
+ setIsChatting(abortControllers.size > 0);
278
+ }
279
+ else {
280
+ console.warn("No AbortController found for id: ".concat(id));
281
+ }
282
+ };
283
+ var cancelAllResponses = function () {
284
+ abortControllers.forEach(function (controller) {
285
+ controller.abort();
286
+ });
287
+ setMessages(function (prev) {
288
+ return prev.map(function (msg) {
289
+ return msg.status === "CHUNK"
290
+ ? __assign(__assign({}, msg), { status: "END", answer: msg.answer + "... La risposta è stata annullata" }) : msg;
291
+ });
292
+ });
293
+ setAbortControllers(new Map());
294
+ setIsChatting(false);
295
+ setIsLoading(null);
296
+ };
297
+ var resetMessage = function () {
298
+ setMessages([]);
299
+ };
300
+ return {
301
+ messages: messages,
302
+ generateResponse: generateResponse,
303
+ cancelResponse: cancelResponse,
304
+ cancelAllResponses: cancelAllResponses,
305
+ isChatting: isChatting,
306
+ isLoading: isLoading,
307
+ resetMessage: resetMessage
308
+ };
309
+ };
310
+ exports["default"] = useGenerateResponse;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ exports.useLanguage = void 0;
7
+ var react_1 = require("react");
8
+ var LanguageContext_1 = __importDefault(require("./LanguageContext"));
9
+ var useLanguage = function () {
10
+ var context = (0, react_1.useContext)(LanguageContext_1["default"]);
11
+ if (!context) {
12
+ throw new Error("useLanguage must used to LanguageProvider");
13
+ }
14
+ return context;
15
+ };
16
+ exports.useLanguage = useLanguage;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ exports.Chatbot = void 0;
7
+ var Chatbot_1 = __importDefault(require("./components/Chatbot"));
8
+ exports.Chatbot = Chatbot_1["default"];
package/dist/main.js ADDED
@@ -0,0 +1,4 @@
1
+ import { default as default2 } from "./components/Chatbot.js";
2
+ export {
3
+ default2 as Chatbot
4
+ };
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.defaultThemeK9 = void 0;
4
+ var styles_1 = require("@mui/material/styles");
5
+ exports.defaultThemeK9 = (0, styles_1.createTheme)({
6
+ breakpoints: {
7
+ values: {
8
+ xs: 0,
9
+ sm: 576,
10
+ md: 768,
11
+ lg: 992,
12
+ xl: 1200
13
+ }
14
+ },
15
+ palette: {
16
+ primary: {
17
+ main: "#C0272B",
18
+ contrastText: "#FFF",
19
+ dark: "#b10707",
20
+ light: "#e77979"
21
+ },
22
+ text: {
23
+ primary: "#000000",
24
+ secondary: "#666666"
25
+ }
26
+ },
27
+ typography: {
28
+ allVariants: {
29
+ fontFamily: "Titillium Web"
30
+ },
31
+ fontFamily: "Titillium Web",
32
+ body1: {
33
+ fontWeight: 400,
34
+ fontSize: "12px",
35
+ lineHeight: "19px"
36
+ },
37
+ body2: {
38
+ fontFamily: "Roboto",
39
+ font: "Roboto",
40
+ fontWeight: 500,
41
+ fontSize: "10px",
42
+ lineHeight: "12px"
43
+ },
44
+ h5: {
45
+ fontWeight: 400,
46
+ fontSize: "12px",
47
+ lineHeight: "22px"
48
+ }
49
+ },
50
+ spacing: 2,
51
+ shape: { borderRadius: 2 }
52
+ });
@@ -0,0 +1,26 @@
1
+ import { Theme } from "@mui/material";
2
+ import React from "react";
3
+ import "@fontsource/roboto";
4
+ import "@fontsource/titillium-web";
5
+ export type IconProps = {
6
+ buttonIcon?: React.ReactNode;
7
+ userIcon?: React.ReactNode;
8
+ chatbotIcon?: React.ReactNode;
9
+ refreshChatIcon?: React.ReactNode;
10
+ closeIcon?: React.ReactNode;
11
+ searchIcon?: React.ReactNode;
12
+ logoIcon?: React.ReactNode;
13
+ closeModal?: React.ReactNode;
14
+ };
15
+ type ChatbotProps = {
16
+ icon: IconProps;
17
+ title?: React.ReactNode;
18
+ initialMessage?: string;
19
+ nameChatbot?: string;
20
+ themeCustom?: Theme;
21
+ language?: string;
22
+ tenant?: string;
23
+ callbackAuthorization?: () => string | undefined | null;
24
+ };
25
+ declare const Chatbot: React.FC<ChatbotProps>;
26
+ export default Chatbot;
@@ -0,0 +1,12 @@
1
+ import React, { ReactNode } from "react";
2
+ type LanguageContextType = {
3
+ language: string;
4
+ setLanguage: (language: string) => void;
5
+ };
6
+ declare const LanguageContext: React.Context<LanguageContextType>;
7
+ type LanguageProviderProps = {
8
+ children: ReactNode;
9
+ initialLanguage?: string;
10
+ };
11
+ export declare const LanguageProvider: React.FC<LanguageProviderProps>;
12
+ export default LanguageContext;
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { IconProps } from "./Chatbot";
3
+ export default function Search({ handleSearch, isChatting, icon, chatbotSearchRef, }: {
4
+ handleSearch: (message: string) => void;
5
+ cancelAllResponses(): void;
6
+ isChatting: boolean;
7
+ icon: IconProps;
8
+ chatbotSearchRef: React.MutableRefObject<HTMLHeadingElement | null>;
9
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,19 @@
1
+ /// <reference types="react" />
2
+ type Theme = "light" | "dark";
3
+ type Source = {
4
+ score?: string;
5
+ title?: string;
6
+ url?: string;
7
+ };
8
+ export declare function SingleMessage({ contentMessage, timeMessage, isChatbot, isLoading, icon, nameChatbot, status, sources, themeInfo, }: {
9
+ contentMessage: string;
10
+ timeMessage: string;
11
+ isChatbot: boolean;
12
+ isLoading?: boolean;
13
+ icon?: React.ReactNode;
14
+ nameChatbot?: string;
15
+ status?: "END" | "CHUNK" | "ERROR";
16
+ sources?: Source[];
17
+ themeInfo?: Theme;
18
+ }): import("react/jsx-runtime").JSX.Element;
19
+ export {};
@@ -0,0 +1,5 @@
1
+ export declare function Translate({ label }: {
2
+ label: TranslationKey;
3
+ }): string;
4
+ type TranslationKey = "closeChatbot" | "openChatbot" | "clearChat" | "startQuestion" | "youSendMessage" | "sendMessage" | "customPlaceholder" | "searchLabel";
5
+ export {};
@@ -0,0 +1,91 @@
1
+ import React from "react";
2
+ export declare const OpenK9ClientContext: React.Context<{
3
+ getInitialMessages(chatId: string): Promise<{
4
+ chat_id: string;
5
+ messages: [
6
+ {
7
+ question: string;
8
+ answer: string;
9
+ chat_sequence_number: string;
10
+ }
11
+ ];
12
+ }>;
13
+ getHistoryChat(searchQuery: jsonObjPost): Promise<{
14
+ result: ChatHistory[];
15
+ }>;
16
+ GenerateResponse({ url, searchQuery, controller, }: {
17
+ url: string;
18
+ searchQuery: {
19
+ searchText: string;
20
+ chatId?: string;
21
+ chatSequenceNumber: number;
22
+ timestamp: string;
23
+ chatHistory?: Array<{
24
+ question: string;
25
+ answer: string;
26
+ title: string;
27
+ sources: Array<any>;
28
+ chat_id: string;
29
+ timestamp: string;
30
+ chat_sequence_number: number;
31
+ }>;
32
+ };
33
+ controller: AbortController;
34
+ }): Promise<Response>;
35
+ }>;
36
+ export default function Client(): any;
37
+ export declare function OpenK9Client({ callbackAuthorization, }: {
38
+ callbackAuthorization?: () => string | undefined | null;
39
+ }): {
40
+ getInitialMessages(chatId: string): Promise<{
41
+ chat_id: string;
42
+ messages: [
43
+ {
44
+ question: string;
45
+ answer: string;
46
+ chat_sequence_number: string;
47
+ }
48
+ ];
49
+ }>;
50
+ getHistoryChat(searchQuery: jsonObjPost): Promise<{
51
+ result: ChatHistory[];
52
+ }>;
53
+ GenerateResponse({ url, searchQuery, controller, }: {
54
+ url: string;
55
+ searchQuery: {
56
+ searchText: string;
57
+ chatId?: string;
58
+ chatSequenceNumber: number;
59
+ timestamp: string;
60
+ chatHistory?: Array<{
61
+ question: string;
62
+ answer: string;
63
+ title: string;
64
+ sources: Array<any>;
65
+ chat_id: string;
66
+ timestamp: string;
67
+ chat_sequence_number: number;
68
+ }>;
69
+ };
70
+ controller: AbortController;
71
+ }): Promise<Response>;
72
+ };
73
+ export interface getUserInfo {
74
+ refreshOnSuggestionCategory: boolean;
75
+ refreshOnTab: boolean;
76
+ refreshOnDate: boolean;
77
+ refreshOnQuery: boolean;
78
+ retrieveType: "MATCH" | "KNN" | "HYBRID";
79
+ }
80
+ export interface ChatHistory {
81
+ chat_id: string | null;
82
+ title: string;
83
+ question: string;
84
+ timestamp: string;
85
+ }
86
+ export type jsonObjPost = {
87
+ userId: string;
88
+ chatSequenceNumber?: number;
89
+ paginationFrom: number;
90
+ paginationSize: number;
91
+ };
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ export declare const ParagraphTime: import("@emotion/styled").StyledComponent<{
3
+ theme?: import("@emotion/react").Theme;
4
+ as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>;
5
+ } & {
6
+ $color?: string;
7
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, {}>;
8
+ export declare const ParagraphMessage: import("@emotion/styled").StyledComponent<{
9
+ theme?: import("@emotion/react").Theme;
10
+ as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>;
11
+ } & {
12
+ $color?: string;
13
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, {}>;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export declare function convertToIntOrFallback(stringToConvert: string | null): number;
3
+ export declare function getTabIndexOfNode(targetNode: HTMLElement): number;
4
+ export declare function sortByTabIndex(firstNode: HTMLElement, secondNode: HTMLElement): number;
5
+ export declare function useFocusTrap(isActive: boolean): [React.RefObject<HTMLDivElement>];