Breadcrumb
نمای کلیimport { Breadcrumb, BreadcrumbDivider } from '@nili/ui';این همان صفحهی نمای کلیِ خود کتابخانه است که زنده رندر میشود. زبان یا تم را از هدر عوض کنید، همراهش میآید.
پایه
یک لندمارک nav که رشتهای از لینکها را نگه میدارد. آخرین دانه را 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 |