@zevra/ui 0.57.0 → 0.57.1
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 +10 -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/forms.css +51 -11
package/src/forms.css
CHANGED
|
@@ -852,24 +852,65 @@
|
|
|
852
852
|
* l'accent : le relief dit déjà l'état, un second signal ferait un bouton
|
|
853
853
|
* plein de plus. Les rayons suivent --r-btn, donc `zv-arrondi`. */
|
|
854
854
|
.zv-seg-group--segmente {
|
|
855
|
-
|
|
856
|
-
|
|
855
|
+
/* Le nombre de choix et le rang du choix courant, lus dans le balisage
|
|
856
|
+
* par :has() plus bas : l'indicateur s'en sert pour sa largeur et sa
|
|
857
|
+
* position. Deux à quatre choix. */
|
|
858
|
+
--zv-segments: 2;
|
|
859
|
+
--zv-segment: 0;
|
|
860
|
+
position: relative;
|
|
861
|
+
isolation: isolate;
|
|
862
|
+
/* Colonnes ÉGALES : c'est ce qui permet à un seul indicateur de glisser
|
|
863
|
+
* d'un choix à l'autre par un simple décalage. Chaque choix prend la
|
|
864
|
+
* largeur du plus long, comme tout sélecteur segmenté. */
|
|
865
|
+
display: inline-grid;
|
|
866
|
+
grid-auto-flow: column;
|
|
867
|
+
grid-auto-columns: 1fr;
|
|
868
|
+
/* Sans écart : celui des puces (6px) décalerait chaque colonne par
|
|
869
|
+
* rapport à l'indicateur, qui avance d'une colonne pleine. */
|
|
857
870
|
gap: 0;
|
|
858
871
|
border: 1px solid var(--line);
|
|
859
872
|
border-radius: var(--r-btn);
|
|
860
873
|
background: var(--hairline);
|
|
861
874
|
}
|
|
862
875
|
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
876
|
+
.zv-seg-group--segmente:has(> .zv-seg:nth-child(3)) { --zv-segments: 3; }
|
|
877
|
+
.zv-seg-group--segmente:has(> .zv-seg:nth-child(4)) { --zv-segments: 4; }
|
|
878
|
+
.zv-seg-group--segmente:has(> .zv-seg:nth-child(2)[aria-pressed="true"], > .zv-seg--on:nth-child(2)) { --zv-segment: 1; }
|
|
879
|
+
.zv-seg-group--segmente:has(> .zv-seg:nth-child(3)[aria-pressed="true"], > .zv-seg--on:nth-child(3)) { --zv-segment: 2; }
|
|
880
|
+
.zv-seg-group--segmente:has(> .zv-seg:nth-child(4)[aria-pressed="true"], > .zv-seg--on:nth-child(4)) { --zv-segment: 3; }
|
|
881
|
+
|
|
882
|
+
/* L'indicateur : UNE pastille, sous les libellés, qui GLISSE vers le
|
|
883
|
+
* choix courant (demande de Joachim, 12/11/2026 : un relief qui saute d'un
|
|
884
|
+
* bouton à l'autre ne dit pas qu'on a basculé). Bord à bord : elle déborde
|
|
885
|
+
* d'un pixel sur le filet du rail, de chaque côté, et se pose exactement
|
|
886
|
+
* dessus. Sa largeur vaut une colonne plus ces deux pixels ; décalée de
|
|
887
|
+
* (100 % - 2px) par rang, elle avance donc d'une colonne exactement.
|
|
888
|
+
* La courbe maison ; coupée par prefers-reduced-motion (base.css), où
|
|
889
|
+
* l'état final reste lisible sans. */
|
|
890
|
+
.zv-seg-group--segmente::before {
|
|
891
|
+
content: "";
|
|
892
|
+
position: absolute;
|
|
893
|
+
z-index: -1;
|
|
894
|
+
top: -1px;
|
|
895
|
+
bottom: -1px;
|
|
896
|
+
left: -1px;
|
|
897
|
+
width: calc(100% / var(--zv-segments) + 2px);
|
|
898
|
+
border: 1px solid var(--line);
|
|
899
|
+
border-radius: var(--r-btn);
|
|
900
|
+
background: var(--white);
|
|
901
|
+
box-shadow: var(--shadow-card);
|
|
902
|
+
transform: translateX(calc(var(--zv-segment) * (100% - 2px)));
|
|
903
|
+
transition: transform 220ms cubic-bezier(0.2, 0.7, 0.2, 1);
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
/* Les choix ne peignent rien : c'est l'indicateur qui porte le relief.
|
|
907
|
+
* Le libellé du choix courant passe à l'encre (graisse 600 de la puce). */
|
|
868
908
|
.zv-seg-group--segmente > .zv-seg {
|
|
869
|
-
|
|
909
|
+
justify-content: center;
|
|
870
910
|
border-color: transparent;
|
|
871
911
|
background: transparent;
|
|
872
912
|
color: var(--ink-2);
|
|
913
|
+
transition: color 140ms cubic-bezier(0.2, 0.7, 0.2, 1);
|
|
873
914
|
}
|
|
874
915
|
|
|
875
916
|
.zv-seg-group--segmente > .zv-seg:hover {
|
|
@@ -878,9 +919,8 @@
|
|
|
878
919
|
|
|
879
920
|
.zv-seg-group--segmente > .zv-seg--on,
|
|
880
921
|
.zv-seg-group--segmente > .zv-seg[aria-pressed="true"] {
|
|
881
|
-
border-color:
|
|
882
|
-
background:
|
|
883
|
-
box-shadow: var(--shadow-card);
|
|
922
|
+
border-color: transparent;
|
|
923
|
+
background: transparent;
|
|
884
924
|
color: var(--ink);
|
|
885
925
|
}
|
|
886
926
|
|