@zevra/ui 0.29.1 → 0.31.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 +33 -0
- package/dist/catalogue.d.ts.map +1 -1
- package/dist/catalogue.js +13 -0
- package/dist/catalogue.js.map +1 -1
- 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/dist/data.d.ts +11 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +2 -2
- package/dist/data.js.map +1 -1
- package/package.json +1 -1
- package/react/catalogue.tsx +35 -0
- package/react/css-inline.ts +1 -1
- package/react/data.tsx +16 -2
- package/src/data.css +44 -0
- package/src/layout.css +24 -7
package/react/data.tsx
CHANGED
|
@@ -32,14 +32,28 @@ export interface TableProps extends Div {
|
|
|
32
32
|
/** Gabarit de colonnes, en syntaxe `grid-template-columns`
|
|
33
33
|
* (ex. `'minmax(0,2fr) 120px 90px'`). Hérité par l'en-tête et les lignes. */
|
|
34
34
|
gabarit?: string
|
|
35
|
+
/** Tableau de PROSE : les cellules reviennent à la ligne au lieu de
|
|
36
|
+
* tronquer, et les colonnes s'alignent en haut.
|
|
37
|
+
*
|
|
38
|
+
* ⚠️ À employer dès qu'une cellule porte une phrase plutôt qu'une donnée —
|
|
39
|
+
* une clause de contrat, un fondement juridique, une garantie de
|
|
40
|
+
* transfert. Tronquer une clause ne la raccourcit pas, ça la CACHE, et le
|
|
41
|
+
* lecteur n'a aucun moyen de savoir qu'il manque quelque chose. Le défaut
|
|
42
|
+
* (troncature) reste le bon choix pour une ligne de données, qui se balaye
|
|
43
|
+
* du regard et dont les colonnes ne doivent pas danser. */
|
|
44
|
+
prose?: boolean
|
|
35
45
|
className?: string
|
|
36
46
|
}
|
|
37
47
|
|
|
38
48
|
/** Le tableau défile DANS son cadre : sans ce confinement, une colonne trop
|
|
39
49
|
* large fait défiler la page entière et le rail de navigation part avec. */
|
|
40
|
-
export function Table({ gabarit, className, style, ...reste }: TableProps) {
|
|
50
|
+
export function Table({ gabarit, prose, className, style, ...reste }: TableProps) {
|
|
41
51
|
return (
|
|
42
|
-
<div
|
|
52
|
+
<div
|
|
53
|
+
className={cx('zv-table', prose && 'zv-table--prose', className)}
|
|
54
|
+
style={cols(gabarit, style)}
|
|
55
|
+
{...reste}
|
|
56
|
+
/>
|
|
43
57
|
)
|
|
44
58
|
}
|
|
45
59
|
|
package/src/data.css
CHANGED
|
@@ -100,6 +100,50 @@
|
|
|
100
100
|
color: var(--label);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
/* ─── Tableau de PROSE ─────────────────────────────────────────────────
|
|
104
|
+
* .zv-table tronque à l'ellipse, et c'est juste : une ligne de données se
|
|
105
|
+
* balaye du regard, une colonne qui danse en largeur est illisible.
|
|
106
|
+
*
|
|
107
|
+
* Mais tous les tableaux ne portent pas des données. Un contrat en porte qui
|
|
108
|
+
* contiennent des CLAUSES — durées de conservation et leur fondement, sous-
|
|
109
|
+
* traitants et leurs garanties de transfert. Là, tronquer ne « raccourcit »
|
|
110
|
+
* pas : ça CACHE le texte, et cacher une clause dans un document contractuel
|
|
111
|
+
* n'est pas un défaut d'affichage.
|
|
112
|
+
*
|
|
113
|
+
* D'où cette variante, et pas un `className` posé par l'app : le CSS du
|
|
114
|
+
* paquet est hors couche, il bat toute règle layered quelle que soit la
|
|
115
|
+
* spécificité — une app Tailwind qui poserait `whitespace-normal` sur une
|
|
116
|
+
* cellule n'obtiendrait RIEN, en silence. La règle du dépôt est que ce qui
|
|
117
|
+
* doit s'ajuster s'expose en variante ; la voici.
|
|
118
|
+
*
|
|
119
|
+
* (Relevé par la mise en page des documents légaux, 28/08/2026.) */
|
|
120
|
+
|
|
121
|
+
.zv-table--prose .zv-cell {
|
|
122
|
+
overflow: visible;
|
|
123
|
+
text-overflow: clip;
|
|
124
|
+
white-space: normal;
|
|
125
|
+
/* La prose se lit sur plusieurs lignes : il lui faut l'interligne du corps
|
|
126
|
+
* de texte, pas celui d'une cellule d'une ligne. */
|
|
127
|
+
line-height: 1.55;
|
|
128
|
+
/* Un terme long (une référence d'article, une URL de sous-traitant) ne doit
|
|
129
|
+
* pas élargir la colonne au-delà de sa piste. */
|
|
130
|
+
overflow-wrap: anywhere;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* Les lignes cessent de centrer : à hauteurs inégales, une cellule d'une
|
|
134
|
+
* ligne flotterait au milieu d'une cellule de quatre. Elles s'alignent en
|
|
135
|
+
* haut, comme des paragraphes côte à côte. */
|
|
136
|
+
.zv-table--prose .zv-row,
|
|
137
|
+
.zv-table--prose .zv-table__head {
|
|
138
|
+
align-items: start;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* Et elles respirent : 10px conviennent à une ligne, pas à un paragraphe. */
|
|
142
|
+
.zv-table--prose .zv-row {
|
|
143
|
+
padding-top: 12px;
|
|
144
|
+
padding-bottom: 12px;
|
|
145
|
+
}
|
|
146
|
+
|
|
103
147
|
/* En-tête d'un tableau posé DANS une carte : la carte porte déjà son filet,
|
|
104
148
|
* un second trait au-dessus ferait doublon. */
|
|
105
149
|
.zv-table__head--inset {
|
package/src/layout.css
CHANGED
|
@@ -440,8 +440,21 @@
|
|
|
440
440
|
* les entrées de nav posées sur ses lettres. Deux textes superposés, aucun
|
|
441
441
|
* lisible. Signalé en recette sur mcp-factory.
|
|
442
442
|
* Le dégradé n'est pas perdu : il vit sous la barre, là où il adoucit le
|
|
443
|
-
* passage sans se disputer la place avec la navigation.
|
|
444
|
-
|
|
443
|
+
* passage sans se disputer la place avec la navigation.
|
|
444
|
+
*
|
|
445
|
+
* L'OPACITÉ, elle, est retombée de 92 à 72 %. À 92 la barre était un
|
|
446
|
+
* bandeau blanc : ce qui passait dessous n'était plus qu'un fantôme, et
|
|
447
|
+
* le flou ne servait à rien puisqu'il n'y avait rien à voir au travers.
|
|
448
|
+
* C'est du verre qu'on veut, pas un cache — le rendu de
|
|
449
|
+
* landing.zevra.tech, qui fait toujours référence. À 72 avec un flou de
|
|
450
|
+
* 14, le contenu transparaît franchement ET les entrées de nav restent
|
|
451
|
+
* nettes. Comparé à l'écran sur un titre passant sous la barre, à 92, 72
|
|
452
|
+
* et 60 : 92 ne montre rien, 60 devient bavard.
|
|
453
|
+
*
|
|
454
|
+
* ⚠️ Baisser l'opacité SANS monter le flou rendrait la nav illisible :
|
|
455
|
+
* les deux vont ensemble. C'est le flou qui fait le verre ; l'opacité ne
|
|
456
|
+
* fait que doser ce qu'on en voit. */
|
|
457
|
+
background: color-mix(in srgb, var(--paper) 72%, transparent);
|
|
445
458
|
/* ⚠️ LE PRÉFIXÉ D'ABORD. Lightning CSS — le compilateur de Tailwind v4,
|
|
446
459
|
* donc celui de toutes nos applications Next — SUPPRIME `backdrop-filter`
|
|
447
460
|
* non préfixé quand il précède la forme `-webkit-`. Or Firefox ne connaît
|
|
@@ -457,12 +470,16 @@
|
|
|
457
470
|
* compilateur NUE, sans repli, et un navigateur qui l'ignore n'a alors
|
|
458
471
|
* plus AUCUN fond sous une barre fixe — 3,5 % d'usage qui voyaient le
|
|
459
472
|
* voile correctement et ne verraient plus rien. */
|
|
460
|
-
-webkit-backdrop-filter: blur(
|
|
461
|
-
backdrop-filter: blur(
|
|
473
|
+
-webkit-backdrop-filter: blur(14px);
|
|
474
|
+
backdrop-filter: blur(14px);
|
|
462
475
|
}
|
|
463
476
|
|
|
464
477
|
/* La frange de dégradé, posée SOUS la barre. `pointer-events: none` : elle
|
|
465
478
|
* couvre le haut du contenu, elle ne doit rien intercepter. */
|
|
479
|
+
/* Le prolongement du voile SOUS la barre : il éteint le verre au lieu de
|
|
480
|
+
* le couper net. Son sommet doit valoir EXACTEMENT l'opacité de la barre —
|
|
481
|
+
* sinon la jointure fait une marche, d'autant plus visible que la barre est
|
|
482
|
+
* translucide. Les deux valeurs bougent donc ensemble. */
|
|
466
483
|
.zv-header::after {
|
|
467
484
|
content: '';
|
|
468
485
|
position: absolute;
|
|
@@ -472,11 +489,11 @@
|
|
|
472
489
|
height: 24px;
|
|
473
490
|
background: linear-gradient(
|
|
474
491
|
180deg,
|
|
475
|
-
color-mix(in srgb, var(--paper)
|
|
492
|
+
color-mix(in srgb, var(--paper) 72%, transparent),
|
|
476
493
|
color-mix(in srgb, var(--paper) 0%, transparent)
|
|
477
494
|
);
|
|
478
|
-
-webkit-backdrop-filter: blur(
|
|
479
|
-
backdrop-filter: blur(
|
|
495
|
+
-webkit-backdrop-filter: blur(14px);
|
|
496
|
+
backdrop-filter: blur(14px);
|
|
480
497
|
pointer-events: none;
|
|
481
498
|
}
|
|
482
499
|
|