Phase 17: UI Optimization & Polish #24

Merged
luckberg merged 61 commits from gsd/phase-17-ui-optimization-polish into main 2026-06-18 16:24:54 -04:00
Showing only changes of commit 7578d48d3d - Show all commits
+10
View File
@@ -43,6 +43,16 @@ export function useFocusTrap(
const first = focusable[0];
const last = focusable[focusable.length - 1];
// Containment guard (IN-01): if focus has somehow landed outside the dialog
// (programmatic focus, browser quirk), neither boundary condition below
// matches and Tab would walk background content. Pull focus back to the
// first focusable instead of relying on a boundary-only trap.
if (!dialogRef.current.contains(document.activeElement)) {
e.preventDefault();
first.focus();
return;
}
if (e.shiftKey) {
// Shift+Tab: if on first element, wrap to last
if (document.activeElement === first) {