Skip to content

Styles & Plugins Guide ​

🕓 重构中

本文档中过时内容正在重构。过时部分可能不适用于最新版本。请仔细甄别。

This document is a complete specification for all available Markdown features in CrychicDoc, including text formatting, container plugins, and custom Vue components.

Text Formatting Extensions ​

These plugins extend standard Markdown syntax for richer text representation.

Abbreviations (abbr) ​

markdown
*[HTML]: Hyper Text Markup Language
*[W3C]: World Wide Web Consortium

The HTML specification is maintained by the W3C.

Preview:

The HTML specification is maintained by the W3C.


Superscript & Subscript (sup & sub) ​

markdown
Subscript: H~2~O
Superscript: 19^th^

Preview: Subscript: H2O Superscript: 19th


Mark & Insert (mark & ins) ​

markdown
VuePress Theme Hope ==is very powerful==.
VuePress Theme Hope ++is very++ powerful.

Preview: VuePress Theme Hope is very powerful. VuePress Theme Hope is very powerful.


Ruby Annotation (ruby) ​

markdown
{documentation:doc|u|men|ta|tion}

Preview: documentationdoc|u|men|ta|tion


Spoiler ​

markdown
VuePress Theme Hope !!is very powerful!!.

Preview: VuePress Theme Hope is very powerful.


Content Element Extensions ​

Todo List (todo) ​

markdown
- [ ] Uncompleted task
- [x] Completed task

Preview:

  • Uncompleted task
  • Completed task

Multiple Choice ​

markdown
[?] Your question goes here?
[ ] Wrong answer option
[x] Correct answer option

Preview:

Your question goes here?

Container Plugins ​

Container plugins use ::: syntax to create block-level content with special styles or functionality.

Alert (alert) ​

The new alert provides rich configuration options via JSON.

Property Type Description Values
type string Alert type/color success, info, warning, error
title string Alert title Any string
variant string Visual style variant flat, tonal, outlined, text, plain
density string Spacing density default, comfortable, compact
border string|boolean Border position start, end, top, bottom, true
icon string Custom icon e.g. mdi-star, mdi-heart

Demo:

Alert Examples

md
::: alert {"type": "success", "title": "Success"}
This is a success alert.
:::

::: alert {"type": "info", "title": "Info", "icon": "mdi-information"}
This is an info alert with custom icon.
:::

::: alert {"type": "warning", "title": "Warning", "variant": "tonal"}
This is a warning alert with tonal variant.
:::

::: alert {"type": "error", "title": "Error", "border": "start"}
This is an error alert with left border.
:::

Align Container (align) ​

Control horizontal alignment of content.

Demo:

Align Examples

This is left aligned content.

This is centered content.

This is right aligned content.


md
::: left
This is left aligned content.
:::

::: center
This is centered content.
:::

::: right
This is right aligned content.
:::

Tabs (tabs) ​

Create switchable tab panels.

Demo:

Tabs Example

This is content for tab A.


md
:::tabs key:ab
== tab A
This is content for tab A.
== tab B
This is content for tab B.
:::

Stepper (stepper) ​

Visual step-by-step navigation.

Demo:

Stepper Example

md
::: stepper
@tab Step 1
This is step 1 - Set up your project.
@tab Step 2
This is step 2 - Configure dependencies.
@tab Step 3
This is step 3 - Run the project.
:::

Card Container (card) ​

Card containers with multiple styles.

Demo:

Card Styles

md
:::text Title#Subtitle
This is text style
:::
:::flat Title Only
This is flat style
:::
:::elevated #Subtitle Only
This is elevated style
:::
:::tonal Title#Subtitle
This is tonal style
:::
:::outlined
This is outlined style
:::

Timeline (timeline) ​

Preset Types ​

Category Available Types
Basic success, info, warning, error, tip
Project start, finish, milestone, deadline, meeting, launch
Status review, approve, reject, pending, progress, complete
Feature feature, feature_designing, feature_developing, feature_released
Task task_created, task_assigned, task_started, task_completed

Demo:

Timeline Example

