Toujours utiliser <sda-icon name="…" size="control">Always use <sda-icon name="…" size="control">
Ajouter label="…" si l'icône est la seule information visibleAdd label="…" if the icon is the sole visible information
Ajouter decorative si l'icône accompagne un texte qui la décritAdd decorative if the icon accompanies text that describes it
Choisir le token de taille correspondant au contexte : inline dans un texte, control dans un bouton, nav en en-têteChoose the size token matching the context: inline in text, control in a button, nav in a header
À éviterDon't
SVG inline sans passer par <sda-icon> — aucun contrat d'accessibilitéInline SVG without <sda-icon> — no accessibility contract
Taille codée en dur : style="width:20px"Hardcoded size: style="width:20px"
Icône sémantique sans label ni decorativeSemantic icon without label or decorative
Tailles inventées hors des 3 tokens sémantiques définisSizes invented outside the 3 defined semantic tokens
✅ Toujours un label si l'icône est la seule information (ex: bouton icône seul)
✅ decorative si l'icône accompagne un texte qui la décrit déjà
✅ size correspond au contexte (control dans un bouton, inline dans un texte)
✅ Nom d'icône exact selon lucide.dev (kebab-case)
❌ Jamais d'icône sémantique sans label : <sda-icon name="trash-2">
❌ Jamais de taille en dur : style="width: 20px"
❌ Jamais de variante inventée hors inline/control/nav
❌ Jamais d'icône hors bibliothèque Lucide sans approbation
❌ <sda-icon name="trash-2"></sda-icon>
→ Icône sémantique sans label — escalader
❌ <sda-icon name="danger" size="control">
→ Nom "danger" inexistant dans Lucide — utiliser "alert-triangle" ou "x-circle"
❌ <svg>...</svg> (SVG inline hors sda-icon)
→ Dérive — pas de contrat d'accessibilité ni de token
❌ <sda-icon name="check" style="width: 18px;">
→ Taille en dur — utiliser size="inline" ou size="control"
Installation
# npm (recommandé pour les projets avec bundler)
npm install lucide
# CDN (projets statiques)
<script src="https://unpkg.com/lucide@latest"></script>
Contribuer à ce projetContribute to this projectCe système est ouvert aux contributions — tokens, composants, décisions architecturales, corrections d'accessibilité ou documentation. Toute amélioration est bienvenue.This system welcomes contributions — tokens, components, architectural decisions, accessibility fixes, or documentation. Every improvement counts.