Keyboard Shortcut Sheet

Keyboard shortcuts

Everything in the studio, without reaching for the mouse.

Playback

  • Play or pauseSpace
  • Next trackControl Right arrow
  • Previous trackControl Left arrow
  • Volume upShift Up arrow
  • Volume downShift Down arrow
  • MuteM

Navigation

  • Search the libraryControl K
  • Go homeG then H
  • Go to your libraryG then L
  • Go to the queueG then Q

Library

  • Save to your libraryControl S
  • New playlistControl Shift N
  • Like the current trackL

Studio

  • Arm the selected track for recordingR
  • UndoControl Z
  • RedoControl Shift Z
  • Show these shortcutsShift /

About this component

Keyboard Shortcut Sheet

A keyboard shortcut sheet: groups of shortcuts drawn with kbd-combo caps, which show Command on Apple platforms and Control elsewhere, laid out in balanced columns so groups of different lengths never leave holes. A search field filters by label, by the keys as written and by their names on either platform, highlighting the match. It sits in place on a docs page, or opens as a dialog from anywhere with the question mark key, which is ignored while the reader types. Sequences like g then h, three tones and three sizes.

Usage

The import and the props worth knowing about, in one place.

import { KbdSheet } from "@/components/beste/component/kbd-sheet";

const groups = [
  {
    title: "Playback",
    shortcuts: [
      { keys: "space", label: "Play or pause" },
      { keys: "mod+right", label: "Next track" },
    ],
  },
  {
    title: "Navigation",
    shortcuts: [{ keys: ["g", "h"], label: "Go home", sequence: true }],
  },
];

// A dialog that opens with "?" from anywhere in the app
<KbdSheet groups={groups} />

// In place on a docs page
<KbdSheet groups={groups} inline tone="outline" />

Keyboard and gestures

Every one of these is in the component already. They are listed because a props table cannot mention a gesture, so nothing else on this page can tell you they exist.

?Opens and closes the sheet as a dialog, unless focus is in a field.
Type in the searchFilters by label, by the keys as written and by their names on either platform.
Escape in the searchClears the search; a second Escape closes the dialog.

Props

Read from the component's own type, so this cannot drift from what it accepts.

PropTypeDefaultDescription
groups*KbdShortcutGroup[]—
titlestring—Heading of the sheet.
descriptionstring—A line under the heading.
inlineboolean—Render in place, for a docs page, instead of as a dialog.
openboolean—Whether the dialog is open, controlled.
defaultOpenboolean—
onOpenChange(open: boolean) => void—
triggerstring | null—Key that opens and closes the dialog from anywhere, ignored while typing. `null` turns it off. @defaultValue "?"
searchableboolean—Show the search field. @defaultValue true
placeholderstring—
emptyMessagestring—Shown when the search matches nothing.
tone"muted" | "outline" | "ghost"—
size"sm" | "default" | "lg"—
classNamestring—

More Keyboard components

View all Keyboard
Control K