Get startedFoundationsComponentsPatternsRules

Empty State

빈 상태는 보여줄 데이터가 없을 때 그 이유와 다음에 할 일을 알려줘요.

설치

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

Examples

Basic

header 만 필수예요. 짧은 상황에서는 제목과 설명만으로 충분해요.

Illustration

imageUrl 로 이미지를 넣거나, renderImage 로 직접 그린 요소를 넣어요. Steel 은 토큰 색으로 그린 선화 EmptyStateIllustration 을 함께 제공해요. 장식용이라 스크린 리더에서는 숨겨져요.

No results

검색·필터 결과가 없을 때는 중립적인 어조로 쓰고, 결과를 다시 얻을 방법을 액션으로 알려줘요.

Width

기본 wide 는 최대 464px, narrow 는 최대 304px 이에요. 기본 너비보다 좁은 패널·팝업에는 narrow 와 headingSize="xsmall" 을 함께 써요.

Loading

isLoading 을 켜면 액션 오른쪽에 스피너가 나타나요. 스피너 자리를 미리 비워 두기 때문에 버튼 위치가 흔들리지 않아요.

Tertiary action

primaryAction, secondaryAction 은 보조 → 주요 순서로 묶여 표시돼요. 도움말처럼 다른 곳으로 보내는 링크는 tertiaryAction 으로 버튼 묶음 아래에 둬요. 문서 구조에 맞게 headingLevel 로 제목 레벨(기본 h4)을 바꿀 수 있어요.

Usage guidelines

빈 보드, 다 비운 알림함, 결과가 없는 검색처럼 보여줄 데이터가 없는 화면에 써요. 화면 전체를 채울 수도 있고 패널·표 같은 컨테이너 안에 넣을 수도 있어요. "페이지를 찾을 수 없어요" 같은 일부 오류 화면에도 쓸 수 있어요.

구성

  1. 일러스트 (선택) — 메시지와 관련 있는 작은 그림
  2. 제목 (필수) — 지금 상태를 짧게 설명
  3. 설명 (선택) — 왜 이 화면이 보이는지, 다음에 무엇을 하면 되는지
  4. 버튼 (선택) — 다음 단계로 가거나 화면을 닫는 액션

상황별 어조

상황어조
처음 쓰거나 아직 비어 있을 때기대감을 주고 시작 방법을 알려줘요.
할 일을 모두 끝냈을 때축하하는 문구와 그림을 써요.
검색 결과가 없을 때중립적으로 쓰되 다음 행동을 안내해요.
Do· 다음 행동을 알려주기
빈 화면에서 무엇을 하면 되는지 관련 액션을 하나 이상 둬요.
Don't· primary 버튼 여러 개
한 화면에 primary 버튼을 여러 개 두지 않아요.
Do· 관련 있는 일러스트만
메시지와 어울리고 중립적이거나 유쾌한 그림을 써요.
Don't· 큰 그림을 억지로 줄이기
좁은 공간에서는 큰 그림을 줄이지 말고 아예 빼요. 다른 시각 요소와 경쟁할 때도 마찬가지예요.
  • 제목과 설명은 짧게 써요. 사람들은 훑어 읽어요.
  • 버튼 문구는 "만들기", "다시 시도", "지우기" 처럼 동사로 짧게 써요.
  • 가능하면 그 자리에서 바로 알려주고, 꼭 다른 곳으로 보내야 할 때만 tertiaryAction 링크를 써요.
  • 문화권에 따라 다르게 읽힐 수 있는 비유나 부정적인 이미지는 피해요.

Accessibility

  • 제목은 실제 heading 요소(기본 h4)로 렌더돼요. 페이지의 heading 구조에 맞게 headingLevel 을 조정해요.
  • imageUrl 이미지와 EmptyStateIllustration 은 장식용으로 처리돼 스크린 리더가 읽지 않아요. 그림이 정보를 담는다면 renderImage 로 대체 텍스트가 있는 요소를 넣어요.
  • 주요·보조 액션이 함께 있으면 role="group" 으로 묶여요. buttonGroupLabel 로 그룹 이름을 지정해요.
  • 링크 문구는 이동할 곳을 알 수 있게 써요. 쉬운 말을 쓰고 전문 용어는 피해요.

Props

Prop

Type

EmptyStateIllustration

Prop

Type

On this page