From 7ce4390740e7e509d1ced1ac8a3420120846b8f3 Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Tue, 3 Dec 2024 22:00:31 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(frontend)=20initialize=20transcript?= =?UTF-8?q?=20sidebar=20panel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Setup base structure and styling for transcript menu sidebar --- .../rooms/livekit/components/SidePanel.tsx | 5 +++ .../rooms/livekit/components/Transcript.tsx | 14 ++++++++ .../components/controls/TranscriptToggle.tsx | 32 +++++++++++++++++++ .../rooms/livekit/hooks/useSidePanel.ts | 8 +++++ .../rooms/livekit/prefabs/ControlBar.tsx | 5 ++- src/frontend/src/locales/de/rooms.json | 10 ++++-- src/frontend/src/locales/en/rooms.json | 10 ++++-- src/frontend/src/locales/fr/rooms.json | 10 ++++-- 8 files changed, 87 insertions(+), 7 deletions(-) create mode 100644 src/frontend/src/features/rooms/livekit/components/Transcript.tsx create mode 100644 src/frontend/src/features/rooms/livekit/components/controls/TranscriptToggle.tsx diff --git a/src/frontend/src/features/rooms/livekit/components/SidePanel.tsx b/src/frontend/src/features/rooms/livekit/components/SidePanel.tsx index e375f9de..44e5cb1d 100644 --- a/src/frontend/src/features/rooms/livekit/components/SidePanel.tsx +++ b/src/frontend/src/features/rooms/livekit/components/SidePanel.tsx @@ -10,6 +10,7 @@ import { useSidePanel } from '../hooks/useSidePanel' import { ReactNode } from 'react' import { Effects } from './Effects' import { Chat } from '../prefabs/Chat' +import { Transcript } from './Transcript' type StyledSidePanelProps = { title: string @@ -106,6 +107,7 @@ export const SidePanel = () => { isEffectsOpen, isChatOpen, isSidePanelOpen, + isTranscriptOpen, } = useSidePanel() const { t } = useTranslation('rooms', { keyPrefix: 'sidePanel' }) @@ -127,6 +129,9 @@ export const SidePanel = () => { + + + ) } diff --git a/src/frontend/src/features/rooms/livekit/components/Transcript.tsx b/src/frontend/src/features/rooms/livekit/components/Transcript.tsx new file mode 100644 index 00000000..cd9443d6 --- /dev/null +++ b/src/frontend/src/features/rooms/livekit/components/Transcript.tsx @@ -0,0 +1,14 @@ +import { Div } from '@/primitives' + +export const Transcript = () => { + return ( +
+ wip +
+ ) +} diff --git a/src/frontend/src/features/rooms/livekit/components/controls/TranscriptToggle.tsx b/src/frontend/src/features/rooms/livekit/components/controls/TranscriptToggle.tsx new file mode 100644 index 00000000..0e186d70 --- /dev/null +++ b/src/frontend/src/features/rooms/livekit/components/controls/TranscriptToggle.tsx @@ -0,0 +1,32 @@ +import { ToggleButton } from '@/primitives' +import { RiBardLine } from '@remixicon/react' +import { useTranslation } from 'react-i18next' +import { useSidePanel } from '@/features/rooms/livekit/hooks/useSidePanel' +import { css } from '@/styled-system/css' + +export const TranscriptToggle = () => { + const { t } = useTranslation('rooms', { keyPrefix: 'controls.transcript' }) + + const { isTranscriptOpen, toggleTranscript } = useSidePanel() + const tooltipLabel = isTranscriptOpen ? 'open' : 'closed' + + return ( +
+ toggleTranscript()} + > + + +
+ ) +} diff --git a/src/frontend/src/features/rooms/livekit/hooks/useSidePanel.ts b/src/frontend/src/features/rooms/livekit/hooks/useSidePanel.ts index 41ca8a9c..10191ead 100644 --- a/src/frontend/src/features/rooms/livekit/hooks/useSidePanel.ts +++ b/src/frontend/src/features/rooms/livekit/hooks/useSidePanel.ts @@ -5,6 +5,7 @@ export enum PanelId { PARTICIPANTS = 'participants', EFFECTS = 'effects', CHAT = 'chat', + TRANSCRIPT = 'transcript', } export const useSidePanel = () => { @@ -14,6 +15,7 @@ export const useSidePanel = () => { const isParticipantsOpen = activePanelId == PanelId.PARTICIPANTS const isEffectsOpen = activePanelId == PanelId.EFFECTS const isChatOpen = activePanelId == PanelId.CHAT + const isTranscriptOpen = activePanelId == PanelId.TRANSCRIPT const isSidePanelOpen = !!activePanelId const toggleParticipants = () => { @@ -28,14 +30,20 @@ export const useSidePanel = () => { layoutStore.activePanelId = isEffectsOpen ? null : PanelId.EFFECTS } + const toggleTranscript = () => { + layoutStore.activePanelId = isTranscriptOpen ? null : PanelId.TRANSCRIPT + } + return { activePanelId, toggleParticipants, toggleChat, toggleEffects, + toggleTranscript, isChatOpen, isParticipantsOpen, isEffectsOpen, isSidePanelOpen, + isTranscriptOpen, } } diff --git a/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx b/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx index 9627a45d..ae567613 100644 --- a/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx +++ b/src/frontend/src/features/rooms/livekit/prefabs/ControlBar.tsx @@ -13,8 +13,10 @@ import { HandToggle } from '../components/controls/HandToggle' import { SelectToggleDevice } from '../components/controls/SelectToggleDevice' import { LeaveButton } from '../components/controls/LeaveButton' import { ScreenShareToggle } from '../components/controls/ScreenShareToggle' +import { SupportToggle } from '../components/controls/SupportToggle' +import { TranscriptToggle } from '../components/controls/TranscriptToggle' + import { css } from '@/styled-system/css' -import { SupportToggle } from '@/features/rooms/livekit/components/controls/SupportToggle.tsx' /** @public */ export type ControlBarControls = { @@ -156,6 +158,7 @@ export function ControlBar({ > + diff --git a/src/frontend/src/locales/de/rooms.json b/src/frontend/src/locales/de/rooms.json index 4a9f12bf..0d261ddf 100644 --- a/src/frontend/src/locales/de/rooms.json +++ b/src/frontend/src/locales/de/rooms.json @@ -71,6 +71,10 @@ "open": "", "closed": "" }, + "transcript": { + "open": "", + "closed": "" + }, "support": "" }, "options": { @@ -102,12 +106,14 @@ "heading": { "participants": "", "effects": "", - "chat": "" + "chat": "", + "transcript": "" }, "content": { "participants": "", "effects": "", - "chat": "" + "chat": "", + "transcript": "" }, "closeButton": "" }, diff --git a/src/frontend/src/locales/en/rooms.json b/src/frontend/src/locales/en/rooms.json index 0e7f3bb2..fa10ebb9 100644 --- a/src/frontend/src/locales/en/rooms.json +++ b/src/frontend/src/locales/en/rooms.json @@ -70,6 +70,10 @@ "open": "Hide everyone", "closed": "See everyone" }, + "transcript": { + "open": "Hide AI assistant", + "closed": "Show AI assistant" + }, "support": "Support" }, "options": { @@ -101,12 +105,14 @@ "heading": { "participants": "Participants", "effects": "Effects", - "chat": "Messages in the chat" + "chat": "Messages in the chat", + "transcript": "AI Assistant" }, "content": { "participants": "participants", "effects": "effects", - "chat": "messages" + "chat": "messages", + "transcript": "AI assistant" }, "closeButton": "Hide {{content}}" }, diff --git a/src/frontend/src/locales/fr/rooms.json b/src/frontend/src/locales/fr/rooms.json index c5ed43c4..14134b8d 100644 --- a/src/frontend/src/locales/fr/rooms.json +++ b/src/frontend/src/locales/fr/rooms.json @@ -70,6 +70,10 @@ "open": "Masquer les participants", "closed": "Afficher les participants" }, + "transcript": { + "open": "Masquer l'assistant IA", + "closed": "Afficher l'assistant IA" + }, "support": "Support" }, "options": { @@ -101,12 +105,14 @@ "heading": { "participants": "Participants", "effects": "Effets", - "chat": "Messages dans l'appel" + "chat": "Messages dans l'appel", + "transcript": "Assistant IA" }, "content": { "participants": "les participants", "effects": "les effets", - "chat": "les messages" + "chat": "les messages", + "transcript": "l'assistant IA" }, "closeButton": "Masquer {{content}}" },