import React, { useState, useEffect } from "react"; import { ChevronDown, ChevronRight, Trash2 } from "lucide-react"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Select, SelectItem } from "@heroui/react"; import { Checkbox } from "@heroui/react"; import { Button } from "@/components/ui/button"; import { InputField } from "@/app/lib/components/input-field"; export function ToolParamCard({ param, handleUpdate, handleDelete, handleRename, readOnly }: { param: { name: string, description: string, type: string, required: boolean }, handleUpdate: (name: string, data: { description: string, type: string, required: boolean }) => void, handleDelete: (name: string) => void, handleRename: (oldName: string, newName: string) => void, readOnly?: boolean }) { const [expanded, setExpanded] = useState(false); const [localName, setLocalName] = useState(param.name); useEffect(() => { setLocalName(param.name); }, [param.name]); return (
)}
{expanded && (
{ setLocalName(value); if (value && value !== param.name) { handleRename(param.name, value); } }} multiline={false} className="w-full" locked={readOnly} />
handleUpdate(param.name, { ...param, description: value })} multiline={true} placeholder="Describe this parameter..." className="w-full" locked={readOnly} />
handleUpdate(param.name, { ...param, required: !param.required })} isDisabled={readOnly} className="mt-2" > Required parameter
)}
); }