diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4be8c14e0..9f0a0e379 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1098,6 +1098,9 @@ importers:
'@rslib/tsconfig':
specifier: workspace:*
version: link:../scripts/tsconfig
+ '@rspress/plugin-algolia':
+ specifier: 2.0.0-beta.6
+ version: 2.0.0-beta.6(@algolia/client-search@5.25.0)(@rspress/runtime@2.0.0-beta.6)(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@rspress/plugin-llms':
specifier: 2.0.0-beta.6
version: 2.0.0-beta.6(@rspress/core@2.0.0-beta.6(@types/react@19.1.4)(acorn@8.14.1))
@@ -1146,6 +1149,78 @@ packages:
'@adobe/css-tools@4.4.2':
resolution: {integrity: sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==}
+ '@algolia/autocomplete-core@1.17.9':
+ resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==}
+
+ '@algolia/autocomplete-plugin-algolia-insights@1.17.9':
+ resolution: {integrity: sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==}
+ peerDependencies:
+ search-insights: '>= 1 < 3'
+
+ '@algolia/autocomplete-preset-algolia@1.17.9':
+ resolution: {integrity: sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==}
+ peerDependencies:
+ '@algolia/client-search': '>= 4.9.1 < 6'
+ algoliasearch: '>= 4.9.1 < 6'
+
+ '@algolia/autocomplete-shared@1.17.9':
+ resolution: {integrity: sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==}
+ peerDependencies:
+ '@algolia/client-search': '>= 4.9.1 < 6'
+ algoliasearch: '>= 4.9.1 < 6'
+
+ '@algolia/client-abtesting@5.25.0':
+ resolution: {integrity: sha512-1pfQulNUYNf1Tk/svbfjfkLBS36zsuph6m+B6gDkPEivFmso/XnRgwDvjAx80WNtiHnmeNjIXdF7Gos8+OLHqQ==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-analytics@5.25.0':
+ resolution: {integrity: sha512-AFbG6VDJX/o2vDd9hqncj1B6B4Tulk61mY0pzTtzKClyTDlNP0xaUiEKhl6E7KO9I/x0FJF5tDCm0Hn6v5x18A==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-common@5.25.0':
+ resolution: {integrity: sha512-il1zS/+Rc6la6RaCdSZ2YbJnkQC6W1wiBO8+SH+DE6CPMWBU6iDVzH0sCKSAtMWl9WBxoN6MhNjGBnCv9Yy2bA==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-insights@5.25.0':
+ resolution: {integrity: sha512-blbjrUH1siZNfyCGeq0iLQu00w3a4fBXm0WRIM0V8alcAPo7rWjLbMJMrfBtzL9X5ic6wgxVpDADXduGtdrnkw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-personalization@5.25.0':
+ resolution: {integrity: sha512-aywoEuu1NxChBcHZ1pWaat0Plw7A8jDMwjgRJ00Mcl7wGlwuPt5dJ/LTNcg3McsEUbs2MBNmw0ignXBw9Tbgow==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-query-suggestions@5.25.0':
+ resolution: {integrity: sha512-a/W2z6XWKjKjIW1QQQV8PTTj1TXtaKx79uR3NGBdBdGvVdt24KzGAaN7sCr5oP8DW4D3cJt44wp2OY/fZcPAVA==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/client-search@5.25.0':
+ resolution: {integrity: sha512-9rUYcMIBOrCtYiLX49djyzxqdK9Dya/6Z/8sebPn94BekT+KLOpaZCuc6s0Fpfq7nx5J6YY5LIVFQrtioK9u0g==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/ingestion@1.25.0':
+ resolution: {integrity: sha512-jJeH/Hk+k17Vkokf02lkfYE4A+EJX+UgnMhTLR/Mb+d1ya5WhE+po8p5a/Nxb6lo9OLCRl6w3Hmk1TX1e9gVbQ==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/monitoring@1.25.0':
+ resolution: {integrity: sha512-Ls3i1AehJ0C6xaHe7kK9vPmzImOn5zBg7Kzj8tRYIcmCWVyuuFwCIsbuIIz/qzUf1FPSWmw0TZrGeTumk2fqXg==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/recommend@5.25.0':
+ resolution: {integrity: sha512-79sMdHpiRLXVxSjgw7Pt4R1aNUHxFLHiaTDnN2MQjHwJ1+o3wSseb55T9VXU4kqy3m7TUme3pyRhLk5ip/S4Mw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/requester-browser-xhr@5.25.0':
+ resolution: {integrity: sha512-JLaF23p1SOPBmfEqozUAgKHQrGl3z/Z5RHbggBu6s07QqXXcazEsub5VLonCxGVqTv6a61AAPr8J1G5HgGGjEw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/requester-fetch@5.25.0':
+ resolution: {integrity: sha512-rtzXwqzFi1edkOF6sXxq+HhmRKDy7tz84u0o5t1fXwz0cwx+cjpmxu/6OQKTdOJFS92JUYHsG51Iunie7xbqfQ==}
+ engines: {node: '>= 14.0.0'}
+
+ '@algolia/requester-node-http@5.25.0':
+ resolution: {integrity: sha512-ZO0UKvDyEFvyeJQX0gmZDQEvhLZ2X10K+ps6hViMo1HgE2V8em00SwNsQ+7E/52a+YiBkVWX61pJJJE44juDMQ==}
+ engines: {node: '>= 14.0.0'}
+
'@alloc/quick-lru@5.2.0':
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
@@ -1552,6 +1627,26 @@ packages:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0
vitest: '>=1.2.2'
+ '@docsearch/css@3.9.0':
+ resolution: {integrity: sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==}
+
+ '@docsearch/react@3.9.0':
+ resolution: {integrity: sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==}
+ peerDependencies:
+ '@types/react': '>= 16.8.0 < 20.0.0'
+ react: '>= 16.8.0 < 20.0.0'
+ react-dom: '>= 16.8.0 < 20.0.0'
+ search-insights: '>= 1 < 3'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ search-insights:
+ optional: true
+
'@emnapi/core@1.2.0':
resolution: {integrity: sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==}
@@ -2575,6 +2670,12 @@ packages:
resolution: {integrity: sha512-NpNhTKBIlV3O6ADhoZkgHvBFvXMW2TYlIWmIT1ysJESUBqDpaN9H3Teve5fugjU2pQ2ORBZO6SQGKliMw/8m/Q==}
engines: {node: '>= 10'}
+ '@rspress/plugin-algolia@2.0.0-beta.6':
+ resolution: {integrity: sha512-IEmpJVdjauEHkB7kAGQvRDfb1igx8Neeqv7V2+sZks1N3TVWOI2f2ovskF3oDewLvfiZ7CQsVRxHbyCRUstOaA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@rspress/runtime': ^2.0.0-beta.6
+
'@rspress/plugin-auto-nav-sidebar@2.0.0-beta.6':
resolution: {integrity: sha512-Vn/vmEpmLUKhbPUZgo3qh+SDYyy4CWBEQEqclJjBSZho0VuQELdJBGXFxsDWoEUCuuYC5fI/qi6p7Lx+p/D66g==}
engines: {node: '>=18.0.0'}
@@ -3306,6 +3407,10 @@ packages:
ajv@8.16.0:
resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==}
+ algoliasearch@5.25.0:
+ resolution: {integrity: sha512-n73BVorL4HIwKlfJKb4SEzAYkR3Buwfwbh+MYxg2mloFph2fFGV58E90QTzdbfzWrLn4HE5Czx/WTjI8fcHaMg==}
+ engines: {node: '>= 14.0.0'}
+
alien-signals@1.0.3:
resolution: {integrity: sha512-zQOh3wAYK5ujENxvBBR3CFGF/b6afaSzZ/c9yNhJ1ENrGHETvpUuKQsa93Qrclp0+PzTF93MaZ7scVp1uUozhA==}
@@ -7577,6 +7682,110 @@ snapshots:
'@adobe/css-tools@4.4.2': {}
+ '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)':
+ dependencies:
+ '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)
+ '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - algoliasearch
+ - search-insights
+
+ '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)':
+ dependencies:
+ '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - algoliasearch
+
+ '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)':
+ dependencies:
+ '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)
+ '@algolia/client-search': 5.25.0
+ algoliasearch: 5.25.0
+
+ '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)':
+ dependencies:
+ '@algolia/client-search': 5.25.0
+ algoliasearch: 5.25.0
+
+ '@algolia/client-abtesting@5.25.0':
+ dependencies:
+ '@algolia/client-common': 5.25.0
+ '@algolia/requester-browser-xhr': 5.25.0
+ '@algolia/requester-fetch': 5.25.0
+ '@algolia/requester-node-http': 5.25.0
+
+ '@algolia/client-analytics@5.25.0':
+ dependencies:
+ '@algolia/client-common': 5.25.0
+ '@algolia/requester-browser-xhr': 5.25.0
+ '@algolia/requester-fetch': 5.25.0
+ '@algolia/requester-node-http': 5.25.0
+
+ '@algolia/client-common@5.25.0': {}
+
+ '@algolia/client-insights@5.25.0':
+ dependencies:
+ '@algolia/client-common': 5.25.0
+ '@algolia/requester-browser-xhr': 5.25.0
+ '@algolia/requester-fetch': 5.25.0
+ '@algolia/requester-node-http': 5.25.0
+
+ '@algolia/client-personalization@5.25.0':
+ dependencies:
+ '@algolia/client-common': 5.25.0
+ '@algolia/requester-browser-xhr': 5.25.0
+ '@algolia/requester-fetch': 5.25.0
+ '@algolia/requester-node-http': 5.25.0
+
+ '@algolia/client-query-suggestions@5.25.0':
+ dependencies:
+ '@algolia/client-common': 5.25.0
+ '@algolia/requester-browser-xhr': 5.25.0
+ '@algolia/requester-fetch': 5.25.0
+ '@algolia/requester-node-http': 5.25.0
+
+ '@algolia/client-search@5.25.0':
+ dependencies:
+ '@algolia/client-common': 5.25.0
+ '@algolia/requester-browser-xhr': 5.25.0
+ '@algolia/requester-fetch': 5.25.0
+ '@algolia/requester-node-http': 5.25.0
+
+ '@algolia/ingestion@1.25.0':
+ dependencies:
+ '@algolia/client-common': 5.25.0
+ '@algolia/requester-browser-xhr': 5.25.0
+ '@algolia/requester-fetch': 5.25.0
+ '@algolia/requester-node-http': 5.25.0
+
+ '@algolia/monitoring@1.25.0':
+ dependencies:
+ '@algolia/client-common': 5.25.0
+ '@algolia/requester-browser-xhr': 5.25.0
+ '@algolia/requester-fetch': 5.25.0
+ '@algolia/requester-node-http': 5.25.0
+
+ '@algolia/recommend@5.25.0':
+ dependencies:
+ '@algolia/client-common': 5.25.0
+ '@algolia/requester-browser-xhr': 5.25.0
+ '@algolia/requester-fetch': 5.25.0
+ '@algolia/requester-node-http': 5.25.0
+
+ '@algolia/requester-browser-xhr@5.25.0':
+ dependencies:
+ '@algolia/client-common': 5.25.0
+
+ '@algolia/requester-fetch@5.25.0':
+ dependencies:
+ '@algolia/client-common': 5.25.0
+
+ '@algolia/requester-node-http@5.25.0':
+ dependencies:
+ '@algolia/client-common': 5.25.0
+
'@alloc/quick-lru@5.2.0': {}
'@ampproject/remapping@2.3.0':
@@ -8129,6 +8338,21 @@ snapshots:
transitivePeerDependencies:
- debug
+ '@docsearch/css@3.9.0': {}
+
+ '@docsearch/react@3.9.0(@algolia/client-search@5.25.0)(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)
+ '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.25.0)(algoliasearch@5.25.0)
+ '@docsearch/css': 3.9.0
+ algoliasearch: 5.25.0
+ optionalDependencies:
+ '@types/react': 19.1.4
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+
'@emnapi/core@1.2.0':
dependencies:
'@emnapi/wasi-threads': 1.0.1
@@ -9173,6 +9397,18 @@ snapshots:
'@rspress/mdx-rs-win32-arm64-msvc': 0.6.6
'@rspress/mdx-rs-win32-x64-msvc': 0.6.6
+ '@rspress/plugin-algolia@2.0.0-beta.6(@algolia/client-search@5.25.0)(@rspress/runtime@2.0.0-beta.6)(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@docsearch/css': 3.9.0
+ '@docsearch/react': 3.9.0(@algolia/client-search@5.25.0)(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@rspress/runtime': 2.0.0-beta.6
+ transitivePeerDependencies:
+ - '@algolia/client-search'
+ - '@types/react'
+ - react
+ - react-dom
+ - search-insights
+
'@rspress/plugin-auto-nav-sidebar@2.0.0-beta.6':
dependencies:
'@rspress/shared': 2.0.0-beta.6
@@ -10123,6 +10359,22 @@ snapshots:
require-from-string: 2.0.2
uri-js: 4.4.1
+ algoliasearch@5.25.0:
+ dependencies:
+ '@algolia/client-abtesting': 5.25.0
+ '@algolia/client-analytics': 5.25.0
+ '@algolia/client-common': 5.25.0
+ '@algolia/client-insights': 5.25.0
+ '@algolia/client-personalization': 5.25.0
+ '@algolia/client-query-suggestions': 5.25.0
+ '@algolia/client-search': 5.25.0
+ '@algolia/ingestion': 1.25.0
+ '@algolia/monitoring': 1.25.0
+ '@algolia/recommend': 5.25.0
+ '@algolia/requester-browser-xhr': 5.25.0
+ '@algolia/requester-fetch': 5.25.0
+ '@algolia/requester-node-http': 5.25.0
+
alien-signals@1.0.3: {}
ansi-colors@4.1.3: {}
diff --git a/website/package.json b/website/package.json
index 9910b4e84..a56dea75c 100644
--- a/website/package.json
+++ b/website/package.json
@@ -12,6 +12,7 @@
"@rsbuild/core": "1.3.21",
"@rsbuild/plugin-sass": "^1.3.1",
"@rslib/tsconfig": "workspace:*",
+ "@rspress/plugin-algolia": "2.0.0-beta.6",
"@rspress/plugin-llms": "2.0.0-beta.6",
"@rspress/plugin-rss": "2.0.0-beta.6",
"@rstack-dev/doc-ui": "1.10.2",
diff --git a/website/rspress.config.ts b/website/rspress.config.ts
index bd8ba4998..49615e1c4 100644
--- a/website/rspress.config.ts
+++ b/website/rspress.config.ts
@@ -1,5 +1,6 @@
import path from 'node:path';
import { pluginSass } from '@rsbuild/plugin-sass';
+import { pluginAlgolia } from '@rspress/plugin-algolia';
import { pluginLlms } from '@rspress/plugin-llms';
import { pluginRss } from '@rspress/plugin-rss';
import {
@@ -16,6 +17,7 @@ const description = 'The Rsbuild-based library development tool';
export default defineConfig({
plugins: [
+ pluginAlgolia(),
pluginFontOpenSans(),
pluginLlms(),
pluginRss({
diff --git a/website/theme/index.tsx b/website/theme/index.tsx
index fa058b13c..91d05efac 100644
--- a/website/theme/index.tsx
+++ b/website/theme/index.tsx
@@ -1,12 +1,34 @@
+import {
+ Search as PluginAlgoliaSearch,
+ ZH_LOCALES,
+} from '@rspress/plugin-algolia/runtime';
import { NavIcon } from '@rstack-dev/doc-ui/nav-icon';
import { Layout as BaseLayout } from 'rspress/theme';
import { HomeLayout } from './pages';
import './index.scss';
+import { useLang } from 'rspress/runtime';
const Layout = () => {
return } />;
};
-export { Layout, HomeLayout };
+const Search = () => {
+ const lang = useLang();
+ return (
+
+ );
+};
+
+export { Layout, HomeLayout, Search };
export * from 'rspress/theme';