import { ChangeEvent, FC, ReactElement, ReactEventHandler, useState, } from "react"; interface ItemProps { name: string; data: Item; } interface ListProps { title: string; onRefresh: ReactEventHandler; component: FC>; map: { [key: string]: Item }; } function SearchableList({ title, onRefresh, component, map, }: ListProps): ReactElement { const [filter, setFilter] = useState(""); const onChange = (event: ChangeEvent) => { setFilter(event.target.value); }; const children = []; for (const name in map) { if (name.includes(filter)) { children.push(
  • {component({ name, data: map[name] })}
  • ); } } return (

    {title}

      {children}
    ); } export default SearchableList;