X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fsass%2Finclude%2F_mixins.scss;h=eec7b4a564542c08f865840ef7ae9967cc2bdd42;hb=ed5bb517266c80904c44bf44a335f1003f5aa277;hp=f96a43b34387113b78fed75cf2d0799d8d486c60;hpb=76314386aeafdd6849b7b70c517779d6b2013473;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/sass/include/_mixins.scss b/client/src/sass/include/_mixins.scss index f96a43b34..eec7b4a56 100644 --- a/client/src/sass/include/_mixins.scss +++ b/client/src/sass/include/_mixins.scss @@ -13,7 +13,6 @@ } } - @mixin ellipsis { white-space: nowrap; overflow: hidden; @@ -49,24 +48,29 @@ } @mixin apply-svg-color ($color) { + ::ng-deep .feather, + ::ng-deep .material { + color: $color; + } + ::ng-deep svg { - path[fill="#000000"], - g[fill="#000000"], - rect[fill="#000000"], - circle[fill="#000000"], - polygon[fill="#000000"] { + path[fill="#000"], + g[fill="#000"], + rect[fill="#000"], + circle[fill="#000"], + polygon[fill="#000"] { fill: $color; } - path[stroke="#000000"], - g[stroke="#000000"], - rect[stroke="#000000"], - circle[stroke="#000000"], - polygon[stroke="#000000"] { + path[stroke="#000"], + g[stroke="#000"], + rect[stroke="#000"], + circle[stroke="#000"], + polygon[stroke="#000"] { stroke: $color; } - stop[stop-color="#000000"] { + stop[stop-color="#000"] { stop-color: $color; } } @@ -80,9 +84,10 @@ } } -@mixin button-focus-visible-shadow($color) { +@mixin button-focus($color) { + &:focus, &.focus-visible { - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 4px $color; + box-shadow: #{$focus-box-shadow-form} $color; } } @@ -90,7 +95,8 @@ display: inline-block; height: $button-height; width: $width; - background: var(--inputBackgroundColor); + color: pvar(--inputForegroundColor); + background-color: pvar(--inputBackgroundColor); border: 1px solid #C6C6C6; border-radius: 3px; padding-left: 15px; @@ -98,7 +104,11 @@ font-size: 15px; &::placeholder { - color: var(--inputPlaceholderColor); + color: pvar(--inputPlaceholderColor); + } + + &[readonly] { + opacity: 0.7; } @media screen and (max-width: $width) { @@ -121,22 +131,24 @@ @mixin peertube-textarea ($width, $height) { @include peertube-input-text($width); + color: pvar(--textareaForegroundColor); + background-color: pvar(--textareaBackgroundColor); height: $height; padding: 5px 15px; font-size: 15px; } @mixin orange-button { - @include button-focus-visible-shadow(var(--mainHoverColor)); + @include button-focus(pvar(--mainColorLightest)); &, &:active, &:focus { color: #fff; - background-color: var(--mainColor); + background-color: pvar(--mainColor); } &:hover { color: #fff; - background-color: var(--mainHoverColor); + background-color: pvar(--mainHoverColor); } &[disabled], &.disabled { @@ -151,7 +163,9 @@ } @mixin tertiary-button { - color: $grey-foreground-color; + @include button-focus($grey-button-outline-color); + + color: pvar(--greyForegroundColor); background-color: transparent; &[disabled], &.disabled { @@ -164,13 +178,12 @@ } @mixin grey-button { - &, &:active, &:focus { - background-color: $grey-background-color; - color: $grey-foreground-color; - } + @include button-focus($grey-button-outline-color); + background-color: $grey-background-color; + color: pvar(--greyForegroundColor); &:hover, &:active, &:focus, &[disabled], &.disabled { - color: $grey-foreground-color; + color: pvar(--greyForegroundColor); background-color: $grey-background-hover-color; } @@ -179,7 +192,28 @@ } my-global-icon { - @include apply-svg-color($grey-foreground-color) + @include apply-svg-color(pvar(--greyForegroundColor)) + } +} + +@mixin danger-button { + $color: lighten($color: #c54130, $amount: 10); + $text: #fff6f5; + + @include button-focus(scale-color($color, $alpha: -95%)); + background-color: $color; + color: $text; + + &:hover, &:active, &:focus, &[disabled], &.disabled { + background-color: lighten($color: $color, $amount: 10); + } + + &[disabled], &.disabled { + cursor: default; + } + + my-global-icon { + @include apply-svg-color($text) } } @@ -228,7 +262,6 @@ min-height: 30px; @include peertube-button; - @include orange-button; input[type=file] { position: absolute; @@ -274,11 +307,10 @@ @mixin peertube-select-container ($width) { padding: 0; margin: 0; - border: 1px solid #C6C6C6; width: $width; border-radius: 3px; - overflow: hidden; - background: var(--inputBackgroundColor); + color: pvar(--inputForegroundColor); + background: pvar(--inputBackgroundColor); position: relative; font-size: 15px; @@ -303,14 +335,13 @@ width: calc(100% + 2px); position: relative; left: 1px; - border: none; - box-shadow: none; + border: 1px solid #C6C6C6; background: transparent none; appearance: none; cursor: pointer; height: $button-height; text-overflow: ellipsis; - color: var(--mainForegroundColor); + color: pvar(--mainForegroundColor); &:focus { outline: none; @@ -370,7 +401,7 @@ position: absolute; &:focus + span { - box-shadow: 0 0 0 .1rem rgba(87, 85, 217, .2); + box-shadow: #{$focus-box-shadow-form} pvar(--mainColorLightest); } & + span { @@ -378,7 +409,7 @@ width: 18px; min-width: 18px; height: 18px; - border: $border-width solid $fg-color; + border: $border-width solid #C6C6C6; border-radius: 3px; vertical-align: middle; cursor: pointer; @@ -399,7 +430,7 @@ &:checked + span { border-color: transparent; - background: var(--mainColor); + background: pvar(--mainColor); animation: jelly 0.6s ease; &:after { @@ -459,14 +490,14 @@ @mixin in-content-small-title { text-transform: uppercase; - color: var(--mainColor); + color: pvar(--mainColor); font-weight: $font-bold; font-size: 13px; } @mixin settings-big-title { text-transform: uppercase; - color: var(--mainColor); + color: pvar(--mainColor); font-weight: $font-bold; font-size: 110%; margin-bottom: 10px; @@ -477,7 +508,7 @@ font-size: 13px; margin-top: 4px; - color: var(--mainForegroundColor); + color: pvar(--mainForegroundColor); span:hover { opacity: 0.8; @@ -607,8 +638,8 @@ border-radius: 0.25rem; .progress-bar { - color: var(--mainBackgroundColor); - background-color: var(--mainColor); + color: pvar(--mainBackgroundColor); + background-color: pvar(--mainColor); display: flex; flex-direction: column; justify-content: center; @@ -617,7 +648,7 @@ transition: width 0.6s ease; &.secondary { - background-color: var(--secondaryColor); + background-color: pvar(--secondaryColor); } } } @@ -628,14 +659,14 @@ padding: 0.75rem 1rem; margin-bottom: 1rem; list-style: none; - background-color: var(--submenuColor); + background-color: pvar(--submenuColor); border-radius: 0.25rem; .breadcrumb-item { display: flex; a { - color: var(--mainColor); + color: pvar(--mainColor); } & + .breadcrumb-item { @@ -666,6 +697,8 @@ margin-bottom: 10px; & > a { + @include disable-default-a-behaviour; + text-decoration: none; color: inherit; display: block; @@ -681,7 +714,7 @@ & > a, & > div { padding: 20px; - background: var(--submenuColor); + background: pvar(--submenuColor); border-radius: 4px; box-sizing: border-box; height: 100%; @@ -692,14 +725,227 @@ text-align: center; font-size: 130%; line-height: 21px; - color: var(--mainForegroundColor); + color: pvar(--mainForegroundColor); line-height: 30px; margin-bottom: 20px; } .dashboard-label { font-size: 90%; - color: var(--inputPlaceholderColor); + color: pvar(--inputPlaceholderColor); + text-align: center; + } +} + +@mixin ng2-tags { + ::ng-deep { + .ng2-tag-input { + border: none !important; + } + + .ng2-tags-container { + display: flex; + align-items: center; + border: 1px solid #C6C6C6; + border-radius: 3px; + padding: 5px !important; + height: max-content; + + &:focus-within { + box-shadow: #{$focus-box-shadow-form} pvar(--mainColorLightest); + } + } + + tag-input-form { + input { + height: 30px !important; + font-size: 12px !important; + + background-color: pvar(--mainBackgroundColor) !important; + color: pvar(--mainForegroundColor) !important; + } + } + + tag { + background-color: $grey-background-color !important; + color: #000 !important; + border-radius: 3px !important; + font-size: 12px !important; + height: 30px !important; + line-height: 30px !important; + margin: 0 5px 0 0 !important; + cursor: default !important; + padding: 0 8px 0 10px !important; + + div { + height: 100% !important; + } + } + + delete-icon { + cursor: pointer !important; + height: auto !important; + vertical-align: middle !important; + padding-left: 6px !important; + + svg { + position: relative; + top: -1px; + height: auto !important; + vertical-align: middle !important; + + path { + fill: pvar(--greyForegroundColor) !important; + } + } + + &:hover { + transform: none !important; + } + } + } +} + +@mixin divider($color: pvar(--submenuColor), $background: pvar(--mainBackgroundColor)) { + width: 95%; + border-top: .05rem solid $color; + height: .05rem; + text-align: center; + display: block; + position: relative; + + &[data-content] { + margin: .8rem 0; + + &::after { + background: $background; + color: $color; + content: attr(data-content); + display: inline-block; + font-size: .7rem; + padding: 0 .4rem; + transform: translateY(-.65rem); + } + } +} + +@mixin chip { + --chip-radius: 5rem; + --chip-padding: .2rem .4rem; + $avatar-height: 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; + 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; + } + + .avatar { + margin-left: -.4rem; + margin-right: .2rem; + height: $avatar-height; + width: $avatar-height; + + border-radius: 50%; + display: inline-block; + line-height: 1.25; + position: relative; + vertical-align: middle; + } + + &.two-lines { + $avatar-height: 2rem; + + height: $avatar-height; + + .avatar { + height: $avatar-height; + width: $avatar-height; + } + + div { + display: flex; + flex-direction: column; + height: $avatar-height; + margin-left: .1rem; + margin-right: .1rem; + justify-content: center; + } + } +} + +@mixin admin-sub-header-responsive ($horizontal-margins) { + flex-direction: column; + + .form-sub-title { + margin-right: 0px !important; + margin-bottom: 10px; text-align: center; } + + .admin-sub-nav { + display: block; + overflow-x: auto; + white-space: nowrap; + height: 50px; + padding: 10px 0; + width: calc(100vw - #{$horizontal-margins*2}); + + a { + margin-left: 5px; + } + } +} + +// applies 16:9 ratio to a child element (using $selector) only using +// an immediate's parent size. This allows 16:9 ratio without explicit +// dimensions, as width/height cannot be computed from each other. +@mixin large-screen-ratio ($selector: 'div') { + position: relative; + height: 0; + width: 100%; + padding-top: 56%; + + #{$selector} { + position: absolute; + width: 100%; + height: 100%; + top: 0; + @content; + } +} + +@mixin sub-menu-h1 { + ::ng-deep h1 { + font-size: 1.3rem; + border-bottom: 2px solid $grey-background-color; + padding-bottom: 15px; + margin-bottom: $sub-menu-margin-bottom; + + my-global-icon { + margin-right: 10px; + vertical-align: bottom; + width: 24px; + height: 24px; + } + + .badge { + margin-left: 7px; + } + } }