@sendbird/uikit-react-native-foundation 3.1.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/lib/commonjs/assets/icon/icon-audio-off-filled.png +0 -0
  2. package/lib/commonjs/assets/icon/icon-audio-off-filled@2x.png +0 -0
  3. package/lib/commonjs/assets/icon/icon-audio-off-filled@3x.png +0 -0
  4. package/lib/commonjs/assets/icon/icon-audio-off.png +0 -0
  5. package/lib/commonjs/assets/icon/icon-audio-off@2x.png +0 -0
  6. package/lib/commonjs/assets/icon/icon-audio-off@3x.png +0 -0
  7. package/lib/commonjs/assets/icon/icon-audio-on-filled.png +0 -0
  8. package/lib/commonjs/assets/icon/icon-audio-on-filled@2x.png +0 -0
  9. package/lib/commonjs/assets/icon/icon-audio-on-filled@3x.png +0 -0
  10. package/lib/commonjs/assets/icon/icon-audio-on.png +0 -0
  11. package/lib/commonjs/assets/icon/icon-audio-on@2x.png +0 -0
  12. package/lib/commonjs/assets/icon/icon-audio-on@3x.png +0 -0
  13. package/lib/commonjs/assets/icon/icon-pause.png +0 -0
  14. package/lib/commonjs/assets/icon/icon-pause@2x.png +0 -0
  15. package/lib/commonjs/assets/icon/icon-pause@3x.png +0 -0
  16. package/lib/commonjs/assets/icon/icon-recording.png +0 -0
  17. package/lib/commonjs/assets/icon/icon-recording@2x.png +0 -0
  18. package/lib/commonjs/assets/icon/icon-recording@3x.png +0 -0
  19. package/lib/commonjs/assets/icon/icon-stop.png +0 -0
  20. package/lib/commonjs/assets/icon/icon-stop@2x.png +0 -0
  21. package/lib/commonjs/assets/icon/icon-stop@3x.png +0 -0
  22. package/lib/commonjs/assets/icon/index.js +7 -0
  23. package/lib/commonjs/assets/icon/index.js.map +1 -1
  24. package/lib/commonjs/components/Box/index.js +2 -2
  25. package/lib/commonjs/components/Box/index.js.map +1 -1
  26. package/lib/commonjs/components/Icon/index.js +4 -3
  27. package/lib/commonjs/components/Icon/index.js.map +1 -1
  28. package/lib/commonjs/components/Image/FastImageInternal.js.map +1 -1
  29. package/lib/commonjs/components/Image/index.js.map +1 -1
  30. package/lib/commonjs/components/Modal/index.js +1 -1
  31. package/lib/commonjs/components/Modal/index.js.map +1 -1
  32. package/lib/commonjs/components/PressBox/index.js.map +1 -1
  33. package/lib/commonjs/components/ProgressBar/index.js +72 -0
  34. package/lib/commonjs/components/ProgressBar/index.js.map +1 -0
  35. package/lib/commonjs/components/RegexText/index.js.map +1 -1
  36. package/lib/commonjs/index.js +7 -0
  37. package/lib/commonjs/index.js.map +1 -1
  38. package/lib/commonjs/styles/HeaderStyleContext.js.map +1 -1
  39. package/lib/commonjs/styles/createScaleFactor.js +5 -4
  40. package/lib/commonjs/styles/createScaleFactor.js.map +1 -1
  41. package/lib/commonjs/theme/DarkUIKitTheme.js +80 -36
  42. package/lib/commonjs/theme/DarkUIKitTheme.js.map +1 -1
  43. package/lib/commonjs/theme/LightUIKitTheme.js +80 -36
  44. package/lib/commonjs/theme/LightUIKitTheme.js.map +1 -1
  45. package/lib/commonjs/types.js.map +1 -1
  46. package/lib/commonjs/ui/Avatar/index.js +4 -3
  47. package/lib/commonjs/ui/Avatar/index.js.map +1 -1
  48. package/lib/commonjs/ui/BottomSheet/index.js.map +1 -1
  49. package/lib/commonjs/ui/Dialog/DialogSheet.js.map +1 -1
  50. package/lib/commonjs/ui/GroupChannelMessage/Message.file.voice.js +108 -0
  51. package/lib/commonjs/ui/GroupChannelMessage/Message.file.voice.js.map +1 -0
  52. package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js +1 -1
  53. package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js.map +1 -1
  54. package/lib/commonjs/ui/GroupChannelMessage/index.js +2 -0
  55. package/lib/commonjs/ui/GroupChannelMessage/index.js.map +1 -1
  56. package/lib/commonjs/ui/GroupChannelPreview/index.js.map +1 -1
  57. package/lib/commonjs/ui/Header/index.js +5 -4
  58. package/lib/commonjs/ui/Header/index.js.map +1 -1
  59. package/lib/commonjs/ui/OpenChannelMessage/MessageContainer.js.map +1 -1
  60. package/lib/commonjs/ui/OpenChannelPreview/index.js.map +1 -1
  61. package/lib/commonjs/ui/ProfileCard/index.js.map +1 -1
  62. package/lib/module/assets/icon/icon-audio-off-filled.png +0 -0
  63. package/lib/module/assets/icon/icon-audio-off-filled@2x.png +0 -0
  64. package/lib/module/assets/icon/icon-audio-off-filled@3x.png +0 -0
  65. package/lib/module/assets/icon/icon-audio-off.png +0 -0
  66. package/lib/module/assets/icon/icon-audio-off@2x.png +0 -0
  67. package/lib/module/assets/icon/icon-audio-off@3x.png +0 -0
  68. package/lib/module/assets/icon/icon-audio-on-filled.png +0 -0
  69. package/lib/module/assets/icon/icon-audio-on-filled@2x.png +0 -0
  70. package/lib/module/assets/icon/icon-audio-on-filled@3x.png +0 -0
  71. package/lib/module/assets/icon/icon-audio-on.png +0 -0
  72. package/lib/module/assets/icon/icon-audio-on@2x.png +0 -0
  73. package/lib/module/assets/icon/icon-audio-on@3x.png +0 -0
  74. package/lib/module/assets/icon/icon-pause.png +0 -0
  75. package/lib/module/assets/icon/icon-pause@2x.png +0 -0
  76. package/lib/module/assets/icon/icon-pause@3x.png +0 -0
  77. package/lib/module/assets/icon/icon-recording.png +0 -0
  78. package/lib/module/assets/icon/icon-recording@2x.png +0 -0
  79. package/lib/module/assets/icon/icon-recording@3x.png +0 -0
  80. package/lib/module/assets/icon/icon-stop.png +0 -0
  81. package/lib/module/assets/icon/icon-stop@2x.png +0 -0
  82. package/lib/module/assets/icon/icon-stop@3x.png +0 -0
  83. package/lib/module/assets/icon/index.js +7 -0
  84. package/lib/module/assets/icon/index.js.map +1 -1
  85. package/lib/module/components/Box/index.js +2 -2
  86. package/lib/module/components/Box/index.js.map +1 -1
  87. package/lib/module/components/Icon/index.js +4 -3
  88. package/lib/module/components/Icon/index.js.map +1 -1
  89. package/lib/module/components/Image/FastImageInternal.js.map +1 -1
  90. package/lib/module/components/Image/index.js.map +1 -1
  91. package/lib/module/components/Modal/index.js +1 -1
  92. package/lib/module/components/Modal/index.js.map +1 -1
  93. package/lib/module/components/PressBox/index.js.map +1 -1
  94. package/lib/module/components/ProgressBar/index.js +62 -0
  95. package/lib/module/components/ProgressBar/index.js.map +1 -0
  96. package/lib/module/components/RegexText/index.js.map +1 -1
  97. package/lib/module/index.js +1 -0
  98. package/lib/module/index.js.map +1 -1
  99. package/lib/module/styles/HeaderStyleContext.js.map +1 -1
  100. package/lib/module/styles/createScaleFactor.js +5 -4
  101. package/lib/module/styles/createScaleFactor.js.map +1 -1
  102. package/lib/module/theme/DarkUIKitTheme.js +80 -36
  103. package/lib/module/theme/DarkUIKitTheme.js.map +1 -1
  104. package/lib/module/theme/LightUIKitTheme.js +80 -36
  105. package/lib/module/theme/LightUIKitTheme.js.map +1 -1
  106. package/lib/module/types.js.map +1 -1
  107. package/lib/module/ui/Avatar/index.js +4 -3
  108. package/lib/module/ui/Avatar/index.js.map +1 -1
  109. package/lib/module/ui/BottomSheet/index.js.map +1 -1
  110. package/lib/module/ui/Dialog/DialogSheet.js.map +1 -1
  111. package/lib/module/ui/GroupChannelMessage/Message.file.voice.js +98 -0
  112. package/lib/module/ui/GroupChannelMessage/Message.file.voice.js.map +1 -0
  113. package/lib/module/ui/GroupChannelMessage/Message.unknown.js +1 -1
  114. package/lib/module/ui/GroupChannelMessage/Message.unknown.js.map +1 -1
  115. package/lib/module/ui/GroupChannelMessage/index.js +2 -0
  116. package/lib/module/ui/GroupChannelMessage/index.js.map +1 -1
  117. package/lib/module/ui/GroupChannelPreview/index.js.map +1 -1
  118. package/lib/module/ui/Header/index.js +5 -4
  119. package/lib/module/ui/Header/index.js.map +1 -1
  120. package/lib/module/ui/OpenChannelMessage/MessageContainer.js.map +1 -1
  121. package/lib/module/ui/OpenChannelPreview/index.js.map +1 -1
  122. package/lib/module/ui/ProfileCard/index.js.map +1 -1
  123. package/lib/typescript/src/assets/icon/index.d.ts +7 -0
  124. package/lib/typescript/src/components/Box/index.d.ts +2 -1
  125. package/lib/typescript/src/components/Divider/index.d.ts +2 -1
  126. package/lib/typescript/src/components/Icon/index.d.ts +76 -7
  127. package/lib/typescript/src/components/Image/FastImageInternal.d.ts +2 -1
  128. package/lib/typescript/src/components/Image/index.d.ts +2 -1
  129. package/lib/typescript/src/components/ImageWithPlaceholder/index.d.ts +2 -1
  130. package/lib/typescript/src/components/Modal/index.d.ts +2 -1
  131. package/lib/typescript/src/components/PressBox/index.d.ts +2 -1
  132. package/lib/typescript/src/components/ProgressBar/index.d.ts +12 -0
  133. package/lib/typescript/src/components/RegexText/index.d.ts +3 -2
  134. package/lib/typescript/src/components/Switch/index.d.ts +1 -1
  135. package/lib/typescript/src/components/Text/index.d.ts +2 -1
  136. package/lib/typescript/src/components/VideoThumbnail/index.d.ts +2 -1
  137. package/lib/typescript/src/index.d.ts +1 -0
  138. package/lib/typescript/src/styles/HeaderStyleContext.d.ts +2 -2
  139. package/lib/typescript/src/styles/createScaleFactor.d.ts +4 -5
  140. package/lib/typescript/src/theme/UIKitThemeProvider.d.ts +1 -1
  141. package/lib/typescript/src/types.d.ts +11 -7
  142. package/lib/typescript/src/ui/ActionMenu/index.d.ts +2 -1
  143. package/lib/typescript/src/ui/Alert/index.d.ts +2 -1
  144. package/lib/typescript/src/ui/Avatar/AvatarGroup.d.ts +1 -1
  145. package/lib/typescript/src/ui/Avatar/AvatarIcon.d.ts +2 -1
  146. package/lib/typescript/src/ui/Avatar/index.d.ts +16 -8
  147. package/lib/typescript/src/ui/Badge/index.d.ts +2 -1
  148. package/lib/typescript/src/ui/BottomSheet/index.d.ts +3 -2
  149. package/lib/typescript/src/ui/Button/index.d.ts +1 -1
  150. package/lib/typescript/src/ui/ChannelFrozenBanner/index.d.ts +2 -1
  151. package/lib/typescript/src/ui/Dialog/DialogBox.d.ts +1 -1
  152. package/lib/typescript/src/ui/Dialog/DialogSheet.d.ts +3 -3
  153. package/lib/typescript/src/ui/Dialog/index.d.ts +1 -1
  154. package/lib/typescript/src/ui/GroupChannelMessage/Message.admin.d.ts +2 -1
  155. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.d.ts +2 -1
  156. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.image.d.ts +2 -1
  157. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.video.d.ts +2 -1
  158. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.voice.d.ts +14 -0
  159. package/lib/typescript/src/ui/GroupChannelMessage/Message.unknown.d.ts +2 -1
  160. package/lib/typescript/src/ui/GroupChannelMessage/Message.user.d.ts +2 -1
  161. package/lib/typescript/src/ui/GroupChannelMessage/Message.user.og.d.ts +2 -1
  162. package/lib/typescript/src/ui/GroupChannelMessage/MessageBubbleWithText.d.ts +2 -1
  163. package/lib/typescript/src/ui/GroupChannelMessage/MessageContainer.d.ts +4 -3
  164. package/lib/typescript/src/ui/GroupChannelMessage/MessageOpenGraph.d.ts +2 -1
  165. package/lib/typescript/src/ui/GroupChannelMessage/index.d.ts +43 -7
  166. package/lib/typescript/src/ui/GroupChannelPreview/index.d.ts +3 -3
  167. package/lib/typescript/src/ui/Header/index.d.ts +8 -12
  168. package/lib/typescript/src/ui/LoadingSpinner/index.d.ts +2 -1
  169. package/lib/typescript/src/ui/MenuBar/index.d.ts +1 -1
  170. package/lib/typescript/src/ui/OpenChannelMessage/Message.admin.d.ts +2 -1
  171. package/lib/typescript/src/ui/OpenChannelMessage/Message.file.d.ts +2 -1
  172. package/lib/typescript/src/ui/OpenChannelMessage/Message.file.image.d.ts +2 -1
  173. package/lib/typescript/src/ui/OpenChannelMessage/Message.file.video.d.ts +2 -1
  174. package/lib/typescript/src/ui/OpenChannelMessage/Message.unknown.d.ts +2 -1
  175. package/lib/typescript/src/ui/OpenChannelMessage/Message.user.d.ts +2 -1
  176. package/lib/typescript/src/ui/OpenChannelMessage/Message.user.og.d.ts +2 -1
  177. package/lib/typescript/src/ui/OpenChannelMessage/MessageContainer.d.ts +2 -1
  178. package/lib/typescript/src/ui/OpenChannelMessage/index.d.ts +7 -7
  179. package/lib/typescript/src/ui/OpenChannelPreview/index.d.ts +2 -2
  180. package/lib/typescript/src/ui/OutlinedButton/index.d.ts +2 -1
  181. package/lib/typescript/src/ui/Placeholder/index.d.ts +2 -1
  182. package/lib/typescript/src/ui/ProfileCard/index.d.ts +3 -2
  183. package/lib/typescript/src/ui/Prompt/index.d.ts +2 -1
  184. package/lib/typescript/src/ui/Toast/index.d.ts +2 -2
  185. package/package.json +5 -9
  186. package/src/assets/icon/icon-audio-off-filled.png +0 -0
  187. package/src/assets/icon/icon-audio-off-filled@2x.png +0 -0
  188. package/src/assets/icon/icon-audio-off-filled@3x.png +0 -0
  189. package/src/assets/icon/icon-audio-off.png +0 -0
  190. package/src/assets/icon/icon-audio-off@2x.png +0 -0
  191. package/src/assets/icon/icon-audio-off@3x.png +0 -0
  192. package/src/assets/icon/icon-audio-on-filled.png +0 -0
  193. package/src/assets/icon/icon-audio-on-filled@2x.png +0 -0
  194. package/src/assets/icon/icon-audio-on-filled@3x.png +0 -0
  195. package/src/assets/icon/icon-audio-on.png +0 -0
  196. package/src/assets/icon/icon-audio-on@2x.png +0 -0
  197. package/src/assets/icon/icon-audio-on@3x.png +0 -0
  198. package/src/assets/icon/icon-pause.png +0 -0
  199. package/src/assets/icon/icon-pause@2x.png +0 -0
  200. package/src/assets/icon/icon-pause@3x.png +0 -0
  201. package/src/assets/icon/icon-recording.png +0 -0
  202. package/src/assets/icon/icon-recording@2x.png +0 -0
  203. package/src/assets/icon/icon-recording@3x.png +0 -0
  204. package/src/assets/icon/icon-stop.png +0 -0
  205. package/src/assets/icon/icon-stop@2x.png +0 -0
  206. package/src/assets/icon/icon-stop@3x.png +0 -0
  207. package/src/assets/icon/index.ts +7 -0
  208. package/src/components/Box/index.tsx +1 -1
  209. package/src/components/Icon/index.tsx +6 -7
  210. package/src/components/Image/FastImageInternal.tsx +3 -2
  211. package/src/components/Image/index.ts +2 -1
  212. package/src/components/Modal/index.tsx +1 -1
  213. package/src/components/PressBox/index.tsx +1 -0
  214. package/src/components/ProgressBar/index.tsx +72 -0
  215. package/src/components/RegexText/index.tsx +3 -3
  216. package/src/index.ts +1 -0
  217. package/src/styles/HeaderStyleContext.tsx +1 -1
  218. package/src/styles/createScaleFactor.ts +5 -5
  219. package/src/theme/DarkUIKitTheme.ts +80 -37
  220. package/src/theme/LightUIKitTheme.ts +80 -37
  221. package/src/types.ts +31 -7
  222. package/src/ui/Avatar/index.tsx +6 -14
  223. package/src/ui/BottomSheet/index.tsx +2 -2
  224. package/src/ui/Dialog/DialogSheet.tsx +2 -2
  225. package/src/ui/GroupChannelMessage/Message.file.voice.tsx +123 -0
  226. package/src/ui/GroupChannelMessage/Message.unknown.tsx +1 -1
  227. package/src/ui/GroupChannelMessage/index.ts +7 -0
  228. package/src/ui/GroupChannelPreview/index.tsx +2 -2
  229. package/src/ui/Header/index.tsx +8 -12
  230. package/src/ui/OpenChannelMessage/MessageContainer.tsx +1 -1
  231. package/src/ui/OpenChannelPreview/index.tsx +1 -1
  232. package/src/ui/ProfileCard/index.tsx +2 -2
