diff --git a/src/PublicShareAuthSidebar.vue b/src/PublicShareAuthSidebar.vue
index 1ba9800b1b7..52f14799f97 100644
--- a/src/PublicShareAuthSidebar.vue
+++ b/src/PublicShareAuthSidebar.vue
@@ -49,7 +49,7 @@ import ChatView from './components/ChatView.vue'
import MediaSettings from './components/MediaSettings/MediaSettings.vue'
import PollViewer from './components/PollViewer/PollViewer.vue'
import TopBar from './components/TopBar/TopBar.vue'
-import TransitionWrapper from './components/TransitionWrapper.vue'
+import TransitionWrapper from './components/UIShared/TransitionWrapper.vue'
import { useHashCheck } from './composables/useHashCheck.js'
import { useSessionIssueHandler } from './composables/useSessionIssueHandler.js'
diff --git a/src/PublicShareSidebar.vue b/src/PublicShareSidebar.vue
index a1227370f43..c78196473b3 100644
--- a/src/PublicShareSidebar.vue
+++ b/src/PublicShareSidebar.vue
@@ -67,7 +67,7 @@ import MediaSettings from './components/MediaSettings/MediaSettings.vue'
import PollViewer from './components/PollViewer/PollViewer.vue'
import CallButton from './components/TopBar/CallButton.vue'
import TopBar from './components/TopBar/TopBar.vue'
-import TransitionWrapper from './components/TransitionWrapper.vue'
+import TransitionWrapper from './components/UIShared/TransitionWrapper.vue'
import { useHashCheck } from './composables/useHashCheck.js'
import { useIsInCall } from './composables/useIsInCall.js'
diff --git a/src/components/AdminSettings/RecordingServers.vue b/src/components/AdminSettings/RecordingServers.vue
index c981c86d5bd..26eec226037 100644
--- a/src/components/AdminSettings/RecordingServers.vue
+++ b/src/components/AdminSettings/RecordingServers.vue
@@ -104,7 +104,7 @@ import NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'
import NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'
import RecordingServer from '../../components/AdminSettings/RecordingServer.vue'
-import TransitionWrapper from '../TransitionWrapper.vue'
+import TransitionWrapper from '../UIShared/TransitionWrapper.vue'
import { CALL } from '../../constants.js'
diff --git a/src/components/AdminSettings/SignalingServers.vue b/src/components/AdminSettings/SignalingServers.vue
index cf7ade083c2..2cd4374cae5 100644
--- a/src/components/AdminSettings/SignalingServers.vue
+++ b/src/components/AdminSettings/SignalingServers.vue
@@ -96,7 +96,7 @@ import NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'
import NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'
import SignalingServer from '../../components/AdminSettings/SignalingServer.vue'
-import TransitionWrapper from '../TransitionWrapper.vue'
+import TransitionWrapper from '../UIShared/TransitionWrapper.vue'
import { SIGNALING } from '../../constants.js'
diff --git a/src/components/AdminSettings/StunServers.vue b/src/components/AdminSettings/StunServers.vue
index 9f962cbd386..3a512985a77 100644
--- a/src/components/AdminSettings/StunServers.vue
+++ b/src/components/AdminSettings/StunServers.vue
@@ -66,7 +66,7 @@ import { loadState } from '@nextcloud/initial-state'
import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
import StunServer from '../../components/AdminSettings/StunServer.vue'
-import TransitionWrapper from '../TransitionWrapper.vue'
+import TransitionWrapper from '../UIShared/TransitionWrapper.vue'
export default {
name: 'StunServers',
diff --git a/src/components/AdminSettings/TurnServers.vue b/src/components/AdminSettings/TurnServers.vue
index d9c23622645..69793162e0b 100644
--- a/src/components/AdminSettings/TurnServers.vue
+++ b/src/components/AdminSettings/TurnServers.vue
@@ -71,7 +71,7 @@ import { loadState } from '@nextcloud/initial-state'
import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
import TurnServer from '../../components/AdminSettings/TurnServer.vue'
-import TransitionWrapper from '../TransitionWrapper.vue'
+import TransitionWrapper from '../UIShared/TransitionWrapper.vue'
export default {
name: 'TurnServers',
diff --git a/src/components/CallView/Grid/Grid.vue b/src/components/CallView/Grid/Grid.vue
index 5a935c31119..74d53967aec 100644
--- a/src/components/CallView/Grid/Grid.vue
+++ b/src/components/CallView/Grid/Grid.vue
@@ -162,7 +162,7 @@ import { generateFilePath } from '@nextcloud/router'
import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip.js'
-import TransitionWrapper from '../../TransitionWrapper.vue'
+import TransitionWrapper from '../../UIShared/TransitionWrapper.vue'
import EmptyCallView from '../shared/EmptyCallView.vue'
import LocalVideo from '../shared/LocalVideo.vue'
import VideoBottomBar from '../shared/VideoBottomBar.vue'
diff --git a/src/components/CallView/shared/LocalAudioControlButton.vue b/src/components/CallView/shared/LocalAudioControlButton.vue
index 194c12ab106..55eb41f41a6 100644
--- a/src/components/CallView/shared/LocalAudioControlButton.vue
+++ b/src/components/CallView/shared/LocalAudioControlButton.vue
@@ -40,7 +40,7 @@ import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'
import { NcButton } from '@nextcloud/vue'
-import VolumeIndicator from '../../VolumeIndicator/VolumeIndicator.vue'
+import VolumeIndicator from '../../UIShared/VolumeIndicator.vue'
import { PARTICIPANT } from '../../../constants.js'
import BrowserStorage from '../../../services/BrowserStorage.js'
diff --git a/src/components/CallView/shared/ReactionToaster.vue b/src/components/CallView/shared/ReactionToaster.vue
index 13a2b00673a..ec304831458 100644
--- a/src/components/CallView/shared/ReactionToaster.vue
+++ b/src/components/CallView/shared/ReactionToaster.vue
@@ -53,7 +53,7 @@ import { imagePath } from '@nextcloud/router'
import usernameToColor from '@nextcloud/vue/dist/Functions/usernameToColor.js'
-import TransitionWrapper from '../../TransitionWrapper.vue'
+import TransitionWrapper from '../../UIShared/TransitionWrapper.vue'
import { useGuestNameStore } from '../../../stores/guestName.js'
diff --git a/src/components/CallView/shared/VideoBottomBar.vue b/src/components/CallView/shared/VideoBottomBar.vue
index 3d5e3ab4de4..666e2feed14 100644
--- a/src/components/CallView/shared/VideoBottomBar.vue
+++ b/src/components/CallView/shared/VideoBottomBar.vue
@@ -116,7 +116,7 @@ import { emit } from '@nextcloud/event-bus'
import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip.js'
-import TransitionWrapper from '../../TransitionWrapper.vue'
+import TransitionWrapper from '../../UIShared/TransitionWrapper.vue'
import { PARTICIPANT } from '../../../constants.js'
import { ConnectionState } from '../../../utils/webrtc/models/CallParticipantModel.js'
diff --git a/src/components/CallView/shared/VideoVue.vue b/src/components/CallView/shared/VideoVue.vue
index 075481de9fc..86808d0e383 100644
--- a/src/components/CallView/shared/VideoVue.vue
+++ b/src/components/CallView/shared/VideoVue.vue
@@ -98,7 +98,7 @@ import Screen from './Screen.vue'
import VideoBackground from './VideoBackground.vue'
import VideoBottomBar from './VideoBottomBar.vue'
import AvatarWrapper from '../../AvatarWrapper/AvatarWrapper.vue'
-import TransitionWrapper from '../../TransitionWrapper.vue'
+import TransitionWrapper from '../../UIShared/TransitionWrapper.vue'
import { ATTENDEE, AVATAR } from '../../../constants.js'
import { EventBus } from '../../../services/EventBus.js'
diff --git a/src/components/CallView/shared/ViewerOverlayCallView.vue b/src/components/CallView/shared/ViewerOverlayCallView.vue
index ebeafbc66da..61f7c49d5bf 100644
--- a/src/components/CallView/shared/ViewerOverlayCallView.vue
+++ b/src/components/CallView/shared/ViewerOverlayCallView.vue
@@ -137,7 +137,7 @@ import LocalVideo from './LocalVideo.vue'
import LocalVideoControlButton from './LocalVideoControlButton.vue'
import Screen from './Screen.vue'
import VideoVue from './VideoVue.vue'
-import TransitionWrapper from '../../TransitionWrapper.vue'
+import TransitionWrapper from '../../UIShared/TransitionWrapper.vue'
import { localCallParticipantModel, localMediaModel } from '../../../utils/webrtc/index.js'
diff --git a/src/components/ChatView.vue b/src/components/ChatView.vue
index 1549b669dd1..8852d12c554 100644
--- a/src/components/ChatView.vue
+++ b/src/components/ChatView.vue
@@ -84,7 +84,7 @@ import GuestWelcomeWindow from './GuestWelcomeWindow.vue'
import MessagesList from './MessagesList/MessagesList.vue'
import NewMessage from './NewMessage/NewMessage.vue'
import NewMessageUploadEditor from './NewMessage/NewMessageUploadEditor.vue'
-import TransitionWrapper from './TransitionWrapper.vue'
+import TransitionWrapper from './UIShared/TransitionWrapper.vue'
import { CONVERSATION, PARTICIPANT } from '../constants.js'
import { EventBus } from '../services/EventBus.js'
diff --git a/src/components/ConversationSettings/BasicInfo.vue b/src/components/ConversationSettings/BasicInfo.vue
index fb15031d3ba..8408fbd3a62 100644
--- a/src/components/ConversationSettings/BasicInfo.vue
+++ b/src/components/ConversationSettings/BasicInfo.vue
@@ -66,7 +66,7 @@ import { getCapabilities } from '@nextcloud/capabilities'
import { showError } from '@nextcloud/dialogs'
import ConversationAvatarEditor from './ConversationAvatarEditor.vue'
-import EditableTextField from './EditableTextField.vue'
+import EditableTextField from '../UIShared/EditableTextField.vue'
import { CONVERSATION } from '../../constants.js'
diff --git a/src/components/LeftSidebar/CallPhoneDialog/CallPhoneDialog.vue b/src/components/LeftSidebar/CallPhoneDialog/CallPhoneDialog.vue
index 0a142490e2c..4c0980af500 100644
--- a/src/components/LeftSidebar/CallPhoneDialog/CallPhoneDialog.vue
+++ b/src/components/LeftSidebar/CallPhoneDialog/CallPhoneDialog.vue
@@ -67,7 +67,7 @@ import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
import NcModal from '@nextcloud/vue/dist/Components/NcModal.js'
import NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'
-import DialpadPanel from '../../DialpadPanel.vue'
+import DialpadPanel from '../../UIShared/DialpadPanel.vue'
import LoadingComponent from '../../LoadingComponent.vue'
import SelectPhoneNumber from '../../SelectPhoneNumber.vue'
diff --git a/src/components/LeftSidebar/ConversationsList/ConversationsListVirtual.vue b/src/components/LeftSidebar/ConversationsList/ConversationsListVirtual.vue
index 1a9e73cbdcc..be410141dd7 100644
--- a/src/components/LeftSidebar/ConversationsList/ConversationsListVirtual.vue
+++ b/src/components/LeftSidebar/ConversationsList/ConversationsListVirtual.vue
@@ -38,7 +38,7 @@
import { RecycleScroller } from 'vue-virtual-scroller'
import Conversation from './Conversation.vue'
-import LoadingPlaceholder from '../../LoadingPlaceholder.vue'
+import LoadingPlaceholder from '../../UIShared/LoadingPlaceholder.vue'
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'
diff --git a/src/components/LeftSidebar/ConversationsList/ConversationsSearchListVirtual.vue b/src/components/LeftSidebar/ConversationsList/ConversationsSearchListVirtual.vue
index 98b204a42d8..e6a39a5545d 100644
--- a/src/components/LeftSidebar/ConversationsList/ConversationsSearchListVirtual.vue
+++ b/src/components/LeftSidebar/ConversationsList/ConversationsSearchListVirtual.vue
@@ -39,7 +39,7 @@
import { RecycleScroller } from 'vue-virtual-scroller'
import ConversationSearchResult from './ConversationSearchResult.vue'
-import LoadingPlaceholder from '../../LoadingPlaceholder.vue'
+import LoadingPlaceholder from '../../UIShared/LoadingPlaceholder.vue'
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'
diff --git a/src/components/LeftSidebar/LeftSidebar.vue b/src/components/LeftSidebar/LeftSidebar.vue
index 68807a21ad4..89e66ceb63b 100644
--- a/src/components/LeftSidebar/LeftSidebar.vue
+++ b/src/components/LeftSidebar/LeftSidebar.vue
@@ -316,11 +316,11 @@ import Conversation from './ConversationsList/Conversation.vue'
import ConversationsListVirtual from './ConversationsList/ConversationsListVirtual.vue'
import InvitationHandler from './InvitationHandler.vue'
import OpenConversationsList from './OpenConversationsList/OpenConversationsList.vue'
-import SearchBox from './SearchBox/SearchBox.vue'
+import SearchBox from '../UIShared/SearchBox.vue'
import ConversationIcon from '../ConversationIcon.vue'
-import Hint from '../Hint.vue'
+import Hint from '../UIShared/Hint.vue'
import NewConversationDialog from '../NewConversationDialog/NewConversationDialog.vue'
-import TransitionWrapper from '../TransitionWrapper.vue'
+import TransitionWrapper from '../UIShared/TransitionWrapper.vue'
import { useArrowNavigation } from '../../composables/useArrowNavigation.js'
import { ATTENDEE, CONVERSATION } from '../../constants.js'
diff --git a/src/components/MediaSettings/MediaSettings.vue b/src/components/MediaSettings/MediaSettings.vue
index 011dcd8e6a2..8457494946b 100644
--- a/src/components/MediaSettings/MediaSettings.vue
+++ b/src/components/MediaSettings/MediaSettings.vue
@@ -223,7 +223,7 @@ import VideoBackgroundEditor from './VideoBackgroundEditor.vue'
import AvatarWrapper from '../AvatarWrapper/AvatarWrapper.vue'
import VideoBackground from '../CallView/shared/VideoBackground.vue'
import CallButton from '../TopBar/CallButton.vue'
-import VolumeIndicator from '../VolumeIndicator/VolumeIndicator.vue'
+import VolumeIndicator from '../UIShared/VolumeIndicator.vue'
import { useDevices } from '../../composables/useDevices.js'
import { useIsInCall } from '../../composables/useIsInCall.js'
diff --git a/src/components/MessagesList/MessagesList.vue b/src/components/MessagesList/MessagesList.vue
index 1ee91fdc4e6..d6d8c92f2b2 100644
--- a/src/components/MessagesList/MessagesList.vue
+++ b/src/components/MessagesList/MessagesList.vue
@@ -86,8 +86,8 @@ import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'
import MessagesGroup from './MessagesGroup/MessagesGroup.vue'
import MessagesSystemGroup from './MessagesGroup/MessagesSystemGroup.vue'
-import LoadingPlaceholder from '../LoadingPlaceholder.vue'
-import TransitionWrapper from '../TransitionWrapper.vue'
+import LoadingPlaceholder from '../UIShared/LoadingPlaceholder.vue'
+import TransitionWrapper from '../UIShared/TransitionWrapper.vue'
import { useIsInCall } from '../../composables/useIsInCall.js'
import { ATTENDEE, CHAT } from '../../constants.js'
diff --git a/src/components/NewConversationDialog/NewConversationContactsPage.vue b/src/components/NewConversationDialog/NewConversationContactsPage.vue
index 96d623b82e4..1e357f38d3a 100644
--- a/src/components/NewConversationDialog/NewConversationContactsPage.vue
+++ b/src/components/NewConversationDialog/NewConversationContactsPage.vue
@@ -83,11 +83,11 @@ import { showError } from '@nextcloud/dialogs'
import NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'
-import ContactSelectionBubble from '../ContactSelectionBubble.vue'
-import DialpadPanel from '../DialpadPanel.vue'
+import ContactSelectionBubble from '../UIShared/ContactSelectionBubble.vue'
+import DialpadPanel from '../UIShared/DialpadPanel.vue'
import ParticipantSearchResults from '../RightSidebar/Participants/ParticipantsSearchResults.vue'
import SelectPhoneNumber from '../SelectPhoneNumber.vue'
-import TransitionWrapper from '../TransitionWrapper.vue'
+import TransitionWrapper from '../UIShared/TransitionWrapper.vue'
import { useArrowNavigation } from '../../composables/useArrowNavigation.js'
import { searchPossibleConversations } from '../../services/conversationsService.js'
diff --git a/src/components/NewMessage/NewMessageUploadEditor.vue b/src/components/NewMessage/NewMessageUploadEditor.vue
index 3fc2a4b3928..5e2d8fcee40 100644
--- a/src/components/NewMessage/NewMessageUploadEditor.vue
+++ b/src/components/NewMessage/NewMessageUploadEditor.vue
@@ -100,7 +100,7 @@ import NcModal from '@nextcloud/vue/dist/Components/NcModal.js'
import NewMessage from './NewMessage.vue'
import AudioPlayer from '../MessagesList/MessagesGroup/Message/MessagePart/AudioPlayer.vue'
import FilePreview from '../MessagesList/MessagesGroup/Message/MessagePart/FilePreview.vue'
-import TransitionWrapper from '../TransitionWrapper.vue'
+import TransitionWrapper from '../UIShared/TransitionWrapper.vue'
const supportMediaCaption = getCapabilities()?.spreed?.features?.includes('media-caption')
diff --git a/src/components/RightSidebar/Participants/Participant.vue b/src/components/RightSidebar/Participants/Participant.vue
index 0854eed1330..4bd5dedf92e 100644
--- a/src/components/RightSidebar/Participants/Participant.vue
+++ b/src/components/RightSidebar/Participants/Participant.vue
@@ -366,7 +366,7 @@ import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip.js'
import ParticipantPermissionsEditor from './ParticipantPermissionsEditor.vue'
import AvatarWrapper from '../../AvatarWrapper/AvatarWrapper.vue'
-import DialpadPanel from '../../DialpadPanel.vue'
+import DialpadPanel from '../../UIShared/DialpadPanel.vue'
import { useIsInCall } from '../../../composables/useIsInCall.js'
import { CONVERSATION, PARTICIPANT, ATTENDEE, WEBINAR } from '../../../constants.js'
diff --git a/src/components/RightSidebar/Participants/ParticipantsList.vue b/src/components/RightSidebar/Participants/ParticipantsList.vue
index 71ae7770a20..c446e2b2874 100644
--- a/src/components/RightSidebar/Participants/ParticipantsList.vue
+++ b/src/components/RightSidebar/Participants/ParticipantsList.vue
@@ -33,7 +33,7 @@