diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 000000000..d0b7dbe22 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +onlyBuiltDependencies: + - esbuild + - sharp diff --git a/src/frontend/astro.config.mjs b/src/frontend/astro.config.mjs index 5943a8811..3c4bb0da1 100644 --- a/src/frontend/astro.config.mjs +++ b/src/frontend/astro.config.mjs @@ -20,6 +20,7 @@ import starlightScrollToTop from 'starlight-scroll-to-top'; import starlightSidebarTopics from 'starlight-sidebar-topics'; import starlightPageActions from 'starlight-page-actions'; import jopSoftwarecookieconsent from '@jop-software/astro-cookieconsent'; +import starlightDocSearch from '@astrojs/starlight-docsearch'; // https://astro.build/config export default defineConfig({ @@ -58,7 +59,6 @@ export default defineConfig({ Hero: './src/components/starlight/Hero.astro', MarkdownContent: './src/components/starlight/MarkdownContent.astro', PageTitle: './src/components/starlight/PageTitle.astro', - Search: './src/components/starlight/Search.astro', Sidebar: './src/components/starlight/Sidebar.astro', SocialIcons: './src/components/starlight/SocialIcons.astro', }, @@ -69,6 +69,9 @@ export default defineConfig({ styleOverrides: { borderRadius: '0.5rem', codeFontSize: '1rem' }, }, plugins: [ + starlightDocSearch({ + clientOptionsModule: './config/docsearch.config.ts', + }), starlightPageActions({ share: true, actions: { diff --git a/src/frontend/config/docsearch.config.ts b/src/frontend/config/docsearch.config.ts new file mode 100644 index 000000000..2d0775459 --- /dev/null +++ b/src/frontend/config/docsearch.config.ts @@ -0,0 +1,37 @@ +import type { DocSearchClientOptions } from '@astrojs/starlight-docsearch'; +import { createElement } from 'preact'; + +// Both appId and apiKey are considered public info. +export default { + appId: 'CDBTET76S0', + apiKey: '9d632dcd5f26ef42a4818fb0d536326b', + indexName: 'Aspire docs', + insights: true, + transformItems(items) { + return items.map((item) => { + // Rewrite aspire.dev URLs to current host when running locally + if (typeof location !== 'undefined' && location.hostname === 'localhost') { + const url = new URL(item.url); + url.protocol = location.protocol; + url.host = location.host; + return { ...item, url: url.href }; + } + return item; + }); + }, + resultsFooterComponent() { + return createElement( + 'div', + { className: 'api-search-notice' }, + createElement('p', { className: 'api-search-notice-text' }, + 'API references are intentionally omitted from this search. To find API references, please search these dedicated API pages instead:', + ), + createElement( + 'div', + { className: 'api-search-notice-buttons' }, + createElement('a', { href: `${import.meta.env.BASE_URL}reference/api/csharp/`, className: 'api-search-btn' }, 'C# API Reference'), + createElement('a', { href: `${import.meta.env.BASE_URL}reference/api/typescript/`, className: 'api-search-btn' }, 'TypeScript API Reference'), + ), + ); + }, +} satisfies DocSearchClientOptions; diff --git a/src/frontend/package.json b/src/frontend/package.json index ff39c5b4a..f80b21a27 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -38,6 +38,7 @@ "@astro-community/astro-embed-youtube": "^0.5.9", "@astrojs/rss": "^4.0.15", "@astrojs/starlight": "^0.37.6", + "@astrojs/starlight-docsearch": "^0.7.0", "@catppuccin/starlight": "^1.1.1", "@expressive-code/plugin-collapsible-sections": "^0.41.3", "@expressive-code/plugin-line-numbers": "^0.41.3", @@ -54,6 +55,7 @@ "astro-tooltips": "^0.6.2", "marked": "^17.0.3", "mermaid": "^11.12.2", + "preact": "^10.29.0", "remark-directive": "^4.0.0", "sharp": "^0.34.5", "starlight-contributor-list": "^0.3.2", diff --git a/src/frontend/pnpm-lock.yaml b/src/frontend/pnpm-lock.yaml index f7af55aa3..f60602c6a 100644 --- a/src/frontend/pnpm-lock.yaml +++ b/src/frontend/pnpm-lock.yaml @@ -37,6 +37,9 @@ importers: '@astrojs/starlight': specifier: ^0.37.6 version: 0.37.6(astro@5.17.2(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.59.1)(typescript@5.9.3)(yaml@2.8.2)) + '@astrojs/starlight-docsearch': + specifier: ^0.7.0 + version: 0.7.0(@algolia/client-search@5.50.0)(@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.59.1)(typescript@5.9.3)(yaml@2.8.2)))(search-insights@2.17.3) '@catppuccin/starlight': specifier: ^1.1.1 version: 1.1.1(@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.59.1)(typescript@5.9.3)(yaml@2.8.2)))(astro@5.17.2(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.59.1)(typescript@5.9.3)(yaml@2.8.2)) @@ -85,6 +88,9 @@ importers: mermaid: specifier: ^11.12.2 version: 11.12.2 + preact: + specifier: ^10.29.0 + version: 10.29.0 remark-directive: specifier: ^4.0.0 version: 4.0.0 @@ -168,6 +174,82 @@ packages: resolution: {integrity: sha512-yIiLM5ziBmg86i4TlXpBdcIygJHvh/GgPJyAiFOckO9H4y9cQDM8eIcJCUQ4Mum0NEVui/OjhEut2R08xw0vlQ==} engines: {node: '>=14'} + '@algolia/abtesting@1.16.0': + resolution: {integrity: sha512-alHFZ68/i9qLC/muEB07VQ9r7cB8AvCcGX6dVQi2PNHhc/ZQRmmFAv8KK1ay4UiseGSFr7f0nXBKsZ/jRg7e4g==} + engines: {node: '>= 14.0.0'} + + '@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.50.0': + resolution: {integrity: sha512-mfgUdLQNxOAvCZUGzPQxjahEWEPuQkKlV0ZtGmePOa9ZxIQZlk31vRBNbM6ScU8jTH41SCYE77G/lCifDr1SVw==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-analytics@5.50.0': + resolution: {integrity: sha512-5mjokeKYyPaP3Q8IYJEnutI+O4dW/Ixxx5IgsSxT04pCfGqPXxTOH311hTQxyNpcGGEOGrMv8n8Z+UMTPamioQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-common@5.50.0': + resolution: {integrity: sha512-emtOvR6dl3rX3sBJXXbofMNHU1qMQqQSWu319RMrNL5BWoBqyiq7y0Zn6cjJm7aGHV/Qbf+KCCYeWNKEMPI3BQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-insights@5.50.0': + resolution: {integrity: sha512-IerGH2/hcj/6bwkpQg/HHRqmlGN1XwygQWythAk0gZFBrghs9danJaYuSS3ShzLSVoIVth4jY5GDPX9Lbw5cgg==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-personalization@5.50.0': + resolution: {integrity: sha512-3idPJeXn5L0MmgP9jk9JJqblrQ/SguN93dNK9z9gfgyupBhHnJMOEjrRYcVgTIfvG13Y04wO+Q0FxE2Ut8PVbA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-query-suggestions@5.50.0': + resolution: {integrity: sha512-q7qRoWrQK1a8m5EFQEmPlo7+pg9mVQ8X5jsChtChERre0uS2pdYEDixBBl0ydBSGkdGbLUDufcACIhH/077E4g==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-search@5.50.0': + resolution: {integrity: sha512-Jc360x4yqb3eEg4OY4KEIdGePBxZogivKI+OGIU8aLXgAYPTECvzeOBc90312yHA1hr3AeRlAFl0rIc8lQaIrQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/ingestion@1.50.0': + resolution: {integrity: sha512-OS3/Viao+NPpyBbEY3tf6hLewppG+UclD+9i0ju56mq2DrdMJFCkEky6Sk9S5VPcbLzxzg3BqBX6u9Q35w19aQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/monitoring@1.50.0': + resolution: {integrity: sha512-/znwgSiGufpbJVIoDmeQaHtTq+OMdDawFRbMSJVv+12n79hW+qdQXS8/Uu3BD3yn0BzgVFJEvrsHrCsInZKdhw==} + engines: {node: '>= 14.0.0'} + + '@algolia/recommend@5.50.0': + resolution: {integrity: sha512-dHjUfu4jfjdQiKDpCpAnM7LP5yfG0oNShtfpF5rMCel6/4HIoqJ4DC4h5GKDzgrvJYtgAhblo0AYBmOM00T+lQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-browser-xhr@5.50.0': + resolution: {integrity: sha512-bffIbUljAWnh/Ctu5uScORajuUavqmZ0ACYd1fQQeSSYA9NNN83ynO26pSc2dZRXpSK0fkc1//qSSFXMKGu+aw==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-fetch@5.50.0': + resolution: {integrity: sha512-y0EwNvPGvkM+yTAqqO6Gpt9wVGm3CLDtpLvNEiB3VGvN3WzfkjZGtLUsG/ru2kVJIIU7QcV0puuYgEpBeFxcJg==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-node-http@5.50.0': + resolution: {integrity: sha512-xpwefe4fCOWnZgXCbkGpqQY6jgBSCf2hmgnySbyzZIccrv3SoashHKGPE4x6vVG+gdHrGciMTAcDo9HOZwH22Q==} + engines: {node: '>= 14.0.0'} + '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} @@ -250,6 +332,11 @@ packages: '@astrojs/sitemap@3.6.0': resolution: {integrity: sha512-4aHkvcOZBWJigRmMIAJwRQXBS+ayoP5z40OklTXYXhUDhwusz+DyDl+nSshY6y9DvkVEavwNcFO8FD81iGhXjg==} + '@astrojs/starlight-docsearch@0.7.0': + resolution: {integrity: sha512-/RwUQE4u61EXNKITvb6PxHBC8FA1xrUaB48+0QWoVomHqCUCMnVRwt69NWScFpQZITY5NZKrgSYOsvpzwZg0Ng==} + peerDependencies: + '@astrojs/starlight': '>=0.38.0' + '@astrojs/starlight@0.37.6': resolution: {integrity: sha512-wQrKwH431q+8FsLBnNQeG+R36TMtEGxTQ2AuiVpcx9APcazvL3n7wVW8mMmYyxX0POjTnxlcWPkdMGR3Yj1L+w==} peerDependencies: @@ -339,6 +426,29 @@ packages: resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==} engines: {node: '>=14'} + '@docsearch/css@3.9.0': + resolution: {integrity: sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==} + + '@docsearch/js@3.9.0': + resolution: {integrity: sha512-4bKHcye6EkLgRE8ze0vcdshmEqxeiJM77M0JXjef7lrYZfSlMunrDOCqyLjiZyo1+c0BhUqA2QpFartIjuHIjw==} + + '@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/runtime@1.7.1': resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} @@ -1445,6 +1555,10 @@ packages: ajv@6.14.0: resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + algoliasearch@5.50.0: + resolution: {integrity: sha512-yE5I83Q2s8euVou8Y3feXK08wyZInJWLYXgWO6Xti9jBUEZAGUahyeQ7wSZWkifLWVnQVKEz5RAmBlXG5nqxog==} + engines: {node: '>= 14.0.0'} + ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -2903,6 +3017,9 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + preact@10.29.0: + resolution: {integrity: sha512-wSAGyk2bYR1c7t3SZ3jHcM6xy0lcBcDel6lODcs9ME6Th++Dx2KU+6D3HD8wMMKGA8Wpw7OMd3/4RGzYRpzwRg==} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -3077,6 +3194,9 @@ packages: resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} + search-insights@2.17.3: + resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} + semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} @@ -3674,6 +3794,118 @@ snapshots: - encoding - supports-color + '@algolia/abtesting@1.16.0': + dependencies: + '@algolia/client-common': 5.50.0 + '@algolia/requester-browser-xhr': 5.50.0 + '@algolia/requester-fetch': 5.50.0 + '@algolia/requester-node-http': 5.50.0 + + '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0) + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0)': + dependencies: + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0) + '@algolia/client-search': 5.50.0 + algoliasearch: 5.50.0 + + '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0)': + dependencies: + '@algolia/client-search': 5.50.0 + algoliasearch: 5.50.0 + + '@algolia/client-abtesting@5.50.0': + dependencies: + '@algolia/client-common': 5.50.0 + '@algolia/requester-browser-xhr': 5.50.0 + '@algolia/requester-fetch': 5.50.0 + '@algolia/requester-node-http': 5.50.0 + + '@algolia/client-analytics@5.50.0': + dependencies: + '@algolia/client-common': 5.50.0 + '@algolia/requester-browser-xhr': 5.50.0 + '@algolia/requester-fetch': 5.50.0 + '@algolia/requester-node-http': 5.50.0 + + '@algolia/client-common@5.50.0': {} + + '@algolia/client-insights@5.50.0': + dependencies: + '@algolia/client-common': 5.50.0 + '@algolia/requester-browser-xhr': 5.50.0 + '@algolia/requester-fetch': 5.50.0 + '@algolia/requester-node-http': 5.50.0 + + '@algolia/client-personalization@5.50.0': + dependencies: + '@algolia/client-common': 5.50.0 + '@algolia/requester-browser-xhr': 5.50.0 + '@algolia/requester-fetch': 5.50.0 + '@algolia/requester-node-http': 5.50.0 + + '@algolia/client-query-suggestions@5.50.0': + dependencies: + '@algolia/client-common': 5.50.0 + '@algolia/requester-browser-xhr': 5.50.0 + '@algolia/requester-fetch': 5.50.0 + '@algolia/requester-node-http': 5.50.0 + + '@algolia/client-search@5.50.0': + dependencies: + '@algolia/client-common': 5.50.0 + '@algolia/requester-browser-xhr': 5.50.0 + '@algolia/requester-fetch': 5.50.0 + '@algolia/requester-node-http': 5.50.0 + + '@algolia/ingestion@1.50.0': + dependencies: + '@algolia/client-common': 5.50.0 + '@algolia/requester-browser-xhr': 5.50.0 + '@algolia/requester-fetch': 5.50.0 + '@algolia/requester-node-http': 5.50.0 + + '@algolia/monitoring@1.50.0': + dependencies: + '@algolia/client-common': 5.50.0 + '@algolia/requester-browser-xhr': 5.50.0 + '@algolia/requester-fetch': 5.50.0 + '@algolia/requester-node-http': 5.50.0 + + '@algolia/recommend@5.50.0': + dependencies: + '@algolia/client-common': 5.50.0 + '@algolia/requester-browser-xhr': 5.50.0 + '@algolia/requester-fetch': 5.50.0 + '@algolia/requester-node-http': 5.50.0 + + '@algolia/requester-browser-xhr@5.50.0': + dependencies: + '@algolia/client-common': 5.50.0 + + '@algolia/requester-fetch@5.50.0': + dependencies: + '@algolia/client-common': 5.50.0 + + '@algolia/requester-node-http@5.50.0': + dependencies: + '@algolia/client-common': 5.50.0 + '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.6.0 @@ -3856,6 +4088,18 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.25.76 + '@astrojs/starlight-docsearch@0.7.0(@algolia/client-search@5.50.0)(@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.59.1)(typescript@5.9.3)(yaml@2.8.2)))(search-insights@2.17.3)': + dependencies: + '@astrojs/starlight': 0.37.6(astro@5.17.2(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.59.1)(typescript@5.9.3)(yaml@2.8.2)) + '@docsearch/css': 3.9.0 + '@docsearch/js': 3.9.0(@algolia/client-search@5.50.0)(search-insights@2.17.3) + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + '@astrojs/starlight@0.37.6(astro@5.17.2(@types/node@24.10.1)(jiti@1.21.7)(rollup@4.59.1)(typescript@5.9.3)(yaml@2.8.2))': dependencies: '@astrojs/markdown-remark': 6.3.9 @@ -3999,6 +4243,30 @@ snapshots: '@ctrl/tinycolor@4.2.0': {} + '@docsearch/css@3.9.0': {} + + '@docsearch/js@3.9.0(@algolia/client-search@5.50.0)(search-insights@2.17.3)': + dependencies: + '@docsearch/react': 3.9.0(@algolia/client-search@5.50.0)(search-insights@2.17.3) + preact: 10.29.0 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + + '@docsearch/react@3.9.0(@algolia/client-search@5.50.0)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.50.0)(algoliasearch@5.50.0) + '@docsearch/css': 3.9.0 + algoliasearch: 5.50.0 + optionalDependencies: + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + '@emnapi/runtime@1.7.1': dependencies: tslib: 2.8.1 @@ -4936,6 +5204,23 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + algoliasearch@5.50.0: + dependencies: + '@algolia/abtesting': 1.16.0 + '@algolia/client-abtesting': 5.50.0 + '@algolia/client-analytics': 5.50.0 + '@algolia/client-common': 5.50.0 + '@algolia/client-insights': 5.50.0 + '@algolia/client-personalization': 5.50.0 + '@algolia/client-query-suggestions': 5.50.0 + '@algolia/client-search': 5.50.0 + '@algolia/ingestion': 1.50.0 + '@algolia/monitoring': 1.50.0 + '@algolia/recommend': 5.50.0 + '@algolia/requester-browser-xhr': 5.50.0 + '@algolia/requester-fetch': 5.50.0 + '@algolia/requester-node-http': 5.50.0 + ansi-align@3.0.1: dependencies: string-width: 4.2.3 @@ -6994,6 +7279,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + preact@10.29.0: {} + prelude-ls@1.2.1: {} prettier-plugin-astro@0.14.1: @@ -7276,6 +7563,8 @@ snapshots: sax@1.6.0: {} + search-insights@2.17.3: {} + semver@7.7.3: {} seroval-plugins@1.3.3(seroval@1.5.0): diff --git a/src/frontend/src/components/starlight/Head.astro b/src/frontend/src/components/starlight/Head.astro index 22b94c4ed..4faad789e 100644 --- a/src/frontend/src/components/starlight/Head.astro +++ b/src/frontend/src/components/starlight/Head.astro @@ -31,6 +31,7 @@ function computeSourceUrl() { + diff --git a/src/frontend/src/content.config.ts b/src/frontend/src/content.config.ts index 059a20c4d..2ad7f5d7b 100644 --- a/src/frontend/src/content.config.ts +++ b/src/frontend/src/content.config.ts @@ -3,6 +3,7 @@ eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-un import { defineCollection, z } from 'astro:content'; import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders'; import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; +import { docSearchI18nSchema } from '@astrojs/starlight-docsearch/schema'; import { glob } from 'astro/loaders'; export const collections = { @@ -23,7 +24,10 @@ export const collections = { }), i18n: defineCollection({ loader: i18nLoader(), - schema: i18nSchema(), + schema: i18nSchema({ + // Casting to work around Zod instance mismatch between starlight-docsearch and astro/zod. + extend: docSearchI18nSchema() as any, + }), }), /** diff --git a/src/frontend/src/content/docs/community/videos.mdx b/src/frontend/src/content/docs/community/videos.mdx index 774e2ad7e..c911a44da 100644 --- a/src/frontend/src/content/docs/community/videos.mdx +++ b/src/frontend/src/content/docs/community/videos.mdx @@ -5,7 +5,6 @@ tableOfContents: true lastUpdated: false editUrl: false giscus: false -pagefind: false pageActions: false --- diff --git a/src/frontend/src/content/i18n/da.json b/src/frontend/src/content/i18n/da.json index be48ddcf1..df7bb94f9 100644 --- a/src/frontend/src/content/i18n/da.json +++ b/src/frontend/src/content/i18n/da.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "Vælg tastaturtype" } - } + }, + "docsearch.searchBox.resetButtonTitle": "Ryd søgningen", + "docsearch.searchBox.resetButtonAriaLabel": "Ryd søgningen", + "docsearch.searchBox.cancelButtonText": "Annuller", + "docsearch.searchBox.cancelButtonAriaLabel": "Annuller", + "docsearch.searchBox.searchInputLabel": "Søg", + "docsearch.startScreen.recentSearchesTitle": "Seneste", + "docsearch.startScreen.noRecentSearchesText": "Ingen seneste søgninger", + "docsearch.startScreen.saveRecentSearchButtonTitle": "Gem denne søgning", + "docsearch.startScreen.removeRecentSearchButtonTitle": "Fjern denne søgning fra historikken", + "docsearch.startScreen.favoriteSearchesTitle": "Favoritter", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "Fjern denne søgning fra favoritter", + "docsearch.errorScreen.titleText": "Kunne ikke hente resultater", + "docsearch.errorScreen.helpText": "Du bør muligvis kontrollere din netværksforbindelse.", + "docsearch.footer.selectText": "for at vælge", + "docsearch.footer.selectKeyAriaLabel": "Enter-tast", + "docsearch.footer.navigateText": "for at navigere", + "docsearch.footer.navigateUpKeyAriaLabel": "Pil op", + "docsearch.footer.navigateDownKeyAriaLabel": "Pil ned", + "docsearch.footer.closeText": "for at lukke", + "docsearch.footer.closeKeyAriaLabel": "Escape-tast", + "docsearch.footer.searchByText": "Søg med", + "docsearch.noResultsScreen.noResultsText": "Ingen resultater for", + "docsearch.noResultsScreen.suggestedQueryText": "Prøv at søge efter", + "docsearch.noResultsScreen.reportMissingResultsText": "Mener du, at denne søgning burde give resultater?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "Fortæl os det." } diff --git a/src/frontend/src/content/i18n/de.json b/src/frontend/src/content/i18n/de.json index 781efbaa1..1e8a54965 100644 --- a/src/frontend/src/content/i18n/de.json +++ b/src/frontend/src/content/i18n/de.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "Tastaturtyp auswählen" } - } + }, + "docsearch.searchBox.resetButtonTitle": "Suche zurücksetzen", + "docsearch.searchBox.resetButtonAriaLabel": "Suche zurücksetzen", + "docsearch.searchBox.cancelButtonText": "Abbrechen", + "docsearch.searchBox.cancelButtonAriaLabel": "Abbrechen", + "docsearch.searchBox.searchInputLabel": "Suchen", + "docsearch.startScreen.recentSearchesTitle": "Kürzlich", + "docsearch.startScreen.noRecentSearchesText": "Keine kürzlichen Suchen", + "docsearch.startScreen.saveRecentSearchButtonTitle": "Diese Suche speichern", + "docsearch.startScreen.removeRecentSearchButtonTitle": "Diese Suche aus dem Verlauf entfernen", + "docsearch.startScreen.favoriteSearchesTitle": "Favoriten", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "Diese Suche aus den Favoriten entfernen", + "docsearch.errorScreen.titleText": "Ergebnisse konnten nicht abgerufen werden", + "docsearch.errorScreen.helpText": "Überprüfen Sie möglicherweise Ihre Netzwerkverbindung.", + "docsearch.footer.selectText": "zum Auswählen", + "docsearch.footer.selectKeyAriaLabel": "Eingabetaste", + "docsearch.footer.navigateText": "zum Navigieren", + "docsearch.footer.navigateUpKeyAriaLabel": "Pfeil nach oben", + "docsearch.footer.navigateDownKeyAriaLabel": "Pfeil nach unten", + "docsearch.footer.closeText": "zum Schließen", + "docsearch.footer.closeKeyAriaLabel": "Escape-Taste", + "docsearch.footer.searchByText": "Suche über", + "docsearch.noResultsScreen.noResultsText": "Keine Ergebnisse für", + "docsearch.noResultsScreen.suggestedQueryText": "Versuchen Sie zu suchen nach", + "docsearch.noResultsScreen.reportMissingResultsText": "Glauben Sie, dass diese Suche Ergebnisse liefern sollte?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "Lassen Sie es uns wissen." } diff --git a/src/frontend/src/content/i18n/en.json b/src/frontend/src/content/i18n/en.json index 90f8ede55..6fe5d4aa1 100644 --- a/src/frontend/src/content/i18n/en.json +++ b/src/frontend/src/content/i18n/en.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "Select keyboard type" } - } + }, + "docsearch.searchBox.resetButtonTitle": "Clear the query", + "docsearch.searchBox.resetButtonAriaLabel": "Clear the query", + "docsearch.searchBox.cancelButtonText": "Cancel", + "docsearch.searchBox.cancelButtonAriaLabel": "Cancel", + "docsearch.searchBox.searchInputLabel": "Search", + "docsearch.startScreen.recentSearchesTitle": "Recent", + "docsearch.startScreen.noRecentSearchesText": "No recent searches", + "docsearch.startScreen.saveRecentSearchButtonTitle": "Save this search", + "docsearch.startScreen.removeRecentSearchButtonTitle": "Remove this search from history", + "docsearch.startScreen.favoriteSearchesTitle": "Favorite", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "Remove this search from favorites", + "docsearch.errorScreen.titleText": "Unable to fetch results", + "docsearch.errorScreen.helpText": "You might want to check your network connection.", + "docsearch.footer.selectText": "to select", + "docsearch.footer.selectKeyAriaLabel": "Enter key", + "docsearch.footer.navigateText": "to navigate", + "docsearch.footer.navigateUpKeyAriaLabel": "Arrow up", + "docsearch.footer.navigateDownKeyAriaLabel": "Arrow down", + "docsearch.footer.closeText": "to close", + "docsearch.footer.closeKeyAriaLabel": "Escape key", + "docsearch.footer.searchByText": "Search by", + "docsearch.noResultsScreen.noResultsText": "No results for", + "docsearch.noResultsScreen.suggestedQueryText": "Try searching for", + "docsearch.noResultsScreen.reportMissingResultsText": "Believe this query should return results?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "Let us know." } diff --git a/src/frontend/src/content/i18n/es.json b/src/frontend/src/content/i18n/es.json index 9d899b0ad..bf0b3efc3 100644 --- a/src/frontend/src/content/i18n/es.json +++ b/src/frontend/src/content/i18n/es.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "Selecciona el tipo de teclado" } - } + }, + "docsearch.searchBox.resetButtonTitle": "Borrar la consulta", + "docsearch.searchBox.resetButtonAriaLabel": "Borrar la consulta", + "docsearch.searchBox.cancelButtonText": "Cancelar", + "docsearch.searchBox.cancelButtonAriaLabel": "Cancelar", + "docsearch.searchBox.searchInputLabel": "Buscar", + "docsearch.startScreen.recentSearchesTitle": "Recientes", + "docsearch.startScreen.noRecentSearchesText": "No hay búsquedas recientes", + "docsearch.startScreen.saveRecentSearchButtonTitle": "Guardar esta búsqueda", + "docsearch.startScreen.removeRecentSearchButtonTitle": "Eliminar esta búsqueda del historial", + "docsearch.startScreen.favoriteSearchesTitle": "Favoritos", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "Eliminar esta búsqueda de favoritos", + "docsearch.errorScreen.titleText": "No se pudieron obtener resultados", + "docsearch.errorScreen.helpText": "Quizás debería verificar su conexión de red.", + "docsearch.footer.selectText": "para seleccionar", + "docsearch.footer.selectKeyAriaLabel": "Tecla Enter", + "docsearch.footer.navigateText": "para navegar", + "docsearch.footer.navigateUpKeyAriaLabel": "Flecha arriba", + "docsearch.footer.navigateDownKeyAriaLabel": "Flecha abajo", + "docsearch.footer.closeText": "para cerrar", + "docsearch.footer.closeKeyAriaLabel": "Tecla Escape", + "docsearch.footer.searchByText": "Buscar con", + "docsearch.noResultsScreen.noResultsText": "Sin resultados para", + "docsearch.noResultsScreen.suggestedQueryText": "Intenta buscar", + "docsearch.noResultsScreen.reportMissingResultsText": "¿Crees que esta consulta debería devolver resultados?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "Háznoslo saber." } diff --git a/src/frontend/src/content/i18n/fr.json b/src/frontend/src/content/i18n/fr.json index e3ad7e87e..8fb6d2b35 100644 --- a/src/frontend/src/content/i18n/fr.json +++ b/src/frontend/src/content/i18n/fr.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "Sélectionner le type de clavier" } - } + }, + "docsearch.searchBox.resetButtonTitle": "Effacer la recherche", + "docsearch.searchBox.resetButtonAriaLabel": "Effacer la recherche", + "docsearch.searchBox.cancelButtonText": "Annuler", + "docsearch.searchBox.cancelButtonAriaLabel": "Annuler", + "docsearch.searchBox.searchInputLabel": "Rechercher", + "docsearch.startScreen.recentSearchesTitle": "Récents", + "docsearch.startScreen.noRecentSearchesText": "Aucune recherche récente", + "docsearch.startScreen.saveRecentSearchButtonTitle": "Enregistrer cette recherche", + "docsearch.startScreen.removeRecentSearchButtonTitle": "Supprimer cette recherche de l'historique", + "docsearch.startScreen.favoriteSearchesTitle": "Favoris", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "Supprimer cette recherche des favoris", + "docsearch.errorScreen.titleText": "Impossible de récupérer les résultats", + "docsearch.errorScreen.helpText": "Vous devriez peut-être vérifier votre connexion réseau.", + "docsearch.footer.selectText": "pour sélectionner", + "docsearch.footer.selectKeyAriaLabel": "Touche Entrée", + "docsearch.footer.navigateText": "pour naviguer", + "docsearch.footer.navigateUpKeyAriaLabel": "Flèche haut", + "docsearch.footer.navigateDownKeyAriaLabel": "Flèche bas", + "docsearch.footer.closeText": "pour fermer", + "docsearch.footer.closeKeyAriaLabel": "Touche Échap", + "docsearch.footer.searchByText": "Recherche par", + "docsearch.noResultsScreen.noResultsText": "Aucun résultat pour", + "docsearch.noResultsScreen.suggestedQueryText": "Essayez de rechercher", + "docsearch.noResultsScreen.reportMissingResultsText": "Vous pensez que cette recherche devrait renvoyer des résultats ?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "Faites-le nous savoir." } diff --git a/src/frontend/src/content/i18n/hi.json b/src/frontend/src/content/i18n/hi.json index a40960c6e..a9c992b5f 100644 --- a/src/frontend/src/content/i18n/hi.json +++ b/src/frontend/src/content/i18n/hi.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "कीबोर्ड प्रकार चुनें" } - } + }, + "docsearch.searchBox.resetButtonTitle": "खोज साफ़ करें", + "docsearch.searchBox.resetButtonAriaLabel": "खोज साफ़ करें", + "docsearch.searchBox.cancelButtonText": "रद्द करें", + "docsearch.searchBox.cancelButtonAriaLabel": "रद्द करें", + "docsearch.searchBox.searchInputLabel": "खोजें", + "docsearch.startScreen.recentSearchesTitle": "हाल के", + "docsearch.startScreen.noRecentSearchesText": "कोई हाल की खोज नहीं", + "docsearch.startScreen.saveRecentSearchButtonTitle": "यह खोज सहेजें", + "docsearch.startScreen.removeRecentSearchButtonTitle": "इस खोज को इतिहास से हटाएँ", + "docsearch.startScreen.favoriteSearchesTitle": "पसंदीदा", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "इस खोज को पसंदीदा से हटाएँ", + "docsearch.errorScreen.titleText": "परिणाम प्राप्त करने में असमर्थ", + "docsearch.errorScreen.helpText": "आप अपना नेटवर्क कनेक्शन जाँचना चाह सकते हैं।", + "docsearch.footer.selectText": "चुनने के लिए", + "docsearch.footer.selectKeyAriaLabel": "Enter कुंजी", + "docsearch.footer.navigateText": "नेविगेट करने के लिए", + "docsearch.footer.navigateUpKeyAriaLabel": "ऊपर तीर", + "docsearch.footer.navigateDownKeyAriaLabel": "नीचे तीर", + "docsearch.footer.closeText": "बंद करने के लिए", + "docsearch.footer.closeKeyAriaLabel": "Escape कुंजी", + "docsearch.footer.searchByText": "द्वारा खोजें", + "docsearch.noResultsScreen.noResultsText": "कोई परिणाम नहीं", + "docsearch.noResultsScreen.suggestedQueryText": "यह खोजने का प्रयास करें", + "docsearch.noResultsScreen.reportMissingResultsText": "क्या आपको लगता है कि इस खोज से परिणाम मिलने चाहिए?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "हमें बताएँ।" } diff --git a/src/frontend/src/content/i18n/id.json b/src/frontend/src/content/i18n/id.json index 1b408f78e..78c4fa336 100644 --- a/src/frontend/src/content/i18n/id.json +++ b/src/frontend/src/content/i18n/id.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "Pilih tipe keyboard" } - } + }, + "docsearch.searchBox.resetButtonTitle": "Hapus pencarian", + "docsearch.searchBox.resetButtonAriaLabel": "Hapus pencarian", + "docsearch.searchBox.cancelButtonText": "Batal", + "docsearch.searchBox.cancelButtonAriaLabel": "Batal", + "docsearch.searchBox.searchInputLabel": "Cari", + "docsearch.startScreen.recentSearchesTitle": "Terbaru", + "docsearch.startScreen.noRecentSearchesText": "Tidak ada pencarian terbaru", + "docsearch.startScreen.saveRecentSearchButtonTitle": "Simpan pencarian ini", + "docsearch.startScreen.removeRecentSearchButtonTitle": "Hapus pencarian ini dari riwayat", + "docsearch.startScreen.favoriteSearchesTitle": "Favorit", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "Hapus pencarian ini dari favorit", + "docsearch.errorScreen.titleText": "Tidak dapat mengambil hasil", + "docsearch.errorScreen.helpText": "Anda mungkin perlu memeriksa koneksi jaringan Anda.", + "docsearch.footer.selectText": "untuk memilih", + "docsearch.footer.selectKeyAriaLabel": "Tombol Enter", + "docsearch.footer.navigateText": "untuk navigasi", + "docsearch.footer.navigateUpKeyAriaLabel": "Panah atas", + "docsearch.footer.navigateDownKeyAriaLabel": "Panah bawah", + "docsearch.footer.closeText": "untuk menutup", + "docsearch.footer.closeKeyAriaLabel": "Tombol Escape", + "docsearch.footer.searchByText": "Cari dengan", + "docsearch.noResultsScreen.noResultsText": "Tidak ada hasil untuk", + "docsearch.noResultsScreen.suggestedQueryText": "Coba cari", + "docsearch.noResultsScreen.reportMissingResultsText": "Yakin pencarian ini seharusnya mengembalikan hasil?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "Beri tahu kami." } diff --git a/src/frontend/src/content/i18n/it.json b/src/frontend/src/content/i18n/it.json index 808f01462..447299ed0 100644 --- a/src/frontend/src/content/i18n/it.json +++ b/src/frontend/src/content/i18n/it.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "Seleziona tipo di tastiera" } - } + }, + "docsearch.searchBox.resetButtonTitle": "Cancella la ricerca", + "docsearch.searchBox.resetButtonAriaLabel": "Cancella la ricerca", + "docsearch.searchBox.cancelButtonText": "Annulla", + "docsearch.searchBox.cancelButtonAriaLabel": "Annulla", + "docsearch.searchBox.searchInputLabel": "Cerca", + "docsearch.startScreen.recentSearchesTitle": "Recenti", + "docsearch.startScreen.noRecentSearchesText": "Nessuna ricerca recente", + "docsearch.startScreen.saveRecentSearchButtonTitle": "Salva questa ricerca", + "docsearch.startScreen.removeRecentSearchButtonTitle": "Rimuovi questa ricerca dalla cronologia", + "docsearch.startScreen.favoriteSearchesTitle": "Preferiti", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "Rimuovi questa ricerca dai preferiti", + "docsearch.errorScreen.titleText": "Impossibile recuperare i risultati", + "docsearch.errorScreen.helpText": "Potresti voler controllare la tua connessione di rete.", + "docsearch.footer.selectText": "per selezionare", + "docsearch.footer.selectKeyAriaLabel": "Tasto Invio", + "docsearch.footer.navigateText": "per navigare", + "docsearch.footer.navigateUpKeyAriaLabel": "Freccia su", + "docsearch.footer.navigateDownKeyAriaLabel": "Freccia giù", + "docsearch.footer.closeText": "per chiudere", + "docsearch.footer.closeKeyAriaLabel": "Tasto Escape", + "docsearch.footer.searchByText": "Cerca con", + "docsearch.noResultsScreen.noResultsText": "Nessun risultato per", + "docsearch.noResultsScreen.suggestedQueryText": "Prova a cercare", + "docsearch.noResultsScreen.reportMissingResultsText": "Credi che questa ricerca dovrebbe restituire risultati?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "Faccelo sapere." } diff --git a/src/frontend/src/content/i18n/ja.json b/src/frontend/src/content/i18n/ja.json index bc875657e..6d91f8a1b 100644 --- a/src/frontend/src/content/i18n/ja.json +++ b/src/frontend/src/content/i18n/ja.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "キーボードタイプを選択" } - } + }, + "docsearch.searchBox.resetButtonTitle": "検索をクリア", + "docsearch.searchBox.resetButtonAriaLabel": "検索をクリア", + "docsearch.searchBox.cancelButtonText": "キャンセル", + "docsearch.searchBox.cancelButtonAriaLabel": "キャンセル", + "docsearch.searchBox.searchInputLabel": "検索", + "docsearch.startScreen.recentSearchesTitle": "最近の検索", + "docsearch.startScreen.noRecentSearchesText": "最近の検索はありません", + "docsearch.startScreen.saveRecentSearchButtonTitle": "この検索を保存", + "docsearch.startScreen.removeRecentSearchButtonTitle": "この検索を履歴から削除", + "docsearch.startScreen.favoriteSearchesTitle": "お気に入り", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "この検索をお気に入りから削除", + "docsearch.errorScreen.titleText": "結果を取得できませんでした", + "docsearch.errorScreen.helpText": "ネットワーク接続を確認してください。", + "docsearch.footer.selectText": "選択", + "docsearch.footer.selectKeyAriaLabel": "Enterキー", + "docsearch.footer.navigateText": "移動", + "docsearch.footer.navigateUpKeyAriaLabel": "上矢印", + "docsearch.footer.navigateDownKeyAriaLabel": "下矢印", + "docsearch.footer.closeText": "閉じる", + "docsearch.footer.closeKeyAriaLabel": "Escapeキー", + "docsearch.footer.searchByText": "検索エンジン", + "docsearch.noResultsScreen.noResultsText": "該当する結果がありません", + "docsearch.noResultsScreen.suggestedQueryText": "こちらで検索してみてください", + "docsearch.noResultsScreen.reportMissingResultsText": "この検索で結果が返されるべきだと思いますか?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "お知らせください。" } diff --git a/src/frontend/src/content/i18n/ko.json b/src/frontend/src/content/i18n/ko.json index 6b6bad1ee..6442839e1 100644 --- a/src/frontend/src/content/i18n/ko.json +++ b/src/frontend/src/content/i18n/ko.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "키보드 유형 선택" } - } + }, + "docsearch.searchBox.resetButtonTitle": "검색어 지우기", + "docsearch.searchBox.resetButtonAriaLabel": "검색어 지우기", + "docsearch.searchBox.cancelButtonText": "취소", + "docsearch.searchBox.cancelButtonAriaLabel": "취소", + "docsearch.searchBox.searchInputLabel": "검색", + "docsearch.startScreen.recentSearchesTitle": "최근 검색", + "docsearch.startScreen.noRecentSearchesText": "최근 검색 없음", + "docsearch.startScreen.saveRecentSearchButtonTitle": "이 검색 저장", + "docsearch.startScreen.removeRecentSearchButtonTitle": "이 검색을 기록에서 제거", + "docsearch.startScreen.favoriteSearchesTitle": "즐겨찾기", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "이 검색을 즐겨찾기에서 제거", + "docsearch.errorScreen.titleText": "결과를 가져올 수 없습니다", + "docsearch.errorScreen.helpText": "네트워크 연결을 확인해 주세요.", + "docsearch.footer.selectText": "선택", + "docsearch.footer.selectKeyAriaLabel": "Enter 키", + "docsearch.footer.navigateText": "탐색", + "docsearch.footer.navigateUpKeyAriaLabel": "위쪽 화살표", + "docsearch.footer.navigateDownKeyAriaLabel": "아래쪽 화살표", + "docsearch.footer.closeText": "닫기", + "docsearch.footer.closeKeyAriaLabel": "Escape 키", + "docsearch.footer.searchByText": "검색 제공", + "docsearch.noResultsScreen.noResultsText": "검색 결과 없음", + "docsearch.noResultsScreen.suggestedQueryText": "다음을 검색해 보세요", + "docsearch.noResultsScreen.reportMissingResultsText": "이 검색에서 결과가 반환되어야 한다고 생각하시나요?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "알려주세요." } diff --git a/src/frontend/src/content/i18n/pt-BR.json b/src/frontend/src/content/i18n/pt-BR.json index 8614353cd..67a2a0197 100644 --- a/src/frontend/src/content/i18n/pt-BR.json +++ b/src/frontend/src/content/i18n/pt-BR.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "Selecionar tipo de teclado" } - } + }, + "docsearch.searchBox.resetButtonTitle": "Limpar a pesquisa", + "docsearch.searchBox.resetButtonAriaLabel": "Limpar a pesquisa", + "docsearch.searchBox.cancelButtonText": "Cancelar", + "docsearch.searchBox.cancelButtonAriaLabel": "Cancelar", + "docsearch.searchBox.searchInputLabel": "Pesquisar", + "docsearch.startScreen.recentSearchesTitle": "Recentes", + "docsearch.startScreen.noRecentSearchesText": "Nenhuma pesquisa recente", + "docsearch.startScreen.saveRecentSearchButtonTitle": "Salvar esta pesquisa", + "docsearch.startScreen.removeRecentSearchButtonTitle": "Remover esta pesquisa do histórico", + "docsearch.startScreen.favoriteSearchesTitle": "Favoritos", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "Remover esta pesquisa dos favoritos", + "docsearch.errorScreen.titleText": "Não foi possível obter resultados", + "docsearch.errorScreen.helpText": "Você pode querer verificar sua conexão de rede.", + "docsearch.footer.selectText": "para selecionar", + "docsearch.footer.selectKeyAriaLabel": "Tecla Enter", + "docsearch.footer.navigateText": "para navegar", + "docsearch.footer.navigateUpKeyAriaLabel": "Seta para cima", + "docsearch.footer.navigateDownKeyAriaLabel": "Seta para baixo", + "docsearch.footer.closeText": "para fechar", + "docsearch.footer.closeKeyAriaLabel": "Tecla Escape", + "docsearch.footer.searchByText": "Pesquisa por", + "docsearch.noResultsScreen.noResultsText": "Nenhum resultado para", + "docsearch.noResultsScreen.suggestedQueryText": "Tente pesquisar por", + "docsearch.noResultsScreen.reportMissingResultsText": "Acredita que esta pesquisa deveria retornar resultados?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "Nos avise." } diff --git a/src/frontend/src/content/i18n/pt-PT.json b/src/frontend/src/content/i18n/pt-PT.json index 9bf94040a..8e614d833 100644 --- a/src/frontend/src/content/i18n/pt-PT.json +++ b/src/frontend/src/content/i18n/pt-PT.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "Selecionar tipo de teclado" } - } + }, + "docsearch.searchBox.resetButtonTitle": "Limpar a pesquisa", + "docsearch.searchBox.resetButtonAriaLabel": "Limpar a pesquisa", + "docsearch.searchBox.cancelButtonText": "Cancelar", + "docsearch.searchBox.cancelButtonAriaLabel": "Cancelar", + "docsearch.searchBox.searchInputLabel": "Pesquisar", + "docsearch.startScreen.recentSearchesTitle": "Recentes", + "docsearch.startScreen.noRecentSearchesText": "Nenhuma pesquisa recente", + "docsearch.startScreen.saveRecentSearchButtonTitle": "Guardar esta pesquisa", + "docsearch.startScreen.removeRecentSearchButtonTitle": "Remover esta pesquisa do histórico", + "docsearch.startScreen.favoriteSearchesTitle": "Favoritos", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "Remover esta pesquisa dos favoritos", + "docsearch.errorScreen.titleText": "Não foi possível obter resultados", + "docsearch.errorScreen.helpText": "Talvez deva verificar a sua ligação de rede.", + "docsearch.footer.selectText": "para selecionar", + "docsearch.footer.selectKeyAriaLabel": "Tecla Enter", + "docsearch.footer.navigateText": "para navegar", + "docsearch.footer.navigateUpKeyAriaLabel": "Seta para cima", + "docsearch.footer.navigateDownKeyAriaLabel": "Seta para baixo", + "docsearch.footer.closeText": "para fechar", + "docsearch.footer.closeKeyAriaLabel": "Tecla Escape", + "docsearch.footer.searchByText": "Pesquisa por", + "docsearch.noResultsScreen.noResultsText": "Nenhum resultado para", + "docsearch.noResultsScreen.suggestedQueryText": "Experimente pesquisar por", + "docsearch.noResultsScreen.reportMissingResultsText": "Acredita que esta pesquisa deveria devolver resultados?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "Diga-nos." } diff --git a/src/frontend/src/content/i18n/ru.json b/src/frontend/src/content/i18n/ru.json index d42839f8f..1bdb88d84 100644 --- a/src/frontend/src/content/i18n/ru.json +++ b/src/frontend/src/content/i18n/ru.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "Выберите тип клавиатуры" } - } + }, + "docsearch.searchBox.resetButtonTitle": "Очистить запрос", + "docsearch.searchBox.resetButtonAriaLabel": "Очистить запрос", + "docsearch.searchBox.cancelButtonText": "Отмена", + "docsearch.searchBox.cancelButtonAriaLabel": "Отмена", + "docsearch.searchBox.searchInputLabel": "Поиск", + "docsearch.startScreen.recentSearchesTitle": "Недавние", + "docsearch.startScreen.noRecentSearchesText": "Нет недавних поисковых запросов", + "docsearch.startScreen.saveRecentSearchButtonTitle": "Сохранить этот запрос", + "docsearch.startScreen.removeRecentSearchButtonTitle": "Удалить этот запрос из истории", + "docsearch.startScreen.favoriteSearchesTitle": "Избранное", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "Удалить этот запрос из избранного", + "docsearch.errorScreen.titleText": "Не удалось получить результаты", + "docsearch.errorScreen.helpText": "Возможно, стоит проверить сетевое подключение.", + "docsearch.footer.selectText": "выбрать", + "docsearch.footer.selectKeyAriaLabel": "Клавиша Enter", + "docsearch.footer.navigateText": "навигация", + "docsearch.footer.navigateUpKeyAriaLabel": "Стрелка вверх", + "docsearch.footer.navigateDownKeyAriaLabel": "Стрелка вниз", + "docsearch.footer.closeText": "закрыть", + "docsearch.footer.closeKeyAriaLabel": "Клавиша Escape", + "docsearch.footer.searchByText": "Поиск от", + "docsearch.noResultsScreen.noResultsText": "Нет результатов по запросу", + "docsearch.noResultsScreen.suggestedQueryText": "Попробуйте поискать", + "docsearch.noResultsScreen.reportMissingResultsText": "Считаете, что этот запрос должен возвращать результаты?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "Сообщите нам." } diff --git a/src/frontend/src/content/i18n/tr.json b/src/frontend/src/content/i18n/tr.json index 9f5719e75..b2752dbdf 100644 --- a/src/frontend/src/content/i18n/tr.json +++ b/src/frontend/src/content/i18n/tr.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "Klavye türünü seç" } - } + }, + "docsearch.searchBox.resetButtonTitle": "Aramayı temizle", + "docsearch.searchBox.resetButtonAriaLabel": "Aramayı temizle", + "docsearch.searchBox.cancelButtonText": "İptal", + "docsearch.searchBox.cancelButtonAriaLabel": "İptal", + "docsearch.searchBox.searchInputLabel": "Ara", + "docsearch.startScreen.recentSearchesTitle": "Son aramalar", + "docsearch.startScreen.noRecentSearchesText": "Son arama yok", + "docsearch.startScreen.saveRecentSearchButtonTitle": "Bu aramayı kaydet", + "docsearch.startScreen.removeRecentSearchButtonTitle": "Bu aramayı geçmişten kaldır", + "docsearch.startScreen.favoriteSearchesTitle": "Favoriler", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "Bu aramayı favorilerden kaldır", + "docsearch.errorScreen.titleText": "Sonuçlar alınamadı", + "docsearch.errorScreen.helpText": "Ağ bağlantınızı kontrol etmek isteyebilirsiniz.", + "docsearch.footer.selectText": "seçmek için", + "docsearch.footer.selectKeyAriaLabel": "Enter tuşu", + "docsearch.footer.navigateText": "gezinmek için", + "docsearch.footer.navigateUpKeyAriaLabel": "Yukarı ok", + "docsearch.footer.navigateDownKeyAriaLabel": "Aşağı ok", + "docsearch.footer.closeText": "kapatmak için", + "docsearch.footer.closeKeyAriaLabel": "Escape tuşu", + "docsearch.footer.searchByText": "Arama motoru", + "docsearch.noResultsScreen.noResultsText": "Sonuç bulunamadı", + "docsearch.noResultsScreen.suggestedQueryText": "Şunu aramayı deneyin", + "docsearch.noResultsScreen.reportMissingResultsText": "Bu aramanın sonuç döndürmesi gerektiğini mi düşünüyorsunuz?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "Bize bildirin." } diff --git a/src/frontend/src/content/i18n/uk.json b/src/frontend/src/content/i18n/uk.json index a6a037c2e..1414323a5 100644 --- a/src/frontend/src/content/i18n/uk.json +++ b/src/frontend/src/content/i18n/uk.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "Виберіть тип клавіатури" } - } + }, + "docsearch.searchBox.resetButtonTitle": "Очистити запит", + "docsearch.searchBox.resetButtonAriaLabel": "Очистити запит", + "docsearch.searchBox.cancelButtonText": "Скасувати", + "docsearch.searchBox.cancelButtonAriaLabel": "Скасувати", + "docsearch.searchBox.searchInputLabel": "Пошук", + "docsearch.startScreen.recentSearchesTitle": "Нещодавні", + "docsearch.startScreen.noRecentSearchesText": "Немає нещодавніх пошуків", + "docsearch.startScreen.saveRecentSearchButtonTitle": "Зберегти цей пошук", + "docsearch.startScreen.removeRecentSearchButtonTitle": "Видалити цей пошук з історії", + "docsearch.startScreen.favoriteSearchesTitle": "Обране", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "Видалити цей пошук з обраного", + "docsearch.errorScreen.titleText": "Не вдалося отримати результати", + "docsearch.errorScreen.helpText": "Можливо, варто перевірити мережеве підключення.", + "docsearch.footer.selectText": "вибрати", + "docsearch.footer.selectKeyAriaLabel": "Клавіша Enter", + "docsearch.footer.navigateText": "навігація", + "docsearch.footer.navigateUpKeyAriaLabel": "Стрілка вгору", + "docsearch.footer.navigateDownKeyAriaLabel": "Стрілка вниз", + "docsearch.footer.closeText": "закрити", + "docsearch.footer.closeKeyAriaLabel": "Клавіша Escape", + "docsearch.footer.searchByText": "Пошук від", + "docsearch.noResultsScreen.noResultsText": "Немає результатів для", + "docsearch.noResultsScreen.suggestedQueryText": "Спробуйте пошукати", + "docsearch.noResultsScreen.reportMissingResultsText": "Вважаєте, що цей запит повинен повертати результати?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "Повідомте нам." } diff --git a/src/frontend/src/content/i18n/zh-CN.json b/src/frontend/src/content/i18n/zh-CN.json index a2c2e1441..cb6d6e862 100644 --- a/src/frontend/src/content/i18n/zh-CN.json +++ b/src/frontend/src/content/i18n/zh-CN.json @@ -110,5 +110,30 @@ "kbdPicker": { "accessibleLabel": "选择键盘类型" } - } + }, + "docsearch.searchBox.resetButtonTitle": "清除搜索", + "docsearch.searchBox.resetButtonAriaLabel": "清除搜索", + "docsearch.searchBox.cancelButtonText": "取消", + "docsearch.searchBox.cancelButtonAriaLabel": "取消", + "docsearch.searchBox.searchInputLabel": "搜索", + "docsearch.startScreen.recentSearchesTitle": "最近搜索", + "docsearch.startScreen.noRecentSearchesText": "没有最近的搜索", + "docsearch.startScreen.saveRecentSearchButtonTitle": "保存此搜索", + "docsearch.startScreen.removeRecentSearchButtonTitle": "从历史记录中移除此搜索", + "docsearch.startScreen.favoriteSearchesTitle": "收藏", + "docsearch.startScreen.removeFavoriteSearchButtonTitle": "从收藏中移除此搜索", + "docsearch.errorScreen.titleText": "无法获取结果", + "docsearch.errorScreen.helpText": "您可能需要检查您的网络连接。", + "docsearch.footer.selectText": "选择", + "docsearch.footer.selectKeyAriaLabel": "Enter 键", + "docsearch.footer.navigateText": "导航", + "docsearch.footer.navigateUpKeyAriaLabel": "向上箭头", + "docsearch.footer.navigateDownKeyAriaLabel": "向下箭头", + "docsearch.footer.closeText": "关闭", + "docsearch.footer.closeKeyAriaLabel": "Escape 键", + "docsearch.footer.searchByText": "搜索提供", + "docsearch.noResultsScreen.noResultsText": "没有找到结果", + "docsearch.noResultsScreen.suggestedQueryText": "试试搜索", + "docsearch.noResultsScreen.reportMissingResultsText": "认为此查询应该返回结果?", + "docsearch.noResultsScreen.reportMissingResultsLinkText": "告诉我们。" } diff --git a/src/frontend/src/pages/reference/api/csharp/[package]/[type]/[memberKind].astro b/src/frontend/src/pages/reference/api/csharp/[package]/[type]/[memberKind].astro index 5408028d5..c12cd2105 100644 --- a/src/frontend/src/pages/reference/api/csharp/[package]/[type]/[memberKind].astro +++ b/src/frontend/src/pages/reference/api/csharp/[package]/[type]/[memberKind].astro @@ -100,7 +100,6 @@ const headings: { depth: 2 | 3; slug: string; text: string }[] = filteredMembers prev: false, next: false, tableOfContents: false, - pagefind: false, pageActions: false, }} sidebar={apiSidebar} diff --git a/src/frontend/src/pages/reference/api/csharp/[package]/[type]/index.astro b/src/frontend/src/pages/reference/api/csharp/[package]/[type]/index.astro index 31c429c4d..419b88614 100644 --- a/src/frontend/src/pages/reference/api/csharp/[package]/[type]/index.astro +++ b/src/frontend/src/pages/reference/api/csharp/[package]/[type]/index.astro @@ -284,7 +284,6 @@ const hasSearchableMembers = !isEnum && typeIndex.length >= 5; prev: false, next: false, tableOfContents: false, - pagefind: false, pageActions: false, }} sidebar={apiSidebar} diff --git a/src/frontend/src/pages/reference/api/csharp/[package]/index.astro b/src/frontend/src/pages/reference/api/csharp/[package]/index.astro index ce9db5305..4bcc05da1 100644 --- a/src/frontend/src/pages/reference/api/csharp/[package]/index.astro +++ b/src/frontend/src/pages/reference/api/csharp/[package]/index.astro @@ -150,7 +150,6 @@ const packageSourceHref = pkg.package.sourceRepository && pkg.package.sourceComm prev: false, next: false, tableOfContents: false, - pagefind: false, pageActions: false, }} sidebar={apiSidebar} diff --git a/src/frontend/src/pages/reference/api/csharp/index.astro b/src/frontend/src/pages/reference/api/csharp/index.astro index 9cdfa36ef..130e98b01 100644 --- a/src/frontend/src/pages/reference/api/csharp/index.astro +++ b/src/frontend/src/pages/reference/api/csharp/index.astro @@ -115,7 +115,6 @@ const indexJson = JSON.stringify(index); prev: false, next: false, tableOfContents: false, - pagefind: false, pageActions: false, }} sidebar={apiSidebar} diff --git a/src/frontend/src/pages/reference/api/typescript/[module]/[item]/[member]/index.astro b/src/frontend/src/pages/reference/api/typescript/[module]/[item]/[member]/index.astro index 03bf15e9f..f90c88169 100644 --- a/src/frontend/src/pages/reference/api/typescript/[module]/[item]/[member]/index.astro +++ b/src/frontend/src/pages/reference/api/typescript/[module]/[item]/[member]/index.astro @@ -88,7 +88,6 @@ headings.push({ depth: 2, slug: 'defined-on', text: 'Defined on' }); tableOfContents: false, prev: false, next: false, - pagefind: false, pageActions: false, }} sidebar={tsSidebar} diff --git a/src/frontend/src/pages/reference/api/typescript/[module]/[item]/index.astro b/src/frontend/src/pages/reference/api/typescript/[module]/[item]/index.astro index 6eeb16556..0db588211 100644 --- a/src/frontend/src/pages/reference/api/typescript/[module]/[item]/index.astro +++ b/src/frontend/src/pages/reference/api/typescript/[module]/[item]/index.astro @@ -212,7 +212,6 @@ if (itemKind === 'handle') { tableOfContents: false, prev: false, next: false, - pagefind: false, pageActions: false, }} sidebar={tsSidebar} diff --git a/src/frontend/src/pages/reference/api/typescript/[module]/index.astro b/src/frontend/src/pages/reference/api/typescript/[module]/index.astro index 5f68a761c..748598c9c 100644 --- a/src/frontend/src/pages/reference/api/typescript/[module]/index.astro +++ b/src/frontend/src/pages/reference/api/typescript/[module]/index.astro @@ -164,7 +164,6 @@ const pkgName = pkg.package.name; tableOfContents: false, prev: false, next: false, - pagefind: false, pageActions: false, }} sidebar={tsSidebar} diff --git a/src/frontend/src/pages/reference/api/typescript/index.astro b/src/frontend/src/pages/reference/api/typescript/index.astro index 96f759d52..050c85e95 100644 --- a/src/frontend/src/pages/reference/api/typescript/index.astro +++ b/src/frontend/src/pages/reference/api/typescript/index.astro @@ -112,7 +112,6 @@ const indexJson = JSON.stringify(index); prev: false, next: false, tableOfContents: false, - pagefind: false, pageActions: false, }} sidebar={tsSidebar} diff --git a/src/frontend/src/styles/site.css b/src/frontend/src/styles/site.css index 7d900f0a6..8d5f953a6 100644 --- a/src/frontend/src/styles/site.css +++ b/src/frontend/src/styles/site.css @@ -1166,4 +1166,52 @@ header starlight-social-icons { sl-sidebar-state-persist > span.sl-badge.small { padding-right: .2rem; +} + +/* DocSearch API reference notice (rendered via resultsFooterComponent) */ +.DocSearch-HitsFooter { + padding: 0 var(--docsearch-spacing); + width: 100%; +} +.DocSearch-HitsFooter .api-search-notice { + font-size: 0.85rem; + text-align: center; + color: var(--docsearch-muted-color); + background: var(--docsearch-modal-background); + border: none; + border-radius: 0.5rem; + padding: 1rem; +} +.api-search-notice-text { + margin: 0 0 1rem; +} +.api-search-notice-buttons { + display: flex; + gap: 1rem; + justify-content: center; + flex-wrap: wrap; +} +.api-search-btn { + display: inline-block; + padding: 0.5rem 1.25rem; + font-family: var(--font-heading); + font-weight: 600; + font-size: 0.85rem; + color: var(--docsearch-text-color); + background: var(--docsearch-searchbox-background); + border: 1px solid var(--docsearch-muted-color); + border-radius: 1.5rem; + text-decoration: none; + line-height: 1.5; + transition: border-color 0.15s ease, background 0.15s ease; +} +.api-search-btn:hover { + border-color: var(--docsearch-primary-color); + background: var(--docsearch-searchbox-focus-background); + color: var(--docsearch-text-color); + text-decoration: none; +} +.api-search-btn:focus-visible { + outline: 2px solid var(--docsearch-primary-color); + outline-offset: 2px; } \ No newline at end of file