@@ -1,5 +1,6 @@
1
+ import React from 'react';
1
2
  import type { SendbirdUserMessage } from '@sendbird/uikit-utils';
2
3
  import type { OpenChannelMessageProps } from './index';
3
4
  type Props = {};
4
- declare const OpenGraphUserMessage: (props: OpenChannelMessageProps<SendbirdUserMessage, Props>) => JSX.Element;
5
+ declare const OpenGraphUserMessage: (props: OpenChannelMessageProps<SendbirdUserMessage, Props>) => React.JSX.Element;
5
6
  export default OpenGraphUserMessage;
@@ -1,7 +1,8 @@
1
+ import React from 'react';
1
2
  import type { SendbirdMessage } from '@sendbird/uikit-utils';
2
3
  import type { OpenChannelMessageProps } from './index';
3
4
  type Props = {
4
5
  pressed?: boolean;
5
6
  };
6
- declare const MessageContainer: ({ children, channel, grouped, pressed, ...props }: OpenChannelMessageProps<SendbirdMessage, Props>) => JSX.Element;
7
+ declare const MessageContainer: ({ children, channel, grouped, pressed, ...props }: OpenChannelMessageProps<SendbirdMessage, Props>) => React.JSX.Element;
7
8
  export default MessageContainer;
@@ -36,7 +36,7 @@ declare const OpenChannelMessage: {
36
36
  onLongPress?: (() => void) | undefined;
37
37
  onPressAvatar?: (() => void) | undefined;
38
38
  onPressURL?: ((url: string) => void) | undefined;
39
- }) => JSX.Element;
39
+ }) => React.JSX.Element;
40
40
  OpenGraphUser: (props: {
41
41
  channel: SendbirdOpenChannel;
42
42
  message: import("@sendbird/chat/message").UserMessage;
@@ -54,7 +54,7 @@ declare const OpenChannelMessage: {
54
54
  onLongPress?: (() => void) | undefined;
55
55
  onPressAvatar?: (() => void) | undefined;
56
56
  onPressURL?: ((url: string) => void) | undefined;
57
- }) => JSX.Element;
57
+ }) => React.JSX.Element;
58
58
  File: (props: {
59
59
  channel: SendbirdOpenChannel;
60
60
  message: import("@sendbird/chat/message").FileMessage;
@@ -72,7 +72,7 @@ declare const OpenChannelMessage: {
72
72
  onLongPress?: (() => void) | undefined;
73
73
  onPressAvatar?: (() => void) | undefined;
74
74
  onPressURL?: ((url: string) => void) | undefined;
75
- }) => JSX.Element;
75
+ }) => React.JSX.Element;
76
76
  ImageFile: (props: {
77
77
  channel: SendbirdOpenChannel;
78
78
  message: import("@sendbird/chat/message").FileMessage;
@@ -90,12 +90,12 @@ declare const OpenChannelMessage: {
90
90
  onLongPress?: (() => void) | undefined;
91
91
  onPressAvatar?: (() => void) | undefined;
92
92
  onPressURL?: ((url: string) => void) | undefined;
93
- }) => JSX.Element;
93
+ }) => React.JSX.Element;
94
94
  VideoFile: (props: OpenChannelMessageProps<import("@sendbird/chat/message").FileMessage, {
95
95
  fetchThumbnailFromVideoSource: (uri: string) => Promise<{
96
96
  path: string;
97
97
  } | null>;
98
- }>) => JSX.Element;
98
+ }>) => React.JSX.Element;
99
99
  Admin: (props: {
100
100
  channel: SendbirdOpenChannel;
101
101
  message: import("@sendbird/chat/message").AdminMessage;
@@ -113,7 +113,7 @@ declare const OpenChannelMessage: {
113
113
  onLongPress?: (() => void) | undefined;
114
114
  onPressAvatar?: (() => void) | undefined;
115
115
  onPressURL?: ((url: string) => void) | undefined;
116
- }) => JSX.Element;
116
+ }) => React.JSX.Element;
117
117
  Unknown: (props: {
118
118
  channel: SendbirdOpenChannel;
119
119
  message: SendbirdMessage;
@@ -131,6 +131,6 @@ declare const OpenChannelMessage: {
131
131
  onLongPress?: (() => void) | undefined;
132
132
  onPressAvatar?: (() => void) | undefined;
133
133
  onPressURL?: ((url: string) => void) | undefined;
134
- }) => JSX.Element;
134
+ }) => React.JSX.Element;
135
135
  };
