feather-icons-react
v0.7.0
Published
Feather Icons as a React component.
Downloads
59,358
Readme
Feather Icons React
yarn add feather-icons-react
This package lets you use Feather Icons as a React Component. It currently supports up to version 4.29.0
Usage
You can use the default export and pass the 'icon' prop:
import FeatherIcon from 'feather-icons-react';
<FeatherIcon icon="close" />;
Or you can use the provided named export in place of the icon prop:
import { Close } from 'feather-icons-react';
<Close />;
This gives you the flexibility to dynamically change the icon if you want to use the default export (like in the Toggle Icon example below), or potentially save on size in your application bundle by not having to require all of the icons by using the default export.
Setting a size:
Size can be passed as either string or number.
e.g.: <FeatherIcon icon="copy" size="24" />
or <Copy size={24} />
Sizes can always be easily overridden by CSS.
Setting fill and other properties
Fill defaults to none, but can be passed as a React prop
<FeatherIcon icon="heart" fill="red" />
Addtionally, you can add any other SVG tag properties, and they will pass through.
Setting colors
Use CSS. The icons default to use currentColor. This is equivalent to whatever text color is being used in the icon's container.
Dynamically change icons
Toggle icon example:
const ToggleIconContainer = () => {
const [icon, setIcon] = useState('x');
return (
<div>
<FeatherIcon icon={icon} />
<ul>
<li>
<button onClick={() => setIcon('x')}>Make the Icon an X</button>
</li>
<li>
<button onClick={() => setIcon('anchor')}>
Make the Icon an Anchor
</button>
</li>
<li>
<button onClick={() => setIcon('box')}>Make the Icon a box</button>
</li>
</ul>
</div>
);
};
The icons are all square, based on a 24x24 grid.
The full list of icon names can be referenced at: feathericons.com
Contributing
To build the bundled assets for consumption
yarn build
Updating the icons
If you found a missing icon, it is pretty easy to generate a new icons.json and get a PR up so this package stays in sync with the latest feather icons. Go into your desired project directory (ideally one directory above where you have feather-icons-react saved)
git clone https://github.com/feathericons/feather.git
cd feather && npx install
npx babel-node bin/build-icons-json.js
cp dist/icons.json ../feather-icons-react/src/icons.json
- Now open the file you just copied. Format the file, try to avoid entire green so the diff looks neat in the PR.
Alternatively, you can simply copy just the lines from the JSON file you know are missing. This is easier if you're just adding one new icon.
Testing your changes
You can use Storybook to verify your newly added icon is working as expected.
yarn storybook
This will open a new browser tab with the Storybook stories. You can type in the name of the icon and see it rendered in the main view.
TODO
- Add tests both to the icon render and the generate icon exports script
- Automatically generate new icons via script.
- could copy build-icons-json script from feather-icons
- verify react 18 support