Ce que fait ce convertisseur SVG
Les fichiers SVG exportés depuis Figma, Illustrator, Sketch ou Inkscape sont du XML valide, mais pas du JSX valide. React attend des props en camelCase comme strokeWidth au lieu de stroke-width, className au lieu de class et un objet de style plutôt qu’une chaîne CSS. Les éditeurs ajoutent aussi des déclarations XML, des commentaires, des blocs de métadonnées et des attributs à espace de noms qui alourdissent votre bundle et déclenchent des avertissements.
SvgJsx analyse le SVG avec un petit parseur XML, réécrit chaque attribut sous la forme attendue par votre framework et produit un composant bien formaté. Vous pouvez choisir les types TypeScript, une prop size, des remplissages en currentColor, forwardRef, memo et le style d’export, puis copier le code ou télécharger le fichier.
Comment convertir un SVG en composant React
L’opération ne prend que quelques secondes :
- Collez le code SVG dans la zone de saisie ou déposez-y un ou plusieurs fichiers .svg.
- Choisissez le format de sortie : React, React Native, Vue, Solid ou un simple extrait JSX.
- Définissez le nom du composant et les options comme TypeScript, currentColor et la prop size.
- Vérifiez l’aperçu en direct et la comparaison de taille, puis copiez le code ou téléchargez le fichier. Plusieurs fichiers sont regroupés dans un ZIP.
Conversions appliquées automatiquement
Les attributs avec trait d’union passent en camelCase (stroke-linecap → strokeLinecap), les attributs à espace de noms sont aplatis (xlink:href → xlinkHref) et les chaînes de style en ligne deviennent des objets JavaScript. Les attributs data-* et aria-* sont conservés tels quels, car React les accepte ainsi. Les éléments script et les gestionnaires d’événements en ligne sont supprimés : un fichier collé ne peut donc jamais glisser du code dans votre application.
Une optimisation légère réduit les espaces et peut arrondir les coordonnées à un nombre fixe de décimales. Pour la plupart des jeux d’icônes, cela retire 20 à 40 % du balisage sans dépendre du lourd SVGO.