@kesha-antonov/react-native-chat 4.2.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.md +252 -47
  2. package/lib/Actions.d.ts +5 -5
  3. package/lib/Actions.d.ts.map +1 -1
  4. package/lib/Actions.js +28 -39
  5. package/lib/Actions.js.map +1 -1
  6. package/lib/Avatar.d.ts.map +1 -1
  7. package/lib/Avatar.js +22 -27
  8. package/lib/Avatar.js.map +1 -1
  9. package/lib/Bubble/index.d.ts.map +1 -1
  10. package/lib/Bubble/index.js +86 -25
  11. package/lib/Bubble/index.js.map +1 -1
  12. package/lib/Bubble/styles.d.ts +28 -11
  13. package/lib/Bubble/styles.d.ts.map +1 -1
  14. package/lib/Bubble/styles.js +108 -80
  15. package/lib/Bubble/styles.js.map +1 -1
  16. package/lib/Bubble/types.d.ts +12 -7
  17. package/lib/Bubble/types.d.ts.map +1 -1
  18. package/lib/Chat/ChatKeyboardAvoidingView.d.ts +8 -3
  19. package/lib/Chat/ChatKeyboardAvoidingView.d.ts.map +1 -1
  20. package/lib/Chat/ChatKeyboardAvoidingView.js +3 -5
  21. package/lib/Chat/ChatKeyboardAvoidingView.js.map +1 -1
  22. package/lib/Chat/index.d.ts.map +1 -1
  23. package/lib/Chat/index.js +65 -25
  24. package/lib/Chat/index.js.map +1 -1
  25. package/lib/Chat/types.d.ts +35 -25
  26. package/lib/Chat/types.d.ts.map +1 -1
  27. package/lib/ChatAvatar.d.ts.map +1 -1
  28. package/lib/ChatAvatar.js +11 -17
  29. package/lib/ChatAvatar.js.map +1 -1
  30. package/lib/ChatContext.d.ts +29 -1
  31. package/lib/ChatContext.d.ts.map +1 -1
  32. package/lib/ChatContext.js +3 -0
  33. package/lib/ChatContext.js.map +1 -1
  34. package/lib/Color.d.ts.map +1 -1
  35. package/lib/Color.js +6 -2
  36. package/lib/Color.js.map +1 -1
  37. package/lib/Composer.d.ts +14 -1
  38. package/lib/Composer.d.ts.map +1 -1
  39. package/lib/Composer.js +63 -50
  40. package/lib/Composer.js.map +1 -1
  41. package/lib/Day/index.d.ts.map +1 -1
  42. package/lib/Day/index.js +7 -3
  43. package/lib/Day/index.js.map +1 -1
  44. package/lib/Day/styles.d.ts +6 -7
  45. package/lib/Day/styles.d.ts.map +1 -1
  46. package/lib/Day/styles.js +11 -13
  47. package/lib/Day/styles.js.map +1 -1
  48. package/lib/Icons.d.ts +24 -0
  49. package/lib/Icons.d.ts.map +1 -0
  50. package/lib/Icons.js +2 -0
  51. package/lib/Icons.js.map +1 -0
  52. package/lib/InputToolbar.d.ts +18 -5
  53. package/lib/InputToolbar.d.ts.map +1 -1
  54. package/lib/InputToolbar.js +223 -19
  55. package/lib/InputToolbar.js.map +1 -1
  56. package/lib/LoadEarlierMessages.d.ts.map +1 -1
  57. package/lib/LoadEarlierMessages.js +12 -7
  58. package/lib/LoadEarlierMessages.js.map +1 -1
  59. package/lib/Message/index.d.ts.map +1 -1
  60. package/lib/Message/index.js +10 -9
  61. package/lib/Message/index.js.map +1 -1
  62. package/lib/Message/styles.js +2 -2
  63. package/lib/Message/styles.js.map +1 -1
  64. package/lib/MessageAudio.d.ts +2 -1
  65. package/lib/MessageAudio.d.ts.map +1 -1
  66. package/lib/MessageAudio.js +121 -19
  67. package/lib/MessageAudio.js.map +1 -1
  68. package/lib/MessageLocation.d.ts +9 -0
  69. package/lib/MessageLocation.d.ts.map +1 -0
  70. package/lib/MessageLocation.js +85 -0
  71. package/lib/MessageLocation.js.map +1 -0
  72. package/lib/MessageText.d.ts +12 -1
  73. package/lib/MessageText.d.ts.map +1 -1
  74. package/lib/MessageText.js +38 -11
  75. package/lib/MessageText.js.map +1 -1
  76. package/lib/MessageVideo.d.ts +2 -1
  77. package/lib/MessageVideo.d.ts.map +1 -1
  78. package/lib/MessageVideo.js +156 -18
  79. package/lib/MessageVideo.js.map +1 -1
  80. package/lib/MessagesContainer/components/Item/index.d.ts +2 -1
  81. package/lib/MessagesContainer/components/Item/index.d.ts.map +1 -1
  82. package/lib/MessagesContainer/components/Item/index.js +23 -1
  83. package/lib/MessagesContainer/components/Item/index.js.map +1 -1
  84. package/lib/MessagesContainer/index.d.ts.map +1 -1
  85. package/lib/MessagesContainer/index.js +24 -11
  86. package/lib/MessagesContainer/index.js.map +1 -1
  87. package/lib/MessagesContainer/styles.d.ts +23 -3
  88. package/lib/MessagesContainer/styles.d.ts.map +1 -1
  89. package/lib/MessagesContainer/styles.js +25 -5
  90. package/lib/MessagesContainer/styles.js.map +1 -1
  91. package/lib/Models.d.ts +72 -0
  92. package/lib/Models.d.ts.map +1 -1
  93. package/lib/QuickReplies.d.ts +1 -1
  94. package/lib/QuickReplies.d.ts.map +1 -1
  95. package/lib/QuickReplies.js +13 -7
  96. package/lib/QuickReplies.js.map +1 -1
  97. package/lib/Reactions/MessageReactions.d.ts.map +1 -1
  98. package/lib/Reactions/MessageReactions.js +11 -10
  99. package/lib/Reactions/MessageReactions.js.map +1 -1
  100. package/lib/Reactions/ReactionPicker.d.ts.map +1 -1
  101. package/lib/Reactions/ReactionPicker.js +5 -3
  102. package/lib/Reactions/ReactionPicker.js.map +1 -1
  103. package/lib/Send.d.ts +2 -2
  104. package/lib/Send.d.ts.map +1 -1
  105. package/lib/Send.js +37 -37
  106. package/lib/Send.js.map +1 -1
  107. package/lib/SystemMessage.d.ts.map +1 -1
  108. package/lib/SystemMessage.js +8 -5
  109. package/lib/SystemMessage.js.map +1 -1
  110. package/lib/Theme.d.ts +148 -0
  111. package/lib/Theme.d.ts.map +1 -0
  112. package/lib/Theme.js +142 -0
  113. package/lib/Theme.js.map +1 -0
  114. package/lib/Time.d.ts.map +1 -1
  115. package/lib/Time.js +7 -5
  116. package/lib/Time.js.map +1 -1
  117. package/lib/TypingIndicator/index.d.ts.map +1 -1
  118. package/lib/TypingIndicator/index.js +4 -1
  119. package/lib/TypingIndicator/index.js.map +1 -1
  120. package/lib/TypingIndicator/styles.d.ts +2 -2
  121. package/lib/TypingIndicator/styles.d.ts.map +1 -1
  122. package/lib/TypingIndicator/styles.js +4 -5
  123. package/lib/TypingIndicator/styles.js.map +1 -1
  124. package/lib/components/AttachmentSheet.d.ts +28 -0
  125. package/lib/components/AttachmentSheet.d.ts.map +1 -0
  126. package/lib/components/AttachmentSheet.js +177 -0
  127. package/lib/components/AttachmentSheet.js.map +1 -0
  128. package/lib/components/BasicMarkdown.d.ts +12 -0
  129. package/lib/components/BasicMarkdown.d.ts.map +1 -0
  130. package/lib/components/BasicMarkdown.js +220 -0
  131. package/lib/components/BasicMarkdown.js.map +1 -0
  132. package/lib/components/ContextMenu.d.ts +25 -0
  133. package/lib/components/ContextMenu.d.ts.map +1 -0
  134. package/lib/components/ContextMenu.js +122 -0
  135. package/lib/components/ContextMenu.js.map +1 -0
  136. package/lib/components/Icon.d.ts +17 -0
  137. package/lib/components/Icon.d.ts.map +1 -0
  138. package/lib/components/Icon.js +19 -0
  139. package/lib/components/Icon.js.map +1 -0
  140. package/lib/components/LucideIcon.d.ts +10 -0
  141. package/lib/components/LucideIcon.d.ts.map +1 -0
  142. package/lib/components/LucideIcon.js +118 -0
  143. package/lib/components/LucideIcon.js.map +1 -0
  144. package/lib/components/MarkdownMessageText.d.ts +19 -0
  145. package/lib/components/MarkdownMessageText.d.ts.map +1 -0
  146. package/lib/components/MarkdownMessageText.js +35 -0
  147. package/lib/components/MarkdownMessageText.js.map +1 -0
  148. package/lib/components/MediaCard.d.ts +19 -0
  149. package/lib/components/MediaCard.d.ts.map +1 -0
  150. package/lib/components/MediaCard.js +102 -0
  151. package/lib/components/MediaCard.js.map +1 -0
  152. package/lib/components/MediaControls.d.ts +41 -0
  153. package/lib/components/MediaControls.d.ts.map +1 -0
  154. package/lib/components/MediaControls.js +523 -0
  155. package/lib/components/MediaControls.js.map +1 -0
  156. package/lib/components/MessageReply.d.ts.map +1 -1
  157. package/lib/components/MessageReply.js +11 -9
  158. package/lib/components/MessageReply.js.map +1 -1
  159. package/lib/components/ReplyPreview.d.ts +3 -1
  160. package/lib/components/ReplyPreview.d.ts.map +1 -1
  161. package/lib/components/ReplyPreview.js +36 -36
  162. package/lib/components/ReplyPreview.js.map +1 -1
  163. package/lib/components/SendIcon.d.ts +13 -0
  164. package/lib/components/SendIcon.d.ts.map +1 -0
  165. package/lib/components/SendIcon.js +37 -0
  166. package/lib/components/SendIcon.js.map +1 -0
  167. package/lib/components/Ticks.d.ts +25 -0
  168. package/lib/components/Ticks.d.ts.map +1 -0
  169. package/lib/components/Ticks.js +102 -0
  170. package/lib/components/Ticks.js.map +1 -0
  171. package/lib/components/VideoNoteOverlay.d.ts +25 -0
  172. package/lib/components/VideoNoteOverlay.d.ts.map +1 -0
  173. package/lib/components/VideoNoteOverlay.js +151 -0
  174. package/lib/components/VideoNoteOverlay.js.map +1 -0
  175. package/lib/components/VideoNoteRecorder.d.ts +19 -0
  176. package/lib/components/VideoNoteRecorder.d.ts.map +1 -0
  177. package/lib/components/VideoNoteRecorder.js +634 -0
  178. package/lib/components/VideoNoteRecorder.js.map +1 -0
  179. package/lib/components/VideoRecordButton.d.ts +29 -0
  180. package/lib/components/VideoRecordButton.d.ts.map +1 -0
  181. package/lib/components/VideoRecordButton.js +117 -0
  182. package/lib/components/VideoRecordButton.js.map +1 -0
  183. package/lib/components/VoiceMessageInput.d.ts +33 -0
  184. package/lib/components/VoiceMessageInput.d.ts.map +1 -0
  185. package/lib/components/VoiceMessageInput.js +396 -0
  186. package/lib/components/VoiceMessageInput.js.map +1 -0
  187. package/lib/components/WaveformPlayer.d.ts +19 -0
  188. package/lib/components/WaveformPlayer.d.ts.map +1 -0
  189. package/lib/components/WaveformPlayer.js +367 -0
  190. package/lib/components/WaveformPlayer.js.map +1 -0
  191. package/lib/components/mediaPalette.d.ts +23 -0
  192. package/lib/components/mediaPalette.d.ts.map +1 -0
  193. package/lib/components/mediaPalette.js +16 -0
  194. package/lib/components/mediaPalette.js.map +1 -0
  195. package/lib/components/mediaPlayback.d.ts +22 -0
  196. package/lib/components/mediaPlayback.d.ts.map +1 -0
  197. package/lib/components/mediaPlayback.js +34 -0
  198. package/lib/components/mediaPlayback.js.map +1 -0
  199. package/lib/hooks/useColorScheme.d.ts +9 -2
  200. package/lib/hooks/useColorScheme.d.ts.map +1 -1
  201. package/lib/hooks/useColorScheme.js +9 -3
  202. package/lib/hooks/useColorScheme.js.map +1 -1
  203. package/lib/hooks/useIcons.d.ts +4 -0
  204. package/lib/hooks/useIcons.d.ts.map +1 -0
  205. package/lib/hooks/useIcons.js +8 -0
  206. package/lib/hooks/useIcons.js.map +1 -0
  207. package/lib/hooks/useKeyboardVerticalOffset.d.ts +17 -8
  208. package/lib/hooks/useKeyboardVerticalOffset.d.ts.map +1 -1
  209. package/lib/hooks/useKeyboardVerticalOffset.js +29 -8
  210. package/lib/hooks/useKeyboardVerticalOffset.js.map +1 -1
  211. package/lib/hooks/useLabels.d.ts +4 -0
  212. package/lib/hooks/useLabels.d.ts.map +1 -0
  213. package/lib/hooks/useLabels.js +8 -0
  214. package/lib/hooks/useLabels.js.map +1 -0
  215. package/lib/hooks/useTheme.d.ts +21 -0
  216. package/lib/hooks/useTheme.d.ts.map +1 -0
  217. package/lib/hooks/useTheme.js +32 -0
  218. package/lib/hooks/useTheme.js.map +1 -0
  219. package/lib/i18n.d.ts +59 -0
  220. package/lib/i18n.d.ts.map +1 -0
  221. package/lib/i18n.js +122 -0
  222. package/lib/i18n.js.map +1 -0
  223. package/lib/index.d.ts +17 -0
  224. package/lib/index.d.ts.map +1 -1
  225. package/lib/index.js +17 -0
  226. package/lib/index.js.map +1 -1
  227. package/lib/types.d.ts +2 -1
  228. package/lib/types.d.ts.map +1 -1
  229. package/package.json +99 -44
  230. package/lib/MessageReply.d.ts +0 -15
  231. package/lib/MessageReply.d.ts.map +0 -1
  232. package/lib/MessageReply.js +0 -102
  233. package/lib/MessageReply.js.map +0 -1
  234. package/lib/ReplyPreview.d.ts +0 -14
  235. package/lib/ReplyPreview.d.ts.map +0 -1
  236. package/lib/ReplyPreview.js +0 -94
  237. package/lib/ReplyPreview.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ import { useChatContext } from '../ChatContext';
