stream-chat-react-native-core 9.4.0-beta.10 → 9.4.0-beta.11

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 (308) hide show
  1. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js +7 -0
  2. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  3. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +2 -0
  4. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -1
  5. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +41 -55
  6. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -1
  7. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +27 -7
  8. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  9. package/lib/commonjs/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.js +55 -0
  10. package/lib/commonjs/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.js.map +1 -0
  11. package/lib/commonjs/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.js +47 -0
  12. package/lib/commonjs/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.js.map +1 -0
  13. package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.js +39 -0
  14. package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.js.map +1 -0
  15. package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionItem.js +45 -0
  16. package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionItem.js.map +1 -0
  17. package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionRoleItem.js +33 -0
  18. package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionRoleItem.js.map +1 -0
  19. package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.js +26 -0
  20. package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.js.map +1 -0
  21. package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionUserItem.js +53 -0
  22. package/lib/commonjs/components/AutoCompleteInput/mentionItems/MentionUserItem.js.map +1 -0
  23. package/lib/commonjs/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.js +38 -0
  24. package/lib/commonjs/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.js.map +1 -0
  25. package/lib/commonjs/components/AutoCompleteInput/mentionItems/index.js +60 -0
  26. package/lib/commonjs/components/AutoCompleteInput/mentionItems/index.js.map +1 -0
  27. package/lib/commonjs/components/Message/Message.js.map +1 -1
  28. package/lib/commonjs/components/Message/MessageItemView/MessageTextContainer.js +14 -0
  29. package/lib/commonjs/components/Message/MessageItemView/MessageTextContainer.js.map +1 -1
  30. package/lib/commonjs/components/Message/MessageItemView/utils/renderText.js +69 -11
  31. package/lib/commonjs/components/Message/MessageItemView/utils/renderText.js.map +1 -1
  32. package/lib/commonjs/components/MessageInput/MessageComposer.js +5 -12
  33. package/lib/commonjs/components/MessageInput/MessageComposer.js.map +1 -1
  34. package/lib/commonjs/components/MessageList/MessageFlashList.js +22 -3
  35. package/lib/commonjs/components/MessageList/MessageFlashList.js.map +1 -1
  36. package/lib/commonjs/components/MessageList/MessageList.js +23 -4
  37. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  38. package/lib/commonjs/components/UIComponents/BottomSheetModal.js +4 -17
  39. package/lib/commonjs/components/UIComponents/BottomSheetModal.js.map +1 -1
  40. package/lib/commonjs/components/UIComponents/ClippingFadeBottom.js +56 -0
  41. package/lib/commonjs/components/UIComponents/ClippingFadeBottom.js.map +1 -0
  42. package/lib/commonjs/components/UIComponents/PortalWhileClosingView.js +0 -3
  43. package/lib/commonjs/components/UIComponents/PortalWhileClosingView.js.map +1 -1
  44. package/lib/commonjs/components/UIComponents/index.js +11 -0
  45. package/lib/commonjs/components/UIComponents/index.js.map +1 -1
  46. package/lib/commonjs/components/index.js +11 -0
  47. package/lib/commonjs/components/index.js.map +1 -1
  48. package/lib/commonjs/contexts/componentsContext/defaultComponents.js +1 -0
  49. package/lib/commonjs/contexts/componentsContext/defaultComponents.js.map +1 -1
  50. package/lib/commonjs/contexts/themeContext/utils/theme.js +6 -1
  51. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  52. package/lib/commonjs/i18n/ar.json +6 -0
  53. package/lib/commonjs/i18n/en.json +7 -1
  54. package/lib/commonjs/i18n/es.json +6 -0
  55. package/lib/commonjs/i18n/fr.json +6 -0
  56. package/lib/commonjs/i18n/he.json +6 -0
  57. package/lib/commonjs/i18n/hi.json +6 -0
  58. package/lib/commonjs/i18n/it.json +6 -0
  59. package/lib/commonjs/i18n/ja.json +6 -0
  60. package/lib/commonjs/i18n/ko.json +6 -0
  61. package/lib/commonjs/i18n/nl.json +6 -0
  62. package/lib/commonjs/i18n/pt-br.json +6 -0
  63. package/lib/commonjs/i18n/ru.json +6 -0
  64. package/lib/commonjs/i18n/tr.json +6 -0
  65. package/lib/commonjs/icons/megaphone.js +36 -0
  66. package/lib/commonjs/icons/megaphone.js.map +1 -0
  67. package/lib/commonjs/icons/shield.js +36 -0
  68. package/lib/commonjs/icons/shield.js.map +1 -0
  69. package/lib/commonjs/store/SqliteClient.js +1 -1
  70. package/lib/commonjs/store/mappers/mapDraftMessageToStorable.js +8 -0
  71. package/lib/commonjs/store/mappers/mapDraftMessageToStorable.js.map +1 -1
  72. package/lib/commonjs/store/mappers/mapStorableToDraftMessage.js +8 -0
  73. package/lib/commonjs/store/mappers/mapStorableToDraftMessage.js.map +1 -1
  74. package/lib/commonjs/store/schema.js +4 -0
  75. package/lib/commonjs/store/schema.js.map +1 -1
  76. package/lib/commonjs/theme/generated/dark/StreamTokens.android.js +10 -1
  77. package/lib/commonjs/theme/generated/dark/StreamTokens.android.js.map +1 -1
  78. package/lib/commonjs/theme/generated/dark/StreamTokens.ios.js +10 -1
  79. package/lib/commonjs/theme/generated/dark/StreamTokens.ios.js.map +1 -1
  80. package/lib/commonjs/theme/generated/dark/StreamTokens.web.js +10 -1
  81. package/lib/commonjs/theme/generated/dark/StreamTokens.web.js.map +1 -1
  82. package/lib/commonjs/theme/generated/light/StreamTokens.android.js +10 -1
  83. package/lib/commonjs/theme/generated/light/StreamTokens.android.js.map +1 -1
  84. package/lib/commonjs/theme/generated/light/StreamTokens.ios.js +10 -1
  85. package/lib/commonjs/theme/generated/light/StreamTokens.ios.js.map +1 -1
  86. package/lib/commonjs/theme/generated/light/StreamTokens.web.js +10 -1
  87. package/lib/commonjs/theme/generated/light/StreamTokens.web.js.map +1 -1
  88. package/lib/commonjs/version.json +1 -1
  89. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js +7 -0
  90. package/lib/module/components/AutoCompleteInput/AutoCompleteInput.js.map +1 -1
  91. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js +2 -0
  92. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionHeader.js.map +1 -1
  93. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js +41 -55
  94. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionItem.js.map +1 -1
  95. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +27 -7
  96. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  97. package/lib/module/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.js +55 -0
  98. package/lib/module/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.js.map +1 -0
  99. package/lib/module/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.js +47 -0
  100. package/lib/module/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.js.map +1 -0
  101. package/lib/module/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.js +39 -0
  102. package/lib/module/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.js.map +1 -0
  103. package/lib/module/components/AutoCompleteInput/mentionItems/MentionItem.js +45 -0
  104. package/lib/module/components/AutoCompleteInput/mentionItems/MentionItem.js.map +1 -0
  105. package/lib/module/components/AutoCompleteInput/mentionItems/MentionRoleItem.js +33 -0
  106. package/lib/module/components/AutoCompleteInput/mentionItems/MentionRoleItem.js.map +1 -0
  107. package/lib/module/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.js +26 -0
  108. package/lib/module/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.js.map +1 -0
  109. package/lib/module/components/AutoCompleteInput/mentionItems/MentionUserItem.js +53 -0
  110. package/lib/module/components/AutoCompleteInput/mentionItems/MentionUserItem.js.map +1 -0
  111. package/lib/module/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.js +38 -0
  112. package/lib/module/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.js.map +1 -0
  113. package/lib/module/components/AutoCompleteInput/mentionItems/index.js +60 -0
  114. package/lib/module/components/AutoCompleteInput/mentionItems/index.js.map +1 -0
  115. package/lib/module/components/Message/Message.js.map +1 -1
  116. package/lib/module/components/Message/MessageItemView/MessageTextContainer.js +14 -0
  117. package/lib/module/components/Message/MessageItemView/MessageTextContainer.js.map +1 -1
  118. package/lib/module/components/Message/MessageItemView/utils/renderText.js +69 -11
  119. package/lib/module/components/Message/MessageItemView/utils/renderText.js.map +1 -1
  120. package/lib/module/components/MessageInput/MessageComposer.js +5 -12
  121. package/lib/module/components/MessageInput/MessageComposer.js.map +1 -1
  122. package/lib/module/components/MessageList/MessageFlashList.js +22 -3
  123. package/lib/module/components/MessageList/MessageFlashList.js.map +1 -1
  124. package/lib/module/components/MessageList/MessageList.js +23 -4
  125. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  126. package/lib/module/components/UIComponents/BottomSheetModal.js +4 -17
  127. package/lib/module/components/UIComponents/BottomSheetModal.js.map +1 -1
  128. package/lib/module/components/UIComponents/ClippingFadeBottom.js +56 -0
  129. package/lib/module/components/UIComponents/ClippingFadeBottom.js.map +1 -0
  130. package/lib/module/components/UIComponents/PortalWhileClosingView.js +0 -3
  131. package/lib/module/components/UIComponents/PortalWhileClosingView.js.map +1 -1
  132. package/lib/module/components/UIComponents/index.js +11 -0
  133. package/lib/module/components/UIComponents/index.js.map +1 -1
  134. package/lib/module/components/index.js +11 -0
  135. package/lib/module/components/index.js.map +1 -1
  136. package/lib/module/contexts/componentsContext/defaultComponents.js +1 -0
  137. package/lib/module/contexts/componentsContext/defaultComponents.js.map +1 -1
  138. package/lib/module/contexts/themeContext/utils/theme.js +6 -1
  139. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  140. package/lib/module/i18n/ar.json +6 -0
  141. package/lib/module/i18n/en.json +7 -1
  142. package/lib/module/i18n/es.json +6 -0
  143. package/lib/module/i18n/fr.json +6 -0
  144. package/lib/module/i18n/he.json +6 -0
  145. package/lib/module/i18n/hi.json +6 -0
  146. package/lib/module/i18n/it.json +6 -0
  147. package/lib/module/i18n/ja.json +6 -0
  148. package/lib/module/i18n/ko.json +6 -0
  149. package/lib/module/i18n/nl.json +6 -0
  150. package/lib/module/i18n/pt-br.json +6 -0
  151. package/lib/module/i18n/ru.json +6 -0
  152. package/lib/module/i18n/tr.json +6 -0
  153. package/lib/module/icons/megaphone.js +36 -0
  154. package/lib/module/icons/megaphone.js.map +1 -0
  155. package/lib/module/icons/shield.js +36 -0
  156. package/lib/module/icons/shield.js.map +1 -0
  157. package/lib/module/store/SqliteClient.js +1 -1
  158. package/lib/module/store/mappers/mapDraftMessageToStorable.js +8 -0
  159. package/lib/module/store/mappers/mapDraftMessageToStorable.js.map +1 -1
  160. package/lib/module/store/mappers/mapStorableToDraftMessage.js +8 -0
  161. package/lib/module/store/mappers/mapStorableToDraftMessage.js.map +1 -1
  162. package/lib/module/store/schema.js +4 -0
  163. package/lib/module/store/schema.js.map +1 -1
  164. package/lib/module/theme/generated/dark/StreamTokens.android.js +10 -1
  165. package/lib/module/theme/generated/dark/StreamTokens.android.js.map +1 -1
  166. package/lib/module/theme/generated/dark/StreamTokens.ios.js +10 -1
  167. package/lib/module/theme/generated/dark/StreamTokens.ios.js.map +1 -1
  168. package/lib/module/theme/generated/dark/StreamTokens.web.js +10 -1
  169. package/lib/module/theme/generated/dark/StreamTokens.web.js.map +1 -1
  170. package/lib/module/theme/generated/light/StreamTokens.android.js +10 -1
  171. package/lib/module/theme/generated/light/StreamTokens.android.js.map +1 -1
  172. package/lib/module/theme/generated/light/StreamTokens.ios.js +10 -1
  173. package/lib/module/theme/generated/light/StreamTokens.ios.js.map +1 -1
  174. package/lib/module/theme/generated/light/StreamTokens.web.js +10 -1
  175. package/lib/module/theme/generated/light/StreamTokens.web.js.map +1 -1
  176. package/lib/module/version.json +1 -1
  177. package/lib/typescript/components/AutoCompleteInput/AutoCompleteInput.d.ts.map +1 -1
  178. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionHeader.d.ts.map +1 -1
  179. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionItem.d.ts +8 -2
  180. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionItem.d.ts.map +1 -1
  181. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts +1 -1
  182. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts.map +1 -1
  183. package/lib/typescript/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.d.ts +13 -0
  184. package/lib/typescript/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.d.ts.map +1 -0
  185. package/lib/typescript/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.d.ts +26 -0
  186. package/lib/typescript/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.d.ts.map +1 -0
  187. package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.d.ts +7 -0
  188. package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.d.ts.map +1 -0
  189. package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionItem.d.ts +17 -0
  190. package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionItem.d.ts.map +1 -0
  191. package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionRoleItem.d.ts +7 -0
  192. package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionRoleItem.d.ts.map +1 -0
  193. package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.d.ts +7 -0
  194. package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.d.ts.map +1 -0
  195. package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionUserItem.d.ts +7 -0
  196. package/lib/typescript/components/AutoCompleteInput/mentionItems/MentionUserItem.d.ts.map +1 -0
  197. package/lib/typescript/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.d.ts +21 -0
  198. package/lib/typescript/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.d.ts.map +1 -0
  199. package/lib/typescript/components/AutoCompleteInput/mentionItems/index.d.ts +17 -0
  200. package/lib/typescript/components/AutoCompleteInput/mentionItems/index.d.ts.map +1 -0
  201. package/lib/typescript/components/Message/Message.d.ts +11 -1
  202. package/lib/typescript/components/Message/Message.d.ts.map +1 -1
  203. package/lib/typescript/components/Message/MessageItemView/MessageTextContainer.d.ts.map +1 -1
  204. package/lib/typescript/components/Message/MessageItemView/utils/renderText.d.ts.map +1 -1
  205. package/lib/typescript/components/MessageInput/MessageComposer.d.ts.map +1 -1
  206. package/lib/typescript/components/MessageList/MessageFlashList.d.ts.map +1 -1
  207. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  208. package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts.map +1 -1
  209. package/lib/typescript/components/UIComponents/ClippingFadeBottom.d.ts +18 -0
  210. package/lib/typescript/components/UIComponents/ClippingFadeBottom.d.ts.map +1 -0
  211. package/lib/typescript/components/UIComponents/index.d.ts +1 -0
  212. package/lib/typescript/components/UIComponents/index.d.ts.map +1 -1
  213. package/lib/typescript/components/index.d.ts +1 -0
  214. package/lib/typescript/components/index.d.ts.map +1 -1
  215. package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts +1 -0
  216. package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts.map +1 -1
  217. package/lib/typescript/contexts/themeContext/ThemeContext.d.ts +5 -0
  218. package/lib/typescript/contexts/themeContext/ThemeContext.d.ts.map +1 -1
  219. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +5 -0
  220. package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
  221. package/lib/typescript/i18n/ar.json +6 -0
  222. package/lib/typescript/i18n/en.json +7 -1
  223. package/lib/typescript/i18n/es.json +6 -0
  224. package/lib/typescript/i18n/fr.json +6 -0
  225. package/lib/typescript/i18n/he.json +6 -0
  226. package/lib/typescript/i18n/hi.json +6 -0
  227. package/lib/typescript/i18n/it.json +6 -0
  228. package/lib/typescript/i18n/ja.json +6 -0
  229. package/lib/typescript/i18n/ko.json +6 -0
  230. package/lib/typescript/i18n/nl.json +6 -0
  231. package/lib/typescript/i18n/pt-br.json +6 -0
  232. package/lib/typescript/i18n/ru.json +6 -0
  233. package/lib/typescript/i18n/tr.json +6 -0
  234. package/lib/typescript/icons/megaphone.d.ts +4 -0
  235. package/lib/typescript/icons/megaphone.d.ts.map +1 -0
  236. package/lib/typescript/icons/shield.d.ts +4 -0
  237. package/lib/typescript/icons/shield.d.ts.map +1 -0
  238. package/lib/typescript/store/mappers/mapDraftMessageToStorable.d.ts.map +1 -1
  239. package/lib/typescript/store/mappers/mapStorableToDraftMessage.d.ts.map +1 -1
  240. package/lib/typescript/store/schema.d.ts +4 -0
  241. package/lib/typescript/store/schema.d.ts.map +1 -1
  242. package/lib/typescript/theme/generated/StreamTokens.types.d.ts +9 -0
  243. package/lib/typescript/theme/generated/StreamTokens.types.d.ts.map +1 -1
  244. package/lib/typescript/theme/generated/dark/StreamTokens.android.d.ts.map +1 -1
  245. package/lib/typescript/theme/generated/dark/StreamTokens.ios.d.ts.map +1 -1
  246. package/lib/typescript/theme/generated/dark/StreamTokens.web.d.ts.map +1 -1
  247. package/lib/typescript/theme/generated/light/StreamTokens.android.d.ts.map +1 -1
  248. package/lib/typescript/theme/generated/light/StreamTokens.ios.d.ts.map +1 -1
  249. package/lib/typescript/theme/generated/light/StreamTokens.web.d.ts.map +1 -1
  250. package/lib/typescript/utils/i18n/Streami18n.d.ts +6 -0
  251. package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
  252. package/package.json +2 -2
  253. package/src/components/AutoCompleteInput/AutoCompleteInput.tsx +13 -0
  254. package/src/components/AutoCompleteInput/AutoCompleteSuggestionHeader.tsx +2 -1
  255. package/src/components/AutoCompleteInput/AutoCompleteSuggestionItem.tsx +35 -43
  256. package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +28 -3
  257. package/src/components/AutoCompleteInput/mentionItems/EnhancedMentionContent.tsx +71 -0
  258. package/src/components/AutoCompleteInput/mentionItems/EnhancedMentionIcon.tsx +71 -0
  259. package/src/components/AutoCompleteInput/mentionItems/MentionBroadcastItem.tsx +36 -0
  260. package/src/components/AutoCompleteInput/mentionItems/MentionItem.tsx +59 -0
  261. package/src/components/AutoCompleteInput/mentionItems/MentionRoleItem.tsx +27 -0
  262. package/src/components/AutoCompleteInput/mentionItems/MentionUserGroupItem.tsx +23 -0
  263. package/src/components/AutoCompleteInput/mentionItems/MentionUserItem.tsx +55 -0
  264. package/src/components/AutoCompleteInput/mentionItems/TokenizedSuggestionParts.tsx +56 -0
  265. package/src/components/AutoCompleteInput/mentionItems/__tests__/MentionItems.test.tsx +129 -0
  266. package/src/components/AutoCompleteInput/mentionItems/__tests__/TokenizedSuggestionParts.test.tsx +63 -0
  267. package/src/components/AutoCompleteInput/mentionItems/index.ts +16 -0
  268. package/src/components/Message/Message.tsx +14 -2
  269. package/src/components/Message/MessageItemView/MessageTextContainer.tsx +25 -0
  270. package/src/components/Message/MessageItemView/utils/renderText.tsx +97 -18
  271. package/src/components/MessageInput/MessageComposer.tsx +7 -9
  272. package/src/components/MessageList/MessageFlashList.tsx +28 -0
  273. package/src/components/MessageList/MessageList.tsx +28 -0
  274. package/src/components/Thread/__tests__/__snapshots__/Thread.test.tsx.snap +24 -15
  275. package/src/components/UIComponents/BottomSheetModal.tsx +2 -17
  276. package/src/components/UIComponents/ClippingFadeBottom.tsx +47 -0
  277. package/src/components/UIComponents/PortalWhileClosingView.tsx +0 -4
  278. package/src/components/UIComponents/index.ts +1 -0
  279. package/src/components/index.ts +1 -0
  280. package/src/contexts/componentsContext/defaultComponents.ts +5 -1
  281. package/src/contexts/themeContext/utils/theme.ts +10 -0
  282. package/src/i18n/ar.json +6 -0
  283. package/src/i18n/en.json +7 -1
  284. package/src/i18n/es.json +6 -0
  285. package/src/i18n/fr.json +6 -0
  286. package/src/i18n/he.json +6 -0
  287. package/src/i18n/hi.json +6 -0
  288. package/src/i18n/it.json +6 -0
  289. package/src/i18n/ja.json +6 -0
  290. package/src/i18n/ko.json +6 -0
  291. package/src/i18n/nl.json +6 -0
  292. package/src/i18n/pt-br.json +6 -0
  293. package/src/i18n/ru.json +6 -0
  294. package/src/i18n/tr.json +6 -0
  295. package/src/icons/megaphone.tsx +21 -0
  296. package/src/icons/shield.tsx +21 -0
  297. package/src/store/SqliteClient.ts +1 -1
  298. package/src/store/mappers/mapDraftMessageToStorable.ts +8 -0
  299. package/src/store/mappers/mapStorableToDraftMessage.ts +8 -0
  300. package/src/store/schema.ts +8 -0
  301. package/src/theme/generated/StreamTokens.types.ts +9 -0
  302. package/src/theme/generated/dark/StreamTokens.android.ts +10 -1
  303. package/src/theme/generated/dark/StreamTokens.ios.ts +10 -1
  304. package/src/theme/generated/dark/StreamTokens.web.ts +10 -1
  305. package/src/theme/generated/light/StreamTokens.android.ts +10 -1
  306. package/src/theme/generated/light/StreamTokens.ios.ts +10 -1
  307. package/src/theme/generated/light/StreamTokens.web.ts +10 -1
  308. package/src/version.json +1 -1
