Skip to content

Default Theme Config ​

Complete reference for configuring the VitePress default theme.

Overview ​

The default theme configuration is defined in the themeConfig section of your VitePress config file.

javascript
// .vitepress/config.js
export default {
  themeConfig: {
    // Theme configuration options
  }
}

Site Branding ​

Logo Configuration ​

javascript
export default {
  themeConfig: {
    // Simple logo
    logo: '/logo.svg',
    
    // Logo with light/dark variants
    logo: {
      light: '/logo-light.svg',
      dark: '/logo-dark.svg'
    },
    
    // Custom site title
    siteTitle: 'My Documentation',
    
    // Hide site title (show only logo)
    siteTitle: false
  }
}

Favicon ​

javascript
export default {
  head: [
    ['link', { rel: 'icon', href: '/favicon.ico' }],
    ['link', { rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg' }],
    ['link', { rel: 'apple-touch-icon', href: '/apple-touch-icon.png' }]
  ]
}

Top Navigation ​

javascript
export default {
  themeConfig: {
    nav: [
      { text: 'Home', link: '/' },
      { text: 'Guide', link: '/guide/' },
      { text: 'Config', link: '/config/', activeMatch: '/config/' },
      
      // Dropdown menu
      {
        text: 'Dropdown',
        items: [
          { text: 'Item A', link: '/item-a' },
          { text: 'Item B', link: '/item-b' }
        ]
      }
    ]
  }
}
javascript
export default {
  themeConfig: {
    socialLinks: [
      { icon: 'github', link: 'https://github.com/vuejs/vitepress' },
      { icon: 'twitter', link: 'https://twitter.com/vuejs' },
      { icon: 'discord', link: 'https://discord.gg/vue' },
      
      // Custom SVG icon
      {
        icon: {
          svg: '<svg>...</svg>'
        },
        link: 'https://example.com'
      }
    ]
  }
}

Basic Sidebar ​

javascript
export default {
  themeConfig: {
    sidebar: [
      {
        text: 'Guide',
        items: [
          { text: 'Introduction', link: '/introduction' },
          { text: 'Getting Started', link: '/getting-started' }
        ]
      }
    ]
  }
}

Multi-Sidebar ​

javascript
export default {
  themeConfig: {
    sidebar: {
      '/guide/': [
        {
          text: 'Guide',
          items: [
            { text: 'Introduction', link: '/guide/' },
            { text: 'Getting Started', link: '/guide/getting-started' }
          ]
        }
      ],
      '/api/': [
        {
          text: 'API Reference',
          items: [
            { text: 'Overview', link: '/api/' },
            { text: 'Methods', link: '/api/methods' }
          ]
        }
      ]
    }
  }
}

Collapsible Sidebar ​

javascript
export default {
  themeConfig: {
    sidebar: [
      {
        text: 'Getting Started',
        collapsed: false,
        items: [
          { text: 'Introduction', link: '/introduction' }
        ]
      },
      {
        text: 'Advanced',
        collapsed: true,
        items: [
          { text: 'Customization', link: '/customization' }
        ]
      }
    ]
  }
}
javascript
export default {
  themeConfig: {
    search: {
      provider: 'local',
      options: {
        translations: {
          button: {
            buttonText: 'Search',
            buttonAriaLabel: 'Search'
          },
          modal: {
            noResultsText: 'No results for',
            resetButtonTitle: 'Clear search',
            footer: {
              selectText: 'to select',
              navigateText: 'to navigate',
              closeText: 'to close'
            }
          }
        }
      }
    }
  }
}
javascript
export default {
  themeConfig: {
    search: {
      provider: 'algolia',
      options: {
        appId: 'YOUR_APP_ID',
        apiKey: 'YOUR_SEARCH_API_KEY',
        indexName: 'YOUR_INDEX_NAME'
      }
    }
  }
}
javascript
export default {
  themeConfig: {
    footer: {
      message: 'Released under the MIT License.',
      copyright: 'Copyright © 2024 My Company'
    }
  }
}
javascript
export default {
  themeConfig: {
    footer: {
      message: 'Released under the <a href="/license">MIT License</a>.',
      copyright: 'Copyright © 2024-present <a href="https://example.com">My Company</a>'
    }
  }
}
javascript
export default {
  themeConfig: {
    editLink: {
      pattern: 'https://github.com/username/repository/edit/main/docs/:path',
      text: 'Edit this page on GitHub'
    }
  }
}
javascript
export default {
  themeConfig: {
    editLink: {
      pattern: ({ filePath }) => {
        if (filePath.startsWith('api/')) {
          return `https://github.com/username/repository/edit/main/docs/${filePath}`
        }
        return false
      },
      text: 'Suggest changes'
    }
  }
}

Last Updated ​

Enable Last Updated ​

javascript
export default {
  lastUpdated: true,
  
  themeConfig: {
    lastUpdated: {
      text: 'Updated at',
      formatOptions: {
        dateStyle: 'full',
        timeStyle: 'medium'
      }
    }
  }
}

Outline ​

Table of Contents ​

javascript
export default {
  themeConfig: {
    outline: {
      level: [2, 3],
      label: 'On this page'
    }
  }
}

Deep Outline ​

javascript
export default {
  themeConfig: {
    outline: 'deep' // Show all heading levels
  }
}

Appearance ​

Dark Mode ​

javascript
export default {
  appearance: true, // Enable dark mode toggle
  
  themeConfig: {
    darkModeSwitchLabel: 'Appearance',
    lightModeSwitchTitle: 'Switch to light theme',
    darkModeSwitchTitle: 'Switch to dark theme'
  }
}

Carbon Ads ​

Basic Configuration ​

javascript
export default {
  themeConfig: {
    carbonAds: {
      code: 'your-carbon-code',
      placement: 'your-placement-id'
    }
  }
}

Localization ​

Multi-language Configuration ​

javascript
export default {
  locales: {
    root: {
      themeConfig: {
        nav: [
          { text: 'Home', link: '/' },
          { text: 'Guide', link: '/guide/' }
        ]
      }
    },
    zh: {
      themeConfig: {
        nav: [
          { text: '首页', link: '/zh/' },
          { text: '指南', link: '/zh/guide/' }
        ],
        outlineTitle: '页面导航',
        lastUpdatedText: '最后更新于',
        editLinkText: '在 GitHub 上编辑此页面'
      }
    }
  }
}

Advanced Options ​

Return to Top ​

javascript
export default {
  themeConfig: {
    returnToTopLabel: 'Return to top'
  }
}
javascript
export default {
  themeConfig: {
    externalLinkIcon: true
  }
}

Custom CSS Variables ​

css
:root {
  --vp-c-brand-1: #646cff;
  --vp-c-brand-2: #747bff;
  --vp-c-brand-3: #535bf2;
}

Complete Example ​

javascript
// .vitepress/config.js
export default {
  title: 'My Documentation',
  description: 'A comprehensive documentation site',
  
  themeConfig: {
    // Site branding
    logo: '/logo.svg',
    siteTitle: 'My Docs',
    
    // Navigation
    nav: [
      { text: 'Home', link: '/' },
      { text: 'Guide', link: '/guide/' },
      { text: 'API', link: '/api/' },
      {
        text: 'Resources',
        items: [
          { text: 'Examples', link: '/examples/' },
          { text: 'FAQ', link: '/faq/' }
        ]
      }
    ],
    
    // Sidebar
    sidebar: {
      '/guide/': [
        {
          text: 'Getting Started',
          items: [
            { text: 'Introduction', link: '/guide/' },
            { text: 'Installation', link: '/guide/installation' },
            { text: 'Quick Start', link: '/guide/quick-start' }
          ]
        },
        {
          text: 'Advanced',
          collapsed: true,
          items: [
            { text: 'Configuration', link: '/guide/configuration' },
            { text: 'Customization', link: '/guide/customization' }
          ]
        }
      ],
      '/api/': [
        {
          text: 'API Reference',
          items: [
            { text: 'Overview', link: '/api/' },
            { text: 'Methods', link: '/api/methods' },
            { text: 'Properties', link: '/api/properties' }
          ]
        }
      ]
    },
    
    // Social links
    socialLinks: [
      { icon: 'github', link: 'https://github.com/username/repository' },
      { icon: 'twitter', link: 'https://twitter.com/username' }
    ],
    
    // Search
    search: {
      provider: 'local'
    },
    
    // Footer
    footer: {
      message: 'Released under the MIT License.',
      copyright: 'Copyright © 2024 My Company'
    },
    
    // Edit links
    editLink: {
      pattern: 'https://github.com/username/repository/edit/main/docs/:path',
      text: 'Edit this page on GitHub'
    },
    
    // Last updated
    lastUpdated: {
      text: 'Updated at',
      formatOptions: {
        dateStyle: 'short',
        timeStyle: 'medium'
      }
    },
    
    // Outline
    outline: {
      level: [2, 3],
      label: 'On this page'
    },
    
    // Carbon Ads
    carbonAds: {
      code: 'CEBDT27Y',
      placement: 'vitepressdevcom'
    }
  }
}

TypeScript Support ​

typescript
import { defineConfig, type DefaultTheme } from 'vitepress'

export default defineConfig({
  themeConfig: {
    nav: [
      { text: 'Home', link: '/' },
      { text: 'Guide', link: '/guide/' }
    ],
    
    sidebar: {
      '/guide/': [
        {
          text: 'Getting Started',
          items: [
            { text: 'Introduction', link: '/guide/' }
          ]
        }
      ]
    }
  } satisfies DefaultTheme.Config
})

Best Practices ​

  • Keep navigation simple and intuitive
  • Use consistent naming conventions
  • Group related items together
  • Provide clear visual hierarchy
  • Organize content logically
  • Use collapsible groups for large sections
  • Provide clear section titles
  • Consider user journey and flow

Performance ​

  • Optimize images and icons
  • Use appropriate caching strategies
  • Minimize configuration complexity
  • Test on various devices

Accessibility ​

  • Ensure keyboard navigation works
  • Use proper ARIA labels
  • Maintain sufficient color contrast
  • Test with screen readers

Maintenance ​

  • Keep configuration organized
  • Document custom configurations
  • Regular testing across browsers
  • Monitor user feedback and analytics

VitePress Development Guide