crucıble

Manifest

A ⌘K command palette: a spring-seated glass search box over a scrim with a fuzzy-filtered, keyboard-driven list of grouped commands and pages. A shared-layout pill slides between rows, matched substrings ignite to full contrast, and rows with children push a nested page in from the right. Full combobox a11y, focus trap, ⌘K/Ctrl-K toggle, and controlled open.

motionpro

Installation

CLI

npx shadcn@latest add @crucible/manifest

Manual — install dependencies, then copy the source

npm install motion

Props

PropTypeDefaultDescription
itemsManifestItem[]Root command/page list.
openbooleanControlled open state. Pair with onOpenChange.
defaultOpenbooleanfalseInitial open state when uncontrolled.
onOpenChange(open: boolean) => voidFires whenever the palette opens or closes, controlled or not.
triggerReact.ReactNodeElement that opens the palette on click (uncontrolled convenience). Controlled callers can drive open and omit this.
hotkeystring | false"k"Single key that, with ⌘ (mac) or Ctrl, toggles the palette. Set false to disable the global hotkey.
placeholderstring"Type a command or search…"Search input placeholder.
emptyMessageReact.ReactNode"No results"Shown when nothing matches.
labelstring"Command palette"Accessible label for the dialog.
footerReact.ReactNodeFooter hint row content. Pass null to hide it.
maxVisiblenumber50Hard cap on rendered rows per page — long lists are sliced.
containerHTMLElement | nulldocument.body (fixed, full-viewport, scroll-locked). Pass a stage element for previewsPortal target (must be a positioned element).
Also accepts all props of Omit<React.ComponentPropsWithoutRef<"div">, "onSelect">they pass through to the underlying element.

Honors prefers-reduced-motion with a designed static fallback, and passes className through.