diff --git a/src/frontend/src/features/rooms/livekit/components/controls/Participants/ParticipantListItem.tsx b/src/frontend/src/features/rooms/livekit/components/controls/Participants/ParticipantListItem.tsx
index ed90260b..c1eae397 100644
--- a/src/frontend/src/features/rooms/livekit/components/controls/Participants/ParticipantListItem.tsx
+++ b/src/frontend/src/features/rooms/livekit/components/controls/Participants/ParticipantListItem.tsx
@@ -5,8 +5,64 @@ import { Text } from '@/primitives/Text'
import { useTranslation } from 'react-i18next'
import { Avatar } from '@/components/Avatar'
import { getParticipantColor } from '@/features/rooms/utils/getParticipantColor'
-import { Participant } from 'livekit-client'
+import { Participant, Track } from 'livekit-client'
import { isLocal } from '@/utils/livekit'
+import { Button } from 'react-aria-components'
+import { ActiveSpeaker } from '@/features/rooms/components/ActiveSpeaker'
+import {
+ useIsSpeaking,
+ useTrackMutedIndicator,
+} from '@livekit/components-react'
+import Source = Track.Source
+import { RiMicOffLine } from '@remixicon/react'
+import { TooltipWrapper } from '@/primitives/TooltipWrapper.tsx'
+
+type MicIndicatorProps = {
+ participant: Participant
+}
+
+const MicIndicator = ({ participant }: MicIndicatorProps) => {
+ const { t } = useTranslation('rooms')
+ const { isMuted } = useTrackMutedIndicator({
+ participant: participant,
+ source: Source.Microphone,
+ })
+ const isSpeaking = useIsSpeaking(participant)
+ const isDisabled = isLocal(participant) || (!isLocal(participant) && isMuted)
+ return (
+
+
+
+ )
+}
type ParticipantListItemProps = {
participant: Participant
@@ -58,6 +114,7 @@ export const ParticipantListItem = ({
)}
+
)
}
diff --git a/src/frontend/src/locales/de/rooms.json b/src/frontend/src/locales/de/rooms.json
index c811b9bc..9f0e8510 100644
--- a/src/frontend/src/locales/de/rooms.json
+++ b/src/frontend/src/locales/de/rooms.json
@@ -50,6 +50,7 @@
"participants": {
"heading": "",
"closeButton": "",
- "you": ""
+ "you": "",
+ "muteParticipant": ""
}
}
diff --git a/src/frontend/src/locales/en/rooms.json b/src/frontend/src/locales/en/rooms.json
index dd4964eb..68358a71 100644
--- a/src/frontend/src/locales/en/rooms.json
+++ b/src/frontend/src/locales/en/rooms.json
@@ -50,6 +50,7 @@
"participants": {
"heading": "Participants",
"closeButton": "Hide participants",
- "you": "You"
+ "you": "You",
+ "muteParticipant": "Close the mic of {{name}}"
}
}
diff --git a/src/frontend/src/locales/fr/rooms.json b/src/frontend/src/locales/fr/rooms.json
index 7e8f63f4..aec0c7c5 100644
--- a/src/frontend/src/locales/fr/rooms.json
+++ b/src/frontend/src/locales/fr/rooms.json
@@ -50,6 +50,7 @@
"participants": {
"heading": "Participants",
"closeButton": "Masquer les participants",
- "you": "Vous"
+ "you": "Vous",
+ "muteParticipant": "Couper le micro de {{name}}"
}
}