MCPcopy Create free account
hub / github.com/CommandCodeAI/BaseAI / SearchDialog

Function SearchDialog

apps/baseai.dev/src/components/Search.tsx:320–433  ·  view source on GitHub ↗
({
	open,
	setOpen,
	className
}: {
	open: boolean;
	setOpen: (open: boolean) => void;
	className?: string;
})

Source from the content-addressed store, hash-verified

318});
319
320function SearchDialog({
321 open,
322 setOpen,
323 className
324}: {
325 open: boolean;
326 setOpen: (open: boolean) => void;
327 className?: string;
328}) {
329 let formRef = useRef<React.ElementRef<'form'>>(null);
330 let panelRef = useRef<React.ElementRef<'div'>>(null);
331 let inputRef = useRef<React.ElementRef<typeof SearchInput>>(null);
332 let { autocomplete, autocompleteState } = useAutocomplete({
333 close() {
334 setOpen(false);
335 }
336 });
337 let pathname = usePathname();
338 let searchParams = useSearchParams();
339
340 useEffect(() => {
341 setOpen(false);
342 }, [pathname, searchParams, setOpen]);
343
344 useEffect(() => {
345 if (open) {
346 return;
347 }
348
349 function onKeyDown(event: KeyboardEvent) {
350 if (event.key === 'k' && (event.metaKey || event.ctrlKey)) {
351 event.preventDefault();
352 setOpen(true);
353 }
354 }
355
356 window.addEventListener('keydown', onKeyDown);
357
358 return () => {
359 window.removeEventListener('keydown', onKeyDown);
360 };
361 }, [open, setOpen]);
362
363 return (
364 <Transition
365 show={open}
366 as={Fragment}
367 afterLeave={() => autocomplete.setQuery('')}
368 >
369 <Dialog
370 onClose={setOpen}
371 className={clsx('fixed inset-0 z-50', className)}
372 >
373 <TransitionChild
374 as={Fragment}
375 enter="ease-out duration-300"
376 enterFrom="opacity-0"
377 enterTo="opacity-100"

Callers

nothing calls this directly

Calls 1

useAutocompleteFunction · 0.85

Tested by

no test coverage detected