Stay Updated!

Get the latest posts and insights delivered directly to your inbox

Skip to content

Presentation Mode: Turn Your Blog Posts into Slides

Updated:Β atΒ 

Try It Now!

Press P on your keyboard or click the floating button in the bottom-right corner to enter presentation mode. Use arrow keys to navigate between slides, and press D to draw annotations directly on slides!

Presentation Mode

Turn your blog posts into beautiful slides with incremental reveals


Why Presentation Mode?#

The Problem: You write a great blog post, then need to present it at a meetup.

Old Solution: Recreate everything in PowerPoint or Google Slides.

New Solution: Just add presentation: true to your frontmatter!

---
title: "My Awesome Post"
presentation: true
---

Keyboard Shortcuts#

KeyAction
PToggle presentation mode
β†’ or SpaceNext click step, then next slide
←Previous click step, then previous slide
1-9Jump to slide N (resets clicks)
HomeFirst slide
EndLast slide
DToggle drawing mode
GToggle grid overview
EscapeExit drawing β†’ grid β†’ presentation

Drawing Annotations

Draw directly on slides with Excalidraw!


Try Drawing Mode#

Press D to toggle drawing mode. A toolbar will appear with these tools:


Drawing Features#

Colors: 6 preset colors - Red, Blue, Green, Yellow, White, Black

Stroke Widths: 3 sizes - Thin (1px), Medium (2px), Thick (4px)

Persistence: Drawings stay when you navigate between slides!

Shortcuts:


Use Cases#

Why draw on slides during presentations?


V-Click Animations

Reveal content step-by-step with Slidev-style click animations


Sequential Reveals#

Press β†’ to reveal each point:

Step 1: First, we define the problem clearly.

Step 2: Then, we explore possible solutions.

Step 3: Finally, we implement and test!


Building a List#

Benefits of incremental reveals:


V-Click Syntax#

In MDX files, use components to control reveals:

<VClick />
Content appears on click

<VClicks>
- Each list item
- Gets its own click
</VClicks>

<VClick order={3} />
Explicit order (appears third)

<VClick hide />
This disappears on click

Custom Components

Interactive React components work in slides!


Context Window Visualizer#

This is a custom React component rendered inside a slide:

context-window-demo
CONTEXT WINDOW3.1k / 200.0k tokens (1.6%)
Used: 1.6%Remaining: 98.5%
messages: Message[] = [
[0]
System:"System prompt + CLAUDE.md"
3100 tok
[1]← You are here
]
Yesterday's session?
βˆ… Not in the array. Doesn't exist.
❯

Each message you send adds to the array. The context window is just a sliding array of messages.

Try typing messages to see the context fill up!


Code Blocks Work Perfectly#

Here’s a Vue composable example with full syntax highlighting:

import { ref, computed } from 'vue'

export function useCounter(initial = 0) {
  const count = ref(initial)

  const double = computed(() => count.value * 2)

  function increment() {
    count.value++
  }

  return { count, double, increment }
}

Magic Move: Code Evolution#

Watch code transform with smooth animations (press β†’ to advance):

const x = 1

Each arrow press animates the code to its next state!


Mermaid Diagrams#

Flowcharts render beautifully in slides:

Yes

No

Blog Post

presentation: true?

Show Toggle Button

Normal Post

Press P

Fullscreen Slides!


Animated Diagrams#

Interactive diagrams with self-contained animations:

πŸ€–Main AgentFile TreeπŸ“ src/πŸ“ components/πŸ“„ Auth.tsxπŸ“„ Button.tsxπŸ“ utils/πŸ“„ auth.tsπŸ“„ helpers.tsπŸ“ services/πŸ“„ authService.ts
πŸ€– Main Agent πŸ” Explore delegate report πŸ“ src/ πŸ“ components/ πŸ“„ Auth.tsx πŸ“„ Button.tsx πŸ“ utils/ πŸ“„ auth.ts πŸ“„ helpers.ts πŸ“ services/ πŸ“„ authService.ts search

The Explore subagent searches files and reports discovered matches back to the main agent.

Click Start to see the Explore subagent flow animation!


Slide Layouts


Available Layouts#

This feature supports 9 different layout types:

LayoutDescription
defaultStandard centered prose
coverLarge title, full-bleed
centerFully centered content
two-colsTwo-column split
image-leftImage 40%, content 60%
image-rightContent 60%, image 40%
imageFull-bleed background
quoteProminent blockquote
sectionSection divider
iframeEmbedded website/demo

Iframe Layout#

Embed live demos, CodePen, StackBlitz, or videos directly in slides:

This is a live StackBlitz embed - fully interactive!


Layout Syntax#

In .md files, use HTML comments. In .mdx files, use components:

{/* MDX format */}
<Slide layout="cover" />
# My Title

---

{/* .md format */}
<!--slide:{"layout":"cover"}-->
# My Title

Layout Properties#

All layouts accept these properties:

PropertyDescription
layoutLayout name (required)
imagePath to image in /public
backgroundSizeCSS value (default: cover)
classCustom CSS class
srcURL for iframe layout
titleAccessibility title for iframe

Layout Animations#

Each layout type has its own animation:

LayoutAnimation
defaultSlide
centerSlide
two-colsSlide
coverFade
imageZoom
quoteFade
sectionFade
iframeFade

Technical Details


Architecture Overview#

Content

Layouts

Frontend

PresentationToggle

PresentationMode

PresentationSlide

PresentationControls

PresentationProgress

SlideLayoutDefault

SlideLayoutCover

SlideLayoutTwoCols

... more layouts

Blog Post

Compiled HTML

Parse slide comments

SlideData Array


Tips for Great Slides#

Content Length#


Accessibility Features#


Speaker Notes & Presenter View#

Press N to open the presenter view popup!

The presenter view shows:


Notes with Click Markers#

Notes can reveal progressively with your click steps:

Step 1: Define the problem

Step 2: Explore solutions

Step 3: Implement and ship!


Thank You!

Press Escape to exit or continue with arrow keys


Quick Reference#

File format trade-offs:

FormatCustom ComponentsLayoutsV-ClickSyntax
.mdxYesYesYesComponents
.mdNoYesYesHTML comments

Press Escape to exit presentation mode!

Press Esc or click outside to close

Stay Updated!

Subscribe to my newsletter for more TypeScript, Vue, and web dev insights directly in your inbox.

  • Background information about the articles
  • Weekly Summary of all the interesting blog posts that I read
  • Small tips and trick
Subscribe Now

Most Related Posts