@financial-times/o-icons
Version:
Helper SCSS tool for using the FT's icons. For a full list of available icons please see the fticons image set
151 lines (109 loc) • 6.3 kB
Markdown
> ⚠️ **NOTE:** o-icons has been replaced with [o3-foundation](../o3-foundation/README.md). Please see [Migration Guide](MIGRATION.md#migrating-from-v7-to-o3-foundation@3) for steps to upgrade.
# o-icons
Helper Sass for the [fticons](https://o2-core.origami.ft.com/?path=/story/deprecated-o-icons--icons) image set.
- [o-icons](#o-icons)
- [Usage](#usage)
- [Summary](#summary)
- [Markup](#markup)
- [Sass](#sass)
- [Includes icons of different sizes and colors](#includes-icons-of-different-sizes-and-colors)
- [Using the default CSS helper classes](#using-the-default-css-helper-classes)
- [Contributing](#contributing)
- [Migration](#migration)
- [Contact](#contact)
- [Licence](#licence)
## Usage
Check out [how to include Origami components in your project](https://origami.ft.com/documentation/components/#including-origami-components-in-your-project) to get started with `o-icons`.
## Summary
There are a few ways to get icons from `fticons`:
1. Use [o-icons CSS classes](#markup)
2. Use [o-icons Sass mixins](#sass) with your own CSS.
3. Request the icon directly from the [Image Service](https://www.ft.com/__origami/service/image/v2/docs/url-builder?url=fticon-v1%3Aarrow-down&preview=true) (without using o-icons at all).
## Markup
To add an icon apply the `o-icons-icon` class to a `span`, along with the modifier class for your specific icon e.g. `o-icons-icon--arrow-down`. See the [storybook demos](https://o2-core.origami.ft.com/?path=/story/deprecated-o-icons--icons) for a full list of icons.
```html
<span class="o-icons-icon o-icons-icon--arrow-down"></span>
<span class="o-icons-icon o-icons-icon--audio"></span>
<span class="o-icons-icon o-icons-icon--book"></span>
```
This will include icons with a `128px` width/height by default.
If you would like to use an icon at a different dimension or colour, use `o-icon` [Sass](#sass) mixins or request the icon from the [Image Service](https://www.ft.com/__origami/service/image/v2/docs/url-builder?url=fticon-v1%3Aarrow-down&preview=true) directly (without using o-icons at all).
## Sass
### Includes icons of different sizes and colors
Use `oIconsContent` to output the styles for an icon of a given size and colour.
The `$color` argument should be set using an [o-colors](https://o2-core.origami.ft.com/?path=/docs/deprecated-o-colors-readme--docs) Sass function such as `oColorsByName`, but may be set to any hex value.
```scss
// Use o-colors so you can use colors from the Origami palette.
@import "@financial-times/o-icons/main";
@import "@financial-times/o-colors/main";
// Output a 32px, claret coloured plus icon.
.my-icon-plus {
@include oIconsContent(
$icon-name: 'plus',
$color: oColorsByName('claret'),
$size: 32
);
}
```
```html
<span class="my-icon-plus"></span>
```
The `oIconsContent` mixins outputs styles used by each icon. This is inefficient if your project outputs multiple icons. In this case we recommend outputting the base styles separately with `oIconsContentBaseStyles`.
```scss
// Output a 32px, claret coloured plus icon.
.my-icon {
@include oIconsContentBaseStyles();
}
.my-icon--plus {
@include oIconsContent(
$icon-name: 'plus',
$color: oColorsByName('claret'),
$size: 32,
$include-base-styles: false // do not duplicate the base styles
);
}
```
```html
<span class="my-icon my-icon--plus"></span>
```
`o-icons` includes a media query to restore either a black or white icon in Microsoft's high-contrast mode. If no icon is acceptable for users of Microsoft's high-contrast mode this may be disabled to reduce bundle size:
```scss
.no-high-contrast-window {
@include oIconsContent(
$icon-name: 'plus',
$color: oColorsByName('claret'),
$high-contrast-fallback: false
);
}
```
### Using the default CSS helper classes
To output all icon [helper classes](#markup) include the `oIcons` mixin.
```scss
@import "@financial-times/o-icons/main";
@include oIcons(); // include helper classes for all icons
```
To avoid including all icon [helper classes](#markup), `oIcons` mixin also accepts a list of icons to include:
```scss
@include oIcons($opts: (
'icons': ('arrow-down', 'audio') // include helper classes for the arrow-down and audio icons
));
```
## Contributing
`o-icons` is some Sass mixins and helpers for using the fticons image set. To add a new icon you need to add it to the fticons set. There are instructions in the [origami-image-service README](https://github.com/Financial-Times/origami-image-service#adding-images). When the icon is in fticons, run `node ./scripts/build-icon-list.js NAME_OF_THE_NEW_ICON` to update `o-icons` Sass with the new icon automatically.
If you need to remove an icon from `o-icons` you run `node ./scripts/build-icon-list.js NAME_OF_THE_NEW_ICON remove`.
## Migration
State | Major Version | Last Minor Release | Migration guide |
:---: |:-------------:| :---: |:----------------------------------------------------------------:
✨ active | o3 | N/A | [migrate to o3](MIGRATION.md#migrating-from-v7-to-o3-foundation@3) |
╳ deprecated | 7 | N/A | [migrate to v6](MIGRATION.md#migrating-from-v6-to-v7) |
╳ deprecated | 6 | 6.3 | [migrate to v6](MIGRATION.md#migrating-from-v5-to-v6) |
╳ deprecated | 5 | 5.9 | [migrate to v5](MIGRATION.md#migrating-from-v4-to-v5) |
╳ deprecated | 4 | 4.5 | [migrate to v4](MIGRATION.md#migrating-from-v3-to-v4) |
╳ deprecated | 3 | 3.3 | - |
╳ deprecated | 2 | 2.4 | - |
╳ deprecated | 1 | 1.2 | - |
## Contact
If you have any questions or comments about this component, or need help using it, please either [raise an issue](https://github.com/Financial-Times/o-icons/issues), visit [#origami-support](https://financialtimes.slack.com/messages/origami-support/) or email [Origami Support](mailto:origami-support@ft.com).
***
## Licence
This software is published by the Financial Times under the [MIT licence](http://opensource.org/licenses/MIT).