Po co konwertować SVG na komponent React?
Surowy SVG w aplikacji React ma kilka problemów: `class` musi być `className`, atrybuty z myślnikami (`stroke-width`) na camelCase, kolor jest "wbity" w SVG. Jeśli chcesz przerysować ikonę w innym kolorze, musisz mieć drugi plik. Jeśli ma być w innym rozmiarze - znowu osobny plik albo override w CSS.
Komponent React z propsami załatwia to elegancko: `<IconCheck size={20} color="red" />`. Jeden plik, dowolny kolor, dowolny rozmiar. Plus forward `...props` - dorzucisz `aria-label` albo `onClick` bez zmiany komponentu.
Tu wklejasz SVG (z Figmy, Iconify, własnej grafiki), wybierasz opcje (TypeScript vs JSX, named vs default export, czy chcesz prop `color`/`size`) i dostajesz gotowy do skopiowania komponent. Pobierasz jako `.tsx` z poprawną nazwą pliku albo kopiujesz w schowek.
Jak korzystać
- Wklej kod SVG w lewy panel. Może być ikona (24x24), logo, ilustracja - dowolny SVG.
- Wpisz nazwę komponentu (PascalCase, np. `IconCheck`, `LogoFirma`).
- Włącz opcje: TypeScript dla typowanej wersji, default export albo named.
- Po prawej zobaczysz gotowy komponent. Pod spodem podgląd z aktualnym rozmiarem i kolorem.
- Kliknij "Kopiuj" żeby skopiować kod albo "Pobierz .tsx" żeby zapisać plik z poprawną nazwą.
Do czego się przydaje
Praktyczne zastosowania:
- Biblioteka ikon w projekcie. Designer eksportuje 30 ikon z Figmy, ty konwertujesz każdą i dostajesz `components/icons/` z plikami `.tsx`. Każdy z propsami size/color, można zmieniać w locie.
- Logo firmy. Eksport z Illustratora, konwersja, masz `<LogoBrand size={32} />` którego można używać w nagłówku, footerze, social mediach.
- Ikony statusu. `<IconSuccess color="green" />`, `<IconError color="red" />` - jeden plik, różne kolory dla różnych stanów.
- Customowe ilustracje hero. SVG z ilustracją na hero section - jako komponent z możliwością zmiany kolorów akcentu.
- Replacement dla lucide-react / heroicons. Czasem potrzebujesz ikon niedostępnych w bibliotece. Konwertujesz własną.
- Build-time SVG. W Next.js zamiast `<Image src="/icon.svg" />` lepiej mieć komponent - mniej requestów, lepsze SSR.
- Prop forwarding. `<IconClose onClick={handleClose} aria-label="Zamknij modal" />` - akcesibilność i interakcja w jednym.
Aby najpierw zmniejszyć rozmiar SVG, użyj optymalizatora SVG. Dla HTML do JSX zobacz konwerter HTML na JSX.