@zevra/ui 0.16.0 → 0.20.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.
Files changed (70) hide show
  1. package/DECISIONS.md +279 -0
  2. package/dist/catalogue.d.ts.map +1 -1
  3. package/dist/catalogue.js +76 -2
  4. package/dist/catalogue.js.map +1 -1
  5. package/dist/content.d.ts +103 -0
  6. package/dist/content.d.ts.map +1 -1
  7. package/dist/content.js +80 -0
  8. package/dist/content.js.map +1 -1
  9. package/dist/css-inline.d.ts.map +1 -1
  10. package/dist/css-inline.js +1 -1
  11. package/dist/css-inline.js.map +1 -1
  12. package/dist/forms.d.ts +22 -0
  13. package/dist/forms.d.ts.map +1 -1
  14. package/dist/forms.js +18 -0
  15. package/dist/forms.js.map +1 -1
  16. package/dist/icon-data.d.ts +1 -1
  17. package/dist/icon-data.d.ts.map +1 -1
  18. package/dist/icon-data.js +30 -0
  19. package/dist/icon-data.js.map +1 -1
  20. package/dist/layout.d.ts +11 -5
  21. package/dist/layout.d.ts.map +1 -1
  22. package/dist/layout.js.map +1 -1
  23. package/dist/typography.d.ts +8 -3
  24. package/dist/typography.d.ts.map +1 -1
  25. package/dist/typography.js +6 -0
  26. package/dist/typography.js.map +1 -1
  27. package/icons/index.json +90 -0
  28. package/icons/sprite.svg +15 -0
  29. package/logos/favicon/campus/apple-touch-icon.png +0 -0
  30. package/logos/favicon/campus/favicon.ico +0 -0
  31. package/logos/favicon/campus/icon-192.png +0 -0
  32. package/logos/favicon/campus/icon-512.png +0 -0
  33. package/logos/favicon/lexform/apple-touch-icon.png +0 -0
  34. package/logos/favicon/lexform/favicon.ico +0 -0
  35. package/logos/favicon/lexform/icon-192.png +0 -0
  36. package/logos/favicon/lexform/icon-512.png +0 -0
  37. package/logos/favicon/mcp/apple-touch-icon.png +0 -0
  38. package/logos/favicon/mcp/favicon.ico +0 -0
  39. package/logos/favicon/mcp/icon-192.png +0 -0
  40. package/logos/favicon/mcp/icon-512.png +0 -0
  41. package/logos/favicon/memoire/apple-touch-icon.png +0 -0
  42. package/logos/favicon/memoire/favicon.ico +0 -0
  43. package/logos/favicon/memoire/icon-192.png +0 -0
  44. package/logos/favicon/memoire/icon-512.png +0 -0
  45. package/logos/favicon/plume/apple-touch-icon.png +0 -0
  46. package/logos/favicon/plume/favicon.ico +0 -0
  47. package/logos/favicon/plume/icon-192.png +0 -0
  48. package/logos/favicon/plume/icon-512.png +0 -0
  49. package/logos/favicon/supernovia/apple-touch-icon.png +0 -0
  50. package/logos/favicon/supernovia/favicon.ico +0 -0
  51. package/logos/favicon/supernovia/icon-192.png +0 -0
  52. package/logos/favicon/supernovia/icon-512.png +0 -0
  53. package/logos/favicon/zevra/apple-touch-icon.png +0 -0
  54. package/logos/favicon/zevra/favicon.ico +0 -0
  55. package/logos/favicon/zevra/icon-192.png +0 -0
  56. package/logos/favicon/zevra/icon-512.png +0 -0
  57. package/package.json +1 -1
  58. package/react/catalogue.tsx +109 -3
  59. package/react/content.tsx +272 -1
  60. package/react/css-inline.ts +1 -1
  61. package/react/forms.tsx +53 -0
  62. package/react/icon-data.ts +45 -0
  63. package/react/layout.tsx +11 -4
  64. package/react/typography.tsx +13 -3
  65. package/src/base.css +7 -0
  66. package/src/components.css +294 -8
  67. package/src/forms.css +65 -2
  68. package/src/icons.css +20 -0
  69. package/src/layout.css +16 -1
  70. package/src/navigation.css +20 -0
package/icons/index.json CHANGED
@@ -38,6 +38,12 @@
38
38
  "viewBox": "0 0 24 24",
