Browse Source

Convert Font Awesome to Unicode Icons. Part 1. In Progress.

Thanks to xet7 !
Lauri Ojansivu 5 days ago
parent
commit
2947238a02

+ 1 - 1
.meteor/packages

@@ -93,4 +93,4 @@ ejson@1.1.3
 logging@1.3.3
 logging@1.3.3
 wekan-fullcalendar
 wekan-fullcalendar
 momentjs:moment@2.29.3
 momentjs:moment@2.29.3
-wekan-fontawesome
+# wekan-fontawesome

+ 0 - 1
.meteor/versions

@@ -155,7 +155,6 @@ wekan-accounts-cas@0.1.0
 wekan-accounts-lockout@1.0.0
 wekan-accounts-lockout@1.0.0
 wekan-accounts-oidc@1.0.10
 wekan-accounts-oidc@1.0.10
 wekan-accounts-sandstorm@0.8.0
 wekan-accounts-sandstorm@0.8.0
-wekan-fontawesome@6.4.2
 wekan-fullcalendar@3.10.5
 wekan-fullcalendar@3.10.5
 wekan-ldap@0.0.2
 wekan-ldap@0.0.2
 wekan-markdown@1.0.9
 wekan-markdown@1.0.9

+ 4 - 4
client/components/boardConversionProgress.jade

@@ -3,7 +3,7 @@ template(name="boardConversionProgress")
     .board-conversion-modal
     .board-conversion-modal
       .board-conversion-header
       .board-conversion-header
         h3
         h3
-          i.fa.fa-cogs
+          | ⚙️
           | {{_ 'converting-board'}}
           | {{_ 'converting-board'}}
         p {{_ 'converting-board-description'}}
         p {{_ 'converting-board-description'}}
       
       
@@ -14,14 +14,14 @@ template(name="boardConversionProgress")
           .progress-text {{conversionProgress}}%
           .progress-text {{conversionProgress}}%
         
         
         .conversion-status
         .conversion-status
-          i.fa.fa-spinner.fa-spin
+          | ⚙️
           | {{conversionStatus}}
           | {{conversionStatus}}
         
         
         .conversion-time(style="{{#unless conversionEstimatedTime}}display: none;{{/unless}}")
         .conversion-time(style="{{#unless conversionEstimatedTime}}display: none;{{/unless}}")
-          i.fa.fa-clock-o
+          | ⏰
           | {{_ 'estimated-time-remaining'}}: {{conversionEstimatedTime}}
           | {{_ 'estimated-time-remaining'}}: {{conversionEstimatedTime}}
       
       
       .board-conversion-footer
       .board-conversion-footer
         .conversion-info
         .conversion-info
-          i.fa.fa-info-circle
+          | ℹ️
           | {{_ 'conversion-info-text'}}
           | {{_ 'conversion-info-text'}}

+ 16 - 15
client/components/cards/attachments.jade

@@ -34,10 +34,10 @@ template(name="attachmentViewer")
   #viewer-overlay.hidden
   #viewer-overlay.hidden
     #viewer-top-bar
     #viewer-top-bar
       span#attachment-name
       span#attachment-name
-      a#viewer-close.fa.fa-times-thin
+      a#viewer-close
 
 
     #viewer-container
     #viewer-container
-      i.fa.fa-chevron-left.attachment-arrow#prev-attachment
+      | ◀️
       #viewer-content
       #viewer-content
         img#image-viewer.hidden
         img#image-viewer.hidden
         video#video-viewer.hidden(controls="true")
         video#video-viewer.hidden(controls="true")
@@ -45,7 +45,7 @@ template(name="attachmentViewer")
         object#pdf-viewer.hidden(type="application/pdf")
         object#pdf-viewer.hidden(type="application/pdf")
           span.pdf-preview-error {{_ 'preview-pdf-not-supported' }}
           span.pdf-preview-error {{_ 'preview-pdf-not-supported' }}
         object#txt-viewer.hidden(type="text/plain")
         object#txt-viewer.hidden(type="text/plain")
-      i.fa.fa-chevron-right.attachment-arrow#next-attachment
+      | ▶️
 
 
 template(name="attachmentGallery")
 template(name="attachmentGallery")
 
 
@@ -53,7 +53,7 @@ template(name="attachmentGallery")
 
 
     if canModifyCard
     if canModifyCard
       a.attachment-item.add-attachment.js-add-attachment
       a.attachment-item.add-attachment.js-add-attachment
-        i.fa.fa-plus.icon
+        | ➕
 
 
     each attachments
     each attachments
 
 
@@ -87,21 +87,22 @@ template(name="attachmentGallery")
               span.file-size ({{fileSize size}})
               span.file-size ({{fileSize size}})
             .attachment-actions
             .attachment-actions
               a.js-download(href="{{link}}?download=true", download="{{name}}")
               a.js-download(href="{{link}}?download=true", download="{{name}}")
-                i.fa.fa-download.icon(title="{{_ 'download'}}")
+                | ⬇️(title="{{_ 'download'}}")
               if currentUser.isBoardMember
               if currentUser.isBoardMember
                 unless currentUser.isCommentOnly
                 unless currentUser.isCommentOnly
                   unless currentUser.isWorker
                   unless currentUser.isWorker
                     a.js-rename
                     a.js-rename
-                      i.fa.fa-pencil-square-o.icon(title="{{_ 'rename'}}")
+                      | ✏️(title="{{_ 'rename'}}")
                     a.js-confirm-delete
                     a.js-confirm-delete
-                      i.fa.fa-trash.icon(title="{{_ 'delete'}}")
-                    a.fa.fa-navicon.icon.js-open-attachment-menu(data-attachment-link="{{link}}" title="{{_ 'attachmentActionsPopup-title'}}")
+                      | 🗑️(title="{{_ 'delete'}}")
+                    a.js-open-attachment-menu
+                      | ☰(data-attachment-link="{{link}}" title="{{_ 'attachmentActionsPopup-title'}}")
 
 
         // Migration spinner overlay
         // Migration spinner overlay
         if isAttachmentMigrating _id
         if isAttachmentMigrating _id
           .attachment-migration-overlay
           .attachment-migration-overlay
             .migration-spinner
             .migration-spinner
-              i.fa.fa-cog.fa-spin
+              | ⚙️
             .migration-text {{_ 'migrating-attachment'}}
             .migration-text {{_ 'migrating-attachment'}}
 
 
 template(name="attachmentActionsPopup")
 template(name="attachmentActionsPopup")
@@ -109,8 +110,8 @@ template(name="attachmentActionsPopup")
     li
     li
       if isImage
       if isImage
         a(class="{{#if isCover}}js-remove-cover{{else}}js-add-cover{{/if}}")
         a(class="{{#if isCover}}js-remove-cover{{else}}js-add-cover{{/if}}")
-          i.fa.fa-book
-          i.fa.fa-picture-o
+          | 📖
+          | 🖼️
           if isCover
           if isCover
             | {{_ 'remove-cover'}}
             | {{_ 'remove-cover'}}
           else
           else
@@ -118,7 +119,7 @@ template(name="attachmentActionsPopup")
       if currentUser.isBoardAdmin
       if currentUser.isBoardAdmin
         if isImage
         if isImage
           a(class="{{#if isBackgroundImage}}js-remove-background-image{{else}}js-add-background-image{{/if}}")
           a(class="{{#if isBackgroundImage}}js-remove-background-image{{else}}js-add-background-image{{/if}}")
-            i.fa.fa-picture-o
+            | 🖼️
             if isBackgroundImage
             if isBackgroundImage
               | {{_ 'remove-background-image'}}
               | {{_ 'remove-background-image'}}
             else
             else
@@ -126,19 +127,19 @@ template(name="attachmentActionsPopup")
 
 
         if $neq versions.original.storage "fs"
         if $neq versions.original.storage "fs"
           a.js-move-storage-fs
           a.js-move-storage-fs
-            i.fa.fa-arrow-right
+            | ▶️
             | {{_ 'attachment-move-storage-fs'}}
             | {{_ 'attachment-move-storage-fs'}}
 
 
         if $neq versions.original.storage "gridfs"
         if $neq versions.original.storage "gridfs"
           if versions.original.storage
           if versions.original.storage
             a.js-move-storage-gridfs
             a.js-move-storage-gridfs
-              i.fa.fa-arrow-right
+              | ▶️
               | {{_ 'attachment-move-storage-gridfs'}}
               | {{_ 'attachment-move-storage-gridfs'}}
 
 
         if $neq versions.original.storage "s3"
         if $neq versions.original.storage "s3"
           if versions.original.storage
           if versions.original.storage
             a.js-move-storage-s3
             a.js-move-storage-s3
-              i.fa.fa-arrow-right
+              | ▶️
               | {{_ 'attachment-move-storage-s3'}}
               | {{_ 'attachment-move-storage-s3'}}
 
 
 template(name="attachmentRenamePopup")
 template(name="attachmentRenamePopup")

+ 47 - 6
client/components/cards/cardDate.css

@@ -42,23 +42,64 @@
 .card-date.long-overdue.is-active {
 .card-date.long-overdue.is-active {
   background-color: #fd3e24;
   background-color: #fd3e24;
 }
 }
