Theme Configuration
Configure the default theme via themeConfig in your VitePress config.
Navigation
ts
export default {
themeConfig: {
// Site title in nav (overrides config.title)
siteTitle: 'My Docs',
siteTitle: false, // Hide title
// Logo
logo: '/logo.svg',
logo: { light: '/light-logo.svg', dark: '/dark-logo.svg', alt: 'Logo' },
// Nav links
nav: [
{ text: 'Guide', link: '/guide/' },
{ text: 'API', link: '/api/' },
{ text: 'GitHub', link: 'https://github.com/...' },
],
},
};Dropdown Menu
ts
nav: [
{
text: 'Dropdown',
items: [
{ text: 'Item A', link: '/item-a' },
{ text: 'Item B', link: '/item-b' },
],
},
// With sections
{
text: 'Versions',
items: [
{
text: 'v2.x',
items: [
{ text: 'v2.0', link: '/v2/' },
{ text: 'v2.1', link: '/v2.1/' },
],
},
],
},
];Active Match
Control when nav item shows as active:
ts
nav: [
{
text: 'Guide',
link: '/guide/',
activeMatch: '/guide/', // Regex pattern
},
];Sidebar
Simple Sidebar
ts
sidebar: [
{
text: 'Guide',
items: [
{ text: 'Introduction', link: '/guide/' },
{ text: 'Getting Started', link: '/guide/getting-started' },
],
},
];Multiple Sidebars
Different sidebar per section:
ts
sidebar: {
'/guide/': [
{
text: 'Guide',
items: [
{ text: 'Introduction', link: '/guide/' },
{ text: 'Getting Started', link: '/guide/getting-started' }
]
}
],
'/api/': [
{
text: 'API Reference',
items: [
{ text: 'Config', link: '/api/config' },
{ text: 'Methods', link: '/api/methods' }
]
}
]
}Collapsible Groups
ts
sidebar: [
{
text: 'Section A',
collapsed: false, // Open by default, can collapse
items: [...]
},
{
text: 'Section B',
collapsed: true, // Collapsed by default
items: [...]
}
]Base Path
Simplify links with common base:
ts
sidebar: {
'/guide/': {
base: '/guide/',
items: [
{ text: 'Intro', link: 'intro' }, // /guide/intro
{ text: 'Setup', link: 'getting-started' } // /guide/getting-started
]
}
}Search
Local Search
ts
themeConfig: {
search: {
provider: 'local';
}
}With options:
ts
search: {
provider: 'local',
options: {
miniSearch: {
searchOptions: {
fuzzy: 0.2,
prefix: true
}
}
}
}Algolia DocSearch
ts
search: {
provider: 'algolia',
options: {
appId: 'YOUR_APP_ID',
apiKey: 'YOUR_API_KEY',
indexName: 'YOUR_INDEX_NAME'
}
}Social Links
ts
socialLinks: [
{ icon: 'github', link: 'https://github.com/...' },
{ icon: 'twitter', link: 'https://twitter.com/...' },
{ icon: 'discord', link: 'https://discord.gg/...' },
// Custom SVG
{
icon: { svg: '<svg>...</svg>' },
link: 'https://...',
ariaLabel: 'Custom Link',
},
];Footer
ts
footer: {
message: 'Released under the MIT License.',
copyright: 'Copyright © 2024 My Project'
}Footer only displays on pages without sidebar.
Edit Link
ts
editLink: {
pattern: 'https://github.com/org/repo/edit/main/docs/:path',
text: 'Edit this page on GitHub'
}:path is replaced with the page's source file path.
Last Updated
Enable in site config:
ts
export default {
lastUpdated: true, // Get timestamp from git
};Customize display:
ts
themeConfig: {
lastUpdated: {
text: 'Updated at',
formatOptions: {
dateStyle: 'full',
timeStyle: 'medium'
}
}
}Outline (Table of Contents)
ts
outline: {
level: [2, 3], // Which heading levels to show
label: 'On this page'
}Or just the level:
ts
outline: 'deep'; // Same as [2, 6]
outline: 2; // Only h2
outline: [2, 4]; // h2 through h4Doc Footer Navigation
ts
docFooter: {
prev: 'Previous page',
next: 'Next page'
}
// Or disable:
docFooter: {
prev: false,
next: false
}External Link Icon
ts
externalLinkIcon: true; // Show icon on external linksAppearance Toggle Labels
ts
darkModeSwitchLabel: 'Appearance',
lightModeSwitchTitle: 'Switch to light theme',
darkModeSwitchTitle: 'Switch to dark theme',
sidebarMenuLabel: 'Menu',
returnToTopLabel: 'Return to top'Key Points
navdefines top navigation linkssidebarcan be array (single) or object (multiple sidebars)- Use
collapsedfor collapsible sidebar sections - Local search works out of the box
editLink.patternuses:pathplaceholder- Enable
lastUpdatedin site config, customize in themeConfig