import type { FC } from 'react' import { useState } from 'react' import type { DefaultModel, Model, ModelItem, } from '../declarations' import { useLanguage } from '../hooks' import PopupItem from './popup-item' import { SearchLg } from '@/app/components/base/icons/src/vender/line/general' import { XCircle } from '@/app/components/base/icons/src/vender/solid/general' type PopupProps = { defaultModel?: DefaultModel modelList: Model[] onSelect: (provider: string, model: ModelItem) => void } const Popup: FC = ({ defaultModel, modelList, onSelect, }) => { const language = useLanguage() const [searchText, setSearchText] = useState('') const filteredModelList = modelList.filter( model => model.models.filter( (modelItem) => { if (modelItem.label[language] !== undefined) return modelItem.label[language].includes(searchText) let found = false Object.keys(modelItem.label).forEach((key) => { if (modelItem.label[key].includes(searchText)) found = true }) return found }, ).length, ) return (
setSearchText(e.target.value)} /> { searchText && ( setSearchText('')} /> ) }
{ filteredModelList.map(model => ( )) } { !filteredModelList.length && (
{`No model found for “${searchText}”`}
) }
) } export default Popup