parent
5c0137e57e
commit
ae5589b0d4
@ -0,0 +1,51 @@
|
||||
# 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 `--soma-tooltip-content-transform-origin` para animaciones
|
||||
origin-aware y `--soma-tooltip-content-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.
|
||||
Loading…
Reference in new issue