Skip to content

🎨 Palette: Add skip to main content link - #111

Open
ELO2026X wants to merge 1 commit into
mainfrom
palette-skip-to-content-5725717146487090946
Open

ELO2026X wants to merge 1 commit into
mainfrom
palette-skip-to-content-5725717146487090946

Conversation

@ELO2026X

Copy link
Copy Markdown
Owner

💡 What

Added a "Skip to main content" link at the top of the application that allows keyboard and screen reader users to bypass the repetitive Effects Explorer sidebar navigation and jump straight to the active 3D visualization view.

🎯 Why

Without a skip link, users navigating via keyboard or assistive technologies must tab through every effect category and button in the sidebar before they can interact with the main content area (such as the 3D model controls or the upload button). This creates a frustrating and inefficient experience. The skip link dramatically reduces interaction friction for these users.

📸 Before/After

Before: Keyboard users load the page and press "Tab". Focus lands on the first item in the sidebar ("Cel Shading"). They must press "Tab" ~9 times to reach the main content area.
After: Keyboard users load the page and press "Tab". Focus lands on an immediately visible "Skip to main content" link. Pressing "Enter" instantly focuses the main content area, bypassing the entire sidebar. For mouse users, the UI remains completely unchanged (the link remains visually hidden).

♿ Accessibility

  • WCAG 2.4.1 Bypass Blocks: Directly addresses the requirement to provide a mechanism to bypass blocks of content that are repeated on multiple Web pages.
  • Focus Management: Uses tabIndex={-1} to ensure the target <main> container can receive programmatic focus after the skip link is clicked, maintaining correct tab order flow without forcing the user to tab into the container first.
  • Semantic HTML: Upgraded the generic <div className="flex-1..."> wrapper for the main view to a semantic <main> tag, improving document structure for screen readers.

PR created automatically by Jules for task 5725717146487090946 started by @ELO2026X

- Added a visually hidden "Skip to main content" link to `App.tsx` that appears only when focused via keyboard.
- Converted `ContentView` wrapper `div` to a `<main id="main-content">` tag to act as the skip link target.
- Added `tabIndex={-1}` and `focus:outline-none` to `<main>` to allow programmatic focus without showing an unsightly visual focus ring to mouse users.
- Logged a learning to `.jules/palette.md` regarding proper skip link focus management in React apps using Tailwind CSS.

Co-authored-by: ELO2026X <153048533+ELO2026X@users.noreply.github.com>
@google-labs-jules

Copy link
Copy Markdown
Contributor

👋 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 @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant