TreeNode

Collapsible tree node with expand/collapse arrow, icon, label, optional badges, and nested children.

Import

import { TreeNode } from "@gumtree/ui/chat/TreeNode";

Props

PropTypeDefaultDescription
label*string-Node label text
iconIconName-Phosphor icon name
iconEmojistring-Emoji icon (alternative to icon)
iconColorstring-CSS color for the icon
depthnumber0Nesting depth (controls left padding)
expandedbooleantrueWhether the node is expanded
activeboolean-Active/selected state
unreadboolean-Has unread messages
boldboolean-Bold label (for root nodes)
dimboolean-Dimmed label
labelColorstring-CSS color override for label
labelWeightstring-CSS font-weight override for label
badgesComponentChildren-Badge elements to show after the label
hrefstring-Link for the label
childrenComponentChildren-Nested child rows

Examples

Org with Nested Repos

An org node containing channel and repo sub-trees.

🏢necessary
📦example-app/4
!channel
🔃pr/
!1313open
!130open
<TreeNode label="necessary" iconEmoji="🏢" bold>
  <TreeNode label="example-app/" iconEmoji="📦" depth={1}
    badges={<TreeBadge variant="count">4</TreeBadge>}>
    <ChannelRow type="auto" label="channel" italic depth={2} />
    <TreeNode label="pr/" depth={2} iconEmoji="🔃" iconColor="#7a3e9d"
      labelColor="#7a3e9d" labelWeight="600">
      <ChannelRow type="auto" label="131" depth={3} unread
        badges={<><TreeBadge variant="unread">3</TreeBadge>
        <TreeBadge variant="state" state="open">open</TreeBadge></>} />
    </TreeNode>
  </TreeNode>
</TreeNode>

Collapsed Node

Nodes can start collapsed.

📦lang-core/
<TreeNode label="lang-core/" iconEmoji="📦" depth={1} expanded={false} dim />