pulsar/packages/one-light-ui/styles/progress.less
2023-06-29 20:37:16 -07:00

95 lines
2.6 KiB
Plaintext

// Spinner ----------------------
@spinner-duration: 1.2s;
.loading-spinner(@size) {
position: relative;
display: block;
width: 1em;
height: 1em;
font-size: @size;
background: radial-gradient(@accent-color .1em, transparent .11em);
&::before,
&::after {
content: "";
position: absolute;
z-index: 10; // prevent sibling elements from getting their own layers
top: 0;
left: 0;
border-radius: 1em;
width: inherit;
height: inherit;
border-radius: 1em;
border: 2px solid;
-webkit-animation: spinner-animation @spinner-duration infinite;
-webkit-animation-fill-mode: backwards;
}
&::before {
border-color: @accent-color transparent transparent transparent;
}
&::after {
border-color: transparent lighten(@accent-color, 15%) transparent transparent;
-webkit-animation-delay: (@spinner-duration/2);
}
&.inline-block {
display: inline-block;
}
}
@-webkit-keyframes spinner-animation {
0% { transform: rotateZ( 0deg); -webkit-animation-timing-function: cubic-bezier(0, 0, .8, .2); }
50% { transform: rotateZ(180deg); -webkit-animation-timing-function: cubic-bezier(.2, .8, 1, 1); }
100% { transform: rotateZ(360deg); }
}
// Spinner sizes
.loading-spinner-tiny { .loading-spinner(16px); &::before, &::after { border-width: 1px; } }
.loading-spinner-small { .loading-spinner(32px); }
.loading-spinner-medium { .loading-spinner(48px); }
.loading-spinner-large { .loading-spinner(64px); }
// Progress Bar ----------------------
@progress-height: 8px;
@progress-buffer-color: fade(@progress-background-color, 20%);
progress {
-webkit-appearance: none;
height: @progress-height;
border-radius: @component-border-radius;
background-color: @input-background-color;
box-shadow: inset 0 0 0 1px @input-border-color;
&::-webkit-progress-bar {
background-color: transparent;
}
&::-webkit-progress-value {
border-radius: @component-border-radius;
background-color: @progress-background-color;
}
// Is buffering (when no value is set)
&:indeterminate {
background-image:
linear-gradient(-45deg, transparent 33%, @progress-buffer-color 33%,
@progress-buffer-color 66%, transparent 66%);
background-size: 25px @progress-height, 100% 100%, 100% 100%;
// Plays animation for 1min (12runs) at normal speed,
// then slows down frame-rate for 9mins (108runs) to limit CPU usage
-webkit-animation: progress-buffering 5s linear 12,
progress-buffering 5s 60s steps(10) 108;
}
}
@-webkit-keyframes progress-buffering {
100% { background-position: -100px 0px; }
}