Crea componentes React tipados desde SVG

Convierte el markup SVG en bruto en iconos TSX reutilizables y mantén el color, el tamaño y la accesibilidad consistentes.

Pegar SVG directamente en el código suele crear props inconsistentes y valores fijos. Esta guía te ofrece un flujo de trabajo limpio de iconos en React + TypeScript.

1) Normaliza la entrada SVG

  • Limpia grupos, metadatos y estilos en línea innecesarios antes de la conversión.
  • Conserva el viewBox para que el escalado de los componentes sea predecible.
  • Renombra IDs y máscaras para evitar colisiones cuando se renderizan varios iconos en una página.

2) Genera un componente seguro por tipos

  • Usa props de TypeScript que extiendan las props de SVG para soporte completo de IntelliSense.
  • Define ancho/alto por defecto y permite sobrescribirlos desde el uso del componente padre.
  • Sustituye los rellenos fijos por currentColor cuando los iconos deban heredar el color del texto.

3) Integra en un sistema de diseño

  • Guarda los iconos en una carpeta predecible y expórtalos desde un único archivo barrel.
  • Aplica reglas de lint o tests para bloquear atributos SVG no válidos en CI.
  • Documenta ejemplos de uso para tokens de tamaño semánticos y aria labels.

Preguntas frecuentes sobre SVG a React TypeScript

¿Deben los componentes de iconos usar color fijo o currentColor?
Para iconos de sistemas de diseño, currentColor suele ser lo mejor porque el color se puede controlar desde el texto padre o los tokens del tema.
¿Cómo escribo los tipos de los props del icono?
Usa React.SVGProps<SVGSVGElement> como base y añade props personalizadas opcionales solo cuando las necesites.
¿Puedo mantener flexibles las etiquetas de accesibilidad?
Sí. Expón props de title/aria-label y usa aria-hidden por defecto para iconos decorativos.
¿Debo optimizar antes de la conversión a React?
Sí. Optimizar primero reduce el ruido y evita arrastrar atributos innecesarios a los archivos TSX.