39
39
  "corps": "<path d=\"M10.67 3.87 L2.53 17.87 A1.55 1.55 0 0 0 3.87 20.19 H20.13 A1.55 1.55 0 0 0 21.47 17.87 L13.33 3.87 A1.54 1.54 0 0 0 10.67 3.87 Z\" /><path d=\"M12 9.33 V13.33\" /><rect x=\"11.2\" y=\"15.73\" width=\"1.6\" height=\"1.6\" fill=\"currentColor\" stroke=\"none\" />"
40
40
  },
41
+ {
42
+ "id": "avancer",
43
+ "nom": "Avancer",
44
+ "viewBox": "0 0 24 24",
45
+ "corps": "<path d=\"M4 6 L11 12 L4 18 Z\" fill=\"currentColor\" stroke=\"none\" /><path d=\"M13 6 L20 12 L13 18 Z\" fill=\"currentColor\" stroke=\"none\" />"
46
+ },
41
47
  {
42
48
  "id": "balance",
43
49
  "nom": "Balance (justice)",
@@ -98,6 +104,12 @@
98
104
  "viewBox": "0 0 24 24",
99
105
  "corps": "<path d=\"M6.67 14.67 L12 9.33 L17.33 14.67\" />"
100
106
  },
107
+ {
108
+ "id": "citation",
109
+ "nom": "Citation",
110
+ "viewBox": "0 0 24 24",
111
+ "corps": "<path d=\"M4 14 V10 C4 7.8 5.8 6 8 6 V9 C6.9 9 6 9.9 6 11 H9 V14 Z\" /><path d=\"M14 14 V10 C14 7.8 15.8 6 18 6 V9 C16.9 9 16 9.9 16 11 H19 V14 Z\" />"
112
+ },
101
113
  {
102
114
  "id": "coche",
103
115
  "nom": "Coche",
@@ -218,12 +230,24 @@
218
230
  "viewBox": "0 0 24 24",
219
231
  "corps": "<path d=\"M4 4 V20 H20\" /><path d=\"M8.67 20 V12.67\" /><path d=\"M12.67 20 V8\" /><path d=\"M16.67 20 V15.33\" />"
220
232
  },
233
+ {
234
+ "id": "gras",
235
+ "nom": "Gras",
236
+ "viewBox": "0 0 24 24",
237
+ "corps": "<path d=\"M7 4 H13 C15.2 4 16.5 5.3 16.5 7.5 C16.5 9.7 15.2 11 13 11 H7 Z\" /><path d=\"M7 11 H14 C16.2 11 17.5 12.5 17.5 15 C17.5 17.5 16.2 19 14 19 H7 Z\" />"
238
+ },
221
239
  {
222
240
  "id": "horloge",
223
241
  "nom": "Horloge (intégration continue)",
224
242
  "viewBox": "0 0 24 24",
225
243
  "corps": "<circle cx=\"12\" cy=\"12\" r=\"8\" /><path d=\"M12 6.67 V12 L15.33 14\" />"
226
244
  },
245
+ {
246
+ "id": "image",
247
+ "nom": "Image",
248
+ "viewBox": "0 0 24 24",
249
+ "corps": "<path d=\"M3.5 5 H20.5 V19 H3.5 Z\" /><path d=\"M3.5 16 L9 10.5 L13.5 15 L16 12.5 L20.5 17\" /><path d=\"M15 8.5 H15.01\" />"
250
+ },
227
251
  {
228
252
  "id": "imprimante",
229
253
  "nom": "Imprimante",
@@ -236,12 +260,30 @@
236
260
  "viewBox": "0 0 24 24",
237
261
  "corps": "<circle cx=\"12\" cy=\"12\" r=\"8.67\" /><path d=\"M12 11.33 V16\" /><rect x=\"11.2\" y=\"7.2\" width=\"1.6\" height=\"1.6\" fill=\"currentColor\" stroke=\"none\" />"
238
262
  },
263
+ {
264
+ "id": "italique",
265
+ "nom": "Italique",
266
+ "viewBox": "0 0 24 24",
267
+ "corps": "<path d=\"M10 5 H18\" /><path d=\"M6 19 H14\" /><path d=\"M14.5 5 L9.5 19\" />"
268
+ },
269
+ {
270
+ "id": "lecture",
271
+ "nom": "Lecture",
272
+ "viewBox": "0 0 24 24",
273
+ "corps": "<path d=\"M8 5 L19 12 L8 19 Z\" fill=\"currentColor\" stroke=\"none\" />"
274
+ },
239
275
  {
240
276
  "id": "lien-externe",
241
277
  "nom": "Lien externe",
242
278
  "viewBox": "0 0 24 24",
243
279
  "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\" />"
244
280
  },
