Command:HextaUI と shadcn/ui

HextaUI の Command は shadcn/ui の名前とテーマトークンをそのまま使い、同じ CLI でインストールできます。このページでは、両方のソースから読み取った違いをまとめています。shadcn/ui 側は 2026-10-16 時点の base-vega レジストリです。

早見表

項目HextaUIshadcn/ui
エクスポートされるパーツ129
ラッパーが処理する props333
ソースの行数1179210
npm の依存関係@base-ui/react@^1.8.0@tabler/icons-reactcmdk@^1.1.1cncmdkcn
構成要素buttonhotkeymotionspinnerthemedialoginput-group

ソースが多いこと自体が良いわけではありません。HextaUI の追加の行の多くは、本来なら自分で書くことになる状態、モーション、エッジケースを扱っています。

パーツ

HextaUI だけCommandPageCommandLoadingCommandFooter

両方にあるCommandCommandInputCommandListCommandEmptyCommandGroupCommandSeparatorCommandItemCommandShortcutCommandDialog

HextaUI が追加する props

HextaUI のラッパーが自分で処理し、shadcn/ui のラッパーは処理しない props です。Base UI や下位ライブラリにそのまま渡される props は、どちらのバージョンでも使えるため除いています。

プロパティ内容
formatResultsCommand入力後にスクリーンリーダーへ通知されるテキスト。
highlightCommand各項目の一致した文字をハイライトし、残りを暗くします。
rootTitleCommand最後のページを離れてルートに戻ったときに通知されます。
clearLabelCommandInputクリアボタンのアクセシブルな名前。
backLabelCommandInputページチップのアクセシブルな名前。
minDurationCommandLoading一度表示されたスピナーが最低限とどまる時間(ミリ秒)。
shortcutCommandItem"mod+shift+c" のようなホットキー。項目に表示され、フォーカスがメニュー内にある間、その項目を実行します。
pageCommandItem実行する代わりに、この id を持つ CommandPage を開きます。
pageTitleCommandItemページチップに表示されるタイトル。デフォルトは value です。
confirmCommandItem選択が伝わるよう、実行する前に項目を短く点滅させます。
hotkeyCommandShortcut"mod+k" のようなホットキーを、現在のプラットフォーム向けに整形します。children で上書きできます。
preserveSearchCommandDialogダイアログをマウントしたままにするため、閉じてもクエリ、ページ、選択が維持されます。再び開くと、クエリが選択された状態になります。

HextaUI 版

import {
  IconCalculator,
  IconCalendar,
  IconCreditCard,
  IconMoodSmile,
  IconSettings,
  IconUser,
} from "@tabler/icons-react"

import {
  Command,
  CommandEmpty,
  CommandGroup,
  CommandInput,
  CommandItem,
  CommandList,
  CommandSeparator,
} from "@/components/ui/command"

export function CommandDemo() {
  return (
    <Command highlight className="w-full max-w-sm">
      <CommandInput placeholder="Type a command or search…" />
      <CommandList>
        <CommandEmpty>No results found.</CommandEmpty>
        <CommandGroup heading="Suggestions">
          <CommandItem>
            <IconCalendar />
            Calendar
          </CommandItem>
          <CommandItem>
            <IconMoodSmile />
            Search Emoji
          </CommandItem>
          <CommandItem disabled>
            <IconCalculator />
            Calculator
          </CommandItem>
        </CommandGroup>
        <CommandSeparator />
        <CommandGroup heading="Settings">
          <CommandItem shortcut="mod+p">
            <IconUser />
            Profile
          </CommandItem>
          <CommandItem shortcut="mod+b">
            <IconCreditCard />
            Billing
          </CommandItem>
          <CommandItem shortcut="mod+,">
            <IconSettings />
            Settings
          </CommandItem>
        </CommandGroup>
      </CommandList>
    </Command>
  )
}

すべての状態、キーボード操作、API リファレンスはコンポーネントのページにあります。

このうち 7 個の例には専用のページもあります。

コンポーネントを 1 つ切り替える

add コマンドを --overwrite 付きで実行して @/components/ui の shadcn/ui のファイルを置き換え、残す前に git で差分を確認してください。import はそのままで、置き換えないコンポーネントもそのまま動きます。

pnpm dlx shadcn@latest add https://hextaui.com/r/command.json --overwrite
  • 上の表の props はすべて追加分なので、shadcn/ui 向けに書いた呼び出しではまだ渡されていません。
  • 切り替える前に、shadcn/ui にだけあるパーツやバリアントを確認し、最も近い HextaUI のものに置き換えてください。

ほかのコンポーネントの比較

その他の比較