This is an automated email from the ASF dual-hosted git repository.
shuai pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/answer-website.git
The following commit(s) were added to refs/heads/main by this push:
new 0f5a550d8 feat: support algolia search
0f5a550d8 is described below
commit 0f5a550d834e572147a6f6207b5fb57d65f24e41
Author: shuai <[email protected]>
AuthorDate: Mon Dec 22 12:10:15 2025 +0800
feat: support algolia search
---
docusaurus.config.js | 15 ++--
package.json | 1 +
pnpm-lock.yaml | 136 +++++++++++++++++++++++-------
src/theme/Navbar/Search/index.tsx | 6 +-
src/theme/Navbar/Search/styles.module.css | 14 ++-
src/theme/SearchBar.tsx | 13 ---
6 files changed, 135 insertions(+), 50 deletions(-)
diff --git a/docusaurus.config.js b/docusaurus.config.js
index c557edafe..ee75492cb 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -90,10 +90,10 @@ const config = {
respectPrefersColorScheme: false,
},
algolia: {
- appId: 'ALIEPVY5A0',
- apiKey: 'a7f83132b511548fc8fbc44f83239bf9',
- indexName: 'answer',
- container: '### REPLACE ME WITH A CONTAINER (e.g. div) ###',
+ appId: '3HYC7VUYNM',
+ apiKey: 'a5ab35036f4ec013766e0d65f4f9a1ad',
+ indexName: 'answer_apache_org_3hyc7vuynm_pages',
+ contextualSearch: true,
debug: true
},
navbar: {
@@ -151,7 +151,7 @@ const config = {
{
label: 'Roadmap',
to: 'https://github.com/apache/answer/projects',
- },
+ }
],
},
{
@@ -183,6 +183,10 @@ const config = {
position: 'right',
className: 'bi bi-github navbar-icon-link',
},
+ {
+ type: 'search',
+ position: 'right',
+ },
],
},
prism: {
@@ -190,6 +194,7 @@ const config = {
darkTheme: darkCodeTheme,
},
image: 'img/head-icon.png',
+ themes: ['@docusaurus/theme-search-algolia'],
}),
stylesheets: [
diff --git a/package.json b/package.json
index 1d41066ac..271270e7b 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,7 @@
"@docusaurus/theme-classic": "^3.1.1",
"@docusaurus/theme-common": "^3.1.1",
"@docusaurus/theme-mermaid": "^3.1.1",
+ "@docusaurus/theme-search-algolia": "3.1.1",
"@docusaurus/utils": "^3.1.1",
"@mdx-js/react": "^3.0.0",
"@popperjs/core": "^2.11.8",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6193907a0..56e8b5a23 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -28,7 +28,7 @@ importers:
version:
3.1.1([email protected])([email protected]([email protected]))([email protected])([email protected])
'@docusaurus/preset-classic':
specifier: 3.1.1
- version:
3.1.1(@algolia/[email protected])(@types/[email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])
+ version:
3.1.1(@algolia/[email protected])(@types/[email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])
'@docusaurus/theme-classic':
specifier: ^3.1.1
version:
3.1.1(@types/[email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])
@@ -38,6 +38,9 @@ importers:
'@docusaurus/theme-mermaid':
specifier: ^3.1.1
version:
3.1.1([email protected])([email protected]([email protected]))([email protected])([email protected])
+ '@docusaurus/theme-search-algolia':
+ specifier: 3.1.1
+ version:
3.1.1(@algolia/[email protected])(@docusaurus/[email protected]([email protected]([email protected]))([email protected]))(@types/[email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])
'@docusaurus/utils':
specifier: ^3.1.1
version:
3.1.1(@docusaurus/[email protected]([email protected]([email protected]))([email protected]))
@@ -165,12 +168,20 @@ packages:
'@algolia/[email protected]':
resolution: {integrity:
sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==}
+ '@algolia/[email protected]':
+ resolution: {integrity:
sha512-3u6AuZ1Kiss6V5JPuZfVIUYfPi8im06QBCgKqLg82GUBJ3SwhiTdSZFIEgz2mzFuitFdW1PQi3c/65zE/3FgIw==}
+ engines: {node: '>= 14.0.0'}
+
'@algolia/[email protected]':
resolution: {integrity:
sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==}
'@algolia/[email protected]':
resolution: {integrity:
sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==}
+ '@algolia/[email protected]':
+ resolution: {integrity:
sha512-NL76o/BoEgU4ObY5oBEC3o6KSPpuXsnSta00tAxTm1iKUWOGR34DQEKhUt8xMHhMKleUNPM/rLPFiIVtfsGU8w==}
+ engines: {node: '>= 14.0.0'}
+
'@algolia/[email protected]':
resolution: {integrity:
sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==}
@@ -183,12 +194,24 @@ packages:
'@algolia/[email protected]':
resolution: {integrity:
sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==}
+ '@algolia/[email protected]':
+ resolution: {integrity:
sha512-3GfCwudeW6/3caKSdmOP6RXZEL4F3GiemCaXEStkTt2Re8f7NcGYAAZnGlHsCzvhlNEuDzPYdYxh4UweY8l/2w==}
+ engines: {node: '>= 14.0.0'}
+
'@algolia/[email protected]':
resolution: {integrity:
sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==}
+ '@algolia/[email protected]':
+ resolution: {integrity:
sha512-JUAxYfmnLYTVtAOFxVvXJ4GDHIhMuaP7JGyZXa/nCk3P8RrN5FCNTdRyftSnxyzwSIAd8qH3CjdBS9WwxxqcHQ==}
+ engines: {node: '>= 14.0.0'}
+
'@algolia/[email protected]':
resolution: {integrity:
sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==}
+ '@algolia/[email protected]':
+ resolution: {integrity:
sha512-VwbhV1xvTGiek3d2pOS6vNBC4dtbNadyRT+i1niZpGhOJWz1XnfhxNboVbXPGAyMJYz7kDrolbDvEzIDT93uUA==}
+ engines: {node: '>= 14.0.0'}
+
'@algolia/[email protected]':
resolution: {integrity:
sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==}
@@ -1569,6 +1592,11 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
+ [email protected]:
+ resolution: {integrity:
sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
[email protected]:
resolution: {integrity:
sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==}
engines: {node: '>= 10.0.0'}
@@ -1601,8 +1629,8 @@ packages:
[email protected]:
resolution: {integrity:
sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
- [email protected]:
- resolution: {integrity:
sha512-DGUnK3TGtDQsaUE4ayF/LjSN0DGsuYThB8WBgnnDY0Wq04K6lNVruO3LfqJOgSfDiezp+Iyt8Tj4YKHi+/ivSA==}
+ [email protected]:
+ resolution: {integrity:
sha512-CAlCxm4fYBXtvc5MamDzP6Svu8rW4z9me4DCBY1rQ2UDJ0u0flWmusQ8M3nOExZsLLRcUwUPoRAPMrhzOG3erw==}
peerDependencies:
algoliasearch: '>= 3.1 < 6'
@@ -2312,6 +2340,15 @@ packages:
supports-color:
optional: true
+ [email protected]:
+ resolution: {integrity:
sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
[email protected]:
resolution: {integrity:
sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
@@ -2761,6 +2798,10 @@ packages:
resolution: {integrity:
sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==}
engines: {node: '>=14.14'}
+ [email protected]:
+ resolution: {integrity:
sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==}
+ engines: {node: '>=14.14'}
+
[email protected]:
resolution: {integrity:
sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
engines: {node: '>=10'}
@@ -5352,32 +5393,32 @@ snapshots:
'@aashutoshrathi/[email protected]': {}
-
'@algolia/[email protected](@algolia/[email protected])([email protected])([email protected])':
+
'@algolia/[email protected](@algolia/[email protected])([email protected])([email protected])':
dependencies:
- '@algolia/autocomplete-plugin-algolia-insights':
1.9.3(@algolia/[email protected])([email protected])([email protected])
- '@algolia/autocomplete-shared':
1.9.3(@algolia/[email protected])([email protected])
+ '@algolia/autocomplete-plugin-algolia-insights':
1.9.3(@algolia/[email protected])([email protected])([email protected])
+ '@algolia/autocomplete-shared':
1.9.3(@algolia/[email protected])([email protected])
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- search-insights
-
'@algolia/[email protected](@algolia/[email protected])([email protected])([email protected])':
+
'@algolia/[email protected](@algolia/[email protected])([email protected])([email protected])':
dependencies:
- '@algolia/autocomplete-shared':
1.9.3(@algolia/[email protected])([email protected])
+ '@algolia/autocomplete-shared':
1.9.3(@algolia/[email protected])([email protected])
search-insights: 2.11.0
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
-
'@algolia/[email protected](@algolia/[email protected])([email protected])':
+
'@algolia/[email protected](@algolia/[email protected])([email protected])':
dependencies:
- '@algolia/autocomplete-shared':
1.9.3(@algolia/[email protected])([email protected])
- '@algolia/client-search': 4.20.0
+ '@algolia/autocomplete-shared':
1.9.3(@algolia/[email protected])([email protected])
+ '@algolia/client-search': 5.46.1
algoliasearch: 4.20.0
-
'@algolia/[email protected](@algolia/[email protected])([email protected])':
+
'@algolia/[email protected](@algolia/[email protected])([email protected])':
dependencies:
- '@algolia/client-search': 4.20.0
+ '@algolia/client-search': 5.46.1
algoliasearch: 4.20.0
'@algolia/[email protected]':
@@ -5408,6 +5449,8 @@ snapshots:
'@algolia/requester-common': 4.20.0
'@algolia/transporter': 4.20.0
+ '@algolia/[email protected]': {}
+
'@algolia/[email protected]':
dependencies:
'@algolia/client-common': 4.20.0
@@ -5420,6 +5463,13 @@ snapshots:
'@algolia/requester-common': 4.20.0
'@algolia/transporter': 4.20.0
+ '@algolia/[email protected]':
+ dependencies:
+ '@algolia/client-common': 5.46.1
+ '@algolia/requester-browser-xhr': 5.46.1
+ '@algolia/requester-fetch': 5.46.1
+ '@algolia/requester-node-http': 5.46.1
+
'@algolia/[email protected]': {}
'@algolia/[email protected]': {}
@@ -5432,12 +5482,24 @@ snapshots:
dependencies:
'@algolia/requester-common': 4.20.0
+ '@algolia/[email protected]':
+ dependencies:
+ '@algolia/client-common': 5.46.1
+
'@algolia/[email protected]': {}
+ '@algolia/[email protected]':
+ dependencies:
+ '@algolia/client-common': 5.46.1
+
'@algolia/[email protected]':
dependencies:
'@algolia/requester-common': 4.20.0
+ '@algolia/[email protected]':
+ dependencies:
+ '@algolia/client-common': 5.46.1
+
'@algolia/[email protected]':
dependencies:
'@algolia/cache-common': 4.20.0
@@ -6258,10 +6320,10 @@ snapshots:
'@docsearch/[email protected]': {}
-
'@docsearch/[email protected](@algolia/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])([email protected])':
+
'@docsearch/[email protected](@algolia/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])([email protected])':
dependencies:
- '@algolia/autocomplete-core':
1.9.3(@algolia/[email protected])([email protected])([email protected])
- '@algolia/autocomplete-preset-algolia':
1.9.3(@algolia/[email protected])([email protected])
+ '@algolia/autocomplete-core':
1.9.3(@algolia/[email protected])([email protected])([email protected])
+ '@algolia/autocomplete-preset-algolia':
1.9.3(@algolia/[email protected])([email protected])
'@docsearch/css': 3.5.2
algoliasearch: 4.20.0
optionalDependencies:
@@ -6708,7 +6770,7 @@ snapshots:
- vue-template-compiler
- webpack-cli
-
'@docusaurus/[email protected](@algolia/[email protected])(@types/[email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])':
+
'@docusaurus/[email protected](@algolia/[email protected])(@types/[email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])':
dependencies:
'@docusaurus/core':
3.1.1(@docusaurus/[email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected]([email protected]))([email protected])([email protected])
'@docusaurus/plugin-content-blog':
3.1.1([email protected])([email protected]([email protected]))([email protected])([email protected])
@@ -6721,7 +6783,7 @@ snapshots:
'@docusaurus/plugin-sitemap':
3.1.1([email protected])([email protected]([email protected]))([email protected])([email protected])
'@docusaurus/theme-classic':
3.1.1(@types/[email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])
'@docusaurus/theme-common':
3.1.1(@docusaurus/[email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected]([email protected]))([email protected])([email protected])
- '@docusaurus/theme-search-algolia':
3.1.1(@algolia/[email protected])(@docusaurus/[email protected]([email protected]([email protected]))([email protected]))(@types/[email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])
+ '@docusaurus/theme-search-algolia':
3.1.1(@algolia/[email protected])(@docusaurus/[email protected]([email protected]([email protected]))([email protected]))(@types/[email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])
'@docusaurus/types': 3.1.1([email protected]([email protected]))([email protected])
react: 18.0.0
react-dom: 18.0.0([email protected])
@@ -6863,9 +6925,9 @@ snapshots:
- vue-template-compiler
- webpack-cli
-
'@docusaurus/[email protected](@algolia/[email protected])(@docusaurus/[email protected]([email protected]([email protected]))([email protected]))(@types/[email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])':
+
'@docusaurus/[email protected](@algolia/[email protected])(@docusaurus/[email protected]([email protected]([email protected]))([email protected]))(@types/[email protected])([email protected])([email protected]([email protected]))([email protected])([email protected])([email protected])':
dependencies:
- '@docsearch/react':
3.5.2(@algolia/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])([email protected])
+ '@docsearch/react':
3.5.2(@algolia/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])([email protected])
'@docusaurus/core':
3.1.1(@docusaurus/[email protected]([email protected]([email protected]))([email protected]))([email protected])([email protected]([email protected]))([email protected])([email protected])
'@docusaurus/logger': 3.1.1
'@docusaurus/plugin-content-docs':
3.1.1([email protected])([email protected]([email protected]))([email protected])([email protected])
@@ -6874,10 +6936,10 @@ snapshots:
'@docusaurus/utils':
3.1.1(@docusaurus/[email protected]([email protected]([email protected]))([email protected]))
'@docusaurus/utils-validation':
3.1.1(@docusaurus/[email protected]([email protected]([email protected]))([email protected]))
algoliasearch: 4.20.0
- algoliasearch-helper: 3.15.0([email protected])
+ algoliasearch-helper: 3.26.1([email protected])
clsx: 2.0.0
eta: 2.2.0
- fs-extra: 11.1.1
+ fs-extra: 11.3.3
lodash: 4.17.21
react: 18.0.0
react-dom: 18.0.0([email protected])
@@ -6906,7 +6968,7 @@ snapshots:
'@docusaurus/[email protected]':
dependencies:
- fs-extra: 11.1.1
+ fs-extra: 11.3.3
tslib: 2.6.2
'@docusaurus/[email protected]': {}
@@ -6990,7 +7052,7 @@ snapshots:
'@eslint/[email protected]':
dependencies:
ajv: 6.12.6
- debug: 4.3.4
+ debug: 4.4.3
espree: 9.6.1
globals: 13.23.0
ignore: 5.3.0
@@ -7012,7 +7074,7 @@ snapshots:
'@humanwhocodes/[email protected]':
dependencies:
'@humanwhocodes/object-schema': 2.0.1
- debug: 4.3.4
+ debug: 4.4.3
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -7607,10 +7669,16 @@ snapshots:
dependencies:
acorn: 8.11.2
+ [email protected]([email protected]):
+ dependencies:
+ acorn: 8.15.0
+
[email protected]: {}
[email protected]: {}
+ [email protected]: {}
+
[email protected]: {}
[email protected]:
@@ -7645,7 +7713,7 @@ snapshots:
require-from-string: 2.0.2
uri-js: 4.4.1
- [email protected]([email protected]):
+ [email protected]([email protected]):
dependencies:
'@algolia/events': 4.0.1
algoliasearch: 4.20.0
@@ -8435,6 +8503,10 @@ snapshots:
dependencies:
ms: 2.1.2
+ [email protected]:
+ dependencies:
+ ms: 2.1.3
+
[email protected]:
dependencies:
character-entities: 2.0.2
@@ -8668,7 +8740,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4
+ debug: 4.4.3
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@@ -8700,8 +8772,8 @@ snapshots:
[email protected]:
dependencies:
- acorn: 8.11.2
- acorn-jsx: 5.3.2([email protected])
+ acorn: 8.15.0
+ acorn-jsx: 5.3.2([email protected])
eslint-visitor-keys: 3.4.3
[email protected]: {}
@@ -8953,6 +9025,12 @@ snapshots:
jsonfile: 6.1.0
universalify: 2.0.1
+ [email protected]:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+
[email protected]:
dependencies:
at-least-node: 1.0.0
diff --git a/src/theme/Navbar/Search/index.tsx
b/src/theme/Navbar/Search/index.tsx
index 236d237aa..1bfc3d3ba 100644
--- a/src/theme/Navbar/Search/index.tsx
+++ b/src/theme/Navbar/Search/index.tsx
@@ -15,5 +15,9 @@ export default function NavbarSearch({
children,
className,
}: Props): JSX.Element {
- return <div className={clsx(className, styles.searchBox)}>{children}</div>;
+ return (
+ <div className={clsx(className, styles.navbarSearchContainer)}>
+ {children}
+ </div>
+ );
}
diff --git a/src/theme/Navbar/Search/styles.module.css
b/src/theme/Navbar/Search/styles.module.css
index ca386bb12..fcf322d11 100644
--- a/src/theme/Navbar/Search/styles.module.css
+++ b/src/theme/Navbar/Search/styles.module.css
@@ -5,15 +5,25 @@
* LICENSE file in the root directory of this source tree.
*/
+/*
+Workaround to avoid rendering empty search container
+See https://github.com/facebook/docusaurus/pull/9385
+*/
+/*
+TODO temporary @supports check, remove before 2025
+only needed for Firefox < 121
+see https://github.com/facebook/docusaurus/issues/9527#issuecomment-1805272379
+ */
+
@media (max-width: 996px) {
- .searchBox {
+ .navbarSearchContainer {
position: absolute;
right: var(--ifm-navbar-padding-horizontal);
}
}
@media (min-width: 997px) {
- .searchBox {
+ .navbarSearchContainer {
padding: var(--ifm-navbar-item-padding-vertical)
var(--ifm-navbar-item-padding-horizontal);
}
diff --git a/src/theme/SearchBar.tsx b/src/theme/SearchBar.tsx
deleted file mode 100644
index 08ee42e30..000000000
--- a/src/theme/SearchBar.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-// By default, the classic theme does not provide any SearchBar implementation
-// If you swizzled this, it is your responsibility to provide an implementation
-// Tip: swizzle the SearchBar from the Algolia theme for inspiration:
-// npm run swizzle @docusaurus/theme-search-algolia SearchBar
-
-export {default} from '@docusaurus/Noop';