SiteTreeNav
展開可能なカテゴリでドキュメントツリー全体を表示する、サイトマップ風のグリッドコンポーネント。
概要
SiteTreeNavは、展開可能なカテゴリカードのレスポンシブグリッドでドキュメントツリー全体を表示するPreactアイランドコンポーネントです。カテゴリの展開・折りたたみが可能な、サイトマップ形式のドキュメントページ一覧を提供します。
Info
このコンポーネントはMDXコンテンツで直接利用することはできません。サーバーサイドのデータ取得が必要なため、zfbのページモジュールでインポートする必要があります。以下のライブデモは、グローバルMDXコンポーネントとして登録されたSiteTreeNavDemoラッパーを使用しています。
ライブデモ
以下はSiteTreeNavでドキュメントツリー全体を表示した例です(ホームページと同じ表示):
使い方
SiteTreeNavはpages/でホームページのサイトマップを表示するために使用されています:
// pages/index.tsx
import { buildNavTree, groupSatelliteNodes } from "@/utils/docs";
import { getCategoryOrder } from "@/utils/nav-scope";
import SiteTreeNav from "@/components/site-tree-nav";
import { resolveNavSource } from "./lib/_nav-source-docs";
import { defaultLocale } from "@/config/i18n";
export default function IndexPage() {
const locale = defaultLocale;
const { navDocs, categoryMeta } = resolveNavSource(locale, undefined);
const tree = buildNavTree(navDocs, locale, categoryMeta);
const categoryOrder = getCategoryOrder();
const groupedTree = groupSatelliteNodes(tree, categoryOrder);
return (
<SiteTreeNav
tree={groupedTree}
categoryOrder={categoryOrder}
categoryIgnore={["inbox", "develop"]}
/>
);
}このコンポーネントは展開・折りたたみのインタラクティブ機能にPreactステートを使用するため、zfbのアイランドランタイムを介してクライアントでハイドレートされます。
プロップ
| プロップ | 型 | デフォルト | 説明 |
|---|---|---|---|
tree | NavNode[] | (必須) | コンテンツコレクションから構築されたナビゲーションツリー |
categoryOrder | string[] | — | トップレベルカテゴリのカスタム並び順 |
categoryIgnore | string[] | — | ツリーから非表示にするカテゴリスラッグ |
ariaLabel | string | "Site index" | nav要素のアクセシビリティラベル |
特徴
レスポンシブグリッドレイアウト —
repeat(auto-fill, minmax(min(18rem, 100%), 1fr))により、モバイルの1カラムからワイドスクリーンの複数カラムまで適応展開可能なカテゴリ — 各カテゴリカードは折りたたみ可能で、デフォルトでは開いた状態
階層的なツリー構造 — ネストされたページはインデントとコネクタラインでツリー構造を表示
カテゴリリンク — トップレベルカテゴリは矢印アイコンとインデックスページへのリンクを表示
リーフページ — 個別のドキュメントページはクリック可能なリンクとして表示
ソース
コンポーネントはsrc/に定義されています。