import { useTranslation } from "@plexswap/localization"; import debounce from "lodash/debounce"; import { useEffect, useMemo, useState } from "react"; import { styled } from "styled-components"; import { Input } from "../Input"; const StyledInput = styled(Input)` border-radius: 16px; margin-left: auto; `; const InputWrapper = styled.div` position: relative; ${({ theme }) => theme.mediaQueries.sm} { display: block; } `; interface Props { onChange: (e: React.ChangeEvent) => void; placeholder?: string; initialValue?: string; } const SearchInput: React.FC> = ({ onChange: onChangeCallback, placeholder = "Search", initialValue, }) => { const [searchText, setSearchText] = useState(""); const { t } = useTranslation(); const debouncedOnChange = useMemo( () => debounce((e: React.ChangeEvent) => onChangeCallback(e), 500), [onChangeCallback] ); const onChange = (e: React.ChangeEvent) => { setSearchText(e.target.value); debouncedOnChange(e); }; useEffect(() => { if (initialValue) { setSearchText(initialValue); } }, [initialValue]); return ( ); }; export default SearchInput;