컬렉션 상태 화면

하나의 목록 영역에서 loading, 결과, empty, error 상태를 일관되게 설명합니다.

실제 미리보기

문서 목록

공개 상태와 최근 수정일을 확인합니다.

사용할 때

사용 기준

표나 목록이 비동기 데이터를 기다리고 여러 결과 상태를 가질 때 사용합니다.

사용하지 않을 때

즉시 표시되는 정적 콘텐츠나 단일 폼 제출 결과에는 사용하지 않습니다.

구조

  1. 컬렉션 이름과 범위

  2. 현재 상태의 본문

  3. 상태별 다음 동작

  4. 결과가 있을 때의 페이지 이동

상태

  • loading고정 예시

    최종 목록 구조와 같은 Skeleton으로 공간을 유지합니다.

    문서 목록

    공개 상태와 최근 수정일을 확인합니다.

  • populated고정 예시

    실제 비교 가능한 열과 상태, 페이지 이동을 표시합니다.

    문서 목록

    공개 상태와 최근 수정일을 확인합니다.

    문서상태수정일
    운영 정책발행됨2026-10-07
    릴리스 안내초안2026-10-06

    운영 정책

    수정일 2026-10-07

    발행됨

    릴리스 안내

    수정일 2026-10-06

    초안
  • empty고정 예시

    빈 이유와 가능한 첫 행동을 설명하고 가짜 결과를 만들지 않습니다.

    문서 목록

    공개 상태와 최근 수정일을 확인합니다.

  • error고정 예시

    오류와 복구 가능한 재시도 동작을 목록 맥락 안에 둡니다.

    문서 목록

    공개 상태와 최근 수정일을 확인합니다.

반응형 동작

  1. 작은 화면에서는 비교에 필요한 열만 유지하고 나머지는 Item 행으로 재배치합니다.

  2. 상태 제목과 재시도 동작은 가로 overflow 밖으로 숨기지 않습니다.

접근성

상태 제목과 다음 동작을 텍스트로 제공하고 loading과 error를 중복 발표하지 않습니다.

사용 예시

TSX
import {
  Item,
  ItemActions,
  ItemContent,
  ItemTitle,
} from "@/components/ui/item"
import {
  Pagination,
  PaginationContent,
  PaginationItem,
  PaginationLink,
} from "@/components/ui/pagination"
import { Panel, PanelContent, PanelHeader, PanelTitle } from "@/components/ui/panel"
import { StatusLabel } from "@/components/ui/status-label"
import { Table, TableBody, TableCell, TableRow } from "@/components/ui/table"

<Panel aria-label="populated document collection">
  <PanelHeader>
    <PanelTitle>Documents</PanelTitle>
  </PanelHeader>
  <PanelContent>
    <Table>
      <TableBody>
        <TableRow>
          <TableCell>Operations policy</TableCell>
          <TableCell>
            <StatusLabel tone="success">Published</StatusLabel>
          </TableCell>
        </TableRow>
      </TableBody>
    </Table>
    <Item>
      <ItemContent>
        <ItemTitle>Operations policy</ItemTitle>
      </ItemContent>
      <ItemActions>
        <StatusLabel tone="success">Published</StatusLabel>
      </ItemActions>
    </Item>
    <Pagination aria-label="Document pages">
      <PaginationContent>
        <PaginationItem>
          <PaginationLink href="#" isCurrent>1</PaginationLink>
        </PaginationItem>
      </PaginationContent>
    </Pagination>
  </PanelContent>
</Panel>

소스 경로

  • components/design-system/recipes/collection-state-surface-demo.tsx소스 보기
모든 레시피 보기