@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,287 @@
1
+ "use strict";
2
+
3
+ // ---------------------------------------------------------------------------
4
+ // Parlr React Native SDK - Attachment Picker
5
+ // ---------------------------------------------------------------------------
6
+ //
7
+ // Provides image and file picking capabilities for chat attachments.
8
+ // Uses expo-image-picker and expo-document-picker when available.
9
+ // Falls back gracefully with a user-facing alert if not installed.
10
+ // ---------------------------------------------------------------------------
11
+
12
+ import React, { useCallback, useContext } from 'react';
13
+ import { Alert, Pressable, StyleSheet, Text, View } from 'react-native';
14
+ import { ParlrContext } from "../provider/ParlrContext.js";
15
+
16
+ // ---------------------------------------------------------------------------
17
+ // Types
18
+ // ---------------------------------------------------------------------------
19
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
+ // ---------------------------------------------------------------------------
21
+ // Constants
22
+ // ---------------------------------------------------------------------------
23
+
24
+ const MAX_FILE_SIZE_DEFAULT = 25 * 1024 * 1024; // 25 MB
25
+
26
+ // ---------------------------------------------------------------------------
27
+ // i18n
28
+ // ---------------------------------------------------------------------------
29
+
30
+ function getI18n(locale) {
31
+ if (locale?.startsWith('en')) {
32
+ return {
33
+ photo: 'Photo',
34
+ camera: 'Camera',
35
+ file: 'File',
36
+ cancel: 'Cancel',
37
+ tooLarge: 'File is too large (max 25 MB)',
38
+ permissionDenied: 'Permission denied',
39
+ permissionMessage: 'Please allow access in your device settings.',
40
+ missingLib: 'Feature unavailable',
41
+ missingLibMessage: 'The required library is not installed.',
42
+ ok: 'OK'
43
+ };
44
+ }
45
+ return {
46
+ photo: 'Photo',
47
+ camera: 'Cam\u00e9ra',
48
+ file: 'Fichier',
49
+ cancel: 'Annuler',
50
+ tooLarge: 'Fichier trop volumineux (max 25 Mo)',
51
+ permissionDenied: 'Permission refus\u00e9e',
52
+ permissionMessage: 'Veuillez autoriser l\u2019acc\u00e8s dans les r\u00e9glages.',
53
+ missingLib: 'Fonctionnalit\u00e9 indisponible',
54
+ missingLibMessage: 'La librairie requise n\u2019est pas install\u00e9e.',
55
+ ok: 'OK'
56
+ };
57
+ }
58
+
59
+ // ---------------------------------------------------------------------------
60
+ // Dynamic imports (these packages are optional peer dependencies)
61
+ // ---------------------------------------------------------------------------
62
+
63
+ /* eslint-disable @typescript-eslint/no-explicit-any */
64
+ let ImagePicker = null;
65
+ let DocumentPicker = null;
66
+ /* eslint-enable @typescript-eslint/no-explicit-any */
67
+
68
+ try {
69
+ ImagePicker = require('expo-image-picker');
70
+ } catch {
71
+ // expo-image-picker not installed
72
+ }
73
+ try {
74
+ DocumentPicker = require('expo-document-picker');
75
+ } catch {
76
+ // expo-document-picker not installed
77
+ }
78
+
79
+ // ---------------------------------------------------------------------------
80
+ // Component
81
+ // ---------------------------------------------------------------------------
82
+
83
+ export function AttachmentPicker({
84
+ onFilePicked,
85
+ onDismiss,
86
+ maxFileSize = MAX_FILE_SIZE_DEFAULT,
87
+ accentColor: accentColorProp,
88
+ locale
89
+ }) {
90
+ const {
91
+ theme
92
+ } = useContext(ParlrContext);
93
+ const accentColor = accentColorProp ?? theme.colors.primary;
94
+ const i18n = getI18n(locale);
95
+ const checkFileSize = useCallback(size => {
96
+ if (size > maxFileSize) {
97
+ Alert.alert(i18n.tooLarge);
98
+ return false;
99
+ }
100
+ return true;
101
+ }, [maxFileSize, i18n.tooLarge]);
102
+ const handlePickPhoto = useCallback(async () => {
103
+ if (!ImagePicker) {
104
+ Alert.alert(i18n.missingLib, i18n.missingLibMessage);
105
+ return;
106
+ }
107
+ const permission = await ImagePicker.requestMediaLibraryPermissionsAsync();
108
+ if (!permission.granted) {
109
+ Alert.alert(i18n.permissionDenied, i18n.permissionMessage);
110
+ return;
111
+ }
112
+ const result = await ImagePicker.launchImageLibraryAsync({
113
+ mediaTypes: ['images'],
114
+ quality: 0.8,
115
+ allowsEditing: false
116
+ });
117
+ if (result.canceled || !result.assets?.[0]) return;
118
+ const asset = result.assets[0];
119
+ const size = asset.fileSize ?? 0;
120
+ if (!checkFileSize(size)) return;
121
+ onFilePicked({
122
+ uri: asset.uri,
123
+ name: asset.fileName ?? `photo_${Date.now()}.jpg`,
124
+ type: asset.mimeType ?? 'image/jpeg',
125
+ size
126
+ });
127
+ }, [onFilePicked, checkFileSize, i18n]);
128
+ const handlePickCamera = useCallback(async () => {
129
+ if (!ImagePicker) {
130
+ Alert.alert(i18n.missingLib, i18n.missingLibMessage);
131
+ return;
132
+ }
133
+ const permission = await ImagePicker.requestCameraPermissionsAsync();
134
+ if (!permission.granted) {
135
+ Alert.alert(i18n.permissionDenied, i18n.permissionMessage);
136
+ return;
137
+ }
138
+ const result = await ImagePicker.launchCameraAsync({
139
+ mediaTypes: ['images'],
140
+ quality: 0.8,
141
+ allowsEditing: false
142
+ });
143
+ if (result.canceled || !result.assets?.[0]) return;
144
+ const asset = result.assets[0];
145
+ const size = asset.fileSize ?? 0;
146
+ if (!checkFileSize(size)) return;
147
+ onFilePicked({
148
+ uri: asset.uri,
149
+ name: asset.fileName ?? `camera_${Date.now()}.jpg`,
150
+ type: asset.mimeType ?? 'image/jpeg',
151
+ size
152
+ });
153
+ }, [onFilePicked, checkFileSize, i18n]);
154
+ const handlePickFile = useCallback(async () => {
155
+ if (!DocumentPicker) {
156
+ Alert.alert(i18n.missingLib, i18n.missingLibMessage);
157
+ return;
158
+ }
159
+ const result = await DocumentPicker.getDocumentAsync({
160
+ copyToCacheDirectory: true
161
+ });
162
+ if (result.canceled || !result.assets?.[0]) return;
163
+ const asset = result.assets[0];
164
+ const size = asset.size ?? 0;
165
+ if (!checkFileSize(size)) return;
166
+ onFilePicked({
167
+ uri: asset.uri,
168
+ name: asset.name ?? `file_${Date.now()}`,
169
+ type: asset.mimeType ?? 'application/octet-stream',
170
+ size
171
+ });
172
+ }, [onFilePicked, checkFileSize, i18n]);
173
+ return /*#__PURE__*/_jsxs(View, {
174
+ style: [styles.root, {
175
+ backgroundColor: theme.colors.surface,
176
+ borderTopColor: theme.colors.border
177
+ }],
178
+ children: [/*#__PURE__*/_jsxs(View, {
179
+ style: styles.optionsRow,
180
+ children: [/*#__PURE__*/_jsxs(Pressable, {
181
+ onPress: handlePickPhoto,
182
+ style: [styles.option, {
183
+ backgroundColor: accentColor + '15'
184
+ }],
185
+ accessibilityRole: "button",
186
+ accessibilityLabel: i18n.photo,
187
+ children: [/*#__PURE__*/_jsx(Text, {
188
+ style: [styles.optionIcon, {
189
+ color: accentColor
190
+ }],
191
+ children: '\ud83d\uddbc'
192
+ }), /*#__PURE__*/_jsx(Text, {
193
+ style: [styles.optionLabel, {
194
+ color: theme.colors.textSecondary
195
+ }],
196
+ children: i18n.photo
197
+ })]
198
+ }), /*#__PURE__*/_jsxs(Pressable, {
199
+ onPress: handlePickCamera,
200
+ style: [styles.option, {
201
+ backgroundColor: accentColor + '15'
202
+ }],
203
+ accessibilityRole: "button",
204
+ accessibilityLabel: i18n.camera,
205
+ children: [/*#__PURE__*/_jsx(Text, {
206
+ style: [styles.optionIcon, {
207
+ color: accentColor
208
+ }],
209
+ children: '\ud83d\udcf7'
210
+ }), /*#__PURE__*/_jsx(Text, {
211
+ style: [styles.optionLabel, {
212
+ color: theme.colors.textSecondary
213
+ }],
214
+ children: i18n.camera
215
+ })]
216
+ }), /*#__PURE__*/_jsxs(Pressable, {
217
+ onPress: handlePickFile,
218
+ style: [styles.option, {
219
+ backgroundColor: accentColor + '15'
220
+ }],
221
+ accessibilityRole: "button",
222
+ accessibilityLabel: i18n.file,
223
+ children: [/*#__PURE__*/_jsx(Text, {
224
+ style: [styles.optionIcon, {
225
+ color: accentColor
226
+ }],
227
+ children: '\ud83d\udcc4'
228
+ }), /*#__PURE__*/_jsx(Text, {
229
+ style: [styles.optionLabel, {
230
+ color: theme.colors.textSecondary
231
+ }],
232
+ children: i18n.file
233
+ })]
234
+ })]
235
+ }), /*#__PURE__*/_jsx(Pressable, {
236
+ onPress: onDismiss,
237
+ style: styles.cancelButton,
238
+ accessibilityRole: "button",
239
+ accessibilityLabel: i18n.cancel,
240
+ children: /*#__PURE__*/_jsx(Text, {
241
+ style: [styles.cancelText, {
242
+ color: theme.colors.textSecondary
243
+ }],
244
+ children: i18n.cancel
245
+ })
246
+ })]
247
+ });
248
+ }
249
+
250
+ // ---------------------------------------------------------------------------
251
+ // Styles
252
+ // ---------------------------------------------------------------------------
253
+
254
+ const styles = StyleSheet.create({
255
+ root: {
256
+ paddingHorizontal: 16,
257
+ paddingVertical: 12,
258
+ borderTopWidth: StyleSheet.hairlineWidth
259
+ },
260
+ optionsRow: {
261
+ flexDirection: 'row',
262
+ gap: 12,
263
+ marginBottom: 8
264
+ },
265
+ option: {
266
+ flex: 1,
267
+ alignItems: 'center',
268
+ paddingVertical: 16,
269
+ borderRadius: 12
270
+ },
271
+ optionIcon: {
272
+ fontSize: 24,
273
+ marginBottom: 4
274
+ },
275
+ optionLabel: {
276
+ fontSize: 12,
277
+ fontWeight: '500'
278
+ },
279
+ cancelButton: {
280
+ alignItems: 'center',
281
+ paddingVertical: 8
282
+ },
283
+ cancelText: {
284
+ fontSize: 14
285
+ }
286
+ });
287
+ //# sourceMappingURL=AttachmentPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useContext","Alert","Pressable","StyleSheet","Text","View","ParlrContext","jsx","_jsx","jsxs","_jsxs","MAX_FILE_SIZE_DEFAULT","getI18n","locale","startsWith","photo","camera","file","cancel","tooLarge","permissionDenied","permissionMessage","missingLib","missingLibMessage","ok","ImagePicker","DocumentPicker","require","AttachmentPicker","onFilePicked","onDismiss","maxFileSize","accentColor","accentColorProp","theme","colors","primary","i18n","checkFileSize","size","alert","handlePickPhoto","permission","requestMediaLibraryPermissionsAsync","granted","result","launchImageLibraryAsync","mediaTypes","quality","allowsEditing","canceled","assets","asset","fileSize","uri","name","fileName","Date","now","type","mimeType","handlePickCamera","requestCameraPermissionsAsync","launchCameraAsync","handlePickFile","getDocumentAsync","copyToCacheDirectory","style","styles","root","backgroundColor","surface","borderTopColor","border","children","optionsRow","onPress","option","accessibilityRole","accessibilityLabel","optionIcon","color","optionLabel","textSecondary","cancelButton","cancelText","create","paddingHorizontal","paddingVertical","borderTopWidth","hairlineWidth","flexDirection","gap","marginBottom","flex","alignItems","borderRadius","fontSize","fontWeight"],"sourceRoot":"../../../src","sources":["components/AttachmentPicker.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+
3
+ // ---------------------------------------------------------------------------
4
+ // Parlr React Native SDK - Attachment Preview
5
+ // ---------------------------------------------------------------------------
6
+ //
7
+ // Shows a preview of the selected attachment before sending it.
8
+ // Supports image thumbnails and file name/size display.
9
+ // ---------------------------------------------------------------------------
10
+
11
+ import React from 'react';
12
+ import { Image, Pressable, StyleSheet, Text, View, useColorScheme } from 'react-native';
13
+
14
+ // ---------------------------------------------------------------------------
15
+ // Props
16
+ // ---------------------------------------------------------------------------
17
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
+ // ---------------------------------------------------------------------------
19
+ // Helpers
20
+ // ---------------------------------------------------------------------------
21
+
22
+ function formatFileSize(bytes) {
23
+ if (bytes < 1024) return `${bytes} B`;
24
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
25
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
26
+ }
27
+ function isImage(type) {
28
+ return type.startsWith('image/');
29
+ }
30
+ function getI18n(locale) {
31
+ if (locale?.startsWith('en')) {
32
+ return {
33
+ send: 'Send',
34
+ remove: 'Remove'
35
+ };
36
+ }
37
+ return {
38
+ send: 'Envoyer',
39
+ remove: 'Supprimer'
40
+ };
41
+ }
42
+
43
+ // ---------------------------------------------------------------------------
44
+ // Component
45
+ // ---------------------------------------------------------------------------
46
+
47
+ export function AttachmentPreview({
48
+ file,
49
+ onRemove,
50
+ onSend,
51
+ accentColor: accentColorProp,
52
+ locale
53
+ }) {
54
+ const isDark = useColorScheme() === 'dark';
55
+ const accentColor = accentColorProp ?? '#6366f1';
56
+ const i18n = getI18n(locale);
57
+ return /*#__PURE__*/_jsxs(View, {
58
+ style: [styles.root, isDark && styles.rootDark],
59
+ children: [/*#__PURE__*/_jsxs(View, {
60
+ style: [styles.previewCard, isDark && styles.previewCardDark],
61
+ children: [isImage(file.type) ? /*#__PURE__*/_jsx(Image, {
62
+ source: {
63
+ uri: file.uri
64
+ },
65
+ style: styles.imagePreview,
66
+ resizeMode: "cover",
67
+ accessibilityLabel: file.name
68
+ }) : /*#__PURE__*/_jsxs(View, {
69
+ style: styles.filePreview,
70
+ children: [/*#__PURE__*/_jsx(Text, {
71
+ style: styles.fileIcon,
72
+ children: '\ud83d\udcc4'
73
+ }), /*#__PURE__*/_jsxs(View, {
74
+ style: styles.fileInfo,
75
+ children: [/*#__PURE__*/_jsx(Text, {
76
+ style: [styles.fileName, isDark && styles.fileNameDark],
77
+ numberOfLines: 1,
78
+ children: file.name
79
+ }), /*#__PURE__*/_jsx(Text, {
80
+ style: [styles.fileSize, isDark && styles.fileSizeDark],
81
+ children: formatFileSize(file.size)
82
+ })]
83
+ })]
84
+ }), /*#__PURE__*/_jsx(Pressable, {
85
+ onPress: onRemove,
86
+ style: styles.removeButton,
87
+ hitSlop: 8,
88
+ accessibilityRole: "button",
89
+ accessibilityLabel: i18n.remove,
90
+ children: /*#__PURE__*/_jsx(Text, {
91
+ style: styles.removeIcon,
92
+ children: '\u2715'
93
+ })
94
+ })]
95
+ }), /*#__PURE__*/_jsx(Pressable, {
96
+ onPress: onSend,
97
+ style: [styles.sendButton, {
98
+ backgroundColor: accentColor
99
+ }],
100
+ accessibilityRole: "button",
101
+ accessibilityLabel: i18n.send,
102
+ children: /*#__PURE__*/_jsx(Text, {
103
+ style: styles.sendText,
104
+ children: i18n.send
105
+ })
106
+ })]
107
+ });
108
+ }
109
+
110
+ // ---------------------------------------------------------------------------
111
+ // Styles
112
+ // ---------------------------------------------------------------------------
113
+
114
+ const styles = StyleSheet.create({
115
+ root: {
116
+ backgroundColor: '#ffffff',
117
+ padding: 12,
118
+ borderTopWidth: StyleSheet.hairlineWidth,
119
+ borderTopColor: '#e2e8f0'
120
+ },
121
+ rootDark: {
122
+ backgroundColor: '#0f172a',
123
+ borderTopColor: '#1e293b'
124
+ },
125
+ previewCard: {
126
+ backgroundColor: '#f8fafc',
127
+ borderRadius: 12,
128
+ overflow: 'hidden',
129
+ marginBottom: 10,
130
+ position: 'relative'
131
+ },
132
+ previewCardDark: {
133
+ backgroundColor: '#1e293b'
134
+ },
135
+ imagePreview: {
136
+ width: '100%',
137
+ height: 200,
138
+ borderRadius: 12
139
+ },
140
+ filePreview: {
141
+ flexDirection: 'row',
142
+ alignItems: 'center',
143
+ padding: 14
144
+ },
145
+ fileIcon: {
146
+ fontSize: 32,
147
+ marginRight: 12
148
+ },
149
+ fileInfo: {
150
+ flex: 1
151
+ },
152
+ fileName: {
153
+ fontSize: 14,
154
+ fontWeight: '500',
155
+ color: '#0f172a',
156
+ marginBottom: 2
157
+ },
158
+ fileNameDark: {
159
+ color: '#f1f5f9'
160
+ },
161
+ fileSize: {
162
+ fontSize: 12,
163
+ color: '#64748b'
164
+ },
165
+ fileSizeDark: {
166
+ color: '#94a3b8'
167
+ },
168
+ removeButton: {
169
+ position: 'absolute',
170
+ top: 8,
171
+ right: 8,
172
+ width: 28,
173
+ height: 28,
174
+ borderRadius: 14,
175
+ backgroundColor: 'rgba(0, 0, 0, 0.5)',
176
+ justifyContent: 'center',
177
+ alignItems: 'center'
178
+ },
179
+ removeIcon: {
180
+ color: '#ffffff',
181
+ fontSize: 14,
182
+ fontWeight: '700'
183
+ },
184
+ sendButton: {
185
+ paddingVertical: 12,
186
+ borderRadius: 10,
187
+ alignItems: 'center'
188
+ },
189
+ sendText: {
190
+ color: '#ffffff',
191
+ fontSize: 15,
192
+ fontWeight: '600'
193
+ }
194
+ });
195
+ //# sourceMappingURL=AttachmentPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Image","Pressable","StyleSheet","Text","View","useColorScheme","jsx","_jsx","jsxs","_jsxs","formatFileSize","bytes","toFixed","isImage","type","startsWith","getI18n","locale","send","remove","AttachmentPreview","file","onRemove","onSend","accentColor","accentColorProp","isDark","i18n","style","styles","root","rootDark","children","previewCard","previewCardDark","source","uri","imagePreview","resizeMode","accessibilityLabel","name","filePreview","fileIcon","fileInfo","fileName","fileNameDark","numberOfLines","fileSize","fileSizeDark","size","onPress","removeButton","hitSlop","accessibilityRole","removeIcon","sendButton","backgroundColor","sendText","create","padding","borderTopWidth","hairlineWidth","borderTopColor","borderRadius","overflow","marginBottom","position","width","height","flexDirection","alignItems","fontSize","marginRight","flex","fontWeight","color","top","right","justifyContent","paddingVertical"],"sourceRoot":"../../../src","sources":["components/AttachmentPreview.tsx"],"mappings":"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","ignoreList":[]}