Trees

A file tree rendering library

@pierre/trees is an open source file tree rendering library. It's built for performance and flexibility, is super customizable, and comes packed with features. Made with love by The Pierre Computer Company.

Documentation

Currently v0.0.1-beta.2

Flatten empty directories

Collapse single-child folder chains into a single item to save clicks and improve user experience. Compare the two views below: hierarchical (nested folders) vs flattened (single-child chains collapsed into one row).

Hierarchical

Flattened

Show Git status on files

Use the gitStatus prop to show indicators on files for added, modified, and deleted files. Folders that contain changes get their own styling as a hint of nested changes. Toggle between two datasets to simulate status updates from your VCS.

Drag and drop

Move files and folders by dragging them onto other folders or the root. Drop targets open automatically when you hover. Keyboard drag and drop is supported; dragging is disabled while search is active.

Default

Enable with dragAndDrop: true.

Control file updates

Use lockedPaths to prevent specific paths from being dragged.

Accessible from the jump

With built-in keyboard navigation, focus management, and ARIA roles (tree, treeitem, group), Trees are immediately accessible to all users. We've designed Trees to meet WCAG 2.1 expectations.

Try it: Tab to focus the tree → Arrow keys to move → Enter to expand/collapse or open a file → Space to select. Focus ring and aria-expanded / aria-selected are wired.

Style with Shiki themes

The same Shiki themes used by @pierre/diffs can style the FileTree. Sidebar and Git decoration colors come from your choice of themes. Pick a theme and switch light/dark to see the tree update live.

Loading theme…

Style with CSS variables

Modify CSS custom properties on FileTree via the style prop to override our colors and even theme colors. For example, below are three examples that override our default values and the CSS we used to style the tree. Custom light, dark, and Synthwave '84.

Light mode

Dark mode

Synthwave '84

With love from The Pierre Computer Company

Collectively, our team brings over 150 years of expertise designing, building, and scaling the world's largest distributed systems at Cloudflare, Coinbase, Discord, GitHub, Reddit, Stripe, X, and others.