import { Fragment, useEffect } from 'react' import { Listbox, Transition } from '@headlessui/react' import { CheckIcon, ChevronUpDownIcon } from '@heroicons/react/20/solid' import { useAtom, useAtomValue } from 'jotai' import { selectedModelAtom } from '@helpers/atoms/Model.atom' import { downloadedModelAtom } from '@helpers/atoms/DownloadedModel.atom' function classNames(...classes: any) { return classes.filter(Boolean).join(' ') } const SelectModels: React.FC = () => { const downloadedModels = useAtomValue(downloadedModelAtom) const [selectedModel, setSelectedModel] = useAtom(selectedModelAtom) useEffect(() => { if (downloadedModels && downloadedModels.length > 0) { onModelSelected(downloadedModels[0]) } }, [downloadedModels]) const onModelSelected = (model: AssistantModel) => { setSelectedModel(model) } if (!selectedModel) { return
You have not downloaded any model!
} return ( {({ open }) => (
Select a Model:
{selectedModel.name} {downloadedModels.map((model) => ( classNames( active ? 'bg-blue-600 text-white' : 'text-gray-900', 'relative cursor-default select-none py-2 pl-3 pr-9' ) } value={model} > {({ selected, active }) => ( <>
{model.name}
{selected ? ( ) : null} )}
))}
)}
) } export default SelectModels