diff --git a/src/components/documents/folder-breadcrumb.tsx b/src/components/documents/folder-breadcrumb.tsx new file mode 100644 index 00000000..dd7acd3b --- /dev/null +++ b/src/components/documents/folder-breadcrumb.tsx @@ -0,0 +1,73 @@ +'use client'; + +import { ChevronRight, Home } from 'lucide-react'; + +import { useDocumentFolders, type FolderNode } from '@/hooks/use-document-folders'; + +interface FolderBreadcrumbProps { + selectedFolderId: string | null | undefined; + onSelect: (folderId: string | null | undefined) => void; +} + +function findPath(tree: FolderNode[], id: string): FolderNode[] | null { + for (const node of tree) { + if (node.id === id) return [node]; + const inChild = findPath(node.children, id); + if (inChild) return [node, ...inChild]; + } + return null; +} + +export function FolderBreadcrumb({ selectedFolderId, onSelect }: FolderBreadcrumbProps) { + const { data: tree = [] } = useDocumentFolders(); + + let label: string; + let path: FolderNode[] = []; + if (selectedFolderId === undefined) { + label = 'All documents'; + } else if (selectedFolderId === null) { + label = 'Root'; + } else { + path = findPath(tree, selectedFolderId) ?? []; + label = path.at(-1)?.name ?? 'Folder'; + } + + return ( + + ); +}