mempool/frontend/src/app/components/tracker/tracker-bar.component.scss

136 lines
3.0 KiB
SCSS
Raw Normal View History

2024-04-13 08:05:31 +00:00
.tracker-bar {
width: 100%;
display: flex;
flex-direction: row;
--div-left-color: var(--box-bg);
--div-right-color: var(--box-bg);
--stage-color: var(--box-bg);
font-size: clamp(5px, 2.5vw, 15px);
height: clamp(15px, 7.5vw, 45px);
.stage {
overflow: hidden;
border-top: solid 2px var(--stat-box-bg);
border-bottom: solid 2px var(--stat-box-bg);
background: var(--stage-color);
color: var(--transparent-fg);
padding: 1em;
flex-grow: 1;
flex-shrink: 1;
overflow: hidden;
text-wrap: nowrap;
text-overflow: hidden;
white-space: no-break;
display: flex;
align-items: center;
justify-content: center;
&:first-child {
border-left: solid 2px var(--stat-box-bg);
border-top-left-radius: 1.6em;
border-bottom-left-radius: 1.6em;
padding-left: 1.6em;
}
&:last-child {
border-right: solid 2px var(--stat-box-bg);
border-top-right-radius: 1.6em;
border-bottom-right-radius: 1.6em;
}
&:nth-child(4n + 3) {
--stage-color: var(--secondary);
}
&.done {
--stage-color: var(--primary);
color: white;
}
&.current {
--stage-color: var(--tertiary);
color: white;
}
&.next {
animation: 1s linear alternate infinite pulse-next;
}
}
.divider {
position: relative;
overflow: hidden;
flex-shrink: 0;
flex-grow: 0;
background: var(--stat-box-bg);
border-top: solid 2px var(--stat-box-bg);
border-bottom: solid 2px var(--stat-box-bg);
&.left-done {
--div-left-color: var(--primary);
}
&.left-current {
--div-left-color: var(--tertiary);
}
&.left-blank, &.left-next {
&:nth-child(4n + 0) {
--div-left-color: var(--secondary);
}
}
&.left-next {
animation: 1s linear alternate infinite pulse-next-top;
}
&.right-done {
--div-right-color: var(--primary);
}
&.right-current {
--div-right-color: var(--tertiary);
}
&.right-blank, &.right-next {
&:nth-child(4n + 2) {
--div-right-color: var(--secondary);
}
}
&.right-next {
animation: 1s linear alternate infinite pulse-next-bottom;
}
&::after, &::before {
content: '';
width: 100%;
height: 100%;
display: block;
position: absolute;
transform: skew(160deg) translate(58%);
background: var(--div-right-color);
}
&::before {
transform: skew(160deg) translate(-58%);
background: var(--div-left-color);
}
width: clamp(5px, 2.5vw, 15px);
}
&.transitions {
.stage, .divider, .divider::before, .divider::after {
transition: color 500ms, border-color 500ms, background-color 500ms;
}
}
}
@keyframes pulse-next {
to {
border-color: var(--tertiary);
text-shadow: 0 0 0.8em var(--tertiary);
}
}
@keyframes pulse-next-top {
to {
border-top-color: var(--tertiary);
}
}
@keyframes pulse-next-bottom {
to {
border-bottom-color: var(--tertiary);
}
}