Icons
Carbon icons are provided through a set of packages allowing the use of icons in multiple frameworks. Icons are supported in vanilla, React, Angular, and Vue.
Get started
To install
@carbon/icons-react
npm install -S @carbon/icons-react
If you prefer Yarn, use the following command instead:
yarn add @carbon/icons-react
Usage
Icons in this package can be accessed through importing them by name.
import { Add } from '@carbon/icons-react';
Icons in this package support the following sizes:
16
20
24
32
16
size
<Add size="24" />
Note: if you would like to find the import path for an icon, you can reference our Icon Library
Icon fill
All icons from the library support being styled by the
fill
// CSS custom class name to set the fill of the icon to `rebeccapurple`svg.my-custom-class {fill: rebeccapurple;}
import { Add } from '@carbon/icons-react';function MyComponent() {return (<button><Add aria-label="Add" className="my-custom-class" /></button>);}
Two-tone icons
Certain icons in the library support two distinct fill colors. You can target the inner path by using the
[data-icon-path="inner-path"]
// CSS custom class name to set the fill of the icon to `yellow`svg.outer-icon-fill {fill: yellow;}// Use the `data-icon-path` attribute selector to target the inner path// where we want to set the fill to `black`. We also set `opacity` to `1` so// that this inner-path is visible.svg.outer-icon-fill [data-icon-path='inner-path'] {
import { WarningFilled } from '@carbon/icons-react';function MyComponent() {return <WarningFilled aria-label="Add" className="my-custom-class" />;}
Focus and aria-label
aria-label
By default, the icon components from
@carbon/icons-react
aria-hidden="true"
If you would like the icon to be announced by a screen reader, you can supply an
aria-label
aria-labelledby
import { Add } from '@carbon/icons-react';function MyComponent() {return (<button><Add aria-label="Add" /></button>);}
Doing this will add the appropriate
role
<svg>
If you would like the
<svg>
tabIndex
import { Add } from '@carbon/icons-react';function MyComponent() {return <Add aria-label="Add" tabIndex="0" />;}
Including
tabIndex
aria-label
aria-labelledby
tabindex
<svg>
focusable
true