diff --git a/frontend/src/components/AnchorSelector.tsx b/frontend/src/components/AnchorSelector.tsx index 98626c84..f9cd06cc 100644 --- a/frontend/src/components/AnchorSelector.tsx +++ b/frontend/src/components/AnchorSelector.tsx @@ -162,9 +162,14 @@ export const AnchorSelector: React.FC = ({ triggerRef.current?.focus(); break; case 'Tab': - // Close on tab and allow default behavior - setIsOpen(false); - setFocusedIndex(-1); + // Trap focus: cycle through options instead of leaving the dropdown + e.preventDefault(); + if (anchors.length === 0) break; + if (e.shiftKey) { + setFocusedIndex(prev => (prev > 0 ? prev - 1 : anchors.length - 1)); + } else { + setFocusedIndex(prev => (prev < anchors.length - 1 ? prev + 1 : 0)); + } break; } }, [isOpen, focusedIndex, anchors, selectedAnchor]);