Skip to main content
Mintlify

Search documentation

Type to search this documentation.

On this pageOverview

Tree

Use the tree component to display hierarchical file and folder structures with collapsible nodes and syntax highlighting for path names.

Use tree components to display hierarchical structures like file systems, project directories, or nested content. The tree component supports keyboard navigation and accessibility features.

Create trees with either a Markdown list or the Tree.Folder and Tree.File components. <Tree> and <FileTree> are aliases, so either tag works with either syntax.

Use the Markdown list syntax for quick, static trees where every folder can expand by default. Use the component syntax when you need to control open state per folder with defaultOpen, mark folders as non-interactive with openable, or mix files and folders at arbitrary depth.

Write a nested Markdown list inside <FileTree> (or <Tree>) to describe a folder structure. Add a trailing slash to mark a folder, or nest items under it. Folders that contain nested items expand by default.

docs
index.mdx
guides
configuration.mdx
docs.config.ts
File
<FileTree>

- docs/
  - index.mdx
  - guides/
    - configuration.mdx
- docs.config.ts

</FileTree>

Leave a blank line after the opening tag and before the closing tag so that the list parses as Markdown. Names strip inline formatting like `code`, **bold**, or _italic_.

app
layout.tsx
page.tsx
global.css
lib
utils.ts
db.ts
package.json
tsconfig.json
Tree
<Tree>
  <Tree.Folder name="app" defaultOpen>
    <Tree.File name="layout.tsx" />
    <Tree.File name="page.tsx" />
    <Tree.File name="global.css" />
  </Tree.Folder>
  <Tree.Folder name="lib">
    <Tree.File name="utils.ts" />
    <Tree.File name="db.ts" />
  </Tree.Folder>
  <Tree.File name="package.json" />
  <Tree.File name="tsconfig.json" />
</Tree>

Create deeply nested structures by nesting Tree.Folder components within each other.

app
layout.tsx
page.tsx
api
auth
route.ts
route.ts
components
button.tsx
dialog.tsx
tabs.tsx
package.json
Nested
<Tree>
  <Tree.Folder name="app" defaultOpen>
    <Tree.File name="layout.tsx" />
    <Tree.File name="page.tsx" />
    <Tree.Folder name="api" defaultOpen>
      <Tree.Folder name="auth">
        <Tree.File name="route.ts" />
      </Tree.Folder>
      <Tree.File name="route.ts" />
    </Tree.Folder>
    <Tree.Folder name="components">
      <Tree.File name="button.tsx" />
      <Tree.File name="dialog.tsx" />
      <Tree.File name="tabs.tsx" />
    </Tree.Folder>
  </Tree.Folder>
  <Tree.File name="package.json" />
</Tree>

Add the highlight property to Tree.File or Tree.Folder to mark the current item. Use it to draw attention to a file or folder you reference in nearby prose, such as the file a reader should open next.

Highlighting a folder also tints its descendants, so the active path stands out.

app
layout.tsx
page.tsx
api
route.ts
package.json
Highlighted
<Tree>
  <Tree.Folder name="app" defaultOpen>
    <Tree.File name="layout.tsx" />
    <Tree.File name="page.tsx" highlight />
    <Tree.Folder name="api" defaultOpen highlight>
      <Tree.File name="route.ts" />
    </Tree.Folder>
  </Tree.Folder>
  <Tree.File name="package.json" />
</Tree>

The --tree-highlight CSS variable defines the highlight color. Set it on the Tree root component to override the color for that tree.

Custom
<Tree style={{ "--tree-highlight": "rgb(59 130 246)" }}>
  <Tree.Folder name="app" defaultOpen>
    <Tree.File name="page.tsx" highlight />
  </Tree.Folder>
</Tree>

The tree component supports keyboard navigation.

  • Arrow keys: Navigate up and down through visible items.
  • Right arrow: Expand a closed folder or move to the first child of an open folder.
  • Left arrow: Collapse an open folder or move to the parent folder.
  • Home: Jump to the first item in the tree.
  • End: Jump to the last visible item in the tree.
  • Enter/Space: Toggle folder open/closed state.
  • *: Expand all sibling folders at the current level.
  • Type-ahead search: Type characters to jump to items that start with those characters.
  • className (string) — Additional CSS classes to apply to the tree container.
  • name (string, required) — The name of the folder displayed in the tree.

  • defaultOpen (boolean) — Whether the folder expands by default.

  • openable (boolean) — Whether users can open and close the folder. Set to false for non-interactive folders.

  • highlight (boolean) — Whether to highlight the folder as the active item. Emphasizes the active path by tinting descendants.

  • name (string, required) — The name of the file displayed in the tree.

  • highlight (boolean) — Whether to highlight the file as the active item.

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu