@skbkontur/react-icons

React SVG icons

Usage no npm install needed!

<script type="module">
  import skbkonturReactIcons from 'https://cdn.skypack.dev/@skbkontur/react-icons';
</script>

README

Использование

Для использования иконок необходимо установить пакет @skbkontur/react-icons. В конфиге вебпака требуется настроить css-loader с включенными модулями.

current version

В 4.0 исходный код иконок распространяется в виде ES6 модулей. Это необходимо для обеспечения правильной работы tree-shaking.

Кроме этого все иконки доступны в виде именованного импорта из корня.

Если вы загружаете компоненты библиотеки в nodejs, например, в unit тестах, вам необходимо настроить трансформацию в CommonJS модулей из @skbkontur/react-icons, чтобы избежать ошибки Error [ERR_REQUIRE_ESM]: Must use import to load ES Module. Для сборки бандла в webpack конфиге ничего дополнительно настраивать не нужно. В скором времени появится нативная поддержка ES Modules в Jest

Props
type IconProps = {
  color?: string;
  name: IconName; // только для компонента Icon
  size?: number | string;
};

type IconName =
  | 'Menu'
  | 'Add'
  | 'ArchivePack'
  | 'ArchiveUnpack'
  | 'Attach'
  | 'Baby'
  | 'Backward'
  | 'BarcodeScanner'
  | 'Briefcase'
  | 'Calculator'
  | 'Calendar'
  | 'Card'
  | 'Certificate'
  | 'Clear'
  | ... 218 more ...
  | 'Infiniti';

Поиск имени иконок

Вся коллекция иконок доступна на гайдах. Там есть удобный поиск по иконам

Варианты использования иконок.

Для уменьшения размера бандла рекомендуется использовать компонент с конкретной иконкой

import { Icon } from './';
import { Ok } from './icons/Ok';

<div>
  <Ok size={16} color="red" />
  <Icon name="Ok" size={24} color="blue" />
  <Icon.Ok size={32} color="green" />
</div>;

Changelog

Список изменений доступен по ссылке ссылке

Все иконки

import { Icon } from './';

<div>
  <div style={{ columns: '3' }}>
    {Object.keys(Icon).map(name => {
      return (
        <div style={{ margin: '2px' }}>
          <Icon name={name} />
          <span style={{ marginLeft: '2px' }}> - {name}</span>
        </div>
      );
    })}
  </div>
</div>;