SVG React icons of popular icon packs using ES6 imports
npx @tessl/cli install tessl/npm-react-icons@5.5.0React Icons provides a comprehensive collection of popular icon libraries as React SVG components, enabling developers to easily include icons from Font Awesome, Material Design, Ionicons, Feather, and many other icon sets in their React applications. It offers tree-shaking support through ES6 imports, allowing developers to import only the specific icons they need, significantly reducing bundle size.
npm install react-iconsimport { IconContext } from "react-icons";
import { FaBeer } from "react-icons/fa";
import { MdAccessibility } from "react-icons/md";
import { AiFillFolder } from "react-icons/ai";For CommonJS:
const { IconContext } = require("react-icons");
const { FaBeer } = require("react-icons/fa");import React from "react";
import { IconContext } from "react-icons";
import { FaBeer } from "react-icons/fa";
import { MdAccessibility } from "react-icons/md";
function MyComponent() {
return (
<div>
{/* Basic icon usage */}
<FaBeer color="red" size="24px" title="Beer icon" />
{/* Using context for global configuration */}
<IconContext.Provider value={{ color: "blue", size: "1.5em" }}>
<MdAccessibility />
<FaBeer />
</IconContext.Provider>
</div>
);
}React Icons is built around several key components:
IconBase, IconContext, and utility functions for rendering SVG iconsCore infrastructure components for rendering and configuring SVG icons. These components provide the foundation for all icon rendering.
interface IconContext {
color?: string;
size?: string;
className?: string;
style?: React.CSSProperties;
attr?: React.SVGAttributes<SVGElement>;
}
const IconContext: React.Context<IconContext>;
interface IconBaseProps extends React.SVGAttributes<SVGElement> {
children?: React.ReactNode;
size?: string | number;
color?: string;
title?: string;
}
function IconBase(props: IconBaseProps & { attr?: Record<string, string> }): JSX.Element;Access to 40,000+ icons from 30+ different icon libraries including Font Awesome, Material Design, Bootstrap, Feather, and many more. Each library provides hundreds to thousands of individual icon components.
type IconType = (props: IconBaseProps) => React.ReactNode;
// Example icon imports from various libraries
import { FaBeer, FaFolder, FaRegClipboard } from "react-icons/fa";
import { MdAccessibility, MdHome, MdOutlineHome } from "react-icons/md";
import { AiFillFolder, AiOutlineFolder } from "react-icons/ai";
import { BsFolder, BsFillFolder } from "react-icons/bs";Global configuration system using React Context API for setting default icon properties across your application.
const DefaultContext: IconContext;
interface IconContext {
color?: string;
size?: string;
className?: string;
style?: React.CSSProperties;
attr?: React.SVGAttributes<SVGElement>;
}Metadata about all available icon libraries, providing information about each library including name, project URL, and license details.
interface IconManifestType {
id: string;
name: string;
projectUrl: string;
license: string;
licenseUrl: string;
}
const IconsManifest: IconManifestType[];Usage Examples:
import { IconsManifest } from "react-icons";
// Alternative import path:
// import { IconsManifest } from "react-icons/lib";
// Get information about all available libraries
console.log(IconsManifest);
// Output: Array of library metadata including fa, md, ai, bs, etc.
// Find specific library information
const faLibrary = IconsManifest.find(lib => lib.id === 'fa');
console.log(faLibrary.name); // "Font Awesome 5"
console.log(faLibrary.license); // "CC BY 4.0 License"interface IconTree {
tag: string;
attr: { [key: string]: string };
child: IconTree[];
}