├── .gitignore ├── .rubocop.yml ├── .travis.yml ├── CHANGELOG.md ├── Gemfile ├── Guardfile ├── LICENSE ├── README.md ├── Rakefile ├── app ├── assets │ ├── fonts │ │ ├── ionicons.eot │ │ ├── ionicons.svg │ │ ├── ionicons.ttf │ │ └── ionicons.woff │ └── stylesheets │ │ └── ionicons.css.erb └── helpers │ └── font_ionicons │ └── rails │ └── icon_helper.rb ├── font-ionicons-rails.gemspec ├── gemfiles ├── rails-3.2.gemfile ├── rails-4.1.gemfile ├── rails-4.2.gemfile ├── rails-master.gemfile └── sprockets-backport.gemfile ├── lib ├── font-ionicons-rails.rb └── font-ionicons-rails │ ├── engine.rb │ └── version.rb └── test ├── dummy ├── .gitignore ├── app │ ├── assets │ │ └── stylesheets │ │ │ ├── sass-import.css.sass │ │ │ ├── scss-import.css.scss │ │ │ └── sprockets-require.css │ ├── controllers │ │ └── pages_controller.rb │ └── views │ │ └── pages │ │ └── icons.html.erb ├── config.ru └── config │ ├── application.rb │ ├── boot.rb │ ├── environment.rb │ ├── initializers │ └── secret_token.rb │ └── routes.rb ├── font-ionicons_rails_test.rb ├── icon_helper_test.rb └── test_helper.rb /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | .bundle 3 | Gemfile.lock 4 | gemfiles/*.lock 5 | pkg/* 6 | bin 7 | vendor/ruby 8 | gemfiles/vendor/ruby 9 | .rbenv-version 10 | .sass-cache 11 | .tags 12 | .tags1 13 | .DS_Store 14 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | # inherit_from: ../.rubocop.yml 2 | 3 | Style/Encoding: 4 | Enabled: false 5 | 6 | Metrics/LineLength: 7 | Max: 120 8 | Enabled: false 9 | 10 | Style/AsciiComments: 11 | Enabled: false 12 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | cache: bundler 3 | rvm: 4 | - 2.1 5 | - 2.2 6 | gemfile: 7 | - Gemfile 8 | - gemfiles/rails-3.2.gemfile 9 | - gemfiles/rails-4.1.gemfile 10 | - gemfiles/rails-4.2.gemfile 11 | matrix: 12 | exclude: 13 | - rvm: 2.2 14 | gemfile: gemfiles/rails-3.2.gemfile 15 | include: 16 | - rvm: 2.2 17 | gemfile: gemfiles/rails-master.gemfile 18 | allow_failures: 19 | - gemfile: gemfiles/rails-master.gemfile 20 | fast_finish: true -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | See [GitHub Releases](https://github.com/ricardoemerson/font-ionicons-rails/releases) 2 | 3 | Changes 4 | ------- 5 | 6 | ``` 7 | | Version | Notes / Other additions | 8 | |---------+--------------------------------------------------------------------------------------| 9 | | 2.0.1.0 | First release of gem | 10 | | 2.0.1.1 | Update gem description on Rubygems.org | 11 | | 2.0.1.2 | Update the URL of the documentation | 12 | | 2.0.1.3 | Update gem description on Rubygems.org | 13 | | 2.0.1.4 | Fix for precompile font files assets to avoid to included manually on Heroku server. | 14 | | 2.0.1.5 | Add support to Rails 5. | 15 | | 2.0.1.6 | Add support to Rails 6. | 16 | ``` 17 | 18 | ```css 19 | /* FontIonicons Syntax */ 20 | 21 | ``` 22 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Specify your gem's dependencies in font-awesome-rails.gemspec 4 | gemspec 5 | 6 | group :development do 7 | gem "guard", ">= 2.9" 8 | gem "guard-minitest" 9 | end 10 | -------------------------------------------------------------------------------- /Guardfile: -------------------------------------------------------------------------------- 1 | # More info at https://github.com/guard/guard#readme 2 | 3 | directories %w(app lib test) 4 | 5 | guard :minitest, bundler: true do 6 | watch(%r{^app/(.+)\.rb$}) { "test" } 7 | watch(%r{^lib/(.+)\.rb$}) { "test" } 8 | watch(%r{^test/(.+)\.rb$}) { "test" } 9 | end 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015 ricardoemerson 2 | 3 | MIT License 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | font-ionicons-rails [![Gem Version](https://img.shields.io/badge/gem-v2.0.1.6-blue.svg)](https://github.com/ricardoemerson/font-ionicons-rails) [![Build Status](https://img.shields.io/badge/build-passing-green.svg)](https://github.com/ricardoemerson/font-ionicons-rails) 2 | ============================================================================================================================================================================================================================================================================== 3 | 4 | The font-ionicons-rails is the best gem made for ionicons and provides the [ionicons](http://ionicons.com/) web fonts and stylesheets as a Rails engine for use with the asset pipeline. 5 | 6 | Installation 7 | ------------ 8 | 9 | Add this to your Gemfile: 10 | 11 | ```ruby 12 | gem "font-ionicons-rails" 13 | ``` 14 | 15 | or 16 | 17 | ```ruby 18 | gem "font-ionicons-rails", git: 'https://github.com/ricardoemerson/font-ionicons-rails.git' 19 | ``` 20 | 21 | and run `bundle install`. 22 | 23 | Usage 24 | ----- 25 | 26 | In your `application.css`, include the css file: 27 | 28 | ```css 29 | /* 30 | *= require ionicons 31 | */ 32 | ``` 33 | 34 | Then restart your webserver if it was previously running. 35 | 36 | ### Sass Support 37 | 38 | If you prefer [SCSS](http://sass-lang.com/documentation/file.SASS_REFERENCE.html), add this to your`application.css.scss` file: 39 | 40 | ```scss 41 | @import "ionicons"; 42 | ``` 43 | 44 | If you use the [Sass indented syntax](http://sass-lang.com/docs/yardoc/file.INDENTED_SYNTAX.html), add this to your `application.css.sass` file: 45 | 46 | ```sass 47 | @import ionicons 48 | ``` 49 | 50 | ### Helpers 51 | 52 | There are also some helpers (`ion_icon`) for improve use. 53 | 54 | ```ruby 55 | ion_icon "camera" 56 | # => 57 | 58 | ion_icon "camera", text: "Take a photo" 59 | # => Take a photo 60 | 61 | ion_icon "chevron-right", text: "Get started", right: true 62 | # => Get started 63 | 64 | content_tag(:li, ion_icon("checkmark-round", text: "Bulleted list item")) 65 | # =>
  • Bulleted list item
  • 66 | ``` 67 | 68 | License 69 | ------- 70 | 71 | - The [ionicons](http://ionicons.com/) font is licensed under the [MIT license](http://opensource.org/licenses/MIT). 72 | 73 | Special Thanks 74 | -------------- 75 | 76 | The font-ionicons-rails was inspired by [font-awesome-rails](https://github.com/bokmann/font-awesome-rails) made by David Bock. 77 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env rake 2 | require "bundler/gem_tasks" 3 | require "rake/testtask" 4 | 5 | Rake::TestTask.new(:test) do |t| 6 | t.libs << "lib" 7 | t.libs << "test" 8 | t.pattern = "test/**/*_test.rb" 9 | t.verbose = false 10 | end 11 | 12 | task :default => :test 13 | -------------------------------------------------------------------------------- /app/assets/fonts/ionicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ricardoemerson/font-ionicons-rails/af956fc2a01bf2878b7f475913a7c0bb7cf9f0e0/app/assets/fonts/ionicons.eot -------------------------------------------------------------------------------- /app/assets/fonts/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ricardoemerson/font-ionicons-rails/af956fc2a01bf2878b7f475913a7c0bb7cf9f0e0/app/assets/fonts/ionicons.ttf -------------------------------------------------------------------------------- /app/assets/fonts/ionicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ricardoemerson/font-ionicons-rails/af956fc2a01bf2878b7f475913a7c0bb7cf9f0e0/app/assets/fonts/ionicons.woff -------------------------------------------------------------------------------- /app/assets/stylesheets/ionicons.css.erb: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /*! 3 | Ionicons, v2.0.0 4 | Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ 5 | https://twitter.com/benjsperry https://twitter.com/ionicframework 6 | MIT License: https://github.com/driftyco/ionicons 7 | 8 | Android-style icons originally built by Google’s 9 | Material Design Icons: https://github.com/google/material-design-icons 10 | used under CC BY http://creativecommons.org/licenses/by/4.0/ 11 | Modified icons to fit ionicon’s grid from original. 12 | */ 13 | 14 | //= depend_on_asset "ionicons.eot" 15 | //= depend_on_asset "ionicons.woff" 16 | //= depend_on_asset "ionicons.ttf" 17 | //= depend_on_asset "ionicons.svg" 18 | <% v = FontIonicons::Rails::FI_VERSION %> 19 | @font-face { 20 | font-family: 'Ionicons'; 21 | src: url('<%= font_path('ionicons.eot') %>?v=<%= v %>'); 22 | src: url('<%= font_path('ionicons.eot') %>?#iefix&v=<%= v %>') format('embedded-opentype'), url('<%= font_path('ionicons.woff') %>?v=<%= v %>') format('woff'), url('<%= font_path('ionicons.ttf') %>?v=<%= v %>') format('truetype'), url('<%= font_path('ionicons.svg') %>?v=<%= v %>#ioniconsregular') format('svg'); 23 | font-weight: normal; 24 | font-style: normal; 25 | } 26 | 27 | .ion, .ionicons, .ion-alert:before, .ion-alert-circled:before, .ion-android-add:before, .ion-android-add-circle:before, .ion-android-alarm-clock:before, .ion-android-alert:before, .ion-android-apps:before, .ion-android-archive:before, .ion-android-arrow-back:before, .ion-android-arrow-down:before, .ion-android-arrow-dropdown:before, .ion-android-arrow-dropdown-circle:before, .ion-android-arrow-dropleft:before, .ion-android-arrow-dropleft-circle:before, .ion-android-arrow-dropright:before, .ion-android-arrow-dropright-circle:before, .ion-android-arrow-dropup:before, .ion-android-arrow-dropup-circle:before, .ion-android-arrow-forward:before, .ion-android-arrow-up:before, .ion-android-attach:before, .ion-android-bar:before, .ion-android-bicycle:before, .ion-android-boat:before, .ion-android-bookmark:before, .ion-android-bulb:before, .ion-android-bus:before, .ion-android-calendar:before, .ion-android-call:before, .ion-android-camera:before, .ion-android-cancel:before, .ion-android-car:before, .ion-android-cart:before, .ion-android-chat:before, .ion-android-checkbox:before, .ion-android-checkbox-blank:before, .ion-android-checkbox-outline:before, .ion-android-checkbox-outline-blank:before, .ion-android-checkmark-circle:before, .ion-android-clipboard:before, .ion-android-close:before, .ion-android-cloud:before, .ion-android-cloud-circle:before, .ion-android-cloud-done:before, .ion-android-cloud-outline:before, .ion-android-color-palette:before, .ion-android-compass:before, .ion-android-contact:before, .ion-android-contacts:before, .ion-android-contract:before, .ion-android-create:before, .ion-android-delete:before, .ion-android-desktop:before, .ion-android-document:before, .ion-android-done:before, .ion-android-done-all:before, .ion-android-download:before, .ion-android-drafts:before, .ion-android-exit:before, .ion-android-expand:before, .ion-android-favorite:before, .ion-android-favorite-outline:before, .ion-android-film:before, .ion-android-folder:before, .ion-android-folder-open:before, .ion-android-funnel:before, .ion-android-globe:before, .ion-android-hand:before, .ion-android-hangout:before, .ion-android-happy:before, .ion-android-home:before, .ion-android-image:before, .ion-android-laptop:before, .ion-android-list:before, .ion-android-locate:before, .ion-android-lock:before, .ion-android-mail:before, .ion-android-map:before, .ion-android-menu:before, .ion-android-microphone:before, .ion-android-microphone-off:before, .ion-android-more-horizontal:before, .ion-android-more-vertical:before, .ion-android-navigate:before, .ion-android-notifications:before, .ion-android-notifications-none:before, .ion-android-notifications-off:before, .ion-android-open:before, .ion-android-options:before, .ion-android-people:before, .ion-android-person:before, .ion-android-person-add:before, .ion-android-phone-landscape:before, .ion-android-phone-portrait:before, .ion-android-pin:before, .ion-android-plane:before, .ion-android-playstore:before, .ion-android-print:before, .ion-android-radio-button-off:before, .ion-android-radio-button-on:before, .ion-android-refresh:before, .ion-android-remove:before, .ion-android-remove-circle:before, .ion-android-restaurant:before, .ion-android-sad:before, .ion-android-search:before, .ion-android-send:before, .ion-android-settings:before, .ion-android-share:before, .ion-android-share-alt:before, .ion-android-star:before, .ion-android-star-half:before, .ion-android-star-outline:before, .ion-android-stopwatch:before, .ion-android-subway:before, .ion-android-sunny:before, .ion-android-sync:before, .ion-android-textsms:before, .ion-android-time:before, .ion-android-train:before, .ion-android-unlock:before, .ion-android-upload:before, .ion-android-volume-down:before, .ion-android-volume-mute:before, .ion-android-volume-off:before, .ion-android-volume-up:before, .ion-android-walk:before, .ion-android-warning:before, .ion-android-watch:before, .ion-android-wifi:before, .ion-aperture:before, .ion-archive:before, .ion-arrow-down-a:before, .ion-arrow-down-b:before, .ion-arrow-down-c:before, .ion-arrow-expand:before, .ion-arrow-graph-down-left:before, .ion-arrow-graph-down-right:before, .ion-arrow-graph-up-left:before, .ion-arrow-graph-up-right:before, .ion-arrow-left-a:before, .ion-arrow-left-b:before, .ion-arrow-left-c:before, .ion-arrow-move:before, .ion-arrow-resize:before, .ion-arrow-return-left:before, .ion-arrow-return-right:before, .ion-arrow-right-a:before, .ion-arrow-right-b:before, .ion-arrow-right-c:before, .ion-arrow-shrink:before, .ion-arrow-swap:before, .ion-arrow-up-a:before, .ion-arrow-up-b:before, .ion-arrow-up-c:before, .ion-asterisk:before, .ion-at:before, .ion-backspace:before, .ion-backspace-outline:before, .ion-bag:before, .ion-battery-charging:before, .ion-battery-empty:before, .ion-battery-full:before, .ion-battery-half:before, .ion-battery-low:before, .ion-beaker:before, .ion-beer:before, .ion-bluetooth:before, .ion-bonfire:before, .ion-bookmark:before, .ion-bowtie:before, .ion-briefcase:before, .ion-bug:before, .ion-calculator:before, .ion-calendar:before, .ion-camera:before, .ion-card:before, .ion-cash:before, .ion-chatbox:before, .ion-chatbox-working:before, .ion-chatboxes:before, .ion-chatbubble:before, .ion-chatbubble-working:before, .ion-chatbubbles:before, .ion-checkmark:before, .ion-checkmark-circled:before, .ion-checkmark-round:before, .ion-chevron-down:before, .ion-chevron-left:before, .ion-chevron-right:before, .ion-chevron-up:before, .ion-clipboard:before, .ion-clock:before, .ion-close:before, .ion-close-circled:before, .ion-close-round:before, .ion-closed-captioning:before, .ion-cloud:before, .ion-code:before, .ion-code-download:before, .ion-code-working:before, .ion-coffee:before, .ion-compass:before, .ion-compose:before, .ion-connection-bars:before, .ion-contrast:before, .ion-crop:before, .ion-cube:before, .ion-disc:before, .ion-document:before, .ion-document-text:before, .ion-drag:before, .ion-earth:before, .ion-easel:before, .ion-edit:before, .ion-egg:before, .ion-eject:before, .ion-email:before, .ion-email-unread:before, .ion-erlenmeyer-flask:before, .ion-erlenmeyer-flask-bubbles:before, .ion-eye:before, .ion-eye-disabled:before, .ion-female:before, .ion-filing:before, .ion-film-marker:before, .ion-fireball:before, .ion-flag:before, .ion-flame:before, .ion-flash:before, .ion-flash-off:before, .ion-folder:before, .ion-fork:before, .ion-fork-repo:before, .ion-forward:before, .ion-funnel:before, .ion-gear-a:before, .ion-gear-b:before, .ion-grid:before, .ion-hammer:before, .ion-happy:before, .ion-happy-outline:before, .ion-headphone:before, .ion-heart:before, .ion-heart-broken:before, .ion-help:before, .ion-help-buoy:before, .ion-help-circled:before, .ion-home:before, .ion-icecream:before, .ion-image:before, .ion-images:before, .ion-information:before, .ion-information-circled:before, .ion-ionic:before, .ion-ios-alarm:before, .ion-ios-alarm-outline:before, .ion-ios-albums:before, .ion-ios-albums-outline:before, .ion-ios-americanfootball:before, .ion-ios-americanfootball-outline:before, .ion-ios-analytics:before, .ion-ios-analytics-outline:before, .ion-ios-arrow-back:before, .ion-ios-arrow-down:before, .ion-ios-arrow-forward:before, .ion-ios-arrow-left:before, .ion-ios-arrow-right:before, .ion-ios-arrow-thin-down:before, .ion-ios-arrow-thin-left:before, .ion-ios-arrow-thin-right:before, .ion-ios-arrow-thin-up:before, .ion-ios-arrow-up:before, .ion-ios-at:before, .ion-ios-at-outline:before, .ion-ios-barcode:before, .ion-ios-barcode-outline:before, .ion-ios-baseball:before, .ion-ios-baseball-outline:before, .ion-ios-basketball:before, .ion-ios-basketball-outline:before, .ion-ios-bell:before, .ion-ios-bell-outline:before, .ion-ios-body:before, .ion-ios-body-outline:before, .ion-ios-bolt:before, .ion-ios-bolt-outline:before, .ion-ios-book:before, .ion-ios-book-outline:before, .ion-ios-bookmarks:before, .ion-ios-bookmarks-outline:before, .ion-ios-box:before, .ion-ios-box-outline:before, .ion-ios-briefcase:before, .ion-ios-briefcase-outline:before, .ion-ios-browsers:before, .ion-ios-browsers-outline:before, .ion-ios-calculator:before, .ion-ios-calculator-outline:before, .ion-ios-calendar:before, .ion-ios-calendar-outline:before, .ion-ios-camera:before, .ion-ios-camera-outline:before, .ion-ios-cart:before, .ion-ios-cart-outline:before, .ion-ios-chatboxes:before, .ion-ios-chatboxes-outline:before, .ion-ios-chatbubble:before, .ion-ios-chatbubble-outline:before, .ion-ios-checkmark:before, .ion-ios-checkmark-empty:before, .ion-ios-checkmark-outline:before, .ion-ios-circle-filled:before, .ion-ios-circle-outline:before, .ion-ios-clock:before, .ion-ios-clock-outline:before, .ion-ios-close:before, .ion-ios-close-empty:before, .ion-ios-close-outline:before, .ion-ios-cloud:before, .ion-ios-cloud-download:before, .ion-ios-cloud-download-outline:before, .ion-ios-cloud-outline:before, .ion-ios-cloud-upload:before, .ion-ios-cloud-upload-outline:before, .ion-ios-cloudy:before, .ion-ios-cloudy-night:before, .ion-ios-cloudy-night-outline:before, .ion-ios-cloudy-outline:before, .ion-ios-cog:before, .ion-ios-cog-outline:before, .ion-ios-color-filter:before, .ion-ios-color-filter-outline:before, .ion-ios-color-wand:before, .ion-ios-color-wand-outline:before, .ion-ios-compose:before, .ion-ios-compose-outline:before, .ion-ios-contact:before, .ion-ios-contact-outline:before, .ion-ios-copy:before, .ion-ios-copy-outline:before, .ion-ios-crop:before, .ion-ios-crop-strong:before, .ion-ios-download:before, .ion-ios-download-outline:before, .ion-ios-drag:before, .ion-ios-email:before, .ion-ios-email-outline:before, .ion-ios-eye:before, .ion-ios-eye-outline:before, .ion-ios-fastforward:before, .ion-ios-fastforward-outline:before, .ion-ios-filing:before, .ion-ios-filing-outline:before, .ion-ios-film:before, .ion-ios-film-outline:before, .ion-ios-flag:before, .ion-ios-flag-outline:before, .ion-ios-flame:before, .ion-ios-flame-outline:before, .ion-ios-flask:before, .ion-ios-flask-outline:before, .ion-ios-flower:before, .ion-ios-flower-outline:before, .ion-ios-folder:before, .ion-ios-folder-outline:before, .ion-ios-football:before, .ion-ios-football-outline:before, .ion-ios-game-controller-a:before, .ion-ios-game-controller-a-outline:before, .ion-ios-game-controller-b:before, .ion-ios-game-controller-b-outline:before, .ion-ios-gear:before, .ion-ios-gear-outline:before, .ion-ios-glasses:before, .ion-ios-glasses-outline:before, .ion-ios-grid-view:before, .ion-ios-grid-view-outline:before, .ion-ios-heart:before, .ion-ios-heart-outline:before, .ion-ios-help:before, .ion-ios-help-empty:before, .ion-ios-help-outline:before, .ion-ios-home:before, .ion-ios-home-outline:before, .ion-ios-infinite:before, .ion-ios-infinite-outline:before, .ion-ios-information:before, .ion-ios-information-empty:before, .ion-ios-information-outline:before, .ion-ios-ionic-outline:before, .ion-ios-keypad:before, .ion-ios-keypad-outline:before, .ion-ios-lightbulb:before, .ion-ios-lightbulb-outline:before, .ion-ios-list:before, .ion-ios-list-outline:before, .ion-ios-location:before, .ion-ios-location-outline:before, .ion-ios-locked:before, .ion-ios-locked-outline:before, .ion-ios-loop:before, .ion-ios-loop-strong:before, .ion-ios-medical:before, .ion-ios-medical-outline:before, .ion-ios-medkit:before, .ion-ios-medkit-outline:before, .ion-ios-mic:before, .ion-ios-mic-off:before, .ion-ios-mic-outline:before, .ion-ios-minus:before, .ion-ios-minus-empty:before, .ion-ios-minus-outline:before, .ion-ios-monitor:before, .ion-ios-monitor-outline:before, .ion-ios-moon:before, .ion-ios-moon-outline:before, .ion-ios-more:before, .ion-ios-more-outline:before, .ion-ios-musical-note:before, .ion-ios-musical-notes:before, .ion-ios-navigate:before, .ion-ios-navigate-outline:before, .ion-ios-nutrition:before, .ion-ios-nutrition-outline:before, .ion-ios-paper:before, .ion-ios-paper-outline:before, .ion-ios-paperplane:before, .ion-ios-paperplane-outline:before, .ion-ios-partlysunny:before, .ion-ios-partlysunny-outline:before, .ion-ios-pause:before, .ion-ios-pause-outline:before, .ion-ios-paw:before, .ion-ios-paw-outline:before, .ion-ios-people:before, .ion-ios-people-outline:before, .ion-ios-person:before, .ion-ios-person-outline:before, .ion-ios-personadd:before, .ion-ios-personadd-outline:before, .ion-ios-photos:before, .ion-ios-photos-outline:before, .ion-ios-pie:before, .ion-ios-pie-outline:before, .ion-ios-pint:before, .ion-ios-pint-outline:before, .ion-ios-play:before, .ion-ios-play-outline:before, .ion-ios-plus:before, .ion-ios-plus-empty:before, .ion-ios-plus-outline:before, .ion-ios-pricetag:before, .ion-ios-pricetag-outline:before, .ion-ios-pricetags:before, .ion-ios-pricetags-outline:before, .ion-ios-printer:before, .ion-ios-printer-outline:before, .ion-ios-pulse:before, .ion-ios-pulse-strong:before, .ion-ios-rainy:before, .ion-ios-rainy-outline:before, .ion-ios-recording:before, .ion-ios-recording-outline:before, .ion-ios-redo:before, .ion-ios-redo-outline:before, .ion-ios-refresh:before, .ion-ios-refresh-empty:before, .ion-ios-refresh-outline:before, .ion-ios-reload:before, .ion-ios-reverse-camera:before, .ion-ios-reverse-camera-outline:before, .ion-ios-rewind:before, .ion-ios-rewind-outline:before, .ion-ios-rose:before, .ion-ios-rose-outline:before, .ion-ios-search:before, .ion-ios-search-strong:before, .ion-ios-settings:before, .ion-ios-settings-strong:before, .ion-ios-shuffle:before, .ion-ios-shuffle-strong:before, .ion-ios-skipbackward:before, .ion-ios-skipbackward-outline:before, .ion-ios-skipforward:before, .ion-ios-skipforward-outline:before, .ion-ios-snowy:before, .ion-ios-speedometer:before, .ion-ios-speedometer-outline:before, .ion-ios-star:before, .ion-ios-star-half:before, .ion-ios-star-outline:before, .ion-ios-stopwatch:before, .ion-ios-stopwatch-outline:before, .ion-ios-sunny:before, .ion-ios-sunny-outline:before, .ion-ios-telephone:before, .ion-ios-telephone-outline:before, .ion-ios-tennisball:before, .ion-ios-tennisball-outline:before, .ion-ios-thunderstorm:before, .ion-ios-thunderstorm-outline:before, .ion-ios-time:before, .ion-ios-time-outline:before, .ion-ios-timer:before, .ion-ios-timer-outline:before, .ion-ios-toggle:before, .ion-ios-toggle-outline:before, .ion-ios-trash:before, .ion-ios-trash-outline:before, .ion-ios-undo:before, .ion-ios-undo-outline:before, .ion-ios-unlocked:before, .ion-ios-unlocked-outline:before, .ion-ios-upload:before, .ion-ios-upload-outline:before, .ion-ios-videocam:before, .ion-ios-videocam-outline:before, .ion-ios-volume-high:before, .ion-ios-volume-low:before, .ion-ios-wineglass:before, .ion-ios-wineglass-outline:before, .ion-ios-world:before, .ion-ios-world-outline:before, .ion-ipad:before, .ion-iphone:before, .ion-ipod:before, .ion-jet:before, .ion-key:before, .ion-knife:before, .ion-laptop:before, .ion-leaf:before, .ion-levels:before, .ion-lightbulb:before, .ion-link:before, .ion-load-a:before, .ion-load-b:before, .ion-load-c:before, .ion-load-d:before, .ion-location:before, .ion-lock-combination:before, .ion-locked:before, .ion-log-in:before, .ion-log-out:before, .ion-loop:before, .ion-magnet:before, .ion-male:before, .ion-man:before, .ion-map:before, .ion-medkit:before, .ion-merge:before, .ion-mic-a:before, .ion-mic-b:before, .ion-mic-c:before, .ion-minus:before, .ion-minus-circled:before, .ion-minus-round:before, .ion-model-s:before, .ion-monitor:before, .ion-more:before, .ion-mouse:before, .ion-music-note:before, .ion-navicon:before, .ion-navicon-round:before, .ion-navigate:before, .ion-network:before, .ion-no-smoking:before, .ion-nuclear:before, .ion-outlet:before, .ion-paintbrush:before, .ion-paintbucket:before, .ion-paper-airplane:before, .ion-paperclip:before, .ion-pause:before, .ion-person:before, .ion-person-add:before, .ion-person-stalker:before, .ion-pie-graph:before, .ion-pin:before, .ion-pinpoint:before, .ion-pizza:before, .ion-plane:before, .ion-planet:before, .ion-play:before, .ion-playstation:before, .ion-plus:before, .ion-plus-circled:before, .ion-plus-round:before, .ion-podium:before, .ion-pound:before, .ion-power:before, .ion-pricetag:before, .ion-pricetags:before, .ion-printer:before, .ion-pull-request:before, .ion-qr-scanner:before, .ion-quote:before, .ion-radio-waves:before, .ion-record:before, .ion-refresh:before, .ion-reply:before, .ion-reply-all:before, .ion-ribbon-a:before, .ion-ribbon-b:before, .ion-sad:before, .ion-sad-outline:before, .ion-scissors:before, .ion-search:before, .ion-settings:before, .ion-share:before, .ion-shuffle:before, .ion-skip-backward:before, .ion-skip-forward:before, .ion-social-android:before, .ion-social-android-outline:before, .ion-social-angular:before, .ion-social-angular-outline:before, .ion-social-apple:before, .ion-social-apple-outline:before, .ion-social-bitcoin:before, .ion-social-bitcoin-outline:before, .ion-social-buffer:before, .ion-social-buffer-outline:before, .ion-social-chrome:before, .ion-social-chrome-outline:before, .ion-social-codepen:before, .ion-social-codepen-outline:before, .ion-social-css3:before, .ion-social-css3-outline:before, .ion-social-designernews:before, .ion-social-designernews-outline:before, .ion-social-dribbble:before, .ion-social-dribbble-outline:before, .ion-social-dropbox:before, .ion-social-dropbox-outline:before, .ion-social-euro:before, .ion-social-euro-outline:before, .ion-social-facebook:before, .ion-social-facebook-outline:before, .ion-social-foursquare:before, .ion-social-foursquare-outline:before, .ion-social-freebsd-devil:before, .ion-social-github:before, .ion-social-github-outline:before, .ion-social-google:before, .ion-social-google-outline:before, .ion-social-googleplus:before, .ion-social-googleplus-outline:before, .ion-social-hackernews:before, .ion-social-hackernews-outline:before, .ion-social-html5:before, .ion-social-html5-outline:before, .ion-social-instagram:before, .ion-social-instagram-outline:before, .ion-social-javascript:before, .ion-social-javascript-outline:before, .ion-social-linkedin:before, .ion-social-linkedin-outline:before, .ion-social-markdown:before, .ion-social-nodejs:before, .ion-social-octocat:before, .ion-social-pinterest:before, .ion-social-pinterest-outline:before, .ion-social-python:before, .ion-social-reddit:before, .ion-social-reddit-outline:before, .ion-social-rss:before, .ion-social-rss-outline:before, .ion-social-sass:before, .ion-social-skype:before, .ion-social-skype-outline:before, .ion-social-snapchat:before, .ion-social-snapchat-outline:before, .ion-social-tumblr:before, .ion-social-tumblr-outline:before, .ion-social-tux:before, .ion-social-twitch:before, .ion-social-twitch-outline:before, .ion-social-twitter:before, .ion-social-twitter-outline:before, .ion-social-usd:before, .ion-social-usd-outline:before, .ion-social-vimeo:before, .ion-social-vimeo-outline:before, .ion-social-whatsapp:before, .ion-social-whatsapp-outline:before, .ion-social-windows:before, .ion-social-windows-outline:before, .ion-social-wordpress:before, .ion-social-wordpress-outline:before, .ion-social-yahoo:before, .ion-social-yahoo-outline:before, .ion-social-yen:before, .ion-social-yen-outline:before, .ion-social-youtube:before, .ion-social-youtube-outline:before, .ion-soup-can:before, .ion-soup-can-outline:before, .ion-speakerphone:before, .ion-speedometer:before, .ion-spoon:before, .ion-star:before, .ion-stats-bars:before, .ion-steam:before, .ion-stop:before, .ion-thermometer:before, .ion-thumbsdown:before, .ion-thumbsup:before, .ion-toggle:before, .ion-toggle-filled:before, .ion-transgender:before, .ion-trash-a:before, .ion-trash-b:before, .ion-trophy:before, .ion-tshirt:before, .ion-tshirt-outline:before, .ion-umbrella:before, .ion-university:before, .ion-unlocked:before, .ion-upload:before, .ion-usb:before, .ion-videocamera:before, .ion-volume-high:before, .ion-volume-low:before, .ion-volume-medium:before, .ion-volume-mute:before, .ion-wand:before, .ion-waterdrop:before, .ion-wifi:before, .ion-wineglass:before, .ion-woman:before, .ion-wrench:before, .ion-xbox:before { display: inline-block; font-family: "Ionicons"; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } 28 | 29 | .ion-alert:before { content: "\f101"; } 30 | 31 | .ion-alert-circled:before { content: "\f100"; } 32 | 33 | .ion-android-add:before { content: "\f2c7"; } 34 | 35 | .ion-android-add-circle:before { content: "\f359"; } 36 | 37 | .ion-android-alarm-clock:before { content: "\f35a"; } 38 | 39 | .ion-android-alert:before { content: "\f35b"; } 40 | 41 | .ion-android-apps:before { content: "\f35c"; } 42 | 43 | .ion-android-archive:before { content: "\f2c9"; } 44 | 45 | .ion-android-arrow-back:before { content: "\f2ca"; } 46 | 47 | .ion-android-arrow-down:before { content: "\f35d"; } 48 | 49 | .ion-android-arrow-dropdown:before { content: "\f35f"; } 50 | 51 | .ion-android-arrow-dropdown-circle:before { content: "\f35e"; } 52 | 53 | .ion-android-arrow-dropleft:before { content: "\f361"; } 54 | 55 | .ion-android-arrow-dropleft-circle:before { content: "\f360"; } 56 | 57 | .ion-android-arrow-dropright:before { content: "\f363"; } 58 | 59 | .ion-android-arrow-dropright-circle:before { content: "\f362"; } 60 | 61 | .ion-android-arrow-dropup:before { content: "\f365"; } 62 | 63 | .ion-android-arrow-dropup-circle:before { content: "\f364"; } 64 | 65 | .ion-android-arrow-forward:before { content: "\f30f"; } 66 | 67 | .ion-android-arrow-up:before { content: "\f366"; } 68 | 69 | .ion-android-attach:before { content: "\f367"; } 70 | 71 | .ion-android-bar:before { content: "\f368"; } 72 | 73 | .ion-android-bicycle:before { content: "\f369"; } 74 | 75 | .ion-android-boat:before { content: "\f36a"; } 76 | 77 | .ion-android-bookmark:before { content: "\f36b"; } 78 | 79 | .ion-android-bulb:before { content: "\f36c"; } 80 | 81 | .ion-android-bus:before { content: "\f36d"; } 82 | 83 | .ion-android-calendar:before { content: "\f2d1"; } 84 | 85 | .ion-android-call:before { content: "\f2d2"; } 86 | 87 | .ion-android-camera:before { content: "\f2d3"; } 88 | 89 | .ion-android-cancel:before { content: "\f36e"; } 90 | 91 | .ion-android-car:before { content: "\f36f"; } 92 | 93 | .ion-android-cart:before { content: "\f370"; } 94 | 95 | .ion-android-chat:before { content: "\f2d4"; } 96 | 97 | .ion-android-checkbox:before { content: "\f374"; } 98 | 99 | .ion-android-checkbox-blank:before { content: "\f371"; } 100 | 101 | .ion-android-checkbox-outline:before { content: "\f373"; } 102 | 103 | .ion-android-checkbox-outline-blank:before { content: "\f372"; } 104 | 105 | .ion-android-checkmark-circle:before { content: "\f375"; } 106 | 107 | .ion-android-clipboard:before { content: "\f376"; } 108 | 109 | .ion-android-close:before { content: "\f2d7"; } 110 | 111 | .ion-android-cloud:before { content: "\f37a"; } 112 | 113 | .ion-android-cloud-circle:before { content: "\f377"; } 114 | 115 | .ion-android-cloud-done:before { content: "\f378"; } 116 | 117 | .ion-android-cloud-outline:before { content: "\f379"; } 118 | 119 | .ion-android-color-palette:before { content: "\f37b"; } 120 | 121 | .ion-android-compass:before { content: "\f37c"; } 122 | 123 | .ion-android-contact:before { content: "\f2d8"; } 124 | 125 | .ion-android-contacts:before { content: "\f2d9"; } 126 | 127 | .ion-android-contract:before { content: "\f37d"; } 128 | 129 | .ion-android-create:before { content: "\f37e"; } 130 | 131 | .ion-android-delete:before { content: "\f37f"; } 132 | 133 | .ion-android-desktop:before { content: "\f380"; } 134 | 135 | .ion-android-document:before { content: "\f381"; } 136 | 137 | .ion-android-done:before { content: "\f383"; } 138 | 139 | .ion-android-done-all:before { content: "\f382"; } 140 | 141 | .ion-android-download:before { content: "\f2dd"; } 142 | 143 | .ion-android-drafts:before { content: "\f384"; } 144 | 145 | .ion-android-exit:before { content: "\f385"; } 146 | 147 | .ion-android-expand:before { content: "\f386"; } 148 | 149 | .ion-android-favorite:before { content: "\f388"; } 150 | 151 | .ion-android-favorite-outline:before { content: "\f387"; } 152 | 153 | .ion-android-film:before { content: "\f389"; } 154 | 155 | .ion-android-folder:before { content: "\f2e0"; } 156 | 157 | .ion-android-folder-open:before { content: "\f38a"; } 158 | 159 | .ion-android-funnel:before { content: "\f38b"; } 160 | 161 | .ion-android-globe:before { content: "\f38c"; } 162 | 163 | .ion-android-hand:before { content: "\f2e3"; } 164 | 165 | .ion-android-hangout:before { content: "\f38d"; } 166 | 167 | .ion-android-happy:before { content: "\f38e"; } 168 | 169 | .ion-android-home:before { content: "\f38f"; } 170 | 171 | .ion-android-image:before { content: "\f2e4"; } 172 | 173 | .ion-android-laptop:before { content: "\f390"; } 174 | 175 | .ion-android-list:before { content: "\f391"; } 176 | 177 | .ion-android-locate:before { content: "\f2e9"; } 178 | 179 | .ion-android-lock:before { content: "\f392"; } 180 | 181 | .ion-android-mail:before { content: "\f2eb"; } 182 | 183 | .ion-android-map:before { content: "\f393"; } 184 | 185 | .ion-android-menu:before { content: "\f394"; } 186 | 187 | .ion-android-microphone:before { content: "\f2ec"; } 188 | 189 | .ion-android-microphone-off:before { content: "\f395"; } 190 | 191 | .ion-android-more-horizontal:before { content: "\f396"; } 192 | 193 | .ion-android-more-vertical:before { content: "\f397"; } 194 | 195 | .ion-android-navigate:before { content: "\f398"; } 196 | 197 | .ion-android-notifications:before { content: "\f39b"; } 198 | 199 | .ion-android-notifications-none:before { content: "\f399"; } 200 | 201 | .ion-android-notifications-off:before { content: "\f39a"; } 202 | 203 | .ion-android-open:before { content: "\f39c"; } 204 | 205 | .ion-android-options:before { content: "\f39d"; } 206 | 207 | .ion-android-people:before { content: "\f39e"; } 208 | 209 | .ion-android-person:before { content: "\f3a0"; } 210 | 211 | .ion-android-person-add:before { content: "\f39f"; } 212 | 213 | .ion-android-phone-landscape:before { content: "\f3a1"; } 214 | 215 | .ion-android-phone-portrait:before { content: "\f3a2"; } 216 | 217 | .ion-android-pin:before { content: "\f3a3"; } 218 | 219 | .ion-android-plane:before { content: "\f3a4"; } 220 | 221 | .ion-android-playstore:before { content: "\f2f0"; } 222 | 223 | .ion-android-print:before { content: "\f3a5"; } 224 | 225 | .ion-android-radio-button-off:before { content: "\f3a6"; } 226 | 227 | .ion-android-radio-button-on:before { content: "\f3a7"; } 228 | 229 | .ion-android-refresh:before { content: "\f3a8"; } 230 | 231 | .ion-android-remove:before { content: "\f2f4"; } 232 | 233 | .ion-android-remove-circle:before { content: "\f3a9"; } 234 | 235 | .ion-android-restaurant:before { content: "\f3aa"; } 236 | 237 | .ion-android-sad:before { content: "\f3ab"; } 238 | 239 | .ion-android-search:before { content: "\f2f5"; } 240 | 241 | .ion-android-send:before { content: "\f2f6"; } 242 | 243 | .ion-android-settings:before { content: "\f2f7"; } 244 | 245 | .ion-android-share:before { content: "\f2f8"; } 246 | 247 | .ion-android-share-alt:before { content: "\f3ac"; } 248 | 249 | .ion-android-star:before { content: "\f2fc"; } 250 | 251 | .ion-android-star-half:before { content: "\f3ad"; } 252 | 253 | .ion-android-star-outline:before { content: "\f3ae"; } 254 | 255 | .ion-android-stopwatch:before { content: "\f2fd"; } 256 | 257 | .ion-android-subway:before { content: "\f3af"; } 258 | 259 | .ion-android-sunny:before { content: "\f3b0"; } 260 | 261 | .ion-android-sync:before { content: "\f3b1"; } 262 | 263 | .ion-android-textsms:before { content: "\f3b2"; } 264 | 265 | .ion-android-time:before { content: "\f3b3"; } 266 | 267 | .ion-android-train:before { content: "\f3b4"; } 268 | 269 | .ion-android-unlock:before { content: "\f3b5"; } 270 | 271 | .ion-android-upload:before { content: "\f3b6"; } 272 | 273 | .ion-android-volume-down:before { content: "\f3b7"; } 274 | 275 | .ion-android-volume-mute:before { content: "\f3b8"; } 276 | 277 | .ion-android-volume-off:before { content: "\f3b9"; } 278 | 279 | .ion-android-volume-up:before { content: "\f3ba"; } 280 | 281 | .ion-android-walk:before { content: "\f3bb"; } 282 | 283 | .ion-android-warning:before { content: "\f3bc"; } 284 | 285 | .ion-android-watch:before { content: "\f3bd"; } 286 | 287 | .ion-android-wifi:before { content: "\f305"; } 288 | 289 | .ion-aperture:before { content: "\f313"; } 290 | 291 | .ion-archive:before { content: "\f102"; } 292 | 293 | .ion-arrow-down-a:before { content: "\f103"; } 294 | 295 | .ion-arrow-down-b:before { content: "\f104"; } 296 | 297 | .ion-arrow-down-c:before { content: "\f105"; } 298 | 299 | .ion-arrow-expand:before { content: "\f25e"; } 300 | 301 | .ion-arrow-graph-down-left:before { content: "\f25f"; } 302 | 303 | .ion-arrow-graph-down-right:before { content: "\f260"; } 304 | 305 | .ion-arrow-graph-up-left:before { content: "\f261"; } 306 | 307 | .ion-arrow-graph-up-right:before { content: "\f262"; } 308 | 309 | .ion-arrow-left-a:before { content: "\f106"; } 310 | 311 | .ion-arrow-left-b:before { content: "\f107"; } 312 | 313 | .ion-arrow-left-c:before { content: "\f108"; } 314 | 315 | .ion-arrow-move:before { content: "\f263"; } 316 | 317 | .ion-arrow-resize:before { content: "\f264"; } 318 | 319 | .ion-arrow-return-left:before { content: "\f265"; } 320 | 321 | .ion-arrow-return-right:before { content: "\f266"; } 322 | 323 | .ion-arrow-right-a:before { content: "\f109"; } 324 | 325 | .ion-arrow-right-b:before { content: "\f10a"; } 326 | 327 | .ion-arrow-right-c:before { content: "\f10b"; } 328 | 329 | .ion-arrow-shrink:before { content: "\f267"; } 330 | 331 | .ion-arrow-swap:before { content: "\f268"; } 332 | 333 | .ion-arrow-up-a:before { content: "\f10c"; } 334 | 335 | .ion-arrow-up-b:before { content: "\f10d"; } 336 | 337 | .ion-arrow-up-c:before { content: "\f10e"; } 338 | 339 | .ion-asterisk:before { content: "\f314"; } 340 | 341 | .ion-at:before { content: "\f10f"; } 342 | 343 | .ion-backspace:before { content: "\f3bf"; } 344 | 345 | .ion-backspace-outline:before { content: "\f3be"; } 346 | 347 | .ion-bag:before { content: "\f110"; } 348 | 349 | .ion-battery-charging:before { content: "\f111"; } 350 | 351 | .ion-battery-empty:before { content: "\f112"; } 352 | 353 | .ion-battery-full:before { content: "\f113"; } 354 | 355 | .ion-battery-half:before { content: "\f114"; } 356 | 357 | .ion-battery-low:before { content: "\f115"; } 358 | 359 | .ion-beaker:before { content: "\f269"; } 360 | 361 | .ion-beer:before { content: "\f26a"; } 362 | 363 | .ion-bluetooth:before { content: "\f116"; } 364 | 365 | .ion-bonfire:before { content: "\f315"; } 366 | 367 | .ion-bookmark:before { content: "\f26b"; } 368 | 369 | .ion-bowtie:before { content: "\f3c0"; } 370 | 371 | .ion-briefcase:before { content: "\f26c"; } 372 | 373 | .ion-bug:before { content: "\f2be"; } 374 | 375 | .ion-calculator:before { content: "\f26d"; } 376 | 377 | .ion-calendar:before { content: "\f117"; } 378 | 379 | .ion-camera:before { content: "\f118"; } 380 | 381 | .ion-card:before { content: "\f119"; } 382 | 383 | .ion-cash:before { content: "\f316"; } 384 | 385 | .ion-chatbox:before { content: "\f11b"; } 386 | 387 | .ion-chatbox-working:before { content: "\f11a"; } 388 | 389 | .ion-chatboxes:before { content: "\f11c"; } 390 | 391 | .ion-chatbubble:before { content: "\f11e"; } 392 | 393 | .ion-chatbubble-working:before { content: "\f11d"; } 394 | 395 | .ion-chatbubbles:before { content: "\f11f"; } 396 | 397 | .ion-checkmark:before { content: "\f122"; } 398 | 399 | .ion-checkmark-circled:before { content: "\f120"; } 400 | 401 | .ion-checkmark-round:before { content: "\f121"; } 402 | 403 | .ion-chevron-down:before { content: "\f123"; } 404 | 405 | .ion-chevron-left:before { content: "\f124"; } 406 | 407 | .ion-chevron-right:before { content: "\f125"; } 408 | 409 | .ion-chevron-up:before { content: "\f126"; } 410 | 411 | .ion-clipboard:before { content: "\f127"; } 412 | 413 | .ion-clock:before { content: "\f26e"; } 414 | 415 | .ion-close:before { content: "\f12a"; } 416 | 417 | .ion-close-circled:before { content: "\f128"; } 418 | 419 | .ion-close-round:before { content: "\f129"; } 420 | 421 | .ion-closed-captioning:before { content: "\f317"; } 422 | 423 | .ion-cloud:before { content: "\f12b"; } 424 | 425 | .ion-code:before { content: "\f271"; } 426 | 427 | .ion-code-download:before { content: "\f26f"; } 428 | 429 | .ion-code-working:before { content: "\f270"; } 430 | 431 | .ion-coffee:before { content: "\f272"; } 432 | 433 | .ion-compass:before { content: "\f273"; } 434 | 435 | .ion-compose:before { content: "\f12c"; } 436 | 437 | .ion-connection-bars:before { content: "\f274"; } 438 | 439 | .ion-contrast:before { content: "\f275"; } 440 | 441 | .ion-crop:before { content: "\f3c1"; } 442 | 443 | .ion-cube:before { content: "\f318"; } 444 | 445 | .ion-disc:before { content: "\f12d"; } 446 | 447 | .ion-document:before { content: "\f12f"; } 448 | 449 | .ion-document-text:before { content: "\f12e"; } 450 | 451 | .ion-drag:before { content: "\f130"; } 452 | 453 | .ion-earth:before { content: "\f276"; } 454 | 455 | .ion-easel:before { content: "\f3c2"; } 456 | 457 | .ion-edit:before { content: "\f2bf"; } 458 | 459 | .ion-egg:before { content: "\f277"; } 460 | 461 | .ion-eject:before { content: "\f131"; } 462 | 463 | .ion-email:before { content: "\f132"; } 464 | 465 | .ion-email-unread:before { content: "\f3c3"; } 466 | 467 | .ion-erlenmeyer-flask:before { content: "\f3c5"; } 468 | 469 | .ion-erlenmeyer-flask-bubbles:before { content: "\f3c4"; } 470 | 471 | .ion-eye:before { content: "\f133"; } 472 | 473 | .ion-eye-disabled:before { content: "\f306"; } 474 | 475 | .ion-female:before { content: "\f278"; } 476 | 477 | .ion-filing:before { content: "\f134"; } 478 | 479 | .ion-film-marker:before { content: "\f135"; } 480 | 481 | .ion-fireball:before { content: "\f319"; } 482 | 483 | .ion-flag:before { content: "\f279"; } 484 | 485 | .ion-flame:before { content: "\f31a"; } 486 | 487 | .ion-flash:before { content: "\f137"; } 488 | 489 | .ion-flash-off:before { content: "\f136"; } 490 | 491 | .ion-folder:before { content: "\f139"; } 492 | 493 | .ion-fork:before { content: "\f27a"; } 494 | 495 | .ion-fork-repo:before { content: "\f2c0"; } 496 | 497 | .ion-forward:before { content: "\f13a"; } 498 | 499 | .ion-funnel:before { content: "\f31b"; } 500 | 501 | .ion-gear-a:before { content: "\f13d"; } 502 | 503 | .ion-gear-b:before { content: "\f13e"; } 504 | 505 | .ion-grid:before { content: "\f13f"; } 506 | 507 | .ion-hammer:before { content: "\f27b"; } 508 | 509 | .ion-happy:before { content: "\f31c"; } 510 | 511 | .ion-happy-outline:before { content: "\f3c6"; } 512 | 513 | .ion-headphone:before { content: "\f140"; } 514 | 515 | .ion-heart:before { content: "\f141"; } 516 | 517 | .ion-heart-broken:before { content: "\f31d"; } 518 | 519 | .ion-help:before { content: "\f143"; } 520 | 521 | .ion-help-buoy:before { content: "\f27c"; } 522 | 523 | .ion-help-circled:before { content: "\f142"; } 524 | 525 | .ion-home:before { content: "\f144"; } 526 | 527 | .ion-icecream:before { content: "\f27d"; } 528 | 529 | .ion-image:before { content: "\f147"; } 530 | 531 | .ion-images:before { content: "\f148"; } 532 | 533 | .ion-information:before { content: "\f14a"; } 534 | 535 | .ion-information-circled:before { content: "\f149"; } 536 | 537 | .ion-ionic:before { content: "\f14b"; } 538 | 539 | .ion-ios-alarm:before { content: "\f3c8"; } 540 | 541 | .ion-ios-alarm-outline:before { content: "\f3c7"; } 542 | 543 | .ion-ios-albums:before { content: "\f3ca"; } 544 | 545 | .ion-ios-albums-outline:before { content: "\f3c9"; } 546 | 547 | .ion-ios-americanfootball:before { content: "\f3cc"; } 548 | 549 | .ion-ios-americanfootball-outline:before { content: "\f3cb"; } 550 | 551 | .ion-ios-analytics:before { content: "\f3ce"; } 552 | 553 | .ion-ios-analytics-outline:before { content: "\f3cd"; } 554 | 555 | .ion-ios-arrow-back:before { content: "\f3cf"; } 556 | 557 | .ion-ios-arrow-down:before { content: "\f3d0"; } 558 | 559 | .ion-ios-arrow-forward:before { content: "\f3d1"; } 560 | 561 | .ion-ios-arrow-left:before { content: "\f3d2"; } 562 | 563 | .ion-ios-arrow-right:before { content: "\f3d3"; } 564 | 565 | .ion-ios-arrow-thin-down:before { content: "\f3d4"; } 566 | 567 | .ion-ios-arrow-thin-left:before { content: "\f3d5"; } 568 | 569 | .ion-ios-arrow-thin-right:before { content: "\f3d6"; } 570 | 571 | .ion-ios-arrow-thin-up:before { content: "\f3d7"; } 572 | 573 | .ion-ios-arrow-up:before { content: "\f3d8"; } 574 | 575 | .ion-ios-at:before { content: "\f3da"; } 576 | 577 | .ion-ios-at-outline:before { content: "\f3d9"; } 578 | 579 | .ion-ios-barcode:before { content: "\f3dc"; } 580 | 581 | .ion-ios-barcode-outline:before { content: "\f3db"; } 582 | 583 | .ion-ios-baseball:before { content: "\f3de"; } 584 | 585 | .ion-ios-baseball-outline:before { content: "\f3dd"; } 586 | 587 | .ion-ios-basketball:before { content: "\f3e0"; } 588 | 589 | .ion-ios-basketball-outline:before { content: "\f3df"; } 590 | 591 | .ion-ios-bell:before { content: "\f3e2"; } 592 | 593 | .ion-ios-bell-outline:before { content: "\f3e1"; } 594 | 595 | .ion-ios-body:before { content: "\f3e4"; } 596 | 597 | .ion-ios-body-outline:before { content: "\f3e3"; } 598 | 599 | .ion-ios-bolt:before { content: "\f3e6"; } 600 | 601 | .ion-ios-bolt-outline:before { content: "\f3e5"; } 602 | 603 | .ion-ios-book:before { content: "\f3e8"; } 604 | 605 | .ion-ios-book-outline:before { content: "\f3e7"; } 606 | 607 | .ion-ios-bookmarks:before { content: "\f3ea"; } 608 | 609 | .ion-ios-bookmarks-outline:before { content: "\f3e9"; } 610 | 611 | .ion-ios-box:before { content: "\f3ec"; } 612 | 613 | .ion-ios-box-outline:before { content: "\f3eb"; } 614 | 615 | .ion-ios-briefcase:before { content: "\f3ee"; } 616 | 617 | .ion-ios-briefcase-outline:before { content: "\f3ed"; } 618 | 619 | .ion-ios-browsers:before { content: "\f3f0"; } 620 | 621 | .ion-ios-browsers-outline:before { content: "\f3ef"; } 622 | 623 | .ion-ios-calculator:before { content: "\f3f2"; } 624 | 625 | .ion-ios-calculator-outline:before { content: "\f3f1"; } 626 | 627 | .ion-ios-calendar:before { content: "\f3f4"; } 628 | 629 | .ion-ios-calendar-outline:before { content: "\f3f3"; } 630 | 631 | .ion-ios-camera:before { content: "\f3f6"; } 632 | 633 | .ion-ios-camera-outline:before { content: "\f3f5"; } 634 | 635 | .ion-ios-cart:before { content: "\f3f8"; } 636 | 637 | .ion-ios-cart-outline:before { content: "\f3f7"; } 638 | 639 | .ion-ios-chatboxes:before { content: "\f3fa"; } 640 | 641 | .ion-ios-chatboxes-outline:before { content: "\f3f9"; } 642 | 643 | .ion-ios-chatbubble:before { content: "\f3fc"; } 644 | 645 | .ion-ios-chatbubble-outline:before { content: "\f3fb"; } 646 | 647 | .ion-ios-checkmark:before { content: "\f3ff"; } 648 | 649 | .ion-ios-checkmark-empty:before { content: "\f3fd"; } 650 | 651 | .ion-ios-checkmark-outline:before { content: "\f3fe"; } 652 | 653 | .ion-ios-circle-filled:before { content: "\f400"; } 654 | 655 | .ion-ios-circle-outline:before { content: "\f401"; } 656 | 657 | .ion-ios-clock:before { content: "\f403"; } 658 | 659 | .ion-ios-clock-outline:before { content: "\f402"; } 660 | 661 | .ion-ios-close:before { content: "\f406"; } 662 | 663 | .ion-ios-close-empty:before { content: "\f404"; } 664 | 665 | .ion-ios-close-outline:before { content: "\f405"; } 666 | 667 | .ion-ios-cloud:before { content: "\f40c"; } 668 | 669 | .ion-ios-cloud-download:before { content: "\f408"; } 670 | 671 | .ion-ios-cloud-download-outline:before { content: "\f407"; } 672 | 673 | .ion-ios-cloud-outline:before { content: "\f409"; } 674 | 675 | .ion-ios-cloud-upload:before { content: "\f40b"; } 676 | 677 | .ion-ios-cloud-upload-outline:before { content: "\f40a"; } 678 | 679 | .ion-ios-cloudy:before { content: "\f410"; } 680 | 681 | .ion-ios-cloudy-night:before { content: "\f40e"; } 682 | 683 | .ion-ios-cloudy-night-outline:before { content: "\f40d"; } 684 | 685 | .ion-ios-cloudy-outline:before { content: "\f40f"; } 686 | 687 | .ion-ios-cog:before { content: "\f412"; } 688 | 689 | .ion-ios-cog-outline:before { content: "\f411"; } 690 | 691 | .ion-ios-color-filter:before { content: "\f414"; } 692 | 693 | .ion-ios-color-filter-outline:before { content: "\f413"; } 694 | 695 | .ion-ios-color-wand:before { content: "\f416"; } 696 | 697 | .ion-ios-color-wand-outline:before { content: "\f415"; } 698 | 699 | .ion-ios-compose:before { content: "\f418"; } 700 | 701 | .ion-ios-compose-outline:before { content: "\f417"; } 702 | 703 | .ion-ios-contact:before { content: "\f41a"; } 704 | 705 | .ion-ios-contact-outline:before { content: "\f419"; } 706 | 707 | .ion-ios-copy:before { content: "\f41c"; } 708 | 709 | .ion-ios-copy-outline:before { content: "\f41b"; } 710 | 711 | .ion-ios-crop:before { content: "\f41e"; } 712 | 713 | .ion-ios-crop-strong:before { content: "\f41d"; } 714 | 715 | .ion-ios-download:before { content: "\f420"; } 716 | 717 | .ion-ios-download-outline:before { content: "\f41f"; } 718 | 719 | .ion-ios-drag:before { content: "\f421"; } 720 | 721 | .ion-ios-email:before { content: "\f423"; } 722 | 723 | .ion-ios-email-outline:before { content: "\f422"; } 724 | 725 | .ion-ios-eye:before { content: "\f425"; } 726 | 727 | .ion-ios-eye-outline:before { content: "\f424"; } 728 | 729 | .ion-ios-fastforward:before { content: "\f427"; } 730 | 731 | .ion-ios-fastforward-outline:before { content: "\f426"; } 732 | 733 | .ion-ios-filing:before { content: "\f429"; } 734 | 735 | .ion-ios-filing-outline:before { content: "\f428"; } 736 | 737 | .ion-ios-film:before { content: "\f42b"; } 738 | 739 | .ion-ios-film-outline:before { content: "\f42a"; } 740 | 741 | .ion-ios-flag:before { content: "\f42d"; } 742 | 743 | .ion-ios-flag-outline:before { content: "\f42c"; } 744 | 745 | .ion-ios-flame:before { content: "\f42f"; } 746 | 747 | .ion-ios-flame-outline:before { content: "\f42e"; } 748 | 749 | .ion-ios-flask:before { content: "\f431"; } 750 | 751 | .ion-ios-flask-outline:before { content: "\f430"; } 752 | 753 | .ion-ios-flower:before { content: "\f433"; } 754 | 755 | .ion-ios-flower-outline:before { content: "\f432"; } 756 | 757 | .ion-ios-folder:before { content: "\f435"; } 758 | 759 | .ion-ios-folder-outline:before { content: "\f434"; } 760 | 761 | .ion-ios-football:before { content: "\f437"; } 762 | 763 | .ion-ios-football-outline:before { content: "\f436"; } 764 | 765 | .ion-ios-game-controller-a:before { content: "\f439"; } 766 | 767 | .ion-ios-game-controller-a-outline:before { content: "\f438"; } 768 | 769 | .ion-ios-game-controller-b:before { content: "\f43b"; } 770 | 771 | .ion-ios-game-controller-b-outline:before { content: "\f43a"; } 772 | 773 | .ion-ios-gear:before { content: "\f43d"; } 774 | 775 | .ion-ios-gear-outline:before { content: "\f43c"; } 776 | 777 | .ion-ios-glasses:before { content: "\f43f"; } 778 | 779 | .ion-ios-glasses-outline:before { content: "\f43e"; } 780 | 781 | .ion-ios-grid-view:before { content: "\f441"; } 782 | 783 | .ion-ios-grid-view-outline:before { content: "\f440"; } 784 | 785 | .ion-ios-heart:before { content: "\f443"; } 786 | 787 | .ion-ios-heart-outline:before { content: "\f442"; } 788 | 789 | .ion-ios-help:before { content: "\f446"; } 790 | 791 | .ion-ios-help-empty:before { content: "\f444"; } 792 | 793 | .ion-ios-help-outline:before { content: "\f445"; } 794 | 795 | .ion-ios-home:before { content: "\f448"; } 796 | 797 | .ion-ios-home-outline:before { content: "\f447"; } 798 | 799 | .ion-ios-infinite:before { content: "\f44a"; } 800 | 801 | .ion-ios-infinite-outline:before { content: "\f449"; } 802 | 803 | .ion-ios-information:before { content: "\f44d"; } 804 | 805 | .ion-ios-information-empty:before { content: "\f44b"; } 806 | 807 | .ion-ios-information-outline:before { content: "\f44c"; } 808 | 809 | .ion-ios-ionic-outline:before { content: "\f44e"; } 810 | 811 | .ion-ios-keypad:before { content: "\f450"; } 812 | 813 | .ion-ios-keypad-outline:before { content: "\f44f"; } 814 | 815 | .ion-ios-lightbulb:before { content: "\f452"; } 816 | 817 | .ion-ios-lightbulb-outline:before { content: "\f451"; } 818 | 819 | .ion-ios-list:before { content: "\f454"; } 820 | 821 | .ion-ios-list-outline:before { content: "\f453"; } 822 | 823 | .ion-ios-location:before { content: "\f456"; } 824 | 825 | .ion-ios-location-outline:before { content: "\f455"; } 826 | 827 | .ion-ios-locked:before { content: "\f458"; } 828 | 829 | .ion-ios-locked-outline:before { content: "\f457"; } 830 | 831 | .ion-ios-loop:before { content: "\f45a"; } 832 | 833 | .ion-ios-loop-strong:before { content: "\f459"; } 834 | 835 | .ion-ios-medical:before { content: "\f45c"; } 836 | 837 | .ion-ios-medical-outline:before { content: "\f45b"; } 838 | 839 | .ion-ios-medkit:before { content: "\f45e"; } 840 | 841 | .ion-ios-medkit-outline:before { content: "\f45d"; } 842 | 843 | .ion-ios-mic:before { content: "\f461"; } 844 | 845 | .ion-ios-mic-off:before { content: "\f45f"; } 846 | 847 | .ion-ios-mic-outline:before { content: "\f460"; } 848 | 849 | .ion-ios-minus:before { content: "\f464"; } 850 | 851 | .ion-ios-minus-empty:before { content: "\f462"; } 852 | 853 | .ion-ios-minus-outline:before { content: "\f463"; } 854 | 855 | .ion-ios-monitor:before { content: "\f466"; } 856 | 857 | .ion-ios-monitor-outline:before { content: "\f465"; } 858 | 859 | .ion-ios-moon:before { content: "\f468"; } 860 | 861 | .ion-ios-moon-outline:before { content: "\f467"; } 862 | 863 | .ion-ios-more:before { content: "\f46a"; } 864 | 865 | .ion-ios-more-outline:before { content: "\f469"; } 866 | 867 | .ion-ios-musical-note:before { content: "\f46b"; } 868 | 869 | .ion-ios-musical-notes:before { content: "\f46c"; } 870 | 871 | .ion-ios-navigate:before { content: "\f46e"; } 872 | 873 | .ion-ios-navigate-outline:before { content: "\f46d"; } 874 | 875 | .ion-ios-nutrition:before { content: "\f470"; } 876 | 877 | .ion-ios-nutrition-outline:before { content: "\f46f"; } 878 | 879 | .ion-ios-paper:before { content: "\f472"; } 880 | 881 | .ion-ios-paper-outline:before { content: "\f471"; } 882 | 883 | .ion-ios-paperplane:before { content: "\f474"; } 884 | 885 | .ion-ios-paperplane-outline:before { content: "\f473"; } 886 | 887 | .ion-ios-partlysunny:before { content: "\f476"; } 888 | 889 | .ion-ios-partlysunny-outline:before { content: "\f475"; } 890 | 891 | .ion-ios-pause:before { content: "\f478"; } 892 | 893 | .ion-ios-pause-outline:before { content: "\f477"; } 894 | 895 | .ion-ios-paw:before { content: "\f47a"; } 896 | 897 | .ion-ios-paw-outline:before { content: "\f479"; } 898 | 899 | .ion-ios-people:before { content: "\f47c"; } 900 | 901 | .ion-ios-people-outline:before { content: "\f47b"; } 902 | 903 | .ion-ios-person:before { content: "\f47e"; } 904 | 905 | .ion-ios-person-outline:before { content: "\f47d"; } 906 | 907 | .ion-ios-personadd:before { content: "\f480"; } 908 | 909 | .ion-ios-personadd-outline:before { content: "\f47f"; } 910 | 911 | .ion-ios-photos:before { content: "\f482"; } 912 | 913 | .ion-ios-photos-outline:before { content: "\f481"; } 914 | 915 | .ion-ios-pie:before { content: "\f484"; } 916 | 917 | .ion-ios-pie-outline:before { content: "\f483"; } 918 | 919 | .ion-ios-pint:before { content: "\f486"; } 920 | 921 | .ion-ios-pint-outline:before { content: "\f485"; } 922 | 923 | .ion-ios-play:before { content: "\f488"; } 924 | 925 | .ion-ios-play-outline:before { content: "\f487"; } 926 | 927 | .ion-ios-plus:before { content: "\f48b"; } 928 | 929 | .ion-ios-plus-empty:before { content: "\f489"; } 930 | 931 | .ion-ios-plus-outline:before { content: "\f48a"; } 932 | 933 | .ion-ios-pricetag:before { content: "\f48d"; } 934 | 935 | .ion-ios-pricetag-outline:before { content: "\f48c"; } 936 | 937 | .ion-ios-pricetags:before { content: "\f48f"; } 938 | 939 | .ion-ios-pricetags-outline:before { content: "\f48e"; } 940 | 941 | .ion-ios-printer:before { content: "\f491"; } 942 | 943 | .ion-ios-printer-outline:before { content: "\f490"; } 944 | 945 | .ion-ios-pulse:before { content: "\f493"; } 946 | 947 | .ion-ios-pulse-strong:before { content: "\f492"; } 948 | 949 | .ion-ios-rainy:before { content: "\f495"; } 950 | 951 | .ion-ios-rainy-outline:before { content: "\f494"; } 952 | 953 | .ion-ios-recording:before { content: "\f497"; } 954 | 955 | .ion-ios-recording-outline:before { content: "\f496"; } 956 | 957 | .ion-ios-redo:before { content: "\f499"; } 958 | 959 | .ion-ios-redo-outline:before { content: "\f498"; } 960 | 961 | .ion-ios-refresh:before { content: "\f49c"; } 962 | 963 | .ion-ios-refresh-empty:before { content: "\f49a"; } 964 | 965 | .ion-ios-refresh-outline:before { content: "\f49b"; } 966 | 967 | .ion-ios-reload:before { content: "\f49d"; } 968 | 969 | .ion-ios-reverse-camera:before { content: "\f49f"; } 970 | 971 | .ion-ios-reverse-camera-outline:before { content: "\f49e"; } 972 | 973 | .ion-ios-rewind:before { content: "\f4a1"; } 974 | 975 | .ion-ios-rewind-outline:before { content: "\f4a0"; } 976 | 977 | .ion-ios-rose:before { content: "\f4a3"; } 978 | 979 | .ion-ios-rose-outline:before { content: "\f4a2"; } 980 | 981 | .ion-ios-search:before { content: "\f4a5"; } 982 | 983 | .ion-ios-search-strong:before { content: "\f4a4"; } 984 | 985 | .ion-ios-settings:before { content: "\f4a7"; } 986 | 987 | .ion-ios-settings-strong:before { content: "\f4a6"; } 988 | 989 | .ion-ios-shuffle:before { content: "\f4a9"; } 990 | 991 | .ion-ios-shuffle-strong:before { content: "\f4a8"; } 992 | 993 | .ion-ios-skipbackward:before { content: "\f4ab"; } 994 | 995 | .ion-ios-skipbackward-outline:before { content: "\f4aa"; } 996 | 997 | .ion-ios-skipforward:before { content: "\f4ad"; } 998 | 999 | .ion-ios-skipforward-outline:before { content: "\f4ac"; } 1000 | 1001 | .ion-ios-snowy:before { content: "\f4ae"; } 1002 | 1003 | .ion-ios-speedometer:before { content: "\f4b0"; } 1004 | 1005 | .ion-ios-speedometer-outline:before { content: "\f4af"; } 1006 | 1007 | .ion-ios-star:before { content: "\f4b3"; } 1008 | 1009 | .ion-ios-star-half:before { content: "\f4b1"; } 1010 | 1011 | .ion-ios-star-outline:before { content: "\f4b2"; } 1012 | 1013 | .ion-ios-stopwatch:before { content: "\f4b5"; } 1014 | 1015 | .ion-ios-stopwatch-outline:before { content: "\f4b4"; } 1016 | 1017 | .ion-ios-sunny:before { content: "\f4b7"; } 1018 | 1019 | .ion-ios-sunny-outline:before { content: "\f4b6"; } 1020 | 1021 | .ion-ios-telephone:before { content: "\f4b9"; } 1022 | 1023 | .ion-ios-telephone-outline:before { content: "\f4b8"; } 1024 | 1025 | .ion-ios-tennisball:before { content: "\f4bb"; } 1026 | 1027 | .ion-ios-tennisball-outline:before { content: "\f4ba"; } 1028 | 1029 | .ion-ios-thunderstorm:before { content: "\f4bd"; } 1030 | 1031 | .ion-ios-thunderstorm-outline:before { content: "\f4bc"; } 1032 | 1033 | .ion-ios-time:before { content: "\f4bf"; } 1034 | 1035 | .ion-ios-time-outline:before { content: "\f4be"; } 1036 | 1037 | .ion-ios-timer:before { content: "\f4c1"; } 1038 | 1039 | .ion-ios-timer-outline:before { content: "\f4c0"; } 1040 | 1041 | .ion-ios-toggle:before { content: "\f4c3"; } 1042 | 1043 | .ion-ios-toggle-outline:before { content: "\f4c2"; } 1044 | 1045 | .ion-ios-trash:before { content: "\f4c5"; } 1046 | 1047 | .ion-ios-trash-outline:before { content: "\f4c4"; } 1048 | 1049 | .ion-ios-undo:before { content: "\f4c7"; } 1050 | 1051 | .ion-ios-undo-outline:before { content: "\f4c6"; } 1052 | 1053 | .ion-ios-unlocked:before { content: "\f4c9"; } 1054 | 1055 | .ion-ios-unlocked-outline:before { content: "\f4c8"; } 1056 | 1057 | .ion-ios-upload:before { content: "\f4cb"; } 1058 | 1059 | .ion-ios-upload-outline:before { content: "\f4ca"; } 1060 | 1061 | .ion-ios-videocam:before { content: "\f4cd"; } 1062 | 1063 | .ion-ios-videocam-outline:before { content: "\f4cc"; } 1064 | 1065 | .ion-ios-volume-high:before { content: "\f4ce"; } 1066 | 1067 | .ion-ios-volume-low:before { content: "\f4cf"; } 1068 | 1069 | .ion-ios-wineglass:before { content: "\f4d1"; } 1070 | 1071 | .ion-ios-wineglass-outline:before { content: "\f4d0"; } 1072 | 1073 | .ion-ios-world:before { content: "\f4d3"; } 1074 | 1075 | .ion-ios-world-outline:before { content: "\f4d2"; } 1076 | 1077 | .ion-ipad:before { content: "\f1f9"; } 1078 | 1079 | .ion-iphone:before { content: "\f1fa"; } 1080 | 1081 | .ion-ipod:before { content: "\f1fb"; } 1082 | 1083 | .ion-jet:before { content: "\f295"; } 1084 | 1085 | .ion-key:before { content: "\f296"; } 1086 | 1087 | .ion-knife:before { content: "\f297"; } 1088 | 1089 | .ion-laptop:before { content: "\f1fc"; } 1090 | 1091 | .ion-leaf:before { content: "\f1fd"; } 1092 | 1093 | .ion-levels:before { content: "\f298"; } 1094 | 1095 | .ion-lightbulb:before { content: "\f299"; } 1096 | 1097 | .ion-link:before { content: "\f1fe"; } 1098 | 1099 | .ion-load-a:before { content: "\f29a"; } 1100 | 1101 | .ion-load-b:before { content: "\f29b"; } 1102 | 1103 | .ion-load-c:before { content: "\f29c"; } 1104 | 1105 | .ion-load-d:before { content: "\f29d"; } 1106 | 1107 | .ion-location:before { content: "\f1ff"; } 1108 | 1109 | .ion-lock-combination:before { content: "\f4d4"; } 1110 | 1111 | .ion-locked:before { content: "\f200"; } 1112 | 1113 | .ion-log-in:before { content: "\f29e"; } 1114 | 1115 | .ion-log-out:before { content: "\f29f"; } 1116 | 1117 | .ion-loop:before { content: "\f201"; } 1118 | 1119 | .ion-magnet:before { content: "\f2a0"; } 1120 | 1121 | .ion-male:before { content: "\f2a1"; } 1122 | 1123 | .ion-man:before { content: "\f202"; } 1124 | 1125 | .ion-map:before { content: "\f203"; } 1126 | 1127 | .ion-medkit:before { content: "\f2a2"; } 1128 | 1129 | .ion-merge:before { content: "\f33f"; } 1130 | 1131 | .ion-mic-a:before { content: "\f204"; } 1132 | 1133 | .ion-mic-b:before { content: "\f205"; } 1134 | 1135 | .ion-mic-c:before { content: "\f206"; } 1136 | 1137 | .ion-minus:before { content: "\f209"; } 1138 | 1139 | .ion-minus-circled:before { content: "\f207"; } 1140 | 1141 | .ion-minus-round:before { content: "\f208"; } 1142 | 1143 | .ion-model-s:before { content: "\f2c1"; } 1144 | 1145 | .ion-monitor:before { content: "\f20a"; } 1146 | 1147 | .ion-more:before { content: "\f20b"; } 1148 | 1149 | .ion-mouse:before { content: "\f340"; } 1150 | 1151 | .ion-music-note:before { content: "\f20c"; } 1152 | 1153 | .ion-navicon:before { content: "\f20e"; } 1154 | 1155 | .ion-navicon-round:before { content: "\f20d"; } 1156 | 1157 | .ion-navigate:before { content: "\f2a3"; } 1158 | 1159 | .ion-network:before { content: "\f341"; } 1160 | 1161 | .ion-no-smoking:before { content: "\f2c2"; } 1162 | 1163 | .ion-nuclear:before { content: "\f2a4"; } 1164 | 1165 | .ion-outlet:before { content: "\f342"; } 1166 | 1167 | .ion-paintbrush:before { content: "\f4d5"; } 1168 | 1169 | .ion-paintbucket:before { content: "\f4d6"; } 1170 | 1171 | .ion-paper-airplane:before { content: "\f2c3"; } 1172 | 1173 | .ion-paperclip:before { content: "\f20f"; } 1174 | 1175 | .ion-pause:before { content: "\f210"; } 1176 | 1177 | .ion-person:before { content: "\f213"; } 1178 | 1179 | .ion-person-add:before { content: "\f211"; } 1180 | 1181 | .ion-person-stalker:before { content: "\f212"; } 1182 | 1183 | .ion-pie-graph:before { content: "\f2a5"; } 1184 | 1185 | .ion-pin:before { content: "\f2a6"; } 1186 | 1187 | .ion-pinpoint:before { content: "\f2a7"; } 1188 | 1189 | .ion-pizza:before { content: "\f2a8"; } 1190 | 1191 | .ion-plane:before { content: "\f214"; } 1192 | 1193 | .ion-planet:before { content: "\f343"; } 1194 | 1195 | .ion-play:before { content: "\f215"; } 1196 | 1197 | .ion-playstation:before { content: "\f30a"; } 1198 | 1199 | .ion-plus:before { content: "\f218"; } 1200 | 1201 | .ion-plus-circled:before { content: "\f216"; } 1202 | 1203 | .ion-plus-round:before { content: "\f217"; } 1204 | 1205 | .ion-podium:before { content: "\f344"; } 1206 | 1207 | .ion-pound:before { content: "\f219"; } 1208 | 1209 | .ion-power:before { content: "\f2a9"; } 1210 | 1211 | .ion-pricetag:before { content: "\f2aa"; } 1212 | 1213 | .ion-pricetags:before { content: "\f2ab"; } 1214 | 1215 | .ion-printer:before { content: "\f21a"; } 1216 | 1217 | .ion-pull-request:before { content: "\f345"; } 1218 | 1219 | .ion-qr-scanner:before { content: "\f346"; } 1220 | 1221 | .ion-quote:before { content: "\f347"; } 1222 | 1223 | .ion-radio-waves:before { content: "\f2ac"; } 1224 | 1225 | .ion-record:before { content: "\f21b"; } 1226 | 1227 | .ion-refresh:before { content: "\f21c"; } 1228 | 1229 | .ion-reply:before { content: "\f21e"; } 1230 | 1231 | .ion-reply-all:before { content: "\f21d"; } 1232 | 1233 | .ion-ribbon-a:before { content: "\f348"; } 1234 | 1235 | .ion-ribbon-b:before { content: "\f349"; } 1236 | 1237 | .ion-sad:before { content: "\f34a"; } 1238 | 1239 | .ion-sad-outline:before { content: "\f4d7"; } 1240 | 1241 | .ion-scissors:before { content: "\f34b"; } 1242 | 1243 | .ion-search:before { content: "\f21f"; } 1244 | 1245 | .ion-settings:before { content: "\f2ad"; } 1246 | 1247 | .ion-share:before { content: "\f220"; } 1248 | 1249 | .ion-shuffle:before { content: "\f221"; } 1250 | 1251 | .ion-skip-backward:before { content: "\f222"; } 1252 | 1253 | .ion-skip-forward:before { content: "\f223"; } 1254 | 1255 | .ion-social-android:before { content: "\f225"; } 1256 | 1257 | .ion-social-android-outline:before { content: "\f224"; } 1258 | 1259 | .ion-social-angular:before { content: "\f4d9"; } 1260 | 1261 | .ion-social-angular-outline:before { content: "\f4d8"; } 1262 | 1263 | .ion-social-apple:before { content: "\f227"; } 1264 | 1265 | .ion-social-apple-outline:before { content: "\f226"; } 1266 | 1267 | .ion-social-bitcoin:before { content: "\f2af"; } 1268 | 1269 | .ion-social-bitcoin-outline:before { content: "\f2ae"; } 1270 | 1271 | .ion-social-buffer:before { content: "\f229"; } 1272 | 1273 | .ion-social-buffer-outline:before { content: "\f228"; } 1274 | 1275 | .ion-social-chrome:before { content: "\f4db"; } 1276 | 1277 | .ion-social-chrome-outline:before { content: "\f4da"; } 1278 | 1279 | .ion-social-codepen:before { content: "\f4dd"; } 1280 | 1281 | .ion-social-codepen-outline:before { content: "\f4dc"; } 1282 | 1283 | .ion-social-css3:before { content: "\f4df"; } 1284 | 1285 | .ion-social-css3-outline:before { content: "\f4de"; } 1286 | 1287 | .ion-social-designernews:before { content: "\f22b"; } 1288 | 1289 | .ion-social-designernews-outline:before { content: "\f22a"; } 1290 | 1291 | .ion-social-dribbble:before { content: "\f22d"; } 1292 | 1293 | .ion-social-dribbble-outline:before { content: "\f22c"; } 1294 | 1295 | .ion-social-dropbox:before { content: "\f22f"; } 1296 | 1297 | .ion-social-dropbox-outline:before { content: "\f22e"; } 1298 | 1299 | .ion-social-euro:before { content: "\f4e1"; } 1300 | 1301 | .ion-social-euro-outline:before { content: "\f4e0"; } 1302 | 1303 | .ion-social-facebook:before { content: "\f231"; } 1304 | 1305 | .ion-social-facebook-outline:before { content: "\f230"; } 1306 | 1307 | .ion-social-foursquare:before { content: "\f34d"; } 1308 | 1309 | .ion-social-foursquare-outline:before { content: "\f34c"; } 1310 | 1311 | .ion-social-freebsd-devil:before { content: "\f2c4"; } 1312 | 1313 | .ion-social-github:before { content: "\f233"; } 1314 | 1315 | .ion-social-github-outline:before { content: "\f232"; } 1316 | 1317 | .ion-social-google:before { content: "\f34f"; } 1318 | 1319 | .ion-social-google-outline:before { content: "\f34e"; } 1320 | 1321 | .ion-social-googleplus:before { content: "\f235"; } 1322 | 1323 | .ion-social-googleplus-outline:before { content: "\f234"; } 1324 | 1325 | .ion-social-hackernews:before { content: "\f237"; } 1326 | 1327 | .ion-social-hackernews-outline:before { content: "\f236"; } 1328 | 1329 | .ion-social-html5:before { content: "\f4e3"; } 1330 | 1331 | .ion-social-html5-outline:before { content: "\f4e2"; } 1332 | 1333 | .ion-social-instagram:before { content: "\f351"; } 1334 | 1335 | .ion-social-instagram-outline:before { content: "\f350"; } 1336 | 1337 | .ion-social-javascript:before { content: "\f4e5"; } 1338 | 1339 | .ion-social-javascript-outline:before { content: "\f4e4"; } 1340 | 1341 | .ion-social-linkedin:before { content: "\f239"; } 1342 | 1343 | .ion-social-linkedin-outline:before { content: "\f238"; } 1344 | 1345 | .ion-social-markdown:before { content: "\f4e6"; } 1346 | 1347 | .ion-social-nodejs:before { content: "\f4e7"; } 1348 | 1349 | .ion-social-octocat:before { content: "\f4e8"; } 1350 | 1351 | .ion-social-pinterest:before { content: "\f2b1"; } 1352 | 1353 | .ion-social-pinterest-outline:before { content: "\f2b0"; } 1354 | 1355 | .ion-social-python:before { content: "\f4e9"; } 1356 | 1357 | .ion-social-reddit:before { content: "\f23b"; } 1358 | 1359 | .ion-social-reddit-outline:before { content: "\f23a"; } 1360 | 1361 | .ion-social-rss:before { content: "\f23d"; } 1362 | 1363 | .ion-social-rss-outline:before { content: "\f23c"; } 1364 | 1365 | .ion-social-sass:before { content: "\f4ea"; } 1366 | 1367 | .ion-social-skype:before { content: "\f23f"; } 1368 | 1369 | .ion-social-skype-outline:before { content: "\f23e"; } 1370 | 1371 | .ion-social-snapchat:before { content: "\f4ec"; } 1372 | 1373 | .ion-social-snapchat-outline:before { content: "\f4eb"; } 1374 | 1375 | .ion-social-tumblr:before { content: "\f241"; } 1376 | 1377 | .ion-social-tumblr-outline:before { content: "\f240"; } 1378 | 1379 | .ion-social-tux:before { content: "\f2c5"; } 1380 | 1381 | .ion-social-twitch:before { content: "\f4ee"; } 1382 | 1383 | .ion-social-twitch-outline:before { content: "\f4ed"; } 1384 | 1385 | .ion-social-twitter:before { content: "\f243"; } 1386 | 1387 | .ion-social-twitter-outline:before { content: "\f242"; } 1388 | 1389 | .ion-social-usd:before { content: "\f353"; } 1390 | 1391 | .ion-social-usd-outline:before { content: "\f352"; } 1392 | 1393 | .ion-social-vimeo:before { content: "\f245"; } 1394 | 1395 | .ion-social-vimeo-outline:before { content: "\f244"; } 1396 | 1397 | .ion-social-whatsapp:before { content: "\f4f0"; } 1398 | 1399 | .ion-social-whatsapp-outline:before { content: "\f4ef"; } 1400 | 1401 | .ion-social-windows:before { content: "\f247"; } 1402 | 1403 | .ion-social-windows-outline:before { content: "\f246"; } 1404 | 1405 | .ion-social-wordpress:before { content: "\f249"; } 1406 | 1407 | .ion-social-wordpress-outline:before { content: "\f248"; } 1408 | 1409 | .ion-social-yahoo:before { content: "\f24b"; } 1410 | 1411 | .ion-social-yahoo-outline:before { content: "\f24a"; } 1412 | 1413 | .ion-social-yen:before { content: "\f4f2"; } 1414 | 1415 | .ion-social-yen-outline:before { content: "\f4f1"; } 1416 | 1417 | .ion-social-youtube:before { content: "\f24d"; } 1418 | 1419 | .ion-social-youtube-outline:before { content: "\f24c"; } 1420 | 1421 | .ion-soup-can:before { content: "\f4f4"; } 1422 | 1423 | .ion-soup-can-outline:before { content: "\f4f3"; } 1424 | 1425 | .ion-speakerphone:before { content: "\f2b2"; } 1426 | 1427 | .ion-speedometer:before { content: "\f2b3"; } 1428 | 1429 | .ion-spoon:before { content: "\f2b4"; } 1430 | 1431 | .ion-star:before { content: "\f24e"; } 1432 | 1433 | .ion-stats-bars:before { content: "\f2b5"; } 1434 | 1435 | .ion-steam:before { content: "\f30b"; } 1436 | 1437 | .ion-stop:before { content: "\f24f"; } 1438 | 1439 | .ion-thermometer:before { content: "\f2b6"; } 1440 | 1441 | .ion-thumbsdown:before { content: "\f250"; } 1442 | 1443 | .ion-thumbsup:before { content: "\f251"; } 1444 | 1445 | .ion-toggle:before { content: "\f355"; } 1446 | 1447 | .ion-toggle-filled:before { content: "\f354"; } 1448 | 1449 | .ion-transgender:before { content: "\f4f5"; } 1450 | 1451 | .ion-trash-a:before { content: "\f252"; } 1452 | 1453 | .ion-trash-b:before { content: "\f253"; } 1454 | 1455 | .ion-trophy:before { content: "\f356"; } 1456 | 1457 | .ion-tshirt:before { content: "\f4f7"; } 1458 | 1459 | .ion-tshirt-outline:before { content: "\f4f6"; } 1460 | 1461 | .ion-umbrella:before { content: "\f2b7"; } 1462 | 1463 | .ion-university:before { content: "\f357"; } 1464 | 1465 | .ion-unlocked:before { content: "\f254"; } 1466 | 1467 | .ion-upload:before { content: "\f255"; } 1468 | 1469 | .ion-usb:before { content: "\f2b8"; } 1470 | 1471 | .ion-videocamera:before { content: "\f256"; } 1472 | 1473 | .ion-volume-high:before { content: "\f257"; } 1474 | 1475 | .ion-volume-low:before { content: "\f258"; } 1476 | 1477 | .ion-volume-medium:before { content: "\f259"; } 1478 | 1479 | .ion-volume-mute:before { content: "\f25a"; } 1480 | 1481 | .ion-wand:before { content: "\f358"; } 1482 | 1483 | .ion-waterdrop:before { content: "\f25b"; } 1484 | 1485 | .ion-wifi:before { content: "\f25c"; } 1486 | 1487 | .ion-wineglass:before { content: "\f2b9"; } 1488 | 1489 | .ion-woman:before { content: "\f25d"; } 1490 | 1491 | .ion-wrench:before { content: "\f2ba"; } 1492 | 1493 | .ion-xbox:before { content: "\f30c"; } 1494 | -------------------------------------------------------------------------------- /app/helpers/font_ionicons/rails/icon_helper.rb: -------------------------------------------------------------------------------- 1 | module FontIonicons 2 | module Rails 3 | module IconHelper 4 | # Creates an icon tag given an icon name and possible icon 5 | # modifiers. 6 | # 7 | # Examples 8 | # 9 | # ion_icon "camera" 10 | # # => 11 | # 12 | # ion_icon "camera", text: "Take a photo" 13 | # # => Take a photo 14 | # 15 | # ion_icon "chevron-right", text: "Get started", right: true 16 | # # => Get started 17 | # 18 | # ion_icon "user", data: { id: 123 } 19 | # # => 20 | # 21 | # content_tag(:li, ion_icon("check li", text: "Bulleted list item")) 22 | # # =>
  • Bulleted list item
  • 23 | def ion_icon(names = 'flag', options = {}) 24 | classes = [] 25 | classes.concat Private.icon_names(names) 26 | classes.concat Array(options.delete(:class)) 27 | text = options.delete(:text) 28 | right_icon = options.delete(:right) 29 | icon = content_tag(:i, nil, options.merge(class: classes)) 30 | Private.icon_join(icon, text, right_icon) 31 | end 32 | 33 | module Private 34 | extend ActionView::Helpers::OutputSafetyHelper 35 | 36 | def self.icon_join(icon, text, reverse_order = false) 37 | return icon if text.blank? 38 | elements = [icon, ERB::Util.html_escape(text)] 39 | elements.reverse! if reverse_order 40 | safe_join(elements, ' ') 41 | end 42 | 43 | def self.icon_names(names = []) 44 | array_value(names).map { |n| "ion-#{n}" } 45 | end 46 | 47 | def self.array_value(value = []) 48 | value.is_a?(Array) ? value : value.to_s.split(/\s+/) 49 | end 50 | end 51 | end 52 | end 53 | end 54 | -------------------------------------------------------------------------------- /font-ionicons-rails.gemspec: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | require File.expand_path('../lib/font-ionicons-rails/version', __FILE__) 3 | 4 | Gem::Specification.new do |gem| 5 | gem.authors = ["Ricardo Emerson"] 6 | gem.email = ["ricardo_emerson@yahoo.com.br"] 7 | gem.description = "The best Ionicons gem made for Ruby on Rails and with helpers for better use." 8 | gem.summary = "an asset gemification of the ionicons icon font library" 9 | gem.homepage = "https://github.com/ricardoemerson/font-ionicons-rails" 10 | gem.licenses = ["MIT"] 11 | 12 | gem.files = Dir["{app,lib}/**/*"] + ["LICENSE", "Rakefile", "README.md"] 13 | gem.test_files = Dir["test/**/*"] 14 | gem.name = "font-ionicons-rails" 15 | gem.require_paths = ["lib"] 16 | gem.version = FontIonicons::Rails::VERSION 17 | 18 | gem.add_dependency "railties", ">= 3.2", "< 8.0" 19 | 20 | gem.add_development_dependency 'activesupport', '~> 0' 21 | gem.add_development_dependency 'sass-rails', '~> 0' 22 | 23 | gem.required_ruby_version = '>= 1.9.3' 24 | end 25 | -------------------------------------------------------------------------------- /gemfiles/rails-3.2.gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gemspec :path => "../" 4 | gem "railties", "~> 3.2.21" 5 | gem "sass-rails", "~> 3.2.6" 6 | gem "tzinfo" 7 | -------------------------------------------------------------------------------- /gemfiles/rails-4.1.gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gemspec :path => "../" 4 | gem "railties", "~> 4.1.8" 5 | gem "sass-rails", "~> 4.0.5" 6 | -------------------------------------------------------------------------------- /gemfiles/rails-4.2.gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gemspec :path => "../" 4 | gem "railties", "~> 4.2.0" 5 | gem "sass-rails", "~> 5.0.0" 6 | -------------------------------------------------------------------------------- /gemfiles/rails-master.gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gemspec :path => "../" 4 | gem "railties", :github => "rails/rails", :branch => "master" 5 | gem "sass-rails", :github => "rails/sass-rails", :branch => "master" 6 | -------------------------------------------------------------------------------- /gemfiles/sprockets-backport.gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # See: 4 | # http://blog.logdown.com/posts/171593-using-rails-4-asset-pipeline-on-rails-3-for-faster-deploy 5 | # https://github.com/rails/sprockets-rails/issues/98 6 | # https://discussion.heroku.com/t/using-the-rails-4-asset-pipeline-in-rails-3-apps-for-faster-deploys/205 7 | 8 | gemspec :path => "../" 9 | gem "railties", :github => "rails/rails", :branch => "3-2-stable" 10 | gem "sprockets", "2.2.2.backport2" 11 | gem "sprockets-rails", "2.0.0.backport1" 12 | gem "sass-rails", :github => "guilleiguaran/sass-rails", :branch => "backport" 13 | gem "tzinfo" 14 | -------------------------------------------------------------------------------- /lib/font-ionicons-rails.rb: -------------------------------------------------------------------------------- 1 | require "font-ionicons-rails/version" 2 | require "font-ionicons-rails/engine" if defined?(::Rails) 3 | -------------------------------------------------------------------------------- /lib/font-ionicons-rails/engine.rb: -------------------------------------------------------------------------------- 1 | module FontIonicons 2 | module Rails 3 | class Engine < ::Rails::Engine 4 | config.assets.precompile << %w( ionicons.eot ionicons.ttf ionicons.svg ionicons.woff ) 5 | end 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /lib/font-ionicons-rails/version.rb: -------------------------------------------------------------------------------- 1 | module FontIonicons 2 | module Rails 3 | FI_VERSION = "2.0.1" 4 | VERSION = "2.0.1.6" 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /test/dummy/.gitignore: -------------------------------------------------------------------------------- 1 | /log 2 | /tmp 3 | -------------------------------------------------------------------------------- /test/dummy/app/assets/stylesheets/sass-import.css.sass: -------------------------------------------------------------------------------- 1 | @import ionicons 2 | -------------------------------------------------------------------------------- /test/dummy/app/assets/stylesheets/scss-import.css.scss: -------------------------------------------------------------------------------- 1 | @import "ionicons"; 2 | -------------------------------------------------------------------------------- /test/dummy/app/assets/stylesheets/sprockets-require.css: -------------------------------------------------------------------------------- 1 | /* 2 | *= require ionicons 3 | */ 4 | -------------------------------------------------------------------------------- /test/dummy/app/controllers/pages_controller.rb: -------------------------------------------------------------------------------- 1 | class PagesController < ActionController::Base 2 | end 3 | -------------------------------------------------------------------------------- /test/dummy/app/views/pages/icons.html.erb: -------------------------------------------------------------------------------- 1 | <%= ion_icon "flag" %> 2 | -------------------------------------------------------------------------------- /test/dummy/config.ru: -------------------------------------------------------------------------------- 1 | # This file is used by Rack-based servers to start the application. 2 | 3 | require ::File.expand_path('../config/environment', __FILE__) 4 | run Dummy::Application 5 | -------------------------------------------------------------------------------- /test/dummy/config/application.rb: -------------------------------------------------------------------------------- 1 | require File.expand_path('../boot', __FILE__) 2 | 3 | # require "rails/all" 4 | require "sprockets/railtie" 5 | 6 | Bundler.require(:default, :development) 7 | 8 | module Dummy 9 | class Application < Rails::Application 10 | config.encoding = "utf-8" 11 | config.assets.enabled = true 12 | config.assets.version = '1.0' 13 | 14 | # replacement for environments/*.rb 15 | config.active_support.deprecation = :stderr 16 | config.eager_load = false 17 | config.active_support.test_order = :random rescue nil 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /test/dummy/config/boot.rb: -------------------------------------------------------------------------------- 1 | require 'rubygems' 2 | gemfile = File.expand_path('../../../../Gemfile', __FILE__) 3 | 4 | if File.exist?(gemfile) 5 | ENV['BUNDLE_GEMFILE'] = gemfile 6 | require 'bundler' 7 | Bundler.setup 8 | end 9 | 10 | $:.unshift File.expand_path('../../../../lib', __FILE__) -------------------------------------------------------------------------------- /test/dummy/config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the rails application 2 | require File.expand_path('../application', __FILE__) 3 | 4 | # Initialize the rails application 5 | Dummy::Application.initialize! 6 | -------------------------------------------------------------------------------- /test/dummy/config/initializers/secret_token.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Your secret key for verifying the integrity of signed cookies. 4 | # If you change this key, all old signed cookies will become invalid! 5 | # Make sure the secret is at least 30 characters and all random, 6 | # no regular words or you'll be exposed to dictionary attacks. 7 | Dummy::Application.config.secret_token = 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef' 8 | Dummy::Application.config.secret_key_base = 'deadbeef' if Dummy::Application.config.respond_to?(:secret_key_base) 9 | -------------------------------------------------------------------------------- /test/dummy/config/routes.rb: -------------------------------------------------------------------------------- 1 | Dummy::Application.routes.draw do 2 | get "/icons", :to => "pages#icons" 3 | end 4 | -------------------------------------------------------------------------------- /test/font-ionicons_rails_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class FontIoniconsRailsTest < ActionDispatch::IntegrationTest 4 | teardown { clean_sprockets_cache } 5 | 6 | test 'engine is loaded' do 7 | assert_equal ::Rails::Engine, FontIonicons::Rails::Engine.superclass 8 | end 9 | 10 | test 'fonts are served' do 11 | get '/assets/ionicons.eot' 12 | assert_response :success 13 | get '/assets/ionicons.woff' 14 | assert_response :success 15 | get '/assets/ionicons.ttf' 16 | assert_response :success 17 | get '/assets/ionicons.svg' 18 | assert_response :success 19 | end 20 | 21 | test 'stylesheets are served' do 22 | get '/assets/ionicons.css' 23 | assert_ionicons(response) 24 | end 25 | 26 | test 'stylesheets contain asset pipeline references to fonts' do 27 | get '/assets/ionicons.css' 28 | v = FontIonicons::Rails::FI_VERSION 29 | assert_match "/assets/ionicons.eot?v=#{v}", response.body 30 | assert_match "/assets/ionicons.eot?#iefix&v=#{v}", response.body 31 | assert_match "/assets/ionicons.woff?v=#{v}", response.body 32 | assert_match "/assets/ionicons.ttf?v=#{v}", response.body 33 | assert_match "/assets/ionicons.svg?v=#{v}#ioniconsregular", response.body 34 | end 35 | 36 | test 'stylesheet is available in a css sprockets require' do 37 | get '/assets/sprockets-require.css' 38 | assert_ionicons(response) 39 | end 40 | 41 | test 'stylesheet is available in a sass import' do 42 | get '/assets/sass-import.css' 43 | assert_ionicons(response) 44 | end 45 | 46 | test 'stylesheet is available in a scss import' do 47 | get '/assets/scss-import.css' 48 | assert_ionicons(response) 49 | end 50 | 51 | test 'helpers should be available in the view' do 52 | get '/icons' 53 | assert_response :success 54 | assert_select 'i.ion-flag' 55 | end 56 | 57 | private 58 | 59 | def clean_sprockets_cache 60 | FileUtils.rm_rf File.expand_path('../dummy/tmp', __FILE__) 61 | end 62 | 63 | def assert_ionicons(response) 64 | assert_response :success 65 | assert_match(/font-family:\s*'Ionicons';/, response.body) 66 | end 67 | end 68 | -------------------------------------------------------------------------------- /test/icon_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class FontIonicons::Rails::IconHelperTest < ActionView::TestCase 4 | test '#ion_icon with no args should render a flag icon' do 5 | assert_icon i('ion-flag') 6 | end 7 | 8 | test '#ion_icon should render different individual icons' do 9 | assert_icon i('ion-flag'), 'flag' 10 | assert_icon i('ion-camera-retro'), 'camera-retro' 11 | assert_icon i('ion-cog'), 'cog' 12 | assert_icon i('ion-github'), 'github' 13 | end 14 | 15 | test '#ion_icon should incorporate additional class styles' do 16 | assert_icon i('ion-flag pull-right'), 'flag', class: 'pull-right' 17 | assert_icon i('ion-check pull-right special'), 'check', class: ['pull-right', 'special'] 18 | end 19 | 20 | test '#ion_icon should incorporate a text suffix' do 21 | assert_icon "#{i('ion-camera-retro')} Take a photo", 'camera-retro', text: 'Take a photo' 22 | end 23 | 24 | test '#ion_icon should be able to put the icon on the right' do 25 | assert_icon "Submit #{i('ion-chevron-right')}", 'chevron-right', text: 'Submit', right: true 26 | end 27 | 28 | test '#ion_icon should html escape text' do 29 | assert_icon "#{i('ion-camera-retro')} <script></script>", 'camera-retro', text: '' 30 | end 31 | 32 | test '#ion_icon should not html escape safe text' do 33 | assert_icon "#{i('ion-camera-retro')} ", 'camera-retro', text: ''.html_safe 34 | end 35 | 36 | test '#ion_icon should pull it all together' do 37 | assert_icon "#{i('ion-camera-retro pull-right')} Take a photo", 'camera-retro', text: 'Take a photo', class: 'pull-right' 38 | end 39 | 40 | test '#ion_icon should pass all other options through' do 41 | assert_icon %(), 'user', data: { id: 123 } 42 | end 43 | 44 | private 45 | 46 | def assert_icon(expected, *args) 47 | message = "`ion_icon(#{args.inspect[1...-1]})` should return `#{expected}`" 48 | assert_dom_equal expected, ion_icon(*args), message 49 | end 50 | 51 | def i(classes) 52 | %() 53 | end 54 | end 55 | -------------------------------------------------------------------------------- /test/test_helper.rb: -------------------------------------------------------------------------------- 1 | # Configure Rails Environment 2 | ENV["RAILS_ENV"] = "test" 3 | 4 | require File.expand_path("../dummy/config/environment.rb", __FILE__) 5 | require "rails/test_help" 6 | 7 | Rails.backtrace_cleaner.remove_silencers! 8 | --------------------------------------------------------------------------------