ナビゲーション · 準拠済み
NavigationRail
NavigationRailNavigationRailProps
import { FloatingActionButton, Icon, NavigationRail, Surface, Text } from '@language-lit/material3-expressive'
export function NavigationRailExample() {
return (
<Surface
as="section"
aria-labelledby="navigation-rail-example-title"
color="surface-container-low"
shape="extra-large"
className="navigation-rail-example"
>
<Text as="h2" id="navigation-rail-example-title" variant="titleLarge" emphasis="emphasized">
Navigation rail
</Text>
<Text as="p" variant="bodyMedium">
The same item language as Navigation bar, oriented vertically, with
an optional header slot.
</Text>
<div className="navigation-rail-example__frame">
<NavigationRail
aria-label="Example sections"
header={<FloatingActionButton aria-label="Compose" icon={<Icon source="add" />} size="medium" />}
items={[
{
value: 'home',
label: 'Home',
icon: <Icon source="home" />,
selectedIcon: <Icon source="home" fill={1} />,
},
{ value: 'favorites', label: 'Favorites', icon: <Icon source="favorite" /> },
{ value: 'trash', label: 'Trash', icon: <Icon source="delete" />, disabled: true },
{ value: 'docs', label: 'Docs', icon: <Icon source="description" />, href: '#' },
]}
/>
</div>
<Text as="p" variant="labelLarge">
Without a header
</Text>
<div className="navigation-rail-example__frame">
<NavigationRail
aria-label="Example sections without header"
items={[
{ value: 'home', label: 'Home', icon: <Icon source="home" /> },
{ value: 'favorites', label: 'Favorites', icon: <Icon source="favorite" /> },
{ value: 'trash', label: 'Trash', icon: <Icon source="delete" />, disabled: true },
]}
/>
</div>
</Surface>
)
}NavigationRailはNavigationBarの縦型の兄弟コンポーネントです。固定サイズのアイコン、幅が広がるピル形のインジケーター、ラベルという同じ項目構成を、固定幅のサイドカラムに並べます。項目の上には任意のheader領域を置けます。
import { FloatingActionButton, Icon, NavigationRail } from '@language-lit/material3-expressive'
import '@language-lit/material3-expressive/styles.css'
<NavigationRail
aria-label="Primary sections"
header={<FloatingActionButton aria-label="Compose" icon={<Icon source="add" />} size="medium" />}
items={[
{ value: 'home', label: 'Home', icon: <Icon source="home" /> },
{ value: 'favorites', label: 'Favorites', icon: <Icon source="favorite" /> },
]}
/>仕様
itemsとvalue/defaultValue/onValueChangeの仕様はNavigationBarと同じです。NavigationItemの全形式とリンク対応のhref動作はそちらの説明を参照してください。headerは利用側が用意する領域で、通常はFloatingActionButtonやメニューボタンを置きます。固定されたソースのheaderスロットに対応し、項目の上に表示されます。- 選択状態でもアイコンを
24×24pxの枠内に保ちます。NavigationBarと同様、中央のインジケーター背景だけが幅0から56×32pxに広がります。
トークンと境界
色、形状、モーションの値は--m3e-comp-navigation-rail-*の1つの登録にまとめられています。テーマの上書きはMaterial3Providerのスコープ内で適用されます。NavigationRailは実行時スタイルを注入せず、Next.js、Vite、ルーター、アニメーションライブラリ、非公開のアプリケーションコードをインポートしません。