본문으로 건너뛰기

Chip

태그, 필터, 상태처럼 짧은 값 하나를 담는 작은 토큰입니다. 누르거나 지울 수 있게 만들 수도 있습니다.

tsx
import { Chip } from 'neba';

<Chip>design-system</Chip>
<Chip color="danger" count={12}>오류</Chip>
<Chip onDelete={remove}>typescript</Chip>;

Props

Prop타입기본값설명
localestringBCP 47 태그. 삭제 버튼의 접근성 이름을 이 언어로 씁니다
variant공통'solid' | 'outline' | 'text''outline'표면의 무게. 채움 / 하이라인 / 없음
size공통'xs' | 'sm' | 'md' | 'lg' | 'xl''md'높이와 타입 스케일. 같은 size의 컨트롤보다 한 단계 낮습니다. md 칩은 sm 컨트롤입니다
color공통'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info''primary'의미론적 색 역할. 임의 색상값은 받지 않습니다
density공통'default' | 'compact''default'여백만 바꿉니다. 높이와 글자 크기는 그대로
elevation공통0 | 1 | 2 | 30그림자 깊이. 칩은 다른 것 위에 얹힌 토큰이라 거의 올리지 않습니다
startIconReactNode라벨 앞에 놓이는 내용, 아이콘, 상태 점, 아바타
endIconReactNode라벨 뒤, count 앞에 놓이는 내용
countReactNode끝에 붙는 숫자. 자기 판 위에 그려져 칩 하나로 읽힙니다
onClick(event) => void넘기면 라벨이 진짜 button이 됩니다
onDelete(event) => void넘기면 삭제 버튼이 나타납니다. onClick과 별개의 버튼입니다
deleteLabelstring삭제 버튼의 접근성 이름
selectedbooleanfalse선택됨. 색 계열을 바꾸는 대신 표면을 한 단계 깊게 만듭니다
disabledbooleanfalse사용 불가
childrenReactNode칩의 라벨
transition공통NebaTransitionmount 시 한 번 실행되는 등장 애니메이션 (transition="zoom"). 트리거나 반복이 필요하면 Animate* 컴포넌트로 감싸세요

Chip의 size는 컨트롤 높이보다 한 단계 아래입니다. md Chip은 26px로, Buttonsm과 같은 높이입니다. 콘텐츠 안에 놓이는 토큰과 행의 기준이 되는 컨트롤을 구분하기 위한 것입니다.

예시

variant와 color

startIcon · endIcon · count

startIconendIcon은 라벨 앞뒤에 놓이는 node입니다. count는 별도의 plate 위에 그려져서, "오류 12"가 두 단어가 아니라 숫자가 붙은 토큰 하나로 읽힙니다.

onClick · onDelete · selected

onClick을 주면 Chip 전체가 누를 수 있는 컨트롤이 됩니다. onDelete는 라벨 뒤에 삭제 버튼을 붙입니다. selected는 색 계열을 바꾸지 않고 표면을 한 단계 깊게 만들어 선택 상태를 표시합니다.

size

접근성

  • 겉은 항상 <span>입니다. onClick을 주면 내용을 감싸는 <button>이 생기고, onDelete를 주면 그 옆에 두 번째 <button>이 놓입니다. 두 버튼은 중첩되지 않으므로 각각 키보드로 닿을 수 있습니다.
  • 화면에 Chip이 여러 개일 때는 deleteLabel로 무엇을 지우는지 밝혀 주세요. 기본 라벨만으로는 삭제 버튼들이 서로 구분되지 않습니다.
  • 삭제 버튼의 접근성 이름은 locale이 정합니다. deleteLabel로 직접 쓸 수도 있습니다.

Released under the MIT License