本文へスキップ
Material 3 Expressivev1.3.0-rc.1
ナビゲーション · 準拠済み

NavigationBar

NavigationBarNavigationBarPropsNavigationItem
playground/examples/NavigationBar.example.tsx

NavigationBarは、選択中の項目のアイコン背後に幅が広がるピル形のハイライトを備えた、画面下部のナビゲーションバーを表示します。固定されたMaterialソースが移植したtabロールではなく、Web標準の<nav>/aria-currentによるナビゲーションの意味付けを使います。ページ内タブ切り替えではなく、アプリ内で持続するナビゲーション領域です(Tabsを参照)。

import { Icon, NavigationBar } from '@language-lit/material3-expressive'
import '@language-lit/material3-expressive/styles.css'

<NavigationBar
  aria-label="Primary sections"
  items={[
    { value: 'home', label: 'Home', icon: <Icon source="home" /> },
    { value: 'favorites', label: 'Favorites', icon: <Icon source="favorite" /> },
  ]}
/>

仕様

  • items: readonly NavigationItem[]でバーの項目を定義します。形式は{ value, label, icon, selectedIcon?, disabled?, href? }です。NavigationRail、NavigationDrawer、NavigationSuiteでも同じNavigationItem型を使います。
  • value/defaultValue/onValueChangeは、ほかの状態を持つコンポーネントと同じ制御/非制御の形式です。defaultValueを省略すると最初の項目の値が使われます。
  • hrefを持つ項目は<button>ではなく実際の<a href>をレンダーします。これはTabsと同じリンク対応の方法で、ルーターによるナビゲーションに使えます。href付きの無効項目はアンカーにネイティブの無効状態がないためhrefを省略しますが、支援技術から判別できるようrole="link"は維持します。
  • selectedIconを指定すると、その項目の選択中にiconを置き換えます(アウトラインから塗りつぶしへのアイコン切り替えなど)。省略すると両状態でiconを再利用します。どちらのアイコンも同じ24×24pxの枠内に収まります。選択アニメーションで幅が変わるのは中央のインジケーター背景だけで、幅0から56×32pxのピル形状になり、アイコンや項目の占有領域は変わりません。

トークンと境界

色、形状、モーションの値は--m3e-comp-navigation-bar-*の1つの登録にまとめられています。テーマの上書きはMaterial3Providerのスコープ内で適用されます。NavigationBarは実行時スタイルを注入せず、Next.js、Vite、ルーター、アニメーションライブラリ、非公開のアプリケーションコードをインポートしません。