Skip to content

CodePen

Embed CodePen projects into VitePress pages.

Installation

sh
pnpm add vitepress-plugin-codepen
sh
npm install vitepress-plugin-codepen
sh
bun add vitepress-plugin-codepen
sh
deno add vitepress-plugin-codepen
sh
yarn add vitepress-plugin-codepen

Usage

.vitepress/config.ts
ts
import { defineConfig } from 'vitepress-tuck'
import codepen from 'vitepress-plugin-codepen'

export default defineConfig({
  plugins: [codepen()],
})

Learn more about vitepress-tuck

Native Mode

.vitepress/config.ts
ts
import { defineConfig } from 'vitepress'
import { codepenPlugin } from 'vitepress-plugin-codepen'

export default defineConfig({
  markdown: {
    config: (md) => {
      md.use(codepenPlugin)
    },
  },
})
.vitepress/theme/index.ts
ts
import type { Theme } from 'vitepress'
import { enhanceAppWithCodepen } from 'vitepress-plugin-codepen/client'
import DefaultTheme from 'vitepress/theme'

export default {
  extends: DefaultTheme,
  enhanceApp(ctx) {
    enhanceAppWithCodepen(ctx)
  },
} satisfies Theme

Syntax

Basic Usage

md
@[codepen](user/slash)

With Options

md
@[codepen preview editable title="Example" height="400px" tab="css,result" theme="dark"](leimapapa/RwOZQOW)

Attribute Reference

AttributeTypeDefaultDescription
titlestring-Title
userstring-CodePen username (parsed from link)
slashstring-Pen identifier (parsed from link)
tabstring'result'Default tab to display
themestring-Theme
previewbooleanfalsePreview mode
editablebooleanfalseEditable mode
widthstring'100%'Width
heightstring-Height

Example

md
@[codepen](leimapapa/RwOZQOW)

Released under the MIT License