Pulsar

Allocation

CSS

An outline user icon receives a solid accent fill as it is successfully assigned to an empty active slot.

Tier
CSS
Dependencies
None
Duration
4.2 s, loops
Categories
Icons and micro-interactions
Use cases
Determinate progress, Workflow and approvals
Industries
SaaS and software, Cross-industry
Style
Duotone · light stroke
Set
seat
Tags
uiminimalpulsegeometricscale

Companion assets

The same artwork, not animated. Derived from the entry’s own resting state, so it matches exactly.

Animated
CSS tier
Static vector
Allocation, not animated
Download SVG

Code

animation.svg

<svg xmlns="http://www.w3.org/2000/svg" fill="none" aria-hidden="true" class="pulsar pulsar-seat-allocation" data-pulsar="seat-allocation" viewBox="0 0 160 96"><rect width="60" height="64" x="50" y="16" fill="currentColor" fill-opacity=".04" stroke="currentColor" stroke-width="1.25" opacity=".3" rx="8"></rect><circle cx="80" cy="40" r="16" stroke="currentColor" stroke-dasharray="3 3" opacity=".4"></circle><g class="seat-allocation-user"><circle cx="80" cy="36" r="7" fill="var(--pulsar-accent, currentColor)" fill-opacity=".2" stroke="var(--pulsar-accent, currentColor)" stroke-width="1.5"></circle><path fill="var(--pulsar-accent, currentColor)" fill-opacity=".2" stroke="var(--pulsar-accent, currentColor)" stroke-width="1.5" d="M66 56c0-8 6-10 14-10s14 2 14 10"></path></g><g class="seat-allocation-badge"><circle cx="98" cy="26" r="4" fill="var(--pulsar-accent, currentColor)"></circle><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m96 26 1.5 1.5 3-3"></path></g></svg>

animation.css

.pulsar-seat-allocation {
  display: block;
  overflow: visible;
}
.pulsar-seat-allocation .seat-allocation-user {
  animation: seat-allocation-user-anim 4200ms cubic-bezier(0.2, 1, 0.3, 1) infinite;
  transform-origin: 80px 44px;
}
.pulsar-seat-allocation .seat-allocation-badge {
  animation: seat-allocation-badge-anim 4200ms ease infinite;
}

@keyframes seat-allocation-user-anim {
  0%,
  15% {
    transform: translateY(-8px) scale(0.9);
    opacity: 0.4;
  }
  40%,
  80% {
    transform: translateY(0) scale(1);
    opacity: 1;
  }
  92%,
  100% {
    transform: translateY(-8px) scale(0.9);
    opacity: 0.4;
  }
}

@keyframes seat-allocation-badge-anim {
  0%,
  25% {
    transform: scale(0);
    opacity: 0;
  }
  45%,
  80% {
    transform: scale(1);
    opacity: 1;
  }
  90%,
  100% {
    transform: scale(0);
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .pulsar-seat-allocation .seat-allocation-user,
  .pulsar-seat-allocation .seat-allocation-badge {
    animation: none;
  }
}

From this family15 in Seat

See the family