mirror of
https://github.com/vector-im/element-web.git
synced 2024-11-25 01:48:43 +08:00
c05c429803
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> Co-authored-by: github-merge-queue <github-merge-queue@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Florian Duros <florian.duros@ormaz.fr> Co-authored-by: Kim Brose <kim.brose@nordeck.net> Co-authored-by: Florian Duros <florianduros@element.io> Co-authored-by: R Midhun Suresh <hi@midhun.dev> Co-authored-by: dbkr <986903+dbkr@users.noreply.github.com> Co-authored-by: ElementRobot <releases@riot.im> Co-authored-by: dbkr <dbkr@users.noreply.github.com> Co-authored-by: David Baker <dbkr@users.noreply.github.com> Co-authored-by: Michael Telatynski <7t3chguy@gmail.com> Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> Co-authored-by: David Langley <davidl@element.io> Co-authored-by: Michael Weimann <michaelw@matrix.org> Co-authored-by: Timshel <Timshel@users.noreply.github.com> Co-authored-by: Sahil Silare <32628578+sahil9001@users.noreply.github.com> Co-authored-by: Will Hunt <will@half-shot.uk> Co-authored-by: Hubert Chathi <hubert@uhoreg.ca> Co-authored-by: Andrew Ferrazzutti <andrewf@element.io> Co-authored-by: Robin <robin@robin.town> Co-authored-by: Tulir Asokan <tulir@maunium.net>
57 lines
1.4 KiB
Markdown
57 lines
1.4 KiB
Markdown
# Icons
|
|
|
|
Icons are loaded using [@svgr/webpack](https://www.npmjs.com/package/@svgr/webpack).
|
|
This is configured in [element-web](https://github.com/vector-im/element-web/blob/develop/webpack.config.js#L458).
|
|
|
|
Each `.svg` exports a `ReactComponent` at the named export `Icon`.
|
|
Icons have `role="presentation"` and `aria-hidden` automatically applied. These can be overriden by passing props to the icon component.
|
|
|
|
SVG file recommendations:
|
|
|
|
- Colours should not be defined absolutely. Use `currentColor` instead.
|
|
- SVG files should be taken from the design compound as they are. Some icons contain special padding.
|
|
This means that there should be icons for each size, e.g. warning-16px and warning-32px.
|
|
|
|
Example usage:
|
|
|
|
```
|
|
import { Icon as FavoriteIcon } from 'res/img/element-icons/favorite.svg';
|
|
|
|
const MyComponent = () => {
|
|
return <>
|
|
<FavoriteIcon className="mx_Icon mx_Icon_16">
|
|
</>;
|
|
}
|
|
```
|
|
|
|
If possible, use the icon classes from [here](../res/css/compound/_Icon.pcss).
|
|
|
|
## Custom styling
|
|
|
|
Icon components are svg elements and may be custom styled as usual.
|
|
|
|
`_MyComponents.pcss`:
|
|
|
|
```css
|
|
.mx_MyComponent-icon {
|
|
height: 20px;
|
|
width: 20px;
|
|
|
|
* {
|
|
fill: $accent;
|
|
}
|
|
}
|
|
```
|
|
|
|
`MyComponent.tsx`:
|
|
|
|
```typescript
|
|
import { Icon as FavoriteIcon } from 'res/img/element-icons/favorite.svg';
|
|
|
|
const MyComponent = () => {
|
|
return <>
|
|
<FavoriteIcon className="mx_MyComponent-icon" role="img" aria-hidden="false">
|
|
</>;
|
|
}
|
|
```
|