마크다운으로 복사링크 공유

팝오버

버튼 아래에 붙어 뜨는 창이에요. 바깥을 누르거나 Esc를 누르면 닫혀요.

모바일PCPopover · MenuItem관련 칩 · 버튼 · 검색 입력

고르기#

이 부품을 언제 쓰고, 언제 다른 것을 쓰는지예요.

언제 쓰나#

  • 눌러서 여는 작은 메뉴·설명.

쓰지 말아야 할 때 · 대신 쓸 것#

  • 화면 절반을 넘는 내용 → 시트

사용 예제#

할 일마다 실물과 코드예요. 편집을 누르면 코드를 고쳐 바로 볼 수 있어요.

정렬 메뉴 열기#

눌러 열고, 바깥을 누르거나 Esc로 닫아요.

오른쪽 끝에 맞추기#

화면 오른쪽에 붙은 버튼은 창의 오른쪽 끝을 맞춰요.

해부도#

  1. 1

    기준 버튼

    창은 이 버튼 바로 아래 6px에 떠요.

  2. 2

    창

    페이지 맨 끝에 붙어 그려져 잘리지 않아요.

  3. 3

    메뉴 줄

    MenuItem이에요. 고른 줄은 브랜드 면이에요.

속성#

MenuItem State#

고른 줄은 브랜드 면, 나머지는 올리면 회색 면이에요.

인터페이스#

타입에서 자동으로 뽑은 표예요.

Popover#

속성기본값타입설명
open*-boolean열렸는지예요.
onClose*-() => void닫아야 할 때 불러요.
anchorRef*-RefObject<HTMLElement | null>창을 붙일 기준 요소예요.
align'start''center' | 'start' | 'end'가로 맞춤 - 트리거 왼쪽(start)·오른쪽(end)·가운데(center)
placement'below''below' | 'auto'below(기본) · auto = 아래 자리가 모자라고 위가 넉넉하면 트리거 위로 연다(화면 아래쪽 레인의 메뉴 - AI 캔버스)
gap6number
w-number창의 폭(px)이에요.
role'menu'string창의 역할이에요.
autoFocustrueboolean열리면 초점을 창 안으로(메뉴는 첫 줄, 그 밖은 첫 초점 가능 요소). 기본 true
className-string배치용 클래스예요. 모양(색·크기)은 덮어쓰지 않아요.
children*-ReactNode안에 그릴 내용이에요.

MenuItem#

속성기본값타입설명
active-boolean골랐는지예요. 주면 aria-pressed로 알려요.
onClick-() => void누르면 불러요.
className-string배치용 클래스예요. 모양(색·크기)은 덮어쓰지 않아요.
children*-ReactNode안에 그릴 내용이에요.

* 필수예요. 표는 타입에서 자동으로 뽑았어요.

스펙#

상태 · 슬롯마다 실제로 그려지는 값이에요.

Popover#

base

상태슬롯속성값
enabledroot모서리radius-xl
테두리 두께1px
테두리 색line
배경색bg

MenuItem#

base

상태슬롯속성값
enabledroot폭100%
줄바꿈안 함
모서리radius-md
좌우 여백10px
위아래 여백8px
글자 크기t-label
굵기700
전환 대상색·눌림 크기
pressedroot크기 배율(기본)0.975 · 버튼 공통 규칙

active=true

상태슬롯속성값
enabledroot배경색brand-soft
글자색brand-ink

active=false

상태슬롯속성값
enabledroot글자색sub
hoverroot배경색hover

값은 컴포넌트 코드에서 뽑았고, 토큰 이름을 누르면 파운데이션으로 가요. 토큰이 없는 값만 숫자로 적었어요.

접근성#

역할과 속성#

요소역할 · 속성
Popoverrole="menu"(기본, role로 바꿔요)
MenuItembutton · role="menuitem"

키보드#

키동작
열기첫 메뉴 줄(메뉴가 아니면 첫 초점 가능 요소)로 초점이 가요
↑ ↓ · Home · End메뉴 줄을 옮겨요
Esc닫고 연 버튼으로 초점을 돌려줘요
Tab창 밖으로 나가면 닫혀요
바깥 누르기닫아요

화면 읽기 프로그램#

  • 메뉴가 아닌 내용(설정·설명)이면 role="dialog"로 바꿔요.

초점#

  • 모달이 아니라 초점을 가두지 않아요. 자동 초점을 끄려면 autoFocus={false}예요.

가이드라인#

이렇게 써요#

쓰는 규칙#

이렇게 써요

  • 열림 상태와 기준 버튼(anchorRef)만 부모가 쥐어요.
  • 메뉴 한 줄은 MenuItem을 써요.

문구#

  • 메뉴 줄은 결과의 이름으로 적어요("가격 높은 순").

플랫폼별 차이#

플랫폼별 차이
플랫폼차이
모바일

PC와 같은 모양이에요. 글자 역할만 폰 크기로 바뀌어요.

PC

마우스가 있는 기기에서만 hover가 켜지고, 키보드 초점 링이 보여요.