Saltar al contenido
EspañolEnglish
Todos los componentes (204)

Tooltip

Capas · Tooltip · .amset-tooltip

Qué es y cuándo usarlo

Ayuda contextual: una frase corta junto a un botón o un enlace. Aparece al pasar el ratón y al llegar con el teclado, que es la mitad que suele faltar.

Cuándo usarlo

  • Aclarar lo que hace un botón de icono o una acción poco evidente: «Copia el NIF al portapapeles».
  • disabled cuando el texto ya se ve entero y el tooltip sobra: devuelve el elemento tal cual, sin envoltorio.
  • En pantallas táctiles, donde no hay ratón que pase por encima, suma 'press' a openOn: se abre y se cierra al pulsar el elemento, y se cierra al pulsar fuera.

Cuándo no

  • Información imprescindible: va en la hint del campo o en el texto, no escondida tras un icono.
  • Más de una frase, o algo que hay que pulsar dentro: Dropdown.
  • Nombrar un botón de icono: eso lo hace su aria-label (IconButton lo obliga); el tooltip solo lo describe.

Teclado: al llegar con Tab al elemento sale al momento, sin esperar el delay; se va al salir el foco, y Escape lo cierra sin mover el foco.

Accesibilidad: se anuncia como tooltip y queda como descripción del elemento que lo dispara, no como su nombre. trigger tiene que ser enfocable (un botón, un enlace): si no, con el teclado no sale nunca. La flecha es adorno.

Aspecto fino: variables CSS --amset-tooltip-*: -background, -ink, -width (14, 16 o 20 rem según el tamaño), -padding-block, -padding-line, -font y -radius. Se pinta en la capa superior del navegador como un popover manual, que no cierra lo que haya abierto al lado: dentro de un diálogo se sigue viendo.

Cómo se ve

<Tooltip trigger={<Button variant="outline">Exportar</Button>}>Se exporta en CSV</Tooltip>

Props

Se importa con import { Tooltip } from '@amset/ui'. Las obligatorias van marcadas.

PropTipoPara qué sirve
childrenobligatoriaReactNodeEl texto de ayuda. Corto: si necesita un parrafo, no es un tooltip.
triggerobligatoriaReactElement<{ readonly onClick?: (event: MouseEvent<HTMLElement>) => void; }>Elemento que lo dispara. Tiene que ser enfocable (un boton, un enlace).
classNamestringSe une a las clases de la biblioteca, no las sustituye.
closeDelaynumberMilisegundos de gracia al salir: evita el parpadeo al pasar de largo.
defaultOpenbooleanAbierto al montar, sin controlarlo desde fuera.
delaynumberMilisegundos antes de aparecer al pasar el raton. Con el foco sale al momento.
disabledbooleanApagado: útil cuando el texto ya se ve entero y el tooltip sobra.
offsetnumberSeparación en píxeles respecto al elemento.
onOpenChange(open: boolean) => voidAvisa de cada intento de abrir o cerrar, venga del raton, del foco o de Escape.
openbooleanAbierto o cerrado, mandado desde FUERA. El raton y el foco siguen avisando por `onOpenChange`, pero ya no deciden: decide quien lo pasa. Es para enseñar la ayuda sin que nadie la pida -el paso de una visita guiada, un aviso tras un error- y para fotografiarla en el banco.
openOnreadonly TooltipOpenOn[]Que la abre. Por defecto `['hover', 'focus']`, que en una pantalla tactil no se ve nunca: ahi hace falta `'press'`, que la alterna al pulsar y la cierra al pulsar fuera. Si se pone `'press'` SIN `'focus'`, el teclado no la abre, asi que normalmente se suma a los otros dos y no los sustituye.
sideTooltipSide—
size"sm" | "md" | "lg"El cuerpo de la letra y el ancho máximo: 14, 16 o 20 rem.

Acepta además los atributos del elemento que pinta: className, style, data-*, aria-* y sus eventos.

Mandos

Estas variables CSS son la forma de adaptarlo. Se declaran sobre el selector del componente, no en :root: la hoja las redeclara en la propia regla y una declaración en el mismo elemento gana siempre.

VariablePor defecto
--amset-tooltip-backgroundvar(--amset-ink)
--amset-tooltip-inkvar(--amset-surface)
--amset-tooltip-width16rem
--amset-tooltip-padding-blockvar(--amset-space-2)
--amset-tooltip-padding-linevar(--amset-space-3)
--amset-tooltip-fontvar(--amset-text-sm)
--amset-tooltip-radiusvar(--amset-radius)

Cómo se cambia

.amset-tooltip {
  --amset-tooltip-background: ...;
  --amset-tooltip-ink: ...;
}

En el banco de pruebas

Cada estado y cada variante, para tocarlos de uno en uno, en su ficha de ui.amset.tech: