@axos-web-dev/shared-components 1.0.100-dev.53-chat-revamp.2 → 1.0.100-dev.53-speedbumpextlinks

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.
@@ -33,3 +33,4 @@ export declare const thankyou_image: string;
33
33
  export declare const chatEndCircle: string;
34
34
  export declare const user_msg: string;
35
35
  export declare const agent_msg: string;
36
+ export declare const shimmerText: string;
@@ -34,6 +34,7 @@ var thankyou_image = "_13n1jqkq";
34
34
  var chatEndCircle = "_13n1jqkr";
35
35
  var user_msg = "_13n1jqks";
36
36
  var agent_msg = "_13n1jqkt";
37
+ var shimmerText = "_13n1jqkv";
37
38
  export {
38
39
  agent_msg,
39
40
  arrowFill,
@@ -58,6 +59,7 @@ export {
58
59
  noAnswerButton,
59
60
  notificationStyle,
60
61
  sendButtonStyle,
62
+ shimmerText,
61
63
  thankyou_image,
62
64
  thankyou_message,
63
65
  thankyou_overlay,
@@ -12,7 +12,7 @@ export interface ChatBubble {
12
12
  isOwn?: boolean;
13
13
  }
14
14
  interface ChatWindowProps {
15
- messages: MessageResponse[];
15
+ messages: Array<MessageResponse>;
16
16
  status?: string;
17
17
  onSend: (msg: string) => void;
18
18
  inputDisabled?: boolean;
@@ -6,13 +6,11 @@ import '../assets/themes/victorie.css';import '../assets/themes/ufb.css';import
6
6
  /* empty css */
7
7
  /* empty css */
8
8
  import clsx from "clsx";
9
- import React, { useRef, useEffect, Fragment as Fragment$1 } from "react";
10
- import ReactMarkdown from "react-markdown";
9
+ import React, { useRef, useEffect } from "react";
11
10
  import { useNetworkState, useMount } from "react-use";
12
- import remarkGfm from "remark-gfm";
13
11
  import { gradientFocus } from "./AnimatedGradientBorder.css.js";
14
- import { windowBarStyle, left_bar_section, chat_title, button_bar, chatbotMenuItem, chatbotMenu, chatEndDialogOverlay, chatFinishDialog, chatEndCircle, endChatButtonStyle, noAnswerButton, arrowFill, button_reset, buttonss_section, chatNetworkStatus, notificationStyle, messageStyle, user_msg, agent_msg, inline_button_wrapper, inline_button, messagesContainerStyle, inputStyle, autoResize, sendButtonStyle, windowStyle, windowOpenStyle } from "./ChatWindow.css.js";
15
- import EllipsisLoader from "./EllipsisAnimation.js";
12
+ import { ChatbotMessage } from "./ChatbotMessage.js";
13
+ import { windowBarStyle, left_bar_section, chat_title, button_bar, chatbotMenuItem, chatbotMenu, chatEndDialogOverlay, chatFinishDialog, chatEndCircle, endChatButtonStyle, noAnswerButton, arrowFill, button_reset, buttonss_section, chatNetworkStatus, shimmerText, messagesContainerStyle, inputStyle, autoResize, sendButtonStyle, windowStyle, windowOpenStyle } from "./ChatWindow.css.js";
16
14
  import { EllipsisIcon } from "./EllipsisIcon.js";
17
15
  import { useOpenChat } from "./store/chat.js";
18
16
  import { ThankYouMessage } from "./ThankYouMessage.js";
@@ -387,7 +385,6 @@ const ChatWindow = ({
387
385
  style: {
388
386
  textAlign: "left",
389
387
  alignSelf: "flex-start",
390
- background: "#eee",
391
388
  color: "#1e3860",
392
389
  borderRadius: 16,
393
390
  padding: "8px 8px",
@@ -403,162 +400,23 @@ const ChatWindow = ({
403
400
  flexDirection: "column",
404
401
  gap: 4
405
402
  },
406
- children: /* @__PURE__ */ jsx(EllipsisLoader, {})
403
+ children: /* @__PURE__ */ jsx("p", { className: shimmerText, children: "AI thinking..." })
407
404
  }
408
405
  )
409
406
  }
410
407
  ),
411
- messages?.map((msg) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
412
- msg.type == "noti" && msg.$userType == "system" && msg.event == "escalationStarted" && /* @__PURE__ */ jsx("div", { className: notificationStyle, children: "We are connecting you with a human agent..." }, msg.$index),
413
- msg.type == "noti" && msg.$userType == "system" && msg.event == "memberLeft" && /* @__PURE__ */ jsxs("div", { className: notificationStyle, children: [
414
- /* @__PURE__ */ jsx("strong", { children: "Virtual Agent" }),
415
- " just left the conversation."
416
- ] }, msg.$index),
417
- msg.type == "noti" && msg.$userType == "system" && msg.event == "escalationAccepted" && /* @__PURE__ */ jsxs("div", { className: notificationStyle, children: [
418
- "You are now connected with a",
419
- " ",
420
- msg.to_agent ? /* @__PURE__ */ jsx("strong", { children: msg?.to_agent?.name }) : "an agent"
421
- ] }, msg.$index),
422
- msg.type == "noti" && msg.$userType == "virtual_agent" && msg.event == "escalationDeflected" && /* @__PURE__ */ jsxs(Fragment, { children: [
423
- /* @__PURE__ */ jsxs(
424
- "div",
425
- {
426
- className: notificationStyle,
427
- style: { fontSize: 12 },
428
- children: [
429
- "Our chat team is available weekdays, 8am-5pm, except federal bank holidays. For immediate assistance you can reach out to us at ",
430
- /* @__PURE__ */ jsx("a", { href: "tel:1-888-502-2967", children: "1-888-502-2967" }),
431
- "."
432
- ]
433
- },
434
- msg.$index
435
- ),
436
- /* @__PURE__ */ jsx("div", { style: { textAlign: "center", marginBottom: 12 }, children: /* @__PURE__ */ jsx(
437
- "button",
438
- {
439
- className: endChatButtonStyle,
440
- onClick: onCancelEndChat,
441
- children: "End Chat"
442
- }
443
- ) })
444
- ] }),
445
- ["text", "markdown_template", "markdown"].includes(msg.type) && /* @__PURE__ */ jsx(
446
- "div",
447
- {
448
- className: clsx(
449
- messageStyle,
450
- msg.$userType == "end_user" ? user_msg : agent_msg
451
- ),
452
- children: /* @__PURE__ */ jsxs(
453
- "div",
454
- {
455
- style: {
456
- fontSize: 14,
457
- display: "flex",
458
- flexDirection: "column",
459
- gap: 4
460
- },
461
- children: [
462
- msg.$userType == "virtual_agent" && /* @__PURE__ */ jsxs(
463
- "div",
464
- {
465
- style: {
466
- display: "flex",
467
- alignItems: "center",
468
- gap: "8px"
469
- },
470
- children: [
471
- showAvatar && /* @__PURE__ */ jsx(
472
- "img",
473
- {
474
- width: 24,
475
- height: 24,
476
- src: virtualAgent?.avatar_url,
477
- alt: "agent avatar"
478
- }
479
- ),
480
- showName && /* @__PURE__ */ jsx("strong", { children: virtualAgent?.name })
481
- ]
482
- }
483
- ),
484
- msg.$userType != "end_user" ? /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
485
- ReactMarkdown,
486
- {
487
- remarkPlugins: [[remarkGfm, { singleTilde: false }]],
488
- components: {
489
- p: ({ ...props }) => /* @__PURE__ */ jsx(
490
- "p",
491
- {
492
- style: { margin: 0, fontSize: "inherit" },
493
- title: new Date(
494
- msg.$timestamp
495
- ).toLocaleTimeString([], {
496
- hour: "2-digit",
497
- minute: "2-digit"
498
- }),
499
- ...props
500
- }
501
- )
502
- },
503
- children: msg.content
504
- }
505
- ) }) : /* @__PURE__ */ jsx(
506
- "div",
507
- {
508
- title: new Date(msg.$timestamp).toLocaleTimeString([], {
509
- hour: "2-digit",
510
- minute: "2-digit"
511
- }),
512
- children: msg.content
513
- }
514
- )
515
- ]
516
- }
517
- )
518
- },
519
- msg.$index
520
- ),
521
- msg.type == "inline_button" && Array.isArray(msg.buttons) && msg.buttons.length > 0 && /* @__PURE__ */ jsx("div", { className: inline_button_wrapper, children: msg.buttons.length !== 0 && Array.isArray(msg.buttons) && msg.buttons.map((button, index) => {
522
- return /* @__PURE__ */ jsx(
523
- "button",
524
- {
525
- className: inline_button,
526
- onClick: () => {
527
- onSend(button?.title);
528
- },
529
- children: button.title
530
- },
531
- index
532
- );
533
- }) }),
534
- msg.event == "chatEnded" && /* @__PURE__ */ jsxs(Fragment, { children: [
535
- /* @__PURE__ */ jsxs(
536
- "div",
537
- {
538
- title: (/* @__PURE__ */ new Date()).toLocaleString(),
539
- style: {
540
- fontSize: 12,
541
- color: "#888",
542
- marginBottom: 4,
543
- textAlign: "center"
544
- },
545
- children: [
546
- "Thank you for chatting!",
547
- /* @__PURE__ */ jsx("br", {}),
548
- " This conversation has ended."
549
- ]
550
- }
551
- ),
552
- /* @__PURE__ */ jsx("div", { style: { textAlign: "center", marginBottom: 12 }, children: /* @__PURE__ */ jsx(
553
- "button",
554
- {
555
- className: endChatButtonStyle,
556
- onClick: onCancelEndChat,
557
- children: "End Chat"
558
- }
559
- ) })
560
- ] })
561
- ] }, msg.$index)),
408
+ messages?.map((msg) => /* @__PURE__ */ jsx(
409
+ ChatbotMessage,
410
+ {
411
+ msg,
412
+ onSend,
413
+ showAvatar,
414
+ showName,
415
+ virtualAgent,
416
+ onCancelEndChat
417
+ },
418
+ msg?.$index
419
+ )),
562
420
  showReconnect && /* @__PURE__ */ jsx(
563
421
  "button",
564
422
  {
@@ -0,0 +1,16 @@
1
+ import { FC } from 'react';
2
+ import { MessageResponse as BaseMessageResponse, HumanAgent, VirtualAgent } from '@ujet/websdk-headless';
3
+
4
+ interface MessageResponse extends BaseMessageResponse {
5
+ to_agent?: HumanAgent;
6
+ }
7
+ interface ChatbotMessageProps {
8
+ msg: MessageResponse;
9
+ showAvatar?: boolean;
10
+ showName?: boolean;
11
+ virtualAgent?: VirtualAgent | null;
12
+ onCancelEndChat?: () => void;
13
+ onSend?: (content: string) => void;
14
+ }
15
+ export declare const ChatbotMessage: FC<ChatbotMessageProps>;
16
+ export {};
@@ -0,0 +1,189 @@
1
+ "use client";
2
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
3
+ import { useState, useEffect } from "react";
4
+ import ReactMarkdown from "react-markdown";
5
+ import remarkGfm from "remark-gfm";
6
+ import { vars } from "../themes/axos.css.js";
7
+ import '../assets/themes/victorie.css';import '../assets/themes/ufb.css';import '../assets/themes/premier.css';import '../assets/themes/axos.css';/* empty css */
8
+ /* empty css */
9
+ /* empty css */
10
+ /* empty css */
11
+ import clsx from "clsx";
12
+ import { notificationStyle, endChatButtonStyle, messageStyle, user_msg, agent_msg, inline_button_wrapper, inline_button } from "./ChatWindow.css.js";
13
+ function timeAgo(date) {
14
+ const seconds = Math.floor(((/* @__PURE__ */ new Date()).getTime() - date.getTime()) / 1e3);
15
+ if (seconds < 60) return "Just now";
16
+ return new Date(date).toLocaleTimeString([], {
17
+ hour: "2-digit",
18
+ minute: "2-digit"
19
+ });
20
+ }
21
+ const ChatbotMessage = ({
22
+ msg,
23
+ showAvatar,
24
+ showName,
25
+ virtualAgent,
26
+ onCancelEndChat,
27
+ onSend
28
+ }) => {
29
+ const [timeText, setTimeText] = useState(timeAgo(msg.$timestamp));
30
+ useEffect(() => {
31
+ const interval = setInterval(() => {
32
+ setTimeText(timeAgo(msg.$timestamp));
33
+ }, 3e4);
34
+ return () => clearInterval(interval);
35
+ }, [msg.$timestamp]);
36
+ if (msg.$sid === "typing-1") {
37
+ return /* @__PURE__ */ jsx("div", { children: "IA is thinking..." });
38
+ }
39
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
40
+ msg.type == "noti" && msg.$userType == "system" && msg.event == "escalationStarted" && /* @__PURE__ */ jsx("div", { className: notificationStyle, children: "We are connecting you with a human agent..." }, msg.$index),
41
+ msg.type == "noti" && msg.$userType == "system" && msg.event == "memberLeft" && /* @__PURE__ */ jsxs("div", { className: notificationStyle, children: [
42
+ /* @__PURE__ */ jsx("strong", { children: "Virtual Agent" }),
43
+ " just left the conversation."
44
+ ] }, msg.$index),
45
+ msg.type == "noti" && msg.$userType == "system" && msg.event == "escalationAccepted" && /* @__PURE__ */ jsxs("div", { className: notificationStyle, children: [
46
+ "You are now connected with a",
47
+ " ",
48
+ msg.to_agent ? /* @__PURE__ */ jsx("strong", { children: msg?.to_agent?.name }) : "an agent"
49
+ ] }, msg.$index),
50
+ msg.type == "noti" && msg.$userType == "virtual_agent" && msg.event == "escalationDeflected" && /* @__PURE__ */ jsxs(Fragment, { children: [
51
+ /* @__PURE__ */ jsxs(
52
+ "div",
53
+ {
54
+ className: notificationStyle,
55
+ style: { fontSize: 12 },
56
+ children: [
57
+ "Our chat team is available weekdays, 8am-5pm, except federal bank holidays. For immediate assistance you can reach out to us at",
58
+ " ",
59
+ /* @__PURE__ */ jsx("a", { href: "tel:1-888-502-2967", children: "1-888-502-2967" }),
60
+ "."
61
+ ]
62
+ },
63
+ msg.$index
64
+ ),
65
+ /* @__PURE__ */ jsx("div", { style: { textAlign: "center", marginBottom: 12 }, children: /* @__PURE__ */ jsx("button", { className: endChatButtonStyle, onClick: onCancelEndChat, children: "End Chat" }) })
66
+ ] }),
67
+ ["text", "markdown_template", "markdown"].includes(msg.type) && /* @__PURE__ */ jsx(
68
+ "div",
69
+ {
70
+ className: clsx(
71
+ messageStyle,
72
+ msg.$userType == "end_user" ? user_msg : agent_msg
73
+ ),
74
+ children: /* @__PURE__ */ jsxs(
75
+ "div",
76
+ {
77
+ style: {
78
+ fontSize: 14,
79
+ display: "flex",
80
+ flexDirection: "column",
81
+ gap: 4
82
+ },
83
+ children: [
84
+ msg.$userType == "virtual_agent" && /* @__PURE__ */ jsxs(
85
+ "div",
86
+ {
87
+ style: {
88
+ display: "flex",
89
+ alignItems: "center",
90
+ gap: "8px"
91
+ },
92
+ children: [
93
+ showAvatar && /* @__PURE__ */ jsx(
94
+ "img",
95
+ {
96
+ width: 24,
97
+ height: 24,
98
+ src: virtualAgent?.avatar_url,
99
+ alt: "agent avatar"
100
+ }
101
+ ),
102
+ showName && /* @__PURE__ */ jsx("strong", { children: virtualAgent?.name })
103
+ ]
104
+ }
105
+ ),
106
+ msg.$userType != "end_user" ? /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
107
+ ReactMarkdown,
108
+ {
109
+ remarkPlugins: [[remarkGfm, { singleTilde: false }]],
110
+ components: {
111
+ p: ({ ...props }) => /* @__PURE__ */ jsx(
112
+ "p",
113
+ {
114
+ style: { margin: 0, fontSize: "inherit" },
115
+ title: new Date(msg.$timestamp).toLocaleTimeString([], {
116
+ hour: "2-digit",
117
+ minute: "2-digit"
118
+ }),
119
+ ...props
120
+ }
121
+ )
122
+ },
123
+ children: msg.content
124
+ }
125
+ ) }) : /* @__PURE__ */ jsx(
126
+ "div",
127
+ {
128
+ title: new Date(msg.$timestamp).toLocaleTimeString([], {
129
+ hour: "2-digit",
130
+ minute: "2-digit"
131
+ }),
132
+ children: msg.content
133
+ }
134
+ )
135
+ ]
136
+ }
137
+ )
138
+ },
139
+ msg.$index
140
+ ),
141
+ msg.type == "inline_button" && Array.isArray(msg.buttons) && msg.buttons.length > 0 && /* @__PURE__ */ jsx("div", { className: inline_button_wrapper, children: msg.buttons.length !== 0 && Array.isArray(msg.buttons) && msg.buttons.map((button, index) => {
142
+ return /* @__PURE__ */ jsx(
143
+ "button",
144
+ {
145
+ className: inline_button,
146
+ onClick: () => {
147
+ onSend?.(button?.title);
148
+ },
149
+ children: button.title
150
+ },
151
+ index
152
+ );
153
+ }) }),
154
+ msg.event == "chatEnded" && /* @__PURE__ */ jsxs(Fragment, { children: [
155
+ /* @__PURE__ */ jsxs(
156
+ "div",
157
+ {
158
+ title: (/* @__PURE__ */ new Date()).toLocaleString(),
159
+ style: {
160
+ fontSize: 12,
161
+ color: "#888",
162
+ marginBottom: 4,
163
+ textAlign: "center"
164
+ },
165
+ children: [
166
+ "Thank you for chatting!",
167
+ /* @__PURE__ */ jsx("br", {}),
168
+ " This conversation has ended."
169
+ ]
170
+ }
171
+ ),
172
+ /* @__PURE__ */ jsx("div", { style: { textAlign: "center", marginBottom: 12 }, children: /* @__PURE__ */ jsx("button", { className: endChatButtonStyle, onClick: onCancelEndChat, children: "End Chat" }) })
173
+ ] }),
174
+ msg.type == "text" && /* @__PURE__ */ jsx(
175
+ "div",
176
+ {
177
+ style: {
178
+ textAlign: msg.$userType === "end_user" ? "right" : "left",
179
+ fontSize: 12,
180
+ color: vars.chatbot.window.timestampColor
181
+ },
182
+ children: timeText
183
+ }
184
+ )
185
+ ] });
186
+ };
187
+ export {
188
+ ChatbotMessage
189
+ };
@@ -4,7 +4,7 @@ import { borderHoverGradient, bubbleButton, bubbleText, bubbleWrapper, inner, sv
4
4
  import { Chatbot } from "./Chatbot.js";
5
5
  import { chatbotAXB, chatbotUFB } from "./Chatbot.css.js";
6
6
  import { ChatWindow } from "./ChatWindow.js";
7
- import { agent_msg, arrowFill, autoResize, button_bar, button_reset, buttonss_section, chatEndCircle, chatEndDialogOverlay, chatFinishDialog, chatNetworkStatus, chat_title, chatbotMenu, chatbotMenuItem, endChatButtonStyle, inline_button, inline_button_wrapper, inputStyle, left_bar_section, messageStyle, messagesContainerStyle, noAnswerButton, notificationStyle, sendButtonStyle, thankyou_image, thankyou_message, thankyou_overlay, user_msg, windowBarStyle, windowOpenStyle, windowStyle } from "./ChatWindow.css.js";
7
+ import { agent_msg, arrowFill, autoResize, button_bar, button_reset, buttonss_section, chatEndCircle, chatEndDialogOverlay, chatFinishDialog, chatNetworkStatus, chat_title, chatbotMenu, chatbotMenuItem, endChatButtonStyle, inline_button, inline_button_wrapper, inputStyle, left_bar_section, messageStyle, messagesContainerStyle, noAnswerButton, notificationStyle, sendButtonStyle, shimmerText, thankyou_image, thankyou_message, thankyou_overlay, user_msg, windowBarStyle, windowOpenStyle, windowStyle } from "./ChatWindow.css.js";
8
8
  import { useOpenChat } from "./store/chat.js";
9
9
  import { useMessages } from "./store/messages.js";
10
10
  export {
@@ -41,6 +41,7 @@ export {
41
41
  noAnswerButton,
42
42
  notificationStyle,
43
43
  sendButtonStyle,
44
+ shimmerText,
44
45
  svgFill,
45
46
  thankyou_image,
46
47
  thankyou_message,
@@ -1,7 +1,7 @@
1
1
  import { MessageResponse } from '@ujet/websdk-headless';
2
2
 
3
3
  interface MessageStore {
4
- messages: MessageResponse[];
4
+ messages: Array<MessageResponse>;
5
5
  addMessage: (message: MessageResponse) => void;
6
6
  removeMessage: (id: string) => void;
7
7
  addMessages: (newMessages: MessageResponse[]) => void;
@@ -2,9 +2,18 @@ import { create } from "zustand";
2
2
  const useMessages = create((set) => ({
3
3
  messages: [],
4
4
  addMessage: (message) => set((state) => ({ messages: [...state.messages, message] })),
5
- removeMessage: (id) => set((state) => ({
6
- messages: state.messages.filter((msg) => msg.id !== id)
7
- })),
5
+ removeMessage: (id) => (
6
+ // set((state) => ({
7
+ // messages: state.messages.filter(
8
+ // (msg) => "$sid" in msg && msg.$sid !== id
9
+ // ),
10
+ // })
11
+ setTimeout(() => {
12
+ set((state) => ({
13
+ messages: state.messages.filter((msg) => msg.$sid !== id)
14
+ }));
15
+ }, 800)
16
+ ),
8
17
  addMessages: (newMessages) => set((state) => ({ messages: [...state.messages, ...newMessages] })),
9
18
  clearMessages: () => set({ messages: [] })
10
19
  }));
@@ -34,7 +34,7 @@ const GlobalContextProvider = ({ children }) => {
34
34
  body: shortUrl(targetLinkUrl),
35
35
  onCancel: () => setOpenModal(false),
36
36
  onAccept: () => {
37
- window.open(targetLinkUrl, "_blank", "noreferrer");
37
+ window.location.href = targetLinkUrl;
38
38
  setOpenModal(false);
39
39
  }
40
40
  }
@@ -61,7 +61,7 @@ export declare const TableCell: ({ children, as, variant, highlighted, colSpan,
61
61
  is?: string | undefined;
62
62
  exportparts?: string | undefined;
63
63
  part?: string | undefined;
64
- popover?: "" | "auto" | "manual" | "hint" | undefined;
64
+ popover?: "" | "auto" | "manual" | undefined;
65
65
  popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
66
66
  popoverTarget?: string | undefined;
67
67
  onToggle?: import('react').ToggleEventHandler<HTMLTableCellElement> | undefined;
@@ -1,3 +1,11 @@
1
+ @keyframes _13n1jqku {
2
+ 0% {
3
+ background-position: -200% 0;
4
+ }
5
+ 100% {
6
+ background-position: 200% 0;
7
+ }
8
+ }
1
9
  ._13n1jqk0 {
2
10
  background: var(--_1073cm817);
3
11
  border-radius: 10px;
@@ -132,7 +140,7 @@
132
140
  ._13n1jqke {
133
141
  border-top-left-radius: 32px;
134
142
  border-top-right-radius: 32px;
135
- margin-bottom: 8px;
143
+ margin-bottom: 4px;
136
144
  max-width: 93%;
137
145
  padding: 12px 24px;
138
146
  }
@@ -287,6 +295,16 @@
287
295
  align-self: flex-start;
288
296
  border-bottom-right-radius: 32px;
289
297
  }
298
+ ._13n1jqkv {
299
+ background: linear-gradient(90deg, var(--_1073cm819) 0%, rgba(255,255,255,0.8) 50%, var(--_1073cm819) 100%);
300
+ background-size: 200% 100%;
301
+ background-clip: text;
302
+ -webkit-background-clip: text;
303
+ color: transparent;
304
+ animation: _13n1jqku 2s linear infinite;
305
+ font-weight: bold;
306
+ letter-spacing: 0.22px;
307
+ }
290
308
  @media screen and (max-width: 768px) {
291
309
  ._13n1jqk0 {
292
310
  width: 100dvw;
@@ -47,4 +47,5 @@
47
47
  --_1073cm81a: #F5F5F5;
48
48
  --_1073cm81b: #DEF4FF;
49
49
  --_1073cm81c: #E9EBEF;
50
+ --_1073cm81d: #8C8C8C;
50
51
  }
@@ -47,4 +47,5 @@
47
47
  --_1073cm81a: #F5F5F5;
48
48
  --_1073cm81b: #DEF4FF;
49
49
  --_1073cm81c: #000000;
50
+ --_1073cm81d: #1F1F1F;
50
51
  }
@@ -47,4 +47,5 @@
47
47
  --_1073cm81a: #EDEEF0;
48
48
  --_1073cm81b: #FFF8F6;
49
49
  --_1073cm81c: #000000;
50
+ --_1073cm81d: #000000;
50
51
  }
@@ -47,4 +47,5 @@
47
47
  --_1073cm81a: #F5F5F5;
48
48
  --_1073cm81b: #DEF4FF;
49
49
  --_1073cm81c: #000000;
50
+ --_1073cm81d: #1F1F1F;
50
51
  }
package/dist/main.js CHANGED
@@ -42,7 +42,7 @@ import { borderHoverGradient, bubbleButton, bubbleText, bubbleWrapper, inner, sv
42
42
  import { Chatbot } from "./Chatbot/Chatbot.js";
43
43
  import { chatbotAXB, chatbotUFB } from "./Chatbot/Chatbot.css.js";
44
44
  import { ChatWindow } from "./Chatbot/ChatWindow.js";
45
- import { agent_msg, arrowFill, autoResize, button_bar, button_reset, buttonss_section, chatEndCircle, chatEndDialogOverlay, chatFinishDialog, chatNetworkStatus, chat_title, chatbotMenu, chatbotMenuItem, endChatButtonStyle, inline_button, inline_button_wrapper, inputStyle, left_bar_section, messageStyle, messagesContainerStyle, noAnswerButton, notificationStyle, sendButtonStyle, thankyou_image, thankyou_message, thankyou_overlay, user_msg, windowBarStyle, windowOpenStyle, windowStyle } from "./Chatbot/ChatWindow.css.js";
45
+ import { agent_msg, arrowFill, autoResize, button_bar, button_reset, buttonss_section, chatEndCircle, chatEndDialogOverlay, chatFinishDialog, chatNetworkStatus, chat_title, chatbotMenu, chatbotMenuItem, endChatButtonStyle, inline_button, inline_button_wrapper, inputStyle, left_bar_section, messageStyle, messagesContainerStyle, noAnswerButton, notificationStyle, sendButtonStyle, shimmerText, thankyou_image, thankyou_message, thankyou_overlay, user_msg, windowBarStyle, windowOpenStyle, windowStyle } from "./Chatbot/ChatWindow.css.js";
46
46
  import { useOpenChat } from "./Chatbot/store/chat.js";
47
47
  import { useMessages } from "./Chatbot/store/messages.js";
48
48
  import { Chevron } from "./Chevron/index.js";
@@ -763,6 +763,7 @@ export {
763
763
  set_logo,
764
764
  setcontainer_section_text,
765
765
  shift,
766
+ shimmerText,
766
767
  shortUrl,
767
768
  show,
768
769
  show_options,
@@ -77,6 +77,7 @@ export declare const axosTheme: string, vars: {
77
77
  agentBackground: `var(--${string})`;
78
78
  userBackground: `var(--${string})`;
79
79
  inputBorder: `var(--${string})`;
80
+ timestampColor: `var(--${string})`;
80
81
  };
81
82
  };
82
83
  };
@@ -1,6 +1,6 @@
1
1
  import '../assets/themes/axos.css';/* empty css */
2
2
  var axosTheme = "_1073cm80";
3
- var vars = { colors: { primary: { background: "var(--_1073cm81)", backgroundButton: "var(--_1073cm82)", body: "var(--_1073cm83)", border: "var(--_1073cm84)", headline: "var(--_1073cm85)", textButton: "var(--_1073cm86)", textGradient: "var(--_1073cm87)" }, secondary: { background: "var(--_1073cm88)", backgroundButton: "var(--_1073cm89)", body: "var(--_1073cm8a)", border: "var(--_1073cm8b)", headline: "var(--_1073cm8c)", textButton: "var(--_1073cm8d)", textGradient: "var(--_1073cm8e)" }, tertiary: { background: "var(--_1073cm8f)", backgroundButton: "var(--_1073cm8g)", body: "var(--_1073cm8h)", border: "var(--_1073cm8i)", headline: "var(--_1073cm8j)", textButton: "var(--_1073cm8k)", textGradient: "var(--_1073cm8l)" }, quaternary: { background: "var(--_1073cm8m)", backgroundButton: "var(--_1073cm8n)", body: "var(--_1073cm8o)", border: "var(--_1073cm8p)", headline: "var(--_1073cm8q)", textButton: "var(--_1073cm8r)", textGradient: "var(--_1073cm8s)" } }, error: "var(--_1073cm8t)", disabled: { border: "var(--_1073cm8u)", color: "var(--_1073cm8v)", background: "var(--_1073cm8w)" }, icons: { check: { primary: "var(--_1073cm8x)", secondary: "var(--_1073cm8y)" } }, table: { highlight: "var(--_1073cm8z)", color: "var(--_1073cm810)" }, footer: { link: { color: "var(--_1073cm811)" } }, selecction: { icon: { color: "var(--_1073cm812)" } }, chatbot: { bubble: { background: "var(--_1073cm813)", border: "var(--_1073cm814)", borderGradient: "var(--_1073cm815)", icon: "var(--_1073cm816)" }, window: { background: "var(--_1073cm817)", headerBackground: "var(--_1073cm818)", headerText: "var(--_1073cm819)", agentBackground: "var(--_1073cm81a)", userBackground: "var(--_1073cm81b)", inputBorder: "var(--_1073cm81c)" } } };
3
+ var vars = { colors: { primary: { background: "var(--_1073cm81)", backgroundButton: "var(--_1073cm82)", body: "var(--_1073cm83)", border: "var(--_1073cm84)", headline: "var(--_1073cm85)", textButton: "var(--_1073cm86)", textGradient: "var(--_1073cm87)" }, secondary: { background: "var(--_1073cm88)", backgroundButton: "var(--_1073cm89)", body: "var(--_1073cm8a)", border: "var(--_1073cm8b)", headline: "var(--_1073cm8c)", textButton: "var(--_1073cm8d)", textGradient: "var(--_1073cm8e)" }, tertiary: { background: "var(--_1073cm8f)", backgroundButton: "var(--_1073cm8g)", body: "var(--_1073cm8h)", border: "var(--_1073cm8i)", headline: "var(--_1073cm8j)", textButton: "var(--_1073cm8k)", textGradient: "var(--_1073cm8l)" }, quaternary: { background: "var(--_1073cm8m)", backgroundButton: "var(--_1073cm8n)", body: "var(--_1073cm8o)", border: "var(--_1073cm8p)", headline: "var(--_1073cm8q)", textButton: "var(--_1073cm8r)", textGradient: "var(--_1073cm8s)" } }, error: "var(--_1073cm8t)", disabled: { border: "var(--_1073cm8u)", color: "var(--_1073cm8v)", background: "var(--_1073cm8w)" }, icons: { check: { primary: "var(--_1073cm8x)", secondary: "var(--_1073cm8y)" } }, table: { highlight: "var(--_1073cm8z)", color: "var(--_1073cm810)" }, footer: { link: { color: "var(--_1073cm811)" } }, selecction: { icon: { color: "var(--_1073cm812)" } }, chatbot: { bubble: { background: "var(--_1073cm813)", border: "var(--_1073cm814)", borderGradient: "var(--_1073cm815)", icon: "var(--_1073cm816)" }, window: { background: "var(--_1073cm817)", headerBackground: "var(--_1073cm818)", headerText: "var(--_1073cm819)", agentBackground: "var(--_1073cm81a)", userBackground: "var(--_1073cm81b)", inputBorder: "var(--_1073cm81c)", timestampColor: "var(--_1073cm81d)" } } };
4
4
  export {
5
5
  axosTheme,
6
6
  vars
package/package.json CHANGED
@@ -1,136 +1,136 @@
1
- {
2
- "name": "@axos-web-dev/shared-components",
3
- "description": "Axos shared components library for web.",
4
- "version": "1.0.100-dev.53-chat-revamp.2",
5
- "type": "module",
6
- "module": "dist/main.js",
7
- "types": "dist/main.d.ts",
8
- "files": [
9
- "dist"
10
- ],
11
- "sideEffects": [
12
- "dist/assets/**/*.css"
13
- ],
14
- "scripts": {
15
- "dev": "vite",
16
- "build": "tsc --p ./tsconfig.build.json && vite build",
17
- "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
18
- "preview": "vite preview",
19
- "prepublishOnly": "npm run build",
20
- "check-types": "tsc --pretty --noEmit",
21
- "check-format": "prettier --check .",
22
- "check-lint": "eslint . --ext ts --ext tsx --ext js",
23
- "format": "prettier --write .",
24
- "test-all": "npm run check-format && npm run check-lint && npm run check-types && npm run build",
25
- "prepare": "husky",
26
- "storybook": "storybook dev -p 6006",
27
- "build-storybook": "storybook build",
28
- "npm:link": "npm run build && npm link"
29
- },
30
- "dependencies": {
31
- "@headlessui/react": "^2.2.0",
32
- "@hookform/resolvers": "^3.10.0",
33
- "@next-safe-action/adapter-react-hook-form": "^2.0.0",
34
- "@react-input/mask": "^1.2.15",
35
- "@react-input/number-format": "^1.1.3",
36
- "@storybook/icons": "^1.3.0",
37
- "@storybook/preview-api": "^8.4.7",
38
- "@ts-stack/markdown": "^1.5.0",
39
- "@types/iframe-resizer": "3.5.13",
40
- "@ujet/websdk-headless": "^3.41.4",
41
- "@vanilla-extract/css": "^1.16.1",
42
- "@vanilla-extract/recipes": "^0.5.1",
43
- "antd": "^5.22.5",
44
- "clsx": "^2.1.1",
45
- "framer-motion": "^12.9.2",
46
- "iframe-resizer": "^3.6.6",
47
- "lodash": "^4.17.21",
48
- "moment": "^2.30.1",
49
- "next-safe-action": "^8.0.2",
50
- "react-date-picker": "^11.0.0",
51
- "react-date-range": "^2.0.1",
52
- "react-hook-form": "^7.54.2",
53
- "react-markdown": "^9.1.0",
54
- "react-popper": "^2.3.0",
55
- "react-slick": "^0.30.2",
56
- "react-use": "^17.6.0",
57
- "react-wrap-balancer": "^1.1.1",
58
- "remark-gfm": "^4.0.1",
59
- "rsuite": "^5.75.0",
60
- "slick-carousel": "^1.8.1",
61
- "typed-css-modules": "^0.9.1",
62
- "vite-plugin-svgr": "^4.3.0",
63
- "zod": "^3.24.1",
64
- "zustand": "^4.5.5"
65
- },
66
- "peerDependencies": {
67
- "@vanilla-extract/css-utils": "^0.1.3",
68
- "@vanilla-extract/recipes": "^0.5.1",
69
- "@vanilla-extract/vite-plugin": "^4.0.3",
70
- "next": "^14.1.4",
71
- "react": "^18.2.0",
72
- "react-date-range": "^2.0.1",
73
- "react-dom": "^18.2.0",
74
- "react-popper": "^2.3.0",
75
- "react-slick": "^0.30.2",
76
- "slick-carousel": "^1.8.1"
77
- },
78
- "devDependencies": {
79
- "@chromatic-com/storybook": "^1.9.0",
80
- "@rollup/plugin-alias": "^5.1.1",
81
- "@storybook/addon-essentials": "^8.4.7",
82
- "@storybook/addon-interactions": "^8.4.7",
83
- "@storybook/addon-links": "^8.4.7",
84
- "@storybook/addon-mdx-gfm": "^8.4.7",
85
- "@storybook/addon-onboarding": "^8.4.7",
86
- "@storybook/addon-themes": "^8.4.7",
87
- "@storybook/blocks": "^8.4.7",
88
- "@storybook/react": "^8.6.14",
89
- "@storybook/react-vite": "^8.4.7",
90
- "@storybook/test": "^8.6.14",
91
- "@svgr/core": "^8.1.0",
92
- "@svgr/plugin-prettier": "^8.1.0",
93
- "@svgr/plugin-svgo": "^8.1.0",
94
- "@types/lodash": "^4.17.17",
95
- "@types/node": "^20.19.0",
96
- "@types/react": "^18.3.23",
97
- "@types/react-date-range": "^1.4.9",
98
- "@types/react-datepicker": "^6.2.0",
99
- "@types/react-dom": "^18.3.7",
100
- "@types/react-slick": "^0.23.13",
101
- "@typescript-eslint/eslint-plugin": "^7.18.0",
102
- "@typescript-eslint/parser": "^7.18.0",
103
- "@vanilla-extract/css-utils": "^0.1.4",
104
- "@vanilla-extract/recipes": "^0.5.5",
105
- "@vanilla-extract/vite-plugin": "^4.0.18",
106
- "@vitejs/plugin-react-swc": "^3.7.2",
107
- "esbuild-vanilla-image-loader": "^0.1.3",
108
- "eslint": "^8.57.1",
109
- "eslint-plugin-react-hooks": "^4.6.2",
110
- "eslint-plugin-react-refresh": "^0.4.16",
111
- "eslint-plugin-storybook": "^0.8.0",
112
- "glob": "^10.4.5",
113
- "husky": "^9.1.7",
114
- "next": "^14.1.4",
115
- "prettier": "3.2.5",
116
- "react": "^18.3.1",
117
- "react-dom": "^18.3.1",
118
- "rollup-plugin-preserve-directives": "^0.4.0",
119
- "rollup-plugin-svg-import": "^3.0.0",
120
- "rollup-plugin-svgo": "^2.0.0",
121
- "storybook": "^8.4.7",
122
- "typescript": "^5.7.2",
123
- "typescript-plugin-css-modules": "^5.1.0",
124
- "vite": "^5.4.11",
125
- "vite-plugin-dts": "^3.9.1",
126
- "vite-plugin-lib-inject-css": "^2.1.1",
127
- "vite-plugin-setting-css-module": "^1.1.4",
128
- "vite-tsconfig-paths": "^4.3.2"
129
- },
130
- "main": "index.js",
131
- "directories": {
132
- "lib": "lib"
133
- },
134
- "author": "axos-web-dev",
135
- "license": "ISC"
136
- }
1
+ {
2
+ "name": "@axos-web-dev/shared-components",
3
+ "description": "Axos shared components library for web.",
4
+ "version": "1.0.100-dev.53-speedbumpextlinks",
5
+ "type": "module",
6
+ "module": "dist/main.js",
7
+ "types": "dist/main.d.ts",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "sideEffects": [
12
+ "dist/assets/**/*.css"
13
+ ],
14
+ "scripts": {
15
+ "dev": "vite",
16
+ "build": "tsc --p ./tsconfig.build.json && vite build",
17
+ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
18
+ "preview": "vite preview",
19
+ "prepublishOnly": "npm run build",
20
+ "check-types": "tsc --pretty --noEmit",
21
+ "check-format": "prettier --check .",
22
+ "check-lint": "eslint . --ext ts --ext tsx --ext js",
23
+ "format": "prettier --write .",
24
+ "test-all": "npm run check-format && npm run check-lint && npm run check-types && npm run build",
25
+ "prepare": "husky",
26
+ "storybook": "storybook dev -p 6006",
27
+ "build-storybook": "storybook build",
28
+ "npm:link": "npm run build && npm link"
29
+ },
30
+ "dependencies": {
31
+ "@headlessui/react": "^2.2.0",
32
+ "@hookform/resolvers": "^3.10.0",
33
+ "@next-safe-action/adapter-react-hook-form": "^2.0.0",
34
+ "@react-input/mask": "^1.2.15",
35
+ "@react-input/number-format": "^1.1.3",
36
+ "@storybook/icons": "^1.3.0",
37
+ "@storybook/preview-api": "^8.4.7",
38
+ "@ts-stack/markdown": "^1.5.0",
39
+ "@types/iframe-resizer": "3.5.13",
40
+ "@ujet/websdk-headless": "^3.41.4",
41
+ "@vanilla-extract/css": "^1.16.1",
42
+ "@vanilla-extract/recipes": "^0.5.1",
43
+ "antd": "^5.22.5",
44
+ "clsx": "^2.1.1",
45
+ "framer-motion": "^12.9.2",
46
+ "iframe-resizer": "^3.6.6",
47
+ "lodash": "^4.17.21",
48
+ "moment": "^2.30.1",
49
+ "next-safe-action": "^8.0.2",
50
+ "react-date-picker": "^11.0.0",
51
+ "react-date-range": "^2.0.1",
52
+ "react-hook-form": "^7.54.2",
53
+ "react-markdown": "^9.1.0",
54
+ "react-popper": "^2.3.0",
55
+ "react-slick": "^0.30.2",
56
+ "react-use": "^17.6.0",
57
+ "react-wrap-balancer": "^1.1.1",
58
+ "remark-gfm": "^4.0.1",
59
+ "rsuite": "^5.75.0",
60
+ "slick-carousel": "^1.8.1",
61
+ "typed-css-modules": "^0.9.1",
62
+ "vite-plugin-svgr": "^4.3.0",
63
+ "zod": "^3.24.1",
64
+ "zustand": "^4.5.5"
65
+ },
66
+ "peerDependencies": {
67
+ "@vanilla-extract/css-utils": "^0.1.3",
68
+ "@vanilla-extract/recipes": "^0.5.1",
69
+ "@vanilla-extract/vite-plugin": "^4.0.3",
70
+ "next": "^14.1.4",
71
+ "react": "^18.2.0",
72
+ "react-date-range": "^2.0.1",
73
+ "react-dom": "^18.2.0",
74
+ "react-popper": "^2.3.0",
75
+ "react-slick": "^0.30.2",
76
+ "slick-carousel": "^1.8.1"
77
+ },
78
+ "devDependencies": {
79
+ "@chromatic-com/storybook": "^1.9.0",
80
+ "@rollup/plugin-alias": "^5.1.1",
81
+ "@storybook/addon-essentials": "^8.4.7",
82
+ "@storybook/addon-interactions": "^8.4.7",
83
+ "@storybook/addon-links": "^8.4.7",
84
+ "@storybook/addon-mdx-gfm": "^8.4.7",
85
+ "@storybook/addon-onboarding": "^8.4.7",
86
+ "@storybook/addon-themes": "^8.4.7",
87
+ "@storybook/blocks": "^8.4.7",
88
+ "@storybook/react": "^8.6.14",
89
+ "@storybook/react-vite": "^8.4.7",
90
+ "@storybook/test": "^8.6.14",
91
+ "@svgr/core": "^8.1.0",
92
+ "@svgr/plugin-prettier": "^8.1.0",
93
+ "@svgr/plugin-svgo": "^8.1.0",
94
+ "@types/lodash": "^4.17.17",
95
+ "@types/node": "^20.19.0",
96
+ "@types/react": "^18.3.23",
97
+ "@types/react-date-range": "^1.4.9",
98
+ "@types/react-datepicker": "^6.2.0",
99
+ "@types/react-dom": "^18.3.7",
100
+ "@types/react-slick": "^0.23.13",
101
+ "@typescript-eslint/eslint-plugin": "^7.18.0",
102
+ "@typescript-eslint/parser": "^7.18.0",
103
+ "@vanilla-extract/css-utils": "^0.1.4",
104
+ "@vanilla-extract/recipes": "^0.5.5",
105
+ "@vanilla-extract/vite-plugin": "^4.0.18",
106
+ "@vitejs/plugin-react-swc": "^3.7.2",
107
+ "esbuild-vanilla-image-loader": "^0.1.3",
108
+ "eslint": "^8.57.1",
109
+ "eslint-plugin-react-hooks": "^4.6.2",
110
+ "eslint-plugin-react-refresh": "^0.4.16",
111
+ "eslint-plugin-storybook": "^0.8.0",
112
+ "glob": "^10.4.5",
113
+ "husky": "^9.1.7",
114
+ "next": "^14.1.4",
115
+ "prettier": "3.2.5",
116
+ "react": "^18.3.1",
117
+ "react-dom": "^18.3.1",
118
+ "rollup-plugin-preserve-directives": "^0.4.0",
119
+ "rollup-plugin-svg-import": "^3.0.0",
120
+ "rollup-plugin-svgo": "^2.0.0",
121
+ "storybook": "^8.4.7",
122
+ "typescript": "^5.7.2",
123
+ "typescript-plugin-css-modules": "^5.1.0",
124
+ "vite": "^5.4.11",
125
+ "vite-plugin-dts": "^3.9.1",
126
+ "vite-plugin-lib-inject-css": "^2.1.1",
127
+ "vite-plugin-setting-css-module": "^1.1.4",
128
+ "vite-tsconfig-paths": "^4.3.2"
129
+ },
130
+ "main": "index.js",
131
+ "directories": {
132
+ "lib": "lib"
133
+ },
134
+ "author": "axos-web-dev",
135
+ "license": "ISC"
136
+ }