]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/menu/menu.component.scss
Square channel avatar consistency
[github/Chocobozzz/PeerTube.git] / client / src / app / menu / menu.component.scss
index 8a8094fbbbc751c321c516d16fb1d987bffc12b3..aa247d268fc4e5e78b0304fd1026e403f3c6877f 100644 (file)
@@ -3,6 +3,7 @@
 
 $menu-link-icon-size: 22px;
 $menu-link-icon-margin-right: 18px;
+$footer-links-base-opacity: .8;
 
 @mixin menu-link {
   display: flex;
@@ -15,6 +16,7 @@ $menu-link-icon-margin-right: 18px;
   word-break: break-word;
   padding-right: 20px;
   transition: background-color .1s ease-in-out;
+  line-height: $line-height-normal;
 
   &.active {
     background-color: rgba(255, 255, 255, 0.15);
@@ -88,95 +90,170 @@ menu {
     height: 80px;
     display: flex;
     align-items: center;
-    justify-content: center;
+    justify-content: left;
 
-    .logged-in-info {
-      @include ellipsis;
+    my-notification {
+      margin-left: auto;
+      margin-right: 15px;
+    }
+  }
+}
+
+.logged-in-more {
+  $main-radius: 25px;
 
-      flex-grow: 1;
+  flex: 1;
+  margin-left: 13px;
+  border-radius: $main-radius;
+  transition: all .1s ease-in-out;
+  cursor: pointer;
 
-      .logged-in-display-name {
-        font-size: 16px;
-        font-weight: $font-semibold;
-        color: pvar(--menuForegroundColor);
-        cursor: pointer;
+  *, & {
+    line-height: 1;
+  }
 
-        @include disable-default-a-behaviour;
-      }
+  &.show {
+    background-color: rgba(255, 255, 255, 0.20);
+    box-shadow: inset 0 3px 5px rgba(0, 0, 0, .325);
+  }
 
-      .logged-in-username {
-        @include ellipsis;
+  @mixin display-hints($is-mobile: false) {
+    background-color: rgba(255, 255, 255, 0.15);
 
-        font-size: 13px;
-        color: #C6C6C6;
-        max-width: 140px;
-        cursor: pointer;
+    @if $is-mobile {
+      .dropdown-toggle-indicator {
+        display: inherit !important;
+      }
+      .dropdown-toggle:first-child {
+        padding-right: 30px !important;
       }
     }
+  }
+
+  &:hover {
+    @include display-hints;
+  }
 
-    .logged-in-more {
-      margin-right: 20px;
+  /* smartphones and touchscreens */
+  @media (hover: none) and (pointer: coarse) {
+    @include display-hints($is-mobile: true);
 
-      my-global-icon.dropdown-toggle {
-        cursor: pointer;
+    /* fill space when on mobile */
+    max-width: calc(100% - 80px);
+    .dropdown-toggle {
+      max-width: 100%;
+    }
+    .logged-in-info {
+      max-width: calc(100% - 45px) !important;
+    }
 
-        &::after {
-          border: none;
-        }
+  }
 
-        ::ng-deep {
-          @include apply-svg-color(pvar(--menuForegroundColor));
-        }
-      }
+  .dropdown-toggle-indicator {
+    position: relative;
+    width: 0;
+    display: none;
+
+    span {
+      position: absolute;
+      right: -35px;
+      top: -8px;
+      color: grey;
+      width: $main-radius;
+    }
+  }
+
+  .dropdown-toggle {
+    &::after {
+      border: none;
     }
   }
 
-  .logged-in-menu {
+  .dropdown-toggle:first-child {
     display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-    border-top: 1px solid var(--greyForegroundColor);
+    align-items: center;
+    padding: 5px 7px;
+    border-radius: $main-radius;
+  }
+
+  img {
+    @include avatar(34px);
+
+    margin-right: 10px;
+  }
+}
 
-    a {
-      @include menu-link;
-      @include disable-default-a-behaviour;
+.logged-in-info {
+  max-width: 105px;
 
-      $icon-size: 13px;
-      $additional-margin: ($menu-link-icon-size - $icon-size) / 2;
+  flex-grow: 1;
 
-      font-size: 14px;
-      width: 100%;
-      min-height: 35px;
+  .logged-in-display-name,
+  .logged-in-username {
+    @include ellipsis;
+  }
 
-      my-global-icon {
-        width: $icon-size;
-        height: $icon-size;
+  .logged-in-display-name {
+    font-size: 16px;
+    font-weight: $font-semibold;
+    color: pvar(--menuForegroundColor);
 
-        // Keep aligned with other icons
-        margin-left: $additional-margin;
+    @include disable-default-a-behaviour;
+  }
 
-        &[iconName="channel"] {
-          margin-top: -2px;
-        }
+  .logged-in-username {
+    font-size: 13px;
+    color: #C6C6C6;
+    margin-top: 3px;
+  }
+}
+
+.logged-in-menu {
+  display: flex;
+  flex-direction: column;
+  align-items: flex-start;
+  border-top: 1px solid var(--greyForegroundColor);
+  line-height: $line-height-normal;
+
+  a {
+    @include menu-link;
+    @include disable-default-a-behaviour;
+
+    $icon-size: 13px;
+    $additional-margin: ($menu-link-icon-size - $icon-size) / 2;
+
+    font-size: 14px;
+    width: 100%;
+    min-height: 35px;
+
+    my-global-icon {
+      width: $icon-size;
+      height: $icon-size;
+
+      // Keep aligned with other icons
+      margin-left: $additional-margin;
+
+      &[iconName="channel"] {
+        margin-top: -2px;
       }
+    }
 
-      &.active,
-      &:hover,
-      &:focus-visible {
-        my-global-icon {
-          @include apply-svg-color(var(--mainBackgroundColor));
-        }
+    &.active,
+    &:hover,
+    &:focus-visible {
+      my-global-icon {
+        @include apply-svg-color(var(--menuForegroundColor));
       }
+    }
 
-      &.active {
-        $border-left-width: 4px;
+    &.active {
+      $border-left-width: 4px;
 
-        font-weight: $font-semibold;
-        border-left: $border-left-width solid var(--mainColor);
+      font-weight: $font-semibold;
+      border-left: $border-left-width solid var(--mainColor);
 
-        my-global-icon {
-          margin-left: $additional-margin - $border-left-width;
-        }
+      my-global-icon {
+        margin-left: $additional-margin - $border-left-width;
       }
     }
   }
@@ -257,50 +334,48 @@ menu {
     flex-direction: column;
     padding: 0 $menu-lateral-padding;
   }
+}
 
-  $footer-links-base-opacity: .8;
-
-  .footer-links {
-    &, > div {
-      display: flex;
-      flex-wrap: wrap;
-    }
+.footer-links {
+  &, > div {
+    display: flex;
+    flex-wrap: wrap;
+  }
 
-    a, span[role=button] {
-      display: inline-block;
-      text-decoration: none;
-      color: pvar(--mainBackgroundColor);
-      opacity: $footer-links-base-opacity;
+  a, span[role=button] {
+    display: inline-block;
+    text-decoration: none;
+    color: pvar(--menuForegroundColor);
+    opacity: $footer-links-base-opacity;
+    white-space: nowrap;
+    font-size: 90%;
+    font-weight: 500;
+    line-height: 1.4rem;
+    margin-right: 8px;
+
+    &.inline-global-icon {
+      display: inline-flex;
+      align-items: center;
       white-space: nowrap;
-      font-size: 90%;
-      font-weight: 500;
-      line-height: 1.4rem;
-      margin-right: 8px;
-
-      &.inline-global-icon {
-        display: inline-flex;
-        align-items: center;
-        white-space: nowrap;
-        height: 1.4rem;
-
-        my-global-icon {
-          @include apply-svg-color(pvar(--mainBackgroundColor));
-
-          display: flex;
-          width: auto;
-          height: 90%;
-          margin-right: .2rem;
-        }
+      height: 1.4rem;
+
+      my-global-icon {
+        @include apply-svg-color(pvar(--menuForegroundColor));
+
+        display: flex;
+        width: auto;
+        height: 90%;
+        margin-right: .2rem;
       }
     }
   }
+}
 
-  .footer-copyleft small a {
-    @include disable-default-a-behaviour;
+.footer-copyleft small a {
+  @include disable-default-a-behaviour;
 
-    color: pvar(--mainBackgroundColor);
-    opacity: $footer-links-base-opacity - .2;
-  }
+  color: pvar(--menuForegroundColor);
+  opacity: $footer-links-base-opacity - .2;
 }
 
 .dropdown {
@@ -343,6 +418,12 @@ menu {
     my-global-icon.hover-display-toggle {
       display: none;
     }
+
+    &.settings-sensitive {
+      my-global-icon ::ng-deep svg {
+        margin-top: 2px !important;
+      }
+    }
   }
 }
 
@@ -364,4 +445,14 @@ menu {
   .top-menu, .footer {
     width: 100% !important;
   }
+
+  .dropdown-menu {
+    width: calc(100vw - 30px);
+  }
+
+  .dropdown-item:hover, .dropdown-item:active {
+    &.settings-sensitive my-global-icon ::ng-deep svg {
+      margin-top: 0px !important;
+    }
+  }
 }