import React from 'react'; import { useRecoilState } from 'recoil'; import { Dropdown } from '@librechat/client'; import type { Option } from '~/common'; import { useLocalize, useTTSBrowser, useTTSExternal } from '~/hooks'; import { logger } from '~/utils'; import store from '~/store'; export function BrowserVoiceDropdown() { const localize = useLocalize(); const { voices = [] } = useTTSBrowser(); const [voice, setVoice] = useRecoilState(store.voice); const handleVoiceChange = (newValue?: string | Option) => { logger.log('Browser Voice changed:', newValue); const newVoice = typeof newValue === 'string' ? newValue : newValue?.value; if (newVoice != null) { return setVoice(newVoice.toString()); } }; const labelId = 'browser-voice-dropdown-label'; return (
{localize('com_nav_voice_select')}
); } export function ExternalVoiceDropdown() { const localize = useLocalize(); const { voices = [] } = useTTSExternal(); const [voice, setVoice] = useRecoilState(store.voice); const handleVoiceChange = (newValue?: string | Option) => { logger.log('External Voice changed:', newValue); const newVoice = typeof newValue === 'string' ? newValue : newValue?.value; if (newVoice != null) { return setVoice(newVoice.toString()); } }; const labelId = 'external-voice-dropdown-label'; return (
{localize('com_nav_voice_select')}
); }