stream-chat-react-native-core 9.0.0-beta.31 → 9.0.0-beta.32

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 (590) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +15 -52
  2. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/FileAttachment.js +4 -6
  4. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +4 -10
  6. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
  7. package/lib/commonjs/components/Attachment/FilePreview.js +3 -6
  8. package/lib/commonjs/components/Attachment/FilePreview.js.map +1 -1
  9. package/lib/commonjs/components/Attachment/Gallery.js +9 -28
  10. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  11. package/lib/commonjs/components/Attachment/GalleryImage.js +3 -3
  12. package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
  13. package/lib/commonjs/components/Attachment/Giphy/GiphyImage.js +7 -13
  14. package/lib/commonjs/components/Attachment/Giphy/GiphyImage.js.map +1 -1
  15. package/lib/commonjs/components/Attachment/UnsupportedAttachment.js +4 -6
  16. package/lib/commonjs/components/Attachment/UnsupportedAttachment.js.map +1 -1
  17. package/lib/commonjs/components/Attachment/UrlPreview/URLPreview.js +3 -3
  18. package/lib/commonjs/components/Attachment/UrlPreview/URLPreview.js.map +1 -1
  19. package/lib/commonjs/components/Attachment/UrlPreview/URLPreviewCompact.js +3 -3
  20. package/lib/commonjs/components/Attachment/UrlPreview/URLPreviewCompact.js.map +1 -1
  21. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +4 -2
  22. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  23. package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +7 -4
  24. package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
  25. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +9 -13
  26. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  27. package/lib/commonjs/components/Channel/Channel.js +9 -418
  28. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  29. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +0 -8
  30. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  31. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +3 -77
  32. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  33. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -132
  34. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  35. package/lib/commonjs/components/ChannelList/ChannelList.js +1 -57
  36. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  37. package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js +4 -2
  38. package/lib/commonjs/components/ChannelList/ChannelListLoadingIndicator.js.map +1 -1
  39. package/lib/commonjs/components/ChannelList/ChannelListView.js +11 -20
  40. package/lib/commonjs/components/ChannelList/ChannelListView.js.map +1 -1
  41. package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js +1 -39
  42. package/lib/commonjs/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
  43. package/lib/commonjs/components/ChannelPreview/ChannelDetailsBottomSheet.js +3 -2
  44. package/lib/commonjs/components/ChannelPreview/ChannelDetailsBottomSheet.js.map +1 -1
  45. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +4 -6
  46. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  47. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js +6 -18
  48. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  49. package/lib/commonjs/components/ChannelPreview/ChannelPreviewView.js +8 -28
  50. package/lib/commonjs/components/ChannelPreview/ChannelPreviewView.js.map +1 -1
  51. package/lib/commonjs/components/ChannelPreview/ChannelSwipableWrapper.js +3 -3
  52. package/lib/commonjs/components/ChannelPreview/ChannelSwipableWrapper.js.map +1 -1
  53. package/lib/commonjs/components/Chat/Chat.js +4 -6
  54. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  55. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +0 -2
  56. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  57. package/lib/commonjs/components/ImageGallery/ImageGallery.js +7 -9
  58. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  59. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +4 -2
  60. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  61. package/lib/commonjs/components/Message/Message.js +9 -13
  62. package/lib/commonjs/components/Message/Message.js.map +1 -1
  63. package/lib/commonjs/components/Message/MessageItemView/MessageBubble.js +4 -2
  64. package/lib/commonjs/components/Message/MessageItemView/MessageBubble.js.map +1 -1
  65. package/lib/commonjs/components/Message/MessageItemView/MessageContent.js +18 -39
  66. package/lib/commonjs/components/Message/MessageItemView/MessageContent.js.map +1 -1
  67. package/lib/commonjs/components/Message/MessageItemView/MessageDeleted.js +5 -7
  68. package/lib/commonjs/components/Message/MessageItemView/MessageDeleted.js.map +1 -1
  69. package/lib/commonjs/components/Message/MessageItemView/MessageFooter.js +4 -8
  70. package/lib/commonjs/components/Message/MessageItemView/MessageFooter.js.map +1 -1
  71. package/lib/commonjs/components/Message/MessageItemView/MessageHeader.js +8 -16
  72. package/lib/commonjs/components/Message/MessageItemView/MessageHeader.js.map +1 -1
  73. package/lib/commonjs/components/Message/MessageItemView/MessageItemView.js +13 -35
  74. package/lib/commonjs/components/Message/MessageItemView/MessageItemView.js.map +1 -1
  75. package/lib/commonjs/components/Message/MessageItemView/MessageReplies.js +3 -5
  76. package/lib/commonjs/components/Message/MessageItemView/MessageReplies.js.map +1 -1
  77. package/lib/commonjs/components/Message/MessageItemView/MessageTextContainer.js +3 -3
  78. package/lib/commonjs/components/Message/MessageItemView/MessageTextContainer.js.map +1 -1
  79. package/lib/commonjs/components/Message/MessageItemView/MessageWrapper.js +6 -4
  80. package/lib/commonjs/components/Message/MessageItemView/MessageWrapper.js.map +1 -1
  81. package/lib/commonjs/components/Message/MessageItemView/ReactionList/ReactionListBottom.js +6 -8
  82. package/lib/commonjs/components/Message/MessageItemView/ReactionList/ReactionListBottom.js.map +1 -1
  83. package/lib/commonjs/components/Message/MessageItemView/ReactionList/ReactionListTop.js +7 -11
  84. package/lib/commonjs/components/Message/MessageItemView/ReactionList/ReactionListTop.js.map +1 -1
  85. package/lib/commonjs/components/MessageInput/MessageComposer.js +15 -55
  86. package/lib/commonjs/components/MessageInput/MessageComposer.js.map +1 -1
  87. package/lib/commonjs/components/MessageInput/MessageInputHeaderView.js +5 -5
  88. package/lib/commonjs/components/MessageInput/MessageInputHeaderView.js.map +1 -1
  89. package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js +9 -17
  90. package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js.map +1 -1
  91. package/lib/commonjs/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.js +5 -5
  92. package/lib/commonjs/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.js.map +1 -1
  93. package/lib/commonjs/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.js +5 -5
  94. package/lib/commonjs/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.js.map +1 -1
  95. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js +5 -5
  96. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js.map +1 -1
  97. package/lib/commonjs/components/MessageInput/components/InputButtons/index.js +4 -4
  98. package/lib/commonjs/components/MessageInput/components/InputButtons/index.js.map +1 -1
  99. package/lib/commonjs/components/MessageInput/components/LinkPreviewList.js +3 -2
  100. package/lib/commonjs/components/MessageInput/components/LinkPreviewList.js.map +1 -1
  101. package/lib/commonjs/components/MessageInput/components/OutputButtons/index.js +7 -13
  102. package/lib/commonjs/components/MessageInput/components/OutputButtons/index.js.map +1 -1
  103. package/lib/commonjs/components/MessageList/MessageFlashList.js +14 -40
  104. package/lib/commonjs/components/MessageList/MessageFlashList.js.map +1 -1
  105. package/lib/commonjs/components/MessageList/MessageList.js +12 -38
  106. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  107. package/lib/commonjs/components/MessageList/StickyHeader.js +3 -1
  108. package/lib/commonjs/components/MessageList/StickyHeader.js.map +1 -1
  109. package/lib/commonjs/components/MessageMenu/MessageActionList.js +4 -2
  110. package/lib/commonjs/components/MessageMenu/MessageActionList.js.map +1 -1
  111. package/lib/commonjs/components/MessageMenu/MessageMenu.js.map +1 -1
  112. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js +4 -8
  113. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js.map +1 -1
  114. package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js +4 -2
  115. package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js.map +1 -1
  116. package/lib/commonjs/components/Poll/CreatePollContent.js +3 -1
  117. package/lib/commonjs/components/Poll/CreatePollContent.js.map +1 -1
  118. package/lib/commonjs/components/Poll/Poll.js +12 -9
  119. package/lib/commonjs/components/Poll/Poll.js.map +1 -1
  120. package/lib/commonjs/components/Poll/components/PollAnswersList.js +5 -3
  121. package/lib/commonjs/components/Poll/components/PollAnswersList.js.map +1 -1
  122. package/lib/commonjs/components/Poll/components/PollOption.js +5 -3
  123. package/lib/commonjs/components/Poll/components/PollOption.js.map +1 -1
  124. package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js +5 -5
  125. package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
  126. package/lib/commonjs/components/Poll/components/PollResults/PollResults.js +5 -3
  127. package/lib/commonjs/components/Poll/components/PollResults/PollResults.js.map +1 -1
  128. package/lib/commonjs/components/Reply/Reply.js +4 -2
  129. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  130. package/lib/commonjs/components/Thread/Thread.js +4 -8
  131. package/lib/commonjs/components/Thread/Thread.js.map +1 -1
  132. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +4 -6
  133. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  134. package/lib/commonjs/components/ThreadList/ThreadList.js +12 -15
  135. package/lib/commonjs/components/ThreadList/ThreadList.js.map +1 -1
  136. package/lib/commonjs/components/ThreadList/ThreadListItem.js +8 -11
  137. package/lib/commonjs/components/ThreadList/ThreadListItem.js.map +1 -1
  138. package/lib/commonjs/components/ui/Avatar/Avatar.js +3 -3
  139. package/lib/commonjs/components/ui/Avatar/Avatar.js.map +1 -1
  140. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  141. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  142. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
  143. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  144. package/lib/commonjs/contexts/componentsContext/ComponentsContext.js +37 -0
  145. package/lib/commonjs/contexts/componentsContext/ComponentsContext.js.map +1 -0
  146. package/lib/commonjs/contexts/componentsContext/PLAN.md +148 -0
  147. package/lib/commonjs/contexts/componentsContext/defaultComponents.js +286 -0
  148. package/lib/commonjs/contexts/componentsContext/defaultComponents.js.map +1 -0
  149. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +1 -9
  150. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  151. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContextBase.js.map +1 -1
  152. package/lib/commonjs/contexts/index.js +11 -0
  153. package/lib/commonjs/contexts/index.js.map +1 -1
  154. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  155. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -76
  156. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  157. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  158. package/lib/commonjs/contexts/overlayContext/MessageOverlayHostLayer.js +7 -5
  159. package/lib/commonjs/contexts/overlayContext/MessageOverlayHostLayer.js.map +1 -1
  160. package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
  161. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +1 -4
  162. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  163. package/lib/commonjs/contexts/threadsContext/ThreadsContext.js.map +1 -1
  164. package/lib/commonjs/version.json +1 -1
  165. package/lib/module/components/Attachment/Attachment.js +15 -52
  166. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  167. package/lib/module/components/Attachment/FileAttachment.js +4 -6
  168. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  169. package/lib/module/components/Attachment/FileAttachmentGroup.js +4 -10
  170. package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
  171. package/lib/module/components/Attachment/FilePreview.js +3 -6
  172. package/lib/module/components/Attachment/FilePreview.js.map +1 -1
  173. package/lib/module/components/Attachment/Gallery.js +9 -28
  174. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  175. package/lib/module/components/Attachment/GalleryImage.js +3 -3
  176. package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
  177. package/lib/module/components/Attachment/Giphy/GiphyImage.js +7 -13
  178. package/lib/module/components/Attachment/Giphy/GiphyImage.js.map +1 -1
  179. package/lib/module/components/Attachment/UnsupportedAttachment.js +4 -6
  180. package/lib/module/components/Attachment/UnsupportedAttachment.js.map +1 -1
  181. package/lib/module/components/Attachment/UrlPreview/URLPreview.js +3 -3
  182. package/lib/module/components/Attachment/UrlPreview/URLPreview.js.map +1 -1
  183. package/lib/module/components/Attachment/UrlPreview/URLPreviewCompact.js +3 -3
  184. package/lib/module/components/Attachment/UrlPreview/URLPreviewCompact.js.map +1 -1
  185. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +4 -2
  186. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  187. package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +7 -4
  188. package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
  189. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +9 -13
  190. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  191. package/lib/module/components/Channel/Channel.js +9 -418
  192. package/lib/module/components/Channel/Channel.js.map +1 -1
  193. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +0 -8
  194. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  195. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +3 -77
  196. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  197. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -132
  198. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  199. package/lib/module/components/ChannelList/ChannelList.js +1 -57
  200. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  201. package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js +4 -2
  202. package/lib/module/components/ChannelList/ChannelListLoadingIndicator.js.map +1 -1
  203. package/lib/module/components/ChannelList/ChannelListView.js +11 -20
  204. package/lib/module/components/ChannelList/ChannelListView.js.map +1 -1
  205. package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js +1 -39
  206. package/lib/module/components/ChannelList/hooks/useCreateChannelsContext.js.map +1 -1
  207. package/lib/module/components/ChannelPreview/ChannelDetailsBottomSheet.js +3 -2
  208. package/lib/module/components/ChannelPreview/ChannelDetailsBottomSheet.js.map +1 -1
  209. package/lib/module/components/ChannelPreview/ChannelPreview.js +4 -6
  210. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  211. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js +6 -18
  212. package/lib/module/components/ChannelPreview/ChannelPreviewMessage.js.map +1 -1
  213. package/lib/module/components/ChannelPreview/ChannelPreviewView.js +8 -28
  214. package/lib/module/components/ChannelPreview/ChannelPreviewView.js.map +1 -1
  215. package/lib/module/components/ChannelPreview/ChannelSwipableWrapper.js +3 -3
  216. package/lib/module/components/ChannelPreview/ChannelSwipableWrapper.js.map +1 -1
  217. package/lib/module/components/Chat/Chat.js +4 -6
  218. package/lib/module/components/Chat/Chat.js.map +1 -1
  219. package/lib/module/components/Chat/hooks/useCreateChatContext.js +0 -2
  220. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  221. package/lib/module/components/ImageGallery/ImageGallery.js +7 -9
  222. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  223. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +4 -2
  224. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  225. package/lib/module/components/Message/Message.js +9 -13
  226. package/lib/module/components/Message/Message.js.map +1 -1
  227. package/lib/module/components/Message/MessageItemView/MessageBubble.js +4 -2
  228. package/lib/module/components/Message/MessageItemView/MessageBubble.js.map +1 -1
  229. package/lib/module/components/Message/MessageItemView/MessageContent.js +18 -39
  230. package/lib/module/components/Message/MessageItemView/MessageContent.js.map +1 -1
  231. package/lib/module/components/Message/MessageItemView/MessageDeleted.js +5 -7
  232. package/lib/module/components/Message/MessageItemView/MessageDeleted.js.map +1 -1
  233. package/lib/module/components/Message/MessageItemView/MessageFooter.js +4 -8
  234. package/lib/module/components/Message/MessageItemView/MessageFooter.js.map +1 -1
  235. package/lib/module/components/Message/MessageItemView/MessageHeader.js +8 -16
  236. package/lib/module/components/Message/MessageItemView/MessageHeader.js.map +1 -1
  237. package/lib/module/components/Message/MessageItemView/MessageItemView.js +13 -35
  238. package/lib/module/components/Message/MessageItemView/MessageItemView.js.map +1 -1
  239. package/lib/module/components/Message/MessageItemView/MessageReplies.js +3 -5
  240. package/lib/module/components/Message/MessageItemView/MessageReplies.js.map +1 -1
  241. package/lib/module/components/Message/MessageItemView/MessageTextContainer.js +3 -3
  242. package/lib/module/components/Message/MessageItemView/MessageTextContainer.js.map +1 -1
  243. package/lib/module/components/Message/MessageItemView/MessageWrapper.js +6 -4
  244. package/lib/module/components/Message/MessageItemView/MessageWrapper.js.map +1 -1
  245. package/lib/module/components/Message/MessageItemView/ReactionList/ReactionListBottom.js +6 -8
  246. package/lib/module/components/Message/MessageItemView/ReactionList/ReactionListBottom.js.map +1 -1
  247. package/lib/module/components/Message/MessageItemView/ReactionList/ReactionListTop.js +7 -11
  248. package/lib/module/components/Message/MessageItemView/ReactionList/ReactionListTop.js.map +1 -1
  249. package/lib/module/components/MessageInput/MessageComposer.js +15 -55
  250. package/lib/module/components/MessageInput/MessageComposer.js.map +1 -1
  251. package/lib/module/components/MessageInput/MessageInputHeaderView.js +5 -5
  252. package/lib/module/components/MessageInput/MessageInputHeaderView.js.map +1 -1
  253. package/lib/module/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js +9 -17
  254. package/lib/module/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.js.map +1 -1
  255. package/lib/module/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.js +5 -5
  256. package/lib/module/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.js.map +1 -1
  257. package/lib/module/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.js +5 -5
  258. package/lib/module/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.js.map +1 -1
  259. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js +5 -5
  260. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.js.map +1 -1
  261. package/lib/module/components/MessageInput/components/InputButtons/index.js +4 -4
  262. package/lib/module/components/MessageInput/components/InputButtons/index.js.map +1 -1
  263. package/lib/module/components/MessageInput/components/LinkPreviewList.js +3 -2
  264. package/lib/module/components/MessageInput/components/LinkPreviewList.js.map +1 -1
  265. package/lib/module/components/MessageInput/components/OutputButtons/index.js +7 -13
  266. package/lib/module/components/MessageInput/components/OutputButtons/index.js.map +1 -1
  267. package/lib/module/components/MessageList/MessageFlashList.js +14 -40
  268. package/lib/module/components/MessageList/MessageFlashList.js.map +1 -1
  269. package/lib/module/components/MessageList/MessageList.js +12 -38
  270. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  271. package/lib/module/components/MessageList/StickyHeader.js +3 -1
  272. package/lib/module/components/MessageList/StickyHeader.js.map +1 -1
  273. package/lib/module/components/MessageMenu/MessageActionList.js +4 -2
  274. package/lib/module/components/MessageMenu/MessageActionList.js.map +1 -1
  275. package/lib/module/components/MessageMenu/MessageMenu.js.map +1 -1
  276. package/lib/module/components/MessageMenu/MessageUserReactions.js +4 -8
  277. package/lib/module/components/MessageMenu/MessageUserReactions.js.map +1 -1
  278. package/lib/module/components/MessageMenu/MessageUserReactionsItem.js +4 -2
  279. package/lib/module/components/MessageMenu/MessageUserReactionsItem.js.map +1 -1
  280. package/lib/module/components/Poll/CreatePollContent.js +3 -1
  281. package/lib/module/components/Poll/CreatePollContent.js.map +1 -1
  282. package/lib/module/components/Poll/Poll.js +12 -9
  283. package/lib/module/components/Poll/Poll.js.map +1 -1
  284. package/lib/module/components/Poll/components/PollAnswersList.js +5 -3
  285. package/lib/module/components/Poll/components/PollAnswersList.js.map +1 -1
  286. package/lib/module/components/Poll/components/PollOption.js +5 -3
  287. package/lib/module/components/Poll/components/PollOption.js.map +1 -1
  288. package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js +5 -5
  289. package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
  290. package/lib/module/components/Poll/components/PollResults/PollResults.js +5 -3
  291. package/lib/module/components/Poll/components/PollResults/PollResults.js.map +1 -1
  292. package/lib/module/components/Reply/Reply.js +4 -2
  293. package/lib/module/components/Reply/Reply.js.map +1 -1
  294. package/lib/module/components/Thread/Thread.js +4 -8
  295. package/lib/module/components/Thread/Thread.js.map +1 -1
  296. package/lib/module/components/Thread/components/ThreadFooterComponent.js +4 -6
  297. package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  298. package/lib/module/components/ThreadList/ThreadList.js +12 -15
  299. package/lib/module/components/ThreadList/ThreadList.js.map +1 -1
  300. package/lib/module/components/ThreadList/ThreadListItem.js +8 -11
  301. package/lib/module/components/ThreadList/ThreadListItem.js.map +1 -1
  302. package/lib/module/components/ui/Avatar/Avatar.js +3 -3
  303. package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
  304. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  305. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  306. package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
  307. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  308. package/lib/module/contexts/componentsContext/ComponentsContext.js +37 -0
  309. package/lib/module/contexts/componentsContext/ComponentsContext.js.map +1 -0
  310. package/lib/module/contexts/componentsContext/PLAN.md +148 -0
  311. package/lib/module/contexts/componentsContext/defaultComponents.js +286 -0
  312. package/lib/module/contexts/componentsContext/defaultComponents.js.map +1 -0
  313. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +1 -9
  314. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  315. package/lib/module/contexts/imageGalleryContext/ImageGalleryContextBase.js.map +1 -1
  316. package/lib/module/contexts/index.js +11 -0
  317. package/lib/module/contexts/index.js.map +1 -1
  318. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  319. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -76
  320. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  321. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  322. package/lib/module/contexts/overlayContext/MessageOverlayHostLayer.js +7 -5
  323. package/lib/module/contexts/overlayContext/MessageOverlayHostLayer.js.map +1 -1
  324. package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
  325. package/lib/module/contexts/overlayContext/OverlayProvider.js +1 -4
  326. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  327. package/lib/module/contexts/threadsContext/ThreadsContext.js.map +1 -1
  328. package/lib/module/version.json +1 -1
  329. package/lib/typescript/components/Attachment/Attachment.d.ts +1 -1
  330. package/lib/typescript/components/Attachment/Attachment.d.ts.map +1 -1
  331. package/lib/typescript/components/Attachment/FileAttachment.d.ts +1 -1
  332. package/lib/typescript/components/Attachment/FileAttachment.d.ts.map +1 -1
  333. package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts +1 -2
  334. package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts.map +1 -1
  335. package/lib/typescript/components/Attachment/FilePreview.d.ts +2 -3
  336. package/lib/typescript/components/Attachment/FilePreview.d.ts.map +1 -1
  337. package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
  338. package/lib/typescript/components/Attachment/Gallery.d.ts.map +1 -1
  339. package/lib/typescript/components/Attachment/GalleryImage.d.ts +3 -2
  340. package/lib/typescript/components/Attachment/GalleryImage.d.ts.map +1 -1
  341. package/lib/typescript/components/Attachment/Giphy/GiphyImage.d.ts +4 -2
  342. package/lib/typescript/components/Attachment/Giphy/GiphyImage.d.ts.map +1 -1
  343. package/lib/typescript/components/Attachment/UnsupportedAttachment.d.ts +2 -3
  344. package/lib/typescript/components/Attachment/UnsupportedAttachment.d.ts.map +1 -1
  345. package/lib/typescript/components/Attachment/UrlPreview/URLPreview.d.ts +4 -3
  346. package/lib/typescript/components/Attachment/UrlPreview/URLPreview.d.ts.map +1 -1
  347. package/lib/typescript/components/Attachment/UrlPreview/URLPreviewCompact.d.ts +4 -3
  348. package/lib/typescript/components/Attachment/UrlPreview/URLPreviewCompact.d.ts.map +1 -1
  349. package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts.map +1 -1
  350. package/lib/typescript/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.d.ts.map +1 -1
  351. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts +2 -3
  352. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts.map +1 -1
  353. package/lib/typescript/components/Channel/Channel.d.ts +3 -28
  354. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  355. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
  356. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts.map +1 -1
  357. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
  358. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts.map +1 -1
  359. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  360. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts.map +1 -1
  361. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts.map +1 -1
  362. package/lib/typescript/components/ChannelList/ChannelList.d.ts +2 -10
  363. package/lib/typescript/components/ChannelList/ChannelList.d.ts.map +1 -1
  364. package/lib/typescript/components/ChannelList/ChannelListLoadingIndicator.d.ts.map +1 -1
  365. package/lib/typescript/components/ChannelList/ChannelListView.d.ts +1 -1
  366. package/lib/typescript/components/ChannelList/ChannelListView.d.ts.map +1 -1
  367. package/lib/typescript/components/ChannelList/hooks/useCreateChannelsContext.d.ts +1 -1
  368. package/lib/typescript/components/ChannelList/hooks/useCreateChannelsContext.d.ts.map +1 -1
  369. package/lib/typescript/components/ChannelPreview/ChannelDetailsBottomSheet.d.ts +1 -2
  370. package/lib/typescript/components/ChannelPreview/ChannelDetailsBottomSheet.d.ts.map +1 -1
  371. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts +1 -1
  372. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  373. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessage.d.ts +1 -2
  374. package/lib/typescript/components/ChannelPreview/ChannelPreviewMessage.d.ts.map +1 -1
  375. package/lib/typescript/components/ChannelPreview/ChannelPreviewView.d.ts +1 -1
  376. package/lib/typescript/components/ChannelPreview/ChannelPreviewView.d.ts.map +1 -1
  377. package/lib/typescript/components/ChannelPreview/ChannelSwipableWrapper.d.ts +1 -3
  378. package/lib/typescript/components/ChannelPreview/ChannelSwipableWrapper.d.ts.map +1 -1
  379. package/lib/typescript/components/Chat/Chat.d.ts +1 -7
  380. package/lib/typescript/components/Chat/Chat.d.ts.map +1 -1
  381. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  382. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  383. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +6 -1
  384. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts.map +1 -1
  385. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts.map +1 -1
  386. package/lib/typescript/components/ImageGallery/components/types.d.ts +0 -2
  387. package/lib/typescript/components/ImageGallery/components/types.d.ts.map +1 -1
  388. package/lib/typescript/components/Message/Message.d.ts +1 -1
  389. package/lib/typescript/components/Message/Message.d.ts.map +1 -1
  390. package/lib/typescript/components/Message/MessageItemView/MessageBubble.d.ts +1 -2
  391. package/lib/typescript/components/Message/MessageItemView/MessageBubble.d.ts.map +1 -1
  392. package/lib/typescript/components/Message/MessageItemView/MessageContent.d.ts +1 -1
  393. package/lib/typescript/components/Message/MessageItemView/MessageContent.d.ts.map +1 -1
  394. package/lib/typescript/components/Message/MessageItemView/MessageDeleted.d.ts +1 -2
  395. package/lib/typescript/components/Message/MessageItemView/MessageDeleted.d.ts.map +1 -1
  396. package/lib/typescript/components/Message/MessageItemView/MessageFooter.d.ts +0 -2
  397. package/lib/typescript/components/Message/MessageItemView/MessageFooter.d.ts.map +1 -1
  398. package/lib/typescript/components/Message/MessageItemView/MessageHeader.d.ts.map +1 -1
  399. package/lib/typescript/components/Message/MessageItemView/MessageItemView.d.ts +1 -1
  400. package/lib/typescript/components/Message/MessageItemView/MessageItemView.d.ts.map +1 -1
  401. package/lib/typescript/components/Message/MessageItemView/MessageReplies.d.ts +1 -2
  402. package/lib/typescript/components/Message/MessageItemView/MessageReplies.d.ts.map +1 -1
  403. package/lib/typescript/components/Message/MessageItemView/MessageTextContainer.d.ts +1 -1
  404. package/lib/typescript/components/Message/MessageItemView/MessageTextContainer.d.ts.map +1 -1
  405. package/lib/typescript/components/Message/MessageItemView/MessageWrapper.d.ts.map +1 -1
  406. package/lib/typescript/components/Message/MessageItemView/ReactionList/ReactionListBottom.d.ts +1 -1
  407. package/lib/typescript/components/Message/MessageItemView/ReactionList/ReactionListBottom.d.ts.map +1 -1
  408. package/lib/typescript/components/Message/MessageItemView/ReactionList/ReactionListTop.d.ts +1 -1
  409. package/lib/typescript/components/Message/MessageItemView/ReactionList/ReactionListTop.d.ts.map +1 -1
  410. package/lib/typescript/components/MessageInput/MessageComposer.d.ts +1 -2
  411. package/lib/typescript/components/MessageInput/MessageComposer.d.ts.map +1 -1
  412. package/lib/typescript/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.d.ts +3 -4
  413. package/lib/typescript/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.d.ts.map +1 -1
  414. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.d.ts +1 -1
  415. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.d.ts.map +1 -1
  416. package/lib/typescript/components/MessageInput/components/InputButtons/index.d.ts +1 -1
  417. package/lib/typescript/components/MessageInput/components/InputButtons/index.d.ts.map +1 -1
  418. package/lib/typescript/components/MessageInput/components/LinkPreviewList.d.ts.map +1 -1
  419. package/lib/typescript/components/MessageInput/components/OutputButtons/index.d.ts +1 -1
  420. package/lib/typescript/components/MessageInput/components/OutputButtons/index.d.ts.map +1 -1
  421. package/lib/typescript/components/MessageList/MessageFlashList.d.ts +1 -1
  422. package/lib/typescript/components/MessageList/MessageFlashList.d.ts.map +1 -1
  423. package/lib/typescript/components/MessageList/MessageList.d.ts +1 -1
  424. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  425. package/lib/typescript/components/MessageList/StickyHeader.d.ts +2 -3
  426. package/lib/typescript/components/MessageList/StickyHeader.d.ts.map +1 -1
  427. package/lib/typescript/components/MessageMenu/MessageActionList.d.ts +1 -2
  428. package/lib/typescript/components/MessageMenu/MessageActionList.d.ts.map +1 -1
  429. package/lib/typescript/components/MessageMenu/MessageMenu.d.ts +1 -2
  430. package/lib/typescript/components/MessageMenu/MessageMenu.d.ts.map +1 -1
  431. package/lib/typescript/components/MessageMenu/MessageUserReactions.d.ts +1 -1
  432. package/lib/typescript/components/MessageMenu/MessageUserReactions.d.ts.map +1 -1
  433. package/lib/typescript/components/MessageMenu/MessageUserReactionsItem.d.ts +2 -3
  434. package/lib/typescript/components/MessageMenu/MessageUserReactionsItem.d.ts.map +1 -1
  435. package/lib/typescript/components/Poll/CreatePollContent.d.ts +2 -2
  436. package/lib/typescript/components/Poll/CreatePollContent.d.ts.map +1 -1
  437. package/lib/typescript/components/Poll/Poll.d.ts +5 -8
  438. package/lib/typescript/components/Poll/Poll.d.ts.map +1 -1
  439. package/lib/typescript/components/Poll/components/PollAnswersList.d.ts +1 -2
  440. package/lib/typescript/components/Poll/components/PollAnswersList.d.ts.map +1 -1
  441. package/lib/typescript/components/Poll/components/PollOption.d.ts +1 -2
  442. package/lib/typescript/components/Poll/components/PollOption.d.ts.map +1 -1
  443. package/lib/typescript/components/Poll/components/PollResults/PollOptionFullResults.d.ts +1 -4
  444. package/lib/typescript/components/Poll/components/PollResults/PollOptionFullResults.d.ts.map +1 -1
  445. package/lib/typescript/components/Poll/components/PollResults/PollResults.d.ts +1 -2
  446. package/lib/typescript/components/Poll/components/PollResults/PollResults.d.ts.map +1 -1
  447. package/lib/typescript/components/Reply/Reply.d.ts +4 -3
  448. package/lib/typescript/components/Reply/Reply.d.ts.map +1 -1
  449. package/lib/typescript/components/Thread/Thread.d.ts +2 -8
  450. package/lib/typescript/components/Thread/Thread.d.ts.map +1 -1
  451. package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts +1 -2
  452. package/lib/typescript/components/Thread/components/ThreadFooterComponent.d.ts.map +1 -1
  453. package/lib/typescript/components/ThreadList/ThreadList.d.ts +2 -3
  454. package/lib/typescript/components/ThreadList/ThreadList.d.ts.map +1 -1
  455. package/lib/typescript/components/ThreadList/ThreadListItem.d.ts.map +1 -1
  456. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts +0 -17
  457. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts.map +1 -1
  458. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +0 -23
  459. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts.map +1 -1
  460. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +0 -112
  461. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts.map +1 -1
  462. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +0 -5
  463. package/lib/typescript/contexts/chatContext/ChatContext.d.ts.map +1 -1
  464. package/lib/typescript/contexts/componentsContext/ComponentsContext.d.ts +321 -0
  465. package/lib/typescript/contexts/componentsContext/ComponentsContext.d.ts.map +1 -0
  466. package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts +296 -0
  467. package/lib/typescript/contexts/componentsContext/defaultComponents.d.ts.map +1 -0
  468. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts.map +1 -1
  469. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContextBase.d.ts +0 -5
  470. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContextBase.d.ts.map +1 -1
  471. package/lib/typescript/contexts/index.d.ts +1 -0
  472. package/lib/typescript/contexts/index.d.ts.map +1 -1
  473. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +1 -169
  474. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
  475. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  476. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  477. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +3 -332
  478. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
  479. package/lib/typescript/contexts/overlayContext/MessageOverlayHostLayer.d.ts +2 -5
  480. package/lib/typescript/contexts/overlayContext/MessageOverlayHostLayer.d.ts.map +1 -1
  481. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +0 -4
  482. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts.map +1 -1
  483. package/lib/typescript/contexts/overlayContext/OverlayProvider.d.ts.map +1 -1
  484. package/lib/typescript/contexts/threadsContext/ThreadsContext.d.ts +0 -9
  485. package/lib/typescript/contexts/threadsContext/ThreadsContext.d.ts.map +1 -1
  486. package/package.json +1 -1
  487. package/src/__tests__/offline-support/offline-feature.js +64 -67
  488. package/src/components/Attachment/Attachment.tsx +7 -69
  489. package/src/components/Attachment/FileAttachment.tsx +4 -7
  490. package/src/components/Attachment/FileAttachmentGroup.tsx +9 -19
  491. package/src/components/Attachment/FilePreview.tsx +4 -9
  492. package/src/components/Attachment/Gallery.tsx +6 -83
  493. package/src/components/Attachment/GalleryImage.tsx +5 -4
  494. package/src/components/Attachment/Giphy/GiphyImage.tsx +15 -37
  495. package/src/components/Attachment/UnsupportedAttachment.tsx +5 -10
  496. package/src/components/Attachment/UrlPreview/URLPreview.tsx +6 -4
  497. package/src/components/Attachment/UrlPreview/URLPreviewCompact.tsx +6 -4
  498. package/src/components/AttachmentPicker/AttachmentPicker.tsx +2 -2
  499. package/src/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.tsx +5 -4
  500. package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +4 -20
  501. package/src/components/Channel/Channel.tsx +31 -438
  502. package/src/components/Channel/__tests__/isAttachmentEqualHandler.test.js +12 -9
  503. package/src/components/Channel/hooks/useCreateChannelContext.ts +0 -8
  504. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +1 -81
  505. package/src/components/Channel/hooks/useCreateMessagesContext.ts +0 -130
  506. package/src/components/ChannelList/ChannelList.tsx +3 -76
  507. package/src/components/ChannelList/ChannelListLoadingIndicator.tsx +3 -1
  508. package/src/components/ChannelList/ChannelListView.tsx +12 -33
  509. package/src/components/ChannelList/__tests__/ChannelList.test.js +173 -116
  510. package/src/components/ChannelList/__tests__/ChannelListView.test.js +64 -41
  511. package/src/components/ChannelList/hooks/useCreateChannelsContext.ts +0 -39
  512. package/src/components/ChannelPreview/ChannelDetailsBottomSheet.tsx +2 -2
  513. package/src/components/ChannelPreview/ChannelPreview.tsx +6 -14
  514. package/src/components/ChannelPreview/ChannelPreviewMessage.tsx +7 -33
  515. package/src/components/ChannelPreview/ChannelPreviewView.tsx +11 -40
  516. package/src/components/ChannelPreview/ChannelSwipableWrapper.tsx +2 -4
  517. package/src/components/ChannelPreview/__tests__/ChannelDetailsBottomSheet.test.tsx +16 -12
  518. package/src/components/ChannelPreview/__tests__/ChannelPreview.test.tsx +25 -24
  519. package/src/components/ChannelPreview/__tests__/ChannelSwipableWrapper.test.tsx +11 -6
  520. package/src/components/Chat/Chat.tsx +5 -12
  521. package/src/components/Chat/hooks/useCreateChatContext.ts +0 -2
  522. package/src/components/ImageGallery/ImageGallery.tsx +14 -16
  523. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +0 -8
  524. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +25 -21
  525. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +3 -1
  526. package/src/components/ImageGallery/components/types.ts +0 -3
  527. package/src/components/Message/Message.tsx +11 -32
  528. package/src/components/Message/MessageItemView/MessageBubble.tsx +11 -7
  529. package/src/components/Message/MessageItemView/MessageContent.tsx +14 -47
  530. package/src/components/Message/MessageItemView/MessageDeleted.tsx +3 -9
  531. package/src/components/Message/MessageItemView/MessageFooter.tsx +2 -14
  532. package/src/components/Message/MessageItemView/MessageHeader.tsx +11 -29
  533. package/src/components/Message/MessageItemView/MessageItemView.tsx +10 -42
  534. package/src/components/Message/MessageItemView/MessageReplies.tsx +2 -8
  535. package/src/components/Message/MessageItemView/MessageTextContainer.tsx +4 -8
  536. package/src/components/Message/MessageItemView/MessageWrapper.tsx +4 -9
  537. package/src/components/Message/MessageItemView/ReactionList/ReactionListBottom.tsx +4 -12
  538. package/src/components/Message/MessageItemView/ReactionList/ReactionListTop.tsx +4 -20
  539. package/src/components/Message/MessageItemView/__tests__/MessageContent.test.js +47 -30
  540. package/src/components/Message/MessageItemView/__tests__/MessageItemView.test.js +16 -7
  541. package/src/components/Message/MessageItemView/__tests__/MessageTextContainer.test.tsx +8 -4
  542. package/src/components/MessageInput/MessageComposer.tsx +16 -76
  543. package/src/components/MessageInput/MessageInputHeaderView.tsx +3 -3
  544. package/src/components/MessageInput/components/AttachmentPreview/AttachmentUploadPreviewList.tsx +7 -35
  545. package/src/components/MessageInput/components/AttachmentPreview/FileAttachmentUploadPreview.tsx +2 -2
  546. package/src/components/MessageInput/components/AttachmentPreview/ImageAttachmentUploadPreview.tsx +2 -2
  547. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingInProgress.tsx +6 -4
  548. package/src/components/MessageInput/components/InputButtons/index.tsx +4 -5
  549. package/src/components/MessageInput/components/LinkPreviewList.tsx +3 -2
  550. package/src/components/MessageInput/components/OutputButtons/index.tsx +4 -23
  551. package/src/components/MessageList/MessageFlashList.tsx +13 -57
  552. package/src/components/MessageList/MessageList.tsx +15 -57
  553. package/src/components/MessageList/StickyHeader.tsx +4 -3
  554. package/src/components/MessageMenu/MessageActionList.tsx +4 -3
  555. package/src/components/MessageMenu/MessageMenu.tsx +35 -47
  556. package/src/components/MessageMenu/MessageUserReactions.tsx +7 -27
  557. package/src/components/MessageMenu/MessageUserReactionsItem.tsx +3 -6
  558. package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +12 -11
  559. package/src/components/Poll/CreatePollContent.tsx +3 -4
  560. package/src/components/Poll/Poll.tsx +22 -24
  561. package/src/components/Poll/components/PollAnswersList.tsx +9 -11
  562. package/src/components/Poll/components/PollOption.tsx +9 -11
  563. package/src/components/Poll/components/PollResults/PollOptionFullResults.tsx +10 -11
  564. package/src/components/Poll/components/PollResults/PollResults.tsx +9 -15
  565. package/src/components/Reply/Reply.tsx +18 -5
  566. package/src/components/Thread/Thread.tsx +3 -18
  567. package/src/components/Thread/components/ThreadFooterComponent.tsx +10 -11
  568. package/src/components/ThreadList/ThreadList.tsx +14 -22
  569. package/src/components/ThreadList/ThreadListItem.tsx +6 -11
  570. package/src/components/ui/Avatar/Avatar.tsx +2 -2
  571. package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +0 -15
  572. package/src/contexts/channelContext/ChannelContext.tsx +0 -24
  573. package/src/contexts/channelsContext/ChannelsContext.tsx +0 -113
  574. package/src/contexts/chatContext/ChatContext.tsx +0 -5
  575. package/src/contexts/componentsContext/ComponentsContext.tsx +62 -0
  576. package/src/contexts/componentsContext/PLAN.md +148 -0
  577. package/src/contexts/componentsContext/__tests__/defaultComponents.test.ts +44 -0
  578. package/src/contexts/componentsContext/defaultComponents.ts +332 -0
  579. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +0 -8
  580. package/src/contexts/imageGalleryContext/ImageGalleryContextBase.tsx +0 -10
  581. package/src/contexts/index.ts +1 -0
  582. package/src/contexts/messageInputContext/MessageInputContext.tsx +0 -185
  583. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +1 -75
  584. package/src/contexts/messagesContext/MessagesContext.tsx +3 -358
  585. package/src/contexts/overlayContext/MessageOverlayHostLayer.tsx +5 -7
  586. package/src/contexts/overlayContext/OverlayContext.tsx +0 -4
  587. package/src/contexts/overlayContext/OverlayProvider.tsx +1 -2
  588. package/src/contexts/overlayContext/__tests__/MessageOverlayHostLayer.test.tsx +21 -6
  589. package/src/contexts/threadsContext/ThreadsContext.tsx +0 -9
  590. package/src/version.json +1 -1
