audit pass 8: keyboard accessibility and table semantics

CSS:
- Fix light theme input/select/textarea :focus -> :focus-visible

HTML:
- Worker metrics table: convert label <td> to <th scope="row"> for screen readers
- Add aria-label to worker metrics table
- Sticky table: add scope="col" to all column headers
- Keyboard shortcuts modal table: add scope="col" to headers
- Kanban cards: remove tabindex="0" from role="article" (non-interactive)
- Advanced filter: ensure all 3 label/select pairs have for/id associations

JS:
- Lightbox: fix keydown listener leak by storing bound reference for removeEventListener
- Lightbox: save/restore trigger focus on open/close
- Sortable table: add tabindex="0" and Enter/Space keydown handler on sortable <th>
- Split pane: add tabindex="0", role="separator", aria-label, and arrow/Home/End
  keyboard resize support on divider (5% steps)
- Form validation: handle <select multiple> required check via selectedOptions.length

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-26 20:09:29 -04:00
parent b84d71dd7a
commit e8c1197613
3 changed files with 49 additions and 20 deletions
+3 -3
View File
@@ -3649,9 +3649,9 @@ html[data-theme="light"] .lt-textarea {
color: var(--text-primary);
box-shadow: inset 0 1px 3px rgba(0,0,0,0.05);
}
html[data-theme="light"] .lt-input:focus,
html[data-theme="light"] .lt-select:focus,
html[data-theme="light"] .lt-textarea:focus {
html[data-theme="light"] .lt-input:focus-visible,
html[data-theme="light"] .lt-select:focus-visible,
html[data-theme="light"] .lt-textarea:focus-visible {
border-color: var(--accent-cyan);
box-shadow: var(--box-glow-cyan);
}