diff --git a/Frontend/src/components/shared/LanguageToggle.jsx b/Frontend/src/components/shared/LanguageToggle.jsx new file mode 100644 index 000000000..52fee5c3d --- /dev/null +++ b/Frontend/src/components/shared/LanguageToggle.jsx @@ -0,0 +1,95 @@ +import React, { useState, useRef, useEffect } from 'react'; +import { motion, AnimatePresence } from 'framer-motion'; +import { Globe, ChevronDown, CheckCircle2 } from 'lucide-react'; +import { SUPPORTED_LANGUAGES } from '../../services/translationService'; + +const LanguageToggle = ({ selectedLanguage, onLanguageChange, compact = false }) => { + const [isOpen, setIsOpen] = useState(false); + const ref = useRef(null); + + useEffect(() => { + const handleClickOutside = (e) => { + if (ref.current && !ref.current.contains(e.target)) setIsOpen(false); + }; + document.addEventListener('mousedown', handleClickOutside); + return () => document.removeEventListener('mousedown', handleClickOutside); + }, []); + + const currentLang = SUPPORTED_LANGUAGES.find(l => l.code === selectedLanguage); + + if (compact) { + return ( +
+ + + {isOpen && ( + + {SUPPORTED_LANGUAGES.map(lang => ( + + ))} + + )} + +
+ ); + } + + return ( +
+ + + {isOpen && ( + +
+ {SUPPORTED_LANGUAGES.map(lang => ( + + ))} +
+
+ )} +
+
+ ); +}; + +export default LanguageToggle; diff --git a/Frontend/src/user/pages/AutoResolveChat.jsx b/Frontend/src/user/pages/AutoResolveChat.jsx index d8863209b..6b9c82dc3 100644 --- a/Frontend/src/user/pages/AutoResolveChat.jsx +++ b/Frontend/src/user/pages/AutoResolveChat.jsx @@ -14,6 +14,8 @@ import useTicketStore from '../../store/ticketStore'; import { Card, CardContent } from "../../components/ui/card"; import { askAI } from '../../services/aiAssistant'; import useToastStore from '../../store/toastStore'; +import LanguageToggle from "../../components/shared/LanguageToggle"; +import { translateText } from '../../services/translationService'; const AutoResolveChat = () => { const { aiTicket } = useTicketStore(); @@ -26,6 +28,14 @@ const AutoResolveChat = () => { const { showToast } = useToastStore(); const scrollRef = useRef(null); const fileInputRef = useRef(null); + const [selectedLanguage, setSelectedLanguage] = useState('en'); + + const handleLanguageChange = (langCode) => { + setSelectedLanguage(langCode); + if (langCode !== 'en') { + localStorage.setItem('preferredLanguage', langCode); + } + }; // Initial Plan Generation useEffect(() => { @@ -238,7 +248,12 @@ const AutoResolveChat = () => { {/* "Escalate Anyway" Integrated Option */} -
+
+