X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fsass%2Finclude%2F_mixins.scss;h=37bd404dd02f026a97ed02da590e50fa6346ce5e;hb=a55052c9baf2952795685d3b4e5348c8cb9da70d;hp=4a709404d9d34afae783da4674bb60c891476767;hpb=15a7387da888492068e2ce3d1e39639d142f6c6e;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/sass/include/_mixins.scss b/client/src/sass/include/_mixins.scss index 4a709404d..37bd404dd 100644 --- a/client/src/sass/include/_mixins.scss +++ b/client/src/sass/include/_mixins.scss @@ -7,30 +7,133 @@ } } +@mixin disable-outline { + &:focus:not(.focus-visible) { + outline: none; + } + + &::-moz-focus-inner { + border: 0; + padding: 0 + } +} + + +@mixin ellipsis { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +/** + * This mixin will crop text in block for needed amount of lines and put ellipsis at the end + * + * @param $font-size font-size property + * @param $line-height line-height property + * @param $lines-to-show amount of lines to show + */ +@mixin ellipsis-multiline($font-size: 1rem, $line-height: 1, $lines-to-show: 2) { + display: block; + /* Fallback for non-webkit */ + display: -webkit-box; + max-height: $font-size * $line-height * $lines-to-show; + /* Fallback for non-webkit */ + font-size: $font-size; + line-height: $line-height; + -webkit-line-clamp: $lines-to-show; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; +} + +@mixin prefix($property, $parameters...) { + @each $prefix in -webkit-, -moz-, -ms-, -o-, "" { + #{$prefix}#{$property}: $parameters; + } +} + +@mixin peertube-word-wrap { + word-break: normal; + word-wrap: break-word; + overflow-wrap: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; +} + +@mixin apply-svg-color ($color) { + /deep/ svg { + 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"] { + stroke: $color; + } + + stop[stop-color="#000000"] { + stop-color: $color; + } + } +} + @mixin peertube-input-text($width) { display: inline-block; height: $button-height; width: $width; - background: #fff; + background: var(--inputColor); border: 1px solid #C6C6C6; border-radius: 3px; padding-left: 15px; padding-right: 15px; + font-size: 15px; &::placeholder { - color: #585858; + color: var(--inputPlaceholderColor); + } + + @media screen and (max-width: $width) { + width: 100%; } } +@mixin peertube-input-group($width) { + width: $width; + height: $button-height; + padding-top: 0; + padding-bottom: 0; + + .input-group-text{ + font-size: 14px; + color: gray; + } +} + +@mixin peertube-textarea ($width, $height) { + @include peertube-input-text($width); + + height: $height; + padding: 5px 15px; + font-size: 15px; +} + @mixin orange-button { &, &:active, &:focus { color: #fff; - background-color: $orange-color; + background-color: var(--mainColor); } &:hover { color: #fff; - background-color: $orange-hoover-color; + background-color: var(--mainHoverColor); } &[disabled], &.disabled { @@ -38,22 +141,30 @@ color: #fff; background-color: #C6C6C6; } + + my-global-icon { + @include apply-svg-color(#fff) + } } @mixin grey-button { &, &:active, &:focus { - background-color: $grey-color; - color: #585858; + background-color: $grey-background-color; + color: $grey-foreground-color; } &:hover, &:active, &:focus, &[disabled], &.disabled { - color: #585858; - background-color: $grey-hoover-color; + color: $grey-foreground-color; + background-color: $grey-background-hover-color; } &[disabled], &.disabled { cursor: default; } + + my-global-icon { + @include apply-svg-color($grey-foreground-color) + } } @mixin peertube-button { @@ -76,9 +187,39 @@ @include peertube-button; } -@mixin avatar ($size) { - width: $size; - height: $size; +@mixin button-with-icon($width: 20px, $margin-right: 3px, $top: -1px) { + my-global-icon { + position: relative; + width: $width; + margin-right: $margin-right; + top: $top; + } +} + +@mixin peertube-button-file ($width) { + position: relative; + overflow: hidden; + display: inline-block; + width: $width; + + @include peertube-button; + @include orange-button; + + input[type=file] { + position: absolute; + top: 0; + right: 0; + min-width: 100%; + min-height: 100%; + font-size: 100px; + text-align: right; + filter: alpha(opacity=0); + opacity: 0; + outline: none; + background: white; + cursor: inherit; + display: block; + } } @mixin icon ($size) { @@ -91,7 +232,6 @@ cursor: pointer; } - @mixin peertube-select-container ($width) { padding: 0; margin: 0; @@ -99,8 +239,9 @@ width: $width; border-radius: 3px; overflow: hidden; - background: #fff; + background: var(--inputColor); position: relative; + font-size: 15px; &:after { top: 50%; @@ -111,13 +252,13 @@ position: absolute; pointer-events: none; border: 5px solid rgba(0, 0, 0, 0); - border-top-color: #000000; + border-top-color: #000; margin-top: -2px; z-index: 100; } select { - padding: 0 12px; + padding: 0 35px 0 12px; width: calc(100% + 2px); position: relative; left: 1px; @@ -127,6 +268,8 @@ appearance: none; cursor: pointer; height: $button-height; + text-overflow: ellipsis; + color: var(--mainForegroundColor); &:focus { outline: none; @@ -136,6 +279,10 @@ color: transparent; text-shadow: 0 0 0 #000; } + + option { + color: #000; + } } } @@ -148,3 +295,247 @@ cursor: default; } } + +// Thanks: https://codepen.io/triss90/pen/XNEdRe/ +@mixin peertube-radio-container { + input[type="radio"] { + display: none; + + & + label { + font-weight: $font-regular; + cursor: pointer; + + &:before { + position: relative; + top: -2px; + content: ''; + background: #fff; + border-radius: 100%; + border: 1px solid #000; + display: inline-block; + width: 15px; + height: 15px; + vertical-align: middle; + cursor: pointer; + text-align: center; + margin-right: 10px; + } + } + + &:checked + label:before { + background-color: #000; + box-shadow: inset 0 0 0 4px #fff; + } + + &:focus + label:before { + outline: none; + border-color: #000; + } + } +} + +@mixin peertube-checkbox ($border-width) { + display: none; + + & + span { + position: relative; + width: 18px; + height: 18px; + border: $border-width solid var(--mainForegroundColor); + border-radius: 3px; + vertical-align: middle; + cursor: pointer; + + &:after { + content: ''; + position: absolute; + top: calc(2px - #{$border-width}); + left: 5px; + width: 5px; + height: 12px; + opacity: 0; + transform: rotate(45deg) scale(0); + border-right: 2px solid var(--mainBackgroundColor); + border-bottom: 2px solid var(--mainBackgroundColor); + } + } + + &:checked + span { + border-color: transparent; + background: var(--mainColor); + animation: jelly 0.6s ease; + + &:after { + opacity: 1; + transform: rotate(45deg) scale(1); + } + } + + & + span + span { + font-size: 15px; + font-weight: $font-regular; + margin-left: 5px; + cursor: pointer; + display: inline; + } + + &[disabled] + span, + &[disabled] + span + span{ + opacity: 0.5; + cursor: default; + } +} + + +@mixin avatar ($size) { + object-fit: cover; + border-radius: 50%; + width: $size; + height: $size; +} + +@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: var(--mainColor); + font-weight: $font-bold; + font-size: 13px; +} + +@mixin actor-owner { + @include disable-default-a-behaviour; + + display: inline-table; + font-size: 13px; + margin-top: 4px; + color: var(--mainForegroundColor); + + span:hover { + opacity: 0.8; + } + + img { + @include avatar(18px); + + margin-left: 7px; + position: relative; + top: -2px; + } +} + +@mixin sub-menu-with-actor { + height: 160px; + display: flex; + flex-direction: column; + align-items: flex-start; + + .actor { + display: flex; + margin-top: 20px; + margin-bottom: 20px; + + img { + @include avatar(80px); + + margin-right: 20px; + } + + .actor-info { + display: flex; + flex-direction: column; + justify-content: center; + + .actor-names { + display: flex; + align-items: center; + + .actor-display-name { + font-size: 23px; + font-weight: $font-bold; + } + + .actor-name { + margin-left: 7px; + position: relative; + top: 3px; + font-size: 14px; + color: $grey-actor-name; + } + } + + .actor-followers { + font-size: 15px; + } + + .actor-owner { + @include actor-owner; + } + } + } + + .links { + margin-top: 0; + margin-bottom: 10px; + + a { + margin-top: 0; + margin-bottom: 0; + } + } +} + +@mixin create-button { + @include peertube-button-link; + @include orange-button; + @include button-with-icon(20px, 5px, -1px); +} + +@mixin row-blocks { + display: flex; + min-height: 130px; + padding-bottom: 20px; + margin-bottom: 20px; + border-bottom: 1px solid #C6C6C6; + + @media screen and (max-width: 800px) { + flex-direction: column; + height: auto; + text-align: center; + align-items: center; + } +} + +@mixin dropdown-with-icon-item { + padding: 6px 24px; + + my-global-icon { + width: 24px; + + margin-right: 10px; + position: relative; + top: -2px; + } +}