mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-19 09:50:15 +01:00
* refactor: do not call await inside useCallbacks, rely on updates for dropdown * fix: remember last selected voice * refactor: Update Speech component to use TypeScript in useCallback * refactor: Update Dropdown component styles to match header theme
41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import React from 'react';
|
|
import { useRecoilState } from 'recoil';
|
|
import { Dropdown } from '~/components/ui';
|
|
import { useLocalize } from '~/hooks';
|
|
import store from '~/store';
|
|
|
|
interface EngineSTTDropdownProps {
|
|
external: boolean;
|
|
}
|
|
|
|
const EngineSTTDropdown: React.FC<EngineSTTDropdownProps> = ({ external }) => {
|
|
const localize = useLocalize();
|
|
const [engineSTT, setEngineSTT] = useRecoilState<string>(store.engineSTT);
|
|
|
|
const endpointOptions = external
|
|
? [
|
|
{ value: 'browser', label: localize('com_nav_browser') },
|
|
{ value: 'external', label: localize('com_nav_external') },
|
|
]
|
|
: [{ value: 'browser', label: localize('com_nav_browser') }];
|
|
|
|
const handleSelect = (value: string) => {
|
|
setEngineSTT(value);
|
|
};
|
|
|
|
return (
|
|
<div className="flex items-center justify-between">
|
|
<div>{localize('com_nav_engine')}</div>
|
|
<Dropdown
|
|
value={engineSTT}
|
|
onChange={handleSelect}
|
|
options={endpointOptions}
|
|
sizeClasses="w-[180px]"
|
|
anchor="bottom start"
|
|
testId="EngineSTTDropdown"
|
|
/>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default EngineSTTDropdown;
|