@parlr/react-native 0.1.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/LICENSE +21 -0
- package/README.md +918 -0
- package/lib/commonjs/components/AttachmentPicker.js +292 -0
- package/lib/commonjs/components/AttachmentPicker.js.map +1 -0
- package/lib/commonjs/components/AttachmentPreview.js +200 -0
- package/lib/commonjs/components/AttachmentPreview.js.map +1 -0
- package/lib/commonjs/components/ChatBubble.js +391 -0
- package/lib/commonjs/components/ChatBubble.js.map +1 -0
- package/lib/commonjs/components/EmptyState.js +115 -0
- package/lib/commonjs/components/EmptyState.js.map +1 -0
- package/lib/commonjs/components/ParlrChat.js +745 -0
- package/lib/commonjs/components/ParlrChat.js.map +1 -0
- package/lib/commonjs/components/ParlrConversationList.js +509 -0
- package/lib/commonjs/components/ParlrConversationList.js.map +1 -0
- package/lib/commonjs/components/PreChatForm.js +263 -0
- package/lib/commonjs/components/PreChatForm.js.map +1 -0
- package/lib/commonjs/components/RichMessage.js +284 -0
- package/lib/commonjs/components/RichMessage.js.map +1 -0
- package/lib/commonjs/components/SatisfactionSurvey.js +292 -0
- package/lib/commonjs/components/SatisfactionSurvey.js.map +1 -0
- package/lib/commonjs/components/TypingIndicator.js +86 -0
- package/lib/commonjs/components/TypingIndicator.js.map +1 -0
- package/lib/commonjs/core/api.js +310 -0
- package/lib/commonjs/core/api.js.map +1 -0
- package/lib/commonjs/core/config.js +40 -0
- package/lib/commonjs/core/config.js.map +1 -0
- package/lib/commonjs/core/errors.js +73 -0
- package/lib/commonjs/core/errors.js.map +1 -0
- package/lib/commonjs/core/offlineQueue.js +89 -0
- package/lib/commonjs/core/offlineQueue.js.map +1 -0
- package/lib/commonjs/core/pushNotifications.js +21 -0
- package/lib/commonjs/core/pushNotifications.js.map +1 -0
- package/lib/commonjs/core/session.js +130 -0
- package/lib/commonjs/core/session.js.map +1 -0
- package/lib/commonjs/core/theme.js +110 -0
- package/lib/commonjs/core/theme.js.map +1 -0
- package/lib/commonjs/core/types.js +6 -0
- package/lib/commonjs/core/types.js.map +1 -0
- package/lib/commonjs/core/websocket.js +245 -0
- package/lib/commonjs/core/websocket.js.map +1 -0
- package/lib/commonjs/hooks/useChat.js +462 -0
- package/lib/commonjs/hooks/useChat.js.map +1 -0
- package/lib/commonjs/hooks/useParlr.js +44 -0
- package/lib/commonjs/hooks/useParlr.js.map +1 -0
- package/lib/commonjs/index.js +185 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/provider/ParlrContext.js +38 -0
- package/lib/commonjs/provider/ParlrContext.js.map +1 -0
- package/lib/commonjs/provider/ParlrProvider.js +256 -0
- package/lib/commonjs/provider/ParlrProvider.js.map +1 -0
- package/lib/module/components/AttachmentPicker.js +287 -0
- package/lib/module/components/AttachmentPicker.js.map +1 -0
- package/lib/module/components/AttachmentPreview.js +195 -0
- package/lib/module/components/AttachmentPreview.js.map +1 -0
- package/lib/module/components/ChatBubble.js +386 -0
- package/lib/module/components/ChatBubble.js.map +1 -0
- package/lib/module/components/EmptyState.js +110 -0
- package/lib/module/components/EmptyState.js.map +1 -0
- package/lib/module/components/ParlrChat.js +740 -0
- package/lib/module/components/ParlrChat.js.map +1 -0
- package/lib/module/components/ParlrConversationList.js +504 -0
- package/lib/module/components/ParlrConversationList.js.map +1 -0
- package/lib/module/components/PreChatForm.js +258 -0
- package/lib/module/components/PreChatForm.js.map +1 -0
- package/lib/module/components/RichMessage.js +280 -0
- package/lib/module/components/RichMessage.js.map +1 -0
- package/lib/module/components/SatisfactionSurvey.js +287 -0
- package/lib/module/components/SatisfactionSurvey.js.map +1 -0
- package/lib/module/components/TypingIndicator.js +81 -0
- package/lib/module/components/TypingIndicator.js.map +1 -0
- package/lib/module/core/api.js +305 -0
- package/lib/module/core/api.js.map +1 -0
- package/lib/module/core/config.js +36 -0
- package/lib/module/core/config.js.map +1 -0
- package/lib/module/core/errors.js +64 -0
- package/lib/module/core/errors.js.map +1 -0
- package/lib/module/core/offlineQueue.js +82 -0
- package/lib/module/core/offlineQueue.js.map +1 -0
- package/lib/module/core/pushNotifications.js +16 -0
- package/lib/module/core/pushNotifications.js.map +1 -0
- package/lib/module/core/session.js +122 -0
- package/lib/module/core/session.js.map +1 -0
- package/lib/module/core/theme.js +105 -0
- package/lib/module/core/theme.js.map +1 -0
- package/lib/module/core/types.js +4 -0
- package/lib/module/core/types.js.map +1 -0
- package/lib/module/core/websocket.js +241 -0
- package/lib/module/core/websocket.js.map +1 -0
- package/lib/module/hooks/useChat.js +458 -0
- package/lib/module/hooks/useChat.js.map +1 -0
- package/lib/module/hooks/useParlr.js +40 -0
- package/lib/module/hooks/useParlr.js.map +1 -0
- package/lib/module/index.js +58 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/provider/ParlrContext.js +35 -0
- package/lib/module/provider/ParlrContext.js.map +1 -0
- package/lib/module/provider/ParlrProvider.js +251 -0
- package/lib/module/provider/ParlrProvider.js.map +1 -0
- package/lib/typescript/commonjs/components/AttachmentPicker.d.ts +23 -0
- package/lib/typescript/commonjs/components/AttachmentPicker.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/AttachmentPreview.d.ts +16 -0
- package/lib/typescript/commonjs/components/AttachmentPreview.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/ChatBubble.d.ts +14 -0
- package/lib/typescript/commonjs/components/ChatBubble.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/EmptyState.d.ts +10 -0
- package/lib/typescript/commonjs/components/EmptyState.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/ParlrChat.d.ts +34 -0
- package/lib/typescript/commonjs/components/ParlrChat.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/ParlrConversationList.d.ts +17 -0
- package/lib/typescript/commonjs/components/ParlrConversationList.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/PreChatForm.d.ts +20 -0
- package/lib/typescript/commonjs/components/PreChatForm.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/RichMessage.d.ts +41 -0
- package/lib/typescript/commonjs/components/RichMessage.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/SatisfactionSurvey.d.ts +17 -0
- package/lib/typescript/commonjs/components/SatisfactionSurvey.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/TypingIndicator.d.ts +7 -0
- package/lib/typescript/commonjs/components/TypingIndicator.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/api.d.ts +37 -0
- package/lib/typescript/commonjs/core/api.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/config.d.ts +9 -0
- package/lib/typescript/commonjs/core/config.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/errors.d.ts +35 -0
- package/lib/typescript/commonjs/core/errors.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/offlineQueue.d.ts +16 -0
- package/lib/typescript/commonjs/core/offlineQueue.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/pushNotifications.d.ts +6 -0
- package/lib/typescript/commonjs/core/pushNotifications.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/session.d.ts +15 -0
- package/lib/typescript/commonjs/core/session.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/theme.d.ts +43 -0
- package/lib/typescript/commonjs/core/theme.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/types.d.ts +185 -0
- package/lib/typescript/commonjs/core/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/websocket.d.ts +17 -0
- package/lib/typescript/commonjs/core/websocket.d.ts.map +1 -0
- package/lib/typescript/commonjs/hooks/useChat.d.ts +35 -0
- package/lib/typescript/commonjs/hooks/useChat.d.ts.map +1 -0
- package/lib/typescript/commonjs/hooks/useParlr.d.ts +11 -0
- package/lib/typescript/commonjs/hooks/useParlr.d.ts.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +30 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/provider/ParlrContext.d.ts +13 -0
- package/lib/typescript/commonjs/provider/ParlrContext.d.ts.map +1 -0
- package/lib/typescript/commonjs/provider/ParlrProvider.d.ts +5 -0
- package/lib/typescript/commonjs/provider/ParlrProvider.d.ts.map +1 -0
- package/lib/typescript/module/components/AttachmentPicker.d.ts +23 -0
- package/lib/typescript/module/components/AttachmentPicker.d.ts.map +1 -0
- package/lib/typescript/module/components/AttachmentPreview.d.ts +16 -0
- package/lib/typescript/module/components/AttachmentPreview.d.ts.map +1 -0
- package/lib/typescript/module/components/ChatBubble.d.ts +14 -0
- package/lib/typescript/module/components/ChatBubble.d.ts.map +1 -0
- package/lib/typescript/module/components/EmptyState.d.ts +10 -0
- package/lib/typescript/module/components/EmptyState.d.ts.map +1 -0
- package/lib/typescript/module/components/ParlrChat.d.ts +34 -0
- package/lib/typescript/module/components/ParlrChat.d.ts.map +1 -0
- package/lib/typescript/module/components/ParlrConversationList.d.ts +17 -0
- package/lib/typescript/module/components/ParlrConversationList.d.ts.map +1 -0
- package/lib/typescript/module/components/PreChatForm.d.ts +20 -0
- package/lib/typescript/module/components/PreChatForm.d.ts.map +1 -0
- package/lib/typescript/module/components/RichMessage.d.ts +41 -0
- package/lib/typescript/module/components/RichMessage.d.ts.map +1 -0
- package/lib/typescript/module/components/SatisfactionSurvey.d.ts +17 -0
- package/lib/typescript/module/components/SatisfactionSurvey.d.ts.map +1 -0
- package/lib/typescript/module/components/TypingIndicator.d.ts +7 -0
- package/lib/typescript/module/components/TypingIndicator.d.ts.map +1 -0
- package/lib/typescript/module/core/api.d.ts +37 -0
- package/lib/typescript/module/core/api.d.ts.map +1 -0
- package/lib/typescript/module/core/config.d.ts +9 -0
- package/lib/typescript/module/core/config.d.ts.map +1 -0
- package/lib/typescript/module/core/errors.d.ts +35 -0
- package/lib/typescript/module/core/errors.d.ts.map +1 -0
- package/lib/typescript/module/core/offlineQueue.d.ts +16 -0
- package/lib/typescript/module/core/offlineQueue.d.ts.map +1 -0
- package/lib/typescript/module/core/pushNotifications.d.ts +6 -0
- package/lib/typescript/module/core/pushNotifications.d.ts.map +1 -0
- package/lib/typescript/module/core/session.d.ts +15 -0
- package/lib/typescript/module/core/session.d.ts.map +1 -0
- package/lib/typescript/module/core/theme.d.ts +43 -0
- package/lib/typescript/module/core/theme.d.ts.map +1 -0
- package/lib/typescript/module/core/types.d.ts +185 -0
- package/lib/typescript/module/core/types.d.ts.map +1 -0
- package/lib/typescript/module/core/websocket.d.ts +17 -0
- package/lib/typescript/module/core/websocket.d.ts.map +1 -0
- package/lib/typescript/module/hooks/useChat.d.ts +35 -0
- package/lib/typescript/module/hooks/useChat.d.ts.map +1 -0
- package/lib/typescript/module/hooks/useParlr.d.ts +11 -0
- package/lib/typescript/module/hooks/useParlr.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +30 -0
- package/lib/typescript/module/index.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/provider/ParlrContext.d.ts +13 -0
- package/lib/typescript/module/provider/ParlrContext.d.ts.map +1 -0
- package/lib/typescript/module/provider/ParlrProvider.d.ts +5 -0
- package/lib/typescript/module/provider/ParlrProvider.d.ts.map +1 -0
- package/package.json +120 -0
- package/src/components/AttachmentPicker.tsx +310 -0
- package/src/components/AttachmentPreview.tsx +209 -0
- package/src/components/ChatBubble.tsx +424 -0
- package/src/components/EmptyState.tsx +118 -0
- package/src/components/ParlrChat.tsx +863 -0
- package/src/components/ParlrConversationList.tsx +559 -0
- package/src/components/PreChatForm.tsx +313 -0
- package/src/components/RichMessage.tsx +353 -0
- package/src/components/SatisfactionSurvey.tsx +333 -0
- package/src/components/TypingIndicator.tsx +89 -0
- package/src/core/api.ts +406 -0
- package/src/core/config.ts +39 -0
- package/src/core/errors.ts +68 -0
- package/src/core/offlineQueue.ts +94 -0
- package/src/core/pushNotifications.ts +22 -0
- package/src/core/session.ts +156 -0
- package/src/core/theme.ts +133 -0
- package/src/core/types.ts +237 -0
- package/src/core/websocket.ts +270 -0
- package/src/hooks/useChat.ts +534 -0
- package/src/hooks/useParlr.ts +43 -0
- package/src/index.ts +98 -0
- package/src/provider/ParlrContext.ts +40 -0
- package/src/provider/ParlrProvider.tsx +338 -0
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Parlr React Native SDK - Chat Bubble
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
//
|
|
7
|
+
// Renders a single message bubble. Agent messages appear on the left with an
|
|
8
|
+
// avatar; contact messages appear on the right with the accent color.
|
|
9
|
+
// Supports text, images, file attachments, and read receipts.
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
import React, { useContext, useState } from 'react';
|
|
13
|
+
import { Dimensions, Image, Linking, Modal, Pressable, StyleSheet, Text, View } from 'react-native';
|
|
14
|
+
import Animated, { FadeInUp } from 'react-native-reanimated';
|
|
15
|
+
import { ParlrContext } from "../provider/ParlrContext.js";
|
|
16
|
+
import { RichMessage, tryParseRichContent } from "./RichMessage.js";
|
|
17
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
18
|
+
function formatTime(iso) {
|
|
19
|
+
try {
|
|
20
|
+
const d = new Date(iso);
|
|
21
|
+
return d.toLocaleTimeString([], {
|
|
22
|
+
hour: '2-digit',
|
|
23
|
+
minute: '2-digit'
|
|
24
|
+
});
|
|
25
|
+
} catch {
|
|
26
|
+
return '';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function AgentAvatar({
|
|
30
|
+
name,
|
|
31
|
+
theme
|
|
32
|
+
}) {
|
|
33
|
+
const initial = (name ?? 'A').charAt(0).toUpperCase();
|
|
34
|
+
return /*#__PURE__*/_jsx(View, {
|
|
35
|
+
style: [styles.avatar, {
|
|
36
|
+
backgroundColor: theme.colors.surfaceDark
|
|
37
|
+
}],
|
|
38
|
+
accessibilityLabel: `${name ?? 'Agent'} avatar`,
|
|
39
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
40
|
+
style: [styles.avatarText, {
|
|
41
|
+
color: theme.colors.textSecondary
|
|
42
|
+
}],
|
|
43
|
+
children: initial
|
|
44
|
+
})
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
// Read receipt indicators
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
|
|
52
|
+
function ReadReceipt({
|
|
53
|
+
status
|
|
54
|
+
}) {
|
|
55
|
+
if (!status || status === 'failed') return null;
|
|
56
|
+
if (status === 'sending') {
|
|
57
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
58
|
+
style: styles.statusIndicator,
|
|
59
|
+
children: " ..."
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if (status === 'sent') {
|
|
63
|
+
return /*#__PURE__*/_jsxs(Text, {
|
|
64
|
+
style: styles.checkmark,
|
|
65
|
+
children: [" ", '\u2713']
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (status === 'read') {
|
|
69
|
+
return /*#__PURE__*/_jsxs(Text, {
|
|
70
|
+
style: styles.checkmarkRead,
|
|
71
|
+
children: [" ", '\u2713\u2713']
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
// Attachment renderers
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
|
|
81
|
+
function isImageAttachment(attachment) {
|
|
82
|
+
return attachment.contentType.startsWith('image/');
|
|
83
|
+
}
|
|
84
|
+
function formatFileSize(bytes) {
|
|
85
|
+
if (bytes < 1024) return `${bytes} B`;
|
|
86
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
|
|
87
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
88
|
+
}
|
|
89
|
+
function ImageAttachmentView({
|
|
90
|
+
attachment
|
|
91
|
+
}) {
|
|
92
|
+
const [visible, setVisible] = useState(false);
|
|
93
|
+
const screenWidth = Dimensions.get('window').width;
|
|
94
|
+
const screenHeight = Dimensions.get('window').height;
|
|
95
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
96
|
+
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
97
|
+
onPress: () => setVisible(true),
|
|
98
|
+
accessibilityLabel: attachment.name,
|
|
99
|
+
accessibilityRole: "image",
|
|
100
|
+
children: /*#__PURE__*/_jsx(Image, {
|
|
101
|
+
source: {
|
|
102
|
+
uri: attachment.url
|
|
103
|
+
},
|
|
104
|
+
style: styles.attachmentImage,
|
|
105
|
+
resizeMode: "cover"
|
|
106
|
+
})
|
|
107
|
+
}), /*#__PURE__*/_jsx(Modal, {
|
|
108
|
+
visible: visible,
|
|
109
|
+
transparent: true,
|
|
110
|
+
animationType: "fade",
|
|
111
|
+
onRequestClose: () => setVisible(false),
|
|
112
|
+
children: /*#__PURE__*/_jsxs(Pressable, {
|
|
113
|
+
style: styles.imageModalBackdrop,
|
|
114
|
+
onPress: () => setVisible(false),
|
|
115
|
+
children: [/*#__PURE__*/_jsx(Image, {
|
|
116
|
+
source: {
|
|
117
|
+
uri: attachment.url
|
|
118
|
+
},
|
|
119
|
+
style: {
|
|
120
|
+
width: screenWidth,
|
|
121
|
+
height: screenHeight * 0.8
|
|
122
|
+
},
|
|
123
|
+
resizeMode: "contain"
|
|
124
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
125
|
+
style: styles.imageModalClose,
|
|
126
|
+
children: '\u2715'
|
|
127
|
+
})]
|
|
128
|
+
})
|
|
129
|
+
})]
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
function AttachmentView({
|
|
133
|
+
attachment,
|
|
134
|
+
isAgent,
|
|
135
|
+
isDark
|
|
136
|
+
}) {
|
|
137
|
+
if (isImageAttachment(attachment)) {
|
|
138
|
+
return /*#__PURE__*/_jsx(ImageAttachmentView, {
|
|
139
|
+
attachment: attachment
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
return /*#__PURE__*/_jsxs(Pressable, {
|
|
143
|
+
onPress: () => Linking.openURL(attachment.url).catch(() => {}),
|
|
144
|
+
style: [styles.fileAttachment, isDark && styles.fileAttachmentDark],
|
|
145
|
+
accessibilityRole: "link",
|
|
146
|
+
accessibilityLabel: `${attachment.name}, ${formatFileSize(attachment.size)}`,
|
|
147
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
148
|
+
style: styles.fileIcon,
|
|
149
|
+
children: '\ud83d\udcc4'
|
|
150
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
151
|
+
style: styles.fileDetails,
|
|
152
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
153
|
+
style: [styles.fileName, isAgent ? [styles.fileNameAgent, isDark && styles.fileNameAgentDark] : styles.fileNameContact],
|
|
154
|
+
numberOfLines: 1,
|
|
155
|
+
children: attachment.name
|
|
156
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
157
|
+
style: [styles.fileSizeText, isAgent ? [styles.fileSizeAgent, isDark && styles.fileSizeAgentDark] : styles.fileSizeContact],
|
|
158
|
+
children: formatFileSize(attachment.size)
|
|
159
|
+
})]
|
|
160
|
+
})]
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// ---------------------------------------------------------------------------
|
|
165
|
+
// Main component
|
|
166
|
+
// ---------------------------------------------------------------------------
|
|
167
|
+
|
|
168
|
+
export function ChatBubble({
|
|
169
|
+
message,
|
|
170
|
+
accentColor,
|
|
171
|
+
animated = false,
|
|
172
|
+
onRichAction
|
|
173
|
+
}) {
|
|
174
|
+
const {
|
|
175
|
+
theme
|
|
176
|
+
} = useContext(ParlrContext);
|
|
177
|
+
const isAgent = message.senderType === 'agent';
|
|
178
|
+
const accent = accentColor ?? theme.colors.primary;
|
|
179
|
+
const isFailed = message.status === 'failed';
|
|
180
|
+
const Wrapper = animated ? Animated.View : View;
|
|
181
|
+
const animationProps = animated ? {
|
|
182
|
+
entering: FadeInUp.duration(250).springify()
|
|
183
|
+
} : {};
|
|
184
|
+
const senderLabel = isAgent ? message.senderName ?? 'Agent' : 'You';
|
|
185
|
+
const timeLabel = formatTime(message.createdAt);
|
|
186
|
+
const statusLabel = isFailed ? ', failed to send' : '';
|
|
187
|
+
const hasAttachments = message.attachments && message.attachments.length > 0;
|
|
188
|
+
const hasImageAttachments = hasAttachments && message.attachments.some(isImageAttachment);
|
|
189
|
+
const richContent = message.metadata ? tryParseRichContent(message.metadata) : null;
|
|
190
|
+
return /*#__PURE__*/_jsxs(Wrapper, {
|
|
191
|
+
...animationProps,
|
|
192
|
+
style: [styles.row, isAgent ? styles.rowAgent : styles.rowContact],
|
|
193
|
+
accessibilityLabel: `${senderLabel}: ${message.content}, ${timeLabel}${statusLabel}`,
|
|
194
|
+
accessibilityRole: "text",
|
|
195
|
+
children: [isAgent && /*#__PURE__*/_jsx(AgentAvatar, {
|
|
196
|
+
name: message.senderName,
|
|
197
|
+
theme: theme
|
|
198
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
199
|
+
style: [styles.bubble, {
|
|
200
|
+
borderRadius: theme.borderRadius.bubble
|
|
201
|
+
}, isAgent ? {
|
|
202
|
+
backgroundColor: theme.colors.agentBubble,
|
|
203
|
+
borderBottomLeftRadius: 6
|
|
204
|
+
} : {
|
|
205
|
+
backgroundColor: theme.colors.contactBubble,
|
|
206
|
+
borderBottomRightRadius: 6
|
|
207
|
+
}, isFailed && styles.bubbleFailed],
|
|
208
|
+
children: [isAgent && message.senderName && /*#__PURE__*/_jsx(Text, {
|
|
209
|
+
style: [styles.senderName, {
|
|
210
|
+
color: theme.colors.textSecondary
|
|
211
|
+
}],
|
|
212
|
+
numberOfLines: 1,
|
|
213
|
+
children: message.senderName
|
|
214
|
+
}), hasAttachments && /*#__PURE__*/_jsx(View, {
|
|
215
|
+
style: styles.attachmentsContainer,
|
|
216
|
+
children: message.attachments.map(att => /*#__PURE__*/_jsx(AttachmentView, {
|
|
217
|
+
attachment: att,
|
|
218
|
+
isAgent: isAgent,
|
|
219
|
+
isDark: theme.colors.background === '#111827' || theme.colors.background.toLowerCase() < '#888888'
|
|
220
|
+
}, att.id))
|
|
221
|
+
}), message.content.length > 0 && !hasImageAttachments && /*#__PURE__*/_jsx(Text, {
|
|
222
|
+
style: [styles.content, {
|
|
223
|
+
color: isAgent ? theme.colors.agentText : theme.colors.contactText
|
|
224
|
+
}],
|
|
225
|
+
children: message.content
|
|
226
|
+
}), richContent && /*#__PURE__*/_jsx(RichMessage, {
|
|
227
|
+
content: richContent,
|
|
228
|
+
onAction: onRichAction,
|
|
229
|
+
accentColor: accent
|
|
230
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
231
|
+
style: styles.meta,
|
|
232
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
233
|
+
style: [styles.time, {
|
|
234
|
+
color: isAgent ? theme.colors.textSecondary : 'rgba(255, 255, 255, 0.7)'
|
|
235
|
+
}],
|
|
236
|
+
children: formatTime(message.createdAt)
|
|
237
|
+
}), !isAgent && /*#__PURE__*/_jsx(ReadReceipt, {
|
|
238
|
+
status: message.status
|
|
239
|
+
}), isFailed && /*#__PURE__*/_jsx(Text, {
|
|
240
|
+
style: [styles.failedIndicator, {
|
|
241
|
+
color: theme.colors.error
|
|
242
|
+
}],
|
|
243
|
+
children: " !"
|
|
244
|
+
})]
|
|
245
|
+
})]
|
|
246
|
+
})]
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
const styles = StyleSheet.create({
|
|
250
|
+
row: {
|
|
251
|
+
flexDirection: 'row',
|
|
252
|
+
marginVertical: 3,
|
|
253
|
+
paddingHorizontal: 12
|
|
254
|
+
},
|
|
255
|
+
rowAgent: {
|
|
256
|
+
justifyContent: 'flex-start',
|
|
257
|
+
alignItems: 'flex-end'
|
|
258
|
+
},
|
|
259
|
+
rowContact: {
|
|
260
|
+
justifyContent: 'flex-end',
|
|
261
|
+
alignItems: 'flex-end'
|
|
262
|
+
},
|
|
263
|
+
avatar: {
|
|
264
|
+
width: 30,
|
|
265
|
+
height: 30,
|
|
266
|
+
borderRadius: 15,
|
|
267
|
+
justifyContent: 'center',
|
|
268
|
+
alignItems: 'center',
|
|
269
|
+
marginRight: 8,
|
|
270
|
+
marginBottom: 2
|
|
271
|
+
},
|
|
272
|
+
avatarText: {
|
|
273
|
+
fontSize: 13,
|
|
274
|
+
fontWeight: '600'
|
|
275
|
+
},
|
|
276
|
+
bubble: {
|
|
277
|
+
maxWidth: '75%',
|
|
278
|
+
paddingHorizontal: 14,
|
|
279
|
+
paddingVertical: 10
|
|
280
|
+
},
|
|
281
|
+
bubbleFailed: {
|
|
282
|
+
opacity: 0.6
|
|
283
|
+
},
|
|
284
|
+
senderName: {
|
|
285
|
+
fontSize: 12,
|
|
286
|
+
fontWeight: '600',
|
|
287
|
+
marginBottom: 3
|
|
288
|
+
},
|
|
289
|
+
content: {
|
|
290
|
+
fontSize: 15,
|
|
291
|
+
lineHeight: 21
|
|
292
|
+
},
|
|
293
|
+
meta: {
|
|
294
|
+
flexDirection: 'row',
|
|
295
|
+
alignItems: 'center',
|
|
296
|
+
marginTop: 4,
|
|
297
|
+
alignSelf: 'flex-end'
|
|
298
|
+
},
|
|
299
|
+
time: {
|
|
300
|
+
fontSize: 11
|
|
301
|
+
},
|
|
302
|
+
statusIndicator: {
|
|
303
|
+
fontSize: 11,
|
|
304
|
+
color: 'rgba(255, 255, 255, 0.7)'
|
|
305
|
+
},
|
|
306
|
+
failedIndicator: {
|
|
307
|
+
fontSize: 12,
|
|
308
|
+
fontWeight: '700'
|
|
309
|
+
},
|
|
310
|
+
checkmark: {
|
|
311
|
+
fontSize: 11,
|
|
312
|
+
color: 'rgba(255, 255, 255, 0.7)'
|
|
313
|
+
},
|
|
314
|
+
checkmarkRead: {
|
|
315
|
+
fontSize: 11,
|
|
316
|
+
color: '#22c55e'
|
|
317
|
+
},
|
|
318
|
+
// Attachments
|
|
319
|
+
attachmentsContainer: {
|
|
320
|
+
marginBottom: 6,
|
|
321
|
+
gap: 4
|
|
322
|
+
},
|
|
323
|
+
attachmentImage: {
|
|
324
|
+
width: 220,
|
|
325
|
+
height: 165,
|
|
326
|
+
borderRadius: 10
|
|
327
|
+
},
|
|
328
|
+
imageModalBackdrop: {
|
|
329
|
+
flex: 1,
|
|
330
|
+
backgroundColor: 'rgba(0, 0, 0, 0.95)',
|
|
331
|
+
justifyContent: 'center',
|
|
332
|
+
alignItems: 'center'
|
|
333
|
+
},
|
|
334
|
+
imageModalClose: {
|
|
335
|
+
position: 'absolute',
|
|
336
|
+
top: 60,
|
|
337
|
+
right: 20,
|
|
338
|
+
color: '#ffffff',
|
|
339
|
+
fontSize: 28,
|
|
340
|
+
fontWeight: '600'
|
|
341
|
+
},
|
|
342
|
+
fileAttachment: {
|
|
343
|
+
flexDirection: 'row',
|
|
344
|
+
alignItems: 'center',
|
|
345
|
+
backgroundColor: 'rgba(0, 0, 0, 0.05)',
|
|
346
|
+
borderRadius: 8,
|
|
347
|
+
padding: 8
|
|
348
|
+
},
|
|
349
|
+
fileAttachmentDark: {
|
|
350
|
+
backgroundColor: 'rgba(255, 255, 255, 0.05)'
|
|
351
|
+
},
|
|
352
|
+
fileIcon: {
|
|
353
|
+
fontSize: 24,
|
|
354
|
+
marginRight: 8
|
|
355
|
+
},
|
|
356
|
+
fileDetails: {
|
|
357
|
+
flex: 1
|
|
358
|
+
},
|
|
359
|
+
fileName: {
|
|
360
|
+
fontSize: 13,
|
|
361
|
+
fontWeight: '500'
|
|
362
|
+
},
|
|
363
|
+
fileNameAgent: {
|
|
364
|
+
color: '#0f172a'
|
|
365
|
+
},
|
|
366
|
+
fileNameAgentDark: {
|
|
367
|
+
color: '#e2e8f0'
|
|
368
|
+
},
|
|
369
|
+
fileNameContact: {
|
|
370
|
+
color: '#ffffff'
|
|
371
|
+
},
|
|
372
|
+
fileSizeText: {
|
|
373
|
+
fontSize: 11,
|
|
374
|
+
marginTop: 1
|
|
375
|
+
},
|
|
376
|
+
fileSizeAgent: {
|
|
377
|
+
color: '#94a3b8'
|
|
378
|
+
},
|
|
379
|
+
fileSizeAgentDark: {
|
|
380
|
+
color: '#64748b'
|
|
381
|
+
},
|
|
382
|
+
fileSizeContact: {
|
|
383
|
+
color: 'rgba(255, 255, 255, 0.7)'
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
//# sourceMappingURL=ChatBubble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useContext","useState","Dimensions","Image","Linking","Modal","Pressable","StyleSheet","Text","View","Animated","FadeInUp","ParlrContext","RichMessage","tryParseRichContent","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","formatTime","iso","d","Date","toLocaleTimeString","hour","minute","AgentAvatar","name","theme","initial","charAt","toUpperCase","style","styles","avatar","backgroundColor","colors","surfaceDark","accessibilityLabel","children","avatarText","color","textSecondary","ReadReceipt","status","statusIndicator","checkmark","checkmarkRead","isImageAttachment","attachment","contentType","startsWith","formatFileSize","bytes","toFixed","ImageAttachmentView","visible","setVisible","screenWidth","get","width","screenHeight","height","onPress","accessibilityRole","source","uri","url","attachmentImage","resizeMode","transparent","animationType","onRequestClose","imageModalBackdrop","imageModalClose","AttachmentView","isAgent","isDark","openURL","catch","fileAttachment","fileAttachmentDark","size","fileIcon","fileDetails","fileName","fileNameAgent","fileNameAgentDark","fileNameContact","numberOfLines","fileSizeText","fileSizeAgent","fileSizeAgentDark","fileSizeContact","ChatBubble","message","accentColor","animated","onRichAction","senderType","accent","primary","isFailed","Wrapper","animationProps","entering","duration","springify","senderLabel","senderName","timeLabel","createdAt","statusLabel","hasAttachments","attachments","length","hasImageAttachments","some","richContent","metadata","row","rowAgent","rowContact","content","bubble","borderRadius","agentBubble","borderBottomLeftRadius","contactBubble","borderBottomRightRadius","bubbleFailed","attachmentsContainer","map","att","background","toLowerCase","id","agentText","contactText","onAction","meta","time","failedIndicator","error","create","flexDirection","marginVertical","paddingHorizontal","justifyContent","alignItems","marginRight","marginBottom","fontSize","fontWeight","maxWidth","paddingVertical","opacity","lineHeight","marginTop","alignSelf","gap","flex","position","top","right","padding"],"sourceRoot":"../../../src","sources":["components/ChatBubble.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Parlr React Native SDK - Empty State
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
//
|
|
7
|
+
// Displayed when the user hasn't started a conversation yet.
|
|
8
|
+
// Shows a friendly welcome message with a chat icon.
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
|
|
11
|
+
import React from 'react';
|
|
12
|
+
import { StyleSheet, Text, View, useColorScheme } from 'react-native';
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
const DEFAULTS_FR = {
|
|
15
|
+
title: 'Besoin d\u2019aide ?',
|
|
16
|
+
description: 'Notre equipe est la pour vous aider. Envoyez-nous un message et nous vous repondrons au plus vite.'
|
|
17
|
+
};
|
|
18
|
+
const DEFAULTS_EN = {
|
|
19
|
+
title: 'Need help?',
|
|
20
|
+
description: 'Our team is here to help. Send us a message and we\u2019ll get back to you as soon as possible.'
|
|
21
|
+
};
|
|
22
|
+
function getDefaults(locale) {
|
|
23
|
+
if (locale?.startsWith('en')) return DEFAULTS_EN;
|
|
24
|
+
return DEFAULTS_FR;
|
|
25
|
+
}
|
|
26
|
+
export function EmptyState({
|
|
27
|
+
title,
|
|
28
|
+
description,
|
|
29
|
+
accentColor,
|
|
30
|
+
locale
|
|
31
|
+
}) {
|
|
32
|
+
const isDark = useColorScheme() === 'dark';
|
|
33
|
+
const defaults = getDefaults(locale);
|
|
34
|
+
const accent = accentColor ?? '#6366f1';
|
|
35
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
36
|
+
style: styles.container,
|
|
37
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
38
|
+
style: [styles.iconContainer, {
|
|
39
|
+
backgroundColor: accent + '18'
|
|
40
|
+
}],
|
|
41
|
+
accessibilityLabel: "Chat icon",
|
|
42
|
+
accessibilityRole: "image",
|
|
43
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
44
|
+
style: [styles.iconBubble, {
|
|
45
|
+
backgroundColor: accent
|
|
46
|
+
}],
|
|
47
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
48
|
+
style: styles.iconText,
|
|
49
|
+
children: "..."
|
|
50
|
+
})
|
|
51
|
+
})
|
|
52
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
53
|
+
style: [styles.title, isDark && styles.titleDark],
|
|
54
|
+
children: title ?? defaults.title
|
|
55
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
56
|
+
style: [styles.description, isDark && styles.descriptionDark],
|
|
57
|
+
children: description ?? defaults.description
|
|
58
|
+
})]
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
const styles = StyleSheet.create({
|
|
62
|
+
container: {
|
|
63
|
+
flex: 1,
|
|
64
|
+
justifyContent: 'center',
|
|
65
|
+
alignItems: 'center',
|
|
66
|
+
paddingHorizontal: 40
|
|
67
|
+
},
|
|
68
|
+
iconContainer: {
|
|
69
|
+
width: 80,
|
|
70
|
+
height: 80,
|
|
71
|
+
borderRadius: 40,
|
|
72
|
+
justifyContent: 'center',
|
|
73
|
+
alignItems: 'center',
|
|
74
|
+
marginBottom: 24
|
|
75
|
+
},
|
|
76
|
+
iconBubble: {
|
|
77
|
+
width: 44,
|
|
78
|
+
height: 36,
|
|
79
|
+
borderRadius: 18,
|
|
80
|
+
justifyContent: 'center',
|
|
81
|
+
alignItems: 'center'
|
|
82
|
+
},
|
|
83
|
+
iconText: {
|
|
84
|
+
color: '#ffffff',
|
|
85
|
+
fontSize: 20,
|
|
86
|
+
fontWeight: '700',
|
|
87
|
+
marginTop: -4,
|
|
88
|
+
letterSpacing: 2
|
|
89
|
+
},
|
|
90
|
+
title: {
|
|
91
|
+
fontSize: 22,
|
|
92
|
+
fontWeight: '700',
|
|
93
|
+
color: '#0f172a',
|
|
94
|
+
textAlign: 'center',
|
|
95
|
+
marginBottom: 10
|
|
96
|
+
},
|
|
97
|
+
titleDark: {
|
|
98
|
+
color: '#f1f5f9'
|
|
99
|
+
},
|
|
100
|
+
description: {
|
|
101
|
+
fontSize: 15,
|
|
102
|
+
lineHeight: 22,
|
|
103
|
+
color: '#64748b',
|
|
104
|
+
textAlign: 'center'
|
|
105
|
+
},
|
|
106
|
+
descriptionDark: {
|
|
107
|
+
color: '#94a3b8'
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=EmptyState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","Text","View","useColorScheme","jsx","_jsx","jsxs","_jsxs","DEFAULTS_FR","title","description","DEFAULTS_EN","getDefaults","locale","startsWith","EmptyState","accentColor","isDark","defaults","accent","style","styles","container","children","iconContainer","backgroundColor","accessibilityLabel","accessibilityRole","iconBubble","iconText","titleDark","descriptionDark","create","flex","justifyContent","alignItems","paddingHorizontal","width","height","borderRadius","marginBottom","color","fontSize","fontWeight","marginTop","letterSpacing","textAlign","lineHeight"],"sourceRoot":"../../../src","sources":["components/EmptyState.tsx"],"mappings":"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","ignoreList":[]}
|