# FontAwesome5Rails
[![Build Status](https://travis-ci.org/tomkra/font_awesome5_rails.svg?branch=master)](https://travis-ci.org/tomkra/font_awesome5_rails)
[![HitCount](http://hits.dwyl.io/tomkra/tomkra/font_awesome5_rails.svg)](http://hits.dwyl.io/tomkra/tomkra/font_awesome5_rails)
font_awesome5_rails provides the [Font-Awesome5](https://fontawesome.com/) web fonts, stylesheets and javascripts as a Rails engine for use with the asset pipeline and with backwards compatibility with [font-awesome-rails](https://github.com/bokmann/font-awesome-rails) gem.
This gem provides only Free icons from Font-Awesome.
## Table of Contents
**[Instalation](#instalation)**
**[Usage](#usage)**
- **[Basic usage](#basic-usage)**
- **[Solid, Regular, Light, Brand icon types](#solid-regular-light-brand-icon-types)**
- **[Animations and data attributes](#animations-and-data-attributes)**
- **[Layered and Stacked icons](#layered-and-stacked-icons)**
**[Use as images](#use-as-images)**
## Installation
Now you have two options how to include FontAwesome 5 icons. First option is to use ```SVG``` and ```JS``` files which is recommended by FontAwesome team. However you can use icons as ```webfont with CSS``` but you will not be able to use new FA5 features as animations or ```layered_icons```. Choose one installation option from above:
### 1. Install as SVG with JS (recommended)
Add this line to your application's Gemfile:
```ruby
gem 'font_awesome5_rails'
```
In your `application.css`, include the css file:
```css
*= require font_awesome5
```
or if you prefer scss add this to your `application.css.scss` file:
```sass
@import 'font_awesome5';
```
In your `application.js`, include the javascript file:
```javascript
#= require font_awesome5
```
### 2. Install as webfont with CSS (old way)
In your `application.css`, include the css file:
```css
*= require font_awesome5_webfont
```
## Usage
Gem provides FontAwesome icons through helper. In your views just call `fa_icon`.
### Basic usage
```ruby
fa_icon('camera-retro')
# =>
fa_icon('camera-retro', style: 'color: Tomato')
# =>
fa_icon('camera-retro', class: 'my-class', text: 'Camera', size: '3x')
# =>
# => Camera
```
### Solid, Regular, Light, Brand icon types
In Font Awesome 5 there are several different types of icons. In font_awesome5_rails gem default icon type is ```solid```.
If you want to use different icon style you can do this through ```type``` attribute.
| Style | type: | type: |
| ------------- |-------|--------|
| Solid | :fas |:solid |
| Regular | :far |:regular|
| Light | :fal |:light |
| Brand | :fab |:brand |
```ruby
fa_icon('camera-retro', type: :solid) #Default
# =>
fa_icon('camera-retro', type: :regular)
# =>
fa_icon('camera-retro', type: :light)
# =>
fa_icon('camera-retro', type: :brand)
# =>
fa_icon('camera-retro', type: :fab)
# =>
```
### Animations and data attributes
FontAwesome 5 provides new animations and data attributes. Here are some examples how to use them:
```ruby
fa_icon('camera-retro', animation: 'spin')
# =>
fa_icon('camera-retro', data: {'fa-transform': 'rotate-90'})
# =>
```
In FontAwesome5 the text is right behind icon. For better readability text has defaultly set to ```padding-left: 5px;```. If you want to override this setting, you can do that through ```.fa5-text``` class in css styles.
### Layered and Stacked icons
FontAwesome 5 newly provides layered icons. For backward compatibility there were preserved ```fa_stacked_icon``` helper, but you can acomplish the same result with ```fa_layered_icon```.
#### Layered icon examples
```fa_layered_icon``` takes options and block of code that will be rendered inside.
Following ```fa_layered_icon``` examples are written in ```haml```.
```ruby
= fa_layered_icon do
= fa_icon 'circle'
# =>
# =>
# =>
= fa_layered_icon style: 'background: MistyRose', size: '4x' do
= fa_icon 'circle', style: 'color: Tomato'
= fa_icon 'times', class: 'fa-inverse', data: { fa_transform: 'shrink-6' }
# =>