@sendbird/uikit-react-native-foundation 1.0.1 → 1.0.2

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 (589) hide show
  1. package/lib/commonjs/assets/bundle-icons.js +33 -0
  2. package/lib/commonjs/assets/bundle-icons.js.map +1 -0
  3. package/lib/commonjs/assets/icon/ic-chat-hide.png +0 -0
  4. package/lib/commonjs/assets/icon/ic-chat-hide@2x.png +0 -0
  5. package/lib/commonjs/assets/icon/ic-chat-hide@3x.png +0 -0
  6. package/lib/commonjs/assets/icon/ic-chat-show.png +0 -0
  7. package/lib/commonjs/assets/icon/ic-chat-show@2x.png +0 -0
  8. package/lib/commonjs/assets/icon/ic-chat-show@3x.png +0 -0
  9. package/lib/commonjs/assets/icon/icon-add.png +0 -0
  10. package/lib/commonjs/assets/icon/icon-add@2x.png +0 -0
  11. package/lib/commonjs/assets/icon/icon-add@3x.png +0 -0
  12. package/lib/commonjs/assets/icon/icon-archive.png +0 -0
  13. package/lib/commonjs/assets/icon/icon-archive@2x.png +0 -0
  14. package/lib/commonjs/assets/icon/icon-archive@3x.png +0 -0
  15. package/lib/commonjs/assets/icon/icon-arrow-left.png +0 -0
  16. package/lib/commonjs/assets/icon/icon-arrow-left@2x.png +0 -0
  17. package/lib/commonjs/assets/icon/icon-arrow-left@3x.png +0 -0
  18. package/lib/commonjs/assets/icon/icon-ban.png +0 -0
  19. package/lib/commonjs/assets/icon/icon-ban@2x.png +0 -0
  20. package/lib/commonjs/assets/icon/icon-ban@3x.png +0 -0
  21. package/lib/commonjs/assets/icon/icon-broadcast.png +0 -0
  22. package/lib/commonjs/assets/icon/icon-broadcast@2x.png +0 -0
  23. package/lib/commonjs/assets/icon/icon-broadcast@3x.png +0 -0
  24. package/lib/commonjs/assets/icon/icon-camera.png +0 -0
  25. package/lib/commonjs/assets/icon/icon-camera@2x.png +0 -0
  26. package/lib/commonjs/assets/icon/icon-camera@3x.png +0 -0
  27. package/lib/commonjs/assets/icon/icon-channels.png +0 -0
  28. package/lib/commonjs/assets/icon/icon-channels@2x.png +0 -0
  29. package/lib/commonjs/assets/icon/icon-channels@3x.png +0 -0
  30. package/lib/commonjs/assets/icon/icon-chat-filled.png +0 -0
  31. package/lib/commonjs/assets/icon/icon-chat-filled@2x.png +0 -0
  32. package/lib/commonjs/assets/icon/icon-chat-filled@3x.png +0 -0
  33. package/lib/commonjs/assets/icon/icon-chat.png +0 -0
  34. package/lib/commonjs/assets/icon/icon-chat@2x.png +0 -0
  35. package/lib/commonjs/assets/icon/icon-chat@3x.png +0 -0
  36. package/lib/commonjs/assets/icon/icon-checkbox-off.png +0 -0
  37. package/lib/commonjs/assets/icon/icon-checkbox-off@2x.png +0 -0
  38. package/lib/commonjs/assets/icon/icon-checkbox-off@3x.png +0 -0
  39. package/lib/commonjs/assets/icon/icon-checkbox-on.png +0 -0
  40. package/lib/commonjs/assets/icon/icon-checkbox-on@2x.png +0 -0
  41. package/lib/commonjs/assets/icon/icon-checkbox-on@3x.png +0 -0
  42. package/lib/commonjs/assets/icon/icon-chevron-down.png +0 -0
  43. package/lib/commonjs/assets/icon/icon-chevron-down@2x.png +0 -0
  44. package/lib/commonjs/assets/icon/icon-chevron-down@3x.png +0 -0
  45. package/lib/commonjs/assets/icon/icon-chevron-right.png +0 -0
  46. package/lib/commonjs/assets/icon/icon-chevron-right@2x.png +0 -0
  47. package/lib/commonjs/assets/icon/icon-chevron-right@3x.png +0 -0
  48. package/lib/commonjs/assets/icon/icon-close.png +0 -0
  49. package/lib/commonjs/assets/icon/icon-close@2x.png +0 -0
  50. package/lib/commonjs/assets/icon/icon-close@3x.png +0 -0
  51. package/lib/commonjs/assets/icon/icon-copy.png +0 -0
  52. package/lib/commonjs/assets/icon/icon-copy@2x.png +0 -0
  53. package/lib/commonjs/assets/icon/icon-copy@3x.png +0 -0
  54. package/lib/commonjs/assets/icon/icon-create.png +0 -0
  55. package/lib/commonjs/assets/icon/icon-create@2x.png +0 -0
  56. package/lib/commonjs/assets/icon/icon-create@3x.png +0 -0
  57. package/lib/commonjs/assets/icon/icon-delete.png +0 -0
  58. package/lib/commonjs/assets/icon/icon-delete@2x.png +0 -0
  59. package/lib/commonjs/assets/icon/icon-delete@3x.png +0 -0
  60. package/lib/commonjs/assets/icon/icon-document.png +0 -0
  61. package/lib/commonjs/assets/icon/icon-document@2x.png +0 -0
  62. package/lib/commonjs/assets/icon/icon-document@3x.png +0 -0
  63. package/lib/commonjs/assets/icon/icon-done-all.png +0 -0
  64. package/lib/commonjs/assets/icon/icon-done-all@2x.png +0 -0
  65. package/lib/commonjs/assets/icon/icon-done-all@3x.png +0 -0
  66. package/lib/commonjs/assets/icon/icon-done.png +0 -0
  67. package/lib/commonjs/assets/icon/icon-done@2x.png +0 -0
  68. package/lib/commonjs/assets/icon/icon-done@3x.png +0 -0
  69. package/lib/commonjs/assets/icon/icon-download.png +0 -0
  70. package/lib/commonjs/assets/icon/icon-download@2x.png +0 -0
  71. package/lib/commonjs/assets/icon/icon-download@3x.png +0 -0
  72. package/lib/commonjs/assets/icon/icon-edit.png +0 -0
  73. package/lib/commonjs/assets/icon/icon-edit@2x.png +0 -0
  74. package/lib/commonjs/assets/icon/icon-edit@3x.png +0 -0
  75. package/lib/commonjs/assets/icon/icon-emoji-more.png +0 -0
  76. package/lib/commonjs/assets/icon/icon-emoji-more@2x.png +0 -0
  77. package/lib/commonjs/assets/icon/icon-emoji-more@3x.png +0 -0
  78. package/lib/commonjs/assets/icon/icon-error.png +0 -0
  79. package/lib/commonjs/assets/icon/icon-error@2x.png +0 -0
  80. package/lib/commonjs/assets/icon/icon-error@3x.png +0 -0
  81. package/lib/commonjs/assets/icon/icon-file-audio.png +0 -0
  82. package/lib/commonjs/assets/icon/icon-file-audio@2x.png +0 -0
  83. package/lib/commonjs/assets/icon/icon-file-audio@3x.png +0 -0
  84. package/lib/commonjs/assets/icon/icon-file-document.png +0 -0
  85. package/lib/commonjs/assets/icon/icon-file-document@2x.png +0 -0
  86. package/lib/commonjs/assets/icon/icon-file-document@3x.png +0 -0
  87. package/lib/commonjs/assets/icon/icon-freeze.png +0 -0
  88. package/lib/commonjs/assets/icon/icon-freeze@2x.png +0 -0
  89. package/lib/commonjs/assets/icon/icon-freeze@3x.png +0 -0
  90. package/lib/commonjs/assets/icon/icon-gif.png +0 -0
  91. package/lib/commonjs/assets/icon/icon-gif@2x.png +0 -0
  92. package/lib/commonjs/assets/icon/icon-gif@3x.png +0 -0
  93. package/lib/commonjs/assets/icon/icon-info.png +0 -0
  94. package/lib/commonjs/assets/icon/icon-info@2x.png +0 -0
  95. package/lib/commonjs/assets/icon/icon-info@3x.png +0 -0
  96. package/lib/commonjs/assets/icon/icon-leave.png +0 -0
  97. package/lib/commonjs/assets/icon/icon-leave@2x.png +0 -0
  98. package/lib/commonjs/assets/icon/icon-leave@3x.png +0 -0
  99. package/lib/commonjs/assets/icon/icon-members.png +0 -0
  100. package/lib/commonjs/assets/icon/icon-members@2x.png +0 -0
  101. package/lib/commonjs/assets/icon/icon-members@3x.png +0 -0
  102. package/lib/commonjs/assets/icon/icon-message.png +0 -0
  103. package/lib/commonjs/assets/icon/icon-message@2x.png +0 -0
  104. package/lib/commonjs/assets/icon/icon-message@3x.png +0 -0
  105. package/lib/commonjs/assets/icon/icon-moderations.png +0 -0
  106. package/lib/commonjs/assets/icon/icon-moderations@2x.png +0 -0
  107. package/lib/commonjs/assets/icon/icon-moderations@3x.png +0 -0
  108. package/lib/commonjs/assets/icon/icon-more.png +0 -0
  109. package/lib/commonjs/assets/icon/icon-more@2x.png +0 -0
  110. package/lib/commonjs/assets/icon/icon-more@3x.png +0 -0
  111. package/lib/commonjs/assets/icon/icon-mute.png +0 -0
  112. package/lib/commonjs/assets/icon/icon-mute@2x.png +0 -0
  113. package/lib/commonjs/assets/icon/icon-mute@3x.png +0 -0
  114. package/lib/commonjs/assets/icon/icon-notifications-filled.png +0 -0
  115. package/lib/commonjs/assets/icon/icon-notifications-filled@2x.png +0 -0
  116. package/lib/commonjs/assets/icon/icon-notifications-filled@3x.png +0 -0
  117. package/lib/commonjs/assets/icon/icon-notifications-off-filled.png +0 -0
  118. package/lib/commonjs/assets/icon/icon-notifications-off-filled@2x.png +0 -0
  119. package/lib/commonjs/assets/icon/icon-notifications-off-filled@3x.png +0 -0
  120. package/lib/commonjs/assets/icon/icon-notifications.png +0 -0
  121. package/lib/commonjs/assets/icon/icon-notifications@2x.png +0 -0
  122. package/lib/commonjs/assets/icon/icon-notifications@3x.png +0 -0
  123. package/lib/commonjs/assets/icon/icon-operator.png +0 -0
  124. package/lib/commonjs/assets/icon/icon-operator@2x.png +0 -0
  125. package/lib/commonjs/assets/icon/icon-operator@3x.png +0 -0
  126. package/lib/commonjs/assets/icon/icon-photo.png +0 -0
  127. package/lib/commonjs/assets/icon/icon-photo@2x.png +0 -0
  128. package/lib/commonjs/assets/icon/icon-photo@3x.png +0 -0
  129. package/lib/commonjs/assets/icon/icon-play.png +0 -0
  130. package/lib/commonjs/assets/icon/icon-play@2x.png +0 -0
  131. package/lib/commonjs/assets/icon/icon-play@3x.png +0 -0
  132. package/lib/commonjs/assets/icon/icon-plus.png +0 -0
  133. package/lib/commonjs/assets/icon/icon-plus@2x.png +0 -0
  134. package/lib/commonjs/assets/icon/icon-plus@3x.png +0 -0
  135. package/lib/commonjs/assets/icon/icon-question.png +0 -0
  136. package/lib/commonjs/assets/icon/icon-question@2x.png +0 -0
  137. package/lib/commonjs/assets/icon/icon-question@3x.png +0 -0
  138. package/lib/commonjs/assets/icon/icon-refresh.png +0 -0
  139. package/lib/commonjs/assets/icon/icon-refresh@2x.png +0 -0
  140. package/lib/commonjs/assets/icon/icon-refresh@3x.png +0 -0
  141. package/lib/commonjs/assets/icon/icon-remove.png +0 -0
  142. package/lib/commonjs/assets/icon/icon-remove@2x.png +0 -0
  143. package/lib/commonjs/assets/icon/icon-remove@3x.png +0 -0
  144. package/lib/commonjs/assets/icon/icon-reply-filled.png +0 -0
  145. package/lib/commonjs/assets/icon/icon-reply-filled@2x.png +0 -0
  146. package/lib/commonjs/assets/icon/icon-reply-filled@3x.png +0 -0
  147. package/lib/commonjs/assets/icon/icon-reply.png +0 -0
  148. package/lib/commonjs/assets/icon/icon-reply@2x.png +0 -0
  149. package/lib/commonjs/assets/icon/icon-reply@3x.png +0 -0
  150. package/lib/commonjs/assets/icon/icon-search.png +0 -0
  151. package/lib/commonjs/assets/icon/icon-search@2x.png +0 -0
  152. package/lib/commonjs/assets/icon/icon-search@3x.png +0 -0
  153. package/lib/commonjs/assets/icon/icon-send.png +0 -0
  154. package/lib/commonjs/assets/icon/icon-send@2x.png +0 -0
  155. package/lib/commonjs/assets/icon/icon-send@3x.png +0 -0
  156. package/lib/commonjs/assets/icon/icon-settings-filled.png +0 -0
  157. package/lib/commonjs/assets/icon/icon-settings-filled@2x.png +0 -0
  158. package/lib/commonjs/assets/icon/icon-settings-filled@3x.png +0 -0
  159. package/lib/commonjs/assets/icon/icon-spinner.png +0 -0
  160. package/lib/commonjs/assets/icon/icon-spinner@2x.png +0 -0
  161. package/lib/commonjs/assets/icon/icon-spinner@3x.png +0 -0
  162. package/lib/commonjs/assets/icon/icon-streaming.png +0 -0
  163. package/lib/commonjs/assets/icon/icon-streaming@2x.png +0 -0
  164. package/lib/commonjs/assets/icon/icon-streaming@3x.png +0 -0
  165. package/lib/commonjs/assets/icon/icon-supergroup.png +0 -0
  166. package/lib/commonjs/assets/icon/icon-supergroup@2x.png +0 -0
  167. package/lib/commonjs/assets/icon/icon-supergroup@3x.png +0 -0
  168. package/lib/commonjs/assets/icon/icon-theme.png +0 -0
  169. package/lib/commonjs/assets/icon/icon-theme@2x.png +0 -0
  170. package/lib/commonjs/assets/icon/icon-theme@3x.png +0 -0
  171. package/lib/commonjs/assets/icon/icon-thumbnail-none.png +0 -0
  172. package/lib/commonjs/assets/icon/icon-thumbnail-none@2x.png +0 -0
  173. package/lib/commonjs/assets/icon/icon-thumbnail-none@3x.png +0 -0
  174. package/lib/commonjs/assets/icon/icon-unarchive.png +0 -0
  175. package/lib/commonjs/assets/icon/icon-unarchive@2x.png +0 -0
  176. package/lib/commonjs/assets/icon/icon-unarchive@3x.png +0 -0
  177. package/lib/commonjs/assets/icon/icon-user.png +0 -0
  178. package/lib/commonjs/assets/icon/icon-user@2x.png +0 -0
  179. package/lib/commonjs/assets/icon/icon-user@3x.png +0 -0
  180. package/lib/commonjs/assets/icon/index.js +70 -0
  181. package/lib/commonjs/assets/icon/index.js.map +1 -0
  182. package/lib/commonjs/components/Image/Image.fastimage.js +87 -0
  183. package/lib/commonjs/components/Image/Image.fastimage.js.map +1 -0
  184. package/lib/commonjs/components/Image/Image.reactnative.js +35 -0
  185. package/lib/commonjs/components/Image/Image.reactnative.js.map +1 -0
  186. package/lib/commonjs/components/Image/index.js +27 -0
  187. package/lib/commonjs/components/Image/index.js.map +1 -0
  188. package/lib/commonjs/index.js +388 -0
  189. package/lib/commonjs/index.js.map +1 -0
  190. package/lib/commonjs/styles/HeaderStyleContext.js +46 -0
  191. package/lib/commonjs/styles/HeaderStyleContext.js.map +1 -0
  192. package/lib/commonjs/styles/createScaleFactor.js +31 -0
  193. package/lib/commonjs/styles/createScaleFactor.js.map +1 -0
  194. package/lib/commonjs/styles/createSelectByColorScheme.js +24 -0
  195. package/lib/commonjs/styles/createSelectByColorScheme.js.map +1 -0
  196. package/lib/commonjs/styles/createStyleSheet.js +62 -0
  197. package/lib/commonjs/styles/createStyleSheet.js.map +1 -0
  198. package/lib/commonjs/styles/createTypography.js +106 -0
  199. package/lib/commonjs/styles/createTypography.js.map +1 -0
  200. package/lib/commonjs/styles/getDefaultHeaderHeight.js +17 -0
  201. package/lib/commonjs/styles/getDefaultHeaderHeight.js.map +1 -0
  202. package/lib/commonjs/styles/useHeaderStyle.js +18 -0
  203. package/lib/commonjs/styles/useHeaderStyle.js.map +1 -0
  204. package/lib/commonjs/theme/DarkUIKitTheme.js +186 -0
  205. package/lib/commonjs/theme/DarkUIKitTheme.js.map +1 -0
  206. package/lib/commonjs/theme/LightUIKitTheme.js +186 -0
  207. package/lib/commonjs/theme/LightUIKitTheme.js.map +1 -0
  208. package/lib/commonjs/theme/Palette.js +47 -0
  209. package/lib/commonjs/theme/Palette.js.map +1 -0
  210. package/lib/commonjs/theme/UIKitThemeContext.js +16 -0
  211. package/lib/commonjs/theme/UIKitThemeContext.js.map +1 -0
  212. package/lib/commonjs/theme/UIKitThemeProvider.js +28 -0
  213. package/lib/commonjs/theme/UIKitThemeProvider.js.map +1 -0
  214. package/lib/commonjs/theme/createTheme.js +58 -0
  215. package/lib/commonjs/theme/createTheme.js.map +1 -0
  216. package/lib/commonjs/theme/useUIKitTheme.js +22 -0
  217. package/lib/commonjs/theme/useUIKitTheme.js.map +1 -0
  218. package/lib/commonjs/types.js +6 -0
  219. package/lib/commonjs/types.js.map +1 -0
  220. package/lib/commonjs/ui/ActionMenu/index.js +131 -0
  221. package/lib/commonjs/ui/ActionMenu/index.js.map +1 -0
  222. package/lib/commonjs/ui/Alert/index.js +122 -0
  223. package/lib/commonjs/ui/Alert/index.js.map +1 -0
  224. package/lib/commonjs/ui/Avatar/AvatarGroup.js +119 -0
  225. package/lib/commonjs/ui/Avatar/AvatarGroup.js.map +1 -0
  226. package/lib/commonjs/ui/Avatar/AvatarIcon.js +54 -0
  227. package/lib/commonjs/ui/Avatar/AvatarIcon.js.map +1 -0
  228. package/lib/commonjs/ui/Avatar/index.js +100 -0
  229. package/lib/commonjs/ui/Avatar/index.js.map +1 -0
  230. package/lib/commonjs/ui/Badge/index.js +77 -0
  231. package/lib/commonjs/ui/Badge/index.js.map +1 -0
  232. package/lib/commonjs/ui/BottomSheet/index.js +80 -0
  233. package/lib/commonjs/ui/BottomSheet/index.js.map +1 -0
  234. package/lib/commonjs/ui/Button/index.js +90 -0
  235. package/lib/commonjs/ui/Button/index.js.map +1 -0
  236. package/lib/commonjs/ui/ChannelFrozenBanner/index.js +51 -0
  237. package/lib/commonjs/ui/ChannelFrozenBanner/index.js.map +1 -0
  238. package/lib/commonjs/ui/Dialog/DialogBox.js +41 -0
  239. package/lib/commonjs/ui/Dialog/DialogBox.js.map +1 -0
  240. package/lib/commonjs/ui/Dialog/DialogSheet.js +86 -0
  241. package/lib/commonjs/ui/Dialog/DialogSheet.js.map +1 -0
  242. package/lib/commonjs/ui/Dialog/index.js +182 -0
  243. package/lib/commonjs/ui/Dialog/index.js.map +1 -0
  244. package/lib/commonjs/ui/Divider/index.js +49 -0
  245. package/lib/commonjs/ui/Divider/index.js.map +1 -0
  246. package/lib/commonjs/ui/GroupChannelPreview/index.js +210 -0
  247. package/lib/commonjs/ui/GroupChannelPreview/index.js.map +1 -0
  248. package/lib/commonjs/ui/Header/index.js +237 -0
  249. package/lib/commonjs/ui/Header/index.js.map +1 -0
  250. package/lib/commonjs/ui/Icon/index.js +78 -0
  251. package/lib/commonjs/ui/Icon/index.js.map +1 -0
  252. package/lib/commonjs/ui/LoadingSpinner/index.js +82 -0
  253. package/lib/commonjs/ui/LoadingSpinner/index.js.map +1 -0
  254. package/lib/commonjs/ui/MenuBar/index.js +88 -0
  255. package/lib/commonjs/ui/MenuBar/index.js.map +1 -0
  256. package/lib/commonjs/ui/Modal/index.js +214 -0
  257. package/lib/commonjs/ui/Modal/index.js.map +1 -0
  258. package/lib/commonjs/ui/Placeholder/index.js +82 -0
  259. package/lib/commonjs/ui/Placeholder/index.js.map +1 -0
  260. package/lib/commonjs/ui/Prompt/index.js +175 -0
  261. package/lib/commonjs/ui/Prompt/index.js.map +1 -0
  262. package/lib/commonjs/ui/Switch/index.js +125 -0
  263. package/lib/commonjs/ui/Switch/index.js.map +1 -0
  264. package/lib/commonjs/ui/Text/index.js +71 -0
  265. package/lib/commonjs/ui/Text/index.js.map +1 -0
  266. package/lib/commonjs/ui/TextInput/index.js +58 -0
  267. package/lib/commonjs/ui/TextInput/index.js.map +1 -0
  268. package/lib/commonjs/ui/Toast/index.js +183 -0
  269. package/lib/commonjs/ui/Toast/index.js.map +1 -0
  270. package/lib/commonjs/ui/URLParsedText/index.js +64 -0
  271. package/lib/commonjs/ui/URLParsedText/index.js.map +1 -0
  272. package/lib/module/assets/bundle-icons.js +31 -0
  273. package/lib/module/assets/bundle-icons.js.map +1 -0
  274. package/lib/module/assets/icon/ic-chat-hide.png +0 -0
  275. package/lib/module/assets/icon/ic-chat-hide@2x.png +0 -0
  276. package/lib/module/assets/icon/ic-chat-hide@3x.png +0 -0
  277. package/lib/module/assets/icon/ic-chat-show.png +0 -0
  278. package/lib/module/assets/icon/ic-chat-show@2x.png +0 -0
  279. package/lib/module/assets/icon/ic-chat-show@3x.png +0 -0
  280. package/lib/module/assets/icon/icon-add.png +0 -0
  281. package/lib/module/assets/icon/icon-add@2x.png +0 -0
  282. package/lib/module/assets/icon/icon-add@3x.png +0 -0
  283. package/lib/module/assets/icon/icon-archive.png +0 -0
  284. package/lib/module/assets/icon/icon-archive@2x.png +0 -0
  285. package/lib/module/assets/icon/icon-archive@3x.png +0 -0
  286. package/lib/module/assets/icon/icon-arrow-left.png +0 -0
  287. package/lib/module/assets/icon/icon-arrow-left@2x.png +0 -0
  288. package/lib/module/assets/icon/icon-arrow-left@3x.png +0 -0
  289. package/lib/module/assets/icon/icon-ban.png +0 -0
  290. package/lib/module/assets/icon/icon-ban@2x.png +0 -0
  291. package/lib/module/assets/icon/icon-ban@3x.png +0 -0
  292. package/lib/module/assets/icon/icon-broadcast.png +0 -0
  293. package/lib/module/assets/icon/icon-broadcast@2x.png +0 -0
  294. package/lib/module/assets/icon/icon-broadcast@3x.png +0 -0
  295. package/lib/module/assets/icon/icon-camera.png +0 -0
  296. package/lib/module/assets/icon/icon-camera@2x.png +0 -0
  297. package/lib/module/assets/icon/icon-camera@3x.png +0 -0
  298. package/lib/module/assets/icon/icon-channels.png +0 -0
  299. package/lib/module/assets/icon/icon-channels@2x.png +0 -0
  300. package/lib/module/assets/icon/icon-channels@3x.png +0 -0
  301. package/lib/module/assets/icon/icon-chat-filled.png +0 -0
  302. package/lib/module/assets/icon/icon-chat-filled@2x.png +0 -0
  303. package/lib/module/assets/icon/icon-chat-filled@3x.png +0 -0
  304. package/lib/module/assets/icon/icon-chat.png +0 -0
  305. package/lib/module/assets/icon/icon-chat@2x.png +0 -0
  306. package/lib/module/assets/icon/icon-chat@3x.png +0 -0
  307. package/lib/module/assets/icon/icon-checkbox-off.png +0 -0
  308. package/lib/module/assets/icon/icon-checkbox-off@2x.png +0 -0
  309. package/lib/module/assets/icon/icon-checkbox-off@3x.png +0 -0
  310. package/lib/module/assets/icon/icon-checkbox-on.png +0 -0
  311. package/lib/module/assets/icon/icon-checkbox-on@2x.png +0 -0
  312. package/lib/module/assets/icon/icon-checkbox-on@3x.png +0 -0
  313. package/lib/module/assets/icon/icon-chevron-down.png +0 -0
  314. package/lib/module/assets/icon/icon-chevron-down@2x.png +0 -0
  315. package/lib/module/assets/icon/icon-chevron-down@3x.png +0 -0
  316. package/lib/module/assets/icon/icon-chevron-right.png +0 -0
  317. package/lib/module/assets/icon/icon-chevron-right@2x.png +0 -0
  318. package/lib/module/assets/icon/icon-chevron-right@3x.png +0 -0
  319. package/lib/module/assets/icon/icon-close.png +0 -0
  320. package/lib/module/assets/icon/icon-close@2x.png +0 -0
  321. package/lib/module/assets/icon/icon-close@3x.png +0 -0
  322. package/lib/module/assets/icon/icon-copy.png +0 -0
  323. package/lib/module/assets/icon/icon-copy@2x.png +0 -0
  324. package/lib/module/assets/icon/icon-copy@3x.png +0 -0
  325. package/lib/module/assets/icon/icon-create.png +0 -0
  326. package/lib/module/assets/icon/icon-create@2x.png +0 -0
  327. package/lib/module/assets/icon/icon-create@3x.png +0 -0
  328. package/lib/module/assets/icon/icon-delete.png +0 -0
  329. package/lib/module/assets/icon/icon-delete@2x.png +0 -0
  330. package/lib/module/assets/icon/icon-delete@3x.png +0 -0
  331. package/lib/module/assets/icon/icon-document.png +0 -0
  332. package/lib/module/assets/icon/icon-document@2x.png +0 -0
  333. package/lib/module/assets/icon/icon-document@3x.png +0 -0
  334. package/lib/module/assets/icon/icon-done-all.png +0 -0
  335. package/lib/module/assets/icon/icon-done-all@2x.png +0 -0
  336. package/lib/module/assets/icon/icon-done-all@3x.png +0 -0
  337. package/lib/module/assets/icon/icon-done.png +0 -0
  338. package/lib/module/assets/icon/icon-done@2x.png +0 -0
  339. package/lib/module/assets/icon/icon-done@3x.png +0 -0
  340. package/lib/module/assets/icon/icon-download.png +0 -0
  341. package/lib/module/assets/icon/icon-download@2x.png +0 -0
  342. package/lib/module/assets/icon/icon-download@3x.png +0 -0
  343. package/lib/module/assets/icon/icon-edit.png +0 -0
  344. package/lib/module/assets/icon/icon-edit@2x.png +0 -0
  345. package/lib/module/assets/icon/icon-edit@3x.png +0 -0
  346. package/lib/module/assets/icon/icon-emoji-more.png +0 -0
  347. package/lib/module/assets/icon/icon-emoji-more@2x.png +0 -0
  348. package/lib/module/assets/icon/icon-emoji-more@3x.png +0 -0
  349. package/lib/module/assets/icon/icon-error.png +0 -0
  350. package/lib/module/assets/icon/icon-error@2x.png +0 -0
  351. package/lib/module/assets/icon/icon-error@3x.png +0 -0
  352. package/lib/module/assets/icon/icon-file-audio.png +0 -0
  353. package/lib/module/assets/icon/icon-file-audio@2x.png +0 -0
  354. package/lib/module/assets/icon/icon-file-audio@3x.png +0 -0
  355. package/lib/module/assets/icon/icon-file-document.png +0 -0
  356. package/lib/module/assets/icon/icon-file-document@2x.png +0 -0
  357. package/lib/module/assets/icon/icon-file-document@3x.png +0 -0
  358. package/lib/module/assets/icon/icon-freeze.png +0 -0
  359. package/lib/module/assets/icon/icon-freeze@2x.png +0 -0
  360. package/lib/module/assets/icon/icon-freeze@3x.png +0 -0
  361. package/lib/module/assets/icon/icon-gif.png +0 -0
  362. package/lib/module/assets/icon/icon-gif@2x.png +0 -0
  363. package/lib/module/assets/icon/icon-gif@3x.png +0 -0
  364. package/lib/module/assets/icon/icon-info.png +0 -0
  365. package/lib/module/assets/icon/icon-info@2x.png +0 -0
  366. package/lib/module/assets/icon/icon-info@3x.png +0 -0
  367. package/lib/module/assets/icon/icon-leave.png +0 -0
  368. package/lib/module/assets/icon/icon-leave@2x.png +0 -0
  369. package/lib/module/assets/icon/icon-leave@3x.png +0 -0
  370. package/lib/module/assets/icon/icon-members.png +0 -0
  371. package/lib/module/assets/icon/icon-members@2x.png +0 -0
  372. package/lib/module/assets/icon/icon-members@3x.png +0 -0
  373. package/lib/module/assets/icon/icon-message.png +0 -0
  374. package/lib/module/assets/icon/icon-message@2x.png +0 -0
  375. package/lib/module/assets/icon/icon-message@3x.png +0 -0
  376. package/lib/module/assets/icon/icon-moderations.png +0 -0
  377. package/lib/module/assets/icon/icon-moderations@2x.png +0 -0
  378. package/lib/module/assets/icon/icon-moderations@3x.png +0 -0
  379. package/lib/module/assets/icon/icon-more.png +0 -0
  380. package/lib/module/assets/icon/icon-more@2x.png +0 -0
  381. package/lib/module/assets/icon/icon-more@3x.png +0 -0
  382. package/lib/module/assets/icon/icon-mute.png +0 -0
  383. package/lib/module/assets/icon/icon-mute@2x.png +0 -0
  384. package/lib/module/assets/icon/icon-mute@3x.png +0 -0
  385. package/lib/module/assets/icon/icon-notifications-filled.png +0 -0
  386. package/lib/module/assets/icon/icon-notifications-filled@2x.png +0 -0
  387. package/lib/module/assets/icon/icon-notifications-filled@3x.png +0 -0
  388. package/lib/module/assets/icon/icon-notifications-off-filled.png +0 -0
  389. package/lib/module/assets/icon/icon-notifications-off-filled@2x.png +0 -0
  390. package/lib/module/assets/icon/icon-notifications-off-filled@3x.png +0 -0
  391. package/lib/module/assets/icon/icon-notifications.png +0 -0
  392. package/lib/module/assets/icon/icon-notifications@2x.png +0 -0
  393. package/lib/module/assets/icon/icon-notifications@3x.png +0 -0
  394. package/lib/module/assets/icon/icon-operator.png +0 -0
  395. package/lib/module/assets/icon/icon-operator@2x.png +0 -0
  396. package/lib/module/assets/icon/icon-operator@3x.png +0 -0
  397. package/lib/module/assets/icon/icon-photo.png +0 -0
  398. package/lib/module/assets/icon/icon-photo@2x.png +0 -0
  399. package/lib/module/assets/icon/icon-photo@3x.png +0 -0
  400. package/lib/module/assets/icon/icon-play.png +0 -0
  401. package/lib/module/assets/icon/icon-play@2x.png +0 -0
  402. package/lib/module/assets/icon/icon-play@3x.png +0 -0
  403. package/lib/module/assets/icon/icon-plus.png +0 -0
  404. package/lib/module/assets/icon/icon-plus@2x.png +0 -0
  405. package/lib/module/assets/icon/icon-plus@3x.png +0 -0
  406. package/lib/module/assets/icon/icon-question.png +0 -0
  407. package/lib/module/assets/icon/icon-question@2x.png +0 -0
  408. package/lib/module/assets/icon/icon-question@3x.png +0 -0
  409. package/lib/module/assets/icon/icon-refresh.png +0 -0
  410. package/lib/module/assets/icon/icon-refresh@2x.png +0 -0
  411. package/lib/module/assets/icon/icon-refresh@3x.png +0 -0
  412. package/lib/module/assets/icon/icon-remove.png +0 -0
  413. package/lib/module/assets/icon/icon-remove@2x.png +0 -0
  414. package/lib/module/assets/icon/icon-remove@3x.png +0 -0
  415. package/lib/module/assets/icon/icon-reply-filled.png +0 -0
  416. package/lib/module/assets/icon/icon-reply-filled@2x.png +0 -0
  417. package/lib/module/assets/icon/icon-reply-filled@3x.png +0 -0
  418. package/lib/module/assets/icon/icon-reply.png +0 -0
  419. package/lib/module/assets/icon/icon-reply@2x.png +0 -0
  420. package/lib/module/assets/icon/icon-reply@3x.png +0 -0
  421. package/lib/module/assets/icon/icon-search.png +0 -0
  422. package/lib/module/assets/icon/icon-search@2x.png +0 -0
  423. package/lib/module/assets/icon/icon-search@3x.png +0 -0
  424. package/lib/module/assets/icon/icon-send.png +0 -0
  425. package/lib/module/assets/icon/icon-send@2x.png +0 -0
  426. package/lib/module/assets/icon/icon-send@3x.png +0 -0
  427. package/lib/module/assets/icon/icon-settings-filled.png +0 -0
  428. package/lib/module/assets/icon/icon-settings-filled@2x.png +0 -0
  429. package/lib/module/assets/icon/icon-settings-filled@3x.png +0 -0
  430. package/lib/module/assets/icon/icon-spinner.png +0 -0
  431. package/lib/module/assets/icon/icon-spinner@2x.png +0 -0
  432. package/lib/module/assets/icon/icon-spinner@3x.png +0 -0
  433. package/lib/module/assets/icon/icon-streaming.png +0 -0
  434. package/lib/module/assets/icon/icon-streaming@2x.png +0 -0
  435. package/lib/module/assets/icon/icon-streaming@3x.png +0 -0
  436. package/lib/module/assets/icon/icon-supergroup.png +0 -0
  437. package/lib/module/assets/icon/icon-supergroup@2x.png +0 -0
  438. package/lib/module/assets/icon/icon-supergroup@3x.png +0 -0
  439. package/lib/module/assets/icon/icon-theme.png +0 -0
  440. package/lib/module/assets/icon/icon-theme@2x.png +0 -0
  441. package/lib/module/assets/icon/icon-theme@3x.png +0 -0
  442. package/lib/module/assets/icon/icon-thumbnail-none.png +0 -0
  443. package/lib/module/assets/icon/icon-thumbnail-none@2x.png +0 -0
  444. package/lib/module/assets/icon/icon-thumbnail-none@3x.png +0 -0
  445. package/lib/module/assets/icon/icon-unarchive.png +0 -0
  446. package/lib/module/assets/icon/icon-unarchive@2x.png +0 -0
  447. package/lib/module/assets/icon/icon-unarchive@3x.png +0 -0
  448. package/lib/module/assets/icon/icon-user.png +0 -0
  449. package/lib/module/assets/icon/icon-user@2x.png +0 -0
  450. package/lib/module/assets/icon/icon-user@3x.png +0 -0
  451. package/lib/module/assets/icon/index.js +63 -0
  452. package/lib/module/assets/icon/index.js.map +1 -0
  453. package/lib/module/components/Image/Image.fastimage.js +77 -0
  454. package/lib/module/components/Image/Image.fastimage.js.map +1 -0
  455. package/lib/module/components/Image/Image.reactnative.js +24 -0
  456. package/lib/module/components/Image/Image.reactnative.js.map +1 -0
  457. package/lib/module/components/Image/index.js +18 -0
  458. package/lib/module/components/Image/index.js.map +1 -0
  459. package/lib/module/index.js +49 -0
  460. package/lib/module/index.js.map +1 -0
  461. package/lib/module/styles/HeaderStyleContext.js +29 -0
  462. package/lib/module/styles/HeaderStyleContext.js.map +1 -0
  463. package/lib/module/styles/createScaleFactor.js +20 -0
  464. package/lib/module/styles/createScaleFactor.js.map +1 -0
  465. package/lib/module/styles/createSelectByColorScheme.js +16 -0
  466. package/lib/module/styles/createSelectByColorScheme.js.map +1 -0
  467. package/lib/module/styles/createStyleSheet.js +53 -0
  468. package/lib/module/styles/createStyleSheet.js.map +1 -0
  469. package/lib/module/styles/createTypography.js +98 -0
  470. package/lib/module/styles/createTypography.js.map +1 -0
  471. package/lib/module/styles/getDefaultHeaderHeight.js +10 -0
  472. package/lib/module/styles/getDefaultHeaderHeight.js.map +1 -0
  473. package/lib/module/styles/useHeaderStyle.js +9 -0
  474. package/lib/module/styles/useHeaderStyle.js.map +1 -0
  475. package/lib/module/theme/DarkUIKitTheme.js +175 -0
  476. package/lib/module/theme/DarkUIKitTheme.js.map +1 -0
  477. package/lib/module/theme/LightUIKitTheme.js +175 -0
  478. package/lib/module/theme/LightUIKitTheme.js.map +1 -0
  479. package/lib/module/theme/Palette.js +40 -0
  480. package/lib/module/theme/Palette.js.map +1 -0
  481. package/lib/module/theme/UIKitThemeContext.js +4 -0
  482. package/lib/module/theme/UIKitThemeContext.js.map +1 -0
  483. package/lib/module/theme/UIKitThemeProvider.js +16 -0
  484. package/lib/module/theme/UIKitThemeProvider.js.map +1 -0
  485. package/lib/module/theme/createTheme.js +46 -0
  486. package/lib/module/theme/createTheme.js.map +1 -0
  487. package/lib/module/theme/useUIKitTheme.js +11 -0
  488. package/lib/module/theme/useUIKitTheme.js.map +1 -0
  489. package/lib/module/types.js +2 -0
  490. package/lib/module/types.js.map +1 -0
  491. package/lib/module/ui/ActionMenu/index.js +108 -0
  492. package/lib/module/ui/ActionMenu/index.js.map +1 -0
  493. package/lib/module/ui/Alert/index.js +104 -0
  494. package/lib/module/ui/Alert/index.js.map +1 -0
  495. package/lib/module/ui/Avatar/AvatarGroup.js +104 -0
  496. package/lib/module/ui/Avatar/AvatarGroup.js.map +1 -0
  497. package/lib/module/ui/Avatar/AvatarIcon.js +40 -0
  498. package/lib/module/ui/Avatar/AvatarIcon.js.map +1 -0
  499. package/lib/module/ui/Avatar/index.js +78 -0
  500. package/lib/module/ui/Avatar/index.js.map +1 -0
  501. package/lib/module/ui/Badge/index.js +62 -0
  502. package/lib/module/ui/Badge/index.js.map +1 -0
  503. package/lib/module/ui/BottomSheet/index.js +65 -0
  504. package/lib/module/ui/BottomSheet/index.js.map +1 -0
  505. package/lib/module/ui/Button/index.js +75 -0
  506. package/lib/module/ui/Button/index.js.map +1 -0
  507. package/lib/module/ui/ChannelFrozenBanner/index.js +37 -0
  508. package/lib/module/ui/ChannelFrozenBanner/index.js.map +1 -0
  509. package/lib/module/ui/Dialog/DialogBox.js +28 -0
  510. package/lib/module/ui/Dialog/DialogBox.js.map +1 -0
  511. package/lib/module/ui/Dialog/DialogSheet.js +71 -0
  512. package/lib/module/ui/Dialog/DialogSheet.js.map +1 -0
  513. package/lib/module/ui/Dialog/index.js +144 -0
  514. package/lib/module/ui/Dialog/index.js.map +1 -0
  515. package/lib/module/ui/Divider/index.js +36 -0
  516. package/lib/module/ui/Divider/index.js.map +1 -0
  517. package/lib/module/ui/GroupChannelPreview/index.js +190 -0
  518. package/lib/module/ui/GroupChannelPreview/index.js.map +1 -0
  519. package/lib/module/ui/Header/index.js +218 -0
  520. package/lib/module/ui/Header/index.js.map +1 -0
  521. package/lib/module/ui/Icon/index.js +63 -0
  522. package/lib/module/ui/Icon/index.js.map +1 -0
  523. package/lib/module/ui/LoadingSpinner/index.js +64 -0
  524. package/lib/module/ui/LoadingSpinner/index.js.map +1 -0
  525. package/lib/module/ui/MenuBar/index.js +71 -0
  526. package/lib/module/ui/MenuBar/index.js.map +1 -0
  527. package/lib/module/ui/Modal/index.js +196 -0
  528. package/lib/module/ui/Modal/index.js.map +1 -0
  529. package/lib/module/ui/Placeholder/index.js +64 -0
  530. package/lib/module/ui/Placeholder/index.js.map +1 -0
  531. package/lib/module/ui/Prompt/index.js +151 -0
  532. package/lib/module/ui/Prompt/index.js.map +1 -0
  533. package/lib/module/ui/Switch/index.js +107 -0
  534. package/lib/module/ui/Switch/index.js.map +1 -0
  535. package/lib/module/ui/Text/index.js +59 -0
  536. package/lib/module/ui/Text/index.js.map +1 -0
  537. package/lib/module/ui/TextInput/index.js +43 -0
  538. package/lib/module/ui/TextInput/index.js.map +1 -0
  539. package/lib/module/ui/Toast/index.js +156 -0
  540. package/lib/module/ui/Toast/index.js.map +1 -0
  541. package/lib/module/ui/URLParsedText/index.js +45 -0
  542. package/lib/module/ui/URLParsedText/index.js.map +1 -0
  543. package/lib/typescript/src/assets/icon/index.d.ts +62 -0
  544. package/lib/typescript/src/components/Image/Image.fastimage.d.ts +3 -0
  545. package/lib/typescript/src/components/Image/Image.reactnative.d.ts +3 -0
  546. package/lib/typescript/src/components/Image/index.d.ts +14 -0
  547. package/lib/typescript/src/index.d.ts +45 -0
  548. package/lib/typescript/src/styles/HeaderStyleContext.d.ts +20 -0
  549. package/lib/typescript/src/styles/createScaleFactor.d.ts +6 -0
  550. package/lib/typescript/src/styles/createSelectByColorScheme.d.ts +9 -0
  551. package/lib/typescript/src/styles/createStyleSheet.d.ts +9 -0
  552. package/lib/typescript/src/styles/createTypography.d.ts +6 -0
  553. package/lib/typescript/src/styles/getDefaultHeaderHeight.d.ts +2 -0
  554. package/lib/typescript/src/styles/useHeaderStyle.d.ts +2 -0
  555. package/lib/typescript/src/theme/DarkUIKitTheme.d.ts +2 -0
  556. package/lib/typescript/src/theme/LightUIKitTheme.d.ts +2 -0
  557. package/lib/typescript/src/theme/Palette.d.ts +3 -0
  558. package/lib/typescript/src/theme/UIKitThemeContext.d.ts +4 -0
  559. package/lib/typescript/src/theme/UIKitThemeProvider.d.ts +7 -0
  560. package/lib/typescript/src/theme/createTheme.d.ts +10 -0
  561. package/lib/typescript/src/theme/useUIKitTheme.d.ts +3 -0
  562. package/lib/typescript/src/types.d.ts +167 -0
  563. package/lib/typescript/src/ui/ActionMenu/index.d.ts +16 -0
  564. package/lib/typescript/src/ui/Alert/index.d.ts +13 -0
  565. package/lib/typescript/src/ui/Avatar/AvatarGroup.d.ts +8 -0
  566. package/lib/typescript/src/ui/Avatar/AvatarIcon.d.ts +10 -0
  567. package/lib/typescript/src/ui/Avatar/index.d.ts +16 -0
  568. package/lib/typescript/src/ui/Badge/index.d.ts +11 -0
  569. package/lib/typescript/src/ui/BottomSheet/index.d.ts +18 -0
  570. package/lib/typescript/src/ui/Button/index.d.ts +14 -0
  571. package/lib/typescript/src/ui/ChannelFrozenBanner/index.d.ts +9 -0
  572. package/lib/typescript/src/ui/Dialog/DialogBox.d.ts +7 -0
  573. package/lib/typescript/src/ui/Dialog/DialogSheet.d.ts +17 -0
  574. package/lib/typescript/src/ui/Dialog/index.d.ts +46 -0
  575. package/lib/typescript/src/ui/Divider/index.d.ts +7 -0
  576. package/lib/typescript/src/ui/GroupChannelPreview/index.d.ts +17 -0
  577. package/lib/typescript/src/ui/Header/index.d.ts +25 -0
  578. package/lib/typescript/src/ui/Icon/index.d.ts +14 -0
  579. package/lib/typescript/src/ui/LoadingSpinner/index.d.ts +8 -0
  580. package/lib/typescript/src/ui/MenuBar/index.d.ts +15 -0
  581. package/lib/typescript/src/ui/Modal/index.d.ts +17 -0
  582. package/lib/typescript/src/ui/Placeholder/index.d.ts +10 -0
  583. package/lib/typescript/src/ui/Prompt/index.d.ts +17 -0
  584. package/lib/typescript/src/ui/Switch/index.d.ts +11 -0
  585. package/lib/typescript/src/ui/Text/index.d.ts +8 -0
  586. package/lib/typescript/src/ui/TextInput/index.d.ts +6 -0
  587. package/lib/typescript/src/ui/Toast/index.d.ts +18 -0
  588. package/lib/typescript/src/ui/URLParsedText/index.d.ts +8 -0
  589. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","Animated","Easing","useUIKitTheme","Icon","LoadingSpinner","size","color","style","colors","primary","useLoopAnimated","duration","useNativeDriver","animated","Value","current","loop","timing","toValue","easing","inOut","linear","resetBeforeIteration","start","stopAnimation","setValue","Rotate","children","rotate","interpolate","inputRange","outputRange","transform"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Animated, Easing, StyleProp, ViewStyle } from 'react-native';\n\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\n\ntype Props = {\n size?: number;\n color?: string;\n style?: StyleProp<ViewStyle>;\n};\n\nconst LoadingSpinner = ({ size = 24, color, style }: Props) => {\n const { colors } = useUIKitTheme();\n return (\n <Rotate style={style}>\n <Icon icon={'spinner'} size={size} color={color ?? colors.primary} />\n </Rotate>\n );\n};\n\nconst useLoopAnimated = (duration: number, useNativeDriver = true) => {\n const animated = useRef(new Animated.Value(0)).current;\n\n useEffect(() => {\n Animated.loop(\n Animated.timing(animated, { toValue: 1, duration, useNativeDriver, easing: Easing.inOut(Easing.linear) }),\n { resetBeforeIteration: true },\n ).start();\n\n return () => {\n animated.stopAnimation();\n animated.setValue(0);\n };\n }, []);\n\n return animated;\n};\n\nconst Rotate = ({ children, style }: React.PropsWithChildren<{ style: StyleProp<ViewStyle> }>) => {\n const loop = useLoopAnimated(1000);\n const rotate = loop.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] });\n return <Animated.View style={[style, { transform: [{ rotate }] }]}>{children}</Animated.View>;\n};\n\nexport default LoadingSpinner;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,MAA3B,QAAyC,OAAzC;AACA,SAASC,QAAT,EAAmBC,MAAnB,QAAuD,cAAvD;AAEA,OAAOC,aAAP,MAA0B,2BAA1B;AACA,OAAOC,IAAP,MAAiB,SAAjB;;AAQA,MAAMC,cAAc,GAAG,QAAwC;EAAA,IAAvC;IAAEC,IAAI,GAAG,EAAT;IAAaC,KAAb;IAAoBC;EAApB,CAAuC;EAC7D,MAAM;IAAEC;EAAF,IAAaN,aAAa,EAAhC;EACA,oBACE,oBAAC,MAAD;IAAQ,KAAK,EAAEK;EAAf,gBACE,oBAAC,IAAD;IAAM,IAAI,EAAE,SAAZ;IAAuB,IAAI,EAAEF,IAA7B;IAAmC,KAAK,EAAEC,KAAK,IAAIE,MAAM,CAACC;EAA1D,EADF,CADF;AAKD,CAPD;;AASA,MAAMC,eAAe,GAAG,UAACC,QAAD,EAA8C;EAAA,IAA3BC,eAA2B,uEAAT,IAAS;EACpE,MAAMC,QAAQ,GAAGd,MAAM,CAAC,IAAIC,QAAQ,CAACc,KAAb,CAAmB,CAAnB,CAAD,CAAN,CAA8BC,OAA/C;EAEAjB,SAAS,CAAC,MAAM;IACdE,QAAQ,CAACgB,IAAT,CACEhB,QAAQ,CAACiB,MAAT,CAAgBJ,QAAhB,EAA0B;MAAEK,OAAO,EAAE,CAAX;MAAcP,QAAd;MAAwBC,eAAxB;MAAyCO,MAAM,EAAElB,MAAM,CAACmB,KAAP,CAAanB,MAAM,CAACoB,MAApB;IAAjD,CAA1B,CADF,EAEE;MAAEC,oBAAoB,EAAE;IAAxB,CAFF,EAGEC,KAHF;IAKA,OAAO,MAAM;MACXV,QAAQ,CAACW,aAAT;MACAX,QAAQ,CAACY,QAAT,CAAkB,CAAlB;IACD,CAHD;EAID,CAVQ,EAUN,EAVM,CAAT;EAYA,OAAOZ,QAAP;AACD,CAhBD;;AAkBA,MAAMa,MAAM,GAAG,SAAmF;EAAA,IAAlF;IAAEC,QAAF;IAAYpB;EAAZ,CAAkF;EAChG,MAAMS,IAAI,GAAGN,eAAe,CAAC,IAAD,CAA5B;EACA,MAAMkB,MAAM,GAAGZ,IAAI,CAACa,WAAL,CAAiB;IAAEC,UAAU,EAAE,CAAC,CAAD,EAAI,CAAJ,CAAd;IAAsBC,WAAW,EAAE,CAAC,MAAD,EAAS,QAAT;EAAnC,CAAjB,CAAf;EACA,oBAAO,oBAAC,QAAD,CAAU,IAAV;IAAe,KAAK,EAAE,CAACxB,KAAD,EAAQ;MAAEyB,SAAS,EAAE,CAAC;QAAEJ;MAAF,CAAD;IAAb,CAAR;EAAtB,GAA6DD,QAA7D,CAAP;AACD,CAJD;;AAMA,eAAevB,cAAf"}
