You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/src/uix/eidos/components/tooltip/README.md

60 lines
3.4 KiB

# 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.

Powered by TurnKey Linux.