@zevra/ui 0.1.0 → 0.2.1
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 +56 -0
- package/README.md +26 -0
- package/demo/app.html +233 -0
- package/demo/index.html +242 -0
- package/icons/index.json +210 -0
- package/icons/sprite.svg +36 -0
- package/package.json +11 -2
- package/src/components.css +2 -3
- package/src/data.css +742 -0
- package/src/feedback.css +566 -0
- package/src/forms.css +815 -0
- package/src/icons.css +81 -0
- package/src/index.css +5 -0
- package/src/navigation.css +814 -0
- package/src/tokens.css +57 -1
- package/tokens/index.js +27 -1
package/src/icons.css
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/* Zevra UI — icônes
|
|
2
|
+
* Dépend de tokens.css. Le jeu lui-même vit dans icons/ (index + sprite).
|
|
3
|
+
*
|
|
4
|
+
* Les icônes sont TRACÉES, jamais pleines : trait à l'épaisseur 2, bouts et
|
|
5
|
+
* jonctions arrondis, sur une grille de 24. Elles héritent de la couleur du
|
|
6
|
+
* texte — c'est ce qui leur permet de fonctionner sur papier comme sur la
|
|
7
|
+
* bande manifeste sans qu'on ait à les décliner.
|
|
8
|
+
*
|
|
9
|
+
* Deux façons de les poser :
|
|
10
|
+
*
|
|
11
|
+
* <svg class="zv-icon"><use href="…/icons/sprite.svg#zv-recherche"/></svg>
|
|
12
|
+
*
|
|
13
|
+
* ou, là où les ressources distantes sont interdites — un canvas Claude
|
|
14
|
+
* Design —, en collant le corps de l'icône depuis icons/index.json.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
.zv-icon {
|
|
18
|
+
display: inline-block;
|
|
19
|
+
width: 16px;
|
|
20
|
+
height: 16px;
|
|
21
|
+
/* `flex: none` évite l'écrasement quand l'icône est posée à côté d'un
|
|
22
|
+
* libellé long dans un conteneur flex — le cas le plus fréquent, et la
|
|
23
|
+
* déformation la plus visible. */
|
|
24
|
+
flex: none;
|
|
25
|
+
vertical-align: middle;
|
|
26
|
+
fill: none;
|
|
27
|
+
stroke: currentColor;
|
|
28
|
+
stroke-width: 2;
|
|
29
|
+
stroke-linecap: round;
|
|
30
|
+
stroke-linejoin: round;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* Accolée à du texte dense : métadonnée, puce de source, cellule. */
|
|
34
|
+
.zv-icon--sm {
|
|
35
|
+
width: 13px;
|
|
36
|
+
height: 13px;
|
|
37
|
+
/* Le trait s'épaissit optiquement quand l'icône rétrécit : on le compense,
|
|
38
|
+
* sinon une rangée d'icônes de tailles mêlées paraît déséquilibrée. */
|
|
39
|
+
stroke-width: 1.75;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Entrée de navigation, bouton de chrome. */
|
|
43
|
+
.zv-icon--lg {
|
|
44
|
+
width: 20px;
|
|
45
|
+
height: 20px;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Illustration d'un état vide, en tête de panneau. */
|
|
49
|
+
.zv-icon--xl {
|
|
50
|
+
width: 28px;
|
|
51
|
+
height: 28px;
|
|
52
|
+
stroke-width: 1.5;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* Une icône seule dans un bouton n'a pas de libellé pour la nommer : elle
|
|
56
|
+
* doit porter un titre accessible. Cette classe ne fait que réserver la
|
|
57
|
+
* cible tactile ; le nom, lui, se pose en aria-label côté balisage. */
|
|
58
|
+
.zv-icon-btn {
|
|
59
|
+
display: inline-flex;
|
|
60
|
+
align-items: center;
|
|
61
|
+
justify-content: center;
|
|
62
|
+
width: var(--tap);
|
|
63
|
+
height: var(--tap);
|
|
64
|
+
padding: 0;
|
|
65
|
+
border: 0;
|
|
66
|
+
border-radius: var(--r-panel);
|
|
67
|
+
background: transparent;
|
|
68
|
+
color: var(--muted);
|
|
69
|
+
cursor: pointer;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.zv-icon-btn:hover {
|
|
73
|
+
background: var(--panel);
|
|
74
|
+
color: var(--ink);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* Icône décorative posée à côté d'un libellé qui la nomme déjà : elle est
|
|
78
|
+
* atténuée pour que le mot reste le point d'entrée du regard. */
|
|
79
|
+
.zv-icon--quiet {
|
|
80
|
+
color: var(--label);
|
|
81
|
+
}
|