2
+ const EMPTY = {};
3
+ /** Returns the icon override registry from context (empty outside of Chat). */
4
+ export function useIcons() {
5
+ const { getIcons } = useChatContext();
6
+ return getIcons?.() ?? EMPTY;
7
+ }
8
+ //# sourceMappingURL=useIcons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIcons.js","sourceRoot":"","sources":["../../src/hooks/useIcons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAG/C,MAAM,KAAK,GAAc,EAAE,CAAA;AAE3B,+EAA+E;AAC/E,MAAM,UAAU,QAAQ;IACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAA;IACrC,OAAO,QAAQ,EAAE,EAAE,IAAI,KAAK,CAAA;AAC9B,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { View } from 'react-native';
1
2
  /**
2
3
  * How far down the window the chat container starts - the value
3
4
  * `KeyboardAvoidingView` needs to keep the input toolbar on top of the keyboard.
@@ -7,13 +8,21 @@
7
8
  * roughly a header-height too low, i.e. behind the keyboard.
8
9
  * See https://github.com/kesha-antonov/react-native-chat/issues/11
9
10
  *
10
- * The `SafeAreaProvider` that `ChatWrapper` mounts right around us reports exactly
11
- * this: its frame is measured natively against the root view
12
- * (`offsetDescendantRectToMyCoords` on Android, `convertRect:toView:` on iOS) and
13
- * refreshed on every layout change. That provider is what makes this work - it is
14
- * mounted unconditionally on purpose, and every wrapper between it and the
15
- * `KeyboardAvoidingView` is a zero-offset fill view so that its top edge and the
16
- * chat's top edge are the same line.
11
+ * It cannot come from `useSafeAreaFrame()` alone either. That reads the nearest
12
+ * `SafeAreaProvider`, and react-native-safe-area-context (v5) seeds a nested
13
+ * provider from its *parent's* metrics - so when the host app already mounts one
14
+ * at the root (the documented setup, and what expo-router does), the provider
15
+ * `ChatWrapper` mounts reports the root frame and `y` stays 0 no matter where the
16
+ * chat actually sits. A chat under a navigation header then got offset 0 and its
17
+ * toolbar landed a header-height too low: back behind the keyboard.
18
+ *
19
+ * So the offset is measured from the chat container itself, in window
20
+ * coordinates, and the safe-area frame is kept only as the pre-measurement
21
+ * seed. Attach `onLayout`/`ref` to the view that wraps the chat.
17
22
  */
