@zevra/ui 0.36.0 → 0.38.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 +81 -0
- package/dist/css-inline.d.ts.map +1 -1
- package/dist/css-inline.js +1 -1
- package/dist/css-inline.js.map +1 -1
- package/package.json +1 -1
- package/react/css-inline.ts +1 -1
- package/src/feedback.css +30 -5
- package/src/layout.css +18 -3
package/DECISIONS.md
CHANGED
|
@@ -1655,3 +1655,84 @@ 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.
|
|
1700
|
+
|
|
1701
|
+
## Les liens de la barre tombent avec le burger (29/08/2026, 0.38.0)
|
|
1702
|
+
|
|
1703
|
+
`.zv-nav__links` n'était masquée sous le point de rupture que pour
|
|
1704
|
+
`zv-nav--riche`, dont le seuil est 1150 px et qui vise les barres denses. Sur
|
|
1705
|
+
une barre normale, sous 768 px, le burger apparaissait ET les liens
|
|
1706
|
+
restaient : deux navigations pour une, et un débordement au premier libellé
|
|
1707
|
+
un peu long.
|
|
1708
|
+
|
|
1709
|
+
Le commentaire du module disait pourtant l'intention, deux règles plus haut :
|
|
1710
|
+
« le burger n'existe que là où les liens disparaissent ». C'était vrai dans un
|
|
1711
|
+
sens seulement.
|
|
1712
|
+
|
|
1713
|
+
**Ce que faisaient les consommateurs.** memoire, landing, lexform et
|
|
1714
|
+
mcp-factory posaient `zv-only-desktop` à la main sur `NavLinks` ; campus
|
|
1715
|
+
passait par `zv-nav--riche`. Quatre sur cinq collaient la même rustine, et
|
|
1716
|
+
memoire avait écrit le commentaire qui l'explique : « `.zv-nav__links` n'est
|
|
1717
|
+
pas masquée d'office ». Une rustine que tout le monde recopie est un défaut
|
|
1718
|
+
du paquet, pas un usage.
|
|
1719
|
+
|
|
1720
|
+
**Pourquoi ce n'était pas déjà fait, et pourquoi ça l'est maintenant.** Le
|
|
1721
|
+
commentaire d'origine donnait la raison : masquer d'office « casserait les
|
|
1722
|
+
pages sans burger ». C'est juste, et ça méritait mieux qu'une classe à poser
|
|
1723
|
+
partout. La règle est donc conditionnée par `:has(.zv-nav__burger)` : les
|
|
1724
|
+
liens ne disparaissent QUE là où un burger les remplace. L'objection tombe
|
|
1725
|
+
sans rien sacrifier, et la phrase écrite plus haut devient vraie dans les
|
|
1726
|
+
deux sens.
|
|
1727
|
+
|
|
1728
|
+
`:has()` est déjà employé neuf fois dans le paquet, dont `.zv-header:has(>
|
|
1729
|
+
.zv-nav)`. Ce n'est pas une nouveauté qu'on introduit ici.
|
|
1730
|
+
|
|
1731
|
+
**Ce qui a été écarté** : masquer d'office et documenter qu'il faut un
|
|
1732
|
+
burger. Ça déplace la charge sur l'intégrateur pour un cas que le CSS sait
|
|
1733
|
+
détecter lui-même, et ça casse toute barre existante sans burger le jour de
|
|
1734
|
+
la montée de version.
|
|
1735
|
+
|
|
1736
|
+
Aucun consommateur ne régresse : les quatre qui posaient `zv-only-desktop`
|
|
1737
|
+
obtiennent le même rendu (la classe devient redondante, elle peut partir),
|
|
1738
|
+
et campus masque déjà à 1150, ce qui contient 768.
|
package/dist/css-inline.d.ts.map
CHANGED
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"css-inline.d.ts","sourceRoot":"","sources":["../react/css-inline.ts"],"names":[],"mappings":"AAGA;;;iEAGiE;AACjE,eAAO,MAAM,WAAW,EAAE,MAAim1R,CAAA;AAE3n1R;;;yBAGyB;AACzB,eAAO,MAAM,WAAW,EAAE,MAAk4B,CAAA"}
|