/** * @fileoverview Saasflare TreeView — recursive expand/collapse tree. * @author Saasflare™ * * Renders a hierarchical list of nodes with disclosure carets. Supports * controlled + uncontrolled expansion and selection, keyboard navigation * (Arrow keys, Home/End), and per-node leading icons. * * @module packages/ui/components/ui/tree-view * @package ui * @layer core * * @example * */ import { type ReactNode } from "react"; import { type SaasflareComponentProps } from "../../providers"; /** A single tree node. */ export interface TreeNode { /** Unique node id (stable across renders). */ id: string; /** Display label or any ReactNode. */ label: ReactNode; /** Leading icon (e.g. file/folder glyph). */ icon?: ReactNode; /** Child nodes (omit for leaves). */ children?: TreeNode[]; /** Disable interaction for this node. */ disabled?: boolean; } /** Props for the TreeView component. */ export interface TreeViewProps extends SaasflareComponentProps { /** Tree data, top-level nodes. */ data: TreeNode[]; /** Controlled expanded ids. */ expanded?: string[]; /** Uncontrolled initial expansion. */ defaultExpanded?: string[]; /** Called when a node is expanded/collapsed. */ onExpand?: (ids: string[]) => void; /** Controlled selected id. */ selected?: string | null; /** Uncontrolled initial selection. */ defaultSelected?: string | null; /** Called when selection changes. */ onSelect?: (id: string | null) => void; /** Additional class names on the root. */ className?: string; } /** * Recursive expand/collapse tree with keyboard navigation. * * @component * @layer core */ export declare function TreeView({ data, expanded, defaultExpanded, onExpand, selected, defaultSelected, onSelect, className, surface, radius, animated, iconWeight, }: TreeViewProps): import("react/jsx-runtime").JSX.Element;