fleet/frontend/components/Spinner/_styles.scss
2025-09-29 12:10:41 -05:00

120 lines
1.8 KiB
SCSS

.loading-spinner {
display: flex;
align-items: center;
justify-content: center;
&.centered {
margin: 120px auto;
&.small-padding {
margin: 60px auto;
}
}
&.include-container {
background-color: $core-fleet-white;
box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1);
border-radius: 8px;
width: 48px;
height: 48px;
}
.loader {
position: relative;
margin: 0 auto;
&:before {
content: "";
display: block;
padding-top: 100%;
}
}
&.medium {
.loader {
width: 34px;
}
}
&.small {
.loader {
width: 23px;
}
}
&.x-small {
.loader {
width: 16px;
}
}
&.button {
background: none;
position: absolute;
width: auto;
height: auto;
top: auto;
box-shadow: none;
z-index: 9;
margin: 0;
padding: 0;
&.white {
.path {
stroke: $core-fleet-white;
}
}
.loader {
width: 23px;
}
.background {
display: none;
}
}
.circular {
animation: rotate 2s linear infinite;
height: 100%;
transform-origin: center center;
width: 100%;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
}
.path {
stroke-dasharray: 1, 200;
stroke-dashoffset: 0;
stroke: $core-fleet-green;
animation: dash 1.5s ease-in-out infinite;
stroke-linecap: round;
}
.background {
stroke: $ui-fleet-black-25;
}
@keyframes rotate {
100% {
transform: rotate(360deg);
}
}
@keyframes dash {
0% {
stroke-dasharray: 1, 200;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 89, 200;
stroke-dashoffset: -35px;
}
100% {
stroke-dasharray: 89, 200;
stroke-dashoffset: -124px;
}
}
}