Skip to content
RefineUI

Tree

Expandable hierarchical list for files, folders, and nested navigation.

  • src
    • components
      • Button.tsx
      • Tree.tsx
    • index.ts
  • package.json

Overview

Machine-readable contract from Component Spec.

component: treeexport: Treeversion: 1attributes: data-refineui=tree

Anatomy

Partdata-refineui
roottree
itemtree-item
item_chevrontree-item-chevron
item_contenttree-item-content
item_maintree-item-main
item_paneltree-item-panel
item_triggertree-item-trigger

Variants

AxisValues
sizesm, md, lg

States

ScopeCategoryValues
componentpseudofocus-visible
componentenvironmentforced-colors, dir

Accessibility

SlotElementRoleRequired attributes
treedivtree
tree-itemdivtreeitemaria-selected: required=true, type: boolean
tree-item-triggerbutton

Keyboard

KeyActionNative
ArrowDownnext-trigger
ArrowUpprevious-trigger
Homefirst-trigger
Endlast-trigger
Enteractivatetrue
Spaceactivatetrue

Focus

SectionPropertyValue
visualrequiredtrue
visualselector:focus-visible
behaviorrovingtrue

Layout

PropertyValue
directionlogical
rtltrue
npm install @refineui/react @refineui/tokens
import { Tree, TreeItem, TreeItemContent, TreeItemTrigger } from "@refineui/react";
<Tree defaultExpanded={["src"]} defaultSelected="button">
<TreeItem value="src">
<TreeItemTrigger>src</TreeItemTrigger>
<TreeItemContent>
<TreeItem value="button">
<TreeItemTrigger>Button.tsx</TreeItemTrigger>
</TreeItem>
</TreeItemContent>
</TreeItem>
<TreeItem value="package">
<TreeItemTrigger>package.json</TreeItemTrigger>
</TreeItem>
</Tree>

Built from Foundation spacing, radius, color aliases, and typography tokens (same density as Sidebar / Menu). Chevron expands branches; row click selects. Arrow keys follow the WAI-ARIA tree pattern.

PropDefaultTypeDescription
size"md""sm" | "md" | "lg"Row typography size.
expandedstring[]Controlled expanded item values.
defaultExpandedstring[]Uncontrolled initial expanded values.
onExpandedChange(value: string[]) => voidFires when expansion changes.
selectedstring | nullControlled selected item value.
defaultSelectedstringUncontrolled initial selection.
onSelectedChange(value: string | null) => voidFires when selection changes.
PropDefaultTypeDescription
valuestringUnique identifier (required).
disabledfalsebooleanDisables selection and expansion.

Focusable row label. Shows a chevron when the item has TreeItemContent.

Nested TreeItem group. Mounted only while the parent is expanded.