# Eidos Tooltip Fecha de revision: 2026-05-17. ## Baseline Air no tenia `tooltip` en `glm-5:src/uix/air/components`; este componente es una envoltura visual sobre Soma/Morfo, no un port de Air. ## Comparativa | Referencia | Superficie relevante | Estado Eidos | | --- | --- | --- | | Air `glm-5` | No existe `tooltip` en Air. | Sin baseline Air. La referencia local es Soma/Morfo. | | Soma actual | `Group`, `Provider`, `Trigger`, `Content`, `Arrow`; delay/skip-delay, hover/focus, hoverable content, disabled, side/align/collision, Floating CSS vars, `aria-describedby`, `role="tooltip"`. | Cubierto por passthrough. Eidos solo anade receta visual. | | Radix Tooltip | Provider global, Root, Trigger, Portal, Content, Arrow; abre en hover/focus, cierra en activacion del trigger o Escape, custom timings, collision, CSS vars para transform-origin/available size/trigger size. | Cubierto. Se alinea Soma para cerrar al click de trigger por defecto y Eidos consume vars de Floating para medidas/animacion. | | Ark UI Tooltip | Root, Trigger, Positioner, Arrow/ArrowTip, Content; control, root provider, delay, positioning, fixed containers, context. | Cubierto salvo `Positioner`/`ArrowTip` explicitos: en UIX viven dentro de Soma Floating/Arrow. | | Bits UI / shadcn-svelte | Provider recomendado en layout, Root, Trigger, Portal, Content, Arrow; delayDuration, skipDelayDuration, disableHoverableContent, forceMount, Floating vars, nested providers. | Cubierto. `disableCloseOnTriggerClick` se soporta en Soma como escape hatch. | Fuentes externas consultadas: - Radix Tooltip: https://www.radix-ui.com/primitives/docs/components/tooltip - Ark UI Tooltip: https://ark-ui.com/docs/components/tooltip - Bits UI Tooltip: https://bits-ui.com/docs/components/tooltip - shadcn-svelte Tooltip: https://www.shadcn-svelte.com/docs/components/tooltip ## Decisiones - No se crea `Tooltip.Positioner`. La posicion pertenece a Soma Floating; Eidos consume `data-side`, `data-align` y variables CSS publicadas por Soma. - No se crea `Tooltip.ArrowTip`. Soma Arrow ya encapsula la geometria del arrow; la receta solo pinta fill/stroke. - `Tooltip.Content` mantiene `size` y `variant`, y anade `matchAnchorWidth`, `width`, `minWidth`, `maxWidth`, `height`, `minHeight`, `maxHeight` como props visuales responsivas. - Las medidas se serializan como variables privadas del recipe (`--_tooltip-content-*`); el contrato publico de tokens sigue siendo la recipe. - La receta usa `--floating-transform-origin` para animaciones origin-aware y `--floating-available-height` como max-height por defecto cuando Floating ya lo conoce. - Soma cierra al activar/clicar el trigger por defecto, alineado con Radix. Si se necesita mantenerlo abierto, usar `disableCloseOnTriggerClick`. ## Pendiente deliberado - `ignoreNonKeyboardFocus` de Bits queda fuera hasta que haya un caso real en accesibilidad/focus management. No debe vivir en Eidos. - `customAnchor` para Tooltip queda fuera por ahora; Popover ya cubre el caso de panel flotante anclado a otro elemento. Si Tooltip lo necesita, debe anadirse primero a Soma. ## Eventos Sema Tooltip declara 0 eventos semanticos de forma deliberada. Su apertura/cierre es disclosure asistivo de hover/focus, no commit, seleccion ni feedback evaluativo. Si una experiencia necesita percepcion al mostrar ayuda contextual, esa politica debe declararse en el componente que dispara la ayuda, no en Tooltip por defecto.