281
+ {
282
+ "id": "liste-a-puces",
283
+ "nom": "Liste à puces",
284
+ "viewBox": "0 0 24 24",
285
+ "corps": "<path d=\"M9 6.5 H20\" /><path d=\"M9 12 H20\" /><path d=\"M9 17.5 H20\" /><path d=\"M4 5.5 H6 V7.5 H4 Z\" fill=\"currentColor\" stroke=\"none\" /><path d=\"M4 11 H6 V13 H4 Z\" fill=\"currentColor\" stroke=\"none\" /><path d=\"M4 16.5 H6 V18.5 H4 Z\" fill=\"currentColor\" stroke=\"none\" />"
286
+ },
245
287
  {
246
288
  "id": "livre-ouvert",
247
289
  "nom": "Livre ouvert (formation)",
@@ -260,12 +302,36 @@
260
302
  "viewBox": "0 0 24 24",
261
303
  "corps": "<path d=\"M4 12 H20\" />"
262
304
  },
305
+ {
306
+ "id": "muet",
307
+ "nom": "Muet",
308
+ "viewBox": "0 0 24 24",
309
+ "corps": "<path d=\"M4 9.5 H7.5 L12 5.5 V18.5 L7.5 14.5 H4 Z\" /><path d=\"M16 10 L21 14\" /><path d=\"M21 10 L16 14\" />"
310
+ },
263
311
  {
264
312
  "id": "oeil",
265
313
  "nom": "Œil (afficher)",
266
314
  "viewBox": "0 0 24 24",
267
315
  "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\" />"
268
316
  },
317
+ {
318
+ "id": "oeil-barre",
319
+ "nom": "Œil barré",
320
+ "viewBox": "0 0 24 24",
321
+ "corps": "<path d=\"M3 12 C5.5 7.5 8.6 5.5 12 5.5 C15.4 5.5 18.5 7.5 21 12 C18.5 16.5 15.4 18.5 12 18.5 C8.6 18.5 5.5 16.5 3 12 Z\" /><path d=\"M9.5 12 A2.5 2.5 0 0 1 14.5 12 A2.5 2.5 0 0 1 9.5 12 Z\" /><path d=\"M4 20 L20 4\" />"
322
+ },
323
+ {
324
+ "id": "pause",
325
+ "nom": "Pause",
326
+ "viewBox": "0 0 24 24",
327
+ "corps": "<path d=\"M9 5 H11 V19 H9 Z\" fill=\"currentColor\" stroke=\"none\" /><path d=\"M13 5 H15 V19 H13 Z\" fill=\"currentColor\" stroke=\"none\" />"
328
+ },
329
+ {
330
+ "id": "plein-ecran",
331
+ "nom": "Plein écran",
332
+ "viewBox": "0 0 24 24",
333
+ "corps": "<path d=\"M4 9 V4 H9\" /><path d=\"M20 9 V4 H15\" /><path d=\"M4 15 V20 H9\" /><path d=\"M20 15 V20 H15\" />"
334
+ },
269
335
  {
270
336
  "id": "plus",
271
337
  "nom": "Plus",
@@ -290,12 +356,30 @@
290
356
  "viewBox": "0 0 24 24",
291
357
  "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\" />"
292
358
  },
359
+ {
360
+ "id": "rembobiner",
361
+ "nom": "Rembobiner",
362
+ "viewBox": "0 0 24 24",
363
+ "corps": "<path d=\"M11 6 L4 12 L11 18 Z\" fill=\"currentColor\" stroke=\"none\" /><path d=\"M20 6 L13 12 L20 18 Z\" fill=\"currentColor\" stroke=\"none\" />"
364
+ },
293
365
  {
294
366
  "id": "reseau",
295
367
  "nom": "Réseau (entrée / globe)",
296
368
  "viewBox": "0 0 24 24",
297
369
  "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\" />"
298
370
  },
