lion/packages/icon/README.md
2019-07-24 15:20:19 +02:00

90 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Icon
[//]: # 'AUTO INSERT HEADER PREPUBLISH'
A web component for displaying icons.
## How to use
### Installation
```sh
npm i --save @lion/icon
```
```js
import '@lion/icon/lion-icon.js';
```
### Basic usage
Include the import for both the custom element the icons you want:
```html
<script type="module">
import 'lion-icon/lion-icon.js';
import bugSvg from '../icons/bug.svg.js';
</script>
```
Use it in your lit-html template:
```html
<lion-icon .svg="${bugSvg}"></lion-icon>
```
### Icon format
Icon file is an ES module with an extension `.svg.js` which exports a function like this:
```js
// bug.svg.js
export default tag => tag`
<svg focusable="false" ...>...</svg>
`;
```
Make sure you have `focusable="false"` in the icon file to prevent bugs in IE/Edge when the icon appears in tab-order.
### Accessibiltiy
You may add an `aria-label` to provide information to visually impaired users:
```html
<lion-icon .svg="${arrowLeftSvg}" aria-label="Pointing left"></lion-icon>
```
A `lion-icon` without an `aria-label` attribute will be automatically be given an `aria-hidden` attribute.
### Styling
#### Dimensions
By default, a `lion-icon` will be `1em` × `1em` (the current line-height).
A `lion-icon` may be styled like a regular HTML element:
```html
<style>
lion-icon.big {
width: 3rem;
height: 3rem;
}
</style>
```
#### SVG Styling
`lion-icon` uses SVGs and may be styled with CSS, using CSS properties such as `fill` and `stroke`:
```html
<style>
lion-icon.strong {
fill: azure;
stroke: lightsteelblue;
}
</style>
<lion-icon .icon="${arrowSvg}" class="strong"></lion-icon>
```
See [SVG and CSS](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_and_CSS) on MDN web docs for more information.