Przejdź do treści

Breadcrumb

Stabilny

Pokazuje, gdzie w hierarchii znajduje się bieżąca strona, i jednym kliknięciem prowadzi na każdy wyższy poziom.

Anatomia

  1. 1LinkPoziom nadrzędny. Używa tytułu strony docelowej.
  2. 2SeparatorDomyślnie dyskretny ukośnik; ukryty przed technologiami wspomagającymi.
  3. 3Bieżąca stronaOstatni element. Nie jest linkiem, ma atrybut aria-current="page".

Instalacja

$ pnpm dlx shadcn@latest add https://www.prfct.dev/r/breadcrumb.json

Użycie

import Link from "next/link"

import {
  Breadcrumb,
  BreadcrumbItem,
  BreadcrumbLink,
  BreadcrumbList,
  BreadcrumbPage,
  BreadcrumbSeparator,
} from "@/components/ui/breadcrumb"
<Breadcrumb>
  <BreadcrumbList>
    <BreadcrumbItem>
      <BreadcrumbLink render={<Link href="/docs" />}>Docs</BreadcrumbLink>
    </BreadcrumbItem>
    <BreadcrumbSeparator />
    <BreadcrumbItem>
      <BreadcrumbPage>Breadcrumb</BreadcrumbPage>
    </BreadcrumbItem>
  </BreadcrumbList>
</Breadcrumb>

BreadcrumbLink domyślnie renderuje <a>; przekaż link swojego routera przez render, aby zachować nawigację po stronie klienta. Ostatni element to BreadcrumbPage — bieżąca lokalizacja, która nie jest linkiem.

Przykłady

Domyślny

prfct oddziela poziomy subtelnym ukośnikiem. Czyta się go jak ścieżkę, zajmuje mniej miejsca niż strzałka i nie konkuruje z linkami.

Własny separator

Przekaż dowolną ikonę jako dziecko BreadcrumbSeparator. Strzałki pasują do ustawień i hierarchii plików, w których ścieżka oznacza schodzenie w głąb.

Zwinięta ścieżka

Gdy ścieżka ma więcej niż cztery poziomy, zostaw poziom główny i dwa ostatnie, a środek zwiń do menu rozwijanego Dropdown Menu ukrytego za wielokropkiem. Nic nie staje się nieosiągalne.

Z ikonami

Ikona domu może zastąpić poziom główny, gdy nazwa produktu jest już widoczna w nagłówku — nadaj jej wtedy aria-label. Ikony w środku ścieżki powinny oznaczać rodzaj poziomu, a nie go ozdabiać.

Przełącznik

W aplikacjach ostatni segment może jednocześnie przełączać między elementami tego samego poziomu — projektami w zespole, gałęziami w repozytorium. Wyzwalacz wygląda jak bieżąca strona, a menu oznacza aktywny element.

Wytyczne

Kiedy używać

  • W hierarchiach o głębokości co najmniej trzech poziomów — w dokumentacji, systemach plików, ustawieniach, kategoriach sklepów internetowych.
  • Gdy ktoś trafia głęboko w strukturę z wyszukiwarki lub udostępnionego linku i musi się zorientować, gdzie jest.

Kiedy nie używać

  • W płaskich serwisach z jednym lub dwoma poziomami — wystarczy tytuł strony.
  • Do pokazywania kolejnych kroków lub historii — ścieżka nawigacji opisuje położenie, a nie drogę, którą ktoś przeszedł. W procesach wieloetapowych użyj wskaźnika kroków.
  • Jako nawigacji głównej. Ścieżka nawigacji uzupełnia Sidebar lub Navigation Menu, ale ich nie zastępuje.

Treść

Każdy element używa tytułu strony docelowej, skróconego tylko w razie potrzeby. Nie linkuj bieżącej strony, nie powtarzaj jej tuż poniżej jako tytułu strony w innym brzmieniu i nie dodawaj separatora na końcu.

Dobrze.Poziomy nadrzędne są linkami, bieżąca strona to zwykły tekst.
Źle.Separator na końcu i link do bieżącej strony nie prowadzą nigdzie dalej.

Umiejscowienie

Umieść ścieżkę nawigacji nad tytułem strony, wyrównaną z nim do lewej, w kolumnie treści. Na wąskich ekranach zwiń ją do poziomu głównego i nadrzędnego albo pokaż tylko link Wróć do poziomu wyżej.

Dostępność

  • Punkt orientacyjny. Breadcrumb renderuje <nav> z etykietą Ścieżka nawigacji (tłumaczoną przez LocaleProvider), więc użytkownicy czytników ekranu mogą przejść do niego z listy punktów orientacyjnych.
  • Kolejność. Elementy tworzą listę uporządkowaną (<ol>), która przekazuje hierarchię i liczbę poziomów.
  • Bieżąca strona. BreadcrumbPage jest prezentowany technologiom wspomagającym jako wyłączony link z aria-current="page", więc czytnik ekranu ogłasza go jako bieżącą lokalizację. Nie przyjmuje fokusu.
  • Separatory mają aria-hidden, więc nie są odczytywane między poziomami.
  • Zwinięte poziomy wymagają wyzwalacza z dostępną nazwą, np. Pokaż ukrytą ścieżkę.
KlawiszDziałanie
Tab
Przenosi fokus kolejno po linkach. Bieżąca strona jest pomijana.
Enter
Otwiera link, na którym jest fokus.

Dokumentacja API

Punkt orientacyjny <nav>. Przyjmuje wszystkie propsy elementu <nav>; nadpisz aria-label, gdy strona ma więcej niż jedną ścieżkę nawigacji.

BreadcrumbList to <ol>, który układa ścieżkę i zawija ją na wąskich ekranach. BreadcrumbItem to <li>, który wyrównuje swoją zawartość — link, bieżącą stronę lub wyzwalacz menu.

PropTypDomyślnie
href

Adres docelowy linku.

stringBrak wartości domyślnej
render

Renderuje link frameworka, np. <Link href="/docs" />, z zachowaniem stylów prfct.

ReactElement | (props, state) => ReactElementBrak wartości domyślnej

Bieżąca lokalizacja. Renderuje <span>aria-current="page".

PropTypDomyślnie
children

Zastępuje domyślny ukośnik, np. ikoną <ChevronRightIcon />.

ReactNode"/"

Znak dla zwiniętych poziomów, odczytywany jako Więcej w języku ustawionym przez LocaleProvider. W wyzwalaczu nadaj samemu wyzwalaczowi nazwę, która mówi, co odsłania.