371
+ {
372
+ "id": "signet",
373
+ "nom": "Signet",
374
+ "viewBox": "0 0 24 24",
375
+ "corps": "<path d=\"M6 4 H18 V20 L12 15.5 L6 20 Z\" />"
376
+ },
377
+ {
378
+ "id": "son",
379
+ "nom": "Son",
380
+ "viewBox": "0 0 24 24",
381
+ "corps": "<path d=\"M4 9.5 H7.5 L12 5.5 V18.5 L7.5 14.5 H4 Z\" /><path d=\"M16 9 C17.5 10.2 17.5 13.8 16 15\" /><path d=\"M18.8 6.6 C21.4 9 21.4 15 18.8 17.4\" />"
382
+ },
299
383
  {
300
384
  "id": "taches",
301
385
  "nom": "Tâches (liste à cocher)",
@@ -331,6 +415,12 @@
331
415
  "nom": "Utilisateur",
332
416
  "viewBox": "0 0 24 24",
333
417
  "corps": "<circle cx=\"12\" cy=\"8\" r=\"3.33\" /><path d=\"M5.33 20 C5.33 15.33 8.33 13.33 12 13.33 C15.67 13.33 18.67 15.33 18.67 20\" />"
418
+ },
419
+ {
420
+ "id": "video",
421
+ "nom": "Vidéo",
422
+ "viewBox": "0 0 24 24",
423
+ "corps": "<path d=\"M3.5 6 H15 V18 H3.5 Z\" /><path d=\"M15 10 L20.5 7 V17 L15 14 Z\" />"
334
424
  }
335
425
  ]
336
426
  }
package/icons/sprite.svg CHANGED
@@ -5,6 +5,7 @@
5
5
  <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>
6
6
  <symbol id="zv-archiver" viewBox="0 0 24 24"><rect x="3.33" y="4" width="17.33" height="4.67" /><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>
7
7
  <symbol id="zv-attention" viewBox="0 0 24 24"><path d="M10.67 3.87 L2.53 17.87 A1.55 1.55 0 0 0 3.87 20.19 H20.13 A1.55 1.55 0 0 0 21.47 17.87 L13.33 3.87 A1.54 1.54 0 0 0 10.67 3.87 Z" /><path d="M12 9.33 V13.33" /><rect x="11.2" y="15.73" width="1.6" height="1.6" fill="currentColor" stroke="none" /></symbol>
8
+ <symbol id="zv-avancer" viewBox="0 0 24 24"><path d="M4 6 L11 12 L4 18 Z" fill="currentColor" stroke="none" /><path d="M13 6 L20 12 L13 18 Z" fill="currentColor" stroke="none" /></symbol>
8
9
  <symbol id="zv-balance" viewBox="0 0 24 24"><path d="M12 3.33 V20.67" /><path d="M8.67 20.67 H15.33" /><path d="M5.33 6 H18.67" /><path d="M6.67 6 L3.33 13.33" /><path d="M6.67 6 L10 13.33" /><path d="M3.33 13.33 A3.33 3.33 0 0 0 10 13.33" /><path d="M17.33 6 L14 13.33" /><path d="M17.33 6 L20.67 13.33" /><path d="M14 13.33 A3.33 3.33 0 0 0 20.67 13.33" /></symbol>
9
10
  <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>
10
11
  <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>
@@ -15,6 +16,7 @@
15
16
  <symbol id="zv-chevron-droit" viewBox="0 0 24 24"><path d="M9.33 4 L17.33 12 L9.33 20" /></symbol>
16
17
  <symbol id="zv-chevron-gauche" viewBox="0 0 24 24"><path d="M14.67 4 L6.67 12 L14.67 20" /></symbol>
17
18
  <symbol id="zv-chevron-haut" viewBox="0 0 24 24"><path d="M6.67 14.67 L12 9.33 L17.33 14.67" /></symbol>
19
+ <symbol id="zv-citation" viewBox="0 0 24 24"><path d="M4 14 V10 C4 7.8 5.8 6 8 6 V9 C6.9 9 6 9.9 6 11 H9 V14 Z" /><path d="M14 14 V10 C14 7.8 15.8 6 18 6 V9 C16.9 9 16 9.9 16 11 H19 V14 Z" /></symbol>
18
20
  <symbol id="zv-coche" viewBox="0 0 24 24"><path d="M5 12.4 L9.4 16.8 L19 6.8" /></symbol>
