-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy pathspinner.css
85 lines (70 loc) · 1.82 KB
/
spinner.css
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
.ds-spinner {
--dsc-spinner-background: var(--ds-color-neutral-surface-default);
--dsc-spinner-stroke: var(--ds-color-neutral-border-default);
--dsc-spinner-size: var(--ds-sizing-11);
--dsc-spinner-animation-duration: 2s;
width: var(--dsc-spinner-size);
height: var(--dsc-spinner-size);
animation: ds-spinner-rotate-animation linear infinite;
animation-duration: var(--dsc-spinner-animation-duration);
&[data-color='accent'] {
--dsc-spinner-stroke: var(--ds-color-accent-base-default);
}
&[data-size='2xs'] {
--dsc-spinner-size: var(--ds-sizing-3);
}
&[data-size='xs'] {
--dsc-spinner-size: var(--ds-sizing-5);
}
&[data-size='sm'] {
--dsc-spinner-size: var(--ds-sizing-8);
}
&[data-size='lg'] {
--dsc-spinner-size: var(--ds-sizing-15);
}
&[data-size='xl'] {
--dsc-spinner-size: var(--ds-sizing-22);
}
}
.ds-spinner__background {
stroke: var(--dsc-spinner-background);
}
.ds-spinner__circle {
stroke: var(--dsc-spinner-stroke);
stroke-dasharray: 1px, 200px;
transform-origin: center;
animation: ds-spinner-stroke-animation ease-in-out infinite;
animation-duration: var(--dsc-spinner-animation-duration);
}
/* Prefers reduced motion needs longer animation,
but don't remove it since it is not decorative.
*/
@media (prefers-reduced-motion: reduce) {
.ds-spinner {
--dsc-spinner-animation-duration: 6s;
}
}
@keyframes ds-spinner-rotate-animation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes ds-spinner-stroke-animation {
0% {
stroke-dasharray: 1px, 200px;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 100px, 200px;
stroke-dashoffset: -15px;
transform: rotate(0deg);
}
100% {
stroke-dasharray: 1px, 200px;
stroke-dashoffset: -120px;
transform: rotate(15deg);
}
}