duxt puise dans quatre collections Iconify. La question n'est jamais « laquelle
rend le mieux ici », mais **ce qu'est la chose dessinée**, parce que c'est le
seul test qui donne deux fois la même réponse.

| Jeu                                                              | Dessine                                                        | Couleur                            | Nommé dans                     |
| :--------------------------------------------------------------- | :-------------------------------------------------------------- | :--------------------------------- | :----------------------------- |
| [lucide](https://lucide.dev)                                      | l'interface que duxt dessine lui-même                            | monochrome, hérite `currentColor`  | partout ; le choix par défaut  |
| [vscode-icons](https://github.com/vscode-icons/vscode-icons)      | un fichier, le langage d'un bloc, un outil de la pile            | la sienne                          | `file-icons.ts`, et les onglets des gestionnaires |
| [Simple Icons](https://simpleicons.org)                           | une plateforme, un service ou une entreprise en tant que telle   | monochrome                         | le composant qui le nomme      |
| [flag-icons](https://github.com/lipis/flag-icons)                 | la région d'une locale                                           | la sienne                          | `DuxtLocale`, dérivé           |

## La règle

**C'est ce qui est dessiné qui décide, et il y a deux sortes de marques :**

- **La pile** — un fichier, le langage d'un bloc, un outil que l'on exécute — est
  **vscode-icons**. Il porte les vraies couleurs dans le fichier, ce dont une
  arborescence et un en-tête de code ont précisément besoin.
- **Un tiers en tant que tel** — une plateforme, un service, une entreprise vers
  laquelle le site pointe ou à laquelle il transmet quelque chose — est **Simple
  Icons**.

Tout ce qui n'est pas une marque — un bouton de copie, un chevron, une loupe,
une flèche de lien externe — est **lucide**, et ne demande aucune décision.

Énoncée par domaine plutôt que par disponibilité, la règle se prolonge d'elle-
même. Laravel, GitHub, Discord et OpenAI relèvent de Simple Icons parce que ce
sont des parties que ce site nomme, non des morceaux de la pile dont il est
fait. Les gestionnaires de paquets relèvent de vscode-icons parce qu'un onglet
qui exécute `pnpm add` nomme un outil de la pile.

::callout{type="info" title="Quand les deux collections portent la même marque"}
C'est le domaine qui décide, pas la collection. vscode-icons possède
`file-type-claude` — et c'est, de par son propre espace de noms, l'icône d'un
**fichier** Claude. Le bouton qui envoie cette page à la **plateforme** Claude
est `simple-icons:claude`, parce que c'est la plateforme qu'il nomme. La même
lecture garde `simple-icons:openai` à côté plutôt que de répartir une paire de
boutons sur deux collections.
::

## Pourquoi pas un seul jeu pour tout

Parce que monochrome et coloré sont deux métiers différents, pas deux goûts.

Une icône d'interface doit prendre la couleur du texte, sinon elle se bat avec
chaque état autour d'elle : survol, actif, atténué, désactivé. lucide hérite de
`currentColor`, donc le contrôle est stylé une fois et l'icône suit.

Une icône de type de fichier doit garder ses couleurs, sinon une arborescence
devient une colonne de formes grises identiques. C'est la raison d'être de
vscode-icons, et pourquoi `app/utils/file-icons.ts` y projette chaque extension
et chaque identifiant de langage.

## La couleur ne nous appartient pas

Les onglets des gestionnaires de paquets étaient auparavant des Simple Icons
teintés à la main : huit valeurs hexadécimales, deux par gestionnaire, parce
qu'une seule ne peut servir les deux thèmes — la crème de bun disparaît sur du
blanc, le rouge de npm devient terne sur du noir. Chacune était un nombre relevé
sur une page de marque, à relever de nouveau au prochain changement de charte.

vscode-icons a supprimé la table en portant les couleurs dans le fichier. Quand
une marque a tout de même besoin d'aide, la collection le dit en général
elle-même : **pnpm**, ce sont des carrés orange *et des blancs*, donc la moitié
de la grille disparaît sur une page blanche — et vscode-icons livre
`file-type-light-pnpm` avec `#4e4e4e` à la place du blanc, précisément pour
cela. Il ne livre de variante claire pour aucun autre gestionnaire présent ici.

::callout{type="tip" title="Deux éléments, pas un filtre"}
Une marque qui a besoin des deux graphies est dessinée deux fois et permutée par
la classe de thème (`dark:hidden` / `hidden dark:block`) — la technique même
qu'emploie l'affiche de prévisualisation de la page d'accueil pour ses deux
captures. Un filtre CSS appliqué à une marque en couleur produit une couleur que
personne n'a choisie.
::

## Licences, et ce qu'une licence ne peut pas accorder

Les quatre collections sont permissives et compatibles avec la MIT de duxt :
vscode-icons et flag-icons sont sous MIT, lucide sous ISC, Simple Icons sous
CC0-1.0. Chacune est nommée avec sa licence sur la [page des
remerciements](/credits), car `icon.clientBundle` intègre les SVG dans ce qui est
livré — le paquet transporte les œuvres, donc il transporte les mentions.

**Une licence sur le fichier n'est pas une licence sur la marque.** Simple Icons
le dit dans sa propre LICENSE : CC0 libère le SVG et ne peut libérer un droit de
marque qu'il n'a jamais détenu. Il en va de même pour les types de fichiers de
vscode-icons : la MIT couvre le dessin, pas les marques Python, Rust ou Vue qui
s'y trouvent.

Ce que fait duxt est un **usage nominatif** : le logo bun figure sur l'onglet qui
exécute `bun add`, l'icône Python étiquette un bloc Python, et les marques Claude
et OpenAI figurent sur les boutons qui envoient la page à ces services. Nommer
une chose pour l'identifier est l'usage que le droit des marques autorise sans
permission. Utiliser l'une de ces marques comme logo, favicon ou caution de duxt
ne le serait pas — et duxt ne le fait pas.