+
+/* Date type specific colors */
+.card-date.received-date {
+  background-color: #0079bf; /* Blue for received */
+}
+
+.card-date.received-date:hover,
+.card-date.received-date.is-active {
+  background-color: #005a8b;
+}
+
+.card-date.start-date {
+  background-color: #3cb500; /* Green for start */
+}
+
+.card-date.start-date:hover,
+.card-date.start-date.is-active {
+  background-color: #2d8f00;
+}
+
+.card-date.due-date {
+  background-color: #ff9f19; /* Orange for due */
+}
+
+.card-date.due-date:hover,
+.card-date.due-date.is-active {
+  background-color: #e68a00;
+}
+
+.card-date.end-date {
+  background-color: #a632db; /* Purple for end */
+}
+
+.card-date.end-date:hover,
+.card-date.end-date.is-active {
+  background-color: #8a2bb8;
+}
 .card-date.end-date time::before {
 .card-date.end-date time::before {
-  content: "\f253";
+  content: "🏁"; /* Finish flag - represents end/completion */
 }
 }
 .card-date.due-date time::before {
 .card-date.due-date time::before {
-  content: "\f090";
+  content: "⏰"; /* Alarm clock - represents due/deadline */
 }
 }
 .card-date.start-date time::before {
 .card-date.start-date time::before {
-  content: "\f251";
+  content: "🚀"; /* Rocket - represents start/launch */
 }
 }
 .card-date.received-date time::before {
 .card-date.received-date time::before {
-  content: "\f08b";
+  content: "📥"; /* Inbox tray - represents received/incoming */
+}
+
+/* Generic date badge and custom field date */
+.card-date:not(.received-date):not(.start-date):not(.due-date):not(.end-date) time::before {
+  content: "📅"; /* Calendar - represents generic date */
 }
 }
 .card-date time::before {
 .card-date time::before {
-  font: normal normal normal 14px/1 FontAwesome;
   font-size: inherit;
   font-size: inherit;
-  -webkit-font-smoothing: antialiased;
   margin-right: 0.3em;
   margin-right: 0.3em;
+  display: inline-block;
 }
 }
 .customfield-date {
 .customfield-date {
   display: block;
   display: block;

+ 72 - 0
client/components/cards/cardDate.jade

@@ -21,3 +21,75 @@ template(name="dateCustomField")
       if showWeekOfYear
       if showWeekOfYear
         b
         b
           | {{showWeek}}
           | {{showWeek}}
+
+template(name="minicardReceivedDate")
+  if canModifyCard
+    a.js-edit-date.card-date(title="{{_ 'card-received'}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
+      time(datetime="{{showISODate}}")
+        | {{showDate}}
+        if showWeekOfYear
+          b
+            | {{showWeek}}
+  else
+    a.card-date(title="{{_ 'card-received'}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
+      time(datetime="{{showISODate}}")
+        | {{showDate}}
+        if showWeekOfYear
+          b
+            | {{showWeek}}
+
+template(name="minicardStartDate")
+  if canModifyCard
+    a.js-edit-date.card-date(title="{{_ 'card-start'}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
+      time(datetime="{{showISODate}}")
+        | {{showDate}}
+        if showWeekOfYear
+          b
+            | {{showWeek}}
+  else
+    a.card-date(title="{{_ 'card-start'}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
+      time(datetime="{{showISODate}}")
+        | {{showDate}}
+        if showWeekOfYear
+          b
+            | {{showWeek}}
+
+template(name="minicardDueDate")
+  if canModifyCard
+    a.js-edit-date.card-date(title="{{_ 'card-due'}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
+      time(datetime="{{showISODate}}")
+        | {{showDate}}
+        if showWeekOfYear
+          b
+            | {{showWeek}}
+  else
+    a.card-date(title="{{_ 'card-due'}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
+      time(datetime="{{showISODate}}")
+        | {{showDate}}
+        if showWeekOfYear
+          b
+            | {{showWeek}}
+
+template(name="minicardEndDate")
+  if canModifyCard
+    a.js-edit-date.card-date(title="{{_ 'card-end'}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
+      time(datetime="{{showISODate}}")
+        | {{showDate}}
+        if showWeekOfYear
+          b
+            | {{showWeek}}
+  else
+    a.card-date(title="{{_ 'card-end'}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
+      time(datetime="{{showISODate}}")
+        | {{showDate}}
+        if showWeekOfYear
+          b
+            | {{showWeek}}
+
+template(name="minicardCustomFieldDate")
+  a(title="{{_ 'date'}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
+    time(datetime="{{showISODate}}")
+      | {{showDate}}
+      if showWeekOfYear
+        b
+          | {{showWeek}}

+ 20 - 0
client/components/cards/cardDate.js

@@ -329,30 +329,50 @@ class CardCustomFieldDate extends CardDate {
 CardCustomFieldDate.register('cardCustomFieldDate');
 CardCustomFieldDate.register('cardCustomFieldDate');
 
 
 (class extends CardReceivedDate {
 (class extends CardReceivedDate {
+  template() {
+    return 'minicardReceivedDate';
+  }
+  
   showDate() {
   showDate() {
     return format(this.date.get(), 'L');
     return format(this.date.get(), 'L');
   }
   }
 }.register('minicardReceivedDate'));
 }.register('minicardReceivedDate'));
 
 
 (class extends CardStartDate {
 (class extends CardStartDate {
+  template() {
+    return 'minicardStartDate';
+  }
+  
   showDate() {
   showDate() {
     return format(this.date.get(), 'YYYY-MM-DD HH:mm');
     return format(this.date.get(), 'YYYY-MM-DD HH:mm');
   }
   }
 }.register('minicardStartDate'));
 }.register('minicardStartDate'));
 
 
 (class extends CardDueDate {
 (class extends CardDueDate {
+  template() {
+    return 'minicardDueDate';
+  }
+  
   showDate() {
   showDate() {
     return format(this.date.get(), 'YYYY-MM-DD HH:mm');
     return format(this.date.get(), 'YYYY-MM-DD HH:mm');
   }
   }
 }.register('minicardDueDate'));
 }.register('minicardDueDate'));
 
 
 (class extends CardEndDate {
 (class extends CardEndDate {
+  template() {
+    return 'minicardEndDate';
+  }
+  
   showDate() {
   showDate() {
     return format(this.date.get(), 'YYYY-MM-DD HH:mm');
     return format(this.date.get(), 'YYYY-MM-DD HH:mm');
   }
   }
 }.register('minicardEndDate'));
 }.register('minicardEndDate'));
 
 
 (class extends CardCustomFieldDate {
 (class extends CardCustomFieldDate {
+  template() {
+    return 'minicardCustomFieldDate';
+  }
+  
   showDate() {
   showDate() {
     return format(this.date.get(), 'L');
     return format(this.date.get(), 'L');
   }
   }

+ 49 - 42
client/components/cards/cardDetails.jade

@@ -12,15 +12,19 @@ template(name="cardDetails")
       else
       else
         unless isMiniScreen
         unless isMiniScreen
           unless isPopup
           unless isPopup
-            a.fa.fa-times-thin.close-card-details.js-close-card-details(title="{{_ 'close-card'}}")
+            a.close-card-details.js-close-card-details(title="{{_ 'close-card'}}")
+              | ❌
             if canModifyCard
             if canModifyCard
               if cardMaximized
               if cardMaximized
-                a.fa.fa-window-minimize.minimize-card-details.js-minimize-card-details(title="{{_ 'minimize-card'}}")
+                a.minimize-card-details.js-minimize-card-details(title="{{_ 'minimize-card'}}")
+                  | 🔽
               else
               else
-                a.fa.fa-window-maximize.maximize-card-details.js-maximize-card-details(title="{{_ 'maximize-card'}}")
+                a.maximize-card-details.js-maximize-card-details(title="{{_ 'maximize-card'}}")
+                  | 🔼
           if canModifyCard
           if canModifyCard
-            a.fa.fa-navicon.card-details-menu.js-open-card-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
-            a.fa.fa-link.card-copy-button.js-copy-link(
+            a.card-details-menu.js-open-card-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
+              | ☰
+            a.card-copy-button.js-copy-link(
               id="cardURL_copy"
               id="cardURL_copy"
               class="fa-link"
               class="fa-link"
               title="{{_ 'copy-card-link-to-clipboard'}}"
               title="{{_ 'copy-card-link-to-clipboard'}}"
@@ -29,10 +33,12 @@ template(name="cardDetails")
             span.copied-tooltip {{_ 'copied'}}
             span.copied-tooltip {{_ 'copied'}}
         else
         else
           unless isPopup
           unless isPopup
-            a.fa.fa-times-thin.close-card-details.js-close-card-details(title="{{_ 'close-card'}}")
+            a.close-card-details.js-close-card-details(title="{{_ 'close-card'}}")
+              | ❌
           if canModifyCard
           if canModifyCard
-            a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
-            a.fa.fa-link.card-copy-mobile-button.js-copy-link(
+            a.card-details-menu-mobile-web.js-open-card-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
+              | ☰
+            a.card-copy-mobile-button.js-copy-link(
               id="cardURL_copy"
               id="cardURL_copy"
               class="fa-link"
               class="fa-link"
               title="{{_ 'copy-card-link-to-clipboard'}}"
               title="{{_ 'copy-card-link-to-clipboard'}}"
@@ -47,7 +53,8 @@ template(name="cardDetails")
                   | ##{getCardNumber}
                   | ##{getCardNumber}
               = getTitle
               = getTitle
             if isWatching
             if isWatching
-              i.card-details-watch.fa.fa-eye
+              i.card-details-watch
+                | 👁️
         .card-details-path
         .card-details-path
           each parentList
           each parentList
             |   >  
             |   >  
@@ -69,7 +76,7 @@ template(name="cardDetails")
     if hasActiveUploads
     if hasActiveUploads
       .card-details-upload-progress
       .card-details-upload-progress
         .upload-progress-header
         .upload-progress-header
-          i.fa.fa-upload
+          | 📤
           span {{_ 'uploading-files'}} ({{uploadCount}})
           span {{_ 'uploading-files'}} ({{uploadCount}})
         each uploads
         each uploads
           .upload-progress-item(class="{{#if $eq status 'error'}}upload-error{{/if}}")
           .upload-progress-item(class="{{#if $eq status 'error'}}upload-error{{/if}}")
@@ -78,11 +85,11 @@ template(name="cardDetails")
               .upload-progress-fill(style="width: {{progress}}%")
               .upload-progress-fill(style="width: {{progress}}%")
             if $eq status 'error'
             if $eq status 'error'
               .upload-progress-error
               .upload-progress-error
-                i.fa.fa-exclamation-triangle
+                | ⚠️
                 span {{_ 'upload-failed'}}
                 span {{_ 'upload-failed'}}
             else if $eq status 'completed'
             else if $eq status 'completed'
               .upload-progress-success
               .upload-progress-success
-                i.fa.fa-check
+                | ✅
                 span {{_ 'upload-completed'}}
                 span {{_ 'upload-completed'}}
 
 
     .card-details-left
     .card-details-left
@@ -91,7 +98,7 @@ template(name="cardDetails")
         if currentBoard.allowsLabels
         if currentBoard.allowsLabels
           .card-details-item.card-details-item-labels
           .card-details-item.card-details-item-labels
             h3.card-details-item-title
             h3.card-details-item-title
-              i.fa.fa-tags
+              | 🏷️
               | {{_ 'labels'}}
               | {{_ 'labels'}}
             a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
             a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
               each labels
               each labels
@@ -101,7 +108,7 @@ template(name="cardDetails")
             if canModifyCard
             if canModifyCard
               unless currentUser.isWorker
               unless currentUser.isWorker
                 a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
                 a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
-                  i.fa.fa-plus
+                  | ➕
 
 
         if currentBoard.hasAnyAllowsDate
         if currentBoard.hasAnyAllowsDate
           hr
           hr
@@ -109,7 +116,7 @@ template(name="cardDetails")
         if currentBoard.allowsReceivedDate
         if currentBoard.allowsReceivedDate
           .card-details-item.card-details-item-received
           .card-details-item.card-details-item-received
             h3.card-details-item-title
             h3.card-details-item-title
-              i.fa.fa-sign-out
+              | 📥
               | {{_ 'card-received'}}
               | {{_ 'card-received'}}
             if getReceived
             if getReceived
               +cardReceivedDate
               +cardReceivedDate
@@ -117,12 +124,12 @@ template(name="cardDetails")
               if canModifyCard
               if canModifyCard
                 unless currentUser.isWorker
                 unless currentUser.isWorker
                   a.card-label.add-label.js-received-date
                   a.card-label.add-label.js-received-date
-                    i.fa.fa-plus
+                    | ➕
 
 
         if currentBoard.allowsStartDate
         if currentBoard.allowsStartDate
           .card-details-item.card-details-item-start
           .card-details-item.card-details-item-start
             h3.card-details-item-title
             h3.card-details-item-title
-              i.fa.fa-hourglass-start
+              | 🚀
               | {{_ 'card-start'}}
               | {{_ 'card-start'}}
             if getStart
             if getStart
               +cardStartDate
               +cardStartDate
@@ -130,12 +137,12 @@ template(name="cardDetails")
               if canModifyCard
               if canModifyCard
                 unless currentUser.isWorker
                 unless currentUser.isWorker
                   a.card-label.add-label.js-start-date
                   a.card-label.add-label.js-start-date
-                    i.fa.fa-plus
+                    | ➕
 
 
         if currentBoard.allowsDueDate
         if currentBoard.allowsDueDate
           .card-details-item.card-details-item-due
           .card-details-item.card-details-item-due
             h3.card-details-item-title
             h3.card-details-item-title
-              i.fa.fa-sign-in
+              | ⏰
               | {{_ 'card-due'}}
               | {{_ 'card-due'}}
             if getDue
             if getDue
               +cardDueDate
               +cardDueDate
@@ -143,12 +150,12 @@ template(name="cardDetails")
               if canModifyCard
               if canModifyCard
                 unless currentUser.isWorker
                 unless currentUser.isWorker
                   a.card-label.add-label.js-due-date
                   a.card-label.add-label.js-due-date
-                    i.fa.fa-plus
+                    | ➕
 
 
         if currentBoard.allowsEndDate
         if currentBoard.allowsEndDate
           .card-details-item.card-details-item-end
           .card-details-item.card-details-item-end
             h3.card-details-item-title
             h3.card-details-item-title
-              i.fa.fa-hourglass-end
+              | 🏁
               | {{_ 'card-end'}}
               | {{_ 'card-end'}}
             if getEnd
             if getEnd
               +cardEndDate
               +cardEndDate
@@ -156,7 +163,7 @@ template(name="cardDetails")
               if canModifyCard
               if canModifyCard
                 unless currentUser.isWorker
                 unless currentUser.isWorker
                   a.card-label.add-label.js-end-date
                   a.card-label.add-label.js-end-date
-                    i.fa.fa-plus
+                    | ➕
 
 
         if currentBoard.hasAnyAllowsUser
         if currentBoard.hasAnyAllowsUser
           hr
           hr
@@ -164,7 +171,7 @@ template(name="cardDetails")
         if currentBoard.allowsCreator
         if currentBoard.allowsCreator
           .card-details-item.card-details-item-creator
           .card-details-item.card-details-item-creator
             h3.card-details-item-title
             h3.card-details-item-title
-              i.fa.fa-user
+              | 👤
               | {{_ 'creator'}}
               | {{_ 'creator'}}
 
 
             +userAvatar(userId=userId noRemove=true)
             +userAvatar(userId=userId noRemove=true)
@@ -174,7 +181,7 @@ template(name="cardDetails")
         if currentBoard.allowsMembers
         if currentBoard.allowsMembers
           .card-details-item.card-details-item-members
           .card-details-item.card-details-item-members
             h3.card-details-item-title
             h3.card-details-item-title
-              i.fa.fa-users
+              | 👤s
               | {{_ 'members'}}
               | {{_ 'members'}}
             each userId in getMembers
             each userId in getMembers
               +userAvatar(userId=userId cardId=_id)
               +userAvatar(userId=userId cardId=_id)
@@ -182,13 +189,13 @@ template(name="cardDetails")
             if canModifyCard
             if canModifyCard
               unless currentUser.isWorker
               unless currentUser.isWorker
                 a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}")
                 a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}")
-                  i.fa.fa-plus
+                  | ➕
 
 
         //if assigneeSelected
         //if assigneeSelected
         if currentBoard.allowsAssignee
         if currentBoard.allowsAssignee
           .card-details-item.card-details-item-assignees
           .card-details-item.card-details-item-assignees
             h3.card-details-item-title
             h3.card-details-item-title
-              i.fa.fa-user
+              | 👤
               | {{_ 'assignee'}}
               | {{_ 'assignee'}}
             each userId in getAssignees
             each userId in getAssignees
               +userAvatar(userId=userId cardId=_id assignee=true)
               +userAvatar(userId=userId cardId=_id assignee=true)
@@ -199,7 +206,7 @@ template(name="cardDetails")
             if currentUser.isWorker
             if currentUser.isWorker
               unless assigneeSelected
               unless assigneeSelected
                 a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}")
                 a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}")
-                  i.fa.fa-plus
+                  | ➕
 
 
         //.card-details-items
         //.card-details-items
         if currentBoard.allowsRequestedBy
         if currentBoard.allowsRequestedBy
@@ -225,7 +232,7 @@ template(name="cardDetails")
         if currentBoard.allowsAssignedBy
         if currentBoard.allowsAssignedBy
           .card-details-item.card-details-item-name
           .card-details-item.card-details-item-name
             h3.card-details-item-title
             h3.card-details-item-title
-              i.fa.fa-user-plus
+              | 👤-plus
               | {{_ 'assigned-by'}}
               | {{_ 'assigned-by'}}
             if canModifyCard
             if canModifyCard
               unless currentUser.isWorker
               unless currentUser.isWorker
@@ -350,52 +357,52 @@ template(name="cardDetails")
               .poker-card
               .poker-card
                 span.inner.js-poker.js-poker-vote-one(class="{{#if $eq pokerState 'one'}}poker-voted{{/if}}") {{_ 'poker-one'}}
                 span.inner.js-poker.js-poker-vote-one(class="{{#if $eq pokerState 'one'}}poker-voted{{/if}}") {{_ 'poker-one'}}
               if $eq pokerState "one"
               if $eq pokerState "one"
-                i.fa.fa-check
+                | ✅
             .poker-deck
             .poker-deck
               .poker-card
               .poker-card
                 span.inner.js-poker.js-poker-vote-two(class="{{#if $eq pokerState 'two'}}poker-voted{{/if}}") {{_ 'poker-two'}}
                 span.inner.js-poker.js-poker-vote-two(class="{{#if $eq pokerState 'two'}}poker-voted{{/if}}") {{_ 'poker-two'}}
               if $eq pokerState "two"
               if $eq pokerState "two"
-                i.fa.fa-check
+                | ✅
             .poker-deck
             .poker-deck
               .poker-card
               .poker-card
                 span.inner.js-poker.js-poker-vote-three(class="{{#if $eq pokerState 'three'}}poker-voted{{/if}}") {{_ 'poker-three'}}
                 span.inner.js-poker.js-poker-vote-three(class="{{#if $eq pokerState 'three'}}poker-voted{{/if}}") {{_ 'poker-three'}}
               if $eq pokerState "three"
               if $eq pokerState "three"
-                i.fa.fa-check
+                | ✅
             .poker-deck
             .poker-deck
               .poker-card
               .poker-card
                 span.inner.js-poker.js-poker-vote-five(class="{{#if $eq pokerState 'five'}}poker-voted{{/if}}") {{_ 'poker-five'}}
                 span.inner.js-poker.js-poker-vote-five(class="{{#if $eq pokerState 'five'}}poker-voted{{/if}}") {{_ 'poker-five'}}
               if $eq pokerState "five"
               if $eq pokerState "five"
-                i.fa.fa-check
+                | ✅
             .poker-deck
             .poker-deck
               .poker-card
               .poker-card
                 span.inner.js-poker.js-poker-vote-eight(class="{{#if $eq pokerState 'eight'}}poker-voted{{/if}}") {{_ 'poker-eight'}}
                 span.inner.js-poker.js-poker-vote-eight(class="{{#if $eq pokerState 'eight'}}poker-voted{{/if}}") {{_ 'poker-eight'}}
               if $eq pokerState "eight"
               if $eq pokerState "eight"
-                i.fa.fa-check
+                | ✅
             .poker-deck
             .poker-deck
               .poker-card
               .poker-card
                 span.inner.js-poker.js-poker-vote-thirteen(class="{{#if $eq pokerState 'thirteen'}}poker-voted{{/if}}") {{_ 'poker-thirteen'}}
                 span.inner.js-poker.js-poker-vote-thirteen(class="{{#if $eq pokerState 'thirteen'}}poker-voted{{/if}}") {{_ 'poker-thirteen'}}
               if $eq pokerState "thirteen"
               if $eq pokerState "thirteen"
-                i.fa.fa-check
+                | ✅
             .poker-deck
             .poker-deck
               .poker-card
               .poker-card
                 span.inner.js-poker.js-poker-vote-twenty(class="{{#if $eq pokerState 'twenty'}}poker-voted{{/if}}") {{_ 'poker-twenty'}}
                 span.inner.js-poker.js-poker-vote-twenty(class="{{#if $eq pokerState 'twenty'}}poker-voted{{/if}}") {{_ 'poker-twenty'}}
               if $eq pokerState "twenty"
               if $eq pokerState "twenty"
-                i.fa.fa-check
+                | ✅
             .poker-deck
             .poker-deck
               .poker-card
               .poker-card
                 span.inner.js-poker.js-poker-vote-forty(class="{{#if $eq pokerState 'forty'}}poker-voted{{/if}}") {{_ 'poker-forty'}}
                 span.inner.js-poker.js-poker-vote-forty(class="{{#if $eq pokerState 'forty'}}poker-voted{{/if}}") {{_ 'poker-forty'}}
               if $eq pokerState "forty"
               if $eq pokerState "forty"
-                i.fa.fa-check
+                | ✅
             .poker-deck
             .poker-deck
               .poker-card
               .poker-card
                 span.inner.js-poker.js-poker-vote-one-hundred(class="{{#if $eq pokerState 'oneHundred'}}poker-voted{{/if}}") {{_ 'poker-oneHundred'}}
                 span.inner.js-poker.js-poker-vote-one-hundred(class="{{#if $eq pokerState 'oneHundred'}}poker-voted{{/if}}") {{_ 'poker-oneHundred'}}
               if $eq pokerState "oneHundred"
               if $eq pokerState "oneHundred"
-                i.fa.fa-check
+                | ✅
             .poker-deck
             .poker-deck
               .poker-card
               .poker-card
                 span.inner.js-poker.js-poker-vote-unsure(class="{{#if $eq pokerState 'unsure'}}poker-voted{{/if}}") {{_ 'poker-unsure'}}
                 span.inner.js-poker.js-poker-vote-unsure(class="{{#if $eq pokerState 'unsure'}}poker-voted{{/if}}") {{_ 'poker-unsure'}}
               if $eq pokerState "unsure"
               if $eq pokerState "unsure"
-                i.fa.fa-check
+                | ✅
 
 
           if currentUser.isBoardAdmin
           if currentUser.isBoardAdmin
             button.card-details-blue.js-poker-finish(class="{{#if $eq voteState false}}poker-voted{{/if}}") {{_ 'poker-finish'}}
             button.card-details-blue.js-poker-finish(class="{{#if $eq voteState false}}poker-voted{{/if}}") {{_ 'poker-finish'}}
@@ -812,7 +819,7 @@ template(name="cardMembersPopup")
             = user.profile.fullname
             = user.profile.fullname
             | (<span class="username">{{ user.username }}</span>)
             | (<span class="username">{{ user.username }}</span>)
           if isCardMember
           if isCardMember
-            i.fa.fa-check
+            | ✅
 
 
 template(name="cardAssigneesPopup")
 template(name="cardAssigneesPopup")
   input.card-assignees-filter(type="text" placeholder="{{_ 'search'}}")
   input.card-assignees-filter(type="text" placeholder="{{_ 'search'}}")
@@ -826,7 +833,7 @@ template(name="cardAssigneesPopup")
               = user.profile.fullname
               = user.profile.fullname
               | (<span class="username">{{ user.username }}</span>)
               | (<span class="username">{{ user.username }}</span>)
             if isCardAssignee
             if isCardAssignee
-              i.fa.fa-check
+              | ✅
   if currentUser.isWorker
   if currentUser.isWorker
     ul.pop-over-list.js-card-assignee-list
     ul.pop-over-list.js-card-assignee-list
       li.item(class="{{#if currentUser.isCardAssignee}}active{{/if}}")
       li.item(class="{{#if currentUser.isCardAssignee}}active{{/if}}")
@@ -836,7 +843,7 @@ template(name="cardAssigneesPopup")
             = currentUser.profile.fullname
             = currentUser.profile.fullname
             | (<span class="username">{{ currentUser.username }}</span>)
             | (<span class="username">{{ currentUser.username }}</span>)
           if currentUser.isCardAssignee
           if currentUser.isCardAssignee
-            i.fa.fa-check
+            | ✅
 
 
 template(name="cardAssigneePopup")
 template(name="cardAssigneePopup")
   .board-assignee-menu
   .board-assignee-menu
@@ -902,7 +909,7 @@ template(name="setCardColorPopup")
       unless $eq color 'white'
       unless $eq color 'white'
         span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
         span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
           if(isSelected color)
           if(isSelected color)
-            i.fa.fa-check
+            | ✅
     button.primary.confirm.js-submit {{_ 'save'}}
     button.primary.confirm.js-submit {{_ 'save'}}
     button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
     button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
 
 

+ 4 - 4
client/components/cards/cardTime.jade

@@ -15,8 +15,8 @@ template(name="editCardSpentTime")
 
 
 template(name="timeBadge")
 template(name="timeBadge")
   if canModifyCard
   if canModifyCard
-    a.js-edit-time.card-time(title="{{showTitle}}" class="{{#if getIsOvertime}}card-label-red{{else}}card-label-green{{/if}}")
-      | {{showTime}}
+    a.js-edit-time.card-time(title="{{_ 'time'}}" class="{{#if getIsOvertime}}card-label-red{{else}}card-label-green{{/if}}")
+      | ⏱️ {{showTime}}
   else
   else
-    a.card-time(title="{{showTitle}}" class="{{#if getIsOvertime}}card-label-red{{else}}card-label-green{{/if}}")
-      | {{showTime}}
+    a.card-time(title="{{_ 'time'}}" class="{{#if getIsOvertime}}card-label-red{{else}}card-label-green{{/if}}")
+      | ⏱️ {{showTime}}

+ 14 - 0
client/components/cards/minicard.css

@@ -168,6 +168,20 @@
 .minicard .date {
 .minicard .date {
   margin-right: 0.4vw;
   margin-right: 0.4vw;
 }
 }
+
+/* Font Awesome icons in minicard dates */
+.minicard .card-date i.fa {
+  margin-right: 0.3vw;
+  font-size: 0.9em;
+  vertical-align: middle;
+}
+
+/* Font Awesome icons in minicard spent time */
+.minicard .card-time i.fa {
+  margin-right: 0.3vw;
+  font-size: 0.9em;
+  vertical-align: middle;
+}
 .minicard .badges {
 .minicard .badges {
   float: left;
   float: left;
   margin-top: 1vh;
   margin-top: 1vh;

+ 3 - 3
client/components/main/bookmarks.jade

@@ -8,7 +8,7 @@ template(name="bookmarks")
             li
             li
               a(href="{{pathFor 'board' id=_id slug=slug}}")= title
               a(href="{{pathFor 'board' id=_id slug=slug}}")= title
               a.js-toggle-star(title="{{_ 'star-board-short-unstar'}}")
               a.js-toggle-star(title="{{_ 'star-board-short-unstar'}}")
-                i.fa.fa-star
+                | ⭐
       else
       else
         p {{_ 'no-starred-boards'}}
         p {{_ 'no-starred-boards'}}
     else
     else
@@ -21,9 +21,9 @@ template(name="bookmarksPopup")
       each starredBoards
       each starredBoards
         li
         li
           a(href="{{pathFor 'board' id=_id slug=slug}}")
           a(href="{{pathFor 'board' id=_id slug=slug}}")
-            i.fa.fa-star
+            | ⭐
             |  #{title}
             |  #{title}
           a.js-toggle-star.right(title="{{_ 'star-board-short-unstar'}}")
           a.js-toggle-star.right(title="{{_ 'star-board-short-unstar'}}")
-            i.fa.fa-star
+            | ⭐
     else
     else
       li {{_ 'no-starred-boards'}}
       li {{_ 'no-starred-boards'}}

+ 8 - 8
client/components/main/header.jade

@@ -9,7 +9,7 @@ template(name="header")
       // Home icon - always at left side of logo
       // Home icon - always at left side of logo
       span.home-icon.allBoards
       span.home-icon.allBoards
         a(href="{{pathFor 'home'}}")
         a(href="{{pathFor 'home'}}")
-          span.fa.fa-home
+          | 🏠
           | {{_ 'all-boards'}}
           | {{_ 'all-boards'}}
 
 
       // Logo - visible; on mobile constrained by CSS
       // Logo - visible; on mobile constrained by CSS
@@ -80,12 +80,12 @@ template(name="header")
 
 
       .mobile-mode-toggle
       .mobile-mode-toggle
         a.board-header-btn.js-mobile-mode-toggle(title="{{_ 'mobile-desktop-toggle'}}" class="{{#if mobileMode}}mobile-active{{else}}desktop-active{{/if}}")
         a.board-header-btn.js-mobile-mode-toggle(title="{{_ 'mobile-desktop-toggle'}}" class="{{#if mobileMode}}mobile-active{{else}}desktop-active{{/if}}")
-          i.fa.fa-mobile.mobile-icon(class="{{#if mobileMode}}active{{/if}}")
-          i.fa.fa-desktop.desktop-icon(class="{{#unless mobileMode}}active{{/unless}}")
+          | 📱(class="{{#if mobileMode}}active{{/if}}")
+          | 🖥️(class="{{#unless mobileMode}}active{{/unless}}")
 
 
       // Bookmarks button - desktop opens popup, mobile routes to page
       // Bookmarks button - desktop opens popup, mobile routes to page
       a.board-header-btn.js-open-bookmarks(title="{{_ 'bookmarks'}}")
       a.board-header-btn.js-open-bookmarks(title="{{_ 'bookmarks'}}")
-        i.fa.fa-bookmark
+        | 🔖
 
 
       // Notifications
       // Notifications
       +notifications
       +notifications
@@ -93,7 +93,7 @@ template(name="header")
       if currentSetting.customHelpLinkUrl
       if currentSetting.customHelpLinkUrl
         #header-help
         #header-help
           a(href="{{currentSetting.customHelpLinkUrl}}", title="{{_ 'help'}}", target="_blank", rel="noopener noreferrer")
           a(href="{{currentSetting.customHelpLinkUrl}}", title="{{_ 'help'}}", target="_blank", rel="noopener noreferrer")
-            span.fa.fa-question
+            | ❓
 
 
       +headerUserBar
       +headerUserBar
 
 
@@ -112,15 +112,15 @@ template(name="header")
     if hasAnnouncement
     if hasAnnouncement
       .announcement
       .announcement
         p
         p
-          i.fa.fa-bullhorn
+          | 📢
           +viewer
           +viewer
             | #{announcement}
             | #{announcement}
-          i.fa.fa-times-circle.js-close-announcement
+          | ❌
 
 
 template(name="offlineWarning")
 template(name="offlineWarning")
   .offline-warning
   .offline-warning
     p
     p
-      i.fa.fa-warning
+      | ⚠️
       | {{_ 'app-is-offline'}}
       | {{_ 'app-is-offline'}}
 
 
       a.app-try-reconnect {{_ 'app-try-reconnect'}}
       a.app-try-reconnect {{_ 'app-try-reconnect'}}

+ 2 - 2
client/components/main/layouts.jade

@@ -85,13 +85,13 @@ template(name="defaultLayout")
       if (Modal.isWide)
       if (Modal.isWide)
         .modal-content-wide.modal-container
         .modal-content-wide.modal-container
           a.modal-close-btn.js-close-modal
           a.modal-close-btn.js-close-modal
-            i.fa.fa-times-thin
+            | ❌
           +Template.dynamic(template=Modal.getHeaderName)
           +Template.dynamic(template=Modal.getHeaderName)
           +Template.dynamic(template=Modal.getTemplateName)
           +Template.dynamic(template=Modal.getTemplateName)
       else
       else
         .modal-content.modal-container
         .modal-content.modal-container
           a.modal-close-btn.js-close-modal
           a.modal-close-btn.js-close-modal
-            i.fa.fa-times-thin
+            | ❌
           +Template.dynamic(template=Modal.getHeaderName)
           +Template.dynamic(template=Modal.getHeaderName)
           +Template.dynamic(template=Modal.getTemplateName)
           +Template.dynamic(template=Modal.getTemplateName)
 
 

+ 2 - 2
client/components/main/popup.tpl.jade

@@ -5,10 +5,10 @@
   style="left:{{offset.left}}px; top:{{offset.top}}px;{{#if offset.maxHeight}} max-height:{{offset.maxHeight}}px;{{/if}}")
   style="left:{{offset.left}}px; top:{{offset.top}}px;{{#if offset.maxHeight}} max-height:{{offset.maxHeight}}px;{{/if}}")
   .header
   .header
     a.back-btn.js-back-view(class="{{#unless hasPopupParent}}is-hidden{{/unless}}")
     a.back-btn.js-back-view(class="{{#unless hasPopupParent}}is-hidden{{/unless}}")
-      i.fa.fa-chevron-left
+      | ◀️
     span.header-title= title
     span.header-title= title
     a.close-btn.js-close-pop-over
     a.close-btn.js-close-pop-over
-      i.fa.fa-times-thin
+      | ❌
   .content-wrapper
   .content-wrapper
     //-
     //-
       We display the all stack of popup content next to each other and move
       We display the all stack of popup content next to each other and move

+ 9 - 9
client/components/migrationProgress.jade

@@ -3,7 +3,7 @@ template(name="migrationProgress")
     .migration-modal
     .migration-modal
       .migration-header
       .migration-header
         h3
         h3
-          i.fa.fa-database
+          | 🗄️
           | {{_ 'database-migration'}}
           | {{_ 'database-migration'}}
         p {{_ 'database-migration-description'}}
         p {{_ 'database-migration-description'}}
       
       
@@ -16,11 +16,11 @@ template(name="migrationProgress")
             .progress-label {{_ 'overall-progress'}}
             .progress-label {{_ 'overall-progress'}}
           
           
           .current-step
           .current-step
-            i.fa.fa-cog.fa-spin
+            | ⚙️
             | {{migrationCurrentStep}}
             | {{migrationCurrentStep}}
           
           
           .estimated-time(style="{{#unless migrationEstimatedTime}}display: none;{{/unless}}")
           .estimated-time(style="{{#unless migrationEstimatedTime}}display: none;{{/unless}}")
-            i.fa.fa-clock-o
+            | ⏰
             | {{_ 'estimated-time-remaining'}}: {{migrationEstimatedTime}}
             | {{_ 'estimated-time-remaining'}}: {{migrationEstimatedTime}}
         
         
         .migration-steps
         .migration-steps
@@ -31,11 +31,11 @@ template(name="migrationProgress")
                 .step-header
                 .step-header
                   .step-icon
                   .step-icon
                     if completed
                     if completed
-                      i.fa.fa-check-circle
+                      | ✅
                     else if isCurrentStep
                     else if isCurrentStep
-                      i.fa.fa-cog.fa-spin
+                      | ⚙️
                     else
                     else
-                      i.fa.fa-circle-o
+                      | ⭕
                   .step-info
                   .step-info
                     .step-name {{name}}
                     .step-name {{name}}
                     .step-description {{description}}
                     .step-description {{description}}
@@ -51,13 +51,13 @@ template(name="migrationProgress")
                     .progress-fill(style="width: {{progress}}%")
                     .progress-fill(style="width: {{progress}}%")
         
         
         .migration-status
         .migration-status
-          i.fa.fa-info-circle
+          | ℹ️
           | {{migrationStatus}}
           | {{migrationStatus}}
       
       
       .migration-footer
       .migration-footer
         .migration-info
         .migration-info
-          i.fa.fa-lightbulb-o
+          | 💡
           | {{_ 'migration-info-text'}}
           | {{_ 'migration-info-text'}}
         .migration-warning
         .migration-warning
-          i.fa.fa-exclamation-triangle
+          | ⚠️
           | {{_ 'migration-warning-text'}}
           | {{_ 'migration-warning-text'}}

+ 29 - 29
client/components/settings/cronSettings.jade

@@ -47,17 +47,17 @@ template(name="cronMigrations")
   .cron-migrations
   .cron-migrations
     .migration-header
     .migration-header
       h2
       h2
-        i.fa.fa-database
+        | 🗄️
         | {{_ 'database-migrations'}}
         | {{_ 'database-migrations'}}
       .migration-controls
       .migration-controls
         button.btn.btn-primary.js-start-all-migrations
         button.btn.btn-primary.js-start-all-migrations
-          i.fa.fa-play
+          | ▶️
           | {{_ 'start-all-migrations'}}
           | {{_ 'start-all-migrations'}}
         button.btn.btn-warning.js-pause-all-migrations
         button.btn.btn-warning.js-pause-all-migrations
-          i.fa.fa-pause
+          | ⏸️
           | {{_ 'pause-all-migrations'}}
           | {{_ 'pause-all-migrations'}}
         button.btn.btn-danger.js-stop-all-migrations
         button.btn.btn-danger.js-stop-all-migrations
-          i.fa.fa-stop
+          | ⏹️
           | {{_ 'stop-all-migrations'}}
           | {{_ 'stop-all-migrations'}}
     
     
     .migration-progress
     .migration-progress
@@ -68,11 +68,11 @@ template(name="cronMigrations")
         .progress-label {{_ 'overall-progress'}}
         .progress-label {{_ 'overall-progress'}}
       
       
       .current-step
       .current-step
-        i.fa.fa-cog.fa-spin
+        | ⚙️
         | {{migrationCurrentStep}}
         | {{migrationCurrentStep}}
       
       
       .migration-status
       .migration-status
-        i.fa.fa-info-circle
+        | ℹ️
         | {{migrationStatus}}
         | {{migrationStatus}}
     
     
     .migration-steps
     .migration-steps
@@ -83,11 +83,11 @@ template(name="cronMigrations")
             .step-header
             .step-header
               .step-icon
               .step-icon
                 if completed
                 if completed
-                  i.fa.fa-check-circle
+                  | ✅
                 else if isCurrentStep
                 else if isCurrentStep
-                  i.fa.fa-cog.fa-spin
+                  | ⚙️
                 else
                 else
-                  i.fa.fa-circle-o
+                  | ⭕
               .step-info
               .step-info
                 .step-name {{name}}
                 .step-name {{name}}
                 .step-description {{description}}
                 .step-description {{description}}
@@ -106,17 +106,17 @@ template(name="cronBoardOperations")
   .cron-board-operations
   .cron-board-operations
     .board-operations-header
     .board-operations-header
       h2
       h2
-        i.fa.fa-tasks
+        | 📋
         | {{_ 'board-operations'}}
         | {{_ 'board-operations'}}
       .board-operations-controls
       .board-operations-controls
         button.btn.btn-success.js-refresh-board-operations
         button.btn.btn-success.js-refresh-board-operations
-          i.fa.fa-refresh
+          | 🔄
           | {{_ 'refresh'}}
           | {{_ 'refresh'}}
         button.btn.btn-primary.js-start-test-operation
         button.btn.btn-primary.js-start-test-operation
-          i.fa.fa-play
+          | ▶️
           | {{_ 'start-test-operation'}}
           | {{_ 'start-test-operation'}}
         button.btn.btn-info.js-force-board-scan
         button.btn.btn-info.js-force-board-scan
-          i.fa.fa-search
+          | 🔍
           | {{_ 'force-board-scan'}}
           | {{_ 'force-board-scan'}}
     
     
     .board-operations-stats
     .board-operations-stats
@@ -164,7 +164,7 @@ template(name="cronBoardOperations")
     .board-operations-search
     .board-operations-search
       .search-box
       .search-box
         input.form-control.js-search-board-operations(type="text" placeholder="{{_ 'search-boards-or-operations'}}")
         input.form-control.js-search-board-operations(type="text" placeholder="{{_ 'search-boards-or-operations'}}")
-        i.fa.fa-search.search-icon
+        | 🔍.search-icon
     
     
     .board-operations-list
     .board-operations-list
       .operations-header
       .operations-header
@@ -203,36 +203,36 @@ template(name="cronBoardOperations")
                   .btn-group
                   .btn-group
                     if isRunning
                     if isRunning
                       button.btn.btn-sm.btn-warning.js-pause-operation(data-operation="{{id}}")
                       button.btn.btn-sm.btn-warning.js-pause-operation(data-operation="{{id}}")
-                        i.fa.fa-pause
+                        | ⏸️
                     else
                     else
                       button.btn.btn-sm.btn-success.js-resume-operation(data-operation="{{id}}")
                       button.btn.btn-sm.btn-success.js-resume-operation(data-operation="{{id}}")
-                        i.fa.fa-play
+                        | ▶️
                     button.btn.btn-sm.btn-danger.js-stop-operation(data-operation="{{id}}")
                     button.btn.btn-sm.btn-danger.js-stop-operation(data-operation="{{id}}")
-                      i.fa.fa-stop
+                      | ⏹️
                     button.btn.btn-sm.btn-info.js-view-details(data-operation="{{id}}")
                     button.btn.btn-sm.btn-info.js-view-details(data-operation="{{id}}")
-                      i.fa.fa-info-circle
+                      | ℹ️
       
       
       .pagination
       .pagination
         if pagination.hasPrev
         if pagination.hasPrev
           button.btn.btn-sm.btn-default.js-prev-page
           button.btn.btn-sm.btn-default.js-prev-page
-            i.fa.fa-chevron-left
+            | ◀️
             | {{_ 'previous'}}
             | {{_ 'previous'}}
         .page-info
         .page-info
           | {{_ 'page'}} {{pagination.page}} {{_ 'of'}} {{pagination.totalPages}}
           | {{_ 'page'}} {{pagination.page}} {{_ 'of'}} {{pagination.totalPages}}
         if pagination.hasNext
         if pagination.hasNext
           button.btn.btn-sm.btn-default.js-next-page
           button.btn.btn-sm.btn-default.js-next-page
             | {{_ 'next'}}
             | {{_ 'next'}}
-            i.fa.fa-chevron-right
+            | ▶️
 
 
 template(name="cronJobs")
 template(name="cronJobs")
   .cron-jobs
   .cron-jobs
     .jobs-header
     .jobs-header
       h2
       h2
-        i.fa.fa-clock-o
+        | ⏰
         | {{_ 'cron-jobs'}}
         | {{_ 'cron-jobs'}}
       .jobs-controls
       .jobs-controls
         button.btn.btn-success.js-refresh-jobs
         button.btn.btn-success.js-refresh-jobs
-          i.fa.fa-refresh
+          | 🔄
           | {{_ 'refresh'}}
           | {{_ 'refresh'}}
     
     
     .jobs-list
     .jobs-list
@@ -258,20 +258,20 @@ template(name="cronJobs")
                 .btn-group
                 .btn-group
                   if isRunning
                   if isRunning
                     button.btn.btn-sm.btn-warning.js-pause-job(data-job="{{name}}")
                     button.btn.btn-sm.btn-warning.js-pause-job(data-job="{{name}}")
-                      i.fa.fa-pause
+                      | ⏸️
                   else
                   else
                     button.btn.btn-sm.btn-success.js-start-job(data-job="{{name}}")
                     button.btn.btn-sm.btn-success.js-start-job(data-job="{{name}}")
-                      i.fa.fa-play
+                      | ▶️
                   button.btn.btn-sm.btn-danger.js-stop-job(data-job="{{name}}")
                   button.btn.btn-sm.btn-danger.js-stop-job(data-job="{{name}}")
-                    i.fa.fa-stop
+                    | ⏹️
                   button.btn.btn-sm.btn-danger.js-remove-job(data-job="{{name}}")
                   button.btn.btn-sm.btn-danger.js-remove-job(data-job="{{name}}")
-                    i.fa.fa-trash
+                    | 🗑️
 
 
 template(name="cronAddJob")
 template(name="cronAddJob")
   .cron-add-job
   .cron-add-job
     .add-job-header
     .add-job-header
       h2
       h2
-        i.fa.fa-plus
+        | ➕
         | {{_ 'add-cron-job'}}
         | {{_ 'add-cron-job'}}
     
     
     .add-job-form
     .add-job-form
@@ -302,8 +302,8 @@ template(name="cronAddJob")
         
         
         .form-actions
         .form-actions
           button.btn.btn-primary(type="submit")
           button.btn.btn-primary(type="submit")
-            i.fa.fa-plus
+            | ➕
             | {{_ 'add-job'}}
             | {{_ 'add-job'}}
           button.btn.btn-default.js-cancel-add-job
           button.btn.btn-default.js-cancel-add-job
-            i.fa.fa-times
+            | ❌
             | {{_ 'cancel'}}
             | {{_ 'cancel'}}

+ 20 - 20
client/components/settings/settingBody.jade

@@ -6,87 +6,87 @@ template(name="setting")
       .content-title.ext-box
       .content-title.ext-box
         if isGeneralSetting
         if isGeneralSetting
           span
           span
-            i.fa.fa-sign-in
+            | 🔑
             | {{_ 'registration'}}
             | {{_ 'registration'}}
         else if isEmailSetting
         else if isEmailSetting
           span
           span
-            i.fa.fa-envelope
+            | ✉️
             | {{_ 'email'}}
             | {{_ 'email'}}
         else if isAccountSetting
         else if isAccountSetting
           span
           span
-            i.fa.fa-users
+            | 👥
             | {{_ 'accounts'}}
             | {{_ 'accounts'}}
         else if isTableVisibilityModeSetting
         else if isTableVisibilityModeSetting
           span
           span
-            i.fa.fa-eye
+            | 👁️
             | {{_ 'tableVisibilityMode'}}
             | {{_ 'tableVisibilityMode'}}
         else if isAnnouncementSetting
         else if isAnnouncementSetting
           span
           span
-            i.fa.fa-bullhorn
+            | 📢
             | {{_ 'admin-announcement'}}
             | {{_ 'admin-announcement'}}
         else if isAccessibilitySetting
         else if isAccessibilitySetting
           span
           span
-            i.fa.fa-universal-access
+            | ♿
             | {{_ 'accessibility'}}
             | {{_ 'accessibility'}}
         else if isLayoutSetting
         else if isLayoutSetting
           span
           span
-            i.fa.fa-object-group
+            | 🔗
             | {{_ 'layout'}}
             | {{_ 'layout'}}
         else if isWebhookSetting
         else if isWebhookSetting
           span
           span
-            i.fa.fa-globe
+            | 🌐
             | {{_ 'global-webhook'}}
             | {{_ 'global-webhook'}}
         else if isAttachmentSettings
         else if isAttachmentSettings
           span
           span
-            i.fa.fa-paperclip
+            | 📎
             | {{_ 'attachments'}}
             | {{_ 'attachments'}}
         else if isCronSettings
         else if isCronSettings
           span
           span
-            i.fa.fa-clock-o
+            | ⏰
             | {{_ 'cron'}}
             | {{_ 'cron'}}
       .content-body
       .content-body
         .side-menu
         .side-menu
           ul
           ul
             li(class="{{#if isGeneralSetting}}active{{/if}}")
             li(class="{{#if isGeneralSetting}}active{{/if}}")
               a.js-setting-menu(data-id="registration-setting")
               a.js-setting-menu(data-id="registration-setting")
-                i.fa.fa-sign-in
+                | 🔑
                 | {{_ 'registration'}}
                 | {{_ 'registration'}}
             unless isSandstorm
             unless isSandstorm
               li(class="{{#if isEmailSetting}}active{{/if}}")
               li(class="{{#if isEmailSetting}}active{{/if}}")
                 a.js-setting-menu(data-id="email-setting")
                 a.js-setting-menu(data-id="email-setting")
-                  i.fa.fa-envelope
+                  | ✉️
                   | {{_ 'email'}}
                   | {{_ 'email'}}
             li(class="{{#if isAccountSetting}}active{{/if}}")
             li(class="{{#if isAccountSetting}}active{{/if}}")
               a.js-setting-menu(data-id="account-setting")
               a.js-setting-menu(data-id="account-setting")
-                i.fa.fa-users
+                | 👥
                 | {{_ 'accounts'}}
                 | {{_ 'accounts'}}
             li(class="{{#if isTableVisibilityModeSetting}}active{{/if}}")
             li(class="{{#if isTableVisibilityModeSetting}}active{{/if}}")
               a.js-setting-menu(data-id="tableVisibilityMode-setting")
               a.js-setting-menu(data-id="tableVisibilityMode-setting")
-                i.fa.fa-eye
+                | 👁️
                 | {{_ 'tableVisibilityMode'}}
                 | {{_ 'tableVisibilityMode'}}
             li(class="{{#if isAnnouncementSetting}}active{{/if}}")
             li(class="{{#if isAnnouncementSetting}}active{{/if}}")
               a.js-setting-menu(data-id="announcement-setting")
               a.js-setting-menu(data-id="announcement-setting")
-                i.fa.fa-bullhorn
+                | 📢
                 | {{_ 'admin-announcement'}}
                 | {{_ 'admin-announcement'}}
             li(class="{{#if isAccessibilitySetting}}active{{/if}}")
             li(class="{{#if isAccessibilitySetting}}active{{/if}}")
               a.js-setting-menu(data-id="accessibility-setting")
               a.js-setting-menu(data-id="accessibility-setting")
-                i.fa.fa-universal-access
+                | ♿
                 | {{_ 'accessibility'}}
                 | {{_ 'accessibility'}}
             li(class="{{#if isLayoutSetting}}active{{/if}}")
             li(class="{{#if isLayoutSetting}}active{{/if}}")
               a.js-setting-menu(data-id="layout-setting")
               a.js-setting-menu(data-id="layout-setting")
-                i.fa.fa-object-group
+                | 🔗
                 | {{_ 'layout'}}
                 | {{_ 'layout'}}
             li(class="{{#if isWebhookSetting}}active{{/if}}")
             li(class="{{#if isWebhookSetting}}active{{/if}}")
               a.js-setting-menu(data-id="webhook-setting")
               a.js-setting-menu(data-id="webhook-setting")
-                i.fa.fa-globe
+                | 🌐
                 | {{_ 'global-webhook'}}
                 | {{_ 'global-webhook'}}
             li(class="{{#if isAttachmentSettings}}active{{/if}}")
             li(class="{{#if isAttachmentSettings}}active{{/if}}")
               a.js-setting-menu(data-id="attachment-settings")
               a.js-setting-menu(data-id="attachment-settings")
-                i.fa.fa-paperclip
+                | 📎
                 | {{_ 'attachments'}}
                 | {{_ 'attachments'}}
             li(class="{{#if isCronSettings}}active{{/if}}")
             li(class="{{#if isCronSettings}}active{{/if}}")
               a.js-setting-menu(data-id="cron-settings")
               a.js-setting-menu(data-id="cron-settings")
-                i.fa.fa-clock-o
+                | ⏰
                 | {{_ 'cron'}}
                 | {{_ 'cron'}}
         .main-body
         .main-body
           if isLoading
           if isLoading

+ 14 - 11
client/components/swimlanes/swimlaneHeader.jade

@@ -24,16 +24,18 @@ template(name="swimlaneFixedHeader")
           | {{isTitleDefault title}}
           | {{isTitleDefault title}}
   .swimlane-header-menu
   .swimlane-header-menu
     unless currentUser.isCommentOnly
     unless currentUser.isCommentOnly
-      a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon(title="{{_ 'add-swimlane'}}")
-      a.fa.fa-navicon.js-open-swimlane-menu(title="{{_ 'swimlaneActionPopup-title'}}")
+      a.js-open-add-swimlane-menu.swimlane-header-plus-icon
+        | ➕(title="{{_ 'add-swimlane'}}")
+      a.js-open-swimlane-menu
+        | ☰(title="{{_ 'swimlaneActionPopup-title'}}")
       //// TODO: Collapse Swimlane: make button working, etc.
       //// TODO: Collapse Swimlane: make button working, etc.
       //unless collapsed
       //unless collapsed
       //  a.js-collapse-swimlane(title="{{_ 'collapse'}}")
       //  a.js-collapse-swimlane(title="{{_ 'collapse'}}")
       //    i.fa.fa-arrow-down.swimlane-header-collapse-down
       //    i.fa.fa-arrow-down.swimlane-header-collapse-down
-      //    i.fa.fa-arrow-up.swimlane-header-collapse-up
+      //    ⬆️.swimlane-header-collapse-up
       //if collapsed
       //if collapsed
       //  a.js-collapse-swimlane(title="{{_ 'uncollapse'}}")
       //  a.js-collapse-swimlane(title="{{_ 'uncollapse'}}")
-      //    i.fa.fa-arrow-up.swimlane-header-collapse-up
+      //    ⬆️.swimlane-header-collapse-up
       //    i.fa.fa-arrow-down.swimlane-header-collapse-down
       //    i.fa.fa-arrow-down.swimlane-header-collapse-down
       unless isTouchScreen
       unless isTouchScreen
         if isShowDesktopDragHandles
         if isShowDesktopDragHandles
@@ -46,33 +48,34 @@ template(name="editSwimlaneTitleForm")
     input.list-name-input.full-line(type="text" value="{{isTitleDefault title}}" autofocus)
     input.list-name-input.full-line(type="text" value="{{isTitleDefault title}}" autofocus)
     .edit-controls.clearfix
     .edit-controls.clearfix
       button.primary.confirm(type="submit") {{_ 'save'}}
       button.primary.confirm(type="submit") {{_ 'save'}}
-      a.fa.fa-times-thin.js-close-inlined-form
+      a.js-close-inlined-form
+        | ❌
 
 
 template(name="swimlaneActionPopup")
 template(name="swimlaneActionPopup")
   unless currentUser.isCommentOnly
   unless currentUser.isCommentOnly
     ul.pop-over-list
     ul.pop-over-list
        if currentUser.isBoardAdmin
        if currentUser.isBoardAdmin
          li: a.js-set-swimlane-color
          li: a.js-set-swimlane-color
-          i.fa.fa-paint-brush
+          | 🎨
           | {{_ 'select-color'}}
           | {{_ 'select-color'}}
        li: a.js-set-swimlane-height
        li: a.js-set-swimlane-height
-        i.fa.fa-arrows-v
+        | ↕️
         |  {{_ 'set-swimlane-height'}}
         |  {{_ 'set-swimlane-height'}}
     if currentUser.isBoardAdmin
     if currentUser.isBoardAdmin
       unless this.isTemplateContainer
       unless this.isTemplateContainer
         hr
         hr
         ul.pop-over-list
         ul.pop-over-list
           li: a.js-close-swimlane
           li: a.js-close-swimlane
-            i.fa.fa-arrow-right
-            i.fa.fa-archive
+            | ▶️
+            | 📦
             | {{_ 'archive-swimlane'}}
             | {{_ 'archive-swimlane'}}
         ul.pop-over-list
         ul.pop-over-list
           li: a.js-copy-swimlane
           li: a.js-copy-swimlane
-            i.fa.fa-copy
+            | 📋
             | {{_ 'copy-swimlane'}}
             | {{_ 'copy-swimlane'}}
         ul.pop-over-list
         ul.pop-over-list
           li: a.js-move-swimlane
           li: a.js-move-swimlane
-            i.fa.fa-arrow-up
+            | ⬆️
             | {{_ 'move-swimlane'}}
             | {{_ 'move-swimlane'}}
 
 
 template(name="swimlaneAddPopup")
 template(name="swimlaneAddPopup")

+ 8 - 6
client/components/users/userAvatar.jade

@@ -13,7 +13,7 @@ template(name="userAvatar")
       if showEdit
       if showEdit
         if $eq currentUser._id userData._id
         if $eq currentUser._id userData._id
           a.edit-avatar.js-change-avatar
           a.edit-avatar.js-change-avatar
-            i.fa.fa-pencil
+            | ✏️
 
 
 template(name="userAvatarInitials")
 template(name="userAvatarInitials")
   svg.avatar.avatar-initials(viewBox="0 0 {{viewPortWidth}} 15")
   svg.avatar.avatar-initials(viewBox="0 0 {{viewPortWidth}} 15")
@@ -32,7 +32,8 @@ template(name="boardOrgRow")
     td
     td
       if currentUser.isBoardAdmin
       if currentUser.isBoardAdmin
         a.member.orgOrTeamMember.add-member.js-manage-board-removeOrg(title="{{_ 'remove-from-board'}}")
         a.member.orgOrTeamMember.add-member.js-manage-board-removeOrg(title="{{_ 'remove-from-board'}}")
-          i.removeTeamFaMinus.fa.fa-minus
+          i.removeTeamFaMinus
+            | ➖
         .divaddfaplusminus
         .divaddfaplusminus
           | {{_ 'remove-btn'}}
           | {{_ 'remove-btn'}}
 
 
@@ -45,7 +46,8 @@ template(name="boardTeamRow")
     td
     td
       if currentUser.isBoardAdmin
       if currentUser.isBoardAdmin
         a.member.orgOrTeamMember.add-member.js-manage-board-removeTeam(title="{{_ 'remove-from-board'}}")
         a.member.orgOrTeamMember.add-member.js-manage-board-removeTeam(title="{{_ 'remove-from-board'}}")
-          i.removeTeamFaMinus.fa.fa-minus
+          i.removeTeamFaMinus
+            | ➖
         .divaddfaplusminus
         .divaddfaplusminus
           | {{_ 'remove-btn'}}
           | {{_ 'remove-btn'}}
 
 
@@ -88,7 +90,7 @@ template(name="changeAvatarPopup")
           img.avatar.avatar-image(src="{{link}}?auth=false&brokenIsFine=true")
           img.avatar.avatar-image(src="{{link}}?auth=false&brokenIsFine=true")
         | {{_ 'uploaded-avatar'}}
         | {{_ 'uploaded-avatar'}}
         if isSelected
         if isSelected
-          i.fa.fa-check
+          | ✅
         p.sub-name
         p.sub-name
           unless isSelected
           unless isSelected
             a.js-delete-avatar {{_ 'delete'}}
             a.js-delete-avatar {{_ 'delete'}}
@@ -99,7 +101,7 @@ template(name="changeAvatarPopup")
         +userAvatarInitials(userId=currentUser._id)
         +userAvatarInitials(userId=currentUser._id)
       | {{_ 'initials' }}
       | {{_ 'initials' }}
       if noAvatarUrl
       if noAvatarUrl
-        i.fa.fa-check
+        | ✅
        p.sub-name {{_ 'default-avatar'}}
        p.sub-name {{_ 'default-avatar'}}
   input.hide.js-upload-avatar-input(accept="image/*;capture=camera" type="file")
   input.hide.js-upload-avatar-input(accept="image/*;capture=camera" type="file")
   if Meteor.settings.public.avatarsUploadMaxSize
   if Meteor.settings.public.avatarsUploadMaxSize
@@ -110,7 +112,7 @@ template(name="changeAvatarPopup")
     br
     br
   | {{_ 'invalid-file'}}
   | {{_ 'invalid-file'}}
   button.full.js-upload-avatar
   button.full.js-upload-avatar
-    i.fa.fa-upload
+    | 📤
     | {{_ 'upload-avatar'}}
     | {{_ 'upload-avatar'}}
 
 
 template(name="cardMemberPopup")
 template(name="cardMemberPopup")

+ 20 - 20
client/components/users/userHeader.jade

@@ -15,92 +15,92 @@ template(name="memberMenuPopup")
     // Bookmarks at the very top
     // Bookmarks at the very top
     li
     li
       a.js-open-bookmarks
       a.js-open-bookmarks
-        i.fa.fa-bookmark
+        | 🔖
         | {{_ 'bookmarks'}}
         | {{_ 'bookmarks'}}
     with currentUser
     with currentUser
       li
       li
         a.js-my-cards(href="{{pathFor 'my-cards'}}")
         a.js-my-cards(href="{{pathFor 'my-cards'}}")
-          i.fa.fa-list
+          | 📋
           | {{_ 'my-cards'}}
           | {{_ 'my-cards'}}
       li
       li
         a.js-due-cards(href="{{pathFor 'due-cards'}}")
         a.js-due-cards(href="{{pathFor 'due-cards'}}")
-          i.fa.fa-calendar
+          | 📅
           | {{_ 'dueCards-title'}}
           | {{_ 'dueCards-title'}}
       li
       li
         a.js-global-search(href="{{pathFor 'global-search'}}")
         a.js-global-search(href="{{pathFor 'global-search'}}")
-          i.fa.fa-search
+          | 🔍
           | {{_ 'globalSearch-title'}}
           | {{_ 'globalSearch-title'}}
       li
       li
         a(href="{{pathFor 'home'}}")
         a(href="{{pathFor 'home'}}")
-          span.fa.fa-home
+          | 🏠
           | {{_ 'all-boards'}}
           | {{_ 'all-boards'}}
       li
       li
         a(href="{{pathFor 'public'}}")
         a(href="{{pathFor 'public'}}")
-          span.fa.fa-globe
+          | 🌐
           | {{_ 'public'}}
           | {{_ 'public'}}
       li
       li
         a.board-header-btn.js-open-archived-board
         a.board-header-btn.js-open-archived-board
-          i.fa.fa-archive
+          | 📦
           span {{_ 'archives'}}
           span {{_ 'archives'}}
       li
       li
         a.js-notifications-drawer-toggle
         a.js-notifications-drawer-toggle
-          i.fa.fa-bell
+          | 🔔
           | {{_ 'notifications'}}
           | {{_ 'notifications'}}
       if currentSetting.customHelpLinkUrl
       if currentSetting.customHelpLinkUrl
         li
         li
           a(href="{{currentSetting.customHelpLinkUrl}}", title="{{_ 'help'}}", target="_blank", rel="noopener noreferrer")
           a(href="{{currentSetting.customHelpLinkUrl}}", title="{{_ 'help'}}", target="_blank", rel="noopener noreferrer")
-            i.fa.fa-question
+            | ❓
             | {{_ 'help'}}
             | {{_ 'help'}}
       unless currentUser.isWorker
       unless currentUser.isWorker
         ul.pop-over-list
         ul.pop-over-list
           li
           li
             a(href="{{pathFor 'board' id=templatesBoardId slug=templatesBoardSlug}}")
             a(href="{{pathFor 'board' id=templatesBoardId slug=templatesBoardSlug}}")
-              i.fa.fa-clone
+              | 📋
               | {{_ 'templates'}}
               | {{_ 'templates'}}
       if currentUser.isAdmin
       if currentUser.isAdmin
         li
         li
           a.js-go-setting(href="{{pathFor 'setting'}}")
           a.js-go-setting(href="{{pathFor 'setting'}}")
-            i.fa.fa-lock
+            | 🔒
             | {{_ 'admin-panel'}}
             | {{_ 'admin-panel'}}
       hr
       hr
       if isSameDomainNameSettingValue
       if isSameDomainNameSettingValue
         li
         li
           a.js-invite-people
           a.js-invite-people
-            i.fa.fa-envelope
+            | ✉️
             | {{_ 'invite-people'}}
             | {{_ 'invite-people'}}
       if isNotOAuth2AuthenticationMethod
       if isNotOAuth2AuthenticationMethod
         li
         li
           a.js-edit-profile
           a.js-edit-profile
-            i.fa.fa-user
+            | 👤
             | {{_ 'edit-profile'}}
             | {{_ 'edit-profile'}}
       li
       li
         a.js-change-settings
         a.js-change-settings
-          i.fa.fa-cog
+          | ⚙️
           | {{_ 'change-settings'}}
           | {{_ 'change-settings'}}
       li
       li
         a.js-change-avatar
         a.js-change-avatar
-          i.fa.fa-picture-o
+          | 🖼️
           | {{_ 'edit-avatar'}}
           | {{_ 'edit-avatar'}}
       unless isSandstorm
       unless isSandstorm
         if isNotOAuth2AuthenticationMethod
         if isNotOAuth2AuthenticationMethod
           li
           li
             a.js-change-password
             a.js-change-password
-              i.fa.fa-key
+              | 🔑
               | {{_ 'changePasswordPopup-title'}}
               | {{_ 'changePasswordPopup-title'}}
       li
       li
         a.js-change-language
         a.js-change-language
-          i.fa.fa-flag
+          | 🏁
           | {{_ 'changeLanguagePopup-title'}}
           | {{_ 'changeLanguagePopup-title'}}
       //li
       //li
       //  a.js-support
       //  a.js-support
-      //    i.fa.fa-question-circle
+      //    -circle
       //    | {{_ 'support'}}
       //    | {{_ 'support'}}
   unless isSandstorm
   unless isSandstorm
     hr
     hr
     ul.pop-over-list
     ul.pop-over-list
       li
       li
         a.js-logout
         a.js-logout
-          i.fa.fa-sign-out
+          | 🚪
           | {{_ 'log-out'}}
           | {{_ 'log-out'}}
 
 
 template(name="invitePeoplePopup")
 template(name="invitePeoplePopup")
@@ -190,7 +190,7 @@ template(name="changeSettingsPopup")
           | {{_ 'show-cards-minimum-count'}}
           | {{_ 'show-cards-minimum-count'}}
         input#show-cards-count-at.inline-input.left(type="number" value="#{showCardsCountAt}" min="-1")
         input#show-cards-count-at.inline-input.left(type="number" value="#{showCardsCountAt}" min="-1")
         label.bold.clear
         label.bold.clear
-          i.fa.fa-calendar
+          | 📅
           | {{_ 'start-day-of-week'}}
           | {{_ 'start-day-of-week'}}
         select#start-day-of-week.inline-input.left
         select#start-day-of-week.inline-input.left
           each day in weekDays startDayOfWeek
           each day in weekDays startDayOfWeek