HomePluginsToolsWorkflowAboutContact
GetSet

Premium UI/UX layout engines, customizable micro-interaction plugins, and high-performance components for modern web developers.

Plugins

  • Carousel
  • Select
  • Zoom
  • FlexoGrid
  • Sortable
  • Modal
  • Drawer
  • Tooltip
  • Popover
  • Toast
  • ContextMenu
  • Tabs
  • Accordion
  • Reveal
  • Autocomplete
  • Tags
  • Range
  • DatePicker
  • Upload
  • Cropper
  • Table
  • Tree
  • Editor

Company

  • Home
  • Plugins
  • Developer Tools
  • Showcase
  • Our Process
  • About Us
  • Contact

Policies

  • Terms and Conditions
  • Privacy Policy
  • Accessibility Policy
  • Cookie Policy

© 2026 GetSet. All rights reserved.

Crafted for frontend excellence.

Your Bundle

Your bundle is empty

Add plugins from the catalog to build one combined CDN link — like picking font families.

Browse plugins
Data Plugin

GS Tree

Treeview with 8 visual variants, tri-state checkboxes, inline editing + full CRUD, sortable-grade drag, lazy loading, filtering, colored tiles and keyboard nav.

Latest: v1.0.2
Downloads last month: 318
Visit Demo Website

Install Package

npm i @get-set/gs-tree
or via CDN
<link rel="stylesheet" href="https://cdn.get-set.it/gs-tree/latest/gs-tree.min.css">
<script src="https://cdn.get-set.it/gs-tree/latest/gs-tree.min.js"></script>
Interactive Playground

Live Sandbox

Tree.jsx
1
2
3
4
5
6
7
8
9
import Tree from '@get-set/gs-tree';

export default function App() {
  return (
    <Tree>
      <div className="content">Your Tree content</div>
    </Tree>
  );
}
Live Preview

Options

Configuration Values

Reference?Reference option.
Selectable?Selection mode. false | 'single' (default) | 'multiple'.
Drag Handle?Drag handle: `false` = whole-row drag (default), or a grip style.
Cancel?CSS selector; a pointer-down on a matching element (or its descendants) in a node does NOT start a drag.
Drop Indicator?Drop-position indicator style.
Drag Class?Extra class on the grabbed row (and its ghost) while dragging.
Ghost Class?Extra class on the ghost / drop indicator.
Sort Animation?Drop-settle (FLIP) reflow duration in ms.
Sort Easing?CSS easing for the drop-settle reflow.
Add Node Label?Label given to a node created by the built-in "add" action.
Filter?Filter string — non-matching nodes are hidden, ancestors kept + expanded.
Animation Duration?Animation duration in ms.
Animation Easing?CSS easing for the expand/collapse animation.
Variant?Visual variant (row/container skin).
Twisty?Twisty (expander) glyph style.
Default Icons?Built-in icons for nodes without an `icon`.
Child Animation?Staggered entrance animation for children on expand.
Empty Text?Message shown when no nodes are visible (empty data or filter miss).
Theme?Visual theme. `auto` follows prefers-color-scheme.
Accent Color?Accent color (CSS var --gstree-accent) for selection / focus.
Size?Size preset. Default 'md'.
Indent?Indent per depth level (px).
Class Name?Extra class name applied to the tree root.

Feature Flags

API Specifications