@@ -0,0 +1,71 @@
1
+ import React from 'react';
2
+ import { Pressable, View } from 'react-native';
3
+ import { conditionChaining } from '@sendbird/uikit-utils';
4
+ import createStyleSheet from '../../styles/createStyleSheet';
5
+ import useUIKitTheme from '../../theme/useUIKitTheme';
6
+ import Divider from '../Divider';
7
+ import Icon from '../Icon';
8
+ import Text from '../Text';
9
+
10
+ const MenuBar = _ref => {
11
+ let {
12
+ variant = 'default',
13
+ disabled,
14
+ onPress,
15
+ name,
16
+ icon,
17
+ iconColor,
18
+ iconBackgroundColor,
19
+ actionLabel,
20
+ actionItem = null
21
+ } = _ref;
22
+ const {
23
+ palette,
24
+ colors
25
+ } = useUIKitTheme();
26
+ return /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(Pressable, {
27
+ disabled: disabled,
28
+ onPress: onPress,
29
+ style: styles.container
30
+ }, icon && /*#__PURE__*/React.createElement(Icon, {
31
+ icon: icon,
32
+ size: variant === 'contained' ? 16 : 24,
33
+ color: conditionChaining([variant === 'contained', iconColor], [palette.background50, iconColor, colors.primary]),
34
+ containerStyle: [styles.icon, variant === 'contained' && styles.containedIcon, variant === 'contained' && {
35
+ backgroundColor: iconBackgroundColor ?? palette.background400
36
+ }]
37
+ }), /*#__PURE__*/React.createElement(Text, {
38
+ subtitle2: true,
39
+ numberOfLines: 1,
40
+ style: styles.name
41
+ }, name), Boolean(actionLabel) && /*#__PURE__*/React.createElement(Text, {
42
+ subtitle2: true,
43
+ numberOfLines: 1,
44
+ color: colors.onBackground02,
45
+ style: styles.actionLabel
46
+ }, actionLabel), actionItem), /*#__PURE__*/React.createElement(Divider, null));
47
+ };
48
+
49
+ const styles = createStyleSheet({
50
+ container: {
51
+ paddingVertical: 16,
52
+ flexDirection: 'row',
53
+ alignItems: 'center'
54
+ },
55
+ name: {
56
+ flex: 1,
57
+ marginRight: 8
58
+ },
59
+ icon: {
60
+ marginRight: 16
61
+ },
62
+ containedIcon: {
63
+ borderRadius: 24,
64
+ padding: 4
65
+ },
66
+ actionLabel: {
67
+ marginRight: 4
68
+ }
69
+ });
70
+ export default MenuBar;
71
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Pressable","View","conditionChaining","createStyleSheet","useUIKitTheme","Divider","Icon","Text","MenuBar","variant","disabled","onPress","name","icon","iconColor","iconBackgroundColor","actionLabel","actionItem","palette","colors","styles","container","background50","primary","containedIcon","backgroundColor","background400","Boolean","onBackground02","paddingVertical","flexDirection","alignItems","flex","marginRight","borderRadius","padding"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Divider from '../Divider';\nimport Icon from '../Icon';\nimport Text from '../Text';\n\nexport type MenuBarProps = {\n variant?: 'default' | 'contained';\n\n onPress: () => void;\n disabled?: boolean;\n\n icon: keyof typeof Icon.Assets;\n iconColor?: string;\n iconBackgroundColor?: string;\n name: string;\n\n actionLabel?: string;\n actionItem?: React.ReactNode;\n};\nconst MenuBar = ({\n variant = 'default',\n disabled,\n onPress,\n name,\n icon,\n iconColor,\n iconBackgroundColor,\n actionLabel,\n actionItem = null,\n}: MenuBarProps) => {\n const { palette, colors } = useUIKitTheme();\n\n return (\n <View>\n <Pressable disabled={disabled} onPress={onPress} style={styles.container}>\n {icon && (\n <Icon\n icon={icon}\n size={variant === 'contained' ? 16 : 24}\n color={conditionChaining(\n [variant === 'contained', iconColor],\n [palette.background50, iconColor, colors.primary],\n )}\n containerStyle={[\n styles.icon,\n variant === 'contained' && styles.containedIcon,\n variant === 'contained' && { backgroundColor: iconBackgroundColor ?? palette.background400 },\n ]}\n />\n )}\n <Text subtitle2 numberOfLines={1} style={styles.name}>\n {name}\n </Text>\n {Boolean(actionLabel) && (\n <Text subtitle2 numberOfLines={1} color={colors.onBackground02} style={styles.actionLabel}>\n {actionLabel}\n </Text>\n )}\n {actionItem}\n </Pressable>\n <Divider />\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingVertical: 16,\n flexDirection: 'row',\n alignItems: 'center',\n },\n name: {\n flex: 1,\n marginRight: 8,\n },\n icon: {\n marginRight: 16,\n },\n containedIcon: {\n borderRadius: 24,\n padding: 4,\n },\n actionLabel: {\n marginRight: 4,\n },\n});\n\nexport default MenuBar;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,SAAT,EAAoBC,IAApB,QAAgC,cAAhC;AAEA,SAASC,iBAAT,QAAkC,uBAAlC;AAEA,OAAOC,gBAAP,MAA6B,+BAA7B;AACA,OAAOC,aAAP,MAA0B,2BAA1B;AACA,OAAOC,OAAP,MAAoB,YAApB;AACA,OAAOC,IAAP,MAAiB,SAAjB;AACA,OAAOC,IAAP,MAAiB,SAAjB;;AAgBA,MAAMC,OAAO,GAAG,QAUI;EAAA,IAVH;IACfC,OAAO,GAAG,SADK;IAEfC,QAFe;IAGfC,OAHe;IAIfC,IAJe;IAKfC,IALe;IAMfC,SANe;IAOfC,mBAPe;IAQfC,WARe;IASfC,UAAU,GAAG;EATE,CAUG;EAClB,MAAM;IAAEC,OAAF;IAAWC;EAAX,IAAsBf,aAAa,EAAzC;EAEA,oBACE,oBAAC,IAAD,qBACE,oBAAC,SAAD;IAAW,QAAQ,EAAEM,QAArB;IAA+B,OAAO,EAAEC,OAAxC;IAAiD,KAAK,EAAES,MAAM,CAACC;EAA/D,GACGR,IAAI,iBACH,oBAAC,IAAD;IACE,IAAI,EAAEA,IADR;IAEE,IAAI,EAAEJ,OAAO,KAAK,WAAZ,GAA0B,EAA1B,GAA+B,EAFvC;IAGE,KAAK,EAAEP,iBAAiB,CACtB,CAACO,OAAO,KAAK,WAAb,EAA0BK,SAA1B,CADsB,EAEtB,CAACI,OAAO,CAACI,YAAT,EAAuBR,SAAvB,EAAkCK,MAAM,CAACI,OAAzC,CAFsB,CAH1B;IAOE,cAAc,EAAE,CACdH,MAAM,CAACP,IADO,EAEdJ,OAAO,KAAK,WAAZ,IAA2BW,MAAM,CAACI,aAFpB,EAGdf,OAAO,KAAK,WAAZ,IAA2B;MAAEgB,eAAe,EAAEV,mBAAmB,IAAIG,OAAO,CAACQ;IAAlD,CAHb;EAPlB,EAFJ,eAgBE,oBAAC,IAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEN,MAAM,CAACR;EAAhD,GACGA,IADH,CAhBF,EAmBGe,OAAO,CAACX,WAAD,CAAP,iBACC,oBAAC,IAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEG,MAAM,CAACS,cAAhD;IAAgE,KAAK,EAAER,MAAM,CAACJ;EAA9E,GACGA,WADH,CApBJ,EAwBGC,UAxBH,CADF,eA2BE,oBAAC,OAAD,OA3BF,CADF;AA+BD,CA5CD;;AA8CA,MAAMG,MAAM,GAAGjB,gBAAgB,CAAC;EAC9BkB,SAAS,EAAE;IACTQ,eAAe,EAAE,EADR;IAETC,aAAa,EAAE,KAFN;IAGTC,UAAU,EAAE;EAHH,CADmB;EAM9BnB,IAAI,EAAE;IACJoB,IAAI,EAAE,CADF;IAEJC,WAAW,EAAE;EAFT,CANwB;EAU9BpB,IAAI,EAAE;IACJoB,WAAW,EAAE;EADT,CAVwB;EAa9BT,aAAa,EAAE;IACbU,YAAY,EAAE,EADD;IAEbC,OAAO,EAAE;EAFI,CAbe;EAiB9BnB,WAAW,EAAE;IACXiB,WAAW,EAAE;EADF;AAjBiB,CAAD,CAA/B;AAsBA,eAAezB,OAAf"}
@@ -0,0 +1,196 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React, { useEffect, useRef, useState } from 'react';
4
+ import { Animated, Dimensions, KeyboardAvoidingView, PanResponder, Platform, Pressable, Modal as RNModal, StyleSheet, TouchableWithoutFeedback, useWindowDimensions } from 'react-native';
5
+ import createStyleSheet from '../../styles/createStyleSheet';
6
+ import useHeaderStyle from '../../styles/useHeaderStyle';
7
+ import useUIKitTheme from '../../theme/useUIKitTheme';
8
+
9
+ /**
10
+ * Modal Open: Triggered by Modal.props.visible state changed to true
11
+ * - visible true -> modalVisible true -> animation start
12
+ *
13
+ * Modal Close: Triggered by Modal.props.onClose() call
14
+ * - Modal.props.onClose() -> visible false -> animation start -> modalVisible false
15
+ * */
16
+ const Modal = _ref => {
17
+ let {
18
+ children,
19
+ onClose,
20
+ backgroundStyle,
21
+ onDismiss,
22
+ type = 'fade',
23
+ visible = false,
24
+ disableBackgroundClose = false,
25
+ enableKeyboardAvoid = false,
26
+ statusBarTranslucent,
27
+ ...props
28
+ } = _ref;
29
+ const {
30
+ palette
31
+ } = useUIKitTheme();
32
+ const {
33
+ content,
34
+ backdrop,
35
+ showTransition,
36
+ hideTransition
37
+ } = useModalAnimation(type);
38
+ const panResponder = useModalPanResponder(type, content.translateY, showTransition, onClose);
39
+ const {
40
+ topInset
41
+ } = useHeaderStyle();
42
+ const [modalVisible, setModalVisible] = useState(false);
43
+
44
+ const showAction = () => setModalVisible(true);
45
+
46
+ const hideAction = () => hideTransition(() => setModalVisible(false));
47
+
48
+ const {
49
+ width,
50
+ height
51
+ } = useWindowDimensions();
52
+ useEffect(() => {
53
+ if (visible) showAction();else hideAction();
54
+ }, [visible]);
55
+ useOnDismiss(modalVisible, onDismiss);
56
+ return /*#__PURE__*/React.createElement(RNModal, _extends({
57
+ transparent: true,
58
+ hardwareAccelerated: true,
59
+ visible: modalVisible,
60
+ onRequestClose: onClose,
61
+ onShow: () => showTransition(),
62
+ onDismiss: onDismiss,
63
+ supportedOrientations: ['portrait', 'portrait-upside-down', 'landscape', 'landscape-left', 'landscape-right'],
64
+ animationType: 'none'
65
+ }, props), /*#__PURE__*/React.createElement(TouchableWithoutFeedback, {
66
+ onPress: disableBackgroundClose ? undefined : onClose
67
+ }, /*#__PURE__*/React.createElement(Animated.View, {
68
+ style: [StyleSheet.absoluteFill, {
69
+ opacity: backdrop.opacity,
70
+ backgroundColor: palette.onBackgroundLight03
71
+ }]
72
+ })), /*#__PURE__*/React.createElement(KeyboardAvoidingView // NOTE: This is trick for Android.
73
+ // When orientation is changed on Android, the offset that to avoid soft-keyboard is not updated normally.
74
+ , {
75
+ key: `${width}-${height}`,
76
+ enabled: enableKeyboardAvoid,
77
+ style: styles.background,
78
+ behavior: Platform.select({
79
+ ios: 'padding',
80
+ default: 'height'
81
+ }),
82
+ pointerEvents: 'box-none',
83
+ keyboardVerticalOffset: enableKeyboardAvoid && statusBarTranslucent ? -topInset : 0
84
+ }, /*#__PURE__*/React.createElement(Animated.View, _extends({
85
+ style: [styles.background, backgroundStyle, {
86
+ opacity: content.opacity,
87
+ transform: [{
88
+ translateY: content.translateY
89
+ }]
90
+ }],
91
+ pointerEvents: 'box-none'
92
+ }, panResponder.panHandlers), /*#__PURE__*/React.createElement(Pressable // NOTE: https://github.com/facebook/react-native/issues/14295
93
+ // Due to 'Pressable', the width of the children must be explicitly specified as a number.
94
+ , null, children))));
95
+ };
96
+
97
+ const isHideGesture = (distanceY, velocityY) => {
98
+ return distanceY > 125 || distanceY > 0 && velocityY > 0.1;
99
+ };
100
+
101
+ const useModalPanResponder = (type, translateY, show, hide) => {
102
+ if (type === 'fade') return {
103
+ panHandlers: {}
104
+ };
105
+ return React.useRef(PanResponder.create({
106
+ onMoveShouldSetPanResponderCapture: (_, _ref2) => {
107
+ let {
108
+ dy
109
+ } = _ref2;
110
+ return dy > 8;
111
+ },
112
+ // @ts-ignore
113
+ onPanResponderGrant: () => translateY.setOffset(translateY.__getValue()),
114
+ onPanResponderMove: (_, _ref3) => {
115
+ let {
116
+ dy
117
+ } = _ref3;
118
+ return dy >= 0 && translateY.setValue(dy);
119
+ },
120
+ // Animated.event([null, { dy: translateY }], { useNativeDriver: false }),
121
+ onPanResponderRelease: (_, _ref4) => {
122
+ let {
123
+ dy,
124
+ vy
125
+ } = _ref4;
126
+ if (isHideGesture(dy, vy)) hide();else show();
127
+ }
128
+ })).current;
129
+ };
130
+
131
+ const useModalAnimation = type => {
132
+ const initialY = type === 'slide' ? Dimensions.get('window').height : 0;
133
+ const baseAnimBackground = useRef(new Animated.Value(0)).current;
134
+ const baseAnimContent = useRef(new Animated.Value(initialY)).current;
135
+ const content = {
136
+ opacity: baseAnimBackground.interpolate({
137
+ inputRange: [0, 1],
138
+ outputRange: [type === 'slide' ? 1 : 0, 1]
139
+ }),
140
+ translateY: baseAnimContent
141
+ };
142
+ const backdrop = {
143
+ opacity: baseAnimBackground.interpolate({
144
+ inputRange: [0, 1],
145
+ outputRange: [0, 1]
146
+ })
147
+ };
148
+
149
+ const createTransition = toValue => {
150
+ const config = {
151
+ duration: 250,
152
+ useNativeDriver: false
153
+ };
154
+ return Animated.parallel([Animated.timing(baseAnimBackground, {
155
+ toValue,
156
+ ...config
157
+ }), Animated.timing(baseAnimContent, {
158
+ toValue: toValue === 0 ? initialY : 0,
159
+ ...config
160
+ })]).start;
161
+ };
162
+
163
+ return {
164
+ content,
165
+ backdrop,
166
+ showTransition: createTransition(1),
167
+ hideTransition: createTransition(0)
168
+ };
169
+ }; // NOTE: onDismiss is supports iOS only
170
+
171
+
172
+ const useOnDismiss = (visible, onDismiss) => {
173
+ const prevVisible = usePrevProp(visible);
174
+ useEffect(() => {
175
+ if (Platform.OS === 'ios') return;
176
+ if (prevVisible && !visible) onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss();
177
+ }, [prevVisible, visible]);
178
+ };
179
+
180
+ const usePrevProp = prop => {
181
+ const prev = useRef(prop);
182
+ const curr = useRef(prop);
183
+ useEffect(() => {
184
+ prev.current = curr.current;
185
+ curr.current = prop;
186
+ });
187
+ return prev.current;
188
+ };
189
+
190
+ const styles = createStyleSheet({
191
+ background: {
192
+ flex: 1
193
+ }
194
+ });
195
+ export default Modal;
196
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","useState","Animated","Dimensions","KeyboardAvoidingView","PanResponder","Platform","Pressable","Modal","RNModal","StyleSheet","TouchableWithoutFeedback","useWindowDimensions","createStyleSheet","useHeaderStyle","useUIKitTheme","children","onClose","backgroundStyle","onDismiss","type","visible","disableBackgroundClose","enableKeyboardAvoid","statusBarTranslucent","props","palette","content","backdrop","showTransition","hideTransition","useModalAnimation","panResponder","useModalPanResponder","translateY","topInset","modalVisible","setModalVisible","showAction","hideAction","width","height","useOnDismiss","undefined","absoluteFill","opacity","backgroundColor","onBackgroundLight03","styles","background","select","ios","default","transform","panHandlers","isHideGesture","distanceY","velocityY","show","hide","create","onMoveShouldSetPanResponderCapture","_","dy","onPanResponderGrant","setOffset","__getValue","onPanResponderMove","setValue","onPanResponderRelease","vy","current","initialY","get","baseAnimBackground","Value","baseAnimContent","interpolate","inputRange","outputRange","createTransition","toValue","config","duration","useNativeDriver","parallel","timing","start","prevVisible","usePrevProp","OS","prop","prev","curr","flex"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport {\n Animated,\n Dimensions,\n KeyboardAvoidingView,\n ModalProps,\n PanResponder,\n Platform,\n Pressable,\n Modal as RNModal,\n StyleProp,\n StyleSheet,\n TouchableWithoutFeedback,\n ViewStyle,\n useWindowDimensions,\n} from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype Props = {\n type?: 'slide' | 'fade';\n onClose: () => void;\n backgroundStyle?: StyleProp<ViewStyle>;\n disableBackgroundClose?: boolean;\n enableKeyboardAvoid?: boolean;\n} & Omit<ModalProps, 'animationType' | 'onRequestClose'>;\n\n/**\n * Modal Open: Triggered by Modal.props.visible state changed to true\n * - visible true -> modalVisible true -> animation start\n *\n * Modal Close: Triggered by Modal.props.onClose() call\n * - Modal.props.onClose() -> visible false -> animation start -> modalVisible false\n * */\nconst Modal = ({\n children,\n onClose,\n backgroundStyle,\n onDismiss,\n type = 'fade',\n visible = false,\n disableBackgroundClose = false,\n enableKeyboardAvoid = false,\n statusBarTranslucent,\n ...props\n}: Props) => {\n const { palette } = useUIKitTheme();\n const { content, backdrop, showTransition, hideTransition } = useModalAnimation(type);\n const panResponder = useModalPanResponder(type, content.translateY, showTransition, onClose);\n const { topInset } = useHeaderStyle();\n\n const [modalVisible, setModalVisible] = useState(false);\n const showAction = () => setModalVisible(true);\n const hideAction = () => hideTransition(() => setModalVisible(false));\n\n const { width, height } = useWindowDimensions();\n\n useEffect(() => {\n if (visible) showAction();\n else hideAction();\n }, [visible]);\n\n useOnDismiss(modalVisible, onDismiss);\n\n return (\n <RNModal\n transparent\n hardwareAccelerated\n visible={modalVisible}\n onRequestClose={onClose}\n onShow={() => showTransition()}\n onDismiss={onDismiss}\n supportedOrientations={['portrait', 'portrait-upside-down', 'landscape', 'landscape-left', 'landscape-right']}\n animationType={'none'}\n {...props}\n >\n <TouchableWithoutFeedback onPress={disableBackgroundClose ? undefined : onClose}>\n <Animated.View\n style={[StyleSheet.absoluteFill, { opacity: backdrop.opacity, backgroundColor: palette.onBackgroundLight03 }]}\n />\n </TouchableWithoutFeedback>\n <KeyboardAvoidingView\n // NOTE: This is trick for Android.\n // When orientation is changed on Android, the offset that to avoid soft-keyboard is not updated normally.\n key={`${width}-${height}`}\n enabled={enableKeyboardAvoid}\n style={styles.background}\n behavior={Platform.select({ ios: 'padding', default: 'height' })}\n pointerEvents={'box-none'}\n keyboardVerticalOffset={enableKeyboardAvoid && statusBarTranslucent ? -topInset : 0}\n >\n <Animated.View\n style={[\n styles.background,\n backgroundStyle,\n { opacity: content.opacity, transform: [{ translateY: content.translateY }] },\n ]}\n pointerEvents={'box-none'}\n {...panResponder.panHandlers}\n >\n <Pressable\n // NOTE: https://github.com/facebook/react-native/issues/14295\n // Due to 'Pressable', the width of the children must be explicitly specified as a number.\n >\n {children}\n </Pressable>\n </Animated.View>\n </KeyboardAvoidingView>\n </RNModal>\n );\n};\n\nconst isHideGesture = (distanceY: number, velocityY: number) => {\n return distanceY > 125 || (distanceY > 0 && velocityY > 0.1);\n};\nconst useModalPanResponder = (\n type: 'slide' | 'fade',\n translateY: Animated.Value,\n show: () => void,\n hide: () => void,\n) => {\n if (type === 'fade') return { panHandlers: {} };\n return React.useRef(\n PanResponder.create({\n onMoveShouldSetPanResponderCapture: (_, { dy }) => dy > 8,\n // @ts-ignore\n onPanResponderGrant: () => translateY.setOffset(translateY.__getValue()),\n onPanResponderMove: (_, { dy }) => dy >= 0 && translateY.setValue(dy), // Animated.event([null, { dy: translateY }], { useNativeDriver: false }),\n onPanResponderRelease: (_, { dy, vy }) => {\n if (isHideGesture(dy, vy)) hide();\n else show();\n },\n }),\n ).current;\n};\n\nconst useModalAnimation = (type: 'slide' | 'fade') => {\n const initialY = type === 'slide' ? Dimensions.get('window').height : 0;\n const baseAnimBackground = useRef(new Animated.Value(0)).current;\n const baseAnimContent = useRef(new Animated.Value(initialY)).current;\n\n const content = {\n opacity: baseAnimBackground.interpolate({\n inputRange: [0, 1],\n outputRange: [type === 'slide' ? 1 : 0, 1],\n }),\n translateY: baseAnimContent,\n };\n const backdrop = {\n opacity: baseAnimBackground.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n }),\n };\n const createTransition = (toValue: 0 | 1) => {\n const config = { duration: 250, useNativeDriver: false };\n return Animated.parallel([\n Animated.timing(baseAnimBackground, { toValue, ...config }),\n Animated.timing(baseAnimContent, { toValue: toValue === 0 ? initialY : 0, ...config }),\n ]).start;\n };\n return {\n content,\n backdrop,\n showTransition: createTransition(1),\n hideTransition: createTransition(0),\n };\n};\n\n// NOTE: onDismiss is supports iOS only\nconst useOnDismiss = (visible: boolean, onDismiss?: () => void) => {\n const prevVisible = usePrevProp(visible);\n useEffect(() => {\n if (Platform.OS === 'ios') return;\n if (prevVisible && !visible) onDismiss?.();\n }, [prevVisible, visible]);\n};\n\nconst usePrevProp = <T,>(prop: T) => {\n const prev = useRef(prop);\n const curr = useRef(prop);\n useEffect(() => {\n prev.current = curr.current;\n curr.current = prop;\n });\n return prev.current;\n};\n\nconst styles = createStyleSheet({\n background: { flex: 1 },\n});\n\nexport default Modal;\n"],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import { conditionChaining } from '@sendbird/uikit-utils';
4
+ import createStyleSheet from '../../styles/createStyleSheet';
5
+ import useUIKitTheme from '../../theme/useUIKitTheme';
6
+ import Button from '../Button';
7
+ import Icon from '../Icon';
8
+ import LoadingSpinner from '../LoadingSpinner';
9
+ import Text from '../Text';
10
+
11
+ const Placeholder = _ref => {
12
+ let {
13
+ icon,
14
+ loading = false,
15
+ message = '',
16
+ errorRetryLabel,
17
+ onPressRetry
18
+ } = _ref;
19
+ const {
20
+ colors
21
+ } = useUIKitTheme(); // loading ? styles.containerLoading : errorRetryLabel ? styles.containerError : styles.container
22
+
23
+ return /*#__PURE__*/React.createElement(View, {
24
+ style: conditionChaining([loading, errorRetryLabel], [styles.containerLoading, styles.containerError, styles.container])
25
+ }, conditionChaining([loading], [/*#__PURE__*/React.createElement(LoadingSpinner, {
26
+ size: 64,
27
+ color: colors.ui.placeholder.default.none.highlight
28
+ }), /*#__PURE__*/React.createElement(Icon, {
29
+ icon: icon,
30
+ size: 64,
31
+ color: colors.ui.placeholder.default.none.content
32
+ })]), Boolean(message) && !loading && /*#__PURE__*/React.createElement(Text, {
33
+ body3: true,
34
+ color: colors.ui.placeholder.default.none.content
35
+ }, message), Boolean(errorRetryLabel) && !loading && /*#__PURE__*/React.createElement(Button, {
36
+ variant: 'text',
37
+ onPress: onPressRetry,
38
+ contentColor: colors.ui.placeholder.default.none.highlight,
39
+ icon: 'refresh'
40
+ }, errorRetryLabel));
41
+ };
42
+
43
+ const styles = createStyleSheet({
44
+ container: {
45
+ width: 200,
46
+ height: 100,
47
+ alignItems: 'center',
48
+ justifyContent: 'space-between'
49
+ },
50
+ containerError: {
51
+ width: 200,
52
+ height: 148,
53
+ alignItems: 'center',
54
+ justifyContent: 'space-between'
55
+ },
56
+ containerLoading: {
57
+ width: 200,
58
+ height: 100,
59
+ alignItems: 'center',
60
+ justifyContent: 'center'
61
+ }
62
+ });
63
+ export default Placeholder;
64
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","conditionChaining","createStyleSheet","useUIKitTheme","Button","Icon","LoadingSpinner","Text","Placeholder","icon","loading","message","errorRetryLabel","onPressRetry","colors","styles","containerLoading","containerError","container","ui","placeholder","default","none","highlight","content","Boolean","width","height","alignItems","justifyContent"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Button from '../Button';\nimport Icon from '../Icon';\nimport LoadingSpinner from '../LoadingSpinner';\nimport Text from '../Text';\n\ntype Props = {\n loading?: boolean;\n\n icon: keyof typeof Icon.Assets;\n message?: string;\n errorRetryLabel?: string;\n onPressRetry?: () => void;\n};\n\nconst Placeholder = ({ icon, loading = false, message = '', errorRetryLabel, onPressRetry }: Props) => {\n const { colors } = useUIKitTheme();\n\n // loading ? styles.containerLoading : errorRetryLabel ? styles.containerError : styles.container\n return (\n <View\n style={conditionChaining(\n [loading, errorRetryLabel],\n [styles.containerLoading, styles.containerError, styles.container],\n )}\n >\n {conditionChaining(\n [loading],\n [\n <LoadingSpinner size={64} color={colors.ui.placeholder.default.none.highlight} />,\n <Icon icon={icon} size={64} color={colors.ui.placeholder.default.none.content} />,\n ],\n )}\n {Boolean(message) && !loading && (\n <Text body3 color={colors.ui.placeholder.default.none.content}>\n {message}\n </Text>\n )}\n {Boolean(errorRetryLabel) && !loading && (\n <Button\n variant={'text'}\n onPress={onPressRetry}\n contentColor={colors.ui.placeholder.default.none.highlight}\n icon={'refresh'}\n >\n {errorRetryLabel}\n </Button>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n width: 200,\n height: 100,\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n containerError: {\n width: 200,\n height: 148,\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n containerLoading: {\n width: 200,\n height: 100,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default Placeholder;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,iBAAT,QAAkC,uBAAlC;AAEA,OAAOC,gBAAP,MAA6B,+BAA7B;AACA,OAAOC,aAAP,MAA0B,2BAA1B;AACA,OAAOC,MAAP,MAAmB,WAAnB;AACA,OAAOC,IAAP,MAAiB,SAAjB;AACA,OAAOC,cAAP,MAA2B,mBAA3B;AACA,OAAOC,IAAP,MAAiB,SAAjB;;AAWA,MAAMC,WAAW,GAAG,QAAmF;EAAA,IAAlF;IAAEC,IAAF;IAAQC,OAAO,GAAG,KAAlB;IAAyBC,OAAO,GAAG,EAAnC;IAAuCC,eAAvC;IAAwDC;EAAxD,CAAkF;EACrG,MAAM;IAAEC;EAAF,IAAaX,aAAa,EAAhC,CADqG,CAGrG;;EACA,oBACE,oBAAC,IAAD;IACE,KAAK,EAAEF,iBAAiB,CACtB,CAACS,OAAD,EAAUE,eAAV,CADsB,EAEtB,CAACG,MAAM,CAACC,gBAAR,EAA0BD,MAAM,CAACE,cAAjC,EAAiDF,MAAM,CAACG,SAAxD,CAFsB;EAD1B,GAMGjB,iBAAiB,CAChB,CAACS,OAAD,CADgB,EAEhB,cACE,oBAAC,cAAD;IAAgB,IAAI,EAAE,EAAtB;IAA0B,KAAK,EAAEI,MAAM,CAACK,EAAP,CAAUC,WAAV,CAAsBC,OAAtB,CAA8BC,IAA9B,CAAmCC;EAApE,EADF,eAEE,oBAAC,IAAD;IAAM,IAAI,EAAEd,IAAZ;IAAkB,IAAI,EAAE,EAAxB;IAA4B,KAAK,EAAEK,MAAM,CAACK,EAAP,CAAUC,WAAV,CAAsBC,OAAtB,CAA8BC,IAA9B,CAAmCE;EAAtE,EAFF,CAFgB,CANpB,EAaGC,OAAO,CAACd,OAAD,CAAP,IAAoB,CAACD,OAArB,iBACC,oBAAC,IAAD;IAAM,KAAK,MAAX;IAAY,KAAK,EAAEI,MAAM,CAACK,EAAP,CAAUC,WAAV,CAAsBC,OAAtB,CAA8BC,IAA9B,CAAmCE;EAAtD,GACGb,OADH,CAdJ,EAkBGc,OAAO,CAACb,eAAD,CAAP,IAA4B,CAACF,OAA7B,iBACC,oBAAC,MAAD;IACE,OAAO,EAAE,MADX;IAEE,OAAO,EAAEG,YAFX;IAGE,YAAY,EAAEC,MAAM,CAACK,EAAP,CAAUC,WAAV,CAAsBC,OAAtB,CAA8BC,IAA9B,CAAmCC,SAHnD;IAIE,IAAI,EAAE;EAJR,GAMGX,eANH,CAnBJ,CADF;AA+BD,CAnCD;;AAqCA,MAAMG,MAAM,GAAGb,gBAAgB,CAAC;EAC9BgB,SAAS,EAAE;IACTQ,KAAK,EAAE,GADE;IAETC,MAAM,EAAE,GAFC;IAGTC,UAAU,EAAE,QAHH;IAITC,cAAc,EAAE;EAJP,CADmB;EAO9BZ,cAAc,EAAE;IACdS,KAAK,EAAE,GADO;IAEdC,MAAM,EAAE,GAFM;IAGdC,UAAU,EAAE,QAHE;IAIdC,cAAc,EAAE;EAJF,CAPc;EAa9Bb,gBAAgB,EAAE;IAChBU,KAAK,EAAE,GADS;IAEhBC,MAAM,EAAE,GAFQ;IAGhBC,UAAU,EAAE,QAHI;IAIhBC,cAAc,EAAE;EAJA;AAbY,CAAD,CAA/B;AAqBA,eAAerB,WAAf"}
@@ -0,0 +1,151 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { Keyboard, Platform, View, useWindowDimensions } from 'react-native';
3
+ import { NOOP } from '@sendbird/uikit-utils';
4
+ import createStyleSheet from '../../styles/createStyleSheet';
5
+ import useHeaderStyle from '../../styles/useHeaderStyle';
6
+ import useUIKitTheme from '../../theme/useUIKitTheme';
7
+ import Button from '../Button';
8
+ import DialogBox from '../Dialog/DialogBox';
9
+ import Modal from '../Modal';
10
+ import Text from '../Text';
11
+ import TextInput from '../TextInput';
12
+
13
+ const Prompt = _ref => {
14
+ let {
15
+ onDismiss,
16
+ visible,
17
+ onHide,
18
+ autoFocus = true,
19
+ title,
20
+ defaultValue = '',
21
+ placeholder = 'Enter',
22
+ onSubmit = NOOP,
23
+ onCancel = NOOP,
24
+ submitLabel = 'Submit',
25
+ cancelLabel = 'Cancel'
26
+ } = _ref;
27
+ const {
28
+ statusBarTranslucent
29
+ } = useHeaderStyle();
30
+ const {
31
+ colors
32
+ } = useUIKitTheme();
33
+ const inputRef = useRef(null);
34
+ const {
35
+ width,
36
+ height
37
+ } = useWindowDimensions();
38
+ const buttons = [{
39
+ text: cancelLabel,
40
+ onPress: onCancel
41
+ }, {
42
+ text: submitLabel,
43
+ onPress: () => onSubmit(text)
44
+ }];
45
+ const [text, setText] = useState(defaultValue); // FIXME: autoFocus trick with modal
46
+ // Android
47
+ // - InputProps.autoFocus is not trigger keyboard appearing.
48
+ // - InputRef.focus() is trigger keyboard appearing, but position of keyboard selection is always the start of text.
49
+ // iOS
50
+ // - InputProps.autoFocus is trigger weird UI behavior on landscape mode.
51
+
52
+ useEffect(() => {
53
+ if (autoFocus && visible) {
54
+ setTimeout(() => {
55
+ var _inputRef$current, _inputRef$current2;
56
+
57
+ if (Platform.OS === 'android') (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.blur();
58
+ (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();
59
+ }, 250);
60
+ }
61
+ }, [autoFocus, visible, `${width}-${height}`]);
62
+ return /*#__PURE__*/React.createElement(Modal, {
63
+ enableKeyboardAvoid: true,
64
+ disableBackgroundClose: true,
65
+ onClose: onHide,
66
+ onDismiss: () => {
67
+ setText('');
68
+ onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss();
69
+ },
70
+ statusBarTranslucent: statusBarTranslucent,
71
+ visible: visible,
72
+ backgroundStyle: {
73
+ alignItems: 'center',
74
+ justifyContent: 'center'
75
+ }
76
+ }, /*#__PURE__*/React.createElement(DialogBox, {
77
+ style: styles.container
78
+ }, Boolean(title) && /*#__PURE__*/React.createElement(View, {
79
+ style: styles.titleContainer
80
+ }, /*#__PURE__*/React.createElement(Text, {
81
+ h1: true,
82
+ color: colors.ui.dialog.default.none.text,
83
+ numberOfLines: 1,
84
+ style: {
85
+ flex: 1
86
+ }
87
+ }, title)), /*#__PURE__*/React.createElement(View, {
88
+ style: styles.inputContainer
89
+ }, /*#__PURE__*/React.createElement(TextInput, {
90
+ autoFocus: autoFocus && Platform.OS === 'android',
91
+ ref: inputRef,
92
+ placeholder: placeholder,
93
+ variant: 'underline',
94
+ value: text,
95
+ onChangeText: setText,
96
+ style: {
97
+ paddingHorizontal: 0,
98
+ paddingVertical: 10
99
+ }
100
+ })), /*#__PURE__*/React.createElement(View, {
101
+ style: styles.buttonContainer
102
+ }, buttons.map((_ref2, index) => {
103
+ let {
104
+ text,
105
+ onPress
106
+ } = _ref2;
107
+ return /*#__PURE__*/React.createElement(Button, {
108
+ key: text + index,
109
+ variant: 'text',
110
+ style: styles.button,
111
+ contentColor: colors.ui.dialog.default.none.highlight,
112
+ onPress: () => {
113
+ Keyboard.dismiss();
114
+
115
+ try {
116
+ onPress === null || onPress === void 0 ? void 0 : onPress();
117
+ } finally {
118
+ onHide();
119
+ }
120
+ }
121
+ }, text);
122
+ }))));
123
+ };
124
+
125
+ const styles = createStyleSheet({
126
+ container: {
127
+ paddingTop: 8
128
+ },
129
+ titleContainer: {
130
+ marginBottom: 12,
131
+ paddingVertical: 12,
132
+ paddingHorizontal: 24,
133
+ flexDirection: 'row',
134
+ alignItems: 'center'
135
+ },
136
+ inputContainer: {
137
+ paddingHorizontal: 24,
138
+ marginBottom: 12
139
+ },
140
+ buttonContainer: {
141
+ flexDirection: 'row',
142
+ alignItems: 'center',
143
+ justifyContent: 'flex-end',
144
+ padding: 12
145
+ },
146
+ button: {
147
+ marginLeft: 8
148
+ }
149
+ });
150
+ export default Prompt;
151
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","useState","Keyboard","Platform","View","useWindowDimensions","NOOP","createStyleSheet","useHeaderStyle","useUIKitTheme","Button","DialogBox","Modal","Text","TextInput","Prompt","onDismiss","visible","onHide","autoFocus","title","defaultValue","placeholder","onSubmit","onCancel","submitLabel","cancelLabel","statusBarTranslucent","colors","inputRef","width","height","buttons","text","onPress","setText","setTimeout","OS","current","blur","focus","alignItems","justifyContent","styles","container","Boolean","titleContainer","ui","dialog","default","none","flex","inputContainer","paddingHorizontal","paddingVertical","buttonContainer","map","index","button","highlight","dismiss","paddingTop","marginBottom","flexDirection","padding","marginLeft"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Keyboard, Platform, TextInput as RNTextInput, View, useWindowDimensions } from 'react-native';\n\nimport { NOOP } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Button from '../Button';\nimport DialogBox from '../Dialog/DialogBox';\nimport Modal from '../Modal';\nimport Text from '../Text';\nimport TextInput from '../TextInput';\n\nexport type PromptItem = {\n title: string;\n placeholder?: string;\n defaultValue?: string;\n onSubmit?: (text: string) => void;\n submitLabel?: string;\n onCancel?: () => void;\n cancelLabel?: string;\n};\n\ntype Props = {\n visible: boolean;\n onHide: () => void;\n onDismiss?: () => void;\n autoFocus?: boolean;\n} & PromptItem;\nconst Prompt = ({\n onDismiss,\n visible,\n onHide,\n autoFocus = true,\n title,\n defaultValue = '',\n placeholder = 'Enter',\n onSubmit = NOOP,\n onCancel = NOOP,\n submitLabel = 'Submit',\n cancelLabel = 'Cancel',\n}: Props) => {\n const { statusBarTranslucent } = useHeaderStyle();\n const { colors } = useUIKitTheme();\n const inputRef = useRef<RNTextInput>(null);\n const { width, height } = useWindowDimensions();\n\n const buttons = [\n { text: cancelLabel, onPress: onCancel },\n { text: submitLabel, onPress: () => onSubmit(text) },\n ];\n\n const [text, setText] = useState(defaultValue);\n\n // FIXME: autoFocus trick with modal\n // Android\n // - InputProps.autoFocus is not trigger keyboard appearing.\n // - InputRef.focus() is trigger keyboard appearing, but position of keyboard selection is always the start of text.\n // iOS\n // - InputProps.autoFocus is trigger weird UI behavior on landscape mode.\n useEffect(() => {\n if (autoFocus && visible) {\n setTimeout(() => {\n if (Platform.OS === 'android') inputRef.current?.blur();\n inputRef.current?.focus();\n }, 250);\n }\n }, [autoFocus, visible, `${width}-${height}`]);\n\n return (\n <Modal\n enableKeyboardAvoid\n disableBackgroundClose\n onClose={onHide}\n onDismiss={() => {\n setText('');\n onDismiss?.();\n }}\n statusBarTranslucent={statusBarTranslucent}\n visible={visible}\n backgroundStyle={{ alignItems: 'center', justifyContent: 'center' }}\n >\n <DialogBox style={styles.container}>\n {Boolean(title) && (\n <View style={styles.titleContainer}>\n <Text h1 color={colors.ui.dialog.default.none.text} numberOfLines={1} style={{ flex: 1 }}>\n {title}\n </Text>\n </View>\n )}\n\n <View style={styles.inputContainer}>\n <TextInput\n autoFocus={autoFocus && Platform.OS === 'android'}\n ref={inputRef}\n placeholder={placeholder}\n variant={'underline'}\n value={text}\n onChangeText={setText}\n style={{ paddingHorizontal: 0, paddingVertical: 10 }}\n />\n </View>\n\n <View style={styles.buttonContainer}>\n {buttons.map(({ text, onPress }, index) => {\n return (\n <Button\n key={text + index}\n variant={'text'}\n style={styles.button}\n contentColor={colors.ui.dialog.default.none.highlight}\n onPress={() => {\n Keyboard.dismiss();\n try {\n onPress?.();\n } finally {\n onHide();\n }\n }}\n >\n {text}\n </Button>\n );\n })}\n </View>\n </DialogBox>\n </Modal>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 8,\n },\n titleContainer: {\n marginBottom: 12,\n paddingVertical: 12,\n paddingHorizontal: 24,\n flexDirection: 'row',\n alignItems: 'center',\n },\n inputContainer: {\n paddingHorizontal: 24,\n marginBottom: 12,\n },\n buttonContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n padding: 12,\n },\n button: {\n marginLeft: 8,\n },\n});\n\nexport default Prompt;\n"],"mappings":"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"}