Get startedFoundationsComponentsPatternsRules

Tooltip

툴팁은 마우스를 올리거나 키보드로 포커스했을 때 요소를 짧게 설명하는, 떠 있는 비대화형 라벨이에요.

설치

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

Examples

Default

대상에 마우스를 올리거나 포커스하면 delay(기본 300ms) 뒤에 나타나고, 벗어나면 같은 시간 뒤에 사라져요. 한 줄로 끝나는 짧은 문구와 여러 줄로 넘어가는 긴 문구 모두 최대 너비 240px 안에서 줄바꿈돼요. 이미 다른 툴팁이 보이는 상태에서 옆 대상으로 옮기면 기다리지 않고 바로 바뀌어요.

With keyboard shortcut

shortcut 에 키 배열을 넘기면 내용 아래에 키 단위로 단축키를 보여줘요.

Positioning

Relative to target

position 으로 대상의 위(top), 오른쪽(right), 아래(bottom, 기본), 왼쪽(left)에 띄워요. top-start 처럼 정렬을 붙일 수 있고, 공간이 모자라면 반대쪽으로 자동으로 뒤집혀요.

Relative to mouse pointer

position="mouse" 는 대상 대신 마우스 포인터 옆에 띄워요. 포인터 기준 방향은 mousePosition 으로 정해요. 키보드로 포커스했을 때는 포인터가 없으니 대상 요소를 기준으로 표시해요. mouse-x, mouse-y 는 한 축만 포인터를 따라가요.

Conditional tooltips for truncation

canAppear 가 false 를 돌려주면 툴팁을 띄우지 않아요. 글자가 실제로 잘렸을 때만 전체 제목을 보여줄 때 써요.

Click behavior

기본값에서는 대상을 클릭해도 툴팁이 남아 있어서 "복사됨" 처럼 바뀐 내용을 보여줄 수 있어요. 클릭과 함께 숨기려면 hideTooltipOnClick(또는 누르는 순간 숨기는 hideTooltipOnMouseDown)을 써요.

Ignoring pointer events

ignoreTooltipPointerEvents 를 켜면 툴팁에 pointer-events: none 이 걸려 툴팁이 가린 요소도 클릭할 수 있어요. 대신 툴팁 위로 마우스를 옮겨도 툴팁이 유지되지 않아요.

Customizing tooltip

component 에 TooltipPrimitive 를 바탕으로 만든 컴포넌트를 넘기면 기본 모양 대신 사용해요. 받은 props(위치 데이터 속성, ref 등)는 그대로 전달해야 위치와 애니메이션이 동작해요.

Usage guidelines

툴팁은 트리거(툴팁을 여는 요소), 내용(텍스트 라벨), 선택 사항인 키보드 단축키로 이뤄져요.

언제 쓰나요

  • 아이콘 버튼의 라벨. 아이콘만으로는 뜻이 모호할 때 무엇을 하는 버튼인지 알려줘요.
  • 알면 좋지만 꼭 필요하지는 않은 정보. 키보드 단축키나 짧은 보충 설명처럼요.
  • 잘린 텍스트. 사용자가 입력한 긴 제목처럼 자르기를 피할 수 없을 때 전체 문구를 보여줘요.

언제 쓰지 않나요

  • 라벨만 봐도 뜻이 분명한 버튼. 같은 말을 반복하는 툴팁은 소음이에요.
  • 비활성 요소나 Lozenge 처럼 상호작용하지 않는 요소.
  • 작업에 꼭 필요한 정보. 마우스를 올리지 않아도 보여야 해요. 라벨, 도움말 텍스트, 오류 메시지, Inline message 를 써요.
  • 링크·버튼·아이콘·이미지 같은 상호작용이나 시각 요소. 이럴 때는 Popup 이나 Modal dialog 를 써요.
Do· 아이콘 버튼에 라벨
아이콘만 있는 버튼에 툴팁으로 이름을 알려줘요.
Don't· 뻔한 라벨 반복
"저장" 버튼에 "저장" 툴팁을 달지 않아요.

문구

  • 짧고 분명하게 써요. 툴팁 문구는 잘리지 않아야 하니 처음부터 짧게 써요.
  • 이미 보이는 라벨을 되풀이하지 말고, 더할 정보가 없으면 툴팁을 빼요.
Do· 짧은 보충 정보
"굵게 Ctrl B" 처럼 단축키 같은 부가 정보를 보여줘요.
Don't· 꼭 필요한 정보 숨기기
작업을 끝내는 데 필요한 조건을 툴팁 안에만 두지 않아요.

Accessibility

  • 툴팁은 버튼·링크·메뉴 항목처럼 포커스할 수 있는 요소에만 달아요. 그래야 키보드와 보조 기기 사용자도 볼 수 있어요.
  • 키보드 포커스로도 열리고, Escape 를 누르거나 스크롤하면 바로 닫혀요.
  • 툴팁이 열리면 대상에 aria-describedby 가 걸리고, 내용이 role="tooltip" 으로 스크린 리더에 읽혀요. 대상의 라벨과 툴팁 문구가 같아 두 번 읽힐 때는 isScreenReaderAnnouncementDisabled 로 끌 수 있어요.
  • 키보드 단축키를 툴팁에만 두지 마세요. 보조 기기는 툴팁을 건너뛰기 쉬우니 도움말 패널 같은 곳에도 함께 알려줘요.
  • 툴팁은 발견하기 어렵고 터치 기기에서는 잘 동작하지 않아요. 비활성 버튼의 이유처럼 중요한 내용은 화면에 직접 보여줘요.

Props

Tooltip

Prop

Type

TooltipPrimitive

Prop

Type

On this page