Components

Command

Command menu for search and quick actions.

PreviewSource
Example requirements
bun add --exact lucide-preact@1.51.0

Installation

Complete the project setup first, including Tailwind CSS v4, theme tokens, and Preact compatibility aliases.

1. Install dependencies

bun add --exact @floating-ui/react-dom@2.1.9 class-variance-authority@0.7.1 cmdk@1.1.1 cn@0.4.0 lucide-preact@1.51.0 preact@11.0.0 tw-animate-css@1.4.0

2. Copy the component with degit

Run this from your project root. It selects command.tsx, its local dependencies, and both licenses directly from the repository, then copies them into src/components/ui.

bunx degit@3.10.0 https://github.com/LiasCode/shadcn-preact#main ./.cache/shadcn-preact/command --files LICENSE.md,registry/ui/button.tsx,registry/ui/command.tsx,registry/ui/dialog.tsx,registry/ui/input-group.tsx,registry/ui/input.tsx,registry/ui/lib/utils.ts,registry/ui/primitives/LICENSE,registry/ui/primitives/button/Button.tsx,registry/ui/primitives/button/index.ts,registry/ui/primitives/dialog/index.ts,registry/ui/primitives/dialog/parts.tsx,registry/ui/primitives/field/control/FieldControl.tsx,registry/ui/primitives/input/Input.tsx,registry/ui/primitives/input/index.ts,registry/ui/primitives/internals/FieldRootContext.ts,registry/ui/primitives/internals/FieldsetRootContext.ts,registry/ui/primitives/internals/FloatingFocusManager.tsx,registry/ui/primitives/internals/FloatingPortal.tsx,registry/ui/primitives/internals/FloatingTree.tsx,registry/ui/primitives/internals/FloatingTreeStore.ts,registry/ui/primitives/internals/FocusGuard.tsx,registry/ui/primitives/internals/LabelableContext.ts,registry/ui/primitives/internals/arrow.ts,registry/ui/primitives/internals/composite/root/CompositeRootContext.ts,registry/ui/primitives/internals/createBaseUIEventDetails.ts,registry/ui/primitives/internals/direction-context.ts,registry/ui/primitives/internals/empty.ts,registry/ui/primitives/internals/getReactElementRef.ts,registry/ui/primitives/internals/getStateAttributesProps.ts,registry/ui/primitives/internals/markOthers.ts,registry/ui/primitives/internals/mergeObjects.ts,registry/ui/primitives/internals/owner.ts,registry/ui/primitives/internals/popups/OverlayContext.ts,registry/ui/primitives/internals/popups/OverlayParts.tsx,registry/ui/primitives/internals/popups/OverlayRoot.tsx,registry/ui/primitives/internals/popups/OverlayTrigger.tsx,registry/ui/primitives/internals/popups/PopupHandle.ts,registry/ui/primitives/internals/popups/TooltipProvider.tsx,registry/ui/primitives/internals/popups/getElementProps.ts,registry/ui/primitives/internals/resolveClassName.ts,registry/ui/primitives/internals/resolveRef.ts,registry/ui/primitives/internals/resolveStyle.ts,registry/ui/primitives/internals/stateAttributesMapping.ts,registry/ui/primitives/internals/tabbable.ts,registry/ui/primitives/internals/types.ts,registry/ui/primitives/internals/useAnchorPositioning.ts,registry/ui/primitives/internals/useAnimationFrame.ts,registry/ui/primitives/internals/useAnimationsFinished.ts,registry/ui/primitives/internals/useButton.ts,registry/ui/primitives/internals/useControlled.ts,registry/ui/primitives/internals/useDismiss.ts,registry/ui/primitives/internals/useFloatingRootContext.ts,registry/ui/primitives/internals/useFocusableWhenDisabled.ts,registry/ui/primitives/internals/useHoverFloatingInteraction.ts,registry/ui/primitives/internals/useId.ts,registry/ui/primitives/internals/useIsoLayoutEffect.ts,registry/ui/primitives/internals/useMergedRefs.ts,registry/ui/primitives/internals/useOnMount.ts,registry/ui/primitives/internals/useOpenChangeComplete.ts,registry/ui/primitives/internals/useRefWithInit.ts,registry/ui/primitives/internals/useRenderElement.ts,registry/ui/primitives/internals/useScrollLock.ts,registry/ui/primitives/internals/useStableCallback.ts,registry/ui/primitives/internals/useTransitionStatus.ts,registry/ui/primitives/internals/visuallyHidden.ts,registry/ui/primitives/merge-props/index.ts,registry/ui/textarea.tsx --force
mkdir -p ./src/components/ui
cp -R ./.cache/shadcn-preact/command/registry/ui/. ./src/components/ui/
cp ./.cache/shadcn-preact/command/LICENSE.md ./src/components/ui/LICENSE.md

The temporary copy lives in .cache/shadcn-preact/command. Existing components stay in place; shared source files are updated from main.

Selected source files (67)

Usage

import {
  Command,
  CommandDialog,
  CommandEmpty,
  CommandGroup,
  CommandInput,
  CommandItem,
  CommandList,
  CommandSeparator,
  CommandShortcut,
} from "./components/ui/command"
<Command className="max-w-sm rounded-lg border">
  <CommandInput placeholder="Type a command or search..." />
  <CommandList>
    <CommandEmpty>No results found.</CommandEmpty>
    <CommandGroup heading="Suggestions">
      <CommandItem>Calendar</CommandItem>
      <CommandItem>Search Emoji</CommandItem>
      <CommandItem>Calculator</CommandItem>
    </CommandGroup>
    <CommandSeparator />
    <CommandGroup heading="Settings">
      <CommandItem>Profile</CommandItem>
      <CommandItem>Billing</CommandItem>
      <CommandItem>Settings</CommandItem>
    </CommandGroup>
  </CommandList>
</Command>

Examples

Basic

A simple command menu in a dialog.

BasicSource
Preview
Example requirements

Also uses: Button.

Shortcuts

ShortcutsSource
Preview
Example requirements

Also uses: Button.

bun add --exact lucide-preact@1.51.0

Groups

A command menu with groups, icons and separators.

GroupsSource
Preview
Example requirements

Also uses: Button.

bun add --exact lucide-preact@1.51.0

Scrollable

Scrollable command menu with multiple items.

ScrollableSource
Preview
Example requirements

Also uses: Button.

bun add --exact lucide-preact@1.51.0

Dialog

DialogSource
Preview
Example requirements
bun add --exact lucide-preact@1.51.0

Reference

See the official Command documentation for composition patterns and API details. This page uses the Preact port and examples from the pinned upstream revision.

Component source