blob: 459641bb7952ae934b5be32522388267de4ff18d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
import React from 'react';
interface ContextMenuProps {
x: number;
y: number;
items: { label: string; onClick: () => void; danger?: boolean }[];
onClose: () => void;
}
export const ContextMenu: React.FC<ContextMenuProps> = ({ x, y, items, onClose }) => {
return (
<div
className="fixed z-50 bg-white border border-gray-200 shadow-lg rounded-md py-1 min-w-[150px]"
style={{ top: y, left: x }}
onClick={(e) => e.stopPropagation()} // Prevent click through
>
{items.map((item, idx) => (
<button
key={idx}
className={`w-full text-left px-4 py-2 text-sm hover:bg-gray-100 ${item.danger ? 'text-red-600 hover:bg-red-50' : 'text-gray-700'}`}
onClick={() => {
item.onClick();
onClose();
}}
>
{item.label}
</button>
))}
</div>
);
};
|