OptionTypeDefaultDescription
referencestringnoneReference.
nodesGSTreeNode[]noneThe node tree.
expandedKeysGSTreeKey[]noneControlled expanded keys.
defaultExpandedGSTreeKey[]noneUncontrolled initial expanded keys.
defaultExpandAllbooleanfalseExpand every parent on mount.
accordionbooleanfalseOnly one branch open at a time. Default false.
checkablebooleanfalseShow checkboxes. Default false.
checkedKeysGSTreeKey[]noneControlled checked keys.
defaultCheckedGSTreeKey[]noneUncontrolled initial checked keys.
checkStrictlybooleanfalseParent/child checkboxes are independent (no cascade). Default false.
selectableGSTreeSelectable'single'Selection mode. false | 'single' (default) | 'multiple'.
selectedKeysGSTreeKey[]noneControlled selected keys.
defaultSelectedGSTreeKey[]noneUncontrolled initial selected keys.
draggablebooleanfalseEnable node drag-reorder. Default false.
dragHandleGSTreeDragHandlefalseDrag handle: `false` = whole-row drag (default), or a grip style.
cancelstringnoneCSS selector; a pointer-down on a matching element (or its descendants) in a node does NOT start a drag. Use for custom interactive content inside node labels. The built-in twisty/checkbox/row-actions/rename-input are already excluded. Works for whole-row and dragHandle modes, mouse and touch. Example: `'button, input, a, [data-no-drag]'`.
dragGhostbooleantrueShow a floating clone of the row that follows the cursor. Default true.
liftbooleantrueLift the grabbed row (shadow + slight scale/tilt). Default true.
dropIndicatorGSTreeDropIndicator'pill'Drop-position indicator style. Default 'pill'.
dropZoneHighlightbooleantrueHighlight the tree while a drag is in progress. Default true.
autoScrollbooleantrueAuto-scroll the tree when the cursor nears its top/bottom edge. Default true.
dragClassstringnoneExtra class on the grabbed row (and its ghost) while dragging.
ghostClassstringnoneExtra class on the ghost / drop indicator.
sortAnimationnumber200Drop-settle (FLIP) reflow duration in ms. Default 200.
sortEasingstringnoneCSS easing for the drop-settle reflow.
editablebooleannoneInline-rename a node on double-click / F2. Default false.
nodeActionsboolean | GSTreeAction[]noneHover row-action buttons. `true` shows the built-ins add + rename + delete; an array picks/orders built-ins and adds custom buttons. Default false.
addNodeLabelstringnoneLabel given to a node created by the built-in "add" action.
confirmDeletebooleannoneConfirm before the built-in "delete" removes a node. Default false.
filterstringnoneFilter string — non-matching nodes are hidden, ancestors kept + expanded.
animationbooleantrueExpand/collapse height animation. `false` disables it. Default true.
animationDurationnumber200Animation duration in ms. Default 200.
animationEasingstring'cubic-bezier(0.16, 1, 0.3, 1)'CSS easing for the expand/collapse animation.
reducedMotion'auto' | boolean'auto'Honor prefers-reduced-motion. 'auto' | true | false. Default 'auto'.
variantGSTreeVariant'default'Visual variant (row/container skin). Default 'default'.
twistyGSTreeTwisty'chevron'Twisty (expander) glyph style. Default 'chevron'.
defaultIconsGSTreeDefaultIconsfalseBuilt-in icons for nodes without an `icon`. Default false.
iconTilesbooleanfalseWrap each icon in a rounded, tinted tile (uses the node's `color`, else the accent). The Notion/macOS/Linear look. Default false.
childAnimationGSTreeChildAnimation'fade'Staggered entrance animation for children on expand. Default 'fade'.
showCountbooleanfalseShow a child-count badge on parents (static children only). Default false.
emptyTextstringnoneMessage shown when no nodes are visible (empty data or filter miss).
themeGSTreeTheme'auto'Visual theme. `auto` follows prefers-color-scheme. Default 'auto'.
accentColorstringnoneAccent color (CSS var --gstree-accent) for selection / focus.
rtlbooleanfalseRight-to-left layout. Default false.
sizeGSTreeSize'md'Size preset. Default 'md'.
indentnumber20Indent per depth level (px). Default 20.
showLinesbooleanfalseDraw connector/guide lines. Default false.
showIconsbooleantrueShow a leading icon per node. Default true.
classNamestringnoneExtra class name applied to the tree root.

Technical Features

8 Variants

Rail, pills, cards, glass, minimal and more.

Tri-State Checkboxes

Parent/child cascade with indeterminate.

Inline Editing

Add, rename, delete and duplicate nodes.

Drag Reorder

Sortable-grade drag with a lifted ghost.