Warum SVG zu einer React-Komponente konvertieren?
Rohes SVG in einer React-App hat ein paar Marotten: `class` muss `className` sein, Bindestrich-Attribute (`stroke-width`) werden camelCase, Farbe ist im SVG hardcoded. Willst du dasselbe Icon in einer anderen Farbe rendern, brauchst du eine zweite Datei. Andere Größe? Noch eine Datei oder ein CSS-Override.
Eine React-Komponente mit Props löst das sauber: `<IconCheck size={20} color="red" />`. Eine Datei, jede Farbe, jede Größe. Plus `...props`-Forwarding - `aria-label` oder `onClick` reinwerfen, ohne die Komponente zu ändern.
SVG pasten (Figma, Iconify, eigene Grafik), Optionen wählen (TypeScript vs JSX, Named vs Default-Export, ob du eine `color`/`size`-Prop willst) und eine fertige Komponente bekommen. Als `.tsx` mit korrektem Dateinamen runterladen oder ins Clipboard kopieren.
So nutzt du das Tool
- SVG-Code ins linke Panel pasten. Kann ein Icon (24x24), ein Logo, eine Illustration sein - jedes SVG.
- Einen Komponenten-Namen eintragen (PascalCase, z. B. `IconCheck`, `LogoBrand`).
- Optionen toggeln: TypeScript für typisierte Version, Default-Export oder Named.
- Rechts kriegst du die fertige Komponente. Drunter eine Live-Vorschau mit aktueller Größe und Farbe.
- "Copy" drücken zum Kopieren oder "Download .tsx", um das File mit dem richtigen Namen zu speichern.
Wann das hilft
Praktische Anwendungsfälle:
- Icon-Library im Projekt. Der Designer exportiert 30 Icons aus Figma, du konvertierst jedes und endest mit `components/icons/` voller `.tsx`-Files. Jedes Icon hat size/color-Props und ist Theme-aware.
- Firmen-Logo. Aus Illustrator exportieren, konvertieren, du kriegst `<LogoBrand size={32} />` für Header, Footer, Social-Embeds.
- Status-Icons. `<IconSuccess color="green" />`, `<IconError color="red" />` - eine Datei, verschiedene Farben pro Status.
- Custom-Hero-Illustrationen. Eine SVG-Illustration in der Hero-Section - jetzt eine Komponente mit editierbaren Akzentfarben.
- Ersatz für lucide-react / heroicons. Manchmal brauchst du ein Icon, das keine Library shippt. Konvertier dein eigenes.
- Build-time SVG. In Next.js schlägt eine Komponente `<Image src="/icon.svg" />` - weniger Requests, besseres SSR.
- Prop-Forwarding. `<IconClose onClick={handleClose} aria-label="Close modal" />` - Accessibility und Interaktion in einem.
Zuerst dein SVG schrumpfen mit dem SVG-Optimierer. Für HTML zu JSX schau den HTML-zu-JSX-Konverter.