import React, { useEffect, useRef, useState } from 'react' import { Plus } from 'lucide-react' import { getColumnFieldTypes } from './fieldTypes' /** * "Add Field" button + menu of a container column (edit chrome, floats over the column). Lists every palette * field; picking one calls onAdd(type, label). Escape or a click outside closes the menu. */ export default function ColumnAddFieldMenu({ open, onToggle, onClose, onAdd }) { const [query, setQuery] = useState('') const menuRef = useRef(null) useEffect(() => { if (!open) { setQuery(''); return undefined } const onKey = (e) => { if (e.key === 'Escape') { e.stopPropagation(); onClose() } } const onDown = (e) => { if (menuRef.current && !menuRef.current.contains(e.target)) onClose() } document.addEventListener('keydown', onKey, true) document.addEventListener('mousedown', onDown) return () => { document.removeEventListener('keydown', onKey, true) document.removeEventListener('mousedown', onDown) } }, [open, onClose]) const items = getColumnFieldTypes().filter((t) => t.label.toLowerCase().includes(query.trim().toLowerCase())) return (