136
136
  export default OpenChannelMessage;
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  type Props = {
3
- customCover?: React.ReactElement;
3
+ customCover?: React.ReactNode;
4
4
  coverUrl: string;
5
5
  title: string;
6
6
  participantsCount?: number;
7
7
  frozen?: boolean;
8
8
  };
9
- declare const OpenChannelPreview: ({ customCover, coverUrl, participantsCount, title, frozen }: Props) => JSX.Element;
9
+ declare const OpenChannelPreview: ({ customCover, coverUrl, participantsCount, title, frozen }: Props) => React.JSX.Element;
10
10
  export default OpenChannelPreview;
@@ -1,8 +1,9 @@
1
+ import React from 'react';
1
2
  import { StyleProp, ViewStyle } from 'react-native';
2
3
  type OutlinedButtonProps = {
3
4
  children: string;
4
5
  containerStyle?: StyleProp<ViewStyle>;
5
6
  onPress?: () => void;
6
7
  };
7
- declare const OutlinedButton: ({ children, onPress, containerStyle }: OutlinedButtonProps) => JSX.Element;
8
+ declare const OutlinedButton: ({ children, onPress, containerStyle }: OutlinedButtonProps) => React.JSX.Element;
8
9
  export default OutlinedButton;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import Icon from '../../components/Icon';
