본문으로 건너뛰기
Amineslab UI

Component

Command

검색·명령 팔레트를 구성하는 cmdk 기반 compound primitive입니다.

Playground

옵션을 조절하며 화면과 사용 코드를 함께 확인하세요.

PC 1280px
Controls
Code
import { useState } from 'react'

import { Button, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem } from '@amineslab/ui'

function CommandExample({ shouldFilter = true, scrollable = true, title = '명령 검색', description = '실행할 작업을 선택하세요.', } = {}) {
    const [open, setOpen] = useState(false);
    return (<>
      <Button variant="outline" onClick={() => setOpen(true)}>
        검색 열기
      </Button>
      <CommandDialog shouldFilter={shouldFilter} title={title} description={description} open={open} onOpenChange={setOpen}>
        <CommandInput placeholder="기능 검색"/>
        <CommandList scrollable={scrollable}>
          <CommandEmpty>결과가 없습니다.</CommandEmpty>
          <CommandGroup heading="빠른 이동">
            <CommandItem value="settings" onSelect={() => setOpen(false)}>
              설정
            </CommandItem>
            <CommandItem value="members" onSelect={() => setOpen(false)}>
              멤버
            </CommandItem>
          </CommandGroup>
        </CommandList>
      </CommandDialog>
    </>);
}

export default function ExamplePreview() {
  return (<CommandExample {...({"title":"명령 검색","description":"실행할 작업을 선택하세요.","shouldFilter":true,"scrollable":true} as const)}/>)
}

Props

import {
  Command,
  CommandDialog,
  CommandInput,
  CommandList,
  CommandEmpty,
  CommandGroup,
  CommandItem,
  // ...
} from '@amineslab/ui'

CommandDialog

접근 가능한 검색 Dialog입니다.

NameTypeDefaultDescription
titlestring'검색'스크린리더용 제목입니다.
descriptionstring-스크린리더용 설명입니다.
shouldFilterbooleantruecmdk의 기본 필터를 사용할지 정합니다.

CommandList

검색 결과의 스크롤 경계를 정합니다.

NameTypeDefaultDescription
scrollableboolean-문서형 Dialog에서는 ScrollArea를 사용합니다.
viewportClassNamestring-실제 스크롤 viewport에 추가할 클래스입니다.
labelstring'검색 결과'결과 listbox의 접근 가능한 이름입니다. 내부 접근성 이름으로 사용합니다.

Examples

자주 쓰는 조합을 살펴보고, 필요한 예시의 코드를 펼쳐 확인하세요.

사용 기준

권장하는 사용
  • CommandDialog로 감싸면 넓은 화면에서는 접근 가능한 Dialog와 ScrollArea, 모바일에서는 full-page Drawer와 네이티브 목록 스크롤이 연결됩니다.
  • 단독 Command는 Combobox와 같이 Drawer 본문에 넣을 때 네이티브 스크롤을 유지해 시트의 드래그 닫힘 판정과 충돌하지 않도록 합니다.
피해야 할 사용
  • 겉모양만으로 사용을 결정하지 마세요.
  • 의미와 키보드 동작, 모바일에서의 흐름을 함께 확인하세요.

접근성

화면에 맞는 이름을 제공하고, 키보드만으로 작업을 마칠 수 있는지 확인하세요.

  • Arrow Up / Down: 결과를 이동합니다.
  • Enter: 현재 명령을 실행합니다.
  • Escape: 팔레트를 닫고 진입 트리거로 돌아갑니다.