Community Themes
Explore and discover community-created themes for VitePress that extend beyond the default theme capabilities.
Popular Community Themes
VitePress Theme Hope
- Author: Mr.Hope
- GitHub: vuepress-theme-hope/vitepress-theme-hope
- Features:
- Blog functionality
- Advanced sidebar
- Dark mode support
- SEO optimization
- PWA support
- Comment system integration
- Installation:bash
npm install vitepress-theme-hope
VitePress Theme Demoblock
- Author: xinlei3166
- GitHub: xinlei3166/vitepress-theme-demoblock
- Features:
- Live code demos
- Component playground
- Syntax highlighting
- Mobile responsive
- Use Case: Component library documentation
VitePress Theme Minimalist
- Author: Community Contributor
- Features:
- Clean, minimal design
- Fast loading
- Typography focused
- Accessibility optimized
- Best For: Technical documentation, blogs
VitePress Theme Corporate
- Author: Enterprise Developer
- Features:
- Professional design
- Brand customization
- Team pages
- Contact forms
- Multi-language support
- Best For: Company documentation, product sites
Theme Categories
Blog Themes
VitePress Blog Theme
- Features:
- Post listing and pagination
- Tag and category support
- RSS feed generation
- Social media integration
- Author profiles
- Configuration:js
// .vitepress/config.js export default { extends: 'vitepress-theme-blog', themeConfig: { blog: { postsDir: 'posts', authorsDir: 'authors', tagsDir: 'tags' } } }
Personal Blog Theme
- Features:
- Personal branding
- Portfolio integration
- Social links
- Newsletter signup
- Analytics integration
Documentation Themes
API Documentation Theme
- Features:
- API endpoint documentation
- Interactive examples
- Code generation
- Version management
- Authentication docs
- Example Usage:yaml
--- title: User API endpoint: /api/users method: GET --- # User Management API Retrieve user information from the system.
Component Library Theme
- Features:
- Component showcase
- Props documentation
- Live examples
- Design tokens
- Usage guidelines
Portfolio Themes
Developer Portfolio
- Features:
- Project showcase
- Skills section
- Experience timeline
- Contact information
- Resume download
Designer Portfolio
- Features:
- Visual project gallery
- Case studies
- Design process
- Client testimonials
- Service offerings
Theme Development
Creating Custom Themes
Basic Theme Structure
my-vitepress-theme/
├── Layout.vue
├── index.js
├── components/
│ ├── Header.vue
│ ├── Sidebar.vue
│ └── Footer.vue
├── styles/
│ ├── vars.css
│ └── base.css
└── package.json
Theme Entry Point
js
// index.js
import Layout from './Layout.vue'
import './styles/vars.css'
import './styles/base.css'
export default {
Layout,
enhanceApp({ app, router, siteData }) {
// App-level enhancements
}
}
Main Layout Component
vue
<!-- Layout.vue -->
<template>
<div class="theme-container">
<Header />
<div class="main-content">
<Sidebar v-if="showSidebar" />
<div class="content-wrapper">
<Content />
</div>
</div>
<Footer />
</div>
</template>
<script setup>
import { useData } from 'vitepress'
import Header from './components/Header.vue'
import Sidebar from './components/Sidebar.vue'
import Footer from './components/Footer.vue'
const { page, frontmatter } = useData()
const showSidebar = computed(() => {
return frontmatter.value.sidebar !== false
})
</script>
Theme Configuration
Theme Options
js
// .vitepress/config.js
export default {
themeConfig: {
// Custom theme options
brand: {
logo: '/logo.svg',
name: 'My Site',
tagline: 'Amazing documentation'
},
colors: {
primary: '#3eaf7c',
secondary: '#2c3e50'
},
layout: {
sidebar: true,
toc: true,
breadcrumbs: true
}
}
}
Extending Default Theme
js
// .vitepress/theme/index.js
import DefaultTheme from 'vitepress/theme'
import CustomLayout from './CustomLayout.vue'
import './custom.css'
export default {
...DefaultTheme,
Layout: CustomLayout,
enhanceApp({ app }) {
// Custom app enhancements
}
}
Theme Marketplace
Official Theme Registry
- Location: VitePress official documentation
- Submission Process: GitHub PR to themes list
- Requirements: Documentation, examples, maintenance commitment
Community Platforms
- npm: Search for "vitepress-theme"
- GitHub: Topic "vitepress-theme"
- Awesome VitePress: Curated list of themes and plugins
Theme Directories
- VitePress Themes: Community-maintained directory
- Vue Ecosystem: Vue.js community resources
- Static Site Themes: Cross-platform theme collections
Theme Installation and Usage
Installation Methods
npm Installation
bash
npm install your-vitepress-theme
Git Submodule
bash
git submodule add https://github.com/user/theme.git .vitepress/theme
Local Development
bash
# Clone theme repository
git clone https://github.com/user/theme.git
cd theme
npm link
# Link in your project
cd your-project
npm link your-vitepress-theme
Configuration
js
// .vitepress/config.js
import { defineConfig } from 'vitepress'
export default defineConfig({
// Use custom theme
theme: 'your-vitepress-theme',
// Or extend default theme
extends: 'vitepress/theme',
themeConfig: {
// Theme-specific configuration
}
})
Theme Customization
CSS Variables
css
/* .vitepress/theme/custom.css */
:root {
--vp-c-brand: #646cff;
--vp-c-brand-light: #747bff;
--vp-c-brand-lighter: #9499ff;
--vp-c-brand-lightest: #bcc0ff;
--vp-c-brand-dark: #535bf2;
--vp-c-brand-darker: #454ce1;
--vp-c-brand-dimm: rgba(100, 108, 255, 0.08);
}
Component Overrides
vue
<!-- .vitepress/theme/components/CustomHeader.vue -->
<template>
<header class="custom-header">
<div class="brand">
<img :src="logo" :alt="title" />
<span>{{ title }}</span>
</div>
<nav class="nav">
<a v-for="item in nav" :key="item.text" :href="item.link">
{{ item.text }}
</a>
</nav>
</header>
</template>
Layout Modifications
vue
<!-- .vitepress/theme/Layout.vue -->
<template>
<Layout>
<template #nav-bar-title-after>
<span class="version-badge">v2.0</span>
</template>
<template #sidebar-nav-before>
<div class="sponsor-banner">
<a href="/sponsor">Support Us</a>
</div>
</template>
<template #page-bottom>
<div class="page-feedback">
<button @click="sendFeedback">Was this helpful?</button>
</div>
</template>
</Layout>
</template>
Theme Best Practices
Performance
- Optimize images and assets
- Use CSS variables for theming
- Implement lazy loading
- Minimize JavaScript bundle size
Accessibility
- Semantic HTML structure
- Proper ARIA labels
- Keyboard navigation support
- Color contrast compliance
SEO
- Proper meta tags
- Structured data
- Sitemap generation
- Social media optimization
Maintenance
- Regular updates
- Backward compatibility
- Clear documentation
- Community support
Contributing to Themes
Theme Development Guidelines
- Code Quality: Follow Vue.js and VitePress conventions
- Documentation: Provide comprehensive setup and usage docs
- Examples: Include demo sites and use cases
- Testing: Ensure compatibility across VitePress versions
- Licensing: Use appropriate open source licenses
Submission Process
- Create theme repository
- Add comprehensive README
- Include demo site
- Submit to theme directories
- Engage with community feedback
Community Support
- Discord: VitePress community server
- GitHub Discussions: Theme-specific discussions
- Stack Overflow: Technical questions and answers
- Reddit: r/vuejs community
Theme Showcase
Featured Themes
- VitePress Theme Hope: Full-featured blog and documentation theme
- VitePress Theme Demoblock: Component demonstration theme
- VitePress Theme Minimalist: Clean and simple design
- VitePress Theme Corporate: Professional business theme
Community Favorites
- Most starred themes on GitHub
- Most downloaded themes on npm
- Community-recommended themes
- Award-winning designs
The community theme ecosystem is constantly growing. Check back regularly for new themes and updates to existing ones.