Icon
Icon Component
Le composant Icon affiche des icônes SVG à partir de bibliothèques enregistrées avec registerIconLibrary(). L’attribut library choisit la bibliothèque (par défaut default) ; name est le nom d’icône passé au resolver.
Usage
Attributs
name(requis) : nom de l’icônelibrary(optionnel) : identifiant de bibliothèque (défaut :default). Un identifiant inconnu retombe surdefault.label(optionnel) : nom accessible de l’icône
name et library sont aussi exposés en propriétés JavaScript, pour les liaisons de framework qui écrivent la propriété plutôt que l’attribut.
Accessibilité
Sans label, l’icône est décorative : elle est marquée aria-hidden="true" et ne porte pas de rôle. C’est le bon défaut quand un texte adjacent porte déjà le sens.
Avec label, elle devient une image nommée (role="img" + aria-label) et reste nommée même si le chargement échoue — comme une <img> cassée conserve son alt.
Un role ou un aria-label posé directement par l’auteur n’est jamais écrasé.
Sécurité
Le contenu résolu par une bibliothèque est injecté dans la page. sh-icon en retire donc ce qui peut exécuter du code — <script>, <foreignObject>, les attributs on* et les URL javascript: — avant l’affichage. Une bibliothèque dont les icônes ont réellement besoin de contenu actif peut s’en exclure avec allowScripts: true à l’enregistrement ; elle est alors aussi fiable que vos propres scripts.
Exemples
JavaScript
Événements
error— échec de chargement ;detail.errorcontient uneError. L'évènement ne bubble pas et ne franchit pas le Shadow DOM (mimique l'évènement natiferrorde<img>).
CSS Custom Properties
--icon-size— largeur et hauteur de l’icône (défaut :1em, donc alignée sur le texte environnant)
La couleur se règle avec color : les icônes du set système utilisent currentColor.