Repository: itsjavi/fontawesome-iconpicker Branch: master Commit: 652bb8e4391d Files: 25 Total size: 299.3 KB Directory structure: gitextract_w0r1qhp1/ ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── .npmignore ├── .travis.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Gruntfile.js ├── LICENSE ├── README.md ├── composer.json ├── dist/ │ ├── css/ │ │ └── fontawesome-iconpicker.css │ └── js/ │ └── fontawesome-iconpicker.js ├── extension/ │ ├── LICENSE │ ├── manifest.json │ ├── popup.html │ ├── popup.js │ └── screenshot.psd ├── index.html ├── package.json └── src/ ├── icon.psd ├── js/ │ ├── iconpicker.js │ └── jquery.ui.pos.js └── less/ ├── iconpicker.less ├── popovers.less └── variables.less ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms issuehunt: farbelous custom: https://www.paypal.me/metaunicorn/20 ================================================ FILE: .gitignore ================================================ *~ .DS_Store .DS_Store* ehthumbs.db Thumbs.db *.log /ignore/ /ignored/ /node_modules/ /bower_components/ /nbproject/ .idea/ prod/ .icons.temp *.zip ================================================ FILE: .npmignore ================================================ extension *.zip *.psd composer.json .* node_modules CODE_OF_CONDUCT.md ================================================ FILE: .travis.yml ================================================ language: node_js node_js: - "0.10" before_script: - npm install -g grunt-cli script: grunt --verbose --force ================================================ FILE: CODE_OF_CONDUCT.md ================================================ # Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team members through their social media sites or at _git @ itsjavi.com_. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] [homepage]: http://contributor-covenant.org [version]: http://contributor-covenant.org/version/1/4/ ================================================ FILE: CONTRIBUTING.md ================================================ ## Submitting issues For feature requests, suggestions or ideas, add `[SUGGESTION]` before the title of the issue, for anything else follow the following guidelines. ### Guidelines - Try to reproduce your problem in a separated environment, like in JSFiddle, [here is a template for it](http://jsfiddle.net/itsjavi/6aLndfgq/), that you can fork in the same page. - Before posting your issue, consider adding this information: * Expected behaviour: what should happen? * Actual behaviour: what happens instead? * Your context: Where it happens? In which browser and version (if applicable)? * Plugin version (and/or commit reference). * jQuery version you use and list of all other plugins/scripts you are using with this one and may cause some conflict. * A link to your JSFiddle (or similar tool) demo where you reproduced the problem ## Contributing to Source Code Thanks for wanting to contribute source code to this project. That's great! - Before starting developing the plugin, you need to run `npm install` and `bower install` inside the plugin folder. - Before your commits run always `grunt` inside the plugin folders, to update the dist files (don't modify them manually). - Do not change the plugin coding style. - Check that the index.html demos aren't broken (modify if necessary). - Test your code at least in Chrome, Firefox and IE >= 10. ================================================ FILE: Gruntfile.js ================================================ 'use strict'; const FONTAWESOME_VERSION = '5.5.0'; const jsBanner = `/*! * Font Awesome Icon Picker * https://farbelous.github.io/fontawesome-iconpicker/ * * @author Javi Aguilar, itsjavi.com * @license MIT License * @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE */ `; module.exports = function(grunt) { const parsedIconPicker = 'prod/src/js/iconpicker.js'; const tempIconsFile = '.icons.temp'; grunt.initConfig({ download: { somefile: { src: [ 'https://raw.githubusercontent.com/FortAwesome/Font-Awesome/' + FONTAWESOME_VERSION + '/advanced-options/metadata/icons.yml' ], dest: tempIconsFile }, }, yaml: { getIcons: { options: { space: 2, disableDest: true, middleware: function(response, sourceJSON, src, dest) { let targetJSON = { icons: [] }; sourceJSON = JSON.parse(sourceJSON); Object.keys(sourceJSON).forEach(function(key) { let ele = sourceJSON[key]; let icon = 'fa-' + key; ele.styles.forEach(function(style) { style = style.toLowerCase(); if (style.startsWith('brand')) { targetJSON.icons.push({ title: 'fab ' + icon, searchTerms: ele.search.terms }); } else if (style.startsWith('solid')) { targetJSON.icons.push({ title: 'fas ' + icon, searchTerms: ele.search.terms }); } else if (style.startsWith('regular')) { targetJSON.icons.push({ title: 'far ' + icon, searchTerms: ele.search.terms }); } else if (style.startsWith('light')) { targetJSON.icons.push({ title: 'fal ' + icon, searchTerms: ele.search.terms }); } }); }); grunt.file.write(dest, JSON.stringify(targetJSON)); } }, files: [{ expand: false, src: [tempIconsFile], dest: tempIconsFile }] }, }, 'string-replace': { dist: { files: { 'prod/': ['src/js/iconpicker.js'], }, options: { replacements: [{ pattern: '//###REPLACE-WITH-FONT-AWESOME-5-FONTS###', replacement: "<%= grunt.file.read('" + tempIconsFile + "') %>" }] } } }, less: { dist: { options: { compile: true, compress: false }, files: { 'dist/css/fontawesome-iconpicker.css': [ 'src/less/iconpicker.less' ] } }, distMin: { options: { compile: true, compress: true }, files: { 'dist/css/fontawesome-iconpicker.min.css': [ 'src/less/iconpicker.less' ] } } }, jsbeautifier: { files: ['Gruntfile.js', 'src/js/*.js', parsedIconPicker] }, uglify: { distMin: { options: { compress: {}, beautify: false, comments: 'some', banner: jsBanner }, files: { 'dist/js/fontawesome-iconpicker.min.js': [ 'src/js/jquery.ui.pos.js', parsedIconPicker ] } }, dist: { options: { compress: false, beautify: true, comments: 'some', banner: jsBanner }, files: { 'dist/js/fontawesome-iconpicker.js': [ 'src/js/jquery.ui.pos.js', parsedIconPicker ] } } }, watch: { less: { files: [ 'src/less/*.less' ], tasks: ['less'] }, js: { files: [ 'src/js/*.js' ], tasks: ['uglify'] } }, clean: { dist: [ 'dist/css', 'dist/js/*.js' ], temp: [ tempIconsFile, 'prod/' ] } }); // Load tasks grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-less'); grunt.loadNpmTasks('grunt-jsbeautifier'); grunt.loadNpmTasks('grunt-yaml'); grunt.loadNpmTasks('grunt-http-download'); grunt.loadNpmTasks('grunt-string-replace'); // Register tasks grunt.registerTask('default', [ 'download', 'yaml', 'string-replace', 'clean:dist', 'less', 'jsbeautifier', 'uglify', 'clean:temp' ]); grunt.registerTask('dev', [ 'watch' ]); }; ================================================ FILE: LICENSE ================================================ The MIT License (MIT) Copyright (c) 2016 Javi Aguilar Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ fontawesome-iconpicker ======================== [![npm](https://img.shields.io/npm/v/fontawesome-iconpicker.svg?style=flat-square)](https://www.npmjs.com/package/fontawesome-iconpicker) Font Awesome Icon Picker is a fully customizable plugin for Twitter Bootstrap, with a powerful base API, based on [bootstrap-popover-picker](https://itsjavi.github.io/bootstrap-popover-picker/) You can use Font Awesome 5 or another font icon set of your choice (icon list is totally customizable). [View demos](https://itsjavi.github.io/fontawesome-iconpicker/) ## Instantiation You can call the plugin in several ways: ```javascript // Create instance if not exists (returns a jQuery object) $('.my').iconpicker(); $('.my').iconpicker({ /*options*/ }); // you can also specify options via data-* attributes // For the first matched element, access to a plugin property value $('.my').data('iconpicker').iconpickerProperty; // For the first matched element, call a plugin instance method with the given args $('.my').data('iconpicker').iconpickerMethod('methodArg1', 'methodArg2' /* , other args */); // Call and apply a plugin method to EACH matched element. $.iconpicker.batch('.my', 'iconpickerMethod', 'methodArg1', 'methodArg2' /* , other args */); -> ``` ## Triggered Events All of them exposes the plugin instance through event.iconpickerInstance In order of call: * iconpickerCreate * iconpickerCreated * iconpickerShow * iconpickerShown * iconpickerSelect (also exposes event.iconpickerItem and event.iconpickerValue) * iconpickerUpdate * iconpickerInvalid (also exposes event.iconpickerValue) * iconpickerSetValue (also exposes event.iconpickerValue) * iconpickerSetSourceValue (also exposes event.iconpickerValue) * iconpickerUpdated * iconpickerSelected (also exposes event.iconpickerItem and event.iconpickerValue) * iconpickerHide * iconpickerHidden * iconpickerDestroy * iconpickerDestroyed ```javascript // Bind iconpicker events to the element $('.my').on('iconpickerSelected', function(event){ /* event.iconpickerValue */ }); ``` ## Popover placement extensions This plugin comes with more placement options than the original Bootstrap Popover. Here are all the possibilities in detail: 1 2 3 4 5 G 6 F 7 E 8 D C B A 9 0. inline (no placement, display as inline-block) 1. topLeftCorner 2. topLeft 3. top (center) 4. topRight 5. topRightCorner 6. rightTop 7. right (center) 8. rightBottom 9. bottomRightCorner A. bottomRight B. bottom (center) C. bottomLeft D. bottomLeftCorner E. leftBottom F. left (center) G. leftTop ## Available options ```javascript var options = { title: false, // Popover title (optional) only if specified in the template selected: false, // use this value as the current item and ignore the original defaultValue: false, // use this value as the current item if input or element value is empty placement: 'bottom', // (has some issues with auto and CSS). auto, top, bottom, left, right collision: 'none', // If true, the popover will be repositioned to another position when collapses with the window borders animation: true, // fade in/out on show/hide ? //hide iconpicker automatically when a value is picked. it is ignored if mustAccept is not false and the accept button is visible hideOnSelect: false, showFooter: false, searchInFooter: false, // If true, the search will be added to the footer instead of the title mustAccept: false, // only applicable when there's an iconpicker-btn-accept button in the popover footer selectedCustomClass: 'bg-primary', // Appends this class when to the selected item icons: [], // list of icon objects [{title:String, searchTerms:String}]. By default, all Font Awesome icons are included. fullClassFormatter: function(val) { return 'fa ' + val; }, input: 'input,.iconpicker-input', // children input selector inputSearch: false, // use the input as a search box too? container: false, // Appends the popover to a specific element. If not set, the selected element or element parent is used component: '.input-group-addon,.iconpicker-component', // children component jQuery selector or object, relative to the container element // Plugin templates: templates: { popover: '
' + '
', footer: '', buttons: '' + ' ', search: '', iconpicker: '
', iconpickerItem: '', } }; ``` ================================================ FILE: composer.json ================================================ { "name": "itsjavi/fontawesome-iconpicker", "description": "Font Awesome Icon Picker plugin for Twitter Bootstrap", "keywords": [ "bootstrap", "fontawesome", "iconpicker", "popover", "picker" ], "homepage": "https://farbelous.github.io/fontawesome-iconpicker/", "minimum-stability": "stable", "repositories": [{ "type": "vcs", "url": "https://github.com/farbelous/fontawesome-iconpicker" }], "license": "MIT", "authors": [ { "name": "Javi Aguilar", "role": "Developer" } ], "support": { "issues": "https://github.com/farbelous/fontawesome-iconpicker/issues", "source": "https://github.com/farbelous/fontawesome-iconpicker" } } ================================================ FILE: dist/css/fontawesome-iconpicker.css ================================================ /*! * Font Awesome Icon Picker * https://farbelous.github.io/fontawesome-iconpicker/ * * @author Javi Aguilar, itsjavi.com * @license MIT License * @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE */ .iconpicker-popover.popover { position: absolute; top: 0; left: 0; display: none; max-width: none; padding: 1px; text-align: left; width: 234px; background: #f7f7f7; z-index: 9; } .iconpicker-popover.popover.top, .iconpicker-popover.popover.topLeftCorner, .iconpicker-popover.popover.topLeft, .iconpicker-popover.popover.topRight, .iconpicker-popover.popover.topRightCorner { margin-top: -10px; } .iconpicker-popover.popover.right, .iconpicker-popover.popover.rightTop, .iconpicker-popover.popover.rightBottom { margin-left: 10px; } .iconpicker-popover.popover.bottom, .iconpicker-popover.popover.bottomRightCorner, .iconpicker-popover.popover.bottomRight, .iconpicker-popover.popover.bottomLeft, .iconpicker-popover.popover.bottomLeftCorner { margin-top: 10px; } .iconpicker-popover.popover.left, .iconpicker-popover.popover.leftBottom, .iconpicker-popover.popover.leftTop { margin-left: -10px; } .iconpicker-popover.popover.inline { margin: 0 0 12px 0; position: relative; display: inline-block; opacity: 1; top: auto; left: auto; bottom: auto; right: auto; max-width: 100%; box-shadow: none; z-index: auto; vertical-align: top; } .iconpicker-popover.popover.inline > .arrow { display: none; } .dropdown-menu .iconpicker-popover.inline { margin: 0; border: none; } .dropdown-menu.iconpicker-container { padding: 0; } .iconpicker-popover.popover .popover-title { padding: 12px; font-size: 13px; line-height: 15px; border-bottom: 1px solid #ebebeb; background-color: #f7f7f7; } .iconpicker-popover.popover .popover-title input[type=search].iconpicker-search { margin: 0 0 2px 0; } .iconpicker-popover.popover .popover-title-text ~ input[type=search].iconpicker-search { margin-top: 12px; } .iconpicker-popover.popover .popover-content { padding: 0px; text-align: center; } .iconpicker-popover .popover-footer { float: none; clear: both; padding: 12px; text-align: right; margin: 0; border-top: 1px solid #ebebeb; background-color: #f7f7f7; } .iconpicker-popover .popover-footer:before, .iconpicker-popover .popover-footer:after { content: " "; display: table; } .iconpicker-popover .popover-footer:after { clear: both; } .iconpicker-popover .popover-footer .iconpicker-btn { margin-left: 10px; } .iconpicker-popover .popover-footer input[type=search].iconpicker-search { /*width:auto; float:left;*/ margin-bottom: 12px; } .iconpicker-popover.popover > .arrow, .iconpicker-popover.popover > .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .iconpicker-popover.popover > .arrow { border-width: 11px; } .iconpicker-popover.popover > .arrow:after { border-width: 10px; content: ""; } .iconpicker-popover.popover.top > .arrow, .iconpicker-popover.popover.topLeft > .arrow, .iconpicker-popover.popover.topRight > .arrow { left: 50%; margin-left: -11px; border-bottom-width: 0; border-top-color: #999999; border-top-color: rgba(0, 0, 0, 0.25); bottom: -11px; } .iconpicker-popover.popover.top > .arrow:after, .iconpicker-popover.popover.topLeft > .arrow:after, .iconpicker-popover.popover.topRight > .arrow:after { content: " "; bottom: 1px; margin-left: -10px; border-bottom-width: 0; border-top-color: #fff; } .iconpicker-popover.popover.topLeft > .arrow { left: 8px; margin-left: 0; } .iconpicker-popover.popover.topRight > .arrow { left: auto; right: 8px; margin-left: 0; } .iconpicker-popover.popover.right > .arrow, .iconpicker-popover.popover.rightTop > .arrow, .iconpicker-popover.popover.rightBottom > .arrow { top: 50%; left: -11px; margin-top: -11px; border-left-width: 0; border-right-color: #999999; border-right-color: rgba(0, 0, 0, 0.25); } .iconpicker-popover.popover.right > .arrow:after, .iconpicker-popover.popover.rightTop > .arrow:after, .iconpicker-popover.popover.rightBottom > .arrow:after { content: " "; left: 1px; bottom: -10px; border-left-width: 0; border-right-color: #fff; } .iconpicker-popover.popover.rightTop > .arrow { top: auto; bottom: 8px; margin-top: 0; } .iconpicker-popover.popover.rightBottom > .arrow { top: 8px; margin-top: 0; } .iconpicker-popover.popover.bottom > .arrow, .iconpicker-popover.popover.bottomRight > .arrow, .iconpicker-popover.popover.bottomLeft > .arrow { left: 50%; margin-left: -11px; border-top-width: 0; border-bottom-color: #999999; border-bottom-color: rgba(0, 0, 0, 0.25); top: -11px; } .iconpicker-popover.popover.bottom > .arrow:after, .iconpicker-popover.popover.bottomRight > .arrow:after, .iconpicker-popover.popover.bottomLeft > .arrow:after { content: " "; top: 1px; margin-left: -10px; border-top-width: 0; border-bottom-color: #fff; } .iconpicker-popover.popover.bottomLeft > .arrow { left: 8px; margin-left: 0; } .iconpicker-popover.popover.bottomRight > .arrow { left: auto; right: 8px; margin-left: 0; } .iconpicker-popover.popover.left > .arrow, .iconpicker-popover.popover.leftBottom > .arrow, .iconpicker-popover.popover.leftTop > .arrow { top: 50%; right: -11px; margin-top: -11px; border-right-width: 0; border-left-color: #999999; border-left-color: rgba(0, 0, 0, 0.25); } .iconpicker-popover.popover.left > .arrow:after, .iconpicker-popover.popover.leftBottom > .arrow:after, .iconpicker-popover.popover.leftTop > .arrow:after { content: " "; right: 1px; border-right-width: 0; border-left-color: #fff; bottom: -10px; } .iconpicker-popover.popover.leftBottom > .arrow { top: 8px; margin-top: 0; } .iconpicker-popover.popover.leftTop > .arrow { top: auto; bottom: 8px; margin-top: 0; } .iconpicker { position: relative; text-align: left; text-shadow: none; line-height: 0; display: block; margin: 0; overflow: hidden; } .iconpicker * { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; position: relative; } .iconpicker:before, .iconpicker:after { content: " "; display: table; } .iconpicker:after { clear: both; } .iconpicker .iconpicker-items { position: relative; clear: both; float: none; padding: 12px 0 0 12px; background: #fff; margin: 0; overflow: hidden; overflow-y: auto; min-height: 49px; max-height: 246px; } .iconpicker .iconpicker-items:before, .iconpicker .iconpicker-items:after { content: " "; display: table; } .iconpicker .iconpicker-items:after { clear: both; } .iconpicker .iconpicker-item { float: left; width: 14px; height: 14px; padding: 12px; margin: 0 12px 12px 0; text-align: center; cursor: pointer; border-radius: 3px; font-size: 14px; box-shadow: 0 0 0 1px #ddd; color: inherit; /*&:nth-child(4n+4) { margin-right: 0; } &:nth-last-child(-n+4) { margin-bottom: 0; }*/ } .iconpicker .iconpicker-item:hover:not(.iconpicker-selected) { background-color: #eee; } .iconpicker .iconpicker-item.iconpicker-selected { box-shadow: none; color: #fff; background: #000; } .iconpicker-component { cursor: pointer; } ================================================ FILE: dist/js/fontawesome-iconpicker.js ================================================ /*! * Font Awesome Icon Picker * https://farbelous.github.io/fontawesome-iconpicker/ * * @author Javi Aguilar, itsjavi.com * @license MIT License * @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE */ (function(e) { if (typeof define === "function" && define.amd) { define([ "jquery" ], e); } else { e(jQuery); } })(function(j) { j.ui = j.ui || {}; var e = j.ui.version = "1.12.1"; (function() { var r, y = Math.max, x = Math.abs, s = /left|center|right/, i = /top|center|bottom/, f = /[\+\-]\d+(\.[\d]+)?%?/, l = /^\w+/, c = /%$/, a = j.fn.pos; function q(e, a, t) { return [ parseFloat(e[0]) * (c.test(e[0]) ? a / 100 : 1), parseFloat(e[1]) * (c.test(e[1]) ? t / 100 : 1) ]; } function C(e, a) { return parseInt(j.css(e, a), 10) || 0; } function t(e) { var a = e[0]; if (a.nodeType === 9) { return { width: e.width(), height: e.height(), offset: { top: 0, left: 0 } }; } if (j.isWindow(a)) { return { width: e.width(), height: e.height(), offset: { top: e.scrollTop(), left: e.scrollLeft() } }; } if (a.preventDefault) { return { width: 0, height: 0, offset: { top: a.pageY, left: a.pageX } }; } return { width: e.outerWidth(), height: e.outerHeight(), offset: e.offset() }; } j.pos = { scrollbarWidth: function() { if (r !== undefined) { return r; } var e, a, t = j("
" + "
"), s = t.children()[0]; j("body").append(t); e = s.offsetWidth; t.css("overflow", "scroll"); a = s.offsetWidth; if (e === a) { a = t[0].clientWidth; } t.remove(); return r = e - a; }, getScrollInfo: function(e) { var a = e.isWindow || e.isDocument ? "" : e.element.css("overflow-x"), t = e.isWindow || e.isDocument ? "" : e.element.css("overflow-y"), s = a === "scroll" || a === "auto" && e.width < e.element[0].scrollWidth, r = t === "scroll" || t === "auto" && e.height < e.element[0].scrollHeight; return { width: r ? j.pos.scrollbarWidth() : 0, height: s ? j.pos.scrollbarWidth() : 0 }; }, getWithinInfo: function(e) { var a = j(e || window), t = j.isWindow(a[0]), s = !!a[0] && a[0].nodeType === 9, r = !t && !s; return { element: a, isWindow: t, isDocument: s, offset: r ? j(e).offset() : { left: 0, top: 0 }, scrollLeft: a.scrollLeft(), scrollTop: a.scrollTop(), width: a.outerWidth(), height: a.outerHeight() }; } }; j.fn.pos = function(h) { if (!h || !h.of) { return a.apply(this, arguments); } h = j.extend({}, h); var m, p, d, u, T, e, g = j(h.of), b = j.pos.getWithinInfo(h.within), k = j.pos.getScrollInfo(b), w = (h.collision || "flip").split(" "), v = {}; e = t(g); if (g[0].preventDefault) { h.at = "left top"; } p = e.width; d = e.height; u = e.offset; T = j.extend({}, u); j.each([ "my", "at" ], function() { var e = (h[this] || "").split(" "), a, t; if (e.length === 1) { e = s.test(e[0]) ? e.concat([ "center" ]) : i.test(e[0]) ? [ "center" ].concat(e) : [ "center", "center" ]; } e[0] = s.test(e[0]) ? e[0] : "center"; e[1] = i.test(e[1]) ? e[1] : "center"; a = f.exec(e[0]); t = f.exec(e[1]); v[this] = [ a ? a[0] : 0, t ? t[0] : 0 ]; h[this] = [ l.exec(e[0])[0], l.exec(e[1])[0] ]; }); if (w.length === 1) { w[1] = w[0]; } if (h.at[0] === "right") { T.left += p; } else if (h.at[0] === "center") { T.left += p / 2; } if (h.at[1] === "bottom") { T.top += d; } else if (h.at[1] === "center") { T.top += d / 2; } m = q(v.at, p, d); T.left += m[0]; T.top += m[1]; return this.each(function() { var t, e, f = j(this), l = f.outerWidth(), c = f.outerHeight(), a = C(this, "marginLeft"), s = C(this, "marginTop"), r = l + a + C(this, "marginRight") + k.width, i = c + s + C(this, "marginBottom") + k.height, o = j.extend({}, T), n = q(v.my, f.outerWidth(), f.outerHeight()); if (h.my[0] === "right") { o.left -= l; } else if (h.my[0] === "center") { o.left -= l / 2; } if (h.my[1] === "bottom") { o.top -= c; } else if (h.my[1] === "center") { o.top -= c / 2; } o.left += n[0]; o.top += n[1]; t = { marginLeft: a, marginTop: s }; j.each([ "left", "top" ], function(e, a) { if (j.ui.pos[w[e]]) { j.ui.pos[w[e]][a](o, { targetWidth: p, targetHeight: d, elemWidth: l, elemHeight: c, collisionPosition: t, collisionWidth: r, collisionHeight: i, offset: [ m[0] + n[0], m[1] + n[1] ], my: h.my, at: h.at, within: b, elem: f }); } }); if (h.using) { e = function(e) { var a = u.left - o.left, t = a + p - l, s = u.top - o.top, r = s + d - c, i = { target: { element: g, left: u.left, top: u.top, width: p, height: d }, element: { element: f, left: o.left, top: o.top, width: l, height: c }, horizontal: t < 0 ? "left" : a > 0 ? "right" : "center", vertical: r < 0 ? "top" : s > 0 ? "bottom" : "middle" }; if (p < l && x(a + t) < p) { i.horizontal = "center"; } if (d < c && x(s + r) < d) { i.vertical = "middle"; } if (y(x(a), x(t)) > y(x(s), x(r))) { i.important = "horizontal"; } else { i.important = "vertical"; } h.using.call(this, e, i); }; } f.offset(j.extend(o, { using: e })); }); }; j.ui.pos = { _trigger: function(e, a, t, s) { if (a.elem) { a.elem.trigger({ type: t, position: e, positionData: a, triggered: s }); } }, fit: { left: function(e, a) { j.ui.pos._trigger(e, a, "posCollide", "fitLeft"); var t = a.within, s = t.isWindow ? t.scrollLeft : t.offset.left, r = t.width, i = e.left - a.collisionPosition.marginLeft, f = s - i, l = i + a.collisionWidth - r - s, c; if (a.collisionWidth > r) { if (f > 0 && l <= 0) { c = e.left + f + a.collisionWidth - r - s; e.left += f - c; } else if (l > 0 && f <= 0) { e.left = s; } else { if (f > l) { e.left = s + r - a.collisionWidth; } else { e.left = s; } } } else if (f > 0) { e.left += f; } else if (l > 0) { e.left -= l; } else { e.left = y(e.left - i, e.left); } j.ui.pos._trigger(e, a, "posCollided", "fitLeft"); }, top: function(e, a) { j.ui.pos._trigger(e, a, "posCollide", "fitTop"); var t = a.within, s = t.isWindow ? t.scrollTop : t.offset.top, r = a.within.height, i = e.top - a.collisionPosition.marginTop, f = s - i, l = i + a.collisionHeight - r - s, c; if (a.collisionHeight > r) { if (f > 0 && l <= 0) { c = e.top + f + a.collisionHeight - r - s; e.top += f - c; } else if (l > 0 && f <= 0) { e.top = s; } else { if (f > l) { e.top = s + r - a.collisionHeight; } else { e.top = s; } } } else if (f > 0) { e.top += f; } else if (l > 0) { e.top -= l; } else { e.top = y(e.top - i, e.top); } j.ui.pos._trigger(e, a, "posCollided", "fitTop"); } }, flip: { left: function(e, a) { j.ui.pos._trigger(e, a, "posCollide", "flipLeft"); var t = a.within, s = t.offset.left + t.scrollLeft, r = t.width, i = t.isWindow ? t.scrollLeft : t.offset.left, f = e.left - a.collisionPosition.marginLeft, l = f - i, c = f + a.collisionWidth - r - i, o = a.my[0] === "left" ? -a.elemWidth : a.my[0] === "right" ? a.elemWidth : 0, n = a.at[0] === "left" ? a.targetWidth : a.at[0] === "right" ? -a.targetWidth : 0, h = -2 * a.offset[0], m, p; if (l < 0) { m = e.left + o + n + h + a.collisionWidth - r - s; if (m < 0 || m < x(l)) { e.left += o + n + h; } } else if (c > 0) { p = e.left - a.collisionPosition.marginLeft + o + n + h - i; if (p > 0 || x(p) < c) { e.left += o + n + h; } } j.ui.pos._trigger(e, a, "posCollided", "flipLeft"); }, top: function(e, a) { j.ui.pos._trigger(e, a, "posCollide", "flipTop"); var t = a.within, s = t.offset.top + t.scrollTop, r = t.height, i = t.isWindow ? t.scrollTop : t.offset.top, f = e.top - a.collisionPosition.marginTop, l = f - i, c = f + a.collisionHeight - r - i, o = a.my[1] === "top", n = o ? -a.elemHeight : a.my[1] === "bottom" ? a.elemHeight : 0, h = a.at[1] === "top" ? a.targetHeight : a.at[1] === "bottom" ? -a.targetHeight : 0, m = -2 * a.offset[1], p, d; if (l < 0) { d = e.top + n + h + m + a.collisionHeight - r - s; if (d < 0 || d < x(l)) { e.top += n + h + m; } } else if (c > 0) { p = e.top - a.collisionPosition.marginTop + n + h + m - i; if (p > 0 || x(p) < c) { e.top += n + h + m; } } j.ui.pos._trigger(e, a, "posCollided", "flipTop"); } }, flipfit: { left: function() { j.ui.pos.flip.left.apply(this, arguments); j.ui.pos.fit.left.apply(this, arguments); }, top: function() { j.ui.pos.flip.top.apply(this, arguments); j.ui.pos.fit.top.apply(this, arguments); } } }; (function() { var e, a, t, s, r, i = document.getElementsByTagName("body")[0], f = document.createElement("div"); e = document.createElement(i ? "div" : "body"); t = { visibility: "hidden", width: 0, height: 0, border: 0, margin: 0, background: "none" }; if (i) { j.extend(t, { position: "absolute", left: "-1000px", top: "-1000px" }); } for (r in t) { e.style[r] = t[r]; } e.appendChild(f); a = i || document.documentElement; a.insertBefore(e, a.firstChild); f.style.cssText = "position: absolute; left: 10.7432222px;"; s = j(f).offset().left; j.support.offsetFractions = s > 10 && s < 11; e.innerHTML = ""; a.removeChild(e); })(); })(); var a = j.ui.position; }); (function(e) { "use strict"; if (typeof define === "function" && define.amd) { define([ "jquery" ], e); } else if (window.jQuery && !window.jQuery.fn.iconpicker) { e(window.jQuery); } })(function(c) { "use strict"; var f = { isEmpty: function(e) { return e === false || e === "" || e === null || e === undefined; }, isEmptyObject: function(e) { return this.isEmpty(e) === true || e.length === 0; }, isElement: function(e) { return c(e).length > 0; }, isString: function(e) { return typeof e === "string" || e instanceof String; }, isArray: function(e) { return c.isArray(e); }, inArray: function(e, a) { return c.inArray(e, a) !== -1; }, throwError: function(e) { throw "Font Awesome Icon Picker Exception: " + e; } }; var t = function(e, a) { this._id = t._idCounter++; this.element = c(e).addClass("iconpicker-element"); this._trigger("iconpickerCreate", { iconpickerValue: this.iconpickerValue }); this.options = c.extend({}, t.defaultOptions, this.element.data(), a); this.options.templates = c.extend({}, t.defaultOptions.templates, this.options.templates); this.options.originalPlacement = this.options.placement; this.container = f.isElement(this.options.container) ? c(this.options.container) : false; if (this.container === false) { if (this.element.is(".dropdown-toggle")) { this.container = c("~ .dropdown-menu:first", this.element); } else { this.container = this.element.is("input,textarea,button,.btn") ? this.element.parent() : this.element; } } this.container.addClass("iconpicker-container"); if (this.isDropdownMenu()) { this.options.placement = "inline"; } this.input = this.element.is("input,textarea") ? this.element.addClass("iconpicker-input") : false; if (this.input === false) { this.input = this.container.find(this.options.input); if (!this.input.is("input,textarea")) { this.input = false; } } this.component = this.isDropdownMenu() ? this.container.parent().find(this.options.component) : this.container.find(this.options.component); if (this.component.length === 0) { this.component = false; } else { this.component.find("i").addClass("iconpicker-component"); } this._createPopover(); this._createIconpicker(); if (this.getAcceptButton().length === 0) { this.options.mustAccept = false; } if (this.isInputGroup()) { this.container.parent().append(this.popover); } else { this.container.append(this.popover); } this._bindElementEvents(); this._bindWindowEvents(); this.update(this.options.selected); if (this.isInline()) { this.show(); } this._trigger("iconpickerCreated", { iconpickerValue: this.iconpickerValue }); }; t._idCounter = 0; t.defaultOptions = { title: false, selected: false, defaultValue: false, placement: "bottom", collision: "none", animation: true, hideOnSelect: false, showFooter: false, searchInFooter: false, mustAccept: false, selectedCustomClass: "bg-primary", icons: [], fullClassFormatter: function(e) { return e; }, input: "input,.iconpicker-input", inputSearch: false, container: false, component: ".input-group-addon,.iconpicker-component", templates: { popover: '
' + '
', footer: '', buttons: '' + ' ', search: '', iconpicker: '
', iconpickerItem: '' } }; t.batch = function(e, a) { var t = Array.prototype.slice.call(arguments, 2); return c(e).each(function() { var e = c(this).data("iconpicker"); if (!!e) { e[a].apply(e, t); } }); }; t.prototype = { constructor: t, options: {}, _id: 0, _trigger: function(e, a) { a = a || {}; this.element.trigger(c.extend({ type: e, iconpickerInstance: this }, a)); }, _createPopover: function() { this.popover = c(this.options.templates.popover); var e = this.popover.find(".popover-title"); if (!!this.options.title) { e.append(c('
' + this.options.title + "
")); } if (this.hasSeparatedSearchInput() && !this.options.searchInFooter) { e.append(this.options.templates.search); } else if (!this.options.title) { e.remove(); } if (this.options.showFooter && !f.isEmpty(this.options.templates.footer)) { var a = c(this.options.templates.footer); if (this.hasSeparatedSearchInput() && this.options.searchInFooter) { a.append(c(this.options.templates.search)); } if (!f.isEmpty(this.options.templates.buttons)) { a.append(c(this.options.templates.buttons)); } this.popover.append(a); } if (this.options.animation === true) { this.popover.addClass("fade"); } return this.popover; }, _createIconpicker: function() { var t = this; this.iconpicker = c(this.options.templates.iconpicker); var e = function(e) { var a = c(this); if (a.is("i")) { a = a.parent(); } t._trigger("iconpickerSelect", { iconpickerItem: a, iconpickerValue: t.iconpickerValue }); if (t.options.mustAccept === false) { t.update(a.data("iconpickerValue")); t._trigger("iconpickerSelected", { iconpickerItem: this, iconpickerValue: t.iconpickerValue }); } else { t.update(a.data("iconpickerValue"), true); } if (t.options.hideOnSelect && t.options.mustAccept === false) { t.hide(); } }; var a = c(this.options.templates.iconpickerItem); var s = []; for (var r in this.options.icons) { if (typeof this.options.icons[r].title === "string") { var i = a.clone(); i.find("i").addClass(this.options.fullClassFormatter(this.options.icons[r].title)); i.data("iconpickerValue", this.options.icons[r].title).on("click.iconpicker", e); i.attr("title", "." + this.options.icons[r].title); if (this.options.icons[r].searchTerms.length > 0) { var f = ""; for (var l = 0; l < this.options.icons[r].searchTerms.length; l++) { f = f + this.options.icons[r].searchTerms[l] + " "; } i.attr("data-search-terms", f); } s.push(i); } } this.iconpicker.find(".iconpicker-items").append(s); this.popover.find(".popover-content").append(this.iconpicker); return this.iconpicker; }, _isEventInsideIconpicker: function(e) { var a = c(e.target); if ((!a.hasClass("iconpicker-element") || a.hasClass("iconpicker-element") && !a.is(this.element)) && a.parents(".iconpicker-popover").length === 0) { return false; } return true; }, _bindElementEvents: function() { var a = this; this.getSearchInput().on("keyup.iconpicker", function() { a.filter(c(this).val().toLowerCase()); }); this.getAcceptButton().on("click.iconpicker", function() { var e = a.iconpicker.find(".iconpicker-selected").get(0); a.update(a.iconpickerValue); a._trigger("iconpickerSelected", { iconpickerItem: e, iconpickerValue: a.iconpickerValue }); if (!a.isInline()) { a.hide(); } }); this.getCancelButton().on("click.iconpicker", function() { if (!a.isInline()) { a.hide(); } }); this.element.on("focus.iconpicker", function(e) { a.show(); e.stopPropagation(); }); if (this.hasComponent()) { this.component.on("click.iconpicker", function() { a.toggle(); }); } if (this.hasInput()) { this.input.on("keyup.iconpicker", function(e) { if (!f.inArray(e.keyCode, [ 38, 40, 37, 39, 16, 17, 18, 9, 8, 91, 93, 20, 46, 186, 190, 46, 78, 188, 44, 86 ])) { a.update(); } else { a._updateFormGroupStatus(a.getValid(this.value) !== false); } if (a.options.inputSearch === true) { a.filter(c(this).val().toLowerCase()); } }); } }, _bindWindowEvents: function() { var e = c(window.document); var a = this; var t = ".iconpicker.inst" + this._id; c(window).on("resize.iconpicker" + t + " orientationchange.iconpicker" + t, function(e) { if (a.popover.hasClass("in")) { a.updatePlacement(); } }); if (!a.isInline()) { e.on("mouseup" + t, function(e) { if (!a._isEventInsideIconpicker(e) && !a.isInline()) { a.hide(); } }); } }, _unbindElementEvents: function() { this.popover.off(".iconpicker"); this.element.off(".iconpicker"); if (this.hasInput()) { this.input.off(".iconpicker"); } if (this.hasComponent()) { this.component.off(".iconpicker"); } if (this.hasContainer()) { this.container.off(".iconpicker"); } }, _unbindWindowEvents: function() { c(window).off(".iconpicker.inst" + this._id); c(window.document).off(".iconpicker.inst" + this._id); }, updatePlacement: function(e, a) { e = e || this.options.placement; this.options.placement = e; a = a || this.options.collision; a = a === true ? "flip" : a; var t = { at: "right bottom", my: "right top", of: this.hasInput() && !this.isInputGroup() ? this.input : this.container, collision: a === true ? "flip" : a, within: window }; this.popover.removeClass("inline topLeftCorner topLeft top topRight topRightCorner " + "rightTop right rightBottom bottomRight bottomRightCorner " + "bottom bottomLeft bottomLeftCorner leftBottom left leftTop"); if (typeof e === "object") { return this.popover.pos(c.extend({}, t, e)); } switch (e) { case "inline": { t = false; } break; case "topLeftCorner": { t.my = "right bottom"; t.at = "left top"; } break; case "topLeft": { t.my = "left bottom"; t.at = "left top"; } break; case "top": { t.my = "center bottom"; t.at = "center top"; } break; case "topRight": { t.my = "right bottom"; t.at = "right top"; } break; case "topRightCorner": { t.my = "left bottom"; t.at = "right top"; } break; case "rightTop": { t.my = "left bottom"; t.at = "right center"; } break; case "right": { t.my = "left center"; t.at = "right center"; } break; case "rightBottom": { t.my = "left top"; t.at = "right center"; } break; case "bottomRightCorner": { t.my = "left top"; t.at = "right bottom"; } break; case "bottomRight": { t.my = "right top"; t.at = "right bottom"; } break; case "bottom": { t.my = "center top"; t.at = "center bottom"; } break; case "bottomLeft": { t.my = "left top"; t.at = "left bottom"; } break; case "bottomLeftCorner": { t.my = "right top"; t.at = "left bottom"; } break; case "leftBottom": { t.my = "right top"; t.at = "left center"; } break; case "left": { t.my = "right center"; t.at = "left center"; } break; case "leftTop": { t.my = "right bottom"; t.at = "left center"; } break; default: { return false; } break; } this.popover.css({ display: this.options.placement === "inline" ? "" : "block" }); if (t !== false) { this.popover.pos(t).css("maxWidth", c(window).width() - this.container.offset().left - 5); } else { this.popover.css({ top: "auto", right: "auto", bottom: "auto", left: "auto", maxWidth: "none" }); } this.popover.addClass(this.options.placement); return true; }, _updateComponents: function() { this.iconpicker.find(".iconpicker-item.iconpicker-selected").removeClass("iconpicker-selected " + this.options.selectedCustomClass); if (this.iconpickerValue) { this.iconpicker.find("." + this.options.fullClassFormatter(this.iconpickerValue).replace(/ /g, ".")).parent().addClass("iconpicker-selected " + this.options.selectedCustomClass); } if (this.hasComponent()) { var e = this.component.find("i"); if (e.length > 0) { e.attr("class", this.options.fullClassFormatter(this.iconpickerValue)); } else { this.component.html(this.getHtml()); } } }, _updateFormGroupStatus: function(e) { if (this.hasInput()) { if (e !== false) { this.input.parents(".form-group:first").removeClass("has-error"); } else { this.input.parents(".form-group:first").addClass("has-error"); } return true; } return false; }, getValid: function(e) { if (!f.isString(e)) { e = ""; } var a = e === ""; e = c.trim(e); var t = false; for (var s = 0; s < this.options.icons.length; s++) { if (this.options.icons[s].title === e) { t = true; break; } } if (t || a) { return e; } return false; }, setValue: function(e) { var a = this.getValid(e); if (a !== false) { this.iconpickerValue = a; this._trigger("iconpickerSetValue", { iconpickerValue: a }); return this.iconpickerValue; } else { this._trigger("iconpickerInvalid", { iconpickerValue: e }); return false; } }, getHtml: function() { return ''; }, setSourceValue: function(e) { e = this.setValue(e); if (e !== false && e !== "") { if (this.hasInput()) { this.input.val(this.iconpickerValue); } else { this.element.data("iconpickerValue", this.iconpickerValue); } this._trigger("iconpickerSetSourceValue", { iconpickerValue: e }); } return e; }, getSourceValue: function(e) { e = e || this.options.defaultValue; var a = e; if (this.hasInput()) { a = this.input.val(); } else { a = this.element.data("iconpickerValue"); } if (a === undefined || a === "" || a === null || a === false) { a = e; } return a; }, hasInput: function() { return this.input !== false; }, isInputSearch: function() { return this.hasInput() && this.options.inputSearch === true; }, isInputGroup: function() { return this.container.is(".input-group"); }, isDropdownMenu: function() { return this.container.is(".dropdown-menu"); }, hasSeparatedSearchInput: function() { return this.options.templates.search !== false && !this.isInputSearch(); }, hasComponent: function() { return this.component !== false; }, hasContainer: function() { return this.container !== false; }, getAcceptButton: function() { return this.popover.find(".iconpicker-btn-accept"); }, getCancelButton: function() { return this.popover.find(".iconpicker-btn-cancel"); }, getSearchInput: function() { return this.popover.find(".iconpicker-search"); }, filter: function(r) { if (f.isEmpty(r)) { this.iconpicker.find(".iconpicker-item").show(); return c(false); } else { var i = []; this.iconpicker.find(".iconpicker-item").each(function() { var e = c(this); var a = e.attr("title").toLowerCase(); var t = e.attr("data-search-terms") ? e.attr("data-search-terms").toLowerCase() : ""; a = a + " " + t; var s = false; try { s = new RegExp("(^|\\W)" + r, "g"); } catch (e) { s = false; } if (s !== false && a.match(s)) { i.push(e); e.show(); } else { e.hide(); } }); return i; } }, show: function() { if (this.popover.hasClass("in")) { return false; } c.iconpicker.batch(c(".iconpicker-popover.in:not(.inline)").not(this.popover), "hide"); this._trigger("iconpickerShow", { iconpickerValue: this.iconpickerValue }); this.updatePlacement(); this.popover.addClass("in"); setTimeout(c.proxy(function() { this.popover.css("display", this.isInline() ? "" : "block"); this._trigger("iconpickerShown", { iconpickerValue: this.iconpickerValue }); }, this), this.options.animation ? 300 : 1); }, hide: function() { if (!this.popover.hasClass("in")) { return false; } this._trigger("iconpickerHide", { iconpickerValue: this.iconpickerValue }); this.popover.removeClass("in"); setTimeout(c.proxy(function() { this.popover.css("display", "none"); this.getSearchInput().val(""); this.filter(""); this._trigger("iconpickerHidden", { iconpickerValue: this.iconpickerValue }); }, this), this.options.animation ? 300 : 1); }, toggle: function() { if (this.popover.is(":visible")) { this.hide(); } else { this.show(true); } }, update: function(e, a) { e = e ? e : this.getSourceValue(this.iconpickerValue); this._trigger("iconpickerUpdate", { iconpickerValue: this.iconpickerValue }); if (a === true) { e = this.setValue(e); } else { e = this.setSourceValue(e); this._updateFormGroupStatus(e !== false); } if (e !== false) { this._updateComponents(); } this._trigger("iconpickerUpdated", { iconpickerValue: this.iconpickerValue }); return e; }, destroy: function() { this._trigger("iconpickerDestroy", { iconpickerValue: this.iconpickerValue }); this.element.removeData("iconpicker").removeData("iconpickerValue").removeClass("iconpicker-element"); this._unbindElementEvents(); this._unbindWindowEvents(); c(this.popover).remove(); this._trigger("iconpickerDestroyed", { iconpickerValue: this.iconpickerValue }); }, disable: function() { if (this.hasInput()) { this.input.prop("disabled", true); return true; } return false; }, enable: function() { if (this.hasInput()) { this.input.prop("disabled", false); return true; } return false; }, isDisabled: function() { if (this.hasInput()) { return this.input.prop("disabled") === true; } return false; }, isInline: function() { return this.options.placement === "inline" || this.popover.hasClass("inline"); } }; c.iconpicker = t; c.fn.iconpicker = function(a) { return this.each(function() { var e = c(this); if (!e.data("iconpicker")) { e.data("iconpicker", new t(this, typeof a === "object" ? a : {})); } }); }; t.defaultOptions = c.extend(t.defaultOptions, { icons: [ { title: "fab fa-500px", searchTerms: [] }, { title: "fab fa-accessible-icon", searchTerms: [ "accessibility", "handicap", "person", "wheelchair", "wheelchair-alt" ] }, { title: "fab fa-accusoft", searchTerms: [] }, { title: "fab fa-acquisitions-incorporated", searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop" ] }, { title: "fas fa-ad", searchTerms: [] }, { title: "fas fa-address-book", searchTerms: [] }, { title: "far fa-address-book", searchTerms: [] }, { title: "fas fa-address-card", searchTerms: [] }, { title: "far fa-address-card", searchTerms: [] }, { title: "fas fa-adjust", searchTerms: [ "contrast" ] }, { title: "fab fa-adn", searchTerms: [] }, { title: "fab fa-adversal", searchTerms: [] }, { title: "fab fa-affiliatetheme", searchTerms: [] }, { title: "fas fa-air-freshener", searchTerms: [] }, { title: "fab fa-algolia", searchTerms: [] }, { title: "fas fa-align-center", searchTerms: [ "middle", "text" ] }, { title: "fas fa-align-justify", searchTerms: [ "text" ] }, { title: "fas fa-align-left", searchTerms: [ "text" ] }, { title: "fas fa-align-right", searchTerms: [ "text" ] }, { title: "fab fa-alipay", searchTerms: [] }, { title: "fas fa-allergies", searchTerms: [ "freckles", "hand", "intolerances", "pox", "spots" ] }, { title: "fab fa-amazon", searchTerms: [] }, { title: "fab fa-amazon-pay", searchTerms: [] }, { title: "fas fa-ambulance", searchTerms: [ "help", "machine", "support", "vehicle" ] }, { title: "fas fa-american-sign-language-interpreting", searchTerms: [] }, { title: "fab fa-amilia", searchTerms: [] }, { title: "fas fa-anchor", searchTerms: [ "link" ] }, { title: "fab fa-android", searchTerms: [ "robot" ] }, { title: "fab fa-angellist", searchTerms: [] }, { title: "fas fa-angle-double-down", searchTerms: [ "arrows" ] }, { title: "fas fa-angle-double-left", searchTerms: [ "arrows", "back", "laquo", "previous", "quote" ] }, { title: "fas fa-angle-double-right", searchTerms: [ "arrows", "forward", "next", "quote", "raquo" ] }, { title: "fas fa-angle-double-up", searchTerms: [ "arrows" ] }, { title: "fas fa-angle-down", searchTerms: [ "arrow" ] }, { title: "fas fa-angle-left", searchTerms: [ "arrow", "back", "previous" ] }, { title: "fas fa-angle-right", searchTerms: [ "arrow", "forward", "next" ] }, { title: "fas fa-angle-up", searchTerms: [ "arrow" ] }, { title: "fas fa-angry", searchTerms: [ "disapprove", "emoticon", "face", "mad", "upset" ] }, { title: "far fa-angry", searchTerms: [ "disapprove", "emoticon", "face", "mad", "upset" ] }, { title: "fab fa-angrycreative", searchTerms: [] }, { title: "fab fa-angular", searchTerms: [] }, { title: "fas fa-ankh", searchTerms: [ "amulet", "copper", "coptic christianity", "copts", "crux ansata", "egyptian", "venus" ] }, { title: "fab fa-app-store", searchTerms: [] }, { title: "fab fa-app-store-ios", searchTerms: [] }, { title: "fab fa-apper", searchTerms: [] }, { title: "fab fa-apple", searchTerms: [ "food", "fruit", "mac", "osx" ] }, { title: "fas fa-apple-alt", searchTerms: [ "fall", "food", "fruit", "fuji", "macintosh", "seasonal" ] }, { title: "fab fa-apple-pay", searchTerms: [] }, { title: "fas fa-archive", searchTerms: [ "box", "package", "storage" ] }, { title: "fas fa-archway", searchTerms: [ "arc", "monument", "road", "street" ] }, { title: "fas fa-arrow-alt-circle-down", searchTerms: [ "arrow-circle-o-down", "download" ] }, { title: "far fa-arrow-alt-circle-down", searchTerms: [ "arrow-circle-o-down", "download" ] }, { title: "fas fa-arrow-alt-circle-left", searchTerms: [ "arrow-circle-o-left", "back", "previous" ] }, { title: "far fa-arrow-alt-circle-left", searchTerms: [ "arrow-circle-o-left", "back", "previous" ] }, { title: "fas fa-arrow-alt-circle-right", searchTerms: [ "arrow-circle-o-right", "forward", "next" ] }, { title: "far fa-arrow-alt-circle-right", searchTerms: [ "arrow-circle-o-right", "forward", "next" ] }, { title: "fas fa-arrow-alt-circle-up", searchTerms: [ "arrow-circle-o-up" ] }, { title: "far fa-arrow-alt-circle-up", searchTerms: [ "arrow-circle-o-up" ] }, { title: "fas fa-arrow-circle-down", searchTerms: [ "download" ] }, { title: "fas fa-arrow-circle-left", searchTerms: [ "back", "previous" ] }, { title: "fas fa-arrow-circle-right", searchTerms: [ "forward", "next" ] }, { title: "fas fa-arrow-circle-up", searchTerms: [] }, { title: "fas fa-arrow-down", searchTerms: [ "download" ] }, { title: "fas fa-arrow-left", searchTerms: [ "back", "previous" ] }, { title: "fas fa-arrow-right", searchTerms: [ "forward", "next" ] }, { title: "fas fa-arrow-up", searchTerms: [] }, { title: "fas fa-arrows-alt", searchTerms: [ "arrow", "arrows", "bigger", "enlarge", "expand", "fullscreen", "move", "position", "reorder", "resize" ] }, { title: "fas fa-arrows-alt-h", searchTerms: [ "arrows-h", "resize" ] }, { title: "fas fa-arrows-alt-v", searchTerms: [ "arrows-v", "resize" ] }, { title: "fas fa-assistive-listening-systems", searchTerms: [] }, { title: "fas fa-asterisk", searchTerms: [ "details" ] }, { title: "fab fa-asymmetrik", searchTerms: [] }, { title: "fas fa-at", searchTerms: [ "e-mail", "email" ] }, { title: "fas fa-atlas", searchTerms: [ "book", "directions", "geography", "map", "wayfinding" ] }, { title: "fas fa-atom", searchTerms: [ "atheism", "chemistry", "science" ] }, { title: "fab fa-audible", searchTerms: [] }, { title: "fas fa-audio-description", searchTerms: [] }, { title: "fab fa-autoprefixer", searchTerms: [] }, { title: "fab fa-avianex", searchTerms: [] }, { title: "fab fa-aviato", searchTerms: [] }, { title: "fas fa-award", searchTerms: [ "honor", "praise", "prize", "recognition", "ribbon" ] }, { title: "fab fa-aws", searchTerms: [] }, { title: "fas fa-backspace", searchTerms: [ "command", "delete", "keyboard", "undo" ] }, { title: "fas fa-backward", searchTerms: [ "previous", "rewind" ] }, { title: "fas fa-balance-scale", searchTerms: [ "balanced", "justice", "legal", "measure", "weight" ] }, { title: "fas fa-ban", searchTerms: [ "abort", "ban", "block", "cancel", "delete", "hide", "prohibit", "remove", "stop", "trash" ] }, { title: "fas fa-band-aid", searchTerms: [ "bandage", "boo boo", "ouch" ] }, { title: "fab fa-bandcamp", searchTerms: [] }, { title: "fas fa-barcode", searchTerms: [ "scan" ] }, { title: "fas fa-bars", searchTerms: [ "checklist", "drag", "hamburger", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "todo", "ul" ] }, { title: "fas fa-baseball-ball", searchTerms: [] }, { title: "fas fa-basketball-ball", searchTerms: [] }, { title: "fas fa-bath", searchTerms: [] }, { title: "fas fa-battery-empty", searchTerms: [ "power", "status" ] }, { title: "fas fa-battery-full", searchTerms: [ "power", "status" ] }, { title: "fas fa-battery-half", searchTerms: [ "power", "status" ] }, { title: "fas fa-battery-quarter", searchTerms: [ "power", "status" ] }, { title: "fas fa-battery-three-quarters", searchTerms: [ "power", "status" ] }, { title: "fas fa-bed", searchTerms: [ "lodging", "sleep", "travel" ] }, { title: "fas fa-beer", searchTerms: [ "alcohol", "bar", "beverage", "drink", "liquor", "mug", "stein" ] }, { title: "fab fa-behance", searchTerms: [] }, { title: "fab fa-behance-square", searchTerms: [] }, { title: "fas fa-bell", searchTerms: [ "alert", "notification", "reminder" ] }, { title: "far fa-bell", searchTerms: [ "alert", "notification", "reminder" ] }, { title: "fas fa-bell-slash", searchTerms: [] }, { title: "far fa-bell-slash", searchTerms: [] }, { title: "fas fa-bezier-curve", searchTerms: [ "curves", "illustrator", "lines", "path", "vector" ] }, { title: "fas fa-bible", searchTerms: [ "book", "catholicism", "christianity" ] }, { title: "fas fa-bicycle", searchTerms: [ "bike", "gears", "transportation", "vehicle" ] }, { title: "fab fa-bimobject", searchTerms: [] }, { title: "fas fa-binoculars", searchTerms: [] }, { title: "fas fa-birthday-cake", searchTerms: [] }, { title: "fab fa-bitbucket", searchTerms: [ "bitbucket-square", "git" ] }, { title: "fab fa-bitcoin", searchTerms: [] }, { title: "fab fa-bity", searchTerms: [] }, { title: "fab fa-black-tie", searchTerms: [] }, { title: "fab fa-blackberry", searchTerms: [] }, { title: "fas fa-blender", searchTerms: [] }, { title: "fas fa-blender-phone", searchTerms: [ "appliance", "fantasy", "silly" ] }, { title: "fas fa-blind", searchTerms: [] }, { title: "fab fa-blogger", searchTerms: [] }, { title: "fab fa-blogger-b", searchTerms: [] }, { title: "fab fa-bluetooth", searchTerms: [] }, { title: "fab fa-bluetooth-b", searchTerms: [] }, { title: "fas fa-bold", searchTerms: [] }, { title: "fas fa-bolt", searchTerms: [ "electricity", "lightning", "weather", "zap" ] }, { title: "fas fa-bomb", searchTerms: [] }, { title: "fas fa-bone", searchTerms: [] }, { title: "fas fa-bong", searchTerms: [ "aparatus", "cannabis", "marijuana", "pipe", "smoke", "smoking" ] }, { title: "fas fa-book", searchTerms: [ "documentation", "read" ] }, { title: "fas fa-book-dead", searchTerms: [ "Dungeons & Dragons", "crossbones", "d&d", "dark arts", "death", "dnd", "documentation", "evil", "fantasy", "halloween", "holiday", "read", "skull", "spell" ] }, { title: "fas fa-book-open", searchTerms: [ "flyer", "notebook", "open book", "pamphlet", "reading" ] }, { title: "fas fa-book-reader", searchTerms: [ "library" ] }, { title: "fas fa-bookmark", searchTerms: [ "save" ] }, { title: "far fa-bookmark", searchTerms: [ "save" ] }, { title: "fas fa-bowling-ball", searchTerms: [] }, { title: "fas fa-box", searchTerms: [ "package" ] }, { title: "fas fa-box-open", searchTerms: [] }, { title: "fas fa-boxes", searchTerms: [] }, { title: "fas fa-braille", searchTerms: [] }, { title: "fas fa-brain", searchTerms: [ "cerebellum", "gray matter", "intellect", "medulla oblongata", "mind", "noodle", "wit" ] }, { title: "fas fa-briefcase", searchTerms: [ "bag", "business", "luggage", "office", "work" ] }, { title: "fas fa-briefcase-medical", searchTerms: [ "health briefcase" ] }, { title: "fas fa-broadcast-tower", searchTerms: [ "airwaves", "radio", "waves" ] }, { title: "fas fa-broom", searchTerms: [ "clean", "firebolt", "fly", "halloween", "holiday", "nimbus 2000", "quidditch", "sweep", "witch" ] }, { title: "fas fa-brush", searchTerms: [ "bristles", "color", "handle", "painting" ] }, { title: "fab fa-btc", searchTerms: [] }, { title: "fas fa-bug", searchTerms: [ "insect", "report" ] }, { title: "fas fa-building", searchTerms: [ "apartment", "business", "company", "office", "work" ] }, { title: "far fa-building", searchTerms: [ "apartment", "business", "company", "office", "work" ] }, { title: "fas fa-bullhorn", searchTerms: [ "announcement", "broadcast", "louder", "megaphone", "share" ] }, { title: "fas fa-bullseye", searchTerms: [ "target" ] }, { title: "fas fa-burn", searchTerms: [ "energy" ] }, { title: "fab fa-buromobelexperte", searchTerms: [] }, { title: "fas fa-bus", searchTerms: [ "machine", "public transportation", "transportation", "vehicle" ] }, { title: "fas fa-bus-alt", searchTerms: [ "machine", "public transportation", "transportation", "vehicle" ] }, { title: "fas fa-business-time", searchTerms: [ "briefcase", "business socks", "clock", "flight of the conchords", "wednesday" ] }, { title: "fab fa-buysellads", searchTerms: [] }, { title: "fas fa-calculator", searchTerms: [] }, { title: "fas fa-calendar", searchTerms: [ "calendar-o", "date", "event", "schedule", "time", "when" ] }, { title: "far fa-calendar", searchTerms: [ "calendar-o", "date", "event", "schedule", "time", "when" ] }, { title: "fas fa-calendar-alt", searchTerms: [ "calendar", "date", "event", "schedule", "time", "when" ] }, { title: "far fa-calendar-alt", searchTerms: [ "calendar", "date", "event", "schedule", "time", "when" ] }, { title: "fas fa-calendar-check", searchTerms: [ "accept", "agree", "appointment", "confirm", "correct", "done", "ok", "select", "success", "todo" ] }, { title: "far fa-calendar-check", searchTerms: [ "accept", "agree", "appointment", "confirm", "correct", "done", "ok", "select", "success", "todo" ] }, { title: "fas fa-calendar-minus", searchTerms: [ "delete", "negative", "remove" ] }, { title: "far fa-calendar-minus", searchTerms: [ "delete", "negative", "remove" ] }, { title: "fas fa-calendar-plus", searchTerms: [ "add", "create", "new", "positive" ] }, { title: "far fa-calendar-plus", searchTerms: [ "add", "create", "new", "positive" ] }, { title: "fas fa-calendar-times", searchTerms: [ "archive", "delete", "remove", "x" ] }, { title: "far fa-calendar-times", searchTerms: [ "archive", "delete", "remove", "x" ] }, { title: "fas fa-camera", searchTerms: [ "photo", "picture", "record" ] }, { title: "fas fa-camera-retro", searchTerms: [ "photo", "picture", "record" ] }, { title: "fas fa-campground", searchTerms: [ "camping", "fall", "outdoors", "seasonal", "tent" ] }, { title: "fas fa-cannabis", searchTerms: [ "bud", "chronic", "drugs", "endica", "endo", "ganja", "marijuana", "mary jane", "pot", "reefer", "sativa", "spliff", "weed", "whacky-tabacky" ] }, { title: "fas fa-capsules", searchTerms: [ "drugs", "medicine" ] }, { title: "fas fa-car", searchTerms: [ "machine", "transportation", "vehicle" ] }, { title: "fas fa-car-alt", searchTerms: [] }, { title: "fas fa-car-battery", searchTerms: [] }, { title: "fas fa-car-crash", searchTerms: [] }, { title: "fas fa-car-side", searchTerms: [] }, { title: "fas fa-caret-down", searchTerms: [ "arrow", "dropdown", "menu", "more", "triangle down" ] }, { title: "fas fa-caret-left", searchTerms: [ "arrow", "back", "previous", "triangle left" ] }, { title: "fas fa-caret-right", searchTerms: [ "arrow", "forward", "next", "triangle right" ] }, { title: "fas fa-caret-square-down", searchTerms: [ "caret-square-o-down", "dropdown", "menu", "more" ] }, { title: "far fa-caret-square-down", searchTerms: [ "caret-square-o-down", "dropdown", "menu", "more" ] }, { title: "fas fa-caret-square-left", searchTerms: [ "back", "caret-square-o-left", "previous" ] }, { title: "far fa-caret-square-left", searchTerms: [ "back", "caret-square-o-left", "previous" ] }, { title: "fas fa-caret-square-right", searchTerms: [ "caret-square-o-right", "forward", "next" ] }, { title: "far fa-caret-square-right", searchTerms: [ "caret-square-o-right", "forward", "next" ] }, { title: "fas fa-caret-square-up", searchTerms: [ "caret-square-o-up" ] }, { title: "far fa-caret-square-up", searchTerms: [ "caret-square-o-up" ] }, { title: "fas fa-caret-up", searchTerms: [ "arrow", "triangle up" ] }, { title: "fas fa-cart-arrow-down", searchTerms: [ "shopping" ] }, { title: "fas fa-cart-plus", searchTerms: [ "add", "create", "new", "positive", "shopping" ] }, { title: "fas fa-cat", searchTerms: [ "feline", "halloween", "holiday", "kitten", "kitty", "meow", "pet" ] }, { title: "fab fa-cc-amazon-pay", searchTerms: [] }, { title: "fab fa-cc-amex", searchTerms: [ "amex" ] }, { title: "fab fa-cc-apple-pay", searchTerms: [] }, { title: "fab fa-cc-diners-club", searchTerms: [] }, { title: "fab fa-cc-discover", searchTerms: [] }, { title: "fab fa-cc-jcb", searchTerms: [] }, { title: "fab fa-cc-mastercard", searchTerms: [] }, { title: "fab fa-cc-paypal", searchTerms: [] }, { title: "fab fa-cc-stripe", searchTerms: [] }, { title: "fab fa-cc-visa", searchTerms: [] }, { title: "fab fa-centercode", searchTerms: [] }, { title: "fas fa-certificate", searchTerms: [ "badge", "star" ] }, { title: "fas fa-chair", searchTerms: [ "furniture", "seat" ] }, { title: "fas fa-chalkboard", searchTerms: [ "blackboard", "learning", "school", "teaching", "whiteboard", "writing" ] }, { title: "fas fa-chalkboard-teacher", searchTerms: [ "blackboard", "instructor", "learning", "professor", "school", "whiteboard", "writing" ] }, { title: "fas fa-charging-station", searchTerms: [] }, { title: "fas fa-chart-area", searchTerms: [ "analytics", "area-chart", "graph" ] }, { title: "fas fa-chart-bar", searchTerms: [ "analytics", "bar-chart", "graph" ] }, { title: "far fa-chart-bar", searchTerms: [ "analytics", "bar-chart", "graph" ] }, { title: "fas fa-chart-line", searchTerms: [ "activity", "analytics", "dashboard", "graph", "line-chart" ] }, { title: "fas fa-chart-pie", searchTerms: [ "analytics", "graph", "pie-chart" ] }, { title: "fas fa-check", searchTerms: [ "accept", "agree", "checkmark", "confirm", "correct", "done", "notice", "notification", "notify", "ok", "select", "success", "tick", "todo", "yes" ] }, { title: "fas fa-check-circle", searchTerms: [ "accept", "agree", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes" ] }, { title: "far fa-check-circle", searchTerms: [ "accept", "agree", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes" ] }, { title: "fas fa-check-double", searchTerms: [ "accept", "agree", "checkmark", "confirm", "correct", "done", "notice", "notification", "notify", "ok", "select", "success", "tick", "todo" ] }, { title: "fas fa-check-square", searchTerms: [ "accept", "agree", "checkmark", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes" ] }, { title: "far fa-check-square", searchTerms: [ "accept", "agree", "checkmark", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes" ] }, { title: "fas fa-chess", searchTerms: [] }, { title: "fas fa-chess-bishop", searchTerms: [] }, { title: "fas fa-chess-board", searchTerms: [] }, { title: "fas fa-chess-king", searchTerms: [] }, { title: "fas fa-chess-knight", searchTerms: [] }, { title: "fas fa-chess-pawn", searchTerms: [] }, { title: "fas fa-chess-queen", searchTerms: [] }, { title: "fas fa-chess-rook", searchTerms: [] }, { title: "fas fa-chevron-circle-down", searchTerms: [ "arrow", "dropdown", "menu", "more" ] }, { title: "fas fa-chevron-circle-left", searchTerms: [ "arrow", "back", "previous" ] }, { title: "fas fa-chevron-circle-right", searchTerms: [ "arrow", "forward", "next" ] }, { title: "fas fa-chevron-circle-up", searchTerms: [ "arrow" ] }, { title: "fas fa-chevron-down", searchTerms: [] }, { title: "fas fa-chevron-left", searchTerms: [ "back", "bracket", "previous" ] }, { title: "fas fa-chevron-right", searchTerms: [ "bracket", "forward", "next" ] }, { title: "fas fa-chevron-up", searchTerms: [] }, { title: "fas fa-child", searchTerms: [] }, { title: "fab fa-chrome", searchTerms: [ "browser" ] }, { title: "fas fa-church", searchTerms: [ "building", "community", "religion" ] }, { title: "fas fa-circle", searchTerms: [ "circle-thin", "dot", "notification" ] }, { title: "far fa-circle", searchTerms: [ "circle-thin", "dot", "notification" ] }, { title: "fas fa-circle-notch", searchTerms: [ "circle-o-notch" ] }, { title: "fas fa-city", searchTerms: [ "buildings", "busy", "skyscrapers", "urban", "windows" ] }, { title: "fas fa-clipboard", searchTerms: [ "paste" ] }, { title: "far fa-clipboard", searchTerms: [ "paste" ] }, { title: "fas fa-clipboard-check", searchTerms: [ "accept", "agree", "confirm", "done", "ok", "select", "success", "todo", "yes" ] }, { title: "fas fa-clipboard-list", searchTerms: [ "checklist", "completed", "done", "finished", "intinerary", "ol", "schedule", "todo", "ul" ] }, { title: "fas fa-clock", searchTerms: [ "date", "late", "schedule", "timer", "timestamp", "watch" ] }, { title: "far fa-clock", searchTerms: [ "date", "late", "schedule", "timer", "timestamp", "watch" ] }, { title: "fas fa-clone", searchTerms: [ "copy", "duplicate" ] }, { title: "far fa-clone", searchTerms: [ "copy", "duplicate" ] }, { title: "fas fa-closed-captioning", searchTerms: [ "cc" ] }, { title: "far fa-closed-captioning", searchTerms: [ "cc" ] }, { title: "fas fa-cloud", searchTerms: [ "save" ] }, { title: "fas fa-cloud-download-alt", searchTerms: [ "import" ] }, { title: "fas fa-cloud-meatball", searchTerms: [] }, { title: "fas fa-cloud-moon", searchTerms: [ "crescent", "evening", "halloween", "holiday", "lunar", "night", "sky" ] }, { title: "fas fa-cloud-moon-rain", searchTerms: [] }, { title: "fas fa-cloud-rain", searchTerms: [ "precipitation" ] }, { title: "fas fa-cloud-showers-heavy", searchTerms: [ "precipitation", "rain", "storm" ] }, { title: "fas fa-cloud-sun", searchTerms: [ "day", "daytime", "fall", "outdoors", "seasonal" ] }, { title: "fas fa-cloud-sun-rain", searchTerms: [] }, { title: "fas fa-cloud-upload-alt", searchTerms: [ "cloud-upload" ] }, { title: "fab fa-cloudscale", searchTerms: [] }, { title: "fab fa-cloudsmith", searchTerms: [] }, { title: "fab fa-cloudversify", searchTerms: [] }, { title: "fas fa-cocktail", searchTerms: [ "alcohol", "beverage", "drink" ] }, { title: "fas fa-code", searchTerms: [ "brackets", "html" ] }, { title: "fas fa-code-branch", searchTerms: [ "branch", "code-fork", "fork", "git", "github", "rebase", "svn", "vcs", "version" ] }, { title: "fab fa-codepen", searchTerms: [] }, { title: "fab fa-codiepie", searchTerms: [] }, { title: "fas fa-coffee", searchTerms: [ "beverage", "breakfast", "cafe", "drink", "fall", "morning", "mug", "seasonal", "tea" ] }, { title: "fas fa-cog", searchTerms: [ "settings" ] }, { title: "fas fa-cogs", searchTerms: [ "gears", "settings" ] }, { title: "fas fa-coins", searchTerms: [] }, { title: "fas fa-columns", searchTerms: [ "dashboard", "panes", "split" ] }, { title: "fas fa-comment", searchTerms: [ "bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ] }, { title: "far fa-comment", searchTerms: [ "bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ] }, { title: "fas fa-comment-alt", searchTerms: [ "bubble", "chat", "commenting", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ] }, { title: "far fa-comment-alt", searchTerms: [ "bubble", "chat", "commenting", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ] }, { title: "fas fa-comment-dollar", searchTerms: [] }, { title: "fas fa-comment-dots", searchTerms: [] }, { title: "far fa-comment-dots", searchTerms: [] }, { title: "fas fa-comment-slash", searchTerms: [] }, { title: "fas fa-comments", searchTerms: [ "bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ] }, { title: "far fa-comments", searchTerms: [ "bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ] }, { title: "fas fa-comments-dollar", searchTerms: [] }, { title: "fas fa-compact-disc", searchTerms: [ "bluray", "cd", "disc", "media" ] }, { title: "fas fa-compass", searchTerms: [ "directory", "location", "menu", "safari" ] }, { title: "far fa-compass", searchTerms: [ "directory", "location", "menu", "safari" ] }, { title: "fas fa-compress", searchTerms: [ "collapse", "combine", "contract", "merge", "smaller" ] }, { title: "fas fa-concierge-bell", searchTerms: [ "attention", "hotel", "service", "support" ] }, { title: "fab fa-connectdevelop", searchTerms: [] }, { title: "fab fa-contao", searchTerms: [] }, { title: "fas fa-cookie", searchTerms: [ "baked good", "chips", "food", "snack", "sweet", "treat" ] }, { title: "fas fa-cookie-bite", searchTerms: [ "baked good", "bitten", "chips", "eating", "food", "snack", "sweet", "treat" ] }, { title: "fas fa-copy", searchTerms: [ "clone", "duplicate", "file", "files-o" ] }, { title: "far fa-copy", searchTerms: [ "clone", "duplicate", "file", "files-o" ] }, { title: "fas fa-copyright", searchTerms: [] }, { title: "far fa-copyright", searchTerms: [] }, { title: "fas fa-couch", searchTerms: [ "furniture", "sofa" ] }, { title: "fab fa-cpanel", searchTerms: [] }, { title: "fab fa-creative-commons", searchTerms: [] }, { title: "fab fa-creative-commons-by", searchTerms: [] }, { title: "fab fa-creative-commons-nc", searchTerms: [] }, { title: "fab fa-creative-commons-nc-eu", searchTerms: [] }, { title: "fab fa-creative-commons-nc-jp", searchTerms: [] }, { title: "fab fa-creative-commons-nd", searchTerms: [] }, { title: "fab fa-creative-commons-pd", searchTerms: [] }, { title: "fab fa-creative-commons-pd-alt", searchTerms: [] }, { title: "fab fa-creative-commons-remix", searchTerms: [] }, { title: "fab fa-creative-commons-sa", searchTerms: [] }, { title: "fab fa-creative-commons-sampling", searchTerms: [] }, { title: "fab fa-creative-commons-sampling-plus", searchTerms: [] }, { title: "fab fa-creative-commons-share", searchTerms: [] }, { title: "fab fa-creative-commons-zero", searchTerms: [] }, { title: "fas fa-credit-card", searchTerms: [ "buy", "checkout", "credit-card-alt", "debit", "money", "payment", "purchase" ] }, { title: "far fa-credit-card", searchTerms: [ "buy", "checkout", "credit-card-alt", "debit", "money", "payment", "purchase" ] }, { title: "fab fa-critical-role", searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop" ] }, { title: "fas fa-crop", searchTerms: [ "design" ] }, { title: "fas fa-crop-alt", searchTerms: [] }, { title: "fas fa-cross", searchTerms: [ "catholicism", "christianity" ] }, { title: "fas fa-crosshairs", searchTerms: [ "gpd", "picker", "position" ] }, { title: "fas fa-crow", searchTerms: [ "bird", "bullfrog", "fauna", "halloween", "holiday", "toad" ] }, { title: "fas fa-crown", searchTerms: [] }, { title: "fab fa-css3", searchTerms: [ "code" ] }, { title: "fab fa-css3-alt", searchTerms: [] }, { title: "fas fa-cube", searchTerms: [ "package" ] }, { title: "fas fa-cubes", searchTerms: [ "packages" ] }, { title: "fas fa-cut", searchTerms: [ "scissors" ] }, { title: "fab fa-cuttlefish", searchTerms: [] }, { title: "fab fa-d-and-d", searchTerms: [] }, { title: "fab fa-d-and-d-beyond", searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "gaming", "tabletop" ] }, { title: "fab fa-dashcube", searchTerms: [] }, { title: "fas fa-database", searchTerms: [] }, { title: "fas fa-deaf", searchTerms: [] }, { title: "fab fa-delicious", searchTerms: [] }, { title: "fas fa-democrat", searchTerms: [ "american", "democratic party", "donkey", "election", "left", "left-wing", "liberal", "politics", "usa" ] }, { title: "fab fa-deploydog", searchTerms: [] }, { title: "fab fa-deskpro", searchTerms: [] }, { title: "fas fa-desktop", searchTerms: [ "computer", "cpu", "demo", "desktop", "device", "machine", "monitor", "pc", "screen" ] }, { title: "fab fa-dev", searchTerms: [] }, { title: "fab fa-deviantart", searchTerms: [] }, { title: "fas fa-dharmachakra", searchTerms: [ "buddhism", "buddhist", "wheel of dharma" ] }, { title: "fas fa-diagnoses", searchTerms: [] }, { title: "fas fa-dice", searchTerms: [ "chance", "gambling", "game", "roll" ] }, { title: "fas fa-dice-d20", searchTerms: [ "Dungeons & Dragons", "chance", "d&d", "dnd", "fantasy", "gambling", "game", "roll" ] }, { title: "fas fa-dice-d6", searchTerms: [ "Dungeons & Dragons", "chance", "d&d", "dnd", "fantasy", "gambling", "game", "roll" ] }, { title: "fas fa-dice-five", searchTerms: [ "chance", "gambling", "game", "roll" ] }, { title: "fas fa-dice-four", searchTerms: [ "chance", "gambling", "game", "roll" ] }, { title: "fas fa-dice-one", searchTerms: [ "chance", "gambling", "game", "roll" ] }, { title: "fas fa-dice-six", searchTerms: [ "chance", "gambling", "game", "roll" ] }, { title: "fas fa-dice-three", searchTerms: [ "chance", "gambling", "game", "roll" ] }, { title: "fas fa-dice-two", searchTerms: [ "chance", "gambling", "game", "roll" ] }, { title: "fab fa-digg", searchTerms: [] }, { title: "fab fa-digital-ocean", searchTerms: [] }, { title: "fas fa-digital-tachograph", searchTerms: [] }, { title: "fas fa-directions", searchTerms: [] }, { title: "fab fa-discord", searchTerms: [] }, { title: "fab fa-discourse", searchTerms: [] }, { title: "fas fa-divide", searchTerms: [] }, { title: "fas fa-dizzy", searchTerms: [ "dazed", "disapprove", "emoticon", "face" ] }, { title: "far fa-dizzy", searchTerms: [ "dazed", "disapprove", "emoticon", "face" ] }, { title: "fas fa-dna", searchTerms: [ "double helix", "helix" ] }, { title: "fab fa-dochub", searchTerms: [] }, { title: "fab fa-docker", searchTerms: [] }, { title: "fas fa-dog", searchTerms: [ "canine", "fauna", "mammmal", "pet", "pooch", "puppy", "woof" ] }, { title: "fas fa-dollar-sign", searchTerms: [ "$", "dollar-sign", "money", "price", "usd" ] }, { title: "fas fa-dolly", searchTerms: [] }, { title: "fas fa-dolly-flatbed", searchTerms: [] }, { title: "fas fa-donate", searchTerms: [ "generosity", "give" ] }, { title: "fas fa-door-closed", searchTerms: [] }, { title: "fas fa-door-open", searchTerms: [] }, { title: "fas fa-dot-circle", searchTerms: [ "bullseye", "notification", "target" ] }, { title: "far fa-dot-circle", searchTerms: [ "bullseye", "notification", "target" ] }, { title: "fas fa-dove", searchTerms: [ "bird", "fauna", "flying", "peace" ] }, { title: "fas fa-download", searchTerms: [ "import" ] }, { title: "fab fa-draft2digital", searchTerms: [] }, { title: "fas fa-drafting-compass", searchTerms: [ "mechanical drawing", "plot", "plotting" ] }, { title: "fas fa-dragon", searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy" ] }, { title: "fas fa-draw-polygon", searchTerms: [] }, { title: "fab fa-dribbble", searchTerms: [] }, { title: "fab fa-dribbble-square", searchTerms: [] }, { title: "fab fa-dropbox", searchTerms: [] }, { title: "fas fa-drum", searchTerms: [ "instrument", "music", "percussion", "snare", "sound" ] }, { title: "fas fa-drum-steelpan", searchTerms: [ "calypso", "instrument", "music", "percussion", "reggae", "snare", "sound", "steel", "tropical" ] }, { title: "fas fa-drumstick-bite", searchTerms: [] }, { title: "fab fa-drupal", searchTerms: [] }, { title: "fas fa-dumbbell", searchTerms: [ "exercise", "gym", "strength", "weight", "weight-lifting" ] }, { title: "fas fa-dungeon", searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "door", "entrance", "fantasy", "gate" ] }, { title: "fab fa-dyalog", searchTerms: [] }, { title: "fab fa-earlybirds", searchTerms: [] }, { title: "fab fa-ebay", searchTerms: [] }, { title: "fab fa-edge", searchTerms: [ "browser", "ie" ] }, { title: "fas fa-edit", searchTerms: [ "edit", "pen", "pencil", "update", "write" ] }, { title: "far fa-edit", searchTerms: [ "edit", "pen", "pencil", "update", "write" ] }, { title: "fas fa-eject", searchTerms: [] }, { title: "fab fa-elementor", searchTerms: [] }, { title: "fas fa-ellipsis-h", searchTerms: [ "dots", "drag", "kebab", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "ul" ] }, { title: "fas fa-ellipsis-v", searchTerms: [ "dots", "drag", "kebab", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "ul" ] }, { title: "fab fa-ello", searchTerms: [] }, { title: "fab fa-ember", searchTerms: [] }, { title: "fab fa-empire", searchTerms: [] }, { title: "fas fa-envelope", searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ] }, { title: "far fa-envelope", searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ] }, { title: "fas fa-envelope-open", searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ] }, { title: "far fa-envelope-open", searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ] }, { title: "fas fa-envelope-open-text", searchTerms: [] }, { title: "fas fa-envelope-square", searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ] }, { title: "fab fa-envira", searchTerms: [ "leaf" ] }, { title: "fas fa-equals", searchTerms: [] }, { title: "fas fa-eraser", searchTerms: [ "delete", "remove" ] }, { title: "fab fa-erlang", searchTerms: [] }, { title: "fab fa-ethereum", searchTerms: [] }, { title: "fab fa-etsy", searchTerms: [] }, { title: "fas fa-euro-sign", searchTerms: [ "eur" ] }, { title: "fas fa-exchange-alt", searchTerms: [ "arrow", "arrows", "exchange", "reciprocate", "return", "swap", "transfer" ] }, { title: "fas fa-exclamation", searchTerms: [ "alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning" ] }, { title: "fas fa-exclamation-circle", searchTerms: [ "alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning" ] }, { title: "fas fa-exclamation-triangle", searchTerms: [ "alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning" ] }, { title: "fas fa-expand", searchTerms: [ "bigger", "enlarge", "resize" ] }, { title: "fas fa-expand-arrows-alt", searchTerms: [ "arrows-alt", "bigger", "enlarge", "move", "resize" ] }, { title: "fab fa-expeditedssl", searchTerms: [] }, { title: "fas fa-external-link-alt", searchTerms: [ "external-link", "new", "open" ] }, { title: "fas fa-external-link-square-alt", searchTerms: [ "external-link-square", "new", "open" ] }, { title: "fas fa-eye", searchTerms: [ "optic", "see", "seen", "show", "sight", "views", "visible" ] }, { title: "far fa-eye", searchTerms: [ "optic", "see", "seen", "show", "sight", "views", "visible" ] }, { title: "fas fa-eye-dropper", searchTerms: [ "eyedropper" ] }, { title: "fas fa-eye-slash", searchTerms: [ "blind", "hide", "show", "toggle", "unseen", "views", "visible", "visiblity" ] }, { title: "far fa-eye-slash", searchTerms: [ "blind", "hide", "show", "toggle", "unseen", "views", "visible", "visiblity" ] }, { title: "fab fa-facebook", searchTerms: [ "facebook-official", "social network" ] }, { title: "fab fa-facebook-f", searchTerms: [ "facebook" ] }, { title: "fab fa-facebook-messenger", searchTerms: [] }, { title: "fab fa-facebook-square", searchTerms: [ "social network" ] }, { title: "fab fa-fantasy-flight-games", searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop" ] }, { title: "fas fa-fast-backward", searchTerms: [ "beginning", "first", "previous", "rewind", "start" ] }, { title: "fas fa-fast-forward", searchTerms: [ "end", "last", "next" ] }, { title: "fas fa-fax", searchTerms: [] }, { title: "fas fa-feather", searchTerms: [ "bird", "light", "plucked", "quill" ] }, { title: "fas fa-feather-alt", searchTerms: [ "bird", "light", "plucked", "quill" ] }, { title: "fas fa-female", searchTerms: [ "human", "person", "profile", "user", "woman" ] }, { title: "fas fa-fighter-jet", searchTerms: [ "airplane", "fast", "fly", "goose", "maverick", "plane", "quick", "top gun", "transportation", "travel" ] }, { title: "fas fa-file", searchTerms: [ "document", "new", "page", "pdf", "resume" ] }, { title: "far fa-file", searchTerms: [ "document", "new", "page", "pdf", "resume" ] }, { title: "fas fa-file-alt", searchTerms: [ "document", "file-text", "invoice", "new", "page", "pdf" ] }, { title: "far fa-file-alt", searchTerms: [ "document", "file-text", "invoice", "new", "page", "pdf" ] }, { title: "fas fa-file-archive", searchTerms: [ ".zip", "bundle", "compress", "compression", "download", "zip" ] }, { title: "far fa-file-archive", searchTerms: [ ".zip", "bundle", "compress", "compression", "download", "zip" ] }, { title: "fas fa-file-audio", searchTerms: [] }, { title: "far fa-file-audio", searchTerms: [] }, { title: "fas fa-file-code", searchTerms: [] }, { title: "far fa-file-code", searchTerms: [] }, { title: "fas fa-file-contract", searchTerms: [ "agreement", "binding", "document", "legal", "signature" ] }, { title: "fas fa-file-csv", searchTerms: [ "spreadsheets" ] }, { title: "fas fa-file-download", searchTerms: [] }, { title: "fas fa-file-excel", searchTerms: [] }, { title: "far fa-file-excel", searchTerms: [] }, { title: "fas fa-file-export", searchTerms: [] }, { title: "fas fa-file-image", searchTerms: [] }, { title: "far fa-file-image", searchTerms: [] }, { title: "fas fa-file-import", searchTerms: [] }, { title: "fas fa-file-invoice", searchTerms: [ "bill", "document", "receipt" ] }, { title: "fas fa-file-invoice-dollar", searchTerms: [ "$", "bill", "document", "dollar-sign", "money", "receipt", "usd" ] }, { title: "fas fa-file-medical", searchTerms: [] }, { title: "fas fa-file-medical-alt", searchTerms: [] }, { title: "fas fa-file-pdf", searchTerms: [] }, { title: "far fa-file-pdf", searchTerms: [] }, { title: "fas fa-file-powerpoint", searchTerms: [] }, { title: "far fa-file-powerpoint", searchTerms: [] }, { title: "fas fa-file-prescription", searchTerms: [ "drugs", "medical", "medicine", "rx" ] }, { title: "fas fa-file-signature", searchTerms: [ "John Hancock", "contract", "document", "name" ] }, { title: "fas fa-file-upload", searchTerms: [] }, { title: "fas fa-file-video", searchTerms: [] }, { title: "far fa-file-video", searchTerms: [] }, { title: "fas fa-file-word", searchTerms: [] }, { title: "far fa-file-word", searchTerms: [] }, { title: "fas fa-fill", searchTerms: [ "bucket", "color", "paint", "paint bucket" ] }, { title: "fas fa-fill-drip", searchTerms: [ "bucket", "color", "drop", "paint", "paint bucket", "spill" ] }, { title: "fas fa-film", searchTerms: [ "movie" ] }, { title: "fas fa-filter", searchTerms: [ "funnel", "options" ] }, { title: "fas fa-fingerprint", searchTerms: [ "human", "id", "identification", "lock", "smudge", "touch", "unique", "unlock" ] }, { title: "fas fa-fire", searchTerms: [ "caliente", "flame", "heat", "hot", "popular" ] }, { title: "fas fa-fire-extinguisher", searchTerms: [] }, { title: "fab fa-firefox", searchTerms: [ "browser" ] }, { title: "fas fa-first-aid", searchTerms: [] }, { title: "fab fa-first-order", searchTerms: [] }, { title: "fab fa-first-order-alt", searchTerms: [] }, { title: "fab fa-firstdraft", searchTerms: [] }, { title: "fas fa-fish", searchTerms: [ "fauna", "gold", "swimming" ] }, { title: "fas fa-fist-raised", searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "hand", "ki", "monk", "resist", "strength", "unarmed combat" ] }, { title: "fas fa-flag", searchTerms: [ "country", "notice", "notification", "notify", "pole", "report", "symbol" ] }, { title: "far fa-flag", searchTerms: [ "country", "notice", "notification", "notify", "pole", "report", "symbol" ] }, { title: "fas fa-flag-checkered", searchTerms: [ "notice", "notification", "notify", "pole", "racing", "report", "symbol" ] }, { title: "fas fa-flag-usa", searchTerms: [ "betsy ross", "country", "old glory", "stars", "stripes", "symbol" ] }, { title: "fas fa-flask", searchTerms: [ "beaker", "experimental", "labs", "science" ] }, { title: "fab fa-flickr", searchTerms: [] }, { title: "fab fa-flipboard", searchTerms: [] }, { title: "fas fa-flushed", searchTerms: [ "embarrassed", "emoticon", "face" ] }, { title: "far fa-flushed", searchTerms: [ "embarrassed", "emoticon", "face" ] }, { title: "fab fa-fly", searchTerms: [] }, { title: "fas fa-folder", searchTerms: [] }, { title: "far fa-folder", searchTerms: [] }, { title: "fas fa-folder-minus", searchTerms: [ "archive", "delete", "negative", "remove" ] }, { title: "fas fa-folder-open", searchTerms: [] }, { title: "far fa-folder-open", searchTerms: [] }, { title: "fas fa-folder-plus", searchTerms: [ "add", "create", "new", "positive" ] }, { title: "fas fa-font", searchTerms: [ "text" ] }, { title: "fab fa-font-awesome", searchTerms: [ "meanpath" ] }, { title: "fab fa-font-awesome-alt", searchTerms: [] }, { title: "fab fa-font-awesome-flag", searchTerms: [] }, { title: "far fa-font-awesome-logo-full", searchTerms: [] }, { title: "fas fa-font-awesome-logo-full", searchTerms: [] }, { title: "fab fa-font-awesome-logo-full", searchTerms: [] }, { title: "fab fa-fonticons", searchTerms: [] }, { title: "fab fa-fonticons-fi", searchTerms: [] }, { title: "fas fa-football-ball", searchTerms: [ "fall", "pigskin", "seasonal" ] }, { title: "fab fa-fort-awesome", searchTerms: [ "castle" ] }, { title: "fab fa-fort-awesome-alt", searchTerms: [ "castle" ] }, { title: "fab fa-forumbee", searchTerms: [] }, { title: "fas fa-forward", searchTerms: [ "forward", "next" ] }, { title: "fab fa-foursquare", searchTerms: [] }, { title: "fab fa-free-code-camp", searchTerms: [] }, { title: "fab fa-freebsd", searchTerms: [] }, { title: "fas fa-frog", searchTerms: [ "amphibian", "bullfrog", "fauna", "hop", "kermit", "kiss", "prince", "ribbit", "toad", "wart" ] }, { title: "fas fa-frown", searchTerms: [ "disapprove", "emoticon", "face", "rating", "sad" ] }, { title: "far fa-frown", searchTerms: [ "disapprove", "emoticon", "face", "rating", "sad" ] }, { title: "fas fa-frown-open", searchTerms: [ "disapprove", "emoticon", "face", "rating", "sad" ] }, { title: "far fa-frown-open", searchTerms: [ "disapprove", "emoticon", "face", "rating", "sad" ] }, { title: "fab fa-fulcrum", searchTerms: [] }, { title: "fas fa-funnel-dollar", searchTerms: [] }, { title: "fas fa-futbol", searchTerms: [ "ball", "football", "soccer" ] }, { title: "far fa-futbol", searchTerms: [ "ball", "football", "soccer" ] }, { title: "fab fa-galactic-republic", searchTerms: [ "politics", "star wars" ] }, { title: "fab fa-galactic-senate", searchTerms: [ "star wars" ] }, { title: "fas fa-gamepad", searchTerms: [ "controller" ] }, { title: "fas fa-gas-pump", searchTerms: [] }, { title: "fas fa-gavel", searchTerms: [ "hammer", "judge", "lawyer", "opinion" ] }, { title: "fas fa-gem", searchTerms: [ "diamond" ] }, { title: "far fa-gem", searchTerms: [ "diamond" ] }, { title: "fas fa-genderless", searchTerms: [] }, { title: "fab fa-get-pocket", searchTerms: [] }, { title: "fab fa-gg", searchTerms: [] }, { title: "fab fa-gg-circle", searchTerms: [] }, { title: "fas fa-ghost", searchTerms: [ "apparition", "blinky", "clyde", "floating", "halloween", "holiday", "inky", "pinky", "spirit" ] }, { title: "fas fa-gift", searchTerms: [ "generosity", "giving", "party", "present", "wrapped" ] }, { title: "fab fa-git", searchTerms: [] }, { title: "fab fa-git-square", searchTerms: [] }, { title: "fab fa-github", searchTerms: [ "octocat" ] }, { title: "fab fa-github-alt", searchTerms: [ "octocat" ] }, { title: "fab fa-github-square", searchTerms: [ "octocat" ] }, { title: "fab fa-gitkraken", searchTerms: [] }, { title: "fab fa-gitlab", searchTerms: [ "Axosoft" ] }, { title: "fab fa-gitter", searchTerms: [] }, { title: "fas fa-glass-martini", searchTerms: [ "alcohol", "bar", "beverage", "drink", "glass", "liquor", "martini" ] }, { title: "fas fa-glass-martini-alt", searchTerms: [] }, { title: "fas fa-glasses", searchTerms: [ "foureyes", "hipster", "nerd", "reading", "sight", "spectacles" ] }, { title: "fab fa-glide", searchTerms: [] }, { title: "fab fa-glide-g", searchTerms: [] }, { title: "fas fa-globe", searchTerms: [ "all", "coordinates", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ] }, { title: "fas fa-globe-africa", searchTerms: [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ] }, { title: "fas fa-globe-americas", searchTerms: [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ] }, { title: "fas fa-globe-asia", searchTerms: [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ] }, { title: "fab fa-gofore", searchTerms: [] }, { title: "fas fa-golf-ball", searchTerms: [] }, { title: "fab fa-goodreads", searchTerms: [] }, { title: "fab fa-goodreads-g", searchTerms: [] }, { title: "fab fa-google", searchTerms: [] }, { title: "fab fa-google-drive", searchTerms: [] }, { title: "fab fa-google-play", searchTerms: [] }, { title: "fab fa-google-plus", searchTerms: [ "google-plus-circle", "google-plus-official" ] }, { title: "fab fa-google-plus-g", searchTerms: [ "google-plus", "social network" ] }, { title: "fab fa-google-plus-square", searchTerms: [ "social network" ] }, { title: "fab fa-google-wallet", searchTerms: [] }, { title: "fas fa-gopuram", searchTerms: [ "building", "entrance", "hinduism", "temple", "tower" ] }, { title: "fas fa-graduation-cap", searchTerms: [ "learning", "school", "student" ] }, { title: "fab fa-gratipay", searchTerms: [ "favorite", "heart", "like", "love" ] }, { title: "fab fa-grav", searchTerms: [] }, { title: "fas fa-greater-than", searchTerms: [] }, { title: "fas fa-greater-than-equal", searchTerms: [] }, { title: "fas fa-grimace", searchTerms: [ "cringe", "emoticon", "face" ] }, { title: "far fa-grimace", searchTerms: [ "cringe", "emoticon", "face" ] }, { title: "fas fa-grin", searchTerms: [ "emoticon", "face", "laugh", "smile" ] }, { title: "far fa-grin", searchTerms: [ "emoticon", "face", "laugh", "smile" ] }, { title: "fas fa-grin-alt", searchTerms: [ "emoticon", "face", "laugh", "smile" ] }, { title: "far fa-grin-alt", searchTerms: [ "emoticon", "face", "laugh", "smile" ] }, { title: "fas fa-grin-beam", searchTerms: [ "emoticon", "face", "laugh", "smile" ] }, { title: "far fa-grin-beam", searchTerms: [ "emoticon", "face", "laugh", "smile" ] }, { title: "fas fa-grin-beam-sweat", searchTerms: [ "emoticon", "face", "smile" ] }, { title: "far fa-grin-beam-sweat", searchTerms: [ "emoticon", "face", "smile" ] }, { title: "fas fa-grin-hearts", searchTerms: [ "emoticon", "face", "love", "smile" ] }, { title: "far fa-grin-hearts", searchTerms: [ "emoticon", "face", "love", "smile" ] }, { title: "fas fa-grin-squint", searchTerms: [ "emoticon", "face", "laugh", "smile" ] }, { title: "far fa-grin-squint", searchTerms: [ "emoticon", "face", "laugh", "smile" ] }, { title: "fas fa-grin-squint-tears", searchTerms: [ "emoticon", "face", "happy", "smile" ] }, { title: "far fa-grin-squint-tears", searchTerms: [ "emoticon", "face", "happy", "smile" ] }, { title: "fas fa-grin-stars", searchTerms: [ "emoticon", "face", "star-struck" ] }, { title: "far fa-grin-stars", searchTerms: [ "emoticon", "face", "star-struck" ] }, { title: "fas fa-grin-tears", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "far fa-grin-tears", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "fas fa-grin-tongue", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "far fa-grin-tongue", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "fas fa-grin-tongue-squint", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "far fa-grin-tongue-squint", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "fas fa-grin-tongue-wink", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "far fa-grin-tongue-wink", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "fas fa-grin-wink", searchTerms: [ "emoticon", "face", "flirt", "laugh", "smile" ] }, { title: "far fa-grin-wink", searchTerms: [ "emoticon", "face", "flirt", "laugh", "smile" ] }, { title: "fas fa-grip-horizontal", searchTerms: [ "affordance", "drag", "drop", "grab", "handle" ] }, { title: "fas fa-grip-vertical", searchTerms: [ "affordance", "drag", "drop", "grab", "handle" ] }, { title: "fab fa-gripfire", searchTerms: [] }, { title: "fab fa-grunt", searchTerms: [] }, { title: "fab fa-gulp", searchTerms: [] }, { title: "fas fa-h-square", searchTerms: [ "hospital", "hotel" ] }, { title: "fab fa-hacker-news", searchTerms: [] }, { title: "fab fa-hacker-news-square", searchTerms: [] }, { title: "fab fa-hackerrank", searchTerms: [] }, { title: "fas fa-hammer", searchTerms: [ "admin", "fix", "repair", "settings", "tool" ] }, { title: "fas fa-hamsa", searchTerms: [ "amulet", "christianity", "islam", "jewish", "judaism", "muslim", "protection" ] }, { title: "fas fa-hand-holding", searchTerms: [] }, { title: "fas fa-hand-holding-heart", searchTerms: [] }, { title: "fas fa-hand-holding-usd", searchTerms: [ "$", "dollar sign", "donation", "giving", "money", "price" ] }, { title: "fas fa-hand-lizard", searchTerms: [] }, { title: "far fa-hand-lizard", searchTerms: [] }, { title: "fas fa-hand-paper", searchTerms: [ "stop" ] }, { title: "far fa-hand-paper", searchTerms: [ "stop" ] }, { title: "fas fa-hand-peace", searchTerms: [] }, { title: "far fa-hand-peace", searchTerms: [] }, { title: "fas fa-hand-point-down", searchTerms: [ "finger", "hand-o-down", "point" ] }, { title: "far fa-hand-point-down", searchTerms: [ "finger", "hand-o-down", "point" ] }, { title: "fas fa-hand-point-left", searchTerms: [ "back", "finger", "hand-o-left", "left", "point", "previous" ] }, { title: "far fa-hand-point-left", searchTerms: [ "back", "finger", "hand-o-left", "left", "point", "previous" ] }, { title: "fas fa-hand-point-right", searchTerms: [ "finger", "forward", "hand-o-right", "next", "point", "right" ] }, { title: "far fa-hand-point-right", searchTerms: [ "finger", "forward", "hand-o-right", "next", "point", "right" ] }, { title: "fas fa-hand-point-up", searchTerms: [ "finger", "hand-o-up", "point" ] }, { title: "far fa-hand-point-up", searchTerms: [ "finger", "hand-o-up", "point" ] }, { title: "fas fa-hand-pointer", searchTerms: [ "select" ] }, { title: "far fa-hand-pointer", searchTerms: [ "select" ] }, { title: "fas fa-hand-rock", searchTerms: [] }, { title: "far fa-hand-rock", searchTerms: [] }, { title: "fas fa-hand-scissors", searchTerms: [] }, { title: "far fa-hand-scissors", searchTerms: [] }, { title: "fas fa-hand-spock", searchTerms: [] }, { title: "far fa-hand-spock", searchTerms: [] }, { title: "fas fa-hands", searchTerms: [] }, { title: "fas fa-hands-helping", searchTerms: [ "aid", "assistance", "partnership", "volunteering" ] }, { title: "fas fa-handshake", searchTerms: [ "greeting", "partnership" ] }, { title: "far fa-handshake", searchTerms: [ "greeting", "partnership" ] }, { title: "fas fa-hanukiah", searchTerms: [ "candle", "hanukkah", "jewish", "judaism", "light" ] }, { title: "fas fa-hashtag", searchTerms: [] }, { title: "fas fa-hat-wizard", searchTerms: [ "Dungeons & Dragons", "buckle", "cloth", "clothing", "d&d", "dnd", "fantasy", "halloween", "holiday", "mage", "magic", "pointy", "witch" ] }, { title: "fas fa-haykal", searchTerms: [ "bahai", "bahá'í", "star" ] }, { title: "fas fa-hdd", searchTerms: [ "cpu", "hard drive", "harddrive", "machine", "save", "storage" ] }, { title: "far fa-hdd", searchTerms: [ "cpu", "hard drive", "harddrive", "machine", "save", "storage" ] }, { title: "fas fa-heading", searchTerms: [ "header" ] }, { title: "fas fa-headphones", searchTerms: [ "audio", "listen", "music", "sound", "speaker" ] }, { title: "fas fa-headphones-alt", searchTerms: [ "audio", "listen", "music", "sound", "speaker" ] }, { title: "fas fa-headset", searchTerms: [ "audio", "gamer", "gaming", "listen", "live chat", "microphone", "shot caller", "sound", "support", "telemarketer" ] }, { title: "fas fa-heart", searchTerms: [ "favorite", "like", "love" ] }, { title: "far fa-heart", searchTerms: [ "favorite", "like", "love" ] }, { title: "fas fa-heartbeat", searchTerms: [ "ekg", "lifeline", "vital signs" ] }, { title: "fas fa-helicopter", searchTerms: [ "airwolf", "apache", "chopper", "flight", "fly" ] }, { title: "fas fa-highlighter", searchTerms: [ "edit", "marker", "sharpie", "update", "write" ] }, { title: "fas fa-hiking", searchTerms: [ "activity", "backpack", "fall", "fitness", "outdoors", "seasonal", "walking" ] }, { title: "fas fa-hippo", searchTerms: [ "fauna", "hungry", "mammmal" ] }, { title: "fab fa-hips", searchTerms: [] }, { title: "fab fa-hire-a-helper", searchTerms: [] }, { title: "fas fa-history", searchTerms: [] }, { title: "fas fa-hockey-puck", searchTerms: [] }, { title: "fas fa-home", searchTerms: [ "house", "main" ] }, { title: "fab fa-hooli", searchTerms: [] }, { title: "fab fa-hornbill", searchTerms: [] }, { title: "fas fa-horse", searchTerms: [ "equus", "fauna", "mammmal", "neigh" ] }, { title: "fas fa-hospital", searchTerms: [ "building", "emergency room", "medical center" ] }, { title: "far fa-hospital", searchTerms: [ "building", "emergency room", "medical center" ] }, { title: "fas fa-hospital-alt", searchTerms: [ "building", "emergency room", "medical center" ] }, { title: "fas fa-hospital-symbol", searchTerms: [] }, { title: "fas fa-hot-tub", searchTerms: [] }, { title: "fas fa-hotel", searchTerms: [ "building", "lodging" ] }, { title: "fab fa-hotjar", searchTerms: [] }, { title: "fas fa-hourglass", searchTerms: [] }, { title: "far fa-hourglass", searchTerms: [] }, { title: "fas fa-hourglass-end", searchTerms: [] }, { title: "fas fa-hourglass-half", searchTerms: [] }, { title: "fas fa-hourglass-start", searchTerms: [] }, { title: "fas fa-house-damage", searchTerms: [ "devastation", "home" ] }, { title: "fab fa-houzz", searchTerms: [] }, { title: "fas fa-hryvnia", searchTerms: [ "money" ] }, { title: "fab fa-html5", searchTerms: [] }, { title: "fab fa-hubspot", searchTerms: [] }, { title: "fas fa-i-cursor", searchTerms: [] }, { title: "fas fa-id-badge", searchTerms: [] }, { title: "far fa-id-badge", searchTerms: [] }, { title: "fas fa-id-card", searchTerms: [ "document", "identification", "issued" ] }, { title: "far fa-id-card", searchTerms: [ "document", "identification", "issued" ] }, { title: "fas fa-id-card-alt", searchTerms: [ "demographics" ] }, { title: "fas fa-image", searchTerms: [ "album", "photo", "picture" ] }, { title: "far fa-image", searchTerms: [ "album", "photo", "picture" ] }, { title: "fas fa-images", searchTerms: [ "album", "photo", "picture" ] }, { title: "far fa-images", searchTerms: [ "album", "photo", "picture" ] }, { title: "fab fa-imdb", searchTerms: [] }, { title: "fas fa-inbox", searchTerms: [] }, { title: "fas fa-indent", searchTerms: [] }, { title: "fas fa-industry", searchTerms: [ "factory", "manufacturing" ] }, { title: "fas fa-infinity", searchTerms: [] }, { title: "fas fa-info", searchTerms: [ "details", "help", "information", "more" ] }, { title: "fas fa-info-circle", searchTerms: [ "details", "help", "information", "more" ] }, { title: "fab fa-instagram", searchTerms: [] }, { title: "fab fa-internet-explorer", searchTerms: [ "browser", "ie" ] }, { title: "fab fa-ioxhost", searchTerms: [] }, { title: "fas fa-italic", searchTerms: [ "italics" ] }, { title: "fab fa-itunes", searchTerms: [] }, { title: "fab fa-itunes-note", searchTerms: [] }, { title: "fab fa-java", searchTerms: [] }, { title: "fas fa-jedi", searchTerms: [ "star wars" ] }, { title: "fab fa-jedi-order", searchTerms: [ "star wars" ] }, { title: "fab fa-jenkins", searchTerms: [] }, { title: "fab fa-joget", searchTerms: [] }, { title: "fas fa-joint", searchTerms: [ "blunt", "cannabis", "doobie", "drugs", "marijuana", "roach", "smoke", "smoking", "spliff" ] }, { title: "fab fa-joomla", searchTerms: [] }, { title: "fas fa-journal-whills", searchTerms: [ "book", "jedi", "star wars", "the force" ] }, { title: "fab fa-js", searchTerms: [] }, { title: "fab fa-js-square", searchTerms: [] }, { title: "fab fa-jsfiddle", searchTerms: [] }, { title: "fas fa-kaaba", searchTerms: [ "building", "cube", "islam", "muslim" ] }, { title: "fab fa-kaggle", searchTerms: [] }, { title: "fas fa-key", searchTerms: [ "password", "unlock" ] }, { title: "fab fa-keybase", searchTerms: [] }, { title: "fas fa-keyboard", searchTerms: [ "input", "type" ] }, { title: "far fa-keyboard", searchTerms: [ "input", "type" ] }, { title: "fab fa-keycdn", searchTerms: [] }, { title: "fas fa-khanda", searchTerms: [ "chakkar", "sikh", "sikhism", "sword" ] }, { title: "fab fa-kickstarter", searchTerms: [] }, { title: "fab fa-kickstarter-k", searchTerms: [] }, { title: "fas fa-kiss", searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ] }, { title: "far fa-kiss", searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ] }, { title: "fas fa-kiss-beam", searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ] }, { title: "far fa-kiss-beam", searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ] }, { title: "fas fa-kiss-wink-heart", searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ] }, { title: "far fa-kiss-wink-heart", searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ] }, { title: "fas fa-kiwi-bird", searchTerms: [ "bird", "fauna" ] }, { title: "fab fa-korvue", searchTerms: [] }, { title: "fas fa-landmark", searchTerms: [ "building", "historic", "memoroable", "politics" ] }, { title: "fas fa-language", searchTerms: [ "dialect", "idiom", "localize", "speech", "translate", "vernacular" ] }, { title: "fas fa-laptop", searchTerms: [ "computer", "cpu", "dell", "demo", "device", "dude you're getting", "mac", "macbook", "machine", "pc" ] }, { title: "fas fa-laptop-code", searchTerms: [] }, { title: "fab fa-laravel", searchTerms: [] }, { title: "fab fa-lastfm", searchTerms: [] }, { title: "fab fa-lastfm-square", searchTerms: [] }, { title: "fas fa-laugh", searchTerms: [ "LOL", "emoticon", "face", "laugh" ] }, { title: "far fa-laugh", searchTerms: [ "LOL", "emoticon", "face", "laugh" ] }, { title: "fas fa-laugh-beam", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "far fa-laugh-beam", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "fas fa-laugh-squint", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "far fa-laugh-squint", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "fas fa-laugh-wink", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "far fa-laugh-wink", searchTerms: [ "LOL", "emoticon", "face" ] }, { title: "fas fa-layer-group", searchTerms: [ "layers" ] }, { title: "fas fa-leaf", searchTerms: [ "eco", "flora", "nature", "plant" ] }, { title: "fab fa-leanpub", searchTerms: [] }, { title: "fas fa-lemon", searchTerms: [ "food" ] }, { title: "far fa-lemon", searchTerms: [ "food" ] }, { title: "fab fa-less", searchTerms: [] }, { title: "fas fa-less-than", searchTerms: [] }, { title: "fas fa-less-than-equal", searchTerms: [] }, { title: "fas fa-level-down-alt", searchTerms: [ "level-down" ] }, { title: "fas fa-level-up-alt", searchTerms: [ "level-up" ] }, { title: "fas fa-life-ring", searchTerms: [ "support" ] }, { title: "far fa-life-ring", searchTerms: [ "support" ] }, { title: "fas fa-lightbulb", searchTerms: [ "idea", "inspiration" ] }, { title: "far fa-lightbulb", searchTerms: [ "idea", "inspiration" ] }, { title: "fab fa-line", searchTerms: [] }, { title: "fas fa-link", searchTerms: [ "chain" ] }, { title: "fab fa-linkedin", searchTerms: [ "linkedin-square" ] }, { title: "fab fa-linkedin-in", searchTerms: [ "linkedin" ] }, { title: "fab fa-linode", searchTerms: [] }, { title: "fab fa-linux", searchTerms: [ "tux" ] }, { title: "fas fa-lira-sign", searchTerms: [ "try", "turkish" ] }, { title: "fas fa-list", searchTerms: [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ] }, { title: "fas fa-list-alt", searchTerms: [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ] }, { title: "far fa-list-alt", searchTerms: [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ] }, { title: "fas fa-list-ol", searchTerms: [ "checklist", "list", "numbers", "ol", "todo", "ul" ] }, { title: "fas fa-list-ul", searchTerms: [ "checklist", "list", "ol", "todo", "ul" ] }, { title: "fas fa-location-arrow", searchTerms: [ "address", "coordinates", "gps", "location", "map", "place", "where" ] }, { title: "fas fa-lock", searchTerms: [ "admin", "protect", "security" ] }, { title: "fas fa-lock-open", searchTerms: [ "admin", "lock", "open", "password", "protect" ] }, { title: "fas fa-long-arrow-alt-down", searchTerms: [ "long-arrow-down" ] }, { title: "fas fa-long-arrow-alt-left", searchTerms: [ "back", "long-arrow-left", "previous" ] }, { title: "fas fa-long-arrow-alt-right", searchTerms: [ "long-arrow-right" ] }, { title: "fas fa-long-arrow-alt-up", searchTerms: [ "long-arrow-up" ] }, { title: "fas fa-low-vision", searchTerms: [] }, { title: "fas fa-luggage-cart", searchTerms: [] }, { title: "fab fa-lyft", searchTerms: [] }, { title: "fab fa-magento", searchTerms: [] }, { title: "fas fa-magic", searchTerms: [ "autocomplete", "automatic", "mage", "magic", "spell", "witch", "wizard" ] }, { title: "fas fa-magnet", searchTerms: [] }, { title: "fas fa-mail-bulk", searchTerms: [] }, { title: "fab fa-mailchimp", searchTerms: [] }, { title: "fas fa-male", searchTerms: [ "human", "man", "person", "profile", "user" ] }, { title: "fab fa-mandalorian", searchTerms: [] }, { title: "fas fa-map", searchTerms: [ "coordinates", "location", "paper", "place", "travel" ] }, { title: "far fa-map", searchTerms: [ "coordinates", "location", "paper", "place", "travel" ] }, { title: "fas fa-map-marked", searchTerms: [ "address", "coordinates", "destination", "gps", "localize", "location", "map", "paper", "pin", "place", "point of interest", "position", "route", "travel", "where" ] }, { title: "fas fa-map-marked-alt", searchTerms: [ "address", "coordinates", "destination", "gps", "localize", "location", "map", "paper", "pin", "place", "point of interest", "position", "route", "travel", "where" ] }, { title: "fas fa-map-marker", searchTerms: [ "address", "coordinates", "gps", "localize", "location", "map", "pin", "place", "position", "travel", "where" ] }, { title: "fas fa-map-marker-alt", searchTerms: [ "address", "coordinates", "gps", "localize", "location", "map", "pin", "place", "position", "travel", "where" ] }, { title: "fas fa-map-pin", searchTerms: [ "address", "coordinates", "gps", "localize", "location", "map", "marker", "place", "position", "travel", "where" ] }, { title: "fas fa-map-signs", searchTerms: [] }, { title: "fab fa-markdown", searchTerms: [] }, { title: "fas fa-marker", searchTerms: [ "edit", "sharpie", "update", "write" ] }, { title: "fas fa-mars", searchTerms: [ "male" ] }, { title: "fas fa-mars-double", searchTerms: [] }, { title: "fas fa-mars-stroke", searchTerms: [] }, { title: "fas fa-mars-stroke-h", searchTerms: [] }, { title: "fas fa-mars-stroke-v", searchTerms: [] }, { title: "fas fa-mask", searchTerms: [ "costume", "disguise", "halloween", "holiday", "secret", "super hero" ] }, { title: "fab fa-mastodon", searchTerms: [] }, { title: "fab fa-maxcdn", searchTerms: [] }, { title: "fas fa-medal", searchTerms: [] }, { title: "fab fa-medapps", searchTerms: [] }, { title: "fab fa-medium", searchTerms: [] }, { title: "fab fa-medium-m", searchTerms: [] }, { title: "fas fa-medkit", searchTerms: [ "first aid", "firstaid", "health", "help", "support" ] }, { title: "fab fa-medrt", searchTerms: [] }, { title: "fab fa-meetup", searchTerms: [] }, { title: "fab fa-megaport", searchTerms: [] }, { title: "fas fa-meh", searchTerms: [ "emoticon", "face", "neutral", "rating" ] }, { title: "far fa-meh", searchTerms: [ "emoticon", "face", "neutral", "rating" ] }, { title: "fas fa-meh-blank", searchTerms: [ "emoticon", "face", "neutral", "rating" ] }, { title: "far fa-meh-blank", searchTerms: [ "emoticon", "face", "neutral", "rating" ] }, { title: "fas fa-meh-rolling-eyes", searchTerms: [ "emoticon", "face", "neutral", "rating" ] }, { title: "far fa-meh-rolling-eyes", searchTerms: [ "emoticon", "face", "neutral", "rating" ] }, { title: "fas fa-memory", searchTerms: [ "DIMM", "RAM" ] }, { title: "fas fa-menorah", searchTerms: [ "candle", "hanukkah", "jewish", "judaism", "light" ] }, { title: "fas fa-mercury", searchTerms: [ "transgender" ] }, { title: "fas fa-meteor", searchTerms: [] }, { title: "fas fa-microchip", searchTerms: [ "cpu", "processor" ] }, { title: "fas fa-microphone", searchTerms: [ "record", "sound", "voice" ] }, { title: "fas fa-microphone-alt", searchTerms: [ "record", "sound", "voice" ] }, { title: "fas fa-microphone-alt-slash", searchTerms: [ "disable", "mute", "record", "sound", "voice" ] }, { title: "fas fa-microphone-slash", searchTerms: [ "disable", "mute", "record", "sound", "voice" ] }, { title: "fas fa-microscope", searchTerms: [] }, { title: "fab fa-microsoft", searchTerms: [] }, { title: "fas fa-minus", searchTerms: [ "collapse", "delete", "hide", "minify", "negative", "remove", "trash" ] }, { title: "fas fa-minus-circle", searchTerms: [ "delete", "hide", "negative", "remove", "trash" ] }, { title: "fas fa-minus-square", searchTerms: [ "collapse", "delete", "hide", "minify", "negative", "remove", "trash" ] }, { title: "far fa-minus-square", searchTerms: [ "collapse", "delete", "hide", "minify", "negative", "remove", "trash" ] }, { title: "fab fa-mix", searchTerms: [] }, { title: "fab fa-mixcloud", searchTerms: [] }, { title: "fab fa-mizuni", searchTerms: [] }, { title: "fas fa-mobile", searchTerms: [ "apple", "call", "cell phone", "cellphone", "device", "iphone", "number", "screen", "telephone", "text" ] }, { title: "fas fa-mobile-alt", searchTerms: [ "apple", "call", "cell phone", "cellphone", "device", "iphone", "number", "screen", "telephone", "text" ] }, { title: "fab fa-modx", searchTerms: [] }, { title: "fab fa-monero", searchTerms: [] }, { title: "fas fa-money-bill", searchTerms: [ "buy", "cash", "checkout", "money", "payment", "price", "purchase" ] }, { title: "fas fa-money-bill-alt", searchTerms: [ "buy", "cash", "checkout", "money", "payment", "price", "purchase" ] }, { title: "far fa-money-bill-alt", searchTerms: [ "buy", "cash", "checkout", "money", "payment", "price", "purchase" ] }, { title: "fas fa-money-bill-wave", searchTerms: [] }, { title: "fas fa-money-bill-wave-alt", searchTerms: [] }, { title: "fas fa-money-check", searchTerms: [ "bank check", "cheque" ] }, { title: "fas fa-money-check-alt", searchTerms: [ "bank check", "cheque" ] }, { title: "fas fa-monument", searchTerms: [ "building", "historic", "memoroable" ] }, { title: "fas fa-moon", searchTerms: [ "contrast", "crescent", "darker", "lunar", "night" ] }, { title: "far fa-moon", searchTerms: [ "contrast", "crescent", "darker", "lunar", "night" ] }, { title: "fas fa-mortar-pestle", searchTerms: [ "crush", "culinary", "grind", "medical", "mix", "spices" ] }, { title: "fas fa-mosque", searchTerms: [ "building", "islam", "muslim" ] }, { title: "fas fa-motorcycle", searchTerms: [ "bike", "machine", "transportation", "vehicle" ] }, { title: "fas fa-mountain", searchTerms: [] }, { title: "fas fa-mouse-pointer", searchTerms: [ "select" ] }, { title: "fas fa-music", searchTerms: [ "note", "sound" ] }, { title: "fab fa-napster", searchTerms: [] }, { title: "fab fa-neos", searchTerms: [] }, { title: "fas fa-network-wired", searchTerms: [] }, { title: "fas fa-neuter", searchTerms: [] }, { title: "fas fa-newspaper", searchTerms: [ "article", "press" ] }, { title: "far fa-newspaper", searchTerms: [ "article", "press" ] }, { title: "fab fa-nimblr", searchTerms: [] }, { title: "fab fa-nintendo-switch", searchTerms: [] }, { title: "fab fa-node", searchTerms: [] }, { title: "fab fa-node-js", searchTerms: [] }, { title: "fas fa-not-equal", searchTerms: [] }, { title: "fas fa-notes-medical", searchTerms: [] }, { title: "fab fa-npm", searchTerms: [] }, { title: "fab fa-ns8", searchTerms: [] }, { title: "fab fa-nutritionix", searchTerms: [] }, { title: "fas fa-object-group", searchTerms: [ "design" ] }, { title: "far fa-object-group", searchTerms: [ "design" ] }, { title: "fas fa-object-ungroup", searchTerms: [ "design" ] }, { title: "far fa-object-ungroup", searchTerms: [ "design" ] }, { title: "fab fa-odnoklassniki", searchTerms: [] }, { title: "fab fa-odnoklassniki-square", searchTerms: [] }, { title: "fas fa-oil-can", searchTerms: [] }, { title: "fab fa-old-republic", searchTerms: [ "politics", "star wars" ] }, { title: "fas fa-om", searchTerms: [ "buddhism", "hinduism", "jainism", "mantra" ] }, { title: "fab fa-opencart", searchTerms: [] }, { title: "fab fa-openid", searchTerms: [] }, { title: "fab fa-opera", searchTerms: [] }, { title: "fab fa-optin-monster", searchTerms: [] }, { title: "fab fa-osi", searchTerms: [] }, { title: "fas fa-otter", searchTerms: [ "fauna", "mammmal" ] }, { title: "fas fa-outdent", searchTerms: [] }, { title: "fab fa-page4", searchTerms: [] }, { title: "fab fa-pagelines", searchTerms: [ "eco", "flora", "leaf", "leaves", "nature", "plant", "tree" ] }, { title: "fas fa-paint-brush", searchTerms: [] }, { title: "fas fa-paint-roller", searchTerms: [ "brush", "painting", "tool" ] }, { title: "fas fa-palette", searchTerms: [ "colors", "painting" ] }, { title: "fab fa-palfed", searchTerms: [] }, { title: "fas fa-pallet", searchTerms: [] }, { title: "fas fa-paper-plane", searchTerms: [] }, { title: "far fa-paper-plane", searchTerms: [] }, { title: "fas fa-paperclip", searchTerms: [ "attachment" ] }, { title: "fas fa-parachute-box", searchTerms: [ "aid", "assistance", "rescue", "supplies" ] }, { title: "fas fa-paragraph", searchTerms: [] }, { title: "fas fa-parking", searchTerms: [] }, { title: "fas fa-passport", searchTerms: [ "document", "identification", "issued" ] }, { title: "fas fa-pastafarianism", searchTerms: [ "agnosticism", "atheism", "flying spaghetti monster", "fsm" ] }, { title: "fas fa-paste", searchTerms: [ "clipboard", "copy" ] }, { title: "fab fa-patreon", searchTerms: [] }, { title: "fas fa-pause", searchTerms: [ "wait" ] }, { title: "fas fa-pause-circle", searchTerms: [] }, { title: "far fa-pause-circle", searchTerms: [] }, { title: "fas fa-paw", searchTerms: [ "animal", "pet" ] }, { title: "fab fa-paypal", searchTerms: [] }, { title: "fas fa-peace", searchTerms: [] }, { title: "fas fa-pen", searchTerms: [ "design", "edit", "update", "write" ] }, { title: "fas fa-pen-alt", searchTerms: [ "design", "edit", "update", "write" ] }, { title: "fas fa-pen-fancy", searchTerms: [ "design", "edit", "fountain pen", "update", "write" ] }, { title: "fas fa-pen-nib", searchTerms: [ "design", "edit", "fountain pen", "update", "write" ] }, { title: "fas fa-pen-square", searchTerms: [ "edit", "pencil-square", "update", "write" ] }, { title: "fas fa-pencil-alt", searchTerms: [ "design", "edit", "pencil", "update", "write" ] }, { title: "fas fa-pencil-ruler", searchTerms: [] }, { title: "fab fa-penny-arcade", searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "pax", "tabletop" ] }, { title: "fas fa-people-carry", searchTerms: [ "movers" ] }, { title: "fas fa-percent", searchTerms: [] }, { title: "fas fa-percentage", searchTerms: [] }, { title: "fab fa-periscope", searchTerms: [] }, { title: "fas fa-person-booth", searchTerms: [ "changing", "changing room", "election", "human", "person", "vote", "voting" ] }, { title: "fab fa-phabricator", searchTerms: [] }, { title: "fab fa-phoenix-framework", searchTerms: [] }, { title: "fab fa-phoenix-squadron", searchTerms: [] }, { title: "fas fa-phone", searchTerms: [ "call", "earphone", "number", "support", "telephone", "voice" ] }, { title: "fas fa-phone-slash", searchTerms: [] }, { title: "fas fa-phone-square", searchTerms: [ "call", "number", "support", "telephone", "voice" ] }, { title: "fas fa-phone-volume", searchTerms: [ "telephone", "volume-control-phone" ] }, { title: "fab fa-php", searchTerms: [] }, { title: "fab fa-pied-piper", searchTerms: [] }, { title: "fab fa-pied-piper-alt", searchTerms: [] }, { title: "fab fa-pied-piper-hat", searchTerms: [ "clothing" ] }, { title: "fab fa-pied-piper-pp", searchTerms: [] }, { title: "fas fa-piggy-bank", searchTerms: [ "save", "savings" ] }, { title: "fas fa-pills", searchTerms: [ "drugs", "medicine" ] }, { title: "fab fa-pinterest", searchTerms: [] }, { title: "fab fa-pinterest-p", searchTerms: [] }, { title: "fab fa-pinterest-square", searchTerms: [] }, { title: "fas fa-place-of-worship", searchTerms: [] }, { title: "fas fa-plane", searchTerms: [ "airplane", "destination", "fly", "location", "mode", "travel", "trip" ] }, { title: "fas fa-plane-arrival", searchTerms: [ "airplane", "arriving", "destination", "fly", "land", "landing", "location", "mode", "travel", "trip" ] }, { title: "fas fa-plane-departure", searchTerms: [ "airplane", "departing", "destination", "fly", "location", "mode", "take off", "taking off", "travel", "trip" ] }, { title: "fas fa-play", searchTerms: [ "music", "playing", "sound", "start" ] }, { title: "fas fa-play-circle", searchTerms: [ "playing", "start" ] }, { title: "far fa-play-circle", searchTerms: [ "playing", "start" ] }, { title: "fab fa-playstation", searchTerms: [] }, { title: "fas fa-plug", searchTerms: [ "connect", "online", "power" ] }, { title: "fas fa-plus", searchTerms: [ "add", "create", "expand", "new", "positive" ] }, { title: "fas fa-plus-circle", searchTerms: [ "add", "create", "expand", "new", "positive" ] }, { title: "fas fa-plus-square", searchTerms: [ "add", "create", "expand", "new", "positive" ] }, { title: "far fa-plus-square", searchTerms: [ "add", "create", "expand", "new", "positive" ] }, { title: "fas fa-podcast", searchTerms: [] }, { title: "fas fa-poll", searchTerms: [ "results", "survey", "vote", "voting" ] }, { title: "fas fa-poll-h", searchTerms: [ "results", "survey", "vote", "voting" ] }, { title: "fas fa-poo", searchTerms: [] }, { title: "fas fa-poo-storm", searchTerms: [ "mess", "poop", "shit" ] }, { title: "fas fa-poop", searchTerms: [] }, { title: "fas fa-portrait", searchTerms: [] }, { title: "fas fa-pound-sign", searchTerms: [ "gbp" ] }, { title: "fas fa-power-off", searchTerms: [ "on", "reboot", "restart" ] }, { title: "fas fa-pray", searchTerms: [] }, { title: "fas fa-praying-hands", searchTerms: [] }, { title: "fas fa-prescription", searchTerms: [ "drugs", "medical", "medicine", "rx" ] }, { title: "fas fa-prescription-bottle", searchTerms: [ "drugs", "medical", "medicine", "rx" ] }, { title: "fas fa-prescription-bottle-alt", searchTerms: [ "drugs", "medical", "medicine", "rx" ] }, { title: "fas fa-print", searchTerms: [] }, { title: "fas fa-procedures", searchTerms: [] }, { title: "fab fa-product-hunt", searchTerms: [] }, { title: "fas fa-project-diagram", searchTerms: [] }, { title: "fab fa-pushed", searchTerms: [] }, { title: "fas fa-puzzle-piece", searchTerms: [ "add-on", "addon", "section" ] }, { title: "fab fa-python", searchTerms: [] }, { title: "fab fa-qq", searchTerms: [] }, { title: "fas fa-qrcode", searchTerms: [ "scan" ] }, { title: "fas fa-question", searchTerms: [ "help", "information", "support", "unknown" ] }, { title: "fas fa-question-circle", searchTerms: [ "help", "information", "support", "unknown" ] }, { title: "far fa-question-circle", searchTerms: [ "help", "information", "support", "unknown" ] }, { title: "fas fa-quidditch", searchTerms: [] }, { title: "fab fa-quinscape", searchTerms: [] }, { title: "fab fa-quora", searchTerms: [] }, { title: "fas fa-quote-left", searchTerms: [] }, { title: "fas fa-quote-right", searchTerms: [] }, { title: "fas fa-quran", searchTerms: [ "book", "islam", "muslim" ] }, { title: "fab fa-r-project", searchTerms: [] }, { title: "fas fa-rainbow", searchTerms: [] }, { title: "fas fa-random", searchTerms: [ "shuffle", "sort" ] }, { title: "fab fa-ravelry", searchTerms: [] }, { title: "fab fa-react", searchTerms: [] }, { title: "fab fa-reacteurope", searchTerms: [] }, { title: "fab fa-readme", searchTerms: [] }, { title: "fab fa-rebel", searchTerms: [] }, { title: "fas fa-receipt", searchTerms: [ "check", "invoice", "table" ] }, { title: "fas fa-recycle", searchTerms: [] }, { title: "fab fa-red-river", searchTerms: [] }, { title: "fab fa-reddit", searchTerms: [] }, { title: "fab fa-reddit-alien", searchTerms: [] }, { title: "fab fa-reddit-square", searchTerms: [] }, { title: "fas fa-redo", searchTerms: [ "forward", "refresh", "reload", "repeat" ] }, { title: "fas fa-redo-alt", searchTerms: [ "forward", "refresh", "reload", "repeat" ] }, { title: "fas fa-registered", searchTerms: [] }, { title: "far fa-registered", searchTerms: [] }, { title: "fab fa-renren", searchTerms: [] }, { title: "fas fa-reply", searchTerms: [] }, { title: "fas fa-reply-all", searchTerms: [] }, { title: "fab fa-replyd", searchTerms: [] }, { title: "fas fa-republican", searchTerms: [ "american", "conservative", "election", "elephant", "politics", "republican party", "right", "right-wing", "usa" ] }, { title: "fab fa-researchgate", searchTerms: [] }, { title: "fab fa-resolving", searchTerms: [] }, { title: "fas fa-retweet", searchTerms: [ "refresh", "reload", "share", "swap" ] }, { title: "fab fa-rev", searchTerms: [] }, { title: "fas fa-ribbon", searchTerms: [ "badge", "cause", "lapel", "pin" ] }, { title: "fas fa-ring", searchTerms: [ "Dungeons & Dragons", "Gollum", "band", "binding", "d&d", "dnd", "fantasy", "jewelry", "precious" ] }, { title: "fas fa-road", searchTerms: [ "street" ] }, { title: "fas fa-robot", searchTerms: [] }, { title: "fas fa-rocket", searchTerms: [ "app" ] }, { title: "fab fa-rocketchat", searchTerms: [] }, { title: "fab fa-rockrms", searchTerms: [] }, { title: "fas fa-route", searchTerms: [] }, { title: "fas fa-rss", searchTerms: [ "blog" ] }, { title: "fas fa-rss-square", searchTerms: [ "blog", "feed" ] }, { title: "fas fa-ruble-sign", searchTerms: [ "rub" ] }, { title: "fas fa-ruler", searchTerms: [] }, { title: "fas fa-ruler-combined", searchTerms: [] }, { title: "fas fa-ruler-horizontal", searchTerms: [] }, { title: "fas fa-ruler-vertical", searchTerms: [] }, { title: "fas fa-running", searchTerms: [ "jog", "sprint" ] }, { title: "fas fa-rupee-sign", searchTerms: [ "indian", "inr" ] }, { title: "fas fa-sad-cry", searchTerms: [ "emoticon", "face", "tear", "tears" ] }, { title: "far fa-sad-cry", searchTerms: [ "emoticon", "face", "tear", "tears" ] }, { title: "fas fa-sad-tear", searchTerms: [ "emoticon", "face", "tear", "tears" ] }, { title: "far fa-sad-tear", searchTerms: [ "emoticon", "face", "tear", "tears" ] }, { title: "fab fa-safari", searchTerms: [ "browser" ] }, { title: "fab fa-sass", searchTerms: [] }, { title: "fas fa-save", searchTerms: [ "floppy", "floppy-o" ] }, { title: "far fa-save", searchTerms: [ "floppy", "floppy-o" ] }, { title: "fab fa-schlix", searchTerms: [] }, { title: "fas fa-school", searchTerms: [] }, { title: "fas fa-screwdriver", searchTerms: [ "admin", "fix", "repair", "settings", "tool" ] }, { title: "fab fa-scribd", searchTerms: [] }, { title: "fas fa-scroll", searchTerms: [ "Dungeons & Dragons", "announcement", "d&d", "dnd", "fantasy", "paper" ] }, { title: "fas fa-search", searchTerms: [ "bigger", "enlarge", "magnify", "preview", "zoom" ] }, { title: "fas fa-search-dollar", searchTerms: [] }, { title: "fas fa-search-location", searchTerms: [] }, { title: "fas fa-search-minus", searchTerms: [ "minify", "negative", "smaller", "zoom", "zoom out" ] }, { title: "fas fa-search-plus", searchTerms: [ "bigger", "enlarge", "magnify", "positive", "zoom", "zoom in" ] }, { title: "fab fa-searchengin", searchTerms: [] }, { title: "fas fa-seedling", searchTerms: [] }, { title: "fab fa-sellcast", searchTerms: [ "eercast" ] }, { title: "fab fa-sellsy", searchTerms: [] }, { title: "fas fa-server", searchTerms: [ "cpu" ] }, { title: "fab fa-servicestack", searchTerms: [] }, { title: "fas fa-shapes", searchTerms: [ "circle", "square", "triangle" ] }, { title: "fas fa-share", searchTerms: [] }, { title: "fas fa-share-alt", searchTerms: [] }, { title: "fas fa-share-alt-square", searchTerms: [] }, { title: "fas fa-share-square", searchTerms: [ "send", "social" ] }, { title: "far fa-share-square", searchTerms: [ "send", "social" ] }, { title: "fas fa-shekel-sign", searchTerms: [ "ils" ] }, { title: "fas fa-shield-alt", searchTerms: [ "achievement", "award", "block", "defend", "security", "winner" ] }, { title: "fas fa-ship", searchTerms: [ "boat", "sea" ] }, { title: "fas fa-shipping-fast", searchTerms: [] }, { title: "fab fa-shirtsinbulk", searchTerms: [] }, { title: "fas fa-shoe-prints", searchTerms: [ "feet", "footprints", "steps" ] }, { title: "fas fa-shopping-bag", searchTerms: [] }, { title: "fas fa-shopping-basket", searchTerms: [] }, { title: "fas fa-shopping-cart", searchTerms: [ "buy", "checkout", "payment", "purchase" ] }, { title: "fab fa-shopware", searchTerms: [] }, { title: "fas fa-shower", searchTerms: [] }, { title: "fas fa-shuttle-van", searchTerms: [ "machine", "public-transportation", "transportation", "vehicle" ] }, { title: "fas fa-sign", searchTerms: [] }, { title: "fas fa-sign-in-alt", searchTerms: [ "arrow", "enter", "join", "log in", "login", "sign in", "sign up", "sign-in", "signin", "signup" ] }, { title: "fas fa-sign-language", searchTerms: [] }, { title: "fas fa-sign-out-alt", searchTerms: [ "arrow", "exit", "leave", "log out", "logout", "sign-out" ] }, { title: "fas fa-signal", searchTerms: [ "bars", "graph", "online", "status" ] }, { title: "fas fa-signature", searchTerms: [ "John Hancock", "cursive", "name", "writing" ] }, { title: "fab fa-simplybuilt", searchTerms: [] }, { title: "fab fa-sistrix", searchTerms: [] }, { title: "fas fa-sitemap", searchTerms: [ "directory", "hierarchy", "ia", "information architecture", "organization" ] }, { title: "fab fa-sith", searchTerms: [] }, { title: "fas fa-skull", searchTerms: [ "bones", "skeleton", "yorick" ] }, { title: "fas fa-skull-crossbones", searchTerms: [ "Dungeons & Dragons", "alert", "bones", "d&d", "danger", "dead", "deadly", "death", "dnd", "fantasy", "halloween", "holiday", "jolly-roger", "pirate", "poison", "skeleton", "warning" ] }, { title: "fab fa-skyatlas", searchTerms: [] }, { title: "fab fa-skype", searchTerms: [] }, { title: "fab fa-slack", searchTerms: [ "anchor", "hash", "hashtag" ] }, { title: "fab fa-slack-hash", searchTerms: [ "anchor", "hash", "hashtag" ] }, { title: "fas fa-slash", searchTerms: [] }, { title: "fas fa-sliders-h", searchTerms: [ "settings", "sliders" ] }, { title: "fab fa-slideshare", searchTerms: [] }, { title: "fas fa-smile", searchTerms: [ "approve", "emoticon", "face", "happy", "rating", "satisfied" ] }, { title: "far fa-smile", searchTerms: [ "approve", "emoticon", "face", "happy", "rating", "satisfied" ] }, { title: "fas fa-smile-beam", searchTerms: [ "emoticon", "face", "happy", "positive" ] }, { title: "far fa-smile-beam", searchTerms: [ "emoticon", "face", "happy", "positive" ] }, { title: "fas fa-smile-wink", searchTerms: [ "emoticon", "face", "happy" ] }, { title: "far fa-smile-wink", searchTerms: [ "emoticon", "face", "happy" ] }, { title: "fas fa-smog", searchTerms: [ "dragon" ] }, { title: "fas fa-smoking", searchTerms: [ "cigarette", "nicotine", "smoking status" ] }, { title: "fas fa-smoking-ban", searchTerms: [ "no smoking", "non-smoking" ] }, { title: "fab fa-snapchat", searchTerms: [] }, { title: "fab fa-snapchat-ghost", searchTerms: [] }, { title: "fab fa-snapchat-square", searchTerms: [] }, { title: "fas fa-snowflake", searchTerms: [ "precipitation", "seasonal", "winter" ] }, { title: "far fa-snowflake", searchTerms: [ "precipitation", "seasonal", "winter" ] }, { title: "fas fa-socks", searchTerms: [ "business socks", "business time", "flight of the conchords", "wednesday" ] }, { title: "fas fa-solar-panel", searchTerms: [ "clean", "eco-friendly", "energy", "green", "sun" ] }, { title: "fas fa-sort", searchTerms: [ "order" ] }, { title: "fas fa-sort-alpha-down", searchTerms: [ "sort-alpha-asc" ] }, { title: "fas fa-sort-alpha-up", searchTerms: [ "sort-alpha-desc" ] }, { title: "fas fa-sort-amount-down", searchTerms: [ "sort-amount-asc" ] }, { title: "fas fa-sort-amount-up", searchTerms: [ "sort-amount-desc" ] }, { title: "fas fa-sort-down", searchTerms: [ "arrow", "descending", "sort-desc" ] }, { title: "fas fa-sort-numeric-down", searchTerms: [ "numbers", "sort-numeric-asc" ] }, { title: "fas fa-sort-numeric-up", searchTerms: [ "numbers", "sort-numeric-desc" ] }, { title: "fas fa-sort-up", searchTerms: [ "arrow", "ascending", "sort-asc" ] }, { title: "fab fa-soundcloud", searchTerms: [] }, { title: "fas fa-spa", searchTerms: [ "flora", "mindfullness", "plant", "wellness" ] }, { title: "fas fa-space-shuttle", searchTerms: [ "astronaut", "machine", "nasa", "rocket", "transportation" ] }, { title: "fab fa-speakap", searchTerms: [] }, { title: "fas fa-spider", searchTerms: [ "arachnid", "bug", "charlotte", "crawl", "eight", "halloween", "holiday" ] }, { title: "fas fa-spinner", searchTerms: [ "loading", "progress" ] }, { title: "fas fa-splotch", searchTerms: [] }, { title: "fab fa-spotify", searchTerms: [] }, { title: "fas fa-spray-can", searchTerms: [] }, { title: "fas fa-square", searchTerms: [ "block", "box" ] }, { title: "far fa-square", searchTerms: [ "block", "box" ] }, { title: "fas fa-square-full", searchTerms: [] }, { title: "fas fa-square-root-alt", searchTerms: [] }, { title: "fab fa-squarespace", searchTerms: [] }, { title: "fab fa-stack-exchange", searchTerms: [] }, { title: "fab fa-stack-overflow", searchTerms: [] }, { title: "fas fa-stamp", searchTerms: [] }, { title: "fas fa-star", searchTerms: [ "achievement", "award", "favorite", "important", "night", "rating", "score" ] }, { title: "far fa-star", searchTerms: [ "achievement", "award", "favorite", "important", "night", "rating", "score" ] }, { title: "fas fa-star-and-crescent", searchTerms: [ "islam", "muslim" ] }, { title: "fas fa-star-half", searchTerms: [ "achievement", "award", "rating", "score", "star-half-empty", "star-half-full" ] }, { title: "far fa-star-half", searchTerms: [ "achievement", "award", "rating", "score", "star-half-empty", "star-half-full" ] }, { title: "fas fa-star-half-alt", searchTerms: [ "achievement", "award", "rating", "score", "star-half-empty", "star-half-full" ] }, { title: "fas fa-star-of-david", searchTerms: [ "jewish", "judaism" ] }, { title: "fas fa-star-of-life", searchTerms: [] }, { title: "fab fa-staylinked", searchTerms: [] }, { title: "fab fa-steam", searchTerms: [] }, { title: "fab fa-steam-square", searchTerms: [] }, { title: "fab fa-steam-symbol", searchTerms: [] }, { title: "fas fa-step-backward", searchTerms: [ "beginning", "first", "previous", "rewind", "start" ] }, { title: "fas fa-step-forward", searchTerms: [ "end", "last", "next" ] }, { title: "fas fa-stethoscope", searchTerms: [] }, { title: "fab fa-sticker-mule", searchTerms: [] }, { title: "fas fa-sticky-note", searchTerms: [] }, { title: "far fa-sticky-note", searchTerms: [] }, { title: "fas fa-stop", searchTerms: [ "block", "box", "square" ] }, { title: "fas fa-stop-circle", searchTerms: [] }, { title: "far fa-stop-circle", searchTerms: [] }, { title: "fas fa-stopwatch", searchTerms: [ "time" ] }, { title: "fas fa-store", searchTerms: [] }, { title: "fas fa-store-alt", searchTerms: [] }, { title: "fab fa-strava", searchTerms: [] }, { title: "fas fa-stream", searchTerms: [] }, { title: "fas fa-street-view", searchTerms: [ "map" ] }, { title: "fas fa-strikethrough", searchTerms: [] }, { title: "fab fa-stripe", searchTerms: [] }, { title: "fab fa-stripe-s", searchTerms: [] }, { title: "fas fa-stroopwafel", searchTerms: [ "dessert", "food", "sweets", "waffle" ] }, { title: "fab fa-studiovinari", searchTerms: [] }, { title: "fab fa-stumbleupon", searchTerms: [] }, { title: "fab fa-stumbleupon-circle", searchTerms: [] }, { title: "fas fa-subscript", searchTerms: [] }, { title: "fas fa-subway", searchTerms: [ "machine", "railway", "train", "transportation", "vehicle" ] }, { title: "fas fa-suitcase", searchTerms: [ "baggage", "luggage", "move", "suitcase", "travel", "trip" ] }, { title: "fas fa-suitcase-rolling", searchTerms: [] }, { title: "fas fa-sun", searchTerms: [ "brighten", "contrast", "day", "lighter", "sol", "solar", "star", "weather" ] }, { title: "far fa-sun", searchTerms: [ "brighten", "contrast", "day", "lighter", "sol", "solar", "star", "weather" ] }, { title: "fab fa-superpowers", searchTerms: [] }, { title: "fas fa-superscript", searchTerms: [ "exponential" ] }, { title: "fab fa-supple", searchTerms: [] }, { title: "fas fa-surprise", searchTerms: [ "emoticon", "face", "shocked" ] }, { title: "far fa-surprise", searchTerms: [ "emoticon", "face", "shocked" ] }, { title: "fas fa-swatchbook", searchTerms: [] }, { title: "fas fa-swimmer", searchTerms: [ "athlete", "head", "man", "person", "water" ] }, { title: "fas fa-swimming-pool", searchTerms: [ "ladder", "recreation", "water" ] }, { title: "fas fa-synagogue", searchTerms: [ "building", "jewish", "judaism", "star of david", "temple" ] }, { title: "fas fa-sync", searchTerms: [ "exchange", "refresh", "reload", "rotate", "swap" ] }, { title: "fas fa-sync-alt", searchTerms: [ "refresh", "reload", "rotate" ] }, { title: "fas fa-syringe", searchTerms: [ "immunizations", "needle" ] }, { title: "fas fa-table", searchTerms: [ "data", "excel", "spreadsheet" ] }, { title: "fas fa-table-tennis", searchTerms: [] }, { title: "fas fa-tablet", searchTerms: [ "apple", "device", "ipad", "kindle", "screen" ] }, { title: "fas fa-tablet-alt", searchTerms: [ "apple", "device", "ipad", "kindle", "screen" ] }, { title: "fas fa-tablets", searchTerms: [ "drugs", "medicine" ] }, { title: "fas fa-tachometer-alt", searchTerms: [ "dashboard", "tachometer" ] }, { title: "fas fa-tag", searchTerms: [ "label" ] }, { title: "fas fa-tags", searchTerms: [ "labels" ] }, { title: "fas fa-tape", searchTerms: [] }, { title: "fas fa-tasks", searchTerms: [ "downloading", "downloads", "loading", "progress", "settings" ] }, { title: "fas fa-taxi", searchTerms: [ "cab", "cabbie", "car", "car service", "lyft", "machine", "transportation", "uber", "vehicle" ] }, { title: "fab fa-teamspeak", searchTerms: [] }, { title: "fas fa-teeth", searchTerms: [] }, { title: "fas fa-teeth-open", searchTerms: [] }, { title: "fab fa-telegram", searchTerms: [] }, { title: "fab fa-telegram-plane", searchTerms: [] }, { title: "fas fa-temperature-high", searchTerms: [ "mercury", "thermometer", "warm" ] }, { title: "fas fa-temperature-low", searchTerms: [ "cool", "mercury", "thermometer" ] }, { title: "fab fa-tencent-weibo", searchTerms: [] }, { title: "fas fa-terminal", searchTerms: [ "code", "command", "console", "prompt" ] }, { title: "fas fa-text-height", searchTerms: [] }, { title: "fas fa-text-width", searchTerms: [] }, { title: "fas fa-th", searchTerms: [ "blocks", "boxes", "grid", "squares" ] }, { title: "fas fa-th-large", searchTerms: [ "blocks", "boxes", "grid", "squares" ] }, { title: "fas fa-th-list", searchTerms: [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ] }, { title: "fab fa-the-red-yeti", searchTerms: [] }, { title: "fas fa-theater-masks", searchTerms: [] }, { title: "fab fa-themeco", searchTerms: [] }, { title: "fab fa-themeisle", searchTerms: [] }, { title: "fas fa-thermometer", searchTerms: [ "mercury", "status", "temperature" ] }, { title: "fas fa-thermometer-empty", searchTerms: [ "mercury", "status", "temperature" ] }, { title: "fas fa-thermometer-full", searchTerms: [ "fever", "mercury", "status", "temperature" ] }, { title: "fas fa-thermometer-half", searchTerms: [ "mercury", "status", "temperature" ] }, { title: "fas fa-thermometer-quarter", searchTerms: [ "mercury", "status", "temperature" ] }, { title: "fas fa-thermometer-three-quarters", searchTerms: [ "mercury", "status", "temperature" ] }, { title: "fab fa-think-peaks", searchTerms: [] }, { title: "fas fa-thumbs-down", searchTerms: [ "disagree", "disapprove", "dislike", "hand", "thumbs-o-down" ] }, { title: "far fa-thumbs-down", searchTerms: [ "disagree", "disapprove", "dislike", "hand", "thumbs-o-down" ] }, { title: "fas fa-thumbs-up", searchTerms: [ "agree", "approve", "favorite", "hand", "like", "ok", "okay", "success", "thumbs-o-up", "yes", "you got it dude" ] }, { title: "far fa-thumbs-up", searchTerms: [ "agree", "approve", "favorite", "hand", "like", "ok", "okay", "success", "thumbs-o-up", "yes", "you got it dude" ] }, { title: "fas fa-thumbtack", searchTerms: [ "coordinates", "location", "marker", "pin", "thumb-tack" ] }, { title: "fas fa-ticket-alt", searchTerms: [ "ticket" ] }, { title: "fas fa-times", searchTerms: [ "close", "cross", "error", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x" ] }, { title: "fas fa-times-circle", searchTerms: [ "close", "cross", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x" ] }, { title: "far fa-times-circle", searchTerms: [ "close", "cross", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x" ] }, { title: "fas fa-tint", searchTerms: [ "drop", "droplet", "raindrop", "waterdrop" ] }, { title: "fas fa-tint-slash", searchTerms: [] }, { title: "fas fa-tired", searchTerms: [ "emoticon", "face", "grumpy" ] }, { title: "far fa-tired", searchTerms: [ "emoticon", "face", "grumpy" ] }, { title: "fas fa-toggle-off", searchTerms: [ "switch" ] }, { title: "fas fa-toggle-on", searchTerms: [ "switch" ] }, { title: "fas fa-toilet-paper", searchTerms: [ "bathroom", "halloween", "holiday", "lavatory", "prank", "restroom", "roll" ] }, { title: "fas fa-toolbox", searchTerms: [ "admin", "container", "fix", "repair", "settings", "tools" ] }, { title: "fas fa-tooth", searchTerms: [ "bicuspid", "dental", "molar", "mouth", "teeth" ] }, { title: "fas fa-torah", searchTerms: [ "book", "jewish", "judaism" ] }, { title: "fas fa-torii-gate", searchTerms: [ "building", "shintoism" ] }, { title: "fas fa-tractor", searchTerms: [] }, { title: "fab fa-trade-federation", searchTerms: [] }, { title: "fas fa-trademark", searchTerms: [] }, { title: "fas fa-traffic-light", searchTerms: [] }, { title: "fas fa-train", searchTerms: [ "bullet", "locomotive", "railway" ] }, { title: "fas fa-transgender", searchTerms: [ "intersex" ] }, { title: "fas fa-transgender-alt", searchTerms: [] }, { title: "fas fa-trash", searchTerms: [ "delete", "garbage", "hide", "remove" ] }, { title: "fas fa-trash-alt", searchTerms: [ "delete", "garbage", "hide", "remove", "trash", "trash-o" ] }, { title: "far fa-trash-alt", searchTerms: [ "delete", "garbage", "hide", "remove", "trash", "trash-o" ] }, { title: "fas fa-tree", searchTerms: [ "bark", "fall", "flora", "forest", "nature", "plant", "seasonal" ] }, { title: "fab fa-trello", searchTerms: [] }, { title: "fab fa-tripadvisor", searchTerms: [] }, { title: "fas fa-trophy", searchTerms: [ "achievement", "award", "cup", "game", "winner" ] }, { title: "fas fa-truck", searchTerms: [ "delivery", "shipping" ] }, { title: "fas fa-truck-loading", searchTerms: [] }, { title: "fas fa-truck-monster", searchTerms: [] }, { title: "fas fa-truck-moving", searchTerms: [] }, { title: "fas fa-truck-pickup", searchTerms: [] }, { title: "fas fa-tshirt", searchTerms: [ "cloth", "clothing" ] }, { title: "fas fa-tty", searchTerms: [] }, { title: "fab fa-tumblr", searchTerms: [] }, { title: "fab fa-tumblr-square", searchTerms: [] }, { title: "fas fa-tv", searchTerms: [ "computer", "display", "monitor", "television" ] }, { title: "fab fa-twitch", searchTerms: [] }, { title: "fab fa-twitter", searchTerms: [ "social network", "tweet" ] }, { title: "fab fa-twitter-square", searchTerms: [ "social network", "tweet" ] }, { title: "fab fa-typo3", searchTerms: [] }, { title: "fab fa-uber", searchTerms: [] }, { title: "fab fa-uikit", searchTerms: [] }, { title: "fas fa-umbrella", searchTerms: [ "protection", "rain" ] }, { title: "fas fa-umbrella-beach", searchTerms: [ "protection", "recreation", "sun" ] }, { title: "fas fa-underline", searchTerms: [] }, { title: "fas fa-undo", searchTerms: [ "back", "control z", "exchange", "oops", "return", "rotate", "swap" ] }, { title: "fas fa-undo-alt", searchTerms: [ "back", "control z", "exchange", "oops", "return", "swap" ] }, { title: "fab fa-uniregistry", searchTerms: [] }, { title: "fas fa-universal-access", searchTerms: [] }, { title: "fas fa-university", searchTerms: [ "bank", "institution" ] }, { title: "fas fa-unlink", searchTerms: [ "chain", "chain-broken", "remove" ] }, { title: "fas fa-unlock", searchTerms: [ "admin", "lock", "password", "protect" ] }, { title: "fas fa-unlock-alt", searchTerms: [ "admin", "lock", "password", "protect" ] }, { title: "fab fa-untappd", searchTerms: [] }, { title: "fas fa-upload", searchTerms: [ "export", "publish" ] }, { title: "fab fa-usb", searchTerms: [] }, { title: "fas fa-user", searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ] }, { title: "far fa-user", searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ] }, { title: "fas fa-user-alt", searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ] }, { title: "fas fa-user-alt-slash", searchTerms: [] }, { title: "fas fa-user-astronaut", searchTerms: [ "avatar", "clothing", "cosmonaut", "space", "suit" ] }, { title: "fas fa-user-check", searchTerms: [] }, { title: "fas fa-user-circle", searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ] }, { title: "far fa-user-circle", searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ] }, { title: "fas fa-user-clock", searchTerms: [] }, { title: "fas fa-user-cog", searchTerms: [] }, { title: "fas fa-user-edit", searchTerms: [] }, { title: "fas fa-user-friends", searchTerms: [] }, { title: "fas fa-user-graduate", searchTerms: [ "cap", "clothing", "commencement", "gown", "graduation", "student" ] }, { title: "fas fa-user-injured", searchTerms: [ "cast", "ouch", "sling" ] }, { title: "fas fa-user-lock", searchTerms: [] }, { title: "fas fa-user-md", searchTerms: [ "doctor", "job", "medical", "nurse", "occupation", "profile" ] }, { title: "fas fa-user-minus", searchTerms: [ "delete", "negative", "remove" ] }, { title: "fas fa-user-ninja", searchTerms: [ "assassin", "avatar", "dangerous", "deadly", "sneaky" ] }, { title: "fas fa-user-plus", searchTerms: [ "positive", "sign up", "signup" ] }, { title: "fas fa-user-secret", searchTerms: [ "clothing", "coat", "hat", "incognito", "privacy", "spy", "whisper" ] }, { title: "fas fa-user-shield", searchTerms: [] }, { title: "fas fa-user-slash", searchTerms: [ "ban", "remove" ] }, { title: "fas fa-user-tag", searchTerms: [] }, { title: "fas fa-user-tie", searchTerms: [ "avatar", "business", "clothing", "formal" ] }, { title: "fas fa-user-times", searchTerms: [ "archive", "delete", "remove", "x" ] }, { title: "fas fa-users", searchTerms: [ "people", "persons", "profiles" ] }, { title: "fas fa-users-cog", searchTerms: [] }, { title: "fab fa-ussunnah", searchTerms: [] }, { title: "fas fa-utensil-spoon", searchTerms: [ "spoon" ] }, { title: "fas fa-utensils", searchTerms: [ "cutlery", "dinner", "eat", "food", "knife", "restaurant", "spoon" ] }, { title: "fab fa-vaadin", searchTerms: [] }, { title: "fas fa-vector-square", searchTerms: [ "anchors", "lines", "object" ] }, { title: "fas fa-venus", searchTerms: [ "female" ] }, { title: "fas fa-venus-double", searchTerms: [] }, { title: "fas fa-venus-mars", searchTerms: [] }, { title: "fab fa-viacoin", searchTerms: [] }, { title: "fab fa-viadeo", searchTerms: [] }, { title: "fab fa-viadeo-square", searchTerms: [] }, { title: "fas fa-vial", searchTerms: [ "test tube" ] }, { title: "fas fa-vials", searchTerms: [ "lab results", "test tubes" ] }, { title: "fab fa-viber", searchTerms: [] }, { title: "fas fa-video", searchTerms: [ "camera", "film", "movie", "record", "video-camera" ] }, { title: "fas fa-video-slash", searchTerms: [] }, { title: "fas fa-vihara", searchTerms: [ "buddhism", "buddhist", "building", "monastery" ] }, { title: "fab fa-vimeo", searchTerms: [] }, { title: "fab fa-vimeo-square", searchTerms: [] }, { title: "fab fa-vimeo-v", searchTerms: [ "vimeo" ] }, { title: "fab fa-vine", searchTerms: [] }, { title: "fab fa-vk", searchTerms: [] }, { title: "fab fa-vnv", searchTerms: [] }, { title: "fas fa-volleyball-ball", searchTerms: [] }, { title: "fas fa-volume-down", searchTerms: [ "audio", "lower", "music", "quieter", "sound", "speaker" ] }, { title: "fas fa-volume-mute", searchTerms: [] }, { title: "fas fa-volume-off", searchTerms: [ "audio", "music", "mute", "sound" ] }, { title: "fas fa-volume-up", searchTerms: [ "audio", "higher", "louder", "music", "sound", "speaker" ] }, { title: "fas fa-vote-yea", searchTerms: [ "accept", "cast", "election", "politics", "positive", "yes" ] }, { title: "fas fa-vr-cardboard", searchTerms: [ "google", "reality", "virtual" ] }, { title: "fab fa-vuejs", searchTerms: [] }, { title: "fas fa-walking", searchTerms: [] }, { title: "fas fa-wallet", searchTerms: [] }, { title: "fas fa-warehouse", searchTerms: [] }, { title: "fas fa-water", searchTerms: [] }, { title: "fab fa-weebly", searchTerms: [] }, { title: "fab fa-weibo", searchTerms: [] }, { title: "fas fa-weight", searchTerms: [ "measurement", "scale", "weight" ] }, { title: "fas fa-weight-hanging", searchTerms: [ "anvil", "heavy", "measurement" ] }, { title: "fab fa-weixin", searchTerms: [] }, { title: "fab fa-whatsapp", searchTerms: [] }, { title: "fab fa-whatsapp-square", searchTerms: [] }, { title: "fas fa-wheelchair", searchTerms: [ "handicap", "person" ] }, { title: "fab fa-whmcs", searchTerms: [] }, { title: "fas fa-wifi", searchTerms: [] }, { title: "fab fa-wikipedia-w", searchTerms: [] }, { title: "fas fa-wind", searchTerms: [ "air", "blow", "breeze", "fall", "seasonal" ] }, { title: "fas fa-window-close", searchTerms: [] }, { title: "far fa-window-close", searchTerms: [] }, { title: "fas fa-window-maximize", searchTerms: [] }, { title: "far fa-window-maximize", searchTerms: [] }, { title: "fas fa-window-minimize", searchTerms: [] }, { title: "far fa-window-minimize", searchTerms: [] }, { title: "fas fa-window-restore", searchTerms: [] }, { title: "far fa-window-restore", searchTerms: [] }, { title: "fab fa-windows", searchTerms: [ "microsoft" ] }, { title: "fas fa-wine-bottle", searchTerms: [ "alcohol", "beverage", "drink", "glass", "grapes" ] }, { title: "fas fa-wine-glass", searchTerms: [ "alcohol", "beverage", "drink", "grapes" ] }, { title: "fas fa-wine-glass-alt", searchTerms: [ "alcohol", "beverage", "drink", "grapes" ] }, { title: "fab fa-wix", searchTerms: [] }, { title: "fab fa-wizards-of-the-coast", searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop" ] }, { title: "fab fa-wolf-pack-battalion", searchTerms: [] }, { title: "fas fa-won-sign", searchTerms: [ "krw" ] }, { title: "fab fa-wordpress", searchTerms: [] }, { title: "fab fa-wordpress-simple", searchTerms: [] }, { title: "fab fa-wpbeginner", searchTerms: [] }, { title: "fab fa-wpexplorer", searchTerms: [] }, { title: "fab fa-wpforms", searchTerms: [] }, { title: "fab fa-wpressr", searchTerms: [ "rendact" ] }, { title: "fas fa-wrench", searchTerms: [ "fix", "settings", "spanner", "tool", "update" ] }, { title: "fas fa-x-ray", searchTerms: [ "radiological images", "radiology" ] }, { title: "fab fa-xbox", searchTerms: [] }, { title: "fab fa-xing", searchTerms: [] }, { title: "fab fa-xing-square", searchTerms: [] }, { title: "fab fa-y-combinator", searchTerms: [] }, { title: "fab fa-yahoo", searchTerms: [] }, { title: "fab fa-yandex", searchTerms: [] }, { title: "fab fa-yandex-international", searchTerms: [] }, { title: "fab fa-yelp", searchTerms: [] }, { title: "fas fa-yen-sign", searchTerms: [ "jpy", "money" ] }, { title: "fas fa-yin-yang", searchTerms: [ "daoism", "opposites", "taoism" ] }, { title: "fab fa-yoast", searchTerms: [] }, { title: "fab fa-youtube", searchTerms: [ "film", "video", "youtube-play", "youtube-square" ] }, { title: "fab fa-youtube-square", searchTerms: [] }, { title: "fab fa-zhihu", searchTerms: [] } ] }); }); ================================================ FILE: extension/LICENSE ================================================ The MIT License (MIT) Copyright (c) 2016 Javi Aguilar Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: extension/manifest.json ================================================ { "manifest_version": 2, "name": "Font Awesome Icon Picker", "description": "Font Awesome Icon Picker extension for Google Chrome", "version": "2.0.2", "icons": { "19": "icon.png", "128": "icon-128.png" }, "browser_action": { "default_icon": "icon.png", "default_popup": "popup.html" }, "permissions": [ "storage" ], "content_security_policy": "script-src 'self' https://netdna.bootstrapcdn.com https://use.fontawesome.com https://code.jquery.com https://farbelous.io https://cdn.rawgit.com; object-src 'self'" } ================================================ FILE: extension/popup.html ================================================ Font Awesome Icon Picker
Loading assets...
Created by Javi Aguilar
Do you find this extension useful? Please consider making a donation
Support this project
================================================ FILE: extension/popup.js ================================================ /*! * Font Awesome Icon Picker * https://farbelous.github.io/fontawesome-iconpicker/ * * Originally written by (c) 2016 Javi Aguilar * Licensed under the MIT License * https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE * */ var FA_CSS_URL = 'https://use.fontawesome.com/releases/v5.0.8/css/all.css'; var FA_CSS_CLASSES = {}; var FA_CACHING_TIME = 7 * 24 * 3600 * 1000; // Cache for 7 days function _selectText(element) { var doc = window.document, range = null; if (doc.body.createTextRange) { // ms range = doc.body.createTextRange(); range.moveToElementText(element); range.select(); } else if (window.getSelection) { // moz, opera, webkit var selection = window.getSelection(); range = doc.createRange(); range.selectNodeContents(element); selection.removeAllRanges(); selection.addRange(range); } } function _loadCssRules(stylesheet_uri, callback) { var readyCallback = function (faClasses) { $(function () { callback(faClasses); }); }; chrome.storage.local.get(['faClasses', 'faClassesCacheTime'], function (items) { if ( items.faClasses && items.faClassesCacheTime && (items.faClassesCacheTime > Date.now() - FA_CACHING_TIME) ) { callback(items.faClasses); } else { $.ajax(stylesheet_uri).done(function (data) { var style_tag = document.createElement('style'); style_tag.id = 'fa_stylesheet_inline'; style_tag.appendChild(document.createTextNode(data)); $(style_tag).insertBefore('#fa_stylesheet'); FA_CSS_CLASSES = _parseCssRules(document.styleSheets[1].rules); $('#fa_stylesheet_inline').remove(); // Store parsed classes locally, so they won't need to be fetched every time the plugin is opened chrome.storage.local.set({faClasses: FA_CSS_CLASSES, faClassesCacheTime: Date.now()}, function () { }); readyCallback(FA_CSS_CLASSES); }); } }); } function _parseCssRules(cssRules) { var parsedRules = {}; for (var j = 0, k = cssRules.length; j < k; j++) { var rule = cssRules[j], cssClasses = []; if ( rule['selectorText'] && rule['style'] && rule.style['content'] ) { cssClasses = rule.selectorText.replace(/ /g, '').replace(/\./g, '').split(','); cssClasses.forEach( function (className) { parsedRules[className] = rule.style.content ? rule.style.content.replace(/"/g, '') : ''; } ); } } return parsedRules; } $(function () { _loadCssRules(FA_CSS_URL, function (cssClasses) { $('.iconpicker').html('').iconpicker({ showFooter: true, templates: { buttons: '
', search: '', footer: '' } }).on('iconpickerSelected iconpickerUpdated', function (e) { if (!e.iconpickerValue) { return; } var fontFamily = e.iconpickerValue.match(/fab /) ? 'Font Awesome\\ 5 Brands' : 'Font Awesome\\ 5 Free'; var $footer = e.iconpickerInstance.popover.find('.popover-footer').show(); var cssClassParts = e.iconpickerValue.split(' '); var cssClass = cssClassParts.pop(); var glyphChar = cssClasses[cssClass + '::before'] ? cssClasses[cssClass + '::before'] : (cssClasses[cssClass + ':before'] ? cssClasses[cssClass + ':before'] : '??'); $footer.find('.icn-inner') .html(glyphChar) .attr('style', 'font-family: ' + fontFamily) .attr('class', 'icn-inner ' + cssClassParts.join(' ')) ; var _txt = $footer.find('.txt') .html(e.iconpickerValue + '<i class="' + e.iconpickerValue + '"></i>'); _selectText(_txt.find('small').get(0)); }); $(function () { $('.iconpicker .popover-footer').append($('#subfooter')); }); }); }); ================================================ FILE: index.html ================================================ Font Awesome Icon Picker plugin for Bootstrap

Font Awesome Icon Picker

Font Awesome Icon Picker is a fully customizable plugin for Twitter Bootstrap, with a powerful base API, based on Bootstrap Popover Picker

Source Code Download Chrome extension Donate Supporters

You can use Font Awesome or another font icon set of your choice (icon options and items are customizable).

Demos


Note: In dropdowns the placement is controlled by the Bootstrap dropdown plugin


{
    //...
    title: 'With custom options',
    icons: [
        {
            title: "fab fa-github",
            searchTerms: ['repository', 'code']
        },
        {
            title: "fas fa-heart",
            searchTerms: ['love']
        },
        {
            title: "fab fa-html5",
            searchTerms: ['web']
        },
        {
            title: "fab fa-css3",
            searchTerms: ['style']
        }
    ],
    selectedCustomClass: 'label label-success',
    mustAccept:true,
    placement:'bottomRight',
    showFooter:true,
    //... (see the source code of this page)
}


Tip: You can use any font library of your choice and add the icons this way, mix them up with Font Awesome icons, etc.

================================================ FILE: package.json ================================================ { "name": "fontawesome-iconpicker", "version": "3.2.0", "description": "Font Awesome Icon Picker plugin for Twitter Bootstrap", "homepage": "https://farbelous.github.io/fontawesome-iconpicker/", "repository": { "type": "git", "url": "git@github.com:farbelous/fontawesome-iconpicker.git" }, "author": "Javi Aguilar", "license": "MIT", "main": "dist/js/fontawesome-iconpicker.js", "bugs": { "url": "https://github.com/farbelous/fontawesome-iconpicker/issues" }, "keywords": [ "bootstrap", "fontawesome", "iconpicker", "popover", "picker" ], "devDependencies": { "grunt": "^1.0.3", "grunt-contrib-clean": "^0.5", "grunt-contrib-concat": "^0.4", "grunt-contrib-jshint": "^2.0.0", "grunt-contrib-less": "^2.0.0", "grunt-contrib-uglify": "^4.0.0", "grunt-contrib-watch": "^1.1.0", "grunt-http-download": "^0.1", "grunt-jsbeautifier": "^0.2", "grunt-string-replace": "^1.3", "grunt-yaml": "^0.4" } } ================================================ FILE: src/js/iconpicker.js ================================================ /*! * Font Awesome Icon Picker * https://farbelous.github.io/fontawesome-iconpicker/ * * @author Javi Aguilar, itsjavi.com * @license MIT License * @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE */ (function(factory) { "use strict"; if (typeof define === 'function' && define.amd) { define(['jquery'], factory); } else if (window.jQuery && !window.jQuery.fn.iconpicker) { factory(window.jQuery); } } (function($) { 'use strict'; var _helpers = { isEmpty: function(val) { return ((val === false) || (val === '') || (val === null) || (val === undefined)); }, isEmptyObject: function(val) { return (this.isEmpty(val) === true) || (val.length === 0); }, isElement: function(selector) { return ($(selector).length > 0); }, isString: function(val) { return ((typeof val === 'string') || (val instanceof String)); }, isArray: function(val) { return $.isArray(val); }, inArray: function(val, arr) { return ($.inArray(val, arr) !== -1); }, throwError: function(text) { throw "Font Awesome Icon Picker Exception: " + text; } }; var Iconpicker = function(element, options) { this._id = Iconpicker._idCounter++; this.element = $(element).addClass('iconpicker-element'); this._trigger('iconpickerCreate', { iconpickerValue: this.iconpickerValue }); this.options = $.extend({}, Iconpicker.defaultOptions, this.element.data(), options); this.options.templates = $.extend({}, Iconpicker.defaultOptions.templates, this.options.templates); this.options.originalPlacement = this.options.placement; // Iconpicker container element this.container = (_helpers.isElement(this.options.container) ? $(this.options.container) : false); if (this.container === false) { if (this.element.is('.dropdown-toggle')) { this.container = $('~ .dropdown-menu:first', this.element); } else { this.container = (this.element.is('input,textarea,button,.btn') ? this.element.parent() : this.element); } } this.container.addClass('iconpicker-container'); if (this.isDropdownMenu()) { this.options.placement = 'inline'; } // Is the element an input? Should we search inside for any input? this.input = (this.element.is('input,textarea') ? this.element.addClass('iconpicker-input') : false); if (this.input === false) { this.input = (this.container.find(this.options.input)); if (!this.input.is('input,textarea')) { this.input = false; } } // Plugin as component ? this.component = this.isDropdownMenu() ? this.container.parent().find(this.options.component) : this.container.find(this.options.component); if (this.component.length === 0) { this.component = false; } else { this.component.find('i').addClass('iconpicker-component'); } // Create popover and iconpicker HTML this._createPopover(); this._createIconpicker(); if (this.getAcceptButton().length === 0) { // disable this because we don't have accept buttons this.options.mustAccept = false; } // Avoid CSS issues with input-group-addon(s) if (this.isInputGroup()) { this.container.parent().append(this.popover); } else { this.container.append(this.popover); } // Bind events this._bindElementEvents(); this._bindWindowEvents(); // Refresh everything this.update(this.options.selected); if (this.isInline()) { this.show(); } this._trigger('iconpickerCreated', { iconpickerValue: this.iconpickerValue }); }; // Instance identifier counter Iconpicker._idCounter = 0; Iconpicker.defaultOptions = { title: false, // Popover title (optional) only if specified in the template selected: false, // use this value as the current item and ignore the original defaultValue: false, // use this value as the current item if input or element value is empty placement: 'bottom', // (has some issues with auto and CSS). auto, top, bottom, left, right collision: 'none', // If true, the popover will be repositioned to another position when collapses with the window borders animation: true, // fade in/out on show/hide ? //hide iconpicker automatically when a value is picked. it is ignored if mustAccept is not false and the accept button is visible hideOnSelect: false, showFooter: false, searchInFooter: false, // If true, the search will be added to the footer instead of the title mustAccept: false, // only applicable when there's an iconpicker-btn-accept button in the popover footer selectedCustomClass: 'bg-primary', // Appends this class when to the selected item icons: [], // list of icon classes (declared at the bottom of this script for maintainability) fullClassFormatter: function(val) { return val; }, input: 'input,.iconpicker-input', // children input selector inputSearch: false, // use the input as a search box too? container: false, // Appends the popover to a specific element. If not set, the selected element or element parent is used component: '.input-group-addon,.iconpicker-component', // children component jQuery selector or object, relative to the container element // Plugin templates: templates: { popover: '
' + '
', footer: '', buttons: '' + ' ', search: '', iconpicker: '
', iconpickerItem: '', } }; Iconpicker.batch = function(selector, method) { var args = Array.prototype.slice.call(arguments, 2); return $(selector).each(function() { var $inst = $(this).data('iconpicker'); if (!!$inst) { $inst[method].apply($inst, args); } }); }; Iconpicker.prototype = { constructor: Iconpicker, options: {}, _id: 0, // instance identifier for bind/unbind events _trigger: function(name, opts) { //triggers an event bound to the element opts = opts || {}; this.element.trigger($.extend({ type: name, iconpickerInstance: this }, opts)); //console.log(name + ' triggered for instance #' + this._id); }, _createPopover: function() { this.popover = $(this.options.templates.popover); // title (header) var _title = this.popover.find('.popover-title'); if (!!this.options.title) { _title.append($('
' + this.options.title + '
')); } if (this.hasSeparatedSearchInput() && !this.options.searchInFooter) { _title.append(this.options.templates.search); } else if (!this.options.title) { _title.remove(); } // footer if (this.options.showFooter && !_helpers.isEmpty(this.options.templates.footer)) { var _footer = $(this.options.templates.footer); if (this.hasSeparatedSearchInput() && this.options.searchInFooter) { _footer.append($(this.options.templates.search)); } if (!_helpers.isEmpty(this.options.templates.buttons)) { _footer.append($(this.options.templates.buttons)); } this.popover.append(_footer); } if (this.options.animation === true) { this.popover.addClass('fade'); } return this.popover; }, _createIconpicker: function() { var _self = this; this.iconpicker = $(this.options.templates.iconpicker); var itemClickFn = function(e) { var $this = $(this); if ($this.is('i')) { $this = $this.parent(); } _self._trigger('iconpickerSelect', { iconpickerItem: $this, iconpickerValue: _self.iconpickerValue }); if (_self.options.mustAccept === false) { _self.update($this.data('iconpickerValue')); _self._trigger('iconpickerSelected', { iconpickerItem: this, iconpickerValue: _self.iconpickerValue }); } else { _self.update($this.data('iconpickerValue'), true); } if (_self.options.hideOnSelect && (_self.options.mustAccept === false)) { // only hide when the accept button is not present _self.hide(); } }; var $itemElementTemplate = $(this.options.templates.iconpickerItem); var $elementsToAppend = []; for (var i in this.options.icons) { if (typeof this.options.icons[i].title === 'string') { var itemElement = $itemElementTemplate.clone(); itemElement.find('i') .addClass(this.options.fullClassFormatter(this.options.icons[i].title)); itemElement.data('iconpickerValue', this.options.icons[i].title) .on('click.iconpicker', itemClickFn); itemElement.attr('title', '.' + this.options.icons[i].title); if (this.options.icons[i].searchTerms.length > 0) { var searchTerms = ''; for (var j = 0; j < this.options.icons[i].searchTerms.length; j++) { searchTerms = searchTerms + this.options.icons[i].searchTerms[j] + ' '; } itemElement.attr('data-search-terms', searchTerms); } $elementsToAppend.push(itemElement); } } this.iconpicker.find('.iconpicker-items').append($elementsToAppend); this.popover.find('.popover-content').append(this.iconpicker); return this.iconpicker; }, _isEventInsideIconpicker: function(e) { var _t = $(e.target); if ((!_t.hasClass('iconpicker-element') || (_t.hasClass('iconpicker-element') && !_t.is(this.element))) && (_t.parents('.iconpicker-popover').length === 0)) { return false; } return true; }, _bindElementEvents: function() { var _self = this; this.getSearchInput().on('keyup.iconpicker', function() { _self.filter($(this).val().toLowerCase()); }); this.getAcceptButton().on('click.iconpicker', function() { var _picked = _self.iconpicker.find('.iconpicker-selected').get(0); _self.update(_self.iconpickerValue); _self._trigger('iconpickerSelected', { iconpickerItem: _picked, iconpickerValue: _self.iconpickerValue }); if (!_self.isInline()) { _self.hide(); } }); this.getCancelButton().on('click.iconpicker', function() { if (!_self.isInline()) { _self.hide(); } }); this.element.on('focus.iconpicker', function(e) { _self.show(); e.stopPropagation(); }); if (this.hasComponent()) { this.component.on('click.iconpicker', function() { _self.toggle(); }); } if (this.hasInput()) { // Bind input keyup event this.input.on('keyup.iconpicker', function(e) { if (!_helpers.inArray(e.keyCode, [38, 40, 37, 39, 16, 17, 18, 9, 8, 91, 93, 20, 46, 186, 190, 46, 78, 188, 44, 86])) { _self.update(); } else { _self._updateFormGroupStatus(_self.getValid(this.value) !== false); } if (_self.options.inputSearch === true) { _self.filter($(this).val().toLowerCase()); } //_self.hide(); }); } }, _bindWindowEvents: function() { var $doc = $(window.document); var _self = this; // Add a namespace to the document events so they can be identified // later for every instance separately var _eventNs = '.iconpicker.inst' + this._id; $(window).on('resize.iconpicker' + _eventNs + ' orientationchange.iconpicker' + _eventNs, function(e) { // reposition popover if (_self.popover.hasClass('in')) { _self.updatePlacement(); } }); if (!_self.isInline()) { $doc.on('mouseup' + _eventNs, function(e) { if (!_self._isEventInsideIconpicker(e) && !_self.isInline()) { _self.hide(); } }); } }, _unbindElementEvents: function() { this.popover.off('.iconpicker'); this.element.off('.iconpicker'); if (this.hasInput()) { this.input.off('.iconpicker'); } if (this.hasComponent()) { this.component.off('.iconpicker'); } if (this.hasContainer()) { this.container.off('.iconpicker'); } }, _unbindWindowEvents: function() { // destroy window and window.document bound events $(window).off('.iconpicker.inst' + this._id); $(window.document).off('.iconpicker.inst' + this._id); }, updatePlacement: function(placement, collision) { placement = placement || this.options.placement; this.options.placement = placement; // set new placement collision = collision || this.options.collision; collision = (collision === true ? 'flip' : collision); var _pos = { // at: Defines which position (or side) on container element to align the // popover element against: "horizontal vertical" alignment. at: "right bottom", // my: Defines which position (or side) on the popover being positioned to align // with the container element: "horizontal vertical" alignment my: "right top", // of: Which element to position against. of: (this.hasInput() && !this.isInputGroup()) ? this.input : this.container, // collision: When the positioned element overflows the window (or within element) // in some direction, move it to an alternative position. collision: (collision === true ? 'flip' : collision), // within: Element to position within, affecting collision detection. within: window }; // remove previous classes this.popover.removeClass('inline topLeftCorner topLeft top topRight topRightCorner ' + 'rightTop right rightBottom bottomRight bottomRightCorner ' + 'bottom bottomLeft bottomLeftCorner leftBottom left leftTop'); if (typeof placement === 'object') { // custom position ? return this.popover.pos($.extend({}, _pos, placement)); } switch (placement) { case 'inline': { _pos = false; } break; case 'topLeftCorner': { _pos.my = 'right bottom'; _pos.at = 'left top'; } break; case 'topLeft': { _pos.my = 'left bottom'; _pos.at = 'left top'; } break; case 'top': { _pos.my = 'center bottom'; _pos.at = 'center top'; } break; case 'topRight': { _pos.my = 'right bottom'; _pos.at = 'right top'; } break; case 'topRightCorner': { _pos.my = 'left bottom'; _pos.at = 'right top'; } break; case 'rightTop': { _pos.my = 'left bottom'; _pos.at = 'right center'; } break; case 'right': { _pos.my = 'left center'; _pos.at = 'right center'; } break; case 'rightBottom': { _pos.my = 'left top'; _pos.at = 'right center'; } break; case 'bottomRightCorner': { _pos.my = 'left top'; _pos.at = 'right bottom'; } break; case 'bottomRight': { _pos.my = 'right top'; _pos.at = 'right bottom'; } break; case 'bottom': { _pos.my = 'center top'; _pos.at = 'center bottom'; } break; case 'bottomLeft': { _pos.my = 'left top'; _pos.at = 'left bottom'; } break; case 'bottomLeftCorner': { _pos.my = 'right top'; _pos.at = 'left bottom'; } break; case 'leftBottom': { _pos.my = 'right top'; _pos.at = 'left center'; } break; case 'left': { _pos.my = 'right center'; _pos.at = 'left center'; } break; case 'leftTop': { _pos.my = 'right bottom'; _pos.at = 'left center'; } break; default: { return false; } break; } this.popover.css({ 'display': (this.options.placement === 'inline') ? '' : 'block' }); if (_pos !== false) { this.popover.pos(_pos).css('maxWidth', $(window).width() - this.container.offset().left - 5); } else { //reset position this.popover.css({ 'top': 'auto', 'right': 'auto', 'bottom': 'auto', 'left': 'auto', 'maxWidth': 'none' }); } this.popover.addClass(this.options.placement); return true; }, _updateComponents: function() { // Update selected item this.iconpicker.find('.iconpicker-item.iconpicker-selected') .removeClass('iconpicker-selected ' + this.options.selectedCustomClass); if (this.iconpickerValue) { this.iconpicker.find('.' + this.options.fullClassFormatter(this.iconpickerValue).replace(/ /g, '.')).parent() .addClass('iconpicker-selected ' + this.options.selectedCustomClass); } // Update component item if (this.hasComponent()) { var icn = this.component.find('i'); if (icn.length > 0) { icn.attr('class', this.options.fullClassFormatter(this.iconpickerValue)); } else { this.component.html(this.getHtml()); } } }, _updateFormGroupStatus: function(isValid) { if (this.hasInput()) { if (isValid !== false) { // Remove form-group error class if any this.input.parents('.form-group:first').removeClass('has-error'); } else { this.input.parents('.form-group:first').addClass('has-error'); } return true; } return false; }, getValid: function(val) { // here we must validate the value (you may change this validation // to suit your needs if (!_helpers.isString(val)) { val = ''; } var isEmpty = (val === ''); // trim string val = $.trim(val); var e = false; for (var i = 0; i < this.options.icons.length; i++) { if (this.options.icons[i].title === val) { e = true; break; }; } if (e || isEmpty) { return val; } return false; }, /** * Sets the internal item value and updates everything, excepting the input or element. * For doing so, call setSourceValue() or update() instead */ setValue: function(val) { // sanitize first var _val = this.getValid(val); if (_val !== false) { this.iconpickerValue = _val; this._trigger('iconpickerSetValue', { iconpickerValue: _val }); return this.iconpickerValue; } else { this._trigger('iconpickerInvalid', { iconpickerValue: val }); return false; } }, getHtml: function() { return ''; }, /** * Calls setValue and if it's a valid item value, sets the input or element value */ setSourceValue: function(val) { val = this.setValue(val); if ((val !== false) && (val !== '')) { if (this.hasInput()) { this.input.val(this.iconpickerValue); } else { this.element.data('iconpickerValue', this.iconpickerValue); } this._trigger('iconpickerSetSourceValue', { iconpickerValue: val }); } return val; }, /** * Returns the input or element item value, without formatting, or defaultValue * if it's empty string, undefined, false or null * @param {type} defaultValue * @returns string|mixed */ getSourceValue: function(defaultValue) { // returns the input or element value, as string defaultValue = defaultValue || this.options.defaultValue; var val = defaultValue; if (this.hasInput()) { val = this.input.val(); } else { val = this.element.data('iconpickerValue'); } if ((val === undefined) || (val === '') || (val === null) || (val === false)) { // if not defined or empty, return default val = defaultValue; } return val; }, hasInput: function() { return (this.input !== false); }, isInputSearch: function() { return (this.hasInput() && (this.options.inputSearch === true)); }, isInputGroup: function() { return this.container.is('.input-group'); }, isDropdownMenu: function() { return this.container.is('.dropdown-menu'); }, hasSeparatedSearchInput: function() { return (this.options.templates.search !== false) && (!this.isInputSearch()); }, hasComponent: function() { return (this.component !== false); }, hasContainer: function() { return (this.container !== false); }, getAcceptButton: function() { return this.popover.find('.iconpicker-btn-accept'); }, getCancelButton: function() { return this.popover.find('.iconpicker-btn-cancel'); }, getSearchInput: function() { return this.popover.find('.iconpicker-search'); }, filter: function(filterText) { if (_helpers.isEmpty(filterText)) { this.iconpicker.find('.iconpicker-item').show(); return $(false); } else { var found = []; this.iconpicker.find('.iconpicker-item').each(function() { var $this = $(this); var text = $this.attr('title').toLowerCase(); var searchTerms = $this.attr('data-search-terms') ? $this.attr('data-search-terms').toLowerCase() : ''; text = text + ' ' + searchTerms; var regex = false; try { regex = new RegExp('(^|\\W)' + filterText, 'g'); } catch (e) { regex = false; } if ((regex !== false) && text.match(regex)) { found.push($this); $this.show(); } else { $this.hide(); } }); return found; } }, show: function() { if (this.popover.hasClass('in')) { return false; } // hide other non-inline pickers $.iconpicker.batch($('.iconpicker-popover.in:not(.inline)').not(this.popover), 'hide'); this._trigger('iconpickerShow', { iconpickerValue: this.iconpickerValue }); this.updatePlacement(); this.popover.addClass('in'); setTimeout($.proxy(function() { this.popover.css('display', this.isInline() ? '' : 'block'); this._trigger('iconpickerShown', { iconpickerValue: this.iconpickerValue }); }, this), this.options.animation ? 300 : 1); // animation duration }, hide: function() { if (!this.popover.hasClass('in')) { return false; } this._trigger('iconpickerHide', { iconpickerValue: this.iconpickerValue }); this.popover.removeClass('in'); setTimeout($.proxy(function() { this.popover.css('display', 'none'); this.getSearchInput().val(''); this.filter(''); // clear filter this._trigger('iconpickerHidden', { iconpickerValue: this.iconpickerValue }); }, this), this.options.animation ? 300 : 1); }, toggle: function() { if (this.popover.is(":visible")) { this.hide(); } else { this.show(true); } }, update: function(val, updateOnlyInternal) { val = (val ? val : this.getSourceValue(this.iconpickerValue)); // reads the input or element value again and tries to update the plugin // fallback to the current selected item value this._trigger('iconpickerUpdate', { iconpickerValue: this.iconpickerValue }); if (updateOnlyInternal === true) { val = this.setValue(val); } else { val = this.setSourceValue(val); this._updateFormGroupStatus(val !== false); } if (val !== false) { this._updateComponents(); } this._trigger('iconpickerUpdated', { iconpickerValue: this.iconpickerValue }); return val; }, destroy: function() { this._trigger('iconpickerDestroy', { iconpickerValue: this.iconpickerValue }); // unbinds events and resets everything to the initial state, // including component mode this.element.removeData('iconpicker').removeData('iconpickerValue').removeClass('iconpicker-element'); this._unbindElementEvents(); this._unbindWindowEvents(); $(this.popover).remove(); this._trigger('iconpickerDestroyed', { iconpickerValue: this.iconpickerValue }); }, disable: function() { if (this.hasInput()) { this.input.prop('disabled', true); return true; } return false; }, enable: function() { if (this.hasInput()) { this.input.prop('disabled', false); return true; } return false; }, isDisabled: function() { if (this.hasInput()) { return (this.input.prop('disabled') === true); } return false; }, isInline: function() { return (this.options.placement === 'inline') || (this.popover.hasClass('inline')); } }; $.iconpicker = Iconpicker; // jQuery plugin $.fn.iconpicker = function(options) { return this.each(function() { var $this = $(this); if (!$this.data('iconpicker')) { // create plugin instance (only if not exists) and expose the entire instance API $this.data('iconpicker', new Iconpicker(this, ((typeof options === 'object') ? options : {}))); } }); }; // List of all Font Awesome icons without class prefix Iconpicker.defaultOptions = $.extend( Iconpicker.defaultOptions, //###REPLACE-WITH-FONT-AWESOME-5-FONTS### ); })); ================================================ FILE: src/js/jquery.ui.pos.js ================================================ (function(factory) { if (typeof define === "function" && define.amd) { // AMD. Register as an anonymous module. define(["jquery"], factory); } else { // Browser globals factory(jQuery); } }(function($) { $.ui = $.ui || {}; var version = $.ui.version = "1.12.1"; /*! * jQuery UI Position 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/position/ */ //>>label: Position //>>group: Core //>>description: Positions elements relative to other elements. //>>docs: http://api.jqueryui.com/position/ //>>demos: http://jqueryui.com/position/ (function() { var cachedScrollbarWidth, max = Math.max, abs = Math.abs, rhorizontal = /left|center|right/, rvertical = /top|center|bottom/, roffset = /[\+\-]\d+(\.[\d]+)?%?/, rposition = /^\w+/, rpercent = /%$/, _position = $.fn.pos; function getOffsets(offsets, width, height) { return [ parseFloat(offsets[0]) * (rpercent.test(offsets[0]) ? width / 100 : 1), parseFloat(offsets[1]) * (rpercent.test(offsets[1]) ? height / 100 : 1) ]; } function parseCss(element, property) { return parseInt($.css(element, property), 10) || 0; } function getDimensions(elem) { var raw = elem[0]; if (raw.nodeType === 9) { return { width: elem.width(), height: elem.height(), offset: { top: 0, left: 0 } }; } if ($.isWindow(raw)) { return { width: elem.width(), height: elem.height(), offset: { top: elem.scrollTop(), left: elem.scrollLeft() } }; } if (raw.preventDefault) { return { width: 0, height: 0, offset: { top: raw.pageY, left: raw.pageX } }; } return { width: elem.outerWidth(), height: elem.outerHeight(), offset: elem.offset() }; } $.pos = { scrollbarWidth: function() { if (cachedScrollbarWidth !== undefined) { return cachedScrollbarWidth; } var w1, w2, div = $("
" + "
"), innerDiv = div.children()[0]; $("body").append(div); w1 = innerDiv.offsetWidth; div.css("overflow", "scroll"); w2 = innerDiv.offsetWidth; if (w1 === w2) { w2 = div[0].clientWidth; } div.remove(); return (cachedScrollbarWidth = w1 - w2); }, getScrollInfo: function(within) { var overflowX = within.isWindow || within.isDocument ? "" : within.element.css("overflow-x"), overflowY = within.isWindow || within.isDocument ? "" : within.element.css("overflow-y"), hasOverflowX = overflowX === "scroll" || (overflowX === "auto" && within.width < within.element[0].scrollWidth), hasOverflowY = overflowY === "scroll" || (overflowY === "auto" && within.height < within.element[0].scrollHeight); return { width: hasOverflowY ? $.pos.scrollbarWidth() : 0, height: hasOverflowX ? $.pos.scrollbarWidth() : 0 }; }, getWithinInfo: function(element) { var withinElement = $(element || window), isWindow = $.isWindow(withinElement[0]), isDocument = !!withinElement[0] && withinElement[0].nodeType === 9, hasOffset = !isWindow && !isDocument; return { element: withinElement, isWindow: isWindow, isDocument: isDocument, offset: hasOffset ? $(element).offset() : { left: 0, top: 0 }, scrollLeft: withinElement.scrollLeft(), scrollTop: withinElement.scrollTop(), width: withinElement.outerWidth(), height: withinElement.outerHeight() }; } }; $.fn.pos = function(options) { if (!options || !options.of) { return _position.apply(this, arguments); } // Make a copy, we don't want to modify arguments options = $.extend({}, options); var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, target = $(options.of), within = $.pos.getWithinInfo(options.within), scrollInfo = $.pos.getScrollInfo(within), collision = (options.collision || "flip").split(" "), offsets = {}; dimensions = getDimensions(target); if (target[0].preventDefault) { // Force left top to allow flipping options.at = "left top"; } targetWidth = dimensions.width; targetHeight = dimensions.height; targetOffset = dimensions.offset; // Clone to reuse original targetOffset later basePosition = $.extend({}, targetOffset); // Force my and at to have valid horizontal and vertical positions // if a value is missing or invalid, it will be converted to center $.each(["my", "at"], function() { var pos = (options[this] || "").split(" "), horizontalOffset, verticalOffset; if (pos.length === 1) { pos = rhorizontal.test(pos[0]) ? pos.concat(["center"]) : rvertical.test(pos[0]) ? ["center"].concat(pos) : ["center", "center"]; } pos[0] = rhorizontal.test(pos[0]) ? pos[0] : "center"; pos[1] = rvertical.test(pos[1]) ? pos[1] : "center"; // Calculate offsets horizontalOffset = roffset.exec(pos[0]); verticalOffset = roffset.exec(pos[1]); offsets[this] = [ horizontalOffset ? horizontalOffset[0] : 0, verticalOffset ? verticalOffset[0] : 0 ]; // Reduce to just the positions without the offsets options[this] = [ rposition.exec(pos[0])[0], rposition.exec(pos[1])[0] ]; }); // Normalize collision option if (collision.length === 1) { collision[1] = collision[0]; } if (options.at[0] === "right") { basePosition.left += targetWidth; } else if (options.at[0] === "center") { basePosition.left += targetWidth / 2; } if (options.at[1] === "bottom") { basePosition.top += targetHeight; } else if (options.at[1] === "center") { basePosition.top += targetHeight / 2; } atOffset = getOffsets(offsets.at, targetWidth, targetHeight); basePosition.left += atOffset[0]; basePosition.top += atOffset[1]; return this.each(function() { var collisionPosition, using, elem = $(this), elemWidth = elem.outerWidth(), elemHeight = elem.outerHeight(), marginLeft = parseCss(this, "marginLeft"), marginTop = parseCss(this, "marginTop"), collisionWidth = elemWidth + marginLeft + parseCss(this, "marginRight") + scrollInfo.width, collisionHeight = elemHeight + marginTop + parseCss(this, "marginBottom") + scrollInfo.height, position = $.extend({}, basePosition), myOffset = getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight()); if (options.my[0] === "right") { position.left -= elemWidth; } else if (options.my[0] === "center") { position.left -= elemWidth / 2; } if (options.my[1] === "bottom") { position.top -= elemHeight; } else if (options.my[1] === "center") { position.top -= elemHeight / 2; } position.left += myOffset[0]; position.top += myOffset[1]; collisionPosition = { marginLeft: marginLeft, marginTop: marginTop }; $.each(["left", "top"], function(i, dir) { if ($.ui.pos[collision[i]]) { $.ui.pos[collision[i]][dir](position, { targetWidth: targetWidth, targetHeight: targetHeight, elemWidth: elemWidth, elemHeight: elemHeight, collisionPosition: collisionPosition, collisionWidth: collisionWidth, collisionHeight: collisionHeight, offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]], my: options.my, at: options.at, within: within, elem: elem }); } }); if (options.using) { // Adds feedback as second argument to using callback, if present using = function(props) { var left = targetOffset.left - position.left, right = left + targetWidth - elemWidth, top = targetOffset.top - position.top, bottom = top + targetHeight - elemHeight, feedback = { target: { element: target, left: targetOffset.left, top: targetOffset.top, width: targetWidth, height: targetHeight }, element: { element: elem, left: position.left, top: position.top, width: elemWidth, height: elemHeight }, horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" }; if (targetWidth < elemWidth && abs(left + right) < targetWidth) { feedback.horizontal = "center"; } if (targetHeight < elemHeight && abs(top + bottom) < targetHeight) { feedback.vertical = "middle"; } if (max(abs(left), abs(right)) > max(abs(top), abs(bottom))) { feedback.important = "horizontal"; } else { feedback.important = "vertical"; } options.using.call(this, props, feedback); }; } elem.offset($.extend(position, { using: using })); }); }; $.ui.pos = { _trigger: function(position, data, name, triggered) { if (data.elem) { data.elem.trigger({ 'type': name, 'position': position, 'positionData': data, 'triggered': triggered }); } }, fit: { left: function(position, data) { $.ui.pos._trigger(position, data, 'posCollide', 'fitLeft'); var within = data.within, withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, outerWidth = within.width, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = withinOffset - collisionPosLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, newOverRight; // Element is wider than within if (data.collisionWidth > outerWidth) { // Element is initially over the left side of within if (overLeft > 0 && overRight <= 0) { newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; position.left += overLeft - newOverRight; // Element is initially over right side of within } else if (overRight > 0 && overLeft <= 0) { position.left = withinOffset; // Element is initially over both left and right sides of within } else { if (overLeft > overRight) { position.left = withinOffset + outerWidth - data.collisionWidth; } else { position.left = withinOffset; } } // Too far left -> align with left edge } else if (overLeft > 0) { position.left += overLeft; // Too far right -> align with right edge } else if (overRight > 0) { position.left -= overRight; // Adjust based on position and margin } else { position.left = max(position.left - collisionPosLeft, position.left); } $.ui.pos._trigger(position, data, 'posCollided', 'fitLeft'); }, top: function(position, data) { $.ui.pos._trigger(position, data, 'posCollide', 'fitTop'); var within = data.within, withinOffset = within.isWindow ? within.scrollTop : within.offset.top, outerHeight = data.within.height, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = withinOffset - collisionPosTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, newOverBottom; // Element is taller than within if (data.collisionHeight > outerHeight) { // Element is initially over the top of within if (overTop > 0 && overBottom <= 0) { newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; position.top += overTop - newOverBottom; // Element is initially over bottom of within } else if (overBottom > 0 && overTop <= 0) { position.top = withinOffset; // Element is initially over both top and bottom of within } else { if (overTop > overBottom) { position.top = withinOffset + outerHeight - data.collisionHeight; } else { position.top = withinOffset; } } // Too far up -> align with top } else if (overTop > 0) { position.top += overTop; // Too far down -> align with bottom edge } else if (overBottom > 0) { position.top -= overBottom; // Adjust based on position and margin } else { position.top = max(position.top - collisionPosTop, position.top); } $.ui.pos._trigger(position, data, 'posCollided', 'fitTop'); } }, flip: { left: function(position, data) { $.ui.pos._trigger(position, data, 'posCollide', 'flipLeft'); var within = data.within, withinOffset = within.offset.left + within.scrollLeft, outerWidth = within.width, offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = collisionPosLeft - offsetLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, myOffset = data.my[0] === "left" ? -data.elemWidth : data.my[0] === "right" ? data.elemWidth : 0, atOffset = data.at[0] === "left" ? data.targetWidth : data.at[0] === "right" ? -data.targetWidth : 0, offset = -2 * data.offset[0], newOverRight, newOverLeft; if (overLeft < 0) { newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; if (newOverRight < 0 || newOverRight < abs(overLeft)) { position.left += myOffset + atOffset + offset; } } else if (overRight > 0) { newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; if (newOverLeft > 0 || abs(newOverLeft) < overRight) { position.left += myOffset + atOffset + offset; } } $.ui.pos._trigger(position, data, 'posCollided', 'flipLeft'); }, top: function(position, data) { $.ui.pos._trigger(position, data, 'posCollide', 'flipTop'); var within = data.within, withinOffset = within.offset.top + within.scrollTop, outerHeight = within.height, offsetTop = within.isWindow ? within.scrollTop : within.offset.top, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = collisionPosTop - offsetTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, top = data.my[1] === "top", myOffset = top ? -data.elemHeight : data.my[1] === "bottom" ? data.elemHeight : 0, atOffset = data.at[1] === "top" ? data.targetHeight : data.at[1] === "bottom" ? -data.targetHeight : 0, offset = -2 * data.offset[1], newOverTop, newOverBottom; if (overTop < 0) { newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; if (newOverBottom < 0 || newOverBottom < abs(overTop)) { position.top += myOffset + atOffset + offset; } } else if (overBottom > 0) { newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; if (newOverTop > 0 || abs(newOverTop) < overBottom) { position.top += myOffset + atOffset + offset; } } $.ui.pos._trigger(position, data, 'posCollided', 'flipTop'); } }, flipfit: { left: function() { $.ui.pos.flip.left.apply(this, arguments); $.ui.pos.fit.left.apply(this, arguments); }, top: function() { $.ui.pos.flip.top.apply(this, arguments); $.ui.pos.fit.top.apply(this, arguments); } } }; // fraction support test (function() { var testElement, testElementParent, testElementStyle, offsetLeft, i, body = document.getElementsByTagName("body")[0], div = document.createElement("div"); //Create a "fake body" for testing based on method used in jQuery.support testElement = document.createElement(body ? "div" : "body"); testElementStyle = { visibility: "hidden", width: 0, height: 0, border: 0, margin: 0, background: "none" }; if (body) { $.extend(testElementStyle, { position: "absolute", left: "-1000px", top: "-1000px" }); } for (i in testElementStyle) { testElement.style[i] = testElementStyle[i]; } testElement.appendChild(div); testElementParent = body || document.documentElement; testElementParent.insertBefore(testElement, testElementParent.firstChild); div.style.cssText = "position: absolute; left: 10.7432222px;"; offsetLeft = $(div).offset().left; $.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11; testElement.innerHTML = ""; testElementParent.removeChild(testElement); })(); })(); var position = $.ui.position; })); ================================================ FILE: src/less/iconpicker.less ================================================ /*! * Font Awesome Icon Picker * https://farbelous.github.io/fontawesome-iconpicker/ * * @author Javi Aguilar, itsjavi.com * @license MIT License * @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE */ @import 'variables.less'; @import 'popovers.less'; .iconpicker { * { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; position: relative; } position: relative; .clearfix(); text-align: left; text-shadow: none; line-height: 0; display: block; margin: 0; overflow: hidden; .iconpicker-items { position: relative; .clearfix(); clear: both; float: none; padding: @base_spacing 0 0 @base_spacing; background: #fff; //margin:0 -@base_spacing -@base_spacing 0; //width:@picker_width - (@base_spacing*2); margin: 0; overflow: hidden; overflow-y: auto; min-height: @row_outer_height; max-height: (@row_outer_height * @num_rows) + 1; } .iconpicker-item { float: left; width: @item_size; height: @item_size; padding: @base_spacing; margin: 0 @base_spacing @base_spacing 0; text-align: center; cursor: pointer; border-radius: 3px; font-size: @item_size; .outer-border(); color: inherit; &:hover:not(.iconpicker-selected) { background-color: @hover_bg; } &.iconpicker-selected { box-shadow: none; color: #fff; background: #000; } /*&:nth-child(4n+4) { margin-right: 0; } &:nth-last-child(-n+4) { margin-bottom: 0; }*/ //box-shadow:0; } } .iconpicker-component { cursor: pointer; } ================================================ FILE: src/less/popovers.less ================================================ // // Popovers // -------------------------------------------------- .iconpicker-popover.popover { position: absolute; top: 0; left: 0; display: none; max-width: none; padding: 1px; text-align: left; width: @picker_width + @num_cols; background: @popover-title-bg; z-index: 9; // Offset the popover to account for the popover arrow &.top, &.topLeftCorner, &.topLeft, &.topRight, &.topRightCorner { margin-top: -@popover-arrow-width; } &.right, &.rightTop, &.rightBottom { margin-left: @popover-arrow-width; } &.bottom, &.bottomRightCorner, &.bottomRight, &.bottomLeft, &.bottomLeftCorner { margin-top: @popover-arrow-width; } &.left, &.leftBottom, &.leftTop { margin-left: -@popover-arrow-width; } &.inline { > .arrow { display: none; } margin: 0 0 @base_spacing 0; position: relative; display: inline-block; opacity: 1; top: auto; left: auto; bottom: auto; right: auto; max-width: 100%; box-shadow: none; z-index: auto; vertical-align: top; } } .dropdown-menu .iconpicker-popover.inline { margin: 0; border: none; } .dropdown-menu.iconpicker-container { padding: 0; } .iconpicker-popover.popover .popover-title { //padding: 8px 14px; //border-radius: 5px 5px 0 0; padding: @base_spacing; font-size: @title_size; line-height: @title_size + 2px; border-bottom: 1px solid darken(@popover-title-bg, 5%); background-color: @popover-title-bg; input[type=search].iconpicker-search { margin: 0 0 2px 0; } } .iconpicker-popover.popover .popover-title-text ~ input[type=search].iconpicker-search { margin-top: @base_spacing; } .iconpicker-popover.popover .popover-content { //padding: 9px 14px; padding: 0px; text-align: center; //overflow:hidden; } .iconpicker-popover .popover-footer { .clearfix(); float: none; clear: both; padding: @base_spacing; text-align: right; margin: 0; border-top: 1px solid darken(@popover-title-bg, 5%); background-color: @popover-title-bg; .iconpicker-btn { margin-left: 10px; } input[type=search].iconpicker-search { /*width:auto; float:left;*/ margin-bottom: @base_spacing; } } // Arrows // // .arrow is outer, .arrow:after is inner .iconpicker-popover.popover > .arrow { &, &:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } } .iconpicker-popover.popover > .arrow { border-width: @popover-arrow-outer-width; } .iconpicker-popover.popover > .arrow:after { border-width: @popover-arrow-width; content: ""; } .iconpicker-popover.popover { &.top, &.topLeft, &.topRight { > .arrow { left: 50%; margin-left: -@popover-arrow-outer-width; border-bottom-width: 0; border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback border-top-color: @popover-arrow-outer-color; bottom: -@popover-arrow-outer-width; &:after { content: " "; bottom: 1px; margin-left: -@popover-arrow-width; border-bottom-width: 0; border-top-color: @popover-arrow-color; } } } &.topLeft > .arrow { left: @arrow_position; margin-left: 0; } &.topRight > .arrow { left: auto; right: @arrow_position; margin-left: 0; } &.right, &.rightTop, &.rightBottom { > .arrow { top: 50%; left: -@popover-arrow-outer-width; margin-top: -@popover-arrow-outer-width; border-left-width: 0; border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback border-right-color: @popover-arrow-outer-color; &:after { content: " "; left: 1px; bottom: -@popover-arrow-width; border-left-width: 0; border-right-color: @popover-arrow-color; } } } &.rightTop > .arrow { top: auto; bottom: @arrow_position; margin-top: 0; } &.rightBottom > .arrow { top: @arrow_position; margin-top: 0; } &.bottom, &.bottomRight, &.bottomLeft { > .arrow { left: 50%; margin-left: -@popover-arrow-outer-width; border-top-width: 0; border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback border-bottom-color: @popover-arrow-outer-color; top: -@popover-arrow-outer-width; &:after { content: " "; top: 1px; margin-left: -@popover-arrow-width; border-top-width: 0; border-bottom-color: @popover-arrow-color; } } } &.bottomLeft > .arrow { left: @arrow_position; margin-left: 0; } &.bottomRight > .arrow { left: auto; right: @arrow_position; margin-left: 0; } &.left, &.leftBottom, &.leftTop { > .arrow { top: 50%; right: -@popover-arrow-outer-width; margin-top: -@popover-arrow-outer-width; border-right-width: 0; border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback border-left-color: @popover-arrow-outer-color; &:after { content: " "; right: 1px; border-right-width: 0; border-left-color: @popover-arrow-color; bottom: -@popover-arrow-width; } } } &.leftBottom > .arrow { top: @arrow_position; margin-top: 0; } &.leftTop > .arrow { top: auto; bottom: @arrow_position; margin-top: 0; } } ================================================ FILE: src/less/variables.less ================================================ // Iconpicker variables: @item_size: 14px; @hover_bg: #eee; @num_cols: 4; @num_rows: 5; @base_spacing: 12px; @scrollbar_compensation: @base_spacing + 6px; @picker_width: (@item_size * @num_cols) + (@num_cols * @base_spacing * (@num_cols - 1)) + @base_spacing + @scrollbar_compensation; @row_outer_height: (@item_size + (@base_spacing * 3)) - 1px; @title_size: (@base_spacing + @item_size) / 2; @border_color: #ddd; @arrow_position: 8px; // arrow position when not centered (either for left, right, top or bottom) //== Popovers // //## //** Popover body background color @popover-bg: #fff; //** Popover maximum width @popover-max-width: 276px; //** Popover border color @popover-border-color: rgba(0, 0, 0, .2); //** Popover fallback border color @popover-fallback-border-color: #ccc; //** Popover title background color @popover-title-bg: darken(@popover-bg, 3%); //** Popover arrow width @popover-arrow-width: 10px; //** Popover arrow color @popover-arrow-color: #fff; //** Popover outer arrow width @popover-arrow-outer-width: (@popover-arrow-width + 1); //** Popover outer arrow color @popover-arrow-outer-color: fadein(@popover-border-color, 5%); //** Popover outer arrow fallback color @popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%); // Clearfix // // For modern browsers // 1. The space content is one way to avoid an Opera bug when the // contenteditable attribute is included anywhere else in the document. // Otherwise it causes space to appear at the top and bottom of elements // that are clearfixed. // 2. The use of `table` rather than `block` is only necessary if using // `:before` to contain the top-margins of child elements. // // Source: http://nicolasgallagher.com/micro-clearfix-hack/ .clearfix() { &:before, &:after { content: " "; // 1 display: table; // 2 } &:after { clear: both; } } .outer-border() { box-shadow: 0 0 0 1px @border_color; } // // Other Bootstrap Variables: // -------------------------------------------------- //== Colors // //## Gray and brand colors for use across Bootstrap. @gray-darker: lighten(#000, 13.5%); // #222 @gray-dark: lighten(#000, 20%); // #333 @gray: lighten(#000, 33.5%); // #555 @gray-light: lighten(#000, 60%); // #999 @gray-lighter: lighten(#000, 93.5%); // #eee @brand-primary: #428bca; @brand-success: #5cb85c; @brand-info: #5bc0de; @brand-warning: #f0ad4e; @brand-danger: #d9534f; //== Scaffolding // // ## Settings for some of the most global styles. //** Background color for ``. @body-bg: #fff; //** Global text color on ``. @text-color: @gray-dark; //** Global textual link color. @link-color: @brand-primary; //** Link hover color set via `darken()` function. @link-hover-color: darken(@link-color, 15%);