Info tip
canonAn (i) next to a section heading or field label that opens a short explanation on click or tap.
Owner 3 Oct 2026: no long descriptive text in the base UI — explanations behind (i) (RULES §14). acrm !4504. Glyph is a control: --fg-secondary 4.72:1 / 6.20:1 (AD). Canon 3 Oct 2026 after visual audit of the stories (light/dark).
Used in 51 files · 27 areas · 95× — components/MergeDialog, components/SectionBlock, components/accounting, components/acl, components/agent-desk, components/assistant …
Keyboard
- Native
<button>: Tab reaches the (i), Enter and Space toggle the panel. - Esc closes the panel and returns focus to the (i); it is stopped in the capture phase, so a surrounding Dialog stays open.
- The panel holds no focusable content; focus stays on the button while it is open.
ARIA
- The button has an accessible name from
label(default "Vysvětlení"), plusaria-expandedandaria-controlspointing at the panel. - While open the button is also
aria-describedbythe panel, so a screen reader reads the explanation right after the name. - The panel is
role="note"; it is portalled, soaria-controls/aria-describedbyare the only link to the button — keep them. - Pass a specific
labelwhen one screen has several (i) next to each other ("Vysvětlení: Telefonní čísla").
Focus
- Focus ring
2px solid var(--accent), offset 1px, following--radius-sm. - Closing by Esc returns focus to the button; closing by an outside tap leaves focus where the user tapped.
Touch
- Hit area
--tap-min(44px) onpointer: coarsevia::before; the visible button stays 24px. - Tapping outside closes the panel (Esc and hover do not exist on a phone).
- The panel stays 16px inside a 390px viewport and flips above the (i) when there is no room below.
Contrast
Ratios from packages/ui/src/tokens/tokens.css (WCAG 2.x):
- Panel text
--fgon--surface-100: 17.59:1 (light), 14.53:1 (dark). - Glyph at rest
--fg-secondary(ink-500): #707477 on #ffffff = 4.72:1 (light), #9a9ca1 on #1b1c1f = 6.20:1 (dark) — above the 3:1 non-text minimum (WCAG 1.4.11). - Glyph hover / open
--fg: 17.59:1 (light), 14.53:1 (dark). - Focus ring
--accent: 4.44:1 (light), 3.83:1 (dark).
Known limits
- The glyph is a control, not supporting text, so it uses
--fg-secondary, not the lighter--fg-muted(AD 3 Oct 2026). - The explanation is not visible without interaction — anything a user needs to complete the task must not be only in the panel.
- The panel closes on scroll, so on a phone a scroll gesture that starts on the page dismisses it.
Source: docs/popover/info-tip.a11y.md · GitLab