@droppii-org/chat-mobile 0.2.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 (294) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +101 -0
  3. package/lib/module/assets/images/icon_bot.png +0 -0
  4. package/lib/module/assets/images/index.js +9 -0
  5. package/lib/module/assets/images/index.js.map +1 -0
  6. package/lib/module/assets/images/tag_bot.png +0 -0
  7. package/lib/module/assets/images/tag_mall.png +0 -0
  8. package/lib/module/build-ignore.d.js +2 -0
  9. package/lib/module/build-ignore.d.js.map +1 -0
  10. package/lib/module/components/Avatar/Avatar.js +81 -0
  11. package/lib/module/components/Avatar/Avatar.js.map +1 -0
  12. package/lib/module/components/Avatar/Avatar.types.js +2 -0
  13. package/lib/module/components/Avatar/Avatar.types.js.map +1 -0
  14. package/lib/module/components/Avatar/Avatar.utils.js +44 -0
  15. package/lib/module/components/Avatar/Avatar.utils.js.map +1 -0
  16. package/lib/module/components/Avatar/AvatarBadge.js +28 -0
  17. package/lib/module/components/Avatar/AvatarBadge.js.map +1 -0
  18. package/lib/module/components/Avatar/DoubleAvatar.js +74 -0
  19. package/lib/module/components/Avatar/DoubleAvatar.js.map +1 -0
  20. package/lib/module/components/Avatar/SingleAvatar.js +53 -0
  21. package/lib/module/components/Avatar/SingleAvatar.js.map +1 -0
  22. package/lib/module/components/Avatar/index.js +7 -0
  23. package/lib/module/components/Avatar/index.js.map +1 -0
  24. package/lib/module/components/ThreadCard/AvatarSection.js +37 -0
  25. package/lib/module/components/ThreadCard/AvatarSection.js.map +1 -0
  26. package/lib/module/components/ThreadCard/NamePrefixIcon.js +36 -0
  27. package/lib/module/components/ThreadCard/NamePrefixIcon.js.map +1 -0
  28. package/lib/module/components/ThreadCard/ThreadCard.js +132 -0
  29. package/lib/module/components/ThreadCard/ThreadCard.js.map +1 -0
  30. package/lib/module/components/ThreadCard/UnreadBadge.js +35 -0
  31. package/lib/module/components/ThreadCard/UnreadBadge.js.map +1 -0
  32. package/lib/module/components/ThreadCard/index.js +7 -0
  33. package/lib/module/components/ThreadCard/index.js.map +1 -0
  34. package/lib/module/components/ThreadCard/thread-card.utils.js +51 -0
  35. package/lib/module/components/ThreadCard/thread-card.utils.js.map +1 -0
  36. package/lib/module/core/index.js +11 -0
  37. package/lib/module/core/index.js.map +1 -0
  38. package/lib/module/core/useChatListener.js +62 -0
  39. package/lib/module/core/useChatListener.js.map +1 -0
  40. package/lib/module/core/useUserListener.js +72 -0
  41. package/lib/module/core/useUserListener.js.map +1 -0
  42. package/lib/module/hooks/query-keys.js +10 -0
  43. package/lib/module/hooks/query-keys.js.map +1 -0
  44. package/lib/module/hooks/useChatMessages.js +163 -0
  45. package/lib/module/hooks/useChatMessages.js.map +1 -0
  46. package/lib/module/hooks/useConversationList.js +51 -0
  47. package/lib/module/hooks/useConversationList.js.map +1 -0
  48. package/lib/module/index.js +14 -0
  49. package/lib/module/index.js.map +1 -0
  50. package/lib/module/package.json +1 -0
  51. package/lib/module/screens/chat-detail/ChatAttachmentPanel.js +106 -0
  52. package/lib/module/screens/chat-detail/ChatAttachmentPanel.js.map +1 -0
  53. package/lib/module/screens/chat-detail/ChatComposer.js +288 -0
  54. package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -0
  55. package/lib/module/screens/chat-detail/ChatDay.js +65 -0
  56. package/lib/module/screens/chat-detail/ChatDay.js.map +1 -0
  57. package/lib/module/screens/chat-detail/ChatDetail.js +104 -0
  58. package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -0
  59. package/lib/module/screens/chat-detail/ChatDetailHeader.js +92 -0
  60. package/lib/module/screens/chat-detail/ChatDetailHeader.js.map +1 -0
  61. package/lib/module/screens/chat-detail/ChatList.js +145 -0
  62. package/lib/module/screens/chat-detail/ChatList.js.map +1 -0
  63. package/lib/module/screens/chat-detail/ChatLoadEarlier.js +23 -0
  64. package/lib/module/screens/chat-detail/ChatLoadEarlier.js.map +1 -0
  65. package/lib/module/screens/chat-detail/ChatQuickActions.js +85 -0
  66. package/lib/module/screens/chat-detail/ChatQuickActions.js.map +1 -0
  67. package/lib/module/screens/chat-detail/ChatScrollToBottom.js +12 -0
  68. package/lib/module/screens/chat-detail/ChatScrollToBottom.js.map +1 -0
  69. package/lib/module/screens/chat-detail/ChatTextBubble.js +62 -0
  70. package/lib/module/screens/chat-detail/ChatTextBubble.js.map +1 -0
  71. package/lib/module/screens/chat-detail/constants.js +59 -0
  72. package/lib/module/screens/chat-detail/constants.js.map +1 -0
  73. package/lib/module/screens/chat-detail/index.js +12 -0
  74. package/lib/module/screens/chat-detail/index.js.map +1 -0
  75. package/lib/module/screens/chat-detail/messages/ChatMessageBubble.js +24 -0
  76. package/lib/module/screens/chat-detail/messages/ChatMessageBubble.js.map +1 -0
  77. package/lib/module/screens/chat-detail/messages/types.js +4 -0
  78. package/lib/module/screens/chat-detail/messages/types.js.map +1 -0
  79. package/lib/module/screens/chat-detail/types.js +4 -0
  80. package/lib/module/screens/chat-detail/types.js.map +1 -0
  81. package/lib/module/screens/chat-detail/useChatActionPress.js +11 -0
  82. package/lib/module/screens/chat-detail/useChatActionPress.js.map +1 -0
  83. package/lib/module/screens/inbox/Inbox.js +134 -0
  84. package/lib/module/screens/inbox/Inbox.js.map +1 -0
  85. package/lib/module/screens/inbox/MessagesTab.js +58 -0
  86. package/lib/module/screens/inbox/MessagesTab.js.map +1 -0
  87. package/lib/module/screens/inbox/index.js +5 -0
  88. package/lib/module/screens/inbox/index.js.map +1 -0
  89. package/lib/module/services/apis.js +41 -0
  90. package/lib/module/services/apis.js.map +1 -0
  91. package/lib/module/services/index.js +5 -0
  92. package/lib/module/services/index.js.map +1 -0
  93. package/lib/module/services/message.js +38 -0
  94. package/lib/module/services/message.js.map +1 -0
  95. package/lib/module/store/conversation.js +89 -0
  96. package/lib/module/store/conversation.js.map +1 -0
  97. package/lib/module/store/index.js +6 -0
  98. package/lib/module/store/index.js.map +1 -0
  99. package/lib/module/store/storeConfig.js +19 -0
  100. package/lib/module/store/storeConfig.js.map +1 -0
  101. package/lib/module/store/user.js +25 -0
  102. package/lib/module/store/user.js.map +1 -0
  103. package/lib/module/translation/index.js +24 -0
  104. package/lib/module/translation/index.js.map +1 -0
  105. package/lib/module/translation/resources/i18n.js +10 -0
  106. package/lib/module/translation/resources/i18n.js.map +1 -0
  107. package/lib/module/types/auth.js +9 -0
  108. package/lib/module/types/auth.js.map +1 -0
  109. package/lib/module/types/chat.js +26 -0
  110. package/lib/module/types/chat.js.map +1 -0
  111. package/lib/module/types/message.js +16 -0
  112. package/lib/module/types/message.js.map +1 -0
  113. package/lib/module/utils/conversation.js +61 -0
  114. package/lib/module/utils/conversation.js.map +1 -0
  115. package/lib/module/utils/giftedChatMessage.js +90 -0
  116. package/lib/module/utils/giftedChatMessage.js.map +1 -0
  117. package/lib/module/utils/message.js +68 -0
  118. package/lib/module/utils/message.js.map +1 -0
  119. package/lib/module/utils/resolveMessageType.js +44 -0
  120. package/lib/module/utils/resolveMessageType.js.map +1 -0
  121. package/lib/typescript/package.json +1 -0
  122. package/lib/typescript/src/assets/images/index.d.ts +7 -0
  123. package/lib/typescript/src/assets/images/index.d.ts.map +1 -0
  124. package/lib/typescript/src/components/Avatar/Avatar.d.ts +4 -0
  125. package/lib/typescript/src/components/Avatar/Avatar.d.ts.map +1 -0
  126. package/lib/typescript/src/components/Avatar/Avatar.types.d.ts +18 -0
  127. package/lib/typescript/src/components/Avatar/Avatar.types.d.ts.map +1 -0
  128. package/lib/typescript/src/components/Avatar/Avatar.utils.d.ts +14 -0
  129. package/lib/typescript/src/components/Avatar/Avatar.utils.d.ts.map +1 -0
  130. package/lib/typescript/src/components/Avatar/AvatarBadge.d.ts +7 -0
  131. package/lib/typescript/src/components/Avatar/AvatarBadge.d.ts.map +1 -0
  132. package/lib/typescript/src/components/Avatar/DoubleAvatar.d.ts +13 -0
  133. package/lib/typescript/src/components/Avatar/DoubleAvatar.d.ts.map +1 -0
  134. package/lib/typescript/src/components/Avatar/SingleAvatar.d.ts +12 -0
  135. package/lib/typescript/src/components/Avatar/SingleAvatar.d.ts.map +1 -0
  136. package/lib/typescript/src/components/Avatar/index.d.ts +6 -0
  137. package/lib/typescript/src/components/Avatar/index.d.ts.map +1 -0
  138. package/lib/typescript/src/components/ThreadCard/AvatarSection.d.ts +8 -0
  139. package/lib/typescript/src/components/ThreadCard/AvatarSection.d.ts.map +1 -0
  140. package/lib/typescript/src/components/ThreadCard/NamePrefixIcon.d.ts +8 -0
  141. package/lib/typescript/src/components/ThreadCard/NamePrefixIcon.d.ts.map +1 -0
  142. package/lib/typescript/src/components/ThreadCard/ThreadCard.d.ts +11 -0
  143. package/lib/typescript/src/components/ThreadCard/ThreadCard.d.ts.map +1 -0
  144. package/lib/typescript/src/components/ThreadCard/UnreadBadge.d.ts +6 -0
  145. package/lib/typescript/src/components/ThreadCard/UnreadBadge.d.ts.map +1 -0
  146. package/lib/typescript/src/components/ThreadCard/index.d.ts +5 -0
  147. package/lib/typescript/src/components/ThreadCard/index.d.ts.map +1 -0
  148. package/lib/typescript/src/components/ThreadCard/thread-card.utils.d.ts +4 -0
  149. package/lib/typescript/src/components/ThreadCard/thread-card.utils.d.ts.map +1 -0
  150. package/lib/typescript/src/core/index.d.ts +3 -0
  151. package/lib/typescript/src/core/index.d.ts.map +1 -0
  152. package/lib/typescript/src/core/useChatListener.d.ts +2 -0
  153. package/lib/typescript/src/core/useChatListener.d.ts.map +1 -0
  154. package/lib/typescript/src/core/useUserListener.d.ts +2 -0
  155. package/lib/typescript/src/core/useUserListener.d.ts.map +1 -0
  156. package/lib/typescript/src/hooks/query-keys.d.ts +9 -0
  157. package/lib/typescript/src/hooks/query-keys.d.ts.map +1 -0
  158. package/lib/typescript/src/hooks/useChatMessages.d.ts +21 -0
  159. package/lib/typescript/src/hooks/useChatMessages.d.ts.map +1 -0
  160. package/lib/typescript/src/hooks/useConversationList.d.ts +8 -0
  161. package/lib/typescript/src/hooks/useConversationList.d.ts.map +1 -0
  162. package/lib/typescript/src/index.d.ts +14 -0
  163. package/lib/typescript/src/index.d.ts.map +1 -0
  164. package/lib/typescript/src/screens/chat-detail/ChatAttachmentPanel.d.ts +3 -0
  165. package/lib/typescript/src/screens/chat-detail/ChatAttachmentPanel.d.ts.map +1 -0
  166. package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts +3 -0
  167. package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -0
  168. package/lib/typescript/src/screens/chat-detail/ChatDay.d.ts +3 -0
  169. package/lib/typescript/src/screens/chat-detail/ChatDay.d.ts.map +1 -0
  170. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts +4 -0
  171. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -0
  172. package/lib/typescript/src/screens/chat-detail/ChatDetailHeader.d.ts +4 -0
  173. package/lib/typescript/src/screens/chat-detail/ChatDetailHeader.d.ts.map +1 -0
  174. package/lib/typescript/src/screens/chat-detail/ChatList.d.ts +3 -0
  175. package/lib/typescript/src/screens/chat-detail/ChatList.d.ts.map +1 -0
  176. package/lib/typescript/src/screens/chat-detail/ChatLoadEarlier.d.ts +3 -0
  177. package/lib/typescript/src/screens/chat-detail/ChatLoadEarlier.d.ts.map +1 -0
  178. package/lib/typescript/src/screens/chat-detail/ChatQuickActions.d.ts +3 -0
  179. package/lib/typescript/src/screens/chat-detail/ChatQuickActions.d.ts.map +1 -0
  180. package/lib/typescript/src/screens/chat-detail/ChatScrollToBottom.d.ts +2 -0
  181. package/lib/typescript/src/screens/chat-detail/ChatScrollToBottom.d.ts.map +1 -0
  182. package/lib/typescript/src/screens/chat-detail/ChatTextBubble.d.ts +3 -0
  183. package/lib/typescript/src/screens/chat-detail/ChatTextBubble.d.ts.map +1 -0
  184. package/lib/typescript/src/screens/chat-detail/constants.d.ts +17 -0
  185. package/lib/typescript/src/screens/chat-detail/constants.d.ts.map +1 -0
  186. package/lib/typescript/src/screens/chat-detail/index.d.ts +13 -0
  187. package/lib/typescript/src/screens/chat-detail/index.d.ts.map +1 -0
  188. package/lib/typescript/src/screens/chat-detail/messages/ChatMessageBubble.d.ts +3 -0
  189. package/lib/typescript/src/screens/chat-detail/messages/ChatMessageBubble.d.ts.map +1 -0
  190. package/lib/typescript/src/screens/chat-detail/messages/types.d.ts +13 -0
  191. package/lib/typescript/src/screens/chat-detail/messages/types.d.ts.map +1 -0
  192. package/lib/typescript/src/screens/chat-detail/types.d.ts +86 -0
  193. package/lib/typescript/src/screens/chat-detail/types.d.ts.map +1 -0
  194. package/lib/typescript/src/screens/chat-detail/useChatActionPress.d.ts +3 -0
  195. package/lib/typescript/src/screens/chat-detail/useChatActionPress.d.ts.map +1 -0
  196. package/lib/typescript/src/screens/inbox/Inbox.d.ts +10 -0
  197. package/lib/typescript/src/screens/inbox/Inbox.d.ts.map +1 -0
  198. package/lib/typescript/src/screens/inbox/MessagesTab.d.ts +7 -0
  199. package/lib/typescript/src/screens/inbox/MessagesTab.d.ts.map +1 -0
  200. package/lib/typescript/src/screens/inbox/index.d.ts +3 -0
  201. package/lib/typescript/src/screens/inbox/index.d.ts.map +1 -0
  202. package/lib/typescript/src/services/apis.d.ts +12 -0
  203. package/lib/typescript/src/services/apis.d.ts.map +1 -0
  204. package/lib/typescript/src/services/index.d.ts +3 -0
  205. package/lib/typescript/src/services/index.d.ts.map +1 -0
  206. package/lib/typescript/src/services/message.d.ts +21 -0
  207. package/lib/typescript/src/services/message.d.ts.map +1 -0
  208. package/lib/typescript/src/store/conversation.d.ts +24 -0
  209. package/lib/typescript/src/store/conversation.d.ts.map +1 -0
  210. package/lib/typescript/src/store/index.d.ts +4 -0
  211. package/lib/typescript/src/store/index.d.ts.map +1 -0
  212. package/lib/typescript/src/store/storeConfig.d.ts +4 -0
  213. package/lib/typescript/src/store/storeConfig.d.ts.map +1 -0
  214. package/lib/typescript/src/store/user.d.ts +12 -0
  215. package/lib/typescript/src/store/user.d.ts.map +1 -0
  216. package/lib/typescript/src/translation/index.d.ts +4 -0
  217. package/lib/typescript/src/translation/index.d.ts.map +1 -0
  218. package/lib/typescript/src/translation/resources/i18n.d.ts +5 -0
  219. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -0
  220. package/lib/typescript/src/types/auth.d.ts +24 -0
  221. package/lib/typescript/src/types/auth.d.ts.map +1 -0
  222. package/lib/typescript/src/types/chat.d.ts +99 -0
  223. package/lib/typescript/src/types/chat.d.ts.map +1 -0
  224. package/lib/typescript/src/types/message.d.ts +15 -0
  225. package/lib/typescript/src/types/message.d.ts.map +1 -0
  226. package/lib/typescript/src/utils/conversation.d.ts +10 -0
  227. package/lib/typescript/src/utils/conversation.d.ts.map +1 -0
  228. package/lib/typescript/src/utils/giftedChatMessage.d.ts +10 -0
  229. package/lib/typescript/src/utils/giftedChatMessage.d.ts.map +1 -0
  230. package/lib/typescript/src/utils/message.d.ts +15 -0
  231. package/lib/typescript/src/utils/message.d.ts.map +1 -0
  232. package/lib/typescript/src/utils/resolveMessageType.d.ts +4 -0
  233. package/lib/typescript/src/utils/resolveMessageType.d.ts.map +1 -0
  234. package/package.json +209 -0
  235. package/src/assets/images/icon_bot.png +0 -0
  236. package/src/assets/images/index.ts +7 -0
  237. package/src/assets/images/tag_bot.png +0 -0
  238. package/src/assets/images/tag_mall.png +0 -0
  239. package/src/build-ignore.d.ts +24 -0
  240. package/src/components/Avatar/Avatar.tsx +105 -0
  241. package/src/components/Avatar/Avatar.types.ts +17 -0
  242. package/src/components/Avatar/Avatar.utils.ts +49 -0
  243. package/src/components/Avatar/AvatarBadge.tsx +29 -0
  244. package/src/components/Avatar/DoubleAvatar.tsx +89 -0
  245. package/src/components/Avatar/SingleAvatar.tsx +74 -0
  246. package/src/components/Avatar/index.ts +5 -0
  247. package/src/components/ThreadCard/AvatarSection.tsx +42 -0
  248. package/src/components/ThreadCard/NamePrefixIcon.tsx +45 -0
  249. package/src/components/ThreadCard/ThreadCard.tsx +145 -0
  250. package/src/components/ThreadCard/UnreadBadge.tsx +35 -0
  251. package/src/components/ThreadCard/index.ts +4 -0
  252. package/src/components/ThreadCard/thread-card.utils.ts +68 -0
  253. package/src/core/index.ts +10 -0
  254. package/src/core/useChatListener.ts +85 -0
  255. package/src/core/useUserListener.ts +86 -0
  256. package/src/hooks/query-keys.ts +11 -0
  257. package/src/hooks/useChatMessages.ts +243 -0
  258. package/src/hooks/useConversationList.ts +57 -0
  259. package/src/index.tsx +36 -0
  260. package/src/screens/chat-detail/ChatAttachmentPanel.tsx +142 -0
  261. package/src/screens/chat-detail/ChatComposer.tsx +412 -0
  262. package/src/screens/chat-detail/ChatDay.tsx +73 -0
  263. package/src/screens/chat-detail/ChatDetail.tsx +118 -0
  264. package/src/screens/chat-detail/ChatDetailHeader.tsx +114 -0
  265. package/src/screens/chat-detail/ChatList.tsx +187 -0
  266. package/src/screens/chat-detail/ChatLoadEarlier.tsx +20 -0
  267. package/src/screens/chat-detail/ChatQuickActions.tsx +108 -0
  268. package/src/screens/chat-detail/ChatScrollToBottom.tsx +8 -0
  269. package/src/screens/chat-detail/ChatTextBubble.tsx +73 -0
  270. package/src/screens/chat-detail/constants.ts +76 -0
  271. package/src/screens/chat-detail/index.ts +33 -0
  272. package/src/screens/chat-detail/messages/ChatMessageBubble.tsx +24 -0
  273. package/src/screens/chat-detail/messages/types.ts +14 -0
  274. package/src/screens/chat-detail/types.ts +97 -0
  275. package/src/screens/chat-detail/useChatActionPress.ts +17 -0
  276. package/src/screens/inbox/Inbox.tsx +164 -0
  277. package/src/screens/inbox/MessagesTab.tsx +62 -0
  278. package/src/screens/inbox/index.ts +2 -0
  279. package/src/services/apis.ts +60 -0
  280. package/src/services/index.ts +2 -0
  281. package/src/services/message.ts +61 -0
  282. package/src/store/conversation.ts +116 -0
  283. package/src/store/index.ts +3 -0
  284. package/src/store/storeConfig.ts +19 -0
  285. package/src/store/user.ts +26 -0
  286. package/src/translation/index.ts +30 -0
  287. package/src/translation/resources/i18n.ts +8 -0
  288. package/src/types/auth.ts +25 -0
  289. package/src/types/chat.ts +118 -0
  290. package/src/types/message.ts +17 -0
  291. package/src/utils/conversation.ts +106 -0
  292. package/src/utils/giftedChatMessage.ts +137 -0
  293. package/src/utils/message.ts +136 -0
  294. package/src/utils/resolveMessageType.ts +49 -0
