Components

Tree View

Tree View component with multiple variants and sizes.

Client Only

Installation

pnpm dlx @docyrus/cli add @docyrus/ui-tree-view
Required Packages(4 packages)
pnpm add @dnd-kit/core @dnd-kit/utilities motion @emotion/is-prop-valid
UI Primitives(8 components)
npx shadcn@latest add badge button checkbox collapsible context-menu dropdown-menu hover-card input

Usage

import {
  TreeView
} from "@docyrus/ui/components/tree-view";

<TreeView
  variant="default"
  size="sm"
  ref={...}
  data={TreeViewItem[]}
  showExpandAll
  showCheckboxes
  checkboxPosition="left"
  searchPlaceholder="..."
  selectionText="..."
  checkboxLabels={...}
  getIcon={() => {}}
  onSelectionChange={(selectedItems: TreeViewItem) = void[]}
  onAction={(action: string, items: TreeViewItem) = void[]}
  onCheckChange={() => {}}
  onDataChange={(nextData: TreeViewItem, details: TreeViewMoveDetails) = void[]}
  draggable
  canDropInside={() => {}}
  iconMap={...}
  menuItems={TreeViewMenuItem[]}
  showInfo
  maxHeight="..."
  defaultExpandedIds={Readonlystring[]}
  expandFolderOnRowClick
  onItemClick={() => {}}
  selectOnRowClick
/>

Variants

VariantDescription
defaultDefault style
outlineOutline — border-2 border-border
ghostGhost — border-transparent shadow-none

Sizes

SizeDescription
smSmall — text-xs
defaultDefault — text-sm
lgLarge — text-base

API Reference

PropTypeDefault
variant"default" | "outline" | "ghost""default"
size"sm" | "default" | "lg""default"
refRef<HTMLDivElement>—
dataTreeViewItem[]—
showExpandAllboolean—
showCheckboxesboolean—
checkboxPositionTreeViewCheckboxPosition—
searchPlaceholderstring—
selectionTextstring—
checkboxLabels{ check: string; uncheck: string }—
getIcon(item: TreeViewItem, depth: number) => ReactNode—
onSelectionChange(selectedItems: TreeViewItem[]) => void—
onAction(action: string, items: TreeViewItem[]) => void—
onCheckChange(item: TreeViewItem, checked: boolean) => void—
onDataChange(nextData: TreeViewItem[], details: TreeViewMoveDetails) => void—
draggableboolean—
canDropInside(item: TreeViewItem) => boolean—
iconMapTreeViewIconMap—
menuItemsTreeViewMenuItem[]—
showInfoboolean—
maxHeightstring—
defaultExpandedIdsReadonlyArray<string>—
expandFolderOnRowClickboolean—
onItemClick(item: TreeViewItem) => void—
selectOnRowClickboolean—
classNamestring—

On this page