Fix broken views on mobile and small screens (#2671)
[oweals/peertube.git] / client / src / sass / application.scss
index 478737a434dec20f0c0a428fff82078a79938782..cc655270592bbd051ff0785821f67b2fd3950ff0 100644 (file)
@@ -1,6 +1,6 @@
 $icon-font-path: '~@neos21/bootstrap3-glyphicons/assets/fonts/';
-@import '_bootstrap';
 
+@import '_bootstrap-variables';
 @import '_variables';
 @import '_mixins';
 
@@ -12,6 +12,7 @@ $assets-path: '../assets/';
 @import './player/index';
 @import './loading-bar';
 
+@import './bootstrap';
 @import './primeng-custom';
 
 [hidden] {
@@ -22,22 +23,38 @@ body {
   /*** theme ***/
   // now beware node-sass requires interpolation
   // for css custom properties #{$var}
-  --mainColor: #{$orange-color};
-  --mainHoverColor: #{$orange-hover-color};
+  --mainColor: #{$main-color};
+  --mainColorLighter: #{$main-color-lighter};
+  --mainColorLightest: #{$main-color-lightest};
+  --mainHoverColor: #{$main-hover-color};
   --mainBackgroundColor: #{$bg-color};
   --mainForegroundColor: #{$fg-color};
+  --secondaryColor: #{$secondary-color};
+
   --menuBackgroundColor: #{$menu-background};
   --menuForegroundColor: #{$menu-color};
   --submenuColor: #{$sub-menu-color};
-  --inputColor: #{$input-background-color};
+
+  --inputBackgroundColor: #{$input-background-color};
   --inputPlaceholderColor: #{$input-placeholder-color};
 
+  --actionButtonColor: #{$grey-foreground-color};
+  --supportButtonBackgroundColor: #{transparent};
+  --supportButtonColor: #{var(--actionButtonColor)};
+  --supportButtonHeartColor: #{$support-button-heart};
+
   font-family: $main-fonts;
   font-weight: $font-regular;
   color: var(--mainForegroundColor);
+  background-color: var(--mainBackgroundColor);
   font-size: 14px;
 }
 
+::selection {
+  color: var(--mainBackgroundColor);
+  background-color: var(--mainHoverColor);
+}
+
 #incompatible-browser {
   display: none;
   text-align: center;
@@ -52,7 +69,7 @@ strong {
 
 input.readonly {
   /* Force blank on readonly inputs */
-  background-color: var(--inputColor) !important;
+  background-color: var(--inputBackgroundColor) !important;
 }
 
 input, textarea {
@@ -60,10 +77,6 @@ input, textarea {
   color: var(--mainForegroundColor);
 }
 
-.btn-outline-secondary {
-  border-color: $input-border-color;
-}
-
 label {
   font-weight: $font-bold;
   font-size: 15px;
@@ -90,9 +103,14 @@ label {
   color: black;
 }
 
+.row {
+  margin: 0 !important;
+}
+
 .main-col {
   margin-left: $menu-width;
-  width: auto;
+  width: calc(100% - #{$menu-width});
+  outline: none;
 
   .margin-content {
     margin-left: $not-expanded-horizontal-margins;
@@ -104,7 +122,7 @@ label {
     background-color: var(--submenuColor);
     width: 100%;
     height: 81px;
-    margin-bottom: 30px;
+    margin-bottom: $sub-menu-margin-bottom;
     display: flex;
     align-items: center;
     padding-left: $not-expanded-horizontal-margins;
@@ -114,6 +132,7 @@ label {
   // Override some properties if the main content is expanded (no menu on the left)
   &.expanded {
     margin-left: 0;
+    width: 100%;
 
     .margin-content {
       margin-left: $expanded-horizontal-margins;
@@ -136,18 +155,36 @@ label {
   @include disable-default-a-behaviour;
 
   &.active, &.title-page-single {
-    border-bottom: 2px solid var(--mainColor);
-    font-weight: $font-bold;
     margin-top: 30px;
     margin-bottom: 25px;
   }
 
+  &.active {
+    font-weight: $font-bold;
+    border-bottom: 2px solid var(--mainColor);
+  }
+
+  &.title-page-single {
+    font-size: 125%;
+  }
+
   &:hover, &:active, &:focus {
     color: var(--mainForegroundColor);
   }
 
-  @media screen and (max-width: 500px) {
-    margin-right: 20px;
+  @media screen and (max-width: $mobile-view) {
+    margin-right: 15px;
+  }
+}
+
+.title-page-about,
+.title-page-settings {
+  white-space: nowrap;
+  font-size: 115%;
+  font-weight: $font-regular;
+
+  &.active {
+    font-weight: $font-semibold;
   }
 }
 
@@ -181,148 +218,11 @@ label {
   font-weight: bold;
 }
 
-// Thanks https://gist.github.com/alexandrevicenzi/680147013e902a4eaa5d
-.glyphicon-refresh-animate {
-  animation: spin .7s infinite linear;
-}
-
 @keyframes spin {
   from { transform: scale(1) rotate(0deg);}
   to { transform: scale(1) rotate(360deg);}
 }
 
-// Bootstrap customizations
-.dropdown-menu {
-  border-radius: 3px;
-  box-shadow: 0 3px 6px;
-  font-size: 15px;
-
-  .dropdown-item {
-    padding: 3px 15px;
-
-    &:active {
-      color: #000 !important;
-    }
-  }
-
-  button {
-    @include disable-default-a-behaviour;
-  }
-
-  a {
-    @include disable-default-a-behaviour;
-    color: #000 !important;
-  }
-}
-
-.modal {
-  .modal-content {
-    background-color: var(--mainBackgroundColor);
-  }
-
-  .modal-header {
-    border-bottom: none;
-    margin-bottom: 5px;
-
-    .modal-title {
-      font-size: 20px;
-      font-weight: $font-semibold;
-    }
-
-    my-global-icon {
-      @include icon(24px);
-
-      position: relative;
-      top: 3px;
-      float: right;
-
-      margin: 0;
-      padding: 0;
-      opacity: 1;
-    }
-  }
-
-  .inputs {
-    margin-bottom: 0;
-    text-align: right;
-
-    .action-button-cancel {
-      @include peertube-button;
-      @include grey-button;
-
-      display: inline-block;
-      margin-right: 10px;
-    }
-
-    .action-button-submit {
-      @include peertube-button;
-      @include orange-button;
-    }
-  }
-}
-
-// Nav customizations
-.nav .nav-link {
-  display: flex !important;
-  align-items: center;
-  height: 30px !important;
-  padding: 10px 15px !important;
-}
-
-.nav.nav-pills {
-  font-size: 16px !important;
-
-  .nav-link.active {
-    font-weight: $font-semibold !important;
-  }
-
-  a {
-    @include disable-default-a-behaviour;
-
-    color: var(--mainForegroundColor);
-  }
-}
-
-ngb-tabset.bootstrap {
-
-  .nav-link {
-    &, & a {
-      @include disable-default-a-behaviour;
-
-      color: var(--mainForegroundColor) !important;
-    }
-  }
-
-  .nav-pills .nav-link.active {
-    color: #000 !important;
-  }
-}
-
-.nav-tabs .nav-link.active {
-  background-color: var(--mainBackgroundColor) !important;
-  border-bottom: none;
-}
-
-.orange-button {
-  @include peertube-button;
-  @include orange-button;
-}
-
-.orange-button-link {
-  @include peertube-button-link;
-  @include orange-button;
-}
-
-.grey-button {
-  @include peertube-button;
-  @include grey-button;
-}
-
-.grey-button-link {
-  @include peertube-button-link;
-  @include grey-button;
-}
-
 // In tables, don't have a hover different background
 table {
   .action-button-edit, .action-button-delete {
@@ -341,7 +241,21 @@ table {
   font-weight: $font-semibold;
 }
 
-@media screen and (max-width: 1600px) {
+.dropdown-item {
+  @include dropdown-with-icon-item;
+
+  my-global-icon {
+    width: 22px;
+    height: 22px;
+  }
+}
+
+.anchor {
+  position: relative;
+  top: #{-($header-height + 20px)};
+}
+
+@media screen and (max-width: #{map-get($grid-breakpoints, xxl)}) {
   .main-col {
     &.expanded {
       .margin-content {
@@ -352,7 +266,7 @@ table {
   }
 }
 
-@media screen and (max-width: 900px) {
+@media screen and (max-width: #{map-get($grid-breakpoints, lg)}) {
   .main-col {
     &.expanded {
       .margin-content {
@@ -362,9 +276,10 @@ table {
 
       .sub-menu {
         padding-left: 50px;
+        padding-right: 50px;
 
         .title-page {
-          font-size: 15px;
+          font-size: 17px;
         }
       }
     }
@@ -382,12 +297,17 @@ table {
       }
 
       .sub-menu {
+        width: 100vw;
+        overflow-x: auto;
         padding-left: 15px;
         padding-right: 15px;
-        margin-bottom: 10px;
+        margin-bottom: $sub-menu-margin-bottom-small-view;
       }
 
-      input[type=text], input[type=password] {
+      input[type=text],
+      input[type=password],
+      input[type=email],
+      textarea {
         width: 100% !important;
       }
     }