import { Card, Container, Grid, Stack, Text, TextInput, Title } from "@mantine/core"; import { ListChangedIndicator } from "../../atoms/ListChangedIndicator/ListChangedIndicator"; import { ToolListItem } from "../../molecules/ToolListItem/ToolListItem"; import { ToolDetailPanel } from "../../molecules/ToolDetailPanel/ToolDetailPanel"; import { ResultPanel } from "../../molecules/ResultPanel/ResultPanel"; import type { ToolListItemProps } from "../../molecules/ToolListItem/ToolListItem"; import type { ToolDetailPanelProps } from "../../molecules/ToolDetailPanel/ToolDetailPanel"; import type { ResultPanelProps } from "../../molecules/ResultPanel/ResultPanel"; export interface ToolsScreenProps { tools: ToolListItemProps[]; selectedTool?: ToolDetailPanelProps; result?: ResultPanelProps; listChanged: boolean; searchText: string; onSearchChange: (text: string) => void; onRefreshList: () => void; onSelectTool: (name: string) => void; } export function ToolsScreen({ tools, selectedTool, result, listChanged, searchText, onSearchChange, onRefreshList, onSelectTool, }: ToolsScreenProps) { const filteredTools = searchText ? tools.filter((tool) => tool.name.toLowerCase().includes(searchText.toLowerCase()), ) : tools; return ( Tools onSearchChange(event.currentTarget.value)} /> {filteredTools.map((tool) => ( onSelectTool(tool.name)} /> ))} {selectedTool ? ( ) : ( Select a tool to view details )} {result ? ( ) : ( Results will appear here )} ); }