19
21
  <symbol id="zv-copier" viewBox="0 0 24 24"><rect x="4" y="4" width="12" height="12" /><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>
20
22
  <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>
@@ -35,23 +37,36 @@
35
37
  <symbol id="zv-filtre" viewBox="0 0 24 24"><path d="M2.67 4 H21.33 L14.67 12.27 V18.67 L9.33 21.33 V12.27 Z" /></symbol>
36
38
  <symbol id="zv-globe" viewBox="0 0 24 24"><circle cx="12" cy="12" r="8.67" /><path d="M3.33 12 H20.67" /><path d="M12 3.33 C14.22 5.64 15.47 8.71 15.47 12 C15.47 15.29 14.22 18.36 12 20.67 C9.78 18.36 8.53 15.29 8.53 12 C8.53 8.71 9.78 5.64 12 3.33 Z" /></symbol>
37
39
  <symbol id="zv-graphique" viewBox="0 0 24 24"><path d="M4 4 V20 H20" /><path d="M8.67 20 V12.67" /><path d="M12.67 20 V8" /><path d="M16.67 20 V15.33" /></symbol>
40
+ <symbol id="zv-gras" viewBox="0 0 24 24"><path d="M7 4 H13 C15.2 4 16.5 5.3 16.5 7.5 C16.5 9.7 15.2 11 13 11 H7 Z" /><path d="M7 11 H14 C16.2 11 17.5 12.5 17.5 15 C17.5 17.5 16.2 19 14 19 H7 Z" /></symbol>
38
41
  <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>
42
+ <symbol id="zv-image" viewBox="0 0 24 24"><path d="M3.5 5 H20.5 V19 H3.5 Z" /><path d="M3.5 16 L9 10.5 L13.5 15 L16 12.5 L20.5 17" /><path d="M15 8.5 H15.01" /></symbol>
39
43
  <symbol id="zv-imprimante" viewBox="0 0 24 24"><path d="M6.67 8 V3.33 H17.33 V8" /><path d="M6.67 17.33 H4.67 A1.33 1.33 0 0 1 3.33 16 V10.67 A1.33 1.33 0 0 1 4.67 9.33 H19.33 A1.33 1.33 0 0 1 20.67 10.67 V16 A1.33 1.33 0 0 1 19.33 17.33 H17.33" /><rect x="6.67" y="13.33" width="10.67" height="7.33" /></symbol>
40
44
  <symbol id="zv-info" viewBox="0 0 24 24"><circle cx="12" cy="12" r="8.67" /><path d="M12 11.33 V16" /><rect x="11.2" y="7.2" width="1.6" height="1.6" fill="currentColor" stroke="none" /></symbol>
45
+ <symbol id="zv-italique" viewBox="0 0 24 24"><path d="M10 5 H18" /><path d="M6 19 H14" /><path d="M14.5 5 L9.5 19" /></symbol>
46
+ <symbol id="zv-lecture" viewBox="0 0 24 24"><path d="M8 5 L19 12 L8 19 Z" fill="currentColor" stroke="none" /></symbol>
41
47
  <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>
48
+ <symbol id="zv-liste-a-puces" viewBox="0 0 24 24"><path d="M9 6.5 H20" /><path d="M9 12 H20" /><path d="M9 17.5 H20" /><path d="M4 5.5 H6 V7.5 H4 Z" fill="currentColor" stroke="none" /><path d="M4 11 H6 V13 H4 Z" fill="currentColor" stroke="none" /><path d="M4 16.5 H6 V18.5 H4 Z" fill="currentColor" stroke="none" /></symbol>
42
49
  <symbol id="zv-livre-ouvert" viewBox="0 0 24 24"><path d="M2.67 5.33 C5.33 4.67 7.78 4.89 12 6.67 C16.22 4.89 18.67 4.67 21.33 5.33 V18 C18.67 17.33 16.22 17.56 12 19.33 C7.78 17.56 5.33 17.33 2.67 18 Z" /><path d="M12 6.67 V19.33" /></symbol>
43
50
  <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>
44
51
  <symbol id="zv-moins" viewBox="0 0 24 24"><path d="M4 12 H20" /></symbol>
52
+ <symbol id="zv-muet" viewBox="0 0 24 24"><path d="M4 9.5 H7.5 L12 5.5 V18.5 L7.5 14.5 H4 Z" /><path d="M16 10 L21 14" /><path d="M21 10 L16 14" /></symbol>
45
53
  <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>
