@zevra/ui 0.20.0 → 0.21.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 +54 -0
- package/dist/content.d.ts +24 -5
- package/dist/content.d.ts.map +1 -1
- package/dist/content.js +21 -5
- package/dist/content.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/package.json +1 -1
- package/react/content.tsx +48 -8
- package/react/css-inline.ts +1 -1
- package/src/components.css +50 -3
- package/src/layout.css +28 -5
package/src/components.css
CHANGED
|
@@ -636,8 +636,23 @@
|
|
|
636
636
|
/* ─── FAQ ───────────────────────────────────────────────────────────────
|
|
637
637
|
* Cinq questions par page au maximum. */
|
|
638
638
|
|
|
639
|
+
/* Le filet, comme `.zv-fold` : sans lui, la FAQ est un aplat blanc posé sur
|
|
640
|
+
* le papier, sans début ni fin. Toutes les autres surfaces blanches de la
|
|
641
|
+
* vitrine — carte, encart, tarif — en portent un ; celle-ci faisait tache. */
|
|
639
642
|
.zv-faq {
|
|
640
643
|
background: var(--white);
|
|
644
|
+
border: 1px solid var(--line);
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
/* Chaque question est un `<details>` : le repli est natif, sans JavaScript.
|
|
648
|
+
* Le filet sépare les questions ENTRE elles ; la première n'en porte pas, il
|
|
649
|
+
* tomberait sur celui du bloc et ferait un trait double. */
|
|
650
|
+
.zv-faq__item {
|
|
651
|
+
border-top: 1px solid var(--hairline);
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
.zv-faq__item:first-child {
|
|
655
|
+
border-top: 0;
|
|
641
656
|
}
|
|
642
657
|
|
|
643
658
|
.zv-faq__q {
|
|
@@ -646,22 +661,54 @@
|
|
|
646
661
|
align-items: center;
|
|
647
662
|
gap: 16px;
|
|
648
663
|
padding: 18px 24px;
|
|
649
|
-
border-bottom: 1px solid var(--hairline);
|
|
650
664
|
font-size: 14px;
|
|
651
665
|
font-weight: 600;
|
|
652
666
|
cursor: pointer;
|
|
667
|
+
/* Le marqueur natif du `<summary>` tombe : le chevron du composant fait le
|
|
668
|
+
* même travail sans imposer le triangle du navigateur. Même traitement que
|
|
669
|
+
* `.zv-fold__titre`. */
|
|
670
|
+
list-style: none;
|
|
653
671
|
}
|
|
654
672
|
|
|
655
|
-
.zv-faq__q
|
|
673
|
+
.zv-faq__q::-webkit-details-marker {
|
|
674
|
+
display: none;
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
/* Une FAQ de vitrine veut ses questions dans le PLAN DU DOCUMENT : c'est ce
|
|
678
|
+
* que lisent les moteurs, et ce que parcourt un lecteur d'écran qui saute de
|
|
679
|
+
* titre en titre. On accepte donc un `<h2>`/`<h3>`/`<h4>` comme question,
|
|
680
|
+
* et on lui retire ce que le navigateur lui met — taille, graisse, marges —
|
|
681
|
+
* pour qu'il se rende comme le reste des questions. Le niveau reste au
|
|
682
|
+
* balisage, l'apparence au système. */
|
|
683
|
+
.zv-faq__q > :is(h2, h3, h4) {
|
|
684
|
+
margin: 0;
|
|
685
|
+
font: inherit;
|
|
686
|
+
color: inherit;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
.zv-faq__q:hover {
|
|
690
|
+
background: var(--panel);
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
/* Le chevron porte sa classe : cibler tout `svg` du titre attraperait aussi
|
|
694
|
+
* une icône posée dans le libellé, qui se verrait rétrécie et retournée. */
|
|
695
|
+
.zv-faq__chevron {
|
|
656
696
|
width: 14px;
|
|
657
697
|
height: 14px;
|
|
658
698
|
flex: none;
|
|
659
699
|
color: var(--accent);
|
|
700
|
+
transition: rotate 160ms cubic-bezier(0.2, 0.7, 0.2, 1);
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
.zv-faq__item[open] .zv-faq__chevron {
|
|
704
|
+
rotate: 180deg;
|
|
660
705
|
}
|
|
661
706
|
|
|
662
707
|
.zv-faq__a {
|
|
663
|
-
|
|
708
|
+
margin: 0;
|
|
709
|
+
padding: 0 24px 18px;
|
|
664
710
|
font-size: 13px;
|
|
711
|
+
line-height: 1.6;
|
|
665
712
|
color: var(--muted);
|
|
666
713
|
}
|
|
667
714
|
|
package/src/layout.css
CHANGED
|
@@ -395,11 +395,15 @@
|
|
|
395
395
|
padding-top: 22px;
|
|
396
396
|
padding-bottom: 12px;
|
|
397
397
|
z-index: 40;
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
398
|
+
/* Le voile est PLEIN derrière la barre, et il se dégrade EN DESSOUS d'elle
|
|
399
|
+
* (::after). Il était auparavant dégradé sur toute sa hauteur : à sa base
|
|
400
|
+
* il ne restait donc presque rien, et un titre de 38 ou 56px qui passait
|
|
401
|
+
* dessous se retrouvait COUPÉ EN DEUX — moitié voilée, moitié nette, avec
|
|
402
|
+
* les entrées de nav posées sur ses lettres. Deux textes superposés, aucun
|
|
403
|
+
* lisible. Signalé en recette sur mcp-factory.
|
|
404
|
+
* Le dégradé n'est pas perdu : il vit sous la barre, là où il adoucit le
|
|
405
|
+
* passage sans se disputer la place avec la navigation. */
|
|
406
|
+
background: color-mix(in srgb, var(--paper) 92%, transparent);
|
|
403
407
|
/* ⚠️ LE PRÉFIXÉ D'ABORD. Lightning CSS — le compilateur de Tailwind v4,
|
|
404
408
|
* donc celui de toutes nos applications Next — SUPPRIME `backdrop-filter`
|
|
405
409
|
* non préfixé quand il précède la forme `-webkit-`. Or Firefox ne connaît
|
|
@@ -419,6 +423,25 @@
|
|
|
419
423
|
backdrop-filter: blur(6px);
|
|
420
424
|
}
|
|
421
425
|
|
|
426
|
+
/* La frange de dégradé, posée SOUS la barre. `pointer-events: none` : elle
|
|
427
|
+
* couvre le haut du contenu, elle ne doit rien intercepter. */
|
|
428
|
+
.zv-header::after {
|
|
429
|
+
content: '';
|
|
430
|
+
position: absolute;
|
|
431
|
+
top: 100%;
|
|
432
|
+
left: 0;
|
|
433
|
+
right: 0;
|
|
434
|
+
height: 24px;
|
|
435
|
+
background: linear-gradient(
|
|
436
|
+
180deg,
|
|
437
|
+
color-mix(in srgb, var(--paper) 92%, transparent),
|
|
438
|
+
color-mix(in srgb, var(--paper) 0%, transparent)
|
|
439
|
+
);
|
|
440
|
+
-webkit-backdrop-filter: blur(6px);
|
|
441
|
+
backdrop-filter: blur(6px);
|
|
442
|
+
pointer-events: none;
|
|
443
|
+
}
|
|
444
|
+
|
|
422
445
|
.zv-header:has(> .zv-nav) {
|
|
423
446
|
display: block;
|
|
424
447
|
padding-top: 0;
|