Chip
Chip은 정보 표시, 태그 설정, 필터 선택 등을 위한 작고 둥근 인터페이스 요소입니다.
- 다양한 스타일 변형과 크기를 지원합니다
- 아이콘과 텍스트 조합 또는 아이콘만 사용할 수 있습니다
- 버튼처럼 클릭 가능한 요소로 구현됩니다
Installation
npx @jongh/cli add chip
Usage
Chip 컴포넌트는 클릭 가능한 태그나 필터를 표시하는 데 사용됩니다.
Props
variant
("filled" | "outlined"
): 칩의 스타일 변형을 지정합니다. 기본값은"filled"
입니다.size
("sm" | "md"
): 칩의 크기를 지정합니다. 기본값은"md"
입니다.layout
("withText" | "iconOnly"
): 텍스트 포함 여부를 지정합니다. 기본값은"withText"
입니다.asChild
(boolean
): Radix UI의 Slot 패턴을 사용하여 다른 요소로 렌더링할지 여부를 지정합니다. 기본값은false
입니다.
기본 button
요소의 모든 속성(onClick, disabled 등)도 지원합니다.
Variant
Chip 컴포넌트는 다음 변형을 지원합니다:
filled
: 색상이 채워진 배경을 가진 칩입니다.outlined
: 테두리만 있는 칩입니다.
Size
Chip 컴포넌트는 두 가지 크기를 지원합니다:
sm
: 작은 크기의 칩입니다.md
: 중간 크기의 칩입니다.
Layout
Chip 컴포넌트는 다음 레이아웃을 지원합니다:
withText
: 텍스트와 아이콘을 함께 표시할 수 있습니다.iconOnly
: 아이콘만 표시하며, 정사각형 형태가 됩니다.
Accessibility
Chip 컴포넌트는 기본적으로 button
요소를 기반으로 하여 다음과 같은 접근성 기능을 제공합니다:
- 키보드 접근성: Enter 또는 Space 키로 활성화할 수 있습니다.
- 적절한
role="button"
설정이 되어 있습니다. - 아이콘만 사용할 경우 적절한
aria-label
을 제공해야 합니다.
Example
기본 사용 예시
import { Chip } from "@/components/chip"
import { CheckIcon } from "lucide-react"
const ChipExample = () => (
<div>
<Chip onClick={() => console.log("clicked")}>확인</Chip>
<Chip variant="outlined">선택</Chip>
<Chip disabled>비활성화</Chip>
</div>
)
아이콘 사용 예시
import { Chip } from "@/components/chip"
import { PlusCircleIcon, CheckIcon } from "lucide-react"
const ChipWithIconExample = () => (
<div>
{/* 아이콘만 사용하는 예시 */}
<Chip layout="iconOnly" aria-label="추가">
<PlusCircleIcon />
</Chip>
{/* 접두 아이콘과 함께 사용하는 예시 */}
<Chip>
<CheckIcon />
완료
</Chip>
{/* 접미 아이콘과 함께 사용하는 예시 */}
<Chip>
선택됨
<CheckIcon />
</Chip>
</div>
)
크기 변형 예시
import { Chip } from "@/components/chip"
const ChipSizeExample = () => (
<div>
<Chip size="md">중간 크기</Chip>
<Chip size="sm">작은 크기</Chip>
</div>
)