54
+ <symbol id="zv-oeil-barre" viewBox="0 0 24 24"><path d="M3 12 C5.5 7.5 8.6 5.5 12 5.5 C15.4 5.5 18.5 7.5 21 12 C18.5 16.5 15.4 18.5 12 18.5 C8.6 18.5 5.5 16.5 3 12 Z" /><path d="M9.5 12 A2.5 2.5 0 0 1 14.5 12 A2.5 2.5 0 0 1 9.5 12 Z" /><path d="M4 20 L20 4" /></symbol>
55
+ <symbol id="zv-pause" viewBox="0 0 24 24"><path d="M9 5 H11 V19 H9 Z" fill="currentColor" stroke="none" /><path d="M13 5 H15 V19 H13 Z" fill="currentColor" stroke="none" /></symbol>
56
+ <symbol id="zv-plein-ecran" viewBox="0 0 24 24"><path d="M4 9 V4 H9" /><path d="M20 9 V4 H15" /><path d="M4 15 V20 H9" /><path d="M20 15 V20 H15" /></symbol>
46
57
  <symbol id="zv-plus" viewBox="0 0 24 24"><path d="M12 4 V20" /><path d="M4 12 H20" /></symbol>
47
58
  <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>
48
59
  <symbol id="zv-registre" viewBox="0 0 24 24"><rect x="3.33" y="5.33" width="17.33" height="5.33" /><rect x="3.33" y="13.33" width="17.33" height="5.33" /><rect x="5.87" y="7.2" width="1.6" height="1.6" fill="currentColor" stroke="none" /><rect x="5.87" y="15.2" width="1.6" height="1.6" fill="currentColor" stroke="none" /></symbol>
49
60
  <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>
61
+ <symbol id="zv-rembobiner" viewBox="0 0 24 24"><path d="M11 6 L4 12 L11 18 Z" fill="currentColor" stroke="none" /><path d="M20 6 L13 12 L20 18 Z" fill="currentColor" stroke="none" /></symbol>
50
62
  <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>
63
+ <symbol id="zv-signet" viewBox="0 0 24 24"><path d="M6 4 H18 V20 L12 15.5 L6 20 Z" /></symbol>
64
+ <symbol id="zv-son" viewBox="0 0 24 24"><path d="M4 9.5 H7.5 L12 5.5 V18.5 L7.5 14.5 H4 Z" /><path d="M16 9 C17.5 10.2 17.5 13.8 16 15" /><path d="M18.8 6.6 C21.4 9 21.4 15 18.8 17.4" /></symbol>
51
65
  <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>
52
66
  <symbol id="zv-telecharger" viewBox="0 0 24 24"><path d="M12 3.33 V15.33" /><polyline points="6.67,10 12,15.33 17.33,10" /><path d="M4.67 20.67 H19.33" /></symbol>
53
67
  <symbol id="zv-telephone" viewBox="0 0 24 24"><path d="M20.67 16.93 V19.33 A1.6 1.6 0 0 1 18.93 20.93 C16.13 20.67 13.47 19.67 11.2 18.13 C9.09 16.71 7.29 14.91 5.87 12.8 C4.33 10.52 3.33 7.85 3.07 5.05 A1.6 1.6 0 0 1 4.67 3.33 H7.07 A1.6 1.6 0 0 1 8.67 4.71 C8.79 5.83 9.04 6.93 9.4 7.97 A1.6 1.6 0 0 1 9.04 9.65 L8 10.69 C9.32 13.01 11.03 14.71 13.33 16 L14.37 14.96 A1.6 1.6 0 0 1 16.05 14.6 C17.09 14.96 18.19 15.21 19.31 15.33 A1.6 1.6 0 0 1 20.67 16.93 Z" /></symbol>
54
68
  <symbol id="zv-tri" viewBox="0 0 24 24"><path d="M8 4 V20" /><path d="M4.67 7.33 L8 4 L11.33 7.33" /><path d="M16 20 V4" /><path d="M12.67 16.67 L16 20 L19.33 16.67" /></symbol>
55
69
  <symbol id="zv-trois-points" viewBox="0 0 24 24"><rect x="4" y="10.67" width="2.66" height="2.66" fill="currentColor" stroke="none" /><rect x="10.67" y="10.67" width="2.66" height="2.66" fill="currentColor" stroke="none" /><rect x="17.34" y="10.67" width="2.66" height="2.66" fill="currentColor" stroke="none" /></symbol>
