import { useCallback, useContext, useState } from 'react' import { Input, ScrollArea, Select, SelectTrigger, SelectValue, SelectContent, SelectGroup, SelectItem, Button, } from '@janhq/uikit' import { useAtomValue, useSetAtom } from 'jotai' import { Plus, SearchIcon } from 'lucide-react' import { FeatureToggleContext } from '@/context/FeatureToggle' import { setImportModelStageAtom } from '@/hooks/useImportModel' import ExploreModelList from './ExploreModelList' import { HuggingFaceModal } from './HuggingFaceModal' import { configuredModelsAtom, downloadedModelsAtom, } from '@/helpers/atoms/Model.atom' const sortMenu = ['All Models', 'Recommended', 'Downloaded'] const ExploreModelsScreen = () => { const configuredModels = useAtomValue(configuredModelsAtom) const downloadedModels = useAtomValue(downloadedModelsAtom) const [searchValue, setsearchValue] = useState('') const [sortSelected, setSortSelected] = useState('All Models') const [showHuggingFaceModal, setShowHuggingFaceModal] = useState(false) const setImportModelStage = useSetAtom(setImportModelStageAtom) const { experimentalFeature } = useContext(FeatureToggleContext) const filteredModels = configuredModels.filter((x) => { if (sortSelected === 'Downloaded') { return ( x.name.toLowerCase().includes(searchValue.toLowerCase()) && downloadedModels.some((y) => y.id === x.id) ) } else if (sortSelected === 'Recommended') { return ( x.name.toLowerCase().includes(searchValue.toLowerCase()) && x.metadata.tags.includes('Featured') ) } else { return x.name.toLowerCase().includes(searchValue.toLowerCase()) } }) const onImportModelClick = useCallback(() => { setImportModelStage('SELECTING_MODEL') }, [setImportModelStage]) const onHuggingFaceConverterClick = () => { setShowHuggingFaceModal(true) } return (
Convert from Hugging Face