md
:::: timeline
::: timeline-item type="start" opposite="2024-08"
Project Start
:::
::: timeline-item type="milestone" card="true" card-title="v1.0 Released"
We successfully released the first major version!
:::
::: timeline-item type="refactor" opposite="2025-06"
Sidebar system refactored
:::
::: timeline-item type="finish" opposite="2025-07"
Documentation maintained to date
:::

Chart Containers ​

Chart Grid (chart-grid) ​

Grid layout container optimized for Vue Chart.

Config Purpose Type Default
columns Grid columns number 2
gap Chart gap string "24px"
responsive Enable responsive boolean true
equalHeight Equal height boolean true
minHeight Minimum height string "300px"

Demo:

Two Column Chart

md
:::: chart-grid {"columns": 2, "gap": "24px"}

::: chart pie {"title": "Project Progress", "height": "300px"}
Completed: 65
In Progress: 25
Pending: 10
:::

::: chart line {"title": "Monthly Trend", "height": "300px", "smooth": true}
Series A | Jan: 20, Feb: 35, Mar: 45, Apr: 65
:::

::::

Single Column:

Single Column Chart

md
:::: chart-grid {"columns": 1, "gap": "24px"}

::: chart bar {"title": "Team Workload", "height": "300px"}
Development: 150, Testing: 80, Documentation: 60, Meetings: 40
:::

::::

Chart (chart) ​

Use chart container to render ECharts charts.

Supported chart types:

| Chart Type | Syntax | Data Format | | :--------- | :------ | :---------------- | ------------------------------------- | | Line | line | Series | Category1: Value1, Category2: Value2 | | Bar | bar | Series | Category1: Value1, Category2: Value2 | | Pie | pie | Category: Value | | Radar | radar | Series | Metric1: Value1, Metric2: Value2 | | Gauge | gauge | Value |

Line Chart Demo:

Pie Chart Demo:

Radar Chart Demo:


Code & Chart Plugins ​

Markmap Mind Map ​

Renders Markdown content as interactive mind maps.

markdown
```markmap
# Topic
## Branch 1
### Sub-branch 1.1
### Sub-branch 1.2
## Branch 2
### Sub-branch 2.1
```

Demo:


Magic Move Code Animation ​

Shows code evolution with smooth transitions.

Demo:

Loading...

Shader Syntax Highlighting ​

Lightweight highlighting for shader code blocks and inline snippets without full parser overhead. Supports glsl, shader, hlsl, and wgsl language labels.

markdown
```glsl
void main() {
    gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
```

Inline syntax: `shader: vec2 uv = vUv;`

Demo:

void main() {
    gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}

Inline syntax: vec2 uv = vUv;

Shader Effect Container (shader-effect) ​

Use a dedicated container when you want the code to drive a live shader canvas directly from Markdown.

markdown
::: shader-effect{"speed":1}

```glsl
varying vec2 vUv;

void main() {
  vUv = uv;
  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
```

```glsl
uniform float uTime;
uniform vec3 uBgColor;
uniform float uThemeIsDark;
uniform vec3 uColor1;
uniform vec3 uColor2;
varying vec2 vUv;

void main() {
  vec2 uv = vUv * 2.0 - 1.0;
  uv.x *= 1.78;
  float r = length(uv);
  float angle = atan(uv.y, uv.x);
  float swirl = angle + uTime * 0.5 + r * 5.0;
  float ring = smoothstep(0.95, 0.15, r);
  float core = smoothstep(0.02, 0.12, r);
  float accretion = sin(swirl * 3.0) * 0.5 + 0.5;
  float glow = exp(-r * 3.0) * 0.6;
  vec3 diskColor = mix(uColor1, uColor2, accretion);
  float effectMask = ring * core;
  vec3 effectColor = diskColor * effectMask + glow * vec3(0.3, 0.4, 0.8);
  vec3 finalColor = mix(uBgColor, effectColor, effectMask + glow * 0.3);
  gl_FragColor = vec4(finalColor, 1.0);
}
```

:::
Field Type Description Default
speed number Animation speed multiplier 1
preset string Optional preset fallback (wave/sunset/...) wave
paused boolean Pause animation false

Demo:


Visual & Utility Plugins ​

Interactive plugins and embed components that can be used directly in Markdown.

