Get startedFoundationsComponentsPatternsRules

Breadcrumbs

브레드크럼은 계층 구조 안에서 현재 위치를 보여주고 상위 페이지로 돌아가게 해줘요.

설치

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

Examples

Default

Breadcrumbs 안에 BreadcrumbsItem 을 순서대로 넣어요. 항목 사이에는 text.subtlest 색의 / 구분자가 들어가고, 마지막 항목은 현재 페이지(aria-current="page")로 표시돼요. href 가 있으면 링크, 없으면 버튼으로 렌더링돼요. 항목은 24px 높이에 text.subtlest 글자색이고, hover 때 같은 색 밑줄이 50ms 로 나타나고 누르면 text 색으로 진해져요.

Current item

마지막 항목을 BreadcrumbsCurrentItem 으로 두면 현재 페이지가 text 색으로 진하게 보이고, 마우스를 올리거나 포커스하면 옆에 링크 복사 버튼이 나타나요. 복사하면 2초 동안 체크 아이콘과 "링크 복사됨" 라벨로 바뀌어요. href 는 필수예요.

Truncation

새 탐색 경로는 항목 개수가 아니라 너비를 기준으로 접혀요. 모든 항목의 실제 너비를 한 번 잰 뒤, 영역보다 넓으면 넘치는 만큼만 … 메뉴(작은 subtle 아이콘 버튼)로 접어요. 메뉴를 열면 접힌 항목이 순서대로 나오고, 고르면 그 페이지로 이동해요.

Collapse order

가운데 항목부터 바깥쪽으로 하나씩 접혀요. 첫 항목과 마지막 항목은 끝까지 남고, 그래도 들어가지 않으면 첫 항목까지 접어서 … 와 마지막 항목만 보여줘요. 항목이 2개 이하면 접지 않아요.

Responsive width

영역 크기가 바뀌면 ResizeObserver 로 다시 계산해요. 아래 버튼으로 너비를 바꿔 보세요.

레거시 접기 props

maxItems, itemsBeforeCollapse, itemsAfterCollapse, isExpanded, defaultExpanded 는 이전 버전과의 호환을 위해 받기만 하고 쓰지 않아요. onExpand 는 … 버튼을 누를 때 계속 불려요.

With icons

iconBefore(또는 elemBefore)로 항목 텍스트 앞에 아이콘을 넣어요. 아이콘은 24px 영역 안에 icon.subtlest 색으로 그려지고, 링크 안에 함께 들어가서 같이 눌려요.

Size

size="small" 은 font.body.small(12px) 을 써요. 밀도가 높은 헤더나 패널에 어울려요.

Truncation width

truncationWidth 를 지정하면 그 너비(px)를 넘는 긴 텍스트를 말줄임하고, 전체 텍스트는 title 로 보여줘요. 앞 아이콘이 있으면 아이콘 너비(24px + 2px, small 은 24px)를 따로 더해서 텍스트 예산이 줄지 않아요.

Usage guidelines

브레드크럼은 계층이 깊은 페이지에서 각 단계를 링크로 보여주는 보조 내비게이션이에요. 외부 링크로 바로 들어온 사람도 지금 어디에 있는지 알 수 있어요.

이럴 때 써요

  • 스페이스 › 페이지 › 하위 페이지처럼 중첩된 구조를 탐색할 때
  • 페이지 계층이 많은 큰 사이트나 복잡한 앱에서 현재 위치를 알려줄 때
  • 사람들이 외부에서 깊은 페이지로 바로 들어올 가능성이 클 때
Do· 제목 위 왼쪽
브레드크럼은 페이지 제목 위, 왼쪽 위에 둬요.
Don't· 주 내비게이션 대체
브레드크럼은 주 내비게이션을 보조할 뿐 대신하지 않아요.
  • 화면을 압도하지 않게 조용히 두고, 좁은 곳에서는 자동으로 접히게 둬요.
  • 현재 페이지는 BreadcrumbsCurrentItem 으로 두면 링크를 바로 복사할 수 있어요.
  • 사이드 내비게이션이 펼쳐져 있으면 최상위 단계는 생략해도 돼요.
  • 항목 이름은 해당 페이지나 섹션 제목과 정확히 같게 써요.
  • 액션이나 다음 단계 실행에는 브레드크럼 대신 Button 을 써요.

Accessibility

  • <nav aria-label> 과 <ol> 목록으로 렌더링돼요. label 로 nav 이름을 바꿀 수 있어요 (기본 "탐색 경로").
  • 구분자 / 는 CSS 로 그려지고 대체 텍스트가 비어 있어 스크린 리더가 읽지 않아요. 구분자도 주변 텍스트와 같은 대비를 가져요.
  • 마지막 항목에 aria-current="page" 가 자동으로 붙어요.
  • 마지막 항목이 BreadcrumbsCurrentItem 이면 그 링크가 직접 aria-current="page" 를 가져요.
  • 접힌 항목은 목록 항목 하나(… 메뉴 버튼)로 취급돼요. 버튼 이름은 ellipsisLabel 로 바꿀 수 있어요 (기본 "경로 더 보기").
  • … 버튼은 Enter·Space·아래 화살표로 메뉴를 열고, 위아래 화살표로 접힌 항목을 오가요. Esc 로 닫으면 버튼으로 포커스가 돌아와요.
  • 링크 복사 버튼은 hover 때만 보이지만 Tab 으로 포커스하면 항상 나타나요.

Props

Prop

Type

Prop

Type

Prop

Type

On this page