Repository navigation
Conversation
…cessible Tooltips whose content contains links or buttons used the ARIA tooltip pattern, which cannot hold interactive content: keyboard users could not reach the links and screen readers did not expose them. Add an interactive mode to Tooltip. <Tooltip interactive> renders a non-modal popover that still opens on hover and looks the same, but also opens on keyboard focus, lets Tab move into the content, pins open on click or Enter, and closes on Escape. Plain tooltips are unchanged. Use it for InfoTooltip and for the workspace sharing indicator, audit and connection log details, agent warning, and AI Gateway prompt attribution and AI Governance tooltips.
Keep call-site edits minimal by moving the trigger button reset and focus ring into the interactive trigger, and leaving TooltipProvider wrappers in place. Leave the content through the trigger on Tab so the browser continues the sequence, which removes the custom next-element lookup.
This branch has not been deployed
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.
Tooltips with links in them couldn't be reached by keyboard or screen readers, because the ARIA tooltip pattern doesn't allow interactive content. This adds an opt-in
<Tooltip interactive>. It still opens on hover and looks the same, but it also opens on focus, lets Tab move into the content, stays open after a click or Enter, and closes on Escape. Plain tooltips are unchanged.Fixes DEQ-473 (workspace permissions), DEQ-378 (audit log details) and the rest of DEQ-287 (AI Gateway). It also converts every
InfoTooltiphelp icon, the connection log details and the agent "Troubleshoot" link. Follow-up to #30403.housekeeping edit by @aqandrew: also fixes DEQ-568, fixes DEQ-522, fixes DEQ-223
Review notes
Why opt-in instead of changing every tooltip: at least 50 of the 152 tooltip triggers are buttons or links with their own action, such as refresh or copy. Interactive mode takes over the trigger's click, uses dialog semantics instead of a description, and changes the Tab order, so applying it to every tooltip would break those triggers. It also can't be chosen automatically, because the content isn't rendered until the tooltip opens. That means a new tooltip with links needs
interactiveadded by hand. A lint rule could enforce that later.Worth a close look:
clickandkeydownfrom propagating so clickable table rows don't fire. Ancestors no longer see those events.Tooltip,TooltipTriggerandTooltipContentare now thin wrappers instead of Radix re-exports, so every tooltip goes through them.ResourcesChartbars, whose link hasto=""and goes nowhere.Verification
Tooltip.test.tsxcover keyboard order, Escape, hover not stealing focus, and click pinning.pnpm lintis clean, and all 283 unit test files and all 464 Storybook files pass.