Crea componenti React tipizzati a partire da SVG

Trasforma il markup SVG grezzo in icone TSX riutilizzabili e mantieni coerenti colore, dimensioni e accessibilita.

Incollare un SVG direttamente nel codice porta spesso a props incoerenti e valori fissati in modo rigido. Questa guida propone un workflow pulito per gestire le icone con React e TypeScript.

1) Normalizza l'SVG in ingresso

  • Pulisci gruppi inutili, metadati e stili inline prima della conversione.
  • Mantieni la viewBox cosi il ridimensionamento del componente resta prevedibile.
  • Rinomina IDs e masks per evitare collisioni quando più icone vengono renderizzate nella stessa pagina.

2) Genera un componente type-safe

  • Usa props TypeScript che estendono le props SVG per avere IntelliSense completo.
  • Imposta width e height di default e consenti override dal componente genitore.
  • Sostituisci i fill fissi con currentColor quando le icone devono ereditare il colore del testo.

3) Integra il tutto nel design system

  • Organizza le icone in una cartella prevedibile ed esportale da un unico barrel file.
  • Applica regole di lint o test per bloccare attributi SVG non validi in CI.
  • Documenta esempi d'uso per token semantici di dimensione ed etichette aria.

FAQ su SVG e React TypeScript

Le icone dovrebbero usare colori fissi o currentColor?
Per le icone di un design system, currentColor e in genere la scelta migliore, perche il colore puo essere controllato dal testo padre o dai token del tema.
Come dovrei tipizzare le props dell'icona?
Usa React.SVGProps<SVGSVGElement> come base e aggiungi props personalizzate opzionali solo quando servono davvero.
Posso mantenere flessibili le etichette di accessibilita?
Si. Esponi props come title e aria-label e usa aria-hidden come default per le icone puramente decorative.
Conviene ottimizzare prima della conversione in React?
Si. Ottimizzare prima riduce il rumore e ti evita di trascinare attributi inutili dentro i file TSX.