Spaces:
Running
Running
| import React from 'react'; | |
| import { ConnectionStatusProps } from '@/lib/types'; | |
| import { Badge } from '@/components/ui/badge'; | |
| import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; | |
| const ConnectionStatus: React.FC<ConnectionStatusProps> = ({ isConnected, currentModel = 'openai' }) => { | |
| // Get model status details | |
| const getModelBadge = () => { | |
| switch (currentModel) { | |
| case 'openai': | |
| return ( | |
| <Badge variant="outline" className="ml-2 bg-blue-50 text-blue-800 border-blue-300"> | |
| OpenAI | |
| </Badge> | |
| ); | |
| case 'qwen': | |
| return ( | |
| <Badge variant="outline" className="ml-2 bg-amber-50 text-amber-800 border-amber-300"> | |
| Qwen (Fallback) | |
| </Badge> | |
| ); | |
| case 'unavailable': | |
| return ( | |
| <Badge variant="outline" className="ml-2 bg-red-50 text-red-800 border-red-300"> | |
| No AI Available | |
| </Badge> | |
| ); | |
| default: | |
| return null; | |
| } | |
| }; | |
| return ( | |
| <div className="flex items-center"> | |
| <span | |
| className={`inline-block h-2 w-2 rounded-full mr-2 ${ | |
| isConnected ? 'bg-green-500' : 'bg-red-500' | |
| }`} | |
| ></span> | |
| <span className="text-sm text-gray-600 mr-2"> | |
| {isConnected ? 'Connected' : 'Disconnected'} | |
| </span> | |
| <TooltipProvider> | |
| <Tooltip> | |
| <TooltipTrigger asChild> | |
| {getModelBadge()} | |
| </TooltipTrigger> | |
| <TooltipContent> | |
| <p> | |
| {currentModel === 'openai' | |
| ? 'Using OpenAI GPT-4o model' | |
| : currentModel === 'qwen' | |
| ? 'Using Qwen fallback model due to OpenAI unavailability' | |
| : 'All AI models are currently unavailable'} | |
| </p> | |
| </TooltipContent> | |
| </Tooltip> | |
| </TooltipProvider> | |
| </div> | |
| ); | |
| }; | |
| export default ConnectionStatus; | |