Conversation
Added a visually hidden "Skip to main content" link to the root `App.tsx` that becomes visible on keyboard focus. Updated `ContentView.tsx` to use semantic `<main>` tags with an ID and `tabIndex={-1}` for programmatic focus without visible focus rings.
Co-authored-by: ELO2026X <153048533+ELO2026X@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
💡 What
Added a "Skip to main content" anchor link as the very first element in the DOM tree within
App.tsx.Updated the main layout wrapper in
ContentView.tsxto use a semantic<main>tag withid="main-content"andtabIndex={-1}.🎯 Why
A standard UX/a11y requirement. When users navigate complex layouts (like one containing an elaborate sidebar) using a keyboard, they shouldn't have to tab through every single navigation item to reach the core visualizer and content. The skip link allows keyboard users and screen readers to bypass the sidebar navigation entirely.
📸 Before/After
Before:
Keyboard users would load the page and have to tab through ~9 distinct effect buttons in the sidebar before reaching the actual interactive 3D model controls.
After:
The very first 'Tab' key press reveals a "Skip to main content" button. Pressing 'Enter' immediately shifts focus to the 3D model viewer area, bypassing the sidebar entirely.
♿ Accessibility
<div>to a semantic<main>tag.sr-only->focus-visible:not-sr-only).<main>wrapper can correctly receive programmatic focus without showing a visually jarring browser default focus outline viafocus:outline-noneandtabIndex={-1}.PR created automatically by Jules for task 10151868205155574346 started by @ELO2026X