@zevra/ui 0.1.0 → 0.2.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 CHANGED
@@ -128,6 +128,62 @@ le composant plutôt qu'ajouté au token.
128
128
 
129
129
  ---
130
130
 
131
+ ## La couche applicative (relevé Mémoire)
132
+
133
+ Les composants d'interface sont relevés dans l'application Mémoire, en
134
+ production, qui emploie les mêmes tokens de charte. Trois arbitrages de fond
135
+ ont été rendus :
136
+
137
+ **Les neutres.** Mémoire emploie six niveaux de gris là où la charte en a
138
+ trois, et deux d'entre eux — #6B7488 et #727C93 — **échouent au contraste AA**
139
+ sur texte normal (4,34 et 3,87), alors qu'ils portent justement le texte mono
140
+ de 10,5px : latences, horodatages, compteurs. Les adopter aurait gravé une
141
+ régression d'accessibilité. Ils se rabattent sur `--muted` (5,55). Un seul
142
+ niveau intermédiaire est ajouté, `--ink-2` (#4a5468, contraste 7,05).
143
+
144
+ **L'échelle de texte.** Le relevé compte huit paliers répartis dans 5,5px,
145
+ avec des demi-pixels et des écarts d'un pixel — de l'entropie d'utilitaires,
146
+ pas une échelle dessinée. Ils se regroupent en trois paliers de texte
147
+ (`--app-lg`, `--app`, `--app-sm`) et trois de labels (`--mono-lg`, `--mono`,
148
+ `--mono-sm`).
149
+
150
+ **Les filets et surfaces.** Cinq « nouveaux » tokens étaient des doublons
151
+ imperceptibles de tokens existants — écart RVB de 1,4 à 6,8, sous le seuil de
152
+ perception. `--line-inner` → `--hairline`, `--line-soft` → `--line`,
153
+ `--row-hover` / `--paper-hover` / `--paper-warm` → `--panel`.
154
+
155
+ Au total, 32 tokens proposés se réduisent à 14.
156
+
157
+ ### Écarts assumés au relevé
158
+
159
+ **La barre supérieure.** La production pose `top: 53px` pour une barre de
160
+ 52px, en supposant que son filet s'ajoute à la hauteur. Il ne s'y ajoute
161
+ pas : `box-sizing: border-box` le peint à l'intérieur. Ce pixel n'empilait
162
+ rien, il ouvrait une couture — et la feuille portant son propre filet haut,
163
+ le trait apparaissait doublé. Corrigé : la feuille se cale à ras, sans filet
164
+ propre.
165
+
166
+ **L'alignement des colonnes de chiffres.** Le relevé s'appuyait sur
167
+ `--font-mono` pour aligner les nombres. Or `--font-mono` vaut Space Grotesk,
168
+ qui n'est **pas à chasse fixe** : l'alignement n'aurait jamais tenu. Remplacé
169
+ par `font-variant-numeric: tabular-nums`, qui aligne les chiffres dans
170
+ n'importe quelle police.
171
+
172
+ **Le gris chaud.** `#6E6A61`, seule teinte chaude du relevé, se rabat sur
173
+ `--muted`. La nuance de température disparaît ; elle n'était reconductible
174
+ nulle part ailleurs.
175
+
176
+ ### Ce que le relevé ne donnait pas
177
+
178
+ Aucun `<textarea>`, aucune case à cocher, aucun bouton radio n'existe dans
179
+ Mémoire : le composeur du chat est un `<input>`, et toute sélection passe par
180
+ des puces de filtre ou un interrupteur. Ces trois contrôles sont livrés,
181
+ dérivés strictement de `.zv-input`, et signalés comme tels dans le CSS.
182
+
183
+ Aucun jeu d'onglets non plus : une rangée d'onglets se construit avec
184
+ `.zv-seg-group` et `.zv-seg`. Un onglet **souligné** reste à faire — il
185
+ suppose d'arbitrer la couleur et l'épaisseur du trait actif.
186
+
131
187
  ## Écarté du paquet
132
188
 
133
189
  Ce que le relevé recense mais que le paquet ne livre pas, faute d'usage hors
package/README.md CHANGED
@@ -31,6 +31,11 @@ pnpm add @zevra/ui
31
31
  @import "@zevra/ui/layout.css"; /* conteneurs, grilles, sections, chrome */
32
32
  @import "@zevra/ui/surfaces.css"; /* halos, sols, voiles, manifeste */
33
33
  @import "@zevra/ui/motion.css"; /* les neuf animations autorisées */
34
+ @import "@zevra/ui/icons.css"; /* dimensionnement des icônes */
35
+ @import "@zevra/ui/forms.css"; /* champs, selects, interrupteurs, dépôt */
36
+ @import "@zevra/ui/feedback.css"; /* alertes, badges, états, chargement */
37
+ @import "@zevra/ui/navigation.css"; /* menus, barre, fil d'Ariane, pagination */
38
+ @import "@zevra/ui/data.css"; /* tableaux, listes, clé-valeur, avatars */
34
39
  ```
35
40
 
36
41
  L'ordre compte : les tokens d'abord, le socle ensuite. Toutes les classes sont
@@ -44,6 +49,24 @@ unique à 768px reprend les valeurs mobiles du relevé.
44
49
  Chaque valeur vient des maquettes de la passation. Là où deux planches se
45
50
  contredisaient, l'arbitrage est écrit dans [DECISIONS.md](DECISIONS.md).
46
51
 
52
+ ## Deux couches
53
+
54
+ Le paquet en porte deux, et elles ne servent pas au même usage.
55
+
56
+ La **couche vitrine** — `base`, `components`, `layout`, `surfaces`, `motion` —
57
+ compose une page qui se lit : hero, sections, manifeste, cartes produit.
58
+
59
+ La **couche applicative** — `forms`, `feedback`, `navigation`, `data`, `icons` —
60
+ compose une interface qui s'opère : champs, alertes, menus, tableaux. Elle
61
+ est plus dense, et dispose de son échelle propre (`--app`, `--mono`).
62
+
63
+ Une app n'a aucune raison de charger les deux. Seuls `tokens.css` et
64
+ `base.css` sont communs.
65
+
66
+ Le tableau est **à base de grille**, pas de `<table>` : le gabarit de
67
+ colonnes se pose en `--zv-cols` sur le conteneur, et sous 768px la rangée
68
+ s'effondre en carte, chaque valeur reprenant son intitulé.
69
+
47
70
  ## Le mouvement
48
71
 
49
72
  Neuf animations, pas une de plus, sous le préfixe `zv-anim-`. Sept sont
@@ -172,6 +195,9 @@ ci-dessus fonctionne telle quelle.
172
195
  l'index régénéré.
173
196
  5. Publier une version : `npm version <patch|minor|major>` puis `npm publish`.
174
197
 
198
+ `demo/index.html` exerce la couche vitrine, `demo/app.html` la couche
199
+ applicative. Aucune des deux n'est publiée dans le paquet.
200
+
175
201
  `reference/` conserve les maquettes HTML, le prototype animé et les fichiers
176
202
  d'origine de la passation. Ce dossier n'est **pas publié** dans le paquet : il
177
203
  sert d'archive et de référence visuelle, pas de dépendance.
@@ -0,0 +1,210 @@
1
+ {
2
+ "note": "Source de vérité du jeu d'icônes. Modifier ici, puis relancer scripts/build-icon-sprite.mjs.",
3
+ "trace": "trait courant (currentColor), épaisseur 2, bouts et jonctions arrondis, viewBox 24×24",
4
+ "icones": [
5
+ {
6
+ "id": "accueil",
7
+ "nom": "Accueil",
8
+ "viewBox": "0 0 24 24",
9
+ "corps": "<path d=\"M4 10.67 L12 4 L20 10.67 V20 H4 Z\" /><path d=\"M9.33 20 V13.33 H14.67 V20\" />"
10
+ },
11
+ {
12
+ "id": "activite",
13
+ "nom": "Activité (pouls)",
14
+ "viewBox": "0 0 24 24",
15
+ "corps": "<path d=\"M3.33 12 H8 L10.67 5.33 L14 18.67 L16 12 H20.67\" />"
16
+ },
17
+ {
18
+ "id": "app-couches",
19
+ "nom": "Application (couches)",
20
+ "viewBox": "0 0 24 24",
21
+ "corps": "<path d=\"M12 2.67 L20 6.67 L12 10.67 L4 6.67 Z\" /><path d=\"M4 12 L12 16 L20 12\" /><path d=\"M4 17.33 L12 21.33 L20 17.33\" />"
22
+ },
23
+ {
24
+ "id": "archiver",
25
+ "nom": "Archiver",
26
+ "viewBox": "0 0 24 24",
27
+ "corps": "<rect x=\"3.33\" y=\"4\" width=\"17.33\" height=\"4.67\" rx=\"1.07\" /><path d=\"M5.33 8.67 V18.93 A1.07 1.07 0 0 0 6.4 20 H17.6 A1.07 1.07 0 0 0 18.67 18.93 V8.67\" /><path d=\"M9.33 12.67 H14.67\" />"
28
+ },
29
+ {
30
+ "id": "base-de-donnees",
31
+ "nom": "Base de données",
32
+ "viewBox": "0 0 24 24",
33
+ "corps": "<ellipse cx=\"12\" cy=\"6\" rx=\"7.33\" ry=\"2.67\" /><path d=\"M4.67 6 V12 C4.67 13.47 7.87 14.67 12 14.67 C16.13 14.67 19.33 13.47 19.33 12 V6\" /><path d=\"M4.67 12 V18 C4.67 19.47 7.87 20.67 12 20.67 C16.13 20.67 19.33 19.47 19.33 18 V12\" />"
34
+ },
35
+ {
36
+ "id": "bouclier-verifie",
37
+ "nom": "Bouclier vérifié (authentification)",
38
+ "viewBox": "0 0 24 24",
39
+ "corps": "<path d=\"M12 2.67 L20 6 V12 C20 16.67 16.67 19.73 12 21.33 C7.33 19.73 4 16.67 4 12 V6 Z\" /><path d=\"M8.67 12 L11.07 14.4 L15.33 10\" />"
40
+ },
41
+ {
42
+ "id": "cadenas",
43
+ "nom": "Cadenas (secret)",
44
+ "viewBox": "0 0 24 24",
45
+ "corps": "<rect x=\"4.67\" y=\"10.67\" width=\"14.67\" height=\"9.33\" rx=\"1.6\" /><path d=\"M8 10.67 V7.33 A4 4 0 0 1 16 7.33 V10.67\" /><circle cx=\"12\" cy=\"15.33\" r=\"1.33\" />"
46
+ },
47
+ {
48
+ "id": "cadrer",
49
+ "nom": "Cadrer (ajuster à la vue)",
50
+ "viewBox": "0 0 24 24",
51
+ "corps": "<path d=\"M4 8 V4 H8\" /><path d=\"M20 8 V4 H16\" /><path d=\"M4 16 V20 H8\" /><path d=\"M20 16 V20 H16\" />"
52
+ },
53
+ {
54
+ "id": "chevron-bas",
55
+ "nom": "Chevron bas",
56
+ "viewBox": "0 0 24 24",
57
+ "corps": "<path d=\"M6.67 9.33 L12 14.67 L17.33 9.33\" />"
58
+ },
59
+ {
60
+ "id": "chevron-droit",
61
+ "nom": "Chevron droit",
62
+ "viewBox": "0 0 24 24",
63
+ "corps": "<path d=\"M9.33 4 L17.33 12 L9.33 20\" />"
64
+ },
65
+ {
66
+ "id": "chevron-gauche",
67
+ "nom": "Chevron gauche",
68
+ "viewBox": "0 0 24 24",
69
+ "corps": "<path d=\"M14.67 4 L6.67 12 L14.67 20\" />"
70
+ },
71
+ {
72
+ "id": "coche",
73
+ "nom": "Coche",
74
+ "viewBox": "0 0 24 24",
75
+ "corps": "<path d=\"M5 12.4 L9.4 16.8 L19 6.8\" />"
76
+ },
77
+ {
78
+ "id": "copier",
79
+ "nom": "Copier",
80
+ "viewBox": "0 0 24 24",
81
+ "corps": "<rect x=\"4\" y=\"4\" width=\"12\" height=\"12\" rx=\"1.6\" /><path d=\"M8 16 V18.93 A1.07 1.07 0 0 0 9.07 20 H18.93 A1.07 1.07 0 0 0 20 18.93 V9.07 A1.07 1.07 0 0 0 18.93 8 H16\" />"
82
+ },
83
+ {
84
+ "id": "corbeille",
85
+ "nom": "Corbeille (supprimer)",
86
+ "viewBox": "0 0 24 24",
87
+ "corps": "<path d=\"M4 6.67 H20\" /><path d=\"M9.33 6.67 V4.67 A1.33 1.33 0 0 1 10.67 3.33 H13.33 A1.33 1.33 0 0 1 14.67 4.67 V6.67\" /><path d=\"M6 6.67 L6.93 18.93 A1.33 1.33 0 0 0 8.27 20 H15.73 A1.33 1.33 0 0 0 17.07 18.93 L18 6.67\" /><path d=\"M10 10.67 V16.67\" /><path d=\"M14 10.67 V16.67\" />"
88
+ },
89
+ {
90
+ "id": "cube",
91
+ "nom": "Cube (stockage objet)",
92
+ "viewBox": "0 0 24 24",
93
+ "corps": "<path d=\"M3.33 8 L12 4 L20.67 8 V16 L12 20 L3.33 16 Z\" /><path d=\"M3.33 8 L12 12 L20.67 8\" /><path d=\"M12 12 V20\" />"
94
+ },
95
+ {
96
+ "id": "deconnexion",
97
+ "nom": "Déconnexion",
98
+ "viewBox": "0 0 24 24",
99
+ "corps": "<path d=\"M14.67 4 H5.33 V20 H14.67\" /><path d=\"M10.67 12 H20\" /><path d=\"M16.67 8 L20.67 12 L16.67 16\" />"
100
+ },
101
+ {
102
+ "id": "depot-fichier",
103
+ "nom": "Dépôt de fichier (zone de glisser-déposer)",
104
+ "viewBox": "0 0 24 24",
105
+ "corps": "<path d=\"M12 3.2 V14.4\" /><polyline points=\"7.6,10 12,14.4 16.4,10\" /><path d=\"M4 16.8 v2.4 a1.6 1.6 0 0 0 1.6 1.6 h12.8 a1.6 1.6 0 0 0 1.6-1.6 v-2.4\" />"
106
+ },
107
+ {
108
+ "id": "dossier",
109
+ "nom": "Dossier",
110
+ "viewBox": "0 0 24 24",
111
+ "corps": "<path d=\"M1.41 6.64a1.69 1.69 0 0 1 1.69-1.69h4.8l2.12 2.4h10.87a1.69 1.69 0 0 1 1.69 1.69v9.88a1.69 1.69 0 0 1-1.69 1.69H3.11A1.69 1.69 0 0 1 1.41 20.33V6.64Z\" />"
112
+ },
113
+ {
114
+ "id": "eclair",
115
+ "nom": "Éclair (action rapide)",
116
+ "viewBox": "0 0 24 24",
117
+ "corps": "<path d=\"M13.33 2.67 L5.33 13.33 H12 L10.67 21.33 L18.67 10.67 H12 Z\" />"
118
+ },
119
+ {
120
+ "id": "equipe",
121
+ "nom": "Équipe (membres)",
122
+ "viewBox": "0 0 24 24",
123
+ "corps": "<circle cx=\"9.33\" cy=\"8\" r=\"3.33\" /><path d=\"M3.33 20 C3.33 15.33 6 13.33 9.33 13.33 C12.67 13.33 15.33 15.33 15.33 20\" /><path d=\"M16 5.33 A2.93 2.93 0 0 1 16 11.07\" /><path d=\"M17.33 13.6 C19.73 14.27 20.67 16.4 20.67 20\" />"
124
+ },
125
+ {
126
+ "id": "etincelles",
127
+ "nom": "Étincelles (IA)",
128
+ "viewBox": "0 0 24 24",
129
+ "corps": "<path d=\"M12 2.67 L13.87 8.8 L20 10.67 L13.87 12.53 L12 18.67 L10.13 12.53 L4 10.67 L10.13 8.8 Z\" /><path d=\"M19.33 16.67 L20 18.67 L22 19.33 L20 20 L19.33 22 L18.67 20 L16.67 19.33 L18.67 18.67 Z\" />"
130
+ },
131
+ {
132
+ "id": "fermer",
133
+ "nom": "Fermer",
134
+ "viewBox": "0 0 24 24",
135
+ "corps": "<path d=\"M5.33 5.33 L18.67 18.67\" /><path d=\"M18.67 5.33 L5.33 18.67\" />"
136
+ },
137
+ {
138
+ "id": "horloge",
139
+ "nom": "Horloge (intégration continue)",
140
+ "viewBox": "0 0 24 24",
141
+ "corps": "<circle cx=\"12\" cy=\"12\" r=\"8\" /><path d=\"M12 6.67 V12 L15.33 14\" />"
142
+ },
143
+ {
144
+ "id": "lien-externe",
145
+ "nom": "Lien externe",
146
+ "viewBox": "0 0 24 24",
147
+ "corps": "<path d=\"M10.67 4 H4 V20 H20 V13.33\" /><path d=\"M14.67 4 H20 V9.33\" /><path d=\"M20 4 L12 12\" />"
148
+ },
149
+ {
150
+ "id": "menu",
151
+ "nom": "Menu (hamburger)",
152
+ "viewBox": "0 0 24 24",
153
+ "corps": "<path d=\"M0 5.33 H24\" /><path d=\"M0 12 H24\" /><path d=\"M0 18.67 H24\" />"
154
+ },
155
+ {
156
+ "id": "moins",
157
+ "nom": "Moins",
158
+ "viewBox": "0 0 24 24",
159
+ "corps": "<path d=\"M4 12 H20\" />"
160
+ },
161
+ {
162
+ "id": "oeil",
163
+ "nom": "Œil (afficher)",
164
+ "viewBox": "0 0 24 24",
165
+ "corps": "<path d=\"M2 12 C5.33 6.67 8.67 4.67 12 4.67 C15.33 4.67 18.67 6.67 22 12 C18.67 17.33 15.33 19.33 12 19.33 C8.67 19.33 5.33 17.33 2 12 Z\" /><circle cx=\"12\" cy=\"12\" r=\"2.67\" />"
166
+ },
167
+ {
168
+ "id": "plus",
169
+ "nom": "Plus",
170
+ "viewBox": "0 0 24 24",
171
+ "corps": "<path d=\"M12 4 V20\" /><path d=\"M4 12 H20\" />"
172
+ },
173
+ {
174
+ "id": "recherche",
175
+ "nom": "Recherche (loupe)",
176
+ "viewBox": "0 0 24 24",
177
+ "corps": "<circle cx=\"10.67\" cy=\"10.67\" r=\"6\" /><path d=\"M15.33 15.33 L20 20\" />"
178
+ },
179
+ {
180
+ "id": "registre",
181
+ "nom": "Registre (serveurs empilés)",
182
+ "viewBox": "0 0 24 24",
183
+ "corps": "<rect x=\"3.33\" y=\"5.33\" width=\"17.33\" height=\"5.33\" rx=\"1.33\" /><rect x=\"3.33\" y=\"13.33\" width=\"17.33\" height=\"5.33\" rx=\"1.33\" /><circle cx=\"6.67\" cy=\"8\" r=\"0.8\" fill=\"currentColor\" stroke=\"none\" /><circle cx=\"6.67\" cy=\"16\" r=\"0.8\" fill=\"currentColor\" stroke=\"none\" />"
184
+ },
185
+ {
186
+ "id": "reglages",
187
+ "nom": "Réglages",
188
+ "viewBox": "0 0 24 24",
189
+ "corps": "<circle cx=\"12\" cy=\"12\" r=\"2.93\" /><path d=\"M12 2 V4.67 M12 19.33 V22 M2 12 H4.67 M19.33 12 H22 M4.8 4.8 L6.67 6.67 M17.33 17.33 L19.2 19.2 M19.2 4.8 L17.33 6.67 M6.67 17.33 L4.8 19.2\" />"
190
+ },
191
+ {
192
+ "id": "reseau",
193
+ "nom": "Réseau (entrée / globe)",
194
+ "viewBox": "0 0 24 24",
195
+ "corps": "<circle cx=\"12\" cy=\"12\" r=\"8\" /><path d=\"M4 12 H20\" /><path d=\"M12 4 C14.67 8 14.67 16 12 20\" /><path d=\"M12 4 C9.33 8 9.33 16 12 20\" />"
196
+ },
197
+ {
198
+ "id": "taches",
199
+ "nom": "Tâches (liste à cocher)",
200
+ "viewBox": "0 0 24 24",
201
+ "corps": "<path d=\"M4.67 6.67 L6.67 8.67 L10 5.33\" /><path d=\"M4.67 16 L6.67 18 L10 14.67\" /><path d=\"M13.33 7.33 H20\" /><path d=\"M13.33 16.67 H20\" />"
202
+ },
203
+ {
204
+ "id": "trois-points",
205
+ "nom": "Trois points (menu contextuel)",
206
+ "viewBox": "0 0 24 24",
207
+ "corps": "<circle cx=\"5.33\" cy=\"12\" r=\"1.33\" fill=\"currentColor\" stroke=\"none\" /><circle cx=\"12\" cy=\"12\" r=\"1.33\" fill=\"currentColor\" stroke=\"none\" /><circle cx=\"18.67\" cy=\"12\" r=\"1.33\" fill=\"currentColor\" stroke=\"none\" />"
208
+ }
209
+ ]
210
+ }
@@ -0,0 +1,36 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" style="display:none" aria-hidden="true">
2
+ <symbol id="zv-accueil" viewBox="0 0 24 24"><path d="M4 10.67 L12 4 L20 10.67 V20 H4 Z" /><path d="M9.33 20 V13.33 H14.67 V20" /></symbol>
3
+ <symbol id="zv-activite" viewBox="0 0 24 24"><path d="M3.33 12 H8 L10.67 5.33 L14 18.67 L16 12 H20.67" /></symbol>
4
+ <symbol id="zv-app-couches" viewBox="0 0 24 24"><path d="M12 2.67 L20 6.67 L12 10.67 L4 6.67 Z" /><path d="M4 12 L12 16 L20 12" /><path d="M4 17.33 L12 21.33 L20 17.33" /></symbol>
5
+ <symbol id="zv-archiver" viewBox="0 0 24 24"><rect x="3.33" y="4" width="17.33" height="4.67" rx="1.07" /><path d="M5.33 8.67 V18.93 A1.07 1.07 0 0 0 6.4 20 H17.6 A1.07 1.07 0 0 0 18.67 18.93 V8.67" /><path d="M9.33 12.67 H14.67" /></symbol>
6
+ <symbol id="zv-base-de-donnees" viewBox="0 0 24 24"><ellipse cx="12" cy="6" rx="7.33" ry="2.67" /><path d="M4.67 6 V12 C4.67 13.47 7.87 14.67 12 14.67 C16.13 14.67 19.33 13.47 19.33 12 V6" /><path d="M4.67 12 V18 C4.67 19.47 7.87 20.67 12 20.67 C16.13 20.67 19.33 19.47 19.33 18 V12" /></symbol>
7
+ <symbol id="zv-bouclier-verifie" viewBox="0 0 24 24"><path d="M12 2.67 L20 6 V12 C20 16.67 16.67 19.73 12 21.33 C7.33 19.73 4 16.67 4 12 V6 Z" /><path d="M8.67 12 L11.07 14.4 L15.33 10" /></symbol>
8
+ <symbol id="zv-cadenas" viewBox="0 0 24 24"><rect x="4.67" y="10.67" width="14.67" height="9.33" rx="1.6" /><path d="M8 10.67 V7.33 A4 4 0 0 1 16 7.33 V10.67" /><circle cx="12" cy="15.33" r="1.33" /></symbol>
9
+ <symbol id="zv-cadrer" viewBox="0 0 24 24"><path d="M4 8 V4 H8" /><path d="M20 8 V4 H16" /><path d="M4 16 V20 H8" /><path d="M20 16 V20 H16" /></symbol>
10
+ <symbol id="zv-chevron-bas" viewBox="0 0 24 24"><path d="M6.67 9.33 L12 14.67 L17.33 9.33" /></symbol>
11
+ <symbol id="zv-chevron-droit" viewBox="0 0 24 24"><path d="M9.33 4 L17.33 12 L9.33 20" /></symbol>
12
+ <symbol id="zv-chevron-gauche" viewBox="0 0 24 24"><path d="M14.67 4 L6.67 12 L14.67 20" /></symbol>
13
+ <symbol id="zv-coche" viewBox="0 0 24 24"><path d="M5 12.4 L9.4 16.8 L19 6.8" /></symbol>
14
+ <symbol id="zv-copier" viewBox="0 0 24 24"><rect x="4" y="4" width="12" height="12" rx="1.6" /><path d="M8 16 V18.93 A1.07 1.07 0 0 0 9.07 20 H18.93 A1.07 1.07 0 0 0 20 18.93 V9.07 A1.07 1.07 0 0 0 18.93 8 H16" /></symbol>
15
+ <symbol id="zv-corbeille" viewBox="0 0 24 24"><path d="M4 6.67 H20" /><path d="M9.33 6.67 V4.67 A1.33 1.33 0 0 1 10.67 3.33 H13.33 A1.33 1.33 0 0 1 14.67 4.67 V6.67" /><path d="M6 6.67 L6.93 18.93 A1.33 1.33 0 0 0 8.27 20 H15.73 A1.33 1.33 0 0 0 17.07 18.93 L18 6.67" /><path d="M10 10.67 V16.67" /><path d="M14 10.67 V16.67" /></symbol>
16
+ <symbol id="zv-cube" viewBox="0 0 24 24"><path d="M3.33 8 L12 4 L20.67 8 V16 L12 20 L3.33 16 Z" /><path d="M3.33 8 L12 12 L20.67 8" /><path d="M12 12 V20" /></symbol>
17
+ <symbol id="zv-deconnexion" viewBox="0 0 24 24"><path d="M14.67 4 H5.33 V20 H14.67" /><path d="M10.67 12 H20" /><path d="M16.67 8 L20.67 12 L16.67 16" /></symbol>
18
+ <symbol id="zv-depot-fichier" viewBox="0 0 24 24"><path d="M12 3.2 V14.4" /><polyline points="7.6,10 12,14.4 16.4,10" /><path d="M4 16.8 v2.4 a1.6 1.6 0 0 0 1.6 1.6 h12.8 a1.6 1.6 0 0 0 1.6-1.6 v-2.4" /></symbol>
19
+ <symbol id="zv-dossier" viewBox="0 0 24 24"><path d="M1.41 6.64a1.69 1.69 0 0 1 1.69-1.69h4.8l2.12 2.4h10.87a1.69 1.69 0 0 1 1.69 1.69v9.88a1.69 1.69 0 0 1-1.69 1.69H3.11A1.69 1.69 0 0 1 1.41 20.33V6.64Z" /></symbol>
20
+ <symbol id="zv-eclair" viewBox="0 0 24 24"><path d="M13.33 2.67 L5.33 13.33 H12 L10.67 21.33 L18.67 10.67 H12 Z" /></symbol>
21
+ <symbol id="zv-equipe" viewBox="0 0 24 24"><circle cx="9.33" cy="8" r="3.33" /><path d="M3.33 20 C3.33 15.33 6 13.33 9.33 13.33 C12.67 13.33 15.33 15.33 15.33 20" /><path d="M16 5.33 A2.93 2.93 0 0 1 16 11.07" /><path d="M17.33 13.6 C19.73 14.27 20.67 16.4 20.67 20" /></symbol>
22
+ <symbol id="zv-etincelles" viewBox="0 0 24 24"><path d="M12 2.67 L13.87 8.8 L20 10.67 L13.87 12.53 L12 18.67 L10.13 12.53 L4 10.67 L10.13 8.8 Z" /><path d="M19.33 16.67 L20 18.67 L22 19.33 L20 20 L19.33 22 L18.67 20 L16.67 19.33 L18.67 18.67 Z" /></symbol>
23
+ <symbol id="zv-fermer" viewBox="0 0 24 24"><path d="M5.33 5.33 L18.67 18.67" /><path d="M18.67 5.33 L5.33 18.67" /></symbol>
24
+ <symbol id="zv-horloge" viewBox="0 0 24 24"><circle cx="12" cy="12" r="8" /><path d="M12 6.67 V12 L15.33 14" /></symbol>
25
+ <symbol id="zv-lien-externe" viewBox="0 0 24 24"><path d="M10.67 4 H4 V20 H20 V13.33" /><path d="M14.67 4 H20 V9.33" /><path d="M20 4 L12 12" /></symbol>
26
+ <symbol id="zv-menu" viewBox="0 0 24 24"><path d="M0 5.33 H24" /><path d="M0 12 H24" /><path d="M0 18.67 H24" /></symbol>
27
+ <symbol id="zv-moins" viewBox="0 0 24 24"><path d="M4 12 H20" /></symbol>
28
+ <symbol id="zv-oeil" viewBox="0 0 24 24"><path d="M2 12 C5.33 6.67 8.67 4.67 12 4.67 C15.33 4.67 18.67 6.67 22 12 C18.67 17.33 15.33 19.33 12 19.33 C8.67 19.33 5.33 17.33 2 12 Z" /><circle cx="12" cy="12" r="2.67" /></symbol>
29
+ <symbol id="zv-plus" viewBox="0 0 24 24"><path d="M12 4 V20" /><path d="M4 12 H20" /></symbol>
30
+ <symbol id="zv-recherche" viewBox="0 0 24 24"><circle cx="10.67" cy="10.67" r="6" /><path d="M15.33 15.33 L20 20" /></symbol>
31
+ <symbol id="zv-registre" viewBox="0 0 24 24"><rect x="3.33" y="5.33" width="17.33" height="5.33" rx="1.33" /><rect x="3.33" y="13.33" width="17.33" height="5.33" rx="1.33" /><circle cx="6.67" cy="8" r="0.8" fill="currentColor" stroke="none" /><circle cx="6.67" cy="16" r="0.8" fill="currentColor" stroke="none" /></symbol>
32
+ <symbol id="zv-reglages" viewBox="0 0 24 24"><circle cx="12" cy="12" r="2.93" /><path d="M12 2 V4.67 M12 19.33 V22 M2 12 H4.67 M19.33 12 H22 M4.8 4.8 L6.67 6.67 M17.33 17.33 L19.2 19.2 M19.2 4.8 L17.33 6.67 M6.67 17.33 L4.8 19.2" /></symbol>
33
+ <symbol id="zv-reseau" viewBox="0 0 24 24"><circle cx="12" cy="12" r="8" /><path d="M4 12 H20" /><path d="M12 4 C14.67 8 14.67 16 12 20" /><path d="M12 4 C9.33 8 9.33 16 12 20" /></symbol>
34
+ <symbol id="zv-taches" viewBox="0 0 24 24"><path d="M4.67 6.67 L6.67 8.67 L10 5.33" /><path d="M4.67 16 L6.67 18 L10 14.67" /><path d="M13.33 7.33 H20" /><path d="M13.33 16.67 H20" /></symbol>
35
+ <symbol id="zv-trois-points" viewBox="0 0 24 24"><circle cx="5.33" cy="12" r="1.33" fill="currentColor" stroke="none" /><circle cx="12" cy="12" r="1.33" fill="currentColor" stroke="none" /><circle cx="18.67" cy="12" r="1.33" fill="currentColor" stroke="none" /></symbol>
36
+ </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zevra/ui",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Design system Zevra « Encre & Papier » — tokens, CSS des composants et logos officiels.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
@@ -29,12 +29,19 @@
29
29
  "./layout.css": "./src/layout.css",
30
30
  "./surfaces.css": "./src/surfaces.css",
31
31
  "./motion.css": "./src/motion.css",
32
- "./logos/*": "./logos/*"
32
+ "./logos/*": "./logos/*",
33
+ "./icons.css": "./src/icons.css",
34
+ "./forms.css": "./src/forms.css",
35
+ "./feedback.css": "./src/feedback.css",
36
+ "./navigation.css": "./src/navigation.css",
37
+ "./data.css": "./src/data.css",
38
+ "./icons/*": "./icons/*"
33
39
  },
34
40
  "files": [
35
41
  "src",
36
42
  "tokens",
37
43
  "logos",
44
+ "icons",
38
45
  "README.md",
39
46
  "DECISIONS.md"
40
47
  ],
@@ -232,14 +232,13 @@
232
232
  padding: 32px;
233
233
  }
234
234
 
235
- /* Carte de statut. L'état « refusé » n'a pas de token de filet — il n'existe
236
- * pas de --err-line, là où --ok-line existe. Asymétrie du jeu de tokens. */
235
+ /* Carte de statut. Les trois familles d'état ont désormais leur filet. */
237
236
  .zv-card--ok {
238
237
  border-color: var(--ok-line);
239
238
  }
240
239
 
241
240
  .zv-card--err {
242
- border-color: #efc9cd;
241
+ border-color: var(--err-line);
243
242
  }
244
243
 
245
244
  /* Carte flottante : celle qui se détache au-dessus d'une scène. */