Skip to content

Foundation

Icon

Beta

Renders a single SVG glyph from the Checkatrade icon set. Import the glyph you need and pass it to the component — unused glyphs are tree-shaken away automatically. Supports seven token-driven sizes, decorative and labelled accessibility modes, and inverse colouring for dark or branded surfaces.

Sizes

Seven token-driven sizes are available. The default is sm.

Size ramp

All seven sizes using the same MaterialHome glyph.

import { MaterialHome } from '@checkatrade/icons/react';
import { Icon } from '@checkatrade/components-web';

<div className="flex items-end gap-4 flex-wrap">
<Icon icon={MaterialHome} size="xxs" label="Home (xxs)" />
<Icon icon={MaterialHome} size="xs"  label="Home (xs)" />
<Icon icon={MaterialHome} size="sm"  label="Home (sm)" />
<Icon icon={MaterialHome} size="md"  label="Home (md)" />
<Icon icon={MaterialHome} size="lg"  label="Home (lg)" />
<Icon icon={MaterialHome} size="xl"  label="Home (xl)" />
<Icon icon={MaterialHome} size="xxl" label="Home (xxl)" />
</div>

Accessibility

Icons are either decorative (hidden from assistive technology) or labelled (exposed as an image with a meaningful name). The label prop controls this.

Decorative (no label)

Omit label when the icon is purely visual and nearby text already conveys the meaning. The icon is hidden from screen readers with aria-hidden.

Home
<span className="flex items-center gap-1">
<Icon icon={MaterialHome} size="md" />
<span>Home</span>
</span>

Labelled (standalone icon)

Provide a label when the icon conveys meaning without accompanying text. It is rendered with role=img and aria-label.

<Icon icon={MaterialSearch} size="md" label="Search" />

Inverse

Use inverse on dark or branded backgrounds. Toggle to dark theme to see the canvas context. When an icon is inside a <Surface tone="inverse">, the inverse prop is applied automatically via context.

Inside an inverse Surface

Descendant icons inherit the inverse tone automatically — no prop needed.

<Surface tone="inverse" className="rounded-lg p-6 flex gap-4">
<Icon icon={MaterialHome} size="xl" label="Home" />
<Icon icon={MaterialFavorite} size="xl" label="Favourites" />
<Icon icon={MaterialSettings} size="xl" label="Settings" />
</Surface>

Explicit inverse prop

Pass inverse directly when you need inverse colouring outside a Surface context.

<div className="rounded-lg bg-[var(--color-background-surface-brand-primary-default)] p-6 flex gap-4">
<Icon icon={MaterialHome} size="xl" label="Home" inverse />
<Icon icon={MaterialStar} size="xl" label="Starred" inverse />
</div>

When to use

Use Icon to embed a single glyph from the Checkatrade icon set. The glyph is imported from @checkatrade/icons/react and passed as a prop — this means only the glyphs you actually use end up in your bundle.

Sizes

SizeCSS tokenTypical use
xxssize-icon-xxsMicro indicators, inline with tight copy
xssize-icon-xsBadges, compact lists
smsize-icon-smDefault — most inline use cases
mdsize-icon-mdComfortable inline use, form fields
lgsize-icon-lgSection headings, cards
xlsize-icon-xlFeature callouts
xxlsize-icon-xxlHero / marketing moments

Accessibility

  • Decorative: omit label when the icon is alongside visible text that already conveys the meaning (e.g. an icon next to a button label). The icon gets aria-hidden="true".
  • Labelled: provide a label when the icon stands alone as the only way to understand an action or status. The icon gets role="img" and aria-label set to the label.

Inverse

The Icon component reads the surrounding Surface tone via React context. If the icon is inside <Surface tone="inverse">, it automatically renders in inverse colours without needing the inverse prop. Use the explicit inverse prop only when you need inverse colouring outside of a Surface.

When not to use

  • Logos: use the dedicated Logo component.
  • Illustrations: use the Illustration component or a plain <img>.
  • Animated or complex graphics: use a custom SVG or Lottie.

Props

Prop Type Default Description
icon * ComponentType<SVGProps<SVGSVGElement>> - A glyph component from @checkatrade/icons/react, e.g. import { MaterialHome } from @checkatrade/icons/react.
size 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' 'sm' Token-driven size. Maps to size-icon-* CSS custom properties.
label string - Omit for decorative icons (aria-hidden). Provide to expose the icon as an image with this accessible name (role=img + aria-label).
inverse boolean - Force inverse token colouring. Defaults to the surrounding Surface tone — you do not need this prop inside <Surface tone="inverse">.
className string - Additional CSS classes merged onto the SVG element.

Import

Web

import { Icon } from '@checkatrade/components-web';
import { MaterialHome, MaterialSearch } from '@checkatrade/icons/react';

Basic usage

