Get startedFoundationsComponentsPatternsRules

Drawer

드로어는 화면 옆에서 밀려 나와, 페이지를 떠나지 않고 보조 작업을 하게 해주는 패널이에요.

설치

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

대부분의 경우에는 Modal Dialog 를 먼저 고려해요

원본 디자인 시스템은 드로어를 앞으로 정리할 예정이라고 안내하고, 대부분의 작업에 Modal Dialog 를 권장해요.

Examples

Default

isOpen 으로 열고 닫고, onClose 에서 상태를 바꿔요. 안쪽은 DrawerSidebar(64px 사이드바)와 DrawerContent(본문)로 구성하고, 사이드바에 DrawerCloseButton 을 넣어요. 보이는 제목이 없으면 label 로 이름을 붙여요.

Width

width 로 미리 정한 크기를 골라요.

Width크기
narrow360px (기본값)
medium480px
wide600px
extended화면의 95%
full화면 전체

Enter from

기본은 왼쪽에서 들어와요. enterFrom="right" 를 주면 오른쪽에 붙어서 오른쪽에서 들어와요.

Composition

DrawerSidebar, DrawerContent 는 className 으로 배경·패딩을 바꿀 수 있어요. DrawerCloseButton 의 icon 으로 닫기 아이콘을 바꾸고, titleId 로 보이는 제목을 드로어 이름으로 연결해요.

Usage guidelines

드로어는 화면 옆에서 밀려 나오는 모달 패널이에요. 지금 작업 중인 페이지에 머문 채 보조 작업을 끝내야 할 때 써요. 일반 모달처럼 흐름을 끊기 때문에 아껴 써요. 더 큰 작업이라면 별도 페이지나 비모달 패널을 고려해요.

Do· 보조 작업
현재 페이지를 유지한 채 끝낼 수 있는 보조 작업에 써요.
Don't· 큰 작업·새 흐름
주요 작업이나 새 워크플로를 드로어에 담지 마세요.
Do· 꼭 필요한 크기
대부분은 narrow~wide 로 충분해요.
Don't· 이유 없는 extended·full
화면을 거의 다 덮으면 모달이 열린 줄 모르고 자기 위치를 잃기 쉬워요.
  • 드로어가 열려 있는 동안 뒤 화면은 상호작용하거나 포커스할 수 없어요. 뒤 내용을 참고해야 하는 작업은 드로어에 넣지 않아요.
  • 닫는 방법은 세 가지예요: 닫기(뒤로) 버튼, Esc, 블랭킷 클릭.

Accessibility

  • 이름은 필수예요. 보이는 제목 요소에 id 를 주고 titleId 로 연결하는 방법을 권장해요. 보이는 제목이 없으면 label 을 써요. 둘 다 없으면 "드로어" 라는 기본 이름이 붙어요.
  • 포커스: 열리면 첫 번째 요소로 포커스가 가고(autoFocusFirstElem), 닫힐 때까지 드로어 안에 갇혀요(isFocusLockEnabled). 닫히면 드로어를 연 요소로 돌아가요(shouldReturnFocus).
  • 본문이 넘치면 DrawerContent 가 scrollContentLabel 이름의 region 이 되어 키보드로 스크롤할 수 있어요.
  • 드로어는 role="dialog" 로 렌더링되고, 포커스 잠금이 켜져 있으면 aria-modal="true" 가 붙어요.

Props

Drawer

Prop

Type

DrawerSidebar · DrawerContent · DrawerCloseButton

Prop

Type

On this page