diff --git a/website/package-lock.json b/website/package-lock.json
index ef2602f35..1c051937f 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -6,6 +6,8 @@
"": {
"dependencies": {
"@aws-sdk/client-cloudwatch": "^3.393.0",
+ "@docsearch/css": "^3.5.2",
+ "@docsearch/react": "^3.5.2",
"@heroicons/react": "^2.0.18",
"@octokit/graphql": "^7.0.1",
"next": "^13.4.9",
@@ -25,6 +27,162 @@
"tailwindcss": "^3.3.2"
}
},
+ "node_modules/@algolia/autocomplete-core": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz",
+ "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==",
+ "dependencies": {
+ "@algolia/autocomplete-plugin-algolia-insights": "1.9.3",
+ "@algolia/autocomplete-shared": "1.9.3"
+ }
+ },
+ "node_modules/@algolia/autocomplete-plugin-algolia-insights": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz",
+ "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==",
+ "dependencies": {
+ "@algolia/autocomplete-shared": "1.9.3"
+ },
+ "peerDependencies": {
+ "search-insights": ">= 1 < 3"
+ }
+ },
+ "node_modules/@algolia/autocomplete-preset-algolia": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz",
+ "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==",
+ "dependencies": {
+ "@algolia/autocomplete-shared": "1.9.3"
+ },
+ "peerDependencies": {
+ "@algolia/client-search": ">= 4.9.1 < 6",
+ "algoliasearch": ">= 4.9.1 < 6"
+ }
+ },
+ "node_modules/@algolia/autocomplete-shared": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz",
+ "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==",
+ "peerDependencies": {
+ "@algolia/client-search": ">= 4.9.1 < 6",
+ "algoliasearch": ">= 4.9.1 < 6"
+ }
+ },
+ "node_modules/@algolia/cache-browser-local-storage": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz",
+ "integrity": "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==",
+ "dependencies": {
+ "@algolia/cache-common": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/cache-common": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz",
+ "integrity": "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ=="
+ },
+ "node_modules/@algolia/cache-in-memory": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz",
+ "integrity": "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==",
+ "dependencies": {
+ "@algolia/cache-common": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/client-account": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz",
+ "integrity": "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==",
+ "dependencies": {
+ "@algolia/client-common": "4.20.0",
+ "@algolia/client-search": "4.20.0",
+ "@algolia/transporter": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/client-analytics": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz",
+ "integrity": "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==",
+ "dependencies": {
+ "@algolia/client-common": "4.20.0",
+ "@algolia/client-search": "4.20.0",
+ "@algolia/requester-common": "4.20.0",
+ "@algolia/transporter": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/client-common": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz",
+ "integrity": "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==",
+ "dependencies": {
+ "@algolia/requester-common": "4.20.0",
+ "@algolia/transporter": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/client-personalization": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz",
+ "integrity": "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==",
+ "dependencies": {
+ "@algolia/client-common": "4.20.0",
+ "@algolia/requester-common": "4.20.0",
+ "@algolia/transporter": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/client-search": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz",
+ "integrity": "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==",
+ "dependencies": {
+ "@algolia/client-common": "4.20.0",
+ "@algolia/requester-common": "4.20.0",
+ "@algolia/transporter": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/logger-common": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz",
+ "integrity": "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ=="
+ },
+ "node_modules/@algolia/logger-console": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz",
+ "integrity": "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==",
+ "dependencies": {
+ "@algolia/logger-common": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/requester-browser-xhr": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz",
+ "integrity": "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==",
+ "dependencies": {
+ "@algolia/requester-common": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/requester-common": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz",
+ "integrity": "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng=="
+ },
+ "node_modules/@algolia/requester-node-http": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz",
+ "integrity": "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==",
+ "dependencies": {
+ "@algolia/requester-common": "4.20.0"
+ }
+ },
+ "node_modules/@algolia/transporter": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz",
+ "integrity": "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==",
+ "dependencies": {
+ "@algolia/cache-common": "4.20.0",
+ "@algolia/logger-common": "4.20.0",
+ "@algolia/requester-common": "4.20.0"
+ }
+ },
"node_modules/@alloc/quick-lru": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
@@ -596,6 +754,42 @@
"resolved": "https://registry.npmjs.org/@corex/deepmerge/-/deepmerge-4.0.43.tgz",
"integrity": "sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ=="
},
+ "node_modules/@docsearch/css": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz",
+ "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA=="
+ },
+ "node_modules/@docsearch/react": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz",
+ "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==",
+ "dependencies": {
+ "@algolia/autocomplete-core": "1.9.3",
+ "@algolia/autocomplete-preset-algolia": "1.9.3",
+ "@docsearch/css": "3.5.2",
+ "algoliasearch": "^4.19.1"
+ },
+ "peerDependencies": {
+ "@types/react": ">= 16.8.0 < 19.0.0",
+ "react": ">= 16.8.0 < 19.0.0",
+ "react-dom": ">= 16.8.0 < 19.0.0",
+ "search-insights": ">= 1 < 3"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ },
+ "search-insights": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@headlessui/react": {
"version": "1.7.15",
"resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.15.tgz",
@@ -1821,6 +2015,27 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
+ "node_modules/algoliasearch": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz",
+ "integrity": "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==",
+ "dependencies": {
+ "@algolia/cache-browser-local-storage": "4.20.0",
+ "@algolia/cache-common": "4.20.0",
+ "@algolia/cache-in-memory": "4.20.0",
+ "@algolia/client-account": "4.20.0",
+ "@algolia/client-analytics": "4.20.0",
+ "@algolia/client-common": "4.20.0",
+ "@algolia/client-personalization": "4.20.0",
+ "@algolia/client-search": "4.20.0",
+ "@algolia/logger-common": "4.20.0",
+ "@algolia/logger-console": "4.20.0",
+ "@algolia/requester-browser-xhr": "4.20.0",
+ "@algolia/requester-common": "4.20.0",
+ "@algolia/requester-node-http": "4.20.0",
+ "@algolia/transporter": "4.20.0"
+ }
+ },
"node_modules/ansi-sequence-parser": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz",
@@ -5810,6 +6025,12 @@
"compute-scroll-into-view": "^3.0.2"
}
},
+ "node_modules/search-insights": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.8.2.tgz",
+ "integrity": "sha512-PxA9M5Q2bpBelVvJ3oDZR8nuY00Z6qwOxL53wNpgzV28M/D6u9WUbImDckjLSILBF8F1hn/mgyuUaOPtjow4Qw==",
+ "peer": true
+ },
"node_modules/section-matter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
diff --git a/website/package.json b/website/package.json
index a6bad4669..479ab88b0 100644
--- a/website/package.json
+++ b/website/package.json
@@ -8,6 +8,8 @@
},
"dependencies": {
"@aws-sdk/client-cloudwatch": "^3.393.0",
+ "@docsearch/css": "^3.5.2",
+ "@docsearch/react": "^3.5.2",
"@heroicons/react": "^2.0.18",
"@octokit/graphql": "^7.0.1",
"next": "^13.4.9",
diff --git a/website/styles/main.css b/website/styles/main.css
index 461380f33..05fc3b790 100644
--- a/website/styles/main.css
+++ b/website/styles/main.css
@@ -1,7 +1,14 @@
+@import "@docsearch/css/dist/style.css";
+
@tailwind base;
@tailwind components;
@tailwind utilities;
+:root {
+ /* Algolia DocSearch https://github.com/algolia/docsearch/blob/main/packages/docsearch-css/src/_variables.css */
+ --docsearch-primary-color: theme(colors.blue.500);
+}
+
body {
font-family: "Inter var", system-ui, sans-serif;
}
@@ -47,3 +54,17 @@ body {
border-radius: 9999px;
vertical-align: text-top;
}
+
+/* Algolia */
+.DocSearch.DocSearch-Button {
+ @apply relative md:w-64 hidden md:flex min-w-[200px] w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] contrast-more:border contrast-more:border-current ring-gray-500;
+}
+.DocSearch .DocSearch-Button-Placeholder {
+ @apply text-gray-500 text-sm font-normal !important;
+}
+.DocSearch-Search-Icon {
+ display: none !important;
+}
+.DocSearch-Button-Keys {
+ @apply opacity-75 scale-75;
+}
diff --git a/website/theme.config.jsx b/website/theme.config.jsx
index 18dca5535..40718c0d9 100644
--- a/website/theme.config.jsx
+++ b/website/theme.config.jsx
@@ -2,6 +2,7 @@
import { useRouter } from 'next/router';
import { AnimatedLogo } from './src/components/AnimatedLogo';
import Footer from './src/components/Footer';
+import { DocSearch } from '@docsearch/react';
export default {
logo: ,
@@ -63,6 +64,9 @@ export default {
)
},
+ search: {
+ component:
+ },
components: {
// https://github.com/shuding/nextra/blob/main/packages/nextra-theme-docs/src/mdx-components.tsx
h1: props => (