@@ -27,7 +27,7 @@ import {
27
27
  State,
28
28
  } from 'simple-markdown';
29
29
 
30
- import type { LocalMessage, UserResponse } from 'stream-chat';
30
+ import type { LocalMessage, MentionEntity, UserResponse } from 'stream-chat';
31
31
 
32
32
  import { generateMarkdownText } from './generateMarkdownText';
33
33
 
@@ -152,7 +152,7 @@ const defaultMarkdownStyles: MarkdownStyle = {
152
152
  flexDirection: 'row',
153
153
  },
154
154
  mentions: {
155
- fontWeight: '700',
155
+ fontWeight: primitives.typographyFontWeightRegular,
156
156
  fontSize: primitives.typographyFontSizeMd,
157
157
  lineHeight: primitives.typographyLineHeightNormal,
158
158
  },
@@ -286,7 +286,7 @@ export const renderText = (params: RenderTextParams) => {
286
286
  },
287
287
  mentions: {
288
288
  ...defaultMarkdownStyles.mentions,
289
- color: semantics.accentPrimary,
289
+ color: semantics.chatTextMention,
290
290
  ...markdownStyles?.mentions,
291
291
  },
292
292
  table: {
@@ -404,26 +404,96 @@ export const renderText = (params: RenderTextParams) => {
404
404
  );
405
405
  };
