import { useState, useEffect } from 'react' import { FiDownload, FiTrash2, FiInfo, FiSearch, FiFilter, FiCpu, FiDatabase, FiCloud, FiCheckCircle, FiXCircle } from 'react-icons/fi' import axios from 'axios' export default function ModelSelector() { const [models, setModels] = useState([]) const [selectedModel, setSelectedModel] = useState(null) const [isLoading, setIsLoading] = useState(false) const [downloadedModels, setDownloadedModels] = useState([]) const [searchTerm, setSearchTerm] = useState('') const [filterType, setFilterType] = useState('all') const [showDetails, setShowDetails] = useState(false) useEffect(() => { fetchModels() const saved = localStorage.getItem('downloadedModels') if (saved) { setDownloadedModels(JSON.parse(saved)) } }, []) const fetchModels = async () => { try { setIsLoading(true) const response = await axios.get('/api/models') setModels(response.data) } catch (error) { console.error('Error fetching models:', error) } finally { setIsLoading(false) } } const handleDownload = async (model) => { setIsLoading(true) setSelectedModel(model) try { await new Promise(resolve => setTimeout(resolve, 1500)) const updatedModels = [...downloadedModels, model] setDownloadedModels(updatedModels) localStorage.setItem('downloadedModels', JSON.stringify(updatedModels)) } catch (error) { console.error('Download failed:', error) } finally { setIsLoading(false) } } const handleRemove = (modelId) => { const updatedModels = downloadedModels.filter(m => m.id !== modelId) setDownloadedModels(updatedModels) localStorage.setItem('downloadedModels', JSON.stringify(updatedModels)) } const filteredModels = models.filter(model => { const matchesSearch = model.name.toLowerCase().includes(searchTerm.toLowerCase()) || model.description.toLowerCase().includes(searchTerm.toLowerCase()) const matchesFilter = filterType === 'all' || model.type === filterType return matchesSearch && matchesFilter }) const getModelStatus = (modelId) => { return downloadedModels.some(m => m.id === modelId) ? 'downloaded' : 'available' } return (

AI Model Hub

setSearchTerm(e.target.value)} className="pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent" />
{isLoading && (
)}
{filteredModels.map((model) => (

{model.name}

{model.type}

{model.description}

Size: {model.size} Version: {model.version || '1.0'}
{getModelStatus(model.id) === 'downloaded' ? ( <> ) : ( )}
))}
{selectedModel && (

{selectedModel.name}

Description

{selectedModel.description}

Type

{selectedModel.type}

Size

{selectedModel.size}

Version

{selectedModel.version || '1.0'}

Last Updated

{selectedModel.updatedAt || 'N/A'}

Features

  • Code completion and suggestions
  • Multi-language support
  • Offline functionality
  • Customizable parameters
  • Real-time analysis

Usage Example

                    {`// Import the model
const model = require('${selectedModel.name.toLowerCase().replace(/\s+/g, '-')}')

// Initialize with your parameters
const instance = new model({
  temperature: 0.7,
  maxTokens: 100
})

// Use the model
const result = instance.generate('Write a function to calculate factorial')`}
                  
)} {downloadedModels.length > 0 && (

Your Downloaded Models ({downloadedModels.length})

{downloadedModels.map((model) => (

{model.name}

{model.size}

))}
)}
) }