Tooltip
Adapter React independente em que Ark UI fornece as parts e Zag mantém hover, focus, delays, posicionamento e Escape.
Design
Preview funcional
Executado pelo adapter independente Ark UI com comportamento Zag.
Anatomia
2 Container do tooltip (
.ds-tooltip) — fundo escuro, posicionado relativo ao trigger.3 Seta — pseudo-elemento CSS apontando para o trigger.
4 Conteúdo — somente texto, sem elementos interativos.
Posições
O conteúdo do tooltip aparece no lado especificado do trigger. A seta (via ::before) aponta para o elemento trigger.
Com buttons de ícone
Tooltips são especialmente úteis em buttons icon-only para esclarecer sua função.
Mapeamento de tokens
| Propriedade | Token | Variável CSS |
|---|---|---|
| fundo | semantic.background.inverse | --ds-background-inverse |
| texto | semantic.brand.content.default | --ds-brand-content-default |
| padding-x | component.tooltip.content.padding-x.default | --ds-tooltip-content-padding-x-default |
| padding-y | component.tooltip.content.padding-y.default | --ds-tooltip-content-padding-y-default |
| border-radius | component.tooltip.content.radius.default | --ds-tooltip-content-radius-default |
| label font-size | component.tooltip.label.font-size.default | --ds-tooltip-label-font-size-default |
| label line-height | component.tooltip.label.line-height.default | --ds-tooltip-label-line-height-default |
| label font-weight | component.tooltip.label.font-weight.default | --ds-tooltip-label-font-weight-default |
| arrow base | component.tooltip.arrow.base.default | --ds-tooltip-arrow-base-default |
| arrow depth | component.tooltip.arrow.depth.default | --ds-tooltip-arrow-depth-default |
| z-index | semantic.z.tooltip | --ds-z-tooltip |
Uso
Quando usar
Boas práticas
Diretrizes de conteúdo
| Regra | Exemplo |
|---|---|
| Abaixo de 80 caracteres | "Editar documento" — não um parágrafo inteiro |
| Caixa de sentença | "Copiar para área de transferência" — não "Copiar Para Área De Transferência" |
| Sem ponto para fragmentos | "Excluir item" — não "Excluir item." |
| Somente texto — sem conteúdo interativo | Sem links, buttons ou elementos de formulário dentro de tooltips |
Quando escolher esta saída
Adote este adapter em projetos que escolheram Ark UI e Zag como arquitetura comportamental. Não o importe dentro da saída shadcn/Base UI.
Implementação
- Status
- Beta
- Distribuição
- Adapter de source
Source do adapter
packages/react/src/ark/tooltip.jsx
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from '@tis/react/ark/tooltip'Acessibilidade
Interação por teclado
| Tecla | Ação |
|---|---|
Tab (para o trigger) | Mostra o tooltip quando o trigger recebe foco |
Escape | Oculta o tooltip |
Tab (saindo) | Oculta o tooltip quando o foco sai do trigger |
Accessibility
| Critério WCAG | Requisito | Status |
|---|---|---|
| 1.4.13 Content on Hover/Focus (AA) | O tooltip deve ser dispensável (Escape), acessível ao mouse (pode entrar no tooltip) e persistente (permanece enquanto hover/focus ativo) | ✓ |
| 4.1.2 Name, Role, Value (A) | Elemento tooltip possui role="tooltip", trigger vinculado via aria-describedby | ✓ |
role="tooltip" — no elemento de conteúdo do tooltip.aria-describedby — no trigger, apontando para o id do tooltip.Tooltips devem aparecer tanto em
hover quanto em focus, e ser dispensáveis com Escape.
Responsabilidade da saída
Preserve a semântica Ark/Zag e valide Escape, interação externa, relações ARIA e retorno de foco.
Evidência de validação
Coberta pelo Storybook da saída independente e por verificações de browser, responsividade, teclado, Axe e bundle.