406
406
 
407
- // take the @ mentions and turn them into markdown?
408
- // translate links
409
- const { mentioned_users } = message;
410
- const mentionedUsernames = (mentioned_users || [])
411
- .map((user) => user.name || user.id)
412
- .filter(Boolean)
407
+ // Collect every mention type the server sent us into a single typed list so
408
+ // the markdown rule, the lookup, and the press payload all see the same shape.
409
+ const {
410
+ mentioned_channel,
411
+ mentioned_group_ids,
412
+ mentioned_groups,
413
+ mentioned_here,
414
+ mentioned_roles,
415
+ mentioned_users,
416
+ } = message;
417
+
418
+ const mentionEntities: MentionEntity[] = [
419
+ ...((mentioned_users ?? []) as UserResponse[]).map(
420
+ (user) => ({ ...user, mentionType: 'user' }) as MentionEntity,
421
+ ),
422
+ ...(mentioned_channel
423
+ ? ([{ id: 'channel', mentionType: 'channel', name: 'channel' }] as MentionEntity[])
424
+ : []),
425
+ ...(mentioned_here
426
+ ? ([{ id: 'here', mentionType: 'here', name: 'here' }] as MentionEntity[])
427
+ : []),
428
+ ...((mentioned_roles ?? []) as string[]).map(
429
+ (role) => ({ id: role, mentionType: 'role', name: role }) as MentionEntity,
430
+ ),
431
+ ...(
432
+ (mentioned_groups ?? (mentioned_group_ids ?? []).map((id) => ({ id, name: id }))) as Array<{
433
+ id: string;
434
+ name?: string;
435
+ }>
436
+ ).map(
437
+ (group) =>
438
+ ({
439
+ id: group.id,
440
+ mentionType: 'user_group',
441
+ name: group.name ?? group.id,
442
+ }) as MentionEntity,
443
+ ),
444
+ ];
445
+
446
+ // Lookup keyed by the rendered mention text (sans `@`), lowercased so we
447
+ // resolve case-insensitively. First-write-wins: if a user shares a name with
448
+ // a role/group, the user entity is preferred — same precedence the React SDK
449
+ // applies via insertion order in its plugin.
450
+ const mentionLookup = new Map<string, MentionEntity>();
451
+ for (const entity of mentionEntities) {
452
+ const key = (entity.name ?? entity.id).toLowerCase();
453
+ if (!mentionLookup.has(key)) mentionLookup.set(key, entity);
454
+ }
455
+
456
+ const mentionTokens = mentionEntities
457
+ .map((entity) => entity.name ?? entity.id)
458
+ .filter((value): value is string => Boolean(value))
413
459
  .sort((a, b) => b.length - a.length)