package/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 droppii
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,101 @@
1
+ # @droppii/chat-mobile
2
+
3
+ Droppii chat mobile
4
+
5
+ ## Installation
6
+
7
+
8
+ ```sh
9
+ npm install @droppii/chat-mobile
10
+ ```
11
+
12
+
13
+ ## Usage
14
+
15
+ ### Installation dependencies
16
+
17
+ `@droppii/chat-mobile` requires the following peer dependencies:
18
+
19
+ ```sh
20
+ npm install react-native-fs
21
+ ```
22
+
23
+ > `react-native-fs` is used to resolve the local path for `dataDir` and `logFilePath`.
24
+
25
+ ---
26
+
27
+ ### `initChatSdk(options)`
28
+
29
+ Khởi tạo Chat SDK. Gọi hàm này **một lần duy nhất** khi ứng dụng khởi động, **trước khi** render bất kỳ component nào sử dụng tính năng chat.
30
+
31
+ ```ts
32
+ import { initChatSdk } from '@droppii/chat-mobile';
33
+ import RNFS from 'react-native-fs';
34
+
35
+ initChatSdk({
36
+ apiAddr: 'https://your-api-server.com', // REST API endpoint
37
+ wsAddr: 'wss://your-ws-server.com', // WebSocket endpoint
38
+ dataDir: RNFS.DocumentDirectoryPath + '/chat', // Thư mục lưu trữ dữ liệu SDK
39
+ logFilePath: RNFS.DocumentDirectoryPath + '/chat', // Thư mục lưu file log
40
+ logLevel: 5, // LogLevel.Debug (xem bảng bên dưới)
41
+ isLogStandardOutput: true, // In log ra console (nên bật khi develop)
42
+ });
43
+ ```
44
+
45
+ #### Tham số `InitOptions`
46
+
47
+ | Tham số | Kiểu | Bắt buộc | Mô tả |
48
+ | --------------------- | ---------- | :------: | --------------------------------------------------------- |
49
+ | `apiAddr` | `string` | ✅ | URL của REST API server |
50
+ | `wsAddr` | `string` | ✅ | URL của WebSocket server |
51
+ | `dataDir` | `string` | ✅ | Đường dẫn thư mục lưu dữ liệu cục bộ (SQLite, cache...) |
52
+ | `logFilePath` | `string` | ✅ | Đường dẫn thư mục lưu file log |
53
+ | `logLevel` | `LogLevel` | ✅ | Mức độ log (xem bảng `LogLevel` bên dưới) |
54
+ | `isLogStandardOutput` | `boolean` | ✅ | `true` để in log ra stdout (hữu ích khi debug) |
55
+
56
+ #### `LogLevel`
57
+
58
+ | Giá trị | Hằng số | Mô tả |
59
+ | :-----: | -------------- | ------------------------------ |
60
+ | `5` | `Debug` | Tất cả log (verbose) |
61
+ | `4` | `Info` | Thông tin chung |
62
+ | `3` | `Warn` | Cảnh báo |
63
+ | `2` | `Error` | Chỉ lỗi |
64
+ | `1` | `Fatal` | Lỗi nghiêm trọng |
65
+ | `0` | `Panic` | Lỗi làm crash ứng dụng |
66
+
67
+ #### Ví dụ thực tế (trong `App.tsx`)
68
+
69
+ ```tsx
70
+ import { initChatSdk } from '@droppii/chat-mobile';
71
+ import RNFS from 'react-native-fs';
72
+
73
+ // Gọi ở top-level module, trước khi App render
74
+ initChatSdk({
75
+ apiAddr: process.env.CHAT_API_URL!,
76
+ wsAddr: process.env.CHAT_WS_URL!,
77
+ dataDir: RNFS.DocumentDirectoryPath + '/chat',
78
+ logFilePath: RNFS.DocumentDirectoryPath + '/chat',
79
+ logLevel: __DEV__ ? 5 : 2, // Debug khi dev, Error khi production
80
+ isLogStandardOutput: __DEV__,
81
+ });
82
+
83
+ export default function App() {
84
+ // ...
85
+ }
86
+ ```
87
+
88
+
89
+ ## Contributing
90
+
91
+ - [Development workflow](CONTRIBUTING.md#development-workflow)
92
+ - [Sending a pull request](CONTRIBUTING.md#sending-a-pull-request)
93
+ - [Code of conduct](CODE_OF_CONDUCT.md)
94
+
95
+ ## License
96
+
97
+ MIT
98
+
99
+ ---
100
+
101
+ Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ const Images = {
4
+ ICON_BOT: require('./icon_bot.png'),
5
+ TAG_BOT: require('./tag_bot.png'),
6
+ TAG_MALL: require('./tag_mall.png')
7
+ };
8
+ export default Images;
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Images","ICON_BOT","require","TAG_BOT","TAG_MALL"],"sourceRoot":"../../../../src","sources":["assets/images/index.ts"],"mappings":";;AAAA,MAAMA,MAAM,GAAG;EACbC,QAAQ,EAAEC,OAAO,CAAC,gBAAgB,CAAC;EACnCC,OAAO,EAAED,OAAO,CAAC,eAAe,CAAC;EACjCE,QAAQ,EAAEF,OAAO,CAAC,gBAAgB;AACpC,CAAC;AAED,eAAeF,MAAM","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=build-ignore.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["build-ignore.d.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ import { memo, useMemo } from 'react';
4
+ import { StyleSheet } from 'react-native';
5
+ import { KContainer, KColors } from '@droppii/libs';
6
+ import { SingleAvatar } from "./SingleAvatar.js";
7
+ import { DoubleAvatar } from "./DoubleAvatar.js";
8
+ import { AvatarBadge } from "./AvatarBadge.js";
9
+ import { SIZE_MAP } from "./Avatar.utils.js";
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ const Avatar = /*#__PURE__*/memo(({
12
+ source,
13
+ size = 'md',
14
+ type = 'single',
15
+ secondarySource,
16
+ badge,
17
+ fullName,
18
+ borderColor = KColors.white,
19
+ borderWidth = 1,
20
+ placeholderColor = KColors.palette.gray.w400,
21
+ onPress
22
+ }) => {
23
+ const sizeValue = useMemo(() => SIZE_MAP[size], [size]);
24
+ const content = useMemo(() => {
25
+ if (type === 'double') {
26
+ return /*#__PURE__*/_jsx(DoubleAvatar, {
27
+ primarySource: source,
28
+ secondarySource: secondarySource,
29
+ size: sizeValue,
30
+ borderColor: borderColor,
31
+ borderWidth: borderWidth,
32
+ placeholderColor: placeholderColor
33
+ });
34
+ }
35
+ return /*#__PURE__*/_jsx(SingleAvatar, {
36
+ source: source,
37
+ size: sizeValue,
38
+ borderColor: borderColor,
39
+ borderWidth: borderWidth,
40
+ placeholderColor: placeholderColor,
41
+ backgroundColor: KColors.palette.gray.w300,
42
+ fullName: fullName
43
+ });
44
+ }, [type, source, secondarySource, sizeValue, borderColor, borderWidth, placeholderColor, fullName]);
45
+ const containerStyle = useMemo(() => ({
46
+ width: sizeValue,
47
+ height: sizeValue
48
+ }), [sizeValue]);
49
+ if (onPress) {
50
+ return /*#__PURE__*/_jsxs(KContainer.Touchable, {
51
+ style: [styles.container, containerStyle],
52
+ onPress: onPress,
53
+ activeOpacity: 0.7,
54
+ children: [content, badge && /*#__PURE__*/_jsx(AvatarBadge, {
55
+ variant: badge.variant,
56
+ size: sizeValue
57
+ })]
58
+ });
59
+ }
60
+ return /*#__PURE__*/_jsxs(KContainer.View, {
61
+ style: [styles.container, containerStyle],
62
+ children: [content, badge && /*#__PURE__*/_jsx(AvatarBadge, {
63
+ variant: badge.variant,
64
+ size: sizeValue
65
+ })]
66
+ });
67
+ });
68
+ Avatar.displayName = 'Avatar';
69
+ export default Avatar;
70
+ const styles = StyleSheet.create({
71
+ container: {
72
+ position: 'relative',
73
+ justifyContent: 'center',
74
+ alignItems: 'center'
75
+ },
76
+ badge: {
77
+ position: 'absolute',
78
+ overflow: 'hidden'
79
+ }
80
+ });
81
+ //# sourceMappingURL=Avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useMemo","StyleSheet","KContainer","KColors","SingleAvatar","DoubleAvatar","AvatarBadge","SIZE_MAP","jsx","_jsx","jsxs","_jsxs","Avatar","source","size","type","secondarySource","badge","fullName","borderColor","white","borderWidth","placeholderColor","palette","gray","w400","onPress","sizeValue","content","primarySource","backgroundColor","w300","containerStyle","width","height","Touchable","style","styles","container","activeOpacity","children","variant","View","displayName","create","position","justifyContent","alignItems","overflow"],"sourceRoot":"../../../../src","sources":["components/Avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=Avatar.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["components/Avatar/Avatar.types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ const SIZE_MAP = {
4
+ sm: 24,
5
+ md: 48,
6
+ lg: 64
7
+ };
8
+ const TYPO_MAP = {
9
+ 24: 'TextXsBold',
10
+ 48: 'TextNmBold',
11
+ 64: 'TextLgBold'
12
+ };
13
+ export const getInitials = fullName => {
14
+ if (!fullName) return '?';
15
+
16
+ // Remove emoji, numbers, and special characters, keep only letters and spaces
17
+ const cleaned = fullName.replace(/[^\p{L}\s]/gu, '') // Remove non-letter, non-space chars (Unicode-safe)
18
+ .trim();
19
+ if (!cleaned) return '?';
20
+ const parts = cleaned.split(/\s+/).filter(Boolean);
21
+ if (parts.length === 1) {
22
+ // Single name: use first character
23
+ return parts[0][0]?.toUpperCase() ?? '?';
24
+ }
25
+
26
+ // Multiple names: use first letter of first and last name
27
+ const firstInitial = parts[0][0]?.toUpperCase() ?? '';
28
+ const lastInitial = parts[parts.length - 1][0]?.toUpperCase() ?? '';
29
+ return firstInitial + lastInitial || '?';
30
+ };
31
+ export const getBadgeImage = variant => {
32
+ const Images = require('../../assets/images').default;
33
+ switch (variant) {
34
+ case 'mall':
35
+ return Images.TAG_MALL;
36
+ case 'bot':
37
+ case 'support':
38
+ return Images.TAG_BOT;
39
+ default:
40
+ return Images.TAG_BOT;
41
+ }
42
+ };
43
+ export { SIZE_MAP, TYPO_MAP };
44
+ //# sourceMappingURL=Avatar.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SIZE_MAP","sm","md","lg","TYPO_MAP","getInitials","fullName","cleaned","replace","trim","parts","split","filter","Boolean","length","toUpperCase","firstInitial","lastInitial","getBadgeImage","variant","Images","require","default","TAG_MALL","TAG_BOT"],"sourceRoot":"../../../../src","sources":["components/Avatar/Avatar.utils.ts"],"mappings":";;AAAA,MAAMA,QAAQ,GAAG;EACfC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE,EAAE;EACNC,EAAE,EAAE;AACN,CAAU;AAEV,MAAMC,QAAQ,GAAG;EACf,EAAE,EAAE,YAAY;EAChB,EAAE,EAAE,YAAY;EAChB,EAAE,EAAE;AACN,CAAU;AAEV,OAAO,MAAMC,WAAW,GAAIC,QAAiB,IAAa;EACxD,IAAI,CAACA,QAAQ,EAAE,OAAO,GAAG;;EAEzB;EACA,MAAMC,OAAO,GAAGD,QAAQ,CACrBE,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;EAAA,CAC5BC,IAAI,CAAC,CAAC;EAET,IAAI,CAACF,OAAO,EAAE,OAAO,GAAG;EAExB,MAAMG,KAAK,GAAGH,OAAO,CAACI,KAAK,CAAC,KAAK,CAAC,CAACC,MAAM,CAACC,OAAO,CAAC;EAElD,IAAIH,KAAK,CAACI,MAAM,KAAK,CAAC,EAAE;IACtB;IACA,OAAOJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEK,WAAW,CAAC,CAAC,IAAI,GAAG;EAC1C;;EAEA;EACA,MAAMC,YAAY,GAAGN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEK,WAAW,CAAC,CAAC,IAAI,EAAE;EACrD,MAAME,WAAW,GAAGP,KAAK,CAACA,KAAK,CAACI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEC,WAAW,CAAC,CAAC,IAAI,EAAE;EACnE,OAAOC,YAAY,GAAGC,WAAW,IAAI,GAAG;AAC1C,CAAC;AAED,OAAO,MAAMC,aAAa,GAAIC,OAAgB,IAAK;EACjD,MAAMC,MAAM,GAAGC,OAAO,CAAC,qBAAqB,CAAC,CAACC,OAAO;EACrD,QAAQH,OAAO;IACb,KAAK,MAAM;MACT,OAAOC,MAAM,CAACG,QAAQ;IACxB,KAAK,KAAK;IACV,KAAK,SAAS;MACZ,OAAOH,MAAM,CAACI,OAAO;IACvB;MACE,OAAOJ,MAAM,CAACI,OAAO;EACzB;AACF,CAAC;AAED,SAASxB,QAAQ,EAAEI,QAAQ","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import { Image as RNImage, StyleSheet } from 'react-native';
5
+ import { getBadgeImage } from "./Avatar.utils.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export const AvatarBadge = /*#__PURE__*/memo(({
8
+ variant,
9
+ size: _size
10
+ }) => {
11
+ const badgeImage = getBadgeImage(variant);
12
+ return /*#__PURE__*/_jsx(RNImage, {
13
+ source: badgeImage,
14
+ style: styles.badgeImage
15
+ });
16
+ });
17
+ AvatarBadge.displayName = 'AvatarBadge';
18
+ const styles = StyleSheet.create({
19
+ badgeImage: {
20
+ position: 'absolute',
21
+ bottom: 0,
22
+ right: 0,
23
+ width: 28,
24
+ height: 17,
25
+ resizeMode: 'contain'
26
+ }
27
+ });
28
+ //# sourceMappingURL=AvatarBadge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","Image","RNImage","StyleSheet","getBadgeImage","jsx","_jsx","AvatarBadge","variant","size","_size","badgeImage","source","style","styles","displayName","create","position","bottom","right","width","height","resizeMode"],"sourceRoot":"../../../../src","sources":["components/Avatar/AvatarBadge.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,KAAK,IAAIC,OAAO,EAAEC,UAAU,QAAQ,cAAc;AAC3D,SAASC,aAAa,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAO/C,OAAO,MAAMC,WAAW,gBAAGP,IAAI,CAC7B,CAAC;EAAEQ,OAAO;EAAEC,IAAI,EAAEC;AAAwB,CAAC,KAAK;EAC9C,MAAMC,UAAU,GAAGP,aAAa,CAACI,OAAO,CAAC;EAEzC,oBAAOF,IAAA,CAACJ,OAAO;IAACU,MAAM,EAAED,UAAW;IAACE,KAAK,EAAEC,MAAM,CAACH;EAAW,CAAE,CAAC;AAClE,CACF,CAAC;AAEDJ,WAAW,CAACQ,WAAW,GAAG,aAAa;AAEvC,MAAMD,MAAM,GAAGX,UAAU,CAACa,MAAM,CAAC;EAC/BL,UAAU,EAAE;IACVM,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,CAAC;IACTC,KAAK,EAAE,CAAC;IACRC,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import { StyleSheet } from 'react-native';
5
+ import { KContainer, KColors } from '@droppii/libs';
6
+ import { SingleAvatar } from "./SingleAvatar.js";
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ export const DoubleAvatar = /*#__PURE__*/memo(({
9
+ primarySource,
10
+ secondarySource,
11
+ size,
12
+ borderColor,
13
+ borderWidth,
14
+ placeholderColor,
15
+ primaryFullName,
16
+ secondaryFullName
17
+ }) => {
18
+ const innerSize = Math.round(size * 0.6875); // 33/48 ratio
19
+ const offset = Math.round(size * 0.3125); // 15/48 ratio
20
+
21
+ return /*#__PURE__*/_jsxs(KContainer.View, {
22
+ style: [styles.doubleAvatarContainer, {
23
+ width: size,
24
+ height: size
25
+ }],
26
+ children: [/*#__PURE__*/_jsx(KContainer.View, {
27
+ style: [styles.doubleAvatarChild, styles.doubleAvatarTop, {
28
+ width: innerSize,
29
+ height: innerSize,
30
+ right: offset
31
+ }],
32
+ children: /*#__PURE__*/_jsx(SingleAvatar, {
33
+ source: primarySource,
34
+ size: innerSize,
35
+ borderColor: borderColor,
36
+ borderWidth: borderWidth,
37
+ placeholderColor: placeholderColor,
38
+ backgroundColor: KColors.palette.gray.w300,
39
+ fullName: primaryFullName
40
+ })
41
+ }), /*#__PURE__*/_jsx(KContainer.View, {
42
+ style: [styles.doubleAvatarChild, styles.doubleAvatarBottom, {
43
+ width: innerSize,
44
+ height: innerSize,
45
+ left: offset
46
+ }],
47
+ children: /*#__PURE__*/_jsx(SingleAvatar, {
48
+ source: secondarySource,
49
+ size: innerSize,
50
+ borderColor: borderColor,
51
+ borderWidth: borderWidth,
52
+ placeholderColor: placeholderColor,
53
+ backgroundColor: KColors.palette.gray.w300,
54
+ fullName: secondaryFullName
55
+ })
56
+ })]
57
+ });
58
+ });
59
+ DoubleAvatar.displayName = 'DoubleAvatar';
60
+ const styles = StyleSheet.create({
61
+ doubleAvatarContainer: {
62
+ position: 'relative'
63
+ },
64
+ doubleAvatarChild: {
65
+ position: 'absolute'
66
+ },
67
+ doubleAvatarTop: {
68
+ top: 0
69
+ },
70
+ doubleAvatarBottom: {
71
+ bottom: 0
72
+ }
73
+ });
74
+ //# sourceMappingURL=DoubleAvatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","StyleSheet","KContainer","KColors","SingleAvatar","jsx","_jsx","jsxs","_jsxs","DoubleAvatar","primarySource","secondarySource","size","borderColor","borderWidth","placeholderColor","primaryFullName","secondaryFullName","innerSize","Math","round","offset","View","style","styles","doubleAvatarContainer","width","height","children","doubleAvatarChild","doubleAvatarTop","right","source","backgroundColor","palette","gray","w300","fullName","doubleAvatarBottom","left","displayName","create","position","top","bottom"],"sourceRoot":"../../../../src","sources":["components/Avatar/DoubleAvatar.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,UAAU,EAAEC,OAAO,QAAQ,eAAe;AACnD,SAASC,YAAY,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAa9C,OAAO,MAAMC,YAAY,gBAAGT,IAAI,CAC9B,CAAC;EACCU,aAAa;EACbC,eAAe;EACfC,IAAI;EACJC,WAAW;EACXC,WAAW;EACXC,gBAAgB;EAChBC,eAAe;EACfC;AACiB,CAAC,KAAK;EACvB,MAAMC,SAAS,GAAGC,IAAI,CAACC,KAAK,CAACR,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;EAC7C,MAAMS,MAAM,GAAGF,IAAI,CAACC,KAAK,CAACR,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;;EAE1C,oBACEJ,KAAA,CAACN,UAAU,CAACoB,IAAI;IACdC,KAAK,EAAE,CAACC,MAAM,CAACC,qBAAqB,EAAE;MAAEC,KAAK,EAAEd,IAAI;MAAEe,MAAM,EAAEf;IAAK,CAAC,CAAE;IAAAgB,QAAA,gBAErEtB,IAAA,CAACJ,UAAU,CAACoB,IAAI;MACdC,KAAK,EAAE,CACLC,MAAM,CAACK,iBAAiB,EACxBL,MAAM,CAACM,eAAe,EACtB;QAAEJ,KAAK,EAAER,SAAS;QAAES,MAAM,EAAET,SAAS;QAAEa,KAAK,EAAEV;MAAO,CAAC,CACtD;MAAAO,QAAA,eAEFtB,IAAA,CAACF,YAAY;QACX4B,MAAM,EAAEtB,aAAc;QACtBE,IAAI,EAAEM,SAAU;QAChBL,WAAW,EAAEA,WAAY;QACzBC,WAAW,EAAEA,WAAY;QACzBC,gBAAgB,EAAEA,gBAAiB;QACnCkB,eAAe,EAAE9B,OAAO,CAAC+B,OAAO,CAACC,IAAI,CAACC,IAAK;QAC3CC,QAAQ,EAAErB;MAAgB,CAC3B;IAAC,CACa,CAAC,eAClBV,IAAA,CAACJ,UAAU,CAACoB,IAAI;MACdC,KAAK,EAAE,CACLC,MAAM,CAACK,iBAAiB,EACxBL,MAAM,CAACc,kBAAkB,EACzB;QAAEZ,KAAK,EAAER,SAAS;QAAES,MAAM,EAAET,SAAS;QAAEqB,IAAI,EAAElB;MAAO,CAAC,CACrD;MAAAO,QAAA,eAEFtB,IAAA,CAACF,YAAY;QACX4B,MAAM,EAAErB,eAAgB;QACxBC,IAAI,EAAEM,SAAU;QAChBL,WAAW,EAAEA,WAAY;QACzBC,WAAW,EAAEA,WAAY;QACzBC,gBAAgB,EAAEA,gBAAiB;QACnCkB,eAAe,EAAE9B,OAAO,CAAC+B,OAAO,CAACC,IAAI,CAACC,IAAK;QAC3CC,QAAQ,EAAEpB;MAAkB,CAC7B;IAAC,CACa,CAAC;EAAA,CACH,CAAC;AAEtB,CACF,CAAC;AAEDR,YAAY,CAAC+B,WAAW,GAAG,cAAc;AAEzC,MAAMhB,MAAM,GAAGvB,UAAU,CAACwC,MAAM,CAAC;EAC/BhB,qBAAqB,EAAE;IACrBiB,QAAQ,EAAE;EACZ,CAAC;EACDb,iBAAiB,EAAE;IACjBa,QAAQ,EAAE;EACZ,CAAC;EACDZ,eAAe,EAAE;IACfa,GAAG,EAAE;EACP,CAAC;EACDL,kBAAkB,EAAE;IAClBM,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import { StyleSheet } from 'react-native';
5
+ import { KContainer, KImage, KLabel, KColors } from '@droppii/libs';
6
+ import { getInitials, TYPO_MAP } from "./Avatar.utils.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export const SingleAvatar = /*#__PURE__*/memo(({
9
+ source,
10
+ size,
11
+ borderColor,
12
+ borderWidth,
13
+ placeholderColor,
14
+ backgroundColor,
15
+ fullName
16
+ }) => {
17
+ if (source) {
18
+ return /*#__PURE__*/_jsx(KImage.Avatar, {
19
+ uri: source,
20
+ size: size === 24 ? 'sm' : size === 48 ? 'md' : 'lg',
21
+ style: {
22
+ borderWidth,
23
+ borderColor,
24
+ width: size,
25
+ height: size
26
+ }
27
+ });
28
+ }
29
+ return /*#__PURE__*/_jsx(KContainer.View, {
30
+ center: true,
31
+ style: [styles.placeholderAvatar, {
32
+ width: size,
33
+ height: size,
34
+ borderRadius: size / 2,
35
+ borderWidth,
36
+ borderColor,
37
+ backgroundColor: backgroundColor || placeholderColor
38
+ }],
39
+ children: /*#__PURE__*/_jsx(KLabel.Text, {
40
+ typo: TYPO_MAP[size] || 'TextNmBold',
41
+ color: KColors.palette.primary.w400,
42
+ children: getInitials(fullName)
43
+ })
44
+ });
45
+ });
46
+ SingleAvatar.displayName = 'SingleAvatar';
47
+ const styles = StyleSheet.create({
48
+ placeholderAvatar: {
49
+ justifyContent: 'center',
50
+ alignItems: 'center'
51
+ }
52
+ });
53
+ //# sourceMappingURL=SingleAvatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","StyleSheet","KContainer","KImage","KLabel","KColors","getInitials","TYPO_MAP","jsx","_jsx","SingleAvatar","source","size","borderColor","borderWidth","placeholderColor","backgroundColor","fullName","Avatar","uri","style","width","height","View","center","styles","placeholderAvatar","borderRadius","children","Text","typo","color","palette","primary","w400","displayName","create","justifyContent","alignItems"],"sourceRoot":"../../../../src","sources":["components/Avatar/SingleAvatar.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,UAAU,EAAEC,MAAM,EAAEC,MAAM,EAAEC,OAAO,QAAQ,eAAe;AACnE,SAASC,WAAW,EAAEC,QAAQ,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAYvD,OAAO,MAAMC,YAAY,gBAAGV,IAAI,CAC9B,CAAC;EACCW,MAAM;EACNC,IAAI;EACJC,WAAW;EACXC,WAAW;EACXC,gBAAgB;EAChBC,eAAe;EACfC;AACiB,CAAC,KAAK;EACvB,IAAIN,MAAM,EAAE;IACV,oBACEF,IAAA,CAACN,MAAM,CAACe,MAAM;MACZC,GAAG,EAAER,MAAO;MACZC,IAAI,EAAEA,IAAI,KAAK,EAAE,GAAG,IAAI,GAAGA,IAAI,KAAK,EAAE,GAAG,IAAI,GAAG,IAAK;MACrDQ,KAAK,EAAE;QACLN,WAAW;QACXD,WAAW;QACXQ,KAAK,EAAET,IAAI;QACXU,MAAM,EAAEV;MACV;IAAE,CACH,CAAC;EAEN;EAEA,oBACEH,IAAA,CAACP,UAAU,CAACqB,IAAI;IACdC,MAAM;IACNJ,KAAK,EAAE,CACLK,MAAM,CAACC,iBAAiB,EACxB;MACEL,KAAK,EAAET,IAAI;MACXU,MAAM,EAAEV,IAAI;MACZe,YAAY,EAAEf,IAAI,GAAG,CAAC;MACtBE,WAAW;MACXD,WAAW;MACXG,eAAe,EAAEA,eAAe,IAAID;IACtC,CAAC,CACD;IAAAa,QAAA,eAEFnB,IAAA,CAACL,MAAM,CAACyB,IAAI;MACVC,IAAI,EAAEvB,QAAQ,CAACK,IAAI,CAA0B,IAAI,YAAa;MAC9DmB,KAAK,EAAE1B,OAAO,CAAC2B,OAAO,CAACC,OAAO,CAACC,IAAK;MAAAN,QAAA,EAEnCtB,WAAW,CAACW,QAAQ;IAAC,CACX;EAAC,CACC,CAAC;AAEtB,CACF,CAAC;AAEDP,YAAY,CAACyB,WAAW,GAAG,cAAc;AAEzC,MAAMV,MAAM,GAAGxB,UAAU,CAACmC,MAAM,CAAC;EAC/BV,iBAAiB,EAAE;IACjBW,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ export { default as Avatar } from "./Avatar.js";
4
+ export { SingleAvatar } from "./SingleAvatar.js";
5
+ export { DoubleAvatar } from "./DoubleAvatar.js";
6
+ export { AvatarBadge } from "./AvatarBadge.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","Avatar","SingleAvatar","DoubleAvatar","AvatarBadge"],"sourceRoot":"../../../../src","sources":["components/Avatar/index.ts"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,MAAM,QAAQ,aAAU;AAC5C,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,WAAW,QAAQ,kBAAe","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import { Avatar } from "../Avatar/index.js";
5
+ import { DChatCategory } from "../../types/chat.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export const AvatarSection = /*#__PURE__*/memo(({
8
+ avatar,
9
+ fullName,
10
+ chatCategory,
11
+ applicationType
12
+ }) => {
13
+ if (chatCategory === DChatCategory.BIZ_BOT_CRM || chatCategory === DChatCategory.BIZ_BOT_PDP) {
14
+ return /*#__PURE__*/_jsx(Avatar, {
15
+ source: avatar,
16
+ fullName: fullName,
17
+ badge: {
18
+ variant: 'bot'
19
+ }
20
+ });
21
+ }
22
+ if (applicationType === 'MALL') {
23
+ return /*#__PURE__*/_jsx(Avatar, {
24
+ source: avatar,
25
+ fullName: fullName,
26
+ badge: {
27
+ variant: 'mall'
28
+ }
29
+ });
30
+ }
31
+ return /*#__PURE__*/_jsx(Avatar, {
32
+ source: avatar,
33
+ fullName: fullName
34
+ });
35
+ });
36
+ AvatarSection.displayName = 'AvatarSection';
37
+ //# sourceMappingURL=AvatarSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","Avatar","DChatCategory","jsx","_jsx","AvatarSection","avatar","fullName","chatCategory","applicationType","BIZ_BOT_CRM","BIZ_BOT_PDP","source","badge","variant","displayName"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/AvatarSection.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,MAAM,QAAQ,oBAAW;AAClC,SAASC,aAAa,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUjD,OAAO,MAAMC,aAAa,gBAAGL,IAAI,CAC/B,CAAC;EAAEM,MAAM;EAAEC,QAAQ;EAAEC,YAAY;EAAEC;AAAoC,CAAC,KAAK;EAC3E,IACED,YAAY,KAAKN,aAAa,CAACQ,WAAW,IAC1CF,YAAY,KAAKN,aAAa,CAACS,WAAW,EAC1C;IACA,oBACEP,IAAA,CAACH,MAAM;MACLW,MAAM,EAAEN,MAAO;MACfC,QAAQ,EAAEA,QAAS;MACnBM,KAAK,EAAE;QAAEC,OAAO,EAAE;MAAM;IAAE,CAC3B,CAAC;EAEN;EAEA,IAAIL,eAAe,KAAK,MAAM,EAAE;IAC9B,oBACEL,IAAA,CAACH,MAAM;MACLW,MAAM,EAAEN,MAAO;MACfC,QAAQ,EAAEA,QAAS;MACnBM,KAAK,EAAE;QAAEC,OAAO,EAAE;MAAO;IAAE,CAC5B,CAAC;EAEN;EAEA,oBAAOV,IAAA,CAACH,MAAM;IAACW,MAAM,EAAEN,MAAO;IAACC,QAAQ,EAAEA;EAAS,CAAE,CAAC;AACvD,CACF,CAAC;AAEDF,aAAa,CAACU,WAAW,GAAG,eAAe","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ import { memo } from 'react';
4
+ import { KContainer, KImage, KColors } from '@droppii/libs';
5
+ import { DChatCategory, DChatType } from "../../types/chat.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export const NamePrefixIcon = /*#__PURE__*/memo(({
8
+ chatCategory,
9
+ chatType
10
+ }) => {
11
+ if (chatCategory === DChatCategory.BIZ_BOT_CRM || chatCategory === DChatCategory.BIZ_BOT_PDP) {
12
+ return /*#__PURE__*/_jsx(KContainer.View, {
13
+ marginR: "0.25rem",
14
+ children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
15
+ name: "robot-outline",
16
+ provider: "MaterialCommunityIcons",
17
+ size: 14,
18
+ color: KColors.palette.primary.w400
19
+ })
20
+ });
21
+ }
22
+ if (chatType === DChatType.GROUP) {
23
+ return /*#__PURE__*/_jsx(KContainer.View, {
24
+ marginR: "0.25rem",
25
+ children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
26
+ name: "account-multiple-outline",
27
+ provider: "MaterialCommunityIcons",
28
+ size: 14,
29
+ color: KColors.palette.gray.w500
30
+ })
31
+ });
32
+ }
33
+ return null;
34
+ });
35
+ NamePrefixIcon.displayName = 'NamePrefixIcon';
36
+ //# sourceMappingURL=NamePrefixIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","KContainer","KImage","KColors","DChatCategory","DChatType","jsx","_jsx","NamePrefixIcon","chatCategory","chatType","BIZ_BOT_CRM","BIZ_BOT_PDP","View","marginR","children","VectorIcons","name","provider","size","color","palette","primary","w400","GROUP","gray","w500","displayName"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/NamePrefixIcon.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,EAAEC,MAAM,EAAEC,OAAO,QAAQ,eAAe;AAC3D,SAASC,aAAa,EAAEC,SAAS,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAO5D,OAAO,MAAMC,cAAc,gBAAGR,IAAI,CAChC,CAAC;EAAES,YAAY;EAAEC;AAA8B,CAAC,KAAK;EACnD,IACED,YAAY,KAAKL,aAAa,CAACO,WAAW,IAC1CF,YAAY,KAAKL,aAAa,CAACQ,WAAW,EAC1C;IACA,oBACEL,IAAA,CAACN,UAAU,CAACY,IAAI;MAACC,OAAO,EAAC,SAAS;MAAAC,QAAA,eAChCR,IAAA,CAACL,MAAM,CAACc,WAAW;QACjBC,IAAI,EAAC,eAAe;QACpBC,QAAQ,EAAC,wBAAwB;QACjCC,IAAI,EAAE,EAAG;QACTC,KAAK,EAAEjB,OAAO,CAACkB,OAAO,CAACC,OAAO,CAACC;MAAK,CACrC;IAAC,CACa,CAAC;EAEtB;EAEA,IAAIb,QAAQ,KAAKL,SAAS,CAACmB,KAAK,EAAE;IAChC,oBACEjB,IAAA,CAACN,UAAU,CAACY,IAAI;MAACC,OAAO,EAAC,SAAS;MAAAC,QAAA,eAChCR,IAAA,CAACL,MAAM,CAACc,WAAW;QACjBC,IAAI,EAAC,0BAA0B;QAC/BC,QAAQ,EAAC,wBAAwB;QACjCC,IAAI,EAAE,EAAG;QACTC,KAAK,EAAEjB,OAAO,CAACkB,OAAO,CAACI,IAAI,CAACC;MAAK,CAClC;IAAC,CACa,CAAC;EAEtB;EAEA,OAAO,IAAI;AACb,CACF,CAAC;AAEDlB,cAAc,CAACmB,WAAW,GAAG,gBAAgB","ignoreList":[]}