@stream-io/video-react-sdk 2.0.0-beta.0 → 2.0.0-beta.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/CHANGELOG.md +24 -0
- package/dist/css/embedded.css +2592 -1498
- package/dist/css/embedded.css.map +1 -1
- package/dist/css/styles.css +2388 -1222
- package/dist/css/styles.css.map +1 -1
- package/dist/embedded.cjs.js +535 -476
- package/dist/embedded.cjs.js.map +1 -1
- package/dist/esm/index.js +10 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/src/components/Avatar/Avatar.js +13 -5
- package/dist/esm/src/components/Avatar/Avatar.js.map +1 -1
- package/dist/esm/src/components/Badge/Badge.js +21 -0
- package/dist/esm/src/components/Badge/Badge.js.map +1 -0
- package/dist/esm/src/components/Button/Button.js +10 -0
- package/dist/esm/src/components/Button/Button.js.map +1 -0
- package/dist/esm/src/components/Button/CompositeButton.js +10 -17
- package/dist/esm/src/components/Button/CompositeButton.js.map +1 -1
- package/dist/esm/src/components/Button/IconButton.js +3 -9
- package/dist/esm/src/components/Button/IconButton.js.map +1 -1
- package/dist/esm/src/components/CallControls/AcceptCallButton.js +3 -2
- package/dist/esm/src/components/CallControls/AcceptCallButton.js.map +1 -1
- package/dist/esm/src/components/CallControls/CallControls.js +3 -0
- package/dist/esm/src/components/CallControls/CallControls.js.map +1 -1
- package/dist/esm/src/components/CallControls/CancelCallButton.js +11 -6
- package/dist/esm/src/components/CallControls/CancelCallButton.js.map +1 -1
- package/dist/esm/src/components/CallControls/ReactionsButton.js +7 -3
- package/dist/esm/src/components/CallControls/ReactionsButton.js.map +1 -1
- package/dist/esm/src/components/CallControls/RecordCallButton.js +17 -11
- package/dist/esm/src/components/CallControls/RecordCallButton.js.map +1 -1
- package/dist/esm/src/components/CallControls/ScreenShareButton.js +11 -4
- package/dist/esm/src/components/CallControls/ScreenShareButton.js.map +1 -1
- package/dist/esm/src/components/CallControls/ToggleAudioButton.js +28 -17
- package/dist/esm/src/components/CallControls/ToggleAudioButton.js.map +1 -1
- package/dist/esm/src/components/CallControls/ToggleAudioOutputButton.js +9 -4
- package/dist/esm/src/components/CallControls/ToggleAudioOutputButton.js.map +1 -1
- package/dist/esm/src/components/CallControls/ToggleVideoButton.js +32 -23
- package/dist/esm/src/components/CallControls/ToggleVideoButton.js.map +1 -1
- package/dist/esm/src/components/CallParticipantsList/BlockedUserListing.js +3 -3
- package/dist/esm/src/components/CallParticipantsList/BlockedUserListing.js.map +1 -1
- package/dist/esm/src/components/CallParticipantsList/CallParticipantListHeader.js +8 -3
- package/dist/esm/src/components/CallParticipantsList/CallParticipantListHeader.js.map +1 -1
- package/dist/esm/src/components/CallParticipantsList/CallParticipantListingItem.js +20 -7
- package/dist/esm/src/components/CallParticipantsList/CallParticipantListingItem.js.map +1 -1
- package/dist/esm/src/components/CallParticipantsList/CallParticipantsList.js +8 -5
- package/dist/esm/src/components/CallParticipantsList/CallParticipantsList.js.map +1 -1
- package/dist/esm/src/components/CallParticipantsList/EmptyParticipantSearchList.js +5 -2
- package/dist/esm/src/components/CallParticipantsList/EmptyParticipantSearchList.js.map +1 -1
- package/dist/esm/src/components/CallRecordingList/CallRecordingListHeader.js +7 -3
- package/dist/esm/src/components/CallRecordingList/CallRecordingListHeader.js.map +1 -1
- package/dist/esm/src/components/DeviceSettings/DeviceAudioPreviewItem.js +1 -1
- package/dist/esm/src/components/DeviceSettings/DeviceAudioPreviewItem.js.map +1 -1
- package/dist/esm/src/components/DeviceSettings/DeviceSelector.js +1 -1
- package/dist/esm/src/components/DeviceSettings/DeviceSelector.js.map +1 -1
- package/dist/esm/src/components/DeviceSettings/DeviceSelectorAudio.js +2 -2
- package/dist/esm/src/components/DeviceSettings/DeviceSelectorAudio.js.map +1 -1
- package/dist/esm/src/components/DeviceSettings/DeviceSettings.js +8 -5
- package/dist/esm/src/components/DeviceSettings/DeviceSettings.js.map +1 -1
- package/dist/esm/src/components/DeviceSettings/SpeakerTest.js +10 -4
- package/dist/esm/src/components/DeviceSettings/SpeakerTest.js.map +1 -1
- package/dist/esm/src/components/DropdownSelect/DropdownSelect.js +1 -1
- package/dist/esm/src/components/DropdownSelect/DropdownSelect.js.map +1 -1
- package/dist/esm/src/components/Menu/GenericMenu.js +2 -1
- package/dist/esm/src/components/Menu/GenericMenu.js.map +1 -1
- package/dist/esm/src/components/Menu/MenuToggle.js +3 -0
- package/dist/esm/src/components/Menu/MenuToggle.js.map +1 -1
- package/dist/esm/src/components/Notification/MicCaptureErrorNotification.js +6 -3
- package/dist/esm/src/components/Notification/MicCaptureErrorNotification.js.map +1 -1
- package/dist/esm/src/components/Notification/Notification.js +12 -3
- package/dist/esm/src/components/Notification/Notification.js.map +1 -1
- package/dist/esm/src/components/Notification/PermissionNotification.js +2 -2
- package/dist/esm/src/components/Notification/PermissionNotification.js.map +1 -1
- package/dist/esm/src/components/Notification/RecordingInProgressNotification.js +7 -3
- package/dist/esm/src/components/Notification/RecordingInProgressNotification.js.map +1 -1
- package/dist/esm/src/components/Notification/SpeakingWhileMutedNotification.js +7 -2
- package/dist/esm/src/components/Notification/SpeakingWhileMutedNotification.js.map +1 -1
- package/dist/esm/src/components/Permissions/PermissionRequests.js +13 -12
- package/dist/esm/src/components/Permissions/PermissionRequests.js.map +1 -1
- package/dist/esm/src/components/RingingCall/RingingCall.js +38 -14
- package/dist/esm/src/components/RingingCall/RingingCall.js.map +1 -1
- package/dist/esm/src/components/RingingCall/RingingCallControls.js +7 -3
- package/dist/esm/src/components/RingingCall/RingingCallControls.js.map +1 -1
- package/dist/esm/src/components/Search/SearchInput.js +1 -1
- package/dist/esm/src/components/Search/SearchInput.js.map +1 -1
- package/dist/esm/src/components/StreamTheme/StreamTheme.js +2 -2
- package/dist/esm/src/components/StreamTheme/StreamTheme.js.map +1 -1
- package/dist/esm/src/components/Tooltip/Tooltip.js +8 -8
- package/dist/esm/src/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/src/components/VideoPreview/VideoPreview.js +36 -5
- package/dist/esm/src/components/VideoPreview/VideoPreview.js.map +1 -1
- package/dist/esm/src/core/components/CallLayout/LivestreamLayout.js +38 -12
- package/dist/esm/src/core/components/CallLayout/LivestreamLayout.js.map +1 -1
- package/dist/esm/src/core/components/CallLayout/PaginatedGridLayout.js +9 -5
- package/dist/esm/src/core/components/CallLayout/PaginatedGridLayout.js.map +1 -1
- package/dist/esm/src/core/components/CallLayout/PipLayout/Grid.js +9 -6
- package/dist/esm/src/core/components/CallLayout/PipLayout/Grid.js.map +1 -1
- package/dist/esm/src/core/components/CallLayout/PipLayout/Pip.js +9 -6
- package/dist/esm/src/core/components/CallLayout/PipLayout/Pip.js.map +1 -1
- package/dist/esm/src/core/components/CallLayout/SpeakerLayout.js +11 -6
- package/dist/esm/src/core/components/CallLayout/SpeakerLayout.js.map +1 -1
- package/dist/esm/src/core/components/ParticipantView/ConnectionQualityIndicator.js +25 -0
- package/dist/esm/src/core/components/ParticipantView/ConnectionQualityIndicator.js.map +1 -0
- package/dist/esm/src/core/components/ParticipantView/DefaultParticipantViewUI.js +17 -13
- package/dist/esm/src/core/components/ParticipantView/DefaultParticipantViewUI.js.map +1 -1
- package/dist/esm/src/core/components/ParticipantView/ParticipantActionsContextMenu.js +13 -8
- package/dist/esm/src/core/components/ParticipantView/ParticipantActionsContextMenu.js.map +1 -1
- package/dist/esm/src/core/components/StreamVideo/StreamVideo.js +24 -3
- package/dist/esm/src/core/components/StreamVideo/StreamVideo.js.map +1 -1
- package/dist/esm/src/core/components/Video/BaseVideoPlaceholder.js +3 -13
- package/dist/esm/src/core/components/Video/BaseVideoPlaceholder.js.map +1 -1
- package/dist/esm/src/core/components/Video/DefaultPictureInPicturePlaceholder.js +4 -2
- package/dist/esm/src/core/components/Video/DefaultPictureInPicturePlaceholder.js.map +1 -1
- package/dist/esm/src/core/components/Video/DefaultVideoPlaceholder.js +4 -2
- package/dist/esm/src/core/components/Video/DefaultVideoPlaceholder.js.map +1 -1
- package/dist/esm/src/embedded/EmbeddedClientProvider.js +7 -4
- package/dist/esm/src/embedded/EmbeddedClientProvider.js.map +1 -1
- package/dist/esm/src/embedded/call/CallControls.js +10 -6
- package/dist/esm/src/embedded/call/CallControls.js.map +1 -1
- package/dist/esm/src/embedded/call/CallHeader.js +10 -7
- package/dist/esm/src/embedded/call/CallHeader.js.map +1 -1
- package/dist/esm/src/embedded/call/CallLayout.js +8 -5
- package/dist/esm/src/embedded/call/CallLayout.js.map +1 -1
- package/dist/esm/src/embedded/call/CallStateRouter.js +7 -4
- package/dist/esm/src/embedded/call/CallStateRouter.js.map +1 -1
- package/dist/esm/src/embedded/hooks/useLayout.js +7 -4
- package/dist/esm/src/embedded/hooks/useLayout.js.map +1 -1
- package/dist/esm/src/embedded/livestream/host/HostLayout.js +12 -7
- package/dist/esm/src/embedded/livestream/host/HostLayout.js.map +1 -1
- package/dist/esm/src/embedded/livestream/host/HostStateRouter.js +12 -7
- package/dist/esm/src/embedded/livestream/host/HostStateRouter.js.map +1 -1
- package/dist/esm/src/embedded/livestream/viewer/ViewerLayout.js +9 -6
- package/dist/esm/src/embedded/livestream/viewer/ViewerLayout.js.map +1 -1
- package/dist/esm/src/embedded/livestream/viewer/ViewerLobby.js +12 -9
- package/dist/esm/src/embedded/livestream/viewer/ViewerLobby.js.map +1 -1
- package/dist/esm/src/embedded/livestream/viewer/ViewerStateRouter.js +7 -4
- package/dist/esm/src/embedded/livestream/viewer/ViewerStateRouter.js.map +1 -1
- package/dist/esm/src/embedded/shared/BlurToggleButton/BlurToggleButton.js +13 -9
- package/dist/esm/src/embedded/shared/BlurToggleButton/BlurToggleButton.js.map +1 -1
- package/dist/esm/src/embedded/shared/CallDuration/CallDuration.js +40 -0
- package/dist/esm/src/embedded/shared/CallDuration/CallDuration.js.map +1 -0
- package/dist/esm/src/embedded/shared/CallFeedback/CallEndedScreen.js +8 -6
- package/dist/esm/src/embedded/shared/CallFeedback/CallEndedScreen.js.map +1 -1
- package/dist/esm/src/embedded/shared/CallFeedback/RatingScreen.js +26 -2
- package/dist/esm/src/embedded/shared/CallFeedback/RatingScreen.js.map +1 -1
- package/dist/esm/src/embedded/shared/CallFeedback/StarRating.js +12 -6
- package/dist/esm/src/embedded/shared/CallFeedback/StarRating.js.map +1 -1
- package/dist/esm/src/embedded/shared/CallFeedback/ThankYouScreen.js +8 -6
- package/dist/esm/src/embedded/shared/CallFeedback/ThankYouScreen.js.map +1 -1
- package/dist/esm/src/embedded/shared/ConnectionNotification/ConnectionNotification.js +15 -14
- package/dist/esm/src/embedded/shared/ConnectionNotification/ConnectionNotification.js.map +1 -1
- package/dist/esm/src/embedded/shared/EmbeddedParticipantViewUI/EmbeddedParticipantViewUI.js +4 -0
- package/dist/esm/src/embedded/shared/EmbeddedParticipantViewUI/EmbeddedParticipantViewUI.js.map +1 -1
- package/dist/esm/src/embedded/shared/JoinError/JoinError.js +8 -6
- package/dist/esm/src/embedded/shared/JoinError/JoinError.js.map +1 -1
- package/dist/esm/src/embedded/shared/Lobby/DeviceControls.js +11 -7
- package/dist/esm/src/embedded/shared/Lobby/DeviceControls.js.map +1 -1
- package/dist/esm/src/embedded/shared/Lobby/DisabledDeviceButton.js +6 -4
- package/dist/esm/src/embedded/shared/Lobby/DisabledDeviceButton.js.map +1 -1
- package/dist/esm/src/embedded/shared/Lobby/Lobby.js +10 -9
- package/dist/esm/src/embedded/shared/Lobby/Lobby.js.map +1 -1
- package/dist/esm/src/embedded/shared/Lobby/ToggleCameraButton.js +6 -4
- package/dist/esm/src/embedded/shared/Lobby/ToggleCameraButton.js.map +1 -1
- package/dist/esm/src/embedded/shared/Lobby/ToggleMicButton.js +8 -6
- package/dist/esm/src/embedded/shared/Lobby/ToggleMicButton.js.map +1 -1
- package/dist/esm/src/embedded/shared/Lobby/VideoPreviewFallbacks.js +11 -9
- package/dist/esm/src/embedded/shared/Lobby/VideoPreviewFallbacks.js.map +1 -1
- package/dist/esm/src/embedded/shared/ViewersCount/ViewersCount.js +6 -4
- package/dist/esm/src/embedded/shared/ViewersCount/ViewersCount.js.map +1 -1
- package/dist/esm/src/hooks/useDeviceList.js +4 -2
- package/dist/esm/src/hooks/useDeviceList.js.map +1 -1
- package/dist/esm/src/i18n/Streami18n.js +58 -0
- package/dist/esm/src/i18n/Streami18n.js.map +1 -0
- package/dist/esm/src/i18n/TranslationContext.js +42 -0
- package/dist/esm/src/i18n/TranslationContext.js.map +1 -0
- package/dist/esm/src/i18n/runtimeDefaults.js +20 -0
- package/dist/esm/src/i18n/runtimeDefaults.js.map +1 -0
- package/dist/esm/src/i18n/useStreami18n.js +49 -0
- package/dist/esm/src/i18n/useStreami18n.js.map +1 -0
- package/dist/esm/src/wrappers/LivestreamPlayer/LivestreamPlayer.js +4 -0
- package/dist/esm/src/wrappers/LivestreamPlayer/LivestreamPlayer.js.map +1 -1
- package/dist/index.cjs.js +559 -623
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/src/components/Avatar/Avatar.d.ts +9 -4
- package/dist/src/components/Badge/Badge.d.ts +23 -0
- package/dist/src/components/Badge/index.d.ts +1 -0
- package/dist/src/components/Button/Button.d.ts +16 -0
- package/dist/src/components/Button/CompositeButton.d.ts +6 -3
- package/dist/src/components/Button/IconButton.d.ts +7 -7
- package/dist/src/components/Button/index.d.ts +2 -2
- package/dist/src/components/CallControls/CancelCallButton.d.ts +3 -1
- package/dist/src/components/CallControls/ToggleAudioButton.d.ts +3 -3
- package/dist/src/components/CallControls/ToggleAudioOutputButton.d.ts +2 -2
- package/dist/src/components/CallControls/ToggleVideoButton.d.ts +3 -3
- package/dist/src/components/CallControls/index.d.ts +0 -1
- package/dist/src/components/Menu/GenericMenu.d.ts +1 -0
- package/dist/src/components/Notification/Notification.d.ts +2 -1
- package/dist/src/components/StreamTheme/StreamTheme.d.ts +2 -1
- package/dist/src/components/VideoPreview/VideoPreview.d.ts +6 -1
- package/dist/src/components/index.d.ts +1 -1
- package/dist/src/core/components/ParticipantView/ConnectionQualityIndicator.d.ts +10 -0
- package/dist/src/core/components/ParticipantView/index.d.ts +1 -0
- package/dist/src/core/components/StreamVideo/StreamVideo.d.ts +18 -2
- package/dist/src/embedded/shared/CallDuration/CallDuration.d.ts +9 -0
- package/dist/src/embedded/shared/index.d.ts +1 -0
- package/dist/src/i18n/Streami18n.d.ts +56 -0
- package/dist/src/i18n/TranslationContext.d.ts +30 -0
- package/dist/src/i18n/index.d.ts +16 -0
- package/dist/src/i18n/keys.d.ts +164 -0
- package/dist/src/i18n/runtimeDefaults.d.ts +17 -0
- package/dist/src/i18n/types.d.ts +45 -0
- package/dist/src/i18n/useStreami18n.d.ts +19 -0
- package/index.ts +1 -1
- package/package.json +18 -13
- package/src/components/Avatar/Avatar.tsx +53 -19
- package/src/components/Badge/Badge.tsx +48 -0
- package/src/components/Badge/index.ts +1 -0
- package/src/components/Button/Button.tsx +49 -0
- package/src/components/Button/CompositeButton.tsx +82 -73
- package/src/components/Button/IconButton.tsx +19 -29
- package/src/components/Button/index.ts +2 -2
- package/src/components/CallControls/AcceptCallButton.tsx +3 -1
- package/src/components/CallControls/CancelCallButton.tsx +32 -24
- package/src/components/CallControls/ReactionsButton.tsx +7 -3
- package/src/components/CallControls/RecordCallButton.tsx +50 -23
- package/src/components/CallControls/ScreenShareButton.tsx +27 -6
- package/src/components/CallControls/ToggleAudioButton.tsx +62 -61
- package/src/components/CallControls/ToggleAudioOutputButton.tsx +7 -4
- package/src/components/CallControls/ToggleVideoButton.tsx +66 -66
- package/src/components/CallControls/index.ts +0 -1
- package/src/components/CallParticipantsList/BlockedUserListing.tsx +9 -2
- package/src/components/CallParticipantsList/CallParticipantListHeader.tsx +10 -3
- package/src/components/CallParticipantsList/CallParticipantListingItem.tsx +33 -8
- package/src/components/CallParticipantsList/CallParticipantsList.tsx +21 -5
- package/src/components/CallParticipantsList/EmptyParticipantSearchList.tsx +2 -2
- package/src/components/CallRecordingList/CallRecordingListHeader.tsx +11 -3
- package/src/components/DeviceSettings/DeviceAudioPreviewItem.tsx +3 -1
- package/src/components/DeviceSettings/DeviceSelector.tsx +1 -1
- package/src/components/DeviceSettings/DeviceSelectorAudio.tsx +2 -7
- package/src/components/DeviceSettings/DeviceSettings.tsx +14 -5
- package/src/components/DeviceSettings/SpeakerTest.tsx +7 -2
- package/src/components/DropdownSelect/DropdownSelect.tsx +3 -1
- package/src/components/Menu/GenericMenu.tsx +4 -0
- package/src/components/Notification/MicCaptureErrorNotification.tsx +7 -2
- package/src/components/Notification/Notification.tsx +20 -4
- package/src/components/Notification/PermissionNotification.tsx +2 -0
- package/src/components/Notification/RecordingInProgressNotification.tsx +5 -6
- package/src/components/Notification/SpeakingWhileMutedNotification.tsx +8 -2
- package/src/components/Permissions/PermissionRequests.tsx +50 -43
- package/src/components/RingingCall/RingingCall.tsx +40 -14
- package/src/components/RingingCall/RingingCallControls.tsx +2 -1
- package/src/components/Search/SearchInput.tsx +2 -3
- package/src/components/StreamTheme/StreamTheme.tsx +3 -1
- package/src/components/Tooltip/Tooltip.tsx +3 -10
- package/src/components/VideoPreview/VideoPreview.tsx +50 -5
- package/src/components/index.ts +1 -1
- package/src/core/components/CallLayout/LivestreamLayout.tsx +48 -18
- package/src/core/components/CallLayout/PaginatedGridLayout.tsx +14 -0
- package/src/core/components/CallLayout/PipLayout/Grid.tsx +10 -2
- package/src/core/components/CallLayout/PipLayout/Pip.tsx +6 -2
- package/src/core/components/CallLayout/SpeakerLayout.tsx +27 -0
- package/src/core/components/CallLayout/partcipantFilter.test.ts +38 -31
- package/src/core/components/ParticipantView/ConnectionQualityIndicator.tsx +54 -0
- package/src/core/components/ParticipantView/DefaultParticipantViewUI.tsx +60 -27
- package/src/core/components/ParticipantView/ParticipantActionsContextMenu.tsx +63 -22
- package/src/core/components/ParticipantView/index.ts +1 -0
- package/src/core/components/StreamVideo/StreamVideo.tsx +39 -4
- package/src/core/components/Video/BaseVideoPlaceholder.tsx +13 -30
- package/src/core/components/Video/DefaultPictureInPicturePlaceholder.tsx +5 -2
- package/src/core/components/Video/DefaultVideoPlaceholder.tsx +2 -2
- package/src/embedded/call/CallControls.tsx +9 -18
- package/src/embedded/call/CallHeader.tsx +3 -12
- package/src/embedded/call/CallLayout.tsx +1 -1
- package/src/embedded/livestream/host/HostLayout.tsx +26 -20
- package/src/embedded/livestream/host/HostStateRouter.tsx +12 -8
- package/src/embedded/livestream/viewer/ViewerLayout.tsx +8 -11
- package/src/embedded/livestream/viewer/ViewerLobby.tsx +31 -15
- package/src/embedded/shared/BlurToggleButton/BlurToggleButton.tsx +18 -12
- package/src/embedded/shared/CallDuration/CallDuration.tsx +32 -0
- package/src/embedded/shared/CallFeedback/CallEndedScreen.tsx +27 -13
- package/src/embedded/shared/CallFeedback/RatingScreen.tsx +20 -12
- package/src/embedded/shared/CallFeedback/StarRating.tsx +10 -3
- package/src/embedded/shared/CallFeedback/ThankYouScreen.tsx +6 -3
- package/src/embedded/shared/ConnectionNotification/ConnectionNotification.tsx +21 -14
- package/src/embedded/shared/JoinError/JoinError.tsx +7 -6
- package/src/embedded/shared/Lobby/DeviceControls.tsx +25 -3
- package/src/embedded/shared/Lobby/Lobby.tsx +19 -22
- package/src/embedded/shared/Lobby/ToggleMicButton.tsx +10 -3
- package/src/embedded/shared/Lobby/VideoPreviewFallbacks.tsx +4 -2
- package/src/embedded/shared/index.ts +1 -0
- package/src/hooks/useDeviceList.tsx +2 -2
- package/src/i18n/Streami18n.ts +67 -0
- package/src/i18n/TranslationContext.tsx +55 -0
- package/src/i18n/index.ts +22 -0
- package/src/i18n/keys.ts +169 -0
- package/src/i18n/runtimeDefaults.ts +17 -0
- package/src/i18n/types.ts +78 -0
- package/src/i18n/useStreami18n.ts +66 -0
- package/src/utilities/filter.test.ts +132 -124
- package/src/utilities/normalizeString.test.ts +50 -48
- package/dist/embedded-CallStatsLatencyChart-CpL1M_s0.cjs.js +0 -59
- package/dist/embedded-CallStatsLatencyChart-CpL1M_s0.cjs.js.map +0 -1
- package/dist/esm/src/components/Button/TextButton.js +0 -8
- package/dist/esm/src/components/Button/TextButton.js.map +0 -1
- package/dist/esm/src/components/CallControls/CallStatsButton.js +0 -18
- package/dist/esm/src/components/CallControls/CallStatsButton.js.map +0 -1
- package/dist/esm/src/components/CallStats/CallStats.js +0 -180
- package/dist/esm/src/components/CallStats/CallStats.js.map +0 -1
- package/dist/esm/src/components/CallStats/CallStatsLatencyChart.js +0 -57
- package/dist/esm/src/components/CallStats/CallStatsLatencyChart.js.map +0 -1
- package/dist/esm/src/translations/en.json.js +0 -177
- package/dist/esm/src/translations/en.json.js.map +0 -1
- package/dist/esm/src/translations/index.js +0 -6
- package/dist/esm/src/translations/index.js.map +0 -1
- package/dist/latency-chart-CpL1M_s0.cjs.js +0 -59
- package/dist/latency-chart-CpL1M_s0.cjs.js.map +0 -1
- package/dist/src/components/Button/TextButton.d.ts +0 -2
- package/dist/src/components/CallControls/CallStatsButton.d.ts +0 -4
- package/dist/src/components/CallStats/CallStats.d.ts +0 -22
- package/dist/src/components/CallStats/CallStatsLatencyChart.d.ts +0 -7
- package/dist/src/components/CallStats/index.d.ts +0 -1
- package/dist/src/translations/index.d.ts +0 -146
- package/src/components/Button/TextButton.tsx +0 -12
- package/src/components/CallControls/CallStatsButton.tsx +0 -37
- package/src/components/CallStats/CallStats.tsx +0 -439
- package/src/components/CallStats/CallStatsLatencyChart.tsx +0 -76
- package/src/components/CallStats/index.ts +0 -1
- package/src/translations/en.json +0 -154
- package/src/translations/index.ts +0 -3
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useEffect, useState } from 'react';
|
|
2
|
-
import { useCallStateHooks
|
|
3
|
-
import {
|
|
2
|
+
import { useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
3
|
+
import { useI18n } from '../../../i18n';
|
|
4
|
+
import { Button, Icon } from '../../../components';
|
|
4
5
|
import { ViewersCount } from '../../shared';
|
|
5
6
|
import { OwnCapability } from '@stream-io/video-client';
|
|
6
7
|
|
|
@@ -80,15 +81,22 @@ export const ViewerLobby = ({ onJoin }: ViewerLobbyProps) => {
|
|
|
80
81
|
if (!startsAt) return null;
|
|
81
82
|
|
|
82
83
|
if (startsAtPassed) {
|
|
83
|
-
return t(
|
|
84
|
+
return t(
|
|
85
|
+
'livestream.backstage.startsSoon.text',
|
|
86
|
+
'Livestream starts soon',
|
|
87
|
+
);
|
|
84
88
|
}
|
|
85
89
|
|
|
86
|
-
return t(
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
return t(
|
|
91
|
+
'livestream.backstage.startsAt.text',
|
|
92
|
+
'Livestream starts at {{ time }}',
|
|
93
|
+
{
|
|
94
|
+
time: startsAt.toLocaleTimeString([], {
|
|
95
|
+
hour: '2-digit',
|
|
96
|
+
minute: '2-digit',
|
|
97
|
+
}),
|
|
98
|
+
},
|
|
99
|
+
);
|
|
92
100
|
};
|
|
93
101
|
|
|
94
102
|
return (
|
|
@@ -100,8 +108,11 @@ export const ViewerLobby = ({ onJoin }: ViewerLobbyProps) => {
|
|
|
100
108
|
|
|
101
109
|
<h2 className="str-video__embedded-viewer-lobby__title">
|
|
102
110
|
{canJoin
|
|
103
|
-
? t('Stream is ready!')
|
|
104
|
-
: t(
|
|
111
|
+
? t('livestreamViewer.lobby.streamReady.title', 'Stream is ready!')
|
|
112
|
+
: t(
|
|
113
|
+
'livestreamViewer.lobby.waitingForStart.title',
|
|
114
|
+
'Waiting for the livestream to start',
|
|
115
|
+
)}
|
|
105
116
|
</h2>
|
|
106
117
|
|
|
107
118
|
{!canJoin && getStartsAtMessage() && (
|
|
@@ -114,9 +125,9 @@ export const ViewerLobby = ({ onJoin }: ViewerLobbyProps) => {
|
|
|
114
125
|
|
|
115
126
|
<div className="str-video__embedded-viewer-lobby__actions">
|
|
116
127
|
{canJoin ? (
|
|
117
|
-
<
|
|
118
|
-
{t('Join Stream')}
|
|
119
|
-
</
|
|
128
|
+
<Button size="sm" onClick={onJoin}>
|
|
129
|
+
{t('livestreamViewer.lobby.joinStream.label', 'Join Stream')}
|
|
130
|
+
</Button>
|
|
120
131
|
) : (
|
|
121
132
|
<label className="str-video__embedded-viewer-lobby__auto-join">
|
|
122
133
|
<input
|
|
@@ -124,7 +135,12 @@ export const ViewerLobby = ({ onJoin }: ViewerLobbyProps) => {
|
|
|
124
135
|
checked={autoJoin}
|
|
125
136
|
onChange={(e) => setAutoJoin(e.target.checked)}
|
|
126
137
|
/>
|
|
127
|
-
<span>
|
|
138
|
+
<span>
|
|
139
|
+
{t(
|
|
140
|
+
'livestreamViewer.lobby.joinAutomatically.text',
|
|
141
|
+
'Join automatically when stream starts',
|
|
142
|
+
)}
|
|
143
|
+
</span>
|
|
128
144
|
</label>
|
|
129
145
|
)}
|
|
130
146
|
</div>
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import { useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
3
|
+
import { useI18n } from '../../../i18n';
|
|
4
4
|
import {
|
|
5
|
+
Button,
|
|
5
6
|
DeviceSelectorVideo,
|
|
6
7
|
Icon,
|
|
7
8
|
useBackgroundFilters,
|
|
@@ -40,26 +41,31 @@ export const BlurToggleButton = () => {
|
|
|
40
41
|
]);
|
|
41
42
|
|
|
42
43
|
const getLabel = () => {
|
|
43
|
-
if (isLoading)
|
|
44
|
-
|
|
44
|
+
if (isLoading)
|
|
45
|
+
return t('callControls.blurToggleButton.applying.label', 'Applying...');
|
|
46
|
+
return isBlurred
|
|
47
|
+
? t('callControls.blurToggleButton.disableBlur.label', 'Disable blur')
|
|
48
|
+
: t(
|
|
49
|
+
'callControls.blurToggleButton.blurBackground.label',
|
|
50
|
+
'Blur background',
|
|
51
|
+
);
|
|
45
52
|
};
|
|
46
53
|
|
|
47
54
|
if (!isSupported) return null;
|
|
48
55
|
|
|
49
56
|
return (
|
|
50
|
-
<
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
)}
|
|
57
|
+
<Button
|
|
58
|
+
variant="secondary"
|
|
59
|
+
appearance="outline"
|
|
60
|
+
size="sm"
|
|
61
|
+
className="str-video__embedded-blur-toggle"
|
|
56
62
|
disabled={isDisabled}
|
|
57
|
-
|
|
63
|
+
active={isBlurred}
|
|
58
64
|
onClick={handleClick}
|
|
59
65
|
>
|
|
60
66
|
<Icon icon="blur-icon" />
|
|
61
67
|
<span>{getLabel()}</span>
|
|
62
|
-
</
|
|
68
|
+
</Button>
|
|
63
69
|
);
|
|
64
70
|
};
|
|
65
71
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Icon } from '../../../components';
|
|
2
|
+
|
|
3
|
+
interface CallDurationProps {
|
|
4
|
+
/**
|
|
5
|
+
* A formatted duration as produced by `useCallDuration`: `MM:SS`, or
|
|
6
|
+
* `HH:MM:SS` past the hour. Everything up to the last `:` is dimmed.
|
|
7
|
+
*/
|
|
8
|
+
elapsed: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const CallDuration = ({ elapsed }: CallDurationProps) => {
|
|
12
|
+
if (!elapsed) return null;
|
|
13
|
+
|
|
14
|
+
const secondsAt = elapsed.lastIndexOf(':') + 1;
|
|
15
|
+
const leading = elapsed.slice(0, secondsAt);
|
|
16
|
+
const seconds = elapsed.slice(secondsAt);
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<div className="str-video__embedded-call-duration">
|
|
20
|
+
<Icon
|
|
21
|
+
icon="verified"
|
|
22
|
+
className="str-video__embedded-call-duration__icon"
|
|
23
|
+
/>
|
|
24
|
+
<span className="str-video__embedded-call-duration__time">
|
|
25
|
+
<span className="str-video__embedded-call-duration__time-leading">
|
|
26
|
+
{leading}
|
|
27
|
+
</span>
|
|
28
|
+
{seconds}
|
|
29
|
+
</span>
|
|
30
|
+
</div>
|
|
31
|
+
);
|
|
32
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useI18n } from '
|
|
2
|
-
import { Icon } from '../../../components';
|
|
1
|
+
import { useI18n } from '../../../i18n';
|
|
2
|
+
import { Button, Icon } from '../../../components';
|
|
3
3
|
|
|
4
4
|
interface CallEndedScreenProps {
|
|
5
5
|
onJoin?: () => void;
|
|
@@ -15,39 +15,53 @@ export const CallEndedScreen = ({
|
|
|
15
15
|
return (
|
|
16
16
|
<div className="str-video__embedded-call-feedback__container">
|
|
17
17
|
<h2 className="str-video__embedded-call-feedback__title">
|
|
18
|
-
{t('Call ended')}
|
|
18
|
+
{t('callFeedback.callEndedScreen.callEnded.title', 'Call ended')}
|
|
19
19
|
</h2>
|
|
20
20
|
<div className="str-video__embedded-call-feedback__ended-actions">
|
|
21
21
|
{onJoin && (
|
|
22
22
|
<>
|
|
23
23
|
<div className="str-video__embedded-call-feedback__ended-column">
|
|
24
24
|
<p className="str-video__embedded-call-feedback__ended-label">
|
|
25
|
-
{t(
|
|
25
|
+
{t(
|
|
26
|
+
'callFeedback.callEndedScreen.leftByMistake.text',
|
|
27
|
+
'Left by mistake?',
|
|
28
|
+
)}
|
|
26
29
|
</p>
|
|
27
|
-
<
|
|
28
|
-
|
|
30
|
+
<Button
|
|
31
|
+
variant="secondary"
|
|
32
|
+
appearance="outline"
|
|
29
33
|
className="str-video__embedded-call-feedback__ended-button"
|
|
30
34
|
onClick={onJoin}
|
|
31
35
|
>
|
|
32
36
|
<Icon icon="login" />
|
|
33
|
-
{t(
|
|
34
|
-
|
|
37
|
+
{t(
|
|
38
|
+
'callFeedback.callEndedScreen.rejoinCall.label',
|
|
39
|
+
'Rejoin call',
|
|
40
|
+
)}
|
|
41
|
+
</Button>
|
|
35
42
|
</div>
|
|
36
43
|
<div className="str-video__embedded-call-feedback__ended-divider" />
|
|
37
44
|
</>
|
|
38
45
|
)}
|
|
39
46
|
<div className="str-video__embedded-call-feedback__ended-column">
|
|
40
47
|
<p className="str-video__embedded-call-feedback__ended-label">
|
|
41
|
-
{t(
|
|
48
|
+
{t(
|
|
49
|
+
'callFeedback.callEndedScreen.helpUsImprove.text',
|
|
50
|
+
'Help us improve',
|
|
51
|
+
)}
|
|
42
52
|
</p>
|
|
43
|
-
<
|
|
44
|
-
|
|
53
|
+
<Button
|
|
54
|
+
variant="secondary"
|
|
55
|
+
appearance="outline"
|
|
45
56
|
className="str-video__embedded-call-feedback__ended-button"
|
|
46
57
|
onClick={onFeedback}
|
|
47
58
|
>
|
|
48
59
|
<Icon icon="feedback" />
|
|
49
|
-
{t(
|
|
50
|
-
|
|
60
|
+
{t(
|
|
61
|
+
'callFeedback.callEndedScreen.leaveFeedback.label',
|
|
62
|
+
'Leave feedback',
|
|
63
|
+
)}
|
|
64
|
+
</Button>
|
|
51
65
|
</div>
|
|
52
66
|
</div>
|
|
53
67
|
</div>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
|
-
import { useI18n } from '
|
|
2
|
+
import { useI18n } from '../../../i18n';
|
|
3
|
+
import { Button } from '../../../components';
|
|
3
4
|
import { StarRating } from './StarRating';
|
|
4
5
|
|
|
5
6
|
interface RatingScreenProps {
|
|
@@ -18,29 +19,36 @@ export const RatingScreen = ({ onSubmit }: RatingScreenProps) => {
|
|
|
18
19
|
return (
|
|
19
20
|
<div className="str-video__embedded-call-feedback__container">
|
|
20
21
|
<h2 className="str-video__embedded-call-feedback__title">
|
|
21
|
-
{t(
|
|
22
|
+
{t(
|
|
23
|
+
'callFeedback.ratingScreen.shareYourFeedback.title',
|
|
24
|
+
'Share your feedback',
|
|
25
|
+
)}
|
|
22
26
|
</h2>
|
|
23
27
|
|
|
24
28
|
<StarRating value={rating} onChange={setRating} />
|
|
25
29
|
|
|
26
30
|
<textarea
|
|
27
|
-
aria-label={t(
|
|
31
|
+
aria-label={t(
|
|
32
|
+
'callFeedback.ratingScreen.feedbackMessage.ariaLabel',
|
|
33
|
+
'Feedback message',
|
|
34
|
+
)}
|
|
28
35
|
className="str-video__embedded-call-feedback__textarea"
|
|
29
|
-
placeholder={t(
|
|
36
|
+
placeholder={t(
|
|
37
|
+
'callFeedback.ratingScreen.tellUsAboutExperience.placeholder',
|
|
38
|
+
'Tell us about your experience...',
|
|
39
|
+
)}
|
|
30
40
|
value={message}
|
|
31
41
|
onChange={(e) => setMessage(e.target.value)}
|
|
32
42
|
rows={3}
|
|
33
43
|
/>
|
|
34
44
|
|
|
35
45
|
<div className="str-video__embedded-call-feedback__actions">
|
|
36
|
-
<
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
>
|
|
42
|
-
{t('Submit feedback')}
|
|
43
|
-
</button>
|
|
46
|
+
<Button size="sm" onClick={handleSubmit} disabled={rating === 0}>
|
|
47
|
+
{t(
|
|
48
|
+
'callFeedback.ratingScreen.submitFeedback.label',
|
|
49
|
+
'Submit feedback',
|
|
50
|
+
)}
|
|
51
|
+
</Button>
|
|
44
52
|
</div>
|
|
45
53
|
</div>
|
|
46
54
|
);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
2
|
import clsx from 'clsx';
|
|
3
|
-
import { useI18n } from '
|
|
3
|
+
import { useI18n } from '../../../i18n';
|
|
4
4
|
import { Icon } from '../../../components';
|
|
5
5
|
|
|
6
6
|
interface StarRatingProps {
|
|
@@ -22,7 +22,10 @@ export const StarRating = ({ value, onChange }: StarRatingProps) => {
|
|
|
22
22
|
return (
|
|
23
23
|
<div className="str-video__embedded-call-feedback__rating-section">
|
|
24
24
|
<p className="str-video__embedded-call-feedback__rating-label">
|
|
25
|
-
{t(
|
|
25
|
+
{t(
|
|
26
|
+
'callFeedback.starRating.howWasCallQuality.text',
|
|
27
|
+
'How was your call quality?',
|
|
28
|
+
)}
|
|
26
29
|
</p>
|
|
27
30
|
<div
|
|
28
31
|
className="str-video__embedded-call-feedback__stars"
|
|
@@ -35,7 +38,11 @@ export const StarRating = ({ value, onChange }: StarRatingProps) => {
|
|
|
35
38
|
className={getStarClasses(star)}
|
|
36
39
|
onClick={() => onChange(star)}
|
|
37
40
|
onMouseEnter={() => setHovered(star)}
|
|
38
|
-
aria-label={t('
|
|
41
|
+
aria-label={t('callFeedback.starRating.rateStars.ariaLabel', {
|
|
42
|
+
count: star,
|
|
43
|
+
defaultValue_one: 'Rate {{ count }} star',
|
|
44
|
+
defaultValue_other: 'Rate {{ count }} stars',
|
|
45
|
+
})}
|
|
39
46
|
>
|
|
40
47
|
<Icon icon="star-filled" />
|
|
41
48
|
</button>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useI18n } from '
|
|
1
|
+
import { useI18n } from '../../../i18n';
|
|
2
2
|
import { Icon } from '../../../components';
|
|
3
3
|
|
|
4
4
|
export const ThankYouScreen = () => {
|
|
@@ -9,10 +9,13 @@ export const ThankYouScreen = () => {
|
|
|
9
9
|
<Icon icon="checkmark" />
|
|
10
10
|
</div>
|
|
11
11
|
<h2 className="str-video__embedded-call-feedback__title">
|
|
12
|
-
{t('Thank you!')}
|
|
12
|
+
{t('callFeedback.thankYouScreen.thankYou.title', 'Thank you!')}
|
|
13
13
|
</h2>
|
|
14
14
|
<p className="str-video__embedded-call-feedback__subtitle">
|
|
15
|
-
{t(
|
|
15
|
+
{t(
|
|
16
|
+
'callFeedback.thankYouScreen.feedbackHelpsImprove.text',
|
|
17
|
+
'Your feedback helps improve call quality.',
|
|
18
|
+
)}
|
|
16
19
|
</p>
|
|
17
20
|
</div>
|
|
18
21
|
);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CallingState } from '@stream-io/video-client';
|
|
2
|
-
import { useCallStateHooks
|
|
3
|
-
import {
|
|
2
|
+
import { useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
3
|
+
import { useI18n } from '../../../i18n';
|
|
4
|
+
import { Notification } from '../../../components';
|
|
4
5
|
|
|
5
6
|
export const ConnectionNotification = () => {
|
|
6
7
|
const { t } = useI18n();
|
|
@@ -21,11 +22,18 @@ export const ConnectionNotification = () => {
|
|
|
21
22
|
<div className="str-video__embedded-connection-notification">
|
|
22
23
|
<Notification
|
|
23
24
|
isVisible
|
|
25
|
+
state="error"
|
|
24
26
|
placement="bottom"
|
|
25
27
|
message={
|
|
26
28
|
isOffline
|
|
27
|
-
? t(
|
|
28
|
-
|
|
29
|
+
? t(
|
|
30
|
+
'connectionNotification.offline.text',
|
|
31
|
+
'You are offline. Check your internet connection.',
|
|
32
|
+
)
|
|
33
|
+
: t(
|
|
34
|
+
'connectionNotification.failedToRestore.text',
|
|
35
|
+
'Failed to restore connection. Please try again.',
|
|
36
|
+
)
|
|
29
37
|
}
|
|
30
38
|
/>
|
|
31
39
|
</div>
|
|
@@ -37,18 +45,17 @@ export const ConnectionNotification = () => {
|
|
|
37
45
|
<div className="str-video__embedded-connection-notification">
|
|
38
46
|
<Notification
|
|
39
47
|
isVisible
|
|
48
|
+
state="loading"
|
|
40
49
|
placement="bottom"
|
|
41
|
-
iconClassName={null}
|
|
42
50
|
message={
|
|
43
|
-
|
|
44
|
-
text
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
/>
|
|
51
|
+
isMigrating
|
|
52
|
+
? t('connectionNotification.migrating.text', 'Migrating...')
|
|
53
|
+
: isJoining
|
|
54
|
+
? t('connectionNotification.joining.text', 'Joining')
|
|
55
|
+
: t(
|
|
56
|
+
'connectionNotification.reconnecting.text',
|
|
57
|
+
'Reconnecting...',
|
|
58
|
+
)
|
|
52
59
|
}
|
|
53
60
|
/>
|
|
54
61
|
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useI18n } from '
|
|
2
|
-
import { Icon } from '../../../components';
|
|
1
|
+
import { useI18n } from '../../../i18n';
|
|
2
|
+
import { Button, Icon } from '../../../components';
|
|
3
3
|
|
|
4
4
|
interface JoinErrorProps {
|
|
5
5
|
onJoin: () => void;
|
|
@@ -11,17 +11,18 @@ export const JoinError = ({ onJoin }: JoinErrorProps) => {
|
|
|
11
11
|
return (
|
|
12
12
|
<div className="str-video__embedded-join-error">
|
|
13
13
|
<h2 className="str-video__embedded-join-error__title">
|
|
14
|
-
{t('Failed to join the call')}
|
|
14
|
+
{t('joinError.failedToJoin.title', 'Failed to join the call')}
|
|
15
15
|
</h2>
|
|
16
16
|
<p className="str-video__embedded-join-error__message">
|
|
17
17
|
{t(
|
|
18
|
+
'joinError.couldNotConnect.text',
|
|
18
19
|
"We couldn't connect to the server. Please check your connection and try again.",
|
|
19
20
|
)}
|
|
20
21
|
</p>
|
|
21
|
-
<
|
|
22
|
+
<Button size="sm" onClick={onJoin}>
|
|
22
23
|
<Icon icon="login" />
|
|
23
|
-
{t('Try again')}
|
|
24
|
-
</
|
|
24
|
+
{t('common.tryAgain.label', 'Try again')}
|
|
25
|
+
</Button>
|
|
25
26
|
</div>
|
|
26
27
|
);
|
|
27
28
|
};
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
useCallStateHooks,
|
|
3
|
+
useConnectedUser,
|
|
4
|
+
} from '@stream-io/video-react-bindings';
|
|
5
|
+
import { useI18n } from '../../../i18n';
|
|
2
6
|
import {
|
|
3
7
|
ToggleAudioPreviewButton,
|
|
4
8
|
ToggleVideoPreviewButton,
|
|
@@ -15,10 +19,12 @@ interface DeviceControlsProps {
|
|
|
15
19
|
|
|
16
20
|
export const DeviceControls = ({ isVideoEnabled }: DeviceControlsProps) => {
|
|
17
21
|
const { t } = useI18n();
|
|
22
|
+
const user = useConnectedUser();
|
|
18
23
|
const { useCameraState, useMicrophoneState } = useCallStateHooks();
|
|
19
24
|
|
|
20
25
|
const { hasBrowserPermission: hasCameraPermission } = useCameraState();
|
|
21
26
|
const { hasBrowserPermission: hasMicPermission } = useMicrophoneState();
|
|
27
|
+
const displayName = user?.name || user?.id;
|
|
22
28
|
|
|
23
29
|
return (
|
|
24
30
|
<>
|
|
@@ -27,6 +33,13 @@ export const DeviceControls = ({ isVideoEnabled }: DeviceControlsProps) => {
|
|
|
27
33
|
DisabledVideoPreview={DisabledVideoPreview}
|
|
28
34
|
NoCameraPreview={NoCameraPreview}
|
|
29
35
|
/>
|
|
36
|
+
{displayName && (
|
|
37
|
+
<span className="str-video__embedded-lobby__participant-label">
|
|
38
|
+
<span className="str-video__embedded-lobby__participant-label-text">
|
|
39
|
+
{displayName}
|
|
40
|
+
</span>
|
|
41
|
+
</span>
|
|
42
|
+
)}
|
|
30
43
|
<div className="str-video__embedded-lobby__media-toggle">
|
|
31
44
|
<ToggleAudioPreviewButton Menu={null} />
|
|
32
45
|
{isVideoEnabled && <ToggleVideoPreviewButton Menu={null} />}
|
|
@@ -37,7 +50,13 @@ export const DeviceControls = ({ isVideoEnabled }: DeviceControlsProps) => {
|
|
|
37
50
|
{hasMicPermission ? (
|
|
38
51
|
<ToggleMicButton />
|
|
39
52
|
) : (
|
|
40
|
-
<DisabledDeviceButton
|
|
53
|
+
<DisabledDeviceButton
|
|
54
|
+
icon="mic"
|
|
55
|
+
label={t(
|
|
56
|
+
'lobby.deviceControls.permissionNeeded.label',
|
|
57
|
+
'Permission needed',
|
|
58
|
+
)}
|
|
59
|
+
/>
|
|
41
60
|
)}
|
|
42
61
|
{isVideoEnabled &&
|
|
43
62
|
(hasCameraPermission ? (
|
|
@@ -45,7 +64,10 @@ export const DeviceControls = ({ isVideoEnabled }: DeviceControlsProps) => {
|
|
|
45
64
|
) : (
|
|
46
65
|
<DisabledDeviceButton
|
|
47
66
|
icon="camera"
|
|
48
|
-
label={t(
|
|
67
|
+
label={t(
|
|
68
|
+
'lobby.deviceControls.permissionNeeded.label',
|
|
69
|
+
'Permission needed',
|
|
70
|
+
)}
|
|
49
71
|
/>
|
|
50
72
|
))}
|
|
51
73
|
</div>
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import clsx from 'clsx';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
useI18n,
|
|
6
|
-
} from '@stream-io/video-react-bindings';
|
|
7
|
-
import { Icon } from '../../../components';
|
|
2
|
+
import { useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
3
|
+
import { useI18n } from '../../../i18n';
|
|
4
|
+
import { Button, Icon } from '../../../components';
|
|
8
5
|
import { DeviceControls } from './DeviceControls';
|
|
9
6
|
|
|
10
7
|
interface LobbyProps {
|
|
@@ -18,20 +15,28 @@ interface LobbyProps {
|
|
|
18
15
|
*/
|
|
19
16
|
export const Lobby = ({ onJoin, title, joinLabel }: LobbyProps) => {
|
|
20
17
|
const { t } = useI18n();
|
|
21
|
-
const user = useConnectedUser();
|
|
22
18
|
const { useCameraState, useCallSettings } = useCallStateHooks();
|
|
23
19
|
|
|
24
20
|
const { isMute } = useCameraState();
|
|
25
21
|
const settings = useCallSettings();
|
|
26
22
|
|
|
27
23
|
const isVideoEnabled = settings?.video.enabled ?? true;
|
|
28
|
-
const resolvedJoinLabel = joinLabel ?? t('Join');
|
|
29
|
-
const resolvedTitle =
|
|
24
|
+
const resolvedJoinLabel = joinLabel ?? t('lobby.join.label', 'Join');
|
|
25
|
+
const resolvedTitle =
|
|
26
|
+
title ?? t('lobby.setUpYourCall.title', 'Set up your call before joining');
|
|
30
27
|
|
|
31
28
|
return (
|
|
32
29
|
<div className="str-video__embedded-lobby">
|
|
33
30
|
<div className="str-video__embedded-lobby__content">
|
|
34
|
-
<
|
|
31
|
+
<div className="str-video__embedded-lobby__title">
|
|
32
|
+
<Icon
|
|
33
|
+
icon="language"
|
|
34
|
+
className="str-video__embedded-lobby__title-icon"
|
|
35
|
+
/>
|
|
36
|
+
<h1 className="str-video__embedded-lobby__heading">
|
|
37
|
+
{resolvedTitle}
|
|
38
|
+
</h1>
|
|
39
|
+
</div>
|
|
35
40
|
<div
|
|
36
41
|
className={clsx(
|
|
37
42
|
'str-video__embedded-lobby__camera',
|
|
@@ -41,18 +46,10 @@ export const Lobby = ({ onJoin, title, joinLabel }: LobbyProps) => {
|
|
|
41
46
|
<DeviceControls isVideoEnabled={isVideoEnabled} />
|
|
42
47
|
</div>
|
|
43
48
|
|
|
44
|
-
<
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
<span className="str-video__embedded-lobby__display-name-value">
|
|
49
|
-
{user?.name}
|
|
50
|
-
</span>
|
|
51
|
-
<button className="str-video__button" onClick={onJoin}>
|
|
52
|
-
<Icon className="str-video__button__icon" icon="login" />
|
|
53
|
-
{resolvedJoinLabel}
|
|
54
|
-
</button>
|
|
55
|
-
</div>
|
|
49
|
+
<Button className="str-video__embedded-lobby__join" onClick={onJoin}>
|
|
50
|
+
<Icon icon="login" />
|
|
51
|
+
{resolvedJoinLabel}
|
|
52
|
+
</Button>
|
|
56
53
|
</div>
|
|
57
54
|
</div>
|
|
58
55
|
);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { forwardRef } from 'react';
|
|
2
2
|
|
|
3
|
-
import { useCallStateHooks
|
|
3
|
+
import { useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
4
|
+
import { useI18n } from '../../../i18n';
|
|
4
5
|
import {
|
|
5
6
|
DeviceSelectorAudioInput,
|
|
6
7
|
DeviceSelectorAudioOutput,
|
|
@@ -41,8 +42,14 @@ export const ToggleMicButton = () => {
|
|
|
41
42
|
ToggleButton={ToggleMenuButton}
|
|
42
43
|
visualType={MenuVisualType.MENU}
|
|
43
44
|
>
|
|
44
|
-
<DeviceSelectorAudioInput
|
|
45
|
-
|
|
45
|
+
<DeviceSelectorAudioInput
|
|
46
|
+
visualType="list"
|
|
47
|
+
title={t('common.microphone.label', 'Microphone')}
|
|
48
|
+
/>
|
|
49
|
+
<DeviceSelectorAudioOutput
|
|
50
|
+
visualType="list"
|
|
51
|
+
title={t('common.speaker.label', 'Speaker')}
|
|
52
|
+
/>
|
|
46
53
|
</MenuToggle>
|
|
47
54
|
);
|
|
48
55
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useCallStateHooks,
|
|
3
3
|
useConnectedUser,
|
|
4
|
-
useI18n,
|
|
5
4
|
} from '@stream-io/video-react-bindings';
|
|
5
|
+
import { useI18n } from '../../../i18n';
|
|
6
6
|
import { Avatar } from '../../../components';
|
|
7
7
|
|
|
8
8
|
export const DisabledVideoPreview = () => {
|
|
@@ -22,6 +22,7 @@ export const DisabledVideoPreview = () => {
|
|
|
22
22
|
<Avatar imageSrc={user?.image} name={user?.name || user?.id} />
|
|
23
23
|
) : (
|
|
24
24
|
t(
|
|
25
|
+
'lobby.videoPreviewFallbacks.grantBrowserPermission.text',
|
|
25
26
|
'Please grant your browser permission to access your camera and microphone.',
|
|
26
27
|
)
|
|
27
28
|
)}
|
|
@@ -41,6 +42,7 @@ export const NoCameraPreview = () => {
|
|
|
41
42
|
return (
|
|
42
43
|
<div className="str-video__embedded-lobby__no-permission">
|
|
43
44
|
{t(
|
|
45
|
+
'lobby.videoPreviewFallbacks.grantBrowserPermission.text',
|
|
44
46
|
'Please grant your browser permission to access your camera and microphone.',
|
|
45
47
|
)}
|
|
46
48
|
</div>
|
|
@@ -49,7 +51,7 @@ export const NoCameraPreview = () => {
|
|
|
49
51
|
|
|
50
52
|
return (
|
|
51
53
|
<div className="str-video__video-preview__no-camera-preview">
|
|
52
|
-
{t('No camera found')}
|
|
54
|
+
{t('common.noCameraFound.text', 'No camera found')}
|
|
53
55
|
</div>
|
|
54
56
|
);
|
|
55
57
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './BlurToggleButton/BlurToggleButton';
|
|
2
|
+
export * from './CallDuration/CallDuration';
|
|
2
3
|
export * from './CallFeedback/CallFeedback';
|
|
3
4
|
export * from './ConnectionNotification/ConnectionNotification';
|
|
4
5
|
export * from './EmbeddedParticipantViewUI/EmbeddedParticipantViewUI';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useI18n } from '
|
|
1
|
+
import { useI18n } from '../i18n';
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
|
|
4
4
|
export interface DeviceListItem {
|
|
@@ -43,7 +43,7 @@ export function useDeviceList(
|
|
|
43
43
|
if (selectedDeviceInfo === null || selectedIndex === null) {
|
|
44
44
|
const defaultDevice = {
|
|
45
45
|
deviceId: 'default',
|
|
46
|
-
label: t('Default'),
|
|
46
|
+
label: t('common.default.label', 'Default'),
|
|
47
47
|
isSelected: true,
|
|
48
48
|
};
|
|
49
49
|
|