xref: /expo/docs/ui/components/Search/Search.tsx (revision dfd15ebd)
1import * as docsearch from '@docsearch/react';
2import { Global } from '@emotion/react';
3import * as React from 'react';
4
5import { usePageApiVersion } from '~/providers/page-api-version';
6import versions from '~/public/static/constants/versions.json';
7import { DocSearchStyles } from '~/ui/components/Search/styles';
8
9const { LATEST_VERSION } = versions;
10
11const env = process.env.NODE_ENV;
12
13export const Search = () => {
14  const { version } = usePageApiVersion();
15  return (
16    <>
17      <Global styles={DocSearchStyles} />
18      <docsearch.DocSearch
19        appId="QEX7PB7D46"
20        indexName="expo"
21        apiKey="89231e630c63f383765538848f9a0e9e"
22        searchParameters={{
23          facetFilters: [['version:none', `version:${version}`]],
24        }}
25        transformItems={items =>
26          items.map(item => {
27            const envUrl =
28              env === 'development'
29                ? item.url.replace('https://docs.expo.dev/', 'http://localhost:3002/')
30                : item.url;
31            return {
32              ...item,
33              url: envUrl.includes(LATEST_VERSION)
34                ? envUrl.replace(LATEST_VERSION, 'latest')
35                : envUrl,
36            };
37          })
38        }
39      />
40    </>
41  );
42};
43