Skip to content

Community Themes

Explore and discover community-created themes for VitePress that extend beyond the default theme capabilities.

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

  1. Code Quality: Follow Vue.js and VitePress conventions
  2. Documentation: Provide comprehensive setup and usage docs
  3. Examples: Include demo sites and use cases
  4. Testing: Ensure compatibility across VitePress versions
  5. Licensing: Use appropriate open source licenses

Submission Process

  1. Create theme repository
  2. Add comprehensive README
  3. Include demo site
  4. Submit to theme directories
  5. 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

  • 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.

VitePress Development Guide