'use client'; import { ChevronRight, ChevronDown } from 'lucide-react'; import { DOMAIN_TEXT_COLORS } from '@/lib/taxonomy/types'; interface TreeNodeProps { code: string; name: string; count?: number; isExpanded?: boolean; isSelected?: boolean; isLeaf?: boolean; level: 'domain' | 'category' | 'subcode'; domainKey: string; onToggle?: () => void; onClick?: () => void; searchMatch?: boolean; children?: React.ReactNode; } export default function TreeNode({ code, name, count, isExpanded = false, isSelected = false, isLeaf = false, level, domainKey, onToggle, onClick, searchMatch = false, children, }: TreeNodeProps) { const textColor = DOMAIN_TEXT_COLORS[domainKey] || 'text-gray-400'; const handleClick = (e: React.MouseEvent) => { e.stopPropagation(); if (isLeaf) { onClick?.(); } else { onToggle?.(); } }; const handleChevronClick = (e: React.MouseEvent) => { e.stopPropagation(); onToggle?.(); }; const getPadding = () => { switch (level) { case 'domain': return 'pl-2'; case 'category': return 'pl-6'; case 'subcode': return 'pl-10'; default: return 'pl-2'; } }; return (
{/* Expand/Collapse Icon */} {!isLeaf ? ( ) : ( )} {/* Code */} {code} {/* Name */} {name} {/* Count Badge */} {count !== undefined && ( {count} )}
{/* Children (expanded content) */} {isExpanded && children &&
{children}
}
); }