@zevra/ui 0.12.2 → 0.12.4

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/src/layout.css CHANGED
@@ -29,25 +29,34 @@
29
29
  .zv-gutter {
30
30
  padding-left: 72px;
31
31
  padding-right: 72px;
32
+ max-width: var(--page-max);
33
+ margin-inline: auto;
32
34
  }
33
35
 
34
36
  /* Blocs centrés : hero, CTA, manifeste du prototype. */
35
37
  .zv-gutter--wide {
36
38
  padding-left: 120px;
37
39
  padding-right: 120px;
40
+ max-width: var(--page-max);
41
+ margin-inline: auto;
38
42
  }
39
43
 
40
44
  /* Chrome haut du prototype. */
41
45
  .zv-gutter--chrome {
42
46
  padding-left: 56px;
43
47
  padding-right: 56px;
48
+ max-width: var(--page-max);
49
+ margin-inline: auto;
44
50
  }
45
51
 
46
52
  /* Variante en marge, pour les blocs détachés du bord (grille produits,
47
- * vitrine, pied de page). */
53
+ * vitrine, pied de page). Le max() tient les deux promesses à la fois :
54
+ * jamais moins de 72px de marge visible, et un centrage sur --page-max dès
55
+ * que l'écran en offre davantage. */
48
56
  .zv-inset-x {
49
- margin-left: 72px;
50
- margin-right: 72px;
57
+ max-width: calc(var(--page-max) - 144px);
58
+ margin-left: max(72px, calc((100% - (var(--page-max) - 144px)) / 2));
59
+ margin-right: max(72px, calc((100% - (var(--page-max) - 144px)) / 2));
51
60
  }
52
61
 
53
62
  /* ─── Grille 12 colonnes ────────────────────────────────────────────────
package/src/motion.js CHANGED
@@ -34,11 +34,12 @@
34
34
  io.unobserve(e.target);
35
35
  }
36
36
  },
37
- /* Déclenche un peu AVANT l'entrée au viewport (marge basse positive) :
38
- * l'entrée accompagne l'arrivée, et un saut de page (ancre de
39
- * sommaire, molette rapide) n'atterrit jamais sur un écran vide qui
40
- * attendrait le prochain cran de défilement. */
41
- { rootMargin: '0px 0px 12% 0px', threshold: 0.01 }
37
+ /* Marge basse positive : l'entrée se déclenche un peu AVANT le
38
+ * viewport, un saut d'ancre n'atterrit jamais sur un écran vide.
39
+ * Marge haute généreuse : ce que le lecteur a dépassé en volant est
40
+ * déjà posé s'il remonte — remonter ne doit jamais rejouer quoi que
41
+ * ce soit, ni le faire attendre. */
42
+ { rootMargin: '80% 0px 12% 0px', threshold: 0.01 }
42
43
  );
43
44
 
44
45
  for (const el of document.querySelectorAll(ENTREES)) {
package/src/overlays.css CHANGED
@@ -44,6 +44,17 @@
44
44
 
45
45
  /* ─── Tiroir de navigation ──────────────────────────────────────────────*/
46
46
 
47
+ /* Tiroir ou modale ouverts : la page derrière ne défile plus. `:has()` est
48
+ * le seul chemin CSS pour verrouiller le body depuis un état descendant —
49
+ * sans lui, la molette fait défiler le fond sous le voile et le panneau
50
+ * semble dériver. */
51
+ html:has(.zv-drawer[data-open]),
52
+ html:has(.zv-drawer--open),
53
+ html:has(.zv-modal[data-open]),
54
+ html:has(.zv-modal--open) {
55
+ overflow: hidden;
56
+ }
57
+
47
58
  .zv-drawer {
48
59
  display: none;
49
60
  position: fixed;
package/src/tokens.css CHANGED
@@ -9,6 +9,12 @@
9
9
  */
10
10
 
11
11
  :root {
12
+ /* Largeur de page. Le relevé de la passation a été fait sur une trame de
13
+ * 1440 : au-delà, les enveloppes (zv-gutter et variantes) se centrent au
14
+ * lieu de s'étirer — un hero qui colle au bord gauche d'un écran de
15
+ * 2 560 px ne raconte plus une page, il raconte un débordement. */
16
+ --page-max: 1440px;
17
+
12
18
  /* Neutres (charte Mémoire) */
13
19
  --ink: #0b1020;
14
20
  /* Niveau intermédiaire, entre l'encre et le gris : titre de colonne,
package/tokens/index.js CHANGED
@@ -99,6 +99,8 @@ export const mesures = {
99
99
  tap: '40px',
100
100
  topbarH: '52px',
101
101
  specFilet: '56px',
102
+ /* Largeur de page : au-delà, les enveloppes se centrent (0.12.4). */
103
+ pageMax: '1440px',
102
104
  }
103
105
 
104
106
  /** Rayons — À ZÉRO depuis l'arbitrage DA du 25/08/2026 (« très carré, ça