Tinyrack

Tree Nav

折りたたみ可能なグループと階層ごとのガイドレールを備えた、汎用の再帰ナビゲーションツリーです。

主なプロパティ

TRTreeNav は任意の深さで入れ子になった折りたたみグループの再帰ナビゲーションツリーをレンダリングします。各階層はガイドレールと段階的なインデントを持ち、アクティブな遷移先に至る分岐のレールが強調されます。リーフのレンダリングは renderLeaf に委譲されるため、ツリーはルーターやドメインに依存しません。

forceOpen を設定するとグループはマウント時に開き、子孫がアクティブになると再び開きます。現在の遷移先の祖先グループに activeBranch を渡すと、そのレールが点灯します。

インストール

pnpm add @tinyrack/ui

長い行はコード領域を横にスクロールして確認できます。

スタイル

@import '@tinyrack/ui/components/tree-nav.css';

長い行はコード領域を横にスクロールして確認できます。

インポート

import { TRTreeNav, type TRTreeNavItem } from '@tinyrack/ui/components/tree-nav';

長い行はコード領域を横にスクロールして確認できます。

使用方法

TRTreeNavTRDocsNavigation の背後にあるプリミティブです。ドメインデータを TRTreeNavItem ノードにマッピングし、リーフごとのデータを data に載せ、renderLeaf からリンクを返します。ルーターの状態から forceOpenactiveBranch を計算すると、正しい分岐が開き、そのレールが強調されます。

API

TRTreeNav

プロパティ既定値用途
itemsreadonly TRTreeNavItem<T>[]必須再帰的なツリーデータです。
renderLeaf(item, state) => ReactNode必須リーフノードをレンダリングします。statedepth が含まれます。
renderGroupLabel(item, state) => ReactNodeグループ label任意のカスタムグループラベルの内容です。
defaultGroupsOpenbooleanfalseアクティブな分岐を含まないグループも開きます。
labelstring'Navigation'ナビゲーションランドマークのアクセシブル名です。

TRTreeNav はネイティブの nav プロパティ、classNamestyle、イベント、data 属性、React 19 の ref も転送します。

TRTreeNavItem

group ノードは keylabel、再帰的な children、任意の forceOpenactiveBranch を持ちます。leaf ノードは key と、renderLeaf に渡される汎用の data ペイロードを持ちます。エクスポートされる型は TRTreeNavItemTRTreeNavGroupTRTreeNavLeafTRTreeNavProps です。

スタイル

core トークンの後に @tinyrack/ui/components/tree-nav.css を読み込みます。--tr-tree-nav-rail-color--tr-tree-nav-indent を上書きして、ガイドレールと深さのインデントを調整します。