From 6acda7a6b343c872752fdae2af64da41768cf4ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20G=C4=85sowski?= Date: Sun, 9 Apr 2023 16:20:54 +0200 Subject: [PATCH 01/53] docs: fix typo (#2204) --- docs/reference/site-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/site-config.md b/docs/reference/site-config.md index 9c294608171b..6ce390263747 100644 --- a/docs/reference/site-config.md +++ b/docs/reference/site-config.md @@ -319,7 +319,7 @@ export default { - Type: `boolean` - Default: `false` -When set to `true`, the production app will be built in [MAP Mode](../guide/mpa-mode). MPA mode ships 0kb JavaScript by default, at the cost of disabling client-side navigation and requires explicit opt-in for interactivity. +When set to `true`, the production app will be built in [MPA Mode](../guide/mpa-mode). MPA mode ships 0kb JavaScript by default, at the cost of disabling client-side navigation and requires explicit opt-in for interactivity. ## Theming From 6c92675e33d3276a02b790a34083a68093b58c7f Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Tue, 11 Apr 2023 09:16:52 +0200 Subject: [PATCH 02/53] feat: offline search (#2110) Co-authored-by: Christian Georgi --- docs/.vitepress/config.ts | 14 +- docs/public/search.png | Bin 0 -> 144621 bytes docs/reference/default-theme-search.md | 58 +- package.json | 1 + pnpm-lock.yaml | 7 + src/client/shim.d.ts | 5 + .../components/VPNavBarSearch.vue | 266 ++------ .../components/VPNavBarSearchButton.vue | 222 ++++++ .../components/VPOfflineSearchBox.vue | 635 ++++++++++++++++++ src/client/theme-default/styles/vars.css | 3 + .../theme-default/support/translation.ts | 60 ++ src/node/plugin.ts | 2 + src/node/plugins/offlineSearchPlugin.ts | 274 ++++++++ types/default-theme.d.ts | 13 + types/offline-search.d.ts | 25 + 15 files changed, 1357 insertions(+), 228 deletions(-) create mode 100644 docs/public/search.png create mode 100644 src/client/theme-default/components/VPNavBarSearchButton.vue create mode 100644 src/client/theme-default/components/VPOfflineSearchBox.vue create mode 100644 src/client/theme-default/support/translation.ts create mode 100644 src/node/plugins/offlineSearchPlugin.ts create mode 100644 types/offline-search.d.ts diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 1ee18adca3a0..bcf51c60dede 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -47,11 +47,13 @@ export default defineConfig({ copyright: 'Copyright © 2019-present Evan You' }, - algolia: { - appId: '8J64VVRP8K', - apiKey: 'a18e2f4cc5665f6602c5631fd868adfd', - indexName: 'vitepress' - }, + // algolia: { + // appId: '8J64VVRP8K', + // apiKey: 'a18e2f4cc5665f6602c5631fd868adfd', + // indexName: 'vitepress' + // }, + + offlineSearch: true, carbonAds: { code: 'CEBDT27Y', @@ -209,7 +211,7 @@ function sidebarReference() { link: '/reference/default-theme-last-updated' }, { - text: 'Algolia Search', + text: 'Search', link: '/reference/default-theme-search' }, { diff --git a/docs/public/search.png b/docs/public/search.png new file mode 100644 index 0000000000000000000000000000000000000000..d68b85c424f0e724dff10f888d2e2a708ac57649 GIT binary patch literal 144621 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%0AwH&qTT0t??fC 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≫rs+%R63&8_J~K04$9se0;d)$Np=X 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 or . +### i18n + +You can use a config like this to use multilingual search: + +```ts +import { defineConfig } from 'vitepress' + +export default defineConfig({ + themeConfig: { + offlineSearch: { + locales: { + zh: { + translations: { + button: { + buttonText: '搜索文档', + buttonAriaLabel: '搜索文档' + }, + modal: { + noResultsText: '无法找到相关结果', + resetButtonTitle: '清除查询条件', + footer: { + selectText: '选择', + navigateText: '切换' + } + } + } + } + } + } + } +}) +``` + +## Algolia Search + VitePress supports searching your docs site using [Algolia DocSearch](https://docsearch.algolia.com/docs/what-is-docsearch). Refer their getting started guide. In your `.vitepress/config.ts` you'll need to provide at least the following to make it work: ```ts @@ -16,9 +70,7 @@ export default defineConfig({ }) ``` -If you are not eligible for DocSearch, you might wanna use some community plugins like or explore some custom solutions on [this GitHub thread](https://github.com/vuejs/vitepress/issues/670). - -## i18n +### i18n You can use a config like this to use multilingual search: diff --git a/package.json b/package.json index 1898a58f13e8..2e641bdc1b68 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,7 @@ "@vue/devtools-api": "^6.5.0", "@vueuse/core": "^9.13.0", "body-scroll-lock": "4.0.0-beta.0", + "minisearch": "^6.0.1", "shiki": "^0.14.1", "vite": "^4.2.1", "vue": "^3.2.47" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d934109bd393..687082b0c397 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,6 +22,9 @@ importers: body-scroll-lock: specifier: 4.0.0-beta.0 version: 4.0.0-beta.0 + minisearch: + specifier: ^6.0.1 + version: 6.0.1 shiki: specifier: ^0.14.1 version: 0.14.1 @@ -3136,6 +3139,10 @@ packages: engines: {node: '>=8'} dev: true + /minisearch@6.0.1: + resolution: {integrity: sha512-Ly1w0nHKnlhAAh6/BF/+9NgzXfoJxaJ8nhopFhQ3NcvFJrFIL+iCg9gw9e9UMBD+XIsp/RyznJ/o5UIe5Kw+kg==} + dev: false + /mlly@1.2.0: resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} dependencies: diff --git a/src/client/shim.d.ts b/src/client/shim.d.ts index 19543f6281f0..4fad996e605b 100644 --- a/src/client/shim.d.ts +++ b/src/client/shim.d.ts @@ -20,3 +20,8 @@ declare module '@theme/index' { const theme: Theme export default theme } + +declare module '@offlineSearchIndex' { + const data: Record Promise<{ default: string }>> + export default data +} diff --git a/src/client/theme-default/components/VPNavBarSearch.vue b/src/client/theme-default/components/VPNavBarSearch.vue index 70d1f63efd92..585ba3d540b8 100644 --- a/src/client/theme-default/components/VPNavBarSearch.vue +++ b/src/client/theme-default/components/VPNavBarSearch.vue @@ -1,5 +1,6 @@ @@ -154,178 +154,6 @@ function poll() { } } -.DocSearch { - --docsearch-primary-color: var(--vp-c-brand); - --docsearch-highlight-color: var(--docsearch-primary-color); - --docsearch-text-color: var(--vp-c-text-1); - --docsearch-muted-color: var(--vp-c-text-2); - --docsearch-searchbox-shadow: none; - --docsearch-searchbox-focus-background: transparent; - --docsearch-key-gradient: transparent; - --docsearch-key-shadow: none; - --docsearch-modal-background: var(--vp-c-bg-soft); - --docsearch-footer-background: var(--vp-c-bg); -} - -.dark .DocSearch { - --docsearch-modal-shadow: none; - --docsearch-footer-shadow: none; - --docsearch-logo-color: var(--vp-c-text-2); - --docsearch-hit-background: var(--vp-c-bg-soft-mute); - --docsearch-hit-color: var(--vp-c-text-2); - --docsearch-hit-shadow: none; -} - -.DocSearch-Button { - display: flex; - justify-content: center; - align-items: center; - margin: 0; - padding: 0; - width: 32px; - height: 55px; - background: transparent; - transition: border-color 0.25s; -} - -.DocSearch-Button:hover { - background: transparent; -} - -.DocSearch-Button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; -} - -.DocSearch-Button:focus:not(:focus-visible) { - outline: none !important; -} - -@media (min-width: 768px) { - .DocSearch-Button { - justify-content: flex-start; - border: 1px solid transparent; - border-radius: 8px; - padding: 0 10px 0 12px; - width: 100%; - height: 40px; - background-color: var(--vp-c-bg-alt); - } - - .DocSearch-Button:hover { - border-color: var(--vp-c-brand); - background: var(--vp-c-bg-alt); - } -} - -.DocSearch-Button .DocSearch-Button-Container { - display: flex; - align-items: center; -} - -.DocSearch-Button .DocSearch-Search-Icon { - position: relative; - width: 16px; - height: 16px; - color: var(--vp-c-text-1); - fill: currentColor; - transition: color 0.5s; -} - -.DocSearch-Button:hover .DocSearch-Search-Icon { - color: var(--vp-c-text-1); -} - -@media (min-width: 768px) { - .DocSearch-Button .DocSearch-Search-Icon { - top: 1px; - margin-right: 8px; - width: 14px; - height: 14px; - color: var(--vp-c-text-2); - } -} - -.DocSearch-Button .DocSearch-Button-Placeholder { - display: none; - margin-top: 2px; - padding: 0 16px 0 0; - font-size: 13px; - font-weight: 500; - color: var(--vp-c-text-2); - transition: color 0.5s; -} - -.DocSearch-Button:hover .DocSearch-Button-Placeholder { - color: var(--vp-c-text-1); -} - -@media (min-width: 768px) { - .DocSearch-Button .DocSearch-Button-Placeholder { - display: inline-block; - } -} - -.DocSearch-Button .DocSearch-Button-Keys { - /*rtl:ignore*/ - direction: ltr; - display: none; - min-width: auto; -} - -@media (min-width: 768px) { - .DocSearch-Button .DocSearch-Button-Keys { - display: flex; - align-items: center; - } -} - -.DocSearch-Button .DocSearch-Button-Key { - display: block; - margin: 2px 0 0 0; - border: 1px solid var(--vp-c-divider); - /*rtl:begin:ignore*/ - border-right: none; - border-radius: 4px 0 0 4px; - padding-left: 6px; - /*rtl:end:ignore*/ - min-width: 0; - width: auto; - height: 22px; - line-height: 22px; - font-family: var(--vp-font-family-base); - font-size: 12px; - font-weight: 500; - transition: color 0.5s, border-color 0.5s; -} - -.DocSearch-Button .DocSearch-Button-Key + .DocSearch-Button-Key { - /*rtl:begin:ignore*/ - border-right: 1px solid var(--vp-c-divider); - border-left: none; - border-radius: 0 4px 4px 0; - padding-left: 2px; - padding-right: 6px; - /*rtl:end:ignore*/ -} - -.DocSearch-Button .DocSearch-Button-Key:first-child { - font-size: 1px; - letter-spacing: -12px; - color: transparent; -} - -.DocSearch-Button .DocSearch-Button-Key:first-child:after { - content: v-bind(metaKey); - font-size: 12px; - letter-spacing: normal; - color: var(--docsearch-muted-color); -} - -.DocSearch-Button .DocSearch-Button-Key:first-child > * { - display: none; -} - .dark .DocSearch-Footer { border-top: 1px solid var(--vp-c-divider); } diff --git a/src/client/theme-default/components/VPNavBarSearchButton.vue b/src/client/theme-default/components/VPNavBarSearchButton.vue new file mode 100644 index 000000000000..96cf74375791 --- /dev/null +++ b/src/client/theme-default/components/VPNavBarSearchButton.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/src/client/theme-default/components/VPOfflineSearchBox.vue b/src/client/theme-default/components/VPOfflineSearchBox.vue new file mode 100644 index 000000000000..c59c2562fed8 --- /dev/null +++ b/src/client/theme-default/components/VPOfflineSearchBox.vue @@ -0,0 +1,635 @@ + + + + + diff --git a/src/client/theme-default/styles/vars.css b/src/client/theme-default/styles/vars.css index f68f39231dbb..665360744c5c 100644 --- a/src/client/theme-default/styles/vars.css +++ b/src/client/theme-default/styles/vars.css @@ -97,6 +97,9 @@ --vp-c-mute-lighter: #ffffff; --vp-c-mute-dark: #e3e3e5; --vp-c-mute-darker: #d7d7d9; + + --vp-c-highlight-bg: var(--vp-c-yellow-lighter); + --vp-c-highlight-text: var(--vp-c-black); } .dark { diff --git a/src/client/theme-default/support/translation.ts b/src/client/theme-default/support/translation.ts new file mode 100644 index 000000000000..607d5db3c118 --- /dev/null +++ b/src/client/theme-default/support/translation.ts @@ -0,0 +1,60 @@ +import { useData } from '../composables/data' + +/** + * @param themeObject Can be an object with `translations` and `locales` properties + */ +export function createTranslate( + themeObject: any, + defaultTranslations: Record +): (key: string) => string { + const { localeIndex } = useData() + + function translate(key: string): string { + const keyPath = key.split('.') + + const isObject = themeObject && typeof themeObject === 'object' + const locales = + (isObject && themeObject.locales?.[localeIndex.value]?.translations) || + null + const translations = (isObject && themeObject.translations) || null + + let localeResult: Record | null = locales + let translationResult: Record | null = translations + let defaultResult: Record | null = defaultTranslations + + const lastKey = keyPath.pop()! + for (const k of keyPath) { + let fallbackResult: Record | null = null + const foundInFallback: any = defaultResult?.[k] + if (foundInFallback) { + fallbackResult = defaultResult = foundInFallback + } + const foundInTranslation: any = translationResult?.[k] + if (foundInTranslation) { + fallbackResult = translationResult = foundInTranslation + } + const foundInLocale: any = localeResult?.[k] + if (foundInLocale) { + fallbackResult = localeResult = foundInLocale + } + // Put fallback into unresolved results + if (!foundInFallback) { + defaultResult = fallbackResult + } + if (!foundInTranslation) { + translationResult = fallbackResult + } + if (!foundInLocale) { + localeResult = fallbackResult + } + } + return ( + localeResult?.[lastKey] ?? + translationResult?.[lastKey] ?? + defaultResult?.[lastKey] ?? + '' + ) + } + + return translate +} diff --git a/src/node/plugin.ts b/src/node/plugin.ts index 9e8a6617ad85..55f5dde6b034 100644 --- a/src/node/plugin.ts +++ b/src/node/plugin.ts @@ -22,6 +22,7 @@ import { staticDataPlugin } from './plugins/staticDataPlugin' import { webFontsPlugin } from './plugins/webFontsPlugin' import { dynamicRoutesPlugin } from './plugins/dynamicRoutesPlugin' import { rewritesPlugin } from './plugins/rewritesPlugin' +import { offlineSearchPlugin } from './plugins/offlineSearchPlugin.js' import { serializeFunctions, deserializeFunctions } from './utils/fnSerialize' declare module 'vite' { @@ -360,6 +361,7 @@ export async function createVitePressPlugin( vuePlugin, webFontsPlugin(siteConfig.useWebFonts), ...(userViteConfig?.plugins || []), + await offlineSearchPlugin(siteConfig), staticDataPlugin, await dynamicRoutesPlugin(siteConfig) ] diff --git a/src/node/plugins/offlineSearchPlugin.ts b/src/node/plugins/offlineSearchPlugin.ts new file mode 100644 index 000000000000..de62061d838f --- /dev/null +++ b/src/node/plugins/offlineSearchPlugin.ts @@ -0,0 +1,274 @@ +import path from 'node:path' +import type { Plugin, ViteDevServer } from 'vite' +import MiniSearch from 'minisearch' +import fs from 'fs-extra' +import _debug from 'debug' +import type { SiteConfig } from '../config' +import { createMarkdownRenderer } from '../markdown/markdown.js' +import { resolveSiteDataByRoute } from '../shared.js' + +const debug = _debug('vitepress:offline-search') + +const OFFLINE_SEARCH_INDEX_ID = '@offlineSearchIndex' +const OFFLINE_SEARCH_INDEX_REQUEST_PATH = '/' + OFFLINE_SEARCH_INDEX_ID + +interface IndexObject { + id: string + text: string + title: string + titles: string[] +} + +export async function offlineSearchPlugin( + siteConfig: SiteConfig +): Promise { + if ( + siteConfig.userConfig.themeConfig?.algolia || + !siteConfig.userConfig.themeConfig?.offlineSearch + ) { + return { + name: 'vitepress:offline-search', + resolveId(id) { + if (id.startsWith(OFFLINE_SEARCH_INDEX_ID)) { + return `/${id}` + } + }, + load(id) { + if (id.startsWith(OFFLINE_SEARCH_INDEX_REQUEST_PATH)) { + return `export default '{}'` + } + } + } + } + + const md = await createMarkdownRenderer( + siteConfig.srcDir, + siteConfig.userConfig.markdown, + siteConfig.userConfig.base, + siteConfig.logger + ) + + const indexByLocales = new Map>() + + function getIndexByLocale(locale: string) { + let index = indexByLocales.get(locale) + if (!index) { + index = new MiniSearch({ + fields: ['title', 'titles', 'text'], + storeFields: ['title', 'titles'] + }) + indexByLocales.set(locale, index) + } + return index + } + + function getLocaleForPath(file: string) { + const relativePath = path.relative(siteConfig.srcDir, file) + const siteData = resolveSiteDataByRoute(siteConfig.site, relativePath) + return siteData?.localeIndex ?? 'root' + } + + function getIndexForPath(file: string) { + const locale = getLocaleForPath(file) + return getIndexByLocale(locale) + } + + let server: ViteDevServer | undefined + + async function onIndexUpdated() { + if (server) { + server.moduleGraph.onFileChange(OFFLINE_SEARCH_INDEX_REQUEST_PATH) + // HMR + const mod = server.moduleGraph.getModuleById( + OFFLINE_SEARCH_INDEX_REQUEST_PATH + ) + if (!mod) return + server.ws.send({ + type: 'update', + updates: [ + { + acceptedPath: mod.url, + path: mod.url, + timestamp: Date.now(), + type: 'js-update' + } + ] + }) + } + } + + function getDocId(file: string) { + let relFile = path.relative(siteConfig.srcDir, file) + relFile = siteConfig.rewrites.map[relFile] || relFile + let id = path.join(siteConfig.userConfig.base ?? '', relFile) + id = id.replace(/\.md$/, siteConfig.cleanUrls ? '' : '.html') + return id + } + + async function indexAllFiles(files: string[]) { + const documentsByLocale = new Map() + await Promise.all( + files + .filter((file) => fs.existsSync(file)) + .map(async (file) => { + const fileId = getDocId(file) + const sections = splitPageIntoSections( + await md.render(await fs.readFile(file, 'utf-8')) + ) + const locale = getLocaleForPath(file) + let documents = documentsByLocale.get(locale) + if (!documents) { + documents = [] + documentsByLocale.set(locale, documents) + } + documents.push( + ...sections.map((section) => ({ + id: `${fileId}#${section.anchor}`, + text: section.text, + title: section.titles.at(-1)!, + titles: section.titles.slice(0, -1) + })) + ) + }) + ) + for (const [locale, documents] of documentsByLocale) { + const index = getIndexByLocale(locale) + index.removeAll() + await index.addAllAsync(documents) + } + debug(`🔍️ Indexed ${files.length} files`) + } + + async function scanForBuild() { + await indexAllFiles( + siteConfig.pages.map((f) => path.join(siteConfig.srcDir, f)) + ) + } + + return { + name: 'vitepress:offline-search', + + configureServer(_server) { + server = _server + + server.watcher.on('ready', async () => { + const watched = server!.watcher.getWatched() + const files = Object.keys(watched).reduce((acc, dir) => { + acc.push( + ...watched[dir] + .map((file) => dir + '/' + file) + .filter((file) => file.endsWith('.md')) + ) + return acc + }, [] as string[]) + await indexAllFiles(files) + onIndexUpdated() + }) + }, + + resolveId(id) { + if (id.startsWith(OFFLINE_SEARCH_INDEX_ID)) { + return `/${id}` + } + }, + + async load(id) { + if (id === OFFLINE_SEARCH_INDEX_REQUEST_PATH) { + if (process.env.NODE_ENV === 'production') { + await scanForBuild() + } + let records: string[] = [] + for (const [locale] of indexByLocales) { + records.push( + `${JSON.stringify( + locale + )}: () => import('@offlineSearchIndex${locale}')` + ) + } + return `export default {${records.join(',')}}` + } else if (id.startsWith(OFFLINE_SEARCH_INDEX_REQUEST_PATH)) { + return `export default ${JSON.stringify( + JSON.stringify( + indexByLocales.get( + id.replace(OFFLINE_SEARCH_INDEX_REQUEST_PATH, '') + ) ?? {} + ) + )}` + } + }, + + async handleHotUpdate(ctx) { + if (ctx.file.endsWith('.md')) { + const fileId = getDocId(ctx.file) + if (!fs.existsSync(ctx.file)) { + return + } + const index = getIndexForPath(ctx.file) + const sections = splitPageIntoSections( + await md.render(await fs.readFile(ctx.file, 'utf-8')) + ) + for (const section of sections) { + const id = `${fileId}#${section.anchor}` + if (index.has(id)) { + index.discard(id) + } + index.add({ + id, + text: section.text, + title: section.titles.at(-1)!, + titles: section.titles.slice(0, -1) + }) + } + debug('🔍️ Updated', ctx.file) + + onIndexUpdated() + } + } + } +} + +const headingRegex = /(.*?.*?<\/a>)<\/h\1>/gi +const headingContentRegex = /(.*?).*?<\/a>/i + +interface PageSection { + anchor: string + titles: string[] + text: string +} + +/** + * Splits HTML into sections based on headings + */ +function splitPageIntoSections(html: string) { + const result = html.split(headingRegex) + result.shift() + let parentTitles: string[] = [] + const sections: PageSection[] = [] + for (let i = 0; i < result.length; i += 3) { + const level = parseInt(result[i]) - 1 + const heading = result[i + 1] + const headingResult = headingContentRegex.exec(heading) + const title = clearHtmlTags(headingResult?.[1] ?? '').trim() + const anchor = headingResult?.[2] ?? '' + const content = result[i + 2] + if (!title || !content) continue + const titles = [...parentTitles] + titles[level] = title + sections.push({ anchor, titles, text: getSearchableText(content) }) + if (level === 0) { + parentTitles = [title] + } else { + parentTitles[level] = title + } + } + return sections +} + +function getSearchableText(content: string) { + content = clearHtmlTags(content) + return content +} + +function clearHtmlTags(str: string) { + return str.replace(/<[^>]*>/g, '') +} diff --git a/types/default-theme.d.ts b/types/default-theme.d.ts index 520038493c3b..67337d073b7e 100644 --- a/types/default-theme.d.ts +++ b/types/default-theme.d.ts @@ -1,4 +1,5 @@ import { DocSearchProps } from './docsearch.js' +import { OfflineSearchTranslations } from './offline-search.js' export namespace DefaultTheme { export interface Config { @@ -105,6 +106,11 @@ export namespace DefaultTheme { */ algolia?: AlgoliaSearchOptions + /** + * The offline search options. Set to `true` or an object to enable, `false` to disable. + */ + offlineSearch?: OfflineSearchOptions | boolean + /** * The carbon ads options. Leave it undefined to disable the ads feature. */ @@ -295,6 +301,13 @@ export namespace DefaultTheme { locales?: Record> } + // offline search ------------------------------------------------------------ + + export interface OfflineSearchOptions { + translations?: OfflineSearchTranslations + locales?: Record>> + } + // carbon ads ---------------------------------------------------------------- export interface CarbonAdsOptions { diff --git a/types/offline-search.d.ts b/types/offline-search.d.ts new file mode 100644 index 000000000000..7b162c1e43f4 --- /dev/null +++ b/types/offline-search.d.ts @@ -0,0 +1,25 @@ +export interface OfflineSearchTranslations { + button?: ButtonTranslations + modal?: ModalTranslations +} + +interface ButtonTranslations { + buttonText?: string + buttonAriaLabel?: string +} + +interface ModalTranslations { + displayDetails?: string + resetButtonTitle?: string + backButtonTitle?: string + noResultsText?: string + footer?: FooterTranslations +} + +interface FooterTranslations { + selectText?: string + selectKeyAriaLabel?: string + navigateText?: string + navigateUpKeyAriaLabel?: string + navigateDownKeyAriaLabel?: string +} From 0a387dda822710dd8f070fabf5d647b199460d2a Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 11 Apr 2023 12:48:17 +0530 Subject: [PATCH 03/53] chore: enable algolia on main site --- docs/.vitepress/config.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index bcf51c60dede..9fb78d35e6c8 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -47,13 +47,13 @@ export default defineConfig({ copyright: 'Copyright © 2019-present Evan You' }, - // algolia: { - // appId: '8J64VVRP8K', - // apiKey: 'a18e2f4cc5665f6602c5631fd868adfd', - // indexName: 'vitepress' - // }, + algolia: { + appId: '8J64VVRP8K', + apiKey: 'a18e2f4cc5665f6602c5631fd868adfd', + indexName: 'vitepress' + }, - offlineSearch: true, + // offlineSearch: true, carbonAds: { code: 'CEBDT27Y', From e2951604fd61336df9559ea16972d3ea76a49894 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 11 Apr 2023 13:17:02 +0530 Subject: [PATCH 04/53] fix(theme): fix meta key not showing on search button --- .../theme-default/components/VPNavBarSearch.vue | 11 ++++++++++- .../components/VPNavBarSearchButton.vue | 13 +------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/client/theme-default/components/VPNavBarSearch.vue b/src/client/theme-default/components/VPNavBarSearch.vue index 585ba3d540b8..32950a20007c 100644 --- a/src/client/theme-default/components/VPNavBarSearch.vue +++ b/src/client/theme-default/components/VPNavBarSearch.vue @@ -113,10 +113,19 @@ if (!__ALGOLIA__ && theme.value.offlineSearch) { } }) } + +const metaKey = ref(`'Meta'`) + +onMounted(() => { + // meta key detect (same logic as in @docsearch/js) + metaKey.value = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) + ? `'⌘'` + : `'Ctrl'` +}) -