@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.
Files changed (223) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +918 -0
  3. package/lib/commonjs/components/AttachmentPicker.js +292 -0
  4. package/lib/commonjs/components/AttachmentPicker.js.map +1 -0
  5. package/lib/commonjs/components/AttachmentPreview.js +200 -0
  6. package/lib/commonjs/components/AttachmentPreview.js.map +1 -0
  7. package/lib/commonjs/components/ChatBubble.js +391 -0
  8. package/lib/commonjs/components/ChatBubble.js.map +1 -0
  9. package/lib/commonjs/components/EmptyState.js +115 -0
  10. package/lib/commonjs/components/EmptyState.js.map +1 -0
  11. package/lib/commonjs/components/ParlrChat.js +745 -0
  12. package/lib/commonjs/components/ParlrChat.js.map +1 -0
  13. package/lib/commonjs/components/ParlrConversationList.js +509 -0
  14. package/lib/commonjs/components/ParlrConversationList.js.map +1 -0
  15. package/lib/commonjs/components/PreChatForm.js +263 -0
  16. package/lib/commonjs/components/PreChatForm.js.map +1 -0
  17. package/lib/commonjs/components/RichMessage.js +284 -0
  18. package/lib/commonjs/components/RichMessage.js.map +1 -0
  19. package/lib/commonjs/components/SatisfactionSurvey.js +292 -0
  20. package/lib/commonjs/components/SatisfactionSurvey.js.map +1 -0
  21. package/lib/commonjs/components/TypingIndicator.js +86 -0
  22. package/lib/commonjs/components/TypingIndicator.js.map +1 -0
  23. package/lib/commonjs/core/api.js +310 -0
  24. package/lib/commonjs/core/api.js.map +1 -0
  25. package/lib/commonjs/core/config.js +40 -0
  26. package/lib/commonjs/core/config.js.map +1 -0
  27. package/lib/commonjs/core/errors.js +73 -0
  28. package/lib/commonjs/core/errors.js.map +1 -0
  29. package/lib/commonjs/core/offlineQueue.js +89 -0
  30. package/lib/commonjs/core/offlineQueue.js.map +1 -0
  31. package/lib/commonjs/core/pushNotifications.js +21 -0
  32. package/lib/commonjs/core/pushNotifications.js.map +1 -0
  33. package/lib/commonjs/core/session.js +130 -0
  34. package/lib/commonjs/core/session.js.map +1 -0
  35. package/lib/commonjs/core/theme.js +110 -0
  36. package/lib/commonjs/core/theme.js.map +1 -0
  37. package/lib/commonjs/core/types.js +6 -0
  38. package/lib/commonjs/core/types.js.map +1 -0
  39. package/lib/commonjs/core/websocket.js +245 -0
  40. package/lib/commonjs/core/websocket.js.map +1 -0
  41. package/lib/commonjs/hooks/useChat.js +462 -0
  42. package/lib/commonjs/hooks/useChat.js.map +1 -0
  43. package/lib/commonjs/hooks/useParlr.js +44 -0
  44. package/lib/commonjs/hooks/useParlr.js.map +1 -0
  45. package/lib/commonjs/index.js +185 -0
  46. package/lib/commonjs/index.js.map +1 -0
  47. package/lib/commonjs/package.json +1 -0
  48. package/lib/commonjs/provider/ParlrContext.js +38 -0
  49. package/lib/commonjs/provider/ParlrContext.js.map +1 -0
  50. package/lib/commonjs/provider/ParlrProvider.js +256 -0
  51. package/lib/commonjs/provider/ParlrProvider.js.map +1 -0
  52. package/lib/module/components/AttachmentPicker.js +287 -0
  53. package/lib/module/components/AttachmentPicker.js.map +1 -0
  54. package/lib/module/components/AttachmentPreview.js +195 -0
  55. package/lib/module/components/AttachmentPreview.js.map +1 -0
  56. package/lib/module/components/ChatBubble.js +386 -0
  57. package/lib/module/components/ChatBubble.js.map +1 -0
  58. package/lib/module/components/EmptyState.js +110 -0
  59. package/lib/module/components/EmptyState.js.map +1 -0
  60. package/lib/module/components/ParlrChat.js +740 -0
  61. package/lib/module/components/ParlrChat.js.map +1 -0
  62. package/lib/module/components/ParlrConversationList.js +504 -0
  63. package/lib/module/components/ParlrConversationList.js.map +1 -0
  64. package/lib/module/components/PreChatForm.js +258 -0
  65. package/lib/module/components/PreChatForm.js.map +1 -0
  66. package/lib/module/components/RichMessage.js +280 -0
  67. package/lib/module/components/RichMessage.js.map +1 -0
  68. package/lib/module/components/SatisfactionSurvey.js +287 -0
  69. package/lib/module/components/SatisfactionSurvey.js.map +1 -0
  70. package/lib/module/components/TypingIndicator.js +81 -0
  71. package/lib/module/components/TypingIndicator.js.map +1 -0
  72. package/lib/module/core/api.js +305 -0
  73. package/lib/module/core/api.js.map +1 -0
  74. package/lib/module/core/config.js +36 -0
  75. package/lib/module/core/config.js.map +1 -0
  76. package/lib/module/core/errors.js +64 -0
  77. package/lib/module/core/errors.js.map +1 -0
  78. package/lib/module/core/offlineQueue.js +82 -0
  79. package/lib/module/core/offlineQueue.js.map +1 -0
  80. package/lib/module/core/pushNotifications.js +16 -0
  81. package/lib/module/core/pushNotifications.js.map +1 -0
  82. package/lib/module/core/session.js +122 -0
  83. package/lib/module/core/session.js.map +1 -0
  84. package/lib/module/core/theme.js +105 -0
  85. package/lib/module/core/theme.js.map +1 -0
  86. package/lib/module/core/types.js +4 -0
  87. package/lib/module/core/types.js.map +1 -0
  88. package/lib/module/core/websocket.js +241 -0
  89. package/lib/module/core/websocket.js.map +1 -0
  90. package/lib/module/hooks/useChat.js +458 -0
  91. package/lib/module/hooks/useChat.js.map +1 -0
  92. package/lib/module/hooks/useParlr.js +40 -0
  93. package/lib/module/hooks/useParlr.js.map +1 -0
  94. package/lib/module/index.js +58 -0
  95. package/lib/module/index.js.map +1 -0
  96. package/lib/module/package.json +1 -0
  97. package/lib/module/provider/ParlrContext.js +35 -0
  98. package/lib/module/provider/ParlrContext.js.map +1 -0
  99. package/lib/module/provider/ParlrProvider.js +251 -0
  100. package/lib/module/provider/ParlrProvider.js.map +1 -0
  101. package/lib/typescript/commonjs/components/AttachmentPicker.d.ts +23 -0
  102. package/lib/typescript/commonjs/components/AttachmentPicker.d.ts.map +1 -0
  103. package/lib/typescript/commonjs/components/AttachmentPreview.d.ts +16 -0
  104. package/lib/typescript/commonjs/components/AttachmentPreview.d.ts.map +1 -0
  105. package/lib/typescript/commonjs/components/ChatBubble.d.ts +14 -0
  106. package/lib/typescript/commonjs/components/ChatBubble.d.ts.map +1 -0
  107. package/lib/typescript/commonjs/components/EmptyState.d.ts +10 -0
  108. package/lib/typescript/commonjs/components/EmptyState.d.ts.map +1 -0
  109. package/lib/typescript/commonjs/components/ParlrChat.d.ts +34 -0
  110. package/lib/typescript/commonjs/components/ParlrChat.d.ts.map +1 -0
  111. package/lib/typescript/commonjs/components/ParlrConversationList.d.ts +17 -0
  112. package/lib/typescript/commonjs/components/ParlrConversationList.d.ts.map +1 -0
  113. package/lib/typescript/commonjs/components/PreChatForm.d.ts +20 -0
  114. package/lib/typescript/commonjs/components/PreChatForm.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/components/RichMessage.d.ts +41 -0
  116. package/lib/typescript/commonjs/components/RichMessage.d.ts.map +1 -0
  117. package/lib/typescript/commonjs/components/SatisfactionSurvey.d.ts +17 -0
  118. package/lib/typescript/commonjs/components/SatisfactionSurvey.d.ts.map +1 -0
  119. package/lib/typescript/commonjs/components/TypingIndicator.d.ts +7 -0
  120. package/lib/typescript/commonjs/components/TypingIndicator.d.ts.map +1 -0
  121. package/lib/typescript/commonjs/core/api.d.ts +37 -0
  122. package/lib/typescript/commonjs/core/api.d.ts.map +1 -0
  123. package/lib/typescript/commonjs/core/config.d.ts +9 -0
  124. package/lib/typescript/commonjs/core/config.d.ts.map +1 -0
  125. package/lib/typescript/commonjs/core/errors.d.ts +35 -0
  126. package/lib/typescript/commonjs/core/errors.d.ts.map +1 -0
  127. package/lib/typescript/commonjs/core/offlineQueue.d.ts +16 -0
  128. package/lib/typescript/commonjs/core/offlineQueue.d.ts.map +1 -0
  129. package/lib/typescript/commonjs/core/pushNotifications.d.ts +6 -0
  130. package/lib/typescript/commonjs/core/pushNotifications.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/core/session.d.ts +15 -0
  132. package/lib/typescript/commonjs/core/session.d.ts.map +1 -0
  133. package/lib/typescript/commonjs/core/theme.d.ts +43 -0
  134. package/lib/typescript/commonjs/core/theme.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/core/types.d.ts +185 -0
  136. package/lib/typescript/commonjs/core/types.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/core/websocket.d.ts +17 -0
  138. package/lib/typescript/commonjs/core/websocket.d.ts.map +1 -0
  139. package/lib/typescript/commonjs/hooks/useChat.d.ts +35 -0
  140. package/lib/typescript/commonjs/hooks/useChat.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/hooks/useParlr.d.ts +11 -0
  142. package/lib/typescript/commonjs/hooks/useParlr.d.ts.map +1 -0
  143. package/lib/typescript/commonjs/index.d.ts +30 -0
  144. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  145. package/lib/typescript/commonjs/package.json +1 -0
  146. package/lib/typescript/commonjs/provider/ParlrContext.d.ts +13 -0
  147. package/lib/typescript/commonjs/provider/ParlrContext.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/provider/ParlrProvider.d.ts +5 -0
  149. package/lib/typescript/commonjs/provider/ParlrProvider.d.ts.map +1 -0
  150. package/lib/typescript/module/components/AttachmentPicker.d.ts +23 -0
  151. package/lib/typescript/module/components/AttachmentPicker.d.ts.map +1 -0
  152. package/lib/typescript/module/components/AttachmentPreview.d.ts +16 -0
  153. package/lib/typescript/module/components/AttachmentPreview.d.ts.map +1 -0
  154. package/lib/typescript/module/components/ChatBubble.d.ts +14 -0
  155. package/lib/typescript/module/components/ChatBubble.d.ts.map +1 -0
  156. package/lib/typescript/module/components/EmptyState.d.ts +10 -0
  157. package/lib/typescript/module/components/EmptyState.d.ts.map +1 -0
  158. package/lib/typescript/module/components/ParlrChat.d.ts +34 -0
  159. package/lib/typescript/module/components/ParlrChat.d.ts.map +1 -0
  160. package/lib/typescript/module/components/ParlrConversationList.d.ts +17 -0
  161. package/lib/typescript/module/components/ParlrConversationList.d.ts.map +1 -0
  162. package/lib/typescript/module/components/PreChatForm.d.ts +20 -0
  163. package/lib/typescript/module/components/PreChatForm.d.ts.map +1 -0
  164. package/lib/typescript/module/components/RichMessage.d.ts +41 -0
  165. package/lib/typescript/module/components/RichMessage.d.ts.map +1 -0
  166. package/lib/typescript/module/components/SatisfactionSurvey.d.ts +17 -0
  167. package/lib/typescript/module/components/SatisfactionSurvey.d.ts.map +1 -0
  168. package/lib/typescript/module/components/TypingIndicator.d.ts +7 -0
  169. package/lib/typescript/module/components/TypingIndicator.d.ts.map +1 -0
  170. package/lib/typescript/module/core/api.d.ts +37 -0
  171. package/lib/typescript/module/core/api.d.ts.map +1 -0
  172. package/lib/typescript/module/core/config.d.ts +9 -0
  173. package/lib/typescript/module/core/config.d.ts.map +1 -0
  174. package/lib/typescript/module/core/errors.d.ts +35 -0
  175. package/lib/typescript/module/core/errors.d.ts.map +1 -0
  176. package/lib/typescript/module/core/offlineQueue.d.ts +16 -0
  177. package/lib/typescript/module/core/offlineQueue.d.ts.map +1 -0
  178. package/lib/typescript/module/core/pushNotifications.d.ts +6 -0
  179. package/lib/typescript/module/core/pushNotifications.d.ts.map +1 -0
  180. package/lib/typescript/module/core/session.d.ts +15 -0
  181. package/lib/typescript/module/core/session.d.ts.map +1 -0
  182. package/lib/typescript/module/core/theme.d.ts +43 -0
  183. package/lib/typescript/module/core/theme.d.ts.map +1 -0
  184. package/lib/typescript/module/core/types.d.ts +185 -0
  185. package/lib/typescript/module/core/types.d.ts.map +1 -0
  186. package/lib/typescript/module/core/websocket.d.ts +17 -0
  187. package/lib/typescript/module/core/websocket.d.ts.map +1 -0
  188. package/lib/typescript/module/hooks/useChat.d.ts +35 -0
  189. package/lib/typescript/module/hooks/useChat.d.ts.map +1 -0
  190. package/lib/typescript/module/hooks/useParlr.d.ts +11 -0
  191. package/lib/typescript/module/hooks/useParlr.d.ts.map +1 -0
  192. package/lib/typescript/module/index.d.ts +30 -0
  193. package/lib/typescript/module/index.d.ts.map +1 -0
  194. package/lib/typescript/module/package.json +1 -0
  195. package/lib/typescript/module/provider/ParlrContext.d.ts +13 -0
  196. package/lib/typescript/module/provider/ParlrContext.d.ts.map +1 -0
  197. package/lib/typescript/module/provider/ParlrProvider.d.ts +5 -0
  198. package/lib/typescript/module/provider/ParlrProvider.d.ts.map +1 -0
  199. package/package.json +120 -0
  200. package/src/components/AttachmentPicker.tsx +310 -0
  201. package/src/components/AttachmentPreview.tsx +209 -0
  202. package/src/components/ChatBubble.tsx +424 -0
  203. package/src/components/EmptyState.tsx +118 -0
  204. package/src/components/ParlrChat.tsx +863 -0
  205. package/src/components/ParlrConversationList.tsx +559 -0
  206. package/src/components/PreChatForm.tsx +313 -0
  207. package/src/components/RichMessage.tsx +353 -0
  208. package/src/components/SatisfactionSurvey.tsx +333 -0
  209. package/src/components/TypingIndicator.tsx +89 -0
  210. package/src/core/api.ts +406 -0
  211. package/src/core/config.ts +39 -0
  212. package/src/core/errors.ts +68 -0
  213. package/src/core/offlineQueue.ts +94 -0
  214. package/src/core/pushNotifications.ts +22 -0
  215. package/src/core/session.ts +156 -0
  216. package/src/core/theme.ts +133 -0
  217. package/src/core/types.ts +237 -0
  218. package/src/core/websocket.ts +270 -0
  219. package/src/hooks/useChat.ts +534 -0
  220. package/src/hooks/useParlr.ts +43 -0
  221. package/src/index.ts +98 -0
  222. package/src/provider/ParlrContext.ts +40 -0
  223. 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":[]}