import React, { Fragment, useState } from "react" import { InstantSearch, Configure } from "react-instantsearch-dom" import Autocomplete from "./search/autocomplete" import { Dialog, Transition } from "@headlessui/react" import { SearchIcon } from "@heroicons/react/outline" // @ts-ignore import typesenseAdapter from "../../typesense" interface Props {} const Search = (props: Props) => { const searchClient = typesenseAdapter.searchClient // @ts-ignore const [query, setQuery] = useState("") const [searchBarActive, setSearchBarActive] = useState(false) const [open, setOpen] = useState(false) return ( <> <section className="my-4 flex w-full"> <button onClick={() => { setOpen(!open) }} type="submit" className="z-50 px-4 outline-none focus:outline-none active:outline-none" > <SearchIcon className="h-6 w-6 dark:text-gray-200" aria-hidden="true" /> </button> </section> <Transition.Root show={open} as={Fragment} afterLeave={() => setQuery("")} > <Dialog as="div" className="fixed inset-0 z-10 overflow-y-auto p-4 sm:p-6 md:p-20" onClose={setOpen} > <Transition.Child as={Fragment} enter="ease-out duration-300" enterFrom="opacity-0" enterTo="opacity-100" leave="ease-in duration-300" leaveFrom="opacity-100" leaveTo="opacity-0" > <Dialog.Overlay className="fixed inset-0 bg-gray-500 bg-opacity-25 transition-opacity blur" /> </Transition.Child> <Transition.Child as={Fragment} enter="ease-out duration-300" enterFrom="opacity-0 scale-95" enterTo="opacity-100 scale-100" leave="ease-in duration-200" leaveFrom="opacity-100 scale-100" leaveTo="opacity-0 scale-95" > <section className="my-4 flex justify-center"> <InstantSearch searchClient={searchClient} indexName="pages_v1" > <Configure hitsPerPage={5} /> <Autocomplete // @ts-ignore onSuggestionSelected={setQuery} onSuggestionCleared={setQuery} /> <button type="submit" className="-mx-10 z-50 outline-none focus:outline-none active:outline-none dark:color-gray-100 dark:border-gray-100" > <SearchIcon className="h-6 w-6 dark:color-gray-100 dark:border-gray-100" aria-hidden="true" /> </button> </InstantSearch> </section> </Transition.Child> </Dialog> </Transition.Root> </> ) } export default Search