@zevra/ui 0.46.0 → 0.47.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/react/grille.tsx CHANGED
@@ -300,6 +300,11 @@ export interface DataGridProps<T> {
300
300
  /** La grille REMPLIT son parent (colonne flex à hauteur bornée) : seules
301
301
  * les lignes défilent, la barre, les intitulés et les filtres restent. */
302
302
  remplir?: boolean
303
+ /** Posée À BORD d'une carte sans retrait (`Card padding="aucun"`) : la
304
+ * barre d'outils et la pagination prennent le retrait de la carte, le
305
+ * tableau court d'un bord à l'autre sans second cadre. Sans elle, la
306
+ * recherche et les cases touchent la bordure. */
307
+ encadree?: boolean
303
308
  /** Sous les lignes, dans la zone qui défile : le déclencheur d'une liste
304
309
  * infinie, qui charge la suite en entrant dans l'écran. */
305
310
  apresLignes?: ReactNode
@@ -1310,6 +1315,7 @@ export function DataGrid<T>({
1310
1315
  pied,
1311
1316
  dense,
1312
1317
  remplir,
1318
+ encadree,
1313
1319
  apresLignes,
1314
1320
  envelopperTableau,
1315
1321
  barre = true,
@@ -1700,7 +1706,7 @@ export function DataGrid<T>({
1700
1706
  )
1701
1707
 
1702
1708
  return (
1703
- <div className={cx('zv-grille', remplir && 'zv-grille--remplir', className)}>
1709
+ <div className={cx('zv-grille', remplir && 'zv-grille--remplir', encadree && 'zv-grille--encadree', className)}>
1704
1710
  {barre && (
1705
1711
  <div className="zv-grille__outils">
1706
1712
  {champRecherche ??
@@ -158,21 +158,23 @@
158
158
  }
159
159
 
160
160
  /* Le fantôme DESTRUCTIF (27/10/2026, HORS RELEVÉ, voir DECISIONS.md) :
161
- * « Supprimer » à côté de « Fermer » dans une modale. Au repos c'est un
162
- * fantôme (il ne compte pas comme le plein de l'écran) ; au survol il
163
- * prend l'aplat --err, et l'appui l'assombrit comme le danger plein. Il
164
- * COMPOSE .zv-btn--ghost : l'inertie désactivée ou occupée de celui-ci
165
- * (0,3,0) l'emporte sur ces règles (0,2,0), rien à redire ici. */
161
+ * « Supprimer » à côté de « Fermer » dans une modale. Il RESTE un fantôme
162
+ * au survol : la bordure, le texte et l'icône passent à --err sur le fond
163
+ * --err-soft, comme l'alerte d'erreur. Pas d'aplat --err : c'est celui de
164
+ * `danger`, la confirmation, et un rouge plein au simple survol criait
165
+ * plus fort que le geste (retour de Joachim, 0.46.1). L'appui fonce la
166
+ * bordure. Il COMPOSE .zv-btn--ghost : l'inertie désactivée ou occupée de
167
+ * celui-ci (0,3,0) l'emporte sur ces règles (0,2,0), rien à redire ici. */
166
168
  .zv-btn--ghost-danger:hover {
167
169
  border-color: var(--err);
168
- background: var(--err);
169
- color: var(--white);
170
+ background: var(--err-soft);
171
+ color: var(--err);
170
172
  }
171
173
 
172
174
  .zv-btn--ghost-danger:active {
173
175
  border-color: color-mix(in oklab, var(--err) 86%, var(--ink));
174
- background: color-mix(in oklab, var(--err) 86%, var(--ink));
175
- color: var(--white);
176
+ background: var(--err-soft);
177
+ color: color-mix(in oklab, var(--err) 86%, var(--ink));
176
178
  }
177
179
 
178
180
  /* Variante compacte : barres de navigation. L'ombre tombe : un bouton de
package/src/data.css CHANGED
@@ -1442,6 +1442,34 @@
1442
1442
  gap: 14px;
1443
1443
  }
1444
1444
 
1445
+ /* La grille À BORD d'une carte sans retrait (27/10/2026, HORS RELEVÉ, voir
1446
+ * DECISIONS.md). La barre et la pagination reprennent le retrait d'en-tête
1447
+ * de carte (12 / 16 px, celui des écrans de gestion) ; le tableau court d'un
1448
+ * bord à l'autre et rend son cadre à la carte : deux bordures accolées
1449
+ * faisaient un trait double, et le rayon d'un cadre intérieur ne suit pas
1450
+ * celui de la carte. Le filet du haut reste : il sépare la barre des
1451
+ * intitulés. */
1452
+ .zv-grille--encadree {
1453
+ gap: 0;
1454
+ }
1455
+
1456
+ .zv-grille--encadree > .zv-grille__outils {
1457
+ padding: 12px 16px;
1458
+ }
1459
+
1460
+ /* Les coins du BAS suivent ceux de la carte, moins sa bordure : carrés, le
1461
+ * fond blanc du tableau débordait sur l'arrondi et en masquait le filet.
1462
+ * `max` : sous l'angle vif, le rayon de carte vaut 0 et le calcul serait
1463
+ * négatif. */
1464
+ .zv-grille--encadree .zv-table {
1465
+ border-width: 1px 0 0;
1466
+ border-radius: 0 0 max(0px, calc(var(--r-card) - 1px)) max(0px, calc(var(--r-card) - 1px));
1467
+ }
1468
+
1469
+ .zv-grille--encadree > .zv-pager {
1470
+ padding: 12px 16px;
1471
+ }
1472
+
1445
1473
  @media (max-width: 767px) {
1446
1474
  /* En cartes, l'épinglage, les poignées et la largeur minimale n'ont plus
1447
1475
  * de sens : la carte prend la largeur de l'écran. */