2
3
  type Props = {
3
4
  loading?: boolean;
@@ -6,5 +7,5 @@ type Props = {
6
7
  errorRetryLabel?: string;
7
8
  onPressRetry?: () => void;
8
9
  };
9
- declare const Placeholder: ({ icon, loading, message, errorRetryLabel, onPressRetry }: Props) => JSX.Element;
10
+ declare const Placeholder: ({ icon, loading, message, errorRetryLabel, onPressRetry }: Props) => React.JSX.Element;
10
11
  export default Placeholder;
@@ -1,11 +1,12 @@
1
+ import React, { ReactNode } from 'react';
1
2
  import { StyleProp, ViewStyle } from 'react-native';
2
3
  type Props = {
3
4
  uri: string;
4
5
  username: string;
5
- button?: JSX.Element;
6
+ button?: ReactNode;
6
7
  bodyLabel: string;
7
8
  body: string;
8
9
  containerStyle?: StyleProp<ViewStyle>;
9
10
  };
10
- declare const ProfileCard: ({ uri, username, bodyLabel, body, button, containerStyle }: Props) => JSX.Element;
11
+ declare const ProfileCard: ({ uri, username, bodyLabel, body, button, containerStyle }: Props) => React.JSX.Element;
11
12
  export default ProfileCard;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  export type PromptItem = {
2
3
  title: string;
3
4
  placeholder?: string;
@@ -13,5 +14,5 @@ type Props = {
13
14
  onDismiss?: () => void;
14
15
  autoFocus?: boolean;
15
16
  } & PromptItem;
16
- declare const Prompt: ({ onDismiss, visible, onHide, autoFocus, title, defaultValue, placeholder, onSubmit, onCancel, submitLabel, cancelLabel, }: Props) => JSX.Element;
17
+ declare const Prompt: ({ onDismiss, visible, onHide, autoFocus, title, defaultValue, placeholder, onSubmit, onCancel, submitLabel, cancelLabel, }: Props) => React.JSX.Element;
17
18
  export default Prompt;
@@ -10,9 +10,9 @@ type Props = React.PropsWithChildren<{
10
10
  type: ToastType;
11
11
  children: string;
12
12
  }>;
13
- declare const Toast: ({ visible, type, children, top, bottom }: Props) => JSX.Element;
13
+ declare const Toast: ({ visible, type, children, top, bottom }: Props) => React.JSX.Element;
14
14
  export declare const ToastProvider: ({ children, dismissTimeout, }: React.PropsWithChildren<{
15
15
  dismissTimeout?: number | undefined;
16
- }>) => JSX.Element;
16
+ }>) => React.JSX.Element;
17
17
  export declare const useToast: () => Context;
