Get StartedFoundationsComponentsPatternsRulesDevelopAI & ToolsUpdates

Popover

트리거에 앵커링되어 화면 위에 떠 있는 컨테이너예요. Header/Body/Footer 구조로 부가 정보나 액션을 보여줘요.

설치

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

Anatomy

Popover는 Container 안에 Header, Body, Footer를 담고, 우측 상단에 Close Button을 가질 수 있어요.

  • Header: Title과 Description을 담아요. Close Button이 있으면 오른쪽에 여백을 확보해요.
  • Body: 본문이에요. 내용이 넘치면 Body만 스크롤돼요.
  • Footer: 확인, 취소 같은 액션을 담아요.
  • Close Button: Popover를 닫는 버튼이에요.
<PopoverRoot>
  <PopoverTrigger asChild>...</PopoverTrigger>
  <PopoverContent title="제목" description="설명">
    <PopoverBody>...</PopoverBody>
    <PopoverFooter>
      <PopoverAction>확인</PopoverAction>
    </PopoverFooter>
  </PopoverContent>
</PopoverRoot>

Properties

Placement

PopoverRoot 에 placement 를 지정해 트리거 기준 위치를 정해요. 기본값은 bottom 이에요. 트리거와 Popover 사이는 x2(8px) 간격을 두고, 뷰포트 경계를 벗어나면 자동으로 뒤집히거나(Flip) 이동해요(Shift). Popover는 화면 끝에서 최소 x4(16px) 안쪽에 배치돼요.

Show Close Button

PopoverContent 의 showCloseButton 으로 닫기 버튼 표시 여부를 정해요. 기본값은 true 이고, 표시될 때 Header 오른쪽에 여백이 확보돼요.

Scroll

Popover의 최대 높이는 600px이에요. 이보다 긴 내용은 PopoverBody 가 스크롤돼요. 내용이 실제로 넘칠 때만 하단에 scroll fog가 보이고, Header 아래 Body를 스크롤하면 상단에 구분선이 나타나요. 뷰포트가 작으면 최대 높이는 가용 높이에 맞춰 줄어들어요.

Anchor

PopoverAnchor 를 쓰면 트리거와 분리된 요소를 기준으로 위치를 잡을 수 있어요. 이때 열림 상태는 open 으로 직접 제어해요.

Prevent Close

PopoverAction 은 누르면 Popover를 닫아요. onClick 에서 e.preventDefault() 를 호출하면 닫히지 않아요.

Guidelines

크기

Popover의 너비는 최소 320px, 최대 480px이고 높이는 최대 600px이에요. 화면이 좁으면 가용 공간에 맞춰 줄어들어요. 많은 내용을 담아야 한다면 Popover 대신 Dialog나 Bottom Sheet를 고려해요.

닫기

  • 바깥 영역을 누르거나 Escape 키를 누르면 닫혀요. 꼭 확인해야 하는 내용이라면 closeOnInteractOutside={false} 로 바깥을 눌러도 닫히지 않게 해요.
  • Close Button을 숨긴다면 Footer에 닫을 수 있는 액션을 꼭 둬요.
알림을 켤까요?새 채팅 소식을 받아요.
켜기
Do· Header와 액션을 함께

제목으로 맥락을 알려주고, 필요한 액션은 Footer에 둬요.

새 채팅 소식을 받으려면 알림을 켜야 해요.
Don't· 닫을 방법이 없음

Close Button도 액션도 없으면 사용자가 Popover를 닫는 방법을 알기 어려워요.

접근성

Popover는 열릴 때 콘텐츠로 포커스를 옮기지만 가두지 않아요. title 이 없다면 PopoverContent 에 aria-label 을 꼭 지정해요.

Props

PopoverRoot

Prop

Type

PopoverContent

Prop

Type

PopoverAction

Prop

Type

On this page