¿Por qué convertir SVG a un componente React?
SVG en bruto dentro de una app React tiene unas cuantas peculiaridades: `class` debe ser `className`, los atributos con guion (`stroke-width`) se vuelven camelCase, el color va hardcodeado en el SVG. Si quieres renderizar el mismo icono en otro color, necesitas un segundo fichero. ¿Otro tamaño? Otro fichero, o una sobreescritura CSS.
Un componente React con props gestiona esto limpiamente: `<IconCheck size={20} color="red" />`. Un fichero, cualquier color, cualquier tamaño. Más reenvío de `...props`: cuela `aria-label` u `onClick` sin cambiar el componente.
Pega tu SVG (Figma, Iconify, tu propio arte), elige opciones (TypeScript vs JSX, named vs default export, si quieres un prop `color`/`size`) y obtén un componente listo para copiar. Descarga como `.tsx` con nombre de fichero correcto o copia al portapapeles.
Cómo usar
- Pega código SVG en el panel izquierdo. Puede ser un icono (24x24), un logo, una ilustración: cualquier SVG.
- Introduce un nombre de componente (PascalCase, p. ej. `IconCheck`, `LogoBrand`).
- Activa opciones: TypeScript para versión tipada, default export o named.
- A la derecha obtienes el componente listo. Debajo una preview en vivo con el tamaño y color actuales.
- Pulsa "Copiar" para copiar el código o "Descargar .tsx" para guardar el fichero con el nombre correcto.
Cuándo ayuda
Casos de uso prácticos:
- Librería de iconos en un proyecto. La diseñadora exporta 30 iconos de Figma, los conviertes cada uno y acabas con `components/icons/` lleno de ficheros `.tsx`. Cada icono tiene props size/color y es theme-aware.
- Logo de empresa. Exporta de Illustrator, convierte, obtienes `<LogoBrand size={32} />` para header, footer, embeds sociales.
- Iconos de estado. `<IconSuccess color="green" />`, `<IconError color="red" />`: un fichero, distintos colores por estado.
- Ilustraciones custom de hero. Una ilustración SVG en la hero section, ahora un componente con colores de acento editables.
- Un reemplazo de lucide-react / heroicons. A veces necesitas un icono que ninguna librería entrega. Convierte el tuyo.
- SVG en build-time. En Next.js un componente supera a `<Image src="/icon.svg" />`: menos requests, mejor SSR.
- Reenvío de props. `<IconClose onClick={handleClose} aria-label="Cerrar modal" />`: accesibilidad e interacción en uno.
Primero reduce tu SVG con el optimizador SVG. Para HTML a JSX mira el conversor HTML a JSX.