import { useState, useMemo } from "react"; import { TOOLS, CATEGORIES } from "@stirling-image/shared"; import { SearchBar } from "../common/search-bar"; import { ToolCard } from "../common/tool-card"; export function ToolPanel() { const [search, setSearch] = useState(""); const filteredTools = useMemo(() => { if (!search) return TOOLS; const q = search.toLowerCase(); return TOOLS.filter( (t) => t.name.toLowerCase().includes(q) || t.description.toLowerCase().includes(q) ); }, [search]); const groupedTools = useMemo(() => { const groups = new Map(); for (const tool of filteredTools) { const list = groups.get(tool.category) || []; list.push(tool); groups.set(tool.category, list); } return groups; }, [filteredTools]); return (
{CATEGORIES.filter((cat) => groupedTools.has(cat.id)).map( (category) => (

{category.name}

{groupedTools.get(category.id)!.map((tool) => ( ))}
) )} {filteredTools.length === 0 && (

No tools found

)}
); }