add: search tools by name
This commit is contained in:
@@ -41,6 +41,7 @@ const ToolsTab = ({
|
|||||||
}) => {
|
}) => {
|
||||||
const [params, setParams] = useState<Record<string, unknown>>({});
|
const [params, setParams] = useState<Record<string, unknown>>({});
|
||||||
const [isToolRunning, setIsToolRunning] = useState(false);
|
const [isToolRunning, setIsToolRunning] = useState(false);
|
||||||
|
const [filterText, setFilterText] = useState("");
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const params = Object.entries(
|
const params = Object.entries(
|
||||||
@@ -52,6 +53,12 @@ const ToolsTab = ({
|
|||||||
setParams(Object.fromEntries(params));
|
setParams(Object.fromEntries(params));
|
||||||
}, [selectedTool]);
|
}, [selectedTool]);
|
||||||
|
|
||||||
|
const filteredTools = filterText
|
||||||
|
? tools.filter((tool) =>
|
||||||
|
tool.name.toLowerCase().includes(filterText.toLowerCase())
|
||||||
|
)
|
||||||
|
: tools;
|
||||||
|
|
||||||
const renderToolResult = () => {
|
const renderToolResult = () => {
|
||||||
if (!toolResult) return null;
|
if (!toolResult) return null;
|
||||||
|
|
||||||
@@ -124,27 +131,34 @@ const ToolsTab = ({
|
|||||||
return (
|
return (
|
||||||
<TabsContent value="tools">
|
<TabsContent value="tools">
|
||||||
<div className="grid grid-cols-2 gap-4">
|
<div className="grid grid-cols-2 gap-4">
|
||||||
<ListPane
|
<div className="space-y-2">
|
||||||
items={tools}
|
<Input
|
||||||
listItems={listTools}
|
placeholder="Filter tools by name..."
|
||||||
clearItems={() => {
|
value={filterText}
|
||||||
clearTools();
|
onChange={(e) => setFilterText(e.target.value)}
|
||||||
setSelectedTool(null);
|
className="w-full"
|
||||||
}}
|
/>
|
||||||
setSelectedItem={setSelectedTool}
|
<ListPane
|
||||||
renderItem={(tool) => (
|
items={filteredTools}
|
||||||
<div className="flex flex-col items-start">
|
listItems={listTools}
|
||||||
<span className="flex-1">{tool.name}</span>
|
clearItems={() => {
|
||||||
<span className="text-sm text-gray-500 text-left">
|
clearTools();
|
||||||
{tool.description}
|
setSelectedTool(null);
|
||||||
</span>
|
}}
|
||||||
</div>
|
setSelectedItem={setSelectedTool}
|
||||||
)}
|
renderItem={(tool) => (
|
||||||
title="Tools"
|
<div className="flex flex-col items-start">
|
||||||
buttonText={nextCursor ? "List More Tools" : "List Tools"}
|
<span className="flex-1">{tool.name}</span>
|
||||||
isButtonDisabled={!nextCursor && tools.length > 0}
|
<span className="text-sm text-gray-500 text-left">
|
||||||
/>
|
{tool.description}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
title="Tools"
|
||||||
|
buttonText={nextCursor ? "List More Tools" : "List Tools"}
|
||||||
|
isButtonDisabled={!nextCursor && tools.length > 0}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
<div className="bg-card rounded-lg shadow">
|
<div className="bg-card rounded-lg shadow">
|
||||||
<div className="p-4 border-b border-gray-200 dark:border-gray-800">
|
<div className="p-4 border-b border-gray-200 dark:border-gray-800">
|
||||||
<h3 className="font-semibold">
|
<h3 className="font-semibold">
|
||||||
@@ -301,4 +315,4 @@ const ToolsTab = ({
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default ToolsTab;
|
export default ToolsTab;
|
||||||
Reference in New Issue
Block a user