@zevra/ui 0.34.0 → 0.36.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 +293 -203
- package/README.md +21 -21
- package/demo/app.html +6 -6
- package/demo/index.html +3 -3
- package/dist/actions.d.ts +8 -8
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +1 -1
- package/dist/actions.js.map +1 -1
- package/dist/catalogue.d.ts +2 -2
- package/dist/catalogue.js +67 -67
- package/dist/catalogue.js.map +1 -1
- package/dist/content.d.ts +23 -23
- package/dist/content.d.ts.map +1 -1
- package/dist/content.js +16 -16
- package/dist/content.js.map +1 -1
- package/dist/css-inline.d.ts +1 -1
- package/dist/css-inline.d.ts.map +1 -1
- package/dist/css-inline.js +4 -4
- package/dist/css-inline.js.map +1 -1
- package/dist/data-table.d.ts +1 -1
- package/dist/data.d.ts +7 -7
- package/dist/data.js +5 -5
- package/dist/email-tokens.js +1 -1
- package/dist/email.d.ts +6 -6
- package/dist/email.js +8 -8
- package/dist/email.js.map +1 -1
- package/dist/feedback.d.ts +10 -10
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.js +3 -3
- package/dist/forms.d.ts +12 -12
- package/dist/forms.js +5 -5
- package/dist/glyph-data.d.ts +2 -2
- package/dist/glyph-data.js +3 -3
- package/dist/glyph-urls.js +1 -1
- package/dist/glyphes.d.ts +2 -2
- package/dist/glyphes.js +4 -4
- package/dist/icon-data.d.ts +1 -1
- package/dist/icon-data.js +2 -2
- package/dist/icon.d.ts +5 -5
- package/dist/icon.js +1 -1
- package/dist/index.js +4 -4
- package/dist/layout.d.ts +21 -21
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +15 -15
- package/dist/layout.js.map +1 -1
- package/dist/navigation.d.ts +16 -16
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +9 -9
- package/dist/navigation.js.map +1 -1
- package/dist/overlays.d.ts +6 -6
- package/dist/overlays.d.ts.map +1 -1
- package/dist/overlays.js +5 -5
- package/dist/select-menu.d.ts +1 -1
- package/dist/select-menu.js +2 -2
- package/dist/surfaces.d.ts +8 -8
- package/dist/surfaces.d.ts.map +1 -1
- package/dist/surfaces.js +6 -6
- package/dist/surfaces.js.map +1 -1
- package/dist/typography.d.ts +4 -4
- package/dist/typography.d.ts.map +1 -1
- package/dist/typography.js +3 -3
- package/dist/typography.js.map +1 -1
- package/icons/index.json +1 -1
- package/package.json +2 -2
- package/react/actions.tsx +9 -9
- package/react/catalogue.tsx +68 -68
- package/react/content.tsx +28 -28
- package/react/css-inline.ts +4 -4
- package/react/data-table.tsx +3 -3
- package/react/data.tsx +9 -9
- package/react/email-tokens.ts +1 -1
- package/react/email.ts +10 -10
- package/react/feedback.tsx +12 -12
- package/react/forms.tsx +15 -15
- package/react/glyph-data.ts +3 -3
- package/react/glyph-urls.ts +1 -1
- package/react/glyphes.ts +4 -4
- package/react/icon-data.ts +2 -2
- package/react/icon.tsx +6 -6
- package/react/index.ts +4 -4
- package/react/layout.tsx +22 -22
- package/react/navigation.tsx +18 -18
- package/react/overlays.tsx +9 -9
- package/react/select-menu.tsx +3 -3
- package/react/surfaces.tsx +10 -10
- package/react/typography.tsx +6 -6
- package/src/base.css +10 -10
- package/src/components.css +49 -49
- package/src/data.css +41 -41
- package/src/feedback.css +55 -55
- package/src/fonts.css +2 -2
- package/src/forms.css +50 -50
- package/src/icons.css +10 -10
- package/src/index.css +1 -1
- package/src/layout.css +27 -27
- package/src/motion.css +16 -16
- package/src/motion.js +4 -4
- package/src/nav.js +5 -5
- package/src/navigation.css +93 -62
- package/src/overlays.css +14 -14
- package/src/rail.js +6 -6
- package/src/surfaces.css +11 -11
- package/src/tokens.css +14 -14
- package/tokens/index.js +8 -8
package/src/data.css
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
/* Zevra UI
|
|
1
|
+
/* Zevra UI (données : tableaux, listes, cellules, métadonnées, citations
|
|
2
2
|
*
|
|
3
3
|
* CE QUE PORTE LE MODULE
|
|
4
4
|
* le cadre de tableau et sa grille (.zv-table, .zv-table__head, .zv-row),
|
|
5
5
|
* les trois registres de cellule, le dégroupage mobile (.zv-unwrap), la
|
|
6
6
|
* liste sans colonnes, la métadonnée mono, le couple clé-valeur, la
|
|
7
7
|
* pastille d'initiales, les deux utilitaires de troncature, l'étiquette de
|
|
8
|
-
* catégorie, la puce de citation et la vignette de format
|
|
8
|
+
* catégorie, la puce de citation et la vignette de format) et, depuis le
|
|
9
9
|
* 25/08/2026 (hors relevé, voir DECISIONS.md) : la rangée dépliante, la
|
|
10
10
|
* touche de clavier et le code, en ligne comme en bloc.
|
|
11
11
|
*
|
|
12
12
|
* DÉPENDANCES
|
|
13
|
-
* tokens.css
|
|
14
|
-
* base.css
|
|
13
|
+
* tokens.css, pour les seules variables qui y sont déclarées ;
|
|
14
|
+
* base.css, reset (box-sizing), body, et le :focus-visible global, dont
|
|
15
15
|
* ce module ne redéfinit ni la couleur ni l'épaisseur.
|
|
16
16
|
* Ni le reset, ni body, ni :root ne sont reposés ici.
|
|
17
17
|
*
|
|
@@ -19,17 +19,17 @@
|
|
|
19
19
|
* la pagination (.zv-pager--foot, navigation.css) : le pied de tableau et
|
|
20
20
|
* le pied de pagination sont LE MÊME nœud dans la source (un seul
|
|
21
21
|
* conteneur flex, compteur à gauche, flèches à droite). La version de ce
|
|
22
|
-
* module a été supprimée, elle faisait doublon
|
|
22
|
+
* module a été supprimée, elle faisait doublon : les emboîter donnait deux
|
|
23
23
|
* space-between imbriqués et 24px de padding vertical.
|
|
24
24
|
* Aucun contrôle de formulaire non plus : [disabled] et [aria-invalid]
|
|
25
25
|
* n'ont pas d'objet ici, ils vivent dans forms.css.
|
|
26
26
|
*
|
|
27
|
-
* ÉCHELLES
|
|
27
|
+
* ÉCHELLES : comment lire les tailles ci-dessous
|
|
28
28
|
* La source emploie des demi-pixels (9,5 / 10,5 / 11,5) que le paquet ne
|
|
29
29
|
* nomme pas. Deux rabattements, appliqués systématiquement :
|
|
30
|
-
*
|
|
30
|
+
* - registre TEXTE : plancher --app-sm (12px). Les paliers 10,5 et 11,5
|
|
31
31
|
* relevés y remontent ; c'est une décision, pas un relevé.
|
|
32
|
-
*
|
|
32
|
+
* - micro-labels et glyphes (label de colonne, initiales, vignette) :
|
|
33
33
|
* l'échelle mono (--mono-lg 11 / --mono 10 / --mono-sm 9), employée là
|
|
34
34
|
* comme MESURE, la famille restant celle que la règle déclare.
|
|
35
35
|
* ⚠️ Toutes les tailles et tous les interlettrages mono de la source ont
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
* Le tableau scrolle DANS son cadre : sans ce confinement, une colonne trop
|
|
48
48
|
* large fait scroller la page entière et le rail de navigation part avec.
|
|
49
49
|
* Angle vif et sans ombre : un tableau est une surface de travail, pas une
|
|
50
|
-
* carte éditoriale. Aucun rayon n'est
|
|
50
|
+
* carte éditoriale. Aucun rayon n'est posé, la valeur par défaut est déjà 0,
|
|
51
51
|
* il n'y a rien à annuler tant qu'on ne compose pas .zv-table avec .zv-card
|
|
52
52
|
* (ce que ce module déconseille : ce sont deux intentions différentes). */
|
|
53
53
|
|
|
@@ -105,14 +105,14 @@
|
|
|
105
105
|
* balaye du regard, une colonne qui danse en largeur est illisible.
|
|
106
106
|
*
|
|
107
107
|
* Mais tous les tableaux ne portent pas des données. Un contrat en porte qui
|
|
108
|
-
* contiennent des CLAUSES
|
|
108
|
+
* contiennent des CLAUSES : durées de conservation et leur fondement, sous-
|
|
109
109
|
* traitants et leurs garanties de transfert. Là, tronquer ne « raccourcit »
|
|
110
110
|
* pas : ça CACHE le texte, et cacher une clause dans un document contractuel
|
|
111
111
|
* n'est pas un défaut d'affichage.
|
|
112
112
|
*
|
|
113
113
|
* D'où cette variante, et pas un `className` posé par l'app : le CSS du
|
|
114
114
|
* paquet est hors couche, il bat toute règle layered quelle que soit la
|
|
115
|
-
*
|
|
115
|
+
* spécificité, une app Tailwind qui poserait `whitespace-normal` sur une
|
|
116
116
|
* cellule n'obtiendrait RIEN, en silence. La règle du dépôt est que ce qui
|
|
117
117
|
* doit s'ajuster s'expose en variante ; la voici.
|
|
118
118
|
*
|
|
@@ -153,12 +153,12 @@
|
|
|
153
153
|
|
|
154
154
|
/* ⚠️ Aucun tri : les intitulés sont inertes, sans indicateur ni gestionnaire.
|
|
155
155
|
* Rien dans la source ne dit ce que trierait un clic ni comment se marque la
|
|
156
|
-
* colonne active
|
|
156
|
+
* colonne active : un en-tête triable serait une décision, pas un style. */
|
|
157
157
|
|
|
158
158
|
/* ─── Ligne de données ─────────────────────────────────────────────────
|
|
159
159
|
* Une seule écriture de balisage pour deux mises en page : grille au-dessus
|
|
160
160
|
* du seuil, carte empilée en dessous (voir .zv-unwrap et le bloc responsive).
|
|
161
|
-
* Aucun zébrage nulle part dans la source
|
|
161
|
+
* Aucun zébrage nulle part dans la source : le survol est le seul repère de
|
|
162
162
|
* ligne, ce qui laisse le fond blanc porter la lecture. */
|
|
163
163
|
|
|
164
164
|
.zv-row {
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
/* La dernière ligne colle au cadre : son filet doublerait le trait de bordure
|
|
176
176
|
* et épaissirait le bas du tableau. C'est déjà ce que fait la source côté
|
|
177
177
|
* bibliothèque et côté import (`last:border-b-0`) ; seul le répertoire garde
|
|
178
|
-
* le filet. Le module tranche pour le retrait
|
|
178
|
+
* le filet. Le module tranche pour le retrait : ce n'est donc pas une
|
|
179
179
|
* correction contre la production, c'est l'alignement sur sa majorité. */
|
|
180
180
|
.zv-row:last-child {
|
|
181
181
|
border-bottom: 0;
|
|
@@ -203,9 +203,9 @@
|
|
|
203
203
|
* système qui n'en a que deux (blanc, survol). */
|
|
204
204
|
|
|
205
205
|
/* ─── En-tête triable ──────────────────────────────────────────────────
|
|
206
|
-
* ⚠️ HORS RELEVÉ
|
|
206
|
+
* ⚠️ HORS RELEVÉ : ajouté le 25/08/2026 avec l'adaptateur TanStack Table.
|
|
207
207
|
* Aucun tableau de la production n'est triable ; l'intitulé y est du texte
|
|
208
|
-
* inerte. Un en-tête qui trie DOIT être un <button>
|
|
208
|
+
* inerte. Un en-tête qui trie DOIT être un <button> : c'est la seule façon
|
|
209
209
|
* qu'il soit atteignable au clavier et annoncé comme actionnable.
|
|
210
210
|
*
|
|
211
211
|
* `font: inherit` plutôt qu'une police redite : l'en-tête a déjà la sienne
|
|
@@ -277,7 +277,7 @@
|
|
|
277
277
|
*
|
|
278
278
|
* ⚠️ CORRECTION DE FOND. La version précédente comptait sur --font-mono pour
|
|
279
279
|
* aligner les colonnes de chiffres. Dans la source, --font-mono valait
|
|
280
|
-
* `ui-monospace, Menlo`
|
|
280
|
+
* `ui-monospace, Menlo` : une vraie chasse fixe. Dans CE paquet, --font-mono
|
|
281
281
|
* vaut « Space Grotesk », une grotesque PROPORTIONNELLE : le 1 y est plus
|
|
282
282
|
* étroit que le 8, les unités ne tombent pas les unes sous les autres et
|
|
283
283
|
* l'alignement annoncé n'existe pas.
|
|
@@ -285,7 +285,7 @@
|
|
|
285
285
|
* Ce qui aligne réellement, c'est font-variant-numeric: tabular-nums : la
|
|
286
286
|
* fonte sert alors ses chiffres à chasse égale, quelle que soit sa famille.
|
|
287
287
|
* La famille mono est conservée ici pour le REGISTRE (valeur technique), pas
|
|
288
|
-
* pour l'alignement
|
|
288
|
+
* pour l'alignement : les deux ne sont plus confondus. */
|
|
289
289
|
.zv-cell--num {
|
|
290
290
|
/* Sans effet dans la grille ; utile sous 768px, où la cellule se retrouve
|
|
291
291
|
* enfant d'un .zv-unwrap devenu flex et ne doit pas se laisser comprimer. */
|
|
@@ -312,7 +312,7 @@
|
|
|
312
312
|
color: var(--label);
|
|
313
313
|
}
|
|
314
314
|
|
|
315
|
-
/* Même logique pour l'unité en clair
|
|
315
|
+
/* Même logique pour l'unité en clair : « 42 docs » en carte, « 42 » en
|
|
316
316
|
* tableau. Reste INLINE : elle appartient à la valeur, pas à sa ligne. */
|
|
317
317
|
.zv-cell__unit {
|
|
318
318
|
display: none;
|
|
@@ -322,7 +322,7 @@
|
|
|
322
322
|
* La primitive structurelle du module : un groupe qui rassemble deux ou trois
|
|
323
323
|
* cellules pour l'empilement mobile, puis s'efface (display: contents) et
|
|
324
324
|
* rend ses enfants DIRECTEMENT à la grille du tableau. C'est ce qui permet
|
|
325
|
-
* d'écrire le balisage une seule fois pour deux mises en page
|
|
325
|
+
* d'écrire le balisage une seule fois pour deux mises en page : sans lui, il
|
|
326
326
|
* faudrait dupliquer la rangée et les deux copies divergeraient.
|
|
327
327
|
*
|
|
328
328
|
* Quatre enveloppes de ce type dans la source, sur trois écrans indépendants :
|
|
@@ -364,7 +364,7 @@
|
|
|
364
364
|
* 2 % du blanc de la liste : ce fond est, en pratique, INVISIBLE. Il est
|
|
365
365
|
* conservé comme rappel discret, mais le signal « quelque chose est en train
|
|
366
366
|
* de se passer » doit être porté par la jauge (.zv-progress) ou par le
|
|
367
|
-
* libellé de la rangée
|
|
367
|
+
* libellé de la rangée : surtout pas par ce fond. */
|
|
368
368
|
.zv-list__row--upload {
|
|
369
369
|
background: var(--panel);
|
|
370
370
|
}
|
|
@@ -389,12 +389,12 @@
|
|
|
389
389
|
}
|
|
390
390
|
|
|
391
391
|
/* ⚠️ Aucun état interactif dans la source : ni survol de rangée, ni sélection,
|
|
392
|
-
* ni focus. Une liste de fichiers n'y est pas cliquable
|
|
392
|
+
* ni focus. Une liste de fichiers n'y est pas cliquable : si elle le devient,
|
|
393
393
|
* c'est .zv-row qu'il faut employer, pas cette rangée-ci. */
|
|
394
394
|
|
|
395
395
|
/* ─── Métadonnée mono ──────────────────────────────────────────────────
|
|
396
396
|
* Second registre mono du système, en BAS DE CASSE : taille de fichier, date,
|
|
397
|
-
* horodatage, compteur, latence. Ni capitales ni interlettrage
|
|
397
|
+
* horodatage, compteur, latence. Ni capitales ni interlettrage, c'est
|
|
398
398
|
* exactement ce qui le distingue de .zv-tag et .zv-mono (capitales,
|
|
399
399
|
* 0,14–0,2em) : une date ou un nom de fichier passés en capitales espacées
|
|
400
400
|
* deviennent illisibles et s'alignent mal.
|
|
@@ -496,7 +496,7 @@
|
|
|
496
496
|
}
|
|
497
497
|
|
|
498
498
|
/* Variante en grille (métadonnées d'une source citée) : deux colonnes des DEUX
|
|
499
|
-
* côtés du seuil
|
|
499
|
+
* côtés du seuil, ce sont quatre valeurs courtes, les empiler ferait une
|
|
500
500
|
* colonne inutilement longue. Le libellé passe au-dessus de la valeur. */
|
|
501
501
|
.zv-kv--grid {
|
|
502
502
|
display: grid;
|
|
@@ -513,7 +513,7 @@
|
|
|
513
513
|
}
|
|
514
514
|
|
|
515
515
|
/* En grille, la clé redevient un label de colonne : capitales, plus petit,
|
|
516
|
-
* gris de label
|
|
516
|
+
* gris de label, et non plus l'accent de la variante en ligne. */
|
|
517
517
|
.zv-kv--grid .zv-kv__key {
|
|
518
518
|
display: block;
|
|
519
519
|
margin-bottom: 2px;
|
|
@@ -533,7 +533,7 @@
|
|
|
533
533
|
/* ─── Pastille d'initiales ─────────────────────────────────────────────
|
|
534
534
|
* CARRÉE, jamais ronde : le rond est un usage de réseau social, l'encre et le
|
|
535
535
|
* papier posent des blocs. La teinte dit la NATURE de l'entité, elle n'est pas
|
|
536
|
-
* décorative
|
|
536
|
+
* décorative : la changer, c'est changer le sens.
|
|
537
537
|
*
|
|
538
538
|
* 9,5px dans la source. Le paquet ne descend sous 12px que sur son échelle
|
|
539
539
|
* mono : --mono-sm (9px) est employé ici comme MESURE, la pastille restant
|
|
@@ -577,12 +577,12 @@
|
|
|
577
577
|
|
|
578
578
|
/* Règles d'initiales, à respecter côté appelant. Il y en a DEUX, et les
|
|
579
579
|
* confondre change le rendu :
|
|
580
|
-
*
|
|
580
|
+
* - .zv-avatar (26px, entité du répertoire) : préfixes « M. | Me | SARL |
|
|
581
581
|
* SCI | SA » retirés, découpe sur [espace ou &], AUCUN repli ;
|
|
582
|
-
*
|
|
582
|
+
* - .zv-avatar--sm (22px, organisation dans le chrome) : deux mots au plus,
|
|
583
583
|
* mots-outils écartés (« cabinet », « étude », « office », « selarl »,
|
|
584
584
|
* « scp », « et », « de », « du », « des », « la », « le », « les »),
|
|
585
|
-
* repli sur « · » quand rien ne sort
|
|
585
|
+
* repli sur « · » quand rien ne sort) sans ce repli, une pastille vide
|
|
586
586
|
* passe pour un défaut d'affichage.
|
|
587
587
|
* Prescrire la seconde pour la première change les initiales du répertoire. */
|
|
588
588
|
|
|
@@ -601,7 +601,7 @@
|
|
|
601
601
|
white-space: nowrap;
|
|
602
602
|
}
|
|
603
603
|
|
|
604
|
-
/* Revenir à la ligne : tout ce qui ne se devine pas
|
|
604
|
+
/* Revenir à la ligne : tout ce qui ne se devine pas coupé, adresses e-mail,
|
|
605
605
|
* noms de fichiers, jetons, messages d'erreur. Perdre la fin d'un message
|
|
606
606
|
* d'erreur, c'est perdre l'incident. */
|
|
607
607
|
.zv-break {
|
|
@@ -700,7 +700,7 @@
|
|
|
700
700
|
* plusieurs. À trancher, pas à combler au hasard.
|
|
701
701
|
* ⚠️ En production c'est un <span onClick> : inatteignable au clavier. Le
|
|
702
702
|
* rendre focusable côté appelant (<button>) suffit à lui donner le contour de
|
|
703
|
-
* base.css
|
|
703
|
+
* base.css : c'est la correction à faire, pas un style à ajouter ici.
|
|
704
704
|
* ⚠️ Recoupe .zv-src (components.css : mono capitales, fond blanc, filet
|
|
705
705
|
* --accent-line, rayon 4px) : même rôle éditorial, aucune valeur commune. La
|
|
706
706
|
* version applicative est remplie et à angle vif. Fusion ou dédoublement
|
|
@@ -709,11 +709,11 @@
|
|
|
709
709
|
/* ─── Vignette de format ───────────────────────────────────────────────
|
|
710
710
|
* ⚠️ HORS CHARTE, ET ASSUMÉ : --fmt-pdf et --fmt-docx sont le rouge Acrobat
|
|
711
711
|
* et le bleu Word, pas --err ni --accent. Deux relevés indépendants les codent
|
|
712
|
-
* à l'identique
|
|
712
|
+
* à l'identique : c'est une intention (reconnaître le format d'un coup d'œil),
|
|
713
713
|
* pas une dérive ; tokens.css les déclare et n'en autorise pas d'autre usage.
|
|
714
714
|
* ⚠️ La source pose 7,5px, sous le plancher du paquet (--mono-sm, 9px).
|
|
715
715
|
* Rabattu sur ce plancher : la vignette grossit d'un pixel et demi, ce qui
|
|
716
|
-
* n'est PAS le
|
|
716
|
+
* n'est PAS le relevé, à revoir à l'œil sur une rangée dense. Réservé à deux
|
|
717
717
|
* ou quatre caractères en capitales, jamais à du texte.
|
|
718
718
|
* L'interlettrage reste à 0,06em et non aux 0,14em du reste des capitales :
|
|
719
719
|
* sur quatre caractères dans 30px de large, 0,14em déborde de la vignette.
|
|
@@ -724,7 +724,7 @@
|
|
|
724
724
|
/* ⚠️ Une vignette posée dans une colonne flex (.zv-list__main) s'étire sur
|
|
725
725
|
* toute la largeur si on ne l'en empêche pas : elle cesse alors d'être une
|
|
726
726
|
* vignette et se lit comme une bande de couleur. Même raison que le
|
|
727
|
-
* `justify-self: start` de .zv-badge en grille
|
|
727
|
+
* `justify-self: start` de .zv-badge en grille : vu au rendu, pas à la
|
|
728
728
|
* relecture. */
|
|
729
729
|
align-self: start;
|
|
730
730
|
padding: 2px 5px;
|
|
@@ -746,7 +746,7 @@
|
|
|
746
746
|
|
|
747
747
|
/* ─── Rangée dépliante ─────────────────────────────────────────────────
|
|
748
748
|
* HORS RELEVÉ (25/08/2026, voir DECISIONS.md). La FAQ est le pliage de la
|
|
749
|
-
* vitrine ; l'applicatif n'en avait aucun
|
|
749
|
+
* vitrine ; l'applicatif n'en avait aucun : options avancées, détail d'une
|
|
750
750
|
* ligne de journal. Construite sur <details> NATIF : le clavier, l'annonce
|
|
751
751
|
* et l'état ouvert viennent du navigateur, aucun JavaScript.
|
|
752
752
|
* Plusieurs rangées se suivent bord à bord : le filet mitoyen tombe. */
|
|
@@ -814,7 +814,7 @@
|
|
|
814
814
|
/* ─── Touche de clavier ────────────────────────────────────────────────
|
|
815
815
|
* HORS RELEVÉ (25/08/2026). Une documentation d'interface cite des
|
|
816
816
|
* raccourcis ; le paquet n'avait rien pour les poser. Le bas de 2 px fait
|
|
817
|
-
* le relief de la touche
|
|
817
|
+
* le relief de la touche : géométrie, pas ombre de charte, comme l'anneau
|
|
818
818
|
* du radio. */
|
|
819
819
|
|
|
820
820
|
.zv-kbd {
|
|
@@ -831,7 +831,7 @@
|
|
|
831
831
|
}
|
|
832
832
|
|
|
833
833
|
/* ─── Code ─────────────────────────────────────────────────────────────
|
|
834
|
-
* HORS RELEVÉ (25/08/2026, voir DECISIONS.md
|
|
834
|
+
* HORS RELEVÉ (25/08/2026, voir DECISIONS.md : c'est l'entrée qui a créé
|
|
835
835
|
* --font-code). --font-mono (Space Grotesk) est PROPORTIONNELLE : elle
|
|
836
836
|
* porte le registre des labels, pas l'alignement, et tabular-nums n'aligne
|
|
837
837
|
* que les chiffres. Du code exige la chasse fixe entière : --font-code, la
|
|
@@ -840,7 +840,7 @@
|
|
|
840
840
|
* charte n'a pas. Le code se lit à l'encre sur panneau, comme un extrait. */
|
|
841
841
|
|
|
842
842
|
/* En ligne, dans une phrase : `pnpm build`. Taille RELATIVE au texte qui
|
|
843
|
-
* l'accueille
|
|
843
|
+
* l'accueille : le même extrait sert dans un corps 15 et une note 12,5. */
|
|
844
844
|
.zv-code {
|
|
845
845
|
padding: 1px 5px;
|
|
846
846
|
border: 1px solid var(--hairline);
|
|
@@ -875,7 +875,7 @@
|
|
|
875
875
|
/* ─── Sous 768px ───────────────────────────────────────────────────────
|
|
876
876
|
* Point de rupture unique de la charte. Les lignes cessent d'être des lignes :
|
|
877
877
|
* une grille de six colonnes à 375px produit six colonnes illisibles, ou un
|
|
878
|
-
* débordement horizontal de la page. Le balisage, lui, ne change pas
|
|
878
|
+
* débordement horizontal de la page. Le balisage, lui, ne change pas : c'est
|
|
879
879
|
* .zv-unwrap qui rend l'inversion possible.
|
|
880
880
|
*
|
|
881
881
|
* ⚠️ La source coupe à 1024px (lg de Tailwind), pas à 768 : entre les deux,
|
|
@@ -903,7 +903,7 @@
|
|
|
903
903
|
|
|
904
904
|
/* Le groupe redevient une boîte : ses deux ou trois cellules tiennent sur
|
|
905
905
|
* une même ligne au lieu de s'empiler chacune sur la sienne.
|
|
906
|
-
* flex-wrap: wrap n'est pas optionnel
|
|
906
|
+
* flex-wrap: wrap n'est pas optionnel : deux des quatre enveloppes de la
|
|
907
907
|
* source passent à la ligne, et sans lui la rangée taille + date + statut
|
|
908
908
|
* déborde de la carte à 320px, c'est-à-dire exactement le défaut que le
|
|
909
909
|
* passage en carte devait supprimer.
|
|
@@ -927,7 +927,7 @@
|
|
|
927
927
|
* flex, intitulé à gauche et valeur à droite
|
|
928
928
|
* (tableau-de-bord/page.tsx:120). Sans cela, « TAILLE » vient se coller à
|
|
929
929
|
* « 2,4 Mo » et les deux se lisent comme un seul mot.
|
|
930
|
-
* `:has()` cible les seules cellules qui portent une étiquette
|
|
930
|
+
* `:has()` cible les seules cellules qui portent une étiquette : les
|
|
931
931
|
* autres gardent leur flux. */
|
|
932
932
|
.zv-cell:has(.zv-cell__label) {
|
|
933
933
|
display: flex;
|