18
18
  export default Toast;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendbird/uikit-react-native-foundation",
3
- "version": "3.1.1",
3
+ "version": "3.2.0",
4
4
  "description": "A foundational UI kit for building chat-enabled React Native apps.",
5
5
  "keywords": [
6
6
  "sendbird",
@@ -29,6 +29,7 @@
29
29
  "build": "bob build",
30
30
  "clean": "del lib",
31
31
  "publish:next": "npm publish --tag next",
32
+ "publish:local": "yalc publish",
32
33
  "generate-icons": "node src/assets/bundle-icons.js"
33
34
  },
34
35
  "repository": {
@@ -47,7 +48,7 @@
47
48
  "access": "public"
48
49
  },
49
50
  "dependencies": {
50
- "@sendbird/uikit-utils": "3.1.1"
51
+ "@sendbird/uikit-utils": "3.2.0"
51
52
  },
52
53
  "devDependencies": {
53
54
  "@types/react": "*",
@@ -57,7 +58,7 @@
57
58
  "react-native-builder-bob": "^0.18.0",
58
59
  "react-native-fast-image": "^8.5.11",
59
60
  "react-native-safe-area-context": "^3.3.2",
60
- "typescript": "4.9.4"
61
+ "typescript": "5.2.2"
61
62
  },
62
63
  "peerDependencies": {
63
64
  "react": ">=17.0.2",
@@ -84,10 +85,5 @@
84
85
  ]
85
86
  ]
86
87
  },
87
- "typedoc": {
88
- "entryPoint": "./src/index.ts",
89
- "readmeFile": "./README.md",
90
- "displayName": "@sendbird/uikit-react-native-foundation"
91
- },
92
- "gitHead": "cc1e2d626a4a3278e80d523b4c63fd3719c82441"
88
+ "gitHead": "dd029581f658a7970b14932df21d45a265694893"
93
89
  }
