Get startedFoundationsComponentsPatternsRules

Pagination

페이지네이션은 많은 양의 콘텐츠를 여러 페이지로 나누고 페이지 사이를 오가게 해줘요.

설치

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

Examples

Default

pages 배열을 넘기면 이전·다음 버튼과 페이지 번호가 그려져요. 페이지와 이동 버튼은 subtle 버튼이고, 현재 페이지는 선택(background.selected, text.selected) 스타일로 표시돼요. 첫 페이지와 마지막 페이지에서는 이전·다음 버튼이 비활성돼요.

Max and ellipsis

페이지 수가 max(기본 7, 말줄임 포함)를 넘으면 … 로 생략해요. 현재 페이지가 처음과 끝 양쪽에서 멀면 양쪽 모두 생략돼요. 말줄임은 누를 수 없고, 가까운 번호를 눌러 이어지는 페이지를 드러내요.

Controlled

selectedIndex 와 onChange 로 선택 페이지를 직접 관리해요. onChange 는 (event, page) 를 받아요.

Page label

페이지가 객체라면 getPageLabel 로 버튼에 보일 텍스트를 정해요. label, pageLabel, previousLabel, nextLabel 로 스크린 리더 이름도 맥락에 맞게 바꿔요.

Disabled

isDisabled 로 전체를 비활성해요. 데이터를 불러오는 동안 페이지 이동을 막을 때 써요.

Usage guidelines

한 페이지에 보여주기엔 결과가 너무 많을 때, 사람들이 부담 없이 탐색하도록 콘텐츠를 나눠요. 이슈 목록 표, 검색 결과, 구성원 디렉터리처럼 목록이 긴 화면의 맨 아래에 둬요.

구성

  • 이전·다음 화살표: 한 페이지씩 앞뒤로 이동해요.
  • 페이지 번호: 원하는 페이지로 바로 이동해요.
  • 말줄임: 페이지 수가 기준을 넘으면 중간을 생략해요.
Do· 화면 크기에 맞춘 max
작은 화면은 말줄임 포함 최대 7개, 큰 화면은 최대 14개까지 보여줘요.
Don't· 결과가 한 페이지면
결과가 한 페이지에 다 들어가면 페이지네이션을 두지 않아요.
  • "너무 많다"의 기준은 로딩 속도, 항목 하나의 정보량, 화면 공간을 함께 보고 정해요.
  • 표와 함께 쓰는 경우가 많아요. 페이지당 항목 수를 화면 밀도에 맞춰 정해요.

Accessibility

  • <nav aria-label> 로 감싸고, 현재 페이지 버튼에 aria-current="page" 가 붙어요.
  • 각 페이지 버튼의 이름은 pageLabel + 번호(예: "페이지 3")예요. 이전·다음 버튼은 previousLabel, nextLabel 로 이름을 정해요.
  • 말줄임 안에는 "N페이지부터 M페이지까지 생략됨" 문구가 시각적으로 숨겨져 있어 스크린 리더가 읽어요.
  • 작은 화면에서는 max 를 줄여 버튼이 넘치지 않게 해요.

Props

Prop

Type

On this page