import { useCallback, useEffect, useState } from "react"; import { createPortal } from "react-dom"; import Link from "next/link"; import Router from "next/router"; import { DocSearchModal, useDocSearchKeyboardEvents } from "@docsearch/react"; const docSearchConfig = { appId: process.env.NEXT_PUBLIC_DOCSEARCH_APP_ID || "", apiKey: process.env.NEXT_PUBLIC_DOCSEARCH_API_KEY || "", indexName: process.env.NEXT_PUBLIC_DOCSEARCH_INDEX_NAME || "", }; interface HitProps { hit: { url: string }; children: React.ReactNode; } function Hit({ hit, children }: HitProps) { return {children}; } function SearchIcon(props: any) { return ( ); } export function Search() { let [isOpen, setIsOpen] = useState(false); let [modifierKey, setModifierKey] = useState(); const onOpen = useCallback(() => { setIsOpen(true); }, [setIsOpen]); const onClose = useCallback(() => { setIsOpen(false); }, [setIsOpen]); useDocSearchKeyboardEvents({ isOpen, onOpen, onClose }); useEffect(() => { setModifierKey(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) ? "⌘" : "Ctrl "); }, []); return ( <> {isOpen && createPortal( , document.body )} ); }