"use client"
import { useEffect, useState, useCallback } from "react"
import { ChevronRight, ChevronDown, Folder, Loader2 } from "lucide-react"
interface DirNode {
name: string
path: string
has_children: boolean
}
interface DirectoryTreeProps {
currentPath: string
onNavigate: (path: string) => void
}
interface TreeNodeProps {
node: DirNode
depth: number
isActive: boolean
isExpanded: boolean
isLoading: boolean
subdirs: DirNode[]
basePath: string
onExpand: (path: string) => void
onNavigate: (path: string) => void
}
const TreeNode = ({
node,
depth,
isActive,
isExpanded,
isLoading,
subdirs,
basePath,
onExpand,
onNavigate,
}: TreeNodeProps) => {
return (
{node.has_children ? (
) : (
)}
{isExpanded && subdirs.length > 0 && (
{subdirs.map((child) => (
))}
)}
)
}
const BookmarkButton = ({
label,
path,
onNavigate,
}: {
label: string
path: string
onNavigate: (path: string) => void
}) => (
)
export function DirectoryTree({
currentPath,
onNavigate,
}: DirectoryTreeProps) {
const [expanded, setExpanded] = useState>(new Set())
const [childrenMap, setChildrenMap] = useState