Search
Built-in Search Component
The built-in search component of this theme is adapted from @vuepress/plugin-search, it only supports searching for blog article contents, which means searching for documentation article contents is not avaliable. It generates search index from your pages locally and loads the search index file when users enter your site, which means it doesn't require any external requests.
See here for a demo (click the "Search" button in navbar).
Navbar Options
searchText
- Type: - string
- Default - en: "Search"
- zh: "搜索"
 
- en: 
- Details - Text of the search button in the navbar
- Can be used as normal config, and can also be used in the locales option
 
- Example: - // .vuepress/config.js module.exports = { theme: gungnirTheme({ // normal config searchText: "Search" }) }- or - // .vuepress/config.js module.exports = { theme: gungnirTheme({ // locales option locales: { "/": { searchText: "Search" }, "/zh/": { searchText: "搜索" } } }) }
searchIcon
- Type: - string
- Default: - "ri-search-2-line"
- Details: Icon of the search button in the navbar 
- Example: - // .vuepress/config.js module.exports = { theme: gungnirTheme({ searchIcon: "bi-search" }) }
- Also see: Advanced > Icons 
Plugin Options
locales
- Type: - Record<string, { placeholder: string }>
- Default: - "$ grep ..."
- Details: The text of the search box in different locales 
- Example: - // .vuepress/config.js module.exports = { theme: gungnirTheme({ themePlugins: { search: { locales: { "/": { placeholder: "Search" }, "/zh/": { placeholder: "搜索" } } } } }) }
- Also see: Guide > I18n 
hotKeys
- Type: - string[]
- Default: - ['s', '/']
- Details: - Specify the event.key of the hotkeys
- When hotkeys are pressed, the search box input will be focused
- Set to an empty array to disable hotkeys
 
maxSuggestions
- Type: - number
- Default: - 10
- Details: Specify the maximum number of search results 
isSearchable
- Type: - (page: Page) => boolean
- Default: - () => true
- Details: - A function to determine whether a page should be included in the search index - Return trueto include the page
- Return falseto exclude the page
 
- Return 
- Example: - // .vuepress/config.js module.exports = { theme: gungnirTheme({ themePlugins: { search: { // exclude a specified post isSearchable: (page) => page.path !== "/posts/2021-12-25-hello.html" } } }) }
getExtraFields
- Type: - (page: Page) => string[]
- Default: - () => []
- Details: - A function to add extra fields to the search index of a page. - By default, this plugin will use page title and headers as the search index. This option could help you to add more searchable fields. 
- Example: - // .vuepress/config.js module.exports = { theme: gungnirTheme({ themePlugins: { search: { // allow searching the `tags` frontmatter getExtraFields: (page) => page.frontmatter.tags ?? [] } } }) }
Styles
You can customize the style of the search component via CSS variables:
.search-page {
  --search-bg-color: white;
  --search-accent-color: #377bb5;
  --search-text-color: #2c3e50;
  --search-item-title-color: #2c3e50;
  --search-item-subtitle-color: #7f7f7f;
  --searc-page-z-index: 100;
}
Disable
Disable the built-in search component:
// .vuepress/config.js
  
module.exports = {
  theme: gungnirTheme({
    themePlugins: {
      search: false
    }
  })
}
VuePress Official Search Plugins
If you need support for documentation articles, consider @vuepress/plugin-search or @vuepress/plugin-docsearch. This theme will add search box to the navbar (see the top right-hand corner of this site) once you configure the plugin correctly. Before that, you may want to disable the built-in search component.
When using @vuepress/plugin-search, you may want to exclude Home, Tags and Links page:
// .vuepress/config.js
const { searchPlugin } = require("@vuepress/plugin-search");
module.exports = {
  plugins: [
    searchPlugin({
      isSearchable: (page) => !["Tags", "Links", "HomePage"].includes(page.frontmatter.layout)
    })
  ]
}