import { Role } from '@roleypoly/design-system/atoms/role'; import { Space } from '@roleypoly/design-system/atoms/space'; import { TextInputWithIcon } from '@roleypoly/design-system/atoms/text-input'; import { Role as RoleType } from '@roleypoly/types'; import Fuse from 'fuse.js'; import * as React from 'react'; import { GoSearch } from 'react-icons/go'; import styled from 'styled-components'; type Props = { roles: RoleType[]; placeholder?: string; onSelect: (role: RoleType) => void; onSearchUpdate: (newTerm: string) => void; searchTerm: string; }; export const RoleSearch = (props: Props) => { const fuse = new Fuse(props.roles, { includeScore: true, keys: ['name'] }); const results = props.searchTerm !== '' ? fuse.search(props.searchTerm) : props.roles.map((role) => ({ item: role, })); const handleClick = (role: RoleType) => () => { props.onSelect(role); }; return (