import { type HTMLAttributes, type MouseEvent, type ReactNode } from 'react';
export interface STreeNode {
/** 노드 고유 ID */
id: string;
/** 노드 라벨 */
label: ReactNode;
/** 하위 노드 */
children?: STreeNode[];
/** 비활성 상태 */
disabled?: boolean;
}
export interface STreeItemRenderState {
node: STreeNode;
depth: number;
expanded: boolean;
selected: boolean;
indeterminate: boolean;
disabled: boolean;
hasChildren: boolean;
}
export interface STreeItemProps extends Omit, 'children' | 'title' | 'onSelect' | 'onToggle'> {
/** 렌더링할 노드 */
node: STreeNode;
/** 중첩 단계 */
depth?: number;
/** 마지막 자식 여부 */
isLast?: boolean;
/** 상위 depth 별 마지막 자식 여부 */
ancestorLast?: boolean[];
/** 펼침 상태 */
expanded?: boolean;
/** 선택 상태 */
selected?: boolean;
/** depth 연결선 표시 여부 */
guideline?: boolean;
/** 아이템 하단 border 표시 여부 */
border?: boolean;
/** 일부 선택 상태 */
indeterminate?: boolean;
/** 체크박스 표시 여부 */
selectable?: boolean;
/** 사용자 지정 leading 콘텐츠 */
leading?: ReactNode | ((state: STreeItemRenderState) => ReactNode);
/** 사용자 지정 trailing 콘텐츠 */
trailing?: ReactNode | ((state: STreeItemRenderState) => ReactNode);
/** 아이템 확장/축소 토글 */
onToggle?: (node: STreeNode, event?: MouseEvent) => void;
/** 선택 토글 */
onTreeSelect?: (node: STreeNode, event?: MouseEvent) => void;
}
export interface STreeProps extends Omit, 'children'> {
/** 트리 노드 목록 */
items: STreeNode[];
/** 선택된 노드 ID 목록 */
value?: string[];
/** 비제어 선택 초기값 */
defaultValue?: string[];
/** 펼쳐진 노드 ID 목록 */
expandedIds?: string[];
/** 비제어 펼침 초기값 */
defaultExpandedIds?: string[];
/** 체크박스 표시 여부 */
selectable?: boolean;
/** depth 연결선 표시 여부 */
guideline?: boolean;
/** 아이템 하단 border 표시 여부 */
border?: boolean;
/** 부모 선택 시 하위 노드까지 함께 토글 */
cascadeSelection?: boolean;
/** 사용자 지정 leading 콘텐츠 */
leading?: ReactNode | ((state: STreeItemRenderState) => ReactNode);
/** 사용자 지정 trailing 콘텐츠 */
trailing?: ReactNode | ((state: STreeItemRenderState) => ReactNode);
/** 선택 변경 */
onValueChange?: (value: string[], node: STreeNode) => void;
/** 펼침 변경 */
onExpandedChange?: (expandedIds: string[], node: STreeNode) => void;
}
export declare const STreeItem: import("react").ForwardRefExoticComponent>;
export declare const STree: import("react").ForwardRefExoticComponent>;