127 lines
2.6 KiB
SCSS
127 lines
2.6 KiB
SCSS
|
@use "../utilities/css-variables" as cv;
|
||
|
@use "../utilities/initial-variables" as iv;
|
||
|
@use "../utilities/mixins" as mx;
|
||
|
@use "../utilities/extends";
|
||
|
|
||
|
$skeleton-background: cv.getVar("border") !default;
|
||
|
$skeleton-radius: cv.getVar("radius-small") !default;
|
||
|
$skeleton-block-min-height: 4.5em !default;
|
||
|
$skeleton-lines-gap: 0.75em !default;
|
||
|
$skeleton-line-height: 0.75em !default;
|
||
|
|
||
|
:root {
|
||
|
@include cv.register-vars(
|
||
|
(
|
||
|
"skeleton-background": #{$skeleton-background},
|
||
|
"skeleton-radius": #{$skeleton-radius},
|
||
|
"skeleton-block-min-height": #{$skeleton-block-min-height},
|
||
|
"skeleton-lines-gap": #{$skeleton-lines-gap},
|
||
|
"skeleton-line-height": #{$skeleton-line-height},
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
%skeleton-pulsation {
|
||
|
animation-duration: 2s;
|
||
|
animation-iteration-count: infinite;
|
||
|
animation-name: pulsate;
|
||
|
animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
|
||
|
background-color: cv.getVar("skeleton-background");
|
||
|
border-radius: cv.getVar("skeleton-radius");
|
||
|
box-shadow: none;
|
||
|
pointer-events: none;
|
||
|
}
|
||
|
|
||
|
.#{iv.$class-prefix}is-skeleton {
|
||
|
@extend %skeleton-pulsation;
|
||
|
color: transparent !important;
|
||
|
|
||
|
em,
|
||
|
strong {
|
||
|
color: inherit;
|
||
|
}
|
||
|
|
||
|
img {
|
||
|
visibility: hidden;
|
||
|
}
|
||
|
|
||
|
&.#{iv.$class-prefix}checkbox {
|
||
|
input {
|
||
|
opacity: 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
&.#{iv.$class-prefix}delete {
|
||
|
border-radius: cv.getVar("radius-rounded");
|
||
|
|
||
|
&::before,
|
||
|
&::after {
|
||
|
display: none;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
input.#{iv.$class-prefix}is-skeleton,
|
||
|
textarea.#{iv.$class-prefix}is-skeleton {
|
||
|
resize: none;
|
||
|
|
||
|
@include mx.placeholder {
|
||
|
color: transparent !important;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.#{iv.$class-prefix}has-skeleton {
|
||
|
color: transparent !important;
|
||
|
position: relative;
|
||
|
|
||
|
&::after {
|
||
|
@extend %skeleton-pulsation;
|
||
|
content: "";
|
||
|
display: block;
|
||
|
height: 100%;
|
||
|
left: 0;
|
||
|
max-width: 100%;
|
||
|
min-width: 10%;
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
width: 7em;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.#{iv.$class-prefix}skeleton-block {
|
||
|
@extend %block;
|
||
|
@extend %skeleton-pulsation;
|
||
|
color: transparent !important;
|
||
|
min-height: cv.getVar("skeleton-block-min-height");
|
||
|
}
|
||
|
|
||
|
.#{iv.$class-prefix}skeleton-lines {
|
||
|
color: transparent !important;
|
||
|
display: flex;
|
||
|
flex-direction: column;
|
||
|
gap: cv.getVar("skeleton-lines-gap");
|
||
|
position: relative;
|
||
|
|
||
|
> div {
|
||
|
@extend %skeleton-pulsation;
|
||
|
height: cv.getVar("skeleton-line-height");
|
||
|
|
||
|
&:last-child {
|
||
|
min-width: 4em;
|
||
|
width: 30%;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.#{iv.$class-prefix}skeleton {
|
||
|
background-image: linear-gradient(
|
||
|
0deg,
|
||
|
transparent 0%,
|
||
|
transparent 50%,
|
||
|
#f60 50%,
|
||
|
#f60 100%
|
||
|
);
|
||
|
background-position: top left;
|
||
|
background-size: 1.5em;
|
||
|
}
|