Get startedFoundationsComponentsPatternsRules

Tag

태그는 카테고리·주제 같은 메타데이터를 라벨로 붙여 빠르게 훑어보고 찾아가게 도와요.

설치

pnpm dlx shadcn@latest add https://rebar.conmarket-landing.workers.dev/r/steel/tag.json

Examples

Default

기본 Tag 는 text 가 필수이고 제거 버튼이 기본으로 붙어요. 여러 개를 둘 때는 Tag Group 으로 감싸요.

Add a tag

제거 버튼을 누르면 태그 자리가 100ms 동안 접히며(그리드 열 1fr → 0fr + 페이드 아웃) 사라지고, 모션이 끝난 뒤 onAfterRemoveAction(text) 이 불려요. 옆 태그들은 접히는 동안 자연스럽게 자리를 채워요. Tag Group 안에 나중에 추가된 태그는 반대로 150ms 동안 펼쳐지며(0.8fr → 1fr + 페이드 인) 들어와요. 모션 중에는 최종 상태에서 말줄임이 필요할 때만 말줄임표를 보여줘요. onBeforeRemoveAction 이 false 를 돌려주면 제거를 막을 수 있어요. 제거 버튼의 접근성 이름은 removeButtonLabel 뒤에 text 를 이어 붙여 만들어져요.

Colors

color 는 테두리, 앞 아이콘, 트레일링 메트릭 배경, 스와치 색에 쓰여요. 배경은 모두 투명하고 글자는 기본 텍스트 색이라, 색이 튀지 않고 분류만 도와요. 이전 이름(standard, grey, blueLight 등)도 같은 색으로 바뀌어 그려져요.

href 를 주면 태그가 링크가 돼요. 마우스를 올리면 배경이 바뀌고 텍스트에 밑줄이 생겨요. 라우터 링크를 쓰려면 linkComponent 로 넘겨요.

Non-removable

isRemovable={false} 면 제거 버튼이 없어요. SimpleTag 도 같은 결과지만 Atlaskit 에서 deprecated 라 Tag 를 쓰는 걸 권장해요.

With icon

elemBefore 로 텍스트 앞에 아이콘을 넣어요. 아이콘은 12px 로 맞춰지고 태그 색의 accent 아이콘 색을 써요.

링크와 아이콘을 함께 쓸 수 있어요. 링크에 마우스를 올리면 아이콘 색이 대비가 더 높은 텍스트 색으로 바뀌어요.

Max width

기본 최대 너비는 180px 이에요. maxWidth 로 바꾸면 넘는 텍스트가 말줄임표로 잘려요.

Trailing metric

trailingMetric 으로 텍스트 뒤에 짧은 숫자나 값을 붙여요. 배경은 태그 색의 subtler 톤이에요.

Swatch before

swatchBefore 로 12px 색 스와치를 앞에 둬요. true 면 태그 color 의 accent subtle 색을, 문자열이면 그 값(예: var(--ds-background-accent-orange-subtle))을 써요. 색에 의미가 있다면 swatchBeforeLabel 과 swatchBeforeRole="img" 를 함께 줘요.

필터처럼 태그에서 팝업을 열어야 하면 TagDropdownTrigger 를 써요. 끝에 아래 화살표가 붙고(hasChevron), 선택되면 파란 선택 스타일로 바뀌어요.

Usage guidelines

태그는 정보를 분류하고 정리해요. 카테고리, 속성, 주제처럼 훑어보기와 필터링을 돕는 우선순위가 낮은 메타데이터에 써요. 워크플로 상태, 시스템 상태, 우선순위, 권한처럼 중요한 속성은 더 눈에 띄는 Lozenge 를 써요.

Do· 대상에 대한 정보
이슈·문서 같은 대상의 카테고리와 주제를 태그로 붙여요.
Don't· 상태 표시
"진행 중", "완료" 같은 상태를 태그로 표시하지 않아요. 로젠지를 써요.
Do· 목록·메타 영역에
태그는 태그 그룹으로 묶어 메타데이터 영역에 둬요.
Don't· 본문 안에
문단이나 편집기 본문 같은 긴 글 안에 태그를 섞지 않아요.
  • 사람, 팀, 프로젝트, 스페이스를 태그로 표시하지 않아요. 아바타가 들어간 전용 태그가 더 맞아요.
  • 태깅 개념을 가리킬 때는 "태그"라는 말과 해시(#) 아이콘을 일관되게 써요. "레이블" 같은 다른 이름을 섞지 않아요.
  • swatchBefore 는 에픽·상위 항목처럼 색이 길찾기에 의미가 있을 때만 써요. 눈에 띄게 하려고 쓰지 않아요.
  • 라벨이 줄바꿈되지 않게 하고, 사용자가 만든 텍스트가 아니라면 잘리지 않을 만큼 짧게 써요.

Accessibility

  • 링크 태그는 Tab 으로 링크에 포커스가 가면 태그 전체에 포커스 링이 그려지고, Enter 로 이동해요.
  • 제거 버튼은 별도의 button 이라 Tab 으로 따로 포커스돼요. Enter·Space 로 제거하고, 스크린리더에는 "제거 프론트엔드"처럼 동작과 태그 이름이 함께 읽혀요. removeButtonLabel 로 앞부분을 바꿀 수 있어요.
  • 의미 있는 스와치에는 swatchBeforeLabel 과 swatchBeforeRole 을 함께 줘야 보조 기술에 전달돼요. 둘 중 하나만 있으면 장식으로 취급해요.
  • TagDropdownTrigger 는 button 이에요. 여는 팝업에 맞춰 aria-haspopup, aria-expanded, aria-controls 를 넘겨요. 로딩 중에는 aria-busy 가 붙고 클릭이 막혀요.

Props

Tag

RemovableTag 는 Tag 와 같고, SimpleTag 는 제거 관련 props 를 뺀 같은 컴포넌트예요.

Prop

Type

TagDropdownTrigger

Tag 의 props 중 링크·제거 관련을 뺀 것에 아래가 더해져요.

Prop

Type

On this page