414
- .map(escapeRegExp);
415
- const mentionedUsers = mentionedUsernames.map((username) => `@${username}`).join('|');
416
- const regEx = new RegExp(`^\\B(${mentionedUsers})`, 'g');
460
+ .map((value) => `@${escapeRegExp(value)}`)
461
+ .join('|');
462
+ const regEx = new RegExp(`^\\B(${mentionTokens})`, 'g');
417
463
  const mentionsMatchFunction: MatchFunction = (source) => regEx.exec(source);
418
464
 
465
+ const colorForMentionType = (mentionType: MentionEntity['mentionType']) => {
466
+ switch (mentionType) {
467
+ case 'user':
468
+ return semantics.chatTextMentionUser;
469
+ case 'channel':
470
+ case 'here':
471
+ return semantics.chatTextMentionBroadcast;
472
+ case 'role':
473
+ return semantics.chatTextMentionRole;
474
+ case 'user_group':
475
+ return semantics.chatTextMentionGroup;
476
+ default:
477
+ return semantics.chatTextMention;
478
+ }
479
+ };
480
+
419
481
  const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {
420
- /**removes the @ prefix of username */
421
- const userName = node.content[0]?.content?.substring(1);
482
+ const matchedText: string | undefined = node.content[0]?.content;
483
+ const matchedName = matchedText?.substring(1) ?? '';
484
+ const matchedEntity = mentionLookup.get(matchedName.toLowerCase());
485
+ const mentionedUser =
486
+ matchedEntity?.mentionType === 'user' ? (matchedEntity as UserResponse) : undefined;
487
+ const mentionColor = matchedEntity
488
+ ? colorForMentionType(matchedEntity.mentionType)
489
+ : semantics.chatTextMention;
490
+
422
491
  const onPress = (event: GestureResponderEvent) => {
423
492
  if (!preventPress && onPressParam) {
424
493
  onPressParam({
425
494
  additionalInfo: {
426
- user: mentioned_users?.find((user: UserResponse) => userName === user.name),
495
+ mentionedEntity: matchedEntity,
496
+ user: mentionedUser,
427
497
  },
428
498
  emitter: 'textMention',
429
499
  event,
@@ -434,6 +504,10 @@ export const renderText = (params: RenderTextParams) => {
434
504
  const onLongPress = (event: GestureResponderEvent) => {
435
505
  if (!preventPress && onLongPressParam) {
436
506
  onLongPressParam({
507
+ additionalInfo: {
508
+ mentionedEntity: matchedEntity,
509
+ user: mentionedUser,
510
+ },
437
511
  emitter: 'textMention',
438
512
  event,
439
513
  });
@@ -441,7 +515,12 @@ export const renderText = (params: RenderTextParams) => {
441
515
  };
442
516
 
443
517
  return (
444
- <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>
518
+ <Text
519
+ key={state.key}
520
+ onLongPress={onLongPress}
521
+ onPress={onPress}
522
+ style={[styles.mentions, { color: mentionColor }]}
523
+ >
445
524
  {Array.isArray(node.content)
446
525
  ? node.content.reduce((acc, current) => acc + current.content, '') || ''
447
526
  : output(node.content, state)}
@@ -492,7 +571,7 @@ export const renderText = (params: RenderTextParams) => {
492
571
  // we have no react rendering support for reflinks
493
572
  reflink: { match: () => null },
494
573
  sublist: { react: listReact },
495
- ...(mentionedUsers
574
+ ...(mentionTokens
496
575
  ? {
497
576
  mentions: {
498
577
  match: mentionsMatchFunction,
@@ -507,7 +586,7 @@ export const renderText = (params: RenderTextParams) => {
507
586
 
508
587
  return (
509
588
  <Markdown
510
- key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${
589
+ key={`${JSON.stringify(mentionEntities)}-${onlyEmojis}-${
511
590
  messageOverlay ? JSON.stringify(markdownStyles) : undefined
512
591
  }-${JSON.stringify(semantics)}`}
513
592
  onLink={onLink}
@@ -118,7 +118,7 @@ const useStyles = () => {
118
118
  shadowRadius: 12,
119
119
  },
120
120
  suggestionsListContainer: {
121
- backgroundColor: semantics.backgroundCoreElevation1,
121
+ backgroundColor: 'transparent',
122
122
  position: 'absolute',
123
123
  width: '100%',
124
124
  },
@@ -200,7 +200,6 @@ const MessageComposerWithContext = (props: MessageComposerPropsWithContext) => {
200
200
  AudioRecordingInProgress,
201
201
  AudioRecordingLockIndicator,
202
202
  AudioRecordingPreview,
203
- AutoCompleteSuggestionList,
204
203
  Input,
205
204
  InputView,
206
205
  MessageComposerLeadingView,
@@ -227,7 +226,6 @@ const MessageComposerWithContext = (props: MessageComposerPropsWithContext) => {
227
226
  inputBoxWrapper,
228
227
  inputContainer,
229
228
  inputFloatingContainer,
230
- suggestionsListContainer: { container: suggestionListContainer },
231
229
  wrapper,
232
230
  },
233
231
  },
@@ -355,7 +353,12 @@ const MessageComposerWithContext = (props: MessageComposerPropsWithContext) => {
355
353
  layout: { height: newHeight },
356
354
  },
357
355
  }) => {
358
- messageInputHeightStore.setHeight(newHeight);
356
+ messageInputHeightStore.setHeight(
357
+ newHeight -
358
+ (selectedPicker && !isKeyboardVisible
359
+ ? attachmentPickerBottomSheetHeight - bottomInset
360
+ : 0),
361
+ );
359
362
  }}
360
363
  style={
361
364
  messageInputFloating
@@ -437,11 +440,6 @@ const MessageComposerWithContext = (props: MessageComposerPropsWithContext) => {
437
440
  <MessageComposerTrailingView />
438
441
  )}
439
442
  </View>
440
- <View
441
- style={[styles.suggestionsListContainer, { bottom: height }, suggestionListContainer]}
442
- >
443
- <AutoCompleteSuggestionList />
444
- </View>
445
443
  </PortalWhileClosingView>
446
444
  </Animated.View>
447
445
 
@@ -60,6 +60,7 @@ import { MessageInputHeightState } from '../../state-store/message-input-height-
60
60
  import { primitives } from '../../theme';
61
61
  import { transitions } from '../../utils/animations/transitions';
62
62
  import { MessageWrapper } from '../Message/MessageItemView/MessageWrapper';
63
+ import { PortalWhileClosingView } from '../UIComponents/PortalWhileClosingView';
63
64
 
64
65
  type FlashListContextApi = { getRef?: () => FlashListRef<LocalMessage> | null } | undefined;
65
66
 
@@ -297,6 +298,7 @@ const MessageFlashListWithContext = (props: MessageFlashListPropsWithContext) =>
297
298
  threadList = false,
298
299
  } = props;
299
300
  const {
301
+ AutoCompleteSuggestionList,
300
302
  EmptyStateIndicator,
301
303
  MessageListLoadingIndicator: LoadingIndicator,
302
304
  NetworkDownIndicator,
@@ -1135,6 +1137,22 @@ const MessageFlashListWithContext = (props: MessageFlashListPropsWithContext) =>
1135
1137
  />
1136
1138
  </View>
1137
1139
  ) : null}
1140
+ <Animated.View
1141
+ layout={transitions.layout200}
1142
+ style={[
1143
+ {
1144
+ bottom: messageInputFloating ? messageInputHeight + 16 : 0,
1145
+ },
1146
+ styles.suggestionsListContainer,
1147
+ ]}
1148
+ >
1149
+ <PortalWhileClosingView
1150
+ portalHostName='overlay-suggestion-list'
1151
+ portalName='autocomplete-suggestion-list'
1152
+ >
1153
+ <AutoCompleteSuggestionList />
1154
+ </PortalWhileClosingView>
1155
+ </Animated.View>
1138
1156
  <NotificationList bottomOffset={messageInputFloating ? messageInputHeight + 16 : undefined} />
1139
1157
  </View>
1140
1158
  );
@@ -1279,6 +1297,9 @@ const useStyles = () => {
1279
1297
  scrollToBottomButtonContainer,
1280
1298
  unreadMessagesNotificationContainer,
1281
1299
  },
1300
+ messageComposer: {
1301
+ suggestionsListContainer: { container: suggestionListContainer },
1302
+ },
1282
1303
  },
1283
1304
  } = useTheme();
1284
1305
 
@@ -1287,6 +1308,12 @@ const useStyles = () => {
1287
1308
  return useMemo(
1288
1309
  () =>
1289
1310
  StyleSheet.create({
1311
+ suggestionsListContainer: {
1312
+ backgroundColor: 'transparent',
1313
+ position: 'absolute',
1314
+ width: '100%',
1315
+ ...suggestionListContainer,
1316
+ },
1290
1317
  container: {
1291
1318
  flex: 1,
1292
1319
  width: '100%',
@@ -1338,6 +1365,7 @@ const useStyles = () => {
1338
1365
  scrollToBottomButtonContainer,
1339
1366
  stickyHeaderContainer,
1340
1367
  unreadMessagesNotificationContainer,
1368
+ suggestionListContainer,
1341
1369
  ],
1342
1370
  );
1343
1371
  };
@@ -74,6 +74,7 @@ import { primitives } from '../../theme';
74
74
  import { transitions } from '../../utils/animations/transitions';
75
75
  import { useIncomingMessageAnnouncements } from '../Accessibility/hooks/useIncomingMessageAnnouncements';
76
76
  import { MessageWrapper } from '../Message/MessageItemView/MessageWrapper';
77
+ import { PortalWhileClosingView } from '../UIComponents';
77
78
 
78
79
  // This is just to make sure that the scrolling happens in a different task queue.
79
80
  // TODO: Think if we really need this and strive to remove it if we can.
@@ -92,6 +93,9 @@ const useStyles = () => {
92
93
  scrollToBottomButtonContainer,
93
94
  unreadMessagesNotificationContainer,
94
95
  },
96
+ messageComposer: {
97
+ suggestionsListContainer: { container: suggestionListContainer },
98
+ },
95
99
  },
96
100
  } = useTheme();
97
101
 
@@ -100,6 +104,12 @@ const useStyles = () => {
100
104
  return useMemo(
101
105
  () =>
102
106
  StyleSheet.create({
107
+ suggestionsListContainer: {
108
+ backgroundColor: 'transparent',
109
+ position: 'absolute',
110
+ width: '100%',
111
+ ...suggestionListContainer,
112
+ },
103
113
  container: {
104
114
  flex: 1,
105
115
  width: '100%',
@@ -151,6 +161,7 @@ const useStyles = () => {
151
161
  scrollToBottomButtonContainer,
152
162
  stickyHeaderContainer,
153
163
  unreadMessagesNotificationContainer,
164
+ suggestionListContainer,
154
165
  ],
155
166
  );
156
167
  };
@@ -360,6 +371,7 @@ const MessageListWithContext = (props: MessageListPropsWithContext) => {
360
371
  TypingIndicator,
361
372
  TypingIndicatorContainer,
362
373
  UnreadMessagesNotification,
374
+ AutoCompleteSuggestionList,
363
375
  } = useComponentsContext();
364
376
  const [isUnreadNotificationOpen, setIsUnreadNotificationOpen] = useState<boolean>(false);
365
377
  const { theme } = useTheme();
@@ -1363,6 +1375,22 @@ const MessageListWithContext = (props: MessageListPropsWithContext) => {
1363
1375
  />
1364
1376
  </View>
1365
1377
  ) : null}
1378
+ <Animated.View
1379
+ layout={transitions.layout200}
1380
+ style={[
1381
+ {
1382
+ bottom: messageInputFloating ? messageInputHeight + 16 : 0,
1383
+ },
1384
+ styles.suggestionsListContainer,
1385
+ ]}
1386
+ >
1387
+ <PortalWhileClosingView
1388
+ portalHostName='overlay-suggestion-list'
1389
+ portalName='autocomplete-suggestion-list'
1390
+ >
1391
+ <AutoCompleteSuggestionList />
1392
+ </PortalWhileClosingView>
1393
+ </Animated.View>
1366
1394
  <NotificationList bottomOffset={messageInputFloating ? messageInputHeight + 16 : undefined} />
1367
1395
  </View>
1368
1396
  );
@@ -1715,6 +1715,30 @@ exports[`Thread should match thread snapshot 1`] = `
1715
1715
  }
1716
1716
  }
1717
1717
  />
1718
+ <View
1719
+ layout={BaseAnimationMock {}}
1720
+ style={
1721
+ [
1722
+ {
1723
+ "bottom": 0,
1724
+ },
1725
+ {
1726
+ "backgroundColor": "transparent",
1727
+ "position": "absolute",
1728
+ "width": "100%",
1729
+ },
1730
+ ]
1731
+ }
1732
+ >
1733
+ <View
1734
+ name="autocomplete-suggestion-list"
1735
+ >
1736
+ <View
1737
+ collapsable={false}
1738
+ onLayout={[Function]}
1739
+ />
1740
+ </View>
1741
+ </View>
1718
1742
  </View>
1719
1743
  <View
1720
1744
  layout={BaseAnimationMock {}}
@@ -2327,21 +2351,6 @@ exports[`Thread should match thread snapshot 1`] = `
2327
2351
  </View>
2328
2352
  </View>
2329
2353
  </View>
2330
- <View
2331
- style={
2332
- [
2333
- {
2334
- "backgroundColor": "#ffffff",
2335
- "position": "absolute",
2336
- "width": "100%",
2337
- },
2338
- {
2339
- "bottom": 0,
2340
- },
2341
- {},
2342
- ]
2343
- }
2344
- />
2345
2354
  </View>
2346
2355
  </View>
2347
2356
  </View>
@@ -39,12 +39,12 @@ import {
39
39
  } from './BottomSheetModal.utils';
40
40
 
41
41
  import { useA11yLabel } from '../../a11y/hooks/useA11yLabel';
42
+ import { useAnnounceOnShow } from '../../a11y/hooks/useAnnounceOnShow';
42
43
  import { useResolvedModalAccessibilityProps } from '../../a11y/hooks/useResolvedModalAccessibilityProps';
43
44
  import { BottomSheetProvider } from '../../contexts/bottomSheetContext/BottomSheetContext';
44
45
  import { useTheme } from '../../contexts/themeContext/ThemeContext';
45
46
  import { useStableCallback } from '../../hooks';
46
47
  import { primitives } from '../../theme';
47
- import { useAccessibilityAnnouncer } from '../Accessibility/useAccessibilityAnnouncer';
48
48
 
49
49
  export type BottomSheetModalProps = {
50
50
  /**
@@ -544,25 +544,10 @@ const BottomSheetModalInner = (props: PropsWithChildren<BottomSheetModalProps>)
544
544
 
545
545
  const modalA11yProps = useResolvedModalAccessibilityProps();
546
546
 
547
- const announce = useAccessibilityAnnouncer();
548
547
  const openAnnouncement = useA11yLabel(
549
548
  'a11y/Bottom sheet opened. Activate the close action or use the escape gesture to dismiss.',
550
549
  );
551
- const announcedOpenRef = useRef(false);
552
- useEffect(() => {
553
- if (!visible) {
554
- announcedOpenRef.current = false;
555
- return;
556
- }
557
- if (!openAnnouncement || announcedOpenRef.current) {
558
- return;
559
- }
560
- const id = setTimeout(() => {
561
- announce(openAnnouncement, 'polite');
562
- announcedOpenRef.current = true;
563
- }, 800);
564
- return () => clearTimeout(id);
565
- }, [visible, openAnnouncement, announce]);
550
+ useAnnounceOnShow(visible, openAnnouncement, { delayMs: 800 });
566
551
 
567
552
  const closeLabel = useA11yLabel('a11y/Close');
568
553
  const closeAccessibilityActions = useMemo(
@@ -0,0 +1,47 @@
1
+ import React from 'react';
2
+ import { StyleSheet, View } from 'react-native';
3
+
4
+ import Svg, { Defs, LinearGradient, Rect, Stop } from 'react-native-svg';
5
+
6
+ const CLIPPING_FADE_HEIGHT = 16;
7
+ const CLIPPING_FADE_GRADIENT_ID = 'sdk-clipping-fade-bottom';
8
+
9
+ export type ClippingFadeBottomProps = {
10
+ /**
11
+ * Color the fade ramps toward at the bottom edge. Typically the
12
+ * background color of the surface beneath the fade so the bottom edge of
13
+ * scrolling content visually melts into it.
14
+ */
15
+ backgroundColor: string;
16
+ };
17
+
18
+ /**
19
+ * Bottom edge fade overlay. Draws a 16px tall SVG linear gradient that
20
+ * ramps from the supplied background's transparent variant at the top to
21
+ * fully opaque at the bottom - visually clipping any content that scrolls
22
+ * past the lower edge of its parent. `pointerEvents='none'` so it doesn't
23
+ * intercept taps/scrolls on the rows underneath.
24
+ */
25
+ export const ClippingFadeBottom = ({ backgroundColor }: ClippingFadeBottomProps) => (
26
+ <View pointerEvents='none' style={styles.fade}>
27
+ <Svg height='100%' width='100%'>
28
+ <Defs>
29
+ <LinearGradient id={CLIPPING_FADE_GRADIENT_ID} x1='0' x2='0' y1='0' y2='1'>
30
+ <Stop offset='0' stopColor={backgroundColor} stopOpacity='0' />
31
+ <Stop offset='1' stopColor={backgroundColor} stopOpacity='1' />
32
+ </LinearGradient>
33
+ </Defs>
34
+ <Rect fill={`url(#${CLIPPING_FADE_GRADIENT_ID})`} height='100%' width='100%' />
35
+ </Svg>
36
+ </View>
37
+ );
38
+
39
+ const styles = StyleSheet.create({
40
+ fade: {
41
+ bottom: 0,
42
+ height: CLIPPING_FADE_HEIGHT,
43
+ left: 0,
44
+ position: 'absolute',
45
+ right: 0,
46
+ },
47
+ });
@@ -130,10 +130,6 @@ const useSyncingApi = (portalHostName: string, registrationId: string) => {
130
130
  y: y + (Platform.OS === 'android' ? insets.top : 0),
131
131
  };
132
132
 
133
- if (!width || !height) {
134
- return;
135
- }
136
-
137
133
  placeholderLayout.value = { h: height, w: width };
138
134
 
139
135
  setClosingPortalLayout(portalHostName, registrationId, {
@@ -1,4 +1,5 @@
1
1
  export * from './BottomSheetModal';
2
+ export * from './ClippingFadeBottom';
2
3
  export * from './StreamBottomSheetModalFlatList';
3
4
  export * from './EmptySearchResult';
4
5
  export * from './ImageBackground';
@@ -28,6 +28,7 @@ export * from './AutoCompleteInput/AutoCompleteSuggestionHeader';
28
28
  export * from './AutoCompleteInput/AutoCompleteSuggestionItem';
29
29
  export * from './AutoCompleteInput/AutoCompleteSuggestionList';
30
30
  export * from './AutoCompleteInput/InputView';
31
+ export * from './AutoCompleteInput/mentionItems';
31
32
 
32
33
  export * from './Channel/Channel';
33
34
  export * from './Channel/hooks/useCreateChannelContext';
@@ -24,7 +24,10 @@ import { AttachmentPickerContent } from '../../components/AttachmentPicker/compo
24
24
  import { AttachmentPickerSelectionBar } from '../../components/AttachmentPicker/components/AttachmentPickerSelectionBar';
25
25
  import { ImageOverlaySelectedComponent } from '../../components/AttachmentPicker/components/ImageOverlaySelectedComponent';
26
26
  import { AutoCompleteSuggestionHeader } from '../../components/AutoCompleteInput/AutoCompleteSuggestionHeader';
27
- import { AutoCompleteSuggestionItem } from '../../components/AutoCompleteInput/AutoCompleteSuggestionItem';
27
+ import {
28
+ AutoCompleteSuggestionItem,
29
+ MentionSuggestionItem,
30
+ } from '../../components/AutoCompleteInput/AutoCompleteSuggestionItem';
28
31
  import { AutoCompleteSuggestionList } from '../../components/AutoCompleteInput/AutoCompleteSuggestionList';
29
32
  import { InputView } from '../../components/AutoCompleteInput/InputView';
30
33
  import { ChannelDetailsContent } from '../../components/ChannelDetails/ChannelDetails';
@@ -196,6 +199,7 @@ const components = {
196
199
  AutoCompleteSuggestionHeader,
197
200
  AutoCompleteSuggestionItem,
198
201
  AutoCompleteSuggestionList,
202
+ MentionSuggestionItem,
199
203
  ChannelDetailsBottomSheet,
200
204
  CooldownTimer,
201
205
  CircularProgressIndicator,
@@ -563,6 +563,10 @@ export type Theme = {
563
563
  avatarSize: number;
564
564
  column: ViewStyle;
565
565
  container: ViewStyle;
566
+ enhancedMentionContainer: ViewStyle;
567
+ enhancedMentionIcon: ViewStyle;
568
+ enhancedMentionSubtitle: TextStyle;
569
+ enhancedMentionTitle: TextStyle;
566
570
  name: TextStyle;
567
571
  tag: TextStyle;
568
572
  };
@@ -570,6 +574,7 @@ export type Theme = {
570
574
  suggestionsListContainer: {
571
575
  container: ViewStyle;
572
576
  flatlist: ViewStyle;
577
+ flatlistContentContainer: ViewStyle;
573
578
  };
574
579
  videoAttachmentUploadPreview: {
575
580
  durationContainer: ViewStyle;
@@ -1602,6 +1607,10 @@ export const defaultTheme: Theme = {
1602
1607
  avatarSize: 40,
1603
1608
  column: {},
1604
1609
  container: {},
1610
+ enhancedMentionContainer: {},
1611
+ enhancedMentionIcon: {},
1612
+ enhancedMentionSubtitle: {},
1613
+ enhancedMentionTitle: {},
1605
1614
  name: {},
1606
1615
  tag: {},
1607
1616
  },
@@ -1609,6 +1618,7 @@ export const defaultTheme: Theme = {
1609
1618
  suggestionsListContainer: {
1610
1619
  container: {},
1611
1620
  flatlist: {},
1621
+ flatlistContentContainer: {},
1612
1622
  },
1613
1623
  wrapper: {},
1614
1624
  linkPreviewList: {
package/src/i18n/ar.json CHANGED
@@ -437,6 +437,12 @@
437
437
  "a11y/Gallery Image": "صورة من المعرض",
438
438
  "a11y/Gallery Video": "فيديو من المعرض",
439
439
  "a11y/{{position}} of {{count}}": "{{position}} من {{count}}",
440
+ "Notify all {{ role }} members": "Notify all {{ role }} members",
441
+ "a11y/Command suggestions available": "Command suggestions available",
442
+ "a11y/Emoji suggestions available": "Emoji suggestions available",
443
+ "a11y/Mention suggestions available": "Mention suggestions available",
444
+ "mention/Channel Description": "Notify everyone in this channel",
445
+ "mention/Here Description": "Notify every online member in this channel",
440
446
  "Pin Chat": "تثبيت الدردشة",
441
447
  "Pin Group": "تثبيت المجموعة",
442
448
  "Unpin Chat": "إلغاء تثبيت الدردشة",
package/src/i18n/en.json CHANGED
@@ -440,5 +440,11 @@
440
440
  "a11y/{{count}} unread messages": "{{count}} unread messages",
441
441
  "a11y/Gallery Image": "Gallery image",
442
442
  "a11y/Gallery Video": "Gallery video",
443
- "a11y/{{position}} of {{count}}": "{{position}} of {{count}}"
443
+ "a11y/{{position}} of {{count}}": "{{position}} of {{count}}",
444
+ "Notify all {{ role }} members": "Notify all {{ role }} members",
445
+ "a11y/Command suggestions available": "Command suggestions available",
446
+ "a11y/Emoji suggestions available": "Emoji suggestions available",
447
+ "a11y/Mention suggestions available": "Mention suggestions available",
448
+ "mention/Channel Description": "Notify everyone in this channel",
449
+ "mention/Here Description": "Notify every online member in this channel"
444
450
  }
package/src/i18n/es.json CHANGED
@@ -437,6 +437,12 @@
437
437
  "a11y/Gallery Image": "Imagen de la galería",
438
438
  "a11y/Gallery Video": "Vídeo de la galería",
439
439
  "a11y/{{position}} of {{count}}": "{{position}} de {{count}}",
440
+ "Notify all {{ role }} members": "Notify all {{ role }} members",
441
+ "a11y/Command suggestions available": "Command suggestions available",
442
+ "a11y/Emoji suggestions available": "Emoji suggestions available",
443
+ "a11y/Mention suggestions available": "Mention suggestions available",
444
+ "mention/Channel Description": "Notify everyone in this channel",
445
+ "mention/Here Description": "Notify every online member in this channel",
440
446
  "Pin Chat": "Fijar chat",
441
447
  "Pin Group": "Fijar grupo",
442
448
  "Unpin Chat": "Desfijar chat",
package/src/i18n/fr.json CHANGED
@@ -437,6 +437,12 @@
437
437
  "a11y/Gallery Image": "Image de la galerie",
438
438
  "a11y/Gallery Video": "Vidéo de la galerie",
439
439
  "a11y/{{position}} of {{count}}": "{{position}} sur {{count}}",
440
+ "Notify all {{ role }} members": "Notify all {{ role }} members",
441
+ "a11y/Command suggestions available": "Command suggestions available",
442
+ "a11y/Emoji suggestions available": "Emoji suggestions available",
443
+ "a11y/Mention suggestions available": "Mention suggestions available",
444
+ "mention/Channel Description": "Notify everyone in this channel",
445
+ "mention/Here Description": "Notify every online member in this channel",
440
446
  "Pin Chat": "Épingler la discussion",
441
447
  "Pin Group": "Épingler le groupe",
442
448
  "Unpin Chat": "Détacher la discussion",
package/src/i18n/he.json CHANGED
@@ -437,6 +437,12 @@
437
437
  "a11y/Gallery Image": "תמונה מהגלריה",
438
438
  "a11y/Gallery Video": "סרטון מהגלריה",
439
439
  "a11y/{{position}} of {{count}}": "{{position}} מתוך {{count}}",
440
+ "Notify all {{ role }} members": "Notify all {{ role }} members",
441
+ "a11y/Command suggestions available": "Command suggestions available",
442
+ "a11y/Emoji suggestions available": "Emoji suggestions available",
443
+ "a11y/Mention suggestions available": "Mention suggestions available",
444
+ "mention/Channel Description": "Notify everyone in this channel",
445
+ "mention/Here Description": "Notify every online member in this channel",
440
446
  "Pin Chat": "הצמד/י צ'אט",
441
447
  "Pin Group": "הצמד/י קבוצה",
442
448
  "Unpin Chat": "בטל/י הצמדת צ'אט",