import { Box, Input, InputGroup, InputLeftElement, Text, useColorMode, Icon } from "@chakra-ui/core"; import IconList from "./IconList"; import { useEffect, useRef, useState } from "react"; import useSearch from "../lib/search"; import { useRouter } from 'next/router'; import { useDebounce } from '../lib/useDebounce'; import theme from "../lib/theme"; import { Search as SearchIcon } from 'lucide-react'; const IconOverview = ({data}) => { const router = useRouter(); const { query } = router.query; const [queryText, setQueryText] = useState(query || ''); const debouncedQuery = useDebounce(queryText, 1000); const results = useSearch(data, queryText); const { colorMode } = useColorMode(); const inputElement = useRef(null); function handleKeyDown(event) { if (event.key === "/" && inputElement.current !== document.activeElement) { event.preventDefault(); inputElement.current.focus(); } } useEffect(() => { setQueryText(query || ''); }, [query]); useEffect(() => { const { query } = router; router.push({ query: { ...query, query: debouncedQuery }, }); }, [debouncedQuery]); useEffect(() => { window.addEventListener('keydown', handleKeyDown); return () => window.removeEventListener('keydown', handleKeyDown); }, []); return ( <> )} /> setQueryText(event.target.value)} /> {results.length > 0 ? ( ) : ( No results found for "{query}" )} ); } export default IconOverview;