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