@zevra/ui 0.36.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/DECISIONS.md CHANGED
@@ -1655,3 +1655,45 @@ C'est exactement ce qu'il a fait au premier jet, et il avait raison.
1655
1655
  Il a aussi rendu un service immédiat : un `git checkout` d'essai avait
1656
1656
  annulé le nettoyage de `tokens.css`, encore non commité. Le garde a signalé
1657
1657
  la régression dans la minute.
1658
+
1659
+ ## L'infobulle se pose en bas de l'écran sur téléphone (29/08/2026, 0.37.0)
1660
+
1661
+ Le commentaire de `.zv-tooltip` annonçait la dette : « le centrage sur une
1662
+ cible collée au bord peut encore la décaler : limite connue, une variante
1663
+ d'ancrage latéral s'arbitrera si le cas se présente ». Le cas s'est présenté,
1664
+ et il est mesurable.
1665
+
1666
+ Sur le tableau de bord de mcp-factory, à 375 px, le document fait **416 px**
1667
+ de large : barre de défilement horizontale sur toute la page. En masquant les
1668
+ seules infobulles il retombe à 360. Elles sont la cause ENTIÈRE, le bloc de
1669
+ code n'y est pour rien.
1670
+
1671
+ Le mécanisme : `left: 50%; transform: translateX(-50%)` sur une cible proche
1672
+ du bord droit. Le plafond `max-width: calc(100vw - 40px)` ne corrigeait rien,
1673
+ puisque ce n'est pas la largeur qui déborde mais la POSITION.
1674
+
1675
+ ⚠️ Le débordement par la droite, lui, s'entend : il crée un défilement
1676
+ horizontal sur TOUTE la page, y compris là où l'infobulle n'est pas. C'est ce
1677
+ qui le rend cher, et facile à imputer au mauvais bloc.
1678
+
1679
+ **La variante d'ancrage latéral a été écartée.** Elle aurait obligé chaque
1680
+ app à choisir le bon côté pour chaque bulle (quarante et une sur ce seul
1681
+ tableau de bord) et à le refaire à chaque déplacement d'un bouton. Une
1682
+ correction qui se re-décide à chaque intégration n'est pas une correction.
1683
+
1684
+ Sous le point de rupture, la bulle CESSE DE FLOTTER au-dessus de sa cible :
1685
+ elle se pose en bas de l'écran, pleine largeur, en `position: fixed`. Le
1686
+ débordement devient impossible par construction, quelle que soit la place de
1687
+ la cible. C'est aussi le seul endroit où une bulle reste lisible sur 320 px
1688
+ sans se replier en cinq lignes au-dessus d'un bouton.
1689
+
1690
+ **Le desktop ne bouge pas d'un pixel** : tout est dans la requête média, et
1691
+ la règle hors média n'est pas touchée.
1692
+
1693
+ Ce que ça ne règle PAS, et qui reste vrai : le tactile ne survole pas. Une
1694
+ bulle ne s'ouvre au doigt que si sa cible prend le focus au tap, ce qui vaut
1695
+ d'un bouton et pas d'un texte. La doctrine du composant tient donc plus que
1696
+ jamais : l'infobulle est un COMPLÉMENT DISPENSABLE, et l'information
1697
+ nécessaire passe par `aria-describedby` et par le texte visible. Une app qui
1698
+ y met la raison d'un bouton grisé s'en remet à un geste que la moitié de ses
1699
+ visiteurs n'ont pas.
@@ -1 +1 @@
1
- {"version":3,"file":"css-inline.d.ts","sourceRoot":"","sources":["../react/css-inline.ts"],"names":[],"mappings":"AAGA;;;iEAGiE;AACjE,eAAO,MAAM,WAAW,EAAE,MAAyvxR,CAAA;AAEnxxR;;;yBAGyB;AACzB,eAAO,MAAM,WAAW,EAAE,MAAk4B,CAAA"}
1
+ {"version":3,"file":"css-inline.d.ts","sourceRoot":"","sources":["../react/css-inline.ts"],"names":[],"mappings":"AAGA;;;iEAGiE;AACjE,eAAO,MAAM,WAAW,EAAE,MAAyyzR,CAAA;AAEn0zR;;;yBAGyB;AACzB,eAAO,MAAM,WAAW,EAAE,MAAk4B,CAAA"}