"use client"; import { useState, useEffect, useRef } from "react"; import { ChevronDown, Cpu, CircuitBoard } from "lucide-react"; import type { ModelInfo } from "@/lib/models"; interface ModelDropdownProps { models: ModelInfo[]; selectedModel: string | null; onSelectModel: (modelId: string) => void; disabled?: boolean; } export function ModelDropdown({ models, selectedModel, onSelectModel, disabled = false, }: ModelDropdownProps) { const [isOpen, setIsOpen] = useState(false); const dropdownRef = useRef(null); const selectedModelData = models.find((m) => m.id === selectedModel); useEffect(() => { function handleClickOutside(event: MouseEvent) { if ( dropdownRef.current && !dropdownRef.current.contains(event.target as Node) ) { setIsOpen(false); } } document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); return (
{isOpen && (
{models.length === 0 ? (
No models available
) : ( models.map((model) => ( )) )}
)}
); }