Binary file
Binary file
Binary file
Binary file
@@ -4,6 +4,10 @@ const IconAssets = {
4
4
  'add': require('./icon-add.png'),
5
5
  'archive': require('./icon-archive.png'),
6
6
  'arrow-left': require('./icon-arrow-left.png'),
7
+ 'audio-off-filled': require('./icon-audio-off-filled.png'),
8
+ 'audio-off': require('./icon-audio-off.png'),
9
+ 'audio-on-filled': require('./icon-audio-on-filled.png'),
10
+ 'audio-on': require('./icon-audio-on.png'),
7
11
  'ban': require('./icon-ban.png'),
8
12
  'broadcast': require('./icon-broadcast.png'),
9
13
  'camera': require('./icon-camera.png'),
@@ -40,12 +44,14 @@ const IconAssets = {
40
44
  'notifications-off-filled': require('./icon-notifications-off-filled.png'),
41
45
  'notifications': require('./icon-notifications.png'),
42
46
  'operator': require('./icon-operator.png'),
47
+ 'pause': require('./icon-pause.png'),
43
48
  'photo': require('./icon-photo.png'),
44
49
  'play': require('./icon-play.png'),
45
50
  'plus': require('./icon-plus.png'),
46
51
  'question': require('./icon-question.png'),
47
52
  'radio-off': require('./icon-radio-off.png'),
48
53
  'radio-on': require('./icon-radio-on.png'),
54
+ 'recording': require('./icon-recording.png'),
49
55
  'refresh': require('./icon-refresh.png'),
50
56
  'remove': require('./icon-remove.png'),
51
57
  'reply-filled': require('./icon-reply-filled.png'),
@@ -54,6 +60,7 @@ const IconAssets = {
54
60
  'send': require('./icon-send.png'),
55
61
  'settings-filled': require('./icon-settings-filled.png'),
56
62
  'spinner': require('./icon-spinner.png'),
63
+ 'stop': require('./icon-stop.png'),
57
64
  'streaming': require('./icon-streaming.png'),
58
65
  'supergroup': require('./icon-supergroup.png'),
59
66
  'theme': require('./icon-theme.png'),
@@ -45,7 +45,7 @@ const Box = ({ style, children, ...props }: BoxProps) => {
45
45
  const boxStyle = useBoxStyle(props);
46
46
 
47
47
  return (
48
- <View style={[boxStyle, style]} {...props}>
48
+ <View {...props} style={[boxStyle, style]}>
49
49
  {children}
50
50
  </View>
51
51
  );
@@ -17,10 +17,8 @@ type Props = {
17
17
  style?: StyleProp<ImageStyle>;
18
18
  containerStyle?: StyleProp<ViewStyle>;
19
19
  };
20
- const Icon: ((props: Props) => JSX.Element) & {
21
- Assets: typeof IconAssets;
22
- File: typeof FileIcon;
23
- } = ({ icon, color, size = 24, containerStyle, style }) => {
20
+
21
+ const Icon = ({ icon, color, size = 24, containerStyle, style }: Props) => {
24
22
  const sizeStyle = sizeStyles[size as SizeFactor] ?? { width: size, height: size };
25
23
  const { colors } = useUIKitTheme();
26
24
  return (
@@ -68,6 +66,7 @@ const sizeStyles = createStyleSheet({
68
66
  },
69
67
  });
70
68
 
71
- Icon.Assets = IconAssets;
72
- Icon.File = FileIcon;
73
- export default Icon;
69
+ export default Object.assign(Icon, {
70
+ Assets: IconAssets,
71
+ File: FileIcon,
72
+ });
@@ -1,9 +1,10 @@
1
+ import type { ReactNode } from 'react';
1
2
  import type { FastImageProps } from 'react-native-fast-image';
2
3
 
3
- let FastImageInternal: (props: FastImageProps) => JSX.Element | null = () => null;
4
+ let FastImageInternal: (props: FastImageProps) => ReactNode | null = () => null;
4
5
 
5
6
  try {
6
- FastImageInternal = require('react-native-fast-image') as (props: FastImageProps) => JSX.Element;
7
+ FastImageInternal = require('react-native-fast-image') as (props: FastImageProps) => ReactNode;
7
8
  } catch {}
8
9
 
9
10
  export default FastImageInternal;
@@ -1,3 +1,4 @@
1
+ import { ReactNode } from 'react';
1
2
  import type { ImageProps as NativeImageProps } from 'react-native';
2
3
  import { NativeModules } from 'react-native';
3
4
 
@@ -7,7 +8,7 @@ export interface SendbirdImageProps extends Omit<NativeImageProps, 'onLoad' | 'o
7
8
  tintColor?: string;
8
9
  }
9
10
 
10
- export type SendbirdImageComponent = (props: SendbirdImageProps) => JSX.Element;
11
+ export type SendbirdImageComponent = (props: SendbirdImageProps) => ReactNode;
11
12
 
12
13
  function getImageModule(): SendbirdImageComponent {
13
14
  const hasFastImage = Boolean(NativeModules.FastImageView);
@@ -86,7 +86,7 @@ const Modal = ({
86
86
  <KeyboardAvoidingView
87
87
  // NOTE: This is trick for Android.
88
88
  // When orientation is changed on Android, the offset that to avoid soft-keyboard is not updated normally.
89
- key={`${width}-${height}`}
89
+ key={Platform.OS === 'android' && enableKeyboardAvoid ? `${width}-${height}` : undefined}
90
90
  enabled={enableKeyboardAvoid}
91
91
  style={styles.background}
92
92
  behavior={Platform.select({ ios: 'padding', default: 'height' })}
@@ -10,6 +10,7 @@ type PressBoxStateParams = {
10
10
  };
11
11
 
12
12
  type Props = {
13
+ disabled?: boolean;
13
14
  onPress?: (event: GestureResponderEvent) => void;
14
15
  onLongPress?: (event: GestureResponderEvent) => void;
15
16
  delayLongPress?: number;
@@ -0,0 +1,72 @@
1
+ import React, { ReactNode, useEffect, useRef } from 'react';
2
+ import { Animated, Easing, StyleSheet, ViewStyle } from 'react-native';
3
+
4
+ import { NOOP } from '@sendbird/uikit-utils';
5
+
6
+ import useUIKitTheme from '../../theme/useUIKitTheme';
7
+ import Box from '../Box';
8
+
9
+ type Props = {
10
+ current: number;
11
+ total: number;
12
+ trackColor?: string;
13
+ barColor?: string;
14
+ overlay?: ReactNode | undefined;
15
+ style?: ViewStyle;
16
+ };
17
+ const ProgressBar = ({ current = 100, total = 100, trackColor, barColor, overlay, style }: Props) => {
18
+ const { colors } = useUIKitTheme();
19
+
20
+ const uiColors = {
21
+ track: trackColor ?? colors.primary,
22
+ bar: barColor ?? colors.onBackground01,
23
+ };
24
+
25
+ const progress = useRef(new Animated.Value(0)).current;
26
+ const percent = current / total;
27
+ const stopped = percent === 0;
28
+
29
+ useEffect(() => {
30
+ if (!Number.isNaN(percent)) {
31
+ const animation = Animated.timing(progress, {
32
+ toValue: stopped ? 0 : percent,
33
+ duration: stopped ? 0 : 100,
34
+ useNativeDriver: false,
35
+ easing: Easing.linear,
36
+ });
37
+
38
+ animation.start();
39
+ return () => animation.stop();
40
+ }
41
+
42
+ return NOOP;
43
+ }, [percent]);
44
+
45
+ return (
46
+ <Box
47
+ height={36}
48
+ flexDirection={'row'}
49
+ backgroundColor={uiColors.track}
50
+ alignItems={'center'}
51
+ overflow={'hidden'}
52
+ style={style}
53
+ >
54
+ <Animated.View
55
+ style={{
56
+ position: 'absolute',
57
+ width: progress.interpolate({
58
+ inputRange: [0, 1],
59
+ outputRange: ['0%', '100%'],
60
+ extrapolate: 'clamp',
61
+ }),
62
+ height: '100%',
63
+ opacity: 0.38,
64
+ backgroundColor: uiColors.bar,
65
+ }}
66
+ />
67
+ <Box style={StyleSheet.absoluteFill}>{overlay}</Box>
68
+ </Box>
69
+ );
70
+ };
71
+
72
+ export default ProgressBar;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
 
3
3
  import { replaceWithRegex } from '@sendbird/uikit-utils';
4
4
 
@@ -12,7 +12,7 @@ export interface RegexTextPattern {
12
12
  index: number;
13
13
  keyPrefix: string;
14
14
  parentProps?: TextProps;
15
- }): string | JSX.Element;
15
+ }): string | ReactNode;
16
16
  }
17
17
 
18
18
  type Props = { patterns: RegexTextPattern[] } & TextProps;
@@ -20,7 +20,7 @@ type Props = { patterns: RegexTextPattern[] } & TextProps;
20
20
  const RegexText = ({ children, patterns, ...props }: Props) => {
21
21
  if (patterns.length === 0 || typeof children !== 'string') return <>{children}</>;
22
22
 
23
- const matchedTexts: Array<string | JSX.Element> = [children];
23
+ const matchedTexts: Array<string | ReactNode> = [children];
24
24
 
25
25
  patterns.forEach(({ regex, replacer }, patterIndex) => {
26
26
  const matchedTextsTemp = matchedTexts.concat();
package/src/index.ts CHANGED
@@ -9,6 +9,7 @@ export { default as Image } from './components/Image';
9
9
  export { default as ImageWithPlaceholder } from './components/ImageWithPlaceholder';
10
10
  export { default as Modal } from './components/Modal';
11
11
  export { default as PressBox } from './components/PressBox';
12
+ export { default as ProgressBar } from './components/ProgressBar';
12
13
  export { default as RegexText } from './components/RegexText';
13
14
  export type { RegexTextPattern } from './components/RegexText';
14
15
  export { default as Switch } from './components/Switch';
@@ -6,7 +6,7 @@ import type { HeaderProps } from '../ui/Header';
6
6
  import getDefaultHeaderHeight from './getDefaultHeaderHeight';
7
7
 
8
8
  export type HeaderStyleContextType = {
9
- HeaderComponent: (props: HeaderProps) => React.ReactElement | null;
9
+ HeaderComponent: (props: HeaderProps) => React.ReactNode | null;
10
10
  defaultTitleAlign: 'left' | 'center';
11
11
  statusBarTranslucent: boolean;
12
12
  topInset: number;
@@ -10,9 +10,9 @@ const createScaleFactor = (deviceWidth = DESIGNED_DEVICE_WIDTH) => {
10
10
  return (dp: number) => PixelRatio.roundToNearestPixel(dp * rangedRatio);
11
11
  };
12
12
 
13
- createScaleFactor.updateScaleFactor = (scaleFactor: (dp: number) => number) => {
14
- DEFAULT_SCALE_FACTOR = scaleFactor;
15
- };
16
-
17
13
  export let DEFAULT_SCALE_FACTOR = createScaleFactor();
18
- export default createScaleFactor;
14
+ export default Object.assign(createScaleFactor, {
15
+ updateScaleFactor: (scaleFactor: (dp: number) => number) => {
16
+ DEFAULT_SCALE_FACTOR = scaleFactor;
17
+ },
18
+ });
@@ -3,41 +3,6 @@ import createTheme from './createTheme';
3
3
  const DarkUIKitTheme = createTheme({
4
4
  colorScheme: 'dark',
5
5
  colors: (palette) => {
6
- const groupChannelMessage = {
7
- incoming: {
8
- enabled: {
9
- textMsg: palette.onBackgroundDark01,
10
- textEdited: palette.onBackgroundDark02,
11
- textTime: palette.onBackgroundDark03,
12
- textSenderName: palette.onBackgroundDark02,
13
- background: palette.background400,
14
- },
15
- pressed: {
16
- textMsg: palette.onBackgroundDark01,
17
- textEdited: palette.onBackgroundDark02,
18
- textTime: palette.onBackgroundDark03,
19
- textSenderName: palette.onBackgroundDark02,
20
- background: palette.primary500,
21
- },
22
- },
23
- outgoing: {
24
- enabled: {
25
- textMsg: palette.onBackgroundLight01,
26
- textEdited: palette.onBackgroundLight02,
27
- textTime: palette.onBackgroundDark03,
28
- textSenderName: palette.transparent,
29
- background: palette.primary200,
30
- },
31
- pressed: {
32
- textMsg: palette.onBackgroundLight01,
33
- textEdited: palette.onBackgroundLight02,
34
- textTime: palette.onBackgroundDark03,
35
- textSenderName: palette.transparent,
36
- background: palette.primary300,
37
- },
38
- },
39
- };
40
-
41
6
  return {
42
7
  primary: palette.primary200,
43
8
  secondary: palette.secondary200,
@@ -149,7 +114,6 @@ const DarkUIKitTheme = createTheme({
149
114
  },
150
115
  },
151
116
  },
152
- message: groupChannelMessage,
153
117
  dateSeparator: {
154
118
  default: {
155
119
  none: {
@@ -158,7 +122,60 @@ const DarkUIKitTheme = createTheme({
158
122
  },
159
123
  },
160
124
  },
161
- groupChannelMessage,
125
+ groupChannelMessage: {
126
+ incoming: {
127
+ enabled: {
128
+ textMsg: palette.onBackgroundDark01,
129
+ textEdited: palette.onBackgroundDark02,
130
+ textTime: palette.onBackgroundDark03,
131
+ textSenderName: palette.onBackgroundDark02,
132
+ background: palette.background400,
133
+ textVoicePlaytime: palette.onBackgroundDark01,
134
+ voiceSpinner: palette.primary200,
135
+ voiceProgressTrack: palette.background400,
136
+ voiceActionIcon: palette.primary200,
137
+ voiceActionIconBackground: palette.background700,
138
+ },
139
+ pressed: {
140
+ textMsg: palette.onBackgroundDark01,
141
+ textEdited: palette.onBackgroundDark02,
142
+ textTime: palette.onBackgroundDark03,
143
+ textSenderName: palette.onBackgroundDark02,
144
+ background: palette.primary500,
145
+ textVoicePlaytime: palette.onBackgroundDark01,
146
+ voiceSpinner: palette.primary200,
147
+ voiceProgressTrack: palette.background400,
148
+ voiceActionIcon: palette.primary200,
149
+ voiceActionIconBackground: palette.background700,
150
+ },
151
+ },
152
+ outgoing: {
153
+ enabled: {
154
+ textMsg: palette.onBackgroundLight01,
155
+ textEdited: palette.onBackgroundLight02,
156
+ textTime: palette.onBackgroundDark03,
157
+ textSenderName: palette.transparent,
158
+ background: palette.primary200,
159
+ textVoicePlaytime: palette.onBackgroundLight01,
160
+ voiceSpinner: palette.primary300,
161
+ voiceProgressTrack: palette.primary200,
162
+ voiceActionIcon: palette.primary200,
163
+ voiceActionIconBackground: palette.background700,
164
+ },
165
+ pressed: {
166
+ textMsg: palette.onBackgroundLight01,
167
+ textEdited: palette.onBackgroundLight02,
168
+ textTime: palette.onBackgroundDark03,
169
+ textSenderName: palette.transparent,
170
+ background: palette.primary300,
171
+ textVoicePlaytime: palette.onBackgroundLight01,
172
+ voiceSpinner: palette.primary300,
173
+ voiceProgressTrack: palette.primary200,
174
+ voiceActionIcon: palette.primary200,
175
+ voiceActionIconBackground: palette.background700,
176
+ },
177
+ },
178
+ },
162
179
  groupChannelPreview: {
163
180
  default: {
164
181
  none: {
@@ -243,6 +260,32 @@ const DarkUIKitTheme = createTheme({
243
260
  },
244
261
  },
245
262
  },
263
+ voiceMessageInput: {
264
+ default: {
265
+ active: {
266
+ textCancel: palette.primary200,
267
+ textTime: palette.onBackgroundLight01,
268
+ background: palette.background600,
269
+ actionIcon: palette.onBackgroundDark01,
270
+ actionIconBackground: palette.background500,
271
+ sendIcon: palette.onBackgroundLight01,
272
+ sendIconBackground: palette.primary200,
273
+ progressTrack: palette.primary200,
274
+ recording: palette.error300,
275
+ },
276
+ inactive: {
277
+ textCancel: palette.primary200,
278
+ textTime: palette.onBackgroundDark03,
279
+ background: palette.background600,
280
+ actionIcon: palette.onBackgroundDark01,
281
+ actionIconBackground: palette.background500,
282
+ sendIcon: palette.onBackgroundDark04,
283
+ sendIconBackground: palette.background500,
284
+ progressTrack: palette.background400,
285
+ recording: palette.error200,
286
+ },
287
+ },
288
+ },
246
289
  },
247
290
  };
248
291
  },