279 lines
6.4 KiB
SCSS
279 lines
6.4 KiB
SCSS
$theme-map: null;
|
|
@mixin themify($themes) {
|
|
@each $theme, $map in $themes {
|
|
.theme__#{$theme} & {
|
|
$theme-map: () !global;
|
|
@each $key, $submap in $map {
|
|
$value: map-get(map-get($themes, $theme), "#{$key}");
|
|
$theme-map: map-merge(
|
|
$theme-map,
|
|
(
|
|
$key: $value
|
|
)
|
|
) !global;
|
|
}
|
|
@content;
|
|
$theme-map: null !global;
|
|
}
|
|
}
|
|
}
|
|
|
|
@mixin pseudo($display: block, $pos: absolute, $content: "") {
|
|
content: $content;
|
|
display: $display;
|
|
position: $pos;
|
|
}
|
|
|
|
@mixin responsive-ratio($x, $y, $pseudo: false) {
|
|
$padding: unquote(($y / $x) * 100 + "%");
|
|
@if $pseudo {
|
|
&:before {
|
|
@include pseudo($pos: relative);
|
|
width: 100%;
|
|
padding-top: $padding;
|
|
}
|
|
} @else {
|
|
padding-top: $padding;
|
|
}
|
|
}
|
|
|
|
@mixin css-triangle($color, $direction, $size: 6px, $position: absolute, $round: false) {
|
|
@include pseudo($pos: $position);
|
|
width: 0;
|
|
height: 0;
|
|
@if $round {
|
|
border-radius: 3px;
|
|
}
|
|
@if $direction == down {
|
|
border-left: $size solid transparent;
|
|
border-right: $size solid transparent;
|
|
border-top: $size solid $color;
|
|
margin-top: 0 - round($size / 2.5);
|
|
} @else if $direction == up {
|
|
border-left: $size solid transparent;
|
|
border-right: $size solid transparent;
|
|
border-bottom: $size solid $color;
|
|
margin-bottom: 0 - round($size / 2.5);
|
|
} @else if $direction == right {
|
|
border-top: $size solid transparent;
|
|
border-bottom: $size solid transparent;
|
|
border-left: $size solid $color;
|
|
margin-right: -$size;
|
|
} @else if $direction == left {
|
|
border-top: $size solid transparent;
|
|
border-bottom: $size solid transparent;
|
|
border-right: $size solid $color;
|
|
margin-left: -$size;
|
|
}
|
|
}
|
|
|
|
@mixin font-source-sans($size: false, $colour: false, $weight: false, $lh: false) {
|
|
font-family: "Source Sans Pro", Helvetica, Arial, sans-serif;
|
|
@if $size {
|
|
font-size: $size;
|
|
}
|
|
@if $colour {
|
|
color: $colour;
|
|
}
|
|
@if $weight {
|
|
font-weight: $weight;
|
|
}
|
|
@if $lh {
|
|
line-height: $lh;
|
|
}
|
|
}
|
|
|
|
@mixin input-placeholder {
|
|
&.placeholder {
|
|
@content;
|
|
}
|
|
&:-moz-placeholder {
|
|
@content;
|
|
}
|
|
&::-moz-placeholder {
|
|
@content;
|
|
}
|
|
&:-ms-input-placeholder {
|
|
@content;
|
|
}
|
|
&::-webkit-input-placeholder {
|
|
@content;
|
|
}
|
|
}
|
|
|
|
@mixin truncate($truncation-boundary) {
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
max-width: $truncation-boundary;
|
|
}
|
|
|
|
@mixin truncate2($truncation-boundary) {
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
width: $truncation-boundary;
|
|
}
|
|
|
|
@mixin box-shadow($top, $left, $blur, $size, $color, $inset: false) {
|
|
@if $inset {
|
|
-webkit-box-shadow: inset $top $left $blur $size $color;
|
|
-moz-box-shadow: inset $top $left $blur $size $color;
|
|
box-shadow: inset $top $left $blur $size $color;
|
|
} @else {
|
|
-webkit-box-shadow: $top $left $blur $size $color;
|
|
-moz-box-shadow: $top $left $blur $size $color;
|
|
box-shadow: $top $left $blur $size $color;
|
|
}
|
|
}
|
|
|
|
@mixin on-event($self: false) {
|
|
@if $self {
|
|
&,
|
|
&:hover,
|
|
&:active,
|
|
&:focus {
|
|
@content;
|
|
}
|
|
} @else {
|
|
&:hover,
|
|
&:active,
|
|
&:focus {
|
|
@content;
|
|
}
|
|
}
|
|
}
|
|
|
|
@mixin transition($what: all, $time: 0.2s, $how: ease-in-out) {
|
|
-webkit-transition: $what $time $how;
|
|
-moz-transition: $what $time $how;
|
|
-ms-transition: $what $time $how;
|
|
-o-transition: $what $time $how;
|
|
transition: $what $time $how;
|
|
}
|
|
|
|
// Browser Prefixes
|
|
@mixin transform($transforms) {
|
|
-webkit-transform: $transforms;
|
|
-moz-transform: $transforms;
|
|
-ms-transform: $transforms;
|
|
transform: $transforms;
|
|
}
|
|
|
|
// Rotate
|
|
@mixin rotate($deg) {
|
|
@include transform(rotate(#{$deg}deg));
|
|
}
|
|
|
|
// Scale
|
|
@mixin scale($scale) {
|
|
@include transform(scale($scale));
|
|
}
|
|
|
|
@mixin scaleX($scale) {
|
|
@include transform(scaleX($scale));
|
|
}
|
|
|
|
@mixin scaleY($scale) {
|
|
@include transform(scaleY($scale));
|
|
}
|
|
|
|
// Translate
|
|
@mixin translate($x, $y) {
|
|
@include transform(translate($x, $y));
|
|
}
|
|
|
|
@mixin translateX($x) {
|
|
@include transform(translateX($x));
|
|
}
|
|
|
|
@mixin translateY($y) {
|
|
@include transform(translateY($y));
|
|
}
|
|
|
|
// Skew
|
|
@mixin skew($x, $y) {
|
|
@include transform(skew(#{$x}deg, #{$y}deg));
|
|
}
|
|
|
|
// Transform Origin
|
|
@mixin transform-origin($origin) {
|
|
-webkit-transform-origin: $origin;
|
|
-moz-transform-origin: $origin;
|
|
-ms-transform-origin: $origin;
|
|
transform-origin: $origin;
|
|
}
|
|
|
|
@mixin keyframes($animation-name) {
|
|
@-webkit-keyframes #{$animation-name} {
|
|
@content;
|
|
}
|
|
@-moz-keyframes #{$animation-name} {
|
|
@content;
|
|
}
|
|
@-ms-keyframes #{$animation-name} {
|
|
@content;
|
|
}
|
|
@-o-keyframes #{$animation-name} {
|
|
@content;
|
|
}
|
|
@keyframes #{$animation-name} {
|
|
@content;
|
|
}
|
|
}
|
|
|
|
@mixin animation($str) {
|
|
-webkit-animation: #{$str};
|
|
-moz-animation: #{$str};
|
|
-ms-animation: #{$str};
|
|
-o-animation: #{$str};
|
|
animation: #{$str};
|
|
}
|
|
|
|
@mixin no-select {
|
|
-webkit-touch-callout: none;
|
|
-webkit-user-select: none;
|
|
-khtml-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
user-select: none;
|
|
}
|
|
|
|
@mixin clippy() {
|
|
background-image: url('data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjRwdCIgaGVpZ2h0PSIyNHB0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPlxhPHBhdGggc3R5bGU9InN0cm9rZTpub25lO2ZpbGwtcnVsZTpub256ZXJvO2ZpbGw6IzY0NjQ2NDtmaWxsLW9wYWNpdHk6MSIgZD0iTTQgMkMyLjg5NDUzMSAyIDIgMi44OTQ1MzEgMiA0VjE3QzIgMTcuNTUwNzgxIDIuNDQ5MjE5IDE4IDMgMThTNCAxNy41NTA3ODEgNCAxN1Y0SDE3QzE3LjU1MDc4MSA0IDE4IDMuNTUwNzgxIDE4IDNTMTcuNTUwNzgxIDIgMTcgMnpNOCA2QzYuODk0NTMxIDYgNiA2Ljg5NDUzMSA2IDhWMjBDNiAyMS4xMDU0NjkgNi44OTQ1MzEgMjIgOCAyMkgyMEMyMS4xMDU0NjkgMjIgMjIgMjEuMTA1NDY5IDIyIDIwVjhDMjIgNi44OTQ1MzEgMjEuMTA1NDY5IDYgMjAgNnpNOCA4SDIwVjIwSDh6TTggOCIvPjwvc3ZnPg')
|
|
}
|
|
|
|
@mixin webkit-scrollbars($foreground-color, $background-color) {
|
|
&::-webkit-scrollbar {
|
|
width: 0.45em;
|
|
height: 0.45em;
|
|
}
|
|
|
|
&::-webkit-scrollbar-thumb {
|
|
background: $foreground-color;
|
|
}
|
|
|
|
&::-webkit-scrollbar-track {
|
|
background: $background-color;
|
|
}
|
|
}
|
|
|
|
@mixin webkit-scrollbars2($foreground-color, $background-color) {
|
|
::-webkit-scrollbar {
|
|
width: 0.45em;
|
|
height: 0.45em;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: $foreground-color;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: $background-color;
|
|
}
|
|
}
|
|
|
|
@mixin moz-scrollbars($foreground-color, $background-color) {
|
|
scrollbar-width: thin;
|
|
scrollbar-color: $foreground-color $background-color;
|
|
} |