@import '_variables'; @mixin disable-default-a-behaviour { &:hover, &:focus, &:active { text-decoration: none !important; outline: none !important; } } @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: var(--inputColor); border: 1px solid #C6C6C6; border-radius: 3px; padding-left: 15px; padding-right: 15px; font-size: 15px; &::placeholder { 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: var(--mainColor); } &:hover { color: #fff; background-color: var(--mainHoverColor); } &[disabled], &.disabled { cursor: default; color: #fff; background-color: #C6C6C6; } my-global-icon { @include apply-svg-color(#fff) } } @mixin grey-button { &, &:active, &:focus { background-color: $grey-background-color; color: $grey-foreground-color; } &:hover, &:active, &:focus, &[disabled], &.disabled { 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 { border: none; font-weight: $font-semibold; font-size: 15px; height: $button-height; line-height: $button-height; border-radius: 3px; text-align: center; padding: 0 17px 0 13px; cursor: pointer; outline: 0; } @mixin peertube-button-link { display: inline-block; @include disable-default-a-behaviour; @include peertube-button; } @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) { display: inline-block; background-repeat: no-repeat; background-size: contain; width: $size; height: $size; vertical-align: middle; cursor: pointer; } @mixin peertube-select-container ($width) { padding: 0; margin: 0; border: 1px solid #C6C6C6; width: $width; border-radius: 3px; overflow: hidden; background: var(--inputColor); position: relative; font-size: 15px; &:after { top: 50%; right: calc(0% + 15px); content: " "; height: 0; width: 0; position: absolute; pointer-events: none; border: 5px solid rgba(0, 0, 0, 0); border-top-color: #000; margin-top: -2px; z-index: 100; } select { padding: 0 35px 0 12px; width: calc(100% + 2px); position: relative; left: 1px; border: none; box-shadow: none; background: transparent none; appearance: none; cursor: pointer; height: $button-height; text-overflow: ellipsis; color: var(--mainForegroundColor); &:focus { outline: none; } &:-moz-focusring { color: transparent; text-shadow: 0 0 0 #000; } option { color: #000; } } } @mixin peertube-select-disabled-container ($width) { @include peertube-select-container($width); background-color: #E5E5E5; select { 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; } }