@akhatmirzo/ui

Breadcrumb

Foydalanuvchi sayt tuzilishining qayerida turganini ko'rsatadigan sahifa yo'li: yig'ish, menyu va Next.js Link.

Import

import { Breadcrumb } from '@akhatmirzo/ui';

Qachon ishlatish

  • Chuqur ierarxiya — katalog → kategoriya → mahsulot, sozlamalar → hisob → xavfsizlik. Foydalanuvchi bir bosishda yuqori darajaga qaytadi.
  • Sahifa sarlavhasi ustida, kontentdan oldin qo'ying.
  • Bir darajali saytda kerak emas — faqat "Bosh sahifa → Joriy" bo'lsa, foyda kam.
  • Qadamlar uchun emas. Ketma-ket jarayonni ko'rsatish uchun Stepper dan foydalaning.

Elementlar

items — { label, href?, icon?, onClick? } ro'yxati. Oxirgi element — joriy sahifa: havola bo'lmaydi va aria-current="page" oladi. href siz, lekin onClick li element — tugma bo'ladi.

Yig'ish

maxItems dan ko'p bo'lsa: birinchi + … + oxirgi maxItems - 2 ta (kamida 1). … bosilganda yashiringan sahifalar DropdownMenu da ochiladi.

Telefonda (< 640px) yo'l avtomatik … + ota + joriy ko'rinishiga tushadi. Bu CSS breakpoint bilan qilinadi — SSR'da hydration farqi bo'lmaydi. Uzun nomlar qisqartiriladi (havolalar 20ch, joriy sahifa 32ch).

Separator va o'lcham

separator — istalgan ReactNode (standart — chevron ›). size="sm" — text-xs.

renderLink — <a> o'rniga o'z havola komponentingiz. U yig'ilgan menyu ichida ham ishlatiladi.

import Link from 'next/link';
import { Breadcrumb } from '@akhatmirzo/ui';

<Breadcrumb
  items={[
    { label: 'Bosh sahifa', href: '/' },
    { label: 'Mahsulotlar', href: '/products' },
    { label: 'iPhone 17' },
  ]}
  renderLink={(props) => <Link {...props} />}
/>;

Props

Qolgan <nav> atributlari ham qabul qilinadi.

PropTipStandartTavsif
itemsmajburiy{ label: ReactNode; href?: string; icon?: ReactNode; onClick?: (event) => void }[]—Yo'l elementlari; oxirgisi — joriy sahifa
separatorReactNode—Ajratuvchi (standart — chevron `›`)
maxItemsnumber—Oshsa: birinchi + `…` + oxirgilari; yashiringanlar menyuda
renderLink(props: { href, className, children, onClick }) => ReactNode—Next `Link` kabi havola komponenti
size'sm' | 'md''md'`text-xs` / `text-sm`
labels{ nav?: string; more?: string }—Standart: "Sahifa yo'li", "Yashirilgan sahifalar"

Data atributlari

AtributQayerdaQiymat
data-sizenavsm · md
data-slotqismlarbreadcrumb-item · breadcrumb-ellipsis · breadcrumb-separator
data-viewport… elementidesktop · mobile

Accessibility

  • Tuzilish. <nav aria-label="Sahifa yo'li"> ichida tartiblangan <ol> ro'yxat.
  • Joriy sahifa havola emas, aria-current="page" bilan belgilanadi.
  • Separator bezak — aria-hidden, ekran o'quvchi uni o'qimaydi.
  • … tugmasi — aria-label="Yashirilgan sahifalar", aria-haspopup="menu". Enter / Space bilan ochiladi, ↑ ↓ bilan yuriladi, Esc yopadi va fokusni tugmaga qaytaradi.
  • Telefon ko'rinishi CSS bilan yashiriladi (display: none), shuning uchun ekran o'quvchi faqat ko'rinib turgan elementlarni o'qiydi.

Sahifada