Mermaid Charts ​

markdown
```mermaid
graph TD
    A[Start] --> B{Is it working?};
    B -- Yes --> C[Great!];
    B -- No --> D[Check console];
```

Demo:


Bilibili Video ​

markdown
<BilibiliVideo bvid="BV1rC4y1C7z2" />

PDF Viewer ​

markdown
<PdfViewer pdfSource="/pdf/modding/java/test.pdf"/>

Image Size (img-size) ​

Specify image width and height directly in Markdown image syntax using =WxH after the alt text.

markdown
![Logo =200x200](/logo.png)
![Logo =150x](/logo.png)
![Logo =x100](/logo.png)

Demo:

Image Size Example

Logo


md
![Logo =80x80](/svg/logo.svg)

Demo Container (demo) ​

Wraps content in a collapsible demo block that shows the rendered output alongside the source.

markdown
:::: demo Title
::: demo Inner example
**Markdown** is _awesome_!
:::
::::

Demo:

Demo Container Example
This is a demo

Bold, italic, and inline code all work here.


md
**Bold**, _italic_, and `inline code` all work here.

md
::: demo This is a demo
**Bold**, _italic_, and `inline code` all work here.
:::

Legacy Alert (v-alert) ​

Vuetify-style alerts using the v-success | v-info | v-warning | v-error container names.

markdown
::: v-success Success
This is a success message.
:::

::: v-info Info
This is an info message.
:::

::: v-warning Warning
This is a warning message.
:::

::: v-error Error
This is an error message.
:::

Demo:

Legacy v-alert Examples

md
::: v-success Success
This is a success message.
:::
::: v-info Info
This is an info message.
:::
::: v-warning Warning
This is a warning message.
:::
::: v-error Error
This is an error message.
:::

Dialog (dialog) ​

Creates a modal dialog that can be triggered from anywhere on the page.

Field Purpose Type Default
title Dialog title string —
width Max width string|number 800
fullscreen Full-screen mode boolean false
persistent Click-outside closes boolean false
markdown
@@@ dialog-def#my-dialog {"title": "Example Dialog", "width": 500}
This is **Markdown** inside a dialog.
@@@

Click :::dialog#my-dialog here::: to open it.

Demo:

Dialog Example

Click here to open the dialog.


md
@@@ dialog-def#demo-dialog {"title": "Hello Dialog", "width": 500}
This is a **Markdown** dialog.

- It can contain lists
- `code blocks`
- And other Markdown content.
  @@@

Click :::dialog#demo-dialog here::: to open the dialog.

Carousels (carousels) ​

Creates an image or content carousel/slideshow.

Accepted Config ​

Field Purpose Type Notes
cycle Auto-play slides boolean Defaults to false
interval Auto-play interval number Milliseconds
hideDelimiters Hide bottom dots boolean Preferred key
undelimiters Hide bottom dots boolean Legacy alias, still supported
showArrows Show arrows or hover arrows boolean|\"hover\" Preferred key
arrows Show arrows or hover arrows boolean|\"hover\" Legacy alias, still supported
continuous Loop when reaching the end boolean Defaults to true
height Force a fixed carousel size string|number Optional, otherwise height is measured

Syntax ​

