diff --git a/src/frontend/src/App.tsx b/src/frontend/src/App.tsx
index fa940d49..cbe694ef 100644
--- a/src/frontend/src/App.tsx
+++ b/src/frontend/src/App.tsx
@@ -30,7 +30,7 @@ function App() {
-
+
diff --git a/src/frontend/src/features/rooms/livekit/components/controls/SupportToggle.tsx b/src/frontend/src/features/rooms/livekit/components/controls/SupportToggle.tsx
new file mode 100644
index 00000000..496ce7ad
--- /dev/null
+++ b/src/frontend/src/features/rooms/livekit/components/controls/SupportToggle.tsx
@@ -0,0 +1,37 @@
+import { ToggleButton } from '@/primitives'
+import { RiQuestionLine } from '@remixicon/react'
+import { useTranslation } from 'react-i18next'
+import { Crisp } from 'crisp-sdk-web'
+import { useEffect, useState } from 'react'
+
+export const SupportToggle = () => {
+ const { t } = useTranslation('rooms', { keyPrefix: 'controls' })
+ const [isOpened, setIsOpened] = useState($crisp.is('chat:opened'))
+
+ useEffect(() => {
+ Crisp.chat.onChatOpened(() => {
+ setIsOpened(true)
+ })
+ Crisp.chat.onChatClosed(() => {
+ setIsOpened(false)
+ })
+ return () => {
+ Crisp.chat.offChatOpened()
+ Crisp.chat.offChatClosed()
+ }
+ }, [])
+
+ return (
+ (isOpened ? Crisp.chat.close() : Crisp.chat.open())}
+ data-attr="controls-support"
+ >
+
+
+ )
+}
diff --git a/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx b/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx
index 13f83461..9627a45d 100644
--- a/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx
+++ b/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx
@@ -14,6 +14,7 @@ import { SelectToggleDevice } from '../components/controls/SelectToggleDevice'
import { LeaveButton } from '../components/controls/LeaveButton'
import { ScreenShareToggle } from '../components/controls/ScreenShareToggle'
import { css } from '@/styled-system/css'
+import { SupportToggle } from '@/features/rooms/livekit/components/controls/SupportToggle.tsx'
/** @public */
export type ControlBarControls = {
@@ -83,28 +84,32 @@ export function ControlBar({
return (
)
diff --git a/src/frontend/src/locales/de/rooms.json b/src/frontend/src/locales/de/rooms.json
index 1531db47..11712fe3 100644
--- a/src/frontend/src/locales/de/rooms.json
+++ b/src/frontend/src/locales/de/rooms.json
@@ -70,7 +70,8 @@
"participants": {
"open": "",
"closed": ""
- }
+ },
+ "support": ""
},
"options": {
"buttonLabel": "",
diff --git a/src/frontend/src/locales/en/rooms.json b/src/frontend/src/locales/en/rooms.json
index 24d96555..0e230fcf 100644
--- a/src/frontend/src/locales/en/rooms.json
+++ b/src/frontend/src/locales/en/rooms.json
@@ -69,7 +69,8 @@
"participants": {
"open": "Hide everyone",
"closed": "See everyone"
- }
+ },
+ "support": "Support"
},
"options": {
"buttonLabel": "More Options",
diff --git a/src/frontend/src/locales/fr/rooms.json b/src/frontend/src/locales/fr/rooms.json
index 3c82c328..9336a1c1 100644
--- a/src/frontend/src/locales/fr/rooms.json
+++ b/src/frontend/src/locales/fr/rooms.json
@@ -69,7 +69,8 @@
"participants": {
"open": "Masquer les participants",
"closed": "Afficher les participants"
- }
+ },
+ "support": "Support"
},
"options": {
"buttonLabel": "Plus d'options",
diff --git a/src/frontend/src/styles/index.css b/src/frontend/src/styles/index.css
index 92069f66..1e051cf6 100644
--- a/src/frontend/src/styles/index.css
+++ b/src/frontend/src/styles/index.css
@@ -25,3 +25,7 @@ body,
transition: none !important;
}
}
+
+body:has(.lk-video-conference) #crisp-chatbox > div > a {
+ display: none !important;
+}