@rocket.chat/icons
Rocket.Chat's Icons
Install
Add @rocket.chat/icons
as a dependency:
npm i @rocket.chat/icons
yarn add @rocket.chat/icons
Contributing
Contributions, issues, and feature requests are welcome!
Feel free to check the issues.
Adding new icons
All the icons should be designed by Rocket.Chat's design crew, following some conventions:
- The view box must have the dimensions of 32x32 units;
- Any horizontal assimetry must follow the left-to-right direction.
- The icon must be published on Figma.
As the icons might be arbitrarily scaled, the chosen source format for individual icon graphics is
SVG. As Figma can export graphics with some additional SVG attributes and elements, they must be
removed:
- The
<svg>
element must contain only two attributes: viewBox
(probably with the value of"0 0 32 32"
) and
xmlns
; - XLink references (e.g. masks and clip paths) must be discarded;
- The
<path>
elements must keep only the d
attribute, with no additional styling attribute; <g>
and other elements must be stripped by some optimization tooling, keeping only <path>
elements.
The src/
directory holds all the SVG icons that would be processed. The filenames define the icon names, so they
should stick with a basic rule: an icon name must describe the icon shape, not its utility. For instance:
If the icon must be mirrored for right-to-left read direction, it required to add a trailing .dir
before the file
extension (e.g. backspace.dir.svg
).
Building
As this package dependends on others in this monorepo, before anything run the following at the root directory:
yarn build
Linting
To ensure the source is matching our coding style, we perform linting.
Before commiting, check if your code fits our style by running:
yarn lint
Some linter warnings and errors can be automatically fixed:
yarn lint-and-fix
Usage
To use the fuselage icons, you need to import the css first:
@import url('@rocket.chat/icons/dist/rocketchat.css');
Usage Example:
<Icon name="hash" size="x20" />
<i class="rcx-icon">{icon}</i>