Browse Source

Add my library section in menu

Chocobozzz 5 years ago
parent
commit
a55052c9ba

+ 1 - 0
CREDITS.md

@@ -211,4 +211,5 @@
 # Icons
 
  * [Robbie Pearce](https://robbiepearce.com/softies/)
+ * [Fork-Awesome](https://github.com/ForkAwesome/Fork-Awesome)
  * playlist add by Google

+ 18 - 9
client/src/app/+my-account/my-account.component.ts

@@ -21,23 +21,28 @@ export class MyAccountComponent {
       children: [
         {
           label: this.i18n('My channels'),
-          routerLink: '/my-account/video-channels'
+          routerLink: '/my-account/video-channels',
+          iconName: 'folder'
         },
         {
           label: this.i18n('My videos'),
-          routerLink: '/my-account/videos'
+          routerLink: '/my-account/videos',
+          iconName: 'videos'
         },
         {
           label: this.i18n('My playlists'),
-          routerLink: '/my-account/video-playlists'
+          routerLink: '/my-account/video-playlists',
+          iconName: 'playlists'
         },
         {
           label: this.i18n('My subscriptions'),
-          routerLink: '/my-account/subscriptions'
+          routerLink: '/my-account/subscriptions',
+          iconName: 'subscriptions'
         },
         {
           label: this.i18n('My history'),
-          routerLink: '/my-account/history/videos'
+          routerLink: '/my-account/history/videos',
+          iconName: 'history'
         }
       ]
     }
@@ -45,7 +50,8 @@ export class MyAccountComponent {
     if (this.isVideoImportEnabled()) {
       libraryEntries.children.push({
         label: 'My imports',
-        routerLink: '/my-account/video-imports'
+        routerLink: '/my-account/video-imports',
+        iconName: 'cloud-download'
       })
     }
 
@@ -54,15 +60,18 @@ export class MyAccountComponent {
       children: [
         {
           label: this.i18n('Muted accounts'),
-          routerLink: '/my-account/blocklist/accounts'
+          routerLink: '/my-account/blocklist/accounts',
+          iconName: 'user'
         },
         {
           label: this.i18n('Muted instances'),
-          routerLink: '/my-account/blocklist/servers'
+          routerLink: '/my-account/blocklist/servers',
+          iconName: 'server'
         },
         {
           label: this.i18n('Ownership changes'),
-          routerLink: '/my-account/ownership'
+          routerLink: '/my-account/ownership',
+          iconName: 'im-with-her'
         }
       ]
     }

+ 37 - 21
client/src/app/menu/menu.component.html

@@ -1,5 +1,5 @@
 <div class="menu-wrapper">
-  <menu>
+  <menu [ngClass]="{ 'logged-in': isLoggedIn }">
     <div class="top-menu">
       <div *ngIf="isLoggedIn" class="logged-in-block">
         <my-avatar-notification [user]="user"></my-avatar-notification>
@@ -13,20 +13,16 @@
           <my-global-icon iconName="more-vertical" ngbDropdownToggle role="button"></my-global-icon>
 
           <div ngbDropdownMenu>
-            <a *ngIf="user.account" i18n [routerLink]="[ '/accounts', user.account.nameWithHost ]" class="dropdown-item">
-             My public profile
+            <a *ngIf="user.account" [routerLink]="[ '/accounts', user.account.nameWithHost ]" class="dropdown-item">
+              <my-global-icon iconName="go"></my-global-icon> <ng-container i18n>My public profile</ng-container>
             </a>
 
-            <a i18n routerLink="/my-account" class="dropdown-item">
-              My account
+            <a routerLink="/my-account" class="dropdown-item">
+              <my-global-icon iconName="user"></my-global-icon> <ng-container i18n>My account</ng-container>
             </a>
 
-            <a i18n routerLink="/my-account/videos" class="dropdown-item">
-              My videos
-            </a>
-
-            <a i18n (click)="logout($event)" class="dropdown-item" href="#">
-              Log out
+            <a (click)="logout($event)" class="dropdown-item" href="#">
+              <my-global-icon iconName="sign-out"></my-global-icon> <ng-container i18n>Log out</ng-container>
             </a>
           </div>
         </div>
@@ -37,31 +33,51 @@
         <a i18n *ngIf="isRegistrationAllowed()" routerLink="/signup" class="create-account-button">Create an account</a>
       </div>
 
-      <div class="panel-block">
-        <div i18n class="block-title">Videos</div>
+      <div *ngIf="isLoggedIn" class="panel-block">
+        <div i18n class="block-title">My library</div>
+
+        <a routerLink="/my-account/videos" routerLinkActive="active">
+          <my-global-icon iconName="videos"></my-global-icon>
+          <ng-container i18n>Videos</ng-container>
+        </a>
+
+        <a routerLink="/my-account/video-playlists" routerLinkActive="active">
+          <my-global-icon iconName="playlists"></my-global-icon>
+          <ng-container i18n>Playlists</ng-container>
+        </a>
 
-        <a *ngIf="isLoggedIn" routerLink="/videos/subscriptions" routerLinkActive="active">
-          <span class="icon icon-videos-subscriptions"></span>
+        <a routerLink="/videos/subscriptions" routerLinkActive="active">
+          <my-global-icon iconName="subscriptions"></my-global-icon>
           <ng-container i18n>Subscriptions</ng-container>
         </a>
 
+        <a routerLink="/my-account/history/videos" routerLinkActive="active">
+          <my-global-icon iconName="history"></my-global-icon>
+          <ng-container i18n>History</ng-container>
+        </a>
+
+      </div>
+
+      <div class="panel-block">
+        <div i18n class="block-title">Videos</div>
+
         <a routerLink="/videos/overview" routerLinkActive="active">
-          <span class="icon icon-videos-overview"></span>
+          <my-global-icon iconName="globe"></my-global-icon>
           <ng-container i18n>Overview</ng-container>
         </a>
 
         <a routerLink="/videos/trending" routerLinkActive="active">
-          <span class="icon icon-videos-trending"></span>
+          <my-global-icon iconName="trending"></my-global-icon>
           <ng-container i18n>Trending</ng-container>
         </a>
 
         <a routerLink="/videos/recently-added" routerLinkActive="active">
-          <span class="icon icon-videos-recently-added"></span>
+          <my-global-icon iconName="recently-added"></my-global-icon>
           <ng-container i18n>Recently added</ng-container>
         </a>
 
         <a routerLink="/videos/local" routerLinkActive="active">
-          <span class="icon icon-videos-local"></span>
+          <my-global-icon iconName="home"></my-global-icon>
           <ng-container i18n>Local</ng-container>
         </a>
       </div>
@@ -70,12 +86,12 @@
         <div class="block-title" i18n>More</div>
 
         <a *ngIf="userHasAdminAccess" [routerLink]="getFirstAdminRouteAvailable()" routerLinkActive="active">
-          <span class="icon icon-administration"></span>
+          <my-global-icon iconName="administration"></my-global-icon>
           <ng-container i18n>Administration</ng-container>
         </a>
 
         <a routerLink="/about" routerLinkActive="active">
-          <span class="icon icon-about"></span>
+          <my-global-icon iconName="about"></my-global-icon>
           <ng-container i18n>About</ng-container>
         </a>
       </div>

+ 44 - 42
client/src/app/menu/menu.component.scss

@@ -26,6 +26,16 @@ menu {
     overflow-y: auto;
   }
 
+  &.logged-in {
+    .panel-block {
+      margin-bottom: 25px;
+    }
+
+    .block-title {
+      margin-bottom: 15px;
+    }
+  }
+
   .top-menu {
     flex-grow: 1;
     width: $menu-width;
@@ -37,7 +47,7 @@ menu {
     display: flex;
     align-items: center;
     justify-content: center;
-    margin-bottom: 35px;
+    margin-bottom: 20px;
 
     .logged-in-info {
       @include ellipsis;
@@ -74,6 +84,24 @@ menu {
           border: none;
         }
       }
+
+      .dropdown-item {
+        @include dropdown-with-icon-item;
+
+        my-global-icon {
+          @include apply-svg-color(var(--mainForegroundColor));
+
+          width: 22px;
+          height: 22px;
+
+          &[iconName="sign-out"] {
+            position: relative;
+            right: -1px;
+            height: 21px;
+            width: 21px;
+          }
+        }
+      }
     }
   }
 
@@ -134,57 +162,31 @@ menu {
         background-color: rgba(255, 255, 255, 0.10);
       }
 
-      .icon {
-        @include icon(22px);
+      my-global-icon {
+        @include apply-svg-color(#808080);
 
+        display: flex;
+        width: 22px;
+        height: 22px;
         margin-right: 18px;
 
-        &.icon-videos-subscriptions {
-          position: relative;
-          top: -1px;
-          background-image: url('../../assets/images/menu/subscriptions.svg');
-        }
-
-        &.icon-videos-overview {
-          position: relative;
-          background-image: url('../../assets/images/menu/globe.svg');
-        }
-
-        &.icon-videos-trending {
-          position: relative;
-          top: -1px;
-          background-image: url('../../assets/images/menu/trending.svg');
-        }
+        &[iconName="playlists"] {
+          height: 24px;
+          width: 24px;
 
-        &.icon-videos-recently-added {
-          width: 23px;
-          height: 23px;
-          background-image: url('../../assets/images/menu/recently-added.svg');
+          margin-right: 16px;
         }
 
-        &.icon-videos-local {
-          width: 23px;
-          height: 23px;
-
+        &[iconName="videos"] {
           position: relative;
-          top: -1px;
-
-          background-image: url('../../assets/images/menu/home.svg');
-        }
-
-        &.icon-administration {
-          width: 23px;
-          height: 23px;
-
-          background-image: url('../../assets/images/menu/administration.svg');
+          right: -1px;
         }
+      }
 
-        &.icon-about  {
-          width: 23px;
-          height: 23px;
+      .icon {
+        @include icon(22px);
 
-          background-image: url('../../assets/images/menu/about.svg');
-        }
+        margin-right: 18px;
       }
     }
   }

+ 16 - 1
client/src/app/shared/images/global-icon.component.ts

@@ -2,6 +2,8 @@ import { Component, ElementRef, Input, OnInit } from '@angular/core'
 
 const icons = {
   'add': require('../../../assets/images/global/add.html'),
+  'user': require('../../../assets/images/global/user.html'),
+  'sign-out': require('../../../assets/images/global/sign-out.html'),
   'syndication': require('../../../assets/images/global/syndication.html'),
   'help': require('../../../assets/images/global/help.html'),
   'sparkle': require('../../../assets/images/global/sparkle.html'),
@@ -11,12 +13,15 @@ const icons = {
   'no': require('../../../assets/images/global/no.html'),
   'cloud-download': require('../../../assets/images/global/cloud-download.html'),
   'undo': require('../../../assets/images/global/undo.html'),
+  'history': require('../../../assets/images/global/history.html'),
   'circle-tick': require('../../../assets/images/global/circle-tick.html'),
   'cog': require('../../../assets/images/global/cog.html'),
   'download': require('../../../assets/images/global/download.html'),
+  'go': require('../../../assets/images/menu/go.html'),
   'edit': require('../../../assets/images/global/edit.html'),
   'im-with-her': require('../../../assets/images/global/im-with-her.html'),
   'delete': require('../../../assets/images/global/delete.html'),
+  'server': require('../../../assets/images/global/server.html'),
   'cross': require('../../../assets/images/global/cross.html'),
   'validate': require('../../../assets/images/global/validate.html'),
   'tick': require('../../../assets/images/global/tick.html'),
@@ -28,7 +33,17 @@ const icons = {
   'share': require('../../../assets/images/video/share.html'),
   'upload': require('../../../assets/images/video/upload.html'),
   'playlist-add': require('../../../assets/images/video/playlist-add.html'),
-  'play': require('../../../assets/images/global/play.html')
+  'play': require('../../../assets/images/global/play.html'),
+  'playlists': require('../../../assets/images/global/playlists.html'),
+  'about': require('../../../assets/images/menu/about.html'),
+  'globe': require('../../../assets/images/menu/globe.html'),
+  'home': require('../../../assets/images/menu/home.html'),
+  'recently-added': require('../../../assets/images/menu/recently-added.html'),
+  'trending': require('../../../assets/images/menu/trending.html'),
+  'videos': require('../../../assets/images/global/videos.html'),
+  'folder': require('../../../assets/images/global/folder.html'),
+  'administration': require('../../../assets/images/menu/administration.html'),
+  'subscriptions': require('../../../assets/images/menu/subscriptions.html')
 }
 
 export type GlobalIconName = keyof typeof icons

+ 5 - 1
client/src/app/shared/menu/top-menu-dropdown.component.html

@@ -13,7 +13,11 @@
       </span>
 
       <div ngbDropdownMenu>
-        <a *ngFor="let menuChild of menuEntry.children" class="dropdown-item" [routerLink]="menuChild.routerLink">{{ menuChild.label }}</a>
+        <a *ngFor="let menuChild of menuEntry.children" class="dropdown-item" [ngClass]="{ icon: hasIcons }" [routerLink]="menuChild.routerLink">
+          <my-global-icon *ngIf="menuChild.iconName" [iconName]="menuChild.iconName"></my-global-icon>
+
+          {{ menuChild.label }}
+        </a>
       </div>
     </div>
 

+ 9 - 0
client/src/app/shared/menu/top-menu-dropdown.component.scss

@@ -1,3 +1,6 @@
+@import '_variables';
+@import '_mixins';
+
 .parent-entry {
   span[role=button] {
     cursor: pointer;
@@ -16,3 +19,9 @@
 /deep/ .dropdown-menu {
   margin-top: 0 !important;
 }
+
+.icon {
+  @include dropdown-with-icon-item;
+
+  top: -1px;
+}

+ 9 - 1
client/src/app/shared/menu/top-menu-dropdown.component.ts

@@ -3,6 +3,7 @@ import { filter, take } from 'rxjs/operators'
 import { NavigationEnd, Router } from '@angular/router'
 import { Subscription } from 'rxjs'
 import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap'
+import { GlobalIconName } from '@app/shared/images/global-icon.component'
 
 export type TopMenuDropdownParam = {
   label: string
@@ -11,6 +12,8 @@ export type TopMenuDropdownParam = {
   children?: {
     label: string
     routerLink: string
+
+    iconName?: GlobalIconName
   }[]
 }
 
@@ -23,6 +26,7 @@ export class TopMenuDropdownComponent implements OnInit, OnDestroy {
   @Input() menuEntries: TopMenuDropdownParam[] = []
 
   suffixLabels: { [ parentLabel: string ]: string }
+  hasIcons = false
 
   private openedOnHover = false
   private routeSub: Subscription
@@ -35,6 +39,10 @@ export class TopMenuDropdownComponent implements OnInit, OnDestroy {
     this.routeSub = this.router.events
                         .pipe(filter(event => event instanceof NavigationEnd))
                         .subscribe(() => this.updateChildLabels(window.location.pathname))
+
+    this.hasIcons = this.menuEntries.some(
+      e => e.children && e.children.some(c => !!c.iconName)
+    )
   }
 
   ngOnDestroy () {
@@ -48,7 +56,7 @@ export class TopMenuDropdownComponent implements OnInit, OnDestroy {
     // Menu was closed
     dropdown.openChange
             .pipe(take(1))
-            .subscribe(e => this.openedOnHover = false)
+            .subscribe(() => this.openedOnHover = false)
   }
 
   dropdownAnchorClicked (dropdown: NgbDropdown) {

+ 10 - 0
client/src/assets/images/global/folder.html

@@ -0,0 +1,10 @@
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Artboard-4" transform="translate(-708.000000, -115.000000)">
+            <g id="16" transform="translate(708.000000, 115.000000)">
+                <path d="M11.5857864,17 L14.2928932,19.7071068 L14.5857864,20 L15,20 L20.009222,20 C21.1044506,20 22,19.102094 22,18.0014977 L22,6.99850233 C22,5.89626364 21.1085926,5 20.0066023,5 L3.99339768,5 C2.89217541,5 2,5.89385529 2,6.99539757 L2,15.0046024 C2,16.099013 2.89670181,17 3.99754465,17 L11.5857864,17 Z" id="Rectangle-406" stroke="#000000" stroke-width="2" stroke-linejoin="round" transform="translate(12.000000, 12.500000) scale(1, -1) translate(-12.000000, -12.500000) "/>
+                <path d="M3,5 C3,4.44771525 3.4454627,4 3.99871095,4 L12.5,4 L10.5,6 L3.99594209,6 C3.44589846,6 3,5.55613518 3,5 L3,5 Z" id="Rectangle-409" fill="#000000"/>
+            </g>
+        </g>
+    </g>
+</svg>

+ 11 - 0
client/src/assets/images/global/history.html

@@ -0,0 +1,11 @@
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
+        <g id="Artboard-4" transform="translate(-620.000000, -863.000000)" stroke="#000000" stroke-width="2">
+            <g id="354" transform="translate(620.000000, 863.000000)">
+                <path d="M6.63582585,18.3637479 C8.26452234,19.9925528 10.5146102,21 13,21 L13,21 C17.9705627,21 22,16.9705627 22,12 C22,7.02943725 17.9705627,3 13,3 C8.02943725,3 4,7.02943725 4,12" id="Oval-203"/>
+                <polygon id="Path-282" fill="#000000" points="1.5 11 7.5 11 4.5 14"/>
+                <polyline id="Path-283" points="13 7 13 12 15.5 14.5"/>
+            </g>
+        </g>
+    </g>
+</svg>

+ 9 - 0
client/src/assets/images/global/playlists.html

@@ -0,0 +1,9 @@
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Artboard-4" transform="translate(-664.000000, -467.000000)" stroke="#000000">
+            <g id="175" transform="translate(664.000000, 467.000000)">
+                <path stoke="#000000" d="M7.5,7 C7.5,6.72427445 7.72568093,6.5 8.00684547,6.5 L19.9931545,6.5 C20.2754761,6.5 20.5,6.72240424 20.5,7 C20.5,7.27572555 20.2743191,7.5 19.9931545,7.5 L8.00684547,7.5 C7.72452386,7.5 7.5,7.27759576 7.5,7 Z M7.5,12 C7.5,11.7242745 7.72568093,11.5 8.00684547,11.5 L19.9931545,11.5 C20.2754761,11.5 20.5,11.7224042 20.5,12 C20.5,12.2757255 20.2743191,12.5 19.9931545,12.5 L8.00684547,12.5 C7.72452386,12.5 7.5,12.2775958 7.5,12 Z M7.5,17 C7.5,16.7242745 7.72568093,16.5 8.00684547,16.5 L19.9931545,16.5 C20.2754761,16.5 20.5,16.7224042 20.5,17 C20.5,17.2757255 20.2743191,17.5 19.9931545,17.5 L8.00684547,17.5 C7.72452386,17.5 7.5,17.2775958 7.5,17 Z M4,7.5 C3.72385763,7.5 3.5,7.27614237 3.5,7 C3.5,6.72385763 3.72385763,6.5 4,6.5 C4.27614237,6.5 4.5,6.72385763 4.5,7 C4.5,7.27614237 4.27614237,7.5 4,7.5 Z M4,12.5 C3.72385763,12.5 3.5,12.2761424 3.5,12 C3.5,11.7238576 3.72385763,11.5 4,11.5 C4.27614237,11.5 4.5,11.7238576 4.5,12 C4.5,12.2761424 4.27614237,12.5 4,12.5 Z M4,17.5 C3.72385763,17.5 3.5,17.2761424 3.5,17 C3.5,16.7238576 3.72385763,16.5 4,16.5 C4.27614237,16.5 4.5,16.7238576 4.5,17 C4.5,17.2761424 4.27614237,17.5 4,17.5 Z" id="Combined-Shape"/>
+            </g>
+        </g>
+    </g>
+</svg>

+ 15 - 0
client/src/assets/images/global/server.html

@@ -0,0 +1,15 @@
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Artboard-4" transform="translate(-796.000000, -643.000000)">
+            <g id="258" transform="translate(796.000000, 643.000000)">
+                <ellipse id="Oval-140" stroke="#000000" stroke-width="2" cx="12" cy="6" rx="9" ry="3"/>
+                <path d="M3,10.5 C3,12.1568542 7.02943725,13.5 12,13.5 L12,13.5 C16.9705627,13.5 21,12.1568542 21,10.5" id="Oval-140" stroke="#000000"/>
+                <path d="M3,14.5 C3,16.1568542 7.02943725,17.5 12,17.5 C16.9705627,17.5 21,16.1568542 21,14.5" id="Oval-140" stroke="#000000"/>
+                <path d="M3,5.98958785 L3,19 C3,20.6568542 7.02943725,22 12,22 C16.9705627,22 21,20.6568542 21,19 L21,5.98958785" id="Oval-140" stroke="#000000" stroke-width="2"/>
+                <circle id="Oval-141" fill="#000000" cx="18.5" cy="10.5" r="1"/>
+                <circle id="Oval-141" fill="#000000" cx="18.5" cy="14.5" r="1"/>
+                <circle id="Oval-141" fill="#000000" cx="18.5" cy="18.5" r="1"/>
+            </g>
+        </g>
+    </g>
+</svg>

+ 3 - 0
client/src/assets/images/global/sign-out.html

@@ -0,0 +1,3 @@
+<svg viewBox="0 0 1536 1536" width="1536" height="1536" xmlns="http://www.w3.org/2000/svg">
+    <path fill="#000000" d="M640 1440c0 28 13 96-32 96H288c-159 0-288-129-288-288V544c0-159 129-288 288-288h320c17 0 32 15 32 32 0 28 13 96-32 96H288c-88 0-160 72-160 160v704c0 88 72 160 160 160h288c25 0 64-5 64 32zm928-544c0 17-7 33-19 45l-544 544c-12 12-28 19-45 19-35 0-64-29-64-64v-288H448c-35 0-64-29-64-64V704c0-35 29-64 64-64h448V352c0-35 29-64 64-64 17 0 33 7 45 19l544 544c12 12 19 28 19 45z"/>
+</svg>

+ 10 - 0
client/src/assets/images/global/user.html

@@ -0,0 +1,10 @@
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Artboard-4" transform="translate(-532.000000, -159.000000)" stroke="#000000" stroke-width="2">
+            <g id="32" transform="translate(532.000000, 159.000000)">
+                <path d="M2,21 C2,21 1.5,16 7,16 C12.5,16 11.512498,16 17.006249,16 C22.5,16 22.0062485,21 22.0062485,21" id="Path-41" stroke-linecap="round" stroke-linejoin="round"/>
+                <circle id="Oval-40" cx="12" cy="8" r="5"/>
+            </g>
+        </g>
+    </g>
+</svg>

+ 14 - 0
client/src/assets/images/global/videos.html

@@ -0,0 +1,14 @@
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Artboard-4" transform="translate(-312.000000, -511.000000)">
+            <g id="187" transform="translate(312.000000, 511.000000)">
+                <rect id="Rectangle-124" stroke="#000000" stroke-width="2" x="3" y="6" width="18" height="16" rx="1"/>
+
+                <polygon fill="#000000" id="Triangle-1" points="10 17.5 10 10.4 15.5 13.9"/>
+
+                <rect id="Rectangle-125" fill="#000000" x="4" y="3" width="16" height="1" rx="0.5"/>
+                <rect id="Rectangle-125" fill="#000000" x="5" y="1" width="14" height="1" rx="0.5"/>
+            </g>
+        </g>
+    </g>
+</svg>

+ 14 - 0
client/src/assets/images/global/videos.svg

@@ -0,0 +1,14 @@
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Artboard-4" transform="translate(-312.000000, -511.000000)">
+            <g id="187" transform="translate(312.000000, 511.000000)">
+                <rect id="Rectangle-124" stroke="#000000" stroke-width="2" x="3" y="6" width="18" height="16" rx="1"/>
+
+                <polygon fill="#000000" id="Triangle-1" points="10 17.5 10 10.4 15.5 13.9"/>
+
+                <rect id="Rectangle-125" fill="#000000" x="4" y="3" width="16" height="1" rx="0.5"/>
+                <rect id="Rectangle-125" fill="#000000" x="5" y="1" width="14" height="1" rx="0.5"/>
+            </g>
+        </g>
+    </g>
+</svg>

+ 2 - 3
client/src/assets/images/menu/about.svg → client/src/assets/images/menu/about.html

@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <defs></defs>
     <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
         <g id="Artboard-4" transform="translate(-400.000000, -247.000000)">
             <g id="69" transform="translate(400.000000, 247.000000)">
-                <circle id="Oval-7" stroke="#808080" stroke-width="2" cx="12" cy="12" r="10"></circle>
-                <path d="M12.016,14.544 C12.384,14.544 12.64,14.256 12.704,13.904 L12.768,13.168 C14.544,12.864 16,11.952 16,9.936 L16,9.904 C16,7.904 14.48,6.656 12.24,6.656 C10.768,6.656 9.696,7.184 8.848,7.984 C8.624,8.176 8.528,8.432 8.528,8.672 C8.528,9.152 8.928,9.552 9.424,9.552 C9.648,9.552 9.856,9.456 10.016,9.328 C10.656,8.752 11.344,8.448 12.192,8.448 C13.344,8.448 14.032,9.072 14.032,9.968 L14.032,10 C14.032,11.008 13.2,11.584 11.696,11.728 C11.264,11.776 11.008,12.096 11.072,12.528 L11.232,13.904 C11.28,14.272 11.552,14.544 11.92,14.544 L12.016,14.544 Z M10.784,16.816 L10.784,16.976 C10.784,17.6 11.264,18.08 11.92,18.08 C12.576,18.08 13.056,17.6 13.056,16.976 L13.056,16.816 C13.056,16.192 12.576,15.712 11.92,15.712 C11.264,15.712 10.784,16.192 10.784,16.816 Z" id="?" fill="#808080"></path>
+                <circle id="Oval-7" stroke="#000000" stroke-width="2" cx="12" cy="12" r="10"></circle>
+                <path d="M12.016,14.544 C12.384,14.544 12.64,14.256 12.704,13.904 L12.768,13.168 C14.544,12.864 16,11.952 16,9.936 L16,9.904 C16,7.904 14.48,6.656 12.24,6.656 C10.768,6.656 9.696,7.184 8.848,7.984 C8.624,8.176 8.528,8.432 8.528,8.672 C8.528,9.152 8.928,9.552 9.424,9.552 C9.648,9.552 9.856,9.456 10.016,9.328 C10.656,8.752 11.344,8.448 12.192,8.448 C13.344,8.448 14.032,9.072 14.032,9.968 L14.032,10 C14.032,11.008 13.2,11.584 11.696,11.728 C11.264,11.776 11.008,12.096 11.072,12.528 L11.232,13.904 C11.28,14.272 11.552,14.544 11.92,14.544 L12.016,14.544 Z M10.784,16.816 L10.784,16.976 C10.784,17.6 11.264,18.08 11.92,18.08 C12.576,18.08 13.056,17.6 13.056,16.976 L13.056,16.816 C13.056,16.192 12.576,15.712 11.92,15.712 C11.264,15.712 10.784,16.192 10.784,16.816 Z" id="?" fill="#000000"></path>
             </g>
         </g>
     </g>

+ 1 - 5
client/src/assets/images/menu/administration.svg → client/src/assets/images/menu/administration.html

@@ -1,11 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
-    <title>filter</title>
-    <desc>Created with Sketch.</desc>
-    <defs></defs>
     <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="Artboard-4" transform="translate(-444.000000, -247.000000)" fill="#808080">
+        <g id="Artboard-4" transform="translate(-444.000000, -247.000000)" fill="#000000">
             <g id="70" transform="translate(444.000000, 247.000000)">
                 <path d="M8.82929429,17 L20.0066023,17 C20.5552407,17 21,17.4438648 21,18 C21,18.5522847 20.5550537,19 20.0066023,19 L8.82929429,19 C8.41745788,20.1651924 7.30621883,21 6,21 C4.34314575,21 3,19.6568542 3,18 C3,16.3431458 4.34314575,15 6,15 C7.30621883,15 8.41745788,15.8348076 8.82929429,17 Z M9.17070571,13 L3.99339768,13 C3.44475929,13 3,12.5561352 3,12 C3,11.4477153 3.44494629,11 3.99339768,11 L9.17070571,11 C9.58254212,9.83480763 10.6937812,9 12,9 C13.3062188,9 14.4174579,9.83480763 14.8292943,11 L20.0066023,11 C20.5552407,11 21,11.4438648 21,12 C21,12.5522847 20.5550537,13 20.0066023,13 L14.8292943,13 C14.4174579,14.1651924 13.3062188,15 12,15 C10.6937812,15 9.58254212,14.1651924 9.17070571,13 Z M15.1659641,6.98648118 C15.1124525,6.99537358 15.05751,7 15.0014977,7 L3.99850233,7 C3.44704472,7 3,6.55613518 3,6 C3,5.44771525 3.44748943,5 3.99850233,5 L15.0014977,5 C15.0575314,5 15.1124871,5.00458274 15.1660053,5.01340035 C15.5740343,3.84121344 16.6887792,3 18,3 C19.6568542,3 21,4.34314575 21,6 C21,7.65685425 19.6568542,9 18,9 C16.688735,9 15.5739592,8.15872988 15.1659641,6.98648118 Z M18,7 C18.5522847,7 19,6.55228475 19,6 C19,5.44771525 18.5522847,5 18,5 C17.4477153,5 17,5.44771525 17,6 C17,6.55228475 17.4477153,7 18,7 Z M12,13 C12.5522847,13 13,12.5522847 13,12 C13,11.4477153 12.5522847,11 12,11 C11.4477153,11 11,11.4477153 11,12 C11,12.5522847 11.4477153,13 12,13 Z M6,19 C6.55228475,19 7,18.5522847 7,18 C7,17.4477153 6.55228475,17 6,17 C5.44771525,17 5,17.4477153 5,18 C5,18.5522847 5.44771525,19 6,19 Z" id="Combined-Shape"></path>
             </g>

+ 1 - 5
client/src/assets/images/menu/globe.svg → client/src/assets/images/menu/globe.html

@@ -1,11 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
-    <title>globe</title>
-    <desc>Created with Sketch.</desc>
-    <defs></defs>
     <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="Artboard-4" transform="translate(-224.000000, -687.000000)" stroke="#808080" stroke-width="2">
+        <g id="Artboard-4" transform="translate(-224.000000, -687.000000)" stroke="#000000" stroke-width="2">
             <g id="265" transform="translate(224.000000, 687.000000)">
                 <circle id="Oval-148" cx="12" cy="12" r="10"></circle>
                 <path d="M12,2 L12,22.006249" id="Path-199"></path>

+ 12 - 0
client/src/assets/images/menu/go.html

@@ -0,0 +1,12 @@
+<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round">
+        <g id="Artboard-4" transform="translate(-576.000000, -1046.000000)" stroke="#000000" stroke-width="2">
+            <g id="Extras" transform="translate(48.000000, 1046.000000)">
+                <g id="up-right" transform="translate(528.000000, 0.000000)">
+                    <path d="M18,6 L5,19" id="Path-58"/>
+                    <polyline id="Path-59" stroke-linejoin="round" transform="translate(13.000000, 11.000000) scale(-1, -1) translate(-13.000000, -11.000000) " points="7 5 7 17 19 17"/>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 1 - 5
client/src/assets/images/menu/home.svg → client/src/assets/images/menu/home.html

@@ -1,11 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
-    <title>home</title>
-    <desc>Created with Sketch.</desc>
-    <defs></defs>
     <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
-        <g id="Artboard-4" transform="translate(-620.000000, -159.000000)" stroke="#808080" stroke-width="2">
+        <g id="Artboard-4" transform="translate(-620.000000, -159.000000)" stroke="#000000" stroke-width="2">
             <g id="34" transform="translate(620.000000, 159.000000)">
                 <path d="M1,11 L12,2 C12,2 22.9999989,11.0000005 23,11" id="Path-50"></path>
                 <path d="M3,10 C3,10 3,10.4453982 3,10.9968336 L3,20.0170446 C3,20.5675806 3.43788135,21.0138782 4.00292933,21.0138781 L8.99707067,21.0138779 C9.55097324,21.0138779 10,20.5751284 10,20.0089602 L10,15.0049177 C10,14.449917 10.4433532,14 11.0093689,14 L12.9906311,14 C13.5480902,14 14,14.4387495 14,15.0049177 L14,20.0089602 C14,20.5639609 14.4378817,21.0138779 15.0029302,21.0138779 L19.9970758,21.0138781 C20.5509789,21.0138782 21.000006,20.56848 21.000006,20.0170446 L21.0000057,10" id="Path-51"></path>

+ 3 - 4
client/src/assets/images/menu/recently-added.svg → client/src/assets/images/menu/recently-added.html

@@ -1,12 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <defs></defs>
     <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
         <g id="Artboard-4" transform="translate(-92.000000, -115.000000)">
             <g id="2" transform="translate(92.000000, 115.000000)">
-                <circle id="Oval-1" stroke="#808080" stroke-width="2" cx="12" cy="12" r="10"></circle>
-                <rect id="Rectangle-1" fill="#808080" x="11" y="7" width="2" height="10" rx="1"></rect>
-                <rect id="Rectangle-1" fill="#808080" x="7" y="11" width="10" height="2" rx="1"></rect>
+                <circle id="Oval-1" stroke="#000000" stroke-width="2" cx="12" cy="12" r="10"></circle>
+                <rect id="Rectangle-1" fill="#000000" x="11" y="7" width="2" height="10" rx="1"></rect>
+                <rect id="Rectangle-1" fill="#000000" x="7" y="11" width="10" height="2" rx="1"></rect>
             </g>
         </g>
     </g>

+ 6 - 9
client/src/assets/images/menu/subscriptions.svg → client/src/assets/images/menu/subscriptions.html

@@ -1,25 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
-    <title>podcasts</title>
-    <desc>Created with Sketch.</desc>
     <defs>
         <linearGradient x1="50%" y1="0%" x2="50%" y2="97.3333865%" id="linearGradient-1">
-            <stop stop-color="#808080" offset="0%"></stop>
-            <stop stop-color="#808080" stop-opacity="0.247310915" offset="100%"></stop>
+            <stop stop-color="#000000" offset="0%"></stop>
+            <stop stop-color="#000000" stop-opacity="0.247310915" offset="100%"></stop>
         </linearGradient>
         <linearGradient x1="50%" y1="0%" x2="50%" y2="97.8635204%" id="linearGradient-2">
-            <stop stop-color="#808080" offset="0%"></stop>
-            <stop stop-color="#808080" stop-opacity="0.250707654" offset="100%"></stop>
+            <stop stop-color="#000000" offset="0%"></stop>
+            <stop stop-color="#000000" stop-opacity="0.250707654" offset="100%"></stop>
         </linearGradient>
     </defs>
     <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
         <g id="Artboard-4" transform="translate(-532.000000, -775.000000)">
             <g id="312" transform="translate(532.000000, 775.000000)">
-                <circle id="Oval-169" fill="#808080" cx="12" cy="10" r="3"></circle>
+                <circle id="Oval-169" fill="#000000" cx="12" cy="10" r="3"></circle>
                 <path d="M16.3851456,13.8501206 C17.4222377,12.6991612 18,11.4167199 18,10 C18,6.74089158 15.2591084,4 12,4 C8.74089158,4 6,6.74089158 6,10 C6,11.4186069 6.57916224,12.7027674 7.61838071,13.8540306 C7.80341316,14.0590125 8.11958231,14.0751848 8.32456427,13.8901523 C8.52954623,13.7051199 8.5457185,13.3889507 8.36068606,13.1839688 C7.47616718,12.2040844 7,11.148292 7,10 C7,7.29317633 9.29317633,5 12,5 C14.7068237,5 17,7.29317633 17,10 C17,11.1466944 16.5249958,12.2010466 15.6422459,13.1807178 C15.4573954,13.3858639 15.4738483,13.7020185 15.6789944,13.886869 C15.8841405,14.0717195 16.2002951,14.0552666 16.3851456,13.8501206 Z" id="Oval-169" fill="url(#linearGradient-1)" fill-rule="nonzero"></path>
                 <path d="M17.5678226,18.3077078 C20.3159646,16.4626239 22,13.3733223 22,10 C22,4.4771525 17.5228475,0 12,0 C6.4771525,0 2,4.4771525 2,10 C2,13.3762414 3.68696556,16.4678678 6.43901638,18.3122954 C6.89779529,18.6197696 7.51896613,18.4971129 7.82644029,18.0383339 C8.13391444,17.579555 8.0112577,16.9583842 7.55247879,16.65091 C5.34877306,15.1739839 4,12.7021478 4,10 C4,5.581722 7.581722,2 12,2 C16.418278,2 20,5.581722 20,10 C20,12.699815 18.6535741,15.1697843 16.4529947,16.6472384 C15.9944687,16.9550897 15.8723227,17.5763611 16.180174,18.0348871 C16.4880252,18.4934131 17.1092967,18.6155591 17.5678226,18.3077078 Z" id="Oval-169" fill="url(#linearGradient-2)" fill-rule="nonzero"></path>
-                <path d="M9.32918137,15.9750882 C9.14737952,14.8842771 9.89826062,14 10.9979131,14 L13.0020869,14 C14.1055038,14 14.8534426,14.8793447 14.6708186,15.9750882 L13.6633817,22.0197096 C13.5731485,22.561109 13.0573397,23 12.5010434,23 L11.4989566,23 C10.9472481,23 10.4276519,22.5659113 10.3366183,22.0197096 L9.32918137,15.9750882 Z" id="Rectangle-217" fill="#808080"></path>
+                <path d="M9.32918137,15.9750882 C9.14737952,14.8842771 9.89826062,14 10.9979131,14 L13.0020869,14 C14.1055038,14 14.8534426,14.8793447 14.6708186,15.9750882 L13.6633817,22.0197096 C13.5731485,22.561109 13.0573397,23 12.5010434,23 L11.4989566,23 C10.9472481,23 10.4276519,22.5659113 10.3366183,22.0197096 L9.32918137,15.9750882 Z" id="Rectangle-217" fill="#000000"></path>
             </g>
         </g>
     </g>

+ 1 - 5
client/src/assets/images/menu/trending.svg → client/src/assets/images/menu/trending.html

@@ -1,11 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
-    <title>graph</title>
-    <desc>Created with Sketch.</desc>
-    <defs></defs>
     <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
-        <g id="Artboard-4" transform="translate(-444.000000, -203.000000)" stroke-width="2" stroke="#808080">
+        <g id="Artboard-4" transform="translate(-444.000000, -203.000000)" stroke-width="2" stroke="#000000">
             <g id="50" transform="translate(444.000000, 203.000000)">
                 <polyline id="Path-96" points="3 3 3 21.006249 21.0246733 21.006249"></polyline>
                 <polyline id="Path-101" points="6 18 11 12 14 13 19 7"></polyline>

+ 0 - 11
client/src/assets/images/video/watch-later.html

@@ -1,11 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" viewBox="0 0 80 100"
-     enable-background="new 0 0 80 80" xml:space="preserve"><g><path fill="#000000" d="M33.3,51.5L33.3,51.5c-1.8,0-3.3-1.4-3.3-3.1V37.3c0-1.7,1.5-3.1,3.3-3.1c0.5,0,1,0.1,1.5,0.4l10.7,5.5   c1,0.5,1.6,1.5,1.6,2.7c0,1.2-0.6,2.2-1.7,2.8l-10.6,5.6C34.3,51.3,33.8,51.5,33.3,51.5z M33.3,36.2c-0.6,0-1.3,0.4-1.3,1.1v11.1   c0,0.6,0.7,1.1,1.3,1.1l0,0c0.2,0,0.4,0,0.5-0.1l10.6-5.6c0.4-0.2,0.6-0.6,0.6-1c0-0.2-0.1-0.6-0.5-0.9l-10.7-5.5   C33.6,36.2,33.4,36.2,33.3,36.2z"/></g>
-  <g><path fill="#000000" d="M62.9,65H12.1C10.4,65,9,63.6,9,61.9V22.1c0-1.7,1.4-3.1,3.1-3.1h50.8c1.7,0,3.1,1.4,3.1,3.1v39.8   C66,63.6,64.6,65,62.9,65z M12.1,21c-0.6,0-1.1,0.5-1.1,1.1v39.8c0,0.6,0.5,1.1,1.1,1.1h50.8c0.6,0,1.1-0.5,1.1-1.1V22.1   c0-0.6-0.5-1.1-1.1-1.1H12.1z"/></g>
-  <g><path fill="#000000" d="M63,16h-2c0-1-0.4-1-0.9-1H14.9c-0.5,0-0.9,0-0.9,1h-2c0-2,1.3-3,2.9-3h45.3C61.7,13,63,14,63,16z"/></g>
-  <g><path fill="#000000" d="M58,11h-2c0-1-0.4-1-0.5-1H19.5c-0.1,0-0.5,0-0.5,1h-2c0-2,1.1-3,2.5-3h36.1C56.9,8,58,9,58,11z"/></g>
-  <g><path fill="#000000" d="M68,29v-2c4,0,6.5-2.9,6.5-6.5S72,14,68,14v-2c5,0,8.5,3.8,8.5,8.5S73,29,68,29z"/></g>
-  <g><polygon fill="#000000" points="71.3,18.7 65.6,13 71.3,7.3 72.7,8.7 68.4,13 72.7,17.3  "/></g>
-  <text x="0" y="95" fill="#000000" font-size="5px" font-weight="bold"
-        font-family="'Helvetica Neue', Helvetica, Arial-Unicode, Arial, Sans-serif">Created by Yaroslav Samoylov</text>
-  <text x="0" y="100" fill="#000000" font-size="5px" font-weight="bold"
-        font-family="'Helvetica Neue', Helvetica, Arial-Unicode, Arial, Sans-serif">from the Noun Project</text></svg>

+ 14 - 2
client/src/sass/include/_mixins.scss

@@ -63,13 +63,25 @@
 
 @mixin apply-svg-color ($color) {
   /deep/ svg {
-    path[fill="#000000"], g[fill="#000000"], rect[fill="#000000"], circle[fill="#000000"], polygon[fill="#000000"] {
+    path[fill="#000000"],
+    g[fill="#000000"],
+    rect[fill="#000000"],
+    circle[fill="#000000"],
+    polygon[fill="#000000"] {
       fill: $color;
     }
 
-    path[stroke="#000000"], g[stroke="#000000"], rect[stroke="#000000"], circle[stroke="#000000"], polygon[stroke="#000000"] {
+    path[stroke="#000000"],
+    g[stroke="#000000"],
+    rect[stroke="#000000"],
+    circle[stroke="#000000"],
+    polygon[stroke="#000000"] {
       stroke: $color;
     }
+
+    stop[stop-color="#000000"] {
+      stop-color: $color;
+    }
   }
 }