import { useEffect, useRef, useState } from 'react'; import { useUIF } from './UIFContext'; /** The field's Windows menu: opens .history, .memory, .prompt, .persona and .model. */ export function WindowsMenu() { const uif = useUIF(); const { windows } = uif; const [open, setOpen] = useState(false); const ref = useRef(null); useEffect(() => { if (!open) return; const onDown = (e: PointerEvent) => { if (!ref.current?.contains(e.target as Node)) setOpen(false); }; document.addEventListener('pointerdown', onDown); return () => document.removeEventListener('pointerdown', onDown); }, [open]); return (
{open && (
e.key === 'Escape' && setOpen(false)}> {windows.defs.map(({ id: kind, icon, file, detail }) => ( ))}
)}
); }