import type { Id } from "@fileone/convex/_generated/dataModel" import type { DirectoryHandle, DirectoryPathComponent, } from "@fileone/convex/filesystem" import { Link } from "@tanstack/react-router" import { Fragment, useContext } from "react" import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "../../components/ui/breadcrumb" import { Tooltip, TooltipContent, TooltipTrigger, } from "../../components/ui/tooltip" import { useFileDrop } from "../../files/use-file-drop" import { cn } from "../../lib/utils" import { DirectoryPageContext } from "./context" import { dragInfoAtom } from "./state" export function FilePathBreadcrumb({ rootLabel, directoryUrlFn, }: { rootLabel: string directoryUrlFn: (directory: Id<"directories">) => string }) { const { rootDirectory, directory } = useContext(DirectoryPageContext) const breadcrumbItems: React.ReactNode[] = [] for (let i = 1; i < directory.path.length - 1; i++) { breadcrumbItems.push( , ) } return ( {rootDirectory._id === directory._id ? ( {rootLabel} ) : ( )} {breadcrumbItems} {directory.name}{" "} ) } function FilePathBreadcrumbItem({ component, rootLabel, directoryUrlFn, }: { component: DirectoryPathComponent rootLabel: string directoryUrlFn: (directory: Id<"directories">) => string }) { const { isDraggedOver, dropHandlers } = useFileDrop({ destItem: component.handle as DirectoryHandle, dragInfoAtom, }) const dirName = component.name || rootLabel return ( {dirName} Move to {dirName} ) }