انتقل إلى المحتوى
TopClass UI

ترقيم الصفحات

أرقام صفحات هي روابط حقيقية لا معالجات نقر، فتعمل دون JavaScript ويتبع الزاحف كل صفحة منها.

server - 0 KB

ترقيم الصفحات

server - 0 KB

أرقام صفحات هي روابط حقيقية لا معالجات نقر، فتعمل دون JavaScript ويتبع الزاحف كل صفحة منها.

تثبيت

جرّبه

value
pageCount
siblingCount
boundaryCount
size

الشيفرة

pagination.tsx
import { Pagination } from 'topclassui/pagination'

<Pagination value={6} pageCount={12} getHref={(page) => `/blog?page=${String(page)}`} />

getHref يبقي كل صفحة قابلة للزحف، وقيم value وsiblingCount وboundaryCount محصورة في مدى آمن.

كل الحالات، بدون تمرير الفأرة

4 حالات

أو استورده من الحزمة

topclassui/pagination
import { Pagination } from 'topclassui/pagination'

ثبّت مرة واحدة:npm i topclassui@beta zod

أمثلة

  • مرّر value وpageCount وgetHref، الدالة التي تحوّل رقم الصفحة إلى عنوانها، مثل /blog?page=3. كل خلية رابط حقيقي.
  • في Next.js يعيد الرابط العادي تحميل الصفحة. مرّر link={<Link href="" />} فيصبح كل تغيير صفحة تنقّلًا من جهة المتصفح.
  • الصفحة الخاطئة في العنوان تُحصر لما يُعرض: ?page=999 من 12 تعرض الصفحة 12. استعلم عن الصفحة نفسها بـclampPage(Number(page), pageCount).
  • siblingCount وboundaryCount (من 0 إلى 3، والافتراضي 1) يحددان عدد الصفحات حول الحالية وعند كل طرف.
  • size="md" ارتفاعه 40 px، ارتفاع الزر، وsize="sm" هو خلية 32 px في التصميم. custom لا يضيف أصناف حجم.
  • الصف يلتف بدل أن يمرّر. على الهاتف مرّر siblingCount={0} وboundaryCount={0} لصف أقصر.
  • paginationVariants({ size, current }) يعيد أصناف خلية واحدة، لرابط ترسمه بنفسك.
middle
first-page
last-page
sizes
many-pages
two-navs

Orders 26 to 50 of 200

custom-size
wide-numbers
بالعربية، من اليمين إلى اليسار

الخصائص

خصائص Pagination
الخاصيةالنوعالافتراضيالحدودالوصف
getHref*(page: number) => string--The address of a page, so every cell is a real link a crawler can follow.
pageCount*integer, min 1, max 9007199254740991-min 1, max 9007199254740991How many pages there are; a fraction is rounded up and anything below 1 is one page.
value*integer, min 1, max 9007199254740991-min 1, max 9007199254740991The current page, counted from 1; anything outside 1 to pageCount is clamped.
boundaryCountinteger, min 0, max 31min 0, max 3How many pages always show at each end of the list; clamped to 0-3.
labelsLabels--The built-in strings: the name of the nav, of each page and of the four icon links. Defaults to English.
linkReactElement--The element every link is cloned from, such as link={<Link href="" />}; its href is replaced.
localestring--The locale the page numbers are formatted in. Defaults to en.
siblingCountinteger, min 0, max 31min 0, max 3How many pages show on each side of the current one; clamped to 0-3.
sizexs | sm | md | lg | xl | custom"md"-The control scale each cell takes its height from; custom emits no size classes.

لوحة المفاتيح وإمكانية الوصول

لوحة مفاتيح Pagination
المفاتيحما يفعله
Tabينتقل بين الأولى والسابقة وكل صفحة والتالية والأخيرة. الزر المعطّل يُتخطّى.
Enterيتبع الرابط الذي عليه التركيز.
  • الصفحة الحالية عليها aria-current="page" واسمها «صفحة 3 من 12»، وكل خلية أخرى اسمها «صفحة 4».
  • السابق والتالي عليهما rel="prev" وrel="next". في الصفحة الأولى والأخيرة يكون ذلك الزر معطّلًا ودون href.
  • إن كان في الصفحة عنصرا ترقيم فلكلٍّ منهما aria-label خاص به، مثل «صفحات الطلبات، أعلى» و«صفحات الطلبات، أسفل».

من اليمين إلى اليسار

مع dir="rtl" يبدأ الصف من اليمين وتنقلب الأسهم الأربعة. {...getLabels('ar')} يمرّر النصوص العربية واللغة معًا.

الخادم والمتصفح

يُعرض على الخادم ولا يرسل أي JavaScript.

الملفات: index.tsx.

على الشارة: server - 0 KB.