@cyrilld/zestds 0.1.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.
@@ -0,0 +1,920 @@
1
+ import * as react from 'react';
2
+ import { SVGProps } from 'react';
3
+
4
+ declare const Home01: {
5
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
6
+ displayName: string;
7
+ };
8
+ declare const Home02: {
9
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
10
+ displayName: string;
11
+ };
12
+ declare const Menu01: {
13
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
14
+ displayName: string;
15
+ };
16
+ declare const Search01: {
17
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
18
+ displayName: string;
19
+ };
20
+ declare const Edit01: {
21
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
22
+ displayName: string;
23
+ };
24
+ declare const Edit02: {
25
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
26
+ displayName: string;
27
+ };
28
+ declare const Heart01: {
29
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
30
+ displayName: string;
31
+ };
32
+ declare const Heart02: {
33
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
34
+ displayName: string;
35
+ };
36
+ declare const Bookmark01: {
37
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
38
+ displayName: string;
39
+ };
40
+ declare const Share01: {
41
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
42
+ displayName: string;
43
+ };
44
+ declare const Download01: {
45
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
46
+ displayName: string;
47
+ };
48
+ declare const Settings01: {
49
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
50
+ displayName: string;
51
+ };
52
+ declare const Upload01: {
53
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
54
+ displayName: string;
55
+ };
56
+ declare const XClose: {
57
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
58
+ displayName: string;
59
+ };
60
+ declare const FilterFunnel01: {
61
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
62
+ displayName: string;
63
+ };
64
+ declare const FilterFunnel02: {
65
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
66
+ displayName: string;
67
+ };
68
+ declare const Link01: {
69
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
70
+ displayName: string;
71
+ };
72
+ declare const LinkBroken01: {
73
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
74
+ displayName: string;
75
+ };
76
+ declare const LogOut01: {
77
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
78
+ displayName: string;
79
+ };
80
+ declare const HelpCircle01: {
81
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
82
+ displayName: string;
83
+ };
84
+ declare const HelpCircle02: {
85
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
86
+ displayName: string;
87
+ };
88
+ declare const Trash01: {
89
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
90
+ displayName: string;
91
+ };
92
+ declare const Trash02: {
93
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
94
+ displayName: string;
95
+ };
96
+ declare const CheckCircle01: {
97
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
98
+ displayName: string;
99
+ };
100
+ declare const CheckCircle02: {
101
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
102
+ displayName: string;
103
+ };
104
+ declare const XCircle: {
105
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
106
+ displayName: string;
107
+ };
108
+ declare const SmartOrg: {
109
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
110
+ displayName: string;
111
+ };
112
+ declare const PlusCircle01: {
113
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
114
+ displayName: string;
115
+ };
116
+ declare const PlusCircle02: {
117
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
118
+ displayName: string;
119
+ };
120
+ declare const Eye01: {
121
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
122
+ displayName: string;
123
+ };
124
+ declare const Eye02: {
125
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
126
+ displayName: string;
127
+ };
128
+ declare const SlashCircle01: {
129
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
130
+ displayName: string;
131
+ };
132
+ declare const DotsVertical: {
133
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
134
+ displayName: string;
135
+ };
136
+ declare const Check: {
137
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
138
+ displayName: string;
139
+ };
140
+ declare const Minus: {
141
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
142
+ displayName: string;
143
+ };
144
+ declare const Calendar: {
145
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
146
+ displayName: string;
147
+ };
148
+ declare const Plus: {
149
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
150
+ displayName: string;
151
+ };
152
+ declare const Clock: {
153
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
154
+ displayName: string;
155
+ };
156
+ declare const Share02: {
157
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
158
+ displayName: string;
159
+ };
160
+ declare const Share03: {
161
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
162
+ displayName: string;
163
+ };
164
+ declare const Tick: {
165
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
166
+ displayName: string;
167
+ };
168
+ declare const SlashDivider: {
169
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
170
+ displayName: string;
171
+ };
172
+ declare const Tool01: {
173
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
174
+ displayName: string;
175
+ };
176
+ declare const Mail01: {
177
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
178
+ displayName: string;
179
+ };
180
+ declare const Bell01: {
181
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
182
+ displayName: string;
183
+ };
184
+ declare const BellOff01: {
185
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
186
+ displayName: string;
187
+ };
188
+ declare const User01: {
189
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
190
+ displayName: string;
191
+ };
192
+ declare const Users01: {
193
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
194
+ displayName: string;
195
+ };
196
+ declare const EyeOff: {
197
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
198
+ displayName: string;
199
+ };
200
+ declare const RefreshCw01: {
201
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
202
+ displayName: string;
203
+ };
204
+ declare const Building07: {
205
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
206
+ displayName: string;
207
+ };
208
+ declare const ThumbsDown: {
209
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
210
+ displayName: string;
211
+ };
212
+ declare const ThumbsUp: {
213
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
214
+ displayName: string;
215
+ };
216
+ declare const Star01: {
217
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
218
+ displayName: string;
219
+ };
220
+ declare const Target05: {
221
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
222
+ displayName: string;
223
+ };
224
+ declare const MessageBubble01: {
225
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
226
+ displayName: string;
227
+ };
228
+ declare const MessageBubble02: {
229
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
230
+ displayName: string;
231
+ };
232
+ declare const Settings02: {
233
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
234
+ displayName: string;
235
+ };
236
+ declare const CheckDone01: {
237
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
238
+ displayName: string;
239
+ };
240
+ declare const Flag01: {
241
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
242
+ displayName: string;
243
+ };
244
+ declare const ChevronDownDouble: {
245
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
246
+ displayName: string;
247
+ };
248
+ declare const ChevronLeftDouble: {
249
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
250
+ displayName: string;
251
+ };
252
+ declare const ChevronRightDouble: {
253
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
254
+ displayName: string;
255
+ };
256
+ declare const ChevronUpDouble: {
257
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
258
+ displayName: string;
259
+ };
260
+ declare const CalendarPlus01: {
261
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
262
+ displayName: string;
263
+ };
264
+ declare const FeatureActionPlan: {
265
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
266
+ displayName: string;
267
+ };
268
+ declare const FeatureAlignmentMap: {
269
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
270
+ displayName: string;
271
+ };
272
+ declare const FeatureCheckin: {
273
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
274
+ displayName: string;
275
+ };
276
+ declare const FeatureCockpit: {
277
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
278
+ displayName: string;
279
+ };
280
+ declare const FeatureEngageo: {
281
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
282
+ displayName: string;
283
+ };
284
+ declare const FeatureFeedback: {
285
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
286
+ displayName: string;
287
+ };
288
+ declare const FeatureIdea: {
289
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
290
+ displayName: string;
291
+ };
292
+ declare const FeatureIntercom01: {
293
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
294
+ displayName: string;
295
+ };
296
+ declare const FeatureIntercom02: {
297
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
298
+ displayName: string;
299
+ };
300
+ declare const FeatureKeydriver: {
301
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
302
+ displayName: string;
303
+ };
304
+ declare const FeatureMood01: {
305
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
306
+ displayName: string;
307
+ };
308
+ declare const FeatureMood02: {
309
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
310
+ displayName: string;
311
+ };
312
+ declare const FeatureObjective: {
313
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
314
+ displayName: string;
315
+ };
316
+ declare const FeatureProject: {
317
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
318
+ displayName: string;
319
+ };
320
+ declare const FeatureResume: {
321
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
322
+ displayName: string;
323
+ };
324
+ declare const FeatureSkill: {
325
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
326
+ displayName: string;
327
+ };
328
+ declare const FeatureSurvey01: {
329
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
330
+ displayName: string;
331
+ };
332
+ declare const FeatureSurvey02: {
333
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
334
+ displayName: string;
335
+ };
336
+ declare const Mail02: {
337
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
338
+ displayName: string;
339
+ };
340
+ declare const ModuleLead: {
341
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
342
+ displayName: string;
343
+ };
344
+ declare const ModuleListen: {
345
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
346
+ displayName: string;
347
+ };
348
+ declare const ModulePerform: {
349
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
350
+ displayName: string;
351
+ };
352
+ declare const ModuleShare: {
353
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
354
+ displayName: string;
355
+ };
356
+ declare const InfoCircle01: {
357
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
358
+ displayName: string;
359
+ };
360
+ declare const InfoCircle02: {
361
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
362
+ displayName: string;
363
+ };
364
+ declare const AlertCircle01: {
365
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
366
+ displayName: string;
367
+ };
368
+ declare const AlertCircle02: {
369
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
370
+ displayName: string;
371
+ };
372
+ declare const AlertTriangle01: {
373
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
374
+ displayName: string;
375
+ };
376
+ declare const AlertTriangle02: {
377
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
378
+ displayName: string;
379
+ };
380
+ declare const MinusCircle: {
381
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
382
+ displayName: string;
383
+ };
384
+ declare const LockUnlocked02: {
385
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
386
+ displayName: string;
387
+ };
388
+ declare const Lock02: {
389
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
390
+ displayName: string;
391
+ };
392
+ declare const Lock01: {
393
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
394
+ displayName: string;
395
+ };
396
+ declare const LockUnlocked01: {
397
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
398
+ displayName: string;
399
+ };
400
+ declare const MessageChatSquare: {
401
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
402
+ displayName: string;
403
+ };
404
+ declare const Send01: {
405
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
406
+ displayName: string;
407
+ };
408
+ declare const Inbox01: {
409
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
410
+ displayName: string;
411
+ };
412
+ declare const Circle: {
413
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
414
+ displayName: string;
415
+ };
416
+ declare const BarChartSquare02: {
417
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
418
+ displayName: string;
419
+ };
420
+ declare const ArrowDown: {
421
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
422
+ displayName: string;
423
+ };
424
+ declare const ArrowDownLeft: {
425
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
426
+ displayName: string;
427
+ };
428
+ declare const ArrowDownRight: {
429
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
430
+ displayName: string;
431
+ };
432
+ declare const ArrowLeft: {
433
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
434
+ displayName: string;
435
+ };
436
+ declare const ArrowNarrowDown: {
437
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
438
+ displayName: string;
439
+ };
440
+ declare const ArrowNarrowDownLeft: {
441
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
442
+ displayName: string;
443
+ };
444
+ declare const ArrowNarrowDownRight: {
445
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
446
+ displayName: string;
447
+ };
448
+ declare const ArrowNarrowLeft: {
449
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
450
+ displayName: string;
451
+ };
452
+ declare const ArrowNarrowRight: {
453
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
454
+ displayName: string;
455
+ };
456
+ declare const ArrowNarrowUp: {
457
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
458
+ displayName: string;
459
+ };
460
+ declare const ArrowNarrowUpLeft: {
461
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
462
+ displayName: string;
463
+ };
464
+ declare const ArrowNarrowUpRight: {
465
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
466
+ displayName: string;
467
+ };
468
+ declare const ArrowRight: {
469
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
470
+ displayName: string;
471
+ };
472
+ declare const ChevronDown: {
473
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
474
+ displayName: string;
475
+ };
476
+ declare const ChevronLeft: {
477
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
478
+ displayName: string;
479
+ };
480
+ declare const ChevronRight: {
481
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
482
+ displayName: string;
483
+ };
484
+ declare const ChevronUp: {
485
+ (props: SVGProps<SVGSVGElement>): react.JSX.Element;
486
+ displayName: string;
487
+ };
488
+
489
+ /**
490
+ * Le catalogue des icônes de type de fichier — LA source unique.
491
+ *
492
+ * ⚠️ GÉNÉRÉ depuis le Figma de Zest, cadre « File type icon » (`3847:2911`).
493
+ * Ne pas corriger à la main : corriger le Figma, puis régénérer. Une retouche
494
+ * locale serait écrasée sans laisser de trace.
495
+ *
496
+ * Vingt-sept types, chacun en trois habillages : 81 dessins.
497
+ *
498
+ * ------------------------------------------------------------------------
499
+ * LES COULEURS SONT PORTÉES SUR LES JETONS
500
+ * ------------------------------------------------------------------------
501
+ * Le cadre Figma est encore lié à une collection de variables étrangère au
502
+ * thème. Les dessins ne sont donc pas recopiés avec leurs teintes : chaque
503
+ * couleur est remplacée par le jeton qui convient, l'écart mesuré en Lab.
504
+ *
505
+ * violet → brand-600 la famille Image
506
+ * bleu → utility-horizon-600 document et vidéo
507
+ * vert → success-600 le tableur
508
+ * rouge → error-600 le PDF
509
+ * orange → warning-600 la présentation
510
+ * rose → utility-rose-600 l'audio
511
+ * neutres → gray-600, gray-700, gray-300, gray-200, gray-100, white
512
+ *
513
+ * ⚠️ DEUX FAMILLES, DEUX BLEUS, ET C'EST VOULU. Image porte le bleu de marque,
514
+ * Document l'ardoise. Les rapprocher les rendrait indiscernables — or c'est
515
+ * cette distinction qui fait qu'on reconnaît un PNG d'un DOCX sans lire.
516
+ *
517
+ * ⚠️ LE PLUS PROCHE N'EST PAS LE BON. Mesuré, le jeton le plus proche de
518
+ * l'orange de la présentation est le rouge du PDF. Le prendre aurait rendu PPT
519
+ * et PDF identiques : la distance qui compte est celle ENTRE les icônes, pas
520
+ * celle à la teinte d'origine.
521
+ *
522
+ * ⚠️ LE DESIGN SYSTEM N'A NI ORANGE, NI VERT, NI ROUGE UTILITAIRES. Une couleur
523
+ * de type de fichier CATÉGORISE, donc elle devrait venir de cette couche ;
524
+ * faute de teinte, le tableur, la présentation et le PDF empruntent les rampes
525
+ * sémantiques. Assumé.
526
+ *
527
+ * ------------------------------------------------------------------------
528
+ * LA FORME : DU MARKUP COMPOSÉ
529
+ * ------------------------------------------------------------------------
530
+ * Le Figma compose chaque icône : une feuille, puis un glyphe ou une pastille
531
+ * portant l'extension. Tout est recomposé dans UN `<svg>` de 40×40 — la
532
+ * pastille devient un `<rect>` arrondi, l'extension un `<text>`.
533
+ *
534
+ * ⚠️ LA COULEUR DE L'ÉTIQUETTE SE LIT, ELLE NE SE SUPPOSE PAS. Elle a été codée
535
+ * en dur à blanc pour les 81 : les 18 de la variante Gray sont sorties blanches
536
+ * sur une feuille claire, donc invisibles. Le Figma les déclare toutes — blanc
537
+ * en Default et Solid, gris foncé en Gray. `yarn verify:labels` mesure
538
+ * désormais le contraste de chacune.
539
+ *
540
+ * ⚠️ L'EXTENSION EST DU TEXTE, PAS UN TRACÉ. Elle rend dans la police du design
541
+ * system ; un SVG copié hors du produit demandera Averta pour s'afficher juste.
542
+ *
543
+ * ⚠️ LA BOÎTE EST DE 40, PAS DE 24. Les icônes du design system sont tracées à
544
+ * 24 ; celles-ci ont un rapport de feuille et bien plus de détail. Les mélanger
545
+ * à la même taille dans une même ligne se voit.
546
+ *
547
+ * Conséquence à connaître : une icône de fichier ne suit PAS la couleur du
548
+ * texte, contrairement aux 121 autres. C'est inhérent — un PDF rouge et un
549
+ * tableur vert sont une convention de reconnaissance, pas un choix de marque.
550
+ */
551
+ type FileIconFamille = "simple" | "image" | "document";
552
+ /** Les trois habillages du Figma. */
553
+ type FileIconVariante = "default" | "gray" | "solid";
554
+ interface ZestFileIcon {
555
+ /** La clé. Ex. `pdf`, `pdf-simple`, `video-01`. */
556
+ name: string;
557
+ /** La planche du Figma dont le type vient. */
558
+ famille: FileIconFamille;
559
+ /** Le libellé, tel que le Figma l'écrit. Ex. `WebP`, `Video 01`. */
560
+ libelle: string;
561
+ /** Le contenu du `<svg>`, boîte de 40, une entrée par habillage. */
562
+ svg: Record<FileIconVariante, string>;
563
+ }
564
+ declare const ZEST_FILE_ICONS: ZestFileIcon[];
565
+ /** Retrouve une icône de fichier par son nom. */
566
+ declare const findFileIcon: (name: string) => ZestFileIcon | undefined;
567
+
568
+ /**
569
+ * Les icônes de type de fichier, en composants.
570
+ *
571
+ * ⚠️ ÉCRIT À LA MAIN, contrairement à `icons/index.tsx`. Là-bas, 121 icônes
572
+ * monochromes justifiaient un composant par dessin ; ici les dessins sont
573
+ * polychromes et se choisissent le plus souvent À L'EXÉCUTION, depuis
574
+ * l'extension d'un fichier téléversé. Un composant par type obligerait à écrire
575
+ * un `switch` de vingt-sept branches dans chaque écran ; `<FileIcon name=…>` le
576
+ * fait une fois.
577
+ *
578
+ * Les vingt-sept exports nommés existent quand même, pour le cas inverse : un
579
+ * écran qui sait qu'il montre un PDF écrit `<FilePdf />` et ne paie pas la
580
+ * recherche.
581
+ */
582
+ interface FileIconProps extends Omit<SVGProps<SVGSVGElement>, "name"> {
583
+ /** Le nom du type, tel que le catalogue le range. Ex. `pdf`, `xlsx`, `pdf-simple`. */
584
+ name: string;
585
+ /** L'habillage. `default` par défaut — celui des maquettes. */
586
+ variant?: FileIconVariante;
587
+ /** Le côté du carré, en pixels. 40 est la taille de dessin. */
588
+ size?: number;
589
+ }
590
+ /**
591
+ * Une icône de type de fichier.
592
+ *
593
+ * ⚠️ ELLE NE DIT PAS SON NOM AUX LECTEURS D'ÉCRAN, et c'est délibéré :
594
+ * `aria-hidden`. Une icône de fichier accompagne TOUJOURS un nom de fichier
595
+ * écrit à côté — « rapport-q3.pdf » — et l'annoncer ferait entendre « PDF »
596
+ * deux fois. L'écran qui la poserait seule doit porter le libellé lui-même.
597
+ *
598
+ * ⚠️ ET ELLE NE SUIT PAS LA COULEUR DU TEXTE, contrairement aux 121 icônes du
599
+ * design system. Ses teintes sont dans le dessin, citées en jetons : un PDF est
600
+ * rouge et un tableur vert parce que c'est une convention de reconnaissance.
601
+ */
602
+ declare const FileIcon: {
603
+ ({ name, variant, size, ...props }: FileIconProps): react.JSX.Element | null;
604
+ displayName: string;
605
+ };
606
+ type FileIconRaccourci = (props: Omit<FileIconProps, "name">) => ReturnType<typeof FileIcon>;
607
+ declare const FileEmpty: FileIconRaccourci;
608
+ declare const FileFolder: FileIconRaccourci;
609
+ declare const FileImage: FileIconRaccourci;
610
+ declare const FileVideo01: FileIconRaccourci;
611
+ declare const FileVideo02: FileIconRaccourci;
612
+ declare const FileAudio: FileIconRaccourci;
613
+ declare const FilePdfSimple: FileIconRaccourci;
614
+ declare const FileDocument: FileIconRaccourci;
615
+ declare const FileSpreadsheet: FileIconRaccourci;
616
+ declare const FileImg: FileIconRaccourci;
617
+ declare const FileJpg: FileIconRaccourci;
618
+ declare const FileJpeg: FileIconRaccourci;
619
+ declare const FilePng: FileIconRaccourci;
620
+ declare const FileWebp: FileIconRaccourci;
621
+ declare const FileTiff: FileIconRaccourci;
622
+ declare const FileGif: FileIconRaccourci;
623
+ declare const FileSvg: FileIconRaccourci;
624
+ declare const FileEps: FileIconRaccourci;
625
+ declare const FilePdf: FileIconRaccourci;
626
+ declare const FileDoc: FileIconRaccourci;
627
+ declare const FileDocx: FileIconRaccourci;
628
+ declare const FileTxt: FileIconRaccourci;
629
+ declare const FileCsv: FileIconRaccourci;
630
+ declare const FileXls: FileIconRaccourci;
631
+ declare const FileXlsx: FileIconRaccourci;
632
+ declare const FilePpt: FileIconRaccourci;
633
+ declare const FilePptx: FileIconRaccourci;
634
+
635
+ /**
636
+ * Le logo de Zest — LA source unique.
637
+ *
638
+ * ⚠️ GÉNÉRÉ depuis le Figma de Zest : le logotype (`248:1409`) et le logo de
639
+ * Zest AI (`3218:143`). Ne pas corriger à la main.
640
+ *
641
+ * ------------------------------------------------------------------------
642
+ * LES COULEURS NE SONT PAS PORTÉES SUR LES JETONS, ET C'EST LE POINT
643
+ * ------------------------------------------------------------------------
644
+ * Elles y correspondent pourtant, et exactement. Mesuré en Lab :
645
+ *
646
+ * #00D85D le vert de l'isotype = --zds-color-mark ΔE 0,0
647
+ * #21304E le navy du mot-symbole = --zds-color-navy-100 ΔE 0,0
648
+ * #39D7E4 la fin du dégradé IA ≈ utility-turquoise-500 ΔE 1,8
649
+ *
650
+ * Les écrire en `var(--zds-…)` serait pourtant une faute. Un jeton peut être
651
+ * redéfini — c'est même sa raison d'être : un thème, une marque blanche, un
652
+ * mode sombre le changent. Un logo qui suit le thème n'est plus un logo, c'est
653
+ * une décoration. Les valeurs sont donc EN DUR, et elles doivent le rester.
654
+ *
655
+ * La correspondance reste un fait utile : elle dit que la palette a bien été
656
+ * dérivée de la marque. Le turquoise du dégradé IA est le seul qui n'ait pas
657
+ * de jeton exact — à relever, c'est peut-être un écart involontaire.
658
+ *
659
+ * ------------------------------------------------------------------------
660
+ * DEUX VARIANTES, ET ELLES NE SONT PAS INTERCHANGEABLES
661
+ * ------------------------------------------------------------------------
662
+ * ⚠️ LA VARIANTE SOMBRE A SA VAGUE TRANSPARENTE. Le carré est peint en blanc
663
+ * et le glyphe est DÉCOUPÉ dedans : c'est le fond de la page qui le dessine.
664
+ * Sur un fond clair, elle disparaît — carré blanc sur blanc, vague invisible.
665
+ *
666
+ * La variante claire, elle, est autonome : un fond blanc plein, puis le vert
667
+ * par-dessus. Elle tient sur n'importe quelle couleur.
668
+ *
669
+ * En clair : `sombre` veut dire « pour poser sur du sombre », pas « la version
670
+ * sombre du logo ». Les deux ne se substituent pas l'une à l'autre.
671
+ *
672
+ * ------------------------------------------------------------------------
673
+ * LES BOÎTES
674
+ * ------------------------------------------------------------------------
675
+ * isotype seul 64 × 64
676
+ * mot-symbole 181.85 × 64
677
+ * verrou 269.85 × 64 isotype + 24 d'écart + mot-symbole
678
+ * logo Zest AI 64 × 64, mais le dessin DÉBORDE
679
+ *
680
+ * ⚠️ Le logo Zest AI porte une ombre portée qui sort de sa boîte : l'export
681
+ * fait 68×68. Le contenu est déjà translaté pour retomber juste dans 64, et le
682
+ * `<svg>` doit laisser le débord visible — sinon l'ombre est coupée, ce qui ne
683
+ * se remarque qu'en comparant les deux côte à côte.
684
+ */
685
+ /** `clair` pour poser sur un fond clair, `sombre` pour poser sur un fond sombre. */
686
+ type LogoVariante = "clair" | "sombre";
687
+ /** Les proportions, telles que le Figma les fixe. */
688
+ declare const LOGO_BOITES: {
689
+ readonly logomark: {
690
+ readonly l: 64;
691
+ readonly h: 64;
692
+ };
693
+ readonly wordmark: {
694
+ readonly l: 181.85;
695
+ readonly h: 64;
696
+ };
697
+ readonly verrou: {
698
+ readonly l: 269.85;
699
+ readonly h: 64;
700
+ };
701
+ readonly ai: {
702
+ readonly l: 64;
703
+ readonly h: 64;
704
+ };
705
+ };
706
+ /** L'écart entre l'isotype et le mot-symbole dans le verrou, en unités de dessin. */
707
+ declare const LOGO_ECART = 24;
708
+ declare const ZEST_LOGO: {
709
+ logomark: {
710
+ clair: string;
711
+ sombre: string;
712
+ };
713
+ wordmark: {
714
+ clair: string;
715
+ sombre: string;
716
+ };
717
+ verrou: {
718
+ clair: string;
719
+ sombre: string;
720
+ };
721
+ /** Une seule version : le dégradé tient sur clair comme sur sombre. */
722
+ ai: string;
723
+ };
724
+
725
+ /**
726
+ * Le logo de Zest, en composants.
727
+ *
728
+ * ⚠️ UN LOGO N'EST PAS UNE ICÔNE. Il ne suit pas la couleur du texte, il ne
729
+ * suit pas le thème, et il ne se redessine pas. Ses valeurs sont en dur — voir
730
+ * l'en-tête du catalogue, qui explique pourquoi elles le restent alors même
731
+ * qu'elles correspondent exactement à deux jetons.
732
+ *
733
+ * ⚠️ LA HAUTEUR PILOTE, PAS LA LARGEUR. Les trois formes n'ont pas le même
734
+ * rapport — 1:1 pour l'isotype, 2,84:1 pour le mot-symbole, 4,22:1 pour le
735
+ * verrou. Une prop `width` commune les déformerait ou les désalignerait ; une
736
+ * hauteur commune les aligne, ce qui est ce qu'on veut dans un en-tête.
737
+ */
738
+ interface BaseProps extends Omit<SVGProps<SVGSVGElement>, "height" | "width"> {
739
+ /** La hauteur, en pixels. La largeur suit le rapport du dessin. */
740
+ height?: number;
741
+ /**
742
+ * Le nom accessible.
743
+ *
744
+ * Par défaut le logo est **décoratif** (`aria-hidden`) : dans un en-tête il
745
+ * est presque toujours dans un lien qui porte déjà « Accueil » ou « Zest ».
746
+ * Le passer ici en fait une image nommée.
747
+ */
748
+ titre?: string;
749
+ }
750
+ interface VarianteProps extends BaseProps {
751
+ /**
752
+ * `clair` pour poser sur un fond clair, `sombre` pour poser sur un fond sombre.
753
+ *
754
+ * ⚠️ CE N'EST PAS « LA VERSION SOMBRE DU LOGO ». La variante `sombre` a sa
755
+ * vague **découpée** : c'est le fond qui la dessine. Posée sur du blanc,
756
+ * elle disparaît. Voir l'en-tête du catalogue.
757
+ */
758
+ variant?: LogoVariante;
759
+ }
760
+ /**
761
+ * Le verrou complet : l'isotype et le mot-symbole.
762
+ *
763
+ * C'est la forme par défaut. Les deux autres existent pour les cas où elle ne
764
+ * tient pas — voir la page « Logo ».
765
+ */
766
+ declare const ZestLogo: {
767
+ ({ variant, height, ...props }: VarianteProps): react.JSX.Element;
768
+ displayName: string;
769
+ };
770
+ /**
771
+ * L'isotype seul — le carré.
772
+ *
773
+ * Pour les places carrées et petites : une favicon, un avatar d'application,
774
+ * une barre latérale repliée. En dessous de 24 px, le mot-symbole n'est plus
775
+ * lisible et seul l'isotype garde du sens.
776
+ */
777
+ declare const ZestLogomark: {
778
+ ({ variant, height, ...props }: VarianteProps): react.JSX.Element;
779
+ displayName: string;
780
+ };
781
+ /** Le mot-symbole seul. Rare : l'isotype porte la reconnaissance. */
782
+ declare const ZestWordmark: {
783
+ ({ variant, height, ...props }: VarianteProps): react.JSX.Element;
784
+ displayName: string;
785
+ };
786
+ /**
787
+ * Le logo de Zest AI.
788
+ *
789
+ * Une seule version : son dégradé tient sur clair comme sur sombre, il n'a donc
790
+ * pas de variante.
791
+ *
792
+ * ⚠️ `overflow: visible` N'EST PAS DÉCORATIF. Son ombre portée sort de la boîte
793
+ * de 64 — l'export fait 68×68. Sans cette règle, le `<svg>` la coupe, et une
794
+ * ombre coupée ne se remarque qu'en comparant les deux côte à côte.
795
+ */
796
+ declare const ZestAiLogo: {
797
+ ({ height, ...props }: BaseProps): react.JSX.Element;
798
+ displayName: string;
799
+ };
800
+
801
+ /**
802
+ * Le catalogue des icônes de Zest — LA source unique.
803
+ *
804
+ * ⚠️ GÉNÉRÉ depuis le Figma « ❖ Design System V2.0 », page « Icônes ». Ne pas
805
+ * corriger à la main : corriger le Figma, puis régénérer. Une retouche locale
806
+ * serait écrasée sans laisser de trace.
807
+ *
808
+ * Les composants de `index.tsx` sont construits À PARTIR d'ici, et la page de
809
+ * documentation lit le même catalogue. Un tracé n'est donc écrit qu'une fois :
810
+ * deux endroits qui affirmeraient le même dessin finiraient par ne plus être
811
+ * d'accord.
812
+ *
813
+ * ------------------------------------------------------------------------
814
+ * DEUX FAÇONS DE PEINDRE, ET ELLES NE SE MÉLANGENT PAS
815
+ * ------------------------------------------------------------------------
816
+ * Ces icônes viennent de deux générations de dessin, et le catalogue le dit
817
+ * plutôt que de l'aplatir :
818
+ *
819
+ * · `contour` — un tracé de 2 px, bouts et angles arrondis. La graisse est
820
+ * une propriété du RENDU : ces icônes gardent un trait de 2 px quelle que
821
+ * soit leur taille d'affichage, donc un trait proportionnellement plus fin
822
+ * quand on les agrandit ;
823
+ *
824
+ * · `remplissage` — une silhouette, dessinée sous Illustrator contours
825
+ * vectorisés. La graisse est dans le DESSIN, donc elle grossit avec
826
+ * l'icône. Un dessin « en trait » y est une silhouette évidée, pas un
827
+ * trait paramétrique.
828
+ *
829
+ * Conséquence à connaître : les deux familles ne vieillissent pas pareil quand
830
+ * on change de taille, et un écran qui les mélange à 48 px le montre.
831
+ */
832
+ /** Un tracé du dessin. */
833
+ interface ZestPath {
834
+ d: string;
835
+ /**
836
+ * La règle de remplissage, RELEVÉE dans le Figma et non supposée.
837
+ *
838
+ * `evenodd` évide les sous-tracés intérieurs — c'est ce qui rend une
839
+ * silhouette creuse. `nonzero` les remplit. Plusieurs icônes n'en déclarent
840
+ * aucune, donc elles sont en `nonzero` : leur imposer `evenodd` percerait
841
+ * des trous, et l'inverse les boucherait, sans que rien le signale.
842
+ *
843
+ * Absente sur les icônes au contour, où elle ne veut rien dire.
844
+ */
845
+ rule?: "evenodd" | "nonzero";
846
+ }
847
+ interface ZestIcon {
848
+ /** Le nom du Figma, tel quel — c'est la clé que les maquettes citent. */
849
+ name: string;
850
+ /** La catégorie du Figma. */
851
+ category: string;
852
+ /** Comment le dessin est peint. Voir l'en-tête du fichier. */
853
+ mode: "contour" | "remplissage";
854
+ /**
855
+ * Comment le dessin se LIT : trait ou plein.
856
+ *
857
+ * Une icône au contour est en trait par construction — un tracé de 2 px ne
858
+ * peut pas être une silhouette pleine. Pour les remplies, le style ne se lit
859
+ * nulle part dans le fichier : les deux sont des `fill`. Il a donc été
860
+ * RELEVÉ À L'ŒIL, sur deux planches rendues à 72 px.
861
+ *
862
+ * ⚠️ Il n'est PAS calculable. On a essayé, à la part de la boîte couverte :
863
+ * la distribution va de 14,8 % à 55,9 % sans aucun creux, le plus grand vide
864
+ * entre deux valeurs voisines faisant 7,5 points. Aucun seuil ne sépare les
865
+ * deux familles.
866
+ *
867
+ * ⚠️ Le suffixe ne suffit pas non plus. Le couple `-01`/`-02` = trait/plein
868
+ * se vérifie sur 14 familles sur 16 — et tombe sur `trash`, dont les deux
869
+ * variantes sont creuses. Ailleurs dans le Figma, `share-01`, `-02` et `-03`
870
+ * sont trois dessins différents. Et une icône sans variante n'est pas
871
+ * automatiquement en trait : `bell-01`, `bookmark-01`, `flag-01` et
872
+ * `tool-01` sont franchement pleines.
873
+ */
874
+ style: "trait" | "plein";
875
+ /** Les tracés, dans l'ordre du Figma. */
876
+ paths: ZestPath[];
877
+ /**
878
+ * Mots-clés de recherche, venus des descriptions Figma.
879
+ *
880
+ * Filtrés : une description dont aucun mot n'apparaît dans le nom a été
881
+ * recopiée d'une autre icône, et elle est écartée. Sans ce filtre, les six
882
+ * icônes d'alerte répondaient à « star » — elles décrivent toutes
883
+ * « star, favorite, favourite, save, galaxy ».
884
+ */
885
+ keywords?: string[];
886
+ }
887
+ declare const ZEST_ICONS: ZestIcon[];
888
+ /**
889
+ * Les dessins ÉCARTÉS parce qu'un autre porte déjà leur nom.
890
+ *
891
+ * Ce ne sont pas des doublons : ce sont d'autres dessins, sous le même nom, et
892
+ * tous utilisables. Dans chaque cas une silhouette remplie affronte un tracé au
893
+ * contour — deux générations de dessin cohabitent dans le Figma.
894
+ *
895
+ * Ils ne sont pas publiés en composants, et c'est volontaire : un catalogue à
896
+ * clé dupliquée n'a plus de source unique. Mais ils sont ici, et la page
897
+ * « Icônes » les montre à côté de ceux qui gagnent, pour qu'on tranche en
898
+ * regardant. Inventer un nom pour les départager serait pire : un nom inventé
899
+ * n'existe dans aucune maquette, donc personne ne le citerait.
900
+ */
901
+ declare const ZEST_ICONS_EN_CONFLIT: (ZestIcon & {
902
+ node: string;
903
+ raison: string;
904
+ })[];
905
+ /**
906
+ * Les icônes dont le style est DISCUTABLE, laissées en trait.
907
+ *
908
+ * Elles mélangent du solide et du creux et n'ont pas de variante qui
909
+ * trancherait. Les basculer en plein les sortirait de l'onglet où on les
910
+ * cherche ; les laisser en trait est un choix, pas une mesure. La page les
911
+ * liste pour qu'on puisse les déplacer en connaissance de cause.
912
+ */
913
+ declare const STYLES_A_REVOIR: {
914
+ name: string;
915
+ pourquoi: string;
916
+ }[];
917
+ /** Retrouve une icône par son nom Figma. */
918
+ declare const findIcon: (name: string) => ZestIcon | undefined;
919
+
920
+ export { AlertCircle01, AlertCircle02, AlertTriangle01, AlertTriangle02, ArrowDown, ArrowDownLeft, ArrowDownRight, ArrowLeft, ArrowNarrowDown, ArrowNarrowDownLeft, ArrowNarrowDownRight, ArrowNarrowLeft, ArrowNarrowRight, ArrowNarrowUp, ArrowNarrowUpLeft, ArrowNarrowUpRight, ArrowRight, BarChartSquare02, Bell01, BellOff01, Bookmark01, Building07, Calendar, CalendarPlus01, Check, CheckCircle01, CheckCircle02, CheckDone01, ChevronDown, ChevronDownDouble, ChevronLeft, ChevronLeftDouble, ChevronRight, ChevronRightDouble, ChevronUp, ChevronUpDouble, Circle, Clock, DotsVertical, Download01, Edit01, Edit02, Eye01, Eye02, EyeOff, FeatureActionPlan, FeatureAlignmentMap, FeatureCheckin, FeatureCockpit, FeatureEngageo, FeatureFeedback, FeatureIdea, FeatureIntercom01, FeatureIntercom02, FeatureKeydriver, FeatureMood01, FeatureMood02, FeatureObjective, FeatureProject, FeatureResume, FeatureSkill, FeatureSurvey01, FeatureSurvey02, FileAudio, FileCsv, FileDoc, FileDocument, FileDocx, FileEmpty, FileEps, FileFolder, FileGif, FileIcon, type FileIconFamille, type FileIconProps, type FileIconVariante, FileImage, FileImg, FileJpeg, FileJpg, FilePdf, FilePdfSimple, FilePng, FilePpt, FilePptx, FileSpreadsheet, FileSvg, FileTiff, FileTxt, FileVideo01, FileVideo02, FileWebp, FileXls, FileXlsx, FilterFunnel01, FilterFunnel02, Flag01, Heart01, Heart02, HelpCircle01, HelpCircle02, Home01, Home02, Inbox01, InfoCircle01, InfoCircle02, LOGO_BOITES, LOGO_ECART, Link01, LinkBroken01, Lock01, Lock02, LockUnlocked01, LockUnlocked02, LogOut01, type LogoVariante, Mail01, Mail02, Menu01, MessageBubble01, MessageBubble02, MessageChatSquare, Minus, MinusCircle, ModuleLead, ModuleListen, ModulePerform, ModuleShare, Plus, PlusCircle01, PlusCircle02, RefreshCw01, STYLES_A_REVOIR, Search01, Send01, Settings01, Settings02, Share01, Share02, Share03, SlashCircle01, SlashDivider, SmartOrg, Star01, Target05, ThumbsDown, ThumbsUp, Tick, Tool01, Trash01, Trash02, Upload01, User01, Users01, XCircle, XClose, ZEST_FILE_ICONS, ZEST_ICONS, ZEST_ICONS_EN_CONFLIT, ZEST_LOGO, ZestAiLogo, type ZestFileIcon, type ZestIcon, ZestLogo, ZestLogomark, type ZestPath, ZestWordmark, findFileIcon, findIcon };