diff --git a/app/components/workbench/FileTree.tsx b/app/components/workbench/FileTree.tsx index 0882e1f..5b6e7a9 100644 --- a/app/components/workbench/FileTree.tsx +++ b/app/components/workbench/FileTree.tsx @@ -2,6 +2,7 @@ import { memo, useEffect, useMemo, useState, type ReactNode } from 'react'; import type { FileMap } from '~/lib/stores/files'; import { classNames } from '~/utils/classNames'; import { createScopedLogger, renderLogger } from '~/utils/logger'; +import * as ContextMenu from '@radix-ui/react-context-menu'; const logger = createScopedLogger('FileTree'); @@ -159,23 +160,65 @@ interface FolderProps { onClick: () => void; } -function Folder({ folder: { depth, name }, collapsed, selected = false, onClick }: FolderProps) { +interface FolderContextMenuProps { + children: ReactNode; +} + +function ContextMenuItem({ children }: { children: ReactNode }) { return ( - - {name} - + + + {children} + + ); +} + +function FolderContextMenu({ children }: FolderContextMenuProps) { + return ( + + {children} + + + + New file... + New folder... + + + Copy path + Copy relative path + + + Rename... + Delete + + + + + ); +} + +function Folder({ folder, collapsed, selected = false, onClick }: FolderProps) { + return ( + + + {folder.name} + + ); } diff --git a/package.json b/package.json index 15f4d99..6463c96 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "@octokit/rest": "^21.0.2", "@octokit/types": "^13.6.2", "@openrouter/ai-sdk-provider": "^0.0.5", + "@radix-ui/react-context-menu": "^2.2.2", "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-separator": "^1.1.0",