Pagination

Pagination은 중요한 정보를 시각적으로 강조하여 사용자에게 전달하는 메시지 컴포넌트입니다.
import { Pagination } from '@vapor-ui/core';

export default function DefaultPagination() {
    return (
        <Pagination.Root totalPages={5}>
            <Pagination.Previous />
            <Pagination.Items />
            <Pagination.Next />
        </Pagination.Root>
    );
}

Property

Sibling Count

Pagination에서 현재 페이지 주변에 표시할 페이지 번호의 개수를 설정합니다.

import { Pagination, Text, VStack } from '@vapor-ui/core';

export default function PaginationSiblingCount() {
    return (
        <VStack gap="$300">
            <VStack gap="$050">
                <Text typography="subtitle1">1 Sibling</Text>
                <Pagination.Root defaultPage={8} totalPages={20} siblingCount={1}>
                    <Pagination.Previous />
                    <Pagination.Items />
                    <Pagination.Next />
                </Pagination.Root>
            </VStack>

            <VStack gap="$050">
                <Text typography="subtitle1">3 Sibling</Text>
                <Pagination.Root defaultPage={8} totalPages={20} siblingCount={3}>
                    <Pagination.Previous />
                    <Pagination.Items />
                    <Pagination.Next />
                </Pagination.Root>
            </VStack>
        </VStack>
    );
}

Boundary Count

Pagination의 시작과 끝에 항상 표시할 페이지 번호의 개수를 설정합니다.

import { Pagination, Text, VStack } from '@vapor-ui/core';

export default function PaginationBoundaryCount() {
    return (
        <VStack gap="$300">
            <VStack gap="$050">
                <Text typography="subtitle1">1 Boundary</Text>
                <Pagination.Root defaultPage={8} totalPages={20} boundaryCount={1}>
                    <Pagination.Previous />
                    <Pagination.Items />
                    <Pagination.Next />
                </Pagination.Root>
            </VStack>

            <VStack gap="$050">
                <Text typography="subtitle1">3 Boundary</Text>
                <Pagination.Root defaultPage={8} totalPages={20} boundaryCount={3}>
                    <Pagination.Previous />
                    <Pagination.Items />
                    <Pagination.Next />
                </Pagination.Root>
            </VStack>
        </VStack>
    );
}

Size

Pagination의 사이즈는 sm, md, lg, xl로 제공합니다.

import { Pagination, VStack } from '@vapor-ui/core';

export default function PaginationSize() {
    return (
        <VStack gap="$050">
            <Pagination.Root totalPages={5} size="sm">
                <Pagination.Previous />
                <Pagination.Items />
                <Pagination.Next />
            </Pagination.Root>
            <Pagination.Root totalPages={5} size="md">
                <Pagination.Previous />
                <Pagination.Items />
                <Pagination.Next />
            </Pagination.Root>
            <Pagination.Root totalPages={5} size="lg">
                <Pagination.Previous />
                <Pagination.Items />
                <Pagination.Next />
            </Pagination.Root>
            <Pagination.Root totalPages={5} size="xl">
                <Pagination.Previous />
                <Pagination.Items />
                <Pagination.Next />
            </Pagination.Root>
        </VStack>
    );
}

Disabled

Pagination 버튼들의 비활성화 여부를 결정하는 옵션입니다.

import { Pagination } from '@vapor-ui/core';

export default function PaginationDisabled() {
    return (
        <Pagination.Root totalPages={5} disabled>
            <Pagination.Previous />
            <Pagination.Items />
            <Pagination.Next />
        </Pagination.Root>
    );
}

Disabled

Pagination 버튼들의 비활성화 여부를 결정하는 옵션입니다.

import { Pagination } from '@vapor-ui/core';

export default function PaginationDisabled() {
    return (
        <Pagination.Root totalPages={5} disabled>
            <Pagination.Previous />
            <Pagination.Items />
            <Pagination.Next />
        </Pagination.Root>
    );
}

Controlled

Pagination 컴포넌트를 제어 컴포넌트로 사용하는 예시입니다.

import { useState } from 'react';

import { Button, HStack, Pagination, Text, VStack } from '@vapor-ui/core';

export default function PaginationControlled() {
    const [page, setPage] = useState(7);

    return (
        <VStack gap="$200">
            <Pagination.Root totalPages={20} page={page} onPageChange={setPage}>
                <Pagination.Previous />
                <Pagination.Items />
                <Pagination.Next />
            </Pagination.Root>

            <HStack justifyContent="space-between" alignItems="center" gap="$100">
                <Text typography="subtitle1">Current Page is, {page}</Text>

                <Button variant="ghost" onClick={() => setPage(7)}>
                    Move to Page 7
                </Button>
            </HStack>
        </VStack>
    );
}

Pagination.Root

이 컴포넌트는 div 요소를 기반으로, 표준 HTML 속성(className, style 등)을 지원합니다.

Loading component documentation...

Pagination.Icon

Pagination 내에서 아이콘을 표시하는 데 사용되는 컴포넌트입니다. 아이콘의 크기와 위치를 적절히 조정하여 일관된 시각적 경험을 제공합니다. 이 컴포넌트는 div 요소를 기반으로, 표준 HTML 속성을 지원합니다.

Loading component documentation...