Caroa UI

Command

コマンドパレット風の検索・選択コンポーネント。

インポート

import {
  Command,
  CommandDialog,
  CommandInput,
  CommandList,
  CommandEmpty,
  CommandGroup,
  CommandItem,
  CommandShortcut,
  CommandSeparator,
} from '@caroainc/ui-components/client'

個別サブパス(バンドルサイズを抑えたい場合):

import {
  Command,
  CommandDialog,
  CommandInput,
  CommandList,
  CommandEmpty,
  CommandGroup,
  CommandItem,
  CommandShortcut,
  CommandSeparator,
} from '@caroainc/ui-components/command'

基本的な使い方

Commandは単体でもインライン表示できます(cmdkベースの検索付きリスト)。

Loading...
<Command className="rounded-lg border shadow-md">
  <CommandInput placeholder="検索..." />
  <CommandList>
    <CommandEmpty>結果が見つかりません</CommandEmpty>
    <CommandGroup heading="候補">
      <CommandItem>
        <Icon name="Calendar" size="sm" />
        カレンダー
      </CommandItem>
      <CommandItem>
        <Icon name="Settings" size="sm" />
        設定
      </CommandItem>
      <CommandItem>
        <Icon name="User" size="sm" />
        プロフィール
      </CommandItem>
    </CommandGroup>
    <CommandSeparator />
    <CommandGroup heading="その他">
      <CommandItem>
        <Icon name="HelpCircle" size="sm" />
        ヘルプ
      </CommandItem>
    </CommandGroup>
  </CommandList>
</Command>

コマンドパレット(CommandDialog)

CommandDialogDialogをベースにしたコマンドパレットです。⌘Kのようなショートカットで 開閉するUIによく使われます。ショートカットの表示にはCommandShortcutを使います。

Loading...
const [open, setOpen] = useState(false)
 
<Button variant="outline" onClick={() => setOpen(true)}>
  <Icon name="Search" size="sm" />
  コマンドを開く
</Button>
<CommandDialog open={open} onOpenChange={setOpen} title="コマンドパレット" description="コマンドを検索して実行します">
  <CommandInput placeholder="検索..." />
  <CommandList>
    <CommandEmpty>結果が見つかりません</CommandEmpty>
    <CommandGroup heading="候補">
      <CommandItem onSelect={() => setOpen(false)}>
        <Icon name="Calendar" size="sm" />
        カレンダー
      </CommandItem>
      <CommandItem onSelect={() => setOpen(false)}>
        <Icon name="Settings" size="sm" />
        設定
        <CommandShortcut>⌘S</CommandShortcut>
      </CommandItem>
    </CommandGroup>
  </CommandList>
</CommandDialog>

Props

Command

PropTypeDefaultDescription
classNamestring-追加のCSSクラス

cmdkCommand(Root)のpropsをそのまま受け取ります(loopfiltershouldFilterなど)。

CommandDialog

PropTypeDefaultDescription
openboolean-開閉状態(制御コンポーネント)
onOpenChange(open: boolean) => void-開閉変更時のコールバック
titlestring'Command Palette'アクセシビリティ用タイトル(sr-onlyで非表示表示)
descriptionstring'Search for a command to run...'アクセシビリティ用説明文(sr-onlyで非表示表示)
showCloseButtonbooleanfalse右上の閉じるボタンを表示するか
classNamestring-追加のCSSクラス

CommandInput

PropTypeDefaultDescription
placeholderstring-検索入力欄のプレースホルダー
valuestring-検索文字列(制御コンポーネント)
onValueChange(value: string) => void-検索文字列変更時のコールバック

CommandList

PropTypeDefaultDescription
classNamestring-追加のCSSクラス(最大高さは`max-h-[300px]`で内部スクロール)

CommandEmpty

PropTypeDefaultDescription
childrenReactNode-検索結果が0件のときに表示するコンテンツ

CommandGroup

PropTypeDefaultDescription
headingReactNode-グループの見出し
classNamestring-追加のCSSクラス

CommandItem

PropTypeDefaultDescription
onSelect(value: string) => void-選択された時のコールバック
valuestring-検索・フィルタ対象になる値(省略時はテキスト内容を使用)
disabledbooleanfalse無効状態

CommandSeparator

PropTypeDefaultDescription
classNamestring-追加のCSSクラス

CommandShortcut

PropTypeDefaultDescription
childrenReactNode-ショートカットキー表示(例: ⌘K)
classNamestring-追加のCSSクラス

On this page