diff --git a/src/frontend/src/features/rooms/livekit/components/controls/ChatToggle.tsx b/src/frontend/src/features/rooms/livekit/components/controls/ChatToggle.tsx
new file mode 100644
index 00000000..d91ab100
--- /dev/null
+++ b/src/frontend/src/features/rooms/livekit/components/controls/ChatToggle.tsx
@@ -0,0 +1,50 @@
+import { useTranslation } from 'react-i18next'
+import { RiChat1Line } from '@remixicon/react'
+import { Button } from '@/primitives'
+import { css } from '@/styled-system/css'
+import { useLayoutContext } from '@livekit/components-react'
+
+export const ChatToggle = () => {
+ const { t } = useTranslation('rooms')
+
+ const { dispatch, state } = useLayoutContext().widget
+ const tooltipLabel = state?.showChat ? 'open' : 'closed'
+
+ return (
+
+
+ {!!state?.unreadMessages && (
+
+ )}
+
+ )
+}
diff --git a/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx b/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx
index d609fd29..6361eef8 100644
--- a/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx
+++ b/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx
@@ -4,8 +4,6 @@ import * as React from 'react'
import { supportsScreenSharing } from '@livekit/components-core'
import {
- ChatIcon,
- ChatToggle,
DisconnectButton,
LeaveIcon,
MediaDeviceMenu,
@@ -19,7 +17,8 @@ import { StartMediaButton } from '../components/controls/StartMediaButton'
import { useMediaQuery } from '../hooks/useMediaQuery'
import { useTranslation } from 'react-i18next'
import { OptionsButton } from '../components/controls/Options/OptionsButton'
-import { ParticipantsToggle } from '@/features/rooms/livekit/components/controls/Participants/ParticipantsToggle.tsx'
+import { ParticipantsToggle } from '@/features/rooms/livekit/components/controls/Participants/ParticipantsToggle'
+import { ChatToggle } from '@/features/rooms/livekit/components/controls/ChatToggle'
/** @public */
export type ControlBarControls = {
@@ -184,10 +183,7 @@ export function ControlBar({
)}
)}
-
- {showIcon && }
- {showText && t('controls.chat')}
-
+
diff --git a/src/frontend/src/locales/de/rooms.json b/src/frontend/src/locales/de/rooms.json
index 945cbd39..08429a92 100644
--- a/src/frontend/src/locales/de/rooms.json
+++ b/src/frontend/src/locales/de/rooms.json
@@ -28,7 +28,10 @@
"camera": "",
"shareScreen": "",
"stopScreenShare": "",
- "chat": "",
+ "chat": {
+ "open": "",
+ "closed": ""
+ },
"leave": "",
"participants": {
"open": "",
diff --git a/src/frontend/src/locales/en/rooms.json b/src/frontend/src/locales/en/rooms.json
index b150ac9b..9bf62669 100644
--- a/src/frontend/src/locales/en/rooms.json
+++ b/src/frontend/src/locales/en/rooms.json
@@ -28,7 +28,10 @@
"camera": "Camera",
"shareScreen": "Share screen",
"stopScreenShare": "Stop screen share",
- "chat": "Chat",
+ "chat": {
+ "open": "Close the chat",
+ "closed": "Open the chat"
+ },
"leave": "Leave",
"participants": {
"open": "Hide everyone",
diff --git a/src/frontend/src/locales/fr/rooms.json b/src/frontend/src/locales/fr/rooms.json
index 1aefe69e..33ac61ca 100644
--- a/src/frontend/src/locales/fr/rooms.json
+++ b/src/frontend/src/locales/fr/rooms.json
@@ -28,7 +28,10 @@
"camera": "Camera",
"shareScreen": "Partager l'écran",
"stopScreenShare": "ArrĂȘter le partage",
- "chat": "Chat",
+ "chat": {
+ "open": "Masquer le chat",
+ "closed": "Afficher le chat"
+ },
"leave": "Quitter",
"participants": {
"open": "Masquer les participants",