'use client'; import React, { useState } from 'react'; export interface TreeItem { id: string; label: string; children?: TreeItem[]; } export interface TreeviewProps { items: TreeItem[]; label?: string; onSelect?: (item: TreeItem) => void; } export const Treeview: React.FC = ({ items, label = 'شجرة الملفات', onSelect }) => { const [expanded, setExpanded] = useState>({}); const [selectedId, setSelectedId] = useState(null); const toggleExpand = (id: string, e: React.MouseEvent) => { e.stopPropagation(); setExpanded(prev => ({ ...prev, [id]: !prev[id] })); }; const handleSelect = (item: TreeItem) => { setSelectedId(item.id); onSelect?.(item); }; const renderItem = (item: TreeItem) => { const hasChildren = item.children && item.children.length > 0; const isExpanded = !!expanded[item.id]; const isSelected = selectedId === item.id; return (
  • handleSelect(item)} > {hasChildren && ( toggleExpand(item.id, e)} > ▶ )} {item.label}
    {hasChildren && isExpanded && (
      {item.children!.map(child => renderItem(child))}
    )}
  • ); }; return (
      {items.map(item => renderItem(item))}
    ); };