Pagination
페이지 간 이동을 위한 페이지네이션 컴포넌트
개요
Pagination 컴포넌트는 콘텐츠를 여러 페이지로 나누어 탐색할 수 있도록 페이지 번호, 이전/다음 버튼, 생략 표시를 제공합니다. 시맨틱한 nav + ul/li 구조와 Button 컴포넌트 기반 링크로 구성됩니다.
주요 특징
- ✅ 컴파운드 컴포넌트: Content, Item, Link, Previous, Next, Ellipsis 조합
- ✅ 활성 페이지 표시:
isActiveprop으로 현재 페이지 강조 - ✅ 반응형 텍스트: Previous/Next 텍스트는 작은 화면에서 자동 숨김
- ✅ 커스텀 텍스트:
textprop으로 이전/다음 라벨 변경 - ✅ 접근성:
aria-label="pagination",aria-current="page"자동 적용 - ✅ 디자인 토큰: 테마 커스터마이징 지원
구조 (Anatomy)
<Pagination>
<PaginationContent>
<PaginationItem>
<PaginationPrevious href="#" />
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">1</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationEllipsis />
</PaginationItem>
<PaginationItem>
<PaginationNext href="#" />
</PaginationItem>
</PaginationContent>
</Pagination>사용 예시
기본 사용
Preview
커스텀 라벨
text prop으로 이전/다음 버튼의 텍스트를 변경할 수 있습니다.
Preview
API Reference
Pagination
페이지네이션의 루트 컴포넌트입니다. nav 요소를 렌더링합니다.
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | 추가 CSS 클래스 |
PaginationContent
페이지 아이템들을 나열하는 ul 컨테이너입니다.
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | 추가 CSS 클래스 |
PaginationItem
개별 페이지 항목을 감싸는 li 요소입니다.
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | 추가 CSS 클래스 |
PaginationLink
페이지 번호 링크입니다. Button 컴포넌트 기반으로 a 요소를 렌더링합니다.
| Prop | Type | Default | Description |
|---|---|---|---|
isActive | boolean | - | 현재 페이지 여부 |
size | string | "icon" | 버튼 크기 |
href | string | - | 링크 URL |
className | string | - | 추가 CSS 클래스 |
PaginationPrevious / PaginationNext
이전/다음 페이지 이동 링크입니다. 셰브론 아이콘이 자동 포함되며, 텍스트는 sm breakpoint 미만에서 숨겨집니다.
| Prop | Type | Default | Description |
|---|---|---|---|
text | string | "Previous" / "Next" | 버튼 라벨 텍스트 |
href | string | - | 링크 URL |
className | string | - | 추가 CSS 클래스 |
PaginationEllipsis
생략된 페이지를 나타내는 표시기입니다.
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | 추가 CSS 클래스 |
기본 사용법
import {
Pagination,
PaginationContent,
PaginationItem,
PaginationLink,
PaginationPrevious,
PaginationNext,
PaginationEllipsis,
} from "@vortex/ui-foundation"
<Pagination>
<PaginationContent>
<PaginationItem>
<PaginationPrevious href="/page/1" />
</PaginationItem>
<PaginationItem>
<PaginationLink href="/page/1">1</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="/page/2" isActive>
2
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationNext href="/page/3" />
</PaginationItem>
</PaginationContent>
</Pagination>접근성
시맨틱 마크업
nav요소에role="navigation"과aria-label="pagination"자동 적용- 활성 링크에
aria-current="page"자동 설정 - Ellipsis는
aria-hidden처리되고 스크린 리더용 “More pages” 텍스트 제공 - Previous/Next 링크에
aria-label(“Go to previous/next page”) 자동 설정
권장 사항
- ✅ 현재 페이지에 반드시
isActive적용 - ✅ 페이지 수가 많을 때 PaginationEllipsis로 생략 표시
- ❌ 무한 스크롤이 적합한 콘텐츠에는 사용하지 않기
관련 컴포넌트
Last updated on