پرتوپرتو

صفحه‌بندی (Pagination)

کامپوننت ناوبری بین صفحات با props استاندارد

معرفی

کامپوننت Pagination برای ناوبری بین صفحات استفاده می‌شود. دو روش استفاده وجود دارد:

  1. PaginationControlled: کامپوننت با props استاندارد (پیشنهادی)
  2. Pagination: کامپوننت پایه برای استفاده دستی

استفاده با PaginationControlled (پیشنهادی)

کامپوننت PaginationControlled با props استاندارد برای استفاده آسان:

Playground

در playground زیر می‌توانید props مختلف را تست کنید:

import { PaginationControlled } from '@parto-system-design/ui';
import { useState } from 'react';

export default function MyComponent() {
  const [currentPage, setCurrentPage] = useState(2);

  return (
    <PaginationControlled
      currentPage={currentPage}
      totalPages={10}
      onPageChange={setCurrentPage}
    />
  );
}

مثال با props اضافی

import { PaginationControlled } from '@parto-system-design/ui';

export default function MyComponent() {
  const [page, setPage] = useState(5);

  return (
    <PaginationControlled
      currentPage={page}
      totalPages={20}
      onPageChange={setPage}
      siblingCount={2}        // تعداد صفحات در هر طرف صفحه فعلی
      showFirstLast={true}     // نمایش دکمه‌های اول و آخر
      showPrevNext={true}      // نمایش دکمه‌های قبلی و بعدی
      showEllipsis={true}      // نمایش ellipsis برای صفحات مخفی
      dir="rtl"                // جهت متن
    />
  );
}

استفاده دستی با Pagination

برای کنترل بیشتر، می‌توانید از کامپوننت‌های پایه استفاده کنید:

import {
  Pagination,
  PaginationContent,
  PaginationItem,
  PaginationLink,
  PaginationNext,
  PaginationPrevious,
  PaginationEllipsis,
} from '@parto-system-design/ui';

export default function MyComponent() {
  return (
    <Pagination dir="rtl">
      <PaginationContent>
        <PaginationItem>
          <PaginationPrevious href="#" />
        </PaginationItem>
        <PaginationItem>
          <PaginationLink href="#">1</PaginationLink>
        </PaginationItem>
        <PaginationItem>
          <PaginationLink href="#" isActive>2</PaginationLink>
        </PaginationItem>
        <PaginationItem>
          <PaginationLink href="#">3</PaginationLink>
        </PaginationItem>
        <PaginationItem>
          <PaginationEllipsis />
        </PaginationItem>
        <PaginationItem>
          <PaginationNext href="#" />
        </PaginationItem>
      </PaginationContent>
    </Pagination>
  );
}

Props

PaginationControlled

Prop

Type

Prop

Type

PaginationPrevious / PaginationNext

Prop

Type

مثال‌های استفاده

مثال ساده

const [page, setPage] = useState(1);

<PaginationControlled
  currentPage={page}
  totalPages={5}
  onPageChange={setPage}
/>

مثال با صفحات زیاد

const [page, setPage] = useState(10);

<PaginationControlled
  currentPage={page}
  totalPages={100}
  onPageChange={setPage}
  siblingCount={2}
  showEllipsis={true}
/>

مثال با دکمه‌های اول و آخر

const [page, setPage] = useState(5);

<PaginationControlled
  currentPage={page}
  totalPages={20}
  onPageChange={setPage}
  showFirstLast={true}
  siblingCount={1}
/>

مثال بدون دکمه‌های قبلی/بعدی

<PaginationControlled
  currentPage={page}
  totalPages={10}
  onPageChange={setPage}
  showPrevNext={false}
/>

ویژگی‌ها

  • ✅ پشتیبانی از RTL/LTR
  • ✅ نمایش خودکار ellipsis برای صفحات زیاد
  • ✅ استایل زیبا با رنگ brand
  • ✅ Responsive و سازگار با موبایل
  • ✅ Accessibility با ARIA labels
  • ✅ قابلیت سفارشی‌سازی با className