Skip to content

Components ​

The theme registers these globally, so Markdown can use them without an import. From Vue code, import them by name from @vaam-apps/vitepress-md3.

<ProjectGrid> and <ProjectCard> ​

The cards on the projects page. A grid takes a list; a card takes one project's fields as props.

an

Another

Shapes and tones cycle when a card does not choose its own.

  • Example
vue
<script setup>
import { projects } from "./projects"; // your list
</script>

<ProjectGrid :projects="projects" />
PropType
titlestringRequired
descriptionstringOne or two sentences
linkstringThe project's docs; site-relative or absolute
repostringowner/name; adds a GitHub button
tagsstring[]Shown as chips
statusstringA tertiary label, e.g. beta
monogramstringAvatar text; defaults to the title's initial
shapeShapeNameAvatar shape in Expressive; standard uses a circle
tone"primary" | "secondary" | "tertiary" | "error" | "surface"Avatar colour

<Md3Shape> ​

Any Expressive shape, filled with a container colour, optionally spinning. Content in the default slot stays upright.

✦42
md
<Md3Shape shape="cookie-12" size="5rem" tone="primary" spin>✦</Md3Shape>
<Md3Shape shape="clover-4" size="5rem" tone="tertiary">42</Md3Shape>
<Md3Shape shape="pentagon" size="5rem" tone="secondary" />
PropDefault
shape"cookie-9"One of the shape names
size"3rem"Any CSS length
tone"primary"Which container colour fills it
spinfalseRotate slowly; stops under reduced motion

<Md3Squiggle> ​

The divider under the home page's features: wavy in Expressive, a hairline in standard.


<Md3Palette>, <Md3ShapeGallery>, <Md3MotionDemo> ​

The live demos on the Colour, Shape and Motion pages. Drop them into your own site's docs about its theme.

useMd3() ​

The active style and the resolved options, reactively:

ts
import { useMd3 } from "@vaam-apps/vitepress-md3";

const { style, isExpressive, options, setStyle } = useMd3();

setStyle("standard") switches the page and remembers the choice — it is what the nav-bar toggle calls.

Released under the MIT License.