diff --git a/app/assets/javascripts/discourse-common/lib/attribute-hook.js.es6 b/app/assets/javascripts/discourse-common/lib/attribute-hook.js.es6 deleted file mode 100644 index 33aecc6646a..00000000000 --- a/app/assets/javascripts/discourse-common/lib/attribute-hook.js.es6 +++ /dev/null @@ -1,42 +0,0 @@ -// FROM: https://github.com/Matt-Esch/virtual-dom -// License: MIT - -function AttributeHook(namespace, value) { - if (!(this instanceof AttributeHook)) { - return new AttributeHook(namespace, value); - } - - this.namespace = namespace; - this.value = value; -} - -AttributeHook.prototype.hook = function(node, prop, prev) { - if ( - prev && - prev.type === "AttributeHook" && - prev.value === this.value && - prev.namespace === this.namespace - ) { - return; - } - - node.setAttributeNS(this.namespace, prop, this.value); -}; - -AttributeHook.prototype.unhook = function(node, prop, next) { - if ( - next && - next.type === "AttributeHook" && - next.namespace === this.namespace - ) { - return; - } - - var colonPosition = prop.indexOf(":"); - var localName = colonPosition > -1 ? prop.substr(colonPosition + 1) : prop; - node.removeAttributeNS(this.namespace, localName); -}; - -AttributeHook.prototype.type = "AttributeHook"; - -export default AttributeHook; diff --git a/app/assets/javascripts/discourse-common/lib/icon-library.js.es6 b/app/assets/javascripts/discourse-common/lib/icon-library.js.es6 index bbf9d67eb89..2ad408cac33 100644 --- a/app/assets/javascripts/discourse-common/lib/icon-library.js.es6 +++ b/app/assets/javascripts/discourse-common/lib/icon-library.js.es6 @@ -1,202 +1,37 @@ import { h } from "virtual-dom"; -import attributeHook from "discourse-common/lib/attribute-hook"; -import deprecated from "discourse-common/lib/deprecated"; - -const SVG_NAMESPACE = "http://www.w3.org/2000/svg"; let _renderers = []; const REPLACEMENTS = { "d-tracking": "circle", "d-muted": "times-circle", - "d-regular": "far-circle", + "d-regular": "circle-o", "d-watching": "exclamation-circle", - "d-watching-first": "far-dot-circle", + "d-watching-first": "dot-circle-o", "d-drop-expanded": "caret-down", "d-drop-collapsed": "caret-right", - "d-unliked": "far-heart", + "d-unliked": "heart-o", "d-liked": "heart", "notification.mentioned": "at", "notification.group_mentioned": "at", "notification.quoted": "quote-right", "notification.replied": "reply", "notification.posted": "reply", - "notification.edited": "pencil-alt", + "notification.edited": "pencil", "notification.liked": "heart", "notification.liked_2": "heart", "notification.liked_many": "heart", - "notification.private_message": "far-envelope", - "notification.invited_to_private_message": "far-envelope", - "notification.invited_to_topic": "hand-point-right", + "notification.private_message": "envelope-o", + "notification.invited_to_private_message": "envelope-o", + "notification.invited_to_topic": "hand-o-right", "notification.invitee_accepted": "user", "notification.moved_post": "sign-out", "notification.linked": "link", "notification.granted_badge": "certificate", - "notification.topic_reminder": "hand-point-right", - "notification.watching_first_post": "far-dot-circle", + "notification.topic_reminder": "hand-o-right", + "notification.watching_first_post": "dot-circle-o", "notification.group_message_summary": "group" }; -const fa4Replacements = { - "area-chart": "chart-area", - "bar-chart": "far-chart-bar", - "bar-chart-o": "far-chart-bar", - "chain-broken": "unlink", - "circle-thin": "far-circle", - "code-fork": "code-branch", - "commenting-o": "far-comment-dots", - "credit-card": "far-credit-card", - "drivers-license": "id-card", - "drivers-license-o": "far-id-card", - "external-link": "external-link-alt", - "external-link-square": "external-link-square-alt", - "eye-slash": "far-eye-slash", - "facebook-square": "fab-facebook-square", - "file-sound-o": "far-file-audio", - "file-text": "file-alt", - "file-text-o": "far-file-alt", - "files-o": "far-copy", - "floppy-o": "far-save", - "github-alt": "fab-github-alt", - "github-square": "fab-github-square", - "hacker-news": "fab-hacker-news", - "hand-grab-o": "far-hand-rock", - "hand-o-right": "hand-point-right", - "id-badge": "far-id-badge", - "internet-explorer": "fab-internet-explorer", - "line-chart": "chart-line", - "linkedin-square": "fab-linkedin", - "list-alt": "far-list-alt", - "mail-forward": "share", - "mail-reply": "reply", - "mail-reply-all": "reply-all", - "map-marker": "map-marker-alt", - "mobile-phone": "mobile-alt", - "object-group": "far-object-group", - "object-ungroup": "far-object-ungroup", - "pencil-square": "pen-square", - "pencil-square-o": "far-edit", - "picture-o": "far-image", - "pie-chart": "chart-pie", - "rotate-left": "undo", - "rotate-right": "redo", - "send-o": "far-paper-plane", - "sign-in": "sign-in-alt", - "sign-out": "sign-out-alt", - "soccer-ball-o": "far-futbol", - "sort-alpha-asc": "sort-alpha-down", - "sort-alpha-desc": "sort-alpha-up", - "sort-amount-asc": "sort-amount-down", - "sort-amount-desc": "sort-amount-up", - "sort-asc": "sort-up", - "sort-desc": "sort-down", - "sort-numeric-asc": "sort-numeric-down", - "sort-numeric-desc": "sort-numeric-up", - "star-half-empty": "far-star-half", - "star-half-full": "far-star-half", - "thumb-tack": "thumbtack", - "thumbs-o-down": "far-thumbs-down", - "thumbs-o-up": "far-thumbs-up", - "times-rectangle": "window-close", - "times-rectangle-o": "far-window-close", - "toggle-down": "far-caret-square-down", - "toggle-left": "far-caret-square-left", - "toggle-right": "far-caret-square-right", - "toggle-up": "far-caret-square-up", - "trash-o": "far-trash-alt", - "twitter-square": "fab-twitter-square", - "vcard-o": "far-address-card", - "video-camera": "video", - "vimeo-square": "fab-vimeo-square", - "wheelchair-alt": "fab-accessible-icon", - "window-maximize": "far-window-maximize", - "window-restore": "far-window-restore", - "youtube-play": "fab-youtube", - "youtube-square": "fab-youtube-square", - apple: "fab-apple", - bank: "university", - cab: "taxi", - calendar: "calendar-alt", - chain: "link", - clipboard: "far-clipboard", - clone: "far-clone", - close: "times", - cny: "yen-sign", - commenting: "far-comment-dots", - compass: "far-compass", - copyright: "far-copyright", - cutlery: "utensils", - dashboard: "tachometer-alt", - deafness: "deaf", - dedent: "outdent", - diamond: "far-gem", - discord: "fab-discord", - dollar: "dollar-sign", - exchange: "exchange-alt", - eye: "far-eye", - eyedropper: "eye-dropper", - facebook: "fab-facebook-f", - feed: "rss", - flash: "bolt", - gbp: "pound-sign", - gear: "cog", - gears: "cogs", - github: "fab-github", - glass: "glass-martini", - glass: "glass-martini", - google: "fab-google", - group: "users", - header: "heading", - hotel: "bed", - ils: "shekel-sign", - image: "far-image", - inr: "rupee-sign", - instagram: "fab-instagram", - institution: "university", - intersex: "transgender", - jpy: "yen-sign", - legal: "gavel", - linkedin: "fab-linkedin-in", - linode: "fab-linode", - linux: "fab-linux", - meetup: "fab-meetup", - mobile: "mobile-alt", - navicon: "bars", - paste: "far-clipboard", - pencil: "pencil-alt", - photo: "far-image", - refresh: "sync", - registered: "far-registered", - remove: "times", - remove: "times", - reorder: "bars", - repeat: "redo", - rmb: "yen-sign", - rouble: "ruble-sign", - ruble: "ruble-sign", - rupee: "rupee-sign", - s15: "bath", - scissors: "cut", - send: "paper-plane", - shekel: "shekel-sign", - shield: "shield-alt", - signing: "sign-language", - support: "far-life-ring", - tablet: "tablet-alt", - tachometer: "tachometer-alt", - television: "tv", - ticket: "ticket-alt", - trash: "trash-alt", - twitter: "fab-twitter", - unsorted: "sort", - vcard: "address-card", - vimeo: "fab-vimeo-v", - warning: "exclamation-triangle", - whatsapp: "fab-whatsapp", - windows: "fab-windows", - yahoo: "fab-yahoo", - youtube: "fab-youtube" -}; - export function replaceIcon(source, destination) { REPLACEMENTS[source] = destination; } @@ -224,13 +59,6 @@ export function iconNode(id, params) { return renderIcon("node", id, params); } -export function convertIconClass(icon) { - return icon - .replace("far fa-", "far-") - .replace("fab fa-", "fab-") - .replace("fa-", ""); -} - // TODO: Improve how helpers are registered for vdom compliation if (typeof Discourse !== "undefined") { Discourse.__widget_helpers.iconNode = iconNode; @@ -240,114 +68,58 @@ export function registerIconRenderer(renderer) { _renderers.unshift(renderer); } -function iconClasses(icon, params) { - // "notification." is invalid syntax for classes, use replacement instead - const dClass = - icon.replacementId && icon.id.indexOf("notification.") > -1 - ? icon.replacementId - : icon.id; +// Support for font awesome icons +function faClasses(icon, params) { + let classNames = `fa fa-${icon.replacementId || icon.id} d-icon d-icon-${ + icon.id + }`; - let classNames = `fa d-icon d-icon-${dClass} svg-icon`; - - if (params && params["class"]) { - classNames += " " + params["class"]; + if (params) { + if (params.modifier) { + classNames += " fa-" + params.modifier; + } + if (params["class"]) { + classNames += " " + params["class"]; + } } - return classNames; } -function warnIfMissing(id) { - if ( - typeof Discourse !== "undefined" && - Discourse.Environment === "development" && - Discourse.SvgIconList && - Discourse.SvgIconList.indexOf(id) === -1 - ) { - console.warn(`The icon "${id}" is missing from the SVG subset.`); - } -} - -function warnIfDeprecated(oldId, newId) { - if ( - typeof Discourse !== "undefined" && - Discourse.Environment === "development" && - !Ember.testing - ) { - deprecated(`Icon "${oldId}" is now "${newId}".`); - } -} - -function handleIconId(icon) { - let id = icon.replacementId || icon.id || ""; - - if (fa4Replacements.hasOwnProperty(id)) { - warnIfDeprecated(id, fa4Replacements[id]); - id = fa4Replacements[id]; - } else if (id.substr(id.length - 2) === "-o") { - let newId = "far-" + id.replace("-o", ""); - warnIfDeprecated(id, newId); - id = newId; - } - - // TODO: clean up "thumbtack unpinned" at source instead of here - id = id.replace(" unpinned", ""); - - warnIfMissing(id); - return id; -} - // default resolver is font awesome registerIconRenderer({ name: "font-awesome", string(icon, params) { - const id = handleIconId(icon); - let html = ``; + html += `>`; if (params.label) { html += `${params.label}`; } - if (params.title) { - html = `${html}`; - } return html; }, node(icon, params) { - const id = handleIconId(icon); - const classes = iconClasses(icon, params) + " svg-node"; + let tagName = params.tagName || "i"; - const svg = h( - "svg", - { - attributes: { class: classes, "aria-hidden": true }, - namespace: SVG_NAMESPACE - }, - [ - h("use", { - "xlink:href": attributeHook("http://www.w3.org/1999/xlink", `#${id}`), - namespace: SVG_NAMESPACE - }) - ] - ); + const properties = { + className: faClasses(icon, params), + attributes: { "aria-hidden": true } + }; if (params.title) { - return h( - "span", - { - title: params.title, - attributes: { class: "svg-icon-title" } - }, - [svg] - ); + properties.attributes.title = params.title; + } + if (params.label) { + return h(tagName, properties, h("span.sr-only", I18n.t(params.label))); } else { - return svg; + return h(tagName, properties); } } }); diff --git a/app/assets/javascripts/discourse/components/categories-boxes-topic.js.es6 b/app/assets/javascripts/discourse/components/categories-boxes-topic.js.es6 index c061cb55e95..f39c5c6c899 100644 --- a/app/assets/javascripts/discourse/components/categories-boxes-topic.js.es6 +++ b/app/assets/javascripts/discourse/components/categories-boxes-topic.js.es6 @@ -2,15 +2,19 @@ import computed from "ember-addons/ember-computed-decorators"; export default Ember.Component.extend({ tagName: "li", + classNameBindings: ["topicStatusIcon"], @computed("topic.pinned", "topic.closed", "topic.archived") topicStatusIcon(pinned, closed, archived) { if (pinned) { - return "thumbtack"; + return "topic-pinned"; } - if (closed || archived) { - return "lock"; + if (closed) { + return "topic-closed"; } - return "far-file-alt"; + if (archived) { + return "topic-archived"; + } + return "topic-open"; } }); diff --git a/app/assets/javascripts/discourse/components/group-flair-inputs.js.es6 b/app/assets/javascripts/discourse/components/group-flair-inputs.js.es6 index 322dffcf213..00036734dee 100644 --- a/app/assets/javascripts/discourse/components/group-flair-inputs.js.es6 +++ b/app/assets/javascripts/discourse/components/group-flair-inputs.js.es6 @@ -1,6 +1,5 @@ import computed from "ember-addons/ember-computed-decorators"; import { escapeExpression } from "discourse/lib/utilities"; -import { convertIconClass } from "discourse-common/lib/icon-library"; export default Ember.Component.extend({ classNames: ["group-flair-inputs"], @@ -15,11 +14,6 @@ export default Ember.Component.extend({ return flairURL && flairURL.substr(0, 3) === "fa-"; }, - @computed("model.flair_url", "flairPreviewIcon") - flairPreviewIconUrl(flairURL, flairPreviewIcon) { - return flairPreviewIcon ? convertIconClass(flairURL) : ""; - }, - @computed("model.flair_url", "flairPreviewIcon") flairPreviewImage(flairURL, flairPreviewIcon) { return flairURL && !flairPreviewIcon; diff --git a/app/assets/javascripts/discourse/components/topic-status.js.es6 b/app/assets/javascripts/discourse/components/topic-status.js.es6 index 2ab678f9d21..834b26dfe19 100644 --- a/app/assets/javascripts/discourse/components/topic-status.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-status.js.es6 @@ -17,7 +17,7 @@ export default Ember.Component.extend( click(e) { // only pin unpin for now - if (this.get("canAct") && $(e.target).hasClass("d-icon-thumbtack")) { + if (this.get("canAct") && $(e.target).hasClass("d-icon-thumb-tack")) { const topic = this.get("topic"); topic.get("pinned") ? topic.clearPin() : topic.rePin(); } @@ -58,10 +58,10 @@ export default Ember.Component.extend( renderIconIf("topic.archived", "lock", "archived"); } - renderIconIf("topic.pinned", "thumbtack", "pinned", this.get("canAct")); + renderIconIf("topic.pinned", "thumb-tack", "pinned", this.get("canAct")); renderIconIf( "topic.unpinned", - "thumbtack", + "thumb-tack", "unpinned", this.get("canAct") ); diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index 7beec81dc30..25927a467f3 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -186,6 +186,15 @@ export default Ember.Controller.extend({ ); }, + @computed("model.whisper", "model.unlistTopic") + whisperOrUnlistTopicText(whisper, unlistTopic) { + if (whisper) { + return I18n.t("composer.whisper"); + } else if (unlistTopic) { + return I18n.t("composer.unlist"); + } + }, + @computed isStaffUser() { const currentUser = this.currentUser; diff --git a/app/assets/javascripts/discourse/controllers/full-page-search.js.es6 b/app/assets/javascripts/discourse/controllers/full-page-search.js.es6 index 0e1984ff49a..1988ae91bac 100644 --- a/app/assets/javascripts/discourse/controllers/full-page-search.js.es6 +++ b/app/assets/javascripts/discourse/controllers/full-page-search.js.es6 @@ -196,7 +196,7 @@ export default Ember.Controller.extend({ @computed("expanded") searchAdvancedIcon(expanded) { - return iconHTML(expanded ? "caret-down" : "caret-right"); + return iconHTML(expanded ? "caret-down fa-fw" : "caret-right fa-fw"); }, @computed("page") diff --git a/app/assets/javascripts/discourse/controllers/invite.js.es6 b/app/assets/javascripts/discourse/controllers/invite.js.es6 index b9f05daed37..1b750a18659 100644 --- a/app/assets/javascripts/discourse/controllers/invite.js.es6 +++ b/app/assets/javascripts/discourse/controllers/invite.js.es6 @@ -206,7 +206,7 @@ export default Ember.Controller.extend(ModalFunctionality, { this.set("inviteIcon", "envelope"); return I18n.t("topic.invite_reply.to_topic_email"); } else { - this.set("inviteIcon", "hand-point-right"); + this.set("inviteIcon", "hand-o-right"); return I18n.t("topic.invite_reply.to_topic_username"); } } diff --git a/app/assets/javascripts/discourse/helpers/icon-or-image.js.es6 b/app/assets/javascripts/discourse/helpers/icon-or-image.js.es6 index 8e48171eee7..e93068deea9 100644 --- a/app/assets/javascripts/discourse/helpers/icon-or-image.js.es6 +++ b/app/assets/javascripts/discourse/helpers/icon-or-image.js.es6 @@ -1,15 +1,14 @@ import { htmlHelper } from "discourse-common/lib/helpers"; -import { iconHTML, convertIconClass } from "discourse-common/lib/icon-library"; +import { iconHTML } from "discourse-common/lib/icon-library"; export default htmlHelper(function({ icon, image }) { if (!Ember.isEmpty(image)) { return ``; } - if (Ember.isEmpty(icon) || icon.indexOf("fa-") < 0) { + if (Ember.isEmpty(icon) || icon.indexOf("fa-") !== 0) { return ""; } - icon = convertIconClass(icon); - return iconHTML(icon); + return iconHTML(icon.replace("fa-", "")); }); diff --git a/app/assets/javascripts/discourse/initializers/svg-sprite-fontawesome.js.es6 b/app/assets/javascripts/discourse/initializers/svg-sprite-fontawesome.js.es6 deleted file mode 100644 index 7a5924423c9..00000000000 --- a/app/assets/javascripts/discourse/initializers/svg-sprite-fontawesome.js.es6 +++ /dev/null @@ -1,11 +0,0 @@ -import svgSpriteLoader from "discourse/lib/svg-sprite-loader"; - -export default { - name: "svg-sprite-fontawesome", - - initialize() { - if (Discourse && Discourse.SvgSpritePath) { - svgSpriteLoader.load(Discourse.SvgSpritePath, "fontawesome"); - } - } -}; diff --git a/app/assets/javascripts/discourse/lib/lightbox.js.es6 b/app/assets/javascripts/discourse/lib/lightbox.js.es6 index 6b0014e2401..48d3c66bdb9 100644 --- a/app/assets/javascripts/discourse/lib/lightbox.js.es6 +++ b/app/assets/javascripts/discourse/lib/lightbox.js.es6 @@ -1,6 +1,5 @@ import loadScript from "discourse/lib/load-script"; import { escapeExpression } from "discourse/lib/utilities"; -import { renderIcon } from "discourse-common/lib/icon-library"; export default function($elem) { if (!$elem) { @@ -58,7 +57,6 @@ export default function($elem) { '' + - renderIcon("string", "download") + I18n.t("lightbox.download") + "" ); diff --git a/app/assets/javascripts/discourse/lib/render-topic-featured-link.js.es6 b/app/assets/javascripts/discourse/lib/render-topic-featured-link.js.es6 index 7fa722a28d8..c1c7f5411fa 100644 --- a/app/assets/javascripts/discourse/lib/render-topic-featured-link.js.es6 +++ b/app/assets/javascripts/discourse/lib/render-topic-featured-link.js.es6 @@ -1,5 +1,4 @@ import { h } from "virtual-dom"; -import { renderIcon } from "discourse-common/lib/icon-library"; const _decorators = []; @@ -36,13 +35,12 @@ export default function renderTopicFeaturedLink(topic) { if (meta) { return `${renderIcon("string", "external-link-alt")} ${ - meta.domain - }`; + }" href="${meta.href}">${meta.domain}`; } else { return ""; } } + export function topicFeaturedLinkNode(topic) { const meta = extractLinkMeta(topic); if (meta) { @@ -51,7 +49,7 @@ export function topicFeaturedLinkNode(topic) { { attributes: { href: meta.href, rel: meta.rel, target: meta.target } }, - [renderIcon("node", "external-link-alt"), meta.domain] + meta.domain ); } } diff --git a/app/assets/javascripts/discourse/lib/svg-sprite-loader.js.es6 b/app/assets/javascripts/discourse/lib/svg-sprite-loader.js.es6 deleted file mode 100644 index b2794d6743a..00000000000 --- a/app/assets/javascripts/discourse/lib/svg-sprite-loader.js.es6 +++ /dev/null @@ -1,18 +0,0 @@ -import { ajax } from "discourse/lib/ajax"; - -export default { - name: "svg-sprite-loader", - load(spritePath, spriteName) { - const c = "svg-sprites"; - const $cEl = `#${c}`; - const $spriteEl = `${$cEl} .${spriteName}`; - - if ($($cEl).length === 0) $("body").append(`
`); - if ($($spriteEl).length === 0) - $($cEl).append(`
`); - - ajax(spritePath, { type: "GET", dataType: "text" }).then(data => { - $($spriteEl).html(data); - }); - } -}; diff --git a/app/assets/javascripts/discourse/models/composer.js.es6 b/app/assets/javascripts/discourse/models/composer.js.es6 index 56503d534fd..aae9a31055f 100644 --- a/app/assets/javascripts/discourse/models/composer.js.es6 +++ b/app/assets/javascripts/discourse/models/composer.js.es6 @@ -382,11 +382,8 @@ const Composer = RestModel.extend({ return this.get("titleLength") <= this.siteSettings.max_topic_title_length; }.property("minimumTitleLength", "titleLength", "post.static_doc"), - @computed("action", "whisper") - saveIcon(action, whisper) { - if (whisper) { - return "eye-slash"; - } + @computed("action") + saveIcon(action) { return SAVE_ICONS[action]; }, diff --git a/app/assets/javascripts/discourse/models/login-method.js.es6 b/app/assets/javascripts/discourse/models/login-method.js.es6 index 0365a276585..aba619ee94b 100644 --- a/app/assets/javascripts/discourse/models/login-method.js.es6 +++ b/app/assets/javascripts/discourse/models/login-method.js.es6 @@ -93,11 +93,6 @@ export function findAll(siteSettings, capabilities, isMobileDevice) { methods.forEach(m => m.set("full_screen_login", true)); } - // exclude FA icon for Google, uses custom SVG - methods.forEach(m => - m.set("hasRegularIcon", m.get("name") === "google_oauth2" ? false : true) - ); - return methods; } diff --git a/app/assets/javascripts/discourse/raw-views/topic-status.js.es6 b/app/assets/javascripts/discourse/raw-views/topic-status.js.es6 index 3c3b7f2b709..b93dca7b27d 100644 --- a/app/assets/javascripts/discourse/raw-views/topic-status.js.es6 +++ b/app/assets/javascripts/discourse/raw-views/topic-status.js.es6 @@ -45,11 +45,11 @@ export default Ember.Object.extend({ } if (topic.get("pinned")) { - results.push({ icon: "thumbtack", key: "pinned" }); + results.push({ icon: "thumb-tack", key: "pinned" }); } if (topic.get("unpinned")) { - results.push({ icon: "thumbtack", key: "unpinned" }); + results.push({ icon: "thumb-tack unpinned", key: "unpinned" }); } if (topic.get("invisible")) { @@ -74,6 +74,7 @@ export default Ember.Object.extend({ if (results.length === 0 && defaultIcon) { this.set("showDefault", defaultIcon); } + return results; } }); diff --git a/app/assets/javascripts/discourse/templates/components/categories-boxes-topic.hbs b/app/assets/javascripts/discourse/templates/components/categories-boxes-topic.hbs index 95ebe51a0d3..5251070169e 100644 --- a/app/assets/javascripts/discourse/templates/components/categories-boxes-topic.hbs +++ b/app/assets/javascripts/discourse/templates/components/categories-boxes-topic.hbs @@ -1,5 +1,3 @@ -{{d-icon topicStatusIcon}} - {{text-overflow class="overflow" text=topic.fancyTitle}} diff --git a/app/assets/javascripts/discourse/templates/components/color-picker.hbs b/app/assets/javascripts/discourse/templates/components/color-picker.hbs index 65f280ab758..5842bf91512 100644 --- a/app/assets/javascripts/discourse/templates/components/color-picker.hbs +++ b/app/assets/javascripts/discourse/templates/components/color-picker.hbs @@ -1,5 +1 @@ -{{#each colors as |c|}} - {{#color-picker-choice color=c usedColors=usedColors selectColor="selectColor"}} - {{d-icon 'check'}} - {{/color-picker-choice}} -{{/each}} +{{#each colors as |c|}}{{color-picker-choice color=c usedColors=usedColors selectColor="selectColor"}}{{/each}} diff --git a/app/assets/javascripts/discourse/templates/components/group-flair-inputs.hbs b/app/assets/javascripts/discourse/templates/components/group-flair-inputs.hbs index fdc25357187..ad0530ba8e7 100644 --- a/app/assets/javascripts/discourse/templates/components/group-flair-inputs.hbs +++ b/app/assets/javascripts/discourse/templates/components/group-flair-inputs.hbs @@ -39,7 +39,7 @@
{{else}}
- {{d-icon flairPreviewIconUrl}} +
{{/if}}
diff --git a/app/assets/javascripts/discourse/templates/components/login-buttons.hbs b/app/assets/javascripts/discourse/templates/components/login-buttons.hbs index cc950944ec3..5289a927df0 100644 --- a/app/assets/javascripts/discourse/templates/components/login-buttons.hbs +++ b/app/assets/javascripts/discourse/templates/components/login-buttons.hbs @@ -1,12 +1,5 @@ {{#each buttons as |b|}} - + {{/each}} {{#if showLoginWithEmailLink}} @@ -14,6 +7,6 @@ action="emailLogin" label="email_login.button_label" disabled=processingEmailLink - icon="far-envelope" + icon="envelope-o" class="login-with-email-button"}} {{/if}} diff --git a/app/assets/javascripts/discourse/templates/composer.hbs b/app/assets/javascripts/discourse/templates/composer.hbs index af718bedb6a..d60ed2e804d 100644 --- a/app/assets/javascripts/discourse/templates/composer.hbs +++ b/app/assets/javascripts/discourse/templates/composer.hbs @@ -19,11 +19,8 @@ {{composer-action-title model=model canWhisper=canWhisper tabindex=8}} {{#unless site.mobileView}} - {{#if model.whisper}} - {{d-icon 'eye-slash'}} - {{/if}} - {{#if model.unlistTopic}} - ({{i18n 'composer.unlist'}}) + {{#if whisperOrUnlistTopicText}} + ({{whisperOrUnlistTopicText}}) {{/if}} {{#if model.noBump}} {{d-icon "anchor"}} diff --git a/app/assets/javascripts/discourse/templates/topic-status.raw.hbs b/app/assets/javascripts/discourse/templates/topic-status.raw.hbs index 9dd8ee5a9bc..c8b1c3a6f38 100644 --- a/app/assets/javascripts/discourse/templates/topic-status.raw.hbs +++ b/app/assets/javascripts/discourse/templates/topic-status.raw.hbs @@ -5,7 +5,7 @@ {{~#if status.href ~}} {{d-icon status.icon}} {{~else ~}} -<{{status.openTag}} title='{{status.title}}' class='topic-status'>{{d-icon status.icon class=status.key}} +<{{status.openTag}} title='{{status.title}}' class='topic-status'>{{d-icon status.icon}} {{~/if ~}} {{~/each}} {{~#if view.showDefault~}}{{d-icon view.showDefault}}{{~/if ~}} diff --git a/app/assets/javascripts/discourse/widgets/avatar-flair.js.es6 b/app/assets/javascripts/discourse/widgets/avatar-flair.js.es6 index 559adb9c599..f2e26106765 100644 --- a/app/assets/javascripts/discourse/widgets/avatar-flair.js.es6 +++ b/app/assets/javascripts/discourse/widgets/avatar-flair.js.es6 @@ -1,5 +1,5 @@ import { createWidget } from "discourse/widgets/widget"; -import { iconNode, convertIconClass } from "discourse-common/lib/icon-library"; +import { h } from "virtual-dom"; createWidget("avatar-flair", { tagName: "div.avatar-flair", @@ -7,7 +7,7 @@ createWidget("avatar-flair", { isIcon(attrs) { return ( attrs.primary_group_flair_url && - attrs.primary_group_flair_url.includes("fa-") + attrs.primary_group_flair_url.substr(0, 3) === "fa-" ); }, @@ -52,8 +52,20 @@ createWidget("avatar-flair", { html(attrs) { if (this.isIcon(attrs)) { - const icon = convertIconClass(attrs.primary_group_flair_url); - return [iconNode(icon)]; + return [ + h("i", { + className: "fa " + attrs.primary_group_flair_url, + attributes: { + style: attrs.primary_group_flair_color + ? "color: #" + + Handlebars.Utils.escapeExpression( + attrs.primary_group_flair_color + ) + + "; " + : "" + } + }) + ]; } else { return []; } diff --git a/app/assets/javascripts/discourse/widgets/post-small-action.js.es6 b/app/assets/javascripts/discourse/widgets/post-small-action.js.es6 index aa40582ea70..8ec91f8e49b 100644 --- a/app/assets/javascripts/discourse/widgets/post-small-action.js.es6 +++ b/app/assets/javascripts/discourse/widgets/post-small-action.js.es6 @@ -37,12 +37,12 @@ const icons = { "autoclosed.disabled": "unlock-alt", "archived.enabled": "folder", "archived.disabled": "folder-open", - "pinned.enabled": "thumbtack", - "pinned.disabled": "thumbtack unpinned", - "pinned_globally.enabled": "thumbtack", - "pinned_globally.disabled": "thumbtack unpinned", - "banner.enabled": "thumbtack", - "banner.disabled": "thumbtack unpinned", + "pinned.enabled": "thumb-tack", + "pinned.disabled": "thumb-tack unpinned", + "pinned_globally.enabled": "thumb-tack", + "pinned_globally.disabled": "thumb-tack unpinned", + "banner.enabled": "thumb-tack", + "banner.disabled": "thumb-tack unpinned", "visible.enabled": "eye", "visible.disabled": "eye-slash", split_topic: "sign-out", @@ -53,7 +53,7 @@ const icons = { removed_group: "minus-circle", public_topic: "comment", private_topic: "envelope", - autobumped: "hand-point-right" + autobumped: "hand-o-right" }; export function addPostSmallActionIcon(key, icon) { diff --git a/app/assets/javascripts/discourse/widgets/time-gap.js.es6 b/app/assets/javascripts/discourse/widgets/time-gap.js.es6 index aaede013c3e..4fee6557dd6 100644 --- a/app/assets/javascripts/discourse/widgets/time-gap.js.es6 +++ b/app/assets/javascripts/discourse/widgets/time-gap.js.es6 @@ -1,5 +1,6 @@ import { createWidget } from "discourse/widgets/widget"; import { h } from "virtual-dom"; +import { iconNode } from "discourse-common/lib/icon-library"; function description(attrs) { const daysSince = attrs.daysSince; @@ -20,7 +21,7 @@ export default createWidget("time-gap", { html(attrs) { return [ - h("div.topic-avatar", ""), + h("div.topic-avatar", iconNode("fw")), h("div.small-action-desc.timegap", description(attrs)) ]; } diff --git a/app/assets/javascripts/discourse/widgets/topic-admin-menu.js.es6 b/app/assets/javascripts/discourse/widgets/topic-admin-menu.js.es6 index b029650af9f..783b4f09ef5 100644 --- a/app/assets/javascripts/discourse/widgets/topic-admin-menu.js.es6 +++ b/app/assets/javascripts/discourse/widgets/topic-admin-menu.js.es6 @@ -196,7 +196,7 @@ export default createWidget("topic-admin-menu", { className: "topic-admin-pin", buttonClass: "btn-default", action: "showFeatureTopic", - icon: "thumbtack", + icon: "thumb-tack", label: featured ? "actions.unpin" : "actions.pin" }); } diff --git a/app/assets/javascripts/discourse/widgets/topic-status.js.es6 b/app/assets/javascripts/discourse/widgets/topic-status.js.es6 index ff03d826573..e7c116a91fc 100644 --- a/app/assets/javascripts/discourse/widgets/topic-status.js.es6 +++ b/app/assets/javascripts/discourse/widgets/topic-status.js.es6 @@ -37,8 +37,8 @@ export default createWidget("topic-status", { renderIconIf("archived", "lock", "archived"); } - renderIconIf("pinned", "thumbtack", "pinned"); - renderIconIf("unpinned", "thumbtack", "unpinned"); + renderIconIf("pinned", "thumb-tack", "pinned"); + renderIconIf("unpinned", "thumb-tack", "unpinned"); renderIconIf("invisible", "eye-slash", "invisible"); return result; diff --git a/app/assets/javascripts/preload-application-data.js.no-module.es6 b/app/assets/javascripts/preload-application-data.js.no-module.es6 index d5cee7edfc6..7291d919502 100644 --- a/app/assets/javascripts/preload-application-data.js.no-module.es6 +++ b/app/assets/javascripts/preload-application-data.js.no-module.es6 @@ -34,11 +34,6 @@ } Discourse.HighlightJSPath = setupData.highlightJsPath; - Discourse.SvgSpritePath = setupData.svgSpritePath; - - if (Discourse.Environment === "development") { - Discourse.SvgIconList = setupData.svgIconList; - } if (setupData.s3BaseUrl) { Discourse.S3CDN = setupData.s3Cdn; diff --git a/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 b/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 index 6a12338eee9..07825a3bca0 100644 --- a/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 +++ b/app/assets/javascripts/select-kit/components/mini-tag-chooser.js.es6 @@ -3,7 +3,6 @@ import TagsMixin from "select-kit/mixins/tags"; import { default as computed } from "ember-addons/ember-computed-decorators"; import renderTag from "discourse/lib/render-tag"; import { escapeExpression } from "discourse/lib/utilities"; -import { iconHTML } from "discourse-common/lib/icon-library"; const { get, isEmpty, run, makeArray } = Ember; export default ComboBox.extend(TagsMixin, { @@ -68,7 +67,7 @@ export default ComboBox.extend(TagsMixin, { @computed("hasReachedMaximum") caretIcon(hasReachedMaximum) { - return hasReachedMaximum ? null : "plus"; + return hasReachedMaximum ? null : "plus fa-fw"; }, @computed("tags") @@ -126,7 +125,7 @@ export default ComboBox.extend(TagsMixin, { `; }); diff --git a/app/assets/javascripts/select-kit/components/pinned-options.js.es6 b/app/assets/javascripts/select-kit/components/pinned-options.js.es6 index d32ab062d39..01cdb52c228 100644 --- a/app/assets/javascripts/select-kit/components/pinned-options.js.es6 +++ b/app/assets/javascripts/select-kit/components/pinned-options.js.es6 @@ -20,7 +20,7 @@ export default DropdownSelectBoxComponent.extend({ content.label = `${title}${iconHTML("caret-down")}`.htmlSafe(); content.title = title; content.name = state; - content.icon = `thumbtack${state === "unpinned" ? " unpinned" : ""}`; + content.icon = `thumb-tack${state === "unpinned" ? " unpinned" : ""}`; return content; }, @@ -33,12 +33,12 @@ export default DropdownSelectBoxComponent.extend({ id: "pinned", name: I18n.t("topic_statuses.pinned" + globally + ".title"), description: I18n.t("topic_statuses.pinned" + globally + ".help"), - icon: "thumbtack" + icon: "thumb-tack" }, { id: "unpinned", name: I18n.t("topic_statuses.unpinned.title"), - icon: "thumbtack unpinned", + icon: "thumb-tack unpinned", description: I18n.t("topic_statuses.unpinned.help") } ]); diff --git a/app/assets/javascripts/select-kit/templates/components/category-drop/category-drop-header.hbs b/app/assets/javascripts/select-kit/templates/components/category-drop/category-drop-header.hbs index 7928a3b94b9..7e3ea1baf4f 100644 --- a/app/assets/javascripts/select-kit/templates/components/category-drop/category-drop-header.hbs +++ b/app/assets/javascripts/select-kit/templates/components/category-drop/category-drop-header.hbs @@ -2,4 +2,4 @@ {{{label}}} -{{d-icon caretIcon class="caret-icon"}} +{{d-icon caretIcon class="caret-icon fa-fw"}} diff --git a/app/assets/javascripts/select-kit/templates/components/combo-box/combo-box-header.hbs b/app/assets/javascripts/select-kit/templates/components/combo-box/combo-box-header.hbs index a090a66aaa3..c9fc965ee83 100644 --- a/app/assets/javascripts/select-kit/templates/components/combo-box/combo-box-header.hbs +++ b/app/assets/javascripts/select-kit/templates/components/combo-box/combo-box-header.hbs @@ -14,4 +14,4 @@ {{/if}} -{{d-icon caretIcon class="caret-icon"}} +{{d-icon caretIcon class="caret-icon fa-fw"}} diff --git a/app/assets/javascripts/select-kit/templates/components/future-date-input-selector/future-date-input-selector-header.hbs b/app/assets/javascripts/select-kit/templates/components/future-date-input-selector/future-date-input-selector-header.hbs index 8a630455bda..a5c5cbd6a36 100644 --- a/app/assets/javascripts/select-kit/templates/components/future-date-input-selector/future-date-input-selector-header.hbs +++ b/app/assets/javascripts/select-kit/templates/components/future-date-input-selector/future-date-input-selector-header.hbs @@ -24,4 +24,4 @@ {{/if}} -{{d-icon caretIcon class="caret-icon"}} +{{d-icon caretIcon class="caret-icon fa-fw"}} diff --git a/app/assets/javascripts/select-kit/templates/components/multi-select/selected-category.hbs b/app/assets/javascripts/select-kit/templates/components/multi-select/selected-category.hbs index 1eb83f00509..09b5adfa859 100644 --- a/app/assets/javascripts/select-kit/templates/components/multi-select/selected-category.hbs +++ b/app/assets/javascripts/select-kit/templates/components/multi-select/selected-category.hbs @@ -1,4 +1,3 @@
{{badge}} - {{d-icon 'times'}}
diff --git a/app/assets/javascripts/select-kit/templates/components/multi-select/selected-name.hbs b/app/assets/javascripts/select-kit/templates/components/multi-select/selected-name.hbs index b39d272a045..141ae2748f6 100644 --- a/app/assets/javascripts/select-kit/templates/components/multi-select/selected-name.hbs +++ b/app/assets/javascripts/select-kit/templates/components/multi-select/selected-name.hbs @@ -8,7 +8,6 @@ {{{label}}} {{/if}} - {{d-icon 'times'}}
{{#if footerContent}}{{/if}} diff --git a/app/assets/javascripts/select-kit/templates/components/tag-drop/tag-drop-header.hbs b/app/assets/javascripts/select-kit/templates/components/tag-drop/tag-drop-header.hbs index 41e15b8653e..440988e3efe 100644 --- a/app/assets/javascripts/select-kit/templates/components/tag-drop/tag-drop-header.hbs +++ b/app/assets/javascripts/select-kit/templates/components/tag-drop/tag-drop-header.hbs @@ -6,4 +6,4 @@ {{/if}} -{{d-icon caretIcon class="caret-icon"}} +{{d-icon caretIcon class="caret-icon fa-fw"}} diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index 4d4fa835821..d1c9e353363 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -1,4 +1,5 @@ @import "vendor/normalize"; +@import "vendor/font_awesome/font-awesome"; @import "vendor/pikaday"; @import "common/foundation/helpers"; @import "common/foundation/base"; diff --git a/app/assets/stylesheets/common/admin/admin_report.scss b/app/assets/stylesheets/common/admin/admin_report.scss index 031363bad0f..603c421eb44 100644 --- a/app/assets/stylesheets/common/admin/admin_report.scss +++ b/app/assets/stylesheets/common/admin/admin_report.scss @@ -61,7 +61,7 @@ &.no-change { color: $primary-medium; - .d-icon { + i { display: none; } } @@ -96,9 +96,9 @@ .d-icon { color: currentColor; + margin-bottom: 0.25em; font-size: $font-up-5; display: block; - margin: 0.25em auto; } &.no-data, diff --git a/app/assets/stylesheets/common/admin/admin_report_counters.scss b/app/assets/stylesheets/common/admin/admin_report_counters.scss index a2e1c7c9bc5..c9a8ef9df48 100644 --- a/app/assets/stylesheets/common/admin/admin_report_counters.scss +++ b/app/assets/stylesheets/common/admin/admin_report_counters.scss @@ -47,7 +47,7 @@ text-align: center; } - .d-icon { + i { margin: 0; } } @@ -65,13 +65,13 @@ &.high-trending-up, &.trending-up { - .d-icon { + i { color: $success; } } &.high-trending-down, &.trending-down { - .d-icon { + i { color: $danger; } } diff --git a/app/assets/stylesheets/common/admin/dashboard_previous.scss b/app/assets/stylesheets/common/admin/dashboard_previous.scss index a040f1c5954..b610e064a64 100644 --- a/app/assets/stylesheets/common/admin/dashboard_previous.scss +++ b/app/assets/stylesheets/common/admin/dashboard_previous.scss @@ -154,37 +154,37 @@ td.value { font-weight: bold; text-align: center; - .d-icon { + i { display: none; } &.high-trending-up, &.trending-up { - .up { + i.up { color: $success; display: inline; } } &.high-trending-down, &.trending-down { - .down { + i.down { color: $danger; display: inline; } } &.no-change { - .down { + i.down { display: inline; visibility: hidden; } } } tr.reverse-colors { - td.value.high-trending-down .down, - td.value.trending-down .down { + td.value.high-trending-down i.down, + td.value.trending-down i.down { color: $success; } - td.value.high-trending-up .up, - td.value.trending-up .up { + td.value.high-trending-up i.up, + td.value.trending-up i.up { color: $danger; } } diff --git a/app/assets/stylesheets/common/admin/staff_logs.scss b/app/assets/stylesheets/common/admin/staff_logs.scss index cfe23babf20..d20eef94dbb 100644 --- a/app/assets/stylesheets/common/admin/staff_logs.scss +++ b/app/assets/stylesheets/common/admin/staff_logs.scss @@ -201,7 +201,7 @@ .label { font-weight: bold; } - .d-icon { + i { margin-left: 6px; } } diff --git a/app/assets/stylesheets/common/base/_topic-list.scss b/app/assets/stylesheets/common/base/_topic-list.scss index e29caaaae42..97411db14a5 100644 --- a/app/assets/stylesheets/common/base/_topic-list.scss +++ b/app/assets/stylesheets/common/base/_topic-list.scss @@ -251,8 +251,8 @@ ol.category-breadcrumb { } } -.d-icon-thumbtack.unpinned { - @include fa-rotate(180deg, 1); +.d-icon-thumb-tack.unpinned { + @include fa-icon-rotate(180deg, 1); color: $primary; /* because it is rotated, right becomes left! */ padding-left: 3px; diff --git a/app/assets/stylesheets/common/base/category-list.scss b/app/assets/stylesheets/common/base/category-list.scss index 0e130634b00..8a6a3954526 100644 --- a/app/assets/stylesheets/common/base/category-list.scss +++ b/app/assets/stylesheets/common/base/category-list.scss @@ -175,18 +175,26 @@ margin: 0; } li { - padding: 4px 0; - display: flex; + padding: 0; + margin-left: 1.5em; .overflow { max-height: 3em; overflow: hidden; text-overflow: ellipsis; } - - .d-icon { - margin-right: 6px; - margin-top: 2px; - } + } + li:before { + content: "\f0f6"; + font-family: "FontAwesome"; + float: left; + margin-left: -1.5em; + } + li.topic-pinned:before { + content: "\f08d"; + } + li.topic-closed:before, + li.topic-archived:before { + content: "\f023"; } } } diff --git a/app/assets/stylesheets/common/base/colorpicker.scss b/app/assets/stylesheets/common/base/colorpicker.scss index 271d48ccb76..788111d5743 100644 --- a/app/assets/stylesheets/common/base/colorpicker.scss +++ b/app/assets/stylesheets/common/base/colorpicker.scss @@ -33,14 +33,18 @@ height: 1.2em; padding: 0; flex: 0 0 auto; - color: white; - svg { - display: none; - } - &.used-color svg { - display: inline-flex; - opacity: 0.8; - max-width: 70%; + &.used-color:before { + position: absolute; + top: 0; + left: 0; + display: flex; + align-items: center; + justify-content: center; + font-family: fontawesome; + content: "\f00c"; + height: 100%; + width: calc(1.25em - 2px); + color: rgba($secondary, 0.75); } } } diff --git a/app/assets/stylesheets/common/base/compose.scss b/app/assets/stylesheets/common/base/compose.scss index f1c7f8b9445..020db3d5fd3 100644 --- a/app/assets/stylesheets/common/base/compose.scss +++ b/app/assets/stylesheets/common/base/compose.scss @@ -36,7 +36,7 @@ border-color: $secondary; border-right-color: transparent; } - .d-icon { + i { color: $secondary; } } @@ -94,17 +94,13 @@ margin: 5px 0 10px 0; display: flex; align-items: center; - .d-icon { + i { color: $primary-high; } .reply-details { max-width: calc(100% - 60px); flex: 1 1 auto; white-space: nowrap; - - .d-icon { - opacity: 0.8; - } } .composer-action-title { display: inline-flex; diff --git a/app/assets/stylesheets/common/base/emoji.scss b/app/assets/stylesheets/common/base/emoji.scss index 8d8cd19f7f4..7a3b46a5de4 100644 --- a/app/assets/stylesheets/common/base/emoji.scss +++ b/app/assets/stylesheets/common/base/emoji.scss @@ -143,18 +143,18 @@ img.emoji { background: #7c533e; } -.emoji-picker .diversity-picker .diversity-scale.selected .d-icon { +.emoji-picker .diversity-picker .diversity-scale.selected i { display: block; } -.emoji-picker .diversity-picker .d-icon { +.emoji-picker .diversity-picker i { display: none; } .emoji-picker .diversity-picker .d-icon { color: #fff; font-size: $font-0; - filter: drop-shadow(0.5px 1.5px 0 rgba(0, 0, 0, 0.3)); + text-shadow: 0.5px 1.5px 0 rgba(0, 0, 0, 0.3); } .emoji-picker button.emoji { @@ -182,6 +182,10 @@ img.emoji { background-color: lighten($tertiary, 40%); } +.wmd-emoji-button:before { + content: "\f118"; +} + .emoji-picker-modal.fadeIn { z-index: z("modal", "overlay"); position: fixed; diff --git a/app/assets/stylesheets/common/base/group.scss b/app/assets/stylesheets/common/base/group.scss index 20b6cf58520..653989b1ae6 100644 --- a/app/assets/stylesheets/common/base/group.scss +++ b/app/assets/stylesheets/common/base/group.scss @@ -57,7 +57,7 @@ background-size: $size; height: $size; - .d-icon { + i { font-size: $size !important; } } @@ -86,7 +86,7 @@ table.group-manage-logs { .group-manage-logs-expand-details { cursor: pointer; - .d-icon { + i { color: blend-primary-secondary(50%); } } @@ -117,7 +117,7 @@ table.group-members { } th.sortable { - .d-icon { + i { margin-left: 5px; } diff --git a/app/assets/stylesheets/common/base/groups.scss b/app/assets/stylesheets/common/base/groups.scss index ee58f29424e..8b050b1488a 100644 --- a/app/assets/stylesheets/common/base/groups.scss +++ b/app/assets/stylesheets/common/base/groups.scss @@ -49,7 +49,7 @@ } td.group-user-status { - .d-icon { + i { color: $primary; } } @@ -103,7 +103,7 @@ background-size: $size; height: $size; - .d-icon { + i { font-size: $size !important; } } diff --git a/app/assets/stylesheets/common/base/lightbox.scss b/app/assets/stylesheets/common/base/lightbox.scss index 4f96f0592d7..06c32b1636c 100644 --- a/app/assets/stylesheets/common/base/lightbox.scss +++ b/app/assets/stylesheets/common/base/lightbox.scss @@ -36,14 +36,9 @@ white-space: nowrap; text-overflow: ellipsis; &:before { - // ideally, the SVG used here should be in HTML and reference the SVG sprite - content: svg-uri( - '' - ); + font-family: "FontAwesome"; + content: "\F03E"; margin-right: 5px; - display: inline-block; - vertical-align: middle; - opacity: 0.8; } } @@ -56,14 +51,11 @@ .expand { position: absolute; - bottom: 2px; + bottom: 4px; right: 7px; &:before { - // ideally, the SVG used here should be in HTML and reference the SVG sprite - content: svg-uri( - ' ' - ); - opacity: 0.8; + font-family: "FontAwesome"; + content: "\F065"; } } } diff --git a/app/assets/stylesheets/common/base/magnific-popup.scss b/app/assets/stylesheets/common/base/magnific-popup.scss index 76ef9a84466..17395ed1003 100644 --- a/app/assets/stylesheets/common/base/magnific-popup.scss +++ b/app/assets/stylesheets/common/base/magnific-popup.scss @@ -499,7 +499,9 @@ button { padding-right: 36px; // leave some space for counter at right side // add the download icon - a.image-source-link .d-icon { + a.image-source-link:before { + content: "\f019"; + font-family: FontAwesome; padding-right: 5px; } } diff --git a/app/assets/stylesheets/common/base/menu-panel.scss b/app/assets/stylesheets/common/base/menu-panel.scss index 5ac03f7445a..43c719778ad 100644 --- a/app/assets/stylesheets/common/base/menu-panel.scss +++ b/app/assets/stylesheets/common/base/menu-panel.scss @@ -153,7 +153,7 @@ // This is until other languages remove the HTML from within // notifications. It can then be removed - div .fa { + div i.fa { display: none; } @@ -181,14 +181,17 @@ } li:not(.show-all) { padding: 0.25em 0.5em; - .d-icon { + i { float: left; margin-right: 5px; padding-top: 2px; } } .is-warning { - .d-icon-far-envelope { + .d-icon-envelope-o { + &:before { + content: "\f0e0"; + } color: $danger; } } diff --git a/app/assets/stylesheets/common/base/onebox.scss b/app/assets/stylesheets/common/base/onebox.scss index 09f20ee5c81..548b23cc84a 100644 --- a/app/assets/stylesheets/common/base/onebox.scss +++ b/app/assets/stylesheets/common/base/onebox.scss @@ -251,15 +251,14 @@ aside.onebox { .instagram-video-icon { &:before { - opacity: 0.8; - // ideally, the SVG used here should be in HTML and reference the SVG sprite - content: svg-uri( - '' - ); + font-family: FontAwesome; + font-size: $font-up-5; + content: "\f144"; } bottom: 10px; right: 10px; position: absolute; + color: white; } .instagram-image { diff --git a/app/assets/stylesheets/common/base/tagging.scss b/app/assets/stylesheets/common/base/tagging.scss index 839dc3c3572..5c82fdbd59f 100644 --- a/app/assets/stylesheets/common/base/tagging.scss +++ b/app/assets/stylesheets/common/base/tagging.scss @@ -127,7 +127,7 @@ $tag-color: $primary-medium; display: inline-block; font-size: $font-down-1; } - .discourse-tags + .topic-featured-link { + .topic-featured-link { margin-left: 8px; } } @@ -169,14 +169,12 @@ $tag-color: $primary-medium; .discourse-tag.bullet { margin-right: 0.25em; &:before { - background: $primary-low-mid; + content: "\f04d"; + font-family: FontAwesome; + color: $primary-low-mid; margin-right: 5px; + font-size: $font-down-2; position: relative; - width: 8px; - height: 8px; - display: inline-block; - vertical-align: middle; - content: ""; } } diff --git a/app/assets/stylesheets/common/base/topic-admin-menu.scss b/app/assets/stylesheets/common/base/topic-admin-menu.scss index 57b81ce1eb9..c8cf624aff2 100644 --- a/app/assets/stylesheets/common/base/topic-admin-menu.scss +++ b/app/assets/stylesheets/common/base/topic-admin-menu.scss @@ -28,6 +28,9 @@ button { width: 100%; margin-bottom: 5px; + i { + width: 14px; + } } } diff --git a/app/assets/stylesheets/common/base/topic-post.scss b/app/assets/stylesheets/common/base/topic-post.scss index a7385927c8e..2fb3e97c130 100644 --- a/app/assets/stylesheets/common/base/topic-post.scss +++ b/app/assets/stylesheets/common/base/topic-post.scss @@ -28,19 +28,14 @@ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - vertical-align: middle; a { - vertical-align: middle; color: dark-light-choose($primary-high, $secondary-low); } } .fa { font-size: $font-down-1; - color: dark-light-choose($primary-medium, $secondary-medium); - } - .svg-icon-title { margin-left: 3px; - margin-right: 0px; + color: dark-light-choose($primary-medium, $secondary-medium); } .new_user a, .user-title, @@ -635,7 +630,7 @@ blockquote > *:last-child { padding: 0.7em 0; border-top: none; margin-right: 11px; - .d-icon { + i { font-size: 2em; width: 45px; text-align: center; @@ -747,7 +742,7 @@ a.mention-group { overflow: hidden; } - > .fa { + > i.fa { color: dark-light-choose($primary-medium, $secondary-medium); margin-right: 6px; font-size: $font-0; @@ -840,6 +835,11 @@ a.mention-group { display: none; } } + .names { + span { + display: block; + } + } .user-title { float: left; clear: left; diff --git a/app/assets/stylesheets/common/base/topic.scss b/app/assets/stylesheets/common/base/topic.scss index 8b96b80a96b..9d3a10b8bd9 100644 --- a/app/assets/stylesheets/common/base/topic.scss +++ b/app/assets/stylesheets/common/base/topic.scss @@ -97,7 +97,7 @@ a.badge-category { a.badge-category { margin-top: 5px; } - a.edit-topic .d-icon { + a.edit-topic i { font-size: 0.8em; } .edit-topic-title { @@ -232,21 +232,21 @@ a.badge-category { margin-left: 0.5em; flex: 0 0 auto; } - .d-icon { + i { font-size: $font-down-2; margin: 0 0.5em 0 0; } } } a.reply-new { - .d-icon { + i { background: $secondary; border-radius: 20px; transition: all linear 0.15s; } &:hover { color: $tertiary; - .d-icon { + i { background: $tertiary-low; } } @@ -258,7 +258,11 @@ a.topic-featured-link { text-transform: lowercase; color: dark-light-choose($primary-medium, $secondary-medium); font-size: 0.875rem; - .d-icon { - margin-right: 3px; + &::before { + position: relative; + top: 0.1em; + padding-right: 3px; + font-family: FontAwesome; + content: "\f08e"; } } diff --git a/app/assets/stylesheets/common/base/user.scss b/app/assets/stylesheets/common/base/user.scss index c02c904f667..787e0246395 100644 --- a/app/assets/stylesheets/common/base/user.scss +++ b/app/assets/stylesheets/common/base/user.scss @@ -89,7 +89,7 @@ h1 { font-size: $font-up-5; font-weight: normal; - .d-icon { + i { font-size: 0.8em; } } diff --git a/app/assets/stylesheets/common/components/buttons.scss b/app/assets/stylesheets/common/components/buttons.scss index 7a56588cf8c..aa439bccbe6 100644 --- a/app/assets/stylesheets/common/components/buttons.scss +++ b/app/assets/stylesheets/common/components/buttons.scss @@ -158,6 +158,7 @@ } &:before { margin-right: 9px; + font-family: FontAwesome; font-size: $font-0; } &.google, @@ -165,28 +166,62 @@ background: $google; color: #333; border: 1px solid $primary-low; - // non-FA SVG icon for Google in login-buttons.hbs - .d-icon { - opacity: 0.9; + display: flex; + align-items: center; + justify-content: center; + &:before { + content: ""; + display: inline-block; + width: 15px; + height: 15px; + // Background image url needs to be encoded for IE11 + background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20viewBox%3D%220%200%2048%2048%22%3E%3Cdefs%3E%3Cpath%20id%3D%22a%22%20d%3D%22M44.5%2020H24v8.5h11.8C34.7%2033.9%2030.1%2037%2024%2037c-7.2%200-13-5.8-13-13s5.8-13%2013-13c3.1%200%205.9%201.1%208.1%202.9l6.4-6.4C34.6%204.1%2029.6%202%2024%202%2011.8%202%202%2011.8%202%2024s9.8%2022%2022%2022c11%200%2021-8%2021-22%200-1.3-.2-2.7-.5-4z%22%2F%3E%3C%2Fdefs%3E%3CclipPath%20id%3D%22b%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22%20overflow%3D%22visible%22%2F%3E%3C%2FclipPath%3E%3Cpath%20clip-path%3D%22url(%23b)%22%20fill%3D%22%23FBBC05%22%20d%3D%22M0%2037V11l17%2013z%22%2F%3E%3Cpath%20clip-path%3D%22url(%23b)%22%20fill%3D%22%23EA4335%22%20d%3D%22M0%2011l17%2013%207-6.1L48%2014V0H0z%22%2F%3E%3Cpath%20clip-path%3D%22url(%23b)%22%20fill%3D%22%2334A853%22%20d%3D%22M0%2037l30-23%207.9%201L48%200v48H0z%22%2F%3E%3Cpath%20clip-path%3D%22url(%23b)%22%20fill%3D%22%234285F4%22%20d%3D%22M48%2048L17%2024l-4-3%2035-10z%22%2F%3E%3C%2Fsvg%3E"); + background-repeat: no-repeat; + background-size: cover; + } + } + .mobile-view & { + // Special case because we're using SVG here + &.google, + &.google_oauth2 { + &:before { + width: 17px; + height: 17px; + } } } &.instagram { background: $instagram; + &:before { + content: $fa-var-instagram; + } } &.facebook { background: $facebook; + &:before { + content: $fa-var-facebook; + } } &.cas { background: $cas; } &.twitter { background: $twitter; + &:before { + content: $fa-var-twitter; + } } &.yahoo { background: $yahoo; + &:before { + content: $fa-var-yahoo; + } } &.github { background: $github; + &:before { + content: $fa-var-github; + } } } diff --git a/app/assets/stylesheets/common/components/svg.scss b/app/assets/stylesheets/common/components/svg.scss deleted file mode 100644 index 590d4e35ca2..00000000000 --- a/app/assets/stylesheets/common/components/svg.scss +++ /dev/null @@ -1,17 +0,0 @@ -.svg-icon, -.svg-icon-title { - height: 1em; - width: 1em; - line-height: 1; - display: inline-flex; - position: relative; - vertical-align: -0.125em; - fill: currentColor; - flex-shrink: 0; // Prevent the icon from shrinking if it's in a flexbox - overflow: visible; - - &.d-icon-lock { - height: 0.9em; - width: 0.9em; - } -} diff --git a/app/assets/stylesheets/common/components/user-stream-item.scss b/app/assets/stylesheets/common/components/user-stream-item.scss index 39d7884d588..54c2f126a89 100644 --- a/app/assets/stylesheets/common/components/user-stream-item.scss +++ b/app/assets/stylesheets/common/components/user-stream-item.scss @@ -48,7 +48,7 @@ clear: right; } - .delete-info .d-icon { + .delete-info i { font-size: $font-0; } diff --git a/app/assets/stylesheets/common/foundation/mixins.scss b/app/assets/stylesheets/common/foundation/mixins.scss index a4fa84fcd68..44654bde653 100644 --- a/app/assets/stylesheets/common/foundation/mixins.scss +++ b/app/assets/stylesheets/common/foundation/mixins.scss @@ -86,60 +86,3 @@ $breakpoints: ( -moz-appearance: none; appearance: none; } - -@mixin fa-rotate($degrees, $rotation) { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; - -webkit-transform: rotate($degrees); - -ms-transform: rotate($degrees); - transform: rotate($degrees); -} - -/// Helper function to easily use an SVG inline in CSS -/// without encoding it to base64, saving bytes. -/// It also helps with browser support, especially for IE11. -/// -/// @author Jakob Eriksen -/// @link http://codepen.io/jakob-e/pen/doMoML -/// @param {String} $svg - SVG image to encode -/// @return {String} - Encoded SVG data uri -@function svg-uri($svg) { - $encoded: ""; - $slice: 2000; - $index: 0; - $loops: ceil(str-length($svg) / $slice); - - @for $i from 1 through $loops { - $chunk: str-slice($svg, $index, $index + $slice - 1); - $chunk: str-replace($chunk, '"', "'"); - $chunk: str-replace($chunk, "<", "%3C"); - $chunk: str-replace($chunk, ">", "%3E"); - $chunk: str-replace($chunk, "&", "%26"); - $chunk: str-replace($chunk, "#", "%23"); - $encoded: #{$encoded}#{$chunk}; - $index: $index + $slice; - } - - @return url("data:image/svg+xml;charset=utf8,#{$encoded}"); -} - -/// Replace `$search` with `$replace` in `$string` -/// @author Hugo Giraudel -/// @link http://sassmeister.com/gist/1b4f2da5527830088e4d -/// @param {String} $string - Initial string -/// @param {String} $search - Substring to replace -/// @param {String} $replace ('') - New value -/// @return {String} - Updated string -@function str-replace($string, $search, $replace: "") { - $index: str-index($string, $search); - - @if $index { - @return str-slice($string, 1, $index - 1) + $replace + - str-replace( - str-slice($string, $index + str-length($search)), - $search, - $replace - ); - } - - @return $string; -} diff --git a/app/assets/stylesheets/common/printer-friendly.scss b/app/assets/stylesheets/common/printer-friendly.scss index b60f1dc7d93..7a656553088 100644 --- a/app/assets/stylesheets/common/printer-friendly.scss +++ b/app/assets/stylesheets/common/printer-friendly.scss @@ -71,6 +71,9 @@ .gap { width: auto; } + .gutter { + padding: 0; + } /* restyle div#topic-title */ #topic-title { margin: 0; diff --git a/app/assets/stylesheets/common/select-kit/mini-tag-chooser.scss b/app/assets/stylesheets/common/select-kit/mini-tag-chooser.scss index 39db4c20eb0..339ec4bb152 100644 --- a/app/assets/stylesheets/common/select-kit/mini-tag-chooser.scss +++ b/app/assets/stylesheets/common/select-kit/mini-tag-chooser.scss @@ -79,13 +79,16 @@ box-shadow: 0 0 2px $danger, 0 1px 0 rgba(0, 0, 0, 0.05); } - .d-icon { + &:after { + content: "\f00d"; color: $primary-low-mid; - vertical-align: middle; + font-family: "FontAwesome"; } - &:hover .d-icon { - color: $danger; + &:hover { + &:after { + color: $danger; + } } } } diff --git a/app/assets/stylesheets/common/select-kit/multi-select.scss b/app/assets/stylesheets/common/select-kit/multi-select.scss index 58cfdef4bcd..10f0aeb5807 100644 --- a/app/assets/stylesheets/common/select-kit/multi-select.scss +++ b/app/assets/stylesheets/common/select-kit/multi-select.scss @@ -125,20 +125,25 @@ } .selected-category { - .body { - display: flex; - align-items: center; - } .badge-wrapper { &.bullet { margin-right: 2.5px; } + margin: auto 2.5px; padding: 2px 4px; line-height: $line-height-medium; display: flex; flex: 1; align-items: center; + + &:after { + content: "\f00d"; + color: $primary-low-mid; + font-family: "FontAwesome"; + font-size: $font-down-2; + margin-left: 5px; + } } } @@ -154,12 +159,19 @@ padding: 4px; } - .d-icon { - color: $primary-low-mid; - vertical-align: middle; - } - &:hover .d-icon { - color: $danger; + .name { + &:after { + content: "\f00d"; + color: $primary-low-mid; + font-family: "FontAwesome"; + font-size: $font-down-2; + } + + &:hover { + &:after { + color: $danger; + } + } } &.is-highlighted { diff --git a/app/assets/stylesheets/common/topic-entrance.scss b/app/assets/stylesheets/common/topic-entrance.scss index 63765d15948..4310fd2f040 100644 --- a/app/assets/stylesheets/common/topic-entrance.scss +++ b/app/assets/stylesheets/common/topic-entrance.scss @@ -13,9 +13,10 @@ width: 100%; margin-bottom: 5px; - .d-icon { + i { display: block; - margin: 2px auto; + margin-top: 2px; + margin-bottom: 2px; transform: rotate(90deg); } } diff --git a/app/assets/stylesheets/common/topic-timeline.scss b/app/assets/stylesheets/common/topic-timeline.scss index d9b8628b5ee..253b89e2b98 100644 --- a/app/assets/stylesheets/common/topic-timeline.scss +++ b/app/assets/stylesheets/common/topic-timeline.scss @@ -119,7 +119,7 @@ .timeline-last-read { right: 0; margin-left: 0; - .progress { + i.progress { display: none; } } @@ -194,7 +194,6 @@ .timeline-footer-controls { margin-top: 1.5em; transition: opacity 0.2s ease-in; - display: flex; button { margin-right: 0.5em; @@ -263,7 +262,8 @@ .timeline-last-read { position: absolute; margin-left: -0.35em; - .progress { + + i.progress { font-size: 0.8em; color: $tertiary; margin-right: 1em; @@ -281,6 +281,9 @@ display: inline-block; color: dark-light-choose($primary-medium, $secondary-medium); margin-top: 0.5em; + i { + margin-left: 0.15em; + } } } } diff --git a/app/assets/stylesheets/desktop/discourse.scss b/app/assets/stylesheets/desktop/discourse.scss index aefaee51ff7..df19506ad8e 100644 --- a/app/assets/stylesheets/desktop/discourse.scss +++ b/app/assets/stylesheets/desktop/discourse.scss @@ -26,7 +26,7 @@ header { margin: 0; line-height: $line-height-small; - .d-icon { + i { font-size: $font-down-1; } } diff --git a/app/assets/stylesheets/desktop/topic-list.scss b/app/assets/stylesheets/desktop/topic-list.scss index 5f0f2c0a10d..4be9edfc3f7 100644 --- a/app/assets/stylesheets/desktop/topic-list.scss +++ b/app/assets/stylesheets/desktop/topic-list.scss @@ -33,10 +33,10 @@ // -------------------------------------------------- .topic-list-icons { - .d-icon-thumbtack { + .d-icon-thumb-tack { color: dark-light-choose($primary-medium, $secondary-medium); } - .d-icon-thumbtack.unpinned { + .d-icon-thumb-tack.unpinned { color: dark-light-choose($primary-medium, $secondary-medium); } a.title { @@ -242,7 +242,7 @@ button.dismiss-read { span { display: none; } - .d-icon { + i { margin-right: 0; } } diff --git a/app/assets/stylesheets/desktop/topic-post.scss b/app/assets/stylesheets/desktop/topic-post.scss index 4cfb9a6b6ea..c2b7cae95b0 100644 --- a/app/assets/stylesheets/desktop/topic-post.scss +++ b/app/assets/stylesheets/desktop/topic-post.scss @@ -6,7 +6,7 @@ margin-left: 0; } -h1 .topic-statuses .topic-status .d-icon { +h1 .topic-statuses .topic-status i { font-size: 0.857em; vertical-align: middle; } @@ -88,7 +88,7 @@ nav.post-controls { .like-count { font-size: $font-up-1; margin-left: 0; - .d-icon { + i.d-icon { padding-left: 10px; color: dark-light-choose($primary-low-mid, $secondary-high); } @@ -145,7 +145,7 @@ nav.post-controls { color: $primary; } } - .d-icon { + i { margin-left: 5px; font-size: $font-down-1; } @@ -155,7 +155,7 @@ nav.post-controls { color: dark-light-choose($primary-high, $secondary-low); margin-left: 10px; } - .create .d-icon { + .create i { margin-right: 5px; } button { @@ -369,7 +369,7 @@ nav.post-controls { line-height: $line-height-large; } .number, - .d-icon { + i { color: dark-light-choose($primary-high, $secondary-low); font-size: $font-up-2; line-height: $line-height-medium; @@ -461,7 +461,7 @@ nav.post-controls { #suggested-topics .topic-statuses .topic-status { padding: 0; - .d-icon { + i { font-size: 1em; } } @@ -515,7 +515,7 @@ video { animation: fadein 0.7s; } .topic-statuses { - .d-icon { + i { color: $header_primary; } .d-icon-envelope { @@ -806,7 +806,7 @@ $topic-avatar-width: 45px; font-size: $font-up-4; color: $primary; margin-bottom: 5px; - .d-icon { + i { margin-right: 7px; } } @@ -815,11 +815,24 @@ $topic-avatar-width: 45px; a.attachment:before { display: inline-block; margin-right: 4px; - // ideally, the SVG used here should be in HTML and reference the SVG sprite - content: svg-uri( - '' - ); - vertical-align: middle; + font-family: "FontAwesome"; + content: "\f019"; +} + +.private_message .gutter, +.deleted-topic .gutter, +.read_restricted .gutter { + position: relative; +} + +.deleted-topic .gutter:before { + display: block; + position: absolute; + left: 767px; + color: rgba($primary-low, 0.8); + font: 6.429em/1 FontAwesome; + content: "\f014"; + z-index: z("base"); } .topic-meta-data { @@ -886,6 +899,9 @@ span.highlighted { /* Tablet (portrait) ----------- */ @media all and (max-width: 775px) { + .gutter { + display: none; + } .topic-avatar { width: 45px; } diff --git a/app/assets/stylesheets/desktop/topic.scss b/app/assets/stylesheets/desktop/topic.scss index d7a7ce8981e..cfcdbc1714d 100644 --- a/app/assets/stylesheets/desktop/topic.scss +++ b/app/assets/stylesheets/desktop/topic.scss @@ -102,7 +102,7 @@ button.full { width: 100%; margin-bottom: 5px; - .d-icon { + i { display: block; margin-top: 2px; margin-bottom: 2px; diff --git a/app/assets/stylesheets/desktop/user-card.scss b/app/assets/stylesheets/desktop/user-card.scss index 54893e04e10..4000b275c43 100644 --- a/app/assets/stylesheets/desktop/user-card.scss +++ b/app/assets/stylesheets/desktop/user-card.scss @@ -81,7 +81,7 @@ $user_card_background: $secondary; a { color: $user_card_primary; } - .d-icon { + i { font-size: $font-down-1; color: $user_card_primary; } @@ -185,7 +185,7 @@ $user_card_background: $secondary; max-width: 90%; overflow: hidden; align-items: baseline; - .d-icon { + i { margin-right: 0.25em; } } @@ -224,7 +224,7 @@ $user_card_background: $secondary; background-position: center; background-size: $size; color: $primary; - .d-icon { + i { margin: auto; font-size: $size / 1.5 !important; } diff --git a/app/assets/stylesheets/mobile/compose.scss b/app/assets/stylesheets/mobile/compose.scss index 14c5e8ede2e..450d568e403 100644 --- a/app/assets/stylesheets/mobile/compose.scss +++ b/app/assets/stylesheets/mobile/compose.scss @@ -172,8 +172,4 @@ .add-warning { margin: 0 0 5px 5px; } - - .whisper { - margin-right: 5px; - } } diff --git a/app/assets/stylesheets/mobile/discourse.scss b/app/assets/stylesheets/mobile/discourse.scss index cbfb4f62777..e211ebc25b7 100644 --- a/app/assets/stylesheets/mobile/discourse.scss +++ b/app/assets/stylesheets/mobile/discourse.scss @@ -48,7 +48,7 @@ blockquote { display: inline-block; .topic-status { - .d-icon { + i { color: $secondary-high; } } diff --git a/app/assets/stylesheets/mobile/header.scss b/app/assets/stylesheets/mobile/header.scss index 5147d2c6570..e4d2abb9040 100644 --- a/app/assets/stylesheets/mobile/header.scss +++ b/app/assets/stylesheets/mobile/header.scss @@ -54,6 +54,6 @@ display: none; } -.search-link .topic-statuses .topic-status .d-icon { +.search-link .topic-statuses .topic-status i { font-size: $font-0; } diff --git a/app/assets/stylesheets/mobile/topic-list.scss b/app/assets/stylesheets/mobile/topic-list.scss index 319c94324b0..ba1c8962169 100644 --- a/app/assets/stylesheets/mobile/topic-list.scss +++ b/app/assets/stylesheets/mobile/topic-list.scss @@ -67,7 +67,7 @@ flex-wrap: wrap; width: 100%; .edit-category { - .d-icon { + i { margin: 0; } @media screen and (max-width: 374px) { @@ -162,7 +162,7 @@ font-size: $font-0; line-height: $line-height-small; padding: 0.15em 0.4em 0.2em 0.4em; - .d-icon { + i { color: $secondary; } @@ -276,7 +276,7 @@ tr.category-topic-link { display: inline-block; font-size: $font-up-2; margin: 0 0 0 10px; - .d-icon { + i { margin-right: 5px; } a[href] { diff --git a/app/assets/stylesheets/mobile/topic-post.scss b/app/assets/stylesheets/mobile/topic-post.scss index e5126d27fd6..9f3414436fc 100644 --- a/app/assets/stylesheets/mobile/topic-post.scss +++ b/app/assets/stylesheets/mobile/topic-post.scss @@ -52,7 +52,7 @@ span.badge-posts { max-width: unset; margin-right: 0; padding: 8px 9px 8px 8px; - .d-icon { + i { padding-left: 8px; } } @@ -189,7 +189,7 @@ a.reply-to-tab { line-height: $line-height-medium; } .number, - .d-icon { + i { color: dark-light-choose($primary-high, $secondary-low); font-size: $font-up-1; } @@ -402,6 +402,10 @@ blockquote { padding: 0.25em 0; } +.gutter { + display: none; +} + .posts-wrapper { position: relative; } diff --git a/app/assets/stylesheets/mobile/topic.scss b/app/assets/stylesheets/mobile/topic.scss index 1a3c493c885..d9870cce6cc 100644 --- a/app/assets/stylesheets/mobile/topic.scss +++ b/app/assets/stylesheets/mobile/topic.scss @@ -78,7 +78,7 @@ button.full { width: 100%; margin-bottom: 5px; - .d-icon { + i { display: block; margin-top: 2px; margin-bottom: 2px; diff --git a/app/assets/stylesheets/vendor/font_awesome/_animated.scss b/app/assets/stylesheets/vendor/font_awesome/_animated.scss new file mode 100644 index 00000000000..8a020dbfff7 --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_animated.scss @@ -0,0 +1,34 @@ +// Spinning Icons +// -------------------------- + +.#{$fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.#{$fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/app/assets/stylesheets/vendor/font_awesome/_bordered-pulled.scss b/app/assets/stylesheets/vendor/font_awesome/_bordered-pulled.scss new file mode 100644 index 00000000000..d4b85a02f24 --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_bordered-pulled.scss @@ -0,0 +1,25 @@ +// Bordered & Pulled +// ------------------------- + +.#{$fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em $fa-border-color; + border-radius: .1em; +} + +.#{$fa-css-prefix}-pull-left { float: left; } +.#{$fa-css-prefix}-pull-right { float: right; } + +.#{$fa-css-prefix} { + &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } + &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } +} + +/* Deprecated as of 4.4.0 */ +.pull-right { float: right; } +.pull-left { float: left; } + +.#{$fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/app/assets/stylesheets/vendor/font_awesome/_core.scss b/app/assets/stylesheets/vendor/font_awesome/_core.scss new file mode 100644 index 00000000000..7425ef85fc8 --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_core.scss @@ -0,0 +1,12 @@ +// Base Class Definition +// ------------------------- + +.#{$fa-css-prefix} { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} diff --git a/app/assets/stylesheets/vendor/font_awesome/_fixed-width.scss b/app/assets/stylesheets/vendor/font_awesome/_fixed-width.scss new file mode 100644 index 00000000000..b221c98133a --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_fixed-width.scss @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.#{$fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/app/assets/stylesheets/vendor/font_awesome/_icons.scss b/app/assets/stylesheets/vendor/font_awesome/_icons.scss new file mode 100644 index 00000000000..e63e702c4d9 --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_icons.scss @@ -0,0 +1,789 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } +.#{$fa-css-prefix}-music:before { content: $fa-var-music; } +.#{$fa-css-prefix}-search:before { content: $fa-var-search; } +.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } +.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } +.#{$fa-css-prefix}-star:before { content: $fa-var-star; } +.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } +.#{$fa-css-prefix}-user:before { content: $fa-var-user; } +.#{$fa-css-prefix}-film:before { content: $fa-var-film; } +.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } +.#{$fa-css-prefix}-th:before { content: $fa-var-th; } +.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } +.#{$fa-css-prefix}-check:before { content: $fa-var-check; } +.#{$fa-css-prefix}-remove:before, +.#{$fa-css-prefix}-close:before, +.#{$fa-css-prefix}-times:before { content: $fa-var-times; } +.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } +.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } +.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } +.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } +.#{$fa-css-prefix}-gear:before, +.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } +.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } +.#{$fa-css-prefix}-home:before { content: $fa-var-home; } +.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } +.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } +.#{$fa-css-prefix}-road:before { content: $fa-var-road; } +.#{$fa-css-prefix}-download:before { content: $fa-var-download; } +.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } +.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } +.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } +.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } +.#{$fa-css-prefix}-rotate-right:before, +.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } +.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } +.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } +.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } +.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } +.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } +.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } +.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } +.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } +.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } +.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } +.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } +.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } +.#{$fa-css-prefix}-book:before { content: $fa-var-book; } +.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } +.#{$fa-css-prefix}-print:before { content: $fa-var-print; } +.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } +.#{$fa-css-prefix}-font:before { content: $fa-var-font; } +.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } +.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } +.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } +.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } +.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } +.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } +.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } +.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } +.#{$fa-css-prefix}-list:before { content: $fa-var-list; } +.#{$fa-css-prefix}-dedent:before, +.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } +.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } +.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } +.#{$fa-css-prefix}-photo:before, +.#{$fa-css-prefix}-image:before, +.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } +.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } +.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } +.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } +.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } +.#{$fa-css-prefix}-edit:before, +.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } +.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } +.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } +.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } +.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } +.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } +.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } +.#{$fa-css-prefix}-play:before { content: $fa-var-play; } +.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } +.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } +.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } +.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } +.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } +.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } +.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } +.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } +.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } +.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } +.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } +.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } +.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } +.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } +.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } +.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } +.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } +.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } +.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } +.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } +.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } +.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } +.#{$fa-css-prefix}-mail-forward:before, +.#{$fa-css-prefix}-share:before { content: $fa-var-share; } +.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } +.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } +.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } +.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } +.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } +.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } +.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } +.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } +.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } +.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } +.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } +.#{$fa-css-prefix}-warning:before, +.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } +.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } +.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } +.#{$fa-css-prefix}-random:before { content: $fa-var-random; } +.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } +.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } +.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } +.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } +.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } +.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } +.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } +.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } +.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } +.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } +.#{$fa-css-prefix}-bar-chart-o:before, +.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } +.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } +.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } +.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } +.#{$fa-css-prefix}-key:before { content: $fa-var-key; } +.#{$fa-css-prefix}-gears:before, +.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } +.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } +.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } +.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } +.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } +.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } +.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } +.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } +.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } +.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } +.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } +.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } +.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } +.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } +.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } +.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } +.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } +.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } +.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } +.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } +.#{$fa-css-prefix}-facebook-f:before, +.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } +.#{$fa-css-prefix}-github:before { content: $fa-var-github; } +.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } +.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } +.#{$fa-css-prefix}-feed:before, +.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } +.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } +.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } +.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } +.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } +.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } +.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } +.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } +.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } +.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } +.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } +.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } +.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } +.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } +.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } +.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } +.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } +.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } +.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } +.#{$fa-css-prefix}-group:before, +.#{$fa-css-prefix}-users:before { content: $fa-var-users; } +.#{$fa-css-prefix}-chain:before, +.#{$fa-css-prefix}-link:before { content: $fa-var-link; } +.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } +.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } +.#{$fa-css-prefix}-cut:before, +.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } +.#{$fa-css-prefix}-copy:before, +.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } +.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } +.#{$fa-css-prefix}-save:before, +.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } +.#{$fa-css-prefix}-square:before { content: $fa-var-square; } +.#{$fa-css-prefix}-navicon:before, +.#{$fa-css-prefix}-reorder:before, +.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } +.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } +.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } +.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } +.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } +.#{$fa-css-prefix}-table:before { content: $fa-var-table; } +.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } +.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } +.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } +.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } +.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } +.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } +.#{$fa-css-prefix}-money:before { content: $fa-var-money; } +.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } +.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } +.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } +.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } +.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } +.#{$fa-css-prefix}-unsorted:before, +.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } +.#{$fa-css-prefix}-sort-down:before, +.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } +.#{$fa-css-prefix}-sort-up:before, +.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } +.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } +.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } +.#{$fa-css-prefix}-rotate-left:before, +.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } +.#{$fa-css-prefix}-legal:before, +.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } +.#{$fa-css-prefix}-dashboard:before, +.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } +.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } +.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } +.#{$fa-css-prefix}-flash:before, +.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } +.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } +.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } +.#{$fa-css-prefix}-paste:before, +.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } +.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } +.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } +.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } +.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } +.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } +.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } +.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } +.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } +.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } +.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } +.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } +.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } +.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } +.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } +.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } +.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } +.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } +.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } +.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } +.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } +.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } +.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } +.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } +.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } +.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } +.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } +.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } +.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } +.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } +.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } +.#{$fa-css-prefix}-mobile-phone:before, +.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } +.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } +.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } +.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } +.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } +.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } +.#{$fa-css-prefix}-mail-reply:before, +.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } +.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } +.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } +.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } +.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } +.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } +.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } +.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } +.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } +.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } +.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } +.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } +.#{$fa-css-prefix}-code:before { content: $fa-var-code; } +.#{$fa-css-prefix}-mail-reply-all:before, +.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } +.#{$fa-css-prefix}-star-half-empty:before, +.#{$fa-css-prefix}-star-half-full:before, +.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } +.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } +.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } +.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } +.#{$fa-css-prefix}-unlink:before, +.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } +.#{$fa-css-prefix}-question:before { content: $fa-var-question; } +.#{$fa-css-prefix}-info:before { content: $fa-var-info; } +.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } +.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } +.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } +.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } +.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } +.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } +.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } +.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } +.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } +.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } +.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } +.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } +.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } +.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } +.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } +.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } +.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } +.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } +.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } +.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } +.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } +.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } +.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } +.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } +.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } +.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } +.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } +.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } +.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } +.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } +.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } +.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } +.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } +.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } +.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } +.#{$fa-css-prefix}-toggle-down:before, +.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } +.#{$fa-css-prefix}-toggle-up:before, +.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } +.#{$fa-css-prefix}-toggle-right:before, +.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } +.#{$fa-css-prefix}-euro:before, +.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } +.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } +.#{$fa-css-prefix}-dollar:before, +.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } +.#{$fa-css-prefix}-rupee:before, +.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } +.#{$fa-css-prefix}-cny:before, +.#{$fa-css-prefix}-rmb:before, +.#{$fa-css-prefix}-yen:before, +.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } +.#{$fa-css-prefix}-ruble:before, +.#{$fa-css-prefix}-rouble:before, +.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } +.#{$fa-css-prefix}-won:before, +.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } +.#{$fa-css-prefix}-bitcoin:before, +.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } +.#{$fa-css-prefix}-file:before { content: $fa-var-file; } +.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } +.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } +.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } +.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } +.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } +.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } +.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } +.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } +.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } +.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } +.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } +.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } +.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } +.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } +.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } +.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } +.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } +.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } +.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } +.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } +.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } +.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } +.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } +.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } +.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } +.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } +.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } +.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } +.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } +.#{$fa-css-prefix}-android:before { content: $fa-var-android; } +.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } +.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } +.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } +.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } +.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } +.#{$fa-css-prefix}-female:before { content: $fa-var-female; } +.#{$fa-css-prefix}-male:before { content: $fa-var-male; } +.#{$fa-css-prefix}-gittip:before, +.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } +.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } +.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } +.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } +.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } +.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } +.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } +.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } +.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } +.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } +.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } +.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } +.#{$fa-css-prefix}-toggle-left:before, +.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } +.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } +.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } +.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } +.#{$fa-css-prefix}-turkish-lira:before, +.#{$fa-css-prefix}-try:before { content: $fa-var-try; } +.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } +.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } +.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } +.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } +.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } +.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } +.#{$fa-css-prefix}-institution:before, +.#{$fa-css-prefix}-bank:before, +.#{$fa-css-prefix}-university:before { content: $fa-var-university; } +.#{$fa-css-prefix}-mortar-board:before, +.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } +.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } +.#{$fa-css-prefix}-google:before { content: $fa-var-google; } +.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } +.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } +.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } +.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } +.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } +.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } +.#{$fa-css-prefix}-pied-piper-pp:before { content: $fa-var-pied-piper-pp; } +.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } +.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } +.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } +.#{$fa-css-prefix}-language:before { content: $fa-var-language; } +.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } +.#{$fa-css-prefix}-building:before { content: $fa-var-building; } +.#{$fa-css-prefix}-child:before { content: $fa-var-child; } +.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } +.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } +.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } +.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } +.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } +.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } +.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } +.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } +.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } +.#{$fa-css-prefix}-automobile:before, +.#{$fa-css-prefix}-car:before { content: $fa-var-car; } +.#{$fa-css-prefix}-cab:before, +.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } +.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } +.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } +.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } +.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } +.#{$fa-css-prefix}-database:before { content: $fa-var-database; } +.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } +.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } +.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } +.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } +.#{$fa-css-prefix}-file-photo-o:before, +.#{$fa-css-prefix}-file-picture-o:before, +.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } +.#{$fa-css-prefix}-file-zip-o:before, +.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } +.#{$fa-css-prefix}-file-sound-o:before, +.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } +.#{$fa-css-prefix}-file-movie-o:before, +.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } +.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } +.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } +.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } +.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } +.#{$fa-css-prefix}-life-bouy:before, +.#{$fa-css-prefix}-life-buoy:before, +.#{$fa-css-prefix}-life-saver:before, +.#{$fa-css-prefix}-support:before, +.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } +.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } +.#{$fa-css-prefix}-ra:before, +.#{$fa-css-prefix}-resistance:before, +.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } +.#{$fa-css-prefix}-ge:before, +.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } +.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } +.#{$fa-css-prefix}-git:before { content: $fa-var-git; } +.#{$fa-css-prefix}-y-combinator-square:before, +.#{$fa-css-prefix}-yc-square:before, +.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } +.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } +.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } +.#{$fa-css-prefix}-wechat:before, +.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } +.#{$fa-css-prefix}-send:before, +.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } +.#{$fa-css-prefix}-send-o:before, +.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } +.#{$fa-css-prefix}-history:before { content: $fa-var-history; } +.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } +.#{$fa-css-prefix}-header:before { content: $fa-var-header; } +.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } +.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } +.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } +.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } +.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } +.#{$fa-css-prefix}-soccer-ball-o:before, +.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } +.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } +.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } +.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } +.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } +.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } +.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } +.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } +.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } +.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } +.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } +.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } +.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } +.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } +.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } +.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } +.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } +.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } +.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } +.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } +.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } +.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } +.#{$fa-css-prefix}-at:before { content: $fa-var-at; } +.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } +.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } +.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } +.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } +.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } +.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } +.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } +.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } +.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } +.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } +.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } +.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } +.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } +.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } +.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } +.#{$fa-css-prefix}-shekel:before, +.#{$fa-css-prefix}-sheqel:before, +.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } +.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } +.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } +.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } +.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } +.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } +.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } +.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } +.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } +.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } +.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } +.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } +.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } +.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } +.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } +.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } +.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } +.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } +.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } +.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } +.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } +.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } +.#{$fa-css-prefix}-intersex:before, +.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } +.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } +.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } +.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } +.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } +.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } +.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } +.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } +.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } +.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; } +.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } +.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } +.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } +.#{$fa-css-prefix}-server:before { content: $fa-var-server; } +.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } +.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } +.#{$fa-css-prefix}-hotel:before, +.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } +.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } +.#{$fa-css-prefix}-train:before { content: $fa-var-train; } +.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } +.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } +.#{$fa-css-prefix}-yc:before, +.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; } +.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; } +.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } +.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } +.#{$fa-css-prefix}-battery-4:before, +.#{$fa-css-prefix}-battery:before, +.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } +.#{$fa-css-prefix}-battery-3:before, +.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } +.#{$fa-css-prefix}-battery-2:before, +.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; } +.#{$fa-css-prefix}-battery-1:before, +.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; } +.#{$fa-css-prefix}-battery-0:before, +.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; } +.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; } +.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; } +.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; } +.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; } +.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; } +.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; } +.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; } +.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; } +.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; } +.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; } +.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; } +.#{$fa-css-prefix}-hourglass-1:before, +.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; } +.#{$fa-css-prefix}-hourglass-2:before, +.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; } +.#{$fa-css-prefix}-hourglass-3:before, +.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; } +.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; } +.#{$fa-css-prefix}-hand-grab-o:before, +.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; } +.#{$fa-css-prefix}-hand-stop-o:before, +.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; } +.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; } +.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; } +.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; } +.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; } +.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; } +.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; } +.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; } +.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; } +.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; } +.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; } +.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; } +.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; } +.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; } +.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; } +.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; } +.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; } +.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; } +.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; } +.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; } +.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; } +.#{$fa-css-prefix}-tv:before, +.#{$fa-css-prefix}-television:before { content: $fa-var-television; } +.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; } +.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; } +.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; } +.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; } +.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; } +.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; } +.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; } +.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; } +.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; } +.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; } +.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; } +.#{$fa-css-prefix}-map:before { content: $fa-var-map; } +.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; } +.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; } +.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; } +.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; } +.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; } +.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; } +.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; } +.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; } +.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; } +.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; } +.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; } +.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; } +.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; } +.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; } +.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; } +.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; } +.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; } +.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; } +.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; } +.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; } +.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; } +.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; } +.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; } +.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; } +.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; } +.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; } +.#{$fa-css-prefix}-gitlab:before { content: $fa-var-gitlab; } +.#{$fa-css-prefix}-wpbeginner:before { content: $fa-var-wpbeginner; } +.#{$fa-css-prefix}-wpforms:before { content: $fa-var-wpforms; } +.#{$fa-css-prefix}-envira:before { content: $fa-var-envira; } +.#{$fa-css-prefix}-universal-access:before { content: $fa-var-universal-access; } +.#{$fa-css-prefix}-wheelchair-alt:before { content: $fa-var-wheelchair-alt; } +.#{$fa-css-prefix}-question-circle-o:before { content: $fa-var-question-circle-o; } +.#{$fa-css-prefix}-blind:before { content: $fa-var-blind; } +.#{$fa-css-prefix}-audio-description:before { content: $fa-var-audio-description; } +.#{$fa-css-prefix}-volume-control-phone:before { content: $fa-var-volume-control-phone; } +.#{$fa-css-prefix}-braille:before { content: $fa-var-braille; } +.#{$fa-css-prefix}-assistive-listening-systems:before { content: $fa-var-assistive-listening-systems; } +.#{$fa-css-prefix}-asl-interpreting:before, +.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: $fa-var-american-sign-language-interpreting; } +.#{$fa-css-prefix}-deafness:before, +.#{$fa-css-prefix}-hard-of-hearing:before, +.#{$fa-css-prefix}-deaf:before { content: $fa-var-deaf; } +.#{$fa-css-prefix}-glide:before { content: $fa-var-glide; } +.#{$fa-css-prefix}-glide-g:before { content: $fa-var-glide-g; } +.#{$fa-css-prefix}-signing:before, +.#{$fa-css-prefix}-sign-language:before { content: $fa-var-sign-language; } +.#{$fa-css-prefix}-low-vision:before { content: $fa-var-low-vision; } +.#{$fa-css-prefix}-viadeo:before { content: $fa-var-viadeo; } +.#{$fa-css-prefix}-viadeo-square:before { content: $fa-var-viadeo-square; } +.#{$fa-css-prefix}-snapchat:before { content: $fa-var-snapchat; } +.#{$fa-css-prefix}-snapchat-ghost:before { content: $fa-var-snapchat-ghost; } +.#{$fa-css-prefix}-snapchat-square:before { content: $fa-var-snapchat-square; } +.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } +.#{$fa-css-prefix}-first-order:before { content: $fa-var-first-order; } +.#{$fa-css-prefix}-yoast:before { content: $fa-var-yoast; } +.#{$fa-css-prefix}-themeisle:before { content: $fa-var-themeisle; } +.#{$fa-css-prefix}-google-plus-circle:before, +.#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; } +.#{$fa-css-prefix}-fa:before, +.#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; } +.#{$fa-css-prefix}-handshake-o:before { content: $fa-var-handshake-o; } +.#{$fa-css-prefix}-envelope-open:before { content: $fa-var-envelope-open; } +.#{$fa-css-prefix}-envelope-open-o:before { content: $fa-var-envelope-open-o; } +.#{$fa-css-prefix}-linode:before { content: $fa-var-linode; } +.#{$fa-css-prefix}-address-book:before { content: $fa-var-address-book; } +.#{$fa-css-prefix}-address-book-o:before { content: $fa-var-address-book-o; } +.#{$fa-css-prefix}-vcard:before, +.#{$fa-css-prefix}-address-card:before { content: $fa-var-address-card; } +.#{$fa-css-prefix}-vcard-o:before, +.#{$fa-css-prefix}-address-card-o:before { content: $fa-var-address-card-o; } +.#{$fa-css-prefix}-user-circle:before { content: $fa-var-user-circle; } +.#{$fa-css-prefix}-user-circle-o:before { content: $fa-var-user-circle-o; } +.#{$fa-css-prefix}-user-o:before { content: $fa-var-user-o; } +.#{$fa-css-prefix}-id-badge:before { content: $fa-var-id-badge; } +.#{$fa-css-prefix}-drivers-license:before, +.#{$fa-css-prefix}-id-card:before { content: $fa-var-id-card; } +.#{$fa-css-prefix}-drivers-license-o:before, +.#{$fa-css-prefix}-id-card-o:before { content: $fa-var-id-card-o; } +.#{$fa-css-prefix}-quora:before { content: $fa-var-quora; } +.#{$fa-css-prefix}-free-code-camp:before { content: $fa-var-free-code-camp; } +.#{$fa-css-prefix}-telegram:before { content: $fa-var-telegram; } +.#{$fa-css-prefix}-thermometer-4:before, +.#{$fa-css-prefix}-thermometer:before, +.#{$fa-css-prefix}-thermometer-full:before { content: $fa-var-thermometer-full; } +.#{$fa-css-prefix}-thermometer-3:before, +.#{$fa-css-prefix}-thermometer-three-quarters:before { content: $fa-var-thermometer-three-quarters; } +.#{$fa-css-prefix}-thermometer-2:before, +.#{$fa-css-prefix}-thermometer-half:before { content: $fa-var-thermometer-half; } +.#{$fa-css-prefix}-thermometer-1:before, +.#{$fa-css-prefix}-thermometer-quarter:before { content: $fa-var-thermometer-quarter; } +.#{$fa-css-prefix}-thermometer-0:before, +.#{$fa-css-prefix}-thermometer-empty:before { content: $fa-var-thermometer-empty; } +.#{$fa-css-prefix}-shower:before { content: $fa-var-shower; } +.#{$fa-css-prefix}-bathtub:before, +.#{$fa-css-prefix}-s15:before, +.#{$fa-css-prefix}-bath:before { content: $fa-var-bath; } +.#{$fa-css-prefix}-podcast:before { content: $fa-var-podcast; } +.#{$fa-css-prefix}-window-maximize:before { content: $fa-var-window-maximize; } +.#{$fa-css-prefix}-window-minimize:before { content: $fa-var-window-minimize; } +.#{$fa-css-prefix}-window-restore:before { content: $fa-var-window-restore; } +.#{$fa-css-prefix}-times-rectangle:before, +.#{$fa-css-prefix}-window-close:before { content: $fa-var-window-close; } +.#{$fa-css-prefix}-times-rectangle-o:before, +.#{$fa-css-prefix}-window-close-o:before { content: $fa-var-window-close-o; } +.#{$fa-css-prefix}-bandcamp:before { content: $fa-var-bandcamp; } +.#{$fa-css-prefix}-grav:before { content: $fa-var-grav; } +.#{$fa-css-prefix}-etsy:before { content: $fa-var-etsy; } +.#{$fa-css-prefix}-imdb:before { content: $fa-var-imdb; } +.#{$fa-css-prefix}-ravelry:before { content: $fa-var-ravelry; } +.#{$fa-css-prefix}-eercast:before { content: $fa-var-eercast; } +.#{$fa-css-prefix}-microchip:before { content: $fa-var-microchip; } +.#{$fa-css-prefix}-snowflake-o:before { content: $fa-var-snowflake-o; } +.#{$fa-css-prefix}-superpowers:before { content: $fa-var-superpowers; } +.#{$fa-css-prefix}-wpexplorer:before { content: $fa-var-wpexplorer; } +.#{$fa-css-prefix}-meetup:before { content: $fa-var-meetup; } diff --git a/app/assets/stylesheets/vendor/font_awesome/_larger.scss b/app/assets/stylesheets/vendor/font_awesome/_larger.scss new file mode 100644 index 00000000000..41e9a8184aa --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_larger.scss @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.#{$fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.#{$fa-css-prefix}-2x { font-size: 2em; } +.#{$fa-css-prefix}-3x { font-size: 3em; } +.#{$fa-css-prefix}-4x { font-size: 4em; } +.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/app/assets/stylesheets/vendor/font_awesome/_list.scss b/app/assets/stylesheets/vendor/font_awesome/_list.scss new file mode 100644 index 00000000000..7d1e4d54d6c --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_list.scss @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.#{$fa-css-prefix}-ul { + padding-left: 0; + margin-left: $fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.#{$fa-css-prefix}-li { + position: absolute; + left: -$fa-li-width; + width: $fa-li-width; + top: (2em / 14); + text-align: center; + &.#{$fa-css-prefix}-lg { + left: -$fa-li-width + (4em / 14); + } +} diff --git a/app/assets/stylesheets/vendor/font_awesome/_mixins.scss b/app/assets/stylesheets/vendor/font_awesome/_mixins.scss new file mode 100644 index 00000000000..c3bbd5745d3 --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_mixins.scss @@ -0,0 +1,60 @@ +// Mixins +// -------------------------- + +@mixin fa-icon() { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} + +@mixin fa-icon-rotate($degrees, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; + -webkit-transform: rotate($degrees); + -ms-transform: rotate($degrees); + transform: rotate($degrees); +} + +@mixin fa-icon-flip($horiz, $vert, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; + -webkit-transform: scale($horiz, $vert); + -ms-transform: scale($horiz, $vert); + transform: scale($horiz, $vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +@mixin sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +@mixin sr-only-focusable { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} diff --git a/app/assets/stylesheets/vendor/font_awesome/_path.scss b/app/assets/stylesheets/vendor/font_awesome/_path.scss new file mode 100644 index 00000000000..bb457c23a8e --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_path.scss @@ -0,0 +1,15 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); + src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), + url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), + url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), + url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), + url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); +// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/app/assets/stylesheets/vendor/font_awesome/_rotated-flipped.scss b/app/assets/stylesheets/vendor/font_awesome/_rotated-flipped.scss new file mode 100644 index 00000000000..a3558fd09ca --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_rotated-flipped.scss @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } +.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } +.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } + +.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } +.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .#{$fa-css-prefix}-rotate-90, +:root .#{$fa-css-prefix}-rotate-180, +:root .#{$fa-css-prefix}-rotate-270, +:root .#{$fa-css-prefix}-flip-horizontal, +:root .#{$fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/app/assets/stylesheets/vendor/font_awesome/_screen-reader.scss b/app/assets/stylesheets/vendor/font_awesome/_screen-reader.scss new file mode 100644 index 00000000000..637426f0da6 --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_screen-reader.scss @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { @include sr-only(); } +.sr-only-focusable { @include sr-only-focusable(); } diff --git a/app/assets/stylesheets/vendor/font_awesome/_stacked.scss b/app/assets/stylesheets/vendor/font_awesome/_stacked.scss new file mode 100644 index 00000000000..aef7403660c --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_stacked.scss @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.#{$fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.#{$fa-css-prefix}-stack-1x { line-height: inherit; } +.#{$fa-css-prefix}-stack-2x { font-size: 2em; } +.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/app/assets/stylesheets/vendor/font_awesome/_variables.scss b/app/assets/stylesheets/vendor/font_awesome/_variables.scss new file mode 100644 index 00000000000..498fc4a087c --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_variables.scss @@ -0,0 +1,800 @@ +// Variables +// -------------------------- + +$fa-font-path: "../fonts" !default; +$fa-font-size-base: 14px !default; +$fa-line-height-base: 1 !default; +//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts" !default; // for referencing Bootstrap CDN font files directly +$fa-css-prefix: fa !default; +$fa-version: "4.7.0" !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: (30em / 14) !default; + +$fa-var-500px: "\f26e"; +$fa-var-address-book: "\f2b9"; +$fa-var-address-book-o: "\f2ba"; +$fa-var-address-card: "\f2bb"; +$fa-var-address-card-o: "\f2bc"; +$fa-var-adjust: "\f042"; +$fa-var-adn: "\f170"; +$fa-var-align-center: "\f037"; +$fa-var-align-justify: "\f039"; +$fa-var-align-left: "\f036"; +$fa-var-align-right: "\f038"; +$fa-var-amazon: "\f270"; +$fa-var-ambulance: "\f0f9"; +$fa-var-american-sign-language-interpreting: "\f2a3"; +$fa-var-anchor: "\f13d"; +$fa-var-android: "\f17b"; +$fa-var-angellist: "\f209"; +$fa-var-angle-double-down: "\f103"; +$fa-var-angle-double-left: "\f100"; +$fa-var-angle-double-right: "\f101"; +$fa-var-angle-double-up: "\f102"; +$fa-var-angle-down: "\f107"; +$fa-var-angle-left: "\f104"; +$fa-var-angle-right: "\f105"; +$fa-var-angle-up: "\f106"; +$fa-var-apple: "\f179"; +$fa-var-archive: "\f187"; +$fa-var-area-chart: "\f1fe"; +$fa-var-arrow-circle-down: "\f0ab"; +$fa-var-arrow-circle-left: "\f0a8"; +$fa-var-arrow-circle-o-down: "\f01a"; +$fa-var-arrow-circle-o-left: "\f190"; +$fa-var-arrow-circle-o-right: "\f18e"; +$fa-var-arrow-circle-o-up: "\f01b"; +$fa-var-arrow-circle-right: "\f0a9"; +$fa-var-arrow-circle-up: "\f0aa"; +$fa-var-arrow-down: "\f063"; +$fa-var-arrow-left: "\f060"; +$fa-var-arrow-right: "\f061"; +$fa-var-arrow-up: "\f062"; +$fa-var-arrows: "\f047"; +$fa-var-arrows-alt: "\f0b2"; +$fa-var-arrows-h: "\f07e"; +$fa-var-arrows-v: "\f07d"; +$fa-var-asl-interpreting: "\f2a3"; +$fa-var-assistive-listening-systems: "\f2a2"; +$fa-var-asterisk: "\f069"; +$fa-var-at: "\f1fa"; +$fa-var-audio-description: "\f29e"; +$fa-var-automobile: "\f1b9"; +$fa-var-backward: "\f04a"; +$fa-var-balance-scale: "\f24e"; +$fa-var-ban: "\f05e"; +$fa-var-bandcamp: "\f2d5"; +$fa-var-bank: "\f19c"; +$fa-var-bar-chart: "\f080"; +$fa-var-bar-chart-o: "\f080"; +$fa-var-barcode: "\f02a"; +$fa-var-bars: "\f0c9"; +$fa-var-bath: "\f2cd"; +$fa-var-bathtub: "\f2cd"; +$fa-var-battery: "\f240"; +$fa-var-battery-0: "\f244"; +$fa-var-battery-1: "\f243"; +$fa-var-battery-2: "\f242"; +$fa-var-battery-3: "\f241"; +$fa-var-battery-4: "\f240"; +$fa-var-battery-empty: "\f244"; +$fa-var-battery-full: "\f240"; +$fa-var-battery-half: "\f242"; +$fa-var-battery-quarter: "\f243"; +$fa-var-battery-three-quarters: "\f241"; +$fa-var-bed: "\f236"; +$fa-var-beer: "\f0fc"; +$fa-var-behance: "\f1b4"; +$fa-var-behance-square: "\f1b5"; +$fa-var-bell: "\f0f3"; +$fa-var-bell-o: "\f0a2"; +$fa-var-bell-slash: "\f1f6"; +$fa-var-bell-slash-o: "\f1f7"; +$fa-var-bicycle: "\f206"; +$fa-var-binoculars: "\f1e5"; +$fa-var-birthday-cake: "\f1fd"; +$fa-var-bitbucket: "\f171"; +$fa-var-bitbucket-square: "\f172"; +$fa-var-bitcoin: "\f15a"; +$fa-var-black-tie: "\f27e"; +$fa-var-blind: "\f29d"; +$fa-var-bluetooth: "\f293"; +$fa-var-bluetooth-b: "\f294"; +$fa-var-bold: "\f032"; +$fa-var-bolt: "\f0e7"; +$fa-var-bomb: "\f1e2"; +$fa-var-book: "\f02d"; +$fa-var-bookmark: "\f02e"; +$fa-var-bookmark-o: "\f097"; +$fa-var-braille: "\f2a1"; +$fa-var-briefcase: "\f0b1"; +$fa-var-btc: "\f15a"; +$fa-var-bug: "\f188"; +$fa-var-building: "\f1ad"; +$fa-var-building-o: "\f0f7"; +$fa-var-bullhorn: "\f0a1"; +$fa-var-bullseye: "\f140"; +$fa-var-bus: "\f207"; +$fa-var-buysellads: "\f20d"; +$fa-var-cab: "\f1ba"; +$fa-var-calculator: "\f1ec"; +$fa-var-calendar: "\f073"; +$fa-var-calendar-check-o: "\f274"; +$fa-var-calendar-minus-o: "\f272"; +$fa-var-calendar-o: "\f133"; +$fa-var-calendar-plus-o: "\f271"; +$fa-var-calendar-times-o: "\f273"; +$fa-var-camera: "\f030"; +$fa-var-camera-retro: "\f083"; +$fa-var-car: "\f1b9"; +$fa-var-caret-down: "\f0d7"; +$fa-var-caret-left: "\f0d9"; +$fa-var-caret-right: "\f0da"; +$fa-var-caret-square-o-down: "\f150"; +$fa-var-caret-square-o-left: "\f191"; +$fa-var-caret-square-o-right: "\f152"; +$fa-var-caret-square-o-up: "\f151"; +$fa-var-caret-up: "\f0d8"; +$fa-var-cart-arrow-down: "\f218"; +$fa-var-cart-plus: "\f217"; +$fa-var-cc: "\f20a"; +$fa-var-cc-amex: "\f1f3"; +$fa-var-cc-diners-club: "\f24c"; +$fa-var-cc-discover: "\f1f2"; +$fa-var-cc-jcb: "\f24b"; +$fa-var-cc-mastercard: "\f1f1"; +$fa-var-cc-paypal: "\f1f4"; +$fa-var-cc-stripe: "\f1f5"; +$fa-var-cc-visa: "\f1f0"; +$fa-var-certificate: "\f0a3"; +$fa-var-chain: "\f0c1"; +$fa-var-chain-broken: "\f127"; +$fa-var-check: "\f00c"; +$fa-var-check-circle: "\f058"; +$fa-var-check-circle-o: "\f05d"; +$fa-var-check-square: "\f14a"; +$fa-var-check-square-o: "\f046"; +$fa-var-chevron-circle-down: "\f13a"; +$fa-var-chevron-circle-left: "\f137"; +$fa-var-chevron-circle-right: "\f138"; +$fa-var-chevron-circle-up: "\f139"; +$fa-var-chevron-down: "\f078"; +$fa-var-chevron-left: "\f053"; +$fa-var-chevron-right: "\f054"; +$fa-var-chevron-up: "\f077"; +$fa-var-child: "\f1ae"; +$fa-var-chrome: "\f268"; +$fa-var-circle: "\f111"; +$fa-var-circle-o: "\f10c"; +$fa-var-circle-o-notch: "\f1ce"; +$fa-var-circle-thin: "\f1db"; +$fa-var-clipboard: "\f0ea"; +$fa-var-clock-o: "\f017"; +$fa-var-clone: "\f24d"; +$fa-var-close: "\f00d"; +$fa-var-cloud: "\f0c2"; +$fa-var-cloud-download: "\f0ed"; +$fa-var-cloud-upload: "\f0ee"; +$fa-var-cny: "\f157"; +$fa-var-code: "\f121"; +$fa-var-code-fork: "\f126"; +$fa-var-codepen: "\f1cb"; +$fa-var-codiepie: "\f284"; +$fa-var-coffee: "\f0f4"; +$fa-var-cog: "\f013"; +$fa-var-cogs: "\f085"; +$fa-var-columns: "\f0db"; +$fa-var-comment: "\f075"; +$fa-var-comment-o: "\f0e5"; +$fa-var-commenting: "\f27a"; +$fa-var-commenting-o: "\f27b"; +$fa-var-comments: "\f086"; +$fa-var-comments-o: "\f0e6"; +$fa-var-compass: "\f14e"; +$fa-var-compress: "\f066"; +$fa-var-connectdevelop: "\f20e"; +$fa-var-contao: "\f26d"; +$fa-var-copy: "\f0c5"; +$fa-var-copyright: "\f1f9"; +$fa-var-creative-commons: "\f25e"; +$fa-var-credit-card: "\f09d"; +$fa-var-credit-card-alt: "\f283"; +$fa-var-crop: "\f125"; +$fa-var-crosshairs: "\f05b"; +$fa-var-css3: "\f13c"; +$fa-var-cube: "\f1b2"; +$fa-var-cubes: "\f1b3"; +$fa-var-cut: "\f0c4"; +$fa-var-cutlery: "\f0f5"; +$fa-var-dashboard: "\f0e4"; +$fa-var-dashcube: "\f210"; +$fa-var-database: "\f1c0"; +$fa-var-deaf: "\f2a4"; +$fa-var-deafness: "\f2a4"; +$fa-var-dedent: "\f03b"; +$fa-var-delicious: "\f1a5"; +$fa-var-desktop: "\f108"; +$fa-var-deviantart: "\f1bd"; +$fa-var-diamond: "\f219"; +$fa-var-digg: "\f1a6"; +$fa-var-dollar: "\f155"; +$fa-var-dot-circle-o: "\f192"; +$fa-var-download: "\f019"; +$fa-var-dribbble: "\f17d"; +$fa-var-drivers-license: "\f2c2"; +$fa-var-drivers-license-o: "\f2c3"; +$fa-var-dropbox: "\f16b"; +$fa-var-drupal: "\f1a9"; +$fa-var-edge: "\f282"; +$fa-var-edit: "\f044"; +$fa-var-eercast: "\f2da"; +$fa-var-eject: "\f052"; +$fa-var-ellipsis-h: "\f141"; +$fa-var-ellipsis-v: "\f142"; +$fa-var-empire: "\f1d1"; +$fa-var-envelope: "\f0e0"; +$fa-var-envelope-o: "\f003"; +$fa-var-envelope-open: "\f2b6"; +$fa-var-envelope-open-o: "\f2b7"; +$fa-var-envelope-square: "\f199"; +$fa-var-envira: "\f299"; +$fa-var-eraser: "\f12d"; +$fa-var-etsy: "\f2d7"; +$fa-var-eur: "\f153"; +$fa-var-euro: "\f153"; +$fa-var-exchange: "\f0ec"; +$fa-var-exclamation: "\f12a"; +$fa-var-exclamation-circle: "\f06a"; +$fa-var-exclamation-triangle: "\f071"; +$fa-var-expand: "\f065"; +$fa-var-expeditedssl: "\f23e"; +$fa-var-external-link: "\f08e"; +$fa-var-external-link-square: "\f14c"; +$fa-var-eye: "\f06e"; +$fa-var-eye-slash: "\f070"; +$fa-var-eyedropper: "\f1fb"; +$fa-var-fa: "\f2b4"; +$fa-var-facebook: "\f09a"; +$fa-var-facebook-f: "\f09a"; +$fa-var-facebook-official: "\f230"; +$fa-var-facebook-square: "\f082"; +$fa-var-fast-backward: "\f049"; +$fa-var-fast-forward: "\f050"; +$fa-var-fax: "\f1ac"; +$fa-var-feed: "\f09e"; +$fa-var-female: "\f182"; +$fa-var-fighter-jet: "\f0fb"; +$fa-var-file: "\f15b"; +$fa-var-file-archive-o: "\f1c6"; +$fa-var-file-audio-o: "\f1c7"; +$fa-var-file-code-o: "\f1c9"; +$fa-var-file-excel-o: "\f1c3"; +$fa-var-file-image-o: "\f1c5"; +$fa-var-file-movie-o: "\f1c8"; +$fa-var-file-o: "\f016"; +$fa-var-file-pdf-o: "\f1c1"; +$fa-var-file-photo-o: "\f1c5"; +$fa-var-file-picture-o: "\f1c5"; +$fa-var-file-powerpoint-o: "\f1c4"; +$fa-var-file-sound-o: "\f1c7"; +$fa-var-file-text: "\f15c"; +$fa-var-file-text-o: "\f0f6"; +$fa-var-file-video-o: "\f1c8"; +$fa-var-file-word-o: "\f1c2"; +$fa-var-file-zip-o: "\f1c6"; +$fa-var-files-o: "\f0c5"; +$fa-var-film: "\f008"; +$fa-var-filter: "\f0b0"; +$fa-var-fire: "\f06d"; +$fa-var-fire-extinguisher: "\f134"; +$fa-var-firefox: "\f269"; +$fa-var-first-order: "\f2b0"; +$fa-var-flag: "\f024"; +$fa-var-flag-checkered: "\f11e"; +$fa-var-flag-o: "\f11d"; +$fa-var-flash: "\f0e7"; +$fa-var-flask: "\f0c3"; +$fa-var-flickr: "\f16e"; +$fa-var-floppy-o: "\f0c7"; +$fa-var-folder: "\f07b"; +$fa-var-folder-o: "\f114"; +$fa-var-folder-open: "\f07c"; +$fa-var-folder-open-o: "\f115"; +$fa-var-font: "\f031"; +$fa-var-font-awesome: "\f2b4"; +$fa-var-fonticons: "\f280"; +$fa-var-fort-awesome: "\f286"; +$fa-var-forumbee: "\f211"; +$fa-var-forward: "\f04e"; +$fa-var-foursquare: "\f180"; +$fa-var-free-code-camp: "\f2c5"; +$fa-var-frown-o: "\f119"; +$fa-var-futbol-o: "\f1e3"; +$fa-var-gamepad: "\f11b"; +$fa-var-gavel: "\f0e3"; +$fa-var-gbp: "\f154"; +$fa-var-ge: "\f1d1"; +$fa-var-gear: "\f013"; +$fa-var-gears: "\f085"; +$fa-var-genderless: "\f22d"; +$fa-var-get-pocket: "\f265"; +$fa-var-gg: "\f260"; +$fa-var-gg-circle: "\f261"; +$fa-var-gift: "\f06b"; +$fa-var-git: "\f1d3"; +$fa-var-git-square: "\f1d2"; +$fa-var-github: "\f09b"; +$fa-var-github-alt: "\f113"; +$fa-var-github-square: "\f092"; +$fa-var-gitlab: "\f296"; +$fa-var-gittip: "\f184"; +$fa-var-glass: "\f000"; +$fa-var-glide: "\f2a5"; +$fa-var-glide-g: "\f2a6"; +$fa-var-globe: "\f0ac"; +$fa-var-google: "\f1a0"; +$fa-var-google-plus: "\f0d5"; +$fa-var-google-plus-circle: "\f2b3"; +$fa-var-google-plus-official: "\f2b3"; +$fa-var-google-plus-square: "\f0d4"; +$fa-var-google-wallet: "\f1ee"; +$fa-var-graduation-cap: "\f19d"; +$fa-var-gratipay: "\f184"; +$fa-var-grav: "\f2d6"; +$fa-var-group: "\f0c0"; +$fa-var-h-square: "\f0fd"; +$fa-var-hacker-news: "\f1d4"; +$fa-var-hand-grab-o: "\f255"; +$fa-var-hand-lizard-o: "\f258"; +$fa-var-hand-o-down: "\f0a7"; +$fa-var-hand-o-left: "\f0a5"; +$fa-var-hand-o-right: "\f0a4"; +$fa-var-hand-o-up: "\f0a6"; +$fa-var-hand-paper-o: "\f256"; +$fa-var-hand-peace-o: "\f25b"; +$fa-var-hand-pointer-o: "\f25a"; +$fa-var-hand-rock-o: "\f255"; +$fa-var-hand-scissors-o: "\f257"; +$fa-var-hand-spock-o: "\f259"; +$fa-var-hand-stop-o: "\f256"; +$fa-var-handshake-o: "\f2b5"; +$fa-var-hard-of-hearing: "\f2a4"; +$fa-var-hashtag: "\f292"; +$fa-var-hdd-o: "\f0a0"; +$fa-var-header: "\f1dc"; +$fa-var-headphones: "\f025"; +$fa-var-heart: "\f004"; +$fa-var-heart-o: "\f08a"; +$fa-var-heartbeat: "\f21e"; +$fa-var-history: "\f1da"; +$fa-var-home: "\f015"; +$fa-var-hospital-o: "\f0f8"; +$fa-var-hotel: "\f236"; +$fa-var-hourglass: "\f254"; +$fa-var-hourglass-1: "\f251"; +$fa-var-hourglass-2: "\f252"; +$fa-var-hourglass-3: "\f253"; +$fa-var-hourglass-end: "\f253"; +$fa-var-hourglass-half: "\f252"; +$fa-var-hourglass-o: "\f250"; +$fa-var-hourglass-start: "\f251"; +$fa-var-houzz: "\f27c"; +$fa-var-html5: "\f13b"; +$fa-var-i-cursor: "\f246"; +$fa-var-id-badge: "\f2c1"; +$fa-var-id-card: "\f2c2"; +$fa-var-id-card-o: "\f2c3"; +$fa-var-ils: "\f20b"; +$fa-var-image: "\f03e"; +$fa-var-imdb: "\f2d8"; +$fa-var-inbox: "\f01c"; +$fa-var-indent: "\f03c"; +$fa-var-industry: "\f275"; +$fa-var-info: "\f129"; +$fa-var-info-circle: "\f05a"; +$fa-var-inr: "\f156"; +$fa-var-instagram: "\f16d"; +$fa-var-institution: "\f19c"; +$fa-var-internet-explorer: "\f26b"; +$fa-var-intersex: "\f224"; +$fa-var-ioxhost: "\f208"; +$fa-var-italic: "\f033"; +$fa-var-joomla: "\f1aa"; +$fa-var-jpy: "\f157"; +$fa-var-jsfiddle: "\f1cc"; +$fa-var-key: "\f084"; +$fa-var-keyboard-o: "\f11c"; +$fa-var-krw: "\f159"; +$fa-var-language: "\f1ab"; +$fa-var-laptop: "\f109"; +$fa-var-lastfm: "\f202"; +$fa-var-lastfm-square: "\f203"; +$fa-var-leaf: "\f06c"; +$fa-var-leanpub: "\f212"; +$fa-var-legal: "\f0e3"; +$fa-var-lemon-o: "\f094"; +$fa-var-level-down: "\f149"; +$fa-var-level-up: "\f148"; +$fa-var-life-bouy: "\f1cd"; +$fa-var-life-buoy: "\f1cd"; +$fa-var-life-ring: "\f1cd"; +$fa-var-life-saver: "\f1cd"; +$fa-var-lightbulb-o: "\f0eb"; +$fa-var-line-chart: "\f201"; +$fa-var-link: "\f0c1"; +$fa-var-linkedin: "\f0e1"; +$fa-var-linkedin-square: "\f08c"; +$fa-var-linode: "\f2b8"; +$fa-var-linux: "\f17c"; +$fa-var-list: "\f03a"; +$fa-var-list-alt: "\f022"; +$fa-var-list-ol: "\f0cb"; +$fa-var-list-ul: "\f0ca"; +$fa-var-location-arrow: "\f124"; +$fa-var-lock: "\f023"; +$fa-var-long-arrow-down: "\f175"; +$fa-var-long-arrow-left: "\f177"; +$fa-var-long-arrow-right: "\f178"; +$fa-var-long-arrow-up: "\f176"; +$fa-var-low-vision: "\f2a8"; +$fa-var-magic: "\f0d0"; +$fa-var-magnet: "\f076"; +$fa-var-mail-forward: "\f064"; +$fa-var-mail-reply: "\f112"; +$fa-var-mail-reply-all: "\f122"; +$fa-var-male: "\f183"; +$fa-var-map: "\f279"; +$fa-var-map-marker: "\f041"; +$fa-var-map-o: "\f278"; +$fa-var-map-pin: "\f276"; +$fa-var-map-signs: "\f277"; +$fa-var-mars: "\f222"; +$fa-var-mars-double: "\f227"; +$fa-var-mars-stroke: "\f229"; +$fa-var-mars-stroke-h: "\f22b"; +$fa-var-mars-stroke-v: "\f22a"; +$fa-var-maxcdn: "\f136"; +$fa-var-meanpath: "\f20c"; +$fa-var-medium: "\f23a"; +$fa-var-medkit: "\f0fa"; +$fa-var-meetup: "\f2e0"; +$fa-var-meh-o: "\f11a"; +$fa-var-mercury: "\f223"; +$fa-var-microchip: "\f2db"; +$fa-var-microphone: "\f130"; +$fa-var-microphone-slash: "\f131"; +$fa-var-minus: "\f068"; +$fa-var-minus-circle: "\f056"; +$fa-var-minus-square: "\f146"; +$fa-var-minus-square-o: "\f147"; +$fa-var-mixcloud: "\f289"; +$fa-var-mobile: "\f10b"; +$fa-var-mobile-phone: "\f10b"; +$fa-var-modx: "\f285"; +$fa-var-money: "\f0d6"; +$fa-var-moon-o: "\f186"; +$fa-var-mortar-board: "\f19d"; +$fa-var-motorcycle: "\f21c"; +$fa-var-mouse-pointer: "\f245"; +$fa-var-music: "\f001"; +$fa-var-navicon: "\f0c9"; +$fa-var-neuter: "\f22c"; +$fa-var-newspaper-o: "\f1ea"; +$fa-var-object-group: "\f247"; +$fa-var-object-ungroup: "\f248"; +$fa-var-odnoklassniki: "\f263"; +$fa-var-odnoklassniki-square: "\f264"; +$fa-var-opencart: "\f23d"; +$fa-var-openid: "\f19b"; +$fa-var-opera: "\f26a"; +$fa-var-optin-monster: "\f23c"; +$fa-var-outdent: "\f03b"; +$fa-var-pagelines: "\f18c"; +$fa-var-paint-brush: "\f1fc"; +$fa-var-paper-plane: "\f1d8"; +$fa-var-paper-plane-o: "\f1d9"; +$fa-var-paperclip: "\f0c6"; +$fa-var-paragraph: "\f1dd"; +$fa-var-paste: "\f0ea"; +$fa-var-pause: "\f04c"; +$fa-var-pause-circle: "\f28b"; +$fa-var-pause-circle-o: "\f28c"; +$fa-var-paw: "\f1b0"; +$fa-var-paypal: "\f1ed"; +$fa-var-pencil: "\f040"; +$fa-var-pencil-square: "\f14b"; +$fa-var-pencil-square-o: "\f044"; +$fa-var-percent: "\f295"; +$fa-var-phone: "\f095"; +$fa-var-phone-square: "\f098"; +$fa-var-photo: "\f03e"; +$fa-var-picture-o: "\f03e"; +$fa-var-pie-chart: "\f200"; +$fa-var-pied-piper: "\f2ae"; +$fa-var-pied-piper-alt: "\f1a8"; +$fa-var-pied-piper-pp: "\f1a7"; +$fa-var-pinterest: "\f0d2"; +$fa-var-pinterest-p: "\f231"; +$fa-var-pinterest-square: "\f0d3"; +$fa-var-plane: "\f072"; +$fa-var-play: "\f04b"; +$fa-var-play-circle: "\f144"; +$fa-var-play-circle-o: "\f01d"; +$fa-var-plug: "\f1e6"; +$fa-var-plus: "\f067"; +$fa-var-plus-circle: "\f055"; +$fa-var-plus-square: "\f0fe"; +$fa-var-plus-square-o: "\f196"; +$fa-var-podcast: "\f2ce"; +$fa-var-power-off: "\f011"; +$fa-var-print: "\f02f"; +$fa-var-product-hunt: "\f288"; +$fa-var-puzzle-piece: "\f12e"; +$fa-var-qq: "\f1d6"; +$fa-var-qrcode: "\f029"; +$fa-var-question: "\f128"; +$fa-var-question-circle: "\f059"; +$fa-var-question-circle-o: "\f29c"; +$fa-var-quora: "\f2c4"; +$fa-var-quote-left: "\f10d"; +$fa-var-quote-right: "\f10e"; +$fa-var-ra: "\f1d0"; +$fa-var-random: "\f074"; +$fa-var-ravelry: "\f2d9"; +$fa-var-rebel: "\f1d0"; +$fa-var-recycle: "\f1b8"; +$fa-var-reddit: "\f1a1"; +$fa-var-reddit-alien: "\f281"; +$fa-var-reddit-square: "\f1a2"; +$fa-var-refresh: "\f021"; +$fa-var-registered: "\f25d"; +$fa-var-remove: "\f00d"; +$fa-var-renren: "\f18b"; +$fa-var-reorder: "\f0c9"; +$fa-var-repeat: "\f01e"; +$fa-var-reply: "\f112"; +$fa-var-reply-all: "\f122"; +$fa-var-resistance: "\f1d0"; +$fa-var-retweet: "\f079"; +$fa-var-rmb: "\f157"; +$fa-var-road: "\f018"; +$fa-var-rocket: "\f135"; +$fa-var-rotate-left: "\f0e2"; +$fa-var-rotate-right: "\f01e"; +$fa-var-rouble: "\f158"; +$fa-var-rss: "\f09e"; +$fa-var-rss-square: "\f143"; +$fa-var-rub: "\f158"; +$fa-var-ruble: "\f158"; +$fa-var-rupee: "\f156"; +$fa-var-s15: "\f2cd"; +$fa-var-safari: "\f267"; +$fa-var-save: "\f0c7"; +$fa-var-scissors: "\f0c4"; +$fa-var-scribd: "\f28a"; +$fa-var-search: "\f002"; +$fa-var-search-minus: "\f010"; +$fa-var-search-plus: "\f00e"; +$fa-var-sellsy: "\f213"; +$fa-var-send: "\f1d8"; +$fa-var-send-o: "\f1d9"; +$fa-var-server: "\f233"; +$fa-var-share: "\f064"; +$fa-var-share-alt: "\f1e0"; +$fa-var-share-alt-square: "\f1e1"; +$fa-var-share-square: "\f14d"; +$fa-var-share-square-o: "\f045"; +$fa-var-shekel: "\f20b"; +$fa-var-sheqel: "\f20b"; +$fa-var-shield: "\f132"; +$fa-var-ship: "\f21a"; +$fa-var-shirtsinbulk: "\f214"; +$fa-var-shopping-bag: "\f290"; +$fa-var-shopping-basket: "\f291"; +$fa-var-shopping-cart: "\f07a"; +$fa-var-shower: "\f2cc"; +$fa-var-sign-in: "\f090"; +$fa-var-sign-language: "\f2a7"; +$fa-var-sign-out: "\f08b"; +$fa-var-signal: "\f012"; +$fa-var-signing: "\f2a7"; +$fa-var-simplybuilt: "\f215"; +$fa-var-sitemap: "\f0e8"; +$fa-var-skyatlas: "\f216"; +$fa-var-skype: "\f17e"; +$fa-var-slack: "\f198"; +$fa-var-sliders: "\f1de"; +$fa-var-slideshare: "\f1e7"; +$fa-var-smile-o: "\f118"; +$fa-var-snapchat: "\f2ab"; +$fa-var-snapchat-ghost: "\f2ac"; +$fa-var-snapchat-square: "\f2ad"; +$fa-var-snowflake-o: "\f2dc"; +$fa-var-soccer-ball-o: "\f1e3"; +$fa-var-sort: "\f0dc"; +$fa-var-sort-alpha-asc: "\f15d"; +$fa-var-sort-alpha-desc: "\f15e"; +$fa-var-sort-amount-asc: "\f160"; +$fa-var-sort-amount-desc: "\f161"; +$fa-var-sort-asc: "\f0de"; +$fa-var-sort-desc: "\f0dd"; +$fa-var-sort-down: "\f0dd"; +$fa-var-sort-numeric-asc: "\f162"; +$fa-var-sort-numeric-desc: "\f163"; +$fa-var-sort-up: "\f0de"; +$fa-var-soundcloud: "\f1be"; +$fa-var-space-shuttle: "\f197"; +$fa-var-spinner: "\f110"; +$fa-var-spoon: "\f1b1"; +$fa-var-spotify: "\f1bc"; +$fa-var-square: "\f0c8"; +$fa-var-square-o: "\f096"; +$fa-var-stack-exchange: "\f18d"; +$fa-var-stack-overflow: "\f16c"; +$fa-var-star: "\f005"; +$fa-var-star-half: "\f089"; +$fa-var-star-half-empty: "\f123"; +$fa-var-star-half-full: "\f123"; +$fa-var-star-half-o: "\f123"; +$fa-var-star-o: "\f006"; +$fa-var-steam: "\f1b6"; +$fa-var-steam-square: "\f1b7"; +$fa-var-step-backward: "\f048"; +$fa-var-step-forward: "\f051"; +$fa-var-stethoscope: "\f0f1"; +$fa-var-sticky-note: "\f249"; +$fa-var-sticky-note-o: "\f24a"; +$fa-var-stop: "\f04d"; +$fa-var-stop-circle: "\f28d"; +$fa-var-stop-circle-o: "\f28e"; +$fa-var-street-view: "\f21d"; +$fa-var-strikethrough: "\f0cc"; +$fa-var-stumbleupon: "\f1a4"; +$fa-var-stumbleupon-circle: "\f1a3"; +$fa-var-subscript: "\f12c"; +$fa-var-subway: "\f239"; +$fa-var-suitcase: "\f0f2"; +$fa-var-sun-o: "\f185"; +$fa-var-superpowers: "\f2dd"; +$fa-var-superscript: "\f12b"; +$fa-var-support: "\f1cd"; +$fa-var-table: "\f0ce"; +$fa-var-tablet: "\f10a"; +$fa-var-tachometer: "\f0e4"; +$fa-var-tag: "\f02b"; +$fa-var-tags: "\f02c"; +$fa-var-tasks: "\f0ae"; +$fa-var-taxi: "\f1ba"; +$fa-var-telegram: "\f2c6"; +$fa-var-television: "\f26c"; +$fa-var-tencent-weibo: "\f1d5"; +$fa-var-terminal: "\f120"; +$fa-var-text-height: "\f034"; +$fa-var-text-width: "\f035"; +$fa-var-th: "\f00a"; +$fa-var-th-large: "\f009"; +$fa-var-th-list: "\f00b"; +$fa-var-themeisle: "\f2b2"; +$fa-var-thermometer: "\f2c7"; +$fa-var-thermometer-0: "\f2cb"; +$fa-var-thermometer-1: "\f2ca"; +$fa-var-thermometer-2: "\f2c9"; +$fa-var-thermometer-3: "\f2c8"; +$fa-var-thermometer-4: "\f2c7"; +$fa-var-thermometer-empty: "\f2cb"; +$fa-var-thermometer-full: "\f2c7"; +$fa-var-thermometer-half: "\f2c9"; +$fa-var-thermometer-quarter: "\f2ca"; +$fa-var-thermometer-three-quarters: "\f2c8"; +$fa-var-thumb-tack: "\f08d"; +$fa-var-thumbs-down: "\f165"; +$fa-var-thumbs-o-down: "\f088"; +$fa-var-thumbs-o-up: "\f087"; +$fa-var-thumbs-up: "\f164"; +$fa-var-ticket: "\f145"; +$fa-var-times: "\f00d"; +$fa-var-times-circle: "\f057"; +$fa-var-times-circle-o: "\f05c"; +$fa-var-times-rectangle: "\f2d3"; +$fa-var-times-rectangle-o: "\f2d4"; +$fa-var-tint: "\f043"; +$fa-var-toggle-down: "\f150"; +$fa-var-toggle-left: "\f191"; +$fa-var-toggle-off: "\f204"; +$fa-var-toggle-on: "\f205"; +$fa-var-toggle-right: "\f152"; +$fa-var-toggle-up: "\f151"; +$fa-var-trademark: "\f25c"; +$fa-var-train: "\f238"; +$fa-var-transgender: "\f224"; +$fa-var-transgender-alt: "\f225"; +$fa-var-trash: "\f1f8"; +$fa-var-trash-o: "\f014"; +$fa-var-tree: "\f1bb"; +$fa-var-trello: "\f181"; +$fa-var-tripadvisor: "\f262"; +$fa-var-trophy: "\f091"; +$fa-var-truck: "\f0d1"; +$fa-var-try: "\f195"; +$fa-var-tty: "\f1e4"; +$fa-var-tumblr: "\f173"; +$fa-var-tumblr-square: "\f174"; +$fa-var-turkish-lira: "\f195"; +$fa-var-tv: "\f26c"; +$fa-var-twitch: "\f1e8"; +$fa-var-twitter: "\f099"; +$fa-var-twitter-square: "\f081"; +$fa-var-umbrella: "\f0e9"; +$fa-var-underline: "\f0cd"; +$fa-var-undo: "\f0e2"; +$fa-var-universal-access: "\f29a"; +$fa-var-university: "\f19c"; +$fa-var-unlink: "\f127"; +$fa-var-unlock: "\f09c"; +$fa-var-unlock-alt: "\f13e"; +$fa-var-unsorted: "\f0dc"; +$fa-var-upload: "\f093"; +$fa-var-usb: "\f287"; +$fa-var-usd: "\f155"; +$fa-var-user: "\f007"; +$fa-var-user-circle: "\f2bd"; +$fa-var-user-circle-o: "\f2be"; +$fa-var-user-md: "\f0f0"; +$fa-var-user-o: "\f2c0"; +$fa-var-user-plus: "\f234"; +$fa-var-user-secret: "\f21b"; +$fa-var-user-times: "\f235"; +$fa-var-users: "\f0c0"; +$fa-var-vcard: "\f2bb"; +$fa-var-vcard-o: "\f2bc"; +$fa-var-venus: "\f221"; +$fa-var-venus-double: "\f226"; +$fa-var-venus-mars: "\f228"; +$fa-var-viacoin: "\f237"; +$fa-var-viadeo: "\f2a9"; +$fa-var-viadeo-square: "\f2aa"; +$fa-var-video-camera: "\f03d"; +$fa-var-vimeo: "\f27d"; +$fa-var-vimeo-square: "\f194"; +$fa-var-vine: "\f1ca"; +$fa-var-vk: "\f189"; +$fa-var-volume-control-phone: "\f2a0"; +$fa-var-volume-down: "\f027"; +$fa-var-volume-off: "\f026"; +$fa-var-volume-up: "\f028"; +$fa-var-warning: "\f071"; +$fa-var-wechat: "\f1d7"; +$fa-var-weibo: "\f18a"; +$fa-var-weixin: "\f1d7"; +$fa-var-whatsapp: "\f232"; +$fa-var-wheelchair: "\f193"; +$fa-var-wheelchair-alt: "\f29b"; +$fa-var-wifi: "\f1eb"; +$fa-var-wikipedia-w: "\f266"; +$fa-var-window-close: "\f2d3"; +$fa-var-window-close-o: "\f2d4"; +$fa-var-window-maximize: "\f2d0"; +$fa-var-window-minimize: "\f2d1"; +$fa-var-window-restore: "\f2d2"; +$fa-var-windows: "\f17a"; +$fa-var-won: "\f159"; +$fa-var-wordpress: "\f19a"; +$fa-var-wpbeginner: "\f297"; +$fa-var-wpexplorer: "\f2de"; +$fa-var-wpforms: "\f298"; +$fa-var-wrench: "\f0ad"; +$fa-var-xing: "\f168"; +$fa-var-xing-square: "\f169"; +$fa-var-y-combinator: "\f23b"; +$fa-var-y-combinator-square: "\f1d4"; +$fa-var-yahoo: "\f19e"; +$fa-var-yc: "\f23b"; +$fa-var-yc-square: "\f1d4"; +$fa-var-yelp: "\f1e9"; +$fa-var-yen: "\f157"; +$fa-var-yoast: "\f2b1"; +$fa-var-youtube: "\f167"; +$fa-var-youtube-play: "\f16a"; +$fa-var-youtube-square: "\f166"; + diff --git a/app/assets/stylesheets/vendor/font_awesome/font-awesome.scss b/app/assets/stylesheets/vendor/font_awesome/font-awesome.scss new file mode 100644 index 00000000000..abab424ee54 --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/font-awesome.scss @@ -0,0 +1,18 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables"; +@import "mixins"; +// @import "path"; +@import "core"; +@import "larger"; +@import "fixed-width"; +@import "list"; +@import "bordered-pulled"; +@import "animated"; +@import "rotated-flipped"; +@import "stacked"; +@import "icons"; +@import "screen-reader"; diff --git a/app/assets/stylesheets/wizard.scss b/app/assets/stylesheets/wizard.scss index 528111389c4..678fa956862 100644 --- a/app/assets/stylesheets/wizard.scss +++ b/app/assets/stylesheets/wizard.scss @@ -1,9 +1,9 @@ @import "vendor/normalize"; +@import "vendor/font_awesome/font-awesome"; @import "vendor/sweetalert"; @import "common/foundation/colors"; @import "common/foundation/variables"; @import "common/select-kit/*"; -@import "common/components/svg"; body.wizard { background-color: #fff; diff --git a/app/controllers/svg_sprite_controller.rb b/app/controllers/svg_sprite_controller.rb deleted file mode 100644 index 6d4000d794b..00000000000 --- a/app/controllers/svg_sprite_controller.rb +++ /dev/null @@ -1,23 +0,0 @@ -class SvgSpriteController < ApplicationController - skip_before_action :preload_json, :redirect_to_login_if_required, :check_xhr, :verify_authenticity_token, only: [:show] - - def show - - no_cookies - - RailsMultisite::ConnectionManagement.with_hostname(params[:hostname]) do - - if SvgSprite.version != params[:version] - return redirect_to path(SvgSprite.path) - end - - svg_sprite = SvgSprite.bundle - - response.headers["Last-Modified"] = 10.years.ago.httpdate - response.headers["Content-Length"] = svg_sprite.bytesize.to_s - immutable_for 1.year - - render plain: svg_sprite, disposition: nil, content_type: 'image/svg+xml' - end - end -end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index df0409f2bb2..5a6998c6e3f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -423,13 +423,8 @@ module ApplicationHelper asset_version: Discourse.assets_digest, disable_custom_css: loading_admin?, highlight_js_path: HighlightJs.path, - svg_sprite_path: SvgSprite.path, } - if Rails.env.development? - setup_data[:svg_icon_list] = SvgSprite.all_icons - end - if guardian.can_enable_safe_mode? && params["safe_mode"] setup_data[:safe_mode] = normalized_safe_mode end diff --git a/app/models/group.rb b/app/models/group.rb index 19b7a82eef2..5c8d1376e3e 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -49,7 +49,7 @@ class Group < ActiveRecord::Base validate :automatic_membership_email_domains_format_validator validate :incoming_email_validator validate :can_allow_membership_requests, if: :allow_membership_requests - validates :flair_url, url: true, if: Proc.new { |g| g.flair_url && g.flair_url.exclude?('fa-') } + validates :flair_url, url: true, if: Proc.new { |g| g.flair_url && g.flair_url[0, 3] != 'fa-' } validate :validate_grant_trust_level, if: :will_save_change_to_grant_trust_level? AUTO_GROUPS = { diff --git a/app/views/common/_special_font_face.html.erb b/app/views/common/_special_font_face.html.erb new file mode 100644 index 00000000000..50fc5d96a87 --- /dev/null +++ b/app/views/common/_special_font_face.html.erb @@ -0,0 +1,21 @@ +<%# + The fonts are loaded outside of the stylesheet so that we can dynamically change the path. + This is to get around CDN caching on the Origin: + + https://forums.aws.amazon.com/thread.jspa?threadID=114646 + + Also added a cache breaker there in case we have breaking config changes + &1 was added last when the nginx sample config changed +%> + +<% font_domain = "#{Discourse.base_url_no_prefix}&2".html_safe %> +<% woff2_url = "#{asset_path("fontawesome-webfont.woff2")}?#{font_domain}&v=4.7.0".html_safe %> + + + diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 0e8d8b70e97..459c778d059 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -48,6 +48,7 @@ <%- end %> <%= render partial: "common/discourse_stylesheet" %> + <%= render partial: "common/special_font_face" %> <%= yield :head %> diff --git a/app/views/layouts/finish_installation.html.erb b/app/views/layouts/finish_installation.html.erb index 91df8077989..8fc25c08eb9 100644 --- a/app/views/layouts/finish_installation.html.erb +++ b/app/views/layouts/finish_installation.html.erb @@ -1,6 +1,7 @@ <%= discourse_stylesheet_link_tag 'wizard', theme_ids: nil %> + <%= render partial: "common/special_font_face" %> <%= preload_script 'ember_jquery' %> <%= preload_script 'wizard-vendor' %> <%= render partial: "layouts/head" %> diff --git a/app/views/layouts/no_ember.html.erb b/app/views/layouts/no_ember.html.erb index 29f0f52a6db..8b68e33910f 100644 --- a/app/views/layouts/no_ember.html.erb +++ b/app/views/layouts/no_ember.html.erb @@ -5,6 +5,7 @@ <%= content_for?(:title) ? yield(:title) : SiteSetting.title %> <%= render partial: "layouts/head" %> + <%= render partial: "common/special_font_face" %> <%= render partial: "common/discourse_stylesheet" %> <%= discourse_csrf_tags %> diff --git a/app/views/wizard/index.html.erb b/app/views/wizard/index.html.erb index 9ccc5e3b15a..ea5809bada5 100644 --- a/app/views/wizard/index.html.erb +++ b/app/views/wizard/index.html.erb @@ -5,6 +5,7 @@ <%= preload_script "locales/#{I18n.locale}" %> <%= preload_script 'wizard-vendor' %> <%= preload_script 'wizard-application' %> + <%= render partial: "common/special_font_face" %> <%= csrf_meta_tags %> @@ -15,12 +16,5 @@
<%= preload_script 'wizard-start' %> - - - diff --git a/config/application.rb b/config/application.rb index f46d132e1f7..4a64cead119 100644 --- a/config/application.rb +++ b/config/application.rb @@ -56,9 +56,8 @@ module Discourse require_dependency 'lib/es6_module_transpiler/rails' require_dependency 'lib/js_locale_helper' - # tiny files needed by site settings + # tiny file needed by site settings require_dependency 'lib/highlight_js/highlight_js' - require_dependency 'lib/svg_sprite/svg_sprite' # mocha hates us, active_support/testing/mochaing.rb line 2 is requiring the wrong # require, patched in source, on upgrade remove this diff --git a/config/initializers/006-mini_profiler.rb b/config/initializers/006-mini_profiler.rb index 4af6edb08fc..737e3bbb0dc 100644 --- a/config/initializers/006-mini_profiler.rb +++ b/config/initializers/006-mini_profiler.rb @@ -32,7 +32,6 @@ if defined?(Rack::MiniProfiler) /\/letter_avatar\//, /\/letter_avatar_proxy\//, /\/highlight-js\//, - /\/svg-sprite\//, /qunit/, /srv\/status/, /commits-widget/, diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 59012a6fa03..e3d2da193c8 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -1744,7 +1744,7 @@ en: share_anonymized_statistics: "Share anonymized usage statistics." auto_handle_queued_age: "Automatically handle records that are waiting to be reviewed after this many days. Flags will be ignored. Queued posts and users will be rejected. Set to 0 to disable this feature." - svg_icon_subset: "Add additional FontAwesome 5 icons that you would like to include in your assets. Use prefix 'far-' for regular icons and 'fab-' for brand icons. " + max_prints_per_hour_per_user: "Maximum number of /print page impressions (set to 0 to disable)" full_name_required: "Full name is a required field of a user's profile." diff --git a/config/routes.rb b/config/routes.rb index 0994c0eccc1..d3cebd11eed 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -291,7 +291,6 @@ Discourse::Application.routes.draw do post "preview" => "badges#preview" end end - end # admin namespace get "email_preferences" => "email#preferences_redirect", :as => "email_preferences_redirect" @@ -447,8 +446,6 @@ Discourse::Application.routes.draw do # in most production settings this is bypassed get "letter_avatar_proxy/:version/letter/:letter/:color/:size.png" => "user_avatars#show_proxy_letter" - get "svg-sprite/:hostname/:version.svg" => "svg_sprite#show", format: false, constraints: { hostname: /[\w\.-]+/, version: /\h{40}/ } - get "highlight-js/:hostname/:version.js" => "highlight_js#show", format: false, constraints: { hostname: /[\w\.-]+/ } get "stylesheets/:name.css.map" => "stylesheets#show_source_map", constraints: { name: /[-a-z0-9_]+/ } diff --git a/config/site_settings.yml b/config/site_settings.yml index e12d9813a06..3c5e32d4610 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -1680,12 +1680,6 @@ uncategorized: default: 60 min: 0 - svg_icon_subset: - default: '' - type: 'list' - list_type: 'compact' - client: true - user_preferences: default_email_digest_frequency: enum: 'DigestEmailSiteSetting' diff --git a/lib/discourse_plugin_registry.rb b/lib/discourse_plugin_registry.rb index 0a641625b5d..88197b0abd7 100644 --- a/lib/discourse_plugin_registry.rb +++ b/lib/discourse_plugin_registry.rb @@ -15,7 +15,6 @@ class DiscoursePluginRegistry attr_writer :handlebars attr_writer :serialized_current_user_fields attr_writer :seed_data - attr_writer :svg_icons attr_writer :locales attr_accessor :custom_html @@ -60,10 +59,6 @@ class DiscoursePluginRegistry @sass_variables ||= Set.new end - def svg_icons - @svg_icons ||= [] - end - def handlebars @handlebars ||= Set.new end @@ -110,10 +105,6 @@ class DiscoursePluginRegistry self.service_workers << filename end - def self.register_svg_icon(icon) - self.svg_icons << icon - end - def register_css(filename) self.class.stylesheets << filename end diff --git a/lib/plugin/instance.rb b/lib/plugin/instance.rb index 37593438846..ac575b1c72b 100644 --- a/lib/plugin/instance.rb +++ b/lib/plugin/instance.rb @@ -357,10 +357,6 @@ class Plugin::Instance javascripts << js end - def register_svg_icon(icon) - DiscoursePluginRegistry.register_svg_icon(SvgSprite.process(icon)) - end - # @option opts [String] :name # @option opts [String] :nativeName # @option opts [String] :fallbackLocale diff --git a/lib/svg_sprite/svg_sprite.rb b/lib/svg_sprite/svg_sprite.rb deleted file mode 100644 index 9038b626987..00000000000 --- a/lib/svg_sprite/svg_sprite.rb +++ /dev/null @@ -1,232 +0,0 @@ -# frozen_string_literal: true - -module SvgSprite - SVG_ICONS ||= Set.new([ - "anchor", - "angle-double-down", - "angle-double-up", - "angle-down", - "angle-up", - "archive", - "arrow-up", - "at", - "backward", - "ban", - "bars", - "bed", - "bold", - "book", - "bookmark", - "briefcase", - "calendar-alt", - "caret-down", - "caret-left", - "caret-right", - "caret-up", - "certificate", - "chart-bar", - "chart-pie", - "check", - "chevron-down", - "chevron-right", - "chevron-up", - "circle", - "code", - "cog", - "columns", - "comment", - "copy", - "crosshairs", - "cube", - "desktop", - "download", - "ellipsis-h", - "ellipsis-v", - "envelope", - "envelope-square", - "exclamation-circle", - "exclamation-triangle", - "external-link-alt", - "expand", - "fab-apple", - "fab-facebook-f", - "fab-facebook-square", - "fab-github", - "fab-instagram", - "fab-twitter", - "fab-twitter-square", - "fab-yahoo", - "far-bell", - "far-bell-slash", - "far-calendar-plus", - "far-circle", - "far-clipboard", - "far-clock", - "far-comment", - "far-dot-circle", - "far-edit", - "far-envelope", - "far-eye", - "far-eye-slash", - "far-file-alt", - "far-frown", - "far-heart", - "far-image", - "far-list-alt", - "far-smile", - "far-square", - "far-sun", - "far-thumbs-down", - "far-thumbs-up", - "far-trash-alt", - "fast-backward", - "fast-forward", - "file", - "file-alt", - "flag", - "folder", - "folder-open", - "forward", - "gavel", - "globe", - "globe-americas", - "hand-point-right", - "heading", - "heart", - "info-circle", - "italic", - "key", - "link", - "list", - "list-ol", - "list-ul", - "lock", - "magic", - "microphone-slash", - "minus", - "mobile-alt", - "paint-brush", - "pencil-alt", - "plug", - "plus", - "plus-circle", - "plus-square", - "power-off", - "question", - "question-circle", - "quote-left", - "quote-right", - "reply", - "search", - "share", - "shield-alt", - "signal", - "sign-out-alt", - "step-backward", - "step-forward", - "sync", - "table", - "tasks", - "thumbtack", - "times", - "times-circle", - "trash-alt", - "undo", - "unlock", - "upload", - "user", - "user-plus", - "users", - "wrench" - ]) - - FA_ICON_MAP = { 'far fa-' => 'far-', 'fab fa-' => 'fab-', 'fa-' => '' } - - def self.all_icons - icons = SVG_ICONS.dup - icons.merge(SiteSetting.svg_icon_subset.split('|')) - icons.merge(plugin_icons).merge(badge_icons).merge(group_icons).merge(theme_icons) - end - - def self.bundle - require 'nokogiri' - - icons = all_icons - - @svg_subset = """ - - - """.dup - - Dir["#{Rails.root}/vendor/assets/svg-icons/fontawesome/*.svg"].each do |fname| - svg_file = Nokogiri::XML(File.open(fname)) do |config| - config.options = Nokogiri::XML::ParseOptions::NOBLANKS - end - - svg_filename = "#{File.basename(fname, ".svg")}" - - svg_file.css('symbol').each do |sym| - icon_id = sym.attr('id') - - case svg_filename - when "regular" - icon_id = icon_id.prepend('far-') - when "brands" - icon_id = icon_id.prepend('fab-') - end - - if icons.include? icon_id - sym.attributes['id'].value = icon_id - sym.css('title').each { |t| t.remove } - @svg_subset << sym.to_xml - end - end - end - - @svg_subset << '' - end - - def self.version - icon_subset = all_icons.sort.join('|') - (@svg_subset_cache ||= {})[icon_subset] ||= - Digest::SHA1.hexdigest(icon_subset) - end - - def self.path - "/svg-sprite/#{Discourse.current_hostname}/#{version}.svg" - end - - def self.plugin_icons - DiscoursePluginRegistry.svg_icons.each { |icon| process(icon) } - end - - def self.badge_icons - Badge.all.pluck(:icon).uniq.each { |icon| process(icon) } - end - - def self.group_icons - Group.where("flair_url LIKE '%fa-%'").pluck(:flair_url).uniq.each { |icon| process(icon) } - end - - def self.theme_icons - theme_icon_settings = [] - - Theme.all.each do |theme| - theme&.included_settings&.each do |name, value| - if name.to_s.include? "_icon" - theme_icon_settings |= [value] - end - end - end - - theme_icon_settings.each { |i| process(i) } - end - - def self.process(icon_name) - FA_ICON_MAP.each { |k, v| icon_name.sub!(k, v) } - icon_name - end -end diff --git a/lib/tasks/svg_icons.rake b/lib/tasks/svg_icons.rake deleted file mode 100644 index 9ce0b48a8aa..00000000000 --- a/lib/tasks/svg_icons.rake +++ /dev/null @@ -1,38 +0,0 @@ -def vendor_svgs - "#{Rails.root}/vendor/assets/svg-icons" -end - -def library_src - "#{Rails.root}/node_modules" -end - -task 'svgicons:update' do - - yarn = system("yarn install") - abort('Unable to run "yarn install"') unless yarn - - dependencies = [ - { - source: '@fortawesome/fontawesome-free/sprites', - destination: 'fontawesome', - } - ] - - start = Time.now - - dependencies.each do |f| - src = "#{library_src}/#{f[:source]}" - - unless f[:destination] - filename = f[:source].split("/").last - else - filename = f[:destination] - end - - dest = "#{vendor_svgs}/#{filename}" - - FileUtils.cp_r(src, dest) - end - - STDERR.puts "Completed copying dependencies: #{(Time.now - start).round(2)} secs" -end diff --git a/package.json b/package.json index 571f6008495..ae98ed4f9dc 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ "author": "Discourse", "license": "MIT", "dependencies": { - "@fortawesome/fontawesome-free": "^5.4.1", "ace-builds": "1.4.1", "bootbox": "3.2.0", "chart.js": "2.7.2", @@ -16,9 +15,9 @@ "jquery": "3.3.1", "jquery-color": "1.0.0", "jquery-resize": "https://github.com/cowboy/jquery-resize/", - "jquery-tags-input": "1.3.5", "jquery.autoellipsis": "https://github.com/pvdspek/jquery.autoellipsis", "jquery.cookie": "1.4.1", + "jquery-tags-input": "1.3.5", "magnific-popup": "1.1.0", "markdown-it": "8.4.1", "mousetrap": "https://github.com/discourse/mousetrap#firefox-alt-key", diff --git a/plugins/discourse-local-dates/assets/javascripts/discourse-local-dates.js b/plugins/discourse-local-dates/assets/javascripts/discourse-local-dates.js index 5eead97840a..aad239019cf 100644 --- a/plugins/discourse-local-dates/assets/javascripts/discourse-local-dates.js +++ b/plugins/discourse-local-dates/assets/javascripts/discourse-local-dates.js @@ -89,7 +89,7 @@ } var html = ""; - html += ""; + html += ""; html += ""; html += ""; diff --git a/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss b/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss index b68eb5712d6..79549c7b81f 100644 --- a/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss +++ b/plugins/discourse-local-dates/assets/stylesheets/common/discourse-local-dates.scss @@ -7,7 +7,7 @@ cursor: pointer; border-bottom: 1px dashed $primary-medium; - .d-icon { + .d-icon-globe { margin-right: 0.25em; color: $primary; } diff --git a/plugins/poll/assets/javascripts/discourse/templates/modal/poll-ui-builder.hbs b/plugins/poll/assets/javascripts/discourse/templates/modal/poll-ui-builder.hbs index 223e72e88c7..04eb9a61ea3 100644 --- a/plugins/poll/assets/javascripts/discourse/templates/modal/poll-ui-builder.hbs +++ b/plugins/poll/assets/javascripts/discourse/templates/modal/poll-ui-builder.hbs @@ -73,5 +73,5 @@ {{/d-modal-body}} diff --git a/plugins/poll/assets/javascripts/initializers/add-poll-ui-builder.js.es6 b/plugins/poll/assets/javascripts/initializers/add-poll-ui-builder.js.es6 index 6aeb6ee3e0a..a9e80394e4c 100644 --- a/plugins/poll/assets/javascripts/initializers/add-poll-ui-builder.js.es6 +++ b/plugins/poll/assets/javascripts/initializers/add-poll-ui-builder.js.es6 @@ -32,7 +32,7 @@ function initializePollUIBuilder(api) { api.addToolbarPopupMenuOptionsCallback(function() { return { action: "showPollBuilder", - icon: "chart-bar", + icon: "bar-chart-o", label: "poll.ui_builder.title", condition: "canBuildPoll" }; diff --git a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 index 39a5f307140..2925a22d985 100644 --- a/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 +++ b/plugins/poll/assets/javascripts/widgets/discourse-poll.js.es6 @@ -39,9 +39,9 @@ createWidget("discourse-poll-option", { const chosen = vote.indexOf(option.id) !== -1; if (attrs.isMultiple) { - result.push(iconNode(chosen ? "far-check-square" : "far-square")); + result.push(iconNode(chosen ? "check-square-o" : "square-o")); } else { - result.push(iconNode(chosen ? "far-dot-circle" : "far-circle")); + result.push(iconNode(chosen ? "dot-circle-o" : "circle-o")); } result.push(" "); result.push(optionHtml(option)); diff --git a/plugins/poll/assets/stylesheets/desktop/poll.scss b/plugins/poll/assets/stylesheets/desktop/poll.scss index 42e2a3ac6f2..e6ac930025a 100644 --- a/plugins/poll/assets/stylesheets/desktop/poll.scss +++ b/plugins/poll/assets/stylesheets/desktop/poll.scss @@ -47,20 +47,16 @@ div.poll { .poll { li[data-poll-option-id]:before { + font-family: FontAwesome; + content: "\f10c"; + margin-right: 0.25em; position: relative; vertical-align: baseline; - border: 2px solid $primary; - border-radius: 50%; - display: inline-block; - margin-right: 0.5em; - width: 12px; - height: 12px; - content: ""; } &[data-poll-type="multiple"] { li[data-poll-option-id]:before { - border-radius: 3px; + content: "\f096"; } } } diff --git a/plugins/poll/plugin.rb b/plugins/poll/plugin.rb index 5ef4465134f..21b586f98b2 100644 --- a/plugins/poll/plugin.rb +++ b/plugins/poll/plugin.rb @@ -9,8 +9,6 @@ register_asset "stylesheets/common/poll-ui-builder.scss" register_asset "stylesheets/desktop/poll.scss", :desktop register_asset "stylesheets/mobile/poll.scss", :mobile -register_svg_icon "far fa-check-square" - enabled_site_setting :poll_enabled hide_plugin if self.respond_to?(:hide_plugin) diff --git a/plugins/poll/test/javascripts/widgets/discourse-poll-option-test.js.es6 b/plugins/poll/test/javascripts/widgets/discourse-poll-option-test.js.es6 index 739452c8913..751607e3730 100644 --- a/plugins/poll/test/javascripts/widgets/discourse-poll-option-test.js.es6 +++ b/plugins/poll/test/javascripts/widgets/discourse-poll-option-test.js.es6 @@ -14,7 +14,7 @@ widgetTest("single, not selected", { }, test(assert) { - assert.ok(find("li .d-icon-far-circle:eq(0)").length === 1); + assert.ok(find("li .d-icon-circle-o:eq(0)").length === 1); } }); @@ -27,7 +27,7 @@ widgetTest("single, selected", { }, test(assert) { - assert.ok(find("li .d-icon-far-dot-circle:eq(0)").length === 1); + assert.ok(find("li .d-icon-dot-circle-o:eq(0)").length === 1); } }); @@ -43,7 +43,7 @@ widgetTest("multi, not selected", { }, test(assert) { - assert.ok(find("li .d-icon-far-square:eq(0)").length === 1); + assert.ok(find("li .d-icon-square-o:eq(0)").length === 1); } }); @@ -59,6 +59,6 @@ widgetTest("multi, selected", { }, test(assert) { - assert.ok(find("li .d-icon-far-check-square:eq(0)").length === 1); + assert.ok(find("li .d-icon-check-square-o:eq(0)").length === 1); } }); diff --git a/spec/components/svg_sprite/svg_sprite_spec.rb b/spec/components/svg_sprite/svg_sprite_spec.rb deleted file mode 100644 index 0a6eebaf453..00000000000 --- a/spec/components/svg_sprite/svg_sprite_spec.rb +++ /dev/null @@ -1,69 +0,0 @@ -require 'rails_helper' - -describe SvgSprite do - it 'can generate a bundle' do - bundle = SvgSprite.bundle - expect(bundle).to match(/heart/) - expect(bundle).to match(/angle-double-down/) - end - - it 'can get a consistent version string' do - version1 = SvgSprite.version - version2 = SvgSprite.version - - expect(version1).to eq(version2) - end - - it 'includes Font Awesome 4.7 icons from badges' do - Fabricate(:badge, name: 'Custom Icon Badge', icon: 'fa-gamepad') - expect(SvgSprite.bundle).to match(/gamepad/) - end - - it 'includes Font Awesome 5 icons from badges' do - Fabricate(:badge, name: 'Custom Icon Badge', icon: 'far fa-building') - expect(SvgSprite.bundle).to match(/building/) - end - - it 'includes icons defined in themes' do - theme = Fabricate(:theme) - theme.set_field(target: :settings, name: :yaml, value: "custom_icon: gas-pump") - theme.save! - expect(SvgSprite.bundle).to match(/gas-pump/) - - setting = theme.settings.find { |s| s.name == :custom_icon } - setting.value = 'gamepad' - expect(SvgSprite.bundle).to match(/gamepad/) - - setting = theme.settings.find { |s| s.name == :custom_icon } - setting.value = 'fab fa-bandcamp' - expect(SvgSprite.bundle).to match(/fab-bandcamp/) - - end - - it 'includes icons from SiteSettings' do - SiteSetting.svg_icon_subset = 'blender|drafting-compass|fab-bandcamp' - bundle = SvgSprite.bundle - expect(bundle).to match(/blender/) - expect(bundle).to match(/drafting-compass/) - expect(bundle).to match(/fab-bandcamp/) - expect(bundle).not_to match(/dragon/) - end - - it 'includes icons from plugins' do - DiscoursePluginRegistry.register_svg_icon('blender') - DiscoursePluginRegistry.register_svg_icon('fab fa-bandcamp') - bundle = SvgSprite.bundle - expect(bundle).to match(/blender/) - expect(bundle).to match(/fab-bandcamp/) - end - - it "includes Font Awesome 4.7 icons as group flair" do - group = Fabricate(:group, flair_url: "fa-air-freshener") - expect(SvgSprite.bundle).to match(/air-freshener/) - end - - it "includes Font Awesome 5 icons as group flair" do - group = Fabricate(:group, flair_url: "far fa-building") - expect(SvgSprite.bundle).to match(/building/) - end -end diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index 07b6d8e5ddb..a0bdc24ac80 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -820,22 +820,4 @@ describe Group do end end end - - it "allows Font Awesome 4.7 syntax as group avatar flair" do - group = Fabricate(:group) - group.flair_url = "fa-air-freshener" - group.save - - group = Group.find(group.id) - expect(group.flair_url).to eq("fa-air-freshener") - end - - it "allows Font Awesome 5 syntax as group avatar flair" do - group = Fabricate(:group) - group.flair_url = "fab fa-bandcamp" - group.save - - group = Group.find(group.id) - expect(group.flair_url).to eq("fab fa-bandcamp") - end end diff --git a/test/javascripts/acceptance/composer-actions-test.js.es6 b/test/javascripts/acceptance/composer-actions-test.js.es6 index af745854480..6c84b8778d8 100644 --- a/test/javascripts/acceptance/composer-actions-test.js.es6 +++ b/test/javascripts/acceptance/composer-actions-test.js.es6 @@ -88,7 +88,11 @@ QUnit.test("replying to post - toggle_whisper", async assert => { await composerActions.expand(); await composerActions.selectRowByValue("toggle_whisper"); - assert.ok(find(".composer-fields .whisper .d-icon-eye-slash").length === 1); + assert.ok( + find(".composer-fields .whisper") + .text() + .indexOf(I18n.t("composer.whisper")) > 0 + ); }); QUnit.test("replying to post - reply_as_new_topic", async assert => { diff --git a/test/javascripts/acceptance/composer-test.js.es6 b/test/javascripts/acceptance/composer-test.js.es6 index c1fa34b3471..34e7ae5f339 100644 --- a/test/javascripts/acceptance/composer-test.js.es6 +++ b/test/javascripts/acceptance/composer-test.js.es6 @@ -375,7 +375,9 @@ QUnit.test("Composer can toggle whispers", async assert => { ); assert.ok( - find(".composer-fields .whisper .d-icon-eye-slash").length === 1, + find(".composer-fields .whisper") + .text() + .indexOf(I18n.t("composer.whisper")) > 0, "it sets the post type to whisper" ); @@ -385,7 +387,9 @@ QUnit.test("Composer can toggle whispers", async assert => { ); assert.ok( - find(".composer-fields .whisper .d-icon-eye-slash").length === 0, + find(".composer-fields .whisper") + .text() + .indexOf(I18n.t("composer.whisper")) <= 0, "it removes the whisper mode" ); }); @@ -402,7 +406,9 @@ QUnit.test( ); assert.ok( - find(".composer-fields .whisper .d-icon-eye-slash").length === 1, + find(".composer-fields .whisper") + .text() + .indexOf(I18n.t("composer.whisper")) > 0, "it sets the post type to whisper" ); @@ -411,7 +417,9 @@ QUnit.test( await click("#create-topic"); assert.ok( - find(".composer-fields .whisper .d-icon-eye-slash").length === 0, + find(".composer-fields .whisper") + .text() + .indexOf(I18n.t("composer.whisper")) === -1, "it should reset the state of the composer's model" ); diff --git a/test/javascripts/acceptance/group-index-test.js.es6 b/test/javascripts/acceptance/group-index-test.js.es6 index 1cc9025c2b6..1ad8fee5620 100644 --- a/test/javascripts/acceptance/group-index-test.js.es6 +++ b/test/javascripts/acceptance/group-index-test.js.es6 @@ -6,7 +6,7 @@ QUnit.test("Viewing Members as anon user", async assert => { await visit("/groups/discourse"); assert.ok( - count(".avatar-flair .d-icon-adjust") === 1, + count(".avatar-flair .fa-adjust") === 1, "it displays the group's avatar flair" ); assert.ok(count(".group-members tr") > 0, "it lists group members"); diff --git a/test/javascripts/admin/components/themes-list-item-test.js.es6 b/test/javascripts/admin/components/themes-list-item-test.js.es6 index 55a50d3f69e..c08f1805b5c 100644 --- a/test/javascripts/admin/components/themes-list-item-test.js.es6 +++ b/test/javascripts/admin/components/themes-list-item-test.js.es6 @@ -11,7 +11,7 @@ componentTest("default theme", { test(assert) { assert.expect(1); - assert.equal(this.$(".d-icon-check").length, 1, "shows default theme icon"); + assert.equal(this.$(".fa-check").length, 1, "shows default theme icon"); } }); @@ -26,15 +26,11 @@ componentTest("pending updates", { test(assert) { assert.expect(1); - assert.equal( - this.$(".d-icon-refresh").length, - 1, - "shows pending update icon" - ); + assert.equal(this.$(".fa-refresh").length, 1, "shows pending update icon"); } }); -componentTest("broken theme", { +componentTest("borken theme", { template: "{{themes-list-item theme=theme}}", beforeEach() { this.set( @@ -49,7 +45,7 @@ componentTest("broken theme", { test(assert) { assert.expect(1); assert.equal( - this.$(".d-icon-exclamation-circle").length, + this.$(".fa-exclamation-circle").length, 1, "shows broken theme icon" ); diff --git a/test/javascripts/components/d-icon-test.js.es6 b/test/javascripts/components/d-icon-test.js.es6 index 902447f5f86..bcaca7f7533 100644 --- a/test/javascripts/components/d-icon-test.js.es6 +++ b/test/javascripts/components/d-icon-test.js.es6 @@ -9,10 +9,7 @@ componentTest("default", { const html = this.$() .html() .trim(); - assert.equal( - html, - '' - ); + assert.equal(html, ''); } }); @@ -25,7 +22,7 @@ componentTest("with replacement", { .trim(); assert.equal( html, - '' + '' ); } }); diff --git a/test/javascripts/widgets/avatar-flair-test.js.es6 b/test/javascripts/widgets/avatar-flair-test.js.es6 deleted file mode 100644 index 9902efc0959..00000000000 --- a/test/javascripts/widgets/avatar-flair-test.js.es6 +++ /dev/null @@ -1,36 +0,0 @@ -import { moduleForWidget, widgetTest } from "helpers/widget-test"; - -moduleForWidget("avatar-flair"); - -widgetTest("avatar flair with an icon", { - template: '{{mount-widget widget="avatar-flair" args=args}}', - beforeEach() { - this.set("args", { - primary_group_flair_url: "fa-bars", - primary_group_flair_bg_color: "CC0000", - primary_group_flair_color: "FFFFFF" - }); - }, - test(assert) { - assert.ok(this.$(".avatar-flair").length, "it has the tag"); - assert.ok(this.$("svg.d-icon-bars").length, "it has the svg icon"); - assert.equal( - this.$(".avatar-flair").attr("style"), - "background-color: #CC0000; color: #FFFFFF; ", - "it has styles" - ); - } -}); - -widgetTest("avatar flair with an image", { - template: '{{mount-widget widget="avatar-flair" args=args}}', - beforeEach() { - this.set("args", { - primary_group_flair_url: "/images/avatar.png" - }); - }, - test(assert) { - assert.ok(this.$(".avatar-flair").length, "it has the tag"); - assert.ok(this.$("svg").length === 0, "it does not have an svg icon"); - } -}); diff --git a/test/javascripts/widgets/widget-test.js.es6 b/test/javascripts/widgets/widget-test.js.es6 index c3c8ccbbc1e..0b5eba78ea0 100644 --- a/test/javascripts/widgets/widget-test.js.es6 +++ b/test/javascripts/widgets/widget-test.js.es6 @@ -217,7 +217,7 @@ widgetTest("handlebars d-icon", { }, test(assert) { - assert.equal(this.$(".d-icon-arrow-down").length, 1); + assert.equal(this.$("i.fa.fa-arrow-down").length, 1); } }); diff --git a/vendor/assets/svg-icons/fontawesome/brands.svg b/vendor/assets/svg-icons/fontawesome/brands.svg deleted file mode 100644 index 075c7be3ec6..00000000000 --- a/vendor/assets/svg-icons/fontawesome/brands.svg +++ /dev/null @@ -1,1559 +0,0 @@ - - - - - 500px - - - - Accessible Icon - - - - Accusoft - - - - Acquisitions Incorporated - - - - App.net - - - - Adversal - - - - affiliatetheme - - - - Algolia - - - - Alipay - - - - Amazon - - - - Amazon Pay - - - - Amilia - - - - Android - - - - AngelList - - - - Angry Creative - - - - Angular - - - - App Store - - - - iOS App Store - - - - Apper Systems AB - - - - Apple - - - - Apple Pay - - - - Asymmetrik, Ltd. - - - - Audible - - - - Autoprefixer - - - - avianex - - - - Aviato - - - - Amazon Web Services (AWS) - - - - Bandcamp - - - - Behance - - - - Behance Square - - - - BIMobject - - - - Bitbucket - - - - Bitcoin - - - - Bity - - - - Font Awesome Black Tie - - - - BlackBerry - - - - Blogger - - - - Blogger B - - - - Bluetooth - - - - Bluetooth - - - - BTC - - - - Büromöbel-Experte GmbH & Co. KG. - - - - BuySellAds - - - - Amazon Pay Credit Card - - - - American Express Credit Card - - - - Apple Pay Credit Card - - - - Diner's Club Credit Card - - - - Discover Credit Card - - - - JCB Credit Card - - - - MasterCard Credit Card - - - - Paypal Credit Card - - - - Stripe Credit Card - - - - Visa Credit Card - - - - Centercode - - - - Chrome - - - - cloudscale.ch - - - - Cloudsmith - - - - cloudversify - - - - Codepen - - - - Codie Pie - - - - Connect Develop - - - - Contao - - - - cPanel - - - - Creative Commons - - - - Creative Commons Attribution - - - - Creative Commons Noncommercial - - - - Creative Commons Noncommercial (Euro Sign) - - - - Creative Commons Noncommercial (Yen Sign) - - - - Creative Commons No Derivative Works - - - - Creative Commons Public Domain - - - - Creative Commons Public Domain Alternate - - - - Creative Commons Remix - - - - Creative Commons Share Alike - - - - Creative Commons Sampling - - - - Creative Commons Sampling + - - - - Creative Commons Share - - - - Creative Commons CC0 - - - - Critical Role - - - - CSS 3 Logo - - - - Alternate CSS3 Logo - - - - Cuttlefish - - - - Dungeons & Dragons - - - - DashCube - - - - Delicious Logo - - - - deploy.dog - - - - Deskpro - - - - DEV - - - - deviantART - - - - Digg Logo - - - - Digital Ocean - - - - Discord - - - - Discourse - - - - DocHub - - - - Docker - - - - Draft2digital - - - - Dribbble - - - - Dribbble Square - - - - Dropbox - - - - Drupal Logo - - - - Dyalog - - - - Earlybirds - - - - eBay - - - - Edge Browser - - - - Elementor - - - - Ello - - - - Ember - - - - Galactic Empire - - - - Envira Gallery - - - - Erlang - - - - Ethereum - - - - Etsy - - - - ExpeditedSSL - - - - Facebook - - - - Facebook F - - - - Facebook Messenger - - - - Facebook Square - - - - Fantasy Flight-games - - - - Firefox - - - - First Order - - - - Alternate First Order - - - - firstdraft - - - - Flickr - - - - Flipboard - - - - Fly - - - - Font Awesome - - - - Alternate Font Awesome - - - - Font Awesome Flag - - - - Font Awesome Full Logo - - - - Fonticons - - - - Fonticons Fi - - - - Fort Awesome - - - - Alternate Fort Awesome - - - - Forumbee - - - - Foursquare - - - - Free Code Camp - - - - FreeBSD - - - - Fulcrum - - - - Galactic Republic - - - - Galactic Senate - - - - Get Pocket - - - - GG Currency - - - - GG Currency Circle - - - - Git - - - - Git Square - - - - GitHub - - - - Alternate GitHub - - - - GitHub Square - - - - GitKraken - - - - GitLab - - - - Gitter - - - - Glide - - - - Glide G - - - - Gofore - - - - Goodreads - - - - Goodreads G - - - - Google Logo - - - - Google Drive - - - - Google Play - - - - Google Plus - - - - Google Plus G - - - - Google Plus Square - - - - Google Wallet - - - - Gratipay (Gittip) - - - - Grav - - - - Gripfire, Inc. - - - - Grunt - - - - Gulp - - - - Hacker News - - - - Hacker News Square - - - - Hackerrank - - - - Hips - - - - HireAHelper - - - - Hooli - - - - Hornbill - - - - Hotjar - - - - Houzz - - - - HTML 5 Logo - - - - HubSpot - - - - IMDB - - - - Instagram - - - - Internet-explorer - - - - ioxhost - - - - iTunes - - - - Itunes Note - - - - Java - - - - Jedi Order - - - - Jenkis - - - - Joget - - - - Joomla Logo - - - - JavaScript (JS) - - - - JavaScript (JS) Square - - - - jsFiddle - - - - Kaggle - - - - Keybase - - - - KeyCDN - - - - Kickstarter - - - - Kickstarter K - - - - KORVUE - - - - Laravel - - - - last.fm - - - - last.fm Square - - - - Leanpub - - - - Less - - - - Line - - - - LinkedIn - - - - LinkedIn In - - - - Linode - - - - Linux - - - - lyft - - - - Magento - - - - Mailchimp - - - - Mandalorian - - - - Markdown - - - - Mastodon - - - - MaxCDN - - - - MedApps - - - - Medium - - - - Medium M - - - - MRT - - - - Meetup - - - - Megaport - - - - Microsoft - - - - Mix - - - - Mixcloud - - - - Mizuni - - - - MODX - - - - Monero - - - - Napster - - - - Neos - - - - Nimblr - - - - Nintendo Switch - - - - Node.js - - - - Node.js JS - - - - npm - - - - NS8 - - - - Nutritionix - - - - Odnoklassniki - - - - Odnoklassniki Square - - - - Old Republic - - - - OpenCart - - - - OpenID - - - - Opera - - - - Optin Monster - - - - Open Source Initiative - - - - page4 Corporation - - - - Pagelines - - - - Palfed - - - - Patreon - - - - Paypal - - - - Penny Arcade - - - - Periscope - - - - Phabricator - - - - Phoenix Framework - - - - Phoenix Squadron - - - - PHP - - - - Pied Piper Logo - - - - Alternate Pied Piper Logo - - - - Pied Piper-hat - - - - Pied Piper PP Logo (Old) - - - - Pinterest - - - - Pinterest P - - - - Pinterest Square - - - - PlayStation - - - - Product Hunt - - - - Pushed - - - - Python - - - - QQ - - - - QuinScape - - - - Quora - - - - R Project - - - - Ravelry - - - - React - - - - ReadMe - - - - Rebel Alliance - - - - red river - - - - reddit Logo - - - - reddit Alien - - - - reddit Square - - - - Rendact - - - - Renren - - - - replyd - - - - Researchgate - - - - Resolving - - - - Rev.io - - - - Rocket.Chat - - - - Rockrms - - - - Safari - - - - Sass - - - - SCHLIX - - - - Scribd - - - - Searchengin - - - - Sellcast - - - - Sellsy - - - - Servicestack - - - - Shirts in Bulk - - - - Shopware - - - - SimplyBuilt - - - - SISTRIX - - - - Sith - - - - skyatlas - - - - Skype - - - - Slack Logo - - - - Slack Hashtag - - - - Slideshare - - - - Snapchat - - - - Snapchat Ghost - - - - Snapchat Square - - - - SoundCloud - - - - Speakap - - - - Spotify - - - - Squarespace - - - - Stack Exchange - - - - Stack Overflow - - - - StayLinked - - - - Steam - - - - Steam Square - - - - Steam Symbol - - - - Sticker Mule - - - - Strava - - - - Stripe - - - - Stripe S - - - - Studio Vinari - - - - StumbleUpon Logo - - - - StumbleUpon Circle - - - - Superpowers - - - - Supple - - - - TeamSpeak - - - - Telegram - - - - Telegram Plane - - - - Tencent Weibo - - - - The Red Yeti - - - - Themeco - - - - ThemeIsle - - - - Trade Federation - - - - Trello - - - - TripAdvisor - - - - Tumblr - - - - Tumblr Square - - - - Twitch - - - - Twitter - - - - Twitter Square - - - - Typo3 - - - - Uber - - - - UIkit - - - - Uniregistry - - - - Untappd - - - - USB - - - - us-Sunnah Foundation - - - - Vaadin - - - - Viacoin - - - - Video - - - - Video Square - - - - Viber - - - - Vimeo - - - - Vimeo Square - - - - Vimeo - - - - Vine - - - - VK - - - - VNV - - - - Vue.js - - - - Weebly - - - - Weibo - - - - Weixin (WeChat) - - - - What's App - - - - What's App Square - - - - WHMCS - - - - Wikipedia W - - - - Windows - - - - Wix - - - - Wizards of the Coast - - - - Wolf Pack Battalion - - - - WordPress Logo - - - - Wordpress Simple - - - - WPBeginner - - - - WPExplorer - - - - WPForms - - - - Xbox - - - - Xing - - - - Xing Square - - - - Y Combinator - - - - Yahoo Logo - - - - Yandex - - - - Yandex International - - - - Yelp - - - - Yoast - - - - YouTube - - - - YouTube Square - - - - Zhihu - - - diff --git a/vendor/assets/svg-icons/fontawesome/regular.svg b/vendor/assets/svg-icons/fontawesome/regular.svg deleted file mode 100644 index ea1ab9faeb3..00000000000 --- a/vendor/assets/svg-icons/fontawesome/regular.svg +++ /dev/null @@ -1,615 +0,0 @@ - - - - - Address Book - - - - Address Card - - - - Angry Face - - - - Alternate Arrow Circle Down - - - - Alternate Arrow Circle Left - - - - Alternate Arrow Circle Right - - - - Alternate Arrow Circle Up - - - - bell - - - - Bell Slash - - - - bookmark - - - - Building - - - - Calendar - - - - Alternate Calendar - - - - Calendar Check - - - - Calendar Minus - - - - Calendar Plus - - - - Calendar Times - - - - Caret Square Down - - - - Caret Square Left - - - - Caret Square Right - - - - Caret Square Up - - - - Bar Chart - - - - Check Circle - - - - Check Square - - - - Circle - - - - Clipboard - - - - Clock - - - - Clone - - - - Closed Captioning - - - - comment - - - - Alternate Comment - - - - Comment Dots - - - - comments - - - - Compass - - - - Copy - - - - Copyright - - - - Credit Card - - - - Dizzy Face - - - - Dot Circle - - - - Edit - - - - Envelope - - - - Envelope Open - - - - Eye - - - - Eye Slash - - - - File - - - - Alternate File - - - - Archive File - - - - Audio File - - - - Code File - - - - Excel File - - - - Image File - - - - PDF File - - - - Powerpoint File - - - - Video File - - - - Word File - - - - flag - - - - Flushed Face - - - - Folder - - - - Folder Open - - - - Font Awesome Full Logo - - - - Frowning Face - - - - Frowning Face With Open Mouth - - - - Futbol - - - - Gem - - - - Grimacing Face - - - - Grinning Face - - - - Alternate Grinning Face - - - - Grinning Face With Smiling Eyes - - - - Grinning Face With Sweat - - - - Smiling Face With Heart-Eyes - - - - Grinning Squinting Face - - - - Rolling on the Floor Laughing - - - - Star-Struck - - - - Face With Tears of Joy - - - - Face With Tongue - - - - Squinting Face With Tongue - - - - Winking Face With Tongue - - - - Grinning Winking Face - - - - Lizard (Hand) - - - - Paper (Hand) - - - - Peace (Hand) - - - - Hand Pointing Down - - - - Hand Pointing Left - - - - Hand Pointing Right - - - - Hand Pointing Up - - - - Pointer (Hand) - - - - Rock (Hand) - - - - Scissors (Hand) - - - - Spock (Hand) - - - - Handshake - - - - HDD - - - - Heart - - - - hospital - - - - Hourglass - - - - Identification Badge - - - - Identification Card - - - - Image - - - - Images - - - - Keyboard - - - - Kissing Face - - - - Kissing Face With Smiling Eyes - - - - Face Blowing a Kiss - - - - Grinning Face With Big Eyes - - - - Laugh Face with Beaming Eyes - - - - Laughing Squinting Face - - - - Laughing Winking Face - - - - Lemon - - - - Life Ring - - - - Lightbulb - - - - Alternate List - - - - Map - - - - Neutral Face - - - - Face Without Mouth - - - - Face With Rolling Eyes - - - - Minus Square - - - - Alternate Money Bill - - - - Moon - - - - Newspaper - - - - Object Group - - - - Object Ungroup - - - - Paper Plane - - - - Pause Circle - - - - Play Circle - - - - Plus Square - - - - Question Circle - - - - Registered Trademark - - - - Crying Face - - - - Loudly Crying Face - - - - Save - - - - Share Square - - - - Smiling Face - - - - Beaming Face With Smiling Eyes - - - - Winking Face - - - - Snowflake - - - - Square - - - - Star - - - - star-half - - - - Sticky Note - - - - Stop Circle - - - - Sun - - - - Hushed Face - - - - thumbs-down - - - - thumbs-up - - - - Times Circle - - - - Tired Face - - - - Alternate Trash - - - - User - - - - User Circle - - - - Window Close - - - - Window Maximize - - - - Window Minimize - - - - Window Restore - - - diff --git a/vendor/assets/svg-icons/fontawesome/solid.svg b/vendor/assets/svg-icons/fontawesome/solid.svg deleted file mode 100644 index 39c24644e7d..00000000000 --- a/vendor/assets/svg-icons/fontawesome/solid.svg +++ /dev/null @@ -1,3411 +0,0 @@ - - - - - - Address Book - - - - Address Card - - - - adjust - - - - Air Freshener - - - - align-center - - - - align-justify - - - - align-left - - - - align-right - - - - Allergies - - - - ambulance - - - - American Sign Language Interpreting - - - - Anchor - - - - Angle Double Down - - - - Angle Double Left - - - - Angle Double Right - - - - Angle Double Up - - - - angle-down - - - - angle-left - - - - angle-right - - - - angle-up - - - - Angry Face - - - - Ankh - - - - Fruit Apple - - - - Archive - - - - Archway - - - - Alternate Arrow Circle Down - - - - Alternate Arrow Circle Left - - - - Alternate Arrow Circle Right - - - - Alternate Arrow Circle Up - - - - Arrow Circle Down - - - - Arrow Circle Left - - - - Arrow Circle Right - - - - Arrow Circle Up - - - - arrow-down - - - - arrow-left - - - - arrow-right - - - - arrow-up - - - - Alternate Arrows - - - - Alternate Arrows Horizontal - - - - Alternate Arrows Vertical - - - - Assistive Listening Systems - - - - asterisk - - - - At - - - - Atlas - - - - Atom - - - - Audio Description - - - - Award - - - - Backspace - - - - backward - - - - Balance Scale - - - - ban - - - - Band-Aid - - - - barcode - - - - Bars - - - - Baseball Ball - - - - Basketball Ball - - - - Bath - - - - Battery Empty - - - - Battery Full - - - - Battery 1/2 Full - - - - Battery 1/4 Full - - - - Battery 3/4 Full - - - - Bed - - - - beer - - - - bell - - - - Bell Slash - - - - Bezier Curve - - - - Bible - - - - Bicycle - - - - Binoculars - - - - Birthday Cake - - - - Blender - - - - Blender Phone - - - - Blind - - - - bold - - - - Lightning Bolt - - - - Bomb - - - - Bone - - - - Bong - - - - book - - - - Book of the Dead - - - - Book Open - - - - Book Reader - - - - bookmark - - - - Bowling Ball - - - - Box - - - - Box Open - - - - Boxes - - - - Braille - - - - Brain - - - - Briefcase - - - - Medical Briefcase - - - - Broadcast Tower - - - - Broom - - - - Brush - - - - Bug - - - - Building - - - - bullhorn - - - - Bullseye - - - - Burn - - - - Bus - - - - Bus Alt - - - - Business Time - - - - Calculator - - - - Calendar - - - - Alternate Calendar - - - - Calendar Check - - - - Calendar Minus - - - - Calendar Plus - - - - Calendar Times - - - - camera - - - - Retro Camera - - - - Campground - - - - Cannabis - - - - Capsules - - - - Car - - - - Alternate Car - - - - Car Battery - - - - Car Crash - - - - Car Side - - - - Caret Down - - - - Caret Left - - - - Caret Right - - - - Caret Square Down - - - - Caret Square Left - - - - Caret Square Right - - - - Caret Square Up - - - - Caret Up - - - - Shopping Cart Arrow Down - - - - Add to Shopping Cart - - - - Cat - - - - certificate - - - - Chair - - - - Chalkboard - - - - Chalkboard Teacher - - - - Charging Station - - - - Area Chart - - - - Bar Chart - - - - Line Chart - - - - Pie Chart - - - - Check - - - - Check Circle - - - - Check Double - - - - Check Square - - - - Chess - - - - Chess Bishop - - - - Chess Board - - - - Chess King - - - - Chess Knight - - - - Chess Pawn - - - - Chess Queen - - - - Chess Rook - - - - Chevron Circle Down - - - - Chevron Circle Left - - - - Chevron Circle Right - - - - Chevron Circle Up - - - - chevron-down - - - - chevron-left - - - - chevron-right - - - - chevron-up - - - - Child - - - - Church - - - - Circle - - - - Circle Notched - - - - City - - - - Clipboard - - - - Clipboard Check - - - - Clipboard List - - - - Clock - - - - Clone - - - - Closed Captioning - - - - Cloud - - - - Alternate Cloud Download - - - - Cloud with Moon - - - - Cloud with Sun - - - - Alternate Cloud Upload - - - - Cocktail - - - - Code - - - - Code Branch - - - - Coffee - - - - cog - - - - cogs - - - - Coins - - - - Columns - - - - comment - - - - Alternate Comment - - - - Comment Dollar - - - - Comment Dots - - - - Comment Slash - - - - comments - - - - Comments Dollar - - - - Compact Disc - - - - Compass - - - - Compress - - - - Concierge Bell - - - - Cookie - - - - Cookie Bite - - - - Copy - - - - Copyright - - - - Couch - - - - Credit Card - - - - crop - - - - Alternate Crop - - - - Cross - - - - Crosshairs - - - - Crow - - - - Crown - - - - Cube - - - - Cubes - - - - Cut - - - - Database - - - - Deaf - - - - Desktop - - - - Dharmachakra - - - - Diagnoses - - - - Dice - - - - Dice D20 - - - - Dice D6 - - - - Dice Five - - - - Dice Four - - - - Dice One - - - - Dice Six - - - - Dice Three - - - - Dice Two - - - - Digital Tachograph - - - - Directions - - - - Divide - - - - Dizzy Face - - - - DNA - - - - Dog - - - - Dollar Sign - - - - Dolly - - - - Dolly Flatbed - - - - - Door Closed - - - - Door Open - - - - Dot Circle - - - - Dove - - - - Download - - - - Drafting Compass - - - - Dragon - - - - Draw Polygon - - - - Drum - - - - Drum Steelpan - - - - Drumstick with Bite Taken Out - - - - Dumbbell - - - - Dungeon - - - - Edit - - - - eject - - - - Horizontal Ellipsis - - - - Vertical Ellipsis - - - - Envelope - - - - Envelope Open - - - - Envelope Open-text - - - - Envelope Square - - - - Equals - - - - eraser - - - - Euro Sign - - - - Alternate Exchange - - - - exclamation - - - - Exclamation Circle - - - - Exclamation Triangle - - - - Expand - - - - Alternate Expand Arrows - - - - Alternate External Link - - - - Alternate External Link Square - - - - Eye - - - - Eye Dropper - - - - Eye Slash - - - - fast-backward - - - - fast-forward - - - - Fax - - - - Feather - - - - Alternate Feather - - - - Female - - - - fighter-jet - - - - File - - - - Alternate File - - - - Archive File - - - - Audio File - - - - Code File - - - - File Contract - - - - File CSV - - - - File Download - - - - Excel File - - - - File Export - - - - Image File - - - - File Import - - - - File Invoice - - - - File Invoice with US Dollar - - - - Medical File - - - - Alternate Medical File - - - - PDF File - - - - Powerpoint File - - - - File Prescription - - - - File Signature - - - - File Upload - - - - Video File - - - - Word File - - - - Fill - - - - Fill Drip - - - - Film - - - - Filter - - - - Fingerprint - - - - fire - - - - fire-extinguisher - - - - First Aid - - - - Fish - - - - Raised Fist - - - - flag - - - - flag-checkered - - - - Flask - - - - Flushed Face - - - - Folder - - - - Folder Minus - - - - Folder Open - - - - Folder Plus - - - - font - - - - Font Awesome Full Logo - - - - Football Ball - - - - forward - - - - Frog - - - - Frowning Face - - - - Frowning Face With Open Mouth - - - - Funnel Dollar - - - - Futbol - - - - Gamepad - - - - Gas Pump - - - - Gavel - - - - Gem - - - - Genderless - - - - Ghost - - - - gift - - - - Martini Glass - - - - Alternate Glass Martini - - - - Glasses - - - - Globe - - - - Globe with Africa shown - - - - Globe with Americas shown - - - - Globe with Asia shown - - - - Golf Ball - - - - Gopuram - - - - Graduation Cap - - - - Greater Than - - - - Greater Than Equal To - - - - Grimacing Face - - - - Grinning Face - - - - Alternate Grinning Face - - - - Grinning Face With Smiling Eyes - - - - Grinning Face With Sweat - - - - Smiling Face With Heart-Eyes - - - - Grinning Squinting Face - - - - Rolling on the Floor Laughing - - - - Star-Struck - - - - Face With Tears of Joy - - - - Face With Tongue - - - - Squinting Face With Tongue - - - - Winking Face With Tongue - - - - Grinning Winking Face - - - - Grip Horizontal - - - - Grip Vertical - - - - H Square - - - - Hammer - - - - Hamsa - - - - Hand Holding - - - - Hand Holding Heart - - - - Hand Holding US Dollar - - - - Lizard (Hand) - - - - Paper (Hand) - - - - Peace (Hand) - - - - Hand Pointing Down - - - - Hand Pointing Left - - - - Hand Pointing Right - - - - Hand Pointing Up - - - - Pointer (Hand) - - - - Rock (Hand) - - - - Scissors (Hand) - - - - Spock (Hand) - - - - Hands - - - - Helping Hands - - - - Handshake - - - - Hanukiah - - - - Hashtag - - - - Wizard's Hat - - - - Haykal - - - - HDD - - - - heading - - - - headphones - - - - Alternate Headphones - - - - Headset - - - - Heart - - - - Heartbeat - - - - Helicopter - - - - Highlighter - - - - Hiking - - - - Hippo - - - - History - - - - Hockey Puck - - - - home - - - - Horse - - - - hospital - - - - Alternate Hospital - - - - Hospital Symbol - - - - Hot Tub - - - - Hotel - - - - Hourglass - - - - Hourglass End - - - - Hourglass Half - - - - Hourglass Start - - - - House Damage - - - - Hryvnia - - - - I Beam Cursor - - - - Identification Badge - - - - Identification Card - - - - Alternate Identification Card - - - - Image - - - - Images - - - - inbox - - - - Indent - - - - Industry - - - - Infinity - - - - Info - - - - Info Circle - - - - italic - - - - Jedi - - - - Joint - - - - Journal of the Whills - - - - Kaaba - - - - key - - - - Keyboard - - - - Khanda - - - - Kissing Face - - - - Kissing Face With Smiling Eyes - - - - Face Blowing a Kiss - - - - Kiwi Bird - - - - Landmark - - - - Language - - - - Laptop - - - - Laptop Code - - - - Grinning Face With Big Eyes - - - - Laugh Face with Beaming Eyes - - - - Laughing Squinting Face - - - - Laughing Winking Face - - - - Layer Group - - - - leaf - - - - Lemon - - - - Less Than - - - - Less Than Equal To - - - - Alternate Level Down - - - - Alternate Level Up - - - - Life Ring - - - - Lightbulb - - - - Link - - - - Turkish Lira Sign - - - - List - - - - Alternate List - - - - list-ol - - - - list-ul - - - - location-arrow - - - - lock - - - - Lock Open - - - - Alternate Long Arrow Down - - - - Alternate Long Arrow Left - - - - Alternate Long Arrow Right - - - - Alternate Long Arrow Up - - - - Low Vision - - - - Luggage Cart - - - - magic - - - - magnet - - - - Mail Bulk - - - - Male - - - - Map - - - - Map Marked - - - - Alternate Map Marked - - - - map-marker - - - - Alternate Map Marker - - - - Map Pin - - - - Map Signs - - - - Marker - - - - Mars - - - - Mars Double - - - - Mars Stroke - - - - Mars Stroke Horizontal - - - - Mars Stroke Vertical - - - - Mask - - - - Medal - - - - medkit - - - - Neutral Face - - - - Face Without Mouth - - - - Face With Rolling Eyes - - - - Memory - - - - Menorah - - - - Mercury - - - - Microchip - - - - microphone - - - - Alternate Microphone - - - - Alternate Microphone Slash - - - - Microphone Slash - - - - Microscope - - - - minus - - - - Minus Circle - - - - Minus Square - - - - Mobile Phone - - - - Alternate Mobile - - - - Money Bill - - - - Alternate Money Bill - - - - Wavy Money Bill - - - - Alternate Wavy Money Bill - - - - Money Check - - - - Alternate Money Check - - - - Monument - - - - Moon - - - - Mortar Pestle - - - - Mosque - - - - Motorcycle - - - - Mountain - - - - Mouse Pointer - - - - Music - - - - Wired Network - - - - Neuter - - - - Newspaper - - - - Not Equal - - - - Medical Notes - - - - Object Group - - - - Object Ungroup - - - - Oil Can - - - - Om - - - - Otter - - - - Outdent - - - - Paint Brush - - - - Paint Roller - - - - Palette - - - - Pallet - - - - Paper Plane - - - - Paperclip - - - - Parachute Box - - - - paragraph - - - - Parking - - - - Passport - - - - Pastafarianism - - - - Paste - - - - pause - - - - Pause Circle - - - - Paw - - - - Peace - - - - Pen - - - - Alternate Pen - - - - Pen Fancy - - - - Pen Nib - - - - Pen Square - - - - Alternate Pencil - - - - Pencil Ruler - - - - People Carry - - - - Percent - - - - Percentage - - - - Phone - - - - Phone Slash - - - - Phone Square - - - - Phone Volume - - - - Piggy Bank - - - - Pills - - - - Place Of Worship - - - - plane - - - - Plane Arrival - - - - Plane Departure - - - - play - - - - Play Circle - - - - Plug - - - - plus - - - - Plus Circle - - - - Plus Square - - - - Podcast - - - - Poll - - - - Poll H - - - - Poo - - - - Poop - - - - Portrait - - - - Pound Sign - - - - Power Off - - - - Pray - - - - Praying Hands - - - - Prescription - - - - Prescription Bottle - - - - Alternate Prescription Bottle - - - - print - - - - Procedures - - - - Project Diagram - - - - Puzzle Piece - - - - qrcode - - - - Question - - - - Question Circle - - - - Quidditch - - - - quote-left - - - - quote-right - - - - Quran - - - - random - - - - Receipt - - - - Recycle - - - - Redo - - - - Alternate Redo - - - - Registered Trademark - - - - Reply - - - - reply-all - - - - Retweet - - - - Ribbon - - - - Ring - - - - road - - - - Robot - - - - rocket - - - - Route - - - - rss - - - - RSS Square - - - - Ruble Sign - - - - Ruler - - - - Ruler Combined - - - - Ruler Horizontal - - - - Ruler Vertical - - - - Running - - - - Indian Rupee Sign - - - - Crying Face - - - - Loudly Crying Face - - - - Save - - - - School - - - - Screwdriver - - - - Scroll - - - - Search - - - - Search Dollar - - - - Search Location - - - - Search Minus - - - - Search Plus - - - - Seedling - - - - Server - - - - Shapes - - - - Share - - - - Alternate Share - - - - Alternate Share Square - - - - Share Square - - - - Shekel Sign - - - - Alternate Shield - - - - Ship - - - - Shipping Fast - - - - Shoe Prints - - - - Shopping Bag - - - - Shopping Basket - - - - shopping-cart - - - - Shower - - - - Shuttle Van - - - - Sign - - - - Alternate Sign In - - - - Sign Language - - - - Alternate Sign Out - - - - signal - - - - Signature - - - - Sitemap - - - - Skull - - - - Skull & Crossbones - - - - Slash - - - - Horizontal Sliders - - - - Smiling Face - - - - Beaming Face With Smiling Eyes - - - - Winking Face - - - - Smoking - - - - Smoking Ban - - - - Snowflake - - - - Socks - - - - Solar Panel - - - - Sort - - - - Sort Alpha Down - - - - Sort Alpha Up - - - - Sort Amount Down - - - - Sort Amount Up - - - - Sort Down (Descending) - - - - Sort Numeric Down - - - - Sort Numeric Up - - - - Sort Up (Ascending) - - - - Spa - - - - Space Shuttle - - - - Spider - - - - Spinner - - - - Splotch - - - - Spray Can - - - - Square - - - - Square Full - - - - Square Root Alternate - - - - Stamp - - - - Star - - - - Star and Crescent - - - - star-half - - - - Alternate Star Half - - - - Star of David - - - - Star of Life - - - - step-backward - - - - step-forward - - - - Stethoscope - - - - Sticky Note - - - - stop - - - - Stop Circle - - - - Stopwatch - - - - Store - - - - Alternate Store - - - - Stream - - - - Street View - - - - Strikethrough - - - - Stroopwafel - - - - subscript - - - - Subway - - - - Suitcase - - - - Suitcase Rolling - - - - Sun - - - - superscript - - - - Hushed Face - - - - Swatchbook - - - - Swimmer - - - - Swimming Pool - - - - Synagogue - - - - Sync - - - - Alternate Sync - - - - Syringe - - - - table - - - - Table Tennis - - - - tablet - - - - Alternate Tablet - - - - Tablets - - - - Alternate Tachometer - - - - tag - - - - tags - - - - Tape - - - - Tasks - - - - Taxi - - - - Teeth - - - - Teeth Open - - - - Terminal - - - - text-height - - - - text-width - - - - th - - - - th-large - - - - th-list - - - - Theater Masks - - - - Thermometer - - - - Thermometer Empty - - - - Thermometer Full - - - - Thermometer 1/2 Full - - - - Thermometer 1/4 Full - - - - Thermometer 3/4 Full - - - - thumbs-down - - - - thumbs-up - - - - Thumbtack - - - - Alternate Ticket - - - - Times - - - - Times Circle - - - - tint - - - - Tint Slash - - - - Tired Face - - - - Toggle Off - - - - Toggle On - - - - Toilet Paper - - - - Toolbox - - - - Tooth - - - - Torah - - - - Torii Gate - - - - Tractor - - - - Trademark - - - - Traffic Light - - - - Train - - - - Transgender - - - - Alternate Transgender - - - - Trash - - - - Alternate Trash - - - - Tree - - - - trophy - - - - truck - - - - Truck Loading - - - - Truck Monster - - - - Truck Moving - - - - Truck Side - - - - T-Shirt - - - - TTY - - - - Television - - - - Umbrella - - - - Umbrella Beach - - - - Underline - - - - Undo - - - - Alternate Undo - - - - Universal Access - - - - University - - - - unlink - - - - unlock - - - - Alternate Unlock - - - - Upload - - - - User - - - - Alternate User - - - - Alternate User Slash - - - - User Astronaut - - - - User Check - - - - User Circle - - - - User Clock - - - - User Cog - - - - User Edit - - - - User Friends - - - - User Graduate - - - - User Injured - - - - User Lock - - - - user-md - - - - User Minus - - - - User Ninja - - - - User Plus - - - - User Secret - - - - User Shield - - - - User Slash - - - - User Tag - - - - User Tie - - - - Remove User - - - - Users - - - - Users Cog - - - - Utensil Spoon - - - - Utensils - - - - Vector Square - - - - Venus - - - - Venus Double - - - - Venus Mars - - - - Vial - - - - Vials - - - - Video - - - - Video Slash - - - - Vihara - - - - Volleyball Ball - - - - Volume Down - - - - Volume Mute - - - - Volume Off - - - - Volume Up - - - - Walking - - - - Wallet - - - - Warehouse - - - - Weight - - - - Hanging Weight - - - - Wheelchair - - - - WiFi - - - - Wind - - - - Window Close - - - - Window Maximize - - - - Window Minimize - - - - Window Restore - - - - Wine Bottle - - - - Wine Glass - - - - Alternate Wine Glas - - - - Won Sign - - - - Wrench - - - - X-Ray - - - - Yen Sign - - - - Yin Yang - - - diff --git a/yarn.lock b/yarn.lock index c20f002dd5b..3a107446ed4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -87,11 +87,6 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@fortawesome/fontawesome-free@^5.4.1": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.4.1.tgz#6194786c1a705ab84253e06429834466670e3c3f" - integrity sha512-ZcxfUmLFl4RLG71cPeZcTXRa6rt3xLnMmomAb7aYKRzUmlRRj7E8EVqSwYSXBiV2x6XpSQmGOQmNQx6HSeSwVQ== - "@sinonjs/commons@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.0.2.tgz#3e0ac737781627b8844257fadc3d803997d0526e"