@sendbird/uikit-react-native-foundation 1.0.0-rc.1
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.
- package/LICENSE +21 -0
- package/README.md +15 -0
- package/lib/commonjs/assets/bundle-icons.js +33 -0
- package/lib/commonjs/assets/bundle-icons.js.map +1 -0
- package/lib/commonjs/assets/icon/ic-chat-hide.png +0 -0
- package/lib/commonjs/assets/icon/ic-chat-hide@2x.png +0 -0
- package/lib/commonjs/assets/icon/ic-chat-hide@3x.png +0 -0
- package/lib/commonjs/assets/icon/ic-chat-show.png +0 -0
- package/lib/commonjs/assets/icon/ic-chat-show@2x.png +0 -0
- package/lib/commonjs/assets/icon/ic-chat-show@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-add.png +0 -0
- package/lib/commonjs/assets/icon/icon-add@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-add@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-archive.png +0 -0
- package/lib/commonjs/assets/icon/icon-archive@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-archive@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-arrow-left.png +0 -0
- package/lib/commonjs/assets/icon/icon-arrow-left@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-arrow-left@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-ban.png +0 -0
- package/lib/commonjs/assets/icon/icon-ban@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-ban@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-broadcast.png +0 -0
- package/lib/commonjs/assets/icon/icon-broadcast@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-broadcast@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-camera.png +0 -0
- package/lib/commonjs/assets/icon/icon-camera@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-camera@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-channels.png +0 -0
- package/lib/commonjs/assets/icon/icon-channels@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-channels@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-chat-filled.png +0 -0
- package/lib/commonjs/assets/icon/icon-chat-filled@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-chat-filled@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-chat.png +0 -0
- package/lib/commonjs/assets/icon/icon-chat@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-chat@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-checkbox-off.png +0 -0
- package/lib/commonjs/assets/icon/icon-checkbox-off@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-checkbox-off@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-checkbox-on.png +0 -0
- package/lib/commonjs/assets/icon/icon-checkbox-on@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-checkbox-on@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-chevron-down.png +0 -0
- package/lib/commonjs/assets/icon/icon-chevron-down@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-chevron-down@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-chevron-right.png +0 -0
- package/lib/commonjs/assets/icon/icon-chevron-right@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-chevron-right@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-close.png +0 -0
- package/lib/commonjs/assets/icon/icon-close@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-close@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-copy.png +0 -0
- package/lib/commonjs/assets/icon/icon-copy@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-copy@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-create.png +0 -0
- package/lib/commonjs/assets/icon/icon-create@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-create@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-delete.png +0 -0
- package/lib/commonjs/assets/icon/icon-delete@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-delete@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-document.png +0 -0
- package/lib/commonjs/assets/icon/icon-document@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-document@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-done-all.png +0 -0
- package/lib/commonjs/assets/icon/icon-done-all@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-done-all@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-done.png +0 -0
- package/lib/commonjs/assets/icon/icon-done@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-done@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-download.png +0 -0
- package/lib/commonjs/assets/icon/icon-download@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-download@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-edit.png +0 -0
- package/lib/commonjs/assets/icon/icon-edit@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-edit@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-emoji-more.png +0 -0
- package/lib/commonjs/assets/icon/icon-emoji-more@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-emoji-more@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-error.png +0 -0
- package/lib/commonjs/assets/icon/icon-error@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-error@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-file-audio.png +0 -0
- package/lib/commonjs/assets/icon/icon-file-audio@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-file-audio@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-file-document.png +0 -0
- package/lib/commonjs/assets/icon/icon-file-document@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-file-document@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-freeze.png +0 -0
- package/lib/commonjs/assets/icon/icon-freeze@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-freeze@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-gif.png +0 -0
- package/lib/commonjs/assets/icon/icon-gif@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-gif@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-info.png +0 -0
- package/lib/commonjs/assets/icon/icon-info@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-info@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-leave.png +0 -0
- package/lib/commonjs/assets/icon/icon-leave@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-leave@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-members.png +0 -0
- package/lib/commonjs/assets/icon/icon-members@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-members@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-message.png +0 -0
- package/lib/commonjs/assets/icon/icon-message@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-message@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-moderations.png +0 -0
- package/lib/commonjs/assets/icon/icon-moderations@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-moderations@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-more.png +0 -0
- package/lib/commonjs/assets/icon/icon-more@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-more@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-mute.png +0 -0
- package/lib/commonjs/assets/icon/icon-mute@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-mute@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-notifications-filled.png +0 -0
- package/lib/commonjs/assets/icon/icon-notifications-filled@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-notifications-filled@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-notifications-off-filled.png +0 -0
- package/lib/commonjs/assets/icon/icon-notifications-off-filled@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-notifications-off-filled@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-notifications.png +0 -0
- package/lib/commonjs/assets/icon/icon-notifications@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-notifications@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-operator.png +0 -0
- package/lib/commonjs/assets/icon/icon-operator@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-operator@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-photo.png +0 -0
- package/lib/commonjs/assets/icon/icon-photo@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-photo@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-play.png +0 -0
- package/lib/commonjs/assets/icon/icon-play@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-play@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-plus.png +0 -0
- package/lib/commonjs/assets/icon/icon-plus@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-plus@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-question.png +0 -0
- package/lib/commonjs/assets/icon/icon-question@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-question@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-refresh.png +0 -0
- package/lib/commonjs/assets/icon/icon-refresh@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-refresh@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-remove.png +0 -0
- package/lib/commonjs/assets/icon/icon-remove@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-remove@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-reply-filled.png +0 -0
- package/lib/commonjs/assets/icon/icon-reply-filled@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-reply-filled@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-reply.png +0 -0
- package/lib/commonjs/assets/icon/icon-reply@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-reply@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-search.png +0 -0
- package/lib/commonjs/assets/icon/icon-search@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-search@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-send.png +0 -0
- package/lib/commonjs/assets/icon/icon-send@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-send@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-settings-filled.png +0 -0
- package/lib/commonjs/assets/icon/icon-settings-filled@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-settings-filled@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-spinner.png +0 -0
- package/lib/commonjs/assets/icon/icon-spinner@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-spinner@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-streaming.png +0 -0
- package/lib/commonjs/assets/icon/icon-streaming@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-streaming@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-supergroup.png +0 -0
- package/lib/commonjs/assets/icon/icon-supergroup@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-supergroup@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-theme.png +0 -0
- package/lib/commonjs/assets/icon/icon-theme@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-theme@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-thumbnail-none.png +0 -0
- package/lib/commonjs/assets/icon/icon-thumbnail-none@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-thumbnail-none@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-unarchive.png +0 -0
- package/lib/commonjs/assets/icon/icon-unarchive@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-unarchive@3x.png +0 -0
- package/lib/commonjs/assets/icon/icon-user.png +0 -0
- package/lib/commonjs/assets/icon/icon-user@2x.png +0 -0
- package/lib/commonjs/assets/icon/icon-user@3x.png +0 -0
- package/lib/commonjs/assets/icon/index.js +70 -0
- package/lib/commonjs/assets/icon/index.js.map +1 -0
- package/lib/commonjs/components/Image/Image.fastimage.js +85 -0
- package/lib/commonjs/components/Image/Image.fastimage.js.map +1 -0
- package/lib/commonjs/components/Image/Image.reactnative.js +35 -0
- package/lib/commonjs/components/Image/Image.reactnative.js.map +1 -0
- package/lib/commonjs/components/Image/index.js +29 -0
- package/lib/commonjs/components/Image/index.js.map +1 -0
- package/lib/commonjs/index.js +388 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/styles/HeaderStyleContext.js +46 -0
- package/lib/commonjs/styles/HeaderStyleContext.js.map +1 -0
- package/lib/commonjs/styles/createScaleFactor.js +31 -0
- package/lib/commonjs/styles/createScaleFactor.js.map +1 -0
- package/lib/commonjs/styles/createSelectByColorScheme.js +24 -0
- package/lib/commonjs/styles/createSelectByColorScheme.js.map +1 -0
- package/lib/commonjs/styles/createStyleSheet.js +62 -0
- package/lib/commonjs/styles/createStyleSheet.js.map +1 -0
- package/lib/commonjs/styles/createTypography.js +106 -0
- package/lib/commonjs/styles/createTypography.js.map +1 -0
- package/lib/commonjs/styles/getDefaultHeaderHeight.js +17 -0
- package/lib/commonjs/styles/getDefaultHeaderHeight.js.map +1 -0
- package/lib/commonjs/styles/useHeaderStyle.js +18 -0
- package/lib/commonjs/styles/useHeaderStyle.js.map +1 -0
- package/lib/commonjs/theme/DarkUIKitTheme.js +186 -0
- package/lib/commonjs/theme/DarkUIKitTheme.js.map +1 -0
- package/lib/commonjs/theme/LightUIKitTheme.js +186 -0
- package/lib/commonjs/theme/LightUIKitTheme.js.map +1 -0
- package/lib/commonjs/theme/Palette.js +47 -0
- package/lib/commonjs/theme/Palette.js.map +1 -0
- package/lib/commonjs/theme/UIKitThemeContext.js +16 -0
- package/lib/commonjs/theme/UIKitThemeContext.js.map +1 -0
- package/lib/commonjs/theme/UIKitThemeProvider.js +28 -0
- package/lib/commonjs/theme/UIKitThemeProvider.js.map +1 -0
- package/lib/commonjs/theme/createTheme.js +58 -0
- package/lib/commonjs/theme/createTheme.js.map +1 -0
- package/lib/commonjs/theme/useUIKitTheme.js +22 -0
- package/lib/commonjs/theme/useUIKitTheme.js.map +1 -0
- package/lib/commonjs/types.js +6 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/ui/ActionMenu/index.js +131 -0
- package/lib/commonjs/ui/ActionMenu/index.js.map +1 -0
- package/lib/commonjs/ui/Alert/index.js +122 -0
- package/lib/commonjs/ui/Alert/index.js.map +1 -0
- package/lib/commonjs/ui/Avatar/AvatarGroup.js +119 -0
- package/lib/commonjs/ui/Avatar/AvatarGroup.js.map +1 -0
- package/lib/commonjs/ui/Avatar/AvatarIcon.js +54 -0
- package/lib/commonjs/ui/Avatar/AvatarIcon.js.map +1 -0
- package/lib/commonjs/ui/Avatar/index.js +100 -0
- package/lib/commonjs/ui/Avatar/index.js.map +1 -0
- package/lib/commonjs/ui/Badge/index.js +77 -0
- package/lib/commonjs/ui/Badge/index.js.map +1 -0
- package/lib/commonjs/ui/BottomSheet/index.js +80 -0
- package/lib/commonjs/ui/BottomSheet/index.js.map +1 -0
- package/lib/commonjs/ui/Button/index.js +90 -0
- package/lib/commonjs/ui/Button/index.js.map +1 -0
- package/lib/commonjs/ui/ChannelFrozenBanner/index.js +51 -0
- package/lib/commonjs/ui/ChannelFrozenBanner/index.js.map +1 -0
- package/lib/commonjs/ui/Dialog/DialogBox.js +41 -0
- package/lib/commonjs/ui/Dialog/DialogBox.js.map +1 -0
- package/lib/commonjs/ui/Dialog/DialogSheet.js +86 -0
- package/lib/commonjs/ui/Dialog/DialogSheet.js.map +1 -0
- package/lib/commonjs/ui/Dialog/index.js +182 -0
- package/lib/commonjs/ui/Dialog/index.js.map +1 -0
- package/lib/commonjs/ui/Divider/index.js +49 -0
- package/lib/commonjs/ui/Divider/index.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelPreview/index.js +210 -0
- package/lib/commonjs/ui/GroupChannelPreview/index.js.map +1 -0
- package/lib/commonjs/ui/Header/index.js +237 -0
- package/lib/commonjs/ui/Header/index.js.map +1 -0
- package/lib/commonjs/ui/Icon/index.js +78 -0
- package/lib/commonjs/ui/Icon/index.js.map +1 -0
- package/lib/commonjs/ui/LoadingSpinner/index.js +82 -0
- package/lib/commonjs/ui/LoadingSpinner/index.js.map +1 -0
- package/lib/commonjs/ui/MenuBar/index.js +88 -0
- package/lib/commonjs/ui/MenuBar/index.js.map +1 -0
- package/lib/commonjs/ui/Modal/index.js +214 -0
- package/lib/commonjs/ui/Modal/index.js.map +1 -0
- package/lib/commonjs/ui/Placeholder/index.js +82 -0
- package/lib/commonjs/ui/Placeholder/index.js.map +1 -0
- package/lib/commonjs/ui/Prompt/index.js +175 -0
- package/lib/commonjs/ui/Prompt/index.js.map +1 -0
- package/lib/commonjs/ui/Switch/index.js +125 -0
- package/lib/commonjs/ui/Switch/index.js.map +1 -0
- package/lib/commonjs/ui/Text/index.js +71 -0
- package/lib/commonjs/ui/Text/index.js.map +1 -0
- package/lib/commonjs/ui/TextInput/index.js +58 -0
- package/lib/commonjs/ui/TextInput/index.js.map +1 -0
- package/lib/commonjs/ui/Toast/index.js +183 -0
- package/lib/commonjs/ui/Toast/index.js.map +1 -0
- package/lib/commonjs/ui/URLParsedText/index.js +64 -0
- package/lib/commonjs/ui/URLParsedText/index.js.map +1 -0
- package/lib/module/assets/bundle-icons.js +31 -0
- package/lib/module/assets/bundle-icons.js.map +1 -0
- package/lib/module/assets/icon/ic-chat-hide.png +0 -0
- package/lib/module/assets/icon/ic-chat-hide@2x.png +0 -0
- package/lib/module/assets/icon/ic-chat-hide@3x.png +0 -0
- package/lib/module/assets/icon/ic-chat-show.png +0 -0
- package/lib/module/assets/icon/ic-chat-show@2x.png +0 -0
- package/lib/module/assets/icon/ic-chat-show@3x.png +0 -0
- package/lib/module/assets/icon/icon-add.png +0 -0
- package/lib/module/assets/icon/icon-add@2x.png +0 -0
- package/lib/module/assets/icon/icon-add@3x.png +0 -0
- package/lib/module/assets/icon/icon-archive.png +0 -0
- package/lib/module/assets/icon/icon-archive@2x.png +0 -0
- package/lib/module/assets/icon/icon-archive@3x.png +0 -0
- package/lib/module/assets/icon/icon-arrow-left.png +0 -0
- package/lib/module/assets/icon/icon-arrow-left@2x.png +0 -0
- package/lib/module/assets/icon/icon-arrow-left@3x.png +0 -0
- package/lib/module/assets/icon/icon-ban.png +0 -0
- package/lib/module/assets/icon/icon-ban@2x.png +0 -0
- package/lib/module/assets/icon/icon-ban@3x.png +0 -0
- package/lib/module/assets/icon/icon-broadcast.png +0 -0
- package/lib/module/assets/icon/icon-broadcast@2x.png +0 -0
- package/lib/module/assets/icon/icon-broadcast@3x.png +0 -0
- package/lib/module/assets/icon/icon-camera.png +0 -0
- package/lib/module/assets/icon/icon-camera@2x.png +0 -0
- package/lib/module/assets/icon/icon-camera@3x.png +0 -0
- package/lib/module/assets/icon/icon-channels.png +0 -0
- package/lib/module/assets/icon/icon-channels@2x.png +0 -0
- package/lib/module/assets/icon/icon-channels@3x.png +0 -0
- package/lib/module/assets/icon/icon-chat-filled.png +0 -0
- package/lib/module/assets/icon/icon-chat-filled@2x.png +0 -0
- package/lib/module/assets/icon/icon-chat-filled@3x.png +0 -0
- package/lib/module/assets/icon/icon-chat.png +0 -0
- package/lib/module/assets/icon/icon-chat@2x.png +0 -0
- package/lib/module/assets/icon/icon-chat@3x.png +0 -0
- package/lib/module/assets/icon/icon-checkbox-off.png +0 -0
- package/lib/module/assets/icon/icon-checkbox-off@2x.png +0 -0
- package/lib/module/assets/icon/icon-checkbox-off@3x.png +0 -0
- package/lib/module/assets/icon/icon-checkbox-on.png +0 -0
- package/lib/module/assets/icon/icon-checkbox-on@2x.png +0 -0
- package/lib/module/assets/icon/icon-checkbox-on@3x.png +0 -0
- package/lib/module/assets/icon/icon-chevron-down.png +0 -0
- package/lib/module/assets/icon/icon-chevron-down@2x.png +0 -0
- package/lib/module/assets/icon/icon-chevron-down@3x.png +0 -0
- package/lib/module/assets/icon/icon-chevron-right.png +0 -0
- package/lib/module/assets/icon/icon-chevron-right@2x.png +0 -0
- package/lib/module/assets/icon/icon-chevron-right@3x.png +0 -0
- package/lib/module/assets/icon/icon-close.png +0 -0
- package/lib/module/assets/icon/icon-close@2x.png +0 -0
- package/lib/module/assets/icon/icon-close@3x.png +0 -0
- package/lib/module/assets/icon/icon-copy.png +0 -0
- package/lib/module/assets/icon/icon-copy@2x.png +0 -0
- package/lib/module/assets/icon/icon-copy@3x.png +0 -0
- package/lib/module/assets/icon/icon-create.png +0 -0
- package/lib/module/assets/icon/icon-create@2x.png +0 -0
- package/lib/module/assets/icon/icon-create@3x.png +0 -0
- package/lib/module/assets/icon/icon-delete.png +0 -0
- package/lib/module/assets/icon/icon-delete@2x.png +0 -0
- package/lib/module/assets/icon/icon-delete@3x.png +0 -0
- package/lib/module/assets/icon/icon-document.png +0 -0
- package/lib/module/assets/icon/icon-document@2x.png +0 -0
- package/lib/module/assets/icon/icon-document@3x.png +0 -0
- package/lib/module/assets/icon/icon-done-all.png +0 -0
- package/lib/module/assets/icon/icon-done-all@2x.png +0 -0
- package/lib/module/assets/icon/icon-done-all@3x.png +0 -0
- package/lib/module/assets/icon/icon-done.png +0 -0
- package/lib/module/assets/icon/icon-done@2x.png +0 -0
- package/lib/module/assets/icon/icon-done@3x.png +0 -0
- package/lib/module/assets/icon/icon-download.png +0 -0
- package/lib/module/assets/icon/icon-download@2x.png +0 -0
- package/lib/module/assets/icon/icon-download@3x.png +0 -0
- package/lib/module/assets/icon/icon-edit.png +0 -0
- package/lib/module/assets/icon/icon-edit@2x.png +0 -0
- package/lib/module/assets/icon/icon-edit@3x.png +0 -0
- package/lib/module/assets/icon/icon-emoji-more.png +0 -0
- package/lib/module/assets/icon/icon-emoji-more@2x.png +0 -0
- package/lib/module/assets/icon/icon-emoji-more@3x.png +0 -0
- package/lib/module/assets/icon/icon-error.png +0 -0
- package/lib/module/assets/icon/icon-error@2x.png +0 -0
- package/lib/module/assets/icon/icon-error@3x.png +0 -0
- package/lib/module/assets/icon/icon-file-audio.png +0 -0
- package/lib/module/assets/icon/icon-file-audio@2x.png +0 -0
- package/lib/module/assets/icon/icon-file-audio@3x.png +0 -0
- package/lib/module/assets/icon/icon-file-document.png +0 -0
- package/lib/module/assets/icon/icon-file-document@2x.png +0 -0
- package/lib/module/assets/icon/icon-file-document@3x.png +0 -0
- package/lib/module/assets/icon/icon-freeze.png +0 -0
- package/lib/module/assets/icon/icon-freeze@2x.png +0 -0
- package/lib/module/assets/icon/icon-freeze@3x.png +0 -0
- package/lib/module/assets/icon/icon-gif.png +0 -0
- package/lib/module/assets/icon/icon-gif@2x.png +0 -0
- package/lib/module/assets/icon/icon-gif@3x.png +0 -0
- package/lib/module/assets/icon/icon-info.png +0 -0
- package/lib/module/assets/icon/icon-info@2x.png +0 -0
- package/lib/module/assets/icon/icon-info@3x.png +0 -0
- package/lib/module/assets/icon/icon-leave.png +0 -0
- package/lib/module/assets/icon/icon-leave@2x.png +0 -0
- package/lib/module/assets/icon/icon-leave@3x.png +0 -0
- package/lib/module/assets/icon/icon-members.png +0 -0
- package/lib/module/assets/icon/icon-members@2x.png +0 -0
- package/lib/module/assets/icon/icon-members@3x.png +0 -0
- package/lib/module/assets/icon/icon-message.png +0 -0
- package/lib/module/assets/icon/icon-message@2x.png +0 -0
- package/lib/module/assets/icon/icon-message@3x.png +0 -0
- package/lib/module/assets/icon/icon-moderations.png +0 -0
- package/lib/module/assets/icon/icon-moderations@2x.png +0 -0
- package/lib/module/assets/icon/icon-moderations@3x.png +0 -0
- package/lib/module/assets/icon/icon-more.png +0 -0
- package/lib/module/assets/icon/icon-more@2x.png +0 -0
- package/lib/module/assets/icon/icon-more@3x.png +0 -0
- package/lib/module/assets/icon/icon-mute.png +0 -0
- package/lib/module/assets/icon/icon-mute@2x.png +0 -0
- package/lib/module/assets/icon/icon-mute@3x.png +0 -0
- package/lib/module/assets/icon/icon-notifications-filled.png +0 -0
- package/lib/module/assets/icon/icon-notifications-filled@2x.png +0 -0
- package/lib/module/assets/icon/icon-notifications-filled@3x.png +0 -0
- package/lib/module/assets/icon/icon-notifications-off-filled.png +0 -0
- package/lib/module/assets/icon/icon-notifications-off-filled@2x.png +0 -0
- package/lib/module/assets/icon/icon-notifications-off-filled@3x.png +0 -0
- package/lib/module/assets/icon/icon-notifications.png +0 -0
- package/lib/module/assets/icon/icon-notifications@2x.png +0 -0
- package/lib/module/assets/icon/icon-notifications@3x.png +0 -0
- package/lib/module/assets/icon/icon-operator.png +0 -0
- package/lib/module/assets/icon/icon-operator@2x.png +0 -0
- package/lib/module/assets/icon/icon-operator@3x.png +0 -0
- package/lib/module/assets/icon/icon-photo.png +0 -0
- package/lib/module/assets/icon/icon-photo@2x.png +0 -0
- package/lib/module/assets/icon/icon-photo@3x.png +0 -0
- package/lib/module/assets/icon/icon-play.png +0 -0
- package/lib/module/assets/icon/icon-play@2x.png +0 -0
- package/lib/module/assets/icon/icon-play@3x.png +0 -0
- package/lib/module/assets/icon/icon-plus.png +0 -0
- package/lib/module/assets/icon/icon-plus@2x.png +0 -0
- package/lib/module/assets/icon/icon-plus@3x.png +0 -0
- package/lib/module/assets/icon/icon-question.png +0 -0
- package/lib/module/assets/icon/icon-question@2x.png +0 -0
- package/lib/module/assets/icon/icon-question@3x.png +0 -0
- package/lib/module/assets/icon/icon-refresh.png +0 -0
- package/lib/module/assets/icon/icon-refresh@2x.png +0 -0
- package/lib/module/assets/icon/icon-refresh@3x.png +0 -0
- package/lib/module/assets/icon/icon-remove.png +0 -0
- package/lib/module/assets/icon/icon-remove@2x.png +0 -0
- package/lib/module/assets/icon/icon-remove@3x.png +0 -0
- package/lib/module/assets/icon/icon-reply-filled.png +0 -0
- package/lib/module/assets/icon/icon-reply-filled@2x.png +0 -0
- package/lib/module/assets/icon/icon-reply-filled@3x.png +0 -0
- package/lib/module/assets/icon/icon-reply.png +0 -0
- package/lib/module/assets/icon/icon-reply@2x.png +0 -0
- package/lib/module/assets/icon/icon-reply@3x.png +0 -0
- package/lib/module/assets/icon/icon-search.png +0 -0
- package/lib/module/assets/icon/icon-search@2x.png +0 -0
- package/lib/module/assets/icon/icon-search@3x.png +0 -0
- package/lib/module/assets/icon/icon-send.png +0 -0
- package/lib/module/assets/icon/icon-send@2x.png +0 -0
- package/lib/module/assets/icon/icon-send@3x.png +0 -0
- package/lib/module/assets/icon/icon-settings-filled.png +0 -0
- package/lib/module/assets/icon/icon-settings-filled@2x.png +0 -0
- package/lib/module/assets/icon/icon-settings-filled@3x.png +0 -0
- package/lib/module/assets/icon/icon-spinner.png +0 -0
- package/lib/module/assets/icon/icon-spinner@2x.png +0 -0
- package/lib/module/assets/icon/icon-spinner@3x.png +0 -0
- package/lib/module/assets/icon/icon-streaming.png +0 -0
- package/lib/module/assets/icon/icon-streaming@2x.png +0 -0
- package/lib/module/assets/icon/icon-streaming@3x.png +0 -0
- package/lib/module/assets/icon/icon-supergroup.png +0 -0
- package/lib/module/assets/icon/icon-supergroup@2x.png +0 -0
- package/lib/module/assets/icon/icon-supergroup@3x.png +0 -0
- package/lib/module/assets/icon/icon-theme.png +0 -0
- package/lib/module/assets/icon/icon-theme@2x.png +0 -0
- package/lib/module/assets/icon/icon-theme@3x.png +0 -0
- package/lib/module/assets/icon/icon-thumbnail-none.png +0 -0
- package/lib/module/assets/icon/icon-thumbnail-none@2x.png +0 -0
- package/lib/module/assets/icon/icon-thumbnail-none@3x.png +0 -0
- package/lib/module/assets/icon/icon-unarchive.png +0 -0
- package/lib/module/assets/icon/icon-unarchive@2x.png +0 -0
- package/lib/module/assets/icon/icon-unarchive@3x.png +0 -0
- package/lib/module/assets/icon/icon-user.png +0 -0
- package/lib/module/assets/icon/icon-user@2x.png +0 -0
- package/lib/module/assets/icon/icon-user@3x.png +0 -0
- package/lib/module/assets/icon/index.js +63 -0
- package/lib/module/assets/icon/index.js.map +1 -0
- package/lib/module/components/Image/Image.fastimage.js +74 -0
- package/lib/module/components/Image/Image.fastimage.js.map +1 -0
- package/lib/module/components/Image/Image.reactnative.js +24 -0
- package/lib/module/components/Image/Image.reactnative.js.map +1 -0
- package/lib/module/components/Image/index.js +20 -0
- package/lib/module/components/Image/index.js.map +1 -0
- package/lib/module/index.js +49 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/styles/HeaderStyleContext.js +29 -0
- package/lib/module/styles/HeaderStyleContext.js.map +1 -0
- package/lib/module/styles/createScaleFactor.js +20 -0
- package/lib/module/styles/createScaleFactor.js.map +1 -0
- package/lib/module/styles/createSelectByColorScheme.js +16 -0
- package/lib/module/styles/createSelectByColorScheme.js.map +1 -0
- package/lib/module/styles/createStyleSheet.js +53 -0
- package/lib/module/styles/createStyleSheet.js.map +1 -0
- package/lib/module/styles/createTypography.js +98 -0
- package/lib/module/styles/createTypography.js.map +1 -0
- package/lib/module/styles/getDefaultHeaderHeight.js +10 -0
- package/lib/module/styles/getDefaultHeaderHeight.js.map +1 -0
- package/lib/module/styles/useHeaderStyle.js +9 -0
- package/lib/module/styles/useHeaderStyle.js.map +1 -0
- package/lib/module/theme/DarkUIKitTheme.js +175 -0
- package/lib/module/theme/DarkUIKitTheme.js.map +1 -0
- package/lib/module/theme/LightUIKitTheme.js +175 -0
- package/lib/module/theme/LightUIKitTheme.js.map +1 -0
- package/lib/module/theme/Palette.js +40 -0
- package/lib/module/theme/Palette.js.map +1 -0
- package/lib/module/theme/UIKitThemeContext.js +4 -0
- package/lib/module/theme/UIKitThemeContext.js.map +1 -0
- package/lib/module/theme/UIKitThemeProvider.js +16 -0
- package/lib/module/theme/UIKitThemeProvider.js.map +1 -0
- package/lib/module/theme/createTheme.js +46 -0
- package/lib/module/theme/createTheme.js.map +1 -0
- package/lib/module/theme/useUIKitTheme.js +11 -0
- package/lib/module/theme/useUIKitTheme.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/ui/ActionMenu/index.js +108 -0
- package/lib/module/ui/ActionMenu/index.js.map +1 -0
- package/lib/module/ui/Alert/index.js +104 -0
- package/lib/module/ui/Alert/index.js.map +1 -0
- package/lib/module/ui/Avatar/AvatarGroup.js +104 -0
- package/lib/module/ui/Avatar/AvatarGroup.js.map +1 -0
- package/lib/module/ui/Avatar/AvatarIcon.js +40 -0
- package/lib/module/ui/Avatar/AvatarIcon.js.map +1 -0
- package/lib/module/ui/Avatar/index.js +78 -0
- package/lib/module/ui/Avatar/index.js.map +1 -0
- package/lib/module/ui/Badge/index.js +62 -0
- package/lib/module/ui/Badge/index.js.map +1 -0
- package/lib/module/ui/BottomSheet/index.js +65 -0
- package/lib/module/ui/BottomSheet/index.js.map +1 -0
- package/lib/module/ui/Button/index.js +75 -0
- package/lib/module/ui/Button/index.js.map +1 -0
- package/lib/module/ui/ChannelFrozenBanner/index.js +37 -0
- package/lib/module/ui/ChannelFrozenBanner/index.js.map +1 -0
- package/lib/module/ui/Dialog/DialogBox.js +28 -0
- package/lib/module/ui/Dialog/DialogBox.js.map +1 -0
- package/lib/module/ui/Dialog/DialogSheet.js +71 -0
- package/lib/module/ui/Dialog/DialogSheet.js.map +1 -0
- package/lib/module/ui/Dialog/index.js +144 -0
- package/lib/module/ui/Dialog/index.js.map +1 -0
- package/lib/module/ui/Divider/index.js +36 -0
- package/lib/module/ui/Divider/index.js.map +1 -0
- package/lib/module/ui/GroupChannelPreview/index.js +190 -0
- package/lib/module/ui/GroupChannelPreview/index.js.map +1 -0
- package/lib/module/ui/Header/index.js +218 -0
- package/lib/module/ui/Header/index.js.map +1 -0
- package/lib/module/ui/Icon/index.js +63 -0
- package/lib/module/ui/Icon/index.js.map +1 -0
- package/lib/module/ui/LoadingSpinner/index.js +64 -0
- package/lib/module/ui/LoadingSpinner/index.js.map +1 -0
- package/lib/module/ui/MenuBar/index.js +71 -0
- package/lib/module/ui/MenuBar/index.js.map +1 -0
- package/lib/module/ui/Modal/index.js +196 -0
- package/lib/module/ui/Modal/index.js.map +1 -0
- package/lib/module/ui/Placeholder/index.js +64 -0
- package/lib/module/ui/Placeholder/index.js.map +1 -0
- package/lib/module/ui/Prompt/index.js +151 -0
- package/lib/module/ui/Prompt/index.js.map +1 -0
- package/lib/module/ui/Switch/index.js +107 -0
- package/lib/module/ui/Switch/index.js.map +1 -0
- package/lib/module/ui/Text/index.js +59 -0
- package/lib/module/ui/Text/index.js.map +1 -0
- package/lib/module/ui/TextInput/index.js +43 -0
- package/lib/module/ui/TextInput/index.js.map +1 -0
- package/lib/module/ui/Toast/index.js +156 -0
- package/lib/module/ui/Toast/index.js.map +1 -0
- package/lib/module/ui/URLParsedText/index.js +45 -0
- package/lib/module/ui/URLParsedText/index.js.map +1 -0
- package/lib/typescript/src/assets/icon/index.d.ts +62 -0
- package/lib/typescript/src/components/Image/Image.fastimage.d.ts +3 -0
- package/lib/typescript/src/components/Image/Image.reactnative.d.ts +3 -0
- package/lib/typescript/src/components/Image/index.d.ts +15 -0
- package/lib/typescript/src/index.d.ts +45 -0
- package/lib/typescript/src/styles/HeaderStyleContext.d.ts +20 -0
- package/lib/typescript/src/styles/createScaleFactor.d.ts +6 -0
- package/lib/typescript/src/styles/createSelectByColorScheme.d.ts +9 -0
- package/lib/typescript/src/styles/createStyleSheet.d.ts +9 -0
- package/lib/typescript/src/styles/createTypography.d.ts +6 -0
- package/lib/typescript/src/styles/getDefaultHeaderHeight.d.ts +2 -0
- package/lib/typescript/src/styles/useHeaderStyle.d.ts +2 -0
- package/lib/typescript/src/theme/DarkUIKitTheme.d.ts +2 -0
- package/lib/typescript/src/theme/LightUIKitTheme.d.ts +2 -0
- package/lib/typescript/src/theme/Palette.d.ts +3 -0
- package/lib/typescript/src/theme/UIKitThemeContext.d.ts +4 -0
- package/lib/typescript/src/theme/UIKitThemeProvider.d.ts +7 -0
- package/lib/typescript/src/theme/createTheme.d.ts +10 -0
- package/lib/typescript/src/theme/useUIKitTheme.d.ts +3 -0
- package/lib/typescript/src/types.d.ts +167 -0
- package/lib/typescript/src/ui/ActionMenu/index.d.ts +17 -0
- package/lib/typescript/src/ui/Alert/index.d.ts +14 -0
- package/lib/typescript/src/ui/Avatar/AvatarGroup.d.ts +8 -0
- package/lib/typescript/src/ui/Avatar/AvatarIcon.d.ts +11 -0
- package/lib/typescript/src/ui/Avatar/index.d.ts +17 -0
- package/lib/typescript/src/ui/Badge/index.d.ts +12 -0
- package/lib/typescript/src/ui/BottomSheet/index.d.ts +19 -0
- package/lib/typescript/src/ui/Button/index.d.ts +14 -0
- package/lib/typescript/src/ui/ChannelFrozenBanner/index.d.ts +10 -0
- package/lib/typescript/src/ui/Dialog/DialogBox.d.ts +7 -0
- package/lib/typescript/src/ui/Dialog/DialogSheet.d.ts +17 -0
- package/lib/typescript/src/ui/Dialog/index.d.ts +46 -0
- package/lib/typescript/src/ui/Divider/index.d.ts +8 -0
- package/lib/typescript/src/ui/GroupChannelPreview/index.d.ts +17 -0
- package/lib/typescript/src/ui/Header/index.d.ts +29 -0
- package/lib/typescript/src/ui/Icon/index.d.ts +15 -0
- package/lib/typescript/src/ui/LoadingSpinner/index.d.ts +9 -0
- package/lib/typescript/src/ui/MenuBar/index.d.ts +15 -0
- package/lib/typescript/src/ui/Modal/index.d.ts +18 -0
- package/lib/typescript/src/ui/Placeholder/index.d.ts +11 -0
- package/lib/typescript/src/ui/Prompt/index.d.ts +18 -0
- package/lib/typescript/src/ui/Switch/index.d.ts +11 -0
- package/lib/typescript/src/ui/Text/index.d.ts +9 -0
- package/lib/typescript/src/ui/TextInput/index.d.ts +6 -0
- package/lib/typescript/src/ui/Toast/index.d.ts +18 -0
- package/lib/typescript/src/ui/URLParsedText/index.d.ts +9 -0
- package/package.json +84 -0
- package/src/assets/bundle-icons.js +37 -0
- package/src/assets/icon/ic-chat-hide.png +0 -0
- package/src/assets/icon/ic-chat-hide@2x.png +0 -0
- package/src/assets/icon/ic-chat-hide@3x.png +0 -0
- package/src/assets/icon/ic-chat-show.png +0 -0
- package/src/assets/icon/ic-chat-show@2x.png +0 -0
- package/src/assets/icon/ic-chat-show@3x.png +0 -0
- package/src/assets/icon/icon-add.png +0 -0
- package/src/assets/icon/icon-add@2x.png +0 -0
- package/src/assets/icon/icon-add@3x.png +0 -0
- package/src/assets/icon/icon-archive.png +0 -0
- package/src/assets/icon/icon-archive@2x.png +0 -0
- package/src/assets/icon/icon-archive@3x.png +0 -0
- package/src/assets/icon/icon-arrow-left.png +0 -0
- package/src/assets/icon/icon-arrow-left@2x.png +0 -0
- package/src/assets/icon/icon-arrow-left@3x.png +0 -0
- package/src/assets/icon/icon-ban.png +0 -0
- package/src/assets/icon/icon-ban@2x.png +0 -0
- package/src/assets/icon/icon-ban@3x.png +0 -0
- package/src/assets/icon/icon-broadcast.png +0 -0
- package/src/assets/icon/icon-broadcast@2x.png +0 -0
- package/src/assets/icon/icon-broadcast@3x.png +0 -0
- package/src/assets/icon/icon-camera.png +0 -0
- package/src/assets/icon/icon-camera@2x.png +0 -0
- package/src/assets/icon/icon-camera@3x.png +0 -0
- package/src/assets/icon/icon-channels.png +0 -0
- package/src/assets/icon/icon-channels@2x.png +0 -0
- package/src/assets/icon/icon-channels@3x.png +0 -0
- package/src/assets/icon/icon-chat-filled.png +0 -0
- package/src/assets/icon/icon-chat-filled@2x.png +0 -0
- package/src/assets/icon/icon-chat-filled@3x.png +0 -0
- package/src/assets/icon/icon-chat.png +0 -0
- package/src/assets/icon/icon-chat@2x.png +0 -0
- package/src/assets/icon/icon-chat@3x.png +0 -0
- package/src/assets/icon/icon-checkbox-off.png +0 -0
- package/src/assets/icon/icon-checkbox-off@2x.png +0 -0
- package/src/assets/icon/icon-checkbox-off@3x.png +0 -0
- package/src/assets/icon/icon-checkbox-on.png +0 -0
- package/src/assets/icon/icon-checkbox-on@2x.png +0 -0
- package/src/assets/icon/icon-checkbox-on@3x.png +0 -0
- package/src/assets/icon/icon-chevron-down.png +0 -0
- package/src/assets/icon/icon-chevron-down@2x.png +0 -0
- package/src/assets/icon/icon-chevron-down@3x.png +0 -0
- package/src/assets/icon/icon-chevron-right.png +0 -0
- package/src/assets/icon/icon-chevron-right@2x.png +0 -0
- package/src/assets/icon/icon-chevron-right@3x.png +0 -0
- package/src/assets/icon/icon-close.png +0 -0
- package/src/assets/icon/icon-close@2x.png +0 -0
- package/src/assets/icon/icon-close@3x.png +0 -0
- package/src/assets/icon/icon-copy.png +0 -0
- package/src/assets/icon/icon-copy@2x.png +0 -0
- package/src/assets/icon/icon-copy@3x.png +0 -0
- package/src/assets/icon/icon-create.png +0 -0
- package/src/assets/icon/icon-create@2x.png +0 -0
- package/src/assets/icon/icon-create@3x.png +0 -0
- package/src/assets/icon/icon-delete.png +0 -0
- package/src/assets/icon/icon-delete@2x.png +0 -0
- package/src/assets/icon/icon-delete@3x.png +0 -0
- package/src/assets/icon/icon-document.png +0 -0
- package/src/assets/icon/icon-document@2x.png +0 -0
- package/src/assets/icon/icon-document@3x.png +0 -0
- package/src/assets/icon/icon-done-all.png +0 -0
- package/src/assets/icon/icon-done-all@2x.png +0 -0
- package/src/assets/icon/icon-done-all@3x.png +0 -0
- package/src/assets/icon/icon-done.png +0 -0
- package/src/assets/icon/icon-done@2x.png +0 -0
- package/src/assets/icon/icon-done@3x.png +0 -0
- package/src/assets/icon/icon-download.png +0 -0
- package/src/assets/icon/icon-download@2x.png +0 -0
- package/src/assets/icon/icon-download@3x.png +0 -0
- package/src/assets/icon/icon-edit.png +0 -0
- package/src/assets/icon/icon-edit@2x.png +0 -0
- package/src/assets/icon/icon-edit@3x.png +0 -0
- package/src/assets/icon/icon-emoji-more.png +0 -0
- package/src/assets/icon/icon-emoji-more@2x.png +0 -0
- package/src/assets/icon/icon-emoji-more@3x.png +0 -0
- package/src/assets/icon/icon-error.png +0 -0
- package/src/assets/icon/icon-error@2x.png +0 -0
- package/src/assets/icon/icon-error@3x.png +0 -0
- package/src/assets/icon/icon-file-audio.png +0 -0
- package/src/assets/icon/icon-file-audio@2x.png +0 -0
- package/src/assets/icon/icon-file-audio@3x.png +0 -0
- package/src/assets/icon/icon-file-document.png +0 -0
- package/src/assets/icon/icon-file-document@2x.png +0 -0
- package/src/assets/icon/icon-file-document@3x.png +0 -0
- package/src/assets/icon/icon-freeze.png +0 -0
- package/src/assets/icon/icon-freeze@2x.png +0 -0
- package/src/assets/icon/icon-freeze@3x.png +0 -0
- package/src/assets/icon/icon-gif.png +0 -0
- package/src/assets/icon/icon-gif@2x.png +0 -0
- package/src/assets/icon/icon-gif@3x.png +0 -0
- package/src/assets/icon/icon-info.png +0 -0
- package/src/assets/icon/icon-info@2x.png +0 -0
- package/src/assets/icon/icon-info@3x.png +0 -0
- package/src/assets/icon/icon-leave.png +0 -0
- package/src/assets/icon/icon-leave@2x.png +0 -0
- package/src/assets/icon/icon-leave@3x.png +0 -0
- package/src/assets/icon/icon-members.png +0 -0
- package/src/assets/icon/icon-members@2x.png +0 -0
- package/src/assets/icon/icon-members@3x.png +0 -0
- package/src/assets/icon/icon-message.png +0 -0
- package/src/assets/icon/icon-message@2x.png +0 -0
- package/src/assets/icon/icon-message@3x.png +0 -0
- package/src/assets/icon/icon-moderations.png +0 -0
- package/src/assets/icon/icon-moderations@2x.png +0 -0
- package/src/assets/icon/icon-moderations@3x.png +0 -0
- package/src/assets/icon/icon-more.png +0 -0
- package/src/assets/icon/icon-more@2x.png +0 -0
- package/src/assets/icon/icon-more@3x.png +0 -0
- package/src/assets/icon/icon-mute.png +0 -0
- package/src/assets/icon/icon-mute@2x.png +0 -0
- package/src/assets/icon/icon-mute@3x.png +0 -0
- package/src/assets/icon/icon-notifications-filled.png +0 -0
- package/src/assets/icon/icon-notifications-filled@2x.png +0 -0
- package/src/assets/icon/icon-notifications-filled@3x.png +0 -0
- package/src/assets/icon/icon-notifications-off-filled.png +0 -0
- package/src/assets/icon/icon-notifications-off-filled@2x.png +0 -0
- package/src/assets/icon/icon-notifications-off-filled@3x.png +0 -0
- package/src/assets/icon/icon-notifications.png +0 -0
- package/src/assets/icon/icon-notifications@2x.png +0 -0
- package/src/assets/icon/icon-notifications@3x.png +0 -0
- package/src/assets/icon/icon-operator.png +0 -0
- package/src/assets/icon/icon-operator@2x.png +0 -0
- package/src/assets/icon/icon-operator@3x.png +0 -0
- package/src/assets/icon/icon-photo.png +0 -0
- package/src/assets/icon/icon-photo@2x.png +0 -0
- package/src/assets/icon/icon-photo@3x.png +0 -0
- package/src/assets/icon/icon-play.png +0 -0
- package/src/assets/icon/icon-play@2x.png +0 -0
- package/src/assets/icon/icon-play@3x.png +0 -0
- package/src/assets/icon/icon-plus.png +0 -0
- package/src/assets/icon/icon-plus@2x.png +0 -0
- package/src/assets/icon/icon-plus@3x.png +0 -0
- package/src/assets/icon/icon-question.png +0 -0
- package/src/assets/icon/icon-question@2x.png +0 -0
- package/src/assets/icon/icon-question@3x.png +0 -0
- package/src/assets/icon/icon-refresh.png +0 -0
- package/src/assets/icon/icon-refresh@2x.png +0 -0
- package/src/assets/icon/icon-refresh@3x.png +0 -0
- package/src/assets/icon/icon-remove.png +0 -0
- package/src/assets/icon/icon-remove@2x.png +0 -0
- package/src/assets/icon/icon-remove@3x.png +0 -0
- package/src/assets/icon/icon-reply-filled.png +0 -0
- package/src/assets/icon/icon-reply-filled@2x.png +0 -0
- package/src/assets/icon/icon-reply-filled@3x.png +0 -0
- package/src/assets/icon/icon-reply.png +0 -0
- package/src/assets/icon/icon-reply@2x.png +0 -0
- package/src/assets/icon/icon-reply@3x.png +0 -0
- package/src/assets/icon/icon-search.png +0 -0
- package/src/assets/icon/icon-search@2x.png +0 -0
- package/src/assets/icon/icon-search@3x.png +0 -0
- package/src/assets/icon/icon-send.png +0 -0
- package/src/assets/icon/icon-send@2x.png +0 -0
- package/src/assets/icon/icon-send@3x.png +0 -0
- package/src/assets/icon/icon-settings-filled.png +0 -0
- package/src/assets/icon/icon-settings-filled@2x.png +0 -0
- package/src/assets/icon/icon-settings-filled@3x.png +0 -0
- package/src/assets/icon/icon-spinner.png +0 -0
- package/src/assets/icon/icon-spinner@2x.png +0 -0
- package/src/assets/icon/icon-spinner@3x.png +0 -0
- package/src/assets/icon/icon-streaming.png +0 -0
- package/src/assets/icon/icon-streaming@2x.png +0 -0
- package/src/assets/icon/icon-streaming@3x.png +0 -0
- package/src/assets/icon/icon-supergroup.png +0 -0
- package/src/assets/icon/icon-supergroup@2x.png +0 -0
- package/src/assets/icon/icon-supergroup@3x.png +0 -0
- package/src/assets/icon/icon-theme.png +0 -0
- package/src/assets/icon/icon-theme@2x.png +0 -0
- package/src/assets/icon/icon-theme@3x.png +0 -0
- package/src/assets/icon/icon-thumbnail-none.png +0 -0
- package/src/assets/icon/icon-thumbnail-none@2x.png +0 -0
- package/src/assets/icon/icon-thumbnail-none@3x.png +0 -0
- package/src/assets/icon/icon-unarchive.png +0 -0
- package/src/assets/icon/icon-unarchive@2x.png +0 -0
- package/src/assets/icon/icon-unarchive@3x.png +0 -0
- package/src/assets/icon/icon-user.png +0 -0
- package/src/assets/icon/icon-user@2x.png +0 -0
- package/src/assets/icon/icon-user@3x.png +0 -0
- package/src/assets/icon/index.ts +62 -0
- package/src/components/Image/Image.fastimage.tsx +64 -0
- package/src/components/Image/Image.reactnative.tsx +17 -0
- package/src/components/Image/index.ts +27 -0
- package/src/index.ts +64 -0
- package/src/styles/HeaderStyleContext.tsx +52 -0
- package/src/styles/createScaleFactor.ts +17 -0
- package/src/styles/createSelectByColorScheme.ts +17 -0
- package/src/styles/createStyleSheet.ts +59 -0
- package/src/styles/createTypography.ts +103 -0
- package/src/styles/getDefaultHeaderHeight.ts +9 -0
- package/src/styles/useHeaderStyle.ts +9 -0
- package/src/theme/DarkUIKitTheme.ts +176 -0
- package/src/theme/LightUIKitTheme.ts +176 -0
- package/src/theme/Palette.ts +49 -0
- package/src/theme/UIKitThemeContext.tsx +7 -0
- package/src/theme/UIKitThemeProvider.tsx +12 -0
- package/src/theme/createTheme.ts +42 -0
- package/src/theme/useUIKitTheme.ts +12 -0
- package/src/types.ts +202 -0
- package/src/ui/ActionMenu/index.tsx +115 -0
- package/src/ui/Alert/index.tsx +119 -0
- package/src/ui/Avatar/AvatarGroup.tsx +86 -0
- package/src/ui/Avatar/AvatarIcon.tsx +40 -0
- package/src/ui/Avatar/index.tsx +70 -0
- package/src/ui/Badge/index.tsx +63 -0
- package/src/ui/BottomSheet/index.tsx +59 -0
- package/src/ui/Button/index.tsx +76 -0
- package/src/ui/ChannelFrozenBanner/index.tsx +39 -0
- package/src/ui/Dialog/DialogBox.tsx +26 -0
- package/src/ui/Dialog/DialogSheet.tsx +72 -0
- package/src/ui/Dialog/index.tsx +185 -0
- package/src/ui/Divider/index.tsx +32 -0
- package/src/ui/GroupChannelPreview/index.tsx +193 -0
- package/src/ui/Header/index.tsx +188 -0
- package/src/ui/Icon/index.tsx +64 -0
- package/src/ui/LoadingSpinner/index.tsx +46 -0
- package/src/ui/MenuBar/index.tsx +94 -0
- package/src/ui/Modal/index.tsx +195 -0
- package/src/ui/Placeholder/index.tsx +80 -0
- package/src/ui/Prompt/index.tsx +158 -0
- package/src/ui/Switch/index.tsx +96 -0
- package/src/ui/Text/index.tsx +52 -0
- package/src/ui/TextInput/index.tsx +46 -0
- package/src/ui/Toast/index.tsx +122 -0
- package/src/ui/URLParsedText/index.tsx +52 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { StyleProp, View, ViewStyle } from 'react-native';
|
|
3
|
+
|
|
4
|
+
import createStyleSheet from '../../styles/createStyleSheet';
|
|
5
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
6
|
+
import Icon from '../Icon';
|
|
7
|
+
import Text from '../Text';
|
|
8
|
+
|
|
9
|
+
type Props = {
|
|
10
|
+
style?: StyleProp<ViewStyle>;
|
|
11
|
+
};
|
|
12
|
+
const DialogSheet: React.FC<Props> & { Item: typeof SheetItem } = ({ style, children }) => {
|
|
13
|
+
const { colors } = useUIKitTheme();
|
|
14
|
+
return (
|
|
15
|
+
<View style={[styles.container, { backgroundColor: colors.ui.dialog.default.none.background }, style]}>
|
|
16
|
+
{children}
|
|
17
|
+
</View>
|
|
18
|
+
);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type SheetItemProps = {
|
|
22
|
+
icon?: keyof typeof Icon.Assets;
|
|
23
|
+
iconColor?: string;
|
|
24
|
+
title: string;
|
|
25
|
+
titleColor?: string;
|
|
26
|
+
};
|
|
27
|
+
const SheetItem: React.FC<SheetItemProps> = ({ icon, title, iconColor, titleColor }) => {
|
|
28
|
+
const { colors } = useUIKitTheme();
|
|
29
|
+
return (
|
|
30
|
+
<View style={[styles.sheetItemContainer, { backgroundColor: colors.ui.dialog.default.none.background }]}>
|
|
31
|
+
{icon && (
|
|
32
|
+
<Icon
|
|
33
|
+
icon={icon}
|
|
34
|
+
color={iconColor ?? colors.ui.dialog.default.none.highlight}
|
|
35
|
+
containerStyle={styles.sheetItemIcon}
|
|
36
|
+
/>
|
|
37
|
+
)}
|
|
38
|
+
<Text
|
|
39
|
+
subtitle1
|
|
40
|
+
numberOfLines={1}
|
|
41
|
+
color={titleColor ?? colors.ui.dialog.default.none.text}
|
|
42
|
+
style={styles.sheetItemText}
|
|
43
|
+
>
|
|
44
|
+
{title}
|
|
45
|
+
</Text>
|
|
46
|
+
</View>
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const styles = createStyleSheet({
|
|
51
|
+
container: {
|
|
52
|
+
overflow: 'hidden',
|
|
53
|
+
flexDirection: 'column',
|
|
54
|
+
width: '100%',
|
|
55
|
+
borderTopLeftRadius: 8,
|
|
56
|
+
borderTopRightRadius: 8,
|
|
57
|
+
},
|
|
58
|
+
sheetItemContainer: {
|
|
59
|
+
flexDirection: 'row',
|
|
60
|
+
alignItems: 'center',
|
|
61
|
+
height: 48,
|
|
62
|
+
},
|
|
63
|
+
sheetItemIcon: {
|
|
64
|
+
marginLeft: 16,
|
|
65
|
+
},
|
|
66
|
+
sheetItemText: {
|
|
67
|
+
marginHorizontal: 24,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
DialogSheet.Item = SheetItem;
|
|
72
|
+
export default DialogSheet;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import React, { useCallback, useContext, useRef } from 'react';
|
|
2
|
+
|
|
3
|
+
import { useForceUpdate } from '@sendbird/uikit-utils';
|
|
4
|
+
|
|
5
|
+
import type { ActionMenuItem } from '../ActionMenu';
|
|
6
|
+
import ActionMenu from '../ActionMenu';
|
|
7
|
+
import type { AlertItem } from '../Alert';
|
|
8
|
+
import Alert from '../Alert';
|
|
9
|
+
import type { BottomSheetItem } from '../BottomSheet';
|
|
10
|
+
import BottomSheet from '../BottomSheet';
|
|
11
|
+
import type { PromptItem } from '../Prompt';
|
|
12
|
+
import Prompt from '../Prompt';
|
|
13
|
+
|
|
14
|
+
type DialogJob =
|
|
15
|
+
| {
|
|
16
|
+
type: 'ActionMenu';
|
|
17
|
+
props: ActionMenuItem;
|
|
18
|
+
}
|
|
19
|
+
| {
|
|
20
|
+
type: 'Alert';
|
|
21
|
+
props: AlertItem;
|
|
22
|
+
}
|
|
23
|
+
| {
|
|
24
|
+
type: 'Prompt';
|
|
25
|
+
props: PromptItem;
|
|
26
|
+
}
|
|
27
|
+
| {
|
|
28
|
+
type: 'BottomSheet';
|
|
29
|
+
props: BottomSheetItem;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
type DialogPropsBy<T extends DialogJob['type'], U extends DialogJob = DialogJob> = U extends { type: T; props: infer P }
|
|
33
|
+
? P
|
|
34
|
+
: never;
|
|
35
|
+
|
|
36
|
+
type DialogContextType = {
|
|
37
|
+
openMenu: (props: DialogPropsBy<'ActionMenu'>) => void;
|
|
38
|
+
alert: (props: DialogPropsBy<'Alert'>) => void;
|
|
39
|
+
openPrompt: (props: DialogPropsBy<'Prompt'>) => void;
|
|
40
|
+
openSheet: (props: DialogPropsBy<'BottomSheet'>) => void;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const AlertContext = React.createContext<Pick<DialogContextType, 'alert'> | null>(null);
|
|
44
|
+
const ActionMenuContext = React.createContext<Pick<DialogContextType, 'openMenu'> | null>(null);
|
|
45
|
+
const PromptContext = React.createContext<Pick<DialogContextType, 'openPrompt'> | null>(null);
|
|
46
|
+
const BottomSheetContext = React.createContext<Pick<DialogContextType, 'openSheet'> | null>(null);
|
|
47
|
+
|
|
48
|
+
type Props = {
|
|
49
|
+
defaultLabels?: {
|
|
50
|
+
alert?: { ok?: string };
|
|
51
|
+
prompt?: { placeholder?: string; ok?: string; cancel?: string };
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
const DISMISS_TIMEOUT = 3000;
|
|
55
|
+
export const DialogProvider: React.FC<Props> = ({ defaultLabels, children }) => {
|
|
56
|
+
const waitDismissTimeout = useRef<NodeJS.Timeout>();
|
|
57
|
+
const waitDismissPromise = useRef<() => void>();
|
|
58
|
+
const waitDismiss = useCallback((resolver: () => void) => {
|
|
59
|
+
waitDismissPromise.current = resolver;
|
|
60
|
+
waitDismissTimeout.current = setTimeout(completeDismiss, DISMISS_TIMEOUT);
|
|
61
|
+
}, []);
|
|
62
|
+
const completeDismiss = useCallback(() => {
|
|
63
|
+
if (waitDismissTimeout.current) clearTimeout(waitDismissTimeout.current);
|
|
64
|
+
if (waitDismissPromise.current) waitDismissPromise.current();
|
|
65
|
+
waitDismissTimeout.current = undefined;
|
|
66
|
+
waitDismissPromise.current = undefined;
|
|
67
|
+
}, []);
|
|
68
|
+
|
|
69
|
+
const render = useForceUpdate();
|
|
70
|
+
const dialogQueue = useRef<DialogJob[]>([]);
|
|
71
|
+
const workingDialogJob = useRef<DialogJob>();
|
|
72
|
+
const visibleState = useRef(false);
|
|
73
|
+
|
|
74
|
+
const isProcessing = () => Boolean(workingDialogJob.current);
|
|
75
|
+
const updateToShow = useCallback(() => {
|
|
76
|
+
visibleState.current = true;
|
|
77
|
+
render();
|
|
78
|
+
}, []);
|
|
79
|
+
const updateToHide = useCallback((): Promise<void> => {
|
|
80
|
+
return new Promise((resolve) => {
|
|
81
|
+
visibleState.current = false;
|
|
82
|
+
render();
|
|
83
|
+
waitDismiss(resolve);
|
|
84
|
+
});
|
|
85
|
+
}, []);
|
|
86
|
+
const consumeQueue = useCallback(() => {
|
|
87
|
+
completeDismiss();
|
|
88
|
+
const job = dialogQueue.current.shift();
|
|
89
|
+
if (job) {
|
|
90
|
+
workingDialogJob.current = job;
|
|
91
|
+
updateToShow();
|
|
92
|
+
} else {
|
|
93
|
+
workingDialogJob.current = undefined;
|
|
94
|
+
}
|
|
95
|
+
}, []);
|
|
96
|
+
|
|
97
|
+
const createJob =
|
|
98
|
+
<T extends DialogJob['type']>(type: T) =>
|
|
99
|
+
(props: DialogPropsBy<T>) => {
|
|
100
|
+
const jobItem = { type, props } as DialogJob;
|
|
101
|
+
if (isProcessing()) dialogQueue.current.push(jobItem);
|
|
102
|
+
else {
|
|
103
|
+
workingDialogJob.current = jobItem;
|
|
104
|
+
updateToShow();
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const alert = useCallback(createJob('Alert'), []);
|
|
109
|
+
const openMenu = useCallback(createJob('ActionMenu'), []);
|
|
110
|
+
const openPrompt = useCallback(createJob('Prompt'), []);
|
|
111
|
+
const openSheet = useCallback(createJob('BottomSheet'), []);
|
|
112
|
+
|
|
113
|
+
return (
|
|
114
|
+
<AlertContext.Provider value={{ alert }}>
|
|
115
|
+
<ActionMenuContext.Provider value={{ openMenu }}>
|
|
116
|
+
<PromptContext.Provider value={{ openPrompt }}>
|
|
117
|
+
<BottomSheetContext.Provider value={{ openSheet }}>
|
|
118
|
+
{children}
|
|
119
|
+
{workingDialogJob.current?.type === 'ActionMenu' && (
|
|
120
|
+
<ActionMenu
|
|
121
|
+
onHide={updateToHide}
|
|
122
|
+
onDismiss={consumeQueue}
|
|
123
|
+
visible={visibleState.current}
|
|
124
|
+
title={workingDialogJob.current.props.title}
|
|
125
|
+
menuItems={workingDialogJob.current.props.menuItems}
|
|
126
|
+
/>
|
|
127
|
+
)}
|
|
128
|
+
{workingDialogJob.current?.type === 'Alert' && (
|
|
129
|
+
<Alert
|
|
130
|
+
onHide={updateToHide}
|
|
131
|
+
onDismiss={consumeQueue}
|
|
132
|
+
visible={visibleState.current}
|
|
133
|
+
title={workingDialogJob.current.props.title}
|
|
134
|
+
message={workingDialogJob.current.props.message}
|
|
135
|
+
buttons={workingDialogJob.current.props.buttons ?? [{ text: defaultLabels?.alert?.ok || 'OK' }]}
|
|
136
|
+
/>
|
|
137
|
+
)}
|
|
138
|
+
{workingDialogJob.current?.type === 'Prompt' && (
|
|
139
|
+
<Prompt
|
|
140
|
+
onHide={updateToHide}
|
|
141
|
+
onDismiss={consumeQueue}
|
|
142
|
+
visible={visibleState.current}
|
|
143
|
+
title={workingDialogJob.current.props.title}
|
|
144
|
+
onSubmit={workingDialogJob.current.props.onSubmit}
|
|
145
|
+
defaultValue={workingDialogJob.current.props.defaultValue}
|
|
146
|
+
submitLabel={workingDialogJob.current.props.submitLabel ?? defaultLabels?.prompt?.ok}
|
|
147
|
+
cancelLabel={workingDialogJob.current.props.cancelLabel ?? defaultLabels?.prompt?.cancel}
|
|
148
|
+
placeholder={workingDialogJob.current.props.placeholder ?? defaultLabels?.prompt?.placeholder}
|
|
149
|
+
/>
|
|
150
|
+
)}
|
|
151
|
+
{workingDialogJob.current?.type === 'BottomSheet' && (
|
|
152
|
+
<BottomSheet
|
|
153
|
+
onHide={updateToHide}
|
|
154
|
+
onDismiss={consumeQueue}
|
|
155
|
+
visible={visibleState.current}
|
|
156
|
+
sheetItems={workingDialogJob.current.props.sheetItems}
|
|
157
|
+
/>
|
|
158
|
+
)}
|
|
159
|
+
</BottomSheetContext.Provider>
|
|
160
|
+
</PromptContext.Provider>
|
|
161
|
+
</ActionMenuContext.Provider>
|
|
162
|
+
</AlertContext.Provider>
|
|
163
|
+
);
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
export const useActionMenu = () => {
|
|
167
|
+
const context = useContext(ActionMenuContext);
|
|
168
|
+
if (!context) throw new Error('ActionMenuContext is not provided, wrap your app with DialogProvider');
|
|
169
|
+
return context;
|
|
170
|
+
};
|
|
171
|
+
export const useAlert = () => {
|
|
172
|
+
const context = useContext(AlertContext);
|
|
173
|
+
if (!context) throw new Error('AlertContext is not provided, wrap your app with DialogProvider');
|
|
174
|
+
return context;
|
|
175
|
+
};
|
|
176
|
+
export const usePrompt = () => {
|
|
177
|
+
const context = useContext(PromptContext);
|
|
178
|
+
if (!context) throw new Error('PromptContext is not provided, wrap your app with DialogProvider');
|
|
179
|
+
return context;
|
|
180
|
+
};
|
|
181
|
+
export const useBottomSheet = () => {
|
|
182
|
+
const context = useContext(BottomSheetContext);
|
|
183
|
+
if (!context) throw new Error('BottomSheetContext is not provided, wrap your app with DialogProvider');
|
|
184
|
+
return context;
|
|
185
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { StyleProp, View, ViewStyle } from 'react-native';
|
|
3
|
+
|
|
4
|
+
import createStyleSheet from '../../styles/createStyleSheet';
|
|
5
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
6
|
+
|
|
7
|
+
type Props = {
|
|
8
|
+
style?: StyleProp<ViewStyle>;
|
|
9
|
+
space?: number;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const Divider: React.FC<Props> = ({ style, space }) => {
|
|
13
|
+
const { colors } = useUIKitTheme();
|
|
14
|
+
return (
|
|
15
|
+
<View style={[style, styles.divider, { paddingHorizontal: space }]}>
|
|
16
|
+
<View style={[styles.inner, { backgroundColor: colors.onBackground04 }]} />
|
|
17
|
+
</View>
|
|
18
|
+
);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const styles = createStyleSheet({
|
|
22
|
+
divider: {
|
|
23
|
+
width: '100%',
|
|
24
|
+
height: 1,
|
|
25
|
+
},
|
|
26
|
+
inner: {
|
|
27
|
+
width: '100%',
|
|
28
|
+
height: '100%',
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export default Divider;
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
|
|
4
|
+
import { conditionChaining } from '@sendbird/uikit-utils';
|
|
5
|
+
|
|
6
|
+
import Image from '../../components/Image';
|
|
7
|
+
import createStyleSheet from '../../styles/createStyleSheet';
|
|
8
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
9
|
+
import Badge from '../Badge';
|
|
10
|
+
import Icon from '../Icon';
|
|
11
|
+
import Text from '../Text';
|
|
12
|
+
|
|
13
|
+
type Props = {
|
|
14
|
+
customCover?: React.ReactElement;
|
|
15
|
+
coverUrl: string;
|
|
16
|
+
|
|
17
|
+
title: string;
|
|
18
|
+
titleCaption: string;
|
|
19
|
+
bodyIcon?: keyof typeof Icon.Assets;
|
|
20
|
+
body: string;
|
|
21
|
+
|
|
22
|
+
memberCount?: number;
|
|
23
|
+
badgeCount: number;
|
|
24
|
+
maxBadgeCount?: number;
|
|
25
|
+
|
|
26
|
+
frozen?: boolean;
|
|
27
|
+
notificationOff?: boolean;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const GroupChannelPreview: React.FC<Props> = ({
|
|
31
|
+
customCover,
|
|
32
|
+
coverUrl,
|
|
33
|
+
memberCount,
|
|
34
|
+
badgeCount,
|
|
35
|
+
maxBadgeCount,
|
|
36
|
+
body,
|
|
37
|
+
bodyIcon,
|
|
38
|
+
title,
|
|
39
|
+
titleCaption,
|
|
40
|
+
frozen,
|
|
41
|
+
notificationOff,
|
|
42
|
+
}) => {
|
|
43
|
+
const { colors } = useUIKitTheme();
|
|
44
|
+
const color = colors.ui.groupChannelPreview;
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<View style={[styles.container, { backgroundColor: color.default.none.background }]}>
|
|
48
|
+
<View style={styles.coverContainer}>
|
|
49
|
+
{conditionChaining(
|
|
50
|
+
[Boolean(customCover)],
|
|
51
|
+
[
|
|
52
|
+
customCover,
|
|
53
|
+
<Image
|
|
54
|
+
resizeMode={'cover'}
|
|
55
|
+
style={[styles.channelCover, { backgroundColor: color.default.none.coverBackground }]}
|
|
56
|
+
source={{ uri: coverUrl }}
|
|
57
|
+
/>,
|
|
58
|
+
],
|
|
59
|
+
)}
|
|
60
|
+
</View>
|
|
61
|
+
<View style={styles.rightSection}>
|
|
62
|
+
<View style={styles.rightTopSection}>
|
|
63
|
+
<View style={styles.channelInfo}>
|
|
64
|
+
<Text numberOfLines={1} subtitle1 style={styles.channelInfoTitle} color={color.default.none.textTitle}>
|
|
65
|
+
{title}
|
|
66
|
+
</Text>
|
|
67
|
+
{Boolean(memberCount) && (
|
|
68
|
+
<Text caption1 style={styles.channelInfoMemberCount} color={color.default.none.memberCount}>
|
|
69
|
+
{memberCount}
|
|
70
|
+
</Text>
|
|
71
|
+
)}
|
|
72
|
+
{frozen && (
|
|
73
|
+
<Icon size={16} icon={'freeze'} color={colors.primary} containerStyle={styles.channelInfoFrozen} />
|
|
74
|
+
)}
|
|
75
|
+
{notificationOff && <Icon size={16} icon={'notifications-off-filled'} color={colors.onBackground03} />}
|
|
76
|
+
</View>
|
|
77
|
+
<View style={styles.titleCaption}>
|
|
78
|
+
<Text caption2 color={color.default.none.textTitleCaption}>
|
|
79
|
+
{titleCaption}
|
|
80
|
+
</Text>
|
|
81
|
+
</View>
|
|
82
|
+
</View>
|
|
83
|
+
|
|
84
|
+
<View style={styles.rightBottomSection}>
|
|
85
|
+
<View style={[styles.body, bodyIcon && { alignItems: 'center' }]}>
|
|
86
|
+
{bodyIcon && (
|
|
87
|
+
<Icon
|
|
88
|
+
size={18}
|
|
89
|
+
icon={bodyIcon}
|
|
90
|
+
color={color.default.none.bodyIcon}
|
|
91
|
+
containerStyle={[
|
|
92
|
+
styles.bodyIcon,
|
|
93
|
+
{ backgroundColor: colors.ui.groupChannelPreview.default.none.bodyIconBackground },
|
|
94
|
+
]}
|
|
95
|
+
/>
|
|
96
|
+
)}
|
|
97
|
+
<Text body3 numberOfLines={1} style={styles.bodyText} color={color.default.none.textBody}>
|
|
98
|
+
{body}
|
|
99
|
+
</Text>
|
|
100
|
+
</View>
|
|
101
|
+
<View>{badgeCount > 0 && <Badge count={badgeCount} maxCount={maxBadgeCount} />}</View>
|
|
102
|
+
</View>
|
|
103
|
+
</View>
|
|
104
|
+
<Separator color={color.default.none.separator} />
|
|
105
|
+
</View>
|
|
106
|
+
);
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
type SeparatorProps = { color: string };
|
|
110
|
+
const Separator = ({ color }: SeparatorProps) => <View style={[styles.separator, { backgroundColor: color }]} />;
|
|
111
|
+
|
|
112
|
+
const styles = createStyleSheet({
|
|
113
|
+
container: {
|
|
114
|
+
width: '100%',
|
|
115
|
+
flexDirection: 'row',
|
|
116
|
+
paddingHorizontal: 16,
|
|
117
|
+
paddingVertical: 10,
|
|
118
|
+
alignItems: 'center',
|
|
119
|
+
},
|
|
120
|
+
coverContainer: {
|
|
121
|
+
marginRight: 16,
|
|
122
|
+
},
|
|
123
|
+
channelCover: {
|
|
124
|
+
width: 56,
|
|
125
|
+
height: 56,
|
|
126
|
+
borderRadius: 28,
|
|
127
|
+
},
|
|
128
|
+
rightSection: {
|
|
129
|
+
flex: 1,
|
|
130
|
+
},
|
|
131
|
+
rightTopSection: {
|
|
132
|
+
flexDirection: 'row',
|
|
133
|
+
marginBottom: 4,
|
|
134
|
+
},
|
|
135
|
+
channelInfo: {
|
|
136
|
+
flex: 1,
|
|
137
|
+
marginRight: 4,
|
|
138
|
+
alignItems: 'center',
|
|
139
|
+
flexDirection: 'row',
|
|
140
|
+
},
|
|
141
|
+
channelInfoTitle: {
|
|
142
|
+
flexShrink: 1,
|
|
143
|
+
marginRight: 4,
|
|
144
|
+
},
|
|
145
|
+
channelInfoMemberCount: {
|
|
146
|
+
paddingTop: 2,
|
|
147
|
+
marginRight: 4,
|
|
148
|
+
},
|
|
149
|
+
channelInfoFrozen: {
|
|
150
|
+
marginRight: 4,
|
|
151
|
+
},
|
|
152
|
+
titleCaption: {
|
|
153
|
+
marginLeft: 4,
|
|
154
|
+
paddingTop: 2,
|
|
155
|
+
},
|
|
156
|
+
rightBottomSection: {
|
|
157
|
+
flex: 1,
|
|
158
|
+
height: '100%',
|
|
159
|
+
flexDirection: 'row',
|
|
160
|
+
},
|
|
161
|
+
body: {
|
|
162
|
+
marginRight: 4,
|
|
163
|
+
flex: 1,
|
|
164
|
+
justifyContent: 'center',
|
|
165
|
+
alignItems: 'flex-start',
|
|
166
|
+
flexDirection: 'row',
|
|
167
|
+
},
|
|
168
|
+
bodyText: {
|
|
169
|
+
flex: 1,
|
|
170
|
+
},
|
|
171
|
+
bodyIcon: {
|
|
172
|
+
borderRadius: 8,
|
|
173
|
+
width: 26,
|
|
174
|
+
height: 26,
|
|
175
|
+
marginRight: 4,
|
|
176
|
+
},
|
|
177
|
+
unreadBadge: {
|
|
178
|
+
minWidth: 20,
|
|
179
|
+
minHeight: 20,
|
|
180
|
+
borderRadius: 99,
|
|
181
|
+
alignItems: 'center',
|
|
182
|
+
justifyContent: 'center',
|
|
183
|
+
},
|
|
184
|
+
separator: {
|
|
185
|
+
position: 'absolute',
|
|
186
|
+
right: 0,
|
|
187
|
+
bottom: 0,
|
|
188
|
+
height: 1,
|
|
189
|
+
width: '84.5%',
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
export default React.memo(GroupChannelPreview);
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TouchableOpacity, TouchableOpacityProps, View, useWindowDimensions } from 'react-native';
|
|
3
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
4
|
+
|
|
5
|
+
import { conditionChaining } from '@sendbird/uikit-utils';
|
|
6
|
+
|
|
7
|
+
import type { BaseHeaderProps } from '../../index';
|
|
8
|
+
import createStyleSheet from '../../styles/createStyleSheet';
|
|
9
|
+
import getDefaultHeaderHeight from '../../styles/getDefaultHeaderHeight';
|
|
10
|
+
import useHeaderStyle from '../../styles/useHeaderStyle';
|
|
11
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
12
|
+
import Text, { TextProps } from '../Text';
|
|
13
|
+
|
|
14
|
+
type HeaderElement = string | React.ReactElement | null;
|
|
15
|
+
type HeaderProps = BaseHeaderProps<
|
|
16
|
+
{
|
|
17
|
+
title?: HeaderElement;
|
|
18
|
+
left?: HeaderElement;
|
|
19
|
+
right?: HeaderElement;
|
|
20
|
+
onPressLeft?: () => void;
|
|
21
|
+
onPressRight?: () => void;
|
|
22
|
+
},
|
|
23
|
+
{ clearTitleMargin?: boolean }
|
|
24
|
+
>;
|
|
25
|
+
|
|
26
|
+
const AlignMapper = { left: 'flex-start', center: 'center', right: 'flex-end' } as const;
|
|
27
|
+
const Header: React.FC<HeaderProps> & {
|
|
28
|
+
Button: typeof HeaderButton;
|
|
29
|
+
Title: typeof HeaderTitle;
|
|
30
|
+
Subtitle: typeof HeaderSubtitle;
|
|
31
|
+
} = ({
|
|
32
|
+
children,
|
|
33
|
+
titleAlign,
|
|
34
|
+
title = null,
|
|
35
|
+
left = null,
|
|
36
|
+
right = null,
|
|
37
|
+
onPressLeft,
|
|
38
|
+
onPressRight,
|
|
39
|
+
clearTitleMargin = false,
|
|
40
|
+
}) => {
|
|
41
|
+
const { topInset, defaultTitleAlign } = useHeaderStyle();
|
|
42
|
+
const { width, height } = useWindowDimensions();
|
|
43
|
+
const { colors } = useUIKitTheme();
|
|
44
|
+
const { left: paddingLeft, right: paddingRight } = useSafeAreaInsets();
|
|
45
|
+
|
|
46
|
+
const actualTitleAlign = titleAlign ?? defaultTitleAlign;
|
|
47
|
+
|
|
48
|
+
if (!title && !left && !right) {
|
|
49
|
+
return (
|
|
50
|
+
<View style={{ paddingTop: topInset, backgroundColor: colors.ui.header.nav.none.background }}>{children}</View>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<View
|
|
56
|
+
style={[
|
|
57
|
+
styles.container,
|
|
58
|
+
{
|
|
59
|
+
paddingLeft: paddingLeft + styles.container.paddingHorizontal,
|
|
60
|
+
paddingRight: paddingRight + styles.container.paddingHorizontal,
|
|
61
|
+
paddingTop: topInset,
|
|
62
|
+
backgroundColor: colors.ui.header.nav.none.background,
|
|
63
|
+
borderBottomColor: colors.ui.header.nav.none.borderBottom,
|
|
64
|
+
},
|
|
65
|
+
]}
|
|
66
|
+
>
|
|
67
|
+
<View style={[styles.header, { height: getDefaultHeaderHeight(width > height) }]}>
|
|
68
|
+
<LeftSide titleAlign={actualTitleAlign} left={left} onPressLeft={onPressLeft} />
|
|
69
|
+
<View
|
|
70
|
+
style={[
|
|
71
|
+
styles.title,
|
|
72
|
+
clearTitleMargin && { marginHorizontal: 0 },
|
|
73
|
+
{ justifyContent: AlignMapper[actualTitleAlign] },
|
|
74
|
+
]}
|
|
75
|
+
>
|
|
76
|
+
{typeof title === 'string' ? <HeaderTitle>{title}</HeaderTitle> : title}
|
|
77
|
+
</View>
|
|
78
|
+
<RightSide titleAlign={actualTitleAlign} right={right} onPressRight={onPressRight} />
|
|
79
|
+
</View>
|
|
80
|
+
{children}
|
|
81
|
+
</View>
|
|
82
|
+
);
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const LeftSide: React.FC<HeaderProps> = ({ titleAlign, onPressLeft, left }) => {
|
|
86
|
+
if (titleAlign === 'center') {
|
|
87
|
+
return <View style={styles.left}>{left && <HeaderButton onPress={onPressLeft}>{left}</HeaderButton>}</View>;
|
|
88
|
+
}
|
|
89
|
+
if (!left) return null;
|
|
90
|
+
return (
|
|
91
|
+
<View style={styles.left}>
|
|
92
|
+
<HeaderButton onPress={onPressLeft}>{left}</HeaderButton>
|
|
93
|
+
</View>
|
|
94
|
+
);
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
const RightSide: React.FC<HeaderProps> = ({ titleAlign, onPressRight, right }) => {
|
|
98
|
+
if (titleAlign === 'center') {
|
|
99
|
+
return <View style={styles.right}>{right && <HeaderButton onPress={onPressRight}>{right}</HeaderButton>}</View>;
|
|
100
|
+
}
|
|
101
|
+
if (!right) return null;
|
|
102
|
+
return (
|
|
103
|
+
<View style={styles.right}>
|
|
104
|
+
<HeaderButton onPress={onPressRight}>{right}</HeaderButton>
|
|
105
|
+
</View>
|
|
106
|
+
);
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const HeaderTitle: React.FC<{ children: string } & TextProps> = ({ children, style, ...props }) => {
|
|
110
|
+
return (
|
|
111
|
+
<Text {...props} h1 numberOfLines={1} style={style}>
|
|
112
|
+
{children}
|
|
113
|
+
</Text>
|
|
114
|
+
);
|
|
115
|
+
};
|
|
116
|
+
const HeaderSubtitle: React.FC<{ children: string } & TextProps> = ({ children, style, ...props }) => {
|
|
117
|
+
const { colors } = useUIKitTheme();
|
|
118
|
+
return (
|
|
119
|
+
<Text color={colors.onBackground03} {...props} caption2 numberOfLines={1} style={style}>
|
|
120
|
+
{children}
|
|
121
|
+
</Text>
|
|
122
|
+
);
|
|
123
|
+
};
|
|
124
|
+
const HeaderButton: React.FC<TouchableOpacityProps & { color?: string }> = ({
|
|
125
|
+
children,
|
|
126
|
+
disabled,
|
|
127
|
+
onPress,
|
|
128
|
+
color,
|
|
129
|
+
...props
|
|
130
|
+
}) => {
|
|
131
|
+
return (
|
|
132
|
+
<TouchableOpacity
|
|
133
|
+
style={styles.button}
|
|
134
|
+
{...props}
|
|
135
|
+
disabled={!onPress || disabled}
|
|
136
|
+
onPress={(e) => onPress?.(e)}
|
|
137
|
+
activeOpacity={0.7}
|
|
138
|
+
>
|
|
139
|
+
{conditionChaining(
|
|
140
|
+
[typeof children === 'string' || typeof children === 'number'],
|
|
141
|
+
[
|
|
142
|
+
<Text button numberOfLines={1} color={color}>
|
|
143
|
+
{children}
|
|
144
|
+
</Text>,
|
|
145
|
+
children,
|
|
146
|
+
],
|
|
147
|
+
)}
|
|
148
|
+
</TouchableOpacity>
|
|
149
|
+
);
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
const styles = createStyleSheet({
|
|
153
|
+
container: {
|
|
154
|
+
paddingHorizontal: 12,
|
|
155
|
+
borderBottomWidth: 1,
|
|
156
|
+
},
|
|
157
|
+
header: {
|
|
158
|
+
flexDirection: 'row',
|
|
159
|
+
},
|
|
160
|
+
title: {
|
|
161
|
+
flex: 1,
|
|
162
|
+
flexDirection: 'row',
|
|
163
|
+
alignItems: 'center',
|
|
164
|
+
marginHorizontal: 12,
|
|
165
|
+
},
|
|
166
|
+
left: {
|
|
167
|
+
height: '100%',
|
|
168
|
+
minWidth: 32,
|
|
169
|
+
alignItems: 'center',
|
|
170
|
+
justifyContent: 'center',
|
|
171
|
+
marginRight: 12,
|
|
172
|
+
},
|
|
173
|
+
right: {
|
|
174
|
+
height: '100%',
|
|
175
|
+
minWidth: 32,
|
|
176
|
+
alignItems: 'center',
|
|
177
|
+
justifyContent: 'center',
|
|
178
|
+
marginLeft: 12,
|
|
179
|
+
},
|
|
180
|
+
button: {
|
|
181
|
+
padding: 4,
|
|
182
|
+
},
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
Header.Button = HeaderButton;
|
|
186
|
+
Header.Title = HeaderTitle;
|
|
187
|
+
Header.Subtitle = HeaderSubtitle;
|
|
188
|
+
export default Header;
|