VMark: Hand-Drawn Annotations
Add emphasis to your presentations with animated hand-drawn marks
The Problem
Static text in presentations lacks emphasis.
We want this to stand out.
VMark creates a “live drawing” effect that grabs attention and guides your audience’s focus.
Getting Started
Import VMark from the presentation feature:
import { VMark } from "@features/presentation";
Basic usage wraps text in the component:
<VMark>text to emphasize</VMark>
The default is underline, and it animates on click.
Annotation Types: Underline & Circle
Underline is the default. Use it for general emphasis.
Circle draws attention to key terms or important words.
<VMark type="underline">emphasis</VMark>
<VMark type="circle" color="red">key term</VMark>
Annotation Types: Box & Highlight
Box frames content like code or definitions.
Highlight creates a marker effect. It uses 40% opacity so text stays readable.
<VMark type="box" color="green">boxed</VMark>
<VMark type="highlight" color="yellow">highlighted</VMark>
Annotation Types: Strike-through & Crossed-off
Use these for corrections or showing what to avoid:
This approach is wrong Don’t do thisCommon pattern: show the wrong approach, then reveal the correct one.
Annotation Type: Bracket
Brackets emphasize entire phrases or sentences
The brackets prop controls direction:
<VMark type="bracket" brackets={['left', 'right']}>
phrase
</VMark>
Options: left, right, top, bottom
Color Presets
VMark includes 24 color presets:
red | blue | green | yellow | purple | orange
cyan | teal | pink | indigo | lime | amber
Custom CSS colors also work: #ff6b6b, rgb(100, 200, 150), rgba(255, 0, 0, 0.5)
Controlling Timing: Sequential
By default, VMark annotations appear sequentially with each click.
This one appears second.
And this one third.
Just place VMark components in order. Each one advances the click counter.
Controlling Timing: Explicit
Use at to specify an exact click number:
<VMark at={3}>appears on click 3</VMark>
<VMark at={1}>appears on click 1</VMark>
Advanced Timing: Relative & Ranges
Relative positioning with +N:
Ranges show content only during a window:
Visible from click 3 to 4<VMark at="+1">offset from previous</VMark>
<VMark at={[2, 5]}>visible during clicks 2-4</VMark>
Under the Hood
VMark is built on the rough-notation library.
Key behaviors:
- Generates SVG annotations at runtime
- Respects
prefers-reduced-motion(instant show, no animation) - Works with print/export mode (
?print=true) - Annotations are visual only. Screen readers see just the text
Summary
Import from@features/presentation
7 annotation types: underline, circle, box, highlight, strike-through, crossed-off, bracket
24 color presets plus custom CSS colors
Full click system integration with at prop for timing control
Press Escape to exit presentation mode.