56
70
  <symbol id="zv-utilisateur" viewBox="0 0 24 24"><circle cx="12" cy="8" r="3.33" /><path d="M5.33 20 C5.33 15.33 8.33 13.33 12 13.33 C15.67 13.33 18.67 15.33 18.67 20" /></symbol>
71
+ <symbol id="zv-video" viewBox="0 0 24 24"><path d="M3.5 6 H15 V18 H3.5 Z" /><path d="M15 10 L20.5 7 V17 L15 14 Z" /></symbol>
57
72
  </svg>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zevra/ui",
3
- "version": "0.16.0",
3
+ "version": "0.20.0",
4
4
  "description": "Design system Zevra « Encre & Papier » — tokens, CSS des composants et logos officiels.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
@@ -14,11 +14,13 @@
14
14
  // Ce module n'est jamais importé par le barrel : une app qui ne l'importe pas
15
15
  // ne l'embarque pas.
16
16
 
17
- import { useState, type ReactNode } from 'react'
17
+ import { useState, type ChangeEvent, type ReactNode } from 'react'
18
18
  import { Button, ButtonLink, ButtonRow, LinkArrow } from './actions.js'
19
19
  import {
20
20
  Callout, Card, Check, Divider, Ent, EntText, Faq, FaqItem, Flow, FlowStep,
21
- Glass, IndexItem, IndexList, Inset, MiniStat, MiniStatItem, Pill, Price,
21
+ LegalPage,
22
+ Glass, IndexItem, IndexList, Inset, Media, MediaCoin, MediaVoile, MiniStat,
23
+ MiniStatItem, Pill, Price,
22
24
  Quote, Rows, RowsItem, Src, SrcRow, StatCard, Tag, UiPreview,
23
25
  } from './content.js'
24
26
  import {
@@ -31,7 +33,7 @@ import {
31
33
  Status, Tooltip,
32
34
  } from './feedback.js'
33
35
  import {
34
- Checkbox, Drop, Field, Input, InputAffix, Radio, Range, Search, Seg,
36
+ Checkbox, Drop, Field, Input, InputAffix, InputPassword, Radio, Range, Search, Seg,
35
37
  SegGroup, Select, SelectAnchor, SelectTrigger, Switch, Textarea,
36
38
  } from './forms.js'
37
39
  import { ICONES, Icon, IconButton, IconTile, NOMS_ICONES } from './icon.js'
@@ -232,6 +234,25 @@ function DemoModal() {
232
234
  )
233
235
  }
234
236
 
