mirror of
https://github.com/zoriya/flood.git
synced 2025-12-20 14:15:15 +00:00
158 lines
3.6 KiB
SCSS
158 lines
3.6 KiB
SCSS
@keyframes candy-stripe {
|
|
0% {
|
|
background-position: 0 0;
|
|
}
|
|
|
|
100% {
|
|
background-position: 4px 0;
|
|
}
|
|
}
|
|
|
|
$progress-bar--height: 3px;
|
|
|
|
$progress-bar--background: #e3e5e5;
|
|
$progress-bar--background--selected: rgba(#fff, 0.5);
|
|
$progress-bar--background--selected--stopped: rgba(#fff, 0.5);
|
|
$progress-bar--fill: $green;
|
|
|
|
$progress-bar--fill--checking: #8899a8;
|
|
$progress-bar--fill--completed: $blue;
|
|
$progress-bar--fill--error: #e95779;
|
|
$progress-bar--fill--selected: #fff;
|
|
$progress-bar--fill--stopped: #e3e5e5;
|
|
|
|
.progress-bar {
|
|
display: flex;
|
|
transition: opacity 0.25s;
|
|
width: 100%;
|
|
z-index: 1;
|
|
|
|
.is-selected.is-stopped & {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
&__icon {
|
|
flex: 0 0 auto;
|
|
padding-right: 5px;
|
|
|
|
.icon {
|
|
display: block;
|
|
fill: $green;
|
|
height: 12px;
|
|
transition: fill 0.25s, opacity 0.25s;
|
|
width: 12px;
|
|
|
|
.is-seeding & {
|
|
fill: $progress-bar--fill--completed;
|
|
}
|
|
|
|
.is-completed &,
|
|
.is-stopped & {
|
|
fill: $progress-bar--fill--stopped;
|
|
}
|
|
|
|
.has-error & {
|
|
fill: $progress-bar--fill--error;
|
|
}
|
|
|
|
.is-checking & {
|
|
fill: $progress-bar--fill--checking;
|
|
}
|
|
|
|
.is-selected & {
|
|
fill: $progress-bar--fill--selected;
|
|
}
|
|
}
|
|
}
|
|
|
|
&__fill {
|
|
align-items: center;
|
|
background: $progress-bar--fill;
|
|
bottom: 0;
|
|
height: $progress-bar--height;
|
|
left: 0;
|
|
position: absolute;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
transition: background 0.25s, width 0.25s;
|
|
z-index: 1;
|
|
|
|
.is-seeding & {
|
|
background: $progress-bar--fill--completed;
|
|
}
|
|
|
|
.is-completed &,
|
|
.is-stopped & {
|
|
background: $progress-bar--fill--stopped;
|
|
}
|
|
|
|
.has-error & {
|
|
background: $progress-bar--fill--error;
|
|
}
|
|
|
|
.is-checking & {
|
|
background: $progress-bar--fill--checking;
|
|
}
|
|
|
|
.is-selected & {
|
|
background: $progress-bar--fill--selected;
|
|
}
|
|
|
|
&__wrapper {
|
|
flex: 1 1 auto;
|
|
position: relative;
|
|
|
|
&:after {
|
|
background: $progress-bar--fill;
|
|
content: '';
|
|
height: 1px;
|
|
left: 0;
|
|
opacity: 0.5;
|
|
position: absolute;
|
|
z-index: 0;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
transition: background 0.25s, opacity 0.25s;
|
|
width: 100%;
|
|
|
|
.is-stopped & {
|
|
background: $progress-bar--fill--stopped;
|
|
}
|
|
|
|
.has-error & {
|
|
background: $progress-bar--fill--error;
|
|
}
|
|
|
|
.is-selected & {
|
|
background: $progress-bar--background--selected;
|
|
}
|
|
|
|
.is-selected.is-stopped & {
|
|
background: $progress-bar--background--selected--stopped;
|
|
opacity: 1;
|
|
}
|
|
|
|
.is-checking & {
|
|
animation: candy-stripe 0.25s linear infinite;
|
|
background-color: transparent;
|
|
background-image: linear-gradient(-45deg, rgba($progress-bar--fill--checking, 0) 0,
|
|
rgba($progress-bar--fill--checking, 0) 25%, rgba($progress-bar--fill--checking, 0.5) 25%,
|
|
rgba($progress-bar--fill--checking, 0.5) 50%, rgba($progress-bar--fill--checking, 0) 50%,
|
|
rgba($progress-bar--fill--checking, 0) 75%, rgba($progress-bar--fill--checking, 0.5) 75%,
|
|
rgba($progress-bar--fill--checking, 0.5) 100%);
|
|
background-size: 4px 4px;
|
|
height: $progress-bar--height;
|
|
}
|
|
|
|
.is-selected.is-checking & {
|
|
background-image: linear-gradient(-45deg, rgba(#fff, 0) 0,
|
|
rgba(#fff, 0) 25%, rgba(#fff, 0.5) 25%,
|
|
rgba(#fff, 0.5) 50%, rgba(#fff, 0) 50%,
|
|
rgba(#fff, 0) 75%, rgba(#fff, 0.5) 75%,
|
|
rgba(#fff, 0.5) 100%);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|