238 lines
5.6 KiB
SCSS
238 lines
5.6 KiB
SCSS
|
@mixin between {
|
||
|
display: flex;
|
||
|
justify-content: space-between;
|
||
|
}
|
||
|
|
||
|
@mixin breakpoint-max($breakpoint) {
|
||
|
@media (max-width: #{$breakpoint}px) {
|
||
|
@content;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin breakpoint-min($breakpoint) {
|
||
|
@media (min-width: #{$breakpoint}px) {
|
||
|
@content;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin center {
|
||
|
align-items: center;
|
||
|
display: inline-flex;
|
||
|
justify-content: center;
|
||
|
}
|
||
|
|
||
|
@mixin clearfix {
|
||
|
clear: both;
|
||
|
content: '';
|
||
|
display: block;
|
||
|
}
|
||
|
|
||
|
// (Smart) text truncation
|
||
|
// Pass in a width to customize how much text is allowed
|
||
|
// Omit value for basic text truncation
|
||
|
@mixin constrict($value: null) {
|
||
|
@if ($value) {
|
||
|
max-width: $value;
|
||
|
}
|
||
|
|
||
|
overflow: hidden;
|
||
|
text-overflow: ellipsis;
|
||
|
white-space: nowrap;
|
||
|
}
|
||
|
|
||
|
@mixin create-grid($items-per-row: 4) {
|
||
|
grid-template: repeat(1, 1fr) / repeat($items-per-row, 1fr);
|
||
|
}
|
||
|
|
||
|
// Smart font include
|
||
|
// Simply pass in the font-weight you want to use and the normal/italicized versions will be added
|
||
|
// No more weighing down the front-end with references to unused weights
|
||
|
@mixin font-face($font-weight, $relative-font-path, $font-name) {
|
||
|
@font-face {
|
||
|
font-family: $font-name;
|
||
|
font-style: normal;
|
||
|
font-weight: $font-weight;
|
||
|
// sass-lint:disable indentation
|
||
|
src: url('#{$relative-font-path}/#{$font-weight}.woff2') format('woff2'),
|
||
|
url('#{$relative-font-path}/#{$font-weight}.woff') format('woff');
|
||
|
// sass-lint:enable indentation
|
||
|
}
|
||
|
|
||
|
@font-face {
|
||
|
font-family: $font-name;
|
||
|
font-style: italic;
|
||
|
font-weight: $font-weight;
|
||
|
// sass-lint:disable indentation
|
||
|
src: url('#{$relative-font-path}/#{$font-weight}i.woff2') format('woff2'),
|
||
|
url('#{$relative-font-path}/#{$font-weight}i.woff') format('woff');
|
||
|
// sass-lint:enable indentation
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin font-mono {
|
||
|
font-family: 'Fira Code', 'Courier New', monospace;
|
||
|
}
|
||
|
|
||
|
@mixin font-sans {
|
||
|
font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif,
|
||
|
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
||
|
}
|
||
|
|
||
|
@mixin font-serif {
|
||
|
font-family: Georgia, serif;
|
||
|
}
|
||
|
|
||
|
@mixin hide-text {
|
||
|
border: none;
|
||
|
color: transparent;
|
||
|
font: 0 / 0 a;
|
||
|
text-shadow: none;
|
||
|
}
|
||
|
|
||
|
// Cross-browser line-clamp support
|
||
|
@mixin line-clamp($element-height: 2rem, $row-count: 2, $fade-color: var(--lbry-white), $computed-position: relative) {
|
||
|
height: $element-height;
|
||
|
overflow: hidden;
|
||
|
position: $computed-position;
|
||
|
|
||
|
&::after {
|
||
|
width: 50%;
|
||
|
height: calc(#{$element-height} / #{$row-count});
|
||
|
right: 0;
|
||
|
bottom: 0;
|
||
|
|
||
|
background-image: linear-gradient(to right, rgba($lbry-white, 0), #{$fade-color} 80%);
|
||
|
content: '';
|
||
|
position: absolute;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin no-user-select {
|
||
|
user-select: none;
|
||
|
|
||
|
-ms-user-select: none;
|
||
|
-moz-user-select: none;
|
||
|
-webkit-user-select: none;
|
||
|
}
|
||
|
|
||
|
// Use CSS variables without upsetting Sass-Lint
|
||
|
// https://github.com/sasstools/sass-lint/issues/1161#issuecomment-390537190
|
||
|
@mixin root-prop($prop: null, $value: null) {
|
||
|
@if ($prop and $value) {
|
||
|
#{$prop}: $value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin selection($background-color: var(--lbry-white), $text-color: var(--lbry-black)) {
|
||
|
&::selection {
|
||
|
background-color: $background-color;
|
||
|
color: $text-color;
|
||
|
text-shadow: none;
|
||
|
}
|
||
|
|
||
|
&::-moz-selection {
|
||
|
background-color: $background-color;
|
||
|
color: $text-color;
|
||
|
text-shadow: none;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin thumbnail {
|
||
|
&::before,
|
||
|
&::after {
|
||
|
content: '';
|
||
|
}
|
||
|
|
||
|
&::before {
|
||
|
float: left;
|
||
|
padding-top: var(--aspect-ratio-standard);
|
||
|
}
|
||
|
|
||
|
&::after {
|
||
|
clear: both;
|
||
|
display: block;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin focus {
|
||
|
box-shadow: 0 0 0 3px var(--color-focus);
|
||
|
}
|
||
|
|
||
|
@mixin linkFocus {
|
||
|
background-color: var(--color-link-focus-bg);
|
||
|
box-shadow: 0 0 0 5px var(--color-link-focus-bg);
|
||
|
}
|
||
|
|
||
|
@mixin underline($text-color: var(--lbry-black), $whitespace-color: var(--lbry-white)) {
|
||
|
@include selection($text-color, $whitespace-color);
|
||
|
|
||
|
background-image: linear-gradient($whitespace-color, $whitespace-color),
|
||
|
linear-gradient($whitespace-color, $whitespace-color), linear-gradient($text-color, $text-color);
|
||
|
background-position: 0 88%, 100% 88%, 0 88%;
|
||
|
background-repeat: no-repeat, no-repeat, repeat-x;
|
||
|
background-size: 0.05rem 1px, 0.05rem 1px, 1px 1px;
|
||
|
box-decoration-break: clone;
|
||
|
display: inline;
|
||
|
text-decoration: none;
|
||
|
text-shadow: 0.03rem 0 $whitespace-color, -0.03rem 0 $whitespace-color, 0 0.03rem $whitespace-color,
|
||
|
0 -0.03rem $whitespace-color, 0.06rem 0 $whitespace-color, -0.06rem 0 $whitespace-color, 0.09rem 0 $whitespace-color,
|
||
|
-0.09rem 0 $whitespace-color, 0.12rem 0 $whitespace-color, -0.12rem 0 $whitespace-color, 0.15rem 0 $whitespace-color,
|
||
|
-0.15rem 0 $whitespace-color;
|
||
|
|
||
|
@-moz-document url-prefix() {
|
||
|
// sass-lint:disable-line empty-args
|
||
|
background-position: 0 90%, 100% 90%, 0 90%;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin placeholder {
|
||
|
animation: pulse 2s infinite ease-in-out;
|
||
|
background-color: var(--color-placeholder-background);
|
||
|
border-radius: var(--card-radius);
|
||
|
border-width: 0;
|
||
|
}
|
||
|
|
||
|
@mixin mediaThumbHoverZoom {
|
||
|
.media__thumb,
|
||
|
img {
|
||
|
transition: all 0.2s ease;
|
||
|
}
|
||
|
|
||
|
&:hover {
|
||
|
.media__thumb,
|
||
|
img {
|
||
|
transform: scale(1.05);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin handleClaimTileGifThumbnail($width) {
|
||
|
.ff-canvas,
|
||
|
.freezeframe-img {
|
||
|
height: calc(#{$width} * (9 / 16)) !important;
|
||
|
width: $width;
|
||
|
border-bottom-left-radius: 0;
|
||
|
border-bottom-right-radius: 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin handleClaimListGifThumbnail($width) {
|
||
|
.ff-canvas,
|
||
|
.freezeframe-img {
|
||
|
height: calc(#{$width} * (9 / 16)) !important;
|
||
|
width: $width;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@mixin handleChannelGif($size) {
|
||
|
height: $size;
|
||
|
width: $size;
|
||
|
|
||
|
.ff-canvas,
|
||
|
.freezeframe-img {
|
||
|
border-radius: var(--border-radius);
|
||
|
height: $size !important;
|
||
|
width: $size !important;
|
||
|
}
|
||
|
}
|