{/* Decorative — hidden from AT, adjacent text provides the label */}
<span className="flex items-center gap-1">
  <Icon icon={MaterialHome} />
  <span>Home</span>
</span>

{/* Labelled — standalone icon, screen readers announce "Search" */}
<Icon icon={MaterialSearch} size="md" label="Search" />

{/* Explicit size */}
<Icon icon={MaterialHome} size="xl" label="Home" />

Inverse on a dark surface

{/* Automatic via Surface context — no prop needed */}
<Surface tone="inverse" className="p-6">
  <Icon icon={MaterialHome} size="lg" label="Home" />
</Surface>

{/* Manual inverse without a Surface */}
<div style={{ background: 'var(--color-background-surface-brand-primary-default)', padding: '1rem' }}>
  <Icon icon={MaterialHome} size="lg" label="Home" inverse />
</div>

Platform status

Platform / AreaStatus
Design (Figma) Beta
Web (React) Beta
Native (React Native) Beta
iOS (Swift) Planned
Android (Kotlin) Planned
Accessibility audit Planned

Accessibility

Web

  • Decorative icons set aria-hidden="true" and role="presentation" — completely invisible to assistive technology.
  • Labelled icons set role="img" and aria-label from the label prop.
  • Colouring uses fill-current and inherits from a CSS color property, which respects forced-colours / high-contrast mode.

React Native

  • See the native Icon component for accessibility details on mobile.

No releases yet.

Icon Browser

Browse all 3,899 icons in the Checkatrade icon set. Search by name and hover to see the full identifier. Use the name to import the glyph: import { <PascalCaseName> } from '@checkatrade/icons/react'.

Showing first 120 of 3,899 — refine your search to narrow results

buildercustom
carpentercustom
chatcustom
electriciancustom
gas-engineercustom
growthcustom
job-sentcustom
jobscustom
lockcustom
material-10kmaterial
material-10mpmaterial
material-11mpmaterial
material-123material
material-12mpmaterial
material-13mpmaterial
material-14mpmaterial
material-15mpmaterial
material-16mpmaterial
material-17mpmaterial
material-18-up-ratingmaterial
material-18mpmaterial
material-19mpmaterial
material-1kmaterial
material-1k-plusmaterial
material-1x-mobiledatamaterial
material-1x-mobiledata-badgematerial
material-20mpmaterial
material-21mpmaterial
material-22mpmaterial
material-23mpmaterial
material-24fps-selectmaterial
material-24mpmaterial
material-2dmaterial
material-2d-2material
material-2kmaterial
material-2k-plusmaterial
material-2mpmaterial
material-30fpsmaterial
material-30fps-selectmaterial
material-360material
material-3dmaterial
material-3d-2material
material-3d-rotationmaterial
material-3g-mobiledatamaterial
material-3g-mobiledata-badgematerial
material-3kmaterial
material-3k-plusmaterial
material-3mpmaterial
material-3pmaterial
material-4g-mobiledatamaterial
material-4g-mobiledata-badgematerial
material-4g-plus-mobiledatamaterial
material-4kmaterial
material-4k-plusmaterial
material-4mpmaterial
material-50mpmaterial
material-5gmaterial
material-5g-mobiledata-badgematerial
material-5kmaterial
material-5k-plusmaterial
material-5mpmaterial
material-6-ft-apartmaterial
material-60fpsmaterial
material-60fps-selectmaterial
material-6kmaterial
material-6k-plusmaterial
material-6mpmaterial
material-7kmaterial
material-7k-plusmaterial
material-7mpmaterial
material-8kmaterial
material-8k-plusmaterial
material-8mpmaterial
material-9kmaterial
material-9k-plusmaterial
material-9mpmaterial
material-abcmaterial
material-ac-unitmaterial
material-accessibilitymaterial
material-accessibility-newmaterial
material-accessiblematerial
material-accessible-forwardmaterial
material-accessible-menumaterial
material-account-balancematerial
material-account-balance-walletmaterial
material-account-boxmaterial
material-account-childmaterial
material-account-child-invertmaterial
material-account-circlematerial
material-account-circle-offmaterial
material-account-treematerial
material-action-keymaterial
material-activity-zonematerial
material-acupuncturematerial
material-acutematerial
material-admaterial
material-ad-groupmaterial
material-ad-group-offmaterial
material-ad-offmaterial
material-adaptive-audio-micmaterial
material-adaptive-audio-mic-offmaterial
material-adbmaterial
material-addmaterial
material-add-2material
material-add-a-photomaterial
material-add-admaterial
material-add-alertmaterial
material-add-boxmaterial
material-add-businessmaterial
material-add-callmaterial
material-add-cardmaterial
material-add-chartmaterial
material-add-circlematerial
material-add-column-leftmaterial
material-add-column-rightmaterial
material-add-commentmaterial
material-add-diamondmaterial
material-add-homematerial
material-add-home-workmaterial
material-add-linkmaterial