MCPcopy Create free account
hub / github.com/Surfer-Org/Protocol / SearchDialog

Function SearchDialog

docs/src/components/Search.jsx:278–364  ·  view source on GitHub ↗
({ open, setOpen, className })

Source from the content-addressed store, hash-verified

276})
277
278function SearchDialog({ open, setOpen, className }) {
279 let formRef = useRef(null)
280 let panelRef = useRef(null)
281 let inputRef = useRef(null)
282 let { autocomplete, autocompleteState } = useAutocomplete({
283 close() {
284 setOpen(false)
285 },
286 })
287 let pathname = usePathname()
288 let searchParams = useSearchParams()
289
290 useEffect(() => {
291 setOpen(false)
292 }, [pathname, searchParams, setOpen])
293
294 useEffect(() => {
295 if (open) {
296 return
297 }
298
299 function onKeyDown(event) {
300 if (event.key === 'k' && (event.metaKey || event.ctrlKey)) {
301 event.preventDefault()
302 setOpen(true)
303 }
304 }
305
306 window.addEventListener('keydown', onKeyDown)
307
308 return () => {
309 window.removeEventListener('keydown', onKeyDown)
310 }
311 }, [open, setOpen])
312
313 return (
314 <Dialog
315 open={open}
316 onClose={() => {
317 setOpen(false)
318 autocomplete.setQuery('')
319 }}
320 className={clsx('fixed inset-0 z-50', className)}
321 >
322 <DialogBackdrop
323 transition
324 className="fixed inset-0 bg-zinc-400/25 backdrop-blur-sm data-[closed]:opacity-0 data-[enter]:duration-300 data-[leave]:duration-200 data-[enter]:ease-out data-[leave]:ease-in dark:bg-black/40"
325 />
326
327 <div className="fixed inset-0 overflow-y-auto px-4 py-4 sm:px-6 sm:py-20 md:py-32 lg:px-8 lg:py-[15vh]">
328 <DialogPanel
329 transition
330 className="mx-auto transform-gpu overflow-hidden rounded-lg bg-zinc-50 shadow-xl ring-1 ring-zinc-900/7.5 data-[closed]:scale-95 data-[closed]:opacity-0 data-[enter]:duration-300 data-[leave]:duration-200 data-[enter]:ease-out data-[leave]:ease-in sm:max-w-xl dark:bg-zinc-900 dark:ring-zinc-800"
331 >
332 <div {...autocomplete.getRootProps({})}>
333 <form
334 ref={formRef}
335 {...autocomplete.getFormProps({

Callers

nothing calls this directly

Calls 1

useAutocompleteFunction · 0.85

Tested by

no test coverage detected