Item Count
CSSA circular tally dial with calibrated notch segments illuminates consecutively as items in the shipment manifest are verified.
- Tier
- CSS
- Dependencies
- None
- Duration
- 4 s, loops
- Categories
- Data and progress
- Use cases
- Determinate progress, Dashboards and reporting
- Industries
- Logistics and supply chain, Cross-industry
- Style
- Data mark · light stroke
- Set
- manifest
- Tags
- countercircleprogress
Companion assets
The same artwork, not animated. Derived from the entry’s own resting state, so it matches exactly.
Code
animation.svg
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="pulsar pulsar-manifest-item-count" data-pulsar="manifest-item-count" viewBox="0 0 160 96"><circle cx="80" cy="48" r="26" stroke-dasharray="2 6" stroke-width="1.5" opacity=".3"></circle><circle cx="80" cy="48" r="14" stroke-width="1.5" opacity=".4"></circle><circle cx="80" cy="48" r="4" fill="var(--pulsar-accent, currentColor)" class="hub"></circle><line x1="80" x2="80" y1="22" y2="28" stroke="var(--pulsar-accent, currentColor)" stroke-width="2" class="notch n1"></line><line x1="102" x2="97" y1="35" y2="38" stroke="var(--pulsar-accent, currentColor)" stroke-width="2" class="notch n2"></line><line x1="102" x2="97" y1="61" y2="58" stroke="var(--pulsar-accent, currentColor)" stroke-width="2" class="notch n3"></line><line x1="80" x2="80" y1="74" y2="68" stroke="var(--pulsar-accent, currentColor)" stroke-width="2" class="notch n4"></line><line x1="58" x2="63" y1="61" y2="58" stroke="var(--pulsar-accent, currentColor)" stroke-width="2" class="notch n5"></line><line x1="58" x2="63" y1="35" y2="38" stroke="var(--pulsar-accent, currentColor)" stroke-width="2" class="notch n6"></line></svg>
animation.css
.pulsar-manifest-item-count {
display: block;
overflow: visible;
}
.pulsar-manifest-item-count .notch.n1 {
animation: manifest-item-count-n1 4000ms ease-in-out infinite;
}
.pulsar-manifest-item-count .notch.n2 {
animation: manifest-item-count-n2 4000ms ease-in-out infinite;
}
.pulsar-manifest-item-count .notch.n3 {
animation: manifest-item-count-n3 4000ms ease-in-out infinite;
}
.pulsar-manifest-item-count .notch.n4 {
animation: manifest-item-count-n4 4000ms ease-in-out infinite;
}
.pulsar-manifest-item-count .notch.n5 {
animation: manifest-item-count-n5 4000ms ease-in-out infinite;
}
.pulsar-manifest-item-count .notch.n6 {
animation: manifest-item-count-n6 4000ms ease-in-out infinite;
}
.pulsar-manifest-item-count .hub {
animation: manifest-item-count-hub 4000ms ease-in-out infinite;
}
@keyframes manifest-item-count-n1 {
0%,
10% {
opacity: 0.2;
}
20%,
80% {
opacity: 1;
}
95%,
100% {
opacity: 0.2;
}
}
@keyframes manifest-item-count-n2 {
0%,
20% {
opacity: 0.2;
}
30%,
80% {
opacity: 1;
}
95%,
100% {
opacity: 0.2;
}
}
@keyframes manifest-item-count-n3 {
0%,
30% {
opacity: 0.2;
}
40%,
80% {
opacity: 1;
}
95%,
100% {
opacity: 0.2;
}
}
@keyframes manifest-item-count-n4 {
0%,
40% {
opacity: 0.2;
}
50%,
80% {
opacity: 1;
}
95%,
100% {
opacity: 0.2;
}
}
@keyframes manifest-item-count-n5 {
0%,
50% {
opacity: 0.2;
}
60%,
80% {
opacity: 1;
}
95%,
100% {
opacity: 0.2;
}
}
@keyframes manifest-item-count-n6 {
0%,
60% {
opacity: 0.2;
}
70%,
80% {
opacity: 1;
}
95%,
100% {
opacity: 0.2;
}
}
@keyframes manifest-item-count-hub {
0%,
100% {
transform: scale(0.9);
opacity: 0.6;
}
50% {
transform: scale(1.2);
opacity: 1;
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-manifest-item-count .notch.n1,
.pulsar-manifest-item-count .notch.n2,
.pulsar-manifest-item-count .notch.n3,
.pulsar-manifest-item-count .notch.n4,
.pulsar-manifest-item-count .notch.n5,
.pulsar-manifest-item-count .notch.n6,
.pulsar-manifest-item-count .hub {
animation: none;
transform: none;
opacity: 1;
stroke-dashoffset: 0;
}
}