237
+ function DemoMotDePasse() {
238
+ const [visible, setVisible] = useState(false)
239
+ const [valeur, setValeur] = useState('cabinet-2026')
240
+ return (
241
+ <div style={{ maxWidth: 280 }}>
242
+ <Field label="MOT DE PASSE" htmlFor="ex-mdp">
243
+ <InputPassword
244
+ id="ex-mdp"
245
+ value={valeur}
246
+ onChange={(e: ChangeEvent<HTMLInputElement>) => setValeur(e.target.value)}
247
+ visible={visible}
248
+ onBascule={() => setVisible((v) => !v)}
249
+ autoComplete="current-password"
250
+ />
251
+ </Field>
252
+ </div>
253
+ )
254
+ }
255
+
235
256
  function DemoDrop() {
236
257
  const [survol, setSurvol] = useState(false)
237
258
  return (
@@ -729,6 +750,20 @@ export const CATALOGUE: GroupeCatalogue[] = [
729
750
  parcourir="Parcourir les fichiers" survol={survol} … />`,
730
751
  rendu: <DemoDrop />,
731
752
  },
753
+ {
754
+ id: 'mot-de-passe',
755
+ nom: 'Mot de passe',
756
+ resume:
757
+ 'Le seul champ où l’on tape sans voir ce qu’on écrit : sur un mot de passe long saisi au clavier d’un téléphone, la bascule évite l’échec silencieux. L’état est tenu par l’appelant, et le libellé du bouton change — une icône seule ne dit pas ce qui va se passer.',
758
+ code: `const [visible, setVisible] = useState(false)
759
+
760
+ <Field label="MOT DE PASSE" htmlFor="mdp">
761
+ <InputPassword id="mdp" value={valeur} onChange={…}
762
+ visible={visible} onBascule={() => setVisible((v) => !v)}
763
+ autoComplete="current-password" />
764
+ </Field>`,
765
+ rendu: <DemoMotDePasse />,
766
+ },
732
767
  ],
733
768
  },
734
769
 
@@ -1079,6 +1114,52 @@ export const CATALOGUE: GroupeCatalogue[] = [
1079
1114
  </div>
1080
1115
  ),
1081
1116
  },
1117
+ {
1118
+ id: 'page-legale',
1119
+ nom: 'Page légale',
1120
+ resume:
1121
+ 'La FORME d’un document contractuel ; le TEXTE vit dans @zevra/legal, versionné et archivé — le design system ne dépend pas du contenu, sinon corriger une clause deviendrait une livraison de charte. La version est AFFICHÉE : c’est ce que l’utilisateur cite quand il conteste. ⚠️ Jamais de « voir plus » sur un contrat : ce qu’on accepte se lit en entier là où on l’accepte. Le sommaire se pose à côté, avec « Rail ».',
1122
+ code: `import { enVigueur } from '@zevra/legal'
1123
+
1124
+ <LegalPage document={enVigueur('mentions-legales')} />`,
1125
+ rendu: (
1126
+ <LegalPage
1127
+ document={{
1128
+ titre: 'Mentions legales',
1129
+ version: 'mentions-legales-2026-02-22',
1130
+ applicableAu: '2026-02-22',
1131
+ sections: [
1132
+ {
1133
+ id: 'hebergeur',
1134
+ titre: 'Hebergeur',
1135
+ blocs: [
1136
+ {
1137
+ type: 'definitions',
1138
+ entrees: [
1139
+ { cle: 'Societe', valeur: 'Vercel Inc.' },
1140
+ { cle: 'Adresse', valeur: '340 S Lemon Ave #4133, Walnut, CA 91789, Etats-Unis' },
1141
+ ],
1142
+ },
1143
+ ],
1144
+ },
1145
+ {
1146
+ id: 'propriete-intellectuelle',
1147
+ titre: 'Propriete intellectuelle',
1148
+ blocs: [
1149
+ {
1150
+ type: 'encart',
1151
+ ton: 'clair',
1152
+ label: 'En clair',
1153
+ texte:
1154
+ 'Vous ne pouvez pas copier, modifier ou reutiliser le contenu de ce site sans nous avoir demande la permission par ecrit.',
1155
+ },
1156
+ ],
1157
+ },
1158
+ ],
1159
+ }}
1160
+ />
1161
+ ),
1162
+ },
1082
1163
  {
1083
1164
  id: 'citation',
1084
1165
  nom: 'Citation client',
@@ -2143,6 +2224,31 @@ export const CATALOGUE: GroupeCatalogue[] = [
2143
2224
  </div>
2144
2225
  ),
2145
2226
  },
2227
+ {
2228
+ id: 'media',
2229
+ nom: 'Cadre média',
2230
+ resume:
2231
+ 'Le rapport vit sur le CADRE, jamais sur l’image : posé sur un enfant de grille aligné au centre, il ne se résout pas et la colonne s’effondre à zéro. Le cadre ne charge ni ne décode rien — pour masquer le temps de décodage, composer Spinner par-dessus.',
2232
+ code: `<Media ratio="16-9">
2233
+ <MediaImg src={couverture} alt="" />
2234
+ <MediaVoile />
2235
+ <MediaCoin>12:04</MediaCoin>
2236
+ </Media>
2237
+
2238
+ {/* Un logo ne se rogne pas : il se contient, et le papier passe derrière. */}
2239
+ <Media ratio="1-1" contient>
2240
+ <MediaImg src={logo} alt="Zevra" />
2241
+ </Media>`,
2242
+ rendu: (
2243
+ <div style={{ display: 'grid', gap: 12, gridTemplateColumns: '2fr 1fr', maxWidth: 460 }}>
2244
+ <Media ratio="16-9">
2245
+ <MediaVoile />
2246
+ <MediaCoin>12:04</MediaCoin>
2247
+ </Media>
2248
+ <Media ratio="1-1" contient />
2249
+ </div>
2250
+ ),
2251
+ },
2146
2252
  ],
2147
2253
  },
2148
2254