Breadcrumb
عرض شاملimport { Breadcrumb, BreadcrumbDivider } from '@nili/ui';هذه صفحة العرض الشامل الخاصة بالمكتبة، معروضة حيّة. غيّر اللغة أو السمة من الأعلى وسَتتبعك.
أساسي
معلم تنقّل يحمل سلسلة روابط. علّم آخر عنصر بـcurrent: فيُرسم نصًّا لا رابطًا ويحمل aria-current="page".
import { Breadcrumb, BreadcrumbItem } from "@nili/ui"
export function Example() {
return (
<Breadcrumb label={t('nav.label')}>
<BreadcrumbItem href="#">{t('crumb.home')}</BreadcrumbItem>
<BreadcrumbItem href="#">{t('crumb.projects')}</BreadcrumbItem>
<BreadcrumbItem href="#">Nili</BreadcrumbItem>
<BreadcrumbItem current>{t('crumb.components')}</BreadcrumbItem>
</Breadcrumb>
)
}الفواصل
ثلاثة فواصل جاهزة، أو استبدلها كليًا بـseparator. الفاصل زخرفي ومخفي عن التقنيات المساعدة — فبنية القائمة هي التي تحمل التداخل.
import { Breadcrumb, BreadcrumbItem } from "@nili/ui"
export function Example() {
return (
<>
<Breadcrumb divider="arrow" label={t('nav.label')}>…</Breadcrumb>
<Breadcrumb divider="slash" label={t('nav.label')}>…</Breadcrumb>
<Breadcrumb divider="dot" label={t('nav.label')}>…</Breadcrumb>
{/* anything you like */}
<Breadcrumb separator={<span aria-hidden>→</span>} label={t('nav.label')}>…</Breadcrumb>
</>
)
}الأيقونات
يضيف icon رمزًا متقدّمًا. ولعنصر بأيقونة فقط — زر الصفحة الرئيسية في بداية المسار — مرِّر الأيقونة كابن وامنح الرابط aria-label.
import { Breadcrumb, BreadcrumbItem, Icon } from "@nili/ui"
import { RiHomeLine, RiFolderLine } from "@remixicon/react"
export function Example() {
return (
<Breadcrumb label={t('nav.label')}>
<BreadcrumbItem href="#" aria-label={t('crumb.home')}>
<Icon icon={RiHomeLine} />
</BreadcrumbItem>
<BreadcrumbItem href="#" icon={<Icon icon={RiFolderLine} />}>
Projects
</BreadcrumbItem>
<BreadcrumbItem current>Nili</BreadcrumbItem>
</Breadcrumb>
)
}طيّ المسارات الطويلة
يطوي maxItems الوسط في نقاط، مبقيًا العنصر الأول وآخر itemsAfterCollapse. فمسار من خمسة مستويات على الهاتف إمّا يلتف أو ينزلق، وكلاهما سيّئ.
import { Breadcrumb, BreadcrumbItem } from "@nili/ui"
export function Example() {
return (
<Breadcrumb maxItems={3} itemsAfterCollapse={1} label={t('nav.label')}>
<BreadcrumbItem href="#">{t('crumb.home')}</BreadcrumbItem>
<BreadcrumbItem href="#">{t('crumb.projects')}</BreadcrumbItem>
<BreadcrumbItem href="#">Nili</BreadcrumbItem>
<BreadcrumbItem href="#">{t('crumb.components')}</BreadcrumbItem>
<BreadcrumbItem current>{t('nav.label')}</BreadcrumbItem>
</Breadcrumb>
)
}روابط الموجّه
يرسم asChild عنصرك بدل <a>، فيحتفظ رابط Next.js أو React Router بالتنقّل من جهة العميل مع الحصول على تنسيق العنصر وتوصيلات ARIA.
import Link from "next/link"
import { Breadcrumb, BreadcrumbItem } from "@nili/ui"
export function Example() {
return (
<Breadcrumb label={t('nav.label')}>
<BreadcrumbItem asChild>
<Link href="/">Home</Link>
</BreadcrumbItem>
<BreadcrumbItem asChild>
<Link href="/components">Components</Link>
</BreadcrumbItem>
<BreadcrumbItem current>{t('nav.label')}</BreadcrumbItem>
</Breadcrumb>
)
}Breadcrumb
extends Omit< ComponentPropsWithoutRef<'nav'>, 'children' >
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| children* | ReactNode | — | |
| aria-label | string | — | |
| divider | dot | arrow | slash | arrow | |
| separator | ReactNode | — | Replaces the divider entirely. |
| maxItems | number | — | Collapse the middle of long trails into an ellipsis, keeping the first crumb and the last `itemsAfterCollapse`. A five-level path on a phone either wraps or scrolls; neither is good. |
| itemsAfterCollapse | number | 1 | |
| label | string | Breadcrumb | Accessible name for the landmark, e.g. `'Breadcrumb'`. |
BreadcrumbItem
extends Omit< ComponentPropsWithoutRef<'a'>, 'children' >
محاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| current | boolean | false | Marks the current page: renders as text, not a link, plus aria-current. |
| interactive | 'true' | 'false' | true |
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| icon | ReactNode | — | Leading icon. Omit for a text-only crumb; pass `children` for icon-only. |
| asChild | boolean | false | Render the child element instead of an `<a>` — for router links. |
BreadcrumbSeparator
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| divider | arrow | slash | dot | arrow |