markdown
::: carousels#{"cycle": true, "interval": 2800, "hideDelimiters": false}
@tab
![Image 1](https://example.com/1.png)
@tab
![Image 2](https://example.com/2.png)
:::

Demo:

Content Carousel Example

md
::: carousels#{"cycle": true, "interval": 3000, "hideDelimiters": false}
@tab
**Slide 1** — You can put any Markdown content here.
@tab
**Slide 2** — Including code, images, and formatted text.
:::
Image Carousel Example

md
::: carousels#{"cycle": true, "interval": 2800, "hideDelimiters": false}
@tab
![Image 1](https://example.com/1.png)
@tab
![Image 2](https://example.com/2.png)
:::

Iframe (iframe) ​

Embeds an external web page in the document.

Field Purpose Type Default
src URL to embed (required) string —
height Frame height length 140px

src accepts both standard URLs and Markdown auto-link style values such as <https://misode.github.io/>.

Syntax ​

markdown
:::iframes#{"src": "https://misode.github.io/"}
:::

Note: Some sites block embedding via security policies and will display blank or an error.

Demo:

Iframe Example

md
:::iframes#{"src": "<https://misode.github.io/>", "height": "300px"}
:::

Theme-Aware Images ​

Use .light-only and .dark-only classes to swap screenshots based on the current VitePress theme.

This works with Markdown attribute syntax as well as raw HTML images:

markdown
![Light dashboard](/images/demo/dashboard-light.webp){.light-only}
![Dark dashboard](/images/demo/dashboard-dark.webp){.dark-only}
html
<img class="light-only" src="/images/demo/dashboard-light.webp" alt="Light dashboard" />
<img class="dark-only" src="/images/demo/dashboard-dark.webp" alt="Dark dashboard" />

Chat (chat) ​

Creates a simulated chat interface supporting multiple avatar types.

chat Container Props ​

Prop Type Description Default
title string Chat panel title ""
max-height string Max panel height "400px"

message Container Props ​

Prop Type Description Default
nickname string Username ""
avatar-type string Avatar type: icon, ai, github "icon"
location string Message side: left, right "left"
avatar-link string Click link on avatar ""

Syntax ​

markdown
:::: chat title="AI Chat Demo"
::: message nickname="User" avatar-type="icon"
Hello! Can you explain what the Vue Composition API is?
:::

::: message nickname="AI Assistant" avatar-type="ai" location="right"
Sure! The Vue Composition API is a new way to organize component logic in Vue 3.
:::
::::

Demo:

Chat Example
AI Chat Demo
👤
User

Hello! Can you explain what the Vue Composition API is?

A
AI Assistant

Sure! The Vue Composition API is a new way to organize component logic in Vue 3:

  • Reactive data: use ref() and reactive()
  • Lifecycle hooks: use onMounted() etc.

It allows better code reuse compared to the Options API.

octocat

GitHub avatars auto-link to the user's GitHub profile.


md
:::: chat title="AI Chat Demo"
::: message nickname="User" avatar-type="icon"
Hello! Can you explain what the Vue Composition API is?
:::

::: message nickname="AI Assistant" avatar-type="ai" location="right"
Sure! The Vue Composition API is a new way to organize component logic in Vue 3:

- **Reactive data**: use `ref()` and `reactive()`
- **Lifecycle hooks**: use `onMounted()` etc.

It allows better code reuse compared to the Options API.
:::

::: message nickname="octocat" avatar-type="github"
GitHub avatars auto-link to the user's GitHub profile.
:::
::::

Steps (steps) ​

Vertical numbered timeline — great for tutorials and how-to guides.

markdown
::: steps
@tab Step 1 Title
Content for step 1

@tab Step 2 Title
Content for step 2
:::

Demo:

1

Install Dependencies

Run npm install or yarn install in the project root.

2

Start the Dev Server

Run yarn dev and open http://localhost:5173.

3

Edit a Page

Edit any .md file under docs/src/ and watch it hot-reload instantly.


Custom Vue Components ​

Contributors (Contributors) ​

Fetches and displays GitHub contributors for any repo, grouped by contribution count.

Prop Type Description Default
owner string GitHub org/user (auto-detected from project config) from config
repo string Repository name (auto-detected) from config
maxCount number Max contributors to show 200
showContributions boolean Show contribution counts true
enableCache boolean Use cached avatars from /public/contributors/ true
title string Section heading "Contributors"
layout "doc"|"hero" Force layout mode (auto-detected by default) auto
markdown
<Contributors
  owner="PickAID"
  repo="CrychicDoc"
  :max-count="100"
  :show-contributions="true"
  title="Contributors"
/>

Demo:

Contributors

Loading contributors...

📭

No contributors found


Git Commits Counter (commitsCounter) ​

Displays a sparkline chart of recent commits for a GitHub repository.

Prop Type Description Default
username string GitHub org/user —
repoName string Repository name —
daysToFetch number Number of past days to chart 30
markdown
<commitsCounter
  username="PickAID"
  repoName="CrychicDoc"
  :daysToFetch="14"
/>

Demo: