slidev-navigation

This skill covers all navigation features in Slidev, including keyboard shortcuts, navigation bar, overview mode, and customizing navigation behavior.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "slidev-navigation" with this command: npx skills add yoanbernabeu/slidev-skills/yoanbernabeu-slidev-skills-slidev-navigation

Slidev Navigation

This skill covers all navigation features in Slidev, including keyboard shortcuts, navigation bar, overview mode, and customizing navigation behavior.

When to Use This Skill

  • Learning navigation controls

  • Customizing keyboard shortcuts

  • Setting up presentation navigation

  • Configuring navigation bar

  • Creating custom navigation components

Default Keyboard Shortcuts

Basic Navigation

Key Action

Space

Next animation or slide

→ / Right

Next animation or slide

← / Left

Previous animation or slide

↑ / Up

Previous slide (skip animations)

↓ / Down

Next slide (skip animations)

Mode Toggles

Key Action

o

Toggle overview mode

d

Toggle dark mode

f

Toggle fullscreen

p

Toggle presenter mode

Navigation Jumps

Key Action

g

Go to specific slide

Home

Go to first slide

End

Go to last slide

Other Controls

Key Action

Esc

Exit fullscreen/overview/drawing

e

Toggle drawing mode

r

Toggle recording

Navigation Bar

Location

Bottom-left corner of the slide (appears on hover).

Available Buttons

  • Home: Go to first slide

  • Previous: Previous slide/animation

  • Current/Total: Click to open go-to dialog

  • Next: Next slide/animation

  • Presenter: Open presenter mode

  • Camera: Toggle camera view

  • Record: Start/stop recording

  • Drawing: Toggle drawing mode

  • Overview: Open slide overview

  • Dark Mode: Toggle dark/light

  • Fullscreen: Toggle fullscreen

  • Export: Export options

  • Info: Presentation info

Overview Mode

Accessing

  • Press o key

  • Click overview button in navigation bar

  • Navigate to /overview URL

Features

  • Grid view of all slides

  • Click any slide to navigate

  • Keyboard navigation within overview

  • Search slides (if implemented)

Overview Navigation

Key Action

← → ↑ ↓

Navigate grid

Enter

Select slide

Esc / o

Close overview

Go-To Dialog

Opening

  • Press g key

  • Click slide number in navigation bar

Usage

  • Dialog opens

  • Type slide number

  • Press Enter

Quick Jump

g → 15 → Enter

Goes directly to slide 15.

Customizing Shortcuts

Configuration File

Create setup/shortcuts.ts :

import { defineShortcutsSetup } from '@slidev/types'

export default defineShortcutsSetup((nav, base) => { return [ ...base, // Keep default shortcuts { key: 'enter', fn: () => nav.next(), autoRepeat: true, }, { key: 'backspace', fn: () => nav.prev(), autoRepeat: true, }, { key: 'ctrl+f', fn: () => nav.go(1), }, ] })

Shortcut Properties

Property Type Description

key

string Key combination

fn

function Action to perform

autoRepeat

boolean Repeat when held

Key Syntax

// Single key { key: 'enter', fn: () => {} }

// Modifier + key { key: 'ctrl+s', fn: () => {} }

// Multiple modifiers { key: 'ctrl+shift+s', fn: () => {} }

Available Modifiers

  • ctrl

  • shift

  • alt

  • meta (Cmd on Mac)

Navigation API

In Components

<script setup> import { useNav } from '@slidev/client'

const { currentSlideNo, // Current slide number (ref) currentPage, // Current page number total, // Total slides clicks, // Current click count next, // Go to next prev, // Go to previous go, // Go to slide number nextSlide, // Next slide (skip animations) prevSlide, // Previous slide (skip animations) } = useNav() </script>

Navigation Functions

<template> <!-- Custom navigation buttons --> <button @click="nav.prev()">Previous</button> <button @click="nav.next()">Next</button> <button @click="nav.go(1)">Go to Start</button> <button @click="nav.go(total.value)">Go to End</button> </template>

<script setup> import { useNav } from '@slidev/client' const nav = useNav() </script>

Custom Navigation Components

Slide Progress Bar

<!-- components/ProgressBar.vue --> <script setup> import { computed } from 'vue' import { useNav } from '@slidev/client'

const { currentSlideNo, total } = useNav() const progress = computed(() => (currentSlideNo.value / total.value) * 100 ) </script>

<template> <div class="fixed top-0 left-0 right-0 h-1 bg-gray-200"> <div class="h-full bg-blue-500 transition-all" :style="{ width: ${progress}% }" /> </div> </template>

Custom Page Number

<!-- components/PageNumber.vue --> <script setup> import { useNav } from '@slidev/client' const { currentSlideNo, total } = useNav() </script>

<template> <div class="fixed bottom-4 right-4 text-sm"> {{ currentSlideNo }} / {{ total }} </div> </template>

Navigation Buttons

<!-- components/NavButtons.vue --> <script setup> import { useNav } from '@slidev/client' const { prev, next, currentSlideNo, total } = useNav() </script>

<template> <div class="fixed bottom-4 flex gap-2"> <button @click="prev()" :disabled="currentSlideNo === 1" class="px-4 py-2 bg-blue-500 text-white rounded disabled:opacity-50" > Previous </button> <button @click="next()" :disabled="currentSlideNo === total" class="px-4 py-2 bg-blue-500 text-white rounded disabled:opacity-50" > Next </button> </div> </template>

Touch Navigation

Default Behavior

  • Swipe left: Next slide

  • Swipe right: Previous slide

Touch Areas

Screen is divided into:

  • Left third: Previous

  • Right two-thirds: Next

Mouse Navigation

Click Areas

  • Left side of slide: Previous

  • Right side of slide: Next

Disable Click Navigation


In frontmatter


Custom CSS to disable:

.slidev-page { pointer-events: none; }

URL Navigation

Direct Slide Access

http://localhost:3030/5 # Slide 5 http://localhost:3030/10 # Slide 10

Presenter Mode

http://localhost:3030/presenter http://localhost:3030/presenter/5 # Presenter at slide 5

Overview Mode

http://localhost:3030/overview

Slide Numbering

Default Numbering

Slides numbered 1 to N based on order.

Custom Slide IDs


routeAlias: introduction

Access via:

http://localhost:3030/introduction

Link to Slide by ID

Go to Introduction

Navigation Events

Watch Navigation

<script setup> import { watch } from 'vue' import { useNav } from '@slidev/client'

const { currentSlideNo } = useNav()

watch(currentSlideNo, (newSlide, oldSlide) => { console.log(Navigated from ${oldSlide} to ${newSlide}) }) </script>

Best Practices

  1. Learn Core Shortcuts

Essential for smooth presenting:

  • Space / →

  • Forward

  • Back

  • o

  • Overview

  • g

  • Go to

  1. Custom Shortcuts for Your Style

// If you prefer Enter/Backspace { key: 'enter', fn: () => nav.next(), }

  1. Hide Navigation for Clean Presentations

CSS to hide nav bar:

.slidev-nav { display: none; }

  1. Add Progress Indicator

Global bottom component for progress.

  1. Practice Navigation

Before presenting:

  • Run through all slides

  • Practice overview jumping

  • Test any custom shortcuts

Output Format

When configuring navigation:

// setup/shortcuts.ts import { defineShortcutsSetup } from '@slidev/types'

export default defineShortcutsSetup((nav, base) => { return [ ...base, // Keep defaults

// Custom shortcuts
{ key: '[key]', fn: () => nav.[action]() },

] })

NAVIGATION PLAN:

  • Forward: [key]

  • Backward: [key]

  • Overview: [key]

  • Jump: [method]

CUSTOM COMPONENTS:

  • Progress bar: [yes/no]

  • Page numbers: [yes/no]

  • Custom buttons: [yes/no]

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

slidev-quick-start

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

slidev-styling

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

slidev-syntax-guide

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

slidev-themes

No summary provided by upstream source.

Repository SourceNeeds Review