Navigation
複雑なサービスのためのコンパクトで拡張可能なナビゲーションパネル。
@gravity-ui/navigation ·

サイドヘッダーナビゲーション · プレビュー →

インストール
npm install @gravity-ui/navigation
プロジェクトにピア依存関係がインストールされていることを確認してください。
npm install --dev @gravity-ui/uikit@^7.2.0 @gravity-ui/icons@^2.2.0 @bem-react/classname@^1.6.0 react@^19.0.0 react-dom@^19.0.0
使用方法
AsideHeader をアプリのシェルとしてレンダリングします。これは制御コンポーネントであり、compact/onChangeCompact を介して折りたたみ状態を管理します。ページコンテンツは renderContent を介して渡します。最初に @gravity-ui/uikit のスタイルと ThemeProvider を設定してください(uikit スタイルガイドを参照)。
import React from 'react';
import {AsideHeader} from '@gravity-ui/navigation';
import {Gear, House} from '@gravity-ui/icons';
import {ThemeProvider} from '@gravity-ui/uikit';
import '@gravity-ui/uikit/styles/styles.css';
export function App() {
const [compact, setCompact] = React.useState(false);
return (
<ThemeProvider theme="light">
<AsideHeader
logo={{text: 'My App', href: '/'}}
compact={compact}
onChangeCompact={setCompact}
menuItems={[
{id: 'home', title: 'Home', icon: House, current: true},
{id: 'settings', title: 'Settings', icon: Gear},
]}
renderContent={() => <main>Page content</main>}
/>
</ThemeProvider>
);
}
Sandboxes
Basic https://codesandbox.io/p/devbox/navigation-demo-simple-x9k5sd
Advanced https://codesandbox.io/p/devbox/recursing-dawn-6kc9vh
ロードマップ 2025
- SSR のサポート
- Gravity UI にドキュメントと例を追加
- UIKit テーマでのナビゲーションのサポート
- subheaderItem、menuItem、footerItem API の統合
コンポーネント
- AsideHeader
- AllPagesPanel
- PageLayout
- PageLayoutAside
- AsideFallback
- FooterItem
- Logo
- Drawer
- DrawerItem
- MobileHeader
- MobileHeaderFooterItem
- MobileLogo
- HotkeysPanel
- Footer
- MobileFooter
- ActionBar
- Settings
CSS API
Navigation のコンポーネントのテーマ設定に使用されます。
ライセンス
MIT License に基づいて配布されています。詳細については LICENSE を参照してください。
AI エージェント向け
Gravity UI アプリケーション向けのアプリケーションシェルナビゲーションコンポーネント。折りたたみ可能な AsideHeader サイドバー、フッター、ドロワー、ロゴ、ホットキー、およびページ全体を囲む設定パネルが含まれます。
使用する場合
- アプリケーションのプライマリナビゲーションフレーム:
AsideHeader(折りたたみ可能なサイドナビゲーション)にmenuItems、サブヘッダー、フッターセクションが含まれます。 - サポートするシェル UI:
Drawer/DrawerItem、Footer/MobileFooter、MobileHeader、HotkeysPanel、Settings、ActionBar、Logo。 renderContent/PageLayoutを介したナビゲーションフレーム内のページコンテンツのレイアウト。
使用しない場合
- 一般的なページ内コントロール(ボタン、タブ、メニュー、パンくずリスト) —
@gravity-ui/uikitを使用してください。このパッケージは外側のアプリのクロームであり、一般的なコンポーネントではありません。 - 設定からページ本文自体をレンダリングする場合 —
@gravity-ui/page-constructorを使用してください。 - クライアントサイドルーティング — これはナビゲーション UI のみを提供します。クリックを独自のルーターに接続してください。
よくある落とし穴
AsideHeaderは制御されています。compactで折りたたみ状態を管理し、onChangeCompactで更新する必要があります。ハンドラーなしでcompactを渡すと、サイドバーがフリーズします。- メニュー項目は
menuItemsで、idでキー付けされます。 各項目は{id, title, icon, current, onItemClick}です。iconには文字列名ではなく、アイコンコンポーネント(例:@gravity-ui/iconsから)を指定します。 - ピア依存関係が必要です。
@gravity-ui/uikit、@gravity-ui/icons、@bem-react/classnameは、react/react-domと一緒にインストールする必要があります。 - uikit のセットアップが必要です。
ThemeProvider内でレンダリングし、@gravity-ui/uikit/styles/styles.cssをインポートしないと、シェルはスタイルなしでレンダリングされます。 - ページコンテンツは
renderContentを介して渡されます。 ルーティングされたコンテンツは、childrenではなくrenderContentプロップ /PageLayoutを介してレンダリングします。
AI エージェント向けドキュメント
インストールされているバージョンに関するエージェント可読ドキュメントは、node_modules/@gravity-ui/navigation/build/docs/INDEX.md にあります。
ライブラリについて