@@ -2,7 +2,6 @@ import React, { PropsWithChildren, useContext, useMemo, useState } from 'react';
2
2
 
3
3
  import BottomSheet from '@gorhom/bottom-sheet';
4
4
 
5
- import { AttachmentPickerContentProps } from '../../components';
6
5
  import {
7
6
  AttachmentPickerStore,
8
7
  SelectedPickerType,
@@ -21,10 +20,6 @@ export type AttachmentPickerContextValue = Pick<
21
20
  MessageInputContextValue,
22
21
  'attachmentSelectionBarHeight' | 'attachmentPickerBottomSheetHeight'
23
22
  > & {
24
- /**
25
- * Custom UI Component to render select more photos for selected gallery access in iOS.
26
- */
27
- AttachmentPickerIOSSelectMorePhotos: React.ComponentType;
28
23
  /**
29
24
  * `bottomInset` determine the height of the `AttachmentPicker` and the underlying shift to the `MessageList` when it is opened.
30
25
  * This can also be set via the `setBottomInset` function provided by the `useAttachmentPickerContext` hook.
@@ -39,16 +34,6 @@ export type AttachmentPickerContextValue = Pick<
39
34
  topInset: number;
40
35
 
41
36
  disableAttachmentPicker?: boolean;
42
- /**
43
- * Custom UI component to render overlay component, that shows up on top of [selected
44
- * image](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) (with tick mark)
45
- *
46
- * **Default**
47
- * [ImageOverlaySelectedComponent](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/ImageOverlaySelectedComponent.tsx)
48
- */
49
- ImageOverlaySelectedComponent: React.ComponentType<{ index: number }>;
50
- AttachmentPickerSelectionBar: React.ComponentType;
51
- AttachmentPickerContent: React.ComponentType<AttachmentPickerContentProps>;
52
37
  attachmentPickerStore: AttachmentPickerStore;
53
38
  numberOfAttachmentPickerImageColumns?: number;
54
39
  numberOfAttachmentImagesToLoadPerCall?: number;
@@ -3,9 +3,6 @@ import React, { PropsWithChildren, useContext } from 'react';
3
3
  import type { Channel, ChannelState } from 'stream-chat';
4
4
 
5
5
  import { MarkReadFunctionOptions } from '../../components/Channel/Channel';
6
- import type { EmptyStateProps } from '../../components/Indicators/EmptyStateIndicator';
7
- import type { LoadingProps } from '../../components/Indicators/LoadingIndicator';
8
- import { StickyHeaderProps } from '../../components/MessageList/StickyHeader';
9
6
  import {
10
7
  ChannelUnreadStateStore,
11
8
  ChannelUnreadStateStoreType,
@@ -38,12 +35,6 @@ export type ChannelContextValue = {
38
35
  * @overrideType Channel
39
36
  */
40
37
  channel: Channel;
41
- /**
42
- * Custom UI component to display empty state when channel has no messages.
43
- *
44
- * **Default** [EmptyStateIndicator](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Indicators/EmptyStateIndicator.tsx)
45
- */
46
- EmptyStateIndicator: React.ComponentType<EmptyStateProps>;
47
38
  /**
48
39
  * When set to true, reactions will be limited to 1 per user. If user selects another reaction
49
40
  * then his previous reaction will be removed and replaced with new one.
@@ -90,10 +81,6 @@ export type ChannelContextValue = {
90
81
  setTargetedMessage?: (messageId: string) => void;
91
82
  }) => Promise<void>;
92
83
 
93
- /**
94
- * Custom loading indicator to override the Stream default
95
- */
96
- LoadingIndicator: React.ComponentType<LoadingProps>;
97
84
  markRead: (options?: MarkReadFunctionOptions) => void;
98
85
  /**
99
86
  *
@@ -119,10 +106,6 @@ export type ChannelContextValue = {
119
106
  * ```
120
107
  */
121
108
  members: ChannelState['members'];
122
- /**
123
- * Custom network down indicator to override the Stream default
124
- */
125
- NetworkDownIndicator: React.ComponentType;
126
109
  read: ChannelState['read'];
127
110
  reloadChannel: () => Promise<void>;
128
111
  scrollToFirstUnreadThreshold: number;
@@ -156,13 +139,6 @@ export type ChannelContextValue = {
156
139
  * currently near them within the viewport.
157
140
  */
158
141
  maximumMessageLimit?: number;
159
- /**
160
- * Custom UI component for sticky header of channel.
161
- *
162
- * **Default** [DateHeader](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageList/DateHeader.tsx)
163
- */
164
- StickyHeader?: React.ComponentType<StickyHeaderProps>;
165
-
166
142
  /**
167
143
  * Id of message, around which Channel/MessageList gets loaded when opened.
168
144
  * You will see a highlighted background for targetted message, when opened.
@@ -5,23 +5,8 @@ import type { FlatList } from 'react-native-gesture-handler';
5
5
 
6
6
  import type { Channel } from 'stream-chat';
7
7
 
8
- import type { HeaderErrorProps } from '../../components/ChannelList/ChannelListHeaderErrorIndicator';
9
8
  import type { GetChannelActionItems } from '../../components/ChannelList/hooks/useChannelActionItems';
10
9
  import type { QueryChannels } from '../../components/ChannelList/hooks/usePaginatedChannels';
11
- import type { ChannelDetailsBottomSheetProps } from '../../components/ChannelPreview/ChannelDetailsBottomSheet';
12
- import { ChannelLastMessagePreviewProps } from '../../components/ChannelPreview/ChannelLastMessagePreview';
13
- import { ChannelMessagePreviewDeliveryStatusProps } from '../../components/ChannelPreview/ChannelMessagePreviewDeliveryStatus';
14
- import { ChannelPreviewMessageProps } from '../../components/ChannelPreview/ChannelPreviewMessage';
15
- import type { ChannelPreviewStatusProps } from '../../components/ChannelPreview/ChannelPreviewStatus';
16
- import type { ChannelPreviewTitleProps } from '../../components/ChannelPreview/ChannelPreviewTitle';
17
- import { ChannelPreviewTypingIndicatorProps } from '../../components/ChannelPreview/ChannelPreviewTypingIndicator';
18
- import type { ChannelPreviewUnreadCountProps } from '../../components/ChannelPreview/ChannelPreviewUnreadCount';
19
- import type { ChannelPreviewViewProps } from '../../components/ChannelPreview/ChannelPreviewView';
20
- import type { EmptyStateProps } from '../../components/Indicators/EmptyStateIndicator';
21
- import type { LoadingErrorProps } from '../../components/Indicators/LoadingErrorIndicator';
22
- import type { LoadingProps } from '../../components/Indicators/LoadingIndicator';
23
-
24
- import { ChannelAvatarProps } from '../../components/ui/Avatar/ChannelAvatar';
25
10
  import { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';
26
11
 
27
12
  import { isTestEnvironment } from '../utils/isTestEnvironment';
@@ -53,18 +38,6 @@ export type ChannelsContextValue = {
53
38
  * Channels can be either an array of channels or a promise which resolves to an array of channels
54
39
  */
55
40
  channels: Channel[] | null;
56
- /**
57
- * Custom indicator to use when channel list is empty
58
- *
59
- * Default: [EmptyStateIndicator](https://getstream.io/chat/docs/sdk/reactnative/core-components/channel/#emptystateindicator)
60
- * */
61
- EmptyStateIndicator: React.ComponentType<EmptyStateProps>;
62
- /**
63
- * Custom loading indicator to display at bottom of the list, while loading further pages
64
- *
65
- * Default: [ChannelListFooterLoadingIndicator](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#footerloadingindicator)
66
- */
67
- FooterLoadingIndicator: React.ComponentType;
68
41
  /**
69
42
  * Incremental number change to force update the FlatList
70
43
  */
@@ -73,33 +46,10 @@ export type ChannelsContextValue = {
73
46
  * Whether or not the FlatList has another page to render
74
47
  */
75
48
  hasNextPage: boolean;
76
- /**
77
- * Custom indicator to display error at top of list, if loading/pagination error occurs
78
- *
79
- * Default: [ChannelListHeaderErrorIndicator](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#headererrorindicator)
80
- */
81
- HeaderErrorIndicator: React.ComponentType<HeaderErrorProps>;
82
- /**
83
- * Custom indicator to display network-down error at top of list, if there is connectivity issue
84
- *
85
- * Default: [ChannelListHeaderNetworkDownIndicator](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#headernetworkdownindicator)
86
- */
87
- HeaderNetworkDownIndicator: React.ComponentType;
88
49
  /**
89
50
  * Initial channels query loading state, triggers the LoadingIndicator
90
51
  */
91
52
  loadingChannels: boolean;
92
- /**
93
- * Custom indicator to use when there is error in fetching channels
94
- *
95
- * Default: [LoadingErrorIndicator](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#loadingerrorindicator)
96
- * */
97
- LoadingErrorIndicator: React.ComponentType<LoadingErrorProps>;
98
- /**
99
- * Custom loading indicator to use on Channel List
100
- *
101
- * */
102
- LoadingIndicator: React.ComponentType<Pick<LoadingProps, 'listType'>>;
103
53
  /**
104
54
  * Whether or not additional channels are being loaded, triggers the FooterLoadingIndicator
105
55
  */
@@ -121,12 +71,6 @@ export type ChannelsContextValue = {
121
71
  * Number of skeletons that should show when loading. Default: 6
122
72
  */
123
73
  numberOfSkeletons: number;
124
- /**
125
- * Custom UI component to display individual channel list items
126
- *
127
- * Default: [ChannelPreviewView](https://getstream.io/chat/docs/sdk/reactnative/ui-components/channel-preview-view/)
128
- */
129
- Preview: React.ComponentType<ChannelPreviewViewProps>;
130
74
  /**
131
75
  * Triggered when the channel list is refreshing, displays a loading spinner at the top of the list
132
76
  */
@@ -159,73 +103,16 @@ export type ChannelsContextValue = {
159
103
  * ```
160
104
  */
161
105
  setFlatListRef: (ref: FlatList<Channel> | null) => void;
162
- /**
163
- * Custom UI component to display loading channel skeletons
164
- *
165
- * Default: [Skeleton](https://getstream.io/chat/docs/sdk/reactnative/contexts/channels-context/#skeleton)
166
- */
167
- Skeleton: React.ComponentType;
168
106
  /**
169
107
  * Error in channels query, if any
170
108
  */
171
109
  error?: Error;
172
- ListHeaderComponent?: React.ComponentType;
173
110
  /**
174
111
  * Function to set the currently active channel, acts as a bridge between ChannelList and Channel components
175
112
  *
176
113
  * @param channel A channel object
177
114
  */
178
115
  onSelect?: (channel: Channel) => void;
179
- /**
180
- * Custom UI component to render preview avatar.
181
- *
182
- * **Default** [ChannelAvatar](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelAvatar.tsx)
183
- */
184
- PreviewAvatar?: React.ComponentType<ChannelAvatarProps>;
185
- /**
186
- * Custom UI component to render preview of latest message on channel.
187
- *
188
- * **Default** [ChannelPreviewMessage](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewMessage.tsx)
189
- */
190
- PreviewMessage?: React.ComponentType<ChannelPreviewMessageProps>;
191
- /**
192
- * Custom UI component to render delivery status of latest message on channel.
193
- *
194
- * **Default** [ChannelMessagePreviewDeliveryStatus](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.tsx)
195
- */
196
- PreviewMessageDeliveryStatus?: React.ComponentType<ChannelMessagePreviewDeliveryStatusProps>;
197
- /**
198
- * Custom UI component to render muted status.
199
- *
200
- * **Default** [ChannelMutedStatus](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewMutedStatus.tsx)
201
- */
202
- PreviewMutedStatus?: React.ComponentType;
203
- /**
204
- * Custom UI component to render preview avatar.
205
- *
206
- * **Default** [ChannelPreviewStatus](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewStatus.tsx)
207
- */
208
- PreviewStatus?: React.ComponentType<ChannelPreviewStatusProps>;
209
- /**
210
- * Custom UI component to render preview avatar.
211
- *
212
- * **Default** [ChannelPreviewTitle](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewTitle.tsx)
213
- */
214
- PreviewTitle?: React.ComponentType<ChannelPreviewTitleProps>;
215
- /**
216
- * Custom UI component to render preview avatar.
217
- *
218
- * **Default** [ChannelPreviewUnreadCount](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelPreviewUnreadCount.tsx)
219
- */
220
- PreviewUnreadCount?: React.ComponentType<ChannelPreviewUnreadCountProps>;
221
- PreviewTypingIndicator?: React.ComponentType<ChannelPreviewTypingIndicatorProps>;
222
- ChannelDetailsBottomSheet?: React.ComponentType<ChannelDetailsBottomSheetProps>;
223
- /**
224
- * Custom UI component to render preview of last message on channel.
225
- *
226
- * **Default** [ChannelLastMessagePreview](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/ChannelPreview/ChannelLastMessagePreview.tsx)
227
- */
228
- PreviewLastMessage?: React.ComponentType<ChannelLastMessagePreviewProps>;
229
116
  getChannelActionItems?: GetChannelActionItems;
230
117
  swipeActionsEnabled?: boolean;
231
118
 
@@ -1,5 +1,4 @@
1
1
  import React, { PropsWithChildren, useContext } from 'react';
2
- import type { ImageProps } from 'react-native';
3
2
 
4
3
  import type { AppSettingsAPIResponse, Channel, Mute, StreamChat } from 'stream-chat';
5
4
 
@@ -32,10 +31,6 @@ export type ChatContextValue = {
32
31
  client: StreamChat;
33
32
  connectionRecovering: boolean;
34
33
  enableOfflineSupport: boolean;
35
- /**
36
- * Drop in replacement of all the underlying Image components within SDK. This is useful for the purpose of offline caching of images. Please check the Offline Support Guide for usage.
37
- */
38
- ImageComponent: React.ComponentType<ImageProps>;
39
34
  isOnline: boolean | null;
40
35
  mutedUsers: Mute[];
41
36
  /**
@@ -0,0 +1,62 @@
1
+ import React, { PropsWithChildren, useContext, useMemo } from 'react';
2
+
3
+ /**
4
+ * All overridable UI components in the SDK.
5
+ * Derived from the DEFAULT_COMPONENTS map in defaultComponents.ts.
6
+ * Adding a new default automatically makes it available as an override.
7
+ *
8
+ * Every key is optional — only specify the components you want to override.
9
+ */
10
+ export type ComponentOverrides = Partial<
11
+ (typeof import('./defaultComponents'))['DEFAULT_COMPONENTS']
12
+ >;
13
+
14
+ const ComponentsContext = React.createContext<ComponentOverrides>({});
15
+
16
+ /**
17
+ * Provider to override UI components at any level of the tree.
18
+ * Supports nesting — inner overrides merge over outer ones (closest wins).
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * <WithComponents overrides={{ Message: MyCustomMessage, SendButton: MyCustomSendButton }}>
23
+ * <Channel channel={channel}>
24
+ * <MessageList />
25
+ * <MessageInput />
26
+ * </Channel>
27
+ * </WithComponents>
28
+ * ```
29
+ */
30
+ export const WithComponents = ({
31
+ children,
32
+ overrides,
33
+ }: PropsWithChildren<{ overrides: ComponentOverrides }>) => {
34
+ const parent = useContext(ComponentsContext);
35
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- intentionally stable: overrides are set once at mount
36
+ const merged = useMemo(() => ({ ...parent, ...overrides }), []);
37
+ return <ComponentsContext.Provider value={merged}>{children}</ComponentsContext.Provider>;
38
+ };
39
+
40
+ // Lazy-loaded to break circular dependency:
41
+ // defaultComponents.ts → imports components → components import useComponentsContext from this file
42
+ let cachedDefaults: ComponentOverrides | undefined;
43
+ const getDefaults = (): ComponentOverrides => {
44
+ if (!cachedDefaults) {
45
+ cachedDefaults = (require('./defaultComponents') as { DEFAULT_COMPONENTS: ComponentOverrides })
46
+ .DEFAULT_COMPONENTS;
47
+ }
48
+ return cachedDefaults;
49
+ };
50
+
51
+ /**
52
+ * Hook to access resolved component overrides.
53
+ * Returns all components with defaults filled in — user overrides merged over defaults.
54
+ */
55
+ export const useComponentsContext = () => {
56
+ const overrides = useContext(ComponentsContext);
57
+ return useMemo(
58
+ () => ({ ...getDefaults(), ...overrides }) as Required<ComponentOverrides>,
59
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- intentionally stable: overrides are set once at mount
60
+ [],
61
+ );
62
+ };
@@ -0,0 +1,148 @@
1
+ # WithComponents — Component Override System
2
+
3
+ ## Design Principle
4
+
5
+ **All components are read from `useComponentsContext()`. All other contexts only provide data + APIs — never components.**
6
+
7
+ ## Current State (Completed)
8
+
9
+ ### What was done
10
+
11
+ 1. **Created `ComponentsContext`** — `WithComponents` provider, `useComponentsContext()` hook, `ComponentOverrides` type
12
+ 2. **Created `defaultComponents.ts`** — centralized map of all ~130 default components
13
+ 3. **Stripped component keys** from all existing context types: `MessagesContextValue`, `InputMessageInputContextValue`, `ChannelContextValue`, `ChannelsContextValue`, `AttachmentPickerContextValue`, `ThreadsContextValue`, `ImageGalleryContextValue`
14
+ 4. **Simplified `useCreate*Context` hooks** — no longer receive or forward component params
15
+ 5. **Simplified `Channel.tsx`** — removed ~90 component imports, prop defaults, forwarding lines
16
+ 6. **Simplified `ChannelList.tsx`** — removed ~19 component props
17
+ 7. **Updated ~80 consumer files** — switched from old context hooks to `useComponentsContext()`
18
+ 8. **Removed component override props** from ALL individual components
19
+ 9. **Updated all 3 example apps** (SampleApp, ExpoMessaging, TypeScriptMessaging)
20
+ 10. **Updated ~45 documentation pages** across docs-content repo
21
+ 11. **Merged with develop** and resolved conflicts
22
+
23
+ ### Architecture
24
+
25
+ ```
26
+ User: <WithComponents overrides={{ Message: Custom }}>
27
+
28
+ ComponentsContext (merges parent + overrides, inner wins)
29
+
30
+ useComponentsContext() → { ...DEFAULT_COMPONENTS, ...overrides }
31
+
32
+ Consumer: const { Message } = useComponentsContext()
33
+ ```
34
+
35
+ ### Key Files
36
+
37
+ | File | Purpose |
38
+ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
39
+ | `ComponentsContext.tsx` | ~60 lines. `ComponentOverrides` type (derived from `typeof DEFAULT_COMPONENTS`), `WithComponents` provider, `useComponentsContext()` hook |
40
+ | `defaultComponents.ts` | ~300 lines. Single source of truth for all default component mappings. Adding a new component here auto-extends `ComponentOverrides` |
41
+
42
+ ### Type System
43
+
44
+ `ComponentOverrides` is derived automatically:
45
+
46
+ ```ts
47
+ export type ComponentOverrides = Partial<(typeof import('./defaultComponents'))['DEFAULT_COMPONENTS']>;
48
+ ```
49
+
50
+ No manual type maintenance — add a component to `DEFAULT_COMPONENTS` and the type updates.
51
+
52
+ ### Circular Dependency Handling
53
+
54
+ `defaultComponents.ts` → imports components → components import `useComponentsContext` from `ComponentsContext.tsx`.
55
+
56
+ Broken by lazy-loading defaults in the hook:
57
+
58
+ ```ts
59
+ let cachedDefaults: ComponentOverrides | undefined;
60
+ const getDefaults = () => {
61
+ if (!cachedDefaults) {
62
+ cachedDefaults = require('./defaultComponents').DEFAULT_COMPONENTS;
63
+ }
64
+ return cachedDefaults;
65
+ };
66
+ ```
67
+
68
+ ### Naming Conventions
69
+
70
+ Some component keys differ from their default component names to avoid collisions:
71
+
72
+ | Override Key | Default Component | Why renamed |
73
+ | ----------------------------- | --------------------------------------- | ---------------------------------------------------------- |
74
+ | `FileAttachmentIcon` | `FileIcon` | Clarity |
75
+ | `ChannelListLoadingIndicator` | `ChannelListLoadingIndicator` | Split from shared `LoadingIndicator` — renders skeleton UI |
76
+ | `MessageListLoadingIndicator` | `LoadingIndicator` | Split from shared `LoadingIndicator` — renders text |
77
+ | `ChatLoadingIndicator` | `undefined` | Optional, no default |
78
+ | `ThreadMessageComposer` | `MessageComposer` | Avoid collision with `MessageComposer` component name |
79
+ | `ThreadListComponent` | `DefaultThreadListComponent` | Avoid collision with exported `ThreadList` |
80
+ | `StartAudioRecordingButton` | `AudioRecordingButton` | Historical naming |
81
+ | `Preview` | `ChannelPreviewView` | ChannelList preview item |
82
+ | `PreviewAvatar` | `ChannelAvatar` | ChannelList preview avatar |
83
+ | `FooterLoadingIndicator` | `ChannelListFooterLoadingIndicator` | ChannelList footer |
84
+ | `HeaderErrorIndicator` | `ChannelListHeaderErrorIndicator` | ChannelList header |
85
+ | `HeaderNetworkDownIndicator` | `ChannelListHeaderNetworkDownIndicator` | ChannelList header |
86
+
87
+ ### Optional Components (no default)
88
+
89
+ These exist in `DEFAULT_COMPONENTS` as `undefined` with `React.ComponentType<any> | undefined` type assertions:
90
+
91
+ `AttachmentPickerIOSSelectMorePhotos`, `ChatLoadingIndicator`, `CreatePollContent`, `ImageComponent`, `Input`, `ListHeaderComponent`, `MessageContentBottomView`, `MessageContentLeadingView`, `MessageContentTopView`, `MessageContentTrailingView`, `MessageLocation`, `MessageSpacer`, `MessageText`, `PollContent`
92
+
93
+ ### Shared Component Keys (audited)
94
+
95
+ Some keys were used in multiple contexts before the refactor. Audit results:
96
+
97
+ | Key | Used By | Same Default? | Resolution |
98
+ | ----------------------- | --------------------- | ----------------------------------------------------------- | --------------------------------------------------------------------------- |
99
+ | `EmptyStateIndicator` | Channel + ChannelList | Yes (differentiates via `listType` prop) | Single key ✅ |
100
+ | `LoadingErrorIndicator` | Channel + ChannelList | Yes (differentiates via `listType` prop) | Single key ✅ |
101
+ | `LoadingIndicator` | Channel + ChannelList | **No** — Channel used text-based, ChannelList used skeleton | Split into `MessageListLoadingIndicator` + `ChannelListLoadingIndicator` ✅ |
102
+
103
+ ### API Alignment with stream-chat-react
104
+
105
+ | Aspect | React Native | React Web |
106
+ | --------- | ----------------------------------- | -------------------------------------- |
107
+ | Provider | `WithComponents` | `WithComponents` |
108
+ | Prop name | `overrides` | `overrides` |
109
+ | Hook | `useComponentsContext()` | `useComponentContext()` |
110
+ | Type | `ComponentOverrides` (auto-derived) | `ComponentContextValue` (hand-written) |
111
+ | Defaults | Lazy-loaded via `require()` | Set at `Channel` level |
112
+ | Merge | `useMemo` | Plain spread (no memo) |
113
+
114
+ ## Known Issues / Future Work
115
+
116
+ ### Pre-existing Test Failures (not caused by this work)
117
+
118
+ These test suites fail on `develop` too:
119
+
120
+ - `offline-support/index.test.ts` — timeout
121
+ - `ChannelList.test.js` — filter race condition (`channel.countUnread` mock missing)
122
+ - `isAttachmentEqualHandler.test.js`, `MessageContent.test.js`, `MessageTextContainer.test.tsx`, `MessageUserReactions.test.tsx`, `ChannelPreview.test.tsx` — various pre-existing issues
123
+
124
+ ### Linter Interaction
125
+
126
+ `@typescript-eslint/no-unused-vars` (warn, max-warnings 0) aggressively strips unused type keys. When adding new keys to `ComponentOverrides`, the type and its consumer must land in the same edit — otherwise the linter removes the key between saves.
127
+
128
+ Since `ComponentOverrides` is now auto-derived from `DEFAULT_COMPONENTS`, this is no longer an issue for the type itself. But be aware when adding optional components (`undefined as React.ComponentType<any> | undefined`).
129
+
130
+ ### `contexts/index.ts` Barrel Export
131
+
132
+ The `export * from './componentsContext/ComponentsContext'` line in `contexts/index.ts` was stripped by the linter multiple times during development. If `WithComponents` becomes unexportable from the package, check this barrel file first.
133
+
134
+ ### Documentation
135
+
136
+ Docs PR: https://github.com/GetStream/docs-content/pull/1169
137
+
138
+ Updated ~45 pages across:
139
+
140
+ - Core teaching pages (custom_components, message-customization, etc.)
141
+ - Component reference pages (channel-list, message-list, message-composer, etc.)
142
+ - Context docs (stripped component keys from 7 context pages)
143
+ - Migration guide (upgrading-from-v8.md — comprehensive WithComponents section)
144
+ - Advanced guides (audio, AI, image-picker, etc.)
145
+
146
+ ### SDK PR
147
+
148
+ https://github.com/GetStream/stream-chat-react-native/pull/3542
@@ -0,0 +1,44 @@
1
+ import { DEFAULT_COMPONENTS } from '../defaultComponents';
2
+
3
+ // Optional component keys that are intentionally undefined (no default implementation)
4
+ const OPTIONAL_KEYS = new Set([
5
+ 'AttachmentPickerIOSSelectMorePhotos',
6
+ 'ChatLoadingIndicator',
7
+ 'CreatePollContent',
8
+ 'Input',
9
+ 'ListHeaderComponent',
10
+ 'MessageContentBottomView',
11
+ 'MessageContentLeadingView',
12
+ 'MessageContentTopView',
13
+ 'MessageContentTrailingView',
14
+ 'MessageLocation',
15
+ 'MessageSpacer',
16
+ 'MessageText',
17
+ 'PollContent',
18
+ ]);
19
+
20
+ describe('DEFAULT_COMPONENTS', () => {
21
+ it('should have all required values defined', () => {
22
+ const entries = Object.entries(DEFAULT_COMPONENTS);
23
+ expect(entries.length).toBeGreaterThan(50);
24
+
25
+ const unexpectedUndefined = entries.filter(
26
+ ([key, value]) => value === undefined && !OPTIONAL_KEYS.has(key),
27
+ );
28
+ if (unexpectedUndefined.length > 0) {
29
+ console.log(
30
+ 'Unexpectedly undefined keys:',
31
+ unexpectedUndefined.map(([k]) => k),
32
+ );
33
+ }
34
+ expect(unexpectedUndefined).toEqual([]);
35
+ });
36
+
37
+ it('optional keys should be explicitly listed', () => {
38
+ const entries = Object.entries(DEFAULT_COMPONENTS);
39
+ const actualUndefined = new Set(
40
+ entries.filter(([, v]) => v === undefined || v === null).map(([k]) => k),
41
+ );
42
+ expect(actualUndefined).toEqual(OPTIONAL_KEYS);
43
+ });
44
+ });