useSearch(options: UseSearchOptions): UseSearchResult
The useSearch() hook makes it easy to create full text search experiences. It can connect to external search providers such as Algolia, or use the Markprompt built-in search API.
Basic example
1import { useSearch } from '@markprompt/react';
2
3function Search() {
4 const { searchResults, searchQuery, setSearchQuery, submitSearchQuery } =
5 useSearch({ projectKey: 'YOUR-PROJECT-KEY' });
6
7 return (
8 <div className="flex h-full w-full flex-col">
9 {searchResults.map((result) => (
10 <a key={result.href} href={result.href}>
11 {result.title}
12 </a>
13 ))}
14
15 <form
16 onSubmit={async (e) => {
17 e.preventDefault();
18 await submitSearchQuery(searchQuery);
19 }}
20 >
21 <input
22 className="fixed inset-x-2 bottom-0 rounded border border-neutral-200 p-2"
23 value={input}
24 placeholder="Send a message"
25 onChange={(e) => {
26 setSearchQuery(event.target.value);
27 submitSearchQuery(event.target.value);
28 }}
29 />
30 </form>
31 </div>
32 );
33}
Hook API
UseSearchOptions
| Prop | Type |
| apiUrl | string |
| projectKey | string |
| searchOptions | Omit<SubmitSearchQueryOptions, 'signal'> |
| debug | boolean |
UseSearchResult
| Prop | Type |
| searchQuery | string |
| searchResults | SearchResultComponentProps[] |
| state | SearchLoadingState |
| abort | () => void |
| setSearchQuery | (searchQuery: string) => void |
| submitSearchQuery | (searchQuery: string) => Promise<void> |