A keyboard-first sidebar with a fuzzy filter and two-key chords like G then I, shown in a status bar that drains while it waits for the second key. Built for power users who never touch the mouse.
My issues
npx shadcn@latest add https://hyperblur.dev/r/sidebar-command.jsonWorks in any React project set up with the shadcn CLI. The file lands in components/hyperblur/sidebar-command.tsx.
import { SidebarCommand } from "@/components/hyperblur/sidebar-command"
<SidebarCommand globalShortcuts onChange={(id) => router.push(`/${id}`)} onAction={(id) => run(id)} />| Prop | Type | Default | Description |
|---|---|---|---|
| items | { id: string; label: string; group?: string; keys?: string; icon?: SidebarCommandIconName | ReactNode; action?: boolean }[] | Go to and Actions groups | Rows. keys is one key ("c") or a chord ("g i"). Action rows call onAction and never become current. |
| active | string | Controlled current page id. Pair with onChange. | |
| defaultActive | string | first non-action item | Initially current page when uncontrolled. |
| onChange | (id: string) => void | Called when a page row is chosen by click, Enter or chord. | |
| onAction | (id: string) => void | Called when an action row runs. | |
| placeholder | string | "Jump to..." | Filter placeholder. |
| globalShortcuts | boolean | false | Listen for / and chords anywhere on the page, not only inside the sidebar. Typing in fields is ignored. |
| chordTimeout | number | 1500 | Milliseconds to wait for the second key of a chord. |
| accent | string | "#2f7bff" | Accent for the prompt, chord keys, current marker and focus. |