Breadcrumb
現在のページまでのリンクをたどる経路です。安全に折り返し、右から左へのレイアウトでは反転し、折りたたまれた区間をその場で展開できます。
pnpm dlx shadcn@latest add https://hextaui.com/r/breadcrumb.jsonコンポーネント、HextaUIのテーマトークン、依存するHextaUIコンポーネントを追加します。
まだ追加していない場合は、グローバルCSSにテーマトークンを追加してください。
依存関係をインストールします。
pnpm add @base-ui/react @tabler/icons-react cn次のコードをコピーしてプロジェクトに貼り付けてください。
components/ui/breadcrumb.tsx lib/motion.ts インポートパスは、お使いのプロジェクト構成に合わせて更新してください。
アイコンつき
アイコンはリンクと現在のページの内側に配置されます。アイコンのみのリンクには aria-label を付けてください。
カスタムのセパレーター
<BreadcrumbSeparator /> の children に任意の要素を渡すと、山形アイコンを置き換えられます。
Dropdown
<DropdownMenu /> のトリガーとして <BreadcrumbLink /> をレンダリングすると、兄弟ページを提示できます。
折りたたみ
中間のセグメントを <BreadcrumbCollapse /> で囲みます。省略記号の後ろに隠れ、その場でスライドして開き、フォーカスは最初に表示されたリンクに移ります。制御するには open と onOpenChange を渡します。
省略記号
静的な <BreadcrumbEllipsis /> は、省略された階層を示します。インタラクティブにしない限り、支援技術からは隠されます。
リンクコンポーネント
render prop を使うと、アンカーを Next.js の <Link /> のようなルーターのリンクに差し替えられます。
長いコンテンツ
区切りのない名前ははみ出さずに折り返され、最大幅を持つセグメントは省略されます。
右から左
セパレーターは反転し、折りたたみは正しい側からアニメーションします。
リンクと折りたたみボタンは通常のタブストップです。セパレーターと静的な省略記号はスキップされます。
| キー | アクション |
|---|---|
| TabShift + Tab | リンクと折りたたみボタンの間を移動します。 |
| Enter | フォーカス中のリンクに追従します。 |
| EnterSpace | 折りたたみボタンでは、隠れていたセグメントを表示します。スライドして開き終わると、フォーカスは最初に表示されたリンクに移ります。 |
各パーツは、レンダリングする要素の属性に加えて、その要素を差し替える render prop を受け付けます。
| プロパティ | 型 | デフォルト |
|---|---|---|
render支援技術向けに「Breadcrumb」というラベルが付きます。 | ReactElement | (props, state) => ReactElement | <nav> |
| 属性 | 説明 |
|---|---|
data-slot="breadcrumb" | <nav> ランドマーク。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <ol> |
| 属性 | 説明 |
|---|---|
data-slot="breadcrumb-list" | 順序付きリスト。スペースが足りなくなると、項目は次の行に折り返されます。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <li> |
| 属性 | 説明 |
|---|---|
data-slot="breadcrumb-item" | CSSで項目を指定します。 |
data-collapsed | 閉じた BreadcrumbCollapse の中で項目が隠れている間、付与されます。 |
data-breadcrumb-group | BreadcrumbCollapse 内の項目に付与されます。同じグループのすべてのパーツで共有されます。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
href | string | – |
renderここにルーターのリンクコンポーネントを渡します。 | ReactElement | (props, state) => ReactElement | <a> |
| 属性 | 説明 |
|---|---|
data-slot="breadcrumb-link" | CSS でリンクを指定します。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
renderaria-current="page" が付きます。 | ReactElement | (props, state) => ReactElement | <span> |
| 属性 | 説明 |
|---|---|
data-slot="breadcrumb-page" | aria-current="page" が付く、現在のページ。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
children右から左のレイアウトでは自動的に反転します。 | ReactNode | <IconChevronRight /> |
render | ReactElement | (props, state) => ReactElement | <li> |
| 属性 | 説明 |
|---|---|
data-slot="breadcrumb-separator" | 装飾用であり、支援技術からは隠されます。 |
data-collapsed | 閉じた BreadcrumbCollapse の中でセパレーターが隠れている間、付与されます。 |
data-breadcrumb-group | BreadcrumbCollapse 内のセパレーターに付与されます。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
children | ReactNode | <IconDots /> |
renderrender または onClick でインタラクティブにしない限り、支援技術からは隠されます。 | ReactElement | (props, state) => ReactElement | <span> |
| 属性 | 説明 |
|---|---|
data-slot="breadcrumb-ellipsis" | CSS で省略記号を指定します。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
children省略記号の後ろに隠す項目とセパレーター。 | ReactNode | – |
open | boolean | – |
defaultOpen | boolean | false |
onOpenChange | (open: boolean) => void | – |
label省略記号ボタンのアクセシブルな名前。 | string | "Show full path" |
| 属性 | 説明 |
|---|---|
data-slot="breadcrumb-collapse" | 省略記号ボタンを保持する <li>。 |
data-collapsed | グループが開いた後、省略記号の項目に付与され、非表示になります。 |
- Motionすべてのコンポーネントがアニメーションに使うイージングカーブ、継続時間、モーション軽減のチェックと、サイズのモーフィングやスライドするハイライト用のフックです。
- Navigation menuドロップダウンつきのサイトナビゲーションです。または、メニュー間でコンテンツがスライドする間も開いたままになる、全幅の1つのパネルにもできます。
- Paginationすべてのボタンを定位置に保つページナビゲーションです。現在のページへ滑らかに移動し、省略記号から任意のページへジャンプできます。
- Sidebarアイコンのみ、またはオフキャンバスに折りたたまれ、ヘッダーの下に固定され、スマートフォンではスワイプできるシートになるアプリのサイドバーです。
- Tabsアクティブなタブへスライドするインジケーターでビューを切り替えます。セグメントコントロールまたはアンダーラインとして使え、あふれたリストはスクロールします。