18
- export declare function useKeyboardVerticalOffset(): number;
23
+ export declare function useKeyboardVerticalOffset(): {
24
+ ref: import("react").RefObject<View | null>;
25
+ onLayout: () => void;
26
+ keyboardVerticalOffset: number;
27
+ };
19
28
  //# sourceMappingURL=useKeyboardVerticalOffset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyboardVerticalOffset.d.ts","sourceRoot":"","sources":["../../src/hooks/useKeyboardVerticalOffset.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,IAAK,MAAM,CAEnD"}
1
+ {"version":3,"file":"useKeyboardVerticalOffset.d.ts","sourceRoot":"","sources":["../../src/hooks/useKeyboardVerticalOffset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAGnC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,yBAAyB;;;;EAoBxC"}
@@ -1,3 +1,4 @@
1
+ import { useCallback, useRef, useState } from 'react';
1
2
  import { useSafeAreaFrame } from 'react-native-safe-area-context';
2
3
  /**
3
4
  * How far down the window the chat container starts - the value
@@ -8,15 +9,35 @@ import { useSafeAreaFrame } from 'react-native-safe-area-context';
8
9
  * roughly a header-height too low, i.e. behind the keyboard.
9
10
  * See https://github.com/kesha-antonov/react-native-chat/issues/11
10
11
  *
11
- * The `SafeAreaProvider` that `ChatWrapper` mounts right around us reports exactly
12
- * this: its frame is measured natively against the root view
13
- * (`offsetDescendantRectToMyCoords` on Android, `convertRect:toView:` on iOS) and
14
- * refreshed on every layout change. That provider is what makes this work - it is
15
- * mounted unconditionally on purpose, and every wrapper between it and the
16
- * `KeyboardAvoidingView` is a zero-offset fill view so that its top edge and the
17
- * chat's top edge are the same line.
12
+ * It cannot come from `useSafeAreaFrame()` alone either. That reads the nearest
13
+ * `SafeAreaProvider`, and react-native-safe-area-context (v5) seeds a nested
14
+ * provider from its *parent's* metrics - so when the host app already mounts one
15
+ * at the root (the documented setup, and what expo-router does), the provider
16
+ * `ChatWrapper` mounts reports the root frame and `y` stays 0 no matter where the
17
+ * chat actually sits. A chat under a navigation header then got offset 0 and its
18
+ * toolbar landed a header-height too low: back behind the keyboard.
19
+ *
20
+ * So the offset is measured from the chat container itself, in window
21
+ * coordinates, and the safe-area frame is kept only as the pre-measurement
22
+ * seed. Attach `onLayout`/`ref` to the view that wraps the chat.
18
23
  */
19
24
  export function useKeyboardVerticalOffset() {
20
- return useSafeAreaFrame().y;
25
+ const frameY = useSafeAreaFrame().y;
26
+ const ref = useRef(null);
27
+ const [measured, setMeasured] = useState(null);
28
+ const onLayout = useCallback(() => {
29
+ // measureInWindow, not the layout event: the event reports the position
30
+ // within the parent, which is 0 for a fill view and tells us nothing about
31
+ // where the chat sits on screen.
32
+ ref.current?.measureInWindow((_x, y) => {
33
+ if (Number.isFinite(y))
34
+ setMeasured(previous => (previous === y ? previous : y));
35
+ });
36
+ }, []);
37
+ return {
38
+ ref,
39
+ onLayout,
40
+ keyboardVerticalOffset: measured ?? frameY,
41
+ };
21
42
  }
22
43
  //# sourceMappingURL=useKeyboardVerticalOffset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyboardVerticalOffset.js","sourceRoot":"","sources":["../../src/hooks/useKeyboardVerticalOffset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEjE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,gBAAgB,EAAE,CAAC,CAAC,CAAA;AAC7B,CAAC"}
1
+ {"version":3,"file":"useKeyboardVerticalOffset.js","sourceRoot":"","sources":["../../src/hooks/useKeyboardVerticalOffset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEjE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAA;IACnC,MAAM,GAAG,GAAG,MAAM,CAAO,IAAI,CAAC,CAAA;IAC9B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAE7D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,wEAAwE;QACxE,2EAA2E;QAC3E,iCAAiC;QACjC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpB,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO;QACL,GAAG;QACH,QAAQ;QACR,sBAAsB,EAAE,QAAQ,IAAI,MAAM;KAC3C,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ChatLabels } from '../i18n';
2
+ /** Returns the resolved UI labels (English defaults when used outside Chat). */
3
+ export declare function useLabels(): ChatLabels;
4
+ //# sourceMappingURL=useLabels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLabels.d.ts","sourceRoot":"","sources":["../../src/hooks/useLabels.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAiB,MAAM,SAAS,CAAA;AAEnD,gFAAgF;AAChF,wBAAgB,SAAS,IAAK,UAAU,CAGvC"}
@@ -0,0 +1,8 @@
1
+ import { useChatContext } from '../ChatContext';
2
+ import { defaultLabels } from '../i18n';
3
+ /** Returns the resolved UI labels (English defaults when used outside Chat). */
4
+ export function useLabels() {
5
+ const { getLabels } = useChatContext();
6
+ return getLabels?.() ?? defaultLabels;
7
+ }
8
+ //# sourceMappingURL=useLabels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLabels.js","sourceRoot":"","sources":["../../src/hooks/useLabels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAc,aAAa,EAAE,MAAM,SAAS,CAAA;AAEnD,gFAAgF;AAChF,MAAM,UAAU,SAAS;IACvB,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAA;IACtC,OAAO,SAAS,EAAE,EAAE,IAAI,aAAa,CAAA;AACvC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { ChatTheme } from '../Theme';
2
+ /**
3
+ * Returns the active {@link ChatTheme}. Inside `Chat` this is the resolved theme
4
+ * shared through context (defaults merged with `theme` / `darkTheme` overrides),
5
+ * so switching the theme prop or the system color scheme at runtime updates
6
+ * every consumer. Used standalone (outside `Chat`), it falls back to the
7
+ * built-in defaults for the current system color scheme.
8
+ */
9
+ export declare function useTheme(): ChatTheme;
10
+ /**
11
+ * DRY helper for theme-aware StyleSheets. Pass a module-level factory that maps
12
+ * a theme to a `StyleSheet.create(...)` result; the styles are memoized on the
13
+ * theme, so they are rebuilt only when the theme actually changes.
14
+ *
15
+ * @example
16
+ * const createStyles = (theme: ChatTheme) => StyleSheet.create({ ... })
17
+ * // inside a component:
18
+ * const styles = useThemedStyles(createStyles)
19
+ */
20
+ export declare function useThemedStyles<T>(factory: (theme: ChatTheme) => T): T;
21
+ //# sourceMappingURL=useTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/hooks/useTheme.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAuC,MAAM,UAAU,CAAA;AAGzE;;;;;;GAMG;AACH,wBAAgB,QAAQ,IAAK,SAAS,CASrC;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAG,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,CAGvE"}
@@ -0,0 +1,32 @@
1
+ import { useMemo } from 'react';
2
+ import { useChatContext } from '../ChatContext';
3
+ import { defaultDarkTheme, defaultLightTheme } from '../Theme';
4
+ import { useColorScheme } from './useColorScheme';
5
+ /**
6
+ * Returns the active {@link ChatTheme}. Inside `Chat` this is the resolved theme
7
+ * shared through context (defaults merged with `theme` / `darkTheme` overrides),
8
+ * so switching the theme prop or the system color scheme at runtime updates
9
+ * every consumer. Used standalone (outside `Chat`), it falls back to the
10
+ * built-in defaults for the current system color scheme.
11
+ */
12
+ export function useTheme() {
13
+ const colorScheme = useColorScheme();
14
+ const { getTheme } = useChatContext();
15
+ const contextTheme = getTheme?.();
16
+ return useMemo(() => contextTheme ?? (colorScheme === 'dark' ? defaultDarkTheme : defaultLightTheme), [contextTheme, colorScheme]);
17
+ }
18
+ /**
19
+ * DRY helper for theme-aware StyleSheets. Pass a module-level factory that maps
20
+ * a theme to a `StyleSheet.create(...)` result; the styles are memoized on the
21
+ * theme, so they are rebuilt only when the theme actually changes.
22
+ *
23
+ * @example
24
+ * const createStyles = (theme: ChatTheme) => StyleSheet.create({ ... })
25
+ * // inside a component:
26
+ * const styles = useThemedStyles(createStyles)
27
+ */
28
+ export function useThemedStyles(factory) {
29
+ const theme = useTheme();
30
+ return useMemo(() => factory(theme), [factory, theme]);
31
+ }
32
+ //# sourceMappingURL=useTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTheme.js","sourceRoot":"","sources":["../../src/hooks/useTheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAa,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ;IACtB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAA;IACrC,MAAM,YAAY,GAAG,QAAQ,EAAE,EAAE,CAAA;IAEjC,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,YAAY,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,EACrF,CAAC,YAAY,EAAE,WAAW,CAAC,CAC5B,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAK,OAAgC;IAClE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;AACxD,CAAC"}
package/lib/i18n.d.ts ADDED
@@ -0,0 +1,59 @@
1
+ /**
2
+ * UI string localization for the chat. Date/time localization is handled
3
+ * separately by Day.js via the `locale` prop; this covers the static UI labels
4
+ * (composer placeholder, buttons, recording hint, media/location labels, etc.).
5
+ *
6
+ * Provide overrides through the `labels` prop on `Chat`, or rely on the built-in
7
+ * translations selected by the `locale` prop. Labels resolve as:
8
+ * labels (prop) > translations[locale] > defaultLabels (English)
9
+ */
10
+ export interface ChatLabels {
11
+ /** Composer placeholder. */
12
+ placeholder: string;
13
+ /** Send button / quick-reply send label. */
14
+ send: string;
15
+ /** Cancel row in the attachment sheet. */
16
+ cancel: string;
17
+ /** "Load earlier messages" button. */
18
+ loadEarlier: string;
19
+ /** Day separator label for today's date. */
20
+ today: string;
21
+ /** Video message fallback label. */
22
+ video: string;
23
+ /** Voice/audio message fallback label. */
24
+ voiceMessage: string;
25
+ videoMessage: string;
26
+ /** Location message title. */
27
+ location: string;
28
+ /** Accessibility label for the location card. */
29
+ openLocationAccessibility: string;
30
+ /** Voice recording slide-to-cancel hint. */
31
+ slideToCancel: string;
32
+ /** Reply banner title; `{name}` is replaced with the author's name. */
33
+ replyingTo: string;
34
+ /** Edit banner title. */
35
+ editing: string;
36
+ /** Shown in the video recorder when camera permission is missing. */
37
+ cameraPermission: string;
38
+ /** Shown in the video recorder when no camera device is found. */
39
+ noCamera: string;
40
+ /** Hint under the video recorder's shutter while a take is running. */
41
+ stopAndSend: string;
42
+ /** Hint under the video recorder's shutter before recording starts. */
43
+ tapToRecord: string;
44
+ /** Hint while holding the video shutter. */
45
+ releaseToSend: string;
46
+ /** Idle hint for the hold-to-record video shutter. */
47
+ holdToRecord: string;
48
+ }
49
+ export declare const defaultLabels: ChatLabels;
50
+ /** Built-in translations (a starter set). Each is merged over English. */
51
+ export declare const translations: Record<string, Partial<ChatLabels>>;
52
+ /**
53
+ * Resolve the active labels: the `labels` override on top of the built-in
54
+ * translation for `locale` (if any) on top of English defaults.
55
+ */
56
+ export declare function resolveLabels(locale?: string, labels?: Partial<ChatLabels>): ChatLabels;
57
+ /** Interpolate `{name}`-style placeholders in a label. */
58
+ export declare function formatLabel(label: string, values: Record<string, string | number>): string;
59
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAA;IACZ,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,iDAAiD;IACjD,yBAAyB,EAAE,MAAM,CAAA;IACjC,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAA;IAClB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAA;IACxB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAA;IAChB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAA;IACnB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,UAoB3B,CAAA;AAED,0EAA0E;AAC1E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAqF5D,CAAA;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAC3B,UAAU,CAIZ;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAE3F"}
package/lib/i18n.js ADDED
@@ -0,0 +1,122 @@
1
+ export const defaultLabels = {
2
+ placeholder: 'Type a message...',
3
+ send: 'Send',
4
+ cancel: 'Cancel',
5
+ loadEarlier: 'Load earlier messages',
6
+ today: 'Today',
7
+ video: 'Video',
8
+ voiceMessage: 'Voice message',
9
+ videoMessage: 'Video message',
10
+ location: 'Location',
11
+ openLocationAccessibility: 'Open location in maps',
12
+ slideToCancel: 'Slide left to cancel...',
13
+ replyingTo: 'Replying to {name}',
14
+ editing: 'Editing',
15
+ cameraPermission: 'Camera permission needed',
16
+ noCamera: 'No camera available',
17
+ stopAndSend: 'Tap to stop and send',
18
+ tapToRecord: 'Tap to record',
19
+ releaseToSend: 'Release to send, slide up to lock',
20
+ holdToRecord: 'Hold to record',
21
+ };
22
+ /** Built-in translations (a starter set). Each is merged over English. */
23
+ export const translations = {
24
+ es: {
25
+ placeholder: 'Escribe un mensaje...',
26
+ send: 'Enviar',
27
+ cancel: 'Cancelar',
28
+ loadEarlier: 'Cargar mensajes anteriores',
29
+ today: 'Hoy',
30
+ video: 'Video',
31
+ voiceMessage: 'Mensaje de voz',
32
+ videoMessage: 'Mensaje de video',
33
+ location: 'Ubicacion',
34
+ openLocationAccessibility: 'Abrir ubicacion en mapas',
35
+ slideToCancel: 'desliza para cancelar',
36
+ replyingTo: 'Respondiendo a {name}',
37
+ editing: 'Editando',
38
+ cameraPermission: 'Se necesita permiso de camara',
39
+ noCamera: 'No hay camara disponible',
40
+ stopAndSend: 'Toca para detener y enviar',
41
+ tapToRecord: 'Toca para grabar',
42
+ releaseToSend: 'Suelta para enviar, desliza arriba para bloquear',
43
+ holdToRecord: 'Manten pulsado para grabar',
44
+ },
45
+ fr: {
46
+ placeholder: 'Ecrire un message...',
47
+ send: 'Envoyer',
48
+ cancel: 'Annuler',
49
+ loadEarlier: 'Charger les messages precedents',
50
+ today: 'Aujourd\'hui',
51
+ video: 'Video',
52
+ voiceMessage: 'Message vocal',
53
+ videoMessage: 'Message vidéo',
54
+ location: 'Position',
55
+ openLocationAccessibility: 'Ouvrir la position dans les cartes',
56
+ slideToCancel: 'glisser pour annuler',
57
+ replyingTo: 'Reponse a {name}',
58
+ editing: 'Modification',
59
+ cameraPermission: 'Autorisation de la camera requise',
60
+ noCamera: 'Aucune camera disponible',
61
+ stopAndSend: 'Appuyez pour arreter et envoyer',
62
+ tapToRecord: 'Appuyez pour enregistrer',
63
+ releaseToSend: 'Relachez pour envoyer, glissez vers le haut pour verrouiller',
64
+ holdToRecord: 'Maintenez pour enregistrer',
65
+ },
66
+ de: {
67
+ placeholder: 'Nachricht schreiben...',
68
+ send: 'Senden',
69
+ cancel: 'Abbrechen',
70
+ loadEarlier: 'Fruhere Nachrichten laden',
71
+ today: 'Heute',
72
+ video: 'Video',
73
+ voiceMessage: 'Sprachnachricht',
74
+ videoMessage: 'Videonachricht',
75
+ location: 'Standort',
76
+ openLocationAccessibility: 'Standort in Karten offnen',
77
+ slideToCancel: 'zum Abbrechen wischen',
78
+ replyingTo: 'Antwort an {name}',
79
+ editing: 'Bearbeiten',
80
+ cameraPermission: 'Kameraberechtigung erforderlich',
81
+ noCamera: 'Keine Kamera verfugbar',
82
+ stopAndSend: 'Tippen zum Beenden und Senden',
83
+ tapToRecord: 'Zum Aufnehmen tippen',
84
+ releaseToSend: 'Loslassen zum Senden, nach oben wischen zum Sperren',
85
+ holdToRecord: 'Zum Aufnehmen gedruckt halten',
86
+ },
87
+ ru: {
88
+ placeholder: 'Введите сообщение...',
89
+ send: 'Отправить',
90
+ cancel: 'Отмена',
91
+ loadEarlier: 'Загрузить предыдущие сообщения',
92
+ today: 'Сегодня',
93
+ video: 'Видео',
94
+ voiceMessage: 'Голосовое сообщение',
95
+ videoMessage: 'Видеосообщение',
96
+ location: 'Местоположение',
97
+ openLocationAccessibility: 'Открыть местоположение на картах',
98
+ slideToCancel: 'смахните для отмены',
99
+ replyingTo: 'Ответ {name}',
100
+ editing: 'Редактирование',
101
+ cameraPermission: 'Требуется доступ к камере',
102
+ noCamera: 'Камера недоступна',
103
+ stopAndSend: 'Нажмите, чтобы остановить и отправить',
104
+ tapToRecord: 'Нажмите, чтобы записать',
105
+ releaseToSend: 'Отпустите, чтобы отправить, вверх - закрепить',
106
+ holdToRecord: 'Удерживайте для записи',
107
+ },
108
+ };
109
+ /**
110
+ * Resolve the active labels: the `labels` override on top of the built-in
111
+ * translation for `locale` (if any) on top of English defaults.
112
+ */
113
+ export function resolveLabels(locale, labels) {
114
+ const localeKey = locale?.split('-')[0]?.toLowerCase();
115
+ const translated = localeKey ? translations[localeKey] : undefined;
116
+ return { ...defaultLabels, ...translated, ...labels };
117
+ }
118
+ /** Interpolate `{name}`-style placeholders in a label. */
119
+ export function formatLabel(label, values) {
120
+ return label.replace(/\{(\w+)\}/g, (_match, key) => String(values[key] ?? ''));
121
+ }
122
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -8,6 +8,9 @@ export * from './linkParser';
8
8
  export * from './Reply';
9
9
  export * from './Reactions';
10
10
  export * from './styles';
11
+ export * from './Theme';
12
+ export * from './Icons';
13
+ export * from './i18n';
11
14
  export { Color } from './Color';
12
15
  export { Actions } from './Actions';
13
16
  export { Avatar } from './Avatar';
@@ -15,6 +18,16 @@ export { Bubble } from './Bubble';
15
18
  export { SystemMessage } from './SystemMessage';
16
19
  export { MessageImage } from './MessageImage';
17
20
  export { MessageText } from './MessageText';
21
+ export { MessageLocation } from './MessageLocation';
22
+ export { MediaCard } from './components/MediaCard';
23
+ export { AttachmentSheet } from './components/AttachmentSheet';
24
+ export { ContextMenu } from './components/ContextMenu';
25
+ export { MarkdownMessageText, isMarkdownAvailable } from './components/MarkdownMessageText';
26
+ export { BasicMarkdown } from './components/BasicMarkdown';
27
+ export { WaveformPlayer, isWaveformAvailable } from './components/WaveformPlayer';
28
+ export { VoiceMessageInput, isVoiceRecordingAvailable } from './components/VoiceMessageInput';
29
+ export { VideoRecordButton, isVideoRecordingAvailable } from './components/VideoRecordButton';
30
+ export { VideoNoteRecorder, isVisionCameraAvailable } from './components/VideoNoteRecorder';
18
31
  export { Composer } from './Composer';
19
32
  export { Day } from './Day';
20
33
  export { InputToolbar } from './InputToolbar';
@@ -30,6 +43,10 @@ export { MessageReply } from './components/MessageReply';
30
43
  export { ReplyPreview } from './components/ReplyPreview';
31
44
  export { StreamingCursor } from './components/StreamingCursor';
32
45
  export { useColorScheme } from './hooks/useColorScheme';
46
+ export { useTheme, useThemedStyles } from './hooks/useTheme';
47
+ export { useIcons } from './hooks/useIcons';
48
+ export { useLabels } from './hooks/useLabels';
49
+ export { Icon } from './components/Icon';
33
50
  export { useStreamingMessages } from './hooks/useStreamingMessages';
34
51
  export type { UseStreamingMessagesOptions, UseStreamingMessagesResult, StreamHandle } from './hooks/useStreamingMessages';
35
52
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAEhC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,YAAY,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,YAAY,EACb,MAAM,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/lib/index.js CHANGED
@@ -8,6 +8,9 @@ export * from './linkParser';
8
8
  export * from './Reply';
9
9
  export * from './Reactions';
10
10
  export * from './styles';
11
+ export * from './Theme';
12
+ export * from './Icons';
13
+ export * from './i18n';
11
14
  export { Color } from './Color';
12
15
  export { Actions } from './Actions';
13
16
  export { Avatar } from './Avatar';
@@ -15,6 +18,16 @@ export { Bubble } from './Bubble';
15
18
  export { SystemMessage } from './SystemMessage';
16
19
  export { MessageImage } from './MessageImage';
17
20
  export { MessageText } from './MessageText';
21
+ export { MessageLocation } from './MessageLocation';
22
+ export { MediaCard } from './components/MediaCard';
23
+ export { AttachmentSheet } from './components/AttachmentSheet';
24
+ export { ContextMenu } from './components/ContextMenu';
25
+ export { MarkdownMessageText, isMarkdownAvailable } from './components/MarkdownMessageText';
26
+ export { BasicMarkdown } from './components/BasicMarkdown';
27
+ export { WaveformPlayer, isWaveformAvailable } from './components/WaveformPlayer';
28
+ export { VoiceMessageInput, isVoiceRecordingAvailable } from './components/VoiceMessageInput';
29
+ export { VideoRecordButton, isVideoRecordingAvailable } from './components/VideoRecordButton';
30
+ export { VideoNoteRecorder, isVisionCameraAvailable } from './components/VideoNoteRecorder';
18
31
  export { Composer } from './Composer';
19
32
  export { Day } from './Day';
20
33
  export { InputToolbar } from './InputToolbar';
@@ -30,5 +43,9 @@ export { MessageReply } from './components/MessageReply';
30
43
  export { ReplyPreview } from './components/ReplyPreview';
31
44
  export { StreamingCursor } from './components/StreamingCursor';
32
45
  export { useColorScheme } from './hooks/useColorScheme';
46
+ export { useTheme, useThemedStyles } from './hooks/useTheme';
47
+ export { useIcons } from './hooks/useIcons';
48
+ export { useLabels } from './hooks/useLabels';
49
+ export { Icon } from './components/Icon';
33
50
  export { useStreamingMessages } from './hooks/useStreamingMessages';
34
51
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAEhC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAEhC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjF,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAC3F,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA"}
package/lib/types.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  export * from './Models';
2
2
  export type { ActionsProps } from './Actions';
3
3
  export type { AvatarProps } from './Avatar';
4
- export type { BubbleProps, RenderMessageImageProps, RenderMessageVideoProps, RenderMessageAudioProps, RenderMessageTextProps } from './Bubble';
4
+ export type { BubbleProps, RenderMessageImageProps, RenderMessageVideoProps, RenderMessageAudioProps, RenderMessageLocationProps, RenderMessageTextProps } from './Bubble';
5
5
  export type { ComposerProps } from './Composer';
6
+ export type { AttachmentAction, AttachmentSheetProps } from './components/AttachmentSheet';
6
7
  export type { DayProps } from './Day';
7
8
  export type { ChatAvatarProps } from './ChatAvatar';
8
9
  export type { InputToolbarProps, ReplyPreviewProps } from './InputToolbar';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AAExB,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,YAAY,EACV,WAAW,EACX,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAC1E,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACvC,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AAExB,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,YAAY,EACV,WAAW,EACX,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC1F,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAC1E,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACvC,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA"}