X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fsass%2Finclude%2F_mixins.scss;h=a25741d91036708c048e24351753ab602408f0ce;hb=HEAD;hp=9f6d691314c52eb1c5b3dca75cd98eceeb29dd58;hpb=dd24f1bb0a4b252e5342b251ba36853364da7b8e;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/sass/include/_mixins.scss b/client/src/sass/include/_mixins.scss index 9f6d69131..a25741d91 100644 --- a/client/src/sass/include/_mixins.scss +++ b/client/src/sass/include/_mixins.scss @@ -1,18 +1,25 @@ @use 'sass:math'; +@use 'sass:color'; + @use '_variables' as *; +@import '_bootstrap-mixins'; + @mixin disable-default-a-behaviour { &:hover, &:focus, &:active { text-decoration: none !important; + } + + &:focus:not(.focus-visible) { outline: none !important; } } @mixin disable-outline { &:focus:not(.focus-visible) { - outline: none; + outline: none !important; } } @@ -22,17 +29,8 @@ text-overflow: ellipsis; } -@mixin ellipsis-multiline($font-size: 16px, $number-of-lines: 2) { - display: block; - /* Fallback for non-webkit */ - display: -webkit-box; /* stylelint-disable-line value-no-vendor-prefix */ - -webkit-line-clamp: $number-of-lines; - /* Fallback for non-webkit */ - font-size: $font-size; - line-height: $font-size; - overflow: hidden; - text-overflow: ellipsis; - max-height: $font-size * $number-of-lines; +@mixin muted { + color: pvar(--greyForegroundColor) !important; } @mixin fade-text ($fade-after, $background-color) { @@ -84,16 +82,23 @@ } } -@mixin peertube-input-text($width) { - padding: 0 15px; +@mixin rounded-line-height-1-5 ($font-size) { + line-height: $font-size + math.round(math.div($font-size, 2)); +} + +@mixin peertube-input-text($width, $font-size: $form-input-font-size) { + @include rounded-line-height-1-5($font-size); + + font-size: $font-size; + + padding: 3px 15px; display: inline-block; - height: $button-height; width: $width; + max-width: $width; color: pvar(--inputForegroundColor); background-color: pvar(--inputBackgroundColor); - border: 1px solid #C6C6C6; + border: 1px solid pvar(--inputBorderColor); border-radius: 3px; - font-size: 15px; &::placeholder { color: pvar(--inputPlaceholderColor); @@ -108,27 +113,13 @@ } } -@mixin peertube-input-group($width) { - width: $width; - min-height: $button-height; - padding-top: 0; - padding-bottom: 0; - flex-wrap: nowrap; - - .input-group-text { - font-size: 14px; - color: #808080; - } -} - @mixin peertube-textarea ($width, $height) { @include peertube-input-text($width); - color: pvar(--textareaForegroundColor); - background-color: pvar(--textareaBackgroundColor); + color: pvar(--textareaForegroundColor) !important; + background-color: pvar(--textareaBackgroundColor) !important; height: $height; padding: 5px 15px; - font-size: 15px; } @mixin orange-button { @@ -150,7 +141,7 @@ &.disabled { cursor: default; color: #fff; - background-color: #C6C6C6; + background-color: pvar(--inputBorderColor); } my-global-icon { @@ -161,6 +152,7 @@ @mixin orange-button-inverted { @include button-focus(pvar(--mainColorLightest)); + padding: 2px 13px; border: 2px solid pvar(--mainColor); font-weight: $font-semibold; @@ -180,7 +172,7 @@ &.disabled { cursor: default; color: pvar(--mainColor); - background-color: #C6C6C6; + background-color: pvar(--inputBorderColor); } my-global-icon { @@ -207,7 +199,7 @@ @mixin grey-button { @include button-focus($grey-button-outline-color); - background-color: $grey-background-color; + background-color: pvar(--greyBackgroundColor); color: pvar(--greyForegroundColor); &:hover, @@ -216,7 +208,7 @@ &[disabled], &.disabled { color: pvar(--greyForegroundColor); - background-color: $grey-background-hover-color; + background-color: pvar(--greySecondaryBackgroundColor); } &[disabled], @@ -230,7 +222,7 @@ } @mixin danger-button { - $color: lighten($color: #c54130, $amount: 10); + $color: color.adjust($color: #c54130, $lightness: 10%); $text: #fff6f5; @include button-focus(scale-color($color, $alpha: -95%)); @@ -243,7 +235,7 @@ &:focus, &[disabled], &.disabled { - background-color: lighten($color: $color, $amount: 10); + background-color: color.adjust($color: $color, $lightness: 10%); } &[disabled], @@ -257,17 +249,37 @@ } @mixin peertube-button { - @include padding(0, 17px, 0, 13px); + @include rounded-line-height-1-5($button-font-size); + + padding: 4px 13px; border: 0; font-weight: $font-semibold; - font-size: 15px; - height: $button-height; - line-height: $button-height; - // FIXME: because of primeng that redefines border-radius of all input[type="..."] + + // Because of primeng that redefines border-radius of all input[type="..."] border-radius: 3px !important; + text-align: center; cursor: pointer; + + font-size: $button-font-size; + + my-global-icon + * { + @include margin-right(4px); + @include margin-left(4px); + } +} + +@mixin peertube-button-big { + height: auto; + padding: 10px 25px; + font-size: 18px; + line-height: 1.2; + border: 0; + font-weight: $font-semibold; + + // Because of primeng that redefines border-radius of all input[type="..."] + border-radius: 3px !important; } @mixin peertube-button-link { @@ -277,6 +289,13 @@ display: inline-block; } +@mixin peertube-button-big-link { + @include disable-default-a-behaviour; + @include peertube-button-big; + + display: inline-block; +} + @mixin peertube-button-outline { @include disable-default-a-behaviour; @include peertube-button; @@ -286,10 +305,6 @@ } @mixin button-with-icon($width: 20px, $margin-right: 3px, $top: -1px) { - display: inline-flex; - align-items: center; - line-height: normal !important; - my-global-icon { @include margin-right($margin-right); @@ -303,7 +318,6 @@ position: relative; overflow: hidden; display: inline-block; - min-height: 30px; input[type=file] { position: absolute; @@ -316,7 +330,7 @@ filter: alpha(opacity=0); opacity: 0; outline: none; - background: #fff; + background: pvar(--mainBackgroundColor); cursor: inherit; display: block; } @@ -355,7 +369,7 @@ color: pvar(--inputForegroundColor); background: pvar(--inputBackgroundColor); position: relative; - font-size: 15px; + height: min-content; &.disabled { background-color: #E5E5E5; @@ -365,6 +379,10 @@ } } + select[disabled] { + background-color: #f9f9f9; + } + @media screen and (max-width: $width) { width: 100%; } @@ -378,19 +396,21 @@ position: absolute; pointer-events: none; border: 5px solid rgba(0, 0, 0, 0); - border-top-color: #000; + border-top-color: pvar(--mainForegroundColor); margin-top: -2px; z-index: 100; } select { - padding: 0 35px 0 12px; + @include rounded-line-height-1-5($form-input-font-size); + + font-size: $form-input-font-size; + + padding: 3px 35px 3px 12px; position: relative; - border: 1px solid #C6C6C6; + border: 1px solid pvar(--inputBorderColor); background: transparent none; appearance: none; - cursor: pointer; - height: $button-height; text-overflow: ellipsis; color: pvar(--mainForegroundColor); @@ -405,27 +425,40 @@ option { color: #000; + + &[value=undefined] { + font-weight: $font-semibold; + } } } &.peertube-select-button { @include grey-button; - select, - option { + select { font-weight: $font-semibold; color: pvar(--greyForegroundColor); border: 0; + + // No border, add +1 to vertical padding + padding: 4px 35px 4px 12px; } } } // Thanks: https://codepen.io/manabox/pen/raQmpL @mixin peertube-radio-container { + label { + font-size: $form-input-font-size; + } + [type=radio]:checked, [type=radio]:not(:checked) { position: absolute; - left: -9999px; + opacity: 0; + cursor: pointer; + height: 0; + width: 0; } [type=radio]:checked + label, @@ -435,6 +468,7 @@ cursor: pointer; line-height: 20px; display: inline-block; + font-weight: $font-regular; } [type=radio]:checked + label::before, @@ -445,7 +479,7 @@ top: 0; width: 18px; height: 18px; - border: 1px solid #C6C6C6; + border: 1px solid pvar(--inputBorderColor); border-radius: 100%; background: #fff; } @@ -470,6 +504,13 @@ opacity: 1; transform: scale(1); } + + .form-group-description { + display: block; + margin-top: -7px; + margin-bottom: 10px; + margin-left: 29px; + } } @mixin peertube-checkbox ($border-width) { @@ -485,7 +526,7 @@ width: 18px; min-width: 18px; height: 18px; - border: $border-width solid #C6C6C6; + border: $border-width solid pvar(--inputBorderColor); border-radius: 3px; vertical-align: middle; cursor: pointer; @@ -499,8 +540,8 @@ height: 12px; opacity: 0; transform: rotate(45deg) scale(0); - border-right: 2px solid $bg-color; - border-bottom: 2px solid $bg-color; + border-right: 2px solid pvar(--mainBackgroundColor); + border-bottom: 2px solid pvar(--mainBackgroundColor); } } @@ -518,7 +559,6 @@ + span + span { @include margin-left(5px); - font-size: 15px; font-weight: $font-regular; cursor: pointer; display: inline; @@ -531,50 +571,6 @@ } } -@mixin table-badge { - border-radius: 2px; - padding: 1/4em 1/2em; - text-transform: uppercase; - font-weight: $font-bold; - font-size: 12px; - letter-spacing: 1/3px; - - &.badge-banned, - &.badge-red { - background-color: #ffcdd2; - color: #c63737; - } - - &.badge-banned { - text-decoration: line-through; - } - - &.badge-yellow { - background-color: #feedaf; - color: #8a5340; - } - - &.badge-brown { - background-color: #ffd8b2; - color: #805b36; - } - - &.badge-green { - background-color: #c8e6c9; - color: #256029; - } - - &.badge-blue { - background-color: #b3e5fc; - color: #23547b; - } - - &.badge-purple { - background-color: #eccfff; - color: #694382; - } -} - @mixin actor-avatar-size ($size) { display: inline-block; width: $size; @@ -585,7 +581,6 @@ @mixin actor-counters ($separator-margin: 10px) { color: pvar(--greyForegroundColor); - font-size: 16px; display: flex; align-items: center; @@ -596,30 +591,6 @@ } } -@mixin chevron ($size, $border-width) { - border-style: solid; - border-width: $border-width $border-width 0 0; - content: ''; - display: inline-block; - transform: rotate(-45deg); - height: $size; - width: $size; -} - -@mixin chevron-right ($size, $border-width) { - @include chevron($size, $border-width); - - left: 0; - transform: rotate(45deg); -} - -@mixin chevron-left ($size, $border-width) { - @include chevron($size, $border-width); - - left: 0.25em; - transform: rotate(-135deg); -} - @mixin in-content-small-title { text-transform: uppercase; color: pvar(--mainColor); @@ -631,22 +602,19 @@ text-transform: uppercase; color: pvar(--mainColor); font-weight: $font-bold; - font-size: 110%; + font-size: 1rem; margin-bottom: 10px; } -@mixin create-button { - @include peertube-button-link; - @include orange-button; - @include button-with-icon(20px, 5px, -1px); -} - -@mixin row-blocks ($column-responsive: true) { +@mixin row-blocks ($column-responsive: true, $min-height: 130px, $separator: true) { display: flex; - min-height: 130px; + min-height: $min-height; padding-bottom: 20px; margin-bottom: 20px; - border-bottom: 1px solid #C6C6C6; + + @if $separator { + border-bottom: 1px solid pvar(--inputBorderColor); + } @media screen and (max-width: $small-view) { @if $column-responsive { @@ -675,7 +643,7 @@ } @mixin progressbar($small: false) { - background-color: $grey-background-color; + background-color: pvar(--greyBackgroundColor); display: flex; height: 1rem; overflow: hidden; @@ -685,7 +653,8 @@ span { position: absolute; - color: $grey-foreground-color; + color: pvar(--greyForegroundColor); + @if $small { top: -1px; } @@ -708,12 +677,8 @@ white-space: nowrap; transition: width 0.6s ease; - &.secondary { - background-color: pvar(--secondaryColor); - } - &.red { - background-color: lighten($color: #c54130, $amount: 10); + background-color: color.adjust($color: #c54130, $lightness: 10%); } } } @@ -721,11 +686,10 @@ @mixin breadcrumb { display: flex; flex-wrap: wrap; - padding: 0.75rem 1rem; + padding: 0; margin-bottom: 1rem; list-style: none; - background-color: pvar(--submenuBackgroundColor); - border-radius: 0.25rem; + font-weight: $font-semibold; .breadcrumb-item { display: flex; @@ -759,7 +723,7 @@ > div { box-sizing: border-box; - flex: 0 0 percentage(math.div(1, 3)); + flex: 0 0 math.percentage(math.div(1, 3)); padding: 0 5px; margin-bottom: 10px; @@ -828,51 +792,39 @@ } @mixin chip { - --chip-radius: 5rem; - --chip-padding: .2rem .4rem; - $avatar-height: 1.2rem; + --avatar-size: 1.2rem; - align-items: center; - border-radius: var(--chip-radius); display: inline-flex; - font-size: 90%; color: pvar(--mainForegroundColor); - height: $avatar-height; - line-height: 1rem; - margin: .1rem; + height: var(--avatar-size); max-width: 320px; overflow: hidden; - padding: var(--chip-padding); text-decoration: none; text-overflow: ellipsis; vertical-align: middle; white-space: nowrap; - &.rectangular { - --chip-radius: .2rem; - --chip-padding: .2rem .3rem; - } - my-actor-avatar { - @include margin-left(-.4rem); @include margin-right(.2rem); + + border-radius: 5rem; + width: var(--avatar-size); + height: var(--avatar-size); } &.two-lines { - $avatar-height: 2rem; + --avatar-size: 2rem; - height: $avatar-height; + font-size: 14px; + line-height: 1rem; my-actor-avatar { - @include actor-avatar-size($avatar-height); + display: inline-block; } - div { - margin: 0 .1rem; - + > div { display: flex; flex-direction: column; - height: $avatar-height; justify-content: center; } } @@ -882,7 +834,7 @@ // an immediate's parent size. This allows to set a ratio without explicit // dimensions, as width/height cannot be computed from each other. @mixin block-ratio ($selector: 'div', $inverted-ratio: math.div(9, 16)) { - $padding-percent: percentage($inverted-ratio); + $padding-percent: math.percentage($inverted-ratio); position: relative; height: 0; @@ -914,8 +866,9 @@ vertical-align: top; } - .badge { + .pt-badge { @include margin-left(7px); + vertical-align: top; } } @@ -938,7 +891,7 @@ @mixin on-small-main-col () { :host-context(.main-col:not(.expanded)) { - @media screen and (max-width: $small-view + $menu-width) { + @media screen and (max-width: #{$small-view + $menu-width}) { @content; } } @@ -952,7 +905,7 @@ @mixin on-mobile-main-col () { :host-context(.main-col:not(.expanded)) { - @media screen and (max-width: $mobile-view + $menu-width) { + @media screen and (max-width: #{$mobile-view + $menu-width}) { @content; } } @@ -964,58 +917,81 @@ } } -@mixin margin ($block-start, $inline-end, $block-end, $inline-start) { - @include margin-left($inline-start); - @include margin-right($inline-end); - - margin-top: $block-start; - margin-bottom: $block-end; +@mixin margin ($arg1: null, $arg2: null, $arg3: null, $arg4: null) { + @if $arg2 == null and $arg3 == null and $arg4 == null { + @include margin-original($arg1, $arg1, $arg1, $arg1); + } @else if $arg3 == null and $arg4 == null { + @include margin-original($arg1, $arg2, $arg1, $arg2); + } @else if $arg4 == null { + @include margin-original($arg1, $arg2, $arg3, $arg2); + } @else { + @include margin-original($arg1, $arg2, $arg3, $arg4); + } } -@mixin padding ($block-start, $inline-end, $block-end, $inline-start) { - @include padding-left($inline-start); - @include padding-right($inline-end); - - padding-top: $block-start; - padding-bottom: $block-end; +@mixin margin-original ($block-start, $inline-end, $block-end, $inline-start) { + @include margin-left($inline-start); + @include margin-right($inline-end); + @include margin-top($block-start); + @include margin-bottom($block-end); } @mixin margin-left ($value) { @supports (margin-inline-start: $value) { - margin-inline-start: $value; + @include rfs($value, margin-inline-start); } @supports not (margin-inline-start: $value) { - margin-left: $value; + @include rfs($value, margin-left); } } @mixin margin-right ($value) { @supports (margin-inline-end: $value) { - margin-inline-end: $value; + @include rfs($value, margin-inline-end); } @supports not (margin-inline-end: $value) { - margin-right: $value; + @include rfs($value, margin-right); + } +} + +@mixin padding-original ($block-start, $inline-end, $block-end, $inline-start) { + @include padding-left($inline-start); + @include padding-right($inline-end); + @include padding-top($block-start); + @include padding-bottom($block-end); +} + + +@mixin padding ($arg1: null, $arg2: null, $arg3: null, $arg4: null) { + @if $arg2 == null and $arg3 == null and $arg4 == null { + @include padding-original($arg1, $arg1, $arg1, $arg1); + } @else if $arg3 == null and $arg4 == null { + @include padding-original($arg1, $arg2, $arg1, $arg2); + } @else if $arg4 == null { + @include padding-original($arg1, $arg2, $arg3, $arg2); + } @else { + @include padding-original($arg1, $arg2, $arg3, $arg4); } } @mixin padding-left ($value) { @supports (padding-inline-start: $value) { - padding-inline-start: $value; + @include rfs($value, padding-inline-start); } @supports not (padding-inline-start: $value) { - padding-left: $value; + @include rfs($value, padding-left); } } @mixin padding-right ($value) { @supports (padding-inline-end: $value) { - padding-inline-end: $value; + @include rfs($value, padding-inline-end); } @supports not (padding-inline-end: $value) { - padding-right: $value; + @include rfs($value, padding-right); } }