rohit-chat-widget 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +455 -0
- package/lib/components/ChatContainer/ChatContainer.d.ts +10 -0
- package/lib/components/ChatContainer/ChatContainer.d.ts.map +1 -0
- package/lib/components/ChatContainer/ChatContainer.js +9 -0
- package/lib/components/ChatContainer/ChatContainer.js.map +1 -0
- package/lib/components/ChatContainer/index.d.ts +2 -0
- package/lib/components/ChatContainer/index.d.ts.map +1 -0
- package/lib/components/ChatContainer/index.js +2 -0
- package/lib/components/ChatContainer/index.js.map +1 -0
- package/lib/components/ChatHeader/ChatHeader.d.ts +12 -0
- package/lib/components/ChatHeader/ChatHeader.d.ts.map +1 -0
- package/lib/components/ChatHeader/ChatHeader.js +25 -0
- package/lib/components/ChatHeader/ChatHeader.js.map +1 -0
- package/lib/components/ChatHeader/index.d.ts +2 -0
- package/lib/components/ChatHeader/index.d.ts.map +1 -0
- package/lib/components/ChatHeader/index.js +2 -0
- package/lib/components/ChatHeader/index.js.map +1 -0
- package/lib/components/ChatWidget/ChatWidget.d.ts +13 -0
- package/lib/components/ChatWidget/ChatWidget.d.ts.map +1 -0
- package/lib/components/ChatWidget/ChatWidget.js +69 -0
- package/lib/components/ChatWidget/ChatWidget.js.map +1 -0
- package/lib/components/ChatWidget/index.d.ts +2 -0
- package/lib/components/ChatWidget/index.d.ts.map +1 -0
- package/lib/components/ChatWidget/index.js +2 -0
- package/lib/components/ChatWidget/index.js.map +1 -0
- package/lib/components/DropdownMenu/DropdownMenu.d.ts +16 -0
- package/lib/components/DropdownMenu/DropdownMenu.d.ts.map +1 -0
- package/lib/components/DropdownMenu/DropdownMenu.js +78 -0
- package/lib/components/DropdownMenu/DropdownMenu.js.map +1 -0
- package/lib/components/DropdownMenu/index.d.ts +3 -0
- package/lib/components/DropdownMenu/index.d.ts.map +1 -0
- package/lib/components/DropdownMenu/index.js +2 -0
- package/lib/components/DropdownMenu/index.js.map +1 -0
- package/lib/components/ErrorBoundary/ErrorBoundary.d.ts +21 -0
- package/lib/components/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
- package/lib/components/ErrorBoundary/ErrorBoundary.js +40 -0
- package/lib/components/ErrorBoundary/ErrorBoundary.js.map +1 -0
- package/lib/components/ErrorBoundary/index.d.ts +2 -0
- package/lib/components/ErrorBoundary/index.d.ts.map +1 -0
- package/lib/components/ErrorBoundary/index.js +2 -0
- package/lib/components/ErrorBoundary/index.js.map +1 -0
- package/lib/components/ErrorDisplay/ErrorDisplay.d.ts +9 -0
- package/lib/components/ErrorDisplay/ErrorDisplay.d.ts.map +1 -0
- package/lib/components/ErrorDisplay/ErrorDisplay.js +11 -0
- package/lib/components/ErrorDisplay/ErrorDisplay.js.map +1 -0
- package/lib/components/ErrorDisplay/index.d.ts +3 -0
- package/lib/components/ErrorDisplay/index.d.ts.map +1 -0
- package/lib/components/ErrorDisplay/index.js +3 -0
- package/lib/components/ErrorDisplay/index.js.map +1 -0
- package/lib/components/LoadingIndicator/LoadingIndicator.d.ts +10 -0
- package/lib/components/LoadingIndicator/LoadingIndicator.d.ts.map +1 -0
- package/lib/components/LoadingIndicator/LoadingIndicator.js +10 -0
- package/lib/components/LoadingIndicator/LoadingIndicator.js.map +1 -0
- package/lib/components/LoadingIndicator/index.d.ts +2 -0
- package/lib/components/LoadingIndicator/index.d.ts.map +1 -0
- package/lib/components/LoadingIndicator/index.js +3 -0
- package/lib/components/LoadingIndicator/index.js.map +1 -0
- package/lib/components/MenuButton/MenuButton.d.ts +10 -0
- package/lib/components/MenuButton/MenuButton.d.ts.map +1 -0
- package/lib/components/MenuButton/MenuButton.js +7 -0
- package/lib/components/MenuButton/MenuButton.js.map +1 -0
- package/lib/components/MenuButton/index.d.ts +2 -0
- package/lib/components/MenuButton/index.d.ts.map +1 -0
- package/lib/components/MenuButton/index.js +2 -0
- package/lib/components/MenuButton/index.js.map +1 -0
- package/lib/components/MenuItem/MenuItem.d.ts +12 -0
- package/lib/components/MenuItem/MenuItem.d.ts.map +1 -0
- package/lib/components/MenuItem/MenuItem.js +12 -0
- package/lib/components/MenuItem/MenuItem.js.map +1 -0
- package/lib/components/MenuItem/index.d.ts +2 -0
- package/lib/components/MenuItem/index.d.ts.map +1 -0
- package/lib/components/MenuItem/index.js +2 -0
- package/lib/components/MenuItem/index.js.map +1 -0
- package/lib/components/MessageBubble/MessageBubble.d.ts +17 -0
- package/lib/components/MessageBubble/MessageBubble.d.ts.map +1 -0
- package/lib/components/MessageBubble/MessageBubble.js +111 -0
- package/lib/components/MessageBubble/MessageBubble.js.map +1 -0
- package/lib/components/MessageBubble/index.d.ts +2 -0
- package/lib/components/MessageBubble/index.d.ts.map +1 -0
- package/lib/components/MessageBubble/index.js +2 -0
- package/lib/components/MessageBubble/index.js.map +1 -0
- package/lib/components/MessageInput/MessageInput.d.ts +9 -0
- package/lib/components/MessageInput/MessageInput.d.ts.map +1 -0
- package/lib/components/MessageInput/MessageInput.js +75 -0
- package/lib/components/MessageInput/MessageInput.js.map +1 -0
- package/lib/components/MessageInput/index.d.ts +2 -0
- package/lib/components/MessageInput/index.d.ts.map +1 -0
- package/lib/components/MessageInput/index.js +2 -0
- package/lib/components/MessageInput/index.js.map +1 -0
- package/lib/components/MessageList/MessageList.d.ts +21 -0
- package/lib/components/MessageList/MessageList.d.ts.map +1 -0
- package/lib/components/MessageList/MessageList.js +61 -0
- package/lib/components/MessageList/MessageList.js.map +1 -0
- package/lib/components/MessageList/index.d.ts +2 -0
- package/lib/components/MessageList/index.d.ts.map +1 -0
- package/lib/components/MessageList/index.js +2 -0
- package/lib/components/MessageList/index.js.map +1 -0
- package/lib/components/StatusIndicator/StatusIndicator.d.ts +10 -0
- package/lib/components/StatusIndicator/StatusIndicator.d.ts.map +1 -0
- package/lib/components/StatusIndicator/StatusIndicator.js +19 -0
- package/lib/components/StatusIndicator/StatusIndicator.js.map +1 -0
- package/lib/components/StatusIndicator/index.d.ts +2 -0
- package/lib/components/StatusIndicator/index.d.ts.map +1 -0
- package/lib/components/StatusIndicator/index.js +2 -0
- package/lib/components/StatusIndicator/index.js.map +1 -0
- package/lib/components/index.d.ts +21 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/index.js +13 -0
- package/lib/components/index.js.map +1 -0
- package/lib/config/api.d.ts +79 -0
- package/lib/config/api.d.ts.map +1 -0
- package/lib/config/api.js +10 -0
- package/lib/config/api.js.map +1 -0
- package/lib/config/constants.d.ts +5 -0
- package/lib/config/constants.d.ts.map +1 -0
- package/lib/config/constants.js +5 -0
- package/lib/config/constants.js.map +1 -0
- package/lib/hooks/index.d.ts +2 -0
- package/lib/hooks/index.d.ts.map +1 -0
- package/lib/hooks/index.js +2 -0
- package/lib/hooks/index.js.map +1 -0
- package/lib/hooks/useChatInit.d.ts +21 -0
- package/lib/hooks/useChatInit.d.ts.map +1 -0
- package/lib/hooks/useChatInit.js +66 -0
- package/lib/hooks/useChatInit.js.map +1 -0
- package/lib/index.d.ts +14 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.esm.js +21148 -0
- package/lib/index.esm.js.map +1 -0
- package/lib/index.js +16 -0
- package/lib/index.js.map +1 -0
- package/lib/services/acs/acsClient.d.ts +29 -0
- package/lib/services/acs/acsClient.d.ts.map +1 -0
- package/lib/services/acs/acsClient.js +101 -0
- package/lib/services/acs/acsClient.js.map +1 -0
- package/lib/services/acs/index.d.ts +2 -0
- package/lib/services/acs/index.d.ts.map +1 -0
- package/lib/services/acs/index.js +2 -0
- package/lib/services/acs/index.js.map +1 -0
- package/lib/services/api/backendApi.d.ts +842 -0
- package/lib/services/api/backendApi.d.ts.map +1 -0
- package/lib/services/api/backendApi.js +70 -0
- package/lib/services/api/backendApi.js.map +1 -0
- package/lib/services/api/index.d.ts +3 -0
- package/lib/services/api/index.d.ts.map +1 -0
- package/lib/services/api/index.js +3 -0
- package/lib/services/api/index.js.map +1 -0
- package/lib/services/chatService.d.ts +51 -0
- package/lib/services/chatService.d.ts.map +1 -0
- package/lib/services/chatService.js +232 -0
- package/lib/services/chatService.js.map +1 -0
- package/lib/services/index.d.ts +4 -0
- package/lib/services/index.d.ts.map +1 -0
- package/lib/services/index.js +4 -0
- package/lib/services/index.js.map +1 -0
- package/lib/src/components/ChatContainer/ChatContainer.d.ts +10 -0
- package/lib/src/components/ChatContainer/ChatContainer.d.ts.map +1 -0
- package/lib/src/components/ChatContainer/index.d.ts +2 -0
- package/lib/src/components/ChatContainer/index.d.ts.map +1 -0
- package/lib/src/components/ChatHeader/ChatHeader.d.ts +12 -0
- package/lib/src/components/ChatHeader/ChatHeader.d.ts.map +1 -0
- package/lib/src/components/ChatHeader/index.d.ts +2 -0
- package/lib/src/components/ChatHeader/index.d.ts.map +1 -0
- package/lib/src/components/ChatWidget/ChatWidget.d.ts +13 -0
- package/lib/src/components/ChatWidget/ChatWidget.d.ts.map +1 -0
- package/lib/src/components/ChatWidget/index.d.ts +2 -0
- package/lib/src/components/ChatWidget/index.d.ts.map +1 -0
- package/lib/src/components/DropdownMenu/DropdownMenu.d.ts +16 -0
- package/lib/src/components/DropdownMenu/DropdownMenu.d.ts.map +1 -0
- package/lib/src/components/DropdownMenu/index.d.ts +3 -0
- package/lib/src/components/DropdownMenu/index.d.ts.map +1 -0
- package/lib/src/components/ErrorBoundary/ErrorBoundary.d.ts +21 -0
- package/lib/src/components/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
- package/lib/src/components/ErrorBoundary/index.d.ts +2 -0
- package/lib/src/components/ErrorBoundary/index.d.ts.map +1 -0
- package/lib/src/components/ErrorDisplay/ErrorDisplay.d.ts +9 -0
- package/lib/src/components/ErrorDisplay/ErrorDisplay.d.ts.map +1 -0
- package/lib/src/components/ErrorDisplay/index.d.ts +3 -0
- package/lib/src/components/ErrorDisplay/index.d.ts.map +1 -0
- package/lib/src/components/LoadingIndicator/LoadingIndicator.d.ts +10 -0
- package/lib/src/components/LoadingIndicator/LoadingIndicator.d.ts.map +1 -0
- package/lib/src/components/LoadingIndicator/index.d.ts +2 -0
- package/lib/src/components/LoadingIndicator/index.d.ts.map +1 -0
- package/lib/src/components/MenuButton/MenuButton.d.ts +10 -0
- package/lib/src/components/MenuButton/MenuButton.d.ts.map +1 -0
- package/lib/src/components/MenuButton/index.d.ts +2 -0
- package/lib/src/components/MenuButton/index.d.ts.map +1 -0
- package/lib/src/components/MenuItem/MenuItem.d.ts +12 -0
- package/lib/src/components/MenuItem/MenuItem.d.ts.map +1 -0
- package/lib/src/components/MenuItem/index.d.ts +2 -0
- package/lib/src/components/MenuItem/index.d.ts.map +1 -0
- package/lib/src/components/MessageBubble/MessageBubble.d.ts +17 -0
- package/lib/src/components/MessageBubble/MessageBubble.d.ts.map +1 -0
- package/lib/src/components/MessageBubble/index.d.ts +2 -0
- package/lib/src/components/MessageBubble/index.d.ts.map +1 -0
- package/lib/src/components/MessageInput/MessageInput.d.ts +9 -0
- package/lib/src/components/MessageInput/MessageInput.d.ts.map +1 -0
- package/lib/src/components/MessageInput/index.d.ts +2 -0
- package/lib/src/components/MessageInput/index.d.ts.map +1 -0
- package/lib/src/components/MessageList/MessageList.d.ts +21 -0
- package/lib/src/components/MessageList/MessageList.d.ts.map +1 -0
- package/lib/src/components/MessageList/index.d.ts +2 -0
- package/lib/src/components/MessageList/index.d.ts.map +1 -0
- package/lib/src/components/StatusIndicator/StatusIndicator.d.ts +10 -0
- package/lib/src/components/StatusIndicator/StatusIndicator.d.ts.map +1 -0
- package/lib/src/components/StatusIndicator/index.d.ts +2 -0
- package/lib/src/components/StatusIndicator/index.d.ts.map +1 -0
- package/lib/src/components/index.d.ts +21 -0
- package/lib/src/components/index.d.ts.map +1 -0
- package/lib/src/config/api.d.ts +79 -0
- package/lib/src/config/api.d.ts.map +1 -0
- package/lib/src/config/constants.d.ts +5 -0
- package/lib/src/config/constants.d.ts.map +1 -0
- package/lib/src/hooks/index.d.ts +2 -0
- package/lib/src/hooks/index.d.ts.map +1 -0
- package/lib/src/hooks/useChatInit.d.ts +21 -0
- package/lib/src/hooks/useChatInit.d.ts.map +1 -0
- package/lib/src/index.d.ts +14 -0
- package/lib/src/index.d.ts.map +1 -0
- package/lib/src/services/acs/acsClient.d.ts +29 -0
- package/lib/src/services/acs/acsClient.d.ts.map +1 -0
- package/lib/src/services/acs/index.d.ts +2 -0
- package/lib/src/services/acs/index.d.ts.map +1 -0
- package/lib/src/services/api/backendApi.d.ts +842 -0
- package/lib/src/services/api/backendApi.d.ts.map +1 -0
- package/lib/src/services/api/index.d.ts +3 -0
- package/lib/src/services/api/index.d.ts.map +1 -0
- package/lib/src/services/chatService.d.ts +51 -0
- package/lib/src/services/chatService.d.ts.map +1 -0
- package/lib/src/services/index.d.ts +4 -0
- package/lib/src/services/index.d.ts.map +1 -0
- package/lib/src/store/index.d.ts +36 -0
- package/lib/src/store/index.d.ts.map +1 -0
- package/lib/src/store/slices/index.d.ts +5 -0
- package/lib/src/store/slices/index.d.ts.map +1 -0
- package/lib/src/store/slices/messagesSlice.d.ts +73 -0
- package/lib/src/store/slices/messagesSlice.d.ts.map +1 -0
- package/lib/src/store/slices/threadSlice.d.ts +42 -0
- package/lib/src/store/slices/threadSlice.d.ts.map +1 -0
- package/lib/src/store/store.d.ts +36 -0
- package/lib/src/store/store.d.ts.map +1 -0
- package/lib/src/types/index.d.ts +29 -0
- package/lib/src/types/index.d.ts.map +1 -0
- package/lib/src/utils/dateUtils.d.ts +13 -0
- package/lib/src/utils/dateUtils.d.ts.map +1 -0
- package/lib/src/utils/index.d.ts +4 -0
- package/lib/src/utils/index.d.ts.map +1 -0
- package/lib/src/utils/styleManager.d.ts +45 -0
- package/lib/src/utils/styleManager.d.ts.map +1 -0
- package/lib/src/utils/validation.d.ts +17 -0
- package/lib/src/utils/validation.d.ts.map +1 -0
- package/lib/store/index.d.ts +36 -0
- package/lib/store/index.d.ts.map +1 -0
- package/lib/store/index.js +9 -0
- package/lib/store/index.js.map +1 -0
- package/lib/store/slices/index.d.ts +5 -0
- package/lib/store/slices/index.d.ts.map +1 -0
- package/lib/store/slices/index.js +7 -0
- package/lib/store/slices/index.js.map +1 -0
- package/lib/store/slices/messagesSlice.d.ts +73 -0
- package/lib/store/slices/messagesSlice.d.ts.map +1 -0
- package/lib/store/slices/messagesSlice.js +81 -0
- package/lib/store/slices/messagesSlice.js.map +1 -0
- package/lib/store/slices/threadSlice.d.ts +42 -0
- package/lib/store/slices/threadSlice.d.ts.map +1 -0
- package/lib/store/slices/threadSlice.js +54 -0
- package/lib/store/slices/threadSlice.js.map +1 -0
- package/lib/store/store.d.ts +36 -0
- package/lib/store/store.d.ts.map +1 -0
- package/lib/store/store.js +17 -0
- package/lib/store/store.js.map +1 -0
- package/lib/styles.css +3534 -0
- package/lib/types/index.d.ts +29 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +2 -0
- package/lib/types/index.js.map +1 -0
- package/lib/utils/dateUtils.d.ts +13 -0
- package/lib/utils/dateUtils.d.ts.map +1 -0
- package/lib/utils/dateUtils.js +33 -0
- package/lib/utils/dateUtils.js.map +1 -0
- package/lib/utils/index.d.ts +4 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +5 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/styleManager.d.ts +45 -0
- package/lib/utils/styleManager.d.ts.map +1 -0
- package/lib/utils/styleManager.js +69 -0
- package/lib/utils/styleManager.js.map +1 -0
- package/lib/utils/validation.d.ts +17 -0
- package/lib/utils/validation.d.ts.map +1 -0
- package/lib/utils/validation.js +32 -0
- package/lib/utils/validation.js.map +1 -0
- package/package.json +93 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ChatWidget/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ChatWidget/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface MenuItemConfig {
|
|
3
|
+
label: string;
|
|
4
|
+
action: () => void;
|
|
5
|
+
icon?: React.ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export interface DropdownMenuProps {
|
|
8
|
+
isOpen: boolean;
|
|
9
|
+
onClose: () => void;
|
|
10
|
+
menuItems: MenuItemConfig[];
|
|
11
|
+
className?: string;
|
|
12
|
+
position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
|
|
13
|
+
}
|
|
14
|
+
export declare const DropdownMenu: React.FC<DropdownMenuProps>;
|
|
15
|
+
export default DropdownMenu;
|
|
16
|
+
//# sourceMappingURL=DropdownMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAC;CACtE;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA6GpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from 'react';
|
|
3
|
+
import { MenuItem } from '../MenuItem';
|
|
4
|
+
import styles from './DropdownMenu.module.scss';
|
|
5
|
+
export const DropdownMenu = ({ isOpen, onClose, menuItems, className, position = 'bottom-right' }) => {
|
|
6
|
+
const menuRef = useRef(null);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
const handleClickOutside = (event) => {
|
|
9
|
+
if (menuRef.current && !menuRef.current.contains(event.target)) {
|
|
10
|
+
// Check if the click target is the menu button or within the menu button container
|
|
11
|
+
const target = event.target;
|
|
12
|
+
const menuButton = target.closest('[aria-label="Menu"]');
|
|
13
|
+
const menuButtonContainer = target.closest('[class*="menuButtonContainer"]');
|
|
14
|
+
if (menuButton || menuButtonContainer) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
onClose();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const handleEscape = (event) => {
|
|
21
|
+
if (event.key === 'Escape') {
|
|
22
|
+
onClose();
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
// Position adjustment to stay within container
|
|
26
|
+
const adjustPosition = () => {
|
|
27
|
+
if (menuRef.current) {
|
|
28
|
+
const menu = menuRef.current;
|
|
29
|
+
const chatContainer = menu.closest('[class*="chatWidget"]') || menu.closest('[class*="chatWindow"]');
|
|
30
|
+
if (chatContainer) {
|
|
31
|
+
const menuRect = menu.getBoundingClientRect();
|
|
32
|
+
const containerRect = chatContainer.getBoundingClientRect();
|
|
33
|
+
// Reset any previous adjustments
|
|
34
|
+
menu.style.transform = '';
|
|
35
|
+
menu.style.left = '';
|
|
36
|
+
menu.style.right = '';
|
|
37
|
+
// Check if menu overflows the right edge of container
|
|
38
|
+
if (menuRect.right > containerRect.right) {
|
|
39
|
+
const overflow = menuRect.right - containerRect.right;
|
|
40
|
+
menu.style.transform = `translateX(-${overflow + 12}px)`;
|
|
41
|
+
}
|
|
42
|
+
// Check if menu overflows the left edge of container
|
|
43
|
+
if (menuRect.left < containerRect.left) {
|
|
44
|
+
const overflow = containerRect.left - menuRect.left;
|
|
45
|
+
menu.style.transform = `translateX(${overflow + 12}px)`;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
if (isOpen) {
|
|
51
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
52
|
+
document.addEventListener('keydown', handleEscape);
|
|
53
|
+
// Focus first menu item for keyboard navigation
|
|
54
|
+
setTimeout(() => {
|
|
55
|
+
if (menuRef.current) {
|
|
56
|
+
const firstMenuItem = menuRef.current.querySelector('button:not(:disabled)');
|
|
57
|
+
if (firstMenuItem) {
|
|
58
|
+
firstMenuItem.focus();
|
|
59
|
+
}
|
|
60
|
+
adjustPosition();
|
|
61
|
+
}
|
|
62
|
+
}, 0);
|
|
63
|
+
}
|
|
64
|
+
return () => {
|
|
65
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
66
|
+
document.removeEventListener('keydown', handleEscape);
|
|
67
|
+
};
|
|
68
|
+
}, [isOpen, onClose]);
|
|
69
|
+
const handleMenuItemClick = (action) => {
|
|
70
|
+
action();
|
|
71
|
+
onClose();
|
|
72
|
+
};
|
|
73
|
+
if (!isOpen)
|
|
74
|
+
return null;
|
|
75
|
+
return (_jsx("div", { ref: menuRef, className: `${styles.dropdownMenu} ${styles[position]} ${className || ''}`, role: "menu", "aria-orientation": "vertical", children: _jsx("div", { className: styles.menuContent, children: menuItems.map((item, index) => (_jsx(MenuItem, { label: item.label, onClick: () => handleMenuItemClick(item.action), icon: item.icon }, index))) }) }));
|
|
76
|
+
};
|
|
77
|
+
export default DropdownMenu;
|
|
78
|
+
//# sourceMappingURL=DropdownMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DropdownMenu.js","sourceRoot":"","sources":["../../../src/components/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/DropdownMenu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/DropdownMenu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React, { Component, ErrorInfo, ReactNode } from 'react';
|
|
2
|
+
interface Props {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
fallback?: ReactNode;
|
|
5
|
+
onError?: (error: Error, errorInfo: ErrorInfo) => void;
|
|
6
|
+
primaryColor?: string;
|
|
7
|
+
}
|
|
8
|
+
interface State {
|
|
9
|
+
hasError: boolean;
|
|
10
|
+
error?: Error;
|
|
11
|
+
}
|
|
12
|
+
export declare class ErrorBoundary extends Component<Props, State> {
|
|
13
|
+
constructor(props: Props);
|
|
14
|
+
static getDerivedStateFromError(error: Error): State;
|
|
15
|
+
componentDidUpdate(prevProps: Props): void;
|
|
16
|
+
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
17
|
+
handleRetry: () => void;
|
|
18
|
+
render(): string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | undefined;
|
|
19
|
+
}
|
|
20
|
+
export default ErrorBoundary;
|
|
21
|
+
//# sourceMappingURL=ErrorBoundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorBoundary/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG/D,UAAU,KAAK;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,KAAK;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,aAAc,SAAQ,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC5C,KAAK,EAAE,KAAK;IAKxB,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAIpD,kBAAkB,CAAC,SAAS,EAAE,KAAK;IAOnC,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;IAKpD,WAAW,aAET;IAEF,MAAM;CAgDP;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Component } from 'react';
|
|
3
|
+
import styles from './ErrorBoundary.module.scss';
|
|
4
|
+
export class ErrorBoundary extends Component {
|
|
5
|
+
constructor(props) {
|
|
6
|
+
super(props);
|
|
7
|
+
this.handleRetry = () => {
|
|
8
|
+
this.setState({ hasError: false, error: undefined });
|
|
9
|
+
};
|
|
10
|
+
this.state = { hasError: false };
|
|
11
|
+
}
|
|
12
|
+
static getDerivedStateFromError(error) {
|
|
13
|
+
return { hasError: true, error };
|
|
14
|
+
}
|
|
15
|
+
componentDidUpdate(prevProps) {
|
|
16
|
+
// Reset error state if children change (indicates a retry/refresh)
|
|
17
|
+
if (prevProps.children !== this.props.children && this.state.hasError) {
|
|
18
|
+
this.setState({ hasError: false, error: undefined });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
componentDidCatch(error, errorInfo) {
|
|
22
|
+
console.error('Chat Widget Error:', error, errorInfo);
|
|
23
|
+
this.props.onError?.(error, errorInfo);
|
|
24
|
+
}
|
|
25
|
+
render() {
|
|
26
|
+
if (this.state.hasError) {
|
|
27
|
+
if (this.props.fallback) {
|
|
28
|
+
return this.props.fallback;
|
|
29
|
+
}
|
|
30
|
+
return (_jsx("div", { className: styles.errorBoundary, children: _jsxs("div", { className: styles.errorContainer, children: [_jsx("div", { className: styles.errorIcon, style: {
|
|
31
|
+
backgroundColor: this.props.primaryColor || 'var(--chat-primary-color, #FA5B4C)'
|
|
32
|
+
}, children: _jsx("svg", { width: "24", height: "24", viewBox: "0 0 42 42", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M21 3.5C17.5388 3.5 14.1554 4.52636 11.2775 6.44928C8.39967 8.37221 6.15665 11.1053 4.83212 14.303C3.50758 17.5007 3.16102 21.0194 3.83627 24.4141C4.51151 27.8087 6.17822 30.9269 8.62564 33.3744C11.0731 35.8218 14.1913 37.4885 17.5859 38.1637C20.9806 38.839 24.4993 38.4924 27.697 37.1679C30.8947 35.8433 33.6278 33.6003 35.5507 30.7225C37.4736 27.8446 38.5 24.4612 38.5 21C38.4949 16.3603 36.6495 11.912 33.3687 8.63126C30.088 5.35048 25.6397 3.5051 21 3.5ZM21 29.75C20.6539 29.75 20.3155 29.6474 20.0278 29.4551C19.74 29.2628 19.5157 28.9895 19.3832 28.6697C19.2508 28.3499 19.2161 27.9981 19.2836 27.6586C19.3512 27.3191 19.5178 27.0073 19.7626 26.7626C20.0073 26.5178 20.3191 26.3511 20.6586 26.2836C20.9981 26.2161 21.3499 26.2508 21.6697 26.3832C21.9895 26.5157 22.2628 26.74 22.4551 27.0277C22.6474 27.3155 22.75 27.6539 22.75 28C22.75 28.4641 22.5656 28.9092 22.2374 29.2374C21.9093 29.5656 21.4641 29.75 21 29.75ZM22.75 22.75C22.75 23.2141 22.5656 23.6592 22.2374 23.9874C21.9093 24.3156 21.4641 24.5 21 24.5C20.5359 24.5 20.0908 24.3156 19.7626 23.9874C19.4344 23.6592 19.25 23.2141 19.25 22.75V14C19.25 13.5359 19.4344 13.0907 19.7626 12.7626C20.0908 12.4344 20.5359 12.25 21 12.25C21.4641 12.25 21.9093 12.4344 22.2374 12.7626C22.5656 13.0907 22.75 13.5359 22.75 14V22.75Z", fill: "white" }) }) }), _jsx("h3", { className: styles.errorTitle, children: "Oops! An error occurred" }), _jsx("p", { className: styles.errorMessage, children: "We're having trouble loading this page. Please try again. If the issue persists, contact support." }), _jsxs("button", { className: styles.retryButton, onClick: this.handleRetry, style: {
|
|
33
|
+
backgroundColor: this.props.primaryColor || 'var(--chat-primary-color, #FA5B4C)'
|
|
34
|
+
}, children: [_jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M8 0C6.03034 0.00140425 4.13075 0.731081 2.66667 2.04867V0.666667C2.66667 0.489856 2.59643 0.320286 2.4714 0.195262C2.34638 0.0702379 2.17681 0 2 0C1.82319 0 1.65362 0.0702379 1.5286 0.195262C1.40357 0.320286 1.33333 0.489856 1.33333 0.666667V2.66667C1.33333 3.1971 1.54405 3.70581 1.91912 4.08088C2.29419 4.45595 2.8029 4.66667 3.33333 4.66667H5.33333C5.51015 4.66667 5.67971 4.59643 5.80474 4.47141C5.92976 4.34638 6 4.17681 6 4C6 3.82319 5.92976 3.65362 5.80474 3.5286C5.67971 3.40357 5.51015 3.33333 5.33333 3.33333H3.33333C3.31085 3.33 3.28859 3.32533 3.26667 3.31933C4.35301 2.22522 5.78542 1.54205 7.31938 1.38644C8.85333 1.23084 10.3938 1.61244 11.6777 2.46611C12.9616 3.31978 13.9095 4.5926 14.3595 6.0673C14.8094 7.54201 14.7337 9.12717 14.1451 10.5522C13.5564 11.9773 12.4915 13.1539 11.132 13.8812C9.77246 14.6085 8.20266 14.8414 6.69054 14.5401C5.17843 14.2389 3.81772 13.4222 2.8407 12.2295C1.86368 11.0367 1.33091 9.54183 1.33333 8C1.33333 7.82319 1.2631 7.65362 1.13807 7.5286C1.01305 7.40357 0.843478 7.33333 0.666667 7.33333C0.489856 7.33333 0.320286 7.40357 0.195262 7.5286C0.0702379 7.65362 0 7.82319 0 8C0 9.58225 0.469192 11.129 1.34824 12.4446C2.22729 13.7602 3.47672 14.7855 4.93853 15.391C6.40034 15.9965 8.00887 16.155 9.56072 15.8463C11.1126 15.5376 12.538 14.7757 13.6569 13.6569C14.7757 12.538 15.5376 11.1126 15.8463 9.56072C16.155 8.00887 15.9965 6.40034 15.391 4.93853C14.7855 3.47672 13.7602 2.22729 12.4446 1.34824C11.129 0.469192 9.58225 0 8 0V0Z", fill: "white" }) }), "Try Again"] })] }) }));
|
|
35
|
+
}
|
|
36
|
+
return this.props.children;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export default ErrorBoundary;
|
|
40
|
+
//# sourceMappingURL=ErrorBoundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../src/components/ErrorBoundary/ErrorBoundary.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAC;AAC/D,OAAO,MAAM,MAAM,6BAA6B,CAAC;AAcjD,MAAM,OAAO,aAAc,SAAQ,SAAuB;IACxD,YAAY,KAAY;QACtB,KAAK,CAAC,KAAK,CAAC,CAAC;QAoBf,gBAAW,GAAG,GAAG,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC;QArBA,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,KAAY;QAC1C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,kBAAkB,CAAC,SAAgB;QACjC,mEAAmE;QACnE,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtE,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,KAAY,EAAE,SAAoB;QAClD,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAMD,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC7B,CAAC;YAED,OAAO,CACL,cAAK,SAAS,EAAE,MAAM,CAAC,aAAa,YAClC,eAAK,SAAS,EAAE,MAAM,CAAC,cAAc,aACnC,cACE,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,KAAK,EAAE;gCACL,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,oCAAoC;6BACjF,YAED,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,YAC5F,eACE,CAAC,EAAC,swCAAswC,EACxwC,IAAI,EAAC,OAAO,GACZ,GACE,GACF,EACN,aAAI,SAAS,EAAE,MAAM,CAAC,UAAU,wCAA8B,EAC9D,YAAG,SAAS,EAAE,MAAM,CAAC,YAAY,kHAE7B,EACJ,kBACE,SAAS,EAAE,MAAM,CAAC,WAAW,EAC7B,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,KAAK,EAAE;gCACL,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,oCAAoC;6BACjF,aAED,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,YAC5F,eACE,CAAC,EAAC,28CAA28C,EAC78C,IAAI,EAAC,OAAO,GACZ,GACE,iBAEC,IACL,GACF,CACP,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;CACF;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorBoundary/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ErrorBoundary/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ErrorDisplayProps {
|
|
3
|
+
primaryColor?: string;
|
|
4
|
+
message?: string;
|
|
5
|
+
onRetry?: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const ErrorDisplay: React.FC<ErrorDisplayProps>;
|
|
8
|
+
export default ErrorDisplay;
|
|
9
|
+
//# sourceMappingURL=ErrorDisplay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorDisplay.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorDisplay/ErrorDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,iBAAiB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA2CpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import styles from './ErrorDisplay.module.scss';
|
|
3
|
+
export const ErrorDisplay = ({ primaryColor, message = "We're having trouble loading this page. Please try again.", onRetry }) => {
|
|
4
|
+
return (_jsx("div", { className: styles.errorDisplay, children: _jsxs("div", { className: styles.errorContainer, children: [_jsx("div", { className: styles.errorIcon, style: {
|
|
5
|
+
backgroundColor: primaryColor || 'var(--chat-primary-color, #FA5B4C)'
|
|
6
|
+
}, children: _jsx("svg", { width: "24", height: "24", viewBox: "0 0 42 42", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M21 3.5C17.5388 3.5 14.1554 4.52636 11.2775 6.44928C8.39967 8.37221 6.15665 11.1053 4.83212 14.303C3.50758 17.5007 3.16102 21.0194 3.83627 24.4141C4.51151 27.8087 6.17822 30.9269 8.62564 33.3744C11.0731 35.8218 14.1913 37.4885 17.5859 38.1637C20.9806 38.839 24.4993 38.4924 27.697 37.1679C30.8947 35.8433 33.6278 33.6003 35.5507 30.7225C37.4736 27.8446 38.5 24.4612 38.5 21C38.4949 16.3603 36.6495 11.912 33.3687 8.63126C30.088 5.35048 25.6397 3.5051 21 3.5ZM21 29.75C20.6539 29.75 20.3155 29.6474 20.0278 29.4551C19.74 29.2628 19.5157 28.9895 19.3832 28.6697C19.2508 28.3499 19.2161 27.9981 19.2836 27.6586C19.3512 27.3191 19.5178 27.0073 19.7626 26.7626C20.0073 26.5178 20.3191 26.3511 20.6586 26.2836C20.9981 26.2161 21.3499 26.2508 21.6697 26.3832C21.9895 26.5157 22.2628 26.74 22.4551 27.0277C22.6474 27.3155 22.75 27.6539 22.75 28C22.75 28.4641 22.5656 28.9092 22.2374 29.2374C21.9093 29.5656 21.4641 29.75 21 29.75ZM22.75 22.75C22.75 23.2141 22.5656 23.6592 22.2374 23.9874C21.9093 24.3156 21.4641 24.5 21 24.5C20.5359 24.5 20.0908 24.3156 19.7626 23.9874C19.4344 23.6592 19.25 23.2141 19.25 22.75V14C19.25 13.5359 19.4344 13.0907 19.7626 12.7626C20.0908 12.4344 20.5359 12.25 21 12.25C21.4641 12.25 21.9093 12.4344 22.2374 12.7626C22.5656 13.0907 22.75 13.5359 22.75 14V22.75Z", fill: "white" }) }) }), _jsx("h3", { className: styles.errorTitle, children: "Oops! An error occurred" }), _jsx("p", { className: styles.errorMessage, children: message }), onRetry && (_jsxs("button", { className: styles.retryButton, onClick: onRetry, style: {
|
|
7
|
+
backgroundColor: primaryColor || 'var(--chat-primary-color, #FA5B4C)'
|
|
8
|
+
}, children: [_jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M8 0C6.03034 0.00140425 4.13075 0.731081 2.66667 2.04867V0.666667C2.66667 0.489856 2.59643 0.320286 2.4714 0.195262C2.34638 0.0702379 2.17681 0 2 0C1.82319 0 1.65362 0.0702379 1.5286 0.195262C1.40357 0.320286 1.33333 0.489856 1.33333 0.666667V2.66667C1.33333 3.1971 1.54405 3.70581 1.91912 4.08088C2.29419 4.45595 2.8029 4.66667 3.33333 4.66667H5.33333C5.51015 4.66667 5.67971 4.59643 5.80474 4.47141C5.92976 4.34638 6 4.17681 6 4C6 3.82319 5.92976 3.65362 5.80474 3.5286C5.67971 3.40357 5.51015 3.33333 5.33333 3.33333H3.33333C3.31085 3.33 3.28859 3.32533 3.26667 3.31933C4.35301 2.22522 5.78542 1.54205 7.31938 1.38644C8.85333 1.23084 10.3938 1.61244 11.6777 2.46611C12.9616 3.31978 13.9095 4.5926 14.3595 6.0673C14.8094 7.54201 14.7337 9.12717 14.1451 10.5522C13.5564 11.9773 12.4915 13.1539 11.132 13.8812C9.77246 14.6085 8.20266 14.8414 6.69054 14.5401C5.17843 14.2389 3.81772 13.4222 2.8407 12.2295C1.86368 11.0367 1.33091 9.54183 1.33333 8C1.33333 7.82319 1.2631 7.65362 1.13807 7.5286C1.01305 7.40357 0.843478 7.33333 0.666667 7.33333C0.489856 7.33333 0.320286 7.40357 0.195262 7.5286C0.0702379 7.65362 0 7.82319 0 8C0 9.58225 0.469192 11.129 1.34824 12.4446C2.22729 13.7602 3.47672 14.7855 4.93853 15.391C6.40034 15.9965 8.00887 16.155 9.56072 15.8463C11.1126 15.5376 12.538 14.7757 13.6569 13.6569C14.7757 12.538 15.5376 11.1126 15.8463 9.56072C16.155 8.00887 15.9965 6.40034 15.391 4.93853C14.7855 3.47672 13.7602 2.22729 12.4446 1.34824C11.129 0.469192 9.58225 0 8 0V0Z", fill: "white" }) }), "Try Again"] }))] }) }));
|
|
9
|
+
};
|
|
10
|
+
export default ErrorDisplay;
|
|
11
|
+
//# sourceMappingURL=ErrorDisplay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorDisplay.js","sourceRoot":"","sources":["../../../src/components/ErrorDisplay/ErrorDisplay.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAQhD,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACxD,YAAY,EACZ,OAAO,GAAG,2DAA2D,EACrE,OAAO,EACR,EAAE,EAAE;IACH,OAAO,CACL,cAAK,SAAS,EAAE,MAAM,CAAC,YAAY,YACjC,eAAK,SAAS,EAAE,MAAM,CAAC,cAAc,aACnC,cACE,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,KAAK,EAAE;wBACL,eAAe,EAAE,YAAY,IAAI,oCAAoC;qBACtE,YAED,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,YAC5F,eACE,CAAC,EAAC,swCAAswC,EACxwC,IAAI,EAAC,OAAO,GACZ,GACE,GACF,EACN,aAAI,SAAS,EAAE,MAAM,CAAC,UAAU,wCAA8B,EAC9D,YAAG,SAAS,EAAE,MAAM,CAAC,YAAY,YAAG,OAAO,GAAK,EAC/C,OAAO,IAAI,CACV,kBACE,SAAS,EAAE,MAAM,CAAC,WAAW,EAC7B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE;wBACL,eAAe,EAAE,YAAY,IAAI,oCAAoC;qBACtE,aAED,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,YAC5F,eACE,CAAC,EAAC,28CAA28C,EAC78C,IAAI,EAAC,OAAO,GACZ,GACE,iBAEC,CACV,IACG,GACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorDisplay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ErrorDisplay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface LoadingIndicatorProps {
|
|
3
|
+
text?: string;
|
|
4
|
+
size?: 'small' | 'medium' | 'large';
|
|
5
|
+
type?: 'dots' | 'spinner' | 'typing';
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const LoadingIndicator: React.FC<LoadingIndicatorProps>;
|
|
9
|
+
export default LoadingIndicator;
|
|
10
|
+
//# sourceMappingURL=LoadingIndicator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingIndicator.d.ts","sourceRoot":"","sources":["../../../src/components/LoadingIndicator/LoadingIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAmB5D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import styles from './LoadingIndicator.module.scss';
|
|
3
|
+
export const LoadingIndicator = ({ text = 'Typing...', size = 'medium', type = 'typing', className }) => {
|
|
4
|
+
const renderIndicator = () => {
|
|
5
|
+
return (_jsx("div", { className: styles.spinnerIndicator, children: _jsx("div", { className: styles.spinner }) }));
|
|
6
|
+
};
|
|
7
|
+
return (_jsx("div", { className: `${styles.loadingIndicator} ${styles[size]} ${className || ''}`, children: renderIndicator() }));
|
|
8
|
+
};
|
|
9
|
+
export default LoadingIndicator;
|
|
10
|
+
//# sourceMappingURL=LoadingIndicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingIndicator.js","sourceRoot":"","sources":["../../../src/components/LoadingIndicator/LoadingIndicator.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,gCAAgC,CAAC;AASpD,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EAChE,IAAI,GAAG,WAAW,EAClB,IAAI,GAAG,QAAQ,EACf,IAAI,GAAG,QAAQ,EACf,SAAS,EACV,EAAE,EAAE;IACH,MAAM,eAAe,GAAG,GAAG,EAAE;QACvB,OAAO,CACL,cAAK,SAAS,EAAE,MAAM,CAAC,gBAAgB,YACrC,cAAK,SAAS,EAAE,MAAM,CAAC,OAAO,GAAQ,GAClC,CACP,CAAC;IACR,CAAC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAE,GAAG,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,IAAI,EAAE,EAAE,YAC5E,eAAe,EAAE,GACd,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/LoadingIndicator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/LoadingIndicator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,mEAAmE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface MenuButtonProps {
|
|
3
|
+
onClick: () => void;
|
|
4
|
+
isOpen?: boolean;
|
|
5
|
+
className?: string;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const MenuButton: React.FC<MenuButtonProps>;
|
|
9
|
+
export default MenuButton;
|
|
10
|
+
//# sourceMappingURL=MenuButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuButton.d.ts","sourceRoot":"","sources":["../../../src/components/MenuButton/MenuButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAuBhD,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import styles from './MenuButton.module.scss';
|
|
3
|
+
export const MenuButton = ({ onClick, isOpen = false, className, disabled = false }) => {
|
|
4
|
+
return (_jsx("button", { type: "button", onClick: onClick, disabled: disabled, className: `${styles.menuButton} ${isOpen ? styles.active : ''} ${disabled ? styles.disabled : ''} ${className || ''}`, "aria-label": "Menu options", "aria-expanded": isOpen, "aria-haspopup": "true", children: _jsxs("div", { className: styles.dotsContainer, children: [_jsx("span", { className: styles.dot }), _jsx("span", { className: styles.dot }), _jsx("span", { className: styles.dot })] }) }));
|
|
5
|
+
};
|
|
6
|
+
export default MenuButton;
|
|
7
|
+
//# sourceMappingURL=MenuButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuButton.js","sourceRoot":"","sources":["../../../src/components/MenuButton/MenuButton.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAS9C,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EACpD,OAAO,EACP,MAAM,GAAG,KAAK,EACd,SAAS,EACT,QAAQ,GAAG,KAAK,EACjB,EAAE,EAAE;IACH,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,IAAI,EAAE,EAAE,gBAC3G,cAAc,mBACV,MAAM,mBACP,MAAM,YAEpB,eAAK,SAAS,EAAE,MAAM,CAAC,aAAa,aAClC,eAAM,SAAS,EAAE,MAAM,CAAC,GAAG,GAAS,EACpC,eAAM,SAAS,EAAE,MAAM,CAAC,GAAG,GAAS,EACpC,eAAM,SAAS,EAAE,MAAM,CAAC,GAAG,GAAS,IAChC,GACC,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MenuButton/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/MenuButton/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface MenuItemProps {
|
|
3
|
+
label: string;
|
|
4
|
+
onClick: () => void;
|
|
5
|
+
icon?: React.ReactNode;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
destructive?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const MenuItem: React.FC<MenuItemProps>;
|
|
11
|
+
export default MenuItem;
|
|
12
|
+
//# sourceMappingURL=MenuItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../../src/components/MenuItem/MenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA+B5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import styles from './MenuItem.module.scss';
|
|
3
|
+
export const MenuItem = ({ label, onClick, icon, disabled = false, destructive = false, className }) => {
|
|
4
|
+
const handleClick = () => {
|
|
5
|
+
if (!disabled) {
|
|
6
|
+
onClick();
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
return (_jsxs("button", { type: "button", onClick: handleClick, disabled: disabled, className: `${styles.menuItem} ${destructive ? styles.destructive : ''} ${disabled ? styles.disabled : ''} ${className || ''}`, children: [icon && (_jsx("span", { className: styles.icon, children: icon })), _jsx("span", { className: styles.label, children: label })] }));
|
|
10
|
+
};
|
|
11
|
+
export default MenuItem;
|
|
12
|
+
//# sourceMappingURL=MenuItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["../../../src/components/MenuItem/MenuItem.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAW5C,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAChD,KAAK,EACL,OAAO,EACP,IAAI,EACJ,QAAQ,GAAG,KAAK,EAChB,WAAW,GAAG,KAAK,EACnB,SAAS,EACV,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,IAAI,EAAE,EAAE,aAE7H,IAAI,IAAI,CACP,eAAM,SAAS,EAAE,MAAM,CAAC,IAAI,YACzB,IAAI,GACA,CACR,EACD,eAAM,SAAS,EAAE,MAAM,CAAC,KAAK,YAC1B,KAAK,GACD,IACA,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MenuItem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/MenuItem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface MessageBubbleProps {
|
|
3
|
+
id?: string;
|
|
4
|
+
message: string;
|
|
5
|
+
sender: 'user' | 'agent';
|
|
6
|
+
timestamp?: Date;
|
|
7
|
+
className?: string;
|
|
8
|
+
isMe: boolean;
|
|
9
|
+
status?: 'pending' | 'sent' | 'failed';
|
|
10
|
+
avatar?: string;
|
|
11
|
+
senderName?: string;
|
|
12
|
+
isDoubleTickVisible?: boolean;
|
|
13
|
+
initials?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const MessageBubble: React.FC<MessageBubbleProps>;
|
|
16
|
+
export default MessageBubble;
|
|
17
|
+
//# sourceMappingURL=MessageBubble.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/MessageBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAwC1B,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+KtD,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import styles from './MessageBubble.module.scss';
|
|
3
|
+
import { useDispatch, useSelector } from 'react-redux';
|
|
4
|
+
import { updateMessageStatus } from '@/store/slices/messagesSlice';
|
|
5
|
+
import { useChatInit } from '@/hooks';
|
|
6
|
+
import { useLazyGetAttachmentSasUrlQuery } from '@/services/api/backendApi';
|
|
7
|
+
import { selectThread } from '@/store';
|
|
8
|
+
// Download icon SVG for file messages
|
|
9
|
+
const downloadIcon = (_jsxs("svg", { width: "17", height: "19", viewBox: "0 0 17 19", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M13.207 7.96292C13.0195 7.77545 12.7652 7.67014 12.5 7.67014C12.2348 7.67014 11.9805 7.77545 11.793 7.96292L9.5 10.2559V1.66992C9.5 1.40471 9.39464 1.15035 9.20711 0.962815C9.01957 0.775279 8.76522 0.669922 8.5 0.669922C8.23478 0.669922 7.98043 0.775279 7.79289 0.962815C7.60536 1.15035 7.5 1.40471 7.5 1.66992V10.2559L5.207 7.96292C5.11475 7.86741 5.00441 7.79123 4.8824 7.73882C4.7604 7.68641 4.62918 7.65882 4.4964 7.65767C4.36362 7.65652 4.23194 7.68182 4.10905 7.7321C3.98615 7.78238 3.8745 7.85663 3.7806 7.95053C3.68671 8.04442 3.61246 8.15607 3.56218 8.27897C3.5119 8.40186 3.4866 8.53354 3.48775 8.66632C3.4889 8.7991 3.51649 8.93032 3.5689 9.05233C3.62131 9.17433 3.69749 9.28467 3.793 9.37692L7.793 13.3769C7.88589 13.47 7.99624 13.5439 8.11773 13.5943C8.23922 13.6448 8.36947 13.6707 8.501 13.6707C8.63253 13.6707 8.76278 13.6448 8.88427 13.5943C9.00576 13.5439 9.11611 13.47 9.209 13.3769L13.209 9.37692C13.3962 9.18913 13.5012 8.93467 13.5008 8.66951C13.5004 8.40434 13.3947 8.15018 13.207 7.96292Z", fill: "#000000" }), _jsx("path", { d: "M13.5 18.6699H3.5C2.70435 18.6699 1.94129 18.3539 1.37868 17.7912C0.816071 17.2286 0.5 16.4656 0.5 15.6699V12.6699C0.5 12.4047 0.605357 12.1504 0.792893 11.9628C0.98043 11.7753 1.23478 11.6699 1.5 11.6699C1.76522 11.6699 2.01957 11.7753 2.20711 11.9628C2.39464 12.1504 2.5 12.4047 2.5 12.6699V15.6699C2.5 15.9351 2.60536 16.1895 2.79289 16.377C2.98043 16.5646 3.23478 16.6699 3.5 16.6699H13.5C13.7652 16.6699 14.0196 16.5646 14.2071 16.377C14.3946 16.1895 14.5 15.9351 14.5 15.6699V12.6699C14.5 12.4047 14.6054 12.1504 14.7929 11.9628C14.9804 11.7753 15.2348 11.6699 15.5 11.6699C15.7652 11.6699 16.0196 11.7753 16.2071 11.9628C16.3946 12.1504 16.5 12.4047 16.5 12.6699V15.6699C16.5 16.4656 16.1839 17.2286 15.6213 17.7912C15.0587 18.3539 14.2956 18.6699 13.5 18.6699Z", fill: "#000000" })] }));
|
|
10
|
+
const singleTickIcon = (_jsx("svg", { style: { marginLeft: "4px" }, width: "10", height: "7", viewBox: "0 0 10 7", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M8.89685 0.112313C9.07645 0.273951 9.09101 0.550578 8.92937 0.730176L3.77081 6.35449C3.20233 6.98614 2.88487 6.45566 2.22129 5.9248L0.164212 4.27913C-0.0244651 4.12819 -0.0550557 3.85288 0.095886 3.6642C0.246828 3.47552 0.522143 3.44493 0.71082 3.59587L2.7679 5.24154C3.06953 5.48284 3.50699 5.44705 3.76539 5.15994L8.27899 0.144832C8.44063 -0.0347665 8.71726 -0.0493257 8.89685 0.112313Z", fill: "#84E1BC" }) }));
|
|
11
|
+
const doubleTickIcon = (_jsxs("svg", { style: { marginLeft: "4px" }, width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M9.62537 3.7588C9.80497 3.92044 9.81953 4.19706 9.65789 4.37666L4.49933 10.001C3.93085 10.6326 3.61338 10.1021 2.94981 9.57128L0.892728 7.92562C0.704051 7.77468 0.67346 7.49936 0.824402 7.31068C0.975343 7.12201 1.25066 7.09142 1.43934 7.24236L3.49642 8.88802C3.79804 9.12932 4.23551 9.09354 4.49391 8.80643L9.00751 3.79132C9.16915 3.61172 9.44577 3.59716 9.62537 3.7588Z", fill: "#84E1BC" }), _jsx("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M13.1254 3.7588C13.305 3.92044 13.3195 4.19706 13.1579 4.37666L7.99933 10.001C7.43085 10.6326 7.11338 10.1021 6.44981 9.57128L4.39273 7.92562C4.20405 7.77468 4.17346 7.49936 4.3244 7.31068C4.47534 7.12201 4.75066 7.09142 4.93934 7.24236L6.99642 8.88802C7.29804 9.12932 7.73551 9.09354 7.99391 8.80643L12.5075 3.79132C12.6691 3.61172 12.9458 3.59716 13.1254 3.7588Z", fill: "#057A55" })] }));
|
|
12
|
+
// Helper to detect if message is a file message
|
|
13
|
+
function isFileMessage(content) {
|
|
14
|
+
try {
|
|
15
|
+
const obj = JSON.parse(content);
|
|
16
|
+
return obj.displayFileName && obj.azureFileName ? obj : null;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export const MessageBubble = ({ id, message, sender, timestamp, className, isMe, status, avatar, senderName, isDoubleTickVisible, initials }) => {
|
|
23
|
+
const thread = useSelector(selectThread);
|
|
24
|
+
const dispatch = useDispatch();
|
|
25
|
+
const { sendMessage } = useChatInit();
|
|
26
|
+
const [getAttachmentSasUrl] = useLazyGetAttachmentSasUrlQuery();
|
|
27
|
+
const handleResend = async () => {
|
|
28
|
+
if (!id)
|
|
29
|
+
return;
|
|
30
|
+
// mark as pending while retrying
|
|
31
|
+
dispatch(updateMessageStatus({ id, status: 'pending' }));
|
|
32
|
+
try {
|
|
33
|
+
const result = await sendMessage(message);
|
|
34
|
+
if (result.success) {
|
|
35
|
+
dispatch(updateMessageStatus({ id, status: 'sent', isDoubleTickVisible: true }));
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
dispatch(updateMessageStatus({ id, status: 'failed' }));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
dispatch(updateMessageStatus({ id, status: 'failed' }));
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
// Check if message is a file message
|
|
46
|
+
const fileMsg = isFileMessage(message);
|
|
47
|
+
// Handle file download with SAS URL
|
|
48
|
+
const handleFileDownload = async (azureFileName, displayFileName) => {
|
|
49
|
+
try {
|
|
50
|
+
// Step 1: Get SAS URL from the backend using RTK Query
|
|
51
|
+
const result = await getAttachmentSasUrl({ blobUrl: azureFileName });
|
|
52
|
+
if (result.error) {
|
|
53
|
+
throw new Error('Failed to get download URL');
|
|
54
|
+
}
|
|
55
|
+
const sasUrl = result.data?.data?.sasUrl;
|
|
56
|
+
if (!sasUrl) {
|
|
57
|
+
throw new Error('No download URL received');
|
|
58
|
+
}
|
|
59
|
+
// Step 2: Download the file using fetch and blob (adapted from your code)
|
|
60
|
+
const response = await fetch(sasUrl, {
|
|
61
|
+
method: 'GET'
|
|
62
|
+
});
|
|
63
|
+
if (!response.ok) {
|
|
64
|
+
throw new Error('Failed to download file');
|
|
65
|
+
}
|
|
66
|
+
const blob = await response.blob();
|
|
67
|
+
const url = URL.createObjectURL(blob);
|
|
68
|
+
const a = document.createElement('a');
|
|
69
|
+
a.href = url;
|
|
70
|
+
a.download = displayFileName;
|
|
71
|
+
document.body.appendChild(a);
|
|
72
|
+
a.click();
|
|
73
|
+
document.body.removeChild(a);
|
|
74
|
+
URL.revokeObjectURL(url);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.error('File download failed:', error);
|
|
78
|
+
// You might want to show a user-friendly error message here
|
|
79
|
+
alert('Failed to download attachment.');
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
const formatDateTime = (date) => {
|
|
83
|
+
const now = new Date();
|
|
84
|
+
const localDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
85
|
+
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
86
|
+
const yesterday = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1);
|
|
87
|
+
const timePart = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
|
|
88
|
+
if (localDate.getTime() === today.getTime()) {
|
|
89
|
+
return `Today ${timePart}`;
|
|
90
|
+
}
|
|
91
|
+
if (localDate.getTime() === yesterday.getTime()) {
|
|
92
|
+
return `Yesterday ${timePart}`;
|
|
93
|
+
}
|
|
94
|
+
const datePart = date.toLocaleDateString(undefined, { month: 'long', day: 'numeric', year: 'numeric' });
|
|
95
|
+
return `${datePart} ${timePart}`;
|
|
96
|
+
};
|
|
97
|
+
return (_jsxs("div", { className: `${styles.messageWrapper} ${isMe ? styles.messageWrapperRight : styles.messageWrapperLeft} ${className || ''}`, children: [!isMe && _jsx("div", { className: styles.messageAvatar, children: initials }), _jsxs("div", { className: styles.messageContainer, children: [_jsx("div", { className: styles.senderName, children: isMe ? 'You' : thread.threadType === 'medical' ? 'Provider' : 'Support' }), _jsx("div", { className: `${styles.messageBubble} ${isMe ? styles.userMessage : styles.agentMessage}`, children: _jsx("div", { className: styles.messageText, children: fileMsg ? (_jsxs("div", { className: "file-message", style: { display: 'flex', alignItems: 'center' }, children: [_jsx("span", { children: fileMsg.displayFileName }), _jsx("button", { onClick: () => handleFileDownload(fileMsg.azureFileName, fileMsg.displayFileName), style: {
|
|
98
|
+
background: 'none',
|
|
99
|
+
border: 'none',
|
|
100
|
+
cursor: 'pointer',
|
|
101
|
+
marginLeft: 8,
|
|
102
|
+
padding: 4,
|
|
103
|
+
display: 'flex',
|
|
104
|
+
alignItems: 'center'
|
|
105
|
+
}, "aria-label": `Download ${fileMsg.displayFileName}`, children: downloadIcon })] })) : (message) }) }), isMe && status === 'failed' ? (_jsxs("div", { className: styles.resendContainer, children: [_jsx("button", { className: styles.resendButton, "aria-label": "Resend message", onClick: handleResend, children: "\u21BB" }), _jsx("span", { className: styles.resendText, role: "button", tabIndex: 0, onClick: handleResend, onKeyPress: (e) => { if (e.key === 'Enter' || e.key === ' ')
|
|
106
|
+
handleResend(); }, children: "Message failed to send. Tap to send" })] })) : (timestamp && (_jsxs("div", { className: `${styles.timestamp} ${isMe ? styles.timestampRight : styles.timestampLeft}`, "aria-label": formatDateTime(timestamp), tabIndex: 0, children: [_jsx("span", { children: formatDateTime(timestamp) }), isMe && (isDoubleTickVisible
|
|
107
|
+
? doubleTickIcon
|
|
108
|
+
: singleTickIcon)] })))] }), isMe && _jsx("div", { className: styles.messageAvatar, children: initials })] }));
|
|
109
|
+
};
|
|
110
|
+
export default MessageBubble;
|
|
111
|
+
//# sourceMappingURL=MessageBubble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageBubble.js","sourceRoot":"","sources":["../../../src/components/MessageBubble/MessageBubble.tsx"],"names":[],"mappings":"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"}
|