Tooltip
Una pista breve al pasar el cursor o enfocar con el teclado que se abre tras un breve reposo, cambia al instante entre vecinos y muestra atajos.
pnpm dlx shadcn@latest add https://hextaui.com/r/tooltip.jsonAñade el componente, los tokens del tema de HextaUI y los componentes de HextaUI de los que depende.
Añade los tokens del tema a tu CSS global, si aún no lo has hecho.
Instala las dependencias.
pnpm add @base-ui/react cnCopia y pega el siguiente código en tu proyecto.
components/ui/tooltip.tsx Actualiza las rutas de importación para que coincidan con la configuración de tu proyecto.
Un tooltip se abre tras un breve reposo sobre el trigger, o de inmediato cuando el trigger recibe el foco del teclado. Una vez que hay uno visible, los vecinos se abren al instante y sin animación, así que recorrer una barra de herramientas se siente como leer etiquetas y no como esperar a cada una.
Ese cambio instantáneo funciona entre tooltips que comparten un TooltipProvider. Envuelve tu app (o una barra de herramientas) en uno para compartir el retraso. Un tooltip sin provider sigue funcionando por sí solo con los mismos valores por defecto.
Lados
Define side en TooltipContent. Los lados lógicos siguen la dirección de lectura, y el tooltip se voltea cuando no hay espacio.
Con una flecha
arrow añade un puntero que permanece sobre el trigger incluso cuando el tooltip se desplaza para ajustarse a la pantalla.
Atajo de teclado
Pon un Kbd o KbdGroup después de la etiqueta. Toma los colores del tooltip y se sitúa al final, mostrando ⌘ en dispositivos Apple y Ctrl en el resto.
Barra de herramientas
Reposa sobre un botón y luego desplázate por el grupo. Los tooltips bajo un mismo TooltipProvider se intercambian al instante mientras te mueves entre ellos.
Deshabilitado
Un botón deshabilitado aún puede explicar por qué con focusableWhenDisabled, que lo mantiene con hover y en el orden de tabulación. disabled en Tooltip desactiva el tooltip.
Contenido largo
El texto se ajusta a un ancho cómodo y nunca sobrepasa el borde de la pantalla, ni siquiera con URLs largas.
Controlado
Pasa open y onOpenChange para controlar tú mismo el tooltip. El motivo te indica qué lo abrió o lo cerró.
Un tooltip, muchos triggers
Crea un handle con createTooltipHandle y pasa un payload desde cada trigger para compartir un único tooltip.
De derecha a izquierda
Dentro de dir="rtl", inline-end se abre a la izquierda y el atajo pasa al otro extremo.
| Key | Acción |
|---|---|
| Tab | Enfocar el trigger con el teclado abre su tooltip de inmediato. |
| Esc | Cierra el tooltip y mantiene el foco en el trigger. |
| EnterSpace | Activa el trigger y cierra el tooltip, para que no tape lo que ocurre a continuación. |
- Un tooltip es una pista visual, no una etiqueta. Dale a los triggers solo con icono un
aria-labelque coincida con el texto del tooltip. - En táctil no se abre nada, y un toque solo hace lo que hace el trigger. No pongas en un tooltip nada que la gente necesite; usa un popover para eso.
- Los usuarios con puntero pueden moverse al tooltip para leerlo o seleccionarlo sin que se cierre.
- Con movimiento reducido, el tooltip se desvanece sin escalar.
Construido sobre el tooltip de Base UI. Cada parte acepta las props de la primitiva que envuelve.
| Prop | Tipo | Predeterminado |
|---|---|---|
delayMilisegundos de reposo sobre un trigger antes de abrir. | number | 300 |
closeDelayMilisegundos antes de cerrar tras salir. | number | 0 |
timeoutCuánto tiempo después de que se cierre uno se abre el siguiente al instante. | number | 400 |
| Prop | Tipo | Predeterminado |
|---|---|---|
open | boolean | – |
defaultOpen | boolean | false |
onOpenChange | (open, details) => void | – |
onOpenChangeCompleteSe llama después de la animación de apertura o cierre. | (open) => void | – |
disabledDesactiva el tooltip. | boolean | false |
disableHoverablePopupSe cierra en cuanto el puntero sale del trigger. | boolean | false |
trackCursorAxis | "none" | "x" | "y" | "both" | "none" |
handleDe createTooltipHandle. | TooltipHandle<Payload> | – |
children | ReactNode | ({ payload }) => ReactNode | – |
| Prop | Tipo | Predeterminado |
|---|---|---|
delaySobrescribe el retraso del provider para este trigger. | number | – |
closeDelay | number | – |
closeOnClick | boolean | true |
disabledImpide que este trigger abra el tooltip. El elemento sigue habilitado. | boolean | false |
handle | TooltipHandle<Payload> | – |
payload | Payload | – |
render | ReactElement | (props, state) => ReactElement | <button> |
| Atributo | Descripción |
|---|---|
data-slot="tooltip-trigger" | El trigger. |
data-popup-open | Presente mientras su tooltip está abierto. |
data-trigger-disabled | Presente cuando el trigger no puede abrir el tooltip. |
| Prop | Tipo | Predeterminado |
|---|---|---|
side | "top" | "bottom" | "left" | "right" | "inline-start" | "inline-end" | "top" |
align | "start" | "center" | "end" | "center" |
sideOffset | number | (data) => number | 6, or 8 with arrow |
alignOffset | number | 0 |
arrow | boolean | false |
collisionPadding | number | 8 |
arrowPadding | number | 8 |
portalPropsComo container o keepMounted. | TooltipPortal props | – |
| Atributo | Descripción |
|---|---|
data-slot="tooltip-content" | El popup. |
data-slot="tooltip-positioner" | El contenedor de posicionamiento alrededor del popup. |
data-side | El lado en el que se abrió tras voltearse. |
data-align | La alineación. |
data-instant | "delay", "focus" o "dismiss" cuando se abre o se cierra sin animación. |
data-starting-style | Presente mientras se anima la entrada. |
data-ending-style | Presente mientras se anima la salida. |
--available-width | Espacio entre el trigger y el borde de la pantalla. |
--transform-origin | El punto desde el que escala el tooltip. |
Lo renderiza arrow por ti. Úsalo directamente solo al componer tu propia parte de contenido.
| Atributo | Descripción |
|---|---|
data-slot="tooltip-arrow" | La flecha. |
data-uncentered | Presente cuando no puede apuntar al centro del trigger. |
- Alert dialogUn diálogo de confirmación para acciones destructivas o importantes que espera el trabajo asíncrono y se convierte en una hoja inferior en móviles.
- CommandUna lista de acciones con búsqueda, en línea o como paleta ⌘K, con páginas, atajos y coincidencias resaltadas.
- Context menuUn menú de acciones con clic derecho o pulsación larga, con submenús, elementos de casilla y de radio, y respuesta al mantener pulsado en pantallas táctiles.
- DialogUna ventana sobre la página para formularios y tareas concretas, con encabezado y pie fijados, anidamiento y una hoja inferior deslizable en móviles.
- DrawerUn panel que se desliza desde cualquier borde y sigue tu dedo, con puntos de anclaje, un tirador funcional y drawers anidados que se apilan.
- Dropdown menuUn menú de acciones y opciones tras un botón, con grupos, submenús, elementos de casilla y de radio, y atajos.
Usado en bloques
Bloques que se construyen sobre Tooltip.
- Prompt InputUn compositor de chat que empieza como una línea tranquila, crece hasta convertirse en una tarjeta mientras escribes y baja cuando empieza la conversación. Enter envía, de forma segura con entrada en japonés y chino. Pega, suelta o elige archivos con vistas previas, progreso y reintento. @ añade archivos y / ejecuta comandos desde un menú junto al cursor. Un selector de modelo con teclas numéricas, un control deslizante de esfuerzo que cobra vida en Max, un anillo de contexto, dictado con forma de onda en vivo, chips de herramientas, una cola para los mensajes escritos mientras se transmite una respuesta y borradores que sobreviven a una recarga.
- Agent TodosMuestra el plan de un agente mientras trabaja. Cada paso pasa de pendiente a por hacer, en curso y hecho, con tiempos en vivo, fallos y las llamadas a herramientas detrás. Una píldora de estado para sobre el compositor, cambios del plan que puedes ver y un paso de revisión para editar el plan antes de ejecutarlo.
- API keysLa página de claves de API de un producto de IA, como las consolas de OpenAI y Anthropic. Crea claves con permisos acotados y caducidad, ve el secreto una sola vez con una copia que lo confirma, revoca con deshacer, renombra en el sitio, rota con un periodo de gracia y consulta el uso por clave.
- ArtifactEl panel junto a un chat de IA que muestra lo que creó el modelo. Páginas web, SVG, documentos y código llegan en streaming y luego pasan a una vista previa en sandbox, con versiones que puedes comparar y restaurar, una división redimensionable y una hoja inferior en móviles.