Repository navigation
fix(site): show the focus ring only after Tab and show a pointer on controls - #638
Merged
Merged
Conversation
aicayzer
commented
Oct 25, 2026
aicayzer
left a comment
Contributor
Author
There was a problem hiding this comment.
Review: checks only
Styling change, looked at in the browser by the builder and again by the session; build, type check and tests pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The keyboard focus ring now appears only after a reader presses Tab or Shift+Tab, never after a click, and buttons, tabs, summaries and selects show a pointer cursor.
:focus-visibleand draw a grey box. The ring is now off after any press of the mouse, pen or finger, and arrow keys, space and typing do not turn it on.pre), tabs, summaries and the fold button draw it inside, so overflow never clips it.app.cssrestores the pointer on enabled controls; disabled andaria-disabledones keep the default.Changes
src/components/pointer-focus.tsx: now records input modality asdata-input="pointer"(onpointerdown) ordata-input="keyboard"(on Tab, not with Ctrl, Alt or Meta) on thehtmlelement. It replaces the blur-after-click for links, which the new rule covers.src/status/routes/__root.tsx: mountsPointerFocuswith a relative import, so the status page, which sharesapp.css, gets the same behavior.src/styles/app.css: new "Pointer and focus" section (cursor rule, the ring, the pointer-mode switch-off for everything but text fields, the inset list). It also turns off the shadow ring Fumadocs adds withfocus-visible:ring-2, so only one ring is drawn. Per-component rules that duplicated or fought it are removed (sidebar, fold button, terminal summary, stepper,cursor: pointerandcursor: defaultcopies).src/styles/visuals.css: removes the interactive diagram button's own focus rule and cursor.src/components/page-table-of-contents.tsx: drops the mobile contents button's own focus ring utilities.src/AGENTS.md: new "Focus" section and a Code Review Rules bullet, so new components inherit the rule.Testing
/guides/keep-in-sync,/guides/connectorand/guides/authenticate: click Copy then ArrowDown leaves:focus-visibletrue with computedoutline-style: noneand no shadow ring; Tab then draws the ring on the code area, on Copy, on a prose link, on the theme switch and GitHub link in the header, on a tab and on the stepper arrows, none clipped. Clicking a sidebar link then ArrowDown draws no ring. The search dialog input draws no ring. A text input clicked in pointer mode keeps its ring. Cursors readpointeron buttons, tabs, summaries and the enabled stepper arrows, anddefaulton the disabled Previous arrow.pnpm build,pnpm build:status,pnpm types:checkandpnpm test(700 tests) pass.Notes for reviewers
opacity-0until the heading is hovered, so a keyboard user lands on it with no visible control or ring.app.css, in other sections.Checklist