'use client'; import React, { useState, useEffect, useRef } from 'react'; import { Info } from 'lucide-react'; import { ModelStats } from '../ChatWindow'; import { cn } from '@/lib/utils'; interface ModelInfoButtonProps { modelStats: ModelStats | null; } const ModelInfoButton: React.FC = ({ modelStats }) => { const [showPopover, setShowPopover] = useState(false); const popoverRef = useRef(null); const buttonRef = useRef(null); // Always render, using "Unknown" as fallback if model info isn't available const modelName = modelStats?.modelName || 'Unknown'; useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if ( popoverRef.current && !popoverRef.current.contains(event.target as Node) && buttonRef.current && !buttonRef.current.contains(event.target as Node) ) { setShowPopover(false); } }; document.addEventListener('mousedown', handleClickOutside); return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, []); return (
{showPopover && (

Model Information

Model: {modelName}
{modelStats?.responseTime && (
Response time: {(modelStats.responseTime / 1000).toFixed(2)}s
)}
)}
); }; export default ModelInfoButton;